From 6bb594cc7a0d0cf61ae11a1d16a24b78c104aef2 Mon Sep 17 00:00:00 2001 From: maxgfr <25312957+maxgfr@users.noreply.github.com> Date: Mon, 12 Oct 2026 12:00:14 +0200 Subject: [PATCH 1/2] fix: say what an answer could not see; bind Rust paths and same-line calls An evaluation on vite, TypeScript's Go port, django, terraform and ripgrep found answers an agent would take as complete while they were not: - callers: the per-file call-site cap (512) cut test files that call the function under test hundreds of times, silently. vite `callers resolveConfig` answered 56 of 68 sites, terraform `NewContext` 53 of 78. The cap is now 8192 (the TypeScript repo's index grows by 1%, no slower), a record the cap still cuts carries `callsCapped`, and `callers`/`refs` name such files in a `coverage` field. - A file over --max-bytes was invisible: `refs NewChecker` answered `{defs: []}` and `outline checker.go` "no such file". The walk now keeps the oversized files; `callers`, `refs` (coverage.notIndexed), `find` (stderr), `outline`, `symbol-at` and `complexity` name the file and the --max-bytes value that indexes it. CLI and MCP alike. - Rust: `crate::f()` and `super::f()` carry their path as the receiver and bind to the crate root or parent module, private items included; a call never binds to a `mod` declaration of the same name (`mod search;` took every `search()` call in ripgrep's main.rs). - `incremental.NewProgram(compiler.NewProgram())` kept one call: sites are now deduped by name, line and receiver on both tiers, and a caller line is listed once when both calls reach the same declaration. Performance: `subtokens` reads ASCII with ASCII classes (same tokens, the Unicode split cost search 130 ms on the TypeScript repo) and the self-index guard compares one precomputed prefix instead of a path.relative per file. search on that repo is back to 2.31.5's time. EXTRACTOR_VERSION 16 -> 17. --- README.md | 9 + scripts/engine.browser.d.mts | 12 +- scripts/engine.browser.mjs | 300 ++++++++++++++++---------------- scripts/engine.d.mts | 12 +- scripts/engine.mjs | 321 +++++++++++++++++++++++++---------- src/ast/extract.ts | 22 ++- src/ast/node.ts | 3 + src/bind.ts | 56 +++++- src/cache.ts | 2 +- src/callers.ts | 15 +- src/coverage.ts | 95 +++++++++++ src/engine-cli.ts | 36 +++- src/extract/code.ts | 30 ++-- src/mcp.ts | 23 ++- src/scan.ts | 26 ++- src/types.ts | 14 +- src/util.ts | 25 ++- src/walk.ts | 8 +- tests/eval-findings.test.ts | 180 ++++++++++++++++++++ 19 files changed, 879 insertions(+), 310 deletions(-) create mode 100644 src/coverage.ts create mode 100644 tests/eval-findings.test.ts diff --git a/README.md b/README.md index c34e969..00d2f33 100644 --- a/README.md +++ b/README.md @@ -589,6 +589,15 @@ site binds to is still an answer, and says why it is empty: } ``` +An answer that may be missing something says what, in a `coverage` field +(`callers`, `callers --raw` and `refs`, CLI and MCP): `callCapped` lists files +that call the name but reached the per-file call-site cap (`--max-calls`, +default 8192), `notIndexed` the files left out for size (`--max-bytes`, default +1 MiB) whose text names it, and `hint` the flag that brings them in. An +answer nothing limited carries no `coverage` field. `outline`, `symbol-at` and +`complexity` on a file left out for size say so instead of "no such file", +and `find` writes the same note to stderr when it finds nothing. + `find`, `refs` and `outline` print the same answers as MCP `find_symbol`, `find_references` and `symbols_overview`: each declaration's complete signature, doc comment, parent and line span, which `symbols` leaves out. diff --git a/scripts/engine.browser.d.mts b/scripts/engine.browser.d.mts index d3faa4c..0e35f7c 100644 --- a/scripts/engine.browser.d.mts +++ b/scripts/engine.browser.d.mts @@ -1,6 +1,6 @@ declare const ENGINE_VERSION = "2.31.7"; declare const SCHEMA_VERSION = 5; -declare const EXTRACTOR_VERSION = 16; +declare const EXTRACTOR_VERSION = 17; type FileKind = "code" | "doc" | "config" | "asset" | "other"; type EdgeKind = "contains" | "doc-link" | "import" | "call" | "extends" | "implements" | "use" | "mention"; type Tier = 0 | 1 | 2; @@ -77,6 +77,7 @@ interface FileRecord { importedNames?: string[]; importAliases?: ImportAlias[]; truncated?: true; + callsCapped?: true; astFallback?: true; generated?: "minified" | "bundle"; relations?: RawRelation[]; @@ -268,6 +269,10 @@ interface WalkResult { files: WalkedFile[]; capped: boolean; excluded: number; + oversized?: { + rel: string; + size: number; + }[]; } declare const DEFAULT_MAX_FILES = 20000; declare function walk(root: string, opts?: WalkOptions): WalkResult; @@ -283,6 +288,10 @@ interface RepoScan { mtimes: Map; capped: boolean; excluded: number; + oversized?: { + rel: string; + size: number; + }[]; contentUnchanged: boolean; cacheDirty: boolean; } @@ -504,6 +513,7 @@ interface CodeInfo { symbols: CodeSymbol[]; summary?: string; truncated?: true; + callsCapped?: true; astFallback?: true; generated?: GeneratedKind; refs: RawRef[]; diff --git a/scripts/engine.browser.mjs b/scripts/engine.browser.mjs index 74b41d0..4cc5520 100644 --- a/scripts/engine.browser.mjs +++ b/scripts/engine.browser.mjs @@ -1,31 +1,31 @@ -var Tb=Object.defineProperty;var H=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var hc=(e,t)=>{for(var n in t)Tb(e,n,{get:t[n],enumerable:!0})};function Zf(e){let t="";for(let r=0;r{"use strict";$b=new TextDecoder("utf-8"),Fb=new TextDecoder("utf-16le"),Kf=new TextEncoder,Xf="0123456789abcdef";W=class e extends Uint8Array{static from(t,n){if(typeof t=="string"){if(n==="hex"){let l=new e(t.length>>1);for(let c=0;ca+l.byteLength,0),o=new e(r),s=0;for(let a of t){if(s+a.byteLength>r){o.set(a.subarray(0,r-s),s);break}o.set(a,s),s+=a.byteLength}return o}subarray(t,n){return super.subarray(t,n)}toString(t,n,r){let o=n!==void 0||r!==void 0?this.subarray(n??0,r??this.length):this;switch((t??"utf8").toLowerCase()){case"utf8":case"utf-8":return $b.decode(o);case"utf16le":case"utf-16le":case"ucs2":case"ucs-2":return Fb.decode(o);case"latin1":case"binary":case"ascii":return Zf(o);case"hex":{let s="";for(let a of o)s+=Xf[a>>4]+Xf[a&15];return s}case"base64":return btoa(Zf(o));default:throw new TypeError(`Unknown encoding: ${t}`)}}swap16(){if(this.length%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t"/",exit:e=>{throw new Error(`process.exit(${e??0}) is not available in the browser build`)},hrtime:Object.assign(e=>{let t=performance.now(),n=Math.floor(t/1e3),r=Math.floor(t%1e3*1e6);return e?[n-e[0],r-e[1]]:[n,r]},{bigint:()=>BigInt(Math.floor(performance.now()*1e6))}),memoryUsage:()=>({rss:0,heapTotal:0,heapUsed:0,external:0,arrayBuffers:0}),stdout:{write:e=>(console.log(e.replace(/\n$/,"")),!0),isTTY:!1},stderr:{write:e=>(console.warn(e.replace(/\n$/,"")),!0),isTTY:!1},on:()=>F,emitWarning:e=>console.warn(e)}});var $e,dt,dn,ht=H(()=>{"use strict";I();$e="2.31.7",dt=5,dn=16});function Yf(e,t){let n="",r=0,o=-1,s=0,a=0;for(let l=0;l<=e.length;++l){if(l2){let c=n.lastIndexOf("/");c===-1?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),o=l,s=0;continue}else if(n.length!==0){n="",r=0,o=l,s=0;continue}}t&&(n+=n.length>0?"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(o+1,l):n=e.slice(o+1,l),r=l-o-1;o=l,s=0}else a===46&&s!==-1?++s:s=-1}return n}function zo(e){if(e.length===0)return".";let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=Yf(e,!t);return r.length===0&&!t&&(r="."),r.length>0&&n&&(r+="/"),t?"/"+r:r}function Pe(e){return e.length>0&&e.charCodeAt(0)===47}function j(...e){if(e.length===0)return".";let t;for(let n of e)n.length>0&&(t=t===void 0?n:t+"/"+n);return t===void 0?".":zo(t)}function ue(...e){let t="",n=!1;for(let o=e.length-1;o>=0&&!n;o--){let s=e[o];s===void 0||s.length===0||(t=t.length===0?s:s+"/"+t,n=s.charCodeAt(0)===47)}n||(t=t.length===0?"/":"/"+t);let r=Yf(t,!1);return r.length>0?"/"+r:"/"}function De(e,t){if(e===t)return"";let n=ue(e),r=ue(t);if(n===r)return"";let o=n.slice(1).split("/").filter(Boolean),s=r.slice(1).split("/").filter(Boolean),a=0;for(;a=1;--o)if(e.charCodeAt(o)===47){if(!r){n=o;break}}else r=!1;return n===-1?t?"/":".":t&&n===1?"//":e.slice(0,n)}function je(e,t){let n=0,r=-1,o=!0;for(let a=e.length-1;a>=0;--a)if(e.charCodeAt(a)===47){if(!o){n=a+1;break}}else r===-1&&(o=!1,r=a+1);if(r===-1)return"";let s=e.slice(n,r);return t!==void 0&&t!==s&&s.endsWith(t)?s.slice(0,s.length-t.length):s}function Un(e){let t=-1,n=0,r=-1,o=!0,s=0;for(let a=e.length-1;a>=0;--a){let l=e.charCodeAt(a);if(l===47){if(!o){n=a+1;break}continue}r===-1&&(o=!1,r=a+1),l===46?t===-1?t=a:s!==1&&(s=1):t!==-1&&(s=-1)}return t===-1||r===-1||s===0||s===1&&t===r-1&&t===n+1?"":e.slice(t,r)}function Ob(e){let t=Pe(e)?"/":"",n=je(e),r=Un(e),o=Ce(e);return{root:t,dir:o==="."&&t===""?"":o,base:n,ext:r,name:n.slice(0,n.length-r.length)}}function Nb(e){let t=e.dir||e.root||"",n=e.base||(e.name??"")+(e.ext??"");return t?t===e.root?t+n:t+"/"+n:n}function Pb(e){return e}var G,h1,pe=H(()=>{"use strict";I();G={sep:"/",delimiter:":",normalize:zo,isAbsolute:Pe,join:j,resolve:ue,relative:De,dirname:Ce,basename:je,extname:Un,parse:Ob,format:Nb,toNamespacedPath:Pb},h1={...G,posix:G,win32:G}});function em(){return++Qf}function Rt(e){let t=e.startsWith("/")?e:"/"+e,n=zo(t);return n.length>1&&n.endsWith("/")?n.slice(0,-1):n}function Hn(e,t){let n=new Error(`ENOENT: no such file or directory, ${t} '${e}'`);return n.code="ENOENT",n.errno=-2,n.path=e,n.syscall=t,n}function tm(e,t){let n=new Error(`ENOTDIR: not a directory, ${t} '${e}'`);return n.code="ENOTDIR",n.errno=-20,n.path=e,n.syscall=t,n}function as(e){let t=Rt(e),n=He.get(t);if(n){if(n.kind!=="dir")throw tm(e,"mkdir");return n}let r={kind:"dir",mtimeMs:0,mode:511,children:new Set};return He.set(t,r),t!==hr&&as(Ce(t)).children.add(je(t)),r}function Lb(){He.clear(),Qf=0,rm=0,He.set(hr,{kind:"dir",mtimeMs:0,mode:511,children:new Set})}function nm(e){for(let t of e){let n=Rt(t.path);as(Ce(n)).children.add(je(n)),He.set(n,{kind:"file",size:t.size,mtimeMs:em(),mode:438,bytes:t.bytes})}}function Go(e,t){let n=Rt(e),r=He.get(n);if(r&&r.kind==="file"){r.bytes=t,r.size=t.byteLength,r.mtimeMs=em();return}nm([{path:n,size:t.byteLength,bytes:t}])}function Db(e){let t=He.get(Rt(e));return!!t&&t.kind==="file"&&t.bytes!==void 0}function jb(){let e=0;for(let[t,n]of[...He]){if(n.kind!=="file"||n.bytes!==void 0)continue;He.delete(t);let r=He.get(Ce(t));r&&r.kind==="dir"&&r.children.delete(je(t)),e++}return e}function Wb(){let e=0;for(let t of He.values())t.kind==="file"&&t.bytes&&(e+=t.bytes.byteLength);return e}function Bb(e,t,n){return{name:e,parentPath:t,path:t,isFile:()=>n==="file",isDirectory:()=>n==="dir",isSymbolicLink:un,isBlockDevice:un,isCharacterDevice:un,isFIFO:un,isSocket:un}}function Ub(e){return{size:e.kind==="file"?e.size:0,mode:e.mode,mtimeMs:e.mtimeMs,mtime:new Date(e.mtimeMs),isFile:()=>e.kind==="file",isDirectory:()=>e.kind==="dir",isSymbolicLink:un,isBlockDevice:un,isCharacterDevice:un,isFIFO:un,isSocket:un}}function te(e){return He.has(Rt(e))}function Ae(e){let t=He.get(Rt(e));if(!t)throw Hn(e,"stat");return Ub(t)}function nt(e){let t=Rt(e);if(!He.has(t))throw Hn(e,"realpath");return t}function Gn(e,t){let n=Rt(e),r=He.get(n);if(!r)throw Hn(e,"scandir");if(r.kind!=="dir")throw tm(e,"scandir");let o=[...r.children];return t?.withFileTypes?o.map(s=>{let a=He.get(n===hr?`/${s}`:`${n}/${s}`);return Bb(s,n,a?.kind==="dir"?"dir":"file")}):o}function le(e,t){let n=He.get(Rt(e));if(!n)throw Hn(e,"open");if(n.kind!=="file"){let o=new Error("EISDIR: illegal operation on a directory, read");throw o.code="EISDIR",o}if(!n.bytes)throw Hn(e,"open");let r=W.from(n.bytes);return t?r.toString(typeof t=="string"?t:t.encoding):r}function st(e,t){let n=typeof t=="string"?new TextEncoder().encode(t):t;Go(e,n)}function qo(e,t){let n=He.get(Rt(e));if(!n)throw Hn(e,"chmod");n.mode=t}function Xt(e,t){as(e)}function yr(e){let t=`${e}${rm++}`;return as(t),t}function Je(e,t){let n=Rt(e),r=He.get(n);if(!r){if(t?.force)return;throw Hn(e,"unlink")}if(r.kind==="dir"){if(!t?.recursive)throw Object.assign(new Error(`Path is a directory: rm returned EISDIR (is a directory) ${e}`),{code:"ERR_FS_EISDIR"});for(let s of[...r.children])Je(n===hr?`/${s}`:`${n}/${s}`,t)}He.delete(n);let o=He.get(Ce(n));o&&o.kind==="dir"&&o.children.delete(je(n))}function kn(e,t){let n=Rt(e),r=He.get(n);if(!r)throw Hn(e,"rename");let o=Rt(t);if(o!==n){if(r.kind==="dir"){as(o);for(let s of[...r.children])kn(n===hr?`/${s}`:`${n}/${s}`,o===hr?`/${s}`:`${o}/${s}`)}else as(Ce(o)).children.add(je(o)),He.set(o,r);Je(n,{recursive:!0,force:!0})}}function Vo(){throw new Error("recursive filesystem watching is unavailable in the browser VFS")}var hr,He,Qf,un,zn,rm,ve=H(()=>{"use strict";I();pe();hr="/",He=new Map([[hr,{kind:"dir",mtimeMs:0,mode:511,children:new Set}]]),Qf=0;un=()=>!1;zn=Ae;rm=0});function Jo(e,t,n){let r=new Error(`spawnSync ${e} ENOENT`);return r.code="ENOENT",r.errno=-2,r.syscall=`spawnSync ${e}`,r.path=e,{pid:0,output:[],stdout:"",stderr:"",status:null,signal:null,error:r}}function sm(e,t,n){let r=new Map,o={pid:void 0,stdin:null,stdout:null,stderr:null,on(a,l){let c=r.get(a)??[];return c.push(l),r.set(a,c),o},kill:()=>!1},s=new Error(`spawn ${e} ENOENT`);return s.code="ENOENT",s.syscall=`spawn ${e}`,s.path=e,Promise.resolve().then(()=>{for(let a of r.get("error")??[])a(s);for(let a of r.get("close")??[])a(null)}),o}var Ko=H(()=>{I()});function Fe(e,t,n={}){let r=n.env??F.env,o=Jo(e,t,{cwd:n.cwd,input:n.input,encoding:"utf8",timeout:n.timeoutMs??12e4,maxBuffer:n.maxBufferBytes??64*1024*1024,env:e==="git"?{...r,...yc}:r}),s=o.error?o.error.code:void 0;return{ok:!o.error&&o.status===0,status:o.status,stdout:o.stdout??"",stderr:o.stderr??(o.error?String(o.error.message):""),missing:s==="ENOENT",...s?{errorCode:s}:{}}}function Zt(e){let t=im.get(e);if(t!==void 0)return t;let n=Fe(F.platform==="win32"?"where":"which",[e]),r=n.ok&&n.stdout.trim().length>0;return im.set(e,r),r}function ti(e){return e.toLowerCase().replace(/^https?:\/\//,"").replace(/^git@/,"").replace(/\.git$/,"").replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,120)}function Hb(e,t){return e.length<=t?e:e.slice(0,t)+` -\u2026 [truncated ${e.length-t} chars]`}function zb(e,t){let n=e.replace(/\s+/g," ").trim();if(n.length<=t)return n;let r=n.slice(0,t).replace(/\s+\S*$/,"");return r||(r=n.slice(0,t)),(r.match(/`/g)?.length??0)%2===1&&(r=r.replace(/`[^`]*$/,"")),r.lastIndexOf("[")>r.lastIndexOf("]")&&(r=r.slice(0,r.lastIndexOf("["))),r.replace(/\s+$/,"")+"\u2026"}function yt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function En(e){return Gb.test(e)?e.normalize("NFKD").replace(/[̀-ͯ]/g,""):e}function ls(e,t){let n=new Set,r=[];for(let o of En(e).split(am)){if(!o)continue;let s=o.toLowerCase();o.length<2||om.has(s)&&!t?.(o)||n.has(s)||(n.add(s),r.push(o))}return r}function ni(e,t){let n=[];for(let r of En(e).split(am))r&&(r.length<2||om.has(r.toLowerCase())&&!t?.(r))&&n.push(r);return n}function qb(e){let t=ls(e),n=r=>{let o=0;return/\d/.test(r)&&(o+=3),/[A-Z]/.test(r)&&!/^[A-Z0-9]+$/.test(r)&&(o+=2),/_/.test(r)&&(o+=2),r.length>=8?o+=1.5:r.length>=5&&(o+=.5),o};return t.map((r,o)=>({k:r,s:n(r),i:o})).sort((r,o)=>o.s-r.s||r.i-o.i).map(r=>r.k)}function _c(e,t,n=60){let r=new Map;for(let o of e)o.forEach((s,a)=>{let l=t(s);r.set(l,(r.get(l)??0)+1/(n+a+1))});return r}function fn(e){let t=En(e).replace(/([\p{Ll}\p{N}])(\p{Lu})/gu,"$1 $2").replace(/(\p{Lu}+)(\p{Lu}\p{Ll})/gu,"$1 $2"),n=[],r=new Set,o=s=>{s.length<2||r.has(s)||(r.add(s),n.push(s))};/\s/.test(e.trim())||o(En(e).toLowerCase().replace(/[^\p{L}\p{N}_]+/gu,""));for(let s of t.split(/[^\p{L}\p{N}]+/u))o(s.toLowerCase());return n}function Xo(e){if(e.length<4)return e;let t=e;return t.endsWith("ies")&&t.length>4?t=t.slice(0,-3)+"y":t.endsWith("sses")?t=t.slice(0,-2):(t.endsWith("ses")&&t.length>4||t.endsWith("s")&&!t.endsWith("ss")&&!t.endsWith("us")&&!t.endsWith("is"))&&(t=t.slice(0,-1)),t.endsWith("ying")&&t.length>5?t=t.slice(0,-4)+"y":t.endsWith("ing")&&t.length>5?t=t.slice(0,-3):t.endsWith("ed")&&t.length>4&&(t=t.slice(0,-2)),t.endsWith("e")&&t.length>3&&(t=t.slice(0,-1)),t}var yc,im,om,Gb,am,Qe=H(()=>{"use strict";I();Ko();yc={LC_ALL:"C",LANGUAGE:""};im=new Map;om=new Set(["the","a","an","is","are","was","were","be","been","being","do","does","did","how","what","why","when","where","which","who","whom","this","that","these","those","of","in","on","to","for","with","and","or","but","if","then","else","than","as","at","by","from","into","about","it","its","i","you","we","they","he","she","there","here","can","could","should","would","will","shall","may","might","must","have","has","had","not","no","yes","so","such","only","any","some","all","get","set","use","used","using","work","works","working","handle","handled","happen","happens","default","value","values","please","explain","tell","me","my","our"]),Gb=/[^\x00-\x7F]/;am=/[^\p{L}\p{N}_]+/u});function Vb(e){let t="";for(let n=0;n=e.length))return s?{source:"(?!)",end:n}:{source:r?`[^/${o}]`:`(?!/)[${o}]`,end:n}}function lm(e){return e==="\\"||e==="]"||e==="^"||e==="["||e==="-"?"\\"+e:e}function cs(e,t,n){let r=[],o=t?yt(t)+"/":"",s=e.split(/\r?\n/);for(let a=0;af===u:f=>f.startsWith(u)&&o.test(f)}let{head:s,whole:a}=bc(e);if(a)return(c,d)=>d===s&&c.startsWith(r);if(e[0]==="*"&&e[1]!=="*"){let c=bc(e.slice(1));if(c.whole)return(d,u)=>u.endsWith(c.head)&&d.startsWith(r)}let l=new RegExp(`^${t}$`);return(c,d)=>c.startsWith(r)&&l.test(d)}function ri(e,t,n){let r=Zo(e,t,n);return r!==void 0&&!r.negated}function Zo(e,t,n){let r=t.slice(t.lastIndexOf("/")+1);for(let o=e.length-1;o>=0;o--){let s=e[o];if(!(s.dirOnly&&!n)&&(s.test?s.test(t,r):s.re.test(t)))return s}}var Jb,wc=H(()=>{"use strict";I();Qe();Jb={alnum:"A-Za-z0-9",alpha:"A-Za-z",blank:" \\t",cntrl:"\\x00-\\x1f\\x7f",digit:"0-9",graph:"\\x21-\\x7e",lower:"a-z",print:"\\x20-\\x7e",punct:"!-\\/:-@\\[-`{-~",space:" \\t\\n\\r\\f\\v",upper:"A-Z",xdigit:"0-9A-Fa-f"}});function ds(e){let t;try{t=le(e)}catch{return Zb}let n=t.length,r={buf:t,bytes:n,ok:!0,binary:!1};if(n>=2&&t[0]===255&&t[1]===254){let s=t.subarray(2,2+(n-2&-2)).toString("utf16le");return{...r,text:s,encoding:"utf16le",byteAddressable:!1,bodyStart:2}}if(n>=2&&t[0]===254&&t[1]===255){let s=W.from(t.subarray(2,2+(n-2&-2)));return s.swap16(),{...r,text:s.toString("utf16le"),encoding:"utf16be",byteAddressable:!1,bodyStart:2}}if(n>=3&&t[0]===239&&t[1]===187&&t[2]===191)return{...r,text:t.subarray(3).toString("utf8"),encoding:"utf8-bom",byteAddressable:!0,bodyStart:3};if(t.includes(0))return{...r,text:"",encoding:null,binary:!0,byteAddressable:!1,bodyStart:0};let o=t.toString("utf8");return o.includes("\uFFFD")&&!Qb(t)?{...r,text:t.toString("latin1"),encoding:"latin1",byteAddressable:!1,bodyStart:0}:{...r,text:o,encoding:"utf8",byteAddressable:!0,bodyStart:0}}function Qb(e){try{return Yb.decode(e),!0}catch{return!1}}function ew(e){let t=new Int32Array(e.length+1),n=0;for(let r=0;r=55296&&o<=56319&&r+1{"use strict";I();ve();Zb={text:"",buf:W.alloc(0),encoding:null,binary:!1,bytes:0,ok:!1,byteAddressable:!1,bodyStart:0};Yb=new TextDecoder("utf-8",{fatal:!0});xc=class{constructor(t){this.text=t;this.ascii=!/[^\x00-\x7F]/.test(t),this.table=this.ascii?null:ew(t),this.lineStarts=tw(t)}text;ascii;table;lineStarts;byteOf(t){if(this.ascii)return t;let n=this.table;return t<=0?0:t>=n.length?n[n.length-1]:n[t]}lineColOf(t){let n=this.lineStarts,r=0,o=n.length-1;for(;r>1;n[s]<=t?r=s:o=s-1}return{line:r+1,col:t-n[r]+1}}get lineCount(){return this.lineStarts.length}}});function nw(e){let t=[...Sc].map(o=>`:(glob)**/${o}/**`),n=Fe("git",["-C",e,"ls-files","-z","--",...t]);if(!n.ok)return;let r=new Set;for(let o of n.stdout.split("\0")){let s=0;for(let a=o.indexOf("/");a!==-1;a=o.indexOf("/",s))Sc.has(o.slice(s,a))&&r.add(o.slice(0,a)),s=a+1}return r}function sw(e,t){return e===_r||e===rw||t.has(e)||e.startsWith(".codeindex-edit-")}function dm(e,t){let n=t.find(o=>o.name===_r);if(!n)return;let r=j(e,_r);try{if(n.isDirectory())return r;let o=Ae(r);if(o.isDirectory())return r;if(!o.isFile()||o.size>iw)return;let s=le(r,"utf8");if(!s.startsWith(cm))return;let a=s.slice(cm.length).replace(/[\r\n]+$/,"");if(!a)return;let l=ue(e,a),c=j(l,"commondir");return te(c)?ue(l,le(c,"utf8").trim()):l}catch{return}}function um(e){if(!e)return"";try{let t=j(e,"info","exclude");return te(t)?ie(t):""}catch{return""}}function ow(e){let t=d=>{if(te(j(d,_r)))try{return dm(d,Gn(d,{withFileTypes:!0}).filter(u=>u.name===_r))}catch{return}};if(t(e))return[];let n=[],r;for(let d=e,u=Ce(d);u!==d&&(n.push(u),r=t(u),!r);d=u,u=Ce(d));if(!r)return[];let o=n[n.length-1],s=d=>d.split("/").join("/"),a=s(De(o,e))+"/",l=d=>s(De(e,d)),c=cs(um(r),"",l(j(r,"info","exclude")));for(let d of n.reverse()){let u=j(d,".gitignore");te(u)&&c.push(...cs(ie(u),s(De(o,d)),l(u)))}return c.map(d=>({...d,test:(u,f)=>d.test?d.test(a+u,f):d.re.test(a+u)}))}function Ke(e,t={}){let n=t.maxFileBytes??1048576,r=t.maxFiles??1/0,o=t.gitignore!==!1,s=t.ignoreDirs?new Set(t.ignoreDirs):vn,a=!t.ignoreDirs&&t.trackedBuildDirs!==!1,l=null,c=w=>(l===null&&(l=nw(e)),l?.has(w)??!1),d=(w,S,k)=>sw(w,s)&&!(a&&Sc.has(w)&&!(o&&k.length&&ri(k,S,!0))&&c(S)),u=[],f=!1,m=0,p=(w,S,k=!1,M)=>{t.onSkip?.({rel:w,reason:S,directory:k,...M===void 0?{}:{size:M}})},g=(w,S,k,M)=>{if(!t.onSkip)return;let N=Zo(S,w,k);t.onSkip({rel:w,reason:"gitignored",directory:k,...M===void 0?{}:{size:M},...N?.source!==void 0?{rule:{source:N.source,line:N.line,pattern:N.pattern}}:{}})},h;try{h=nt(e)}catch{return{files:u,capped:f,excluded:m}}let _=w=>w===h||w.startsWith(h+"/"),y=[{dir:e,rel:"",rules:o?ow(h):[]}],b=new Set;e:for(;y.length;){let w=y.pop(),S=[],k;try{k=nt(w.dir)}catch{continue}if(b.has(k)||(b.add(k),!_(k)))continue;let M;try{M=Gn(w.dir,{withFileTypes:!0}).sort((R,$)=>R.name<$.name?-1:R.name>$.name?1:0)}catch{continue}let N=M.some(R=>R.name===_r)?dm(w.dir,M):void 0;if(w.rel&&N){m++,p(w.rel,"nested-repo",!0);continue}let A=w.rules;if(o&&!w.rel){let R=cs(um(N),"",".git/info/exclude");R.length&&(A=[...A,...R])}if(o&&M.some(R=>R.name===".gitignore")){let R=w.rel?`${w.rel}/.gitignore`:".gitignore",$=cs(ie(j(w.dir,".gitignore")),w.rel,R);$.length&&(A=[...A,...$])}for(let R of M){let $=R.name,E=j(w.dir,$),x=w.rel?`${w.rel}/${$}`:$,v=R.isSymbolicLink();if($===_r)continue;if(R.isDirectory()&&d($,x,A)){p(x,"ignore-dir",!0);continue}let P;try{P=v?Ae(E):zn(E)}catch{p(x,v?"broken-symlink":"unreadable");continue}if(P.isDirectory()){if(d($,x,A)){p(x,"ignore-dir",!0);continue}if(v){p(x,"directory-symlink",!0);continue}if(o&&A.length&&ri(A,x,!0)){g(x,A,!0);continue}if(t.filter&&!t.filter({rel:x,abs:E,directory:!0})){p(x,"filter",!0);continue}S.push({dir:E,rel:x,rules:A});continue}if(!P.isFile())continue;let O=Un($).toLowerCase(),L;if(o&&A.length&&ri(A,x,!1)?L="gitignored":t.filter&&!t.filter({rel:x,abs:E,directory:!1})?L="filter":P.size>n&&!t.includeOversize?L="over-max-bytes":Yo.has($.toLowerCase())&&!t.includeLockfiles?L="lockfile":(t.binaryExtensions??Qo).has(O)&&!t.includeBinary?L="binary-ext":($.endsWith(".min.js")||$.endsWith(".min.css"))&&!t.includeMinified&&(L="minified"),L){m++,L==="gitignored"?g(x,A,!1,P.size):p(x,L,!1,P.size);continue}if(v){try{if(!_(nt(E))){p(x,"symlink-outside-root");continue}}catch{p(x,"broken-symlink");continue}if(!t.includeFileSymlinks){p(x,"file-symlink");continue}}if(u.length>=r){f=!0;break e}u.push({rel:x.split("/").join("/"),abs:E,size:P.size,ext:O,mtimeMs:P.mtimeMs})}for(let R=S.length-1;R>=0;R--)y.push(S[R])}return{files:u,capped:f,excluded:m}}function ie(e){return ds(e).text}var vn,Sc,_r,rw,cm,iw,Yo,Qo,aw,Xe=H(()=>{"use strict";I();ve();pe();wc();si();Qe();si();vn=new Set([".git","node_modules",".pnpm","bower_components","vendor","dist","build","out","target",".next",".nuxt",".svelte-kit",".turbo","coverage","__pycache__",".venv","venv",".tox",".mypy_cache",".pytest_cache",".gradle",".idea",".vscode",".cache","tmp",".ultraindex",".codeindex","Pods","DerivedData",".terraform","elm-stuff",".dart_tool"]),Sc=new Set(["build","out","target","tmp"]);_r=".git",rw=".codeindex";cm="gitdir: ",iw=4096;Yo=new Set(["package-lock.json","npm-shrinkwrap.json","yarn.lock","pnpm-lock.yaml","bun.lockb","composer.lock","cargo.lock","poetry.lock","pipfile.lock","gemfile.lock","go.sum","flake.lock","packages.lock.json","podfile.lock","mix.lock"]),Qo=new Set([".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico",".icns",".svg",".pdf",".zip",".gz",".tar",".tgz",".bz2",".xz",".7z",".rar",".jar",".war",".class",".so",".dylib",".dll",".exe",".bin",".o",".a",".wasm",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".wav",".flac",".ogg",".lock",".min.js",".map"]),aw=2e4});function T(e,t){return et?1:0}function br(e){return(t,n)=>T(e(t),e(n))}var ce=H(()=>{"use strict";I()});function Yt(e){let t=Fe("git",["-C",e,"rev-parse","HEAD"]);return t.ok?t.stdout.trim().slice(0,lw):void 0}function vc(e){let t=Fe("git",[..._t(e),"hash-object","-t","tree","--stdin"],{input:""});return t.ok?t.stdout.trim():void 0}function Rc(e){return Fe("git",["-C",e,"rev-parse","--is-inside-work-tree"]).ok}function Mc(e,t){let n=c=>Fe("git",[..._t(e),"rev-parse","--verify","--quiet",`${c}^{commit}`]).ok,r=c=>{let d=Fe("git",[..._t(e),"merge-base",c,"HEAD"]);return d.ok?d.stdout.trim():void 0};if(t){if(Ec(t)||!n(t))return{error:`base ref "${t}" not found (tried git rev-parse --verify)`};let c=r(t);return c?{ref:t,mergeBase:c}:{error:`no merge-base between "${t}" and HEAD`}}let o=Fe("git",[..._t(e),"symbolic-ref","--quiet","refs/remotes/origin/HEAD"]),s=[...o.ok?[o.stdout.trim().replace("refs/remotes/","")]:[],"origin/main","origin/master","main","master"];for(let c of s){if(!n(c))continue;let d=r(c);if(d)return{ref:c,mergeBase:d}}let a=Fe("git",[..._t(e),"rev-parse","--verify","--quiet","HEAD"]);if(a.ok)return{ref:"HEAD",mergeBase:a.stdout.trim(),note:"base: HEAD (no default branch found \u2014 reviewing uncommitted work)"};let l=vc(e);return l?{ref:ea,mergeBase:l,note:"no commits yet \u2014 every file is reviewed as added"}:{error:"cannot resolve HEAD, nor the empty tree"}}function Cc(e,t){let n=[],r=Fe("git",[..._t(e),"diff","--no-color","--relative","-z","-M","--name-status",...kc(t)]);if(r.ok){let a=r.stdout.split("\0"),l=0;for(;l[a.path,a])),s=Fe("git",[..._t(e),"diff","--no-color","--relative","-z","-M","--numstat",...kc(t)]);if(s.ok){let a=s.stdout.split("\0"),l=0;for(;l0){a.startsWith("\\")||s--;continue}if(a.startsWith("+++ ")){let l=dw(a.slice(4));if(l===void 0){o=void 0;continue}o=n.get(l)??[],n.set(l,o)}else if(a.startsWith("@@")){let l=a.match(/^@@ -\d+(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);if(!l)continue;let c=Number(l[2]),d=l[3]===void 0?1:Number(l[3]);if(s=(l[1]===void 0?1:Number(l[1]))+d,!o)continue;d===0?o.push({start:Math.max(c,1),end:Math.max(c,1),approx:!0}):o.push({start:c,end:c+d-1})}}return n}function dw(e){let t=e.endsWith(" ")?e.slice(0,-1):e;if(t.startsWith('"')&&t.endsWith('"')&&t.length>=2&&(t=fw(t)),t!=="/dev/null")return t.startsWith("b/")?t.slice(2):t}function fw(e){let t=W.from(e.slice(1,-1),"utf8"),n=[];for(let r=0;r=t.length){n.push(o);continue}let s=t[++r];s>=48&&s<=55?(n.push(parseInt(t.toString("latin1",r,r+3),8)&255),r+=2):n.push(uw[String.fromCharCode(s)]??s)}return W.from(n).toString("utf8")}function ta(e){let t=Fe("git",[..._t(e),"ls-files","--others","--exclude-standard","-z"]);return t.ok?t.stdout.split("\0").filter(n=>n.length>0):[]}function Ic(e,t){let n=Fe("git",[..._t(e),"rev-parse","--show-prefix","--git-path","shallow","--verify","--quiet","HEAD"]);if(n.missing)return{ok:!1,error:"git was not found on PATH"};if(!n.ok)return{ok:!1,error:n.status===1?"no commits yet (empty repository)":mm(n.stderr)||"not a git repository"};let[r="",o="",s=""]=n.stdout.split(` -`),a=gw(e,t),l=hw(ue(e,o)),c=[s,...a.exclude,...l.map(g=>`^${g}`)],d=JSON.stringify([ue(e),c,a.args]),u=wr.get(d);if(u)return wr.delete(d),wr.set(d,u),{ok:!0,log:u};let f=[..._t(e),"log","--no-color","--no-renames",...a.args,"--pretty=format:%x1e","--name-only","-z","--stdin"];r&&f.push("--full-history","--full-diff","--",".");let m=Jo("git",f,{input:c.join(` +var Vb=Object.defineProperty;var z=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var vc=(e,t)=>{for(var n in t)Vb(e,n,{get:t[n],enumerable:!0})};function dm(e){let t="";for(let r=0;r{"use strict";Jb=new TextDecoder("utf-8"),Kb=new TextDecoder("utf-16le"),lm=new TextEncoder,cm="0123456789abcdef";W=class e extends Uint8Array{static from(t,n){if(typeof t=="string"){if(n==="hex"){let l=new e(t.length>>1);for(let c=0;ca+l.byteLength,0),o=new e(r),s=0;for(let a of t){if(s+a.byteLength>r){o.set(a.subarray(0,r-s),s);break}o.set(a,s),s+=a.byteLength}return o}subarray(t,n){return super.subarray(t,n)}toString(t,n,r){let o=n!==void 0||r!==void 0?this.subarray(n??0,r??this.length):this;switch((t??"utf8").toLowerCase()){case"utf8":case"utf-8":return Jb.decode(o);case"utf16le":case"utf-16le":case"ucs2":case"ucs-2":return Kb.decode(o);case"latin1":case"binary":case"ascii":return dm(o);case"hex":{let s="";for(let a of o)s+=cm[a>>4]+cm[a&15];return s}case"base64":return btoa(dm(o));default:throw new TypeError(`Unknown encoding: ${t}`)}}swap16(){if(this.length%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t"/",exit:e=>{throw new Error(`process.exit(${e??0}) is not available in the browser build`)},hrtime:Object.assign(e=>{let t=performance.now(),n=Math.floor(t/1e3),r=Math.floor(t%1e3*1e6);return e?[n-e[0],r-e[1]]:[n,r]},{bigint:()=>BigInt(Math.floor(performance.now()*1e6))}),memoryUsage:()=>({rss:0,heapTotal:0,heapUsed:0,external:0,arrayBuffers:0}),stdout:{write:e=>(console.log(e.replace(/\n$/,"")),!0),isTTY:!1},stderr:{write:e=>(console.warn(e.replace(/\n$/,"")),!0),isTTY:!1},on:()=>O,emitWarning:e=>console.warn(e)}});var Te,ut,dn,_t=z(()=>{"use strict";I();Te="2.31.7",ut=5,dn=17});function um(e,t){let n="",r=0,o=-1,s=0,a=0;for(let l=0;l<=e.length;++l){if(l2){let c=n.lastIndexOf("/");c===-1?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),o=l,s=0;continue}else if(n.length!==0){n="",r=0,o=l,s=0;continue}}t&&(n+=n.length>0?"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(o+1,l):n=e.slice(o+1,l),r=l-o-1;o=l,s=0}else a===46&&s!==-1?++s:s=-1}return n}function Vo(e){if(e.length===0)return".";let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=um(e,!t);return r.length===0&&!t&&(r="."),r.length>0&&n&&(r+="/"),t?"/"+r:r}function Ne(e){return e.length>0&&e.charCodeAt(0)===47}function j(...e){if(e.length===0)return".";let t;for(let n of e)n.length>0&&(t=t===void 0?n:t+"/"+n);return t===void 0?".":Vo(t)}function ae(...e){let t="",n=!1;for(let o=e.length-1;o>=0&&!n;o--){let s=e[o];s===void 0||s.length===0||(t=t.length===0?s:s+"/"+t,n=s.charCodeAt(0)===47)}n||(t=t.length===0?"/":"/"+t);let r=um(t,!1);return r.length>0?"/"+r:"/"}function De(e,t){if(e===t)return"";let n=ae(e),r=ae(t);if(n===r)return"";let o=n.slice(1).split("/").filter(Boolean),s=r.slice(1).split("/").filter(Boolean),a=0;for(;a=1;--o)if(e.charCodeAt(o)===47){if(!r){n=o;break}}else r=!1;return n===-1?t?"/":".":t&&n===1?"//":e.slice(0,n)}function je(e,t){let n=0,r=-1,o=!0;for(let a=e.length-1;a>=0;--a)if(e.charCodeAt(a)===47){if(!o){n=a+1;break}}else r===-1&&(o=!1,r=a+1);if(r===-1)return"";let s=e.slice(n,r);return t!==void 0&&t!==s&&s.endsWith(t)?s.slice(0,s.length-t.length):s}function un(e){let t=-1,n=0,r=-1,o=!0,s=0;for(let a=e.length-1;a>=0;--a){let l=e.charCodeAt(a);if(l===47){if(!o){n=a+1;break}continue}r===-1&&(o=!1,r=a+1),l===46?t===-1?t=a:s!==1&&(s=1):t!==-1&&(s=-1)}return t===-1||r===-1||s===0||s===1&&t===r-1&&t===n+1?"":e.slice(t,r)}function Xb(e){let t=Ne(e)?"/":"",n=je(e),r=un(e),o=Me(e);return{root:t,dir:o==="."&&t===""?"":o,base:n,ext:r,name:n.slice(0,n.length-r.length)}}function Zb(e){let t=e.dir||e.root||"",n=e.base||(e.name??"")+(e.ext??"");return t?t===e.root?t+n:t+"/"+n:n}function Yb(e){return e}var q,jT,fe=z(()=>{"use strict";I();q={sep:"/",delimiter:":",normalize:Vo,isAbsolute:Ne,join:j,resolve:ae,relative:De,dirname:Me,basename:je,extname:un,parse:Xb,format:Zb,toNamespacedPath:Yb},jT={...q,posix:q,win32:q}});function mm(){return++fm}function Mt(e){let t=e.startsWith("/")?e:"/"+e,n=Vo(t);return n.length>1&&n.endsWith("/")?n.slice(0,-1):n}function zn(e,t){let n=new Error(`ENOENT: no such file or directory, ${t} '${e}'`);return n.code="ENOENT",n.errno=-2,n.path=e,n.syscall=t,n}function pm(e,t){let n=new Error(`ENOTDIR: not a directory, ${t} '${e}'`);return n.code="ENOTDIR",n.errno=-20,n.path=e,n.syscall=t,n}function ds(e){let t=Mt(e),n=ze.get(t);if(n){if(n.kind!=="dir")throw pm(e,"mkdir");return n}let r={kind:"dir",mtimeMs:0,mode:511,children:new Set};return ze.set(t,r),t!==_r&&ds(Me(t)).children.add(je(t)),r}function Qb(){ze.clear(),fm=0,hm=0,ze.set(_r,{kind:"dir",mtimeMs:0,mode:511,children:new Set})}function gm(e){for(let t of e){let n=Mt(t.path);ds(Me(n)).children.add(je(n)),ze.set(n,{kind:"file",size:t.size,mtimeMs:mm(),mode:438,bytes:t.bytes})}}function Jo(e,t){let n=Mt(e),r=ze.get(n);if(r&&r.kind==="file"){r.bytes=t,r.size=t.byteLength,r.mtimeMs=mm();return}gm([{path:n,size:t.byteLength,bytes:t}])}function ew(e){let t=ze.get(Mt(e));return!!t&&t.kind==="file"&&t.bytes!==void 0}function tw(){let e=0;for(let[t,n]of[...ze]){if(n.kind!=="file"||n.bytes!==void 0)continue;ze.delete(t);let r=ze.get(Me(t));r&&r.kind==="dir"&&r.children.delete(je(t)),e++}return e}function nw(){let e=0;for(let t of ze.values())t.kind==="file"&&t.bytes&&(e+=t.bytes.byteLength);return e}function rw(e,t,n){return{name:e,parentPath:t,path:t,isFile:()=>n==="file",isDirectory:()=>n==="dir",isSymbolicLink:fn,isBlockDevice:fn,isCharacterDevice:fn,isFIFO:fn,isSocket:fn}}function sw(e){return{size:e.kind==="file"?e.size:0,mode:e.mode,mtimeMs:e.mtimeMs,mtime:new Date(e.mtimeMs),isFile:()=>e.kind==="file",isDirectory:()=>e.kind==="dir",isSymbolicLink:fn,isBlockDevice:fn,isCharacterDevice:fn,isFIFO:fn,isSocket:fn}}function ne(e){return ze.has(Mt(e))}function Ae(e){let t=ze.get(Mt(e));if(!t)throw zn(e,"stat");return sw(t)}function st(e){let t=Mt(e);if(!ze.has(t))throw zn(e,"realpath");return t}function Gn(e,t){let n=Mt(e),r=ze.get(n);if(!r)throw zn(e,"scandir");if(r.kind!=="dir")throw pm(e,"scandir");let o=[...r.children];return t?.withFileTypes?o.map(s=>{let a=ze.get(n===_r?`/${s}`:`${n}/${s}`);return rw(s,n,a?.kind==="dir"?"dir":"file")}):o}function ie(e,t){let n=ze.get(Mt(e));if(!n)throw zn(e,"open");if(n.kind!=="file"){let o=new Error("EISDIR: illegal operation on a directory, read");throw o.code="EISDIR",o}if(!n.bytes)throw zn(e,"open");let r=W.from(n.bytes);return t?r.toString(typeof t=="string"?t:t.encoding):r}function ot(e,t){let n=typeof t=="string"?new TextEncoder().encode(t):t;Jo(e,n)}function Ko(e,t){let n=ze.get(Mt(e));if(!n)throw zn(e,"chmod");n.mode=t}function Zt(e,t){ds(e)}function br(e){let t=`${e}${hm++}`;return ds(t),t}function Ke(e,t){let n=Mt(e),r=ze.get(n);if(!r){if(t?.force)return;throw zn(e,"unlink")}if(r.kind==="dir"){if(!t?.recursive)throw Object.assign(new Error(`Path is a directory: rm returned EISDIR (is a directory) ${e}`),{code:"ERR_FS_EISDIR"});for(let s of[...r.children])Ke(n===_r?`/${s}`:`${n}/${s}`,t)}ze.delete(n);let o=ze.get(Me(n));o&&o.kind==="dir"&&o.children.delete(je(n))}function En(e,t){let n=Mt(e),r=ze.get(n);if(!r)throw zn(e,"rename");let o=Mt(t);if(o!==n){if(r.kind==="dir"){ds(o);for(let s of[...r.children])En(n===_r?`/${s}`:`${n}/${s}`,o===_r?`/${s}`:`${o}/${s}`)}else ds(Me(o)).children.add(je(o)),ze.set(o,r);Ke(n,{recursive:!0,force:!0})}}function Xo(){throw new Error("recursive filesystem watching is unavailable in the browser VFS")}var _r,ze,fm,fn,Hn,hm,Ee=z(()=>{"use strict";I();fe();_r="/",ze=new Map([[_r,{kind:"dir",mtimeMs:0,mode:511,children:new Set}]]),fm=0;fn=()=>!1;Hn=Ae;hm=0});function Zo(e,t,n){let r=new Error(`spawnSync ${e} ENOENT`);return r.code="ENOENT",r.errno=-2,r.syscall=`spawnSync ${e}`,r.path=e,{pid:0,output:[],stdout:"",stderr:"",status:null,signal:null,error:r}}function ym(e,t,n){let r=new Map,o={pid:void 0,stdin:null,stdout:null,stderr:null,on(a,l){let c=r.get(a)??[];return c.push(l),r.set(a,c),o},kill:()=>!1},s=new Error(`spawn ${e} ENOENT`);return s.code="ENOENT",s.syscall=`spawn ${e}`,s.path=e,Promise.resolve().then(()=>{for(let a of r.get("error")??[])a(s);for(let a of r.get("close")??[])a(null)}),o}var Yo=z(()=>{I()});function $e(e,t,n={}){let r=n.env??O.env,o=Zo(e,t,{cwd:n.cwd,input:n.input,encoding:"utf8",timeout:n.timeoutMs??12e4,maxBuffer:n.maxBufferBytes??64*1024*1024,env:e==="git"?{...r,...Rc}:r}),s=o.error?o.error.code:void 0;return{ok:!o.error&&o.status===0,status:o.status,stdout:o.stdout??"",stderr:o.stderr??(o.error?String(o.error.message):""),missing:s==="ENOENT",...s?{errorCode:s}:{}}}function Yt(e){let t=_m.get(e);if(t!==void 0)return t;let n=$e(O.platform==="win32"?"where":"which",[e]),r=n.ok&&n.stdout.trim().length>0;return _m.set(e,r),r}function ri(e){return e.toLowerCase().replace(/^https?:\/\//,"").replace(/^git@/,"").replace(/\.git$/,"").replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,120)}function iw(e,t){return e.length<=t?e:e.slice(0,t)+` +\u2026 [truncated ${e.length-t} chars]`}function ow(e,t){let n=e.replace(/\s+/g," ").trim();if(n.length<=t)return n;let r=n.slice(0,t).replace(/\s+\S*$/,"");return r||(r=n.slice(0,t)),(r.match(/`/g)?.length??0)%2===1&&(r=r.replace(/`[^`]*$/,"")),r.lastIndexOf("[")>r.lastIndexOf("]")&&(r=r.slice(0,r.lastIndexOf("["))),r.replace(/\s+$/,"")+"\u2026"}function bt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function qn(e){return wm.test(e)?e.normalize("NFKD").replace(/[̀-ͯ]/g,""):e}function us(e,t){let n=new Set,r=[];for(let o of qn(e).split(xm)){if(!o)continue;let s=o.toLowerCase();o.length<2||bm.has(s)&&!t?.(o)||n.has(s)||(n.add(s),r.push(o))}return r}function si(e,t){let n=[];for(let r of qn(e).split(xm))r&&(r.length<2||bm.has(r.toLowerCase())&&!t?.(r))&&n.push(r);return n}function aw(e){let t=us(e),n=r=>{let o=0;return/\d/.test(r)&&(o+=3),/[A-Z]/.test(r)&&!/^[A-Z0-9]+$/.test(r)&&(o+=2),/_/.test(r)&&(o+=2),r.length>=8?o+=1.5:r.length>=5&&(o+=.5),o};return t.map((r,o)=>({k:r,s:n(r),i:o})).sort((r,o)=>o.s-r.s||r.i-o.i).map(r=>r.k)}function Cc(e,t,n=60){let r=new Map;for(let o of e)o.forEach((s,a)=>{let l=t(s);r.set(l,(r.get(l)??0)+1/(n+a+1))});return r}function mn(e){let t=!wm.test(e),n=t?e:qn(e),r=t?n.replace(lw,"$1 $2").replace(cw,"$1 $2"):n.replace(fw,"$1 $2").replace(mw,"$1 $2"),o=[],s=new Set,a=l=>{l.length<2||s.has(l)||(s.add(l),o.push(l))};/\s/.test(e.trim())||a(n.toLowerCase().replace(t?dw:pw,""));for(let l of r.split(t?uw:gw))a(l.toLowerCase());return o}function Qo(e){if(e.length<4)return e;let t=e;return t.endsWith("ies")&&t.length>4?t=t.slice(0,-3)+"y":t.endsWith("sses")?t=t.slice(0,-2):(t.endsWith("ses")&&t.length>4||t.endsWith("s")&&!t.endsWith("ss")&&!t.endsWith("us")&&!t.endsWith("is"))&&(t=t.slice(0,-1)),t.endsWith("ying")&&t.length>5?t=t.slice(0,-4)+"y":t.endsWith("ing")&&t.length>5?t=t.slice(0,-3):t.endsWith("ed")&&t.length>4&&(t=t.slice(0,-2)),t.endsWith("e")&&t.length>3&&(t=t.slice(0,-1)),t}var Rc,_m,bm,wm,xm,lw,cw,dw,uw,fw,mw,pw,gw,et=z(()=>{"use strict";I();Yo();Rc={LC_ALL:"C",LANGUAGE:""};_m=new Map;bm=new Set(["the","a","an","is","are","was","were","be","been","being","do","does","did","how","what","why","when","where","which","who","whom","this","that","these","those","of","in","on","to","for","with","and","or","but","if","then","else","than","as","at","by","from","into","about","it","its","i","you","we","they","he","she","there","here","can","could","should","would","will","shall","may","might","must","have","has","had","not","no","yes","so","such","only","any","some","all","get","set","use","used","using","work","works","working","handle","handled","happen","happens","default","value","values","please","explain","tell","me","my","our"]),wm=/[^\x00-\x7F]/;xm=/[^\p{L}\p{N}_]+/u;lw=/([a-z0-9])([A-Z])/g,cw=/([A-Z]+)([A-Z][a-z])/g,dw=/[^a-z0-9_]+/g,uw=/[^A-Za-z0-9]+/,fw=/([\p{Ll}\p{N}])(\p{Lu})/gu,mw=/(\p{Lu}+)(\p{Lu}\p{Ll})/gu,pw=/[^\p{L}\p{N}_]+/gu,gw=/[^\p{L}\p{N}]+/u});function hw(e){let t="";for(let n=0;n=e.length))return s?{source:"(?!)",end:n}:{source:r?`[^/${o}]`:`(?!/)[${o}]`,end:n}}function Sm(e){return e==="\\"||e==="]"||e==="^"||e==="["||e==="-"?"\\"+e:e}function ms(e,t,n){let r=[],o=t?bt(t)+"/":"",s=e.split(/\r?\n/);for(let a=0;af===u:f=>f.startsWith(u)&&o.test(f)}let{head:s,whole:a}=Mc(e);if(a)return(c,d)=>d===s&&c.startsWith(r);if(e[0]==="*"&&e[1]!=="*"){let c=Mc(e.slice(1));if(c.whole)return(d,u)=>u.endsWith(c.head)&&d.startsWith(r)}let l=new RegExp(`^${t}$`);return(c,d)=>c.startsWith(r)&&l.test(d)}function ii(e,t,n){let r=ea(e,t,n);return r!==void 0&&!r.negated}function ea(e,t,n){let r=t.slice(t.lastIndexOf("/")+1);for(let o=e.length-1;o>=0;o--){let s=e[o];if(!(s.dirOnly&&!n)&&(s.test?s.test(t,r):s.re.test(t)))return s}}var yw,Ac=z(()=>{"use strict";I();et();yw={alnum:"A-Za-z0-9",alpha:"A-Za-z",blank:" \\t",cntrl:"\\x00-\\x1f\\x7f",digit:"0-9",graph:"\\x21-\\x7e",lower:"a-z",print:"\\x20-\\x7e",punct:"!-\\/:-@\\[-`{-~",space:" \\t\\n\\r\\f\\v",upper:"A-Z",xdigit:"0-9A-Fa-f"}});function ps(e){let t;try{t=ie(e)}catch{return ww}let n=t.length,r={buf:t,bytes:n,ok:!0,binary:!1};if(n>=2&&t[0]===255&&t[1]===254){let s=t.subarray(2,2+(n-2&-2)).toString("utf16le");return{...r,text:s,encoding:"utf16le",byteAddressable:!1,bodyStart:2}}if(n>=2&&t[0]===254&&t[1]===255){let s=W.from(t.subarray(2,2+(n-2&-2)));return s.swap16(),{...r,text:s.toString("utf16le"),encoding:"utf16be",byteAddressable:!1,bodyStart:2}}if(n>=3&&t[0]===239&&t[1]===187&&t[2]===191)return{...r,text:t.subarray(3).toString("utf8"),encoding:"utf8-bom",byteAddressable:!0,bodyStart:3};if(t.includes(0))return{...r,text:"",encoding:null,binary:!0,byteAddressable:!1,bodyStart:0};let o=t.toString("utf8");return o.includes("\uFFFD")&&!Sw(t)?{...r,text:t.toString("latin1"),encoding:"latin1",byteAddressable:!1,bodyStart:0}:{...r,text:o,encoding:"utf8",byteAddressable:!0,bodyStart:0}}function Sw(e){try{return xw.decode(e),!0}catch{return!1}}function kw(e){let t=new Int32Array(e.length+1),n=0;for(let r=0;r=55296&&o<=56319&&r+1{"use strict";I();Ee();ww={text:"",buf:W.alloc(0),encoding:null,binary:!1,bytes:0,ok:!1,byteAddressable:!1,bodyStart:0};xw=new TextDecoder("utf-8",{fatal:!0});Ic=class{constructor(t){this.text=t;this.ascii=!/[^\x00-\x7F]/.test(t),this.table=this.ascii?null:kw(t),this.lineStarts=Ew(t)}text;ascii;table;lineStarts;byteOf(t){if(this.ascii)return t;let n=this.table;return t<=0?0:t>=n.length?n[n.length-1]:n[t]}lineColOf(t){let n=this.lineStarts,r=0,o=n.length-1;for(;r>1;n[s]<=t?r=s:o=s-1}return{line:r+1,col:t-n[r]+1}}get lineCount(){return this.lineStarts.length}}});function vw(e){let t=[...Tc].map(o=>`:(glob)**/${o}/**`),n=$e("git",["-C",e,"ls-files","-z","--",...t]);if(!n.ok)return;let r=new Set;for(let o of n.stdout.split("\0")){let s=0;for(let a=o.indexOf("/");a!==-1;a=o.indexOf("/",s))Tc.has(o.slice(s,a))&&r.add(o.slice(0,a)),s=a+1}return r}function Cw(e,t){return e===wr||e===Rw||t.has(e)||e.startsWith(".codeindex-edit-")}function Em(e,t){let n=t.find(o=>o.name===wr);if(!n)return;let r=j(e,wr);try{if(n.isDirectory())return r;let o=Ae(r);if(o.isDirectory())return r;if(!o.isFile()||o.size>Mw)return;let s=ie(r,"utf8");if(!s.startsWith(km))return;let a=s.slice(km.length).replace(/[\r\n]+$/,"");if(!a)return;let l=ae(e,a),c=j(l,"commondir");return ne(c)?ae(l,ie(c,"utf8").trim()):l}catch{return}}function vm(e){if(!e)return"";try{let t=j(e,"info","exclude");return ne(t)?se(t):""}catch{return""}}function Aw(e){let t=d=>{if(ne(j(d,wr)))try{return Em(d,Gn(d,{withFileTypes:!0}).filter(u=>u.name===wr))}catch{return}};if(t(e))return[];let n=[],r;for(let d=e,u=Me(d);u!==d&&(n.push(u),r=t(u),!r);d=u,u=Me(d));if(!r)return[];let o=n[n.length-1],s=d=>d.split("/").join("/"),a=s(De(o,e))+"/",l=d=>s(De(e,d)),c=ms(vm(r),"",l(j(r,"info","exclude")));for(let d of n.reverse()){let u=j(d,".gitignore");ne(u)&&c.push(...ms(se(u),s(De(o,d)),l(u)))}return c.map(d=>({...d,test:(u,f)=>d.test?d.test(a+u,f):d.re.test(a+u)}))}function Xe(e,t={}){let n=t.maxFileBytes??1048576,r=t.maxFiles??1/0,o=t.gitignore!==!1,s=t.ignoreDirs?new Set(t.ignoreDirs):vn,a=!t.ignoreDirs&&t.trackedBuildDirs!==!1,l=null,c=k=>(l===null&&(l=vw(e)),l?.has(k)??!1),d=(k,v,T)=>Cw(k,s)&&!(a&&Tc.has(k)&&!(o&&T.length&&ii(T,v,!0))&&c(v)),u=[],f=!1,m=0,p=[],g=(k,v,T=!1,F)=>{t.onSkip?.({rel:k,reason:v,directory:T,...F===void 0?{}:{size:F}})},h=(k,v,T,F)=>{if(!t.onSkip)return;let R=ea(v,k,T);t.onSkip({rel:k,reason:"gitignored",directory:T,...F===void 0?{}:{size:F},...R?.source!==void 0?{rule:{source:R.source,line:R.line,pattern:R.pattern}}:{}})},_;try{_=st(e)}catch{return{files:u,capped:f,excluded:m}}let y=k=>k===_||k.startsWith(_+"/"),b=[{dir:e,rel:"",rules:o?Aw(_):[]}],x=new Set;e:for(;b.length;){let k=b.pop(),v=[],T;try{T=st(k.dir)}catch{continue}if(x.has(T)||(x.add(T),!y(T)))continue;let F;try{F=Gn(k.dir,{withFileTypes:!0}).sort((A,S)=>A.nameS.name?1:0)}catch{continue}let R=F.some(A=>A.name===wr)?Em(k.dir,F):void 0;if(k.rel&&R){m++,g(k.rel,"nested-repo",!0);continue}let C=k.rules;if(o&&!k.rel){let A=ms(vm(R),"",".git/info/exclude");A.length&&(C=[...C,...A])}if(o&&F.some(A=>A.name===".gitignore")){let A=k.rel?`${k.rel}/.gitignore`:".gitignore",S=ms(se(j(k.dir,".gitignore")),k.rel,A);S.length&&(C=[...C,...S])}for(let A of F){let S=A.name,w=j(k.dir,S),E=k.rel?`${k.rel}/${S}`:S,P=A.isSymbolicLink();if(S===wr)continue;if(A.isDirectory()&&d(S,E,C)){g(E,"ignore-dir",!0);continue}let N;try{N=P?Ae(w):Hn(w)}catch{g(E,P?"broken-symlink":"unreadable");continue}if(N.isDirectory()){if(d(S,E,C)){g(E,"ignore-dir",!0);continue}if(P){g(E,"directory-symlink",!0);continue}if(o&&C.length&&ii(C,E,!0)){h(E,C,!0);continue}if(t.filter&&!t.filter({rel:E,abs:w,directory:!0})){g(E,"filter",!0);continue}v.push({dir:w,rel:E,rules:C});continue}if(!N.isFile())continue;let L=un(S).toLowerCase(),H;if(o&&C.length&&ii(C,E,!1)?H="gitignored":t.filter&&!t.filter({rel:E,abs:w,directory:!1})?H="filter":N.size>n&&!t.includeOversize?H="over-max-bytes":ta.has(S.toLowerCase())&&!t.includeLockfiles?H="lockfile":(t.binaryExtensions??na).has(L)&&!t.includeBinary?H="binary-ext":(S.endsWith(".min.js")||S.endsWith(".min.css"))&&!t.includeMinified&&(H="minified"),H){m++,H==="over-max-bytes"&&p.push({rel:E.split("/").join("/"),size:N.size}),H==="gitignored"?h(E,C,!1,N.size):g(E,H,!1,N.size);continue}if(P){try{if(!y(st(w))){g(E,"symlink-outside-root");continue}}catch{g(E,"broken-symlink");continue}if(!t.includeFileSymlinks){g(E,"file-symlink");continue}}if(u.length>=r){f=!0;break e}u.push({rel:E.split("/").join("/"),abs:w,size:N.size,ext:L,mtimeMs:N.mtimeMs})}for(let A=v.length-1;A>=0;A--)b.push(v[A])}return{files:u,capped:f,excluded:m,...p.length?{oversized:p}:{}}}function se(e){return ps(e).text}var vn,Tc,wr,Rw,km,Mw,ta,na,Iw,Ze=z(()=>{"use strict";I();Ee();fe();Ac();oi();et();oi();vn=new Set([".git","node_modules",".pnpm","bower_components","vendor","dist","build","out","target",".next",".nuxt",".svelte-kit",".turbo","coverage","__pycache__",".venv","venv",".tox",".mypy_cache",".pytest_cache",".gradle",".idea",".vscode",".cache","tmp",".ultraindex",".codeindex","Pods","DerivedData",".terraform","elm-stuff",".dart_tool"]),Tc=new Set(["build","out","target","tmp"]);wr=".git",Rw=".codeindex";km="gitdir: ",Mw=4096;ta=new Set(["package-lock.json","npm-shrinkwrap.json","yarn.lock","pnpm-lock.yaml","bun.lockb","composer.lock","cargo.lock","poetry.lock","pipfile.lock","gemfile.lock","go.sum","flake.lock","packages.lock.json","podfile.lock","mix.lock"]),na=new Set([".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico",".icns",".svg",".pdf",".zip",".gz",".tar",".tgz",".bz2",".xz",".7z",".rar",".jar",".war",".class",".so",".dylib",".dll",".exe",".bin",".o",".a",".wasm",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".wav",".flac",".ogg",".lock",".min.js",".map"]),Iw=2e4});function $(e,t){return et?1:0}function xr(e){return(t,n)=>$(e(t),e(n))}var le=z(()=>{"use strict";I()});function Qt(e){let t=$e("git",["-C",e,"rev-parse","HEAD"]);return t.ok?t.stdout.trim().slice(0,Tw):void 0}function Oc(e){let t=$e("git",[...wt(e),"hash-object","-t","tree","--stdin"],{input:""});return t.ok?t.stdout.trim():void 0}function Nc(e){return $e("git",["-C",e,"rev-parse","--is-inside-work-tree"]).ok}function Pc(e,t){let n=c=>$e("git",[...wt(e),"rev-parse","--verify","--quiet",`${c}^{commit}`]).ok,r=c=>{let d=$e("git",[...wt(e),"merge-base",c,"HEAD"]);return d.ok?d.stdout.trim():void 0};if(t){if(Fc(t)||!n(t))return{error:`base ref "${t}" not found (tried git rev-parse --verify)`};let c=r(t);return c?{ref:t,mergeBase:c}:{error:`no merge-base between "${t}" and HEAD`}}let o=$e("git",[...wt(e),"symbolic-ref","--quiet","refs/remotes/origin/HEAD"]),s=[...o.ok?[o.stdout.trim().replace("refs/remotes/","")]:[],"origin/main","origin/master","main","master"];for(let c of s){if(!n(c))continue;let d=r(c);if(d)return{ref:c,mergeBase:d}}let a=$e("git",[...wt(e),"rev-parse","--verify","--quiet","HEAD"]);if(a.ok)return{ref:"HEAD",mergeBase:a.stdout.trim(),note:"base: HEAD (no default branch found \u2014 reviewing uncommitted work)"};let l=Oc(e);return l?{ref:ra,mergeBase:l,note:"no commits yet \u2014 every file is reviewed as added"}:{error:"cannot resolve HEAD, nor the empty tree"}}function Lc(e,t){let n=[],r=$e("git",[...wt(e),"diff","--no-color","--relative","-z","-M","--name-status",...$c(t)]);if(r.ok){let a=r.stdout.split("\0"),l=0;for(;l[a.path,a])),s=$e("git",[...wt(e),"diff","--no-color","--relative","-z","-M","--numstat",...$c(t)]);if(s.ok){let a=s.stdout.split("\0"),l=0;for(;l0){a.startsWith("\\")||s--;continue}if(a.startsWith("+++ ")){let l=Fw(a.slice(4));if(l===void 0){o=void 0;continue}o=n.get(l)??[],n.set(l,o)}else if(a.startsWith("@@")){let l=a.match(/^@@ -\d+(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);if(!l)continue;let c=Number(l[2]),d=l[3]===void 0?1:Number(l[3]);if(s=(l[1]===void 0?1:Number(l[1]))+d,!o)continue;d===0?o.push({start:Math.max(c,1),end:Math.max(c,1),approx:!0}):o.push({start:c,end:c+d-1})}}return n}function Fw(e){let t=e.endsWith(" ")?e.slice(0,-1):e;if(t.startsWith('"')&&t.endsWith('"')&&t.length>=2&&(t=Nw(t)),t!=="/dev/null")return t.startsWith("b/")?t.slice(2):t}function Nw(e){let t=W.from(e.slice(1,-1),"utf8"),n=[];for(let r=0;r=t.length){n.push(o);continue}let s=t[++r];s>=48&&s<=55?(n.push(parseInt(t.toString("latin1",r,r+3),8)&255),r+=2):n.push(Ow[String.fromCharCode(s)]??s)}return W.from(n).toString("utf8")}function sa(e){let t=$e("git",[...wt(e),"ls-files","--others","--exclude-standard","-z"]);return t.ok?t.stdout.split("\0").filter(n=>n.length>0):[]}function jc(e,t){let n=$e("git",[...wt(e),"rev-parse","--show-prefix","--git-path","shallow","--verify","--quiet","HEAD"]);if(n.missing)return{ok:!1,error:"git was not found on PATH"};if(!n.ok)return{ok:!1,error:n.status===1?"no commits yet (empty repository)":Cm(n.stderr)||"not a git repository"};let[r="",o="",s=""]=n.stdout.split(` +`),a=Dw(e,t),l=jw(ae(e,o)),c=[s,...a.exclude,...l.map(g=>`^${g}`)],d=JSON.stringify([ae(e),c,a.args]),u=Sr.get(d);if(u)return Sr.delete(d),Sr.set(d,u),{ok:!0,log:u};let f=[...wt(e),"log","--no-color","--no-renames",...a.args,"--pretty=format:%x1e","--name-only","-z","--stdin"];r&&f.push("--full-history","--full-diff","--",".");let m=Zo("git",f,{input:c.join(` `)+` -`,maxBuffer:fm,timeout:6e5,env:{...F.env,...yc}});if(m.error){let g=m.error.code;return{ok:!1,error:g==="ENOBUFS"?`git log output exceeds ${fm/1024/1024} MiB \u2014 bound the window with since`:g==="ENOENT"?"git was not found on PATH":m.error.message}}if(m.status!==0)return{ok:!1,error:mm(String(m.stderr??""))||`git log exited with ${m.status}`};let p=yw(m.stdout,r,l.length>0);return wr.set(d,p),wr.size>pw&&wr.delete(wr.keys().next().value),{ok:!0,log:p}}function gw(e,t){if(!t)return{exclude:[],args:[]};let n=Ec(t)?void 0:Fe("git",[..._t(e),"rev-parse","--verify","--quiet",`${t}^{commit}`]);if(n?.ok)return{exclude:[`^${n.stdout.trim()}`],args:[]};if(mw.test(t.trim())){let r=Fe("git",[..._t(e),"rev-parse",`--since=${t}`]),o=/^--max-age=(-?\d+)$/m.exec(r.stdout);if(r.ok&&o){let s=BigInt(o[1]);return s<0n||s>=2n**63n?{exclude:[],args:[]}:{exclude:[],args:[`--max-age=${o[1]}`]}}}throw new Error(`since "${t}" is neither a commit (tag, branch, sha) nor a date (2024-01-01, "6 months ago")`)}function hw(e){try{return le(e,"utf8").split(` -`).map(t=>t.trim()).filter(Boolean).sort(T)}catch{return[]}}function yw(e,t,n){let r=new Map,o=[],s=[],a=[];for(let l=0;ld&&s.length){let u=e.toString("utf8",d,c),f=r.get(u);f===void 0&&(f=o.length,o.push(u),r.set(u,f)),a.push(f)}l=c+1}return s.push(a.length),{prefix:t,paths:o,starts:s,ids:a,shallow:n}}function Tc(e){if(!e.prefix)return e.paths;let t=e.prefix.length;return e.paths.map(n=>n.startsWith(e.prefix)?n.slice(t):void 0)}function Qt(e,t={}){let n=new Map,r=Ic(e,t.since);if(!r.ok)return{churn:n,ok:!1,error:r.error,commits:0};let{log:o}=r,s=Tc(o),a=new Int32Array(o.paths.length).fill(-1),l=0;for(let c=0;c+1{"use strict";I();Ko();ve();pe();ce();Qe();lw=7;cw=["-c","core.quotePath=false","-c","color.ui=false","-c","diff.noprefix=false","-c","diff.mnemonicPrefix=false","-c","diff.relative=false","-c","log.showSignature=false","-c","log.follow=false","-c","log.showRoot=true"],_t=e=>["-C",e,...cw],Ec=e=>e.startsWith("-"),kc=e=>e.staged?["--cached"]:[e.mergeBase],ea="(no commits)";uw={a:7,b:8,t:9,n:10,v:11,f:12,r:13};fm=1024*1024*1024,mw=/^(?:\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}(?::\d{2})?)?(?:Z|[+-]\d{2}:?\d{2})?|(?:\d+[ .](?:second|minute|hour|day|week|month|year)s?[ .]*)+(?:ago)?)$/i,wr=new Map,pw=4});function bw(e){return typeof e=="string"?new TextEncoder().encode(e):e}function ww(e,t){if(e.length===1)return e[0];let n=new Uint8Array(t),r=0;for(let o of e)n.set(o,r),r+=o.byteLength;return n}function gm(e){let t=Math.floor(e.byteLength/536870912|0),n=e.byteLength<<3>>>0,r=Math.ceil((e.byteLength+9)/64),o=new Uint8Array(r*64);o.set(e),o[e.byteLength]=128;let s=new DataView(o.buffer);return s.setUint32(o.byteLength-8,t,!1),s.setUint32(o.byteLength-4,n,!1),s}function $c(e,t){return(e<>>32-t)>>>0}function pn(e,t){return(e>>>t|e<<32-t)>>>0}function xw(e){let t=gm(e),n=1732584193,r=4023233417,o=2562383102,s=271733878,a=3285377520,l=new Uint32Array(80);for(let u=0;u>>0;h=g,g=p,p=$c(m,30),m=f,f=w}n=n+f>>>0,r=r+m>>>0,o=o+p>>>0,s=s+g>>>0,a=a+h>>>0}let c=new Uint8Array(20),d=new DataView(c.buffer);return[n,r,o,s,a].forEach((u,f)=>d.setUint32(f*4,u,!1)),c}function kw(e){let t=gm(e),n=1779033703,r=3144134277,o=1013904242,s=2773480762,a=1359893119,l=2600822924,c=528734635,d=1541459225,u=new Uint32Array(64);for(let p=0;p>>3,$=pn(A,17)^pn(A,19)^A>>>10;u[M]=u[M-16]+R+u[M-7]+$>>>0}let g=n,h=r,_=o,y=s,b=a,w=l,S=c,k=d;for(let M=0;M<64;M++){let N=pn(b,6)^pn(b,11)^pn(b,25),A=b&w^~b&S,R=k+N+A+Sw[M]+u[M]>>>0,$=pn(g,2)^pn(g,13)^pn(g,22),E=g&h^g&_^h&_,x=$+E>>>0;k=S,S=w,w=b,b=y+R>>>0,y=_,_=h,h=g,g=R+x>>>0}n=n+g>>>0,r=r+h>>>0,o=o+_>>>0,s=s+y>>>0,a=a+b>>>0,l=l+w>>>0,c=c+S>>>0,d=d+k>>>0}let f=new Uint8Array(32),m=new DataView(f.buffer);return[n,r,o,s,a,l,c,d].forEach((p,g)=>m.setUint32(g*4,p,!1)),f}function Ew(e){let t="";for(let n of e)t+=pm[n>>4]+pm[n&15];return t}function vw(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function us(e){let t=e.toLowerCase().replace("-","");if(t!=="sha1"&&t!=="sha256")throw new Error(`createHash: unsupported algorithm "${e}" in the browser build (sha1, sha256)`);let n=[],r=0,o={update(s){let a=bw(s);return n.push(a),r+=a.byteLength,o},digest(s){let a=r===0?new Uint8Array(0):ww(n,r),l=t==="sha1"?xw(a):kw(a);return s==="hex"?Ew(l):s==="base64"?vw(l):l}};return o}var Sw,pm,na=H(()=>{I();Sw=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);pm="0123456789abcdef"});function Re(e){return us("sha1").update(e).digest("hex")}function Rw(e,t=8){return Re(e).slice(0,t)}var bt=H(()=>{"use strict";I();na()});function Cw(e){return Mw.test(e.trim())}function Iw(e){return Aw.test(e.trim())}function $w(e){return Tw.test(e.trim())}function Lt(e){return e.replace(/\*+\/\s*$/,"").replace(/^\s*\/\*+!?/,"").replace(/^\s*\/\/[/!]?/,"").replace(/^\s*--+/,"").replace(/^\s*#+/,"").replace(/^\s*\*+/,"").replace(/^\s*(?:"""|''')/,"").replace(/(?:"""|''')\s*$/,"").replace(/[-=~_]{3,}|\/{3,}|\*{3,}|#{3,}/g," ").trim()}function Fw(e){return e.replace(/<\/?[A-Za-z][^>]*>/g," ").replace(/\s+/g," ").trim()}function xr(e,t=Ow,n=3){let r=[],o=!1;for(let l of e){let c=l.trim();if(!c){o=!1;continue}if(!o){if($w(c)){if(r.length)break;o=!0;continue}if(!(Cw(c)||Iw(c))){if(/^@[a-z]/i.test(c))break;r.push(c)}}}let s=Fw(r.join(" "));if(s.length|\]=*\]|-\})\s*$/,"")).replace(/^\|(?:\s+|$)/,"").replace(Bw,"")}function Fc(e,t){let n=Nw.has(e),r=Pw.has(e),o=Ww.filter(([d])=>d==="/*"||d===""],["--[[","]]"],["{-","-}"],['"""','"""'],["'''","'''"]],Bw=/^@(?:file|fileoverview|overview|desc|description)\b\s*/i,Uw=/^created by\b.*\bon\s+\d{1,4}[./-]\d{1,2}[./-]\d{1,4}\.?$/i,Hw=60,zw=200,Gw=8});function xe(e,t,n,r,o){let s=[],a=t.split(/\r?\n/),l=o===void 0?a:o.split(/\r?\n/),c=o!==void 0&&r.some(u=>u.scope==="member")?Kw(o):void 0,d=new Map;for(let u=0;u{let l=a.doc??Zw(o,a.line-1,n),c=a.endLine??s?.endOf(a.line-1,o);return l===void 0&&c===void 0?a:{...a,...c!==void 0?{endLine:c}:{},...l!==void 0?{doc:l}:{}}})}function Zw(e,t,n){let r=t-1;for(;r>=0&&n.decoration?.test(e[r]);)r--;if(n.docAttr){let s=Yw(e,r);if(s)return xr(s)}let o=[];for(;r>=0;){let s=e[r];if(n.comment.test(s)){o.push(s),r--;continue}if(!n.block||!/\*\/\s*$/.test(s))break;let a=r;for(;a>=0&&!e[a].includes("/*");)a--;if(a<0||!/^\s*\/\*(?!!)/.test(e[a]))break;for(let l=r;l>=a;l--)o.push(e[l]);r=a-1}if(o.length)return xr(o.reverse().map(Lt))}function Yw(e,t){if(t<0)return;let n=/^\s*@doc\s+(?:~[sS])?"(.*)"\s*$/.exec(e[t]);if(n)return[n[1]];if(/^\s*"""\s*$/.test(e[t]))for(let r=t-1;r>=0&&t-r<400;r--){if(/^\s*@doc\s+(?:~[sS])?"""\s*$/.test(e[r]))return e.slice(r+1,t);if(/"""/.test(e[r]))return}}function tn(e){return Qw[e]??"other"}function tx(e){let t=e.length,n="",r=0,o=0;for(;o{if(!a){a=[0];for(let _=0;_>>1;a[_]<=p?g=_+1:h=_}return g},c=new Map;for(let p of n)c.has(p.name)||c.set(p.name,p);let d=tx(t),u=/export\s*\{([\s\S]*?)\}\s*(?:from\s*['"]([^'"]+)['"])?\s*;?/g,f;for(;(f=u.exec(d))&&o.length{"use strict";I();ii();Ee=String.raw`[\p{L}\p{Nl}_$][\p{L}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}$\u200c\u200d]*`,Vw=new Set(["class","struct","enum","interface","protocol","actor","extension","object","trait","mixin"]);Nc=class{constructor(t){this.masked=t;let n=[];for(let r=0;r>>1;this.lineStarts[o]<=t?n=o+1:r=o}return n-1}endOf(t,n){let r=this.masked,o=/^\s*/.exec(n[t])[0],s=0,a=t;for(let l=this.lineStarts[t];l60||a>=this.lineStarts.length)return;let d=r.slice(this.lineStarts[a],this.lineStarts[a+1]??r.length),u=/^\s*/.exec(d)[0],f=d.charAt(u.length);if(s===0&&f&&!"{)]".includes(f)&&u.length<=o.length)return;continue}if(c===40||c===91)s++;else if(c===41||c===93){if(--s<0)return}else{if(s===0&&c===59)return;if(s===0&&c===123){let d=this.closeOf.get(l);if(d===void 0)return;let u=this.lineOf(d),f=r.slice(d+1,this.lineStarts[u+1]??r.length);if(u===this.lineOf(l)){if(u===t&&/^[\s;,)\]}]*$/.test(f))return this.continued(u)?void 0:u+1;l=d;continue}return f.includes("{")?void 0:n[u].startsWith(o+"}")&&!this.continued(u)?u+1:void 0}}}}continued(t){for(let n=t+1;n)/.test(r)}return!1}},Qw={".ts":"typescript",".tsx":"typescript",".mts":"typescript",".cts":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".go":"go",".rb":"ruby",".rake":"ruby",".java":"java",".rs":"rust",".c":"c",".h":"c",".cc":"cpp",".cpp":"cpp",".cxx":"cpp",".hpp":"cpp",".cs":"csharp",".php":"php",".swift":"swift",".kt":"kotlin",".kts":"kotlin",".scala":"scala",".sc":"scala",".clj":"clojure",".ex":"elixir",".exs":"elixir",".erl":"erlang",".hs":"haskell",".dart":"dart",".lua":"lua",".sh":"shell",".bash":"shell",".zsh":"shell",".ksh":"shell",".fish":"shell",".hh":"cpp",".m":"objective-c",".mm":"objective-c",".sql":"sql",".graphql":"graphql",".gql":"graphql",".proto":"protobuf",".md":"markdown",".mdx":"markdown",".rst":"restructuredtext",".txt":"text",".json":"json",".yaml":"yaml",".yml":"yaml",".toml":"toml",".ini":"ini",".html":"html",".css":"css",".scss":"scss",".vue":"vue",".svelte":"svelte",".astro":"astro",".zig":"zig",".hcl":"hcl",".tf":"terraform",".tfvars":"terraform",".sol":"solidity"};ex=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]);Oc=47,hm=42,ym=10,nx=34,rx=39,sx=96,ix=92,ra=400});function Dc(e,t=[]){if(t.length>=oa)return t;let n=e.indexOf("{");if(n===-1){let c=e.replace(/\s+as\s+\w+\s*$/,"").replace(/::\s*\*\s*$/,"").replace(/^::/,"").trim();return c&&t.push(c),t}let r=e.slice(0,n),o=0,s=-1;for(let c=n;c|\bas\b/).map(u=>u.trim());if(!a||l==="_")continue;let c=a==="_"||a==="*"||/^given\b/.test(a),d=jc(c?r+".*":r+"."+a);d&&t.length=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95||e===Im||e>127}function Sr(e){let t=e.length,n=new di(e),r=[],o=0,s=c=>{let d=c;for(;d{let d=c-1;for(;d>=0&&n.codeAt(d)<=Am;)d--;if(d<0)return!0;let u=n.codeAt(d);if(hx.has(u))return!0;if(!Sm(u))return!1;let f=d;for(;f>0&&Sm(e.charCodeAt(f-1));)f--;return yx.has(e.slice(f,d+1))},l=0;for(;l0&&e.charCodeAt(l-1)===Wc;)l--;let c=o-l;if(t.raw==="r"?/[rR]$/.test(e.slice(Math.max(0,l-2),l)):c>0){let u=e.indexOf('"'+"#".repeat(c),o+1),f=u===-1?n:u;r.blank(o+1,f),o=u===-1?n:u+1+c;continue}}let a=s===oi||s===aa&&t.squote==="string";if(a||s===ci&&t.backtick){let l=a&&t.triple&&e.charCodeAt(o+1)===s&&e.charCodeAt(o+2)===s,c=o+(l?3:1),d=c;if(l){let f=e.indexOf(s===oi?'"""':"'''",c);d=f===-1?n:f}else for(;d{n.get(s)===!0&&n.delete(s),n.set(s,!1)},o=s=>{n.has(s)||n.set(s,!0)};if(ox.has(e)){if(!t.includes("import")&&!t.includes("require")&&!t.includes("from"))return[];let s=Sr(t);for(let a of[bx,wx,xx,Sx]){a.lastIndex=0;for(let l;l=a.exec(s);){let[c,d]=l.indices[1];r(t.slice(c,d))}}}else if(ax.has(e)){if(!t.includes("import"))return[];let s=_x(t);Em.lastIndex=0;for(let a;a=Em.exec(s);){let l=a[1];if(l!==void 0){if(r(l),!l||l==="__future__")continue;let c=a[2].startsWith("(")?a[2].slice(1,-1):a[2].replace(/\\\r?\n/g," ");for(let d of c.split(",")){let u=d.trim().split(/\s+as\s+/)[0].trim();/^[A-Za-z_]\w*$/.test(u)&&o(vx(l,u))}continue}for(let c of a[3].split(",")){let d=c.trim().split(/\s+as\s+/)[0].trim();d&&/^[\w.]+$/.test(d)&&r(d)}}}else if(e===".go"){let s=t.split(/\r?\n/),a=!1;for(let l of s){let c=l.trim();if(a){if(c===")"){a=!1;continue}let u=/"([^"]+)"/.exec(c);u&&r(u[1]);continue}if(/^import\s*\($/.test(c)){a=!0;continue}let d=/^import\s+(?:[\w.]+\s+)?"([^"]+)"/.exec(c);d&&r(d[1])}}else if(e===".rs"){let s,a=new Set,l=/#\[\s*path\s*=\s*"([^"]+)"\s*\]\s*(?:(?:#\[[^\]]*\]|\/\/[^\n]*)\s*)*(?:pub(?:\([^)]*\))?\s+)?mod\s+[A-Za-z_]\w*\s*;/g;for(;s=l.exec(t);)r(`mod-path ${s[1]}`),a.add(s.index+s[0].length);let c=/^[^\S\r\n]*(?:pub(?:\([^)]*\))?\s+)?mod\s+([A-Za-z_]\w*)\s*;/gm;for(;s=c.exec(t);)a.has(s.index+s[0].length)||r(`mod ${s[1]}`);let d=/^[^\S\r\n]*(?:pub(?:\([^)]*\))?\s+)?use\s+([^;]+);/gm;for(;s=d.exec(t);)for(let u of Dc(s[1].trim()))r(u)}else if(e===".java"){let s,a=/^[^\S\r\n]*import\s+(?:static\s+)?([\w.]+(?:\.\*)?)\s*;/gm;for(;s=a.exec(t);)r(s[1])}else if(e===".rb"||e===".rake"){let s,a=/^[^\S\r\n]*require_relative\s+['"]([^'"]+)['"]/gm;for(;s=a.exec(t);)r(Lc(s[1]));let l=/^[^\S\r\n]*require\s+['"]([^'"]+)['"]/gm;for(;s=l.exec(t);)r(s[1])}else if(lx.has(e)){let s,a=/^[^\S\r\n]*#\s*include\s*"([^"]+)"/gm;for(;s=a.exec(t);)r(s[1])}else if(e===".php"){let s,a=kx.exec(t)?.index??1/0;for(vm.lastIndex=0;s=vm.exec(t);){if(s[1]&&s.index>a)continue;let l=s[2].trim().replace(/^(?:function|const)\s+/,""),c=/^\\?([\w\\]*?)\\?\s*\{([^}]*)\}$/.exec(l),d=c?c[2].split(",").map(u=>`${c[1]}\\${u.trim()}`):l.split(",");for(let u of d){let f=u.trim().replace(/\\(?:function|const)\s+/,"\\").replace(/\s+as\s+\w+$/,"").replace(/^\\/,"");Ex.test(f)&&r(f)}}for(Rm.lastIndex=0;s=Rm.exec(t);){let{here:l,up:c,levels:d,path:u}=s.groups;r(l?Lc(u.replace(/^\/+/,"")):c?"../".repeat(Number(d??1))+u.replace(/^\/+/,""):Lc(u))}}else if(e===".cs"){let s,a=/^[^\S\r\n]*(?:global\s+)?using\s+(?:static\s+)?([A-Za-z_][\w.]*)\s*;/gm;for(;s=a.exec(t);)r(s[1])}else if(Mm.has(e)){let s,a=/^[ \t]*import[ \t]+([\w.`*]+)/gm;for(;s=a.exec(t);){let l=jc(s[1]);l&&r(l)}}else if(Cm.has(e)){let s,a=/^[ \t]*import[ \t]+((?:[^\n;{]|\{[^}]*\})+)/gm;for(;s=a.exec(t);){let l=[],c=0,d="";for(let u of s[1].replace(/\/\/.*$/gm,""))u==="{"?c++:u==="}"&&c--,u===","&&c===0?(bm(d,l),d=""):d+=u;bm(d,l);for(let u of l)r(u)}}else if(e===".dart"){let s,a=/^[ \t]*(?:import|export|part)[ \t]+(?:'([^'\n]+)'|"([^"\n]+)")/gm;for(;s=a.exec(t);)r(s[1]??s[2])}else if(e===".lua"){let s,a=/\brequire\s*\(?\s*['"]([\w-]+(?:[./][\w-]+)*)['"]/g;for(;s=a.exec(t);)r(s[1])}else if(cx.has(e)){let s,a=/(?:^|[;&|]|\b(?:then|do|else)\b)[ \t]*(?:source|\.)[ \t]+([^\n]+)/gm;for(;s=a.exec(t);){let l=ux(s[1]);l&&r(l)}}else if(e===".ex"||e===".exs"){let s,a=/^[ \t]*(?:alias|import|require|use)[ \t]+([A-Z]\w*(?:\.[A-Z]\w*)*)(?:\.\{([^}]*)\})?/gm;for(;s=a.exec(t);){if(s[2]===void 0){r(s[1]);continue}let l=0;for(let c of s[2].split(",")){let d=c.trim();/^[A-Z]\w*(?:\.[A-Z]\w*)*$/.test(d)&&l++a?{kind:"import",spec:s,soft:!0}:{kind:"import",spec:s})}function la(e,t){if(e===".java")return/^\s*package\s+([\w.]+)\s*;/m.exec(t)?.[1];if(e===".cs")return/^\s*(?:file-scoped\s+)?namespace\s+([\w.]+)/m.exec(t)?.[1];if(Mm.has(e)){let n=/^[ \t]*package[ \t]+([\w.`]+)/m.exec(t);return n?n[1].replace(/`/g,""):void 0}if(Cm.has(e))return fx(t)}var ox,ax,lx,Mm,Cm,cx,oa,dx,di,wm,ui,Am,Wc,Im,aa,oi,ai,Rn,mx,li,px,ci,xm,gx,hx,yx,km,ia,Pc,bx,wx,xx,Sx,Em,kx,vm,Ex,Rm,ut=H(()=>{"use strict";I();ox=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]),ax=new Set([".py",".pyi"]),lx=new Set([".c",".h",".cc",".cpp",".cxx",".hpp",".hh"]),Mm=new Set([".kt",".kts"]),Cm=new Set([".scala",".sc"]),cx=new Set([".sh",".bash",".zsh",".ksh",".fish"]),oa=16;dx=/^(["']?)(?:\$\(\s*dirname\s+(["']?)\$(?:0|\{BASH_SOURCE(?:\[0\])?\}|BASH_SOURCE)\2\s*\)|\$\{(?:BASH_SOURCE(?:\[0\])?|0)%\/\*\})\//;di=class{constructor(t){this.src=t}src;codes;blank(t,n){if(n<=t)return;let r=this.codes;if(!r){r=this.codes=new Uint16Array(this.src.length);for(let o=0;o~^"].map(e=>e.charCodeAt(0))),yx=new Set(["return","typeof","instanceof","in","of","new","delete","void","throw","case","do","else","yield","await"]),km=/\bimport\(\s*['"][^'"\n]*['"]\s*[,)]|@import\b[^'"@]{0,2048}?\bfrom\s*['"][^'"\n]*['"]/g;ia=/'(?:\\(?:u\{[0-9A-Fa-f]{1,6}\}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|.)|[^\\'\n])'/y;Pc="[\\w$\\u00a0-\\uffff]+",bx=new RegExp(`(?:^|[^\\w$.])(?:import|export)\\b\\s*(?:(?:type|typeof|defer|source)\\s+)?(?:${Pc}\\s*,\\s*)?(?:${Pc}|\\*\\s*(?:as\\s+${Pc})?|\\{[^{}]*\\})\\s*from\\s*['"]([^'"]+)['"]`,"dg"),wx=/(?:^|[\n;])[ \t]*import\s*['"]([^'"]+)['"]/dg,xx=/\brequire\(\s*['"]([^'"]+)['"]\s*\)/dg,Sx=/\bimport\(\s*['"]([^'"]+)['"]\s*[,)]/dg,Em=/(?:^|;)[ \t]*(?:from[ \t]+(\.*[\w.]*)[ \t]+import\b[ \t]*(\([^)]*\)|(?:\\\r?\n|[^\n;])*)|import[ \t]+([^\n;]*))/gm,kx=/^[ \t]*(?:(?:abstract|final|readonly)[ \t]+)*(?:class|interface|trait|enum)[ \t]+[A-Za-z_]/m,vm=/^([ \t]*)use\s+([^;]*);/gm,Ex=/^[A-Za-z_][\w\\]*$/,Rm=/\b(?:require|include)(?:_once)?\s*\(?\s*(?:(?__DIR__|dirname\(\s*__FILE__\s*\))\s*\.\s*|(?dirname\(\s*__DIR__\s*(?:,\s*(?\d+)\s*)?\))\s*\.\s*)?['"](?[^'"]+)['"]/g});function Ax(e){return(e.split("/").pop()??"").replace(/\.[^.]+$/,"")}function Ix(e,t){let n=s=>{if(!(!s||s==="default"))for(let a of t)a.name===s&&(a.exported=!0)},r=(s,a)=>{for(let l of s.split(",")){let c=l.trim().replace(/^type\s+/,"");if(!c)continue;let d=/^([\w$]+)\s+as\s+([\w$]+)$/.exec(c);if(d){d[2]!=="default"&&n(d[1]);continue}if(a){let u=/^([\w$]+)\s*:\s*([\w$]+)$/.exec(c);if(u){n(u[1]),n(u[2]);continue}}n(/^([\w$]+)/.exec(c)?.[1])}},o;for(Tm.lastIndex=0;o=Tm.exec(e);)o[2]||r(o[1]??"",!1);for($m.lastIndex=0;o=$m.exec(e);)r(o[1]??"",!0);for(Fm.lastIndex=0;o=Fm.exec(e);)n(o[2])}var it,Bc,Mt,tt,Rx,Mx,Cx,Tm,$m,Fm,Om,Nm=H(()=>{"use strict";I();ut();et();it=`(?${Ee})`,Bc=String.raw`function(?:\s*\*\s*|\s+)`,Mt=String.raw`(?:declare\s+)?`,tt=e=>new RegExp(e,"u"),Rx=[{re:tt(String.raw`^\s*export\s+${Mt}(?:async\s+)?${Bc}${it}`),kind:"function",exported:!0},{re:tt(String.raw`^\s*export\s+default\s+(?:async\s+)?${Bc}${it}`),kind:"function",exported:!0},{re:tt(String.raw`^\s*export\s+default\s+(?:abstract\s+)?class\s+(?!extends\b)${it}`),kind:"class",exported:!0},{re:tt(String.raw`^\s*${Mt}(?:async\s+)?${Bc}${it}`),kind:"function",exported:!1},{re:tt(String.raw`^\s*export\s+${Mt}(?:abstract\s+)?class\s+${it}`),kind:"class",exported:!0},{re:tt(String.raw`^\s*${Mt}(?:abstract\s+)?class\s+${it}`),kind:"class",exported:!1},{re:tt(String.raw`^\s*export\s+${Mt}interface\s+${it}`),kind:"interface",exported:!0},{re:tt(String.raw`^\s*${Mt}interface\s+${it}`),kind:"interface",exported:!1},{re:tt(String.raw`^\s*export\s+${Mt}type\s+${it}`),kind:"type",exported:!0},{re:tt(String.raw`^\s*${Mt}type\s+${it}\s*[=<]`),kind:"type",exported:!1},{re:tt(String.raw`^\s*export\s+${Mt}(?:const\s+)?enum\s+${it}`),kind:"enum",exported:!0},{re:tt(String.raw`^\s*export\s+${Mt}(?:namespace|module)\s+(?${Ee}(?:\.${Ee})*)`),kind:"namespace",exported:!0},{re:tt(String.raw`^\s*${Mt}(?:namespace|module)\s+(?${Ee}(?:\.${Ee})*)\s*\{`),kind:"namespace",exported:!1},{re:tt(String.raw`^\s*export\s+${Mt}(?:const|let|var)\s+${it}\s*[:=;]`),kind:"const",exported:!0},{re:tt(String.raw`^\s*exports\.${it}\s*=`),kind:"const",exported:!0},{re:tt(String.raw`^\s*module\.exports\.${it}\s*=`),kind:"const",exported:!0},{re:tt(String.raw`^\s*(?:const|let)\s+${it}\s*=\s*(?:async\s*)?\([^)]*\)\s*(?::[^=]+)?=>`),kind:"const",exported:!1},{re:tt(String.raw`^${Mt}(?:const|let|var)\s+${it}\s*[:=]`),kind:"const",exported:!1},{re:tt(String.raw`^\s*export\s+default\s+${it}\s*;?\s*$`),kind:"default",exported:!0}],Mx=/^\s*export\s+default\s+(?:async\s+)?(?:function|class)?\s*(?:\(|\{|extends\b)/,Cx=/^\s*export\s+default\s+(?:async\s+)?(?:function|class)\s+(?!extends\b)[\w$]+/;Tm=/export\s*\{([^}]*)\}\s*(from\b)?/g,$m=/module\.exports\s*=\s*\{([^}]*)\}/g,Fm=/(^|\n)[ \t]*export(?:\s+default\s+|\s*=\s*)([A-Za-z_$][\w$]*)[ \t]*;?[ \t]*(?=\r?\n|$)/g;Om={lang:"javascript/typescript",exts:[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"],lexis:{mask:Sr,comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n=t){let r=e.match(/\.(ts|tsx|mts|cts)$/)?"typescript":"javascript",o=xe(e,t,r,Rx,n),s=n.split(/\r?\n/);for(let a=0;a{"use strict";I();et();ca=e=>!e.startsWith("_")||e.startsWith("__"),Tx=[{re:/^(?:async\s+)?def\s+(?[\w]+)\s*\(/,kind:"function",exported:e=>ca(e.groups.name)},{re:/^\s+(?:async\s+)?def\s+(?[\w]+)\s*\(/,kind:"method",exported:e=>ca(e.groups.name)},{re:/^class\s+(?[\w]+)/,kind:"class",exported:e=>ca(e.groups.name)},{re:/^\s+class\s+(?[\w]+)/,kind:"class",exported:e=>ca(e.groups.name)}],Pm={lang:"python",exts:[".py",".pyi"],lexis:{comment:/^\s*#(?!!)/,decoration:/^\s*@/},extract(e,t){return xe(e,t,"python",Tx)}}});function Dm(e){return[{re:new RegExp(String.raw`${e}(?${Ee})${da}\s+struct\b`,"u"),kind:"struct",exported:Mn},{re:new RegExp(String.raw`${e}(?${Ee})${da}\s+interface\b`,"u"),kind:"interface",exported:Mn},{re:new RegExp(String.raw`${e}(?${Ee})${da}\s+`,"u"),kind:"type",exported:Mn}]}function Px(e,t,n){let r=[],o=t.split(/\r?\n/),s=n.split(/\r?\n/);for(let a=0;a{"use strict";I();ut();et();$x=e=>/^\p{Lu}/u.test(e),Mn=e=>$x(e.groups.name),da=String.raw`(?:\[[^\]]*\])?`,Fx=[{re:new RegExp(String.raw`^func\s+\([^)]*\)\s+(?${Ee})\s*\(`,"u"),kind:"method",exported:Mn},{re:new RegExp(String.raw`^func\s+(?${Ee})${da}\s*\(`,"u"),kind:"function",exported:Mn},...Dm("^type\\s+"),{re:new RegExp(String.raw`^const\s+(?(?!_\b)${Ee})`,"u"),kind:"const",exported:Mn},{re:new RegExp(String.raw`^var\s+(?(?!_\b)${Ee})`,"u"),kind:"var",exported:Mn}];Ox=/^(const|var|type)\s*\(\s*$/,Nx={const:[{re:new RegExp(String.raw`^\s+(?(?!_\b)${Ee})\b`,"u"),kind:"const",exported:Mn}],var:[{re:new RegExp(String.raw`^\s+(?(?!_\b)${Ee})\b`,"u"),kind:"var",exported:Mn}],type:Dm("^\\s+")};jm={lang:"go",exts:[".go"],lexis:{mask:e=>Ze(e,{squote:"char",backtick:!0}),comment:/^\s*\/\//,block:!0},extract(e,t,n){let r=xe(e,t,"go",Fx,n),o=n===void 0?[]:Px(e,t,n);return o.length?[...r,...o].sort((s,a)=>s.line-a.line):r}}});var Lx,Bm,Um=H(()=>{"use strict";I();et();Lx=[{re:/^\s*def\s+(?:self\.)?(?[\w?!=]+)/,kind:"method",exported:!0},{re:/^\s*(?public|private|protected|module_function|(?:public|private)_class_method)\s+def\s+(?:self\.)?(?[\w?!=]+)/,kind:"method",exported:e=>/^(public|module_function|public_class_method)$/.test(e.groups.vis)},{re:/^\s*class\s+(?[\w:]+)/,kind:"class",exported:!0},{re:/^\s*module\s+(?[\w:]+)/,kind:"module",exported:!0}],Bm={lang:"ruby",exts:[".rb",".rake"],lexis:{comment:/^\s*#(?![!{])/},extract(e,t){return xe(e,t,"ruby",Lx)}}});var Dx,Hm,zm=H(()=>{"use strict";I();ut();et();Dx=[{re:/^\s*(?:public|protected|private)?\s*(?:abstract\s+|final\s+)?class\s+(?[\w]+)/,kind:"class",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)?\s*interface\s+(?[\w]+)/,kind:"interface",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)?\s*enum\s+(?[\w]+)/,kind:"enum",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)\s+(?:static\s+|final\s+|abstract\s+|synchronized\s+)*[\w<>\[\],.?\s]+\s+(?[\w]+)\s*\(/,kind:"method",exported:(e,t)=>/\bpublic\b/.test(t)}],Hm={lang:"java",exts:[".java"],lexis:{mask:e=>Ze(e,{triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"java",Dx,n)}}});var mi,jx,Gm,qm=H(()=>{"use strict";I();ut();et();mi=(e,t)=>/^\s*pub\b/.test(t),jx=[{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?(?:unsafe\s+)?fn\s+(?[\w]+)/,kind:"function",exported:mi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?struct\s+(?[\w]+)/,kind:"struct",exported:mi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?enum\s+(?[\w]+)/,kind:"enum",exported:mi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?trait\s+(?[\w]+)/,kind:"trait",exported:mi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?type\s+(?[\w]+)/,kind:"type",exported:mi}],Gm={lang:"rust",exts:[".rs"],lexis:{mask:e=>Ze(e,{nested:!0,squote:"char",multiline:!0,raw:"r"}),comment:/^\s*\/\/(?!!)/,block:!0,decoration:/^\s*#\[/},extract(e,t,n){return xe(e,t,"rust",jx,n)}}});var pi,Wx,Vm,Jm=H(()=>{"use strict";I();ut();et();pi=(e,t)=>/\b(public|internal)\b/.test(t),Wx=[{re:/^\s*(?:public|internal|protected|private)?\s*(?:static\s+|sealed\s+|abstract\s+|partial\s+)*(?:class|record)\s+(?\w+)/,kind:"class",exported:pi},{re:/^\s*(?:public|internal|protected|private)?\s*(?:partial\s+)?interface\s+(?\w+)/,kind:"interface",exported:pi},{re:/^\s*(?:public|internal|protected|private)?\s*(?:readonly\s+)?(?:ref\s+)?struct\s+(?\w+)/,kind:"struct",exported:pi},{re:/^\s*(?:public|internal|protected|private)?\s*enum\s+(?\w+)/,kind:"enum",exported:pi},{re:/^\s*(?:public|internal|protected|private)\s+(?:static\s+|virtual\s+|override\s+|async\s+|sealed\s+|abstract\s+|new\s+)*[\w<>\[\],.?]+\s+(?\w+)\s*(?:<[^>]*>)?\s*\(/,kind:"method",exported:pi}],Vm={lang:"csharp",exts:[".cs"],lexis:{mask:e=>Ze(e,{squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*\[/},extract(e,t,n){return xe(e,t,"csharp",Wx,n)}}});var Bx,Km,Xm=H(()=>{"use strict";I();ut();et();Bx=[{re:/^\s*(?:abstract\s+|final\s+)*class\s+(?\w+)/,kind:"class",exported:!0},{re:/^\s*interface\s+(?\w+)/,kind:"interface",exported:!0},{re:/^\s*trait\s+(?\w+)/,kind:"trait",exported:!0},{re:/^\s*enum\s+(?\w+)/,kind:"enum",exported:!0},{re:/^\s*(?:public\s+|protected\s+|private\s+|static\s+|abstract\s+|final\s+)*function\s+(?\w+)\s*\(/,kind:"function",exported:(e,t)=>!/\b(private|protected)\b/.test(t)}],Km={lang:"php",exts:[".php"],lexis:{mask:e=>Ze(e,{hash:!0,squote:"string",multiline:!0}),comment:/^\s*(?:\/\/|#(?!\[))/,block:!0,decoration:/^\s*#\[/},extract(e,t,n){return xe(e,t,"php",Bx,n)}}});var ms,Ux,Hx,ps,kr,zx,Zm,Ym=H(()=>{"use strict";I();ut();et();ms=(e,t)=>!/\b(?:private|fileprivate)\b(?!\s*\(\s*set\s*\))/.test(t),Ux=String.raw`(?:@${Ee}(?:\([^)]*\))?\s+)*`,Hx=String.raw`(?:(?:public|open|internal|private|fileprivate|package|final|static|class|override|mutating|nonmutating|convenience|required|dynamic|lazy|weak|unowned|indirect|nonisolated|isolated|distributed|optional|prefix|postfix|infix|async)(?:\([^)]*\))?\s+)*`,ps=String.raw`^\s*${Ux}${Hx}`,kr=(e,t,n={})=>({re:new RegExp(String.raw`${ps}${e}\s+(?!(?:func|var|let|subscript|init)\b)(?${Ee})`,"u"),kind:t,exported:ms,...n}),zx=[kr("class","class"),kr("struct","struct"),kr("enum","enum"),kr("protocol","protocol"),kr("actor","actor"),{re:new RegExp(String.raw`${ps}extension\s+(?${Ee}(?:\.${Ee})*)`,"u"),kind:"extension",exported:ms},kr("typealias","type"),kr("func","function"),{re:new RegExp(String.raw`${ps}(?init)[?!]?\s*[<(]`,"u"),kind:"constructor",exported:ms},{re:new RegExp(String.raw`${ps}(?deinit)\s*\{`,"u"),kind:"destructor",exported:ms},{re:new RegExp(String.raw`${ps}(?subscript)\s*[<(]`,"u"),kind:"method",exported:ms},{re:new RegExp(String.raw`${ps}(?:let|var)\s+(?${Ee})\s*[:={]`,"u"),kind:"property",exported:ms,scope:"member"}],Zm={lang:"swift",exts:[".swift"],lexis:{mask:e=>Ze(e,{nested:!0,triple:!0,squote:"none",raw:"#"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"swift",zx,n)}}});var qn,Gx,qx,Vn,Qm,Vx,ep,tp=H(()=>{"use strict";I();ut();et();qn=(e,t)=>!/\bprivate\b/.test(t),Gx=String.raw`(?:@[\w.:]+(?:\([^)]*\))?\s+)*`,qx=String.raw`(?:(?:public|internal|private|protected|abstract|sealed|open|final|data|value|inline|inner|override|suspend|operator|infix|tailrec|external|lateinit|expect|actual|const|companion|enum|annotation)\s+)*`,Vn=String.raw`^\s*${Gx}${qx}`,Qm=String.raw`(?:${Ee}(?:<[^()=]*>)?\??\.)*`,Vx=[{re:new RegExp(String.raw`${Vn}enum\s+class\s+(?${Ee})`,"u"),kind:"enum",exported:qn},{re:new RegExp(String.raw`${Vn}annotation\s+class\s+(?${Ee})`,"u"),kind:"annotation",exported:qn},{re:new RegExp(String.raw`${Vn}class\s+(?${Ee})`,"u"),kind:"class",exported:qn},{re:new RegExp(String.raw`${Vn}(?:fun\s+)?interface\s+(?${Ee})`,"u"),kind:"interface",exported:qn},{re:new RegExp(String.raw`${Vn}object\s+(?${Ee})`,"u"),kind:"object",exported:qn},{re:new RegExp(String.raw`${Vn}typealias\s+(?${Ee})`,"u"),kind:"type",exported:qn},{re:new RegExp(String.raw`${Vn}fun\s+(?:<[^>]*(?:>[^>]*)?>\s*)?${Qm}(?${Ee})\s*\(`,"u"),kind:"function",exported:qn},{re:new RegExp(String.raw`${Vn}(?:val|var)\s+(?:<[^>]*>\s*)?${Qm}(?${Ee})\s*(?:[:=]|by\b)`,"u"),kind:"property",exported:qn,scope:"member"}],ep={lang:"kotlin",exts:[".kt",".kts"],lexis:{mask:e=>Ze(e,{nested:!0,triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"kotlin",Vx,n)}}});var Jx,Kx,np,rp=H(()=>{"use strict";I();ut();et();Jx="(?!\\s*(?:if|for|while|switch|return|else|do|sizeof|typedef)\\b)",Kx=[{re:/^\s*(?:class|struct)\s+(?[A-Za-z_]\w+)\s*(?:[:{]|$)/,kind:"class",exported:!0},{re:/^\s*namespace\s+(?[A-Za-z_]\w+)/,kind:"namespace",exported:!0},{re:/^\s*(?:typedef\s+)?(?:struct|enum|union)\s+(?[A-Za-z_]\w+)\s*\{/,kind:"struct",exported:!0},{re:new RegExp(`^${Jx}[A-Za-z_][\\w\\s\\*&<>:,]*?\\b(?[A-Za-z_]\\w+)\\s*\\([^;{]*\\)\\s*(?:const)?\\s*\\{?\\s*$`),kind:"function",exported:!0}],np={lang:"c/cpp",exts:[".c",".h",".cc",".cpp",".cxx",".hpp",".hh"],lexis:{mask:e=>Ze(e,{squote:"char"}),comment:/^\s*\/\//,block:!0},extract(e,t,n){return xe(e,t,e.match(/\.(c|h)$/)?"c":"cpp",Kx,n)}}});var Xx,sp,ip=H(()=>{"use strict";I();et();Xx=[{re:/^\s*local\s+function\s+(?[\w.:]+)\s*\(/,kind:"function",exported:!1},{re:/^\s*function\s+(?[\w.:]+)\s*\(/,kind:"function",exported:!0},{re:/^\s*(?:local\s+)?(?[\w.]+)\s*=\s*function\s*\(/,kind:"function",exported:!0}],sp={lang:"lua",exts:[".lua"],lexis:{comment:/^\s*--/},extract(e,t){return xe(e,t,"lua",Xx).map(n=>{let r=Math.max(n.name.lastIndexOf("."),n.name.lastIndexOf(":"));return r>0&&r{"use strict";I();et();Zx=[{re:/^\s*function\s+(?[\w:-]+)\s*(?:\(\))?\s*\{?/,kind:"function",exported:!0},{re:/^\s*(?[A-Za-z_][\w:-]*)\s*\(\)\s*\{?/,kind:"function",exported:!0}],op={lang:"shell",exts:[".sh",".bash",".zsh",".ksh"],lexis:{comment:/^\s*#(?!!)/},extract(e,t){return xe(e,t,"shell",Zx)}}});var Yx,lp,cp=H(()=>{"use strict";I();et();Yx=[{re:/^\s*defmodule\s+(?[\w.]+)/,kind:"module",exported:!0},{re:/^\s*defp\s+(?[\w?!]+)/,kind:"function",exported:!1},{re:/^\s*def\s+(?[\w?!]+)/,kind:"function",exported:!0},{re:/^\s*defmacrop\s+(?[\w?!]+)/,kind:"macro",exported:!1},{re:/^\s*defmacro\s+(?[\w?!]+)/,kind:"macro",exported:!0},{re:/^\s*defguardp\s+(?[\w?!]+)/,kind:"guard",exported:!1},{re:/^\s*defguard\s+(?[\w?!]+)/,kind:"guard",exported:!0}],lp={lang:"elixir",exts:[".ex",".exs"],lexis:{comment:/^\s*#/,decoration:/^\s*@(?!(?:doc|moduledoc|typedoc)\b)\w+/,docAttr:!0},extract(e,t){return xe(e,t,"elixir",Yx)}}});var Qx,dp,up=H(()=>{"use strict";I();ut();et();Qx=[{re:/^\s*(?:final\s+|sealed\s+|abstract\s+|implicit\s+)*(?:case\s+)?class\s+(?\w+)/,kind:"class",exported:!0},{re:/^\s*(?:sealed\s+)?trait\s+(?\w+)/,kind:"trait",exported:!0},{re:/^\s*(?:case\s+)?object\s+(?\w+)/,kind:"object",exported:!0},{re:/^\s*(?:override\s+|final\s+|private\s+|protected\s+|implicit\s+)*def\s+(?\w+)/,kind:"def",exported:(e,t)=>!/\b(private|protected)\b/.test(t)}],dp={lang:"scala",exts:[".scala",".sc"],lexis:{mask:e=>Ze(e,{nested:!0,triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"scala",Qx,n)}}});function rS(e,t,n,r){let o=[],s=n.split(/\r?\n/),a=t.split(/\r?\n/),l,c=0,d;for(let u=0;uc?p:-1),p!==d||r.has(u+1))continue;let g=nS.exec(f);if(!g||g.groups.type!==l)continue;let h=g.groups.name??l;o.push({name:h,kind:"constructor",file:e,line:u+1,signature:a[u].trim().slice(0,200),exported:!h.startsWith("_")&&!l.startsWith("_"),lang:"dart"})}return o}var nn,fa,ua,fp,mp,eS,tS,nS,pp,gp=H(()=>{"use strict";I();ut();et();nn=e=>!(e.groups?.name??"").startsWith("_"),fa=String.raw`(?:@[\w$.]+(?:\([^)]*\))?\s+)*`,ua=String.raw`(?!(?:return|await|throw|new|else|if|for|while|do|switch|yield|case|const|final|var|late|factory|get|set|is|as|in)\b)[\w$.]+(?:<[^;{}()=]*>)?\??`,fp=String.raw`(?!(?:if|for|while|switch|catch|return|assert|super|this|Function)\b)`,mp=String.raw`\((?:[^()]|\([^()]*\))*(?:\)\s*(?:async\s*\*?|sync\s*\*)?\s*(?:=>|\{|;)|$)`,eS=[{re:/^\s*(?:(?:abstract|base|final|sealed|interface|mixin)\s+)*class\s+(?[\w$]+)/,kind:"class",exported:nn},{re:/^\s*(?:base\s+)?mixin\s+(?[\w$]+)/,kind:"mixin",exported:nn},{re:/^\s*extension\s+(?:type\s+(?:const\s+)?)?(?!on\b)(?[\w$]+)/,kind:"extension",exported:nn},{re:/^\s*enum\s+(?[\w$]+)/,kind:"enum",exported:nn},{re:/^\s*typedef\s+(?[\w$]+)/,kind:"type",exported:nn},{re:new RegExp(String.raw`^\s*${fa}(?:(?:static|external)\s+)*(?:${ua}\s+)?get\s+(?[\w$]+)\s*(?:=>|\{|;|async\b|sync\b)`),kind:"getter",exported:nn},{re:new RegExp(String.raw`^\s*${fa}(?:(?:static|external)\s+)*(?:void\s+)?set\s+(?[\w$]+)\s*\(`),kind:"setter",exported:nn},{re:new RegExp(String.raw`^\s*${fa}(?:(?:static|external)\s+)*${ua}\s+${fp}(?[\w$]+)\s*(?:<[^()]*>)?\s*${mp}`),kind:"function",exported:nn},{re:new RegExp(String.raw`^${fp}(?[\w$]+)\s*(?:<[^()]*>)?\s*${mp}`),kind:"function",exported:nn},{re:new RegExp(String.raw`^(?:const|final)\s+(?:${ua}\s+)?(?[\w$]+)\s*[=;]`),kind:"const",exported:nn},{re:new RegExp(String.raw`^(?:late\s+final|late|var)\s+(?:${ua}\s+)?(?[\w$]+)\s*[=;]`),kind:"var",exported:nn}],tS=/^(?\s*)(?:(?:abstract|base|final|sealed|interface|mixin)\s+)*(?:class|enum|mixin|extension(?:\s+type(?:\s+const)?)?)\s+(?[\w$]+)/,nS=new RegExp(String.raw`^(?\s*)${fa}(?:(?:const|factory|external)\s+)*(?[\w$]+)(?:\.(?[\w$]+))?\s*\(`);pp={lang:"dart",exts:[".dart"],lexis:{mask:e=>Ze(e,{nested:!0,triple:!0,squote:"string"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n=t){let r=xe(e,t,"dart",eS,n),o=rS(e,t,n,new Set(r.map(s=>s.line)));return o.length?[...r,...o].sort((s,a)=>s.line-a.line):r}}});function Hc(e,t,n){let r=Uc.get(t),o;if(!r)o=[];else try{let l=r.lexis,c=l?.mask?.(n);o=r.extract(e,n,c),l&&(o=_m(o,n,l,c))}catch{o=[]}let s=new Set(o.map(l=>l.name)),a=sa(e,n,o).filter(l=>!s.has(l.name));return a.length?[...o,...a]:o}function zc(e){return Uc.get(e)?.lang??tn(e)}var sS,Uc,Er=H(()=>{"use strict";I();et();Nm();Lm();Wm();Um();zm();qm();Jm();Xm();Ym();tp();rp();ip();ap();cp();up();gp();sS=[Om,Pm,jm,Bm,Hm,Gm,Vm,Km,Zm,ep,np,sp,op,lp,dp,pp],Uc=new Map;for(let e of sS)for(let t of e.exts)Uc.set(t,e)});function hp(e,t){let n=e.split("/").pop().toLowerCase();return oS.has(t)||iS.test(n)||aS.test(e)}function dS(e,t){let n=e.split("/").pop().toLowerCase();return lS.has(n)||cS.has(t)}function yp(e){return!uS.has(zc(e))}function Ct(e,t){return yp(t)?"code":hp(e,t)?"doc":dS(e,t)?"config":"other"}var iS,oS,aS,lS,cS,Gc,uS,Jn=H(()=>{"use strict";I();Er();iS=/^(readme|changelog|contributing|history|news|authors|notice|security|code_of_conduct|faq|getting[-_]?started|usage|guide|tutorial)\b/i,oS=new Set([".md",".mdx",".rst",".adoc",".txt"]),aS=/^(docs?|documentation|wiki|guides?|website|site|book)\//i,lS=new Set(["package.json","pnpm-workspace.yaml","tsconfig.json","jsconfig.json","pyproject.toml","setup.py","setup.cfg","requirements.txt","pipfile","go.mod","cargo.toml","gemfile","pom.xml","build.gradle","build.gradle.kts","composer.json","mix.exs","pubspec.yaml","build.sbt","dockerfile","docker-compose.yml","docker-compose.yaml","makefile",".env.example","manifest.json"]),cS=new Set([".json",".yaml",".yml",".toml",".ini",".cfg"]),Gc=new Set([".md",".mdx"]);uS=new Set(["markdown","restructuredtext","text","json","yaml","toml","ini","other","html","css","scss"])});function qc(e){let t="";for(let n=0;nt.some(r=>r.test(n))}function Vc(e){if(!e||e.length===0)return null;let t=e.map(n=>n.split("/").map(r=>r.includes("**")?null:qc(r)));return n=>{let r=n.split("/");return t.some(o=>{for(let s=0;sn.endsWith("/**")&&n.length>3).map(n=>qc(n.slice(0,-3)));return t.length===0?null:n=>t.some(r=>r.test(n))}function bp(e){if(!e||e.length===0)return null;let t=At(e.filter(r=>!r.startsWith("!"))),n=At(e.filter(r=>r.startsWith("!")).map(r=>r.slice(1)));return r=>(!t||t(r))&&!n?.(r)}var gi=H(()=>{"use strict";I();Qe()});function fS(e){let t=e.split(/\r?\n/),n=[],r=null,o=!1,s=!1,a=!0;for(let l of t){if(r){r.test(l)&&(r=null),n.push("");continue}let c=/^\s*(`{3,}|~{3,})/.exec(l);if(c){r=new RegExp(`^\\s*${c[1][0]}{${c[1].length},}\\s*$`),s=!1,a=!1,n.push("");continue}let d=!l.trim(),u=/^(?: {4}|\t)/.test(l);if(s&&(d||u)){n.push("");continue}if(s=!1,u&&a&&!o){s=!0,n.push("");continue}d||(/^ {0,3}(?:[-*+]|\d+[.)])(?:\s|$)/.test(l)?o=!0:a&&!/^\s/.test(l)&&(o=!1)),a=d,n.push(l)}return n.join(` -`)}function mS(e){return!e||e.startsWith("#")||e.startsWith("//")?!0:/^[a-z][a-z0-9+.-]*:/i.test(e)}function wp(e){return e.replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/`([^`]*)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/[#>*_~-]+/g," ").replace(/\s+/g," ").trim()}function pS(e){return/[A-Za-zÀ-ɏ]{3,}/.test(e)}function gS(e){return/^(all notable changes to this project|in the interest of fostering|this project adheres to|we as members and leaders|table of contents)\b/i.test(e)}function yS(e){let t=e.trim();return!!t&&!/^ {4}|^\t/.test(e)&&!/^([-*+]|\d+[.)])(\s|$)/.test(t)&&!/^[>|<]/.test(t)}function bS(e,t){let n=1;for(let r=t;rt?e.slice(t,r):void 0}}}function Jc(e){let t=e,n,r=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(t);if(r){let y=/(^|\n)title:\s*["']?(.+?)["']?\s*(\n|$)/i.exec(r[1]);y&&(n=y[2].trim()),t=t.slice(r[0].length)}let o=fS(t),s=o.split(/\r?\n/),a=[],l=n,c,d=!1,u=(y,b)=>{let w=wp(b);a.push(w),!l&&y===1&&(l=w),!c&&y>=2&&(d=!0)};for(let y=0;y");)y++;continue}if(!c&&!d&&k&&!/^([-*+]|\d+\.)\s/.test(k)&&!k.startsWith("|")&&!k.startsWith("<")){let M=wp(k);M.length>=8&&pS(M)&&!M.endsWith(":")&&!gS(M)&&(c=M.slice(0,200))}}let f=[],m=new Set,p=y=>{let b=y.trim();b=b.replace(/\s+["'(].*$/,"").trim(),b=b.replace(/^<|>$/g,""),!mS(b)&&(m.has(b)||(m.add(b),f.push({kind:"doc-link",spec:b})))},g=/!?\[[^\]]*\]\(/g,h;for(;h=g.exec(o);){let y=bS(o,g.lastIndex);y&&p(y)}let _=/^[^\S\r\n]*\[(?!\^)[^\]]+\]:\s+(\S+)/gm;for(;h=_.exec(o);)p(h[1]);return{title:l,summary:c,headings:a,refs:f}}var hS,_S,Kc=H(()=>{"use strict";I();hS=/^ {0,3}(=+|-+)\s*$/;_S=/^>\s*\[!(?:note|tip|important|warning|caution)\]\s*$/i});function wS(e,t){if(!ma.test(e))return!1;let n=e.trimEnd().length;return n>=[...t.trim()].length||n>=4}function xp(e){return e.replace(/``([^`]+)``/g,"$1").replace(/:[\w:.+-]+:`([^`<]*?)\s*<[^`>]*>`/g,"$1").replace(/:doc:`([^`]*)`/g,(t,n)=>n.slice(n.lastIndexOf("/")+1)).replace(/:[\w:.+-]+:`!?~?([^`]*)`/g,(t,n)=>n.startsWith("~")?n.slice(n.lastIndexOf(".")+1):n).replace(/`([^`<]*?)\s*<[^`>]*>`__?/g,"$1").replace(/`([^`]+)`__?/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/\|([^|\s][^|]*)\|/g,"$1").replace(/\s+/g," ").trim()}function Xc(e,t,n,r){let o=t.trim();if(!o||o==="self"||/[:*?[\]\s]/.test(o))return;if(!o.startsWith("/")){r({kind:"doc-link",spec:o+n});return}let s=e.split("/").length-1;for(let a=0;a<=s;a++)r({kind:"doc-link",spec:"../".repeat(a)+o.slice(1)+n,soft:!0})}function Yc(e,t){let n=t.split(/\r?\n/),r=[],o,s,a=[],l=!1,c=[],d=new Set,u=y=>{let b=`${y.soft?"~":""}${y.spec}`;d.has(b)||(d.add(b),c.push(y))},f=(y,b)=>{let w=a.indexOf(y);w===-1&&(w=a.push(y)-1);let S=xp(b);r.push(S),o||(o=S),w>0&&!s&&(l=!0)},m=y=>!(n[y]??"").trim();for(let y=0;y]+)>\s*$/.exec(R);Xc(e,$?$[1]:R,".rst",u)}else kS.has(k)||p(A)}y=N-1;continue}if(/^\s*\.\.(?:\s|$)/.test(b)){y=g(y);continue}p(b),!s&&!l&&h(y)&&(s=_(y)),/::\s*$/.test(b)&&(y=g(y))}return{title:o,summary:s,headings:r,refs:c};function p(y){for(let b of y.matchAll(SS))Xc(e,b[1]??b[2],".rst",u)}function g(y){let b=Zc(n[y]);for(;y+1b);)y++;return y}function h(y){let b=n[y];return!!b.trim()&&!/^\s/.test(b)&&(y===0||m(y-1))}function _(y){if(/^(?:[-*+•]\s|#\.\s|\d+[.)]\s|\(?[a-z0-9]\)\s|[+=|]|:[^:\s][^:]*:(?:\s|$))/i.test(n[y]))return;let b=[];for(let k=y;k{"use strict";I();ma=/^([!-/:-@[-`{-~])\1+\s*$/;Zc=e=>e.length-e.trimStart().length,xS=/^(\s*)\.\.\s+([\w:-]+)::\s*(.*)$/,SS=/:doc:`(?:[^`<]*<([^`>]+)>|([^`]+))`/g,kS=new Set(["code-block","code","sourcecode","literalinclude","doctest","testcode","testoutput","testsetup","testcleanup","ipython","math","raw","graphviz","productionlist","highlight","jinja"])});function CS(e){return e.lengthSp?!1:MS.test(e)}function AS(e){let t=e.trim();return!t||t.length>Sp||RS.has(t)?!1:Number.isFinite(Number(t))}function ed(e){let t=e,n=/^(?:[rRbBuUfF]{1,2}|@|\$)?(?:#*)?(['"`])/.exec(t);if(n){let r=n[1],o=t.indexOf(r),s=t.lastIndexOf(r),a=t.startsWith(r.repeat(3),o)&&s-o>=5&&t.endsWith(r.repeat(3),s+1)?3:1;s>o&&(t=t.slice(o+a,s+1-a))}return t}var Sp,ES,vS,RS,MS,Kn,pa=H(()=>{"use strict";I();ce();Sp=80,ES=2,vS=256,RS=new Set(["0","1","-1","2","-2"]),MS=/[\p{L}\p{N}]/u;Kn=class{seen=new Set;out=[];get full(){return this.out.length>=vS}add(t,n,r){if(this.full||t==="string"&&!CS(n)||t==="number"&&!AS(n)||t==="regex"&&!n)return;let o=`${t}\0${n}\0${r}`;this.seen.has(o)||(this.seen.add(o),this.out.push({value:n,line:r,kind:t}))}addString(t,n){this.add("string",ed(t),n)}result(){if(this.out.length)return this.out.sort((t,n)=>T(t.value,n.value)||t.line-n.line||T(t.kind,n.kind))}}});function ga(){return"/home"}function kp(){return"/tmp"}function ha(){return typeof navigator<"u"&&navigator?.hardwareConcurrency?navigator.hardwareConcurrency:1}function Ep(){return Array.from({length:ha()},()=>({model:"browser",speed:0,times:{user:0,nice:0,sys:0,idle:0,irq:0}}))}var hi=H(()=>{I()});function ya(e){let t=typeof e=="string"?e:e.href;try{return decodeURIComponent(new URL(t).pathname)}catch{return t}}function vr(e){return new URL(`file://${e.startsWith("/")?"":"/"}${e}`)}var yi=H(()=>{I()});var td={};hc(td,{createRequire:()=>TS,default:()=>$S});var TS,$S,nd=H(()=>{I();TS=()=>{throw new Error("node-only API in the browser build")},$S={}});function gs(e){if(e!==Xn)throw new Error("Illegal constructor")}function bi(e){return!!e&&typeof e.row=="number"&&typeof e.column=="number"}function $p(e){C=e}function hs(e){try{return new FinalizationRegistry(e)}catch(t){console.error("Unsupported FinalizationRegistry:",t);return}}function ld(e,t,n,r){let o=n-t,s=e.textCallback(t,r);if(s){for(t+=s.length;t0)t+=a.length,s+=a;else break}t>n&&(s=s.slice(0,o))}return s??""}function ad(e,t,n,r,o){for(let s=0,a=o.length;s>>0,column:C.getValue(e+ne,"i32")>>>0}}function Op(e,t){Dt(e,t.startPosition),e+=gn,Dt(e,t.endPosition),e+=gn,C.setValue(e,t.startIndex,"i32"),e+=ne,C.setValue(e,t.endIndex,"i32"),e+=ne}function ba(e){let t={};return t.startPosition=Rr(e),e+=gn,t.endPosition=Rr(e),e+=gn,t.startIndex=C.getValue(e,"i32")>>>0,e+=ne,t.endIndex=C.getValue(e,"i32")>>>0,t}function Np(e,t=ee){Dt(t,e.startPosition),t+=gn,Dt(t,e.oldEndPosition),t+=gn,Dt(t,e.newEndPosition),t+=gn,C.setValue(t,e.startIndex,"i32"),t+=ne,C.setValue(t,e.oldEndIndex,"i32"),t+=ne,C.setValue(t,e.newEndIndex,"i32"),t+=ne}function Pp(e){let t=C.getValue(e,"i32"),n=C.getValue(e+=ne,"i32"),r=C.getValue(e+=ne,"i32");return{major_version:t,minor_version:n,patch_version:r}}async function Lp(moduleArg={}){var moduleRtn,Module=moduleArg,ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope<"u",ENVIRONMENT_IS_NODE=typeof F=="object"&&F.versions?.node&&F.type!="renderer";if(ENVIRONMENT_IS_NODE){let{createRequire:e}=await Promise.resolve().then(()=>(nd(),td));var require=e(import.meta.url)}Module.currentQueryProgressCallback=null,Module.currentProgressCallback=null,Module.currentLogCallback=null,Module.currentParseCallback=null;var arguments_=[],thisProgram="./this.program",quit_=D((e,t)=>{throw t},"quit_"),_scriptName=import.meta.url,scriptDirectory="";function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}D(locateFile,"locateFile");var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");_scriptName.startsWith("file:")&&(scriptDirectory=require("path").dirname(require("url").fileURLToPath(_scriptName))+"/"),readBinary=D(e=>{e=isFileURI(e)?new URL(e):e;var t=fs.readFileSync(e);return t},"readBinary"),readAsync=D(async(e,t=!0)=>{e=isFileURI(e)?new URL(e):e;var n=fs.readFileSync(e,t?void 0:"utf8");return n},"readAsync"),F.argv.length>1&&(thisProgram=F.argv[1].replace(/\\/g,"/")),arguments_=F.argv.slice(2),quit_=D((e,t)=>{throw F.exitCode=e,t},"quit_")}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}ENVIRONMENT_IS_WORKER&&(readBinary=D(e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)},"readBinary")),readAsync=D(async e=>{if(isFileURI(e))return new Promise((n,r)=>{var o=new XMLHttpRequest;o.open("GET",e,!0),o.responseType="arraybuffer",o.onload=()=>{if(o.status==200||o.status==0&&o.response){n(o.response);return}r(o.status)},o.onerror=r,o.send(null)});var t=await fetch(e,{credentials:"same-origin"});if(t.ok)return t.arrayBuffer();throw new Error(t.status+" : "+t.url)},"readAsync")}var out=console.log.bind(console),err=console.error.bind(console),dynamicLibraries=[],wasmBinary,ABORT=!1,EXITSTATUS,isFileURI=D(e=>e.startsWith("file://"),"isFileURI"),readyPromiseResolve,readyPromiseReject,wasmMemory,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,HEAP64,HEAPU64,HEAP_DATA_VIEW,runtimeInitialized=!1;function updateMemoryViews(){var e=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e),Module.HEAP64=HEAP64=new BigInt64Array(e),Module.HEAPU64=HEAPU64=new BigUint64Array(e),Module.HEAP_DATA_VIEW=HEAP_DATA_VIEW=new DataView(e),LE_HEAP_UPDATE()}D(updateMemoryViews,"updateMemoryViews");function initMemory(){if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else{var e=Module.INITIAL_MEMORY||33554432;wasmMemory=new WebAssembly.Memory({initial:e/65536,maximum:32768})}updateMemoryViews()}D(initMemory,"initMemory");var __RELOC_FUNCS__=[];function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(onPreRuns)}D(preRun,"preRun");function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),wasmExports.__wasm_call_ctors(),callRuntimeCallbacks(onPostCtors)}D(initRuntime,"initRuntime");function preMain(){}D(preMain,"preMain");function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(onPostRuns)}D(postRun,"postRun");function abort(e){Module.onAbort?.(e),e="Aborted("+e+")",err(e),ABORT=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw readyPromiseReject?.(t),t}D(abort,"abort");var wasmBinaryFile;function findWasmBinary(){return Module.locateFile?locateFile("web-tree-sitter.wasm"):new URL("web-tree-sitter.wasm",import.meta.url).href}D(findWasmBinary,"findWasmBinary");function getBinarySync(e){if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}D(getBinarySync,"getBinarySync");async function getWasmBinary(e){if(!wasmBinary)try{var t=await readAsync(e);return new Uint8Array(t)}catch{}return getBinarySync(e)}D(getWasmBinary,"getWasmBinary");async function instantiateArrayBuffer(e,t){try{var n=await getWasmBinary(e),r=await WebAssembly.instantiate(n,t);return r}catch(o){err(`failed to asynchronously prepare wasm: ${o}`),abort(o)}}D(instantiateArrayBuffer,"instantiateArrayBuffer");async function instantiateAsync(e,t,n){if(!e&&!isFileURI(t)&&!ENVIRONMENT_IS_NODE)try{var r=fetch(t,{credentials:"same-origin"}),o=await WebAssembly.instantiateStreaming(r,n);return o}catch(s){err(`wasm streaming compile failed: ${s}`),err("falling back to ArrayBuffer instantiation")}return instantiateArrayBuffer(t,n)}D(instantiateAsync,"instantiateAsync");function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)}}D(getWasmImports,"getWasmImports");async function createWasm(){function e(s,a){wasmExports=s.exports,wasmExports=relocateExports(wasmExports,1024);var l=getDylinkMetadata(a);return l.neededDynlibs&&(dynamicLibraries=l.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),assignWasmExports(wasmExports),wasmExports}D(e,"receiveInstance");function t(s){return e(s.instance,s.module)}D(t,"receiveInstantiationResult");var n=getWasmImports();if(Module.instantiateWasm)return new Promise((s,a)=>{Module.instantiateWasm(n,(l,c)=>{s(e(l,c))})});wasmBinaryFile??=findWasmBinary();var r=await instantiateAsync(wasmBinary,wasmBinaryFile,n),o=t(r);return o}D(createWasm,"createWasm");class ExitStatus{static{D(this,"ExitStatus")}name="ExitStatus";constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(e,t){var n=GOT[t];return n||(n=GOT[t]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(t)||(n.required=!0),n}},LE_ATOMICS_NATIVE_BYTE_ORDER=[],LE_HEAP_LOAD_F32=D(e=>HEAP_DATA_VIEW.getFloat32(e,!0),"LE_HEAP_LOAD_F32"),LE_HEAP_LOAD_F64=D(e=>HEAP_DATA_VIEW.getFloat64(e,!0),"LE_HEAP_LOAD_F64"),LE_HEAP_LOAD_I16=D(e=>HEAP_DATA_VIEW.getInt16(e,!0),"LE_HEAP_LOAD_I16"),LE_HEAP_LOAD_I32=D(e=>HEAP_DATA_VIEW.getInt32(e,!0),"LE_HEAP_LOAD_I32"),LE_HEAP_LOAD_I64=D(e=>HEAP_DATA_VIEW.getBigInt64(e,!0),"LE_HEAP_LOAD_I64"),LE_HEAP_LOAD_U32=D(e=>HEAP_DATA_VIEW.getUint32(e,!0),"LE_HEAP_LOAD_U32"),LE_HEAP_STORE_F32=D((e,t)=>HEAP_DATA_VIEW.setFloat32(e,t,!0),"LE_HEAP_STORE_F32"),LE_HEAP_STORE_F64=D((e,t)=>HEAP_DATA_VIEW.setFloat64(e,t,!0),"LE_HEAP_STORE_F64"),LE_HEAP_STORE_I16=D((e,t)=>HEAP_DATA_VIEW.setInt16(e,t,!0),"LE_HEAP_STORE_I16"),LE_HEAP_STORE_I32=D((e,t)=>HEAP_DATA_VIEW.setInt32(e,t,!0),"LE_HEAP_STORE_I32"),LE_HEAP_STORE_I64=D((e,t)=>HEAP_DATA_VIEW.setBigInt64(e,t,!0),"LE_HEAP_STORE_I64"),LE_HEAP_STORE_U32=D((e,t)=>HEAP_DATA_VIEW.setUint32(e,t,!0),"LE_HEAP_STORE_U32"),callRuntimeCallbacks=D(e=>{for(;e.length>0;)e.shift()(Module)},"callRuntimeCallbacks"),onPostRuns=[],addOnPostRun=D(e=>onPostRuns.push(e),"addOnPostRun"),onPreRuns=[],addOnPreRun=D(e=>onPreRuns.push(e),"addOnPreRun"),UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder:void 0,findStringEnd=D((e,t,n,r)=>{var o=t+n;if(r)return o;for(;e[t]&&!(t>=o);)++t;return t},"findStringEnd"),UTF8ArrayToString=D((e,t=0,n,r)=>{var o=findStringEnd(e,t,n,r);if(o-t>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,o));for(var s="";t>10,56320|d&1023)}}return s},"UTF8ArrayToString"),getDylinkMetadata=D(e=>{var t=0,n=0;function r(){return e[t++]}D(r,"getU8");function o(){for(var x=0,v=1;;){var P=e[t++];if(x+=(P&127)*v,v*=128,!(P&128))break}return x}D(o,"getLEB");function s(){var x=o();return t+=x,UTF8ArrayToString(e,t-x,x)}D(s,"getString");function a(){for(var x=o(),v=[];x--;)v.push(s());return v}D(a,"getStringList");function l(x,v){if(x)throw new Error(v)}if(D(l,"failIf"),e instanceof WebAssembly.Module){var c=WebAssembly.Module.customSections(e,"dylink.0");l(c.length===0,"need dylink section"),e=new Uint8Array(c[0]),n=e.length}else{var d=new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer),u=d[0]==1836278016||d[0]==6386541;l(!u,"need to see wasm magic number"),l(e[8]!==0,"need the dylink section to be first"),t=9;var f=o();n=t+f;var m=s();l(m!=="dylink.0")}for(var p={neededDynlibs:[],tlsExports:new Set,weakImports:new Set,runtimePaths:[]},g=1,h=2,_=3,y=4,b=5,w=256,S=3,k=1;t>1)*2);case"i32":return LE_HEAP_LOAD_I32((e>>2)*4);case"i64":return LE_HEAP_LOAD_I64((e>>3)*8);case"float":return LE_HEAP_LOAD_F32((e>>2)*4);case"double":return LE_HEAP_LOAD_F64((e>>3)*8);case"*":return LE_HEAP_LOAD_U32((e>>2)*4);default:abort(`invalid type for getValue: ${t}`)}}D(getValue,"getValue");var newDSO=D((e,t,n)=>{var r={refcount:1/0,name:e,exports:n,global:!0};return LDSO.loadedLibsByName[e]=r,t!=null&&(LDSO.loadedLibsByHandle[t]=r),r},"newDSO"),LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=82240,alignMemory=D((e,t)=>Math.ceil(e/t)*t,"alignMemory"),getMemory=D(e=>{if(runtimeInitialized)return _calloc(e,1);var t=___heap_base,n=t+alignMemory(e,16);return ___heap_base=n,GOT.__heap_base.value=n,t},"getMemory"),isInternalSym=D(e=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(e)||e.startsWith("__em_js__"),"isInternalSym"),uleb128EncodeWithLen=D(e=>{let t=e.length;return[t%128|128,t>>7,...e]},"uleb128EncodeWithLen"),wasmTypeCodes={i:127,p:127,j:126,f:125,d:124,e:111},generateTypePack=D(e=>uleb128EncodeWithLen(Array.from(e,t=>{var n=wasmTypeCodes[t];return n})),"generateTypePack"),convertJsFunctionToWasm=D((e,t)=>{var n=Uint8Array.of(0,97,115,109,1,0,0,0,1,...uleb128EncodeWithLen([1,96,...generateTypePack(t.slice(1)),...generateTypePack(t[0]==="v"?"":t[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),r=new WebAssembly.Module(n),o=new WebAssembly.Instance(r,{e:{f:e}}),s=o.exports.f;return s},"convertJsFunctionToWasm"),wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:31,element:"anyfunc"}),getWasmTableEntry=D(e=>{var t=wasmTableMirror[e];return t||(wasmTableMirror[e]=t=wasmTable.get(e)),t},"getWasmTableEntry"),updateTableMap=D((e,t)=>{if(functionsInTableMap)for(var n=e;n(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(e)||0),"getFunctionAddress"),freeTableIndexes=[],getEmptyTableSlot=D(()=>freeTableIndexes.length?freeTableIndexes.pop():wasmTable.grow(1),"getEmptyTableSlot"),setWasmTableEntry=D((e,t)=>{wasmTable.set(e,t),wasmTableMirror[e]=wasmTable.get(e)},"setWasmTableEntry"),addFunction=D((e,t)=>{var n=getFunctionAddress(e);if(n)return n;var r=getEmptyTableSlot();try{setWasmTableEntry(r,e)}catch(s){if(!(s instanceof TypeError))throw s;var o=convertJsFunctionToWasm(e,t);setWasmTableEntry(r,o)}return functionsInTableMap.set(e,r),r},"addFunction"),updateGOT=D((e,t)=>{for(var n in e)if(!isInternalSym(n)){var r=e[n];GOT[n]||=new WebAssembly.Global({value:"i32",mutable:!0}),(t||GOT[n].value==0)&&(typeof r=="function"?GOT[n].value=addFunction(r):typeof r=="number"?GOT[n].value=r:err(`unhandled export type for '${n}': ${typeof r}`))}},"updateGOT"),relocateExports=D((e,t,n)=>{var r={};for(var o in e){var s=e[o];typeof s=="object"&&(s=s.value),typeof s=="number"&&(s+=t),r[o]=s}return updateGOT(r,n),r},"relocateExports"),isSymbolDefined=D(e=>{var t=wasmImports[e];return!(!t||t.stub)},"isSymbolDefined"),dynCall=D((e,t,n=[],r=!1)=>{var o=getWasmTableEntry(t),s=o(...n);function a(l){return l}return D(a,"convert"),s},"dynCall"),stackSave=D(()=>_emscripten_stack_get_current(),"stackSave"),stackRestore=D(e=>__emscripten_stack_restore(e),"stackRestore"),createInvokeFunction=D(e=>(t,...n)=>{var r=stackSave();try{return dynCall(e,t,n)}catch(o){if(stackRestore(r),o!==o+0)throw o;if(_setThrew(1,0),e[0]=="j")return 0n}},"createInvokeFunction"),resolveGlobalSymbol=D((e,t=!1)=>{var n;return isSymbolDefined(e)?n=wasmImports[e]:e.startsWith("invoke_")&&(n=wasmImports[e]=createInvokeFunction(e.split("_")[1])),{sym:n,name:e}},"resolveGlobalSymbol"),onPostCtors=[],addOnPostCtor=D(e=>onPostCtors.push(e),"addOnPostCtor"),UTF8ToString=D((e,t,n)=>e?UTF8ArrayToString(HEAPU8,e,t,n):"","UTF8ToString"),loadWebAssemblyModule=D((binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);function loadModule(){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,LE_HEAP_STORE_U32((handle+12>>2)*4,memoryBase),LE_HEAP_STORE_I32((handle+16>>2)*4,metadata.memorySize),LE_HEAP_STORE_U32((handle+20>>2)*4,tableBase),LE_HEAP_STORE_I32((handle+24>>2)*4,metadata.tableSize)),metadata.tableSize&&wasmTable.grow(metadata.tableSize);var moduleExports;function resolveSymbol(e){var t=resolveGlobalSymbol(e).sym;return!t&&localScope&&(t=localScope[e]),t||(t=moduleExports[e]),t}D(resolveSymbol,"resolveSymbol");var proxyHandler={get(e,t){switch(t){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(t in wasmImports&&!wasmImports[t].stub){var n=wasmImports[t];return n}if(!(t in e)){var r;e[t]=(...o)=>(r||=resolveSymbol(t),r(...o))}return e[t]}},proxy=new Proxy({},proxyHandler);currentModuleWeakSymbols=metadata.weakImports;var info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols();function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf("$"+arity)!=-1;arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(D(addEmAsm,"addEmAsm"),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start ${body};`;moduleExports[name]=eval(func)}D(addEmJs,"addEmJs");for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():addOnPostCtor(init)),moduleExports}if(D(postInstantiation,"postInstantiation"),flags.loadAsync)return(async()=>{var e;return binary instanceof WebAssembly.Module?e=new WebAssembly.Instance(binary,info):{module:binary,instance:e}=await WebAssembly.instantiate(binary,info),postInstantiation(binary,e)})();var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return D(loadModule,"loadModule"),flags={...flags,rpath:{parentLibPath:libName,paths:metadata.runtimePaths}},flags.loadAsync?metadata.neededDynlibs.reduce((e,t)=>e.then(()=>loadDynamicLibrary(t,flags,localScope)),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach(e=>loadDynamicLibrary(e,flags,localScope)),loadModule())},"loadWebAssemblyModule"),mergeLibSymbols=D((e,t)=>{for(var[n,r]of Object.entries(e)){let o=D(a=>{isSymbolDefined(a)||(wasmImports[a]=r)},"setImport");o(n);let s="__main_argc_argv";n=="main"&&o(s),n==s&&o("main")}},"mergeLibSymbols"),asyncLoad=D(async e=>{var t=await readAsync(e);return new Uint8Array(t)},"asyncLoad");function loadDynamicLibrary(e,t={global:!0,nodelete:!0},n,r){var o=LDSO.loadedLibsByName[e];if(o)return t.global?o.global||(o.global=!0,mergeLibSymbols(o.exports,e)):n&&Object.assign(n,o.exports),t.nodelete&&o.refcount!==1/0&&(o.refcount=1/0),o.refcount++,r&&(LDSO.loadedLibsByHandle[r]=o),t.loadAsync?Promise.resolve(!0):!0;o=newDSO(e,r,"loading"),o.refcount=t.nodelete?1/0:1,o.global=t.global;function s(){if(r){var c=LE_HEAP_LOAD_U32((r+28>>2)*4),d=LE_HEAP_LOAD_U32((r+32>>2)*4);if(c&&d){var u=HEAP8.slice(c,c+d);return t.loadAsync?Promise.resolve(u):u}}var f=locateFile(e);if(t.loadAsync)return asyncLoad(f);if(!readBinary)throw new Error(`${f}: file not found, and synchronous loading of external files is not available`);return readBinary(f)}D(s,"loadLibData");function a(){return t.loadAsync?s().then(c=>loadWebAssemblyModule(c,t,e,n,r)):loadWebAssemblyModule(s(),t,e,n,r)}D(a,"getExports");function l(c){o.global?mergeLibSymbols(c,e):n&&Object.assign(n,c),o.exports=c}return D(l,"moduleLoaded"),t.loadAsync?a().then(c=>(l(c),!0)):(l(a()),!0)}D(loadDynamicLibrary,"loadDynamicLibrary");var reportUndefinedSymbols=D(()=>{for(var[e,t]of Object.entries(GOT))if(t.value==0){var n=resolveGlobalSymbol(e,!0).sym;if(!n&&!t.required)continue;if(typeof n=="function")t.value=addFunction(n,n.sig);else if(typeof n=="number")t.value=n;else throw new Error(`bad export type for '${e}': ${typeof n}`)}},"reportUndefinedSymbols"),runDependencies=0,dependenciesFulfilled=null,removeRunDependency=D(e=>{if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),runDependencies==0&&dependenciesFulfilled){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}},"removeRunDependency"),addRunDependency=D(e=>{runDependencies++,Module.monitorRunDependencies?.(runDependencies)},"addRunDependency"),loadDylibs=D(async()=>{if(!dynamicLibraries.length){reportUndefinedSymbols();return}addRunDependency("loadDylibs");for(var e of dynamicLibraries)await loadDynamicLibrary(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0});reportUndefinedSymbols(),removeRunDependency("loadDylibs")},"loadDylibs"),noExitRuntime=!0;function setValue(e,t,n="i8"){switch(n.endsWith("*")&&(n="*"),n){case"i1":HEAP8[e]=t;break;case"i8":HEAP8[e]=t;break;case"i16":LE_HEAP_STORE_I16((e>>1)*2,t);break;case"i32":LE_HEAP_STORE_I32((e>>2)*4,t);break;case"i64":LE_HEAP_STORE_I64((e>>3)*8,BigInt(t));break;case"float":LE_HEAP_STORE_F32((e>>2)*4,t);break;case"double":LE_HEAP_STORE_F64((e>>3)*8,t);break;case"*":LE_HEAP_STORE_U32((e>>2)*4,t);break;default:abort(`invalid type for setValue: ${n}`)}}D(setValue,"setValue");var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_high=82240,___stack_low=16704,___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},82240),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),__abort_js=D(()=>abort(""),"__abort_js");__abort_js.sig="v";var getHeapMax=D(()=>2147483648,"getHeapMax"),growMemory=D(e=>{var t=wasmMemory.buffer.byteLength,n=(e-t+65535)/65536|0;try{return wasmMemory.grow(n),updateMemoryViews(),1}catch{}},"growMemory"),_emscripten_resize_heap=D(e=>{var t=HEAPU8.length;e>>>=0;var n=getHeapMax();if(e>n)return!1;for(var r=1;r<=4;r*=2){var o=t*(1+.2/r);o=Math.min(o,e+100663296);var s=Math.min(n,alignMemory(Math.max(e,o),65536)),a=growMemory(s);if(a)return!0}return!1},"_emscripten_resize_heap");_emscripten_resize_heap.sig="ip";var _fd_close=D(e=>52,"_fd_close");_fd_close.sig="ii";var INT53_MAX=9007199254740992,INT53_MIN=-9007199254740992,bigintToI53Checked=D(e=>eINT53_MAX?NaN:Number(e),"bigintToI53Checked");function _fd_seek(e,t,n,r){return t=bigintToI53Checked(t),70}D(_fd_seek,"_fd_seek"),_fd_seek.sig="iijip";var printCharBuffers=[null,[],[]],printChar=D((e,t)=>{var n=printCharBuffers[e];t===0||t===10?((e===1?out:err)(UTF8ArrayToString(n)),n.length=0):n.push(t)},"printChar"),_fd_write=D((e,t,n,r)=>{for(var o=0,s=0;s>2)*4),l=LE_HEAP_LOAD_U32((t+4>>2)*4);t+=8;for(var c=0;c>2)*4,o),0},"_fd_write");_fd_write.sig="iippp";function _tree_sitter_log_callback(e,t){if(Module.currentLogCallback){let n=UTF8ToString(t);Module.currentLogCallback(n,e!==0)}}D(_tree_sitter_log_callback,"_tree_sitter_log_callback");function _tree_sitter_parse_callback(e,t,n,r,o){let a=Module.currentParseCallback(t,{row:n,column:r});typeof a=="string"?(setValue(o,a.length,"i32"),stringToUTF16(a,e,10240)):setValue(o,0,"i32")}D(_tree_sitter_parse_callback,"_tree_sitter_parse_callback");function _tree_sitter_progress_callback(e,t){return Module.currentProgressCallback?Module.currentProgressCallback({currentOffset:e,hasError:t}):!1}D(_tree_sitter_progress_callback,"_tree_sitter_progress_callback");function _tree_sitter_query_progress_callback(e){return Module.currentQueryProgressCallback?Module.currentQueryProgressCallback({currentOffset:e}):!1}D(_tree_sitter_query_progress_callback,"_tree_sitter_query_progress_callback");var runtimeKeepaliveCounter=0,keepRuntimeAlive=D(()=>noExitRuntime||runtimeKeepaliveCounter>0,"keepRuntimeAlive"),_proc_exit=D(e=>{EXITSTATUS=e,keepRuntimeAlive()||(Module.onExit?.(e),ABORT=!0),quit_(e,new ExitStatus(e))},"_proc_exit");_proc_exit.sig="vi";var exitJS=D((e,t)=>{EXITSTATUS=e,_proc_exit(e)},"exitJS"),handleException=D(e=>{if(e instanceof ExitStatus||e=="unwind")return EXITSTATUS;quit_(1,e)},"handleException"),lengthBytesUTF8=D(e=>{for(var t=0,n=0;n=55296&&r<=57343?(t+=4,++n):t+=3}return t},"lengthBytesUTF8"),stringToUTF8Array=D((e,t,n,r)=>{if(!(r>0))return 0;for(var o=n,s=n+r-1,a=0;a=s)break;t[n++]=l}else if(l<=2047){if(n+1>=s)break;t[n++]=192|l>>6,t[n++]=128|l&63}else if(l<=65535){if(n+2>=s)break;t[n++]=224|l>>12,t[n++]=128|l>>6&63,t[n++]=128|l&63}else{if(n+3>=s)break;t[n++]=240|l>>18,t[n++]=128|l>>12&63,t[n++]=128|l>>6&63,t[n++]=128|l&63,a++}}return t[n]=0,n-o},"stringToUTF8Array"),stringToUTF8=D((e,t,n)=>stringToUTF8Array(e,HEAPU8,t,n),"stringToUTF8"),stackAlloc=D(e=>__emscripten_stack_alloc(e),"stackAlloc"),stringToUTF8OnStack=D(e=>{var t=lengthBytesUTF8(e)+1,n=stackAlloc(t);return stringToUTF8(e,n,t),n},"stringToUTF8OnStack"),AsciiToString=D(e=>{for(var t="";;){var n=HEAPU8[e++];if(!n)return t;t+=String.fromCharCode(n)}},"AsciiToString"),stringToUTF16=D((e,t,n)=>{if(n??=2147483647,n<2)return 0;n-=2;for(var r=t,o=n>1)*2,a),t+=2}return LE_HEAP_STORE_I16((t>>1)*2,0),t-r},"stringToUTF16");LE_ATOMICS_NATIVE_BYTE_ORDER=new Int8Array(new Int16Array([1]).buffer)[0]===1?[(e=>e),(e=>e),void 0,(e=>e)]:[(e=>e),(e=>((e&65280)<<8|(e&255)<<24)>>16),void 0,(e=>e>>24&255|e>>8&65280|(e&65280)<<8|(e&255)<<24)];function LE_HEAP_UPDATE(){HEAPU16.unsigned=(e=>e&65535),HEAPU32.unsigned=(e=>e>>>0)}if(D(LE_HEAP_UPDATE,"LE_HEAP_UPDATE"),initMemory(),Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),Module.print&&(out=Module.print),Module.printErr&&(err=Module.printErr),Module.dynamicLibraries&&(dynamicLibraries=Module.dynamicLibraries),Module.wasmBinary&&(wasmBinary=Module.wasmBinary),Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.shift()();Module.setValue=setValue,Module.getValue=getValue,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8,Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,Module.loadWebAssemblyModule=loadWebAssemblyModule,Module.LE_HEAP_STORE_I64=LE_HEAP_STORE_I64;var ASM_CONSTS={},_malloc,_calloc,_realloc,_free,_ts_range_edit,_memcmp,_ts_language_symbol_count,_ts_language_state_count,_ts_language_abi_version,_ts_language_name,_ts_language_field_count,_ts_language_next_state,_ts_language_symbol_name,_ts_language_symbol_for_name,_strncmp,_ts_language_symbol_type,_ts_language_field_name_for_id,_ts_lookahead_iterator_new,_ts_lookahead_iterator_delete,_ts_lookahead_iterator_reset_state,_ts_lookahead_iterator_reset,_ts_lookahead_iterator_next,_ts_lookahead_iterator_current_symbol,_ts_point_edit,_ts_parser_delete,_ts_parser_reset,_ts_parser_set_language,_ts_parser_set_included_ranges,_ts_query_new,_ts_query_delete,_iswspace,_iswalnum,_ts_query_copy,_ts_query_pattern_count,_ts_query_capture_count,_ts_query_string_count,_ts_query_capture_name_for_id,_ts_query_capture_quantifier_for_id,_ts_query_string_value_for_id,_ts_query_predicates_for_pattern,_ts_query_start_byte_for_pattern,_ts_query_end_byte_for_pattern,_ts_query_is_pattern_rooted,_ts_query_is_pattern_non_local,_ts_query_is_pattern_guaranteed_at_step,_ts_query_disable_capture,_ts_query_disable_pattern,_ts_tree_copy,_ts_tree_delete,_ts_init,_ts_parser_new_wasm,_ts_parser_enable_logger_wasm,_ts_parser_parse_wasm,_ts_parser_included_ranges_wasm,_ts_language_type_is_named_wasm,_ts_language_type_is_visible_wasm,_ts_language_metadata_wasm,_ts_language_supertypes_wasm,_ts_language_subtypes_wasm,_ts_tree_root_node_wasm,_ts_tree_root_node_with_offset_wasm,_ts_tree_edit_wasm,_ts_tree_included_ranges_wasm,_ts_tree_get_changed_ranges_wasm,_ts_tree_cursor_new_wasm,_ts_tree_cursor_copy_wasm,_ts_tree_cursor_delete_wasm,_ts_tree_cursor_reset_wasm,_ts_tree_cursor_reset_to_wasm,_ts_tree_cursor_goto_first_child_wasm,_ts_tree_cursor_goto_last_child_wasm,_ts_tree_cursor_goto_first_child_for_index_wasm,_ts_tree_cursor_goto_first_child_for_position_wasm,_ts_tree_cursor_goto_next_sibling_wasm,_ts_tree_cursor_goto_previous_sibling_wasm,_ts_tree_cursor_goto_descendant_wasm,_ts_tree_cursor_goto_parent_wasm,_ts_tree_cursor_current_node_type_id_wasm,_ts_tree_cursor_current_node_state_id_wasm,_ts_tree_cursor_current_node_is_named_wasm,_ts_tree_cursor_current_node_is_missing_wasm,_ts_tree_cursor_current_node_id_wasm,_ts_tree_cursor_start_position_wasm,_ts_tree_cursor_end_position_wasm,_ts_tree_cursor_start_index_wasm,_ts_tree_cursor_end_index_wasm,_ts_tree_cursor_current_field_id_wasm,_ts_tree_cursor_current_depth_wasm,_ts_tree_cursor_current_descendant_index_wasm,_ts_tree_cursor_current_node_wasm,_ts_node_symbol_wasm,_ts_node_field_name_for_child_wasm,_ts_node_field_name_for_named_child_wasm,_ts_node_children_by_field_id_wasm,_ts_node_first_child_for_byte_wasm,_ts_node_first_named_child_for_byte_wasm,_ts_node_grammar_symbol_wasm,_ts_node_child_count_wasm,_ts_node_named_child_count_wasm,_ts_node_child_wasm,_ts_node_named_child_wasm,_ts_node_child_by_field_id_wasm,_ts_node_next_sibling_wasm,_ts_node_prev_sibling_wasm,_ts_node_next_named_sibling_wasm,_ts_node_prev_named_sibling_wasm,_ts_node_descendant_count_wasm,_ts_node_parent_wasm,_ts_node_child_with_descendant_wasm,_ts_node_descendant_for_index_wasm,_ts_node_named_descendant_for_index_wasm,_ts_node_descendant_for_position_wasm,_ts_node_named_descendant_for_position_wasm,_ts_node_start_point_wasm,_ts_node_end_point_wasm,_ts_node_start_index_wasm,_ts_node_end_index_wasm,_ts_node_to_string_wasm,_ts_node_children_wasm,_ts_node_named_children_wasm,_ts_node_descendants_of_type_wasm,_ts_node_is_named_wasm,_ts_node_has_changes_wasm,_ts_node_has_error_wasm,_ts_node_is_error_wasm,_ts_node_is_missing_wasm,_ts_node_is_extra_wasm,_ts_node_parse_state_wasm,_ts_node_next_parse_state_wasm,_ts_query_matches_wasm,_ts_query_captures_wasm,_memset,_memcpy,_memmove,_iswalpha,_iswblank,_iswdigit,_iswlower,_iswpunct,_iswupper,_iswxdigit,_memchr,_strlen,_strcmp,_strncat,_strncpy,_towlower,_towupper,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,___wasm_apply_data_relocs;function assignWasmExports(e){Module._malloc=_malloc=e.malloc,Module._calloc=_calloc=e.calloc,Module._realloc=_realloc=e.realloc,Module._free=_free=e.free,Module._ts_range_edit=_ts_range_edit=e.ts_range_edit,Module._memcmp=_memcmp=e.memcmp,Module._ts_language_symbol_count=_ts_language_symbol_count=e.ts_language_symbol_count,Module._ts_language_state_count=_ts_language_state_count=e.ts_language_state_count,Module._ts_language_abi_version=_ts_language_abi_version=e.ts_language_abi_version,Module._ts_language_name=_ts_language_name=e.ts_language_name,Module._ts_language_field_count=_ts_language_field_count=e.ts_language_field_count,Module._ts_language_next_state=_ts_language_next_state=e.ts_language_next_state,Module._ts_language_symbol_name=_ts_language_symbol_name=e.ts_language_symbol_name,Module._ts_language_symbol_for_name=_ts_language_symbol_for_name=e.ts_language_symbol_for_name,Module._strncmp=_strncmp=e.strncmp,Module._ts_language_symbol_type=_ts_language_symbol_type=e.ts_language_symbol_type,Module._ts_language_field_name_for_id=_ts_language_field_name_for_id=e.ts_language_field_name_for_id,Module._ts_lookahead_iterator_new=_ts_lookahead_iterator_new=e.ts_lookahead_iterator_new,Module._ts_lookahead_iterator_delete=_ts_lookahead_iterator_delete=e.ts_lookahead_iterator_delete,Module._ts_lookahead_iterator_reset_state=_ts_lookahead_iterator_reset_state=e.ts_lookahead_iterator_reset_state,Module._ts_lookahead_iterator_reset=_ts_lookahead_iterator_reset=e.ts_lookahead_iterator_reset,Module._ts_lookahead_iterator_next=_ts_lookahead_iterator_next=e.ts_lookahead_iterator_next,Module._ts_lookahead_iterator_current_symbol=_ts_lookahead_iterator_current_symbol=e.ts_lookahead_iterator_current_symbol,Module._ts_point_edit=_ts_point_edit=e.ts_point_edit,Module._ts_parser_delete=_ts_parser_delete=e.ts_parser_delete,Module._ts_parser_reset=_ts_parser_reset=e.ts_parser_reset,Module._ts_parser_set_language=_ts_parser_set_language=e.ts_parser_set_language,Module._ts_parser_set_included_ranges=_ts_parser_set_included_ranges=e.ts_parser_set_included_ranges,Module._ts_query_new=_ts_query_new=e.ts_query_new,Module._ts_query_delete=_ts_query_delete=e.ts_query_delete,Module._iswspace=_iswspace=e.iswspace,Module._iswalnum=_iswalnum=e.iswalnum,Module._ts_query_copy=_ts_query_copy=e.ts_query_copy,Module._ts_query_pattern_count=_ts_query_pattern_count=e.ts_query_pattern_count,Module._ts_query_capture_count=_ts_query_capture_count=e.ts_query_capture_count,Module._ts_query_string_count=_ts_query_string_count=e.ts_query_string_count,Module._ts_query_capture_name_for_id=_ts_query_capture_name_for_id=e.ts_query_capture_name_for_id,Module._ts_query_capture_quantifier_for_id=_ts_query_capture_quantifier_for_id=e.ts_query_capture_quantifier_for_id,Module._ts_query_string_value_for_id=_ts_query_string_value_for_id=e.ts_query_string_value_for_id,Module._ts_query_predicates_for_pattern=_ts_query_predicates_for_pattern=e.ts_query_predicates_for_pattern,Module._ts_query_start_byte_for_pattern=_ts_query_start_byte_for_pattern=e.ts_query_start_byte_for_pattern,Module._ts_query_end_byte_for_pattern=_ts_query_end_byte_for_pattern=e.ts_query_end_byte_for_pattern,Module._ts_query_is_pattern_rooted=_ts_query_is_pattern_rooted=e.ts_query_is_pattern_rooted,Module._ts_query_is_pattern_non_local=_ts_query_is_pattern_non_local=e.ts_query_is_pattern_non_local,Module._ts_query_is_pattern_guaranteed_at_step=_ts_query_is_pattern_guaranteed_at_step=e.ts_query_is_pattern_guaranteed_at_step,Module._ts_query_disable_capture=_ts_query_disable_capture=e.ts_query_disable_capture,Module._ts_query_disable_pattern=_ts_query_disable_pattern=e.ts_query_disable_pattern,Module._ts_tree_copy=_ts_tree_copy=e.ts_tree_copy,Module._ts_tree_delete=_ts_tree_delete=e.ts_tree_delete,Module._ts_init=_ts_init=e.ts_init,Module._ts_parser_new_wasm=_ts_parser_new_wasm=e.ts_parser_new_wasm,Module._ts_parser_enable_logger_wasm=_ts_parser_enable_logger_wasm=e.ts_parser_enable_logger_wasm,Module._ts_parser_parse_wasm=_ts_parser_parse_wasm=e.ts_parser_parse_wasm,Module._ts_parser_included_ranges_wasm=_ts_parser_included_ranges_wasm=e.ts_parser_included_ranges_wasm,Module._ts_language_type_is_named_wasm=_ts_language_type_is_named_wasm=e.ts_language_type_is_named_wasm,Module._ts_language_type_is_visible_wasm=_ts_language_type_is_visible_wasm=e.ts_language_type_is_visible_wasm,Module._ts_language_metadata_wasm=_ts_language_metadata_wasm=e.ts_language_metadata_wasm,Module._ts_language_supertypes_wasm=_ts_language_supertypes_wasm=e.ts_language_supertypes_wasm,Module._ts_language_subtypes_wasm=_ts_language_subtypes_wasm=e.ts_language_subtypes_wasm,Module._ts_tree_root_node_wasm=_ts_tree_root_node_wasm=e.ts_tree_root_node_wasm,Module._ts_tree_root_node_with_offset_wasm=_ts_tree_root_node_with_offset_wasm=e.ts_tree_root_node_with_offset_wasm,Module._ts_tree_edit_wasm=_ts_tree_edit_wasm=e.ts_tree_edit_wasm,Module._ts_tree_included_ranges_wasm=_ts_tree_included_ranges_wasm=e.ts_tree_included_ranges_wasm,Module._ts_tree_get_changed_ranges_wasm=_ts_tree_get_changed_ranges_wasm=e.ts_tree_get_changed_ranges_wasm,Module._ts_tree_cursor_new_wasm=_ts_tree_cursor_new_wasm=e.ts_tree_cursor_new_wasm,Module._ts_tree_cursor_copy_wasm=_ts_tree_cursor_copy_wasm=e.ts_tree_cursor_copy_wasm,Module._ts_tree_cursor_delete_wasm=_ts_tree_cursor_delete_wasm=e.ts_tree_cursor_delete_wasm,Module._ts_tree_cursor_reset_wasm=_ts_tree_cursor_reset_wasm=e.ts_tree_cursor_reset_wasm,Module._ts_tree_cursor_reset_to_wasm=_ts_tree_cursor_reset_to_wasm=e.ts_tree_cursor_reset_to_wasm,Module._ts_tree_cursor_goto_first_child_wasm=_ts_tree_cursor_goto_first_child_wasm=e.ts_tree_cursor_goto_first_child_wasm,Module._ts_tree_cursor_goto_last_child_wasm=_ts_tree_cursor_goto_last_child_wasm=e.ts_tree_cursor_goto_last_child_wasm,Module._ts_tree_cursor_goto_first_child_for_index_wasm=_ts_tree_cursor_goto_first_child_for_index_wasm=e.ts_tree_cursor_goto_first_child_for_index_wasm,Module._ts_tree_cursor_goto_first_child_for_position_wasm=_ts_tree_cursor_goto_first_child_for_position_wasm=e.ts_tree_cursor_goto_first_child_for_position_wasm,Module._ts_tree_cursor_goto_next_sibling_wasm=_ts_tree_cursor_goto_next_sibling_wasm=e.ts_tree_cursor_goto_next_sibling_wasm,Module._ts_tree_cursor_goto_previous_sibling_wasm=_ts_tree_cursor_goto_previous_sibling_wasm=e.ts_tree_cursor_goto_previous_sibling_wasm,Module._ts_tree_cursor_goto_descendant_wasm=_ts_tree_cursor_goto_descendant_wasm=e.ts_tree_cursor_goto_descendant_wasm,Module._ts_tree_cursor_goto_parent_wasm=_ts_tree_cursor_goto_parent_wasm=e.ts_tree_cursor_goto_parent_wasm,Module._ts_tree_cursor_current_node_type_id_wasm=_ts_tree_cursor_current_node_type_id_wasm=e.ts_tree_cursor_current_node_type_id_wasm,Module._ts_tree_cursor_current_node_state_id_wasm=_ts_tree_cursor_current_node_state_id_wasm=e.ts_tree_cursor_current_node_state_id_wasm,Module._ts_tree_cursor_current_node_is_named_wasm=_ts_tree_cursor_current_node_is_named_wasm=e.ts_tree_cursor_current_node_is_named_wasm,Module._ts_tree_cursor_current_node_is_missing_wasm=_ts_tree_cursor_current_node_is_missing_wasm=e.ts_tree_cursor_current_node_is_missing_wasm,Module._ts_tree_cursor_current_node_id_wasm=_ts_tree_cursor_current_node_id_wasm=e.ts_tree_cursor_current_node_id_wasm,Module._ts_tree_cursor_start_position_wasm=_ts_tree_cursor_start_position_wasm=e.ts_tree_cursor_start_position_wasm,Module._ts_tree_cursor_end_position_wasm=_ts_tree_cursor_end_position_wasm=e.ts_tree_cursor_end_position_wasm,Module._ts_tree_cursor_start_index_wasm=_ts_tree_cursor_start_index_wasm=e.ts_tree_cursor_start_index_wasm,Module._ts_tree_cursor_end_index_wasm=_ts_tree_cursor_end_index_wasm=e.ts_tree_cursor_end_index_wasm,Module._ts_tree_cursor_current_field_id_wasm=_ts_tree_cursor_current_field_id_wasm=e.ts_tree_cursor_current_field_id_wasm,Module._ts_tree_cursor_current_depth_wasm=_ts_tree_cursor_current_depth_wasm=e.ts_tree_cursor_current_depth_wasm,Module._ts_tree_cursor_current_descendant_index_wasm=_ts_tree_cursor_current_descendant_index_wasm=e.ts_tree_cursor_current_descendant_index_wasm,Module._ts_tree_cursor_current_node_wasm=_ts_tree_cursor_current_node_wasm=e.ts_tree_cursor_current_node_wasm,Module._ts_node_symbol_wasm=_ts_node_symbol_wasm=e.ts_node_symbol_wasm,Module._ts_node_field_name_for_child_wasm=_ts_node_field_name_for_child_wasm=e.ts_node_field_name_for_child_wasm,Module._ts_node_field_name_for_named_child_wasm=_ts_node_field_name_for_named_child_wasm=e.ts_node_field_name_for_named_child_wasm,Module._ts_node_children_by_field_id_wasm=_ts_node_children_by_field_id_wasm=e.ts_node_children_by_field_id_wasm,Module._ts_node_first_child_for_byte_wasm=_ts_node_first_child_for_byte_wasm=e.ts_node_first_child_for_byte_wasm,Module._ts_node_first_named_child_for_byte_wasm=_ts_node_first_named_child_for_byte_wasm=e.ts_node_first_named_child_for_byte_wasm,Module._ts_node_grammar_symbol_wasm=_ts_node_grammar_symbol_wasm=e.ts_node_grammar_symbol_wasm,Module._ts_node_child_count_wasm=_ts_node_child_count_wasm=e.ts_node_child_count_wasm,Module._ts_node_named_child_count_wasm=_ts_node_named_child_count_wasm=e.ts_node_named_child_count_wasm,Module._ts_node_child_wasm=_ts_node_child_wasm=e.ts_node_child_wasm,Module._ts_node_named_child_wasm=_ts_node_named_child_wasm=e.ts_node_named_child_wasm,Module._ts_node_child_by_field_id_wasm=_ts_node_child_by_field_id_wasm=e.ts_node_child_by_field_id_wasm,Module._ts_node_next_sibling_wasm=_ts_node_next_sibling_wasm=e.ts_node_next_sibling_wasm,Module._ts_node_prev_sibling_wasm=_ts_node_prev_sibling_wasm=e.ts_node_prev_sibling_wasm,Module._ts_node_next_named_sibling_wasm=_ts_node_next_named_sibling_wasm=e.ts_node_next_named_sibling_wasm,Module._ts_node_prev_named_sibling_wasm=_ts_node_prev_named_sibling_wasm=e.ts_node_prev_named_sibling_wasm,Module._ts_node_descendant_count_wasm=_ts_node_descendant_count_wasm=e.ts_node_descendant_count_wasm,Module._ts_node_parent_wasm=_ts_node_parent_wasm=e.ts_node_parent_wasm,Module._ts_node_child_with_descendant_wasm=_ts_node_child_with_descendant_wasm=e.ts_node_child_with_descendant_wasm,Module._ts_node_descendant_for_index_wasm=_ts_node_descendant_for_index_wasm=e.ts_node_descendant_for_index_wasm,Module._ts_node_named_descendant_for_index_wasm=_ts_node_named_descendant_for_index_wasm=e.ts_node_named_descendant_for_index_wasm,Module._ts_node_descendant_for_position_wasm=_ts_node_descendant_for_position_wasm=e.ts_node_descendant_for_position_wasm,Module._ts_node_named_descendant_for_position_wasm=_ts_node_named_descendant_for_position_wasm=e.ts_node_named_descendant_for_position_wasm,Module._ts_node_start_point_wasm=_ts_node_start_point_wasm=e.ts_node_start_point_wasm,Module._ts_node_end_point_wasm=_ts_node_end_point_wasm=e.ts_node_end_point_wasm,Module._ts_node_start_index_wasm=_ts_node_start_index_wasm=e.ts_node_start_index_wasm,Module._ts_node_end_index_wasm=_ts_node_end_index_wasm=e.ts_node_end_index_wasm,Module._ts_node_to_string_wasm=_ts_node_to_string_wasm=e.ts_node_to_string_wasm,Module._ts_node_children_wasm=_ts_node_children_wasm=e.ts_node_children_wasm,Module._ts_node_named_children_wasm=_ts_node_named_children_wasm=e.ts_node_named_children_wasm,Module._ts_node_descendants_of_type_wasm=_ts_node_descendants_of_type_wasm=e.ts_node_descendants_of_type_wasm,Module._ts_node_is_named_wasm=_ts_node_is_named_wasm=e.ts_node_is_named_wasm,Module._ts_node_has_changes_wasm=_ts_node_has_changes_wasm=e.ts_node_has_changes_wasm,Module._ts_node_has_error_wasm=_ts_node_has_error_wasm=e.ts_node_has_error_wasm,Module._ts_node_is_error_wasm=_ts_node_is_error_wasm=e.ts_node_is_error_wasm,Module._ts_node_is_missing_wasm=_ts_node_is_missing_wasm=e.ts_node_is_missing_wasm,Module._ts_node_is_extra_wasm=_ts_node_is_extra_wasm=e.ts_node_is_extra_wasm,Module._ts_node_parse_state_wasm=_ts_node_parse_state_wasm=e.ts_node_parse_state_wasm,Module._ts_node_next_parse_state_wasm=_ts_node_next_parse_state_wasm=e.ts_node_next_parse_state_wasm,Module._ts_query_matches_wasm=_ts_query_matches_wasm=e.ts_query_matches_wasm,Module._ts_query_captures_wasm=_ts_query_captures_wasm=e.ts_query_captures_wasm,Module._memset=_memset=e.memset,Module._memcpy=_memcpy=e.memcpy,Module._memmove=_memmove=e.memmove,Module._iswalpha=_iswalpha=e.iswalpha,Module._iswblank=_iswblank=e.iswblank,Module._iswdigit=_iswdigit=e.iswdigit,Module._iswlower=_iswlower=e.iswlower,Module._iswpunct=_iswpunct=e.iswpunct,Module._iswupper=_iswupper=e.iswupper,Module._iswxdigit=_iswxdigit=e.iswxdigit,Module._memchr=_memchr=e.memchr,Module._strlen=_strlen=e.strlen,Module._strcmp=_strcmp=e.strcmp,Module._strncat=_strncat=e.strncat,Module._strncpy=_strncpy=e.strncpy,Module._towlower=_towlower=e.towlower,Module._towupper=_towupper=e.towupper,_setThrew=e.setThrew,__emscripten_stack_restore=e._emscripten_stack_restore,__emscripten_stack_alloc=e._emscripten_stack_alloc,_emscripten_stack_get_current=e.emscripten_stack_get_current,___wasm_apply_data_relocs=e.__wasm_apply_data_relocs}D(assignWasmExports,"assignWasmExports");var wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_high:___stack_high,__stack_low:___stack_low,__stack_pointer:___stack_pointer,__table_base:___table_base,_abort_js:__abort_js,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback,tree_sitter_progress_callback:_tree_sitter_progress_callback,tree_sitter_query_progress_callback:_tree_sitter_query_progress_callback};function callMain(e=[]){var t=resolveGlobalSymbol("main").sym;if(t){e.unshift(thisProgram);var n=e.length,r=stackAlloc((n+1)*4),o=r;e.forEach(a=>{LE_HEAP_STORE_U32((o>>2)*4,stringToUTF8OnStack(a)),o+=4}),LE_HEAP_STORE_U32((o>>2)*4,0);try{var s=t(n,r);return exitJS(s,!0),s}catch(a){return handleException(a)}}}D(callMain,"callMain");function run(e=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}if(preRun(),runDependencies>0){dependenciesFulfilled=run;return}function t(){if(Module.calledRun=!0,!ABORT){initRuntime(),readyPromiseResolve?.(Module),Module.onRuntimeInitialized?.();var n=Module.noInitialRun||!1;n||callMain(e),postRun()}}D(t,"doRun"),Module.setStatus?(Module.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>Module.setStatus(""),1),t()},1)):t()}D(run,"run");var wasmExports;return wasmExports=await createWasm(),run(),runtimeInitialized?moduleRtn=Module:moduleRtn=new Promise((e,t)=>{readyPromiseResolve=e,readyPromiseReject=t}),moduleRtn}async function jp(e){return Dp??=await jS(e)}function Wp(){return!!Dp}function Up(e,t,n,r){if(e.length!==3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 2, got ${e.length-1}`);if(!Ip(e[1]))throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}"`);let o=n==="eq?"||n==="any-eq?",s=!n.startsWith("any-");if(Ip(e[2])){let a=e[1].name,l=e[2].name;r[t].push(c=>{let d=[],u=[];for(let m of c)m.name===a&&d.push(m.node),m.name===l&&u.push(m.node);let f=D((m,p,g)=>g?m.text===p.text:m.text!==p.text,"compare");return s?d.every(m=>u.some(p=>f(m,p,o))):d.some(m=>u.some(p=>f(m,p,o)))})}else{let a=e[1].name,l=e[2].value,c=D(u=>u.text===l,"matches"),d=D(u=>u.text!==l,"doesNotMatch");r[t].push(u=>{let f=[];for(let p of u)p.name===a&&f.push(p.node);let m=o?c:d;return s?f.every(m):f.some(m)})}}function Hp(e,t,n,r){if(e.length!==3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 2, got ${e.length-1}.`);if(e[1].type!=="capture")throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}".`);if(e[2].type!=="string")throw new Error(`Second argument of \`#${n}\` predicate must be a string. Got @${e[2].name}.`);let o=n==="match?"||n==="any-match?",s=!n.startsWith("any-"),a=e[1].name,l=new RegExp(e[2].value);r[t].push(c=>{let d=[];for(let f of c)f.name===a&&d.push(f.node.text);let u=D((f,m)=>m?l.test(f):!l.test(f),"test");return d.length===0?!o:s?d.every(f=>u(f,o)):d.some(f=>u(f,o))})}function zp(e,t,n,r){if(e.length<2)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected at least 1. Got ${e.length-1}.`);if(e[1].type!=="capture")throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}".`);let o=n==="any-of?",s=e[1].name,a=e.slice(2);if(!a.every(ud))throw new Error(`Arguments to \`#${n}\` predicate must be strings.".`);let l=a.map(c=>c.value);r[t].push(c=>{let d=[];for(let u of c)u.name===s&&d.push(u.node.text);return d.length===0?!o:d.every(u=>l.includes(u))===o})}function Gp(e,t,n,r,o){if(e.length<2||e.length>3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 1 or 2. Got ${e.length-1}.`);if(!e.every(ud))throw new Error(`Arguments to \`#${n}\` predicate must be strings.".`);let s=n==="is?"?r:o;s[t]||(s[t]={}),s[t][e[1].value]=e[2]?.value??null}function qp(e,t,n){if(e.length<2||e.length>3)throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${e.length-1}.`);if(!e.every(ud))throw new Error('Arguments to `#set!` predicate must be strings.".');n[t]||(n[t]={}),n[t][e[1].value]=e[2]?.value??null}function Vp(e,t,n,r,o,s,a,l,c,d,u){if(t===WS){let f=r[n];s.push({type:"capture",name:f})}else if(t===BS)s.push({type:"string",value:o[n]});else if(s.length>0){if(s[0].type!=="string")throw new Error("Predicates must begin with a literal value");let f=s[0].value;switch(f){case"any-not-eq?":case"not-eq?":case"any-eq?":case"eq?":Up(s,e,f,a);break;case"any-not-match?":case"not-match?":case"any-match?":case"match?":Hp(s,e,f,a);break;case"not-any-of?":case"any-of?":zp(s,e,f,a);break;case"is?":case"is-not?":Gp(s,e,f,d,u);break;case"set!":qp(s,e,c);break;default:l[e].push({operator:f,operands:s.slice(1)})}s.length=0}}var FS,D,K$,vp,ne,rd,xt,gn,wi,wt,Xn,C,Rp,OS,Mp,NS,Cp,PS,LS,DS,cd,jS,Dp,ee,sd,id,Ap,dd,WS,BS,US,X$,Ip,ud,rn,_i,Tp,Jp,fd=H(()=>{I();FS=Object.defineProperty,D=(e,t)=>FS(e,"name",{value:t,configurable:!0}),K$=class{static{D(this,"Edit")}startPosition;oldEndPosition;newEndPosition;startIndex;oldEndIndex;newEndIndex;constructor({startIndex:e,oldEndIndex:t,newEndIndex:n,startPosition:r,oldEndPosition:o,newEndPosition:s}){this.startIndex=e>>>0,this.oldEndIndex=t>>>0,this.newEndIndex=n>>>0,this.startPosition=r,this.oldEndPosition=o,this.newEndPosition=s}editPoint(e,t){let n=t,r={...e};if(t>=this.oldEndIndex){n=this.newEndIndex+(t-this.oldEndIndex);let o=e.row;r.row=this.newEndPosition.row+(e.row-this.oldEndPosition.row),r.column=o===this.oldEndPosition.row?this.newEndPosition.column+(e.column-this.oldEndPosition.column):e.column}else t>this.startIndex&&(n=this.newEndIndex,r.row=this.newEndPosition.row,r.column=this.newEndPosition.column);return{point:r,index:n}}editRange(e){let t={startIndex:e.startIndex,startPosition:{...e.startPosition},endIndex:e.endIndex,endPosition:{...e.endPosition}};return e.endIndex>=this.oldEndIndex?e.endIndex!==Number.MAX_SAFE_INTEGER&&(t.endIndex=this.newEndIndex+(e.endIndex-this.oldEndIndex),t.endPosition={row:this.newEndPosition.row+(e.endPosition.row-this.oldEndPosition.row),column:e.endPosition.row===this.oldEndPosition.row?this.newEndPosition.column+(e.endPosition.column-this.oldEndPosition.column):e.endPosition.column},t.endIndexthis.startIndex&&(t.endIndex=this.startIndex,t.endPosition={...this.startPosition}),e.startIndex>=this.oldEndIndex?(t.startIndex=this.newEndIndex+(e.startIndex-this.oldEndIndex),t.startPosition={row:this.newEndPosition.row+(e.startPosition.row-this.oldEndPosition.row),column:e.startPosition.row===this.oldEndPosition.row?this.newEndPosition.column+(e.startPosition.column-this.oldEndPosition.column):e.startPosition.column},t.startIndexthis.startIndex&&(t.startIndex=this.startIndex,t.startPosition={...this.startPosition}),t}},vp=2,ne=4,rd=4*ne,xt=5*ne,gn=2*ne,wi=2*ne+2*gn,wt={row:0,column:0},Xn=Symbol("INTERNAL");D(gs,"assertInternal");D(bi,"isPoint");D($p,"setModule");D(hs,"newFinalizer");Rp=hs(e=>{C._ts_lookahead_iterator_delete(e)}),OS=class{static{D(this,"LookaheadIterator")}0=0;language;positioned=!1;constructor(e,t,n){gs(e),this[0]=t,this.language=n,Rp?.register(this,t,this)}get currentTypeId(){return this.positioned?C._ts_lookahead_iterator_current_symbol(this[0]):null}get currentType(){let e=this.currentTypeId;return e===null?null:this.language.types[e]??C.UTF8ToString(C._ts_language_symbol_name(this.language[0],e))}delete(){Rp?.unregister(this),C._ts_lookahead_iterator_delete(this[0]),this[0]=0}reset(e,t){return C._ts_lookahead_iterator_reset(this[0],e[0],t)?(this.language=e,this.positioned=!1,!0):!1}resetState(e){return C._ts_lookahead_iterator_reset_state(this[0],e)?(this.positioned=!1,!0):!1}[Symbol.iterator](){return{next:D(()=>{this.positioned=!!C._ts_lookahead_iterator_next(this[0]);let e=this.currentType;return e===null?{done:!0,value:""}:{done:!1,value:e}},"next")}}};D(ld,"getText");Mp=hs(e=>{C._ts_tree_delete(e)}),NS=class od{static{D(this,"Tree")}0=0;textCallback;language;constructor(t,n,r,o){gs(t),this[0]=n,this.language=r,this.textCallback=o,Mp?.register(this,n,this)}copy(){let t=C._ts_tree_copy(this[0]);return new od(Xn,t,this.language,this.textCallback)}delete(){Mp?.unregister(this),C._ts_tree_delete(this[0]),this[0]=0}get rootNode(){return C._ts_tree_root_node_wasm(this[0]),We(this)}rootNodeWithOffset(t,n){let r=ee+xt;return C.setValue(r,t,"i32"),Dt(r+ne,n),C._ts_tree_root_node_with_offset_wasm(this[0]),We(this)}edit(t){Np(t),C._ts_tree_edit_wasm(this[0])}walk(){return this.rootNode.walk()}getChangedRanges(t){if(!(t instanceof od))throw new TypeError("Argument must be a Tree");C._ts_tree_get_changed_ranges_wasm(this[0],t[0]);let n=C.getValue(ee,"i32"),r=C.getValue(ee+ne,"i32"),o=new Array(n);if(n>0){let s=r;for(let a=0;a0){let o=n;for(let s=0;s{C._ts_tree_cursor_delete_wasm(e)}),PS=class Fp{static{D(this,"TreeCursor")}0=0;1=0;2=0;3=0;tree;constructor(t,n){gs(t),this.tree=n,It(this),Cp?.register(this,this.tree[0],this)}copy(){let t=new Fp(Xn,this.tree);return C._ts_tree_cursor_copy_wasm(this.tree[0]),It(t),t}delete(){Cp?.unregister(this),Oe(this),C._ts_tree_cursor_delete_wasm(this.tree[0]),this[0]=this[1]=this[2]=0}get currentNode(){return Oe(this),C._ts_tree_cursor_current_node_wasm(this.tree[0]),We(this.tree)}get currentFieldId(){return Oe(this),C._ts_tree_cursor_current_field_id_wasm(this.tree[0])}get currentFieldName(){return this.tree.language.fields[this.currentFieldId]}get currentDepth(){return Oe(this),C._ts_tree_cursor_current_depth_wasm(this.tree[0])}get currentDescendantIndex(){return Oe(this),C._ts_tree_cursor_current_descendant_index_wasm(this.tree[0])}get nodeType(){return this.tree.language.types[this.nodeTypeId]||"ERROR"}get nodeTypeId(){return Oe(this),C._ts_tree_cursor_current_node_type_id_wasm(this.tree[0])}get nodeStateId(){return Oe(this),C._ts_tree_cursor_current_node_state_id_wasm(this.tree[0])}get nodeId(){return Oe(this),C._ts_tree_cursor_current_node_id_wasm(this.tree[0])}get nodeIsNamed(){return Oe(this),C._ts_tree_cursor_current_node_is_named_wasm(this.tree[0])===1}get nodeIsMissing(){return Oe(this),C._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0])===1}get nodeText(){Oe(this);let t=C._ts_tree_cursor_start_index_wasm(this.tree[0]),n=C._ts_tree_cursor_end_index_wasm(this.tree[0]);C._ts_tree_cursor_start_position_wasm(this.tree[0]);let r=Rr(ee);return ld(this.tree,t,n,r)}get startPosition(){return Oe(this),C._ts_tree_cursor_start_position_wasm(this.tree[0]),Rr(ee)}get endPosition(){return Oe(this),C._ts_tree_cursor_end_position_wasm(this.tree[0]),Rr(ee)}get startIndex(){return Oe(this),C._ts_tree_cursor_start_index_wasm(this.tree[0])}get endIndex(){return Oe(this),C._ts_tree_cursor_end_index_wasm(this.tree[0])}gotoFirstChild(){Oe(this);let t=C._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);return It(this),t===1}gotoLastChild(){Oe(this);let t=C._ts_tree_cursor_goto_last_child_wasm(this.tree[0]);return It(this),t===1}gotoParent(){Oe(this);let t=C._ts_tree_cursor_goto_parent_wasm(this.tree[0]);return It(this),t===1}gotoNextSibling(){Oe(this);let t=C._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);return It(this),t===1}gotoPreviousSibling(){Oe(this);let t=C._ts_tree_cursor_goto_previous_sibling_wasm(this.tree[0]);return It(this),t===1}gotoDescendant(t){Oe(this),C._ts_tree_cursor_goto_descendant_wasm(this.tree[0],t),It(this)}gotoFirstChildForIndex(t){Oe(this),C.setValue(ee+rd,t,"i32");let n=C._ts_tree_cursor_goto_first_child_for_index_wasm(this.tree[0]);return It(this),n===1}gotoFirstChildForPosition(t){Oe(this),Dt(ee+rd,t);let n=C._ts_tree_cursor_goto_first_child_for_position_wasm(this.tree[0]);return It(this),n===1}reset(t){fe(t),Oe(this,ee+xt),C._ts_tree_cursor_reset_wasm(this.tree[0]),It(this)}resetTo(t){Oe(this,ee),Oe(t,ee+rd),C._ts_tree_cursor_reset_to_wasm(this.tree[0],t.tree[0]),It(this)}},LS=class{static{D(this,"Node")}0=0;_children;_namedChildren;constructor(e,{id:t,tree:n,startIndex:r,startPosition:o,other:s}){gs(e),this[0]=s,this.id=t,this.tree=n,this.startIndex=r,this.startPosition=o}id;startIndex;startPosition;tree;get typeId(){return fe(this),C._ts_node_symbol_wasm(this.tree[0])}get grammarId(){return fe(this),C._ts_node_grammar_symbol_wasm(this.tree[0])}get type(){return this.tree.language.types[this.typeId]||"ERROR"}get grammarType(){return this.tree.language.types[this.grammarId]||"ERROR"}get isNamed(){return fe(this),C._ts_node_is_named_wasm(this.tree[0])===1}get isExtra(){return fe(this),C._ts_node_is_extra_wasm(this.tree[0])===1}get isError(){return fe(this),C._ts_node_is_error_wasm(this.tree[0])===1}get isMissing(){return fe(this),C._ts_node_is_missing_wasm(this.tree[0])===1}get hasChanges(){return fe(this),C._ts_node_has_changes_wasm(this.tree[0])===1}get hasError(){return fe(this),C._ts_node_has_error_wasm(this.tree[0])===1}get endIndex(){return fe(this),C._ts_node_end_index_wasm(this.tree[0])}get endPosition(){return fe(this),C._ts_node_end_point_wasm(this.tree[0]),Rr(ee)}get text(){return ld(this.tree,this.startIndex,this.endIndex,this.startPosition)}get parseState(){return fe(this),C._ts_node_parse_state_wasm(this.tree[0])}get nextParseState(){return fe(this),C._ts_node_next_parse_state_wasm(this.tree[0])}equals(e){return this.tree===e.tree&&this.id===e.id}child(e){return fe(this),C._ts_node_child_wasm(this.tree[0],e),We(this.tree)}namedChild(e){return fe(this),C._ts_node_named_child_wasm(this.tree[0],e),We(this.tree)}childForFieldId(e){return fe(this),C._ts_node_child_by_field_id_wasm(this.tree[0],e),We(this.tree)}childForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1?this.childForFieldId(t):null}fieldNameForChild(e){fe(this);let t=C._ts_node_field_name_for_child_wasm(this.tree[0],e);return t?C.AsciiToString(t):null}fieldNameForNamedChild(e){fe(this);let t=C._ts_node_field_name_for_named_child_wasm(this.tree[0],e);return t?C.AsciiToString(t):null}childrenForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1&&t!==0?this.childrenForFieldId(t):[]}childrenForFieldId(e){fe(this),C._ts_node_children_by_field_id_wasm(this.tree[0],e);let t=C.getValue(ee,"i32"),n=C.getValue(ee+ne,"i32"),r=new Array(t);if(t>0){let o=n;for(let s=0;s0){let n=t;for(let r=0;r0){let n=t;for(let r=0;r0){let d=l;for(let u=0;u=e.oldEndIndex){this.startIndex=e.newEndIndex+(this.startIndex-e.oldEndIndex);let t,n;this.startPosition.row>e.oldEndPosition.row?(t=this.startPosition.row-e.oldEndPosition.row,n=this.startPosition.column):(t=0,n=this.startPosition.column,this.startPosition.column>=e.oldEndPosition.column&&(n=this.startPosition.column-e.oldEndPosition.column)),t>0?(this.startPosition.row+=t,this.startPosition.column=n):this.startPosition.column+=n}else this.startIndex>e.startIndex&&(this.startIndex=e.newEndIndex,this.startPosition.row=e.newEndPosition.row,this.startPosition.column=e.newEndPosition.column)}toString(){fe(this);let e=C._ts_node_to_string_wasm(this.tree[0]),t=C.AsciiToString(e);return C._free(e),t}};D(ad,"unmarshalCaptures");D(fe,"marshalNode");D(We,"unmarshalNode");D(Oe,"marshalTreeCursor");D(It,"unmarshalTreeCursor");D(Dt,"marshalPoint");D(Rr,"unmarshalPoint");D(Op,"marshalRange");D(ba,"unmarshalRange");D(Np,"marshalEdit");D(Pp,"unmarshalLanguageMetadata");DS=/^tree_sitter_\w+$/,cd=class _a{static{D(this,"Language")}0=0;types;fields;constructor(t,n){gs(t),this[0]=n,this.types=new Array(C._ts_language_symbol_count(this[0]));for(let r=0,o=this.types.length;r0){let o=n;for(let s=0;s0){let s=r;for(let a=0;a(nd(),td))).readFile(t);else{let o=await fetch(t);if(!o.ok){let a=await o.text();throw new Error(`Language.load failed with status ${o.status}. +`,maxBuffer:Rm,timeout:6e5,env:{...O.env,...Rc}});if(m.error){let g=m.error.code;return{ok:!1,error:g==="ENOBUFS"?`git log output exceeds ${Rm/1024/1024} MiB \u2014 bound the window with since`:g==="ENOENT"?"git was not found on PATH":m.error.message}}if(m.status!==0)return{ok:!1,error:Cm(String(m.stderr??""))||`git log exited with ${m.status}`};let p=Ww(m.stdout,r,l.length>0);return Sr.set(d,p),Sr.size>Lw&&Sr.delete(Sr.keys().next().value),{ok:!0,log:p}}function Dw(e,t){if(!t)return{exclude:[],args:[]};let n=Fc(t)?void 0:$e("git",[...wt(e),"rev-parse","--verify","--quiet",`${t}^{commit}`]);if(n?.ok)return{exclude:[`^${n.stdout.trim()}`],args:[]};if(Pw.test(t.trim())){let r=$e("git",[...wt(e),"rev-parse",`--since=${t}`]),o=/^--max-age=(-?\d+)$/m.exec(r.stdout);if(r.ok&&o){let s=BigInt(o[1]);return s<0n||s>=2n**63n?{exclude:[],args:[]}:{exclude:[],args:[`--max-age=${o[1]}`]}}}throw new Error(`since "${t}" is neither a commit (tag, branch, sha) nor a date (2024-01-01, "6 months ago")`)}function jw(e){try{return ie(e,"utf8").split(` +`).map(t=>t.trim()).filter(Boolean).sort($)}catch{return[]}}function Ww(e,t,n){let r=new Map,o=[],s=[],a=[];for(let l=0;ld&&s.length){let u=e.toString("utf8",d,c),f=r.get(u);f===void 0&&(f=o.length,o.push(u),r.set(u,f)),a.push(f)}l=c+1}return s.push(a.length),{prefix:t,paths:o,starts:s,ids:a,shallow:n}}function Wc(e){if(!e.prefix)return e.paths;let t=e.prefix.length;return e.paths.map(n=>n.startsWith(e.prefix)?n.slice(t):void 0)}function en(e,t={}){let n=new Map,r=jc(e,t.since);if(!r.ok)return{churn:n,ok:!1,error:r.error,commits:0};let{log:o}=r,s=Wc(o),a=new Int32Array(o.paths.length).fill(-1),l=0;for(let c=0;c+1{"use strict";I();Yo();Ee();fe();le();et();Tw=7;$w=["-c","core.quotePath=false","-c","color.ui=false","-c","diff.noprefix=false","-c","diff.mnemonicPrefix=false","-c","diff.relative=false","-c","log.showSignature=false","-c","log.follow=false","-c","log.showRoot=true"],wt=e=>["-C",e,...$w],Fc=e=>e.startsWith("-"),$c=e=>e.staged?["--cached"]:[e.mergeBase],ra="(no commits)";Ow={a:7,b:8,t:9,n:10,v:11,f:12,r:13};Rm=1024*1024*1024,Pw=/^(?:\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}(?::\d{2})?)?(?:Z|[+-]\d{2}:?\d{2})?|(?:\d+[ .](?:second|minute|hour|day|week|month|year)s?[ .]*)+(?:ago)?)$/i,Sr=new Map,Lw=4});function Uw(e){return typeof e=="string"?new TextEncoder().encode(e):e}function zw(e,t){if(e.length===1)return e[0];let n=new Uint8Array(t),r=0;for(let o of e)n.set(o,r),r+=o.byteLength;return n}function Am(e){let t=Math.floor(e.byteLength/536870912|0),n=e.byteLength<<3>>>0,r=Math.ceil((e.byteLength+9)/64),o=new Uint8Array(r*64);o.set(e),o[e.byteLength]=128;let s=new DataView(o.buffer);return s.setUint32(o.byteLength-8,t,!1),s.setUint32(o.byteLength-4,n,!1),s}function Bc(e,t){return(e<>>32-t)>>>0}function gn(e,t){return(e>>>t|e<<32-t)>>>0}function Hw(e){let t=Am(e),n=1732584193,r=4023233417,o=2562383102,s=271733878,a=3285377520,l=new Uint32Array(80);for(let u=0;u>>0;h=g,g=p,p=Bc(m,30),m=f,f=x}n=n+f>>>0,r=r+m>>>0,o=o+p>>>0,s=s+g>>>0,a=a+h>>>0}let c=new Uint8Array(20),d=new DataView(c.buffer);return[n,r,o,s,a].forEach((u,f)=>d.setUint32(f*4,u,!1)),c}function qw(e){let t=Am(e),n=1779033703,r=3144134277,o=1013904242,s=2773480762,a=1359893119,l=2600822924,c=528734635,d=1541459225,u=new Uint32Array(64);for(let p=0;p>>3,A=gn(R,17)^gn(R,19)^R>>>10;u[T]=u[T-16]+C+u[T-7]+A>>>0}let g=n,h=r,_=o,y=s,b=a,x=l,k=c,v=d;for(let T=0;T<64;T++){let F=gn(b,6)^gn(b,11)^gn(b,25),R=b&x^~b&k,C=v+F+R+Gw[T]+u[T]>>>0,A=gn(g,2)^gn(g,13)^gn(g,22),S=g&h^g&_^h&_,w=A+S>>>0;v=k,k=x,x=b,b=y+C>>>0,y=_,_=h,h=g,g=C+w>>>0}n=n+g>>>0,r=r+h>>>0,o=o+_>>>0,s=s+y>>>0,a=a+b>>>0,l=l+x>>>0,c=c+k>>>0,d=d+v>>>0}let f=new Uint8Array(32),m=new DataView(f.buffer);return[n,r,o,s,a,l,c,d].forEach((p,g)=>m.setUint32(g*4,p,!1)),f}function Vw(e){let t="";for(let n of e)t+=Mm[n>>4]+Mm[n&15];return t}function Jw(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function gs(e){let t=e.toLowerCase().replace("-","");if(t!=="sha1"&&t!=="sha256")throw new Error(`createHash: unsupported algorithm "${e}" in the browser build (sha1, sha256)`);let n=[],r=0,o={update(s){let a=Uw(s);return n.push(a),r+=a.byteLength,o},digest(s){let a=r===0?new Uint8Array(0):zw(n,r),l=t==="sha1"?Hw(a):qw(a);return s==="hex"?Vw(l):s==="base64"?Jw(l):l}};return o}var Gw,Mm,ia=z(()=>{I();Gw=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);Mm="0123456789abcdef"});function Re(e){return gs("sha1").update(e).digest("hex")}function Kw(e,t=8){return Re(e).slice(0,t)}var xt=z(()=>{"use strict";I();ia()});function Zw(e){return Xw.test(e.trim())}function Qw(e){return Yw.test(e.trim())}function tx(e){return ex.test(e.trim())}function Dt(e){return e.replace(/\*+\/\s*$/,"").replace(/^\s*\/\*+!?/,"").replace(/^\s*\/\/[/!]?/,"").replace(/^\s*--+/,"").replace(/^\s*#+/,"").replace(/^\s*\*+/,"").replace(/^\s*(?:"""|''')/,"").replace(/(?:"""|''')\s*$/,"").replace(/[-=~_]{3,}|\/{3,}|\*{3,}|#{3,}/g," ").trim()}function nx(e){return e.replace(/<\/?[A-Za-z][^>]*>/g," ").replace(/\s+/g," ").trim()}function kr(e,t=rx,n=3){let r=[],o=!1;for(let l of e){let c=l.trim();if(!c){o=!1;continue}if(!o){if(tx(c)){if(r.length)break;o=!0;continue}if(!(Zw(c)||Qw(c))){if(/^@[a-z]/i.test(c))break;r.push(c)}}}let s=nx(r.join(" "));if(s.length|\]=*\]|-\})\s*$/,"")).replace(/^\|(?:\s+|$)/,"").replace(dx,"")}function Uc(e,t){let n=sx.has(e),r=ix.has(e),o=cx.filter(([d])=>d==="/*"||d===""],["--[[","]]"],["{-","-}"],['"""','"""'],["'''","'''"]],dx=/^@(?:file|fileoverview|overview|desc|description)\b\s*/i,ux=/^created by\b.*\bon\s+\d{1,4}[./-]\d{1,2}[./-]\d{1,4}\.?$/i,fx=60,mx=200,px=8});function xe(e,t,n,r,o){let s=[],a=t.split(/\r?\n/),l=o===void 0?a:o.split(/\r?\n/),c=o!==void 0&&r.some(u=>u.scope==="member")?_x(o):void 0,d=new Map;for(let u=0;u{let l=a.doc??wx(o,a.line-1,n),c=a.endLine??s?.endOf(a.line-1,o);return l===void 0&&c===void 0?a:{...a,...c!==void 0?{endLine:c}:{},...l!==void 0?{doc:l}:{}}})}function wx(e,t,n){let r=t-1;for(;r>=0&&n.decoration?.test(e[r]);)r--;if(n.docAttr){let s=xx(e,r);if(s)return kr(s)}let o=[];for(;r>=0;){let s=e[r];if(n.comment.test(s)){o.push(s),r--;continue}if(!n.block||!/\*\/\s*$/.test(s))break;let a=r;for(;a>=0&&!e[a].includes("/*");)a--;if(a<0||!/^\s*\/\*(?!!)/.test(e[a]))break;for(let l=r;l>=a;l--)o.push(e[l]);r=a-1}if(o.length)return kr(o.reverse().map(Dt))}function xx(e,t){if(t<0)return;let n=/^\s*@doc\s+(?:~[sS])?"(.*)"\s*$/.exec(e[t]);if(n)return[n[1]];if(/^\s*"""\s*$/.test(e[t]))for(let r=t-1;r>=0&&t-r<400;r--){if(/^\s*@doc\s+(?:~[sS])?"""\s*$/.test(e[r]))return e.slice(r+1,t);if(/"""/.test(e[r]))return}}function nn(e){return Sx[e]??"other"}function Ex(e){let t=e.length,n="",r=0,o=0;for(;o{if(!a){a=[0];for(let _=0;_>>1;a[_]<=p?g=_+1:h=_}return g},c=new Map;for(let p of n)c.has(p.name)||c.set(p.name,p);let d=Ex(t),u=/export\s*\{([\s\S]*?)\}\s*(?:from\s*['"]([^'"]+)['"])?\s*;?/g,f;for(;(f=u.exec(d))&&o.length{"use strict";I();ai();ve=String.raw`[\p{L}\p{Nl}_$][\p{L}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}$\u200c\u200d]*`,hx=new Set(["class","struct","enum","interface","protocol","actor","extension","object","trait","mixin"]);Hc=class{constructor(t){this.masked=t;let n=[];for(let r=0;r>>1;this.lineStarts[o]<=t?n=o+1:r=o}return n-1}endOf(t,n){let r=this.masked,o=/^\s*/.exec(n[t])[0],s=0,a=t;for(let l=this.lineStarts[t];l60||a>=this.lineStarts.length)return;let d=r.slice(this.lineStarts[a],this.lineStarts[a+1]??r.length),u=/^\s*/.exec(d)[0],f=d.charAt(u.length);if(s===0&&f&&!"{)]".includes(f)&&u.length<=o.length)return;continue}if(c===40||c===91)s++;else if(c===41||c===93){if(--s<0)return}else{if(s===0&&c===59)return;if(s===0&&c===123){let d=this.closeOf.get(l);if(d===void 0)return;let u=this.lineOf(d),f=r.slice(d+1,this.lineStarts[u+1]??r.length);if(u===this.lineOf(l)){if(u===t&&/^[\s;,)\]}]*$/.test(f))return this.continued(u)?void 0:u+1;l=d;continue}return f.includes("{")?void 0:n[u].startsWith(o+"}")&&!this.continued(u)?u+1:void 0}}}}continued(t){for(let n=t+1;n)/.test(r)}return!1}},Sx={".ts":"typescript",".tsx":"typescript",".mts":"typescript",".cts":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".go":"go",".rb":"ruby",".rake":"ruby",".java":"java",".rs":"rust",".c":"c",".h":"c",".cc":"cpp",".cpp":"cpp",".cxx":"cpp",".hpp":"cpp",".cs":"csharp",".php":"php",".swift":"swift",".kt":"kotlin",".kts":"kotlin",".scala":"scala",".sc":"scala",".clj":"clojure",".ex":"elixir",".exs":"elixir",".erl":"erlang",".hs":"haskell",".dart":"dart",".lua":"lua",".sh":"shell",".bash":"shell",".zsh":"shell",".ksh":"shell",".fish":"shell",".hh":"cpp",".m":"objective-c",".mm":"objective-c",".sql":"sql",".graphql":"graphql",".gql":"graphql",".proto":"protobuf",".md":"markdown",".mdx":"markdown",".rst":"restructuredtext",".txt":"text",".json":"json",".yaml":"yaml",".yml":"yaml",".toml":"toml",".ini":"ini",".html":"html",".css":"css",".scss":"scss",".vue":"vue",".svelte":"svelte",".astro":"astro",".zig":"zig",".hcl":"hcl",".tf":"terraform",".tfvars":"terraform",".sol":"solidity"};kx=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]);zc=47,Im=42,Tm=10,vx=34,Rx=39,Cx=96,Mx=92,oa=400});function Vc(e,t=[]){if(t.length>=ca)return t;let n=e.indexOf("{");if(n===-1){let c=e.replace(/\s+as\s+\w+\s*$/,"").replace(/::\s*\*\s*$/,"").replace(/^::/,"").trim();return c&&t.push(c),t}let r=e.slice(0,n),o=0,s=-1;for(let c=n;c|\bas\b/).map(u=>u.trim());if(!a||l==="_")continue;let c=a==="_"||a==="*"||/^given\b/.test(a),d=Jc(c?r+".*":r+"."+a);d&&t.length=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95||e===Hm||e>127}function Er(e){let t=e.length,n=new fi(e),r=[],o=0,s=c=>{let d=c;for(;d{let d=c-1;for(;d>=0&&n.codeAt(d)<=zm;)d--;if(d<0)return!0;let u=n.codeAt(d);if(jx.has(u))return!0;if(!Pm(u))return!1;let f=d;for(;f>0&&Pm(e.charCodeAt(f-1));)f--;return Wx.has(e.slice(f,d+1))},l=0;for(;l0&&e.charCodeAt(l-1)===Kc;)l--;let c=o-l;if(t.raw==="r"?/[rR]$/.test(e.slice(Math.max(0,l-2),l)):c>0){let u=e.indexOf('"'+"#".repeat(c),o+1),f=u===-1?n:u;r.blank(o+1,f),o=u===-1?n:u+1+c;continue}}let a=s===li||s===da&&t.squote==="string";if(a||s===ui&&t.backtick){let l=a&&t.triple&&e.charCodeAt(o+1)===s&&e.charCodeAt(o+2)===s,c=o+(l?3:1),d=c;if(l){let f=e.indexOf(s===li?'"""':"'''",c);d=f===-1?n:f}else for(;d{n.get(s)===!0&&n.delete(s),n.set(s,!1)},o=s=>{n.has(s)||n.set(s,!0)};if(Ax.has(e)){if(!t.includes("import")&&!t.includes("require")&&!t.includes("from"))return[];let s=Er(t);for(let a of[Ux,zx,Hx,Gx]){a.lastIndex=0;for(let l;l=a.exec(s);){let[c,d]=l.indices[1];r(t.slice(c,d))}}}else if(Ix.has(e)){if(!t.includes("import"))return[];let s=Bx(t);Dm.lastIndex=0;for(let a;a=Dm.exec(s);){let l=a[1];if(l!==void 0){if(r(l),!l||l==="__future__")continue;let c=a[2].startsWith("(")?a[2].slice(1,-1):a[2].replace(/\\\r?\n/g," ");for(let d of c.split(",")){let u=d.trim().split(/\s+as\s+/)[0].trim();/^[A-Za-z_]\w*$/.test(u)&&o(Jx(l,u))}continue}for(let c of a[3].split(",")){let d=c.trim().split(/\s+as\s+/)[0].trim();d&&/^[\w.]+$/.test(d)&&r(d)}}}else if(e===".go"){let s=t.split(/\r?\n/),a=!1;for(let l of s){let c=l.trim();if(a){if(c===")"){a=!1;continue}let u=/"([^"]+)"/.exec(c);u&&r(u[1]);continue}if(/^import\s*\($/.test(c)){a=!0;continue}let d=/^import\s+(?:[\w.]+\s+)?"([^"]+)"/.exec(c);d&&r(d[1])}}else if(e===".rs"){let s,a=new Set,l=/#\[\s*path\s*=\s*"([^"]+)"\s*\]\s*(?:(?:#\[[^\]]*\]|\/\/[^\n]*)\s*)*(?:pub(?:\([^)]*\))?\s+)?mod\s+[A-Za-z_]\w*\s*;/g;for(;s=l.exec(t);)r(`mod-path ${s[1]}`),a.add(s.index+s[0].length);let c=/^[^\S\r\n]*(?:pub(?:\([^)]*\))?\s+)?mod\s+([A-Za-z_]\w*)\s*;/gm;for(;s=c.exec(t);)a.has(s.index+s[0].length)||r(`mod ${s[1]}`);let d=/^[^\S\r\n]*(?:pub(?:\([^)]*\))?\s+)?use\s+([^;]+);/gm;for(;s=d.exec(t);)for(let u of Vc(s[1].trim()))r(u)}else if(e===".java"){let s,a=/^[^\S\r\n]*import\s+(?:static\s+)?([\w.]+(?:\.\*)?)\s*;/gm;for(;s=a.exec(t);)r(s[1])}else if(e===".rb"||e===".rake"){let s,a=/^[^\S\r\n]*require_relative\s+['"]([^'"]+)['"]/gm;for(;s=a.exec(t);)r(qc(s[1]));let l=/^[^\S\r\n]*require\s+['"]([^'"]+)['"]/gm;for(;s=l.exec(t);)r(s[1])}else if(Tx.has(e)){let s,a=/^[^\S\r\n]*#\s*include\s*"([^"]+)"/gm;for(;s=a.exec(t);)r(s[1])}else if(e===".php"){let s,a=qx.exec(t)?.index??1/0;for(jm.lastIndex=0;s=jm.exec(t);){if(s[1]&&s.index>a)continue;let l=s[2].trim().replace(/^(?:function|const)\s+/,""),c=/^\\?([\w\\]*?)\\?\s*\{([^}]*)\}$/.exec(l),d=c?c[2].split(",").map(u=>`${c[1]}\\${u.trim()}`):l.split(",");for(let u of d){let f=u.trim().replace(/\\(?:function|const)\s+/,"\\").replace(/\s+as\s+\w+$/,"").replace(/^\\/,"");Vx.test(f)&&r(f)}}for(Wm.lastIndex=0;s=Wm.exec(t);){let{here:l,up:c,levels:d,path:u}=s.groups;r(l?qc(u.replace(/^\/+/,"")):c?"../".repeat(Number(d??1))+u.replace(/^\/+/,""):qc(u))}}else if(e===".cs"){let s,a=/^[^\S\r\n]*(?:global\s+)?using\s+(?:static\s+)?([A-Za-z_][\w.]*)\s*;/gm;for(;s=a.exec(t);)r(s[1])}else if(Bm.has(e)){let s,a=/^[ \t]*import[ \t]+([\w.`*]+)/gm;for(;s=a.exec(t);){let l=Jc(s[1]);l&&r(l)}}else if(Um.has(e)){let s,a=/^[ \t]*import[ \t]+((?:[^\n;{]|\{[^}]*\})+)/gm;for(;s=a.exec(t);){let l=[],c=0,d="";for(let u of s[1].replace(/\/\/.*$/gm,""))u==="{"?c++:u==="}"&&c--,u===","&&c===0?(Fm(d,l),d=""):d+=u;Fm(d,l);for(let u of l)r(u)}}else if(e===".dart"){let s,a=/^[ \t]*(?:import|export|part)[ \t]+(?:'([^'\n]+)'|"([^"\n]+)")/gm;for(;s=a.exec(t);)r(s[1]??s[2])}else if(e===".lua"){let s,a=/\brequire\s*\(?\s*['"]([\w-]+(?:[./][\w-]+)*)['"]/g;for(;s=a.exec(t);)r(s[1])}else if($x.has(e)){let s,a=/(?:^|[;&|]|\b(?:then|do|else)\b)[ \t]*(?:source|\.)[ \t]+([^\n]+)/gm;for(;s=a.exec(t);){let l=Ox(s[1]);l&&r(l)}}else if(e===".ex"||e===".exs"){let s,a=/^[ \t]*(?:alias|import|require|use)[ \t]+([A-Z]\w*(?:\.[A-Z]\w*)*)(?:\.\{([^}]*)\})?/gm;for(;s=a.exec(t);){if(s[2]===void 0){r(s[1]);continue}let l=0;for(let c of s[2].split(",")){let d=c.trim();/^[A-Z]\w*(?:\.[A-Z]\w*)*$/.test(d)&&l++a?{kind:"import",spec:s,soft:!0}:{kind:"import",spec:s})}function ua(e,t){if(e===".java")return/^\s*package\s+([\w.]+)\s*;/m.exec(t)?.[1];if(e===".cs")return/^\s*(?:file-scoped\s+)?namespace\s+([\w.]+)/m.exec(t)?.[1];if(Bm.has(e)){let n=/^[ \t]*package[ \t]+([\w.`]+)/m.exec(t);return n?n[1].replace(/`/g,""):void 0}if(Um.has(e))return Nx(t)}var Ax,Ix,Tx,Bm,Um,$x,ca,Fx,fi,Om,mi,zm,Kc,Hm,da,li,ci,Rn,Px,di,Lx,ui,Nm,Dx,jx,Wx,Lm,la,Gc,Ux,zx,Hx,Gx,Dm,qx,jm,Vx,Wm,ft=z(()=>{"use strict";I();Ax=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]),Ix=new Set([".py",".pyi"]),Tx=new Set([".c",".h",".cc",".cpp",".cxx",".hpp",".hh"]),Bm=new Set([".kt",".kts"]),Um=new Set([".scala",".sc"]),$x=new Set([".sh",".bash",".zsh",".ksh",".fish"]),ca=16;Fx=/^(["']?)(?:\$\(\s*dirname\s+(["']?)\$(?:0|\{BASH_SOURCE(?:\[0\])?\}|BASH_SOURCE)\2\s*\)|\$\{(?:BASH_SOURCE(?:\[0\])?|0)%\/\*\})\//;fi=class{constructor(t){this.src=t}src;codes;blank(t,n){if(n<=t)return;let r=this.codes;if(!r){r=this.codes=new Uint16Array(this.src.length);for(let o=0;o~^"].map(e=>e.charCodeAt(0))),Wx=new Set(["return","typeof","instanceof","in","of","new","delete","void","throw","case","do","else","yield","await"]),Lm=/\bimport\(\s*['"][^'"\n]*['"]\s*[,)]|@import\b[^'"@]{0,2048}?\bfrom\s*['"][^'"\n]*['"]/g;la=/'(?:\\(?:u\{[0-9A-Fa-f]{1,6}\}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|.)|[^\\'\n])'/y;Gc="[\\w$\\u00a0-\\uffff]+",Ux=new RegExp(`(?:^|[^\\w$.])(?:import|export)\\b\\s*(?:(?:type|typeof|defer|source)\\s+)?(?:${Gc}\\s*,\\s*)?(?:${Gc}|\\*\\s*(?:as\\s+${Gc})?|\\{[^{}]*\\})\\s*from\\s*['"]([^'"]+)['"]`,"dg"),zx=/(?:^|[\n;])[ \t]*import\s*['"]([^'"]+)['"]/dg,Hx=/\brequire\(\s*['"]([^'"]+)['"]\s*\)/dg,Gx=/\bimport\(\s*['"]([^'"]+)['"]\s*[,)]/dg,Dm=/(?:^|;)[ \t]*(?:from[ \t]+(\.*[\w.]*)[ \t]+import\b[ \t]*(\([^)]*\)|(?:\\\r?\n|[^\n;])*)|import[ \t]+([^\n;]*))/gm,qx=/^[ \t]*(?:(?:abstract|final|readonly)[ \t]+)*(?:class|interface|trait|enum)[ \t]+[A-Za-z_]/m,jm=/^([ \t]*)use\s+([^;]*);/gm,Vx=/^[A-Za-z_][\w\\]*$/,Wm=/\b(?:require|include)(?:_once)?\s*\(?\s*(?:(?__DIR__|dirname\(\s*__FILE__\s*\))\s*\.\s*|(?dirname\(\s*__DIR__\s*(?:,\s*(?\d+)\s*)?\))\s*\.\s*)?['"](?[^'"]+)['"]/g});function Yx(e){return(e.split("/").pop()??"").replace(/\.[^.]+$/,"")}function Qx(e,t){let n=s=>{if(!(!s||s==="default"))for(let a of t)a.name===s&&(a.exported=!0)},r=(s,a)=>{for(let l of s.split(",")){let c=l.trim().replace(/^type\s+/,"");if(!c)continue;let d=/^([\w$]+)\s+as\s+([\w$]+)$/.exec(c);if(d){d[2]!=="default"&&n(d[1]);continue}if(a){let u=/^([\w$]+)\s*:\s*([\w$]+)$/.exec(c);if(u){n(u[1]),n(u[2]);continue}}n(/^([\w$]+)/.exec(c)?.[1])}},o;for(Gm.lastIndex=0;o=Gm.exec(e);)o[2]||r(o[1]??"",!1);for(qm.lastIndex=0;o=qm.exec(e);)r(o[1]??"",!0);for(Vm.lastIndex=0;o=Vm.exec(e);)n(o[2])}var at,Xc,At,nt,Kx,Xx,Zx,Gm,qm,Vm,Jm,Km=z(()=>{"use strict";I();ft();tt();at=`(?${ve})`,Xc=String.raw`function(?:\s*\*\s*|\s+)`,At=String.raw`(?:declare\s+)?`,nt=e=>new RegExp(e,"u"),Kx=[{re:nt(String.raw`^\s*export\s+${At}(?:async\s+)?${Xc}${at}`),kind:"function",exported:!0},{re:nt(String.raw`^\s*export\s+default\s+(?:async\s+)?${Xc}${at}`),kind:"function",exported:!0},{re:nt(String.raw`^\s*export\s+default\s+(?:abstract\s+)?class\s+(?!extends\b)${at}`),kind:"class",exported:!0},{re:nt(String.raw`^\s*${At}(?:async\s+)?${Xc}${at}`),kind:"function",exported:!1},{re:nt(String.raw`^\s*export\s+${At}(?:abstract\s+)?class\s+${at}`),kind:"class",exported:!0},{re:nt(String.raw`^\s*${At}(?:abstract\s+)?class\s+${at}`),kind:"class",exported:!1},{re:nt(String.raw`^\s*export\s+${At}interface\s+${at}`),kind:"interface",exported:!0},{re:nt(String.raw`^\s*${At}interface\s+${at}`),kind:"interface",exported:!1},{re:nt(String.raw`^\s*export\s+${At}type\s+${at}`),kind:"type",exported:!0},{re:nt(String.raw`^\s*${At}type\s+${at}\s*[=<]`),kind:"type",exported:!1},{re:nt(String.raw`^\s*export\s+${At}(?:const\s+)?enum\s+${at}`),kind:"enum",exported:!0},{re:nt(String.raw`^\s*export\s+${At}(?:namespace|module)\s+(?${ve}(?:\.${ve})*)`),kind:"namespace",exported:!0},{re:nt(String.raw`^\s*${At}(?:namespace|module)\s+(?${ve}(?:\.${ve})*)\s*\{`),kind:"namespace",exported:!1},{re:nt(String.raw`^\s*export\s+${At}(?:const|let|var)\s+${at}\s*[:=;]`),kind:"const",exported:!0},{re:nt(String.raw`^\s*exports\.${at}\s*=`),kind:"const",exported:!0},{re:nt(String.raw`^\s*module\.exports\.${at}\s*=`),kind:"const",exported:!0},{re:nt(String.raw`^\s*(?:const|let)\s+${at}\s*=\s*(?:async\s*)?\([^)]*\)\s*(?::[^=]+)?=>`),kind:"const",exported:!1},{re:nt(String.raw`^${At}(?:const|let|var)\s+${at}\s*[:=]`),kind:"const",exported:!1},{re:nt(String.raw`^\s*export\s+default\s+${at}\s*;?\s*$`),kind:"default",exported:!0}],Xx=/^\s*export\s+default\s+(?:async\s+)?(?:function|class)?\s*(?:\(|\{|extends\b)/,Zx=/^\s*export\s+default\s+(?:async\s+)?(?:function|class)\s+(?!extends\b)[\w$]+/;Gm=/export\s*\{([^}]*)\}\s*(from\b)?/g,qm=/module\.exports\s*=\s*\{([^}]*)\}/g,Vm=/(^|\n)[ \t]*export(?:\s+default\s+|\s*=\s*)([A-Za-z_$][\w$]*)[ \t]*;?[ \t]*(?=\r?\n|$)/g;Jm={lang:"javascript/typescript",exts:[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"],lexis:{mask:Er,comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n=t){let r=e.match(/\.(ts|tsx|mts|cts)$/)?"typescript":"javascript",o=xe(e,t,r,Kx,n),s=n.split(/\r?\n/);for(let a=0;a{"use strict";I();tt();fa=e=>!e.startsWith("_")||e.startsWith("__"),eS=[{re:/^(?:async\s+)?def\s+(?[\w]+)\s*\(/,kind:"function",exported:e=>fa(e.groups.name)},{re:/^\s+(?:async\s+)?def\s+(?[\w]+)\s*\(/,kind:"method",exported:e=>fa(e.groups.name)},{re:/^class\s+(?[\w]+)/,kind:"class",exported:e=>fa(e.groups.name)},{re:/^\s+class\s+(?[\w]+)/,kind:"class",exported:e=>fa(e.groups.name)}],Xm={lang:"python",exts:[".py",".pyi"],lexis:{comment:/^\s*#(?!!)/,decoration:/^\s*@/},extract(e,t){return xe(e,t,"python",eS)}}});function Ym(e){return[{re:new RegExp(String.raw`${e}(?${ve})${ma}\s+struct\b`,"u"),kind:"struct",exported:Cn},{re:new RegExp(String.raw`${e}(?${ve})${ma}\s+interface\b`,"u"),kind:"interface",exported:Cn},{re:new RegExp(String.raw`${e}(?${ve})${ma}\s+`,"u"),kind:"type",exported:Cn}]}function iS(e,t,n){let r=[],o=t.split(/\r?\n/),s=n.split(/\r?\n/);for(let a=0;a{"use strict";I();ft();tt();tS=e=>/^\p{Lu}/u.test(e),Cn=e=>tS(e.groups.name),ma=String.raw`(?:\[[^\]]*\])?`,nS=[{re:new RegExp(String.raw`^func\s+\([^)]*\)\s+(?${ve})\s*\(`,"u"),kind:"method",exported:Cn},{re:new RegExp(String.raw`^func\s+(?${ve})${ma}\s*\(`,"u"),kind:"function",exported:Cn},...Ym("^type\\s+"),{re:new RegExp(String.raw`^const\s+(?(?!_\b)${ve})`,"u"),kind:"const",exported:Cn},{re:new RegExp(String.raw`^var\s+(?(?!_\b)${ve})`,"u"),kind:"var",exported:Cn}];rS=/^(const|var|type)\s*\(\s*$/,sS={const:[{re:new RegExp(String.raw`^\s+(?(?!_\b)${ve})\b`,"u"),kind:"const",exported:Cn}],var:[{re:new RegExp(String.raw`^\s+(?(?!_\b)${ve})\b`,"u"),kind:"var",exported:Cn}],type:Ym("^\\s+")};Qm={lang:"go",exts:[".go"],lexis:{mask:e=>Ye(e,{squote:"char",backtick:!0}),comment:/^\s*\/\//,block:!0},extract(e,t,n){let r=xe(e,t,"go",nS,n),o=n===void 0?[]:iS(e,t,n);return o.length?[...r,...o].sort((s,a)=>s.line-a.line):r}}});var oS,tp,np=z(()=>{"use strict";I();tt();oS=[{re:/^\s*def\s+(?:self\.)?(?[\w?!=]+)/,kind:"method",exported:!0},{re:/^\s*(?public|private|protected|module_function|(?:public|private)_class_method)\s+def\s+(?:self\.)?(?[\w?!=]+)/,kind:"method",exported:e=>/^(public|module_function|public_class_method)$/.test(e.groups.vis)},{re:/^\s*class\s+(?[\w:]+)/,kind:"class",exported:!0},{re:/^\s*module\s+(?[\w:]+)/,kind:"module",exported:!0}],tp={lang:"ruby",exts:[".rb",".rake"],lexis:{comment:/^\s*#(?![!{])/},extract(e,t){return xe(e,t,"ruby",oS)}}});var aS,rp,sp=z(()=>{"use strict";I();ft();tt();aS=[{re:/^\s*(?:public|protected|private)?\s*(?:abstract\s+|final\s+)?class\s+(?[\w]+)/,kind:"class",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)?\s*interface\s+(?[\w]+)/,kind:"interface",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)?\s*enum\s+(?[\w]+)/,kind:"enum",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)\s+(?:static\s+|final\s+|abstract\s+|synchronized\s+)*[\w<>\[\],.?\s]+\s+(?[\w]+)\s*\(/,kind:"method",exported:(e,t)=>/\bpublic\b/.test(t)}],rp={lang:"java",exts:[".java"],lexis:{mask:e=>Ye(e,{triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"java",aS,n)}}});var gi,lS,ip,op=z(()=>{"use strict";I();ft();tt();gi=(e,t)=>/^\s*pub\b/.test(t),lS=[{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?(?:unsafe\s+)?fn\s+(?[\w]+)/,kind:"function",exported:gi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?struct\s+(?[\w]+)/,kind:"struct",exported:gi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?enum\s+(?[\w]+)/,kind:"enum",exported:gi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?trait\s+(?[\w]+)/,kind:"trait",exported:gi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?type\s+(?[\w]+)/,kind:"type",exported:gi}],ip={lang:"rust",exts:[".rs"],lexis:{mask:e=>Ye(e,{nested:!0,squote:"char",multiline:!0,raw:"r"}),comment:/^\s*\/\/(?!!)/,block:!0,decoration:/^\s*#\[/},extract(e,t,n){return xe(e,t,"rust",lS,n)}}});var hi,cS,ap,lp=z(()=>{"use strict";I();ft();tt();hi=(e,t)=>/\b(public|internal)\b/.test(t),cS=[{re:/^\s*(?:public|internal|protected|private)?\s*(?:static\s+|sealed\s+|abstract\s+|partial\s+)*(?:class|record)\s+(?\w+)/,kind:"class",exported:hi},{re:/^\s*(?:public|internal|protected|private)?\s*(?:partial\s+)?interface\s+(?\w+)/,kind:"interface",exported:hi},{re:/^\s*(?:public|internal|protected|private)?\s*(?:readonly\s+)?(?:ref\s+)?struct\s+(?\w+)/,kind:"struct",exported:hi},{re:/^\s*(?:public|internal|protected|private)?\s*enum\s+(?\w+)/,kind:"enum",exported:hi},{re:/^\s*(?:public|internal|protected|private)\s+(?:static\s+|virtual\s+|override\s+|async\s+|sealed\s+|abstract\s+|new\s+)*[\w<>\[\],.?]+\s+(?\w+)\s*(?:<[^>]*>)?\s*\(/,kind:"method",exported:hi}],ap={lang:"csharp",exts:[".cs"],lexis:{mask:e=>Ye(e,{squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*\[/},extract(e,t,n){return xe(e,t,"csharp",cS,n)}}});var dS,cp,dp=z(()=>{"use strict";I();ft();tt();dS=[{re:/^\s*(?:abstract\s+|final\s+)*class\s+(?\w+)/,kind:"class",exported:!0},{re:/^\s*interface\s+(?\w+)/,kind:"interface",exported:!0},{re:/^\s*trait\s+(?\w+)/,kind:"trait",exported:!0},{re:/^\s*enum\s+(?\w+)/,kind:"enum",exported:!0},{re:/^\s*(?:public\s+|protected\s+|private\s+|static\s+|abstract\s+|final\s+)*function\s+(?\w+)\s*\(/,kind:"function",exported:(e,t)=>!/\b(private|protected)\b/.test(t)}],cp={lang:"php",exts:[".php"],lexis:{mask:e=>Ye(e,{hash:!0,squote:"string",multiline:!0}),comment:/^\s*(?:\/\/|#(?!\[))/,block:!0,decoration:/^\s*#\[/},extract(e,t,n){return xe(e,t,"php",dS,n)}}});var hs,uS,fS,ys,vr,mS,up,fp=z(()=>{"use strict";I();ft();tt();hs=(e,t)=>!/\b(?:private|fileprivate)\b(?!\s*\(\s*set\s*\))/.test(t),uS=String.raw`(?:@${ve}(?:\([^)]*\))?\s+)*`,fS=String.raw`(?:(?:public|open|internal|private|fileprivate|package|final|static|class|override|mutating|nonmutating|convenience|required|dynamic|lazy|weak|unowned|indirect|nonisolated|isolated|distributed|optional|prefix|postfix|infix|async)(?:\([^)]*\))?\s+)*`,ys=String.raw`^\s*${uS}${fS}`,vr=(e,t,n={})=>({re:new RegExp(String.raw`${ys}${e}\s+(?!(?:func|var|let|subscript|init)\b)(?${ve})`,"u"),kind:t,exported:hs,...n}),mS=[vr("class","class"),vr("struct","struct"),vr("enum","enum"),vr("protocol","protocol"),vr("actor","actor"),{re:new RegExp(String.raw`${ys}extension\s+(?${ve}(?:\.${ve})*)`,"u"),kind:"extension",exported:hs},vr("typealias","type"),vr("func","function"),{re:new RegExp(String.raw`${ys}(?init)[?!]?\s*[<(]`,"u"),kind:"constructor",exported:hs},{re:new RegExp(String.raw`${ys}(?deinit)\s*\{`,"u"),kind:"destructor",exported:hs},{re:new RegExp(String.raw`${ys}(?subscript)\s*[<(]`,"u"),kind:"method",exported:hs},{re:new RegExp(String.raw`${ys}(?:let|var)\s+(?${ve})\s*[:={]`,"u"),kind:"property",exported:hs,scope:"member"}],up={lang:"swift",exts:[".swift"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"none",raw:"#"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"swift",mS,n)}}});var Vn,pS,gS,Jn,mp,hS,pp,gp=z(()=>{"use strict";I();ft();tt();Vn=(e,t)=>!/\bprivate\b/.test(t),pS=String.raw`(?:@[\w.:]+(?:\([^)]*\))?\s+)*`,gS=String.raw`(?:(?:public|internal|private|protected|abstract|sealed|open|final|data|value|inline|inner|override|suspend|operator|infix|tailrec|external|lateinit|expect|actual|const|companion|enum|annotation)\s+)*`,Jn=String.raw`^\s*${pS}${gS}`,mp=String.raw`(?:${ve}(?:<[^()=]*>)?\??\.)*`,hS=[{re:new RegExp(String.raw`${Jn}enum\s+class\s+(?${ve})`,"u"),kind:"enum",exported:Vn},{re:new RegExp(String.raw`${Jn}annotation\s+class\s+(?${ve})`,"u"),kind:"annotation",exported:Vn},{re:new RegExp(String.raw`${Jn}class\s+(?${ve})`,"u"),kind:"class",exported:Vn},{re:new RegExp(String.raw`${Jn}(?:fun\s+)?interface\s+(?${ve})`,"u"),kind:"interface",exported:Vn},{re:new RegExp(String.raw`${Jn}object\s+(?${ve})`,"u"),kind:"object",exported:Vn},{re:new RegExp(String.raw`${Jn}typealias\s+(?${ve})`,"u"),kind:"type",exported:Vn},{re:new RegExp(String.raw`${Jn}fun\s+(?:<[^>]*(?:>[^>]*)?>\s*)?${mp}(?${ve})\s*\(`,"u"),kind:"function",exported:Vn},{re:new RegExp(String.raw`${Jn}(?:val|var)\s+(?:<[^>]*>\s*)?${mp}(?${ve})\s*(?:[:=]|by\b)`,"u"),kind:"property",exported:Vn,scope:"member"}],pp={lang:"kotlin",exts:[".kt",".kts"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"kotlin",hS,n)}}});var yS,_S,hp,yp=z(()=>{"use strict";I();ft();tt();yS="(?!\\s*(?:if|for|while|switch|return|else|do|sizeof|typedef)\\b)",_S=[{re:/^\s*(?:class|struct)\s+(?[A-Za-z_]\w+)\s*(?:[:{]|$)/,kind:"class",exported:!0},{re:/^\s*namespace\s+(?[A-Za-z_]\w+)/,kind:"namespace",exported:!0},{re:/^\s*(?:typedef\s+)?(?:struct|enum|union)\s+(?[A-Za-z_]\w+)\s*\{/,kind:"struct",exported:!0},{re:new RegExp(`^${yS}[A-Za-z_][\\w\\s\\*&<>:,]*?\\b(?[A-Za-z_]\\w+)\\s*\\([^;{]*\\)\\s*(?:const)?\\s*\\{?\\s*$`),kind:"function",exported:!0}],hp={lang:"c/cpp",exts:[".c",".h",".cc",".cpp",".cxx",".hpp",".hh"],lexis:{mask:e=>Ye(e,{squote:"char"}),comment:/^\s*\/\//,block:!0},extract(e,t,n){return xe(e,t,e.match(/\.(c|h)$/)?"c":"cpp",_S,n)}}});var bS,_p,bp=z(()=>{"use strict";I();tt();bS=[{re:/^\s*local\s+function\s+(?[\w.:]+)\s*\(/,kind:"function",exported:!1},{re:/^\s*function\s+(?[\w.:]+)\s*\(/,kind:"function",exported:!0},{re:/^\s*(?:local\s+)?(?[\w.]+)\s*=\s*function\s*\(/,kind:"function",exported:!0}],_p={lang:"lua",exts:[".lua"],lexis:{comment:/^\s*--/},extract(e,t){return xe(e,t,"lua",bS).map(n=>{let r=Math.max(n.name.lastIndexOf("."),n.name.lastIndexOf(":"));return r>0&&r{"use strict";I();tt();wS=[{re:/^\s*function\s+(?[\w:-]+)\s*(?:\(\))?\s*\{?/,kind:"function",exported:!0},{re:/^\s*(?[A-Za-z_][\w:-]*)\s*\(\)\s*\{?/,kind:"function",exported:!0}],wp={lang:"shell",exts:[".sh",".bash",".zsh",".ksh"],lexis:{comment:/^\s*#(?!!)/},extract(e,t){return xe(e,t,"shell",wS)}}});var xS,Sp,kp=z(()=>{"use strict";I();tt();xS=[{re:/^\s*defmodule\s+(?[\w.]+)/,kind:"module",exported:!0},{re:/^\s*defp\s+(?[\w?!]+)/,kind:"function",exported:!1},{re:/^\s*def\s+(?[\w?!]+)/,kind:"function",exported:!0},{re:/^\s*defmacrop\s+(?[\w?!]+)/,kind:"macro",exported:!1},{re:/^\s*defmacro\s+(?[\w?!]+)/,kind:"macro",exported:!0},{re:/^\s*defguardp\s+(?[\w?!]+)/,kind:"guard",exported:!1},{re:/^\s*defguard\s+(?[\w?!]+)/,kind:"guard",exported:!0}],Sp={lang:"elixir",exts:[".ex",".exs"],lexis:{comment:/^\s*#/,decoration:/^\s*@(?!(?:doc|moduledoc|typedoc)\b)\w+/,docAttr:!0},extract(e,t){return xe(e,t,"elixir",xS)}}});var SS,Ep,vp=z(()=>{"use strict";I();ft();tt();SS=[{re:/^\s*(?:final\s+|sealed\s+|abstract\s+|implicit\s+)*(?:case\s+)?class\s+(?\w+)/,kind:"class",exported:!0},{re:/^\s*(?:sealed\s+)?trait\s+(?\w+)/,kind:"trait",exported:!0},{re:/^\s*(?:case\s+)?object\s+(?\w+)/,kind:"object",exported:!0},{re:/^\s*(?:override\s+|final\s+|private\s+|protected\s+|implicit\s+)*def\s+(?\w+)/,kind:"def",exported:(e,t)=>!/\b(private|protected)\b/.test(t)}],Ep={lang:"scala",exts:[".scala",".sc"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"scala",SS,n)}}});function RS(e,t,n,r){let o=[],s=n.split(/\r?\n/),a=t.split(/\r?\n/),l,c=0,d;for(let u=0;uc?p:-1),p!==d||r.has(u+1))continue;let g=vS.exec(f);if(!g||g.groups.type!==l)continue;let h=g.groups.name??l;o.push({name:h,kind:"constructor",file:e,line:u+1,signature:a[u].trim().slice(0,200),exported:!h.startsWith("_")&&!l.startsWith("_"),lang:"dart"})}return o}var rn,ga,pa,Rp,Cp,kS,ES,vS,Mp,Ap=z(()=>{"use strict";I();ft();tt();rn=e=>!(e.groups?.name??"").startsWith("_"),ga=String.raw`(?:@[\w$.]+(?:\([^)]*\))?\s+)*`,pa=String.raw`(?!(?:return|await|throw|new|else|if|for|while|do|switch|yield|case|const|final|var|late|factory|get|set|is|as|in)\b)[\w$.]+(?:<[^;{}()=]*>)?\??`,Rp=String.raw`(?!(?:if|for|while|switch|catch|return|assert|super|this|Function)\b)`,Cp=String.raw`\((?:[^()]|\([^()]*\))*(?:\)\s*(?:async\s*\*?|sync\s*\*)?\s*(?:=>|\{|;)|$)`,kS=[{re:/^\s*(?:(?:abstract|base|final|sealed|interface|mixin)\s+)*class\s+(?[\w$]+)/,kind:"class",exported:rn},{re:/^\s*(?:base\s+)?mixin\s+(?[\w$]+)/,kind:"mixin",exported:rn},{re:/^\s*extension\s+(?:type\s+(?:const\s+)?)?(?!on\b)(?[\w$]+)/,kind:"extension",exported:rn},{re:/^\s*enum\s+(?[\w$]+)/,kind:"enum",exported:rn},{re:/^\s*typedef\s+(?[\w$]+)/,kind:"type",exported:rn},{re:new RegExp(String.raw`^\s*${ga}(?:(?:static|external)\s+)*(?:${pa}\s+)?get\s+(?[\w$]+)\s*(?:=>|\{|;|async\b|sync\b)`),kind:"getter",exported:rn},{re:new RegExp(String.raw`^\s*${ga}(?:(?:static|external)\s+)*(?:void\s+)?set\s+(?[\w$]+)\s*\(`),kind:"setter",exported:rn},{re:new RegExp(String.raw`^\s*${ga}(?:(?:static|external)\s+)*${pa}\s+${Rp}(?[\w$]+)\s*(?:<[^()]*>)?\s*${Cp}`),kind:"function",exported:rn},{re:new RegExp(String.raw`^${Rp}(?[\w$]+)\s*(?:<[^()]*>)?\s*${Cp}`),kind:"function",exported:rn},{re:new RegExp(String.raw`^(?:const|final)\s+(?:${pa}\s+)?(?[\w$]+)\s*[=;]`),kind:"const",exported:rn},{re:new RegExp(String.raw`^(?:late\s+final|late|var)\s+(?:${pa}\s+)?(?[\w$]+)\s*[=;]`),kind:"var",exported:rn}],ES=/^(?\s*)(?:(?:abstract|base|final|sealed|interface|mixin)\s+)*(?:class|enum|mixin|extension(?:\s+type(?:\s+const)?)?)\s+(?[\w$]+)/,vS=new RegExp(String.raw`^(?\s*)${ga}(?:(?:const|factory|external)\s+)*(?[\w$]+)(?:\.(?[\w$]+))?\s*\(`);Mp={lang:"dart",exts:[".dart"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"string"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n=t){let r=xe(e,t,"dart",kS,n),o=RS(e,t,n,new Set(r.map(s=>s.line)));return o.length?[...r,...o].sort((s,a)=>s.line-a.line):r}}});function Yc(e,t,n){let r=Zc.get(t),o;if(!r)o=[];else try{let l=r.lexis,c=l?.mask?.(n);o=r.extract(e,n,c),l&&(o=$m(o,n,l,c))}catch{o=[]}let s=new Set(o.map(l=>l.name)),a=aa(e,n,o).filter(l=>!s.has(l.name));return a.length?[...o,...a]:o}function Qc(e){return Zc.get(e)?.lang??nn(e)}var CS,Zc,Rr=z(()=>{"use strict";I();tt();Km();Zm();ep();np();sp();op();lp();dp();fp();gp();yp();bp();xp();kp();vp();Ap();CS=[Jm,Xm,Qm,tp,rp,ip,ap,cp,up,pp,hp,_p,wp,Sp,Ep,Mp],Zc=new Map;for(let e of CS)for(let t of e.exts)Zc.set(t,e)});function Ip(e,t){let n=e.split("/").pop().toLowerCase();return AS.has(t)||MS.test(n)||IS.test(e)}function FS(e,t){let n=e.split("/").pop().toLowerCase();return TS.has(n)||$S.has(t)}function Tp(e){return!OS.has(Qc(e))}function mt(e,t){return Tp(t)?"code":Ip(e,t)?"doc":FS(e,t)?"config":"other"}var MS,AS,IS,TS,$S,ed,OS,Mn=z(()=>{"use strict";I();Rr();MS=/^(readme|changelog|contributing|history|news|authors|notice|security|code_of_conduct|faq|getting[-_]?started|usage|guide|tutorial)\b/i,AS=new Set([".md",".mdx",".rst",".adoc",".txt"]),IS=/^(docs?|documentation|wiki|guides?|website|site|book)\//i,TS=new Set(["package.json","pnpm-workspace.yaml","tsconfig.json","jsconfig.json","pyproject.toml","setup.py","setup.cfg","requirements.txt","pipfile","go.mod","cargo.toml","gemfile","pom.xml","build.gradle","build.gradle.kts","composer.json","mix.exs","pubspec.yaml","build.sbt","dockerfile","docker-compose.yml","docker-compose.yaml","makefile",".env.example","manifest.json"]),$S=new Set([".json",".yaml",".yml",".toml",".ini",".cfg"]),ed=new Set([".md",".mdx"]);OS=new Set(["markdown","restructuredtext","text","json","yaml","toml","ini","other","html","css","scss"])});function td(e){let t="";for(let n=0;nt.some(r=>r.test(n))}function nd(e){if(!e||e.length===0)return null;let t=e.map(n=>n.split("/").map(r=>r.includes("**")?null:td(r)));return n=>{let r=n.split("/");return t.some(o=>{for(let s=0;sn.endsWith("/**")&&n.length>3).map(n=>td(n.slice(0,-3)));return t.length===0?null:n=>t.some(r=>r.test(n))}function Fp(e){if(!e||e.length===0)return null;let t=It(e.filter(r=>!r.startsWith("!"))),n=It(e.filter(r=>r.startsWith("!")).map(r=>r.slice(1)));return r=>(!t||t(r))&&!n?.(r)}var yi=z(()=>{"use strict";I();et()});function NS(e){let t=e.split(/\r?\n/),n=[],r=null,o=!1,s=!1,a=!0;for(let l of t){if(r){r.test(l)&&(r=null),n.push("");continue}let c=/^\s*(`{3,}|~{3,})/.exec(l);if(c){r=new RegExp(`^\\s*${c[1][0]}{${c[1].length},}\\s*$`),s=!1,a=!1,n.push("");continue}let d=!l.trim(),u=/^(?: {4}|\t)/.test(l);if(s&&(d||u)){n.push("");continue}if(s=!1,u&&a&&!o){s=!0,n.push("");continue}d||(/^ {0,3}(?:[-*+]|\d+[.)])(?:\s|$)/.test(l)?o=!0:a&&!/^\s/.test(l)&&(o=!1)),a=d,n.push(l)}return n.join(` +`)}function PS(e){return!e||e.startsWith("#")||e.startsWith("//")?!0:/^[a-z][a-z0-9+.-]*:/i.test(e)}function Op(e){return e.replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/`([^`]*)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/[#>*_~-]+/g," ").replace(/\s+/g," ").trim()}function LS(e){return/[A-Za-zÀ-ɏ]{3,}/.test(e)}function DS(e){return/^(all notable changes to this project|in the interest of fostering|this project adheres to|we as members and leaders|table of contents)\b/i.test(e)}function WS(e){let t=e.trim();return!!t&&!/^ {4}|^\t/.test(e)&&!/^([-*+]|\d+[.)])(\s|$)/.test(t)&&!/^[>|<]/.test(t)}function US(e,t){let n=1;for(let r=t;rt?e.slice(t,r):void 0}}}function rd(e){let t=e,n,r=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(t);if(r){let y=/(^|\n)title:\s*["']?(.+?)["']?\s*(\n|$)/i.exec(r[1]);y&&(n=y[2].trim()),t=t.slice(r[0].length)}let o=NS(t),s=o.split(/\r?\n/),a=[],l=n,c,d=!1,u=(y,b)=>{let x=Op(b);a.push(x),!l&&y===1&&(l=x),!c&&y>=2&&(d=!0)};for(let y=0;y");)y++;continue}if(!c&&!d&&v&&!/^([-*+]|\d+\.)\s/.test(v)&&!v.startsWith("|")&&!v.startsWith("<")){let T=Op(v);T.length>=8&&LS(T)&&!T.endsWith(":")&&!DS(T)&&(c=T.slice(0,200))}}let f=[],m=new Set,p=y=>{let b=y.trim();b=b.replace(/\s+["'(].*$/,"").trim(),b=b.replace(/^<|>$/g,""),!PS(b)&&(m.has(b)||(m.add(b),f.push({kind:"doc-link",spec:b})))},g=/!?\[[^\]]*\]\(/g,h;for(;h=g.exec(o);){let y=US(o,g.lastIndex);y&&p(y)}let _=/^[^\S\r\n]*\[(?!\^)[^\]]+\]:\s+(\S+)/gm;for(;h=_.exec(o);)p(h[1]);return{title:l,summary:c,headings:a,refs:f}}var jS,BS,sd=z(()=>{"use strict";I();jS=/^ {0,3}(=+|-+)\s*$/;BS=/^>\s*\[!(?:note|tip|important|warning|caution)\]\s*$/i});function zS(e,t){if(!ha.test(e))return!1;let n=e.trimEnd().length;return n>=[...t.trim()].length||n>=4}function Np(e){return e.replace(/``([^`]+)``/g,"$1").replace(/:[\w:.+-]+:`([^`<]*?)\s*<[^`>]*>`/g,"$1").replace(/:doc:`([^`]*)`/g,(t,n)=>n.slice(n.lastIndexOf("/")+1)).replace(/:[\w:.+-]+:`!?~?([^`]*)`/g,(t,n)=>n.startsWith("~")?n.slice(n.lastIndexOf(".")+1):n).replace(/`([^`<]*?)\s*<[^`>]*>`__?/g,"$1").replace(/`([^`]+)`__?/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/\|([^|\s][^|]*)\|/g,"$1").replace(/\s+/g," ").trim()}function id(e,t,n,r){let o=t.trim();if(!o||o==="self"||/[:*?[\]\s]/.test(o))return;if(!o.startsWith("/")){r({kind:"doc-link",spec:o+n});return}let s=e.split("/").length-1;for(let a=0;a<=s;a++)r({kind:"doc-link",spec:"../".repeat(a)+o.slice(1)+n,soft:!0})}function ad(e,t){let n=t.split(/\r?\n/),r=[],o,s,a=[],l=!1,c=[],d=new Set,u=y=>{let b=`${y.soft?"~":""}${y.spec}`;d.has(b)||(d.add(b),c.push(y))},f=(y,b)=>{let x=a.indexOf(y);x===-1&&(x=a.push(y)-1);let k=Np(b);r.push(k),o||(o=k),x>0&&!s&&(l=!0)},m=y=>!(n[y]??"").trim();for(let y=0;y]+)>\s*$/.exec(C);id(e,A?A[1]:C,".rst",u)}else qS.has(v)||p(R)}y=F-1;continue}if(/^\s*\.\.(?:\s|$)/.test(b)){y=g(y);continue}p(b),!s&&!l&&h(y)&&(s=_(y)),/::\s*$/.test(b)&&(y=g(y))}return{title:o,summary:s,headings:r,refs:c};function p(y){for(let b of y.matchAll(GS))id(e,b[1]??b[2],".rst",u)}function g(y){let b=od(n[y]);for(;y+1b);)y++;return y}function h(y){let b=n[y];return!!b.trim()&&!/^\s/.test(b)&&(y===0||m(y-1))}function _(y){if(/^(?:[-*+•]\s|#\.\s|\d+[.)]\s|\(?[a-z0-9]\)\s|[+=|]|:[^:\s][^:]*:(?:\s|$))/i.test(n[y]))return;let b=[];for(let v=y;v{"use strict";I();ha=/^([!-/:-@[-`{-~])\1+\s*$/;od=e=>e.length-e.trimStart().length,HS=/^(\s*)\.\.\s+([\w:-]+)::\s*(.*)$/,GS=/:doc:`(?:[^`<]*<([^`>]+)>|([^`]+))`/g,qS=new Set(["code-block","code","sourcecode","literalinclude","doctest","testcode","testoutput","testsetup","testcleanup","ipython","math","raw","graphviz","productionlist","highlight","jinja"])});function ZS(e){return e.lengthPp?!1:XS.test(e)}function YS(e){let t=e.trim();return!t||t.length>Pp||KS.has(t)?!1:Number.isFinite(Number(t))}function cd(e){let t=e,n=/^(?:[rRbBuUfF]{1,2}|@|\$)?(?:#*)?(['"`])/.exec(t);if(n){let r=n[1],o=t.indexOf(r),s=t.lastIndexOf(r),a=t.startsWith(r.repeat(3),o)&&s-o>=5&&t.endsWith(r.repeat(3),s+1)?3:1;s>o&&(t=t.slice(o+a,s+1-a))}return t}var Pp,VS,JS,KS,XS,Kn,ya=z(()=>{"use strict";I();le();Pp=80,VS=2,JS=256,KS=new Set(["0","1","-1","2","-2"]),XS=/[\p{L}\p{N}]/u;Kn=class{seen=new Set;out=[];get full(){return this.out.length>=JS}add(t,n,r){if(this.full||t==="string"&&!ZS(n)||t==="number"&&!YS(n)||t==="regex"&&!n)return;let o=`${t}\0${n}\0${r}`;this.seen.has(o)||(this.seen.add(o),this.out.push({value:n,line:r,kind:t}))}addString(t,n){this.add("string",cd(t),n)}result(){if(this.out.length)return this.out.sort((t,n)=>$(t.value,n.value)||t.line-n.line||$(t.kind,n.kind))}}});function _a(){return"/home"}function Lp(){return"/tmp"}function ba(){return typeof navigator<"u"&&navigator?.hardwareConcurrency?navigator.hardwareConcurrency:1}function Dp(){return Array.from({length:ba()},()=>({model:"browser",speed:0,times:{user:0,nice:0,sys:0,idle:0,irq:0}}))}var _i=z(()=>{I()});function wa(e){let t=typeof e=="string"?e:e.href;try{return decodeURIComponent(new URL(t).pathname)}catch{return t}}function Cr(e){return new URL(`file://${e.startsWith("/")?"":"/"}${e}`)}var bi=z(()=>{I()});var dd={};vc(dd,{createRequire:()=>ek,default:()=>tk});var ek,tk,ud=z(()=>{I();ek=()=>{throw new Error("node-only API in the browser build")},tk={}});function _s(e){if(e!==Xn)throw new Error("Illegal constructor")}function xi(e){return!!e&&typeof e.row=="number"&&typeof e.column=="number"}function qp(e){M=e}function bs(e){try{return new FinalizationRegistry(e)}catch(t){console.error("Unsupported FinalizationRegistry:",t);return}}function yd(e,t,n,r){let o=n-t,s=e.textCallback(t,r);if(s){for(t+=s.length;t0)t+=a.length,s+=a;else break}t>n&&(s=s.slice(0,o))}return s??""}function hd(e,t,n,r,o){for(let s=0,a=o.length;s>>0,column:M.getValue(e+re,"i32")>>>0}}function Jp(e,t){jt(e,t.startPosition),e+=hn,jt(e,t.endPosition),e+=hn,M.setValue(e,t.startIndex,"i32"),e+=re,M.setValue(e,t.endIndex,"i32"),e+=re}function Sa(e){let t={};return t.startPosition=Mr(e),e+=hn,t.endPosition=Mr(e),e+=hn,t.startIndex=M.getValue(e,"i32")>>>0,e+=re,t.endIndex=M.getValue(e,"i32")>>>0,t}function Kp(e,t=Q){jt(t,e.startPosition),t+=hn,jt(t,e.oldEndPosition),t+=hn,jt(t,e.newEndPosition),t+=hn,M.setValue(t,e.startIndex,"i32"),t+=re,M.setValue(t,e.oldEndIndex,"i32"),t+=re,M.setValue(t,e.newEndIndex,"i32"),t+=re}function Xp(e){let t=M.getValue(e,"i32"),n=M.getValue(e+=re,"i32"),r=M.getValue(e+=re,"i32");return{major_version:t,minor_version:n,patch_version:r}}async function Zp(moduleArg={}){var moduleRtn,Module=moduleArg,ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope<"u",ENVIRONMENT_IS_NODE=typeof O=="object"&&O.versions?.node&&O.type!="renderer";if(ENVIRONMENT_IS_NODE){let{createRequire:e}=await Promise.resolve().then(()=>(ud(),dd));var require=e(import.meta.url)}Module.currentQueryProgressCallback=null,Module.currentProgressCallback=null,Module.currentLogCallback=null,Module.currentParseCallback=null;var arguments_=[],thisProgram="./this.program",quit_=D((e,t)=>{throw t},"quit_"),_scriptName=import.meta.url,scriptDirectory="";function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}D(locateFile,"locateFile");var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");_scriptName.startsWith("file:")&&(scriptDirectory=require("path").dirname(require("url").fileURLToPath(_scriptName))+"/"),readBinary=D(e=>{e=isFileURI(e)?new URL(e):e;var t=fs.readFileSync(e);return t},"readBinary"),readAsync=D(async(e,t=!0)=>{e=isFileURI(e)?new URL(e):e;var n=fs.readFileSync(e,t?void 0:"utf8");return n},"readAsync"),O.argv.length>1&&(thisProgram=O.argv[1].replace(/\\/g,"/")),arguments_=O.argv.slice(2),quit_=D((e,t)=>{throw O.exitCode=e,t},"quit_")}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}ENVIRONMENT_IS_WORKER&&(readBinary=D(e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)},"readBinary")),readAsync=D(async e=>{if(isFileURI(e))return new Promise((n,r)=>{var o=new XMLHttpRequest;o.open("GET",e,!0),o.responseType="arraybuffer",o.onload=()=>{if(o.status==200||o.status==0&&o.response){n(o.response);return}r(o.status)},o.onerror=r,o.send(null)});var t=await fetch(e,{credentials:"same-origin"});if(t.ok)return t.arrayBuffer();throw new Error(t.status+" : "+t.url)},"readAsync")}var out=console.log.bind(console),err=console.error.bind(console),dynamicLibraries=[],wasmBinary,ABORT=!1,EXITSTATUS,isFileURI=D(e=>e.startsWith("file://"),"isFileURI"),readyPromiseResolve,readyPromiseReject,wasmMemory,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,HEAP64,HEAPU64,HEAP_DATA_VIEW,runtimeInitialized=!1;function updateMemoryViews(){var e=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e),Module.HEAP64=HEAP64=new BigInt64Array(e),Module.HEAPU64=HEAPU64=new BigUint64Array(e),Module.HEAP_DATA_VIEW=HEAP_DATA_VIEW=new DataView(e),LE_HEAP_UPDATE()}D(updateMemoryViews,"updateMemoryViews");function initMemory(){if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else{var e=Module.INITIAL_MEMORY||33554432;wasmMemory=new WebAssembly.Memory({initial:e/65536,maximum:32768})}updateMemoryViews()}D(initMemory,"initMemory");var __RELOC_FUNCS__=[];function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(onPreRuns)}D(preRun,"preRun");function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),wasmExports.__wasm_call_ctors(),callRuntimeCallbacks(onPostCtors)}D(initRuntime,"initRuntime");function preMain(){}D(preMain,"preMain");function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(onPostRuns)}D(postRun,"postRun");function abort(e){Module.onAbort?.(e),e="Aborted("+e+")",err(e),ABORT=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw readyPromiseReject?.(t),t}D(abort,"abort");var wasmBinaryFile;function findWasmBinary(){return Module.locateFile?locateFile("web-tree-sitter.wasm"):new URL("web-tree-sitter.wasm",import.meta.url).href}D(findWasmBinary,"findWasmBinary");function getBinarySync(e){if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}D(getBinarySync,"getBinarySync");async function getWasmBinary(e){if(!wasmBinary)try{var t=await readAsync(e);return new Uint8Array(t)}catch{}return getBinarySync(e)}D(getWasmBinary,"getWasmBinary");async function instantiateArrayBuffer(e,t){try{var n=await getWasmBinary(e),r=await WebAssembly.instantiate(n,t);return r}catch(o){err(`failed to asynchronously prepare wasm: ${o}`),abort(o)}}D(instantiateArrayBuffer,"instantiateArrayBuffer");async function instantiateAsync(e,t,n){if(!e&&!isFileURI(t)&&!ENVIRONMENT_IS_NODE)try{var r=fetch(t,{credentials:"same-origin"}),o=await WebAssembly.instantiateStreaming(r,n);return o}catch(s){err(`wasm streaming compile failed: ${s}`),err("falling back to ArrayBuffer instantiation")}return instantiateArrayBuffer(t,n)}D(instantiateAsync,"instantiateAsync");function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)}}D(getWasmImports,"getWasmImports");async function createWasm(){function e(s,a){wasmExports=s.exports,wasmExports=relocateExports(wasmExports,1024);var l=getDylinkMetadata(a);return l.neededDynlibs&&(dynamicLibraries=l.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),assignWasmExports(wasmExports),wasmExports}D(e,"receiveInstance");function t(s){return e(s.instance,s.module)}D(t,"receiveInstantiationResult");var n=getWasmImports();if(Module.instantiateWasm)return new Promise((s,a)=>{Module.instantiateWasm(n,(l,c)=>{s(e(l,c))})});wasmBinaryFile??=findWasmBinary();var r=await instantiateAsync(wasmBinary,wasmBinaryFile,n),o=t(r);return o}D(createWasm,"createWasm");class ExitStatus{static{D(this,"ExitStatus")}name="ExitStatus";constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(e,t){var n=GOT[t];return n||(n=GOT[t]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(t)||(n.required=!0),n}},LE_ATOMICS_NATIVE_BYTE_ORDER=[],LE_HEAP_LOAD_F32=D(e=>HEAP_DATA_VIEW.getFloat32(e,!0),"LE_HEAP_LOAD_F32"),LE_HEAP_LOAD_F64=D(e=>HEAP_DATA_VIEW.getFloat64(e,!0),"LE_HEAP_LOAD_F64"),LE_HEAP_LOAD_I16=D(e=>HEAP_DATA_VIEW.getInt16(e,!0),"LE_HEAP_LOAD_I16"),LE_HEAP_LOAD_I32=D(e=>HEAP_DATA_VIEW.getInt32(e,!0),"LE_HEAP_LOAD_I32"),LE_HEAP_LOAD_I64=D(e=>HEAP_DATA_VIEW.getBigInt64(e,!0),"LE_HEAP_LOAD_I64"),LE_HEAP_LOAD_U32=D(e=>HEAP_DATA_VIEW.getUint32(e,!0),"LE_HEAP_LOAD_U32"),LE_HEAP_STORE_F32=D((e,t)=>HEAP_DATA_VIEW.setFloat32(e,t,!0),"LE_HEAP_STORE_F32"),LE_HEAP_STORE_F64=D((e,t)=>HEAP_DATA_VIEW.setFloat64(e,t,!0),"LE_HEAP_STORE_F64"),LE_HEAP_STORE_I16=D((e,t)=>HEAP_DATA_VIEW.setInt16(e,t,!0),"LE_HEAP_STORE_I16"),LE_HEAP_STORE_I32=D((e,t)=>HEAP_DATA_VIEW.setInt32(e,t,!0),"LE_HEAP_STORE_I32"),LE_HEAP_STORE_I64=D((e,t)=>HEAP_DATA_VIEW.setBigInt64(e,t,!0),"LE_HEAP_STORE_I64"),LE_HEAP_STORE_U32=D((e,t)=>HEAP_DATA_VIEW.setUint32(e,t,!0),"LE_HEAP_STORE_U32"),callRuntimeCallbacks=D(e=>{for(;e.length>0;)e.shift()(Module)},"callRuntimeCallbacks"),onPostRuns=[],addOnPostRun=D(e=>onPostRuns.push(e),"addOnPostRun"),onPreRuns=[],addOnPreRun=D(e=>onPreRuns.push(e),"addOnPreRun"),UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder:void 0,findStringEnd=D((e,t,n,r)=>{var o=t+n;if(r)return o;for(;e[t]&&!(t>=o);)++t;return t},"findStringEnd"),UTF8ArrayToString=D((e,t=0,n,r)=>{var o=findStringEnd(e,t,n,r);if(o-t>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,o));for(var s="";t>10,56320|d&1023)}}return s},"UTF8ArrayToString"),getDylinkMetadata=D(e=>{var t=0,n=0;function r(){return e[t++]}D(r,"getU8");function o(){for(var w=0,E=1;;){var P=e[t++];if(w+=(P&127)*E,E*=128,!(P&128))break}return w}D(o,"getLEB");function s(){var w=o();return t+=w,UTF8ArrayToString(e,t-w,w)}D(s,"getString");function a(){for(var w=o(),E=[];w--;)E.push(s());return E}D(a,"getStringList");function l(w,E){if(w)throw new Error(E)}if(D(l,"failIf"),e instanceof WebAssembly.Module){var c=WebAssembly.Module.customSections(e,"dylink.0");l(c.length===0,"need dylink section"),e=new Uint8Array(c[0]),n=e.length}else{var d=new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer),u=d[0]==1836278016||d[0]==6386541;l(!u,"need to see wasm magic number"),l(e[8]!==0,"need the dylink section to be first"),t=9;var f=o();n=t+f;var m=s();l(m!=="dylink.0")}for(var p={neededDynlibs:[],tlsExports:new Set,weakImports:new Set,runtimePaths:[]},g=1,h=2,_=3,y=4,b=5,x=256,k=3,v=1;t>1)*2);case"i32":return LE_HEAP_LOAD_I32((e>>2)*4);case"i64":return LE_HEAP_LOAD_I64((e>>3)*8);case"float":return LE_HEAP_LOAD_F32((e>>2)*4);case"double":return LE_HEAP_LOAD_F64((e>>3)*8);case"*":return LE_HEAP_LOAD_U32((e>>2)*4);default:abort(`invalid type for getValue: ${t}`)}}D(getValue,"getValue");var newDSO=D((e,t,n)=>{var r={refcount:1/0,name:e,exports:n,global:!0};return LDSO.loadedLibsByName[e]=r,t!=null&&(LDSO.loadedLibsByHandle[t]=r),r},"newDSO"),LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=82240,alignMemory=D((e,t)=>Math.ceil(e/t)*t,"alignMemory"),getMemory=D(e=>{if(runtimeInitialized)return _calloc(e,1);var t=___heap_base,n=t+alignMemory(e,16);return ___heap_base=n,GOT.__heap_base.value=n,t},"getMemory"),isInternalSym=D(e=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(e)||e.startsWith("__em_js__"),"isInternalSym"),uleb128EncodeWithLen=D(e=>{let t=e.length;return[t%128|128,t>>7,...e]},"uleb128EncodeWithLen"),wasmTypeCodes={i:127,p:127,j:126,f:125,d:124,e:111},generateTypePack=D(e=>uleb128EncodeWithLen(Array.from(e,t=>{var n=wasmTypeCodes[t];return n})),"generateTypePack"),convertJsFunctionToWasm=D((e,t)=>{var n=Uint8Array.of(0,97,115,109,1,0,0,0,1,...uleb128EncodeWithLen([1,96,...generateTypePack(t.slice(1)),...generateTypePack(t[0]==="v"?"":t[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),r=new WebAssembly.Module(n),o=new WebAssembly.Instance(r,{e:{f:e}}),s=o.exports.f;return s},"convertJsFunctionToWasm"),wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:31,element:"anyfunc"}),getWasmTableEntry=D(e=>{var t=wasmTableMirror[e];return t||(wasmTableMirror[e]=t=wasmTable.get(e)),t},"getWasmTableEntry"),updateTableMap=D((e,t)=>{if(functionsInTableMap)for(var n=e;n(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(e)||0),"getFunctionAddress"),freeTableIndexes=[],getEmptyTableSlot=D(()=>freeTableIndexes.length?freeTableIndexes.pop():wasmTable.grow(1),"getEmptyTableSlot"),setWasmTableEntry=D((e,t)=>{wasmTable.set(e,t),wasmTableMirror[e]=wasmTable.get(e)},"setWasmTableEntry"),addFunction=D((e,t)=>{var n=getFunctionAddress(e);if(n)return n;var r=getEmptyTableSlot();try{setWasmTableEntry(r,e)}catch(s){if(!(s instanceof TypeError))throw s;var o=convertJsFunctionToWasm(e,t);setWasmTableEntry(r,o)}return functionsInTableMap.set(e,r),r},"addFunction"),updateGOT=D((e,t)=>{for(var n in e)if(!isInternalSym(n)){var r=e[n];GOT[n]||=new WebAssembly.Global({value:"i32",mutable:!0}),(t||GOT[n].value==0)&&(typeof r=="function"?GOT[n].value=addFunction(r):typeof r=="number"?GOT[n].value=r:err(`unhandled export type for '${n}': ${typeof r}`))}},"updateGOT"),relocateExports=D((e,t,n)=>{var r={};for(var o in e){var s=e[o];typeof s=="object"&&(s=s.value),typeof s=="number"&&(s+=t),r[o]=s}return updateGOT(r,n),r},"relocateExports"),isSymbolDefined=D(e=>{var t=wasmImports[e];return!(!t||t.stub)},"isSymbolDefined"),dynCall=D((e,t,n=[],r=!1)=>{var o=getWasmTableEntry(t),s=o(...n);function a(l){return l}return D(a,"convert"),s},"dynCall"),stackSave=D(()=>_emscripten_stack_get_current(),"stackSave"),stackRestore=D(e=>__emscripten_stack_restore(e),"stackRestore"),createInvokeFunction=D(e=>(t,...n)=>{var r=stackSave();try{return dynCall(e,t,n)}catch(o){if(stackRestore(r),o!==o+0)throw o;if(_setThrew(1,0),e[0]=="j")return 0n}},"createInvokeFunction"),resolveGlobalSymbol=D((e,t=!1)=>{var n;return isSymbolDefined(e)?n=wasmImports[e]:e.startsWith("invoke_")&&(n=wasmImports[e]=createInvokeFunction(e.split("_")[1])),{sym:n,name:e}},"resolveGlobalSymbol"),onPostCtors=[],addOnPostCtor=D(e=>onPostCtors.push(e),"addOnPostCtor"),UTF8ToString=D((e,t,n)=>e?UTF8ArrayToString(HEAPU8,e,t,n):"","UTF8ToString"),loadWebAssemblyModule=D((binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);function loadModule(){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,LE_HEAP_STORE_U32((handle+12>>2)*4,memoryBase),LE_HEAP_STORE_I32((handle+16>>2)*4,metadata.memorySize),LE_HEAP_STORE_U32((handle+20>>2)*4,tableBase),LE_HEAP_STORE_I32((handle+24>>2)*4,metadata.tableSize)),metadata.tableSize&&wasmTable.grow(metadata.tableSize);var moduleExports;function resolveSymbol(e){var t=resolveGlobalSymbol(e).sym;return!t&&localScope&&(t=localScope[e]),t||(t=moduleExports[e]),t}D(resolveSymbol,"resolveSymbol");var proxyHandler={get(e,t){switch(t){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(t in wasmImports&&!wasmImports[t].stub){var n=wasmImports[t];return n}if(!(t in e)){var r;e[t]=(...o)=>(r||=resolveSymbol(t),r(...o))}return e[t]}},proxy=new Proxy({},proxyHandler);currentModuleWeakSymbols=metadata.weakImports;var info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols();function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf("$"+arity)!=-1;arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(D(addEmAsm,"addEmAsm"),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start ${body};`;moduleExports[name]=eval(func)}D(addEmJs,"addEmJs");for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():addOnPostCtor(init)),moduleExports}if(D(postInstantiation,"postInstantiation"),flags.loadAsync)return(async()=>{var e;return binary instanceof WebAssembly.Module?e=new WebAssembly.Instance(binary,info):{module:binary,instance:e}=await WebAssembly.instantiate(binary,info),postInstantiation(binary,e)})();var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return D(loadModule,"loadModule"),flags={...flags,rpath:{parentLibPath:libName,paths:metadata.runtimePaths}},flags.loadAsync?metadata.neededDynlibs.reduce((e,t)=>e.then(()=>loadDynamicLibrary(t,flags,localScope)),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach(e=>loadDynamicLibrary(e,flags,localScope)),loadModule())},"loadWebAssemblyModule"),mergeLibSymbols=D((e,t)=>{for(var[n,r]of Object.entries(e)){let o=D(a=>{isSymbolDefined(a)||(wasmImports[a]=r)},"setImport");o(n);let s="__main_argc_argv";n=="main"&&o(s),n==s&&o("main")}},"mergeLibSymbols"),asyncLoad=D(async e=>{var t=await readAsync(e);return new Uint8Array(t)},"asyncLoad");function loadDynamicLibrary(e,t={global:!0,nodelete:!0},n,r){var o=LDSO.loadedLibsByName[e];if(o)return t.global?o.global||(o.global=!0,mergeLibSymbols(o.exports,e)):n&&Object.assign(n,o.exports),t.nodelete&&o.refcount!==1/0&&(o.refcount=1/0),o.refcount++,r&&(LDSO.loadedLibsByHandle[r]=o),t.loadAsync?Promise.resolve(!0):!0;o=newDSO(e,r,"loading"),o.refcount=t.nodelete?1/0:1,o.global=t.global;function s(){if(r){var c=LE_HEAP_LOAD_U32((r+28>>2)*4),d=LE_HEAP_LOAD_U32((r+32>>2)*4);if(c&&d){var u=HEAP8.slice(c,c+d);return t.loadAsync?Promise.resolve(u):u}}var f=locateFile(e);if(t.loadAsync)return asyncLoad(f);if(!readBinary)throw new Error(`${f}: file not found, and synchronous loading of external files is not available`);return readBinary(f)}D(s,"loadLibData");function a(){return t.loadAsync?s().then(c=>loadWebAssemblyModule(c,t,e,n,r)):loadWebAssemblyModule(s(),t,e,n,r)}D(a,"getExports");function l(c){o.global?mergeLibSymbols(c,e):n&&Object.assign(n,c),o.exports=c}return D(l,"moduleLoaded"),t.loadAsync?a().then(c=>(l(c),!0)):(l(a()),!0)}D(loadDynamicLibrary,"loadDynamicLibrary");var reportUndefinedSymbols=D(()=>{for(var[e,t]of Object.entries(GOT))if(t.value==0){var n=resolveGlobalSymbol(e,!0).sym;if(!n&&!t.required)continue;if(typeof n=="function")t.value=addFunction(n,n.sig);else if(typeof n=="number")t.value=n;else throw new Error(`bad export type for '${e}': ${typeof n}`)}},"reportUndefinedSymbols"),runDependencies=0,dependenciesFulfilled=null,removeRunDependency=D(e=>{if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),runDependencies==0&&dependenciesFulfilled){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}},"removeRunDependency"),addRunDependency=D(e=>{runDependencies++,Module.monitorRunDependencies?.(runDependencies)},"addRunDependency"),loadDylibs=D(async()=>{if(!dynamicLibraries.length){reportUndefinedSymbols();return}addRunDependency("loadDylibs");for(var e of dynamicLibraries)await loadDynamicLibrary(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0});reportUndefinedSymbols(),removeRunDependency("loadDylibs")},"loadDylibs"),noExitRuntime=!0;function setValue(e,t,n="i8"){switch(n.endsWith("*")&&(n="*"),n){case"i1":HEAP8[e]=t;break;case"i8":HEAP8[e]=t;break;case"i16":LE_HEAP_STORE_I16((e>>1)*2,t);break;case"i32":LE_HEAP_STORE_I32((e>>2)*4,t);break;case"i64":LE_HEAP_STORE_I64((e>>3)*8,BigInt(t));break;case"float":LE_HEAP_STORE_F32((e>>2)*4,t);break;case"double":LE_HEAP_STORE_F64((e>>3)*8,t);break;case"*":LE_HEAP_STORE_U32((e>>2)*4,t);break;default:abort(`invalid type for setValue: ${n}`)}}D(setValue,"setValue");var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_high=82240,___stack_low=16704,___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},82240),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),__abort_js=D(()=>abort(""),"__abort_js");__abort_js.sig="v";var getHeapMax=D(()=>2147483648,"getHeapMax"),growMemory=D(e=>{var t=wasmMemory.buffer.byteLength,n=(e-t+65535)/65536|0;try{return wasmMemory.grow(n),updateMemoryViews(),1}catch{}},"growMemory"),_emscripten_resize_heap=D(e=>{var t=HEAPU8.length;e>>>=0;var n=getHeapMax();if(e>n)return!1;for(var r=1;r<=4;r*=2){var o=t*(1+.2/r);o=Math.min(o,e+100663296);var s=Math.min(n,alignMemory(Math.max(e,o),65536)),a=growMemory(s);if(a)return!0}return!1},"_emscripten_resize_heap");_emscripten_resize_heap.sig="ip";var _fd_close=D(e=>52,"_fd_close");_fd_close.sig="ii";var INT53_MAX=9007199254740992,INT53_MIN=-9007199254740992,bigintToI53Checked=D(e=>eINT53_MAX?NaN:Number(e),"bigintToI53Checked");function _fd_seek(e,t,n,r){return t=bigintToI53Checked(t),70}D(_fd_seek,"_fd_seek"),_fd_seek.sig="iijip";var printCharBuffers=[null,[],[]],printChar=D((e,t)=>{var n=printCharBuffers[e];t===0||t===10?((e===1?out:err)(UTF8ArrayToString(n)),n.length=0):n.push(t)},"printChar"),_fd_write=D((e,t,n,r)=>{for(var o=0,s=0;s>2)*4),l=LE_HEAP_LOAD_U32((t+4>>2)*4);t+=8;for(var c=0;c>2)*4,o),0},"_fd_write");_fd_write.sig="iippp";function _tree_sitter_log_callback(e,t){if(Module.currentLogCallback){let n=UTF8ToString(t);Module.currentLogCallback(n,e!==0)}}D(_tree_sitter_log_callback,"_tree_sitter_log_callback");function _tree_sitter_parse_callback(e,t,n,r,o){let a=Module.currentParseCallback(t,{row:n,column:r});typeof a=="string"?(setValue(o,a.length,"i32"),stringToUTF16(a,e,10240)):setValue(o,0,"i32")}D(_tree_sitter_parse_callback,"_tree_sitter_parse_callback");function _tree_sitter_progress_callback(e,t){return Module.currentProgressCallback?Module.currentProgressCallback({currentOffset:e,hasError:t}):!1}D(_tree_sitter_progress_callback,"_tree_sitter_progress_callback");function _tree_sitter_query_progress_callback(e){return Module.currentQueryProgressCallback?Module.currentQueryProgressCallback({currentOffset:e}):!1}D(_tree_sitter_query_progress_callback,"_tree_sitter_query_progress_callback");var runtimeKeepaliveCounter=0,keepRuntimeAlive=D(()=>noExitRuntime||runtimeKeepaliveCounter>0,"keepRuntimeAlive"),_proc_exit=D(e=>{EXITSTATUS=e,keepRuntimeAlive()||(Module.onExit?.(e),ABORT=!0),quit_(e,new ExitStatus(e))},"_proc_exit");_proc_exit.sig="vi";var exitJS=D((e,t)=>{EXITSTATUS=e,_proc_exit(e)},"exitJS"),handleException=D(e=>{if(e instanceof ExitStatus||e=="unwind")return EXITSTATUS;quit_(1,e)},"handleException"),lengthBytesUTF8=D(e=>{for(var t=0,n=0;n=55296&&r<=57343?(t+=4,++n):t+=3}return t},"lengthBytesUTF8"),stringToUTF8Array=D((e,t,n,r)=>{if(!(r>0))return 0;for(var o=n,s=n+r-1,a=0;a=s)break;t[n++]=l}else if(l<=2047){if(n+1>=s)break;t[n++]=192|l>>6,t[n++]=128|l&63}else if(l<=65535){if(n+2>=s)break;t[n++]=224|l>>12,t[n++]=128|l>>6&63,t[n++]=128|l&63}else{if(n+3>=s)break;t[n++]=240|l>>18,t[n++]=128|l>>12&63,t[n++]=128|l>>6&63,t[n++]=128|l&63,a++}}return t[n]=0,n-o},"stringToUTF8Array"),stringToUTF8=D((e,t,n)=>stringToUTF8Array(e,HEAPU8,t,n),"stringToUTF8"),stackAlloc=D(e=>__emscripten_stack_alloc(e),"stackAlloc"),stringToUTF8OnStack=D(e=>{var t=lengthBytesUTF8(e)+1,n=stackAlloc(t);return stringToUTF8(e,n,t),n},"stringToUTF8OnStack"),AsciiToString=D(e=>{for(var t="";;){var n=HEAPU8[e++];if(!n)return t;t+=String.fromCharCode(n)}},"AsciiToString"),stringToUTF16=D((e,t,n)=>{if(n??=2147483647,n<2)return 0;n-=2;for(var r=t,o=n>1)*2,a),t+=2}return LE_HEAP_STORE_I16((t>>1)*2,0),t-r},"stringToUTF16");LE_ATOMICS_NATIVE_BYTE_ORDER=new Int8Array(new Int16Array([1]).buffer)[0]===1?[(e=>e),(e=>e),void 0,(e=>e)]:[(e=>e),(e=>((e&65280)<<8|(e&255)<<24)>>16),void 0,(e=>e>>24&255|e>>8&65280|(e&65280)<<8|(e&255)<<24)];function LE_HEAP_UPDATE(){HEAPU16.unsigned=(e=>e&65535),HEAPU32.unsigned=(e=>e>>>0)}if(D(LE_HEAP_UPDATE,"LE_HEAP_UPDATE"),initMemory(),Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),Module.print&&(out=Module.print),Module.printErr&&(err=Module.printErr),Module.dynamicLibraries&&(dynamicLibraries=Module.dynamicLibraries),Module.wasmBinary&&(wasmBinary=Module.wasmBinary),Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.shift()();Module.setValue=setValue,Module.getValue=getValue,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8,Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,Module.loadWebAssemblyModule=loadWebAssemblyModule,Module.LE_HEAP_STORE_I64=LE_HEAP_STORE_I64;var ASM_CONSTS={},_malloc,_calloc,_realloc,_free,_ts_range_edit,_memcmp,_ts_language_symbol_count,_ts_language_state_count,_ts_language_abi_version,_ts_language_name,_ts_language_field_count,_ts_language_next_state,_ts_language_symbol_name,_ts_language_symbol_for_name,_strncmp,_ts_language_symbol_type,_ts_language_field_name_for_id,_ts_lookahead_iterator_new,_ts_lookahead_iterator_delete,_ts_lookahead_iterator_reset_state,_ts_lookahead_iterator_reset,_ts_lookahead_iterator_next,_ts_lookahead_iterator_current_symbol,_ts_point_edit,_ts_parser_delete,_ts_parser_reset,_ts_parser_set_language,_ts_parser_set_included_ranges,_ts_query_new,_ts_query_delete,_iswspace,_iswalnum,_ts_query_copy,_ts_query_pattern_count,_ts_query_capture_count,_ts_query_string_count,_ts_query_capture_name_for_id,_ts_query_capture_quantifier_for_id,_ts_query_string_value_for_id,_ts_query_predicates_for_pattern,_ts_query_start_byte_for_pattern,_ts_query_end_byte_for_pattern,_ts_query_is_pattern_rooted,_ts_query_is_pattern_non_local,_ts_query_is_pattern_guaranteed_at_step,_ts_query_disable_capture,_ts_query_disable_pattern,_ts_tree_copy,_ts_tree_delete,_ts_init,_ts_parser_new_wasm,_ts_parser_enable_logger_wasm,_ts_parser_parse_wasm,_ts_parser_included_ranges_wasm,_ts_language_type_is_named_wasm,_ts_language_type_is_visible_wasm,_ts_language_metadata_wasm,_ts_language_supertypes_wasm,_ts_language_subtypes_wasm,_ts_tree_root_node_wasm,_ts_tree_root_node_with_offset_wasm,_ts_tree_edit_wasm,_ts_tree_included_ranges_wasm,_ts_tree_get_changed_ranges_wasm,_ts_tree_cursor_new_wasm,_ts_tree_cursor_copy_wasm,_ts_tree_cursor_delete_wasm,_ts_tree_cursor_reset_wasm,_ts_tree_cursor_reset_to_wasm,_ts_tree_cursor_goto_first_child_wasm,_ts_tree_cursor_goto_last_child_wasm,_ts_tree_cursor_goto_first_child_for_index_wasm,_ts_tree_cursor_goto_first_child_for_position_wasm,_ts_tree_cursor_goto_next_sibling_wasm,_ts_tree_cursor_goto_previous_sibling_wasm,_ts_tree_cursor_goto_descendant_wasm,_ts_tree_cursor_goto_parent_wasm,_ts_tree_cursor_current_node_type_id_wasm,_ts_tree_cursor_current_node_state_id_wasm,_ts_tree_cursor_current_node_is_named_wasm,_ts_tree_cursor_current_node_is_missing_wasm,_ts_tree_cursor_current_node_id_wasm,_ts_tree_cursor_start_position_wasm,_ts_tree_cursor_end_position_wasm,_ts_tree_cursor_start_index_wasm,_ts_tree_cursor_end_index_wasm,_ts_tree_cursor_current_field_id_wasm,_ts_tree_cursor_current_depth_wasm,_ts_tree_cursor_current_descendant_index_wasm,_ts_tree_cursor_current_node_wasm,_ts_node_symbol_wasm,_ts_node_field_name_for_child_wasm,_ts_node_field_name_for_named_child_wasm,_ts_node_children_by_field_id_wasm,_ts_node_first_child_for_byte_wasm,_ts_node_first_named_child_for_byte_wasm,_ts_node_grammar_symbol_wasm,_ts_node_child_count_wasm,_ts_node_named_child_count_wasm,_ts_node_child_wasm,_ts_node_named_child_wasm,_ts_node_child_by_field_id_wasm,_ts_node_next_sibling_wasm,_ts_node_prev_sibling_wasm,_ts_node_next_named_sibling_wasm,_ts_node_prev_named_sibling_wasm,_ts_node_descendant_count_wasm,_ts_node_parent_wasm,_ts_node_child_with_descendant_wasm,_ts_node_descendant_for_index_wasm,_ts_node_named_descendant_for_index_wasm,_ts_node_descendant_for_position_wasm,_ts_node_named_descendant_for_position_wasm,_ts_node_start_point_wasm,_ts_node_end_point_wasm,_ts_node_start_index_wasm,_ts_node_end_index_wasm,_ts_node_to_string_wasm,_ts_node_children_wasm,_ts_node_named_children_wasm,_ts_node_descendants_of_type_wasm,_ts_node_is_named_wasm,_ts_node_has_changes_wasm,_ts_node_has_error_wasm,_ts_node_is_error_wasm,_ts_node_is_missing_wasm,_ts_node_is_extra_wasm,_ts_node_parse_state_wasm,_ts_node_next_parse_state_wasm,_ts_query_matches_wasm,_ts_query_captures_wasm,_memset,_memcpy,_memmove,_iswalpha,_iswblank,_iswdigit,_iswlower,_iswpunct,_iswupper,_iswxdigit,_memchr,_strlen,_strcmp,_strncat,_strncpy,_towlower,_towupper,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,___wasm_apply_data_relocs;function assignWasmExports(e){Module._malloc=_malloc=e.malloc,Module._calloc=_calloc=e.calloc,Module._realloc=_realloc=e.realloc,Module._free=_free=e.free,Module._ts_range_edit=_ts_range_edit=e.ts_range_edit,Module._memcmp=_memcmp=e.memcmp,Module._ts_language_symbol_count=_ts_language_symbol_count=e.ts_language_symbol_count,Module._ts_language_state_count=_ts_language_state_count=e.ts_language_state_count,Module._ts_language_abi_version=_ts_language_abi_version=e.ts_language_abi_version,Module._ts_language_name=_ts_language_name=e.ts_language_name,Module._ts_language_field_count=_ts_language_field_count=e.ts_language_field_count,Module._ts_language_next_state=_ts_language_next_state=e.ts_language_next_state,Module._ts_language_symbol_name=_ts_language_symbol_name=e.ts_language_symbol_name,Module._ts_language_symbol_for_name=_ts_language_symbol_for_name=e.ts_language_symbol_for_name,Module._strncmp=_strncmp=e.strncmp,Module._ts_language_symbol_type=_ts_language_symbol_type=e.ts_language_symbol_type,Module._ts_language_field_name_for_id=_ts_language_field_name_for_id=e.ts_language_field_name_for_id,Module._ts_lookahead_iterator_new=_ts_lookahead_iterator_new=e.ts_lookahead_iterator_new,Module._ts_lookahead_iterator_delete=_ts_lookahead_iterator_delete=e.ts_lookahead_iterator_delete,Module._ts_lookahead_iterator_reset_state=_ts_lookahead_iterator_reset_state=e.ts_lookahead_iterator_reset_state,Module._ts_lookahead_iterator_reset=_ts_lookahead_iterator_reset=e.ts_lookahead_iterator_reset,Module._ts_lookahead_iterator_next=_ts_lookahead_iterator_next=e.ts_lookahead_iterator_next,Module._ts_lookahead_iterator_current_symbol=_ts_lookahead_iterator_current_symbol=e.ts_lookahead_iterator_current_symbol,Module._ts_point_edit=_ts_point_edit=e.ts_point_edit,Module._ts_parser_delete=_ts_parser_delete=e.ts_parser_delete,Module._ts_parser_reset=_ts_parser_reset=e.ts_parser_reset,Module._ts_parser_set_language=_ts_parser_set_language=e.ts_parser_set_language,Module._ts_parser_set_included_ranges=_ts_parser_set_included_ranges=e.ts_parser_set_included_ranges,Module._ts_query_new=_ts_query_new=e.ts_query_new,Module._ts_query_delete=_ts_query_delete=e.ts_query_delete,Module._iswspace=_iswspace=e.iswspace,Module._iswalnum=_iswalnum=e.iswalnum,Module._ts_query_copy=_ts_query_copy=e.ts_query_copy,Module._ts_query_pattern_count=_ts_query_pattern_count=e.ts_query_pattern_count,Module._ts_query_capture_count=_ts_query_capture_count=e.ts_query_capture_count,Module._ts_query_string_count=_ts_query_string_count=e.ts_query_string_count,Module._ts_query_capture_name_for_id=_ts_query_capture_name_for_id=e.ts_query_capture_name_for_id,Module._ts_query_capture_quantifier_for_id=_ts_query_capture_quantifier_for_id=e.ts_query_capture_quantifier_for_id,Module._ts_query_string_value_for_id=_ts_query_string_value_for_id=e.ts_query_string_value_for_id,Module._ts_query_predicates_for_pattern=_ts_query_predicates_for_pattern=e.ts_query_predicates_for_pattern,Module._ts_query_start_byte_for_pattern=_ts_query_start_byte_for_pattern=e.ts_query_start_byte_for_pattern,Module._ts_query_end_byte_for_pattern=_ts_query_end_byte_for_pattern=e.ts_query_end_byte_for_pattern,Module._ts_query_is_pattern_rooted=_ts_query_is_pattern_rooted=e.ts_query_is_pattern_rooted,Module._ts_query_is_pattern_non_local=_ts_query_is_pattern_non_local=e.ts_query_is_pattern_non_local,Module._ts_query_is_pattern_guaranteed_at_step=_ts_query_is_pattern_guaranteed_at_step=e.ts_query_is_pattern_guaranteed_at_step,Module._ts_query_disable_capture=_ts_query_disable_capture=e.ts_query_disable_capture,Module._ts_query_disable_pattern=_ts_query_disable_pattern=e.ts_query_disable_pattern,Module._ts_tree_copy=_ts_tree_copy=e.ts_tree_copy,Module._ts_tree_delete=_ts_tree_delete=e.ts_tree_delete,Module._ts_init=_ts_init=e.ts_init,Module._ts_parser_new_wasm=_ts_parser_new_wasm=e.ts_parser_new_wasm,Module._ts_parser_enable_logger_wasm=_ts_parser_enable_logger_wasm=e.ts_parser_enable_logger_wasm,Module._ts_parser_parse_wasm=_ts_parser_parse_wasm=e.ts_parser_parse_wasm,Module._ts_parser_included_ranges_wasm=_ts_parser_included_ranges_wasm=e.ts_parser_included_ranges_wasm,Module._ts_language_type_is_named_wasm=_ts_language_type_is_named_wasm=e.ts_language_type_is_named_wasm,Module._ts_language_type_is_visible_wasm=_ts_language_type_is_visible_wasm=e.ts_language_type_is_visible_wasm,Module._ts_language_metadata_wasm=_ts_language_metadata_wasm=e.ts_language_metadata_wasm,Module._ts_language_supertypes_wasm=_ts_language_supertypes_wasm=e.ts_language_supertypes_wasm,Module._ts_language_subtypes_wasm=_ts_language_subtypes_wasm=e.ts_language_subtypes_wasm,Module._ts_tree_root_node_wasm=_ts_tree_root_node_wasm=e.ts_tree_root_node_wasm,Module._ts_tree_root_node_with_offset_wasm=_ts_tree_root_node_with_offset_wasm=e.ts_tree_root_node_with_offset_wasm,Module._ts_tree_edit_wasm=_ts_tree_edit_wasm=e.ts_tree_edit_wasm,Module._ts_tree_included_ranges_wasm=_ts_tree_included_ranges_wasm=e.ts_tree_included_ranges_wasm,Module._ts_tree_get_changed_ranges_wasm=_ts_tree_get_changed_ranges_wasm=e.ts_tree_get_changed_ranges_wasm,Module._ts_tree_cursor_new_wasm=_ts_tree_cursor_new_wasm=e.ts_tree_cursor_new_wasm,Module._ts_tree_cursor_copy_wasm=_ts_tree_cursor_copy_wasm=e.ts_tree_cursor_copy_wasm,Module._ts_tree_cursor_delete_wasm=_ts_tree_cursor_delete_wasm=e.ts_tree_cursor_delete_wasm,Module._ts_tree_cursor_reset_wasm=_ts_tree_cursor_reset_wasm=e.ts_tree_cursor_reset_wasm,Module._ts_tree_cursor_reset_to_wasm=_ts_tree_cursor_reset_to_wasm=e.ts_tree_cursor_reset_to_wasm,Module._ts_tree_cursor_goto_first_child_wasm=_ts_tree_cursor_goto_first_child_wasm=e.ts_tree_cursor_goto_first_child_wasm,Module._ts_tree_cursor_goto_last_child_wasm=_ts_tree_cursor_goto_last_child_wasm=e.ts_tree_cursor_goto_last_child_wasm,Module._ts_tree_cursor_goto_first_child_for_index_wasm=_ts_tree_cursor_goto_first_child_for_index_wasm=e.ts_tree_cursor_goto_first_child_for_index_wasm,Module._ts_tree_cursor_goto_first_child_for_position_wasm=_ts_tree_cursor_goto_first_child_for_position_wasm=e.ts_tree_cursor_goto_first_child_for_position_wasm,Module._ts_tree_cursor_goto_next_sibling_wasm=_ts_tree_cursor_goto_next_sibling_wasm=e.ts_tree_cursor_goto_next_sibling_wasm,Module._ts_tree_cursor_goto_previous_sibling_wasm=_ts_tree_cursor_goto_previous_sibling_wasm=e.ts_tree_cursor_goto_previous_sibling_wasm,Module._ts_tree_cursor_goto_descendant_wasm=_ts_tree_cursor_goto_descendant_wasm=e.ts_tree_cursor_goto_descendant_wasm,Module._ts_tree_cursor_goto_parent_wasm=_ts_tree_cursor_goto_parent_wasm=e.ts_tree_cursor_goto_parent_wasm,Module._ts_tree_cursor_current_node_type_id_wasm=_ts_tree_cursor_current_node_type_id_wasm=e.ts_tree_cursor_current_node_type_id_wasm,Module._ts_tree_cursor_current_node_state_id_wasm=_ts_tree_cursor_current_node_state_id_wasm=e.ts_tree_cursor_current_node_state_id_wasm,Module._ts_tree_cursor_current_node_is_named_wasm=_ts_tree_cursor_current_node_is_named_wasm=e.ts_tree_cursor_current_node_is_named_wasm,Module._ts_tree_cursor_current_node_is_missing_wasm=_ts_tree_cursor_current_node_is_missing_wasm=e.ts_tree_cursor_current_node_is_missing_wasm,Module._ts_tree_cursor_current_node_id_wasm=_ts_tree_cursor_current_node_id_wasm=e.ts_tree_cursor_current_node_id_wasm,Module._ts_tree_cursor_start_position_wasm=_ts_tree_cursor_start_position_wasm=e.ts_tree_cursor_start_position_wasm,Module._ts_tree_cursor_end_position_wasm=_ts_tree_cursor_end_position_wasm=e.ts_tree_cursor_end_position_wasm,Module._ts_tree_cursor_start_index_wasm=_ts_tree_cursor_start_index_wasm=e.ts_tree_cursor_start_index_wasm,Module._ts_tree_cursor_end_index_wasm=_ts_tree_cursor_end_index_wasm=e.ts_tree_cursor_end_index_wasm,Module._ts_tree_cursor_current_field_id_wasm=_ts_tree_cursor_current_field_id_wasm=e.ts_tree_cursor_current_field_id_wasm,Module._ts_tree_cursor_current_depth_wasm=_ts_tree_cursor_current_depth_wasm=e.ts_tree_cursor_current_depth_wasm,Module._ts_tree_cursor_current_descendant_index_wasm=_ts_tree_cursor_current_descendant_index_wasm=e.ts_tree_cursor_current_descendant_index_wasm,Module._ts_tree_cursor_current_node_wasm=_ts_tree_cursor_current_node_wasm=e.ts_tree_cursor_current_node_wasm,Module._ts_node_symbol_wasm=_ts_node_symbol_wasm=e.ts_node_symbol_wasm,Module._ts_node_field_name_for_child_wasm=_ts_node_field_name_for_child_wasm=e.ts_node_field_name_for_child_wasm,Module._ts_node_field_name_for_named_child_wasm=_ts_node_field_name_for_named_child_wasm=e.ts_node_field_name_for_named_child_wasm,Module._ts_node_children_by_field_id_wasm=_ts_node_children_by_field_id_wasm=e.ts_node_children_by_field_id_wasm,Module._ts_node_first_child_for_byte_wasm=_ts_node_first_child_for_byte_wasm=e.ts_node_first_child_for_byte_wasm,Module._ts_node_first_named_child_for_byte_wasm=_ts_node_first_named_child_for_byte_wasm=e.ts_node_first_named_child_for_byte_wasm,Module._ts_node_grammar_symbol_wasm=_ts_node_grammar_symbol_wasm=e.ts_node_grammar_symbol_wasm,Module._ts_node_child_count_wasm=_ts_node_child_count_wasm=e.ts_node_child_count_wasm,Module._ts_node_named_child_count_wasm=_ts_node_named_child_count_wasm=e.ts_node_named_child_count_wasm,Module._ts_node_child_wasm=_ts_node_child_wasm=e.ts_node_child_wasm,Module._ts_node_named_child_wasm=_ts_node_named_child_wasm=e.ts_node_named_child_wasm,Module._ts_node_child_by_field_id_wasm=_ts_node_child_by_field_id_wasm=e.ts_node_child_by_field_id_wasm,Module._ts_node_next_sibling_wasm=_ts_node_next_sibling_wasm=e.ts_node_next_sibling_wasm,Module._ts_node_prev_sibling_wasm=_ts_node_prev_sibling_wasm=e.ts_node_prev_sibling_wasm,Module._ts_node_next_named_sibling_wasm=_ts_node_next_named_sibling_wasm=e.ts_node_next_named_sibling_wasm,Module._ts_node_prev_named_sibling_wasm=_ts_node_prev_named_sibling_wasm=e.ts_node_prev_named_sibling_wasm,Module._ts_node_descendant_count_wasm=_ts_node_descendant_count_wasm=e.ts_node_descendant_count_wasm,Module._ts_node_parent_wasm=_ts_node_parent_wasm=e.ts_node_parent_wasm,Module._ts_node_child_with_descendant_wasm=_ts_node_child_with_descendant_wasm=e.ts_node_child_with_descendant_wasm,Module._ts_node_descendant_for_index_wasm=_ts_node_descendant_for_index_wasm=e.ts_node_descendant_for_index_wasm,Module._ts_node_named_descendant_for_index_wasm=_ts_node_named_descendant_for_index_wasm=e.ts_node_named_descendant_for_index_wasm,Module._ts_node_descendant_for_position_wasm=_ts_node_descendant_for_position_wasm=e.ts_node_descendant_for_position_wasm,Module._ts_node_named_descendant_for_position_wasm=_ts_node_named_descendant_for_position_wasm=e.ts_node_named_descendant_for_position_wasm,Module._ts_node_start_point_wasm=_ts_node_start_point_wasm=e.ts_node_start_point_wasm,Module._ts_node_end_point_wasm=_ts_node_end_point_wasm=e.ts_node_end_point_wasm,Module._ts_node_start_index_wasm=_ts_node_start_index_wasm=e.ts_node_start_index_wasm,Module._ts_node_end_index_wasm=_ts_node_end_index_wasm=e.ts_node_end_index_wasm,Module._ts_node_to_string_wasm=_ts_node_to_string_wasm=e.ts_node_to_string_wasm,Module._ts_node_children_wasm=_ts_node_children_wasm=e.ts_node_children_wasm,Module._ts_node_named_children_wasm=_ts_node_named_children_wasm=e.ts_node_named_children_wasm,Module._ts_node_descendants_of_type_wasm=_ts_node_descendants_of_type_wasm=e.ts_node_descendants_of_type_wasm,Module._ts_node_is_named_wasm=_ts_node_is_named_wasm=e.ts_node_is_named_wasm,Module._ts_node_has_changes_wasm=_ts_node_has_changes_wasm=e.ts_node_has_changes_wasm,Module._ts_node_has_error_wasm=_ts_node_has_error_wasm=e.ts_node_has_error_wasm,Module._ts_node_is_error_wasm=_ts_node_is_error_wasm=e.ts_node_is_error_wasm,Module._ts_node_is_missing_wasm=_ts_node_is_missing_wasm=e.ts_node_is_missing_wasm,Module._ts_node_is_extra_wasm=_ts_node_is_extra_wasm=e.ts_node_is_extra_wasm,Module._ts_node_parse_state_wasm=_ts_node_parse_state_wasm=e.ts_node_parse_state_wasm,Module._ts_node_next_parse_state_wasm=_ts_node_next_parse_state_wasm=e.ts_node_next_parse_state_wasm,Module._ts_query_matches_wasm=_ts_query_matches_wasm=e.ts_query_matches_wasm,Module._ts_query_captures_wasm=_ts_query_captures_wasm=e.ts_query_captures_wasm,Module._memset=_memset=e.memset,Module._memcpy=_memcpy=e.memcpy,Module._memmove=_memmove=e.memmove,Module._iswalpha=_iswalpha=e.iswalpha,Module._iswblank=_iswblank=e.iswblank,Module._iswdigit=_iswdigit=e.iswdigit,Module._iswlower=_iswlower=e.iswlower,Module._iswpunct=_iswpunct=e.iswpunct,Module._iswupper=_iswupper=e.iswupper,Module._iswxdigit=_iswxdigit=e.iswxdigit,Module._memchr=_memchr=e.memchr,Module._strlen=_strlen=e.strlen,Module._strcmp=_strcmp=e.strcmp,Module._strncat=_strncat=e.strncat,Module._strncpy=_strncpy=e.strncpy,Module._towlower=_towlower=e.towlower,Module._towupper=_towupper=e.towupper,_setThrew=e.setThrew,__emscripten_stack_restore=e._emscripten_stack_restore,__emscripten_stack_alloc=e._emscripten_stack_alloc,_emscripten_stack_get_current=e.emscripten_stack_get_current,___wasm_apply_data_relocs=e.__wasm_apply_data_relocs}D(assignWasmExports,"assignWasmExports");var wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_high:___stack_high,__stack_low:___stack_low,__stack_pointer:___stack_pointer,__table_base:___table_base,_abort_js:__abort_js,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback,tree_sitter_progress_callback:_tree_sitter_progress_callback,tree_sitter_query_progress_callback:_tree_sitter_query_progress_callback};function callMain(e=[]){var t=resolveGlobalSymbol("main").sym;if(t){e.unshift(thisProgram);var n=e.length,r=stackAlloc((n+1)*4),o=r;e.forEach(a=>{LE_HEAP_STORE_U32((o>>2)*4,stringToUTF8OnStack(a)),o+=4}),LE_HEAP_STORE_U32((o>>2)*4,0);try{var s=t(n,r);return exitJS(s,!0),s}catch(a){return handleException(a)}}}D(callMain,"callMain");function run(e=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}if(preRun(),runDependencies>0){dependenciesFulfilled=run;return}function t(){if(Module.calledRun=!0,!ABORT){initRuntime(),readyPromiseResolve?.(Module),Module.onRuntimeInitialized?.();var n=Module.noInitialRun||!1;n||callMain(e),postRun()}}D(t,"doRun"),Module.setStatus?(Module.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>Module.setStatus(""),1),t()},1)):t()}D(run,"run");var wasmExports;return wasmExports=await createWasm(),run(),runtimeInitialized?moduleRtn=Module:moduleRtn=new Promise((e,t)=>{readyPromiseResolve=e,readyPromiseReject=t}),moduleRtn}async function Qp(e){return Yp??=await lk(e)}function eg(){return!!Yp}function ng(e,t,n,r){if(e.length!==3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 2, got ${e.length-1}`);if(!Hp(e[1]))throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}"`);let o=n==="eq?"||n==="any-eq?",s=!n.startsWith("any-");if(Hp(e[2])){let a=e[1].name,l=e[2].name;r[t].push(c=>{let d=[],u=[];for(let m of c)m.name===a&&d.push(m.node),m.name===l&&u.push(m.node);let f=D((m,p,g)=>g?m.text===p.text:m.text!==p.text,"compare");return s?d.every(m=>u.some(p=>f(m,p,o))):d.some(m=>u.some(p=>f(m,p,o)))})}else{let a=e[1].name,l=e[2].value,c=D(u=>u.text===l,"matches"),d=D(u=>u.text!==l,"doesNotMatch");r[t].push(u=>{let f=[];for(let p of u)p.name===a&&f.push(p.node);let m=o?c:d;return s?f.every(m):f.some(m)})}}function rg(e,t,n,r){if(e.length!==3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 2, got ${e.length-1}.`);if(e[1].type!=="capture")throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}".`);if(e[2].type!=="string")throw new Error(`Second argument of \`#${n}\` predicate must be a string. Got @${e[2].name}.`);let o=n==="match?"||n==="any-match?",s=!n.startsWith("any-"),a=e[1].name,l=new RegExp(e[2].value);r[t].push(c=>{let d=[];for(let f of c)f.name===a&&d.push(f.node.text);let u=D((f,m)=>m?l.test(f):!l.test(f),"test");return d.length===0?!o:s?d.every(f=>u(f,o)):d.some(f=>u(f,o))})}function sg(e,t,n,r){if(e.length<2)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected at least 1. Got ${e.length-1}.`);if(e[1].type!=="capture")throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}".`);let o=n==="any-of?",s=e[1].name,a=e.slice(2);if(!a.every(wd))throw new Error(`Arguments to \`#${n}\` predicate must be strings.".`);let l=a.map(c=>c.value);r[t].push(c=>{let d=[];for(let u of c)u.name===s&&d.push(u.node.text);return d.length===0?!o:d.every(u=>l.includes(u))===o})}function ig(e,t,n,r,o){if(e.length<2||e.length>3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 1 or 2. Got ${e.length-1}.`);if(!e.every(wd))throw new Error(`Arguments to \`#${n}\` predicate must be strings.".`);let s=n==="is?"?r:o;s[t]||(s[t]={}),s[t][e[1].value]=e[2]?.value??null}function og(e,t,n){if(e.length<2||e.length>3)throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${e.length-1}.`);if(!e.every(wd))throw new Error('Arguments to `#set!` predicate must be strings.".');n[t]||(n[t]={}),n[t][e[1].value]=e[2]?.value??null}function ag(e,t,n,r,o,s,a,l,c,d,u){if(t===ck){let f=r[n];s.push({type:"capture",name:f})}else if(t===dk)s.push({type:"string",value:o[n]});else if(s.length>0){if(s[0].type!=="string")throw new Error("Predicates must begin with a literal value");let f=s[0].value;switch(f){case"any-not-eq?":case"not-eq?":case"any-eq?":case"eq?":ng(s,e,f,a);break;case"any-not-match?":case"not-match?":case"any-match?":case"match?":rg(s,e,f,a);break;case"not-any-of?":case"any-of?":sg(s,e,f,a);break;case"is?":case"is-not?":ig(s,e,f,d,u);break;case"set!":og(s,e,c);break;default:l[e].push({operator:f,operands:s.slice(1)})}s.length=0}}var nk,D,_F,jp,re,fd,kt,hn,Si,St,Xn,M,Wp,rk,Bp,sk,Up,ik,ok,ak,_d,lk,Yp,Q,md,pd,zp,bd,ck,dk,uk,bF,Hp,wd,sn,wi,Gp,lg,xd=z(()=>{I();nk=Object.defineProperty,D=(e,t)=>nk(e,"name",{value:t,configurable:!0}),_F=class{static{D(this,"Edit")}startPosition;oldEndPosition;newEndPosition;startIndex;oldEndIndex;newEndIndex;constructor({startIndex:e,oldEndIndex:t,newEndIndex:n,startPosition:r,oldEndPosition:o,newEndPosition:s}){this.startIndex=e>>>0,this.oldEndIndex=t>>>0,this.newEndIndex=n>>>0,this.startPosition=r,this.oldEndPosition=o,this.newEndPosition=s}editPoint(e,t){let n=t,r={...e};if(t>=this.oldEndIndex){n=this.newEndIndex+(t-this.oldEndIndex);let o=e.row;r.row=this.newEndPosition.row+(e.row-this.oldEndPosition.row),r.column=o===this.oldEndPosition.row?this.newEndPosition.column+(e.column-this.oldEndPosition.column):e.column}else t>this.startIndex&&(n=this.newEndIndex,r.row=this.newEndPosition.row,r.column=this.newEndPosition.column);return{point:r,index:n}}editRange(e){let t={startIndex:e.startIndex,startPosition:{...e.startPosition},endIndex:e.endIndex,endPosition:{...e.endPosition}};return e.endIndex>=this.oldEndIndex?e.endIndex!==Number.MAX_SAFE_INTEGER&&(t.endIndex=this.newEndIndex+(e.endIndex-this.oldEndIndex),t.endPosition={row:this.newEndPosition.row+(e.endPosition.row-this.oldEndPosition.row),column:e.endPosition.row===this.oldEndPosition.row?this.newEndPosition.column+(e.endPosition.column-this.oldEndPosition.column):e.endPosition.column},t.endIndexthis.startIndex&&(t.endIndex=this.startIndex,t.endPosition={...this.startPosition}),e.startIndex>=this.oldEndIndex?(t.startIndex=this.newEndIndex+(e.startIndex-this.oldEndIndex),t.startPosition={row:this.newEndPosition.row+(e.startPosition.row-this.oldEndPosition.row),column:e.startPosition.row===this.oldEndPosition.row?this.newEndPosition.column+(e.startPosition.column-this.oldEndPosition.column):e.startPosition.column},t.startIndexthis.startIndex&&(t.startIndex=this.startIndex,t.startPosition={...this.startPosition}),t}},jp=2,re=4,fd=4*re,kt=5*re,hn=2*re,Si=2*re+2*hn,St={row:0,column:0},Xn=Symbol("INTERNAL");D(_s,"assertInternal");D(xi,"isPoint");D(qp,"setModule");D(bs,"newFinalizer");Wp=bs(e=>{M._ts_lookahead_iterator_delete(e)}),rk=class{static{D(this,"LookaheadIterator")}0=0;language;positioned=!1;constructor(e,t,n){_s(e),this[0]=t,this.language=n,Wp?.register(this,t,this)}get currentTypeId(){return this.positioned?M._ts_lookahead_iterator_current_symbol(this[0]):null}get currentType(){let e=this.currentTypeId;return e===null?null:this.language.types[e]??M.UTF8ToString(M._ts_language_symbol_name(this.language[0],e))}delete(){Wp?.unregister(this),M._ts_lookahead_iterator_delete(this[0]),this[0]=0}reset(e,t){return M._ts_lookahead_iterator_reset(this[0],e[0],t)?(this.language=e,this.positioned=!1,!0):!1}resetState(e){return M._ts_lookahead_iterator_reset_state(this[0],e)?(this.positioned=!1,!0):!1}[Symbol.iterator](){return{next:D(()=>{this.positioned=!!M._ts_lookahead_iterator_next(this[0]);let e=this.currentType;return e===null?{done:!0,value:""}:{done:!1,value:e}},"next")}}};D(yd,"getText");Bp=bs(e=>{M._ts_tree_delete(e)}),sk=class gd{static{D(this,"Tree")}0=0;textCallback;language;constructor(t,n,r,o){_s(t),this[0]=n,this.language=r,this.textCallback=o,Bp?.register(this,n,this)}copy(){let t=M._ts_tree_copy(this[0]);return new gd(Xn,t,this.language,this.textCallback)}delete(){Bp?.unregister(this),M._ts_tree_delete(this[0]),this[0]=0}get rootNode(){return M._ts_tree_root_node_wasm(this[0]),We(this)}rootNodeWithOffset(t,n){let r=Q+kt;return M.setValue(r,t,"i32"),jt(r+re,n),M._ts_tree_root_node_with_offset_wasm(this[0]),We(this)}edit(t){Kp(t),M._ts_tree_edit_wasm(this[0])}walk(){return this.rootNode.walk()}getChangedRanges(t){if(!(t instanceof gd))throw new TypeError("Argument must be a Tree");M._ts_tree_get_changed_ranges_wasm(this[0],t[0]);let n=M.getValue(Q,"i32"),r=M.getValue(Q+re,"i32"),o=new Array(n);if(n>0){let s=r;for(let a=0;a0){let o=n;for(let s=0;s{M._ts_tree_cursor_delete_wasm(e)}),ik=class Vp{static{D(this,"TreeCursor")}0=0;1=0;2=0;3=0;tree;constructor(t,n){_s(t),this.tree=n,Tt(this),Up?.register(this,this.tree[0],this)}copy(){let t=new Vp(Xn,this.tree);return M._ts_tree_cursor_copy_wasm(this.tree[0]),Tt(t),t}delete(){Up?.unregister(this),Fe(this),M._ts_tree_cursor_delete_wasm(this.tree[0]),this[0]=this[1]=this[2]=0}get currentNode(){return Fe(this),M._ts_tree_cursor_current_node_wasm(this.tree[0]),We(this.tree)}get currentFieldId(){return Fe(this),M._ts_tree_cursor_current_field_id_wasm(this.tree[0])}get currentFieldName(){return this.tree.language.fields[this.currentFieldId]}get currentDepth(){return Fe(this),M._ts_tree_cursor_current_depth_wasm(this.tree[0])}get currentDescendantIndex(){return Fe(this),M._ts_tree_cursor_current_descendant_index_wasm(this.tree[0])}get nodeType(){return this.tree.language.types[this.nodeTypeId]||"ERROR"}get nodeTypeId(){return Fe(this),M._ts_tree_cursor_current_node_type_id_wasm(this.tree[0])}get nodeStateId(){return Fe(this),M._ts_tree_cursor_current_node_state_id_wasm(this.tree[0])}get nodeId(){return Fe(this),M._ts_tree_cursor_current_node_id_wasm(this.tree[0])}get nodeIsNamed(){return Fe(this),M._ts_tree_cursor_current_node_is_named_wasm(this.tree[0])===1}get nodeIsMissing(){return Fe(this),M._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0])===1}get nodeText(){Fe(this);let t=M._ts_tree_cursor_start_index_wasm(this.tree[0]),n=M._ts_tree_cursor_end_index_wasm(this.tree[0]);M._ts_tree_cursor_start_position_wasm(this.tree[0]);let r=Mr(Q);return yd(this.tree,t,n,r)}get startPosition(){return Fe(this),M._ts_tree_cursor_start_position_wasm(this.tree[0]),Mr(Q)}get endPosition(){return Fe(this),M._ts_tree_cursor_end_position_wasm(this.tree[0]),Mr(Q)}get startIndex(){return Fe(this),M._ts_tree_cursor_start_index_wasm(this.tree[0])}get endIndex(){return Fe(this),M._ts_tree_cursor_end_index_wasm(this.tree[0])}gotoFirstChild(){Fe(this);let t=M._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);return Tt(this),t===1}gotoLastChild(){Fe(this);let t=M._ts_tree_cursor_goto_last_child_wasm(this.tree[0]);return Tt(this),t===1}gotoParent(){Fe(this);let t=M._ts_tree_cursor_goto_parent_wasm(this.tree[0]);return Tt(this),t===1}gotoNextSibling(){Fe(this);let t=M._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);return Tt(this),t===1}gotoPreviousSibling(){Fe(this);let t=M._ts_tree_cursor_goto_previous_sibling_wasm(this.tree[0]);return Tt(this),t===1}gotoDescendant(t){Fe(this),M._ts_tree_cursor_goto_descendant_wasm(this.tree[0],t),Tt(this)}gotoFirstChildForIndex(t){Fe(this),M.setValue(Q+fd,t,"i32");let n=M._ts_tree_cursor_goto_first_child_for_index_wasm(this.tree[0]);return Tt(this),n===1}gotoFirstChildForPosition(t){Fe(this),jt(Q+fd,t);let n=M._ts_tree_cursor_goto_first_child_for_position_wasm(this.tree[0]);return Tt(this),n===1}reset(t){ue(t),Fe(this,Q+kt),M._ts_tree_cursor_reset_wasm(this.tree[0]),Tt(this)}resetTo(t){Fe(this,Q),Fe(t,Q+fd),M._ts_tree_cursor_reset_to_wasm(this.tree[0],t.tree[0]),Tt(this)}},ok=class{static{D(this,"Node")}0=0;_children;_namedChildren;constructor(e,{id:t,tree:n,startIndex:r,startPosition:o,other:s}){_s(e),this[0]=s,this.id=t,this.tree=n,this.startIndex=r,this.startPosition=o}id;startIndex;startPosition;tree;get typeId(){return ue(this),M._ts_node_symbol_wasm(this.tree[0])}get grammarId(){return ue(this),M._ts_node_grammar_symbol_wasm(this.tree[0])}get type(){return this.tree.language.types[this.typeId]||"ERROR"}get grammarType(){return this.tree.language.types[this.grammarId]||"ERROR"}get isNamed(){return ue(this),M._ts_node_is_named_wasm(this.tree[0])===1}get isExtra(){return ue(this),M._ts_node_is_extra_wasm(this.tree[0])===1}get isError(){return ue(this),M._ts_node_is_error_wasm(this.tree[0])===1}get isMissing(){return ue(this),M._ts_node_is_missing_wasm(this.tree[0])===1}get hasChanges(){return ue(this),M._ts_node_has_changes_wasm(this.tree[0])===1}get hasError(){return ue(this),M._ts_node_has_error_wasm(this.tree[0])===1}get endIndex(){return ue(this),M._ts_node_end_index_wasm(this.tree[0])}get endPosition(){return ue(this),M._ts_node_end_point_wasm(this.tree[0]),Mr(Q)}get text(){return yd(this.tree,this.startIndex,this.endIndex,this.startPosition)}get parseState(){return ue(this),M._ts_node_parse_state_wasm(this.tree[0])}get nextParseState(){return ue(this),M._ts_node_next_parse_state_wasm(this.tree[0])}equals(e){return this.tree===e.tree&&this.id===e.id}child(e){return ue(this),M._ts_node_child_wasm(this.tree[0],e),We(this.tree)}namedChild(e){return ue(this),M._ts_node_named_child_wasm(this.tree[0],e),We(this.tree)}childForFieldId(e){return ue(this),M._ts_node_child_by_field_id_wasm(this.tree[0],e),We(this.tree)}childForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1?this.childForFieldId(t):null}fieldNameForChild(e){ue(this);let t=M._ts_node_field_name_for_child_wasm(this.tree[0],e);return t?M.AsciiToString(t):null}fieldNameForNamedChild(e){ue(this);let t=M._ts_node_field_name_for_named_child_wasm(this.tree[0],e);return t?M.AsciiToString(t):null}childrenForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1&&t!==0?this.childrenForFieldId(t):[]}childrenForFieldId(e){ue(this),M._ts_node_children_by_field_id_wasm(this.tree[0],e);let t=M.getValue(Q,"i32"),n=M.getValue(Q+re,"i32"),r=new Array(t);if(t>0){let o=n;for(let s=0;s0){let n=t;for(let r=0;r0){let n=t;for(let r=0;r0){let d=l;for(let u=0;u=e.oldEndIndex){this.startIndex=e.newEndIndex+(this.startIndex-e.oldEndIndex);let t,n;this.startPosition.row>e.oldEndPosition.row?(t=this.startPosition.row-e.oldEndPosition.row,n=this.startPosition.column):(t=0,n=this.startPosition.column,this.startPosition.column>=e.oldEndPosition.column&&(n=this.startPosition.column-e.oldEndPosition.column)),t>0?(this.startPosition.row+=t,this.startPosition.column=n):this.startPosition.column+=n}else this.startIndex>e.startIndex&&(this.startIndex=e.newEndIndex,this.startPosition.row=e.newEndPosition.row,this.startPosition.column=e.newEndPosition.column)}toString(){ue(this);let e=M._ts_node_to_string_wasm(this.tree[0]),t=M.AsciiToString(e);return M._free(e),t}};D(hd,"unmarshalCaptures");D(ue,"marshalNode");D(We,"unmarshalNode");D(Fe,"marshalTreeCursor");D(Tt,"unmarshalTreeCursor");D(jt,"marshalPoint");D(Mr,"unmarshalPoint");D(Jp,"marshalRange");D(Sa,"unmarshalRange");D(Kp,"marshalEdit");D(Xp,"unmarshalLanguageMetadata");ak=/^tree_sitter_\w+$/,_d=class xa{static{D(this,"Language")}0=0;types;fields;constructor(t,n){_s(t),this[0]=n,this.types=new Array(M._ts_language_symbol_count(this[0]));for(let r=0,o=this.types.length;r0){let o=n;for(let s=0;s0){let s=r;for(let a=0;a(ud(),dd))).readFile(t);else{let o=await fetch(t);if(!o.ok){let a=await o.text();throw new Error(`Language.load failed with status ${o.status}. -${a}`)}let s=o.clone();try{n=await WebAssembly.compileStreaming(o)}catch(a){console.error("wasm streaming compile failed:",a),console.error("falling back to ArrayBuffer instantiation"),n=new Uint8Array(await s.arrayBuffer())}}let r=await C.loadWebAssemblyModule(n,{loadAsync:!0});return _a.loadFromWasmExports(r,{sync:!1})}static loadFromWasmExports(t,{sync:n}){let r=Object.keys(t),o=r.find(a=>DS.test(a)&&!a.includes("external_scanner_"));if(!o)throw console.log(`Couldn't find language function in Wasm file. Symbols: -${JSON.stringify(r,null,2)}`),new Error(`Language.${n?"loadSync":"load"} failed: no language function found in Wasm file`);let s=t[o]();return new _a(Xn,s)}static loadSync(t){let n=C.loadWebAssemblyModule(t,{loadAsync:!1});return _a.loadFromWasmExports(n,{sync:!0})}};D(Lp,"Module");jS=Lp,Dp=null;D(jp,"initializeBinding");D(Wp,"checkModule");Ap=hs(e=>{C._ts_parser_delete(e[0]),C._free(e[1])}),dd=class{static{D(this,"Parser")}0=0;1=0;logCallback=null;language=null;static async init(e){$p(await jp(e)),ee=C._ts_init(),sd=C.getValue(ee,"i32"),id=C.getValue(ee+ne,"i32")}constructor(){this.initialize(),Ap?.register(this,[this[0],this[1]],this)}initialize(){if(!Wp())throw new Error("cannot construct a Parser before calling `init()`");C._ts_parser_new_wasm(),this[0]=C.getValue(ee,"i32"),this[1]=C.getValue(ee+ne,"i32")}delete(){Ap?.unregister(this),C._ts_parser_delete(this[0]),C._free(this[1]),this[0]=0,this[1]=0}setLanguage(e){let t;if(!e)t=0,this.language=null;else if(e.constructor===cd){t=e[0];let n=C._ts_language_abi_version(t);if(ne.slice(l);else if(typeof e=="function")C.currentParseCallback=e;else throw new Error("Argument must be a string or a function");n?.progressCallback?C.currentProgressCallback=n.progressCallback:C.currentProgressCallback=null,this.logCallback?(C.currentLogCallback=this.logCallback,C._ts_parser_enable_logger_wasm(this[0],1)):(C.currentLogCallback=null,C._ts_parser_enable_logger_wasm(this[0],0));let r=0,o=0;if(n?.includedRanges){r=n.includedRanges.length,o=C._calloc(r,wi);let l=o;for(let c=0;c0){let r=t;for(let o=0;oe.type==="capture","isCaptureStep"),ud=D(e=>e.type==="string","isStringStep"),rn={Syntax:1,NodeName:2,FieldName:3,CaptureName:4,PatternStructure:5},_i=class Bp extends Error{constructor(t,n,r,o){super(Bp.formatMessage(t,n)),this.kind=t,this.info=n,this.index=r,this.length=o,this.name="QueryError"}kind;info;index;length;static{D(this,"QueryError")}static formatMessage(t,n){switch(t){case rn.NodeName:return`Bad node name '${n.word}'`;case rn.FieldName:return`Bad field name '${n.word}'`;case rn.CaptureName:return`Bad capture name @${n.word}`;case rn.PatternStructure:return`Bad pattern structure at offset ${n.suffix}`;case rn.Syntax:return`Bad syntax at offset ${n.suffix}`}}};D(Up,"parseAnyPredicate");D(Hp,"parseMatchPredicate");D(zp,"parseAnyOfPredicate");D(Gp,"parseIsPredicate");D(qp,"parseSetDirective");D(Vp,"parsePattern");Tp=hs(e=>{C._ts_query_delete(e)}),Jp=class{static{D(this,"Query")}0=0;exceededMatchLimit;textPredicates;captureNames;captureQuantifiers;predicates;setProperties;assertedProperties;refutedProperties;matchLimit;constructor(e,t){let n=C.lengthBytesUTF8(t),r=C._malloc(n+1);C.stringToUTF8(t,r,n+1);let o=C._ts_query_new(e[0],r,n,ee,ee+ne);if(!o){let _=C.getValue(ee+ne,"i32"),y=C.getValue(ee,"i32"),b=C.UTF8ToString(r,y).length,w=t.slice(b,b+100).split(` -`)[0],S=w.match(US)?.[0]??"";switch(C._free(r),_){case rn.Syntax:throw new _i(rn.Syntax,{suffix:`${b}: '${w}'...`},b,0);case rn.NodeName:throw new _i(_,{word:S},b,S.length);case rn.FieldName:throw new _i(_,{word:S},b,S.length);case rn.CaptureName:throw new _i(_,{word:S},b,S.length);case rn.PatternStructure:throw new _i(_,{suffix:`${b}: '${w}'...`},b,0)}}let s=C._ts_query_string_count(o),a=C._ts_query_capture_count(o),l=C._ts_query_pattern_count(o),c=new Array(a),d=new Array(l),u=new Array(s);for(let _=0;_s)throw new Error("`startIndex` cannot be greater than `endIndex`");if(r!==wt&&(n.row>r.row||n.row===r.row&&n.column>r.column))throw new Error("`startPosition` cannot be greater than `endPosition`");if(d!==0&&c>d)throw new Error("`startContainingIndex` cannot be greater than `endContainingIndex`");if(l!==wt&&(a.row>l.row||a.row===l.row&&a.column>l.column))throw new Error("`startContainingPosition` cannot be greater than `endContainingPosition`");m&&(C.currentQueryProgressCallback=m),fe(e),C._ts_query_matches_wasm(this[0],e.tree[0],n.row,n.column,r.row,r.column,o,s,a.row,a.column,l.row,l.column,c,d,u,f);let p=C.getValue(ee,"i32"),g=C.getValue(ee+ne,"i32"),h=C.getValue(ee+2*ne,"i32"),_=new Array(p);this.exceededMatchLimit=!!h;let y=0,b=g;for(let w=0;wN(M))){_[y]={patternIndex:S,captures:M};let N=this.setProperties[S];_[y].setProperties=N;let A=this.assertedProperties[S];_[y].assertedProperties=A;let R=this.refutedProperties[S];_[y].refutedProperties=R,y++}}return _.length=y,C._free(g),C.currentQueryProgressCallback=null,_}captures(e,t={}){let n=t.startPosition??wt,r=t.endPosition??wt,o=t.startIndex??0,s=t.endIndex??0,a=t.startContainingPosition??wt,l=t.endContainingPosition??wt,c=t.startContainingIndex??0,d=t.endContainingIndex??0,u=t.matchLimit??4294967295,f=t.maxStartDepth??4294967295,m=t.progressCallback;if(typeof u!="number")throw new Error("Arguments must be numbers");if(this.matchLimit=u,s!==0&&o>s)throw new Error("`startIndex` cannot be greater than `endIndex`");if(r!==wt&&(n.row>r.row||n.row===r.row&&n.column>r.column))throw new Error("`startPosition` cannot be greater than `endPosition`");if(d!==0&&c>d)throw new Error("`startContainingIndex` cannot be greater than `endContainingIndex`");if(l!==wt&&(a.row>l.row||a.row===l.row&&a.column>l.column))throw new Error("`startContainingPosition` cannot be greater than `endContainingPosition`");m&&(C.currentQueryProgressCallback=m),fe(e),C._ts_query_captures_wasm(this[0],e.tree[0],n.row,n.column,r.row,r.column,o,s,a.row,a.column,l.row,l.column,c,d,u,f);let p=C.getValue(ee,"i32"),g=C.getValue(ee+ne,"i32"),h=C.getValue(ee+2*ne,"i32"),_=new Array;this.exceededMatchLimit=!!h;let y=new Array,b=g;for(let w=0;wN(y))){let N=y[M],A=this.setProperties[S];N.setProperties=A;let R=this.assertedProperties[S];N.assertedProperties=R;let $=this.refutedProperties[S];N.refutedProperties=$,_.push(N)}}return C._free(g),C.currentQueryProgressCallback=null,_}predicatesForPattern(e){return this.predicates[e]}disableCapture(e){let t=C.lengthBytesUTF8(e),n=C._malloc(t+1);C.stringToUTF8(e,n,t+1),C._ts_query_disable_capture(this[0],n,t),C._free(n)}disablePattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);C._ts_query_disable_pattern(this[0],e)}didExceedMatchLimit(){return this.exceededMatchLimit}startIndexForPattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);return C._ts_query_start_byte_for_pattern(this[0],e)}endIndexForPattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);return C._ts_query_end_byte_for_pattern(this[0],e)}patternCount(){return C._ts_query_pattern_count(this[0])}captureIndexForName(e){return this.captureNames.indexOf(e)}isPatternRooted(e){return C._ts_query_is_pattern_rooted(this[0],e)===1}isPatternNonLocal(e){return C._ts_query_is_pattern_non_local(this[0],e)===1}isPatternGuaranteedAtStep(e){return C._ts_query_is_pattern_guaranteed_at_step(this[0],e)===1}}});function Mr(e){return ki[e]}function Sa(e,t){let n=ki[e];return e===".h"&&zS.test(t)?"cpp":n}function _s(){let e=F.env.XDG_CACHE_HOME,t=e&&e.trim()?e.trim():j(ga(),".cache");return j(t,"codeindex","grammars",$e)}function jt(e={}){let t=_s(),n=F.env.CODEINDEX_GRAMMARS_DIR,r=n&&n.trim()&&te(n)?n:void 0,o=te(t)?t:void 0,s=(d,u,f)=>{let m=j(u,"..",GS),p=[];for(let g of[u,te(m)?m:void 0,...f])g!==void 0&&!p.includes(g)&&p.push(g);return{tier:d,dir:u,cacheDir:t,dirs:p}},a=F.env.CODEINDEX_GRAMMAR_DIR??F.env.ULTRAINDEX_GRAMMAR_DIR;if(a&&a.trim()&&te(a))return s("env",a,[]);let l=e.moduleDir??Ce(ya(import.meta.url)),c=[j(l,"grammars"),j(l,"..","..","scripts","grammars"),j(l,"..","scripts","grammars")];for(let d of c)if(te(d))return s("adjacent",d,[r,o]);return r?s("env",r,[o]):o?s("cache",o,[]):{tier:"none",cacheDir:t,dirs:[]}}function ka(){let{dirs:e}=jt(),t=n=>e.some(r=>te(j(r,n)));return t("web-tree-sitter.wasm")?new Set(Ea().filter(n=>t(`${n}.wasm`))):new Set}function qS(e){return jt(e).dir}async function sn(e){let{dirs:t}=jt();if(!t.length)return;let n=r=>{for(let o of t){let s=j(o,r);if(te(s))return s}};if(!Kp){let r=n("web-tree-sitter.wasm");if(!r)return;await dd.init({wasmBinary:le(r)}),Kp=!0,xa=new dd}for(let r of new Set(e)){if(xi.has(r))continue;let o=n(`${r}.wasm`),s=o?(()=>{try{let a=Ae(o);return`${o}:${a.size}:${a.mtimeMs}`}catch{return`${o}:unreadable`}})():`missing:${t.join("|")}`;if(wa.get(r)!==s){if(!o){wa.set(r,s);continue}try{xi.set(r,await cd.load(new Uint8Array(le(o)))),wa.delete(r)}catch{wa.set(r,s)}}}}function Ea(){return[...new Set(Object.values(ki))]}function Wt(e){let t=new Set;for(let n of e){for(let o of HS[n]??[])t.add(o);let r=ki[n];r!==void 0&&t.add(r),n===".h"&&t.add("cpp")}return[...t].sort()}function Le(e){return xi.has(e)}function md(e){return xi.get(e)}function bs(e){let t=xi.get(e);return!xa||!t?null:(xa.setLanguage(t),xa)}var Si,ys,ki,HS,zS,GS,Kp,xa,xi,wa,ft=H(()=>{"use strict";I();ve();hi();pe();yi();fd();ht();Si=new Set(["typescript","tsx","javascript","python","go","rust","java","ruby","c","cpp","c_sharp","php","scala","bash","lua"]),ys=new Set(["kotlin","elixir","zig","hcl","terraform","solidity"]),ki={".ts":"typescript",".mts":"typescript",".cts":"typescript",".tsx":"tsx",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".go":"go",".rs":"rust",".java":"java",".rb":"ruby",".rake":"ruby",".c":"c",".h":"c",".cc":"cpp",".cpp":"cpp",".cxx":"cpp",".hpp":"cpp",".hh":"cpp",".cs":"c_sharp",".php":"php",".scala":"scala",".sc":"scala",".sh":"bash",".bash":"bash",".lua":"lua",".kt":"kotlin",".kts":"kotlin",".ex":"elixir",".exs":"elixir",".zig":"zig",".hcl":"hcl",".tf":"terraform",".tfvars":"terraform",".sol":"solidity"},HS={".vue":["javascript","tsx","typescript"],".svelte":["javascript","tsx","typescript"],".astro":["typescript"]};zS=/^[ \t]*(?:namespace(?:[ \t]+[A-Za-z_][\w:]*)?\s*\{|using[ \t]+namespace[ \t]|template[ \t]*<|class[ \t]+(?:[A-Z_][A-Z0-9_]*[ \t]+)?[A-Za-z_]\w*(?:[ \t]+final)?[ \t]*(?:[:;{]|$)|(?:public|private|protected)[ \t]*:(?!:)|#[ \t]*include[ \t]*<[a-z_]+>|extern[ \t]+"C\+\+")/m;GS="grammars-extended";Kp=!1,xa=null,xi=new Map,wa=new Map});function Tt(e,t){let n=[...e.namedChildren].reverse();for(;n.length;){let r=n.pop();if(t(r))return r;let o=r.namedChildren;for(let s=o.length-1;s>=0;s--)n.push(o[s])}}function Xp(e){switch(e.type){case"operator_name":return e.text.replace(/\s+/g,"").replace(/^operator(?=\w)/,"operator ");case"operator_cast":{let t=e.text.split("(")[0].replace(/\s+/g," ").replace(/\s*([*&])\s*/g,"$1").trim();return t.length>8?t:void 0}case"destructor_name":return e.text.replace(/\s+/g,"")}}function pd(e){return e.childForFieldName("declarator")??(VS.has(e.type)?e.namedChildren[0]??null:null)}function Ar(e){let t=e.childForFieldName("name");if(t?.text)return t.text;let n=e.childForFieldName("declarator");for(;n;){let s=n.childForFieldName("name");if(s?.text){if(s.type==="qualified_identifier"){n=s;continue}return Xp(s)??s.text}if(n.namedChildren.length===0&&/(^|_)identifier$/.test(n.type))return n.text;let a=Xp(n);if(a)return a;let l=pd(n);if(!l||l===n)break;n=l}let o=Tt(e,s=>s.type==="variable_declarator")?.childForFieldName("name");if(o?.text)return o.text;for(let s of e.namedChildren)if(/(^|_)(identifier|name|constant)$/.test(s.type))return s.text}function Cr(e){if(!e)return;let t=e.namedChildren;if(t.length===0)return ws.test(e.type)?e.text:void 0;let n=e.childForFieldName("name")??e.childForFieldName("property")??e.childForFieldName("attribute")??e.childForFieldName("field")??e.childForFieldName("function");if(n)return Cr(n);let r=t[t.length-1];return r&&r!==e?Cr(r):void 0}function Ei(e){if(!e||e.namedChildren.length===0)return;let t=e.childForFieldName("object")??e.childForFieldName("operand")??e.childForFieldName("value")??e.childForFieldName("path")??e.childForFieldName("expression")??e.childForFieldName("argument")??e.childForFieldName("receiver")??e.childForFieldName("table"),n=t?Cr(t):void 0;return n&&/^[A-Za-z_]\w*$/.test(n)?n:void 0}function St(e){if(!e)return;let t=e.childForFieldName("type")??e.childForFieldName("name");if(t&&/generic|qualified|scoped|nested/.test(e.type))return St(t);if(e.namedChildren.length===0)return Zp.test(e.type)?e.text:void 0;let n,r=o=>{if(o.namedChildren.length===0){Zp.test(o.type)&&(n=o.text);return}if(!/arguments|parameters|argument_list/.test(o.type))for(let s of o.namedChildren)r(s)};return r(e),n}var ws,va,VS,Zp,Ra=H(()=>{"use strict";I();ws=/(^|_)(identifier|name|constant|word)$/,va=/(^|_)comment$/;VS=new Set(["reference_declarator","parenthesized_declarator"]);Zp=/identifier|constant|(^|_)name$/});function ZS(e){let t=[],n=e.previousNamedSibling,r=e.startPosition.row;for(;n;){let s=JS.test(n.type);if(!s&&!XS.test(n.type)||r-n.endPosition.row>1)break;s&&t.push(n),r=n.startPosition.row,n=n.previousNamedSibling}if(!t.length)return[];t.reverse();let o=[];for(let s of t)for(let a of s.text.split(/\r?\n/))o.push(Lt(a));return o}function Zn(e){let t=e;for(;t;){let n=ZS(t);if(n.length){let s=xr(n);if(s)return s}let r=t.parent;if(!r||!KS.has(r.type))return;let o=t.previousNamedSibling;if(o&&!YS.test(o.type))return;t=r}}function Yp(e){let n=e.childForFieldName("body")?.namedChildren[0];if(!n)return;let r=n.type==="string"?n:n.type==="expression_statement"?n.namedChildren[0]:void 0;if(!(!r||r.type!=="string"))return xr(r.text.split(/\r?\n/).map(Lt))}var JS,KS,XS,YS,gd=H(()=>{"use strict";I();ii();JS=/(^|_)comment$/,KS=new Set(["export_statement","ambient_declaration","decorated_definition","template_declaration","labeled_statement","lexical_declaration","variable_declaration","type_declaration","const_declaration","var_declaration","body_statement","body"]),XS=/^(attribute_item|decorator)$/;YS=/decorator|annotation|modifiers/});function ot(e){if(!e)return[];let t=[];for(let n of e.namedChildren){if(/arguments|parameters/.test(n.type))continue;let r=St(n);r&&t.push(r)}return t}function Qp(e,t){if(!t.self)return[];let n=qe(e,"class_heritage");if(!n)return[];let r=n.namedChildren.some(s=>s.type.endsWith("_clause")),o=[];for(let s of ot(r?qe(n,"extends_clause"):n))o.push(Ge("extends",t.self,s,e));for(let s of ot(qe(n,"implements_clause")))o.push(Ge("implements",t.self,s,e));return o}function vi(e,t,n){return ot(e).map((o,s)=>Ge(s===0?"extends":"implements",t,o,n))}function rk(e){for(let t=e.parent;t&&t.type!=="module";t=t.parent)if(t.type==="if_statement"&&nk.test(t.childForFieldName("condition")?.text??""))return!0;return!1}function ik(e){let t=new Set,n=!1,r=c=>{if(c?.type!=="string"||c.namedChildren.some(u=>u.type==="interpolation"))return;let d=c.namedChildren.filter(u=>u.type==="string_content");return d.length<=1?d[0]?.text??"":void 0},o=c=>{if(c?.type!=="list"&&c?.type!=="tuple")return;let d=[];for(let u of c.namedChildren){let f=r(u);if(f===void 0)return;d.push(f)}return d},s=c=>c?.type==="identifier"&&c.text==="__all__",a=c=>{let d=c.namedChildren[0];if(!d)return[];if((d.type==="assignment"||d.type==="augmented_assignment")&&s(d.childForFieldName("left"))){if(d.type==="assignment")n=!0;else if(d.childForFieldName("operator")?.text!=="+=")return;return o(d.childForFieldName("right"))}let u=d.type==="call"?d.childForFieldName("function"):null;if(u?.type!=="attribute"||!s(u.childForFieldName("object")))return[];let f=d.childForFieldName("arguments")?.namedChildren,m=u.childForFieldName("attribute")?.text;if(m==="extend"&&f?.length===1)return o(f[0]);let p=m==="append"&&f?.length===1?r(f[0]):void 0;return p===void 0?void 0:[p]},l=c=>{for(let d of c.namedChildren){if(sk.has(d.type)){if(!l(d))return!1;continue}if(d.type!=="expression_statement")continue;let u=a(d);if(u===void 0)return!1;for(let f of u)t.add(f)}return!0};return l(e)&&n?t:void 0}function ig(e){if(e.type!=="type_definition")return[];let t=bd(e),n=t?.childForFieldName("name")?.text;return t&&n&&n!==Ar(e)?[{name:n,kind:pg[t.type]}]:[]}function og(e){if(e.childForFieldName("value"))return!1;let t=e.parent;return t?.type!=="preproc_ifdef"||t.namedChildCount<=2||t.childForFieldName("name")?.text!==e.childForFieldName("name")?.text?!1:t.firstChild?.type==="#ifndef"}function ag(e){let t=e.childForFieldName("declarator");for(;t&&t.type!=="qualified_identifier";)t=pd(t);let n=null;for(;t?.type==="qualified_identifier";)n=t.childForFieldName("scope"),t=t.childForFieldName("name");return n?St(n):void 0}function lg(e,t){if(t)return/\b(val|var)\s*$/.exec(e.text.slice(0,t.startIndex-e.startIndex))?.[1]}function Aa(e){if(!e)return;if(e.type==="identifier")return{name:e.text};if(e.type!=="dot_index_expression"&&e.type!=="method_index_expression")return;let t=e.childForFieldName("table"),n=e.childForFieldName("field")??e.childForFieldName("method");return t&&n&&/^[\w.]+$/.test(t.text)?{name:n.text,table:t.text}:void 0}function ug(e){if(e.childForFieldName("left")?.type!=="constant")return;let t=e.childForFieldName("right");if(t?.type==="call")return ak[`${t.childForFieldName("receiver")?.text}.${t.childForFieldName("method")?.text}`]}function ck(e,t){if(t.inFunctionBody||e.type!=="method_definition"||e.childForFieldName("name")?.text!=="constructor")return[];let n=[];for(let r of e.childForFieldName("parameters")?.namedChildren??[]){if(r.type!=="required_parameter"&&r.type!=="optional_parameter"||!r.children.some(s=>s.type==="accessibility_modifier"||s.type==="override_modifier"||s.type==="readonly"))continue;let o=r.childForFieldName("pattern");o?.type==="identifier"&&n.push({name:o.text,kind:"property",node:r})}return n}function dk(e,t){if(t.inFunctionBody||e.type!=="method_declaration")return[];if(!/^__construct$/i.test(e.childForFieldName("name")?.text??""))return[];let n=[];for(let r of e.childForFieldName("parameters")?.namedChildren??[]){if(r.type!=="property_promotion_parameter")continue;let o=r.childForFieldName("name")?.text.replace(/^\$/,"");o&&n.push({name:o,kind:"property",node:r})}return n}var qe,Ge,mg,wd,Ia,eg,hd,QS,tg,ng,ek,Ri,tk,nk,sk,Ma,yd,rg,sg,Ca,pg,bd,cg,gg,ok,dg,ak,lk,fg,_d,xd,hg=H(()=>{"use strict";I();Ra();gd();qe=(e,t)=>e.namedChildren.find(n=>n.type===t),Ge=(e,t,n,r)=>({kind:e,from:t,to:n,line:r.startPosition.row+1});mg=new Set(["interface","trait","enum","protocol","annotation"]),wd=new Set(["function","method","def","constructor","operator"]),Ia=new Set(["function","function_expression","arrow_function","generator_function","class","function_definition","lambda"]),eg=(e,t,n)=>/\b(public|internal)\b/.test(n),hd=(e,t,n)=>!/\b(private|protected)\b/.test(n),QS=e=>!/^local\b/.test(e),tg=(e,t,n)=>/\bpub\b/.test(n),ng=(e,t)=>/^[A-Z]/.test(t),ek=(e,t)=>!t.startsWith("_")||/^__\w+__$/.test(t),Ri=()=>!0,tk=()=>!1,nk=/^(__name__\s*==\s*(["'])__main__\2|(["'])__main__\3\s*==\s*__name__)$/;sk=new Set(["block","if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement"]);Ma=e=>Tt(e,t=>t.type==="function_declarator"||t.type==="operator_cast")!==void 0,yd=e=>t=>t.childrenForFieldName(e).flatMap(n=>/identifier$/.test(n.type)?n.text:[]),rg=e=>(qe(e,"variable_declaration")?.namedChildren??[]).flatMap(t=>t.type==="variable_declarator"?t.childForFieldName("name")?.text??[]:[]),sg=e=>e.childrenForFieldName("declarator").flatMap(t=>t.childForFieldName("name")?.text??[]),Ca=e=>e.childrenForFieldName("declarator").flatMap(t=>t.namedChildren.length>0?Ar(t)??[]:/identifier$/.test(t.type)?t.text:[]),pg={struct_specifier:"struct",union_specifier:"union",enum_specifier:"enum",class_specifier:"class"},bd=e=>{let t=e.childForFieldName("type");return t&&pg[t.type]&&t.childForFieldName("body")?t:void 0};cg={defmodule:"module",defprotocol:"protocol",defimpl:"impl",defstruct:"struct",defexception:"exception",def:"function",defp:"function",defmacro:"macro",defmacrop:"macro",defguard:"guard",defguardp:"guard",defdelegate:"function"},gg=e=>e.type==="binary_operator"&&e.childForFieldName("operator")?.text==="when",ok=e=>gg(e)?e.childForFieldName("left")??e:e;dg={public:!0,private:!1,protected:!1,module_function:!0,public_class_method:!0,private_class_method:!1},ak={"Struct.new":"class","Class.new":"class","Data.define":"class","Module.new":"module"};lk=new Set(["resource","data","variable","output","module","provider","locals","terraform"]),fg={lang:"terraform",defs:{block:"block"},containers:new Set(["config_file","body"]),exported:Ri,kindFrom:{block:e=>{let t=e.namedChildren.find(n=>n.type==="identifier")?.text;return t&&lk.has(t)?t:void 0}},nameFrom:{block:e=>{let t=e.namedChildren.filter(n=>n.type==="string_lit").map(n=>n.text.replace(/^"|"$/g,""));return t.length?t.join("."):e.namedChildren.find(n=>n.type==="identifier")?.text}}};_d={lang:"typescript",defs:{function_declaration:"function",generator_function_declaration:"function",function_signature:"function",class_declaration:"class",abstract_class_declaration:"class",interface_declaration:"interface",type_alias_declaration:"type",enum_declaration:"enum",enum_assignment:"enum-member",method_definition:"method",method_signature:"method",abstract_method_signature:"method",property_signature:"property",public_field_definition:"property",call_signature:"call-signature",construct_signature:"construct-signature",index_signature:"index-signature",internal_module:"namespace",module:"namespace",variable_declarator:"const"},containers:new Set(["class_body","export_statement","ambient_declaration","program","lexical_declaration","variable_declaration","interface_body","object_type","enum_body","statement_block","try_statement","catch_clause","finally_clause","if_statement","else_clause","for_statement","for_in_statement","while_statement","do_statement","switch_statement","switch_body","switch_case","switch_default","labeled_statement","return_statement","expression_statement","call_expression","arguments","arrow_function","function_expression","function","parenthesized_expression"]),exported:tk,exportMarkers:new Set(["export_statement","ambient_declaration"]),bareMembers:{enum_body:"enum-member"},nameFrom:{call_signature:()=>"(call)",construct_signature:()=>"(construct)",index_signature:e=>`[${e.namedChildren.find(t=>t.type==="identifier")?.text??"key"}]`},privateMember:e=>{for(let t of e.namedChildren)if(t.type==="accessibility_modifier"&&/^(private|protected)/.test(t.text)||t.type==="private_property_identifier")return!0;return!1},imports:{import_statement:"string"},calls:{call_expression:"function",new_expression:"constructor"},assignments:!0,extraMembers:ck,relationsFrom:{class_declaration:Qp,abstract_class_declaration:Qp,interface_declaration:(e,t)=>t.self?ot(qe(e,"extends_type_clause")).map(n=>Ge("extends",t.self,n,e)):[]}},xd={typescript:_d,tsx:{..._d,lang:"typescript"},javascript:{..._d,lang:"javascript",defs:{function_declaration:"function",generator_function_declaration:"function",class_declaration:"class",method_definition:"method",field_definition:"property",variable_declarator:"const"}},python:{lang:"python",defs:{function_definition:"function",class_definition:"class"},containers:new Set(["block","decorated_definition","module","if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement","match_statement","case_clause"]),exported:ek,publicNames:ik,imports:{import_statement:"path",import_from_statement:"path"},calls:{call:"function"},docstring:!0,relationsFrom:{class_definition:(e,t)=>t.self?ot(e.childForFieldName("superclasses")).map(n=>Ge("extends",t.self,n,e)):[]},extraMembers:(e,t)=>{if(t.inFunctionBody)return[];if(e.type==="import_from_statement"){let s=[],a=e.childForFieldName("module_name");for(let l of e.namedChildren)if(!(a&&l.startIndex===a.startIndex))if(l.type==="aliased_import"){let c=l.namedChildren[0]?.text,d=l.childForFieldName("alias")?.text;d&&(c===d||t.ownerKind===void 0&&t.publicNames?.has(d))&&s.push({name:d,kind:"reexport"})}else l.type==="dotted_name"&&t.ownerKind===void 0&&t.publicNames?.has(l.text)&&s.push({name:l.text,kind:"reexport"});return s}if(e.type!=="expression_statement")return[];let n=e.namedChildren[0];if(!n||n.type!=="assignment")return[];if(rk(e))return[];let r=[];for(let s=n;s?.type==="assignment";s=s.childForFieldName("right")){let a=s.childForFieldName("left");if(a?.type==="identifier")r.push(a.text);else if(a&&/^(pattern_list|tuple_pattern|list_pattern)$/.test(a.type))for(let l of a.namedChildren){let c=l.type==="list_splat_pattern"?l.namedChildren[0]:l;c?.type==="identifier"&&r.push(c.text)}}let o=t.ownerKind==="class"?"field":"const";return r.map(s=>({name:s,kind:o}))}},go:{lang:"go",defs:{function_declaration:"function",method_declaration:"method",type_spec:"type",type_alias:"type",const_spec:"const",var_spec:"var",field_declaration:"field",method_spec:"method",method_elem:"method",package_clause:"package"},containers:new Set(["type_declaration","const_declaration","var_declaration","var_spec_list","source_file","struct_type","interface_type","field_declaration_list"]),exported:ng,imports:{import_declaration:"string"},calls:{call_expression:"function"},parentFrom:{method_declaration:e=>St(e.childForFieldName("receiver"))},nameFrom:{field_declaration:e=>e.childForFieldName("name")?.text},namesFrom:{var_spec:yd("name"),const_spec:yd("name"),field_declaration:yd("name")},relationsFrom:{field_declaration:(e,t)=>{if(!t.self||e.childForFieldName("name"))return[];let n=St(e.childForFieldName("type"));return n?[Ge("extends",t.self,n,e)]:[]}}},ruby:{lang:"ruby",defs:{method:"def",singleton_method:"def",class:"class",module:"module"},containers:new Set(["class","module","body_statement","program","singleton_class","block_body"]),sectionScopes:new Set(["singleton_class"]),exported:Ri,kindFrom:{assignment:ug},nameFrom:{assignment:e=>e.childForFieldName("left")?.text},bodyFrom:{assignment:e=>e.childForFieldName("right")?.childForFieldName("block")?.childForFieldName("body")??void 0},inlineVisibility:e=>{if(e.type!=="call"||e.childForFieldName("receiver"))return;let t=dg[e.childForFieldName("method")?.text??""];if(t===void 0)return;let n=(e.childForFieldName("arguments")?.namedChildren??[]).filter(r=>r.type==="method"||r.type==="singleton_method"||r.type==="call");return n.length?{nodes:n,public:t}:void 0},docFrom:e=>{let t=e.parent?.type==="argument_list"?e.parent.parent:null;return t?.type==="call"&&dg[t.childForFieldName("method")?.text??""]!==void 0?Zn(t):void 0},calls:{call:"function"},sectionVisibility:e=>(e.type==="identifier"||e.type==="call")&&/^(private|protected)$/.test(e.text)?!1:e.type==="identifier"&&e.text==="public"?!0:void 0,relationsFrom:{class:(e,t)=>{if(!t.self)return[];let n=St(e.childForFieldName("superclass"));return n?[Ge("extends",t.self,n,e)]:[]},call:(e,t)=>{let n=e.childForFieldName("method"),r=e.childForFieldName("receiver");if(!t.self||!n||!/^(include|prepend|extend)$/.test(n.text))return[];if(r&&r.type!=="self")return[];let o=[];for(let s of e.childForFieldName("arguments")?.namedChildren??[]){let a=St(s);a&&o.push(Ge("implements",t.self,a,e))}return o}},extraMembers:(e,t)=>{if(t.inFunctionBody)return[];if(e.type==="assignment"){let n=e.childForFieldName("left");return n?.type==="constant"&&!ug(e)?[{name:n.text,kind:"const"}]:[]}if(e.type==="call"){let n=e.childForFieldName("method");if(!n||!/^attr_(reader|writer|accessor)$/.test(n.text))return[];let r=e.childForFieldName("arguments"),o=[];for(let s of r?.namedChildren??[])s.type==="simple_symbol"&&o.push({name:s.text.replace(/^:/,""),kind:"attr"});return o}return[]}},java:{lang:"java",defs:{class_declaration:"class",interface_declaration:"interface",annotation_type_declaration:"annotation",enum_declaration:"enum",enum_constant:"enum-member",record_declaration:"record",method_declaration:"method",constructor_declaration:"constructor",compact_constructor_declaration:"constructor",field_declaration:"field",constant_declaration:"field",annotation_type_element_declaration:"method"},containers:new Set(["class_body","interface_body","enum_body","enum_body_declarations","annotation_type_body","program","formal_parameters"]),exported:eg,imports:{import_declaration:"path"},calls:{method_invocation:"function",object_creation_expression:"constructor"},kindFrom:{formal_parameter:e=>e.parent?.parent?.type==="record_declaration"?"field":void 0},publicMember:e=>e.parent?.parent?.type==="record_declaration",nameFrom:{field_declaration:e=>Tt(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,constant_declaration:e=>Tt(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text},namesFrom:{field_declaration:sg,constant_declaration:sg},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let o of ot(e.childForFieldName("superclass")))n.push(Ge("extends",t.self,o,e));let r=e.childForFieldName("interfaces");for(let o of ot(qe(r??e,"type_list")??r))n.push(Ge("implements",t.self,o,e));return n},interface_declaration:(e,t)=>{let n=e.childForFieldName("interfaces")??qe(e,"extends_interfaces");return t.self?ot(qe(n??e,"type_list")??n).map(r=>Ge("extends",t.self,r,e)):[]},record_declaration:(e,t)=>{let n=e.childForFieldName("interfaces");return t.self?ot(qe(n??e,"type_list")??n).map(r=>Ge("implements",t.self,r,e)):[]}}},rust:{lang:"rust",defs:{function_item:"function",function_signature_item:"function",struct_item:"struct",enum_item:"enum",enum_variant:"enum-member",field_declaration:"field",trait_item:"trait",type_item:"type",associated_type:"type",mod_item:"mod",const_item:"const",static_item:"static",union_item:"union",macro_definition:"macro"},containers:new Set(["impl_item","declaration_list","source_file","field_declaration_list","enum_variant_list","foreign_mod_item","block"]),exported:tg,calls:{call_expression:"function"},parentFrom:{impl_item:e=>St(e.childForFieldName("type"))},nestedDefs:new Set(["const_item","static_item"]),publicMembersIn:{impl_item:e=>e.childForFieldName("trait")!==null},relationsFrom:{impl_item:(e,t)=>{let n=St(e.childForFieldName("trait"));return t.self&&n?[Ge("implements",t.self,n,e)]:[]}}},c_sharp:{lang:"csharp",defs:{class_declaration:"class",interface_declaration:"interface",struct_declaration:"struct",enum_declaration:"enum",enum_member_declaration:"enum-member",record_declaration:"record",delegate_declaration:"delegate",method_declaration:"method",constructor_declaration:"constructor",property_declaration:"property",indexer_declaration:"indexer",operator_declaration:"operator",field_declaration:"field",event_declaration:"event",event_field_declaration:"event",conversion_operator_declaration:"operator",destructor_declaration:"destructor"},containers:new Set(["namespace_declaration","declaration_list","compilation_unit","file_scoped_namespace_declaration","enum_member_declaration_list","parameter_list"]),exported:eg,calls:{invocation_expression:"function",object_creation_expression:"constructor"},kindFrom:{parameter:e=>e.parent?.parent?.type==="record_declaration"?"field":void 0},publicMember:e=>e.parent?.parent?.type==="record_declaration",nameFrom:{field_declaration:e=>Tt(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,event_field_declaration:e=>Tt(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,conversion_operator_declaration:e=>e.childForFieldName("type")?.text,operator_declaration:e=>{let t=e.childForFieldName("operator")?.text;return t?`operator${/^\w/.test(t)?" ":""}${t}`:void 0},indexer_declaration:()=>"this[]"},namesFrom:{field_declaration:e=>rg(e),event_field_declaration:e=>rg(e)},relationsFrom:{class_declaration:(e,t)=>t.self?vi(qe(e,"base_list"),t.self,e):[],struct_declaration:(e,t)=>t.self?vi(qe(e,"base_list"),t.self,e):[],record_declaration:(e,t)=>t.self?vi(qe(e,"base_list"),t.self,e):[],interface_declaration:(e,t)=>t.self?ot(qe(e,"base_list")).map(n=>Ge("extends",t.self,n,e)):[]}},php:{lang:"php",defs:{function_definition:"function",class_declaration:"class",interface_declaration:"interface",trait_declaration:"trait",enum_declaration:"enum",enum_case:"enum-member",method_declaration:"method",property_declaration:"property",const_declaration:"const",namespace_definition:"namespace"},containers:new Set(["declaration_list","enum_declaration_list","program"]),exported:hd,calls:{function_call_expression:"function",member_call_expression:"member",object_creation_expression:"constructor"},extraMembers:dk,nameFrom:{property_declaration:e=>Tt(e,t=>t.type==="variable_name")?.text.replace(/^\$/,""),const_declaration:e=>Tt(e,t=>t.type==="const_element")?.namedChildren[0]?.text},namesFrom:{property_declaration:e=>e.namedChildren.flatMap(t=>t.type==="property_element"?t.childForFieldName("name")?.text.replace(/^\$/,"")??[]:[]),const_declaration:e=>e.namedChildren.flatMap(t=>t.type==="const_element"?t.namedChildren[0]?.text??[]:[])},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let r of ot(qe(e,"base_clause")))n.push(Ge("extends",t.self,r,e));for(let r of ot(qe(e,"class_interface_clause")))n.push(Ge("implements",t.self,r,e));return n},interface_declaration:(e,t)=>t.self?ot(qe(e,"base_clause")).map(n=>Ge("extends",t.self,n,e)):[]}},c:{lang:"c",defs:{function_definition:"function",struct_specifier:"struct",enum_specifier:"enum",enumerator:"enum-member",union_specifier:"union",type_definition:"type",field_declaration:"field",declaration:"const",preproc_def:"macro",preproc_function_def:"macro"},containers:new Set(["translation_unit","declaration_list","field_declaration_list","enumerator_list","linkage_specification","preproc_ifdef","preproc_if"]),exported:Ri,calls:{call_expression:"function"},kindFrom:{field_declaration:e=>Ma(e)?"method":"field",declaration:e=>Ma(e)?"function":"const"},nameFrom:{preproc_def:e=>og(e)?void 0:e.childForFieldName("name")?.text},namesFrom:{field_declaration:Ca,declaration:Ca},bodyFrom:{type_definition:bd},extraMembers:ig},cpp:{lang:"cpp",defs:{function_definition:"function",class_specifier:"class",struct_specifier:"struct",enum_specifier:"enum",enumerator:"enum-member",union_specifier:"union",type_definition:"type",alias_declaration:"type",concept_definition:"concept",namespace_definition:"namespace",namespace_alias_definition:"namespace",field_declaration:"field",declaration:"const",using_declaration:"using",friend_declaration:"friend",preproc_def:"macro",preproc_function_def:"macro"},containers:new Set(["translation_unit","declaration_list","field_declaration_list","enumerator_list","template_declaration","linkage_specification","preproc_ifdef","preproc_if"]),exported:Ri,calls:{call_expression:"function",new_expression:"constructor"},kindFrom:{field_declaration:e=>Ma(e)?"method":"field",declaration:e=>Ma(e)?"function":"const"},sectionVisibility:e=>e.type==="access_specifier"?!/^(private|protected)/.test(e.text):void 0,nameFrom:{friend_declaration:e=>Ar(e)??(e.namedChildren[0]?Ar(e.namedChildren[0]):void 0),preproc_def:e=>og(e)?void 0:e.childForFieldName("name")?.text},namesFrom:{field_declaration:Ca,declaration:Ca},parentFrom:{function_definition:ag,declaration:ag},bodyFrom:{type_definition:bd},extraMembers:ig,relationsFrom:{class_specifier:(e,t)=>t.self?ot(qe(e,"base_class_clause")).map(n=>Ge("extends",t.self,n,e)):[],struct_specifier:(e,t)=>t.self?ot(qe(e,"base_class_clause")).map(n=>Ge("extends",t.self,n,e)):[]}},scala:{lang:"scala",defs:{class_definition:"class",object_definition:"object",trait_definition:"trait",enum_definition:"enum",function_definition:"def",function_declaration:"def",val_definition:"val",val_declaration:"val",var_definition:"var",type_definition:"type",given_definition:"given",package_clause:"package"},containers:new Set(["compilation_unit","package_clause","template_body","class_parameters","parameters","extension_definition"]),parentFrom:{extension_definition:e=>St(qe(e,"parameters")?.namedChildren[0]?.childForFieldName("type")??null)},exported:hd,kindFrom:{class_parameter:e=>{let t=lg(e,e.childForFieldName("name"));return t||(e.parent?.parent?.type==="class_definition"&&/\bcase\s+class\b/.test(e.parent.parent.text.slice(0,80))?"val":void 0)}},calls:{call_expression:"function",instance_expression:"constructor"},relationsFrom:{class_definition:(e,t)=>t.self?vi(qe(e,"extends_clause"),t.self,e):[],object_definition:(e,t)=>t.self?vi(qe(e,"extends_clause"),t.self,e):[],trait_definition:(e,t)=>t.self?ot(qe(e,"extends_clause")).map(n=>Ge("extends",t.self,n,e)):[]}},bash:{lang:"shell",defs:{function_definition:"function",declaration_command:"const"},containers:new Set(["program","if_statement","compound_statement"]),exported:Ri,calls:{command:"function"},nameFrom:{declaration_command:e=>/^\s*local\b/.test(e.text)?void 0:Tt(e,t=>t.type==="variable_name")?.text}},kotlin:{lang:"kotlin",defs:{class_declaration:"class",object_declaration:"object",function_declaration:"function",property_declaration:"property",enum_entry:"enum-member",type_alias:"type",class_parameter:"property"},containers:new Set(["source_file","class_body","enum_class_body","companion_object","object_declaration","primary_constructor","class_parameters"]),exported:hd,calls:{call_expression:"function"},kindFrom:{class_parameter:e=>lg(e,e.namedChildren.find(t=>/identifier$/.test(t.type)))||/\bdata\s+class\b/.test(e.parent?.parent?.parent?.text.slice(0,80)??"")?"property":void 0,class_declaration:e=>{let t=e.text.slice(0,80);return/\binterface\b/.test(t)?"interface":/\benum\s+class\b/.test(t)?"enum":/\bannotation\s+class\b/.test(t)?"annotation":"class"}},nameFrom:{property_declaration:e=>Tt(e,t=>t.type==="variable_declaration")?.namedChildren[0]?.text??e.namedChildren.find(t=>t.type==="identifier")?.text},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let r of qe(e,"delegation_specifiers")?.namedChildren??[]){let o=St(r);o&&n.push(Ge(Tt(r,s=>s.type==="constructor_invocation")?"extends":"implements",t.self,o,e))}return n}}},elixir:{lang:"elixir",defs:{},containers:new Set(["source","do_block","call","stab_clause"]),exported:e=>!/^\s*def(p|macrop|guardp)\b/.test(e),calls:{call:"function"},kindFrom:{call:e=>cg[e.childForFieldName("target")?.text??e.namedChildren[0]?.text??""]},skipCall:e=>{if(e.parent?.type==="unary_operator")return!0;let t=e.parent,n=t&&gg(t)&&t.startIndex===e.startIndex?t:e;if(n.parent?.type!=="arguments")return!1;let r=n.parent.parent,o=r?.childForFieldName("target")??r?.namedChildren[0];return o!==void 0&&cg[o.text]!==void 0},docFrom:e=>{let t=e.previousNamedSibling;for(;t&&t.type==="unary_operator";){let n=t.namedChildren[0],r=n?.childForFieldName("target")??n?.namedChildren[0];if(r&&/^(doc|moduledoc)$/.test(r.text)){let o=Tt(t,s=>s.type==="string");if(o)return o.text.replace(/^"""|"""$/g,"").replace(/^"|"$/g,"").trim()||void 0}t=t.previousNamedSibling}},nameFrom:{call:e=>{let n=(e.childForFieldName("arguments")??e.namedChildren.find(s=>s.type==="arguments"))?.namedChildren[0];if(!n)return;let r=ok(n);if(r.type==="alias"||r.type==="identifier")return r.text;if(r.type==="binary_operator")return r.childForFieldName("operator")?.text;let o=r.childForFieldName("target")??r.namedChildren[0];return o&&/identifier|alias/.test(o.type)?o.text:void 0}}},zig:{lang:"zig",defs:{function_declaration:"function",variable_declaration:"const",container_field:"field",test_declaration:"test"},containers:new Set(["source_file","variable_declaration","struct_declaration","enum_declaration","union_declaration","error_set_declaration","opaque_declaration","block"]),exported:tg,calls:{call_expression:"function"},kindFrom:{variable_declaration:e=>{let t=e.namedChildren.find(n=>n.type==="builtin_function");if(!(t&&/^@(import|cImport)\b/.test(t.text))){for(let n of e.namedChildren){if(n.type==="struct_declaration")return"struct";if(n.type==="enum_declaration")return"enum";if(n.type==="union_declaration")return"union";if(n.type==="error_set_declaration")return"error";if(n.type==="opaque_declaration")return"opaque"}return/^\s*(?:pub\s+)?var\b/.test(e.text.slice(0,24))?"var":"const"}},container_field:e=>e.parent?.type==="enum_declaration"?"enum-member":"field"}},solidity:{lang:"solidity",defs:{contract_declaration:"contract",interface_declaration:"interface",library_declaration:"library",function_definition:"function",constructor_definition:"constructor",modifier_definition:"modifier",event_definition:"event",error_declaration:"error",struct_declaration:"struct",struct_member:"field",enum_declaration:"enum",enum_value:"enum-member",state_variable_declaration:"field",constant_variable_declaration:"const",user_defined_type_definition:"type",fallback_receive_definition:"function"},containers:new Set(["source_file","contract_body","struct_declaration","enum_declaration","enum_body"]),exported:(e,t)=>/\b(public|external)\b/.test(e)?!0:/\b(internal|private)\b/.test(e)?!1:ng(e,t)||!0,calls:{call_expression:"function"},nameFrom:{state_variable_declaration:e=>e.namedChildren.find(t=>t.type==="identifier")?.text,fallback_receive_definition:e=>/^\s*receive\b/.test(e.text)?"receive":"fallback",enum_value:e=>e.text},relationsFrom:{contract_declaration:(e,t)=>t.self?e.namedChildren.filter(n=>n.type==="inheritance_specifier").map(n=>St(n)).filter(n=>n!==void 0).map(n=>Ge("extends",t.self,n,e)):[],interface_declaration:(e,t)=>t.self?e.namedChildren.filter(n=>n.type==="inheritance_specifier").map(n=>St(n)).filter(n=>n!==void 0).map(n=>Ge("extends",t.self,n,e)):[]}},terraform:fg,hcl:{...fg,lang:"hcl"},lua:{lang:"lua",defs:{function_declaration:"function"},containers:new Set(["chunk","variable_declaration"]),exported:QS,calls:{function_call:"function"},assignments:!0,nameFrom:{function_declaration:e=>Aa(e.childForFieldName("name"))?.name},parentFrom:{function_declaration:e=>Aa(e.childForFieldName("name"))?.table}}}});function yg(e){for(let t of e.children)if(t.type==="{"||t.type==="("||t.type==="[")return t.startIndex}function gk(e,t){let n,r=s=>{s!==void 0&&s>e.startIndex&&(n===void 0||s{uk.has(s.type)?r(s.startIndex):r(fk.get(s.type)?.(s))};r(e.childForFieldName("body")?.startIndex),o(e);for(let s of e.namedChildren){if(n!==void 0&&s.startIndex>=n)break;o(s),_g.has(s.type)&&r(s.childForFieldName("body")?.startIndex);let a;for(let l of s.namedChildren){if(n!==void 0&&l.startIndex>=n)break;o(l),_g.has(l.type)&&(a===void 0&&(a=s.childForFieldName("value")??s.childForFieldName("right")),a?.startIndex===l.startIndex&&r(l.childForFieldName("body")?.startIndex))}}if(n===void 0&&t.startsWith("end",e.endIndex-3)){let s=e.children,a=s.length-1;if(s[a]?.type==="end"){for(;a>0&&s[a-1].type===";";)a--;r(s[a].startIndex)}}return n}function yk(e,t,n){let r=[],o=s=>{for(let a of s.namedChildren){if(a.startIndex>=n)return;a.endIndex<=t||(va.test(a.type)?r.push(a):ws.test(a.type)||o(a))}};return o(e),r}function Yn(e,t){let n=e.startIndex,r=Math.min(gk(e,t)??e.endIndex,n+pk),o=t.slice(n,r),s="",a=n;for(let l of hk.test(o)?yk(e,n,r):[])for(s=bg(s,t.slice(a,Math.max(a,l.startIndex)).replace(/[ \t]+$/,"")),a=Math.min(l.endIndex,r);a|=)$/,"").trim().slice(0,mk)}var uk,fk,_g,mk,pk,hk,bg,wg=H(()=>{"use strict";I();Ra();uk=new Set(["block","statement_block","class_body","declaration_list","field_declaration_list","template_body","compound_statement","body_statement","enum_body","enum_body_declarations","enum_variant_list","enum_member_declaration_list","enumerator_list","interface_body","object_type","do_block","struct_declaration","enum_declaration","union_declaration","error_set_declaration","opaque_declaration","contract_body","enum_class_body"]),fk=new Map([["interface_type",e=>e.namedChildren.some(t=>t.type==="method_elem")?yg(e):void 0],["macro_definition",e=>yg(e)],["preproc_function_def",e=>e.childForFieldName("value")?.startIndex]]);_g=new Set(["arrow_function","function_expression","function","generator_function","function_definition","lambda","lambda_expression"]),mk=400,pk=4096;hk=/\/[/*]|#|--|=begin/;bg=(e,t)=>e&&t&&!/[\s([{]$/.test(e)&&!/^[\s,;)\]}]/.test(t)?`${e} ${t}`:e+t});function Sd(e){return e.replace(/^['"`]|['"`]$/g,"")}function wk(e,t){if(e.type==="import_statement"){let n=e.childForFieldName("source");if(!n)return;let r=Sd(n.text);for(let o of e.namedChildren)if(o.type==="import_clause"){for(let s of o.namedChildren)if(s.type==="identifier")t.push({local:s.text,name:"default",from:r});else if(s.type==="namespace_import"){let a=s.namedChildren.find(l=>l.type==="identifier");a&&t.push({local:a.text,name:"*",from:r})}else if(s.type==="named_imports")for(let a of s.namedChildren){if(a.type!=="import_specifier")continue;let l=a.childForFieldName("name")?.text,c=a.childForFieldName("alias")?.text;l&&c&&c!==l&&t.push({local:c,name:Sd(l),from:r})}}}else if(e.type==="export_statement"&&e.children.some(n=>n.type==="default")){let n=e.childForFieldName("declaration"),r=n?n.childForFieldName("name")?.text:e.childForFieldName("value")?.type==="identifier"?e.childForFieldName("value").text:void 0;r&&t.push({local:"default",name:r})}}function xg(e,t){if(e.type==="import_statement"){for(let n of e.namedChildren)if(n.type==="dotted_name"){let r=n.namedChildren[0]?.text;r&&t.push({local:r,name:"*",from:r})}else if(n.type==="aliased_import"){let r=n.childForFieldName("name")?.text,o=n.childForFieldName("alias")?.text;r&&o&&t.push({local:o,name:"*",from:r})}}else if(e.type==="import_from_statement"){let n=e.childForFieldName("module_name")?.text;if(!n)return;for(let r of e.namedChildren){if(r.type!=="aliased_import")continue;let o=r.childForFieldName("name")?.text,s=r.childForFieldName("alias")?.text;o&&s&&s!==o&&t.push({local:s,name:o,from:n})}}else if(bk.has(e.type))for(let n of e.namedChildren)xg(n,t)}function Sg(e,t){if(e.type==="import_declaration"||e.type==="import_spec_list")for(let n of e.namedChildren)Sg(n,t);else if(e.type==="import_spec"){let n=e.childForFieldName("name"),r=e.childForFieldName("path");n?.type==="package_identifier"&&r&&t.push({local:n.text,name:"*",from:Sd(r.text)})}}function kg(e,t){let n=t==="typescript"||t==="javascript"?wk:t==="python"?xg:t==="go"?Sg:void 0;if(!n)return[];let r=[];for(let a of e.namedChildren)n(a,r);let o=new Set,s=[];for(let a of r.sort((l,c)=>T(l.local,c.local)||T(l.name,c.name)||T(l.from??"",c.from??""))){let l=`${a.local}\0${a.name}\0${a.from??""}`;if(!o.has(l)&&(o.add(l),s.push(a),s.length>=_k))break}return s}var _k,bk,Eg=H(()=>{"use strict";I();ce();_k=256,bk=new Set(["if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement","block"])});function jk(e){let t=Rg.get(e);return t===void 0&&(t=($k.test(e)?Mg:0)|(va.test(e)?Cg:0)|(Ok.test(e)?Ta:0)|(Nk.test(e)?Ag:0)|(Pk.test(e)?Ig:0),Rg.set(e,t)),t}function Wk(e){return e.namedChildren.every(t=>Lk.test(t.type))}function Bk(e){let t=e.parent;return t!==null&&t.type==="expression_statement"&&t.namedChildCount===1}function $a(e,t){let n=e.slice();if(e.length>t){let r=new Uint8Array(e.length),o=new Set,s=0;for(let a=0;ar[l]===1)}return n.sort((r,o)=>T(r.name,o.name)||r.line-o.line)}function Uk(e,t,n,r){let o=new Set,s=t.calls!==void 0,a=[],l=new Set,c=(h,_,y)=>{if(!h||h==="_"||!/^[A-Za-z_]\w*$/.test(h))return;let b=_.startPosition.row+1,w=`${h} ${b}`;l.has(w)||(l.add(w),a.push(y?{name:h,line:b,receiver:y}:{name:h,line:b}))},d=new Set,u=h=>{if(!(d.size>=vg))for(let _ of fn(h)){if(d.size>=vg)return;d.add(_)}},f=new Kn,m=t.imports?.import_statement!==void 0,p=new Set,g=[e];for(;g.length;){let h=g.pop(),_=h.type,y=h.namedChildren,b=jk(_);if(y.length===0&&b&Mg){let S=h.text;Fk.test(S)&&!n.has(S)&&o.add(S)}let w=b&Ta?Wk(h):!1;if(b&Cg)for(let S of h.text.split(/\r?\n/))u(Lt(S));else if(b&Ta&&h.endIndex-h.startIndex<=Rk)if(w)u(ed(h.text));else for(let S of y)Dk.test(S.type)&&u(S.text);if(f.full||(b&Ta?w&&!Bk(h)&&f.addString(h.text,h.startPosition.row+1):y.length===0&&b&Ag?f.add("number",h.text.trim(),h.startPosition.row+1):b&Ig&&f.add("regex",h.text,h.startPosition.row+1)),s&&!(t.kindFrom?.[_]&&t.kindFrom[_](h))&&!t.skipCall?.(h)){let S=t.calls[_];if(S==="function"){let k=h.childForFieldName("function")??h.childForFieldName("callee")??h.childForFieldName("method")??h.childForFieldName("name")??h.childForFieldName("target")??y[0]??null,M=k&&t.calls[k.type]==="function"?k.childForFieldName("function"):null;c(Cr(k),h,Ei(M??k)??Ei(h))}else if(S==="member")c(Cr(h.childForFieldName("name")),h,Ei(h));else if(S==="constructor"){let k=h.childForFieldName("constructor")??h.childForFieldName("type")??h.childForFieldName("name");for(let M=0;!k&&M=0;S--)g.push(y[S])}return{idents:[...o].slice(0,xk).sort(),calls:$a(a,r),importedNames:[...p].slice(0,kk).sort(T),terms:[...d].sort(T),literals:f.result()??[]}}function zk(e,t){let n=(r,o)=>{for(let s of r.namedChildren)if(s.namedChildren.length===0){if(s.text===t)return s.startIndex}else if(o<3&&!Hk.test(s.type)){let a=n(s,o+1);if(a!==void 0)return a}};return n(e,0)}function Qn(e){let t=e.endPosition;return t.column===0&&t.row>e.startPosition.row?t.row:t.row+1}function Gk(e){let t=[],n=r=>{if(/^(shorthand_property_identifier_pattern|identifier)$/.test(r.type)){t.includes(r.text)||t.push(r.text);return}if(r.type==="pair_pattern"){let o=r.childForFieldName("value");o&&n(o);return}for(let o of r.namedChildren)n(o)};for(let r of e.namedChildren)n(r);return t}function kd(e,t,n,r={}){let o=Sa(t,n);if(!o||!Le(o))return;let s=xd[o];if(!s)return;let a=bs(o);if(!a)return;let l=xd[Mr(t)??o]?.lang??s.lang,c=null;try{if(c=a.parse(n),!c)return;let d=r.maxSymbols??Ek,u=[],f=c.rootNode,m=(e.split("/").pop()??"").replace(/\.[^.]+$/,""),p=new Map,g=U=>U.parentPath??U.parent??"",h=(U,B)=>{let z=g(B),re=p.get(z);re||p.set(z,re=new Set),re.add(U)},_=U=>{u.length{let re=s.relationsFrom?.[z];if(re)for(let de of re(U,{self:B})){if(de.from===de.to)continue;let ke=`${de.kind} ${de.from} ${de.to}`;w.has(ke)||b.length>=vk||(w.add(ke),b.push(de))}},k=(U,B,z,re)=>{if(re.inFunctionBody||s.privateMember?.(U)===!0)return!1;if(s.publicMember?.(U)===!0)return!0;if(!re.sectionPublic)return!1;if(re.forcePublic||re.exported)return!0;let de=zk(U,z);return s.exported(B,z,de===void 0?B:n.slice(U.startIndex,de))},M=U=>s.docFrom?.(U)??(s.docstring?Yp(U):void 0)??Zn(U),N=(U,B)=>{let z=B.sectionPublic,re=s.bareMembers?.[U.type];for(let de of U.namedChildren){if(s.sectionVisibility){let X=s.sectionVisibility(de);if(X!==void 0){z=X;continue}}let ke=z===B.sectionPublic?B:{...B,sectionPublic:z},rt=s.inlineVisibility?.(de);if(rt)for(let X of rt.nodes)A(X,re,{...ke,sectionPublic:rt.public});else A(de,re,ke)}},A=(U,B,z)=>{if(B&&U.namedChildren.length===0&&ws.test(U.type)){_({name:U.text,kind:B,file:e,line:U.startPosition.row+1,endLine:Qn(U),...z.parent?{parent:z.parent}:{},exported:z.forcePublic||z.exported,lang:l});return}let re=s.extraMembers?.(U,{ownerKind:z.ownerKind,inFunctionBody:z.inFunctionBody,publicNames:y});for(let de of re??[]){let ke=de.node??U,rt=Yn(ke,n),X=s.docFrom?.(ke)??Zn(ke);_({name:de.name,kind:de.kind,file:e,line:ke.startPosition.row+1,endLine:Qn(ke),...z.parent?{parent:z.parent}:{},...z.parentPath&&z.parentPath!==z.parent?{parentPath:z.parentPath}:{},signature:rt,...X?{doc:X}:{},exported:k(ke,rt,de.name,z),lang:l})}v(U,z)},R=(U,B,z,re,de)=>{let ke=wd.has(B);return{parent:U,parentPath:z?`${z}/${U}`:U,ownerKind:B,exported:de,forcePublic:mg.has(B),inFunctionBody:re.inFunctionBody||ke,funcDepth:re.funcDepth+(ke?1:0),sectionPublic:!0}},$=(U,B)=>{let z=s.bodyFrom?.[U.type]?.(U);if(z)return $(z,B);let re=!1;for(let de of U.namedChildren)s.containers.has(de.type)&&(re=!0,N(de,B));!re&&s.containers.has(U.type)&&N(U,B)},E=(U,B,z,re,de)=>{S(U,B,U.type==="class"?"class_declaration":U.type),$(U,R(B,z,re.parentPath,re,de))},x=0,v=(U,B)=>{if(!(x>=Ck)){x++;try{P(U,B)}finally{x--}}},P=(U,B)=>{if(B.funcDepth>Mk)return;let z=U.type,re=s.exportMarkers?.has(z)===!0,de=B.exported||re;if(z==="export_statement"&&!U.childForFieldName("source")){for(let Q of U.namedChildren)if(Q.type==="identifier")h(Q.text,B);else if(Q.type==="export_clause")for(let J of Q.namedChildren){let K=J.childForFieldName("name")??J.namedChildren[0];K?.text&&h(K.text,B)}}if(z==="export_statement"&&m&&U.children.some(Q=>Q.type==="default"))for(let Q of U.namedChildren){let J=Ik.has(Q.type),K=Tk.has(Q.type);if((J||K)&&!Q.childForFieldName("name")){let we=Zn(U),Y=K?"class":"function";_({name:m,kind:Y,file:e,line:U.startPosition.row+1,endLine:Qn(U),signature:Yn(U,n),...we?{doc:we}:{},exported:!0,lang:l}),E(Q,m,Y,B,!0);return}}if(s.assignments&&z==="expression_statement"){let Q=U.namedChildren[0];if(Q?.type==="assignment_expression"){let J=Q.childForFieldName("left"),K=Q.childForFieldName("right");if(J?.type==="member_expression"&&J.text==="module.exports"&&K){if(K.type==="object"){for(let Y of K.namedChildren)if(Y.type==="shorthand_property_identifier")h(Y.text,B);else if(Y.type==="pair"){let se=Y.childForFieldName("key"),me=Y.childForFieldName("value");se?.type==="property_identifier"&&h(se.text,B),me?.type==="identifier"&&h(me.text,B)}return}if(K.type==="identifier"){h(K.text,B);return}}let we=K&&Ia.has(K.type);if(J&&K&&we){let Y,se=!1;if(J.type==="member_expression"&&J.text==="module.exports")Y=K.childForFieldName("name")?.text??(m||void 0),se=!0;else if(J.type==="member_expression"){let me=J.childForFieldName("property");if(me?.type==="property_identifier"){Y=me.text;let V=J.text.slice(0,J.text.length-me.text.length-1);se=V==="exports"||V==="module.exports"}}else J.type==="identifier"&&(Y=J.text);if(Y){let me=Zn(U),V=K.type==="class"?"class":"function",oe=!B.inFunctionBody&&(de||se);_({name:Y,kind:V,file:e,line:Q.startPosition.row+1,endLine:Qn(Q),...B.parent?{parent:B.parent}:{},signature:Yn(Q,n),...me?{doc:me}:{},exported:oe,lang:l}),E(K,Y,V,B,oe);return}}else if(J?.type==="member_expression"&&K){let Y=J.childForFieldName("property");if(Y?.type==="property_identifier"){let se=J.text.slice(0,J.text.length-Y.text.length-1);if(se==="exports"||se==="module.exports"){K.type==="identifier"&&h(K.text,B),(K.type!=="identifier"||K.text!==Y.text)&&_({name:Y.text,kind:"const",file:e,line:Q.startPosition.row+1,endLine:Qn(Q),...B.parent?{parent:B.parent}:{},signature:Yn(Q,n),exported:!0,lang:l});return}}}}}if(s.assignments&&z==="assignment_statement"){let Q=U.children.find(se=>se.type==="variable_list"),J=U.children.find(se=>se.type==="expression_list"),K=Q?.namedChildren??[],we=J?.namedChildren??[],Y=Math.min(K.length,we.length);for(let se=0;seY.type==="object_pattern"||Y.type==="array_pattern");if(K&&!B.inFunctionBody){let Y=Yn(U,n),se=M(U);for(let me of Gk(K))_({name:me,kind:X,file:e,line:U.startPosition.row+1,endLine:Qn(U),...B.parent?{parent:B.parent}:{},signature:Y,...se?{doc:se}:{},exported:k(U,Y,me,{...B,exported:de}),lang:l});return}let we=wd.has(X)||Ak.has(X)||s.nestedDefs?.has(z)===!0||Ia.has(U.childForFieldName("value")?.type??"");if(J&&(!B.inFunctionBody||we)){let Y=Yn(U,n),se=M(U),me=ke??B.parent,V=ke??B.parentPath,oe=s.namesFrom?.[z]?.(U);for(let Te of oe&&oe.length>1?oe:[J])_({name:Te,kind:X,file:e,line:U.startPosition.row+1,endLine:Qn(U),...me?{parent:me}:{},...V&&V!==me?{parentPath:V}:{},signature:Y,...se?{doc:se}:{},exported:k(U,Y,Te,{...B,exported:de}),lang:l});S(U,J),$(U,R(J,X,V,B,de));return}}if(S(U,ke??B.parent),s.containers.has(z)){let Q=B.forcePublic||s.publicMembersIn?.[z]?.(U)===!0,J=Ia.has(z);N(U,{...B,exported:de,forcePublic:Q,inFunctionBody:B.inFunctionBody||J,funcDepth:B.funcDepth+(J?1:0),...ke?{parent:ke,parentPath:ke,ownerKind:"type"}:{},...s.sectionScopes?.has(z)?{sectionPublic:!0}:{}})}};if(N(f,{exported:!1,forcePublic:!1,inFunctionBody:!1,funcDepth:0,sectionPublic:!0}),p.size)for(let U of u)!U.exported&&p.get(g(U))?.has(U.name)&&(U.exported=!0);if(y){for(let z of u)z.parent===void 0&&(z.exported=y.has(z.name));let U=new Set(u.filter(z=>z.parent===void 0&&z.kind!=="reexport").map(z=>z.name)),B=0;for(let z of u)(z.parent!==void 0||z.kind!=="reexport"||!U.has(z.name))&&(u[B++]=z);u.length=B}let{idents:O,calls:L,importedNames:q,terms:Z,literals:ae}=Uk(f,s,new Set(u.map(U=>U.name)),r.maxCalls??Sk),be=r.imports!==!1,Se=be?fi(t,n):[],Me=be?la(t,n):void 0;return b.sort((U,B)=>T(U.from,B.from)||T(U.kind,B.kind)||T(U.to,B.to)),{symbols:u,refs:Se,pkg:Me,idents:O,calls:L,importedNames:q,importAliases:kg(f,s.lang),relations:b,terms:Z,literals:ae,...u.length>=d?{truncated:!0}:{}}}catch(d){r.onFailure?.(d);return}finally{c?.delete()}}var xk,Sk,kk,Ek,vk,vg,Rk,Mk,Ck,Ak,Ik,Tk,$k,Fk,Ok,Nk,Pk,Lk,Dk,Mg,Cg,Ta,Ag,Ig,Rg,Hk,Ed=H(()=>{"use strict";I();pa();ce();ft();Ra();hg();wg();gd();Eg();ii();ut();Qe();xk=512,Sk=512,kk=256,Ek=2e3,vk=256,vg=512,Rk=80,Mk=2,Ck=256,Ak=new Set(["class","struct","enum","interface","trait","type","record","union"]),Ik=new Set(["function","function_expression","function_declaration","generator_function","generator_function_declaration","arrow_function"]),Tk=new Set(["class","class_declaration","abstract_class_declaration"]),$k=/identifier|constant|(^|_)name$/,Fk=/^[A-Za-z_]\w{4,}$/,Ok=/(^|_)string(_literal)?$/,Nk=/(^|_)(integer|float|number|decimal|numeric)(_literal)?$/,Pk=/(^|_)(regex|regular_expression)(_pattern|_literal)?$/,Lk=/(^|_)(fragment|content|escape_sequence|character|start|end)$/,Dk=/(^|_)(fragment|content)$/,Mg=1,Cg=2,Ta=4,Ag=8,Ig=16,Rg=new Map;Hk=/annotation|attribute|decorator|modifier|parameter|argument|body|block|string|comment|_list$/});function Rd(e,t){let n=t.exec(e);return n?(n[1]??n[2]??n[3]??"").trim().toLowerCase():void 0}function Md(e){return e.replace(/[^\r\n]/g," ")}function Tg(e,t,n){let r="",o=0;for(let[a,l]of t){let c=e.slice(o,a),d=e.slice(a,l);r+=n?Md(c)+d:c+Md(d),o=l}let s=e.slice(o);return r+(n?Md(s):s)}function eE(e,t){let n=[],r=1,o=0,s=a=>{for(let l=e.indexOf(` +${a}`)}let s=o.clone();try{n=await WebAssembly.compileStreaming(o)}catch(a){console.error("wasm streaming compile failed:",a),console.error("falling back to ArrayBuffer instantiation"),n=new Uint8Array(await s.arrayBuffer())}}let r=await M.loadWebAssemblyModule(n,{loadAsync:!0});return xa.loadFromWasmExports(r,{sync:!1})}static loadFromWasmExports(t,{sync:n}){let r=Object.keys(t),o=r.find(a=>ak.test(a)&&!a.includes("external_scanner_"));if(!o)throw console.log(`Couldn't find language function in Wasm file. Symbols: +${JSON.stringify(r,null,2)}`),new Error(`Language.${n?"loadSync":"load"} failed: no language function found in Wasm file`);let s=t[o]();return new xa(Xn,s)}static loadSync(t){let n=M.loadWebAssemblyModule(t,{loadAsync:!1});return xa.loadFromWasmExports(n,{sync:!0})}};D(Zp,"Module");lk=Zp,Yp=null;D(Qp,"initializeBinding");D(eg,"checkModule");zp=bs(e=>{M._ts_parser_delete(e[0]),M._free(e[1])}),bd=class{static{D(this,"Parser")}0=0;1=0;logCallback=null;language=null;static async init(e){qp(await Qp(e)),Q=M._ts_init(),md=M.getValue(Q,"i32"),pd=M.getValue(Q+re,"i32")}constructor(){this.initialize(),zp?.register(this,[this[0],this[1]],this)}initialize(){if(!eg())throw new Error("cannot construct a Parser before calling `init()`");M._ts_parser_new_wasm(),this[0]=M.getValue(Q,"i32"),this[1]=M.getValue(Q+re,"i32")}delete(){zp?.unregister(this),M._ts_parser_delete(this[0]),M._free(this[1]),this[0]=0,this[1]=0}setLanguage(e){let t;if(!e)t=0,this.language=null;else if(e.constructor===_d){t=e[0];let n=M._ts_language_abi_version(t);if(ne.slice(l);else if(typeof e=="function")M.currentParseCallback=e;else throw new Error("Argument must be a string or a function");n?.progressCallback?M.currentProgressCallback=n.progressCallback:M.currentProgressCallback=null,this.logCallback?(M.currentLogCallback=this.logCallback,M._ts_parser_enable_logger_wasm(this[0],1)):(M.currentLogCallback=null,M._ts_parser_enable_logger_wasm(this[0],0));let r=0,o=0;if(n?.includedRanges){r=n.includedRanges.length,o=M._calloc(r,Si);let l=o;for(let c=0;c0){let r=t;for(let o=0;oe.type==="capture","isCaptureStep"),wd=D(e=>e.type==="string","isStringStep"),sn={Syntax:1,NodeName:2,FieldName:3,CaptureName:4,PatternStructure:5},wi=class tg extends Error{constructor(t,n,r,o){super(tg.formatMessage(t,n)),this.kind=t,this.info=n,this.index=r,this.length=o,this.name="QueryError"}kind;info;index;length;static{D(this,"QueryError")}static formatMessage(t,n){switch(t){case sn.NodeName:return`Bad node name '${n.word}'`;case sn.FieldName:return`Bad field name '${n.word}'`;case sn.CaptureName:return`Bad capture name @${n.word}`;case sn.PatternStructure:return`Bad pattern structure at offset ${n.suffix}`;case sn.Syntax:return`Bad syntax at offset ${n.suffix}`}}};D(ng,"parseAnyPredicate");D(rg,"parseMatchPredicate");D(sg,"parseAnyOfPredicate");D(ig,"parseIsPredicate");D(og,"parseSetDirective");D(ag,"parsePattern");Gp=bs(e=>{M._ts_query_delete(e)}),lg=class{static{D(this,"Query")}0=0;exceededMatchLimit;textPredicates;captureNames;captureQuantifiers;predicates;setProperties;assertedProperties;refutedProperties;matchLimit;constructor(e,t){let n=M.lengthBytesUTF8(t),r=M._malloc(n+1);M.stringToUTF8(t,r,n+1);let o=M._ts_query_new(e[0],r,n,Q,Q+re);if(!o){let _=M.getValue(Q+re,"i32"),y=M.getValue(Q,"i32"),b=M.UTF8ToString(r,y).length,x=t.slice(b,b+100).split(` +`)[0],k=x.match(uk)?.[0]??"";switch(M._free(r),_){case sn.Syntax:throw new wi(sn.Syntax,{suffix:`${b}: '${x}'...`},b,0);case sn.NodeName:throw new wi(_,{word:k},b,k.length);case sn.FieldName:throw new wi(_,{word:k},b,k.length);case sn.CaptureName:throw new wi(_,{word:k},b,k.length);case sn.PatternStructure:throw new wi(_,{suffix:`${b}: '${x}'...`},b,0)}}let s=M._ts_query_string_count(o),a=M._ts_query_capture_count(o),l=M._ts_query_pattern_count(o),c=new Array(a),d=new Array(l),u=new Array(s);for(let _=0;_s)throw new Error("`startIndex` cannot be greater than `endIndex`");if(r!==St&&(n.row>r.row||n.row===r.row&&n.column>r.column))throw new Error("`startPosition` cannot be greater than `endPosition`");if(d!==0&&c>d)throw new Error("`startContainingIndex` cannot be greater than `endContainingIndex`");if(l!==St&&(a.row>l.row||a.row===l.row&&a.column>l.column))throw new Error("`startContainingPosition` cannot be greater than `endContainingPosition`");m&&(M.currentQueryProgressCallback=m),ue(e),M._ts_query_matches_wasm(this[0],e.tree[0],n.row,n.column,r.row,r.column,o,s,a.row,a.column,l.row,l.column,c,d,u,f);let p=M.getValue(Q,"i32"),g=M.getValue(Q+re,"i32"),h=M.getValue(Q+2*re,"i32"),_=new Array(p);this.exceededMatchLimit=!!h;let y=0,b=g;for(let x=0;xF(T))){_[y]={patternIndex:k,captures:T};let F=this.setProperties[k];_[y].setProperties=F;let R=this.assertedProperties[k];_[y].assertedProperties=R;let C=this.refutedProperties[k];_[y].refutedProperties=C,y++}}return _.length=y,M._free(g),M.currentQueryProgressCallback=null,_}captures(e,t={}){let n=t.startPosition??St,r=t.endPosition??St,o=t.startIndex??0,s=t.endIndex??0,a=t.startContainingPosition??St,l=t.endContainingPosition??St,c=t.startContainingIndex??0,d=t.endContainingIndex??0,u=t.matchLimit??4294967295,f=t.maxStartDepth??4294967295,m=t.progressCallback;if(typeof u!="number")throw new Error("Arguments must be numbers");if(this.matchLimit=u,s!==0&&o>s)throw new Error("`startIndex` cannot be greater than `endIndex`");if(r!==St&&(n.row>r.row||n.row===r.row&&n.column>r.column))throw new Error("`startPosition` cannot be greater than `endPosition`");if(d!==0&&c>d)throw new Error("`startContainingIndex` cannot be greater than `endContainingIndex`");if(l!==St&&(a.row>l.row||a.row===l.row&&a.column>l.column))throw new Error("`startContainingPosition` cannot be greater than `endContainingPosition`");m&&(M.currentQueryProgressCallback=m),ue(e),M._ts_query_captures_wasm(this[0],e.tree[0],n.row,n.column,r.row,r.column,o,s,a.row,a.column,l.row,l.column,c,d,u,f);let p=M.getValue(Q,"i32"),g=M.getValue(Q+re,"i32"),h=M.getValue(Q+2*re,"i32"),_=new Array;this.exceededMatchLimit=!!h;let y=new Array,b=g;for(let x=0;xF(y))){let F=y[T],R=this.setProperties[k];F.setProperties=R;let C=this.assertedProperties[k];F.assertedProperties=C;let A=this.refutedProperties[k];F.refutedProperties=A,_.push(F)}}return M._free(g),M.currentQueryProgressCallback=null,_}predicatesForPattern(e){return this.predicates[e]}disableCapture(e){let t=M.lengthBytesUTF8(e),n=M._malloc(t+1);M.stringToUTF8(e,n,t+1),M._ts_query_disable_capture(this[0],n,t),M._free(n)}disablePattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);M._ts_query_disable_pattern(this[0],e)}didExceedMatchLimit(){return this.exceededMatchLimit}startIndexForPattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);return M._ts_query_start_byte_for_pattern(this[0],e)}endIndexForPattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);return M._ts_query_end_byte_for_pattern(this[0],e)}patternCount(){return M._ts_query_pattern_count(this[0])}captureIndexForName(e){return this.captureNames.indexOf(e)}isPatternRooted(e){return M._ts_query_is_pattern_rooted(this[0],e)===1}isPatternNonLocal(e){return M._ts_query_is_pattern_non_local(this[0],e)===1}isPatternGuaranteedAtStep(e){return M._ts_query_is_pattern_guaranteed_at_step(this[0],e)===1}}});function Ar(e){return vi[e]}function va(e,t){let n=vi[e];return e===".h"&&mk.test(t)?"cpp":n}function xs(){let e=O.env.XDG_CACHE_HOME,t=e&&e.trim()?e.trim():j(_a(),".cache");return j(t,"codeindex","grammars",Te)}function Wt(e={}){let t=xs(),n=O.env.CODEINDEX_GRAMMARS_DIR,r=n&&n.trim()&&ne(n)?n:void 0,o=ne(t)?t:void 0,s=(d,u,f)=>{let m=j(u,"..",pk),p=[];for(let g of[u,ne(m)?m:void 0,...f])g!==void 0&&!p.includes(g)&&p.push(g);return{tier:d,dir:u,cacheDir:t,dirs:p}},a=O.env.CODEINDEX_GRAMMAR_DIR??O.env.ULTRAINDEX_GRAMMAR_DIR;if(a&&a.trim()&&ne(a))return s("env",a,[]);let l=e.moduleDir??Me(wa(import.meta.url)),c=[j(l,"grammars"),j(l,"..","..","scripts","grammars"),j(l,"..","scripts","grammars")];for(let d of c)if(ne(d))return s("adjacent",d,[r,o]);return r?s("env",r,[o]):o?s("cache",o,[]):{tier:"none",cacheDir:t,dirs:[]}}function Ra(){let{dirs:e}=Wt(),t=n=>e.some(r=>ne(j(r,n)));return t("web-tree-sitter.wasm")?new Set(Ca().filter(n=>t(`${n}.wasm`))):new Set}function gk(e){return Wt(e).dir}async function on(e){let{dirs:t}=Wt();if(!t.length)return;let n=r=>{for(let o of t){let s=j(o,r);if(ne(s))return s}};if(!cg){let r=n("web-tree-sitter.wasm");if(!r)return;await bd.init({wasmBinary:ie(r)}),cg=!0,Ea=new bd}for(let r of new Set(e)){if(ki.has(r))continue;let o=n(`${r}.wasm`),s=o?(()=>{try{let a=Ae(o);return`${o}:${a.size}:${a.mtimeMs}`}catch{return`${o}:unreadable`}})():`missing:${t.join("|")}`;if(ka.get(r)!==s){if(!o){ka.set(r,s);continue}try{ki.set(r,await _d.load(new Uint8Array(ie(o)))),ka.delete(r)}catch{ka.set(r,s)}}}}function Ca(){return[...new Set(Object.values(vi))]}function Bt(e){let t=new Set;for(let n of e){for(let o of fk[n]??[])t.add(o);let r=vi[n];r!==void 0&&t.add(r),n===".h"&&t.add("cpp")}return[...t].sort()}function Le(e){return ki.has(e)}function Sd(e){return ki.get(e)}function Ss(e){let t=ki.get(e);return!Ea||!t?null:(Ea.setLanguage(t),Ea)}var Ei,ws,vi,fk,mk,pk,cg,Ea,ki,ka,pt=z(()=>{"use strict";I();Ee();_i();fe();bi();xd();_t();Ei=new Set(["typescript","tsx","javascript","python","go","rust","java","ruby","c","cpp","c_sharp","php","scala","bash","lua"]),ws=new Set(["kotlin","elixir","zig","hcl","terraform","solidity"]),vi={".ts":"typescript",".mts":"typescript",".cts":"typescript",".tsx":"tsx",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".go":"go",".rs":"rust",".java":"java",".rb":"ruby",".rake":"ruby",".c":"c",".h":"c",".cc":"cpp",".cpp":"cpp",".cxx":"cpp",".hpp":"cpp",".hh":"cpp",".cs":"c_sharp",".php":"php",".scala":"scala",".sc":"scala",".sh":"bash",".bash":"bash",".lua":"lua",".kt":"kotlin",".kts":"kotlin",".ex":"elixir",".exs":"elixir",".zig":"zig",".hcl":"hcl",".tf":"terraform",".tfvars":"terraform",".sol":"solidity"},fk={".vue":["javascript","tsx","typescript"],".svelte":["javascript","tsx","typescript"],".astro":["typescript"]};mk=/^[ \t]*(?:namespace(?:[ \t]+[A-Za-z_][\w:]*)?\s*\{|using[ \t]+namespace[ \t]|template[ \t]*<|class[ \t]+(?:[A-Z_][A-Z0-9_]*[ \t]+)?[A-Za-z_]\w*(?:[ \t]+final)?[ \t]*(?:[:;{]|$)|(?:public|private|protected)[ \t]*:(?!:)|#[ \t]*include[ \t]*<[a-z_]+>|extern[ \t]+"C\+\+")/m;pk="grammars-extended";cg=!1,Ea=null,ki=new Map,ka=new Map});function $t(e,t){let n=[...e.namedChildren].reverse();for(;n.length;){let r=n.pop();if(t(r))return r;let o=r.namedChildren;for(let s=o.length-1;s>=0;s--)n.push(o[s])}}function dg(e){switch(e.type){case"operator_name":return e.text.replace(/\s+/g,"").replace(/^operator(?=\w)/,"operator ");case"operator_cast":{let t=e.text.split("(")[0].replace(/\s+/g," ").replace(/\s*([*&])\s*/g,"$1").trim();return t.length>8?t:void 0}case"destructor_name":return e.text.replace(/\s+/g,"")}}function kd(e){return e.childForFieldName("declarator")??(hk.has(e.type)?e.namedChildren[0]??null:null)}function Tr(e){let t=e.childForFieldName("name");if(t?.text)return t.text;let n=e.childForFieldName("declarator");for(;n;){let s=n.childForFieldName("name");if(s?.text){if(s.type==="qualified_identifier"){n=s;continue}return dg(s)??s.text}if(n.namedChildren.length===0&&/(^|_)identifier$/.test(n.type))return n.text;let a=dg(n);if(a)return a;let l=kd(n);if(!l||l===n)break;n=l}let o=$t(e,s=>s.type==="variable_declarator")?.childForFieldName("name");if(o?.text)return o.text;for(let s of e.namedChildren)if(/(^|_)(identifier|name|constant)$/.test(s.type))return s.text}function Ir(e){if(!e)return;let t=e.namedChildren;if(t.length===0)return ks.test(e.type)?e.text:void 0;let n=e.childForFieldName("name")??e.childForFieldName("property")??e.childForFieldName("attribute")??e.childForFieldName("field")??e.childForFieldName("function");if(n)return Ir(n);let r=t[t.length-1];return r&&r!==e?Ir(r):void 0}function Ri(e){if(!e||e.namedChildren.length===0)return;let t=e.childForFieldName("object")??e.childForFieldName("operand")??e.childForFieldName("value")??e.childForFieldName("path")??e.childForFieldName("expression")??e.childForFieldName("argument")??e.childForFieldName("receiver")??e.childForFieldName("table");if(t&&(t.type==="crate"||t.type==="super"))return t.type;let n=t?Ir(t):void 0;return n&&/^[A-Za-z_]\w*$/.test(n)?n:void 0}function Et(e){if(!e)return;let t=e.childForFieldName("type")??e.childForFieldName("name");if(t&&/generic|qualified|scoped|nested/.test(e.type))return Et(t);if(e.namedChildren.length===0)return ug.test(e.type)?e.text:void 0;let n,r=o=>{if(o.namedChildren.length===0){ug.test(o.type)&&(n=o.text);return}if(!/arguments|parameters|argument_list/.test(o.type))for(let s of o.namedChildren)r(s)};return r(e),n}var ks,Ma,hk,ug,Aa=z(()=>{"use strict";I();ks=/(^|_)(identifier|name|constant|word)$/,Ma=/(^|_)comment$/;hk=new Set(["reference_declarator","parenthesized_declarator"]);ug=/identifier|constant|(^|_)name$/});function wk(e){let t=[],n=e.previousNamedSibling,r=e.startPosition.row;for(;n;){let s=yk.test(n.type);if(!s&&!bk.test(n.type)||r-n.endPosition.row>1)break;s&&t.push(n),r=n.startPosition.row,n=n.previousNamedSibling}if(!t.length)return[];t.reverse();let o=[];for(let s of t)for(let a of s.text.split(/\r?\n/))o.push(Dt(a));return o}function Zn(e){let t=e;for(;t;){let n=wk(t);if(n.length){let s=kr(n);if(s)return s}let r=t.parent;if(!r||!_k.has(r.type))return;let o=t.previousNamedSibling;if(o&&!xk.test(o.type))return;t=r}}function fg(e){let n=e.childForFieldName("body")?.namedChildren[0];if(!n)return;let r=n.type==="string"?n:n.type==="expression_statement"?n.namedChildren[0]:void 0;if(!(!r||r.type!=="string"))return kr(r.text.split(/\r?\n/).map(Dt))}var yk,_k,bk,xk,Ed=z(()=>{"use strict";I();ai();yk=/(^|_)comment$/,_k=new Set(["export_statement","ambient_declaration","decorated_definition","template_declaration","labeled_statement","lexical_declaration","variable_declaration","type_declaration","const_declaration","var_declaration","body_statement","body"]),bk=/^(attribute_item|decorator)$/;xk=/decorator|annotation|modifiers/});function lt(e){if(!e)return[];let t=[];for(let n of e.namedChildren){if(/arguments|parameters/.test(n.type))continue;let r=Et(n);r&&t.push(r)}return t}function mg(e,t){if(!t.self)return[];let n=Ge(e,"class_heritage");if(!n)return[];let r=n.namedChildren.some(s=>s.type.endsWith("_clause")),o=[];for(let s of lt(r?Ge(n,"extends_clause"):n))o.push(He("extends",t.self,s,e));for(let s of lt(Ge(n,"implements_clause")))o.push(He("implements",t.self,s,e));return o}function Ci(e,t,n){return lt(e).map((o,s)=>He(s===0?"extends":"implements",t,o,n))}function Rk(e){for(let t=e.parent;t&&t.type!=="module";t=t.parent)if(t.type==="if_statement"&&vk.test(t.childForFieldName("condition")?.text??""))return!0;return!1}function Mk(e){let t=new Set,n=!1,r=c=>{if(c?.type!=="string"||c.namedChildren.some(u=>u.type==="interpolation"))return;let d=c.namedChildren.filter(u=>u.type==="string_content");return d.length<=1?d[0]?.text??"":void 0},o=c=>{if(c?.type!=="list"&&c?.type!=="tuple")return;let d=[];for(let u of c.namedChildren){let f=r(u);if(f===void 0)return;d.push(f)}return d},s=c=>c?.type==="identifier"&&c.text==="__all__",a=c=>{let d=c.namedChildren[0];if(!d)return[];if((d.type==="assignment"||d.type==="augmented_assignment")&&s(d.childForFieldName("left"))){if(d.type==="assignment")n=!0;else if(d.childForFieldName("operator")?.text!=="+=")return;return o(d.childForFieldName("right"))}let u=d.type==="call"?d.childForFieldName("function"):null;if(u?.type!=="attribute"||!s(u.childForFieldName("object")))return[];let f=d.childForFieldName("arguments")?.namedChildren,m=u.childForFieldName("attribute")?.text;if(m==="extend"&&f?.length===1)return o(f[0]);let p=m==="append"&&f?.length===1?r(f[0]):void 0;return p===void 0?void 0:[p]},l=c=>{for(let d of c.namedChildren){if(Ck.has(d.type)){if(!l(d))return!1;continue}if(d.type!=="expression_statement")continue;let u=a(d);if(u===void 0)return!1;for(let f of u)t.add(f)}return!0};return l(e)&&n?t:void 0}function bg(e){if(e.type!=="type_definition")return[];let t=Md(e),n=t?.childForFieldName("name")?.text;return t&&n&&n!==Tr(e)?[{name:n,kind:Mg[t.type]}]:[]}function wg(e){if(e.childForFieldName("value"))return!1;let t=e.parent;return t?.type!=="preproc_ifdef"||t.namedChildCount<=2||t.childForFieldName("name")?.text!==e.childForFieldName("name")?.text?!1:t.firstChild?.type==="#ifndef"}function xg(e){let t=e.childForFieldName("declarator");for(;t&&t.type!=="qualified_identifier";)t=kd(t);let n=null;for(;t?.type==="qualified_identifier";)n=t.childForFieldName("scope"),t=t.childForFieldName("name");return n?Et(n):void 0}function Sg(e,t){if(t)return/\b(val|var)\s*$/.exec(e.text.slice(0,t.startIndex-e.startIndex))?.[1]}function $a(e){if(!e)return;if(e.type==="identifier")return{name:e.text};if(e.type!=="dot_index_expression"&&e.type!=="method_index_expression")return;let t=e.childForFieldName("table"),n=e.childForFieldName("field")??e.childForFieldName("method");return t&&n&&/^[\w.]+$/.test(t.text)?{name:n.text,table:t.text}:void 0}function vg(e){if(e.childForFieldName("left")?.type!=="constant")return;let t=e.childForFieldName("right");if(t?.type==="call")return Ik[`${t.childForFieldName("receiver")?.text}.${t.childForFieldName("method")?.text}`]}function $k(e,t){if(t.inFunctionBody||e.type!=="method_definition"||e.childForFieldName("name")?.text!=="constructor")return[];let n=[];for(let r of e.childForFieldName("parameters")?.namedChildren??[]){if(r.type!=="required_parameter"&&r.type!=="optional_parameter"||!r.children.some(s=>s.type==="accessibility_modifier"||s.type==="override_modifier"||s.type==="readonly"))continue;let o=r.childForFieldName("pattern");o?.type==="identifier"&&n.push({name:o.text,kind:"property",node:r})}return n}function Fk(e,t){if(t.inFunctionBody||e.type!=="method_declaration")return[];if(!/^__construct$/i.test(e.childForFieldName("name")?.text??""))return[];let n=[];for(let r of e.childForFieldName("parameters")?.namedChildren??[]){if(r.type!=="property_promotion_parameter")continue;let o=r.childForFieldName("name")?.text.replace(/^\$/,"");o&&n.push({name:o,kind:"property",node:r})}return n}var Ge,He,Cg,Ad,Fa,pg,vd,Sk,gg,hg,kk,Mi,Ek,vk,Ck,Ia,Rd,yg,_g,Ta,Mg,Md,kg,Ag,Ak,Eg,Ik,Tk,Rg,Cd,Id,Ig=z(()=>{"use strict";I();Aa();Ed();Ge=(e,t)=>e.namedChildren.find(n=>n.type===t),He=(e,t,n,r)=>({kind:e,from:t,to:n,line:r.startPosition.row+1});Cg=new Set(["interface","trait","enum","protocol","annotation"]),Ad=new Set(["function","method","def","constructor","operator"]),Fa=new Set(["function","function_expression","arrow_function","generator_function","class","function_definition","lambda"]),pg=(e,t,n)=>/\b(public|internal)\b/.test(n),vd=(e,t,n)=>!/\b(private|protected)\b/.test(n),Sk=e=>!/^local\b/.test(e),gg=(e,t,n)=>/\bpub\b/.test(n),hg=(e,t)=>/^[A-Z]/.test(t),kk=(e,t)=>!t.startsWith("_")||/^__\w+__$/.test(t),Mi=()=>!0,Ek=()=>!1,vk=/^(__name__\s*==\s*(["'])__main__\2|(["'])__main__\3\s*==\s*__name__)$/;Ck=new Set(["block","if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement"]);Ia=e=>$t(e,t=>t.type==="function_declarator"||t.type==="operator_cast")!==void 0,Rd=e=>t=>t.childrenForFieldName(e).flatMap(n=>/identifier$/.test(n.type)?n.text:[]),yg=e=>(Ge(e,"variable_declaration")?.namedChildren??[]).flatMap(t=>t.type==="variable_declarator"?t.childForFieldName("name")?.text??[]:[]),_g=e=>e.childrenForFieldName("declarator").flatMap(t=>t.childForFieldName("name")?.text??[]),Ta=e=>e.childrenForFieldName("declarator").flatMap(t=>t.namedChildren.length>0?Tr(t)??[]:/identifier$/.test(t.type)?t.text:[]),Mg={struct_specifier:"struct",union_specifier:"union",enum_specifier:"enum",class_specifier:"class"},Md=e=>{let t=e.childForFieldName("type");return t&&Mg[t.type]&&t.childForFieldName("body")?t:void 0};kg={defmodule:"module",defprotocol:"protocol",defimpl:"impl",defstruct:"struct",defexception:"exception",def:"function",defp:"function",defmacro:"macro",defmacrop:"macro",defguard:"guard",defguardp:"guard",defdelegate:"function"},Ag=e=>e.type==="binary_operator"&&e.childForFieldName("operator")?.text==="when",Ak=e=>Ag(e)?e.childForFieldName("left")??e:e;Eg={public:!0,private:!1,protected:!1,module_function:!0,public_class_method:!0,private_class_method:!1},Ik={"Struct.new":"class","Class.new":"class","Data.define":"class","Module.new":"module"};Tk=new Set(["resource","data","variable","output","module","provider","locals","terraform"]),Rg={lang:"terraform",defs:{block:"block"},containers:new Set(["config_file","body"]),exported:Mi,kindFrom:{block:e=>{let t=e.namedChildren.find(n=>n.type==="identifier")?.text;return t&&Tk.has(t)?t:void 0}},nameFrom:{block:e=>{let t=e.namedChildren.filter(n=>n.type==="string_lit").map(n=>n.text.replace(/^"|"$/g,""));return t.length?t.join("."):e.namedChildren.find(n=>n.type==="identifier")?.text}}};Cd={lang:"typescript",defs:{function_declaration:"function",generator_function_declaration:"function",function_signature:"function",class_declaration:"class",abstract_class_declaration:"class",interface_declaration:"interface",type_alias_declaration:"type",enum_declaration:"enum",enum_assignment:"enum-member",method_definition:"method",method_signature:"method",abstract_method_signature:"method",property_signature:"property",public_field_definition:"property",call_signature:"call-signature",construct_signature:"construct-signature",index_signature:"index-signature",internal_module:"namespace",module:"namespace",variable_declarator:"const"},containers:new Set(["class_body","export_statement","ambient_declaration","program","lexical_declaration","variable_declaration","interface_body","object_type","enum_body","statement_block","try_statement","catch_clause","finally_clause","if_statement","else_clause","for_statement","for_in_statement","while_statement","do_statement","switch_statement","switch_body","switch_case","switch_default","labeled_statement","return_statement","expression_statement","call_expression","arguments","arrow_function","function_expression","function","parenthesized_expression"]),exported:Ek,exportMarkers:new Set(["export_statement","ambient_declaration"]),bareMembers:{enum_body:"enum-member"},nameFrom:{call_signature:()=>"(call)",construct_signature:()=>"(construct)",index_signature:e=>`[${e.namedChildren.find(t=>t.type==="identifier")?.text??"key"}]`},privateMember:e=>{for(let t of e.namedChildren)if(t.type==="accessibility_modifier"&&/^(private|protected)/.test(t.text)||t.type==="private_property_identifier")return!0;return!1},imports:{import_statement:"string"},calls:{call_expression:"function",new_expression:"constructor"},assignments:!0,extraMembers:$k,relationsFrom:{class_declaration:mg,abstract_class_declaration:mg,interface_declaration:(e,t)=>t.self?lt(Ge(e,"extends_type_clause")).map(n=>He("extends",t.self,n,e)):[]}},Id={typescript:Cd,tsx:{...Cd,lang:"typescript"},javascript:{...Cd,lang:"javascript",defs:{function_declaration:"function",generator_function_declaration:"function",class_declaration:"class",method_definition:"method",field_definition:"property",variable_declarator:"const"}},python:{lang:"python",defs:{function_definition:"function",class_definition:"class"},containers:new Set(["block","decorated_definition","module","if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement","match_statement","case_clause"]),exported:kk,publicNames:Mk,imports:{import_statement:"path",import_from_statement:"path"},calls:{call:"function"},docstring:!0,relationsFrom:{class_definition:(e,t)=>t.self?lt(e.childForFieldName("superclasses")).map(n=>He("extends",t.self,n,e)):[]},extraMembers:(e,t)=>{if(t.inFunctionBody)return[];if(e.type==="import_from_statement"){let s=[],a=e.childForFieldName("module_name");for(let l of e.namedChildren)if(!(a&&l.startIndex===a.startIndex))if(l.type==="aliased_import"){let c=l.namedChildren[0]?.text,d=l.childForFieldName("alias")?.text;d&&(c===d||t.ownerKind===void 0&&t.publicNames?.has(d))&&s.push({name:d,kind:"reexport"})}else l.type==="dotted_name"&&t.ownerKind===void 0&&t.publicNames?.has(l.text)&&s.push({name:l.text,kind:"reexport"});return s}if(e.type!=="expression_statement")return[];let n=e.namedChildren[0];if(!n||n.type!=="assignment")return[];if(Rk(e))return[];let r=[];for(let s=n;s?.type==="assignment";s=s.childForFieldName("right")){let a=s.childForFieldName("left");if(a?.type==="identifier")r.push(a.text);else if(a&&/^(pattern_list|tuple_pattern|list_pattern)$/.test(a.type))for(let l of a.namedChildren){let c=l.type==="list_splat_pattern"?l.namedChildren[0]:l;c?.type==="identifier"&&r.push(c.text)}}let o=t.ownerKind==="class"?"field":"const";return r.map(s=>({name:s,kind:o}))}},go:{lang:"go",defs:{function_declaration:"function",method_declaration:"method",type_spec:"type",type_alias:"type",const_spec:"const",var_spec:"var",field_declaration:"field",method_spec:"method",method_elem:"method",package_clause:"package"},containers:new Set(["type_declaration","const_declaration","var_declaration","var_spec_list","source_file","struct_type","interface_type","field_declaration_list"]),exported:hg,imports:{import_declaration:"string"},calls:{call_expression:"function"},parentFrom:{method_declaration:e=>Et(e.childForFieldName("receiver"))},nameFrom:{field_declaration:e=>e.childForFieldName("name")?.text},namesFrom:{var_spec:Rd("name"),const_spec:Rd("name"),field_declaration:Rd("name")},relationsFrom:{field_declaration:(e,t)=>{if(!t.self||e.childForFieldName("name"))return[];let n=Et(e.childForFieldName("type"));return n?[He("extends",t.self,n,e)]:[]}}},ruby:{lang:"ruby",defs:{method:"def",singleton_method:"def",class:"class",module:"module"},containers:new Set(["class","module","body_statement","program","singleton_class","block_body"]),sectionScopes:new Set(["singleton_class"]),exported:Mi,kindFrom:{assignment:vg},nameFrom:{assignment:e=>e.childForFieldName("left")?.text},bodyFrom:{assignment:e=>e.childForFieldName("right")?.childForFieldName("block")?.childForFieldName("body")??void 0},inlineVisibility:e=>{if(e.type!=="call"||e.childForFieldName("receiver"))return;let t=Eg[e.childForFieldName("method")?.text??""];if(t===void 0)return;let n=(e.childForFieldName("arguments")?.namedChildren??[]).filter(r=>r.type==="method"||r.type==="singleton_method"||r.type==="call");return n.length?{nodes:n,public:t}:void 0},docFrom:e=>{let t=e.parent?.type==="argument_list"?e.parent.parent:null;return t?.type==="call"&&Eg[t.childForFieldName("method")?.text??""]!==void 0?Zn(t):void 0},calls:{call:"function"},sectionVisibility:e=>(e.type==="identifier"||e.type==="call")&&/^(private|protected)$/.test(e.text)?!1:e.type==="identifier"&&e.text==="public"?!0:void 0,relationsFrom:{class:(e,t)=>{if(!t.self)return[];let n=Et(e.childForFieldName("superclass"));return n?[He("extends",t.self,n,e)]:[]},call:(e,t)=>{let n=e.childForFieldName("method"),r=e.childForFieldName("receiver");if(!t.self||!n||!/^(include|prepend|extend)$/.test(n.text))return[];if(r&&r.type!=="self")return[];let o=[];for(let s of e.childForFieldName("arguments")?.namedChildren??[]){let a=Et(s);a&&o.push(He("implements",t.self,a,e))}return o}},extraMembers:(e,t)=>{if(t.inFunctionBody)return[];if(e.type==="assignment"){let n=e.childForFieldName("left");return n?.type==="constant"&&!vg(e)?[{name:n.text,kind:"const"}]:[]}if(e.type==="call"){let n=e.childForFieldName("method");if(!n||!/^attr_(reader|writer|accessor)$/.test(n.text))return[];let r=e.childForFieldName("arguments"),o=[];for(let s of r?.namedChildren??[])s.type==="simple_symbol"&&o.push({name:s.text.replace(/^:/,""),kind:"attr"});return o}return[]}},java:{lang:"java",defs:{class_declaration:"class",interface_declaration:"interface",annotation_type_declaration:"annotation",enum_declaration:"enum",enum_constant:"enum-member",record_declaration:"record",method_declaration:"method",constructor_declaration:"constructor",compact_constructor_declaration:"constructor",field_declaration:"field",constant_declaration:"field",annotation_type_element_declaration:"method"},containers:new Set(["class_body","interface_body","enum_body","enum_body_declarations","annotation_type_body","program","formal_parameters"]),exported:pg,imports:{import_declaration:"path"},calls:{method_invocation:"function",object_creation_expression:"constructor"},kindFrom:{formal_parameter:e=>e.parent?.parent?.type==="record_declaration"?"field":void 0},publicMember:e=>e.parent?.parent?.type==="record_declaration",nameFrom:{field_declaration:e=>$t(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,constant_declaration:e=>$t(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text},namesFrom:{field_declaration:_g,constant_declaration:_g},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let o of lt(e.childForFieldName("superclass")))n.push(He("extends",t.self,o,e));let r=e.childForFieldName("interfaces");for(let o of lt(Ge(r??e,"type_list")??r))n.push(He("implements",t.self,o,e));return n},interface_declaration:(e,t)=>{let n=e.childForFieldName("interfaces")??Ge(e,"extends_interfaces");return t.self?lt(Ge(n??e,"type_list")??n).map(r=>He("extends",t.self,r,e)):[]},record_declaration:(e,t)=>{let n=e.childForFieldName("interfaces");return t.self?lt(Ge(n??e,"type_list")??n).map(r=>He("implements",t.self,r,e)):[]}}},rust:{lang:"rust",defs:{function_item:"function",function_signature_item:"function",struct_item:"struct",enum_item:"enum",enum_variant:"enum-member",field_declaration:"field",trait_item:"trait",type_item:"type",associated_type:"type",mod_item:"mod",const_item:"const",static_item:"static",union_item:"union",macro_definition:"macro"},containers:new Set(["impl_item","declaration_list","source_file","field_declaration_list","enum_variant_list","foreign_mod_item","block"]),exported:gg,calls:{call_expression:"function"},parentFrom:{impl_item:e=>Et(e.childForFieldName("type"))},nestedDefs:new Set(["const_item","static_item"]),publicMembersIn:{impl_item:e=>e.childForFieldName("trait")!==null},relationsFrom:{impl_item:(e,t)=>{let n=Et(e.childForFieldName("trait"));return t.self&&n?[He("implements",t.self,n,e)]:[]}}},c_sharp:{lang:"csharp",defs:{class_declaration:"class",interface_declaration:"interface",struct_declaration:"struct",enum_declaration:"enum",enum_member_declaration:"enum-member",record_declaration:"record",delegate_declaration:"delegate",method_declaration:"method",constructor_declaration:"constructor",property_declaration:"property",indexer_declaration:"indexer",operator_declaration:"operator",field_declaration:"field",event_declaration:"event",event_field_declaration:"event",conversion_operator_declaration:"operator",destructor_declaration:"destructor"},containers:new Set(["namespace_declaration","declaration_list","compilation_unit","file_scoped_namespace_declaration","enum_member_declaration_list","parameter_list"]),exported:pg,calls:{invocation_expression:"function",object_creation_expression:"constructor"},kindFrom:{parameter:e=>e.parent?.parent?.type==="record_declaration"?"field":void 0},publicMember:e=>e.parent?.parent?.type==="record_declaration",nameFrom:{field_declaration:e=>$t(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,event_field_declaration:e=>$t(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,conversion_operator_declaration:e=>e.childForFieldName("type")?.text,operator_declaration:e=>{let t=e.childForFieldName("operator")?.text;return t?`operator${/^\w/.test(t)?" ":""}${t}`:void 0},indexer_declaration:()=>"this[]"},namesFrom:{field_declaration:e=>yg(e),event_field_declaration:e=>yg(e)},relationsFrom:{class_declaration:(e,t)=>t.self?Ci(Ge(e,"base_list"),t.self,e):[],struct_declaration:(e,t)=>t.self?Ci(Ge(e,"base_list"),t.self,e):[],record_declaration:(e,t)=>t.self?Ci(Ge(e,"base_list"),t.self,e):[],interface_declaration:(e,t)=>t.self?lt(Ge(e,"base_list")).map(n=>He("extends",t.self,n,e)):[]}},php:{lang:"php",defs:{function_definition:"function",class_declaration:"class",interface_declaration:"interface",trait_declaration:"trait",enum_declaration:"enum",enum_case:"enum-member",method_declaration:"method",property_declaration:"property",const_declaration:"const",namespace_definition:"namespace"},containers:new Set(["declaration_list","enum_declaration_list","program"]),exported:vd,calls:{function_call_expression:"function",member_call_expression:"member",object_creation_expression:"constructor"},extraMembers:Fk,nameFrom:{property_declaration:e=>$t(e,t=>t.type==="variable_name")?.text.replace(/^\$/,""),const_declaration:e=>$t(e,t=>t.type==="const_element")?.namedChildren[0]?.text},namesFrom:{property_declaration:e=>e.namedChildren.flatMap(t=>t.type==="property_element"?t.childForFieldName("name")?.text.replace(/^\$/,"")??[]:[]),const_declaration:e=>e.namedChildren.flatMap(t=>t.type==="const_element"?t.namedChildren[0]?.text??[]:[])},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let r of lt(Ge(e,"base_clause")))n.push(He("extends",t.self,r,e));for(let r of lt(Ge(e,"class_interface_clause")))n.push(He("implements",t.self,r,e));return n},interface_declaration:(e,t)=>t.self?lt(Ge(e,"base_clause")).map(n=>He("extends",t.self,n,e)):[]}},c:{lang:"c",defs:{function_definition:"function",struct_specifier:"struct",enum_specifier:"enum",enumerator:"enum-member",union_specifier:"union",type_definition:"type",field_declaration:"field",declaration:"const",preproc_def:"macro",preproc_function_def:"macro"},containers:new Set(["translation_unit","declaration_list","field_declaration_list","enumerator_list","linkage_specification","preproc_ifdef","preproc_if"]),exported:Mi,calls:{call_expression:"function"},kindFrom:{field_declaration:e=>Ia(e)?"method":"field",declaration:e=>Ia(e)?"function":"const"},nameFrom:{preproc_def:e=>wg(e)?void 0:e.childForFieldName("name")?.text},namesFrom:{field_declaration:Ta,declaration:Ta},bodyFrom:{type_definition:Md},extraMembers:bg},cpp:{lang:"cpp",defs:{function_definition:"function",class_specifier:"class",struct_specifier:"struct",enum_specifier:"enum",enumerator:"enum-member",union_specifier:"union",type_definition:"type",alias_declaration:"type",concept_definition:"concept",namespace_definition:"namespace",namespace_alias_definition:"namespace",field_declaration:"field",declaration:"const",using_declaration:"using",friend_declaration:"friend",preproc_def:"macro",preproc_function_def:"macro"},containers:new Set(["translation_unit","declaration_list","field_declaration_list","enumerator_list","template_declaration","linkage_specification","preproc_ifdef","preproc_if"]),exported:Mi,calls:{call_expression:"function",new_expression:"constructor"},kindFrom:{field_declaration:e=>Ia(e)?"method":"field",declaration:e=>Ia(e)?"function":"const"},sectionVisibility:e=>e.type==="access_specifier"?!/^(private|protected)/.test(e.text):void 0,nameFrom:{friend_declaration:e=>Tr(e)??(e.namedChildren[0]?Tr(e.namedChildren[0]):void 0),preproc_def:e=>wg(e)?void 0:e.childForFieldName("name")?.text},namesFrom:{field_declaration:Ta,declaration:Ta},parentFrom:{function_definition:xg,declaration:xg},bodyFrom:{type_definition:Md},extraMembers:bg,relationsFrom:{class_specifier:(e,t)=>t.self?lt(Ge(e,"base_class_clause")).map(n=>He("extends",t.self,n,e)):[],struct_specifier:(e,t)=>t.self?lt(Ge(e,"base_class_clause")).map(n=>He("extends",t.self,n,e)):[]}},scala:{lang:"scala",defs:{class_definition:"class",object_definition:"object",trait_definition:"trait",enum_definition:"enum",function_definition:"def",function_declaration:"def",val_definition:"val",val_declaration:"val",var_definition:"var",type_definition:"type",given_definition:"given",package_clause:"package"},containers:new Set(["compilation_unit","package_clause","template_body","class_parameters","parameters","extension_definition"]),parentFrom:{extension_definition:e=>Et(Ge(e,"parameters")?.namedChildren[0]?.childForFieldName("type")??null)},exported:vd,kindFrom:{class_parameter:e=>{let t=Sg(e,e.childForFieldName("name"));return t||(e.parent?.parent?.type==="class_definition"&&/\bcase\s+class\b/.test(e.parent.parent.text.slice(0,80))?"val":void 0)}},calls:{call_expression:"function",instance_expression:"constructor"},relationsFrom:{class_definition:(e,t)=>t.self?Ci(Ge(e,"extends_clause"),t.self,e):[],object_definition:(e,t)=>t.self?Ci(Ge(e,"extends_clause"),t.self,e):[],trait_definition:(e,t)=>t.self?lt(Ge(e,"extends_clause")).map(n=>He("extends",t.self,n,e)):[]}},bash:{lang:"shell",defs:{function_definition:"function",declaration_command:"const"},containers:new Set(["program","if_statement","compound_statement"]),exported:Mi,calls:{command:"function"},nameFrom:{declaration_command:e=>/^\s*local\b/.test(e.text)?void 0:$t(e,t=>t.type==="variable_name")?.text}},kotlin:{lang:"kotlin",defs:{class_declaration:"class",object_declaration:"object",function_declaration:"function",property_declaration:"property",enum_entry:"enum-member",type_alias:"type",class_parameter:"property"},containers:new Set(["source_file","class_body","enum_class_body","companion_object","object_declaration","primary_constructor","class_parameters"]),exported:vd,calls:{call_expression:"function"},kindFrom:{class_parameter:e=>Sg(e,e.namedChildren.find(t=>/identifier$/.test(t.type)))||/\bdata\s+class\b/.test(e.parent?.parent?.parent?.text.slice(0,80)??"")?"property":void 0,class_declaration:e=>{let t=e.text.slice(0,80);return/\binterface\b/.test(t)?"interface":/\benum\s+class\b/.test(t)?"enum":/\bannotation\s+class\b/.test(t)?"annotation":"class"}},nameFrom:{property_declaration:e=>$t(e,t=>t.type==="variable_declaration")?.namedChildren[0]?.text??e.namedChildren.find(t=>t.type==="identifier")?.text},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let r of Ge(e,"delegation_specifiers")?.namedChildren??[]){let o=Et(r);o&&n.push(He($t(r,s=>s.type==="constructor_invocation")?"extends":"implements",t.self,o,e))}return n}}},elixir:{lang:"elixir",defs:{},containers:new Set(["source","do_block","call","stab_clause"]),exported:e=>!/^\s*def(p|macrop|guardp)\b/.test(e),calls:{call:"function"},kindFrom:{call:e=>kg[e.childForFieldName("target")?.text??e.namedChildren[0]?.text??""]},skipCall:e=>{if(e.parent?.type==="unary_operator")return!0;let t=e.parent,n=t&&Ag(t)&&t.startIndex===e.startIndex?t:e;if(n.parent?.type!=="arguments")return!1;let r=n.parent.parent,o=r?.childForFieldName("target")??r?.namedChildren[0];return o!==void 0&&kg[o.text]!==void 0},docFrom:e=>{let t=e.previousNamedSibling;for(;t&&t.type==="unary_operator";){let n=t.namedChildren[0],r=n?.childForFieldName("target")??n?.namedChildren[0];if(r&&/^(doc|moduledoc)$/.test(r.text)){let o=$t(t,s=>s.type==="string");if(o)return o.text.replace(/^"""|"""$/g,"").replace(/^"|"$/g,"").trim()||void 0}t=t.previousNamedSibling}},nameFrom:{call:e=>{let n=(e.childForFieldName("arguments")??e.namedChildren.find(s=>s.type==="arguments"))?.namedChildren[0];if(!n)return;let r=Ak(n);if(r.type==="alias"||r.type==="identifier")return r.text;if(r.type==="binary_operator")return r.childForFieldName("operator")?.text;let o=r.childForFieldName("target")??r.namedChildren[0];return o&&/identifier|alias/.test(o.type)?o.text:void 0}}},zig:{lang:"zig",defs:{function_declaration:"function",variable_declaration:"const",container_field:"field",test_declaration:"test"},containers:new Set(["source_file","variable_declaration","struct_declaration","enum_declaration","union_declaration","error_set_declaration","opaque_declaration","block"]),exported:gg,calls:{call_expression:"function"},kindFrom:{variable_declaration:e=>{let t=e.namedChildren.find(n=>n.type==="builtin_function");if(!(t&&/^@(import|cImport)\b/.test(t.text))){for(let n of e.namedChildren){if(n.type==="struct_declaration")return"struct";if(n.type==="enum_declaration")return"enum";if(n.type==="union_declaration")return"union";if(n.type==="error_set_declaration")return"error";if(n.type==="opaque_declaration")return"opaque"}return/^\s*(?:pub\s+)?var\b/.test(e.text.slice(0,24))?"var":"const"}},container_field:e=>e.parent?.type==="enum_declaration"?"enum-member":"field"}},solidity:{lang:"solidity",defs:{contract_declaration:"contract",interface_declaration:"interface",library_declaration:"library",function_definition:"function",constructor_definition:"constructor",modifier_definition:"modifier",event_definition:"event",error_declaration:"error",struct_declaration:"struct",struct_member:"field",enum_declaration:"enum",enum_value:"enum-member",state_variable_declaration:"field",constant_variable_declaration:"const",user_defined_type_definition:"type",fallback_receive_definition:"function"},containers:new Set(["source_file","contract_body","struct_declaration","enum_declaration","enum_body"]),exported:(e,t)=>/\b(public|external)\b/.test(e)?!0:/\b(internal|private)\b/.test(e)?!1:hg(e,t)||!0,calls:{call_expression:"function"},nameFrom:{state_variable_declaration:e=>e.namedChildren.find(t=>t.type==="identifier")?.text,fallback_receive_definition:e=>/^\s*receive\b/.test(e.text)?"receive":"fallback",enum_value:e=>e.text},relationsFrom:{contract_declaration:(e,t)=>t.self?e.namedChildren.filter(n=>n.type==="inheritance_specifier").map(n=>Et(n)).filter(n=>n!==void 0).map(n=>He("extends",t.self,n,e)):[],interface_declaration:(e,t)=>t.self?e.namedChildren.filter(n=>n.type==="inheritance_specifier").map(n=>Et(n)).filter(n=>n!==void 0).map(n=>He("extends",t.self,n,e)):[]}},terraform:Rg,hcl:{...Rg,lang:"hcl"},lua:{lang:"lua",defs:{function_declaration:"function"},containers:new Set(["chunk","variable_declaration"]),exported:Sk,calls:{function_call:"function"},assignments:!0,nameFrom:{function_declaration:e=>$a(e.childForFieldName("name"))?.name},parentFrom:{function_declaration:e=>$a(e.childForFieldName("name"))?.table}}}});function Tg(e){for(let t of e.children)if(t.type==="{"||t.type==="("||t.type==="[")return t.startIndex}function Dk(e,t){let n,r=s=>{s!==void 0&&s>e.startIndex&&(n===void 0||s{Ok.has(s.type)?r(s.startIndex):r(Nk.get(s.type)?.(s))};r(e.childForFieldName("body")?.startIndex),o(e);for(let s of e.namedChildren){if(n!==void 0&&s.startIndex>=n)break;o(s),$g.has(s.type)&&r(s.childForFieldName("body")?.startIndex);let a;for(let l of s.namedChildren){if(n!==void 0&&l.startIndex>=n)break;o(l),$g.has(l.type)&&(a===void 0&&(a=s.childForFieldName("value")??s.childForFieldName("right")),a?.startIndex===l.startIndex&&r(l.childForFieldName("body")?.startIndex))}}if(n===void 0&&t.startsWith("end",e.endIndex-3)){let s=e.children,a=s.length-1;if(s[a]?.type==="end"){for(;a>0&&s[a-1].type===";";)a--;r(s[a].startIndex)}}return n}function Wk(e,t,n){let r=[],o=s=>{for(let a of s.namedChildren){if(a.startIndex>=n)return;a.endIndex<=t||(Ma.test(a.type)?r.push(a):ks.test(a.type)||o(a))}};return o(e),r}function Yn(e,t){let n=e.startIndex,r=Math.min(Dk(e,t)??e.endIndex,n+Lk),o=t.slice(n,r),s="",a=n;for(let l of jk.test(o)?Wk(e,n,r):[])for(s=Fg(s,t.slice(a,Math.max(a,l.startIndex)).replace(/[ \t]+$/,"")),a=Math.min(l.endIndex,r);a|=)$/,"").trim().slice(0,Pk)}var Ok,Nk,$g,Pk,Lk,jk,Fg,Og=z(()=>{"use strict";I();Aa();Ok=new Set(["block","statement_block","class_body","declaration_list","field_declaration_list","template_body","compound_statement","body_statement","enum_body","enum_body_declarations","enum_variant_list","enum_member_declaration_list","enumerator_list","interface_body","object_type","do_block","struct_declaration","enum_declaration","union_declaration","error_set_declaration","opaque_declaration","contract_body","enum_class_body"]),Nk=new Map([["interface_type",e=>e.namedChildren.some(t=>t.type==="method_elem")?Tg(e):void 0],["macro_definition",e=>Tg(e)],["preproc_function_def",e=>e.childForFieldName("value")?.startIndex]]);$g=new Set(["arrow_function","function_expression","function","generator_function","function_definition","lambda","lambda_expression"]),Pk=400,Lk=4096;jk=/\/[/*]|#|--|=begin/;Fg=(e,t)=>e&&t&&!/[\s([{]$/.test(e)&&!/^[\s,;)\]}]/.test(t)?`${e} ${t}`:e+t});function Td(e){return e.replace(/^['"`]|['"`]$/g,"")}function zk(e,t){if(e.type==="import_statement"){let n=e.childForFieldName("source");if(!n)return;let r=Td(n.text);for(let o of e.namedChildren)if(o.type==="import_clause"){for(let s of o.namedChildren)if(s.type==="identifier")t.push({local:s.text,name:"default",from:r});else if(s.type==="namespace_import"){let a=s.namedChildren.find(l=>l.type==="identifier");a&&t.push({local:a.text,name:"*",from:r})}else if(s.type==="named_imports")for(let a of s.namedChildren){if(a.type!=="import_specifier")continue;let l=a.childForFieldName("name")?.text,c=a.childForFieldName("alias")?.text;l&&c&&c!==l&&t.push({local:c,name:Td(l),from:r})}}}else if(e.type==="export_statement"&&e.children.some(n=>n.type==="default")){let n=e.childForFieldName("declaration"),r=n?n.childForFieldName("name")?.text:e.childForFieldName("value")?.type==="identifier"?e.childForFieldName("value").text:void 0;r&&t.push({local:"default",name:r})}}function Ng(e,t){if(e.type==="import_statement"){for(let n of e.namedChildren)if(n.type==="dotted_name"){let r=n.namedChildren[0]?.text;r&&t.push({local:r,name:"*",from:r})}else if(n.type==="aliased_import"){let r=n.childForFieldName("name")?.text,o=n.childForFieldName("alias")?.text;r&&o&&t.push({local:o,name:"*",from:r})}}else if(e.type==="import_from_statement"){let n=e.childForFieldName("module_name")?.text;if(!n)return;for(let r of e.namedChildren){if(r.type!=="aliased_import")continue;let o=r.childForFieldName("name")?.text,s=r.childForFieldName("alias")?.text;o&&s&&s!==o&&t.push({local:s,name:o,from:n})}}else if(Uk.has(e.type))for(let n of e.namedChildren)Ng(n,t)}function Pg(e,t){if(e.type==="import_declaration"||e.type==="import_spec_list")for(let n of e.namedChildren)Pg(n,t);else if(e.type==="import_spec"){let n=e.childForFieldName("name"),r=e.childForFieldName("path");n?.type==="package_identifier"&&r&&t.push({local:n.text,name:"*",from:Td(r.text)})}}function Lg(e,t){let n=t==="typescript"||t==="javascript"?zk:t==="python"?Ng:t==="go"?Pg:void 0;if(!n)return[];let r=[];for(let a of e.namedChildren)n(a,r);let o=new Set,s=[];for(let a of r.sort((l,c)=>$(l.local,c.local)||$(l.name,c.name)||$(l.from??"",c.from??""))){let l=`${a.local}\0${a.name}\0${a.from??""}`;if(!o.has(l)&&(o.add(l),s.push(a),s.length>=Bk))break}return s}var Bk,Uk,Dg=z(()=>{"use strict";I();le();Bk=256,Uk=new Set(["if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement","block"])});function aE(e){let t=Wg.get(e);return t===void 0&&(t=(eE.test(e)?Bg:0)|(Ma.test(e)?Ug:0)|(nE.test(e)?Oa:0)|(rE.test(e)?zg:0)|(sE.test(e)?Hg:0),Wg.set(e,t)),t}function lE(e){return e.namedChildren.every(t=>iE.test(t.type))}function cE(e){let t=e.parent;return t!==null&&t.type==="expression_statement"&&t.namedChildCount===1}function Na(e,t){let n=e.slice();if(e.length>t){let r=new Uint8Array(e.length),o=new Set,s=0;for(let a=0;ar[l]===1)}return n.sort((r,o)=>$(r.name,o.name)||r.line-o.line||$(r.receiver??"",o.receiver??""))}function dE(e,t,n,r){let o=new Set,s=t.calls!==void 0,a=[],l=new Set,c=(h,_,y)=>{if(!h||h==="_"||!/^[A-Za-z_]\w*$/.test(h))return;let b=_.startPosition.row+1,x=`${h} ${b} ${y??""}`;l.has(x)||(l.add(x),a.push(y?{name:h,line:b,receiver:y}:{name:h,line:b}))},d=new Set,u=h=>{if(!(d.size>=jg))for(let _ of mn(h)){if(d.size>=jg)return;d.add(_)}},f=new Kn,m=t.imports?.import_statement!==void 0,p=new Set,g=[e];for(;g.length;){let h=g.pop(),_=h.type,y=h.namedChildren,b=aE(_);if(y.length===0&&b&Bg){let k=h.text;tE.test(k)&&!n.has(k)&&o.add(k)}let x=b&Oa?lE(h):!1;if(b&Ug)for(let k of h.text.split(/\r?\n/))u(Dt(k));else if(b&Oa&&h.endIndex-h.startIndex<=Jk)if(x)u(cd(h.text));else for(let k of y)oE.test(k.type)&&u(k.text);if(f.full||(b&Oa?x&&!cE(h)&&f.addString(h.text,h.startPosition.row+1):y.length===0&&b&zg?f.add("number",h.text.trim(),h.startPosition.row+1):b&Hg&&f.add("regex",h.text,h.startPosition.row+1)),s&&!(t.kindFrom?.[_]&&t.kindFrom[_](h))&&!t.skipCall?.(h)){let k=t.calls[_];if(k==="function"){let v=h.childForFieldName("function")??h.childForFieldName("callee")??h.childForFieldName("method")??h.childForFieldName("name")??h.childForFieldName("target")??y[0]??null,T=v&&t.calls[v.type]==="function"?v.childForFieldName("function"):null;c(Ir(v),h,Ri(T??v)??Ri(h))}else if(k==="member")c(Ir(h.childForFieldName("name")),h,Ri(h));else if(k==="constructor"){let v=h.childForFieldName("constructor")??h.childForFieldName("type")??h.childForFieldName("name");for(let T=0;!v&&T=0;k--)g.push(y[k])}return{idents:[...o].slice(0,Hk).sort(),calls:Na(a,r),importedNames:[...p].slice(0,Gk).sort($),terms:[...d].sort($),literals:f.result()??[]}}function fE(e,t){let n=(r,o)=>{for(let s of r.namedChildren)if(s.namedChildren.length===0){if(s.text===t)return s.startIndex}else if(o<3&&!uE.test(s.type)){let a=n(s,o+1);if(a!==void 0)return a}};return n(e,0)}function Qn(e){let t=e.endPosition;return t.column===0&&t.row>e.startPosition.row?t.row:t.row+1}function mE(e){let t=[],n=r=>{if(/^(shorthand_property_identifier_pattern|identifier)$/.test(r.type)){t.includes(r.text)||t.push(r.text);return}if(r.type==="pair_pattern"){let o=r.childForFieldName("value");o&&n(o);return}for(let o of r.namedChildren)n(o)};for(let r of e.namedChildren)n(r);return t}function $d(e,t,n,r={}){let o=va(t,n);if(!o||!Le(o))return;let s=Id[o];if(!s)return;let a=Ss(o);if(!a)return;let l=Id[Ar(t)??o]?.lang??s.lang,c=null;try{if(c=a.parse(n),!c)return;let d=r.maxSymbols??qk,u=[],f=c.rootNode,m=(e.split("/").pop()??"").replace(/\.[^.]+$/,""),p=new Map,g=U=>U.parentPath??U.parent??"",h=(U,B)=>{let G=g(B),ee=p.get(G);ee||p.set(G,ee=new Set),ee.add(U)},_=U=>{u.length{let ee=s.relationsFrom?.[G];if(ee)for(let ce of ee(U,{self:B})){if(ce.from===ce.to)continue;let ke=`${ce.kind} ${ce.from} ${ce.to}`;x.has(ke)||b.length>=Vk||(x.add(ke),b.push(ce))}},v=(U,B,G,ee)=>{if(ee.inFunctionBody||s.privateMember?.(U)===!0)return!1;if(s.publicMember?.(U)===!0)return!0;if(!ee.sectionPublic)return!1;if(ee.forcePublic||ee.exported)return!0;let ce=fE(U,G);return s.exported(B,G,ce===void 0?B:n.slice(U.startIndex,ce))},T=U=>s.docFrom?.(U)??(s.docstring?fg(U):void 0)??Zn(U),F=(U,B)=>{let G=B.sectionPublic,ee=s.bareMembers?.[U.type];for(let ce of U.namedChildren){if(s.sectionVisibility){let qe=s.sectionVisibility(ce);if(qe!==void 0){G=qe;continue}}let ke=G===B.sectionPublic?B:{...B,sectionPublic:G},rt=s.inlineVisibility?.(ce);if(rt)for(let qe of rt.nodes)R(qe,ee,{...ke,sectionPublic:rt.public});else R(ce,ee,ke)}},R=(U,B,G)=>{if(B&&U.namedChildren.length===0&&ks.test(U.type)){_({name:U.text,kind:B,file:e,line:U.startPosition.row+1,endLine:Qn(U),...G.parent?{parent:G.parent}:{},exported:G.forcePublic||G.exported,lang:l});return}let ee=s.extraMembers?.(U,{ownerKind:G.ownerKind,inFunctionBody:G.inFunctionBody,publicNames:y});for(let ce of ee??[]){let ke=ce.node??U,rt=Yn(ke,n),qe=s.docFrom?.(ke)??Zn(ke);_({name:ce.name,kind:ce.kind,file:e,line:ke.startPosition.row+1,endLine:Qn(ke),...G.parent?{parent:G.parent}:{},...G.parentPath&&G.parentPath!==G.parent?{parentPath:G.parentPath}:{},signature:rt,...qe?{doc:qe}:{},exported:v(ke,rt,ce.name,G),lang:l})}E(U,G)},C=(U,B,G,ee,ce)=>{let ke=Ad.has(B);return{parent:U,parentPath:G?`${G}/${U}`:U,ownerKind:B,exported:ce,forcePublic:Cg.has(B),inFunctionBody:ee.inFunctionBody||ke,funcDepth:ee.funcDepth+(ke?1:0),sectionPublic:!0}},A=(U,B)=>{let G=s.bodyFrom?.[U.type]?.(U);if(G)return A(G,B);let ee=!1;for(let ce of U.namedChildren)s.containers.has(ce.type)&&(ee=!0,F(ce,B));!ee&&s.containers.has(U.type)&&F(U,B)},S=(U,B,G,ee,ce)=>{k(U,B,U.type==="class"?"class_declaration":U.type),A(U,C(B,G,ee.parentPath,ee,ce))},w=0,E=(U,B)=>{if(!(w>=Xk)){w++;try{P(U,B)}finally{w--}}},P=(U,B)=>{if(B.funcDepth>Kk)return;let G=U.type,ee=s.exportMarkers?.has(G)===!0,ce=B.exported||ee;if(G==="export_statement"&&!U.childForFieldName("source")){for(let _e of U.namedChildren)if(_e.type==="identifier")h(_e.text,B);else if(_e.type==="export_clause")for(let me of _e.namedChildren){let he=me.childForFieldName("name")??me.namedChildren[0];he?.text&&h(he.text,B)}}if(G==="export_statement"&&m&&U.children.some(_e=>_e.type==="default"))for(let _e of U.namedChildren){let me=Yk.has(_e.type),he=Qk.has(_e.type);if((me||he)&&!_e.childForFieldName("name")){let Z=Zn(U),K=he?"class":"function";_({name:m,kind:K,file:e,line:U.startPosition.row+1,endLine:Qn(U),signature:Yn(U,n),...Z?{doc:Z}:{},exported:!0,lang:l}),S(_e,m,K,B,!0);return}}if(s.assignments&&G==="expression_statement"){let _e=U.namedChildren[0];if(_e?.type==="assignment_expression"){let me=_e.childForFieldName("left"),he=_e.childForFieldName("right");if(me?.type==="member_expression"&&me.text==="module.exports"&&he){if(he.type==="object"){for(let K of he.namedChildren)if(K.type==="shorthand_property_identifier")h(K.text,B);else if(K.type==="pair"){let J=K.childForFieldName("key"),X=K.childForFieldName("value");J?.type==="property_identifier"&&h(J.text,B),X?.type==="identifier"&&h(X.text,B)}return}if(he.type==="identifier"){h(he.text,B);return}}let Z=he&&Fa.has(he.type);if(me&&he&&Z){let K,J=!1;if(me.type==="member_expression"&&me.text==="module.exports")K=he.childForFieldName("name")?.text??(m||void 0),J=!0;else if(me.type==="member_expression"){let X=me.childForFieldName("property");if(X?.type==="property_identifier"){K=X.text;let V=me.text.slice(0,me.text.length-X.text.length-1);J=V==="exports"||V==="module.exports"}}else me.type==="identifier"&&(K=me.text);if(K){let X=Zn(U),V=he.type==="class"?"class":"function",te=!B.inFunctionBody&&(ce||J);_({name:K,kind:V,file:e,line:_e.startPosition.row+1,endLine:Qn(_e),...B.parent?{parent:B.parent}:{},signature:Yn(_e,n),...X?{doc:X}:{},exported:te,lang:l}),S(he,K,V,B,te);return}}else if(me?.type==="member_expression"&&he){let K=me.childForFieldName("property");if(K?.type==="property_identifier"){let J=me.text.slice(0,me.text.length-K.text.length-1);if(J==="exports"||J==="module.exports"){he.type==="identifier"&&h(he.text,B),(he.type!=="identifier"||he.text!==K.text)&&_({name:K.text,kind:"const",file:e,line:_e.startPosition.row+1,endLine:Qn(_e),...B.parent?{parent:B.parent}:{},signature:Yn(_e,n),exported:!0,lang:l});return}}}}}if(s.assignments&&G==="assignment_statement"){let _e=U.children.find(J=>J.type==="variable_list"),me=U.children.find(J=>J.type==="expression_list"),he=_e?.namedChildren??[],Z=me?.namedChildren??[],K=Math.min(he.length,Z.length);for(let J=0;JK.type==="object_pattern"||K.type==="array_pattern");if(he&&!B.inFunctionBody){let K=Yn(U,n),J=T(U);for(let X of mE(he))_({name:X,kind:qe,file:e,line:U.startPosition.row+1,endLine:Qn(U),...B.parent?{parent:B.parent}:{},signature:K,...J?{doc:J}:{},exported:v(U,K,X,{...B,exported:ce}),lang:l});return}let Z=Ad.has(qe)||Zk.has(qe)||s.nestedDefs?.has(G)===!0||Fa.has(U.childForFieldName("value")?.type??"");if(me&&(!B.inFunctionBody||Z)){let K=Yn(U,n),J=T(U),X=ke??B.parent,V=ke??B.parentPath,te=s.namesFrom?.[G]?.(U);for(let de of te&&te.length>1?te:[me])_({name:de,kind:qe,file:e,line:U.startPosition.row+1,endLine:Qn(U),...X?{parent:X}:{},...V&&V!==X?{parentPath:V}:{},signature:K,...J?{doc:J}:{},exported:v(U,K,de,{...B,exported:ce}),lang:l});k(U,me),A(U,C(me,qe,V,B,ce));return}}if(k(U,ke??B.parent),s.containers.has(G)){let _e=B.forcePublic||s.publicMembersIn?.[G]?.(U)===!0,me=Fa.has(G);F(U,{...B,exported:ce,forcePublic:_e,inFunctionBody:B.inFunctionBody||me,funcDepth:B.funcDepth+(me?1:0),...ke?{parent:ke,parentPath:ke,ownerKind:"type"}:{},...s.sectionScopes?.has(G)?{sectionPublic:!0}:{}})}};if(F(f,{exported:!1,forcePublic:!1,inFunctionBody:!1,funcDepth:0,sectionPublic:!0}),p.size)for(let U of u)!U.exported&&p.get(g(U))?.has(U.name)&&(U.exported=!0);if(y){for(let G of u)G.parent===void 0&&(G.exported=y.has(G.name));let U=new Set(u.filter(G=>G.parent===void 0&&G.kind!=="reexport").map(G=>G.name)),B=0;for(let G of u)(G.parent!==void 0||G.kind!=="reexport"||!U.has(G.name))&&(u[B++]=G);u.length=B}let{idents:N,calls:L,importedNames:H,terms:Y,literals:oe}=dE(f,s,new Set(u.map(U=>U.name)),r.maxCalls??Ai),ge=r.imports!==!1,Se=ge?pi(t,n):[],Ce=ge?ua(t,n):void 0;return b.sort((U,B)=>$(U.from,B.from)||$(U.kind,B.kind)||$(U.to,B.to)),{symbols:u,refs:Se,pkg:Ce,idents:N,calls:L,importedNames:H,importAliases:Lg(f,s.lang),relations:b,terms:Y,literals:oe,...u.length>=d?{truncated:!0}:{}}}catch(d){r.onFailure?.(d);return}finally{c?.delete()}}var Hk,Ai,Gk,qk,Vk,jg,Jk,Kk,Xk,Zk,Yk,Qk,eE,tE,nE,rE,sE,iE,oE,Bg,Ug,Oa,zg,Hg,Wg,uE,Fd=z(()=>{"use strict";I();ya();le();pt();Aa();Ig();Og();Ed();Dg();ai();ft();et();Hk=512,Ai=8192,Gk=256,qk=2e3,Vk=256,jg=512,Jk=80,Kk=2,Xk=256,Zk=new Set(["class","struct","enum","interface","trait","type","record","union"]),Yk=new Set(["function","function_expression","function_declaration","generator_function","generator_function_declaration","arrow_function"]),Qk=new Set(["class","class_declaration","abstract_class_declaration"]),eE=/identifier|constant|(^|_)name$/,tE=/^[A-Za-z_]\w{4,}$/,nE=/(^|_)string(_literal)?$/,rE=/(^|_)(integer|float|number|decimal|numeric)(_literal)?$/,sE=/(^|_)(regex|regular_expression)(_pattern|_literal)?$/,iE=/(^|_)(fragment|content|escape_sequence|character|start|end)$/,oE=/(^|_)(fragment|content)$/,Bg=1,Ug=2,Oa=4,zg=8,Hg=16,Wg=new Map;uE=/annotation|attribute|decorator|modifier|parameter|argument|body|block|string|comment|_list$/});function Nd(e,t){let n=t.exec(e);return n?(n[1]??n[2]??n[3]??"").trim().toLowerCase():void 0}function Pd(e){return e.replace(/[^\r\n]/g," ")}function Gg(e,t,n){let r="",o=0;for(let[a,l]of t){let c=e.slice(o,a),d=e.slice(a,l);r+=n?Pd(c)+d:c+Pd(d),o=l}let s=e.slice(o);return r+(n?Pd(s):s)}function SE(e,t){let n=[],r=1,o=0,s=a=>{for(let l=e.indexOf(` `,o);l!==-1&&l`,"gi");m.lastIndex=f;let p=m.exec(t),g=p?p.index:t.length;if(vd.lastIndex=p?p.index+p[0].length:t.length,r.push([f,g]),d!=="script")continue;let h=Rd(u,Jk);if(h!==void 0&&!Zk.test(h))continue;let _=Rd(u,Vk)??"js";if(_==="ts"||_==="typescript")s=!0;else if(_==="tsx")s=a=!0;else if(_==="jsx")a=!0;else if(_!=="js"&&_!=="javascript")continue;n.push([f,g]);let y=Rd(u,Kk)==="module"||Xk.test(u);(e===".astro"||e===".svelte"&&!y)&&o.push([f,g])}return{script:Tg(t,n,!0),ext:s?a?".tsx":".ts":a?".jsx":".js",markup:Tg(t,r,!1),notExported:eE(t,o)}}var qk,vd,Cd,Vk,Jk,Kk,Xk,Zk,Yk,Qk,Fg=H(()=>{"use strict";I();qk=new Set([".vue",".svelte",".astro"]),vd=/|$)|<(script|style)(?=[\s>/])((?:[^>"']|"[^"]*"|'[^']*')*)>/gi,Cd=e=>new RegExp(`(?:^|\\s)${e}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s"'>]+))`,"i"),Vk=Cd("lang"),Jk=Cd("type"),Kk=Cd("context"),Xk=/(?:^|\s)module(?=[\s/=]|$)/i,Zk=/^(?:module|(?:text|application)\/(?:javascript|ecmascript|typescript|babel)|text\/jsx|)$/i,Yk=/^\s*---[ \t]*\r?\n/,Qk=/^---[ \t]*\r?$/m});function Pg(e,t){if(Id.has(e)){if(aE(e,t))return"minified";if(cE(e,t))return"bundle"}}function aE(e,t){if(!Id.has(e))return!1;let n=0;for(let m=0;m{o+=a,a>=Ad&&l*100<=a*tE&&c*100>=a*nE&&(s+=a),a=l=c=0,d=!1};for(let m=0;m32?(d&&u&&a>0&&l++,d=!1,a++,(p===rE||p===sE||p===iE||p===oE)&&c++):(d||(d=!0,u=!0),t.charCodeAt(m)>32&&(u=!1))}return f(),s>0&&s*2>=o}function cE(e,t){if(!Id.has(e))return!1;let n;if(t.includes("_require__")&&lE.test(n=Sr(t)))return!0;let r=[];Og.lastIndex=0;for(let s;s=Og.exec(t);)r.push(s);if(new Set(r.map(s=>s[1])).size=Ng}var Id,Ad,tE,nE,rE,sE,iE,oE,Og,lE,Ng,Lg=H(()=>{"use strict";I();ut();Id=new Set([".js",".mjs",".cjs"]);Ad=300,tE=6,nE=1,rE=59,sE=40,iE=123,oE=125;Og=/^\/\/ ((?:[\w@$.+~-]+\/)*[\w@$.+~-]+\.(?:[cm]?[jt]sx?|json|vue|svelte|astro))\r?$/gm,lE=/\bfunction __(?:webpack|nccwpck)_require__\s*\(/,Ng=3});function jg(e,t){let n=t;for(;n>0&&Dg.test(e[n-1]);)n--;if(n>0&&e[n-1]==="*")for(n--;n>0&&Dg.test(e[n-1]);)n--;let r=n;for(;r>0&&mE.test(e[r-1]);)r--;return r`${l.name} ${l.line}`)),s=e.split(` -`),a=/(?:\bnew\s+)?(?:([A-Za-z_$][\w$]*)\s*\.\s*)?([A-Za-z_$][\w$]*)\s*\(/g;for(let l=0;l{if(!(t.size>=Td))for(let s of fn(o)){if(t.size>=Td)return;t.add(s)}},r=!1;for(let o of e.split(` -`)){if(t.size>=Td)break;let s=o;if(r){let c=s.indexOf("*/");if(n(Lt(c===-1?s:s.slice(0,c))),c===-1)continue;r=!1,s=s.slice(c+2)}let a=s.indexOf("/*");if(a!==-1){let c=s.indexOf("*/",a+2);n(Lt(s.slice(a,c===-1?void 0:c))),c===-1?(r=!0,s=s.slice(0,a)):s=s.slice(0,a)+s.slice(c+2)}let l=/(^|\s)(\/\/|#|--)(.*)$/.exec(s);l&&(n(Lt(l[2]+l[3])),s=s.slice(0,l.index));for(let c of s.matchAll(/(['"`])((?:\\.|(?!\1)[^\\])*)\1/g)){let d=c[2];d.length&&d.length<=pE&&n(d)}}return[...t].sort()}function hE(e){let t=new Kn,n=!1,r=0;for(let o of e.split(` -`)){if(r++,t.full)break;let s=o;if(n){let c=s.indexOf("*/");if(c===-1)continue;n=!1,s=s.slice(c+2)}let a=s.indexOf("/*");if(a!==-1){let c=s.indexOf("*/",a+2);c===-1?(n=!0,s=s.slice(0,a)):s=s.slice(0,a)+s.slice(c+2)}let l=/(^|\s)(\/\/|#|--)(.*)$/.exec(s);l&&(s=s.slice(0,l.index));for(let c of s.matchAll(/(['"`])((?:\\.|(?!\1)[^\\])*)\1/g))t.add("string",c[2],r);for(let c of s.replace(/(['"`])(?:\\.|(?!\1)[^\\])*\1/g," ").matchAll(/(?`${s.name} ${s.line}`)),o=[...e];for(let s of t)r.has(`${s.name} ${s.line}`)||o.push(s);return $a(o,n)}function Mi(e,t,n,r={}){let o=Pg(t,n);if(o)return{symbols:[],generated:o,summary:Fc(t,n),refs:fi(t,n)};let s=$g(t,n),a=s?s.script:n,l=s?s.ext:t,c=!1,d=kd(e,l,a,{maxCalls:r.maxCallsPerFile,imports:!1,onFailure:()=>c=!0}),u=d?d.symbols:Hc(e,l,a),f=u.slice(0,dE),m=s?f.map(w=>({...w,lang:tn(t),exported:w.exported&&!s.notExported.some(([S,k])=>w.line>=S&&w.line<=k)})):f,p=new Set(m.map(w=>w.name)),g=sa(e,a,m).filter(w=>!p.has(w.name)),h=fi(l,a),_=new Set(h.filter(w=>!w.soft).map(w=>w.spec)),y=(d&&!s?d.literals.length?d.literals:void 0:hE(n))?.filter(w=>!(w.kind==="string"&&_.has(w.value))),b=d?d.calls:Wg(a,m,r.maxCallsPerFile);return s&&(b=yE(b,Wg(s.markup,[],r.maxCallsPerFile),r.maxCallsPerFile)),{symbols:[...m,...g],...d?.truncated||u.length>m.length||g.length>=ra?{truncated:!0}:{},...c?{astFallback:!0}:{},summary:Fc(t,n),refs:h,pkg:la(t,n),idents:d?.idents,calls:b,importedNames:d?.importedNames,importAliases:d?.importAliases.length?d.importAliases:void 0,relations:d?.relations?.length?d.relations:void 0,terms:d&&!s?d.terms:gE(n),literals:y?.length?y:void 0}}var dE,uE,fE,Dg,mE,Td,pE,Fa=H(()=>{"use strict";I();pa();Er();Ed();et();ut();Fg();Lg();ii();Qe();dE=2e3,uE=new Set(["if","else","elif","for","while","do","switch","case","match","when","unless","until","catch","except","return","throw","raise","yield","await","typeof","instanceof","sizeof","delete","void","in","of","not","and","or","assert","defer","select","with","loop"]),fE=new Set(["function","def","func","fun","fn","class","sub","macro","proc"]),Dg=/\s/,mE=/\w/;Td=512,pE=80});function Ug(e){let t=new Kn,n=0;for(let r of e.split(` -`)){if(n++,t.full)break;let o=SE(r);for(let c of o.matchAll(Bg))t.add("string",c[1]??c[2].replace(/''/g,"'"),n);let a=xE.exec(o)?.[1].trim(),l=a&&!/^[[{|>&*-]/.test(a)&&!_E.test(a)?a:void 0;if(l!==void 0&&!wE.test(l)){t.add("string",l,n);continue}for(let c of o.replace(Bg," ").matchAll(bE))t.add("number",c[0].replace(/_/g,""),n)}return t.result()}function SE(e){let t;for(let n=0;n{"use strict";I();pa();Bg=/"((?:\\.|[^"\\])*)"|'((?:[^']|'')*)'/g,_E=/"(?:\\.|[^"\\])*"|'(?:[^']|'')*'/,bE=/(?Fd(e,m)),s=t.exclude?.map(m=>Fd(e,m)),a=At(r),l=At(o),c=At(s);if(!a&&!l&&!c)return;let d=Vc(r),u=Vc(o),f=_p(s);return({rel:m,directory:p})=>p?(!d||d(m))&&(!u||u(m))&&!f?.(m):(!a||a(m))&&(!l||l(m))&&!c?.(m)}function Gg(e,t,n){let r=l=>At(l.map(c=>Fd(e,c)))?.(n)??!0,o=t.scope===void 0?"":er(e,t.scope),s={};o&&!r([o,`${o}/**`])&&(s.scope=t.scope),t.include?.length&&!r(t.include)&&(s.include=t.include);let a=t.exclude?.find(l=>r([l]));return a!==void 0&&(s.exclude=a),s.scope!==void 0||s.include||s.exclude!==void 0?s:void 0}function Ir(e,t){let n=Od(e,t);return{maxFileBytes:t.maxBytes,maxFiles:t.maxFiles,gitignore:t.gitignore,ignoreDirs:t.ignoreDirs,...n?{filter:n}:{},...t.onSkip?{onSkip:t.onSkip}:{}}}function*Na(e,t){let n=Ir(e,t),{files:r,capped:o,excluded:s}=t.precomputedWalk??Ke(e,n),a=vE(e,t.out),l=t.precomputedWalk?n.filter:void 0;for(let c of r){if(a&&a(c)){t.onSkip?.({rel:c.rel,reason:"index-output",directory:!1,size:c.size});continue}if(l&&!l({rel:c.rel,abs:c.abs,directory:!1})){t.onSkip?.({rel:c.rel,reason:"filter",directory:!1,size:c.size});continue}yield{f:c,kind:Ct(c.rel,c.ext),lang:tn(c.ext)}}return{capped:o,excluded:s}}function vE(e,t){if(!t)return;let n=ue(t),r=De(n,ue(e));if(r==="")return o=>!o.rel.includes("/")&&EE(o.rel);if(!(r!==".."&&!r.startsWith(`..${"/"}`)&&!Pe(r)))return o=>{let s=De(n,o.abs);return s===""||s!==".."&&!s.startsWith(`..${"/"}`)&&!Pe(s)}}function Nd(e,t={}){let n=[],r=Na(e,t);for(let o=r.next();!o.done;o=r.next())o.value.kind==="code"&&n.push({f:o.value.f,lang:o.value.lang});return n}function xs(e,t={}){let n=[],r=Na(e,t),o=r.next();for(;!o.done;o=r.next())n.push(o.value.f);return{files:n,capped:o.value.capped}}function Ci(e,t={}){let n={},r=0,o=Na(e,t),s=o.next();for(;!s.done;s=o.next())n[s.value.lang]=(n[s.value.lang]??0)+1,r++;return{root:e,commit:Yt(e),fileCount:r,languages:n,capped:s.value.capped,excluded:s.value.excluded}}function kt(e,t={}){let n=[],r={},o=new $d,s=new Map,a=t.cache,l=a!==void 0,c=a===void 0,d=Na(e,t),u=d.next();for(;!u.done;u=d.next()){let{f,kind:m,lang:p}=u.value;r[p]=(r[p]??0)+1,s.set(f.rel,f.mtimeMs);let g=t.cache?.get(f.rel);if(!t.fullHash&&g&&g.size!==void 0&&g.mtimeMs!==void 0&&g.size===f.size&&g.mtimeMs===f.mtimeMs){n.push(g.record),m==="doc"&&o.defer(f.rel,f.abs);continue}let h=t.extracted?.get(f.rel),_=h&&h.size===f.size&&h.mtimeMs===f.mtimeMs&&(h.record||h.hash===g?.hash)?h:void 0,y=_?void 0:ie(f.abs),b=_?_.hash:Re(y);if(g&&g.hash===b){n.push(g.record.size===f.size?g.record:{...g.record,size:f.size}),m==="doc"&&y&&o.set(f.rel,y),(g.size!==f.size||g.mtimeMs!==f.mtimeMs)&&(c=!0);continue}if(l=!1,c=!0,_?.record){n.push(_.record);continue}let w=m==="code"?Oa(f.rel,f.ext,f.size,y,b,p,t):{rel:f.rel,ext:f.ext,size:f.size,lines:zg(y),hash:b,kind:m,lang:p,headings:[],symbols:[],refs:[]};if(m!=="code")if(y&&m==="doc"&&(Gc.has(f.ext)||f.ext===".rst")){let S=f.ext===".rst"?Yc(f.rel,y):Jc(y);w.title=S.title??je(f.rel),w.summary=S.summary,w.headings=S.headings,w.refs=S.refs}else y&&m==="doc"?w.title=je(f.rel):y&&m==="config"?(w.title=je(f.rel),w.literals=Ug(y)):w.title=je(f.rel);m==="doc"&&y&&o.set(f.rel,y),n.push(w)}return n.sort(br(f=>f.rel)),a!==void 0&&n.length!==a.size&&(l=!1,c=!0),{root:e,commit:Yt(e),files:n,languages:r,docText:o,mtimes:s,capped:u.value.capped,excluded:u.value.excluded,contentUnchanged:l,cacheDirty:c}}var $d,kE,EE,Bt=H(()=>{"use strict";I();pe();Xe();en();bt();Jn();Er();gi();ce();Kc();Qc();Fa();Hg();$d=class extends Map{pending=new Map;defer(t,n){this.pending.set(t,n)}load(t){let n=this.pending.get(t);if(n===void 0)return;this.pending.delete(t);let r=ie(n);r&&super.set(t,r)}loadAll(){for(let t of[...this.pending.keys()])this.load(t)}get(t){return this.load(t),super.get(t)}has(t){return this.load(t),super.has(t)}set(t,n){return this.pending?.delete(t),super.set(t,n)}delete(t){let n=this.pending.delete(t);return super.delete(t)||n}clear(){this.pending.clear(),super.clear()}get size(){return this.loadAll(),super.size}forEach(t,n){this.loadAll(),super.forEach(t,n)}entries(){return this.loadAll(),super.entries()}keys(){return this.loadAll(),super.keys()}values(){return this.loadAll(),super.values()}[Symbol.iterator](){return this.entries()}};kE=["graph.json","symbols.json","cache.json","freshness.json","embeddings.bin"],EE=e=>kE.some(t=>e===t||e.startsWith(`${t}.tmp-`))});function Ld(e,t,n){return t.every(r=>e[r]===void 0||n(e[r]))}function $E(e,t){return on(e)&&Ye(e.name)&&Ye(e.kind)&&e.file===t&&Ai(e.line)&&(e.endLine===void 0||Ai(e.endLine)&&e.endLine>=e.line)&&typeof e.exported=="boolean"&&Ye(e.lang)&&Ld(e,AE,Ye)}function FE(e){return on(e)&&(e.kind==="import"||e.kind==="doc-link")&&Ye(e.spec)&&(e.soft===void 0||e.soft===!0)}function OE(e){return on(e)&&Ye(e.name)&&Ai(e.line)&&(e.receiver===void 0||Ye(e.receiver))}function NE(e){return on(e)&&Ye(e.local)&&Ye(e.name)&&(e.from===void 0||Ye(e.from))}function PE(e){return on(e)&&(e.kind==="extends"||e.kind==="implements")&&Ye(e.from)&&Ye(e.to)&&Ai(e.line)}function LE(e){return on(e)&&(e.kind==="string"||e.kind==="number"||e.kind==="regex")&&Ye(e.value)&&Ai(e.line)}function La(e,t){return e===void 0||Array.isArray(e)&&e.every(t)}function DE(e,t){return on(e)&&e.rel===t&&Ye(e.ext)&&Da(e.size)&&Da(e.lines)&&Jg(e.hash)&&Ye(e.kind)&&CE.has(e.kind)&&Ye(e.lang)&&Ld(e,IE,Ye)&&Ld(e,TE,Vg)&&Vg(e.headings)&&Array.isArray(e.symbols)&&e.symbols.every(n=>$E(n,t))&&Array.isArray(e.refs)&&e.refs.every(FE)&&La(e.calls,OE)&&La(e.importAliases,NE)&&La(e.relations,PE)&&La(e.literals,LE)&&(e.truncated===void 0||e.truncated===!0)&&(e.astFallback===void 0||e.astFallback===!0)&&(e.generated===void 0||e.generated==="minified"||e.generated==="bundle")}function jE(e,t){return on(e)&&Jg(e.hash)&&DE(e.record,t)&&e.hash===e.record.hash&&(e.size===void 0||Da(e.size)&&e.size===e.record.size)&&(e.mtimeMs===void 0||typeof e.mtimeMs=="number"&&Number.isFinite(e.mtimeMs))}function Kg(e){if(!on(e)||e.schemaVersion!==5||e.extractorVersion!==16||!on(e.files))return;let t=new Map;for(let[n,r]of Object.entries(e.files)){if(n.split("/").some(o=>o===""||o==="."||o==="..")||!jE(r,n))return;t.set(n,r)}return t}function Dd(e,t,n){let r=Wt(e.filter(o=>o.kind==="code").map(o=>o.ext)).filter(n);return t===void 0?{grammars:r}:{grammars:r,maxCallsPerFile:t}}function jd(e,t){return e!==void 0&&e.maxCallsPerFile===t.maxCallsPerFile&&e.grammars.join(",")===t.grammars.join(",")}function ja(e){if(!on(e)||!Array.isArray(e.grammars)||!e.grammars.every(Ye))return;let t=e.maxCallsPerFile;if(t!==void 0&&!(typeof t=="number"&&Number.isFinite(t)&&t>0))return;let n=[...e.grammars];return t===void 0?{grammars:n}:{grammars:n,maxCallsPerFile:t}}function Ii(e,t,n){let r=Ti(t,n),o=new Map;for(let[s,a]of e)r(a.record.kind,a.record.ext)&&o.set(s,a);return o}function Ti(e,t){let n=new Set(e?.grammars),r=e!==void 0&&e.maxCallsPerFile===t.maxCallsPerFile;return(o,s)=>o!=="code"?!0:r?Wt([s]).every(a=>n.has(a)===t.ast(a)):!1}var on,Ye,Da,Ai,Vg,Jg,CE,AE,IE,TE,$i=H(()=>{"use strict";I();ht();ft();on=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Ye=e=>typeof e=="string",Da=e=>typeof e=="number"&&Number.isSafeInteger(e)&&e>=0,Ai=e=>Da(e)&&e>0,Vg=e=>Array.isArray(e)&&e.every(Ye),Jg=e=>Ye(e)&&/^[a-f0-9]{40}$/.test(e),CE=new Set(["code","doc","config","asset","other"]),AE=["parent","parentPath","signature","doc"],IE=["title","summary","pkg"],TE=["idents","importedNames","terms"]});var Ss,Wa,Wd=H(()=>{I();Ss=class{constructor(){throw new Error("worker_threads is not available in the browser build (the engine runs single-threaded here)")}},Wa=class{constructor(){throw new Error("worker_threads is not available in the browser build (the engine runs single-threaded here)")}}});function WE(e=ya(import.meta.url)){try{if(je(e)==="engine.mjs")return vr(e).href;let t=j(Ce(e),"engine.mjs");return te(t)?vr(t).href:void 0}catch{return}}function Xg(e){let t=F.env.CODEINDEX_WORKERS,n=e??(t!==void 0&&t!==""?Number(t):void 0);if(n!==void 0)return Number.isFinite(n)&&n>0?Math.floor(n):0;let r=1;try{r=typeof ha=="function"?ha():Ep().length}catch{r=1}return Math.max(0,Math.min(r-1,8))}async function HE(e,t){await sn(e.grammarKeys);let n=e.grammarKeys.filter(o=>Le(o)),r=[];for(let o of e.jobs){let s,a;try{let u=Ae(o.abs);s=u.size,a=u.mtimeMs}catch{continue}let l=ie(o.abs),c=Re(l);if(c===o.cachedHash){r.push({rel:o.rel,size:s,mtimeMs:a,hash:c});continue}let d=Oa(o.rel,o.ext,s,l,c,tn(o.ext),{maxCallsPerFile:e.maxCallsPerFile});r.push({rel:o.rel,size:s,mtimeMs:a,hash:c,record:d})}t({ready:n,records:r})}async function Zg(e,t,n,r={}){if(n<2||e.length===0)return;let o=r.engineUrl??WE();if(!o)return;let s=t.filter(m=>Le(m)).sort(),a=Math.min(n,e.length),l=`import { runExtractWorker } from ${JSON.stringify(o)}; +`,l+1))r++;o=a};for(let[a,l]of t){s(a);let c=r;s(l),n.push([c,r])}return n}function qg(e,t){if(!pE.has(e))return;let n=[],r=[],o=[],s=!1,a=!1,l=0;if(e===".astro"){s=!0;let c=wE.exec(t);if(c){let d=c[0].length,u=xE.exec(t.slice(d)),f=u?d+u.index:t.length;n.push([d,f]),r.push([d,f]),o.push([d,f]),l=u?f+u[0].length:f}}Od.lastIndex=l;for(let c;c=Od.exec(t);){let d=c[1]?.toLowerCase();if(!d){r.push([c.index,c.index+c[0].length]);continue}let u=c[2],f=c.index+c[0].length;if(u.trimEnd().endsWith("/"))continue;let m=new RegExp(``,"gi");m.lastIndex=f;let p=m.exec(t),g=p?p.index:t.length;if(Od.lastIndex=p?p.index+p[0].length:t.length,r.push([f,g]),d!=="script")continue;let h=Nd(u,hE);if(h!==void 0&&!bE.test(h))continue;let _=Nd(u,gE)??"js";if(_==="ts"||_==="typescript")s=!0;else if(_==="tsx")s=a=!0;else if(_==="jsx")a=!0;else if(_!=="js"&&_!=="javascript")continue;n.push([f,g]);let y=Nd(u,yE)==="module"||_E.test(u);(e===".astro"||e===".svelte"&&!y)&&o.push([f,g])}return{script:Gg(t,n,!0),ext:s?a?".tsx":".ts":a?".jsx":".js",markup:Gg(t,r,!1),notExported:SE(t,o)}}var pE,Od,Ld,gE,hE,yE,_E,bE,wE,xE,Vg=z(()=>{"use strict";I();pE=new Set([".vue",".svelte",".astro"]),Od=/|$)|<(script|style)(?=[\s>/])((?:[^>"']|"[^"]*"|'[^']*')*)>/gi,Ld=e=>new RegExp(`(?:^|\\s)${e}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s"'>]+))`,"i"),gE=Ld("lang"),hE=Ld("type"),yE=Ld("context"),_E=/(?:^|\s)module(?=[\s/=]|$)/i,bE=/^(?:module|(?:text|application)\/(?:javascript|ecmascript|typescript|babel)|text\/jsx|)$/i,wE=/^\s*---[ \t]*\r?\n/,xE=/^---[ \t]*\r?$/m});function Xg(e,t){if(jd.has(e)){if(AE(e,t))return"minified";if(TE(e,t))return"bundle"}}function AE(e,t){if(!jd.has(e))return!1;let n=0;for(let m=0;m{o+=a,a>=Dd&&l*100<=a*kE&&c*100>=a*EE&&(s+=a),a=l=c=0,d=!1};for(let m=0;m32?(d&&u&&a>0&&l++,d=!1,a++,(p===vE||p===RE||p===CE||p===ME)&&c++):(d||(d=!0,u=!0),t.charCodeAt(m)>32&&(u=!1))}return f(),s>0&&s*2>=o}function TE(e,t){if(!jd.has(e))return!1;let n;if(t.includes("_require__")&&IE.test(n=Er(t)))return!0;let r=[];Jg.lastIndex=0;for(let s;s=Jg.exec(t);)r.push(s);if(new Set(r.map(s=>s[1])).size=Kg}var jd,Dd,kE,EE,vE,RE,CE,ME,Jg,IE,Kg,Zg=z(()=>{"use strict";I();ft();jd=new Set([".js",".mjs",".cjs"]);Dd=300,kE=6,EE=1,vE=59,RE=40,CE=123,ME=125;Jg=/^\/\/ ((?:[\w@$.+~-]+\/)*[\w@$.+~-]+\.(?:[cm]?[jt]sx?|json|vue|svelte|astro))\r?$/gm,IE=/\bfunction __(?:webpack|nccwpck)_require__\s*\(/,Kg=3});function Qg(e,t){let n=t;for(;n>0&&Yg.test(e[n-1]);)n--;if(n>0&&e[n-1]==="*")for(n--;n>0&&Yg.test(e[n-1]);)n--;let r=n;for(;r>0&&NE.test(e[r-1]);)r--;return r`${l.name} ${l.line}`)),s=e.split(` +`),a=/(?:\bnew\s+)?(?:([A-Za-z_$][\w$]*)\s*\.\s*)?([A-Za-z_$][\w$]*)\s*\(/g;for(let l=0;l{if(!(t.size>=Wd))for(let s of mn(o)){if(t.size>=Wd)return;t.add(s)}},r=!1;for(let o of e.split(` +`)){if(t.size>=Wd)break;let s=o;if(r){let c=s.indexOf("*/");if(n(Dt(c===-1?s:s.slice(0,c))),c===-1)continue;r=!1,s=s.slice(c+2)}let a=s.indexOf("/*");if(a!==-1){let c=s.indexOf("*/",a+2);n(Dt(s.slice(a,c===-1?void 0:c))),c===-1?(r=!0,s=s.slice(0,a)):s=s.slice(0,a)+s.slice(c+2)}let l=/(^|\s)(\/\/|#|--)(.*)$/.exec(s);l&&(n(Dt(l[2]+l[3])),s=s.slice(0,l.index));for(let c of s.matchAll(/(['"`])((?:\\.|(?!\1)[^\\])*)\1/g)){let d=c[2];d.length&&d.length<=PE&&n(d)}}return[...t].sort()}function DE(e){let t=new Kn,n=!1,r=0;for(let o of e.split(` +`)){if(r++,t.full)break;let s=o;if(n){let c=s.indexOf("*/");if(c===-1)continue;n=!1,s=s.slice(c+2)}let a=s.indexOf("/*");if(a!==-1){let c=s.indexOf("*/",a+2);c===-1?(n=!0,s=s.slice(0,a)):s=s.slice(0,a)+s.slice(c+2)}let l=/(^|\s)(\/\/|#|--)(.*)$/.exec(s);l&&(s=s.slice(0,l.index));for(let c of s.matchAll(/(['"`])((?:\\.|(?!\1)[^\\])*)\1/g))t.add("string",c[2],r);for(let c of s.replace(/(['"`])(?:\\.|(?!\1)[^\\])*\1/g," ").matchAll(/(?`${a.name} ${a.line} ${a.receiver??""}`,o=new Set(e.map(r)),s=[...e];for(let a of t)o.has(r(a))||s.push(a);return Na(s,n)}function Ii(e,t,n,r={}){let o=Xg(t,n);if(o)return{symbols:[],generated:o,summary:Uc(t,n),refs:pi(t,n)};let s=qg(t,n),a=s?s.script:n,l=s?s.ext:t,c=!1,d=$d(e,l,a,{maxCalls:r.maxCallsPerFile,imports:!1,onFailure:()=>c=!0}),u=d?d.symbols:Yc(e,l,a),f=u.slice(0,$E),m=s?f.map(x=>({...x,lang:nn(t),exported:x.exported&&!s.notExported.some(([k,v])=>x.line>=k&&x.line<=v)})):f,p=new Set(m.map(x=>x.name)),g=aa(e,a,m).filter(x=>!p.has(x.name)),h=pi(l,a),_=new Set(h.filter(x=>!x.soft).map(x=>x.spec)),y=(d&&!s?d.literals.length?d.literals:void 0:DE(n))?.filter(x=>!(x.kind==="string"&&_.has(x.value))),b=d?d.calls:eh(a,m,r.maxCallsPerFile);return s&&(b=jE(b,eh(s.markup,[],r.maxCallsPerFile),r.maxCallsPerFile)),{symbols:[...m,...g],...d?.truncated||u.length>m.length||g.length>=oa?{truncated:!0}:{},...c?{astFallback:!0}:{},...b.length>=(r.maxCallsPerFile??Ai)?{callsCapped:!0}:{},summary:Uc(t,n),refs:h,pkg:ua(t,n),idents:d?.idents,calls:b,importedNames:d?.importedNames,importAliases:d?.importAliases.length?d.importAliases:void 0,relations:d?.relations?.length?d.relations:void 0,terms:d&&!s?d.terms:LE(n),literals:y?.length?y:void 0}}var $E,FE,OE,Yg,NE,Wd,PE,Pa=z(()=>{"use strict";I();ya();Rr();Fd();tt();ft();Vg();Zg();ai();et();$E=2e3,FE=new Set(["if","else","elif","for","while","do","switch","case","match","when","unless","until","catch","except","return","throw","raise","yield","await","typeof","instanceof","sizeof","delete","void","in","of","not","and","or","assert","defer","select","with","loop"]),OE=new Set(["function","def","func","fun","fn","class","sub","macro","proc"]),Yg=/\s/,NE=/\w/;Wd=512,PE=80});function nh(e){let t=new Kn,n=0;for(let r of e.split(` +`)){if(n++,t.full)break;let o=HE(r);for(let c of o.matchAll(th))t.add("string",c[1]??c[2].replace(/''/g,"'"),n);let a=zE.exec(o)?.[1].trim(),l=a&&!/^[[{|>&*-]/.test(a)&&!WE.test(a)?a:void 0;if(l!==void 0&&!UE.test(l)){t.add("string",l,n);continue}for(let c of o.replace(th," ").matchAll(BE))t.add("number",c[0].replace(/_/g,""),n)}return t.result()}function HE(e){let t;for(let n=0;n{"use strict";I();ya();th=/"((?:\\.|[^"\\])*)"|'((?:[^']|'')*)'/g,WE=/"(?:\\.|[^"\\])*"|'(?:[^']|'')*'/,BE=/(?Ud(e,m)),s=t.exclude?.map(m=>Ud(e,m)),a=It(r),l=It(o),c=It(s);if(!a&&!l&&!c)return;let d=nd(r),u=nd(o),f=$p(s);return({rel:m,directory:p})=>p?(!d||d(m))&&(!u||u(m))&&!f?.(m):(!a||a(m))&&(!l||l(m))&&!c?.(m)}function ih(e,t,n){let r=l=>It(l.map(c=>Ud(e,c)))?.(n)??!0,o=t.scope===void 0?"":er(e,t.scope),s={};o&&!r([o,`${o}/**`])&&(s.scope=t.scope),t.include?.length&&!r(t.include)&&(s.include=t.include);let a=t.exclude?.find(l=>r([l]));return a!==void 0&&(s.exclude=a),s.scope!==void 0||s.include||s.exclude!==void 0?s:void 0}function $r(e,t){let n=zd(e,t);return{maxFileBytes:t.maxBytes,maxFiles:t.maxFiles,gitignore:t.gitignore,ignoreDirs:t.ignoreDirs,...n?{filter:n}:{},...t.onSkip?{onSkip:t.onSkip}:{}}}function*Da(e,t){let n=$r(e,t),{files:r,capped:o,excluded:s,oversized:a}=t.precomputedWalk??Xe(e,n),l=VE(e,t.out),c=t.precomputedWalk?n.filter:void 0;for(let d of r){if(l&&l(d)){t.onSkip?.({rel:d.rel,reason:"index-output",directory:!1,size:d.size});continue}if(c&&!c({rel:d.rel,abs:d.abs,directory:!1})){t.onSkip?.({rel:d.rel,reason:"filter",directory:!1,size:d.size});continue}yield{f:d,kind:mt(d.rel,d.ext),lang:nn(d.ext)}}return{capped:o,excluded:s,oversized:a}}function VE(e,t){if(!t)return;let n=ae(t),r=De(n,ae(e));if(r==="")return a=>!a.rel.includes("/")&&qE(a.rel);if(r!==".."&&!r.startsWith(`..${"/"}`)&&!Ne(r))return;let o=De(ae(e),n);if(o===".."||o.startsWith(`..${"/"}`)||Ne(o))return;let s=o.split("/").join("/");return a=>a.rel===s||a.rel.startsWith(`${s}/`)}function Hd(e,t={}){let n=[],r=Da(e,t);for(let o=r.next();!o.done;o=r.next())o.value.kind==="code"&&n.push({f:o.value.f,lang:o.value.lang});return n}function Es(e,t={}){let n=[],r=Da(e,t),o=r.next();for(;!o.done;o=r.next())n.push(o.value.f);return{files:n,capped:o.value.capped}}function Ti(e,t={}){let n={},r=0,o=Da(e,t),s=o.next();for(;!s.done;s=o.next())n[s.value.lang]=(n[s.value.lang]??0)+1,r++;return{root:e,commit:Qt(e),fileCount:r,languages:n,capped:s.value.capped,excluded:s.value.excluded}}function vt(e,t={}){let n=[],r={},o=new Bd,s=new Map,a=t.cache,l=a!==void 0,c=a===void 0,d=Da(e,t),u=d.next();for(;!u.done;u=d.next()){let{f,kind:m,lang:p}=u.value;r[p]=(r[p]??0)+1,s.set(f.rel,f.mtimeMs);let g=t.cache?.get(f.rel);if(!t.fullHash&&g&&g.size!==void 0&&g.mtimeMs!==void 0&&g.size===f.size&&g.mtimeMs===f.mtimeMs){n.push(g.record),m==="doc"&&o.defer(f.rel,f.abs);continue}let h=t.extracted?.get(f.rel),_=h&&h.size===f.size&&h.mtimeMs===f.mtimeMs&&(h.record||h.hash===g?.hash)?h:void 0,y=_?void 0:se(f.abs),b=_?_.hash:Re(y);if(g&&g.hash===b){n.push(g.record.size===f.size?g.record:{...g.record,size:f.size}),m==="doc"&&y&&o.set(f.rel,y),(g.size!==f.size||g.mtimeMs!==f.mtimeMs)&&(c=!0);continue}if(l=!1,c=!0,_?.record){n.push(_.record);continue}let x=m==="code"?La(f.rel,f.ext,f.size,y,b,p,t):{rel:f.rel,ext:f.ext,size:f.size,lines:sh(y),hash:b,kind:m,lang:p,headings:[],symbols:[],refs:[]};if(m!=="code")if(y&&m==="doc"&&(ed.has(f.ext)||f.ext===".rst")){let k=f.ext===".rst"?ad(f.rel,y):rd(y);x.title=k.title??je(f.rel),x.summary=k.summary,x.headings=k.headings,x.refs=k.refs}else y&&m==="doc"?x.title=je(f.rel):y&&m==="config"?(x.title=je(f.rel),x.literals=nh(y)):x.title=je(f.rel);m==="doc"&&y&&o.set(f.rel,y),n.push(x)}return n.sort(xr(f=>f.rel)),a!==void 0&&n.length!==a.size&&(l=!1,c=!0),{root:e,commit:Qt(e),files:n,languages:r,docText:o,mtimes:s,capped:u.value.capped,excluded:u.value.excluded,...u.value.oversized?{oversized:u.value.oversized}:{},contentUnchanged:l,cacheDirty:c}}var Bd,GE,qE,Ut=z(()=>{"use strict";I();fe();Ze();tn();xt();Mn();Rr();yi();le();sd();ld();Pa();rh();Bd=class extends Map{pending=new Map;defer(t,n){this.pending.set(t,n)}load(t){let n=this.pending.get(t);if(n===void 0)return;this.pending.delete(t);let r=se(n);r&&super.set(t,r)}loadAll(){for(let t of[...this.pending.keys()])this.load(t)}get(t){return this.load(t),super.get(t)}has(t){return this.load(t),super.has(t)}set(t,n){return this.pending?.delete(t),super.set(t,n)}delete(t){let n=this.pending.delete(t);return super.delete(t)||n}clear(){this.pending.clear(),super.clear()}get size(){return this.loadAll(),super.size}forEach(t,n){this.loadAll(),super.forEach(t,n)}entries(){return this.loadAll(),super.entries()}keys(){return this.loadAll(),super.keys()}values(){return this.loadAll(),super.values()}[Symbol.iterator](){return this.entries()}};GE=["graph.json","symbols.json","cache.json","freshness.json","embeddings.bin"],qE=e=>GE.some(t=>e===t||e.startsWith(`${t}.tmp-`))});function qd(e,t,n){return t.every(r=>e[r]===void 0||n(e[r]))}function ev(e,t){return an(e)&&Qe(e.name)&&Qe(e.kind)&&e.file===t&&$i(e.line)&&(e.endLine===void 0||$i(e.endLine)&&e.endLine>=e.line)&&typeof e.exported=="boolean"&&Qe(e.lang)&&qd(e,ZE,Qe)}function tv(e){return an(e)&&(e.kind==="import"||e.kind==="doc-link")&&Qe(e.spec)&&(e.soft===void 0||e.soft===!0)}function nv(e){return an(e)&&Qe(e.name)&&$i(e.line)&&(e.receiver===void 0||Qe(e.receiver))}function rv(e){return an(e)&&Qe(e.local)&&Qe(e.name)&&(e.from===void 0||Qe(e.from))}function sv(e){return an(e)&&(e.kind==="extends"||e.kind==="implements")&&Qe(e.from)&&Qe(e.to)&&$i(e.line)}function iv(e){return an(e)&&(e.kind==="string"||e.kind==="number"||e.kind==="regex")&&Qe(e.value)&&$i(e.line)}function Wa(e,t){return e===void 0||Array.isArray(e)&&e.every(t)}function ov(e,t){return an(e)&&e.rel===t&&Qe(e.ext)&&Ba(e.size)&&Ba(e.lines)&&lh(e.hash)&&Qe(e.kind)&&XE.has(e.kind)&&Qe(e.lang)&&qd(e,YE,Qe)&&qd(e,QE,ah)&&ah(e.headings)&&Array.isArray(e.symbols)&&e.symbols.every(n=>ev(n,t))&&Array.isArray(e.refs)&&e.refs.every(tv)&&Wa(e.calls,nv)&&Wa(e.importAliases,rv)&&Wa(e.relations,sv)&&Wa(e.literals,iv)&&(e.truncated===void 0||e.truncated===!0)&&(e.callsCapped===void 0||e.callsCapped===!0)&&(e.astFallback===void 0||e.astFallback===!0)&&(e.generated===void 0||e.generated==="minified"||e.generated==="bundle")}function av(e,t){return an(e)&&lh(e.hash)&&ov(e.record,t)&&e.hash===e.record.hash&&(e.size===void 0||Ba(e.size)&&e.size===e.record.size)&&(e.mtimeMs===void 0||typeof e.mtimeMs=="number"&&Number.isFinite(e.mtimeMs))}function ch(e){if(!an(e)||e.schemaVersion!==5||e.extractorVersion!==17||!an(e.files))return;let t=new Map;for(let[n,r]of Object.entries(e.files)){if(n.split("/").some(o=>o===""||o==="."||o==="..")||!av(r,n))return;t.set(n,r)}return t}function Vd(e,t,n){let r=Bt(e.filter(o=>o.kind==="code").map(o=>o.ext)).filter(n);return t===void 0?{grammars:r}:{grammars:r,maxCallsPerFile:t}}function Jd(e,t){return e!==void 0&&e.maxCallsPerFile===t.maxCallsPerFile&&e.grammars.join(",")===t.grammars.join(",")}function Ua(e){if(!an(e)||!Array.isArray(e.grammars)||!e.grammars.every(Qe))return;let t=e.maxCallsPerFile;if(t!==void 0&&!(typeof t=="number"&&Number.isFinite(t)&&t>0))return;let n=[...e.grammars];return t===void 0?{grammars:n}:{grammars:n,maxCallsPerFile:t}}function Fi(e,t,n){let r=Oi(t,n),o=new Map;for(let[s,a]of e)r(a.record.kind,a.record.ext)&&o.set(s,a);return o}function Oi(e,t){let n=new Set(e?.grammars),r=e!==void 0&&e.maxCallsPerFile===t.maxCallsPerFile;return(o,s)=>o!=="code"?!0:r?Bt([s]).every(a=>n.has(a)===t.ast(a)):!1}var an,Qe,Ba,$i,ah,lh,XE,ZE,YE,QE,Ni=z(()=>{"use strict";I();_t();pt();an=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Qe=e=>typeof e=="string",Ba=e=>typeof e=="number"&&Number.isSafeInteger(e)&&e>=0,$i=e=>Ba(e)&&e>0,ah=e=>Array.isArray(e)&&e.every(Qe),lh=e=>Qe(e)&&/^[a-f0-9]{40}$/.test(e),XE=new Set(["code","doc","config","asset","other"]),ZE=["parent","parentPath","signature","doc"],YE=["title","summary","pkg"],QE=["idents","importedNames","terms"]});var vs,za,Kd=z(()=>{I();vs=class{constructor(){throw new Error("worker_threads is not available in the browser build (the engine runs single-threaded here)")}},za=class{constructor(){throw new Error("worker_threads is not available in the browser build (the engine runs single-threaded here)")}}});function lv(e=wa(import.meta.url)){try{if(je(e)==="engine.mjs")return Cr(e).href;let t=j(Me(e),"engine.mjs");return ne(t)?Cr(t).href:void 0}catch{return}}function dh(e){let t=O.env.CODEINDEX_WORKERS,n=e??(t!==void 0&&t!==""?Number(t):void 0);if(n!==void 0)return Number.isFinite(n)&&n>0?Math.floor(n):0;let r=1;try{r=typeof ba=="function"?ba():Dp().length}catch{r=1}return Math.max(0,Math.min(r-1,8))}async function uv(e,t){await on(e.grammarKeys);let n=e.grammarKeys.filter(o=>Le(o)),r=[];for(let o of e.jobs){let s,a;try{let u=Ae(o.abs);s=u.size,a=u.mtimeMs}catch{continue}let l=se(o.abs),c=Re(l);if(c===o.cachedHash){r.push({rel:o.rel,size:s,mtimeMs:a,hash:c});continue}let d=La(o.rel,o.ext,s,l,c,nn(o.ext),{maxCallsPerFile:e.maxCallsPerFile});r.push({rel:o.rel,size:s,mtimeMs:a,hash:c,record:d})}t({ready:n,records:r})}async function uh(e,t,n,r={}){if(n<2||e.length===0)return;let o=r.engineUrl??lv();if(!o)return;let s=t.filter(m=>Le(m)).sort(),a=Math.min(n,e.length),l=`import { runExtractWorker } from ${JSON.stringify(o)}; import { parentPort, workerData } from "node:worker_threads"; const base = workerData.input; const post = (o) => parentPort.postMessage(o); @@ -36,83 +36,83 @@ runExtractWorker({ ...base, jobs: [] }, post).then(() => { runExtractWorker({ ...base, jobs: m.jobs }, post).catch(fail); }); }).catch(fail); -`,c=new Map,d=0,u=()=>{let m=e.length-d;if(m<=0)return[];let p=Math.max(GE,Math.ceil(m/(a*zE))),g=e.slice(d,d+p);return d+=g.length,g},f=[];try{return await Promise.all(Array.from({length:a},()=>new Promise((m,p)=>{let g=new Ss(l,{eval:!0,workerData:{input:{jobs:[],grammarKeys:s,maxCallsPerFile:r.maxCallsPerFile}}});f.push(g);let h=!1,_,y=()=>{_&&clearTimeout(_),_=setTimeout(()=>{b(()=>p(new Error("extraction worker timed out"))),g.terminate()},BE)},b=k=>{_&&clearTimeout(_),h=!0,k()};y();let w=0,S=()=>{let k=u();return k.length===0?!1:(w++,g.postMessage({jobs:k}),!0)};g.on("message",k=>{if(!h){if("error"in k){b(()=>p(new Error(k.error))),g.terminate();return}if(k.ready.slice().sort().join(",")!==s.join(",")){b(()=>p(new Error("extraction worker grammar tier mismatch"))),g.terminate();return}for(let M of k.records)c.set(M.rel,M.record?{size:M.size,mtimeMs:M.mtimeMs,hash:M.hash,record:M.record}:{size:M.size,mtimeMs:M.mtimeMs,hash:M.hash});if(w===0?S():w--,S(),w===0){b(()=>m()),g.postMessage({done:!0}),g.terminate();return}y()}}),g.once("error",k=>b(()=>p(k))),g.once("exit",k=>{h||b(()=>p(new Error(`extraction worker exited with ${k} before finishing`)))})}))),c}catch{for(let m of f)m.terminate();return}}async function hn(e,t={}){let n=Xg(t.workers);if(n<2)return kt(e,t);let r=t.precomputedWalk??Ke(e,Ir(e,t)),o={...t,precomputedWalk:r},s=[];for(let{f:d}of Nd(e,{...o,onSkip:void 0})){let u=t.cache?.get(d.rel);!t.fullHash&&u&&u.size!==void 0&&u.mtimeMs!==void 0&&u.size===d.size&&u.mtimeMs===d.mtimeMs||s.push(u?{abs:d.abs,rel:d.rel,ext:d.ext,cachedHash:u.hash}:{abs:d.abs,rel:d.rel,ext:d.ext})}if(s.length===0)return kt(e,o);if(!(t.workers!==void 0||(F.env.CODEINDEX_WORKERS??"")!=="")&&s.lengthd.ext)),c=await Zg(s,l,n,{maxCallsPerFile:t.maxCallsPerFile});return kt(e,c?{...o,extracted:c}:o)}var BE,UE,zE,GE,Fi=H(()=>{"use strict";I();ve();hi();pe();yi();Wd();bt();Xe();Er();ft();Bt();BE=600*1e3,UE=200;zE=4,GE=4});function Ut(e,t=Ve){return ue(e,t)}function Et(e){let t=new Map;for(let n of e.files)t.set(n.rel,{hash:n.hash,record:n,size:n.size,mtimeMs:e.mtimes.get(n.rel)});return t}function Bd(e,t,n=!1){let r=e.files.filter(o=>Ct(o.rel,o.ext)==="code");return n&&r.length>0||r.some(o=>{let s=t.get(o.rel);return!s||s.size!==o.size||s.mtimeMs!==o.mtimeMs})}function Ud(e,t){return e>=t}function Oi(e,t=Ve){let n=Ni(e,t);return"unusable"in n?void 0:n}function Ni(e,t=Ve){let n,r;try{let a=j(Ut(e,t),"cache.json");n=le(a,"utf8"),r=Ae(a).mtimeMs}catch(a){let l=a.code;return{unusable:l==="ENOENT"||l==="ENOTDIR"?"absent":"unreadable"}}let o;try{o=JSON.parse(n)}catch{return{unusable:"corrupt"}}if(o===null||typeof o!="object"||Array.isArray(o)||typeof o.schemaVersion!="number")return{unusable:"corrupt"};if(o.schemaVersion!==5)return{unusable:"schema"};if(o.extractorVersion!==16)return{unusable:"extractor"};let s=Kg(o);if(!s)return{unusable:"corrupt"};for(let[a,l]of s)if(l.mtimeMs!==void 0&&Ud(l.mtimeMs,r)){let{mtimeMs:c,...d}=l;s.set(a,d)}return{cacheMap:s,meta:{engineVersion:o.engineVersion,commit:o.commit,graphSha1:o.graphSha1,symbolsSha1:o.symbolsSha1,embed:o.embed,extraction:ja(o.extraction)}}}function ks(e,t,n){if(n===void 0)return;let r;try{r=le(j(e,`${t}.json`))}catch{return}return Re(r)===n?r:void 0}function Yg(e){if(e)try{let t=JSON.parse(e.toString("utf8"));return t.schemaVersion===5?t:void 0}catch{return}}function qE(e,t){if(e.commit===t)return e;let{schemaVersion:n,version:r,commit:o,...s}=e;return{schemaVersion:n,version:r,commit:t,...s}}function Tr(e,t,n,r=Ve){if(!t.contentUnchanged||n.engineVersion!==$e||n.graphSha1===void 0||n.symbolsSha1===void 0)return;let o=Ut(e,r),s=a=>a==="graph"?n.graphSha1:n.symbolsSha1;return{bytes:a=>a==="graph"&&n.commit!==t.commit?void 0:ks(o,a,s(a)),graph:()=>{let a=Yg(ks(o,"graph",n.graphSha1));return a&&qE(a,t.commit)},symbols:()=>Yg(ks(o,"symbols",n.symbolsSha1))}}function Qg(e,t,n,r=Ve){return eh(t,Tr(e,t,n,r))}function eh(e,t){let n=t?.graph(),r=n?t?.symbols():void 0;return n&&r?{scan:e,graph:n,symbols:r}:void 0}function Hd(e,t,n=Ve){let r=Oi(e,n);if(!r)return;let o=Ii(r.cacheMap,r.meta.extraction,{maxCallsPerFile:t.maxCallsPerFile,ast:Le}),s=kt(e,{...t,cache:o});return{scan:s,cacheMap:Et(s),arts:Qg(e,s,r.meta,n)}}async function Ba(e,t,n,r=Ve){let o=Oi(e,r);if(!o)return;let{ast:s,workers:a,...l}=t,c=l.precomputedWalk??Ke(e,Ir(e,l)),d=s===!1?new Set:ka(),u=y=>Ii(o.cacheMap,o.meta.extraction,{maxCallsPerFile:l.maxCallsPerFile,ast:y}),f=u(y=>Le(y)||d.has(y));Bd(c,f,l.fullHash)&&(await n(),f=u(Le));let p=await hn(e,{...l,workers:a,cache:f,precomputedWalk:c}),g=Tr(e,p,o.meta,r),h=!1,_;return{scan:p,cacheMap:Et(p),loadArtifacts:()=>(h||(h=!0,_=eh(p,g)),_),...g?{artifacts:g}:{}}}var Ve,tr=H(()=>{"use strict";I();ve();pe();ht();$i();ft();Bt();Fi();bt();Xe();Jn();Ve=".codeindex"});function Gd(e){if(e===!1)return()=>!1;let t=ka();return n=>Le(n)||t.has(n)}function qd(e,t,n,r=!1){let o={indexed:t.size,unchanged:0,touched:0,modified:0,added:0,deleted:0,reextract:0};for(let s of e){let a=t.get(s.rel);a?n(s)?!r&&a.size===s.size&&a.mtimeMs===s.mtimeMs?o.unchanged++:Re(ie(s.abs))===a.hash?o.touched++:o.modified++:o.reextract++:o.added++}return o.deleted=t.size-(e.length-o.added),o}function th(e,t,n,r){let o=Object.create(null);for(let s of e.files)o[s.rel]=[s.hash,s.size,e.mtimes.get(s.rel)];return JSON.stringify({schemaVersion:5,extractorVersion:16,engineVersion:$e,commit:e.commit,graphSha1:t.graphSha1,symbolsSha1:t.symbolsSha1,embed:t.embed,extraction:n,cache:r,files:o})+` -`}function Vd(e,t=Ve){let n=Ut(e,t),r,o;try{r=JSON.parse(le(j(n,zd),"utf8"));let{size:d,mtimeMs:u}=Ae(j(n,"cache.json"));o={size:d,mtimeMs:u}}catch{return}if(r===null||typeof r!="object"||r.schemaVersion!==5||r.extractorVersion!==16)return;let s=r.cache;if(!s||s.size!==o.size||s.mtimeMs!==o.mtimeMs)return;let a=d=>typeof d=="string"?d:void 0,l=r.embed;if(l!==void 0&&(l===null||typeof l!="object")||typeof r.files!="object"||r.files===null)return;let c=new Map;for(let[d,u]of Object.entries(r.files)){if(!Array.isArray(u)||!JE(u[0])||!KE(u[1])||!XE(u[2]))return;c.set(d,Ud(u[2],o.mtimeMs)?{hash:u[0],size:u[1]}:{hash:u[0],size:u[1],mtimeMs:u[2]})}return{meta:{engineVersion:a(r.engineVersion),commit:a(r.commit),graphSha1:a(r.graphSha1),symbolsSha1:a(r.symbolsSha1),embed:l&&{embedVersion:typeof l.embedVersion=="number"?l.embedVersion:void 0,modelId:a(l.modelId),sha1:a(l.sha1)},extraction:ja(r.extraction)},cache:o,files:c}}function Jd(e,t,n,r=Ve){let o=Vd(e,r);if(!o)return;let s=Ti(o.meta.extraction,{maxCallsPerFile:t.maxCallsPerFile,ast:n}),{files:a,capped:l}=xs(e,t),c=qd(a,o.files,d=>s(Ct(d.rel,d.ext),d.ext),t.fullHash);return{fresh:o,walked:a,capped:l,drift:c,commit:Yt(e)}}function nh(e,t,n=Ve){let{ast:r,...o}=t,s=Jd(e,o,Gd(r),n);if(!s||!VE(s.drift))return;let a=Tr(e,{contentUnchanged:!0,commit:s.commit},s.fresh.meta,n);return a&&{artifacts:a,fileCount:s.walked.length}}var zd,VE,JE,KE,XE,Kd=H(()=>{"use strict";I();ve();pe();ht();$i();ft();Jn();tr();Bt();Xe();en();bt();zd="freshness.json";VE=e=>!(e.added||e.deleted||e.modified||e.reextract);JE=e=>typeof e=="string"&&/^[a-f0-9]{40}$/.test(e),KE=e=>typeof e=="number"&&Number.isSafeInteger(e)&&e>=0,XE=e=>typeof e=="number"&&Number.isFinite(e)});function Pi(e,t={},n=Ve){let{ast:r,...o}=t,s=Ut(e,n),a=Yt(e)??null,c=Vd(e,n)??Ni(e,n);if("unusable"in c)return{indexDir:s,present:c.unusable!=="absent",usable:!1,reason:c.unusable,engineVersion:{index:null,current:$e},commit:{index:null,head:a},files:null,artifactsFresh:!1,stale:[c.unusable]};let d=c.meta,u="files"in c?c.files:c.cacheMap,f=Ti(d.extraction,{maxCallsPerFile:o.maxCallsPerFile,ast:Gd(r)}),m=xs(e,o).files,p=qd(m,u,h=>f(Ct(h.rel,h.ext),h.ext),o.fullHash),g=[];return d.engineVersion!==$e&&g.push("engine-version"),p.reextract&&g.push("extraction"),(p.added||p.deleted||p.modified)&&g.push("files"),ks(s,"graph",d.graphSha1)||g.push("graph.json"),ks(s,"symbols",d.symbolsSha1)||g.push("symbols.json"),{indexDir:s,present:!0,usable:!0,engineVersion:{index:d.engineVersion??null,current:$e},commit:{index:d.commit??null,head:a},files:p,artifactsFresh:g.length===0,stale:g}}var Ua=H(()=>{"use strict";I();ht();$i();Jn();tr();Bt();en();Kd()});function pv(e,t,n){let r=e.dirFilesMemo??=new Map,o=n+"\0"+t,s=r.get(o);return s||r.set(o,s=(e.filesByDir.get(t)??[]).filter(a=>a.endsWith(n)).sort()),s}function eu(e){let t=Ie(e).split("/").filter(o=>o!=="."),n=[],r=0;for(;rt?1:0)}function $r(e){let t="",n=!1;for(let o=0;o{let m=e.length-d;if(m<=0)return[];let p=Math.max(mv,Math.ceil(m/(a*fv))),g=e.slice(d,d+p);return d+=g.length,g},f=[];try{return await Promise.all(Array.from({length:a},()=>new Promise((m,p)=>{let g=new vs(l,{eval:!0,workerData:{input:{jobs:[],grammarKeys:s,maxCallsPerFile:r.maxCallsPerFile}}});f.push(g);let h=!1,_,y=()=>{_&&clearTimeout(_),_=setTimeout(()=>{b(()=>p(new Error("extraction worker timed out"))),g.terminate()},cv)},b=v=>{_&&clearTimeout(_),h=!0,v()};y();let x=0,k=()=>{let v=u();return v.length===0?!1:(x++,g.postMessage({jobs:v}),!0)};g.on("message",v=>{if(!h){if("error"in v){b(()=>p(new Error(v.error))),g.terminate();return}if(v.ready.slice().sort().join(",")!==s.join(",")){b(()=>p(new Error("extraction worker grammar tier mismatch"))),g.terminate();return}for(let T of v.records)c.set(T.rel,T.record?{size:T.size,mtimeMs:T.mtimeMs,hash:T.hash,record:T.record}:{size:T.size,mtimeMs:T.mtimeMs,hash:T.hash});if(x===0?k():x--,k(),x===0){b(()=>m()),g.postMessage({done:!0}),g.terminate();return}y()}}),g.once("error",v=>b(()=>p(v))),g.once("exit",v=>{h||b(()=>p(new Error(`extraction worker exited with ${v} before finishing`)))})}))),c}catch{for(let m of f)m.terminate();return}}async function yn(e,t={}){let n=dh(t.workers);if(n<2)return vt(e,t);let r=t.precomputedWalk??Xe(e,$r(e,t)),o={...t,precomputedWalk:r},s=[];for(let{f:d}of Hd(e,{...o,onSkip:void 0})){let u=t.cache?.get(d.rel);!t.fullHash&&u&&u.size!==void 0&&u.mtimeMs!==void 0&&u.size===d.size&&u.mtimeMs===d.mtimeMs||s.push(u?{abs:d.abs,rel:d.rel,ext:d.ext,cachedHash:u.hash}:{abs:d.abs,rel:d.rel,ext:d.ext})}if(s.length===0)return vt(e,o);if(!(t.workers!==void 0||(O.env.CODEINDEX_WORKERS??"")!=="")&&s.lengthd.ext)),c=await uh(s,l,n,{maxCallsPerFile:t.maxCallsPerFile});return vt(e,c?{...o,extracted:c}:o)}var cv,dv,fv,mv,Pi=z(()=>{"use strict";I();Ee();_i();fe();bi();Kd();xt();Ze();Rr();pt();Ut();cv=600*1e3,dv=200;fv=4,mv=4});function zt(e,t=Je){return ae(e,t)}function Rt(e){let t=new Map;for(let n of e.files)t.set(n.rel,{hash:n.hash,record:n,size:n.size,mtimeMs:e.mtimes.get(n.rel)});return t}function Xd(e,t,n=!1){let r=e.files.filter(o=>mt(o.rel,o.ext)==="code");return n&&r.length>0||r.some(o=>{let s=t.get(o.rel);return!s||s.size!==o.size||s.mtimeMs!==o.mtimeMs})}function Zd(e,t){return e>=t}function Li(e,t=Je){let n=Di(e,t);return"unusable"in n?void 0:n}function Di(e,t=Je){let n,r;try{let a=j(zt(e,t),"cache.json");n=ie(a,"utf8"),r=Ae(a).mtimeMs}catch(a){let l=a.code;return{unusable:l==="ENOENT"||l==="ENOTDIR"?"absent":"unreadable"}}let o;try{o=JSON.parse(n)}catch{return{unusable:"corrupt"}}if(o===null||typeof o!="object"||Array.isArray(o)||typeof o.schemaVersion!="number")return{unusable:"corrupt"};if(o.schemaVersion!==5)return{unusable:"schema"};if(o.extractorVersion!==17)return{unusable:"extractor"};let s=ch(o);if(!s)return{unusable:"corrupt"};for(let[a,l]of s)if(l.mtimeMs!==void 0&&Zd(l.mtimeMs,r)){let{mtimeMs:c,...d}=l;s.set(a,d)}return{cacheMap:s,meta:{engineVersion:o.engineVersion,commit:o.commit,graphSha1:o.graphSha1,symbolsSha1:o.symbolsSha1,embed:o.embed,extraction:Ua(o.extraction)}}}function Rs(e,t,n){if(n===void 0)return;let r;try{r=ie(j(e,`${t}.json`))}catch{return}return Re(r)===n?r:void 0}function fh(e){if(e)try{let t=JSON.parse(e.toString("utf8"));return t.schemaVersion===5?t:void 0}catch{return}}function pv(e,t){if(e.commit===t)return e;let{schemaVersion:n,version:r,commit:o,...s}=e;return{schemaVersion:n,version:r,commit:t,...s}}function Fr(e,t,n,r=Je){if(!t.contentUnchanged||n.engineVersion!==Te||n.graphSha1===void 0||n.symbolsSha1===void 0)return;let o=zt(e,r),s=a=>a==="graph"?n.graphSha1:n.symbolsSha1;return{bytes:a=>a==="graph"&&n.commit!==t.commit?void 0:Rs(o,a,s(a)),graph:()=>{let a=fh(Rs(o,"graph",n.graphSha1));return a&&pv(a,t.commit)},symbols:()=>fh(Rs(o,"symbols",n.symbolsSha1))}}function mh(e,t,n,r=Je){return ph(t,Fr(e,t,n,r))}function ph(e,t){let n=t?.graph(),r=n?t?.symbols():void 0;return n&&r?{scan:e,graph:n,symbols:r}:void 0}function Yd(e,t,n=Je){let r=Li(e,n);if(!r)return;let o=Fi(r.cacheMap,r.meta.extraction,{maxCallsPerFile:t.maxCallsPerFile,ast:Le}),s=vt(e,{...t,cache:o});return{scan:s,cacheMap:Rt(s),arts:mh(e,s,r.meta,n)}}async function Ha(e,t,n,r=Je){let o=Li(e,r);if(!o)return;let{ast:s,workers:a,...l}=t,c=l.precomputedWalk??Xe(e,$r(e,l)),d=s===!1?new Set:Ra(),u=y=>Fi(o.cacheMap,o.meta.extraction,{maxCallsPerFile:l.maxCallsPerFile,ast:y}),f=u(y=>Le(y)||d.has(y));Xd(c,f,l.fullHash)&&(await n(),f=u(Le));let p=await yn(e,{...l,workers:a,cache:f,precomputedWalk:c}),g=Fr(e,p,o.meta,r),h=!1,_;return{scan:p,cacheMap:Rt(p),loadArtifacts:()=>(h||(h=!0,_=ph(p,g)),_),...g?{artifacts:g}:{}}}var Je,tr=z(()=>{"use strict";I();Ee();fe();_t();Ni();pt();Ut();Pi();xt();Ze();Mn();Je=".codeindex"});function eu(e){if(e===!1)return()=>!1;let t=Ra();return n=>Le(n)||t.has(n)}function tu(e,t,n,r=!1){let o={indexed:t.size,unchanged:0,touched:0,modified:0,added:0,deleted:0,reextract:0};for(let s of e){let a=t.get(s.rel);a?n(s)?!r&&a.size===s.size&&a.mtimeMs===s.mtimeMs?o.unchanged++:Re(se(s.abs))===a.hash?o.touched++:o.modified++:o.reextract++:o.added++}return o.deleted=t.size-(e.length-o.added),o}function gh(e,t,n,r){let o=Object.create(null);for(let s of e.files)o[s.rel]=[s.hash,s.size,e.mtimes.get(s.rel)];return JSON.stringify({schemaVersion:5,extractorVersion:17,engineVersion:Te,commit:e.commit,graphSha1:t.graphSha1,symbolsSha1:t.symbolsSha1,embed:t.embed,extraction:n,cache:r,files:o})+` +`}function nu(e,t=Je){let n=zt(e,t),r,o;try{r=JSON.parse(ie(j(n,Qd),"utf8"));let{size:d,mtimeMs:u}=Ae(j(n,"cache.json"));o={size:d,mtimeMs:u}}catch{return}if(r===null||typeof r!="object"||r.schemaVersion!==5||r.extractorVersion!==17)return;let s=r.cache;if(!s||s.size!==o.size||s.mtimeMs!==o.mtimeMs)return;let a=d=>typeof d=="string"?d:void 0,l=r.embed;if(l!==void 0&&(l===null||typeof l!="object")||typeof r.files!="object"||r.files===null)return;let c=new Map;for(let[d,u]of Object.entries(r.files)){if(!Array.isArray(u)||!hv(u[0])||!yv(u[1])||!_v(u[2]))return;c.set(d,Zd(u[2],o.mtimeMs)?{hash:u[0],size:u[1]}:{hash:u[0],size:u[1],mtimeMs:u[2]})}return{meta:{engineVersion:a(r.engineVersion),commit:a(r.commit),graphSha1:a(r.graphSha1),symbolsSha1:a(r.symbolsSha1),embed:l&&{embedVersion:typeof l.embedVersion=="number"?l.embedVersion:void 0,modelId:a(l.modelId),sha1:a(l.sha1)},extraction:Ua(r.extraction)},cache:o,files:c}}function ru(e,t,n,r=Je){let o=nu(e,r);if(!o)return;let s=Oi(o.meta.extraction,{maxCallsPerFile:t.maxCallsPerFile,ast:n}),{files:a,capped:l}=Es(e,t),c=tu(a,o.files,d=>s(mt(d.rel,d.ext),d.ext),t.fullHash);return{fresh:o,walked:a,capped:l,drift:c,commit:Qt(e)}}function hh(e,t,n=Je){let{ast:r,...o}=t,s=ru(e,o,eu(r),n);if(!s||!gv(s.drift))return;let a=Fr(e,{contentUnchanged:!0,commit:s.commit},s.fresh.meta,n);return a&&{artifacts:a,fileCount:s.walked.length}}var Qd,gv,hv,yv,_v,su=z(()=>{"use strict";I();Ee();fe();_t();Ni();pt();Mn();tr();Ut();Ze();tn();xt();Qd="freshness.json";gv=e=>!(e.added||e.deleted||e.modified||e.reextract);hv=e=>typeof e=="string"&&/^[a-f0-9]{40}$/.test(e),yv=e=>typeof e=="number"&&Number.isSafeInteger(e)&&e>=0,_v=e=>typeof e=="number"&&Number.isFinite(e)});function ji(e,t={},n=Je){let{ast:r,...o}=t,s=zt(e,n),a=Qt(e)??null,c=nu(e,n)??Di(e,n);if("unusable"in c)return{indexDir:s,present:c.unusable!=="absent",usable:!1,reason:c.unusable,engineVersion:{index:null,current:Te},commit:{index:null,head:a},files:null,artifactsFresh:!1,stale:[c.unusable]};let d=c.meta,u="files"in c?c.files:c.cacheMap,f=Oi(d.extraction,{maxCallsPerFile:o.maxCallsPerFile,ast:eu(r)}),m=Es(e,o).files,p=tu(m,u,h=>f(mt(h.rel,h.ext),h.ext),o.fullHash),g=[];return d.engineVersion!==Te&&g.push("engine-version"),p.reextract&&g.push("extraction"),(p.added||p.deleted||p.modified)&&g.push("files"),Rs(s,"graph",d.graphSha1)||g.push("graph.json"),Rs(s,"symbols",d.symbolsSha1)||g.push("symbols.json"),{indexDir:s,present:!0,usable:!0,engineVersion:{index:d.engineVersion??null,current:Te},commit:{index:d.commit??null,head:a},files:p,artifactsFresh:g.length===0,stale:g}}var Ga=z(()=>{"use strict";I();_t();Ni();Mn();tr();Ut();tn();su()});function Pv(e,t,n){let r=e.dirFilesMemo??=new Map,o=n+"\0"+t,s=r.get(o);return s||r.set(o,s=(e.filesByDir.get(t)??[]).filter(a=>a.endsWith(n)).sort()),s}function cu(e){let t=Ie(e).split("/").filter(o=>o!=="."),n=[],r=0;for(;rt?1:0)}function Or(e){let t="",n=!1;for(let o=0;o=Sv)){if(typeof e=="string")t.includes(e)||t.push(e);else if(Array.isArray(e))for(let n of e)Ga(n,t);else if(e!==null&&typeof e=="object"){let n=Object.keys(e).sort((r,o)=>uh(r)-uh(o)||(ro?1:0));for(let r of n)Ga(e[r],t)}}}function kv(e){if(e==null)return[];let t=[],n=(r,o)=>{let s=[];Ga(o,s),s.length&&t.push({key:r,star:r.includes("*"),targets:s})};if(typeof e=="string"||Array.isArray(e))n(".",e);else if(typeof e=="object"){let r=Object.keys(e);if(r.every(o=>o==="."||o.startsWith("./")))for(let o of r)n(o,e[o]);else n(".",e)}return t.sort((r,o)=>Number(r.star)-Number(o.star)||o.key.length-r.key.length||(r.keyNumber(n.star)-Number(r.star)||r.key.length-n.key.length||T(n.key,r.key)),t}function fh(e,t){for(let n of e){if(!n.star){if(n.key===t)return n.targets;continue}let r=n.key.indexOf("*"),o=n.key.slice(0,r),s=n.key.slice(r+1);if(!t.startsWith(o)||!t.endsWith(s)||t.lengthl.replace(/\*/g,()=>a))}}function vv(e,t){let n=[],r=o=>{let s=/^\s*([^\s=]+)(?:\s+v\S+)?\s*=>\s*(\S+)(?:\s+v\S+)?\s*$/.exec(o);if(!s)return;let a=s[2];if(!/^\.\.?\//.test(a))return;let l=Ie(G.join(t,a));l.startsWith("..")||n.push({from:s[1],toDir:l})};for(let o of e.matchAll(/^[ \t]*replace[ \t]+([^(\r\n][^\r\n]*)$/gm))r(o[1]);for(let o of e.matchAll(/^[ \t]*replace[ \t]*\(([\s\S]*?)\)/gm))for(let s of o[1].split(/\r?\n/))r(s);return n}function Rv(e,t){let n={dir:t,deps:new Map},r=l=>{let c=/^(?:"([^"]*)"|'([^']*)')$/.exec(l);return c?c[1]??c[2]:void 0},o=(l,c)=>{let d=l.get(c);return d||l.set(c,d={}),d},s=(l,c,d)=>{c==="package"||c==="path"?l[c]=r(d)??l[c]:c==="workspace"&&(l.workspace=d==="true")},a="";for(let l of e.split(/\r?\n/)){let c=l.replace(/^((?:[^"'#]|"[^"]*"|'[^']*')*)#.*$/,"$1").trim(),d=/^\[\[?([^\]]+)\]\]?$/.exec(c);if(d){a=d[1].replace(/["'\s]/g,""),(a==="workspace"||a.startsWith("workspace."))&&(n.workspaceDeps??=new Map);continue}let u=/^([\w.-]+)\s*=\s*(.+)$/.exec(c);if(!u)continue;let f=u[1],m=u[2];if(a==="package"){f==="name"?n.packageName=r(m)??n.packageName:f==="edition"?n.edition=r(m)??(/workspace\s*=\s*true/.test(m)?"workspace":void 0):f==="edition.workspace"&&(n.edition="workspace");continue}if(a==="lib"){f==="name"?n.libName=r(m)??n.libName:f==="path"&&(n.libPath=r(m)??n.libPath);continue}let p=/^(?:(workspace)\.|target\..+\.)?(?:dev-|build-)?dependencies(?:\.(.+))?$/.exec(a);if(!p)continue;let g=p[1]?n.workspaceDeps:n.deps;if(p[2]){s(o(g,p[2]),f,m);continue}let h=/^([\w-]+)\.(package|path|workspace)$/.exec(f);if(h)s(o(g,h[1]),h[2],m);else if(m.startsWith("{")){let _=o(g,f);for(let y of m.matchAll(/\b(package|path|workspace)\s*=\s*("[^"]*"|'[^']*'|true|false)/g))s(_,y[1],y[2])}}return n}function Mv(e,t){let n=[],r=[...t].filter(c=>c==="Cargo.toml"||c.endsWith("/Cargo.toml"));for(let c of r.sort(T))n.push(Rv(ie(j(e,c)),c.includes("/")?G.dirname(c):""));let o=n.filter(c=>c.packageName!==void 0),s=new Map(o.map(c=>[c.dir,c])),a=(c,d)=>!d||c===d||c.startsWith(d+"/"),l=[];for(let c of o){let d=Ie(G.join(c.dir,"src")).replace(/^\.$/,""),u=c.libPath?Ie(G.join(c.dir,c.libPath)):void 0,f=u&&!u.startsWith("..")&&t.has(u)?u:void 0,m=f?f.includes("/")?G.dirname(f):"":d,p=f??bv(t,[G.join(d,"lib.rs"),G.join(d,"main.rs")]),g=n.filter(_=>_.workspaceDeps&&a(c.dir,_.dir)).sort((_,y)=>y.dir.length-_.dir.length)[0],h=new Map;for(let[_,y]of[...c.deps].sort((b,w)=>T(b[0],w[0]))){let b=y.workspace?g?.workspaceDeps?.get(_):y;if(!b?.package)continue;let w=y.workspace?g.dir:c.dir,S=b.path?s.get(Ie(G.join(w,b.path)).replace(/^\.$/,"")):o.find(k=>k.packageName===b.package);S&&h.set(_.replace(/-/g,"_"),S.dir)}l.push({name:(c.libName??c.packageName).replace(/-/g,"_"),dir:c.dir,srcDir:m,rootFile:p,...h.size?{renames:h}:{},...c.edition===void 0||c.edition==="2015"?{edition2015:!0}:{}})}return l.sort((c,d)=>d.dir.length-c.dir.length||(c.dirA.rel)),n=new Map,r=new Set;for(let A of e.files){let R=A.rel.includes("/")?G.dirname(A.rel):"",$=n.get(R);$||n.set(R,$=[]),$.push(A.rel);let E=R;for(;E&&!r.has(E);)r.add(E),E=E.includes("/")?G.dirname(E):""}let o=[],s=[],a=[],l=[];for(let A of t){if(A!=="package.json"&&!A.endsWith("/package.json"))continue;let R=$r(ie(j(e.root,A)));if(R===void 0){s.push(`unparseable ${A} \u2014 skipped for workspace resolution`);continue}let $=A.includes("/")?G.dirname(A):"";if(l.push({dir:$,importEntries:Ev(R.imports)}),typeof R.name!="string")continue;let E=[R.source,R.main,R.module,R.types].filter(x=>typeof x=="string");a.push({name:R.name,dir:$,exportEntries:kv(R.exports),mainCandidates:E,...typeof R.tsconfig=="string"?{tsconfig:R.tsconfig}:{}})}a.sort((A,R)=>R.name.length-A.name.length),l.sort((A,R)=>R.dir.length-A.dir.length||T(A.dir,R.dir));let c=[];for(let A of t){let R=A.slice(A.lastIndexOf("/")+1);if(R!=="tsconfig.json"&&R!=="jsconfig.json"&&!(A==="tsconfig.base.json"))continue;let E=A.includes("/")?G.dirname(A):"",x=xh(e.root,t,A,o,new Set,a);if(!x||!x.paths&&x.baseUrl===void 0)continue;let v=x.baseUrl===void 0?x.pathsDir:x.baseUrl.startsWith(za)?Ie(G.join(E,x.baseUrl.slice(za.length))).replace(/^\.$/,""):Ie(G.join(x.baseUrlDir,x.baseUrl)).replace(/^\.$/,""),P=G.relative(v,E)||".",O=[];for(let[L,q]of Object.entries(x.paths??{})){if(!Array.isArray(q))continue;let Z=L.endsWith("*");O.push({prefix:Z?L.slice(0,-1):L,star:Z,targets:q.filter(ae=>typeof ae=="string").map(ae=>ae.startsWith(za)?G.join(P,ae.slice(za.length)):ae)})}O.sort((L,q)=>Number(L.star)-Number(q.star)||q.prefix.length-L.prefix.length||T(L.prefix,q.prefix)),!(!O.length&&x.baseUrl===void 0)&&c.push({dir:E,file:R,baseUrl:v,baseUrlSet:x.baseUrl!==void 0,paths:O})}let d=A=>A==="tsconfig.json"?0:A==="jsconfig.json"?1:2;c.sort((A,R)=>R.dir.length-A.dir.length||d(A.file)-d(R.file)),o.push(...s);let u=[];for(let A of t){if(A!=="go.mod"&&!A.endsWith("/go.mod"))continue;let R=ie(j(e.root,A)),$=/^\s*module\s+(\S+)/m.exec(R);if(!$)continue;let E=A.includes("/")?G.dirname(A):"";u.push({module:$[1],dir:E,replaces:vv(R,E)})}u.sort((A,R)=>R.dir.length-A.dir.length||(A.dirR.prefix.length-A.prefix.length);let b=new Map;for(let A of e.files){if(A.ext!==".cs"||!A.pkg)continue;let R=b.get(A.pkg);R||b.set(A.pkg,R=[]),R.push(A.rel)}for(let A of b.values())A.sort(T);let w=[...m].sort(Di),S=new Map,k=[...t].filter(A=>A==="pubspec.yaml"||A.endsWith("/pubspec.yaml"));for(let A of k.sort(T)){let R=/^name:[ \t]*["']?(\w+)["']?[ \t]*(?:#.*)?$/m.exec(ie(j(e.root,A)));R&&!S.has(R[1])&&S.set(R[1],A.includes("/")?G.dirname(A):"")}let M=new Set([""]);for(let A of r){let R=A.slice(A.lastIndexOf("/")+1);(R==="lua"||R==="src"||R==="lib")&&M.add(A)}let N=new Map;for(let A of e.files)if(!(A.ext!==".ex"&&A.ext!==".exs"))for(let R of A.symbols){if(R.kind!=="module")continue;let $=R.parentPath?R.parentPath.replace(/\//g,"."):R.parent,E=$?$+"."+R.name:R.name,x=N.get(E);(x===void 0||T(A.rel,x)<0)&&N.set(E,A.rel)}return{fileSet:t,dirSet:r,filesByDir:n,tsConfigs:c,goModules:u,rustCrates:f,javaRoots:w,jvm:Sh({filesByDir:n,javaRoots:w},e.files),dartPackages:S,luaRoots:[...M].sort(Di),root:e.root,svelteKitRoots:[...t].filter(A=>/(?:^|\/)svelte\.config\.(?:js|ts|mjs|cjs)$/.test(A)).map(A=>A.includes("/")?G.dirname(A):"").sort((A,R)=>R.length-A.length||T(A,R)),elixirModules:N,pyRoots:[...g].sort(Di),workspacePackages:a,packageScopes:l,cIncludeRoots:[...h].sort(Di),rubyLibRoots:[..._].sort(Di),phpPsr4:y,csharpNamespaces:b,warnings:o}}function Ht(e,t){for(let n of t){let r=Ie(n);if(r&&!r.startsWith("..")&&e.fileSet.has(r))return r}}function nr(e,t,n){let r=t.split("#")[0].split("?")[0];if(!r)return{kind:"external"};if(r.startsWith("//")||/^[a-z][a-z0-9+.-]*:/i.test(r))return{kind:"external"};let o=r.startsWith("/"),s=o||!e.includes("/")?"":G.dirname(e),a=Ie(G.join(s,o?r.slice(1):r));if(a==="."&&(a=""),a.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let l=u=>[u,u+".md",u+".mdx",G.join(u,"README.md"),G.join(u,"readme.md"),G.join(u,"index.md"),G.join(u,"index.mdx")],c=a;try{c=Ie(decodeURIComponent(a))}catch{}if(c.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let d=Ht(n,c===a?l(a):[...l(a),...l(c)]);return d?{kind:"resolved",target:d}:!a||n.dirSet.has(a)?{kind:"external"}:n.root&&[a,c].some(u=>te(j(n.root,u)))?{kind:"external"}:{kind:"dangling",reason:"missing-target"}}function Cv(e,t,n){let r=f=>Ht(n,[...hv.map(m=>f+m),...yv.map(m=>G.join(f,m))]),o=f=>{let m=r(f);if(m)return m;let p=f.replace(/\.(js|jsx|mjs|cjs)$/,"");return p!==f?r(p):void 0},s=(f,m)=>{for(let p of[m,...eu(m)]){let g=o(Ie(G.join(f,p)));if(g)return g}},a=t.indexOf("?"),l=a===-1?t:t.slice(0,a);if(!l)return{kind:"external"};let c=n.svelteKitRoots?.find(f=>!f||e.startsWith(f+"/"));if(l.startsWith(".")){let f=e.includes("/")?G.dirname(e):"",m=Ie(G.join(f,l));if(m.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let p=o(m);return p?{kind:"resolved",target:p}:c!==void 0&&/(?:^|\/)\$types(?:\.d\.ts|\.js)?$/.test(l)?{kind:"external"}:{kind:"dangling",reason:"missing-module"}}let d,u;for(let f of n.tsConfigs){if(f.dir&&e!==f.dir&&!e.startsWith(f.dir+"/"))continue;u===void 0&&f.baseUrlSet&&(u=f.baseUrl);let m=!1;for(let p of f.paths){if(!(p.star?l.startsWith(p.prefix):l===p.prefix))continue;m=!0;let g=p.star?l.slice(p.prefix.length):"",h=!1;for(let _ of p.targets){let y=p.star?_.replace(/\*/,()=>g):_,b=Ie(G.join(f.baseUrl,y)),w=o(b);if(w)return{kind:"resolved",target:w};let S=b.includes("/")?G.dirname(b):"";(n.dirSet.has(S)||n.fileSet.has(b))&&(h=!0)}d=h?{kind:"dangling",reason:"alias-unresolved"}:{kind:"external"};break}if(m)break}if(u!==void 0&&!l.startsWith("/")){let f=o(Ie(G.join(u,l)));if(f)return{kind:"resolved",target:f}}if(c!==void 0&&!d&&(l==="$lib"||l.startsWith("$lib/"))){let f=Ie(G.join(c,"src/lib",l.slice(4))),m=o(f);if(m)return{kind:"resolved",target:m};if(n.dirSet.has(Ie(G.join(c,"src/lib"))))return{kind:"dangling",reason:"alias-unresolved"}}if(l.startsWith("#")){let f=n.packageScopes.find(p=>!p.dir||e.startsWith(p.dir+"/")),m=f?fh(f.importEntries,l):void 0;for(let p of m??[]){let g=f&&p.startsWith("./")?s(f.dir,p):void 0;if(g)return{kind:"resolved",target:g}}return d??{kind:"external"}}for(let f of n.workspacePackages){if(l!==f.name&&!l.startsWith(f.name+"/"))continue;let m=l.slice(f.name.length).replace(/^\//,"");for(let g of fh(f.exportEntries,m?"./"+m:".")??[]){let h=s(f.dir,g);if(h)return{kind:"resolved",target:h}}if(!m)for(let g of f.mainCandidates){let h=s(f.dir,g);if(h)return{kind:"resolved",target:h}}let p=m?[G.join(f.dir,"src",m),G.join(f.dir,m)]:[G.join(f.dir,"src","index"),G.join(f.dir,"index"),G.join(f.dir,"src")];for(let g of p){let h=o(Ie(g));if(h)return{kind:"resolved",target:h}}return{kind:"external"}}return d??{kind:"external"}}function Av(e,t,n){let r=(a,l)=>{let c=l?l.replace(/\./g,"/"):"",d=Ie(G.join(a,c));return Ht(n,[d+".py",d+".pyi",G.join(d,"__init__.py")])};if(t.startsWith(".")){let a=/^\.+/.exec(t)[0].length,l=t.slice(a),c=e.includes("/")?G.dirname(e):"",d=c?c.split("/"):[];if(a-1>d.length)return{kind:"dangling",reason:"escapes-repo-root"};let u=d.slice(0,d.length-(a-1)).join("/");if(l){let m=r(u,l);return m?{kind:"resolved",target:m}:{kind:"dangling",reason:"missing-module"}}let f=Ht(n,[G.join(u,"__init__.py")]);return f?{kind:"resolved",target:f}:{kind:"external"}}let o=[],s=[];for(let a of n.pyRoots)(!a||e.startsWith(a+"/")?o:s).push(a);for(let a of[...o.reverse(),...s]){let l=r(a,t);if(l)return{kind:"resolved",target:l}}return{kind:"external"}}function Iv(e,t,n){if(!n.goModules.length)return{kind:"external"};let r=c=>{let d=Ie(c).replace(/^\.$/,""),u=pv(n,d,".go"),f=u.find(m=>!m.endsWith("_test.go"))??u[0];return f?{kind:"resolved",target:f}:{kind:"dangling",reason:"missing-package"}},o=n.goModules.find(c=>!c.dir||e===c.dir||e.startsWith(c.dir+"/"));if(o)for(let c of o.replaces){if(t!==c.from&&!t.startsWith(c.from+"/"))continue;let d=t.slice(c.from.length).replace(/^\//,"");return r(G.join(c.toDir,d))}let s;for(let c of n.goModules)t!==c.module&&!t.startsWith(c.module+"/")||(!s||c.module.length>s.module.length||c.module.length===s.module.length&&c===o)&&(s=c);if(!s)return{kind:"external"};let a=Ie(G.join(s.dir,t.slice(s.module.length).replace(/^\//,""))).replace(/^\.$/,""),l=(c,d)=>!d||c===d||c.startsWith(d+"/");return n.goModules.some(c=>c!==s&&c.dir!==s.dir&&l(c.dir,s.dir)&&l(a,c.dir))?{kind:"dangling",reason:"missing-package"}:r(a)}function Tv(e,t,n){if(!n.rustCrates.length)return{kind:"external"};let r=(b,w)=>Ht(n,[G.join(b,w+".rs"),G.join(b,w,"mod.rs")]),o=(b,w)=>{for(let S=w.length;S>=1;S--){let k=Ie(G.join(b,...w.slice(0,S-1))),M=r(k,w[S-1]);if(M)return M}},s=e.includes("/")?G.dirname(e):"",a=e.slice(e.lastIndexOf("/")+1).replace(/\.rs$/,""),l=a==="mod"||a==="lib"||a==="main",c=l?s:G.join(s,a);if(t.startsWith("mod ")){let b=t.slice(4),w=r(c,b)??(l?void 0:r(s,b));return w?{kind:"resolved",target:w}:{kind:"dangling",reason:"missing-module"}}if(t.startsWith("mod-path ")){let b=Ie(G.join(s,t.slice(9)));return b.startsWith("..")?{kind:"dangling",reason:"escapes-repo-root"}:n.fileSet.has(b)?{kind:"resolved",target:b}:{kind:"dangling",reason:"missing-module"}}let d=t.split("::").map(b=>b.trim()).filter(Boolean);if(!d.length)return{kind:"external"};let u=d[0],f=n.rustCrates.find(b=>!b.dir||e===b.dir||e.startsWith(b.dir+"/")),m,p=[];if(u==="crate"&&f)m=f.srcDir,p=d.slice(1);else if(u==="self")m=c,p=d.slice(1);else if(u==="super"){let b=l?s.includes("/")?G.dirname(s):"":s,w=1;for(;wk.dir===w):n.rustCrates.find(k=>k.name===u);if(S){let k=o(S.srcDir,d.slice(1));if(k)return{kind:"resolved",target:k};if(S.rootFile)return{kind:"resolved",target:S.rootFile}}return{kind:"external"}}if(!p.length)return{kind:"external"};let g=o(m,p);if(g)return{kind:"resolved",target:g};if(f&&m===f.srcDir&&f.rootFile)return{kind:"resolved",target:f.rootFile};let h=m.includes("/")?G.dirname(m):"",_=m.slice(m.lastIndexOf("/")+1),y=_?r(h,_):void 0;return y&&y!==e?{kind:"resolved",target:y}:{kind:"external"}}function*$v(e,t){for(let n=e;;n=n.includes("/")?G.dirname(n):""){let r=t.get(n);if(r!==void 0){let o=n?e.slice(n.length+1):e;o.includes(".")||(yield{rank:r,pkg:o.replace(/\//g,".")})}if(!n)return}}function Sh(e,t=[]){let n={types:new Map,packages:new Map,scalaPkg:new Map};Fv(n,e);let r=t.filter(s=>Qd.has(s.ext)&&s.pkg).sort((s,a)=>T(s.rel,a.rel)),o=(s,a,l)=>{s.has(a)||s.set(a,l)};for(let s of r){bh.has(s.ext)&&n.scalaPkg.set(s.rel,s.pkg),o(n.packages,s.pkg,s.rel);for(let a of s.symbols)!a.parent&&a.kind!=="package"&&o(n.types,s.pkg+"."+a.name,s.rel)}for(let s of r){let a=s.rel.slice(s.rel.lastIndexOf("/")+1,s.rel.length-s.ext.length);/^\w+$/.test(a)&&(o(n.types,s.pkg+"."+a,s.rel),_h.has(s.ext)&&o(n.types,s.pkg+"."+a+"Kt",s.rel))}return n}function Fv(e,t){let n=new Map(t.javaRoots.map((c,d)=>[c,d]));if(!n.size)return;let{types:r,packages:o}=e,s=new Map,a=new Map,l=(c,d,u,f,m)=>{f>=(d.get(u)??1/0)||(d.set(u,f),c.set(u,m))};for(let[c,d]of t.filesByDir){let u=d.filter(m=>m.endsWith(".java"));if(!u.length)continue;let f=u.reduce((m,p)=>p=Math.min(2,n.length);r--){let o=e.types.get(r===n.length?n.join("."):n.slice(0,r).join("."));if(o)return o}}function Ov(e,t,n){let r=n.jvm??=Sh(n),o=mh(r,t),s=o?void 0:r.scalaPkg.get(e);for(let a=s;a&&!o;a=a.includes(".")?a.slice(0,a.lastIndexOf(".")):void 0)o=mh(r,a+"."+t);return o?{kind:"resolved",target:o}:{kind:"external"}}function Lv(e,t,n){let r=e.includes("/")?G.dirname(e):"",o=Ht(n,[G.join(r,t),...n.cIncludeRoots.map(s=>G.join(s,t))]);return o?{kind:"resolved",target:o}:Nv.has(t)||Pv.test(t)?{kind:"external"}:{kind:"dangling",reason:"missing-include"}}function Dv(e,t,n){if(t.startsWith(".")){let r=e.includes("/")?G.dirname(e):"",o=Ie(G.join(r,t)),s=Ht(n,[o+".rb",G.join(o,"index.rb")]);return s?{kind:"resolved",target:s}:{kind:"dangling",reason:"missing-module"}}for(let r of n.rubyLibRoots){let o=Ht(n,[G.join(r,t+".rb")]);if(o)return{kind:"resolved",target:o}}return{kind:"external"}}function jv(e,t,n){if(t.startsWith(".")){let o=e.includes("/")?G.dirname(e):"",s=Ie(G.join(o,t)),a=Ht(n,[s,s+".php"]);return a?{kind:"resolved",target:a}:{kind:"dangling",reason:"missing-module"}}let r=t.replace(/^\\+/,"");for(let{prefix:o,dir:s}of n.phpPsr4){if(o&&r!==o&&!r.startsWith(o+"\\"))continue;let a=o?r.slice(o.length).replace(/^\\+/,""):r,l=Ht(n,[G.join(s,a.replace(/\\/g,"/"))+".php"]);if(l)return{kind:"resolved",target:l}}return{kind:"external"}}function Wv(e,t){let n=t.csharpNamespaces.get(e);if(n?.length)return{kind:"resolved",target:n[0]};let r=(t.csharpPrefix??=Bv(t.csharpNamespaces)).get(e);return r?{kind:"resolved",target:r}:{kind:"external"}}function Bv(e){let t=new Map;for(let[n,r]of e){let o=r[0];if(o!==void 0)for(let s=n.indexOf(".");;s=n.indexOf(".",s+1)){let a=s===-1?n:n.slice(0,s),l=t.get(a);if((l===void 0||T(o,l)<0)&&t.set(a,o),s===-1)break}}return t}function Uv(e,t,n){let r,o=/^package:([^/]+)\/(.+)$/.exec(t);if(o){let s=n.dartPackages?.get(o[1]);if(s===void 0)return{kind:"external"};r=Ie(G.join(s,"lib",o[2]))}else{if(/^[a-z][\w+.-]*:/i.test(t)||t.startsWith("/"))return{kind:"external"};r=Ie(G.join(e.includes("/")?G.dirname(e):"",t))}return r.startsWith("..")?{kind:"dangling",reason:"escapes-repo-root"}:n.fileSet.has(r)?{kind:"resolved",target:r}:/\.[\w-]+\.dart$/.test(r.slice(r.lastIndexOf("/")+1))?{kind:"external"}:{kind:"dangling",reason:"missing-module"}}function Hv(e,t,n){let r=t.replace(/\./g,"/"),o=e.includes("/")?G.dirname(e):"",s=n.luaRoots??[""],a=s.filter(c=>!c||o===c||o.startsWith(c+"/")).reverse(),l=[...a,o,...s.filter(c=>!a.includes(c))];for(let c of l){let d=Ht(n,[G.join(c,r+".lua"),G.join(c,r,"init.lua")]);if(d)return{kind:"resolved",target:d}}return{kind:"external"}}function zv(e,t,n){let r=e.includes("/")?G.dirname(e):"",o=Ht(n,[G.join(r,t),t]);return o?{kind:"resolved",target:o}:{kind:"external"}}function kh(e){return ph.has(e)||gh.has(e)||hh.has(e)||yh.has(e)||Qd.has(e)||wh.has(e)||Gv.has(e)}function at(e,t,n,r){if(ph.has(t)||gh.has(t)){let o=n.lastIndexOf(".");if(o!==-1&&gv.has(n.slice(o).toLowerCase().replace(/[?#].*$/,"")))return{kind:"external"};let a=(e.includes("/")?G.dirname(e):"")+"\0"+n,l=r.jsMemo??=new Map,c=l.get(a);return c||l.set(a,c=Cv(e,n,r)),{...c}}if(hh.has(t)){let s=(e.includes("/")?G.dirname(e):"")+"\0"+n,a=r.pyMemo??=new Map,l=a.get(s);return l||a.set(s,l=Av(e,n,r)),{...l}}if(t===".go")return Iv(e,n,r);if(t===".rs")return Tv(e,n,r);if(t===".java"||Qd.has(t))return Ov(e,n,r);if(yh.has(t))return Lv(e,n,r);if(t===".rb"||t===".rake")return Dv(e,n,r);if(t===".php")return jv(e,n,r);if(t===".cs")return Wv(n,r);if(t===".dart")return Uv(e,n,r);if(t===".lua")return Hv(e,n,r);if(wh.has(t))return zv(e,n,r);if(t===".ex"||t===".exs"){let o=r.elixirModules?.get(n);return o?{kind:"resolved",target:o}:{kind:"external"}}return{kind:"external"}}var gv,hv,yv,ph,gh,hh,yh,_h,bh,Qd,wh,_v,za,Yd,Sv,Nv,Pv,Gv,Cn=H(()=>{"use strict";I();ve();pe();pe();Xe();ce();gv=new Set([".svg",".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico",".icns",".pdf",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".wav",".flac",".ogg",".map"]),hv=["",".ts",".tsx",".d.ts",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".svelte",".astro",".html",".htm"],yv=["index.ts","index.tsx","index.js","index.jsx","index.mjs","index.cjs"],ph=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]),gh=new Set([".vue",".svelte",".astro",".html",".htm"]),hh=new Set([".py",".pyi"]),yh=new Set([".c",".h",".cc",".cpp",".cxx",".hpp",".hh"]),_h=new Set([".kt",".kts"]),bh=new Set([".scala",".sc"]),Qd=new Set([..._h,...bh]),wh=new Set([".sh",".bash",".zsh",".ksh",".fish"]),_v=new Set(["dist","build","lib","out","output","esm","cjs","umd"]);za="${configDir}";Yd=["source","ts","import","module","require","node","default"],Sv=8;Nv=new Set(["assert.h","complex.h","ctype.h","errno.h","fenv.h","float.h","inttypes.h","iso646.h","limits.h","locale.h","math.h","setjmp.h","signal.h","stdalign.h","stdarg.h","stdatomic.h","stdbool.h","stddef.h","stdint.h","stdio.h","stdlib.h","stdnoreturn.h","string.h","tgmath.h","threads.h","time.h","uchar.h","wchar.h","wctype.h","unistd.h","fcntl.h","pthread.h","dirent.h","dlfcn.h","poll.h","sched.h","semaphore.h","strings.h","termios.h","glob.h","regex.h","syslog.h","netdb.h","pwd.h","grp.h","libgen.h","fnmatch.h","spawn.h","utime.h","windows.h"]),Pv=/^(?:sys|arpa|netinet|net)\//;Gv=new Set([".go",".rs",".java",".rb",".rake",".php",".cs",".dart",".lua",".ex",".exs"])});function Va(e){return Kv.test(e.split("/").pop())}function Xv(e){return e.includes("/")?G.dirname(e):qa}function Es(e){return e===qa?0:Vv.test(e)||Jv.test(e)?2:qv.test(e)?0:null}function Zv(e,t){let n=Es(e);return n!==null?n:t.every(r=>r.kind==="doc"||r.kind==="config"||Va(r.rel))?2:1}function Yv(e,t){let n=t.find(a=>/^(readme|index)\.(md|mdx)$/i.test(a.rel.split("/").pop()));if(n?.summary)return n.summary;if(n?.title)return n.title;let r=t.filter(a=>a.summary).sort((a,l)=>(l.summary?.length??0)-(a.summary?.length??0));if(r[0]?.summary)return r[0].summary;let o=[...new Set(t.map(a=>a.lang))].filter(a=>a!=="other"),s=e===qa?"the repository root":`\`${e}/\``;return`${t.length} file(s) in ${s}${o.length?` (${o.slice(0,3).join(", ")})`:""}.`}function tu(e){let t=new Map;for(let c of e.files){let d=Xv(c.rel),u=t.get(d);u||t.set(d,u=[]),u.push(c)}let n=[...t.keys()].sort(T),r=new Map,o=new Map;for(let c of n){let d=c===qa?"root":ti(c);r.set(c,d),o.set(d,(o.get(d)??0)+1)}let s=c=>{let d=r.get(c);return d&&o.get(d)===1?d:`${d||"module"}-${Re(c).slice(0,8)}`},a=[],l=new Map;for(let c of n){let d=t.get(c).slice().sort((m,p)=>T(m.rel,p.rel)),u=s(c),f={slug:u,path:c,title:c,tier:Zv(c,d),members:d.map(m=>m.rel),summary:Yv(c,d)};a.push(f);for(let m of d)l.set(m.rel,u)}return a.sort((c,d)=>T(c.slug,d.slug)),{modules:a,moduleOf:l}}var qa,qv,Vv,Jv,Kv,vs=H(()=>{"use strict";I();pe();Qe();bt();ce();qa="(root)",qv=/(^|\/)(types?|util|utils|lib|libs|common|core|config|configs|constants|shared|helpers|internal)$/i,Vv=/(^|\/)(tests?|__tests?__|__mocks?__|__snapshots?__|spec|specs|e2e|examples?|example|benchmark|benchmarks|fixtures?|docs?|documentation|\.github)(\/|$)/i,Jv=/(^|\/)(scripts?|bin|\.storybook)$/i,Kv=/\.(test|spec|e2e|stories|story)\.[cm]?[jt]sx?$/i});function nu(e){let t=Fr(e),n=new Map;if(!t.size)return n;let r=(s,a)=>{let l=n.get(s);l||n.set(s,l=new Set),l.add(a)},o=Ka(e);for(let s of e.files)if(s.kind==="code"&&s.idents)for(let a of s.idents){let l=t.get(a);l&&l!==s.rel&&r(a,s.rel)}else if(s.kind==="doc"){let a=o.get(s.rel);if(!a||!a.retained)continue;for(let l of a.counts.keys()){let c=t.get(l);c&&c!==s.rel&&r(l,s.rel)}}return n}function ru(e,t=new Map,n=5){let r=new Map;for(let a of e.files)for(let l of a.symbols){let c=r.get(l.name);c||r.set(l.name,c=[]),c.push({file:l.file,line:l.line,...l.endLine!==void 0?{endLine:l.endLine}:{},kind:l.kind,exported:l.exported,lang:l.lang,...l.parent?{parent:l.parent}:{}})}let o=Object.create(null);for(let a of[...r.keys()].sort(T))o[a]=r.get(a).slice().sort((l,c)=>T(l.file,c.file)||l.line-c.line||T(l.kind,c.kind));let s=Object.create(null);for(let a of[...t.keys()].sort(T)){let l=[...t.get(a)].sort(T);l.length&&(s[a]=l)}return{schemaVersion:n,defs:o,refs:s}}function Ja(e){return JSON.stringify(e,null,2)+` -`}var Wi=H(()=>{"use strict";I();ht();ce();mt()});function An(e){let t=[{name:e}],n=e.lastIndexOf("#");n>0&&n0&&r0&&n{"use strict";I()});function vh(e){let t=new Map;for(let n of e.files)for(let r of n.symbols)e0.has(r.kind)&&Hi(t,r.name,{name:r.name,file:r.file,kind:r.kind,lang:r.lang,line:r.line});return t}function rr(e,t,n){return Rh(e,t,n).map(r=>r.rel)}function Rh(e,t,n){let r=vh(e),o=ou(e,t,n),s=[];for(let a of e.files){if(!a.relations?.length)continue;let l=Ne(a.lang),c=o.aliases(a);for(let d of a.relations){let u=c.names.get(d.to),f=u?.name??d.to,m=r.get(f)?.get(l);if(!m)continue;let p;if(u){if(!u.files)continue;p=Nr(a.rel,o.within(m,u.files,f))}else{let g=o.reached(m,a,f),h=m.byFile.get(a.rel);h&&g.push(h),p=Nr(a.rel,g.length?g:m.list)}p&&s.push({written:d.to,rel:{kind:Qv.has(p.kind)?"implements":d.kind,from:d.from,fromFile:a.rel,fromLine:d.line,to:p.name,toFile:p.file,toKind:p.kind}})}}return s.sort((a,l)=>T(a.rel.fromFile,l.rel.fromFile)||T(a.rel.from,l.rel.from)||T(a.rel.kind,l.rel.kind)||T(a.rel.to,l.rel.to))}function su(e,t,n){let r=new Map;for(let o of rr(e,t,n)){if(o.toFile===o.fromFile)continue;let s=`${o.fromFile}${Be}${o.toFile}${Be}${o.kind}`,a=r.get(s);a?a.weight=Math.min(a.weight+1,5):r.set(s,{from:o.fromFile,to:o.toFile,kind:o.kind,weight:1})}return[...r.values()].sort((o,s)=>T(o.from,s.from)||T(o.to,s.to)||T(o.kind,s.kind))}function iu(e,t){let n=vh(e),r=Rh(e,t),o=r.map(m=>m.rel),s=new Map,a=(m,p)=>`${m}${Be}${p}`;for(let m of n.values())for(let p of[...m.values()].flatMap(g=>g.list))s.set(a(p.name,p.file),{name:p.name,file:p.file,line:p.line,kind:p.kind,extends:[],implements:[],extendedBy:[],implementedBy:[],unresolved:[]});let l=m=>({name:m.name,file:m.file,line:m.line,kind:m.kind});for(let m of o){let p=s.get(a(m.from,m.fromFile)),g=s.get(a(m.to,m.toFile));g&&(p?((m.kind==="extends"?p.extends:p.implements).push(l(g)),(m.kind==="extends"?g.extendedBy:g.implementedBy).push(l(p))):(m.kind==="extends"?g.extendedBy:g.implementedBy).push({name:m.from,file:m.fromFile,line:m.fromLine,kind:"unknown"}))}for(let m of Bi(e)){let p=s.get(a(m.from,m.fromFile)),g=s.get(a(m.to,m.toFile));if(!p||!g)continue;let h=_=>m.structural?{..._,structural:!0}:_;p.implements.push(h(l(g))),g.implementedBy.push(h(l(p)))}let c=new Set(r.map(({rel:m,written:p})=>`${m.fromFile}${Be}${m.from}${Be}${m.kind}${Be}${p}`));for(let m of e.files)for(let p of m.relations??[]){if(c.has(`${m.rel}${Be}${p.from}${Be}${p.kind}${Be}${p.to}`))continue;let g=p.kind==="extends"?"implements":"extends";c.has(`${m.rel}${Be}${p.from}${Be}${g}${Be}${p.to}`)||s.get(a(p.from,m.rel))?.unresolved.push({kind:p.kind,to:p.to})}let d=(m,p)=>T(m.name,p.name)||T(m.file,p.file),u=new Map,f=[...s.keys()].sort(T);for(let m of f){let p=s.get(m);p.extends.sort(d),p.implements.sort(d),p.extendedBy.sort(d),p.implementedBy.sort(d),p.unresolved.sort((g,h)=>T(g.kind,h.kind)||T(g.to,h.to)),u.has(p.name)?u.set(`${p.name}@${p.file}`,p):u.set(p.name,p)}return u}function n0(e,t){let n=e.indexOf(`${t}(`);if(n===-1)return;let r=0,o=0,s=!0;for(let a=n+t.length;a=1&&!/\s/.test(l)&&(s=!1)}}function Bi(e){let t=h=>h.includes("/")?h.slice(0,h.lastIndexOf("/")):"",n=new Map,r=new Map,o=new Map,s=new Map,a=[],l=e.files.filter(h=>h.lang==="go"&&!h.rel.endsWith("_test.go"));for(let h of l){let _=t(h.rel);for(let y of h.symbols)if(y.kind==="type"&&!y.parent){let b=`${_}${Be}${y.name}`;n.has(b)||n.set(b,y);let w=r.get(y.name)??[];w.push(y),r.set(y.name,w)}else if(y.kind==="method"&&y.parent){let b=`${_}${Be}${y.parent}`,w=o.get(b);w||o.set(b,w=new Map),w.set(y.name,y.signature?n0(y.signature,y.name):void 0);let S=s.get(y.name);S||s.set(y.name,S=new Set),S.add(b)}else if(y.name==="_"&&y.signature){let b=t0.exec(y.signature);b&&a.push({sym:y,iface:b[1],type:b[2]??b[3]??b[4]})}}let c=[];for(let h of l)for(let _ of h.relations??[])_.kind==="extends"&&/^\w+$/.test(_.to)&&c.push([`${t(h.rel)}${Be}${_.from}`,`${t(h.rel)}${Be}${_.to}`]);c.sort((h,_)=>T(h[0],_[0])||T(h[1],_[1]));for(let h=0;h<3;h++)for(let[_,y]of c){let b=o.get(y);if(!b)continue;let w=o.get(_);w||o.set(_,w=new Map);for(let[S,k]of b)w.has(S)||(w.set(S,k),s.get(S).add(_))}let d=h=>!!h.signature?.startsWith(h.name)&&/^(\[[^\]]*\])?\s+interface\b/.test(h.signature.slice(h.name.length)),u=new Map,f=(h,_,y)=>{let b=u.get(h);if(b!==void 0)return b??void 0;if(y.has(h))return;y.add(h);let w=new Map(o.get(h)??[]),S=!0,k=ie(j(e.root,_.file)).split(` -`).slice(_.line,(_.endLine??_.line)-1);for(let N of k){let A=N.replace(/\/\/.*$/,"").trim();if(/[~|]/.test(A)&&!A.includes("(")&&(S=!1),!/^[\w.]+$/.test(A))continue;let $=A.lastIndexOf(".")===-1?n.get(`${t(_.file)}${Be}${A}`):void 0,E=$&&d($)?f(`${t($.file)}${Be}${$.name}`,$,y):void 0;if(!E)S=!1;else for(let[x,v]of E)w.set(x,v)}let M=S&&w.size?w:void 0;return u.set(h,M??null),M},m=new Map,p=(h,_,y)=>{let b=`${h.file}${Be}${h.name}${Be}${_.file}${Be}${_.name}`,w=m.get(b);if(w){y||delete w.structural;return}m.set(b,{from:h.name,fromFile:h.file,to:_.name,toFile:_.file,...y?{structural:!0}:{}})};for(let[h,_]of[...n].sort((y,b)=>T(y[0],b[0]))){if(!d(_))continue;let y=f(h,_,new Set);if(!y)continue;let b=[...y.keys()].sort(T),w=b.some(k=>!/^[A-Z]/.test(k)),S=b.reduce((k,M)=>(s.get(M)?.size??0)<(s.get(k)?.size??0)?M:k);for(let k of[...s.get(S)??[]].sort(T)){if(k===h)continue;let M=n.get(k);if(!M||d(M)||w&&t(M.file)!==t(_.file))continue;let N=o.get(k);b.every(R=>{if(!N.has(R))return!1;let $=N.get(R),E=y.get(R);return $===void 0||E===void 0||$===E})&&p(M,_,!0)}}let g=(h,_)=>{let y=h.slice(h.lastIndexOf(".")+1);if(!h.includes(".")){let w=n.get(`${_}${Be}${y}`);if(w)return w}let b=(r.get(y)??[]).slice().sort((w,S)=>T(w.file,S.file));return b.length===1?b[0]:void 0};for(let h of a){let _=t(h.sym.file),y=g(h.iface,_),b=g(h.type,_);y&&b&&d(y)&&!d(b)&&p(b,y,!1)}return[...m.values()].sort((h,_)=>T(h.fromFile,_.fromFile)||T(h.from,_.from)||T(h.toFile,_.toFile)||T(h.to,_.to))}function Ui(e,t,n){let r=sr(e,t,n);if(!r)return[];let o=new Set([`${r.name}${Be}${r.file}`]),s=[],a=[r];for(;a.length;){let l=[];for(let c of a)for(let d of[...c.implementedBy,...c.extendedBy]){let u=`${d.name}${Be}${d.file}`;if(o.has(u))continue;o.add(u),s.push(d);let f=Mh(e,d.name,d.file);f&&l.push(f)}a=l}return s.sort((l,c)=>T(l.name,c.name)||T(l.file,c.file))}function sr(e,t,n){let r=e.get(t);if(r)return r;for(let o of An(t).slice(1))if(o.parent===void 0){for(let s of e.values())if(Rs(o,s))return s}for(let o of n??[]){let s=Mh(e,o.name,o.file);if(s)return s}}function Mh(e,t,n){let r=e.get(t);return r?.file===n?r:e.get(`${t}@${n}`)}var Be,Qv,e0,t0,In=H(()=>{"use strict";I();pe();ir();Ms();ce();Or();Xe();Be="\0",Qv=new Set(["interface","trait","protocol"]),e0=new Set(["class","interface","trait","struct","type","enum","record","object","protocol","module","mod","union","annotation"]);t0=/^_\s+([\w.]+)\s*=\s*(?:\(\s*\*\s*([\w.]+)\s*\)\s*\(\s*nil\s*\)|&?([\w.]+)\s*\{|new\(\s*([\w.]+)\s*\))/});function Pr(e,t,n,r,o){let s=[...new Set(e)].sort(T),a=s.filter(b=>t.has(b));if(a.length)return{hops:0,paths:a.slice(0,o).map(b=>[{node:b}]),pathCount:a.length};let l=new Map(s.map(b=>[b,0])),c=new Map,d=[s],u;for(let b=1;b<=r&&!u;b++){let w=[];for(let k of d[b-1])for(let[M,N]of n(k)){let A=l.get(M);if(A===void 0)l.set(M,b),c.set(M,new Map),w.push(M);else if(A!==b)continue;let R=c.get(M);R.has(k)||R.set(k,N)}if(!w.length)break;w.sort(T),d.push(w);let S=w.filter(k=>t.has(k));S.length&&(u=S)}if(!u)return{hops:null,paths:[],pathCount:0};let f=d.length-1,m=new Set(u),p=[...u];for(;p.length;)for(let b of c.get(p.pop())?.keys()??[])m.has(b)||(m.add(b),p.push(b));let g=new Map,h=new Map;for(let b of s)m.has(b)&&g.set(b,1);for(let b=1;b<=f;b++)for(let w of d[b]){if(!m.has(w))continue;let S=0;for(let[k,M]of c.get(w)){S+=g.get(k)??0;let N=h.get(k);N?N.push([w,M]):h.set(k,[[w,M]])}g.set(w,S)}let _=[],y=b=>{if(_.length>=o)return;let w=b[b.length-1].node;if(b.length===f+1){_.push(b.slice());return}for(let[S,k]of h.get(w)??[])if(b.push({node:S,via:k}),y(b),b.pop(),_.length>=o)return};for(let b of s)m.has(b)&&y([{node:b}]);return{hops:f,paths:_,pathCount:u.reduce((b,w)=>b+(g.get(w)??0),0)}}var au=H(()=>{"use strict";I();ce()});function pt(e){return e.parent?`${e.file}#${e.parent}/${e.name}`:`${e.file}#${e.name}`}function s0(e){return{id:pt(e),name:e.name,kind:e.kind,file:e.file,line:e.line,...e.endLine!==void 0?{endLine:e.endLine}:{},exported:e.exported,...e.doc?{doc:e.doc}:{},...e.signature?{signature:e.signature}:{}}}function uu(e,t){let n=new Map,r=new Map;for(let p of e.files){let g=[];for(let h of p.symbols)r0.has(h.kind)||(g.push(h),n.set(pt(h),s0(h)));r.set(p.rel,g)}let o=new Map,s=(p,g,h)=>{if(p===g)return;let _=`${p}${Lr}${g}${Lr}${h}`,y=o.get(_);y?y.weight+=1:o.set(_,{from:p,to:g,kind:h,weight:1})},a=ar(e,t);for(let p of e.files){let g=a.forFile(p);if(!g)continue;let h=r.get(p.rel)??[];for(let _ of p.calls){let y=Tn(h,_.line);if(!y)continue;let b=g(_,y);b&&s(pt(y),pt(b.def),"calls")}}let l=new Map;for(let p of n.values()){let g=`${p.name} ${p.file}`;(!l.has(g)||p.id===`${p.file}#${p.name}`)&&l.set(g,p.id)}let c=rr(e,t);for(let p of Bi(e))c.push({...p,kind:"implements"});for(let p of c){let g=l.get(`${p.from} ${p.fromFile}`),h=l.get(`${p.to} ${p.toFile}`);g&&h&&s(g,h,p.kind)}for(let{sub:p,sup:g}of fu(e,c))s(pt(p),pt(g),"overrides");let d=[...o.values()].sort((p,g)=>T(p.from,g.from)||T(p.kind,g.kind)||T(p.to,g.to)),u=new Map,f=new Map;for(let p of d)(u.get(p.from)??u.set(p.from,[]).get(p.from)).push(p),(f.get(p.to)??f.set(p.to,[]).get(p.to)).push(p);let m=new Map;for(let p of[...n.keys()].sort(T)){let g=n.get(p);(m.get(g.name)??m.set(g.name,[]).get(g.name)).push(p)}return{nodes:n,edges:d,out:u,in:f,byName:m}}function fu(e,t){let n=new Map(e.files.map(d=>[d.rel,d.lang])),r=d=>d.includes("/")?d.slice(0,d.lastIndexOf("/")):"",o=(d,u)=>Ne(n.get(u)??"")==="go"?`go${Lr}${r(u)}${Lr}${d}`:`${u}${Lr}${d}`,s=new Map;for(let d of e.files)for(let u of d.symbols){if(!u.parent||!i0.has(u.kind))continue;let f=o(u.parent,u.file),m=s.get(f);m||s.set(f,m=new Map),m.has(u.name)||m.set(u.name,u)}let a=new Map;for(let d of t){let u=o(d.from,d.fromFile),f=a.get(u)??[],m=o(d.to,d.toFile);m!==u&&!f.includes(m)&&f.push(m),a.set(u,f)}for(let d of a.values())d.sort(T);let l=(d,u,f,m)=>{for(let p of a.get(d)??[]){if(f.has(p))continue;f.add(p);let g=s.get(p)?.get(u);g?m.push(g):l(p,u,f,m)}},c=[];for(let d of[...a.keys()].sort(T)){let u=s.get(d);if(u)for(let f of[...u.keys()].sort(T)){let m=[];l(d,f,new Set([d]),m);for(let p of m)c.push({sub:u.get(f),sup:p})}}return c.sort((d,u)=>T(pt(d.sub),pt(u.sub))||T(pt(d.sup),pt(u.sup)))}function du(e,t){if(e.nodes.has(t))return[t];for(let n of An(t)){let r=n.parent?.slice(n.parent.lastIndexOf("/")+1),o=(e.byName.get(n.name)??[]).filter(s=>{let a=e.nodes.get(s);return n.file!==void 0&&a.file!==n.file?!1:r===void 0||s===`${a.file}#${r}/${a.name}`});if(o.length)return o}return[]}function zi(e,t,n={}){let r=n.depth??2,o=Math.max(1,Math.min(r,lu)),s=n.direction??"both",a=du(e,t),l=a.map(g=>e.nodes.get(g));if(!l.length)return{root:[],nodes:[],edges:[]};let c=new Map;for(let g of a)c.set(g,0);let d=new Map,u=[...a],f=!1;for(let g=1;g<=o&&u.length;g++){let h=[];for(let _ of u){let y=(S,k)=>{for(let M of S??[]){d.set(`${M.from}${Lr}${M.to}${Lr}${M.kind}`,M);let N=k(M);if(!c.has(N)){if(c.size>=o0){f=!0;continue}c.set(N,g),h.push(N)}}},b=e.out.get(_),w=e.in.get(_);s==="both"?(y(b,S=>S.to),y(w,S=>S.from)):s==="out"?(y(b?.filter(S=>S.kind!=="overrides"),S=>S.to),y(w?.filter(S=>S.kind==="overrides"),S=>S.from)):(y(w?.filter(S=>S.kind!=="overrides"),S=>S.from),y(b?.filter(S=>S.kind==="overrides"),S=>S.to))}u=h}let m=[...c.entries()].map(([g,h])=>({...e.nodes.get(g),depth:h})).sort((g,h)=>g.depth-h.depth||T(g.file,h.file)||T(g.name,h.name)),p=[...d.values()].filter(g=>c.has(g.from)&&c.has(g.to)).sort((g,h)=>T(g.from,h.from)||T(g.kind,h.kind)||T(g.to,h.to));return{root:l,nodes:m,edges:p,...f?{truncated:!0}:{},...r>lu?{depthClamped:lu}:{}}}function Za(e,t,n,r={}){let o=r.depth??a0,s=Math.max(1,Math.min(o,cu)),a=Math.max(1,r.maxPaths??5),l=du(e,t),c=du(e,n),d=l.map(_=>e.nodes.get(_)),u=c.map(_=>e.nodes.get(_)),f=o>cu?{depthClamped:cu}:{};if(!d.length||!u.length)return{from:d,to:u,hops:null,paths:[],pathCount:0,...f};let m=function*(_){for(let y of e.out.get(_)??[])y.kind==="calls"&&(yield[y.to,"calls"]);for(let y of e.in.get(_)??[])y.kind==="overrides"&&(yield[y.from,"dispatch"])},p=Pr(l,new Set(c),m,s,a),g=_=>{let y=e.nodes.get(_.node);return{id:y.id,name:y.name,kind:y.kind,file:y.file,line:y.line,..._.via?{via:_.via}:{}}},h={from:d,to:u,hops:p.hops,paths:p.paths.map(_=>_.map(g)),pathCount:p.pathCount,...p.paths.length{"use strict";I();Ms();or();ir();In();ce();au();Or();Lr="\0",r0=new Set(["reexport","reexport-all","default"]);i0=new Set(["method","function","def","getter","setter","operator"]);lu=5,o0=400;a0=8,cu=16});function l0(e){let t=new Array(e.length*Ya);for(let n=0;nT(u.to,f.to));for(let d of a.values())d.sort((u,f)=>T(u.from,f.from));let c={out:s,inn:a,degree:l,threshold:Th([...l.values()])};return r.views.set(n,c),c}function Th(e){let t=e.slice().sort((o,s)=>o-s),n=t.length,r=n===0?0:t[Math.min(n-1,Math.floor(.99*n))];return Math.max(50,r)}function Gi(e,t,n=1/0,r={}){return hu(gu(e,r),t,n)}function gu(e,t={}){let n=new Map,r=new Map,o=(s,a,l)=>{let c=s.get(a);c?c.push(l):s.set(a,[l])};for(let s of e)s.dangling||!Cs.has(s.kind)||t.skipInferred&&s.confidence==="inferred"||(o(n,s.to,s),t.goPackages&&s.kind==="import"&&s.to.endsWith(".go")&&o(r,Qa(s.to),s));return{dependents:n,packageImports:r,goPackages:t.goPackages===!0}}function hu(e,t,n=1/0){let{dependents:r,packageImports:o,goPackages:s}=e,a=new Map,l=new Set(t),c=[...t];for(let d=1;d<=n&&c.length;d++){let u=[];for(let f of c){let m=r.get(f)??[];s&&pu(f)&&(m=m.concat(o.get(Qa(f))??[]));for(let p of m.slice().sort((g,h)=>T(g.from,h.from)))l.has(p.from)||(l.add(p.from),a.set(p.from,d),u.push(p.from))}c=u}return a}function qi(e,t,n=1/0,r={}){let o=new Map(e.files.map(p=>[p.rel,p.module])),s=e.modules.find(p=>p.slug===t),a=s?void 0:e.files.find(p=>p.rel===t);if(!s&&!a)return;let l=s?s.members:[a.rel],c=r.includeInferred===!0,d=Gi(e.fileEdges,l,n,{skipInferred:!c,goPackages:!0}),u=[...d.entries()].map(([p,g])=>({rel:p,module:o.get(p)??"root",depth:g})).sort((p,g)=>p.depth-g.depth||T(p.rel,g.rel)),f=[...new Set(u.map(p=>p.module).filter(p=>p!==t))].sort(T),m={target:t,scope:s?"module":"file",seeds:l,files:u,modules:f};if(!c){let p=Gi(e.fileEdges,l,n,{goPackages:!0}).size-d.size;p>0&&(m.inferredDependents=p)}return m}function Ah(e){return e.kind==="call"?e.confidence==="inferred"?4:1:e.kind==="import"||e.kind==="extends"||e.kind==="implements"?0:e.kind==="use"?2:3}function Ih(e,t,n,r){let{out:o,inn:s,degree:a,threshold:l}=d0(e,r),c=new Set([t]),d=[],u=[t];for(let f=1;f<=n;f++){let m=new Map,p=(g,h,_)=>{let y=m.get(g);if(!y){if(c.has(g))return;c.add(g),m.set(g,y=[])}y.some(b=>b.direction===h&&b.kind===_.kind)||y.push({node:g,direction:h,kind:_.kind,weight:_.weight,depth:f,confidence:_.confidence})};for(let g of u)if(!(g!==t&&(a.get(g)??0)>=l)){for(let h of o.get(g)??[])p(h.to,"out",h);for(let h of s.get(g)??[])p(h.from,"in",h)}for(let g of m.values())g.sort((h,_)=>Ah(h)-Ah(_)||+(h.direction==="in")-+(_.direction==="in")||T(h.kind,_.kind)),d.push(...g);u=[...m.keys()]}return d}function Vi(e,t,n=1,r){let o=e.modules.find(a=>a.slug===t);if(o)return{target:t,scope:"module",links:Ih(e.moduleEdges,t,n,r),members:o.members};if(e.files.find(a=>a.rel===t))return{target:t,scope:"file",links:Ih(e.fileEdges,t,n,r)}}function el(e,t,n,r={}){let o=new Set(e.files.map(g=>g.rel));if(!o.has(t)||!o.has(n))return;let s=r.depth??u0,a=Math.max(1,Math.min(s,mu)),l=Math.max(1,r.maxPaths??5),c=new Map;for(let g of[...o].sort(T)){if(!pu(g))continue;let h=Qa(g),_=c.get(h);_?_.push(g):c.set(h,[g])}let d=g=>{let h=new Map;for(let y of e.fileEdges){if(y.dangling||!Cs.has(y.kind)||!g&&y.confidence==="inferred")continue;let b=y.kind==="import"&&pu(y.to)&&c.get(Qa(y.to))||[y.to],w=h.get(y.from)??h.set(y.from,[]).get(y.from);for(let S of b)w.push([S,y.kind])}let _=y=>y==="import"?0:y==="extends"||y==="implements"?1:y==="use"?2:3;for(let y of h.values())y.sort((b,w)=>T(b[0],w[0])||_(b[1])-_(w[1]));return y=>h.get(y)??[]},u=r.includeInferred===!0,f=d(u),m=Pr([t],new Set([n]),f,a,l),p={from:t,to:n,hops:m.hops,paths:m.paths.map(g=>g.map(h=>h.via?{file:h.node,via:h.via}:{file:h.node})),pathCount:m.pathCount,...m.paths.lengthmu?{depthClamped:mu}:{}};if(m.hops===null){let g=Pr([n],new Set([t]),f,a,0);if(g.hops!==null&&(p.reverseHops=g.hops),!u){let h=Pr([t],new Set([n]),d(!0),a,0);h.hops!==null&&(p.inferredHops=h.hops)}}return p}var Cs,Ya,Ch,Qa,pu,As,u0,mu,jr=H(()=>{"use strict";I();ce();au();Cs=new Set(["import","use","call","extends","implements"]),Ya=6;Ch=new WeakMap;Qa=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",pu=e=>e.endsWith(".go")&&!e.endsWith("_test.go");As=["import","call","use","extends","implements","doc-link","mention","contains"];u0=8,mu=16});function $t(e){return m0.test(e)||yu(e)}function yu(e){if(Va(e))return!0;let t=e.split("/").pop();return f0.some(n=>n.test(t))}function g0(e){let t=e.lastIndexOf("/"),n=t===-1?"":e.slice(0,t+1),r=e.slice(t+1),o;if(o=/^(.+)\.(?:test|spec)(\.[cm]?[jt]sx?)$/.exec(r)){let s=[n];return/(^|\/)__tests__\/$/.test(n)&&s.push(n.slice(0,-10)),s.flatMap(a=>[o[2],...p0.filter(l=>l!==o[2])].map(l=>a+o[1]+l))}if(o=/^test_(.+)\.py$/.exec(r)??/^(.+)_test\.py$/.exec(r))return[n+o[1]+".py"];if(o=/^(.+)_test\.go$/.exec(r))return[n+o[1]+".go"];if(o=/^(.+)_(?:spec|test)\.rb$/.exec(r))return[n+o[1]+".rb"];if(o=/^(.+?)(?:Tests?|IT)\.(java|kt)$/.exec(r)){let s=n+o[1]+"."+o[2],a=s.replace(/(^|\/)src\/test\//,"$1src/main/");return a===s?[s]:[s,a]}return[]}function Ji(e){let t=new Set,n=new Map,r=new Set,o=new Map;for(let d of e.files)if(n.set(d.rel,d.module),d.fileKind==="code"){if($t(d.rel)){t.add(d.rel);continue}if(r.add(d.rel),d.rel.endsWith(".go")){let u=d.rel.includes("/")?d.rel.slice(0,d.rel.lastIndexOf("/")):"",f=o.get(u);f?f.push(d.rel):o.set(u,[d.rel])}}let s=new Map,a=new Map,l=(d,u)=>{let f=s.get(u);f||s.set(u,f=new Set),f.add(d);let m=n.get(u);if(m!==void 0){let p=a.get(m);p||a.set(m,p=new Set),p.add(d)}};for(let d of e.fileEdges)d.dangling||Cs.has(d.kind)&&(!t.has(d.from)||t.has(d.to)||l(d.from,d.to));for(let d of t){for(let u of g0(d))r.has(u)&&l(d,u);if(d.endsWith("_test.go")){let u=d.includes("/")?d.slice(0,d.lastIndexOf("/")):"";for(let f of o.get(u)??[])l(d,f)}}let c=d=>{let u=new Map;for(let f of[...d.keys()].sort(T))u.set(f,[...d.get(f)].sort(T));return u};return{testFiles:t,testedByFile:c(s),testedByModule:c(a)}}function h0(e,t){let n=e.modules.find(r=>r.slug===t);return n?.testedBy?n.testedBy:Ji(e).testedByModule.get(t)??[]}function y0(e){let t=Ji(e),n=new Map;for(let r of e.files)r.fileKind!=="code"||t.testFiles.has(r.rel)||n.set(r.module,(n.get(r.module)??0)+1);return e.modules.filter(r=>r.tier<=1&&r.symbols>0&&(n.get(r.slug)??0)>0&&!t.testedByModule.has(r.slug))}var f0,m0,p0,lr=H(()=>{"use strict";I();vs();ce();jr();f0=[/^test_.*\.py$/i,/_test\.py$/i,/_test\.go$/,/(Test|Tests|IT)\.java$/,/(Test|Tests)\.kt$/,/_spec\.rb$/,/_test\.rb$/,/Test\.php$/,/(Test|Tests)\.cs$/,/_test\.exs$/],m0=/(^|\/)(tests?|__tests?__|spec|specs|e2e)(\/|$)/i;p0=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"]});function Wr(e,t,n){let r=e.fields[t];for(let o of fn(n))r.tf.set(o,(r.tf.get(o)??0)+1),r.len++,e.all.add(o)}function I0(){let e={};for(let t of tl)e[t]={tf:new Map,len:0};return e}function nl(e){let t=[];for(let n of e.files){let r={file:n.rel,fields:I0(),all:new Set,symbols:[],decls:[],exactNames:new Set,isTest:$t(n.rel),isFixture:A0.test(n.rel)},o=new Set;for(let a of n.symbols){if(a.doc&&Wr(r,"doc",a.doc),v0.has(a.kind)){Wr(r,"body",a.name);continue}Wr(r,"name",a.name),r.exactNames.add(En(a.name).toLowerCase()),o.has(a.name)||(o.add(a.name),r.symbols.push(a.name),r.decls.push({name:a.name,kind:a.kind,line:a.line}))}for(let a of n.rel.split("/"))Wr(r,"path",a);for(let a of n.headings)Wr(r,"heading",a);n.summary&&Wr(r,"summary",n.summary);let s=r.fields.body;for(let a of n.terms??[]){if(!N0.test(a)){Wr(r,"body",a);continue}s.tf.set(a,(s.tf.get(a)??0)+1),s.len++,r.all.add(a)}t.push(r)}return F0(t),t}function F0(e){let t=new Set;for(let r of e)for(let o of r.fields.name.tf.keys())o.length>=_u&&/^[a-z]+$/.test(o)&&t.add(o);let n=new Map;for(let r of e){if(r.isTest||r.isFixture)continue;let o=r.fields.path;for(let s of[...o.tf.keys()]){if(s.length$0||!/^[a-z]+$/.test(s))continue;let a=n.get(s);if(n.has(s)||n.set(s,a=O0(s,t)),!a)continue;let l=o.tf.get(s);for(let c of a)o.tf.set(c,(o.tf.get(c)??0)+l),o.len+=l,r.all.add(c)}}}function O0(e,t){let n=e.length,r=new Array(n+1);r[n]=[];for(let s=n-_u;s>=0;s--)for(let a=s+_u;a<=n;a++){let l=r[a],c=e.slice(s,a);if(!l||!t.has(c))continue;let d=[c,...l],u=r[s];(!u||d.length=2?o:void 0}function P0(e){let t=Nh.get(e);if(t)return t;t={};for(let n of tl){let r=0;for(let o of e)r+=o.fields[n].len;t[n]=r/e.length||1}return Nh.set(e,t),t}function Lh(e){let t=`^^${e}$$`,n=new Set;for(let r=0;r+3<=t.length;r++)n.add(t.slice(r,r+3));return n}function Dh(e){let t=new Set,n=new Map;for(let r of e)for(let o of r.all){if(t.has(o))continue;t.add(o);let s=Xo(o);if(s===o)continue;let a=n.get(s);a||n.set(s,a=[]),a.push(o)}for(let r of n.values())r.sort(T);return n}function jh(e){let t=[],n=new Set;for(let a of e)for(let l of a.all)n.has(l)||(n.add(l),t.push(l));let r=new Uint32Array(t.length),o=new Map;for(let a=0;a=w0&&s.push({term:e.terms[a],dice:l})}return s}function D0(e,t,n={}){return Wh(e,t,n).results}function zt(e,t,n={}){return Wh(e,t,n)}function Ph(e,t,n,r){return{results:[],explain:{query:e,terms:[],droppedStopwords:ni(e,r),unresolvedTerms:[],verdict:t,note:n,bridgedOnlyResults:0,resultCount:0}}}function j0(e,t){let n=ni(t).filter(l=>l.length>=2);if(!n.length)return;let r=new Set(n.map(l=>l.toLowerCase()));if(r.size===1&&!ls(t).length)return l=>r.has(l.toLowerCase());let o=n.filter(l=>/[A-Z]/.test(l));if(!o.length)return;let s=bu(e),a=new Set(o.filter(l=>{let c=l.toLowerCase();return s.some(d=>d.exactNames.has(c)&&d.symbols.includes(l))}));return a.size?l=>a.has(l):void 0}function Wh(e,t,n={}){let r=j0(e,t),o=[],s=new Set;for(let M of ls(t,r))for(let N of fn(M))s.has(N)||(s.add(N),o.push(N));if(!o.length){let M=ni(t,r);return Ph(t,"none",M.length?`Nothing was searched for: every token in this query (${M.join(", ")}) is a stopword or too short to index. Search with the identifiers or domain words you are actually looking for.`:"Nothing was searched for: the query carried no indexable token.",r)}let a=o.some(M=>M0.test(M)),l=bu(e),c=l.length;if(!c)return Ph(t,"none","This index contains no files.",r);let d=P0(l),u=new Uint8Array(c),f=M=>{let N=0;for(let A=0;Am.get(N)===0);if(M.length){let N=Hh(e),A=[];for(let R of M){let $=Xo(R),E=(N.get($)??[]).filter(x=>x!==R);$!==R&&Xo($)===$&&l.some(x=>x.all.has($))&&(E.push($),E.sort(T)),E.length?g.set(R,E.slice(0,Fh).map(x=>({term:x,dice:x0,via:"stem"}))):A.push(R)}if(A.length){let R=Bh(e);for(let $ of A){let E=L0(R,$);E.sort((x,v)=>v.dice-x.dice||T(x.term,v.term)),g.set($,E.slice(0,Fh).map(x=>({...x,via:"trigram"})))}}}}let h=new Map;for(let M of g.values())for(let{term:N}of M)!m.has(N)&&!h.has(N)&&h.set(N,f(N));let _=M=>m.get(M)??h.get(M),y=M=>Math.log(1+(c-M+.5)/(M+.5)),b=n.rank==="graph"?Uh(e):void 0,w=M=>(1+Oh*Math.log1p(M*c))/(1+Oh*Math.LN2),S=[];for(let M=0;M{let L=0;for(let q of tl){let Z=N.fields[q],ae=Z.tf.get(O);if(!ae)continue;$.add(q);let be=k0[q];L+=S0[q]*ae/(1-be+be*Z.len/d[q])}return L};for(let O of o){let L=P(O);if(L>0){R.push(O),E.add(O),N.exactNames.has(O)&&(v=!0),A+=y(m.get(O))*(L/($h+L));continue}for(let q of g.get(O)??[]){let Z=P(q.term);Z&&(A+=y(_(q.term))*(Z/($h+Z))*q.dice,E.add(q.term),x.add(O))}}!R.length&&!x.size||(v&&(A*=E0),a||(N.isFixture?A*=C0:N.isTest&&(A*=R0)),b&&!N.file.endsWith(".go")&&(A*=w(b.get(N.file)??0)),S.push({d:N,score:Number(A.toFixed(4)),matched:R,matchedFields:$,symbolTerms:E,fuzzyHit:x}))}S.sort((M,N)=>N.score-M.score||T(M.d.file,N.d.file));let k=(n.exact?S.filter(M=>M.matched.length):S).slice(0,n.limit??_0).map(W0);return{results:k,explain:B0(t,o,m,g,k,r)}}function W0({d:e,score:t,matched:n,matchedFields:r,symbolTerms:o,fuzzyHit:s}){let l=e.decls.map(d=>{let u=new Set(fn(d.name)),f=0;for(let m of o)u.has(m)&&f++;return{decl:d,hits:f}}).filter(d=>d.hits>0).sort((d,u)=>u.hits-d.hits||T(d.decl.name,u.decl.name)).slice(0,b0).map(d=>d.decl),c={file:e.file,score:t,matchedTerms:n.sort(T),topSymbols:l.map(d=>d.name)};return r.size&&(c.matchedFields=tl.filter(d=>r.has(d))),l.length&&(c.symbolHits=l,c.line=Math.min(...l.map(d=>d.line))),s.size&&(c.fuzzyTerms=[...s].sort(T)),n.length||(c.bridgedOnly=!0),c}function B0(e,t,n,r,o,s){let a=t.map(y=>{let b=n.get(y)??0,w=b===0?r.get(y)??[]:[];return w.length?{term:y,df:b,bridge:{via:w[0].via,to:w.map(S=>S.term),dice:w[0].dice}}:{term:y,df:b}}),l=a.filter(y=>y.df===0&&!y.bridge).map(y=>y.term).sort(T),c=!/\s/.test(e.trim()),d=c?ls(e,s).map(y=>fn(y)[0]).filter(y=>y!==void 0):[],u=!c||!t.length?void 0:d.length>1?{term:e.trim(),df:Math.min(...d.map(y=>n.get(y)??0))}:{term:t[0],df:n.get(t[0])??0},f=o.filter(y=>y.bridgedOnly).length,m=o.length>0&&f===o.length,p=u?.df===0,g=o.length?p||m?"weak":"match":"none",h={query:e,terms:a,droppedStopwords:ni(e,s),unresolvedTerms:l,...u?{wholeIdentifier:u}:{},verdict:g,bridgedOnlyResults:f,resultCount:o.length},_=U0(h,p,m);return _&&(h.note=_),h}function U0(e,t,n){let{verdict:r,wholeIdentifier:o,resultCount:s,terms:a}=e;if(r!=="match"){if(!s){let l=e.unresolvedTerms;return l.length?`No file matches. ${l.length===1?"The term":"The terms"} ${l.join(", ")} ${l.length===1?"appears":"appear"} nowhere in this index.`:"No file matches this query."}if(t&&o){let l=a.filter(m=>m.term!==o.term&&m.df>0).map(m=>m.term).join(", "),c=a.find(m=>m.term===o.term),d=(c?c.bridge?.to:a.find(m=>m.df===0&&m.bridge)?.bridge?.to)??[],u=l?` The ${s} result${s===1?"":"s"} below match only its parts (${l}).`:"",f=d.length?` Closest indexed name${d.length===1?"":"s"}: ${d.join(", ")}.`:"";return`No file in this index defines or mentions "${o.term}".${u}${f} If you expected it here, check you are indexing the right branch or commit.`}if(n)return`Nothing matched verbatim. Every result below came from a near match: ${a.filter(d=>d.bridge).map(d=>`"${d.term}" \u2192 ${d.bridge.to.join(", ")}`).join("; ")}. Re-run with --exact to see only literal matches.`}}var $h,_0,b0,w0,Fh,x0,tl,S0,k0,E0,v0,R0,M0,C0,A0,Oh,T0,$0,_u,N0,Nh,Is=H(()=>{"use strict";I();mt();Qe();lr();ce();$h=1.2,_0=20,b0=5,w0=.6,Fh=3,x0=.9,tl=["name","path","heading","summary","doc","body"],S0={name:3,path:2,heading:1.5,summary:1.5,doc:1.6,body:.7},k0={name:.75,path:.75,heading:.75,summary:.75,doc:.75,body:.4},E0=1.35,v0=new Set(["reexport","reexport-all"]),R0=.65,M0=/^(test|tests|spec|specs|fixture|fixtures|testdata|mock|mocks|stub|stubs)$/,C0=.5,A0=/(^|\/)(testdata|test-data|test_data|fixtures?|__fixtures__|__snapshots__)(\/|$)/i,Oh=.1;T0=7,$0=32,_u=3;N0=/^[a-z0-9]{2,}$/,Nh=new WeakMap});function Br(e,t,n=.85){let r=new Map,o=e.length;if(o===0)return r;let s=new Map(e.map((d,u)=>[d,u])),a=Array.from({length:o},()=>[]),l=new Array(o).fill(0);for(let d of t){if(d.dangling)continue;let u=s.get(d.from),f=s.get(d.to);u===void 0||f===void 0||u===f||(a[u].push([f,d.weight]),l[u]+=d.weight)}let c=new Array(o).fill(1/o);for(let d=0;d<200;d++){let u=0;for(let g=0;gr.set(d,c[u])),r}function zh(e,t){let n=new Map;for(let h of e)n.set(h,0);let r=e.length;if(r<3)return n;let o=new Map(e.map((h,_)=>[h,_])),s=Array.from({length:r},()=>new Set);for(let h of t){if(h.dangling)continue;let _=o.get(h.from),y=o.get(h.to);_===void 0||y===void 0||_===y||(s[_].add(y),s[y].add(_))}let a=s.map(h=>[...h].sort((_,y)=>_-y)),l=new Float64Array(r),c=[],d=[],u=Array.from({length:r},()=>[]),f=new Float64Array(r),m=new Int32Array(r).fill(-1),p=new Float64Array(r);for(let h=0;h=0;_--){let y=c[_];for(let b of u[y])p[b]+=f[b]/f[y]*(1+p[y]);y!==h&&(l[y]+=p[y])}}let g=(r-1)*(r-2)/2;return e.forEach((h,_)=>n.set(h,l[_]/2/g)),n}function wu(e){let t=[],n=e.modules.length;if(n>0){let o=e.modules.map(a=>a.id),s=Br(o,e.moduleEdges);for(let a of e.modules)a.pagerank=Number(((s.get(a.id)??0)*n).toFixed(4));if(n>3e3)t.push(`betweenness skipped (${n} modules > 3000)`);else{let a=zh(o,e.moduleEdges);for(let l of e.modules)l.betweenness=Number((a.get(l.id)??0).toFixed(6))}}let r=e.files.length;if(r>0){let o=e.files.map(a=>a.id),s=Br(o,e.fileEdges);for(let a of e.files)a.pagerank=Number(((s.get(a.id)??0)*r).toFixed(4))}return t}var Ki=H(()=>{"use strict";I()});function G0(e){let t=Gh.get(e);if(!t){let n=["if","for","while",...H0[e]??z0];t=new RegExp(`(?r[0])]);e.block&&n.add("/"),e.backtick&&n.add("`"),t=new RegExp(`[${[...n].map(r=>"\\"+r).join("")}]`,"g"),qh.set(e,t)}return t}function rl(e,t){let n=t&&X0[Ne(t)]||cr,r=e.length,o="",s=0,a=(u,f)=>{o+=e.slice(s,u)+e.slice(u,f).replace(/[^\n]/g," "),s=f},l=(u,f,m,p)=>{for(;ue.startsWith(f,d))){let f=e.indexOf(` -`,d),m=f===-1?r:f;a(d,m),d=m}else if(n.triple&&(e.startsWith('"""',d)||e.startsWith("'''",d))){let f=l(d+3,e.slice(d,d+3),!0,!0);a(d,f),d=f}else if(u==='"'||u==="'"&&!n.charOnly){let f=l(d+1,u,!0,!1);a(d,f),d=f}else if(u==="'"){Vh.lastIndex=d;let f=Vh.exec(e);f&&a(d,d+f[0].length),d+=f?f[0].length:1}else if(u==="`"&&n.backtick){let f=l(d+1,"`",n.backtick==="template",!0);a(d,f),d=f}else d++}return s===0?e:o+e.slice(s)}function Jh(e,t){let n=t?Ne(t):"",r=(e.match(G0(n))??[]).length;return n==="python"&&(r+=(e.match(q0)??[]).length),J0.has(n)&&(r+=(e.match(V0)??[]).length),r}function xu(e,t){return 1+Jh(rl(e,t),t)}function Xi(e,t,n=50){let r=[];for(let o of e.files){if(o.kind!=="code"||t&&o.rel!==t||!o.symbols.length)continue;let s=rl(ie(j(e.root,o.rel)),o.lang).split(` -`),a=o.symbols.filter(l=>l.kind!=="reexport"&&l.kind!=="reexport-all").sort((l,c)=>l.line-c.line||(c.endLine??c.line)-(l.endLine??l.line));a.forEach((l,c)=>{if(K0.has(l.kind))return;let d=l.endLine??l.line,u=s.slice(l.line-1,d);for(let m of Y0(a,c,d))for(let p=m.line;p<=m.endLine;p++)u[p-l.line]="";let f={file:o.rel,name:l.name,line:l.line,complexity:1+Jh(u.join(` -`),o.lang)};l.endLine!==void 0&&(f.endLine=l.endLine),r.push(f)})}return r.sort((o,s)=>s.complexity-o.complexity||T(o.file,s.file)||o.line-s.line),r.slice(0,n)}function Y0(e,t,n){let r=e[t],o=[];for(let s=t+1;sn||(a.line>r.line||a.endLines.kind==="code"&&(t.get(s.rel)??0)>0).map(s=>{let a=r.get(s.rel),l=t.get(s.rel)??0;return{file:s.rel,complexity:a,commits:l,score:(l+1)*a}});return o.sort((s,a)=>a.score-s.score||T(s.file,a.file)),o.slice(0,n)}var H0,z0,Gh,q0,V0,J0,K0,cr,Gt,X0,qh,Vh,Ts=H(()=>{"use strict";I();pe();ir();mt();Xe();ce();H0={js:["else\\s+if","case","catch"],c:["else\\s+if","case"],java:["else\\s+if","case","catch"],csharp:["else\\s+if","foreach","case","catch"],go:["else\\s+if","case"],rust:["else\\s+if","match"],kotlin:["else\\s+if","when","catch"],scala:["else\\s+if","match","case","catch"],swift:["else\\s+if","case","catch","guard"],php:["elseif","else\\s+if","foreach","case","catch"],dart:["else\\s+if","case","catch"],python:["elif","except"],ruby:["elsif","unless","until","when","rescue"],elixir:["unless","case","cond","rescue"],lua:["elseif"],shell:["elif","until","case"],perl:["elsif","unless","until","foreach"]},z0=["elif","elsif","else\\s+if","foreach","until","unless","case","when","match","catch","rescue","except"],Gh=new Map;q0=/^[ \t]*case\b[^\n]*:[ \t]*$/gm,V0=/(?[n.rel,n]))}function sl(e){let t=lt(e);if(!t.symbolsByName){let n=new Map;for(let r of e.files)for(let o of r.symbols){let s=n.get(o.name);s?s.push(o):n.set(o.name,[o])}t.symbolsByName=n}return t.symbolsByName}function an(e){let t=lt(e);return t.resolveCtx??=ji(e)}function Ft(e){let t=lt(e);if(!t.importPairs){let n=an(e),r=new Set;for(let o of e.files)for(let s of o.refs){if(s.kind!=="import")continue;let a=at(o.rel,o.ext,s.spec,n);a.kind==="resolved"&&a.target!==o.rel&&r.add(`${o.rel}|${a.target}`)}t.importPairs=r}return t.importPairs}function Xh(e,t,n){let r=Su.get(e);!r||r.resolveCtx!==t||r.importPairs||(r.importPairs=n)}function Fr(e){let t=lt(e);return t.uniqueDefs??=ku(e)}function il(e){let t=lt(e);return t.symbolRefs??=nu(e)}function Ka(e){let t=lt(e);if(t.docMentions)return t.docMentions;let n=Fr(e),r=new Map;if(n.size)for(let o of e.files){if(o.kind!=="doc")continue;let s=e.docText.get(o.rel),a=s??ie(j(e.root,o.rel));if(!a)continue;let l=new Map;for(let c of a.split(/[^A-Za-z0-9_]+/))n.has(c)&&l.set(c,(l.get(c)??0)+1);r.set(o.rel,{counts:l,retained:s!==void 0})}return t.docMentions=r}function Zh(e){let t=lt(e);if(t.identSets)return t.identSets;let n=new Map;for(let r of e.files)r.kind==="code"&&r.idents?.length&&n.set(r.rel,new Set(r.idents));return t.identSets=n}function $s(e){let t=lt(e);return t.callerIndex??=Ur(e,Ft(e))}function Fs(e){let t=lt(e);return t.hierarchy??=iu(e,Ft(e))}function Os(e){let t=lt(e);return t.symbolGraph??=uu(e,Ft(e))}function bu(e){let t=lt(e);return(t.bm25??={docs:nl(e)}).docs}function Bh(e){let t=lt(e),n=t.bm25??={docs:nl(e)};return n.trigrams??=jh(n.docs)}function Uh(e){let t=lt(e);if(!t.importPagerank){let n=e.files.map(o=>o.rel),r=[];for(let o of Ft(e)){let s=o.indexOf("|");r.push({from:o.slice(0,s),to:o.slice(s+1),kind:"import",weight:1})}t.importPagerank=Br(n,r)}return t.importPagerank}function Hh(e){let t=lt(e),n=t.bm25??={docs:nl(e)};return n.stems??=Dh(n.docs)}function Kh(e){let t=lt(e);if(!t.fileComplexity){let n=new Map;for(let r of e.files)r.kind==="code"&&n.set(r.rel,xu(ie(j(e.root,r.rel)),r.lang));t.fileComplexity=n}return t.fileComplexity}var Su,mt=H(()=>{"use strict";I();pe();Cn();ol();Wi();or();In();Dr();Is();Ki();Ts();Xe();Su=new WeakMap});function al(e,t){let n=e.get(t);if(n)return n;for(let r of An(t).slice(1))for(let o of e.values())if(Rs(r,o.def))return o}function Qh(e,t,n={}){return ty(e,Ft(e),n.recall===!0,new Set(t))}function ey(e){return[...new Set(An(e).map(t=>t.name))]}function Q0(e){return new Set(Ft(e))}function Ur(e,t,n={}){return ty(e,t??Ft(e),n.recall===!0)}function ty(e,t,n,r){let o=ar(e,t,{recall:n,only:r}),s=new Map;for(let c of e.files){let d=o.forFile(c);if(d)for(let u of c.calls){let f=d(u);if(!f)continue;let m=f.def.name+"\0"+f.def.file,p=s.get(m);p?f.def.lineT(f.file,m.file)||f.line-m.line),a.has(d.name)?a.set(`${d.name}@${d.file}`,{def:d,callers:u}):a.set(d.name,{def:d,callers:u})}return a}function eR(e,t,n){let r=e.files.find(o=>o.rel===t);if(r?.symbols.length)return Tn(r.symbols,n)}function Tn(e,t){let n;for(let r of e)Yh.has(r.kind)||r.line>t||r.endLine!==void 0&&t>r.endLine||(!n||r.line>n.line||r.line===n.line&&(r.endLine??1/0)<=(n.endLine??1/0))&&(n=r);return n}function Eu(e){return ny(e)}function ur(e,t){return ny(e,t).get(t)??[]}function ny(e,t){let n=new Map;for(let o of e.files){if(!o.calls?.length)continue;let s;for(let a of o.calls){if(t!==void 0&&a.name!==t)continue;s??=o.symbols.filter(u=>!Yh.has(u.kind));let l={file:o.rel,line:a.line};a.receiver!==void 0&&(l.receiver=a.receiver);let c=Tn(s,a.line);c&&(l.enclosingSymbol=c);let d=n.get(a.name);d||n.set(a.name,d=[]),d.push(l)}}let r=new Map;for(let o of[...n.keys()].sort(T)){let s=n.get(o);s.sort((a,l)=>T(a.file,l.file)||a.line-l.line),r.set(o,s)}return r}var Yh,or=H(()=>{"use strict";I();Ms();mt();ce();Or();Yh=new Set(["reexport","reexport-all","default"])});function sR(e){let t=e.split("/"),n=t.pop()??e;return(/^v\d+$/.test(n)||n==="go")&&t.length&&(n=t.pop()),n.replace(/\.v\d+$/,"").replace(/^go-/,"").replace(/[-.]go$/,"").replace(/\W/g,"")}function iR(e,t){if(!e.includes(t))return;let n=Ru.get(t);n||(n=new RegExp(`(?:^|[(,\\s])${t}\\s*(?::\\s*["']?|\\s+[*&]?)\\s*(?:([A-Za-z_]\\w*)\\.)?(?:[A-Za-z_]\\w*\\.)*([A-Za-z_]\\w*)`),Ru.size<4096&&Ru.set(t,n));let r=n.exec(e);return r?{type:r[2],qualifier:r[1]}:void 0}function oR(e){if(!(!e?.signature||e.kind!=="method"))return/^func\s*\(\s*([A-Za-z_]\w*)\s/.exec(e.signature)?.[1]}function ou(e,t,n){let r=Ns(t),o,s=R=>(o??=new Map(e.files.map($=>[$.rel,$]))).get(R),a=new Map;for(let R of e.files){let $=R.rel.endsWith("/__init__.py")||R.rel==="__init__.py"?{all:!0,names:new Set}:void 0;for(let E of R.symbols)E.kind!=="reexport"&&E.kind!=="reexport-all"||($??={all:!1,names:new Set},E.kind==="reexport-all"?$.all=!0:$.names.add(E.name));$&&a.set(R.rel,$)}let l=new Map,c=(R,$)=>{let E=`${R}\0${$}`,x=l.get(E);if(x)return x;x=new Set;let v=[R];for(let P=0;P{if(!d){d=new Map;for(let E of e.files){let x=Ne(E.lang);if(!iy.has(x)||E.kind!=="code")continue;let v=`${x}\0${yn(E.rel)}`,P=d.get(v);P||d.set(v,P=[]),P.push(E)}}return d.get(`${R}\0${$}`)??[]},f=new Map,m=R=>{let $=Ne(R.lang);if(!iy.has($))return null;let E=f.get(R.rel);if(E!==void 0)return E;let x=yn(R.rel),v=new Set;if($==="go")for(let P of r.get(R.rel)??[])P.endsWith(".go")&&yn(P)!==x&&v.add(yn(P));return f.set(R.rel,E={own:x,test:Yi(R.rel),imported:v}),E},p=new WeakMap,g=(R,$,E,x,v)=>{let P=(L,q)=>{L.file===$.rel||v.has(L.file)||(q===E.own?E.test||!Yi(L.file):E.imported.has(q)&&!Yi(L.file))&&(v.add(L.file),x.push(L))};if(R.list.length<=E.imported.size+1){for(let L of R.list)P(L,yn(L.file));return}let O=p.get(R);if(!O){O=new Map;for(let L of R.list){let q=yn(L.file),Z=O.get(q);Z?Z.push(L):O.set(q,[L])}p.set(R,O)}for(let L of O.get(E.own)??[])P(L,E.own);for(let L of E.imported)for(let q of O.get(L)??[])P(q,L)},h=(R,$,E,x)=>{if($.size{for(let P of $){let O=a.get(P);if(O&&(h(R,c(P,E),x,v),!(O.all||!O.names.size)))for(let L of R.list)L.parent&&!v.has(L.file)&&O.names.has(L.parent)&&c(P,L.parent).has(L.file)&&(v.add(L.file),x.push(L))}},y=(R,$,E)=>{if(!R)return[];let x=m($);if(x&&$.lang==="go"){let L=[];return g(R,$,x,L,new Set),L}let v=r.get($.rel),P=Mu(R,v),O=new Set(P.map(L=>L.file));return O.add($.rel),v&&_(R,v,E,P,O),x&&g(R,$,x,P,O),P},b=(R,$,E)=>{if(!R)return[];let x=[],v=new Set;return h(R,new Set($),x,v),_(R,$,E,x,v),x},w=n,S=ay.get(e),k=()=>(w??=an(e),S?.ctx!==w&&ay.set(e,S={ctx:w,files:new Map}),S.files),M=R=>{let $=s(R);if(!$)return;let E=$.importAliases?.find(P=>P.local==="default"&&P.from===void 0);if(E)return E.name;let x=$.symbols.find(P=>P.kind==="default");if(x)return x.name;let v=R.slice(R.lastIndexOf("/")+1).replace(/\.[^.]+$/,"");return $.symbols.some(P=>P.name===v&&!P.parent)?v:void 0},N=R=>u("go",R).find($=>!Yi($.rel))?.symbols.find($=>$.kind==="package")?.name;return{targets:R=>r.get(R),reached:y,within:b,aliases:R=>{let $=R.lang==="go";if(!R.importAliases?.length&&!($&&R.refs.length))return rR;let E=k(),x=E.get(R.rel);if(x)return x;x={modules:new Map,names:new Map};let v=O=>{let L=at(R.rel,R.ext,O,w);return L.kind==="resolved"&&L.target!==R.rel?L.target:null},P=(O,L)=>{let q=x.modules.get(O);q==null?x.modules.set(O,L):L&&x.modules.set(O,[...new Set([...q,...L])].sort(T))};if($){let O=new Map;for(let L of R.importAliases??[])L.from!==void 0&&O.set(L.from,L.local);for(let L of R.refs){if(L.kind!=="import")continue;let q=v(L.spec),Z=q===null?void 0:yn(q),ae=O.get(L.spec)??(Z!==void 0?N(Z):void 0)??sR(L.spec);P(ae,Z!==void 0?u("go",Z).filter(be=>!Yi(be.rel)).map(be=>be.rel):null)}}else for(let O of R.importAliases??[]){if(O.from===void 0)continue;let L=v(O.from);if(O.name==="*"){P(O.local,L?[L]:null);continue}if(R.lang==="python"){let Z=v(O.from.endsWith(".")?O.from+O.name:`${O.from}.${O.name}`);if(Z&&Z!==L){P(O.local,[Z]);continue}}if(x.names.has(O.local))continue;let q=O.name==="default"?(L?M(L):void 0)??O.local:O.name;x.names.set(O.local,{name:q,files:L?[L]:null})}return E.set(R.rel,x),x}}}function cy(e,t,n){Hi(e.any,t.name,t),Hi(n?e.member:e.free,t.name,t)}function dy(e,t,n,r){if(r!=="member-first")return e[r].get(t)?.get(n);let o=e.member.get(t)?.get(n),s=e.free.get(t)?.get(n);if(!o||!s)return o??s;let a=new Map(o.byFile),l=[...o.list];for(let c of s.list)a.has(c.file)||(a.set(c.file,c),l.push(c));return{list:l,byFile:a}}function ar(e,t,n={}){let r=n.recall===!0,o=n.only,s=ou(e,t,n.ctx),a,l=new Map,c=new Set,d=S=>{let k=l.get(S);if(k)return k;let M=(a??=new Map(e.files.map(R=>[R.rel,R]))).get(S)?.symbols??[],N,A;for(let R of M)if(R.parent!==void 0){if(!A){A=new Map;for(let $ of M)A.has($.name)||A.set($.name,$.kind)}tR.has(A.get(R.parent)??"")&&(N??=new Set).add(R.parent)}return l.set(S,k=N??c),k},u=S=>S.parent!==void 0&&d(S.file).has(S.parent),f=S=>S.parent!==void 0&&!d(S.file).has(S.parent),m=new Map;for(let S of e.files){let k=oy[Ne(S.lang)]!==void 0;for(let M of S.symbols){if(ll.has(M.kind)||!M.exported&&!k||o&&!o.has(M.name))continue;let N=m.get(M.name);N?N.push(M):m.set(M.name,[M])}}let p=new Map,g=S=>{let k=p.get(S);if(k!==void 0)return k;let M=m.get(S);if(k=null,M){k={exported:ly(),hidden:ly()};for(let N of M)N.exported?cy(k.exported,N,f(N)):u(N)||cy(k.hidden,N,f(N))}return p.set(S,k),k},h=(S,k,M)=>{let N=g(S);return N?dy(N.exported,S,k,M):void 0},_=(S,k,M)=>{let N=g(S);return N?dy(N.hidden,S,k,M):void 0},y=new Map,b=S=>{let k=y.get(S);return k===void 0&&y.set(S,k=$t(S)||Es(yn(S)||"(root)")===2),k};return{forFile:S=>{if(!S.calls?.length||o&&!S.calls.some(X=>o.has(X.name)||S.importAliases?.some(Q=>Q.local===X.name)))return;let k=Ne(S.lang),M=!r&&sy.has(k),N=oy[k],A=new Map,R=new Map,$=new Map,E=new Set,x=d(S.rel),v=X=>X.parent!==void 0&&!x.has(X.parent);for(let X of S.symbols)ll.has(X.kind)||(A.has(X.name)||A.set(X.name,X),v(X)?($.has(X.name)||$.set(X.name,X),E.add(X.parent)):R.has(X.name)||R.set(X.name,X));let P,O,L,q=(X,Q)=>{if(!O){O=new Map;for(let J of S.symbols){if(ll.has(J.kind)||!v(J))continue;let K=`${J.parent}\0${J.name}`;O.has(K)||O.set(K,J)}}return O.get(`${X}\0${Q}`)},Z=X=>{if(E.size){if(!L){L=new Map;for(let Q of E){let J=Q.toLowerCase();L.set(J,L.has(J)?null:Q)}}return L.get(X.toLowerCase())}},ae=s.aliases(S),be=(X,Q)=>{let J=s.reached(h(X,k,Q),S,X),K=_(X,k,Q);if(K&&N){let we=new Set(J.map(Y=>Y.file));for(let Y of N==="package"?s.reached(K,S,X):Mu(K,s.targets(S.rel)))N==="package"&&yn(Y.file)!==yn(S.rel)||Y.file!==S.rel&&!we.has(Y.file)&&(we.add(Y.file),J.push(Y))}return J},Se=(X,Q,J)=>{if(Q!==void 0&&X.some(we=>we.parent===Q))return X.filter(we=>we.parent===Q);let K=J?.toLowerCase();return K!==void 0&&X.some(we=>we.parent?.toLowerCase()===K)?X.filter(we=>we.parent?.toLowerCase()===K):X},Me=(X,Q,J,K)=>({shape:X,receiver:Q,selfType:J,typeHint:K,results:new Map}),U=Me("bare"),B=Me("outside"),z=new Map,re=new Map,de=(X,Q)=>{let J=X.receiver;if(J===void 0)return U;let K=z.get(J);if(K)return K;let we=se=>Me("self",J,se,se);if(!vu.has(J)){if(ae.modules.has(J))K=Me("module",J);else if(E.has(J))K=we(J);else if(!sy.has(k)){let se=Z(J);K=se?we(se):Me("foreign",J,void 0,ae.names.get(J)?.name??J)}if(K)return z.set(J,K),K}Q===void 0&&(P??=S.symbols.filter(se=>!ll.has(se.kind)),Q=Tn(P,X.line));let Y=re.get(Q??null);return Y||re.set(Q??null,Y=new Map),K=Y.get(J),K||(K=ke(J,Q,we),Y.set(J,K),K)},ke=(X,Q,J)=>{if(vu.has(X))return J(Q?.parent);if(k==="go"&&oR(Q)===X)return J(Q.parent);let K=Q?.signature?iR(Q.signature,X):void 0;if(K?.qualifier!==void 0&&!r&&ae.modules.get(K.qualifier)===null)return B;if(K!==void 0&&E.has(K.type))return J(K.type);let we=K===void 0?Z(X):void 0;return we?J(we):Me("foreign",X,void 0,K?.type??ae.names.get(X)?.name??X)},rt=(X,Q)=>{let{shape:J,receiver:K,selfType:we,typeHint:Y}=Q;if(J==="outside")return null;let se;if(r?se=A.get(X):J==="bare"?se=M?R.get(X):A.get(X):J==="self"&&(se=we!==void 0?q(we,X):void 0,!se&&K!==void 0&&vu.has(K)&&(se=$.get(X))),se)return o&&!o.has(se.name)?null:{hit:{def:se,corroborated:!0},local:!0};let me,V=X;if(J==="bare"){let Pt=ae.names.get(X);Pt&&({name:V,files:me}=Pt)}else J==="module"&&(me=ae.modules.get(K));if(o&&!o.has(V))return null;let oe=M?J==="bare"||J==="module"?"free":J==="self"||k==="go"?"member":"member-first":"any",Te=oe==="member-first"?"member":oe;if(me!==void 0)if(me===null){if(!r)return null}else{let Pt=s.within(h(V,k,oe),me,V);if(N==="import")for(let Jf of s.within(_(V,k,oe),me,V))Pt.includes(Jf)||Pt.push(Jf);let ei=Nr(S.rel,Pt);if(ei)return{hit:{def:ei,corroborated:!0},local:!1};if(Pt.length||!r&&ry.has(k))return null}let vt=Se(be(V,oe),Y,K);if(vt.length){let Pt=Nr(S.rel,vt);return Pt?{hit:{def:Pt,corroborated:!0},local:!1}:null}let ct=h(V,k,r?"any":Te);if(!ct)return null;let Bn=uy(ct,S.rel);if(!Bn.length)return null;let Qs=[...Bn];if(r){if(k==="js"&&Bn.length!==1)return null}else{if(ry.has(k))return null;let Pt=b(S.rel);Qs=Qs.filter(ei=>!yu(ei.file)&&(Pt||!b(ei.file)))}let cn=Nr(S.rel,Se(Qs,Y,K));return cn?{hit:{def:cn,corroborated:!1},local:!1}:null};return(X,Q)=>{let J=de(X,Q),K=J.results.get(X.name);if(K===void 0&&J.results.set(X.name,K=rt(X.name,J)),!!K&&!(K.local&&K.hit.def.line===X.line))return K.hit}}}}var ll,ry,sy,iy,oy,vu,tR,nR,rR,yn,Yi,Ru,ay,ly,Ms=H(()=>{"use strict";I();Cn();ir();or();mt();vs();lr();ce();ll=new Set(["reexport","reexport-all","default"]),ry=new Set(["js","go"]),sy=new Set(["go","python"]),iy=new Set(["go","java"]),oy={go:"package",java:"package",python:"import"},vu=new Set(["self","cls","this","Self"]),tR=new Set(["function","method","def","constructor","operator"]),nR=3,rR={modules:new Map,names:new Map},yn=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",Yi=e=>e.endsWith("_test.go");Ru=new Map;ay=new WeakMap;ly=()=>({any:new Map,free:new Map,member:new Map})});function Ne(e){return aR.has(e)?"js":e==="c"||e==="cpp"?"c":e}function lR(e,t){let n=Math.min(e.length,t.length),r=0,o=0;for(;or?(r=a,n=s,o=!1):a===r&&(o=!0)}return o?void 0:n}function Hi(e,t,n){let r=e.get(t);r||e.set(t,r=new Map);for(let a of r.values())if(a.byFile.has(n.file))return!1;let o=Ne(n.lang),s=r.get(o);return s||r.set(o,s={list:[],byFile:new Map}),s.list.push(n),s.byFile.set(n.file,n),!0}function Ns(e){let t=new Map;for(let n of e)for(let r=n.indexOf("|");r!==-1;r=n.indexOf("|",r+1)){let o=n.slice(0,r),s=n.slice(r+1);if(o===s)continue;let a=t.get(o);a||t.set(o,a=new Set),a.add(s)}return t}function Mu(e,t){if(!t?.size)return[];if(t.sizet.has(n.file))}function uy(e,t){return e.byFile.has(t)?e.list.filter(n=>n.file!==t):e.list}function Cu(e,t,n){let r=ar(e,t,{ctx:n}),o=new Map;for(let s of e.files){let a=r.forFile(s);if(a)for(let l of s.calls){let c=a(l);if(!c||c.def.file===s.rel)continue;let d=c.corroborated?"extracted":"inferred",u=`${s.rel}|${c.def.file}`,f=o.get(u);f?(f.weight+=1,d==="extracted"&&(f.confidence="extracted")):o.set(u,{from:s.rel,to:c.def.file,weight:1,confidence:d})}}return[...o.values()].map(s=>({from:s.from,to:s.to,kind:"call",weight:Math.min(s.weight,5),confidence:s.confidence})).sort((s,a)=>T(s.from,a.from)||T(s.to,a.to))}var aR,ir=H(()=>{"use strict";I();Ms();ce();aR=new Set(["typescript","javascript","vue","svelte","astro"])});function cR(e){return e.length<5?!1:/[a-z][A-Z]/.test(e)||/[A-Z]{2}/.test(e)||e.includes("_")||/\d/.test(e)}function ku(e){let t=new Map;for(let r of e.files)for(let o of r.symbols){if(!o.exported||dR.has(o.kind)||!cR(o.name))continue;let s=t.get(o.name);s||t.set(o.name,s=new Set),s.add(r.rel)}let n=new Map;for(let[r,o]of t)o.size===1&&n.set(r,[...o][0]);return n}function $n(e,t){let n=fy(t.from,t.to,t.kind),r=e.get(n);if(r){r.weight+=t.weight;return}e.set(n,{...t})}function Iu(e,t,n,r,o){let s=new Map,a=new Set;for(let k of e.files){let M;for(let N of k.refs){if(N.soft){(M??=[]).push(N);continue}if(N.kind==="doc-link"){let A=nr(k.rel,N.spec,t);if(A.kind==="external")continue;A.kind==="dangling"?$n(s,{from:k.rel,to:N.spec,kind:"doc-link",weight:1,dangling:!0,reason:A.reason}):A.target!==k.rel&&$n(s,{from:k.rel,to:A.target,kind:"doc-link",weight:1})}else{let A=at(k.rel,k.ext,N.spec,t);if(A.kind==="external")continue;A.kind==="dangling"?$n(s,{from:k.rel,to:N.spec,kind:"import",weight:1,dangling:!0,reason:A.reason}):A.target!==k.rel&&($n(s,{from:k.rel,to:A.target,kind:"import",weight:1}),a.add(`${k.rel}|${A.target}`))}}for(let N of M??[]){let A=N.kind==="doc-link"?nr(k.rel,N.spec,t):at(k.rel,k.ext,N.spec,t);A.kind!=="resolved"||A.target===k.rel||s.has(fy(k.rel,A.target,N.kind))||($n(s,{from:k.rel,to:A.target,kind:N.kind,weight:1}),N.kind==="import"&&a.add(`${k.rel}|${A.target}`))}}let l=new Set;for(let k of Cu(e,a,t))$n(s,k),l.add(`${k.from}|${k.to}`);for(let k of su(e,a,t))$n(s,k);Xh(e,t,a);let c=Fr(e);if(c.size){let k,M=(A,R)=>{let $=cl(R);for(let E of(k??=Ns(a)).get(A)??[])if(cl(E)===$)return!0;return!1},N=new Map(e.files.map(A=>[A.rel,A.lang]));for(let A of e.files){if(A.kind!=="code"||!A.idents?.length)continue;let R=new Set([...A.importedNames??[],...(A.importAliases??[]).map(v=>v.local)]),$=Ne(A.lang),E=new Map;for(let v of A.idents){let P=c.get(v);!P||P===A.rel||R.has(v)||Ne(N.get(P)??"")===$&&E.set(P,(E.get(P)??0)+1)}let x=A.lang==="go";for(let[v,P]of E){let O=`${A.rel}|${v}`;a.has(O)||l.has(O)||x&&v.endsWith(".go")&&cl(v)!==cl(A.rel)&&!M(A.rel,v)||$n(s,{from:A.rel,to:v,kind:"use",weight:Math.min(P,5)})}}}if(c.size)for(let[k,{counts:M}]of Ka(e))for(let[N,A]of M){let R=c.get(N);R!==k&&$n(s,{from:k,to:R,kind:"mention",weight:Math.min(A,5)})}let d=[...s.values()].sort((k,M)=>T(k.from,M.from)||T(k.to,M.to)||T(k.kind,M.kind)),u=new Map,f=new Map,m=new Set(e.files.map(k=>k.rel));for(let k of d)k.dangling||!m.has(k.to)||(f.set(k.from,(f.get(k.from)??0)+1),u.set(k.to,(u.get(k.to)??0)+1));let p={import:7,extends:6,implements:5,call:4,use:3,"doc-link":2,mention:1,contains:0},g=new Map;for(let k of d){if(k.dangling||!m.has(k.to))continue;let M=r.get(k.from),N=r.get(k.to);if(!M||!N||M===N)continue;let A=`${M}${Au}${N}`,R=g.get(A);R?(R.weight+=k.weight,(p[k.kind]??0)>(p[R.kind]??0)&&(R.kind=k.kind)):g.set(A,{from:M,to:N,kind:k.kind,weight:k.weight})}let h=[...g.values()].sort((k,M)=>T(k.from,M.from)||T(k.to,M.to)),_=new Map,y=new Map;for(let k of h)y.set(k.from,(y.get(k.from)??0)+1),_.set(k.to,(_.get(k.to)??0)+1);let b=e.files.map(k=>({id:k.rel,kind:"file",rel:k.rel,fileKind:k.kind,lang:k.lang,module:r.get(k.rel)??"root",title:k.title,summary:k.summary,symbols:k.symbols.length,lines:k.lines,degIn:u.get(k.rel)??0,degOut:f.get(k.rel)??0,...k.generated?{generated:k.generated}:{}})).sort((k,M)=>T(k.rel,M.rel)),w=new Map;for(let k of e.files){let M=r.get(k.rel)??"root";w.set(M,(w.get(M)??0)+k.symbols.length)}let S=n.map(k=>({id:k.slug,kind:"module",slug:k.slug,path:k.path,title:k.title,summary:k.summary,tier:k.tier,members:k.members,symbols:w.get(k.slug)??0,degIn:_.get(k.slug)??0,degOut:y.get(k.slug)??0})).sort((k,M)=>T(k.slug,M.slug));return{schemaVersion:o?.schemaVersion??5,version:o?.version??$e,commit:e.commit,fileCount:e.files.length,languages:e.languages,files:b,modules:S,fileEdges:d,moduleEdges:h}}var cl,dR,Au,fy,ol=H(()=>{"use strict";I();ht();Cn();ir();In();mt();ce();cl=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";dR=new Set(["reexport","reexport-all","default"]);Au="\0",fy=(e,t,n)=>`${e}${Au}${t}${Au}${n}`});function*uR(e){for(let t of e.files)yield*t.symbols}function Qi(e,t){let n=dr(e).get(t);return n?[...n.symbols].filter(r=>!dl.has(r.kind)).sort((r,o)=>r.line-o.line||T(r.name,o.name)):[]}function ul(e,t,n){let r=dr(e).get(t);if(!r)return;let o=Tn(r.symbols,n);if(!o)return{file:t,line:n,symbol:null,enclosing:[]};let s=Math.max(n,o.endLine??n),a=r.symbols.filter(c=>c!==o&&!dl.has(c.kind)&&c.endLine!==void 0&&c.line<=o.line&&c.endLine>=s).sort((c,d)=>c.line-d.line||d.endLine-c.endLine||T(c.name,d.name)).map(pt),l=pt(o);return{file:t,line:n,symbol:{...o,id:l},enclosing:[...new Set(a)].filter(c=>c!==l),...o.endLine===void 0?{approximate:!0}:{}}}function eo(e,t){let n=dr(e);return{...t,callers:t.callers.map(r=>{let o=Tn(n.get(r.file)?.symbols??[],r.line);return o?{...r,caller:pt(o)}:{...r}})}}function _n(e,t,n={}){let r=t.split("/").filter(Boolean);if(!r.length)return[];let o=r[r.length-1],s=r.slice(0,-1),a=(u,f)=>n.substring?u.toLowerCase().includes(f.toLowerCase()):u===f,l=[],c=n.substring?uR(e):sl(e).get(o)??[];for(let u of c)if(!dl.has(u.kind)&&a(u.name,o)){if(s.length){let f=s[s.length-1];if(!u.parent||u.parent!==f)continue}l.push({...u})}l.sort((u,f)=>+(f.name===o)-+(u.name===o)||T(u.file,f.file)||u.line-f.line);let d=l.slice(0,n.maxResults??50);if(n.includeBody){let u=new Map,f=new Set;for(let m of d){let p=m.endLine??m.line;if(f.has(m.file))continue;let g=u.get(m.file);if(!g){let h=ie(j(e.root,m.file));if(!h){f.add(m.file);continue}g=h.split(` +`||t[a]==="\r");)a++;if(t[a]==="}"||t[a]==="]")continue}r+=s}try{return JSON.parse(r)}catch{return}}function Uv(e,t,n,r){let o=Ie(q.join(t,n)),s=n.endsWith(".json")?[o]:[o+".json",q.join(o,"tsconfig.json")];for(let a of s)if(e.has(a))return a;if(!(n.startsWith(".")||n.startsWith("/")))for(let a of r){let l;if(n===a.name)l=[...a.tsconfig?[a.tsconfig]:[],"tsconfig.json"];else if(n.startsWith(a.name+"/")){let c=n.slice(a.name.length+1);l=c.endsWith(".json")?[c]:[c+".json",q.join(c,"tsconfig.json")]}else continue;for(let c of l){let d=Ie(q.join(a.dir,c));if(!d.startsWith("..")&&e.has(d))return d}return}}function Nh(e,t,n,r,o,s){if(!o.has(n)){o.add(n);try{return zv(e,t,n,r,o,s)}finally{o.delete(n)}}}function zv(e,t,n,r,o,s){let a=Or(se(j(e,n)));if(a===void 0){r.push(`unparseable ${n} \u2014 its path aliases were ignored`);return}let l=n.includes("/")?q.dirname(n):"",c={baseUrlDir:"",pathsDir:""},d=a.extends===void 0?[]:Array.isArray(a.extends)?a.extends:[a.extends];for(let f of d){if(typeof f!="string")continue;let m=Uv(t,l,f,s);if(!m){/^\.\.?\//.test(f)&&r.push(`${n} extends "${f}" which is missing \u2014 its path aliases were ignored`);continue}let p=Nh(e,t,m,r,o,s);p?.baseUrl!==void 0&&(c.baseUrl=p.baseUrl,c.baseUrlDir=p.baseUrlDir),p?.paths&&(c.paths=p.paths,c.pathsDir=p.pathsDir)}let u=a.compilerOptions;return typeof u?.baseUrl=="string"&&(c.baseUrl=u.baseUrl,c.baseUrlDir=l),u?.paths&&(c.paths=u.paths,c.pathsDir=l),c}function vh(e){let t=au.indexOf(e);return t!==-1?t:e==="types"?au.length+1:au.length}function Ja(e,t){if(!(t.length>=Hv)){if(typeof e=="string")t.includes(e)||t.push(e);else if(Array.isArray(e))for(let n of e)Ja(n,t);else if(e!==null&&typeof e=="object"){let n=Object.keys(e).sort((r,o)=>vh(r)-vh(o)||(ro?1:0));for(let r of n)Ja(e[r],t)}}}function Gv(e){if(e==null)return[];let t=[],n=(r,o)=>{let s=[];Ja(o,s),s.length&&t.push({key:r,star:r.includes("*"),targets:s})};if(typeof e=="string"||Array.isArray(e))n(".",e);else if(typeof e=="object"){let r=Object.keys(e);if(r.every(o=>o==="."||o.startsWith("./")))for(let o of r)n(o,e[o]);else n(".",e)}return t.sort((r,o)=>Number(r.star)-Number(o.star)||o.key.length-r.key.length||(r.keyNumber(n.star)-Number(r.star)||r.key.length-n.key.length||$(n.key,r.key)),t}function Rh(e,t){for(let n of e){if(!n.star){if(n.key===t)return n.targets;continue}let r=n.key.indexOf("*"),o=n.key.slice(0,r),s=n.key.slice(r+1);if(!t.startsWith(o)||!t.endsWith(s)||t.lengthl.replace(/\*/g,()=>a))}}function Vv(e,t){let n=[],r=o=>{let s=/^\s*([^\s=]+)(?:\s+v\S+)?\s*=>\s*(\S+)(?:\s+v\S+)?\s*$/.exec(o);if(!s)return;let a=s[2];if(!/^\.\.?\//.test(a))return;let l=Ie(q.join(t,a));l.startsWith("..")||n.push({from:s[1],toDir:l})};for(let o of e.matchAll(/^[ \t]*replace[ \t]+([^(\r\n][^\r\n]*)$/gm))r(o[1]);for(let o of e.matchAll(/^[ \t]*replace[ \t]*\(([\s\S]*?)\)/gm))for(let s of o[1].split(/\r?\n/))r(s);return n}function Jv(e,t){let n={dir:t,deps:new Map},r=l=>{let c=/^(?:"([^"]*)"|'([^']*)')$/.exec(l);return c?c[1]??c[2]:void 0},o=(l,c)=>{let d=l.get(c);return d||l.set(c,d={}),d},s=(l,c,d)=>{c==="package"||c==="path"?l[c]=r(d)??l[c]:c==="workspace"&&(l.workspace=d==="true")},a="";for(let l of e.split(/\r?\n/)){let c=l.replace(/^((?:[^"'#]|"[^"]*"|'[^']*')*)#.*$/,"$1").trim(),d=/^\[\[?([^\]]+)\]\]?$/.exec(c);if(d){a=d[1].replace(/["'\s]/g,""),(a==="workspace"||a.startsWith("workspace."))&&(n.workspaceDeps??=new Map);continue}let u=/^([\w.-]+)\s*=\s*(.+)$/.exec(c);if(!u)continue;let f=u[1],m=u[2];if(a==="package"){f==="name"?n.packageName=r(m)??n.packageName:f==="edition"?n.edition=r(m)??(/workspace\s*=\s*true/.test(m)?"workspace":void 0):f==="edition.workspace"&&(n.edition="workspace");continue}if(a==="lib"){f==="name"?n.libName=r(m)??n.libName:f==="path"&&(n.libPath=r(m)??n.libPath);continue}let p=/^(?:(workspace)\.|target\..+\.)?(?:dev-|build-)?dependencies(?:\.(.+))?$/.exec(a);if(!p)continue;let g=p[1]?n.workspaceDeps:n.deps;if(p[2]){s(o(g,p[2]),f,m);continue}let h=/^([\w-]+)\.(package|path|workspace)$/.exec(f);if(h)s(o(g,h[1]),h[2],m);else if(m.startsWith("{")){let _=o(g,f);for(let y of m.matchAll(/\b(package|path|workspace)\s*=\s*("[^"]*"|'[^']*'|true|false)/g))s(_,y[1],y[2])}}return n}function Kv(e,t){let n=[],r=[...t].filter(c=>c==="Cargo.toml"||c.endsWith("/Cargo.toml"));for(let c of r.sort($))n.push(Jv(se(j(e,c)),c.includes("/")?q.dirname(c):""));let o=n.filter(c=>c.packageName!==void 0),s=new Map(o.map(c=>[c.dir,c])),a=(c,d)=>!d||c===d||c.startsWith(d+"/"),l=[];for(let c of o){let d=Ie(q.join(c.dir,"src")).replace(/^\.$/,""),u=c.libPath?Ie(q.join(c.dir,c.libPath)):void 0,f=u&&!u.startsWith("..")&&t.has(u)?u:void 0,m=f?f.includes("/")?q.dirname(f):"":d,p=f??Bv(t,[q.join(d,"lib.rs"),q.join(d,"main.rs")]),g=n.filter(_=>_.workspaceDeps&&a(c.dir,_.dir)).sort((_,y)=>y.dir.length-_.dir.length)[0],h=new Map;for(let[_,y]of[...c.deps].sort((b,x)=>$(b[0],x[0]))){let b=y.workspace?g?.workspaceDeps?.get(_):y;if(!b?.package)continue;let x=y.workspace?g.dir:c.dir,k=b.path?s.get(Ie(q.join(x,b.path)).replace(/^\.$/,"")):o.find(v=>v.packageName===b.package);k&&h.set(_.replace(/-/g,"_"),k.dir)}l.push({name:(c.libName??c.packageName).replace(/-/g,"_"),dir:c.dir,srcDir:m,rootFile:p,...h.size?{renames:h}:{},...c.edition===void 0||c.edition==="2015"?{edition2015:!0}:{}})}return l.sort((c,d)=>d.dir.length-c.dir.length||(c.dirR.rel)),n=new Map,r=new Set;for(let R of e.files){let C=R.rel.includes("/")?q.dirname(R.rel):"",A=n.get(C);A||n.set(C,A=[]),A.push(R.rel);let S=C;for(;S&&!r.has(S);)r.add(S),S=S.includes("/")?q.dirname(S):""}let o=[],s=[],a=[],l=[];for(let R of t){if(R!=="package.json"&&!R.endsWith("/package.json"))continue;let C=Or(se(j(e.root,R)));if(C===void 0){s.push(`unparseable ${R} \u2014 skipped for workspace resolution`);continue}let A=R.includes("/")?q.dirname(R):"";if(l.push({dir:A,importEntries:qv(C.imports)}),typeof C.name!="string")continue;let S=[C.source,C.main,C.module,C.types].filter(w=>typeof w=="string");a.push({name:C.name,dir:A,exportEntries:Gv(C.exports),mainCandidates:S,...typeof C.tsconfig=="string"?{tsconfig:C.tsconfig}:{}})}a.sort((R,C)=>C.name.length-R.name.length),l.sort((R,C)=>C.dir.length-R.dir.length||$(R.dir,C.dir));let c=[];for(let R of t){let C=R.slice(R.lastIndexOf("/")+1);if(C!=="tsconfig.json"&&C!=="jsconfig.json"&&!(R==="tsconfig.base.json"))continue;let S=R.includes("/")?q.dirname(R):"",w=Nh(e.root,t,R,o,new Set,a);if(!w||!w.paths&&w.baseUrl===void 0)continue;let E=w.baseUrl===void 0?w.pathsDir:w.baseUrl.startsWith(Va)?Ie(q.join(S,w.baseUrl.slice(Va.length))).replace(/^\.$/,""):Ie(q.join(w.baseUrlDir,w.baseUrl)).replace(/^\.$/,""),P=q.relative(E,S)||".",N=[];for(let[L,H]of Object.entries(w.paths??{})){if(!Array.isArray(H))continue;let Y=L.endsWith("*");N.push({prefix:Y?L.slice(0,-1):L,star:Y,targets:H.filter(oe=>typeof oe=="string").map(oe=>oe.startsWith(Va)?q.join(P,oe.slice(Va.length)):oe)})}N.sort((L,H)=>Number(L.star)-Number(H.star)||H.prefix.length-L.prefix.length||$(L.prefix,H.prefix)),!(!N.length&&w.baseUrl===void 0)&&c.push({dir:S,file:C,baseUrl:E,baseUrlSet:w.baseUrl!==void 0,paths:N})}let d=R=>R==="tsconfig.json"?0:R==="jsconfig.json"?1:2;c.sort((R,C)=>C.dir.length-R.dir.length||d(R.file)-d(C.file)),o.push(...s);let u=[];for(let R of t){if(R!=="go.mod"&&!R.endsWith("/go.mod"))continue;let C=se(j(e.root,R)),A=/^\s*module\s+(\S+)/m.exec(C);if(!A)continue;let S=R.includes("/")?q.dirname(R):"";u.push({module:A[1],dir:S,replaces:Vv(C,S)})}u.sort((R,C)=>C.dir.length-R.dir.length||(R.dirC.prefix.length-R.prefix.length);let b=new Map;for(let R of e.files){if(R.ext!==".cs"||!R.pkg)continue;let C=b.get(R.pkg);C||b.set(R.pkg,C=[]),C.push(R.rel)}for(let R of b.values())R.sort($);let x=[...m].sort(Bi),k=new Map,v=[...t].filter(R=>R==="pubspec.yaml"||R.endsWith("/pubspec.yaml"));for(let R of v.sort($)){let C=/^name:[ \t]*["']?(\w+)["']?[ \t]*(?:#.*)?$/m.exec(se(j(e.root,R)));C&&!k.has(C[1])&&k.set(C[1],R.includes("/")?q.dirname(R):"")}let T=new Set([""]);for(let R of r){let C=R.slice(R.lastIndexOf("/")+1);(C==="lua"||C==="src"||C==="lib")&&T.add(R)}let F=new Map;for(let R of e.files)if(!(R.ext!==".ex"&&R.ext!==".exs"))for(let C of R.symbols){if(C.kind!=="module")continue;let A=C.parentPath?C.parentPath.replace(/\//g,"."):C.parent,S=A?A+"."+C.name:C.name,w=F.get(S);(w===void 0||$(R.rel,w)<0)&&F.set(S,R.rel)}return{fileSet:t,dirSet:r,filesByDir:n,tsConfigs:c,goModules:u,rustCrates:f,javaRoots:x,jvm:Ph({filesByDir:n,javaRoots:x},e.files),dartPackages:k,luaRoots:[...T].sort(Bi),root:e.root,svelteKitRoots:[...t].filter(R=>/(?:^|\/)svelte\.config\.(?:js|ts|mjs|cjs)$/.test(R)).map(R=>R.includes("/")?q.dirname(R):"").sort((R,C)=>C.length-R.length||$(R,C)),elixirModules:F,pyRoots:[...g].sort(Bi),workspacePackages:a,packageScopes:l,cIncludeRoots:[...h].sort(Bi),rubyLibRoots:[..._].sort(Bi),phpPsr4:y,csharpNamespaces:b,warnings:o}}function Ht(e,t){for(let n of t){let r=Ie(n);if(r&&!r.startsWith("..")&&e.fileSet.has(r))return r}}function nr(e,t,n){let r=t.split("#")[0].split("?")[0];if(!r)return{kind:"external"};if(r.startsWith("//")||/^[a-z][a-z0-9+.-]*:/i.test(r))return{kind:"external"};let o=r.startsWith("/"),s=o||!e.includes("/")?"":q.dirname(e),a=Ie(q.join(s,o?r.slice(1):r));if(a==="."&&(a=""),a.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let l=u=>[u,u+".md",u+".mdx",q.join(u,"README.md"),q.join(u,"readme.md"),q.join(u,"index.md"),q.join(u,"index.mdx")],c=a;try{c=Ie(decodeURIComponent(a))}catch{}if(c.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let d=Ht(n,c===a?l(a):[...l(a),...l(c)]);return d?{kind:"resolved",target:d}:!a||n.dirSet.has(a)?{kind:"external"}:n.root&&[a,c].some(u=>ne(j(n.root,u)))?{kind:"external"}:{kind:"dangling",reason:"missing-target"}}function Xv(e,t,n){let r=f=>Ht(n,[...Dv.map(m=>f+m),...jv.map(m=>q.join(f,m))]),o=f=>{let m=r(f);if(m)return m;let p=f.replace(/\.(js|jsx|mjs|cjs)$/,"");return p!==f?r(p):void 0},s=(f,m)=>{for(let p of[m,...cu(m)]){let g=o(Ie(q.join(f,p)));if(g)return g}},a=t.indexOf("?"),l=a===-1?t:t.slice(0,a);if(!l)return{kind:"external"};let c=n.svelteKitRoots?.find(f=>!f||e.startsWith(f+"/"));if(l.startsWith(".")){let f=e.includes("/")?q.dirname(e):"",m=Ie(q.join(f,l));if(m.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let p=o(m);return p?{kind:"resolved",target:p}:c!==void 0&&/(?:^|\/)\$types(?:\.d\.ts|\.js)?$/.test(l)?{kind:"external"}:{kind:"dangling",reason:"missing-module"}}let d,u;for(let f of n.tsConfigs){if(f.dir&&e!==f.dir&&!e.startsWith(f.dir+"/"))continue;u===void 0&&f.baseUrlSet&&(u=f.baseUrl);let m=!1;for(let p of f.paths){if(!(p.star?l.startsWith(p.prefix):l===p.prefix))continue;m=!0;let g=p.star?l.slice(p.prefix.length):"",h=!1;for(let _ of p.targets){let y=p.star?_.replace(/\*/,()=>g):_,b=Ie(q.join(f.baseUrl,y)),x=o(b);if(x)return{kind:"resolved",target:x};let k=b.includes("/")?q.dirname(b):"";(n.dirSet.has(k)||n.fileSet.has(b))&&(h=!0)}d=h?{kind:"dangling",reason:"alias-unresolved"}:{kind:"external"};break}if(m)break}if(u!==void 0&&!l.startsWith("/")){let f=o(Ie(q.join(u,l)));if(f)return{kind:"resolved",target:f}}if(c!==void 0&&!d&&(l==="$lib"||l.startsWith("$lib/"))){let f=Ie(q.join(c,"src/lib",l.slice(4))),m=o(f);if(m)return{kind:"resolved",target:m};if(n.dirSet.has(Ie(q.join(c,"src/lib"))))return{kind:"dangling",reason:"alias-unresolved"}}if(l.startsWith("#")){let f=n.packageScopes.find(p=>!p.dir||e.startsWith(p.dir+"/")),m=f?Rh(f.importEntries,l):void 0;for(let p of m??[]){let g=f&&p.startsWith("./")?s(f.dir,p):void 0;if(g)return{kind:"resolved",target:g}}return d??{kind:"external"}}for(let f of n.workspacePackages){if(l!==f.name&&!l.startsWith(f.name+"/"))continue;let m=l.slice(f.name.length).replace(/^\//,"");for(let g of Rh(f.exportEntries,m?"./"+m:".")??[]){let h=s(f.dir,g);if(h)return{kind:"resolved",target:h}}if(!m)for(let g of f.mainCandidates){let h=s(f.dir,g);if(h)return{kind:"resolved",target:h}}let p=m?[q.join(f.dir,"src",m),q.join(f.dir,m)]:[q.join(f.dir,"src","index"),q.join(f.dir,"index"),q.join(f.dir,"src")];for(let g of p){let h=o(Ie(g));if(h)return{kind:"resolved",target:h}}return{kind:"external"}}return d??{kind:"external"}}function Zv(e,t,n){let r=(a,l)=>{let c=l?l.replace(/\./g,"/"):"",d=Ie(q.join(a,c));return Ht(n,[d+".py",d+".pyi",q.join(d,"__init__.py")])};if(t.startsWith(".")){let a=/^\.+/.exec(t)[0].length,l=t.slice(a),c=e.includes("/")?q.dirname(e):"",d=c?c.split("/"):[];if(a-1>d.length)return{kind:"dangling",reason:"escapes-repo-root"};let u=d.slice(0,d.length-(a-1)).join("/");if(l){let m=r(u,l);return m?{kind:"resolved",target:m}:{kind:"dangling",reason:"missing-module"}}let f=Ht(n,[q.join(u,"__init__.py")]);return f?{kind:"resolved",target:f}:{kind:"external"}}let o=[],s=[];for(let a of n.pyRoots)(!a||e.startsWith(a+"/")?o:s).push(a);for(let a of[...o.reverse(),...s]){let l=r(a,t);if(l)return{kind:"resolved",target:l}}return{kind:"external"}}function Yv(e,t,n){if(!n.goModules.length)return{kind:"external"};let r=c=>{let d=Ie(c).replace(/^\.$/,""),u=Pv(n,d,".go"),f=u.find(m=>!m.endsWith("_test.go"))??u[0];return f?{kind:"resolved",target:f}:{kind:"dangling",reason:"missing-package"}},o=n.goModules.find(c=>!c.dir||e===c.dir||e.startsWith(c.dir+"/"));if(o)for(let c of o.replaces){if(t!==c.from&&!t.startsWith(c.from+"/"))continue;let d=t.slice(c.from.length).replace(/^\//,"");return r(q.join(c.toDir,d))}let s;for(let c of n.goModules)t!==c.module&&!t.startsWith(c.module+"/")||(!s||c.module.length>s.module.length||c.module.length===s.module.length&&c===o)&&(s=c);if(!s)return{kind:"external"};let a=Ie(q.join(s.dir,t.slice(s.module.length).replace(/^\//,""))).replace(/^\.$/,""),l=(c,d)=>!d||c===d||c.startsWith(d+"/");return n.goModules.some(c=>c!==s&&c.dir!==s.dir&&l(c.dir,s.dir)&&l(a,c.dir))?{kind:"dangling",reason:"missing-package"}:r(a)}function Qv(e,t,n){if(!n.rustCrates.length)return{kind:"external"};let r=(b,x)=>Ht(n,[q.join(b,x+".rs"),q.join(b,x,"mod.rs")]),o=(b,x)=>{for(let k=x.length;k>=1;k--){let v=Ie(q.join(b,...x.slice(0,k-1))),T=r(v,x[k-1]);if(T)return T}},s=e.includes("/")?q.dirname(e):"",a=e.slice(e.lastIndexOf("/")+1).replace(/\.rs$/,""),l=a==="mod"||a==="lib"||a==="main",c=l?s:q.join(s,a);if(t.startsWith("mod ")){let b=t.slice(4),x=r(c,b)??(l?void 0:r(s,b));return x?{kind:"resolved",target:x}:{kind:"dangling",reason:"missing-module"}}if(t.startsWith("mod-path ")){let b=Ie(q.join(s,t.slice(9)));return b.startsWith("..")?{kind:"dangling",reason:"escapes-repo-root"}:n.fileSet.has(b)?{kind:"resolved",target:b}:{kind:"dangling",reason:"missing-module"}}let d=t.split("::").map(b=>b.trim()).filter(Boolean);if(!d.length)return{kind:"external"};let u=d[0],f=n.rustCrates.find(b=>!b.dir||e===b.dir||e.startsWith(b.dir+"/")),m,p=[];if(u==="crate"&&f)m=f.srcDir,p=d.slice(1);else if(u==="self")m=c,p=d.slice(1);else if(u==="super"){let b=l?s.includes("/")?q.dirname(s):"":s,x=1;for(;xv.dir===x):n.rustCrates.find(v=>v.name===u);if(k){let v=o(k.srcDir,d.slice(1));if(v)return{kind:"resolved",target:v};if(k.rootFile)return{kind:"resolved",target:k.rootFile}}return{kind:"external"}}if(!p.length)return{kind:"external"};let g=o(m,p);if(g)return{kind:"resolved",target:g};if(f&&m===f.srcDir&&f.rootFile)return{kind:"resolved",target:f.rootFile};let h=m.includes("/")?q.dirname(m):"",_=m.slice(m.lastIndexOf("/")+1),y=_?r(h,_):void 0;return y&&y!==e?{kind:"resolved",target:y}:{kind:"external"}}function*e0(e,t){for(let n=e;;n=n.includes("/")?q.dirname(n):""){let r=t.get(n);if(r!==void 0){let o=n?e.slice(n.length+1):e;o.includes(".")||(yield{rank:r,pkg:o.replace(/\//g,".")})}if(!n)return}}function Ph(e,t=[]){let n={types:new Map,packages:new Map,scalaPkg:new Map};t0(n,e);let r=t.filter(s=>lu.has(s.ext)&&s.pkg).sort((s,a)=>$(s.rel,a.rel)),o=(s,a,l)=>{s.has(a)||s.set(a,l)};for(let s of r){Fh.has(s.ext)&&n.scalaPkg.set(s.rel,s.pkg),o(n.packages,s.pkg,s.rel);for(let a of s.symbols)!a.parent&&a.kind!=="package"&&o(n.types,s.pkg+"."+a.name,s.rel)}for(let s of r){let a=s.rel.slice(s.rel.lastIndexOf("/")+1,s.rel.length-s.ext.length);/^\w+$/.test(a)&&(o(n.types,s.pkg+"."+a,s.rel),$h.has(s.ext)&&o(n.types,s.pkg+"."+a+"Kt",s.rel))}return n}function t0(e,t){let n=new Map(t.javaRoots.map((c,d)=>[c,d]));if(!n.size)return;let{types:r,packages:o}=e,s=new Map,a=new Map,l=(c,d,u,f,m)=>{f>=(d.get(u)??1/0)||(d.set(u,f),c.set(u,m))};for(let[c,d]of t.filesByDir){let u=d.filter(m=>m.endsWith(".java"));if(!u.length)continue;let f=u.reduce((m,p)=>p=Math.min(2,n.length);r--){let o=e.types.get(r===n.length?n.join("."):n.slice(0,r).join("."));if(o)return o}}function n0(e,t,n){let r=n.jvm??=Ph(n),o=Ch(r,t),s=o?void 0:r.scalaPkg.get(e);for(let a=s;a&&!o;a=a.includes(".")?a.slice(0,a.lastIndexOf(".")):void 0)o=Ch(r,a+"."+t);return o?{kind:"resolved",target:o}:{kind:"external"}}function i0(e,t,n){let r=e.includes("/")?q.dirname(e):"",o=Ht(n,[q.join(r,t),...n.cIncludeRoots.map(s=>q.join(s,t))]);return o?{kind:"resolved",target:o}:r0.has(t)||s0.test(t)?{kind:"external"}:{kind:"dangling",reason:"missing-include"}}function o0(e,t,n){if(t.startsWith(".")){let r=e.includes("/")?q.dirname(e):"",o=Ie(q.join(r,t)),s=Ht(n,[o+".rb",q.join(o,"index.rb")]);return s?{kind:"resolved",target:s}:{kind:"dangling",reason:"missing-module"}}for(let r of n.rubyLibRoots){let o=Ht(n,[q.join(r,t+".rb")]);if(o)return{kind:"resolved",target:o}}return{kind:"external"}}function a0(e,t,n){if(t.startsWith(".")){let o=e.includes("/")?q.dirname(e):"",s=Ie(q.join(o,t)),a=Ht(n,[s,s+".php"]);return a?{kind:"resolved",target:a}:{kind:"dangling",reason:"missing-module"}}let r=t.replace(/^\\+/,"");for(let{prefix:o,dir:s}of n.phpPsr4){if(o&&r!==o&&!r.startsWith(o+"\\"))continue;let a=o?r.slice(o.length).replace(/^\\+/,""):r,l=Ht(n,[q.join(s,a.replace(/\\/g,"/"))+".php"]);if(l)return{kind:"resolved",target:l}}return{kind:"external"}}function l0(e,t){let n=t.csharpNamespaces.get(e);if(n?.length)return{kind:"resolved",target:n[0]};let r=(t.csharpPrefix??=c0(t.csharpNamespaces)).get(e);return r?{kind:"resolved",target:r}:{kind:"external"}}function c0(e){let t=new Map;for(let[n,r]of e){let o=r[0];if(o!==void 0)for(let s=n.indexOf(".");;s=n.indexOf(".",s+1)){let a=s===-1?n:n.slice(0,s),l=t.get(a);if((l===void 0||$(o,l)<0)&&t.set(a,o),s===-1)break}}return t}function d0(e,t,n){let r,o=/^package:([^/]+)\/(.+)$/.exec(t);if(o){let s=n.dartPackages?.get(o[1]);if(s===void 0)return{kind:"external"};r=Ie(q.join(s,"lib",o[2]))}else{if(/^[a-z][\w+.-]*:/i.test(t)||t.startsWith("/"))return{kind:"external"};r=Ie(q.join(e.includes("/")?q.dirname(e):"",t))}return r.startsWith("..")?{kind:"dangling",reason:"escapes-repo-root"}:n.fileSet.has(r)?{kind:"resolved",target:r}:/\.[\w-]+\.dart$/.test(r.slice(r.lastIndexOf("/")+1))?{kind:"external"}:{kind:"dangling",reason:"missing-module"}}function u0(e,t,n){let r=t.replace(/\./g,"/"),o=e.includes("/")?q.dirname(e):"",s=n.luaRoots??[""],a=s.filter(c=>!c||o===c||o.startsWith(c+"/")).reverse(),l=[...a,o,...s.filter(c=>!a.includes(c))];for(let c of l){let d=Ht(n,[q.join(c,r+".lua"),q.join(c,r,"init.lua")]);if(d)return{kind:"resolved",target:d}}return{kind:"external"}}function f0(e,t,n){let r=e.includes("/")?q.dirname(e):"",o=Ht(n,[q.join(r,t),t]);return o?{kind:"resolved",target:o}:{kind:"external"}}function Lh(e){return Mh.has(e)||Ah.has(e)||Ih.has(e)||Th.has(e)||lu.has(e)||Oh.has(e)||m0.has(e)}function ct(e,t,n,r){if(Mh.has(t)||Ah.has(t)){let o=n.lastIndexOf(".");if(o!==-1&&Lv.has(n.slice(o).toLowerCase().replace(/[?#].*$/,"")))return{kind:"external"};let a=(e.includes("/")?q.dirname(e):"")+"\0"+n,l=r.jsMemo??=new Map,c=l.get(a);return c||l.set(a,c=Xv(e,n,r)),{...c}}if(Ih.has(t)){let s=(e.includes("/")?q.dirname(e):"")+"\0"+n,a=r.pyMemo??=new Map,l=a.get(s);return l||a.set(s,l=Zv(e,n,r)),{...l}}if(t===".go")return Yv(e,n,r);if(t===".rs")return Qv(e,n,r);if(t===".java"||lu.has(t))return n0(e,n,r);if(Th.has(t))return i0(e,n,r);if(t===".rb"||t===".rake")return o0(e,n,r);if(t===".php")return a0(e,n,r);if(t===".cs")return l0(n,r);if(t===".dart")return d0(e,n,r);if(t===".lua")return u0(e,n,r);if(Oh.has(t))return f0(e,n,r);if(t===".ex"||t===".exs"){let o=r.elixirModules?.get(n);return o?{kind:"resolved",target:o}:{kind:"external"}}return{kind:"external"}}var Lv,Dv,jv,Mh,Ah,Ih,Th,$h,Fh,lu,Oh,Wv,Va,au,Hv,r0,s0,m0,An=z(()=>{"use strict";I();Ee();fe();fe();Ze();le();Lv=new Set([".svg",".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico",".icns",".pdf",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".wav",".flac",".ogg",".map"]),Dv=["",".ts",".tsx",".d.ts",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".svelte",".astro",".html",".htm"],jv=["index.ts","index.tsx","index.js","index.jsx","index.mjs","index.cjs"],Mh=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]),Ah=new Set([".vue",".svelte",".astro",".html",".htm"]),Ih=new Set([".py",".pyi"]),Th=new Set([".c",".h",".cc",".cpp",".cxx",".hpp",".hh"]),$h=new Set([".kt",".kts"]),Fh=new Set([".scala",".sc"]),lu=new Set([...$h,...Fh]),Oh=new Set([".sh",".bash",".zsh",".ksh",".fish"]),Wv=new Set(["dist","build","lib","out","output","esm","cjs","umd"]);Va="${configDir}";au=["source","ts","import","module","require","node","default"],Hv=8;r0=new Set(["assert.h","complex.h","ctype.h","errno.h","fenv.h","float.h","inttypes.h","iso646.h","limits.h","locale.h","math.h","setjmp.h","signal.h","stdalign.h","stdarg.h","stdatomic.h","stdbool.h","stddef.h","stdint.h","stdio.h","stdlib.h","stdnoreturn.h","string.h","tgmath.h","threads.h","time.h","uchar.h","wchar.h","wctype.h","unistd.h","fcntl.h","pthread.h","dirent.h","dlfcn.h","poll.h","sched.h","semaphore.h","strings.h","termios.h","glob.h","regex.h","syslog.h","netdb.h","pwd.h","grp.h","libgen.h","fnmatch.h","spawn.h","utime.h","windows.h"]),s0=/^(?:sys|arpa|netinet|net)\//;m0=new Set([".go",".rs",".java",".rb",".rake",".php",".cs",".dart",".lua",".ex",".exs"])});function Xa(e){return y0.test(e.split("/").pop())}function _0(e){return e.includes("/")?q.dirname(e):Ka}function Cs(e){return e===Ka?0:g0.test(e)||h0.test(e)?2:p0.test(e)?0:null}function b0(e,t){let n=Cs(e);return n!==null?n:t.every(r=>r.kind==="doc"||r.kind==="config"||Xa(r.rel))?2:1}function w0(e,t){let n=t.find(a=>/^(readme|index)\.(md|mdx)$/i.test(a.rel.split("/").pop()));if(n?.summary)return n.summary;if(n?.title)return n.title;let r=t.filter(a=>a.summary).sort((a,l)=>(l.summary?.length??0)-(a.summary?.length??0));if(r[0]?.summary)return r[0].summary;let o=[...new Set(t.map(a=>a.lang))].filter(a=>a!=="other"),s=e===Ka?"the repository root":`\`${e}/\``;return`${t.length} file(s) in ${s}${o.length?` (${o.slice(0,3).join(", ")})`:""}.`}function du(e){let t=new Map;for(let c of e.files){let d=_0(c.rel),u=t.get(d);u||t.set(d,u=[]),u.push(c)}let n=[...t.keys()].sort($),r=new Map,o=new Map;for(let c of n){let d=c===Ka?"root":ri(c);r.set(c,d),o.set(d,(o.get(d)??0)+1)}let s=c=>{let d=r.get(c);return d&&o.get(d)===1?d:`${d||"module"}-${Re(c).slice(0,8)}`},a=[],l=new Map;for(let c of n){let d=t.get(c).slice().sort((m,p)=>$(m.rel,p.rel)),u=s(c),f={slug:u,path:c,title:c,tier:b0(c,d),members:d.map(m=>m.rel),summary:w0(c,d)};a.push(f);for(let m of d)l.set(m.rel,u)}return a.sort((c,d)=>$(c.slug,d.slug)),{modules:a,moduleOf:l}}var Ka,p0,g0,h0,y0,Ms=z(()=>{"use strict";I();fe();et();xt();le();Ka="(root)",p0=/(^|\/)(types?|util|utils|lib|libs|common|core|config|configs|constants|shared|helpers|internal)$/i,g0=/(^|\/)(tests?|__tests?__|__mocks?__|__snapshots?__|spec|specs|e2e|examples?|example|benchmark|benchmarks|fixtures?|docs?|documentation|\.github)(\/|$)/i,h0=/(^|\/)(scripts?|bin|\.storybook)$/i,y0=/\.(test|spec|e2e|stories|story)\.[cm]?[jt]sx?$/i});function uu(e){let t=Nr(e),n=new Map;if(!t.size)return n;let r=(s,a)=>{let l=n.get(s);l||n.set(s,l=new Set),l.add(a)},o=Ya(e);for(let s of e.files)if(s.kind==="code"&&s.idents)for(let a of s.idents){let l=t.get(a);l&&l!==s.rel&&r(a,s.rel)}else if(s.kind==="doc"){let a=o.get(s.rel);if(!a||!a.retained)continue;for(let l of a.counts.keys()){let c=t.get(l);c&&c!==s.rel&&r(l,s.rel)}}return n}function fu(e,t=new Map,n=5){let r=new Map;for(let a of e.files)for(let l of a.symbols){let c=r.get(l.name);c||r.set(l.name,c=[]),c.push({file:l.file,line:l.line,...l.endLine!==void 0?{endLine:l.endLine}:{},kind:l.kind,exported:l.exported,lang:l.lang,...l.parent?{parent:l.parent}:{}})}let o=Object.create(null);for(let a of[...r.keys()].sort($))o[a]=r.get(a).slice().sort((l,c)=>$(l.file,c.file)||l.line-c.line||$(l.kind,c.kind));let s=Object.create(null);for(let a of[...t.keys()].sort($)){let l=[...t.get(a)].sort($);l.length&&(s[a]=l)}return{schemaVersion:n,defs:o,refs:s}}function Za(e){return JSON.stringify(e,null,2)+` +`}var zi=z(()=>{"use strict";I();_t();le();gt()});function In(e){let t=[{name:e}],n=e.lastIndexOf("#");n>0&&n0&&r0&&n{"use strict";I()});function jh(e){let t=new Map;for(let n of e.files)for(let r of n.symbols)S0.has(r.kind)&&qi(t,r.name,{name:r.name,file:r.file,kind:r.kind,lang:r.lang,line:r.line});return t}function rr(e,t,n){return Wh(e,t,n).map(r=>r.rel)}function Wh(e,t,n){let r=jh(e),o=gu(e,t,n),s=[];for(let a of e.files){if(!a.relations?.length)continue;let l=Oe(a.lang),c=o.aliases(a);for(let d of a.relations){let u=c.names.get(d.to),f=u?.name??d.to,m=r.get(f)?.get(l);if(!m)continue;let p;if(u){if(!u.files)continue;p=Lr(a.rel,o.within(m,u.files,f))}else{let g=o.reached(m,a,f),h=m.byFile.get(a.rel);h&&g.push(h),p=Lr(a.rel,g.length?g:m.list)}p&&s.push({written:d.to,rel:{kind:x0.has(p.kind)?"implements":d.kind,from:d.from,fromFile:a.rel,fromLine:d.line,to:p.name,toFile:p.file,toKind:p.kind}})}}return s.sort((a,l)=>$(a.rel.fromFile,l.rel.fromFile)||$(a.rel.from,l.rel.from)||$(a.rel.kind,l.rel.kind)||$(a.rel.to,l.rel.to))}function mu(e,t,n){let r=new Map;for(let o of rr(e,t,n)){if(o.toFile===o.fromFile)continue;let s=`${o.fromFile}${Be}${o.toFile}${Be}${o.kind}`,a=r.get(s);a?a.weight=Math.min(a.weight+1,5):r.set(s,{from:o.fromFile,to:o.toFile,kind:o.kind,weight:1})}return[...r.values()].sort((o,s)=>$(o.from,s.from)||$(o.to,s.to)||$(o.kind,s.kind))}function pu(e,t){let n=jh(e),r=Wh(e,t),o=r.map(m=>m.rel),s=new Map,a=(m,p)=>`${m}${Be}${p}`;for(let m of n.values())for(let p of[...m.values()].flatMap(g=>g.list))s.set(a(p.name,p.file),{name:p.name,file:p.file,line:p.line,kind:p.kind,extends:[],implements:[],extendedBy:[],implementedBy:[],unresolved:[]});let l=m=>({name:m.name,file:m.file,line:m.line,kind:m.kind});for(let m of o){let p=s.get(a(m.from,m.fromFile)),g=s.get(a(m.to,m.toFile));g&&(p?((m.kind==="extends"?p.extends:p.implements).push(l(g)),(m.kind==="extends"?g.extendedBy:g.implementedBy).push(l(p))):(m.kind==="extends"?g.extendedBy:g.implementedBy).push({name:m.from,file:m.fromFile,line:m.fromLine,kind:"unknown"}))}for(let m of Hi(e)){let p=s.get(a(m.from,m.fromFile)),g=s.get(a(m.to,m.toFile));if(!p||!g)continue;let h=_=>m.structural?{..._,structural:!0}:_;p.implements.push(h(l(g))),g.implementedBy.push(h(l(p)))}let c=new Set(r.map(({rel:m,written:p})=>`${m.fromFile}${Be}${m.from}${Be}${m.kind}${Be}${p}`));for(let m of e.files)for(let p of m.relations??[]){if(c.has(`${m.rel}${Be}${p.from}${Be}${p.kind}${Be}${p.to}`))continue;let g=p.kind==="extends"?"implements":"extends";c.has(`${m.rel}${Be}${p.from}${Be}${g}${Be}${p.to}`)||s.get(a(p.from,m.rel))?.unresolved.push({kind:p.kind,to:p.to})}let d=(m,p)=>$(m.name,p.name)||$(m.file,p.file),u=new Map,f=[...s.keys()].sort($);for(let m of f){let p=s.get(m);p.extends.sort(d),p.implements.sort(d),p.extendedBy.sort(d),p.implementedBy.sort(d),p.unresolved.sort((g,h)=>$(g.kind,h.kind)||$(g.to,h.to)),u.has(p.name)?u.set(`${p.name}@${p.file}`,p):u.set(p.name,p)}return u}function E0(e,t){let n=e.indexOf(`${t}(`);if(n===-1)return;let r=0,o=0,s=!0;for(let a=n+t.length;a=1&&!/\s/.test(l)&&(s=!1)}}function Hi(e){let t=h=>h.includes("/")?h.slice(0,h.lastIndexOf("/")):"",n=new Map,r=new Map,o=new Map,s=new Map,a=[],l=e.files.filter(h=>h.lang==="go"&&!h.rel.endsWith("_test.go"));for(let h of l){let _=t(h.rel);for(let y of h.symbols)if(y.kind==="type"&&!y.parent){let b=`${_}${Be}${y.name}`;n.has(b)||n.set(b,y);let x=r.get(y.name)??[];x.push(y),r.set(y.name,x)}else if(y.kind==="method"&&y.parent){let b=`${_}${Be}${y.parent}`,x=o.get(b);x||o.set(b,x=new Map),x.set(y.name,y.signature?E0(y.signature,y.name):void 0);let k=s.get(y.name);k||s.set(y.name,k=new Set),k.add(b)}else if(y.name==="_"&&y.signature){let b=k0.exec(y.signature);b&&a.push({sym:y,iface:b[1],type:b[2]??b[3]??b[4]})}}let c=[];for(let h of l)for(let _ of h.relations??[])_.kind==="extends"&&/^\w+$/.test(_.to)&&c.push([`${t(h.rel)}${Be}${_.from}`,`${t(h.rel)}${Be}${_.to}`]);c.sort((h,_)=>$(h[0],_[0])||$(h[1],_[1]));for(let h=0;h<3;h++)for(let[_,y]of c){let b=o.get(y);if(!b)continue;let x=o.get(_);x||o.set(_,x=new Map);for(let[k,v]of b)x.has(k)||(x.set(k,v),s.get(k).add(_))}let d=h=>!!h.signature?.startsWith(h.name)&&/^(\[[^\]]*\])?\s+interface\b/.test(h.signature.slice(h.name.length)),u=new Map,f=(h,_,y)=>{let b=u.get(h);if(b!==void 0)return b??void 0;if(y.has(h))return;y.add(h);let x=new Map(o.get(h)??[]),k=!0,v=se(j(e.root,_.file)).split(` +`).slice(_.line,(_.endLine??_.line)-1);for(let F of v){let R=F.replace(/\/\/.*$/,"").trim();if(/[~|]/.test(R)&&!R.includes("(")&&(k=!1),!/^[\w.]+$/.test(R))continue;let A=R.lastIndexOf(".")===-1?n.get(`${t(_.file)}${Be}${R}`):void 0,S=A&&d(A)?f(`${t(A.file)}${Be}${A.name}`,A,y):void 0;if(!S)k=!1;else for(let[w,E]of S)x.set(w,E)}let T=k&&x.size?x:void 0;return u.set(h,T??null),T},m=new Map,p=(h,_,y)=>{let b=`${h.file}${Be}${h.name}${Be}${_.file}${Be}${_.name}`,x=m.get(b);if(x){y||delete x.structural;return}m.set(b,{from:h.name,fromFile:h.file,to:_.name,toFile:_.file,...y?{structural:!0}:{}})};for(let[h,_]of[...n].sort((y,b)=>$(y[0],b[0]))){if(!d(_))continue;let y=f(h,_,new Set);if(!y)continue;let b=[...y.keys()].sort($),x=b.some(v=>!/^[A-Z]/.test(v)),k=b.reduce((v,T)=>(s.get(T)?.size??0)<(s.get(v)?.size??0)?T:v);for(let v of[...s.get(k)??[]].sort($)){if(v===h)continue;let T=n.get(v);if(!T||d(T)||x&&t(T.file)!==t(_.file))continue;let F=o.get(v);b.every(C=>{if(!F.has(C))return!1;let A=F.get(C),S=y.get(C);return A===void 0||S===void 0||A===S})&&p(T,_,!0)}}let g=(h,_)=>{let y=h.slice(h.lastIndexOf(".")+1);if(!h.includes(".")){let x=n.get(`${_}${Be}${y}`);if(x)return x}let b=(r.get(y)??[]).slice().sort((x,k)=>$(x.file,k.file));return b.length===1?b[0]:void 0};for(let h of a){let _=t(h.sym.file),y=g(h.iface,_),b=g(h.type,_);y&&b&&d(y)&&!d(b)&&p(b,y,!1)}return[...m.values()].sort((h,_)=>$(h.fromFile,_.fromFile)||$(h.from,_.from)||$(h.toFile,_.toFile)||$(h.to,_.to))}function Gi(e,t,n){let r=sr(e,t,n);if(!r)return[];let o=new Set([`${r.name}${Be}${r.file}`]),s=[],a=[r];for(;a.length;){let l=[];for(let c of a)for(let d of[...c.implementedBy,...c.extendedBy]){let u=`${d.name}${Be}${d.file}`;if(o.has(u))continue;o.add(u),s.push(d);let f=Bh(e,d.name,d.file);f&&l.push(f)}a=l}return s.sort((l,c)=>$(l.name,c.name)||$(l.file,c.file))}function sr(e,t,n){let r=e.get(t);if(r)return r;for(let o of In(t).slice(1))if(o.parent===void 0){for(let s of e.values())if(As(o,s))return s}for(let o of n??[]){let s=Bh(e,o.name,o.file);if(s)return s}}function Bh(e,t,n){let r=e.get(t);return r?.file===n?r:e.get(`${t}@${n}`)}var Be,x0,S0,k0,Tn=z(()=>{"use strict";I();fe();ir();Is();le();Pr();Ze();Be="\0",x0=new Set(["interface","trait","protocol"]),S0=new Set(["class","interface","trait","struct","type","enum","record","object","protocol","module","mod","union","annotation"]);k0=/^_\s+([\w.]+)\s*=\s*(?:\(\s*\*\s*([\w.]+)\s*\)\s*\(\s*nil\s*\)|&?([\w.]+)\s*\{|new\(\s*([\w.]+)\s*\))/});function Dr(e,t,n,r,o){let s=[...new Set(e)].sort($),a=s.filter(b=>t.has(b));if(a.length)return{hops:0,paths:a.slice(0,o).map(b=>[{node:b}]),pathCount:a.length};let l=new Map(s.map(b=>[b,0])),c=new Map,d=[s],u;for(let b=1;b<=r&&!u;b++){let x=[];for(let v of d[b-1])for(let[T,F]of n(v)){let R=l.get(T);if(R===void 0)l.set(T,b),c.set(T,new Map),x.push(T);else if(R!==b)continue;let C=c.get(T);C.has(v)||C.set(v,F)}if(!x.length)break;x.sort($),d.push(x);let k=x.filter(v=>t.has(v));k.length&&(u=k)}if(!u)return{hops:null,paths:[],pathCount:0};let f=d.length-1,m=new Set(u),p=[...u];for(;p.length;)for(let b of c.get(p.pop())?.keys()??[])m.has(b)||(m.add(b),p.push(b));let g=new Map,h=new Map;for(let b of s)m.has(b)&&g.set(b,1);for(let b=1;b<=f;b++)for(let x of d[b]){if(!m.has(x))continue;let k=0;for(let[v,T]of c.get(x)){k+=g.get(v)??0;let F=h.get(v);F?F.push([x,T]):h.set(v,[[x,T]])}g.set(x,k)}let _=[],y=b=>{if(_.length>=o)return;let x=b[b.length-1].node;if(b.length===f+1){_.push(b.slice());return}for(let[k,v]of h.get(x)??[])if(b.push({node:k,via:v}),y(b),b.pop(),_.length>=o)return};for(let b of s)m.has(b)&&y([{node:b}]);return{hops:f,paths:_,pathCount:u.reduce((b,x)=>b+(g.get(x)??0),0)}}var hu=z(()=>{"use strict";I();le()});function ht(e){return e.parent?`${e.file}#${e.parent}/${e.name}`:`${e.file}#${e.name}`}function R0(e){return{id:ht(e),name:e.name,kind:e.kind,file:e.file,line:e.line,...e.endLine!==void 0?{endLine:e.endLine}:{},exported:e.exported,...e.doc?{doc:e.doc}:{},...e.signature?{signature:e.signature}:{}}}function wu(e,t){let n=new Map,r=new Map;for(let p of e.files){let g=[];for(let h of p.symbols)v0.has(h.kind)||(g.push(h),n.set(ht(h),R0(h)));r.set(p.rel,g)}let o=new Map,s=(p,g,h)=>{if(p===g)return;let _=`${p}${jr}${g}${jr}${h}`,y=o.get(_);y?y.weight+=1:o.set(_,{from:p,to:g,kind:h,weight:1})},a=ar(e,t);for(let p of e.files){let g=a.forFile(p);if(!g)continue;let h=r.get(p.rel)??[];for(let _ of p.calls){let y=$n(h,_.line);if(!y)continue;let b=g(_,y);b&&s(ht(y),ht(b.def),"calls")}}let l=new Map;for(let p of n.values()){let g=`${p.name} ${p.file}`;(!l.has(g)||p.id===`${p.file}#${p.name}`)&&l.set(g,p.id)}let c=rr(e,t);for(let p of Hi(e))c.push({...p,kind:"implements"});for(let p of c){let g=l.get(`${p.from} ${p.fromFile}`),h=l.get(`${p.to} ${p.toFile}`);g&&h&&s(g,h,p.kind)}for(let{sub:p,sup:g}of xu(e,c))s(ht(p),ht(g),"overrides");let d=[...o.values()].sort((p,g)=>$(p.from,g.from)||$(p.kind,g.kind)||$(p.to,g.to)),u=new Map,f=new Map;for(let p of d)(u.get(p.from)??u.set(p.from,[]).get(p.from)).push(p),(f.get(p.to)??f.set(p.to,[]).get(p.to)).push(p);let m=new Map;for(let p of[...n.keys()].sort($)){let g=n.get(p);(m.get(g.name)??m.set(g.name,[]).get(g.name)).push(p)}return{nodes:n,edges:d,out:u,in:f,byName:m}}function xu(e,t){let n=new Map(e.files.map(d=>[d.rel,d.lang])),r=d=>d.includes("/")?d.slice(0,d.lastIndexOf("/")):"",o=(d,u)=>Oe(n.get(u)??"")==="go"?`go${jr}${r(u)}${jr}${d}`:`${u}${jr}${d}`,s=new Map;for(let d of e.files)for(let u of d.symbols){if(!u.parent||!C0.has(u.kind))continue;let f=o(u.parent,u.file),m=s.get(f);m||s.set(f,m=new Map),m.has(u.name)||m.set(u.name,u)}let a=new Map;for(let d of t){let u=o(d.from,d.fromFile),f=a.get(u)??[],m=o(d.to,d.toFile);m!==u&&!f.includes(m)&&f.push(m),a.set(u,f)}for(let d of a.values())d.sort($);let l=(d,u,f,m)=>{for(let p of a.get(d)??[]){if(f.has(p))continue;f.add(p);let g=s.get(p)?.get(u);g?m.push(g):l(p,u,f,m)}},c=[];for(let d of[...a.keys()].sort($)){let u=s.get(d);if(u)for(let f of[...u.keys()].sort($)){let m=[];l(d,f,new Set([d]),m);for(let p of m)c.push({sub:u.get(f),sup:p})}}return c.sort((d,u)=>$(ht(d.sub),ht(u.sub))||$(ht(d.sup),ht(u.sup)))}function bu(e,t){if(e.nodes.has(t))return[t];for(let n of In(t)){let r=n.parent?.slice(n.parent.lastIndexOf("/")+1),o=(e.byName.get(n.name)??[]).filter(s=>{let a=e.nodes.get(s);return n.file!==void 0&&a.file!==n.file?!1:r===void 0||s===`${a.file}#${r}/${a.name}`});if(o.length)return o}return[]}function Vi(e,t,n={}){let r=n.depth??2,o=Math.max(1,Math.min(r,yu)),s=n.direction??"both",a=bu(e,t),l=a.map(g=>e.nodes.get(g));if(!l.length)return{root:[],nodes:[],edges:[]};let c=new Map;for(let g of a)c.set(g,0);let d=new Map,u=[...a],f=!1;for(let g=1;g<=o&&u.length;g++){let h=[];for(let _ of u){let y=(k,v)=>{for(let T of k??[]){d.set(`${T.from}${jr}${T.to}${jr}${T.kind}`,T);let F=v(T);if(!c.has(F)){if(c.size>=M0){f=!0;continue}c.set(F,g),h.push(F)}}},b=e.out.get(_),x=e.in.get(_);s==="both"?(y(b,k=>k.to),y(x,k=>k.from)):s==="out"?(y(b?.filter(k=>k.kind!=="overrides"),k=>k.to),y(x?.filter(k=>k.kind==="overrides"),k=>k.from)):(y(x?.filter(k=>k.kind!=="overrides"),k=>k.from),y(b?.filter(k=>k.kind==="overrides"),k=>k.to))}u=h}let m=[...c.entries()].map(([g,h])=>({...e.nodes.get(g),depth:h})).sort((g,h)=>g.depth-h.depth||$(g.file,h.file)||$(g.name,h.name)),p=[...d.values()].filter(g=>c.has(g.from)&&c.has(g.to)).sort((g,h)=>$(g.from,h.from)||$(g.kind,h.kind)||$(g.to,h.to));return{root:l,nodes:m,edges:p,...f?{truncated:!0}:{},...r>yu?{depthClamped:yu}:{}}}function el(e,t,n,r={}){let o=r.depth??A0,s=Math.max(1,Math.min(o,_u)),a=Math.max(1,r.maxPaths??5),l=bu(e,t),c=bu(e,n),d=l.map(_=>e.nodes.get(_)),u=c.map(_=>e.nodes.get(_)),f=o>_u?{depthClamped:_u}:{};if(!d.length||!u.length)return{from:d,to:u,hops:null,paths:[],pathCount:0,...f};let m=function*(_){for(let y of e.out.get(_)??[])y.kind==="calls"&&(yield[y.to,"calls"]);for(let y of e.in.get(_)??[])y.kind==="overrides"&&(yield[y.from,"dispatch"])},p=Dr(l,new Set(c),m,s,a),g=_=>{let y=e.nodes.get(_.node);return{id:y.id,name:y.name,kind:y.kind,file:y.file,line:y.line,..._.via?{via:_.via}:{}}},h={from:d,to:u,hops:p.hops,paths:p.paths.map(_=>_.map(g)),pathCount:p.pathCount,...p.paths.length{"use strict";I();Is();or();ir();Tn();le();hu();Pr();jr="\0",v0=new Set(["reexport","reexport-all","default"]);C0=new Set(["method","function","def","getter","setter","operator"]);yu=5,M0=400;A0=8,_u=16});function I0(e){let t=new Array(e.length*tl);for(let n=0;n$(u.to,f.to));for(let d of a.values())d.sort((u,f)=>$(u.from,f.from));let c={out:s,inn:a,degree:l,threshold:Gh([...l.values()])};return r.views.set(n,c),c}function Gh(e){let t=e.slice().sort((o,s)=>o-s),n=t.length,r=n===0?0:t[Math.min(n-1,Math.floor(.99*n))];return Math.max(50,r)}function Ji(e,t,n=1/0,r={}){return vu(Eu(e,r),t,n)}function Eu(e,t={}){let n=new Map,r=new Map,o=(s,a,l)=>{let c=s.get(a);c?c.push(l):s.set(a,[l])};for(let s of e)s.dangling||!Ts.has(s.kind)||t.skipInferred&&s.confidence==="inferred"||(o(n,s.to,s),t.goPackages&&s.kind==="import"&&s.to.endsWith(".go")&&o(r,nl(s.to),s));return{dependents:n,packageImports:r,goPackages:t.goPackages===!0}}function vu(e,t,n=1/0){let{dependents:r,packageImports:o,goPackages:s}=e,a=new Map,l=new Set(t),c=[...t];for(let d=1;d<=n&&c.length;d++){let u=[];for(let f of c){let m=r.get(f)??[];s&&ku(f)&&(m=m.concat(o.get(nl(f))??[]));for(let p of m.slice().sort((g,h)=>$(g.from,h.from)))l.has(p.from)||(l.add(p.from),a.set(p.from,d),u.push(p.from))}c=u}return a}function Ki(e,t,n=1/0,r={}){let o=new Map(e.files.map(p=>[p.rel,p.module])),s=e.modules.find(p=>p.slug===t),a=s?void 0:e.files.find(p=>p.rel===t);if(!s&&!a)return;let l=s?s.members:[a.rel],c=r.includeInferred===!0,d=Ji(e.fileEdges,l,n,{skipInferred:!c,goPackages:!0}),u=[...d.entries()].map(([p,g])=>({rel:p,module:o.get(p)??"root",depth:g})).sort((p,g)=>p.depth-g.depth||$(p.rel,g.rel)),f=[...new Set(u.map(p=>p.module).filter(p=>p!==t))].sort($),m={target:t,scope:s?"module":"file",seeds:l,files:u,modules:f};if(!c){let p=Ji(e.fileEdges,l,n,{goPackages:!0}).size-d.size;p>0&&(m.inferredDependents=p)}return m}function zh(e){return e.kind==="call"?e.confidence==="inferred"?4:1:e.kind==="import"||e.kind==="extends"||e.kind==="implements"?0:e.kind==="use"?2:3}function Hh(e,t,n,r){let{out:o,inn:s,degree:a,threshold:l}=$0(e,r),c=new Set([t]),d=[],u=[t];for(let f=1;f<=n;f++){let m=new Map,p=(g,h,_)=>{let y=m.get(g);if(!y){if(c.has(g))return;c.add(g),m.set(g,y=[])}y.some(b=>b.direction===h&&b.kind===_.kind)||y.push({node:g,direction:h,kind:_.kind,weight:_.weight,depth:f,confidence:_.confidence})};for(let g of u)if(!(g!==t&&(a.get(g)??0)>=l)){for(let h of o.get(g)??[])p(h.to,"out",h);for(let h of s.get(g)??[])p(h.from,"in",h)}for(let g of m.values())g.sort((h,_)=>zh(h)-zh(_)||+(h.direction==="in")-+(_.direction==="in")||$(h.kind,_.kind)),d.push(...g);u=[...m.keys()]}return d}function Xi(e,t,n=1,r){let o=e.modules.find(a=>a.slug===t);if(o)return{target:t,scope:"module",links:Hh(e.moduleEdges,t,n,r),members:o.members};if(e.files.find(a=>a.rel===t))return{target:t,scope:"file",links:Hh(e.fileEdges,t,n,r)}}function rl(e,t,n,r={}){let o=new Set(e.files.map(g=>g.rel));if(!o.has(t)||!o.has(n))return;let s=r.depth??F0,a=Math.max(1,Math.min(s,Su)),l=Math.max(1,r.maxPaths??5),c=new Map;for(let g of[...o].sort($)){if(!ku(g))continue;let h=nl(g),_=c.get(h);_?_.push(g):c.set(h,[g])}let d=g=>{let h=new Map;for(let y of e.fileEdges){if(y.dangling||!Ts.has(y.kind)||!g&&y.confidence==="inferred")continue;let b=y.kind==="import"&&ku(y.to)&&c.get(nl(y.to))||[y.to],x=h.get(y.from)??h.set(y.from,[]).get(y.from);for(let k of b)x.push([k,y.kind])}let _=y=>y==="import"?0:y==="extends"||y==="implements"?1:y==="use"?2:3;for(let y of h.values())y.sort((b,x)=>$(b[0],x[0])||_(b[1])-_(x[1]));return y=>h.get(y)??[]},u=r.includeInferred===!0,f=d(u),m=Dr([t],new Set([n]),f,a,l),p={from:t,to:n,hops:m.hops,paths:m.paths.map(g=>g.map(h=>h.via?{file:h.node,via:h.via}:{file:h.node})),pathCount:m.pathCount,...m.paths.lengthSu?{depthClamped:Su}:{}};if(m.hops===null){let g=Dr([n],new Set([t]),f,a,0);if(g.hops!==null&&(p.reverseHops=g.hops),!u){let h=Dr([t],new Set([n]),d(!0),a,0);h.hops!==null&&(p.inferredHops=h.hops)}}return p}var Ts,tl,Uh,nl,ku,$s,F0,Su,Br=z(()=>{"use strict";I();le();hu();Ts=new Set(["import","use","call","extends","implements"]),tl=6;Uh=new WeakMap;nl=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",ku=e=>e.endsWith(".go")&&!e.endsWith("_test.go");$s=["import","call","use","extends","implements","doc-link","mention","contains"];F0=8,Su=16});function Ft(e){return N0.test(e)||Ru(e)}function Ru(e){if(Xa(e))return!0;let t=e.split("/").pop();return O0.some(n=>n.test(t))}function L0(e){let t=e.lastIndexOf("/"),n=t===-1?"":e.slice(0,t+1),r=e.slice(t+1),o;if(o=/^(.+)\.(?:test|spec)(\.[cm]?[jt]sx?)$/.exec(r)){let s=[n];return/(^|\/)__tests__\/$/.test(n)&&s.push(n.slice(0,-10)),s.flatMap(a=>[o[2],...P0.filter(l=>l!==o[2])].map(l=>a+o[1]+l))}if(o=/^test_(.+)\.py$/.exec(r)??/^(.+)_test\.py$/.exec(r))return[n+o[1]+".py"];if(o=/^(.+)_test\.go$/.exec(r))return[n+o[1]+".go"];if(o=/^(.+)_(?:spec|test)\.rb$/.exec(r))return[n+o[1]+".rb"];if(o=/^(.+?)(?:Tests?|IT)\.(java|kt)$/.exec(r)){let s=n+o[1]+"."+o[2],a=s.replace(/(^|\/)src\/test\//,"$1src/main/");return a===s?[s]:[s,a]}return[]}function Zi(e){let t=new Set,n=new Map,r=new Set,o=new Map;for(let d of e.files)if(n.set(d.rel,d.module),d.fileKind==="code"){if(Ft(d.rel)){t.add(d.rel);continue}if(r.add(d.rel),d.rel.endsWith(".go")){let u=d.rel.includes("/")?d.rel.slice(0,d.rel.lastIndexOf("/")):"",f=o.get(u);f?f.push(d.rel):o.set(u,[d.rel])}}let s=new Map,a=new Map,l=(d,u)=>{let f=s.get(u);f||s.set(u,f=new Set),f.add(d);let m=n.get(u);if(m!==void 0){let p=a.get(m);p||a.set(m,p=new Set),p.add(d)}};for(let d of e.fileEdges)d.dangling||Ts.has(d.kind)&&(!t.has(d.from)||t.has(d.to)||l(d.from,d.to));for(let d of t){for(let u of L0(d))r.has(u)&&l(d,u);if(d.endsWith("_test.go")){let u=d.includes("/")?d.slice(0,d.lastIndexOf("/")):"";for(let f of o.get(u)??[])l(d,f)}}let c=d=>{let u=new Map;for(let f of[...d.keys()].sort($))u.set(f,[...d.get(f)].sort($));return u};return{testFiles:t,testedByFile:c(s),testedByModule:c(a)}}function D0(e,t){let n=e.modules.find(r=>r.slug===t);return n?.testedBy?n.testedBy:Zi(e).testedByModule.get(t)??[]}function j0(e){let t=Zi(e),n=new Map;for(let r of e.files)r.fileKind!=="code"||t.testFiles.has(r.rel)||n.set(r.module,(n.get(r.module)??0)+1);return e.modules.filter(r=>r.tier<=1&&r.symbols>0&&(n.get(r.slug)??0)>0&&!t.testedByModule.has(r.slug))}var O0,N0,P0,lr=z(()=>{"use strict";I();Ms();le();Br();O0=[/^test_.*\.py$/i,/_test\.py$/i,/_test\.go$/,/(Test|Tests|IT)\.java$/,/(Test|Tests)\.kt$/,/_spec\.rb$/,/_test\.rb$/,/Test\.php$/,/(Test|Tests)\.cs$/,/_test\.exs$/],N0=/(^|\/)(tests?|__tests?__|spec|specs|e2e)(\/|$)/i;P0=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"]});function Ur(e,t,n){let r=e.fields[t];for(let o of mn(n))r.tf.set(o,(r.tf.get(o)??0)+1),r.len++,e.all.add(o)}function Y0(){let e={};for(let t of sl)e[t]={tf:new Map,len:0};return e}function il(e){let t=[];for(let n of e.files){let r={file:n.rel,fields:Y0(),all:new Set,symbols:[],decls:[],exactNames:new Set,isTest:Ft(n.rel),isFixture:Z0.test(n.rel)},o=new Set;for(let a of n.symbols){if(a.doc&&Ur(r,"doc",a.doc),V0.has(a.kind)){Ur(r,"body",a.name);continue}Ur(r,"name",a.name),r.exactNames.add(qn(a.name).toLowerCase()),o.has(a.name)||(o.add(a.name),r.symbols.push(a.name),r.decls.push({name:a.name,kind:a.kind,line:a.line}))}for(let a of n.rel.split("/"))Ur(r,"path",a);for(let a of n.headings)Ur(r,"heading",a);n.summary&&Ur(r,"summary",n.summary);let s=r.fields.body;for(let a of n.terms??[]){if(!rR.test(a)){Ur(r,"body",a);continue}s.tf.set(a,(s.tf.get(a)??0)+1),s.len++,r.all.add(a)}t.push(r)}return tR(t),t}function tR(e){let t=new Set;for(let r of e)for(let o of r.fields.name.tf.keys())o.length>=Cu&&/^[a-z]+$/.test(o)&&t.add(o);let n=new Map;for(let r of e){if(r.isTest||r.isFixture)continue;let o=r.fields.path;for(let s of[...o.tf.keys()]){if(s.lengtheR||!/^[a-z]+$/.test(s))continue;let a=n.get(s);if(n.has(s)||n.set(s,a=nR(s,t)),!a)continue;let l=o.tf.get(s);for(let c of a)o.tf.set(c,(o.tf.get(c)??0)+l),o.len+=l,r.all.add(c)}}}function nR(e,t){let n=e.length,r=new Array(n+1);r[n]=[];for(let s=n-Cu;s>=0;s--)for(let a=s+Cu;a<=n;a++){let l=r[a],c=e.slice(s,a);if(!l||!t.has(c))continue;let d=[c,...l],u=r[s];(!u||d.length=2?o:void 0}function sR(e){let t=Kh.get(e);if(t)return t;t={};for(let n of sl){let r=0;for(let o of e)r+=o.fields[n].len;t[n]=r/e.length||1}return Kh.set(e,t),t}function Zh(e){let t=`^^${e}$$`,n=new Set;for(let r=0;r+3<=t.length;r++)n.add(t.slice(r,r+3));return n}function Yh(e){let t=new Set,n=new Map;for(let r of e)for(let o of r.all){if(t.has(o))continue;t.add(o);let s=Qo(o);if(s===o)continue;let a=n.get(s);a||n.set(s,a=[]),a.push(o)}for(let r of n.values())r.sort($);return n}function Qh(e){let t=[],n=new Set;for(let a of e)for(let l of a.all)n.has(l)||(n.add(l),t.push(l));let r=new Uint32Array(t.length),o=new Map;for(let a=0;a=U0&&s.push({term:e.terms[a],dice:l})}return s}function oR(e,t,n={}){return ey(e,t,n).results}function Gt(e,t,n={}){return ey(e,t,n)}function Xh(e,t,n,r){return{results:[],explain:{query:e,terms:[],droppedStopwords:si(e,r),unresolvedTerms:[],verdict:t,note:n,bridgedOnlyResults:0,resultCount:0}}}function aR(e,t){let n=si(t).filter(l=>l.length>=2);if(!n.length)return;let r=new Set(n.map(l=>l.toLowerCase()));if(r.size===1&&!us(t).length)return l=>r.has(l.toLowerCase());let o=n.filter(l=>/[A-Z]/.test(l));if(!o.length)return;let s=Mu(e),a=new Set(o.filter(l=>{let c=l.toLowerCase();return s.some(d=>d.exactNames.has(c)&&d.symbols.includes(l))}));return a.size?l=>a.has(l):void 0}function ey(e,t,n={}){let r=aR(e,t),o=[],s=new Set;for(let T of us(t,r))for(let F of mn(T))s.has(F)||(s.add(F),o.push(F));if(!o.length){let T=si(t,r);return Xh(t,"none",T.length?`Nothing was searched for: every token in this query (${T.join(", ")}) is a stopword or too short to index. Search with the identifiers or domain words you are actually looking for.`:"Nothing was searched for: the query carried no indexable token.",r)}let a=o.some(T=>K0.test(T)),l=Mu(e),c=l.length;if(!c)return Xh(t,"none","This index contains no files.",r);let d=sR(l),u=new Uint8Array(c),f=T=>{let F=0;for(let R=0;Rm.get(F)===0);if(T.length){let F=ry(e),R=[];for(let C of T){let A=Qo(C),S=(F.get(A)??[]).filter(w=>w!==C);A!==C&&Qo(A)===A&&l.some(w=>w.all.has(A))&&(S.push(A),S.sort($)),S.length?g.set(C,S.slice(0,Vh).map(w=>({term:w,dice:z0,via:"stem"}))):R.push(C)}if(R.length){let C=ty(e);for(let A of R){let S=iR(C,A);S.sort((w,E)=>E.dice-w.dice||$(w.term,E.term)),g.set(A,S.slice(0,Vh).map(w=>({...w,via:"trigram"})))}}}}let h=new Map;for(let T of g.values())for(let{term:F}of T)!m.has(F)&&!h.has(F)&&h.set(F,f(F));let _=T=>m.get(T)??h.get(T),y=T=>Math.log(1+(c-T+.5)/(T+.5)),b=n.rank==="graph"?ny(e):void 0,x=T=>(1+Jh*Math.log1p(T*c))/(1+Jh*Math.LN2),k=[];for(let T=0;T{let L=0;for(let H of sl){let Y=F.fields[H],oe=Y.tf.get(N);if(!oe)continue;A.add(H);let ge=G0[H];L+=H0[H]*oe/(1-ge+ge*Y.len/d[H])}return L};for(let N of o){let L=P(N);if(L>0){C.push(N),S.add(N),F.exactNames.has(N)&&(E=!0),R+=y(m.get(N))*(L/(qh+L));continue}for(let H of g.get(N)??[]){let Y=P(H.term);Y&&(R+=y(_(H.term))*(Y/(qh+Y))*H.dice,S.add(H.term),w.add(N))}}!C.length&&!w.size||(E&&(R*=q0),a||(F.isFixture?R*=X0:F.isTest&&(R*=J0)),b&&!F.file.endsWith(".go")&&(R*=x(b.get(F.file)??0)),k.push({d:F,score:Number(R.toFixed(4)),matched:C,matchedFields:A,symbolTerms:S,fuzzyHit:w}))}k.sort((T,F)=>F.score-T.score||$(T.d.file,F.d.file));let v=(n.exact?k.filter(T=>T.matched.length):k).slice(0,n.limit??W0).map(lR);return{results:v,explain:cR(t,o,m,g,v,r)}}function lR({d:e,score:t,matched:n,matchedFields:r,symbolTerms:o,fuzzyHit:s}){let l=e.decls.map(d=>{let u=new Set(mn(d.name)),f=0;for(let m of o)u.has(m)&&f++;return{decl:d,hits:f}}).filter(d=>d.hits>0).sort((d,u)=>u.hits-d.hits||$(d.decl.name,u.decl.name)).slice(0,B0).map(d=>d.decl),c={file:e.file,score:t,matchedTerms:n.sort($),topSymbols:l.map(d=>d.name)};return r.size&&(c.matchedFields=sl.filter(d=>r.has(d))),l.length&&(c.symbolHits=l,c.line=Math.min(...l.map(d=>d.line))),s.size&&(c.fuzzyTerms=[...s].sort($)),n.length||(c.bridgedOnly=!0),c}function cR(e,t,n,r,o,s){let a=t.map(y=>{let b=n.get(y)??0,x=b===0?r.get(y)??[]:[];return x.length?{term:y,df:b,bridge:{via:x[0].via,to:x.map(k=>k.term),dice:x[0].dice}}:{term:y,df:b}}),l=a.filter(y=>y.df===0&&!y.bridge).map(y=>y.term).sort($),c=!/\s/.test(e.trim()),d=c?us(e,s).map(y=>mn(y)[0]).filter(y=>y!==void 0):[],u=!c||!t.length?void 0:d.length>1?{term:e.trim(),df:Math.min(...d.map(y=>n.get(y)??0))}:{term:t[0],df:n.get(t[0])??0},f=o.filter(y=>y.bridgedOnly).length,m=o.length>0&&f===o.length,p=u?.df===0,g=o.length?p||m?"weak":"match":"none",h={query:e,terms:a,droppedStopwords:si(e,s),unresolvedTerms:l,...u?{wholeIdentifier:u}:{},verdict:g,bridgedOnlyResults:f,resultCount:o.length},_=dR(h,p,m);return _&&(h.note=_),h}function dR(e,t,n){let{verdict:r,wholeIdentifier:o,resultCount:s,terms:a}=e;if(r!=="match"){if(!s){let l=e.unresolvedTerms;return l.length?`No file matches. ${l.length===1?"The term":"The terms"} ${l.join(", ")} ${l.length===1?"appears":"appear"} nowhere in this index.`:"No file matches this query."}if(t&&o){let l=a.filter(m=>m.term!==o.term&&m.df>0).map(m=>m.term).join(", "),c=a.find(m=>m.term===o.term),d=(c?c.bridge?.to:a.find(m=>m.df===0&&m.bridge)?.bridge?.to)??[],u=l?` The ${s} result${s===1?"":"s"} below match only its parts (${l}).`:"",f=d.length?` Closest indexed name${d.length===1?"":"s"}: ${d.join(", ")}.`:"";return`No file in this index defines or mentions "${o.term}".${u}${f} If you expected it here, check you are indexing the right branch or commit.`}if(n)return`Nothing matched verbatim. Every result below came from a near match: ${a.filter(d=>d.bridge).map(d=>`"${d.term}" \u2192 ${d.bridge.to.join(", ")}`).join("; ")}. Re-run with --exact to see only literal matches.`}}var qh,W0,B0,U0,Vh,z0,sl,H0,G0,q0,V0,J0,K0,X0,Z0,Jh,Q0,eR,Cu,rR,Kh,Fs=z(()=>{"use strict";I();gt();et();lr();le();qh=1.2,W0=20,B0=5,U0=.6,Vh=3,z0=.9,sl=["name","path","heading","summary","doc","body"],H0={name:3,path:2,heading:1.5,summary:1.5,doc:1.6,body:.7},G0={name:.75,path:.75,heading:.75,summary:.75,doc:.75,body:.4},q0=1.35,V0=new Set(["reexport","reexport-all"]),J0=.65,K0=/^(test|tests|spec|specs|fixture|fixtures|testdata|mock|mocks|stub|stubs)$/,X0=.5,Z0=/(^|\/)(testdata|test-data|test_data|fixtures?|__fixtures__|__snapshots__)(\/|$)/i,Jh=.1;Q0=7,eR=32,Cu=3;rR=/^[a-z0-9]{2,}$/,Kh=new WeakMap});function zr(e,t,n=.85){let r=new Map,o=e.length;if(o===0)return r;let s=new Map(e.map((d,u)=>[d,u])),a=Array.from({length:o},()=>[]),l=new Array(o).fill(0);for(let d of t){if(d.dangling)continue;let u=s.get(d.from),f=s.get(d.to);u===void 0||f===void 0||u===f||(a[u].push([f,d.weight]),l[u]+=d.weight)}let c=new Array(o).fill(1/o);for(let d=0;d<200;d++){let u=0;for(let g=0;gr.set(d,c[u])),r}function sy(e,t){let n=new Map;for(let h of e)n.set(h,0);let r=e.length;if(r<3)return n;let o=new Map(e.map((h,_)=>[h,_])),s=Array.from({length:r},()=>new Set);for(let h of t){if(h.dangling)continue;let _=o.get(h.from),y=o.get(h.to);_===void 0||y===void 0||_===y||(s[_].add(y),s[y].add(_))}let a=s.map(h=>[...h].sort((_,y)=>_-y)),l=new Float64Array(r),c=[],d=[],u=Array.from({length:r},()=>[]),f=new Float64Array(r),m=new Int32Array(r).fill(-1),p=new Float64Array(r);for(let h=0;h=0;_--){let y=c[_];for(let b of u[y])p[b]+=f[b]/f[y]*(1+p[y]);y!==h&&(l[y]+=p[y])}}let g=(r-1)*(r-2)/2;return e.forEach((h,_)=>n.set(h,l[_]/2/g)),n}function Au(e){let t=[],n=e.modules.length;if(n>0){let o=e.modules.map(a=>a.id),s=zr(o,e.moduleEdges);for(let a of e.modules)a.pagerank=Number(((s.get(a.id)??0)*n).toFixed(4));if(n>3e3)t.push(`betweenness skipped (${n} modules > 3000)`);else{let a=sy(o,e.moduleEdges);for(let l of e.modules)l.betweenness=Number((a.get(l.id)??0).toFixed(6))}}let r=e.files.length;if(r>0){let o=e.files.map(a=>a.id),s=zr(o,e.fileEdges);for(let a of e.files)a.pagerank=Number(((s.get(a.id)??0)*r).toFixed(4))}return t}var Yi=z(()=>{"use strict";I()});function mR(e){let t=iy.get(e);if(!t){let n=["if","for","while",...uR[e]??fR];t=new RegExp(`(?r[0])]);e.block&&n.add("/"),e.backtick&&n.add("`"),t=new RegExp(`[${[...n].map(r=>"\\"+r).join("")}]`,"g"),oy.set(e,t)}return t}function ol(e,t){let n=t&&_R[Oe(t)]||cr,r=e.length,o="",s=0,a=(u,f)=>{o+=e.slice(s,u)+e.slice(u,f).replace(/[^\n]/g," "),s=f},l=(u,f,m,p)=>{for(;ue.startsWith(f,d))){let f=e.indexOf(` +`,d),m=f===-1?r:f;a(d,m),d=m}else if(n.triple&&(e.startsWith('"""',d)||e.startsWith("'''",d))){let f=l(d+3,e.slice(d,d+3),!0,!0);a(d,f),d=f}else if(u==='"'||u==="'"&&!n.charOnly){let f=l(d+1,u,!0,!1);a(d,f),d=f}else if(u==="'"){ay.lastIndex=d;let f=ay.exec(e);f&&a(d,d+f[0].length),d+=f?f[0].length:1}else if(u==="`"&&n.backtick){let f=l(d+1,"`",n.backtick==="template",!0);a(d,f),d=f}else d++}return s===0?e:o+e.slice(s)}function ly(e,t){let n=t?Oe(t):"",r=(e.match(mR(n))??[]).length;return n==="python"&&(r+=(e.match(pR)??[]).length),hR.has(n)&&(r+=(e.match(gR)??[]).length),r}function Iu(e,t){return 1+ly(ol(e,t),t)}function Qi(e,t,n=50){let r=[];for(let o of e.files){if(o.kind!=="code"||t&&o.rel!==t||!o.symbols.length)continue;let s=ol(se(j(e.root,o.rel)),o.lang).split(` +`),a=o.symbols.filter(l=>l.kind!=="reexport"&&l.kind!=="reexport-all").sort((l,c)=>l.line-c.line||(c.endLine??c.line)-(l.endLine??l.line));a.forEach((l,c)=>{if(yR.has(l.kind))return;let d=l.endLine??l.line,u=s.slice(l.line-1,d);for(let m of wR(a,c,d))for(let p=m.line;p<=m.endLine;p++)u[p-l.line]="";let f={file:o.rel,name:l.name,line:l.line,complexity:1+ly(u.join(` +`),o.lang)};l.endLine!==void 0&&(f.endLine=l.endLine),r.push(f)})}return r.sort((o,s)=>s.complexity-o.complexity||$(o.file,s.file)||o.line-s.line),r.slice(0,n)}function wR(e,t,n){let r=e[t],o=[];for(let s=t+1;sn||(a.line>r.line||a.endLines.kind==="code"&&(t.get(s.rel)??0)>0).map(s=>{let a=r.get(s.rel),l=t.get(s.rel)??0;return{file:s.rel,complexity:a,commits:l,score:(l+1)*a}});return o.sort((s,a)=>a.score-s.score||$(s.file,a.file)),o.slice(0,n)}var uR,fR,iy,pR,gR,hR,yR,cr,qt,_R,oy,ay,Os=z(()=>{"use strict";I();fe();ir();gt();Ze();le();uR={js:["else\\s+if","case","catch"],c:["else\\s+if","case"],java:["else\\s+if","case","catch"],csharp:["else\\s+if","foreach","case","catch"],go:["else\\s+if","case"],rust:["else\\s+if","match"],kotlin:["else\\s+if","when","catch"],scala:["else\\s+if","match","case","catch"],swift:["else\\s+if","case","catch","guard"],php:["elseif","else\\s+if","foreach","case","catch"],dart:["else\\s+if","case","catch"],python:["elif","except"],ruby:["elsif","unless","until","when","rescue"],elixir:["unless","case","cond","rescue"],lua:["elseif"],shell:["elif","until","case"],perl:["elsif","unless","until","foreach"]},fR=["elif","elsif","else\\s+if","foreach","until","unless","case","when","match","catch","rescue","except"],iy=new Map;pR=/^[ \t]*case\b[^\n]*:[ \t]*$/gm,gR=/(?[n.rel,n]))}function al(e){let t=dt(e);if(!t.symbolsByName){let n=new Map;for(let r of e.files)for(let o of r.symbols){let s=n.get(o.name);s?s.push(o):n.set(o.name,[o])}t.symbolsByName=n}return t.symbolsByName}function ln(e){let t=dt(e);return t.resolveCtx??=Ui(e)}function Ot(e){let t=dt(e);if(!t.importPairs){let n=ln(e),r=new Set;for(let o of e.files)for(let s of o.refs){if(s.kind!=="import")continue;let a=ct(o.rel,o.ext,s.spec,n);a.kind==="resolved"&&a.target!==o.rel&&r.add(`${o.rel}|${a.target}`)}t.importPairs=r}return t.importPairs}function dy(e,t,n){let r=Tu.get(e);!r||r.resolveCtx!==t||r.importPairs||(r.importPairs=n)}function Nr(e){let t=dt(e);return t.uniqueDefs??=$u(e)}function ll(e){let t=dt(e);return t.symbolRefs??=uu(e)}function Ya(e){let t=dt(e);if(t.docMentions)return t.docMentions;let n=Nr(e),r=new Map;if(n.size)for(let o of e.files){if(o.kind!=="doc")continue;let s=e.docText.get(o.rel),a=s??se(j(e.root,o.rel));if(!a)continue;let l=new Map;for(let c of a.split(/[^A-Za-z0-9_]+/))n.has(c)&&l.set(c,(l.get(c)??0)+1);r.set(o.rel,{counts:l,retained:s!==void 0})}return t.docMentions=r}function uy(e){let t=dt(e);if(t.identSets)return t.identSets;let n=new Map;for(let r of e.files)r.kind==="code"&&r.idents?.length&&n.set(r.rel,new Set(r.idents));return t.identSets=n}function Ns(e){let t=dt(e);return t.callerIndex??=Hr(e,Ot(e))}function Ps(e){let t=dt(e);return t.hierarchy??=pu(e,Ot(e))}function Ls(e){let t=dt(e);return t.symbolGraph??=wu(e,Ot(e))}function Mu(e){let t=dt(e);return(t.bm25??={docs:il(e)}).docs}function ty(e){let t=dt(e),n=t.bm25??={docs:il(e)};return n.trigrams??=Qh(n.docs)}function ny(e){let t=dt(e);if(!t.importPagerank){let n=e.files.map(o=>o.rel),r=[];for(let o of Ot(e)){let s=o.indexOf("|");r.push({from:o.slice(0,s),to:o.slice(s+1),kind:"import",weight:1})}t.importPagerank=zr(n,r)}return t.importPagerank}function ry(e){let t=dt(e),n=t.bm25??={docs:il(e)};return n.stems??=Yh(n.docs)}function cy(e){let t=dt(e);if(!t.fileComplexity){let n=new Map;for(let r of e.files)r.kind==="code"&&n.set(r.rel,Iu(se(j(e.root,r.rel)),r.lang));t.fileComplexity=n}return t.fileComplexity}var Tu,gt=z(()=>{"use strict";I();fe();An();cl();zi();or();Tn();Wr();Fs();Yi();Os();Ze();Tu=new WeakMap});function dl(e,t){let n=e.get(t);if(n)return n;for(let r of In(t).slice(1))for(let o of e.values())if(As(r,o.def))return o}function my(e,t,n={}){return gy(e,Ot(e),n.recall===!0,new Set(t))}function py(e){return[...new Set(In(e).map(t=>t.name))]}function xR(e){return new Set(Ot(e))}function Hr(e,t,n={}){return gy(e,t??Ot(e),n.recall===!0)}function gy(e,t,n,r){let o=ar(e,t,{recall:n,only:r}),s=new Map;for(let c of e.files){let d=o.forFile(c);if(d)for(let u of c.calls){let f=d(u);if(!f)continue;let m=f.def.name+"\0"+f.def.file,p=s.get(m);p?f.def.line$(f.file,m.file)||f.line-m.line),a.has(d.name)?a.set(`${d.name}@${d.file}`,{def:d,callers:u}):a.set(d.name,{def:d,callers:u})}return a}function SR(e,t,n){let r=e.files.find(o=>o.rel===t);if(r?.symbols.length)return $n(r.symbols,n)}function $n(e,t){let n;for(let r of e)fy.has(r.kind)||r.line>t||r.endLine!==void 0&&t>r.endLine||(!n||r.line>n.line||r.line===n.line&&(r.endLine??1/0)<=(n.endLine??1/0))&&(n=r);return n}function Fu(e){return hy(e)}function ur(e,t){return hy(e,t).get(t)??[]}function hy(e,t){let n=new Map;for(let o of e.files){if(!o.calls?.length)continue;let s;for(let a of o.calls){if(t!==void 0&&a.name!==t)continue;s??=o.symbols.filter(u=>!fy.has(u.kind));let l={file:o.rel,line:a.line};a.receiver!==void 0&&(l.receiver=a.receiver);let c=$n(s,a.line);c&&(l.enclosingSymbol=c);let d=n.get(a.name);d||n.set(a.name,d=[]),d.push(l)}}let r=new Map;for(let o of[...n.keys()].sort($)){let s=n.get(o);s.sort((a,l)=>$(a.file,l.file)||a.line-l.line),r.set(o,s)}return r}var fy,or=z(()=>{"use strict";I();Is();gt();le();Pr();fy=new Set(["reexport","reexport-all","default"])});function RR(e){let t=e.split("/"),n=t.pop()??e;return(/^v\d+$/.test(n)||n==="go")&&t.length&&(n=t.pop()),n.replace(/\.v\d+$/,"").replace(/^go-/,"").replace(/[-.]go$/,"").replace(/\W/g,"")}function CR(e,t){if(!e.includes(t))return;let n=Pu.get(t);n||(n=new RegExp(`(?:^|[(,\\s])${t}\\s*(?::\\s*["']?|\\s+[*&]?)\\s*(?:([A-Za-z_]\\w*)\\.)?(?:[A-Za-z_]\\w*\\.)*([A-Za-z_]\\w*)`),Pu.size<4096&&Pu.set(t,n));let r=n.exec(e);return r?{type:r[2],qualifier:r[1]}:void 0}function MR(e){if(!(!e?.signature||e.kind!=="method"))return/^func\s*\(\s*([A-Za-z_]\w*)\s/.exec(e.signature)?.[1]}function gu(e,t,n){let r=Ds(t),o,s=C=>(o??=new Map(e.files.map(A=>[A.rel,A]))).get(C),a=new Map;for(let C of e.files){let A=C.rel.endsWith("/__init__.py")||C.rel==="__init__.py"?{all:!0,names:new Set}:void 0;for(let S of C.symbols)S.kind!=="reexport"&&S.kind!=="reexport-all"||(A??={all:!1,names:new Set},S.kind==="reexport-all"?A.all=!0:A.names.add(S.name));A&&a.set(C.rel,A)}let l=new Map,c=(C,A)=>{let S=`${C}\0${A}`,w=l.get(S);if(w)return w;w=new Set;let E=[C];for(let P=0;P{if(!d){d=new Map;for(let S of e.files){let w=Oe(S.lang);if(!by.has(w)||S.kind!=="code")continue;let E=`${w}\0${Ct(S.rel)}`,P=d.get(E);P||d.set(E,P=[]),P.push(S)}}return d.get(`${C}\0${A}`)??[]},f=new Map,m=C=>{let A=Oe(C.lang);if(!by.has(A))return null;let S=f.get(C.rel);if(S!==void 0)return S;let w=Ct(C.rel),E=new Set;if(A==="go")for(let P of r.get(C.rel)??[])P.endsWith(".go")&&Ct(P)!==w&&E.add(Ct(P));return f.set(C.rel,S={own:w,test:to(C.rel),imported:E}),S},p=new WeakMap,g=(C,A,S,w,E)=>{let P=(L,H)=>{L.file===A.rel||E.has(L.file)||(H===S.own?S.test||!to(L.file):S.imported.has(H)&&!to(L.file))&&(E.add(L.file),w.push(L))};if(C.list.length<=S.imported.size+1){for(let L of C.list)P(L,Ct(L.file));return}let N=p.get(C);if(!N){N=new Map;for(let L of C.list){let H=Ct(L.file),Y=N.get(H);Y?Y.push(L):N.set(H,[L])}p.set(C,N)}for(let L of N.get(S.own)??[])P(L,S.own);for(let L of S.imported)for(let H of N.get(L)??[])P(H,L)},h=(C,A,S,w)=>{if(A.size{for(let P of A){let N=a.get(P);if(N&&(h(C,c(P,S),w,E),!(N.all||!N.names.size)))for(let L of C.list)L.parent&&!E.has(L.file)&&N.names.has(L.parent)&&c(P,L.parent).has(L.file)&&(E.add(L.file),w.push(L))}},y=(C,A,S)=>{if(!C)return[];let w=m(A);if(w&&A.lang==="go"){let L=[];return g(C,A,w,L,new Set),L}let E=r.get(A.rel),P=Lu(C,E),N=new Set(P.map(L=>L.file));return N.add(A.rel),E&&_(C,E,S,P,N),w&&g(C,A,w,P,N),P},b=(C,A,S)=>{if(!C)return[];let w=[],E=new Set;return h(C,new Set(A),w,E),_(C,A,S,w,E),w},x=n,k=xy.get(e),v=()=>(x??=ln(e),k?.ctx!==x&&xy.set(e,k={ctx:x,files:new Map}),k.files),T=C=>{let A=s(C);if(!A)return;let S=A.importAliases?.find(P=>P.local==="default"&&P.from===void 0);if(S)return S.name;let w=A.symbols.find(P=>P.kind==="default");if(w)return w.name;let E=C.slice(C.lastIndexOf("/")+1).replace(/\.[^.]+$/,"");return A.symbols.some(P=>P.name===E&&!P.parent)?E:void 0},F=C=>u("go",C).find(A=>!to(A.rel))?.symbols.find(A=>A.kind==="package")?.name;return{targets:C=>r.get(C),reached:y,within:b,aliases:C=>{let A=C.lang==="go";if(!C.importAliases?.length&&!(A&&C.refs.length))return vR;let S=v(),w=S.get(C.rel);if(w)return w;w={modules:new Map,names:new Map};let E=N=>{let L=ct(C.rel,C.ext,N,x);return L.kind==="resolved"&&L.target!==C.rel?L.target:null},P=(N,L)=>{let H=w.modules.get(N);H==null?w.modules.set(N,L):L&&w.modules.set(N,[...new Set([...H,...L])].sort($))};if(A){let N=new Map;for(let L of C.importAliases??[])L.from!==void 0&&N.set(L.from,L.local);for(let L of C.refs){if(L.kind!=="import")continue;let H=E(L.spec),Y=H===null?void 0:Ct(H),oe=N.get(L.spec)??(Y!==void 0?F(Y):void 0)??RR(L.spec);P(oe,Y!==void 0?u("go",Y).filter(ge=>!to(ge.rel)).map(ge=>ge.rel):null)}}else for(let N of C.importAliases??[]){if(N.from===void 0)continue;let L=E(N.from);if(N.name==="*"){P(N.local,L?[L]:null);continue}if(C.lang==="python"){let Y=E(N.from.endsWith(".")?N.from+N.name:`${N.from}.${N.name}`);if(Y&&Y!==L){P(N.local,[Y]);continue}}if(w.names.has(N.local))continue;let H=N.name==="default"?(L?T(L):void 0)??N.local:N.name;w.names.set(N.local,{name:H,files:L?[L]:null})}return S.set(C.rel,w),w}}}function ky(e,t,n){qi(e.any,t.name,t),qi(n?e.member:e.free,t.name,t)}function Ey(e,t,n,r){if(r!=="member-first")return e[r].get(t)?.get(n);let o=e.member.get(t)?.get(n),s=e.free.get(t)?.get(n);if(!o||!s)return o??s;let a=new Map(o.byFile),l=[...o.list];for(let c of s.list)a.has(c.file)||(a.set(c.file,c),l.push(c));return{list:l,byFile:a}}function ar(e,t,n={}){let r=n.recall===!0,o=n.only,s=gu(e,t,n.ctx),a,l=new Map,c=new Set,d=F=>{let R=l.get(F);if(R)return R;let C=(a??=new Map(e.files.map(w=>[w.rel,w]))).get(F)?.symbols??[],A,S;for(let w of C)if(w.parent!==void 0){if(!S){S=new Map;for(let E of C)S.has(E.name)||S.set(E.name,E.kind)}kR.has(S.get(w.parent)??"")&&(A??=new Set).add(w.parent)}return l.set(F,R=A??c),R},u=F=>(a??=new Map(e.files.map(R=>[R.rel,R]))).has(F),f=(F,R)=>R.map(C=>F?`${F}/${C}`:C).find(u),m=(F,R)=>{let C=F.slice(F.lastIndexOf("/")+1),A;if(R==="crate")for(let S=Ct(F);!A&&(A=f(S,["lib.rs","main.rs"]),!!S);S=Ct(S));else if(C!=="lib.rs"&&C!=="main.rs"){let S=Ct(C==="mod.rs"?Ct(F):F.slice(0,-3));A=f(S,["mod.rs","lib.rs","main.rs"])??(S&&u(`${S}.rs`)?`${S}.rs`:void 0)}return A===void 0?void 0:[A]},p=F=>F.parent!==void 0&&d(F.file).has(F.parent),g=F=>F.parent!==void 0&&!d(F.file).has(F.parent),h=new Map;for(let F of e.files){let R=wy[Oe(F.lang)]!==void 0;for(let C of F.symbols){if(ul.has(C.kind)||Ou.has(C.kind)||!C.exported&&!R||o&&!o.has(C.name))continue;let A=h.get(C.name);A?A.push(C):h.set(C.name,[C])}}let _=new Map,y=F=>{let R=_.get(F);if(R!==void 0)return R;let C=h.get(F);if(R=null,C){R={exported:Sy(),hidden:Sy()};for(let A of C)A.exported?ky(R.exported,A,g(A)):p(A)||ky(R.hidden,A,g(A))}return _.set(F,R),R},b=(F,R,C)=>{let A=y(F);return A?Ey(A.exported,F,R,C):void 0},x=(F,R,C)=>{let A=y(F);return A?Ey(A.hidden,F,R,C):void 0},k=new Map,v=F=>{let R=k.get(F);return R===void 0&&k.set(F,R=Ft(F)||Cs(Ct(F)||"(root)")===2),R};return{forFile:F=>{if(!F.calls?.length||o&&!F.calls.some(Z=>o.has(Z.name)||F.importAliases?.some(K=>K.local===Z.name)))return;let R=Oe(F.lang),C=!r&&_y.has(R),A=wy[R],S=new Map,w=new Map,E=new Map,P=new Set,N=d(F.rel),L=Z=>Z.parent!==void 0&&!N.has(Z.parent);for(let Z of F.symbols)ul.has(Z.kind)||Ou.has(Z.kind)||(S.has(Z.name)||S.set(Z.name,Z),L(Z)?(E.has(Z.name)||E.set(Z.name,Z),P.add(Z.parent)):w.has(Z.name)||w.set(Z.name,Z));let H,Y,oe,ge=(Z,K)=>{if(!Y){Y=new Map;for(let J of F.symbols){if(ul.has(J.kind)||Ou.has(J.kind)||!L(J))continue;let X=`${J.parent}\0${J.name}`;Y.has(X)||Y.set(X,J)}}return Y.get(`${Z}\0${K}`)},Se=Z=>{if(P.size){if(!oe){oe=new Map;for(let K of P){let J=K.toLowerCase();oe.set(J,oe.has(J)?null:K)}}return oe.get(Z.toLowerCase())}},Ce=s.aliases(F),U;if(R==="rust")for(let Z of["crate","super"]){let K=m(F.rel,Z);K&&(U??=new Map).set(Z,K)}let B=(Z,K)=>{let J=s.reached(b(Z,R,K),F,Z),X=x(Z,R,K);if(X&&(A==="package"||A==="import")){let V=new Set(J.map(te=>te.file));for(let te of A==="package"?s.reached(X,F,Z):Lu(X,s.targets(F.rel)))A==="package"&&Ct(te.file)!==Ct(F.rel)||te.file!==F.rel&&!V.has(te.file)&&(V.add(te.file),J.push(te))}return J},G=(Z,K,J)=>{if(K!==void 0&&Z.some(V=>V.parent===K))return Z.filter(V=>V.parent===K);let X=J?.toLowerCase();return X!==void 0&&Z.some(V=>V.parent?.toLowerCase()===X)?Z.filter(V=>V.parent?.toLowerCase()===X):Z},ee=(Z,K,J,X)=>({shape:Z,receiver:K,selfType:J,typeHint:X,results:new Map}),ce=ee("bare"),ke=ee("outside"),rt=new Map,qe=new Map,_e=(Z,K)=>{let J=Z.receiver;if(J===void 0)return ce;let X=rt.get(J);if(X)return X;let V=de=>ee("self",J,de,de);if(!Nu.has(J)){if(U?.has(J))X=ee("module",J);else if(Ce.modules.has(J))X=ee("module",J);else if(P.has(J))X=V(J);else if(!_y.has(R)){let de=Se(J);X=de?V(de):ee("foreign",J,void 0,Ce.names.get(J)?.name??J)}if(X)return rt.set(J,X),X}K===void 0&&(H??=F.symbols.filter(de=>!ul.has(de.kind)),K=$n(H,Z.line));let te=qe.get(K??null);return te||qe.set(K??null,te=new Map),X=te.get(J),X||(X=me(J,K,V),te.set(J,X),X)},me=(Z,K,J)=>{if(Nu.has(Z))return J(K?.parent);if(R==="go"&&MR(K)===Z)return J(K.parent);let X=K?.signature?CR(K.signature,Z):void 0;if(X?.qualifier!==void 0&&!r&&Ce.modules.get(X.qualifier)===null)return ke;if(X!==void 0&&P.has(X.type))return J(X.type);let V=X===void 0?Se(Z):void 0;return V?J(V):ee("foreign",Z,void 0,X?.type??Ce.names.get(Z)?.name??Z)},he=(Z,K)=>{let{shape:J,receiver:X,selfType:V,typeHint:te}=K;if(J==="outside")return null;let de;if(r?de=S.get(Z):J==="bare"?de=C?w.get(Z):S.get(Z):J==="self"&&(de=V!==void 0?ge(V,Z):void 0,!de&&X!==void 0&&Nu.has(X)&&(de=E.get(Z))),de)return o&&!o.has(de.name)?null:{hit:{def:de,corroborated:!0},local:!0};let it,Ve=Z;if(J==="bare"){let Lt=Ce.names.get(Z);Lt&&({name:Ve,files:it}=Lt)}else J==="module"&&(it=U?.get(X)??Ce.modules.get(X));let cs=U?.has(X)===!0&&J==="module";if(o&&!o.has(Ve))return null;let yr=C?J==="bare"||J==="module"?"free":J==="self"||R==="go"?"member":"member-first":"any",kn=yr==="member-first"?"member":yr;if(it!==void 0)if(it===null){if(!r)return null}else{let Lt=s.within(b(Ve,R,yr),it,Ve);if(A==="import"||cs)for(let am of s.within(x(Ve,R,yr),it,Ve))Lt.includes(am)||Lt.push(am);let ni=Lr(F.rel,Lt);if(ni)return{hit:{def:ni,corroborated:!0},local:!1};if(Lt.length||!r&&yy.has(R))return null}let sm=G(B(Ve,yr),te,X);if(sm.length){let Lt=Lr(F.rel,sm);return Lt?{hit:{def:Lt,corroborated:!0},local:!1}:null}let im=b(Ve,R,r?"any":kn);if(!im)return null;let kc=vy(im,F.rel);if(!kc.length)return null;let Ec=[...kc];if(r){if(R==="js"&&kc.length!==1)return null}else{if(yy.has(R))return null;let Lt=v(F.rel);Ec=Ec.filter(ni=>!Ru(ni.file)&&(Lt||!v(ni.file)))}let om=Lr(F.rel,G(Ec,te,X));return om?{hit:{def:om,corroborated:!1},local:!1}:null};return(Z,K)=>{let J=_e(Z,K),X=J.results.get(Z.name);if(X===void 0&&J.results.set(Z.name,X=he(Z.name,J)),!!X&&!(X.local&&X.hit.def.line===Z.line))return X.hit}}}}var ul,yy,_y,by,wy,Ou,Nu,kR,ER,vR,Ct,to,Pu,xy,Sy,Is=z(()=>{"use strict";I();An();ir();or();gt();Ms();lr();le();ul=new Set(["reexport","reexport-all","default"]),yy=new Set(["js","go"]),_y=new Set(["go","python"]),by=new Set(["go","java"]),wy={go:"package",java:"package",python:"import",rust:"path"},Ou=new Set(["mod","module","package","namespace"]),Nu=new Set(["self","cls","this","Self"]),kR=new Set(["function","method","def","constructor","operator"]),ER=3,vR={modules:new Map,names:new Map},Ct=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",to=e=>e.endsWith("_test.go");Pu=new Map;xy=new WeakMap;Sy=()=>({any:new Map,free:new Map,member:new Map})});function Oe(e){return AR.has(e)?"js":e==="c"||e==="cpp"?"c":e}function IR(e,t){let n=Math.min(e.length,t.length),r=0,o=0;for(;or?(r=a,n=s,o=!1):a===r&&(o=!0)}return o?void 0:n}function qi(e,t,n){let r=e.get(t);r||e.set(t,r=new Map);for(let a of r.values())if(a.byFile.has(n.file))return!1;let o=Oe(n.lang),s=r.get(o);return s||r.set(o,s={list:[],byFile:new Map}),s.list.push(n),s.byFile.set(n.file,n),!0}function Ds(e){let t=new Map;for(let n of e)for(let r=n.indexOf("|");r!==-1;r=n.indexOf("|",r+1)){let o=n.slice(0,r),s=n.slice(r+1);if(o===s)continue;let a=t.get(o);a||t.set(o,a=new Set),a.add(s)}return t}function Lu(e,t){if(!t?.size)return[];if(t.sizet.has(n.file))}function vy(e,t){return e.byFile.has(t)?e.list.filter(n=>n.file!==t):e.list}function Du(e,t,n){let r=ar(e,t,{ctx:n}),o=new Map;for(let s of e.files){let a=r.forFile(s);if(a)for(let l of s.calls){let c=a(l);if(!c||c.def.file===s.rel)continue;let d=c.corroborated?"extracted":"inferred",u=`${s.rel}|${c.def.file}`,f=o.get(u);f?(f.weight+=1,d==="extracted"&&(f.confidence="extracted")):o.set(u,{from:s.rel,to:c.def.file,weight:1,confidence:d})}}return[...o.values()].map(s=>({from:s.from,to:s.to,kind:"call",weight:Math.min(s.weight,5),confidence:s.confidence})).sort((s,a)=>$(s.from,a.from)||$(s.to,a.to))}var AR,ir=z(()=>{"use strict";I();Is();le();AR=new Set(["typescript","javascript","vue","svelte","astro"])});function TR(e){return e.length<5?!1:/[a-z][A-Z]/.test(e)||/[A-Z]{2}/.test(e)||e.includes("_")||/\d/.test(e)}function $u(e){let t=new Map;for(let r of e.files)for(let o of r.symbols){if(!o.exported||$R.has(o.kind)||!TR(o.name))continue;let s=t.get(o.name);s||t.set(o.name,s=new Set),s.add(r.rel)}let n=new Map;for(let[r,o]of t)o.size===1&&n.set(r,[...o][0]);return n}function Fn(e,t){let n=Ry(t.from,t.to,t.kind),r=e.get(n);if(r){r.weight+=t.weight;return}e.set(n,{...t})}function Wu(e,t,n,r,o){let s=new Map,a=new Set;for(let v of e.files){let T;for(let F of v.refs){if(F.soft){(T??=[]).push(F);continue}if(F.kind==="doc-link"){let R=nr(v.rel,F.spec,t);if(R.kind==="external")continue;R.kind==="dangling"?Fn(s,{from:v.rel,to:F.spec,kind:"doc-link",weight:1,dangling:!0,reason:R.reason}):R.target!==v.rel&&Fn(s,{from:v.rel,to:R.target,kind:"doc-link",weight:1})}else{let R=ct(v.rel,v.ext,F.spec,t);if(R.kind==="external")continue;R.kind==="dangling"?Fn(s,{from:v.rel,to:F.spec,kind:"import",weight:1,dangling:!0,reason:R.reason}):R.target!==v.rel&&(Fn(s,{from:v.rel,to:R.target,kind:"import",weight:1}),a.add(`${v.rel}|${R.target}`))}}for(let F of T??[]){let R=F.kind==="doc-link"?nr(v.rel,F.spec,t):ct(v.rel,v.ext,F.spec,t);R.kind!=="resolved"||R.target===v.rel||s.has(Ry(v.rel,R.target,F.kind))||(Fn(s,{from:v.rel,to:R.target,kind:F.kind,weight:1}),F.kind==="import"&&a.add(`${v.rel}|${R.target}`))}}let l=new Set;for(let v of Du(e,a,t))Fn(s,v),l.add(`${v.from}|${v.to}`);for(let v of mu(e,a,t))Fn(s,v);dy(e,t,a);let c=Nr(e);if(c.size){let v,T=(R,C)=>{let A=fl(C);for(let S of(v??=Ds(a)).get(R)??[])if(fl(S)===A)return!0;return!1},F=new Map(e.files.map(R=>[R.rel,R.lang]));for(let R of e.files){if(R.kind!=="code"||!R.idents?.length)continue;let C=new Set([...R.importedNames??[],...(R.importAliases??[]).map(E=>E.local)]),A=Oe(R.lang),S=new Map;for(let E of R.idents){let P=c.get(E);!P||P===R.rel||C.has(E)||Oe(F.get(P)??"")===A&&S.set(P,(S.get(P)??0)+1)}let w=R.lang==="go";for(let[E,P]of S){let N=`${R.rel}|${E}`;a.has(N)||l.has(N)||w&&E.endsWith(".go")&&fl(E)!==fl(R.rel)&&!T(R.rel,E)||Fn(s,{from:R.rel,to:E,kind:"use",weight:Math.min(P,5)})}}}if(c.size)for(let[v,{counts:T}]of Ya(e))for(let[F,R]of T){let C=c.get(F);C!==v&&Fn(s,{from:v,to:C,kind:"mention",weight:Math.min(R,5)})}let d=[...s.values()].sort((v,T)=>$(v.from,T.from)||$(v.to,T.to)||$(v.kind,T.kind)),u=new Map,f=new Map,m=new Set(e.files.map(v=>v.rel));for(let v of d)v.dangling||!m.has(v.to)||(f.set(v.from,(f.get(v.from)??0)+1),u.set(v.to,(u.get(v.to)??0)+1));let p={import:7,extends:6,implements:5,call:4,use:3,"doc-link":2,mention:1,contains:0},g=new Map;for(let v of d){if(v.dangling||!m.has(v.to))continue;let T=r.get(v.from),F=r.get(v.to);if(!T||!F||T===F)continue;let R=`${T}${ju}${F}`,C=g.get(R);C?(C.weight+=v.weight,(p[v.kind]??0)>(p[C.kind]??0)&&(C.kind=v.kind)):g.set(R,{from:T,to:F,kind:v.kind,weight:v.weight})}let h=[...g.values()].sort((v,T)=>$(v.from,T.from)||$(v.to,T.to)),_=new Map,y=new Map;for(let v of h)y.set(v.from,(y.get(v.from)??0)+1),_.set(v.to,(_.get(v.to)??0)+1);let b=e.files.map(v=>({id:v.rel,kind:"file",rel:v.rel,fileKind:v.kind,lang:v.lang,module:r.get(v.rel)??"root",title:v.title,summary:v.summary,symbols:v.symbols.length,lines:v.lines,degIn:u.get(v.rel)??0,degOut:f.get(v.rel)??0,...v.generated?{generated:v.generated}:{}})).sort((v,T)=>$(v.rel,T.rel)),x=new Map;for(let v of e.files){let T=r.get(v.rel)??"root";x.set(T,(x.get(T)??0)+v.symbols.length)}let k=n.map(v=>({id:v.slug,kind:"module",slug:v.slug,path:v.path,title:v.title,summary:v.summary,tier:v.tier,members:v.members,symbols:x.get(v.slug)??0,degIn:_.get(v.slug)??0,degOut:y.get(v.slug)??0})).sort((v,T)=>$(v.slug,T.slug));return{schemaVersion:o?.schemaVersion??5,version:o?.version??Te,commit:e.commit,fileCount:e.files.length,languages:e.languages,files:b,modules:k,fileEdges:d,moduleEdges:h}}var fl,$R,ju,Ry,cl=z(()=>{"use strict";I();_t();An();ir();Tn();gt();le();fl=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";$R=new Set(["reexport","reexport-all","default"]);ju="\0",Ry=(e,t,n)=>`${e}${ju}${t}${ju}${n}`});function*FR(e){for(let t of e.files)yield*t.symbols}function no(e,t){let n=dr(e).get(t);return n?[...n.symbols].filter(r=>!ml.has(r.kind)).sort((r,o)=>r.line-o.line||$(r.name,o.name)):[]}function pl(e,t,n){let r=dr(e).get(t);if(!r)return;let o=$n(r.symbols,n);if(!o)return{file:t,line:n,symbol:null,enclosing:[]};let s=Math.max(n,o.endLine??n),a=r.symbols.filter(c=>c!==o&&!ml.has(c.kind)&&c.endLine!==void 0&&c.line<=o.line&&c.endLine>=s).sort((c,d)=>c.line-d.line||d.endLine-c.endLine||$(c.name,d.name)).map(ht),l=ht(o);return{file:t,line:n,symbol:{...o,id:l},enclosing:[...new Set(a)].filter(c=>c!==l),...o.endLine===void 0?{approximate:!0}:{}}}function ro(e,t){let n=dr(e);return{...t,callers:t.callers.map(r=>{let o=$n(n.get(r.file)?.symbols??[],r.line);return o?{...r,caller:ht(o)}:{...r}})}}function _n(e,t,n={}){let r=t.split("/").filter(Boolean);if(!r.length)return[];let o=r[r.length-1],s=r.slice(0,-1),a=(u,f)=>n.substring?u.toLowerCase().includes(f.toLowerCase()):u===f,l=[],c=n.substring?FR(e):al(e).get(o)??[];for(let u of c)if(!ml.has(u.kind)&&a(u.name,o)){if(s.length){let f=s[s.length-1];if(!u.parent||u.parent!==f)continue}l.push({...u})}l.sort((u,f)=>+(f.name===o)-+(u.name===o)||$(u.file,f.file)||u.line-f.line);let d=l.slice(0,n.maxResults??50);if(n.includeBody){let u=new Map,f=new Set;for(let m of d){let p=m.endLine??m.line;if(f.has(m.file))continue;let g=u.get(m.file);if(!g){let h=se(j(e.root,m.file));if(!h){f.add(m.file);continue}g=h.split(` `),u.set(m.file,g)}m.body=g.slice(m.line-1,p).join(` -`)}}return n.concise?d.map(u=>({name:u.name,kind:u.kind,file:u.file,line:u.line,...u.parent?{parent:u.parent}:{},...u.body!==void 0?{body:u.body}:{}})):d}function Ot(e,t){let n=sl(e);for(let r of An(t)){let o=(n.get(r.name)??[]).filter(s=>!dl.has(s.kind)&&Rs(r,s));if(o.length)return{reading:r,defs:o.sort((s,a)=>T(s.file,a.file)||s.line-a.line)}}}function fl(e,t){let n=ur(e,t),r=n.length?t:Ot(e,t)?.reading.name;return r===void 0||r===t?{name:t,sites:n}:{name:r,sites:ur(e,r)}}function ml(e,t,n){let r=Ot(e,t);if(!r)return;let o=r.reading.name,s=(c,d)=>`${d}:${c}`,a=new Set;for(let c of n.values())if(c.def.name===o)for(let d of c.callers)a.add(s(d.file,d.line));for(let c of sl(e).get(o)??[])a.add(s(c.file,c.line));let l=ur(e,o).filter(c=>!a.has(s(c.file,c.line)));return{name:t,error:`no tracked callers for "${t}"`,defs:r.defs.map(c=>({name:c.name,kind:c.kind,file:c.file,line:c.line})),unresolvedSites:l.length,sample:l.slice(0,5).map(c=>c.receiver!==void 0?{file:c.file,line:c.line,receiver:c.receiver}:{file:c.file,line:c.line}),hint:l.length?`${l.length} call site(s) name "${o}" but none could be bound to a single definition; raw mode (CLI --raw, MCP raw:true) lists every site, recall mode (--recall, recall:true) relaxes the JS/TS import gate`:`no call site in the index names "${o}"`}}function to(e,t){let n=Ot(e,t),r=n?.defs??[],o=n?.reading.name??t,s=$s(e),a=s.get(o),l=[...new Set(r.map(g=>g.file))],c=[];for(let g of l){let h=a?.def.file===g?a:s.get(`${o}@${g}`);if(h)for(let _ of h.callers)c.push(l.length>1?{..._,def:g}:{..._})}c.sort((g,h)=>T(g.file,h.file)||g.line-h.line);let d=new Set,f=Fr(e).get(o),m=Zh(e),p=new RegExp(`(?{"use strict";I();pe();Xe();or();mt();ce();Or();Dr();dl=new Set(["reexport","reexport-all","default"])});function py(e,t,n){if(!fR.has(n)||t<0||t>=e.length)return;let r=Tu(e[t]),o=[{t:"code",close:null,nest:0}],s=0,a=0,l=!1,c=Math.min(e.length,t+mR),d=(u,f,m)=>{let p=e[u];if(pR.test(p.slice(f+1))&&!(m&&u!==t&&(Tu(p)!==r||p.trim()[0]!=="}")))return u};for(let u=t;u1||l||s>0||a>0)continue;let g=e.slice(u+1,c).findIndex(_=>_.trim()!=="");if(g<0)return;let h=e[u+1+g];if(!h.trim().startsWith("{")&&!(/[,:=>|&+\-*/?.]/.test(m)&&Tu(h).length>r.length&&h.startsWith(r)))return}}function gR(e,t,n){let r=e[t];if(n==="swift"){let c=0;for(;e[t+c]==="#";)c++;if(e[t+c]!=='"')return r==="`"?my("`"):void 0;let d=e.startsWith('"""',t+c),u=d?'"""':'"';return{frame:{t:"str",quote:u,hashes:c,escapes:c===0,interp:"swift",multiline:d},length:c+u.length}}if(n==="kotlin")return e.startsWith('"""',t)?{frame:{t:"str",quote:'"""',hashes:0,escapes:!1,interp:"dollar",multiline:!0},length:3}:r==='"'?{frame:{t:"str",quote:'"',hashes:0,escapes:!0,interp:"dollar",multiline:!1},length:1}:r==="'"?{frame:{t:"str",quote:"'",hashes:0,escapes:!0,interp:null,multiline:!1},length:1}:r==="`"?my("`"):void 0;let o=r==="r"&&(e[t+1]==='"'||e[t+1]==="'")&&!/[\w$]/.test(e[t-1]??""),s=o?t+1:t;if(e[s]!=='"'&&e[s]!=="'")return;let a=e.startsWith(e[s].repeat(3),s),l=a?e[s].repeat(3):e[s];return{frame:{t:"str",quote:l,hashes:0,escapes:!o,interp:o?null:"dollar",multiline:a},length:(o?1:0)+l.length}}function my(e){return{frame:{t:"str",quote:e,hashes:0,escapes:!1,interp:null,multiline:!1},length:e.length}}function SR(e,t,n){return t==="rust"&&hy.test(e)?!1:gy.has(t)&&(e.startsWith("//")||e.startsWith("/*")&&e.endsWith("*/"))||hR.has(t)&&e.startsWith("#")&&!(n===0&&e.startsWith("#!"))?!0:yR.has(t)&&e.startsWith("--")}function yy(e,t){return _R.has(t)&&/^@[A-Za-z_]/.test(e)||bR.has(t)&&/^#\[/.test(e)||wR.has(t)&&e.startsWith("[")?!0:t==="cpp"&&/^template\b/.test(e)}function _y(e){let t=0;for(let n of e.replace(/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`/g,""))n==="("||n==="["||n==="{"?t++:(n===")"||n==="]"||n==="}")&&t--;return t}function kR(e,t,n){let r=e[t].trim(),o=Math.max(0,t-xR);if(gy.has(n)&&r.endsWith("*/")){for(let a=t;a>=o;a--){let l=e[a];if(l.lastIndexOf("/*")<0)continue;let d=l.trim();return d.startsWith("/*")&&!(n==="rust"&&hy.test(d))?a:void 0}return}if(n==="elixir"&&r.endsWith('"""')){for(let a=t-1;a>=o;a--)if(e[a].includes('"""'))return/^@\w+\s.*"""\s*$/.test(e[a].trim())?a:void 0;return}if(n==="cpp"&&r.endsWith(">")){for(let a=t;a>=o&&e[a].trim()!=="";a--)if(/^template\b/.test(e[a].trim()))return a;return}if(!/[)\]}]$/.test(r))return;let s=0;for(let a=t;a>=o;a--){let l=e[a];if(l.trim()===""||(s+=_y(l),s>0))return;if(s===0)return yy(l.trim(),n)?a:void 0}}function by(e,t,n){let r=t;for(let o=t-1;o>=0;){let s=e[o].trim();if(s==="")break;if(SR(s,n,o)||yy(s,n)&&_y(s)===0){r=o--;continue}let a=kR(e,o,n);if(a===void 0)break;r=a,o=a-1}return r}var fR,mR,pR,Tu,gy,hR,yR,_R,bR,wR,xR,hy,wy=H(()=>{"use strict";I();fR=new Set(["swift","kotlin","dart"]),mR=1e4,pR=/^\s*[;,]?\s*(?:\/\/.*)?$/,Tu=e=>/^\s*/.exec(e)[0];gy=new Set(["typescript","javascript","java","kotlin","scala","dart","swift","go","rust","csharp","c","cpp","php","zig","solidity","hcl","terraform"]),hR=new Set(["python","ruby","shell","elixir","php","hcl","terraform"]),yR=new Set(["lua"]),_R=new Set(["python","typescript","javascript","java","kotlin","scala","dart","swift","elixir"]),bR=new Set(["rust","php"]),wR=new Set(["csharp","cpp"]),xR=200,hy=/^(?:\/\/!|\/\*!|#!\[)/});function vy(e,t,n,r){let o=_n(e,t,{maxResults:1/0}),s=n===void 0?void 0:vR(e.root,n);n!==void 0&&(o=o.filter(c=>c.file===n||c.file===s));let a=s!==void 0?` in ${s}`:"";if(o.length===0){let c=_n(e,t,{substring:!0,maxResults:5}).map(d=>`${d.file}:${d.line} ${d.parent?d.parent+"/":""}${d.name}`).join(", ");throw new Error(`no symbol matches "${t}"${a}${c?` \u2014 near matches: ${c}`:""}`)}if(r!==void 0){let c=o;if(o=c.filter(d=>d.line===r),!o.length){let d=m=>(m.endLine??m.line)-m.line,u=c.filter(m=>m.line<=r&&r<=(m.endLine??m.line)),f=Math.min(...u.map(d));o=u.filter(m=>d(m)===f)}if(!o.length)throw new Error(`no "${t}"${a} is declared at or spans line ${r} \u2014 candidates: ${xy(c)}`)}if(o.length===1)return o[0];if(new Set(o.map(c=>c.file)).size===1){let c=o.map(d=>d.line).join(", ");throw new Error(`"${t}" is ambiguous (${o.length} declarations in ${o[0].file}, lines ${c}) \u2014 pass \`line\`: one of ${c}`)}throw new Error(`"${t}" is ambiguous (${o.length} matches: ${xy(o)}) \u2014 qualify with \`file\` or a Parent/name path, and \`line\` for same-file homonyms`)}function xy(e){let t=e.slice(0,$u).map(n=>`${n.file}:${n.line}`).join(", ");return e.length>$u?`${t}, \u2026 ${e.length-$u} more`:t}function vR(e,t){let n=Pe(t)?De(e,t):t;return G.normalize(n.replace(/\\/g,"/"))}function RR(e){let t=ds(e);if(!t.ok)throw new Error(`cannot read ${e}`);if(t.binary||t.encoding===null)throw new Error(`cannot edit a binary file: ${e}`);let n=t.encoding;if((n==="utf16le"||n==="utf16be")&&(t.bytes-2)%2)throw new Error("cannot edit malformed UTF-16 source: odd byte length");let r=t.text.split(/(\r?\n)/),o=[],s=[];for(let l=0;lc)??e.newline,l=n?s[t+n-1]:t0&&(s[t-1]=a),o.splice(t,n,...r),s.splice(t,n,...r.map((c,d)=>d===r.length-1?l:a))}function CR(e){return e.replace(/\r\n/g,` +`)}}return n.concise?d.map(u=>({name:u.name,kind:u.kind,file:u.file,line:u.line,...u.parent?{parent:u.parent}:{},...u.body!==void 0?{body:u.body}:{}})):d}function Nt(e,t){let n=al(e);for(let r of In(t)){let o=(n.get(r.name)??[]).filter(s=>!ml.has(s.kind)&&As(r,s));if(o.length)return{reading:r,defs:o.sort((s,a)=>$(s.file,a.file)||s.line-a.line)}}}function gl(e,t){let n=ur(e,t),r=n.length?t:Nt(e,t)?.reading.name;return r===void 0||r===t?{name:t,sites:n}:{name:r,sites:ur(e,r)}}function hl(e,t,n){let r=Nt(e,t);if(!r)return;let o=r.reading.name,s=(c,d)=>`${d}:${c}`,a=new Set;for(let c of n.values())if(c.def.name===o)for(let d of c.callers)a.add(s(d.file,d.line));for(let c of al(e).get(o)??[])a.add(s(c.file,c.line));let l=ur(e,o).filter(c=>!a.has(s(c.file,c.line)));return{name:t,error:`no tracked callers for "${t}"`,defs:r.defs.map(c=>({name:c.name,kind:c.kind,file:c.file,line:c.line})),unresolvedSites:l.length,sample:l.slice(0,5).map(c=>c.receiver!==void 0?{file:c.file,line:c.line,receiver:c.receiver}:{file:c.file,line:c.line}),hint:l.length?`${l.length} call site(s) name "${o}" but none could be bound to a single definition; raw mode (CLI --raw, MCP raw:true) lists every site, recall mode (--recall, recall:true) relaxes the JS/TS import gate`:`no call site in the index names "${o}"`}}function so(e,t){let n=Nt(e,t),r=n?.defs??[],o=n?.reading.name??t,s=Ns(e),a=s.get(o),l=[...new Set(r.map(g=>g.file))],c=[];for(let g of l){let h=a?.def.file===g?a:s.get(`${o}@${g}`);if(h)for(let _ of h.callers)c.push(l.length>1?{..._,def:g}:{..._})}c.sort((g,h)=>$(g.file,h.file)||g.line-h.line);let d=new Set,f=Nr(e).get(o),m=uy(e),p=new RegExp(`(?{"use strict";I();fe();Ze();or();gt();le();Pr();Wr();ml=new Set(["reexport","reexport-all","default"])});function My(e,t,n){if(!OR.has(n)||t<0||t>=e.length)return;let r=Bu(e[t]),o=[{t:"code",close:null,nest:0}],s=0,a=0,l=!1,c=Math.min(e.length,t+NR),d=(u,f,m)=>{let p=e[u];if(PR.test(p.slice(f+1))&&!(m&&u!==t&&(Bu(p)!==r||p.trim()[0]!=="}")))return u};for(let u=t;u1||l||s>0||a>0)continue;let g=e.slice(u+1,c).findIndex(_=>_.trim()!=="");if(g<0)return;let h=e[u+1+g];if(!h.trim().startsWith("{")&&!(/[,:=>|&+\-*/?.]/.test(m)&&Bu(h).length>r.length&&h.startsWith(r)))return}}function LR(e,t,n){let r=e[t];if(n==="swift"){let c=0;for(;e[t+c]==="#";)c++;if(e[t+c]!=='"')return r==="`"?Cy("`"):void 0;let d=e.startsWith('"""',t+c),u=d?'"""':'"';return{frame:{t:"str",quote:u,hashes:c,escapes:c===0,interp:"swift",multiline:d},length:c+u.length}}if(n==="kotlin")return e.startsWith('"""',t)?{frame:{t:"str",quote:'"""',hashes:0,escapes:!1,interp:"dollar",multiline:!0},length:3}:r==='"'?{frame:{t:"str",quote:'"',hashes:0,escapes:!0,interp:"dollar",multiline:!1},length:1}:r==="'"?{frame:{t:"str",quote:"'",hashes:0,escapes:!0,interp:null,multiline:!1},length:1}:r==="`"?Cy("`"):void 0;let o=r==="r"&&(e[t+1]==='"'||e[t+1]==="'")&&!/[\w$]/.test(e[t-1]??""),s=o?t+1:t;if(e[s]!=='"'&&e[s]!=="'")return;let a=e.startsWith(e[s].repeat(3),s),l=a?e[s].repeat(3):e[s];return{frame:{t:"str",quote:l,hashes:0,escapes:!o,interp:o?null:"dollar",multiline:a},length:(o?1:0)+l.length}}function Cy(e){return{frame:{t:"str",quote:e,hashes:0,escapes:!1,interp:null,multiline:!1},length:e.length}}function HR(e,t,n){return t==="rust"&&Iy.test(e)?!1:Ay.has(t)&&(e.startsWith("//")||e.startsWith("/*")&&e.endsWith("*/"))||DR.has(t)&&e.startsWith("#")&&!(n===0&&e.startsWith("#!"))?!0:jR.has(t)&&e.startsWith("--")}function Ty(e,t){return WR.has(t)&&/^@[A-Za-z_]/.test(e)||BR.has(t)&&/^#\[/.test(e)||UR.has(t)&&e.startsWith("[")?!0:t==="cpp"&&/^template\b/.test(e)}function $y(e){let t=0;for(let n of e.replace(/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`/g,""))n==="("||n==="["||n==="{"?t++:(n===")"||n==="]"||n==="}")&&t--;return t}function GR(e,t,n){let r=e[t].trim(),o=Math.max(0,t-zR);if(Ay.has(n)&&r.endsWith("*/")){for(let a=t;a>=o;a--){let l=e[a];if(l.lastIndexOf("/*")<0)continue;let d=l.trim();return d.startsWith("/*")&&!(n==="rust"&&Iy.test(d))?a:void 0}return}if(n==="elixir"&&r.endsWith('"""')){for(let a=t-1;a>=o;a--)if(e[a].includes('"""'))return/^@\w+\s.*"""\s*$/.test(e[a].trim())?a:void 0;return}if(n==="cpp"&&r.endsWith(">")){for(let a=t;a>=o&&e[a].trim()!=="";a--)if(/^template\b/.test(e[a].trim()))return a;return}if(!/[)\]}]$/.test(r))return;let s=0;for(let a=t;a>=o;a--){let l=e[a];if(l.trim()===""||(s+=$y(l),s>0))return;if(s===0)return Ty(l.trim(),n)?a:void 0}}function Fy(e,t,n){let r=t;for(let o=t-1;o>=0;){let s=e[o].trim();if(s==="")break;if(HR(s,n,o)||Ty(s,n)&&$y(s)===0){r=o--;continue}let a=GR(e,o,n);if(a===void 0)break;r=a,o=a-1}return r}var OR,NR,PR,Bu,Ay,DR,jR,WR,BR,UR,zR,Iy,Oy=z(()=>{"use strict";I();OR=new Set(["swift","kotlin","dart"]),NR=1e4,PR=/^\s*[;,]?\s*(?:\/\/.*)?$/,Bu=e=>/^\s*/.exec(e)[0];Ay=new Set(["typescript","javascript","java","kotlin","scala","dart","swift","go","rust","csharp","c","cpp","php","zig","solidity","hcl","terraform"]),DR=new Set(["python","ruby","shell","elixir","php","hcl","terraform"]),jR=new Set(["lua"]),WR=new Set(["python","typescript","javascript","java","kotlin","scala","dart","swift","elixir"]),BR=new Set(["rust","php"]),UR=new Set(["csharp","cpp"]),zR=200,Iy=/^(?:\/\/!|\/\*!|#!\[)/});function jy(e,t,n,r){let o=_n(e,t,{maxResults:1/0}),s=n===void 0?void 0:VR(e.root,n);n!==void 0&&(o=o.filter(c=>c.file===n||c.file===s));let a=s!==void 0?` in ${s}`:"";if(o.length===0){let c=_n(e,t,{substring:!0,maxResults:5}).map(d=>`${d.file}:${d.line} ${d.parent?d.parent+"/":""}${d.name}`).join(", ");throw new Error(`no symbol matches "${t}"${a}${c?` \u2014 near matches: ${c}`:""}`)}if(r!==void 0){let c=o;if(o=c.filter(d=>d.line===r),!o.length){let d=m=>(m.endLine??m.line)-m.line,u=c.filter(m=>m.line<=r&&r<=(m.endLine??m.line)),f=Math.min(...u.map(d));o=u.filter(m=>d(m)===f)}if(!o.length)throw new Error(`no "${t}"${a} is declared at or spans line ${r} \u2014 candidates: ${Ny(c)}`)}if(o.length===1)return o[0];if(new Set(o.map(c=>c.file)).size===1){let c=o.map(d=>d.line).join(", ");throw new Error(`"${t}" is ambiguous (${o.length} declarations in ${o[0].file}, lines ${c}) \u2014 pass \`line\`: one of ${c}`)}throw new Error(`"${t}" is ambiguous (${o.length} matches: ${Ny(o)}) \u2014 qualify with \`file\` or a Parent/name path, and \`line\` for same-file homonyms`)}function Ny(e){let t=e.slice(0,Uu).map(n=>`${n.file}:${n.line}`).join(", ");return e.length>Uu?`${t}, \u2026 ${e.length-Uu} more`:t}function VR(e,t){let n=Ne(t)?De(e,t):t;return q.normalize(n.replace(/\\/g,"/"))}function JR(e){let t=ps(e);if(!t.ok)throw new Error(`cannot read ${e}`);if(t.binary||t.encoding===null)throw new Error(`cannot edit a binary file: ${e}`);let n=t.encoding;if((n==="utf16le"||n==="utf16be")&&(t.bytes-2)%2)throw new Error("cannot edit malformed UTF-16 source: odd byte length");let r=t.text.split(/(\r?\n)/),o=[],s=[];for(let l=0;lc)??e.newline,l=n?s[t+n-1]:t0&&(s[t-1]=a),o.splice(t,n,...r),s.splice(t,n,...r.map((c,d)=>d===r.length-1?l:a))}function XR(e){return e.replace(/\r\n/g,` `).replace(/^\n+|\n+$/g,"").split(` -`)}function AR(e,t,n=Je){let r=nt(e),o=Ae(r).mode,s;try{s=yr(j(Ce(r),".codeindex-edit-"))}catch{st(r,t),qo(r,o);return}let a=j(s,je(r));try{st(a,t),qo(a,o);try{kn(a,r)}catch{st(r,t),qo(r,o)}}finally{try{n(s,{recursive:!0,force:!0})}catch{}}}function Ry(e,t,n,r){if(r&&r.hash===Re(n)&&r.symbols.some(s=>s.endLine!==void 0)===IR(t))return{symbols:r.symbols,truncated:r.truncated===!0};let o=Mi(e,t,n);return{symbols:o.symbols,truncated:o.truncated===!0}}function TR(e,t){let n=t.symbols.filter(o=>o.name===e.name&&o.line===e.line&&!Ey.has(o.kind)),r=n.find(o=>o.kind===e.kind&&o.parent===e.parent)??n[0];if(!r)throw new Error(`"${e.name}" is no longer declared at ${e.file}:${e.line} \u2014 the file changed after it was indexed; re-scan and retry`);return r}function Sy(e,t,n){if(e.endLine!==void 0)return e.endLine;let r=py(t,e.line-1,e.lang);if(r!==void 0)return r+1;let o=Mr(n)!==void 0?"; `codeindex grammars pull` installs its AST grammar":"";throw new Error(`cannot tell where "${e.name}" ends in ${e.file}: ${e.lang} symbols come from the regex tier, which records only the first line${o}. Inserting before the symbol still works; otherwise edit the file directly`)}function $R(e,t,n,r,o,s){let a=[],{index:l,count:c,len:d,target:u}=s,f=l+1,m=l+c,p=l+d,g=d-c,h=n.truncated?void 0:Ry(e,t,o);if(h&&!h.truncated){let y=c?f:l,b=(R,$,E)=>R===void 0||R>=y&&R<=$?"":`-${R>$?R+E:R}`,w=(R,$,E)=>{let x=new Map;for(let v of R){if(Ey.has(v.kind)||v.line>=f&&v.line<=$)continue;let P=b(v.endLine,$,E),O=`${v.kind} ${no(v)} ${v.line>$?v.line+E:v.line}${P}`,L=x.get(O);L?L.n++:x.set(O,{n:1,label:`${no(v)} (${v.kind}, ${P?`lines ${v.line}-${v.endLine}`:`line ${v.line}`})`})}return x},S=w(n.symbols,m,g),k=w(h.symbols,p,0),M=(R,$)=>[...R.keys()].filter(E=>R.get(E).n>($.get(E)?.n??0)).sort(T),N=M(S,k),A=M(k,S);if(N.length||A.length){let R=(E,x)=>E.slice(0,5).map(v=>x.get(v).label).join(", ")+(E.length>5?`, \u2026 ${E.length-5} more`:""),$=[N.length?`lost ${R(N,S)}`:"",A.length?`gained ${R(A,k)}`:""];a.push(`the edit changed declarations outside lines ${f}-${p}: ${$.filter(Boolean).join("; ")}`)}u&&!h.symbols.some(R=>R.line>=f&&R.line<=p&&R.name===u.name&&no(R)===no(u))&&a.push(`"${no(u)}" is no longer declared in lines ${f}-${p}`)}let _=ky(t,o);if(_?.length){let y=new Set((ky(t,r)??[]).map(w=>w>m?w+g:w)),b=_.filter(w=>!y.has(w));b.length&&a.push(`the edited file has ${b.length} new syntax error(s), first at line ${b[0]}`)}return a}function ky(e,t){let n=Mr(e);if(!n||!Le(n))return;let o=bs(n)?.parse(t);if(o)try{let s=[],a=o.rootNode.hasError?[o.rootNode]:[];for(;a.length;){let l=a.pop();(l.isError||l.isMissing)&&s.push(l.startPosition.row+1);for(let c of l.children)c.hasError&&a.push(c)}return s.sort((l,c)=>l-c)}finally{o.delete()}}function Fu(e,t,n,r,o,s={}){let a=vy(e,t,o,s.line),l=j(e.root,a.file),c=RR(l),d=c.text(),u=dr(e).get(a.file),f=u?.ext??Un(a.file),m=Ry(a.file,f,d,u),p=TR(a,m),g=CR(n),h,_=0,y=g;if(r==="replace")h=p.line-1,_=Sy(p,c.lines,f)-h;else{h=r==="after"?Sy(p,c.lines,f):by(c.lines,p.line-1,p.lang);let S=ER.has(p.kind);y=[...S&&h>0&&c.lines[h-1].trim()!==""?[""]:[],...g,...S&&h{"use strict";I();ve();pe();Ps();mt();Fa();ft();si();bt();wy();ce();ER=new Set(["function","method","class","interface","struct","trait","enum","def"]),Ey=new Set(["reexport","reexport-all","default"]),$u=20;IR=e=>{let t=Mr(e);return t!==void 0&&Le(t)};no=e=>{let t=e.parentPath??e.parent;return t?`${t}/${e.name}`:e.name}});function My(e){let t=e.replace(/^mem:/,"").replace(/\.md$/,"");if(!t)throw new Error("memory name is empty");let n=t.split("/");for(let r of n){if(!r||r==="."||r===".."||r.includes("\\"))throw new Error(`invalid memory name: "${e}"`);if(!/^[\w][\w.-]*$/.test(r))throw new Error(`invalid memory name segment: "${r}"`)}return t}function Du(e,t){let n=nt(e);for(let r of[...FR,...t]){n=j(n,r);try{let o=zn(n);if(o.isSymbolicLink())throw new Error(`memory path contains a symbolic link: ${n}`);if(o.isFile()&&o.nlink>1)throw new Error(`memory path contains a hard link: ${n}`)}catch(o){if(o.code!=="ENOENT")throw o}}return n}function pl(e,t){return Du(e,`${My(t)}.md`.split("/"))}function ro(e,t,n){let r=pl(e,t);return Xt(Ce(r),{recursive:!0}),pl(e,t),st(r,n.endsWith(` +`)}function ZR(e,t,n=Ke){let r=st(e),o=Ae(r).mode,s;try{s=br(j(Me(r),".codeindex-edit-"))}catch{ot(r,t),Ko(r,o);return}let a=j(s,je(r));try{ot(a,t),Ko(a,o);try{En(a,r)}catch{ot(r,t),Ko(r,o)}}finally{try{n(s,{recursive:!0,force:!0})}catch{}}}function Wy(e,t,n,r){if(r&&r.hash===Re(n)&&r.symbols.some(s=>s.endLine!==void 0)===YR(t))return{symbols:r.symbols,truncated:r.truncated===!0};let o=Ii(e,t,n);return{symbols:o.symbols,truncated:o.truncated===!0}}function QR(e,t){let n=t.symbols.filter(o=>o.name===e.name&&o.line===e.line&&!Dy.has(o.kind)),r=n.find(o=>o.kind===e.kind&&o.parent===e.parent)??n[0];if(!r)throw new Error(`"${e.name}" is no longer declared at ${e.file}:${e.line} \u2014 the file changed after it was indexed; re-scan and retry`);return r}function Py(e,t,n){if(e.endLine!==void 0)return e.endLine;let r=My(t,e.line-1,e.lang);if(r!==void 0)return r+1;let o=Ar(n)!==void 0?"; `codeindex grammars pull` installs its AST grammar":"";throw new Error(`cannot tell where "${e.name}" ends in ${e.file}: ${e.lang} symbols come from the regex tier, which records only the first line${o}. Inserting before the symbol still works; otherwise edit the file directly`)}function eC(e,t,n,r,o,s){let a=[],{index:l,count:c,len:d,target:u}=s,f=l+1,m=l+c,p=l+d,g=d-c,h=n.truncated?void 0:Wy(e,t,o);if(h&&!h.truncated){let y=c?f:l,b=(C,A,S)=>C===void 0||C>=y&&C<=A?"":`-${C>A?C+S:C}`,x=(C,A,S)=>{let w=new Map;for(let E of C){if(Dy.has(E.kind)||E.line>=f&&E.line<=A)continue;let P=b(E.endLine,A,S),N=`${E.kind} ${io(E)} ${E.line>A?E.line+S:E.line}${P}`,L=w.get(N);L?L.n++:w.set(N,{n:1,label:`${io(E)} (${E.kind}, ${P?`lines ${E.line}-${E.endLine}`:`line ${E.line}`})`})}return w},k=x(n.symbols,m,g),v=x(h.symbols,p,0),T=(C,A)=>[...C.keys()].filter(S=>C.get(S).n>(A.get(S)?.n??0)).sort($),F=T(k,v),R=T(v,k);if(F.length||R.length){let C=(S,w)=>S.slice(0,5).map(E=>w.get(E).label).join(", ")+(S.length>5?`, \u2026 ${S.length-5} more`:""),A=[F.length?`lost ${C(F,k)}`:"",R.length?`gained ${C(R,v)}`:""];a.push(`the edit changed declarations outside lines ${f}-${p}: ${A.filter(Boolean).join("; ")}`)}u&&!h.symbols.some(C=>C.line>=f&&C.line<=p&&C.name===u.name&&io(C)===io(u))&&a.push(`"${io(u)}" is no longer declared in lines ${f}-${p}`)}let _=Ly(t,o);if(_?.length){let y=new Set((Ly(t,r)??[]).map(x=>x>m?x+g:x)),b=_.filter(x=>!y.has(x));b.length&&a.push(`the edited file has ${b.length} new syntax error(s), first at line ${b[0]}`)}return a}function Ly(e,t){let n=Ar(e);if(!n||!Le(n))return;let o=Ss(n)?.parse(t);if(o)try{let s=[],a=o.rootNode.hasError?[o.rootNode]:[];for(;a.length;){let l=a.pop();(l.isError||l.isMissing)&&s.push(l.startPosition.row+1);for(let c of l.children)c.hasError&&a.push(c)}return s.sort((l,c)=>l-c)}finally{o.delete()}}function zu(e,t,n,r,o,s={}){let a=jy(e,t,o,s.line),l=j(e.root,a.file),c=JR(l),d=c.text(),u=dr(e).get(a.file),f=u?.ext??un(a.file),m=Wy(a.file,f,d,u),p=QR(a,m),g=XR(n),h,_=0,y=g;if(r==="replace")h=p.line-1,_=Py(p,c.lines,f)-h;else{h=r==="after"?Py(p,c.lines,f):Fy(c.lines,p.line-1,p.lang);let k=qR.has(p.kind);y=[...k&&h>0&&c.lines[h-1].trim()!==""?[""]:[],...g,...k&&h{"use strict";I();Ee();fe();js();gt();Pa();pt();oi();xt();Oy();le();qR=new Set(["function","method","class","interface","struct","trait","enum","def"]),Dy=new Set(["reexport","reexport-all","default"]),Uu=20;YR=e=>{let t=Ar(e);return t!==void 0&&Le(t)};io=e=>{let t=e.parentPath??e.parent;return t?`${t}/${e.name}`:e.name}});function By(e){let t=e.replace(/^mem:/,"").replace(/\.md$/,"");if(!t)throw new Error("memory name is empty");let n=t.split("/");for(let r of n){if(!r||r==="."||r===".."||r.includes("\\"))throw new Error(`invalid memory name: "${e}"`);if(!/^[\w][\w.-]*$/.test(r))throw new Error(`invalid memory name segment: "${r}"`)}return t}function Ju(e,t){let n=st(e);for(let r of[...tC,...t]){n=j(n,r);try{let o=Hn(n);if(o.isSymbolicLink())throw new Error(`memory path contains a symbolic link: ${n}`);if(o.isFile()&&o.nlink>1)throw new Error(`memory path contains a hard link: ${n}`)}catch(o){if(o.code!=="ENOENT")throw o}}return n}function yl(e,t){return Ju(e,`${By(t)}.md`.split("/"))}function oo(e,t,n){let r=yl(e,t);return Zt(Me(r),{recursive:!0}),yl(e,t),ot(r,n.endsWith(` `)?n:n+` -`),My(t)}function ju(e,t){try{return le(pl(e,t),"utf8")}catch{return}}function Wu(e,t){let n=pl(e,t);try{Ae(n)}catch{return!1}return Je(n),!0}function Bu(e){let t;try{t=Du(e,[])}catch{return[]}let n=[],r=(o,s)=>{let a;try{a=Gn(o,{withFileTypes:!0})}catch{return}for(let l of a)if(!l.isSymbolicLink()){if(l.isDirectory())r(j(o,l.name),s?`${s}/${l.name}`:l.name);else if(l.isFile()&&l.name.endsWith(".md")){let c=s?`${s}/${l.name.slice(0,-3)}`:l.name.slice(0,-3);try{Du(e,`${c}.md`.split("/")),n.push(c)}catch{}}}};return r(t,""),n.sort()}var FR,gl=H(()=>{"use strict";I();ve();pe();FR=[".codeindex","memories"]});function bn(e,t,n){let r=ie(e);if(!r)return;let o;try{o=JSON.parse(r)}catch(s){if(o=$r(r),o===void 0){if(t&&n){let a=String(s instanceof Error?s.message:s).split(` -`)[0];n.push(`malformed ${t}: ${a}`)}return}}if(o&&typeof o=="object"&&!Array.isArray(o))return o;t&&n&&n.push(`malformed ${t}: not a JSON object`)}function ln(e,t){let n=new RegExp(`^\\[${yt(t)}\\]\\s*$([\\s\\S]*?)(?=^\\[|$(?![\\s\\S]))`,"m"),r=e.match(n);return r?r[1]:null}function so(e,t){let n=e.match(new RegExp(`${yt(t)}\\s*=\\s*\\[([^\\]]*)\\]`));return n?n[1].split(/\r?\n/).map(r=>r.replace(/#.*$/,"")).join(` -`).split(",").map(r=>r.trim().replace(/^["']|["']$/g,"")).filter(Boolean):[]}function qt(e,t){return e?.match(new RegExp(`^\\s*${yt(t)}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]}function zu(e){let t="";for(let n=0;nOR(e,t,n,r),s=()=>NR(e,t),a=()=>PR(e,t),l=()=>LR(e,t),c=()=>DR(e,t),d=()=>jR(e,t,r),u=()=>WR(e,t,r),m=n==="go"?[a,o,s,l,c,d,u]:n==="uv"?[c,o,s,a,l,d,u]:n==="composer"?[d,o,c,s,a,l,u]:n==="gradle"?[o,l,s,a,c,d,u,()=>BR(e,t)]:[o,s,a,l,c,d,u];for(let p of m){let g=p();if(g)return g}}function Ay(e){return e.replace(/[\s\S]*?<\/parent>/g,"").replace(/[\s\S]*?<\/dependencies>/g,"").match(/\s*([^<]+?)\s*<\/artifactId>/)?.[1]}function Ls(e,t,n,r,o){let s=t.replace(/^\.\//,"").replace(/\/+$/,"");if(!s||s==="."||n.has(s)||s.split("/").includes(".."))return;let a=UR(e,s,r,o);a&&n.set(s,a)}function HR(e,t){try{return Ae(j(e,t)).isDirectory()}catch{return!1}}function Iy(e,t){let n;try{n=Gn(t?j(e,t):e,{withFileTypes:!0})}catch{return[]}return n.filter(r=>r.isDirectory()&&!r.name.startsWith(".")&&!Cy.has(r.name)).map(r=>t?`${t}/${r.name}`:r.name).sort(T)}function Ty(e,t,n,r){if(!(n>Hu))for(let o of Iy(e,t))r.push(o),Ty(e,o,n+1,r)}function zR(e,t){let n=t.split("/").filter(o=>o&&o!==".");if(n.includes(".."))return[];let r=[""];for(let o of n){let s=new Set;if(o==="**")for(let a of r){a&&s.add(a);let l=[];Ty(e,a,0,l);for(let c of l)s.add(c)}else if(o.includes("*")){let a=new RegExp(`^${o.split("*").map(yt).join("[^/]*")}$`);for(let l of r)for(let c of Iy(e,l))a.test(c.split("/").pop())&&s.add(c)}else for(let a of r){let l=a?`${a}/${o}`:o;HR(e,l)&&s.add(l)}if(r=[...s],!r.length)return[]}return r.filter(Boolean)}function hl(e,t,n,r,o){let s=t.replace(/^\.\//,"").replace(/\/+$/,"");if(s){if(!s.includes("*")){Ls(e,s,n,r,o);return}for(let a of zR(e,s))Ls(e,a,n,r,o)}}function GR(e,t){let n=[],r=[],o=(l,c)=>{let d=l.trim();d&&(d.startsWith("!")?r.push(d.slice(1)):n.push({pattern:d,kind:c}))},a=bn(j(e,"package.json"),"package.json",t)?.workspaces;if(Array.isArray(a))for(let l of a)typeof l=="string"&&o(l,"npm");else if(a&&typeof a=="object"&&Array.isArray(a.packages))for(let l of a.packages)typeof l=="string"&&o(l,"npm");for(let l of VR(ie(j(e,"pnpm-workspace.yaml"))))o(l,"pnpm");return{positives:n,negations:r}}function Uu(e){let t="";for(let n=0;ntypeof o=="string").map(o=>({pattern:o,kind:"lerna"}));let r=bn(j(e,"nx.json"),"nx.json",t);if(r){let o=r.workspaceLayout??{},s=typeof o.appsDir=="string"?o.appsDir:"apps",a=typeof o.libsDir=="string"?o.libsDir:"libs";return[...new Set([s,a])].map(l=>({pattern:`${l}/*`,kind:"nx"}))}return[]}function KR(e,t,n){let r=ie(j(e,"Cargo.toml"));if(!r)return;let o=ln(r,"workspace");if(!o)return;let s=so(o,"members");if(!s.length)return;let a=so(o,"exclude").map(zu),l=new Map;for(let c of s)hl(e,c,l,"cargo",n);for(let[c,d]of l)a.some(u=>u.test(c))||t.has(c)||t.set(c,d)}function $y(e,t,n,r){let o;try{o=Gn(t?j(e,t):e,{withFileTypes:!0})}catch{return}if(t&&o.some(a=>a.name==="go.mod"&&!a.isDirectory())&&r.push(t),n>Hu)return;let s=o.filter(a=>a.isDirectory()&&!/^[._]/.test(a.name)&&!Cy.has(a.name)&&!XR.has(a.name)).map(a=>a.name).sort(T);for(let a of s)$y(e,t?`${t}/${a}`:a,n+1,r)}function ZR(e,t,n){let r=ie(j(e,"go.work"));if(!r){if(te(j(e,"go.work")))return;let s=[];$y(e,"",0,s);for(let a of s)Ls(e,a,t,"go",n);return}let o=[];for(let s of r.matchAll(/^use\s*\(([\s\S]*?)\)/gm))for(let a of s[1].split(/\r?\n/)){let l=a.replace(/\/\/.*$/,"").trim();l&&o.push(l)}for(let s of r.matchAll(/^use\s+([^\s(]+)/gm))o.push(s[1]);for(let s of o)s==="."||s==="./"||Ls(e,s,t,"go",n)}function YR(e,t,n){let r=new Set,o=(s,a)=>{if(a>Hu||r.has(s))return;r.add(s);let l=ie(j(e,s,"pom.xml")).replace(//g,"");for(let c of l.matchAll(/([\s\S]*?)<\/modules>/g))for(let d of c[1].matchAll(/\s*([^<]+?)\s*<\/module>/g)){let u=d[1].endsWith(".xml")?G.dirname(d[1]):d[1],f=G.normalize(G.join(s||".",u)).replace(/\/+$/,"");f==="."||f===".."||f.startsWith("../")||(Ls(e,f,t,"maven",n),o(f,a+1))}};o("",0)}function QR(e,t,n){let r=ie(j(e,"pyproject.toml"));if(!r)return;let o=ln(r,"tool.uv.workspace");if(!o)return;let s=so(o,"members");if(!s.length)return;let a=so(o,"exclude").map(zu),l=new Map;for(let c of s)hl(e,c,l,"uv",n);for(let[c,d]of l)a.some(u=>u.test(c))||t.has(c)||t.set(c,d)}function eM(e,t,n){let o=bn(j(e,"composer.json"),"composer.json",n)?.repositories;if(Array.isArray(o))for(let s of o){if(!s||typeof s!="object")continue;let{type:a,url:l}=s;a==="path"&&typeof l=="string"&&l&&hl(e,l,t,"composer",n)}}function tM(e,t,n){for(let r of["settings.gradle","settings.gradle.kts"]){let o=ie(j(e,r));if(!o)continue;let s=o.replace(/\/\*[\s\S]*?\*\//g,"").replace(/(^|[^:])\/\/.*$/gm,"$1");for(let a of s.matchAll(/^[ \t]*include\b[ \t]*(\([^)]*\)|(?:[^\n]*,[ \t]*\r?\n)*[^\n]*)/gm))for(let l of a[1].matchAll(/["']([^"']+)["']/g)){let c=l[1].replace(/^:/,"").replace(/:/g,"/");c&&Ls(e,c,t,"gradle",n)}}}function nM(e,t,n,r){let o=bn(j(e,t.dir,"package.json"),`${t.dir}/package.json`,r);if(!o)return[];let s=new Set;for(let a of["dependencies","devDependencies","peerDependencies"]){let l=o[a];if(!(!l||typeof l!="object"))for(let c of Object.keys(l))c!==t.name&&n.has(c)&&s.add(c)}return[...s]}function Fy(e,t){let n=`${e}/${t}`.split("/"),r=[];for(let o of n)!o||o==="."||(o===".."?r.pop():r.push(o));return r.join("/")}function rM(e,t,n,r){let o=ie(j(e,t.dir,"Cargo.toml"));if(!o)return[];let s=new Set;for(let a of["dependencies","dev-dependencies","build-dependencies"]){let l=ln(o,a);if(l)for(let c of l.split(/\r?\n/)){let d=c.match(/^\s*([A-Za-z0-9_-]+)\s*=\s*(.+)$/);if(!d)continue;let u=d[1];if(u!==t.name&&n.has(u)){s.add(u);continue}let f=d[2].match(/path\s*=\s*["']([^"']+)["']/);if(f){let m=r.get(Fy(t.dir,f[1]));m&&m!==t.name&&s.add(m)}}}return[...s]}function sM(e,t,n,r){let o=ie(j(e,t.dir,"go.mod"));if(!o)return[];let s=new Set;for(let a of o.matchAll(/^\s*(?:require\s+)?([^\s/(][^\s]*)\s+v[^\s]+/gm)){let l=a[1];l!==t.name&&n.has(l)&&s.add(l)}for(let a of o.matchAll(/^\s*(?:replace\s+)?(\S+)(?:\s+\S+)?\s*=>\s*(\.\.?\/\S+)/gm)){let l=r.get(Fy(t.dir,a[2]));l&&l!==t.name&&s.add(l)}return[...s]}function iM(e,t,n){let r=ie(j(e,t.dir,"pom.xml"));if(!r)return[];let o=new Set;for(let s of r.replace(/[\s\S]*?<\/parent>/g,"").matchAll(/([\s\S]*?)<\/dependency>/g)){let a=s[1].match(/\s*([^<]+?)\s*<\/artifactId>/)?.[1];a&&a!==t.name&&n.has(a)&&o.add(a)}return[...o]}function oM(e,t,n){let r=ie(j(e,t.dir,"pyproject.toml"));if(!r)return[];let o=new Set,s=ln(r,"project");if(s)for(let l of so(s,"dependencies")){let c=l.match(/^[A-Za-z0-9_.-]+/)?.[0];c&&c!==t.name&&n.has(c)&&o.add(c)}let a=ln(r,"tool.uv.sources");if(a)for(let l of a.split(/\r?\n/)){let c=l.match(/^\s*([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*workspace\s*=\s*true/);c&&c[1]!==t.name&&n.has(c[1])&&o.add(c[1])}return[...o]}function aM(e,t,n,r){let o=bn(j(e,t.dir,"composer.json"),`${t.dir}/composer.json`,r);if(!o)return[];let s=new Set;for(let a of["require","require-dev"]){let l=o[a];if(!(!l||typeof l!="object"))for(let c of Object.keys(l))c!==t.name&&n.has(c)&&s.add(c)}return[...s]}function lM(e){return e.split("/").map(t=>t.replace(/[-_]+([A-Za-z0-9])/g,(n,r)=>r.toUpperCase())).join(".")}function cM(e,t,n,r,o){for(let s of["build.gradle","build.gradle.kts"]){let a=ie(j(e,t.dir,s));if(!a)continue;let l=new Set;for(let c of a.matchAll(/project\s*\(\s*(?:path\s*[:=]\s*)?["']:?([^"']+)["']/g)){let d=c[1].replace(/:/g,"/"),u=r.get(d)??(n.has(d)?d:void 0);u&&u!==t.name&&l.add(u)}for(let c of a.matchAll(/\bprojects((?:\.[A-Za-z_]\w*)+)/g)){let d=c[1].slice(1).split(".");for(let u=d.length;u>0;u--){let f=o.get(d.slice(0,u).join("."));if(f){f!==t.name&&l.add(f);break}}}return[...l]}return[]}function dM(e,t,n,r,o,s){switch(t.kind){case"cargo":return rM(e,t,n,r);case"go":return sM(e,t,n,r);case"maven":return iM(e,t,n);case"uv":return oM(e,t,n);case"composer":return aM(e,t,n,s);case"gradle":return cM(e,t,n,r,o);default:return nM(e,t,n,s)}}function uM(e){let t=new Map(e.map(s=>[s.name,[...s.dependsOn??[]].sort(T)])),n=new Map,r=[],o=s=>{n.set(s,"visiting"),r.push(s);for(let a of t.get(s)??[])if(t.has(a)){if(n.get(a)==="visiting")return[...r.slice(r.indexOf(a)),a];if(!n.has(a)){let l=o(a);if(l)return l}}return r.pop(),n.set(s,"done"),null};for(let s of[...t.keys()].sort(T))if(!n.has(s)){let a=o(s);if(a)return a}}function fM(e){let t=new Map(e.map(r=>[r.name,new Set(r.dependsOn??[])])),n=[];for(;t.size>0;){let r=[...t.entries()].filter(([,o])=>[...o].every(s=>!t.has(s))).map(([o])=>o).sort(T);if(!r.length){n.push(...[...t.keys()].sort(T));break}for(let o of r)n.push(o),t.delete(o)}return n}function Fn(e){let t=[],n=new Map,{positives:r,negations:o}=GR(e,t),s=r.length?r:JR(e,t);if(s.length){let f=new Map;for(let{pattern:p,kind:g}of s)hl(e,p,f,g,t);let m=o.map(zu);for(let[p,g]of f)m.some(h=>h.test(p))||n.set(p,g)}KR(e,n,t),ZR(e,n,t),YR(e,n,t),QR(e,n,t),eM(e,n,t),tM(e,n,t);let a=[...n.values()].sort((f,m)=>T(f.dir,m.dir)),l=new Set(a.map(f=>f.name)),c=new Map(a.map(f=>[f.dir,f.name])),d=new Map(a.map(f=>[lM(f.dir),f.name]));for(let f of a){let m=dM(e,f,l,c,d,t);m.length&&(f.dependsOn=m.sort(T))}let u=[...a].sort((f,m)=>m.dir.length-f.dir.length);return{packages:a,cycle:uM(a),topoOrder:fM(a),warnings:[...new Set(t)].sort(T),packageOf:f=>u.find(m=>f===m.dir||f.startsWith(m.dir+"/"))}}function mM(e){return e.replace(/<(parent|dependencies|dependencyManagement|build|profiles|reporting)>[\s\S]*?<\/\1>/g,"").match(/\s*([^<]+?)\s*<\/version>/)?.[1]}function Oy(e,t,n){let r=j(e,t,n),o=ie(r);if(!o)return;let s=l=>typeof l=="string"&&l.trim()?l.trim():void 0,a=(l,c,d)=>c?{manager:l,name:c,...d?{version:d}:{}}:void 0;switch(n){case"package.json":case"composer.json":{let l=bn(r);return a(n==="package.json"?"npm":"composer",s(l?.name),s(l?.version))}case"go.mod":return a("gomod",o.match(/^module\s+"?([^\s"]+)/m)?.[1],void 0);case"Cargo.toml":{let l=ln(o,"package");return a("cargo",qt(l,"name"),qt(l,"version"))}case"pyproject.toml":{let l=ln(o,"project"),c=ln(o,"tool.poetry");return a("python",qt(l,"name")??qt(c,"name"),qt(l,"version")??qt(c,"version"))}case"pom.xml":return a("maven",Ay(o),mM(o));default:return}}function yl(e,t){let n=new Map;for(let a of t.fileEdges){if(a.kind!=="import"||a.dangling)continue;let l=e.packageOf(a.from),c=e.packageOf(a.to);if(!l||!c||l===c)continue;let d=`${l.name}\0${c.name}`,u=n.get(d);u||n.set(d,u={from:l,to:c,files:new Set}),u.files.add(a.from)}let r=[];for(let{from:a,to:l,files:c}of n.values()){if(pM.has(a.kind)||a.dependsOn?.includes(l.name))continue;let d=[...c].sort(T);r.push({from:a.name,to:l.name,files:d.length,example:d[0]})}let o=[];for(let a of e.packages)if(gM.has(a.kind))for(let l of a.dependsOn??[])n.has(`${a.name}\0${l}`)||o.push({from:a.name,to:l});let s=(a,l)=>T(a.from,l.from)||T(a.to,l.to);return{ok:r.length===0,undeclared:r.sort(s),unusedDeclared:o.sort(s)}}function _l(e,t){let n={packages:e.packages,cycle:e.cycle??null,topoOrder:e.topoOrder};return e.warnings.length&&(n.warnings=e.warnings),t&&(n.check=t),n}var Cy,Hu,qR,XR,pM,gM,Hr=H(()=>{"use strict";I();ve();pe();Xe();Cn();ce();Qe();Cy=new Set(["node_modules",".git","dist","build","target","coverage"]),Hu=4;qR=e=>e.trim().replace(/^(["'])(.*)\1$/,"$2").trim();XR=new Set(["vendor","testdata","fixtures","__fixtures__"]);pM=new Set(["nx"]),gM=new Set(["npm","pnpm","lerna","cargo","go"])});function hM(e,t){return e.modules.find(n=>n.slug===t)?.community}function SM(e,t){let n=e.length,r=new Map(e.map((l,c)=>[l,c])),o=Array.from({length:n},()=>new Map);for(let l of t){if(l.dangling)continue;let c=r.get(l.from),d=r.get(l.to);c===void 0||d===void 0||c===d||(o[c].set(d,(o[c].get(d)??0)+l.weight),o[d].set(c,(o[d].get(c)??0)+l.weight))}let s=o.map(l=>{let c=0;for(let d of l.values())c+=d;return c}),a=s.reduce((l,c)=>l+c,0);return{n,adj:o,k:s,twoM:a}}function Gu(e){let t=new Map,n=new Array(e.length);for(let r=0;ru);if(o===0)return Gu(s);let a=r.slice(),l=!0,c=0;for(;l&&ch-_)){if(g===u)continue;let h=f.get(g)-Ny*r[d]*a[g]/o;h>p+bM&&(p=h,m=g)}a[m]+=r[d],m!==u&&(s[d]=m,l=!0)}}return Gu(s)}function EM(e,t,n){let r=Array.from({length:n},()=>new Map);for(let a=0;a{let l=0;for(let c of a.values())l+=c;return l}),s=o.reduce((a,l)=>a+l,0);return{n,adj:r,k:o,twoM:s}}function Py(e){if(e.n===0)return[];let t=e,n=Array.from({length:e.n},(r,o)=>o);for(let r=0;r<_M;r++){let{comm:o,count:s}=kM(t);for(let a=0;an&&n.length>0)}function vM(e,t){let n=t.length,r=new Map;t.forEach((c,d)=>r.set(c,d));let o=Array.from({length:n},()=>new Map);for(let c=0;c{let d=0;for(let u of c.values())d+=u;return d}),a=s.reduce((c,d)=>c+d,0),l=Py({n,adj:o,k:s,twoM:a});return Ly(l).map(c=>c.map(d=>t[d]))}function RM(e,t,n){let r=[];for(let o of e){if(o.length>wM*n&&o.length>=xM){let s=vM(t,o);if(s.length>1){r.push(...s);continue}}r.push(o)}return r}function MM(e,t){if(e.length!==t.length)return t.length-e.length;for(let n=0;n({id:Number(f),set:new Set(m)})),s=[];e.forEach((f,m)=>{for(let p of o){let g=0;for(let h of f)p.set.has(h)&&g++;g>0&&s.push({ni:m,prevId:p.id,inter:g})}}),s.sort((f,m)=>m.inter-f.inter||f.ni-m.ni||f.prevId-m.prevId);let a=new Map,l=new Set;for(let f of s)a.has(f.ni)||l.has(f.prevId)||(a.set(f.ni,f.prevId),l.add(f.prevId));let c=new Set;for(let f=0;f=0&&mu.slug).sort(T),s=SM(o,t),a=Py(s),c=RM(Ly(a),s,o.length).map(u=>u.map(f=>o[f]).sort(T));c.sort(MM);let d=CM(c,n);return c.forEach((u,f)=>{for(let m of u)r.set(m,d[f])}),r}var Ny,yM,_M,bM,wM,xM,Vu=H(()=>{"use strict";I();ce();Ny=1,yM=20,_M=10,bM=1e-12,wM=.25,xM=10});function bl(e){let t=new Map,n=new Map;for(let a of e.modules)a.community!==void 0&&t.set(a.slug,a.community),n.set(a.slug,a.tier);let r=new Map,o=(a,l)=>ar.get(o(a.comms[0],a.comms[1]))<=IM).map(a=>({from:a.edge.from,to:a.edge.to,kind:a.edge.kind,weight:a.edge.weight,communities:a.comms,pairEdges:r.get(o(a.comms[0],a.comms[1]))})).sort((a,l)=>a.pairEdges-l.pairEdges||T(a.from,l.from)||T(a.to,l.to)).slice(0,AM)}function $M(e,t,n){return(e.surprises??bl(e)).some(o=>o.from===t&&o.to===n)}var AM,IM,TM,Ju=H(()=>{"use strict";I();ce();jr();AM=24,IM=2,TM=Cs});function FM(e){let t={};for(let n of Object.keys(e).sort(T))t[n]=e[n];return t}function zr(e){let t={...e,languages:FM(e.languages)};return JSON.stringify(t,null,2)+` -`}var wl=H(()=>{"use strict";I();ce()});function bC(e,t){return t!=="string"?!0:e.length>=yC||_C.test(e)}function EC(e){if(!e)return!1;for(let t=0;t")&&!"=!<>+-*/%&|^".includes(e[t-1]??""))return kC.test(e.slice(t+1));return!1}function vC(e){let t=[];for(let n of e)gC.has(n.kind)&&(EC(n.signature)||(n.endLine??n.line)-n.line>hC||t.push(n));return t}function RC(e){return`${e.file.endsWith(".go")&&e.file.includes("/")?e.file.slice(0,e.file.lastIndexOf("/")):e.file}\0${e.holder}`}function AC(e){if(e.every(n=>MC.test(n.file)))return!0;let t=Ky(e[0].file);return CC.has(t)&&e.every(n=>Ky(n.file)===t)}function IC(e,t){let n;for(let r of e){let o=r.endLine??r.line;to||(!n||r.line>n.line)&&(n=r)}return n}function Nn(e,t={}){let n=t.minFiles??Jy.minFiles,r=t.minCount??Jy.minCount,o=new Map;for(let a of e.files){if(!a.literals?.length||!t.includeTests&&$t(a.rel))continue;let l;for(let c of a.literals){if(t.kinds&&!t.kinds.has(c.kind)||!bC(c.value,c.kind))continue;let d=`${c.kind}\0${c.value}`,u=o.get(d);u||o.set(d,u={value:c.value,kind:c.kind,sites:[]});let f=IC(l??=vC(a.symbols),c.line);u.sites.push(f?{file:a.rel,line:c.line,holder:f.name,holderExported:f.exported}:{file:a.rel,line:c.line})}}let s=[];for(let a of o.values()){let l=new Set(a.sites.map(p=>p.file));if(l.sizep.holder),d=a.sites.filter(p=>!p.holder),u=new Set(c.map(p=>p.holder)),m=new Set(c.map(RC)).size>=2?"competing":c.length>0?"bypassed":"uncentralized";if(a.kind==="number"){if(u.size!==1||d.length===0)continue;m="bypassed"}m==="bypassed"&&d.length===0||s.push({value:a.value,kind:a.kind,tier:m,holders:c.sort(Xy),literals:d.sort(Xy),files:l.size,count:a.sites.length})}return s.sort((a,l)=>Zy(a.tier)-Zy(l.tier)||l.files-a.files||l.count-a.count||T(a.value,l.value)),{duplications:s,families:TC(s)}}function Xy(e,t){return T(e.file,t.file)||e.line-t.line}function Zy(e){return e==="competing"?0:e==="bypassed"?1:2}function TC(e){let t=new Map;for(let r of e){if(r.kind!=="string"||!wC.test(r.value))continue;let o=$C(r.value);if(!o)continue;let s=t.get(o);s?s.push(r):t.set(o,[r])}let n=[];for(let[r,o]of t){if(o.lengtho.files-r.files||o.count-r.count||T(r.prefix,o.prefix)),n}function $C(e){let t=e.startsWith("/")?e.slice(1):e,n=t.search(/[/:]/);if(n<=0)return;let r=(e.startsWith("/")?"/":"")+t.slice(0,n);return r.length>=SC?r:void 0}var Yy,Jy,gC,hC,yC,_C,wC,xC,SC,kC,MC,CC,Ky,js=H(()=>{"use strict";I();lr();ce();Yy=24,Jy={minFiles:2,minCount:3},gC=new Set(["const","constant","variable","enum","enumerator","property","field","static"]),hC=12,yC=6,_C=/[/:._-]/;wC=/^[/@a-z0-9][\w./:@-]*$/i,xC=2,SC=4,kC=/^\s*(?:async\b|function\b|\(|[A-Za-z_$][\w$]*\s*(?:=>|$))/;MC=/(?:^|\/)\.github\/workflows\//,CC=new Set(["package.json","pyproject.toml","composer.json","go.mod"]),Ky=e=>e.slice(e.lastIndexOf("/")+1)});function FC(e,t={}){return Pn(kt(e,t),t)}function Pn(e,t={}){let n=an(e),{modules:r,moduleOf:o}=tu(e),s=Iu(e,n,r,o,t.meta),a=qu(s.modules,s.moduleEdges,t.previousCommunities);for(let m of s.modules){let p=a.get(m.slug);p!==void 0&&(m.community=p)}let l=wu(s),c=Ji(s);for(let m of s.files)c.testFiles.has(m.rel)&&(m.testFile=!0);for(let m of s.modules){let p=c.testedByModule.get(m.slug);p?.length&&(m.testedBy=p)}let d=bl(s);d.length&&(s.surprises=d);let{duplications:u}=Nn(e);u.length&&(s.literalDuplications=u.slice(0,Yy));let f=ru(e,il(e),t.meta?.schemaVersion);return l.length?{scan:e,graph:s,symbols:f,notes:l}:{scan:e,graph:s,symbols:f}}var Sl=H(()=>{"use strict";I();Bt();mt();vs();ol();Vu();Ki();lr();Ju();js();Wi()});function LC(e){let t=!1;for(let n=0;n`\`\\${a}\` is not JavaScript regex syntax (the pattern dialect)${Qy[o]?`: ${Qy[o]}`:""}`;if(o==="<"||o===">")return s(o);if(!/[A-Za-z0-9]/.test(o))continue;if(!PC.has(o))return s(o);if(o==="x"&&!/^[0-9A-Fa-f]{2}/.test(e.slice(n+1))||o==="u"&&!/^[0-9A-Fa-f]{4}/.test(e.slice(n+1)))return s(e.slice(n,n+2));if(o==="c"&&!/^[A-Za-z]/.test(e.slice(n+1)))return s("c");if(o==="k"&&e[n+1]!=="<")return s("k");continue}if(t){if(r==="]")t=!1;else{if(r==="["&&/^\[:\^?[a-z]+:\]/.test(e.slice(n)))return"POSIX classes like [[:alpha:]] are not JavaScript regex syntax (the pattern dialect): use [A-Za-z] or \\p{L}";if((r==="&"||r==="~")&&e[n+1]===r)return`\`${r}${r}\` inside a class is set syntax in other dialects, a literal in JavaScript: escape it`}continue}r==="["&&(t=!0,e[n+1]==="^"&&n++,e[n+1]==="]"&&n++)}}function Yu(e,t=!1){let n=t?"i":"";try{return new RegExp(e,`u${n}`)}catch{let r=new RegExp(e,n),o=LC(e);if(o)throw new SyntaxError(`Invalid regular expression: /${e}/: ${o}`);return r}}function DC(e){let t=e.source,n=e.flags.includes("u"),r="",o=!1,s=!1;for(let a=0;a=55296&&u<=57343)return;r+=`\\u{${u.toString(16)}}`,a+=d[0].length}else if(c==="p"||c==="P"){if(!n)return;let d=/^\{[^}]*\}/.exec(t.slice(a+1));if(!d)return;r+=`\\${c}${d[0]}`,a+=d[0].length}else{if(/[A-Za-z0-9]/.test(c))return;c.charCodeAt(0)>127?r+=c:r+=`\\${c}`}continue}if(o){if(l==="]"){if(s)return;o=!1,r+=l}else l==="["||l==="&"||l==="~"||l==="-"&&t[a-1]==="-"?r+=`\\${l}`:r+=l;s=!1;continue}if(l==="[")o=!0,s=!0,r+=l,t[a+1]==="^"&&(r+=t[++a]);else if(l===".")r+="[^\\n\\r\\u{2028}\\u{2029}]";else if(l==="{"){let c=/^\{\d+(?:,\d*)?\}/.exec(t.slice(a));c?(r+=c[0],a+=c[0].length-1):r+="\\{"}else if(l==="}"||l==="]")r+=`\\${l}`;else if(l==="("&&t[a+1]==="?"){let c=/^\(\?(?::|<[A-Za-z_][A-Za-z0-9_]*>)/.exec(t.slice(a));if(!c)return;r+=c[0],a+=c[0].length-1}else r+=l}return o?void 0:r}function jC(e,t){let n=bp(t.globs?.map(o=>o.replace(/^(!?)\//,"$1"))),r=WC(e,t.scope);return r?n?o=>r(o)&&n(o):r:n}function WC(e,t){if(!t)return null;let n=er(e,t);if(n===".."||n.startsWith("../")||Pe(n))throw new Error(`--scope is outside the repository: ${t}`);return n===""?null:At([n,`${n}/**`])}function Qu(e,t,n){if(e.length<=n)return e;let r=Math.max(0,Math.min(t-(n>>2),e.length-n)),o=r+n,s=a=>{let l=e.charCodeAt(a);return l>=56320&&l<=57343};return r>0&&s(r)&&r++,o0?"\u2026":"")+e.slice(r,o)+(oT(t.file,n.file)||t.line-n.line)}function UC(e){let t=["--no-config","--no-messages","--color=never","--hidden","--no-require-git","--no-ignore-global","--no-ignore-parent","--no-ignore-dot","--max-filesize",String(e.maxFileBytes??NC)];e.gitignore===!1&&t.push("--no-ignore-vcs");let n=e.ignoreDirs?new Set([".git",...e.ignoreDirs]):vn;for(let r of[...n].sort(T))t.push("--glob",`!**/${BC(r)}/**`);t.push("--glob","!**/.codeindex-edit-*/**"),t.push("--glob","!**/.codeindex/**");for(let r of Yo)t.push("--iglob",`!**/${r}`);for(let r of Qo)t.push("--iglob",`!**/*${r}`);t.push("--glob","!*.min.js","--glob","!*.min.css");for(let r of e.globs??[]){let o=r.slice(1).replace(/^\//,"");r.startsWith("!")&&o.endsWith("/**")&&!/[{}[\]\\!]/.test(o)&&t.push("--glob",`!/${o}`)}return e.ignoreCase&&t.push("--ignore-case"),t}function HC(e,t,n,r,o){let s=UC(n),a=Fe("rg",[...s,"--files-with-matches","--null","--regexp",t,"./"],{cwd:e,maxBufferBytes:t_});if(a.missing)return;if(a.errorCode||a.status!==0&&a.status!==1&&!a.stdout){let p=a.stderr.split(` -`).map(_=>_.trim()).filter(Boolean),g=p.find(_=>/^error:/.test(_))??p[0]??a.errorCode??`exit ${a.status}`;return{fallback:`${/regex parse error|error parsing|not allowed|impossible to match/i.test(a.stderr)?"ripgrep rejected the pattern":"ripgrep failed"} (${g}); searched with the slower JavaScript engine`}}let l=a.stdout.split("\0").filter(Boolean).map(p=>p.replace(/^\.\//,"")).filter(p=>!r||r(p)).sort(T),c=o+1,d=[],u=[],f=(p,g)=>{let h=Fe("rg",["--no-config","--no-messages","--json",...n.ignoreCase?["--ignore-case"]:[],"--max-count",String(n.filesWithMatches?1:g),"--regexp",t,"--",...p.map(_=>`./${_}`)],{cwd:e,maxBufferBytes:t_});if(h.errorCode==="ENOBUFS"&&p.length>1){let _=p.length>>1;f(p.slice(0,_),g),f(p.slice(_),g);return}h.errorCode&&u.push(`ripgrep could not search ${p.length===1?p[0]:`${p.length} files`} (${h.errorCode})`);for(let _ of h.stdout.split(` -`)){if(!_.startsWith('{"type":"match"'))continue;let y=JSON.parse(_).data,b=y.lines.text!==void 0?W.from(y.lines.text,"utf8"):W.from(y.lines.bytes??"","base64"),w=y.path.text??W.from(y.path.bytes??"","base64").toString("utf8"),S=b.toString("utf8").replace(/\n$/,""),k=b.subarray(0,y.submatches[0]?.start??0).toString("utf8").length;d.push({file:w.replace(/^\.\//,""),line:y.line_number,col:k+1,text:Qu(S,k,r_)})}},m=F.platform==="win32"?24e3:512e3;for(let p=0,g=64;pm&&h>p));h++);f(l.slice(p,h),c-d.length),p=h}return s_(d),{hits:d.slice(0,o),filesMatched:l.length,truncated:d.length>o,notes:u}}function i_(e,t){let n=new RegExp(e.source,e.flags),r=s=>{let a=s.length;if(a>=2&&s[0]===255&&s[1]===254)return s.subarray(2,2+(a-2&-2)).toString("utf16le");if(a>=2&&s[0]===254&&s[1]===255){let l=W.from(s.subarray(2,2+(a-2&-2)));return l.swap16(),l.toString("utf16le")}if(a>=3&&s[0]===239&&s[1]===187&&s[2]===191)return s.subarray(3).toString("utf8");if(!s.includes(0))return s.toString("utf8")},o=0;for(let s=0;se.deadline){t.emit({stoppedAt:s});return}t.progress(s);let a;try{a=r(t.readFile(e.files[s][1]))}catch{a=void 0}if(!a)continue;let l=a.split(` +`),By(t)}function Ku(e,t){try{return ie(yl(e,t),"utf8")}catch{return}}function Xu(e,t){let n=yl(e,t);try{Ae(n)}catch{return!1}return Ke(n),!0}function Zu(e){let t;try{t=Ju(e,[])}catch{return[]}let n=[],r=(o,s)=>{let a;try{a=Gn(o,{withFileTypes:!0})}catch{return}for(let l of a)if(!l.isSymbolicLink()){if(l.isDirectory())r(j(o,l.name),s?`${s}/${l.name}`:l.name);else if(l.isFile()&&l.name.endsWith(".md")){let c=s?`${s}/${l.name.slice(0,-3)}`:l.name.slice(0,-3);try{Ju(e,`${c}.md`.split("/")),n.push(c)}catch{}}}};return r(t,""),n.sort()}var tC,_l=z(()=>{"use strict";I();Ee();fe();tC=[".codeindex","memories"]});function bn(e,t,n){let r=se(e);if(!r)return;let o;try{o=JSON.parse(r)}catch(s){if(o=Or(r),o===void 0){if(t&&n){let a=String(s instanceof Error?s.message:s).split(` +`)[0];n.push(`malformed ${t}: ${a}`)}return}}if(o&&typeof o=="object"&&!Array.isArray(o))return o;t&&n&&n.push(`malformed ${t}: not a JSON object`)}function cn(e,t){let n=new RegExp(`^\\[${bt(t)}\\]\\s*$([\\s\\S]*?)(?=^\\[|$(?![\\s\\S]))`,"m"),r=e.match(n);return r?r[1]:null}function ao(e,t){let n=e.match(new RegExp(`${bt(t)}\\s*=\\s*\\[([^\\]]*)\\]`));return n?n[1].split(/\r?\n/).map(r=>r.replace(/#.*$/,"")).join(` +`).split(",").map(r=>r.trim().replace(/^["']|["']$/g,"")).filter(Boolean):[]}function Vt(e,t){return e?.match(new RegExp(`^\\s*${bt(t)}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]}function ef(e){let t="";for(let n=0;nnC(e,t,n,r),s=()=>rC(e,t),a=()=>sC(e,t),l=()=>iC(e,t),c=()=>oC(e,t),d=()=>aC(e,t,r),u=()=>lC(e,t,r),m=n==="go"?[a,o,s,l,c,d,u]:n==="uv"?[c,o,s,a,l,d,u]:n==="composer"?[d,o,c,s,a,l,u]:n==="gradle"?[o,l,s,a,c,d,u,()=>cC(e,t)]:[o,s,a,l,c,d,u];for(let p of m){let g=p();if(g)return g}}function zy(e){return e.replace(/[\s\S]*?<\/parent>/g,"").replace(/[\s\S]*?<\/dependencies>/g,"").match(/\s*([^<]+?)\s*<\/artifactId>/)?.[1]}function Ws(e,t,n,r,o){let s=t.replace(/^\.\//,"").replace(/\/+$/,"");if(!s||s==="."||n.has(s)||s.split("/").includes(".."))return;let a=dC(e,s,r,o);a&&n.set(s,a)}function uC(e,t){try{return Ae(j(e,t)).isDirectory()}catch{return!1}}function Hy(e,t){let n;try{n=Gn(t?j(e,t):e,{withFileTypes:!0})}catch{return[]}return n.filter(r=>r.isDirectory()&&!r.name.startsWith(".")&&!Uy.has(r.name)).map(r=>t?`${t}/${r.name}`:r.name).sort($)}function Gy(e,t,n,r){if(!(n>Qu))for(let o of Hy(e,t))r.push(o),Gy(e,o,n+1,r)}function fC(e,t){let n=t.split("/").filter(o=>o&&o!==".");if(n.includes(".."))return[];let r=[""];for(let o of n){let s=new Set;if(o==="**")for(let a of r){a&&s.add(a);let l=[];Gy(e,a,0,l);for(let c of l)s.add(c)}else if(o.includes("*")){let a=new RegExp(`^${o.split("*").map(bt).join("[^/]*")}$`);for(let l of r)for(let c of Hy(e,l))a.test(c.split("/").pop())&&s.add(c)}else for(let a of r){let l=a?`${a}/${o}`:o;uC(e,l)&&s.add(l)}if(r=[...s],!r.length)return[]}return r.filter(Boolean)}function bl(e,t,n,r,o){let s=t.replace(/^\.\//,"").replace(/\/+$/,"");if(s){if(!s.includes("*")){Ws(e,s,n,r,o);return}for(let a of fC(e,s))Ws(e,a,n,r,o)}}function mC(e,t){let n=[],r=[],o=(l,c)=>{let d=l.trim();d&&(d.startsWith("!")?r.push(d.slice(1)):n.push({pattern:d,kind:c}))},a=bn(j(e,"package.json"),"package.json",t)?.workspaces;if(Array.isArray(a))for(let l of a)typeof l=="string"&&o(l,"npm");else if(a&&typeof a=="object"&&Array.isArray(a.packages))for(let l of a.packages)typeof l=="string"&&o(l,"npm");for(let l of gC(se(j(e,"pnpm-workspace.yaml"))))o(l,"pnpm");return{positives:n,negations:r}}function Yu(e){let t="";for(let n=0;ntypeof o=="string").map(o=>({pattern:o,kind:"lerna"}));let r=bn(j(e,"nx.json"),"nx.json",t);if(r){let o=r.workspaceLayout??{},s=typeof o.appsDir=="string"?o.appsDir:"apps",a=typeof o.libsDir=="string"?o.libsDir:"libs";return[...new Set([s,a])].map(l=>({pattern:`${l}/*`,kind:"nx"}))}return[]}function yC(e,t,n){let r=se(j(e,"Cargo.toml"));if(!r)return;let o=cn(r,"workspace");if(!o)return;let s=ao(o,"members");if(!s.length)return;let a=ao(o,"exclude").map(ef),l=new Map;for(let c of s)bl(e,c,l,"cargo",n);for(let[c,d]of l)a.some(u=>u.test(c))||t.has(c)||t.set(c,d)}function qy(e,t,n,r){let o;try{o=Gn(t?j(e,t):e,{withFileTypes:!0})}catch{return}if(t&&o.some(a=>a.name==="go.mod"&&!a.isDirectory())&&r.push(t),n>Qu)return;let s=o.filter(a=>a.isDirectory()&&!/^[._]/.test(a.name)&&!Uy.has(a.name)&&!_C.has(a.name)).map(a=>a.name).sort($);for(let a of s)qy(e,t?`${t}/${a}`:a,n+1,r)}function bC(e,t,n){let r=se(j(e,"go.work"));if(!r){if(ne(j(e,"go.work")))return;let s=[];qy(e,"",0,s);for(let a of s)Ws(e,a,t,"go",n);return}let o=[];for(let s of r.matchAll(/^use\s*\(([\s\S]*?)\)/gm))for(let a of s[1].split(/\r?\n/)){let l=a.replace(/\/\/.*$/,"").trim();l&&o.push(l)}for(let s of r.matchAll(/^use\s+([^\s(]+)/gm))o.push(s[1]);for(let s of o)s==="."||s==="./"||Ws(e,s,t,"go",n)}function wC(e,t,n){let r=new Set,o=(s,a)=>{if(a>Qu||r.has(s))return;r.add(s);let l=se(j(e,s,"pom.xml")).replace(//g,"");for(let c of l.matchAll(/([\s\S]*?)<\/modules>/g))for(let d of c[1].matchAll(/\s*([^<]+?)\s*<\/module>/g)){let u=d[1].endsWith(".xml")?q.dirname(d[1]):d[1],f=q.normalize(q.join(s||".",u)).replace(/\/+$/,"");f==="."||f===".."||f.startsWith("../")||(Ws(e,f,t,"maven",n),o(f,a+1))}};o("",0)}function xC(e,t,n){let r=se(j(e,"pyproject.toml"));if(!r)return;let o=cn(r,"tool.uv.workspace");if(!o)return;let s=ao(o,"members");if(!s.length)return;let a=ao(o,"exclude").map(ef),l=new Map;for(let c of s)bl(e,c,l,"uv",n);for(let[c,d]of l)a.some(u=>u.test(c))||t.has(c)||t.set(c,d)}function SC(e,t,n){let o=bn(j(e,"composer.json"),"composer.json",n)?.repositories;if(Array.isArray(o))for(let s of o){if(!s||typeof s!="object")continue;let{type:a,url:l}=s;a==="path"&&typeof l=="string"&&l&&bl(e,l,t,"composer",n)}}function kC(e,t,n){for(let r of["settings.gradle","settings.gradle.kts"]){let o=se(j(e,r));if(!o)continue;let s=o.replace(/\/\*[\s\S]*?\*\//g,"").replace(/(^|[^:])\/\/.*$/gm,"$1");for(let a of s.matchAll(/^[ \t]*include\b[ \t]*(\([^)]*\)|(?:[^\n]*,[ \t]*\r?\n)*[^\n]*)/gm))for(let l of a[1].matchAll(/["']([^"']+)["']/g)){let c=l[1].replace(/^:/,"").replace(/:/g,"/");c&&Ws(e,c,t,"gradle",n)}}}function EC(e,t,n,r){let o=bn(j(e,t.dir,"package.json"),`${t.dir}/package.json`,r);if(!o)return[];let s=new Set;for(let a of["dependencies","devDependencies","peerDependencies"]){let l=o[a];if(!(!l||typeof l!="object"))for(let c of Object.keys(l))c!==t.name&&n.has(c)&&s.add(c)}return[...s]}function Vy(e,t){let n=`${e}/${t}`.split("/"),r=[];for(let o of n)!o||o==="."||(o===".."?r.pop():r.push(o));return r.join("/")}function vC(e,t,n,r){let o=se(j(e,t.dir,"Cargo.toml"));if(!o)return[];let s=new Set;for(let a of["dependencies","dev-dependencies","build-dependencies"]){let l=cn(o,a);if(l)for(let c of l.split(/\r?\n/)){let d=c.match(/^\s*([A-Za-z0-9_-]+)\s*=\s*(.+)$/);if(!d)continue;let u=d[1];if(u!==t.name&&n.has(u)){s.add(u);continue}let f=d[2].match(/path\s*=\s*["']([^"']+)["']/);if(f){let m=r.get(Vy(t.dir,f[1]));m&&m!==t.name&&s.add(m)}}}return[...s]}function RC(e,t,n,r){let o=se(j(e,t.dir,"go.mod"));if(!o)return[];let s=new Set;for(let a of o.matchAll(/^\s*(?:require\s+)?([^\s/(][^\s]*)\s+v[^\s]+/gm)){let l=a[1];l!==t.name&&n.has(l)&&s.add(l)}for(let a of o.matchAll(/^\s*(?:replace\s+)?(\S+)(?:\s+\S+)?\s*=>\s*(\.\.?\/\S+)/gm)){let l=r.get(Vy(t.dir,a[2]));l&&l!==t.name&&s.add(l)}return[...s]}function CC(e,t,n){let r=se(j(e,t.dir,"pom.xml"));if(!r)return[];let o=new Set;for(let s of r.replace(/[\s\S]*?<\/parent>/g,"").matchAll(/([\s\S]*?)<\/dependency>/g)){let a=s[1].match(/\s*([^<]+?)\s*<\/artifactId>/)?.[1];a&&a!==t.name&&n.has(a)&&o.add(a)}return[...o]}function MC(e,t,n){let r=se(j(e,t.dir,"pyproject.toml"));if(!r)return[];let o=new Set,s=cn(r,"project");if(s)for(let l of ao(s,"dependencies")){let c=l.match(/^[A-Za-z0-9_.-]+/)?.[0];c&&c!==t.name&&n.has(c)&&o.add(c)}let a=cn(r,"tool.uv.sources");if(a)for(let l of a.split(/\r?\n/)){let c=l.match(/^\s*([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*workspace\s*=\s*true/);c&&c[1]!==t.name&&n.has(c[1])&&o.add(c[1])}return[...o]}function AC(e,t,n,r){let o=bn(j(e,t.dir,"composer.json"),`${t.dir}/composer.json`,r);if(!o)return[];let s=new Set;for(let a of["require","require-dev"]){let l=o[a];if(!(!l||typeof l!="object"))for(let c of Object.keys(l))c!==t.name&&n.has(c)&&s.add(c)}return[...s]}function IC(e){return e.split("/").map(t=>t.replace(/[-_]+([A-Za-z0-9])/g,(n,r)=>r.toUpperCase())).join(".")}function TC(e,t,n,r,o){for(let s of["build.gradle","build.gradle.kts"]){let a=se(j(e,t.dir,s));if(!a)continue;let l=new Set;for(let c of a.matchAll(/project\s*\(\s*(?:path\s*[:=]\s*)?["']:?([^"']+)["']/g)){let d=c[1].replace(/:/g,"/"),u=r.get(d)??(n.has(d)?d:void 0);u&&u!==t.name&&l.add(u)}for(let c of a.matchAll(/\bprojects((?:\.[A-Za-z_]\w*)+)/g)){let d=c[1].slice(1).split(".");for(let u=d.length;u>0;u--){let f=o.get(d.slice(0,u).join("."));if(f){f!==t.name&&l.add(f);break}}}return[...l]}return[]}function $C(e,t,n,r,o,s){switch(t.kind){case"cargo":return vC(e,t,n,r);case"go":return RC(e,t,n,r);case"maven":return CC(e,t,n);case"uv":return MC(e,t,n);case"composer":return AC(e,t,n,s);case"gradle":return TC(e,t,n,r,o);default:return EC(e,t,n,s)}}function FC(e){let t=new Map(e.map(s=>[s.name,[...s.dependsOn??[]].sort($)])),n=new Map,r=[],o=s=>{n.set(s,"visiting"),r.push(s);for(let a of t.get(s)??[])if(t.has(a)){if(n.get(a)==="visiting")return[...r.slice(r.indexOf(a)),a];if(!n.has(a)){let l=o(a);if(l)return l}}return r.pop(),n.set(s,"done"),null};for(let s of[...t.keys()].sort($))if(!n.has(s)){let a=o(s);if(a)return a}}function OC(e){let t=new Map(e.map(r=>[r.name,new Set(r.dependsOn??[])])),n=[];for(;t.size>0;){let r=[...t.entries()].filter(([,o])=>[...o].every(s=>!t.has(s))).map(([o])=>o).sort($);if(!r.length){n.push(...[...t.keys()].sort($));break}for(let o of r)n.push(o),t.delete(o)}return n}function On(e){let t=[],n=new Map,{positives:r,negations:o}=mC(e,t),s=r.length?r:hC(e,t);if(s.length){let f=new Map;for(let{pattern:p,kind:g}of s)bl(e,p,f,g,t);let m=o.map(ef);for(let[p,g]of f)m.some(h=>h.test(p))||n.set(p,g)}yC(e,n,t),bC(e,n,t),wC(e,n,t),xC(e,n,t),SC(e,n,t),kC(e,n,t);let a=[...n.values()].sort((f,m)=>$(f.dir,m.dir)),l=new Set(a.map(f=>f.name)),c=new Map(a.map(f=>[f.dir,f.name])),d=new Map(a.map(f=>[IC(f.dir),f.name]));for(let f of a){let m=$C(e,f,l,c,d,t);m.length&&(f.dependsOn=m.sort($))}let u=[...a].sort((f,m)=>m.dir.length-f.dir.length);return{packages:a,cycle:FC(a),topoOrder:OC(a),warnings:[...new Set(t)].sort($),packageOf:f=>u.find(m=>f===m.dir||f.startsWith(m.dir+"/"))}}function NC(e){return e.replace(/<(parent|dependencies|dependencyManagement|build|profiles|reporting)>[\s\S]*?<\/\1>/g,"").match(/\s*([^<]+?)\s*<\/version>/)?.[1]}function Jy(e,t,n){let r=j(e,t,n),o=se(r);if(!o)return;let s=l=>typeof l=="string"&&l.trim()?l.trim():void 0,a=(l,c,d)=>c?{manager:l,name:c,...d?{version:d}:{}}:void 0;switch(n){case"package.json":case"composer.json":{let l=bn(r);return a(n==="package.json"?"npm":"composer",s(l?.name),s(l?.version))}case"go.mod":return a("gomod",o.match(/^module\s+"?([^\s"]+)/m)?.[1],void 0);case"Cargo.toml":{let l=cn(o,"package");return a("cargo",Vt(l,"name"),Vt(l,"version"))}case"pyproject.toml":{let l=cn(o,"project"),c=cn(o,"tool.poetry");return a("python",Vt(l,"name")??Vt(c,"name"),Vt(l,"version")??Vt(c,"version"))}case"pom.xml":return a("maven",zy(o),NC(o));default:return}}function wl(e,t){let n=new Map;for(let a of t.fileEdges){if(a.kind!=="import"||a.dangling)continue;let l=e.packageOf(a.from),c=e.packageOf(a.to);if(!l||!c||l===c)continue;let d=`${l.name}\0${c.name}`,u=n.get(d);u||n.set(d,u={from:l,to:c,files:new Set}),u.files.add(a.from)}let r=[];for(let{from:a,to:l,files:c}of n.values()){if(PC.has(a.kind)||a.dependsOn?.includes(l.name))continue;let d=[...c].sort($);r.push({from:a.name,to:l.name,files:d.length,example:d[0]})}let o=[];for(let a of e.packages)if(LC.has(a.kind))for(let l of a.dependsOn??[])n.has(`${a.name}\0${l}`)||o.push({from:a.name,to:l});let s=(a,l)=>$(a.from,l.from)||$(a.to,l.to);return{ok:r.length===0,undeclared:r.sort(s),unusedDeclared:o.sort(s)}}function xl(e,t){let n={packages:e.packages,cycle:e.cycle??null,topoOrder:e.topoOrder};return e.warnings.length&&(n.warnings=e.warnings),t&&(n.check=t),n}var Uy,Qu,pC,_C,PC,LC,Gr=z(()=>{"use strict";I();Ee();fe();Ze();An();le();et();Uy=new Set(["node_modules",".git","dist","build","target","coverage"]),Qu=4;pC=e=>e.trim().replace(/^(["'])(.*)\1$/,"$2").trim();_C=new Set(["vendor","testdata","fixtures","__fixtures__"]);PC=new Set(["nx"]),LC=new Set(["npm","pnpm","lerna","cargo","go"])});function DC(e,t){return e.modules.find(n=>n.slug===t)?.community}function HC(e,t){let n=e.length,r=new Map(e.map((l,c)=>[l,c])),o=Array.from({length:n},()=>new Map);for(let l of t){if(l.dangling)continue;let c=r.get(l.from),d=r.get(l.to);c===void 0||d===void 0||c===d||(o[c].set(d,(o[c].get(d)??0)+l.weight),o[d].set(c,(o[d].get(c)??0)+l.weight))}let s=o.map(l=>{let c=0;for(let d of l.values())c+=d;return c}),a=s.reduce((l,c)=>l+c,0);return{n,adj:o,k:s,twoM:a}}function tf(e){let t=new Map,n=new Array(e.length);for(let r=0;ru);if(o===0)return tf(s);let a=r.slice(),l=!0,c=0;for(;l&&ch-_)){if(g===u)continue;let h=f.get(g)-Ky*r[d]*a[g]/o;h>p+BC&&(p=h,m=g)}a[m]+=r[d],m!==u&&(s[d]=m,l=!0)}}return tf(s)}function qC(e,t,n){let r=Array.from({length:n},()=>new Map);for(let a=0;a{let l=0;for(let c of a.values())l+=c;return l}),s=o.reduce((a,l)=>a+l,0);return{n,adj:r,k:o,twoM:s}}function Xy(e){if(e.n===0)return[];let t=e,n=Array.from({length:e.n},(r,o)=>o);for(let r=0;rn&&n.length>0)}function VC(e,t){let n=t.length,r=new Map;t.forEach((c,d)=>r.set(c,d));let o=Array.from({length:n},()=>new Map);for(let c=0;c{let d=0;for(let u of c.values())d+=u;return d}),a=s.reduce((c,d)=>c+d,0),l=Xy({n,adj:o,k:s,twoM:a});return Zy(l).map(c=>c.map(d=>t[d]))}function JC(e,t,n){let r=[];for(let o of e){if(o.length>UC*n&&o.length>=zC){let s=VC(t,o);if(s.length>1){r.push(...s);continue}}r.push(o)}return r}function KC(e,t){if(e.length!==t.length)return t.length-e.length;for(let n=0;n({id:Number(f),set:new Set(m)})),s=[];e.forEach((f,m)=>{for(let p of o){let g=0;for(let h of f)p.set.has(h)&&g++;g>0&&s.push({ni:m,prevId:p.id,inter:g})}}),s.sort((f,m)=>m.inter-f.inter||f.ni-m.ni||f.prevId-m.prevId);let a=new Map,l=new Set;for(let f of s)a.has(f.ni)||l.has(f.prevId)||(a.set(f.ni,f.prevId),l.add(f.prevId));let c=new Set;for(let f=0;f=0&&mu.slug).sort($),s=HC(o,t),a=Xy(s),c=JC(Zy(a),s,o.length).map(u=>u.map(f=>o[f]).sort($));c.sort(KC);let d=XC(c,n);return c.forEach((u,f)=>{for(let m of u)r.set(m,d[f])}),r}var Ky,jC,WC,BC,UC,zC,rf=z(()=>{"use strict";I();le();Ky=1,jC=20,WC=10,BC=1e-12,UC=.25,zC=10});function Sl(e){let t=new Map,n=new Map;for(let a of e.modules)a.community!==void 0&&t.set(a.slug,a.community),n.set(a.slug,a.tier);let r=new Map,o=(a,l)=>ar.get(o(a.comms[0],a.comms[1]))<=YC).map(a=>({from:a.edge.from,to:a.edge.to,kind:a.edge.kind,weight:a.edge.weight,communities:a.comms,pairEdges:r.get(o(a.comms[0],a.comms[1]))})).sort((a,l)=>a.pairEdges-l.pairEdges||$(a.from,l.from)||$(a.to,l.to)).slice(0,ZC)}function eM(e,t,n){return(e.surprises??Sl(e)).some(o=>o.from===t&&o.to===n)}var ZC,YC,QC,sf=z(()=>{"use strict";I();le();Br();ZC=24,YC=2,QC=Ts});function tM(e){let t={};for(let n of Object.keys(e).sort($))t[n]=e[n];return t}function qr(e){let t={...e,languages:tM(e.languages)};return JSON.stringify(t,null,2)+` +`}var kl=z(()=>{"use strict";I();le()});function BM(e,t){return t!=="string"?!0:e.length>=jM||WM.test(e)}function qM(e){if(!e)return!1;for(let t=0;t")&&!"=!<>+-*/%&|^".includes(e[t-1]??""))return GM.test(e.slice(t+1));return!1}function VM(e){let t=[];for(let n of e)LM.has(n.kind)&&(qM(n.signature)||(n.endLine??n.line)-n.line>DM||t.push(n));return t}function JM(e){return`${e.file.endsWith(".go")&&e.file.includes("/")?e.file.slice(0,e.file.lastIndexOf("/")):e.file}\0${e.holder}`}function ZM(e){if(e.every(n=>KM.test(n.file)))return!0;let t=c_(e[0].file);return XM.has(t)&&e.every(n=>c_(n.file)===t)}function YM(e,t){let n;for(let r of e){let o=r.endLine??r.line;to||(!n||r.line>n.line)&&(n=r)}return n}function Pn(e,t={}){let n=t.minFiles??l_.minFiles,r=t.minCount??l_.minCount,o=new Map;for(let a of e.files){if(!a.literals?.length||!t.includeTests&&Ft(a.rel))continue;let l;for(let c of a.literals){if(t.kinds&&!t.kinds.has(c.kind)||!BM(c.value,c.kind))continue;let d=`${c.kind}\0${c.value}`,u=o.get(d);u||o.set(d,u={value:c.value,kind:c.kind,sites:[]});let f=YM(l??=VM(a.symbols),c.line);u.sites.push(f?{file:a.rel,line:c.line,holder:f.name,holderExported:f.exported}:{file:a.rel,line:c.line})}}let s=[];for(let a of o.values()){let l=new Set(a.sites.map(p=>p.file));if(l.sizep.holder),d=a.sites.filter(p=>!p.holder),u=new Set(c.map(p=>p.holder)),m=new Set(c.map(JM)).size>=2?"competing":c.length>0?"bypassed":"uncentralized";if(a.kind==="number"){if(u.size!==1||d.length===0)continue;m="bypassed"}m==="bypassed"&&d.length===0||s.push({value:a.value,kind:a.kind,tier:m,holders:c.sort(d_),literals:d.sort(d_),files:l.size,count:a.sites.length})}return s.sort((a,l)=>u_(a.tier)-u_(l.tier)||l.files-a.files||l.count-a.count||$(a.value,l.value)),{duplications:s,families:QM(s)}}function d_(e,t){return $(e.file,t.file)||e.line-t.line}function u_(e){return e==="competing"?0:e==="bypassed"?1:2}function QM(e){let t=new Map;for(let r of e){if(r.kind!=="string"||!UM.test(r.value))continue;let o=eA(r.value);if(!o)continue;let s=t.get(o);s?s.push(r):t.set(o,[r])}let n=[];for(let[r,o]of t){if(o.lengtho.files-r.files||o.count-r.count||$(r.prefix,o.prefix)),n}function eA(e){let t=e.startsWith("/")?e.slice(1):e,n=t.search(/[/:]/);if(n<=0)return;let r=(e.startsWith("/")?"/":"")+t.slice(0,n);return r.length>=HM?r:void 0}var f_,l_,LM,DM,jM,WM,UM,zM,HM,GM,KM,XM,c_,Us=z(()=>{"use strict";I();lr();le();f_=24,l_={minFiles:2,minCount:3},LM=new Set(["const","constant","variable","enum","enumerator","property","field","static"]),DM=12,jM=6,WM=/[/:._-]/;UM=/^[/@a-z0-9][\w./:@-]*$/i,zM=2,HM=4,GM=/^\s*(?:async\b|function\b|\(|[A-Za-z_$][\w$]*\s*(?:=>|$))/;KM=/(?:^|\/)\.github\/workflows\//,XM=new Set(["package.json","pyproject.toml","composer.json","go.mod"]),c_=e=>e.slice(e.lastIndexOf("/")+1)});function tA(e,t={}){return Ln(vt(e,t),t)}function Ln(e,t={}){let n=ln(e),{modules:r,moduleOf:o}=du(e),s=Wu(e,n,r,o,t.meta),a=nf(s.modules,s.moduleEdges,t.previousCommunities);for(let m of s.modules){let p=a.get(m.slug);p!==void 0&&(m.community=p)}let l=Au(s),c=Zi(s);for(let m of s.files)c.testFiles.has(m.rel)&&(m.testFile=!0);for(let m of s.modules){let p=c.testedByModule.get(m.slug);p?.length&&(m.testedBy=p)}let d=Sl(s);d.length&&(s.surprises=d);let{duplications:u}=Pn(e);u.length&&(s.literalDuplications=u.slice(0,f_));let f=fu(e,ll(e),t.meta?.schemaVersion);return l.length?{scan:e,graph:s,symbols:f,notes:l}:{scan:e,graph:s,symbols:f}}var vl=z(()=>{"use strict";I();Ut();gt();Ms();cl();rf();Yi();lr();sf();Us();zi()});function iA(e){let t=!1;for(let n=0;n`\`\\${a}\` is not JavaScript regex syntax (the pattern dialect)${m_[o]?`: ${m_[o]}`:""}`;if(o==="<"||o===">")return s(o);if(!/[A-Za-z0-9]/.test(o))continue;if(!sA.has(o))return s(o);if(o==="x"&&!/^[0-9A-Fa-f]{2}/.test(e.slice(n+1))||o==="u"&&!/^[0-9A-Fa-f]{4}/.test(e.slice(n+1)))return s(e.slice(n,n+2));if(o==="c"&&!/^[A-Za-z]/.test(e.slice(n+1)))return s("c");if(o==="k"&&e[n+1]!=="<")return s("k");continue}if(t){if(r==="]")t=!1;else{if(r==="["&&/^\[:\^?[a-z]+:\]/.test(e.slice(n)))return"POSIX classes like [[:alpha:]] are not JavaScript regex syntax (the pattern dialect): use [A-Za-z] or \\p{L}";if((r==="&"||r==="~")&&e[n+1]===r)return`\`${r}${r}\` inside a class is set syntax in other dialects, a literal in JavaScript: escape it`}continue}r==="["&&(t=!0,e[n+1]==="^"&&n++,e[n+1]==="]"&&n++)}}function cf(e,t=!1){let n=t?"i":"";try{return new RegExp(e,`u${n}`)}catch{let r=new RegExp(e,n),o=iA(e);if(o)throw new SyntaxError(`Invalid regular expression: /${e}/: ${o}`);return r}}function oA(e){let t=e.source,n=e.flags.includes("u"),r="",o=!1,s=!1;for(let a=0;a=55296&&u<=57343)return;r+=`\\u{${u.toString(16)}}`,a+=d[0].length}else if(c==="p"||c==="P"){if(!n)return;let d=/^\{[^}]*\}/.exec(t.slice(a+1));if(!d)return;r+=`\\${c}${d[0]}`,a+=d[0].length}else{if(/[A-Za-z0-9]/.test(c))return;c.charCodeAt(0)>127?r+=c:r+=`\\${c}`}continue}if(o){if(l==="]"){if(s)return;o=!1,r+=l}else l==="["||l==="&"||l==="~"||l==="-"&&t[a-1]==="-"?r+=`\\${l}`:r+=l;s=!1;continue}if(l==="[")o=!0,s=!0,r+=l,t[a+1]==="^"&&(r+=t[++a]);else if(l===".")r+="[^\\n\\r\\u{2028}\\u{2029}]";else if(l==="{"){let c=/^\{\d+(?:,\d*)?\}/.exec(t.slice(a));c?(r+=c[0],a+=c[0].length-1):r+="\\{"}else if(l==="}"||l==="]")r+=`\\${l}`;else if(l==="("&&t[a+1]==="?"){let c=/^\(\?(?::|<[A-Za-z_][A-Za-z0-9_]*>)/.exec(t.slice(a));if(!c)return;r+=c[0],a+=c[0].length-1}else r+=l}return o?void 0:r}function aA(e,t){let n=Fp(t.globs?.map(o=>o.replace(/^(!?)\//,"$1"))),r=lA(e,t.scope);return r?n?o=>r(o)&&n(o):r:n}function lA(e,t){if(!t)return null;let n=er(e,t);if(n===".."||n.startsWith("../")||Ne(n))throw new Error(`--scope is outside the repository: ${t}`);return n===""?null:It([n,`${n}/**`])}function df(e,t,n){if(e.length<=n)return e;let r=Math.max(0,Math.min(t-(n>>2),e.length-n)),o=r+n,s=a=>{let l=e.charCodeAt(a);return l>=56320&&l<=57343};return r>0&&s(r)&&r++,o0?"\u2026":"")+e.slice(r,o)+(o$(t.file,n.file)||t.line-n.line)}function dA(e){let t=["--no-config","--no-messages","--color=never","--hidden","--no-require-git","--no-ignore-global","--no-ignore-parent","--no-ignore-dot","--max-filesize",String(e.maxFileBytes??rA)];e.gitignore===!1&&t.push("--no-ignore-vcs");let n=e.ignoreDirs?new Set([".git",...e.ignoreDirs]):vn;for(let r of[...n].sort($))t.push("--glob",`!**/${cA(r)}/**`);t.push("--glob","!**/.codeindex-edit-*/**"),t.push("--glob","!**/.codeindex/**");for(let r of ta)t.push("--iglob",`!**/${r}`);for(let r of na)t.push("--iglob",`!**/*${r}`);t.push("--glob","!*.min.js","--glob","!*.min.css");for(let r of e.globs??[]){let o=r.slice(1).replace(/^\//,"");r.startsWith("!")&&o.endsWith("/**")&&!/[{}[\]\\!]/.test(o)&&t.push("--glob",`!/${o}`)}return e.ignoreCase&&t.push("--ignore-case"),t}function uA(e,t,n,r,o){let s=dA(n),a=$e("rg",[...s,"--files-with-matches","--null","--regexp",t,"./"],{cwd:e,maxBufferBytes:g_});if(a.missing)return;if(a.errorCode||a.status!==0&&a.status!==1&&!a.stdout){let p=a.stderr.split(` +`).map(_=>_.trim()).filter(Boolean),g=p.find(_=>/^error:/.test(_))??p[0]??a.errorCode??`exit ${a.status}`;return{fallback:`${/regex parse error|error parsing|not allowed|impossible to match/i.test(a.stderr)?"ripgrep rejected the pattern":"ripgrep failed"} (${g}); searched with the slower JavaScript engine`}}let l=a.stdout.split("\0").filter(Boolean).map(p=>p.replace(/^\.\//,"")).filter(p=>!r||r(p)).sort($),c=o+1,d=[],u=[],f=(p,g)=>{let h=$e("rg",["--no-config","--no-messages","--json",...n.ignoreCase?["--ignore-case"]:[],"--max-count",String(n.filesWithMatches?1:g),"--regexp",t,"--",...p.map(_=>`./${_}`)],{cwd:e,maxBufferBytes:g_});if(h.errorCode==="ENOBUFS"&&p.length>1){let _=p.length>>1;f(p.slice(0,_),g),f(p.slice(_),g);return}h.errorCode&&u.push(`ripgrep could not search ${p.length===1?p[0]:`${p.length} files`} (${h.errorCode})`);for(let _ of h.stdout.split(` +`)){if(!_.startsWith('{"type":"match"'))continue;let y=JSON.parse(_).data,b=y.lines.text!==void 0?W.from(y.lines.text,"utf8"):W.from(y.lines.bytes??"","base64"),x=y.path.text??W.from(y.path.bytes??"","base64").toString("utf8"),k=b.toString("utf8").replace(/\n$/,""),v=b.subarray(0,y.submatches[0]?.start??0).toString("utf8").length;d.push({file:x.replace(/^\.\//,""),line:y.line_number,col:v+1,text:df(k,v,y_)})}},m=O.platform==="win32"?24e3:512e3;for(let p=0,g=64;pm&&h>p));h++);f(l.slice(p,h),c-d.length),p=h}return __(d),{hits:d.slice(0,o),filesMatched:l.length,truncated:d.length>o,notes:u}}function b_(e,t){let n=new RegExp(e.source,e.flags),r=s=>{let a=s.length;if(a>=2&&s[0]===255&&s[1]===254)return s.subarray(2,2+(a-2&-2)).toString("utf16le");if(a>=2&&s[0]===254&&s[1]===255){let l=W.from(s.subarray(2,2+(a-2&-2)));return l.swap16(),l.toString("utf16le")}if(a>=3&&s[0]===239&&s[1]===187&&s[2]===191)return s.subarray(3).toString("utf8");if(!s.includes(0))return s.toString("utf8")},o=0;for(let s=0;se.deadline){t.emit({stoppedAt:s});return}t.progress(s);let a;try{a=r(t.readFile(e.files[s][1]))}catch{a=void 0}if(!a)continue;let l=a.split(` `);a.endsWith(` -`)&&l.pop();let c=[],d=!1;for(let u=0;u=e.want||(o++,c.push([u+1,f.index+1,t.clip(l[u],f.index,e.textMax)]),e.firstOnly)))break}d&&t.emit({i:s,hits:c})}t.emit({done:!0})}function GC(e,t){let n,r,o;try{o=new Int32Array(new SharedArrayBuffer(8));let s=new Wa;r=s.port1,n=new Ss(zC,{eval:!0,workerData:{port:s.port2,sig:o.buffer,job:e},transferList:[s.port2]}),n.unref()}catch{let s;return i_(e,{readFile:a=>le(a),clip:Qu,emit:a=>"stoppedAt"in a?s=a.stoppedAt:t(a),progress:()=>{}}),s===void 0?{}:{stoppedAt:s}}try{for(;;){let s=Atomics.load(o,0),a=void 0;if(a){let c=a.message;if("error"in c)throw new Error(`grep worker failed: ${c.error}`);if("stoppedAt"in c)return{stoppedAt:c.stoppedAt};if("done"in c)return{};t(c);continue}let l=e.deadline-Date.now();if(l<=0){let c=Atomics.load(o,1);for(let d;d=void 0;)"i"in d.message&&d.message.i!r||r(g.rel)).map(g=>[g.rel,g.abs]).sort((g,h)=>T(g[0],h[0])),c={source:t.source,flags:t.flags,files:l,want:o+1,firstOnly:n.filesWithMatches===!0,textMax:r_,deadline:s},d=[],u=0,{stoppedAt:f}=GC(c,g=>{if(!("i"in g))return;u++;let h=l[g.i][0];for(let[_,y,b]of g.hits)d.push({file:h,line:_,col:y,text:b})}),m=[],p=f!==void 0;return p&&m.push(`the JavaScript regex engine ran out of its ${n.timeoutMs??n_} ms budget in ${l[f]?.[0]??"the last file"}: hits cover only the ${f} file${f===1?"":"s"} before it in path order \u2014 simplify the pattern, narrow scope/globs, or raise the budget (--timeout-ms)`),{hits:s_(d).slice(0,o),filesMatched:u,truncated:d.length>o,notes:m,timedOut:p}}function Ws(e,t,n={}){let r=Date.now()+(n.timeoutMs??n_),o=Yu(t,n.ignoreCase),s=n.maxHits??OC,a=jC(e,n),l=[],c;if(!n.noRipgrep&&Zt("rg")){let d=DC(o),u=d===void 0?void 0:HC(e,d,n,a,s);u&&"fallback"in u?l.push(u.fallback):u?c=u:d===void 0&&l.push("the pattern uses JavaScript-only syntax (lookaround, backreference\u2026); searched with the slower JavaScript engine")}if(c??=qC(e,o,n,a,s,r),l.push(...c.notes),c.truncated){let d=n.filesWithMatches?`${s} matching files by path`:`${s} hits by (file, line)`;l.push(`showing the first ${d}; ${c.filesMatched} files match in all \u2014 raise maxHits (--max-hits) or narrow scope/globs for the rest`)}return{hits:c.hits,truncated:c.truncated,filesMatched:c.filesMatched,timedOut:c.timedOut??!1,notes:l}}function VC(e,t,n={}){return Ws(e,t,n).hits}var OC,n_,NC,r_,PC,Qy,e_,BC,t_,zC,oo=H(()=>{"use strict";I();Wd();ve();pe();Xe();gi();Qe();ce();Bt();OC=200,n_=1e4,NC=1024*1024,r_=300,PC=new Set("bBdDwWsSfnrtvcxuk0123456789"),Qy={A:"use ^",z:"use $",Z:"use $",Q:"escape the metacharacters instead",E:"escape the metacharacters instead",h:"use [ \\t]",p:"\\p{\u2026} needs a pattern that is otherwise valid with the u flag",P:"\\P{\u2026} needs a pattern that is otherwise valid with the u flag","<":"use \\b",">":"use \\b"};e_={w:"[:word:]",W:"[:^word:]",d:"[:digit:]",D:"[:^digit:]"};BC=e=>e.replace(/[\\*?[\]{}!]/g,t=>`\\${t}`);t_=256*1024*1024;zC=`var __name = (fn) => fn; +`)&&l.pop();let c=[],d=!1;for(let u=0;u=e.want||(o++,c.push([u+1,f.index+1,t.clip(l[u],f.index,e.textMax)]),e.firstOnly)))break}d&&t.emit({i:s,hits:c})}t.emit({done:!0})}function mA(e,t){let n,r,o;try{o=new Int32Array(new SharedArrayBuffer(8));let s=new za;r=s.port1,n=new vs(fA,{eval:!0,workerData:{port:s.port2,sig:o.buffer,job:e},transferList:[s.port2]}),n.unref()}catch{let s;return b_(e,{readFile:a=>ie(a),clip:df,emit:a=>"stoppedAt"in a?s=a.stoppedAt:t(a),progress:()=>{}}),s===void 0?{}:{stoppedAt:s}}try{for(;;){let s=Atomics.load(o,0),a=void 0;if(a){let c=a.message;if("error"in c)throw new Error(`grep worker failed: ${c.error}`);if("stoppedAt"in c)return{stoppedAt:c.stoppedAt};if("done"in c)return{};t(c);continue}let l=e.deadline-Date.now();if(l<=0){let c=Atomics.load(o,1);for(let d;d=void 0;)"i"in d.message&&d.message.i!r||r(g.rel)).map(g=>[g.rel,g.abs]).sort((g,h)=>$(g[0],h[0])),c={source:t.source,flags:t.flags,files:l,want:o+1,firstOnly:n.filesWithMatches===!0,textMax:y_,deadline:s},d=[],u=0,{stoppedAt:f}=mA(c,g=>{if(!("i"in g))return;u++;let h=l[g.i][0];for(let[_,y,b]of g.hits)d.push({file:h,line:_,col:y,text:b})}),m=[],p=f!==void 0;return p&&m.push(`the JavaScript regex engine ran out of its ${n.timeoutMs??h_} ms budget in ${l[f]?.[0]??"the last file"}: hits cover only the ${f} file${f===1?"":"s"} before it in path order \u2014 simplify the pattern, narrow scope/globs, or raise the budget (--timeout-ms)`),{hits:__(d).slice(0,o),filesMatched:u,truncated:d.length>o,notes:m,timedOut:p}}function zs(e,t,n={}){let r=Date.now()+(n.timeoutMs??h_),o=cf(t,n.ignoreCase),s=n.maxHits??nA,a=aA(e,n),l=[],c;if(!n.noRipgrep&&Yt("rg")){let d=oA(o),u=d===void 0?void 0:uA(e,d,n,a,s);u&&"fallback"in u?l.push(u.fallback):u?c=u:d===void 0&&l.push("the pattern uses JavaScript-only syntax (lookaround, backreference\u2026); searched with the slower JavaScript engine")}if(c??=pA(e,o,n,a,s,r),l.push(...c.notes),c.truncated){let d=n.filesWithMatches?`${s} matching files by path`:`${s} hits by (file, line)`;l.push(`showing the first ${d}; ${c.filesMatched} files match in all \u2014 raise maxHits (--max-hits) or narrow scope/globs for the rest`)}return{hits:c.hits,truncated:c.truncated,filesMatched:c.filesMatched,timedOut:c.timedOut??!1,notes:l}}function gA(e,t,n={}){return zs(e,t,n).hits}var nA,h_,rA,y_,sA,m_,p_,cA,g_,fA,co=z(()=>{"use strict";I();Kd();Ee();fe();Ze();yi();et();le();Ut();nA=200,h_=1e4,rA=1024*1024,y_=300,sA=new Set("bBdDwWsSfnrtvcxuk0123456789"),m_={A:"use ^",z:"use $",Z:"use $",Q:"escape the metacharacters instead",E:"escape the metacharacters instead",h:"use [ \\t]",p:"\\p{\u2026} needs a pattern that is otherwise valid with the u flag",P:"\\P{\u2026} needs a pattern that is otherwise valid with the u flag","<":"use \\b",">":"use \\b"};p_={w:"[:word:]",W:"[:^word:]",d:"[:digit:]",D:"[:^digit:]"};cA=e=>e.replace(/[\\*?[\]{}!]/g,t=>`\\${t}`);g_=256*1024*1024;fA=`var __name = (fn) => fn; const { workerData } = require("node:worker_threads"); const { readFileSync } = require("node:fs"); const { port, sig, job } = workerData; const s = new Int32Array(sig); -const clip = ${Qu.toString()}; +const clip = ${df.toString()}; const emit = (ev) => { port.postMessage(ev); Atomics.add(s, 0, 1); Atomics.notify(s, 0); }; try { - (${i_.toString()})(job, { readFile: readFileSync, clip, emit, progress: (i) => Atomics.store(s, 1, i) }); + (${b_.toString()})(job, { readFile: readFileSync, clip, emit, progress: (i) => Atomics.store(s, 1, i) }); } catch (e) { emit({ error: String(e && e.message || e) }); } -`});function Ln(e){let t=F.env.CODEINDEX_EMBED_DIR,n=[];t&&n.push(t),e&&n.push(j(e,".codeindex",o_)),n.push(j(F.cwd(),".codeindex",o_));for(let r of n)if(te(j(r,"model.json")))return r}function XC(e){return Ln(e)!==void 0}function ef(e,t){let{modelId:n,dim:r,vocab:o,weights:s,unk:a}=e??{};if(typeof n!="string"||!n)throw new Error(`embed model: missing modelId in ${t}`);if(!Number.isInteger(r)||r<=0)throw new Error(`embed model: bad dim ${r} in ${t}`);if(!Array.isArray(o)||!Array.isArray(s)||o.length!==s.length)throw new Error(`embed model: vocab/weights length mismatch in ${t}`);let l=o.length,c=new Float64Array(l*r),d=new Map;for(let m=0;m{"use strict";I();na();ve();pe();Vt=3,o_="models",JC="https://github.com/maxgfr/codeindex/releases/download/embed-model-v1/model.json",KC="163ad053eab4e9a80d421ed4164f32292c83290f02fbbe6fe4b9b1cd6ea18d34"});function c_(e){let t=En(e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2"),n=[];for(let r of t.toLowerCase().split(/[^a-z0-9]+/))r&&n.push(r);return n}function YC(e){let t=l_.get(e);if(t===void 0){t=0;for(let n of e.vocab.keys())t=Math.max(t,n.startsWith("##")?n.length-2:n.length);l_.set(e,t)}return t}function d_(e,t){if(!e)return[];if(e.length>ZC)return t.unkId>=0?[t.unkId]:[];let n=[],r=0,o=e.length,s=YC(t);for(;rr;){let c=r===0?e.slice(r,a):"##"+e.slice(r,a),d=t.vocab.get(c);if(d!==void 0){l=d;break}a--}if(l===-1)return t.unkId>=0?[t.unkId]:[];n.push(l),r=a}return n}function u_(e,t){let n=[];for(let r of c_(e))for(let o of d_(r,t))n.push(o);return n}function f_(e){let t=Math.floor(e),n=e-t;return n<.5?t:n>.5?t+1:t%2===0?t:t+1}function Us(e){let t=e.length,n=new Int8Array(t),r=0;for(let s=0;sao?a=ao:a<-ao&&(a=-ao),n[s]=a}return n}function lo(e,t){let{dim:n,weights:r}=e,o=u_(t,e);if(o.length===0)return new Int8Array(n);let s=new Float64Array(n);for(let l of o){let c=l*n;for(let d=0;d{"use strict";I();Qe();ao=127;ZC=100,l_=new WeakMap});function QC(e,t,n){return[t.name,t.signature??"",t.doc??"",n??"",e.replace(/\//g," ")].join(` -`)}function tA(e,t,n,r){return[t??"",n??"",...r,e.replace(/\//g," ")].join(` -`)}function kl(e){return Re(e).slice(0,16)}function rf(e,t,n){let r=new Map;if(!e||e.embedVersion!==Vt||e.modelId!==t||n!==void 0&&e.dim!==n)return r;for(let o of e.records)o.textHash&&(n===void 0||o.vec.length===n)&&r.set(o.textHash,o.vec);return r}function m_(e,t){return!e||e.embedVersion!==t.embedVersion||e.modelId!==t.modelId||e.dim!==t.dim||e.records.length!==t.records.length?!1:e.records.every((n,r)=>{let o=t.records[r];return n.file===o.file&&n.symbol===o.symbol&&n.line===o.line&&n.textHash===o.textHash})}function El(e){let t=[];for(let n of e.files){let r=new Set,o=!1;for(let s of n.symbols)eA.has(s.kind)||r.has(s.name)||(r.add(s.name),o=!0,t.push({file:n.rel,symbol:s.name,line:s.line,text:QC(n.rel,s,n.summary)}));if(!o){let s=tA(n.rel,n.title,n.summary,n.headings);s.replace(/\s+/g,"")&&t.push({file:n.rel,text:s})}}return t}function Jr(e,t,n={}){let r=rf(n.previous,t.modelId,t.dim),o=El(e).map(s=>{let a=kl(s.text);return sf(s,a,r.get(a)??lo(t,s.text))});return{embedVersion:Vt,modelId:t.modelId,dim:t.dim,records:o}}function sf(e,t,n){return{file:e.file,...e.symbol!==void 0?{symbol:e.symbol}:{},...e.line!==void 0?{line:e.line}:{},textHash:t,vec:n}}function uo(e){let t=JSON.stringify({embedVersion:e.embedVersion,modelId:e.modelId,dim:e.dim,count:e.records.length,records:e.records.map(a=>({file:a.file,symbol:a.symbol??"",line:a.line??0,hash:a.textHash??""}))}),n=new TextEncoder().encode(t),r=e.records.length*e.dim,o=new Uint8Array(8+n.length+r);o.set([67,73,69,49],0),new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(4,n.length,!0),o.set(n,8);let s=8+n.length;for(let a of e.records)for(let l=0;le.byteLength)throw new Error("embeddings.bin: truncated header");let r=JSON.parse(new TextDecoder().decode(e.subarray(8,8+n))),{dim:o}=r;if(typeof r.embedVersion!="number"||typeof r.modelId!="string"||!Number.isInteger(o)||o<0||!Array.isArray(r.records)||r.records.length!==r.count)throw new Error("embeddings.bin: malformed header");let s=8+n,a=r.records.length*o;if(s+a>e.byteLength)throw new Error("embeddings.bin: truncated body");let l=new Int8Array(a);l.set(new Int8Array(e.buffer,e.byteOffset+s,a));let c=r.records.map((d,u)=>({file:d.file,...d.symbol?{symbol:d.symbol}:{},...d.line?{line:d.line}:{},...d.hash?{textHash:d.hash}:{},vec:l.subarray(u*o,(u+1)*o)}));return{embedVersion:r.embedVersion,modelId:r.modelId,dim:o,records:c}}var eA,nA,Kr=H(()=>{"use strict";I();bt();co();Vr();eA=new Set(["reexport","reexport-all"]);nA="CIE1"});function fr(e,t,n,r={}){let o=r.limit??rA,s={...r.fuzzy!==void 0?{fuzzy:r.fuzzy}:{},...r.exact?{exact:!0}:{},...r.rank?{rank:r.rank}:{}},a=r.queryVec??(r.model?lo(r.model,t):void 0);if(!a||!n||n.records.length===0)return zt(e,t,{...s,limit:o});let l=r.model&&n.modelId!==r.model.modelId?`the embedding index was built with model ${n.modelId}, not ${r.model.modelId}`:a.length!==n.dim?`the embedding index holds ${n.dim}-dimension vectors and the query has ${a.length}`:void 0;if(l){let h=zt(e,t,{...s,limit:o}),_=`Semantic ranking skipped: ${l} \u2014 rebuild it (codeindex index).`;return{...h,explain:{...h.explain,note:h.explain.note?`${h.explain.note} ${_}`:_}}}let c=zt(e,t,{...s,limit:Math.max(o,50)}),d=new Map;for(let h of n.records){let _=nf(a,h.vec),y=d.get(h.file);(!y||_>y.score)&&d.set(h.file,{score:_,symbol:h.symbol,line:h.line})}let u=[...d.entries()].filter(([,h])=>h.score>0).sort((h,_)=>_[1].score-h[1].score||T(h[0],_[0])).map(([h])=>h),f=c.results.map(h=>h.file),m=_c([f,u],h=>h,r.rrfK??sA),p=new Map(c.results.map(h=>[h.file,h])),g=[...m.entries()].sort((h,_)=>_[1]-h[1]||T(h[0],_[0])).slice(0,o).map(([h,_])=>{let y=p.get(h),b=d.get(h),w=y?{...y,score:Number(_.toFixed(4))}:{file:h,score:Number(_.toFixed(4)),matchedTerms:[],topSymbols:[],...b?.line?{line:b.line}:{}};return b?.symbol&&b.score>0&&(w.semanticSymbol=b.symbol),w});return{results:g,explain:oA(c.explain,g,p)}}function iA(e,t,n,r={}){return fr(e,t,n,r).results}function vl(e,t,n){return`${e} ${e===1?t:n}`}function oA(e,t,n){let r=t.filter(m=>!n.has(m.file)).length,o=t.filter(m=>m.bridgedOnly).length,s=t.length-r-o,a=e.wholeIdentifier?.df===0?e.wholeIdentifier.term:void 0,{note:l,...c}=e,d={...c,verdict:t.length?a!==void 0||s===0?"weak":"match":"none",bridgedOnlyResults:o,resultCount:t.length,semanticOnlyResults:r};if(!t.length)return e.note&&(d.note=e.note),d;if(d.verdict==="match")return d;let u=[];if(s){let m=e.terms.filter(p=>p.df>0&&p.term!==a).map(p=>p.term);u.push(`${vl(s,"lexical match","lexical matches")}${a&&m.length?` on its parts (${m.join(", ")})`:""}`)}if(o){let m=e.terms.filter(p=>p.bridge).map(p=>`"${p.term}" \u2192 ${p.bridge.to.join(", ")}`).join("; ");u.push(`${vl(o,"near match","near matches")}${m?` (${m})`:""}`)}r&&u.push(`${vl(r,"embedding neighbour","embedding neighbours")} with no lexical match (see semanticSymbol)`);let f=`The ${vl(t.length,"result","results")} below: ${u.join("; ")}.`;if(a!==void 0){let m=e.terms.find(g=>g.term===a)?.bridge?.to??[],p=m.length?` Closest indexed name${m.length===1?"":"s"}: ${m.join(", ")}.`:"";d.note=`No file in this index defines or mentions "${a}". ${f}${p}`}else{let m=e.unresolvedTerms,p=m.length?` (${m.length===1?"the term":"the terms"} ${m.join(", ")} ${m.length===1?"appears":"appear"} nowhere in this index)`:"";d.note=`Nothing matched the query verbatim${p}. ${f}`}return d}var rA,sA,Rl=H(()=>{"use strict";I();Qe();ce();Is();co();rA=20,sA=60});function mr(e={}){let t=e.url??F.env.CODEINDEX_EMBED_ENDPOINT;return t&&t.trim()?t.trim():void 0}function p_(e){return e.replace(/\/+$/,"")}function Ml(e){let t=p_(e);return t.endsWith("/embed")?t:t+"/embed"}function g_(e){return p_(e).replace(/\/embed$/,"")+"/healthz"}function h_(e){if(typeof e.timeoutMs=="number")return e.timeoutMs;let t=Number(F.env.CODEINDEX_EMBED_TIMEOUT_MS);return Number.isFinite(t)&&t>0?t:3e4}async function Cl(e,t={}){let n=mr(t);if(!n)throw new Error("no embedding endpoint configured (set CODEINDEX_EMBED_ENDPOINT or pass opts.url)");let r=Ml(n),o=new AbortController,s=setTimeout(()=>o.abort(),h_(t));try{let a=await fetch(r,{method:"POST",headers:{"content-type":"application/json",...t.headers??{}},body:JSON.stringify({texts:e}),signal:o.signal});if(!a.ok)throw new Error(`embedding endpoint ${r} returned HTTP ${a.status}`);let c=(await a.json()).vectors;if(!Array.isArray(c)||!c.every(d=>Array.isArray(d)&&d.every(u=>typeof u=="number")))throw new Error(`embedding endpoint ${r} returned a malformed { vectors } payload`);return c}finally{clearTimeout(s)}}async function fo(e,t={}){let n=new AbortController,r=setTimeout(()=>n.abort(),h_(t));try{return(await fetch(g_(e),{signal:n.signal,headers:t.headers})).ok}catch{return!1}finally{clearTimeout(r)}}async function mo(e,t={}){let[n]=await Cl([e],t);if(!n)throw new Error("embedding endpoint returned no vector for the query");return Us(n)}async function af(e={}){let[t]=await Cl([aA],e);if(!t)throw new Error("embedding endpoint returned no vector for the fingerprint text");let n=Us(t);return`endpoint@${Re(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)).slice(0,16)}`}async function po(e,t={}){let n=t.modelId??"endpoint",r=El(e),o=r.map(y=>kl(y.text)),s=rf(t.previous,n),a=o.map(y=>s.get(y)),l=new Map;o.forEach((y,b)=>{if(a[b])return;let w=l.get(y);w?w.push(b):l.set(y,[b])});let c=[...l.values()],d=t.batchSize&&t.batchSize>0?t.batchSize:64,u=[];for(let y=0;y{for(;!m&&fr[w[0]].text),t);if(b.length!==y.length)throw new Error(`embedding endpoint returned ${b.length} vectors for ${y.length} texts`);y.forEach((w,S)=>{let k=Us(b[S]);for(let M of w)a[M]=k})}catch(b){throw m=!0,b}}},g=t.concurrency&&t.concurrency>0?t.concurrency:4;await Promise.all(Array.from({length:Math.min(g,u.length)},p));let h=0,_=r.map((y,b)=>{let w=a[b];return w.length>h&&(h=w.length),sf(y,o[b],w)});return{embedVersion:Vt,modelId:n,dim:h,records:_}}var aA,Al=H(()=>{"use strict";I();bt();co();Vr();Kr();aA="codeindex endpoint fingerprint: parse the request, retry on timeout"});function dA(e){let t=e.parent!==void 0;return __.has(e.kind)||cA.has(e.kind)?t?2:__.has(e.kind)?0:1:t?4:3}function uA(e,t){let n=new Map;for(let s of e)s.parent===void 0&&!n.has(s.name)&&n.set(s.name,s);let r=s=>s.exported&&!s.name.startsWith("_"),o=s=>{let a=s.parent===void 0?void 0:n.get(s.parent);return r(s)&&(a===void 0||r(a))};return e.map(s=>({s,pub:o(s),tier:dA(s)})).sort((s,a)=>Number(a.pub)-Number(s.pub)||s.tier-a.tier||s.s.line-a.s.line||T(s.s.name,a.s.name)).slice(0,t).map(s=>s.s)}function fA(e){let t=new Set(e.files.filter(o=>o.testFile).map(o=>o.rel)),n=e.fileEdges.filter(o=>!t.has(o.from));if(n.length===e.fileEdges.length)return new Map(e.files.map(o=>[o.rel,o.pagerank??0]));let r=Br(e.files.map(o=>o.id),n);return new Map(e.files.map(o=>[o.rel,r.get(o.id)??0]))}function Xr(e,t,n={}){let r=(n.budgetTokens??1024)*y_,o=n.maxSymbolsPerFile??8,s=fA(t),a=t.files.filter(f=>f.fileKind==="code"&&!f.testFile).sort((f,m)=>s.get(m.rel)-s.get(f.rel)||m.symbols-f.symbols||T(f.rel,m.rel)),l=new Map(e.files.map(f=>[f.rel,f])),c=n.bare?"":`# repo map \u2014 ${t.fileCount} files -`,d=0,u=0;for(let f of a){let m=l.get(f.rel);if(!m)continue;let p=m.symbols.filter(_=>!lA.has(_.kind)&&_.name!=="_"),g=uA(p,o).sort((_,y)=>_.line-y.line||T(_.name,y.name)),h=` +`});function Dn(e){let t=O.env.CODEINDEX_EMBED_DIR,n=[];t&&n.push(t),e&&n.push(j(e,".codeindex",w_)),n.push(j(O.cwd(),".codeindex",w_));for(let r of n)if(ne(j(r,"model.json")))return r}function _A(e){return Dn(e)!==void 0}function uf(e,t){let{modelId:n,dim:r,vocab:o,weights:s,unk:a}=e??{};if(typeof n!="string"||!n)throw new Error(`embed model: missing modelId in ${t}`);if(!Number.isInteger(r)||r<=0)throw new Error(`embed model: bad dim ${r} in ${t}`);if(!Array.isArray(o)||!Array.isArray(s)||o.length!==s.length)throw new Error(`embed model: vocab/weights length mismatch in ${t}`);let l=o.length,c=new Float64Array(l*r),d=new Map;for(let m=0;m{"use strict";I();ia();Ee();fe();Jt=3,w_="models",hA="https://github.com/maxgfr/codeindex/releases/download/embed-model-v1/model.json",yA="163ad053eab4e9a80d421ed4164f32292c83290f02fbbe6fe4b9b1cd6ea18d34"});function k_(e){let t=qn(e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2"),n=[];for(let r of t.toLowerCase().split(/[^a-z0-9]+/))r&&n.push(r);return n}function wA(e){let t=S_.get(e);if(t===void 0){t=0;for(let n of e.vocab.keys())t=Math.max(t,n.startsWith("##")?n.length-2:n.length);S_.set(e,t)}return t}function E_(e,t){if(!e)return[];if(e.length>bA)return t.unkId>=0?[t.unkId]:[];let n=[],r=0,o=e.length,s=wA(t);for(;rr;){let c=r===0?e.slice(r,a):"##"+e.slice(r,a),d=t.vocab.get(c);if(d!==void 0){l=d;break}a--}if(l===-1)return t.unkId>=0?[t.unkId]:[];n.push(l),r=a}return n}function v_(e,t){let n=[];for(let r of k_(e))for(let o of E_(r,t))n.push(o);return n}function R_(e){let t=Math.floor(e),n=e-t;return n<.5?t:n>.5?t+1:t%2===0?t:t+1}function Gs(e){let t=e.length,n=new Int8Array(t),r=0;for(let s=0;suo?a=uo:a<-uo&&(a=-uo),n[s]=a}return n}function fo(e,t){let{dim:n,weights:r}=e,o=v_(t,e);if(o.length===0)return new Int8Array(n);let s=new Float64Array(n);for(let l of o){let c=l*n;for(let d=0;d{"use strict";I();et();uo=127;bA=100,S_=new WeakMap});function xA(e,t,n){return[t.name,t.signature??"",t.doc??"",n??"",e.replace(/\//g," ")].join(` +`)}function kA(e,t,n,r){return[t??"",n??"",...r,e.replace(/\//g," ")].join(` +`)}function Rl(e){return Re(e).slice(0,16)}function pf(e,t,n){let r=new Map;if(!e||e.embedVersion!==Jt||e.modelId!==t||n!==void 0&&e.dim!==n)return r;for(let o of e.records)o.textHash&&(n===void 0||o.vec.length===n)&&r.set(o.textHash,o.vec);return r}function C_(e,t){return!e||e.embedVersion!==t.embedVersion||e.modelId!==t.modelId||e.dim!==t.dim||e.records.length!==t.records.length?!1:e.records.every((n,r)=>{let o=t.records[r];return n.file===o.file&&n.symbol===o.symbol&&n.line===o.line&&n.textHash===o.textHash})}function Cl(e){let t=[];for(let n of e.files){let r=new Set,o=!1;for(let s of n.symbols)SA.has(s.kind)||r.has(s.name)||(r.add(s.name),o=!0,t.push({file:n.rel,symbol:s.name,line:s.line,text:xA(n.rel,s,n.summary)}));if(!o){let s=kA(n.rel,n.title,n.summary,n.headings);s.replace(/\s+/g,"")&&t.push({file:n.rel,text:s})}}return t}function Xr(e,t,n={}){let r=pf(n.previous,t.modelId,t.dim),o=Cl(e).map(s=>{let a=Rl(s.text);return gf(s,a,r.get(a)??fo(t,s.text))});return{embedVersion:Jt,modelId:t.modelId,dim:t.dim,records:o}}function gf(e,t,n){return{file:e.file,...e.symbol!==void 0?{symbol:e.symbol}:{},...e.line!==void 0?{line:e.line}:{},textHash:t,vec:n}}function po(e){let t=JSON.stringify({embedVersion:e.embedVersion,modelId:e.modelId,dim:e.dim,count:e.records.length,records:e.records.map(a=>({file:a.file,symbol:a.symbol??"",line:a.line??0,hash:a.textHash??""}))}),n=new TextEncoder().encode(t),r=e.records.length*e.dim,o=new Uint8Array(8+n.length+r);o.set([67,73,69,49],0),new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(4,n.length,!0),o.set(n,8);let s=8+n.length;for(let a of e.records)for(let l=0;le.byteLength)throw new Error("embeddings.bin: truncated header");let r=JSON.parse(new TextDecoder().decode(e.subarray(8,8+n))),{dim:o}=r;if(typeof r.embedVersion!="number"||typeof r.modelId!="string"||!Number.isInteger(o)||o<0||!Array.isArray(r.records)||r.records.length!==r.count)throw new Error("embeddings.bin: malformed header");let s=8+n,a=r.records.length*o;if(s+a>e.byteLength)throw new Error("embeddings.bin: truncated body");let l=new Int8Array(a);l.set(new Int8Array(e.buffer,e.byteOffset+s,a));let c=r.records.map((d,u)=>({file:d.file,...d.symbol?{symbol:d.symbol}:{},...d.line?{line:d.line}:{},...d.hash?{textHash:d.hash}:{},vec:l.subarray(u*o,(u+1)*o)}));return{embedVersion:r.embedVersion,modelId:r.modelId,dim:o,records:c}}var SA,EA,Zr=z(()=>{"use strict";I();xt();mo();Kr();SA=new Set(["reexport","reexport-all"]);EA="CIE1"});function fr(e,t,n,r={}){let o=r.limit??vA,s={...r.fuzzy!==void 0?{fuzzy:r.fuzzy}:{},...r.exact?{exact:!0}:{},...r.rank?{rank:r.rank}:{}},a=r.queryVec??(r.model?fo(r.model,t):void 0);if(!a||!n||n.records.length===0)return Gt(e,t,{...s,limit:o});let l=r.model&&n.modelId!==r.model.modelId?`the embedding index was built with model ${n.modelId}, not ${r.model.modelId}`:a.length!==n.dim?`the embedding index holds ${n.dim}-dimension vectors and the query has ${a.length}`:void 0;if(l){let h=Gt(e,t,{...s,limit:o}),_=`Semantic ranking skipped: ${l} \u2014 rebuild it (codeindex index).`;return{...h,explain:{...h.explain,note:h.explain.note?`${h.explain.note} ${_}`:_}}}let c=Gt(e,t,{...s,limit:Math.max(o,50)}),d=new Map;for(let h of n.records){let _=mf(a,h.vec),y=d.get(h.file);(!y||_>y.score)&&d.set(h.file,{score:_,symbol:h.symbol,line:h.line})}let u=[...d.entries()].filter(([,h])=>h.score>0).sort((h,_)=>_[1].score-h[1].score||$(h[0],_[0])).map(([h])=>h),f=c.results.map(h=>h.file),m=Cc([f,u],h=>h,r.rrfK??RA),p=new Map(c.results.map(h=>[h.file,h])),g=[...m.entries()].sort((h,_)=>_[1]-h[1]||$(h[0],_[0])).slice(0,o).map(([h,_])=>{let y=p.get(h),b=d.get(h),x=y?{...y,score:Number(_.toFixed(4))}:{file:h,score:Number(_.toFixed(4)),matchedTerms:[],topSymbols:[],...b?.line?{line:b.line}:{}};return b?.symbol&&b.score>0&&(x.semanticSymbol=b.symbol),x});return{results:g,explain:MA(c.explain,g,p)}}function CA(e,t,n,r={}){return fr(e,t,n,r).results}function Ml(e,t,n){return`${e} ${e===1?t:n}`}function MA(e,t,n){let r=t.filter(m=>!n.has(m.file)).length,o=t.filter(m=>m.bridgedOnly).length,s=t.length-r-o,a=e.wholeIdentifier?.df===0?e.wholeIdentifier.term:void 0,{note:l,...c}=e,d={...c,verdict:t.length?a!==void 0||s===0?"weak":"match":"none",bridgedOnlyResults:o,resultCount:t.length,semanticOnlyResults:r};if(!t.length)return e.note&&(d.note=e.note),d;if(d.verdict==="match")return d;let u=[];if(s){let m=e.terms.filter(p=>p.df>0&&p.term!==a).map(p=>p.term);u.push(`${Ml(s,"lexical match","lexical matches")}${a&&m.length?` on its parts (${m.join(", ")})`:""}`)}if(o){let m=e.terms.filter(p=>p.bridge).map(p=>`"${p.term}" \u2192 ${p.bridge.to.join(", ")}`).join("; ");u.push(`${Ml(o,"near match","near matches")}${m?` (${m})`:""}`)}r&&u.push(`${Ml(r,"embedding neighbour","embedding neighbours")} with no lexical match (see semanticSymbol)`);let f=`The ${Ml(t.length,"result","results")} below: ${u.join("; ")}.`;if(a!==void 0){let m=e.terms.find(g=>g.term===a)?.bridge?.to??[],p=m.length?` Closest indexed name${m.length===1?"":"s"}: ${m.join(", ")}.`:"";d.note=`No file in this index defines or mentions "${a}". ${f}${p}`}else{let m=e.unresolvedTerms,p=m.length?` (${m.length===1?"the term":"the terms"} ${m.join(", ")} ${m.length===1?"appears":"appear"} nowhere in this index)`:"";d.note=`Nothing matched the query verbatim${p}. ${f}`}return d}var vA,RA,Al=z(()=>{"use strict";I();et();le();Fs();mo();vA=20,RA=60});function mr(e={}){let t=e.url??O.env.CODEINDEX_EMBED_ENDPOINT;return t&&t.trim()?t.trim():void 0}function M_(e){return e.replace(/\/+$/,"")}function Il(e){let t=M_(e);return t.endsWith("/embed")?t:t+"/embed"}function A_(e){return M_(e).replace(/\/embed$/,"")+"/healthz"}function I_(e){if(typeof e.timeoutMs=="number")return e.timeoutMs;let t=Number(O.env.CODEINDEX_EMBED_TIMEOUT_MS);return Number.isFinite(t)&&t>0?t:3e4}async function Tl(e,t={}){let n=mr(t);if(!n)throw new Error("no embedding endpoint configured (set CODEINDEX_EMBED_ENDPOINT or pass opts.url)");let r=Il(n),o=new AbortController,s=setTimeout(()=>o.abort(),I_(t));try{let a=await fetch(r,{method:"POST",headers:{"content-type":"application/json",...t.headers??{}},body:JSON.stringify({texts:e}),signal:o.signal});if(!a.ok)throw new Error(`embedding endpoint ${r} returned HTTP ${a.status}`);let c=(await a.json()).vectors;if(!Array.isArray(c)||!c.every(d=>Array.isArray(d)&&d.every(u=>typeof u=="number")))throw new Error(`embedding endpoint ${r} returned a malformed { vectors } payload`);return c}finally{clearTimeout(s)}}async function go(e,t={}){let n=new AbortController,r=setTimeout(()=>n.abort(),I_(t));try{return(await fetch(A_(e),{signal:n.signal,headers:t.headers})).ok}catch{return!1}finally{clearTimeout(r)}}async function ho(e,t={}){let[n]=await Tl([e],t);if(!n)throw new Error("embedding endpoint returned no vector for the query");return Gs(n)}async function yf(e={}){let[t]=await Tl([AA],e);if(!t)throw new Error("embedding endpoint returned no vector for the fingerprint text");let n=Gs(t);return`endpoint@${Re(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)).slice(0,16)}`}async function yo(e,t={}){let n=t.modelId??"endpoint",r=Cl(e),o=r.map(y=>Rl(y.text)),s=pf(t.previous,n),a=o.map(y=>s.get(y)),l=new Map;o.forEach((y,b)=>{if(a[b])return;let x=l.get(y);x?x.push(b):l.set(y,[b])});let c=[...l.values()],d=t.batchSize&&t.batchSize>0?t.batchSize:64,u=[];for(let y=0;y{for(;!m&&fr[x[0]].text),t);if(b.length!==y.length)throw new Error(`embedding endpoint returned ${b.length} vectors for ${y.length} texts`);y.forEach((x,k)=>{let v=Gs(b[k]);for(let T of x)a[T]=v})}catch(b){throw m=!0,b}}},g=t.concurrency&&t.concurrency>0?t.concurrency:4;await Promise.all(Array.from({length:Math.min(g,u.length)},p));let h=0,_=r.map((y,b)=>{let x=a[b];return x.length>h&&(h=x.length),gf(y,o[b],x)});return{embedVersion:Jt,modelId:n,dim:h,records:_}}var AA,$l=z(()=>{"use strict";I();xt();mo();Kr();Zr();AA="codeindex endpoint fingerprint: parse the request, retry on timeout"});function $A(e){let t=e.parent!==void 0;return $_.has(e.kind)||TA.has(e.kind)?t?2:$_.has(e.kind)?0:1:t?4:3}function FA(e,t){let n=new Map;for(let s of e)s.parent===void 0&&!n.has(s.name)&&n.set(s.name,s);let r=s=>s.exported&&!s.name.startsWith("_"),o=s=>{let a=s.parent===void 0?void 0:n.get(s.parent);return r(s)&&(a===void 0||r(a))};return e.map(s=>({s,pub:o(s),tier:$A(s)})).sort((s,a)=>Number(a.pub)-Number(s.pub)||s.tier-a.tier||s.s.line-a.s.line||$(s.s.name,a.s.name)).slice(0,t).map(s=>s.s)}function OA(e){let t=new Set(e.files.filter(o=>o.testFile).map(o=>o.rel)),n=e.fileEdges.filter(o=>!t.has(o.from));if(n.length===e.fileEdges.length)return new Map(e.files.map(o=>[o.rel,o.pagerank??0]));let r=zr(e.files.map(o=>o.id),n);return new Map(e.files.map(o=>[o.rel,r.get(o.id)??0]))}function Yr(e,t,n={}){let r=(n.budgetTokens??1024)*T_,o=n.maxSymbolsPerFile??8,s=OA(t),a=t.files.filter(f=>f.fileKind==="code"&&!f.testFile).sort((f,m)=>s.get(m.rel)-s.get(f.rel)||m.symbols-f.symbols||$(f.rel,m.rel)),l=new Map(e.files.map(f=>[f.rel,f])),c=n.bare?"":`# repo map \u2014 ${t.fileCount} files +`,d=0,u=0;for(let f of a){let m=l.get(f.rel);if(!m)continue;let p=m.symbols.filter(_=>!IA.has(_.kind)&&_.name!=="_"),g=FA(p,o).sort((_,y)=>_.line-y.line||$(_.name,y.name)),h=` ${f.rel}: `;for(let _ of g){let y=(_.signature??`${_.kind} ${_.name}`).replace(/\s+/g," ").trim().slice(0,120);h+=` ${_.line}: ${y} `}if(p.length>g.length&&(h+=` \u2026 ${p.length-g.length} more -`),c.length+h.length>r){if(++u>=mA)break;continue}u=0,c+=h,d++}return`${c} -(${d} of ${a.length} code files shown, ~${Math.ceil(c.length/y_)} tokens) -`}var y_,lA,__,cA,mA,go=H(()=>{"use strict";I();Ki();ce();y_=4,lA=new Set(["reexport","reexport-all","package"]),__=new Set(["class","struct","interface","type","enum","trait","record","protocol","typedef","union","object","module"]),cA=new Set(["function","def","fn","func","method","constructor","macro"]);mA=32});function ho(e,t={}){let n=t.maxCommitFiles??30,r=t.minTogether??3,o=t.maxPairs??100,s=Ic(e,t.since);if(!s.ok)return{ok:!1,error:s.error,couplings:[]};let{log:a}=s,l=t.graph?new Set(t.graph.files.map(w=>w.rel)):void 0,c=Tc(a),d=c.filter(w=>w!==void 0&&(!l||l.has(w))).sort(T),u=new Map(d.map((w,S)=>[w,S])),f=c.map(w=>w===void 0?-1:u.get(w)??-1),m=d.length,p=new Int32Array(m),g=new Map,h=new Int32Array(a.paths.length).fill(-1),_=[];for(let w=0;w+1=0&&_.push(f[M]))}if(!(S===0||S>n)){_.sort((k,M)=>k-M);for(let k=0;k<_.length;k++){let M=_[k];p[M]++;for(let N=k+1;N<_.length;N++){let A=M*m+_[N];g.set(A,(g.get(A)??0)+1)}}}}let y;if(t.graph){y=new Set;for(let w of t.graph.fileEdges){if(w.dangling||w.kind==="mention"||w.kind==="contains")continue;let S=u.get(w.from),k=u.get(w.to);S===void 0||k===void 0||S===k||y.add(SS.confidence-w.confidence||S.strength-w.strength||S.together-w.together||T(w.a,S.a)||T(w.b,S.b)),{ok:!0,...a.shallow?{shallow:!0}:{},couplings:b.slice(0,o)}}function b_(e){let t=e.indexOf(".",e.lastIndexOf("/")+2);return t<0?e:e.slice(0,t)}function pA(e,t){let n=3.8415999999999997,r=e/t;return(r+n/(2*t)-Math.sqrt(n*(r*(1-r)+n/(4*t))/t))/(1+n/t)}function Zr(e,t,n=20){let r=[];for(let o of e.files){if(o.kind!=="code")continue;let s=t.get(o.rel)??0,a=Number((s*Math.log2(o.lines+1)).toFixed(2));a<=0||r.push({rel:o.rel,lines:o.lines,commits:s,score:a,...$t(o.rel)?{test:!0}:{}})}return r.sort((o,s)=>s.score-o.score||s.lines-o.lines||T(o.rel,s.rel)),r.slice(0,n)}var w_,yo=H(()=>{"use strict";I();en();ce();lr();w_=e=>Number(e.toFixed(3))});function yA(e){let t=0,n,r=e.replace(/\r\n?/g,` +`),c.length+h.length>r){if(++u>=NA)break;continue}u=0,c+=h,d++}return`${c} +(${d} of ${a.length} code files shown, ~${Math.ceil(c.length/T_)} tokens) +`}var T_,IA,$_,TA,NA,_o=z(()=>{"use strict";I();Yi();le();T_=4,IA=new Set(["reexport","reexport-all","package"]),$_=new Set(["class","struct","interface","type","enum","trait","record","protocol","typedef","union","object","module"]),TA=new Set(["function","def","fn","func","method","constructor","macro"]);NA=32});function bo(e,t={}){let n=t.maxCommitFiles??30,r=t.minTogether??3,o=t.maxPairs??100,s=jc(e,t.since);if(!s.ok)return{ok:!1,error:s.error,couplings:[]};let{log:a}=s,l=t.graph?new Set(t.graph.files.map(x=>x.rel)):void 0,c=Wc(a),d=c.filter(x=>x!==void 0&&(!l||l.has(x))).sort($),u=new Map(d.map((x,k)=>[x,k])),f=c.map(x=>x===void 0?-1:u.get(x)??-1),m=d.length,p=new Int32Array(m),g=new Map,h=new Int32Array(a.paths.length).fill(-1),_=[];for(let x=0;x+1=0&&_.push(f[T]))}if(!(k===0||k>n)){_.sort((v,T)=>v-T);for(let v=0;v<_.length;v++){let T=_[v];p[T]++;for(let F=v+1;F<_.length;F++){let R=T*m+_[F];g.set(R,(g.get(R)??0)+1)}}}}let y;if(t.graph){y=new Set;for(let x of t.graph.fileEdges){if(x.dangling||x.kind==="mention"||x.kind==="contains")continue;let k=u.get(x.from),v=u.get(x.to);k===void 0||v===void 0||k===v||y.add(kk.confidence-x.confidence||k.strength-x.strength||k.together-x.together||$(x.a,k.a)||$(x.b,k.b)),{ok:!0,...a.shallow?{shallow:!0}:{},couplings:b.slice(0,o)}}function F_(e){let t=e.indexOf(".",e.lastIndexOf("/")+2);return t<0?e:e.slice(0,t)}function PA(e,t){let n=3.8415999999999997,r=e/t;return(r+n/(2*t)-Math.sqrt(n*(r*(1-r)+n/(4*t))/t))/(1+n/t)}function Qr(e,t,n=20){let r=[];for(let o of e.files){if(o.kind!=="code")continue;let s=t.get(o.rel)??0,a=Number((s*Math.log2(o.lines+1)).toFixed(2));a<=0||r.push({rel:o.rel,lines:o.lines,commits:s,score:a,...Ft(o.rel)?{test:!0}:{}})}return r.sort((o,s)=>s.score-o.score||s.lines-o.lines||$(o.rel,s.rel)),r.slice(0,n)}var O_,wo=z(()=>{"use strict";I();tn();le();lr();O_=e=>Number(e.toFixed(3))});function jA(e){let t=0,n,r=e.replace(/\r\n?/g,` `).replace(/^ {0,3}(`{3,}|~{3,})[^\n]*\n[\s\S]*?^ {0,3}\1[^\n]*$/gm,"");for(let o of r.split(/\n\s*\n/)){let s=o.trim().split(` -`),a=/^(#{1,6})\s/.exec(s[0]??"");if(a)t=a[1].length,s=s.slice(1);else if(s.length>=2&&/^(=+|-+)\s*$/.test(s[s.length-1])){t=s[s.length-1].startsWith("=")?1:2;continue}else if(s.length===1&&/^(?:[-*_]\s*){3,}$/.test(s[0])){t=Math.min(t,1);continue}let l=s.join(" ").trim();if(!l||l.startsWith("<")||l.startsWith("#")||/^(\[!\[|!\[|\[)/.test(l)&&!/[.:]\s/.test(l)||/^\[[^\]]+\]:\s/.test(l))continue;let c=l.replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\](?:\[[^\]]*\])?/g,"$1").replace(/[*_`]/g,"").replace(/\s+/g," ").trim();if(!(c.length<=20)){if(t<=1)return c.slice(0,400);n??=c.slice(0,400)}}return n}function _A(e){for(let t of gA){let n=j(e,t);if(te(n))try{return yA(le(n,"utf8"))}catch{continue}}}function lf(e,t,n={}){let r=[],o=ue(e.root).replace(/\/+$/,"").split("/").pop()||"repository";r.push(`# ${o}`,"");let s=_A(e.root);s&&r.push(s,"");let a=Object.entries(t.languages).sort((f,m)=>m[1]-f[1]||T(f[0],m[0])).slice(0,6).map(([f,m])=>`${f} ${m}`).join(", ");r.push(`**${t.fileCount} indexed files** \xB7 ${a}`,"");let l=Fn(e.root);if(l.packages.length>1){r.push(`## Layout \u2014 monorepo, ${l.packages.length} packages`,"");for(let f of l.packages.slice(0,20))r.push(`- \`${f.dir}\` \u2014 ${f.name}`);l.packages.length>20&&r.push(`- \u2026and ${l.packages.length-20} more`),l.cycle?.length&&r.push("",`\u26A0 dependency cycle: ${l.cycle.join(" \u2192 ")}`),r.push("")}r.push("## Key files","",Xr(e,t,{budgetTokens:n.budgetTokens??900,bare:!0}).trim(),"");let c=Qt(e.root);if(c.ok&&c.commits>=hA){let f=Zr(e,c.churn,8);if(f.length){let m=c.shallow?` Shallow clone: only ${c.commits} commits of history are visible.`:"";r.push("## Where work concentrates","",`Files ranked by commits \xD7 size \u2014 where changes and defects cluster.${m}`,"");for(let p of f)r.push(`- \`${p.rel}\` \u2014 ${p.commits} commits, ${p.lines} lines${p.test?" (test)":""}`);r.push("")}}r.push("## Next","","- `search ` \u2014 BM25 over names, paths, doc comments and prose; `explain_search` says whether it really matched","- `find_symbol ` / `symbols_overview ` \u2014 read structure without reading files","- `find_references ` \u2014 three labelled tiers; add `lsp: true` when a language server is configured","");let d=r.join(` -`);if(n.remember===!1)return{brief:d};let u=n.memoryName??"onboarding";try{ro(e.root,u,d)}catch(f){return{brief:d,memoryError:`not saved as the ${u} memory: ${f instanceof Error?f.message:String(f)}`}}return{brief:d,memory:u}}var gA,hA,cf=H(()=>{"use strict";I();ve();pe();go();Hr();yo();en();gl();ce();gA=["README.md","README.markdown","README.rst","README.txt","README"],hA=10});function bA(e={}){if(e.trustRepoConfig===!0)return!0;let t=(F.env.CODEINDEX_TRUST_LSP_CONFIG??"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"}function wA(){let e=F.env.XDG_CONFIG_HOME?.trim();return j(e?ue(e):j(ga(),".config"),"codeindex",df)}function Hs(e,t={}){let n=F.env.CODEINDEX_LSP_CONFIG;if(n!==void 0){let c=n.trim();return!c||c==="0"||c.toLowerCase()==="off"?{path:void 0,source:"none"}:{path:ue(c),source:"env"}}let r=bA(t),o,s=j(e,x_,df),a=j(F.cwd(),x_,df);for(let[c,d]of[[s,"repo"],[a,"cwd"]])if(!(d==="cwd"&&c===s)&&te(c)){if(r)return{path:c,source:d};o??=c}let l=wA();return te(l)?{path:l,source:"user",...o?{ignored:o}:{}}:{path:void 0,source:"none",...o?{ignored:o}:{}}}function k_(e){if(!e||typeof e!="object")throw new Error("lsp.json must be a JSON object");let t=e;if(t.version!==1)throw new Error(`lsp.json: unsupported version ${JSON.stringify(t.version)} (expected 1)`);if(!Array.isArray(t.servers))throw new Error("lsp.json: `servers` must be an array");let n=new Set;return{version:1,servers:t.servers.map((o,s)=>{if(!o||typeof o!="object")throw new Error(`lsp.json: servers[${s}] must be an object`);let a=o,l=typeof a.id=="string"&&a.id.trim()?a.id.trim():void 0;if(!l)throw new Error(`lsp.json: servers[${s}].id must be a non-empty string`);if(n.has(l))throw new Error(`lsp.json: duplicate server id ${JSON.stringify(l)}`);if(n.add(l),typeof a.command!="string"||!a.command.trim())throw new Error(`lsp.json: servers[${s}].command must be a non-empty string`);if(!Array.isArray(a.languages)||!a.languages.length||a.languages.some(c=>typeof c!="string"))throw new Error(`lsp.json: servers[${s}].languages must be a non-empty array of strings`);if(a.args!==void 0&&(!Array.isArray(a.args)||a.args.some(c=>typeof c!="string")))throw new Error(`lsp.json: servers[${s}].args must be an array of strings`);return{id:l,languages:a.languages,...typeof a.languageId=="string"?{languageId:a.languageId}:{},command:a.command,...Array.isArray(a.args)?{args:a.args}:{},...a.env&&typeof a.env=="object"?{env:a.env}:{},...a.initializationOptions!==void 0?{initializationOptions:a.initializationOptions}:{},...a.timeoutMs!==void 0?{timeoutMs:S_(a.timeoutMs,`servers[${s}].timeoutMs`)}:{},...a.startupTimeoutMs!==void 0?{startupTimeoutMs:S_(a.startupTimeoutMs,`servers[${s}].startupTimeoutMs`)}:{}}})}}function S_(e,t){if(typeof e!="number"||!Number.isFinite(e)||e<=0)throw new Error(`lsp.json: ${t} must be a positive number of milliseconds, got ${JSON.stringify(e)}`);return e}function _o(e,t={}){let{path:n}=Hs(e,t);if(!n||!te(n))return;let r;try{r=JSON.parse(le(n,"utf8"))}catch(o){throw new Error(`${n}: ${o instanceof Error?o.message:String(o)}`)}return k_(r)}function uf(e,t){return e.servers.find(n=>n.languages.includes(t))}function Tl(e){return v_("CODEINDEX_LSP_TIMEOUT_MS")??e.timeoutMs??xA}function E_(e){return v_("CODEINDEX_LSP_STARTUP_TIMEOUT_MS")??e.startupTimeoutMs??SA}function v_(e){let t=F.env[e];if(t===void 0)return;let n=Number(t);return Number.isFinite(n)&&n>0?n:void 0}var df,x_,Il,xA,SA,$l=H(()=>{"use strict";I();ve();hi();pe();df="lsp.json",x_=".codeindex",Il="a repository's lsp.json names commands to run, so it is read only with --trust-lsp-config or CODEINDEX_TRUST_LSP_CONFIG=1";xA=5e3,SA=15e3});function Yr(e,t){return{server:e,ok:!1,reason:t,refs:[],agreement:{both:[],lspOnly:[],staticOnly:[]}}}function Ol(e,t,n,r){try{let o=le(j(e,t),"utf8").split(/\r?\n/)[n-1];return o===void 0?0:kA(o,r)}catch{return 0}}function kA(e,t){if(!t)return 0;let n=Fl.test(t[0]),r=Fl.test(t[t.length-1]),o=c=>(!n||c===0||!Fl.test(e[c-1]))&&(!r||c+t.length>=e.length||!Fl.test(e[c+t.length])),s=c=>{let d=[];for(let u=e.indexOf(t,c);u>=0;u=e.indexOf(t,u+1))o(u)&&d.push(u);return d},a=RA(e),l=s(a);if(l.length){if(!EA.has(t))return l[0];let c=vA(e,a),d=l.filter(u=>u0?s(0)[0]??0:0}function vA(e,t){for(let n=t;nl.file)),r=new Set([...t.callSites.map(l=>l.file),...t.referencingFiles,...t.defs.map(l=>l.file)]),o=[],s=[],a=[];for(let l of n)(r.has(l)?o:s).push(l);for(let l of r)n.has(l)||a.push(l);return{both:o.sort(T),lspOnly:s.sort(T),staticOnly:a.sort(T)}}async function M_(e,t,n,r,o,s){if(!r.capabilities.references)return{...n,lsp:Yr(o,"server does not provide textDocument/references")};if(!n.defs.length)return{...n,lsp:Yr(o,`no declaration of ${t} to anchor a request on`)};let a=new Set,l=[];try{for(let c of n.defs){let d=MA(e.root,c.file);if(!d)continue;r.didOpen(c.file,d,s??c.lang);let u=Ol(e.root,c.file,c.line,t);for(let f of await r.references(c.file,c.line,u)){let m=`${f.file}:${f.line}:${f.character??""}`;a.has(m)||(a.add(m),l.push(f))}}}catch(c){return{...n,lsp:{server:o,ok:!1,reason:c instanceof Error?c.message:String(c),refs:l.sort(R_),agreement:bo(l,n)}}}return l.sort(R_),{...n,lsp:{server:o,ok:!0,refs:l,agreement:bo(l,n)}}}function R_(e,t){return T(e.file,t.file)||e.line-t.line||(e.character??0)-(t.character??0)}function MA(e,t){try{return le(j(e,t),"utf8")}catch{return""}}var Fl,EA,Nl=H(()=>{"use strict";I();ve();pe();ce();Fl=/[\p{L}\p{N}_$]/u;EA=new Set(["abstract","async","const","declare","def","default","export","final","fn","fun","func","function","get","internal","let","open","override","private","protected","pub","public","readonly","set","static","type","val","var","virtual"])});function A_(e,t){if(!Array.isArray(t))return[];let n=[];for(let r of t){let o=r?.from;if(!o||typeof o.uri!="string"||typeof o.name!="string"||typeof o.kind!="number")continue;let s=zs(e,{uri:o.uri,range:o.selectionRange})[0];if(!(!s||!Array.isArray(r.fromRanges)))for(let a of r.fromRanges){let l=a?.start;if(!(!Number.isInteger(l?.line)||l.line<0||!Number.isInteger(l?.character)||l.character<0))for(let c of zs(e,{uri:o.uri,range:a}))n.push({...c,caller:{...s,name:o.name,kind:o.kind}})}}return Dn(n)}function Dn(e){let t=new Set;return e.filter(n=>{let r=JSON.stringify([n.file,n.line,n.character,n.caller]);return t.has(r)?!1:(t.add(r),!0)}).sort((n,r)=>T(n.file,r.file)||n.line-r.line||(n.character??0)-(r.character??0)||T(n.caller.name,r.caller.name)||n.caller.line-r.caller.line)}function Pl(e){let t=JSON.stringify(e);return`Content-Length: ${AA(t)}${CA}${t}`}function AA(e){return new TextEncoder().encode(e).byteLength}function ff(){let e=new TextEncoder,t=new TextDecoder,n=new Uint8Array(0),r=[],o=0,s=0,a=0,l=f=>{n=n.subarray(f),a=0},c=f=>{r.push(f),o+=f.length},d=()=>{if(!r.length)return;let f=new Uint8Array(n.length+o);f.set(n);let m=n.length;for(let p of r)f.set(p,m),m+=p.length;n=f,r.length=0,o=0},u=()=>{for(let f=a;f+3C_&&l(n.length-C_),m;let g=t.decode(n.subarray(0,p)),h=/content-length:\s*(\d+)/i.exec(g);if(!h){l(p+4);continue}let _=Number(h[1]);if(!Number.isSafeInteger(_)||_<0||_>I_){l(p+4);continue}let y=p+4;if(n.lengthc===0||c===1&&/^[A-Za-z]:$/.test(l)?l:encodeURIComponent(l)).join("/")}function mf(e,t){if(typeof e!="string"){for(let l of e){let c=mf(l,t);if(c!==void 0)return c}return}if(!t.startsWith("file://"))return;let n;try{let l=t.slice(7);n=decodeURIComponent(l.startsWith("/")?l:`//${l}`).replace(/\\/g,"/")}catch{return}/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1));let r=e.replace(/\\/g,"/").replace(/\/+$/,""),o=/^[A-Za-z]:/.test(r)||r.startsWith("//"),s=o?n.toLowerCase():n,a=o?r.toLowerCase():r;if(s===a)return"";if(s.startsWith(`${a}/`))return n.slice(r.length+1)}function zs(e,t){let n=Array.isArray(t)?t:t&&typeof t=="object"?[t]:[],r=new Set,o=[];for(let s of n){if(!s||typeof s!="object")continue;let a=s.uri??s.targetUri;if(!a)continue;let l=mf(e,a);if(l===void 0||l==="")continue;let c=(s.range??s.targetSelectionRange??s.targetRange)?.start,d=typeof c?.line=="number"?c.line+1:1,u=typeof c?.character=="number"?c.character:void 0,f=`${l}:${d}:${u??""}`;r.has(f)||(r.add(f),o.push(u===void 0?{file:l,line:d}:{file:l,line:d,character:u}))}return o.sort((s,a)=>T(s.file,a.file)||s.line-a.line||(s.character??0)-(a.character??0))}var I_,C_,CA,wo=H(()=>{"use strict";I();ce();I_=32*1024*1024,C_=64*1024,CA=`\r +`),a=/^(#{1,6})\s/.exec(s[0]??"");if(a)t=a[1].length,s=s.slice(1);else if(s.length>=2&&/^(=+|-+)\s*$/.test(s[s.length-1])){t=s[s.length-1].startsWith("=")?1:2;continue}else if(s.length===1&&/^(?:[-*_]\s*){3,}$/.test(s[0])){t=Math.min(t,1);continue}let l=s.join(" ").trim();if(!l||l.startsWith("<")||l.startsWith("#")||/^(\[!\[|!\[|\[)/.test(l)&&!/[.:]\s/.test(l)||/^\[[^\]]+\]:\s/.test(l))continue;let c=l.replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\](?:\[[^\]]*\])?/g,"$1").replace(/[*_`]/g,"").replace(/\s+/g," ").trim();if(!(c.length<=20)){if(t<=1)return c.slice(0,400);n??=c.slice(0,400)}}return n}function WA(e){for(let t of LA){let n=j(e,t);if(ne(n))try{return jA(ie(n,"utf8"))}catch{continue}}}function _f(e,t,n={}){let r=[],o=ae(e.root).replace(/\/+$/,"").split("/").pop()||"repository";r.push(`# ${o}`,"");let s=WA(e.root);s&&r.push(s,"");let a=Object.entries(t.languages).sort((f,m)=>m[1]-f[1]||$(f[0],m[0])).slice(0,6).map(([f,m])=>`${f} ${m}`).join(", ");r.push(`**${t.fileCount} indexed files** \xB7 ${a}`,"");let l=On(e.root);if(l.packages.length>1){r.push(`## Layout \u2014 monorepo, ${l.packages.length} packages`,"");for(let f of l.packages.slice(0,20))r.push(`- \`${f.dir}\` \u2014 ${f.name}`);l.packages.length>20&&r.push(`- \u2026and ${l.packages.length-20} more`),l.cycle?.length&&r.push("",`\u26A0 dependency cycle: ${l.cycle.join(" \u2192 ")}`),r.push("")}r.push("## Key files","",Yr(e,t,{budgetTokens:n.budgetTokens??900,bare:!0}).trim(),"");let c=en(e.root);if(c.ok&&c.commits>=DA){let f=Qr(e,c.churn,8);if(f.length){let m=c.shallow?` Shallow clone: only ${c.commits} commits of history are visible.`:"";r.push("## Where work concentrates","",`Files ranked by commits \xD7 size \u2014 where changes and defects cluster.${m}`,"");for(let p of f)r.push(`- \`${p.rel}\` \u2014 ${p.commits} commits, ${p.lines} lines${p.test?" (test)":""}`);r.push("")}}r.push("## Next","","- `search ` \u2014 BM25 over names, paths, doc comments and prose; `explain_search` says whether it really matched","- `find_symbol ` / `symbols_overview ` \u2014 read structure without reading files","- `find_references ` \u2014 three labelled tiers; add `lsp: true` when a language server is configured","");let d=r.join(` +`);if(n.remember===!1)return{brief:d};let u=n.memoryName??"onboarding";try{oo(e.root,u,d)}catch(f){return{brief:d,memoryError:`not saved as the ${u} memory: ${f instanceof Error?f.message:String(f)}`}}return{brief:d,memory:u}}var LA,DA,bf=z(()=>{"use strict";I();Ee();fe();_o();Gr();wo();tn();_l();le();LA=["README.md","README.markdown","README.rst","README.txt","README"],DA=10});function BA(e={}){if(e.trustRepoConfig===!0)return!0;let t=(O.env.CODEINDEX_TRUST_LSP_CONFIG??"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"}function UA(){let e=O.env.XDG_CONFIG_HOME?.trim();return j(e?ae(e):j(_a(),".config"),"codeindex",wf)}function qs(e,t={}){let n=O.env.CODEINDEX_LSP_CONFIG;if(n!==void 0){let c=n.trim();return!c||c==="0"||c.toLowerCase()==="off"?{path:void 0,source:"none"}:{path:ae(c),source:"env"}}let r=BA(t),o,s=j(e,N_,wf),a=j(O.cwd(),N_,wf);for(let[c,d]of[[s,"repo"],[a,"cwd"]])if(!(d==="cwd"&&c===s)&&ne(c)){if(r)return{path:c,source:d};o??=c}let l=UA();return ne(l)?{path:l,source:"user",...o?{ignored:o}:{}}:{path:void 0,source:"none",...o?{ignored:o}:{}}}function L_(e){if(!e||typeof e!="object")throw new Error("lsp.json must be a JSON object");let t=e;if(t.version!==1)throw new Error(`lsp.json: unsupported version ${JSON.stringify(t.version)} (expected 1)`);if(!Array.isArray(t.servers))throw new Error("lsp.json: `servers` must be an array");let n=new Set;return{version:1,servers:t.servers.map((o,s)=>{if(!o||typeof o!="object")throw new Error(`lsp.json: servers[${s}] must be an object`);let a=o,l=typeof a.id=="string"&&a.id.trim()?a.id.trim():void 0;if(!l)throw new Error(`lsp.json: servers[${s}].id must be a non-empty string`);if(n.has(l))throw new Error(`lsp.json: duplicate server id ${JSON.stringify(l)}`);if(n.add(l),typeof a.command!="string"||!a.command.trim())throw new Error(`lsp.json: servers[${s}].command must be a non-empty string`);if(!Array.isArray(a.languages)||!a.languages.length||a.languages.some(c=>typeof c!="string"))throw new Error(`lsp.json: servers[${s}].languages must be a non-empty array of strings`);if(a.args!==void 0&&(!Array.isArray(a.args)||a.args.some(c=>typeof c!="string")))throw new Error(`lsp.json: servers[${s}].args must be an array of strings`);return{id:l,languages:a.languages,...typeof a.languageId=="string"?{languageId:a.languageId}:{},command:a.command,...Array.isArray(a.args)?{args:a.args}:{},...a.env&&typeof a.env=="object"?{env:a.env}:{},...a.initializationOptions!==void 0?{initializationOptions:a.initializationOptions}:{},...a.timeoutMs!==void 0?{timeoutMs:P_(a.timeoutMs,`servers[${s}].timeoutMs`)}:{},...a.startupTimeoutMs!==void 0?{startupTimeoutMs:P_(a.startupTimeoutMs,`servers[${s}].startupTimeoutMs`)}:{}}})}}function P_(e,t){if(typeof e!="number"||!Number.isFinite(e)||e<=0)throw new Error(`lsp.json: ${t} must be a positive number of milliseconds, got ${JSON.stringify(e)}`);return e}function xo(e,t={}){let{path:n}=qs(e,t);if(!n||!ne(n))return;let r;try{r=JSON.parse(ie(n,"utf8"))}catch(o){throw new Error(`${n}: ${o instanceof Error?o.message:String(o)}`)}return L_(r)}function xf(e,t){return e.servers.find(n=>n.languages.includes(t))}function Ol(e){return j_("CODEINDEX_LSP_TIMEOUT_MS")??e.timeoutMs??zA}function D_(e){return j_("CODEINDEX_LSP_STARTUP_TIMEOUT_MS")??e.startupTimeoutMs??HA}function j_(e){let t=O.env[e];if(t===void 0)return;let n=Number(t);return Number.isFinite(n)&&n>0?n:void 0}var wf,N_,Fl,zA,HA,Nl=z(()=>{"use strict";I();Ee();_i();fe();wf="lsp.json",N_=".codeindex",Fl="a repository's lsp.json names commands to run, so it is read only with --trust-lsp-config or CODEINDEX_TRUST_LSP_CONFIG=1";zA=5e3,HA=15e3});function es(e,t){return{server:e,ok:!1,reason:t,refs:[],agreement:{both:[],lspOnly:[],staticOnly:[]}}}function Ll(e,t,n,r){try{let o=ie(j(e,t),"utf8").split(/\r?\n/)[n-1];return o===void 0?0:GA(o,r)}catch{return 0}}function GA(e,t){if(!t)return 0;let n=Pl.test(t[0]),r=Pl.test(t[t.length-1]),o=c=>(!n||c===0||!Pl.test(e[c-1]))&&(!r||c+t.length>=e.length||!Pl.test(e[c+t.length])),s=c=>{let d=[];for(let u=e.indexOf(t,c);u>=0;u=e.indexOf(t,u+1))o(u)&&d.push(u);return d},a=JA(e),l=s(a);if(l.length){if(!qA.has(t))return l[0];let c=VA(e,a),d=l.filter(u=>u0?s(0)[0]??0:0}function VA(e,t){for(let n=t;nl.file)),r=new Set([...t.callSites.map(l=>l.file),...t.referencingFiles,...t.defs.map(l=>l.file)]),o=[],s=[],a=[];for(let l of n)(r.has(l)?o:s).push(l);for(let l of r)n.has(l)||a.push(l);return{both:o.sort($),lspOnly:s.sort($),staticOnly:a.sort($)}}async function B_(e,t,n,r,o,s){if(!r.capabilities.references)return{...n,lsp:es(o,"server does not provide textDocument/references")};if(!n.defs.length)return{...n,lsp:es(o,`no declaration of ${t} to anchor a request on`)};let a=new Set,l=[];try{for(let c of n.defs){let d=KA(e.root,c.file);if(!d)continue;r.didOpen(c.file,d,s??c.lang);let u=Ll(e.root,c.file,c.line,t);for(let f of await r.references(c.file,c.line,u)){let m=`${f.file}:${f.line}:${f.character??""}`;a.has(m)||(a.add(m),l.push(f))}}}catch(c){return{...n,lsp:{server:o,ok:!1,reason:c instanceof Error?c.message:String(c),refs:l.sort(W_),agreement:So(l,n)}}}return l.sort(W_),{...n,lsp:{server:o,ok:!0,refs:l,agreement:So(l,n)}}}function W_(e,t){return $(e.file,t.file)||e.line-t.line||(e.character??0)-(t.character??0)}function KA(e,t){try{return ie(j(e,t),"utf8")}catch{return""}}var Pl,qA,Dl=z(()=>{"use strict";I();Ee();fe();le();Pl=/[\p{L}\p{N}_$]/u;qA=new Set(["abstract","async","const","declare","def","default","export","final","fn","fun","func","function","get","internal","let","open","override","private","protected","pub","public","readonly","set","static","type","val","var","virtual"])});function z_(e,t){if(!Array.isArray(t))return[];let n=[];for(let r of t){let o=r?.from;if(!o||typeof o.uri!="string"||typeof o.name!="string"||typeof o.kind!="number")continue;let s=Vs(e,{uri:o.uri,range:o.selectionRange})[0];if(!(!s||!Array.isArray(r.fromRanges)))for(let a of r.fromRanges){let l=a?.start;if(!(!Number.isInteger(l?.line)||l.line<0||!Number.isInteger(l?.character)||l.character<0))for(let c of Vs(e,{uri:o.uri,range:a}))n.push({...c,caller:{...s,name:o.name,kind:o.kind}})}}return jn(n)}function jn(e){let t=new Set;return e.filter(n=>{let r=JSON.stringify([n.file,n.line,n.character,n.caller]);return t.has(r)?!1:(t.add(r),!0)}).sort((n,r)=>$(n.file,r.file)||n.line-r.line||(n.character??0)-(r.character??0)||$(n.caller.name,r.caller.name)||n.caller.line-r.caller.line)}function jl(e){let t=JSON.stringify(e);return`Content-Length: ${ZA(t)}${XA}${t}`}function ZA(e){return new TextEncoder().encode(e).byteLength}function Sf(){let e=new TextEncoder,t=new TextDecoder,n=new Uint8Array(0),r=[],o=0,s=0,a=0,l=f=>{n=n.subarray(f),a=0},c=f=>{r.push(f),o+=f.length},d=()=>{if(!r.length)return;let f=new Uint8Array(n.length+o);f.set(n);let m=n.length;for(let p of r)f.set(p,m),m+=p.length;n=f,r.length=0,o=0},u=()=>{for(let f=a;f+3U_&&l(n.length-U_),m;let g=t.decode(n.subarray(0,p)),h=/content-length:\s*(\d+)/i.exec(g);if(!h){l(p+4);continue}let _=Number(h[1]);if(!Number.isSafeInteger(_)||_<0||_>H_){l(p+4);continue}let y=p+4;if(n.lengthc===0||c===1&&/^[A-Za-z]:$/.test(l)?l:encodeURIComponent(l)).join("/")}function kf(e,t){if(typeof e!="string"){for(let l of e){let c=kf(l,t);if(c!==void 0)return c}return}if(!t.startsWith("file://"))return;let n;try{let l=t.slice(7);n=decodeURIComponent(l.startsWith("/")?l:`//${l}`).replace(/\\/g,"/")}catch{return}/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1));let r=e.replace(/\\/g,"/").replace(/\/+$/,""),o=/^[A-Za-z]:/.test(r)||r.startsWith("//"),s=o?n.toLowerCase():n,a=o?r.toLowerCase():r;if(s===a)return"";if(s.startsWith(`${a}/`))return n.slice(r.length+1)}function Vs(e,t){let n=Array.isArray(t)?t:t&&typeof t=="object"?[t]:[],r=new Set,o=[];for(let s of n){if(!s||typeof s!="object")continue;let a=s.uri??s.targetUri;if(!a)continue;let l=kf(e,a);if(l===void 0||l==="")continue;let c=(s.range??s.targetSelectionRange??s.targetRange)?.start,d=typeof c?.line=="number"?c.line+1:1,u=typeof c?.character=="number"?c.character:void 0,f=`${l}:${d}:${u??""}`;r.has(f)||(r.add(f),o.push(u===void 0?{file:l,line:d}:{file:l,line:d,character:u}))}return o.sort((s,a)=>$(s.file,a.file)||s.line-a.line||(s.character??0)-(a.character??0))}var H_,U_,XA,ko=z(()=>{"use strict";I();le();H_=32*1024*1024,U_=64*1024,XA=`\r \r -`});function pf(e,t){let n=t.lastError?.();return n&&!e.includes(n)?`${e}: ${n}`:e}async function gf(e,t){let n=t.timeoutMs??IA,r=t.startupTimeoutMs??TA,o=ff(),s=new Map,a=new Set,l=[t.root,...(t.rootAliases??[]).filter(y=>y!==t.root)],c=1,d,u=y=>{d=y;for(let[,b]of s)clearTimeout(b.timer),b.reject(y);s.clear()};e.onData(y=>{for(let b of o.push(y)){if(typeof b.id!="number")continue;let w=s.get(b.id);w&&(s.delete(b.id),clearTimeout(w.timer),b.error?w.reject(new Error(`${b.error.message} (code ${b.error.code})`)):w.resolve(b.result))}}),e.onExit(y=>u(new Error(pf(`language server exited (code ${y??"unknown"})`,e))));let f=(y,b)=>{d||e.write(Pl({jsonrpc:"2.0",method:y,params:b}))},m=(y,b,w=n)=>{if(d)return Promise.reject(d);let S=c++;return new Promise((k,M)=>{let N=setTimeout(()=>{s.delete(S),M(new Ll(y,w))},w);N.unref?.(),s.set(S,{resolve:k,reject:M,timer:N}),e.write(Pl({jsonrpc:"2.0",id:S,method:y,params:b}))})},p=await m("initialize",{processId:typeof F<"u"&&typeof F.pid=="number"?F.pid:null,rootUri:Qr(t.root,""),workspaceFolders:[{uri:Qr(t.root,""),name:"repo"}],capabilities:{textDocument:{references:{dynamicRegistration:!1},definition:{dynamicRegistration:!1,linkSupport:!0},implementation:{dynamicRegistration:!1,linkSupport:!0},callHierarchy:{dynamicRegistration:!1}}},...t.initializationOptions!==void 0?{initializationOptions:t.initializationOptions}:{}},r);f("initialized",{});let g=y=>{let b=p?.capabilities?.[y];return b===!0||typeof b=="object"&&b!==null},h={references:g("referencesProvider"),definition:g("definitionProvider"),implementation:g("implementationProvider"),typeHierarchy:g("typeHierarchyProvider"),callHierarchy:g("callHierarchyProvider")},_=(y,b,w)=>({textDocument:{uri:Qr(t.root,y)},position:{line:Math.max(0,b-1),character:w}});return{capabilities:h,didOpen(y,b,w){a.has(y)||(a.add(y),f("textDocument/didOpen",{textDocument:{uri:Qr(t.root,y),languageId:w,version:1,text:b}}))},async references(y,b,w){if(!h.references)return[];let S=await m("textDocument/references",{..._(y,b,w),context:{includeDeclaration:!0}});return zs(l,S)},async definition(y,b,w){return h.definition?zs(l,await m("textDocument/definition",_(y,b,w))):[]},async incomingCalls(y,b,w){if(!h.callHierarchy)return[];let S=await m("textDocument/prepareCallHierarchy",_(y,b,w));if(!Array.isArray(S))return[];let k=[];try{for(let M of S)!M||typeof M!="object"||k.push(...A_(l,await m("callHierarchy/incomingCalls",{item:M})))}catch(M){throw new xo(M,Dn(k))}return Dn(k)},alive(){return d===void 0},async shutdown(){try{for(let y of a)f("textDocument/didClose",{textDocument:{uri:Qr(t.root,y)}});a.clear(),await m("shutdown",null,Math.min(n,2e3)),f("exit",void 0)}catch{}finally{u(new Error("session closed")),e.close()}}}}var Ll,xo,IA,TA,Dl=H(()=>{"use strict";I();wo();Ll=class extends Error{constructor(t,n){super(`${t} exceeded ${n}ms`),this.name="LspTimeout"}},xo=class extends Error{constructor(n,r){super(n instanceof Error?n.message:String(n),{cause:n});this.calls=r;this.name="LspIncomingCallsError"}calls},IA=5e3,TA=15e3});function T_(e,t){let n="callers"in t?t.callers:void 0,r=new Set;if(Array.isArray(n))for(let s of n)s&&typeof s.file=="string"&&r.add(s.file);let o=new Set(e.map(s=>s.file));return{both:[...o].filter(s=>r.has(s)).sort(T),lspOnly:[...o].filter(s=>!r.has(s)).sort(T),staticOnly:[...r].filter(s=>!o.has(s)).sort(T)}}function jl(e,t){return{server:e,ok:!1,reason:t,calls:[],agreement:{both:[],lspOnly:[],staticOnly:[]}}}async function $_(e,t,n,r){let o=[];if(!n.capabilities.callHierarchy)return{calls:o,reason:"server does not provide textDocument/prepareCallHierarchy"};try{for(let s of t){let a=le(j(e.root,s.file),"utf8");n.didOpen(s.file,a,r??s.lang),o.push(...await n.incomingCalls(s.file,s.line,Ol(e.root,s.file,s.line,s.name)))}return{calls:Dn(o)}}catch(s){return s instanceof xo&&o.push(...s.calls),{calls:Dn(o),reason:s instanceof Error?s.message:String(s)}}}var F_=H(()=>{"use strict";I();ve();pe();ce();Dl();wo();Nl()});function hf(e,t){let n;try{n=sm(e.command,e.args??[],{cwd:t,stdio:["pipe","pipe","pipe"],...e.env?{env:{...F.env,...e.env}}:{}})}catch{return}let r=!1,o="",s=d=>{o=(o+d).slice(-$A)},a=[],l=[],c=d=>{if(!r){r=!0;for(let u of l)u(d)}};return n.on("error",d=>{s(d.message),c(null)}),n.on("close",d=>c(d)),n.stdin?.on("error",()=>c(null)),n.stdout?.on("error",()=>c(null)),n.stderr?.on("error",()=>c(null)),n.stdout?.on("data",d=>{for(let u of a)u(d)}),n.stderr?.setEncoding("utf8"),n.stderr?.on("data",d=>s(String(d))),{write(d){if(!r)try{n.stdin?.write(d)}catch{c(null)}},onData(d){a.push(d)},lastError(){let d=o.split(/\r?\n/).map(f=>f.trim()).filter(Boolean),u=d[d.length-1];return u&&u.length>300?`${u.slice(0,300)}\u2026`:u},onExit(d){r?d(null):l.push(d)},kill(){if(!r)try{n.kill("SIGKILL")}catch{}},close(){try{n.stdin?.end()}catch{}let d=setTimeout(()=>{try{n.kill("SIGKILL")}catch{}},2e3);d.unref?.(),n.on("close",()=>clearTimeout(d))}}}var $A,yf=H(()=>{"use strict";I();Ko();$A=2048});function FA(e){try{let t=nt(e);return t===e?[]:[t]}catch{return[]}}async function Wl(e,t){if(!Zt(e.command))return{ok:!1,reason:`${e.command} is not on PATH`};let n=hf(e,t);if(!n)return{ok:!1,reason:`could not start ${e.command}`};try{return{ok:!0,session:await gf(n,{root:t,rootAliases:FA(t),timeoutMs:Tl(e),startupTimeoutMs:E_(e),...e.initializationOptions!==void 0?{initializationOptions:e.initializationOptions}:{}}),transport:n}}catch(r){return n.close(),{ok:!1,reason:pf(r instanceof Error?r.message:String(r),n)}}}function OA(e){return Re(e.files.filter(t=>t.kind!=="doc").map(t=>`${t.rel}:${t.hash}`).join(` -`))}async function _f(e,t,n,r){if(n)return n.use(e,t.root,OA(t),r);let o=await Wl(e,t.root);if(!o.ok)return o;let s=!1;try{return{ok:!0,value:await r({session:o.session,get warm(){return s},markWarm:()=>{s=!0}})}}finally{await o.session.shutdown()}}function PA(){let e=F.env.CODEINDEX_LSP_IDLE_MS;if(e===void 0)return;let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}var NA,O_,Gs,bf=H(()=>{"use strict";I();ve();Qe();bt();Dl();$l();yf();NA=5*6e4,O_=["SIGINT","SIGTERM","SIGHUP"],Gs=class{entries=new Map;idleMs;open;live=new Set;killAll=()=>{for(let t of this.live)t.kill?.()};hooked=!1;closed=!1;constructor(t={}){this.idleMs=t.idleMs??PA()??NA,this.open=t.open??Wl}get size(){return this.entries.size}async use(t,n,r,o,s=!1){let a=JSON.stringify([n,t.id]),l=JSON.stringify(t),c=this.entries.get(a);c&&(c.identity!==l||c.stamp!==r)&&(this.retire(a,c),c=void 0);let d=c?await c.opening:void 0;c&&d?.ok&&!d.session.alive()&&(this.retire(a,c),c=void 0);let u=c!==void 0;if(!c){this.hook();let p=this.open(t,n).then(g=>(g.ok&&(this.live.add(g.transport),g.transport.onExit(()=>{this.live.delete(g.transport),this.closed&&this.unhook()})),g));c={identity:l,stamp:r,opening:p,warm:!1,busy:0,retired:!1},this.entries.set(a,c),d=await c.opening}if(!d?.ok)return this.entries.get(a)===c&&this.entries.delete(a),{ok:!1,reason:d?.reason??"language server did not start"};let f=c;f.busy++,f.idle&&clearTimeout(f.idle),f.idle=void 0;let m;try{m=await o({session:d.session,get warm(){return f.warm},markWarm:()=>{f.warm=!0}})}finally{f.busy--,f.busy===0&&(f.retired?this.shutdown(f):(f.idle=setTimeout(()=>this.retire(a,f),this.idleMs),f.idle.unref?.()))}return u&&!s&&!d.session.alive()?(this.retire(a,f),this.use(t,n,r,o,!0)):{ok:!0,value:m}}async close(){let t=[...this.entries.values()];this.entries.clear(),this.closed=!0,await Promise.all(t.map(n=>this.shutdown(n))),this.unhook()}retire(t,n){this.entries.get(t)===n&&this.entries.delete(t),n.retired=!0,n.busy===0&&this.shutdown(n)}async shutdown(t){t.idle&&clearTimeout(t.idle),t.idle=void 0;let n=await t.opening;n.ok&&await n.session.shutdown()}onSignal=t=>{this.killAll(),this.unhook(!0),F.listenerCount(t)===0&&F.kill(F.pid,t)};hook(){if(this.closed=!1,!this.hooked){this.hooked=!0,F.on("exit",this.killAll);for(let t of O_)F.on(t,this.onSignal)}}unhook(t=!1){if(!(!this.hooked||this.live.size&&!t)){this.hooked=!1,F.removeListener("exit",this.killAll);for(let n of O_)F.removeListener(n,this.onSignal)}}}});async function So(e,t,n=!1,r={}){let{path:o,source:s,ignored:a}=Hs(t,r),l=a?{ignoredConfig:{path:a,reason:Il}}:{},c=_o(t,r);if(!c)return{lspVersion:1,mode:"none",configPath:o??null,source:s,...l,servers:[],unmappedLanguages:[]};let d=new Map;for(let p of e.files)d.set(p.lang,(d.get(p.lang)??0)+1);let u=[];for(let p of c.servers){let g={id:p.id,languages:p.languages,command:p.command,onPath:Zt(p.command),filesInRepo:p.languages.reduce((h,_)=>h+(d.get(_)??0),0)};if(n){let h=await Wl(p,e.root);h.ok?(g.reachable=!0,g.capabilities=h.session.capabilities,await h.session.shutdown()):(g.reachable=!1,g.error=h.reason)}u.push(g)}let f=new Set(c.servers.flatMap(p=>p.languages)),m=[...d.keys()].filter(p=>!f.has(p)&&p!=="other").sort();return{lspVersion:1,mode:"configured",configPath:o??null,source:s,...l,servers:u,unmappedLanguages:m}}async function ko(e,t,n,r,o={}){let s;try{s=_o(t,o)}catch(p){return{...r,lsp:Yr("(config)",p instanceof Error?p.message:String(p))}}if(!s){let p=Hs(t,o).ignored;return p?{...r,lsp:Yr("(config)",`${p} ignored: ${Il}`)}:r}if(!r.defs.length)return{...r,lsp:Yr("(none)",`no declaration of ${n} to anchor a request on`)};let{groups:a,reasons:l}=j_(s,r.defs),c=[],d=[],u=r.callSites.some(p=>!N_(p,r.defs));for(let[p,g]of a){let h=await _f(p,e,o.pool,b=>D_(b,p,()=>M_(e,n,{...r,defs:g},b.session,p.id,p.languageId),w=>w.lsp?.ok?w.lsp.refs.some(S=>!N_(S,g))?"full":"thin":"failed",u));if(!h.ok){l.push(`${p.id}: ${h.reason}`);continue}let{answer:_,partial:y}=h.value;_.lsp&&(d.push(..._.lsp.refs),_.lsp.ok||l.push(`${p.id}: ${_.lsp.reason??"request failed"}`)),y&&c.push(`${p.id}: ${P_}`)}let f=new Set,m=d.filter(p=>{let g=JSON.stringify([p.file,p.line,p.character]);return f.has(g)?!1:(f.add(g),!0)}).sort((p,g)=>p.fileg.file?1:p.line-g.line||(p.character??0)-(g.character??0));return{...r,lsp:{server:[...a.keys()].map(p=>p.id).sort().join(", ")||"(none)",ok:l.length===0,...L_(l,c),refs:m,agreement:bo(m,r)}}}async function qs(e,t,n,r,o={}){let s;try{s=_o(t,o)}catch(y){return{...r,lsp:jl("(config)",y instanceof Error?y.message:String(y))}}if(!s){let y=Hs(t,o).ignored;return{...r,lsp:jl("(none)",y?`${y} ignored: ${Il}`:"no LSP server configured")}}let a=n.indexOf("@"),l=a<0?n:n.slice(0,a),c=a<0?void 0:n.slice(a+1),d=_n(e,l,{maxResults:1/0}).filter(y=>c===void 0||y.file===c);if(!d.length)return{...r,lsp:jl("(none)",`no declaration of ${n} to anchor a request on`)};let{groups:u,reasons:f}=j_(s,d),m=[],p=[],g="callers"in r?r.callers:void 0,h=Array.isArray(g)&&g.length>0;for(let[y,b]of u){let w=await _f(y,e,o.pool,M=>D_(M,y,()=>$_(e,b,M.session,y.languageId),N=>N.reason?"failed":N.calls.length?"full":"thin",h));if(!w.ok){f.push(`${y.id}: ${w.reason}`);continue}let{answer:S,partial:k}=w.value;p.push(...S.calls),S.reason&&f.push(`${y.id}: ${S.reason}`),k&&m.push(`${y.id}: ${P_}`)}let _=Dn(p);return{...r,lsp:{server:[...u.keys()].map(y=>y.id).sort().join(", ")||"(none)",ok:f.length===0,...L_(f,m),calls:_,agreement:T_(_,r)}}}function L_(e,t){let n=[...new Set([...e,...t])].sort();return{...t.length?{partial:!0}:{},...n.length?{reason:n.join("; ")}:{}}}function N_(e,t){return t.some(n=>n.file===e.file&&n.line===e.line)}async function D_(e,t,n,r,o){let s=await n(),a=Tl(t);for(let l of[...LA,1/0]){let c=r(s);if(c==="full"&&e.markWarm(),c!=="thin")return{answer:s,partial:!1};if(!o||e.warm)return{answer:s,partial:!1};if(l>a)break;a-=l,await new Promise(d=>setTimeout(d,l)),s=await n()}return{answer:s,partial:!0}}function j_(e,t){let n=new Map,r=[];for(let o of t){let s=uf(e,o.lang);if(!s){r.push(`no server configured for ${o.lang}`);continue}let a=n.get(s)??[];a.push(o),n.set(s,a)}return{groups:n,reasons:r}}var P_,LA,Bl=H(()=>{"use strict";I();Ps();Qe();$l();Nl();F_();wo();bf();bf();P_="answered with declarations only while the static tier found call sites; the server may still be indexing, or those sites are homonyms";LA=[100,250,500,1e3]});function GA(e){let t=new Map(e.files.map(s=>[s.rel,s.lang])),n=new Set;for(let s of e.fileEdges){if(s.dangling||s.kind==="contains"||s.kind==="doc-link"||s.kind==="mention")continue;let a=t.get(s.from),l=t.get(s.to);a!==void 0&&n.add(a),l!==void 0&&n.add(l)}let r=new Set;for(let s of e.files)U_.has(s.lang)&&(s.degIn>0||s.degOut>0&&!s.testFile)&&r.add(`${s.lang}\0${H_(s.rel)}`);let o=[];for(let s of e.files)s.fileKind!=="code"||s.degIn!==0||s.degOut!==0||s.testFile||!n.has(s.lang)||qA(s.rel)||U_.has(s.lang)&&r.has(`${s.lang}\0${H_(s.rel)}`)||o.push(s.rel);return o}function qA(e){let n=e.split("/").pop().split(".")[0].toLowerCase();return zA.has(n)}function wf(e){return Array.isArray(e)?e:[e]}function Ul(e,t){let n;try{n=JSON.parse(e)}catch(r){let o=/position (\d+)/.exec(r instanceof Error?r.message:""),s="";if(o){let a=e.slice(0,Number(o[1]));s=` (line ${a.split(` +`});function Ef(e,t){let n=t.lastError?.();return n&&!e.includes(n)?`${e}: ${n}`:e}async function vf(e,t){let n=t.timeoutMs??YA,r=t.startupTimeoutMs??QA,o=Sf(),s=new Map,a=new Set,l=[t.root,...(t.rootAliases??[]).filter(y=>y!==t.root)],c=1,d,u=y=>{d=y;for(let[,b]of s)clearTimeout(b.timer),b.reject(y);s.clear()};e.onData(y=>{for(let b of o.push(y)){if(typeof b.id!="number")continue;let x=s.get(b.id);x&&(s.delete(b.id),clearTimeout(x.timer),b.error?x.reject(new Error(`${b.error.message} (code ${b.error.code})`)):x.resolve(b.result))}}),e.onExit(y=>u(new Error(Ef(`language server exited (code ${y??"unknown"})`,e))));let f=(y,b)=>{d||e.write(jl({jsonrpc:"2.0",method:y,params:b}))},m=(y,b,x=n)=>{if(d)return Promise.reject(d);let k=c++;return new Promise((v,T)=>{let F=setTimeout(()=>{s.delete(k),T(new Wl(y,x))},x);F.unref?.(),s.set(k,{resolve:v,reject:T,timer:F}),e.write(jl({jsonrpc:"2.0",id:k,method:y,params:b}))})},p=await m("initialize",{processId:typeof O<"u"&&typeof O.pid=="number"?O.pid:null,rootUri:ts(t.root,""),workspaceFolders:[{uri:ts(t.root,""),name:"repo"}],capabilities:{textDocument:{references:{dynamicRegistration:!1},definition:{dynamicRegistration:!1,linkSupport:!0},implementation:{dynamicRegistration:!1,linkSupport:!0},callHierarchy:{dynamicRegistration:!1}}},...t.initializationOptions!==void 0?{initializationOptions:t.initializationOptions}:{}},r);f("initialized",{});let g=y=>{let b=p?.capabilities?.[y];return b===!0||typeof b=="object"&&b!==null},h={references:g("referencesProvider"),definition:g("definitionProvider"),implementation:g("implementationProvider"),typeHierarchy:g("typeHierarchyProvider"),callHierarchy:g("callHierarchyProvider")},_=(y,b,x)=>({textDocument:{uri:ts(t.root,y)},position:{line:Math.max(0,b-1),character:x}});return{capabilities:h,didOpen(y,b,x){a.has(y)||(a.add(y),f("textDocument/didOpen",{textDocument:{uri:ts(t.root,y),languageId:x,version:1,text:b}}))},async references(y,b,x){if(!h.references)return[];let k=await m("textDocument/references",{..._(y,b,x),context:{includeDeclaration:!0}});return Vs(l,k)},async definition(y,b,x){return h.definition?Vs(l,await m("textDocument/definition",_(y,b,x))):[]},async incomingCalls(y,b,x){if(!h.callHierarchy)return[];let k=await m("textDocument/prepareCallHierarchy",_(y,b,x));if(!Array.isArray(k))return[];let v=[];try{for(let T of k)!T||typeof T!="object"||v.push(...z_(l,await m("callHierarchy/incomingCalls",{item:T})))}catch(T){throw new Eo(T,jn(v))}return jn(v)},alive(){return d===void 0},async shutdown(){try{for(let y of a)f("textDocument/didClose",{textDocument:{uri:ts(t.root,y)}});a.clear(),await m("shutdown",null,Math.min(n,2e3)),f("exit",void 0)}catch{}finally{u(new Error("session closed")),e.close()}}}}var Wl,Eo,YA,QA,Bl=z(()=>{"use strict";I();ko();Wl=class extends Error{constructor(t,n){super(`${t} exceeded ${n}ms`),this.name="LspTimeout"}},Eo=class extends Error{constructor(n,r){super(n instanceof Error?n.message:String(n),{cause:n});this.calls=r;this.name="LspIncomingCallsError"}calls},YA=5e3,QA=15e3});function G_(e,t){let n="callers"in t?t.callers:void 0,r=new Set;if(Array.isArray(n))for(let s of n)s&&typeof s.file=="string"&&r.add(s.file);let o=new Set(e.map(s=>s.file));return{both:[...o].filter(s=>r.has(s)).sort($),lspOnly:[...o].filter(s=>!r.has(s)).sort($),staticOnly:[...r].filter(s=>!o.has(s)).sort($)}}function Ul(e,t){return{server:e,ok:!1,reason:t,calls:[],agreement:{both:[],lspOnly:[],staticOnly:[]}}}async function q_(e,t,n,r){let o=[];if(!n.capabilities.callHierarchy)return{calls:o,reason:"server does not provide textDocument/prepareCallHierarchy"};try{for(let s of t){let a=ie(j(e.root,s.file),"utf8");n.didOpen(s.file,a,r??s.lang),o.push(...await n.incomingCalls(s.file,s.line,Ll(e.root,s.file,s.line,s.name)))}return{calls:jn(o)}}catch(s){return s instanceof Eo&&o.push(...s.calls),{calls:jn(o),reason:s instanceof Error?s.message:String(s)}}}var V_=z(()=>{"use strict";I();Ee();fe();le();Bl();ko();Dl()});function Rf(e,t){let n;try{n=ym(e.command,e.args??[],{cwd:t,stdio:["pipe","pipe","pipe"],...e.env?{env:{...O.env,...e.env}}:{}})}catch{return}let r=!1,o="",s=d=>{o=(o+d).slice(-eI)},a=[],l=[],c=d=>{if(!r){r=!0;for(let u of l)u(d)}};return n.on("error",d=>{s(d.message),c(null)}),n.on("close",d=>c(d)),n.stdin?.on("error",()=>c(null)),n.stdout?.on("error",()=>c(null)),n.stderr?.on("error",()=>c(null)),n.stdout?.on("data",d=>{for(let u of a)u(d)}),n.stderr?.setEncoding("utf8"),n.stderr?.on("data",d=>s(String(d))),{write(d){if(!r)try{n.stdin?.write(d)}catch{c(null)}},onData(d){a.push(d)},lastError(){let d=o.split(/\r?\n/).map(f=>f.trim()).filter(Boolean),u=d[d.length-1];return u&&u.length>300?`${u.slice(0,300)}\u2026`:u},onExit(d){r?d(null):l.push(d)},kill(){if(!r)try{n.kill("SIGKILL")}catch{}},close(){try{n.stdin?.end()}catch{}let d=setTimeout(()=>{try{n.kill("SIGKILL")}catch{}},2e3);d.unref?.(),n.on("close",()=>clearTimeout(d))}}}var eI,Cf=z(()=>{"use strict";I();Yo();eI=2048});function tI(e){try{let t=st(e);return t===e?[]:[t]}catch{return[]}}async function zl(e,t){if(!Yt(e.command))return{ok:!1,reason:`${e.command} is not on PATH`};let n=Rf(e,t);if(!n)return{ok:!1,reason:`could not start ${e.command}`};try{return{ok:!0,session:await vf(n,{root:t,rootAliases:tI(t),timeoutMs:Ol(e),startupTimeoutMs:D_(e),...e.initializationOptions!==void 0?{initializationOptions:e.initializationOptions}:{}}),transport:n}}catch(r){return n.close(),{ok:!1,reason:Ef(r instanceof Error?r.message:String(r),n)}}}function nI(e){return Re(e.files.filter(t=>t.kind!=="doc").map(t=>`${t.rel}:${t.hash}`).join(` +`))}async function Mf(e,t,n,r){if(n)return n.use(e,t.root,nI(t),r);let o=await zl(e,t.root);if(!o.ok)return o;let s=!1;try{return{ok:!0,value:await r({session:o.session,get warm(){return s},markWarm:()=>{s=!0}})}}finally{await o.session.shutdown()}}function sI(){let e=O.env.CODEINDEX_LSP_IDLE_MS;if(e===void 0)return;let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}var rI,J_,Js,Af=z(()=>{"use strict";I();Ee();et();xt();Bl();Nl();Cf();rI=5*6e4,J_=["SIGINT","SIGTERM","SIGHUP"],Js=class{entries=new Map;idleMs;open;live=new Set;killAll=()=>{for(let t of this.live)t.kill?.()};hooked=!1;closed=!1;constructor(t={}){this.idleMs=t.idleMs??sI()??rI,this.open=t.open??zl}get size(){return this.entries.size}async use(t,n,r,o,s=!1){let a=JSON.stringify([n,t.id]),l=JSON.stringify(t),c=this.entries.get(a);c&&(c.identity!==l||c.stamp!==r)&&(this.retire(a,c),c=void 0);let d=c?await c.opening:void 0;c&&d?.ok&&!d.session.alive()&&(this.retire(a,c),c=void 0);let u=c!==void 0;if(!c){this.hook();let p=this.open(t,n).then(g=>(g.ok&&(this.live.add(g.transport),g.transport.onExit(()=>{this.live.delete(g.transport),this.closed&&this.unhook()})),g));c={identity:l,stamp:r,opening:p,warm:!1,busy:0,retired:!1},this.entries.set(a,c),d=await c.opening}if(!d?.ok)return this.entries.get(a)===c&&this.entries.delete(a),{ok:!1,reason:d?.reason??"language server did not start"};let f=c;f.busy++,f.idle&&clearTimeout(f.idle),f.idle=void 0;let m;try{m=await o({session:d.session,get warm(){return f.warm},markWarm:()=>{f.warm=!0}})}finally{f.busy--,f.busy===0&&(f.retired?this.shutdown(f):(f.idle=setTimeout(()=>this.retire(a,f),this.idleMs),f.idle.unref?.()))}return u&&!s&&!d.session.alive()?(this.retire(a,f),this.use(t,n,r,o,!0)):{ok:!0,value:m}}async close(){let t=[...this.entries.values()];this.entries.clear(),this.closed=!0,await Promise.all(t.map(n=>this.shutdown(n))),this.unhook()}retire(t,n){this.entries.get(t)===n&&this.entries.delete(t),n.retired=!0,n.busy===0&&this.shutdown(n)}async shutdown(t){t.idle&&clearTimeout(t.idle),t.idle=void 0;let n=await t.opening;n.ok&&await n.session.shutdown()}onSignal=t=>{this.killAll(),this.unhook(!0),O.listenerCount(t)===0&&O.kill(O.pid,t)};hook(){if(this.closed=!1,!this.hooked){this.hooked=!0,O.on("exit",this.killAll);for(let t of J_)O.on(t,this.onSignal)}}unhook(t=!1){if(!(!this.hooked||this.live.size&&!t)){this.hooked=!1,O.removeListener("exit",this.killAll);for(let n of J_)O.removeListener(n,this.onSignal)}}}});async function vo(e,t,n=!1,r={}){let{path:o,source:s,ignored:a}=qs(t,r),l=a?{ignoredConfig:{path:a,reason:Fl}}:{},c=xo(t,r);if(!c)return{lspVersion:1,mode:"none",configPath:o??null,source:s,...l,servers:[],unmappedLanguages:[]};let d=new Map;for(let p of e.files)d.set(p.lang,(d.get(p.lang)??0)+1);let u=[];for(let p of c.servers){let g={id:p.id,languages:p.languages,command:p.command,onPath:Yt(p.command),filesInRepo:p.languages.reduce((h,_)=>h+(d.get(_)??0),0)};if(n){let h=await zl(p,e.root);h.ok?(g.reachable=!0,g.capabilities=h.session.capabilities,await h.session.shutdown()):(g.reachable=!1,g.error=h.reason)}u.push(g)}let f=new Set(c.servers.flatMap(p=>p.languages)),m=[...d.keys()].filter(p=>!f.has(p)&&p!=="other").sort();return{lspVersion:1,mode:"configured",configPath:o??null,source:s,...l,servers:u,unmappedLanguages:m}}async function Ro(e,t,n,r,o={}){let s;try{s=xo(t,o)}catch(p){return{...r,lsp:es("(config)",p instanceof Error?p.message:String(p))}}if(!s){let p=qs(t,o).ignored;return p?{...r,lsp:es("(config)",`${p} ignored: ${Fl}`)}:r}if(!r.defs.length)return{...r,lsp:es("(none)",`no declaration of ${n} to anchor a request on`)};let{groups:a,reasons:l}=Q_(s,r.defs),c=[],d=[],u=r.callSites.some(p=>!K_(p,r.defs));for(let[p,g]of a){let h=await Mf(p,e,o.pool,b=>Y_(b,p,()=>B_(e,n,{...r,defs:g},b.session,p.id,p.languageId),x=>x.lsp?.ok?x.lsp.refs.some(k=>!K_(k,g))?"full":"thin":"failed",u));if(!h.ok){l.push(`${p.id}: ${h.reason}`);continue}let{answer:_,partial:y}=h.value;_.lsp&&(d.push(..._.lsp.refs),_.lsp.ok||l.push(`${p.id}: ${_.lsp.reason??"request failed"}`)),y&&c.push(`${p.id}: ${X_}`)}let f=new Set,m=d.filter(p=>{let g=JSON.stringify([p.file,p.line,p.character]);return f.has(g)?!1:(f.add(g),!0)}).sort((p,g)=>p.fileg.file?1:p.line-g.line||(p.character??0)-(g.character??0));return{...r,lsp:{server:[...a.keys()].map(p=>p.id).sort().join(", ")||"(none)",ok:l.length===0,...Z_(l,c),refs:m,agreement:So(m,r)}}}async function Ks(e,t,n,r,o={}){let s;try{s=xo(t,o)}catch(y){return{...r,lsp:Ul("(config)",y instanceof Error?y.message:String(y))}}if(!s){let y=qs(t,o).ignored;return{...r,lsp:Ul("(none)",y?`${y} ignored: ${Fl}`:"no LSP server configured")}}let a=n.indexOf("@"),l=a<0?n:n.slice(0,a),c=a<0?void 0:n.slice(a+1),d=_n(e,l,{maxResults:1/0}).filter(y=>c===void 0||y.file===c);if(!d.length)return{...r,lsp:Ul("(none)",`no declaration of ${n} to anchor a request on`)};let{groups:u,reasons:f}=Q_(s,d),m=[],p=[],g="callers"in r?r.callers:void 0,h=Array.isArray(g)&&g.length>0;for(let[y,b]of u){let x=await Mf(y,e,o.pool,T=>Y_(T,y,()=>q_(e,b,T.session,y.languageId),F=>F.reason?"failed":F.calls.length?"full":"thin",h));if(!x.ok){f.push(`${y.id}: ${x.reason}`);continue}let{answer:k,partial:v}=x.value;p.push(...k.calls),k.reason&&f.push(`${y.id}: ${k.reason}`),v&&m.push(`${y.id}: ${X_}`)}let _=jn(p);return{...r,lsp:{server:[...u.keys()].map(y=>y.id).sort().join(", ")||"(none)",ok:f.length===0,...Z_(f,m),calls:_,agreement:G_(_,r)}}}function Z_(e,t){let n=[...new Set([...e,...t])].sort();return{...t.length?{partial:!0}:{},...n.length?{reason:n.join("; ")}:{}}}function K_(e,t){return t.some(n=>n.file===e.file&&n.line===e.line)}async function Y_(e,t,n,r,o){let s=await n(),a=Ol(t);for(let l of[...iI,1/0]){let c=r(s);if(c==="full"&&e.markWarm(),c!=="thin")return{answer:s,partial:!1};if(!o||e.warm)return{answer:s,partial:!1};if(l>a)break;a-=l,await new Promise(d=>setTimeout(d,l)),s=await n()}return{answer:s,partial:!0}}function Q_(e,t){let n=new Map,r=[];for(let o of t){let s=xf(e,o.lang);if(!s){r.push(`no server configured for ${o.lang}`);continue}let a=n.get(s)??[];a.push(o),n.set(s,a)}return{groups:n,reasons:r}}var X_,iI,Hl=z(()=>{"use strict";I();js();et();Nl();Dl();V_();ko();Af();Af();X_="answered with declarations only while the static tier found call sites; the server may still be indexing, or those sites are homonyms";iI=[100,250,500,1e3]});function mI(e){let t=new Map(e.files.map(s=>[s.rel,s.lang])),n=new Set;for(let s of e.fileEdges){if(s.dangling||s.kind==="contains"||s.kind==="doc-link"||s.kind==="mention")continue;let a=t.get(s.from),l=t.get(s.to);a!==void 0&&n.add(a),l!==void 0&&n.add(l)}let r=new Set;for(let s of e.files)nb.has(s.lang)&&(s.degIn>0||s.degOut>0&&!s.testFile)&&r.add(`${s.lang}\0${rb(s.rel)}`);let o=[];for(let s of e.files)s.fileKind!=="code"||s.degIn!==0||s.degOut!==0||s.testFile||!n.has(s.lang)||pI(s.rel)||nb.has(s.lang)&&r.has(`${s.lang}\0${rb(s.rel)}`)||o.push(s.rel);return o}function pI(e){let n=e.split("/").pop().split(".")[0].toLowerCase();return fI.has(n)}function If(e){return Array.isArray(e)?e:[e]}function Gl(e,t){let n;try{n=JSON.parse(e)}catch(r){let o=/position (\d+)/.exec(r instanceof Error?r.message:""),s="";if(o){let a=e.slice(0,Number(o[1]));s=` (line ${a.split(` `).length}, column ${a.length-a.lastIndexOf(` -`)})`}throw new Error(`rules config ${t} is not valid JSON${s}`)}try{return Hl(n)}catch(r){throw new Error(`rules config ${t}: ${r instanceof Error?r.message:String(r)}`)}}function Hl(e){let t=Array.isArray(e)?e:e?.rules;if(!Array.isArray(t))throw new Error("rules config must be an array (or an object with a `rules` array)");return t.map((n,r)=>{let o=`rules[${r}]`;if(typeof n!="object"||n===null||Array.isArray(n))throw new Error(`${o}: must be an object`);let s=n;if(typeof s.name!="string"||!s.name)throw new Error(`${o}: \`name\` (non-empty string) is required`);let a=s.builtin===void 0?BA:s.builtin==="literals"?UA:G_,l=Object.keys(s).filter(f=>!a.has(f)).sort(T);if(l.length){let f=s.builtin===void 0?"a forbidden-edge rule":`builtin "${String(s.builtin)}"`;throw new Error(`${o} (${s.name}): unknown key${l.length>1?"s":""} ${l.map(m=>`\`${m}\``).join(", ")} \u2014 ${f} takes ${[...a].join(", ")}`)}if(s.severity!==void 0&&!jA.has(s.severity))throw new Error(`${o} (${s.name}): \`severity\` must be "error" or "warn"`);if(s.comment!==void 0&&typeof s.comment!="string")throw new Error(`${o} (${s.name}): \`comment\` must be a string`);if(s.builtin!==void 0){if(!WA.has(s.builtin))throw new Error(`${o} (${s.name}): \`builtin\` must be "cycles", "orphans" or "literals"`);if(s.tiers!==void 0&&!(Array.isArray(s.tiers)&&s.tiers.length>0&&s.tiers.every(m=>B_.has(m))))throw new Error(`${o} (${s.name}): \`tiers\` must be a non-empty array of ${[...B_].join(", ")}`);for(let f of["minFiles","minCount"]){let m=s[f];if(m!==void 0&&!(typeof m=="number"&&Number.isInteger(m)&&m>=1))throw new Error(`${o} (${s.name}): \`${f}\` must be a positive integer`)}if(s.includeTests!==void 0&&typeof s.includeTests!="boolean")throw new Error(`${o} (${s.name}): \`includeTests\` must be a boolean`);return{name:s.name,builtin:s.builtin,severity:s.severity,comment:s.comment,...s.tiers!==void 0?{tiers:s.tiers}:{},...s.minFiles!==void 0?{minFiles:s.minFiles}:{},...s.minCount!==void 0?{minCount:s.minCount}:{},...s.includeTests!==void 0?{includeTests:s.includeTests}:{}}}let c=f=>{let m=s[f];if(!(typeof m=="string"?m.length>0:Array.isArray(m)&&m.length>0&&m.every(g=>typeof g=="string"&&g)))throw new Error(`${o} (${s.name}): \`${f}\` must be a glob or a non-empty array of globs`);return m},d=c("from"),u=c("to");if(s.kind!==void 0&&!(Array.isArray(s.kind)&&s.kind.length>0&&s.kind.every(m=>W_.has(m))))throw new Error(`${o} (${s.name}): \`kind\` must be a non-empty array of edge kinds (${[...W_].join(", ")})`);return{name:s.name,from:d,to:u,kind:s.kind,severity:s.severity,comment:s.comment}})}function VA(e){let t=new Map;for(let u of e.moduleEdges){if(u.kind!=="import")continue;let f=t.get(u.from);f||t.set(u.from,f=[]),f.push(u.to)}for(let u of t.values())u.sort(T);let n=[...t.keys()].sort(T),r=new Map,o=new Map,s=new Set,a=[],l=[],c=0;for(let u of n){if(r.has(u))continue;let f=[{node:u,next:0}];for(;f.length;){let m=f[f.length-1],p=m.node;m.next===0&&(r.set(p,c),o.set(p,c),c++,a.push(p),s.add(p));let g=t.get(p)??[];if(m.next1&&l.push(_)}f.pop();let h=f[f.length-1];h&&o.set(h.node,Math.min(o.get(h.node),o.get(p)))}}}let d=[];for(let u of l){let f=new Set(u),m=[...u].sort(T)[0],p=new Map([[m,null]]),g=[m];for(let y=0;y(t.get(y)??[]).includes(m)&&y!==m)??m,_=[];for(let y=h;y!==null;y=p.get(y)??null)_.unshift(y);_.push(m),d.push({start:m,path:_})}return d}function Eo(e,t,n={}){let r=[],o=(c,d)=>{r.push({rule:c.name,...d,severity:c.severity??"error",...c.comment!==void 0?{comment:c.comment}:{}})},s=new Set(e.files.map(c=>c.rel)),a=new Map,l=c=>{if(!n.scan)return e.literalDuplications??[];let d=`${c.minFiles??""}\0${c.minCount??""}\0${c.includeTests===!0}`,u=a.get(d);return u||(u=Nn(n.scan,{minFiles:c.minFiles,minCount:c.minCount,includeTests:c.includeTests}).duplications,a.set(d,u)),u};for(let c of t){if("builtin"in c){if(c.builtin==="cycles")for(let p of VA(e))o(c,{from:p.start,to:p.path.join(" -> "),kind:"cycle"});else if(c.builtin==="literals"){let p=new Set(c.tiers?.length?c.tiers:HA);for(let g of l(c)){if(!p.has(g.tier))continue;let h=g.holders[0]??g.literals[0];o(c,{from:`${h.file}:${h.line}`,to:`${g.tier} ${JSON.stringify(g.value)} (${g.count} sites, ${g.files} files)`,kind:"literal"})}}else for(let p of GA(e))o(c,{from:p,to:p,kind:"orphan"});continue}let d=At(wf(c.from)),u=At(wf(c.to));if(!d||!u)continue;let f=!1;for(let[p,g]of[["from",d],["to",u]])e.files.some(h=>g(h.rel))||(f=!0,r.push({rule:c.name,from:wf(c[p]).join(", "),to:`\`${p}\` matches no indexed file`,kind:"unmatched",severity:"warn"}));if(f)continue;let m=c.kind?.length?new Set(c.kind):null;for(let p of e.fileEdges)p.dangling||!s.has(p.to)||m&&!m.has(p.kind)||!d(p.from)||!u(p.to)||o(c,{from:p.from,to:p.to,kind:p.kind})}return r.sort((c,d)=>T(c.rule,d.rule)||T(c.from,d.from)||T(c.to,d.to)||T(c.kind,d.kind)),r}function zl(e){let t=e.filter(n=>n.severity==="error").length;return{errors:t,warnings:e.length-t,violations:e}}var DA,W_,jA,WA,B_,z_,BA,G_,UA,HA,zA,U_,H_,Gl=H(()=>{"use strict";I();gi();js();ce();DA={contains:!0,"doc-link":!0,import:!0,call:!0,extends:!0,implements:!0,use:!0,mention:!0},W_=new Set(Object.keys(DA)),jA=new Set(["error","warn"]),WA=new Set(["cycles","orphans","literals"]),B_=new Set(["competing","bypassed","uncentralized"]),z_=["name","severity","comment"],BA=new Set([...z_,"from","to","kind"]),G_=new Set([...z_,"builtin"]),UA=new Set([...G_,"tiers","minFiles","minCount","includeTests"]),HA=["competing","bypassed"],zA=new Set(["index","main","app","application","cli","server","entry","entrypoint","setup","conftest","__init__","__main__","mod","lib","wsgi","asgi","manage"]),U_=new Set(["go","java","kotlin","scala"]),H_=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):""});function tI(e){return Es(vo(e)||"(root)")===2||/(^|\/)testdata\//.test(e)}function q_(e){if(KA.has(e.kind))return!0;if(e.kind!=="const"||!e.signature)return!1;let t=Ne(e.lang);return t==="js"?XA.test(e.signature):t==="python"&&ZA.test(e.signature)}function nI(e){switch(Ne(e.lang)){case"python":return/^__\w+__$/.test(e.name);case"go":return e.name==="init"||e.name==="main";case"js":return e.name==="constructor";default:return!1}}function Ro(e,t={}){let n=t.kinds==="all",r=$s(e),o=Ft(e),s=rr(e,o),a=iI(e,o,s),l=m=>{let p=r.get(`${m.name}@${m.file}`)??r.get(m.name);return!!p&&p.def.file===m.file&&p.callers.length>0},c=rI(e,s,m=>l(m)||a.has(`${m.name}${gt}${m.file}`)),d=[];for(let m of e.files)if(!$t(m.rel)&&!(!t.includeTail&&tI(m.rel)))for(let p of m.symbols)!p.exported||JA.has(p.kind)||nI(p)||!n&&!q_(p)||a.has(`${p.name}${gt}${p.file}`)||l(p)||c(p)||d.push(p);let u=sI(e,d,s),f=[];for(let m of d){let p=u(m);p&&!q_(m)||f.push({name:m.name,file:m.file,line:m.line,kind:m.kind,tier:p?"uncalled":"unreferenced"})}return f.sort((m,p)=>T(m.tier,p.tier)||T(m.file,p.file)||m.line-p.line)}function rI(e,t,n){let r=[...t];for(let d of Bi(e))r.push({...d,kind:"implements"});let o=new Map;for(let{sub:d,sup:u}of fu(e,r)){let f=o.get(d)??[];f.push(u),o.set(d,f)}let s=new Map;for(let d of t){let u=`${d.from}${gt}${d.fromFile}`;s.set(u,(s.get(u)??0)+1)}let a=new Set;for(let d of e.files){if(Ne(d.lang)==="go")continue;let u=new Map;for(let f of d.relations??[])u.set(f.from,(u.get(f.from)??0)+1);for(let[f,m]of u)m>(s.get(`${f}${gt}${d.rel}`)??0)&&a.add(`${f}${gt}${d.rel}`)}let l=new Map,c=(d,u)=>{let f=l.get(d);if(f!==void 0)return f;let m=o.get(d),p;return m?(u.add(d),p=m.some(g=>n(g)||!u.has(g)&&c(g,u))):p=!!d.parent&&a.has(`${d.parent}${gt}${d.file}`),l.set(d,p),p};return d=>!!d.parent&&c(d,new Set)}function sI(e,t,n){let r=new Map;for(let m of t){let p=Ne(m.lang),g=r.get(p);g||r.set(p,g=new Map),g.has(m.name)||g.set(m.name,[])}let o=(m,p,g)=>{if(p===void 0)return;let h=m?.get(p);h&&h.length<2&&h[h.length-1]!==g&&h.push(g)},s=new Map,a=new Set;for(let m of e.files){if(m.kind!=="code")continue;s.set(m.rel,m.lang);let p=Ne(m.lang),g=r.get(p);if(g){m.idents===void 0&&a.add(p);for(let h of m.idents??[])o(g,h,m.rel);for(let h of m.calls??[])o(g,h.name,m.rel),o(g,h.receiver,m.rel);for(let h of m.importedNames??[])o(g,h,m.rel);for(let h of m.importAliases??[])o(g,h.name,m.rel),o(g,h.local,m.rel);for(let h of m.relations??[])o(g,h.to,"")}}for(let m of n)o(r.get(Ne(s.get(m.toFile)??"")),m.to,"");let l=il(e),c=m=>(r.get(Ne(m.lang))?.get(m.name)??[]).some(g=>g!==m.file)||[...l.get(m.name)??[]].some(g=>g!==m.file),d=new Map;for(let m of t){let p=Ne(m.lang);if(c(m)||eI.test(m.name)&&!a.has(p))continue;let g=d.get(p);g||d.set(p,g=new Set),g.add(m.name)}if(d.size)for(let m of e.files){if(m.kind!=="code")continue;let p=Ne(m.lang),g=d.get(p);if(!g)continue;let h=ie(j(e.root,m.rel)),_=p==="js"?/[A-Za-z_$][\w$]*/g:/[A-Za-z_]\w*/g,y=new Set;for(let b of h.match(_)??[])g.has(b)&&y.add(b);for(let b of y)o(r.get(p),b,m.rel)}let u=new Set,f=new Map;for(let m of t){if(c(m))continue;let p=f.get(m.file)??[];p.push(m),f.set(m.file,p)}for(let[m,p]of f){let g=new Set(p.map(y=>y.name)),h=Ne(p[0].lang)==="js"?/[A-Za-z_$][\w$]*/g:/[A-Za-z_]\w*/g,_=new Map;rl(ie(j(e.root,m)),p[0].lang).split(` -`).forEach((y,b)=>{for(let w of y.match(h)??[])g.has(w)&&(_.get(w)??_.set(w,[]).get(w)).push(b+1)});for(let y of p){let b=y.endLine??y.line;(_.get(y.name)??[]).some(w=>wb)&&u.add(y)}}return m=>u.has(m)||c(m)}function iI(e,t,n){let r=an(e),o=new Map(e.files.map(p=>[p.rel,p])),s=lI(e,r,o);if(!s.length)for(let p of e.files)p.kind==="code"&&QA.test(p.rel)&&s.push({rel:p.rel});for(let p of e.files)(p.rel==="__init__.py"||p.rel.endsWith("/__init__.py"))&&s.push({rel:p.rel});let a=Ns(t),l=new Set,c=new Set;for(let p=0;p<5&&s.length;p++){let g=[];for(let{rel:h,names:_}of s){let y=`${h}${gt}${_?[..._].sort(T).join(","):"*"}`;if(c.has(y))continue;c.add(y);let b=o.get(h);if(!b)continue;let w=new Set;for(let S of b.symbols)if(S.kind==="reexport")(!_||_.has(S.name))&&w.add(S.name);else if(S.kind==="reexport-all"){let k=/^\* \((.+)\)$/.exec(S.name)?.[1],M=k===void 0?void 0:at(h,b.ext,k,r);M?.kind==="resolved"&&g.push({rel:M.target,..._?{names:_}:{}})}else S.exported&&S.kind!=="default"&&(!_||_.has(S.name))&&l.add(`${S.name}${gt}${S.file}`);if(w.size)for(let S of[...a.get(h)??[]].sort(T))g.push({rel:S,names:w})}s=g}for(let p of oI(e,r))l.add(p);let d=new Map;for(let p of n){let g=`${p.from}${gt}${p.fromFile}`,h=d.get(g)??[];h.push(`${p.to}${gt}${p.toFile}`),d.set(g,h)}let u=new Map;for(let p of e.files)for(let g of p.symbols){if(!g.parent)continue;let h=`${g.parent}${gt}${g.file}`,_=u.get(h)??[];_.push(`${g.name}${gt}${g.file}`),u.set(h,_)}let f=new Set;for(let p of e.files)for(let g of p.symbols)YA.has(g.kind)&&f.add(`${g.name}${gt}${g.file}`);let m=[...l].sort(T);for(;m.length;){let p=m.pop(),g=[...d.get(p)??[],...f.has(p)?u.get(p)??[]:[]];for(let h of g)l.has(h)||(l.add(h),m.push(h))}return l}function oI(e,t){let n=[],r=new Set;for(let a of e.files)a.lang==="go"&&!a.rel.endsWith("_test.go")&&a.symbols.some(l=>l.name==="main"&&!l.parent&&l.kind==="function")&&r.add(vo(a.rel));let o=[];for(let a of e.files){let l=a.rel.slice(a.rel.lastIndexOf("/")+1);if(l!=="build.gradle"&&l!=="build.gradle.kts"&&l!=="pom.xml")continue;let c=ie(j(e.root,a.rel));(l==="pom.xml"?/|maven-deploy-plugin|central-publishing-maven-plugin|nexus-staging-maven-plugin/.test(c):/\bjava-library\b|\bmaven-publish\b|com\.vanniktech\.maven\.publish/.test(c))&&o.push(vo(a.rel))}let s=(a,l)=>!l||a.startsWith(l+"/");for(let a of e.files)if(!(a.kind!=="code"||$t(a.rel))){if(a.lang==="go"){if(a.rel.endsWith("_test.go"))continue;let l=t.goModules.find(u=>s(a.rel,u.dir));if(!l)continue;let c=vo(a.rel),d=l.dir?c.slice(l.dir.length+1):c;if(r.has(c)||/(^|\/)internal(\/|$)/.test(d))continue;for(let u of a.symbols)u.exported&&n.push(`${u.name}${gt}${u.file}`)}else if(aI.has(a.lang)&&o.some(l=>s(a.rel,l))&&!/(^|\/)src\/test\//.test(a.rel))for(let l of a.symbols)l.exported&&!l.parent&&n.push(`${l.name}${gt}${l.file}`)}return n}function lI(e,t,n){let r=new Set,o=new Map,s=l=>n.get(l)?.kind==="code";for(let l of e.files){let c=l.rel.slice(l.rel.lastIndexOf("/")+1),d=vo(l.rel);if(c==="package.json"){let u=$r(ie(j(e.root,l.rel)));if(!u||typeof u!="object")continue;let f=[],m=h=>{typeof h=="string"?f.push(h):Array.isArray(h)?h.forEach(m):h&&typeof h=="object"&&Object.values(h).forEach(m)},p=u;for(let h of["source","main","module","types","typings","bin","exports"])m(p[h]);typeof p.browser=="string"&&m(p.browser);let g=d?`${d}/package.json`:"package.json";for(let h of f){let _=h.slice(h.lastIndexOf("/")+1);if(h.includes("*")||_.includes(".")&&!/\.[cm]?[jt]sx?$/.test(_))continue;let y=_.replace(/(\.d)?\.[cm]?[jt]sx?$/,"");for(let b of[h,...eu(h),`src/${y}`]){let w=at(g,".ts",b.startsWith(".")?b:`./${b}`,t);w.kind==="resolved"&&s(w.target)&&r.add(w.target)}}}else if(c==="pyproject.toml"){let u=ie(j(e.root,l.rel)),f=/^\[(?:project\.(?:gui-)?scripts|tool\.poetry\.scripts)\]\s*$([\s\S]*?)(?=^\[|(?![\s\S]))/gm;for(let m of u.matchAll(f))for(let p of m[1].matchAll(/^\s*[\w.-]+\s*=\s*["']([\w.]+):(\w+)[\w.]*["']/gm)){let g=at(d?`${d}/pyproject.py`:"pyproject.py",".py",p[1],t);if(g.kind!=="resolved"||!s(g.target))continue;let h=o.get(g.target)??new Set;o.set(g.target,h.add(p[2]))}}}for(let l of t.rustCrates)l.rootFile&&r.add(l.rootFile);let a=[...r].sort(T).map(l=>({rel:l}));for(let l of[...o.keys()].sort(T))r.has(l)||a.push({rel:l,names:o.get(l)});return a}function ql(e,t){return t===void 0||e.length<=t?e:{total:e.length,shown:t,truncated:!0,candidates:e.slice(0,t)}}var JA,KA,XA,ZA,YA,QA,eI,gt,vo,aI,Vl=H(()=>{"use strict";I();pe();mt();ir();vs();In();Dr();Cn();lr();Xe();ce();Ts();JA=new Set(["reexport","reexport-all","default"]),KA=new Set(["function","method","def","constructor","operator","class","macro"]),XA=/^[\w$]+\s*(?::[^=]*)?=\s*(?:async\s+)?(?:function\b|\(|[\w$]+\s*=>)/,ZA=/^\w+\s*(?::[^=]*)?=\s*lambda\b/,YA=new Set(["class","interface","struct","trait","object","enum","record","protocol","module","type"]),QA=/(^|\/)(index|main|cli|mod|lib|__main__)\.[a-z]+$/,eI=/^[A-Za-z_]\w{4,}$/,gt="\0",vo=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";aI=new Set(["java","kotlin","scala"])});function J_(e,t){let n=new Set(e.modules.map(c=>c.slug));for(let c of e.moduleEdges)n.add(c.from).add(c.to);let r=[...n].sort(T),o=new Map(r.map(c=>[c,t+c.replace(/[^A-Za-z0-9_]/g,"_")])),s=new Map;for(let c of o.values())s.set(c,(s.get(c)??0)+1);let a=new Set([...o.values()].filter(c=>s.get(c)===1)),l=new Map;for(let c of r){let d=o.get(c),u=d;if(s.get(d)>1){for(let f=2;a.has(u);f++)u=`${d}_${f}`;a.add(u)}l.set(c,u)}return l}function cI(e,t){if(e.modules.some(o=>o.slug===t))return t;let n=t.replace(/\/+$/,""),r=e.modules.find(o=>o.path===n);return r?r.slug:e.files.find(o=>o.rel===t)?.module}function K_(e){return e.replace(/#/g,"#35;").replace(/"/g,"#quot;").replace(/&/g,"#38;").replace(//g,"#gt;").replace(/`/g,"#96;").replace(/[\r\n]+/g," ")}function Mo(e,t={}){let n=t.maxEdges??80,r=t.module?cI(e,t.module):void 0;if(t.module&&!r)throw new Error(`no such file or module in the index: ${t.module}`);let o=J_(e,"m_"),s=[...e.moduleEdges].filter(d=>!d.dangling);r&&(s=s.filter(d=>d.from===r||d.to===r)),s.sort((d,u)=>u.weight-d.weight||T(d.from,u.from)||T(d.to,u.to));let a=Math.max(0,s.length-n);s=s.slice(0,n);let l=new Set;for(let d of s)l.add(d.from),l.add(d.to);r&&l.add(r);let c=["graph LR"];for(let d of[...e.modules].sort((u,f)=>T(u.slug,f.slug)))l.has(d.slug)&&c.push(` ${o.get(d.slug)}["${dI(d)}"]`);for(let d of s){let u=d.kind==="import"?"":`|${d.kind}|`;c.push(` ${o.get(d.from)} -->${u} ${o.get(d.to)}`)}return a&&c.push(` %% ${a} lighter edges omitted (maxEdges=${n})`),c.join(` +`)})`}throw new Error(`rules config ${t} is not valid JSON${s}`)}try{return ql(n)}catch(r){throw new Error(`rules config ${t}: ${r instanceof Error?r.message:String(r)}`)}}function ql(e){let t=Array.isArray(e)?e:e?.rules;if(!Array.isArray(t))throw new Error("rules config must be an array (or an object with a `rules` array)");return t.map((n,r)=>{let o=`rules[${r}]`;if(typeof n!="object"||n===null||Array.isArray(n))throw new Error(`${o}: must be an object`);let s=n;if(typeof s.name!="string"||!s.name)throw new Error(`${o}: \`name\` (non-empty string) is required`);let a=s.builtin===void 0?cI:s.builtin==="literals"?dI:ib,l=Object.keys(s).filter(f=>!a.has(f)).sort($);if(l.length){let f=s.builtin===void 0?"a forbidden-edge rule":`builtin "${String(s.builtin)}"`;throw new Error(`${o} (${s.name}): unknown key${l.length>1?"s":""} ${l.map(m=>`\`${m}\``).join(", ")} \u2014 ${f} takes ${[...a].join(", ")}`)}if(s.severity!==void 0&&!aI.has(s.severity))throw new Error(`${o} (${s.name}): \`severity\` must be "error" or "warn"`);if(s.comment!==void 0&&typeof s.comment!="string")throw new Error(`${o} (${s.name}): \`comment\` must be a string`);if(s.builtin!==void 0){if(!lI.has(s.builtin))throw new Error(`${o} (${s.name}): \`builtin\` must be "cycles", "orphans" or "literals"`);if(s.tiers!==void 0&&!(Array.isArray(s.tiers)&&s.tiers.length>0&&s.tiers.every(m=>tb.has(m))))throw new Error(`${o} (${s.name}): \`tiers\` must be a non-empty array of ${[...tb].join(", ")}`);for(let f of["minFiles","minCount"]){let m=s[f];if(m!==void 0&&!(typeof m=="number"&&Number.isInteger(m)&&m>=1))throw new Error(`${o} (${s.name}): \`${f}\` must be a positive integer`)}if(s.includeTests!==void 0&&typeof s.includeTests!="boolean")throw new Error(`${o} (${s.name}): \`includeTests\` must be a boolean`);return{name:s.name,builtin:s.builtin,severity:s.severity,comment:s.comment,...s.tiers!==void 0?{tiers:s.tiers}:{},...s.minFiles!==void 0?{minFiles:s.minFiles}:{},...s.minCount!==void 0?{minCount:s.minCount}:{},...s.includeTests!==void 0?{includeTests:s.includeTests}:{}}}let c=f=>{let m=s[f];if(!(typeof m=="string"?m.length>0:Array.isArray(m)&&m.length>0&&m.every(g=>typeof g=="string"&&g)))throw new Error(`${o} (${s.name}): \`${f}\` must be a glob or a non-empty array of globs`);return m},d=c("from"),u=c("to");if(s.kind!==void 0&&!(Array.isArray(s.kind)&&s.kind.length>0&&s.kind.every(m=>eb.has(m))))throw new Error(`${o} (${s.name}): \`kind\` must be a non-empty array of edge kinds (${[...eb].join(", ")})`);return{name:s.name,from:d,to:u,kind:s.kind,severity:s.severity,comment:s.comment}})}function gI(e){let t=new Map;for(let u of e.moduleEdges){if(u.kind!=="import")continue;let f=t.get(u.from);f||t.set(u.from,f=[]),f.push(u.to)}for(let u of t.values())u.sort($);let n=[...t.keys()].sort($),r=new Map,o=new Map,s=new Set,a=[],l=[],c=0;for(let u of n){if(r.has(u))continue;let f=[{node:u,next:0}];for(;f.length;){let m=f[f.length-1],p=m.node;m.next===0&&(r.set(p,c),o.set(p,c),c++,a.push(p),s.add(p));let g=t.get(p)??[];if(m.next1&&l.push(_)}f.pop();let h=f[f.length-1];h&&o.set(h.node,Math.min(o.get(h.node),o.get(p)))}}}let d=[];for(let u of l){let f=new Set(u),m=[...u].sort($)[0],p=new Map([[m,null]]),g=[m];for(let y=0;y(t.get(y)??[]).includes(m)&&y!==m)??m,_=[];for(let y=h;y!==null;y=p.get(y)??null)_.unshift(y);_.push(m),d.push({start:m,path:_})}return d}function Co(e,t,n={}){let r=[],o=(c,d)=>{r.push({rule:c.name,...d,severity:c.severity??"error",...c.comment!==void 0?{comment:c.comment}:{}})},s=new Set(e.files.map(c=>c.rel)),a=new Map,l=c=>{if(!n.scan)return e.literalDuplications??[];let d=`${c.minFiles??""}\0${c.minCount??""}\0${c.includeTests===!0}`,u=a.get(d);return u||(u=Pn(n.scan,{minFiles:c.minFiles,minCount:c.minCount,includeTests:c.includeTests}).duplications,a.set(d,u)),u};for(let c of t){if("builtin"in c){if(c.builtin==="cycles")for(let p of gI(e))o(c,{from:p.start,to:p.path.join(" -> "),kind:"cycle"});else if(c.builtin==="literals"){let p=new Set(c.tiers?.length?c.tiers:uI);for(let g of l(c)){if(!p.has(g.tier))continue;let h=g.holders[0]??g.literals[0];o(c,{from:`${h.file}:${h.line}`,to:`${g.tier} ${JSON.stringify(g.value)} (${g.count} sites, ${g.files} files)`,kind:"literal"})}}else for(let p of mI(e))o(c,{from:p,to:p,kind:"orphan"});continue}let d=It(If(c.from)),u=It(If(c.to));if(!d||!u)continue;let f=!1;for(let[p,g]of[["from",d],["to",u]])e.files.some(h=>g(h.rel))||(f=!0,r.push({rule:c.name,from:If(c[p]).join(", "),to:`\`${p}\` matches no indexed file`,kind:"unmatched",severity:"warn"}));if(f)continue;let m=c.kind?.length?new Set(c.kind):null;for(let p of e.fileEdges)p.dangling||!s.has(p.to)||m&&!m.has(p.kind)||!d(p.from)||!u(p.to)||o(c,{from:p.from,to:p.to,kind:p.kind})}return r.sort((c,d)=>$(c.rule,d.rule)||$(c.from,d.from)||$(c.to,d.to)||$(c.kind,d.kind)),r}function Vl(e){let t=e.filter(n=>n.severity==="error").length;return{errors:t,warnings:e.length-t,violations:e}}var oI,eb,aI,lI,tb,sb,cI,ib,dI,uI,fI,nb,rb,Jl=z(()=>{"use strict";I();yi();Us();le();oI={contains:!0,"doc-link":!0,import:!0,call:!0,extends:!0,implements:!0,use:!0,mention:!0},eb=new Set(Object.keys(oI)),aI=new Set(["error","warn"]),lI=new Set(["cycles","orphans","literals"]),tb=new Set(["competing","bypassed","uncentralized"]),sb=["name","severity","comment"],cI=new Set([...sb,"from","to","kind"]),ib=new Set([...sb,"builtin"]),dI=new Set([...ib,"tiers","minFiles","minCount","includeTests"]),uI=["competing","bypassed"],fI=new Set(["index","main","app","application","cli","server","entry","entrypoint","setup","conftest","__init__","__main__","mod","lib","wsgi","asgi","manage"]),nb=new Set(["go","java","kotlin","scala"]),rb=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):""});function kI(e){return Cs(Mo(e)||"(root)")===2||/(^|\/)testdata\//.test(e)}function ob(e){if(yI.has(e.kind))return!0;if(e.kind!=="const"||!e.signature)return!1;let t=Oe(e.lang);return t==="js"?_I.test(e.signature):t==="python"&&bI.test(e.signature)}function EI(e){switch(Oe(e.lang)){case"python":return/^__\w+__$/.test(e.name);case"go":return e.name==="init"||e.name==="main";case"js":return e.name==="constructor";default:return!1}}function Ao(e,t={}){let n=t.kinds==="all",r=Ns(e),o=Ot(e),s=rr(e,o),a=CI(e,o,s),l=m=>{let p=r.get(`${m.name}@${m.file}`)??r.get(m.name);return!!p&&p.def.file===m.file&&p.callers.length>0},c=vI(e,s,m=>l(m)||a.has(`${m.name}${yt}${m.file}`)),d=[];for(let m of e.files)if(!Ft(m.rel)&&!(!t.includeTail&&kI(m.rel)))for(let p of m.symbols)!p.exported||hI.has(p.kind)||EI(p)||!n&&!ob(p)||a.has(`${p.name}${yt}${p.file}`)||l(p)||c(p)||d.push(p);let u=RI(e,d,s),f=[];for(let m of d){let p=u(m);p&&!ob(m)||f.push({name:m.name,file:m.file,line:m.line,kind:m.kind,tier:p?"uncalled":"unreferenced"})}return f.sort((m,p)=>$(m.tier,p.tier)||$(m.file,p.file)||m.line-p.line)}function vI(e,t,n){let r=[...t];for(let d of Hi(e))r.push({...d,kind:"implements"});let o=new Map;for(let{sub:d,sup:u}of xu(e,r)){let f=o.get(d)??[];f.push(u),o.set(d,f)}let s=new Map;for(let d of t){let u=`${d.from}${yt}${d.fromFile}`;s.set(u,(s.get(u)??0)+1)}let a=new Set;for(let d of e.files){if(Oe(d.lang)==="go")continue;let u=new Map;for(let f of d.relations??[])u.set(f.from,(u.get(f.from)??0)+1);for(let[f,m]of u)m>(s.get(`${f}${yt}${d.rel}`)??0)&&a.add(`${f}${yt}${d.rel}`)}let l=new Map,c=(d,u)=>{let f=l.get(d);if(f!==void 0)return f;let m=o.get(d),p;return m?(u.add(d),p=m.some(g=>n(g)||!u.has(g)&&c(g,u))):p=!!d.parent&&a.has(`${d.parent}${yt}${d.file}`),l.set(d,p),p};return d=>!!d.parent&&c(d,new Set)}function RI(e,t,n){let r=new Map;for(let m of t){let p=Oe(m.lang),g=r.get(p);g||r.set(p,g=new Map),g.has(m.name)||g.set(m.name,[])}let o=(m,p,g)=>{if(p===void 0)return;let h=m?.get(p);h&&h.length<2&&h[h.length-1]!==g&&h.push(g)},s=new Map,a=new Set;for(let m of e.files){if(m.kind!=="code")continue;s.set(m.rel,m.lang);let p=Oe(m.lang),g=r.get(p);if(g){m.idents===void 0&&a.add(p);for(let h of m.idents??[])o(g,h,m.rel);for(let h of m.calls??[])o(g,h.name,m.rel),o(g,h.receiver,m.rel);for(let h of m.importedNames??[])o(g,h,m.rel);for(let h of m.importAliases??[])o(g,h.name,m.rel),o(g,h.local,m.rel);for(let h of m.relations??[])o(g,h.to,"")}}for(let m of n)o(r.get(Oe(s.get(m.toFile)??"")),m.to,"");let l=ll(e),c=m=>(r.get(Oe(m.lang))?.get(m.name)??[]).some(g=>g!==m.file)||[...l.get(m.name)??[]].some(g=>g!==m.file),d=new Map;for(let m of t){let p=Oe(m.lang);if(c(m)||SI.test(m.name)&&!a.has(p))continue;let g=d.get(p);g||d.set(p,g=new Set),g.add(m.name)}if(d.size)for(let m of e.files){if(m.kind!=="code")continue;let p=Oe(m.lang),g=d.get(p);if(!g)continue;let h=se(j(e.root,m.rel)),_=p==="js"?/[A-Za-z_$][\w$]*/g:/[A-Za-z_]\w*/g,y=new Set;for(let b of h.match(_)??[])g.has(b)&&y.add(b);for(let b of y)o(r.get(p),b,m.rel)}let u=new Set,f=new Map;for(let m of t){if(c(m))continue;let p=f.get(m.file)??[];p.push(m),f.set(m.file,p)}for(let[m,p]of f){let g=new Set(p.map(y=>y.name)),h=Oe(p[0].lang)==="js"?/[A-Za-z_$][\w$]*/g:/[A-Za-z_]\w*/g,_=new Map;ol(se(j(e.root,m)),p[0].lang).split(` +`).forEach((y,b)=>{for(let x of y.match(h)??[])g.has(x)&&(_.get(x)??_.set(x,[]).get(x)).push(b+1)});for(let y of p){let b=y.endLine??y.line;(_.get(y.name)??[]).some(x=>xb)&&u.add(y)}}return m=>u.has(m)||c(m)}function CI(e,t,n){let r=ln(e),o=new Map(e.files.map(p=>[p.rel,p])),s=II(e,r,o);if(!s.length)for(let p of e.files)p.kind==="code"&&xI.test(p.rel)&&s.push({rel:p.rel});for(let p of e.files)(p.rel==="__init__.py"||p.rel.endsWith("/__init__.py"))&&s.push({rel:p.rel});let a=Ds(t),l=new Set,c=new Set;for(let p=0;p<5&&s.length;p++){let g=[];for(let{rel:h,names:_}of s){let y=`${h}${yt}${_?[..._].sort($).join(","):"*"}`;if(c.has(y))continue;c.add(y);let b=o.get(h);if(!b)continue;let x=new Set;for(let k of b.symbols)if(k.kind==="reexport")(!_||_.has(k.name))&&x.add(k.name);else if(k.kind==="reexport-all"){let v=/^\* \((.+)\)$/.exec(k.name)?.[1],T=v===void 0?void 0:ct(h,b.ext,v,r);T?.kind==="resolved"&&g.push({rel:T.target,..._?{names:_}:{}})}else k.exported&&k.kind!=="default"&&(!_||_.has(k.name))&&l.add(`${k.name}${yt}${k.file}`);if(x.size)for(let k of[...a.get(h)??[]].sort($))g.push({rel:k,names:x})}s=g}for(let p of MI(e,r))l.add(p);let d=new Map;for(let p of n){let g=`${p.from}${yt}${p.fromFile}`,h=d.get(g)??[];h.push(`${p.to}${yt}${p.toFile}`),d.set(g,h)}let u=new Map;for(let p of e.files)for(let g of p.symbols){if(!g.parent)continue;let h=`${g.parent}${yt}${g.file}`,_=u.get(h)??[];_.push(`${g.name}${yt}${g.file}`),u.set(h,_)}let f=new Set;for(let p of e.files)for(let g of p.symbols)wI.has(g.kind)&&f.add(`${g.name}${yt}${g.file}`);let m=[...l].sort($);for(;m.length;){let p=m.pop(),g=[...d.get(p)??[],...f.has(p)?u.get(p)??[]:[]];for(let h of g)l.has(h)||(l.add(h),m.push(h))}return l}function MI(e,t){let n=[],r=new Set;for(let a of e.files)a.lang==="go"&&!a.rel.endsWith("_test.go")&&a.symbols.some(l=>l.name==="main"&&!l.parent&&l.kind==="function")&&r.add(Mo(a.rel));let o=[];for(let a of e.files){let l=a.rel.slice(a.rel.lastIndexOf("/")+1);if(l!=="build.gradle"&&l!=="build.gradle.kts"&&l!=="pom.xml")continue;let c=se(j(e.root,a.rel));(l==="pom.xml"?/|maven-deploy-plugin|central-publishing-maven-plugin|nexus-staging-maven-plugin/.test(c):/\bjava-library\b|\bmaven-publish\b|com\.vanniktech\.maven\.publish/.test(c))&&o.push(Mo(a.rel))}let s=(a,l)=>!l||a.startsWith(l+"/");for(let a of e.files)if(!(a.kind!=="code"||Ft(a.rel))){if(a.lang==="go"){if(a.rel.endsWith("_test.go"))continue;let l=t.goModules.find(u=>s(a.rel,u.dir));if(!l)continue;let c=Mo(a.rel),d=l.dir?c.slice(l.dir.length+1):c;if(r.has(c)||/(^|\/)internal(\/|$)/.test(d))continue;for(let u of a.symbols)u.exported&&n.push(`${u.name}${yt}${u.file}`)}else if(AI.has(a.lang)&&o.some(l=>s(a.rel,l))&&!/(^|\/)src\/test\//.test(a.rel))for(let l of a.symbols)l.exported&&!l.parent&&n.push(`${l.name}${yt}${l.file}`)}return n}function II(e,t,n){let r=new Set,o=new Map,s=l=>n.get(l)?.kind==="code";for(let l of e.files){let c=l.rel.slice(l.rel.lastIndexOf("/")+1),d=Mo(l.rel);if(c==="package.json"){let u=Or(se(j(e.root,l.rel)));if(!u||typeof u!="object")continue;let f=[],m=h=>{typeof h=="string"?f.push(h):Array.isArray(h)?h.forEach(m):h&&typeof h=="object"&&Object.values(h).forEach(m)},p=u;for(let h of["source","main","module","types","typings","bin","exports"])m(p[h]);typeof p.browser=="string"&&m(p.browser);let g=d?`${d}/package.json`:"package.json";for(let h of f){let _=h.slice(h.lastIndexOf("/")+1);if(h.includes("*")||_.includes(".")&&!/\.[cm]?[jt]sx?$/.test(_))continue;let y=_.replace(/(\.d)?\.[cm]?[jt]sx?$/,"");for(let b of[h,...cu(h),`src/${y}`]){let x=ct(g,".ts",b.startsWith(".")?b:`./${b}`,t);x.kind==="resolved"&&s(x.target)&&r.add(x.target)}}}else if(c==="pyproject.toml"){let u=se(j(e.root,l.rel)),f=/^\[(?:project\.(?:gui-)?scripts|tool\.poetry\.scripts)\]\s*$([\s\S]*?)(?=^\[|(?![\s\S]))/gm;for(let m of u.matchAll(f))for(let p of m[1].matchAll(/^\s*[\w.-]+\s*=\s*["']([\w.]+):(\w+)[\w.]*["']/gm)){let g=ct(d?`${d}/pyproject.py`:"pyproject.py",".py",p[1],t);if(g.kind!=="resolved"||!s(g.target))continue;let h=o.get(g.target)??new Set;o.set(g.target,h.add(p[2]))}}}for(let l of t.rustCrates)l.rootFile&&r.add(l.rootFile);let a=[...r].sort($).map(l=>({rel:l}));for(let l of[...o.keys()].sort($))r.has(l)||a.push({rel:l,names:o.get(l)});return a}function Kl(e,t){return t===void 0||e.length<=t?e:{total:e.length,shown:t,truncated:!0,candidates:e.slice(0,t)}}var hI,yI,_I,bI,wI,xI,SI,yt,Mo,AI,Xl=z(()=>{"use strict";I();fe();gt();ir();Ms();Tn();Wr();An();lr();Ze();le();Os();hI=new Set(["reexport","reexport-all","default"]),yI=new Set(["function","method","def","constructor","operator","class","macro"]),_I=/^[\w$]+\s*(?::[^=]*)?=\s*(?:async\s+)?(?:function\b|\(|[\w$]+\s*=>)/,bI=/^\w+\s*(?::[^=]*)?=\s*lambda\b/,wI=new Set(["class","interface","struct","trait","object","enum","record","protocol","module","type"]),xI=/(^|\/)(index|main|cli|mod|lib|__main__)\.[a-z]+$/,SI=/^[A-Za-z_]\w{4,}$/,yt="\0",Mo=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";AI=new Set(["java","kotlin","scala"])});function lb(e,t){let n=new Set(e.modules.map(c=>c.slug));for(let c of e.moduleEdges)n.add(c.from).add(c.to);let r=[...n].sort($),o=new Map(r.map(c=>[c,t+c.replace(/[^A-Za-z0-9_]/g,"_")])),s=new Map;for(let c of o.values())s.set(c,(s.get(c)??0)+1);let a=new Set([...o.values()].filter(c=>s.get(c)===1)),l=new Map;for(let c of r){let d=o.get(c),u=d;if(s.get(d)>1){for(let f=2;a.has(u);f++)u=`${d}_${f}`;a.add(u)}l.set(c,u)}return l}function TI(e,t){if(e.modules.some(o=>o.slug===t))return t;let n=t.replace(/\/+$/,""),r=e.modules.find(o=>o.path===n);return r?r.slug:e.files.find(o=>o.rel===t)?.module}function cb(e){return e.replace(/#/g,"#35;").replace(/"/g,"#quot;").replace(/&/g,"#38;").replace(//g,"#gt;").replace(/`/g,"#96;").replace(/[\r\n]+/g," ")}function Io(e,t={}){let n=t.maxEdges??80,r=t.module?TI(e,t.module):void 0;if(t.module&&!r)throw new Error(`no such file or module in the index: ${t.module}`);let o=lb(e,"m_"),s=[...e.moduleEdges].filter(d=>!d.dangling);r&&(s=s.filter(d=>d.from===r||d.to===r)),s.sort((d,u)=>u.weight-d.weight||$(d.from,u.from)||$(d.to,u.to));let a=Math.max(0,s.length-n);s=s.slice(0,n);let l=new Set;for(let d of s)l.add(d.from),l.add(d.to);r&&l.add(r);let c=["graph LR"];for(let d of[...e.modules].sort((u,f)=>$(u.slug,f.slug)))l.has(d.slug)&&c.push(` ${o.get(d.slug)}["${$I(d)}"]`);for(let d of s){let u=d.kind==="import"?"":`|${d.kind}|`;c.push(` ${o.get(d.from)} -->${u} ${o.get(d.to)}`)}return a&&c.push(` %% ${a} lighter edges omitted (maxEdges=${n})`),c.join(` `)+` -`}function pI(e,t={}){let n=t.maxModules??fI,r=t.maxEdges??mI,o=J_(e,"m_"),s=f=>o.get(f),l=e.modules.slice().sort((f,m)=>V_(m)-V_(f)||T(f.slug,m.slug)).slice(0,n),c=new Set(l.map(f=>f.slug)),d=e.moduleEdges.filter(f=>c.has(f.from)&&c.has(f.to)).sort((f,m)=>m.weight-f.weight||T(f.from,m.from)||T(f.to,m.to)).slice(0,r),u=[];u.push(`%% ${t.title??"module graph"} \u2014 ${l.length} of ${e.modules.length} modules, ${d.length} of ${e.moduleEdges.length} edges`),(l.lengthp.tier===f);if(m.length){u.push(` subgraph ${uI[f]}`);for(let p of m)u.push(` ${s(p.slug)}["${K_(p.path)}"]`);u.push(" end")}}for(let f of d){let m=f.weight>1?`|${f.weight}| `:"";u.push(` ${s(f.from)} -->${m?" "+m:" "}${s(f.to)}`)}return{content:"```mermaid\n"+u.join(` -`)+"\n```\n",shownModules:l.length,totalModules:e.modules.length,shownEdges:d.length,totalEdges:e.moduleEdges.length}}var dI,uI,fI,mI,V_,Jl=H(()=>{"use strict";I();ce();dI=e=>`${K_(e.path)}${e.tier===0?" (core)":""}`;uI={0:"Foundations",1:"Features",2:"Tail"},fI=40,mI=80,V_=e=>e.degIn+e.degOut});function X_(e,t){let n=[],r=new Set,o=(a,l)=>{let c=`${a.name}:${a.line}`;r.has(c)||(r.add(c),n.push({name:a.name,kind:a.kind,exported:a.exported,line:a.line,...a.endLine!==void 0?{endLine:a.endLine}:{},...a.parent!==void 0?{parent:a.parent}:{},...l?{approx:!0}:{}}))},s=a=>(a.endLine??a.line)-a.line;for(let a of t){let l=e.filter(c=>c.line<=a.end&&(c.endLine??c.line)>=a.start);if(l.length){l.sort((c,d)=>s(c)-s(d)||d.line-c.line||T(c.name,d.name));for(let c of l)o(c,!1)}else{let c=e.filter(u=>u.line<=a.start&&u.endLine===void 0),d=c[c.length-1];d&&o(d,!0)}}return n}function _I(e,t){if(e.length<=1)return 0;let n=0;for(let r of e)rc.dangling&&(c.kind==="import"||c.kind==="doc-link"));if(!r.length||!n.length)return[];let o=ji(e),s=new Map;for(let c of n){if(o.fileSet.has(c.path))continue;s.set(c.path,c.renamedTo),o.fileSet.add(c.path);let d=c.path.includes("/")?G.dirname(c.path):"",u=o.filesByDir.get(d);u?u.push(c.path):o.filesByDir.set(d,[c.path]);for(let f=d;f&&!o.dirSet.has(f);f=f.includes("/")?G.dirname(f):"")o.dirSet.add(f)}if(!s.size)return[];let a=new Map(e.files.map(c=>[c.rel,c.ext])),l=[];for(let c of r){let d=a.get(c.from);if(d===void 0)continue;let u=c.kind==="doc-link"?"doc-link":"import",f=u==="doc-link"?nr(c.from,c.to,o):at(c.from,d,c.to,o);if(f.kind!=="resolved"||!s.has(f.target))continue;let m=s.get(f.target);l.push({from:c.from,spec:c.to,kind:u,target:f.target,...m!==void 0?{renamedTo:m}:{}})}return l.sort((c,d)=>T(c.target,d.target)||T(c.from,d.from)||T(c.spec,d.spec))}function Y_(e,t,n,r=Kl){let o=[...n.notes??[]];t||o.push("symbol index missing \u2014 symbol-level attribution disabled");let s=n.broken??[],a=new Map(e.files.map(x=>[x.rel,x])),l=new Map(e.modules.map(x=>[x.slug,x])),c=new Map;for(let x of n.files)x.status!=="deleted"&&a.has(x.path)&&c.set(x.path,[]);if(t&&c.size){for(let x of Object.keys(t.defs))for(let v of t.defs[x])c.get(v.file)?.push({name:x,...v});for(let x of c.values())x.sort((v,P)=>v.line-P.line||T(v.name,P.name))}let d=[],u=[],f=[];for(let x of[...n.files].sort((v,P)=>T(v.path,P.path))){let v={...x.oldPath!==void 0?{oldPath:x.oldPath}:{},...x.binary?{binary:!0}:{},...x.linesAdded!==void 0?{linesAdded:x.linesAdded}:{},...x.linesDeleted!==void 0?{linesDeleted:x.linesDeleted}:{}};if(x.status==="deleted"){d.push(x.path),f.push({path:x.path,status:x.status,...v,hunks:[],symbols:[]});continue}let P=a.get(x.path);if(!P){u.push(x.path);continue}let O=n.hunks.get(x.path)??[];!O.length&&x.status==="added"&&!x.binary&&(O=[{start:1,end:Math.max(P.lines,1)}]);let L=x.binary?[]:X_(c.get(x.path)??[],O);f.push({path:x.path,status:x.status,...v,module:P.module,hunks:O.map(q=>({start:q.start,end:q.end})),symbols:L})}let m=new Set(f.filter(x=>x.status!=="deleted").map(x=>x.path)),p=new Set(s.map(x=>`${x.from}\0${x.spec}`)),g=e.fileEdges.filter(x=>x.dangling&&(x.kind==="import"||x.kind==="doc-link")&&m.has(x.from)&&!p.has(`${x.from}\0${x.to}`)).map(x=>({from:x.from,spec:x.to,reason:x.reason??"unknown"})).sort((x,v)=>T(x.from,v.from)||T(x.spec,v.spec)),h=(x,v)=>{if(!v.startsWith("."))return!1;let P=x.split("/").slice(0,-1);for(let O of v.split("/"))O==="."||O===""||(O===".."?P.pop():P.push(O));return P.some(O=>vn.has(O))},_=new Map;for(let x of f){if(x.status==="deleted"||!x.module)continue;let v=_.get(x.module);v||_.set(x.module,v=[]),v.push(x)}let y=new Map(e.modules.map(x=>[x.path,x])),b=x=>{let v=x.includes("/")?G.dirname(x):"(root)",P=y.get(v);if(P)return P.slug;let O=v==="(root)"?"root":ti(v);return O&&!l.has(O)?O:`${O||"module"}-${Re(v).slice(0,8)}`},w=new Map,S=new Map;for(let x of s){let v=b(x.target);l.has(v)||S.set(v,x.target.includes("/")?G.dirname(x.target):"(root)");let P=w.get(v);P||w.set(v,P=[]),P.push(x)}let k=new Set;for(let x of e.files)x.fileKind==="code"&&!x.testFile&&k.add(x.module);let M=e.modules.some(x=>x.pagerank!==void 0),N=x=>M?x.pagerank??0:x.degIn+x.degOut,A=e.modules.map(N),R=M?"pagerank":"degree",$=gu(e.fileEdges,{skipInferred:!0,goPackages:!0}),E=[];for(let x of[...new Set([..._.keys(),...w.keys()])].sort(T)){let v=l.get(x),P=S.get(x);if(!v&&P===void 0)continue;let O=_.get(x)??[],L=w.get(x)??[],q=[],Z=0,ae=L.filter(V=>V.kind==="import");if(ae.length){Z+=xn.brokenImport;let V=[...new Set(ae.map(cn=>cn.target))].sort(T),oe=V[0],Te=[...new Set(ae.filter(cn=>cn.target===oe).map(cn=>cn.from))].sort(T),vt=ae.find(cn=>cn.target===oe),ct=vt.renamedTo!==void 0?`renamed ${oe} (now ${vt.renamedTo})`:`removed ${oe}`,Bn=Te.slice(0,3).join(", ")+(Te.length>3?", \u2026":""),Qs=V.length>1?` (+${V.length-1} more removed file${V.length>2?"s":""})`:"";q.push(`${ct} is still imported by ${Te.length} file${Te.length===1?"":"s"} (${Bn})${Qs}`)}let be=[...new Set(O.flatMap(V=>V.symbols.filter(oe=>oe.exported).map(oe=>oe.name)))].sort(T);if(be.length){Z+=xn.exportedChange;let V=be.slice(0,3).join(", ")+(be.length>3?", \u2026":"");q.push(be.length===1?`exported symbol ${V} changed`:`exported symbols ${V} changed`)}let Se=v?_I(A,N(v)):0;Se>=.9?(Z+=xn.hubHigh,q.push(`${R} p${Math.round(Se*100)} hub`)):Se>=.75&&(Z+=xn.hubMed,q.push(`${R} p${Math.round(Se*100)} hub`));let Me=new Map,U=new Set,B=(V,oe)=>{let Te=Me.get(V);(Te===void 0||oeV.from))].sort(T);if(z.length&&r>=1){let V=new Map(z.map(oe=>[oe,1]));for(let[oe,Te]of Gi(e.fileEdges,z,r-1))V.set(oe,Te+1);for(let[oe,Te]of V){B(oe,Te);let vt=a.get(oe)?.module??"root";vt!==x&&U.add(vt)}}let re=Me.size,ke={directFiles:[...Me.values()].filter(V=>V===1).length,transitiveFiles:re,modules:[...U].sort(T)};re>=20||ke.modules.length>=5?(Z+=xn.blastHigh,q.push(`${re} dependent files across ${ke.modules.length} modules (depth ${r})`)):re>=5&&(Z+=xn.blastMed,q.push(`${re} dependent files across ${ke.modules.length} modules (depth ${r})`));let rt=v!==void 0&&v.tier<=1&&v.symbols>0&&k.has(x),X=v?.testedBy??[],Q=rt?X.length?{status:"covered",files:X}:{status:"gap",files:[]}:{status:"n/a",files:[]};Q.status==="gap"&&(Z+=xn.testGap,q.push("no test covers this module"));let J=(e.surprises??[]).find(V=>V.from===x||V.to===x);J&&(Z+=xn.surprise,q.push(`cross-community edge to ${J.from===x?J.to:J.from} (surprising)`));let K=g.filter(V=>O.some(oe=>oe.path===V.from)&&!h(V.from,V.spec));if(K.length){Z+=xn.dangling;let V=K[0],oe=K.length>1?` (+${K.length-1} more)`:"";q.push(`dangling import "${V.spec}" in ${V.from}${oe}`)}Z=Math.min(100,Z);let we=[...new Set(L.map(V=>V.target))].filter(V=>d.includes(V)),Y=[...O.map(V=>V.path),...we].sort(T),se=O.flatMap(V=>V.symbols),me=[...O.slice().sort((V,oe)=>oe.symbols.filter(Te=>Te.exported).length-V.symbols.filter(Te=>Te.exported).length||oe.symbols.length-V.symbols.length||T(V.path,oe.path)).map(V=>V.path),...z.filter(V=>!m.has(V))].slice(0,yI);E.push({slug:x,path:v?.path??P,score:Z,bucket:Z>=gI?"HIGH":Z>=hI?"MEDIUM":"LOW",reasons:q,changedFiles:Y,changedSymbols:{total:new Set(se.map(V=>`${V.name}:${V.line}`)).size,exported:new Set(se.filter(V=>V.exported).map(V=>`${V.name}:${V.line}`)).size},impact:ke,tests:Q,open:me})}return E.sort((x,v)=>v.score-x.score||T(x.slug,v.slug)),{base:n.base,...e.commit!==void 0?{indexCommit:e.commit}:{},depth:r,changes:f,modules:E,dangling:g,broken:s,deleted:d.sort(T),unindexed:u.sort(T),notes:o}}function bI(e,t){let n=De(ue(e),ue(e,t??".codeindex")).split("/").join("/"),r=n&&!n.startsWith("..")&&!Pe(n)?o=>o===n||o.startsWith(`${n}/`):()=>!1;return(o,s)=>r(o)?!1:s?!0:!o.split("/").slice(0,-1).some(l=>vn.has(l)||l.startsWith(".codeindex-edit-"))}function Vs(e,t={}){if(!Zt("git"))return{error:"git is required for delta and was not found on PATH"};if(!Rc(e))return{error:`delta needs a git worktree \u2014 ${e} is not inside one`};let n=[],r;if(t.staged){let l=Fe("git",["-C",e,"rev-parse","--verify","--quiet","HEAD"]);if(l.ok)r={ref:"HEAD",mergeBase:l.stdout.trim(),staged:!0};else{let c=vc(e);if(!c)return{error:"cannot resolve HEAD, nor the empty tree"};r={ref:ea,mergeBase:c,staged:!0},n.push("no commits yet \u2014 every staged file is reviewed as added")}}else{let l=Mc(e,t.base);if("error"in l)return{error:l.error};l.note&&n.push(l.note),r={ref:l.ref,mergeBase:l.mergeBase,staged:!1}}let o=bI(e,t.indexDir),s=t.staged?{staged:!0}:{mergeBase:r.mergeBase},a=Cc(e,s).filter(l=>o(l.path,!0));if(!t.staged){let l=new Set(a.map(c=>c.path));for(let c of ta(e))!l.has(c)&&o(c,!1)&&a.push({path:c,status:"added"})}return{base:r,files:a,hunks:a.length?Ac(e,s):new Map,notes:n}}function Co(e,t=Kl){return{base:e.base,depth:t,changes:[],modules:[],dangling:[],broken:[],deleted:[],unindexed:[],notes:e.notes}}function Js(e,t,n,r={}){let o=[...e.notes],s=e.files.flatMap(l=>l.status==="deleted"?[{path:l.path}]:l.status==="renamed"&&l.oldPath!==void 0?[{path:l.oldPath,renamedTo:l.path}]:[]),a=[];return s.length&&r.scan?a=Z_(r.scan,t,s):s.length&&o.push("no scan supplied \u2014 importers of removed files were not traced"),Y_(t,n,{...e,notes:o,broken:a},r.depth??Kl)}function wI(e,t,n,r={}){let o=Vs(e,r);return"error"in o?o:Js(o,t,n,r)}function Ao(e){let{ref:t,mergeBase:n,staged:r}=e.base,o=t===ea?"vs the empty tree (no commits yet)":`vs ${t} (${r?"":"merge-base "}${n.slice(0,7)})`,s=r?"staged changes":"changes";if(!e.changes.length&&!e.unindexed.length)return`codeindex: no ${s} ${o} +`}function PI(e,t={}){let n=t.maxModules??OI,r=t.maxEdges??NI,o=lb(e,"m_"),s=f=>o.get(f),l=e.modules.slice().sort((f,m)=>ab(m)-ab(f)||$(f.slug,m.slug)).slice(0,n),c=new Set(l.map(f=>f.slug)),d=e.moduleEdges.filter(f=>c.has(f.from)&&c.has(f.to)).sort((f,m)=>m.weight-f.weight||$(f.from,m.from)||$(f.to,m.to)).slice(0,r),u=[];u.push(`%% ${t.title??"module graph"} \u2014 ${l.length} of ${e.modules.length} modules, ${d.length} of ${e.moduleEdges.length} edges`),(l.lengthp.tier===f);if(m.length){u.push(` subgraph ${FI[f]}`);for(let p of m)u.push(` ${s(p.slug)}["${cb(p.path)}"]`);u.push(" end")}}for(let f of d){let m=f.weight>1?`|${f.weight}| `:"";u.push(` ${s(f.from)} -->${m?" "+m:" "}${s(f.to)}`)}return{content:"```mermaid\n"+u.join(` +`)+"\n```\n",shownModules:l.length,totalModules:e.modules.length,shownEdges:d.length,totalEdges:e.moduleEdges.length}}var $I,FI,OI,NI,ab,Zl=z(()=>{"use strict";I();le();$I=e=>`${cb(e.path)}${e.tier===0?" (core)":""}`;FI={0:"Foundations",1:"Features",2:"Tail"},OI=40,NI=80,ab=e=>e.degIn+e.degOut});function db(e,t){let n=[],r=new Set,o=(a,l)=>{let c=`${a.name}:${a.line}`;r.has(c)||(r.add(c),n.push({name:a.name,kind:a.kind,exported:a.exported,line:a.line,...a.endLine!==void 0?{endLine:a.endLine}:{},...a.parent!==void 0?{parent:a.parent}:{},...l?{approx:!0}:{}}))},s=a=>(a.endLine??a.line)-a.line;for(let a of t){let l=e.filter(c=>c.line<=a.end&&(c.endLine??c.line)>=a.start);if(l.length){l.sort((c,d)=>s(c)-s(d)||d.line-c.line||$(c.name,d.name));for(let c of l)o(c,!1)}else{let c=e.filter(u=>u.line<=a.start&&u.endLine===void 0),d=c[c.length-1];d&&o(d,!0)}}return n}function WI(e,t){if(e.length<=1)return 0;let n=0;for(let r of e)rc.dangling&&(c.kind==="import"||c.kind==="doc-link"));if(!r.length||!n.length)return[];let o=Ui(e),s=new Map;for(let c of n){if(o.fileSet.has(c.path))continue;s.set(c.path,c.renamedTo),o.fileSet.add(c.path);let d=c.path.includes("/")?q.dirname(c.path):"",u=o.filesByDir.get(d);u?u.push(c.path):o.filesByDir.set(d,[c.path]);for(let f=d;f&&!o.dirSet.has(f);f=f.includes("/")?q.dirname(f):"")o.dirSet.add(f)}if(!s.size)return[];let a=new Map(e.files.map(c=>[c.rel,c.ext])),l=[];for(let c of r){let d=a.get(c.from);if(d===void 0)continue;let u=c.kind==="doc-link"?"doc-link":"import",f=u==="doc-link"?nr(c.from,c.to,o):ct(c.from,d,c.to,o);if(f.kind!=="resolved"||!s.has(f.target))continue;let m=s.get(f.target);l.push({from:c.from,spec:c.to,kind:u,target:f.target,...m!==void 0?{renamedTo:m}:{}})}return l.sort((c,d)=>$(c.target,d.target)||$(c.from,d.from)||$(c.spec,d.spec))}function fb(e,t,n,r=Yl){let o=[...n.notes??[]];t||o.push("symbol index missing \u2014 symbol-level attribution disabled");let s=n.broken??[],a=new Map(e.files.map(w=>[w.rel,w])),l=new Map(e.modules.map(w=>[w.slug,w])),c=new Map;for(let w of n.files)w.status!=="deleted"&&a.has(w.path)&&c.set(w.path,[]);if(t&&c.size){for(let w of Object.keys(t.defs))for(let E of t.defs[w])c.get(E.file)?.push({name:w,...E});for(let w of c.values())w.sort((E,P)=>E.line-P.line||$(E.name,P.name))}let d=[],u=[],f=[];for(let w of[...n.files].sort((E,P)=>$(E.path,P.path))){let E={...w.oldPath!==void 0?{oldPath:w.oldPath}:{},...w.binary?{binary:!0}:{},...w.linesAdded!==void 0?{linesAdded:w.linesAdded}:{},...w.linesDeleted!==void 0?{linesDeleted:w.linesDeleted}:{}};if(w.status==="deleted"){d.push(w.path),f.push({path:w.path,status:w.status,...E,hunks:[],symbols:[]});continue}let P=a.get(w.path);if(!P){u.push(w.path);continue}let N=n.hunks.get(w.path)??[];!N.length&&w.status==="added"&&!w.binary&&(N=[{start:1,end:Math.max(P.lines,1)}]);let L=w.binary?[]:db(c.get(w.path)??[],N);f.push({path:w.path,status:w.status,...E,module:P.module,hunks:N.map(H=>({start:H.start,end:H.end})),symbols:L})}let m=new Set(f.filter(w=>w.status!=="deleted").map(w=>w.path)),p=new Set(s.map(w=>`${w.from}\0${w.spec}`)),g=e.fileEdges.filter(w=>w.dangling&&(w.kind==="import"||w.kind==="doc-link")&&m.has(w.from)&&!p.has(`${w.from}\0${w.to}`)).map(w=>({from:w.from,spec:w.to,reason:w.reason??"unknown"})).sort((w,E)=>$(w.from,E.from)||$(w.spec,E.spec)),h=(w,E)=>{if(!E.startsWith("."))return!1;let P=w.split("/").slice(0,-1);for(let N of E.split("/"))N==="."||N===""||(N===".."?P.pop():P.push(N));return P.some(N=>vn.has(N))},_=new Map;for(let w of f){if(w.status==="deleted"||!w.module)continue;let E=_.get(w.module);E||_.set(w.module,E=[]),E.push(w)}let y=new Map(e.modules.map(w=>[w.path,w])),b=w=>{let E=w.includes("/")?q.dirname(w):"(root)",P=y.get(E);if(P)return P.slug;let N=E==="(root)"?"root":ri(E);return N&&!l.has(N)?N:`${N||"module"}-${Re(E).slice(0,8)}`},x=new Map,k=new Map;for(let w of s){let E=b(w.target);l.has(E)||k.set(E,w.target.includes("/")?q.dirname(w.target):"(root)");let P=x.get(E);P||x.set(E,P=[]),P.push(w)}let v=new Set;for(let w of e.files)w.fileKind==="code"&&!w.testFile&&v.add(w.module);let T=e.modules.some(w=>w.pagerank!==void 0),F=w=>T?w.pagerank??0:w.degIn+w.degOut,R=e.modules.map(F),C=T?"pagerank":"degree",A=Eu(e.fileEdges,{skipInferred:!0,goPackages:!0}),S=[];for(let w of[...new Set([..._.keys(),...x.keys()])].sort($)){let E=l.get(w),P=k.get(w);if(!E&&P===void 0)continue;let N=_.get(w)??[],L=x.get(w)??[],H=[],Y=0,oe=L.filter(V=>V.kind==="import");if(oe.length){Y+=xn.brokenImport;let V=[...new Set(oe.map(kn=>kn.target))].sort($),te=V[0],de=[...new Set(oe.filter(kn=>kn.target===te).map(kn=>kn.from))].sort($),it=oe.find(kn=>kn.target===te),Ve=it.renamedTo!==void 0?`renamed ${te} (now ${it.renamedTo})`:`removed ${te}`,cs=de.slice(0,3).join(", ")+(de.length>3?", \u2026":""),yr=V.length>1?` (+${V.length-1} more removed file${V.length>2?"s":""})`:"";H.push(`${Ve} is still imported by ${de.length} file${de.length===1?"":"s"} (${cs})${yr}`)}let ge=[...new Set(N.flatMap(V=>V.symbols.filter(te=>te.exported).map(te=>te.name)))].sort($);if(ge.length){Y+=xn.exportedChange;let V=ge.slice(0,3).join(", ")+(ge.length>3?", \u2026":"");H.push(ge.length===1?`exported symbol ${V} changed`:`exported symbols ${V} changed`)}let Se=E?WI(R,F(E)):0;Se>=.9?(Y+=xn.hubHigh,H.push(`${C} p${Math.round(Se*100)} hub`)):Se>=.75&&(Y+=xn.hubMed,H.push(`${C} p${Math.round(Se*100)} hub`));let Ce=new Map,U=new Set,B=(V,te)=>{let de=Ce.get(V);(de===void 0||teV.from))].sort($);if(G.length&&r>=1){let V=new Map(G.map(te=>[te,1]));for(let[te,de]of Ji(e.fileEdges,G,r-1))V.set(te,de+1);for(let[te,de]of V){B(te,de);let it=a.get(te)?.module??"root";it!==w&&U.add(it)}}let ee=Ce.size,ke={directFiles:[...Ce.values()].filter(V=>V===1).length,transitiveFiles:ee,modules:[...U].sort($)};ee>=20||ke.modules.length>=5?(Y+=xn.blastHigh,H.push(`${ee} dependent files across ${ke.modules.length} modules (depth ${r})`)):ee>=5&&(Y+=xn.blastMed,H.push(`${ee} dependent files across ${ke.modules.length} modules (depth ${r})`));let rt=E!==void 0&&E.tier<=1&&E.symbols>0&&v.has(w),qe=E?.testedBy??[],_e=rt?qe.length?{status:"covered",files:qe}:{status:"gap",files:[]}:{status:"n/a",files:[]};_e.status==="gap"&&(Y+=xn.testGap,H.push("no test covers this module"));let me=(e.surprises??[]).find(V=>V.from===w||V.to===w);me&&(Y+=xn.surprise,H.push(`cross-community edge to ${me.from===w?me.to:me.from} (surprising)`));let he=g.filter(V=>N.some(te=>te.path===V.from)&&!h(V.from,V.spec));if(he.length){Y+=xn.dangling;let V=he[0],te=he.length>1?` (+${he.length-1} more)`:"";H.push(`dangling import "${V.spec}" in ${V.from}${te}`)}Y=Math.min(100,Y);let Z=[...new Set(L.map(V=>V.target))].filter(V=>d.includes(V)),K=[...N.map(V=>V.path),...Z].sort($),J=N.flatMap(V=>V.symbols),X=[...N.slice().sort((V,te)=>te.symbols.filter(de=>de.exported).length-V.symbols.filter(de=>de.exported).length||te.symbols.length-V.symbols.length||$(V.path,te.path)).map(V=>V.path),...G.filter(V=>!m.has(V))].slice(0,jI);S.push({slug:w,path:E?.path??P,score:Y,bucket:Y>=LI?"HIGH":Y>=DI?"MEDIUM":"LOW",reasons:H,changedFiles:K,changedSymbols:{total:new Set(J.map(V=>`${V.name}:${V.line}`)).size,exported:new Set(J.filter(V=>V.exported).map(V=>`${V.name}:${V.line}`)).size},impact:ke,tests:_e,open:X})}return S.sort((w,E)=>E.score-w.score||$(w.slug,E.slug)),{base:n.base,...e.commit!==void 0?{indexCommit:e.commit}:{},depth:r,changes:f,modules:S,dangling:g,broken:s,deleted:d.sort($),unindexed:u.sort($),notes:o}}function BI(e,t){let n=De(ae(e),ae(e,t??".codeindex")).split("/").join("/"),r=n&&!n.startsWith("..")&&!Ne(n)?o=>o===n||o.startsWith(`${n}/`):()=>!1;return(o,s)=>r(o)?!1:s?!0:!o.split("/").slice(0,-1).some(l=>vn.has(l)||l.startsWith(".codeindex-edit-"))}function Xs(e,t={}){if(!Yt("git"))return{error:"git is required for delta and was not found on PATH"};if(!Nc(e))return{error:`delta needs a git worktree \u2014 ${e} is not inside one`};let n=[],r;if(t.staged){let l=$e("git",["-C",e,"rev-parse","--verify","--quiet","HEAD"]);if(l.ok)r={ref:"HEAD",mergeBase:l.stdout.trim(),staged:!0};else{let c=Oc(e);if(!c)return{error:"cannot resolve HEAD, nor the empty tree"};r={ref:ra,mergeBase:c,staged:!0},n.push("no commits yet \u2014 every staged file is reviewed as added")}}else{let l=Pc(e,t.base);if("error"in l)return{error:l.error};l.note&&n.push(l.note),r={ref:l.ref,mergeBase:l.mergeBase,staged:!1}}let o=BI(e,t.indexDir),s=t.staged?{staged:!0}:{mergeBase:r.mergeBase},a=Lc(e,s).filter(l=>o(l.path,!0));if(!t.staged){let l=new Set(a.map(c=>c.path));for(let c of sa(e))!l.has(c)&&o(c,!1)&&a.push({path:c,status:"added"})}return{base:r,files:a,hunks:a.length?Dc(e,s):new Map,notes:n}}function To(e,t=Yl){return{base:e.base,depth:t,changes:[],modules:[],dangling:[],broken:[],deleted:[],unindexed:[],notes:e.notes}}function Zs(e,t,n,r={}){let o=[...e.notes],s=e.files.flatMap(l=>l.status==="deleted"?[{path:l.path}]:l.status==="renamed"&&l.oldPath!==void 0?[{path:l.oldPath,renamedTo:l.path}]:[]),a=[];return s.length&&r.scan?a=ub(r.scan,t,s):s.length&&o.push("no scan supplied \u2014 importers of removed files were not traced"),fb(t,n,{...e,notes:o,broken:a},r.depth??Yl)}function UI(e,t,n,r={}){let o=Xs(e,r);return"error"in o?o:Zs(o,t,n,r)}function $o(e){let{ref:t,mergeBase:n,staged:r}=e.base,o=t===ra?"vs the empty tree (no commits yet)":`vs ${t} (${r?"":"merge-base "}${n.slice(0,7)})`,s=r?"staged changes":"changes";if(!e.changes.length&&!e.unindexed.length)return`codeindex: no ${s} ${o} `;let a=e.changes.length+e.unindexed.length,l=[`codeindex: delta ${r?"of staged changes ":""}${o} \u2014 ${a} changed file(s), ${e.modules.length} module(s)${e.indexCommit?`, index @ ${e.indexCommit}`:""}`];for(let d of e.notes)l.push(` note: ${d}`);for(let d of e.modules){l.push(` ${d.bucket.padEnd(6)} ${d.slug} score ${d.score}${d.reasons.length?` \u2014 ${d.reasons.join("; ")}`:""}`);let u=d.tests.status==="gap"?"GAP":d.tests.status==="covered"?`covered (${d.tests.files.length})`:"n/a";l.push(` open: ${d.open.join(", ")||"\u2014"} \xB7 tests: ${u}`)}e.dangling.length&&l.push(` dangling: ${e.dangling.map(d=>`${d.spec} (from ${d.from})`).join(" \xB7 ")}`);let c=[...new Set(e.broken.map(d=>d.target))];for(let d of c){let u=e.broken.filter(p=>p.target===d),f=u[0].renamedTo!==void 0?` (renamed to ${u[0].renamedTo})`:"",m=[...new Set(u.map(p=>p.from))];l.push(` broken: ${d}${f} still imported by ${m.join(", ")}`)}return e.deleted.length&&l.push(` deleted: ${e.deleted.join(", ")}`),e.unindexed.length&&l.push(` unindexed: ${e.unindexed.join(", ")}`),l.join(` `)+` -`}var xn,gI,hI,yI,Kl,Xl=H(()=>{"use strict";I();pe();en();Cn();ce();Xe();Qe();bt();jr();xn={exportedChange:25,hubHigh:20,hubMed:10,blastHigh:20,blastMed:10,testGap:20,surprise:10,dangling:15,brokenImport:40},gI=60,hI=30,yI=3,Kl=2});function Q_(){throw new Error("readline is not available in the browser build (the MCP stdio transport is Node-only)")}var eb=H(()=>{I()});function kI(e,t,n){if(t==="doc-link")return n;if(SI.has(e)){if(/^[./]/.test(n))return n;let r=n.split("/");return n.startsWith("@")&&r.length>1?`${r[0]}/${r[1]}`:r[0]}if(e==="python")return n.startsWith(".")?n:n.split(".")[0];if(e==="go"){let r=n.split("/");return r[0].includes(".")?r.slice(0,3).join("/"):r[0]}return e==="rust"?n.split("::")[0]:e==="java"||e==="csharp"?n.split(".").slice(0,2).join("."):e==="php"?n.replace(/^\\+/,"").split("\\")[0]:n.split("/")[0]}function Zl(e,t={}){let n=t.limit??xI,r=an(e),o=new Map;for(let c of e.files){if(t.lang!==void 0&&c.lang!==t.lang)continue;let d=o.get(c.lang);d||(d={files:0,withRefs:0,row:{refs:0,resolved:0,external:0,dangling:0,unsupported:0},reasons:new Map,dangling:new Map,external:new Map,code:!1},o.set(c.lang,d)),d.files++,c.kind==="code"&&(d.code=!0),c.refs.length&&d.withRefs++;for(let u of c.refs){if(d.row.refs++,u.kind==="import"&&!kh(c.ext)){d.row.unsupported++;continue}let f=u.kind==="doc-link"?nr(c.rel,u.spec,r):at(c.rel,c.ext,u.spec,r);if(f.kind==="resolved")d.row.resolved++;else if(f.kind==="external"){d.row.external++;let m=kI(c.lang,u.kind,u.spec);d.external.set(m,(d.external.get(m)??0)+1)}else{d.row.dangling++,d.reasons.set(f.reason,(d.reasons.get(f.reason)??0)+1);let m=`${u.spec}\0${f.reason}`,p=d.dangling.get(m);p?(p.count++,T(c.rel,p.example)<0&&(p.example=c.rel)):d.dangling.set(m,{reason:f.reason,count:1,example:c.rel})}}}if(t.lang!==void 0&&!o.size){let c=Object.keys(e.languages).sort(T).join(", ");throw new Error(`no indexed files in language "${t.lang}"${c?` \u2014 one of: ${c}`:""}`)}let s={refs:0,resolved:0,external:0,dangling:0,unsupported:0},a=[];for(let c of[...o.keys()].sort(T)){let d=o.get(c);if(!d.code&&d.row.refs===0&&t.lang===void 0)continue;for(let h of Object.keys(s))s[h]+=d.row[h];let u={};for(let h of[...d.reasons.keys()].sort(T))u[h]=d.reasons.get(h);let f=[...d.dangling.entries()].map(([h,_])=>({spec:h.slice(0,h.indexOf("\0")),reason:_.reason,count:_.count,example:_.example})).sort(tb(h=>h.count,h=>`${h.spec}\0${h.reason}`)).slice(0,n),m=[...d.external.entries()].map(([h,_])=>({name:h,count:_})).sort(tb(h=>h.count,h=>h.name)).slice(0,n),p={lang:c,files:d.files,filesWithRefs:d.withRefs,...d.row,danglingByReason:u,topDangling:f,topExternal:m},g=EI(p);g&&(p.note=g),a.push(p)}let l=[...new Set([...r.warnings,...Fn(e.root).warnings])].sort(T);return{totals:s,languages:a,warnings:l}}function EI(e){let t=e.lang==="markdown"?"link":"import",n=(r,o)=>`${r} ${o}${r===1?"":"s"}`;if(e.refs===0)return`no ${t}s extracted from ${n(e.files,"file")} \u2014 this language gets no ${t} edges`;if(e.unsupported===e.refs)return`no import resolver for this language \u2014 its ${n(e.refs,"import")} never become edges`;if(e.resolved===0&&e.dangling===0)return`every ${t} is external \u2014 no in-repo ${t} edges for this language`;if(e.dangling>e.resolved)return t==="link"?"more links dangle than resolve \u2014 broken relative links in the docs":"more imports dangle than resolve \u2014 check path aliases and `warnings` before trusting impact or dead-code answers"}var xI,SI,tb,xf=H(()=>{"use strict";I();Cn();mt();Hr();ce();xI=10,SI=new Set(["typescript","javascript","vue","svelte","astro","html"]);tb=(e,t)=>(n,r)=>e(r)-e(n)||T(t(n),t(r))});function es(e,t){let n=(Pe(t)?De(e,t):t).replace(/\\/g,"/");for(;n.startsWith("./");)n=n.slice(2);return n!==t&&n!==""&&n!==".."&&!n.startsWith("../")?[t,n]:[t]}function ts(e,t,n){return es(e,t).find(n)}var Sf=H(()=>{"use strict";I();pe()});function pr(e,t){return{name:t,kind:e.kind,file:e.file,line:e.line,...e.parent?{parent:e.parent}:{}}}function kf(e){return{...e,def:pr(e.def,e.def.name)}}function Yl(e){return{...e,defs:e.defs.map(t=>pr(t,t.name))}}function nb(e){return{...e,defs:Object.fromEntries(Object.entries(e.defs).map(([t,n])=>[t,n.map(r=>pr(r,t))]))}}function rb(e){return{...e,changes:e.changes.map(t=>({path:t.path,status:t.status,...t.oldPath!==void 0?{oldPath:t.oldPath}:{},...t.module!==void 0?{module:t.module}:{},symbols:t.symbols.map(n=>({name:n.name,kind:n.kind,line:n.line}))}))}}var Ef=H(()=>{"use strict";I()});function ns(e){try{return of(le(e))}catch{return}}function sb(e,t){let n=`${e}.${F.pid}.tmp`;try{return Xt(Ce(e),{recursive:!0}),st(n,t),kn(n,e),!0}catch{return Je(n,{force:!0}),!1}}var vf=H(()=>{"use strict";I();ve();pe();Kr()});function Cf(e){return Re(e.files.map(t=>`${t.rel}:${t.hash}`).join(` -`))}async function Io(e,t){let n=`${e.mode}:${e.identity}`,r=`${n}:${Cf(e.scan)}`;if(Ks&&Ks.key===r)return Ks.index;let o=await t(Ks?.tier===n?Ks.index:void 0);return Ks={key:r,tier:n,index:o},o}function To(e){let t;try{t=Ae(j(e,"model.json"))}catch{return}let n=`${e}:${t.mtimeMs}:${t.size}`;if(Ql&&Ql.key===n)return Ql.model;let r=Bs(e);return r&&(Ql={key:n,model:r}),r}function ec(e,t){e.scan.commit!==t&&(e.scan.commit=t,e.arts=void 0,e.loadArtifacts=void 0)}function Rf(e){let t=Jt.findIndex(r=>r.key===e);if(t<0)return;let[n]=Jt.splice(t,1);return Jt.unshift(n),n}function gr(e){let t=Jt.findIndex(n=>n.key===e.key);return t>=0&&Jt.splice(t,1),Jt.unshift(e),Jt.length=Math.min(Jt.length,vI),e}function ab(e){let t=ib(e);for(let n of Jt){let r=new Set([ob(n.scan.root,e),ob(ib(n.scan.root),t)]);for(let o of r){let s=o===void 0?void 0:n.cacheMap.get(o);s&&(Mf(n.cacheMap,o,s),n.walked=void 0)}}}function Mf(e,t,n){e.set(t,{hash:n.hash,record:n.record})}function ib(e){try{return nt(e)}catch{return e}}function ob(e,t){let n=De(e,t);if(!(!n||n===".."||n.startsWith("../")||Pe(n)))return n.split("/").join("/")}function $o(e,t){let n=e+"\0";for(let r of Jt)if(r.key.startsWith(n))if(r.walked=void 0,t===void 0)for(let[o,s]of r.cacheMap)Mf(r.cacheMap,o,s);else{let o=r.cacheMap.get(t);o&&Mf(r.cacheMap,t,o)}}function lb(e,t){return e+"\0"+JSON.stringify({scope:t.scope,include:t.include,exclude:t.exclude,gitignore:t.gitignore,ignoreDirs:t.ignoreDirs,maxBytes:t.maxBytes,maxFiles:t.maxFiles,maxCallsPerFile:t.maxCallsPerFile,out:t.out,fullHash:t.fullHash})}function Fo(e,t={},n){let r=lb(e,t),o=Rf(r);if(o){if(n&&o.walked===n)return ec(o,Yt(e)),o.scan;let l=kt(e,{...t,cache:o.cacheMap,precomputedWalk:n});return l.contentUnchanged?(l.cacheDirty&&(o.cacheMap=Et(l)),ec(o,l.commit),o.walked=n,o.scan):(gr({key:r,scan:l,cacheMap:Et(l),walked:n}),l)}let s=Hd(e,{...t,precomputedWalk:n});if(s)return gr({key:r,scan:s.scan,cacheMap:s.cacheMap,arts:s.arts,walked:n}),s.scan;let a=kt(e,{...t,precomputedWalk:n});return gr({key:r,scan:a,cacheMap:Et(a),walked:n}),a}async function tc(e,t={},n,r=async()=>{}){let o=lb(e,t),s=Jt.find(c=>c.key===o);if(s){if(n&&s.walked===n)return ec(s,Yt(e)),Rf(o),s.scan;let c=s.cacheMap,d=m=>(m.cacheDirty&&(s.cacheMap=Et(m)),ec(s,m.commit),s.walked=n,Rf(o),s.scan);if(n&&Bd(n,c,t.fullHash)){await r();let m=await hn(e,{...t,cache:c,precomputedWalk:n});return m.contentUnchanged?d(m):(gr({key:o,scan:m,cacheMap:Et(m),walked:n}),m)}let u=kt(e,{...t,cache:c,precomputedWalk:n});if(u.contentUnchanged)return d(u);if(n)return gr({key:o,scan:u,cacheMap:Et(u),walked:n}),u;await r();let f=await hn(e,{...t,cache:c,precomputedWalk:n});return gr({key:o,scan:f,cacheMap:Et(f)}),f}let a=await Ba(e,{...t,precomputedWalk:n},r);if(a)return gr({key:o,scan:a.scan,cacheMap:a.cacheMap,arts:a.arts,loadArtifacts:a.loadArtifacts,walked:n}),a.scan;await r();let l=await hn(e,{...t,precomputedWalk:n});return gr({key:o,scan:l,cacheMap:Et(l),walked:n}),l}function nc(e,t={},n){return Ci(e,{...t,precomputedWalk:n})}function rc(e,t={},n,r){let o=r??Fo(e,t,n),s=Jt.find(a=>a.scan===o);return s?s.arts??=s.loadArtifacts?.()??Pn(o,t):Pn(o,t)}async function cb(e){await Oo(Ke(e,{}))}async function Oo(e){await sn(Wt(e.files.map(t=>t.ext)))}var Ks,Ql,vI,Jt,sc=H(()=>{"use strict";I();ve();pe();Sl();Bt();Fi();tr();Xe();ft();Vr();Kr();bt();en();vI=4,Jt=[]});function db(e,t,n=RI){return F.platform==="linux"?new Af(e,t,n):CI(e,t)}function CI(e,t){let n;try{n=Vo(e,{recursive:!0},(r,o)=>{let s=o?.toString().replaceAll("\\","/")??"";s.split("/").some(l=>vn.has(l)||l.startsWith(".codeindex-edit-"))||$o(e,s||void 0)}),n.on("error",r=>{t(`MCP watcher disabled (${r.message}); using freshness scans`),n?.close(),n=void 0,$o(e)})}catch(r){t(`MCP watcher unavailable (${r instanceof Error?r.message:String(r)}); using freshness scans`)}return{walk:async()=>({walked:Ke(e,{}),reused:!1}),close:()=>n?.close()}}var RI,MI,Af,ub=H(()=>{"use strict";I();ve();hi();pe();Xe();sc();RI=8192,MI=2e3;Af=class{constructor(t,n,r){this.repo=t;this.warn=n;this.maxDirs=r}repo;warn;maxDirs;dirs=new Map;events=0;proof;barrier;disabled=!1;async walk(){if(this.disabled)return{walked:Ke(this.repo,{}),reused:!1};let t=await this.sync();if(t!==void 0&&this.proof?.events===t)return{walked:this.proof.walked,reused:!0};this.proof=void 0;let n=this.walkAndWatch();return t!==void 0&&!this.disabled&&(this.proof={events:t,walked:n}),{walked:n,reused:!1}}close(){for(let t of this.dirs.values())t.close();this.dirs.clear(),this.proof=void 0,this.barrier&&(this.barrier.watcher.close(),Je(this.barrier.dir,{recursive:!0,force:!0})),this.barrier=null}sync(){this.barrier===void 0&&(this.barrier=this.openBarrier());let t=this.barrier;if(!t)return Promise.resolve(void 0);let n=`barrier-${++t.seq}`,r=j(t.dir,n);return new Promise(o=>{let s=l=>{clearTimeout(a),t.waiting=void 0,Je(r,{force:!0}),o(l)},a=setTimeout(()=>s(void 0),MI);t.waiting={name:n,done:()=>s(this.events)};try{st(r,"")}catch{s(void 0)}})}openBarrier(){let t;try{t=yr(j(kp(),"codeindex-watch-"));let n={dir:t,seq:0,watcher:Vo(t,(r,o)=>{n.waiting&&o?.toString()===n.waiting.name&&n.waiting.done()})};return n.watcher.on("error",()=>{}),n}catch(n){return t&&Je(t,{recursive:!0,force:!0}),this.disable(n instanceof Error?n.message:String(n)),null}}walkAndWatch(){let t=new Set([""]);this.add("");let n=Ke(this.repo,{filter:o=>(o.directory&&(t.add(o.rel),this.add(o.rel)),!0)}),r=".git/info";te(j(this.repo,r))&&Ae(j(this.repo,r)).isDirectory()&&(t.add(r),this.add(r));for(let[o,s]of this.dirs)t.has(o)||(s.close(),this.dirs.delete(o));return n}add(t){if(!(this.disabled||this.dirs.has(t))){if(this.dirs.size>=this.maxDirs){this.disable(`more than ${this.maxDirs} directories to watch`);return}try{let n=Vo(t?j(this.repo,t):this.repo,(r,o)=>this.onEvent(t,r,o));n.on("error",()=>{this.events++,this.forget(t)}),this.dirs.set(t,n)}catch(n){let r=n.code;if(r==="ENOENT"||r==="ENOTDIR"||r==="EACCES")return;this.disable(n instanceof Error?n.message:String(n))}}}onEvent(t,n,r){this.events++;let o=r?.toString();if(!o){$o(this.repo);return}let s=t?`${t}/${o}`:o;n==="rename"&&this.forget(s),$o(this.repo,s)}forget(t){let n=this.dirs.get(t);if(!n)return;n.close(),this.dirs.delete(t);let r=t?t+"/":"";for(let[o,s]of this.dirs)r&&!o.startsWith(r)||(s.close(),this.dirs.delete(o))}disable(t){this.disabled||(this.disabled=!0,this.warn(`MCP watcher disabled (${t}); using freshness scans`),this.close())}}});function ic(e,t){let n=e.properties??{};for(let r of e.required??[]){if(t[r]!==void 0&&t[r]!==null)continue;let o=n[r]?.description;return o?`\`${r}\` is required (${o})`:`\`${r}\` is required`}for(let[r,o]of Object.entries(t)){if(o==null)continue;let s=n[r];if(!s?.type)continue;let a=Array.isArray(o)?"array":typeof o;if(s.type==="number"||s.type==="integer"){let l=a==="number"?o:a==="string"&&o.trim()!==""?Number(o):NaN;if(!Number.isFinite(l))return`\`${r}\` must be a number, got ${a==="string"?JSON.stringify(o):a}`;if(s.type==="integer"&&!Number.isInteger(l))return`\`${r}\` must be a whole number, got ${l}`;if(s.minimum!==void 0&&ls.maximum)return`\`${r}\` must be at most ${s.maximum}`;continue}if(s.type==="array"){let l=s.items?.type==="string",c=l?"an array of strings":"an array";if(a!=="array")return`\`${r}\` must be ${c}, got ${a}`;if(l&&!o.every(d=>typeof d=="string"))return`\`${r}\` must be ${c}`;continue}if(a!==s.type)return`\`${r}\` must be a ${s.type}, got ${a}`;if(s.enum&&!s.enum.includes(o))return`\`${r}\` must be one of ${s.enum.map(l=>JSON.stringify(l)).join(", ")}, got ${JSON.stringify(o)}`}}function oc(e,t,n){if(t||!n)return;let r;try{r=JSON.parse(e)}catch{return}if(!(r===null||typeof r!="object"||Array.isArray(r)))return r}function ac(e){return typeof e=="string"&&jn.includes(e)?e:AI}function II(e,t,n){let r;try{r=Ae(e).size}catch{return"absent"}if(r!==n&&r!==n+1)return"stale";try{let o=le(e,"utf8");return o===t||o===t+` -`?"identical":"stale"}catch{return"absent"}}function mb(e){return/^[A-Za-z0-9_\-./=@:]+$/.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'"}function Po(e,t,n,r,o=!0,s){let a=W.byteLength(e,"utf8"),l=s??a;if(l<=r)return e;let c=o&&Object.hasOwn(If,t)?If[t]:void 0,d=c?j(n,Ve,c):void 0,u=d?II(d,e,a):void 0,f=`codeindex index --repo ${mb(n)} --out ${mb(j(n,Ve))}`;return JSON.stringify({truncated:!0,tool:t,bytes:l,maxBytes:r,reason:"This response exceeds the configured limit and was withheld rather than sent as an unusable partial payload.",narrower:Object.hasOwn(fb,t)?fb[t]:"narrow the request with the arguments this tool's inputSchema offers",...u==="identical"?{artifact:d,artifactNote:"The full result is on disk here, byte-for-byte what this call would have returned \u2014 read it directly if you need all of it."}:u==="stale"?{artifactNote:`The artifact at ${d} does not match this answer (the repository changed since it was written, or it was indexed with other options). Run \`${f}\` to refresh it, then read it.`}:u==="absent"?{artifactNote:`Run \`${f}\` to get this as a file.`}:{}},null,2)+` -`}function cc(e,t){let n=If[t];if(!n)return;let r;try{r=JSON.parse(e)}catch{return}if(!(r.truncated!==!0||typeof r.artifact!="string"))return{type:"resource_link",uri:vr(r.artifact).href,name:n,description:`The full ${t} result this call was too large to inline.`,mimeType:"application/json"}}var jn,AI,pb,No,gb,lc,fb,If,hb,dc=H(()=>{"use strict";I();ve();pe();yi();tr();jn=["2024-11-05","2025-03-26","2025-06-18","2025-11-25"],AI=jn[jn.length-1],pb="2025-03-26",No="2025-06-18",gb="2025-03-26";lc=1e6,fb={graph:"pass `scope` to a subdirectory (or `include`/`exclude` globs), or use repo_map / mermaid for an overview",symbols:"pass `name` to look up one symbol, or `concise` for locations only; find_symbol / symbols_overview answer narrower questions",callers:"pass `name` to look up one symbol's call sites, or `concise` for locations only",dead_code:"pass a `limit`, or `scope` to a subdirectory",duplicated_literals:"pass a `limit`, raise `minFiles`/`minCount`, or pass `scope` to a subdirectory",find_references:"the symbol is referenced very widely \u2014 pass `concise`, or ask callers for the call sites alone",find_symbol:"lower `maxResults`, or drop `includeBody`/pass `concise`",symbols_overview:"the file declares a great many symbols \u2014 pass `concise`",grep:"lower `maxHits`, or restrict with `globs` or `scope`",search:"lower `limit`, or pass `scope` to a subdirectory",explain_search:"lower `limit`, or pass `scope` to a subdirectory",complexity:"lower `top`, or pass one `file`",call_graph:"lower `depth`, or follow one `direction`",type_hierarchy:"pass `name` to look up one type",mermaid:"lower `maxEdges`, or focus on one `module`",repo_map:"lower `budgetTokens`",onboard:"lower `budgetTokens`",hotspots:"pass `since` to count recent history only",churn:"pass `since` to count recent history only",coupling:"pass `since` to mine recent history only",check_rules:"narrow the rule set, or pass `scope` to a subdirectory",delta:'pass `concise` (drops the hunks), a `limit` on modules, or `format` "text" for the panel'},If={graph:"graph.json",symbols:"symbols.json"};hb=96});function Ff(e){let t=jo[e];if(t)return{readOnlyHint:!t.write,...t.write?{destructiveHint:t.destructive===!0,idempotentHint:t.idempotent===!0}:{},openWorldHint:t.openWorld===!0}}function is(){return["all",...Object.keys(Wo).sort()]}function Bo(e){let t=e.split(",").map(r=>r.trim()).filter(Boolean),n=new Set;for(let r of t){if(r==="all")return new Set(Do.map(s=>s.name));let o=Object.hasOwn(Wo,r)?Wo[r]:void 0;if(!o)throw new Error(`unknown tool profile "${r}" \u2014 one of: ${is().join(", ")}`);for(let s of o)n.add(s)}return n}function Xs(e,t=jn[0],n){let r=t>=pb,o=t>=No,s=n?Bo(n):void 0,a=s?Do.filter(l=>s.has(l.name)):Do;return!e&&!r&&!o?a:a.map(l=>({...l,...o&&jo[l.name]?{title:jo[l.name].title}:{},...o&&ss[l.name]?{outputSchema:ss[l.name]}:{},...r?{annotations:Ff(l.name)}:{},inputSchema:e?{...l.inputSchema,properties:{...l.inputSchema.properties,repo:{type:"string",description:`Absolute path to the repository root (optional \u2014 defaults to ${e})`}},required:l.inputSchema.required.filter(c=>c!=="repo")}:l.inputSchema}))}var ge,rs,uc,Lo,Tf,Wn,Do,Nt,he,$f,ss,jo,Wo,fc=H(()=>{"use strict";I();dc();ge={repo:{type:"string",description:"Absolute path to the repository root"}},rs="name, name@file, file#name, file#Parent/name (a call_graph id) or Parent/name",uc={type:"string",description:'Only count commits after this ref (tag, branch, sha) or since this date ("2024-01-01", "6 months ago"); anything else is an error'},Lo={concise:{type:"boolean",description:"Return declaration locations (name/kind/file/line, plus parent for a member) without full symbol metadata. Keeps every result, reference tier and confidence label (default false)."}},Tf={file:{type:"string",description:"Disambiguate: repo-relative file containing the symbol"},line:{type:"number",minimum:1,description:"Disambiguate same-file homonyms: the declaration's first line, or any line inside it"},strict:{type:"boolean",description:"Refuse the edit (nothing written) when the post-edit check reports warnings (default false)"}},Wn={scope:{type:"string",description:"Restrict to one directory or file (repo-relative); ANDed with include/exclude"},include:{type:"array",items:{type:"string"},description:"Include globs, rooted at the repo: '*.ts' is top-level only, '**/*.ts' any depth"},exclude:{type:"array",items:{type:"string"},description:"Exclude globs (rooted, like include)"}},Do=[{name:"scan_summary",description:"Deterministically scan a repository: file count, per-language file histogram, HEAD commit, and whether the walk was capped. Fast first look at any codebase.",inputSchema:{type:"object",properties:{...ge,...Wn},required:["repo"]}},{name:"graph",description:"Build the full typed cross-file link-graph (import/call/use/doc-link/mention edges, module grouping, PageRank centrality, Louvain communities, tests-map). Returns graph.json. Large on big repos \u2014 prefer scan_summary/symbols/callers for targeted questions.",inputSchema:{type:"object",properties:{...ge,...Wn},required:["repo"]}},{name:"symbols",description:"Where is a symbol defined and which files reference it? Returns the definition sites (file, line, kind, exported) and referencing files. Omit `name` for the full symbol index.",inputSchema:{type:"object",properties:{...ge,...Lo,name:{type:"string",description:"Symbol name to look up"}},required:["repo"]}},{name:"callers",description:"Who calls a function? Per-symbol caller index: each defined symbol with the exact (file, line) call sites that bind to it. Omit `name` for the full index. An unknown symbol is an error; a known one no site binds to answers with its defs and how many call sites name it anyway (`unresolvedSites`, `sample`).",inputSchema:{type:"object",properties:{...ge,...Lo,name:{type:"string",description:rs},lsp:{type:"boolean",description:"Append incoming calls from configured language servers and agreement with static callers. Requires name; name@file disambiguates. Unsupported servers and failures keep the static answer with a stated reason (default false)."},recall:{type:"boolean",description:"Recall-oriented binding: add the name-only matches precision mode rejects (a unique JS/TS name with no import, a same-file homonym whatever the receiver, a proximity guess in Go or into tests), labelling each site corroborated|unique-name (default false = precision)"},raw:{type:"boolean",description:"Every call site of `name` as written, before any binding: {name, sites:[{file, line, receiver?, enclosingSymbol?}]}. Requires name (default false)"},withCaller:{type:"boolean",description:"Add `caller` to each site: the symbol id of the declaration the call sits in (a call_graph node id), so the answer names functions, not just lines (default false)"}},required:["repo"]}},{name:"workspaces",description:"Detect monorepo packages (npm/pnpm/yarn/lerna/nx/cargo/go modules/maven/gradle/uv/composer) with the workspace dependency graph, one cycle if present, a topological build order, and warnings for malformed manifests. `check: true` also compares each package's declared sibling dependencies with the imports it really makes: `undeclared` (imported, not declared \u2014 breaks isolated installs and publishing) and `unusedDeclared` (declared, never imported).",inputSchema:{type:"object",properties:{...ge,check:{type:"boolean",description:"Compare declared workspace dependencies with resolved cross-package imports (builds the link-graph; default false)"}},required:["repo"]}},{name:"churn",description:"Per-file git commit counts (whole history, or a since window) \u2014 the churn half of hotspot analysis. Paths are relative to repo; `shallow: true` means a shallow clone (counts are lower bounds), `error` says why `ok` is false.",inputSchema:{type:"object",properties:{...ge,since:uc},required:["repo"]}},{name:"symbols_overview",description:"All symbols declared in ONE file (name, kind, line span, exported, parent), in declaration order \u2014 the fastest way to understand a file without reading it.",inputSchema:{type:"object",properties:{...ge,...Lo,file:{type:"string",description:"Repo-relative file path"}},required:["repo","file"]}},{name:"find_symbol",description:`Find symbol declarations by name or name path ('Class/method' matches a method inside Class). Each match carries its COMPLETE SIGNATURE (parameters and return type) by default, because "what shape is it" is the question that follows "where is it" almost every time and one round trip beats two. Options: substring matching, includeBody for the declaration's source, concise to drop everything but name/kind/file/line (and a member's parent) when you genuinely only want a location. Exact-name matches rank first.`,inputSchema:{type:"object",properties:{...ge,namePath:{type:"string",description:"Symbol name or Parent/child path"},substring:{type:"boolean"},includeBody:{type:"boolean"},concise:{type:"boolean",description:"Return only name/kind/file/line (plus parent for a member) \u2014 drop the signature, line span, visibility and language. Roughly 2.5x smaller; use it when you are resolving a path and nothing more (default false)."},maxResults:{type:"integer",minimum:1,description:"Cap matches (default 50)"}},required:["repo","namePath"]}},{name:"find_references",description:"Who references a symbol? Three labeled tiers: defs (declarations), callSites (line-precise, import-corroborated call bindings), referencingFiles (file-level identifier/doc mentions \u2014 may include homonyms). Confidence decreases across tiers; the labels let you decide what to trust.",inputSchema:{type:"object",properties:{...ge,name:{type:"string",description:`${rs}; a bare name covers every homonym`},...Lo,lsp:{type:"boolean",description:"Also ask a configured language server (see lsp_status) and append an `lsp` block: its references plus an `agreement` matrix (both / lspOnly / staticOnly). The three static tiers are unchanged either way. `staticOnly` can indicate homonyms or an incomplete language-server answer; `partial: true` flags a declaration-only answer while static uses exist. Servers stay up for the session. No config, no binary, a crash or a timeout all degrade to the static answer with a stated reason (default false)."}},required:["repo","name"]}},{name:"symbol_at",description:"Which symbol is at file:line? The innermost declaration holding the line (full metadata plus its symbol `id`, the form callers/call_graph/call_path read) and the declarations around it, outermost first. Turns a grep hit, a stack frame or a diagnostic into something the navigation tools accept. `symbol` is null outside every declaration; `approximate: true` means the declaration has no recorded end line (regex tier), so it is only the nearest declaration above.",inputSchema:{type:"object",properties:{...ge,file:{type:"string",description:"Repo-relative file path"},line:{type:"number",minimum:1,description:"1-based line number"}},required:["repo","file","line"]}},{name:"lsp_status",description:"Is the optional LSP tier configured, and would it answer? Reports the config path and its source, each server with whether its command is on PATH and how many files in this repo it claims, and the languages no server covers. Opt-in by asset: the tier is active only when CODEINDEX_LSP_CONFIG points at a config or ~/.config/codeindex/lsp.json exists; the repo's own /.codeindex/lsp.json names commands to run, so it is read only when the server was started with --trust-lsp-config (or CODEINDEX_TRUST_LSP_CONFIG=1), and is reported as `ignoredConfig` otherwise. `probe: true` additionally starts each server to read the capabilities it really advertises. The tier never touches graph.json/symbols.json \u2014 it annotates query answers only.",inputSchema:{type:"object",properties:{...ge,probe:{type:"boolean",description:"Start each server and read its real capabilities (default false: no spawn)"}},required:["repo"]}},{name:"onboard",description:"One call that says what this repository IS: its own tagline, size and language mix, monorepo layout when there is one, a token-budgeted map of the highest-PageRank files with their key signatures, and where git says work concentrates. Composes scan_summary + workspaces + repo_map + hotspots so the first four round trips of a session become one, and persists the result as the `onboarding` memory (read_memory) so the next session does not repeat them. Set remember:false to skip the write.",inputSchema:{type:"object",properties:{...ge,budgetTokens:{type:"integer",minimum:1,description:"Token budget for the key-files section (default 900)"},remember:{type:"boolean",description:"Persist the brief as the `onboarding` memory (default true)"}},required:["repo"]}},{name:"repo_map",description:"Token-budgeted map of the repository: the most central production files (PageRank over the edges production code creates; tests left out) with their public types, functions and methods first, deterministically rendered to fit `budgetTokens` (default 1024). The densest single read to understand an unfamiliar codebase.",inputSchema:{type:"object",properties:{...ge,budgetTokens:{type:"integer",minimum:1,description:"Approximate token budget (default 1024)"}},required:["repo"]}},{name:"hotspots",description:"Where does work concentrate? Files changed in the window, ranked by git churn \xD7 size (commits \xD7 log2 lines); test files carry `test: true`. High-scoring files are where changes and defects cluster.",inputSchema:{type:"object",properties:{...ge,since:uc,limit:{type:"integer",minimum:1,description:"Max files (default 20)"}},required:["repo"]}},{name:"coupling",description:"Change coupling: pairs of indexed files that repeatedly change in the same commits. strength 1.0 = every change to one touched the other; ranked by `confidence` (the strength a pair's history supports); `linked: false` = no graph edge joins them \u2014 a hidden dependency.",inputSchema:{type:"object",properties:{...ge,since:uc,hidden:{type:"boolean",description:"Only pairs no graph edge links (default false)"},minTogether:{type:"integer",minimum:1,description:"Commits a pair must share (default 3)"},maxCommitFiles:{type:"integer",minimum:1,description:"Skip commits touching more files, as mass refactors (default 30)"},limit:{type:"integer",minimum:1,description:"Max pairs (default 100)"}},required:["repo"]}},{name:"replace_symbol_body",description:"WRITE: replace a symbol's whole declaration with `body` (verbatim, supply full indentation). The symbol is resolved by name path ('Class/method'); ambiguity errors list the candidates \u2014 qualify with `file`, and `line` for same-file homonyms (getter/setter, overloads). Line spans come from the AST index; a regex-tier symbol whose end cannot be proven is refused. The doc comment above the declaration is kept. The edited file is re-extracted before writing: `warnings` reports declarations changed outside the edit and new syntax errors, and `strict` refuses such an edit.",inputSchema:{type:"object",properties:{...ge,namePath:{type:"string"},body:{type:"string"},...Tf},required:["repo","namePath","body"]}},{name:"insert_after_symbol",description:"WRITE: insert `body` after a symbol's declaration (blank-line separation preserved for definition-like kinds). Resolved and verified like replace_symbol_body.",inputSchema:{type:"object",properties:{...ge,namePath:{type:"string"},body:{type:"string"},...Tf},required:["repo","namePath","body"]}},{name:"insert_before_symbol",description:"WRITE: insert `body` before a symbol, above its decorators/attributes and attached doc comment (blank-line separation preserved). Resolved and verified like replace_symbol_body.",inputSchema:{type:"object",properties:{...ge,namePath:{type:"string"},body:{type:"string"},...Tf},required:["repo","namePath","body"]}},{name:"write_memory",description:"Persist a named markdown note under /.codeindex/memories/ (names may use topic/name form). Write small, focused notes: project map, build commands, conventions.",inputSchema:{type:"object",properties:{...ge,name:{type:"string"},content:{type:"string"}},required:["repo","name","content"]}},{name:"read_memory",description:"Read one persisted memory by name.",inputSchema:{type:"object",properties:{...ge,name:{type:"string"}},required:["repo","name"]}},{name:"list_memories",description:"List persisted memory names \u2014 load this first, then read individual memories on relevance.",inputSchema:{type:"object",properties:{...ge},required:["repo"]}},{name:"delete_memory",description:"Delete one persisted memory by name.",inputSchema:{type:"object",properties:{...ge,name:{type:"string"}},required:["repo","name"]}},{name:"dead_code",description:"Dead-code candidates in two labeled tiers: 'unreferenced' (no call site binds AND no other file names it) and 'uncalled' (named elsewhere \u2014 import, type position, base-class list, a same-name call site \u2014 but no call binds). Exported callables only unless `kinds: \"all\"`; test and tail files (examples, docs, fixtures, scripts \u2014 `includeTail` to include them), the package's public API (manifest entry points and what they re-export), language protocol names and overrides of live methods are never candidates. On a large repo this list runs to thousands of entries \u2014 pass `limit`, or `scope` to one subdirectory.",inputSchema:{type:"object",properties:{...ge,...Wn,limit:{type:"integer",minimum:1,description:"Cap entries (default: all)"},kinds:{type:"string",enum:["callable","all"],description:"Candidate kinds (default callable; all adds types, properties and constants, unreferenced only)"},includeTail:{type:"boolean",description:"Also report examples, docs, fixtures and scripts"}},required:["repo"]}},{name:"duplicated_literals",description:"Values with no single source of truth: one literal written out across many files. Three labeled tiers \u2014 'competing' (two or more exported constants hold the same value), 'bypassed' (a constant holds it and other files rewrite it anyway), 'uncentralized' (nothing holds it). Path-like values are also grouped into namespace families, so a whole route space reports once instead of once per route. Covers config files (JSON/YAML/TOML) as well as code, which is where the dangerous cases live: a threshold declared in TypeScript and again in a rules JSON is checked by no compiler. Use it to answer 'what breaks if this value changes' and 'is there already a helper for this'.",inputSchema:{type:"object",properties:{...ge,...Wn,minFiles:{type:"integer",minimum:1,description:"Distinct files a value must span (default 2)"},minCount:{type:"integer",minimum:1,description:"Total occurrences required (default 3)"},includeTests:{type:"boolean",description:"Count test files too (default false)"},limit:{type:"integer",minimum:1,description:"Cap duplications (default: all)"}},required:["repo"]}},{name:"complexity",description:"Cyclomatic-complexity estimates (branch-token counting over AST line spans, comments and string literals aside), most-complex first; functions and methods only \u2014 containers are not ranked, and nested functions score on their own. Pass `file` for one file's symbols, omit for the repo-wide top. Combine with hotspots: the `risk` field of this tool's sibling ranks complexity \xD7 churn.",inputSchema:{type:"object",properties:{...ge,file:{type:"string"},risk:{type:"boolean",description:"Return complexity \xD7 git-churn risk ranking instead"},since:{...uc,description:"Only count risk churn after this ref (tag, branch, sha) or since this date"},top:{type:"integer",minimum:1,description:"Cap ranked symbols"}},required:["repo"]}},{name:"mermaid",description:"Mermaid diagram of the module graph (renders inline in Claude/GitHub \u2014 no graph database). Optionally scoped to one module's neighborhood.",inputSchema:{type:"object",properties:{...ge,module:{type:"string",description:"Module slug to focus on"},maxEdges:{type:"integer",minimum:1,description:"Cap rendered edges"}},required:["repo"]}},{name:"grep",description:"Search file contents with a JavaScript regular expression (ripgrep when available, a deterministic JS scan otherwise \u2014 same results either way). Returns hits sorted by (file, line): {file, line, col, text}, `col` being the 1-based UTF-16 column of the first match and `text` the line, cut to a window around the match when longer than 300 chars. Capped at maxHits (default 200): set `withMeta: true` to get `{ hits, truncated, filesMatched, notes? }` and know whether the list is complete. A pattern too slow for the JS engine is stopped at `timeoutMs` (default 10000) and the response is then always that envelope, with `timedOut: true`.",inputSchema:{type:"object",properties:{...ge,pattern:{type:"string",description:"JavaScript regular expression to search for"},scope:{type:"string",description:"Restrict to one directory or file (repo-relative). ANDed with `globs`"},globs:{type:"array",items:{type:"string"},description:"Restrict to matching paths. Rooted at the repo: '*.ts' matches root-level files only, '**/*.ts' any depth; a '!' prefix excludes (exclusion wins)"},ignoreCase:{type:"boolean"},maxHits:{type:"integer",minimum:1},filesWithMatches:{type:"boolean",description:"One hit per matching file (its first match); maxHits then caps files"},withMeta:{type:"boolean",description:"Return { hits, truncated, filesMatched, notes? } instead of the bare hit array"},timeoutMs:{type:"integer",minimum:1,description:"Wall-clock budget for the JS regex engine (default 10000)"}},required:["repo","pattern"]}},{name:"search",description:'Natural-language-ish lexical search: BM25F ranking over SIX weighted fields \u2014 symbol names (camelCase/snake_case subtokens), path segments, markdown headings, the file summary, per-symbol DOC COMMENTS, and the prose body (comment + short-literal words). The last two are why "where is rate limiting handled" works: the phrase lives in a comment, not in a name. Results carry `matchedFields`, a `line` anchor and `symbolHits` (name/kind/line). NOT embeddings by default \u2014 deterministic, diacritic-folded, zero API keys. Answers "where is auth handled?"-style queries with ranked files, matched terms and top symbols. Query terms with zero document frequency get a deterministic trigram-fuzzy fallback (typo-tolerant) unless `fuzzy: false`. Set `semantic: true` to RRF-fuse an embedding tier (HTTP endpoint, else a local static model) with lexical \u2014 the response then wraps the ranked list as `{ results, tier, degradedReason? }`, `tier` being "endpoint"/"static" when fusion happened or "lexical" (with `degradedReason`) when it did not (see embed_status). Without `semantic`, the response is the bare ranked array, unchanged.',inputSchema:{type:"object",properties:{...ge,...Wn,query:{type:"string",description:"Natural-language or identifier query"},limit:{type:"integer",minimum:1,description:"Max results, a whole number (default 20)"},fuzzy:{type:"boolean",description:'Fallback for query terms with zero document frequency: a morphological stem match first ("caching" finds "cache"), then trigram similarity for typos (default true)'},rank:{type:"string",enum:["lexical","graph"],description:`Structural prior: "graph" multiplies the lexical score by the file's PageRank over the resolved import graph relative to an average file (a leaf \xD70.95, a hub well above \xD71; Go files unchanged); "lexical" (default) scores on text alone. Measured a wash \u2014 it helps some queries and hurts as many \u2014 see SearchOptions.rank.`},exact:{type:"boolean",description:"Drop results that carry no verbatim query-term match \u2014 the ones the stem/trigram bridge produced (default false)."},explain:{type:"boolean",description:"Wrap the response as `{ results, explain }` with the query verdict (default false = bare array). See explain_search."},semantic:{type:"boolean",description:'RRF-fuse an embedding tier with lexical (default false). Precedence: the HTTP endpoint (CODEINDEX_EMBED_ENDPOINT) if set, else a local static model. The response reports the effective tier as a top-level `tier` field ("endpoint"/"static" on success, "lexical" plus `degradedReason` when neither is available/reachable) instead of degrading silently \u2014 see embed_status. `exact` and `rank` apply to the lexical side; `explain: true` adds an `explain` key to that object, restated for the fused rows (with `semanticOnlyResults`).'}},required:["repo","query"]}},{name:"explain_search",description:'Search, and say whether the query actually found anything. Returns `{ results, explain }` where explain.verdict is "match" (a verbatim term matched), "weak" (results exist but rest on a near match, or the identifier you asked for has document frequency 0) or "none". Use this instead of `search` whenever an empty-feeling or surprising result matters: a query for an identifier that is NOT in the indexed tree still returns confident-looking rows built from its subtokens \u2014 searching "nullGipStep7" in a repo that only has "nullGipStep2" ranks files matching "null" and "gip" \u2014 and only the verdict distinguishes that from a real hit. Also names the terms dropped as stopwords, the terms that exist nowhere, and what each near match bridged to.',inputSchema:{type:"object",properties:{...ge,...Wn,query:{type:"string",description:"Natural-language or identifier query"},limit:{type:"integer",minimum:1,description:"Max results, a whole number (default 20)"},fuzzy:{type:"boolean",description:"Stem/trigram fallback for zero-document-frequency terms (default true)"},exact:{type:"boolean",description:"Drop results carrying no verbatim term match (default false)"}},required:["repo","query"]}},{name:"embed_status",description:"Report the embedding tier: the effective mode (none/static/endpoint; endpoint > static model), the resolved model (opt-in, never shipped in the package) with its modelId/dim, EMBED_VERSION, and the configured HTTP endpoint with its reachability. A model.json that is present but fails to load is reported as `model: { present: true, error }` with mode none. Use to check whether `search` with semantic:true will fuse embeddings or degrade to lexical.",inputSchema:{type:"object",properties:{...ge},required:["repo"]}},{name:"type_hierarchy",description:"How do types relate? For one type: the base classes it extends, the interfaces/traits it implements, and \u2014 the reverse direction, which no other tool answers \u2014 what extends or implements IT, plus any declared supertype with no definition in this repo. Omit `name` for the whole hierarchy.",inputSchema:{type:"object",properties:{...ge,name:{type:"string",description:`Type to look up \u2014 ${rs}`}},required:["repo"]}},{name:"implementations",description:"Who implements this interface (or extends this class)? Walks the hierarchy TRANSITIVELY, so a class implementing a sub-interface of the one asked about is included. Go states no implementations: a Go type counts when a `var _ I = (*T)(nil)` assertion says so, or when its methods (own and promoted by embedding) cover the interface's by name and parameter count \u2014 those are marked `structural: true`. The tool to reach for before changing an interface.",inputSchema:{type:"object",properties:{...ge,name:{type:"string",description:`Interface/trait/class \u2014 ${rs}`}},required:["repo","name"]}},{name:"call_graph",description:"What does this symbol reach, and what reaches it? A bounded symbol-to-symbol neighborhood around `symbol` \u2014 `depth` hops (default 2) following `calls`/`extends`/`implements`/`overrides` edges, `direction` out (callees) | in (callers) | both. Dispatch is followed: walking out through a method also reaches the methods overriding it, and walking in to an override reaches the callers of the method it overrides. Answers impact questions the one-hop `callers` tool cannot.",inputSchema:{type:"object",properties:{...ge,symbol:{type:"string",description:`Symbol to centre on \u2014 ${rs}`},depth:{type:"integer",minimum:1,maximum:5,description:"Hops to follow (default 2, max 5)"},direction:{type:"string",enum:["out","in","both"],description:"out | in | both (default both)"}},required:["repo","symbol"]}},{name:"call_path",description:'How does `from` reach `to`? The shortest chains of calls between two symbols (a call to a method may dispatch to an override: `via: "dispatch"`), listed in id order with the total count of equally short ones. No path within `depth` hops answers hops: null, plus `reverseHops` when `to` reaches `from` instead. With files: true, `from` and `to` are file paths and the steps are import/use/call edges of the link-graph \u2014 why does A depend on B (a path only name-inferred calls would open is reported as `inferredHops` unless includeInferred).',inputSchema:{type:"object",properties:{...ge,from:{type:"string",description:`Start \u2014 ${rs}; a file path with files: true`},to:{type:"string",description:`End \u2014 ${rs}; a file path with files: true`},depth:{type:"integer",minimum:1,description:"Longest path to look for, in hops (default 8, max 16)"},maxPaths:{type:"integer",minimum:1,description:"Shortest paths to list (default 5)"},files:{type:"boolean",description:"Walk the file link-graph instead of the symbol graph (default false)"},includeInferred:{type:"boolean",description:"files: true only \u2014 also step through calls inferred from a name alone (default false)"}},required:["repo","from","to"]}},{name:"impact",description:"What breaks if I change this file or module? The reverse dependency closure over the link-graph: every file that transitively imports, uses or calls `target`, nearest first, with the modules touched. A Go import reaches every non-test file of the package it names. A call inferred from a name alone is counted (`inferredDependents`) but not followed unless includeInferred. Answers from the persisted graph \u2014 no need to pull the whole `graph`.",inputSchema:{type:"object",properties:{...ge,target:{type:"string",description:"Repo-relative file path or module slug"},depth:{type:"integer",minimum:1,description:"Hops to follow (default: the full closure)"},includeInferred:{type:"boolean",description:"Also follow call edges inferred from a name alone (default false)"}},required:["repo","target"]}},{name:"neighbors",description:"What sits next to this file or module in the link-graph, both directions: every edge kind linking each neighbour (import, call, use, extends, implements, doc-link, mention, contains), strongest evidence first, out to `depth` hops. Hubs are listed but not expanded through, so depth 2 stays an answer rather than a dump.",inputSchema:{type:"object",properties:{...ge,target:{type:"string",description:"Repo-relative file path or module slug"},depth:{type:"integer",minimum:1,description:"Hops to follow (default 1)"},kinds:{type:"array",items:{type:"string"},description:"Edge kinds to traverse (default all)"}},required:["repo","target"]}},{name:"check_rules",description:'Validate dependency-cruiser-style architecture rules against the link-graph. Rules (inline JSON array): forbidden edges {name, from, to, kind?, severity?, comment?} with glob paths, plus builtins {name, builtin: "cycles"|"orphans"|"literals"} (module-level import cycles; code files nothing connects to; values with no single source of truth, narrowed by tiers?/minFiles?/minCount?/includeTests?). Unknown keys are rejected; a forbidden rule whose globs match no indexed file comes back as an `unmatched` warning. Returns `{ errors, warnings, violations }`, as the CLI does: deterministic violations with severity error|warn \u2014 a CI gate.',inputSchema:{type:"object",properties:{...ge,...Wn,rules:{type:"array",description:"Rules array (inline JSON \u2014 see description)"},configPath:{type:"string",description:"Read the rules from this JSON file instead \u2014 the CLI's --config. Repo-relative, or absolute; either way it must resolve inside the repository. Ignored when `rules` is given."}},required:["repo"]}},{name:"resolution_report",description:"Can the link-graph be trusted for a language? Per importer language: how many imports resolved to in-repo files, went external (third-party/stdlib), dangle (local target missing, by reason) or are unsupported (no resolver for that language), the top dangling specs with an example importer, the top external packages, and the config warnings (unparseable tsconfig/package.json, missing `extends`) that silently turn imports external. Check it before relying on impact, callers or dead_code for a language.",inputSchema:{type:"object",properties:{...ge,...Wn,lang:{type:"string",description:"Only this language (as scan_summary names it)"},limit:{type:"integer",minimum:1,description:"Entries per top list (default 10)"}},required:["repo"]}},{name:"index_status",description:"Is the persisted index (/.codeindex, written by `codeindex index`) fresh for this tree? Returns whether its cache.json is usable (or why not: absent/unreadable/corrupt/schema/extractor), the indexed vs HEAD commit, per-file drift counts (unchanged, touched, modified, added, deleted, reextract), artifactsFresh and the reasons it is not. Cheap: reads cache.json, walks and stats, hashes only stat-changed files, never extracts. A fresh index is what makes the first graph-shaped call on a large repo fast; a stale one is rebuilt in memory, so answers stay correct either way.",inputSchema:{type:"object",properties:{...ge,...Wn},required:["repo"]}},{name:"delta",description:"What does my change break? Maps the git diff (the branch against its merge-base with the default branch, uncommitted and untracked work included; or the staged changeset) onto the graph: each changed file with the symbols enclosing its hunks, and per module a 0-100 risk score (HIGH/MEDIUM/LOW) in which every point comes with its reason \u2014 exported API changed, hub, blast radius, test gap, a deleted or renamed file that is still imported (`broken`, with its importers), dangling imports. `open` names the files to read first. Call it after editing.",inputSchema:{type:"object",properties:{...ge,...Lo,base:{type:"string",description:"Branch or ref to review against (default: origin/HEAD, origin/main, origin/master, main, master; else HEAD)"},staged:{type:"boolean",description:"Review the staged changeset against HEAD instead (default false)"},depth:{type:"integer",minimum:1,description:"Blast-radius hops (default 2)"},limit:{type:"integer",minimum:1,description:"Max modules, highest score first (default: all)"},format:{type:"string",enum:["json","text"],description:'"text" returns the compact human panel instead of JSON (default "json")'}},required:["repo"]}}],Nt={type:"array",items:{type:"string"}},he={type:"object"},$f={error:{type:"string"},shallow:{type:"boolean"},note:{type:"string"}},ss={call_graph:{type:"object",properties:{root:{type:"array",items:he},nodes:{type:"array",items:he},edges:{type:"array",items:he},truncated:{type:"boolean"},depthClamped:{type:"integer"}},required:["root","nodes","edges"]},call_path:{type:"object",properties:{from:{},to:{},hops:{type:["integer","null"]},paths:{type:"array",items:{type:"array",items:he}},pathCount:{type:"integer"},truncated:{type:"boolean"},depthClamped:{type:"integer"},reverseHops:{type:"integer"},inferredHops:{type:"integer"}},required:["from","to","hops","paths","pathCount"]},impact:{type:"object",properties:{target:{type:"string"},scope:{type:"string",enum:["module","file"]},seeds:Nt,files:{type:"array",items:he},modules:Nt,inferredDependents:{type:"integer"}},required:["target","scope","seeds","files","modules"]},neighbors:{type:"object",properties:{target:{type:"string"},scope:{type:"string",enum:["module","file"]},links:{type:"array",items:he},members:Nt},required:["target","scope","links"]},scan_summary:{type:"object",properties:{engineVersion:{type:"string"},commit:{type:"string"},fileCount:{type:"integer"},languages:{type:"object",additionalProperties:{type:"integer"}},capped:{type:"boolean"}},required:["engineVersion","fileCount","languages","capped"]},graph:{type:"object",properties:{schemaVersion:{type:"integer"},version:{type:"string"},commit:{type:"string"},fileCount:{type:"integer"},languages:{type:"object",additionalProperties:{type:"integer"}},files:{type:"array",items:he},modules:{type:"array",items:he},fileEdges:{type:"array",items:he},moduleEdges:{type:"array",items:he}},required:["schemaVersion","files","fileEdges","modules","moduleEdges"]},symbols:{type:"object",oneOf:[{type:"object",properties:{schemaVersion:{type:"integer"},defs:he,refs:he},required:["schemaVersion","defs"]},{type:"object",properties:{name:{type:"string"},defs:{type:"array",items:he},refs:Nt},required:["name","defs","refs"]}]},callers:{type:"object",oneOf:[{type:"object",additionalProperties:he},{type:"object",properties:{def:he,callers:{type:"array",items:he},lsp:he},required:["def","callers"]},{type:"object",properties:{error:{type:"string"},defs:{type:"array",items:he},unresolvedSites:{type:"integer"},sample:{type:"array",items:he}},required:["error"]},{type:"object",properties:{name:{type:"string"},sites:{type:"array",items:he}},required:["name","sites"]}]},workspaces:{type:"object",properties:{packages:{type:"array",items:he},cycle:{type:["array","null"],items:{type:"string"}},topoOrder:Nt,warnings:Nt,check:{type:"object",properties:{ok:{type:"boolean"},undeclared:{type:"array",items:he},unusedDeclared:{type:"array",items:he}},required:["ok","undeclared","unusedDeclared"]}},required:["packages","topoOrder"]},churn:{type:"object",properties:{ok:{type:"boolean"},...$f,churn:{type:"object",additionalProperties:{type:"integer"}}},required:["ok","churn"]},find_references:{type:"object",properties:{defs:{type:"array",items:he},callSites:{type:"array",items:he},referencingFiles:Nt},required:["defs","callSites","referencingFiles"]},symbol_at:{type:"object",properties:{file:{type:"string"},line:{type:"integer"},symbol:{type:["object","null"]},enclosing:Nt,approximate:{type:"boolean"}},required:["file","line","symbol","enclosing"]},lsp_status:{type:"object",properties:{lspVersion:{type:"number"},mode:{type:"string",enum:["none","configured"]},configPath:{type:["string","null"]},source:{type:"string",enum:["env","repo","cwd","user","none"]},ignoredConfig:{type:"object",properties:{path:{type:"string"},reason:{type:"string"}},required:["path","reason"]},servers:{type:"array",items:he},unmappedLanguages:Nt},required:["lspVersion","mode","source","servers","unmappedLanguages"]},check_rules:{type:"object",properties:{errors:{type:"integer"},warnings:{type:"integer"},violations:{type:"array",items:he}},required:["errors","warnings","violations"]},onboard:{type:"object",properties:{brief:{type:"string"},memory:{type:"string"},memoryError:{type:"string"}},required:["brief"]},explain_search:{type:"object",properties:{results:{type:"array",items:he},explain:{type:"object",properties:{query:{type:"string"},terms:{type:"array",items:he},droppedStopwords:Nt,unresolvedTerms:Nt,wholeIdentifier:he,verdict:{type:"string",enum:["match","weak","none"]},note:{type:"string"},bridgedOnlyResults:{type:"number"},resultCount:{type:"number"}},required:["query","terms","droppedStopwords","unresolvedTerms","verdict","bridgedOnlyResults","resultCount"]}},required:["results","explain"]},hotspots:{type:"object",properties:{churnOk:{type:"boolean"},...$f,hotspots:{type:"array",items:he}},required:["churnOk","hotspots"]},coupling:{type:"object",properties:{ok:{type:"boolean"},...$f,couplings:{type:"array",items:he}},required:["ok","couplings"]},duplicated_literals:{type:"object",properties:{duplications:{type:"array",items:he},families:{type:"array",items:he}},required:["duplications","families"]},index_status:{type:"object",properties:{indexDir:{type:"string"},present:{type:"boolean"},usable:{type:"boolean"},reason:{type:"string",enum:["absent","unreadable","corrupt","schema","extractor"]},engineVersion:he,commit:he,files:{type:["object","null"]},artifactsFresh:{type:"boolean"},stale:Nt},required:["indexDir","present","usable","engineVersion","commit","files","artifactsFresh","stale"]},embed_status:{type:"object",properties:{embedVersion:{type:"integer"},mode:{type:"string",enum:["none","static","endpoint"]},model:{},endpoint:{},endpointReachable:{type:"boolean"}},required:["embedVersion","mode"]},resolution_report:{type:"object",properties:{totals:he,languages:{type:"array",items:he},warnings:Nt},required:["totals","languages","warnings"]},write_memory:{type:"object",properties:{written:{type:"string"}},required:["written"]},delete_memory:{type:"object",properties:{deleted:{type:"boolean"}},required:["deleted"]}};for(let e of["replace_symbol_body","insert_after_symbol","insert_before_symbol"])ss[e]={type:"object",properties:{file:{type:"string"},symbol:{type:"string"},startLine:{type:"integer"},endLine:{type:"integer"},lines:{type:"integer"},warnings:{type:"array",items:{type:"string"}}},required:["file"]};jo={scan_summary:{title:"Scan summary"},graph:{title:"Link graph"},symbols:{title:"Symbol index"},callers:{title:"Caller index"},workspaces:{title:"Monorepo workspaces"},churn:{title:"Git churn"},symbols_overview:{title:"File symbol overview"},find_symbol:{title:"Find symbol"},find_references:{title:"Find references"},symbol_at:{title:"Symbol at a line"},repo_map:{title:"Repository map"},onboard:{title:"Project brief",write:!0,destructive:!1,idempotent:!0},hotspots:{title:"Hotspots"},coupling:{title:"Change coupling"},replace_symbol_body:{title:"Replace symbol body",write:!0,destructive:!0,idempotent:!0},insert_after_symbol:{title:"Insert after symbol",write:!0,destructive:!1,idempotent:!1},insert_before_symbol:{title:"Insert before symbol",write:!0,destructive:!1,idempotent:!1},write_memory:{title:"Write memory",write:!0,destructive:!1,idempotent:!0},read_memory:{title:"Read memory"},list_memories:{title:"List memories"},delete_memory:{title:"Delete memory",write:!0,destructive:!0,idempotent:!0},dead_code:{title:"Dead-code candidates"},duplicated_literals:{title:"Values with no single source of truth"},complexity:{title:"Complexity"},mermaid:{title:"Mermaid module diagram"},grep:{title:"Grep file contents"},search:{title:"Lexical search",openWorld:!0},explain_search:{title:"Search with a verdict",openWorld:!0},lsp_status:{title:"LSP tier status",openWorld:!0},embed_status:{title:"Embedding tier status",openWorld:!0},type_hierarchy:{title:"Type hierarchy"},implementations:{title:"Implementations"},call_graph:{title:"Call graph neighborhood"},call_path:{title:"Shortest call path"},impact:{title:"Reverse dependency closure"},neighbors:{title:"Link-graph neighbours"},check_rules:{title:"Check architecture rules"},resolution_report:{title:"Import resolution report"},index_status:{title:"Index freshness"},delta:{title:"Review the diff"}};Wo={orient:["scan_summary","index_status","repo_map","onboard","workspaces","mermaid","graph","read_memory","list_memories","write_memory"],find:["search","explain_search","grep","find_symbol","symbols","symbols_overview","symbol_at","embed_status"],impact:["find_references","callers","call_graph","call_path","impact","neighbors","dead_code","type_hierarchy","implementations","lsp_status","resolution_report","delta"],edit:["find_symbol","symbols_overview","symbol_at","replace_symbol_body","insert_after_symbol","insert_before_symbol"],risk:["hotspots","churn","coupling","complexity","check_rules","duplicated_literals","dead_code","delta"],memory:["write_memory","read_memory","list_memories","delete_memory"]}});var _b={};hc(_b,{DEFAULT_MAX_RESPONSE_BYTES:()=>lc,OUTPUT_SCHEMAS:()=>ss,PROTOCOL_VERSIONS:()=>jn,TOOLS:()=>Do,TOOL_META:()=>jo,TOOL_PROFILES:()=>Wo,annotationsFor:()=>Ff,capResponse:()=>Po,getArtifacts:()=>rc,getScan:()=>Fo,getScanParallel:()=>tc,getScanSummary:()=>nc,memoizedEmbedModel:()=>To,memoizedEmbeddingIndex:()=>Io,negotiateProtocol:()=>ac,profileNames:()=>is,resourceLinkFor:()=>cc,runMcpServer:()=>yb,scanFingerprint:()=>Cf,structuredContentFor:()=>oc,toCacheMap:()=>Et,toolsFor:()=>Xs,toolsInProfiles:()=>Bo,validateArgs:()=>ic,warmGrammarsForRepo:()=>cb,warmGrammarsForWalk:()=>Oo});function TI(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.jsonrpc!=="2.0"||typeof t.method!="string"?!1:t.id===void 0||t.id===null||typeof t.id=="number"||typeof t.id=="string"}function $I(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method!="string"&&("result"in t||"error"in t)}function ye(e){return typeof e=="string"&&e?e:void 0}function Zs(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")&&e.length?e:void 0}function Pf(e){let t=typeof e=="number"?e:typeof e=="string"&&e.trim()!==""?Number(e):NaN;return Number.isFinite(t)&&t>=0?t:void 0}function mc(e,t){let n=Pf(e);if(n!==void 0&&!Number.isInteger(n))throw new Error(`\`${t}\` must be a whole number, got ${n}`);return n}function Ue(e){let t=Pf(e);return t!==void 0&&t>0?t:void 0}function Nf(e){return e instanceof Error?e.message:String(e)}function Of(e,t,n){let r=dr(e);if(r.has(n))return n;let o=De(t,ue(t,n.replaceAll("\\","/"))).split("/").join("/");if(o===".."||o.startsWith("../")||Pe(o))throw new Error(`\`file\` is outside the repository: ${n}`);if(r.has(o))return o;let s=je(o),a=e.files.filter(l=>je(l.rel)===s).map(l=>l.rel).sort(T).slice(0,5);throw new Error(`file not in the index: ${n}`+(a.length?` \u2014 did you mean ${a.join(", ")}?`:" (paths are repo-relative, as symbols_overview and find_symbol report them)"))}function OI(e,t){let n=ye(e.repo)??t;if(!n)throw new Error("`repo` is required (absolute path to the repository root)");let r=ue(n);try{if(!Ae(r).isDirectory())throw new Error("not a directory")}catch{throw new Error(`repository root is not a readable directory: ${n}`)}return r}async function NI(e,t,n,r,o=async a=>({walked:Ke(a,{}),reused:!1}),s={}){let a={scope:ye(t.scope),include:Zs(t.include),exclude:Zs(t.exclude)},l=ye(t.rank),c=l==="graph"||l==="lexical"?{rank:l}:{},d,u;if(!(FI.has(e)&&!(e==="workspaces"&&t.check===!0))){let g=await o(n);d=g.walked,r?.(g.reused?`unchanged since the last call: ${d.files.length} files`:`walked ${d.files.length} files`),u=await tc(n,a,d,()=>d?Oo(d):Promise.resolve()),r?.(`scan ready: ${u.files.length} files`)}let m=()=>u??Fo(n,a,d),p=()=>rc(n,a,d,u);if(e==="scan_summary"){let g=nc(n,a,d);return JSON.stringify({engineVersion:$e,commit:g.commit,fileCount:g.fileCount,languages:g.languages,capped:g.capped},null,2)}if(e==="index_status")return JSON.stringify(Pi(n,a),null,2);if(e==="graph")return zr(p().graph);if(e==="symbols"){let{symbols:g}=p(),h=ye(t.name);if(h){let _=Object.hasOwn(g.defs,h)?g.defs[h]:[],y=Object.hasOwn(g.refs,h)?g.refs[h]:[];return JSON.stringify({name:h,defs:t.concise===!0?_.map(b=>pr(b,h)):_,refs:y},null,2)}return JSON.stringify(t.concise===!0?nb(g):g,null,2)}if(e==="callers"){let g=ye(t.name);if(t.lsp===!0&&!g)throw new Error("callers with lsp:true requires `name` (or name@file)");let h=m();if(t.raw===!0){if(!g)throw new Error("callers with raw:true requires `name`");if(t.lsp===!0||t.recall===!0)throw new Error("callers raw:true takes neither lsp nor recall");if(t.withCaller===!0)throw new Error("callers raw:true already names each site's enclosing symbol: it takes no withCaller");return JSON.stringify(fl(h,g),null,2)}let _=t.recall===!0?Ur(h,void 0,{recall:!0}):$s(h),y=w=>t.withCaller===!0?eo(h,w):w;if(g){let w=Ot(h,g)?.reading,S=w?Xa(w):g,k=al(_,g),M=k&&y(k);if(M){let A=t.lsp===!0?await qs(h,n,S,M,s):M;return JSON.stringify(t.concise===!0?kf(A):A,null,2)}let N=ml(h,g,_);if(!N){let A=ur(h,g).length;throw new Error(`no symbol named "${g}" in the index`+(A?` (${A} call site(s) use the name; raw:true lists them)`:""))}return JSON.stringify(t.lsp===!0?await qs(h,n,S,N,s):N,null,2)}let b={};for(let[w,S]of _)b[w]=t.concise===!0?kf(y(S)):y(S);return JSON.stringify(b,null,2)}if(e==="workspaces"){let g=Fn(n),h=t.check===!0?yl(g,p().graph):void 0;return JSON.stringify(_l(g,h),null,2)}if(e==="churn"){let g=Qt(n,{since:ye(t.since)}),h={};for(let _ of[...g.churn.keys()].sort())h[_]=g.churn.get(_);return JSON.stringify({ok:g.ok,...mn(g),churn:h},null,2)}if(e==="symbols_overview"){let g=ye(t.file);if(!g)throw new Error("`file` is required");let h=m(),_=Qi(h,Of(h,n,g));return JSON.stringify(t.concise===!0?_.map(y=>pr(y,y.name)):_,null,2)}if(e==="find_symbol"){let g=ye(t.namePath);if(!g)throw new Error("`namePath` is required");let h=_n(m(),g,{substring:t.substring===!0,includeBody:t.includeBody===!0,concise:t.concise===!0,maxResults:Ue(t.maxResults)});return JSON.stringify(h,null,2)}if(e==="find_references"){let g=ye(t.name);if(!g)throw new Error("`name` is required");let h=m(),_=to(h,g),y=Ot(h,g)?.reading.name??g,b=t.lsp===!0?await ko(h,n,y,_,s):_;return JSON.stringify(t.concise===!0?Yl(b):b,null,2)}if(e==="symbol_at"){let g=ye(t.file),h=Pf(t.line);if(!g)throw new Error("`file` is required");if(h===void 0||!Number.isInteger(h)||h<1)throw new Error("`line` must be a positive integer");let _=m(),y=new Set(_.files.map(w=>w.rel)),b=ts(n,g,w=>y.has(w));if(b===void 0)throw new Error(`no such file in the index: ${g}`);return JSON.stringify(ul(_,b,h),null,2)}if(e==="lsp_status")return JSON.stringify(await So(m(),n,t.probe===!0,s),null,2);if(e==="replace_symbol_body"||e==="insert_after_symbol"||e==="insert_before_symbol"){let g=ye(t.namePath),h=typeof t.body=="string"?t.body:void 0;if(!g||h===void 0)throw new Error("`namePath` and `body` are required");let _=Ue(t.line);if(t.line!==void 0&&(_===void 0||!Number.isInteger(_)))throw new Error("`line` must be a 1-based line number");let y=m(),b=e==="replace_symbol_body"?Ou:e==="insert_after_symbol"?Nu:Pu,w=ye(t.file),S=b(y,g,h,w===void 0?void 0:Of(y,n,w),{line:_,strict:t.strict===!0});return ab(j(y.root,S.file)),JSON.stringify(S,null,2)}if(e==="write_memory"){let g=ye(t.name),h=typeof t.content=="string"?t.content:void 0;if(!g||h===void 0)throw new Error("`name` and `content` are required");return JSON.stringify({written:ro(n,g,h)},null,2)}if(e==="read_memory"){let g=ye(t.name);if(!g)throw new Error("`name` is required");let h=ju(n,g);if(h===void 0)throw new Error(`no memory named "${g}" \u2014 see list_memories`);return h}if(e==="list_memories")return JSON.stringify(Bu(n),null,2);if(e==="delete_memory"){let g=ye(t.name);if(!g)throw new Error("`name` is required");return JSON.stringify({deleted:Wu(n,g)},null,2)}if(e==="dead_code"){let g=Ro(m(),{kinds:t.kinds==="all"?"all":"callable",includeTail:t.includeTail===!0});return JSON.stringify(ql(g,mc(t.limit,"limit")),null,2)}if(e==="duplicated_literals"){let g=Nn(m(),{minFiles:Ue(t.minFiles),minCount:Ue(t.minCount),includeTests:t.includeTests===!0}),h=mc(t.limit,"limit");return h===void 0||g.duplications.length<=h?JSON.stringify(g,null,2):JSON.stringify({total:g.duplications.length,shown:h,truncated:!0,duplications:g.duplications.slice(0,h),families:g.families},null,2)}if(e==="complexity"){let g=m();if(t.risk===!0){let y=Qt(n,{since:ye(t.since)}),b=Zi(g,y.churn,Ue(t.top));return JSON.stringify({churnOk:y.ok,...mn(y),risks:b},null,2)}let h=ye(t.file),_=h===void 0?void 0:Of(g,n,h);return JSON.stringify(Xi(g,_,Ue(t.top)),null,2)}if(e==="mermaid"){let{graph:g}=p();return Mo(g,{module:ye(t.module),maxEdges:Ue(t.maxEdges)})}if(e==="onboard"){let g=m(),{graph:h}=p();return JSON.stringify(lf(g,h,{...Ue(t.budgetTokens)!==void 0?{budgetTokens:Ue(t.budgetTokens)}:{},...t.remember===!1?{remember:!1}:{}}),null,2)}if(e==="repo_map"){let{scan:g,graph:h}=p();return Xr(g,h,{budgetTokens:Ue(t.budgetTokens)})}if(e==="hotspots"){let g=m(),h=Qt(n,{since:ye(t.since)}),_=Zr(g,h.churn,Ue(t.limit));return JSON.stringify({churnOk:h.ok,...mn(h),hotspots:_},null,2)}if(e==="coupling"){let{graph:g}=p(),h=ho(n,{since:ye(t.since),graph:g,hidden:t.hidden===!0,minTogether:Ue(t.minTogether),maxCommitFiles:Ue(t.maxCommitFiles),maxPairs:Ue(t.limit)});return JSON.stringify({ok:h.ok,...mn(h),couplings:h.couplings},null,2)}if(e==="grep"){let g=ye(t.pattern);if(!g)throw new Error("`pattern` is required");let h=Ws(n,g,{globs:Zs(t.globs),scope:ye(t.scope),ignoreCase:t.ignoreCase===!0,maxHits:Ue(t.maxHits),filesWithMatches:t.filesWithMatches===!0,timeoutMs:Ue(t.timeoutMs)});if(t.withMeta===!0||h.timedOut){let{hits:_,truncated:y,filesMatched:b,timedOut:w,notes:S}=h;return JSON.stringify({hits:_,truncated:y,filesMatched:b,...w?{timedOut:w}:{},...S.length?{notes:S}:{}},null,2)}return JSON.stringify(h.hits,null,2)}if(e==="search"){let g=ye(t.query);if(!g)throw new Error("`query` is required");let h=mc(t.limit,"limit"),_=m(),y=typeof t.fuzzy=="boolean"?t.fuzzy:void 0,b=t.exact===!0?{exact:!0}:{},w={limit:h,fuzzy:y,...b,...c};if(t.semantic===!0){let M=({results:E,explain:x},v,P)=>JSON.stringify({results:E,tier:v,...P?{degradedReason:P}:{},...t.explain===!0?{explain:x}:{}},null,2),N=mr();if(N)try{let E=await Io({mode:"endpoint",identity:N,scan:_},v=>po(_,{previous:v})),x=await mo(g);return M(fr(_,g,E,{...w,queryVec:x}),"endpoint")}catch(E){return M(zt(_,g,w),"lexical",`embedding endpoint failed: ${Nf(E)}`)}let A=Ln(n),{model:R,error:$}=qr(A,To);if(R){let E=await Io({mode:"static",identity:`${A}#${R.modelId}`,scan:_},x=>Jr(_,R,{previous:x??ns(j(n,Ve,"embeddings.bin"))}));return M(fr(_,g,E,{...w,model:R}),"static")}return M(zt(_,g,w),"lexical",$?`static model unusable: ${$}`:"no embedding endpoint or static model configured \u2014 see embed_status")}let{results:S,explain:k}=zt(_,g,w);return JSON.stringify(t.explain===!0?{results:S,explain:k}:S,null,2)}if(e==="explain_search"){let g=ye(t.query);if(!g)throw new Error("`query` is required");let h=mc(t.limit,"limit"),_=m(),y=typeof t.fuzzy=="boolean"?t.fuzzy:void 0,{results:b,explain:w}=zt(_,g,{limit:h,fuzzy:y,...t.exact===!0?{exact:!0}:{},...c});return JSON.stringify({results:b,explain:w},null,2)}if(e==="embed_status"){let g=Ln(n),{model:h,error:_}=qr(g,To),y=mr(),w={embedVersion:Vt,mode:y?"endpoint":h?"static":"none",model:h?{present:!0,dir:g,modelId:h.modelId,dim:h.dim,vocabSize:h.vocabSize}:_?{present:!0,dir:g,error:_}:{present:!1},endpoint:y??null};return y&&(w.endpointReachable=await fo(y)),JSON.stringify(w,null,2)}if(e==="type_hierarchy"){let g=m(),h=Fs(g),_=ye(t.name);if(!_){let b={};for(let[w,S]of h)b[w]=S;return JSON.stringify(b,null,2)}let y=sr(h,_,Ot(g,_)?.defs);if(!y)throw new Ys(`no type named ${_}`);return JSON.stringify(y,null,2)}if(e==="implementations"){let g=ye(t.name);if(!g)throw new Error("`name` is required");let h=m(),_=Fs(h),y=Ot(h,g)?.defs;if(!sr(_,g,y))throw new Ys(`no type named ${g}`);return JSON.stringify({name:g,implementations:Ui(_,g,y)},null,2)}if(e==="call_graph"){let g=ye(t.symbol);if(!g)throw new Error("`symbol` is required");let h=ye(t.direction),_=h==="out"||h==="in"?h:"both",y=zi(Os(m()),g,{...Ue(t.depth)!==void 0?{depth:Ue(t.depth)}:{},direction:_});if(!y.root.length)throw new Ys(`no symbol named ${g}`);return JSON.stringify(y,null,2)}if(e==="call_path"){let g=ye(t.from),h=ye(t.to);if(!g||!h)throw new Error("`from` and `to` are required");let _={depth:Ue(t.depth),maxPaths:Ue(t.maxPaths)};if(t.files===!0){let{graph:b}=p(),w=new Set(b.files.map(M=>M.rel)),[S,k]=[g,h].map(M=>{let N=ts(n,M,A=>w.has(A));if(N===void 0)throw new Error(`no such file in the index: ${M}`);return N});return JSON.stringify(el(b,S,k,{..._,includeInferred:t.includeInferred===!0}),null,2)}if(t.includeInferred===!0)throw new Error("includeInferred applies to files: true only");let y=Za(Os(m()),g,h,_);if(!y.from.length)throw new Error(`no symbol named ${g}`);if(!y.to.length)throw new Error(`no symbol named ${h}`);return JSON.stringify(y,null,2)}if(e==="impact"||e==="neighbors"){let g=ye(t.target);if(!g)throw new Error("`target` is required");let h=Ue(t.depth),_;if(e==="neighbors"&&t.kinds!==void 0){let b=Zs(t.kinds)??[],w=b.filter(S=>!As.includes(S));if(!b.length||w.length)throw new Error(`\`kinds\` expects edge kinds among ${As.join("|")}, got ${JSON.stringify(w.length?w:t.kinds)}`);_=new Set(b)}let{graph:y}=p();for(let b of es(n,g)){let w=e==="impact"?qi(y,b,h??1/0,{includeInferred:t.includeInferred===!0}):Vi(y,b,h??1,_);if(w)return JSON.stringify(w,null,2)}throw new Error(`no such file or module in the index: ${g}`)}if(e==="check_rules"){let g=ye(t.configPath),h;if(t.rules!==void 0)h=Hl(t.rules);else if(g){let b=new Error(`cannot read rules config ${g}`),w;try{w=nt(Pe(g)?g:j(n,g))}catch{throw b}let S=nt(n);if(!w.startsWith(S.endsWith("/")?S:S+"/"))throw new Error(`rules config must be a file inside the repository: ${g}`);let k;try{k=le(w,"utf8")}catch{throw b}h=Ul(k,g)}else throw new Error("`rules` (or `configPath`) is required");let{scan:_,graph:y}=p();return JSON.stringify(zl(Eo(y,h,{scan:_})),null,2)}if(e==="delta"){let g=Vs(n,{base:ye(t.base),staged:t.staged===!0});if("error"in g)throw new Error(g.error);let h=Ue(t.depth),_=Co(g,h);if(g.files.length){let{scan:w,graph:S,symbols:k}=p();_=Js(g,S,k,{depth:h,scan:w})}if(ye(t.format)==="text")return Ao(_);let y=t.concise===!0?rb(_):_,b=Ue(t.limit);return b===void 0||y.modules.length<=b?JSON.stringify(y,null,2):JSON.stringify({...y,modules:y.modules.slice(0,b),totalModules:y.modules.length,truncated:!0},null,2)}if(e==="resolution_report")return JSON.stringify(Zl(m(),{lang:ye(t.lang),limit:Ue(t.limit)}),null,2);throw new Error(`unknown tool: ${e}`)}async function yb(e={}){let t={name:e.serverInfo?.name??"codeindex",version:e.serverInfo?.version??$e},n=jn[0],r=e.defaultRepo===void 0?void 0:ue(e.defaultRepo),o=Xs(r,n,e.profile),s=new Map(Xs(r).map(S=>[S.name,S.inputSchema])),a=e.watch&&r?db(r,S=>F.stderr.write(`codeindex: ${S} -`)):void 0,l=async S=>a&&S===r?a.walk():{walked:Ke(S,{}),reused:!1},c=new Gs,d=S=>{let k=Array.isArray(S)?S.map(M=>({jsonrpc:"2.0",...M})):{jsonrpc:"2.0",...S};F.stdout.write(JSON.stringify(k)+` -`)},u=Promise.resolve(),f=new Set,m=new Set,p=new Set,g=S=>{let k=S.finally(()=>p.delete(k));p.add(k)},h=Q_({input:F.stdin,terminal:!1});try{for await(let S of h){let k=S.trim();if(!k)continue;let M;try{M=JSON.parse(k)}catch{d({id:null,error:{code:-32700,message:"parse error"}});continue}if(Array.isArray(M)&&M.length===0){d({id:null,error:{code:-32600,message:"invalid request"}});continue}if(Array.isArray(M)){let N=M.map(_),A=R=>{let $=R.filter(E=>E!==void 0);$.length>0&&d($)};N.some(R=>R instanceof Promise)?g(Promise.all(N).then(A)):A(N)}else{let N=_(M);N instanceof Promise?g(N.then(A=>A?d(A):void 0)):N&&d(N)}}for(;p.size>0;)await Promise.all(p)}finally{a?.close(),await c.close()}function _(S){if(!$I(S))return TI(S)?y(S):{id:null,error:{code:-32600,message:"invalid request"}}}function y(S){let k=!("id"in S),M=N=>k?void 0:{id:S.id??null,...N};try{if(S.method==="initialize")return n=ac(S.params?.protocolVersion),o=Xs(r,n,e.profile),M({result:{protocolVersion:n,capabilities:{tools:{}},serverInfo:t,instructions:`Available tool profiles: ${is().join(", ")}. Active profile: ${e.profile??"all"}. Configure profiles with --tools . Profiles select advertised tools; known tools remain callable.`}});if(S.method==="ping")return M({result:{}});if(S.method==="tools/list")return M({result:{tools:o}});if(S.method==="tools/call")return b(S,M);if(S.method==="notifications/cancelled"){let N=S.params?.requestId;(typeof N=="string"||typeof N=="number")&&f.has(N)&&m.add(N);return}else return M({error:{code:-32601,message:`method not found: ${S.method}`}})}catch(N){return M({error:{code:-32603,message:Nf(N)}})}}function b(S,k){let M=S.params??{},N=M.arguments;if(typeof M.name!="string")return k({error:{code:-32602,message:"invalid params: tools/call requires a string `name`"}});if(N!=null&&(typeof N!="object"||Array.isArray(N)))return k({error:{code:-32602,message:"invalid params: tools/call `arguments` must be an object"}});let A=M.name,R=N??{},$=s.get(A),E=$?ic($,R):`unknown tool: ${A}`;if(E)return k({result:{content:[{type:"text",text:E}],isError:!0}});let x=n,v=typeof S.id=="string"||typeof S.id=="number"?S.id:void 0;v!==void 0&&f.add(v);let P=M._meta?.progressToken,O=0,L=typeof P=="string"||typeof P=="number"?Z=>{if(v!==void 0&&m.has(v))return;let ae=x>=gb?{message:Z}:{};d({method:"notifications/progress",params:{progressToken:P,progress:++O,...ae}})}:void 0,q=u.then(async()=>{if(!(v!==void 0&&m.has(v)))return k(await w(A,R,x,L))});return u=q.catch(()=>{}),q.then(Z=>v===void 0?Z:(f.delete(v),m.delete(v)?void 0:Z))}async function w(S,k,M,N){try{let A=OI(k,r),R=await NI(S,k,A,N,l,{pool:c,trustRepoConfig:e.trustLspConfig}),$=ye(k.scope)!==void 0||Zs(k.include)!==void 0||Zs(k.exclude)!==void 0||ye(k.name)!==void 0||k.concise===!0,E=e.maxResponseBytes??lc,x=O=>{let L=O!==R,q=L&&M>=No?cc(O,S):void 0,Z=M>=No?oc(O,L,ss[S]!==void 0):void 0;return{content:q?[{type:"text",text:O},q]:[{type:"text",text:O}],...Z?{structuredContent:Z}:{},...L?{isError:!0}:{}}},v=Po(R,S,A,E,!$),P=x(v);if(v===R){let O=W.byteLength(JSON.stringify(P),"utf8")+hb;O>E&&(P=x(Po(R,S,A,E,!$,O)))}return{result:P}}catch(A){return{result:{content:[{type:"text",text:A instanceof Ys?JSON.stringify({error:A.message},null,2):Nf(A)}],isError:!0}}}}}var Ys,FI,Lf=H(()=>{"use strict";I();ve();pe();eb();ht();wl();or();mt();ce();In();Dr();Hr();en();oo();yo();go();Vl();js();Ts();Jl();xf();Ps();Sf();jr();Or();Bl();Ef();cf();Ua();Lu();gl();Is();Gl();Xl();Vr();Kr();vf();tr();Rl();Al();Xe();ub();fc();dc();sc();fc();dc();sc();Ys=class extends Error{},FI=new Set(["workspaces","churn","grep","write_memory","read_memory","list_memories","delete_memory","embed_status","scan_summary","index_status"])});var Eb={};hc(Eb,{rewriteCommand:()=>kb,shellQuote:()=>os,tokenize:()=>PI});function wb(e){let t=[],n="",r=!1,o=!1;for(let s=0;s{"use strict";I();fe();tn();An();le();Ze();et();xt();Br();xn={exportedChange:25,hubHigh:20,hubMed:10,blastHigh:20,blastMed:10,testGap:20,surprise:10,dangling:15,brokenImport:40},LI=60,DI=30,jI=3,Yl=2});function mb(){throw new Error("readline is not available in the browser build (the MCP stdio transport is Node-only)")}var pb=z(()=>{I()});function GI(e,t,n){if(t==="doc-link")return n;if(HI.has(e)){if(/^[./]/.test(n))return n;let r=n.split("/");return n.startsWith("@")&&r.length>1?`${r[0]}/${r[1]}`:r[0]}if(e==="python")return n.startsWith(".")?n:n.split(".")[0];if(e==="go"){let r=n.split("/");return r[0].includes(".")?r.slice(0,3).join("/"):r[0]}return e==="rust"?n.split("::")[0]:e==="java"||e==="csharp"?n.split(".").slice(0,2).join("."):e==="php"?n.replace(/^\\+/,"").split("\\")[0]:n.split("/")[0]}function ec(e,t={}){let n=t.limit??zI,r=ln(e),o=new Map;for(let c of e.files){if(t.lang!==void 0&&c.lang!==t.lang)continue;let d=o.get(c.lang);d||(d={files:0,withRefs:0,row:{refs:0,resolved:0,external:0,dangling:0,unsupported:0},reasons:new Map,dangling:new Map,external:new Map,code:!1},o.set(c.lang,d)),d.files++,c.kind==="code"&&(d.code=!0),c.refs.length&&d.withRefs++;for(let u of c.refs){if(d.row.refs++,u.kind==="import"&&!Lh(c.ext)){d.row.unsupported++;continue}let f=u.kind==="doc-link"?nr(c.rel,u.spec,r):ct(c.rel,c.ext,u.spec,r);if(f.kind==="resolved")d.row.resolved++;else if(f.kind==="external"){d.row.external++;let m=GI(c.lang,u.kind,u.spec);d.external.set(m,(d.external.get(m)??0)+1)}else{d.row.dangling++,d.reasons.set(f.reason,(d.reasons.get(f.reason)??0)+1);let m=`${u.spec}\0${f.reason}`,p=d.dangling.get(m);p?(p.count++,$(c.rel,p.example)<0&&(p.example=c.rel)):d.dangling.set(m,{reason:f.reason,count:1,example:c.rel})}}}if(t.lang!==void 0&&!o.size){let c=Object.keys(e.languages).sort($).join(", ");throw new Error(`no indexed files in language "${t.lang}"${c?` \u2014 one of: ${c}`:""}`)}let s={refs:0,resolved:0,external:0,dangling:0,unsupported:0},a=[];for(let c of[...o.keys()].sort($)){let d=o.get(c);if(!d.code&&d.row.refs===0&&t.lang===void 0)continue;for(let h of Object.keys(s))s[h]+=d.row[h];let u={};for(let h of[...d.reasons.keys()].sort($))u[h]=d.reasons.get(h);let f=[...d.dangling.entries()].map(([h,_])=>({spec:h.slice(0,h.indexOf("\0")),reason:_.reason,count:_.count,example:_.example})).sort(gb(h=>h.count,h=>`${h.spec}\0${h.reason}`)).slice(0,n),m=[...d.external.entries()].map(([h,_])=>({name:h,count:_})).sort(gb(h=>h.count,h=>h.name)).slice(0,n),p={lang:c,files:d.files,filesWithRefs:d.withRefs,...d.row,danglingByReason:u,topDangling:f,topExternal:m},g=qI(p);g&&(p.note=g),a.push(p)}let l=[...new Set([...r.warnings,...On(e.root).warnings])].sort($);return{totals:s,languages:a,warnings:l}}function qI(e){let t=e.lang==="markdown"?"link":"import",n=(r,o)=>`${r} ${o}${r===1?"":"s"}`;if(e.refs===0)return`no ${t}s extracted from ${n(e.files,"file")} \u2014 this language gets no ${t} edges`;if(e.unsupported===e.refs)return`no import resolver for this language \u2014 its ${n(e.refs,"import")} never become edges`;if(e.resolved===0&&e.dangling===0)return`every ${t} is external \u2014 no in-repo ${t} edges for this language`;if(e.dangling>e.resolved)return t==="link"?"more links dangle than resolve \u2014 broken relative links in the docs":"more imports dangle than resolve \u2014 check path aliases and `warnings` before trusting impact or dead-code answers"}var zI,HI,gb,Tf=z(()=>{"use strict";I();An();gt();Gr();le();zI=10,HI=new Set(["typescript","javascript","vue","svelte","astro","html"]);gb=(e,t)=>(n,r)=>e(r)-e(n)||$(t(n),t(r))});function Wn(e,t){let n=(Ne(t)?De(e,t):t).replace(/\\/g,"/");for(;n.startsWith("./");)n=n.slice(2);return n!==t&&n!==""&&n!==".."&&!n.startsWith("../")?[t,n]:[t]}function ns(e,t,n){return Wn(e,t).find(n)}var tc=z(()=>{"use strict";I();fe()});function nc(e,t){if(!e.oversized?.length||!/^[A-Za-z_$][\w$]*$/.test(t))return[];let n=hb.get(e);n||hb.set(e,n=new Map);let r=n.get(t);if(r)return r;let o=new RegExp(`(?VI||mt(a.rel,un(a.rel).toLowerCase())!=="code")continue;let l;try{l=ie(j(e.root,a.rel),"utf8")}catch{continue}o.test(l)&&s.push({file:a.rel,size:a.size})}return n.set(t,s),s}function pr(e,t,n){let r=n.calls?e.files.filter(a=>a.callsCapped&&a.calls?.some(l=>l.name===t)).map(a=>a.rel):[],o=nc(e,t);if(!r.length&&!o.length)return;let s=[];return r.length&&s.push(`${r.length} file(s) reached the per-file call-site cap, so some of their calls are missing; re-index with a higher --max-calls`),o.length&&s.push(yb(o,`name "${t}"`)),{...r.length?{callCapped:r}:{},...o.length?{notIndexed:o}:{},hint:s.join("; ")}}function yb(e,t){let n=Math.max(...e.map(r=>r.size));return`${e.length} file(s) over --max-bytes ${t} but are not indexed (${e.map(r=>r.file).join(", ")}); re-index with --max-bytes ${n}`}function rc(e,t){let n=nc(e,t);return n.length?` \u2014 ${yb(n,`name "${t}"`)}`:""}function rs(e,t,n){let r=Wn(t,n),o=e.oversized?.find(s=>r.includes(s.rel));return o?`not in the index: ${o.rel} is ${o.size} bytes, over --max-bytes (default 1 MiB); re-index with --max-bytes ${o.size} to include it`:void 0}var VI,hb,$f=z(()=>{"use strict";I();Ee();fe();Mn();tc();VI=32*1024*1024,hb=new WeakMap});function gr(e,t){return{name:t,kind:e.kind,file:e.file,line:e.line,...e.parent?{parent:e.parent}:{}}}function Ff(e){return{...e,def:gr(e.def,e.def.name)}}function sc(e){return{...e,defs:e.defs.map(t=>gr(t,t.name))}}function _b(e){return{...e,defs:Object.fromEntries(Object.entries(e.defs).map(([t,n])=>[t,n.map(r=>gr(r,t))]))}}function bb(e){return{...e,changes:e.changes.map(t=>({path:t.path,status:t.status,...t.oldPath!==void 0?{oldPath:t.oldPath}:{},...t.module!==void 0?{module:t.module}:{},symbols:t.symbols.map(n=>({name:n.name,kind:n.kind,line:n.line}))}))}}var Of=z(()=>{"use strict";I()});function ss(e){try{return hf(ie(e))}catch{return}}function wb(e,t){let n=`${e}.${O.pid}.tmp`;try{return Zt(Me(e),{recursive:!0}),ot(n,t),En(n,e),!0}catch{return Ke(n,{force:!0}),!1}}var Nf=z(()=>{"use strict";I();Ee();fe();Zr()});function Df(e){return Re(e.files.map(t=>`${t.rel}:${t.hash}`).join(` +`))}async function Fo(e,t){let n=`${e.mode}:${e.identity}`,r=`${n}:${Df(e.scan)}`;if(Ys&&Ys.key===r)return Ys.index;let o=await t(Ys?.tier===n?Ys.index:void 0);return Ys={key:r,tier:n,index:o},o}function Oo(e){let t;try{t=Ae(j(e,"model.json"))}catch{return}let n=`${e}:${t.mtimeMs}:${t.size}`;if(ic&&ic.key===n)return ic.model;let r=Hs(e);return r&&(ic={key:n,model:r}),r}function oc(e,t){e.scan.commit!==t&&(e.scan.commit=t,e.arts=void 0,e.loadArtifacts=void 0)}function Pf(e){let t=Kt.findIndex(r=>r.key===e);if(t<0)return;let[n]=Kt.splice(t,1);return Kt.unshift(n),n}function hr(e){let t=Kt.findIndex(n=>n.key===e.key);return t>=0&&Kt.splice(t,1),Kt.unshift(e),Kt.length=Math.min(Kt.length,JI),e}function kb(e){let t=xb(e);for(let n of Kt){let r=new Set([Sb(n.scan.root,e),Sb(xb(n.scan.root),t)]);for(let o of r){let s=o===void 0?void 0:n.cacheMap.get(o);s&&(Lf(n.cacheMap,o,s),n.walked=void 0)}}}function Lf(e,t,n){e.set(t,{hash:n.hash,record:n.record})}function xb(e){try{return st(e)}catch{return e}}function Sb(e,t){let n=De(e,t);if(!(!n||n===".."||n.startsWith("../")||Ne(n)))return n.split("/").join("/")}function No(e,t){let n=e+"\0";for(let r of Kt)if(r.key.startsWith(n))if(r.walked=void 0,t===void 0)for(let[o,s]of r.cacheMap)Lf(r.cacheMap,o,s);else{let o=r.cacheMap.get(t);o&&Lf(r.cacheMap,t,o)}}function Eb(e,t){return e+"\0"+JSON.stringify({scope:t.scope,include:t.include,exclude:t.exclude,gitignore:t.gitignore,ignoreDirs:t.ignoreDirs,maxBytes:t.maxBytes,maxFiles:t.maxFiles,maxCallsPerFile:t.maxCallsPerFile,out:t.out,fullHash:t.fullHash})}function Po(e,t={},n){let r=Eb(e,t),o=Pf(r);if(o){if(n&&o.walked===n)return oc(o,Qt(e)),o.scan;let l=vt(e,{...t,cache:o.cacheMap,precomputedWalk:n});return l.contentUnchanged?(l.cacheDirty&&(o.cacheMap=Rt(l)),oc(o,l.commit),o.walked=n,o.scan):(hr({key:r,scan:l,cacheMap:Rt(l),walked:n}),l)}let s=Yd(e,{...t,precomputedWalk:n});if(s)return hr({key:r,scan:s.scan,cacheMap:s.cacheMap,arts:s.arts,walked:n}),s.scan;let a=vt(e,{...t,precomputedWalk:n});return hr({key:r,scan:a,cacheMap:Rt(a),walked:n}),a}async function ac(e,t={},n,r=async()=>{}){let o=Eb(e,t),s=Kt.find(c=>c.key===o);if(s){if(n&&s.walked===n)return oc(s,Qt(e)),Pf(o),s.scan;let c=s.cacheMap,d=m=>(m.cacheDirty&&(s.cacheMap=Rt(m)),oc(s,m.commit),s.walked=n,Pf(o),s.scan);if(n&&Xd(n,c,t.fullHash)){await r();let m=await yn(e,{...t,cache:c,precomputedWalk:n});return m.contentUnchanged?d(m):(hr({key:o,scan:m,cacheMap:Rt(m),walked:n}),m)}let u=vt(e,{...t,cache:c,precomputedWalk:n});if(u.contentUnchanged)return d(u);if(n)return hr({key:o,scan:u,cacheMap:Rt(u),walked:n}),u;await r();let f=await yn(e,{...t,cache:c,precomputedWalk:n});return hr({key:o,scan:f,cacheMap:Rt(f)}),f}let a=await Ha(e,{...t,precomputedWalk:n},r);if(a)return hr({key:o,scan:a.scan,cacheMap:a.cacheMap,arts:a.arts,loadArtifacts:a.loadArtifacts,walked:n}),a.scan;await r();let l=await yn(e,{...t,precomputedWalk:n});return hr({key:o,scan:l,cacheMap:Rt(l),walked:n}),l}function lc(e,t={},n){return Ti(e,{...t,precomputedWalk:n})}function cc(e,t={},n,r){let o=r??Po(e,t,n),s=Kt.find(a=>a.scan===o);return s?s.arts??=s.loadArtifacts?.()??Ln(o,t):Ln(o,t)}async function vb(e){await Lo(Xe(e,{}))}async function Lo(e){await on(Bt(e.files.map(t=>t.ext)))}var Ys,ic,JI,Kt,dc=z(()=>{"use strict";I();Ee();fe();vl();Ut();Pi();tr();Ze();pt();Kr();Zr();xt();tn();JI=4,Kt=[]});function Rb(e,t,n=KI){return O.platform==="linux"?new jf(e,t,n):ZI(e,t)}function ZI(e,t){let n;try{n=Xo(e,{recursive:!0},(r,o)=>{let s=o?.toString().replaceAll("\\","/")??"";s.split("/").some(l=>vn.has(l)||l.startsWith(".codeindex-edit-"))||No(e,s||void 0)}),n.on("error",r=>{t(`MCP watcher disabled (${r.message}); using freshness scans`),n?.close(),n=void 0,No(e)})}catch(r){t(`MCP watcher unavailable (${r instanceof Error?r.message:String(r)}); using freshness scans`)}return{walk:async()=>({walked:Xe(e,{}),reused:!1}),close:()=>n?.close()}}var KI,XI,jf,Cb=z(()=>{"use strict";I();Ee();_i();fe();Ze();dc();KI=8192,XI=2e3;jf=class{constructor(t,n,r){this.repo=t;this.warn=n;this.maxDirs=r}repo;warn;maxDirs;dirs=new Map;events=0;proof;barrier;disabled=!1;async walk(){if(this.disabled)return{walked:Xe(this.repo,{}),reused:!1};let t=await this.sync();if(t!==void 0&&this.proof?.events===t)return{walked:this.proof.walked,reused:!0};this.proof=void 0;let n=this.walkAndWatch();return t!==void 0&&!this.disabled&&(this.proof={events:t,walked:n}),{walked:n,reused:!1}}close(){for(let t of this.dirs.values())t.close();this.dirs.clear(),this.proof=void 0,this.barrier&&(this.barrier.watcher.close(),Ke(this.barrier.dir,{recursive:!0,force:!0})),this.barrier=null}sync(){this.barrier===void 0&&(this.barrier=this.openBarrier());let t=this.barrier;if(!t)return Promise.resolve(void 0);let n=`barrier-${++t.seq}`,r=j(t.dir,n);return new Promise(o=>{let s=l=>{clearTimeout(a),t.waiting=void 0,Ke(r,{force:!0}),o(l)},a=setTimeout(()=>s(void 0),XI);t.waiting={name:n,done:()=>s(this.events)};try{ot(r,"")}catch{s(void 0)}})}openBarrier(){let t;try{t=br(j(Lp(),"codeindex-watch-"));let n={dir:t,seq:0,watcher:Xo(t,(r,o)=>{n.waiting&&o?.toString()===n.waiting.name&&n.waiting.done()})};return n.watcher.on("error",()=>{}),n}catch(n){return t&&Ke(t,{recursive:!0,force:!0}),this.disable(n instanceof Error?n.message:String(n)),null}}walkAndWatch(){let t=new Set([""]);this.add("");let n=Xe(this.repo,{filter:o=>(o.directory&&(t.add(o.rel),this.add(o.rel)),!0)}),r=".git/info";ne(j(this.repo,r))&&Ae(j(this.repo,r)).isDirectory()&&(t.add(r),this.add(r));for(let[o,s]of this.dirs)t.has(o)||(s.close(),this.dirs.delete(o));return n}add(t){if(!(this.disabled||this.dirs.has(t))){if(this.dirs.size>=this.maxDirs){this.disable(`more than ${this.maxDirs} directories to watch`);return}try{let n=Xo(t?j(this.repo,t):this.repo,(r,o)=>this.onEvent(t,r,o));n.on("error",()=>{this.events++,this.forget(t)}),this.dirs.set(t,n)}catch(n){let r=n.code;if(r==="ENOENT"||r==="ENOTDIR"||r==="EACCES")return;this.disable(n instanceof Error?n.message:String(n))}}}onEvent(t,n,r){this.events++;let o=r?.toString();if(!o){No(this.repo);return}let s=t?`${t}/${o}`:o;n==="rename"&&this.forget(s),No(this.repo,s)}forget(t){let n=this.dirs.get(t);if(!n)return;n.close(),this.dirs.delete(t);let r=t?t+"/":"";for(let[o,s]of this.dirs)r&&!o.startsWith(r)||(s.close(),this.dirs.delete(o))}disable(t){this.disabled||(this.disabled=!0,this.warn(`MCP watcher disabled (${t}); using freshness scans`),this.close())}}});function uc(e,t){let n=e.properties??{};for(let r of e.required??[]){if(t[r]!==void 0&&t[r]!==null)continue;let o=n[r]?.description;return o?`\`${r}\` is required (${o})`:`\`${r}\` is required`}for(let[r,o]of Object.entries(t)){if(o==null)continue;let s=n[r];if(!s?.type)continue;let a=Array.isArray(o)?"array":typeof o;if(s.type==="number"||s.type==="integer"){let l=a==="number"?o:a==="string"&&o.trim()!==""?Number(o):NaN;if(!Number.isFinite(l))return`\`${r}\` must be a number, got ${a==="string"?JSON.stringify(o):a}`;if(s.type==="integer"&&!Number.isInteger(l))return`\`${r}\` must be a whole number, got ${l}`;if(s.minimum!==void 0&&ls.maximum)return`\`${r}\` must be at most ${s.maximum}`;continue}if(s.type==="array"){let l=s.items?.type==="string",c=l?"an array of strings":"an array";if(a!=="array")return`\`${r}\` must be ${c}, got ${a}`;if(l&&!o.every(d=>typeof d=="string"))return`\`${r}\` must be ${c}`;continue}if(a!==s.type)return`\`${r}\` must be a ${s.type}, got ${a}`;if(s.enum&&!s.enum.includes(o))return`\`${r}\` must be one of ${s.enum.map(l=>JSON.stringify(l)).join(", ")}, got ${JSON.stringify(o)}`}}function fc(e,t,n){if(t||!n)return;let r;try{r=JSON.parse(e)}catch{return}if(!(r===null||typeof r!="object"||Array.isArray(r)))return r}function mc(e){return typeof e=="string"&&Bn.includes(e)?e:YI}function QI(e,t,n){let r;try{r=Ae(e).size}catch{return"absent"}if(r!==n&&r!==n+1)return"stale";try{let o=ie(e,"utf8");return o===t||o===t+` +`?"identical":"stale"}catch{return"absent"}}function Ab(e){return/^[A-Za-z0-9_\-./=@:]+$/.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'"}function jo(e,t,n,r,o=!0,s){let a=W.byteLength(e,"utf8"),l=s??a;if(l<=r)return e;let c=o&&Object.hasOwn(Wf,t)?Wf[t]:void 0,d=c?j(n,Je,c):void 0,u=d?QI(d,e,a):void 0,f=`codeindex index --repo ${Ab(n)} --out ${Ab(j(n,Je))}`;return JSON.stringify({truncated:!0,tool:t,bytes:l,maxBytes:r,reason:"This response exceeds the configured limit and was withheld rather than sent as an unusable partial payload.",narrower:Object.hasOwn(Mb,t)?Mb[t]:"narrow the request with the arguments this tool's inputSchema offers",...u==="identical"?{artifact:d,artifactNote:"The full result is on disk here, byte-for-byte what this call would have returned \u2014 read it directly if you need all of it."}:u==="stale"?{artifactNote:`The artifact at ${d} does not match this answer (the repository changed since it was written, or it was indexed with other options). Run \`${f}\` to refresh it, then read it.`}:u==="absent"?{artifactNote:`Run \`${f}\` to get this as a file.`}:{}},null,2)+` +`}function gc(e,t){let n=Wf[t];if(!n)return;let r;try{r=JSON.parse(e)}catch{return}if(!(r.truncated!==!0||typeof r.artifact!="string"))return{type:"resource_link",uri:Cr(r.artifact).href,name:n,description:`The full ${t} result this call was too large to inline.`,mimeType:"application/json"}}var Bn,YI,Ib,Do,Tb,pc,Mb,Wf,$b,hc=z(()=>{"use strict";I();Ee();fe();bi();tr();Bn=["2024-11-05","2025-03-26","2025-06-18","2025-11-25"],YI=Bn[Bn.length-1],Ib="2025-03-26",Do="2025-06-18",Tb="2025-03-26";pc=1e6,Mb={graph:"pass `scope` to a subdirectory (or `include`/`exclude` globs), or use repo_map / mermaid for an overview",symbols:"pass `name` to look up one symbol, or `concise` for locations only; find_symbol / symbols_overview answer narrower questions",callers:"pass `name` to look up one symbol's call sites, or `concise` for locations only",dead_code:"pass a `limit`, or `scope` to a subdirectory",duplicated_literals:"pass a `limit`, raise `minFiles`/`minCount`, or pass `scope` to a subdirectory",find_references:"the symbol is referenced very widely \u2014 pass `concise`, or ask callers for the call sites alone",find_symbol:"lower `maxResults`, or drop `includeBody`/pass `concise`",symbols_overview:"the file declares a great many symbols \u2014 pass `concise`",grep:"lower `maxHits`, or restrict with `globs` or `scope`",search:"lower `limit`, or pass `scope` to a subdirectory",explain_search:"lower `limit`, or pass `scope` to a subdirectory",complexity:"lower `top`, or pass one `file`",call_graph:"lower `depth`, or follow one `direction`",type_hierarchy:"pass `name` to look up one type",mermaid:"lower `maxEdges`, or focus on one `module`",repo_map:"lower `budgetTokens`",onboard:"lower `budgetTokens`",hotspots:"pass `since` to count recent history only",churn:"pass `since` to count recent history only",coupling:"pass `since` to mine recent history only",check_rules:"narrow the rule set, or pass `scope` to a subdirectory",delta:'pass `concise` (drops the hunks), a `limit` on modules, or `format` "text" for the panel'},Wf={graph:"graph.json",symbols:"symbols.json"};$b=96});function zf(e){let t=Uo[e];if(t)return{readOnlyHint:!t.write,...t.write?{destructiveHint:t.destructive===!0,idempotentHint:t.idempotent===!0}:{},openWorldHint:t.openWorld===!0}}function as(){return["all",...Object.keys(zo).sort()]}function Ho(e){let t=e.split(",").map(r=>r.trim()).filter(Boolean),n=new Set;for(let r of t){if(r==="all")return new Set(Bo.map(s=>s.name));let o=Object.hasOwn(zo,r)?zo[r]:void 0;if(!o)throw new Error(`unknown tool profile "${r}" \u2014 one of: ${as().join(", ")}`);for(let s of o)n.add(s)}return n}function Qs(e,t=Bn[0],n){let r=t>=Ib,o=t>=Do,s=n?Ho(n):void 0,a=s?Bo.filter(l=>s.has(l.name)):Bo;return!e&&!r&&!o?a:a.map(l=>({...l,...o&&Uo[l.name]?{title:Uo[l.name].title}:{},...o&&os[l.name]?{outputSchema:os[l.name]}:{},...r?{annotations:zf(l.name)}:{},inputSchema:e?{...l.inputSchema,properties:{...l.inputSchema.properties,repo:{type:"string",description:`Absolute path to the repository root (optional \u2014 defaults to ${e})`}},required:l.inputSchema.required.filter(c=>c!=="repo")}:l.inputSchema}))}var pe,is,yc,Wo,Bf,Un,Bo,Pt,ye,Uf,os,Uo,zo,_c=z(()=>{"use strict";I();hc();pe={repo:{type:"string",description:"Absolute path to the repository root"}},is="name, name@file, file#name, file#Parent/name (a call_graph id) or Parent/name",yc={type:"string",description:'Only count commits after this ref (tag, branch, sha) or since this date ("2024-01-01", "6 months ago"); anything else is an error'},Wo={concise:{type:"boolean",description:"Return declaration locations (name/kind/file/line, plus parent for a member) without full symbol metadata. Keeps every result, reference tier and confidence label (default false)."}},Bf={file:{type:"string",description:"Disambiguate: repo-relative file containing the symbol"},line:{type:"number",minimum:1,description:"Disambiguate same-file homonyms: the declaration's first line, or any line inside it"},strict:{type:"boolean",description:"Refuse the edit (nothing written) when the post-edit check reports warnings (default false)"}},Un={scope:{type:"string",description:"Restrict to one directory or file (repo-relative); ANDed with include/exclude"},include:{type:"array",items:{type:"string"},description:"Include globs, rooted at the repo: '*.ts' is top-level only, '**/*.ts' any depth"},exclude:{type:"array",items:{type:"string"},description:"Exclude globs (rooted, like include)"}},Bo=[{name:"scan_summary",description:"Deterministically scan a repository: file count, per-language file histogram, HEAD commit, and whether the walk was capped. Fast first look at any codebase.",inputSchema:{type:"object",properties:{...pe,...Un},required:["repo"]}},{name:"graph",description:"Build the full typed cross-file link-graph (import/call/use/doc-link/mention edges, module grouping, PageRank centrality, Louvain communities, tests-map). Returns graph.json. Large on big repos \u2014 prefer scan_summary/symbols/callers for targeted questions.",inputSchema:{type:"object",properties:{...pe,...Un},required:["repo"]}},{name:"symbols",description:"Where is a symbol defined and which files reference it? Returns the definition sites (file, line, kind, exported) and referencing files. Omit `name` for the full symbol index.",inputSchema:{type:"object",properties:{...pe,...Wo,name:{type:"string",description:"Symbol name to look up"}},required:["repo"]}},{name:"callers",description:"Who calls a function? Per-symbol caller index: each defined symbol with the exact (file, line) call sites that bind to it. Omit `name` for the full index. An unknown symbol is an error; a known one no site binds to answers with its defs and how many call sites name it anyway (`unresolvedSites`, `sample`).",inputSchema:{type:"object",properties:{...pe,...Wo,name:{type:"string",description:is},lsp:{type:"boolean",description:"Append incoming calls from configured language servers and agreement with static callers. Requires name; name@file disambiguates. Unsupported servers and failures keep the static answer with a stated reason (default false)."},recall:{type:"boolean",description:"Recall-oriented binding: add the name-only matches precision mode rejects (a unique JS/TS name with no import, a same-file homonym whatever the receiver, a proximity guess in Go or into tests), labelling each site corroborated|unique-name (default false = precision)"},raw:{type:"boolean",description:"Every call site of `name` as written, before any binding: {name, sites:[{file, line, receiver?, enclosingSymbol?}]}. Requires name (default false)"},withCaller:{type:"boolean",description:"Add `caller` to each site: the symbol id of the declaration the call sits in (a call_graph node id), so the answer names functions, not just lines (default false)"}},required:["repo"]}},{name:"workspaces",description:"Detect monorepo packages (npm/pnpm/yarn/lerna/nx/cargo/go modules/maven/gradle/uv/composer) with the workspace dependency graph, one cycle if present, a topological build order, and warnings for malformed manifests. `check: true` also compares each package's declared sibling dependencies with the imports it really makes: `undeclared` (imported, not declared \u2014 breaks isolated installs and publishing) and `unusedDeclared` (declared, never imported).",inputSchema:{type:"object",properties:{...pe,check:{type:"boolean",description:"Compare declared workspace dependencies with resolved cross-package imports (builds the link-graph; default false)"}},required:["repo"]}},{name:"churn",description:"Per-file git commit counts (whole history, or a since window) \u2014 the churn half of hotspot analysis. Paths are relative to repo; `shallow: true` means a shallow clone (counts are lower bounds), `error` says why `ok` is false.",inputSchema:{type:"object",properties:{...pe,since:yc},required:["repo"]}},{name:"symbols_overview",description:"All symbols declared in ONE file (name, kind, line span, exported, parent), in declaration order \u2014 the fastest way to understand a file without reading it.",inputSchema:{type:"object",properties:{...pe,...Wo,file:{type:"string",description:"Repo-relative file path"}},required:["repo","file"]}},{name:"find_symbol",description:`Find symbol declarations by name or name path ('Class/method' matches a method inside Class). Each match carries its COMPLETE SIGNATURE (parameters and return type) by default, because "what shape is it" is the question that follows "where is it" almost every time and one round trip beats two. Options: substring matching, includeBody for the declaration's source, concise to drop everything but name/kind/file/line (and a member's parent) when you genuinely only want a location. Exact-name matches rank first.`,inputSchema:{type:"object",properties:{...pe,namePath:{type:"string",description:"Symbol name or Parent/child path"},substring:{type:"boolean"},includeBody:{type:"boolean"},concise:{type:"boolean",description:"Return only name/kind/file/line (plus parent for a member) \u2014 drop the signature, line span, visibility and language. Roughly 2.5x smaller; use it when you are resolving a path and nothing more (default false)."},maxResults:{type:"integer",minimum:1,description:"Cap matches (default 50)"}},required:["repo","namePath"]}},{name:"find_references",description:"Who references a symbol? Three labeled tiers: defs (declarations), callSites (line-precise, import-corroborated call bindings), referencingFiles (file-level identifier/doc mentions \u2014 may include homonyms). Confidence decreases across tiers; the labels let you decide what to trust.",inputSchema:{type:"object",properties:{...pe,name:{type:"string",description:`${is}; a bare name covers every homonym`},...Wo,lsp:{type:"boolean",description:"Also ask a configured language server (see lsp_status) and append an `lsp` block: its references plus an `agreement` matrix (both / lspOnly / staticOnly). The three static tiers are unchanged either way. `staticOnly` can indicate homonyms or an incomplete language-server answer; `partial: true` flags a declaration-only answer while static uses exist. Servers stay up for the session. No config, no binary, a crash or a timeout all degrade to the static answer with a stated reason (default false)."}},required:["repo","name"]}},{name:"symbol_at",description:"Which symbol is at file:line? The innermost declaration holding the line (full metadata plus its symbol `id`, the form callers/call_graph/call_path read) and the declarations around it, outermost first. Turns a grep hit, a stack frame or a diagnostic into something the navigation tools accept. `symbol` is null outside every declaration; `approximate: true` means the declaration has no recorded end line (regex tier), so it is only the nearest declaration above.",inputSchema:{type:"object",properties:{...pe,file:{type:"string",description:"Repo-relative file path"},line:{type:"number",minimum:1,description:"1-based line number"}},required:["repo","file","line"]}},{name:"lsp_status",description:"Is the optional LSP tier configured, and would it answer? Reports the config path and its source, each server with whether its command is on PATH and how many files in this repo it claims, and the languages no server covers. Opt-in by asset: the tier is active only when CODEINDEX_LSP_CONFIG points at a config or ~/.config/codeindex/lsp.json exists; the repo's own /.codeindex/lsp.json names commands to run, so it is read only when the server was started with --trust-lsp-config (or CODEINDEX_TRUST_LSP_CONFIG=1), and is reported as `ignoredConfig` otherwise. `probe: true` additionally starts each server to read the capabilities it really advertises. The tier never touches graph.json/symbols.json \u2014 it annotates query answers only.",inputSchema:{type:"object",properties:{...pe,probe:{type:"boolean",description:"Start each server and read its real capabilities (default false: no spawn)"}},required:["repo"]}},{name:"onboard",description:"One call that says what this repository IS: its own tagline, size and language mix, monorepo layout when there is one, a token-budgeted map of the highest-PageRank files with their key signatures, and where git says work concentrates. Composes scan_summary + workspaces + repo_map + hotspots so the first four round trips of a session become one, and persists the result as the `onboarding` memory (read_memory) so the next session does not repeat them. Set remember:false to skip the write.",inputSchema:{type:"object",properties:{...pe,budgetTokens:{type:"integer",minimum:1,description:"Token budget for the key-files section (default 900)"},remember:{type:"boolean",description:"Persist the brief as the `onboarding` memory (default true)"}},required:["repo"]}},{name:"repo_map",description:"Token-budgeted map of the repository: the most central production files (PageRank over the edges production code creates; tests left out) with their public types, functions and methods first, deterministically rendered to fit `budgetTokens` (default 1024). The densest single read to understand an unfamiliar codebase.",inputSchema:{type:"object",properties:{...pe,budgetTokens:{type:"integer",minimum:1,description:"Approximate token budget (default 1024)"}},required:["repo"]}},{name:"hotspots",description:"Where does work concentrate? Files changed in the window, ranked by git churn \xD7 size (commits \xD7 log2 lines); test files carry `test: true`. High-scoring files are where changes and defects cluster.",inputSchema:{type:"object",properties:{...pe,since:yc,limit:{type:"integer",minimum:1,description:"Max files (default 20)"}},required:["repo"]}},{name:"coupling",description:"Change coupling: pairs of indexed files that repeatedly change in the same commits. strength 1.0 = every change to one touched the other; ranked by `confidence` (the strength a pair's history supports); `linked: false` = no graph edge joins them \u2014 a hidden dependency.",inputSchema:{type:"object",properties:{...pe,since:yc,hidden:{type:"boolean",description:"Only pairs no graph edge links (default false)"},minTogether:{type:"integer",minimum:1,description:"Commits a pair must share (default 3)"},maxCommitFiles:{type:"integer",minimum:1,description:"Skip commits touching more files, as mass refactors (default 30)"},limit:{type:"integer",minimum:1,description:"Max pairs (default 100)"}},required:["repo"]}},{name:"replace_symbol_body",description:"WRITE: replace a symbol's whole declaration with `body` (verbatim, supply full indentation). The symbol is resolved by name path ('Class/method'); ambiguity errors list the candidates \u2014 qualify with `file`, and `line` for same-file homonyms (getter/setter, overloads). Line spans come from the AST index; a regex-tier symbol whose end cannot be proven is refused. The doc comment above the declaration is kept. The edited file is re-extracted before writing: `warnings` reports declarations changed outside the edit and new syntax errors, and `strict` refuses such an edit.",inputSchema:{type:"object",properties:{...pe,namePath:{type:"string"},body:{type:"string"},...Bf},required:["repo","namePath","body"]}},{name:"insert_after_symbol",description:"WRITE: insert `body` after a symbol's declaration (blank-line separation preserved for definition-like kinds). Resolved and verified like replace_symbol_body.",inputSchema:{type:"object",properties:{...pe,namePath:{type:"string"},body:{type:"string"},...Bf},required:["repo","namePath","body"]}},{name:"insert_before_symbol",description:"WRITE: insert `body` before a symbol, above its decorators/attributes and attached doc comment (blank-line separation preserved). Resolved and verified like replace_symbol_body.",inputSchema:{type:"object",properties:{...pe,namePath:{type:"string"},body:{type:"string"},...Bf},required:["repo","namePath","body"]}},{name:"write_memory",description:"Persist a named markdown note under /.codeindex/memories/ (names may use topic/name form). Write small, focused notes: project map, build commands, conventions.",inputSchema:{type:"object",properties:{...pe,name:{type:"string"},content:{type:"string"}},required:["repo","name","content"]}},{name:"read_memory",description:"Read one persisted memory by name.",inputSchema:{type:"object",properties:{...pe,name:{type:"string"}},required:["repo","name"]}},{name:"list_memories",description:"List persisted memory names \u2014 load this first, then read individual memories on relevance.",inputSchema:{type:"object",properties:{...pe},required:["repo"]}},{name:"delete_memory",description:"Delete one persisted memory by name.",inputSchema:{type:"object",properties:{...pe,name:{type:"string"}},required:["repo","name"]}},{name:"dead_code",description:"Dead-code candidates in two labeled tiers: 'unreferenced' (no call site binds AND no other file names it) and 'uncalled' (named elsewhere \u2014 import, type position, base-class list, a same-name call site \u2014 but no call binds). Exported callables only unless `kinds: \"all\"`; test and tail files (examples, docs, fixtures, scripts \u2014 `includeTail` to include them), the package's public API (manifest entry points and what they re-export), language protocol names and overrides of live methods are never candidates. On a large repo this list runs to thousands of entries \u2014 pass `limit`, or `scope` to one subdirectory.",inputSchema:{type:"object",properties:{...pe,...Un,limit:{type:"integer",minimum:1,description:"Cap entries (default: all)"},kinds:{type:"string",enum:["callable","all"],description:"Candidate kinds (default callable; all adds types, properties and constants, unreferenced only)"},includeTail:{type:"boolean",description:"Also report examples, docs, fixtures and scripts"}},required:["repo"]}},{name:"duplicated_literals",description:"Values with no single source of truth: one literal written out across many files. Three labeled tiers \u2014 'competing' (two or more exported constants hold the same value), 'bypassed' (a constant holds it and other files rewrite it anyway), 'uncentralized' (nothing holds it). Path-like values are also grouped into namespace families, so a whole route space reports once instead of once per route. Covers config files (JSON/YAML/TOML) as well as code, which is where the dangerous cases live: a threshold declared in TypeScript and again in a rules JSON is checked by no compiler. Use it to answer 'what breaks if this value changes' and 'is there already a helper for this'.",inputSchema:{type:"object",properties:{...pe,...Un,minFiles:{type:"integer",minimum:1,description:"Distinct files a value must span (default 2)"},minCount:{type:"integer",minimum:1,description:"Total occurrences required (default 3)"},includeTests:{type:"boolean",description:"Count test files too (default false)"},limit:{type:"integer",minimum:1,description:"Cap duplications (default: all)"}},required:["repo"]}},{name:"complexity",description:"Cyclomatic-complexity estimates (branch-token counting over AST line spans, comments and string literals aside), most-complex first; functions and methods only \u2014 containers are not ranked, and nested functions score on their own. Pass `file` for one file's symbols, omit for the repo-wide top. Combine with hotspots: the `risk` field of this tool's sibling ranks complexity \xD7 churn.",inputSchema:{type:"object",properties:{...pe,file:{type:"string"},risk:{type:"boolean",description:"Return complexity \xD7 git-churn risk ranking instead"},since:{...yc,description:"Only count risk churn after this ref (tag, branch, sha) or since this date"},top:{type:"integer",minimum:1,description:"Cap ranked symbols"}},required:["repo"]}},{name:"mermaid",description:"Mermaid diagram of the module graph (renders inline in Claude/GitHub \u2014 no graph database). Optionally scoped to one module's neighborhood.",inputSchema:{type:"object",properties:{...pe,module:{type:"string",description:"Module slug to focus on"},maxEdges:{type:"integer",minimum:1,description:"Cap rendered edges"}},required:["repo"]}},{name:"grep",description:"Search file contents with a JavaScript regular expression (ripgrep when available, a deterministic JS scan otherwise \u2014 same results either way). Returns hits sorted by (file, line): {file, line, col, text}, `col` being the 1-based UTF-16 column of the first match and `text` the line, cut to a window around the match when longer than 300 chars. Capped at maxHits (default 200): set `withMeta: true` to get `{ hits, truncated, filesMatched, notes? }` and know whether the list is complete. A pattern too slow for the JS engine is stopped at `timeoutMs` (default 10000) and the response is then always that envelope, with `timedOut: true`.",inputSchema:{type:"object",properties:{...pe,pattern:{type:"string",description:"JavaScript regular expression to search for"},scope:{type:"string",description:"Restrict to one directory or file (repo-relative). ANDed with `globs`"},globs:{type:"array",items:{type:"string"},description:"Restrict to matching paths. Rooted at the repo: '*.ts' matches root-level files only, '**/*.ts' any depth; a '!' prefix excludes (exclusion wins)"},ignoreCase:{type:"boolean"},maxHits:{type:"integer",minimum:1},filesWithMatches:{type:"boolean",description:"One hit per matching file (its first match); maxHits then caps files"},withMeta:{type:"boolean",description:"Return { hits, truncated, filesMatched, notes? } instead of the bare hit array"},timeoutMs:{type:"integer",minimum:1,description:"Wall-clock budget for the JS regex engine (default 10000)"}},required:["repo","pattern"]}},{name:"search",description:'Natural-language-ish lexical search: BM25F ranking over SIX weighted fields \u2014 symbol names (camelCase/snake_case subtokens), path segments, markdown headings, the file summary, per-symbol DOC COMMENTS, and the prose body (comment + short-literal words). The last two are why "where is rate limiting handled" works: the phrase lives in a comment, not in a name. Results carry `matchedFields`, a `line` anchor and `symbolHits` (name/kind/line). NOT embeddings by default \u2014 deterministic, diacritic-folded, zero API keys. Answers "where is auth handled?"-style queries with ranked files, matched terms and top symbols. Query terms with zero document frequency get a deterministic trigram-fuzzy fallback (typo-tolerant) unless `fuzzy: false`. Set `semantic: true` to RRF-fuse an embedding tier (HTTP endpoint, else a local static model) with lexical \u2014 the response then wraps the ranked list as `{ results, tier, degradedReason? }`, `tier` being "endpoint"/"static" when fusion happened or "lexical" (with `degradedReason`) when it did not (see embed_status). Without `semantic`, the response is the bare ranked array, unchanged.',inputSchema:{type:"object",properties:{...pe,...Un,query:{type:"string",description:"Natural-language or identifier query"},limit:{type:"integer",minimum:1,description:"Max results, a whole number (default 20)"},fuzzy:{type:"boolean",description:'Fallback for query terms with zero document frequency: a morphological stem match first ("caching" finds "cache"), then trigram similarity for typos (default true)'},rank:{type:"string",enum:["lexical","graph"],description:`Structural prior: "graph" multiplies the lexical score by the file's PageRank over the resolved import graph relative to an average file (a leaf \xD70.95, a hub well above \xD71; Go files unchanged); "lexical" (default) scores on text alone. Measured a wash \u2014 it helps some queries and hurts as many \u2014 see SearchOptions.rank.`},exact:{type:"boolean",description:"Drop results that carry no verbatim query-term match \u2014 the ones the stem/trigram bridge produced (default false)."},explain:{type:"boolean",description:"Wrap the response as `{ results, explain }` with the query verdict (default false = bare array). See explain_search."},semantic:{type:"boolean",description:'RRF-fuse an embedding tier with lexical (default false). Precedence: the HTTP endpoint (CODEINDEX_EMBED_ENDPOINT) if set, else a local static model. The response reports the effective tier as a top-level `tier` field ("endpoint"/"static" on success, "lexical" plus `degradedReason` when neither is available/reachable) instead of degrading silently \u2014 see embed_status. `exact` and `rank` apply to the lexical side; `explain: true` adds an `explain` key to that object, restated for the fused rows (with `semanticOnlyResults`).'}},required:["repo","query"]}},{name:"explain_search",description:'Search, and say whether the query actually found anything. Returns `{ results, explain }` where explain.verdict is "match" (a verbatim term matched), "weak" (results exist but rest on a near match, or the identifier you asked for has document frequency 0) or "none". Use this instead of `search` whenever an empty-feeling or surprising result matters: a query for an identifier that is NOT in the indexed tree still returns confident-looking rows built from its subtokens \u2014 searching "nullGipStep7" in a repo that only has "nullGipStep2" ranks files matching "null" and "gip" \u2014 and only the verdict distinguishes that from a real hit. Also names the terms dropped as stopwords, the terms that exist nowhere, and what each near match bridged to.',inputSchema:{type:"object",properties:{...pe,...Un,query:{type:"string",description:"Natural-language or identifier query"},limit:{type:"integer",minimum:1,description:"Max results, a whole number (default 20)"},fuzzy:{type:"boolean",description:"Stem/trigram fallback for zero-document-frequency terms (default true)"},exact:{type:"boolean",description:"Drop results carrying no verbatim term match (default false)"}},required:["repo","query"]}},{name:"embed_status",description:"Report the embedding tier: the effective mode (none/static/endpoint; endpoint > static model), the resolved model (opt-in, never shipped in the package) with its modelId/dim, EMBED_VERSION, and the configured HTTP endpoint with its reachability. A model.json that is present but fails to load is reported as `model: { present: true, error }` with mode none. Use to check whether `search` with semantic:true will fuse embeddings or degrade to lexical.",inputSchema:{type:"object",properties:{...pe},required:["repo"]}},{name:"type_hierarchy",description:"How do types relate? For one type: the base classes it extends, the interfaces/traits it implements, and \u2014 the reverse direction, which no other tool answers \u2014 what extends or implements IT, plus any declared supertype with no definition in this repo. Omit `name` for the whole hierarchy.",inputSchema:{type:"object",properties:{...pe,name:{type:"string",description:`Type to look up \u2014 ${is}`}},required:["repo"]}},{name:"implementations",description:"Who implements this interface (or extends this class)? Walks the hierarchy TRANSITIVELY, so a class implementing a sub-interface of the one asked about is included. Go states no implementations: a Go type counts when a `var _ I = (*T)(nil)` assertion says so, or when its methods (own and promoted by embedding) cover the interface's by name and parameter count \u2014 those are marked `structural: true`. The tool to reach for before changing an interface.",inputSchema:{type:"object",properties:{...pe,name:{type:"string",description:`Interface/trait/class \u2014 ${is}`}},required:["repo","name"]}},{name:"call_graph",description:"What does this symbol reach, and what reaches it? A bounded symbol-to-symbol neighborhood around `symbol` \u2014 `depth` hops (default 2) following `calls`/`extends`/`implements`/`overrides` edges, `direction` out (callees) | in (callers) | both. Dispatch is followed: walking out through a method also reaches the methods overriding it, and walking in to an override reaches the callers of the method it overrides. Answers impact questions the one-hop `callers` tool cannot.",inputSchema:{type:"object",properties:{...pe,symbol:{type:"string",description:`Symbol to centre on \u2014 ${is}`},depth:{type:"integer",minimum:1,maximum:5,description:"Hops to follow (default 2, max 5)"},direction:{type:"string",enum:["out","in","both"],description:"out | in | both (default both)"}},required:["repo","symbol"]}},{name:"call_path",description:'How does `from` reach `to`? The shortest chains of calls between two symbols (a call to a method may dispatch to an override: `via: "dispatch"`), listed in id order with the total count of equally short ones. No path within `depth` hops answers hops: null, plus `reverseHops` when `to` reaches `from` instead. With files: true, `from` and `to` are file paths and the steps are import/use/call edges of the link-graph \u2014 why does A depend on B (a path only name-inferred calls would open is reported as `inferredHops` unless includeInferred).',inputSchema:{type:"object",properties:{...pe,from:{type:"string",description:`Start \u2014 ${is}; a file path with files: true`},to:{type:"string",description:`End \u2014 ${is}; a file path with files: true`},depth:{type:"integer",minimum:1,description:"Longest path to look for, in hops (default 8, max 16)"},maxPaths:{type:"integer",minimum:1,description:"Shortest paths to list (default 5)"},files:{type:"boolean",description:"Walk the file link-graph instead of the symbol graph (default false)"},includeInferred:{type:"boolean",description:"files: true only \u2014 also step through calls inferred from a name alone (default false)"}},required:["repo","from","to"]}},{name:"impact",description:"What breaks if I change this file or module? The reverse dependency closure over the link-graph: every file that transitively imports, uses or calls `target`, nearest first, with the modules touched. A Go import reaches every non-test file of the package it names. A call inferred from a name alone is counted (`inferredDependents`) but not followed unless includeInferred. Answers from the persisted graph \u2014 no need to pull the whole `graph`.",inputSchema:{type:"object",properties:{...pe,target:{type:"string",description:"Repo-relative file path or module slug"},depth:{type:"integer",minimum:1,description:"Hops to follow (default: the full closure)"},includeInferred:{type:"boolean",description:"Also follow call edges inferred from a name alone (default false)"}},required:["repo","target"]}},{name:"neighbors",description:"What sits next to this file or module in the link-graph, both directions: every edge kind linking each neighbour (import, call, use, extends, implements, doc-link, mention, contains), strongest evidence first, out to `depth` hops. Hubs are listed but not expanded through, so depth 2 stays an answer rather than a dump.",inputSchema:{type:"object",properties:{...pe,target:{type:"string",description:"Repo-relative file path or module slug"},depth:{type:"integer",minimum:1,description:"Hops to follow (default 1)"},kinds:{type:"array",items:{type:"string"},description:"Edge kinds to traverse (default all)"}},required:["repo","target"]}},{name:"check_rules",description:'Validate dependency-cruiser-style architecture rules against the link-graph. Rules (inline JSON array): forbidden edges {name, from, to, kind?, severity?, comment?} with glob paths, plus builtins {name, builtin: "cycles"|"orphans"|"literals"} (module-level import cycles; code files nothing connects to; values with no single source of truth, narrowed by tiers?/minFiles?/minCount?/includeTests?). Unknown keys are rejected; a forbidden rule whose globs match no indexed file comes back as an `unmatched` warning. Returns `{ errors, warnings, violations }`, as the CLI does: deterministic violations with severity error|warn \u2014 a CI gate.',inputSchema:{type:"object",properties:{...pe,...Un,rules:{type:"array",description:"Rules array (inline JSON \u2014 see description)"},configPath:{type:"string",description:"Read the rules from this JSON file instead \u2014 the CLI's --config. Repo-relative, or absolute; either way it must resolve inside the repository. Ignored when `rules` is given."}},required:["repo"]}},{name:"resolution_report",description:"Can the link-graph be trusted for a language? Per importer language: how many imports resolved to in-repo files, went external (third-party/stdlib), dangle (local target missing, by reason) or are unsupported (no resolver for that language), the top dangling specs with an example importer, the top external packages, and the config warnings (unparseable tsconfig/package.json, missing `extends`) that silently turn imports external. Check it before relying on impact, callers or dead_code for a language.",inputSchema:{type:"object",properties:{...pe,...Un,lang:{type:"string",description:"Only this language (as scan_summary names it)"},limit:{type:"integer",minimum:1,description:"Entries per top list (default 10)"}},required:["repo"]}},{name:"index_status",description:"Is the persisted index (/.codeindex, written by `codeindex index`) fresh for this tree? Returns whether its cache.json is usable (or why not: absent/unreadable/corrupt/schema/extractor), the indexed vs HEAD commit, per-file drift counts (unchanged, touched, modified, added, deleted, reextract), artifactsFresh and the reasons it is not. Cheap: reads cache.json, walks and stats, hashes only stat-changed files, never extracts. A fresh index is what makes the first graph-shaped call on a large repo fast; a stale one is rebuilt in memory, so answers stay correct either way.",inputSchema:{type:"object",properties:{...pe,...Un},required:["repo"]}},{name:"delta",description:"What does my change break? Maps the git diff (the branch against its merge-base with the default branch, uncommitted and untracked work included; or the staged changeset) onto the graph: each changed file with the symbols enclosing its hunks, and per module a 0-100 risk score (HIGH/MEDIUM/LOW) in which every point comes with its reason \u2014 exported API changed, hub, blast radius, test gap, a deleted or renamed file that is still imported (`broken`, with its importers), dangling imports. `open` names the files to read first. Call it after editing.",inputSchema:{type:"object",properties:{...pe,...Wo,base:{type:"string",description:"Branch or ref to review against (default: origin/HEAD, origin/main, origin/master, main, master; else HEAD)"},staged:{type:"boolean",description:"Review the staged changeset against HEAD instead (default false)"},depth:{type:"integer",minimum:1,description:"Blast-radius hops (default 2)"},limit:{type:"integer",minimum:1,description:"Max modules, highest score first (default: all)"},format:{type:"string",enum:["json","text"],description:'"text" returns the compact human panel instead of JSON (default "json")'}},required:["repo"]}}],Pt={type:"array",items:{type:"string"}},ye={type:"object"},Uf={error:{type:"string"},shallow:{type:"boolean"},note:{type:"string"}},os={call_graph:{type:"object",properties:{root:{type:"array",items:ye},nodes:{type:"array",items:ye},edges:{type:"array",items:ye},truncated:{type:"boolean"},depthClamped:{type:"integer"}},required:["root","nodes","edges"]},call_path:{type:"object",properties:{from:{},to:{},hops:{type:["integer","null"]},paths:{type:"array",items:{type:"array",items:ye}},pathCount:{type:"integer"},truncated:{type:"boolean"},depthClamped:{type:"integer"},reverseHops:{type:"integer"},inferredHops:{type:"integer"}},required:["from","to","hops","paths","pathCount"]},impact:{type:"object",properties:{target:{type:"string"},scope:{type:"string",enum:["module","file"]},seeds:Pt,files:{type:"array",items:ye},modules:Pt,inferredDependents:{type:"integer"}},required:["target","scope","seeds","files","modules"]},neighbors:{type:"object",properties:{target:{type:"string"},scope:{type:"string",enum:["module","file"]},links:{type:"array",items:ye},members:Pt},required:["target","scope","links"]},scan_summary:{type:"object",properties:{engineVersion:{type:"string"},commit:{type:"string"},fileCount:{type:"integer"},languages:{type:"object",additionalProperties:{type:"integer"}},capped:{type:"boolean"}},required:["engineVersion","fileCount","languages","capped"]},graph:{type:"object",properties:{schemaVersion:{type:"integer"},version:{type:"string"},commit:{type:"string"},fileCount:{type:"integer"},languages:{type:"object",additionalProperties:{type:"integer"}},files:{type:"array",items:ye},modules:{type:"array",items:ye},fileEdges:{type:"array",items:ye},moduleEdges:{type:"array",items:ye}},required:["schemaVersion","files","fileEdges","modules","moduleEdges"]},symbols:{type:"object",oneOf:[{type:"object",properties:{schemaVersion:{type:"integer"},defs:ye,refs:ye},required:["schemaVersion","defs"]},{type:"object",properties:{name:{type:"string"},defs:{type:"array",items:ye},refs:Pt},required:["name","defs","refs"]}]},callers:{type:"object",oneOf:[{type:"object",additionalProperties:ye},{type:"object",properties:{def:ye,callers:{type:"array",items:ye},lsp:ye},required:["def","callers"]},{type:"object",properties:{error:{type:"string"},defs:{type:"array",items:ye},unresolvedSites:{type:"integer"},sample:{type:"array",items:ye}},required:["error"]},{type:"object",properties:{name:{type:"string"},sites:{type:"array",items:ye}},required:["name","sites"]}]},workspaces:{type:"object",properties:{packages:{type:"array",items:ye},cycle:{type:["array","null"],items:{type:"string"}},topoOrder:Pt,warnings:Pt,check:{type:"object",properties:{ok:{type:"boolean"},undeclared:{type:"array",items:ye},unusedDeclared:{type:"array",items:ye}},required:["ok","undeclared","unusedDeclared"]}},required:["packages","topoOrder"]},churn:{type:"object",properties:{ok:{type:"boolean"},...Uf,churn:{type:"object",additionalProperties:{type:"integer"}}},required:["ok","churn"]},find_references:{type:"object",properties:{defs:{type:"array",items:ye},callSites:{type:"array",items:ye},referencingFiles:Pt},required:["defs","callSites","referencingFiles"]},symbol_at:{type:"object",properties:{file:{type:"string"},line:{type:"integer"},symbol:{type:["object","null"]},enclosing:Pt,approximate:{type:"boolean"}},required:["file","line","symbol","enclosing"]},lsp_status:{type:"object",properties:{lspVersion:{type:"number"},mode:{type:"string",enum:["none","configured"]},configPath:{type:["string","null"]},source:{type:"string",enum:["env","repo","cwd","user","none"]},ignoredConfig:{type:"object",properties:{path:{type:"string"},reason:{type:"string"}},required:["path","reason"]},servers:{type:"array",items:ye},unmappedLanguages:Pt},required:["lspVersion","mode","source","servers","unmappedLanguages"]},check_rules:{type:"object",properties:{errors:{type:"integer"},warnings:{type:"integer"},violations:{type:"array",items:ye}},required:["errors","warnings","violations"]},onboard:{type:"object",properties:{brief:{type:"string"},memory:{type:"string"},memoryError:{type:"string"}},required:["brief"]},explain_search:{type:"object",properties:{results:{type:"array",items:ye},explain:{type:"object",properties:{query:{type:"string"},terms:{type:"array",items:ye},droppedStopwords:Pt,unresolvedTerms:Pt,wholeIdentifier:ye,verdict:{type:"string",enum:["match","weak","none"]},note:{type:"string"},bridgedOnlyResults:{type:"number"},resultCount:{type:"number"}},required:["query","terms","droppedStopwords","unresolvedTerms","verdict","bridgedOnlyResults","resultCount"]}},required:["results","explain"]},hotspots:{type:"object",properties:{churnOk:{type:"boolean"},...Uf,hotspots:{type:"array",items:ye}},required:["churnOk","hotspots"]},coupling:{type:"object",properties:{ok:{type:"boolean"},...Uf,couplings:{type:"array",items:ye}},required:["ok","couplings"]},duplicated_literals:{type:"object",properties:{duplications:{type:"array",items:ye},families:{type:"array",items:ye}},required:["duplications","families"]},index_status:{type:"object",properties:{indexDir:{type:"string"},present:{type:"boolean"},usable:{type:"boolean"},reason:{type:"string",enum:["absent","unreadable","corrupt","schema","extractor"]},engineVersion:ye,commit:ye,files:{type:["object","null"]},artifactsFresh:{type:"boolean"},stale:Pt},required:["indexDir","present","usable","engineVersion","commit","files","artifactsFresh","stale"]},embed_status:{type:"object",properties:{embedVersion:{type:"integer"},mode:{type:"string",enum:["none","static","endpoint"]},model:{},endpoint:{},endpointReachable:{type:"boolean"}},required:["embedVersion","mode"]},resolution_report:{type:"object",properties:{totals:ye,languages:{type:"array",items:ye},warnings:Pt},required:["totals","languages","warnings"]},write_memory:{type:"object",properties:{written:{type:"string"}},required:["written"]},delete_memory:{type:"object",properties:{deleted:{type:"boolean"}},required:["deleted"]}};for(let e of["replace_symbol_body","insert_after_symbol","insert_before_symbol"])os[e]={type:"object",properties:{file:{type:"string"},symbol:{type:"string"},startLine:{type:"integer"},endLine:{type:"integer"},lines:{type:"integer"},warnings:{type:"array",items:{type:"string"}}},required:["file"]};Uo={scan_summary:{title:"Scan summary"},graph:{title:"Link graph"},symbols:{title:"Symbol index"},callers:{title:"Caller index"},workspaces:{title:"Monorepo workspaces"},churn:{title:"Git churn"},symbols_overview:{title:"File symbol overview"},find_symbol:{title:"Find symbol"},find_references:{title:"Find references"},symbol_at:{title:"Symbol at a line"},repo_map:{title:"Repository map"},onboard:{title:"Project brief",write:!0,destructive:!1,idempotent:!0},hotspots:{title:"Hotspots"},coupling:{title:"Change coupling"},replace_symbol_body:{title:"Replace symbol body",write:!0,destructive:!0,idempotent:!0},insert_after_symbol:{title:"Insert after symbol",write:!0,destructive:!1,idempotent:!1},insert_before_symbol:{title:"Insert before symbol",write:!0,destructive:!1,idempotent:!1},write_memory:{title:"Write memory",write:!0,destructive:!1,idempotent:!0},read_memory:{title:"Read memory"},list_memories:{title:"List memories"},delete_memory:{title:"Delete memory",write:!0,destructive:!0,idempotent:!0},dead_code:{title:"Dead-code candidates"},duplicated_literals:{title:"Values with no single source of truth"},complexity:{title:"Complexity"},mermaid:{title:"Mermaid module diagram"},grep:{title:"Grep file contents"},search:{title:"Lexical search",openWorld:!0},explain_search:{title:"Search with a verdict",openWorld:!0},lsp_status:{title:"LSP tier status",openWorld:!0},embed_status:{title:"Embedding tier status",openWorld:!0},type_hierarchy:{title:"Type hierarchy"},implementations:{title:"Implementations"},call_graph:{title:"Call graph neighborhood"},call_path:{title:"Shortest call path"},impact:{title:"Reverse dependency closure"},neighbors:{title:"Link-graph neighbours"},check_rules:{title:"Check architecture rules"},resolution_report:{title:"Import resolution report"},index_status:{title:"Index freshness"},delta:{title:"Review the diff"}};zo={orient:["scan_summary","index_status","repo_map","onboard","workspaces","mermaid","graph","read_memory","list_memories","write_memory"],find:["search","explain_search","grep","find_symbol","symbols","symbols_overview","symbol_at","embed_status"],impact:["find_references","callers","call_graph","call_path","impact","neighbors","dead_code","type_hierarchy","implementations","lsp_status","resolution_report","delta"],edit:["find_symbol","symbols_overview","symbol_at","replace_symbol_body","insert_after_symbol","insert_before_symbol"],risk:["hotspots","churn","coupling","complexity","check_rules","duplicated_literals","dead_code","delta"],memory:["write_memory","read_memory","list_memories","delete_memory"]}});var Ob={};vc(Ob,{DEFAULT_MAX_RESPONSE_BYTES:()=>pc,OUTPUT_SCHEMAS:()=>os,PROTOCOL_VERSIONS:()=>Bn,TOOLS:()=>Bo,TOOL_META:()=>Uo,TOOL_PROFILES:()=>zo,annotationsFor:()=>zf,capResponse:()=>jo,getArtifacts:()=>cc,getScan:()=>Po,getScanParallel:()=>ac,getScanSummary:()=>lc,memoizedEmbedModel:()=>Oo,memoizedEmbeddingIndex:()=>Fo,negotiateProtocol:()=>mc,profileNames:()=>as,resourceLinkFor:()=>gc,runMcpServer:()=>Fb,scanFingerprint:()=>Df,structuredContentFor:()=>fc,toCacheMap:()=>Rt,toolsFor:()=>Qs,toolsInProfiles:()=>Ho,validateArgs:()=>uc,warmGrammarsForRepo:()=>vb,warmGrammarsForWalk:()=>Lo});function eT(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.jsonrpc!=="2.0"||typeof t.method!="string"?!1:t.id===void 0||t.id===null||typeof t.id=="number"||typeof t.id=="string"}function tT(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method!="string"&&("result"in t||"error"in t)}function be(e){return typeof e=="string"&&e?e:void 0}function ei(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")&&e.length?e:void 0}function qf(e){let t=typeof e=="number"?e:typeof e=="string"&&e.trim()!==""?Number(e):NaN;return Number.isFinite(t)&&t>=0?t:void 0}function bc(e,t){let n=qf(e);if(n!==void 0&&!Number.isInteger(n))throw new Error(`\`${t}\` must be a whole number, got ${n}`);return n}function Ue(e){let t=qf(e);return t!==void 0&&t>0?t:void 0}function Gf(e){return e instanceof Error?e.message:String(e)}function wc(e,t){return t?{...e,coverage:t}:e}function Hf(e,t,n){let r=dr(e);if(r.has(n))return n;let o=De(t,ae(t,n.replaceAll("\\","/"))).split("/").join("/");if(o===".."||o.startsWith("../")||Ne(o))throw new Error(`\`file\` is outside the repository: ${n}`);if(r.has(o))return o;let s=rs(e,t,n);if(s)throw new Error(s);let a=je(o),l=e.files.filter(c=>je(c.rel)===a).map(c=>c.rel).sort($).slice(0,5);throw new Error(`file not in the index: ${n}`+(l.length?` \u2014 did you mean ${l.join(", ")}?`:" (paths are repo-relative, as symbols_overview and find_symbol report them)"))}function rT(e,t){let n=be(e.repo)??t;if(!n)throw new Error("`repo` is required (absolute path to the repository root)");let r=ae(n);try{if(!Ae(r).isDirectory())throw new Error("not a directory")}catch{throw new Error(`repository root is not a readable directory: ${n}`)}return r}async function sT(e,t,n,r,o=async a=>({walked:Xe(a,{}),reused:!1}),s={}){let a={scope:be(t.scope),include:ei(t.include),exclude:ei(t.exclude)},l=be(t.rank),c=l==="graph"||l==="lexical"?{rank:l}:{},d,u;if(!(nT.has(e)&&!(e==="workspaces"&&t.check===!0))){let g=await o(n);d=g.walked,r?.(g.reused?`unchanged since the last call: ${d.files.length} files`:`walked ${d.files.length} files`),u=await ac(n,a,d,()=>d?Lo(d):Promise.resolve()),r?.(`scan ready: ${u.files.length} files`)}let m=()=>u??Po(n,a,d),p=()=>cc(n,a,d,u);if(e==="scan_summary"){let g=lc(n,a,d);return JSON.stringify({engineVersion:Te,commit:g.commit,fileCount:g.fileCount,languages:g.languages,capped:g.capped},null,2)}if(e==="index_status")return JSON.stringify(ji(n,a),null,2);if(e==="graph")return qr(p().graph);if(e==="symbols"){let{symbols:g}=p(),h=be(t.name);if(h){let _=Object.hasOwn(g.defs,h)?g.defs[h]:[],y=Object.hasOwn(g.refs,h)?g.refs[h]:[];return JSON.stringify({name:h,defs:t.concise===!0?_.map(b=>gr(b,h)):_,refs:y},null,2)}return JSON.stringify(t.concise===!0?_b(g):g,null,2)}if(e==="callers"){let g=be(t.name);if(t.lsp===!0&&!g)throw new Error("callers with lsp:true requires `name` (or name@file)");let h=m();if(t.raw===!0){if(!g)throw new Error("callers with raw:true requires `name`");if(t.lsp===!0||t.recall===!0)throw new Error("callers raw:true takes neither lsp nor recall");if(t.withCaller===!0)throw new Error("callers raw:true already names each site's enclosing symbol: it takes no withCaller");let x=gl(h,g);return JSON.stringify(wc(x,pr(h,x.name,{calls:!0})),null,2)}let _=t.recall===!0?Hr(h,void 0,{recall:!0}):Ns(h),y=x=>t.withCaller===!0?ro(h,x):x;if(g){let x=Nt(h,g)?.reading,k=x?Qa(x):g,v=pr(h,x?.name??g,{calls:!0}),T=dl(_,g),F=T&&y(T);if(F){let C=t.lsp===!0?await Ks(h,n,k,F,s):F;return JSON.stringify(wc(t.concise===!0?Ff(C):C,v),null,2)}let R=hl(h,g,_);if(!R){let C=ur(h,g).length;throw new Error(`no symbol named "${g}" in the index`+(C?` (${C} call site(s) use the name; raw:true lists them)`:"")+rc(h,g))}return JSON.stringify(wc(t.lsp===!0?await Ks(h,n,k,R,s):R,v),null,2)}let b={};for(let[x,k]of _)b[x]=t.concise===!0?Ff(y(k)):y(k);return JSON.stringify(b,null,2)}if(e==="workspaces"){let g=On(n),h=t.check===!0?wl(g,p().graph):void 0;return JSON.stringify(xl(g,h),null,2)}if(e==="churn"){let g=en(n,{since:be(t.since)}),h={};for(let _ of[...g.churn.keys()].sort())h[_]=g.churn.get(_);return JSON.stringify({ok:g.ok,...pn(g),churn:h},null,2)}if(e==="symbols_overview"){let g=be(t.file);if(!g)throw new Error("`file` is required");let h=m(),_=no(h,Hf(h,n,g));return JSON.stringify(t.concise===!0?_.map(y=>gr(y,y.name)):_,null,2)}if(e==="find_symbol"){let g=be(t.namePath);if(!g)throw new Error("`namePath` is required");let h=_n(m(),g,{substring:t.substring===!0,includeBody:t.includeBody===!0,concise:t.concise===!0,maxResults:Ue(t.maxResults)});return JSON.stringify(h,null,2)}if(e==="find_references"){let g=be(t.name);if(!g)throw new Error("`name` is required");let h=m(),_=so(h,g),y=Nt(h,g)?.reading.name??g,b=t.lsp===!0?await Ro(h,n,y,_,s):_;return JSON.stringify(wc(t.concise===!0?sc(b):b,pr(h,y,{calls:!0})),null,2)}if(e==="symbol_at"){let g=be(t.file),h=qf(t.line);if(!g)throw new Error("`file` is required");if(h===void 0||!Number.isInteger(h)||h<1)throw new Error("`line` must be a positive integer");let _=m(),y=new Set(_.files.map(x=>x.rel)),b=ns(n,g,x=>y.has(x));if(b===void 0)throw new Error(rs(_,n,g)??`no such file in the index: ${g}`);return JSON.stringify(pl(_,b,h),null,2)}if(e==="lsp_status")return JSON.stringify(await vo(m(),n,t.probe===!0,s),null,2);if(e==="replace_symbol_body"||e==="insert_after_symbol"||e==="insert_before_symbol"){let g=be(t.namePath),h=typeof t.body=="string"?t.body:void 0;if(!g||h===void 0)throw new Error("`namePath` and `body` are required");let _=Ue(t.line);if(t.line!==void 0&&(_===void 0||!Number.isInteger(_)))throw new Error("`line` must be a 1-based line number");let y=m(),b=e==="replace_symbol_body"?Hu:e==="insert_after_symbol"?Gu:qu,x=be(t.file),k=b(y,g,h,x===void 0?void 0:Hf(y,n,x),{line:_,strict:t.strict===!0});return kb(j(y.root,k.file)),JSON.stringify(k,null,2)}if(e==="write_memory"){let g=be(t.name),h=typeof t.content=="string"?t.content:void 0;if(!g||h===void 0)throw new Error("`name` and `content` are required");return JSON.stringify({written:oo(n,g,h)},null,2)}if(e==="read_memory"){let g=be(t.name);if(!g)throw new Error("`name` is required");let h=Ku(n,g);if(h===void 0)throw new Error(`no memory named "${g}" \u2014 see list_memories`);return h}if(e==="list_memories")return JSON.stringify(Zu(n),null,2);if(e==="delete_memory"){let g=be(t.name);if(!g)throw new Error("`name` is required");return JSON.stringify({deleted:Xu(n,g)},null,2)}if(e==="dead_code"){let g=Ao(m(),{kinds:t.kinds==="all"?"all":"callable",includeTail:t.includeTail===!0});return JSON.stringify(Kl(g,bc(t.limit,"limit")),null,2)}if(e==="duplicated_literals"){let g=Pn(m(),{minFiles:Ue(t.minFiles),minCount:Ue(t.minCount),includeTests:t.includeTests===!0}),h=bc(t.limit,"limit");return h===void 0||g.duplications.length<=h?JSON.stringify(g,null,2):JSON.stringify({total:g.duplications.length,shown:h,truncated:!0,duplications:g.duplications.slice(0,h),families:g.families},null,2)}if(e==="complexity"){let g=m();if(t.risk===!0){let y=en(n,{since:be(t.since)}),b=eo(g,y.churn,Ue(t.top));return JSON.stringify({churnOk:y.ok,...pn(y),risks:b},null,2)}let h=be(t.file),_=h===void 0?void 0:Hf(g,n,h);return JSON.stringify(Qi(g,_,Ue(t.top)),null,2)}if(e==="mermaid"){let{graph:g}=p();return Io(g,{module:be(t.module),maxEdges:Ue(t.maxEdges)})}if(e==="onboard"){let g=m(),{graph:h}=p();return JSON.stringify(_f(g,h,{...Ue(t.budgetTokens)!==void 0?{budgetTokens:Ue(t.budgetTokens)}:{},...t.remember===!1?{remember:!1}:{}}),null,2)}if(e==="repo_map"){let{scan:g,graph:h}=p();return Yr(g,h,{budgetTokens:Ue(t.budgetTokens)})}if(e==="hotspots"){let g=m(),h=en(n,{since:be(t.since)}),_=Qr(g,h.churn,Ue(t.limit));return JSON.stringify({churnOk:h.ok,...pn(h),hotspots:_},null,2)}if(e==="coupling"){let{graph:g}=p(),h=bo(n,{since:be(t.since),graph:g,hidden:t.hidden===!0,minTogether:Ue(t.minTogether),maxCommitFiles:Ue(t.maxCommitFiles),maxPairs:Ue(t.limit)});return JSON.stringify({ok:h.ok,...pn(h),couplings:h.couplings},null,2)}if(e==="grep"){let g=be(t.pattern);if(!g)throw new Error("`pattern` is required");let h=zs(n,g,{globs:ei(t.globs),scope:be(t.scope),ignoreCase:t.ignoreCase===!0,maxHits:Ue(t.maxHits),filesWithMatches:t.filesWithMatches===!0,timeoutMs:Ue(t.timeoutMs)});if(t.withMeta===!0||h.timedOut){let{hits:_,truncated:y,filesMatched:b,timedOut:x,notes:k}=h;return JSON.stringify({hits:_,truncated:y,filesMatched:b,...x?{timedOut:x}:{},...k.length?{notes:k}:{}},null,2)}return JSON.stringify(h.hits,null,2)}if(e==="search"){let g=be(t.query);if(!g)throw new Error("`query` is required");let h=bc(t.limit,"limit"),_=m(),y=typeof t.fuzzy=="boolean"?t.fuzzy:void 0,b=t.exact===!0?{exact:!0}:{},x={limit:h,fuzzy:y,...b,...c};if(t.semantic===!0){let T=({results:S,explain:w},E,P)=>JSON.stringify({results:S,tier:E,...P?{degradedReason:P}:{},...t.explain===!0?{explain:w}:{}},null,2),F=mr();if(F)try{let S=await Fo({mode:"endpoint",identity:F,scan:_},E=>yo(_,{previous:E})),w=await ho(g);return T(fr(_,g,S,{...x,queryVec:w}),"endpoint")}catch(S){return T(Gt(_,g,x),"lexical",`embedding endpoint failed: ${Gf(S)}`)}let R=Dn(n),{model:C,error:A}=Jr(R,Oo);if(C){let S=await Fo({mode:"static",identity:`${R}#${C.modelId}`,scan:_},w=>Xr(_,C,{previous:w??ss(j(n,Je,"embeddings.bin"))}));return T(fr(_,g,S,{...x,model:C}),"static")}return T(Gt(_,g,x),"lexical",A?`static model unusable: ${A}`:"no embedding endpoint or static model configured \u2014 see embed_status")}let{results:k,explain:v}=Gt(_,g,x);return JSON.stringify(t.explain===!0?{results:k,explain:v}:k,null,2)}if(e==="explain_search"){let g=be(t.query);if(!g)throw new Error("`query` is required");let h=bc(t.limit,"limit"),_=m(),y=typeof t.fuzzy=="boolean"?t.fuzzy:void 0,{results:b,explain:x}=Gt(_,g,{limit:h,fuzzy:y,...t.exact===!0?{exact:!0}:{},...c});return JSON.stringify({results:b,explain:x},null,2)}if(e==="embed_status"){let g=Dn(n),{model:h,error:_}=Jr(g,Oo),y=mr(),x={embedVersion:Jt,mode:y?"endpoint":h?"static":"none",model:h?{present:!0,dir:g,modelId:h.modelId,dim:h.dim,vocabSize:h.vocabSize}:_?{present:!0,dir:g,error:_}:{present:!1},endpoint:y??null};return y&&(x.endpointReachable=await go(y)),JSON.stringify(x,null,2)}if(e==="type_hierarchy"){let g=m(),h=Ps(g),_=be(t.name);if(!_){let b={};for(let[x,k]of h)b[x]=k;return JSON.stringify(b,null,2)}let y=sr(h,_,Nt(g,_)?.defs);if(!y)throw new ti(`no type named ${_}`);return JSON.stringify(y,null,2)}if(e==="implementations"){let g=be(t.name);if(!g)throw new Error("`name` is required");let h=m(),_=Ps(h),y=Nt(h,g)?.defs;if(!sr(_,g,y))throw new ti(`no type named ${g}`);return JSON.stringify({name:g,implementations:Gi(_,g,y)},null,2)}if(e==="call_graph"){let g=be(t.symbol);if(!g)throw new Error("`symbol` is required");let h=be(t.direction),_=h==="out"||h==="in"?h:"both",y=Vi(Ls(m()),g,{...Ue(t.depth)!==void 0?{depth:Ue(t.depth)}:{},direction:_});if(!y.root.length)throw new ti(`no symbol named ${g}`);return JSON.stringify(y,null,2)}if(e==="call_path"){let g=be(t.from),h=be(t.to);if(!g||!h)throw new Error("`from` and `to` are required");let _={depth:Ue(t.depth),maxPaths:Ue(t.maxPaths)};if(t.files===!0){let{graph:b}=p(),x=new Set(b.files.map(T=>T.rel)),[k,v]=[g,h].map(T=>{let F=ns(n,T,R=>x.has(R));if(F===void 0)throw new Error(`no such file in the index: ${T}`);return F});return JSON.stringify(rl(b,k,v,{..._,includeInferred:t.includeInferred===!0}),null,2)}if(t.includeInferred===!0)throw new Error("includeInferred applies to files: true only");let y=el(Ls(m()),g,h,_);if(!y.from.length)throw new Error(`no symbol named ${g}`);if(!y.to.length)throw new Error(`no symbol named ${h}`);return JSON.stringify(y,null,2)}if(e==="impact"||e==="neighbors"){let g=be(t.target);if(!g)throw new Error("`target` is required");let h=Ue(t.depth),_;if(e==="neighbors"&&t.kinds!==void 0){let b=ei(t.kinds)??[],x=b.filter(k=>!$s.includes(k));if(!b.length||x.length)throw new Error(`\`kinds\` expects edge kinds among ${$s.join("|")}, got ${JSON.stringify(x.length?x:t.kinds)}`);_=new Set(b)}let{graph:y}=p();for(let b of Wn(n,g)){let x=e==="impact"?Ki(y,b,h??1/0,{includeInferred:t.includeInferred===!0}):Xi(y,b,h??1,_);if(x)return JSON.stringify(x,null,2)}throw new Error(`no such file or module in the index: ${g}`)}if(e==="check_rules"){let g=be(t.configPath),h;if(t.rules!==void 0)h=ql(t.rules);else if(g){let b=new Error(`cannot read rules config ${g}`),x;try{x=st(Ne(g)?g:j(n,g))}catch{throw b}let k=st(n);if(!x.startsWith(k.endsWith("/")?k:k+"/"))throw new Error(`rules config must be a file inside the repository: ${g}`);let v;try{v=ie(x,"utf8")}catch{throw b}h=Gl(v,g)}else throw new Error("`rules` (or `configPath`) is required");let{scan:_,graph:y}=p();return JSON.stringify(Vl(Co(y,h,{scan:_})),null,2)}if(e==="delta"){let g=Xs(n,{base:be(t.base),staged:t.staged===!0});if("error"in g)throw new Error(g.error);let h=Ue(t.depth),_=To(g,h);if(g.files.length){let{scan:x,graph:k,symbols:v}=p();_=Zs(g,k,v,{depth:h,scan:x})}if(be(t.format)==="text")return $o(_);let y=t.concise===!0?bb(_):_,b=Ue(t.limit);return b===void 0||y.modules.length<=b?JSON.stringify(y,null,2):JSON.stringify({...y,modules:y.modules.slice(0,b),totalModules:y.modules.length,truncated:!0},null,2)}if(e==="resolution_report")return JSON.stringify(ec(m(),{lang:be(t.lang),limit:Ue(t.limit)}),null,2);throw new Error(`unknown tool: ${e}`)}async function Fb(e={}){let t={name:e.serverInfo?.name??"codeindex",version:e.serverInfo?.version??Te},n=Bn[0],r=e.defaultRepo===void 0?void 0:ae(e.defaultRepo),o=Qs(r,n,e.profile),s=new Map(Qs(r).map(k=>[k.name,k.inputSchema])),a=e.watch&&r?Rb(r,k=>O.stderr.write(`codeindex: ${k} +`)):void 0,l=async k=>a&&k===r?a.walk():{walked:Xe(k,{}),reused:!1},c=new Js,d=k=>{let v=Array.isArray(k)?k.map(T=>({jsonrpc:"2.0",...T})):{jsonrpc:"2.0",...k};O.stdout.write(JSON.stringify(v)+` +`)},u=Promise.resolve(),f=new Set,m=new Set,p=new Set,g=k=>{let v=k.finally(()=>p.delete(v));p.add(v)},h=mb({input:O.stdin,terminal:!1});try{for await(let k of h){let v=k.trim();if(!v)continue;let T;try{T=JSON.parse(v)}catch{d({id:null,error:{code:-32700,message:"parse error"}});continue}if(Array.isArray(T)&&T.length===0){d({id:null,error:{code:-32600,message:"invalid request"}});continue}if(Array.isArray(T)){let F=T.map(_),R=C=>{let A=C.filter(S=>S!==void 0);A.length>0&&d(A)};F.some(C=>C instanceof Promise)?g(Promise.all(F).then(R)):R(F)}else{let F=_(T);F instanceof Promise?g(F.then(R=>R?d(R):void 0)):F&&d(F)}}for(;p.size>0;)await Promise.all(p)}finally{a?.close(),await c.close()}function _(k){if(!tT(k))return eT(k)?y(k):{id:null,error:{code:-32600,message:"invalid request"}}}function y(k){let v=!("id"in k),T=F=>v?void 0:{id:k.id??null,...F};try{if(k.method==="initialize")return n=mc(k.params?.protocolVersion),o=Qs(r,n,e.profile),T({result:{protocolVersion:n,capabilities:{tools:{}},serverInfo:t,instructions:`Available tool profiles: ${as().join(", ")}. Active profile: ${e.profile??"all"}. Configure profiles with --tools . Profiles select advertised tools; known tools remain callable.`}});if(k.method==="ping")return T({result:{}});if(k.method==="tools/list")return T({result:{tools:o}});if(k.method==="tools/call")return b(k,T);if(k.method==="notifications/cancelled"){let F=k.params?.requestId;(typeof F=="string"||typeof F=="number")&&f.has(F)&&m.add(F);return}else return T({error:{code:-32601,message:`method not found: ${k.method}`}})}catch(F){return T({error:{code:-32603,message:Gf(F)}})}}function b(k,v){let T=k.params??{},F=T.arguments;if(typeof T.name!="string")return v({error:{code:-32602,message:"invalid params: tools/call requires a string `name`"}});if(F!=null&&(typeof F!="object"||Array.isArray(F)))return v({error:{code:-32602,message:"invalid params: tools/call `arguments` must be an object"}});let R=T.name,C=F??{},A=s.get(R),S=A?uc(A,C):`unknown tool: ${R}`;if(S)return v({result:{content:[{type:"text",text:S}],isError:!0}});let w=n,E=typeof k.id=="string"||typeof k.id=="number"?k.id:void 0;E!==void 0&&f.add(E);let P=T._meta?.progressToken,N=0,L=typeof P=="string"||typeof P=="number"?Y=>{if(E!==void 0&&m.has(E))return;let oe=w>=Tb?{message:Y}:{};d({method:"notifications/progress",params:{progressToken:P,progress:++N,...oe}})}:void 0,H=u.then(async()=>{if(!(E!==void 0&&m.has(E)))return v(await x(R,C,w,L))});return u=H.catch(()=>{}),H.then(Y=>E===void 0?Y:(f.delete(E),m.delete(E)?void 0:Y))}async function x(k,v,T,F){try{let R=rT(v,r),C=await sT(k,v,R,F,l,{pool:c,trustRepoConfig:e.trustLspConfig}),A=be(v.scope)!==void 0||ei(v.include)!==void 0||ei(v.exclude)!==void 0||be(v.name)!==void 0||v.concise===!0,S=e.maxResponseBytes??pc,w=N=>{let L=N!==C,H=L&&T>=Do?gc(N,k):void 0,Y=T>=Do?fc(N,L,os[k]!==void 0):void 0;return{content:H?[{type:"text",text:N},H]:[{type:"text",text:N}],...Y?{structuredContent:Y}:{},...L?{isError:!0}:{}}},E=jo(C,k,R,S,!A),P=w(E);if(E===C){let N=W.byteLength(JSON.stringify(P),"utf8")+$b;N>S&&(P=w(jo(C,k,R,S,!A,N)))}return{result:P}}catch(R){return{result:{content:[{type:"text",text:R instanceof ti?JSON.stringify({error:R.message},null,2):Gf(R)}],isError:!0}}}}}var ti,nT,Vf=z(()=>{"use strict";I();Ee();fe();pb();_t();kl();or();gt();le();Tn();Wr();Gr();tn();co();wo();_o();Xl();Us();Os();Zl();Tf();js();$f();tc();Br();Pr();Hl();Of();bf();Ga();Vu();_l();Fs();Jl();Ql();Kr();Zr();Nf();tr();Al();$l();Ze();Cb();_c();hc();dc();_c();hc();dc();ti=class extends Error{},nT=new Set(["workspaces","churn","grep","write_memory","read_memory","list_memories","delete_memory","embed_status","scan_summary","index_status"])});var Wb={};vc(Wb,{rewriteCommand:()=>jb,shellQuote:()=>ls,tokenize:()=>iT});function Pb(e){let t=[],n="",r=!1,o=!1;for(let s=0;s()$`\n\r{}]/.test(a))return;if((a==="#"||a==="~")&&!r&&!n)return;(a==="*"||a==="?"||a==="[")&&(o=!0),n+=a}}return(r||n)&&t.push({value:n,globbed:o}),t}function PI(e){return wb(e)?.map(t=>t.value)}function os(e){return e!==""&&!/[^A-Za-z0-9_\-./=@:]/.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'"}function Wf(e,t){let n=[],r=[],o=-1;for(let s=0;s2)return;n.noGitignore=!0,r===2&&(o=!0);break;case"--hidden":case"-.":o=!0;break;case"--sort":if(l!=="path")return;break;case"-n":case"--line-number":case"-N":case"--no-line-number":case"-H":case"--with-filename":case"-I":case"--no-filename":case"--no-heading":case"--heading":case"--column":case"-p":case"--pretty":case"--sort-files":case"-j":case"--threads":break;case"--color":if(l!==void 0&&!["never","auto","always","ansi"].includes(l))return;break;default:return}if(xb(n,t.positionals)&&!(n.types.length&&s.some(a=>!a.negated))){for(let{glob:a,negated:l}of s){let c=DI(a,n.paths.length===0);if(!(l?jf(n,c):pc(n,c)))return}return n.skipHidden=!o,n}}function BI(e){let t=Wf(e,new Set(["-e"]));if(!t)return;let n=Bf("bre",!0);for(let{name:d,value:u}of t.flags)switch(d){case"-i":case"-y":case"--ignore-case":n.ignoreCase=!0;break;case"-E":case"--extended-regexp":n.dialect="ere";break;case"-G":case"--basic-regexp":n.dialect="bre";break;case"-F":case"--fixed-strings":n.fixed=!0;break;case"-w":case"--word-regexp":n.word=!0;break;case"-e":n.patterns.push(u);break;case"-l":case"--files-with-matches":case"--name-only":n.filesOnly=!0;break;case"-n":case"--line-number":case"-I":case"-r":case"--recursive":case"--no-color":case"--full-name":break;default:return}let{positionals:r,afterDashDash:o}=t,s=o===-1?r.length:o;if(n.patterns.length===0){if(s===0||(n.patterns.push(r[0]),s>1))return}else if(s>0)return;let a=o===-1?[]:r.slice(o),l=a.filter(d=>!/[*?]/.test(d)),c=a.filter(d=>/[*?]/.test(d));if(!a.some(d=>d.startsWith(":")||Uf.test(d))&&!(l.length>1||l.length&&c.length)){for(let d of c)if(d.includes("/")||!pc(n,`**/${d}`))return;return n.paths.push(...l),n}}function xb(e,t){let n=[...t];if(e.patterns.length===0){let r=n.shift();if(r===void 0)return!1;e.patterns.push(r)}return e.paths=n,!0}function Sb(e,t,n){let r=t+1,o="[";e[r]==="^"&&(o+="^",r++);for(let s=!0;r")n+="\\b";else if("wWsSbB".includes(l)||/[1-9]/.test(l))n+=`\\${l}`;else if(/[.*[\]^$\\/+?(){}|]/.test(l))n+=`\\${l}`;else return;continue}if(s==="["){let l=Sb(e,o,"bre");if(!l)return;n+=l[0],o=l[1]}else if(s==="*")n+=a?"\\*":"*";else if(s==="^")n+=t||a?"^":"\\^",r=a;else if(s==="$"){let l=e.slice(o+1);n+=t||l===""||l.startsWith("\\)")||l.startsWith("\\|")?"$":"\\$"}else if(!t&&"()|+?{}".includes(s))n+=`\\${s}`;else if(t&&s==="{"){let l=/^\{(\d*)(,?)(\d*)\}/.exec(e.slice(o));l&&(l[1]!==""||l[2]!=="")?(n+=`{${l[1]||"0"}${l[2]}${l[3]}}`,o+=l[0].length-1):n+="\\{"}else if(t&&s==="}")n+="\\}";else{if(t&&(s==="+"||s==="?"||s==="*")&&a)return;n+=s,r=t&&(s==="("||s==="|")}}return n}function GI(e){let t="";for(let n=0;n]/.test(o))return;t+=`\\${o}`}continue}if(r==="["){let o=Sb(e,n,"rust");if(!o)return;t+=o[0],n=o[1]}else if(r==="("&&e[n+1]==="?"){let o=/^\(\?(?::|P?<([A-Za-z_]\w*)>)/.exec(e.slice(n));if(!o)return;t+=o[1]?`(?<${o[1]}>`:"(?:",n+=o[0].length-1}else if(r==="{"){let o=/^\{\d+(?:,\d*)?\}/.exec(e.slice(n));if(!o)return;t+=o[0],n+=o[0].length-1}else t+=r}return t}function qI(e){let t=e.replace(/\\[pP]\{[^}]*\}|\\[pP][A-Za-z]|\\./g,"");return t!==t.toLowerCase()}function VI(e){let t=[];for(let r of e.patterns){if(r===""||r.includes(` -`))return;let o=e.fixed?yt(r):e.dialect==="rust"?GI(r):zI(r,e.dialect==="ere");if(o===void 0)return;t.push(o)}let n=t.length===1?t[0]:t.map(r=>`(?:${r})`).join("|");if(e.word){let r=e.patterns.every(s=>(e.fixed||!/[\\^$.*+?()[\]{}|]/.test(s))&&/^\w(?:.*\w)?$/.test(s)),o=t.length===1&&r?n:`(?:${n})`;n=r?`\\b${o}\\b`:`(?n===".."))return t===""||t==="."?"":t}function KI(e){for(let t=ue(e);;t=Ce(t)){let n=j(t,".gitmodules");if(te(n)){let r;try{r=le(n,"utf8")}catch{return[]}return[...r.matchAll(/^\s*path\s*=\s*(.+?)\s*$/gm)].map(o=>ue(t,o[1]))}if(te(j(t,".git"))||Ce(t)===t)return[]}}function kb(e,t="codeindex",n){let r=wb(e.trim());if(!r||r.length<2||r.some(p=>p.globbed&&!p.value.startsWith("-")))return;let o=r.map(p=>p.value),[s,...a]=o,l;if(s==="grep"||s==="egrep"?l=jI(s,a):s==="rg"?l=WI(a):s==="git"&&a[0]==="grep"&&(l=BI(a.slice(1))),!l||!l.recursive||l.paths.length>1)return;let c=l.paths.length?JI(l.paths[0]):"";if(c===void 0||l.orderSensitive||l.skipHidden&&c.split("/").some(p=>p.startsWith(".")))return;if(n!==void 0&&s!=="git"){let p=ue(n,c||".");if(KI(n).some(g=>bb(g,p)||bb(p,g)))return}let d=p=>l.fixed?p!==p.toLowerCase():qI(p),u=l.smartCase?!l.patterns.some(d):l.ignoreCase,f=VI(l);if(f===void 0)return;try{Yu(f,u)}catch{return}let m=[t,"grep",...f.startsWith("-")?["--"]:[],os(f)];c&&m.push("--scope",os(c));for(let p of l.includes)m.push("--include",os(p));for(let p of[...l.excludes,...l.excludeDirs])m.push("--exclude",os(p));return l.skipHidden&&m.push("--exclude",os("**/.*"),"--exclude",os("**/.*/**")),u&&m.push("--ignore-case"),l.filesOnly&&m.push("--files-with-matches"),l.noGitignore&&m.push("--no-gitignore"),m.push("--ignore-dir",".codeindex"),m.join(" ")}var Uf,UI,HI,bb,Hf=H(()=>{"use strict";I();ve();pe();oo();Qe();Uf=/[[\]{}\\]/;UI={c:["*.c","*.h","*.H","*.c.in","*.h.in","*.H.in","*.cats"],cpp:["*.C","*.h","*.H","*.C.in","*.h.in","*.H.in","*.cpp","*.hpp","*.cpp.in","*.hpp.in","*.cxx","*.hxx","*.cxx.in","*.hxx.in","*.cc","*.cc.in","*.hh","*.hh.in","*.inl"],cs:["*.cs"],csharp:["*.cs"],css:["*.css","*.scss"],go:["*.go"],html:["*.ejs","*.htm","*.html"],java:["*.java","*.jsp","*.jspx","*.properties"],js:["*.cjs","*.js","*.jsx","*.mjs","*.vue"],json:["*.json","*.sarif","composer.lock"],kotlin:["*.kt","*.kts"],lua:["*.lua"],markdown:["*.markdown","*.md","*.mdown","*.mdwn","*.mdx","*.mkd","*.mkdn"],md:["*.markdown","*.md","*.mdown","*.mdwn","*.mdx","*.mkd","*.mkdn"],php:["*.php","*.php3","*.php4","*.php5","*.php7","*.php8","*.pht","*.phtml"],py:["*.py","*.pyi"],ruby:["*.gemspec","*.rb","*.rbw",".irbrc","Gemfile","Rakefile","config.ru"],rust:["*.rs"],scala:["*.sbt","*.scala"],sql:["*.psql","*.sql"],swift:["*.swift"],toml:["*.toml","Cargo.lock"],ts:["*.cts","*.mts","*.ts","*.tsx"],typescript:["*.cts","*.mts","*.ts","*.tsx"],txt:["*.txt"],yaml:["*.yaml","*.yml"]},HI={alpha:"A-Za-z",digit:"0-9",alnum:"A-Za-z0-9",upper:"A-Z",lower:"a-z",space:" \\t\\n\\r\\f\\v",blank:" \\t",xdigit:"0-9A-Fa-f",punct:"!-\\/:-@\\[-`{-~",word:"A-Za-z0-9_"};bb=(e,t)=>{let n=De(t,e);return n===""||n!==".."&&!n.startsWith(`..${"/"}`)&&!n.startsWith("/")}});I();I();ht();Xe();Bt();Bt();I();ve();pe();Jn();Er();Bt();ce();var RE=1024*1024;function qg(e,t={}){let n=[],{files:r,capped:o}=xs(e,{...t,precomputedWalk:void 0,onSkip:s=>n.push(s)});return{skips:n.sort(br(s=>s.rel)),files:r,capped:o}}function Pa(e){let t=new Map;for(let r of e)t.set(r.reason,(t.get(r.reason)??0)+1);let n={};for(let r of[...t.keys()].sort(T))n[r]=t.get(r);return n}function Pd(e,t,n={}){let r=er(e,t);if(r===".."||r.startsWith("../")||Pe(r))return{path:t,indexed:!1,reason:"outside-repo",detail:{}};let o=r||".",{skips:s,files:a,capped:l}=qg(e,n),c=a.find(f=>f.rel===r);if(c)return{path:o,indexed:!0,reason:null,detail:{kind:Ct(c.rel,c.ext),lang:tn(c.ext),size:c.size}};let d;try{d=zn(j(e,r))}catch{return{path:o,indexed:!1,reason:"not-found",detail:{}}}let u=new Map(s.map(f=>[f.rel,f]));for(let f=r;f;f=f.slice(0,Math.max(0,f.lastIndexOf("/")))){let m=u.get(f);if(m){let p={...f===r?{}:{dir:f},...ME(e,n,r,m)};return{path:o,indexed:!1,reason:m.reason,detail:p}}}if(r===".git"||r.startsWith(".git/"))return{path:o,indexed:!1,reason:"ignore-dir",detail:{dir:".git"}};if(d.isDirectory()){let f=r?`${r}/`:"",m=a.filter(g=>g.rel.startsWith(f)).length,p=Pa(s.filter(g=>g.rel.startsWith(f)));return{path:o,indexed:m>0,reason:m>0?null:"no-indexed-files",detail:{directory:!0,files:m,skipped:p}}}return l?{path:o,indexed:!1,reason:"max-files",detail:{maxFiles:n.maxFiles}}:{path:o,indexed:!1,reason:"not-walked",detail:{}}}function ME(e,t,n,r){switch(r.reason){case"gitignored":return r.rule?{...r.rule}:{};case"over-max-bytes":return{size:r.size,maxBytes:t.maxBytes??RE};case"filter":return Gg(e,t,n)??{};case"binary-ext":return{ext:Un(r.rel).toLowerCase()};case"index-output":return{out:t.out};case"file-symlink":case"directory-symlink":case"symlink-outside-root":try{let o=nt(j(e,r.rel)),s=De(nt(e),o);return{target:s.startsWith("..")||Pe(s)?o:s.split("/").join("/")}}catch{return{}}default:return{}}}tr();Ua();Fi();gi();wc();Jn();I();pe();var ZE=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".svelte",".astro",".py",".rb",".go",".rs",".java",".kt",".kts",".php",".c",".cc",".cpp",".h",".hpp",".cs",".swift",".scala",".clj",".ex",".exs",".dart",".lua",".sh",".bash",".zig",".elm",".hcl",".tf",".tfvars",".sol",".hh",".sc",".pyi",".rake",".cxx"]),YE=new Set([".css",".scss",".sass",".less",".styl",".pcss"]),QE=new Set([".md",".mdx",".rst",".adoc",".txt"]),ev=new Set([".json",".yaml",".yml",".toml",".csv",".xml",".env"]),tv=new Set([".png",".jpg",".jpeg",".gif",".webp",".avif",".ico",".bmp",".tiff",".svg",".pdf",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".zip",".gz",".tar",".rar",".7z",".wasm",".so",".dylib",".dll",".exe",".bin",".class",".jar",".pyc",".node"]),nv=["locales","locale","i18n","lang","langs","translations","messages"],rv=new Set([".json",".yaml",".yml",".po",".properties"]),sv=["__tests__","test","tests","spec","e2e","__mocks__"],iv=["migrations","entities","models"],ov=new Set(["package.json","tsconfig.json","dockerfile","makefile","pyproject.toml","cargo.toml","go.mod","requirements.txt","gemfile","composer.json","pubspec.yaml"]);function av(e,t){let n=e.toLowerCase(),r=je(n),o=n.split("/"),s=a=>a.some(l=>o.includes(l));return s(nv)&&rv.has(t)?"i18n":t===".prisma"||t===".sql"||t===".graphql"||t===".gql"||r.startsWith("schema.")||r==="models.py"||s(iv)?"schema":n.includes(".test.")||n.includes(".spec.")||s(sv)?"test":ov.has(r)||r.endsWith(".config.js")||r.endsWith(".config.ts")||r.endsWith(".config.mjs")||r.startsWith(".eslintrc")||r.startsWith(".prettierrc")||r.startsWith(".env")||r.startsWith("docker-compose")?"config":QE.has(t)?"doc":YE.has(t)?"style":ZE.has(t)?"code":tv.has(t)?"asset":ev.has(t)?"data":"other"}Er();Fa();Kc();Qc();ft();Ed();I();ve();pe();fd();ft();ce();var rh=new Map;function sh(e,t){let n=rh.get(e);if(n!==void 0)return n;let r=null;for(let o of jt().dirs){let s=j(o,`${e}.tags.scm`);if(te(s)){try{r=new Jp(t,le(s,"utf8"))}catch{r=null}break}}return rh.set(e,r),r}function lv(e){if(!jt().dirs.some(r=>te(j(r,`${e}.tags.scm`))))return{present:!1,compiled:!1};let n=md(e);return n?{present:!0,compiled:sh(e,n)!==null}:{present:!0,compiled:!1}}function cv(e,t){let n=Sa(e,t);if(!n)return[];let r=md(n),o=bs(n);if(!r||!o)return[];let s=sh(n,r);if(!s)return[];let a=null;try{if(a=o.parse(t),!a)return[];let l=[],c=new Set;for(let d of s.matches(a.rootNode)){let u,f,m=0;for(let g of d.captures)g.name==="name"?(u=g.node.text,m=g.node.startPosition.row+1):g.name.startsWith("definition.")&&(f=g.name.slice(11));if(!u||!f)continue;let p=`${f} ${u} ${m}`;c.has(p)||(c.add(p),l.push({kind:f,name:u,line:m}))}return l.sort((d,u)=>d.line-u.line||T(d.name,u.name)||T(d.kind,u.kind))}catch{return[]}finally{a?.delete()}}ft();ft();I();na();ve();pe();I();function ih(){throw new Error("zlib.gunzipSync is not available in the browser build (use DecompressionStream at an async boundary)")}ht();var Zd=`https://github.com/maxgfr/codeindex/releases/download/v${$e}/grammars-${$e}.tar.gz`;function Ha(){let e=F.env.CODEINDEX_GRAMMARS_URL;return e&&e.trim()?{url:e.trim()}:{url:Zd,sha256Url:`${Zd}.sha256`}}async function oh(e,t){let n=await fetch(e);if(!n.ok)throw new Error(`HTTP ${n.status} from ${e}`);let r=W.from(await n.arrayBuffer());if(t){let o=us("sha256").update(r).digest("hex");if(o!==t)throw new Error(`sha256 mismatch: expected ${t}, got ${o}`)}return r}function ah(e){return W.isBuffer(e)?e:W.from(e.buffer,e.byteOffset,e.byteLength)}async function lh(e){let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} from ${e}`);let r=((await t.text()).trim().split(/\s+/)[0]??"").toLowerCase();if(!/^[0-9a-f]{64}$/.test(r))throw new Error(`invalid sha256 sidecar at ${e}`);return r}function Xd(e,t,n){let r=e.subarray(t,t+n),o=r.indexOf(0);return r.toString("utf8",0,o===-1?r.length:o)}function*dv(e){let t=0;for(;t+512<=e.length;){let n=e.subarray(t,t+512),r=!0;for(let u=0;u<512;u++)if(n[u]!==0){r=!1;break}if(r)break;let o=Xd(n,0,100),s=Xd(n,345,155),a=Xd(n,124,12).trim(),l=a?parseInt(a,8):0,c=String.fromCharCode(n[156]??0);t+=512;let d=e.subarray(t,t+l);if(d.length!==l)throw new Error(`truncated grammars archive: ${o} declares ${l} bytes, ${d.length} remain`);t+=Math.ceil(l/512)*512,yield{name:s?`${s}/${o}`:o,type:c,data:d}}}function uv(e){if(!e||e.includes("\0")||e.startsWith("/")||e.startsWith("\\")||/^[A-Za-z]:/.test(e))return null;let t=[];for(let n of e.split(/[/\\]/))if(!(n===""||n===".")){if(n==="..")return null;t.push(n)}return t.length?t.join("/"):null}function ch(e,t){let n=ue(t),r=[];for(let o of dv(ah(e))){if(o.type!=="0"&&o.type!=="\0")continue;let s=uv(o.name);if(s===null)throw new Error(`refusing unsafe tar entry: ${o.name}`);let a=ue(t,s);if(a!==n&&!a.startsWith(n+"/"))throw new Error(`tar entry escapes destination: ${o.name}`);Xt(Ce(a),{recursive:!0}),st(a,o.data),r.push(s)}return r}function dh(e,t){let n=ah(e),r=n.length>=2&&n[0]===31&&n[1]===139?ih(n):n;return ch(r,t)}function fv(e,t,n,r,o=kn,s=Je){let a=Ce(t),l=yr(j(a,".grammars-swap-")),c=j(l,"previous-cache"),d=j(l,"previous-marker"),u=j(l,"next-marker"),f=!1,m=!1,p=!1,g=!1;try{r&&st(u,r+` -`),te(t)&&(o(t,c),f=!0),te(n)&&(o(n,d),m=!0),o(e,t),p=!0,r&&(o(u,n),g=!0)}catch(h){let _=[],y=b=>{try{b()}catch(w){_.push(w)}};if(g&&te(n)&&y(()=>Je(n,{force:!0})),p&&te(t)&&y(()=>Je(t,{recursive:!0,force:!0})),m&&te(d)&&y(()=>o(d,n)),f&&te(c)&&y(()=>o(c,t)),_.length===0)try{Je(l,{recursive:!0,force:!0})}catch{}if(_.length>0){let b=_[0];throw new Error(`${h instanceof Error?h.message:String(h)}; rollback failed: ${b instanceof Error?b.message:String(b)} (backup preserved at ${l})`)}throw h}try{s(l,{recursive:!0,force:!0})}catch{}}async function Li(e,t={}){let n=t.onNote??(()=>{}),r=Ha(),o;if(r.sha256Url)try{o=await lh(r.sha256Url)}catch(d){n(`codeindex: could not fetch checksum (${d instanceof Error?d.message:String(d)}) \u2014 proceeding unverified -`)}let s=j(e,"web-tree-sitter.wasm"),a=j(Ce(e),`${$e}.sha256`);if(te(s)&&o&&te(a)){let d="";try{d=le(a,"utf8").trim()}catch{}if(d===o)return{ok:!0,status:"up-to-date",cacheDir:e,message:`codeindex: grammars already present at ${e} (up to date) +`||l==="\r")return;n+=l,r=!0,s++}else if(a===" "||a===" ")(r||n)&&t.push({value:n,globbed:o}),n="",r=!1,o=!1;else{if(/[|&;<>()$`\n\r{}]/.test(a))return;if((a==="#"||a==="~")&&!r&&!n)return;(a==="*"||a==="?"||a==="[")&&(o=!0),n+=a}}return(r||n)&&t.push({value:n,globbed:o}),t}function iT(e){return Pb(e)?.map(t=>t.value)}function ls(e){return e!==""&&!/[^A-Za-z0-9_\-./=@:]/.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'"}function Xf(e,t){let n=[],r=[],o=-1;for(let s=0;s2)return;n.noGitignore=!0,r===2&&(o=!0);break;case"--hidden":case"-.":o=!0;break;case"--sort":if(l!=="path")return;break;case"-n":case"--line-number":case"-N":case"--no-line-number":case"-H":case"--with-filename":case"-I":case"--no-filename":case"--no-heading":case"--heading":case"--column":case"-p":case"--pretty":case"--sort-files":case"-j":case"--threads":break;case"--color":if(l!==void 0&&!["never","auto","always","ansi"].includes(l))return;break;default:return}if(Lb(n,t.positionals)&&!(n.types.length&&s.some(a=>!a.negated))){for(let{glob:a,negated:l}of s){let c=aT(a,n.paths.length===0);if(!(l?Kf(n,c):xc(n,c)))return}return n.skipHidden=!o,n}}function dT(e){let t=Xf(e,new Set(["-e"]));if(!t)return;let n=Zf("bre",!0);for(let{name:d,value:u}of t.flags)switch(d){case"-i":case"-y":case"--ignore-case":n.ignoreCase=!0;break;case"-E":case"--extended-regexp":n.dialect="ere";break;case"-G":case"--basic-regexp":n.dialect="bre";break;case"-F":case"--fixed-strings":n.fixed=!0;break;case"-w":case"--word-regexp":n.word=!0;break;case"-e":n.patterns.push(u);break;case"-l":case"--files-with-matches":case"--name-only":n.filesOnly=!0;break;case"-n":case"--line-number":case"-I":case"-r":case"--recursive":case"--no-color":case"--full-name":break;default:return}let{positionals:r,afterDashDash:o}=t,s=o===-1?r.length:o;if(n.patterns.length===0){if(s===0||(n.patterns.push(r[0]),s>1))return}else if(s>0)return;let a=o===-1?[]:r.slice(o),l=a.filter(d=>!/[*?]/.test(d)),c=a.filter(d=>/[*?]/.test(d));if(!a.some(d=>d.startsWith(":")||Yf.test(d))&&!(l.length>1||l.length&&c.length)){for(let d of c)if(d.includes("/")||!xc(n,`**/${d}`))return;return n.paths.push(...l),n}}function Lb(e,t){let n=[...t];if(e.patterns.length===0){let r=n.shift();if(r===void 0)return!1;e.patterns.push(r)}return e.paths=n,!0}function Db(e,t,n){let r=t+1,o="[";e[r]==="^"&&(o+="^",r++);for(let s=!0;r")n+="\\b";else if("wWsSbB".includes(l)||/[1-9]/.test(l))n+=`\\${l}`;else if(/[.*[\]^$\\/+?(){}|]/.test(l))n+=`\\${l}`;else return;continue}if(s==="["){let l=Db(e,o,"bre");if(!l)return;n+=l[0],o=l[1]}else if(s==="*")n+=a?"\\*":"*";else if(s==="^")n+=t||a?"^":"\\^",r=a;else if(s==="$"){let l=e.slice(o+1);n+=t||l===""||l.startsWith("\\)")||l.startsWith("\\|")?"$":"\\$"}else if(!t&&"()|+?{}".includes(s))n+=`\\${s}`;else if(t&&s==="{"){let l=/^\{(\d*)(,?)(\d*)\}/.exec(e.slice(o));l&&(l[1]!==""||l[2]!=="")?(n+=`{${l[1]||"0"}${l[2]}${l[3]}}`,o+=l[0].length-1):n+="\\{"}else if(t&&s==="}")n+="\\}";else{if(t&&(s==="+"||s==="?"||s==="*")&&a)return;n+=s,r=t&&(s==="("||s==="|")}}return n}function pT(e){let t="";for(let n=0;n]/.test(o))return;t+=`\\${o}`}continue}if(r==="["){let o=Db(e,n,"rust");if(!o)return;t+=o[0],n=o[1]}else if(r==="("&&e[n+1]==="?"){let o=/^\(\?(?::|P?<([A-Za-z_]\w*)>)/.exec(e.slice(n));if(!o)return;t+=o[1]?`(?<${o[1]}>`:"(?:",n+=o[0].length-1}else if(r==="{"){let o=/^\{\d+(?:,\d*)?\}/.exec(e.slice(n));if(!o)return;t+=o[0],n+=o[0].length-1}else t+=r}return t}function gT(e){let t=e.replace(/\\[pP]\{[^}]*\}|\\[pP][A-Za-z]|\\./g,"");return t!==t.toLowerCase()}function hT(e){let t=[];for(let r of e.patterns){if(r===""||r.includes(` +`))return;let o=e.fixed?bt(r):e.dialect==="rust"?pT(r):mT(r,e.dialect==="ere");if(o===void 0)return;t.push(o)}let n=t.length===1?t[0]:t.map(r=>`(?:${r})`).join("|");if(e.word){let r=e.patterns.every(s=>(e.fixed||!/[\\^$.*+?()[\]{}|]/.test(s))&&/^\w(?:.*\w)?$/.test(s)),o=t.length===1&&r?n:`(?:${n})`;n=r?`\\b${o}\\b`:`(?n===".."))return t===""||t==="."?"":t}function _T(e){for(let t=ae(e);;t=Me(t)){let n=j(t,".gitmodules");if(ne(n)){let r;try{r=ie(n,"utf8")}catch{return[]}return[...r.matchAll(/^\s*path\s*=\s*(.+?)\s*$/gm)].map(o=>ae(t,o[1]))}if(ne(j(t,".git"))||Me(t)===t)return[]}}function jb(e,t="codeindex",n){let r=Pb(e.trim());if(!r||r.length<2||r.some(p=>p.globbed&&!p.value.startsWith("-")))return;let o=r.map(p=>p.value),[s,...a]=o,l;if(s==="grep"||s==="egrep"?l=lT(s,a):s==="rg"?l=cT(a):s==="git"&&a[0]==="grep"&&(l=dT(a.slice(1))),!l||!l.recursive||l.paths.length>1)return;let c=l.paths.length?yT(l.paths[0]):"";if(c===void 0||l.orderSensitive||l.skipHidden&&c.split("/").some(p=>p.startsWith(".")))return;if(n!==void 0&&s!=="git"){let p=ae(n,c||".");if(_T(n).some(g=>Nb(g,p)||Nb(p,g)))return}let d=p=>l.fixed?p!==p.toLowerCase():gT(p),u=l.smartCase?!l.patterns.some(d):l.ignoreCase,f=hT(l);if(f===void 0)return;try{cf(f,u)}catch{return}let m=[t,"grep",...f.startsWith("-")?["--"]:[],ls(f)];c&&m.push("--scope",ls(c));for(let p of l.includes)m.push("--include",ls(p));for(let p of[...l.excludes,...l.excludeDirs])m.push("--exclude",ls(p));return l.skipHidden&&m.push("--exclude",ls("**/.*"),"--exclude",ls("**/.*/**")),u&&m.push("--ignore-case"),l.filesOnly&&m.push("--files-with-matches"),l.noGitignore&&m.push("--no-gitignore"),m.push("--ignore-dir",".codeindex"),m.join(" ")}var Yf,uT,fT,Nb,Qf=z(()=>{"use strict";I();Ee();fe();co();et();Yf=/[[\]{}\\]/;uT={c:["*.c","*.h","*.H","*.c.in","*.h.in","*.H.in","*.cats"],cpp:["*.C","*.h","*.H","*.C.in","*.h.in","*.H.in","*.cpp","*.hpp","*.cpp.in","*.hpp.in","*.cxx","*.hxx","*.cxx.in","*.hxx.in","*.cc","*.cc.in","*.hh","*.hh.in","*.inl"],cs:["*.cs"],csharp:["*.cs"],css:["*.css","*.scss"],go:["*.go"],html:["*.ejs","*.htm","*.html"],java:["*.java","*.jsp","*.jspx","*.properties"],js:["*.cjs","*.js","*.jsx","*.mjs","*.vue"],json:["*.json","*.sarif","composer.lock"],kotlin:["*.kt","*.kts"],lua:["*.lua"],markdown:["*.markdown","*.md","*.mdown","*.mdwn","*.mdx","*.mkd","*.mkdn"],md:["*.markdown","*.md","*.mdown","*.mdwn","*.mdx","*.mkd","*.mkdn"],php:["*.php","*.php3","*.php4","*.php5","*.php7","*.php8","*.pht","*.phtml"],py:["*.py","*.pyi"],ruby:["*.gemspec","*.rb","*.rbw",".irbrc","Gemfile","Rakefile","config.ru"],rust:["*.rs"],scala:["*.sbt","*.scala"],sql:["*.psql","*.sql"],swift:["*.swift"],toml:["*.toml","Cargo.lock"],ts:["*.cts","*.mts","*.ts","*.tsx"],typescript:["*.cts","*.mts","*.ts","*.tsx"],txt:["*.txt"],yaml:["*.yaml","*.yml"]},fT={alpha:"A-Za-z",digit:"0-9",alnum:"A-Za-z0-9",upper:"A-Z",lower:"a-z",space:" \\t\\n\\r\\f\\v",blank:" \\t",xdigit:"0-9A-Fa-f",punct:"!-\\/:-@\\[-`{-~",word:"A-Za-z0-9_"};Nb=(e,t)=>{let n=De(t,e);return n===""||n!==".."&&!n.startsWith(`..${"/"}`)&&!n.startsWith("/")}});I();I();_t();Ze();Ut();Ut();I();Ee();fe();Mn();Rr();Ut();le();var JE=1024*1024;function oh(e,t={}){let n=[],{files:r,capped:o}=Es(e,{...t,precomputedWalk:void 0,onSkip:s=>n.push(s)});return{skips:n.sort(xr(s=>s.rel)),files:r,capped:o}}function ja(e){let t=new Map;for(let r of e)t.set(r.reason,(t.get(r.reason)??0)+1);let n={};for(let r of[...t.keys()].sort($))n[r]=t.get(r);return n}function Gd(e,t,n={}){let r=er(e,t);if(r===".."||r.startsWith("../")||Ne(r))return{path:t,indexed:!1,reason:"outside-repo",detail:{}};let o=r||".",{skips:s,files:a,capped:l}=oh(e,n),c=a.find(f=>f.rel===r);if(c)return{path:o,indexed:!0,reason:null,detail:{kind:mt(c.rel,c.ext),lang:nn(c.ext),size:c.size}};let d;try{d=Hn(j(e,r))}catch{return{path:o,indexed:!1,reason:"not-found",detail:{}}}let u=new Map(s.map(f=>[f.rel,f]));for(let f=r;f;f=f.slice(0,Math.max(0,f.lastIndexOf("/")))){let m=u.get(f);if(m){let p={...f===r?{}:{dir:f},...KE(e,n,r,m)};return{path:o,indexed:!1,reason:m.reason,detail:p}}}if(r===".git"||r.startsWith(".git/"))return{path:o,indexed:!1,reason:"ignore-dir",detail:{dir:".git"}};if(d.isDirectory()){let f=r?`${r}/`:"",m=a.filter(g=>g.rel.startsWith(f)).length,p=ja(s.filter(g=>g.rel.startsWith(f)));return{path:o,indexed:m>0,reason:m>0?null:"no-indexed-files",detail:{directory:!0,files:m,skipped:p}}}return l?{path:o,indexed:!1,reason:"max-files",detail:{maxFiles:n.maxFiles}}:{path:o,indexed:!1,reason:"not-walked",detail:{}}}function KE(e,t,n,r){switch(r.reason){case"gitignored":return r.rule?{...r.rule}:{};case"over-max-bytes":return{size:r.size,maxBytes:t.maxBytes??JE};case"filter":return ih(e,t,n)??{};case"binary-ext":return{ext:un(r.rel).toLowerCase()};case"index-output":return{out:t.out};case"file-symlink":case"directory-symlink":case"symlink-outside-root":try{let o=st(j(e,r.rel)),s=De(st(e),o);return{target:s.startsWith("..")||Ne(s)?o:s.split("/").join("/")}}catch{return{}}default:return{}}}tr();Ga();Pi();yi();Ac();Mn();I();fe();var bv=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".svelte",".astro",".py",".rb",".go",".rs",".java",".kt",".kts",".php",".c",".cc",".cpp",".h",".hpp",".cs",".swift",".scala",".clj",".ex",".exs",".dart",".lua",".sh",".bash",".zig",".elm",".hcl",".tf",".tfvars",".sol",".hh",".sc",".pyi",".rake",".cxx"]),wv=new Set([".css",".scss",".sass",".less",".styl",".pcss"]),xv=new Set([".md",".mdx",".rst",".adoc",".txt"]),Sv=new Set([".json",".yaml",".yml",".toml",".csv",".xml",".env"]),kv=new Set([".png",".jpg",".jpeg",".gif",".webp",".avif",".ico",".bmp",".tiff",".svg",".pdf",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".zip",".gz",".tar",".rar",".7z",".wasm",".so",".dylib",".dll",".exe",".bin",".class",".jar",".pyc",".node"]),Ev=["locales","locale","i18n","lang","langs","translations","messages"],vv=new Set([".json",".yaml",".yml",".po",".properties"]),Rv=["__tests__","test","tests","spec","e2e","__mocks__"],Cv=["migrations","entities","models"],Mv=new Set(["package.json","tsconfig.json","dockerfile","makefile","pyproject.toml","cargo.toml","go.mod","requirements.txt","gemfile","composer.json","pubspec.yaml"]);function Av(e,t){let n=e.toLowerCase(),r=je(n),o=n.split("/"),s=a=>a.some(l=>o.includes(l));return s(Ev)&&vv.has(t)?"i18n":t===".prisma"||t===".sql"||t===".graphql"||t===".gql"||r.startsWith("schema.")||r==="models.py"||s(Cv)?"schema":n.includes(".test.")||n.includes(".spec.")||s(Rv)?"test":Mv.has(r)||r.endsWith(".config.js")||r.endsWith(".config.ts")||r.endsWith(".config.mjs")||r.startsWith(".eslintrc")||r.startsWith(".prettierrc")||r.startsWith(".env")||r.startsWith("docker-compose")?"config":xv.has(t)?"doc":wv.has(t)?"style":bv.has(t)?"code":kv.has(t)?"asset":Sv.has(t)?"data":"other"}Rr();Pa();sd();ld();pt();Fd();I();Ee();fe();xd();pt();le();var yh=new Map;function _h(e,t){let n=yh.get(e);if(n!==void 0)return n;let r=null;for(let o of Wt().dirs){let s=j(o,`${e}.tags.scm`);if(ne(s)){try{r=new lg(t,ie(s,"utf8"))}catch{r=null}break}}return yh.set(e,r),r}function Iv(e){if(!Wt().dirs.some(r=>ne(j(r,`${e}.tags.scm`))))return{present:!1,compiled:!1};let n=Sd(e);return n?{present:!0,compiled:_h(e,n)!==null}:{present:!0,compiled:!1}}function Tv(e,t){let n=va(e,t);if(!n)return[];let r=Sd(n),o=Ss(n);if(!r||!o)return[];let s=_h(n,r);if(!s)return[];let a=null;try{if(a=o.parse(t),!a)return[];let l=[],c=new Set;for(let d of s.matches(a.rootNode)){let u,f,m=0;for(let g of d.captures)g.name==="name"?(u=g.node.text,m=g.node.startPosition.row+1):g.name.startsWith("definition.")&&(f=g.name.slice(11));if(!u||!f)continue;let p=`${f} ${u} ${m}`;c.has(p)||(c.add(p),l.push({kind:f,name:u,line:m}))}return l.sort((d,u)=>d.line-u.line||$(d.name,u.name)||$(d.kind,u.kind))}catch{return[]}finally{a?.delete()}}pt();pt();I();ia();Ee();fe();I();function bh(){throw new Error("zlib.gunzipSync is not available in the browser build (use DecompressionStream at an async boundary)")}_t();var ou=`https://github.com/maxgfr/codeindex/releases/download/v${Te}/grammars-${Te}.tar.gz`;function qa(){let e=O.env.CODEINDEX_GRAMMARS_URL;return e&&e.trim()?{url:e.trim()}:{url:ou,sha256Url:`${ou}.sha256`}}async function wh(e,t){let n=await fetch(e);if(!n.ok)throw new Error(`HTTP ${n.status} from ${e}`);let r=W.from(await n.arrayBuffer());if(t){let o=gs("sha256").update(r).digest("hex");if(o!==t)throw new Error(`sha256 mismatch: expected ${t}, got ${o}`)}return r}function xh(e){return W.isBuffer(e)?e:W.from(e.buffer,e.byteOffset,e.byteLength)}async function Sh(e){let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} from ${e}`);let r=((await t.text()).trim().split(/\s+/)[0]??"").toLowerCase();if(!/^[0-9a-f]{64}$/.test(r))throw new Error(`invalid sha256 sidecar at ${e}`);return r}function iu(e,t,n){let r=e.subarray(t,t+n),o=r.indexOf(0);return r.toString("utf8",0,o===-1?r.length:o)}function*$v(e){let t=0;for(;t+512<=e.length;){let n=e.subarray(t,t+512),r=!0;for(let u=0;u<512;u++)if(n[u]!==0){r=!1;break}if(r)break;let o=iu(n,0,100),s=iu(n,345,155),a=iu(n,124,12).trim(),l=a?parseInt(a,8):0,c=String.fromCharCode(n[156]??0);t+=512;let d=e.subarray(t,t+l);if(d.length!==l)throw new Error(`truncated grammars archive: ${o} declares ${l} bytes, ${d.length} remain`);t+=Math.ceil(l/512)*512,yield{name:s?`${s}/${o}`:o,type:c,data:d}}}function Fv(e){if(!e||e.includes("\0")||e.startsWith("/")||e.startsWith("\\")||/^[A-Za-z]:/.test(e))return null;let t=[];for(let n of e.split(/[/\\]/))if(!(n===""||n===".")){if(n==="..")return null;t.push(n)}return t.length?t.join("/"):null}function kh(e,t){let n=ae(t),r=[];for(let o of $v(xh(e))){if(o.type!=="0"&&o.type!=="\0")continue;let s=Fv(o.name);if(s===null)throw new Error(`refusing unsafe tar entry: ${o.name}`);let a=ae(t,s);if(a!==n&&!a.startsWith(n+"/"))throw new Error(`tar entry escapes destination: ${o.name}`);Zt(Me(a),{recursive:!0}),ot(a,o.data),r.push(s)}return r}function Eh(e,t){let n=xh(e),r=n.length>=2&&n[0]===31&&n[1]===139?bh(n):n;return kh(r,t)}function Ov(e,t,n,r,o=En,s=Ke){let a=Me(t),l=br(j(a,".grammars-swap-")),c=j(l,"previous-cache"),d=j(l,"previous-marker"),u=j(l,"next-marker"),f=!1,m=!1,p=!1,g=!1;try{r&&ot(u,r+` +`),ne(t)&&(o(t,c),f=!0),ne(n)&&(o(n,d),m=!0),o(e,t),p=!0,r&&(o(u,n),g=!0)}catch(h){let _=[],y=b=>{try{b()}catch(x){_.push(x)}};if(g&&ne(n)&&y(()=>Ke(n,{force:!0})),p&&ne(t)&&y(()=>Ke(t,{recursive:!0,force:!0})),m&&ne(d)&&y(()=>o(d,n)),f&&ne(c)&&y(()=>o(c,t)),_.length===0)try{Ke(l,{recursive:!0,force:!0})}catch{}if(_.length>0){let b=_[0];throw new Error(`${h instanceof Error?h.message:String(h)}; rollback failed: ${b instanceof Error?b.message:String(b)} (backup preserved at ${l})`)}throw h}try{s(l,{recursive:!0,force:!0})}catch{}}async function Wi(e,t={}){let n=t.onNote??(()=>{}),r=qa(),o;if(r.sha256Url)try{o=await Sh(r.sha256Url)}catch(d){n(`codeindex: could not fetch checksum (${d instanceof Error?d.message:String(d)}) \u2014 proceeding unverified +`)}let s=j(e,"web-tree-sitter.wasm"),a=j(Me(e),`${Te}.sha256`);if(ne(s)&&o&&ne(a)){let d="";try{d=ie(a,"utf8").trim()}catch{}if(d===o)return{ok:!0,status:"up-to-date",cacheDir:e,message:`codeindex: grammars already present at ${e} (up to date) `}}n(`codeindex: fetching grammars from ${r.url} \u2192 ${e} -`);let l;try{l=await oh(r.url,o)}catch(d){return{ok:!1,status:"failed",cacheDir:e,message:`codeindex: pull failed \u2014 ${d instanceof Error?d.message:String(d)} (nothing written) -`}}let c;try{if(Xt(Ce(e),{recursive:!0}),c=yr(j(Ce(e),".grammars-tmp-")),dh(l,c),!te(j(c,"web-tree-sitter.wasm")))throw new Error("archive is missing web-tree-sitter.wasm");fv(c,e,a,o),c=void 0}catch(d){if(c)try{Je(c,{recursive:!0,force:!0})}catch{}return{ok:!1,status:"failed",cacheDir:e,message:`codeindex: pull failed \u2014 ${d instanceof Error?d.message:String(d)} (nothing written) +`);let l;try{l=await wh(r.url,o)}catch(d){return{ok:!1,status:"failed",cacheDir:e,message:`codeindex: pull failed \u2014 ${d instanceof Error?d.message:String(d)} (nothing written) +`}}let c;try{if(Zt(Me(e),{recursive:!0}),c=br(j(Me(e),".grammars-tmp-")),Eh(l,c),!ne(j(c,"web-tree-sitter.wasm")))throw new Error("archive is missing web-tree-sitter.wasm");Ov(c,e,a,o),c=void 0}catch(d){if(c)try{Ke(c,{recursive:!0,force:!0})}catch{}return{ok:!1,status:"failed",cacheDir:e,message:`codeindex: pull failed \u2014 ${d instanceof Error?d.message:String(d)} (nothing written) `}}return{ok:!0,status:"pulled",cacheDir:e,message:`codeindex: grammars extracted \u2192 ${e} -`}}I();ft();async function mv(e={}){let t=e.label??"codeindex",n=[],r=u=>{n.push(u),e.onNote?e.onNote(u):F.stderr.write(u)},o=F.env.CODEINDEX_NO_GRAMMARS_PULL,s=(e.pull??!0)&&!(o&&o.trim()&&o!=="0"),a=[...e.keys??Ea()],l=!1;if(jt().tier==="none"&&s){r(`${t}: tree-sitter grammars not found locally \u2014 pulling them into the shared cache (once per machine)\u2026 -`);let u=await Li(_s(),{onNote:r});r(u.message),l=u.ok&&u.status==="pulled"}await sn(a);let c=jt().tier,d=a.some(u=>Le(u));return d||r(`${t}: no tree-sitter grammars available (offline?) \u2014 extracting with the regex tier, so symbols and call sites are less precise. Run \`codeindex grammars pull\` once online to enable AST precision. -`),{tier:c,ready:d,pulled:l,notes:n}}Cn();vs();ol();ir();In();Dr();or();Ps();Lu();gl();Hr();Ki();Vu();lr();Ju();Wi();wl();I();pe();yi();ht();Xe();ce();Ms();mt();In();Hr();var wn=class{buf;len=0;constructor(t=64){this.buf=new Uint8Array(t)}get length(){return this.len}grow(t){if(this.len+t<=this.buf.length)return;let n=this.buf.length*2||64;for(;n127;)e.push(t&127|128),t=Math.floor(t/128);e.push(t&127)}function zy(e,t,n){xl(e,t*8+n)}function Ds(e,t,n){zy(e,t,0),xl(e,n)}function Gy(e,t,n){zy(e,t,2),xl(e,n.length),e.pushAll(n)}function Gr(e,t,n){Gy(e,t,n.view())}function On(e,t,n){Gy(e,t,OM.encode(n))}function NM(e,t,n){let r=new wn(n.length*2);for(let o of n)xl(r,o);Gr(e,t,r)}var PM=1,LM=2,DM=2,jM=3,WM=4,BM=1,UM=2,HM=1,zM=2,GM=3,qM=4,VM=6,JM=1,KM=2,XM=3,ZM=1,YM=4,QM=5,eC=6,tC=1,nC=2,rC=3,sC=1,iC=1,oC=2,aC="codeindex",Dy=". . .",lC=new Map([["typescript","package.json"],["javascript","package.json"],["go","go.mod"],["rust","Cargo.toml"],["python","pyproject.toml"],["java","pom.xml"],["kotlin","pom.xml"],["scala","pom.xml"],["php","composer.json"]]);function Ku(e){return e?e.replace(/ /g," "):"."}var cC=/^[A-Za-z0-9_+\-$]+$/;function qy(e){return cC.test(e)?e:"`"+e.replace(/`/g,"``")+"`"}function dC(e){return"`"+e.replace(/`/g,"``")+"`/"}var Vy=new Map([["class",[7,"#"]],["record",[7,"#"]],["interface",[21,"#"]],["annotation",[21,"#"]],["enum",[11,"#"]],["struct",[49,"#"]],["exception",[49,"#"]],["trait",[53,"#"]],["type",[54,"#"]],["opaque",[54,"#"]],["union",[59,"#"]],["protocol",[42,"#"]],["delegate",[73,"#"]],["contract",[62,"#"]],["library",[64,"#"]],["mixin",[85,"#"]],["extension",[84,"#"]],["concept",[86,"#"]],["error",[63,"#"]],["namespace",[30,"/"]],["package",[35,"/"]],["module",[29,"/"]],["mod",[29,"/"]],["impl",[29,"/"]],["function",[17,"()."]],["test",[17,"()."]],["method",[26,"()."]],["def",[26,"()."]],["destructor",[26,"()."]],["fallback",[26,"()."]],["receive",[26,"()."]],["call-signature",[26,"()."]],["constructor",[9,"()."]],["construct-signature",[9,"()."]],["getter",[18,"()."]],["setter",[45,"()."]],["operator",[34,"()."]],["modifier",[65,"()."]],["attr",[72,"()."]],["indexer",[47,"()."]],["index-signature",[47,"()."]],["macro",[25,"!"]],["guard",[25,"!"]],["const",[8,"."]],["val",[8,"."]],["var",[61,"."]],["variable",[61,"."]],["static",[82,"."]],["field",[15,"."]],["property",[41,"."]],["enum-member",[12,"."]],["event",[13,"."]],["object",[33,"."]]]),uC=e=>Vy.get(e)?.[0],fC=e=>Vy.get(e)?.[1]??".",mC=e=>e==="#"||e==="/";function pC(e,t,n,r,o){let s=qy(t),a=e+s+n;if(!o.has(a))return o.add(a),a;for(let l=0;;l++){let c=l===0?String(r):`${r}_${l}`,d=n==="()."?`${e}${s}(${c}).`:`${a}(${c})`;if(!o.has(d))return o.add(d),d}}function jy(e){return e==="typescript"||e==="javascript"||e==="vue"||e==="svelte"||e==="astro"?"js":e==="c"||e==="cpp"?"c":e}var Wy=new Set(["reexport","reexport-all","default"]);function By(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95||e===36}function Uy(e,t){if(!t)return null;let n=/^[A-Za-z_$][\w$]*$/.test(t),r=0;for(;;){let o=e.indexOf(t,r);if(o<0)return null;if(!n)return[o,o+t.length];let s=o>0?e.charCodeAt(o-1):-1,a=o+t.length,l=ae.sym.endLine??e.sym.line,Xu=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";function Hy(e){let t=e.symbols.find(n=>n.kind==="package")?.name??"";return`${Xu(e.rel)}\0${t}`}function Zu(e,t={}){let n=t.projectRoot??vr(e.root).href,r=t.toolVersion??$e,o=new Map,s=($,E)=>{let x=`${$}\0${E}`,v=o.get(x);if(v===void 0){let P=Oy(e.root,$,E);v=P?`${Ku(P.manager)} ${Ku(P.name)} ${Ku(P.version)}`:$?s(Xu($),E):Dy,o.set(x,v)}return v},a=$=>{let E=lC.get($.lang);return`${aC} ${E?s(Xu($.rel),E):Dy} ${dC($.rel)}`},l=e.files.filter($=>$.kind==="code"&&$.symbols.length>0),c=new Map,d=new Map,u=new Map;for(let $ of l){let E=[],x=new Map;for(let v of $.symbols){if(!v.name||Wy.has(v.kind))continue;let P={file:$,sym:v,suffix:fC(v.kind)};E.push(P);let O=x.get(v.name);if(O||x.set(v.name,O=[]),O.push(P),$.lang==="go"&&!v.parent&&P.suffix==="#"){let L=Hy($),q=u.get(L);q||u.set(L,q=new Map),q.has(v.name)||q.set(v.name,P)}}c.set($.rel,{defs:E,byName:x}),d.set($.rel,a($))}let f=$=>{let E=$.sym.parent;if(!E)return;let x=c.get($.file.rel).byName.get(E)??[],v;for(let L of x)L===$||L.sym.line>$.sym.line||io(L)v.sym.line||L.sym.line===v.sym.line&&io(L)L!==$&&mC(L.suffix)),O=P.find(L=>!L.sym.parent)??P[0];if(O)return O;if($.file.lang==="go")return u.get(Hy($.file))?.get(E)},m=new Set,p=new Set,g=$=>{if($.symbol!==void 0)return $.symbol;p.add($);let E=f($),x=E&&!p.has(E)?g(E):d.get($.file.rel)+($.sym.parent?qy($.sym.parent)+"#":"");return p.delete($),$.symbol=pC(x,$.sym.name,$.suffix,$.sym.line,m),E&&x===E.symbol&&(E.children??=[]).push($),$.symbol},h=new Map,_=new Map;for(let $ of l)for(let E of c.get($.rel).defs){let x=g(E);if(_.set(E.sym,x),!E.sym.exported)continue;let v=h.get(E.sym.name);v||h.set(E.sym.name,v=[]),v.push({symbolString:x,family:jy(E.sym.lang)})}let y=new Map,b=($,E,x)=>{if($===E)return;let v=y.get($);v||y.set($,v=new Map),v.set(E.symbol,x||v.get(E.symbol)===!0)};for(let $ of rr(e,Ft(e))){let E=(c.get($.fromFile)?.byName.get($.from)??[]).filter(O=>O.suffix!=="()."&&O.suffix!=="!"),x=E.find(O=>O.sym.line===$.fromLine)??E.filter(O=>O.sym.line<=$.fromLine&&io(O)>=$.fromLine).pop()??E[0],v=c.get($.toFile)?.byName.get($.to)?.find(O=>O.sym.kind===$.toKind);if(!x||!v)continue;b(x,v,!1);let P=new Map;for(let O of v.children??[])O.suffix==="()."&&!P.has(O.sym.name)&&P.set(O.sym.name,O);for(let O of x.children??[]){let L=O.suffix==="()."?P.get(O.sym.name):void 0;L&&b(O,L,!0)}}let w=($,E)=>{let x=h.get($);if(!x||x.length!==1)return;let v=x[0];return v.family===E?v.symbolString:void 0},S=ar(e,Ft(e)),k=[];for(let $ of l){let x=ie(j(e.root,$.rel)).split(` -`).map(B=>B.endsWith("\r")?B.slice(0,-1):B),v=(B,z)=>{let re=x[B-1];if(re===void 0)return[B-1,0,0];let de=Uy(re,z);return de?[B-1,de[0],de[1]]:[B-1,0,re.length]},{defs:P}=c.get($.rel),O=[];for(let B of P)O.push({range:v(B.sym.line,B.sym.name),symbol:B.symbol,roles:iC});let L=jy($.lang),q=S.forFile($);for(let B of $.calls??[]){let z=w(B.name,L);if(!z)continue;let re=q?.(B);!re||_.get(re.def)!==z||O.push({range:v(B.line,B.name),symbol:z,roles:0})}for(let B of $.symbols){if(!Wy.has(B.kind)||!B.name)continue;let z=x[B.line-1],re=z===void 0?null:Uy(z,B.name),de=re&&w(B.name,L);!re||!de||O.push({range:[B.line-1,re[0],re[1]],symbol:de,roles:0})}if(!O.length)continue;O.sort((B,z)=>B.range[0]-z.range[0]||B.range[1]-z.range[1]||B.range[2]-z.range[2]||B.roles-z.roles||T(B.symbol,z.symbol));let Z=new Set,ae=P.map(B=>({symbol:B.symbol,displayName:B.sym.name,kind:uC(B.sym.kind),relationships:[...y.get(B)??[]].sort((z,re)=>T(z[0],re[0]))})).sort((B,z)=>T(B.symbol,z.symbol)),be=new wn(1024);On(be,HM,$.rel);let Se=new wn(64);for(let B of O){let z=`${B.range.join(",")} ${B.roles} ${B.symbol}`;Z.has(z)||(Z.add(z),Se.reset(),NM(Se,JM,B.range),On(Se,KM,B.symbol),B.roles!==0&&Ds(Se,XM,B.roles),Gr(be,zM,Se))}let Me=new wn(64),U=new wn(64);for(let B of ae){Me.reset(),On(Me,ZM,B.symbol);for(let[z,re]of B.relationships)U.reset(),On(U,tC,z),re&&Ds(U,nC,1),Ds(U,rC,1),Gr(Me,YM,U);B.kind!==void 0&&Ds(Me,QM,B.kind),On(Me,eC,B.displayName),Gr(be,GM,Me)}On(be,qM,$.lang),Ds(be,VM,oC),k.push(be)}let M=new wn;On(M,BM,"codeindex"),On(M,UM,r);let N=new wn;Gr(N,DM,M),On(N,jM,n),Ds(N,WM,sC);let A=0;for(let $ of k)A+=$.length;let R=new wn(A+N.length+16);Gr(R,PM,N);for(let $ of k)Gr(R,LM,$);return R.toUint8Array()}Sl();en();oo();Is();Vr();co();Kr();Rl();Al();cf();Bl();$l();Dl();yf();wo();Nl();Gl();yo();go();Vl();js();Ts();Jl();jr();Xl();Lf();Hf();bt();ce();Qe();I();ve();pe();Sf();ht();ht();ft();Sl();bt();wl();Wi();Bt();ce();Fi();tr();Ua();Kd();Jn();$i();Xe();In();Dr();or();Ps();Ef();Or();Hr();en();oo();yo();go();Vl();js();Ts();Jl();xf();mt();jr();Xl();Is();Gl();Vr();Kr();vf();Rl();Al();Qe();Bl();fc();var gc=`codeindex engine v${$e} \u2014 deterministic repo indexing +`}}I();pt();async function Nv(e={}){let t=e.label??"codeindex",n=[],r=u=>{n.push(u),e.onNote?e.onNote(u):O.stderr.write(u)},o=O.env.CODEINDEX_NO_GRAMMARS_PULL,s=(e.pull??!0)&&!(o&&o.trim()&&o!=="0"),a=[...e.keys??Ca()],l=!1;if(Wt().tier==="none"&&s){r(`${t}: tree-sitter grammars not found locally \u2014 pulling them into the shared cache (once per machine)\u2026 +`);let u=await Wi(xs(),{onNote:r});r(u.message),l=u.ok&&u.status==="pulled"}await on(a);let c=Wt().tier,d=a.some(u=>Le(u));return d||r(`${t}: no tree-sitter grammars available (offline?) \u2014 extracting with the regex tier, so symbols and call sites are less precise. Run \`codeindex grammars pull\` once online to enable AST precision. +`),{tier:c,ready:d,pulled:l,notes:n}}An();Ms();cl();ir();Tn();Wr();or();js();Vu();_l();Gr();Yi();rf();lr();sf();zi();kl();I();fe();bi();_t();Ze();le();Is();gt();Tn();Gr();var wn=class{buf;len=0;constructor(t=64){this.buf=new Uint8Array(t)}get length(){return this.len}grow(t){if(this.len+t<=this.buf.length)return;let n=this.buf.length*2||64;for(;n127;)e.push(t&127|128),t=Math.floor(t/128);e.push(t&127)}function s_(e,t,n){El(e,t*8+n)}function Bs(e,t,n){s_(e,t,0),El(e,n)}function i_(e,t,n){s_(e,t,2),El(e,n.length),e.pushAll(n)}function Vr(e,t,n){i_(e,t,n.view())}function Nn(e,t,n){i_(e,t,nM.encode(n))}function rM(e,t,n){let r=new wn(n.length*2);for(let o of n)El(r,o);Vr(e,t,r)}var sM=1,iM=2,oM=2,aM=3,lM=4,cM=1,dM=2,uM=1,fM=2,mM=3,pM=4,gM=6,hM=1,yM=2,_M=3,bM=1,wM=4,xM=5,SM=6,kM=1,EM=2,vM=3,RM=1,CM=1,MM=2,AM="codeindex",Yy=". . .",IM=new Map([["typescript","package.json"],["javascript","package.json"],["go","go.mod"],["rust","Cargo.toml"],["python","pyproject.toml"],["java","pom.xml"],["kotlin","pom.xml"],["scala","pom.xml"],["php","composer.json"]]);function of(e){return e?e.replace(/ /g," "):"."}var TM=/^[A-Za-z0-9_+\-$]+$/;function o_(e){return TM.test(e)?e:"`"+e.replace(/`/g,"``")+"`"}function $M(e){return"`"+e.replace(/`/g,"``")+"`/"}var a_=new Map([["class",[7,"#"]],["record",[7,"#"]],["interface",[21,"#"]],["annotation",[21,"#"]],["enum",[11,"#"]],["struct",[49,"#"]],["exception",[49,"#"]],["trait",[53,"#"]],["type",[54,"#"]],["opaque",[54,"#"]],["union",[59,"#"]],["protocol",[42,"#"]],["delegate",[73,"#"]],["contract",[62,"#"]],["library",[64,"#"]],["mixin",[85,"#"]],["extension",[84,"#"]],["concept",[86,"#"]],["error",[63,"#"]],["namespace",[30,"/"]],["package",[35,"/"]],["module",[29,"/"]],["mod",[29,"/"]],["impl",[29,"/"]],["function",[17,"()."]],["test",[17,"()."]],["method",[26,"()."]],["def",[26,"()."]],["destructor",[26,"()."]],["fallback",[26,"()."]],["receive",[26,"()."]],["call-signature",[26,"()."]],["constructor",[9,"()."]],["construct-signature",[9,"()."]],["getter",[18,"()."]],["setter",[45,"()."]],["operator",[34,"()."]],["modifier",[65,"()."]],["attr",[72,"()."]],["indexer",[47,"()."]],["index-signature",[47,"()."]],["macro",[25,"!"]],["guard",[25,"!"]],["const",[8,"."]],["val",[8,"."]],["var",[61,"."]],["variable",[61,"."]],["static",[82,"."]],["field",[15,"."]],["property",[41,"."]],["enum-member",[12,"."]],["event",[13,"."]],["object",[33,"."]]]),FM=e=>a_.get(e)?.[0],OM=e=>a_.get(e)?.[1]??".",NM=e=>e==="#"||e==="/";function PM(e,t,n,r,o){let s=o_(t),a=e+s+n;if(!o.has(a))return o.add(a),a;for(let l=0;;l++){let c=l===0?String(r):`${r}_${l}`,d=n==="()."?`${e}${s}(${c}).`:`${a}(${c})`;if(!o.has(d))return o.add(d),d}}function Qy(e){return e==="typescript"||e==="javascript"||e==="vue"||e==="svelte"||e==="astro"?"js":e==="c"||e==="cpp"?"c":e}var e_=new Set(["reexport","reexport-all","default"]);function t_(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95||e===36}function n_(e,t){if(!t)return null;let n=/^[A-Za-z_$][\w$]*$/.test(t),r=0;for(;;){let o=e.indexOf(t,r);if(o<0)return null;if(!n)return[o,o+t.length];let s=o>0?e.charCodeAt(o-1):-1,a=o+t.length,l=ae.sym.endLine??e.sym.line,af=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";function r_(e){let t=e.symbols.find(n=>n.kind==="package")?.name??"";return`${af(e.rel)}\0${t}`}function lf(e,t={}){let n=t.projectRoot??Cr(e.root).href,r=t.toolVersion??Te,o=new Map,s=(A,S)=>{let w=`${A}\0${S}`,E=o.get(w);if(E===void 0){let P=Jy(e.root,A,S);E=P?`${of(P.manager)} ${of(P.name)} ${of(P.version)}`:A?s(af(A),S):Yy,o.set(w,E)}return E},a=A=>{let S=IM.get(A.lang);return`${AM} ${S?s(af(A.rel),S):Yy} ${$M(A.rel)}`},l=e.files.filter(A=>A.kind==="code"&&A.symbols.length>0),c=new Map,d=new Map,u=new Map;for(let A of l){let S=[],w=new Map;for(let E of A.symbols){if(!E.name||e_.has(E.kind))continue;let P={file:A,sym:E,suffix:OM(E.kind)};S.push(P);let N=w.get(E.name);if(N||w.set(E.name,N=[]),N.push(P),A.lang==="go"&&!E.parent&&P.suffix==="#"){let L=r_(A),H=u.get(L);H||u.set(L,H=new Map),H.has(E.name)||H.set(E.name,P)}}c.set(A.rel,{defs:S,byName:w}),d.set(A.rel,a(A))}let f=A=>{let S=A.sym.parent;if(!S)return;let w=c.get(A.file.rel).byName.get(S)??[],E;for(let L of w)L===A||L.sym.line>A.sym.line||lo(L)E.sym.line||L.sym.line===E.sym.line&&lo(L)L!==A&&NM(L.suffix)),N=P.find(L=>!L.sym.parent)??P[0];if(N)return N;if(A.file.lang==="go")return u.get(r_(A.file))?.get(S)},m=new Set,p=new Set,g=A=>{if(A.symbol!==void 0)return A.symbol;p.add(A);let S=f(A),w=S&&!p.has(S)?g(S):d.get(A.file.rel)+(A.sym.parent?o_(A.sym.parent)+"#":"");return p.delete(A),A.symbol=PM(w,A.sym.name,A.suffix,A.sym.line,m),S&&w===S.symbol&&(S.children??=[]).push(A),A.symbol},h=new Map,_=new Map;for(let A of l)for(let S of c.get(A.rel).defs){let w=g(S);if(_.set(S.sym,w),!S.sym.exported)continue;let E=h.get(S.sym.name);E||h.set(S.sym.name,E=[]),E.push({symbolString:w,family:Qy(S.sym.lang)})}let y=new Map,b=(A,S,w)=>{if(A===S)return;let E=y.get(A);E||y.set(A,E=new Map),E.set(S.symbol,w||E.get(S.symbol)===!0)};for(let A of rr(e,Ot(e))){let S=(c.get(A.fromFile)?.byName.get(A.from)??[]).filter(N=>N.suffix!=="()."&&N.suffix!=="!"),w=S.find(N=>N.sym.line===A.fromLine)??S.filter(N=>N.sym.line<=A.fromLine&&lo(N)>=A.fromLine).pop()??S[0],E=c.get(A.toFile)?.byName.get(A.to)?.find(N=>N.sym.kind===A.toKind);if(!w||!E)continue;b(w,E,!1);let P=new Map;for(let N of E.children??[])N.suffix==="()."&&!P.has(N.sym.name)&&P.set(N.sym.name,N);for(let N of w.children??[]){let L=N.suffix==="()."?P.get(N.sym.name):void 0;L&&b(N,L,!0)}}let x=(A,S)=>{let w=h.get(A);if(!w||w.length!==1)return;let E=w[0];return E.family===S?E.symbolString:void 0},k=ar(e,Ot(e)),v=[];for(let A of l){let w=se(j(e.root,A.rel)).split(` +`).map(B=>B.endsWith("\r")?B.slice(0,-1):B),E=(B,G)=>{let ee=w[B-1];if(ee===void 0)return[B-1,0,0];let ce=n_(ee,G);return ce?[B-1,ce[0],ce[1]]:[B-1,0,ee.length]},{defs:P}=c.get(A.rel),N=[];for(let B of P)N.push({range:E(B.sym.line,B.sym.name),symbol:B.symbol,roles:CM});let L=Qy(A.lang),H=k.forFile(A);for(let B of A.calls??[]){let G=x(B.name,L);if(!G)continue;let ee=H?.(B);!ee||_.get(ee.def)!==G||N.push({range:E(B.line,B.name),symbol:G,roles:0})}for(let B of A.symbols){if(!e_.has(B.kind)||!B.name)continue;let G=w[B.line-1],ee=G===void 0?null:n_(G,B.name),ce=ee&&x(B.name,L);!ee||!ce||N.push({range:[B.line-1,ee[0],ee[1]],symbol:ce,roles:0})}if(!N.length)continue;N.sort((B,G)=>B.range[0]-G.range[0]||B.range[1]-G.range[1]||B.range[2]-G.range[2]||B.roles-G.roles||$(B.symbol,G.symbol));let Y=new Set,oe=P.map(B=>({symbol:B.symbol,displayName:B.sym.name,kind:FM(B.sym.kind),relationships:[...y.get(B)??[]].sort((G,ee)=>$(G[0],ee[0]))})).sort((B,G)=>$(B.symbol,G.symbol)),ge=new wn(1024);Nn(ge,uM,A.rel);let Se=new wn(64);for(let B of N){let G=`${B.range.join(",")} ${B.roles} ${B.symbol}`;Y.has(G)||(Y.add(G),Se.reset(),rM(Se,hM,B.range),Nn(Se,yM,B.symbol),B.roles!==0&&Bs(Se,_M,B.roles),Vr(ge,fM,Se))}let Ce=new wn(64),U=new wn(64);for(let B of oe){Ce.reset(),Nn(Ce,bM,B.symbol);for(let[G,ee]of B.relationships)U.reset(),Nn(U,kM,G),ee&&Bs(U,EM,1),Bs(U,vM,1),Vr(Ce,wM,U);B.kind!==void 0&&Bs(Ce,xM,B.kind),Nn(Ce,SM,B.displayName),Vr(ge,mM,Ce)}Nn(ge,pM,A.lang),Bs(ge,gM,MM),v.push(ge)}let T=new wn;Nn(T,cM,"codeindex"),Nn(T,dM,r);let F=new wn;Vr(F,oM,T),Nn(F,aM,n),Bs(F,lM,RM);let R=0;for(let A of v)R+=A.length;let C=new wn(R+F.length+16);Vr(C,sM,F);for(let A of v)Vr(C,iM,A);return C.toUint8Array()}vl();tn();co();Fs();Kr();mo();Zr();Al();$l();bf();Hl();Nl();Bl();Cf();ko();Dl();Jl();wo();_o();Xl();Us();Os();Zl();Br();Ql();Vf();Qf();xt();le();et();I();Ee();fe();tc();_t();_t();pt();vl();xt();kl();zi();Ut();le();Pi();tr();Ga();su();Mn();Ni();Ze();Tn();Wr();or();js();$f();Of();Pr();Gr();tn();co();wo();_o();Xl();Us();Os();Zl();Tf();gt();Br();Ql();Fs();Jl();Kr();Zr();Nf();Al();$l();et();Hl();_c();var Sc=`codeindex engine v${Te} \u2014 deterministic repo indexing Usage: codeindex [flags] @@ -374,8 +374,9 @@ Flags (accepted before OR after the subcommand: '--repo X scan' and --exclude (default: none \u2014 the whole tree is indexed; a cap sets the \`capped\` flag) --max-bytes Skip files above this size (default 1 MiB) - --max-calls Per-file call-site cap for extraction (default 512); a - capped file keeps one site per distinct callee first + --max-calls Per-file call-site cap for extraction (default 8192); a + capped file keeps one site per distinct callee first, + and a \`callers\`/\`refs\` answer counting it says so --no-ast Skip tree-sitter grammars even when present (regex tier) --workers \`index\`: extraction worker threads (default: cores-1, capped at 8; 0 or 1 forces the single-threaded path). @@ -496,77 +497,78 @@ Flags (accepted before OR after the subcommand: '--repo X scan' and --json \`delta\`: the JSON result instead of the text panel --fail-on \`delta\`: exit 1 when a module scores HIGH, MEDIUM or LOW (or above) -`,zf=new Set(["--repo","--out","--include","--exclude","--scope","--no-gitignore","--ignore-dir","--max-files","--max-bytes","--max-calls","--no-ast","--workers","--index","--no-index-cache","--full-hash"]),Ho={index:{flags:[],positionals:0},scan:{flags:["--why","--skipped"],positionals:0},status:{flags:["--check"],positionals:0},graph:{flags:[],positionals:0},symbols:{flags:[],positionals:0},scip:{flags:["--project-root"],positionals:0},callers:{flags:["--lsp","--trust-lsp-config","--recall","--raw","--with-caller"],positionals:1},hierarchy:{flags:[],positionals:1},implementations:{flags:[],positionals:1},callgraph:{flags:["--depth","--direction"],positionals:1},callpath:{flags:["--depth","--limit","--files","--include-inferred"],positionals:2},find:{flags:["--substring","--include-body","--concise","--limit"],positionals:1},refs:{flags:["--lsp","--trust-lsp-config","--concise"],positionals:1},outline:{flags:["--concise"],positionals:1},"symbol-at":{flags:[],positionals:1},workspaces:{flags:["--check"],positionals:0},churn:{flags:["--since"],positionals:0},grep:{flags:["--ignore-case","--max-hits","--files-with-matches","--timeout-ms"],positionals:1},search:{flags:["--limit","--no-fuzzy","--exact","--explain","--rank","--semantic"],positionals:1},embed:{flags:["--run"],positionals:1},lsp:{flags:["--probe","--trust-lsp-config"],positionals:1},grammars:{flags:[],positionals:1},rules:{flags:["--config"],positionals:0},repomap:{flags:["--budget-tokens"],positionals:0},hotspots:{flags:["--since","--limit"],positionals:0},coupling:{flags:["--since","--limit","--min-together","--max-commit-files","--hidden"],positionals:0},literals:{flags:["--min-files","--min-count","--include-tests"],positionals:0},deadcode:{flags:["--kinds","--include-tail","--limit"],positionals:0},complexity:{flags:["--limit"],positionals:1},risk:{flags:["--since","--limit"],positionals:0},delta:{flags:["--base","--staged","--depth","--json","--fail-on"],positionals:0},impact:{flags:["--depth","--include-inferred"],positionals:1},neighbors:{flags:["--depth","--kind"],positionals:1},resolution:{flags:["--lang","--limit"],positionals:0},mermaid:{flags:[],positionals:1}},XI={"-i":"--ignore-case","-l":"--files-with-matches","-o":"--out","-h":"--help","-v":"--version"};function ZI(e,t){let n=Array.from({length:t.length+1},(r,o)=>o);for(let r=1;r<=e.length;r++){let o=[r];for(let s=1;s<=t.length;s++)o[s]=Math.min(n[s]+1,o[s-1]+1,n[s-1]+(e[r-1]===t[s-1]?0:1));n=o}return n[t.length]}function Gf(e,t){let n,r=1/0;for(let o of[...t].sort()){let s=ZI(e,o);snew Set([...zf,...Object.values(Ho).flatMap(e=>e.flags)]);function vb(e){let t=XI[e]??Gf(e,YI());return new Error(`unknown flag: ${e}${t?` (did you mean ${t}?)`:""}`)}function QI(e,t){let n=Ho[e];if(n){for(let r of t.given){if(zf.has(r)||n.flags.includes(r))continue;let o=Gf(r,n.flags);throw new Error(`${r} does not apply to ${e}`+(o?` (did you mean ${o}?)`:n.flags.length?` (it takes ${n.flags.join(", ")})`:"")+` \u2014 codeindex ${e} --help`)}if(t.positionals.length>n.positionals){let r=t.positionals[n.positionals];throw new Error(n.positionals===0?`${e} takes no argument, got "${r}" \u2014 codeindex ${e} --help`:`unexpected argument "${r}": ${e} takes ${n.positionals===1?"one":n.positionals} \u2014 codeindex ${e} --help`)}}}function e1(e){let t=gc.split(` -`),n=l=>{let c=[t[l]];for(let d=l+1;dl.startsWith(` ${e} `)),o=Ho[e],s=[`codeindex ${e}`,"",...r===-1?[]:n(r)],a=(o?.flags??[]).flatMap(l=>{let c=t.findIndex(d=>d.startsWith(` ${l} `)||d===` ${l}`);return c===-1?[]:n(c)});return a.length&&s.push("","Flags:",...a),s.push("",`Global flags: ${[...zf].join(", ")} (codeindex --help)`,""),s.join(` -`)}function t1(e){let t={repo:F.cwd(),include:[],exclude:[],gitignore:!0,ignoreDirs:[],noAst:!1,fuzzy:!0,semantic:!1,positionals:[],given:[]};for(let n=0;n{let l=e[++n];if(l===void 0)throw new Error(`missing value for ${r}`);return l},s=()=>{let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<=0)throw new Error(`${r} expects a positive whole number, got "${l}"`);return c},a=()=>{let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<=0)throw new Error(`${r} expects a positive number, a whole one, got "${l}"`);return c};if(r.startsWith("--")&&r!=="--"&&t.given.push(r),r==="--repo")t.repo=ue(o());else if(r==="--out"){let l=o();t.out=l==="-"?"-":ue(l)}else if(r==="--project-root")t.projectRoot=o();else if(r==="--include")t.include.push(o());else if(r==="--exclude")t.exclude.push(o());else if(r==="--scope")t.scope=o();else if(r==="--no-gitignore")t.gitignore=!1;else if(r==="--ignore-dir")t.ignoreDirs.push(o().replace(/(.)[\\/]+$/,"$1"));else if(r==="--max-files")t.maxFiles=a();else if(r==="--max-bytes")t.maxBytes=a();else if(r==="--max-calls")t.maxCalls=a();else if(r==="--ignore-case")t.ignoreCase=!0;else if(r==="--max-hits")t.maxHits=s();else if(r==="--timeout-ms")t.timeoutMs=a();else if(r==="--files-with-matches")t.filesWithMatches=!0;else if(r==="--budget-tokens")t.budgetTokens=a();else if(r==="--min-files")t.minFiles=a();else if(r==="--min-count")t.minCount=a();else if(r==="--include-tests")t.includeTests=!0;else if(r==="--include-inferred")t.includeInferred=!0;else if(r==="--include-tail")t.includeTail=!0;else if(r==="--kinds"){let l=o();if(l!=="callable"&&l!=="all")throw new Error(`--kinds expects callable|all, got "${l}"`);t.kinds=l}else if(r==="--no-ast")t.noAst=!0;else if(r==="--index")t.indexDir=o();else if(r==="--no-index-cache")t.noIndexCache=!0;else if(r==="--full-hash")t.fullHash=!0;else if(r==="--check")t.check=!0;else if(r==="--why")t.why=o();else if(r==="--skipped")t.skipped=!0;else if(r==="--workers"){let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<0)throw new Error(`--workers expects a non-negative integer, got "${l}"`);t.workers=c}else if(r==="--since")t.since=o();else if(r==="--min-together")t.minTogether=a();else if(r==="--max-commit-files")t.maxCommitFiles=a();else if(r==="--hidden")t.hidden=!0;else if(r==="--config")t.config=o();else if(r==="--limit")t.limit=s();else if(r==="--no-fuzzy")t.fuzzy=!1;else if(r==="--exact")t.exact=!0;else if(r==="--explain")t.explain=!0;else if(r==="--semantic")t.semantic=!0;else if(r==="--lsp")t.lsp=!0;else if(r==="--trust-lsp-config")t.trustLspConfig=!0;else if(r==="--recall")t.recall=!0;else if(r==="--raw")t.raw=!0;else if(r==="--run")t.run=!0;else if(r==="--probe")t.probe=!0;else if(r==="--base")t.base=o();else if(r==="--staged")t.staged=!0;else if(r==="--depth")t.depth=a();else if(r==="--kind"){let l=o(),c=l.split(",").map(u=>u.trim()).filter(Boolean),d=c.filter(u=>!As.includes(u));if(!c.length||d.length)throw new Error(`--kind expects a comma-separated list of ${As.join("|")}, got "${d.join(",")||l}"`);t.kind=c.join(",")}else if(r==="--rank"){let l=o();if(l!=="graph"&&l!=="lexical")throw new Error(`--rank expects graph|lexical, got "${l}"`);t.rank=l}else if(r==="--direction"){let l=o();if(l!=="out"&&l!=="in"&&l!=="both")throw new Error(`--direction expects out|in|both, got "${l}"`);t.direction=l}else if(r==="--json")t.json=!0;else if(r==="--fail-on"){let l=o().toUpperCase();if(l!=="HIGH"&&l!=="MEDIUM"&&l!=="LOW")throw new Error(`--fail-on expects HIGH, MEDIUM or LOW, got "${l}"`);t.failOn=l}else if(r==="--lang")t.lang=o();else if(r==="--substring")t.substring=!0;else if(r==="--include-body")t.includeBody=!0;else if(r==="--concise")t.concise=!0;else if(r==="--files")t.files=!0;else if(r==="--with-caller")t.withCaller=!0;else if(r==="--"){if(t.positional!==void 0)throw new Error(`unexpected "--": the positional is already "${t.positional}"`);let l=o();t.positionals.push(l),t.positional=l}else{if(r.startsWith("-")&&r!=="-")throw vb(r);if(!r.startsWith("--"))t.positionals.push(r),t.positional??=r;else throw vb(r)}}return t}function _e(e,t){t&&t!=="-"?Sn(t,e):F.stdout.write(e)}function Sn(e,t){try{if(!zn(e).isFile()){st(e,t);return}}catch{}let n=`${e}.tmp-${F.pid}`;try{st(n,t),kn(n,e);return}catch{Je(n,{force:!0})}st(e,t)}function n1(e){for(let n of e.ignoreDirs)/[\\/]/.test(n)&&F.stderr.write(`codeindex: warning: --ignore-dir takes a directory name, and "${n}" is a path that matches nothing \u2014 use --exclude '${n}/**' to leave that directory out -`);if(e.scope===void 0)return;let t=er(e.repo,e.scope);t===".."||t.startsWith("../")||Pe(t)?F.stderr.write(`codeindex: warning: --scope ${e.scope} is outside --repo ${e.repo} \u2014 nothing matches -`):t&&!/[*?[]/.test(t)&&!te(j(e.repo,t))&&F.stderr.write(`codeindex: warning: --scope ${e.scope} does not exist under ${e.repo} \u2014 nothing matches -`)}function Uo(e){let t=e.include.find(n=>!n.includes("/"));F.stderr.write(`codeindex: warning: no file of ${e.repo} was indexed \u2014 check --scope/--include/--exclude and the ignore rules`+(t?` (globs are rooted at the repo: '${t}' matches top-level paths only, '**/${t}' any depth)`:"")+` -`)}function Kt(e,t){return{include:e.include.length?e.include:void 0,exclude:e.exclude.length?e.exclude:void 0,scope:e.scope,gitignore:e.gitignore,ignoreDirs:e.ignoreDirs.length?e.ignoreDirs:void 0,maxFiles:e.maxFiles,maxBytes:e.maxBytes,maxCallsPerFile:e.maxCalls,fullHash:e.fullHash,out:Ut(e.repo,e.indexDir),precomputedWalk:t}}var Rb=e=>e==="HIGH"?2:e==="MEDIUM"?1:0,r1=new Set(["grep","churn","workspaces","grammars"]),s1=new Set(["scan","status"]),i1={absent:"no cache.json there",unreadable:"cache.json cannot be read",corrupt:"cache.json is not a valid index",schema:"written for another schema version",extractor:"written by another extractor version"};function o1(e,t,n,r,o){let s=Jd(e,t,Le,r);if(!s)return;let{fresh:a,walked:l,drift:c}=s,d=l.map(f=>({kind:Ct(f.rel,f.ext),ext:f.ext}));if(c.unchanged!==l.length||c.indexed!==l.length||a.meta.commit!==s.commit||!jd(a.meta.extraction,Dd(d,n,Le))||!o(a.meta.embed))return;let u=Tr(e,{contentUnchanged:!0,commit:s.commit},a.meta,r);if(!(!u?.bytes("symbols")||!u.bytes("graph")))return{files:l.length,capped:s.capped}}function a1(e){let t,n,r,o,s=!1,a=!1;for(let l=0;l");return{defaultRepo:t,serverInfo:n?{name:n}:void 0,maxResponseBytes:r,profile:o,watch:s,...a?{trustLspConfig:a}:{}}}var l1=new Set(["--repo","--out","--project-root","--include","--exclude","--scope","--ignore-dir","--max-files","--max-bytes","--max-calls","--max-hits","--timeout-ms","--budget-tokens","--min-files","--min-count","--since","--min-together","--max-commit-files","--config","--limit","--server-name","--tools","--workers","--index","--max-response-bytes","--base","--fail-on","--depth","--kind","--rank","--direction","--lang","--why","--kinds"]);function c1(e){let t=[],n=0;for(;n=e.length?e:[e[n],...t,...e.slice(n+1)]}async function d1(e){let t=c1(e),[n,...r]=t;if(!n||n==="help"||n==="--help"||n==="-h"){F.stdout.write(gc);return}if(n==="version"||n==="--version"){F.stdout.write($e+` -`);return}if(n==="rewrite"){let E=e.slice(e.indexOf("rewrite")+1);if(E.length!==1){F.stderr.write(`codeindex: rewrite takes the command line as ONE argument: codeindex rewrite '' -`),F.exitCode=1;return}let{rewriteCommand:x}=await Promise.resolve().then(()=>(Hf(),Eb)),v=x(E[0],"codeindex",F.cwd());if(!v){F.exitCode=1;return}F.stdout.write(v+` -`);return}if(n==="mcp"){let{runMcpServer:E}=await Promise.resolve().then(()=>(Lf(),_b));await E(a1(r));return}if(!(n in Ho)){let E=Gf(n,Object.keys(Ho));F.stderr.write(`unknown command: ${n}${E?` (did you mean ${E}?)`:""} +`,em=new Set(["--repo","--out","--include","--exclude","--scope","--no-gitignore","--ignore-dir","--max-files","--max-bytes","--max-calls","--no-ast","--workers","--index","--no-index-cache","--full-hash"]),qo={index:{flags:[],positionals:0},scan:{flags:["--why","--skipped"],positionals:0},status:{flags:["--check"],positionals:0},graph:{flags:[],positionals:0},symbols:{flags:[],positionals:0},scip:{flags:["--project-root"],positionals:0},callers:{flags:["--lsp","--trust-lsp-config","--recall","--raw","--with-caller"],positionals:1},hierarchy:{flags:[],positionals:1},implementations:{flags:[],positionals:1},callgraph:{flags:["--depth","--direction"],positionals:1},callpath:{flags:["--depth","--limit","--files","--include-inferred"],positionals:2},find:{flags:["--substring","--include-body","--concise","--limit"],positionals:1},refs:{flags:["--lsp","--trust-lsp-config","--concise"],positionals:1},outline:{flags:["--concise"],positionals:1},"symbol-at":{flags:[],positionals:1},workspaces:{flags:["--check"],positionals:0},churn:{flags:["--since"],positionals:0},grep:{flags:["--ignore-case","--max-hits","--files-with-matches","--timeout-ms"],positionals:1},search:{flags:["--limit","--no-fuzzy","--exact","--explain","--rank","--semantic"],positionals:1},embed:{flags:["--run"],positionals:1},lsp:{flags:["--probe","--trust-lsp-config"],positionals:1},grammars:{flags:[],positionals:1},rules:{flags:["--config"],positionals:0},repomap:{flags:["--budget-tokens"],positionals:0},hotspots:{flags:["--since","--limit"],positionals:0},coupling:{flags:["--since","--limit","--min-together","--max-commit-files","--hidden"],positionals:0},literals:{flags:["--min-files","--min-count","--include-tests"],positionals:0},deadcode:{flags:["--kinds","--include-tail","--limit"],positionals:0},complexity:{flags:["--limit"],positionals:1},risk:{flags:["--since","--limit"],positionals:0},delta:{flags:["--base","--staged","--depth","--json","--fail-on"],positionals:0},impact:{flags:["--depth","--include-inferred"],positionals:1},neighbors:{flags:["--depth","--kind"],positionals:1},resolution:{flags:["--lang","--limit"],positionals:0},mermaid:{flags:[],positionals:1}},bT={"-i":"--ignore-case","-l":"--files-with-matches","-o":"--out","-h":"--help","-v":"--version"};function wT(e,t){let n=Array.from({length:t.length+1},(r,o)=>o);for(let r=1;r<=e.length;r++){let o=[r];for(let s=1;s<=t.length;s++)o[s]=Math.min(n[s]+1,o[s-1]+1,n[s-1]+(e[r-1]===t[s-1]?0:1));n=o}return n[t.length]}function tm(e,t){let n,r=1/0;for(let o of[...t].sort()){let s=wT(e,o);snew Set([...em,...Object.values(qo).flatMap(e=>e.flags)]);function Bb(e){let t=bT[e]??tm(e,xT());return new Error(`unknown flag: ${e}${t?` (did you mean ${t}?)`:""}`)}function ST(e,t){let n=qo[e];if(n){for(let r of t.given){if(em.has(r)||n.flags.includes(r))continue;let o=tm(r,n.flags);throw new Error(`${r} does not apply to ${e}`+(o?` (did you mean ${o}?)`:n.flags.length?` (it takes ${n.flags.join(", ")})`:"")+` \u2014 codeindex ${e} --help`)}if(t.positionals.length>n.positionals){let r=t.positionals[n.positionals];throw new Error(n.positionals===0?`${e} takes no argument, got "${r}" \u2014 codeindex ${e} --help`:`unexpected argument "${r}": ${e} takes ${n.positionals===1?"one":n.positionals} \u2014 codeindex ${e} --help`)}}}function kT(e){let t=Sc.split(` +`),n=l=>{let c=[t[l]];for(let d=l+1;dl.startsWith(` ${e} `)),o=qo[e],s=[`codeindex ${e}`,"",...r===-1?[]:n(r)],a=(o?.flags??[]).flatMap(l=>{let c=t.findIndex(d=>d.startsWith(` ${l} `)||d===` ${l}`);return c===-1?[]:n(c)});return a.length&&s.push("","Flags:",...a),s.push("",`Global flags: ${[...em].join(", ")} (codeindex --help)`,""),s.join(` +`)}function ET(e){let t={repo:O.cwd(),include:[],exclude:[],gitignore:!0,ignoreDirs:[],noAst:!1,fuzzy:!0,semantic:!1,positionals:[],given:[]};for(let n=0;n{let l=e[++n];if(l===void 0)throw new Error(`missing value for ${r}`);return l},s=()=>{let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<=0)throw new Error(`${r} expects a positive whole number, got "${l}"`);return c},a=()=>{let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<=0)throw new Error(`${r} expects a positive number, a whole one, got "${l}"`);return c};if(r.startsWith("--")&&r!=="--"&&t.given.push(r),r==="--repo")t.repo=ae(o());else if(r==="--out"){let l=o();t.out=l==="-"?"-":ae(l)}else if(r==="--project-root")t.projectRoot=o();else if(r==="--include")t.include.push(o());else if(r==="--exclude")t.exclude.push(o());else if(r==="--scope")t.scope=o();else if(r==="--no-gitignore")t.gitignore=!1;else if(r==="--ignore-dir")t.ignoreDirs.push(o().replace(/(.)[\\/]+$/,"$1"));else if(r==="--max-files")t.maxFiles=a();else if(r==="--max-bytes")t.maxBytes=a();else if(r==="--max-calls")t.maxCalls=a();else if(r==="--ignore-case")t.ignoreCase=!0;else if(r==="--max-hits")t.maxHits=s();else if(r==="--timeout-ms")t.timeoutMs=a();else if(r==="--files-with-matches")t.filesWithMatches=!0;else if(r==="--budget-tokens")t.budgetTokens=a();else if(r==="--min-files")t.minFiles=a();else if(r==="--min-count")t.minCount=a();else if(r==="--include-tests")t.includeTests=!0;else if(r==="--include-inferred")t.includeInferred=!0;else if(r==="--include-tail")t.includeTail=!0;else if(r==="--kinds"){let l=o();if(l!=="callable"&&l!=="all")throw new Error(`--kinds expects callable|all, got "${l}"`);t.kinds=l}else if(r==="--no-ast")t.noAst=!0;else if(r==="--index")t.indexDir=o();else if(r==="--no-index-cache")t.noIndexCache=!0;else if(r==="--full-hash")t.fullHash=!0;else if(r==="--check")t.check=!0;else if(r==="--why")t.why=o();else if(r==="--skipped")t.skipped=!0;else if(r==="--workers"){let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<0)throw new Error(`--workers expects a non-negative integer, got "${l}"`);t.workers=c}else if(r==="--since")t.since=o();else if(r==="--min-together")t.minTogether=a();else if(r==="--max-commit-files")t.maxCommitFiles=a();else if(r==="--hidden")t.hidden=!0;else if(r==="--config")t.config=o();else if(r==="--limit")t.limit=s();else if(r==="--no-fuzzy")t.fuzzy=!1;else if(r==="--exact")t.exact=!0;else if(r==="--explain")t.explain=!0;else if(r==="--semantic")t.semantic=!0;else if(r==="--lsp")t.lsp=!0;else if(r==="--trust-lsp-config")t.trustLspConfig=!0;else if(r==="--recall")t.recall=!0;else if(r==="--raw")t.raw=!0;else if(r==="--run")t.run=!0;else if(r==="--probe")t.probe=!0;else if(r==="--base")t.base=o();else if(r==="--staged")t.staged=!0;else if(r==="--depth")t.depth=a();else if(r==="--kind"){let l=o(),c=l.split(",").map(u=>u.trim()).filter(Boolean),d=c.filter(u=>!$s.includes(u));if(!c.length||d.length)throw new Error(`--kind expects a comma-separated list of ${$s.join("|")}, got "${d.join(",")||l}"`);t.kind=c.join(",")}else if(r==="--rank"){let l=o();if(l!=="graph"&&l!=="lexical")throw new Error(`--rank expects graph|lexical, got "${l}"`);t.rank=l}else if(r==="--direction"){let l=o();if(l!=="out"&&l!=="in"&&l!=="both")throw new Error(`--direction expects out|in|both, got "${l}"`);t.direction=l}else if(r==="--json")t.json=!0;else if(r==="--fail-on"){let l=o().toUpperCase();if(l!=="HIGH"&&l!=="MEDIUM"&&l!=="LOW")throw new Error(`--fail-on expects HIGH, MEDIUM or LOW, got "${l}"`);t.failOn=l}else if(r==="--lang")t.lang=o();else if(r==="--substring")t.substring=!0;else if(r==="--include-body")t.includeBody=!0;else if(r==="--concise")t.concise=!0;else if(r==="--files")t.files=!0;else if(r==="--with-caller")t.withCaller=!0;else if(r==="--"){if(t.positional!==void 0)throw new Error(`unexpected "--": the positional is already "${t.positional}"`);let l=o();t.positionals.push(l),t.positional=l}else{if(r.startsWith("-")&&r!=="-")throw Bb(r);if(!r.startsWith("--"))t.positionals.push(r),t.positional??=r;else throw Bb(r)}}return t}function we(e,t){t&&t!=="-"?Sn(t,e):O.stdout.write(e)}function Sn(e,t){try{if(!Hn(e).isFile()){ot(e,t);return}}catch{}let n=`${e}.tmp-${O.pid}`;try{ot(n,t),En(n,e);return}catch{Ke(n,{force:!0})}ot(e,t)}function vT(e){for(let n of e.ignoreDirs)/[\\/]/.test(n)&&O.stderr.write(`codeindex: warning: --ignore-dir takes a directory name, and "${n}" is a path that matches nothing \u2014 use --exclude '${n}/**' to leave that directory out +`);if(e.scope===void 0)return;let t=er(e.repo,e.scope);t===".."||t.startsWith("../")||Ne(t)?O.stderr.write(`codeindex: warning: --scope ${e.scope} is outside --repo ${e.repo} \u2014 nothing matches +`):t&&!/[*?[]/.test(t)&&!ne(j(e.repo,t))&&O.stderr.write(`codeindex: warning: --scope ${e.scope} does not exist under ${e.repo} \u2014 nothing matches +`)}function Go(e){let t=e.include.find(n=>!n.includes("/"));O.stderr.write(`codeindex: warning: no file of ${e.repo} was indexed \u2014 check --scope/--include/--exclude and the ignore rules`+(t?` (globs are rooted at the repo: '${t}' matches top-level paths only, '**/${t}' any depth)`:"")+` +`)}function Xt(e,t){return{include:e.include.length?e.include:void 0,exclude:e.exclude.length?e.exclude:void 0,scope:e.scope,gitignore:e.gitignore,ignoreDirs:e.ignoreDirs.length?e.ignoreDirs:void 0,maxFiles:e.maxFiles,maxBytes:e.maxBytes,maxCallsPerFile:e.maxCalls,fullHash:e.fullHash,out:zt(e.repo,e.indexDir),precomputedWalk:t}}var Ub=e=>e==="HIGH"?2:e==="MEDIUM"?1:0,RT=new Set(["grep","churn","workspaces","grammars"]),CT=new Set(["scan","status"]),MT={absent:"no cache.json there",unreadable:"cache.json cannot be read",corrupt:"cache.json is not a valid index",schema:"written for another schema version",extractor:"written by another extractor version"};function AT(e,t,n,r,o){let s=ru(e,t,Le,r);if(!s)return;let{fresh:a,walked:l,drift:c}=s,d=l.map(f=>({kind:mt(f.rel,f.ext),ext:f.ext}));if(c.unchanged!==l.length||c.indexed!==l.length||a.meta.commit!==s.commit||!Jd(a.meta.extraction,Vd(d,n,Le))||!o(a.meta.embed))return;let u=Fr(e,{contentUnchanged:!0,commit:s.commit},a.meta,r);if(!(!u?.bytes("symbols")||!u.bytes("graph")))return{files:l.length,capped:s.capped}}function IT(e){let t,n,r,o,s=!1,a=!1;for(let l=0;l");return{defaultRepo:t,serverInfo:n?{name:n}:void 0,maxResponseBytes:r,profile:o,watch:s,...a?{trustLspConfig:a}:{}}}var TT=new Set(["--repo","--out","--project-root","--include","--exclude","--scope","--ignore-dir","--max-files","--max-bytes","--max-calls","--max-hits","--timeout-ms","--budget-tokens","--min-files","--min-count","--since","--min-together","--max-commit-files","--config","--limit","--server-name","--tools","--workers","--index","--max-response-bytes","--base","--fail-on","--depth","--kind","--rank","--direction","--lang","--why","--kinds"]);function $T(e){let t=[],n=0;for(;n=e.length?e:[e[n],...t,...e.slice(n+1)]}async function FT(e){let t=$T(e),[n,...r]=t;if(!n||n==="help"||n==="--help"||n==="-h"){O.stdout.write(Sc);return}if(n==="version"||n==="--version"){O.stdout.write(Te+` +`);return}if(n==="rewrite"){let S=e.slice(e.indexOf("rewrite")+1);if(S.length!==1){O.stderr.write(`codeindex: rewrite takes the command line as ONE argument: codeindex rewrite '' +`),O.exitCode=1;return}let{rewriteCommand:w}=await Promise.resolve().then(()=>(Qf(),Wb)),E=w(S[0],"codeindex",O.cwd());if(!E){O.exitCode=1;return}O.stdout.write(E+` +`);return}if(n==="mcp"){let{runMcpServer:S}=await Promise.resolve().then(()=>(Vf(),Ob));await S(IT(r));return}if(!(n in qo)){let S=tm(n,Object.keys(qo));O.stderr.write(`unknown command: ${n}${S?` (did you mean ${S}?)`:""} -${gc}`),F.exitCode=2;return}let o=r.indexOf("--");if((o===-1?r:r.slice(0,o)).some(E=>E==="--help"||E==="-h")){F.stdout.write(e1(n));return}let s=t1(r);if(QI(n,s),(n==="index"||n==="embed"&&s.positional==="build")&&s.out==="-")throw new Error(`${n==="index"?"index":"embed build"} writes files: --out needs a directory, not "-"`);if(!te(s.repo))throw new Error(`--repo path does not exist: ${s.repo}`);if(!Ae(s.repo).isDirectory())throw new Error(`--repo path is not a directory: ${s.repo}`);n1(s);let a=(!r1.has(n)||n==="workspaces"&&s.check===!0)&&!(n==="embed"&&s.positional!=="build"),l=()=>Ke(s.repo,Ir(s.repo,Kt(s))),c;a&&!s.noAst&&!s1.has(n)&&n!=="delta"&&(c=l());let d=!1,u=async()=>{d||s.noAst||!c||(await sn(Wt(c.files.map(E=>E.ext))),d=!0)},f=s.indexDir??Ve,m=!1,p,g,h=!1,_=E=>(E.files.length===0&&!h&&(h=!0,Uo(s)),E),y=async()=>{if(p)return p;if(m)return g;if(m=!0,!s.noIndexCache)return p=Ba(s.repo,{...Kt(s,c),workers:s.workers,ast:!s.noAst},u,f).then(E=>{if(E)g={scan:_(E.scan),arts:E.arts,loadArtifacts:E.loadArtifacts,artifacts:E.artifacts};else if(s.indexDir!==void 0){let x=Ni(s.repo,f),v=i1["unusable"in x?x.unusable:"unreadable"];F.stderr.write(`codeindex: no usable index at ${Ut(s.repo,f)} (${v}) \u2014 building from scratch -`)}return g}),p},b,w=async()=>{let E=(await y())?.scan;return E||(b??=u().then(()=>hn(s.repo,{...Kt(s,c),workers:s.workers}).then(_)))},S,k=async()=>{let E=await y();return E?.arts?E.arts:E?E.arts??=E.loadArtifacts?.()??Pn(E.scan,Kt(s,c)):S??=w().then(x=>Pn(x,Kt(s,c)))},M=!1,N,A=()=>{if(!M){M=!0;let E=s.noIndexCache?void 0:nh(s.repo,{...Kt(s,c),ast:!s.noAst},f);E?.fileCount===0&&!h&&(h=!0,Uo(s)),N=E?.artifacts}return N},R=async()=>{let E=A()?.graph();if(E)return E;let x=await y();return x?.arts?.graph??x?.artifacts?.graph()??(await k()).graph},$=async E=>A()?.bytes(E)??(await y())?.artifacts?.bytes(E);if(n==="index"){if(!s.out)throw new Error("index needs --out ");let E=s.out;Xt(E,{recursive:!0});let x=j(E,"cache.json");await u();let v=Ln(s.repo),{model:P,error:O}=qr(v);O&&F.stderr.write(`codeindex: ${O} \u2014 embeddings.bin skipped; re-run \`codeindex embed pull\` -`);let L=j(E,"graph.json"),q=j(E,"symbols.json"),Z=j(E,"embeddings.bin"),ae=Y=>{try{return Re(le(Y))}catch{return}},be=Y=>!P||Y!==void 0&&Y.embedVersion===Vt&&Y.modelId===P.modelId&&Y.sha1!==void 0&&ae(Z)===Y.sha1,Se=s.noIndexCache||s.fullHash?void 0:o1(s.repo,{...Kt(s,c),out:E},s.maxCalls,E,be);if(Se){Se.files===0&&Uo(s),F.stderr.write(`codeindex: ${Se.files} files \u2192 ${E}/graph.json + symbols.json${Se.capped?" (capped)":""} (unchanged \u2014 artifacts reused) -`);return}let Me=s.noIndexCache?void 0:Oi(s.repo,E),U=Me?.meta??{},B=Me&&Ii(Me.cacheMap,Me.meta.extraction,{maxCallsPerFile:s.maxCalls,ast:Le}),z=await hn(s.repo,{...Kt(s,c),cache:B,out:E,workers:s.workers}),re=Dd(z.files,s.maxCalls,Le);z.files.length===0&&Uo(s);let de=j(E,zd),ke=Y=>{let se;try{se=Ae(x)}catch{return}let me=th(z,Y,re,{size:se.size,mtimeMs:se.mtimeMs}),V;try{V=le(de,"utf8")}catch{V=void 0}V!==me&&Sn(de,me)},rt=Y=>{let se=Object.create(null);for(let me of z.files){let V={hash:me.hash,record:me,size:me.size},oe=z.mtimes.get(me.rel);oe!==void 0&&(V.mtimeMs=oe),se[me.rel]=V}Sn(x,JSON.stringify({schemaVersion:5,extractorVersion:16,engineVersion:$e,commit:z.commit,graphSha1:Y.graphSha1,symbolsSha1:Y.symbolsSha1,embed:Y.embed,extraction:re,files:se})+` -`),ke(Y)},Q=be(U.embed)?Tr(s.repo,z,U,E):void 0,J=Q?.bytes("symbols")!==void 0,K=J&&Q.bytes("graph")!==void 0,we=J&&!K&&U.commit!==z.commit?Q.graph():void 0;if(K)z.cacheDirty||!jd(Me?.meta.extraction,re)?rt(U):ke(U),F.stderr.write(`codeindex: ${z.files.length} files \u2192 ${E}/graph.json + symbols.json${z.capped?" (capped)":""} (unchanged \u2014 artifacts reused) -`);else if(we){let Y=zr(we);Sn(L,Y),rt({graphSha1:Re(Y),symbolsSha1:U.symbolsSha1,embed:U.embed}),F.stderr.write(`codeindex: ${z.files.length} files \u2192 ${E}/graph.json + symbols.json${z.capped?" (capped)":""} (unchanged at a new commit \u2014 graph.json restamped, symbols.json reused) -`)}else{let{graph:Y,symbols:se,notes:me}=Pn(z);for(let ct of me??[])F.stderr.write(`codeindex: note: ${ct} -`);let V=zr(Y),oe=Ja(se);Sn(L,V),Sn(q,oe);let Te="",vt;if(P){let ct=Jr(z,P,{previous:ns(Z)}),Bn=uo(ct);Sn(Z,Bn),vt={embedVersion:Vt,modelId:P.modelId,sha1:Re(Bn)},Te=` + embeddings.bin (${ct.records.length} records, model ${P.modelId})`}rt({graphSha1:Re(V),symbolsSha1:Re(oe),embed:vt}),F.stderr.write(`codeindex: ${z.files.length} files \u2192 ${E}/graph.json + symbols.json${Te}${z.capped?" (capped)":""} -`);for(let ct of[...new Set(an(z).warnings)].sort())F.stderr.write(`codeindex: warning: ${ct} -`)}}else if(n==="scan"){if(s.why!==void 0&&s.skipped)throw new Error("scan takes --why or --skipped, not both");if(s.why!==void 0)_e(JSON.stringify(Pd(s.repo,s.why,Kt(s)),null,2)+` -`,s.out);else{let E=[],x=Ci(s.repo,{...Kt(s),onSkip:v=>E.push(v)});if(x.fileCount===0&&Uo(s),s.skipped)_e(JSON.stringify(E.sort(br(v=>v.rel)),null,2)+` -`,s.out);else{let v={engineVersion:$e,commit:x.commit,fileCount:x.fileCount,languages:x.languages,capped:x.capped,excluded:x.excluded,skipped:Pa(E)};_e(JSON.stringify(v,null,2)+` -`,s.out)}}}else if(n==="status"){let E=Pi(s.repo,{...Kt(s),ast:!s.noAst},f);_e(JSON.stringify(E,null,2)+` -`,s.out),s.check&&!E.artifactsFresh&&(F.exitCode=1)}else if(n==="graph")_e(await $("graph")??zr(await R()),s.out);else if(n==="symbols")_e(await $("symbols")??Ja((await k()).symbols),s.out);else if(n==="scip"){let E=await w(),x=Zu(E,{projectRoot:s.projectRoot}),v=s.out??ue("index.scip");v==="-"?F.stdout.write(W.from(x)):(Sn(v,x),F.stderr.write(`codeindex: SCIP index \u2192 ${v} (${x.length} bytes) -`))}else if(n==="callers"){if(s.lsp&&!s.positional)throw new Error("callers --lsp requires a symbol: callers --lsp");if(s.raw&&(s.lsp||s.recall))throw new Error("callers --raw lists call sites before any binding: it takes neither --lsp nor --recall");if(s.raw&&s.withCaller)throw new Error("callers --raw already names each site's enclosing symbol: it takes no --with-caller");let E=await w(),x=s.positional;if(s.raw)if(x)_e(JSON.stringify(fl(E,x),null,2)+` -`,s.out);else{let v={};for(let[P,O]of Eu(E))v[P]=O;_e(JSON.stringify(v,null,2)+` -`,s.out)}else if(x){let v=Qh(E,ey(x),{recall:s.recall}),P=al(v,x),L=(P&&s.withCaller?eo(E,P):P)??ml(E,x,v);if(!L){let ae=ur(E,x).length;throw new Error(`no symbol named "${x}" in the index`+(ae?` (${ae} call site(s) use the name; \`callers --raw ${x}\` lists them)`:""))}let q=Ot(E,x)?.reading,Z=s.lsp?await qs(E,s.repo,q?Xa(q):x,L,{trustRepoConfig:s.trustLspConfig}):L;_e(JSON.stringify(Z,null,2)+` -`,s.out)}else{let v=Ur(E,void 0,{recall:s.recall}),P={};for(let[O,L]of v)P[O]=s.withCaller?eo(E,L):L;_e(JSON.stringify(P,null,2)+` -`,s.out)}}else if(n==="hierarchy"){let E=await w(),x=Fs(E);if(s.positional){let v=sr(x,s.positional,Ot(E,s.positional)?.defs);if(!v)throw new Error(`no type named ${s.positional}`);_e(JSON.stringify(v,null,2)+` -`,s.out)}else{let v={};for(let[P,O]of x)v[P]=O;_e(JSON.stringify(v,null,2)+` -`,s.out)}}else if(n==="implementations"){if(!s.positional)throw new Error("implementations needs a type name: cli.mjs implementations --repo ");let E=await w(),x=Fs(E),v=Ot(E,s.positional)?.defs;if(!sr(x,s.positional,v))throw new Error(`no type named ${s.positional}`);_e(JSON.stringify({name:s.positional,implementations:Ui(x,s.positional,v)},null,2)+` -`,s.out)}else if(n==="callgraph"){if(!s.positional)throw new Error("callgraph needs a symbol: cli.mjs callgraph --repo ");let E=await w(),x=Os(E),v=zi(x,s.positional,{...s.depth!==void 0?{depth:s.depth}:{},...s.direction?{direction:s.direction}:{}});if(!v.root.length)throw new Error(`no symbol named ${s.positional}`);_e(JSON.stringify(v,null,2)+` -`,s.out)}else if(n==="find"||n==="refs"||n==="outline"){if(!s.positional){let v={find:"find ",refs:"refs ",outline:"outline "}[n];throw new Error(`${n} needs an argument: cli.mjs ${v} --repo `)}if(s.lsp&&n!=="refs")throw new Error("--lsp applies to `callers ` and `refs ` only");let E=await w(),x;if(n==="find")x=_n(E,s.positional,{substring:s.substring,includeBody:s.includeBody,concise:s.concise,maxResults:s.limit});else if(n==="refs"){let v=to(E,s.positional),P=Ot(E,s.positional)?.reading.name??s.positional,O=s.lsp?await ko(E,s.repo,P,v,{trustRepoConfig:s.trustLspConfig}):v;x=s.concise?Yl(O):O}else{let v=new Set(E.files.map(L=>L.rel)),P=ts(s.repo,s.positional,L=>v.has(L));if(P===void 0)throw new Error(`no such file in the index: ${s.positional}`);let O=Qi(E,P);x=s.concise?O.map(L=>pr(L,L.name)):O}_e(JSON.stringify(x,null,2)+` -`,s.out)}else if(n==="callpath"){let[E,x]=s.positionals;if(!E||!x)throw new Error("callpath needs two arguments: cli.mjs callpath --repo (--files: two file paths)");if(s.includeInferred&&!s.files)throw new Error("--include-inferred applies to `impact` and `callpath --files` only");let v={depth:s.depth,maxPaths:s.limit},P;if(s.files){let{graph:O}=await k(),L=new Set(O.files.map(ae=>ae.rel)),[q,Z]=[E,x].map(ae=>{let be=ts(s.repo,ae,Se=>L.has(Se));if(be===void 0)throw new Error(`no such file in the index: ${ae}`);return be});P=el(O,q,Z,{...v,includeInferred:s.includeInferred})}else{let O=Za(Os(await w()),E,x,v);if(!O.from.length)throw new Error(`no symbol named ${E}`);if(!O.to.length)throw new Error(`no symbol named ${x}`);P=O}_e(JSON.stringify(P,null,2)+` -`,s.out)}else if(n==="symbol-at"){let E=s.positional?/^(.+?):(\d+)(?::\d+)?$/.exec(s.positional):null;if(!E||Number(E[2])<1)throw new Error("symbol-at needs : cli.mjs symbol-at src/a.ts:42 --repo ");let x=await w(),v=new Set(x.files.map(O=>O.rel)),P=ts(s.repo,E[1],O=>v.has(O));if(P===void 0)throw new Error(`no such file in the index: ${E[1]}`);_e(JSON.stringify(ul(x,P,Number(E[2])),null,2)+` -`,s.out)}else if(n==="search"){if(!s.positional)throw new Error('search needs a query: cli.mjs search "" --repo ');let E=await w(),x={limit:s.limit,fuzzy:s.fuzzy,...s.exact?{exact:!0}:{},...s.rank?{rank:s.rank}:{}},v=({results:O,explain:L})=>{_e(JSON.stringify(s.explain?{results:O,explain:L}:O,null,2)+` -`,s.out),L.note&&F.stderr.write(`codeindex: ${L.note} -`)},P=()=>v(zt(E,s.positional,x));if(s.semantic){let O=mr();if(O){let L;try{let q=te(j(Ut(s.repo,f),"cache.json"))?j(Ut(s.repo,f),"embed-cache",`endpoint-${Re(Ml(O)).slice(0,12)}.bin`):void 0,Z=q?await af():void 0,ae=q?ns(q):void 0,be=await po(E,{previous:ae,modelId:Z});q&&!m_(ae,be)&&sb(q,uo(be));let Se=await mo(s.positional);L=fr(E,s.positional,be,{...x,queryVec:Se})}catch(q){F.stderr.write(`codeindex: embedding endpoint ${O} unavailable (${q instanceof Error?q.message:q}) \u2014 returning lexical results -`)}L?v(L):P()}else{let{model:L,error:q}=qr(Ln(s.repo));if(!L)F.stderr.write(q?`codeindex: semantic search unavailable (${q}) \u2014 returning lexical results; re-run \`codeindex embed pull\` to replace the model -`:"codeindex: semantic search unavailable (no embedding model or endpoint) \u2014 returning lexical results; run `codeindex embed pull` or set CODEINDEX_EMBED_ENDPOINT to enable it\n"),P();else{let Z=ns(j(Ut(s.repo,f),"embeddings.bin")),ae=Jr(E,L,{previous:Z});v(fr(E,s.positional,ae,{...x,model:L}))}}}else P()}else if(n==="embed"){let E=s.positional,x=Ln(s.repo);if(E==="status"){let{model:v,error:P}=qr(x),O=mr(),q={embedVersion:Vt,mode:O?"endpoint":v?"static":"none",model:v?{present:!0,dir:x,modelId:v.modelId,dim:v.dim,vocabSize:v.vocabSize}:P?{present:!0,dir:x,error:P}:{present:!1},endpoint:O??null};O&&(q.endpointReachable=await fo(O)),_e(JSON.stringify(q,null,2)+` -`,s.out)}else if(E==="serve"){let v=["run","-d","-p","8756:8756","ghcr.io/maxgfr/codeindex-embed:latest"],P=`docker ${v.join(" ")}`;if(!Zt("docker")){F.stderr.write(`codeindex: docker not found on PATH. Install Docker, then run: +${Sc}`),O.exitCode=2;return}let o=r.indexOf("--");if((o===-1?r:r.slice(0,o)).some(S=>S==="--help"||S==="-h")){O.stdout.write(kT(n));return}let s=ET(r);if(ST(n,s),(n==="index"||n==="embed"&&s.positional==="build")&&s.out==="-")throw new Error(`${n==="index"?"index":"embed build"} writes files: --out needs a directory, not "-"`);if(!ne(s.repo))throw new Error(`--repo path does not exist: ${s.repo}`);if(!Ae(s.repo).isDirectory())throw new Error(`--repo path is not a directory: ${s.repo}`);vT(s);let a=(!RT.has(n)||n==="workspaces"&&s.check===!0)&&!(n==="embed"&&s.positional!=="build"),l=()=>Xe(s.repo,$r(s.repo,Xt(s))),c;a&&!s.noAst&&!CT.has(n)&&n!=="delta"&&(c=l());let d=!1,u=async()=>{d||s.noAst||!c||(await on(Bt(c.files.map(S=>S.ext))),d=!0)},f=s.indexDir??Je,m=!1,p,g,h=!1,_=S=>(S.files.length===0&&!h&&(h=!0,Go(s)),S),y=async()=>{if(p)return p;if(m)return g;if(m=!0,!s.noIndexCache)return p=Ha(s.repo,{...Xt(s,c),workers:s.workers,ast:!s.noAst},u,f).then(S=>{if(S)g={scan:_(S.scan),arts:S.arts,loadArtifacts:S.loadArtifacts,artifacts:S.artifacts};else if(s.indexDir!==void 0){let w=Di(s.repo,f),E=MT["unusable"in w?w.unusable:"unreadable"];O.stderr.write(`codeindex: no usable index at ${zt(s.repo,f)} (${E}) \u2014 building from scratch +`)}return g}),p},b,x=async()=>{let S=(await y())?.scan;return S||(b??=u().then(()=>yn(s.repo,{...Xt(s,c),workers:s.workers}).then(_)))},k,v=async()=>{let S=await y();return S?.arts?S.arts:S?S.arts??=S.loadArtifacts?.()??Ln(S.scan,Xt(s,c)):k??=x().then(w=>Ln(w,Xt(s,c)))},T=!1,F,R=()=>{if(!T){T=!0;let S=s.noIndexCache?void 0:hh(s.repo,{...Xt(s,c),ast:!s.noAst},f);S?.fileCount===0&&!h&&(h=!0,Go(s)),F=S?.artifacts}return F},C=async()=>{let S=R()?.graph();if(S)return S;let w=await y();return w?.arts?.graph??w?.artifacts?.graph()??(await v()).graph},A=async S=>R()?.bytes(S)??(await y())?.artifacts?.bytes(S);if(n==="index"){if(!s.out)throw new Error("index needs --out ");let S=s.out;Zt(S,{recursive:!0});let w=j(S,"cache.json");await u();let E=Dn(s.repo),{model:P,error:N}=Jr(E);N&&O.stderr.write(`codeindex: ${N} \u2014 embeddings.bin skipped; re-run \`codeindex embed pull\` +`);let L=j(S,"graph.json"),H=j(S,"symbols.json"),Y=j(S,"embeddings.bin"),oe=K=>{try{return Re(ie(K))}catch{return}},ge=K=>!P||K!==void 0&&K.embedVersion===Jt&&K.modelId===P.modelId&&K.sha1!==void 0&&oe(Y)===K.sha1,Se=s.noIndexCache||s.fullHash?void 0:AT(s.repo,{...Xt(s,c),out:S},s.maxCalls,S,ge);if(Se){Se.files===0&&Go(s),O.stderr.write(`codeindex: ${Se.files} files \u2192 ${S}/graph.json + symbols.json${Se.capped?" (capped)":""} (unchanged \u2014 artifacts reused) +`);return}let Ce=s.noIndexCache?void 0:Li(s.repo,S),U=Ce?.meta??{},B=Ce&&Fi(Ce.cacheMap,Ce.meta.extraction,{maxCallsPerFile:s.maxCalls,ast:Le}),G=await yn(s.repo,{...Xt(s,c),cache:B,out:S,workers:s.workers}),ee=Vd(G.files,s.maxCalls,Le);G.files.length===0&&Go(s);let ce=j(S,Qd),ke=K=>{let J;try{J=Ae(w)}catch{return}let X=gh(G,K,ee,{size:J.size,mtimeMs:J.mtimeMs}),V;try{V=ie(ce,"utf8")}catch{V=void 0}V!==X&&Sn(ce,X)},rt=K=>{let J=Object.create(null);for(let X of G.files){let V={hash:X.hash,record:X,size:X.size},te=G.mtimes.get(X.rel);te!==void 0&&(V.mtimeMs=te),J[X.rel]=V}Sn(w,JSON.stringify({schemaVersion:5,extractorVersion:17,engineVersion:Te,commit:G.commit,graphSha1:K.graphSha1,symbolsSha1:K.symbolsSha1,embed:K.embed,extraction:ee,files:J})+` +`),ke(K)},_e=ge(U.embed)?Fr(s.repo,G,U,S):void 0,me=_e?.bytes("symbols")!==void 0,he=me&&_e.bytes("graph")!==void 0,Z=me&&!he&&U.commit!==G.commit?_e.graph():void 0;if(he)G.cacheDirty||!Jd(Ce?.meta.extraction,ee)?rt(U):ke(U),O.stderr.write(`codeindex: ${G.files.length} files \u2192 ${S}/graph.json + symbols.json${G.capped?" (capped)":""} (unchanged \u2014 artifacts reused) +`);else if(Z){let K=qr(Z);Sn(L,K),rt({graphSha1:Re(K),symbolsSha1:U.symbolsSha1,embed:U.embed}),O.stderr.write(`codeindex: ${G.files.length} files \u2192 ${S}/graph.json + symbols.json${G.capped?" (capped)":""} (unchanged at a new commit \u2014 graph.json restamped, symbols.json reused) +`)}else{let{graph:K,symbols:J,notes:X}=Ln(G);for(let Ve of X??[])O.stderr.write(`codeindex: note: ${Ve} +`);let V=qr(K),te=Za(J);Sn(L,V),Sn(H,te);let de="",it;if(P){let Ve=Xr(G,P,{previous:ss(Y)}),cs=po(Ve);Sn(Y,cs),it={embedVersion:Jt,modelId:P.modelId,sha1:Re(cs)},de=` + embeddings.bin (${Ve.records.length} records, model ${P.modelId})`}rt({graphSha1:Re(V),symbolsSha1:Re(te),embed:it}),O.stderr.write(`codeindex: ${G.files.length} files \u2192 ${S}/graph.json + symbols.json${de}${G.capped?" (capped)":""} +`);for(let Ve of[...new Set(ln(G).warnings)].sort())O.stderr.write(`codeindex: warning: ${Ve} +`)}}else if(n==="scan"){if(s.why!==void 0&&s.skipped)throw new Error("scan takes --why or --skipped, not both");if(s.why!==void 0)we(JSON.stringify(Gd(s.repo,s.why,Xt(s)),null,2)+` +`,s.out);else{let S=[],w=Ti(s.repo,{...Xt(s),onSkip:E=>S.push(E)});if(w.fileCount===0&&Go(s),s.skipped)we(JSON.stringify(S.sort(xr(E=>E.rel)),null,2)+` +`,s.out);else{let E={engineVersion:Te,commit:w.commit,fileCount:w.fileCount,languages:w.languages,capped:w.capped,excluded:w.excluded,skipped:ja(S)};we(JSON.stringify(E,null,2)+` +`,s.out)}}}else if(n==="status"){let S=ji(s.repo,{...Xt(s),ast:!s.noAst},f);we(JSON.stringify(S,null,2)+` +`,s.out),s.check&&!S.artifactsFresh&&(O.exitCode=1)}else if(n==="graph")we(await A("graph")??qr(await C()),s.out);else if(n==="symbols")we(await A("symbols")??Za((await v()).symbols),s.out);else if(n==="scip"){let S=await x(),w=lf(S,{projectRoot:s.projectRoot}),E=s.out??ae("index.scip");E==="-"?O.stdout.write(W.from(w)):(Sn(E,w),O.stderr.write(`codeindex: SCIP index \u2192 ${E} (${w.length} bytes) +`))}else if(n==="callers"){if(s.lsp&&!s.positional)throw new Error("callers --lsp requires a symbol: callers --lsp");if(s.raw&&(s.lsp||s.recall))throw new Error("callers --raw lists call sites before any binding: it takes neither --lsp nor --recall");if(s.raw&&s.withCaller)throw new Error("callers --raw already names each site's enclosing symbol: it takes no --with-caller");let S=await x(),w=s.positional;if(s.raw)if(w){let E=gl(S,w),P=pr(S,E.name,{calls:!0});we(JSON.stringify(P?{...E,coverage:P}:E,null,2)+` +`,s.out)}else{let E={};for(let[P,N]of Fu(S))E[P]=N;we(JSON.stringify(E,null,2)+` +`,s.out)}else if(w){let E=my(S,py(w),{recall:s.recall}),P=dl(E,w),L=(P&&s.withCaller?ro(S,P):P)??hl(S,w,E);if(!L){let ge=ur(S,w).length;throw new Error(`no symbol named "${w}" in the index`+(ge?` (${ge} call site(s) use the name; \`callers --raw ${w}\` lists them)`:"")+rc(S,w))}let H=Nt(S,w)?.reading,Y=s.lsp?await Ks(S,s.repo,H?Qa(H):w,L,{trustRepoConfig:s.trustLspConfig}):L,oe=pr(S,H?.name??w,{calls:!0});we(JSON.stringify(oe?{...Y,coverage:oe}:Y,null,2)+` +`,s.out)}else{let E=Hr(S,void 0,{recall:s.recall}),P={};for(let[N,L]of E)P[N]=s.withCaller?ro(S,L):L;we(JSON.stringify(P,null,2)+` +`,s.out)}}else if(n==="hierarchy"){let S=await x(),w=Ps(S);if(s.positional){let E=sr(w,s.positional,Nt(S,s.positional)?.defs);if(!E)throw new Error(`no type named ${s.positional}`);we(JSON.stringify(E,null,2)+` +`,s.out)}else{let E={};for(let[P,N]of w)E[P]=N;we(JSON.stringify(E,null,2)+` +`,s.out)}}else if(n==="implementations"){if(!s.positional)throw new Error("implementations needs a type name: cli.mjs implementations --repo ");let S=await x(),w=Ps(S),E=Nt(S,s.positional)?.defs;if(!sr(w,s.positional,E))throw new Error(`no type named ${s.positional}`);we(JSON.stringify({name:s.positional,implementations:Gi(w,s.positional,E)},null,2)+` +`,s.out)}else if(n==="callgraph"){if(!s.positional)throw new Error("callgraph needs a symbol: cli.mjs callgraph --repo ");let S=await x(),w=Ls(S),E=Vi(w,s.positional,{...s.depth!==void 0?{depth:s.depth}:{},...s.direction?{direction:s.direction}:{}});if(!E.root.length)throw new Error(`no symbol named ${s.positional}`);we(JSON.stringify(E,null,2)+` +`,s.out)}else if(n==="find"||n==="refs"||n==="outline"){if(!s.positional){let E={find:"find ",refs:"refs ",outline:"outline "}[n];throw new Error(`${n} needs an argument: cli.mjs ${E} --repo `)}if(s.lsp&&n!=="refs")throw new Error("--lsp applies to `callers ` and `refs ` only");let S=await x(),w;if(n==="find"){if(w=_n(S,s.positional,{substring:s.substring,includeBody:s.includeBody,concise:s.concise,maxResults:s.limit}),Array.isArray(w)&&!w.length){let E=nc(S,s.positional.replace(/@.*$/,"").replace(/^.*[#/]/,""));E.length&&O.stderr.write(`codeindex: not indexed for size but naming it: ${E.map(P=>`${P.file} (${P.size} bytes)`).join(", ")}; re-index with --max-bytes ${Math.max(...E.map(P=>P.size))} +`)}}else if(n==="refs"){let E=so(S,s.positional),P=Nt(S,s.positional)?.reading.name??s.positional,N=s.lsp?await Ro(S,s.repo,P,E,{trustRepoConfig:s.trustLspConfig}):E,L=s.concise?sc(N):N,H=pr(S,P,{calls:!0});w=H?{...L,coverage:H}:L}else{let E=new Set(S.files.map(L=>L.rel)),P=ns(s.repo,s.positional,L=>E.has(L));if(P===void 0)throw new Error(rs(S,s.repo,s.positional)??`no such file in the index: ${s.positional}`);let N=no(S,P);w=s.concise?N.map(L=>gr(L,L.name)):N}we(JSON.stringify(w,null,2)+` +`,s.out)}else if(n==="callpath"){let[S,w]=s.positionals;if(!S||!w)throw new Error("callpath needs two arguments: cli.mjs callpath --repo (--files: two file paths)");if(s.includeInferred&&!s.files)throw new Error("--include-inferred applies to `impact` and `callpath --files` only");let E={depth:s.depth,maxPaths:s.limit},P;if(s.files){let{graph:N}=await v(),L=new Set(N.files.map(oe=>oe.rel)),[H,Y]=[S,w].map(oe=>{let ge=ns(s.repo,oe,Se=>L.has(Se));if(ge===void 0)throw new Error(`no such file in the index: ${oe}`);return ge});P=rl(N,H,Y,{...E,includeInferred:s.includeInferred})}else{let N=el(Ls(await x()),S,w,E);if(!N.from.length)throw new Error(`no symbol named ${S}`);if(!N.to.length)throw new Error(`no symbol named ${w}`);P=N}we(JSON.stringify(P,null,2)+` +`,s.out)}else if(n==="symbol-at"){let S=s.positional?/^(.+?):(\d+)(?::\d+)?$/.exec(s.positional):null;if(!S||Number(S[2])<1)throw new Error("symbol-at needs : cli.mjs symbol-at src/a.ts:42 --repo ");let w=await x(),E=new Set(w.files.map(N=>N.rel)),P=ns(s.repo,S[1],N=>E.has(N));if(P===void 0)throw new Error(rs(w,s.repo,S[1])??`no such file in the index: ${S[1]}`);we(JSON.stringify(pl(w,P,Number(S[2])),null,2)+` +`,s.out)}else if(n==="search"){if(!s.positional)throw new Error('search needs a query: cli.mjs search "" --repo ');let S=await x(),w={limit:s.limit,fuzzy:s.fuzzy,...s.exact?{exact:!0}:{},...s.rank?{rank:s.rank}:{}},E=({results:N,explain:L})=>{we(JSON.stringify(s.explain?{results:N,explain:L}:N,null,2)+` +`,s.out),L.note&&O.stderr.write(`codeindex: ${L.note} +`)},P=()=>E(Gt(S,s.positional,w));if(s.semantic){let N=mr();if(N){let L;try{let H=ne(j(zt(s.repo,f),"cache.json"))?j(zt(s.repo,f),"embed-cache",`endpoint-${Re(Il(N)).slice(0,12)}.bin`):void 0,Y=H?await yf():void 0,oe=H?ss(H):void 0,ge=await yo(S,{previous:oe,modelId:Y});H&&!C_(oe,ge)&&wb(H,po(ge));let Se=await ho(s.positional);L=fr(S,s.positional,ge,{...w,queryVec:Se})}catch(H){O.stderr.write(`codeindex: embedding endpoint ${N} unavailable (${H instanceof Error?H.message:H}) \u2014 returning lexical results +`)}L?E(L):P()}else{let{model:L,error:H}=Jr(Dn(s.repo));if(!L)O.stderr.write(H?`codeindex: semantic search unavailable (${H}) \u2014 returning lexical results; re-run \`codeindex embed pull\` to replace the model +`:"codeindex: semantic search unavailable (no embedding model or endpoint) \u2014 returning lexical results; run `codeindex embed pull` or set CODEINDEX_EMBED_ENDPOINT to enable it\n"),P();else{let Y=ss(j(zt(s.repo,f),"embeddings.bin")),oe=Xr(S,L,{previous:Y});E(fr(S,s.positional,oe,{...w,model:L}))}}}else P()}else if(n==="embed"){let S=s.positional,w=Dn(s.repo);if(S==="status"){let{model:E,error:P}=Jr(w),N=mr(),H={embedVersion:Jt,mode:N?"endpoint":E?"static":"none",model:E?{present:!0,dir:w,modelId:E.modelId,dim:E.dim,vocabSize:E.vocabSize}:P?{present:!0,dir:w,error:P}:{present:!1},endpoint:N??null};N&&(H.endpointReachable=await go(N)),we(JSON.stringify(H,null,2)+` +`,s.out)}else if(S==="serve"){let E=["run","-d","-p","8756:8756","ghcr.io/maxgfr/codeindex-embed:latest"],P=`docker ${E.join(" ")}`;if(!Yt("docker")){O.stderr.write(`codeindex: docker not found on PATH. Install Docker, then run: `+P+` -`),F.exitCode=1;return}if(s.run){F.stderr.write(`codeindex: starting embedding server \u2192 ${P} -`);let O=Fe("docker",v);if(O.stdout.trim()&&F.stdout.write(O.stdout.trim()+` -`),!O.ok){F.stderr.write(O.stderr||`codeindex: docker run failed -`),F.exitCode=1;return}F.stderr.write(`codeindex: server starting on http://localhost:8756 \u2014 then: +`),O.exitCode=1;return}if(s.run){O.stderr.write(`codeindex: starting embedding server \u2192 ${P} +`);let N=$e("docker",E);if(N.stdout.trim()&&O.stdout.write(N.stdout.trim()+` +`),!N.ok){O.stderr.write(N.stderr||`codeindex: docker run failed +`),O.exitCode=1;return}O.stderr.write(`codeindex: server starting on http://localhost:8756 \u2014 then: CODEINDEX_EMBED_ENDPOINT=http://localhost:8756 codeindex search "" --repo . --semantic -`)}else F.stdout.write(P+` -`),F.stderr.write('codeindex: run the line above to start the embedding server (or `embed serve --run`), then:\n CODEINDEX_EMBED_ENDPOINT=http://localhost:8756 codeindex search "" --repo . --semantic\n')}else if(E==="build"){if(!s.out)throw new Error("embed build needs --out ");if(!x){F.stderr.write("codeindex: no embedding model present \u2014 run `codeindex embed pull` first (nothing written)\n"),F.exitCode=1;return}let v=Bs(x);Xt(s.out,{recursive:!0});let P=await w(),O=Jr(P,v,{previous:ns(j(s.out,"embeddings.bin"))});Sn(j(s.out,"embeddings.bin"),uo(O)),F.stderr.write(`codeindex: ${O.records.length} embedding records \u2192 ${s.out}/embeddings.bin (model ${v.modelId}) -`)}else if(E==="pull"){let{url:v,sha256:P}=tf(),O=F.env.CODEINDEX_EMBED_DIR??j(s.repo,".codeindex","models");Xt(O,{recursive:!0}),F.stderr.write(`codeindex: fetching model from ${v} \u2192 ${j(O,"model.json")} -`);let L;try{L=await a_(v,P)}catch(q){F.stderr.write(`codeindex: pull failed \u2014 ${q instanceof Error?q.message:String(q)} (nothing written) -`),F.exitCode=1;return}try{ef(JSON.parse(L),v)}catch(q){F.stderr.write(`codeindex: pull failed \u2014 response is not a valid model.json (${q instanceof Error?q.message:String(q)}) (nothing written) -`),F.exitCode=1;return}Sn(j(O,"model.json"),L),F.stderr.write(`codeindex: model written to ${j(O,"model.json")} -`)}else throw new Error("embed needs a subcommand: status | build | pull | serve")}else if(n==="lsp"){if(s.positional!=="status")throw new Error("lsp needs a subcommand: status");_e(JSON.stringify(await So(await w(),s.repo,s.probe===!0,{trustRepoConfig:s.trustLspConfig}),null,2)+` -`,s.out)}else if(n==="grammars"){let E=s.positional,x=_s();if(E==="status"){let v=jt(),P=Se=>v.dirs.some(Me=>te(j(Me,Se))),O=P("web-tree-sitter.wasm"),L=Ha(),q=Se=>[...Se].filter(Me=>P(`${Me}.wasm`)).sort(),Z=q(Si),ae=q(ys),be={engineVersion:$e,tier:v.tier,dir:v.dir??null,dirs:v.dirs,cacheDir:x,runtimePresent:O,pullNeeded:!O,extendedPullNeeded:ae.length!Z.includes(Se)).sort()},extended:{resolved:ae.length,of:ys.size,missing:[...ys].filter(Se=>!ae.includes(Se)).sort()},url:L.url};_e(JSON.stringify(be,null,2)+` -`,s.out)}else if(E==="pull"){let v=await Li(x,{onNote:P=>F.stderr.write(P)});F.stderr.write(v.message),v.ok||(F.exitCode=1)}else throw new Error("grammars needs a subcommand: status | pull")}else if(n==="rules"){if(!s.config)throw new Error("rules needs --config ");let E=[ue(s.config),ue(s.repo,s.config)].find(L=>te(L))??ue(s.config),x=Ul(le(E,"utf8"),E),{scan:v,graph:P}=await k(),O=zl(Eo(P,x,{scan:v}));_e(JSON.stringify(O,null,2)+` -`,s.out),O.errors>0&&(F.exitCode=1)}else if(n==="workspaces"){let E=Fn(s.repo),x=s.check?yl(E,(await k()).graph):void 0;_e(JSON.stringify(_l(E,x),null,2)+` -`,s.out),x&&!x.ok&&(F.exitCode=1)}else if(n==="churn"){let E=Qt(s.repo,{since:s.since}),x=Od(s.repo,Kt(s)),v=x&&(O=>x({rel:O,abs:j(s.repo,O),directory:!1})),P={};for(let O of[...E.churn.keys()].sort())(!v||v(O))&&(P[O]=E.churn.get(O));_e(JSON.stringify({ok:E.ok,...mn(E),churn:P},null,2)+` -`,s.out)}else if(n==="repomap"){let E=await R();_e(Xr(await w(),E,{budgetTokens:s.budgetTokens}),s.out)}else if(n==="hotspots"){let E=await w(),x=Qt(s.repo,{since:s.since}),v=Zr(E,x.churn,s.limit);_e(JSON.stringify({churnOk:x.ok,...mn(x),hotspots:v},null,2)+` -`,s.out)}else if(n==="coupling"){let{graph:E}=await k(),x=ho(s.repo,{since:s.since,graph:E,hidden:s.hidden,minTogether:s.minTogether,maxCommitFiles:s.maxCommitFiles,maxPairs:s.limit});_e(JSON.stringify({ok:x.ok,...mn(x),couplings:x.couplings},null,2)+` -`,s.out)}else if(n==="deadcode"){let E=Ro(await w(),{kinds:s.kinds,includeTail:s.includeTail});_e(JSON.stringify(ql(E,s.limit),null,2)+` -`,s.out)}else if(n==="literals"){let E=Nn(await w(),{minFiles:s.minFiles,minCount:s.minCount,includeTests:s.includeTests});_e(JSON.stringify(E,null,2)+` -`,s.out)}else if(n==="complexity"){let E=await w(),x=s.positional;if(x!==void 0){let v=new Set(E.files.map(O=>O.rel)),P=es(s.repo,x).find(O=>v.has(O));if(P===void 0)throw new Error(`no such file in the index: ${x}`);x=P}_e(JSON.stringify(Xi(E,x,s.limit),null,2)+` -`,s.out)}else if(n==="risk"){let E=await w(),x=Qt(s.repo,{since:s.since}),v=Zi(E,x.churn,s.limit);_e(JSON.stringify({churnOk:x.ok,...mn(x),risks:v},null,2)+` -`,s.out)}else if(n==="delta"){let E={base:s.base,staged:s.staged,depth:s.depth,indexDir:f},x=Vs(s.repo,E);if("error"in x)throw new Error(x.error);let v=Co(x,s.depth);if(x.files.length){s.noAst||(c=l());let{scan:P,graph:O,symbols:L}=await k();v=Js(x,O,L,{...E,scan:P})}_e(s.json?JSON.stringify(v,null,2)+` -`:Ao(v),s.out),s.failOn&&v.modules.some(P=>Rb(P.bucket)>=Rb(s.failOn))&&(F.exitCode=1)}else if(n==="impact"){if(!s.positional)throw new Error("impact needs a target: cli.mjs impact --repo ");let E=await R(),x;for(let v of es(s.repo,s.positional))if(x=qi(E,v,s.depth??1/0,{includeInferred:s.includeInferred}),x)break;if(!x)throw new Error(`no such file or module in the index: ${s.positional}`);_e(JSON.stringify(x,null,2)+` -`,s.out)}else if(n==="neighbors"){if(!s.positional)throw new Error("neighbors needs a target: cli.mjs neighbors --repo ");let E=await R(),x=s.kind?new Set(s.kind.split(",")):void 0,v;for(let P of es(s.repo,s.positional))if(v=Vi(E,P,s.depth??1,x),v)break;if(!v)throw new Error(`no such file or module in the index: ${s.positional}`);_e(JSON.stringify(v,null,2)+` -`,s.out)}else if(n==="resolution"){let E=Zl(await w(),{lang:s.lang,limit:s.limit});_e(JSON.stringify(E,null,2)+` -`,s.out)}else if(n==="mermaid")_e(Mo(await R(),{module:s.positional}),s.out);else if(n==="grep"){if(!s.positional)throw new Error("grep needs a pattern: cli.mjs grep --repo ");let E=Ws(s.repo,s.positional,{globs:s.include.length||s.exclude.length?[...s.include,...s.exclude.map(x=>`!${x}`)]:void 0,scope:s.scope,ignoreCase:s.ignoreCase,maxHits:s.maxHits,filesWithMatches:s.filesWithMatches,gitignore:s.gitignore,ignoreDirs:s.ignoreDirs.length?s.ignoreDirs:void 0,maxFileBytes:s.maxBytes,timeoutMs:s.timeoutMs});_e(JSON.stringify(E.hits,null,2)+` -`,s.out);for(let x of E.notes)F.stderr.write(`codeindex grep: ${x} -`)}else F.stderr.write(`unknown command: ${n} +`)}else O.stdout.write(P+` +`),O.stderr.write('codeindex: run the line above to start the embedding server (or `embed serve --run`), then:\n CODEINDEX_EMBED_ENDPOINT=http://localhost:8756 codeindex search "" --repo . --semantic\n')}else if(S==="build"){if(!s.out)throw new Error("embed build needs --out ");if(!w){O.stderr.write("codeindex: no embedding model present \u2014 run `codeindex embed pull` first (nothing written)\n"),O.exitCode=1;return}let E=Hs(w);Zt(s.out,{recursive:!0});let P=await x(),N=Xr(P,E,{previous:ss(j(s.out,"embeddings.bin"))});Sn(j(s.out,"embeddings.bin"),po(N)),O.stderr.write(`codeindex: ${N.records.length} embedding records \u2192 ${s.out}/embeddings.bin (model ${E.modelId}) +`)}else if(S==="pull"){let{url:E,sha256:P}=ff(),N=O.env.CODEINDEX_EMBED_DIR??j(s.repo,".codeindex","models");Zt(N,{recursive:!0}),O.stderr.write(`codeindex: fetching model from ${E} \u2192 ${j(N,"model.json")} +`);let L;try{L=await x_(E,P)}catch(H){O.stderr.write(`codeindex: pull failed \u2014 ${H instanceof Error?H.message:String(H)} (nothing written) +`),O.exitCode=1;return}try{uf(JSON.parse(L),E)}catch(H){O.stderr.write(`codeindex: pull failed \u2014 response is not a valid model.json (${H instanceof Error?H.message:String(H)}) (nothing written) +`),O.exitCode=1;return}Sn(j(N,"model.json"),L),O.stderr.write(`codeindex: model written to ${j(N,"model.json")} +`)}else throw new Error("embed needs a subcommand: status | build | pull | serve")}else if(n==="lsp"){if(s.positional!=="status")throw new Error("lsp needs a subcommand: status");we(JSON.stringify(await vo(await x(),s.repo,s.probe===!0,{trustRepoConfig:s.trustLspConfig}),null,2)+` +`,s.out)}else if(n==="grammars"){let S=s.positional,w=xs();if(S==="status"){let E=Wt(),P=Se=>E.dirs.some(Ce=>ne(j(Ce,Se))),N=P("web-tree-sitter.wasm"),L=qa(),H=Se=>[...Se].filter(Ce=>P(`${Ce}.wasm`)).sort(),Y=H(Ei),oe=H(ws),ge={engineVersion:Te,tier:E.tier,dir:E.dir??null,dirs:E.dirs,cacheDir:w,runtimePresent:N,pullNeeded:!N,extendedPullNeeded:oe.length!Y.includes(Se)).sort()},extended:{resolved:oe.length,of:ws.size,missing:[...ws].filter(Se=>!oe.includes(Se)).sort()},url:L.url};we(JSON.stringify(ge,null,2)+` +`,s.out)}else if(S==="pull"){let E=await Wi(w,{onNote:P=>O.stderr.write(P)});O.stderr.write(E.message),E.ok||(O.exitCode=1)}else throw new Error("grammars needs a subcommand: status | pull")}else if(n==="rules"){if(!s.config)throw new Error("rules needs --config ");let S=[ae(s.config),ae(s.repo,s.config)].find(L=>ne(L))??ae(s.config),w=Gl(ie(S,"utf8"),S),{scan:E,graph:P}=await v(),N=Vl(Co(P,w,{scan:E}));we(JSON.stringify(N,null,2)+` +`,s.out),N.errors>0&&(O.exitCode=1)}else if(n==="workspaces"){let S=On(s.repo),w=s.check?wl(S,(await v()).graph):void 0;we(JSON.stringify(xl(S,w),null,2)+` +`,s.out),w&&!w.ok&&(O.exitCode=1)}else if(n==="churn"){let S=en(s.repo,{since:s.since}),w=zd(s.repo,Xt(s)),E=w&&(N=>w({rel:N,abs:j(s.repo,N),directory:!1})),P={};for(let N of[...S.churn.keys()].sort())(!E||E(N))&&(P[N]=S.churn.get(N));we(JSON.stringify({ok:S.ok,...pn(S),churn:P},null,2)+` +`,s.out)}else if(n==="repomap"){let S=await C();we(Yr(await x(),S,{budgetTokens:s.budgetTokens}),s.out)}else if(n==="hotspots"){let S=await x(),w=en(s.repo,{since:s.since}),E=Qr(S,w.churn,s.limit);we(JSON.stringify({churnOk:w.ok,...pn(w),hotspots:E},null,2)+` +`,s.out)}else if(n==="coupling"){let{graph:S}=await v(),w=bo(s.repo,{since:s.since,graph:S,hidden:s.hidden,minTogether:s.minTogether,maxCommitFiles:s.maxCommitFiles,maxPairs:s.limit});we(JSON.stringify({ok:w.ok,...pn(w),couplings:w.couplings},null,2)+` +`,s.out)}else if(n==="deadcode"){let S=Ao(await x(),{kinds:s.kinds,includeTail:s.includeTail});we(JSON.stringify(Kl(S,s.limit),null,2)+` +`,s.out)}else if(n==="literals"){let S=Pn(await x(),{minFiles:s.minFiles,minCount:s.minCount,includeTests:s.includeTests});we(JSON.stringify(S,null,2)+` +`,s.out)}else if(n==="complexity"){let S=await x(),w=s.positional;if(w!==void 0){let E=new Set(S.files.map(N=>N.rel)),P=Wn(s.repo,w).find(N=>E.has(N));if(P===void 0)throw new Error(rs(S,s.repo,w)??`no such file in the index: ${w}`);w=P}we(JSON.stringify(Qi(S,w,s.limit),null,2)+` +`,s.out)}else if(n==="risk"){let S=await x(),w=en(s.repo,{since:s.since}),E=eo(S,w.churn,s.limit);we(JSON.stringify({churnOk:w.ok,...pn(w),risks:E},null,2)+` +`,s.out)}else if(n==="delta"){let S={base:s.base,staged:s.staged,depth:s.depth,indexDir:f},w=Xs(s.repo,S);if("error"in w)throw new Error(w.error);let E=To(w,s.depth);if(w.files.length){s.noAst||(c=l());let{scan:P,graph:N,symbols:L}=await v();E=Zs(w,N,L,{...S,scan:P})}we(s.json?JSON.stringify(E,null,2)+` +`:$o(E),s.out),s.failOn&&E.modules.some(P=>Ub(P.bucket)>=Ub(s.failOn))&&(O.exitCode=1)}else if(n==="impact"){if(!s.positional)throw new Error("impact needs a target: cli.mjs impact --repo ");let S=await C(),w;for(let E of Wn(s.repo,s.positional))if(w=Ki(S,E,s.depth??1/0,{includeInferred:s.includeInferred}),w)break;if(!w)throw new Error(`no such file or module in the index: ${s.positional}`);we(JSON.stringify(w,null,2)+` +`,s.out)}else if(n==="neighbors"){if(!s.positional)throw new Error("neighbors needs a target: cli.mjs neighbors --repo ");let S=await C(),w=s.kind?new Set(s.kind.split(",")):void 0,E;for(let P of Wn(s.repo,s.positional))if(E=Xi(S,P,s.depth??1,w),E)break;if(!E)throw new Error(`no such file or module in the index: ${s.positional}`);we(JSON.stringify(E,null,2)+` +`,s.out)}else if(n==="resolution"){let S=ec(await x(),{lang:s.lang,limit:s.limit});we(JSON.stringify(S,null,2)+` +`,s.out)}else if(n==="mermaid")we(Io(await C(),{module:s.positional}),s.out);else if(n==="grep"){if(!s.positional)throw new Error("grep needs a pattern: cli.mjs grep --repo ");let S=zs(s.repo,s.positional,{globs:s.include.length||s.exclude.length?[...s.include,...s.exclude.map(w=>`!${w}`)]:void 0,scope:s.scope,ignoreCase:s.ignoreCase,maxHits:s.maxHits,filesWithMatches:s.filesWithMatches,gitignore:s.gitignore,ignoreDirs:s.ignoreDirs.length?s.ignoreDirs:void 0,maxFileBytes:s.maxBytes,timeoutMs:s.timeoutMs});we(JSON.stringify(S.hits,null,2)+` +`,s.out);for(let w of S.notes)O.stderr.write(`codeindex grep: ${w} +`)}else O.stderr.write(`unknown command: ${n} -${gc}`),F.exitCode=2}si();ve();I();ve();ft();var qf="/grammars",Vf="web-tree-sitter.wasm";function Mb(e){Ab(Vf,e)}function Cb(e,t){Ab(`${e}.wasm`,t)}function Ab(e,t){Go(`${qf}/${e}`,t),F.env.CODEINDEX_GRAMMAR_DIR=qf}function Ib(e){return`${e}.wasm`}async function u1(e,t){let n=Wt(e);if(!n.length)return{tier:"regex",loaded:[],failed:[],note:"no language here ships a tree-sitter grammar"};try{Mb(await t(Vf))}catch(s){return{tier:"regex",loaded:[],failed:[...n],note:`tree-sitter runtime unavailable (${s.message})`}}await Promise.all(n.map(async s=>{try{Cb(s,await t(Ib(s)))}catch{}})),await sn(n);let r=n.filter(s=>Le(s)).sort(),o=n.filter(s=>!Le(s)).sort();return{tier:r.length?"ast":"regex",loaded:r,failed:o,note:o.length?`${o.join(", ")} could not load; those languages use the regex tier`:""}}export{Qo as BINARY_EXT,Si as CORE_GRAMMARS,Kl as DEFAULT_DELTA_DEPTH,Zd as DEFAULT_GRAMMARS_URL,aw as DEFAULT_MAX_FILES,Vt as EMBED_VERSION,$e as ENGINE_VERSION,ys as EXTENDED_GRAMMARS,dn as EXTRACTOR_VERSION,ki as EXT_GRAMMAR,qf as GRAMMARS_DIR,vn as IGNORE_DIRS,Ve as INDEX_DIR,Yo as LOCKFILES,Gs as LspSessionPool,Ll as LspTimeout,Gc as MARKDOWN_EXT,I_ as MAX_FRAME_BYTES,xc as OffsetMap,xn as RISK_WEIGHTS,Vf as RUNTIME_WASM,dt as SCHEMA_VERSION,bo as agreementOf,Ea as allGrammarKeys,wu as applyCentrality,c_ as basicTokenize,zh as betweennessOf,Z_ as brokenImports,Pn as buildArtifactsFromScan,Ur as buildCallerIndex,Oa as buildCodeRecord,Jr as buildEmbeddingIndex,po as buildEndpointIndex,Iu as buildGraph,FC as buildIndexArtifacts,tu as buildModules,Eu as buildRawCallerIndex,ji as buildResolveContext,uu as buildSymbolGraph,ru as buildSymbolIndex,iu as buildTypeHierarchy,br as byKey,T as byStr,qs as callersWithLsp,av as categorize,ho as changeCoupling,_w as changedSince,Eo as checkRules,Ct as classify,Hb as clip,zb as clipInline,Ol as columnOfSymbol,hM as communityOf,At as compileGlobs,xu as complexityOfSource,Y_ as computeDelta,Q0 as computeImportPairs,bl as computeSurprises,nu as computeSymbolRefs,Ji as computeTestMap,ff as createFramer,Zo as decidingRule,Wu as deleteMemory,wI as deltaFor,Js as deltaOfDiff,of as deserializeEmbeddings,qu as detectCommunities,Fn as detectWorkspaces,Cc as diffFiles,Ac as diffHunks,Ml as embedEndpointUrl,Cl as embedViaEndpoint,El as embeddingUnits,Co as emptyDelta,eR as enclosingSymbol,lo as encode,Pl as encodeMessage,mo as encodeQueryViaEndpoint,af as endpointModelId,sn as ensureGrammars,yt as escapeRegExp,zt as explainQuery,fr as explainSemantic,tn as extToLang,kd as extractAst,Mi as extractCode,dh as extractGrammarsTarball,Zg as extractInParallel,Jc as extractMarkdown,Yc as extractRst,Hc as extractSymbols,cv as extractTags,ch as extractTarInto,lh as fetchExpectedSha256,oh as fetchGrammarsTarball,Qr as fileUri,Ro as findDeadCode,Nn as findLiteralDuplications,to as findReferences,_n as findSymbol,En as foldText,Ao as formatDeltaPanel,Qt as gitChurn,Mr as grammarKeyForExt,Wt as grammarKeysForExts,Le as grammarReady,Ib as grammarWasmName,VC as grepRepo,Ws as grepRepoEx,XC as hasEmbedModel,Db as hasFileBytes,Zt as have,Yt as headCommit,g_ as healthzUrl,Th as hubThreshold,qi as impactOf,Ui as implementationsOf,Pi as indexStatus,Nu as insertAfterSymbol,Pu as insertBeforeSymbol,nf as intDot,yp as isCode,hp as isDoc,Rc as isGitWorktree,ri as isIgnored,$M as isSurprising,Va as isTestFile,$t as isTestPath,Nd as keptCodeFiles,ls as keywords,zc as languageOf,Bu as listMemories,Bs as loadEmbedModel,u1 as loadGrammars,_o as loadLspConfig,zs as locationsToRefs,So as lspStatus,Yr as lspUnavailable,nm as mountFiles,Cb as mountGrammar,Mb as mountRuntime,zi as neighborhood,Vi as neighborsOf,lf as onboardBrief,gf as openLspSession,Br as pagerankOf,cs as parseGitignore,k_ as parseLspConfig,Hl as parseRules,Qg as preloadArtifacts,Hd as preloadSession,fo as probeEndpoint,jb as pruneUnfetched,Li as pullGrammars,Us as quantize,Zr as rankHotspots,qb as rankedKeywords,Vs as readDeltaDiff,ju as readMemory,Oi as readPersistedIndex,ie as readText,ds as readTextEx,ko as referencesWithLsp,mf as relFromUri,zr as renderGraphJson,Mo as renderMermaid,pI as renderMermaidClustered,Xr as renderRepoMap,Zu as renderScip,Ja as renderSymbolsJson,Ou as replaceSymbolBody,Lb as resetVfs,Wb as residentBytes,Mc as resolveBaseRef,Cu as resolveCallEdges,nr as resolveDocLink,mr as resolveEmbedEndpoint,Ln as resolveEmbedModelDir,tf as resolveEmbedPullUrl,qS as resolveGrammarsDir,Ha as resolveGrammarsPullTarget,jt as resolveGrammarsTier,at as resolveImport,Hs as resolveLspConfigPath,su as resolveRelationEdges,rr as resolveRelations,vy as resolveUniqueSymbol,Gi as reverseClosure,kb as rewriteCommand,Zi as riskHotspots,f_ as roundHalfToEven,_c as rrf,d1 as runCli,HE as runExtractWorker,yb as runMcpServer,kt as scanRepo,hn as scanRepoParallel,qg as scanSkips,Ci as scanSummary,D0 as searchIndex,iA as searchSemantic,uo as serializeEmbeddings,uf as serverForLang,Go as setFileBytes,Fe as sh,Re as sha1,_s as sharedGrammarsCacheDir,Rw as shortHash,Pa as skipHistogram,ti as slugify,hf as spawnLspTransport,fn as subtokens,Xi as symbolComplexity,pt as symbolId,X_ as symbolsInHunks,Qi as symbolsOverview,lv as tagsQueryStatus,h0 as testsForModule,Es as tierForPath,Et as toCacheMap,u_ as tokenize,sr as typeEntry,ku as uniqueSymbolDefs,kl as unitHash,y0 as untestedModules,ta as untrackedFiles,Ke as walk,mv as warmGrammars,Pd as whyPath,d_ as wordpiece,Xg as workerCount,ro as writeMemory}; +${Sc}`),O.exitCode=2}oi();Ee();I();Ee();pt();var nm="/grammars",rm="web-tree-sitter.wasm";function zb(e){Gb(rm,e)}function Hb(e,t){Gb(`${e}.wasm`,t)}function Gb(e,t){Jo(`${nm}/${e}`,t),O.env.CODEINDEX_GRAMMAR_DIR=nm}function qb(e){return`${e}.wasm`}async function OT(e,t){let n=Bt(e);if(!n.length)return{tier:"regex",loaded:[],failed:[],note:"no language here ships a tree-sitter grammar"};try{zb(await t(rm))}catch(s){return{tier:"regex",loaded:[],failed:[...n],note:`tree-sitter runtime unavailable (${s.message})`}}await Promise.all(n.map(async s=>{try{Hb(s,await t(qb(s)))}catch{}})),await on(n);let r=n.filter(s=>Le(s)).sort(),o=n.filter(s=>!Le(s)).sort();return{tier:r.length?"ast":"regex",loaded:r,failed:o,note:o.length?`${o.join(", ")} could not load; those languages use the regex tier`:""}}export{na as BINARY_EXT,Ei as CORE_GRAMMARS,Yl as DEFAULT_DELTA_DEPTH,ou as DEFAULT_GRAMMARS_URL,Iw as DEFAULT_MAX_FILES,Jt as EMBED_VERSION,Te as ENGINE_VERSION,ws as EXTENDED_GRAMMARS,dn as EXTRACTOR_VERSION,vi as EXT_GRAMMAR,nm as GRAMMARS_DIR,vn as IGNORE_DIRS,Je as INDEX_DIR,ta as LOCKFILES,Js as LspSessionPool,Wl as LspTimeout,ed as MARKDOWN_EXT,H_ as MAX_FRAME_BYTES,Ic as OffsetMap,xn as RISK_WEIGHTS,rm as RUNTIME_WASM,ut as SCHEMA_VERSION,So as agreementOf,Ca as allGrammarKeys,Au as applyCentrality,k_ as basicTokenize,sy as betweennessOf,ub as brokenImports,Ln as buildArtifactsFromScan,Hr as buildCallerIndex,La as buildCodeRecord,Xr as buildEmbeddingIndex,yo as buildEndpointIndex,Wu as buildGraph,tA as buildIndexArtifacts,du as buildModules,Fu as buildRawCallerIndex,Ui as buildResolveContext,wu as buildSymbolGraph,fu as buildSymbolIndex,pu as buildTypeHierarchy,xr as byKey,$ as byStr,Ks as callersWithLsp,Av as categorize,bo as changeCoupling,Bw as changedSince,Co as checkRules,mt as classify,iw as clip,ow as clipInline,Ll as columnOfSymbol,DC as communityOf,It as compileGlobs,Iu as complexityOfSource,fb as computeDelta,xR as computeImportPairs,Sl as computeSurprises,uu as computeSymbolRefs,Zi as computeTestMap,Sf as createFramer,ea as decidingRule,Xu as deleteMemory,UI as deltaFor,Zs as deltaOfDiff,hf as deserializeEmbeddings,nf as detectCommunities,On as detectWorkspaces,Lc as diffFiles,Dc as diffHunks,Il as embedEndpointUrl,Tl as embedViaEndpoint,Cl as embeddingUnits,To as emptyDelta,SR as enclosingSymbol,fo as encode,jl as encodeMessage,ho as encodeQueryViaEndpoint,yf as endpointModelId,on as ensureGrammars,bt as escapeRegExp,Gt as explainQuery,fr as explainSemantic,nn as extToLang,$d as extractAst,Ii as extractCode,Eh as extractGrammarsTarball,uh as extractInParallel,rd as extractMarkdown,ad as extractRst,Yc as extractSymbols,Tv as extractTags,kh as extractTarInto,Sh as fetchExpectedSha256,wh as fetchGrammarsTarball,ts as fileUri,Ao as findDeadCode,Pn as findLiteralDuplications,so as findReferences,_n as findSymbol,qn as foldText,$o as formatDeltaPanel,en as gitChurn,Ar as grammarKeyForExt,Bt as grammarKeysForExts,Le as grammarReady,qb as grammarWasmName,gA as grepRepo,zs as grepRepoEx,_A as hasEmbedModel,ew as hasFileBytes,Yt as have,Qt as headCommit,A_ as healthzUrl,Gh as hubThreshold,Ki as impactOf,Gi as implementationsOf,ji as indexStatus,Gu as insertAfterSymbol,qu as insertBeforeSymbol,mf as intDot,Tp as isCode,Ip as isDoc,Nc as isGitWorktree,ii as isIgnored,eM as isSurprising,Xa as isTestFile,Ft as isTestPath,Hd as keptCodeFiles,us as keywords,Qc as languageOf,Zu as listMemories,Hs as loadEmbedModel,OT as loadGrammars,xo as loadLspConfig,Vs as locationsToRefs,vo as lspStatus,es as lspUnavailable,gm as mountFiles,Hb as mountGrammar,zb as mountRuntime,Vi as neighborhood,Xi as neighborsOf,_f as onboardBrief,vf as openLspSession,zr as pagerankOf,ms as parseGitignore,L_ as parseLspConfig,ql as parseRules,mh as preloadArtifacts,Yd as preloadSession,go as probeEndpoint,tw as pruneUnfetched,Wi as pullGrammars,Gs as quantize,Qr as rankHotspots,aw as rankedKeywords,Xs as readDeltaDiff,Ku as readMemory,Li as readPersistedIndex,se as readText,ps as readTextEx,Ro as referencesWithLsp,kf as relFromUri,qr as renderGraphJson,Io as renderMermaid,PI as renderMermaidClustered,Yr as renderRepoMap,lf as renderScip,Za as renderSymbolsJson,Hu as replaceSymbolBody,Qb as resetVfs,nw as residentBytes,Pc as resolveBaseRef,Du as resolveCallEdges,nr as resolveDocLink,mr as resolveEmbedEndpoint,Dn as resolveEmbedModelDir,ff as resolveEmbedPullUrl,gk as resolveGrammarsDir,qa as resolveGrammarsPullTarget,Wt as resolveGrammarsTier,ct as resolveImport,qs as resolveLspConfigPath,mu as resolveRelationEdges,rr as resolveRelations,jy as resolveUniqueSymbol,Ji as reverseClosure,jb as rewriteCommand,eo as riskHotspots,R_ as roundHalfToEven,Cc as rrf,FT as runCli,uv as runExtractWorker,Fb as runMcpServer,vt as scanRepo,yn as scanRepoParallel,oh as scanSkips,Ti as scanSummary,oR as searchIndex,CA as searchSemantic,po as serializeEmbeddings,xf as serverForLang,Jo as setFileBytes,$e as sh,Re as sha1,xs as sharedGrammarsCacheDir,Kw as shortHash,ja as skipHistogram,ri as slugify,Rf as spawnLspTransport,mn as subtokens,Qi as symbolComplexity,ht as symbolId,db as symbolsInHunks,no as symbolsOverview,Iv as tagsQueryStatus,D0 as testsForModule,Cs as tierForPath,Rt as toCacheMap,v_ as tokenize,sr as typeEntry,$u as uniqueSymbolDefs,Rl as unitHash,j0 as untestedModules,sa as untrackedFiles,Xe as walk,Nv as warmGrammars,Gd as whyPath,E_ as wordpiece,dh as workerCount,oo as writeMemory}; diff --git a/scripts/engine.d.mts b/scripts/engine.d.mts index 64819a9..17ad979 100644 --- a/scripts/engine.d.mts +++ b/scripts/engine.d.mts @@ -1,6 +1,6 @@ declare const ENGINE_VERSION = "2.31.7"; declare const SCHEMA_VERSION = 5; -declare const EXTRACTOR_VERSION = 16; +declare const EXTRACTOR_VERSION = 17; type FileKind = "code" | "doc" | "config" | "asset" | "other"; type EdgeKind = "contains" | "doc-link" | "import" | "call" | "extends" | "implements" | "use" | "mention"; type Tier = 0 | 1 | 2; @@ -77,6 +77,7 @@ interface FileRecord { importedNames?: string[]; importAliases?: ImportAlias[]; truncated?: true; + callsCapped?: true; astFallback?: true; generated?: "minified" | "bundle"; relations?: RawRelation[]; @@ -268,6 +269,10 @@ interface WalkResult { files: WalkedFile[]; capped: boolean; excluded: number; + oversized?: { + rel: string; + size: number; + }[]; } declare const DEFAULT_MAX_FILES = 20000; declare function walk(root: string, opts?: WalkOptions): WalkResult; @@ -283,6 +288,10 @@ interface RepoScan { mtimes: Map; capped: boolean; excluded: number; + oversized?: { + rel: string; + size: number; + }[]; contentUnchanged: boolean; cacheDirty: boolean; } @@ -504,6 +513,7 @@ interface CodeInfo { symbols: CodeSymbol[]; summary?: string; truncated?: true; + callsCapped?: true; astFallback?: true; generated?: GeneratedKind; refs: RawRef[]; diff --git a/scripts/engine.mjs b/scripts/engine.mjs index 22ee7eb..abea0ea 100755 --- a/scripts/engine.mjs +++ b/scripts/engine.mjs @@ -21,7 +21,7 @@ var init_types = __esm({ "use strict"; ENGINE_VERSION = "2.31.7"; SCHEMA_VERSION = 5; - EXTRACTOR_VERSION = 16; + EXTRACTOR_VERSION = 17; } }); @@ -125,7 +125,9 @@ function rrf(lists, keyOf2, k = 60) { return score; } function subtokens(raw) { - const folded = foldText(raw).replace(new RegExp("([\\p{Ll}\\p{N}])(\\p{Lu})", "gu"), "$1 $2").replace(new RegExp("(\\p{Lu}+)(\\p{Lu}\\p{Ll})", "gu"), "$1 $2"); + const ascii = !NON_ASCII.test(raw); + const text = ascii ? raw : foldText(raw); + const folded = ascii ? text.replace(ASCII_CASE_1, "$1 $2").replace(ASCII_CASE_2, "$1 $2") : text.replace(UNICODE_CASE_1, "$1 $2").replace(UNICODE_CASE_2, "$1 $2"); const out2 = []; const seen = /* @__PURE__ */ new Set(); const push = (t) => { @@ -133,8 +135,8 @@ function subtokens(raw) { seen.add(t); out2.push(t); }; - if (!/\s/.test(raw.trim())) push(foldText(raw).toLowerCase().replace(/[^\p{L}\p{N}_]+/gu, "")); - for (const part of folded.split(/[^\p{L}\p{N}]+/u)) push(part.toLowerCase()); + if (!/\s/.test(raw.trim())) push(text.toLowerCase().replace(ascii ? ASCII_GLUE : UNICODE_GLUE, "")); + for (const part of folded.split(ascii ? ASCII_SPLIT : UNICODE_SPLIT)) push(part.toLowerCase()); return out2; } function stemOf(term) { @@ -150,7 +152,7 @@ function stemOf(term) { if (t.endsWith("e") && t.length > 3) t = t.slice(0, -1); return t; } -var GIT_LOCALE, whichCache, STOPWORDS, NON_ASCII, NON_WORD; +var GIT_LOCALE, whichCache, STOPWORDS, NON_ASCII, NON_WORD, ASCII_CASE_1, ASCII_CASE_2, ASCII_GLUE, ASCII_SPLIT, UNICODE_CASE_1, UNICODE_CASE_2, UNICODE_GLUE, UNICODE_SPLIT; var init_util = __esm({ "src/util.ts"() { "use strict"; @@ -256,6 +258,14 @@ var init_util = __esm({ ]); NON_ASCII = /[^\x00-\x7F]/; NON_WORD = /[^\p{L}\p{N}_]+/u; + ASCII_CASE_1 = /([a-z0-9])([A-Z])/g; + ASCII_CASE_2 = /([A-Z]+)([A-Z][a-z])/g; + ASCII_GLUE = /[^a-z0-9_]+/g; + ASCII_SPLIT = /[^A-Za-z0-9]+/; + UNICODE_CASE_1 = new RegExp("([\\p{Ll}\\p{N}])(\\p{Lu})", "gu"); + UNICODE_CASE_2 = new RegExp("(\\p{Lu}+)(\\p{Lu}\\p{Ll})", "gu"); + UNICODE_GLUE = /[^\p{L}\p{N}_]+/gu; + UNICODE_SPLIT = /[^\p{L}\p{N}]+/u; } }); @@ -667,6 +677,7 @@ function walk(root, opts = {}) { const out2 = []; let capped = false; let excluded = 0; + const oversized = []; const skip = (rel2, reason, directory = false, size) => { opts.onSkip?.({ rel: rel2, reason, directory, ...size === void 0 ? {} : { size } }); }; @@ -776,6 +787,7 @@ function walk(root, opts = {}) { else if ((name2.endsWith(".min.js") || name2.endsWith(".min.css")) && !opts.includeMinified) reason = "minified"; if (reason) { excluded++; + if (reason === "over-max-bytes") oversized.push({ rel: rel2.split(sep).join("/"), size: st.size }); if (reason === "gitignored") skipIgnored(rel2, rules, false, st.size); else skip(rel2, reason, false, st.size); continue; @@ -803,7 +815,7 @@ function walk(root, opts = {}) { } for (let i2 = subdirs.length - 1; i2 >= 0; i2--) stack.push(subdirs[i2]); } - return { files: out2, capped, excluded }; + return { files: out2, capped, excluded, ...oversized.length ? { oversized } : {} }; } function readText(abs) { return readTextEx(abs).text; @@ -8107,6 +8119,7 @@ function readName(node) { function readReceiver(node) { if (!node || node.namedChildren.length === 0) return void 0; const obj = node.childForFieldName("object") ?? node.childForFieldName("operand") ?? node.childForFieldName("value") ?? node.childForFieldName("path") ?? node.childForFieldName("expression") ?? node.childForFieldName("argument") ?? node.childForFieldName("receiver") ?? node.childForFieldName("table"); + if (obj && (obj.type === "crate" || obj.type === "super")) return obj.type; const name2 = obj ? readName(obj) : void 0; return name2 && /^[A-Za-z_]\w*$/.test(name2) ? name2 : void 0; } @@ -9758,7 +9771,7 @@ function capCallSites(sites, max) { } kept = sites.filter((_, i2) => keep[i2] === 1); } - return kept.sort((a, b) => byStr(a.name, b.name) || a.line - b.line); + return kept.sort((a, b) => byStr(a.name, b.name) || a.line - b.line || byStr(a.receiver ?? "", b.receiver ?? "")); } function collectAll(root, spec, defNames, maxCalls) { const identsFound = /* @__PURE__ */ new Set(); @@ -9768,7 +9781,7 @@ function collectAll(root, spec, defNames, maxCalls) { const addCall = (name2, node, receiver) => { if (!name2 || name2 === "_" || !/^[A-Za-z_]\w*$/.test(name2)) return; const line2 = node.startPosition.row + 1; - const key = `${name2} ${line2}`; + const key = `${name2} ${line2} ${receiver ?? ""}`; if (callSeen.has(key)) return; callSeen.add(key); calls.push(receiver ? { name: name2, line: line2, receiver } : { name: name2, line: line2 }); @@ -10268,7 +10281,7 @@ function extractAst(rel2, ext, content, opts = {}) { root, spec, new Set(symbols.map((s) => s.name)), - opts.maxCalls ?? MAX_CALLS + opts.maxCalls ?? DEFAULT_MAX_CALLS ); const wantImports = opts.imports !== false; const refs = wantImports ? extractImports(ext, content) : []; @@ -10294,7 +10307,7 @@ function extractAst(rel2, ext, content, opts = {}) { tree?.delete(); } } -var MAX_REF_IDENTS, MAX_CALLS, MAX_IMPORTED_NAMES, MAX_SYMBOLS, MAX_RELATIONS, MAX_TERMS, MAX_LITERAL_LEN2, MAX_FUNC_DEPTH, MAX_WALK_DEPTH, NESTED_TYPE_KINDS, ANON_DEFAULT_FN, ANON_DEFAULT_CLASS, REF_IDENT_TYPE, REF_IDENT_TEXT, STRING_NODE, NUMBER_NODE, REGEX_NODE, STRING_PART, PROSE_PART, T_REF_IDENT, T_COMMENT, T_STRING, T_NUMBER, T_REGEX, typeFlags, NAME_SEARCH_SKIP; +var MAX_REF_IDENTS, DEFAULT_MAX_CALLS, MAX_IMPORTED_NAMES, MAX_SYMBOLS, MAX_RELATIONS, MAX_TERMS, MAX_LITERAL_LEN2, MAX_FUNC_DEPTH, MAX_WALK_DEPTH, NESTED_TYPE_KINDS, ANON_DEFAULT_FN, ANON_DEFAULT_CLASS, REF_IDENT_TYPE, REF_IDENT_TEXT, STRING_NODE, NUMBER_NODE, REGEX_NODE, STRING_PART, PROSE_PART, T_REF_IDENT, T_COMMENT, T_STRING, T_NUMBER, T_REGEX, typeFlags, NAME_SEARCH_SKIP; var init_extract = __esm({ "src/ast/extract.ts"() { "use strict"; @@ -10310,7 +10323,7 @@ var init_extract = __esm({ init_imports(); init_util(); MAX_REF_IDENTS = 512; - MAX_CALLS = 512; + DEFAULT_MAX_CALLS = 8192; MAX_IMPORTED_NAMES = 256; MAX_SYMBOLS = 2e3; MAX_RELATIONS = 256; @@ -10556,7 +10569,7 @@ function introducedAt(line2, index) { while (j > 0 && WORD.test(line2[j - 1])) j--; return j < i2 && DEF_INTRODUCERS.has(line2.slice(j, i2)); } -function collectCallsRegex(content, symbols = [], maxCalls = 512) { +function collectCallsRegex(content, symbols = [], maxCalls = DEFAULT_MAX_CALLS) { const out2 = /* @__PURE__ */ new Map(); const ownDefLines = new Set(symbols.map((s) => `${s.name} ${s.line}`)); const lines = content.split("\n"); @@ -10588,7 +10601,8 @@ function collectCallsRegex(content, symbols = [], maxCalls = 512) { continue; } } - if (!out2.has(key)) out2.set(key, receiver ? { name: name2, line: i2 + 1, receiver } : { name: name2, line: i2 + 1 }); + const site = `${key} ${receiver ?? ""}`; + if (!out2.has(site)) out2.set(site, receiver ? { name: name2, line: i2 + 1, receiver } : { name: name2, line: i2 + 1 }); } } return capCallSites([...out2.values()], maxCalls); @@ -10667,11 +10681,12 @@ function collectLiteralsRegex(content) { } return literals.result(); } -function mergeCalls(a, b, maxCalls = 512) { +function mergeCalls(a, b, maxCalls = DEFAULT_MAX_CALLS) { if (!b.length) return a; - const seen = new Set(a.map((c2) => `${c2.name} ${c2.line}`)); + const key = (c2) => `${c2.name} ${c2.line} ${c2.receiver ?? ""}`; + const seen = new Set(a.map(key)); const out2 = [...a]; - for (const c2 of b) if (!seen.has(`${c2.name} ${c2.line}`)) out2.push(c2); + for (const c2 of b) if (!seen.has(key(c2))) out2.push(c2); return capCallSites(out2, maxCalls); } function extractCode(rel2, ext, content, opts = {}) { @@ -10705,6 +10720,9 @@ function extractCode(rel2, ext, content, opts = {}) { // exists to prevent. ...ast?.truncated || raw.length > symbols.length || reexports.length >= MAX_REEXPORTS ? { truncated: true } : {}, ...astFallback ? { astFallback: true } : {}, + // A capped list holds exactly the cap; a file with exactly that many call + // sites reads as capped too, the safe side of the doubt. + ...calls.length >= (opts.maxCallsPerFile ?? DEFAULT_MAX_CALLS) ? { callsCapped: true } : {}, summary: fileSummary(ext, content), refs, pkg: extractPackage(ext, content), @@ -10860,6 +10878,7 @@ function buildCodeRecord(rel2, ext, size, content, hash, lang, opts = {}) { record2.importedNames = code.importedNames; if (code.importAliases) record2.importAliases = code.importAliases; record2.truncated = code.truncated; + if (code.callsCapped) record2.callsCapped = true; if (code.astFallback) record2.astFallback = true; record2.generated = code.generated; record2.relations = code.relations; @@ -10923,7 +10942,7 @@ function scanWalkOptions(root, opts) { } function* keptFiles(root, opts) { const walkOpts = scanWalkOptions(root, opts); - const { files: walked, capped, excluded } = opts.precomputedWalk ?? walk(root, walkOpts); + const { files: walked, capped, excluded, oversized } = opts.precomputedWalk ?? walk(root, walkOpts); const guard = selfIndexGuard(root, opts.out); const filter = opts.precomputedWalk ? walkOpts.filter : void 0; for (const f of walked) { @@ -10937,7 +10956,7 @@ function* keptFiles(root, opts) { } yield { f, kind: classify(f.rel, f.ext), lang: extToLang(f.ext) }; } - return { capped, excluded }; + return { capped, excluded, oversized }; } function selfIndexGuard(root, out2) { if (!out2) return void 0; @@ -10945,10 +10964,10 @@ function selfIndexGuard(root, out2) { const up = relative2(dir, resolve3(root)); if (up === "") return (f) => !f.rel.includes("/") && isIndexArtifact(f.rel); if (up !== ".." && !up.startsWith(`..${sep2}`) && !isAbsolute(up)) return void 0; - return (f) => { - const inside = relative2(dir, f.abs); - return inside === "" || inside !== ".." && !inside.startsWith(`..${sep2}`) && !isAbsolute(inside); - }; + const down = relative2(resolve3(root), dir); + if (down === ".." || down.startsWith(`..${sep2}`) || isAbsolute(down)) return void 0; + const prefix = down.split(sep2).join("/"); + return (f) => f.rel === prefix || f.rel.startsWith(`${prefix}/`); } function keptCodeFiles(root, opts = {}) { const out2 = []; @@ -11057,6 +11076,7 @@ function scanRepo(root, opts = {}) { mtimes, capped: step.value.capped, excluded: step.value.excluded, + ...step.value.oversized ? { oversized: step.value.oversized } : {}, contentUnchanged: allReused, cacheDirty }; @@ -11167,7 +11187,7 @@ function optionalArray(value, valid) { return value === void 0 || Array.isArray(value) && value.every(valid); } function record(v, rel2) { - return object(v) && v.rel === rel2 && string(v.ext) && count(v.size) && count(v.lines) && sha(v.hash) && string(v.kind) && kinds.has(v.kind) && string(v.lang) && optionalFields(v, fileText, string) && optionalFields(v, fileLists, strings) && strings(v.headings) && Array.isArray(v.symbols) && v.symbols.every((s) => symbol(s, rel2)) && Array.isArray(v.refs) && v.refs.every(ref) && optionalArray(v.calls, call) && optionalArray(v.importAliases, importAlias) && optionalArray(v.relations, relation) && optionalArray(v.literals, literal) && (v.truncated === void 0 || v.truncated === true) && (v.astFallback === void 0 || v.astFallback === true) && (v.generated === void 0 || v.generated === "minified" || v.generated === "bundle"); + return object(v) && v.rel === rel2 && string(v.ext) && count(v.size) && count(v.lines) && sha(v.hash) && string(v.kind) && kinds.has(v.kind) && string(v.lang) && optionalFields(v, fileText, string) && optionalFields(v, fileLists, strings) && strings(v.headings) && Array.isArray(v.symbols) && v.symbols.every((s) => symbol(s, rel2)) && Array.isArray(v.refs) && v.refs.every(ref) && optionalArray(v.calls, call) && optionalArray(v.importAliases, importAlias) && optionalArray(v.relations, relation) && optionalArray(v.literals, literal) && (v.truncated === void 0 || v.truncated === true) && (v.callsCapped === void 0 || v.callsCapped === true) && (v.astFallback === void 0 || v.astFallback === true) && (v.generated === void 0 || v.generated === "minified" || v.generated === "bundle"); } function entry(v, rel2) { return object(v) && sha(v.hash) && record(v.record, rel2) && v.hash === v.record.hash && (v.size === void 0 || count(v.size) && v.size === v.record.size) && (v.mtimeMs === void 0 || typeof v.mtimeMs === "number" && Number.isFinite(v.mtimeMs)); @@ -15061,6 +15081,8 @@ function indexCallers(scan2, pairs, recall, only) { let entry2 = sites.get(key); if (!entry2) sites.set(key, entry2 = { def: hit.def, callers: [] }); else if (hit.def.line < entry2.def.line) entry2.def = hit.def; + const last = entry2.callers[entry2.callers.length - 1]; + if (last && last.file === f.rel && last.line === c2.line) continue; entry2.callers.push( recall ? { file: f.rel, line: c2.line, confidence: hit.corroborated ? "corroborated" : "unique-name" } : { file: f.rel, line: c2.line } ); @@ -15400,13 +15422,29 @@ function createCallBinder(scan2, pairs, opts = {}) { fnParentsMemo.set(rel2, parents = set ?? noParents); return parents; }; + const indexed = (rel2) => (byRel ??= new Map(scan2.files.map((f) => [f.rel, f]))).has(rel2); + const firstIndexed = (dir, names) => names.map((n) => dir ? `${dir}/${n}` : n).find(indexed); + const rustPath = (rel2, receiver) => { + const base = rel2.slice(rel2.lastIndexOf("/") + 1); + let found; + if (receiver === "crate") { + for (let dir = dirOf3(rel2); !found; dir = dirOf3(dir)) { + found = firstIndexed(dir, ["lib.rs", "main.rs"]); + if (!dir) break; + } + } else if (base !== "lib.rs" && base !== "main.rs") { + const parent = dirOf3(base === "mod.rs" ? dirOf3(rel2) : rel2.slice(0, -".rs".length)); + found = firstIndexed(parent, ["mod.rs", "lib.rs", "main.rs"]) ?? (parent && indexed(`${parent}.rs`) ? `${parent}.rs` : void 0); + } + return found === void 0 ? void 0 : [found]; + }; const inFunction = (s) => s.parent !== void 0 && fnParentsOf(s.file).has(s.parent); const isMember = (s) => s.parent !== void 0 && !fnParentsOf(s.file).has(s.parent); const byName = /* @__PURE__ */ new Map(); for (const f of scan2.files) { const reach = PRIVATE_REACH[familyOf(f.lang)] !== void 0; for (const s of f.symbols) { - if (REFERENCE_KINDS3.has(s.kind) || !s.exported && !reach) continue; + if (REFERENCE_KINDS3.has(s.kind) || NOT_CALLABLE.has(s.kind) || !s.exported && !reach) continue; if (only && !only.has(s.name)) continue; const list = byName.get(s.name); if (list) list.push(s); @@ -15456,7 +15494,7 @@ function createCallBinder(scan2, pairs, opts = {}) { const fnParents = fnParentsOf(f.rel); const isOwnMember = (s) => s.parent !== void 0 && !fnParents.has(s.parent); for (const s of f.symbols) { - if (REFERENCE_KINDS3.has(s.kind)) continue; + if (REFERENCE_KINDS3.has(s.kind) || NOT_CALLABLE.has(s.kind)) continue; if (!ownAny.has(s.name)) ownAny.set(s.name, s); if (isOwnMember(s)) { if (!ownMember.has(s.name)) ownMember.set(s.name, s); @@ -15470,7 +15508,7 @@ function createCallBinder(scan2, pairs, opts = {}) { if (!ownMemberOf) { ownMemberOf = /* @__PURE__ */ new Map(); for (const s of f.symbols) { - if (REFERENCE_KINDS3.has(s.kind) || !isOwnMember(s)) continue; + if (REFERENCE_KINDS3.has(s.kind) || NOT_CALLABLE.has(s.kind) || !isOwnMember(s)) continue; const key = `${s.parent}\0${s.name}`; if (!ownMemberOf.has(key)) ownMemberOf.set(key, s); } @@ -15489,10 +15527,17 @@ function createCallBinder(scan2, pairs, opts = {}) { return ownTypeByLower.get(receiver.toLowerCase()); }; const aliases = scope.aliases(f); + let rustModules; + if (family === "rust") { + for (const q of ["crate", "super"]) { + const files = rustPath(f.rel, q); + if (files) (rustModules ??= /* @__PURE__ */ new Map()).set(q, files); + } + } const corroborated = (name2, pool) => { const out2 = scope.reached(exportedGroup(name2, family, pool), f, name2); const priv = hiddenGroup(name2, family, pool); - if (priv && hiddenReach) { + if (priv && (hiddenReach === "package" || hiddenReach === "import")) { const seen = new Set(out2.map((d) => d.file)); for (const d of hiddenReach === "package" ? scope.reached(priv, f, name2) : importedDefs(priv, scope.targets(f.rel))) { if (hiddenReach === "package" && dirOf3(d.file) !== dirOf3(f.rel)) continue; @@ -15519,7 +15564,8 @@ function createCallBinder(scan2, pairs, opts = {}) { if (r) return r; const self = (t) => reading("self", receiver, t, t); if (!SELF_NAMES.has(receiver)) { - if (aliases.modules.has(receiver)) r = reading("module", receiver); + if (rustModules?.has(receiver)) r = reading("module", receiver); + else if (aliases.modules.has(receiver)) r = reading("module", receiver); else if (ownTypes.has(receiver)) r = self(receiver); else if (!SHAPED.has(family)) { const named = typeNamedLike(receiver); @@ -15568,7 +15614,8 @@ function createCallBinder(scan2, pairs, opts = {}) { if (shape === "bare") { const renamed = aliases.names.get(name2); if (renamed) ({ name: callee, files: restrict } = renamed); - } else if (shape === "module") restrict = aliases.modules.get(receiver); + } else if (shape === "module") restrict = rustModules?.get(receiver) ?? aliases.modules.get(receiver); + const viaPath = rustModules?.has(receiver) === true && shape === "module"; if (only && !only.has(callee)) return null; const pool = !shaped ? "any" : shape === "bare" || shape === "module" ? "free" : shape === "self" || family === "go" ? "member" : "member-first"; const guessPool = pool === "member-first" ? "member" : pool; @@ -15577,7 +15624,7 @@ function createCallBinder(scan2, pairs, opts = {}) { if (!recall) return null; } else { const hits = scope.within(exportedGroup(callee, family, pool), restrict, callee); - if (hiddenReach === "import") { + if (hiddenReach === "import" || viaPath) { for (const d of scope.within(hiddenGroup(callee, family, pool), restrict, callee)) if (!hits.includes(d)) hits.push(d); } const chosen2 = pickCandidate(f.rel, hits); @@ -15617,7 +15664,7 @@ function createCallBinder(scan2, pairs, opts = {}) { }; return { forFile }; } -var REFERENCE_KINDS3, STRICT, SHAPED, PACKAGE_DIR, PRIVATE_REACH, SELF_NAMES, FUNCTION_KINDS2, MAX_HOPS, NO_ALIASES, dirOf3, isGoTest, declaredRe, aliasMemo, newTables; +var REFERENCE_KINDS3, STRICT, SHAPED, PACKAGE_DIR, PRIVATE_REACH, NOT_CALLABLE, SELF_NAMES, FUNCTION_KINDS2, MAX_HOPS, NO_ALIASES, dirOf3, isGoTest, declaredRe, aliasMemo, newTables; var init_bind = __esm({ "src/bind.ts"() { "use strict"; @@ -15632,7 +15679,8 @@ var init_bind = __esm({ STRICT = /* @__PURE__ */ new Set(["js", "go"]); SHAPED = /* @__PURE__ */ new Set(["go", "python"]); PACKAGE_DIR = /* @__PURE__ */ new Set(["go", "java"]); - PRIVATE_REACH = { go: "package", java: "package", python: "import" }; + PRIVATE_REACH = { go: "package", java: "package", python: "import", rust: "path" }; + NOT_CALLABLE = /* @__PURE__ */ new Set(["mod", "module", "package", "namespace"]); SELF_NAMES = /* @__PURE__ */ new Set(["self", "cls", "this", "Self"]); FUNCTION_KINDS2 = /* @__PURE__ */ new Set(["function", "method", "def", "constructor", "operator"]); MAX_HOPS = 3; @@ -21723,6 +21771,69 @@ var init_patharg = __esm({ } }); +// src/coverage.ts +import { readFileSync as readFileSync16 } from "fs"; +import { extname as extname4, join as join24 } from "path"; +function oversizedNaming(scan2, name2) { + if (!scan2.oversized?.length || !/^[A-Za-z_$][\w$]*$/.test(name2)) return []; + let memo = wordMemo.get(scan2); + if (!memo) wordMemo.set(scan2, memo = /* @__PURE__ */ new Map()); + const known = memo.get(name2); + if (known) return known; + const word = new RegExp(`(? MAX_PROBE_BYTES || classify(o.rel, extname4(o.rel).toLowerCase()) !== "code") continue; + let text; + try { + text = readFileSync16(join24(scan2.root, o.rel), "utf8"); + } catch { + continue; + } + if (word.test(text)) out2.push({ file: o.rel, size: o.size }); + } + memo.set(name2, out2); + return out2; +} +function coverageFor(scan2, name2, opts) { + const callCapped = opts.calls ? scan2.files.filter((f) => f.callsCapped && f.calls?.some((c2) => c2.name === name2)).map((f) => f.rel) : []; + const notIndexed = oversizedNaming(scan2, name2); + if (!callCapped.length && !notIndexed.length) return void 0; + const hints = []; + if (callCapped.length) { + hints.push(`${callCapped.length} file(s) reached the per-file call-site cap, so some of their calls are missing; re-index with a higher --max-calls`); + } + if (notIndexed.length) hints.push(sizeHint(notIndexed, `name "${name2}"`)); + return { + ...callCapped.length ? { callCapped } : {}, + ...notIndexed.length ? { notIndexed } : {}, + hint: hints.join("; ") + }; +} +function sizeHint(files, what) { + const largest = Math.max(...files.map((f) => f.size)); + return `${files.length} file(s) over --max-bytes ${what} but are not indexed (${files.map((f) => f.file).join(", ")}); re-index with --max-bytes ${largest}`; +} +function notIndexedNote(scan2, name2) { + const files = oversizedNaming(scan2, name2); + return files.length ? ` \u2014 ${sizeHint(files, `name "${name2}"`)}` : ""; +} +function notIndexedFile(scan2, repo, arg) { + const readings = fileArgReadings(repo, arg); + const hit = scan2.oversized?.find((o) => readings.includes(o.rel)); + return hit ? `not in the index: ${hit.rel} is ${hit.size} bytes, over --max-bytes (default 1 MiB); re-index with --max-bytes ${hit.size} to include it` : void 0; +} +var MAX_PROBE_BYTES, wordMemo; +var init_coverage = __esm({ + "src/coverage.ts"() { + "use strict"; + init_classify(); + init_patharg(); + MAX_PROBE_BYTES = 32 * 1024 * 1024; + wordMemo = /* @__PURE__ */ new WeakMap(); + } +}); + // src/mcp/concise.ts function symbolLocation(symbol2, name2) { return { name: name2, kind: symbol2.kind, file: symbol2.file, line: symbol2.line, ...symbol2.parent ? { parent: symbol2.parent } : {} }; @@ -21758,11 +21869,11 @@ var init_concise = __esm({ }); // src/embed/persist.ts -import { mkdirSync as mkdirSync3, readFileSync as readFileSync16, renameSync as renameSync3, rmSync as rmSync4, writeFileSync as writeFileSync4 } from "fs"; +import { mkdirSync as mkdirSync3, readFileSync as readFileSync17, renameSync as renameSync3, rmSync as rmSync4, writeFileSync as writeFileSync4 } from "fs"; import { dirname as dirname7 } from "path"; function readEmbeddingsFile(path) { try { - return deserializeEmbeddings(readFileSync16(path)); + return deserializeEmbeddings(readFileSync17(path)); } catch { return void 0; } @@ -21788,7 +21899,7 @@ var init_persist = __esm({ // src/mcp/session.ts import { realpathSync as realpathSync6, statSync as statSync9 } from "fs"; -import { isAbsolute as isAbsolute8, join as join24, relative as relative8, sep as sep6 } from "path"; +import { isAbsolute as isAbsolute8, join as join25, relative as relative8, sep as sep6 } from "path"; function scanFingerprint(scan2) { return sha1(scan2.files.map((f) => `${f.rel}:${f.hash}`).join("\n")); } @@ -21803,7 +21914,7 @@ async function memoizedEmbeddingIndex(key, build) { function memoizedEmbedModel(modelDir) { let stat; try { - stat = statSync9(join24(modelDir, "model.json")); + stat = statSync9(join25(modelDir, "model.json")); } catch { return void 0; } @@ -22012,7 +22123,7 @@ var init_session = __esm({ // src/mcp/watch.ts import { existsSync as existsSync11, mkdtempSync as mkdtempSync3, rmSync as rmSync5, statSync as statSync10, watch as watchFs, writeFileSync as writeFileSync5 } from "fs"; import { tmpdir } from "os"; -import { join as join25 } from "path"; +import { join as join26 } from "path"; function watchRepo(repo, warn, maxDirs = MAX_WATCHED_DIRS) { if (process.platform === "linux") return new DirWatch(repo, warn, maxDirs); return hintWatch(repo, warn); @@ -22089,7 +22200,7 @@ var init_watch = __esm({ const barrier = this.barrier; if (!barrier) return Promise.resolve(void 0); const name2 = `barrier-${++barrier.seq}`; - const file = join25(barrier.dir, name2); + const file = join26(barrier.dir, name2); return new Promise((resolvePromise) => { const finish = (value) => { clearTimeout(timer); @@ -22109,7 +22220,7 @@ var init_watch = __esm({ openBarrier() { let dir; try { - dir = mkdtempSync3(join25(tmpdir(), "codeindex-watch-")); + dir = mkdtempSync3(join26(tmpdir(), "codeindex-watch-")); const barrier = { dir, seq: 0, @@ -22139,7 +22250,7 @@ var init_watch = __esm({ } }); const info2 = ".git/info"; - if (existsSync11(join25(this.repo, info2)) && statSync10(join25(this.repo, info2)).isDirectory()) { + if (existsSync11(join26(this.repo, info2)) && statSync10(join26(this.repo, info2)).isDirectory()) { visited.add(info2); this.add(info2); } @@ -22157,7 +22268,7 @@ var init_watch = __esm({ return; } try { - const watcher = watchFs(rel2 ? join25(this.repo, rel2) : this.repo, (event, filename) => this.onEvent(rel2, event, filename)); + const watcher = watchFs(rel2 ? join26(this.repo, rel2) : this.repo, (event, filename) => this.onEvent(rel2, event, filename)); watcher.on("error", () => { this.events++; this.forget(rel2); @@ -22208,8 +22319,8 @@ var init_watch = __esm({ }); // src/mcp/protocol.ts -import { readFileSync as readFileSync17, statSync as statSync11 } from "fs"; -import { join as join26 } from "path"; +import { readFileSync as readFileSync18, statSync as statSync11 } from "fs"; +import { join as join27 } from "path"; import { pathToFileURL as pathToFileURL3 } from "url"; function validateArgs(schema, args2) { const props = schema.properties ?? {}; @@ -22270,7 +22381,7 @@ function artifactState(path, text, bytes) { } if (size !== bytes && size !== bytes + 1) return "stale"; try { - const disk = readFileSync17(path, "utf8"); + const disk = readFileSync18(path, "utf8"); return disk === text || disk === text + "\n" ? "identical" : "stale"; } catch { return "absent"; @@ -22284,9 +22395,9 @@ function capResponse(text, tool, repo, maxBytes, wholeRepo = true, onWire) { const bytes = onWire ?? textBytes; if (bytes <= maxBytes) return text; const artifactName = wholeRepo && Object.hasOwn(ARTIFACT_FOR, tool) ? ARTIFACT_FOR[tool] : void 0; - const artifact = artifactName ? join26(repo, INDEX_DIR, artifactName) : void 0; + const artifact = artifactName ? join27(repo, INDEX_DIR, artifactName) : void 0; const state = artifact ? artifactState(artifact, text, textBytes) : void 0; - const refresh = `codeindex index --repo ${shellArg(repo)} --out ${shellArg(join26(repo, INDEX_DIR))}`; + const refresh = `codeindex index --repo ${shellArg(repo)} --out ${shellArg(join27(repo, INDEX_DIR))}`; return JSON.stringify( { truncated: true, @@ -23333,8 +23444,8 @@ __export(mcp_exports, { warmGrammarsForRepo: () => warmGrammarsForRepo, warmGrammarsForWalk: () => warmGrammarsForWalk }); -import { readFileSync as readFileSync18, realpathSync as realpathSync7, statSync as statSync12 } from "fs"; -import { basename as basename5, isAbsolute as isAbsolute9, join as join27, relative as relative9, resolve as resolve10, sep as sep7 } from "path"; +import { readFileSync as readFileSync19, realpathSync as realpathSync7, statSync as statSync12 } from "fs"; +import { basename as basename5, isAbsolute as isAbsolute9, join as join28, relative as relative9, resolve as resolve10, sep as sep7 } from "path"; import { createInterface } from "readline"; function isRpcRequest(value) { if (!value || typeof value !== "object" || Array.isArray(value)) return false; @@ -23369,12 +23480,17 @@ function positiveNum(v) { function errMessage(e) { return e instanceof Error ? e.message : String(e); } +function withCoverage(answer, coverage) { + return coverage ? { ...answer, coverage } : answer; +} function indexedFile(scan2, repo, file) { const byRel = fileByRelFor(scan2); if (byRel.has(file)) return file; const rel2 = relative9(repo, resolve10(repo, file.replaceAll("\\", "/"))).split(sep7).join("/"); if (rel2 === ".." || rel2.startsWith("../") || isAbsolute9(rel2)) throw new Error(`\`file\` is outside the repository: ${file}`); if (byRel.has(rel2)) return rel2; + const unseen = notIndexedFile(scan2, repo, file); + if (unseen) throw new Error(unseen); const name2 = basename5(rel2); const near = scan2.files.filter((f) => basename5(f.rel) === name2).map((f) => f.rel).sort(byStr).slice(0, 5); throw new Error( @@ -23445,27 +23561,29 @@ async function callTool(name2, args2, repo, progress, walkRepo = async (r) => ({ if (!lookup) throw new Error("callers with raw:true requires `name`"); if (args2.lsp === true || args2.recall === true) throw new Error("callers raw:true takes neither lsp nor recall"); if (args2.withCaller === true) throw new Error("callers raw:true already names each site's enclosing symbol: it takes no withCaller"); - return JSON.stringify(rawCallersOf(scan2, lookup), null, 2); + const raw = rawCallersOf(scan2, lookup); + return JSON.stringify(withCoverage(raw, coverageFor(scan2, raw.name, { calls: true })), null, 2); } const index = args2.recall === true ? buildCallerIndex(scan2, void 0, { recall: true }) : callerIndexFor(scan2); const sited = (e) => args2.withCaller === true ? withCallerIds(scan2, e) : e; if (lookup) { const reading = resolveSymbolRef(scan2, lookup)?.reading; const lspRef = reading ? formatSymbolRef(reading) : lookup; + const coverage = coverageFor(scan2, reading?.name ?? lookup, { calls: true }); const found = lookupCallerEntry(index, lookup); const entry2 = found && sited(found); if (entry2) { const result = args2.lsp === true ? await callersWithLsp(scan2, repo, lspRef, entry2, lsp) : entry2; - return JSON.stringify(args2.concise === true ? conciseCaller(result) : result, null, 2); + return JSON.stringify(withCoverage(args2.concise === true ? conciseCaller(result) : result, coverage), null, 2); } const absent = explainNoCallers(scan2, lookup, index); if (!absent) { const named = rawCallerSitesFor(scan2, lookup).length; throw new Error( - `no symbol named "${lookup}" in the index` + (named ? ` (${named} call site(s) use the name; raw:true lists them)` : "") + `no symbol named "${lookup}" in the index` + (named ? ` (${named} call site(s) use the name; raw:true lists them)` : "") + notIndexedNote(scan2, lookup) ); } - return JSON.stringify(args2.lsp === true ? await callersWithLsp(scan2, repo, lspRef, absent, lsp) : absent, null, 2); + return JSON.stringify(withCoverage(args2.lsp === true ? await callersWithLsp(scan2, repo, lspRef, absent, lsp) : absent, coverage), null, 2); } const obj = {}; for (const [k, v] of index) obj[k] = args2.concise === true ? conciseCaller(sited(v)) : sited(v); @@ -23507,7 +23625,7 @@ async function callTool(name2, args2, repo, progress, walkRepo = async (r) => ({ const statik = findReferences(scan2, symName); const leaf = resolveSymbolRef(scan2, symName)?.reading.name ?? symName; const result = args2.lsp === true ? await referencesWithLsp(scan2, repo, leaf, statik, lsp) : statik; - return JSON.stringify(args2.concise === true ? conciseReferences(result) : result, null, 2); + return JSON.stringify(withCoverage(args2.concise === true ? conciseReferences(result) : result, coverageFor(scan2, leaf, { calls: true })), null, 2); } if (name2 === "symbol_at") { const file = str(args2.file); @@ -23517,7 +23635,7 @@ async function callTool(name2, args2, repo, progress, walkRepo = async (r) => ({ const scan2 = readScan(); const files = new Set(scan2.files.map((f) => f.rel)); const rel2 = resolveFileArg(repo, file, (r) => files.has(r)); - if (rel2 === void 0) throw new Error(`no such file in the index: ${file}`); + if (rel2 === void 0) throw new Error(notIndexedFile(scan2, repo, file) ?? `no such file in the index: ${file}`); return JSON.stringify(symbolAt(scan2, rel2, line2), null, 2); } if (name2 === "lsp_status") { @@ -23535,7 +23653,7 @@ async function callTool(name2, args2, repo, progress, walkRepo = async (r) => ({ const fn = name2 === "replace_symbol_body" ? replaceSymbolBody : name2 === "insert_after_symbol" ? insertAfterSymbol : insertBeforeSymbol; const file = str(args2.file); const result = fn(scan2, namePath, body2, file === void 0 ? void 0 : indexedFile(scan2, repo, file), { line: line2, strict: args2.strict === true }); - sessionForgetFile(join27(scan2.root, result.file)); + sessionForgetFile(join28(scan2.root, result.file)); return JSON.stringify(result, null, 2); } if (name2 === "write_memory") { @@ -23681,7 +23799,7 @@ async function callTool(name2, args2, repo, progress, walkRepo = async (r) => ({ if (model) { const index = await memoizedEmbeddingIndex( { mode: "static", identity: `${modelDir}#${model.modelId}`, scan: scan2 }, - (previous) => buildEmbeddingIndex(scan2, model, { previous: previous ?? readEmbeddingsFile(join27(repo, INDEX_DIR, "embeddings.bin")) }) + (previous) => buildEmbeddingIndex(scan2, model, { previous: previous ?? readEmbeddingsFile(join28(repo, INDEX_DIR, "embeddings.bin")) }) ); return answer(explainSemantic(scan2, query, index, { ...lexOpts, model }), "static"); } @@ -23803,7 +23921,7 @@ async function callTool(name2, args2, repo, progress, walkRepo = async (r) => ({ const unreadable = new Error(`cannot read rules config ${configPath}`); let abs; try { - abs = realpathSync7(isAbsolute9(configPath) ? configPath : join27(repo, configPath)); + abs = realpathSync7(isAbsolute9(configPath) ? configPath : join28(repo, configPath)); } catch { throw unreadable; } @@ -23813,7 +23931,7 @@ async function callTool(name2, args2, repo, progress, walkRepo = async (r) => ({ } let text; try { - text = readFileSync18(abs, "utf8"); + text = readFileSync19(abs, "utf8"); } catch { throw unreadable; } @@ -24040,6 +24158,7 @@ var init_mcp = __esm({ init_viz(); init_resolution(); init_query(); + init_coverage(); init_patharg(); init_traverse(); init_symref(); @@ -24093,8 +24212,8 @@ __export(rewrite_exports, { shellQuote: () => shellQuote, tokenize: () => tokenize2 }); -import { existsSync as existsSync12, readFileSync as readFileSync19 } from "fs"; -import { dirname as dirname8, join as join28, relative as relative10, resolve as resolve11, sep as sep8 } from "path"; +import { existsSync as existsSync12, readFileSync as readFileSync20 } from "fs"; +import { dirname as dirname8, join as join29, relative as relative10, resolve as resolve11, sep as sep8 } from "path"; function lex(line2) { const out2 = []; let cur = ""; @@ -24657,17 +24776,17 @@ function toScope(path) { } function submodulesAround(cwd) { for (let dir = resolve11(cwd); ; dir = dirname8(dir)) { - const modules = join28(dir, ".gitmodules"); + const modules = join29(dir, ".gitmodules"); if (existsSync12(modules)) { let text; try { - text = readFileSync19(modules, "utf8"); + text = readFileSync20(modules, "utf8"); } catch { return []; } return [...text.matchAll(/^\s*path\s*=\s*(.+?)\s*$/gm)].map((m) => resolve11(dir, m[1])); } - if (existsSync12(join28(dir, ".git")) || dirname8(dir) === dir) return []; + if (existsSync12(join29(dir, ".git")) || dirname8(dir) === dir) return []; } } function rewriteCommand(cmd, bin = "codeindex", cwd) { @@ -25902,8 +26021,8 @@ init_patharg(); init_types(); init_types(); init_loader(); -import { existsSync as existsSync13, lstatSync as lstatSync4, mkdirSync as mkdirSync4, readFileSync as readFileSync20, renameSync as renameSync4, rmSync as rmSync6, statSync as statSync13, writeFileSync as writeFileSync6 } from "fs"; -import { isAbsolute as isAbsolute10, join as join29, resolve as resolve12 } from "path"; +import { existsSync as existsSync13, lstatSync as lstatSync4, mkdirSync as mkdirSync4, readFileSync as readFileSync21, renameSync as renameSync4, rmSync as rmSync6, statSync as statSync13, writeFileSync as writeFileSync6 } from "fs"; +import { isAbsolute as isAbsolute10, join as join30, resolve as resolve12 } from "path"; init_pipeline(); init_hash(); init_graph_json(); @@ -25921,6 +26040,7 @@ init_relations(); init_symbolgraph(); init_callers(); init_query(); +init_coverage(); init_concise(); init_symref(); init_workspaces(); @@ -26208,8 +26328,9 @@ Flags (accepted before OR after the subcommand: '--repo X scan' and --exclude (default: none \u2014 the whole tree is indexed; a cap sets the \`capped\` flag) --max-bytes Skip files above this size (default 1 MiB) - --max-calls Per-file call-site cap for extraction (default 512); a - capped file keeps one site per distinct callee first + --max-calls Per-file call-site cap for extraction (default 8192); a + capped file keeps one site per distinct callee first, + and a \`callers\`/\`refs\` answer counting it says so --no-ast Skip tree-sitter grammars even when present (regex tier) --workers \`index\`: extraction worker threads (default: cores-1, capped at 8; 0 or 1 forces the single-threaded path). @@ -26605,7 +26726,7 @@ function warnPathFlags(flags2) { if (scope === ".." || scope.startsWith("../") || isAbsolute10(scope)) { process.stderr.write(`codeindex: warning: --scope ${flags2.scope} is outside --repo ${flags2.repo} \u2014 nothing matches `); - } else if (scope && !/[*?[]/.test(scope) && !existsSync13(join29(flags2.repo, scope))) { + } else if (scope && !/[*?[]/.test(scope) && !existsSync13(join30(flags2.repo, scope))) { process.stderr.write(`codeindex: warning: --scope ${flags2.scope} does not exist under ${flags2.repo} \u2014 nothing matches `); } @@ -26897,18 +27018,18 @@ ${HELP}`); if (!flags2.out) throw new Error("index needs --out "); const outDir = flags2.out; mkdirSync4(outDir, { recursive: true }); - const cachePath = join29(outDir, "cache.json"); + const cachePath = join30(outDir, "cache.json"); await warmPresentGrammars(); const modelDir = resolveEmbedModelDir(flags2.repo); const { model, error: modelError } = tryLoadEmbedModel(modelDir); if (modelError) process.stderr.write(`codeindex: ${modelError} \u2014 embeddings.bin skipped; re-run \`codeindex embed pull\` `); - const graphPath = join29(outDir, "graph.json"); - const symbolsPath = join29(outDir, "symbols.json"); - const embedPath = join29(outDir, "embeddings.bin"); + const graphPath = join30(outDir, "graph.json"); + const symbolsPath = join30(outDir, "symbols.json"); + const embedPath = join30(outDir, "embeddings.bin"); const artifactSha = (path) => { try { - return sha1(readFileSync20(path)); + return sha1(readFileSync21(path)); } catch { return void 0; } @@ -26937,7 +27058,7 @@ ${HELP}`); }); const extraction = extractionProfile(scan2.files, flags2.maxCalls, grammarReady); if (scan2.files.length === 0) warnEmptyScan(flags2); - const freshnessPath = join29(outDir, FRESHNESS_FILE); + const freshnessPath = join30(outDir, FRESHNESS_FILE); const writeFreshness = (out2) => { let cacheStat; try { @@ -26948,7 +27069,7 @@ ${HELP}`); const text = renderFreshness(scan2, out2, extraction, { size: cacheStat.size, mtimeMs: cacheStat.mtimeMs }); let current; try { - current = readFileSync20(freshnessPath, "utf8"); + current = readFileSync21(freshnessPath, "utf8"); } catch { current = void 0; } @@ -27072,7 +27193,9 @@ ${HELP}`); const ref2 = flags2.positional; if (flags2.raw) { if (ref2) { - emit(JSON.stringify(rawCallersOf(scan2, ref2), null, 2) + "\n", flags2.out); + const raw = rawCallersOf(scan2, ref2); + const coverage = coverageFor(scan2, raw.name, { calls: true }); + emit(JSON.stringify(coverage ? { ...raw, coverage } : raw, null, 2) + "\n", flags2.out); } else { const obj = {}; for (const [name2, sites] of buildRawCallerIndex(scan2)) obj[name2] = sites; @@ -27086,12 +27209,13 @@ ${HELP}`); if (!answer) { const named = rawCallerSitesFor(scan2, ref2).length; throw new Error( - `no symbol named "${ref2}" in the index` + (named ? ` (${named} call site(s) use the name; \`callers --raw ${ref2}\` lists them)` : "") + `no symbol named "${ref2}" in the index` + (named ? ` (${named} call site(s) use the name; \`callers --raw ${ref2}\` lists them)` : "") + notIndexedNote(scan2, ref2) ); } const reading = resolveSymbolRef(scan2, ref2)?.reading; const result = flags2.lsp ? await callersWithLsp(scan2, flags2.repo, reading ? formatSymbolRef(reading) : ref2, answer, { trustRepoConfig: flags2.trustLspConfig }) : answer; - emit(JSON.stringify(result, null, 2) + "\n", flags2.out); + const coverage = coverageFor(scan2, reading?.name ?? ref2, { calls: true }); + emit(JSON.stringify(coverage ? { ...result, coverage } : result, null, 2) + "\n", flags2.out); } else { const index = buildCallerIndex(scan2, void 0, { recall: flags2.recall }); const obj = {}; @@ -27149,15 +27273,26 @@ ${HELP}`); concise: flags2.concise, maxResults: flags2.limit }); + if (Array.isArray(result) && !result.length) { + const unseen = oversizedNaming(scan2, flags2.positional.replace(/@.*$/, "").replace(/^.*[#/]/, "")); + if (unseen.length) { + process.stderr.write( + `codeindex: not indexed for size but naming it: ${unseen.map((u) => `${u.file} (${u.size} bytes)`).join(", ")}; re-index with --max-bytes ${Math.max(...unseen.map((u) => u.size))} +` + ); + } + } } else if (cmd === "refs") { const statik = findReferences(scan2, flags2.positional); const leaf = resolveSymbolRef(scan2, flags2.positional)?.reading.name ?? flags2.positional; const refs = flags2.lsp ? await referencesWithLsp(scan2, flags2.repo, leaf, statik, { trustRepoConfig: flags2.trustLspConfig }) : statik; - result = flags2.concise ? conciseReferences(refs) : refs; + const answer = flags2.concise ? conciseReferences(refs) : refs; + const coverage = coverageFor(scan2, leaf, { calls: true }); + result = coverage ? { ...answer, coverage } : answer; } else { const known = new Set(scan2.files.map((f) => f.rel)); const rel2 = resolveFileArg(flags2.repo, flags2.positional, (r) => known.has(r)); - if (rel2 === void 0) throw new Error(`no such file in the index: ${flags2.positional}`); + if (rel2 === void 0) throw new Error(notIndexedFile(scan2, flags2.repo, flags2.positional) ?? `no such file in the index: ${flags2.positional}`); const overview = symbolsOverview(scan2, rel2); result = flags2.concise ? overview.map((s) => symbolLocation(s, s.name)) : overview; } @@ -27190,7 +27325,7 @@ ${HELP}`); const scan2 = await readScan(); const files = new Set(scan2.files.map((f) => f.rel)); const rel2 = resolveFileArg(flags2.repo, m[1], (r) => files.has(r)); - if (rel2 === void 0) throw new Error(`no such file in the index: ${m[1]}`); + if (rel2 === void 0) throw new Error(notIndexedFile(scan2, flags2.repo, m[1]) ?? `no such file in the index: ${m[1]}`); emit(JSON.stringify(symbolAt(scan2, rel2, Number(m[2])), null, 2) + "\n", flags2.out); } else if (cmd === "search") { if (!flags2.positional) throw new Error('search needs a query: cli.mjs search "" --repo '); @@ -27212,7 +27347,7 @@ ${HELP}`); if (endpoint) { let fused; try { - const cacheFile = existsSync13(join29(indexDirPath(flags2.repo, indexDir), "cache.json")) ? join29(indexDirPath(flags2.repo, indexDir), "embed-cache", `endpoint-${sha1(embedEndpointUrl(endpoint)).slice(0, 12)}.bin`) : void 0; + const cacheFile = existsSync13(join30(indexDirPath(flags2.repo, indexDir), "cache.json")) ? join30(indexDirPath(flags2.repo, indexDir), "embed-cache", `endpoint-${sha1(embedEndpointUrl(endpoint)).slice(0, 12)}.bin`) : void 0; const modelId = cacheFile ? await endpointModelId() : void 0; const previous = cacheFile ? readEmbeddingsFile(cacheFile) : void 0; const index = await buildEndpointIndex(scan2, { previous, modelId }); @@ -27236,7 +27371,7 @@ ${HELP}`); ); lexical(); } else { - const previous = readEmbeddingsFile(join29(indexDirPath(flags2.repo, indexDir), "embeddings.bin")); + const previous = readEmbeddingsFile(join30(indexDirPath(flags2.repo, indexDir), "embeddings.bin")); const index = buildEmbeddingIndex(scan2, model, { previous }); answer(explainSemantic(scan2, flags2.positional, index, { ...searchOpts, model })); } @@ -27298,15 +27433,15 @@ ${HELP}`); const model = loadEmbedModel(modelDir); mkdirSync4(flags2.out, { recursive: true }); const scan2 = await readScan(); - const index = buildEmbeddingIndex(scan2, model, { previous: readEmbeddingsFile(join29(flags2.out, "embeddings.bin")) }); - writeArtifact(join29(flags2.out, "embeddings.bin"), serializeEmbeddings(index)); + const index = buildEmbeddingIndex(scan2, model, { previous: readEmbeddingsFile(join30(flags2.out, "embeddings.bin")) }); + writeArtifact(join30(flags2.out, "embeddings.bin"), serializeEmbeddings(index)); process.stderr.write(`codeindex: ${index.records.length} embedding records \u2192 ${flags2.out}/embeddings.bin (model ${model.modelId}) `); } else if (sub === "pull") { const { url, sha256 } = resolveEmbedPullUrl(); - const destDir = process.env.CODEINDEX_EMBED_DIR ?? join29(flags2.repo, ".codeindex", "models"); + const destDir = process.env.CODEINDEX_EMBED_DIR ?? join30(flags2.repo, ".codeindex", "models"); mkdirSync4(destDir, { recursive: true }); - process.stderr.write(`codeindex: fetching model from ${url} \u2192 ${join29(destDir, "model.json")} + process.stderr.write(`codeindex: fetching model from ${url} \u2192 ${join30(destDir, "model.json")} `); let body2; try { @@ -27327,8 +27462,8 @@ ${HELP}`); process.exitCode = 1; return; } - writeArtifact(join29(destDir, "model.json"), body2); - process.stderr.write(`codeindex: model written to ${join29(destDir, "model.json")} + writeArtifact(join30(destDir, "model.json"), body2); + process.stderr.write(`codeindex: model written to ${join30(destDir, "model.json")} `); } else { throw new Error("embed needs a subcommand: status | build | pull | serve"); @@ -27342,7 +27477,7 @@ ${HELP}`); const cacheDir = sharedGrammarsCacheDir(); if (sub === "status") { const info2 = resolveGrammarsTier(); - const present = (name2) => info2.dirs.some((d) => existsSync13(join29(d, name2))); + const present = (name2) => info2.dirs.some((d) => existsSync13(join30(d, name2))); const runtimePresent = present("web-tree-sitter.wasm"); const target = resolveGrammarsPullTarget(); const resolvedIn = (keys) => [...keys].filter((k) => present(`${k}.wasm`)).sort(); @@ -27379,7 +27514,7 @@ ${HELP}`); } else if (cmd === "rules") { if (!flags2.config) throw new Error("rules needs --config "); const configPath = [resolve12(flags2.config), resolve12(flags2.repo, flags2.config)].find((p) => existsSync13(p)) ?? resolve12(flags2.config); - const rules = parseRulesText(readFileSync20(configPath, "utf8"), configPath); + const rules = parseRulesText(readFileSync21(configPath, "utf8"), configPath); const { scan: scan2, graph } = await readArtifacts(); const report = rulesReport(checkRules(graph, rules, { scan: scan2 })); emit(JSON.stringify(report, null, 2) + "\n", flags2.out); @@ -27392,7 +27527,7 @@ ${HELP}`); } else if (cmd === "churn") { const res = gitChurn(flags2.repo, { since: flags2.since }); const filter = scanPathFilter(flags2.repo, scanOptions(flags2)); - const keep = filter && ((rel2) => filter({ rel: rel2, abs: join29(flags2.repo, rel2), directory: false })); + const keep = filter && ((rel2) => filter({ rel: rel2, abs: join30(flags2.repo, rel2), directory: false })); const sorted = {}; for (const k of [...res.churn.keys()].sort()) if (!keep || keep(k)) sorted[k] = res.churn.get(k); emit(JSON.stringify({ ok: res.ok, ...historyStatus(res), churn: sorted }, null, 2) + "\n", flags2.out); @@ -27431,7 +27566,7 @@ ${HELP}`); if (rel2 !== void 0) { const known = new Set(scan2.files.map((f) => f.rel)); const hit = fileArgReadings(flags2.repo, rel2).find((r) => known.has(r)); - if (hit === void 0) throw new Error(`no such file in the index: ${rel2}`); + if (hit === void 0) throw new Error(notIndexedFile(scan2, flags2.repo, rel2) ?? `no such file in the index: ${rel2}`); rel2 = hit; } emit(JSON.stringify(symbolComplexity(scan2, rel2, flags2.limit), null, 2) + "\n", flags2.out); diff --git a/src/ast/extract.ts b/src/ast/extract.ts index f60d986..3dba436 100644 --- a/src/ast/extract.ts +++ b/src/ast/extract.ts @@ -46,7 +46,12 @@ export interface AstResult { } const MAX_REF_IDENTS = 512; -const MAX_CALLS = 512; +// The per-file call-site cap, on both tiers. It was 512, and a test file that +// calls the function under test hundreds of times lost the rest without a word: +// vite's `callers resolveConfig` answered 56 of 68 sites, terraform's +// `NewContext` 53 of 78. At 8192 the TypeScript repo's index grows by 1% and +// takes no longer; a file the cap still cuts is flagged (FileRecord.callsCapped). +export const DEFAULT_MAX_CALLS = 8192; const MAX_IMPORTED_NAMES = 256; const MAX_SYMBOLS = 2000; const MAX_RELATIONS = 256; @@ -156,7 +161,8 @@ function isStatementString(node: TSNode): boolean { return parent !== null && parent.type === "expression_statement" && parent.namedChildCount === 1; } -// The call sites a file keeps, sorted by name then line; `sites` is in source +// The call sites a file keeps, sorted by name, line, then receiver (one line may +// call the same name on two receivers); `sites` is in source // order. Past the cap the survivors are chosen BEFORE that sort: slicing the // sorted list kept whatever sorts first, and code-unit order puts every // uppercase name ahead of every lowercase one — tsgo's parser.go kept 512 of its @@ -165,7 +171,7 @@ function isStatementString(node: TSNode): boolean { // order, so every name a file calls stays bindable by the caller index, the call // edges and dead code; the rest of the budget then goes in source order. Shared // with the regex tier, so both keep the same sites. -export function capCallSites(sites: T[], max: number): T[] { +export function capCallSites(sites: T[], max: number): T[] { let kept = sites.slice(); if (sites.length > max) { const keep = new Uint8Array(sites.length); @@ -185,7 +191,7 @@ export function capCallSites(sites: T[ } kept = sites.filter((_, i) => keep[i] === 1); } - return kept.sort((a, b) => byStr(a.name, b.name) || a.line - b.line); + return kept.sort((a, b) => byStr(a.name, b.name) || a.line - b.line || byStr(a.receiver ?? "", b.receiver ?? "")); } function collectAll( @@ -207,7 +213,9 @@ function collectAll( const addCall = (name: string | undefined, node: TSNode, receiver?: string): void => { if (!name || name === "_" || !/^[A-Za-z_]\w*$/.test(name)) return; const line = node.startPosition.row + 1; - const key = `${name} ${line}`; + // The receiver is part of the key: `incremental.NewProgram(compiler.NewProgram())` + // is two calls to two packages, and keeping one hid the other's caller. + const key = `${name} ${line} ${receiver ?? ""}`; if (callSeen.has(key)) return; callSeen.add(key); calls.push(receiver ? { name, line, receiver } : { name, line }); @@ -436,7 +444,7 @@ interface WalkCtx { // undefined when no grammar is loaded for the extension (caller falls back to the // regex extractor). Walks top-level declarations, type members, and declarations // nested up to MAX_FUNC_DEPTH function bodies deep. -// `opts.maxCalls` overrides the per-file call-site cap (default MAX_CALLS). +// `opts.maxCalls` overrides the per-file call-site cap (default DEFAULT_MAX_CALLS). // `opts.imports` (default true) fills `refs`/`pkg` from extract/imports.ts — the // very scan the index runs, so this API and the graph agree on every file; // extractCode passes false because it runs that scan itself. @@ -970,7 +978,7 @@ export function extractAst( root, spec, new Set(symbols.map((s) => s.name)), - opts.maxCalls ?? MAX_CALLS, + opts.maxCalls ?? DEFAULT_MAX_CALLS, ); const wantImports = opts.imports !== false; const refs = wantImports ? extractImports(ext, content) : []; diff --git a/src/ast/node.ts b/src/ast/node.ts index ab99452..a4087b0 100644 --- a/src/ast/node.ts +++ b/src/ast/node.ts @@ -181,6 +181,9 @@ export function readReceiver(node: TSNode | null): string | undefined { node.childForFieldName("argument") ?? node.childForFieldName("receiver") ?? node.childForFieldName("table"); + // Rust's `crate::f()` and `super::f()` name a module by keyword, a leaf + // readName does not take for a name; the binder resolves both to a file. + if (obj && (obj.type === "crate" || obj.type === "super")) return obj.type; const name = obj ? readName(obj) : undefined; return name && /^[A-Za-z_]\w*$/.test(name) ? name : undefined; } diff --git a/src/bind.ts b/src/bind.ts index 1dfaa72..dced23a 100644 --- a/src/bind.ts +++ b/src/bind.ts @@ -60,7 +60,14 @@ const PACKAGE_DIR = new Set(["go", "java"]); // mates (gin calls `debugPrint` from 14 files); Python's leading underscore is // a convention, so an import reaches them (`self._find_error_handler` in a // subclass file). -const PRIVATE_REACH: Record = { go: "package", java: "package", python: "import" }; +// Rust's private items reach a module's descendants, which name them by path: +// `crate::helper()` from anywhere in the crate, `super::f()` from a child +// module — never by a bare name or a `use` of another module (see rustPath). +const PRIVATE_REACH: Record = { go: "package", java: "package", python: "import", rust: "path" }; + +// Declarations no call can reach: a module or package is named, never called. +// Rust's `mod search;` beside `fn search` took every `search()` call in the file. +const NOT_CALLABLE = new Set(["mod", "module", "package", "namespace"]); // Receivers that name the enclosing object. JS/TS/Java `this` and Rust `self` // never get here (the extractor reads no receiver from them); PHP's `$this` @@ -496,6 +503,28 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB fnParentsMemo.set(rel, (parents = set ?? noParents)); return parents; }; + // The file a Rust `crate::` or `super::` path names, read off the module + // tree's layout: the crate root is the nearest `lib.rs`/`main.rs` above the + // file (ripgrep's is `crates/core/main.rs`), a module's parent the + // `mod.rs`, `.rs` or crate root of the directory above it. Undefined + // when the layout says nothing, which leaves the call to the ordinary rules. + const indexed = (rel: string): boolean => (byRel ??= new Map(scan.files.map((f) => [f.rel, f]))).has(rel); + const firstIndexed = (dir: string, names: string[]): string | undefined => + names.map((n) => (dir ? `${dir}/${n}` : n)).find(indexed); + const rustPath = (rel: string, receiver: string): string[] | undefined => { + const base = rel.slice(rel.lastIndexOf("/") + 1); + let found: string | undefined; + if (receiver === "crate") { + for (let dir = dirOf(rel); !found; dir = dirOf(dir)) { + found = firstIndexed(dir, ["lib.rs", "main.rs"]); + if (!dir) break; + } + } else if (base !== "lib.rs" && base !== "main.rs") { + const parent = dirOf(base === "mod.rs" ? dirOf(rel) : rel.slice(0, -".rs".length)); + found = firstIndexed(parent, ["mod.rs", "lib.rs", "main.rs"]) ?? (parent && indexed(`${parent}.rs`) ? `${parent}.rs` : undefined); + } + return found === undefined ? undefined : [found]; + }; const inFunction = (s: CodeSymbol): boolean => s.parent !== undefined && fnParentsOf(s.file).has(s.parent); const isMember = (s: CodeSymbol): boolean => s.parent !== undefined && !fnParentsOf(s.file).has(s.parent); @@ -508,7 +537,7 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB for (const f of scan.files) { const reach = PRIVATE_REACH[familyOf(f.lang)] !== undefined; for (const s of f.symbols) { - if (REFERENCE_KINDS.has(s.kind) || (!s.exported && !reach)) continue; + if (REFERENCE_KINDS.has(s.kind) || NOT_CALLABLE.has(s.kind) || (!s.exported && !reach)) continue; if (only && !only.has(s.name)) continue; const list = byName.get(s.name); if (list) list.push(s); @@ -567,7 +596,7 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB const fnParents = fnParentsOf(f.rel); const isOwnMember = (s: CodeSymbol): boolean => s.parent !== undefined && !fnParents.has(s.parent); for (const s of f.symbols) { - if (REFERENCE_KINDS.has(s.kind)) continue; + if (REFERENCE_KINDS.has(s.kind) || NOT_CALLABLE.has(s.kind)) continue; if (!ownAny.has(s.name)) ownAny.set(s.name, s); if (isOwnMember(s)) { if (!ownMember.has(s.name)) ownMember.set(s.name, s); @@ -581,7 +610,7 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB if (!ownMemberOf) { ownMemberOf = new Map(); for (const s of f.symbols) { - if (REFERENCE_KINDS.has(s.kind) || !isOwnMember(s)) continue; + if (REFERENCE_KINDS.has(s.kind) || NOT_CALLABLE.has(s.kind) || !isOwnMember(s)) continue; const key = `${s.parent}\u0000${s.name}`; if (!ownMemberOf.has(key)) ownMemberOf.set(key, s); } @@ -600,12 +629,20 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB return ownTypeByLower.get(receiver.toLowerCase()); }; const aliases = scope.aliases(f); + // `crate` and `super` as this Rust file's path qualifiers, where they name a file. + let rustModules: Map | undefined; + if (family === "rust") { + for (const q of ["crate", "super"]) { + const files = rustPath(f.rel, q); + if (files) (rustModules ??= new Map()).set(q, files); + } + } // Cross-file defs of `name` this file reaches by stated evidence. const corroborated = (name: string, pool: Pool): CodeSymbol[] => { const out = scope.reached(exportedGroup(name, family, pool), f, name); const priv = hiddenGroup(name, family, pool); - if (priv && hiddenReach) { + if (priv && (hiddenReach === "package" || hiddenReach === "import")) { const seen = new Set(out.map((d) => d.file)); for (const d of hiddenReach === "package" ? scope.reached(priv, f, name) : importedDefs(priv, scope.targets(f.rel))) { // A package-private def is visible to its own package only. @@ -654,7 +691,8 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB if (r) return r; const self = (t: string | undefined): Reading => reading("self", receiver, t, t); if (!SELF_NAMES.has(receiver)) { - if (aliases.modules.has(receiver)) r = reading("module", receiver); + if (rustModules?.has(receiver)) r = reading("module", receiver); + else if (aliases.modules.has(receiver)) r = reading("module", receiver); else if (ownTypes.has(receiver)) r = self(receiver); // `Greeter.make()` next to Greeter else if (!SHAPED.has(family)) { // A variable named after a type this file declares: `store.get()`. @@ -718,7 +756,9 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB if (shape === "bare") { const renamed = aliases.names.get(name); if (renamed) ({ name: callee, files: restrict } = renamed); - } else if (shape === "module") restrict = aliases.modules.get(receiver!); + } else if (shape === "module") restrict = rustModules?.get(receiver!) ?? aliases.modules.get(receiver!); + // A Rust path to an ancestor module reaches its private items too. + const viaPath = rustModules?.has(receiver!) === true && shape === "module"; if (only && !only.has(callee)) return null; // What the call's shape can reach (SHAPED families): a bare call or a // module qualifier a free function or type, a call on an object a @@ -742,7 +782,7 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB if (!recall) return null; } else { const hits = scope.within(exportedGroup(callee, family, pool), restrict, callee); - if (hiddenReach === "import") { + if (hiddenReach === "import" || viaPath) { for (const d of scope.within(hiddenGroup(callee, family, pool), restrict, callee)) if (!hits.includes(d)) hits.push(d); } const chosen = pickCandidate(f.rel, hits); diff --git a/src/cache.ts b/src/cache.ts index 73d2176..202a157 100644 --- a/src/cache.ts +++ b/src/cache.ts @@ -64,7 +64,7 @@ function record(v: unknown, rel: string): v is FileRecord { strings(v.headings) && Array.isArray(v.symbols) && v.symbols.every((s) => symbol(s, rel)) && Array.isArray(v.refs) && v.refs.every(ref) && optionalArray(v.calls, call) && optionalArray(v.importAliases, importAlias) && optionalArray(v.relations, relation) && optionalArray(v.literals, literal) && - (v.truncated === undefined || v.truncated === true) && + (v.truncated === undefined || v.truncated === true) && (v.callsCapped === undefined || v.callsCapped === true) && (v.astFallback === undefined || v.astFallback === true) && (v.generated === undefined || v.generated === "minified" || v.generated === "bundle"); } diff --git a/src/callers.ts b/src/callers.ts index 7d52804..c86d9f8 100644 --- a/src/callers.ts +++ b/src/callers.ts @@ -120,6 +120,11 @@ function indexCallers(scan: RepoScan, pairs: Set, recall: boolean, only? let entry = sites.get(key); if (!entry) sites.set(key, (entry = { def: hit.def, callers: [] })); else if (hit.def.line < entry.def.line) entry.def = hit.def; + // `foo(a.foo(1))` is two sites on one line that may reach the same + // declaration: the caller is that line, once. A file's sites come sorted + // by name then line, so the twin is the entry's last caller. + const last = entry.callers[entry.callers.length - 1]; + if (last && last.file === f.rel && last.line === c.line) continue; entry.callers.push( recall ? { file: f.rel, line: c.line, confidence: hit.corroborated ? "corroborated" : "unique-name" } @@ -186,11 +191,11 @@ export function enclosingAmong(symbols: CodeSymbol[], line: number): CodeSymbol // buildCallerIndex answers "who calls this DEFINED, RESOLVED symbol", // buildRawCallerIndex answers "where does this NAME get called", full stop. // -// Bounded by the per-file call cap: FileRecord.calls truncates at 512 -// call-sites per file, name+line deduped (src/types.ts, FileRecord.calls doc). -// A single generated/vendored file with more raw call sites than that loses -// sites silently upstream of this function, in extraction — not something -// buildRawCallerIndex can see or recover. +// Bounded by the per-file call cap: FileRecord.calls truncates at 8192 +// call-sites per file, name+line+receiver deduped (src/types.ts, FileRecord.calls +// doc). A file with more raw call sites than that loses sites upstream of this +// function, in extraction; it carries `callsCapped`, which the CLI and MCP +// answers report (see coverage.ts). export interface RawCallerSite { file: string; line: number; // 1-based line of the call site diff --git a/src/coverage.ts b/src/coverage.ts new file mode 100644 index 0000000..a56b66f --- /dev/null +++ b/src/coverage.ts @@ -0,0 +1,95 @@ +// What an answer about a name could not see, said next to the answer. +// +// An evaluation on large real repositories found two ways an index answers +// "nothing" or "this much" while the truth lies where it never looked: +// * a file over --max-bytes is not indexed at all — typescript-go's 1.4 MB +// checker.go, so `refs NewChecker` answered `{defs: []}` with exit 0; +// * a file past the per-file call-site cap keeps only some of its sites — +// vite's `callers resolveConfig` answered 56 of 68. +// Both are known to the scan (RepoScan.oversized, FileRecord.callsCapped), so +// an answer that may be missing something names the files and the flag that +// brings them in, instead of looking complete. +import { readFileSync } from "node:fs"; +import { extname, join } from "node:path"; +import { classify } from "./classify.js"; +import { fileArgReadings } from "./patharg.js"; +import type { RepoScan } from "./scan.js"; + +// An oversized file larger than this is not read to look for a name: a +// generated or vendored blob, not a declaration anyone navigates to. +const MAX_PROBE_BYTES = 32 * 1024 * 1024; + +export interface Coverage { + // Files that call the name but reached the per-file call-site cap. + callCapped?: string[]; + // Files left out for size whose text names it. + notIndexed?: { file: string; size: number }[]; + hint: string; +} + +const wordMemo = new WeakMap>(); + +// The oversized source files whose text holds `name` as a whole word. +export function oversizedNaming(scan: RepoScan, name: string): { file: string; size: number }[] { + if (!scan.oversized?.length || !/^[A-Za-z_$][\w$]*$/.test(name)) return []; + let memo = wordMemo.get(scan); + if (!memo) wordMemo.set(scan, (memo = new Map())); + const known = memo.get(name); + if (known) return known; + const word = new RegExp(`(? MAX_PROBE_BYTES || classify(o.rel, extname(o.rel).toLowerCase()) !== "code") continue; + let text: string; + try { + text = readFileSync(join(scan.root, o.rel), "utf8"); + } catch { + continue; + } + if (word.test(text)) out.push({ file: o.rel, size: o.size }); + } + memo.set(name, out); + return out; +} + +// What a `callers` or `refs` answer about `name` may be missing. `calls`: the +// answer counts call sites, so a capped file matters too. +export function coverageFor(scan: RepoScan, name: string, opts: { calls: boolean }): Coverage | undefined { + const callCapped = opts.calls + ? scan.files.filter((f) => f.callsCapped && f.calls?.some((c) => c.name === name)).map((f) => f.rel) + : []; + const notIndexed = oversizedNaming(scan, name); + if (!callCapped.length && !notIndexed.length) return undefined; + const hints: string[] = []; + if (callCapped.length) { + hints.push(`${callCapped.length} file(s) reached the per-file call-site cap, so some of their calls are missing; re-index with a higher --max-calls`); + } + if (notIndexed.length) hints.push(sizeHint(notIndexed, `name "${name}"`)); + return { + ...(callCapped.length ? { callCapped } : {}), + ...(notIndexed.length ? { notIndexed } : {}), + hint: hints.join("; "), + }; +} + +function sizeHint(files: { file: string; size: number }[], what: string): string { + const largest = Math.max(...files.map((f) => f.size)); + return `${files.length} file(s) over --max-bytes ${what} but are not indexed (${files.map((f) => f.file).join(", ")}); re-index with --max-bytes ${largest}`; +} + +// The sentence an error about an unknown symbol gains when an oversized file +// names it; "" otherwise. +export function notIndexedNote(scan: RepoScan, name: string): string { + const files = oversizedNaming(scan, name); + return files.length ? ` — ${sizeHint(files, `name "${name}"`)}` : ""; +} + +// Why a file argument is not in the index, when the scan knows: it was left +// out for size. Undefined otherwise (not found, ignored, out of scope). +export function notIndexedFile(scan: RepoScan, repo: string, arg: string): string | undefined { + const readings = fileArgReadings(repo, arg); + const hit = scan.oversized?.find((o) => readings.includes(o.rel)); + return hit + ? `not in the index: ${hit.rel} is ${hit.size} bytes, over --max-bytes (default 1 MiB); re-index with --max-bytes ${hit.size} to include it` + : undefined; +} diff --git a/src/engine-cli.ts b/src/engine-cli.ts index 844b83e..d72f1eb 100644 --- a/src/engine-cli.ts +++ b/src/engine-cli.ts @@ -44,6 +44,7 @@ import { implementationsOf, typeEntry } from "./relations.js"; import { callPath, neighborhood } from "./symbolgraph.js"; import { buildCallerIndex, buildRawCallerIndex, callerIndexForNames, lookupCallerEntry, rawCallerSitesFor, refNames } from "./callers.js"; import { explainNoCallers, findReferences, findSymbol, rawCallersOf, resolveSymbolRef, symbolAt, symbolsOverview, withCallerIds } from "./query.js"; +import { coverageFor, notIndexedFile, notIndexedNote, oversizedNaming } from "./coverage.js"; import { conciseReferences, symbolLocation } from "./mcp/concise.js"; import { formatSymbolRef } from "./symref.js"; import { checkWorkspaceDeps, detectWorkspaces, workspaceReport } from "./workspaces.js"; @@ -347,8 +348,9 @@ Flags (accepted before OR after the subcommand: '--repo X scan' and --exclude (default: none — the whole tree is indexed; a cap sets the \`capped\` flag) --max-bytes Skip files above this size (default 1 MiB) - --max-calls Per-file call-site cap for extraction (default 512); a - capped file keeps one site per distinct callee first + --max-calls Per-file call-site cap for extraction (default 8192); a + capped file keeps one site per distinct callee first, + and a \`callers\`/\`refs\` answer counting it says so --no-ast Skip tree-sitter grammars even when present (regex tier) --workers \`index\`: extraction worker threads (default: cores-1, capped at 8; 0 or 1 forces the single-threaded path). @@ -1549,7 +1551,9 @@ export async function runCli(rawArgv: string[]): Promise { const ref = flags.positional; if (flags.raw) { if (ref) { - emit(JSON.stringify(rawCallersOf(scan, ref), null, 2) + "\n", flags.out); + const raw = rawCallersOf(scan, ref); + const coverage = coverageFor(scan, raw.name, { calls: true }); + emit(JSON.stringify(coverage ? { ...raw, coverage } : raw, null, 2) + "\n", flags.out); } else { const obj: Record = {}; for (const [name, sites] of buildRawCallerIndex(scan)) obj[name] = sites; @@ -1566,14 +1570,16 @@ export async function runCli(rawArgv: string[]): Promise { const named = rawCallerSitesFor(scan, ref).length; throw new Error( `no symbol named "${ref}" in the index` + - (named ? ` (${named} call site(s) use the name; \`callers --raw ${ref}\` lists them)` : ""), + (named ? ` (${named} call site(s) use the name; \`callers --raw ${ref}\` lists them)` : "") + + notIndexedNote(scan, ref), ); } // The LSP tier parses `Parent/name@file`; hand it that spelling of // whichever ref form was used. const reading = resolveSymbolRef(scan, ref)?.reading; const result = flags.lsp ? await callersWithLsp(scan, flags.repo, reading ? formatSymbolRef(reading) : ref, answer, { trustRepoConfig: flags.trustLspConfig }) : answer; - emit(JSON.stringify(result, null, 2) + "\n", flags.out); + const coverage = coverageFor(scan, reading?.name ?? ref, { calls: true }); + emit(JSON.stringify(coverage ? { ...result, coverage } : result, null, 2) + "\n", flags.out); } else { const index = buildCallerIndex(scan, undefined, { recall: flags.recall }); const obj: Record = {}; @@ -1634,19 +1640,31 @@ export async function runCli(rawArgv: string[]): Promise { concise: flags.concise, maxResults: flags.limit, }); + // stdout stays the bare array; where the symbol may be goes to stderr. + if (Array.isArray(result) && !result.length) { + const unseen = oversizedNaming(scan, flags.positional.replace(/@.*$/, "").replace(/^.*[#/]/, "")); + if (unseen.length) { + process.stderr.write( + `codeindex: not indexed for size but naming it: ${unseen.map((u) => `${u.file} (${u.size} bytes)`).join(", ")}; ` + + `re-index with --max-bytes ${Math.max(...unseen.map((u) => u.size))}\n`, + ); + } + } } else if (cmd === "refs") { // An unknown name still answers (defs: []): referencingFiles may name an // out-of-repo symbol (`useState`), which is exactly what one asks here. const statik = findReferences(scan, flags.positional); const leaf = resolveSymbolRef(scan, flags.positional)?.reading.name ?? flags.positional; const refs = flags.lsp ? await referencesWithLsp(scan, flags.repo, leaf, statik, { trustRepoConfig: flags.trustLspConfig }) : statik; - result = flags.concise ? conciseReferences(refs) : refs; + const answer = flags.concise ? conciseReferences(refs) : refs; + const coverage = coverageFor(scan, leaf, { calls: true }); + result = coverage ? { ...answer, coverage } : answer; } else { // A file with no symbols answers []; one the index does not hold is an // error, as it is for `complexity`. const known = new Set(scan.files.map((f) => f.rel)); const rel = resolveFileArg(flags.repo, flags.positional, (r) => known.has(r)); - if (rel === undefined) throw new Error(`no such file in the index: ${flags.positional}`); + if (rel === undefined) throw new Error(notIndexedFile(scan, flags.repo, flags.positional) ?? `no such file in the index: ${flags.positional}`); const overview = symbolsOverview(scan, rel); result = flags.concise ? overview.map((s) => symbolLocation(s, s.name)) : overview; } @@ -1681,7 +1699,7 @@ export async function runCli(rawArgv: string[]): Promise { const scan = await readScan(); const files = new Set(scan.files.map((f) => f.rel)); const rel = resolveFileArg(flags.repo, m[1]!, (r) => files.has(r)); - if (rel === undefined) throw new Error(`no such file in the index: ${m[1]}`); + if (rel === undefined) throw new Error(notIndexedFile(scan, flags.repo, m[1]!) ?? `no such file in the index: ${m[1]}`); emit(JSON.stringify(symbolAt(scan, rel, Number(m[2])), null, 2) + "\n", flags.out); } else if (cmd === "search") { if (!flags.positional) throw new Error('search needs a query: cli.mjs search "" --repo '); @@ -1991,7 +2009,7 @@ export async function runCli(rawArgv: string[]): Promise { // symbols: say which it is. const known = new Set(scan.files.map((f) => f.rel)); const hit = fileArgReadings(flags.repo, rel).find((r) => known.has(r)); - if (hit === undefined) throw new Error(`no such file in the index: ${rel}`); + if (hit === undefined) throw new Error(notIndexedFile(scan, flags.repo, rel) ?? `no such file in the index: ${rel}`); rel = hit; } emit(JSON.stringify(symbolComplexity(scan, rel, flags.limit), null, 2) + "\n", flags.out); diff --git a/src/extract/code.ts b/src/extract/code.ts index 64151f9..074d714 100644 --- a/src/extract/code.ts +++ b/src/extract/code.ts @@ -1,7 +1,7 @@ import type { CodeLiteral, CodeSymbol, ImportAlias, RawRef, RawRelation } from "../types.js"; import { LiteralCollector } from "./literals.js"; import { extractSymbols } from "../lang/registry.js"; -import { capCallSites, extractAst } from "../ast/extract.js"; +import { DEFAULT_MAX_CALLS, capCallSites, extractAst } from "../ast/extract.js"; import { extractReexports, extToLang, MAX_REEXPORTS } from "../lang/common.js"; import { extractImports, extractPackage } from "./imports.js"; import { sfcParts } from "./sfc.js"; @@ -20,6 +20,8 @@ export interface CodeInfo { summary?: string; // A cap truncated `symbols` — propagated onto the FileRecord. truncated?: true; + // `calls` reached the per-file call-site cap — propagated onto the FileRecord. + callsCapped?: true; // The AST tier failed on a file it has a grammar for — propagated onto the // FileRecord. astFallback?: true; @@ -81,7 +83,7 @@ function introducedAt(line: string, index: number): boolean { // Regex-tier call-site collection for files with no AST grammar — a // conservative `identifier(` scan so call data exists wasm-free (the AST tier // stays authoritative when available). Same contract as ast/extract's -// collector: deduped by name+line, capped at 512 by the same capCallSites +// collector: deduped by name+line+receiver, capped at 8192 by the same capCallSites // (so the file is scanned to its end), sorted by name then line. An // immediate `receiver.` prefix is captured too (`axios.get(` → receiver // "axios"; `a.b.c(` → receiver "b" — the group anchors to the segment right @@ -112,7 +114,7 @@ function introducedAt(line: string, index: number): boolean { export function collectCallsRegex( content: string, symbols: Pick[] = [], - maxCalls: number = 512, + maxCalls: number = DEFAULT_MAX_CALLS, ): { name: string; line: number; receiver?: string }[] { const out = new Map(); const ownDefLines = new Set(symbols.map((s) => `${s.name} ${s.line}`)); @@ -155,7 +157,9 @@ export function collectCallsRegex( continue; } } - if (!out.has(key)) out.set(key, receiver ? { name, line: i + 1, receiver } : { name, line: i + 1 }); + // Keyed with the receiver too, as the AST tier keys it: `a.f(b.f())` is two calls. + const site = `${key} ${receiver ?? ""}`; + if (!out.has(site)) out.set(site, receiver ? { name, line: i + 1, receiver } : { name, line: i + 1 }); } } return capCallSites([...out.values()], maxCalls); @@ -255,22 +259,23 @@ export function collectLiteralsRegex(content: string): CodeLiteral[] | undefined return literals.result(); } -// Two call lists as one: deduped by name+line, cut to the per-file cap by the -// same capCallSites both collectors use (the script's sites first, then the -// markup's), and sorted by name then line. +// Two call lists as one: deduped by name+line+receiver, cut to the per-file cap +// by the same capCallSites both collectors use (the script's sites first, then +// the markup's), and sorted by name then line. function mergeCalls( a: { name: string; line: number; receiver?: string }[], b: { name: string; line: number; receiver?: string }[], - maxCalls = 512, + maxCalls = DEFAULT_MAX_CALLS, ): { name: string; line: number; receiver?: string }[] { if (!b.length) return a; - const seen = new Set(a.map((c) => `${c.name} ${c.line}`)); + const key = (c: { name: string; line: number; receiver?: string }): string => `${c.name} ${c.line} ${c.receiver ?? ""}`; + const seen = new Set(a.map(key)); const out = [...a]; - for (const c of b) if (!seen.has(`${c.name} ${c.line}`)) out.push(c); + for (const c of b) if (!seen.has(key(c))) out.push(c); return capCallSites(out, maxCalls); } -// `opts.maxCallsPerFile` overrides the per-file call-site cap (default 512) on +// `opts.maxCallsPerFile` overrides the per-file call-site cap (default 8192) on // BOTH extraction tiers — AST and regex — so recall-oriented consumers can raise // it. Dedup/sort semantics are unchanged; absent, output is byte-identical. export function extractCode(rel: string, ext: string, content: string, opts: { maxCallsPerFile?: number } = {}): CodeInfo { @@ -339,6 +344,9 @@ export function extractCode(rel: string, ext: string, content: string, opts: { m ? { truncated: true as const } : {}), ...(astFallback ? { astFallback: true as const } : {}), + // A capped list holds exactly the cap; a file with exactly that many call + // sites reads as capped too, the safe side of the doubt. + ...(calls.length >= (opts.maxCallsPerFile ?? DEFAULT_MAX_CALLS) ? { callsCapped: true as const } : {}), summary: fileSummary(ext, content), refs, pkg: extractPackage(ext, content), diff --git a/src/mcp.ts b/src/mcp.ts index 40ee5d1..d1c261a 100644 --- a/src/mcp.ts +++ b/src/mcp.ts @@ -31,6 +31,7 @@ import { symbolComplexity, riskHotspots } from "./complexity.js"; import { renderMermaid } from "./viz.js"; import { resolutionReport } from "./resolution.js"; import { symbolsOverview, findSymbol, findReferences, explainNoCallers, rawCallersOf, resolveSymbolRef, symbolAt, withCallerIds } from "./query.js"; +import { coverageFor, notIndexedFile, notIndexedNote, type Coverage } from "./coverage.js"; import { fileArgReadings, resolveFileArg } from "./patharg.js"; import { EDGE_KINDS, dependencyPath, impactOf, neighborsOf } from "./traverse.js"; import { formatSymbolRef } from "./symref.js"; @@ -164,12 +165,19 @@ function errMessage(e: unknown): string { // An exact indexed spelling is taken as is, so no working call changes. A path // that names nothing indexed is an error with same-basename suggestions, since // the empty answer is precisely what hid the mistake. +// An answer with what it could not see (coverage.ts) beside it, when anything. +function withCoverage(answer: T, coverage: Coverage | undefined): T | (T & { coverage: Coverage }) { + return coverage ? { ...answer, coverage } : answer; +} + function indexedFile(scan: RepoScan, repo: string, file: string): string { const byRel = fileByRelFor(scan); if (byRel.has(file)) return file; const rel = relative(repo, resolve(repo, file.replaceAll("\\", "/"))).split(sep).join("/"); if (rel === ".." || rel.startsWith("../") || isAbsolute(rel)) throw new Error(`\`file\` is outside the repository: ${file}`); if (byRel.has(rel)) return rel; + const unseen = notIndexedFile(scan, repo, file); + if (unseen) throw new Error(unseen); const name = basename(rel); const near = scan.files.filter((f) => basename(f.rel) === name).map((f) => f.rel).sort(byStr).slice(0, 5); throw new Error( @@ -310,7 +318,8 @@ async function callTool( if (!lookup) throw new Error("callers with raw:true requires `name`"); if (args.lsp === true || args.recall === true) throw new Error("callers raw:true takes neither lsp nor recall"); if (args.withCaller === true) throw new Error("callers raw:true already names each site's enclosing symbol: it takes no withCaller"); - return JSON.stringify(rawCallersOf(scan, lookup), null, 2); + const raw = rawCallersOf(scan, lookup); + return JSON.stringify(withCoverage(raw, coverageFor(scan, raw.name, { calls: true })), null, 2); } const index = args.recall === true ? buildCallerIndex(scan, undefined, { recall: true }) : callerIndexFor(scan); const sited = (e: T): T => (args.withCaller === true ? withCallerIds(scan, e) : e); @@ -319,11 +328,12 @@ async function callTool( // whichever ref form was used. const reading = resolveSymbolRef(scan, lookup)?.reading; const lspRef = reading ? formatSymbolRef(reading) : lookup; + const coverage = coverageFor(scan, reading?.name ?? lookup, { calls: true }); const found = lookupCallerEntry(index, lookup); const entry = found && sited(found); if (entry) { const result = args.lsp === true ? await callersWithLsp(scan, repo, lspRef, entry, lsp) : entry; - return JSON.stringify(args.concise === true ? conciseCaller(result) : result, null, 2); + return JSON.stringify(withCoverage(args.concise === true ? conciseCaller(result) : result, coverage), null, 2); } // A symbol that exists but binds no site says how many sites name it // anyway; one that does not exist at all is an error, as it is for @@ -332,10 +342,11 @@ async function callTool( if (!absent) { const named = rawCallerSitesFor(scan, lookup).length; throw new Error( - `no symbol named "${lookup}" in the index` + (named ? ` (${named} call site(s) use the name; raw:true lists them)` : ""), + `no symbol named "${lookup}" in the index` + (named ? ` (${named} call site(s) use the name; raw:true lists them)` : "") + + notIndexedNote(scan, lookup), ); } - return JSON.stringify(args.lsp === true ? await callersWithLsp(scan, repo, lspRef, absent, lsp) : absent, null, 2); + return JSON.stringify(withCoverage(args.lsp === true ? await callersWithLsp(scan, repo, lspRef, absent, lsp) : absent, coverage), null, 2); } const obj: Record = {}; for (const [k, v] of index) obj[k] = args.concise === true ? conciseCaller(sited(v)) : sited(v); @@ -382,7 +393,7 @@ async function callTool( // qualified ref (`name@file`, `file#Parent/name`) resolved to. const leaf = resolveSymbolRef(scan, symName)?.reading.name ?? symName; const result = args.lsp === true ? await referencesWithLsp(scan, repo, leaf, statik, lsp) : statik; - return JSON.stringify(args.concise === true ? conciseReferences(result) : result, null, 2); + return JSON.stringify(withCoverage(args.concise === true ? conciseReferences(result) : result, coverageFor(scan, leaf, { calls: true })), null, 2); } if (name === "symbol_at") { const file = str(args.file); @@ -392,7 +403,7 @@ async function callTool( const scan = readScan(); const files = new Set(scan.files.map((f) => f.rel)); const rel = resolveFileArg(repo, file, (r) => files.has(r)); - if (rel === undefined) throw new Error(`no such file in the index: ${file}`); + if (rel === undefined) throw new Error(notIndexedFile(scan, repo, file) ?? `no such file in the index: ${file}`); return JSON.stringify(symbolAt(scan, rel, line), null, 2); } if (name === "lsp_status") { diff --git a/src/scan.ts b/src/scan.ts index c4254bf..45ca540 100644 --- a/src/scan.ts +++ b/src/scan.ts @@ -32,6 +32,9 @@ export interface RepoScan { // the files those left out in the directories the walk entered. Surfaced so // a consumer can report how much of the tree was filtered out of the index. excluded: number; + // The files left out for size (WalkResult.oversized), which queries name when + // their answer may lie there. Absent when there are none. + oversized?: { rel: string; size: number }[]; // Change-tracking flags. DERIVED ONLY — they never influence records or // ordering, so artifacts stay byte-identical whether or not anyone reads them. // @@ -66,7 +69,7 @@ export interface ScanOptions { ignoreDirs?: string[]; maxBytes?: number; maxFiles?: number; - // Per-file call-site cap for extraction (default 512, both AST and regex + // Per-file call-site cap for extraction (default 8192, both AST and regex // tiers). Raising it trades index size for call-graph recall; dedup/sort // semantics are unchanged. Absent, output is byte-identical to before. maxCallsPerFile?: number; @@ -160,6 +163,7 @@ export function buildCodeRecord( record.importedNames = code.importedNames; if (code.importAliases) record.importAliases = code.importAliases; record.truncated = code.truncated; + if (code.callsCapped) record.callsCapped = true; if (code.astFallback) record.astFallback = true; record.generated = code.generated; record.relations = code.relations; @@ -345,7 +349,7 @@ function* keptFiles( opts: ScanOptions, ): Generator<{ f: WalkedFile; kind: FileKind; lang: string }, WalkTotals, void> { const walkOpts = scanWalkOptions(root, opts); - const { files: walked, capped, excluded } = opts.precomputedWalk ?? walk(root, walkOpts); + const { files: walked, capped, excluded, oversized } = opts.precomputedWalk ?? walk(root, walkOpts); // Never index our own output (e.g. a committed `docs/ultraindex/`), or builds // would describe the encyclopedia instead of the code. const guard = selfIndexGuard(root, opts.out); @@ -363,12 +367,13 @@ function* keptFiles( } yield { f, kind: classify(f.rel, f.ext), lang: extToLang(f.ext) }; } - return { capped, excluded }; + return { capped, excluded, oversized }; } interface WalkTotals { capped: boolean; excluded: number; + oversized: { rel: string; size: number }[] | undefined; } // The files `codeindex index` writes into its --out dir, plus the @@ -389,12 +394,14 @@ function selfIndexGuard(root: string, out: string | undefined): ((f: WalkedFile) const up = relative(dir, resolve(root)); if (up === "") return (f) => !f.rel.includes("/") && isIndexArtifact(f.rel); if (up !== ".." && !up.startsWith(`..${sep}`) && !isAbsolute(up)) return undefined; - // Compared as a path, not a "/"-joined prefix: Windows walks with "\", and - // an --out spelled with "./" or ".." segments never matched either. - return (f) => { - const inside = relative(dir, f.abs); - return inside === "" || (inside !== ".." && !inside.startsWith(`..${sep}`) && !isAbsolute(inside)); - }; + // The out dir as the walk spells a rel: normalized by path.relative (an + // --out with "./" or ".." segments), joined with "/" (Windows walks with + // "\" but keys files with "/"). Computed once: a path.relative per file was + // a tenth of a query's time on a 67k-file repo. + const down = relative(resolve(root), dir); + if (down === ".." || down.startsWith(`..${sep}`) || isAbsolute(down)) return undefined; // --out outside the repo + const prefix = down.split(sep).join("/"); + return (f) => f.rel === prefix || f.rel.startsWith(`${prefix}/`); } // The code files this scan would extract, in the same order scanRepo sees them. @@ -606,6 +613,7 @@ export function scanRepo(root: string, opts: ScanOptions = {}): RepoScan { mtimes, capped: step.value.capped, excluded: step.value.excluded, + ...(step.value.oversized ? { oversized: step.value.oversized } : {}), contentUnchanged: allReused, cacheDirty, }; diff --git a/src/types.ts b/src/types.ts index f464944..a436e44 100644 --- a/src/types.ts +++ b/src/types.ts @@ -91,7 +91,10 @@ export const SCHEMA_VERSION = 5; // regex-tier call collection and import extraction were rewritten (same // answers, linear), and the fixes to resolution, the graph and markdown links // that follow — an older cache holds records none of them produced. -export const EXTRACTOR_VERSION = 16; +// v17: the per-file call-site cap went from 512 to 8192 and a capped record +// says so (callsCapped); a line calling one name on two receivers keeps both +// sites; Rust `crate::`/`super::` calls carry their path as the receiver. +export const EXTRACTOR_VERSION = 17; // How a file is classified. `code` gets symbol/import extraction; `doc` gets // link/heading extraction; the rest are catalogued but not deeply parsed. @@ -233,9 +236,9 @@ export interface FileRecord { refs: RawRef[]; // unresolved outbound links/imports pkg?: string; // Java: the file's `package` declaration — anchors source roots idents?: string[]; // distinctive identifiers referenced (transient — feeds `use` edges, not persisted) - // Unresolved call-site callee names (deduped by name+line, sorted by name then - // line; cap 512, where a capped file keeps one site per distinct callee - // first — see capCallSites). Transient-ish: consumed by the graph builder's + // Unresolved call-site callee names (deduped by name+line+receiver, sorted by + // name, line then receiver; cap 8192, where a capped file keeps one site per + // distinct callee first — see capCallSites — and sets `callsCapped`). Transient-ish: consumed by the graph builder's // global call resolution pass, not surfaced in the graph itself. `receiver` // is the simple name of the IMMEDIATE receiver of a qualified call — // `axios.get(...)` → {name: "get", receiver: "axios"}, `a.b.c(...)` → @@ -254,6 +257,9 @@ export interface FileRecord { // A per-file extraction cap truncated this record's symbols. Same doctrine as // the walk's `capped`: a bounded result says so instead of looking complete. truncated?: true; + // `calls` reached the per-file call-site cap (--max-calls): sites past it are + // missing, and a `callers` answer that counts this file says so. + callsCapped?: true; // A grammar was loaded for this file but its parse or walk failed, so the // record comes from the regex tier: fewer spans, no idents. Said rather than // silent, since the extraction profile claims the AST tier for the language. diff --git a/src/util.ts b/src/util.ts index f4c97ea..e18d897 100644 --- a/src/util.ts +++ b/src/util.ts @@ -219,10 +219,25 @@ export function rrf( // token (lowercased) is kept alongside its parts so an exact identifier query // ("HttpClient") still matches a compound definition. 1-char fragments are // dropped as noise; letter↔digit runs stay together ("sha1", "bm25"). +// The Unicode classes below cost twice the ASCII ones in V8, and ASCII is nearly +// every identifier and comment word: an ASCII string takes the ASCII spelling +// of the same classes, which reads it identically (on the TypeScript repo, +// `search` paid 130 ms more for the Unicode split alone). +const ASCII_CASE_1 = /([a-z0-9])([A-Z])/g; +const ASCII_CASE_2 = /([A-Z]+)([A-Z][a-z])/g; +const ASCII_GLUE = /[^a-z0-9_]+/g; +const ASCII_SPLIT = /[^A-Za-z0-9]+/; +const UNICODE_CASE_1 = /([\p{Ll}\p{N}])(\p{Lu})/gu; +const UNICODE_CASE_2 = /(\p{Lu}+)(\p{Lu}\p{Ll})/gu; +const UNICODE_GLUE = /[^\p{L}\p{N}_]+/gu; +const UNICODE_SPLIT = /[^\p{L}\p{N}]+/u; + export function subtokens(raw: string): string[] { - const folded = foldText(raw) - .replace(/([\p{Ll}\p{N}])(\p{Lu})/gu, "$1 $2") - .replace(/(\p{Lu}+)(\p{Lu}\p{Ll})/gu, "$1 $2"); + const ascii = !NON_ASCII.test(raw); + const text = ascii ? raw : foldText(raw); + const folded = ascii + ? text.replace(ASCII_CASE_1, "$1 $2").replace(ASCII_CASE_2, "$1 $2") + : text.replace(UNICODE_CASE_1, "$1 $2").replace(UNICODE_CASE_2, "$1 $2"); const out: string[] = []; const seen = new Set(); const push = (t: string): void => { @@ -232,8 +247,8 @@ export function subtokens(raw: string): string[] { }; // The whole identifier (lowercased) is a term of its own — but only for // single tokens: gluing a prose heading into one mega-token would index junk. - if (!/\s/.test(raw.trim())) push(foldText(raw).toLowerCase().replace(/[^\p{L}\p{N}_]+/gu, "")); - for (const part of folded.split(/[^\p{L}\p{N}]+/u)) push(part.toLowerCase()); + if (!/\s/.test(raw.trim())) push(text.toLowerCase().replace(ascii ? ASCII_GLUE : UNICODE_GLUE, "")); + for (const part of folded.split(ascii ? ASCII_SPLIT : UNICODE_SPLIT)) push(part.toLowerCase()); return out; } diff --git a/src/walk.ts b/src/walk.ts index f159522..5e51814 100644 --- a/src/walk.ts +++ b/src/walk.ts @@ -276,6 +276,10 @@ export interface WalkResult { // (node_modules, gitignored trees…) are not counted — their contents were // never even listed. excluded: number; + // The files rejected as over-max-bytes, in walk order: the one exclusion a + // query has to name, because the file is source the index cannot see + // (typescript-go's 1.4 MB checker.go). Absent when there are none. + oversized?: { rel: string; size: number }[]; } // The cap this walk USED to apply by default. Kept exported — it is part of the @@ -321,6 +325,7 @@ export function walk(root: string, opts: WalkOptions = {}): WalkResult { const out: WalkedFile[] = []; let capped = false; let excluded = 0; + const oversized: { rel: string; size: number }[] = []; const skip = (rel: string, reason: WalkSkip["reason"], directory = false, size?: number): void => { opts.onSkip?.({ rel, reason, directory, ...(size === undefined ? {} : { size }) }); }; @@ -470,6 +475,7 @@ export function walk(root: string, opts: WalkOptions = {}): WalkResult { else if ((name.endsWith(".min.js") || name.endsWith(".min.css")) && !opts.includeMinified) reason = "minified"; if (reason) { excluded++; + if (reason === "over-max-bytes") oversized.push({ rel: rel.split(sep).join("/"), size: st.size }); if (reason === "gitignored") skipIgnored(rel, rules, false, st.size); else skip(rel, reason, false, st.size); continue; @@ -502,7 +508,7 @@ export function walk(root: string, opts: WalkOptions = {}): WalkResult { } for (let i = subdirs.length - 1; i >= 0; i--) stack.push(subdirs[i]!); } - return { files: out, capped, excluded }; + return { files: out, capped, excluded, ...(oversized.length ? { oversized } : {}) }; } /** Compatibility reader; use readTextEx when empty, binary and unreadable differ. */ diff --git a/tests/eval-findings.test.ts b/tests/eval-findings.test.ts new file mode 100644 index 0000000..b8be01d --- /dev/null +++ b/tests/eval-findings.test.ts @@ -0,0 +1,180 @@ +import { describe, expect, it } from "vitest"; +import { spawnSync } from "node:child_process"; +import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { scanRepo, type ScanOptions } from "../src/scan.js"; +import { callerIndexForNames, lookupCallerEntry, rawCallerSitesFor } from "../src/callers.js"; + +// What an evaluation on large real repositories (vite, TypeScript's Go port, +// django, terraform, ripgrep) found an agent would be misled by: answers that +// silently left out what the index could not see, and three binding gaps. + +const CLI = fileURLToPath(new URL("../scripts/cli.mjs", import.meta.url)); + +function repo(files: Record): string { + const root = mkdtempSync(join(tmpdir(), "ci-eval-")); + for (const [rel, text] of Object.entries(files)) { + mkdirSync(dirname(join(root, rel)), { recursive: true }); + writeFileSync(join(root, rel), text); + } + return root; +} +const cli = (args: string[]) => { + const r = spawnSync(process.execPath, [CLI, ...args], { encoding: "utf8" }); + return { status: r.status, out: r.stdout, err: r.stderr }; +}; +const callersOf = (root: string, ref: string, opts: ScanOptions = {}) => { + const scan = scanRepo(root, opts); + return lookupCallerEntry(callerIndexForNames(scan, [ref.replace(/@.*/, "")]), ref); +}; +const lines = (entry: ReturnType) => entry?.callers.map((c) => `${c.file}:${c.line}`) ?? []; + +describe("the per-file call-site cap", () => { + const many = repo({ + "lib.ts": "export function foo(): void {}\n", + "many.ts": 'import { foo } from "./lib";\n' + "foo();\n".repeat(600), + }); + + it("keeps every site of a test file that calls one function hundreds of times", () => { + expect(callersOf(many, "foo")?.callers).toHaveLength(600); + }); + + it("an answer cut by the cap names the files it may be missing sites from", () => { + const r = cli(["callers", "foo", "--repo", many, "--max-calls", "10"]); + expect(r.status, r.err).toBe(0); + const answer = JSON.parse(r.out); + expect(answer.coverage.callCapped).toEqual(["many.ts"]); + expect(answer.coverage.hint).toMatch(/--max-calls/); + // Uncapped, the answer carries no coverage note at all. + expect(JSON.parse(cli(["callers", "foo", "--repo", many]).out).coverage).toBeUndefined(); + }); +}); + +describe("a file over --max-bytes", () => { + const big = repo({ + "go.mod": "module example.com/m\n\ngo 1.22\n", + "checker/checker.go": "package checker\n\n// NewChecker builds a checker.\nfunc NewChecker() int { return 1 }\n" + "// padding\n".repeat(200), + "checker/use.go": "package checker\n\nfunc use() int { return NewChecker() }\n", + }); + const small = ["--repo", big, "--max-bytes", "1000"]; + + it("outline says it was left out for size, and how to index it", () => { + const r = cli(["outline", "checker/checker.go", ...small]); + expect(r.status).toBe(2); + expect(r.err).toMatch(/checker\/checker\.go is \d+ bytes, over --max-bytes/); + expect(r.err).toMatch(/--max-bytes \d+/); + }); + + it("refs names the oversized file that mentions the symbol", () => { + const r = cli(["refs", "NewChecker", ...small]); + expect(r.status, r.err).toBe(0); + const answer = JSON.parse(r.out); + expect(answer.defs).toEqual([]); + expect(answer.coverage.notIndexed).toEqual([{ file: "checker/checker.go", size: expect.any(Number) }]); + }); + + it("callers says where the undeclared symbol may be", () => { + const r = cli(["callers", "NewChecker", ...small]); + expect(r.status).toBe(2); + expect(r.err).toMatch(/checker\/checker\.go/); + }); + + it("find says it too, on stderr, keeping stdout a bare array", () => { + const r = cli(["find", "NewChecker", ...small]); + expect(r.status, r.err).toBe(0); + expect(JSON.parse(r.out)).toEqual([]); + expect(r.err).toMatch(/checker\/checker\.go/); + }); + + it("an answer the size limit cannot have touched carries no note", () => { + expect(JSON.parse(cli(["refs", "use", ...small]).out).coverage).toBeUndefined(); + }); +}); + +describe("Rust paths", () => { + const crate = repo({ + "Cargo.toml": '[package]\nname = "x"\nversion = "0.1.0"\n', + "src/main.rs": "mod a;\nmod search;\n\nfn search(x: u8) -> u8 { x }\n\nfn run() -> u8 { search(1) }\n\nfn helper() -> u8 { 1 }\n", + "src/a.rs": "mod b;\n\npub fn top() -> u8 {\n crate::helper()\n}\n", + "src/a/b.rs": "pub fn deep() -> u8 {\n crate::helper() + super::top()\n}\n", + "src/search.rs": "pub fn s() {}\n", + }); + + it("crate:: reaches a private item of the crate root", () => { + expect(lines(callersOf(crate, "helper"))).toEqual(["src/a.rs:4", "src/a/b.rs:2"]); + }); + + it("super:: reaches the parent module", () => { + expect(lines(callersOf(crate, "top"))).toEqual(["src/a/b.rs:2"]); + }); + + it("a call never binds to a `mod` declaration of the same name", () => { + const entry = callersOf(crate, "search@src/main.rs"); + expect(entry?.def.kind).toBe("function"); + expect(lines(entry)).toEqual(["src/main.rs:6"]); + }); +}); + +describe("the same function name called twice on one line", () => { + const go = repo({ + "go.mod": "module example.com/m\n\ngo 1.22\n", + "compiler/compiler.go": "package compiler\n\nfunc NewProgram() int { return 1 }\n", + "incremental/incremental.go": "package incremental\n\nfunc NewProgram(x int) int { return x }\n", + "execute/watcher.go": [ + "package execute", + "", + "import (", + '\t"example.com/m/compiler"', + '\t"example.com/m/incremental"', + ")", + "", + "func Run() int { return incremental.NewProgram(compiler.NewProgram()) }", + "", + ].join("\n"), + }); + + it("keeps both calls when their receivers differ", () => { + const sites = rawCallerSitesFor(scanRepo(go), "NewProgram").map((s) => `${s.file}:${s.line}:${s.receiver}`); + expect(sites).toEqual(["execute/watcher.go:8:compiler", "execute/watcher.go:8:incremental"]); + expect(lines(callersOf(go, "NewProgram@compiler/compiler.go"))).toEqual(["execute/watcher.go:8"]); + expect(lines(callersOf(go, "NewProgram@incremental/incremental.go"))).toEqual(["execute/watcher.go:8"]); + }); + + it("lists a line once when both calls reach the same declaration", () => { + const ts = repo({ + "lib.ts": "export function foo(x: number): number { return x; }\n", + "use.ts": 'import { foo } from "./lib";\nexport const a = { foo };\nexport const y = foo(a.foo(1));\n', + }); + expect(lines(callersOf(ts, "foo"))).toEqual(["use.ts:3"]); + }); +}); + +describe("subtokens' ASCII fast path", () => { + // The Unicode spelling every input took before: an ASCII string must read + // exactly as it did. + const reference = (raw: string): string[] => { + const folded = raw.replace(/([\p{Ll}\p{N}])(\p{Lu})/gu, "$1 $2").replace(/(\p{Lu}+)(\p{Lu}\p{Ll})/gu, "$1 $2"); + const out: string[] = []; + const seen = new Set(); + const push = (t: string): void => { + if (t.length < 2 || seen.has(t)) return; + seen.add(t); + out.push(t); + }; + if (!/\s/.test(raw.trim())) push(raw.toLowerCase().replace(/[^\p{L}\p{N}_]+/gu, "")); + for (const part of folded.split(/[^\p{L}\p{N}]+/u)) push(part.toLowerCase()); + return out; + }; + + it("reads ASCII as the Unicode classes did", async () => { + const { subtokens } = await import("../src/util.js"); + const samples = [ + "HTTPServerError", "parseJSON2XML", "snake_case_name", "__proto__", "sha1sum", "bm25Score", "a.b.c(d)", + " leading and trailing ", "URLs and IDs", "x", "", "foo-bar_baz", "ABC", "aB", "Ab1Cd", "#!/usr/bin/env node", + "getHTTP2Stream", "k8sCluster", "IOError: can't open", "$scope.$apply()", "tab\tseparated\nlines", + ]; + for (const s of samples) expect(subtokens(s), s).toEqual(reference(s)); + }); +}); From 7fb505a3bddad6392a7bed69c737bab02e637d1d Mon Sep 17 00:00:00 2001 From: maxgfr <25312957+maxgfr@users.noreply.github.com> Date: Mon, 12 Oct 2026 12:07:50 +0200 Subject: [PATCH 2/2] fix(bind): super:: in an inline mod is its file; a Cargo target file is its own crate Found by the audit of the previous commit. Inside an inline mod block such as #[cfg(test)] mod tests, super::parse names the enclosing file, and was bound to the parent module's homonym (private items included). A file directly under src/bin/, examples/, tests/ or benches/ is a crate root of its own, so its crate::setup() bound to src/lib.rs instead of itself. --- scripts/engine.browser.mjs | 298 ++++++++++++++++++------------------ scripts/engine.mjs | 21 ++- src/bind.ts | 26 +++- tests/eval-findings.test.ts | 33 ++++ 4 files changed, 222 insertions(+), 156 deletions(-) diff --git a/scripts/engine.browser.mjs b/scripts/engine.browser.mjs index 4cc5520..bc61433 100644 --- a/scripts/engine.browser.mjs +++ b/scripts/engine.browser.mjs @@ -1,31 +1,31 @@ -var Vb=Object.defineProperty;var z=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var vc=(e,t)=>{for(var n in t)Vb(e,n,{get:t[n],enumerable:!0})};function dm(e){let t="";for(let r=0;r{"use strict";Jb=new TextDecoder("utf-8"),Kb=new TextDecoder("utf-16le"),lm=new TextEncoder,cm="0123456789abcdef";W=class e extends Uint8Array{static from(t,n){if(typeof t=="string"){if(n==="hex"){let l=new e(t.length>>1);for(let c=0;ca+l.byteLength,0),o=new e(r),s=0;for(let a of t){if(s+a.byteLength>r){o.set(a.subarray(0,r-s),s);break}o.set(a,s),s+=a.byteLength}return o}subarray(t,n){return super.subarray(t,n)}toString(t,n,r){let o=n!==void 0||r!==void 0?this.subarray(n??0,r??this.length):this;switch((t??"utf8").toLowerCase()){case"utf8":case"utf-8":return Jb.decode(o);case"utf16le":case"utf-16le":case"ucs2":case"ucs-2":return Kb.decode(o);case"latin1":case"binary":case"ascii":return dm(o);case"hex":{let s="";for(let a of o)s+=cm[a>>4]+cm[a&15];return s}case"base64":return btoa(dm(o));default:throw new TypeError(`Unknown encoding: ${t}`)}}swap16(){if(this.length%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t"/",exit:e=>{throw new Error(`process.exit(${e??0}) is not available in the browser build`)},hrtime:Object.assign(e=>{let t=performance.now(),n=Math.floor(t/1e3),r=Math.floor(t%1e3*1e6);return e?[n-e[0],r-e[1]]:[n,r]},{bigint:()=>BigInt(Math.floor(performance.now()*1e6))}),memoryUsage:()=>({rss:0,heapTotal:0,heapUsed:0,external:0,arrayBuffers:0}),stdout:{write:e=>(console.log(e.replace(/\n$/,"")),!0),isTTY:!1},stderr:{write:e=>(console.warn(e.replace(/\n$/,"")),!0),isTTY:!1},on:()=>O,emitWarning:e=>console.warn(e)}});var Te,ut,dn,_t=z(()=>{"use strict";I();Te="2.31.7",ut=5,dn=17});function um(e,t){let n="",r=0,o=-1,s=0,a=0;for(let l=0;l<=e.length;++l){if(l2){let c=n.lastIndexOf("/");c===-1?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),o=l,s=0;continue}else if(n.length!==0){n="",r=0,o=l,s=0;continue}}t&&(n+=n.length>0?"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(o+1,l):n=e.slice(o+1,l),r=l-o-1;o=l,s=0}else a===46&&s!==-1?++s:s=-1}return n}function Vo(e){if(e.length===0)return".";let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=um(e,!t);return r.length===0&&!t&&(r="."),r.length>0&&n&&(r+="/"),t?"/"+r:r}function Ne(e){return e.length>0&&e.charCodeAt(0)===47}function j(...e){if(e.length===0)return".";let t;for(let n of e)n.length>0&&(t=t===void 0?n:t+"/"+n);return t===void 0?".":Vo(t)}function ae(...e){let t="",n=!1;for(let o=e.length-1;o>=0&&!n;o--){let s=e[o];s===void 0||s.length===0||(t=t.length===0?s:s+"/"+t,n=s.charCodeAt(0)===47)}n||(t=t.length===0?"/":"/"+t);let r=um(t,!1);return r.length>0?"/"+r:"/"}function De(e,t){if(e===t)return"";let n=ae(e),r=ae(t);if(n===r)return"";let o=n.slice(1).split("/").filter(Boolean),s=r.slice(1).split("/").filter(Boolean),a=0;for(;a=1;--o)if(e.charCodeAt(o)===47){if(!r){n=o;break}}else r=!1;return n===-1?t?"/":".":t&&n===1?"//":e.slice(0,n)}function je(e,t){let n=0,r=-1,o=!0;for(let a=e.length-1;a>=0;--a)if(e.charCodeAt(a)===47){if(!o){n=a+1;break}}else r===-1&&(o=!1,r=a+1);if(r===-1)return"";let s=e.slice(n,r);return t!==void 0&&t!==s&&s.endsWith(t)?s.slice(0,s.length-t.length):s}function un(e){let t=-1,n=0,r=-1,o=!0,s=0;for(let a=e.length-1;a>=0;--a){let l=e.charCodeAt(a);if(l===47){if(!o){n=a+1;break}continue}r===-1&&(o=!1,r=a+1),l===46?t===-1?t=a:s!==1&&(s=1):t!==-1&&(s=-1)}return t===-1||r===-1||s===0||s===1&&t===r-1&&t===n+1?"":e.slice(t,r)}function Xb(e){let t=Ne(e)?"/":"",n=je(e),r=un(e),o=Me(e);return{root:t,dir:o==="."&&t===""?"":o,base:n,ext:r,name:n.slice(0,n.length-r.length)}}function Zb(e){let t=e.dir||e.root||"",n=e.base||(e.name??"")+(e.ext??"");return t?t===e.root?t+n:t+"/"+n:n}function Yb(e){return e}var q,jT,fe=z(()=>{"use strict";I();q={sep:"/",delimiter:":",normalize:Vo,isAbsolute:Ne,join:j,resolve:ae,relative:De,dirname:Me,basename:je,extname:un,parse:Xb,format:Zb,toNamespacedPath:Yb},jT={...q,posix:q,win32:q}});function mm(){return++fm}function Mt(e){let t=e.startsWith("/")?e:"/"+e,n=Vo(t);return n.length>1&&n.endsWith("/")?n.slice(0,-1):n}function zn(e,t){let n=new Error(`ENOENT: no such file or directory, ${t} '${e}'`);return n.code="ENOENT",n.errno=-2,n.path=e,n.syscall=t,n}function pm(e,t){let n=new Error(`ENOTDIR: not a directory, ${t} '${e}'`);return n.code="ENOTDIR",n.errno=-20,n.path=e,n.syscall=t,n}function ds(e){let t=Mt(e),n=ze.get(t);if(n){if(n.kind!=="dir")throw pm(e,"mkdir");return n}let r={kind:"dir",mtimeMs:0,mode:511,children:new Set};return ze.set(t,r),t!==_r&&ds(Me(t)).children.add(je(t)),r}function Qb(){ze.clear(),fm=0,hm=0,ze.set(_r,{kind:"dir",mtimeMs:0,mode:511,children:new Set})}function gm(e){for(let t of e){let n=Mt(t.path);ds(Me(n)).children.add(je(n)),ze.set(n,{kind:"file",size:t.size,mtimeMs:mm(),mode:438,bytes:t.bytes})}}function Jo(e,t){let n=Mt(e),r=ze.get(n);if(r&&r.kind==="file"){r.bytes=t,r.size=t.byteLength,r.mtimeMs=mm();return}gm([{path:n,size:t.byteLength,bytes:t}])}function ew(e){let t=ze.get(Mt(e));return!!t&&t.kind==="file"&&t.bytes!==void 0}function tw(){let e=0;for(let[t,n]of[...ze]){if(n.kind!=="file"||n.bytes!==void 0)continue;ze.delete(t);let r=ze.get(Me(t));r&&r.kind==="dir"&&r.children.delete(je(t)),e++}return e}function nw(){let e=0;for(let t of ze.values())t.kind==="file"&&t.bytes&&(e+=t.bytes.byteLength);return e}function rw(e,t,n){return{name:e,parentPath:t,path:t,isFile:()=>n==="file",isDirectory:()=>n==="dir",isSymbolicLink:fn,isBlockDevice:fn,isCharacterDevice:fn,isFIFO:fn,isSocket:fn}}function sw(e){return{size:e.kind==="file"?e.size:0,mode:e.mode,mtimeMs:e.mtimeMs,mtime:new Date(e.mtimeMs),isFile:()=>e.kind==="file",isDirectory:()=>e.kind==="dir",isSymbolicLink:fn,isBlockDevice:fn,isCharacterDevice:fn,isFIFO:fn,isSocket:fn}}function ne(e){return ze.has(Mt(e))}function Ae(e){let t=ze.get(Mt(e));if(!t)throw zn(e,"stat");return sw(t)}function st(e){let t=Mt(e);if(!ze.has(t))throw zn(e,"realpath");return t}function Gn(e,t){let n=Mt(e),r=ze.get(n);if(!r)throw zn(e,"scandir");if(r.kind!=="dir")throw pm(e,"scandir");let o=[...r.children];return t?.withFileTypes?o.map(s=>{let a=ze.get(n===_r?`/${s}`:`${n}/${s}`);return rw(s,n,a?.kind==="dir"?"dir":"file")}):o}function ie(e,t){let n=ze.get(Mt(e));if(!n)throw zn(e,"open");if(n.kind!=="file"){let o=new Error("EISDIR: illegal operation on a directory, read");throw o.code="EISDIR",o}if(!n.bytes)throw zn(e,"open");let r=W.from(n.bytes);return t?r.toString(typeof t=="string"?t:t.encoding):r}function ot(e,t){let n=typeof t=="string"?new TextEncoder().encode(t):t;Jo(e,n)}function Ko(e,t){let n=ze.get(Mt(e));if(!n)throw zn(e,"chmod");n.mode=t}function Zt(e,t){ds(e)}function br(e){let t=`${e}${hm++}`;return ds(t),t}function Ke(e,t){let n=Mt(e),r=ze.get(n);if(!r){if(t?.force)return;throw zn(e,"unlink")}if(r.kind==="dir"){if(!t?.recursive)throw Object.assign(new Error(`Path is a directory: rm returned EISDIR (is a directory) ${e}`),{code:"ERR_FS_EISDIR"});for(let s of[...r.children])Ke(n===_r?`/${s}`:`${n}/${s}`,t)}ze.delete(n);let o=ze.get(Me(n));o&&o.kind==="dir"&&o.children.delete(je(n))}function En(e,t){let n=Mt(e),r=ze.get(n);if(!r)throw zn(e,"rename");let o=Mt(t);if(o!==n){if(r.kind==="dir"){ds(o);for(let s of[...r.children])En(n===_r?`/${s}`:`${n}/${s}`,o===_r?`/${s}`:`${o}/${s}`)}else ds(Me(o)).children.add(je(o)),ze.set(o,r);Ke(n,{recursive:!0,force:!0})}}function Xo(){throw new Error("recursive filesystem watching is unavailable in the browser VFS")}var _r,ze,fm,fn,Hn,hm,Ee=z(()=>{"use strict";I();fe();_r="/",ze=new Map([[_r,{kind:"dir",mtimeMs:0,mode:511,children:new Set}]]),fm=0;fn=()=>!1;Hn=Ae;hm=0});function Zo(e,t,n){let r=new Error(`spawnSync ${e} ENOENT`);return r.code="ENOENT",r.errno=-2,r.syscall=`spawnSync ${e}`,r.path=e,{pid:0,output:[],stdout:"",stderr:"",status:null,signal:null,error:r}}function ym(e,t,n){let r=new Map,o={pid:void 0,stdin:null,stdout:null,stderr:null,on(a,l){let c=r.get(a)??[];return c.push(l),r.set(a,c),o},kill:()=>!1},s=new Error(`spawn ${e} ENOENT`);return s.code="ENOENT",s.syscall=`spawn ${e}`,s.path=e,Promise.resolve().then(()=>{for(let a of r.get("error")??[])a(s);for(let a of r.get("close")??[])a(null)}),o}var Yo=z(()=>{I()});function $e(e,t,n={}){let r=n.env??O.env,o=Zo(e,t,{cwd:n.cwd,input:n.input,encoding:"utf8",timeout:n.timeoutMs??12e4,maxBuffer:n.maxBufferBytes??64*1024*1024,env:e==="git"?{...r,...Rc}:r}),s=o.error?o.error.code:void 0;return{ok:!o.error&&o.status===0,status:o.status,stdout:o.stdout??"",stderr:o.stderr??(o.error?String(o.error.message):""),missing:s==="ENOENT",...s?{errorCode:s}:{}}}function Yt(e){let t=_m.get(e);if(t!==void 0)return t;let n=$e(O.platform==="win32"?"where":"which",[e]),r=n.ok&&n.stdout.trim().length>0;return _m.set(e,r),r}function ri(e){return e.toLowerCase().replace(/^https?:\/\//,"").replace(/^git@/,"").replace(/\.git$/,"").replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,120)}function iw(e,t){return e.length<=t?e:e.slice(0,t)+` -\u2026 [truncated ${e.length-t} chars]`}function ow(e,t){let n=e.replace(/\s+/g," ").trim();if(n.length<=t)return n;let r=n.slice(0,t).replace(/\s+\S*$/,"");return r||(r=n.slice(0,t)),(r.match(/`/g)?.length??0)%2===1&&(r=r.replace(/`[^`]*$/,"")),r.lastIndexOf("[")>r.lastIndexOf("]")&&(r=r.slice(0,r.lastIndexOf("["))),r.replace(/\s+$/,"")+"\u2026"}function bt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function qn(e){return wm.test(e)?e.normalize("NFKD").replace(/[̀-ͯ]/g,""):e}function us(e,t){let n=new Set,r=[];for(let o of qn(e).split(xm)){if(!o)continue;let s=o.toLowerCase();o.length<2||bm.has(s)&&!t?.(o)||n.has(s)||(n.add(s),r.push(o))}return r}function si(e,t){let n=[];for(let r of qn(e).split(xm))r&&(r.length<2||bm.has(r.toLowerCase())&&!t?.(r))&&n.push(r);return n}function aw(e){let t=us(e),n=r=>{let o=0;return/\d/.test(r)&&(o+=3),/[A-Z]/.test(r)&&!/^[A-Z0-9]+$/.test(r)&&(o+=2),/_/.test(r)&&(o+=2),r.length>=8?o+=1.5:r.length>=5&&(o+=.5),o};return t.map((r,o)=>({k:r,s:n(r),i:o})).sort((r,o)=>o.s-r.s||r.i-o.i).map(r=>r.k)}function Cc(e,t,n=60){let r=new Map;for(let o of e)o.forEach((s,a)=>{let l=t(s);r.set(l,(r.get(l)??0)+1/(n+a+1))});return r}function mn(e){let t=!wm.test(e),n=t?e:qn(e),r=t?n.replace(lw,"$1 $2").replace(cw,"$1 $2"):n.replace(fw,"$1 $2").replace(mw,"$1 $2"),o=[],s=new Set,a=l=>{l.length<2||s.has(l)||(s.add(l),o.push(l))};/\s/.test(e.trim())||a(n.toLowerCase().replace(t?dw:pw,""));for(let l of r.split(t?uw:gw))a(l.toLowerCase());return o}function Qo(e){if(e.length<4)return e;let t=e;return t.endsWith("ies")&&t.length>4?t=t.slice(0,-3)+"y":t.endsWith("sses")?t=t.slice(0,-2):(t.endsWith("ses")&&t.length>4||t.endsWith("s")&&!t.endsWith("ss")&&!t.endsWith("us")&&!t.endsWith("is"))&&(t=t.slice(0,-1)),t.endsWith("ying")&&t.length>5?t=t.slice(0,-4)+"y":t.endsWith("ing")&&t.length>5?t=t.slice(0,-3):t.endsWith("ed")&&t.length>4&&(t=t.slice(0,-2)),t.endsWith("e")&&t.length>3&&(t=t.slice(0,-1)),t}var Rc,_m,bm,wm,xm,lw,cw,dw,uw,fw,mw,pw,gw,et=z(()=>{"use strict";I();Yo();Rc={LC_ALL:"C",LANGUAGE:""};_m=new Map;bm=new Set(["the","a","an","is","are","was","were","be","been","being","do","does","did","how","what","why","when","where","which","who","whom","this","that","these","those","of","in","on","to","for","with","and","or","but","if","then","else","than","as","at","by","from","into","about","it","its","i","you","we","they","he","she","there","here","can","could","should","would","will","shall","may","might","must","have","has","had","not","no","yes","so","such","only","any","some","all","get","set","use","used","using","work","works","working","handle","handled","happen","happens","default","value","values","please","explain","tell","me","my","our"]),wm=/[^\x00-\x7F]/;xm=/[^\p{L}\p{N}_]+/u;lw=/([a-z0-9])([A-Z])/g,cw=/([A-Z]+)([A-Z][a-z])/g,dw=/[^a-z0-9_]+/g,uw=/[^A-Za-z0-9]+/,fw=/([\p{Ll}\p{N}])(\p{Lu})/gu,mw=/(\p{Lu}+)(\p{Lu}\p{Ll})/gu,pw=/[^\p{L}\p{N}_]+/gu,gw=/[^\p{L}\p{N}]+/u});function hw(e){let t="";for(let n=0;n=e.length))return s?{source:"(?!)",end:n}:{source:r?`[^/${o}]`:`(?!/)[${o}]`,end:n}}function Sm(e){return e==="\\"||e==="]"||e==="^"||e==="["||e==="-"?"\\"+e:e}function ms(e,t,n){let r=[],o=t?bt(t)+"/":"",s=e.split(/\r?\n/);for(let a=0;af===u:f=>f.startsWith(u)&&o.test(f)}let{head:s,whole:a}=Mc(e);if(a)return(c,d)=>d===s&&c.startsWith(r);if(e[0]==="*"&&e[1]!=="*"){let c=Mc(e.slice(1));if(c.whole)return(d,u)=>u.endsWith(c.head)&&d.startsWith(r)}let l=new RegExp(`^${t}$`);return(c,d)=>c.startsWith(r)&&l.test(d)}function ii(e,t,n){let r=ea(e,t,n);return r!==void 0&&!r.negated}function ea(e,t,n){let r=t.slice(t.lastIndexOf("/")+1);for(let o=e.length-1;o>=0;o--){let s=e[o];if(!(s.dirOnly&&!n)&&(s.test?s.test(t,r):s.re.test(t)))return s}}var yw,Ac=z(()=>{"use strict";I();et();yw={alnum:"A-Za-z0-9",alpha:"A-Za-z",blank:" \\t",cntrl:"\\x00-\\x1f\\x7f",digit:"0-9",graph:"\\x21-\\x7e",lower:"a-z",print:"\\x20-\\x7e",punct:"!-\\/:-@\\[-`{-~",space:" \\t\\n\\r\\f\\v",upper:"A-Z",xdigit:"0-9A-Fa-f"}});function ps(e){let t;try{t=ie(e)}catch{return ww}let n=t.length,r={buf:t,bytes:n,ok:!0,binary:!1};if(n>=2&&t[0]===255&&t[1]===254){let s=t.subarray(2,2+(n-2&-2)).toString("utf16le");return{...r,text:s,encoding:"utf16le",byteAddressable:!1,bodyStart:2}}if(n>=2&&t[0]===254&&t[1]===255){let s=W.from(t.subarray(2,2+(n-2&-2)));return s.swap16(),{...r,text:s.toString("utf16le"),encoding:"utf16be",byteAddressable:!1,bodyStart:2}}if(n>=3&&t[0]===239&&t[1]===187&&t[2]===191)return{...r,text:t.subarray(3).toString("utf8"),encoding:"utf8-bom",byteAddressable:!0,bodyStart:3};if(t.includes(0))return{...r,text:"",encoding:null,binary:!0,byteAddressable:!1,bodyStart:0};let o=t.toString("utf8");return o.includes("\uFFFD")&&!Sw(t)?{...r,text:t.toString("latin1"),encoding:"latin1",byteAddressable:!1,bodyStart:0}:{...r,text:o,encoding:"utf8",byteAddressable:!0,bodyStart:0}}function Sw(e){try{return xw.decode(e),!0}catch{return!1}}function kw(e){let t=new Int32Array(e.length+1),n=0;for(let r=0;r=55296&&o<=56319&&r+1{"use strict";I();Ee();ww={text:"",buf:W.alloc(0),encoding:null,binary:!1,bytes:0,ok:!1,byteAddressable:!1,bodyStart:0};xw=new TextDecoder("utf-8",{fatal:!0});Ic=class{constructor(t){this.text=t;this.ascii=!/[^\x00-\x7F]/.test(t),this.table=this.ascii?null:kw(t),this.lineStarts=Ew(t)}text;ascii;table;lineStarts;byteOf(t){if(this.ascii)return t;let n=this.table;return t<=0?0:t>=n.length?n[n.length-1]:n[t]}lineColOf(t){let n=this.lineStarts,r=0,o=n.length-1;for(;r>1;n[s]<=t?r=s:o=s-1}return{line:r+1,col:t-n[r]+1}}get lineCount(){return this.lineStarts.length}}});function vw(e){let t=[...Tc].map(o=>`:(glob)**/${o}/**`),n=$e("git",["-C",e,"ls-files","-z","--",...t]);if(!n.ok)return;let r=new Set;for(let o of n.stdout.split("\0")){let s=0;for(let a=o.indexOf("/");a!==-1;a=o.indexOf("/",s))Tc.has(o.slice(s,a))&&r.add(o.slice(0,a)),s=a+1}return r}function Cw(e,t){return e===wr||e===Rw||t.has(e)||e.startsWith(".codeindex-edit-")}function Em(e,t){let n=t.find(o=>o.name===wr);if(!n)return;let r=j(e,wr);try{if(n.isDirectory())return r;let o=Ae(r);if(o.isDirectory())return r;if(!o.isFile()||o.size>Mw)return;let s=ie(r,"utf8");if(!s.startsWith(km))return;let a=s.slice(km.length).replace(/[\r\n]+$/,"");if(!a)return;let l=ae(e,a),c=j(l,"commondir");return ne(c)?ae(l,ie(c,"utf8").trim()):l}catch{return}}function vm(e){if(!e)return"";try{let t=j(e,"info","exclude");return ne(t)?se(t):""}catch{return""}}function Aw(e){let t=d=>{if(ne(j(d,wr)))try{return Em(d,Gn(d,{withFileTypes:!0}).filter(u=>u.name===wr))}catch{return}};if(t(e))return[];let n=[],r;for(let d=e,u=Me(d);u!==d&&(n.push(u),r=t(u),!r);d=u,u=Me(d));if(!r)return[];let o=n[n.length-1],s=d=>d.split("/").join("/"),a=s(De(o,e))+"/",l=d=>s(De(e,d)),c=ms(vm(r),"",l(j(r,"info","exclude")));for(let d of n.reverse()){let u=j(d,".gitignore");ne(u)&&c.push(...ms(se(u),s(De(o,d)),l(u)))}return c.map(d=>({...d,test:(u,f)=>d.test?d.test(a+u,f):d.re.test(a+u)}))}function Xe(e,t={}){let n=t.maxFileBytes??1048576,r=t.maxFiles??1/0,o=t.gitignore!==!1,s=t.ignoreDirs?new Set(t.ignoreDirs):vn,a=!t.ignoreDirs&&t.trackedBuildDirs!==!1,l=null,c=k=>(l===null&&(l=vw(e)),l?.has(k)??!1),d=(k,v,T)=>Cw(k,s)&&!(a&&Tc.has(k)&&!(o&&T.length&&ii(T,v,!0))&&c(v)),u=[],f=!1,m=0,p=[],g=(k,v,T=!1,F)=>{t.onSkip?.({rel:k,reason:v,directory:T,...F===void 0?{}:{size:F}})},h=(k,v,T,F)=>{if(!t.onSkip)return;let R=ea(v,k,T);t.onSkip({rel:k,reason:"gitignored",directory:T,...F===void 0?{}:{size:F},...R?.source!==void 0?{rule:{source:R.source,line:R.line,pattern:R.pattern}}:{}})},_;try{_=st(e)}catch{return{files:u,capped:f,excluded:m}}let y=k=>k===_||k.startsWith(_+"/"),b=[{dir:e,rel:"",rules:o?Aw(_):[]}],x=new Set;e:for(;b.length;){let k=b.pop(),v=[],T;try{T=st(k.dir)}catch{continue}if(x.has(T)||(x.add(T),!y(T)))continue;let F;try{F=Gn(k.dir,{withFileTypes:!0}).sort((A,S)=>A.nameS.name?1:0)}catch{continue}let R=F.some(A=>A.name===wr)?Em(k.dir,F):void 0;if(k.rel&&R){m++,g(k.rel,"nested-repo",!0);continue}let C=k.rules;if(o&&!k.rel){let A=ms(vm(R),"",".git/info/exclude");A.length&&(C=[...C,...A])}if(o&&F.some(A=>A.name===".gitignore")){let A=k.rel?`${k.rel}/.gitignore`:".gitignore",S=ms(se(j(k.dir,".gitignore")),k.rel,A);S.length&&(C=[...C,...S])}for(let A of F){let S=A.name,w=j(k.dir,S),E=k.rel?`${k.rel}/${S}`:S,P=A.isSymbolicLink();if(S===wr)continue;if(A.isDirectory()&&d(S,E,C)){g(E,"ignore-dir",!0);continue}let N;try{N=P?Ae(w):Hn(w)}catch{g(E,P?"broken-symlink":"unreadable");continue}if(N.isDirectory()){if(d(S,E,C)){g(E,"ignore-dir",!0);continue}if(P){g(E,"directory-symlink",!0);continue}if(o&&C.length&&ii(C,E,!0)){h(E,C,!0);continue}if(t.filter&&!t.filter({rel:E,abs:w,directory:!0})){g(E,"filter",!0);continue}v.push({dir:w,rel:E,rules:C});continue}if(!N.isFile())continue;let L=un(S).toLowerCase(),H;if(o&&C.length&&ii(C,E,!1)?H="gitignored":t.filter&&!t.filter({rel:E,abs:w,directory:!1})?H="filter":N.size>n&&!t.includeOversize?H="over-max-bytes":ta.has(S.toLowerCase())&&!t.includeLockfiles?H="lockfile":(t.binaryExtensions??na).has(L)&&!t.includeBinary?H="binary-ext":(S.endsWith(".min.js")||S.endsWith(".min.css"))&&!t.includeMinified&&(H="minified"),H){m++,H==="over-max-bytes"&&p.push({rel:E.split("/").join("/"),size:N.size}),H==="gitignored"?h(E,C,!1,N.size):g(E,H,!1,N.size);continue}if(P){try{if(!y(st(w))){g(E,"symlink-outside-root");continue}}catch{g(E,"broken-symlink");continue}if(!t.includeFileSymlinks){g(E,"file-symlink");continue}}if(u.length>=r){f=!0;break e}u.push({rel:E.split("/").join("/"),abs:w,size:N.size,ext:L,mtimeMs:N.mtimeMs})}for(let A=v.length-1;A>=0;A--)b.push(v[A])}return{files:u,capped:f,excluded:m,...p.length?{oversized:p}:{}}}function se(e){return ps(e).text}var vn,Tc,wr,Rw,km,Mw,ta,na,Iw,Ze=z(()=>{"use strict";I();Ee();fe();Ac();oi();et();oi();vn=new Set([".git","node_modules",".pnpm","bower_components","vendor","dist","build","out","target",".next",".nuxt",".svelte-kit",".turbo","coverage","__pycache__",".venv","venv",".tox",".mypy_cache",".pytest_cache",".gradle",".idea",".vscode",".cache","tmp",".ultraindex",".codeindex","Pods","DerivedData",".terraform","elm-stuff",".dart_tool"]),Tc=new Set(["build","out","target","tmp"]);wr=".git",Rw=".codeindex";km="gitdir: ",Mw=4096;ta=new Set(["package-lock.json","npm-shrinkwrap.json","yarn.lock","pnpm-lock.yaml","bun.lockb","composer.lock","cargo.lock","poetry.lock","pipfile.lock","gemfile.lock","go.sum","flake.lock","packages.lock.json","podfile.lock","mix.lock"]),na=new Set([".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico",".icns",".svg",".pdf",".zip",".gz",".tar",".tgz",".bz2",".xz",".7z",".rar",".jar",".war",".class",".so",".dylib",".dll",".exe",".bin",".o",".a",".wasm",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".wav",".flac",".ogg",".lock",".min.js",".map"]),Iw=2e4});function $(e,t){return et?1:0}function xr(e){return(t,n)=>$(e(t),e(n))}var le=z(()=>{"use strict";I()});function Qt(e){let t=$e("git",["-C",e,"rev-parse","HEAD"]);return t.ok?t.stdout.trim().slice(0,Tw):void 0}function Oc(e){let t=$e("git",[...wt(e),"hash-object","-t","tree","--stdin"],{input:""});return t.ok?t.stdout.trim():void 0}function Nc(e){return $e("git",["-C",e,"rev-parse","--is-inside-work-tree"]).ok}function Pc(e,t){let n=c=>$e("git",[...wt(e),"rev-parse","--verify","--quiet",`${c}^{commit}`]).ok,r=c=>{let d=$e("git",[...wt(e),"merge-base",c,"HEAD"]);return d.ok?d.stdout.trim():void 0};if(t){if(Fc(t)||!n(t))return{error:`base ref "${t}" not found (tried git rev-parse --verify)`};let c=r(t);return c?{ref:t,mergeBase:c}:{error:`no merge-base between "${t}" and HEAD`}}let o=$e("git",[...wt(e),"symbolic-ref","--quiet","refs/remotes/origin/HEAD"]),s=[...o.ok?[o.stdout.trim().replace("refs/remotes/","")]:[],"origin/main","origin/master","main","master"];for(let c of s){if(!n(c))continue;let d=r(c);if(d)return{ref:c,mergeBase:d}}let a=$e("git",[...wt(e),"rev-parse","--verify","--quiet","HEAD"]);if(a.ok)return{ref:"HEAD",mergeBase:a.stdout.trim(),note:"base: HEAD (no default branch found \u2014 reviewing uncommitted work)"};let l=Oc(e);return l?{ref:ra,mergeBase:l,note:"no commits yet \u2014 every file is reviewed as added"}:{error:"cannot resolve HEAD, nor the empty tree"}}function Lc(e,t){let n=[],r=$e("git",[...wt(e),"diff","--no-color","--relative","-z","-M","--name-status",...$c(t)]);if(r.ok){let a=r.stdout.split("\0"),l=0;for(;l[a.path,a])),s=$e("git",[...wt(e),"diff","--no-color","--relative","-z","-M","--numstat",...$c(t)]);if(s.ok){let a=s.stdout.split("\0"),l=0;for(;l0){a.startsWith("\\")||s--;continue}if(a.startsWith("+++ ")){let l=Fw(a.slice(4));if(l===void 0){o=void 0;continue}o=n.get(l)??[],n.set(l,o)}else if(a.startsWith("@@")){let l=a.match(/^@@ -\d+(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);if(!l)continue;let c=Number(l[2]),d=l[3]===void 0?1:Number(l[3]);if(s=(l[1]===void 0?1:Number(l[1]))+d,!o)continue;d===0?o.push({start:Math.max(c,1),end:Math.max(c,1),approx:!0}):o.push({start:c,end:c+d-1})}}return n}function Fw(e){let t=e.endsWith(" ")?e.slice(0,-1):e;if(t.startsWith('"')&&t.endsWith('"')&&t.length>=2&&(t=Nw(t)),t!=="/dev/null")return t.startsWith("b/")?t.slice(2):t}function Nw(e){let t=W.from(e.slice(1,-1),"utf8"),n=[];for(let r=0;r=t.length){n.push(o);continue}let s=t[++r];s>=48&&s<=55?(n.push(parseInt(t.toString("latin1",r,r+3),8)&255),r+=2):n.push(Ow[String.fromCharCode(s)]??s)}return W.from(n).toString("utf8")}function sa(e){let t=$e("git",[...wt(e),"ls-files","--others","--exclude-standard","-z"]);return t.ok?t.stdout.split("\0").filter(n=>n.length>0):[]}function jc(e,t){let n=$e("git",[...wt(e),"rev-parse","--show-prefix","--git-path","shallow","--verify","--quiet","HEAD"]);if(n.missing)return{ok:!1,error:"git was not found on PATH"};if(!n.ok)return{ok:!1,error:n.status===1?"no commits yet (empty repository)":Cm(n.stderr)||"not a git repository"};let[r="",o="",s=""]=n.stdout.split(` -`),a=Dw(e,t),l=jw(ae(e,o)),c=[s,...a.exclude,...l.map(g=>`^${g}`)],d=JSON.stringify([ae(e),c,a.args]),u=Sr.get(d);if(u)return Sr.delete(d),Sr.set(d,u),{ok:!0,log:u};let f=[...wt(e),"log","--no-color","--no-renames",...a.args,"--pretty=format:%x1e","--name-only","-z","--stdin"];r&&f.push("--full-history","--full-diff","--",".");let m=Zo("git",f,{input:c.join(` +var Xb=Object.defineProperty;var H=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var Rc=(e,t)=>{for(var n in t)Xb(e,n,{get:t[n],enumerable:!0})};function um(e){let t="";for(let r=0;r{"use strict";Zb=new TextDecoder("utf-8"),Yb=new TextDecoder("utf-16le"),cm=new TextEncoder,dm="0123456789abcdef";W=class e extends Uint8Array{static from(t,n){if(typeof t=="string"){if(n==="hex"){let l=new e(t.length>>1);for(let c=0;ca+l.byteLength,0),o=new e(r),s=0;for(let a of t){if(s+a.byteLength>r){o.set(a.subarray(0,r-s),s);break}o.set(a,s),s+=a.byteLength}return o}subarray(t,n){return super.subarray(t,n)}toString(t,n,r){let o=n!==void 0||r!==void 0?this.subarray(n??0,r??this.length):this;switch((t??"utf8").toLowerCase()){case"utf8":case"utf-8":return Zb.decode(o);case"utf16le":case"utf-16le":case"ucs2":case"ucs-2":return Yb.decode(o);case"latin1":case"binary":case"ascii":return um(o);case"hex":{let s="";for(let a of o)s+=dm[a>>4]+dm[a&15];return s}case"base64":return btoa(um(o));default:throw new TypeError(`Unknown encoding: ${t}`)}}swap16(){if(this.length%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t"/",exit:e=>{throw new Error(`process.exit(${e??0}) is not available in the browser build`)},hrtime:Object.assign(e=>{let t=performance.now(),n=Math.floor(t/1e3),r=Math.floor(t%1e3*1e6);return e?[n-e[0],r-e[1]]:[n,r]},{bigint:()=>BigInt(Math.floor(performance.now()*1e6))}),memoryUsage:()=>({rss:0,heapTotal:0,heapUsed:0,external:0,arrayBuffers:0}),stdout:{write:e=>(console.log(e.replace(/\n$/,"")),!0),isTTY:!1},stderr:{write:e=>(console.warn(e.replace(/\n$/,"")),!0),isTTY:!1},on:()=>F,emitWarning:e=>console.warn(e)}});var Ie,ut,fn,bt=H(()=>{"use strict";$();Ie="2.31.7",ut=5,fn=17});function fm(e,t){let n="",r=0,o=-1,s=0,a=0;for(let l=0;l<=e.length;++l){if(l2){let c=n.lastIndexOf("/");c===-1?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),o=l,s=0;continue}else if(n.length!==0){n="",r=0,o=l,s=0;continue}}t&&(n+=n.length>0?"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(o+1,l):n=e.slice(o+1,l),r=l-o-1;o=l,s=0}else a===46&&s!==-1?++s:s=-1}return n}function Jo(e){if(e.length===0)return".";let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=fm(e,!t);return r.length===0&&!t&&(r="."),r.length>0&&n&&(r+="/"),t?"/"+r:r}function Pe(e){return e.length>0&&e.charCodeAt(0)===47}function j(...e){if(e.length===0)return".";let t;for(let n of e)n.length>0&&(t=t===void 0?n:t+"/"+n);return t===void 0?".":Jo(t)}function le(...e){let t="",n=!1;for(let o=e.length-1;o>=0&&!n;o--){let s=e[o];s===void 0||s.length===0||(t=t.length===0?s:s+"/"+t,n=s.charCodeAt(0)===47)}n||(t=t.length===0?"/":"/"+t);let r=fm(t,!1);return r.length>0?"/"+r:"/"}function je(e,t){if(e===t)return"";let n=le(e),r=le(t);if(n===r)return"";let o=n.slice(1).split("/").filter(Boolean),s=r.slice(1).split("/").filter(Boolean),a=0;for(;a=1;--o)if(e.charCodeAt(o)===47){if(!r){n=o;break}}else r=!1;return n===-1?t?"/":".":t&&n===1?"//":e.slice(0,n)}function We(e,t){let n=0,r=-1,o=!0;for(let a=e.length-1;a>=0;--a)if(e.charCodeAt(a)===47){if(!o){n=a+1;break}}else r===-1&&(o=!1,r=a+1);if(r===-1)return"";let s=e.slice(n,r);return t!==void 0&&t!==s&&s.endsWith(t)?s.slice(0,s.length-t.length):s}function mn(e){let t=-1,n=0,r=-1,o=!0,s=0;for(let a=e.length-1;a>=0;--a){let l=e.charCodeAt(a);if(l===47){if(!o){n=a+1;break}continue}r===-1&&(o=!1,r=a+1),l===46?t===-1?t=a:s!==1&&(s=1):t!==-1&&(s=-1)}return t===-1||r===-1||s===0||s===1&&t===r-1&&t===n+1?"":e.slice(t,r)}function Qb(e){let t=Pe(e)?"/":"",n=We(e),r=mn(e),o=Ce(e);return{root:t,dir:o==="."&&t===""?"":o,base:n,ext:r,name:n.slice(0,n.length-r.length)}}function ew(e){let t=e.dir||e.root||"",n=e.base||(e.name??"")+(e.ext??"");return t?t===e.root?t+n:t+"/"+n:n}function tw(e){return e}var J,U$,me=H(()=>{"use strict";$();J={sep:"/",delimiter:":",normalize:Jo,isAbsolute:Pe,join:j,resolve:le,relative:je,dirname:Ce,basename:We,extname:mn,parse:Qb,format:ew,toNamespacedPath:tw},U$={...J,posix:J,win32:J}});function pm(){return++mm}function Mt(e){let t=e.startsWith("/")?e:"/"+e,n=Jo(t);return n.length>1&&n.endsWith("/")?n.slice(0,-1):n}function Gn(e,t){let n=new Error(`ENOENT: no such file or directory, ${t} '${e}'`);return n.code="ENOENT",n.errno=-2,n.path=e,n.syscall=t,n}function gm(e,t){let n=new Error(`ENOTDIR: not a directory, ${t} '${e}'`);return n.code="ENOTDIR",n.errno=-20,n.path=e,n.syscall=t,n}function ds(e){let t=Mt(e),n=He.get(t);if(n){if(n.kind!=="dir")throw gm(e,"mkdir");return n}let r={kind:"dir",mtimeMs:0,mode:511,children:new Set};return He.set(t,r),t!==br&&ds(Ce(t)).children.add(We(t)),r}function nw(){He.clear(),mm=0,ym=0,He.set(br,{kind:"dir",mtimeMs:0,mode:511,children:new Set})}function hm(e){for(let t of e){let n=Mt(t.path);ds(Ce(n)).children.add(We(n)),He.set(n,{kind:"file",size:t.size,mtimeMs:pm(),mode:438,bytes:t.bytes})}}function Ko(e,t){let n=Mt(e),r=He.get(n);if(r&&r.kind==="file"){r.bytes=t,r.size=t.byteLength,r.mtimeMs=pm();return}hm([{path:n,size:t.byteLength,bytes:t}])}function rw(e){let t=He.get(Mt(e));return!!t&&t.kind==="file"&&t.bytes!==void 0}function sw(){let e=0;for(let[t,n]of[...He]){if(n.kind!=="file"||n.bytes!==void 0)continue;He.delete(t);let r=He.get(Ce(t));r&&r.kind==="dir"&&r.children.delete(We(t)),e++}return e}function iw(){let e=0;for(let t of He.values())t.kind==="file"&&t.bytes&&(e+=t.bytes.byteLength);return e}function ow(e,t,n){return{name:e,parentPath:t,path:t,isFile:()=>n==="file",isDirectory:()=>n==="dir",isSymbolicLink:pn,isBlockDevice:pn,isCharacterDevice:pn,isFIFO:pn,isSocket:pn}}function aw(e){return{size:e.kind==="file"?e.size:0,mode:e.mode,mtimeMs:e.mtimeMs,mtime:new Date(e.mtimeMs),isFile:()=>e.kind==="file",isDirectory:()=>e.kind==="dir",isSymbolicLink:pn,isBlockDevice:pn,isCharacterDevice:pn,isFIFO:pn,isSocket:pn}}function Q(e){return He.has(Mt(e))}function Me(e){let t=He.get(Mt(e));if(!t)throw Gn(e,"stat");return aw(t)}function rt(e){let t=Mt(e);if(!He.has(t))throw Gn(e,"realpath");return t}function Vn(e,t){let n=Mt(e),r=He.get(n);if(!r)throw Gn(e,"scandir");if(r.kind!=="dir")throw gm(e,"scandir");let o=[...r.children];return t?.withFileTypes?o.map(s=>{let a=He.get(n===br?`/${s}`:`${n}/${s}`);return ow(s,n,a?.kind==="dir"?"dir":"file")}):o}function ie(e,t){let n=He.get(Mt(e));if(!n)throw Gn(e,"open");if(n.kind!=="file"){let o=new Error("EISDIR: illegal operation on a directory, read");throw o.code="EISDIR",o}if(!n.bytes)throw Gn(e,"open");let r=W.from(n.bytes);return t?r.toString(typeof t=="string"?t:t.encoding):r}function it(e,t){let n=typeof t=="string"?new TextEncoder().encode(t):t;Ko(e,n)}function Xo(e,t){let n=He.get(Mt(e));if(!n)throw Gn(e,"chmod");n.mode=t}function Yt(e,t){ds(e)}function wr(e){let t=`${e}${ym++}`;return ds(t),t}function Ke(e,t){let n=Mt(e),r=He.get(n);if(!r){if(t?.force)return;throw Gn(e,"unlink")}if(r.kind==="dir"){if(!t?.recursive)throw Object.assign(new Error(`Path is a directory: rm returned EISDIR (is a directory) ${e}`),{code:"ERR_FS_EISDIR"});for(let s of[...r.children])Ke(n===br?`/${s}`:`${n}/${s}`,t)}He.delete(n);let o=He.get(Ce(n));o&&o.kind==="dir"&&o.children.delete(We(n))}function Rn(e,t){let n=Mt(e),r=He.get(n);if(!r)throw Gn(e,"rename");let o=Mt(t);if(o!==n){if(r.kind==="dir"){ds(o);for(let s of[...r.children])Rn(n===br?`/${s}`:`${n}/${s}`,o===br?`/${s}`:`${o}/${s}`)}else ds(Ce(o)).children.add(We(o)),He.set(o,r);Ke(n,{recursive:!0,force:!0})}}function Zo(){throw new Error("recursive filesystem watching is unavailable in the browser VFS")}var br,He,mm,pn,qn,ym,ke=H(()=>{"use strict";$();me();br="/",He=new Map([[br,{kind:"dir",mtimeMs:0,mode:511,children:new Set}]]),mm=0;pn=()=>!1;qn=Me;ym=0});function Yo(e,t,n){let r=new Error(`spawnSync ${e} ENOENT`);return r.code="ENOENT",r.errno=-2,r.syscall=`spawnSync ${e}`,r.path=e,{pid:0,output:[],stdout:"",stderr:"",status:null,signal:null,error:r}}function _m(e,t,n){let r=new Map,o={pid:void 0,stdin:null,stdout:null,stderr:null,on(a,l){let c=r.get(a)??[];return c.push(l),r.set(a,c),o},kill:()=>!1},s=new Error(`spawn ${e} ENOENT`);return s.code="ENOENT",s.syscall=`spawn ${e}`,s.path=e,Promise.resolve().then(()=>{for(let a of r.get("error")??[])a(s);for(let a of r.get("close")??[])a(null)}),o}var Qo=H(()=>{$()});function $e(e,t,n={}){let r=n.env??F.env,o=Yo(e,t,{cwd:n.cwd,input:n.input,encoding:"utf8",timeout:n.timeoutMs??12e4,maxBuffer:n.maxBufferBytes??64*1024*1024,env:e==="git"?{...r,...Cc}:r}),s=o.error?o.error.code:void 0;return{ok:!o.error&&o.status===0,status:o.status,stdout:o.stdout??"",stderr:o.stderr??(o.error?String(o.error.message):""),missing:s==="ENOENT",...s?{errorCode:s}:{}}}function Qt(e){let t=bm.get(e);if(t!==void 0)return t;let n=$e(F.platform==="win32"?"where":"which",[e]),r=n.ok&&n.stdout.trim().length>0;return bm.set(e,r),r}function si(e){return e.toLowerCase().replace(/^https?:\/\//,"").replace(/^git@/,"").replace(/\.git$/,"").replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,120)}function lw(e,t){return e.length<=t?e:e.slice(0,t)+` +\u2026 [truncated ${e.length-t} chars]`}function cw(e,t){let n=e.replace(/\s+/g," ").trim();if(n.length<=t)return n;let r=n.slice(0,t).replace(/\s+\S*$/,"");return r||(r=n.slice(0,t)),(r.match(/`/g)?.length??0)%2===1&&(r=r.replace(/`[^`]*$/,"")),r.lastIndexOf("[")>r.lastIndexOf("]")&&(r=r.slice(0,r.lastIndexOf("["))),r.replace(/\s+$/,"")+"\u2026"}function wt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Jn(e){return xm.test(e)?e.normalize("NFKD").replace(/[̀-ͯ]/g,""):e}function us(e,t){let n=new Set,r=[];for(let o of Jn(e).split(Sm)){if(!o)continue;let s=o.toLowerCase();o.length<2||wm.has(s)&&!t?.(o)||n.has(s)||(n.add(s),r.push(o))}return r}function ii(e,t){let n=[];for(let r of Jn(e).split(Sm))r&&(r.length<2||wm.has(r.toLowerCase())&&!t?.(r))&&n.push(r);return n}function dw(e){let t=us(e),n=r=>{let o=0;return/\d/.test(r)&&(o+=3),/[A-Z]/.test(r)&&!/^[A-Z0-9]+$/.test(r)&&(o+=2),/_/.test(r)&&(o+=2),r.length>=8?o+=1.5:r.length>=5&&(o+=.5),o};return t.map((r,o)=>({k:r,s:n(r),i:o})).sort((r,o)=>o.s-r.s||r.i-o.i).map(r=>r.k)}function Mc(e,t,n=60){let r=new Map;for(let o of e)o.forEach((s,a)=>{let l=t(s);r.set(l,(r.get(l)??0)+1/(n+a+1))});return r}function gn(e){let t=!xm.test(e),n=t?e:Jn(e),r=t?n.replace(uw,"$1 $2").replace(fw,"$1 $2"):n.replace(gw,"$1 $2").replace(hw,"$1 $2"),o=[],s=new Set,a=l=>{l.length<2||s.has(l)||(s.add(l),o.push(l))};/\s/.test(e.trim())||a(n.toLowerCase().replace(t?mw:yw,""));for(let l of r.split(t?pw:_w))a(l.toLowerCase());return o}function ea(e){if(e.length<4)return e;let t=e;return t.endsWith("ies")&&t.length>4?t=t.slice(0,-3)+"y":t.endsWith("sses")?t=t.slice(0,-2):(t.endsWith("ses")&&t.length>4||t.endsWith("s")&&!t.endsWith("ss")&&!t.endsWith("us")&&!t.endsWith("is"))&&(t=t.slice(0,-1)),t.endsWith("ying")&&t.length>5?t=t.slice(0,-4)+"y":t.endsWith("ing")&&t.length>5?t=t.slice(0,-3):t.endsWith("ed")&&t.length>4&&(t=t.slice(0,-2)),t.endsWith("e")&&t.length>3&&(t=t.slice(0,-1)),t}var Cc,bm,wm,xm,Sm,uw,fw,mw,pw,gw,hw,yw,_w,et=H(()=>{"use strict";$();Qo();Cc={LC_ALL:"C",LANGUAGE:""};bm=new Map;wm=new Set(["the","a","an","is","are","was","were","be","been","being","do","does","did","how","what","why","when","where","which","who","whom","this","that","these","those","of","in","on","to","for","with","and","or","but","if","then","else","than","as","at","by","from","into","about","it","its","i","you","we","they","he","she","there","here","can","could","should","would","will","shall","may","might","must","have","has","had","not","no","yes","so","such","only","any","some","all","get","set","use","used","using","work","works","working","handle","handled","happen","happens","default","value","values","please","explain","tell","me","my","our"]),xm=/[^\x00-\x7F]/;Sm=/[^\p{L}\p{N}_]+/u;uw=/([a-z0-9])([A-Z])/g,fw=/([A-Z]+)([A-Z][a-z])/g,mw=/[^a-z0-9_]+/g,pw=/[^A-Za-z0-9]+/,gw=/([\p{Ll}\p{N}])(\p{Lu})/gu,hw=/(\p{Lu}+)(\p{Lu}\p{Ll})/gu,yw=/[^\p{L}\p{N}_]+/gu,_w=/[^\p{L}\p{N}]+/u});function bw(e){let t="";for(let n=0;n=e.length))return s?{source:"(?!)",end:n}:{source:r?`[^/${o}]`:`(?!/)[${o}]`,end:n}}function km(e){return e==="\\"||e==="]"||e==="^"||e==="["||e==="-"?"\\"+e:e}function ms(e,t,n){let r=[],o=t?wt(t)+"/":"",s=e.split(/\r?\n/);for(let a=0;af===u:f=>f.startsWith(u)&&o.test(f)}let{head:s,whole:a}=Ac(e);if(a)return(c,d)=>d===s&&c.startsWith(r);if(e[0]==="*"&&e[1]!=="*"){let c=Ac(e.slice(1));if(c.whole)return(d,u)=>u.endsWith(c.head)&&d.startsWith(r)}let l=new RegExp(`^${t}$`);return(c,d)=>c.startsWith(r)&&l.test(d)}function oi(e,t,n){let r=ta(e,t,n);return r!==void 0&&!r.negated}function ta(e,t,n){let r=t.slice(t.lastIndexOf("/")+1);for(let o=e.length-1;o>=0;o--){let s=e[o];if(!(s.dirOnly&&!n)&&(s.test?s.test(t,r):s.re.test(t)))return s}}var ww,Ic=H(()=>{"use strict";$();et();ww={alnum:"A-Za-z0-9",alpha:"A-Za-z",blank:" \\t",cntrl:"\\x00-\\x1f\\x7f",digit:"0-9",graph:"\\x21-\\x7e",lower:"a-z",print:"\\x20-\\x7e",punct:"!-\\/:-@\\[-`{-~",space:" \\t\\n\\r\\f\\v",upper:"A-Z",xdigit:"0-9A-Fa-f"}});function ps(e){let t;try{t=ie(e)}catch{return kw}let n=t.length,r={buf:t,bytes:n,ok:!0,binary:!1};if(n>=2&&t[0]===255&&t[1]===254){let s=t.subarray(2,2+(n-2&-2)).toString("utf16le");return{...r,text:s,encoding:"utf16le",byteAddressable:!1,bodyStart:2}}if(n>=2&&t[0]===254&&t[1]===255){let s=W.from(t.subarray(2,2+(n-2&-2)));return s.swap16(),{...r,text:s.toString("utf16le"),encoding:"utf16be",byteAddressable:!1,bodyStart:2}}if(n>=3&&t[0]===239&&t[1]===187&&t[2]===191)return{...r,text:t.subarray(3).toString("utf8"),encoding:"utf8-bom",byteAddressable:!0,bodyStart:3};if(t.includes(0))return{...r,text:"",encoding:null,binary:!0,byteAddressable:!1,bodyStart:0};let o=t.toString("utf8");return o.includes("\uFFFD")&&!vw(t)?{...r,text:t.toString("latin1"),encoding:"latin1",byteAddressable:!1,bodyStart:0}:{...r,text:o,encoding:"utf8",byteAddressable:!0,bodyStart:0}}function vw(e){try{return Ew.decode(e),!0}catch{return!1}}function Rw(e){let t=new Int32Array(e.length+1),n=0;for(let r=0;r=55296&&o<=56319&&r+1{"use strict";$();ke();kw={text:"",buf:W.alloc(0),encoding:null,binary:!1,bytes:0,ok:!1,byteAddressable:!1,bodyStart:0};Ew=new TextDecoder("utf-8",{fatal:!0});$c=class{constructor(t){this.text=t;this.ascii=!/[^\x00-\x7F]/.test(t),this.table=this.ascii?null:Rw(t),this.lineStarts=Cw(t)}text;ascii;table;lineStarts;byteOf(t){if(this.ascii)return t;let n=this.table;return t<=0?0:t>=n.length?n[n.length-1]:n[t]}lineColOf(t){let n=this.lineStarts,r=0,o=n.length-1;for(;r>1;n[s]<=t?r=s:o=s-1}return{line:r+1,col:t-n[r]+1}}get lineCount(){return this.lineStarts.length}}});function Mw(e){let t=[...Tc].map(o=>`:(glob)**/${o}/**`),n=$e("git",["-C",e,"ls-files","-z","--",...t]);if(!n.ok)return;let r=new Set;for(let o of n.stdout.split("\0")){let s=0;for(let a=o.indexOf("/");a!==-1;a=o.indexOf("/",s))Tc.has(o.slice(s,a))&&r.add(o.slice(0,a)),s=a+1}return r}function Iw(e,t){return e===xr||e===Aw||t.has(e)||e.startsWith(".codeindex-edit-")}function vm(e,t){let n=t.find(o=>o.name===xr);if(!n)return;let r=j(e,xr);try{if(n.isDirectory())return r;let o=Me(r);if(o.isDirectory())return r;if(!o.isFile()||o.size>$w)return;let s=ie(r,"utf8");if(!s.startsWith(Em))return;let a=s.slice(Em.length).replace(/[\r\n]+$/,"");if(!a)return;let l=le(e,a),c=j(l,"commondir");return Q(c)?le(l,ie(c,"utf8").trim()):l}catch{return}}function Rm(e){if(!e)return"";try{let t=j(e,"info","exclude");return Q(t)?re(t):""}catch{return""}}function Tw(e){let t=d=>{if(Q(j(d,xr)))try{return vm(d,Vn(d,{withFileTypes:!0}).filter(u=>u.name===xr))}catch{return}};if(t(e))return[];let n=[],r;for(let d=e,u=Ce(d);u!==d&&(n.push(u),r=t(u),!r);d=u,u=Ce(d));if(!r)return[];let o=n[n.length-1],s=d=>d.split("/").join("/"),a=s(je(o,e))+"/",l=d=>s(je(e,d)),c=ms(Rm(r),"",l(j(r,"info","exclude")));for(let d of n.reverse()){let u=j(d,".gitignore");Q(u)&&c.push(...ms(re(u),s(je(o,d)),l(u)))}return c.map(d=>({...d,test:(u,f)=>d.test?d.test(a+u,f):d.re.test(a+u)}))}function Xe(e,t={}){let n=t.maxFileBytes??1048576,r=t.maxFiles??1/0,o=t.gitignore!==!1,s=t.ignoreDirs?new Set(t.ignoreDirs):Cn,a=!t.ignoreDirs&&t.trackedBuildDirs!==!1,l=null,c=k=>(l===null&&(l=Mw(e)),l?.has(k)??!1),d=(k,R,I)=>Iw(k,s)&&!(a&&Tc.has(k)&&!(o&&I.length&&oi(I,R,!0))&&c(R)),u=[],f=!1,m=0,p=[],g=(k,R,I=!1,P)=>{t.onSkip?.({rel:k,reason:R,directory:I,...P===void 0?{}:{size:P}})},h=(k,R,I,P)=>{if(!t.onSkip)return;let v=ta(R,k,I);t.onSkip({rel:k,reason:"gitignored",directory:I,...P===void 0?{}:{size:P},...v?.source!==void 0?{rule:{source:v.source,line:v.line,pattern:v.pattern}}:{}})},_;try{_=rt(e)}catch{return{files:u,capped:f,excluded:m}}let y=k=>k===_||k.startsWith(_+"/"),b=[{dir:e,rel:"",rules:o?Tw(_):[]}],S=new Set;e:for(;b.length;){let k=b.pop(),R=[],I;try{I=rt(k.dir)}catch{continue}if(S.has(I)||(S.add(I),!y(I)))continue;let P;try{P=Vn(k.dir,{withFileTypes:!0}).sort((M,x)=>M.namex.name?1:0)}catch{continue}let v=P.some(M=>M.name===xr)?vm(k.dir,P):void 0;if(k.rel&&v){m++,g(k.rel,"nested-repo",!0);continue}let C=k.rules;if(o&&!k.rel){let M=ms(Rm(v),"",".git/info/exclude");M.length&&(C=[...C,...M])}if(o&&P.some(M=>M.name===".gitignore")){let M=k.rel?`${k.rel}/.gitignore`:".gitignore",x=ms(re(j(k.dir,".gitignore")),k.rel,M);x.length&&(C=[...C,...x])}for(let M of P){let x=M.name,w=j(k.dir,x),E=k.rel?`${k.rel}/${x}`:x,N=M.isSymbolicLink();if(x===xr)continue;if(M.isDirectory()&&d(x,E,C)){g(E,"ignore-dir",!0);continue}let O;try{O=N?Me(w):qn(w)}catch{g(E,N?"broken-symlink":"unreadable");continue}if(O.isDirectory()){if(d(x,E,C)){g(E,"ignore-dir",!0);continue}if(N){g(E,"directory-symlink",!0);continue}if(o&&C.length&&oi(C,E,!0)){h(E,C,!0);continue}if(t.filter&&!t.filter({rel:E,abs:w,directory:!0})){g(E,"filter",!0);continue}R.push({dir:w,rel:E,rules:C});continue}if(!O.isFile())continue;let L=mn(x).toLowerCase(),G;if(o&&C.length&&oi(C,E,!1)?G="gitignored":t.filter&&!t.filter({rel:E,abs:w,directory:!1})?G="filter":O.size>n&&!t.includeOversize?G="over-max-bytes":na.has(x.toLowerCase())&&!t.includeLockfiles?G="lockfile":(t.binaryExtensions??ra).has(L)&&!t.includeBinary?G="binary-ext":(x.endsWith(".min.js")||x.endsWith(".min.css"))&&!t.includeMinified&&(G="minified"),G){m++,G==="over-max-bytes"&&p.push({rel:E.split("/").join("/"),size:O.size}),G==="gitignored"?h(E,C,!1,O.size):g(E,G,!1,O.size);continue}if(N){try{if(!y(rt(w))){g(E,"symlink-outside-root");continue}}catch{g(E,"broken-symlink");continue}if(!t.includeFileSymlinks){g(E,"file-symlink");continue}}if(u.length>=r){f=!0;break e}u.push({rel:E.split("/").join("/"),abs:w,size:O.size,ext:L,mtimeMs:O.mtimeMs})}for(let M=R.length-1;M>=0;M--)b.push(R[M])}return{files:u,capped:f,excluded:m,...p.length?{oversized:p}:{}}}function re(e){return ps(e).text}var Cn,Tc,xr,Aw,Em,$w,na,ra,Fw,Ze=H(()=>{"use strict";$();ke();me();Ic();ai();et();ai();Cn=new Set([".git","node_modules",".pnpm","bower_components","vendor","dist","build","out","target",".next",".nuxt",".svelte-kit",".turbo","coverage","__pycache__",".venv","venv",".tox",".mypy_cache",".pytest_cache",".gradle",".idea",".vscode",".cache","tmp",".ultraindex",".codeindex","Pods","DerivedData",".terraform","elm-stuff",".dart_tool"]),Tc=new Set(["build","out","target","tmp"]);xr=".git",Aw=".codeindex";Em="gitdir: ",$w=4096;na=new Set(["package-lock.json","npm-shrinkwrap.json","yarn.lock","pnpm-lock.yaml","bun.lockb","composer.lock","cargo.lock","poetry.lock","pipfile.lock","gemfile.lock","go.sum","flake.lock","packages.lock.json","podfile.lock","mix.lock"]),ra=new Set([".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico",".icns",".svg",".pdf",".zip",".gz",".tar",".tgz",".bz2",".xz",".7z",".rar",".jar",".war",".class",".so",".dylib",".dll",".exe",".bin",".o",".a",".wasm",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".wav",".flac",".ogg",".lock",".min.js",".map"]),Fw=2e4});function T(e,t){return et?1:0}function Sr(e){return(t,n)=>T(e(t),e(n))}var ce=H(()=>{"use strict";$()});function en(e){let t=$e("git",["-C",e,"rev-parse","HEAD"]);return t.ok?t.stdout.trim().slice(0,Ow):void 0}function Nc(e){let t=$e("git",[...xt(e),"hash-object","-t","tree","--stdin"],{input:""});return t.ok?t.stdout.trim():void 0}function Pc(e){return $e("git",["-C",e,"rev-parse","--is-inside-work-tree"]).ok}function Lc(e,t){let n=c=>$e("git",[...xt(e),"rev-parse","--verify","--quiet",`${c}^{commit}`]).ok,r=c=>{let d=$e("git",[...xt(e),"merge-base",c,"HEAD"]);return d.ok?d.stdout.trim():void 0};if(t){if(Oc(t)||!n(t))return{error:`base ref "${t}" not found (tried git rev-parse --verify)`};let c=r(t);return c?{ref:t,mergeBase:c}:{error:`no merge-base between "${t}" and HEAD`}}let o=$e("git",[...xt(e),"symbolic-ref","--quiet","refs/remotes/origin/HEAD"]),s=[...o.ok?[o.stdout.trim().replace("refs/remotes/","")]:[],"origin/main","origin/master","main","master"];for(let c of s){if(!n(c))continue;let d=r(c);if(d)return{ref:c,mergeBase:d}}let a=$e("git",[...xt(e),"rev-parse","--verify","--quiet","HEAD"]);if(a.ok)return{ref:"HEAD",mergeBase:a.stdout.trim(),note:"base: HEAD (no default branch found \u2014 reviewing uncommitted work)"};let l=Nc(e);return l?{ref:sa,mergeBase:l,note:"no commits yet \u2014 every file is reviewed as added"}:{error:"cannot resolve HEAD, nor the empty tree"}}function Dc(e,t){let n=[],r=$e("git",[...xt(e),"diff","--no-color","--relative","-z","-M","--name-status",...Fc(t)]);if(r.ok){let a=r.stdout.split("\0"),l=0;for(;l[a.path,a])),s=$e("git",[...xt(e),"diff","--no-color","--relative","-z","-M","--numstat",...Fc(t)]);if(s.ok){let a=s.stdout.split("\0"),l=0;for(;l0){a.startsWith("\\")||s--;continue}if(a.startsWith("+++ ")){let l=Pw(a.slice(4));if(l===void 0){o=void 0;continue}o=n.get(l)??[],n.set(l,o)}else if(a.startsWith("@@")){let l=a.match(/^@@ -\d+(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);if(!l)continue;let c=Number(l[2]),d=l[3]===void 0?1:Number(l[3]);if(s=(l[1]===void 0?1:Number(l[1]))+d,!o)continue;d===0?o.push({start:Math.max(c,1),end:Math.max(c,1),approx:!0}):o.push({start:c,end:c+d-1})}}return n}function Pw(e){let t=e.endsWith(" ")?e.slice(0,-1):e;if(t.startsWith('"')&&t.endsWith('"')&&t.length>=2&&(t=Dw(t)),t!=="/dev/null")return t.startsWith("b/")?t.slice(2):t}function Dw(e){let t=W.from(e.slice(1,-1),"utf8"),n=[];for(let r=0;r=t.length){n.push(o);continue}let s=t[++r];s>=48&&s<=55?(n.push(parseInt(t.toString("latin1",r,r+3),8)&255),r+=2):n.push(Lw[String.fromCharCode(s)]??s)}return W.from(n).toString("utf8")}function ia(e){let t=$e("git",[...xt(e),"ls-files","--others","--exclude-standard","-z"]);return t.ok?t.stdout.split("\0").filter(n=>n.length>0):[]}function Wc(e,t){let n=$e("git",[...xt(e),"rev-parse","--show-prefix","--git-path","shallow","--verify","--quiet","HEAD"]);if(n.missing)return{ok:!1,error:"git was not found on PATH"};if(!n.ok)return{ok:!1,error:n.status===1?"no commits yet (empty repository)":Mm(n.stderr)||"not a git repository"};let[r="",o="",s=""]=n.stdout.split(` +`),a=Bw(e,t),l=Uw(le(e,o)),c=[s,...a.exclude,...l.map(g=>`^${g}`)],d=JSON.stringify([le(e),c,a.args]),u=kr.get(d);if(u)return kr.delete(d),kr.set(d,u),{ok:!0,log:u};let f=[...xt(e),"log","--no-color","--no-renames",...a.args,"--pretty=format:%x1e","--name-only","-z","--stdin"];r&&f.push("--full-history","--full-diff","--",".");let m=Yo("git",f,{input:c.join(` `)+` -`,maxBuffer:Rm,timeout:6e5,env:{...O.env,...Rc}});if(m.error){let g=m.error.code;return{ok:!1,error:g==="ENOBUFS"?`git log output exceeds ${Rm/1024/1024} MiB \u2014 bound the window with since`:g==="ENOENT"?"git was not found on PATH":m.error.message}}if(m.status!==0)return{ok:!1,error:Cm(String(m.stderr??""))||`git log exited with ${m.status}`};let p=Ww(m.stdout,r,l.length>0);return Sr.set(d,p),Sr.size>Lw&&Sr.delete(Sr.keys().next().value),{ok:!0,log:p}}function Dw(e,t){if(!t)return{exclude:[],args:[]};let n=Fc(t)?void 0:$e("git",[...wt(e),"rev-parse","--verify","--quiet",`${t}^{commit}`]);if(n?.ok)return{exclude:[`^${n.stdout.trim()}`],args:[]};if(Pw.test(t.trim())){let r=$e("git",[...wt(e),"rev-parse",`--since=${t}`]),o=/^--max-age=(-?\d+)$/m.exec(r.stdout);if(r.ok&&o){let s=BigInt(o[1]);return s<0n||s>=2n**63n?{exclude:[],args:[]}:{exclude:[],args:[`--max-age=${o[1]}`]}}}throw new Error(`since "${t}" is neither a commit (tag, branch, sha) nor a date (2024-01-01, "6 months ago")`)}function jw(e){try{return ie(e,"utf8").split(` -`).map(t=>t.trim()).filter(Boolean).sort($)}catch{return[]}}function Ww(e,t,n){let r=new Map,o=[],s=[],a=[];for(let l=0;ld&&s.length){let u=e.toString("utf8",d,c),f=r.get(u);f===void 0&&(f=o.length,o.push(u),r.set(u,f)),a.push(f)}l=c+1}return s.push(a.length),{prefix:t,paths:o,starts:s,ids:a,shallow:n}}function Wc(e){if(!e.prefix)return e.paths;let t=e.prefix.length;return e.paths.map(n=>n.startsWith(e.prefix)?n.slice(t):void 0)}function en(e,t={}){let n=new Map,r=jc(e,t.since);if(!r.ok)return{churn:n,ok:!1,error:r.error,commits:0};let{log:o}=r,s=Wc(o),a=new Int32Array(o.paths.length).fill(-1),l=0;for(let c=0;c+1{"use strict";I();Yo();Ee();fe();le();et();Tw=7;$w=["-c","core.quotePath=false","-c","color.ui=false","-c","diff.noprefix=false","-c","diff.mnemonicPrefix=false","-c","diff.relative=false","-c","log.showSignature=false","-c","log.follow=false","-c","log.showRoot=true"],wt=e=>["-C",e,...$w],Fc=e=>e.startsWith("-"),$c=e=>e.staged?["--cached"]:[e.mergeBase],ra="(no commits)";Ow={a:7,b:8,t:9,n:10,v:11,f:12,r:13};Rm=1024*1024*1024,Pw=/^(?:\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}(?::\d{2})?)?(?:Z|[+-]\d{2}:?\d{2})?|(?:\d+[ .](?:second|minute|hour|day|week|month|year)s?[ .]*)+(?:ago)?)$/i,Sr=new Map,Lw=4});function Uw(e){return typeof e=="string"?new TextEncoder().encode(e):e}function zw(e,t){if(e.length===1)return e[0];let n=new Uint8Array(t),r=0;for(let o of e)n.set(o,r),r+=o.byteLength;return n}function Am(e){let t=Math.floor(e.byteLength/536870912|0),n=e.byteLength<<3>>>0,r=Math.ceil((e.byteLength+9)/64),o=new Uint8Array(r*64);o.set(e),o[e.byteLength]=128;let s=new DataView(o.buffer);return s.setUint32(o.byteLength-8,t,!1),s.setUint32(o.byteLength-4,n,!1),s}function Bc(e,t){return(e<>>32-t)>>>0}function gn(e,t){return(e>>>t|e<<32-t)>>>0}function Hw(e){let t=Am(e),n=1732584193,r=4023233417,o=2562383102,s=271733878,a=3285377520,l=new Uint32Array(80);for(let u=0;u>>0;h=g,g=p,p=Bc(m,30),m=f,f=x}n=n+f>>>0,r=r+m>>>0,o=o+p>>>0,s=s+g>>>0,a=a+h>>>0}let c=new Uint8Array(20),d=new DataView(c.buffer);return[n,r,o,s,a].forEach((u,f)=>d.setUint32(f*4,u,!1)),c}function qw(e){let t=Am(e),n=1779033703,r=3144134277,o=1013904242,s=2773480762,a=1359893119,l=2600822924,c=528734635,d=1541459225,u=new Uint32Array(64);for(let p=0;p>>3,A=gn(R,17)^gn(R,19)^R>>>10;u[T]=u[T-16]+C+u[T-7]+A>>>0}let g=n,h=r,_=o,y=s,b=a,x=l,k=c,v=d;for(let T=0;T<64;T++){let F=gn(b,6)^gn(b,11)^gn(b,25),R=b&x^~b&k,C=v+F+R+Gw[T]+u[T]>>>0,A=gn(g,2)^gn(g,13)^gn(g,22),S=g&h^g&_^h&_,w=A+S>>>0;v=k,k=x,x=b,b=y+C>>>0,y=_,_=h,h=g,g=C+w>>>0}n=n+g>>>0,r=r+h>>>0,o=o+_>>>0,s=s+y>>>0,a=a+b>>>0,l=l+x>>>0,c=c+k>>>0,d=d+v>>>0}let f=new Uint8Array(32),m=new DataView(f.buffer);return[n,r,o,s,a,l,c,d].forEach((p,g)=>m.setUint32(g*4,p,!1)),f}function Vw(e){let t="";for(let n of e)t+=Mm[n>>4]+Mm[n&15];return t}function Jw(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function gs(e){let t=e.toLowerCase().replace("-","");if(t!=="sha1"&&t!=="sha256")throw new Error(`createHash: unsupported algorithm "${e}" in the browser build (sha1, sha256)`);let n=[],r=0,o={update(s){let a=Uw(s);return n.push(a),r+=a.byteLength,o},digest(s){let a=r===0?new Uint8Array(0):zw(n,r),l=t==="sha1"?Hw(a):qw(a);return s==="hex"?Vw(l):s==="base64"?Jw(l):l}};return o}var Gw,Mm,ia=z(()=>{I();Gw=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);Mm="0123456789abcdef"});function Re(e){return gs("sha1").update(e).digest("hex")}function Kw(e,t=8){return Re(e).slice(0,t)}var xt=z(()=>{"use strict";I();ia()});function Zw(e){return Xw.test(e.trim())}function Qw(e){return Yw.test(e.trim())}function tx(e){return ex.test(e.trim())}function Dt(e){return e.replace(/\*+\/\s*$/,"").replace(/^\s*\/\*+!?/,"").replace(/^\s*\/\/[/!]?/,"").replace(/^\s*--+/,"").replace(/^\s*#+/,"").replace(/^\s*\*+/,"").replace(/^\s*(?:"""|''')/,"").replace(/(?:"""|''')\s*$/,"").replace(/[-=~_]{3,}|\/{3,}|\*{3,}|#{3,}/g," ").trim()}function nx(e){return e.replace(/<\/?[A-Za-z][^>]*>/g," ").replace(/\s+/g," ").trim()}function kr(e,t=rx,n=3){let r=[],o=!1;for(let l of e){let c=l.trim();if(!c){o=!1;continue}if(!o){if(tx(c)){if(r.length)break;o=!0;continue}if(!(Zw(c)||Qw(c))){if(/^@[a-z]/i.test(c))break;r.push(c)}}}let s=nx(r.join(" "));if(s.length|\]=*\]|-\})\s*$/,"")).replace(/^\|(?:\s+|$)/,"").replace(dx,"")}function Uc(e,t){let n=sx.has(e),r=ix.has(e),o=cx.filter(([d])=>d==="/*"||d===""],["--[[","]]"],["{-","-}"],['"""','"""'],["'''","'''"]],dx=/^@(?:file|fileoverview|overview|desc|description)\b\s*/i,ux=/^created by\b.*\bon\s+\d{1,4}[./-]\d{1,2}[./-]\d{1,4}\.?$/i,fx=60,mx=200,px=8});function xe(e,t,n,r,o){let s=[],a=t.split(/\r?\n/),l=o===void 0?a:o.split(/\r?\n/),c=o!==void 0&&r.some(u=>u.scope==="member")?_x(o):void 0,d=new Map;for(let u=0;u{let l=a.doc??wx(o,a.line-1,n),c=a.endLine??s?.endOf(a.line-1,o);return l===void 0&&c===void 0?a:{...a,...c!==void 0?{endLine:c}:{},...l!==void 0?{doc:l}:{}}})}function wx(e,t,n){let r=t-1;for(;r>=0&&n.decoration?.test(e[r]);)r--;if(n.docAttr){let s=xx(e,r);if(s)return kr(s)}let o=[];for(;r>=0;){let s=e[r];if(n.comment.test(s)){o.push(s),r--;continue}if(!n.block||!/\*\/\s*$/.test(s))break;let a=r;for(;a>=0&&!e[a].includes("/*");)a--;if(a<0||!/^\s*\/\*(?!!)/.test(e[a]))break;for(let l=r;l>=a;l--)o.push(e[l]);r=a-1}if(o.length)return kr(o.reverse().map(Dt))}function xx(e,t){if(t<0)return;let n=/^\s*@doc\s+(?:~[sS])?"(.*)"\s*$/.exec(e[t]);if(n)return[n[1]];if(/^\s*"""\s*$/.test(e[t]))for(let r=t-1;r>=0&&t-r<400;r--){if(/^\s*@doc\s+(?:~[sS])?"""\s*$/.test(e[r]))return e.slice(r+1,t);if(/"""/.test(e[r]))return}}function nn(e){return Sx[e]??"other"}function Ex(e){let t=e.length,n="",r=0,o=0;for(;o{if(!a){a=[0];for(let _=0;_>>1;a[_]<=p?g=_+1:h=_}return g},c=new Map;for(let p of n)c.has(p.name)||c.set(p.name,p);let d=Ex(t),u=/export\s*\{([\s\S]*?)\}\s*(?:from\s*['"]([^'"]+)['"])?\s*;?/g,f;for(;(f=u.exec(d))&&o.length{"use strict";I();ai();ve=String.raw`[\p{L}\p{Nl}_$][\p{L}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}$\u200c\u200d]*`,hx=new Set(["class","struct","enum","interface","protocol","actor","extension","object","trait","mixin"]);Hc=class{constructor(t){this.masked=t;let n=[];for(let r=0;r>>1;this.lineStarts[o]<=t?n=o+1:r=o}return n-1}endOf(t,n){let r=this.masked,o=/^\s*/.exec(n[t])[0],s=0,a=t;for(let l=this.lineStarts[t];l60||a>=this.lineStarts.length)return;let d=r.slice(this.lineStarts[a],this.lineStarts[a+1]??r.length),u=/^\s*/.exec(d)[0],f=d.charAt(u.length);if(s===0&&f&&!"{)]".includes(f)&&u.length<=o.length)return;continue}if(c===40||c===91)s++;else if(c===41||c===93){if(--s<0)return}else{if(s===0&&c===59)return;if(s===0&&c===123){let d=this.closeOf.get(l);if(d===void 0)return;let u=this.lineOf(d),f=r.slice(d+1,this.lineStarts[u+1]??r.length);if(u===this.lineOf(l)){if(u===t&&/^[\s;,)\]}]*$/.test(f))return this.continued(u)?void 0:u+1;l=d;continue}return f.includes("{")?void 0:n[u].startsWith(o+"}")&&!this.continued(u)?u+1:void 0}}}}continued(t){for(let n=t+1;n)/.test(r)}return!1}},Sx={".ts":"typescript",".tsx":"typescript",".mts":"typescript",".cts":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".go":"go",".rb":"ruby",".rake":"ruby",".java":"java",".rs":"rust",".c":"c",".h":"c",".cc":"cpp",".cpp":"cpp",".cxx":"cpp",".hpp":"cpp",".cs":"csharp",".php":"php",".swift":"swift",".kt":"kotlin",".kts":"kotlin",".scala":"scala",".sc":"scala",".clj":"clojure",".ex":"elixir",".exs":"elixir",".erl":"erlang",".hs":"haskell",".dart":"dart",".lua":"lua",".sh":"shell",".bash":"shell",".zsh":"shell",".ksh":"shell",".fish":"shell",".hh":"cpp",".m":"objective-c",".mm":"objective-c",".sql":"sql",".graphql":"graphql",".gql":"graphql",".proto":"protobuf",".md":"markdown",".mdx":"markdown",".rst":"restructuredtext",".txt":"text",".json":"json",".yaml":"yaml",".yml":"yaml",".toml":"toml",".ini":"ini",".html":"html",".css":"css",".scss":"scss",".vue":"vue",".svelte":"svelte",".astro":"astro",".zig":"zig",".hcl":"hcl",".tf":"terraform",".tfvars":"terraform",".sol":"solidity"};kx=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]);zc=47,Im=42,Tm=10,vx=34,Rx=39,Cx=96,Mx=92,oa=400});function Vc(e,t=[]){if(t.length>=ca)return t;let n=e.indexOf("{");if(n===-1){let c=e.replace(/\s+as\s+\w+\s*$/,"").replace(/::\s*\*\s*$/,"").replace(/^::/,"").trim();return c&&t.push(c),t}let r=e.slice(0,n),o=0,s=-1;for(let c=n;c|\bas\b/).map(u=>u.trim());if(!a||l==="_")continue;let c=a==="_"||a==="*"||/^given\b/.test(a),d=Jc(c?r+".*":r+"."+a);d&&t.length=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95||e===Hm||e>127}function Er(e){let t=e.length,n=new fi(e),r=[],o=0,s=c=>{let d=c;for(;d{let d=c-1;for(;d>=0&&n.codeAt(d)<=zm;)d--;if(d<0)return!0;let u=n.codeAt(d);if(jx.has(u))return!0;if(!Pm(u))return!1;let f=d;for(;f>0&&Pm(e.charCodeAt(f-1));)f--;return Wx.has(e.slice(f,d+1))},l=0;for(;l0&&e.charCodeAt(l-1)===Kc;)l--;let c=o-l;if(t.raw==="r"?/[rR]$/.test(e.slice(Math.max(0,l-2),l)):c>0){let u=e.indexOf('"'+"#".repeat(c),o+1),f=u===-1?n:u;r.blank(o+1,f),o=u===-1?n:u+1+c;continue}}let a=s===li||s===da&&t.squote==="string";if(a||s===ui&&t.backtick){let l=a&&t.triple&&e.charCodeAt(o+1)===s&&e.charCodeAt(o+2)===s,c=o+(l?3:1),d=c;if(l){let f=e.indexOf(s===li?'"""':"'''",c);d=f===-1?n:f}else for(;d{n.get(s)===!0&&n.delete(s),n.set(s,!1)},o=s=>{n.has(s)||n.set(s,!0)};if(Ax.has(e)){if(!t.includes("import")&&!t.includes("require")&&!t.includes("from"))return[];let s=Er(t);for(let a of[Ux,zx,Hx,Gx]){a.lastIndex=0;for(let l;l=a.exec(s);){let[c,d]=l.indices[1];r(t.slice(c,d))}}}else if(Ix.has(e)){if(!t.includes("import"))return[];let s=Bx(t);Dm.lastIndex=0;for(let a;a=Dm.exec(s);){let l=a[1];if(l!==void 0){if(r(l),!l||l==="__future__")continue;let c=a[2].startsWith("(")?a[2].slice(1,-1):a[2].replace(/\\\r?\n/g," ");for(let d of c.split(",")){let u=d.trim().split(/\s+as\s+/)[0].trim();/^[A-Za-z_]\w*$/.test(u)&&o(Jx(l,u))}continue}for(let c of a[3].split(",")){let d=c.trim().split(/\s+as\s+/)[0].trim();d&&/^[\w.]+$/.test(d)&&r(d)}}}else if(e===".go"){let s=t.split(/\r?\n/),a=!1;for(let l of s){let c=l.trim();if(a){if(c===")"){a=!1;continue}let u=/"([^"]+)"/.exec(c);u&&r(u[1]);continue}if(/^import\s*\($/.test(c)){a=!0;continue}let d=/^import\s+(?:[\w.]+\s+)?"([^"]+)"/.exec(c);d&&r(d[1])}}else if(e===".rs"){let s,a=new Set,l=/#\[\s*path\s*=\s*"([^"]+)"\s*\]\s*(?:(?:#\[[^\]]*\]|\/\/[^\n]*)\s*)*(?:pub(?:\([^)]*\))?\s+)?mod\s+[A-Za-z_]\w*\s*;/g;for(;s=l.exec(t);)r(`mod-path ${s[1]}`),a.add(s.index+s[0].length);let c=/^[^\S\r\n]*(?:pub(?:\([^)]*\))?\s+)?mod\s+([A-Za-z_]\w*)\s*;/gm;for(;s=c.exec(t);)a.has(s.index+s[0].length)||r(`mod ${s[1]}`);let d=/^[^\S\r\n]*(?:pub(?:\([^)]*\))?\s+)?use\s+([^;]+);/gm;for(;s=d.exec(t);)for(let u of Vc(s[1].trim()))r(u)}else if(e===".java"){let s,a=/^[^\S\r\n]*import\s+(?:static\s+)?([\w.]+(?:\.\*)?)\s*;/gm;for(;s=a.exec(t);)r(s[1])}else if(e===".rb"||e===".rake"){let s,a=/^[^\S\r\n]*require_relative\s+['"]([^'"]+)['"]/gm;for(;s=a.exec(t);)r(qc(s[1]));let l=/^[^\S\r\n]*require\s+['"]([^'"]+)['"]/gm;for(;s=l.exec(t);)r(s[1])}else if(Tx.has(e)){let s,a=/^[^\S\r\n]*#\s*include\s*"([^"]+)"/gm;for(;s=a.exec(t);)r(s[1])}else if(e===".php"){let s,a=qx.exec(t)?.index??1/0;for(jm.lastIndex=0;s=jm.exec(t);){if(s[1]&&s.index>a)continue;let l=s[2].trim().replace(/^(?:function|const)\s+/,""),c=/^\\?([\w\\]*?)\\?\s*\{([^}]*)\}$/.exec(l),d=c?c[2].split(",").map(u=>`${c[1]}\\${u.trim()}`):l.split(",");for(let u of d){let f=u.trim().replace(/\\(?:function|const)\s+/,"\\").replace(/\s+as\s+\w+$/,"").replace(/^\\/,"");Vx.test(f)&&r(f)}}for(Wm.lastIndex=0;s=Wm.exec(t);){let{here:l,up:c,levels:d,path:u}=s.groups;r(l?qc(u.replace(/^\/+/,"")):c?"../".repeat(Number(d??1))+u.replace(/^\/+/,""):qc(u))}}else if(e===".cs"){let s,a=/^[^\S\r\n]*(?:global\s+)?using\s+(?:static\s+)?([A-Za-z_][\w.]*)\s*;/gm;for(;s=a.exec(t);)r(s[1])}else if(Bm.has(e)){let s,a=/^[ \t]*import[ \t]+([\w.`*]+)/gm;for(;s=a.exec(t);){let l=Jc(s[1]);l&&r(l)}}else if(Um.has(e)){let s,a=/^[ \t]*import[ \t]+((?:[^\n;{]|\{[^}]*\})+)/gm;for(;s=a.exec(t);){let l=[],c=0,d="";for(let u of s[1].replace(/\/\/.*$/gm,""))u==="{"?c++:u==="}"&&c--,u===","&&c===0?(Fm(d,l),d=""):d+=u;Fm(d,l);for(let u of l)r(u)}}else if(e===".dart"){let s,a=/^[ \t]*(?:import|export|part)[ \t]+(?:'([^'\n]+)'|"([^"\n]+)")/gm;for(;s=a.exec(t);)r(s[1]??s[2])}else if(e===".lua"){let s,a=/\brequire\s*\(?\s*['"]([\w-]+(?:[./][\w-]+)*)['"]/g;for(;s=a.exec(t);)r(s[1])}else if($x.has(e)){let s,a=/(?:^|[;&|]|\b(?:then|do|else)\b)[ \t]*(?:source|\.)[ \t]+([^\n]+)/gm;for(;s=a.exec(t);){let l=Ox(s[1]);l&&r(l)}}else if(e===".ex"||e===".exs"){let s,a=/^[ \t]*(?:alias|import|require|use)[ \t]+([A-Z]\w*(?:\.[A-Z]\w*)*)(?:\.\{([^}]*)\})?/gm;for(;s=a.exec(t);){if(s[2]===void 0){r(s[1]);continue}let l=0;for(let c of s[2].split(",")){let d=c.trim();/^[A-Z]\w*(?:\.[A-Z]\w*)*$/.test(d)&&l++a?{kind:"import",spec:s,soft:!0}:{kind:"import",spec:s})}function ua(e,t){if(e===".java")return/^\s*package\s+([\w.]+)\s*;/m.exec(t)?.[1];if(e===".cs")return/^\s*(?:file-scoped\s+)?namespace\s+([\w.]+)/m.exec(t)?.[1];if(Bm.has(e)){let n=/^[ \t]*package[ \t]+([\w.`]+)/m.exec(t);return n?n[1].replace(/`/g,""):void 0}if(Um.has(e))return Nx(t)}var Ax,Ix,Tx,Bm,Um,$x,ca,Fx,fi,Om,mi,zm,Kc,Hm,da,li,ci,Rn,Px,di,Lx,ui,Nm,Dx,jx,Wx,Lm,la,Gc,Ux,zx,Hx,Gx,Dm,qx,jm,Vx,Wm,ft=z(()=>{"use strict";I();Ax=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]),Ix=new Set([".py",".pyi"]),Tx=new Set([".c",".h",".cc",".cpp",".cxx",".hpp",".hh"]),Bm=new Set([".kt",".kts"]),Um=new Set([".scala",".sc"]),$x=new Set([".sh",".bash",".zsh",".ksh",".fish"]),ca=16;Fx=/^(["']?)(?:\$\(\s*dirname\s+(["']?)\$(?:0|\{BASH_SOURCE(?:\[0\])?\}|BASH_SOURCE)\2\s*\)|\$\{(?:BASH_SOURCE(?:\[0\])?|0)%\/\*\})\//;fi=class{constructor(t){this.src=t}src;codes;blank(t,n){if(n<=t)return;let r=this.codes;if(!r){r=this.codes=new Uint16Array(this.src.length);for(let o=0;o~^"].map(e=>e.charCodeAt(0))),Wx=new Set(["return","typeof","instanceof","in","of","new","delete","void","throw","case","do","else","yield","await"]),Lm=/\bimport\(\s*['"][^'"\n]*['"]\s*[,)]|@import\b[^'"@]{0,2048}?\bfrom\s*['"][^'"\n]*['"]/g;la=/'(?:\\(?:u\{[0-9A-Fa-f]{1,6}\}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|.)|[^\\'\n])'/y;Gc="[\\w$\\u00a0-\\uffff]+",Ux=new RegExp(`(?:^|[^\\w$.])(?:import|export)\\b\\s*(?:(?:type|typeof|defer|source)\\s+)?(?:${Gc}\\s*,\\s*)?(?:${Gc}|\\*\\s*(?:as\\s+${Gc})?|\\{[^{}]*\\})\\s*from\\s*['"]([^'"]+)['"]`,"dg"),zx=/(?:^|[\n;])[ \t]*import\s*['"]([^'"]+)['"]/dg,Hx=/\brequire\(\s*['"]([^'"]+)['"]\s*\)/dg,Gx=/\bimport\(\s*['"]([^'"]+)['"]\s*[,)]/dg,Dm=/(?:^|;)[ \t]*(?:from[ \t]+(\.*[\w.]*)[ \t]+import\b[ \t]*(\([^)]*\)|(?:\\\r?\n|[^\n;])*)|import[ \t]+([^\n;]*))/gm,qx=/^[ \t]*(?:(?:abstract|final|readonly)[ \t]+)*(?:class|interface|trait|enum)[ \t]+[A-Za-z_]/m,jm=/^([ \t]*)use\s+([^;]*);/gm,Vx=/^[A-Za-z_][\w\\]*$/,Wm=/\b(?:require|include)(?:_once)?\s*\(?\s*(?:(?__DIR__|dirname\(\s*__FILE__\s*\))\s*\.\s*|(?dirname\(\s*__DIR__\s*(?:,\s*(?\d+)\s*)?\))\s*\.\s*)?['"](?[^'"]+)['"]/g});function Yx(e){return(e.split("/").pop()??"").replace(/\.[^.]+$/,"")}function Qx(e,t){let n=s=>{if(!(!s||s==="default"))for(let a of t)a.name===s&&(a.exported=!0)},r=(s,a)=>{for(let l of s.split(",")){let c=l.trim().replace(/^type\s+/,"");if(!c)continue;let d=/^([\w$]+)\s+as\s+([\w$]+)$/.exec(c);if(d){d[2]!=="default"&&n(d[1]);continue}if(a){let u=/^([\w$]+)\s*:\s*([\w$]+)$/.exec(c);if(u){n(u[1]),n(u[2]);continue}}n(/^([\w$]+)/.exec(c)?.[1])}},o;for(Gm.lastIndex=0;o=Gm.exec(e);)o[2]||r(o[1]??"",!1);for(qm.lastIndex=0;o=qm.exec(e);)r(o[1]??"",!0);for(Vm.lastIndex=0;o=Vm.exec(e);)n(o[2])}var at,Xc,At,nt,Kx,Xx,Zx,Gm,qm,Vm,Jm,Km=z(()=>{"use strict";I();ft();tt();at=`(?${ve})`,Xc=String.raw`function(?:\s*\*\s*|\s+)`,At=String.raw`(?:declare\s+)?`,nt=e=>new RegExp(e,"u"),Kx=[{re:nt(String.raw`^\s*export\s+${At}(?:async\s+)?${Xc}${at}`),kind:"function",exported:!0},{re:nt(String.raw`^\s*export\s+default\s+(?:async\s+)?${Xc}${at}`),kind:"function",exported:!0},{re:nt(String.raw`^\s*export\s+default\s+(?:abstract\s+)?class\s+(?!extends\b)${at}`),kind:"class",exported:!0},{re:nt(String.raw`^\s*${At}(?:async\s+)?${Xc}${at}`),kind:"function",exported:!1},{re:nt(String.raw`^\s*export\s+${At}(?:abstract\s+)?class\s+${at}`),kind:"class",exported:!0},{re:nt(String.raw`^\s*${At}(?:abstract\s+)?class\s+${at}`),kind:"class",exported:!1},{re:nt(String.raw`^\s*export\s+${At}interface\s+${at}`),kind:"interface",exported:!0},{re:nt(String.raw`^\s*${At}interface\s+${at}`),kind:"interface",exported:!1},{re:nt(String.raw`^\s*export\s+${At}type\s+${at}`),kind:"type",exported:!0},{re:nt(String.raw`^\s*${At}type\s+${at}\s*[=<]`),kind:"type",exported:!1},{re:nt(String.raw`^\s*export\s+${At}(?:const\s+)?enum\s+${at}`),kind:"enum",exported:!0},{re:nt(String.raw`^\s*export\s+${At}(?:namespace|module)\s+(?${ve}(?:\.${ve})*)`),kind:"namespace",exported:!0},{re:nt(String.raw`^\s*${At}(?:namespace|module)\s+(?${ve}(?:\.${ve})*)\s*\{`),kind:"namespace",exported:!1},{re:nt(String.raw`^\s*export\s+${At}(?:const|let|var)\s+${at}\s*[:=;]`),kind:"const",exported:!0},{re:nt(String.raw`^\s*exports\.${at}\s*=`),kind:"const",exported:!0},{re:nt(String.raw`^\s*module\.exports\.${at}\s*=`),kind:"const",exported:!0},{re:nt(String.raw`^\s*(?:const|let)\s+${at}\s*=\s*(?:async\s*)?\([^)]*\)\s*(?::[^=]+)?=>`),kind:"const",exported:!1},{re:nt(String.raw`^${At}(?:const|let|var)\s+${at}\s*[:=]`),kind:"const",exported:!1},{re:nt(String.raw`^\s*export\s+default\s+${at}\s*;?\s*$`),kind:"default",exported:!0}],Xx=/^\s*export\s+default\s+(?:async\s+)?(?:function|class)?\s*(?:\(|\{|extends\b)/,Zx=/^\s*export\s+default\s+(?:async\s+)?(?:function|class)\s+(?!extends\b)[\w$]+/;Gm=/export\s*\{([^}]*)\}\s*(from\b)?/g,qm=/module\.exports\s*=\s*\{([^}]*)\}/g,Vm=/(^|\n)[ \t]*export(?:\s+default\s+|\s*=\s*)([A-Za-z_$][\w$]*)[ \t]*;?[ \t]*(?=\r?\n|$)/g;Jm={lang:"javascript/typescript",exts:[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"],lexis:{mask:Er,comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n=t){let r=e.match(/\.(ts|tsx|mts|cts)$/)?"typescript":"javascript",o=xe(e,t,r,Kx,n),s=n.split(/\r?\n/);for(let a=0;a{"use strict";I();tt();fa=e=>!e.startsWith("_")||e.startsWith("__"),eS=[{re:/^(?:async\s+)?def\s+(?[\w]+)\s*\(/,kind:"function",exported:e=>fa(e.groups.name)},{re:/^\s+(?:async\s+)?def\s+(?[\w]+)\s*\(/,kind:"method",exported:e=>fa(e.groups.name)},{re:/^class\s+(?[\w]+)/,kind:"class",exported:e=>fa(e.groups.name)},{re:/^\s+class\s+(?[\w]+)/,kind:"class",exported:e=>fa(e.groups.name)}],Xm={lang:"python",exts:[".py",".pyi"],lexis:{comment:/^\s*#(?!!)/,decoration:/^\s*@/},extract(e,t){return xe(e,t,"python",eS)}}});function Ym(e){return[{re:new RegExp(String.raw`${e}(?${ve})${ma}\s+struct\b`,"u"),kind:"struct",exported:Cn},{re:new RegExp(String.raw`${e}(?${ve})${ma}\s+interface\b`,"u"),kind:"interface",exported:Cn},{re:new RegExp(String.raw`${e}(?${ve})${ma}\s+`,"u"),kind:"type",exported:Cn}]}function iS(e,t,n){let r=[],o=t.split(/\r?\n/),s=n.split(/\r?\n/);for(let a=0;a{"use strict";I();ft();tt();tS=e=>/^\p{Lu}/u.test(e),Cn=e=>tS(e.groups.name),ma=String.raw`(?:\[[^\]]*\])?`,nS=[{re:new RegExp(String.raw`^func\s+\([^)]*\)\s+(?${ve})\s*\(`,"u"),kind:"method",exported:Cn},{re:new RegExp(String.raw`^func\s+(?${ve})${ma}\s*\(`,"u"),kind:"function",exported:Cn},...Ym("^type\\s+"),{re:new RegExp(String.raw`^const\s+(?(?!_\b)${ve})`,"u"),kind:"const",exported:Cn},{re:new RegExp(String.raw`^var\s+(?(?!_\b)${ve})`,"u"),kind:"var",exported:Cn}];rS=/^(const|var|type)\s*\(\s*$/,sS={const:[{re:new RegExp(String.raw`^\s+(?(?!_\b)${ve})\b`,"u"),kind:"const",exported:Cn}],var:[{re:new RegExp(String.raw`^\s+(?(?!_\b)${ve})\b`,"u"),kind:"var",exported:Cn}],type:Ym("^\\s+")};Qm={lang:"go",exts:[".go"],lexis:{mask:e=>Ye(e,{squote:"char",backtick:!0}),comment:/^\s*\/\//,block:!0},extract(e,t,n){let r=xe(e,t,"go",nS,n),o=n===void 0?[]:iS(e,t,n);return o.length?[...r,...o].sort((s,a)=>s.line-a.line):r}}});var oS,tp,np=z(()=>{"use strict";I();tt();oS=[{re:/^\s*def\s+(?:self\.)?(?[\w?!=]+)/,kind:"method",exported:!0},{re:/^\s*(?public|private|protected|module_function|(?:public|private)_class_method)\s+def\s+(?:self\.)?(?[\w?!=]+)/,kind:"method",exported:e=>/^(public|module_function|public_class_method)$/.test(e.groups.vis)},{re:/^\s*class\s+(?[\w:]+)/,kind:"class",exported:!0},{re:/^\s*module\s+(?[\w:]+)/,kind:"module",exported:!0}],tp={lang:"ruby",exts:[".rb",".rake"],lexis:{comment:/^\s*#(?![!{])/},extract(e,t){return xe(e,t,"ruby",oS)}}});var aS,rp,sp=z(()=>{"use strict";I();ft();tt();aS=[{re:/^\s*(?:public|protected|private)?\s*(?:abstract\s+|final\s+)?class\s+(?[\w]+)/,kind:"class",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)?\s*interface\s+(?[\w]+)/,kind:"interface",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)?\s*enum\s+(?[\w]+)/,kind:"enum",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)\s+(?:static\s+|final\s+|abstract\s+|synchronized\s+)*[\w<>\[\],.?\s]+\s+(?[\w]+)\s*\(/,kind:"method",exported:(e,t)=>/\bpublic\b/.test(t)}],rp={lang:"java",exts:[".java"],lexis:{mask:e=>Ye(e,{triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"java",aS,n)}}});var gi,lS,ip,op=z(()=>{"use strict";I();ft();tt();gi=(e,t)=>/^\s*pub\b/.test(t),lS=[{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?(?:unsafe\s+)?fn\s+(?[\w]+)/,kind:"function",exported:gi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?struct\s+(?[\w]+)/,kind:"struct",exported:gi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?enum\s+(?[\w]+)/,kind:"enum",exported:gi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?trait\s+(?[\w]+)/,kind:"trait",exported:gi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?type\s+(?[\w]+)/,kind:"type",exported:gi}],ip={lang:"rust",exts:[".rs"],lexis:{mask:e=>Ye(e,{nested:!0,squote:"char",multiline:!0,raw:"r"}),comment:/^\s*\/\/(?!!)/,block:!0,decoration:/^\s*#\[/},extract(e,t,n){return xe(e,t,"rust",lS,n)}}});var hi,cS,ap,lp=z(()=>{"use strict";I();ft();tt();hi=(e,t)=>/\b(public|internal)\b/.test(t),cS=[{re:/^\s*(?:public|internal|protected|private)?\s*(?:static\s+|sealed\s+|abstract\s+|partial\s+)*(?:class|record)\s+(?\w+)/,kind:"class",exported:hi},{re:/^\s*(?:public|internal|protected|private)?\s*(?:partial\s+)?interface\s+(?\w+)/,kind:"interface",exported:hi},{re:/^\s*(?:public|internal|protected|private)?\s*(?:readonly\s+)?(?:ref\s+)?struct\s+(?\w+)/,kind:"struct",exported:hi},{re:/^\s*(?:public|internal|protected|private)?\s*enum\s+(?\w+)/,kind:"enum",exported:hi},{re:/^\s*(?:public|internal|protected|private)\s+(?:static\s+|virtual\s+|override\s+|async\s+|sealed\s+|abstract\s+|new\s+)*[\w<>\[\],.?]+\s+(?\w+)\s*(?:<[^>]*>)?\s*\(/,kind:"method",exported:hi}],ap={lang:"csharp",exts:[".cs"],lexis:{mask:e=>Ye(e,{squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*\[/},extract(e,t,n){return xe(e,t,"csharp",cS,n)}}});var dS,cp,dp=z(()=>{"use strict";I();ft();tt();dS=[{re:/^\s*(?:abstract\s+|final\s+)*class\s+(?\w+)/,kind:"class",exported:!0},{re:/^\s*interface\s+(?\w+)/,kind:"interface",exported:!0},{re:/^\s*trait\s+(?\w+)/,kind:"trait",exported:!0},{re:/^\s*enum\s+(?\w+)/,kind:"enum",exported:!0},{re:/^\s*(?:public\s+|protected\s+|private\s+|static\s+|abstract\s+|final\s+)*function\s+(?\w+)\s*\(/,kind:"function",exported:(e,t)=>!/\b(private|protected)\b/.test(t)}],cp={lang:"php",exts:[".php"],lexis:{mask:e=>Ye(e,{hash:!0,squote:"string",multiline:!0}),comment:/^\s*(?:\/\/|#(?!\[))/,block:!0,decoration:/^\s*#\[/},extract(e,t,n){return xe(e,t,"php",dS,n)}}});var hs,uS,fS,ys,vr,mS,up,fp=z(()=>{"use strict";I();ft();tt();hs=(e,t)=>!/\b(?:private|fileprivate)\b(?!\s*\(\s*set\s*\))/.test(t),uS=String.raw`(?:@${ve}(?:\([^)]*\))?\s+)*`,fS=String.raw`(?:(?:public|open|internal|private|fileprivate|package|final|static|class|override|mutating|nonmutating|convenience|required|dynamic|lazy|weak|unowned|indirect|nonisolated|isolated|distributed|optional|prefix|postfix|infix|async)(?:\([^)]*\))?\s+)*`,ys=String.raw`^\s*${uS}${fS}`,vr=(e,t,n={})=>({re:new RegExp(String.raw`${ys}${e}\s+(?!(?:func|var|let|subscript|init)\b)(?${ve})`,"u"),kind:t,exported:hs,...n}),mS=[vr("class","class"),vr("struct","struct"),vr("enum","enum"),vr("protocol","protocol"),vr("actor","actor"),{re:new RegExp(String.raw`${ys}extension\s+(?${ve}(?:\.${ve})*)`,"u"),kind:"extension",exported:hs},vr("typealias","type"),vr("func","function"),{re:new RegExp(String.raw`${ys}(?init)[?!]?\s*[<(]`,"u"),kind:"constructor",exported:hs},{re:new RegExp(String.raw`${ys}(?deinit)\s*\{`,"u"),kind:"destructor",exported:hs},{re:new RegExp(String.raw`${ys}(?subscript)\s*[<(]`,"u"),kind:"method",exported:hs},{re:new RegExp(String.raw`${ys}(?:let|var)\s+(?${ve})\s*[:={]`,"u"),kind:"property",exported:hs,scope:"member"}],up={lang:"swift",exts:[".swift"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"none",raw:"#"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"swift",mS,n)}}});var Vn,pS,gS,Jn,mp,hS,pp,gp=z(()=>{"use strict";I();ft();tt();Vn=(e,t)=>!/\bprivate\b/.test(t),pS=String.raw`(?:@[\w.:]+(?:\([^)]*\))?\s+)*`,gS=String.raw`(?:(?:public|internal|private|protected|abstract|sealed|open|final|data|value|inline|inner|override|suspend|operator|infix|tailrec|external|lateinit|expect|actual|const|companion|enum|annotation)\s+)*`,Jn=String.raw`^\s*${pS}${gS}`,mp=String.raw`(?:${ve}(?:<[^()=]*>)?\??\.)*`,hS=[{re:new RegExp(String.raw`${Jn}enum\s+class\s+(?${ve})`,"u"),kind:"enum",exported:Vn},{re:new RegExp(String.raw`${Jn}annotation\s+class\s+(?${ve})`,"u"),kind:"annotation",exported:Vn},{re:new RegExp(String.raw`${Jn}class\s+(?${ve})`,"u"),kind:"class",exported:Vn},{re:new RegExp(String.raw`${Jn}(?:fun\s+)?interface\s+(?${ve})`,"u"),kind:"interface",exported:Vn},{re:new RegExp(String.raw`${Jn}object\s+(?${ve})`,"u"),kind:"object",exported:Vn},{re:new RegExp(String.raw`${Jn}typealias\s+(?${ve})`,"u"),kind:"type",exported:Vn},{re:new RegExp(String.raw`${Jn}fun\s+(?:<[^>]*(?:>[^>]*)?>\s*)?${mp}(?${ve})\s*\(`,"u"),kind:"function",exported:Vn},{re:new RegExp(String.raw`${Jn}(?:val|var)\s+(?:<[^>]*>\s*)?${mp}(?${ve})\s*(?:[:=]|by\b)`,"u"),kind:"property",exported:Vn,scope:"member"}],pp={lang:"kotlin",exts:[".kt",".kts"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"kotlin",hS,n)}}});var yS,_S,hp,yp=z(()=>{"use strict";I();ft();tt();yS="(?!\\s*(?:if|for|while|switch|return|else|do|sizeof|typedef)\\b)",_S=[{re:/^\s*(?:class|struct)\s+(?[A-Za-z_]\w+)\s*(?:[:{]|$)/,kind:"class",exported:!0},{re:/^\s*namespace\s+(?[A-Za-z_]\w+)/,kind:"namespace",exported:!0},{re:/^\s*(?:typedef\s+)?(?:struct|enum|union)\s+(?[A-Za-z_]\w+)\s*\{/,kind:"struct",exported:!0},{re:new RegExp(`^${yS}[A-Za-z_][\\w\\s\\*&<>:,]*?\\b(?[A-Za-z_]\\w+)\\s*\\([^;{]*\\)\\s*(?:const)?\\s*\\{?\\s*$`),kind:"function",exported:!0}],hp={lang:"c/cpp",exts:[".c",".h",".cc",".cpp",".cxx",".hpp",".hh"],lexis:{mask:e=>Ye(e,{squote:"char"}),comment:/^\s*\/\//,block:!0},extract(e,t,n){return xe(e,t,e.match(/\.(c|h)$/)?"c":"cpp",_S,n)}}});var bS,_p,bp=z(()=>{"use strict";I();tt();bS=[{re:/^\s*local\s+function\s+(?[\w.:]+)\s*\(/,kind:"function",exported:!1},{re:/^\s*function\s+(?[\w.:]+)\s*\(/,kind:"function",exported:!0},{re:/^\s*(?:local\s+)?(?[\w.]+)\s*=\s*function\s*\(/,kind:"function",exported:!0}],_p={lang:"lua",exts:[".lua"],lexis:{comment:/^\s*--/},extract(e,t){return xe(e,t,"lua",bS).map(n=>{let r=Math.max(n.name.lastIndexOf("."),n.name.lastIndexOf(":"));return r>0&&r{"use strict";I();tt();wS=[{re:/^\s*function\s+(?[\w:-]+)\s*(?:\(\))?\s*\{?/,kind:"function",exported:!0},{re:/^\s*(?[A-Za-z_][\w:-]*)\s*\(\)\s*\{?/,kind:"function",exported:!0}],wp={lang:"shell",exts:[".sh",".bash",".zsh",".ksh"],lexis:{comment:/^\s*#(?!!)/},extract(e,t){return xe(e,t,"shell",wS)}}});var xS,Sp,kp=z(()=>{"use strict";I();tt();xS=[{re:/^\s*defmodule\s+(?[\w.]+)/,kind:"module",exported:!0},{re:/^\s*defp\s+(?[\w?!]+)/,kind:"function",exported:!1},{re:/^\s*def\s+(?[\w?!]+)/,kind:"function",exported:!0},{re:/^\s*defmacrop\s+(?[\w?!]+)/,kind:"macro",exported:!1},{re:/^\s*defmacro\s+(?[\w?!]+)/,kind:"macro",exported:!0},{re:/^\s*defguardp\s+(?[\w?!]+)/,kind:"guard",exported:!1},{re:/^\s*defguard\s+(?[\w?!]+)/,kind:"guard",exported:!0}],Sp={lang:"elixir",exts:[".ex",".exs"],lexis:{comment:/^\s*#/,decoration:/^\s*@(?!(?:doc|moduledoc|typedoc)\b)\w+/,docAttr:!0},extract(e,t){return xe(e,t,"elixir",xS)}}});var SS,Ep,vp=z(()=>{"use strict";I();ft();tt();SS=[{re:/^\s*(?:final\s+|sealed\s+|abstract\s+|implicit\s+)*(?:case\s+)?class\s+(?\w+)/,kind:"class",exported:!0},{re:/^\s*(?:sealed\s+)?trait\s+(?\w+)/,kind:"trait",exported:!0},{re:/^\s*(?:case\s+)?object\s+(?\w+)/,kind:"object",exported:!0},{re:/^\s*(?:override\s+|final\s+|private\s+|protected\s+|implicit\s+)*def\s+(?\w+)/,kind:"def",exported:(e,t)=>!/\b(private|protected)\b/.test(t)}],Ep={lang:"scala",exts:[".scala",".sc"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"scala",SS,n)}}});function RS(e,t,n,r){let o=[],s=n.split(/\r?\n/),a=t.split(/\r?\n/),l,c=0,d;for(let u=0;uc?p:-1),p!==d||r.has(u+1))continue;let g=vS.exec(f);if(!g||g.groups.type!==l)continue;let h=g.groups.name??l;o.push({name:h,kind:"constructor",file:e,line:u+1,signature:a[u].trim().slice(0,200),exported:!h.startsWith("_")&&!l.startsWith("_"),lang:"dart"})}return o}var rn,ga,pa,Rp,Cp,kS,ES,vS,Mp,Ap=z(()=>{"use strict";I();ft();tt();rn=e=>!(e.groups?.name??"").startsWith("_"),ga=String.raw`(?:@[\w$.]+(?:\([^)]*\))?\s+)*`,pa=String.raw`(?!(?:return|await|throw|new|else|if|for|while|do|switch|yield|case|const|final|var|late|factory|get|set|is|as|in)\b)[\w$.]+(?:<[^;{}()=]*>)?\??`,Rp=String.raw`(?!(?:if|for|while|switch|catch|return|assert|super|this|Function)\b)`,Cp=String.raw`\((?:[^()]|\([^()]*\))*(?:\)\s*(?:async\s*\*?|sync\s*\*)?\s*(?:=>|\{|;)|$)`,kS=[{re:/^\s*(?:(?:abstract|base|final|sealed|interface|mixin)\s+)*class\s+(?[\w$]+)/,kind:"class",exported:rn},{re:/^\s*(?:base\s+)?mixin\s+(?[\w$]+)/,kind:"mixin",exported:rn},{re:/^\s*extension\s+(?:type\s+(?:const\s+)?)?(?!on\b)(?[\w$]+)/,kind:"extension",exported:rn},{re:/^\s*enum\s+(?[\w$]+)/,kind:"enum",exported:rn},{re:/^\s*typedef\s+(?[\w$]+)/,kind:"type",exported:rn},{re:new RegExp(String.raw`^\s*${ga}(?:(?:static|external)\s+)*(?:${pa}\s+)?get\s+(?[\w$]+)\s*(?:=>|\{|;|async\b|sync\b)`),kind:"getter",exported:rn},{re:new RegExp(String.raw`^\s*${ga}(?:(?:static|external)\s+)*(?:void\s+)?set\s+(?[\w$]+)\s*\(`),kind:"setter",exported:rn},{re:new RegExp(String.raw`^\s*${ga}(?:(?:static|external)\s+)*${pa}\s+${Rp}(?[\w$]+)\s*(?:<[^()]*>)?\s*${Cp}`),kind:"function",exported:rn},{re:new RegExp(String.raw`^${Rp}(?[\w$]+)\s*(?:<[^()]*>)?\s*${Cp}`),kind:"function",exported:rn},{re:new RegExp(String.raw`^(?:const|final)\s+(?:${pa}\s+)?(?[\w$]+)\s*[=;]`),kind:"const",exported:rn},{re:new RegExp(String.raw`^(?:late\s+final|late|var)\s+(?:${pa}\s+)?(?[\w$]+)\s*[=;]`),kind:"var",exported:rn}],ES=/^(?\s*)(?:(?:abstract|base|final|sealed|interface|mixin)\s+)*(?:class|enum|mixin|extension(?:\s+type(?:\s+const)?)?)\s+(?[\w$]+)/,vS=new RegExp(String.raw`^(?\s*)${ga}(?:(?:const|factory|external)\s+)*(?[\w$]+)(?:\.(?[\w$]+))?\s*\(`);Mp={lang:"dart",exts:[".dart"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"string"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n=t){let r=xe(e,t,"dart",kS,n),o=RS(e,t,n,new Set(r.map(s=>s.line)));return o.length?[...r,...o].sort((s,a)=>s.line-a.line):r}}});function Yc(e,t,n){let r=Zc.get(t),o;if(!r)o=[];else try{let l=r.lexis,c=l?.mask?.(n);o=r.extract(e,n,c),l&&(o=$m(o,n,l,c))}catch{o=[]}let s=new Set(o.map(l=>l.name)),a=aa(e,n,o).filter(l=>!s.has(l.name));return a.length?[...o,...a]:o}function Qc(e){return Zc.get(e)?.lang??nn(e)}var CS,Zc,Rr=z(()=>{"use strict";I();tt();Km();Zm();ep();np();sp();op();lp();dp();fp();gp();yp();bp();xp();kp();vp();Ap();CS=[Jm,Xm,Qm,tp,rp,ip,ap,cp,up,pp,hp,_p,wp,Sp,Ep,Mp],Zc=new Map;for(let e of CS)for(let t of e.exts)Zc.set(t,e)});function Ip(e,t){let n=e.split("/").pop().toLowerCase();return AS.has(t)||MS.test(n)||IS.test(e)}function FS(e,t){let n=e.split("/").pop().toLowerCase();return TS.has(n)||$S.has(t)}function Tp(e){return!OS.has(Qc(e))}function mt(e,t){return Tp(t)?"code":Ip(e,t)?"doc":FS(e,t)?"config":"other"}var MS,AS,IS,TS,$S,ed,OS,Mn=z(()=>{"use strict";I();Rr();MS=/^(readme|changelog|contributing|history|news|authors|notice|security|code_of_conduct|faq|getting[-_]?started|usage|guide|tutorial)\b/i,AS=new Set([".md",".mdx",".rst",".adoc",".txt"]),IS=/^(docs?|documentation|wiki|guides?|website|site|book)\//i,TS=new Set(["package.json","pnpm-workspace.yaml","tsconfig.json","jsconfig.json","pyproject.toml","setup.py","setup.cfg","requirements.txt","pipfile","go.mod","cargo.toml","gemfile","pom.xml","build.gradle","build.gradle.kts","composer.json","mix.exs","pubspec.yaml","build.sbt","dockerfile","docker-compose.yml","docker-compose.yaml","makefile",".env.example","manifest.json"]),$S=new Set([".json",".yaml",".yml",".toml",".ini",".cfg"]),ed=new Set([".md",".mdx"]);OS=new Set(["markdown","restructuredtext","text","json","yaml","toml","ini","other","html","css","scss"])});function td(e){let t="";for(let n=0;nt.some(r=>r.test(n))}function nd(e){if(!e||e.length===0)return null;let t=e.map(n=>n.split("/").map(r=>r.includes("**")?null:td(r)));return n=>{let r=n.split("/");return t.some(o=>{for(let s=0;sn.endsWith("/**")&&n.length>3).map(n=>td(n.slice(0,-3)));return t.length===0?null:n=>t.some(r=>r.test(n))}function Fp(e){if(!e||e.length===0)return null;let t=It(e.filter(r=>!r.startsWith("!"))),n=It(e.filter(r=>r.startsWith("!")).map(r=>r.slice(1)));return r=>(!t||t(r))&&!n?.(r)}var yi=z(()=>{"use strict";I();et()});function NS(e){let t=e.split(/\r?\n/),n=[],r=null,o=!1,s=!1,a=!0;for(let l of t){if(r){r.test(l)&&(r=null),n.push("");continue}let c=/^\s*(`{3,}|~{3,})/.exec(l);if(c){r=new RegExp(`^\\s*${c[1][0]}{${c[1].length},}\\s*$`),s=!1,a=!1,n.push("");continue}let d=!l.trim(),u=/^(?: {4}|\t)/.test(l);if(s&&(d||u)){n.push("");continue}if(s=!1,u&&a&&!o){s=!0,n.push("");continue}d||(/^ {0,3}(?:[-*+]|\d+[.)])(?:\s|$)/.test(l)?o=!0:a&&!/^\s/.test(l)&&(o=!1)),a=d,n.push(l)}return n.join(` -`)}function PS(e){return!e||e.startsWith("#")||e.startsWith("//")?!0:/^[a-z][a-z0-9+.-]*:/i.test(e)}function Op(e){return e.replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/`([^`]*)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/[#>*_~-]+/g," ").replace(/\s+/g," ").trim()}function LS(e){return/[A-Za-zÀ-ɏ]{3,}/.test(e)}function DS(e){return/^(all notable changes to this project|in the interest of fostering|this project adheres to|we as members and leaders|table of contents)\b/i.test(e)}function WS(e){let t=e.trim();return!!t&&!/^ {4}|^\t/.test(e)&&!/^([-*+]|\d+[.)])(\s|$)/.test(t)&&!/^[>|<]/.test(t)}function US(e,t){let n=1;for(let r=t;rt?e.slice(t,r):void 0}}}function rd(e){let t=e,n,r=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(t);if(r){let y=/(^|\n)title:\s*["']?(.+?)["']?\s*(\n|$)/i.exec(r[1]);y&&(n=y[2].trim()),t=t.slice(r[0].length)}let o=NS(t),s=o.split(/\r?\n/),a=[],l=n,c,d=!1,u=(y,b)=>{let x=Op(b);a.push(x),!l&&y===1&&(l=x),!c&&y>=2&&(d=!0)};for(let y=0;y");)y++;continue}if(!c&&!d&&v&&!/^([-*+]|\d+\.)\s/.test(v)&&!v.startsWith("|")&&!v.startsWith("<")){let T=Op(v);T.length>=8&&LS(T)&&!T.endsWith(":")&&!DS(T)&&(c=T.slice(0,200))}}let f=[],m=new Set,p=y=>{let b=y.trim();b=b.replace(/\s+["'(].*$/,"").trim(),b=b.replace(/^<|>$/g,""),!PS(b)&&(m.has(b)||(m.add(b),f.push({kind:"doc-link",spec:b})))},g=/!?\[[^\]]*\]\(/g,h;for(;h=g.exec(o);){let y=US(o,g.lastIndex);y&&p(y)}let _=/^[^\S\r\n]*\[(?!\^)[^\]]+\]:\s+(\S+)/gm;for(;h=_.exec(o);)p(h[1]);return{title:l,summary:c,headings:a,refs:f}}var jS,BS,sd=z(()=>{"use strict";I();jS=/^ {0,3}(=+|-+)\s*$/;BS=/^>\s*\[!(?:note|tip|important|warning|caution)\]\s*$/i});function zS(e,t){if(!ha.test(e))return!1;let n=e.trimEnd().length;return n>=[...t.trim()].length||n>=4}function Np(e){return e.replace(/``([^`]+)``/g,"$1").replace(/:[\w:.+-]+:`([^`<]*?)\s*<[^`>]*>`/g,"$1").replace(/:doc:`([^`]*)`/g,(t,n)=>n.slice(n.lastIndexOf("/")+1)).replace(/:[\w:.+-]+:`!?~?([^`]*)`/g,(t,n)=>n.startsWith("~")?n.slice(n.lastIndexOf(".")+1):n).replace(/`([^`<]*?)\s*<[^`>]*>`__?/g,"$1").replace(/`([^`]+)`__?/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/\|([^|\s][^|]*)\|/g,"$1").replace(/\s+/g," ").trim()}function id(e,t,n,r){let o=t.trim();if(!o||o==="self"||/[:*?[\]\s]/.test(o))return;if(!o.startsWith("/")){r({kind:"doc-link",spec:o+n});return}let s=e.split("/").length-1;for(let a=0;a<=s;a++)r({kind:"doc-link",spec:"../".repeat(a)+o.slice(1)+n,soft:!0})}function ad(e,t){let n=t.split(/\r?\n/),r=[],o,s,a=[],l=!1,c=[],d=new Set,u=y=>{let b=`${y.soft?"~":""}${y.spec}`;d.has(b)||(d.add(b),c.push(y))},f=(y,b)=>{let x=a.indexOf(y);x===-1&&(x=a.push(y)-1);let k=Np(b);r.push(k),o||(o=k),x>0&&!s&&(l=!0)},m=y=>!(n[y]??"").trim();for(let y=0;y]+)>\s*$/.exec(C);id(e,A?A[1]:C,".rst",u)}else qS.has(v)||p(R)}y=F-1;continue}if(/^\s*\.\.(?:\s|$)/.test(b)){y=g(y);continue}p(b),!s&&!l&&h(y)&&(s=_(y)),/::\s*$/.test(b)&&(y=g(y))}return{title:o,summary:s,headings:r,refs:c};function p(y){for(let b of y.matchAll(GS))id(e,b[1]??b[2],".rst",u)}function g(y){let b=od(n[y]);for(;y+1b);)y++;return y}function h(y){let b=n[y];return!!b.trim()&&!/^\s/.test(b)&&(y===0||m(y-1))}function _(y){if(/^(?:[-*+•]\s|#\.\s|\d+[.)]\s|\(?[a-z0-9]\)\s|[+=|]|:[^:\s][^:]*:(?:\s|$))/i.test(n[y]))return;let b=[];for(let v=y;v{"use strict";I();ha=/^([!-/:-@[-`{-~])\1+\s*$/;od=e=>e.length-e.trimStart().length,HS=/^(\s*)\.\.\s+([\w:-]+)::\s*(.*)$/,GS=/:doc:`(?:[^`<]*<([^`>]+)>|([^`]+))`/g,qS=new Set(["code-block","code","sourcecode","literalinclude","doctest","testcode","testoutput","testsetup","testcleanup","ipython","math","raw","graphviz","productionlist","highlight","jinja"])});function ZS(e){return e.lengthPp?!1:XS.test(e)}function YS(e){let t=e.trim();return!t||t.length>Pp||KS.has(t)?!1:Number.isFinite(Number(t))}function cd(e){let t=e,n=/^(?:[rRbBuUfF]{1,2}|@|\$)?(?:#*)?(['"`])/.exec(t);if(n){let r=n[1],o=t.indexOf(r),s=t.lastIndexOf(r),a=t.startsWith(r.repeat(3),o)&&s-o>=5&&t.endsWith(r.repeat(3),s+1)?3:1;s>o&&(t=t.slice(o+a,s+1-a))}return t}var Pp,VS,JS,KS,XS,Kn,ya=z(()=>{"use strict";I();le();Pp=80,VS=2,JS=256,KS=new Set(["0","1","-1","2","-2"]),XS=/[\p{L}\p{N}]/u;Kn=class{seen=new Set;out=[];get full(){return this.out.length>=JS}add(t,n,r){if(this.full||t==="string"&&!ZS(n)||t==="number"&&!YS(n)||t==="regex"&&!n)return;let o=`${t}\0${n}\0${r}`;this.seen.has(o)||(this.seen.add(o),this.out.push({value:n,line:r,kind:t}))}addString(t,n){this.add("string",cd(t),n)}result(){if(this.out.length)return this.out.sort((t,n)=>$(t.value,n.value)||t.line-n.line||$(t.kind,n.kind))}}});function _a(){return"/home"}function Lp(){return"/tmp"}function ba(){return typeof navigator<"u"&&navigator?.hardwareConcurrency?navigator.hardwareConcurrency:1}function Dp(){return Array.from({length:ba()},()=>({model:"browser",speed:0,times:{user:0,nice:0,sys:0,idle:0,irq:0}}))}var _i=z(()=>{I()});function wa(e){let t=typeof e=="string"?e:e.href;try{return decodeURIComponent(new URL(t).pathname)}catch{return t}}function Cr(e){return new URL(`file://${e.startsWith("/")?"":"/"}${e}`)}var bi=z(()=>{I()});var dd={};vc(dd,{createRequire:()=>ek,default:()=>tk});var ek,tk,ud=z(()=>{I();ek=()=>{throw new Error("node-only API in the browser build")},tk={}});function _s(e){if(e!==Xn)throw new Error("Illegal constructor")}function xi(e){return!!e&&typeof e.row=="number"&&typeof e.column=="number"}function qp(e){M=e}function bs(e){try{return new FinalizationRegistry(e)}catch(t){console.error("Unsupported FinalizationRegistry:",t);return}}function yd(e,t,n,r){let o=n-t,s=e.textCallback(t,r);if(s){for(t+=s.length;t0)t+=a.length,s+=a;else break}t>n&&(s=s.slice(0,o))}return s??""}function hd(e,t,n,r,o){for(let s=0,a=o.length;s>>0,column:M.getValue(e+re,"i32")>>>0}}function Jp(e,t){jt(e,t.startPosition),e+=hn,jt(e,t.endPosition),e+=hn,M.setValue(e,t.startIndex,"i32"),e+=re,M.setValue(e,t.endIndex,"i32"),e+=re}function Sa(e){let t={};return t.startPosition=Mr(e),e+=hn,t.endPosition=Mr(e),e+=hn,t.startIndex=M.getValue(e,"i32")>>>0,e+=re,t.endIndex=M.getValue(e,"i32")>>>0,t}function Kp(e,t=Q){jt(t,e.startPosition),t+=hn,jt(t,e.oldEndPosition),t+=hn,jt(t,e.newEndPosition),t+=hn,M.setValue(t,e.startIndex,"i32"),t+=re,M.setValue(t,e.oldEndIndex,"i32"),t+=re,M.setValue(t,e.newEndIndex,"i32"),t+=re}function Xp(e){let t=M.getValue(e,"i32"),n=M.getValue(e+=re,"i32"),r=M.getValue(e+=re,"i32");return{major_version:t,minor_version:n,patch_version:r}}async function Zp(moduleArg={}){var moduleRtn,Module=moduleArg,ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope<"u",ENVIRONMENT_IS_NODE=typeof O=="object"&&O.versions?.node&&O.type!="renderer";if(ENVIRONMENT_IS_NODE){let{createRequire:e}=await Promise.resolve().then(()=>(ud(),dd));var require=e(import.meta.url)}Module.currentQueryProgressCallback=null,Module.currentProgressCallback=null,Module.currentLogCallback=null,Module.currentParseCallback=null;var arguments_=[],thisProgram="./this.program",quit_=D((e,t)=>{throw t},"quit_"),_scriptName=import.meta.url,scriptDirectory="";function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}D(locateFile,"locateFile");var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");_scriptName.startsWith("file:")&&(scriptDirectory=require("path").dirname(require("url").fileURLToPath(_scriptName))+"/"),readBinary=D(e=>{e=isFileURI(e)?new URL(e):e;var t=fs.readFileSync(e);return t},"readBinary"),readAsync=D(async(e,t=!0)=>{e=isFileURI(e)?new URL(e):e;var n=fs.readFileSync(e,t?void 0:"utf8");return n},"readAsync"),O.argv.length>1&&(thisProgram=O.argv[1].replace(/\\/g,"/")),arguments_=O.argv.slice(2),quit_=D((e,t)=>{throw O.exitCode=e,t},"quit_")}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}ENVIRONMENT_IS_WORKER&&(readBinary=D(e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)},"readBinary")),readAsync=D(async e=>{if(isFileURI(e))return new Promise((n,r)=>{var o=new XMLHttpRequest;o.open("GET",e,!0),o.responseType="arraybuffer",o.onload=()=>{if(o.status==200||o.status==0&&o.response){n(o.response);return}r(o.status)},o.onerror=r,o.send(null)});var t=await fetch(e,{credentials:"same-origin"});if(t.ok)return t.arrayBuffer();throw new Error(t.status+" : "+t.url)},"readAsync")}var out=console.log.bind(console),err=console.error.bind(console),dynamicLibraries=[],wasmBinary,ABORT=!1,EXITSTATUS,isFileURI=D(e=>e.startsWith("file://"),"isFileURI"),readyPromiseResolve,readyPromiseReject,wasmMemory,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,HEAP64,HEAPU64,HEAP_DATA_VIEW,runtimeInitialized=!1;function updateMemoryViews(){var e=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e),Module.HEAP64=HEAP64=new BigInt64Array(e),Module.HEAPU64=HEAPU64=new BigUint64Array(e),Module.HEAP_DATA_VIEW=HEAP_DATA_VIEW=new DataView(e),LE_HEAP_UPDATE()}D(updateMemoryViews,"updateMemoryViews");function initMemory(){if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else{var e=Module.INITIAL_MEMORY||33554432;wasmMemory=new WebAssembly.Memory({initial:e/65536,maximum:32768})}updateMemoryViews()}D(initMemory,"initMemory");var __RELOC_FUNCS__=[];function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(onPreRuns)}D(preRun,"preRun");function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),wasmExports.__wasm_call_ctors(),callRuntimeCallbacks(onPostCtors)}D(initRuntime,"initRuntime");function preMain(){}D(preMain,"preMain");function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(onPostRuns)}D(postRun,"postRun");function abort(e){Module.onAbort?.(e),e="Aborted("+e+")",err(e),ABORT=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw readyPromiseReject?.(t),t}D(abort,"abort");var wasmBinaryFile;function findWasmBinary(){return Module.locateFile?locateFile("web-tree-sitter.wasm"):new URL("web-tree-sitter.wasm",import.meta.url).href}D(findWasmBinary,"findWasmBinary");function getBinarySync(e){if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}D(getBinarySync,"getBinarySync");async function getWasmBinary(e){if(!wasmBinary)try{var t=await readAsync(e);return new Uint8Array(t)}catch{}return getBinarySync(e)}D(getWasmBinary,"getWasmBinary");async function instantiateArrayBuffer(e,t){try{var n=await getWasmBinary(e),r=await WebAssembly.instantiate(n,t);return r}catch(o){err(`failed to asynchronously prepare wasm: ${o}`),abort(o)}}D(instantiateArrayBuffer,"instantiateArrayBuffer");async function instantiateAsync(e,t,n){if(!e&&!isFileURI(t)&&!ENVIRONMENT_IS_NODE)try{var r=fetch(t,{credentials:"same-origin"}),o=await WebAssembly.instantiateStreaming(r,n);return o}catch(s){err(`wasm streaming compile failed: ${s}`),err("falling back to ArrayBuffer instantiation")}return instantiateArrayBuffer(t,n)}D(instantiateAsync,"instantiateAsync");function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)}}D(getWasmImports,"getWasmImports");async function createWasm(){function e(s,a){wasmExports=s.exports,wasmExports=relocateExports(wasmExports,1024);var l=getDylinkMetadata(a);return l.neededDynlibs&&(dynamicLibraries=l.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),assignWasmExports(wasmExports),wasmExports}D(e,"receiveInstance");function t(s){return e(s.instance,s.module)}D(t,"receiveInstantiationResult");var n=getWasmImports();if(Module.instantiateWasm)return new Promise((s,a)=>{Module.instantiateWasm(n,(l,c)=>{s(e(l,c))})});wasmBinaryFile??=findWasmBinary();var r=await instantiateAsync(wasmBinary,wasmBinaryFile,n),o=t(r);return o}D(createWasm,"createWasm");class ExitStatus{static{D(this,"ExitStatus")}name="ExitStatus";constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(e,t){var n=GOT[t];return n||(n=GOT[t]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(t)||(n.required=!0),n}},LE_ATOMICS_NATIVE_BYTE_ORDER=[],LE_HEAP_LOAD_F32=D(e=>HEAP_DATA_VIEW.getFloat32(e,!0),"LE_HEAP_LOAD_F32"),LE_HEAP_LOAD_F64=D(e=>HEAP_DATA_VIEW.getFloat64(e,!0),"LE_HEAP_LOAD_F64"),LE_HEAP_LOAD_I16=D(e=>HEAP_DATA_VIEW.getInt16(e,!0),"LE_HEAP_LOAD_I16"),LE_HEAP_LOAD_I32=D(e=>HEAP_DATA_VIEW.getInt32(e,!0),"LE_HEAP_LOAD_I32"),LE_HEAP_LOAD_I64=D(e=>HEAP_DATA_VIEW.getBigInt64(e,!0),"LE_HEAP_LOAD_I64"),LE_HEAP_LOAD_U32=D(e=>HEAP_DATA_VIEW.getUint32(e,!0),"LE_HEAP_LOAD_U32"),LE_HEAP_STORE_F32=D((e,t)=>HEAP_DATA_VIEW.setFloat32(e,t,!0),"LE_HEAP_STORE_F32"),LE_HEAP_STORE_F64=D((e,t)=>HEAP_DATA_VIEW.setFloat64(e,t,!0),"LE_HEAP_STORE_F64"),LE_HEAP_STORE_I16=D((e,t)=>HEAP_DATA_VIEW.setInt16(e,t,!0),"LE_HEAP_STORE_I16"),LE_HEAP_STORE_I32=D((e,t)=>HEAP_DATA_VIEW.setInt32(e,t,!0),"LE_HEAP_STORE_I32"),LE_HEAP_STORE_I64=D((e,t)=>HEAP_DATA_VIEW.setBigInt64(e,t,!0),"LE_HEAP_STORE_I64"),LE_HEAP_STORE_U32=D((e,t)=>HEAP_DATA_VIEW.setUint32(e,t,!0),"LE_HEAP_STORE_U32"),callRuntimeCallbacks=D(e=>{for(;e.length>0;)e.shift()(Module)},"callRuntimeCallbacks"),onPostRuns=[],addOnPostRun=D(e=>onPostRuns.push(e),"addOnPostRun"),onPreRuns=[],addOnPreRun=D(e=>onPreRuns.push(e),"addOnPreRun"),UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder:void 0,findStringEnd=D((e,t,n,r)=>{var o=t+n;if(r)return o;for(;e[t]&&!(t>=o);)++t;return t},"findStringEnd"),UTF8ArrayToString=D((e,t=0,n,r)=>{var o=findStringEnd(e,t,n,r);if(o-t>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,o));for(var s="";t>10,56320|d&1023)}}return s},"UTF8ArrayToString"),getDylinkMetadata=D(e=>{var t=0,n=0;function r(){return e[t++]}D(r,"getU8");function o(){for(var w=0,E=1;;){var P=e[t++];if(w+=(P&127)*E,E*=128,!(P&128))break}return w}D(o,"getLEB");function s(){var w=o();return t+=w,UTF8ArrayToString(e,t-w,w)}D(s,"getString");function a(){for(var w=o(),E=[];w--;)E.push(s());return E}D(a,"getStringList");function l(w,E){if(w)throw new Error(E)}if(D(l,"failIf"),e instanceof WebAssembly.Module){var c=WebAssembly.Module.customSections(e,"dylink.0");l(c.length===0,"need dylink section"),e=new Uint8Array(c[0]),n=e.length}else{var d=new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer),u=d[0]==1836278016||d[0]==6386541;l(!u,"need to see wasm magic number"),l(e[8]!==0,"need the dylink section to be first"),t=9;var f=o();n=t+f;var m=s();l(m!=="dylink.0")}for(var p={neededDynlibs:[],tlsExports:new Set,weakImports:new Set,runtimePaths:[]},g=1,h=2,_=3,y=4,b=5,x=256,k=3,v=1;t>1)*2);case"i32":return LE_HEAP_LOAD_I32((e>>2)*4);case"i64":return LE_HEAP_LOAD_I64((e>>3)*8);case"float":return LE_HEAP_LOAD_F32((e>>2)*4);case"double":return LE_HEAP_LOAD_F64((e>>3)*8);case"*":return LE_HEAP_LOAD_U32((e>>2)*4);default:abort(`invalid type for getValue: ${t}`)}}D(getValue,"getValue");var newDSO=D((e,t,n)=>{var r={refcount:1/0,name:e,exports:n,global:!0};return LDSO.loadedLibsByName[e]=r,t!=null&&(LDSO.loadedLibsByHandle[t]=r),r},"newDSO"),LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=82240,alignMemory=D((e,t)=>Math.ceil(e/t)*t,"alignMemory"),getMemory=D(e=>{if(runtimeInitialized)return _calloc(e,1);var t=___heap_base,n=t+alignMemory(e,16);return ___heap_base=n,GOT.__heap_base.value=n,t},"getMemory"),isInternalSym=D(e=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(e)||e.startsWith("__em_js__"),"isInternalSym"),uleb128EncodeWithLen=D(e=>{let t=e.length;return[t%128|128,t>>7,...e]},"uleb128EncodeWithLen"),wasmTypeCodes={i:127,p:127,j:126,f:125,d:124,e:111},generateTypePack=D(e=>uleb128EncodeWithLen(Array.from(e,t=>{var n=wasmTypeCodes[t];return n})),"generateTypePack"),convertJsFunctionToWasm=D((e,t)=>{var n=Uint8Array.of(0,97,115,109,1,0,0,0,1,...uleb128EncodeWithLen([1,96,...generateTypePack(t.slice(1)),...generateTypePack(t[0]==="v"?"":t[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),r=new WebAssembly.Module(n),o=new WebAssembly.Instance(r,{e:{f:e}}),s=o.exports.f;return s},"convertJsFunctionToWasm"),wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:31,element:"anyfunc"}),getWasmTableEntry=D(e=>{var t=wasmTableMirror[e];return t||(wasmTableMirror[e]=t=wasmTable.get(e)),t},"getWasmTableEntry"),updateTableMap=D((e,t)=>{if(functionsInTableMap)for(var n=e;n(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(e)||0),"getFunctionAddress"),freeTableIndexes=[],getEmptyTableSlot=D(()=>freeTableIndexes.length?freeTableIndexes.pop():wasmTable.grow(1),"getEmptyTableSlot"),setWasmTableEntry=D((e,t)=>{wasmTable.set(e,t),wasmTableMirror[e]=wasmTable.get(e)},"setWasmTableEntry"),addFunction=D((e,t)=>{var n=getFunctionAddress(e);if(n)return n;var r=getEmptyTableSlot();try{setWasmTableEntry(r,e)}catch(s){if(!(s instanceof TypeError))throw s;var o=convertJsFunctionToWasm(e,t);setWasmTableEntry(r,o)}return functionsInTableMap.set(e,r),r},"addFunction"),updateGOT=D((e,t)=>{for(var n in e)if(!isInternalSym(n)){var r=e[n];GOT[n]||=new WebAssembly.Global({value:"i32",mutable:!0}),(t||GOT[n].value==0)&&(typeof r=="function"?GOT[n].value=addFunction(r):typeof r=="number"?GOT[n].value=r:err(`unhandled export type for '${n}': ${typeof r}`))}},"updateGOT"),relocateExports=D((e,t,n)=>{var r={};for(var o in e){var s=e[o];typeof s=="object"&&(s=s.value),typeof s=="number"&&(s+=t),r[o]=s}return updateGOT(r,n),r},"relocateExports"),isSymbolDefined=D(e=>{var t=wasmImports[e];return!(!t||t.stub)},"isSymbolDefined"),dynCall=D((e,t,n=[],r=!1)=>{var o=getWasmTableEntry(t),s=o(...n);function a(l){return l}return D(a,"convert"),s},"dynCall"),stackSave=D(()=>_emscripten_stack_get_current(),"stackSave"),stackRestore=D(e=>__emscripten_stack_restore(e),"stackRestore"),createInvokeFunction=D(e=>(t,...n)=>{var r=stackSave();try{return dynCall(e,t,n)}catch(o){if(stackRestore(r),o!==o+0)throw o;if(_setThrew(1,0),e[0]=="j")return 0n}},"createInvokeFunction"),resolveGlobalSymbol=D((e,t=!1)=>{var n;return isSymbolDefined(e)?n=wasmImports[e]:e.startsWith("invoke_")&&(n=wasmImports[e]=createInvokeFunction(e.split("_")[1])),{sym:n,name:e}},"resolveGlobalSymbol"),onPostCtors=[],addOnPostCtor=D(e=>onPostCtors.push(e),"addOnPostCtor"),UTF8ToString=D((e,t,n)=>e?UTF8ArrayToString(HEAPU8,e,t,n):"","UTF8ToString"),loadWebAssemblyModule=D((binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);function loadModule(){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,LE_HEAP_STORE_U32((handle+12>>2)*4,memoryBase),LE_HEAP_STORE_I32((handle+16>>2)*4,metadata.memorySize),LE_HEAP_STORE_U32((handle+20>>2)*4,tableBase),LE_HEAP_STORE_I32((handle+24>>2)*4,metadata.tableSize)),metadata.tableSize&&wasmTable.grow(metadata.tableSize);var moduleExports;function resolveSymbol(e){var t=resolveGlobalSymbol(e).sym;return!t&&localScope&&(t=localScope[e]),t||(t=moduleExports[e]),t}D(resolveSymbol,"resolveSymbol");var proxyHandler={get(e,t){switch(t){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(t in wasmImports&&!wasmImports[t].stub){var n=wasmImports[t];return n}if(!(t in e)){var r;e[t]=(...o)=>(r||=resolveSymbol(t),r(...o))}return e[t]}},proxy=new Proxy({},proxyHandler);currentModuleWeakSymbols=metadata.weakImports;var info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols();function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf("$"+arity)!=-1;arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(D(addEmAsm,"addEmAsm"),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start ${body};`;moduleExports[name]=eval(func)}D(addEmJs,"addEmJs");for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():addOnPostCtor(init)),moduleExports}if(D(postInstantiation,"postInstantiation"),flags.loadAsync)return(async()=>{var e;return binary instanceof WebAssembly.Module?e=new WebAssembly.Instance(binary,info):{module:binary,instance:e}=await WebAssembly.instantiate(binary,info),postInstantiation(binary,e)})();var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return D(loadModule,"loadModule"),flags={...flags,rpath:{parentLibPath:libName,paths:metadata.runtimePaths}},flags.loadAsync?metadata.neededDynlibs.reduce((e,t)=>e.then(()=>loadDynamicLibrary(t,flags,localScope)),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach(e=>loadDynamicLibrary(e,flags,localScope)),loadModule())},"loadWebAssemblyModule"),mergeLibSymbols=D((e,t)=>{for(var[n,r]of Object.entries(e)){let o=D(a=>{isSymbolDefined(a)||(wasmImports[a]=r)},"setImport");o(n);let s="__main_argc_argv";n=="main"&&o(s),n==s&&o("main")}},"mergeLibSymbols"),asyncLoad=D(async e=>{var t=await readAsync(e);return new Uint8Array(t)},"asyncLoad");function loadDynamicLibrary(e,t={global:!0,nodelete:!0},n,r){var o=LDSO.loadedLibsByName[e];if(o)return t.global?o.global||(o.global=!0,mergeLibSymbols(o.exports,e)):n&&Object.assign(n,o.exports),t.nodelete&&o.refcount!==1/0&&(o.refcount=1/0),o.refcount++,r&&(LDSO.loadedLibsByHandle[r]=o),t.loadAsync?Promise.resolve(!0):!0;o=newDSO(e,r,"loading"),o.refcount=t.nodelete?1/0:1,o.global=t.global;function s(){if(r){var c=LE_HEAP_LOAD_U32((r+28>>2)*4),d=LE_HEAP_LOAD_U32((r+32>>2)*4);if(c&&d){var u=HEAP8.slice(c,c+d);return t.loadAsync?Promise.resolve(u):u}}var f=locateFile(e);if(t.loadAsync)return asyncLoad(f);if(!readBinary)throw new Error(`${f}: file not found, and synchronous loading of external files is not available`);return readBinary(f)}D(s,"loadLibData");function a(){return t.loadAsync?s().then(c=>loadWebAssemblyModule(c,t,e,n,r)):loadWebAssemblyModule(s(),t,e,n,r)}D(a,"getExports");function l(c){o.global?mergeLibSymbols(c,e):n&&Object.assign(n,c),o.exports=c}return D(l,"moduleLoaded"),t.loadAsync?a().then(c=>(l(c),!0)):(l(a()),!0)}D(loadDynamicLibrary,"loadDynamicLibrary");var reportUndefinedSymbols=D(()=>{for(var[e,t]of Object.entries(GOT))if(t.value==0){var n=resolveGlobalSymbol(e,!0).sym;if(!n&&!t.required)continue;if(typeof n=="function")t.value=addFunction(n,n.sig);else if(typeof n=="number")t.value=n;else throw new Error(`bad export type for '${e}': ${typeof n}`)}},"reportUndefinedSymbols"),runDependencies=0,dependenciesFulfilled=null,removeRunDependency=D(e=>{if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),runDependencies==0&&dependenciesFulfilled){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}},"removeRunDependency"),addRunDependency=D(e=>{runDependencies++,Module.monitorRunDependencies?.(runDependencies)},"addRunDependency"),loadDylibs=D(async()=>{if(!dynamicLibraries.length){reportUndefinedSymbols();return}addRunDependency("loadDylibs");for(var e of dynamicLibraries)await loadDynamicLibrary(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0});reportUndefinedSymbols(),removeRunDependency("loadDylibs")},"loadDylibs"),noExitRuntime=!0;function setValue(e,t,n="i8"){switch(n.endsWith("*")&&(n="*"),n){case"i1":HEAP8[e]=t;break;case"i8":HEAP8[e]=t;break;case"i16":LE_HEAP_STORE_I16((e>>1)*2,t);break;case"i32":LE_HEAP_STORE_I32((e>>2)*4,t);break;case"i64":LE_HEAP_STORE_I64((e>>3)*8,BigInt(t));break;case"float":LE_HEAP_STORE_F32((e>>2)*4,t);break;case"double":LE_HEAP_STORE_F64((e>>3)*8,t);break;case"*":LE_HEAP_STORE_U32((e>>2)*4,t);break;default:abort(`invalid type for setValue: ${n}`)}}D(setValue,"setValue");var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_high=82240,___stack_low=16704,___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},82240),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),__abort_js=D(()=>abort(""),"__abort_js");__abort_js.sig="v";var getHeapMax=D(()=>2147483648,"getHeapMax"),growMemory=D(e=>{var t=wasmMemory.buffer.byteLength,n=(e-t+65535)/65536|0;try{return wasmMemory.grow(n),updateMemoryViews(),1}catch{}},"growMemory"),_emscripten_resize_heap=D(e=>{var t=HEAPU8.length;e>>>=0;var n=getHeapMax();if(e>n)return!1;for(var r=1;r<=4;r*=2){var o=t*(1+.2/r);o=Math.min(o,e+100663296);var s=Math.min(n,alignMemory(Math.max(e,o),65536)),a=growMemory(s);if(a)return!0}return!1},"_emscripten_resize_heap");_emscripten_resize_heap.sig="ip";var _fd_close=D(e=>52,"_fd_close");_fd_close.sig="ii";var INT53_MAX=9007199254740992,INT53_MIN=-9007199254740992,bigintToI53Checked=D(e=>eINT53_MAX?NaN:Number(e),"bigintToI53Checked");function _fd_seek(e,t,n,r){return t=bigintToI53Checked(t),70}D(_fd_seek,"_fd_seek"),_fd_seek.sig="iijip";var printCharBuffers=[null,[],[]],printChar=D((e,t)=>{var n=printCharBuffers[e];t===0||t===10?((e===1?out:err)(UTF8ArrayToString(n)),n.length=0):n.push(t)},"printChar"),_fd_write=D((e,t,n,r)=>{for(var o=0,s=0;s>2)*4),l=LE_HEAP_LOAD_U32((t+4>>2)*4);t+=8;for(var c=0;c>2)*4,o),0},"_fd_write");_fd_write.sig="iippp";function _tree_sitter_log_callback(e,t){if(Module.currentLogCallback){let n=UTF8ToString(t);Module.currentLogCallback(n,e!==0)}}D(_tree_sitter_log_callback,"_tree_sitter_log_callback");function _tree_sitter_parse_callback(e,t,n,r,o){let a=Module.currentParseCallback(t,{row:n,column:r});typeof a=="string"?(setValue(o,a.length,"i32"),stringToUTF16(a,e,10240)):setValue(o,0,"i32")}D(_tree_sitter_parse_callback,"_tree_sitter_parse_callback");function _tree_sitter_progress_callback(e,t){return Module.currentProgressCallback?Module.currentProgressCallback({currentOffset:e,hasError:t}):!1}D(_tree_sitter_progress_callback,"_tree_sitter_progress_callback");function _tree_sitter_query_progress_callback(e){return Module.currentQueryProgressCallback?Module.currentQueryProgressCallback({currentOffset:e}):!1}D(_tree_sitter_query_progress_callback,"_tree_sitter_query_progress_callback");var runtimeKeepaliveCounter=0,keepRuntimeAlive=D(()=>noExitRuntime||runtimeKeepaliveCounter>0,"keepRuntimeAlive"),_proc_exit=D(e=>{EXITSTATUS=e,keepRuntimeAlive()||(Module.onExit?.(e),ABORT=!0),quit_(e,new ExitStatus(e))},"_proc_exit");_proc_exit.sig="vi";var exitJS=D((e,t)=>{EXITSTATUS=e,_proc_exit(e)},"exitJS"),handleException=D(e=>{if(e instanceof ExitStatus||e=="unwind")return EXITSTATUS;quit_(1,e)},"handleException"),lengthBytesUTF8=D(e=>{for(var t=0,n=0;n=55296&&r<=57343?(t+=4,++n):t+=3}return t},"lengthBytesUTF8"),stringToUTF8Array=D((e,t,n,r)=>{if(!(r>0))return 0;for(var o=n,s=n+r-1,a=0;a=s)break;t[n++]=l}else if(l<=2047){if(n+1>=s)break;t[n++]=192|l>>6,t[n++]=128|l&63}else if(l<=65535){if(n+2>=s)break;t[n++]=224|l>>12,t[n++]=128|l>>6&63,t[n++]=128|l&63}else{if(n+3>=s)break;t[n++]=240|l>>18,t[n++]=128|l>>12&63,t[n++]=128|l>>6&63,t[n++]=128|l&63,a++}}return t[n]=0,n-o},"stringToUTF8Array"),stringToUTF8=D((e,t,n)=>stringToUTF8Array(e,HEAPU8,t,n),"stringToUTF8"),stackAlloc=D(e=>__emscripten_stack_alloc(e),"stackAlloc"),stringToUTF8OnStack=D(e=>{var t=lengthBytesUTF8(e)+1,n=stackAlloc(t);return stringToUTF8(e,n,t),n},"stringToUTF8OnStack"),AsciiToString=D(e=>{for(var t="";;){var n=HEAPU8[e++];if(!n)return t;t+=String.fromCharCode(n)}},"AsciiToString"),stringToUTF16=D((e,t,n)=>{if(n??=2147483647,n<2)return 0;n-=2;for(var r=t,o=n>1)*2,a),t+=2}return LE_HEAP_STORE_I16((t>>1)*2,0),t-r},"stringToUTF16");LE_ATOMICS_NATIVE_BYTE_ORDER=new Int8Array(new Int16Array([1]).buffer)[0]===1?[(e=>e),(e=>e),void 0,(e=>e)]:[(e=>e),(e=>((e&65280)<<8|(e&255)<<24)>>16),void 0,(e=>e>>24&255|e>>8&65280|(e&65280)<<8|(e&255)<<24)];function LE_HEAP_UPDATE(){HEAPU16.unsigned=(e=>e&65535),HEAPU32.unsigned=(e=>e>>>0)}if(D(LE_HEAP_UPDATE,"LE_HEAP_UPDATE"),initMemory(),Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),Module.print&&(out=Module.print),Module.printErr&&(err=Module.printErr),Module.dynamicLibraries&&(dynamicLibraries=Module.dynamicLibraries),Module.wasmBinary&&(wasmBinary=Module.wasmBinary),Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.shift()();Module.setValue=setValue,Module.getValue=getValue,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8,Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,Module.loadWebAssemblyModule=loadWebAssemblyModule,Module.LE_HEAP_STORE_I64=LE_HEAP_STORE_I64;var ASM_CONSTS={},_malloc,_calloc,_realloc,_free,_ts_range_edit,_memcmp,_ts_language_symbol_count,_ts_language_state_count,_ts_language_abi_version,_ts_language_name,_ts_language_field_count,_ts_language_next_state,_ts_language_symbol_name,_ts_language_symbol_for_name,_strncmp,_ts_language_symbol_type,_ts_language_field_name_for_id,_ts_lookahead_iterator_new,_ts_lookahead_iterator_delete,_ts_lookahead_iterator_reset_state,_ts_lookahead_iterator_reset,_ts_lookahead_iterator_next,_ts_lookahead_iterator_current_symbol,_ts_point_edit,_ts_parser_delete,_ts_parser_reset,_ts_parser_set_language,_ts_parser_set_included_ranges,_ts_query_new,_ts_query_delete,_iswspace,_iswalnum,_ts_query_copy,_ts_query_pattern_count,_ts_query_capture_count,_ts_query_string_count,_ts_query_capture_name_for_id,_ts_query_capture_quantifier_for_id,_ts_query_string_value_for_id,_ts_query_predicates_for_pattern,_ts_query_start_byte_for_pattern,_ts_query_end_byte_for_pattern,_ts_query_is_pattern_rooted,_ts_query_is_pattern_non_local,_ts_query_is_pattern_guaranteed_at_step,_ts_query_disable_capture,_ts_query_disable_pattern,_ts_tree_copy,_ts_tree_delete,_ts_init,_ts_parser_new_wasm,_ts_parser_enable_logger_wasm,_ts_parser_parse_wasm,_ts_parser_included_ranges_wasm,_ts_language_type_is_named_wasm,_ts_language_type_is_visible_wasm,_ts_language_metadata_wasm,_ts_language_supertypes_wasm,_ts_language_subtypes_wasm,_ts_tree_root_node_wasm,_ts_tree_root_node_with_offset_wasm,_ts_tree_edit_wasm,_ts_tree_included_ranges_wasm,_ts_tree_get_changed_ranges_wasm,_ts_tree_cursor_new_wasm,_ts_tree_cursor_copy_wasm,_ts_tree_cursor_delete_wasm,_ts_tree_cursor_reset_wasm,_ts_tree_cursor_reset_to_wasm,_ts_tree_cursor_goto_first_child_wasm,_ts_tree_cursor_goto_last_child_wasm,_ts_tree_cursor_goto_first_child_for_index_wasm,_ts_tree_cursor_goto_first_child_for_position_wasm,_ts_tree_cursor_goto_next_sibling_wasm,_ts_tree_cursor_goto_previous_sibling_wasm,_ts_tree_cursor_goto_descendant_wasm,_ts_tree_cursor_goto_parent_wasm,_ts_tree_cursor_current_node_type_id_wasm,_ts_tree_cursor_current_node_state_id_wasm,_ts_tree_cursor_current_node_is_named_wasm,_ts_tree_cursor_current_node_is_missing_wasm,_ts_tree_cursor_current_node_id_wasm,_ts_tree_cursor_start_position_wasm,_ts_tree_cursor_end_position_wasm,_ts_tree_cursor_start_index_wasm,_ts_tree_cursor_end_index_wasm,_ts_tree_cursor_current_field_id_wasm,_ts_tree_cursor_current_depth_wasm,_ts_tree_cursor_current_descendant_index_wasm,_ts_tree_cursor_current_node_wasm,_ts_node_symbol_wasm,_ts_node_field_name_for_child_wasm,_ts_node_field_name_for_named_child_wasm,_ts_node_children_by_field_id_wasm,_ts_node_first_child_for_byte_wasm,_ts_node_first_named_child_for_byte_wasm,_ts_node_grammar_symbol_wasm,_ts_node_child_count_wasm,_ts_node_named_child_count_wasm,_ts_node_child_wasm,_ts_node_named_child_wasm,_ts_node_child_by_field_id_wasm,_ts_node_next_sibling_wasm,_ts_node_prev_sibling_wasm,_ts_node_next_named_sibling_wasm,_ts_node_prev_named_sibling_wasm,_ts_node_descendant_count_wasm,_ts_node_parent_wasm,_ts_node_child_with_descendant_wasm,_ts_node_descendant_for_index_wasm,_ts_node_named_descendant_for_index_wasm,_ts_node_descendant_for_position_wasm,_ts_node_named_descendant_for_position_wasm,_ts_node_start_point_wasm,_ts_node_end_point_wasm,_ts_node_start_index_wasm,_ts_node_end_index_wasm,_ts_node_to_string_wasm,_ts_node_children_wasm,_ts_node_named_children_wasm,_ts_node_descendants_of_type_wasm,_ts_node_is_named_wasm,_ts_node_has_changes_wasm,_ts_node_has_error_wasm,_ts_node_is_error_wasm,_ts_node_is_missing_wasm,_ts_node_is_extra_wasm,_ts_node_parse_state_wasm,_ts_node_next_parse_state_wasm,_ts_query_matches_wasm,_ts_query_captures_wasm,_memset,_memcpy,_memmove,_iswalpha,_iswblank,_iswdigit,_iswlower,_iswpunct,_iswupper,_iswxdigit,_memchr,_strlen,_strcmp,_strncat,_strncpy,_towlower,_towupper,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,___wasm_apply_data_relocs;function assignWasmExports(e){Module._malloc=_malloc=e.malloc,Module._calloc=_calloc=e.calloc,Module._realloc=_realloc=e.realloc,Module._free=_free=e.free,Module._ts_range_edit=_ts_range_edit=e.ts_range_edit,Module._memcmp=_memcmp=e.memcmp,Module._ts_language_symbol_count=_ts_language_symbol_count=e.ts_language_symbol_count,Module._ts_language_state_count=_ts_language_state_count=e.ts_language_state_count,Module._ts_language_abi_version=_ts_language_abi_version=e.ts_language_abi_version,Module._ts_language_name=_ts_language_name=e.ts_language_name,Module._ts_language_field_count=_ts_language_field_count=e.ts_language_field_count,Module._ts_language_next_state=_ts_language_next_state=e.ts_language_next_state,Module._ts_language_symbol_name=_ts_language_symbol_name=e.ts_language_symbol_name,Module._ts_language_symbol_for_name=_ts_language_symbol_for_name=e.ts_language_symbol_for_name,Module._strncmp=_strncmp=e.strncmp,Module._ts_language_symbol_type=_ts_language_symbol_type=e.ts_language_symbol_type,Module._ts_language_field_name_for_id=_ts_language_field_name_for_id=e.ts_language_field_name_for_id,Module._ts_lookahead_iterator_new=_ts_lookahead_iterator_new=e.ts_lookahead_iterator_new,Module._ts_lookahead_iterator_delete=_ts_lookahead_iterator_delete=e.ts_lookahead_iterator_delete,Module._ts_lookahead_iterator_reset_state=_ts_lookahead_iterator_reset_state=e.ts_lookahead_iterator_reset_state,Module._ts_lookahead_iterator_reset=_ts_lookahead_iterator_reset=e.ts_lookahead_iterator_reset,Module._ts_lookahead_iterator_next=_ts_lookahead_iterator_next=e.ts_lookahead_iterator_next,Module._ts_lookahead_iterator_current_symbol=_ts_lookahead_iterator_current_symbol=e.ts_lookahead_iterator_current_symbol,Module._ts_point_edit=_ts_point_edit=e.ts_point_edit,Module._ts_parser_delete=_ts_parser_delete=e.ts_parser_delete,Module._ts_parser_reset=_ts_parser_reset=e.ts_parser_reset,Module._ts_parser_set_language=_ts_parser_set_language=e.ts_parser_set_language,Module._ts_parser_set_included_ranges=_ts_parser_set_included_ranges=e.ts_parser_set_included_ranges,Module._ts_query_new=_ts_query_new=e.ts_query_new,Module._ts_query_delete=_ts_query_delete=e.ts_query_delete,Module._iswspace=_iswspace=e.iswspace,Module._iswalnum=_iswalnum=e.iswalnum,Module._ts_query_copy=_ts_query_copy=e.ts_query_copy,Module._ts_query_pattern_count=_ts_query_pattern_count=e.ts_query_pattern_count,Module._ts_query_capture_count=_ts_query_capture_count=e.ts_query_capture_count,Module._ts_query_string_count=_ts_query_string_count=e.ts_query_string_count,Module._ts_query_capture_name_for_id=_ts_query_capture_name_for_id=e.ts_query_capture_name_for_id,Module._ts_query_capture_quantifier_for_id=_ts_query_capture_quantifier_for_id=e.ts_query_capture_quantifier_for_id,Module._ts_query_string_value_for_id=_ts_query_string_value_for_id=e.ts_query_string_value_for_id,Module._ts_query_predicates_for_pattern=_ts_query_predicates_for_pattern=e.ts_query_predicates_for_pattern,Module._ts_query_start_byte_for_pattern=_ts_query_start_byte_for_pattern=e.ts_query_start_byte_for_pattern,Module._ts_query_end_byte_for_pattern=_ts_query_end_byte_for_pattern=e.ts_query_end_byte_for_pattern,Module._ts_query_is_pattern_rooted=_ts_query_is_pattern_rooted=e.ts_query_is_pattern_rooted,Module._ts_query_is_pattern_non_local=_ts_query_is_pattern_non_local=e.ts_query_is_pattern_non_local,Module._ts_query_is_pattern_guaranteed_at_step=_ts_query_is_pattern_guaranteed_at_step=e.ts_query_is_pattern_guaranteed_at_step,Module._ts_query_disable_capture=_ts_query_disable_capture=e.ts_query_disable_capture,Module._ts_query_disable_pattern=_ts_query_disable_pattern=e.ts_query_disable_pattern,Module._ts_tree_copy=_ts_tree_copy=e.ts_tree_copy,Module._ts_tree_delete=_ts_tree_delete=e.ts_tree_delete,Module._ts_init=_ts_init=e.ts_init,Module._ts_parser_new_wasm=_ts_parser_new_wasm=e.ts_parser_new_wasm,Module._ts_parser_enable_logger_wasm=_ts_parser_enable_logger_wasm=e.ts_parser_enable_logger_wasm,Module._ts_parser_parse_wasm=_ts_parser_parse_wasm=e.ts_parser_parse_wasm,Module._ts_parser_included_ranges_wasm=_ts_parser_included_ranges_wasm=e.ts_parser_included_ranges_wasm,Module._ts_language_type_is_named_wasm=_ts_language_type_is_named_wasm=e.ts_language_type_is_named_wasm,Module._ts_language_type_is_visible_wasm=_ts_language_type_is_visible_wasm=e.ts_language_type_is_visible_wasm,Module._ts_language_metadata_wasm=_ts_language_metadata_wasm=e.ts_language_metadata_wasm,Module._ts_language_supertypes_wasm=_ts_language_supertypes_wasm=e.ts_language_supertypes_wasm,Module._ts_language_subtypes_wasm=_ts_language_subtypes_wasm=e.ts_language_subtypes_wasm,Module._ts_tree_root_node_wasm=_ts_tree_root_node_wasm=e.ts_tree_root_node_wasm,Module._ts_tree_root_node_with_offset_wasm=_ts_tree_root_node_with_offset_wasm=e.ts_tree_root_node_with_offset_wasm,Module._ts_tree_edit_wasm=_ts_tree_edit_wasm=e.ts_tree_edit_wasm,Module._ts_tree_included_ranges_wasm=_ts_tree_included_ranges_wasm=e.ts_tree_included_ranges_wasm,Module._ts_tree_get_changed_ranges_wasm=_ts_tree_get_changed_ranges_wasm=e.ts_tree_get_changed_ranges_wasm,Module._ts_tree_cursor_new_wasm=_ts_tree_cursor_new_wasm=e.ts_tree_cursor_new_wasm,Module._ts_tree_cursor_copy_wasm=_ts_tree_cursor_copy_wasm=e.ts_tree_cursor_copy_wasm,Module._ts_tree_cursor_delete_wasm=_ts_tree_cursor_delete_wasm=e.ts_tree_cursor_delete_wasm,Module._ts_tree_cursor_reset_wasm=_ts_tree_cursor_reset_wasm=e.ts_tree_cursor_reset_wasm,Module._ts_tree_cursor_reset_to_wasm=_ts_tree_cursor_reset_to_wasm=e.ts_tree_cursor_reset_to_wasm,Module._ts_tree_cursor_goto_first_child_wasm=_ts_tree_cursor_goto_first_child_wasm=e.ts_tree_cursor_goto_first_child_wasm,Module._ts_tree_cursor_goto_last_child_wasm=_ts_tree_cursor_goto_last_child_wasm=e.ts_tree_cursor_goto_last_child_wasm,Module._ts_tree_cursor_goto_first_child_for_index_wasm=_ts_tree_cursor_goto_first_child_for_index_wasm=e.ts_tree_cursor_goto_first_child_for_index_wasm,Module._ts_tree_cursor_goto_first_child_for_position_wasm=_ts_tree_cursor_goto_first_child_for_position_wasm=e.ts_tree_cursor_goto_first_child_for_position_wasm,Module._ts_tree_cursor_goto_next_sibling_wasm=_ts_tree_cursor_goto_next_sibling_wasm=e.ts_tree_cursor_goto_next_sibling_wasm,Module._ts_tree_cursor_goto_previous_sibling_wasm=_ts_tree_cursor_goto_previous_sibling_wasm=e.ts_tree_cursor_goto_previous_sibling_wasm,Module._ts_tree_cursor_goto_descendant_wasm=_ts_tree_cursor_goto_descendant_wasm=e.ts_tree_cursor_goto_descendant_wasm,Module._ts_tree_cursor_goto_parent_wasm=_ts_tree_cursor_goto_parent_wasm=e.ts_tree_cursor_goto_parent_wasm,Module._ts_tree_cursor_current_node_type_id_wasm=_ts_tree_cursor_current_node_type_id_wasm=e.ts_tree_cursor_current_node_type_id_wasm,Module._ts_tree_cursor_current_node_state_id_wasm=_ts_tree_cursor_current_node_state_id_wasm=e.ts_tree_cursor_current_node_state_id_wasm,Module._ts_tree_cursor_current_node_is_named_wasm=_ts_tree_cursor_current_node_is_named_wasm=e.ts_tree_cursor_current_node_is_named_wasm,Module._ts_tree_cursor_current_node_is_missing_wasm=_ts_tree_cursor_current_node_is_missing_wasm=e.ts_tree_cursor_current_node_is_missing_wasm,Module._ts_tree_cursor_current_node_id_wasm=_ts_tree_cursor_current_node_id_wasm=e.ts_tree_cursor_current_node_id_wasm,Module._ts_tree_cursor_start_position_wasm=_ts_tree_cursor_start_position_wasm=e.ts_tree_cursor_start_position_wasm,Module._ts_tree_cursor_end_position_wasm=_ts_tree_cursor_end_position_wasm=e.ts_tree_cursor_end_position_wasm,Module._ts_tree_cursor_start_index_wasm=_ts_tree_cursor_start_index_wasm=e.ts_tree_cursor_start_index_wasm,Module._ts_tree_cursor_end_index_wasm=_ts_tree_cursor_end_index_wasm=e.ts_tree_cursor_end_index_wasm,Module._ts_tree_cursor_current_field_id_wasm=_ts_tree_cursor_current_field_id_wasm=e.ts_tree_cursor_current_field_id_wasm,Module._ts_tree_cursor_current_depth_wasm=_ts_tree_cursor_current_depth_wasm=e.ts_tree_cursor_current_depth_wasm,Module._ts_tree_cursor_current_descendant_index_wasm=_ts_tree_cursor_current_descendant_index_wasm=e.ts_tree_cursor_current_descendant_index_wasm,Module._ts_tree_cursor_current_node_wasm=_ts_tree_cursor_current_node_wasm=e.ts_tree_cursor_current_node_wasm,Module._ts_node_symbol_wasm=_ts_node_symbol_wasm=e.ts_node_symbol_wasm,Module._ts_node_field_name_for_child_wasm=_ts_node_field_name_for_child_wasm=e.ts_node_field_name_for_child_wasm,Module._ts_node_field_name_for_named_child_wasm=_ts_node_field_name_for_named_child_wasm=e.ts_node_field_name_for_named_child_wasm,Module._ts_node_children_by_field_id_wasm=_ts_node_children_by_field_id_wasm=e.ts_node_children_by_field_id_wasm,Module._ts_node_first_child_for_byte_wasm=_ts_node_first_child_for_byte_wasm=e.ts_node_first_child_for_byte_wasm,Module._ts_node_first_named_child_for_byte_wasm=_ts_node_first_named_child_for_byte_wasm=e.ts_node_first_named_child_for_byte_wasm,Module._ts_node_grammar_symbol_wasm=_ts_node_grammar_symbol_wasm=e.ts_node_grammar_symbol_wasm,Module._ts_node_child_count_wasm=_ts_node_child_count_wasm=e.ts_node_child_count_wasm,Module._ts_node_named_child_count_wasm=_ts_node_named_child_count_wasm=e.ts_node_named_child_count_wasm,Module._ts_node_child_wasm=_ts_node_child_wasm=e.ts_node_child_wasm,Module._ts_node_named_child_wasm=_ts_node_named_child_wasm=e.ts_node_named_child_wasm,Module._ts_node_child_by_field_id_wasm=_ts_node_child_by_field_id_wasm=e.ts_node_child_by_field_id_wasm,Module._ts_node_next_sibling_wasm=_ts_node_next_sibling_wasm=e.ts_node_next_sibling_wasm,Module._ts_node_prev_sibling_wasm=_ts_node_prev_sibling_wasm=e.ts_node_prev_sibling_wasm,Module._ts_node_next_named_sibling_wasm=_ts_node_next_named_sibling_wasm=e.ts_node_next_named_sibling_wasm,Module._ts_node_prev_named_sibling_wasm=_ts_node_prev_named_sibling_wasm=e.ts_node_prev_named_sibling_wasm,Module._ts_node_descendant_count_wasm=_ts_node_descendant_count_wasm=e.ts_node_descendant_count_wasm,Module._ts_node_parent_wasm=_ts_node_parent_wasm=e.ts_node_parent_wasm,Module._ts_node_child_with_descendant_wasm=_ts_node_child_with_descendant_wasm=e.ts_node_child_with_descendant_wasm,Module._ts_node_descendant_for_index_wasm=_ts_node_descendant_for_index_wasm=e.ts_node_descendant_for_index_wasm,Module._ts_node_named_descendant_for_index_wasm=_ts_node_named_descendant_for_index_wasm=e.ts_node_named_descendant_for_index_wasm,Module._ts_node_descendant_for_position_wasm=_ts_node_descendant_for_position_wasm=e.ts_node_descendant_for_position_wasm,Module._ts_node_named_descendant_for_position_wasm=_ts_node_named_descendant_for_position_wasm=e.ts_node_named_descendant_for_position_wasm,Module._ts_node_start_point_wasm=_ts_node_start_point_wasm=e.ts_node_start_point_wasm,Module._ts_node_end_point_wasm=_ts_node_end_point_wasm=e.ts_node_end_point_wasm,Module._ts_node_start_index_wasm=_ts_node_start_index_wasm=e.ts_node_start_index_wasm,Module._ts_node_end_index_wasm=_ts_node_end_index_wasm=e.ts_node_end_index_wasm,Module._ts_node_to_string_wasm=_ts_node_to_string_wasm=e.ts_node_to_string_wasm,Module._ts_node_children_wasm=_ts_node_children_wasm=e.ts_node_children_wasm,Module._ts_node_named_children_wasm=_ts_node_named_children_wasm=e.ts_node_named_children_wasm,Module._ts_node_descendants_of_type_wasm=_ts_node_descendants_of_type_wasm=e.ts_node_descendants_of_type_wasm,Module._ts_node_is_named_wasm=_ts_node_is_named_wasm=e.ts_node_is_named_wasm,Module._ts_node_has_changes_wasm=_ts_node_has_changes_wasm=e.ts_node_has_changes_wasm,Module._ts_node_has_error_wasm=_ts_node_has_error_wasm=e.ts_node_has_error_wasm,Module._ts_node_is_error_wasm=_ts_node_is_error_wasm=e.ts_node_is_error_wasm,Module._ts_node_is_missing_wasm=_ts_node_is_missing_wasm=e.ts_node_is_missing_wasm,Module._ts_node_is_extra_wasm=_ts_node_is_extra_wasm=e.ts_node_is_extra_wasm,Module._ts_node_parse_state_wasm=_ts_node_parse_state_wasm=e.ts_node_parse_state_wasm,Module._ts_node_next_parse_state_wasm=_ts_node_next_parse_state_wasm=e.ts_node_next_parse_state_wasm,Module._ts_query_matches_wasm=_ts_query_matches_wasm=e.ts_query_matches_wasm,Module._ts_query_captures_wasm=_ts_query_captures_wasm=e.ts_query_captures_wasm,Module._memset=_memset=e.memset,Module._memcpy=_memcpy=e.memcpy,Module._memmove=_memmove=e.memmove,Module._iswalpha=_iswalpha=e.iswalpha,Module._iswblank=_iswblank=e.iswblank,Module._iswdigit=_iswdigit=e.iswdigit,Module._iswlower=_iswlower=e.iswlower,Module._iswpunct=_iswpunct=e.iswpunct,Module._iswupper=_iswupper=e.iswupper,Module._iswxdigit=_iswxdigit=e.iswxdigit,Module._memchr=_memchr=e.memchr,Module._strlen=_strlen=e.strlen,Module._strcmp=_strcmp=e.strcmp,Module._strncat=_strncat=e.strncat,Module._strncpy=_strncpy=e.strncpy,Module._towlower=_towlower=e.towlower,Module._towupper=_towupper=e.towupper,_setThrew=e.setThrew,__emscripten_stack_restore=e._emscripten_stack_restore,__emscripten_stack_alloc=e._emscripten_stack_alloc,_emscripten_stack_get_current=e.emscripten_stack_get_current,___wasm_apply_data_relocs=e.__wasm_apply_data_relocs}D(assignWasmExports,"assignWasmExports");var wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_high:___stack_high,__stack_low:___stack_low,__stack_pointer:___stack_pointer,__table_base:___table_base,_abort_js:__abort_js,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback,tree_sitter_progress_callback:_tree_sitter_progress_callback,tree_sitter_query_progress_callback:_tree_sitter_query_progress_callback};function callMain(e=[]){var t=resolveGlobalSymbol("main").sym;if(t){e.unshift(thisProgram);var n=e.length,r=stackAlloc((n+1)*4),o=r;e.forEach(a=>{LE_HEAP_STORE_U32((o>>2)*4,stringToUTF8OnStack(a)),o+=4}),LE_HEAP_STORE_U32((o>>2)*4,0);try{var s=t(n,r);return exitJS(s,!0),s}catch(a){return handleException(a)}}}D(callMain,"callMain");function run(e=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}if(preRun(),runDependencies>0){dependenciesFulfilled=run;return}function t(){if(Module.calledRun=!0,!ABORT){initRuntime(),readyPromiseResolve?.(Module),Module.onRuntimeInitialized?.();var n=Module.noInitialRun||!1;n||callMain(e),postRun()}}D(t,"doRun"),Module.setStatus?(Module.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>Module.setStatus(""),1),t()},1)):t()}D(run,"run");var wasmExports;return wasmExports=await createWasm(),run(),runtimeInitialized?moduleRtn=Module:moduleRtn=new Promise((e,t)=>{readyPromiseResolve=e,readyPromiseReject=t}),moduleRtn}async function Qp(e){return Yp??=await lk(e)}function eg(){return!!Yp}function ng(e,t,n,r){if(e.length!==3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 2, got ${e.length-1}`);if(!Hp(e[1]))throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}"`);let o=n==="eq?"||n==="any-eq?",s=!n.startsWith("any-");if(Hp(e[2])){let a=e[1].name,l=e[2].name;r[t].push(c=>{let d=[],u=[];for(let m of c)m.name===a&&d.push(m.node),m.name===l&&u.push(m.node);let f=D((m,p,g)=>g?m.text===p.text:m.text!==p.text,"compare");return s?d.every(m=>u.some(p=>f(m,p,o))):d.some(m=>u.some(p=>f(m,p,o)))})}else{let a=e[1].name,l=e[2].value,c=D(u=>u.text===l,"matches"),d=D(u=>u.text!==l,"doesNotMatch");r[t].push(u=>{let f=[];for(let p of u)p.name===a&&f.push(p.node);let m=o?c:d;return s?f.every(m):f.some(m)})}}function rg(e,t,n,r){if(e.length!==3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 2, got ${e.length-1}.`);if(e[1].type!=="capture")throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}".`);if(e[2].type!=="string")throw new Error(`Second argument of \`#${n}\` predicate must be a string. Got @${e[2].name}.`);let o=n==="match?"||n==="any-match?",s=!n.startsWith("any-"),a=e[1].name,l=new RegExp(e[2].value);r[t].push(c=>{let d=[];for(let f of c)f.name===a&&d.push(f.node.text);let u=D((f,m)=>m?l.test(f):!l.test(f),"test");return d.length===0?!o:s?d.every(f=>u(f,o)):d.some(f=>u(f,o))})}function sg(e,t,n,r){if(e.length<2)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected at least 1. Got ${e.length-1}.`);if(e[1].type!=="capture")throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}".`);let o=n==="any-of?",s=e[1].name,a=e.slice(2);if(!a.every(wd))throw new Error(`Arguments to \`#${n}\` predicate must be strings.".`);let l=a.map(c=>c.value);r[t].push(c=>{let d=[];for(let u of c)u.name===s&&d.push(u.node.text);return d.length===0?!o:d.every(u=>l.includes(u))===o})}function ig(e,t,n,r,o){if(e.length<2||e.length>3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 1 or 2. Got ${e.length-1}.`);if(!e.every(wd))throw new Error(`Arguments to \`#${n}\` predicate must be strings.".`);let s=n==="is?"?r:o;s[t]||(s[t]={}),s[t][e[1].value]=e[2]?.value??null}function og(e,t,n){if(e.length<2||e.length>3)throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${e.length-1}.`);if(!e.every(wd))throw new Error('Arguments to `#set!` predicate must be strings.".');n[t]||(n[t]={}),n[t][e[1].value]=e[2]?.value??null}function ag(e,t,n,r,o,s,a,l,c,d,u){if(t===ck){let f=r[n];s.push({type:"capture",name:f})}else if(t===dk)s.push({type:"string",value:o[n]});else if(s.length>0){if(s[0].type!=="string")throw new Error("Predicates must begin with a literal value");let f=s[0].value;switch(f){case"any-not-eq?":case"not-eq?":case"any-eq?":case"eq?":ng(s,e,f,a);break;case"any-not-match?":case"not-match?":case"any-match?":case"match?":rg(s,e,f,a);break;case"not-any-of?":case"any-of?":sg(s,e,f,a);break;case"is?":case"is-not?":ig(s,e,f,d,u);break;case"set!":og(s,e,c);break;default:l[e].push({operator:f,operands:s.slice(1)})}s.length=0}}var nk,D,_F,jp,re,fd,kt,hn,Si,St,Xn,M,Wp,rk,Bp,sk,Up,ik,ok,ak,_d,lk,Yp,Q,md,pd,zp,bd,ck,dk,uk,bF,Hp,wd,sn,wi,Gp,lg,xd=z(()=>{I();nk=Object.defineProperty,D=(e,t)=>nk(e,"name",{value:t,configurable:!0}),_F=class{static{D(this,"Edit")}startPosition;oldEndPosition;newEndPosition;startIndex;oldEndIndex;newEndIndex;constructor({startIndex:e,oldEndIndex:t,newEndIndex:n,startPosition:r,oldEndPosition:o,newEndPosition:s}){this.startIndex=e>>>0,this.oldEndIndex=t>>>0,this.newEndIndex=n>>>0,this.startPosition=r,this.oldEndPosition=o,this.newEndPosition=s}editPoint(e,t){let n=t,r={...e};if(t>=this.oldEndIndex){n=this.newEndIndex+(t-this.oldEndIndex);let o=e.row;r.row=this.newEndPosition.row+(e.row-this.oldEndPosition.row),r.column=o===this.oldEndPosition.row?this.newEndPosition.column+(e.column-this.oldEndPosition.column):e.column}else t>this.startIndex&&(n=this.newEndIndex,r.row=this.newEndPosition.row,r.column=this.newEndPosition.column);return{point:r,index:n}}editRange(e){let t={startIndex:e.startIndex,startPosition:{...e.startPosition},endIndex:e.endIndex,endPosition:{...e.endPosition}};return e.endIndex>=this.oldEndIndex?e.endIndex!==Number.MAX_SAFE_INTEGER&&(t.endIndex=this.newEndIndex+(e.endIndex-this.oldEndIndex),t.endPosition={row:this.newEndPosition.row+(e.endPosition.row-this.oldEndPosition.row),column:e.endPosition.row===this.oldEndPosition.row?this.newEndPosition.column+(e.endPosition.column-this.oldEndPosition.column):e.endPosition.column},t.endIndexthis.startIndex&&(t.endIndex=this.startIndex,t.endPosition={...this.startPosition}),e.startIndex>=this.oldEndIndex?(t.startIndex=this.newEndIndex+(e.startIndex-this.oldEndIndex),t.startPosition={row:this.newEndPosition.row+(e.startPosition.row-this.oldEndPosition.row),column:e.startPosition.row===this.oldEndPosition.row?this.newEndPosition.column+(e.startPosition.column-this.oldEndPosition.column):e.startPosition.column},t.startIndexthis.startIndex&&(t.startIndex=this.startIndex,t.startPosition={...this.startPosition}),t}},jp=2,re=4,fd=4*re,kt=5*re,hn=2*re,Si=2*re+2*hn,St={row:0,column:0},Xn=Symbol("INTERNAL");D(_s,"assertInternal");D(xi,"isPoint");D(qp,"setModule");D(bs,"newFinalizer");Wp=bs(e=>{M._ts_lookahead_iterator_delete(e)}),rk=class{static{D(this,"LookaheadIterator")}0=0;language;positioned=!1;constructor(e,t,n){_s(e),this[0]=t,this.language=n,Wp?.register(this,t,this)}get currentTypeId(){return this.positioned?M._ts_lookahead_iterator_current_symbol(this[0]):null}get currentType(){let e=this.currentTypeId;return e===null?null:this.language.types[e]??M.UTF8ToString(M._ts_language_symbol_name(this.language[0],e))}delete(){Wp?.unregister(this),M._ts_lookahead_iterator_delete(this[0]),this[0]=0}reset(e,t){return M._ts_lookahead_iterator_reset(this[0],e[0],t)?(this.language=e,this.positioned=!1,!0):!1}resetState(e){return M._ts_lookahead_iterator_reset_state(this[0],e)?(this.positioned=!1,!0):!1}[Symbol.iterator](){return{next:D(()=>{this.positioned=!!M._ts_lookahead_iterator_next(this[0]);let e=this.currentType;return e===null?{done:!0,value:""}:{done:!1,value:e}},"next")}}};D(yd,"getText");Bp=bs(e=>{M._ts_tree_delete(e)}),sk=class gd{static{D(this,"Tree")}0=0;textCallback;language;constructor(t,n,r,o){_s(t),this[0]=n,this.language=r,this.textCallback=o,Bp?.register(this,n,this)}copy(){let t=M._ts_tree_copy(this[0]);return new gd(Xn,t,this.language,this.textCallback)}delete(){Bp?.unregister(this),M._ts_tree_delete(this[0]),this[0]=0}get rootNode(){return M._ts_tree_root_node_wasm(this[0]),We(this)}rootNodeWithOffset(t,n){let r=Q+kt;return M.setValue(r,t,"i32"),jt(r+re,n),M._ts_tree_root_node_with_offset_wasm(this[0]),We(this)}edit(t){Kp(t),M._ts_tree_edit_wasm(this[0])}walk(){return this.rootNode.walk()}getChangedRanges(t){if(!(t instanceof gd))throw new TypeError("Argument must be a Tree");M._ts_tree_get_changed_ranges_wasm(this[0],t[0]);let n=M.getValue(Q,"i32"),r=M.getValue(Q+re,"i32"),o=new Array(n);if(n>0){let s=r;for(let a=0;a0){let o=n;for(let s=0;s{M._ts_tree_cursor_delete_wasm(e)}),ik=class Vp{static{D(this,"TreeCursor")}0=0;1=0;2=0;3=0;tree;constructor(t,n){_s(t),this.tree=n,Tt(this),Up?.register(this,this.tree[0],this)}copy(){let t=new Vp(Xn,this.tree);return M._ts_tree_cursor_copy_wasm(this.tree[0]),Tt(t),t}delete(){Up?.unregister(this),Fe(this),M._ts_tree_cursor_delete_wasm(this.tree[0]),this[0]=this[1]=this[2]=0}get currentNode(){return Fe(this),M._ts_tree_cursor_current_node_wasm(this.tree[0]),We(this.tree)}get currentFieldId(){return Fe(this),M._ts_tree_cursor_current_field_id_wasm(this.tree[0])}get currentFieldName(){return this.tree.language.fields[this.currentFieldId]}get currentDepth(){return Fe(this),M._ts_tree_cursor_current_depth_wasm(this.tree[0])}get currentDescendantIndex(){return Fe(this),M._ts_tree_cursor_current_descendant_index_wasm(this.tree[0])}get nodeType(){return this.tree.language.types[this.nodeTypeId]||"ERROR"}get nodeTypeId(){return Fe(this),M._ts_tree_cursor_current_node_type_id_wasm(this.tree[0])}get nodeStateId(){return Fe(this),M._ts_tree_cursor_current_node_state_id_wasm(this.tree[0])}get nodeId(){return Fe(this),M._ts_tree_cursor_current_node_id_wasm(this.tree[0])}get nodeIsNamed(){return Fe(this),M._ts_tree_cursor_current_node_is_named_wasm(this.tree[0])===1}get nodeIsMissing(){return Fe(this),M._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0])===1}get nodeText(){Fe(this);let t=M._ts_tree_cursor_start_index_wasm(this.tree[0]),n=M._ts_tree_cursor_end_index_wasm(this.tree[0]);M._ts_tree_cursor_start_position_wasm(this.tree[0]);let r=Mr(Q);return yd(this.tree,t,n,r)}get startPosition(){return Fe(this),M._ts_tree_cursor_start_position_wasm(this.tree[0]),Mr(Q)}get endPosition(){return Fe(this),M._ts_tree_cursor_end_position_wasm(this.tree[0]),Mr(Q)}get startIndex(){return Fe(this),M._ts_tree_cursor_start_index_wasm(this.tree[0])}get endIndex(){return Fe(this),M._ts_tree_cursor_end_index_wasm(this.tree[0])}gotoFirstChild(){Fe(this);let t=M._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);return Tt(this),t===1}gotoLastChild(){Fe(this);let t=M._ts_tree_cursor_goto_last_child_wasm(this.tree[0]);return Tt(this),t===1}gotoParent(){Fe(this);let t=M._ts_tree_cursor_goto_parent_wasm(this.tree[0]);return Tt(this),t===1}gotoNextSibling(){Fe(this);let t=M._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);return Tt(this),t===1}gotoPreviousSibling(){Fe(this);let t=M._ts_tree_cursor_goto_previous_sibling_wasm(this.tree[0]);return Tt(this),t===1}gotoDescendant(t){Fe(this),M._ts_tree_cursor_goto_descendant_wasm(this.tree[0],t),Tt(this)}gotoFirstChildForIndex(t){Fe(this),M.setValue(Q+fd,t,"i32");let n=M._ts_tree_cursor_goto_first_child_for_index_wasm(this.tree[0]);return Tt(this),n===1}gotoFirstChildForPosition(t){Fe(this),jt(Q+fd,t);let n=M._ts_tree_cursor_goto_first_child_for_position_wasm(this.tree[0]);return Tt(this),n===1}reset(t){ue(t),Fe(this,Q+kt),M._ts_tree_cursor_reset_wasm(this.tree[0]),Tt(this)}resetTo(t){Fe(this,Q),Fe(t,Q+fd),M._ts_tree_cursor_reset_to_wasm(this.tree[0],t.tree[0]),Tt(this)}},ok=class{static{D(this,"Node")}0=0;_children;_namedChildren;constructor(e,{id:t,tree:n,startIndex:r,startPosition:o,other:s}){_s(e),this[0]=s,this.id=t,this.tree=n,this.startIndex=r,this.startPosition=o}id;startIndex;startPosition;tree;get typeId(){return ue(this),M._ts_node_symbol_wasm(this.tree[0])}get grammarId(){return ue(this),M._ts_node_grammar_symbol_wasm(this.tree[0])}get type(){return this.tree.language.types[this.typeId]||"ERROR"}get grammarType(){return this.tree.language.types[this.grammarId]||"ERROR"}get isNamed(){return ue(this),M._ts_node_is_named_wasm(this.tree[0])===1}get isExtra(){return ue(this),M._ts_node_is_extra_wasm(this.tree[0])===1}get isError(){return ue(this),M._ts_node_is_error_wasm(this.tree[0])===1}get isMissing(){return ue(this),M._ts_node_is_missing_wasm(this.tree[0])===1}get hasChanges(){return ue(this),M._ts_node_has_changes_wasm(this.tree[0])===1}get hasError(){return ue(this),M._ts_node_has_error_wasm(this.tree[0])===1}get endIndex(){return ue(this),M._ts_node_end_index_wasm(this.tree[0])}get endPosition(){return ue(this),M._ts_node_end_point_wasm(this.tree[0]),Mr(Q)}get text(){return yd(this.tree,this.startIndex,this.endIndex,this.startPosition)}get parseState(){return ue(this),M._ts_node_parse_state_wasm(this.tree[0])}get nextParseState(){return ue(this),M._ts_node_next_parse_state_wasm(this.tree[0])}equals(e){return this.tree===e.tree&&this.id===e.id}child(e){return ue(this),M._ts_node_child_wasm(this.tree[0],e),We(this.tree)}namedChild(e){return ue(this),M._ts_node_named_child_wasm(this.tree[0],e),We(this.tree)}childForFieldId(e){return ue(this),M._ts_node_child_by_field_id_wasm(this.tree[0],e),We(this.tree)}childForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1?this.childForFieldId(t):null}fieldNameForChild(e){ue(this);let t=M._ts_node_field_name_for_child_wasm(this.tree[0],e);return t?M.AsciiToString(t):null}fieldNameForNamedChild(e){ue(this);let t=M._ts_node_field_name_for_named_child_wasm(this.tree[0],e);return t?M.AsciiToString(t):null}childrenForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1&&t!==0?this.childrenForFieldId(t):[]}childrenForFieldId(e){ue(this),M._ts_node_children_by_field_id_wasm(this.tree[0],e);let t=M.getValue(Q,"i32"),n=M.getValue(Q+re,"i32"),r=new Array(t);if(t>0){let o=n;for(let s=0;s0){let n=t;for(let r=0;r0){let n=t;for(let r=0;r0){let d=l;for(let u=0;u=e.oldEndIndex){this.startIndex=e.newEndIndex+(this.startIndex-e.oldEndIndex);let t,n;this.startPosition.row>e.oldEndPosition.row?(t=this.startPosition.row-e.oldEndPosition.row,n=this.startPosition.column):(t=0,n=this.startPosition.column,this.startPosition.column>=e.oldEndPosition.column&&(n=this.startPosition.column-e.oldEndPosition.column)),t>0?(this.startPosition.row+=t,this.startPosition.column=n):this.startPosition.column+=n}else this.startIndex>e.startIndex&&(this.startIndex=e.newEndIndex,this.startPosition.row=e.newEndPosition.row,this.startPosition.column=e.newEndPosition.column)}toString(){ue(this);let e=M._ts_node_to_string_wasm(this.tree[0]),t=M.AsciiToString(e);return M._free(e),t}};D(hd,"unmarshalCaptures");D(ue,"marshalNode");D(We,"unmarshalNode");D(Fe,"marshalTreeCursor");D(Tt,"unmarshalTreeCursor");D(jt,"marshalPoint");D(Mr,"unmarshalPoint");D(Jp,"marshalRange");D(Sa,"unmarshalRange");D(Kp,"marshalEdit");D(Xp,"unmarshalLanguageMetadata");ak=/^tree_sitter_\w+$/,_d=class xa{static{D(this,"Language")}0=0;types;fields;constructor(t,n){_s(t),this[0]=n,this.types=new Array(M._ts_language_symbol_count(this[0]));for(let r=0,o=this.types.length;r0){let o=n;for(let s=0;s0){let s=r;for(let a=0;a(ud(),dd))).readFile(t);else{let o=await fetch(t);if(!o.ok){let a=await o.text();throw new Error(`Language.load failed with status ${o.status}. +`,maxBuffer:Cm,timeout:6e5,env:{...F.env,...Cc}});if(m.error){let g=m.error.code;return{ok:!1,error:g==="ENOBUFS"?`git log output exceeds ${Cm/1024/1024} MiB \u2014 bound the window with since`:g==="ENOENT"?"git was not found on PATH":m.error.message}}if(m.status!==0)return{ok:!1,error:Mm(String(m.stderr??""))||`git log exited with ${m.status}`};let p=zw(m.stdout,r,l.length>0);return kr.set(d,p),kr.size>Ww&&kr.delete(kr.keys().next().value),{ok:!0,log:p}}function Bw(e,t){if(!t)return{exclude:[],args:[]};let n=Oc(t)?void 0:$e("git",[...xt(e),"rev-parse","--verify","--quiet",`${t}^{commit}`]);if(n?.ok)return{exclude:[`^${n.stdout.trim()}`],args:[]};if(jw.test(t.trim())){let r=$e("git",[...xt(e),"rev-parse",`--since=${t}`]),o=/^--max-age=(-?\d+)$/m.exec(r.stdout);if(r.ok&&o){let s=BigInt(o[1]);return s<0n||s>=2n**63n?{exclude:[],args:[]}:{exclude:[],args:[`--max-age=${o[1]}`]}}}throw new Error(`since "${t}" is neither a commit (tag, branch, sha) nor a date (2024-01-01, "6 months ago")`)}function Uw(e){try{return ie(e,"utf8").split(` +`).map(t=>t.trim()).filter(Boolean).sort(T)}catch{return[]}}function zw(e,t,n){let r=new Map,o=[],s=[],a=[];for(let l=0;ld&&s.length){let u=e.toString("utf8",d,c),f=r.get(u);f===void 0&&(f=o.length,o.push(u),r.set(u,f)),a.push(f)}l=c+1}return s.push(a.length),{prefix:t,paths:o,starts:s,ids:a,shallow:n}}function Bc(e){if(!e.prefix)return e.paths;let t=e.prefix.length;return e.paths.map(n=>n.startsWith(e.prefix)?n.slice(t):void 0)}function tn(e,t={}){let n=new Map,r=Wc(e,t.since);if(!r.ok)return{churn:n,ok:!1,error:r.error,commits:0};let{log:o}=r,s=Bc(o),a=new Int32Array(o.paths.length).fill(-1),l=0;for(let c=0;c+1{"use strict";$();Qo();ke();me();ce();et();Ow=7;Nw=["-c","core.quotePath=false","-c","color.ui=false","-c","diff.noprefix=false","-c","diff.mnemonicPrefix=false","-c","diff.relative=false","-c","log.showSignature=false","-c","log.follow=false","-c","log.showRoot=true"],xt=e=>["-C",e,...Nw],Oc=e=>e.startsWith("-"),Fc=e=>e.staged?["--cached"]:[e.mergeBase],sa="(no commits)";Lw={a:7,b:8,t:9,n:10,v:11,f:12,r:13};Cm=1024*1024*1024,jw=/^(?:\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}(?::\d{2})?)?(?:Z|[+-]\d{2}:?\d{2})?|(?:\d+[ .](?:second|minute|hour|day|week|month|year)s?[ .]*)+(?:ago)?)$/i,kr=new Map,Ww=4});function Gw(e){return typeof e=="string"?new TextEncoder().encode(e):e}function qw(e,t){if(e.length===1)return e[0];let n=new Uint8Array(t),r=0;for(let o of e)n.set(o,r),r+=o.byteLength;return n}function Im(e){let t=Math.floor(e.byteLength/536870912|0),n=e.byteLength<<3>>>0,r=Math.ceil((e.byteLength+9)/64),o=new Uint8Array(r*64);o.set(e),o[e.byteLength]=128;let s=new DataView(o.buffer);return s.setUint32(o.byteLength-8,t,!1),s.setUint32(o.byteLength-4,n,!1),s}function Uc(e,t){return(e<>>32-t)>>>0}function yn(e,t){return(e>>>t|e<<32-t)>>>0}function Vw(e){let t=Im(e),n=1732584193,r=4023233417,o=2562383102,s=271733878,a=3285377520,l=new Uint32Array(80);for(let u=0;u>>0;h=g,g=p,p=Uc(m,30),m=f,f=S}n=n+f>>>0,r=r+m>>>0,o=o+p>>>0,s=s+g>>>0,a=a+h>>>0}let c=new Uint8Array(20),d=new DataView(c.buffer);return[n,r,o,s,a].forEach((u,f)=>d.setUint32(f*4,u,!1)),c}function Kw(e){let t=Im(e),n=1779033703,r=3144134277,o=1013904242,s=2773480762,a=1359893119,l=2600822924,c=528734635,d=1541459225,u=new Uint32Array(64);for(let p=0;p>>3,M=yn(v,17)^yn(v,19)^v>>>10;u[I]=u[I-16]+C+u[I-7]+M>>>0}let g=n,h=r,_=o,y=s,b=a,S=l,k=c,R=d;for(let I=0;I<64;I++){let P=yn(b,6)^yn(b,11)^yn(b,25),v=b&S^~b&k,C=R+P+v+Jw[I]+u[I]>>>0,M=yn(g,2)^yn(g,13)^yn(g,22),x=g&h^g&_^h&_,w=M+x>>>0;R=k,k=S,S=b,b=y+C>>>0,y=_,_=h,h=g,g=C+w>>>0}n=n+g>>>0,r=r+h>>>0,o=o+_>>>0,s=s+y>>>0,a=a+b>>>0,l=l+S>>>0,c=c+k>>>0,d=d+R>>>0}let f=new Uint8Array(32),m=new DataView(f.buffer);return[n,r,o,s,a,l,c,d].forEach((p,g)=>m.setUint32(g*4,p,!1)),f}function Xw(e){let t="";for(let n of e)t+=Am[n>>4]+Am[n&15];return t}function Zw(e){let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function gs(e){let t=e.toLowerCase().replace("-","");if(t!=="sha1"&&t!=="sha256")throw new Error(`createHash: unsupported algorithm "${e}" in the browser build (sha1, sha256)`);let n=[],r=0,o={update(s){let a=Gw(s);return n.push(a),r+=a.byteLength,o},digest(s){let a=r===0?new Uint8Array(0):qw(n,r),l=t==="sha1"?Vw(a):Kw(a);return s==="hex"?Xw(l):s==="base64"?Zw(l):l}};return o}var Jw,Am,oa=H(()=>{$();Jw=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);Am="0123456789abcdef"});function Re(e){return gs("sha1").update(e).digest("hex")}function Yw(e,t=8){return Re(e).slice(0,t)}var St=H(()=>{"use strict";$();oa()});function ex(e){return Qw.test(e.trim())}function nx(e){return tx.test(e.trim())}function sx(e){return rx.test(e.trim())}function Dt(e){return e.replace(/\*+\/\s*$/,"").replace(/^\s*\/\*+!?/,"").replace(/^\s*\/\/[/!]?/,"").replace(/^\s*--+/,"").replace(/^\s*#+/,"").replace(/^\s*\*+/,"").replace(/^\s*(?:"""|''')/,"").replace(/(?:"""|''')\s*$/,"").replace(/[-=~_]{3,}|\/{3,}|\*{3,}|#{3,}/g," ").trim()}function ix(e){return e.replace(/<\/?[A-Za-z][^>]*>/g," ").replace(/\s+/g," ").trim()}function Er(e,t=ox,n=3){let r=[],o=!1;for(let l of e){let c=l.trim();if(!c){o=!1;continue}if(!o){if(sx(c)){if(r.length)break;o=!0;continue}if(!(ex(c)||nx(c))){if(/^@[a-z]/i.test(c))break;r.push(c)}}}let s=ix(r.join(" "));if(s.length|\]=*\]|-\})\s*$/,"")).replace(/^\|(?:\s+|$)/,"").replace(mx,"")}function zc(e,t){let n=ax.has(e),r=lx.has(e),o=fx.filter(([d])=>d==="/*"||d===""],["--[[","]]"],["{-","-}"],['"""','"""'],["'''","'''"]],mx=/^@(?:file|fileoverview|overview|desc|description)\b\s*/i,px=/^created by\b.*\bon\s+\d{1,4}[./-]\d{1,2}[./-]\d{1,4}\.?$/i,gx=60,hx=200,yx=8});function xe(e,t,n,r,o){let s=[],a=t.split(/\r?\n/),l=o===void 0?a:o.split(/\r?\n/),c=o!==void 0&&r.some(u=>u.scope==="member")?xx(o):void 0,d=new Map;for(let u=0;u{let l=a.doc??kx(o,a.line-1,n),c=a.endLine??s?.endOf(a.line-1,o);return l===void 0&&c===void 0?a:{...a,...c!==void 0?{endLine:c}:{},...l!==void 0?{doc:l}:{}}})}function kx(e,t,n){let r=t-1;for(;r>=0&&n.decoration?.test(e[r]);)r--;if(n.docAttr){let s=Ex(e,r);if(s)return Er(s)}let o=[];for(;r>=0;){let s=e[r];if(n.comment.test(s)){o.push(s),r--;continue}if(!n.block||!/\*\/\s*$/.test(s))break;let a=r;for(;a>=0&&!e[a].includes("/*");)a--;if(a<0||!/^\s*\/\*(?!!)/.test(e[a]))break;for(let l=r;l>=a;l--)o.push(e[l]);r=a-1}if(o.length)return Er(o.reverse().map(Dt))}function Ex(e,t){if(t<0)return;let n=/^\s*@doc\s+(?:~[sS])?"(.*)"\s*$/.exec(e[t]);if(n)return[n[1]];if(/^\s*"""\s*$/.test(e[t]))for(let r=t-1;r>=0&&t-r<400;r--){if(/^\s*@doc\s+(?:~[sS])?"""\s*$/.test(e[r]))return e.slice(r+1,t);if(/"""/.test(e[r]))return}}function rn(e){return vx[e]??"other"}function Cx(e){let t=e.length,n="",r=0,o=0;for(;o{if(!a){a=[0];for(let _=0;_>>1;a[_]<=p?g=_+1:h=_}return g},c=new Map;for(let p of n)c.has(p.name)||c.set(p.name,p);let d=Cx(t),u=/export\s*\{([\s\S]*?)\}\s*(?:from\s*['"]([^'"]+)['"])?\s*;?/g,f;for(;(f=u.exec(d))&&o.length{"use strict";$();li();Ee=String.raw`[\p{L}\p{Nl}_$][\p{L}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}$\u200c\u200d]*`,bx=new Set(["class","struct","enum","interface","protocol","actor","extension","object","trait","mixin"]);Gc=class{constructor(t){this.masked=t;let n=[];for(let r=0;r>>1;this.lineStarts[o]<=t?n=o+1:r=o}return n-1}endOf(t,n){let r=this.masked,o=/^\s*/.exec(n[t])[0],s=0,a=t;for(let l=this.lineStarts[t];l60||a>=this.lineStarts.length)return;let d=r.slice(this.lineStarts[a],this.lineStarts[a+1]??r.length),u=/^\s*/.exec(d)[0],f=d.charAt(u.length);if(s===0&&f&&!"{)]".includes(f)&&u.length<=o.length)return;continue}if(c===40||c===91)s++;else if(c===41||c===93){if(--s<0)return}else{if(s===0&&c===59)return;if(s===0&&c===123){let d=this.closeOf.get(l);if(d===void 0)return;let u=this.lineOf(d),f=r.slice(d+1,this.lineStarts[u+1]??r.length);if(u===this.lineOf(l)){if(u===t&&/^[\s;,)\]}]*$/.test(f))return this.continued(u)?void 0:u+1;l=d;continue}return f.includes("{")?void 0:n[u].startsWith(o+"}")&&!this.continued(u)?u+1:void 0}}}}continued(t){for(let n=t+1;n)/.test(r)}return!1}},vx={".ts":"typescript",".tsx":"typescript",".mts":"typescript",".cts":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".go":"go",".rb":"ruby",".rake":"ruby",".java":"java",".rs":"rust",".c":"c",".h":"c",".cc":"cpp",".cpp":"cpp",".cxx":"cpp",".hpp":"cpp",".cs":"csharp",".php":"php",".swift":"swift",".kt":"kotlin",".kts":"kotlin",".scala":"scala",".sc":"scala",".clj":"clojure",".ex":"elixir",".exs":"elixir",".erl":"erlang",".hs":"haskell",".dart":"dart",".lua":"lua",".sh":"shell",".bash":"shell",".zsh":"shell",".ksh":"shell",".fish":"shell",".hh":"cpp",".m":"objective-c",".mm":"objective-c",".sql":"sql",".graphql":"graphql",".gql":"graphql",".proto":"protobuf",".md":"markdown",".mdx":"markdown",".rst":"restructuredtext",".txt":"text",".json":"json",".yaml":"yaml",".yml":"yaml",".toml":"toml",".ini":"ini",".html":"html",".css":"css",".scss":"scss",".vue":"vue",".svelte":"svelte",".astro":"astro",".zig":"zig",".hcl":"hcl",".tf":"terraform",".tfvars":"terraform",".sol":"solidity"};Rx=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]);Hc=47,$m=42,Tm=10,Mx=34,Ax=39,Ix=96,$x=92,aa=400});function Jc(e,t=[]){if(t.length>=da)return t;let n=e.indexOf("{");if(n===-1){let c=e.replace(/\s+as\s+\w+\s*$/,"").replace(/::\s*\*\s*$/,"").replace(/^::/,"").trim();return c&&t.push(c),t}let r=e.slice(0,n),o=0,s=-1;for(let c=n;c|\bas\b/).map(u=>u.trim());if(!a||l==="_")continue;let c=a==="_"||a==="*"||/^given\b/.test(a),d=Kc(c?r+".*":r+"."+a);d&&t.length=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95||e===Gm||e>127}function vr(e){let t=e.length,n=new mi(e),r=[],o=0,s=c=>{let d=c;for(;d{let d=c-1;for(;d>=0&&n.codeAt(d)<=Hm;)d--;if(d<0)return!0;let u=n.codeAt(d);if(Ux.has(u))return!0;if(!Lm(u))return!1;let f=d;for(;f>0&&Lm(e.charCodeAt(f-1));)f--;return zx.has(e.slice(f,d+1))},l=0;for(;l0&&e.charCodeAt(l-1)===Xc;)l--;let c=o-l;if(t.raw==="r"?/[rR]$/.test(e.slice(Math.max(0,l-2),l)):c>0){let u=e.indexOf('"'+"#".repeat(c),o+1),f=u===-1?n:u;r.blank(o+1,f),o=u===-1?n:u+1+c;continue}}let a=s===ci||s===ua&&t.squote==="string";if(a||s===fi&&t.backtick){let l=a&&t.triple&&e.charCodeAt(o+1)===s&&e.charCodeAt(o+2)===s,c=o+(l?3:1),d=c;if(l){let f=e.indexOf(s===ci?'"""':"'''",c);d=f===-1?n:f}else for(;d{n.get(s)===!0&&n.delete(s),n.set(s,!1)},o=s=>{n.has(s)||n.set(s,!0)};if(Tx.has(e)){if(!t.includes("import")&&!t.includes("require")&&!t.includes("from"))return[];let s=vr(t);for(let a of[Gx,qx,Vx,Jx]){a.lastIndex=0;for(let l;l=a.exec(s);){let[c,d]=l.indices[1];r(t.slice(c,d))}}}else if(Fx.has(e)){if(!t.includes("import"))return[];let s=Hx(t);jm.lastIndex=0;for(let a;a=jm.exec(s);){let l=a[1];if(l!==void 0){if(r(l),!l||l==="__future__")continue;let c=a[2].startsWith("(")?a[2].slice(1,-1):a[2].replace(/\\\r?\n/g," ");for(let d of c.split(",")){let u=d.trim().split(/\s+as\s+/)[0].trim();/^[A-Za-z_]\w*$/.test(u)&&o(Zx(l,u))}continue}for(let c of a[3].split(",")){let d=c.trim().split(/\s+as\s+/)[0].trim();d&&/^[\w.]+$/.test(d)&&r(d)}}}else if(e===".go"){let s=t.split(/\r?\n/),a=!1;for(let l of s){let c=l.trim();if(a){if(c===")"){a=!1;continue}let u=/"([^"]+)"/.exec(c);u&&r(u[1]);continue}if(/^import\s*\($/.test(c)){a=!0;continue}let d=/^import\s+(?:[\w.]+\s+)?"([^"]+)"/.exec(c);d&&r(d[1])}}else if(e===".rs"){let s,a=new Set,l=/#\[\s*path\s*=\s*"([^"]+)"\s*\]\s*(?:(?:#\[[^\]]*\]|\/\/[^\n]*)\s*)*(?:pub(?:\([^)]*\))?\s+)?mod\s+[A-Za-z_]\w*\s*;/g;for(;s=l.exec(t);)r(`mod-path ${s[1]}`),a.add(s.index+s[0].length);let c=/^[^\S\r\n]*(?:pub(?:\([^)]*\))?\s+)?mod\s+([A-Za-z_]\w*)\s*;/gm;for(;s=c.exec(t);)a.has(s.index+s[0].length)||r(`mod ${s[1]}`);let d=/^[^\S\r\n]*(?:pub(?:\([^)]*\))?\s+)?use\s+([^;]+);/gm;for(;s=d.exec(t);)for(let u of Jc(s[1].trim()))r(u)}else if(e===".java"){let s,a=/^[^\S\r\n]*import\s+(?:static\s+)?([\w.]+(?:\.\*)?)\s*;/gm;for(;s=a.exec(t);)r(s[1])}else if(e===".rb"||e===".rake"){let s,a=/^[^\S\r\n]*require_relative\s+['"]([^'"]+)['"]/gm;for(;s=a.exec(t);)r(Vc(s[1]));let l=/^[^\S\r\n]*require\s+['"]([^'"]+)['"]/gm;for(;s=l.exec(t);)r(s[1])}else if(Ox.has(e)){let s,a=/^[^\S\r\n]*#\s*include\s*"([^"]+)"/gm;for(;s=a.exec(t);)r(s[1])}else if(e===".php"){let s,a=Kx.exec(t)?.index??1/0;for(Wm.lastIndex=0;s=Wm.exec(t);){if(s[1]&&s.index>a)continue;let l=s[2].trim().replace(/^(?:function|const)\s+/,""),c=/^\\?([\w\\]*?)\\?\s*\{([^}]*)\}$/.exec(l),d=c?c[2].split(",").map(u=>`${c[1]}\\${u.trim()}`):l.split(",");for(let u of d){let f=u.trim().replace(/\\(?:function|const)\s+/,"\\").replace(/\s+as\s+\w+$/,"").replace(/^\\/,"");Xx.test(f)&&r(f)}}for(Bm.lastIndex=0;s=Bm.exec(t);){let{here:l,up:c,levels:d,path:u}=s.groups;r(l?Vc(u.replace(/^\/+/,"")):c?"../".repeat(Number(d??1))+u.replace(/^\/+/,""):Vc(u))}}else if(e===".cs"){let s,a=/^[^\S\r\n]*(?:global\s+)?using\s+(?:static\s+)?([A-Za-z_][\w.]*)\s*;/gm;for(;s=a.exec(t);)r(s[1])}else if(Um.has(e)){let s,a=/^[ \t]*import[ \t]+([\w.`*]+)/gm;for(;s=a.exec(t);){let l=Kc(s[1]);l&&r(l)}}else if(zm.has(e)){let s,a=/^[ \t]*import[ \t]+((?:[^\n;{]|\{[^}]*\})+)/gm;for(;s=a.exec(t);){let l=[],c=0,d="";for(let u of s[1].replace(/\/\/.*$/gm,""))u==="{"?c++:u==="}"&&c--,u===","&&c===0?(Om(d,l),d=""):d+=u;Om(d,l);for(let u of l)r(u)}}else if(e===".dart"){let s,a=/^[ \t]*(?:import|export|part)[ \t]+(?:'([^'\n]+)'|"([^"\n]+)")/gm;for(;s=a.exec(t);)r(s[1]??s[2])}else if(e===".lua"){let s,a=/\brequire\s*\(?\s*['"]([\w-]+(?:[./][\w-]+)*)['"]/g;for(;s=a.exec(t);)r(s[1])}else if(Nx.has(e)){let s,a=/(?:^|[;&|]|\b(?:then|do|else)\b)[ \t]*(?:source|\.)[ \t]+([^\n]+)/gm;for(;s=a.exec(t);){let l=Lx(s[1]);l&&r(l)}}else if(e===".ex"||e===".exs"){let s,a=/^[ \t]*(?:alias|import|require|use)[ \t]+([A-Z]\w*(?:\.[A-Z]\w*)*)(?:\.\{([^}]*)\})?/gm;for(;s=a.exec(t);){if(s[2]===void 0){r(s[1]);continue}let l=0;for(let c of s[2].split(",")){let d=c.trim();/^[A-Z]\w*(?:\.[A-Z]\w*)*$/.test(d)&&l++a?{kind:"import",spec:s,soft:!0}:{kind:"import",spec:s})}function fa(e,t){if(e===".java")return/^\s*package\s+([\w.]+)\s*;/m.exec(t)?.[1];if(e===".cs")return/^\s*(?:file-scoped\s+)?namespace\s+([\w.]+)/m.exec(t)?.[1];if(Um.has(e)){let n=/^[ \t]*package[ \t]+([\w.`]+)/m.exec(t);return n?n[1].replace(/`/g,""):void 0}if(zm.has(e))return Dx(t)}var Tx,Fx,Ox,Um,zm,Nx,da,Px,mi,Nm,pi,Hm,Xc,Gm,ua,ci,di,Mn,jx,ui,Wx,fi,Pm,Bx,Ux,zx,Dm,ca,qc,Gx,qx,Vx,Jx,jm,Kx,Wm,Xx,Bm,ft=H(()=>{"use strict";$();Tx=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]),Fx=new Set([".py",".pyi"]),Ox=new Set([".c",".h",".cc",".cpp",".cxx",".hpp",".hh"]),Um=new Set([".kt",".kts"]),zm=new Set([".scala",".sc"]),Nx=new Set([".sh",".bash",".zsh",".ksh",".fish"]),da=16;Px=/^(["']?)(?:\$\(\s*dirname\s+(["']?)\$(?:0|\{BASH_SOURCE(?:\[0\])?\}|BASH_SOURCE)\2\s*\)|\$\{(?:BASH_SOURCE(?:\[0\])?|0)%\/\*\})\//;mi=class{constructor(t){this.src=t}src;codes;blank(t,n){if(n<=t)return;let r=this.codes;if(!r){r=this.codes=new Uint16Array(this.src.length);for(let o=0;o~^"].map(e=>e.charCodeAt(0))),zx=new Set(["return","typeof","instanceof","in","of","new","delete","void","throw","case","do","else","yield","await"]),Dm=/\bimport\(\s*['"][^'"\n]*['"]\s*[,)]|@import\b[^'"@]{0,2048}?\bfrom\s*['"][^'"\n]*['"]/g;ca=/'(?:\\(?:u\{[0-9A-Fa-f]{1,6}\}|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|.)|[^\\'\n])'/y;qc="[\\w$\\u00a0-\\uffff]+",Gx=new RegExp(`(?:^|[^\\w$.])(?:import|export)\\b\\s*(?:(?:type|typeof|defer|source)\\s+)?(?:${qc}\\s*,\\s*)?(?:${qc}|\\*\\s*(?:as\\s+${qc})?|\\{[^{}]*\\})\\s*from\\s*['"]([^'"]+)['"]`,"dg"),qx=/(?:^|[\n;])[ \t]*import\s*['"]([^'"]+)['"]/dg,Vx=/\brequire\(\s*['"]([^'"]+)['"]\s*\)/dg,Jx=/\bimport\(\s*['"]([^'"]+)['"]\s*[,)]/dg,jm=/(?:^|;)[ \t]*(?:from[ \t]+(\.*[\w.]*)[ \t]+import\b[ \t]*(\([^)]*\)|(?:\\\r?\n|[^\n;])*)|import[ \t]+([^\n;]*))/gm,Kx=/^[ \t]*(?:(?:abstract|final|readonly)[ \t]+)*(?:class|interface|trait|enum)[ \t]+[A-Za-z_]/m,Wm=/^([ \t]*)use\s+([^;]*);/gm,Xx=/^[A-Za-z_][\w\\]*$/,Bm=/\b(?:require|include)(?:_once)?\s*\(?\s*(?:(?__DIR__|dirname\(\s*__FILE__\s*\))\s*\.\s*|(?dirname\(\s*__DIR__\s*(?:,\s*(?\d+)\s*)?\))\s*\.\s*)?['"](?[^'"]+)['"]/g});function tS(e){return(e.split("/").pop()??"").replace(/\.[^.]+$/,"")}function nS(e,t){let n=s=>{if(!(!s||s==="default"))for(let a of t)a.name===s&&(a.exported=!0)},r=(s,a)=>{for(let l of s.split(",")){let c=l.trim().replace(/^type\s+/,"");if(!c)continue;let d=/^([\w$]+)\s+as\s+([\w$]+)$/.exec(c);if(d){d[2]!=="default"&&n(d[1]);continue}if(a){let u=/^([\w$]+)\s*:\s*([\w$]+)$/.exec(c);if(u){n(u[1]),n(u[2]);continue}}n(/^([\w$]+)/.exec(c)?.[1])}},o;for(qm.lastIndex=0;o=qm.exec(e);)o[2]||r(o[1]??"",!1);for(Vm.lastIndex=0;o=Vm.exec(e);)r(o[1]??"",!0);for(Jm.lastIndex=0;o=Jm.exec(e);)n(o[2])}var ot,Zc,At,nt,Yx,Qx,eS,qm,Vm,Jm,Km,Xm=H(()=>{"use strict";$();ft();tt();ot=`(?${Ee})`,Zc=String.raw`function(?:\s*\*\s*|\s+)`,At=String.raw`(?:declare\s+)?`,nt=e=>new RegExp(e,"u"),Yx=[{re:nt(String.raw`^\s*export\s+${At}(?:async\s+)?${Zc}${ot}`),kind:"function",exported:!0},{re:nt(String.raw`^\s*export\s+default\s+(?:async\s+)?${Zc}${ot}`),kind:"function",exported:!0},{re:nt(String.raw`^\s*export\s+default\s+(?:abstract\s+)?class\s+(?!extends\b)${ot}`),kind:"class",exported:!0},{re:nt(String.raw`^\s*${At}(?:async\s+)?${Zc}${ot}`),kind:"function",exported:!1},{re:nt(String.raw`^\s*export\s+${At}(?:abstract\s+)?class\s+${ot}`),kind:"class",exported:!0},{re:nt(String.raw`^\s*${At}(?:abstract\s+)?class\s+${ot}`),kind:"class",exported:!1},{re:nt(String.raw`^\s*export\s+${At}interface\s+${ot}`),kind:"interface",exported:!0},{re:nt(String.raw`^\s*${At}interface\s+${ot}`),kind:"interface",exported:!1},{re:nt(String.raw`^\s*export\s+${At}type\s+${ot}`),kind:"type",exported:!0},{re:nt(String.raw`^\s*${At}type\s+${ot}\s*[=<]`),kind:"type",exported:!1},{re:nt(String.raw`^\s*export\s+${At}(?:const\s+)?enum\s+${ot}`),kind:"enum",exported:!0},{re:nt(String.raw`^\s*export\s+${At}(?:namespace|module)\s+(?${Ee}(?:\.${Ee})*)`),kind:"namespace",exported:!0},{re:nt(String.raw`^\s*${At}(?:namespace|module)\s+(?${Ee}(?:\.${Ee})*)\s*\{`),kind:"namespace",exported:!1},{re:nt(String.raw`^\s*export\s+${At}(?:const|let|var)\s+${ot}\s*[:=;]`),kind:"const",exported:!0},{re:nt(String.raw`^\s*exports\.${ot}\s*=`),kind:"const",exported:!0},{re:nt(String.raw`^\s*module\.exports\.${ot}\s*=`),kind:"const",exported:!0},{re:nt(String.raw`^\s*(?:const|let)\s+${ot}\s*=\s*(?:async\s*)?\([^)]*\)\s*(?::[^=]+)?=>`),kind:"const",exported:!1},{re:nt(String.raw`^${At}(?:const|let|var)\s+${ot}\s*[:=]`),kind:"const",exported:!1},{re:nt(String.raw`^\s*export\s+default\s+${ot}\s*;?\s*$`),kind:"default",exported:!0}],Qx=/^\s*export\s+default\s+(?:async\s+)?(?:function|class)?\s*(?:\(|\{|extends\b)/,eS=/^\s*export\s+default\s+(?:async\s+)?(?:function|class)\s+(?!extends\b)[\w$]+/;qm=/export\s*\{([^}]*)\}\s*(from\b)?/g,Vm=/module\.exports\s*=\s*\{([^}]*)\}/g,Jm=/(^|\n)[ \t]*export(?:\s+default\s+|\s*=\s*)([A-Za-z_$][\w$]*)[ \t]*;?[ \t]*(?=\r?\n|$)/g;Km={lang:"javascript/typescript",exts:[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"],lexis:{mask:vr,comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n=t){let r=e.match(/\.(ts|tsx|mts|cts)$/)?"typescript":"javascript",o=xe(e,t,r,Yx,n),s=n.split(/\r?\n/);for(let a=0;a{"use strict";$();tt();ma=e=>!e.startsWith("_")||e.startsWith("__"),rS=[{re:/^(?:async\s+)?def\s+(?[\w]+)\s*\(/,kind:"function",exported:e=>ma(e.groups.name)},{re:/^\s+(?:async\s+)?def\s+(?[\w]+)\s*\(/,kind:"method",exported:e=>ma(e.groups.name)},{re:/^class\s+(?[\w]+)/,kind:"class",exported:e=>ma(e.groups.name)},{re:/^\s+class\s+(?[\w]+)/,kind:"class",exported:e=>ma(e.groups.name)}],Zm={lang:"python",exts:[".py",".pyi"],lexis:{comment:/^\s*#(?!!)/,decoration:/^\s*@/},extract(e,t){return xe(e,t,"python",rS)}}});function Qm(e){return[{re:new RegExp(String.raw`${e}(?${Ee})${pa}\s+struct\b`,"u"),kind:"struct",exported:An},{re:new RegExp(String.raw`${e}(?${Ee})${pa}\s+interface\b`,"u"),kind:"interface",exported:An},{re:new RegExp(String.raw`${e}(?${Ee})${pa}\s+`,"u"),kind:"type",exported:An}]}function lS(e,t,n){let r=[],o=t.split(/\r?\n/),s=n.split(/\r?\n/);for(let a=0;a{"use strict";$();ft();tt();sS=e=>/^\p{Lu}/u.test(e),An=e=>sS(e.groups.name),pa=String.raw`(?:\[[^\]]*\])?`,iS=[{re:new RegExp(String.raw`^func\s+\([^)]*\)\s+(?${Ee})\s*\(`,"u"),kind:"method",exported:An},{re:new RegExp(String.raw`^func\s+(?${Ee})${pa}\s*\(`,"u"),kind:"function",exported:An},...Qm("^type\\s+"),{re:new RegExp(String.raw`^const\s+(?(?!_\b)${Ee})`,"u"),kind:"const",exported:An},{re:new RegExp(String.raw`^var\s+(?(?!_\b)${Ee})`,"u"),kind:"var",exported:An}];oS=/^(const|var|type)\s*\(\s*$/,aS={const:[{re:new RegExp(String.raw`^\s+(?(?!_\b)${Ee})\b`,"u"),kind:"const",exported:An}],var:[{re:new RegExp(String.raw`^\s+(?(?!_\b)${Ee})\b`,"u"),kind:"var",exported:An}],type:Qm("^\\s+")};ep={lang:"go",exts:[".go"],lexis:{mask:e=>Ye(e,{squote:"char",backtick:!0}),comment:/^\s*\/\//,block:!0},extract(e,t,n){let r=xe(e,t,"go",iS,n),o=n===void 0?[]:lS(e,t,n);return o.length?[...r,...o].sort((s,a)=>s.line-a.line):r}}});var cS,np,rp=H(()=>{"use strict";$();tt();cS=[{re:/^\s*def\s+(?:self\.)?(?[\w?!=]+)/,kind:"method",exported:!0},{re:/^\s*(?public|private|protected|module_function|(?:public|private)_class_method)\s+def\s+(?:self\.)?(?[\w?!=]+)/,kind:"method",exported:e=>/^(public|module_function|public_class_method)$/.test(e.groups.vis)},{re:/^\s*class\s+(?[\w:]+)/,kind:"class",exported:!0},{re:/^\s*module\s+(?[\w:]+)/,kind:"module",exported:!0}],np={lang:"ruby",exts:[".rb",".rake"],lexis:{comment:/^\s*#(?![!{])/},extract(e,t){return xe(e,t,"ruby",cS)}}});var dS,sp,ip=H(()=>{"use strict";$();ft();tt();dS=[{re:/^\s*(?:public|protected|private)?\s*(?:abstract\s+|final\s+)?class\s+(?[\w]+)/,kind:"class",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)?\s*interface\s+(?[\w]+)/,kind:"interface",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)?\s*enum\s+(?[\w]+)/,kind:"enum",exported:(e,t)=>/\bpublic\b/.test(t)},{re:/^\s*(?:public|protected|private)\s+(?:static\s+|final\s+|abstract\s+|synchronized\s+)*[\w<>\[\],.?\s]+\s+(?[\w]+)\s*\(/,kind:"method",exported:(e,t)=>/\bpublic\b/.test(t)}],sp={lang:"java",exts:[".java"],lexis:{mask:e=>Ye(e,{triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"java",dS,n)}}});var hi,uS,op,ap=H(()=>{"use strict";$();ft();tt();hi=(e,t)=>/^\s*pub\b/.test(t),uS=[{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?(?:unsafe\s+)?fn\s+(?[\w]+)/,kind:"function",exported:hi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?struct\s+(?[\w]+)/,kind:"struct",exported:hi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?enum\s+(?[\w]+)/,kind:"enum",exported:hi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?trait\s+(?[\w]+)/,kind:"trait",exported:hi},{re:/^\s*(?:pub(?:\([^)]*\))?\s+)?type\s+(?[\w]+)/,kind:"type",exported:hi}],op={lang:"rust",exts:[".rs"],lexis:{mask:e=>Ye(e,{nested:!0,squote:"char",multiline:!0,raw:"r"}),comment:/^\s*\/\/(?!!)/,block:!0,decoration:/^\s*#\[/},extract(e,t,n){return xe(e,t,"rust",uS,n)}}});var yi,fS,lp,cp=H(()=>{"use strict";$();ft();tt();yi=(e,t)=>/\b(public|internal)\b/.test(t),fS=[{re:/^\s*(?:public|internal|protected|private)?\s*(?:static\s+|sealed\s+|abstract\s+|partial\s+)*(?:class|record)\s+(?\w+)/,kind:"class",exported:yi},{re:/^\s*(?:public|internal|protected|private)?\s*(?:partial\s+)?interface\s+(?\w+)/,kind:"interface",exported:yi},{re:/^\s*(?:public|internal|protected|private)?\s*(?:readonly\s+)?(?:ref\s+)?struct\s+(?\w+)/,kind:"struct",exported:yi},{re:/^\s*(?:public|internal|protected|private)?\s*enum\s+(?\w+)/,kind:"enum",exported:yi},{re:/^\s*(?:public|internal|protected|private)\s+(?:static\s+|virtual\s+|override\s+|async\s+|sealed\s+|abstract\s+|new\s+)*[\w<>\[\],.?]+\s+(?\w+)\s*(?:<[^>]*>)?\s*\(/,kind:"method",exported:yi}],lp={lang:"csharp",exts:[".cs"],lexis:{mask:e=>Ye(e,{squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*\[/},extract(e,t,n){return xe(e,t,"csharp",fS,n)}}});var mS,dp,up=H(()=>{"use strict";$();ft();tt();mS=[{re:/^\s*(?:abstract\s+|final\s+)*class\s+(?\w+)/,kind:"class",exported:!0},{re:/^\s*interface\s+(?\w+)/,kind:"interface",exported:!0},{re:/^\s*trait\s+(?\w+)/,kind:"trait",exported:!0},{re:/^\s*enum\s+(?\w+)/,kind:"enum",exported:!0},{re:/^\s*(?:public\s+|protected\s+|private\s+|static\s+|abstract\s+|final\s+)*function\s+(?\w+)\s*\(/,kind:"function",exported:(e,t)=>!/\b(private|protected)\b/.test(t)}],dp={lang:"php",exts:[".php"],lexis:{mask:e=>Ye(e,{hash:!0,squote:"string",multiline:!0}),comment:/^\s*(?:\/\/|#(?!\[))/,block:!0,decoration:/^\s*#\[/},extract(e,t,n){return xe(e,t,"php",mS,n)}}});var hs,pS,gS,ys,Rr,hS,fp,mp=H(()=>{"use strict";$();ft();tt();hs=(e,t)=>!/\b(?:private|fileprivate)\b(?!\s*\(\s*set\s*\))/.test(t),pS=String.raw`(?:@${Ee}(?:\([^)]*\))?\s+)*`,gS=String.raw`(?:(?:public|open|internal|private|fileprivate|package|final|static|class|override|mutating|nonmutating|convenience|required|dynamic|lazy|weak|unowned|indirect|nonisolated|isolated|distributed|optional|prefix|postfix|infix|async)(?:\([^)]*\))?\s+)*`,ys=String.raw`^\s*${pS}${gS}`,Rr=(e,t,n={})=>({re:new RegExp(String.raw`${ys}${e}\s+(?!(?:func|var|let|subscript|init)\b)(?${Ee})`,"u"),kind:t,exported:hs,...n}),hS=[Rr("class","class"),Rr("struct","struct"),Rr("enum","enum"),Rr("protocol","protocol"),Rr("actor","actor"),{re:new RegExp(String.raw`${ys}extension\s+(?${Ee}(?:\.${Ee})*)`,"u"),kind:"extension",exported:hs},Rr("typealias","type"),Rr("func","function"),{re:new RegExp(String.raw`${ys}(?init)[?!]?\s*[<(]`,"u"),kind:"constructor",exported:hs},{re:new RegExp(String.raw`${ys}(?deinit)\s*\{`,"u"),kind:"destructor",exported:hs},{re:new RegExp(String.raw`${ys}(?subscript)\s*[<(]`,"u"),kind:"method",exported:hs},{re:new RegExp(String.raw`${ys}(?:let|var)\s+(?${Ee})\s*[:={]`,"u"),kind:"property",exported:hs,scope:"member"}],fp={lang:"swift",exts:[".swift"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"none",raw:"#"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"swift",hS,n)}}});var Kn,yS,_S,Xn,pp,bS,gp,hp=H(()=>{"use strict";$();ft();tt();Kn=(e,t)=>!/\bprivate\b/.test(t),yS=String.raw`(?:@[\w.:]+(?:\([^)]*\))?\s+)*`,_S=String.raw`(?:(?:public|internal|private|protected|abstract|sealed|open|final|data|value|inline|inner|override|suspend|operator|infix|tailrec|external|lateinit|expect|actual|const|companion|enum|annotation)\s+)*`,Xn=String.raw`^\s*${yS}${_S}`,pp=String.raw`(?:${Ee}(?:<[^()=]*>)?\??\.)*`,bS=[{re:new RegExp(String.raw`${Xn}enum\s+class\s+(?${Ee})`,"u"),kind:"enum",exported:Kn},{re:new RegExp(String.raw`${Xn}annotation\s+class\s+(?${Ee})`,"u"),kind:"annotation",exported:Kn},{re:new RegExp(String.raw`${Xn}class\s+(?${Ee})`,"u"),kind:"class",exported:Kn},{re:new RegExp(String.raw`${Xn}(?:fun\s+)?interface\s+(?${Ee})`,"u"),kind:"interface",exported:Kn},{re:new RegExp(String.raw`${Xn}object\s+(?${Ee})`,"u"),kind:"object",exported:Kn},{re:new RegExp(String.raw`${Xn}typealias\s+(?${Ee})`,"u"),kind:"type",exported:Kn},{re:new RegExp(String.raw`${Xn}fun\s+(?:<[^>]*(?:>[^>]*)?>\s*)?${pp}(?${Ee})\s*\(`,"u"),kind:"function",exported:Kn},{re:new RegExp(String.raw`${Xn}(?:val|var)\s+(?:<[^>]*>\s*)?${pp}(?${Ee})\s*(?:[:=]|by\b)`,"u"),kind:"property",exported:Kn,scope:"member"}],gp={lang:"kotlin",exts:[".kt",".kts"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"kotlin",bS,n)}}});var wS,xS,yp,_p=H(()=>{"use strict";$();ft();tt();wS="(?!\\s*(?:if|for|while|switch|return|else|do|sizeof|typedef)\\b)",xS=[{re:/^\s*(?:class|struct)\s+(?[A-Za-z_]\w+)\s*(?:[:{]|$)/,kind:"class",exported:!0},{re:/^\s*namespace\s+(?[A-Za-z_]\w+)/,kind:"namespace",exported:!0},{re:/^\s*(?:typedef\s+)?(?:struct|enum|union)\s+(?[A-Za-z_]\w+)\s*\{/,kind:"struct",exported:!0},{re:new RegExp(`^${wS}[A-Za-z_][\\w\\s\\*&<>:,]*?\\b(?[A-Za-z_]\\w+)\\s*\\([^;{]*\\)\\s*(?:const)?\\s*\\{?\\s*$`),kind:"function",exported:!0}],yp={lang:"c/cpp",exts:[".c",".h",".cc",".cpp",".cxx",".hpp",".hh"],lexis:{mask:e=>Ye(e,{squote:"char"}),comment:/^\s*\/\//,block:!0},extract(e,t,n){return xe(e,t,e.match(/\.(c|h)$/)?"c":"cpp",xS,n)}}});var SS,bp,wp=H(()=>{"use strict";$();tt();SS=[{re:/^\s*local\s+function\s+(?[\w.:]+)\s*\(/,kind:"function",exported:!1},{re:/^\s*function\s+(?[\w.:]+)\s*\(/,kind:"function",exported:!0},{re:/^\s*(?:local\s+)?(?[\w.]+)\s*=\s*function\s*\(/,kind:"function",exported:!0}],bp={lang:"lua",exts:[".lua"],lexis:{comment:/^\s*--/},extract(e,t){return xe(e,t,"lua",SS).map(n=>{let r=Math.max(n.name.lastIndexOf("."),n.name.lastIndexOf(":"));return r>0&&r{"use strict";$();tt();kS=[{re:/^\s*function\s+(?[\w:-]+)\s*(?:\(\))?\s*\{?/,kind:"function",exported:!0},{re:/^\s*(?[A-Za-z_][\w:-]*)\s*\(\)\s*\{?/,kind:"function",exported:!0}],xp={lang:"shell",exts:[".sh",".bash",".zsh",".ksh"],lexis:{comment:/^\s*#(?!!)/},extract(e,t){return xe(e,t,"shell",kS)}}});var ES,kp,Ep=H(()=>{"use strict";$();tt();ES=[{re:/^\s*defmodule\s+(?[\w.]+)/,kind:"module",exported:!0},{re:/^\s*defp\s+(?[\w?!]+)/,kind:"function",exported:!1},{re:/^\s*def\s+(?[\w?!]+)/,kind:"function",exported:!0},{re:/^\s*defmacrop\s+(?[\w?!]+)/,kind:"macro",exported:!1},{re:/^\s*defmacro\s+(?[\w?!]+)/,kind:"macro",exported:!0},{re:/^\s*defguardp\s+(?[\w?!]+)/,kind:"guard",exported:!1},{re:/^\s*defguard\s+(?[\w?!]+)/,kind:"guard",exported:!0}],kp={lang:"elixir",exts:[".ex",".exs"],lexis:{comment:/^\s*#/,decoration:/^\s*@(?!(?:doc|moduledoc|typedoc)\b)\w+/,docAttr:!0},extract(e,t){return xe(e,t,"elixir",ES)}}});var vS,vp,Rp=H(()=>{"use strict";$();ft();tt();vS=[{re:/^\s*(?:final\s+|sealed\s+|abstract\s+|implicit\s+)*(?:case\s+)?class\s+(?\w+)/,kind:"class",exported:!0},{re:/^\s*(?:sealed\s+)?trait\s+(?\w+)/,kind:"trait",exported:!0},{re:/^\s*(?:case\s+)?object\s+(?\w+)/,kind:"object",exported:!0},{re:/^\s*(?:override\s+|final\s+|private\s+|protected\s+|implicit\s+)*def\s+(?\w+)/,kind:"def",exported:(e,t)=>!/\b(private|protected)\b/.test(t)}],vp={lang:"scala",exts:[".scala",".sc"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"char"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n){return xe(e,t,"scala",vS,n)}}});function AS(e,t,n,r){let o=[],s=n.split(/\r?\n/),a=t.split(/\r?\n/),l,c=0,d;for(let u=0;uc?p:-1),p!==d||r.has(u+1))continue;let g=MS.exec(f);if(!g||g.groups.type!==l)continue;let h=g.groups.name??l;o.push({name:h,kind:"constructor",file:e,line:u+1,signature:a[u].trim().slice(0,200),exported:!h.startsWith("_")&&!l.startsWith("_"),lang:"dart"})}return o}var sn,ha,ga,Cp,Mp,RS,CS,MS,Ap,Ip=H(()=>{"use strict";$();ft();tt();sn=e=>!(e.groups?.name??"").startsWith("_"),ha=String.raw`(?:@[\w$.]+(?:\([^)]*\))?\s+)*`,ga=String.raw`(?!(?:return|await|throw|new|else|if|for|while|do|switch|yield|case|const|final|var|late|factory|get|set|is|as|in)\b)[\w$.]+(?:<[^;{}()=]*>)?\??`,Cp=String.raw`(?!(?:if|for|while|switch|catch|return|assert|super|this|Function)\b)`,Mp=String.raw`\((?:[^()]|\([^()]*\))*(?:\)\s*(?:async\s*\*?|sync\s*\*)?\s*(?:=>|\{|;)|$)`,RS=[{re:/^\s*(?:(?:abstract|base|final|sealed|interface|mixin)\s+)*class\s+(?[\w$]+)/,kind:"class",exported:sn},{re:/^\s*(?:base\s+)?mixin\s+(?[\w$]+)/,kind:"mixin",exported:sn},{re:/^\s*extension\s+(?:type\s+(?:const\s+)?)?(?!on\b)(?[\w$]+)/,kind:"extension",exported:sn},{re:/^\s*enum\s+(?[\w$]+)/,kind:"enum",exported:sn},{re:/^\s*typedef\s+(?[\w$]+)/,kind:"type",exported:sn},{re:new RegExp(String.raw`^\s*${ha}(?:(?:static|external)\s+)*(?:${ga}\s+)?get\s+(?[\w$]+)\s*(?:=>|\{|;|async\b|sync\b)`),kind:"getter",exported:sn},{re:new RegExp(String.raw`^\s*${ha}(?:(?:static|external)\s+)*(?:void\s+)?set\s+(?[\w$]+)\s*\(`),kind:"setter",exported:sn},{re:new RegExp(String.raw`^\s*${ha}(?:(?:static|external)\s+)*${ga}\s+${Cp}(?[\w$]+)\s*(?:<[^()]*>)?\s*${Mp}`),kind:"function",exported:sn},{re:new RegExp(String.raw`^${Cp}(?[\w$]+)\s*(?:<[^()]*>)?\s*${Mp}`),kind:"function",exported:sn},{re:new RegExp(String.raw`^(?:const|final)\s+(?:${ga}\s+)?(?[\w$]+)\s*[=;]`),kind:"const",exported:sn},{re:new RegExp(String.raw`^(?:late\s+final|late|var)\s+(?:${ga}\s+)?(?[\w$]+)\s*[=;]`),kind:"var",exported:sn}],CS=/^(?\s*)(?:(?:abstract|base|final|sealed|interface|mixin)\s+)*(?:class|enum|mixin|extension(?:\s+type(?:\s+const)?)?)\s+(?[\w$]+)/,MS=new RegExp(String.raw`^(?\s*)${ha}(?:(?:const|factory|external)\s+)*(?[\w$]+)(?:\.(?[\w$]+))?\s*\(`);Ap={lang:"dart",exts:[".dart"],lexis:{mask:e=>Ye(e,{nested:!0,triple:!0,squote:"string"}),comment:/^\s*\/\//,block:!0,decoration:/^\s*@/},extract(e,t,n=t){let r=xe(e,t,"dart",RS,n),o=AS(e,t,n,new Set(r.map(s=>s.line)));return o.length?[...r,...o].sort((s,a)=>s.line-a.line):r}}});function Qc(e,t,n){let r=Yc.get(t),o;if(!r)o=[];else try{let l=r.lexis,c=l?.mask?.(n);o=r.extract(e,n,c),l&&(o=Fm(o,n,l,c))}catch{o=[]}let s=new Set(o.map(l=>l.name)),a=la(e,n,o).filter(l=>!s.has(l.name));return a.length?[...o,...a]:o}function ed(e){return Yc.get(e)?.lang??rn(e)}var IS,Yc,Cr=H(()=>{"use strict";$();tt();Xm();Ym();tp();rp();ip();ap();cp();up();mp();hp();_p();wp();Sp();Ep();Rp();Ip();IS=[Km,Zm,ep,np,sp,op,lp,dp,fp,gp,yp,bp,xp,kp,vp,Ap],Yc=new Map;for(let e of IS)for(let t of e.exts)Yc.set(t,e)});function $p(e,t){let n=e.split("/").pop().toLowerCase();return TS.has(t)||$S.test(n)||FS.test(e)}function PS(e,t){let n=e.split("/").pop().toLowerCase();return OS.has(n)||NS.has(t)}function Tp(e){return!LS.has(ed(e))}function mt(e,t){return Tp(t)?"code":$p(e,t)?"doc":PS(e,t)?"config":"other"}var $S,TS,FS,OS,NS,td,LS,In=H(()=>{"use strict";$();Cr();$S=/^(readme|changelog|contributing|history|news|authors|notice|security|code_of_conduct|faq|getting[-_]?started|usage|guide|tutorial)\b/i,TS=new Set([".md",".mdx",".rst",".adoc",".txt"]),FS=/^(docs?|documentation|wiki|guides?|website|site|book)\//i,OS=new Set(["package.json","pnpm-workspace.yaml","tsconfig.json","jsconfig.json","pyproject.toml","setup.py","setup.cfg","requirements.txt","pipfile","go.mod","cargo.toml","gemfile","pom.xml","build.gradle","build.gradle.kts","composer.json","mix.exs","pubspec.yaml","build.sbt","dockerfile","docker-compose.yml","docker-compose.yaml","makefile",".env.example","manifest.json"]),NS=new Set([".json",".yaml",".yml",".toml",".ini",".cfg"]),td=new Set([".md",".mdx"]);LS=new Set(["markdown","restructuredtext","text","json","yaml","toml","ini","other","html","css","scss"])});function nd(e){let t="";for(let n=0;nt.some(r=>r.test(n))}function rd(e){if(!e||e.length===0)return null;let t=e.map(n=>n.split("/").map(r=>r.includes("**")?null:nd(r)));return n=>{let r=n.split("/");return t.some(o=>{for(let s=0;sn.endsWith("/**")&&n.length>3).map(n=>nd(n.slice(0,-3)));return t.length===0?null:n=>t.some(r=>r.test(n))}function Op(e){if(!e||e.length===0)return null;let t=It(e.filter(r=>!r.startsWith("!"))),n=It(e.filter(r=>r.startsWith("!")).map(r=>r.slice(1)));return r=>(!t||t(r))&&!n?.(r)}var _i=H(()=>{"use strict";$();et()});function DS(e){let t=e.split(/\r?\n/),n=[],r=null,o=!1,s=!1,a=!0;for(let l of t){if(r){r.test(l)&&(r=null),n.push("");continue}let c=/^\s*(`{3,}|~{3,})/.exec(l);if(c){r=new RegExp(`^\\s*${c[1][0]}{${c[1].length},}\\s*$`),s=!1,a=!1,n.push("");continue}let d=!l.trim(),u=/^(?: {4}|\t)/.test(l);if(s&&(d||u)){n.push("");continue}if(s=!1,u&&a&&!o){s=!0,n.push("");continue}d||(/^ {0,3}(?:[-*+]|\d+[.)])(?:\s|$)/.test(l)?o=!0:a&&!/^\s/.test(l)&&(o=!1)),a=d,n.push(l)}return n.join(` +`)}function jS(e){return!e||e.startsWith("#")||e.startsWith("//")?!0:/^[a-z][a-z0-9+.-]*:/i.test(e)}function Np(e){return e.replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/`([^`]*)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/[#>*_~-]+/g," ").replace(/\s+/g," ").trim()}function WS(e){return/[A-Za-zÀ-ɏ]{3,}/.test(e)}function BS(e){return/^(all notable changes to this project|in the interest of fostering|this project adheres to|we as members and leaders|table of contents)\b/i.test(e)}function zS(e){let t=e.trim();return!!t&&!/^ {4}|^\t/.test(e)&&!/^([-*+]|\d+[.)])(\s|$)/.test(t)&&!/^[>|<]/.test(t)}function GS(e,t){let n=1;for(let r=t;rt?e.slice(t,r):void 0}}}function sd(e){let t=e,n,r=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(t);if(r){let y=/(^|\n)title:\s*["']?(.+?)["']?\s*(\n|$)/i.exec(r[1]);y&&(n=y[2].trim()),t=t.slice(r[0].length)}let o=DS(t),s=o.split(/\r?\n/),a=[],l=n,c,d=!1,u=(y,b)=>{let S=Np(b);a.push(S),!l&&y===1&&(l=S),!c&&y>=2&&(d=!0)};for(let y=0;y");)y++;continue}if(!c&&!d&&R&&!/^([-*+]|\d+\.)\s/.test(R)&&!R.startsWith("|")&&!R.startsWith("<")){let I=Np(R);I.length>=8&&WS(I)&&!I.endsWith(":")&&!BS(I)&&(c=I.slice(0,200))}}let f=[],m=new Set,p=y=>{let b=y.trim();b=b.replace(/\s+["'(].*$/,"").trim(),b=b.replace(/^<|>$/g,""),!jS(b)&&(m.has(b)||(m.add(b),f.push({kind:"doc-link",spec:b})))},g=/!?\[[^\]]*\]\(/g,h;for(;h=g.exec(o);){let y=GS(o,g.lastIndex);y&&p(y)}let _=/^[^\S\r\n]*\[(?!\^)[^\]]+\]:\s+(\S+)/gm;for(;h=_.exec(o);)p(h[1]);return{title:l,summary:c,headings:a,refs:f}}var US,HS,id=H(()=>{"use strict";$();US=/^ {0,3}(=+|-+)\s*$/;HS=/^>\s*\[!(?:note|tip|important|warning|caution)\]\s*$/i});function qS(e,t){if(!ya.test(e))return!1;let n=e.trimEnd().length;return n>=[...t.trim()].length||n>=4}function Pp(e){return e.replace(/``([^`]+)``/g,"$1").replace(/:[\w:.+-]+:`([^`<]*?)\s*<[^`>]*>`/g,"$1").replace(/:doc:`([^`]*)`/g,(t,n)=>n.slice(n.lastIndexOf("/")+1)).replace(/:[\w:.+-]+:`!?~?([^`]*)`/g,(t,n)=>n.startsWith("~")?n.slice(n.lastIndexOf(".")+1):n).replace(/`([^`<]*?)\s*<[^`>]*>`__?/g,"$1").replace(/`([^`]+)`__?/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/\*([^*]+)\*/g,"$1").replace(/\|([^|\s][^|]*)\|/g,"$1").replace(/\s+/g," ").trim()}function od(e,t,n,r){let o=t.trim();if(!o||o==="self"||/[:*?[\]\s]/.test(o))return;if(!o.startsWith("/")){r({kind:"doc-link",spec:o+n});return}let s=e.split("/").length-1;for(let a=0;a<=s;a++)r({kind:"doc-link",spec:"../".repeat(a)+o.slice(1)+n,soft:!0})}function ld(e,t){let n=t.split(/\r?\n/),r=[],o,s,a=[],l=!1,c=[],d=new Set,u=y=>{let b=`${y.soft?"~":""}${y.spec}`;d.has(b)||(d.add(b),c.push(y))},f=(y,b)=>{let S=a.indexOf(y);S===-1&&(S=a.push(y)-1);let k=Pp(b);r.push(k),o||(o=k),S>0&&!s&&(l=!0)},m=y=>!(n[y]??"").trim();for(let y=0;y]+)>\s*$/.exec(C);od(e,M?M[1]:C,".rst",u)}else KS.has(R)||p(v)}y=P-1;continue}if(/^\s*\.\.(?:\s|$)/.test(b)){y=g(y);continue}p(b),!s&&!l&&h(y)&&(s=_(y)),/::\s*$/.test(b)&&(y=g(y))}return{title:o,summary:s,headings:r,refs:c};function p(y){for(let b of y.matchAll(JS))od(e,b[1]??b[2],".rst",u)}function g(y){let b=ad(n[y]);for(;y+1b);)y++;return y}function h(y){let b=n[y];return!!b.trim()&&!/^\s/.test(b)&&(y===0||m(y-1))}function _(y){if(/^(?:[-*+•]\s|#\.\s|\d+[.)]\s|\(?[a-z0-9]\)\s|[+=|]|:[^:\s][^:]*:(?:\s|$))/i.test(n[y]))return;let b=[];for(let R=y;R{"use strict";$();ya=/^([!-/:-@[-`{-~])\1+\s*$/;ad=e=>e.length-e.trimStart().length,VS=/^(\s*)\.\.\s+([\w:-]+)::\s*(.*)$/,JS=/:doc:`(?:[^`<]*<([^`>]+)>|([^`]+))`/g,KS=new Set(["code-block","code","sourcecode","literalinclude","doctest","testcode","testoutput","testsetup","testcleanup","ipython","math","raw","graphviz","productionlist","highlight","jinja"])});function ek(e){return e.lengthLp?!1:QS.test(e)}function tk(e){let t=e.trim();return!t||t.length>Lp||YS.has(t)?!1:Number.isFinite(Number(t))}function dd(e){let t=e,n=/^(?:[rRbBuUfF]{1,2}|@|\$)?(?:#*)?(['"`])/.exec(t);if(n){let r=n[1],o=t.indexOf(r),s=t.lastIndexOf(r),a=t.startsWith(r.repeat(3),o)&&s-o>=5&&t.endsWith(r.repeat(3),s+1)?3:1;s>o&&(t=t.slice(o+a,s+1-a))}return t}var Lp,XS,ZS,YS,QS,Zn,_a=H(()=>{"use strict";$();ce();Lp=80,XS=2,ZS=256,YS=new Set(["0","1","-1","2","-2"]),QS=/[\p{L}\p{N}]/u;Zn=class{seen=new Set;out=[];get full(){return this.out.length>=ZS}add(t,n,r){if(this.full||t==="string"&&!ek(n)||t==="number"&&!tk(n)||t==="regex"&&!n)return;let o=`${t}\0${n}\0${r}`;this.seen.has(o)||(this.seen.add(o),this.out.push({value:n,line:r,kind:t}))}addString(t,n){this.add("string",dd(t),n)}result(){if(this.out.length)return this.out.sort((t,n)=>T(t.value,n.value)||t.line-n.line||T(t.kind,n.kind))}}});function ba(){return"/home"}function Dp(){return"/tmp"}function wa(){return typeof navigator<"u"&&navigator?.hardwareConcurrency?navigator.hardwareConcurrency:1}function jp(){return Array.from({length:wa()},()=>({model:"browser",speed:0,times:{user:0,nice:0,sys:0,idle:0,irq:0}}))}var bi=H(()=>{$()});function xa(e){let t=typeof e=="string"?e:e.href;try{return decodeURIComponent(new URL(t).pathname)}catch{return t}}function Mr(e){return new URL(`file://${e.startsWith("/")?"":"/"}${e}`)}var wi=H(()=>{$()});var ud={};Rc(ud,{createRequire:()=>rk,default:()=>sk});var rk,sk,fd=H(()=>{$();rk=()=>{throw new Error("node-only API in the browser build")},sk={}});function _s(e){if(e!==Yn)throw new Error("Illegal constructor")}function Si(e){return!!e&&typeof e.row=="number"&&typeof e.column=="number"}function Vp(e){A=e}function bs(e){try{return new FinalizationRegistry(e)}catch(t){console.error("Unsupported FinalizationRegistry:",t);return}}function _d(e,t,n,r){let o=n-t,s=e.textCallback(t,r);if(s){for(t+=s.length;t0)t+=a.length,s+=a;else break}t>n&&(s=s.slice(0,o))}return s??""}function yd(e,t,n,r,o){for(let s=0,a=o.length;s>>0,column:A.getValue(e+ee,"i32")>>>0}}function Kp(e,t){jt(e,t.startPosition),e+=_n,jt(e,t.endPosition),e+=_n,A.setValue(e,t.startIndex,"i32"),e+=ee,A.setValue(e,t.endIndex,"i32"),e+=ee}function ka(e){let t={};return t.startPosition=Ar(e),e+=_n,t.endPosition=Ar(e),e+=_n,t.startIndex=A.getValue(e,"i32")>>>0,e+=ee,t.endIndex=A.getValue(e,"i32")>>>0,t}function Xp(e,t=Y){jt(t,e.startPosition),t+=_n,jt(t,e.oldEndPosition),t+=_n,jt(t,e.newEndPosition),t+=_n,A.setValue(t,e.startIndex,"i32"),t+=ee,A.setValue(t,e.oldEndIndex,"i32"),t+=ee,A.setValue(t,e.newEndIndex,"i32"),t+=ee}function Zp(e){let t=A.getValue(e,"i32"),n=A.getValue(e+=ee,"i32"),r=A.getValue(e+=ee,"i32");return{major_version:t,minor_version:n,patch_version:r}}async function Yp(moduleArg={}){var moduleRtn,Module=moduleArg,ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope<"u",ENVIRONMENT_IS_NODE=typeof F=="object"&&F.versions?.node&&F.type!="renderer";if(ENVIRONMENT_IS_NODE){let{createRequire:e}=await Promise.resolve().then(()=>(fd(),ud));var require=e(import.meta.url)}Module.currentQueryProgressCallback=null,Module.currentProgressCallback=null,Module.currentLogCallback=null,Module.currentParseCallback=null;var arguments_=[],thisProgram="./this.program",quit_=D((e,t)=>{throw t},"quit_"),_scriptName=import.meta.url,scriptDirectory="";function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}D(locateFile,"locateFile");var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");_scriptName.startsWith("file:")&&(scriptDirectory=require("path").dirname(require("url").fileURLToPath(_scriptName))+"/"),readBinary=D(e=>{e=isFileURI(e)?new URL(e):e;var t=fs.readFileSync(e);return t},"readBinary"),readAsync=D(async(e,t=!0)=>{e=isFileURI(e)?new URL(e):e;var n=fs.readFileSync(e,t?void 0:"utf8");return n},"readAsync"),F.argv.length>1&&(thisProgram=F.argv[1].replace(/\\/g,"/")),arguments_=F.argv.slice(2),quit_=D((e,t)=>{throw F.exitCode=e,t},"quit_")}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}ENVIRONMENT_IS_WORKER&&(readBinary=D(e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)},"readBinary")),readAsync=D(async e=>{if(isFileURI(e))return new Promise((n,r)=>{var o=new XMLHttpRequest;o.open("GET",e,!0),o.responseType="arraybuffer",o.onload=()=>{if(o.status==200||o.status==0&&o.response){n(o.response);return}r(o.status)},o.onerror=r,o.send(null)});var t=await fetch(e,{credentials:"same-origin"});if(t.ok)return t.arrayBuffer();throw new Error(t.status+" : "+t.url)},"readAsync")}var out=console.log.bind(console),err=console.error.bind(console),dynamicLibraries=[],wasmBinary,ABORT=!1,EXITSTATUS,isFileURI=D(e=>e.startsWith("file://"),"isFileURI"),readyPromiseResolve,readyPromiseReject,wasmMemory,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,HEAP64,HEAPU64,HEAP_DATA_VIEW,runtimeInitialized=!1;function updateMemoryViews(){var e=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e),Module.HEAP64=HEAP64=new BigInt64Array(e),Module.HEAPU64=HEAPU64=new BigUint64Array(e),Module.HEAP_DATA_VIEW=HEAP_DATA_VIEW=new DataView(e),LE_HEAP_UPDATE()}D(updateMemoryViews,"updateMemoryViews");function initMemory(){if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else{var e=Module.INITIAL_MEMORY||33554432;wasmMemory=new WebAssembly.Memory({initial:e/65536,maximum:32768})}updateMemoryViews()}D(initMemory,"initMemory");var __RELOC_FUNCS__=[];function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(onPreRuns)}D(preRun,"preRun");function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),wasmExports.__wasm_call_ctors(),callRuntimeCallbacks(onPostCtors)}D(initRuntime,"initRuntime");function preMain(){}D(preMain,"preMain");function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(onPostRuns)}D(postRun,"postRun");function abort(e){Module.onAbort?.(e),e="Aborted("+e+")",err(e),ABORT=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw readyPromiseReject?.(t),t}D(abort,"abort");var wasmBinaryFile;function findWasmBinary(){return Module.locateFile?locateFile("web-tree-sitter.wasm"):new URL("web-tree-sitter.wasm",import.meta.url).href}D(findWasmBinary,"findWasmBinary");function getBinarySync(e){if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}D(getBinarySync,"getBinarySync");async function getWasmBinary(e){if(!wasmBinary)try{var t=await readAsync(e);return new Uint8Array(t)}catch{}return getBinarySync(e)}D(getWasmBinary,"getWasmBinary");async function instantiateArrayBuffer(e,t){try{var n=await getWasmBinary(e),r=await WebAssembly.instantiate(n,t);return r}catch(o){err(`failed to asynchronously prepare wasm: ${o}`),abort(o)}}D(instantiateArrayBuffer,"instantiateArrayBuffer");async function instantiateAsync(e,t,n){if(!e&&!isFileURI(t)&&!ENVIRONMENT_IS_NODE)try{var r=fetch(t,{credentials:"same-origin"}),o=await WebAssembly.instantiateStreaming(r,n);return o}catch(s){err(`wasm streaming compile failed: ${s}`),err("falling back to ArrayBuffer instantiation")}return instantiateArrayBuffer(t,n)}D(instantiateAsync,"instantiateAsync");function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)}}D(getWasmImports,"getWasmImports");async function createWasm(){function e(s,a){wasmExports=s.exports,wasmExports=relocateExports(wasmExports,1024);var l=getDylinkMetadata(a);return l.neededDynlibs&&(dynamicLibraries=l.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),assignWasmExports(wasmExports),wasmExports}D(e,"receiveInstance");function t(s){return e(s.instance,s.module)}D(t,"receiveInstantiationResult");var n=getWasmImports();if(Module.instantiateWasm)return new Promise((s,a)=>{Module.instantiateWasm(n,(l,c)=>{s(e(l,c))})});wasmBinaryFile??=findWasmBinary();var r=await instantiateAsync(wasmBinary,wasmBinaryFile,n),o=t(r);return o}D(createWasm,"createWasm");class ExitStatus{static{D(this,"ExitStatus")}name="ExitStatus";constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(e,t){var n=GOT[t];return n||(n=GOT[t]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(t)||(n.required=!0),n}},LE_ATOMICS_NATIVE_BYTE_ORDER=[],LE_HEAP_LOAD_F32=D(e=>HEAP_DATA_VIEW.getFloat32(e,!0),"LE_HEAP_LOAD_F32"),LE_HEAP_LOAD_F64=D(e=>HEAP_DATA_VIEW.getFloat64(e,!0),"LE_HEAP_LOAD_F64"),LE_HEAP_LOAD_I16=D(e=>HEAP_DATA_VIEW.getInt16(e,!0),"LE_HEAP_LOAD_I16"),LE_HEAP_LOAD_I32=D(e=>HEAP_DATA_VIEW.getInt32(e,!0),"LE_HEAP_LOAD_I32"),LE_HEAP_LOAD_I64=D(e=>HEAP_DATA_VIEW.getBigInt64(e,!0),"LE_HEAP_LOAD_I64"),LE_HEAP_LOAD_U32=D(e=>HEAP_DATA_VIEW.getUint32(e,!0),"LE_HEAP_LOAD_U32"),LE_HEAP_STORE_F32=D((e,t)=>HEAP_DATA_VIEW.setFloat32(e,t,!0),"LE_HEAP_STORE_F32"),LE_HEAP_STORE_F64=D((e,t)=>HEAP_DATA_VIEW.setFloat64(e,t,!0),"LE_HEAP_STORE_F64"),LE_HEAP_STORE_I16=D((e,t)=>HEAP_DATA_VIEW.setInt16(e,t,!0),"LE_HEAP_STORE_I16"),LE_HEAP_STORE_I32=D((e,t)=>HEAP_DATA_VIEW.setInt32(e,t,!0),"LE_HEAP_STORE_I32"),LE_HEAP_STORE_I64=D((e,t)=>HEAP_DATA_VIEW.setBigInt64(e,t,!0),"LE_HEAP_STORE_I64"),LE_HEAP_STORE_U32=D((e,t)=>HEAP_DATA_VIEW.setUint32(e,t,!0),"LE_HEAP_STORE_U32"),callRuntimeCallbacks=D(e=>{for(;e.length>0;)e.shift()(Module)},"callRuntimeCallbacks"),onPostRuns=[],addOnPostRun=D(e=>onPostRuns.push(e),"addOnPostRun"),onPreRuns=[],addOnPreRun=D(e=>onPreRuns.push(e),"addOnPreRun"),UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder:void 0,findStringEnd=D((e,t,n,r)=>{var o=t+n;if(r)return o;for(;e[t]&&!(t>=o);)++t;return t},"findStringEnd"),UTF8ArrayToString=D((e,t=0,n,r)=>{var o=findStringEnd(e,t,n,r);if(o-t>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,o));for(var s="";t>10,56320|d&1023)}}return s},"UTF8ArrayToString"),getDylinkMetadata=D(e=>{var t=0,n=0;function r(){return e[t++]}D(r,"getU8");function o(){for(var w=0,E=1;;){var N=e[t++];if(w+=(N&127)*E,E*=128,!(N&128))break}return w}D(o,"getLEB");function s(){var w=o();return t+=w,UTF8ArrayToString(e,t-w,w)}D(s,"getString");function a(){for(var w=o(),E=[];w--;)E.push(s());return E}D(a,"getStringList");function l(w,E){if(w)throw new Error(E)}if(D(l,"failIf"),e instanceof WebAssembly.Module){var c=WebAssembly.Module.customSections(e,"dylink.0");l(c.length===0,"need dylink section"),e=new Uint8Array(c[0]),n=e.length}else{var d=new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer),u=d[0]==1836278016||d[0]==6386541;l(!u,"need to see wasm magic number"),l(e[8]!==0,"need the dylink section to be first"),t=9;var f=o();n=t+f;var m=s();l(m!=="dylink.0")}for(var p={neededDynlibs:[],tlsExports:new Set,weakImports:new Set,runtimePaths:[]},g=1,h=2,_=3,y=4,b=5,S=256,k=3,R=1;t>1)*2);case"i32":return LE_HEAP_LOAD_I32((e>>2)*4);case"i64":return LE_HEAP_LOAD_I64((e>>3)*8);case"float":return LE_HEAP_LOAD_F32((e>>2)*4);case"double":return LE_HEAP_LOAD_F64((e>>3)*8);case"*":return LE_HEAP_LOAD_U32((e>>2)*4);default:abort(`invalid type for getValue: ${t}`)}}D(getValue,"getValue");var newDSO=D((e,t,n)=>{var r={refcount:1/0,name:e,exports:n,global:!0};return LDSO.loadedLibsByName[e]=r,t!=null&&(LDSO.loadedLibsByHandle[t]=r),r},"newDSO"),LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=82240,alignMemory=D((e,t)=>Math.ceil(e/t)*t,"alignMemory"),getMemory=D(e=>{if(runtimeInitialized)return _calloc(e,1);var t=___heap_base,n=t+alignMemory(e,16);return ___heap_base=n,GOT.__heap_base.value=n,t},"getMemory"),isInternalSym=D(e=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(e)||e.startsWith("__em_js__"),"isInternalSym"),uleb128EncodeWithLen=D(e=>{let t=e.length;return[t%128|128,t>>7,...e]},"uleb128EncodeWithLen"),wasmTypeCodes={i:127,p:127,j:126,f:125,d:124,e:111},generateTypePack=D(e=>uleb128EncodeWithLen(Array.from(e,t=>{var n=wasmTypeCodes[t];return n})),"generateTypePack"),convertJsFunctionToWasm=D((e,t)=>{var n=Uint8Array.of(0,97,115,109,1,0,0,0,1,...uleb128EncodeWithLen([1,96,...generateTypePack(t.slice(1)),...generateTypePack(t[0]==="v"?"":t[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),r=new WebAssembly.Module(n),o=new WebAssembly.Instance(r,{e:{f:e}}),s=o.exports.f;return s},"convertJsFunctionToWasm"),wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:31,element:"anyfunc"}),getWasmTableEntry=D(e=>{var t=wasmTableMirror[e];return t||(wasmTableMirror[e]=t=wasmTable.get(e)),t},"getWasmTableEntry"),updateTableMap=D((e,t)=>{if(functionsInTableMap)for(var n=e;n(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(e)||0),"getFunctionAddress"),freeTableIndexes=[],getEmptyTableSlot=D(()=>freeTableIndexes.length?freeTableIndexes.pop():wasmTable.grow(1),"getEmptyTableSlot"),setWasmTableEntry=D((e,t)=>{wasmTable.set(e,t),wasmTableMirror[e]=wasmTable.get(e)},"setWasmTableEntry"),addFunction=D((e,t)=>{var n=getFunctionAddress(e);if(n)return n;var r=getEmptyTableSlot();try{setWasmTableEntry(r,e)}catch(s){if(!(s instanceof TypeError))throw s;var o=convertJsFunctionToWasm(e,t);setWasmTableEntry(r,o)}return functionsInTableMap.set(e,r),r},"addFunction"),updateGOT=D((e,t)=>{for(var n in e)if(!isInternalSym(n)){var r=e[n];GOT[n]||=new WebAssembly.Global({value:"i32",mutable:!0}),(t||GOT[n].value==0)&&(typeof r=="function"?GOT[n].value=addFunction(r):typeof r=="number"?GOT[n].value=r:err(`unhandled export type for '${n}': ${typeof r}`))}},"updateGOT"),relocateExports=D((e,t,n)=>{var r={};for(var o in e){var s=e[o];typeof s=="object"&&(s=s.value),typeof s=="number"&&(s+=t),r[o]=s}return updateGOT(r,n),r},"relocateExports"),isSymbolDefined=D(e=>{var t=wasmImports[e];return!(!t||t.stub)},"isSymbolDefined"),dynCall=D((e,t,n=[],r=!1)=>{var o=getWasmTableEntry(t),s=o(...n);function a(l){return l}return D(a,"convert"),s},"dynCall"),stackSave=D(()=>_emscripten_stack_get_current(),"stackSave"),stackRestore=D(e=>__emscripten_stack_restore(e),"stackRestore"),createInvokeFunction=D(e=>(t,...n)=>{var r=stackSave();try{return dynCall(e,t,n)}catch(o){if(stackRestore(r),o!==o+0)throw o;if(_setThrew(1,0),e[0]=="j")return 0n}},"createInvokeFunction"),resolveGlobalSymbol=D((e,t=!1)=>{var n;return isSymbolDefined(e)?n=wasmImports[e]:e.startsWith("invoke_")&&(n=wasmImports[e]=createInvokeFunction(e.split("_")[1])),{sym:n,name:e}},"resolveGlobalSymbol"),onPostCtors=[],addOnPostCtor=D(e=>onPostCtors.push(e),"addOnPostCtor"),UTF8ToString=D((e,t,n)=>e?UTF8ArrayToString(HEAPU8,e,t,n):"","UTF8ToString"),loadWebAssemblyModule=D((binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);function loadModule(){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,LE_HEAP_STORE_U32((handle+12>>2)*4,memoryBase),LE_HEAP_STORE_I32((handle+16>>2)*4,metadata.memorySize),LE_HEAP_STORE_U32((handle+20>>2)*4,tableBase),LE_HEAP_STORE_I32((handle+24>>2)*4,metadata.tableSize)),metadata.tableSize&&wasmTable.grow(metadata.tableSize);var moduleExports;function resolveSymbol(e){var t=resolveGlobalSymbol(e).sym;return!t&&localScope&&(t=localScope[e]),t||(t=moduleExports[e]),t}D(resolveSymbol,"resolveSymbol");var proxyHandler={get(e,t){switch(t){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(t in wasmImports&&!wasmImports[t].stub){var n=wasmImports[t];return n}if(!(t in e)){var r;e[t]=(...o)=>(r||=resolveSymbol(t),r(...o))}return e[t]}},proxy=new Proxy({},proxyHandler);currentModuleWeakSymbols=metadata.weakImports;var info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols();function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf("$"+arity)!=-1;arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(D(addEmAsm,"addEmAsm"),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start ${body};`;moduleExports[name]=eval(func)}D(addEmJs,"addEmJs");for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():addOnPostCtor(init)),moduleExports}if(D(postInstantiation,"postInstantiation"),flags.loadAsync)return(async()=>{var e;return binary instanceof WebAssembly.Module?e=new WebAssembly.Instance(binary,info):{module:binary,instance:e}=await WebAssembly.instantiate(binary,info),postInstantiation(binary,e)})();var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return D(loadModule,"loadModule"),flags={...flags,rpath:{parentLibPath:libName,paths:metadata.runtimePaths}},flags.loadAsync?metadata.neededDynlibs.reduce((e,t)=>e.then(()=>loadDynamicLibrary(t,flags,localScope)),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach(e=>loadDynamicLibrary(e,flags,localScope)),loadModule())},"loadWebAssemblyModule"),mergeLibSymbols=D((e,t)=>{for(var[n,r]of Object.entries(e)){let o=D(a=>{isSymbolDefined(a)||(wasmImports[a]=r)},"setImport");o(n);let s="__main_argc_argv";n=="main"&&o(s),n==s&&o("main")}},"mergeLibSymbols"),asyncLoad=D(async e=>{var t=await readAsync(e);return new Uint8Array(t)},"asyncLoad");function loadDynamicLibrary(e,t={global:!0,nodelete:!0},n,r){var o=LDSO.loadedLibsByName[e];if(o)return t.global?o.global||(o.global=!0,mergeLibSymbols(o.exports,e)):n&&Object.assign(n,o.exports),t.nodelete&&o.refcount!==1/0&&(o.refcount=1/0),o.refcount++,r&&(LDSO.loadedLibsByHandle[r]=o),t.loadAsync?Promise.resolve(!0):!0;o=newDSO(e,r,"loading"),o.refcount=t.nodelete?1/0:1,o.global=t.global;function s(){if(r){var c=LE_HEAP_LOAD_U32((r+28>>2)*4),d=LE_HEAP_LOAD_U32((r+32>>2)*4);if(c&&d){var u=HEAP8.slice(c,c+d);return t.loadAsync?Promise.resolve(u):u}}var f=locateFile(e);if(t.loadAsync)return asyncLoad(f);if(!readBinary)throw new Error(`${f}: file not found, and synchronous loading of external files is not available`);return readBinary(f)}D(s,"loadLibData");function a(){return t.loadAsync?s().then(c=>loadWebAssemblyModule(c,t,e,n,r)):loadWebAssemblyModule(s(),t,e,n,r)}D(a,"getExports");function l(c){o.global?mergeLibSymbols(c,e):n&&Object.assign(n,c),o.exports=c}return D(l,"moduleLoaded"),t.loadAsync?a().then(c=>(l(c),!0)):(l(a()),!0)}D(loadDynamicLibrary,"loadDynamicLibrary");var reportUndefinedSymbols=D(()=>{for(var[e,t]of Object.entries(GOT))if(t.value==0){var n=resolveGlobalSymbol(e,!0).sym;if(!n&&!t.required)continue;if(typeof n=="function")t.value=addFunction(n,n.sig);else if(typeof n=="number")t.value=n;else throw new Error(`bad export type for '${e}': ${typeof n}`)}},"reportUndefinedSymbols"),runDependencies=0,dependenciesFulfilled=null,removeRunDependency=D(e=>{if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),runDependencies==0&&dependenciesFulfilled){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}},"removeRunDependency"),addRunDependency=D(e=>{runDependencies++,Module.monitorRunDependencies?.(runDependencies)},"addRunDependency"),loadDylibs=D(async()=>{if(!dynamicLibraries.length){reportUndefinedSymbols();return}addRunDependency("loadDylibs");for(var e of dynamicLibraries)await loadDynamicLibrary(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0});reportUndefinedSymbols(),removeRunDependency("loadDylibs")},"loadDylibs"),noExitRuntime=!0;function setValue(e,t,n="i8"){switch(n.endsWith("*")&&(n="*"),n){case"i1":HEAP8[e]=t;break;case"i8":HEAP8[e]=t;break;case"i16":LE_HEAP_STORE_I16((e>>1)*2,t);break;case"i32":LE_HEAP_STORE_I32((e>>2)*4,t);break;case"i64":LE_HEAP_STORE_I64((e>>3)*8,BigInt(t));break;case"float":LE_HEAP_STORE_F32((e>>2)*4,t);break;case"double":LE_HEAP_STORE_F64((e>>3)*8,t);break;case"*":LE_HEAP_STORE_U32((e>>2)*4,t);break;default:abort(`invalid type for setValue: ${n}`)}}D(setValue,"setValue");var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_high=82240,___stack_low=16704,___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},82240),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),__abort_js=D(()=>abort(""),"__abort_js");__abort_js.sig="v";var getHeapMax=D(()=>2147483648,"getHeapMax"),growMemory=D(e=>{var t=wasmMemory.buffer.byteLength,n=(e-t+65535)/65536|0;try{return wasmMemory.grow(n),updateMemoryViews(),1}catch{}},"growMemory"),_emscripten_resize_heap=D(e=>{var t=HEAPU8.length;e>>>=0;var n=getHeapMax();if(e>n)return!1;for(var r=1;r<=4;r*=2){var o=t*(1+.2/r);o=Math.min(o,e+100663296);var s=Math.min(n,alignMemory(Math.max(e,o),65536)),a=growMemory(s);if(a)return!0}return!1},"_emscripten_resize_heap");_emscripten_resize_heap.sig="ip";var _fd_close=D(e=>52,"_fd_close");_fd_close.sig="ii";var INT53_MAX=9007199254740992,INT53_MIN=-9007199254740992,bigintToI53Checked=D(e=>eINT53_MAX?NaN:Number(e),"bigintToI53Checked");function _fd_seek(e,t,n,r){return t=bigintToI53Checked(t),70}D(_fd_seek,"_fd_seek"),_fd_seek.sig="iijip";var printCharBuffers=[null,[],[]],printChar=D((e,t)=>{var n=printCharBuffers[e];t===0||t===10?((e===1?out:err)(UTF8ArrayToString(n)),n.length=0):n.push(t)},"printChar"),_fd_write=D((e,t,n,r)=>{for(var o=0,s=0;s>2)*4),l=LE_HEAP_LOAD_U32((t+4>>2)*4);t+=8;for(var c=0;c>2)*4,o),0},"_fd_write");_fd_write.sig="iippp";function _tree_sitter_log_callback(e,t){if(Module.currentLogCallback){let n=UTF8ToString(t);Module.currentLogCallback(n,e!==0)}}D(_tree_sitter_log_callback,"_tree_sitter_log_callback");function _tree_sitter_parse_callback(e,t,n,r,o){let a=Module.currentParseCallback(t,{row:n,column:r});typeof a=="string"?(setValue(o,a.length,"i32"),stringToUTF16(a,e,10240)):setValue(o,0,"i32")}D(_tree_sitter_parse_callback,"_tree_sitter_parse_callback");function _tree_sitter_progress_callback(e,t){return Module.currentProgressCallback?Module.currentProgressCallback({currentOffset:e,hasError:t}):!1}D(_tree_sitter_progress_callback,"_tree_sitter_progress_callback");function _tree_sitter_query_progress_callback(e){return Module.currentQueryProgressCallback?Module.currentQueryProgressCallback({currentOffset:e}):!1}D(_tree_sitter_query_progress_callback,"_tree_sitter_query_progress_callback");var runtimeKeepaliveCounter=0,keepRuntimeAlive=D(()=>noExitRuntime||runtimeKeepaliveCounter>0,"keepRuntimeAlive"),_proc_exit=D(e=>{EXITSTATUS=e,keepRuntimeAlive()||(Module.onExit?.(e),ABORT=!0),quit_(e,new ExitStatus(e))},"_proc_exit");_proc_exit.sig="vi";var exitJS=D((e,t)=>{EXITSTATUS=e,_proc_exit(e)},"exitJS"),handleException=D(e=>{if(e instanceof ExitStatus||e=="unwind")return EXITSTATUS;quit_(1,e)},"handleException"),lengthBytesUTF8=D(e=>{for(var t=0,n=0;n=55296&&r<=57343?(t+=4,++n):t+=3}return t},"lengthBytesUTF8"),stringToUTF8Array=D((e,t,n,r)=>{if(!(r>0))return 0;for(var o=n,s=n+r-1,a=0;a=s)break;t[n++]=l}else if(l<=2047){if(n+1>=s)break;t[n++]=192|l>>6,t[n++]=128|l&63}else if(l<=65535){if(n+2>=s)break;t[n++]=224|l>>12,t[n++]=128|l>>6&63,t[n++]=128|l&63}else{if(n+3>=s)break;t[n++]=240|l>>18,t[n++]=128|l>>12&63,t[n++]=128|l>>6&63,t[n++]=128|l&63,a++}}return t[n]=0,n-o},"stringToUTF8Array"),stringToUTF8=D((e,t,n)=>stringToUTF8Array(e,HEAPU8,t,n),"stringToUTF8"),stackAlloc=D(e=>__emscripten_stack_alloc(e),"stackAlloc"),stringToUTF8OnStack=D(e=>{var t=lengthBytesUTF8(e)+1,n=stackAlloc(t);return stringToUTF8(e,n,t),n},"stringToUTF8OnStack"),AsciiToString=D(e=>{for(var t="";;){var n=HEAPU8[e++];if(!n)return t;t+=String.fromCharCode(n)}},"AsciiToString"),stringToUTF16=D((e,t,n)=>{if(n??=2147483647,n<2)return 0;n-=2;for(var r=t,o=n>1)*2,a),t+=2}return LE_HEAP_STORE_I16((t>>1)*2,0),t-r},"stringToUTF16");LE_ATOMICS_NATIVE_BYTE_ORDER=new Int8Array(new Int16Array([1]).buffer)[0]===1?[(e=>e),(e=>e),void 0,(e=>e)]:[(e=>e),(e=>((e&65280)<<8|(e&255)<<24)>>16),void 0,(e=>e>>24&255|e>>8&65280|(e&65280)<<8|(e&255)<<24)];function LE_HEAP_UPDATE(){HEAPU16.unsigned=(e=>e&65535),HEAPU32.unsigned=(e=>e>>>0)}if(D(LE_HEAP_UPDATE,"LE_HEAP_UPDATE"),initMemory(),Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),Module.print&&(out=Module.print),Module.printErr&&(err=Module.printErr),Module.dynamicLibraries&&(dynamicLibraries=Module.dynamicLibraries),Module.wasmBinary&&(wasmBinary=Module.wasmBinary),Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.shift()();Module.setValue=setValue,Module.getValue=getValue,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8,Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,Module.loadWebAssemblyModule=loadWebAssemblyModule,Module.LE_HEAP_STORE_I64=LE_HEAP_STORE_I64;var ASM_CONSTS={},_malloc,_calloc,_realloc,_free,_ts_range_edit,_memcmp,_ts_language_symbol_count,_ts_language_state_count,_ts_language_abi_version,_ts_language_name,_ts_language_field_count,_ts_language_next_state,_ts_language_symbol_name,_ts_language_symbol_for_name,_strncmp,_ts_language_symbol_type,_ts_language_field_name_for_id,_ts_lookahead_iterator_new,_ts_lookahead_iterator_delete,_ts_lookahead_iterator_reset_state,_ts_lookahead_iterator_reset,_ts_lookahead_iterator_next,_ts_lookahead_iterator_current_symbol,_ts_point_edit,_ts_parser_delete,_ts_parser_reset,_ts_parser_set_language,_ts_parser_set_included_ranges,_ts_query_new,_ts_query_delete,_iswspace,_iswalnum,_ts_query_copy,_ts_query_pattern_count,_ts_query_capture_count,_ts_query_string_count,_ts_query_capture_name_for_id,_ts_query_capture_quantifier_for_id,_ts_query_string_value_for_id,_ts_query_predicates_for_pattern,_ts_query_start_byte_for_pattern,_ts_query_end_byte_for_pattern,_ts_query_is_pattern_rooted,_ts_query_is_pattern_non_local,_ts_query_is_pattern_guaranteed_at_step,_ts_query_disable_capture,_ts_query_disable_pattern,_ts_tree_copy,_ts_tree_delete,_ts_init,_ts_parser_new_wasm,_ts_parser_enable_logger_wasm,_ts_parser_parse_wasm,_ts_parser_included_ranges_wasm,_ts_language_type_is_named_wasm,_ts_language_type_is_visible_wasm,_ts_language_metadata_wasm,_ts_language_supertypes_wasm,_ts_language_subtypes_wasm,_ts_tree_root_node_wasm,_ts_tree_root_node_with_offset_wasm,_ts_tree_edit_wasm,_ts_tree_included_ranges_wasm,_ts_tree_get_changed_ranges_wasm,_ts_tree_cursor_new_wasm,_ts_tree_cursor_copy_wasm,_ts_tree_cursor_delete_wasm,_ts_tree_cursor_reset_wasm,_ts_tree_cursor_reset_to_wasm,_ts_tree_cursor_goto_first_child_wasm,_ts_tree_cursor_goto_last_child_wasm,_ts_tree_cursor_goto_first_child_for_index_wasm,_ts_tree_cursor_goto_first_child_for_position_wasm,_ts_tree_cursor_goto_next_sibling_wasm,_ts_tree_cursor_goto_previous_sibling_wasm,_ts_tree_cursor_goto_descendant_wasm,_ts_tree_cursor_goto_parent_wasm,_ts_tree_cursor_current_node_type_id_wasm,_ts_tree_cursor_current_node_state_id_wasm,_ts_tree_cursor_current_node_is_named_wasm,_ts_tree_cursor_current_node_is_missing_wasm,_ts_tree_cursor_current_node_id_wasm,_ts_tree_cursor_start_position_wasm,_ts_tree_cursor_end_position_wasm,_ts_tree_cursor_start_index_wasm,_ts_tree_cursor_end_index_wasm,_ts_tree_cursor_current_field_id_wasm,_ts_tree_cursor_current_depth_wasm,_ts_tree_cursor_current_descendant_index_wasm,_ts_tree_cursor_current_node_wasm,_ts_node_symbol_wasm,_ts_node_field_name_for_child_wasm,_ts_node_field_name_for_named_child_wasm,_ts_node_children_by_field_id_wasm,_ts_node_first_child_for_byte_wasm,_ts_node_first_named_child_for_byte_wasm,_ts_node_grammar_symbol_wasm,_ts_node_child_count_wasm,_ts_node_named_child_count_wasm,_ts_node_child_wasm,_ts_node_named_child_wasm,_ts_node_child_by_field_id_wasm,_ts_node_next_sibling_wasm,_ts_node_prev_sibling_wasm,_ts_node_next_named_sibling_wasm,_ts_node_prev_named_sibling_wasm,_ts_node_descendant_count_wasm,_ts_node_parent_wasm,_ts_node_child_with_descendant_wasm,_ts_node_descendant_for_index_wasm,_ts_node_named_descendant_for_index_wasm,_ts_node_descendant_for_position_wasm,_ts_node_named_descendant_for_position_wasm,_ts_node_start_point_wasm,_ts_node_end_point_wasm,_ts_node_start_index_wasm,_ts_node_end_index_wasm,_ts_node_to_string_wasm,_ts_node_children_wasm,_ts_node_named_children_wasm,_ts_node_descendants_of_type_wasm,_ts_node_is_named_wasm,_ts_node_has_changes_wasm,_ts_node_has_error_wasm,_ts_node_is_error_wasm,_ts_node_is_missing_wasm,_ts_node_is_extra_wasm,_ts_node_parse_state_wasm,_ts_node_next_parse_state_wasm,_ts_query_matches_wasm,_ts_query_captures_wasm,_memset,_memcpy,_memmove,_iswalpha,_iswblank,_iswdigit,_iswlower,_iswpunct,_iswupper,_iswxdigit,_memchr,_strlen,_strcmp,_strncat,_strncpy,_towlower,_towupper,_setThrew,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,___wasm_apply_data_relocs;function assignWasmExports(e){Module._malloc=_malloc=e.malloc,Module._calloc=_calloc=e.calloc,Module._realloc=_realloc=e.realloc,Module._free=_free=e.free,Module._ts_range_edit=_ts_range_edit=e.ts_range_edit,Module._memcmp=_memcmp=e.memcmp,Module._ts_language_symbol_count=_ts_language_symbol_count=e.ts_language_symbol_count,Module._ts_language_state_count=_ts_language_state_count=e.ts_language_state_count,Module._ts_language_abi_version=_ts_language_abi_version=e.ts_language_abi_version,Module._ts_language_name=_ts_language_name=e.ts_language_name,Module._ts_language_field_count=_ts_language_field_count=e.ts_language_field_count,Module._ts_language_next_state=_ts_language_next_state=e.ts_language_next_state,Module._ts_language_symbol_name=_ts_language_symbol_name=e.ts_language_symbol_name,Module._ts_language_symbol_for_name=_ts_language_symbol_for_name=e.ts_language_symbol_for_name,Module._strncmp=_strncmp=e.strncmp,Module._ts_language_symbol_type=_ts_language_symbol_type=e.ts_language_symbol_type,Module._ts_language_field_name_for_id=_ts_language_field_name_for_id=e.ts_language_field_name_for_id,Module._ts_lookahead_iterator_new=_ts_lookahead_iterator_new=e.ts_lookahead_iterator_new,Module._ts_lookahead_iterator_delete=_ts_lookahead_iterator_delete=e.ts_lookahead_iterator_delete,Module._ts_lookahead_iterator_reset_state=_ts_lookahead_iterator_reset_state=e.ts_lookahead_iterator_reset_state,Module._ts_lookahead_iterator_reset=_ts_lookahead_iterator_reset=e.ts_lookahead_iterator_reset,Module._ts_lookahead_iterator_next=_ts_lookahead_iterator_next=e.ts_lookahead_iterator_next,Module._ts_lookahead_iterator_current_symbol=_ts_lookahead_iterator_current_symbol=e.ts_lookahead_iterator_current_symbol,Module._ts_point_edit=_ts_point_edit=e.ts_point_edit,Module._ts_parser_delete=_ts_parser_delete=e.ts_parser_delete,Module._ts_parser_reset=_ts_parser_reset=e.ts_parser_reset,Module._ts_parser_set_language=_ts_parser_set_language=e.ts_parser_set_language,Module._ts_parser_set_included_ranges=_ts_parser_set_included_ranges=e.ts_parser_set_included_ranges,Module._ts_query_new=_ts_query_new=e.ts_query_new,Module._ts_query_delete=_ts_query_delete=e.ts_query_delete,Module._iswspace=_iswspace=e.iswspace,Module._iswalnum=_iswalnum=e.iswalnum,Module._ts_query_copy=_ts_query_copy=e.ts_query_copy,Module._ts_query_pattern_count=_ts_query_pattern_count=e.ts_query_pattern_count,Module._ts_query_capture_count=_ts_query_capture_count=e.ts_query_capture_count,Module._ts_query_string_count=_ts_query_string_count=e.ts_query_string_count,Module._ts_query_capture_name_for_id=_ts_query_capture_name_for_id=e.ts_query_capture_name_for_id,Module._ts_query_capture_quantifier_for_id=_ts_query_capture_quantifier_for_id=e.ts_query_capture_quantifier_for_id,Module._ts_query_string_value_for_id=_ts_query_string_value_for_id=e.ts_query_string_value_for_id,Module._ts_query_predicates_for_pattern=_ts_query_predicates_for_pattern=e.ts_query_predicates_for_pattern,Module._ts_query_start_byte_for_pattern=_ts_query_start_byte_for_pattern=e.ts_query_start_byte_for_pattern,Module._ts_query_end_byte_for_pattern=_ts_query_end_byte_for_pattern=e.ts_query_end_byte_for_pattern,Module._ts_query_is_pattern_rooted=_ts_query_is_pattern_rooted=e.ts_query_is_pattern_rooted,Module._ts_query_is_pattern_non_local=_ts_query_is_pattern_non_local=e.ts_query_is_pattern_non_local,Module._ts_query_is_pattern_guaranteed_at_step=_ts_query_is_pattern_guaranteed_at_step=e.ts_query_is_pattern_guaranteed_at_step,Module._ts_query_disable_capture=_ts_query_disable_capture=e.ts_query_disable_capture,Module._ts_query_disable_pattern=_ts_query_disable_pattern=e.ts_query_disable_pattern,Module._ts_tree_copy=_ts_tree_copy=e.ts_tree_copy,Module._ts_tree_delete=_ts_tree_delete=e.ts_tree_delete,Module._ts_init=_ts_init=e.ts_init,Module._ts_parser_new_wasm=_ts_parser_new_wasm=e.ts_parser_new_wasm,Module._ts_parser_enable_logger_wasm=_ts_parser_enable_logger_wasm=e.ts_parser_enable_logger_wasm,Module._ts_parser_parse_wasm=_ts_parser_parse_wasm=e.ts_parser_parse_wasm,Module._ts_parser_included_ranges_wasm=_ts_parser_included_ranges_wasm=e.ts_parser_included_ranges_wasm,Module._ts_language_type_is_named_wasm=_ts_language_type_is_named_wasm=e.ts_language_type_is_named_wasm,Module._ts_language_type_is_visible_wasm=_ts_language_type_is_visible_wasm=e.ts_language_type_is_visible_wasm,Module._ts_language_metadata_wasm=_ts_language_metadata_wasm=e.ts_language_metadata_wasm,Module._ts_language_supertypes_wasm=_ts_language_supertypes_wasm=e.ts_language_supertypes_wasm,Module._ts_language_subtypes_wasm=_ts_language_subtypes_wasm=e.ts_language_subtypes_wasm,Module._ts_tree_root_node_wasm=_ts_tree_root_node_wasm=e.ts_tree_root_node_wasm,Module._ts_tree_root_node_with_offset_wasm=_ts_tree_root_node_with_offset_wasm=e.ts_tree_root_node_with_offset_wasm,Module._ts_tree_edit_wasm=_ts_tree_edit_wasm=e.ts_tree_edit_wasm,Module._ts_tree_included_ranges_wasm=_ts_tree_included_ranges_wasm=e.ts_tree_included_ranges_wasm,Module._ts_tree_get_changed_ranges_wasm=_ts_tree_get_changed_ranges_wasm=e.ts_tree_get_changed_ranges_wasm,Module._ts_tree_cursor_new_wasm=_ts_tree_cursor_new_wasm=e.ts_tree_cursor_new_wasm,Module._ts_tree_cursor_copy_wasm=_ts_tree_cursor_copy_wasm=e.ts_tree_cursor_copy_wasm,Module._ts_tree_cursor_delete_wasm=_ts_tree_cursor_delete_wasm=e.ts_tree_cursor_delete_wasm,Module._ts_tree_cursor_reset_wasm=_ts_tree_cursor_reset_wasm=e.ts_tree_cursor_reset_wasm,Module._ts_tree_cursor_reset_to_wasm=_ts_tree_cursor_reset_to_wasm=e.ts_tree_cursor_reset_to_wasm,Module._ts_tree_cursor_goto_first_child_wasm=_ts_tree_cursor_goto_first_child_wasm=e.ts_tree_cursor_goto_first_child_wasm,Module._ts_tree_cursor_goto_last_child_wasm=_ts_tree_cursor_goto_last_child_wasm=e.ts_tree_cursor_goto_last_child_wasm,Module._ts_tree_cursor_goto_first_child_for_index_wasm=_ts_tree_cursor_goto_first_child_for_index_wasm=e.ts_tree_cursor_goto_first_child_for_index_wasm,Module._ts_tree_cursor_goto_first_child_for_position_wasm=_ts_tree_cursor_goto_first_child_for_position_wasm=e.ts_tree_cursor_goto_first_child_for_position_wasm,Module._ts_tree_cursor_goto_next_sibling_wasm=_ts_tree_cursor_goto_next_sibling_wasm=e.ts_tree_cursor_goto_next_sibling_wasm,Module._ts_tree_cursor_goto_previous_sibling_wasm=_ts_tree_cursor_goto_previous_sibling_wasm=e.ts_tree_cursor_goto_previous_sibling_wasm,Module._ts_tree_cursor_goto_descendant_wasm=_ts_tree_cursor_goto_descendant_wasm=e.ts_tree_cursor_goto_descendant_wasm,Module._ts_tree_cursor_goto_parent_wasm=_ts_tree_cursor_goto_parent_wasm=e.ts_tree_cursor_goto_parent_wasm,Module._ts_tree_cursor_current_node_type_id_wasm=_ts_tree_cursor_current_node_type_id_wasm=e.ts_tree_cursor_current_node_type_id_wasm,Module._ts_tree_cursor_current_node_state_id_wasm=_ts_tree_cursor_current_node_state_id_wasm=e.ts_tree_cursor_current_node_state_id_wasm,Module._ts_tree_cursor_current_node_is_named_wasm=_ts_tree_cursor_current_node_is_named_wasm=e.ts_tree_cursor_current_node_is_named_wasm,Module._ts_tree_cursor_current_node_is_missing_wasm=_ts_tree_cursor_current_node_is_missing_wasm=e.ts_tree_cursor_current_node_is_missing_wasm,Module._ts_tree_cursor_current_node_id_wasm=_ts_tree_cursor_current_node_id_wasm=e.ts_tree_cursor_current_node_id_wasm,Module._ts_tree_cursor_start_position_wasm=_ts_tree_cursor_start_position_wasm=e.ts_tree_cursor_start_position_wasm,Module._ts_tree_cursor_end_position_wasm=_ts_tree_cursor_end_position_wasm=e.ts_tree_cursor_end_position_wasm,Module._ts_tree_cursor_start_index_wasm=_ts_tree_cursor_start_index_wasm=e.ts_tree_cursor_start_index_wasm,Module._ts_tree_cursor_end_index_wasm=_ts_tree_cursor_end_index_wasm=e.ts_tree_cursor_end_index_wasm,Module._ts_tree_cursor_current_field_id_wasm=_ts_tree_cursor_current_field_id_wasm=e.ts_tree_cursor_current_field_id_wasm,Module._ts_tree_cursor_current_depth_wasm=_ts_tree_cursor_current_depth_wasm=e.ts_tree_cursor_current_depth_wasm,Module._ts_tree_cursor_current_descendant_index_wasm=_ts_tree_cursor_current_descendant_index_wasm=e.ts_tree_cursor_current_descendant_index_wasm,Module._ts_tree_cursor_current_node_wasm=_ts_tree_cursor_current_node_wasm=e.ts_tree_cursor_current_node_wasm,Module._ts_node_symbol_wasm=_ts_node_symbol_wasm=e.ts_node_symbol_wasm,Module._ts_node_field_name_for_child_wasm=_ts_node_field_name_for_child_wasm=e.ts_node_field_name_for_child_wasm,Module._ts_node_field_name_for_named_child_wasm=_ts_node_field_name_for_named_child_wasm=e.ts_node_field_name_for_named_child_wasm,Module._ts_node_children_by_field_id_wasm=_ts_node_children_by_field_id_wasm=e.ts_node_children_by_field_id_wasm,Module._ts_node_first_child_for_byte_wasm=_ts_node_first_child_for_byte_wasm=e.ts_node_first_child_for_byte_wasm,Module._ts_node_first_named_child_for_byte_wasm=_ts_node_first_named_child_for_byte_wasm=e.ts_node_first_named_child_for_byte_wasm,Module._ts_node_grammar_symbol_wasm=_ts_node_grammar_symbol_wasm=e.ts_node_grammar_symbol_wasm,Module._ts_node_child_count_wasm=_ts_node_child_count_wasm=e.ts_node_child_count_wasm,Module._ts_node_named_child_count_wasm=_ts_node_named_child_count_wasm=e.ts_node_named_child_count_wasm,Module._ts_node_child_wasm=_ts_node_child_wasm=e.ts_node_child_wasm,Module._ts_node_named_child_wasm=_ts_node_named_child_wasm=e.ts_node_named_child_wasm,Module._ts_node_child_by_field_id_wasm=_ts_node_child_by_field_id_wasm=e.ts_node_child_by_field_id_wasm,Module._ts_node_next_sibling_wasm=_ts_node_next_sibling_wasm=e.ts_node_next_sibling_wasm,Module._ts_node_prev_sibling_wasm=_ts_node_prev_sibling_wasm=e.ts_node_prev_sibling_wasm,Module._ts_node_next_named_sibling_wasm=_ts_node_next_named_sibling_wasm=e.ts_node_next_named_sibling_wasm,Module._ts_node_prev_named_sibling_wasm=_ts_node_prev_named_sibling_wasm=e.ts_node_prev_named_sibling_wasm,Module._ts_node_descendant_count_wasm=_ts_node_descendant_count_wasm=e.ts_node_descendant_count_wasm,Module._ts_node_parent_wasm=_ts_node_parent_wasm=e.ts_node_parent_wasm,Module._ts_node_child_with_descendant_wasm=_ts_node_child_with_descendant_wasm=e.ts_node_child_with_descendant_wasm,Module._ts_node_descendant_for_index_wasm=_ts_node_descendant_for_index_wasm=e.ts_node_descendant_for_index_wasm,Module._ts_node_named_descendant_for_index_wasm=_ts_node_named_descendant_for_index_wasm=e.ts_node_named_descendant_for_index_wasm,Module._ts_node_descendant_for_position_wasm=_ts_node_descendant_for_position_wasm=e.ts_node_descendant_for_position_wasm,Module._ts_node_named_descendant_for_position_wasm=_ts_node_named_descendant_for_position_wasm=e.ts_node_named_descendant_for_position_wasm,Module._ts_node_start_point_wasm=_ts_node_start_point_wasm=e.ts_node_start_point_wasm,Module._ts_node_end_point_wasm=_ts_node_end_point_wasm=e.ts_node_end_point_wasm,Module._ts_node_start_index_wasm=_ts_node_start_index_wasm=e.ts_node_start_index_wasm,Module._ts_node_end_index_wasm=_ts_node_end_index_wasm=e.ts_node_end_index_wasm,Module._ts_node_to_string_wasm=_ts_node_to_string_wasm=e.ts_node_to_string_wasm,Module._ts_node_children_wasm=_ts_node_children_wasm=e.ts_node_children_wasm,Module._ts_node_named_children_wasm=_ts_node_named_children_wasm=e.ts_node_named_children_wasm,Module._ts_node_descendants_of_type_wasm=_ts_node_descendants_of_type_wasm=e.ts_node_descendants_of_type_wasm,Module._ts_node_is_named_wasm=_ts_node_is_named_wasm=e.ts_node_is_named_wasm,Module._ts_node_has_changes_wasm=_ts_node_has_changes_wasm=e.ts_node_has_changes_wasm,Module._ts_node_has_error_wasm=_ts_node_has_error_wasm=e.ts_node_has_error_wasm,Module._ts_node_is_error_wasm=_ts_node_is_error_wasm=e.ts_node_is_error_wasm,Module._ts_node_is_missing_wasm=_ts_node_is_missing_wasm=e.ts_node_is_missing_wasm,Module._ts_node_is_extra_wasm=_ts_node_is_extra_wasm=e.ts_node_is_extra_wasm,Module._ts_node_parse_state_wasm=_ts_node_parse_state_wasm=e.ts_node_parse_state_wasm,Module._ts_node_next_parse_state_wasm=_ts_node_next_parse_state_wasm=e.ts_node_next_parse_state_wasm,Module._ts_query_matches_wasm=_ts_query_matches_wasm=e.ts_query_matches_wasm,Module._ts_query_captures_wasm=_ts_query_captures_wasm=e.ts_query_captures_wasm,Module._memset=_memset=e.memset,Module._memcpy=_memcpy=e.memcpy,Module._memmove=_memmove=e.memmove,Module._iswalpha=_iswalpha=e.iswalpha,Module._iswblank=_iswblank=e.iswblank,Module._iswdigit=_iswdigit=e.iswdigit,Module._iswlower=_iswlower=e.iswlower,Module._iswpunct=_iswpunct=e.iswpunct,Module._iswupper=_iswupper=e.iswupper,Module._iswxdigit=_iswxdigit=e.iswxdigit,Module._memchr=_memchr=e.memchr,Module._strlen=_strlen=e.strlen,Module._strcmp=_strcmp=e.strcmp,Module._strncat=_strncat=e.strncat,Module._strncpy=_strncpy=e.strncpy,Module._towlower=_towlower=e.towlower,Module._towupper=_towupper=e.towupper,_setThrew=e.setThrew,__emscripten_stack_restore=e._emscripten_stack_restore,__emscripten_stack_alloc=e._emscripten_stack_alloc,_emscripten_stack_get_current=e.emscripten_stack_get_current,___wasm_apply_data_relocs=e.__wasm_apply_data_relocs}D(assignWasmExports,"assignWasmExports");var wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_high:___stack_high,__stack_low:___stack_low,__stack_pointer:___stack_pointer,__table_base:___table_base,_abort_js:__abort_js,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback,tree_sitter_progress_callback:_tree_sitter_progress_callback,tree_sitter_query_progress_callback:_tree_sitter_query_progress_callback};function callMain(e=[]){var t=resolveGlobalSymbol("main").sym;if(t){e.unshift(thisProgram);var n=e.length,r=stackAlloc((n+1)*4),o=r;e.forEach(a=>{LE_HEAP_STORE_U32((o>>2)*4,stringToUTF8OnStack(a)),o+=4}),LE_HEAP_STORE_U32((o>>2)*4,0);try{var s=t(n,r);return exitJS(s,!0),s}catch(a){return handleException(a)}}}D(callMain,"callMain");function run(e=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}if(preRun(),runDependencies>0){dependenciesFulfilled=run;return}function t(){if(Module.calledRun=!0,!ABORT){initRuntime(),readyPromiseResolve?.(Module),Module.onRuntimeInitialized?.();var n=Module.noInitialRun||!1;n||callMain(e),postRun()}}D(t,"doRun"),Module.setStatus?(Module.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>Module.setStatus(""),1),t()},1)):t()}D(run,"run");var wasmExports;return wasmExports=await createWasm(),run(),runtimeInitialized?moduleRtn=Module:moduleRtn=new Promise((e,t)=>{readyPromiseResolve=e,readyPromiseReject=t}),moduleRtn}async function eg(e){return Qp??=await uk(e)}function tg(){return!!Qp}function rg(e,t,n,r){if(e.length!==3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 2, got ${e.length-1}`);if(!Gp(e[1]))throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}"`);let o=n==="eq?"||n==="any-eq?",s=!n.startsWith("any-");if(Gp(e[2])){let a=e[1].name,l=e[2].name;r[t].push(c=>{let d=[],u=[];for(let m of c)m.name===a&&d.push(m.node),m.name===l&&u.push(m.node);let f=D((m,p,g)=>g?m.text===p.text:m.text!==p.text,"compare");return s?d.every(m=>u.some(p=>f(m,p,o))):d.some(m=>u.some(p=>f(m,p,o)))})}else{let a=e[1].name,l=e[2].value,c=D(u=>u.text===l,"matches"),d=D(u=>u.text!==l,"doesNotMatch");r[t].push(u=>{let f=[];for(let p of u)p.name===a&&f.push(p.node);let m=o?c:d;return s?f.every(m):f.some(m)})}}function sg(e,t,n,r){if(e.length!==3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 2, got ${e.length-1}.`);if(e[1].type!=="capture")throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}".`);if(e[2].type!=="string")throw new Error(`Second argument of \`#${n}\` predicate must be a string. Got @${e[2].name}.`);let o=n==="match?"||n==="any-match?",s=!n.startsWith("any-"),a=e[1].name,l=new RegExp(e[2].value);r[t].push(c=>{let d=[];for(let f of c)f.name===a&&d.push(f.node.text);let u=D((f,m)=>m?l.test(f):!l.test(f),"test");return d.length===0?!o:s?d.every(f=>u(f,o)):d.some(f=>u(f,o))})}function ig(e,t,n,r){if(e.length<2)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected at least 1. Got ${e.length-1}.`);if(e[1].type!=="capture")throw new Error(`First argument of \`#${n}\` predicate must be a capture. Got "${e[1].value}".`);let o=n==="any-of?",s=e[1].name,a=e.slice(2);if(!a.every(xd))throw new Error(`Arguments to \`#${n}\` predicate must be strings.".`);let l=a.map(c=>c.value);r[t].push(c=>{let d=[];for(let u of c)u.name===s&&d.push(u.node.text);return d.length===0?!o:d.every(u=>l.includes(u))===o})}function og(e,t,n,r,o){if(e.length<2||e.length>3)throw new Error(`Wrong number of arguments to \`#${n}\` predicate. Expected 1 or 2. Got ${e.length-1}.`);if(!e.every(xd))throw new Error(`Arguments to \`#${n}\` predicate must be strings.".`);let s=n==="is?"?r:o;s[t]||(s[t]={}),s[t][e[1].value]=e[2]?.value??null}function ag(e,t,n){if(e.length<2||e.length>3)throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${e.length-1}.`);if(!e.every(xd))throw new Error('Arguments to `#set!` predicate must be strings.".');n[t]||(n[t]={}),n[t][e[1].value]=e[2]?.value??null}function lg(e,t,n,r,o,s,a,l,c,d,u){if(t===fk){let f=r[n];s.push({type:"capture",name:f})}else if(t===mk)s.push({type:"string",value:o[n]});else if(s.length>0){if(s[0].type!=="string")throw new Error("Predicates must begin with a literal value");let f=s[0].value;switch(f){case"any-not-eq?":case"not-eq?":case"any-eq?":case"eq?":rg(s,e,f,a);break;case"any-not-match?":case"not-match?":case"any-match?":case"match?":sg(s,e,f,a);break;case"not-any-of?":case"any-of?":ig(s,e,f,a);break;case"is?":case"is-not?":og(s,e,f,d,u);break;case"set!":ag(s,e,c);break;default:l[e].push({operator:f,operands:s.slice(1)})}s.length=0}}var ik,D,xF,Wp,ee,md,Et,_n,ki,kt,Yn,A,Bp,ok,Up,ak,zp,lk,ck,dk,bd,uk,Qp,Y,pd,gd,Hp,wd,fk,mk,pk,SF,Gp,xd,on,xi,qp,cg,Sd=H(()=>{$();ik=Object.defineProperty,D=(e,t)=>ik(e,"name",{value:t,configurable:!0}),xF=class{static{D(this,"Edit")}startPosition;oldEndPosition;newEndPosition;startIndex;oldEndIndex;newEndIndex;constructor({startIndex:e,oldEndIndex:t,newEndIndex:n,startPosition:r,oldEndPosition:o,newEndPosition:s}){this.startIndex=e>>>0,this.oldEndIndex=t>>>0,this.newEndIndex=n>>>0,this.startPosition=r,this.oldEndPosition=o,this.newEndPosition=s}editPoint(e,t){let n=t,r={...e};if(t>=this.oldEndIndex){n=this.newEndIndex+(t-this.oldEndIndex);let o=e.row;r.row=this.newEndPosition.row+(e.row-this.oldEndPosition.row),r.column=o===this.oldEndPosition.row?this.newEndPosition.column+(e.column-this.oldEndPosition.column):e.column}else t>this.startIndex&&(n=this.newEndIndex,r.row=this.newEndPosition.row,r.column=this.newEndPosition.column);return{point:r,index:n}}editRange(e){let t={startIndex:e.startIndex,startPosition:{...e.startPosition},endIndex:e.endIndex,endPosition:{...e.endPosition}};return e.endIndex>=this.oldEndIndex?e.endIndex!==Number.MAX_SAFE_INTEGER&&(t.endIndex=this.newEndIndex+(e.endIndex-this.oldEndIndex),t.endPosition={row:this.newEndPosition.row+(e.endPosition.row-this.oldEndPosition.row),column:e.endPosition.row===this.oldEndPosition.row?this.newEndPosition.column+(e.endPosition.column-this.oldEndPosition.column):e.endPosition.column},t.endIndexthis.startIndex&&(t.endIndex=this.startIndex,t.endPosition={...this.startPosition}),e.startIndex>=this.oldEndIndex?(t.startIndex=this.newEndIndex+(e.startIndex-this.oldEndIndex),t.startPosition={row:this.newEndPosition.row+(e.startPosition.row-this.oldEndPosition.row),column:e.startPosition.row===this.oldEndPosition.row?this.newEndPosition.column+(e.startPosition.column-this.oldEndPosition.column):e.startPosition.column},t.startIndexthis.startIndex&&(t.startIndex=this.startIndex,t.startPosition={...this.startPosition}),t}},Wp=2,ee=4,md=4*ee,Et=5*ee,_n=2*ee,ki=2*ee+2*_n,kt={row:0,column:0},Yn=Symbol("INTERNAL");D(_s,"assertInternal");D(Si,"isPoint");D(Vp,"setModule");D(bs,"newFinalizer");Bp=bs(e=>{A._ts_lookahead_iterator_delete(e)}),ok=class{static{D(this,"LookaheadIterator")}0=0;language;positioned=!1;constructor(e,t,n){_s(e),this[0]=t,this.language=n,Bp?.register(this,t,this)}get currentTypeId(){return this.positioned?A._ts_lookahead_iterator_current_symbol(this[0]):null}get currentType(){let e=this.currentTypeId;return e===null?null:this.language.types[e]??A.UTF8ToString(A._ts_language_symbol_name(this.language[0],e))}delete(){Bp?.unregister(this),A._ts_lookahead_iterator_delete(this[0]),this[0]=0}reset(e,t){return A._ts_lookahead_iterator_reset(this[0],e[0],t)?(this.language=e,this.positioned=!1,!0):!1}resetState(e){return A._ts_lookahead_iterator_reset_state(this[0],e)?(this.positioned=!1,!0):!1}[Symbol.iterator](){return{next:D(()=>{this.positioned=!!A._ts_lookahead_iterator_next(this[0]);let e=this.currentType;return e===null?{done:!0,value:""}:{done:!1,value:e}},"next")}}};D(_d,"getText");Up=bs(e=>{A._ts_tree_delete(e)}),ak=class hd{static{D(this,"Tree")}0=0;textCallback;language;constructor(t,n,r,o){_s(t),this[0]=n,this.language=r,this.textCallback=o,Up?.register(this,n,this)}copy(){let t=A._ts_tree_copy(this[0]);return new hd(Yn,t,this.language,this.textCallback)}delete(){Up?.unregister(this),A._ts_tree_delete(this[0]),this[0]=0}get rootNode(){return A._ts_tree_root_node_wasm(this[0]),Be(this)}rootNodeWithOffset(t,n){let r=Y+Et;return A.setValue(r,t,"i32"),jt(r+ee,n),A._ts_tree_root_node_with_offset_wasm(this[0]),Be(this)}edit(t){Xp(t),A._ts_tree_edit_wasm(this[0])}walk(){return this.rootNode.walk()}getChangedRanges(t){if(!(t instanceof hd))throw new TypeError("Argument must be a Tree");A._ts_tree_get_changed_ranges_wasm(this[0],t[0]);let n=A.getValue(Y,"i32"),r=A.getValue(Y+ee,"i32"),o=new Array(n);if(n>0){let s=r;for(let a=0;a0){let o=n;for(let s=0;s{A._ts_tree_cursor_delete_wasm(e)}),lk=class Jp{static{D(this,"TreeCursor")}0=0;1=0;2=0;3=0;tree;constructor(t,n){_s(t),this.tree=n,$t(this),zp?.register(this,this.tree[0],this)}copy(){let t=new Jp(Yn,this.tree);return A._ts_tree_cursor_copy_wasm(this.tree[0]),$t(t),t}delete(){zp?.unregister(this),Te(this),A._ts_tree_cursor_delete_wasm(this.tree[0]),this[0]=this[1]=this[2]=0}get currentNode(){return Te(this),A._ts_tree_cursor_current_node_wasm(this.tree[0]),Be(this.tree)}get currentFieldId(){return Te(this),A._ts_tree_cursor_current_field_id_wasm(this.tree[0])}get currentFieldName(){return this.tree.language.fields[this.currentFieldId]}get currentDepth(){return Te(this),A._ts_tree_cursor_current_depth_wasm(this.tree[0])}get currentDescendantIndex(){return Te(this),A._ts_tree_cursor_current_descendant_index_wasm(this.tree[0])}get nodeType(){return this.tree.language.types[this.nodeTypeId]||"ERROR"}get nodeTypeId(){return Te(this),A._ts_tree_cursor_current_node_type_id_wasm(this.tree[0])}get nodeStateId(){return Te(this),A._ts_tree_cursor_current_node_state_id_wasm(this.tree[0])}get nodeId(){return Te(this),A._ts_tree_cursor_current_node_id_wasm(this.tree[0])}get nodeIsNamed(){return Te(this),A._ts_tree_cursor_current_node_is_named_wasm(this.tree[0])===1}get nodeIsMissing(){return Te(this),A._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0])===1}get nodeText(){Te(this);let t=A._ts_tree_cursor_start_index_wasm(this.tree[0]),n=A._ts_tree_cursor_end_index_wasm(this.tree[0]);A._ts_tree_cursor_start_position_wasm(this.tree[0]);let r=Ar(Y);return _d(this.tree,t,n,r)}get startPosition(){return Te(this),A._ts_tree_cursor_start_position_wasm(this.tree[0]),Ar(Y)}get endPosition(){return Te(this),A._ts_tree_cursor_end_position_wasm(this.tree[0]),Ar(Y)}get startIndex(){return Te(this),A._ts_tree_cursor_start_index_wasm(this.tree[0])}get endIndex(){return Te(this),A._ts_tree_cursor_end_index_wasm(this.tree[0])}gotoFirstChild(){Te(this);let t=A._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);return $t(this),t===1}gotoLastChild(){Te(this);let t=A._ts_tree_cursor_goto_last_child_wasm(this.tree[0]);return $t(this),t===1}gotoParent(){Te(this);let t=A._ts_tree_cursor_goto_parent_wasm(this.tree[0]);return $t(this),t===1}gotoNextSibling(){Te(this);let t=A._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);return $t(this),t===1}gotoPreviousSibling(){Te(this);let t=A._ts_tree_cursor_goto_previous_sibling_wasm(this.tree[0]);return $t(this),t===1}gotoDescendant(t){Te(this),A._ts_tree_cursor_goto_descendant_wasm(this.tree[0],t),$t(this)}gotoFirstChildForIndex(t){Te(this),A.setValue(Y+md,t,"i32");let n=A._ts_tree_cursor_goto_first_child_for_index_wasm(this.tree[0]);return $t(this),n===1}gotoFirstChildForPosition(t){Te(this),jt(Y+md,t);let n=A._ts_tree_cursor_goto_first_child_for_position_wasm(this.tree[0]);return $t(this),n===1}reset(t){de(t),Te(this,Y+Et),A._ts_tree_cursor_reset_wasm(this.tree[0]),$t(this)}resetTo(t){Te(this,Y),Te(t,Y+md),A._ts_tree_cursor_reset_to_wasm(this.tree[0],t.tree[0]),$t(this)}},ck=class{static{D(this,"Node")}0=0;_children;_namedChildren;constructor(e,{id:t,tree:n,startIndex:r,startPosition:o,other:s}){_s(e),this[0]=s,this.id=t,this.tree=n,this.startIndex=r,this.startPosition=o}id;startIndex;startPosition;tree;get typeId(){return de(this),A._ts_node_symbol_wasm(this.tree[0])}get grammarId(){return de(this),A._ts_node_grammar_symbol_wasm(this.tree[0])}get type(){return this.tree.language.types[this.typeId]||"ERROR"}get grammarType(){return this.tree.language.types[this.grammarId]||"ERROR"}get isNamed(){return de(this),A._ts_node_is_named_wasm(this.tree[0])===1}get isExtra(){return de(this),A._ts_node_is_extra_wasm(this.tree[0])===1}get isError(){return de(this),A._ts_node_is_error_wasm(this.tree[0])===1}get isMissing(){return de(this),A._ts_node_is_missing_wasm(this.tree[0])===1}get hasChanges(){return de(this),A._ts_node_has_changes_wasm(this.tree[0])===1}get hasError(){return de(this),A._ts_node_has_error_wasm(this.tree[0])===1}get endIndex(){return de(this),A._ts_node_end_index_wasm(this.tree[0])}get endPosition(){return de(this),A._ts_node_end_point_wasm(this.tree[0]),Ar(Y)}get text(){return _d(this.tree,this.startIndex,this.endIndex,this.startPosition)}get parseState(){return de(this),A._ts_node_parse_state_wasm(this.tree[0])}get nextParseState(){return de(this),A._ts_node_next_parse_state_wasm(this.tree[0])}equals(e){return this.tree===e.tree&&this.id===e.id}child(e){return de(this),A._ts_node_child_wasm(this.tree[0],e),Be(this.tree)}namedChild(e){return de(this),A._ts_node_named_child_wasm(this.tree[0],e),Be(this.tree)}childForFieldId(e){return de(this),A._ts_node_child_by_field_id_wasm(this.tree[0],e),Be(this.tree)}childForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1?this.childForFieldId(t):null}fieldNameForChild(e){de(this);let t=A._ts_node_field_name_for_child_wasm(this.tree[0],e);return t?A.AsciiToString(t):null}fieldNameForNamedChild(e){de(this);let t=A._ts_node_field_name_for_named_child_wasm(this.tree[0],e);return t?A.AsciiToString(t):null}childrenForFieldName(e){let t=this.tree.language.fields.indexOf(e);return t!==-1&&t!==0?this.childrenForFieldId(t):[]}childrenForFieldId(e){de(this),A._ts_node_children_by_field_id_wasm(this.tree[0],e);let t=A.getValue(Y,"i32"),n=A.getValue(Y+ee,"i32"),r=new Array(t);if(t>0){let o=n;for(let s=0;s0){let n=t;for(let r=0;r0){let n=t;for(let r=0;r0){let d=l;for(let u=0;u=e.oldEndIndex){this.startIndex=e.newEndIndex+(this.startIndex-e.oldEndIndex);let t,n;this.startPosition.row>e.oldEndPosition.row?(t=this.startPosition.row-e.oldEndPosition.row,n=this.startPosition.column):(t=0,n=this.startPosition.column,this.startPosition.column>=e.oldEndPosition.column&&(n=this.startPosition.column-e.oldEndPosition.column)),t>0?(this.startPosition.row+=t,this.startPosition.column=n):this.startPosition.column+=n}else this.startIndex>e.startIndex&&(this.startIndex=e.newEndIndex,this.startPosition.row=e.newEndPosition.row,this.startPosition.column=e.newEndPosition.column)}toString(){de(this);let e=A._ts_node_to_string_wasm(this.tree[0]),t=A.AsciiToString(e);return A._free(e),t}};D(yd,"unmarshalCaptures");D(de,"marshalNode");D(Be,"unmarshalNode");D(Te,"marshalTreeCursor");D($t,"unmarshalTreeCursor");D(jt,"marshalPoint");D(Ar,"unmarshalPoint");D(Kp,"marshalRange");D(ka,"unmarshalRange");D(Xp,"marshalEdit");D(Zp,"unmarshalLanguageMetadata");dk=/^tree_sitter_\w+$/,bd=class Sa{static{D(this,"Language")}0=0;types;fields;constructor(t,n){_s(t),this[0]=n,this.types=new Array(A._ts_language_symbol_count(this[0]));for(let r=0,o=this.types.length;r0){let o=n;for(let s=0;s0){let s=r;for(let a=0;a(fd(),ud))).readFile(t);else{let o=await fetch(t);if(!o.ok){let a=await o.text();throw new Error(`Language.load failed with status ${o.status}. -${a}`)}let s=o.clone();try{n=await WebAssembly.compileStreaming(o)}catch(a){console.error("wasm streaming compile failed:",a),console.error("falling back to ArrayBuffer instantiation"),n=new Uint8Array(await s.arrayBuffer())}}let r=await M.loadWebAssemblyModule(n,{loadAsync:!0});return xa.loadFromWasmExports(r,{sync:!1})}static loadFromWasmExports(t,{sync:n}){let r=Object.keys(t),o=r.find(a=>ak.test(a)&&!a.includes("external_scanner_"));if(!o)throw console.log(`Couldn't find language function in Wasm file. Symbols: -${JSON.stringify(r,null,2)}`),new Error(`Language.${n?"loadSync":"load"} failed: no language function found in Wasm file`);let s=t[o]();return new xa(Xn,s)}static loadSync(t){let n=M.loadWebAssemblyModule(t,{loadAsync:!1});return xa.loadFromWasmExports(n,{sync:!0})}};D(Zp,"Module");lk=Zp,Yp=null;D(Qp,"initializeBinding");D(eg,"checkModule");zp=bs(e=>{M._ts_parser_delete(e[0]),M._free(e[1])}),bd=class{static{D(this,"Parser")}0=0;1=0;logCallback=null;language=null;static async init(e){qp(await Qp(e)),Q=M._ts_init(),md=M.getValue(Q,"i32"),pd=M.getValue(Q+re,"i32")}constructor(){this.initialize(),zp?.register(this,[this[0],this[1]],this)}initialize(){if(!eg())throw new Error("cannot construct a Parser before calling `init()`");M._ts_parser_new_wasm(),this[0]=M.getValue(Q,"i32"),this[1]=M.getValue(Q+re,"i32")}delete(){zp?.unregister(this),M._ts_parser_delete(this[0]),M._free(this[1]),this[0]=0,this[1]=0}setLanguage(e){let t;if(!e)t=0,this.language=null;else if(e.constructor===_d){t=e[0];let n=M._ts_language_abi_version(t);if(ne.slice(l);else if(typeof e=="function")M.currentParseCallback=e;else throw new Error("Argument must be a string or a function");n?.progressCallback?M.currentProgressCallback=n.progressCallback:M.currentProgressCallback=null,this.logCallback?(M.currentLogCallback=this.logCallback,M._ts_parser_enable_logger_wasm(this[0],1)):(M.currentLogCallback=null,M._ts_parser_enable_logger_wasm(this[0],0));let r=0,o=0;if(n?.includedRanges){r=n.includedRanges.length,o=M._calloc(r,Si);let l=o;for(let c=0;c0){let r=t;for(let o=0;oe.type==="capture","isCaptureStep"),wd=D(e=>e.type==="string","isStringStep"),sn={Syntax:1,NodeName:2,FieldName:3,CaptureName:4,PatternStructure:5},wi=class tg extends Error{constructor(t,n,r,o){super(tg.formatMessage(t,n)),this.kind=t,this.info=n,this.index=r,this.length=o,this.name="QueryError"}kind;info;index;length;static{D(this,"QueryError")}static formatMessage(t,n){switch(t){case sn.NodeName:return`Bad node name '${n.word}'`;case sn.FieldName:return`Bad field name '${n.word}'`;case sn.CaptureName:return`Bad capture name @${n.word}`;case sn.PatternStructure:return`Bad pattern structure at offset ${n.suffix}`;case sn.Syntax:return`Bad syntax at offset ${n.suffix}`}}};D(ng,"parseAnyPredicate");D(rg,"parseMatchPredicate");D(sg,"parseAnyOfPredicate");D(ig,"parseIsPredicate");D(og,"parseSetDirective");D(ag,"parsePattern");Gp=bs(e=>{M._ts_query_delete(e)}),lg=class{static{D(this,"Query")}0=0;exceededMatchLimit;textPredicates;captureNames;captureQuantifiers;predicates;setProperties;assertedProperties;refutedProperties;matchLimit;constructor(e,t){let n=M.lengthBytesUTF8(t),r=M._malloc(n+1);M.stringToUTF8(t,r,n+1);let o=M._ts_query_new(e[0],r,n,Q,Q+re);if(!o){let _=M.getValue(Q+re,"i32"),y=M.getValue(Q,"i32"),b=M.UTF8ToString(r,y).length,x=t.slice(b,b+100).split(` -`)[0],k=x.match(uk)?.[0]??"";switch(M._free(r),_){case sn.Syntax:throw new wi(sn.Syntax,{suffix:`${b}: '${x}'...`},b,0);case sn.NodeName:throw new wi(_,{word:k},b,k.length);case sn.FieldName:throw new wi(_,{word:k},b,k.length);case sn.CaptureName:throw new wi(_,{word:k},b,k.length);case sn.PatternStructure:throw new wi(_,{suffix:`${b}: '${x}'...`},b,0)}}let s=M._ts_query_string_count(o),a=M._ts_query_capture_count(o),l=M._ts_query_pattern_count(o),c=new Array(a),d=new Array(l),u=new Array(s);for(let _=0;_s)throw new Error("`startIndex` cannot be greater than `endIndex`");if(r!==St&&(n.row>r.row||n.row===r.row&&n.column>r.column))throw new Error("`startPosition` cannot be greater than `endPosition`");if(d!==0&&c>d)throw new Error("`startContainingIndex` cannot be greater than `endContainingIndex`");if(l!==St&&(a.row>l.row||a.row===l.row&&a.column>l.column))throw new Error("`startContainingPosition` cannot be greater than `endContainingPosition`");m&&(M.currentQueryProgressCallback=m),ue(e),M._ts_query_matches_wasm(this[0],e.tree[0],n.row,n.column,r.row,r.column,o,s,a.row,a.column,l.row,l.column,c,d,u,f);let p=M.getValue(Q,"i32"),g=M.getValue(Q+re,"i32"),h=M.getValue(Q+2*re,"i32"),_=new Array(p);this.exceededMatchLimit=!!h;let y=0,b=g;for(let x=0;xF(T))){_[y]={patternIndex:k,captures:T};let F=this.setProperties[k];_[y].setProperties=F;let R=this.assertedProperties[k];_[y].assertedProperties=R;let C=this.refutedProperties[k];_[y].refutedProperties=C,y++}}return _.length=y,M._free(g),M.currentQueryProgressCallback=null,_}captures(e,t={}){let n=t.startPosition??St,r=t.endPosition??St,o=t.startIndex??0,s=t.endIndex??0,a=t.startContainingPosition??St,l=t.endContainingPosition??St,c=t.startContainingIndex??0,d=t.endContainingIndex??0,u=t.matchLimit??4294967295,f=t.maxStartDepth??4294967295,m=t.progressCallback;if(typeof u!="number")throw new Error("Arguments must be numbers");if(this.matchLimit=u,s!==0&&o>s)throw new Error("`startIndex` cannot be greater than `endIndex`");if(r!==St&&(n.row>r.row||n.row===r.row&&n.column>r.column))throw new Error("`startPosition` cannot be greater than `endPosition`");if(d!==0&&c>d)throw new Error("`startContainingIndex` cannot be greater than `endContainingIndex`");if(l!==St&&(a.row>l.row||a.row===l.row&&a.column>l.column))throw new Error("`startContainingPosition` cannot be greater than `endContainingPosition`");m&&(M.currentQueryProgressCallback=m),ue(e),M._ts_query_captures_wasm(this[0],e.tree[0],n.row,n.column,r.row,r.column,o,s,a.row,a.column,l.row,l.column,c,d,u,f);let p=M.getValue(Q,"i32"),g=M.getValue(Q+re,"i32"),h=M.getValue(Q+2*re,"i32"),_=new Array;this.exceededMatchLimit=!!h;let y=new Array,b=g;for(let x=0;xF(y))){let F=y[T],R=this.setProperties[k];F.setProperties=R;let C=this.assertedProperties[k];F.assertedProperties=C;let A=this.refutedProperties[k];F.refutedProperties=A,_.push(F)}}return M._free(g),M.currentQueryProgressCallback=null,_}predicatesForPattern(e){return this.predicates[e]}disableCapture(e){let t=M.lengthBytesUTF8(e),n=M._malloc(t+1);M.stringToUTF8(e,n,t+1),M._ts_query_disable_capture(this[0],n,t),M._free(n)}disablePattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);M._ts_query_disable_pattern(this[0],e)}didExceedMatchLimit(){return this.exceededMatchLimit}startIndexForPattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);return M._ts_query_start_byte_for_pattern(this[0],e)}endIndexForPattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);return M._ts_query_end_byte_for_pattern(this[0],e)}patternCount(){return M._ts_query_pattern_count(this[0])}captureIndexForName(e){return this.captureNames.indexOf(e)}isPatternRooted(e){return M._ts_query_is_pattern_rooted(this[0],e)===1}isPatternNonLocal(e){return M._ts_query_is_pattern_non_local(this[0],e)===1}isPatternGuaranteedAtStep(e){return M._ts_query_is_pattern_guaranteed_at_step(this[0],e)===1}}});function Ar(e){return vi[e]}function va(e,t){let n=vi[e];return e===".h"&&mk.test(t)?"cpp":n}function xs(){let e=O.env.XDG_CACHE_HOME,t=e&&e.trim()?e.trim():j(_a(),".cache");return j(t,"codeindex","grammars",Te)}function Wt(e={}){let t=xs(),n=O.env.CODEINDEX_GRAMMARS_DIR,r=n&&n.trim()&&ne(n)?n:void 0,o=ne(t)?t:void 0,s=(d,u,f)=>{let m=j(u,"..",pk),p=[];for(let g of[u,ne(m)?m:void 0,...f])g!==void 0&&!p.includes(g)&&p.push(g);return{tier:d,dir:u,cacheDir:t,dirs:p}},a=O.env.CODEINDEX_GRAMMAR_DIR??O.env.ULTRAINDEX_GRAMMAR_DIR;if(a&&a.trim()&&ne(a))return s("env",a,[]);let l=e.moduleDir??Me(wa(import.meta.url)),c=[j(l,"grammars"),j(l,"..","..","scripts","grammars"),j(l,"..","scripts","grammars")];for(let d of c)if(ne(d))return s("adjacent",d,[r,o]);return r?s("env",r,[o]):o?s("cache",o,[]):{tier:"none",cacheDir:t,dirs:[]}}function Ra(){let{dirs:e}=Wt(),t=n=>e.some(r=>ne(j(r,n)));return t("web-tree-sitter.wasm")?new Set(Ca().filter(n=>t(`${n}.wasm`))):new Set}function gk(e){return Wt(e).dir}async function on(e){let{dirs:t}=Wt();if(!t.length)return;let n=r=>{for(let o of t){let s=j(o,r);if(ne(s))return s}};if(!cg){let r=n("web-tree-sitter.wasm");if(!r)return;await bd.init({wasmBinary:ie(r)}),cg=!0,Ea=new bd}for(let r of new Set(e)){if(ki.has(r))continue;let o=n(`${r}.wasm`),s=o?(()=>{try{let a=Ae(o);return`${o}:${a.size}:${a.mtimeMs}`}catch{return`${o}:unreadable`}})():`missing:${t.join("|")}`;if(ka.get(r)!==s){if(!o){ka.set(r,s);continue}try{ki.set(r,await _d.load(new Uint8Array(ie(o)))),ka.delete(r)}catch{ka.set(r,s)}}}}function Ca(){return[...new Set(Object.values(vi))]}function Bt(e){let t=new Set;for(let n of e){for(let o of fk[n]??[])t.add(o);let r=vi[n];r!==void 0&&t.add(r),n===".h"&&t.add("cpp")}return[...t].sort()}function Le(e){return ki.has(e)}function Sd(e){return ki.get(e)}function Ss(e){let t=ki.get(e);return!Ea||!t?null:(Ea.setLanguage(t),Ea)}var Ei,ws,vi,fk,mk,pk,cg,Ea,ki,ka,pt=z(()=>{"use strict";I();Ee();_i();fe();bi();xd();_t();Ei=new Set(["typescript","tsx","javascript","python","go","rust","java","ruby","c","cpp","c_sharp","php","scala","bash","lua"]),ws=new Set(["kotlin","elixir","zig","hcl","terraform","solidity"]),vi={".ts":"typescript",".mts":"typescript",".cts":"typescript",".tsx":"tsx",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".go":"go",".rs":"rust",".java":"java",".rb":"ruby",".rake":"ruby",".c":"c",".h":"c",".cc":"cpp",".cpp":"cpp",".cxx":"cpp",".hpp":"cpp",".hh":"cpp",".cs":"c_sharp",".php":"php",".scala":"scala",".sc":"scala",".sh":"bash",".bash":"bash",".lua":"lua",".kt":"kotlin",".kts":"kotlin",".ex":"elixir",".exs":"elixir",".zig":"zig",".hcl":"hcl",".tf":"terraform",".tfvars":"terraform",".sol":"solidity"},fk={".vue":["javascript","tsx","typescript"],".svelte":["javascript","tsx","typescript"],".astro":["typescript"]};mk=/^[ \t]*(?:namespace(?:[ \t]+[A-Za-z_][\w:]*)?\s*\{|using[ \t]+namespace[ \t]|template[ \t]*<|class[ \t]+(?:[A-Z_][A-Z0-9_]*[ \t]+)?[A-Za-z_]\w*(?:[ \t]+final)?[ \t]*(?:[:;{]|$)|(?:public|private|protected)[ \t]*:(?!:)|#[ \t]*include[ \t]*<[a-z_]+>|extern[ \t]+"C\+\+")/m;pk="grammars-extended";cg=!1,Ea=null,ki=new Map,ka=new Map});function $t(e,t){let n=[...e.namedChildren].reverse();for(;n.length;){let r=n.pop();if(t(r))return r;let o=r.namedChildren;for(let s=o.length-1;s>=0;s--)n.push(o[s])}}function dg(e){switch(e.type){case"operator_name":return e.text.replace(/\s+/g,"").replace(/^operator(?=\w)/,"operator ");case"operator_cast":{let t=e.text.split("(")[0].replace(/\s+/g," ").replace(/\s*([*&])\s*/g,"$1").trim();return t.length>8?t:void 0}case"destructor_name":return e.text.replace(/\s+/g,"")}}function kd(e){return e.childForFieldName("declarator")??(hk.has(e.type)?e.namedChildren[0]??null:null)}function Tr(e){let t=e.childForFieldName("name");if(t?.text)return t.text;let n=e.childForFieldName("declarator");for(;n;){let s=n.childForFieldName("name");if(s?.text){if(s.type==="qualified_identifier"){n=s;continue}return dg(s)??s.text}if(n.namedChildren.length===0&&/(^|_)identifier$/.test(n.type))return n.text;let a=dg(n);if(a)return a;let l=kd(n);if(!l||l===n)break;n=l}let o=$t(e,s=>s.type==="variable_declarator")?.childForFieldName("name");if(o?.text)return o.text;for(let s of e.namedChildren)if(/(^|_)(identifier|name|constant)$/.test(s.type))return s.text}function Ir(e){if(!e)return;let t=e.namedChildren;if(t.length===0)return ks.test(e.type)?e.text:void 0;let n=e.childForFieldName("name")??e.childForFieldName("property")??e.childForFieldName("attribute")??e.childForFieldName("field")??e.childForFieldName("function");if(n)return Ir(n);let r=t[t.length-1];return r&&r!==e?Ir(r):void 0}function Ri(e){if(!e||e.namedChildren.length===0)return;let t=e.childForFieldName("object")??e.childForFieldName("operand")??e.childForFieldName("value")??e.childForFieldName("path")??e.childForFieldName("expression")??e.childForFieldName("argument")??e.childForFieldName("receiver")??e.childForFieldName("table");if(t&&(t.type==="crate"||t.type==="super"))return t.type;let n=t?Ir(t):void 0;return n&&/^[A-Za-z_]\w*$/.test(n)?n:void 0}function Et(e){if(!e)return;let t=e.childForFieldName("type")??e.childForFieldName("name");if(t&&/generic|qualified|scoped|nested/.test(e.type))return Et(t);if(e.namedChildren.length===0)return ug.test(e.type)?e.text:void 0;let n,r=o=>{if(o.namedChildren.length===0){ug.test(o.type)&&(n=o.text);return}if(!/arguments|parameters|argument_list/.test(o.type))for(let s of o.namedChildren)r(s)};return r(e),n}var ks,Ma,hk,ug,Aa=z(()=>{"use strict";I();ks=/(^|_)(identifier|name|constant|word)$/,Ma=/(^|_)comment$/;hk=new Set(["reference_declarator","parenthesized_declarator"]);ug=/identifier|constant|(^|_)name$/});function wk(e){let t=[],n=e.previousNamedSibling,r=e.startPosition.row;for(;n;){let s=yk.test(n.type);if(!s&&!bk.test(n.type)||r-n.endPosition.row>1)break;s&&t.push(n),r=n.startPosition.row,n=n.previousNamedSibling}if(!t.length)return[];t.reverse();let o=[];for(let s of t)for(let a of s.text.split(/\r?\n/))o.push(Dt(a));return o}function Zn(e){let t=e;for(;t;){let n=wk(t);if(n.length){let s=kr(n);if(s)return s}let r=t.parent;if(!r||!_k.has(r.type))return;let o=t.previousNamedSibling;if(o&&!xk.test(o.type))return;t=r}}function fg(e){let n=e.childForFieldName("body")?.namedChildren[0];if(!n)return;let r=n.type==="string"?n:n.type==="expression_statement"?n.namedChildren[0]:void 0;if(!(!r||r.type!=="string"))return kr(r.text.split(/\r?\n/).map(Dt))}var yk,_k,bk,xk,Ed=z(()=>{"use strict";I();ai();yk=/(^|_)comment$/,_k=new Set(["export_statement","ambient_declaration","decorated_definition","template_declaration","labeled_statement","lexical_declaration","variable_declaration","type_declaration","const_declaration","var_declaration","body_statement","body"]),bk=/^(attribute_item|decorator)$/;xk=/decorator|annotation|modifiers/});function lt(e){if(!e)return[];let t=[];for(let n of e.namedChildren){if(/arguments|parameters/.test(n.type))continue;let r=Et(n);r&&t.push(r)}return t}function mg(e,t){if(!t.self)return[];let n=Ge(e,"class_heritage");if(!n)return[];let r=n.namedChildren.some(s=>s.type.endsWith("_clause")),o=[];for(let s of lt(r?Ge(n,"extends_clause"):n))o.push(He("extends",t.self,s,e));for(let s of lt(Ge(n,"implements_clause")))o.push(He("implements",t.self,s,e));return o}function Ci(e,t,n){return lt(e).map((o,s)=>He(s===0?"extends":"implements",t,o,n))}function Rk(e){for(let t=e.parent;t&&t.type!=="module";t=t.parent)if(t.type==="if_statement"&&vk.test(t.childForFieldName("condition")?.text??""))return!0;return!1}function Mk(e){let t=new Set,n=!1,r=c=>{if(c?.type!=="string"||c.namedChildren.some(u=>u.type==="interpolation"))return;let d=c.namedChildren.filter(u=>u.type==="string_content");return d.length<=1?d[0]?.text??"":void 0},o=c=>{if(c?.type!=="list"&&c?.type!=="tuple")return;let d=[];for(let u of c.namedChildren){let f=r(u);if(f===void 0)return;d.push(f)}return d},s=c=>c?.type==="identifier"&&c.text==="__all__",a=c=>{let d=c.namedChildren[0];if(!d)return[];if((d.type==="assignment"||d.type==="augmented_assignment")&&s(d.childForFieldName("left"))){if(d.type==="assignment")n=!0;else if(d.childForFieldName("operator")?.text!=="+=")return;return o(d.childForFieldName("right"))}let u=d.type==="call"?d.childForFieldName("function"):null;if(u?.type!=="attribute"||!s(u.childForFieldName("object")))return[];let f=d.childForFieldName("arguments")?.namedChildren,m=u.childForFieldName("attribute")?.text;if(m==="extend"&&f?.length===1)return o(f[0]);let p=m==="append"&&f?.length===1?r(f[0]):void 0;return p===void 0?void 0:[p]},l=c=>{for(let d of c.namedChildren){if(Ck.has(d.type)){if(!l(d))return!1;continue}if(d.type!=="expression_statement")continue;let u=a(d);if(u===void 0)return!1;for(let f of u)t.add(f)}return!0};return l(e)&&n?t:void 0}function bg(e){if(e.type!=="type_definition")return[];let t=Md(e),n=t?.childForFieldName("name")?.text;return t&&n&&n!==Tr(e)?[{name:n,kind:Mg[t.type]}]:[]}function wg(e){if(e.childForFieldName("value"))return!1;let t=e.parent;return t?.type!=="preproc_ifdef"||t.namedChildCount<=2||t.childForFieldName("name")?.text!==e.childForFieldName("name")?.text?!1:t.firstChild?.type==="#ifndef"}function xg(e){let t=e.childForFieldName("declarator");for(;t&&t.type!=="qualified_identifier";)t=kd(t);let n=null;for(;t?.type==="qualified_identifier";)n=t.childForFieldName("scope"),t=t.childForFieldName("name");return n?Et(n):void 0}function Sg(e,t){if(t)return/\b(val|var)\s*$/.exec(e.text.slice(0,t.startIndex-e.startIndex))?.[1]}function $a(e){if(!e)return;if(e.type==="identifier")return{name:e.text};if(e.type!=="dot_index_expression"&&e.type!=="method_index_expression")return;let t=e.childForFieldName("table"),n=e.childForFieldName("field")??e.childForFieldName("method");return t&&n&&/^[\w.]+$/.test(t.text)?{name:n.text,table:t.text}:void 0}function vg(e){if(e.childForFieldName("left")?.type!=="constant")return;let t=e.childForFieldName("right");if(t?.type==="call")return Ik[`${t.childForFieldName("receiver")?.text}.${t.childForFieldName("method")?.text}`]}function $k(e,t){if(t.inFunctionBody||e.type!=="method_definition"||e.childForFieldName("name")?.text!=="constructor")return[];let n=[];for(let r of e.childForFieldName("parameters")?.namedChildren??[]){if(r.type!=="required_parameter"&&r.type!=="optional_parameter"||!r.children.some(s=>s.type==="accessibility_modifier"||s.type==="override_modifier"||s.type==="readonly"))continue;let o=r.childForFieldName("pattern");o?.type==="identifier"&&n.push({name:o.text,kind:"property",node:r})}return n}function Fk(e,t){if(t.inFunctionBody||e.type!=="method_declaration")return[];if(!/^__construct$/i.test(e.childForFieldName("name")?.text??""))return[];let n=[];for(let r of e.childForFieldName("parameters")?.namedChildren??[]){if(r.type!=="property_promotion_parameter")continue;let o=r.childForFieldName("name")?.text.replace(/^\$/,"");o&&n.push({name:o,kind:"property",node:r})}return n}var Ge,He,Cg,Ad,Fa,pg,vd,Sk,gg,hg,kk,Mi,Ek,vk,Ck,Ia,Rd,yg,_g,Ta,Mg,Md,kg,Ag,Ak,Eg,Ik,Tk,Rg,Cd,Id,Ig=z(()=>{"use strict";I();Aa();Ed();Ge=(e,t)=>e.namedChildren.find(n=>n.type===t),He=(e,t,n,r)=>({kind:e,from:t,to:n,line:r.startPosition.row+1});Cg=new Set(["interface","trait","enum","protocol","annotation"]),Ad=new Set(["function","method","def","constructor","operator"]),Fa=new Set(["function","function_expression","arrow_function","generator_function","class","function_definition","lambda"]),pg=(e,t,n)=>/\b(public|internal)\b/.test(n),vd=(e,t,n)=>!/\b(private|protected)\b/.test(n),Sk=e=>!/^local\b/.test(e),gg=(e,t,n)=>/\bpub\b/.test(n),hg=(e,t)=>/^[A-Z]/.test(t),kk=(e,t)=>!t.startsWith("_")||/^__\w+__$/.test(t),Mi=()=>!0,Ek=()=>!1,vk=/^(__name__\s*==\s*(["'])__main__\2|(["'])__main__\3\s*==\s*__name__)$/;Ck=new Set(["block","if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement"]);Ia=e=>$t(e,t=>t.type==="function_declarator"||t.type==="operator_cast")!==void 0,Rd=e=>t=>t.childrenForFieldName(e).flatMap(n=>/identifier$/.test(n.type)?n.text:[]),yg=e=>(Ge(e,"variable_declaration")?.namedChildren??[]).flatMap(t=>t.type==="variable_declarator"?t.childForFieldName("name")?.text??[]:[]),_g=e=>e.childrenForFieldName("declarator").flatMap(t=>t.childForFieldName("name")?.text??[]),Ta=e=>e.childrenForFieldName("declarator").flatMap(t=>t.namedChildren.length>0?Tr(t)??[]:/identifier$/.test(t.type)?t.text:[]),Mg={struct_specifier:"struct",union_specifier:"union",enum_specifier:"enum",class_specifier:"class"},Md=e=>{let t=e.childForFieldName("type");return t&&Mg[t.type]&&t.childForFieldName("body")?t:void 0};kg={defmodule:"module",defprotocol:"protocol",defimpl:"impl",defstruct:"struct",defexception:"exception",def:"function",defp:"function",defmacro:"macro",defmacrop:"macro",defguard:"guard",defguardp:"guard",defdelegate:"function"},Ag=e=>e.type==="binary_operator"&&e.childForFieldName("operator")?.text==="when",Ak=e=>Ag(e)?e.childForFieldName("left")??e:e;Eg={public:!0,private:!1,protected:!1,module_function:!0,public_class_method:!0,private_class_method:!1},Ik={"Struct.new":"class","Class.new":"class","Data.define":"class","Module.new":"module"};Tk=new Set(["resource","data","variable","output","module","provider","locals","terraform"]),Rg={lang:"terraform",defs:{block:"block"},containers:new Set(["config_file","body"]),exported:Mi,kindFrom:{block:e=>{let t=e.namedChildren.find(n=>n.type==="identifier")?.text;return t&&Tk.has(t)?t:void 0}},nameFrom:{block:e=>{let t=e.namedChildren.filter(n=>n.type==="string_lit").map(n=>n.text.replace(/^"|"$/g,""));return t.length?t.join("."):e.namedChildren.find(n=>n.type==="identifier")?.text}}};Cd={lang:"typescript",defs:{function_declaration:"function",generator_function_declaration:"function",function_signature:"function",class_declaration:"class",abstract_class_declaration:"class",interface_declaration:"interface",type_alias_declaration:"type",enum_declaration:"enum",enum_assignment:"enum-member",method_definition:"method",method_signature:"method",abstract_method_signature:"method",property_signature:"property",public_field_definition:"property",call_signature:"call-signature",construct_signature:"construct-signature",index_signature:"index-signature",internal_module:"namespace",module:"namespace",variable_declarator:"const"},containers:new Set(["class_body","export_statement","ambient_declaration","program","lexical_declaration","variable_declaration","interface_body","object_type","enum_body","statement_block","try_statement","catch_clause","finally_clause","if_statement","else_clause","for_statement","for_in_statement","while_statement","do_statement","switch_statement","switch_body","switch_case","switch_default","labeled_statement","return_statement","expression_statement","call_expression","arguments","arrow_function","function_expression","function","parenthesized_expression"]),exported:Ek,exportMarkers:new Set(["export_statement","ambient_declaration"]),bareMembers:{enum_body:"enum-member"},nameFrom:{call_signature:()=>"(call)",construct_signature:()=>"(construct)",index_signature:e=>`[${e.namedChildren.find(t=>t.type==="identifier")?.text??"key"}]`},privateMember:e=>{for(let t of e.namedChildren)if(t.type==="accessibility_modifier"&&/^(private|protected)/.test(t.text)||t.type==="private_property_identifier")return!0;return!1},imports:{import_statement:"string"},calls:{call_expression:"function",new_expression:"constructor"},assignments:!0,extraMembers:$k,relationsFrom:{class_declaration:mg,abstract_class_declaration:mg,interface_declaration:(e,t)=>t.self?lt(Ge(e,"extends_type_clause")).map(n=>He("extends",t.self,n,e)):[]}},Id={typescript:Cd,tsx:{...Cd,lang:"typescript"},javascript:{...Cd,lang:"javascript",defs:{function_declaration:"function",generator_function_declaration:"function",class_declaration:"class",method_definition:"method",field_definition:"property",variable_declarator:"const"}},python:{lang:"python",defs:{function_definition:"function",class_definition:"class"},containers:new Set(["block","decorated_definition","module","if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement","match_statement","case_clause"]),exported:kk,publicNames:Mk,imports:{import_statement:"path",import_from_statement:"path"},calls:{call:"function"},docstring:!0,relationsFrom:{class_definition:(e,t)=>t.self?lt(e.childForFieldName("superclasses")).map(n=>He("extends",t.self,n,e)):[]},extraMembers:(e,t)=>{if(t.inFunctionBody)return[];if(e.type==="import_from_statement"){let s=[],a=e.childForFieldName("module_name");for(let l of e.namedChildren)if(!(a&&l.startIndex===a.startIndex))if(l.type==="aliased_import"){let c=l.namedChildren[0]?.text,d=l.childForFieldName("alias")?.text;d&&(c===d||t.ownerKind===void 0&&t.publicNames?.has(d))&&s.push({name:d,kind:"reexport"})}else l.type==="dotted_name"&&t.ownerKind===void 0&&t.publicNames?.has(l.text)&&s.push({name:l.text,kind:"reexport"});return s}if(e.type!=="expression_statement")return[];let n=e.namedChildren[0];if(!n||n.type!=="assignment")return[];if(Rk(e))return[];let r=[];for(let s=n;s?.type==="assignment";s=s.childForFieldName("right")){let a=s.childForFieldName("left");if(a?.type==="identifier")r.push(a.text);else if(a&&/^(pattern_list|tuple_pattern|list_pattern)$/.test(a.type))for(let l of a.namedChildren){let c=l.type==="list_splat_pattern"?l.namedChildren[0]:l;c?.type==="identifier"&&r.push(c.text)}}let o=t.ownerKind==="class"?"field":"const";return r.map(s=>({name:s,kind:o}))}},go:{lang:"go",defs:{function_declaration:"function",method_declaration:"method",type_spec:"type",type_alias:"type",const_spec:"const",var_spec:"var",field_declaration:"field",method_spec:"method",method_elem:"method",package_clause:"package"},containers:new Set(["type_declaration","const_declaration","var_declaration","var_spec_list","source_file","struct_type","interface_type","field_declaration_list"]),exported:hg,imports:{import_declaration:"string"},calls:{call_expression:"function"},parentFrom:{method_declaration:e=>Et(e.childForFieldName("receiver"))},nameFrom:{field_declaration:e=>e.childForFieldName("name")?.text},namesFrom:{var_spec:Rd("name"),const_spec:Rd("name"),field_declaration:Rd("name")},relationsFrom:{field_declaration:(e,t)=>{if(!t.self||e.childForFieldName("name"))return[];let n=Et(e.childForFieldName("type"));return n?[He("extends",t.self,n,e)]:[]}}},ruby:{lang:"ruby",defs:{method:"def",singleton_method:"def",class:"class",module:"module"},containers:new Set(["class","module","body_statement","program","singleton_class","block_body"]),sectionScopes:new Set(["singleton_class"]),exported:Mi,kindFrom:{assignment:vg},nameFrom:{assignment:e=>e.childForFieldName("left")?.text},bodyFrom:{assignment:e=>e.childForFieldName("right")?.childForFieldName("block")?.childForFieldName("body")??void 0},inlineVisibility:e=>{if(e.type!=="call"||e.childForFieldName("receiver"))return;let t=Eg[e.childForFieldName("method")?.text??""];if(t===void 0)return;let n=(e.childForFieldName("arguments")?.namedChildren??[]).filter(r=>r.type==="method"||r.type==="singleton_method"||r.type==="call");return n.length?{nodes:n,public:t}:void 0},docFrom:e=>{let t=e.parent?.type==="argument_list"?e.parent.parent:null;return t?.type==="call"&&Eg[t.childForFieldName("method")?.text??""]!==void 0?Zn(t):void 0},calls:{call:"function"},sectionVisibility:e=>(e.type==="identifier"||e.type==="call")&&/^(private|protected)$/.test(e.text)?!1:e.type==="identifier"&&e.text==="public"?!0:void 0,relationsFrom:{class:(e,t)=>{if(!t.self)return[];let n=Et(e.childForFieldName("superclass"));return n?[He("extends",t.self,n,e)]:[]},call:(e,t)=>{let n=e.childForFieldName("method"),r=e.childForFieldName("receiver");if(!t.self||!n||!/^(include|prepend|extend)$/.test(n.text))return[];if(r&&r.type!=="self")return[];let o=[];for(let s of e.childForFieldName("arguments")?.namedChildren??[]){let a=Et(s);a&&o.push(He("implements",t.self,a,e))}return o}},extraMembers:(e,t)=>{if(t.inFunctionBody)return[];if(e.type==="assignment"){let n=e.childForFieldName("left");return n?.type==="constant"&&!vg(e)?[{name:n.text,kind:"const"}]:[]}if(e.type==="call"){let n=e.childForFieldName("method");if(!n||!/^attr_(reader|writer|accessor)$/.test(n.text))return[];let r=e.childForFieldName("arguments"),o=[];for(let s of r?.namedChildren??[])s.type==="simple_symbol"&&o.push({name:s.text.replace(/^:/,""),kind:"attr"});return o}return[]}},java:{lang:"java",defs:{class_declaration:"class",interface_declaration:"interface",annotation_type_declaration:"annotation",enum_declaration:"enum",enum_constant:"enum-member",record_declaration:"record",method_declaration:"method",constructor_declaration:"constructor",compact_constructor_declaration:"constructor",field_declaration:"field",constant_declaration:"field",annotation_type_element_declaration:"method"},containers:new Set(["class_body","interface_body","enum_body","enum_body_declarations","annotation_type_body","program","formal_parameters"]),exported:pg,imports:{import_declaration:"path"},calls:{method_invocation:"function",object_creation_expression:"constructor"},kindFrom:{formal_parameter:e=>e.parent?.parent?.type==="record_declaration"?"field":void 0},publicMember:e=>e.parent?.parent?.type==="record_declaration",nameFrom:{field_declaration:e=>$t(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,constant_declaration:e=>$t(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text},namesFrom:{field_declaration:_g,constant_declaration:_g},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let o of lt(e.childForFieldName("superclass")))n.push(He("extends",t.self,o,e));let r=e.childForFieldName("interfaces");for(let o of lt(Ge(r??e,"type_list")??r))n.push(He("implements",t.self,o,e));return n},interface_declaration:(e,t)=>{let n=e.childForFieldName("interfaces")??Ge(e,"extends_interfaces");return t.self?lt(Ge(n??e,"type_list")??n).map(r=>He("extends",t.self,r,e)):[]},record_declaration:(e,t)=>{let n=e.childForFieldName("interfaces");return t.self?lt(Ge(n??e,"type_list")??n).map(r=>He("implements",t.self,r,e)):[]}}},rust:{lang:"rust",defs:{function_item:"function",function_signature_item:"function",struct_item:"struct",enum_item:"enum",enum_variant:"enum-member",field_declaration:"field",trait_item:"trait",type_item:"type",associated_type:"type",mod_item:"mod",const_item:"const",static_item:"static",union_item:"union",macro_definition:"macro"},containers:new Set(["impl_item","declaration_list","source_file","field_declaration_list","enum_variant_list","foreign_mod_item","block"]),exported:gg,calls:{call_expression:"function"},parentFrom:{impl_item:e=>Et(e.childForFieldName("type"))},nestedDefs:new Set(["const_item","static_item"]),publicMembersIn:{impl_item:e=>e.childForFieldName("trait")!==null},relationsFrom:{impl_item:(e,t)=>{let n=Et(e.childForFieldName("trait"));return t.self&&n?[He("implements",t.self,n,e)]:[]}}},c_sharp:{lang:"csharp",defs:{class_declaration:"class",interface_declaration:"interface",struct_declaration:"struct",enum_declaration:"enum",enum_member_declaration:"enum-member",record_declaration:"record",delegate_declaration:"delegate",method_declaration:"method",constructor_declaration:"constructor",property_declaration:"property",indexer_declaration:"indexer",operator_declaration:"operator",field_declaration:"field",event_declaration:"event",event_field_declaration:"event",conversion_operator_declaration:"operator",destructor_declaration:"destructor"},containers:new Set(["namespace_declaration","declaration_list","compilation_unit","file_scoped_namespace_declaration","enum_member_declaration_list","parameter_list"]),exported:pg,calls:{invocation_expression:"function",object_creation_expression:"constructor"},kindFrom:{parameter:e=>e.parent?.parent?.type==="record_declaration"?"field":void 0},publicMember:e=>e.parent?.parent?.type==="record_declaration",nameFrom:{field_declaration:e=>$t(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,event_field_declaration:e=>$t(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,conversion_operator_declaration:e=>e.childForFieldName("type")?.text,operator_declaration:e=>{let t=e.childForFieldName("operator")?.text;return t?`operator${/^\w/.test(t)?" ":""}${t}`:void 0},indexer_declaration:()=>"this[]"},namesFrom:{field_declaration:e=>yg(e),event_field_declaration:e=>yg(e)},relationsFrom:{class_declaration:(e,t)=>t.self?Ci(Ge(e,"base_list"),t.self,e):[],struct_declaration:(e,t)=>t.self?Ci(Ge(e,"base_list"),t.self,e):[],record_declaration:(e,t)=>t.self?Ci(Ge(e,"base_list"),t.self,e):[],interface_declaration:(e,t)=>t.self?lt(Ge(e,"base_list")).map(n=>He("extends",t.self,n,e)):[]}},php:{lang:"php",defs:{function_definition:"function",class_declaration:"class",interface_declaration:"interface",trait_declaration:"trait",enum_declaration:"enum",enum_case:"enum-member",method_declaration:"method",property_declaration:"property",const_declaration:"const",namespace_definition:"namespace"},containers:new Set(["declaration_list","enum_declaration_list","program"]),exported:vd,calls:{function_call_expression:"function",member_call_expression:"member",object_creation_expression:"constructor"},extraMembers:Fk,nameFrom:{property_declaration:e=>$t(e,t=>t.type==="variable_name")?.text.replace(/^\$/,""),const_declaration:e=>$t(e,t=>t.type==="const_element")?.namedChildren[0]?.text},namesFrom:{property_declaration:e=>e.namedChildren.flatMap(t=>t.type==="property_element"?t.childForFieldName("name")?.text.replace(/^\$/,"")??[]:[]),const_declaration:e=>e.namedChildren.flatMap(t=>t.type==="const_element"?t.namedChildren[0]?.text??[]:[])},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let r of lt(Ge(e,"base_clause")))n.push(He("extends",t.self,r,e));for(let r of lt(Ge(e,"class_interface_clause")))n.push(He("implements",t.self,r,e));return n},interface_declaration:(e,t)=>t.self?lt(Ge(e,"base_clause")).map(n=>He("extends",t.self,n,e)):[]}},c:{lang:"c",defs:{function_definition:"function",struct_specifier:"struct",enum_specifier:"enum",enumerator:"enum-member",union_specifier:"union",type_definition:"type",field_declaration:"field",declaration:"const",preproc_def:"macro",preproc_function_def:"macro"},containers:new Set(["translation_unit","declaration_list","field_declaration_list","enumerator_list","linkage_specification","preproc_ifdef","preproc_if"]),exported:Mi,calls:{call_expression:"function"},kindFrom:{field_declaration:e=>Ia(e)?"method":"field",declaration:e=>Ia(e)?"function":"const"},nameFrom:{preproc_def:e=>wg(e)?void 0:e.childForFieldName("name")?.text},namesFrom:{field_declaration:Ta,declaration:Ta},bodyFrom:{type_definition:Md},extraMembers:bg},cpp:{lang:"cpp",defs:{function_definition:"function",class_specifier:"class",struct_specifier:"struct",enum_specifier:"enum",enumerator:"enum-member",union_specifier:"union",type_definition:"type",alias_declaration:"type",concept_definition:"concept",namespace_definition:"namespace",namespace_alias_definition:"namespace",field_declaration:"field",declaration:"const",using_declaration:"using",friend_declaration:"friend",preproc_def:"macro",preproc_function_def:"macro"},containers:new Set(["translation_unit","declaration_list","field_declaration_list","enumerator_list","template_declaration","linkage_specification","preproc_ifdef","preproc_if"]),exported:Mi,calls:{call_expression:"function",new_expression:"constructor"},kindFrom:{field_declaration:e=>Ia(e)?"method":"field",declaration:e=>Ia(e)?"function":"const"},sectionVisibility:e=>e.type==="access_specifier"?!/^(private|protected)/.test(e.text):void 0,nameFrom:{friend_declaration:e=>Tr(e)??(e.namedChildren[0]?Tr(e.namedChildren[0]):void 0),preproc_def:e=>wg(e)?void 0:e.childForFieldName("name")?.text},namesFrom:{field_declaration:Ta,declaration:Ta},parentFrom:{function_definition:xg,declaration:xg},bodyFrom:{type_definition:Md},extraMembers:bg,relationsFrom:{class_specifier:(e,t)=>t.self?lt(Ge(e,"base_class_clause")).map(n=>He("extends",t.self,n,e)):[],struct_specifier:(e,t)=>t.self?lt(Ge(e,"base_class_clause")).map(n=>He("extends",t.self,n,e)):[]}},scala:{lang:"scala",defs:{class_definition:"class",object_definition:"object",trait_definition:"trait",enum_definition:"enum",function_definition:"def",function_declaration:"def",val_definition:"val",val_declaration:"val",var_definition:"var",type_definition:"type",given_definition:"given",package_clause:"package"},containers:new Set(["compilation_unit","package_clause","template_body","class_parameters","parameters","extension_definition"]),parentFrom:{extension_definition:e=>Et(Ge(e,"parameters")?.namedChildren[0]?.childForFieldName("type")??null)},exported:vd,kindFrom:{class_parameter:e=>{let t=Sg(e,e.childForFieldName("name"));return t||(e.parent?.parent?.type==="class_definition"&&/\bcase\s+class\b/.test(e.parent.parent.text.slice(0,80))?"val":void 0)}},calls:{call_expression:"function",instance_expression:"constructor"},relationsFrom:{class_definition:(e,t)=>t.self?Ci(Ge(e,"extends_clause"),t.self,e):[],object_definition:(e,t)=>t.self?Ci(Ge(e,"extends_clause"),t.self,e):[],trait_definition:(e,t)=>t.self?lt(Ge(e,"extends_clause")).map(n=>He("extends",t.self,n,e)):[]}},bash:{lang:"shell",defs:{function_definition:"function",declaration_command:"const"},containers:new Set(["program","if_statement","compound_statement"]),exported:Mi,calls:{command:"function"},nameFrom:{declaration_command:e=>/^\s*local\b/.test(e.text)?void 0:$t(e,t=>t.type==="variable_name")?.text}},kotlin:{lang:"kotlin",defs:{class_declaration:"class",object_declaration:"object",function_declaration:"function",property_declaration:"property",enum_entry:"enum-member",type_alias:"type",class_parameter:"property"},containers:new Set(["source_file","class_body","enum_class_body","companion_object","object_declaration","primary_constructor","class_parameters"]),exported:vd,calls:{call_expression:"function"},kindFrom:{class_parameter:e=>Sg(e,e.namedChildren.find(t=>/identifier$/.test(t.type)))||/\bdata\s+class\b/.test(e.parent?.parent?.parent?.text.slice(0,80)??"")?"property":void 0,class_declaration:e=>{let t=e.text.slice(0,80);return/\binterface\b/.test(t)?"interface":/\benum\s+class\b/.test(t)?"enum":/\bannotation\s+class\b/.test(t)?"annotation":"class"}},nameFrom:{property_declaration:e=>$t(e,t=>t.type==="variable_declaration")?.namedChildren[0]?.text??e.namedChildren.find(t=>t.type==="identifier")?.text},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let r of Ge(e,"delegation_specifiers")?.namedChildren??[]){let o=Et(r);o&&n.push(He($t(r,s=>s.type==="constructor_invocation")?"extends":"implements",t.self,o,e))}return n}}},elixir:{lang:"elixir",defs:{},containers:new Set(["source","do_block","call","stab_clause"]),exported:e=>!/^\s*def(p|macrop|guardp)\b/.test(e),calls:{call:"function"},kindFrom:{call:e=>kg[e.childForFieldName("target")?.text??e.namedChildren[0]?.text??""]},skipCall:e=>{if(e.parent?.type==="unary_operator")return!0;let t=e.parent,n=t&&Ag(t)&&t.startIndex===e.startIndex?t:e;if(n.parent?.type!=="arguments")return!1;let r=n.parent.parent,o=r?.childForFieldName("target")??r?.namedChildren[0];return o!==void 0&&kg[o.text]!==void 0},docFrom:e=>{let t=e.previousNamedSibling;for(;t&&t.type==="unary_operator";){let n=t.namedChildren[0],r=n?.childForFieldName("target")??n?.namedChildren[0];if(r&&/^(doc|moduledoc)$/.test(r.text)){let o=$t(t,s=>s.type==="string");if(o)return o.text.replace(/^"""|"""$/g,"").replace(/^"|"$/g,"").trim()||void 0}t=t.previousNamedSibling}},nameFrom:{call:e=>{let n=(e.childForFieldName("arguments")??e.namedChildren.find(s=>s.type==="arguments"))?.namedChildren[0];if(!n)return;let r=Ak(n);if(r.type==="alias"||r.type==="identifier")return r.text;if(r.type==="binary_operator")return r.childForFieldName("operator")?.text;let o=r.childForFieldName("target")??r.namedChildren[0];return o&&/identifier|alias/.test(o.type)?o.text:void 0}}},zig:{lang:"zig",defs:{function_declaration:"function",variable_declaration:"const",container_field:"field",test_declaration:"test"},containers:new Set(["source_file","variable_declaration","struct_declaration","enum_declaration","union_declaration","error_set_declaration","opaque_declaration","block"]),exported:gg,calls:{call_expression:"function"},kindFrom:{variable_declaration:e=>{let t=e.namedChildren.find(n=>n.type==="builtin_function");if(!(t&&/^@(import|cImport)\b/.test(t.text))){for(let n of e.namedChildren){if(n.type==="struct_declaration")return"struct";if(n.type==="enum_declaration")return"enum";if(n.type==="union_declaration")return"union";if(n.type==="error_set_declaration")return"error";if(n.type==="opaque_declaration")return"opaque"}return/^\s*(?:pub\s+)?var\b/.test(e.text.slice(0,24))?"var":"const"}},container_field:e=>e.parent?.type==="enum_declaration"?"enum-member":"field"}},solidity:{lang:"solidity",defs:{contract_declaration:"contract",interface_declaration:"interface",library_declaration:"library",function_definition:"function",constructor_definition:"constructor",modifier_definition:"modifier",event_definition:"event",error_declaration:"error",struct_declaration:"struct",struct_member:"field",enum_declaration:"enum",enum_value:"enum-member",state_variable_declaration:"field",constant_variable_declaration:"const",user_defined_type_definition:"type",fallback_receive_definition:"function"},containers:new Set(["source_file","contract_body","struct_declaration","enum_declaration","enum_body"]),exported:(e,t)=>/\b(public|external)\b/.test(e)?!0:/\b(internal|private)\b/.test(e)?!1:hg(e,t)||!0,calls:{call_expression:"function"},nameFrom:{state_variable_declaration:e=>e.namedChildren.find(t=>t.type==="identifier")?.text,fallback_receive_definition:e=>/^\s*receive\b/.test(e.text)?"receive":"fallback",enum_value:e=>e.text},relationsFrom:{contract_declaration:(e,t)=>t.self?e.namedChildren.filter(n=>n.type==="inheritance_specifier").map(n=>Et(n)).filter(n=>n!==void 0).map(n=>He("extends",t.self,n,e)):[],interface_declaration:(e,t)=>t.self?e.namedChildren.filter(n=>n.type==="inheritance_specifier").map(n=>Et(n)).filter(n=>n!==void 0).map(n=>He("extends",t.self,n,e)):[]}},terraform:Rg,hcl:{...Rg,lang:"hcl"},lua:{lang:"lua",defs:{function_declaration:"function"},containers:new Set(["chunk","variable_declaration"]),exported:Sk,calls:{function_call:"function"},assignments:!0,nameFrom:{function_declaration:e=>$a(e.childForFieldName("name"))?.name},parentFrom:{function_declaration:e=>$a(e.childForFieldName("name"))?.table}}}});function Tg(e){for(let t of e.children)if(t.type==="{"||t.type==="("||t.type==="[")return t.startIndex}function Dk(e,t){let n,r=s=>{s!==void 0&&s>e.startIndex&&(n===void 0||s{Ok.has(s.type)?r(s.startIndex):r(Nk.get(s.type)?.(s))};r(e.childForFieldName("body")?.startIndex),o(e);for(let s of e.namedChildren){if(n!==void 0&&s.startIndex>=n)break;o(s),$g.has(s.type)&&r(s.childForFieldName("body")?.startIndex);let a;for(let l of s.namedChildren){if(n!==void 0&&l.startIndex>=n)break;o(l),$g.has(l.type)&&(a===void 0&&(a=s.childForFieldName("value")??s.childForFieldName("right")),a?.startIndex===l.startIndex&&r(l.childForFieldName("body")?.startIndex))}}if(n===void 0&&t.startsWith("end",e.endIndex-3)){let s=e.children,a=s.length-1;if(s[a]?.type==="end"){for(;a>0&&s[a-1].type===";";)a--;r(s[a].startIndex)}}return n}function Wk(e,t,n){let r=[],o=s=>{for(let a of s.namedChildren){if(a.startIndex>=n)return;a.endIndex<=t||(Ma.test(a.type)?r.push(a):ks.test(a.type)||o(a))}};return o(e),r}function Yn(e,t){let n=e.startIndex,r=Math.min(Dk(e,t)??e.endIndex,n+Lk),o=t.slice(n,r),s="",a=n;for(let l of jk.test(o)?Wk(e,n,r):[])for(s=Fg(s,t.slice(a,Math.max(a,l.startIndex)).replace(/[ \t]+$/,"")),a=Math.min(l.endIndex,r);a|=)$/,"").trim().slice(0,Pk)}var Ok,Nk,$g,Pk,Lk,jk,Fg,Og=z(()=>{"use strict";I();Aa();Ok=new Set(["block","statement_block","class_body","declaration_list","field_declaration_list","template_body","compound_statement","body_statement","enum_body","enum_body_declarations","enum_variant_list","enum_member_declaration_list","enumerator_list","interface_body","object_type","do_block","struct_declaration","enum_declaration","union_declaration","error_set_declaration","opaque_declaration","contract_body","enum_class_body"]),Nk=new Map([["interface_type",e=>e.namedChildren.some(t=>t.type==="method_elem")?Tg(e):void 0],["macro_definition",e=>Tg(e)],["preproc_function_def",e=>e.childForFieldName("value")?.startIndex]]);$g=new Set(["arrow_function","function_expression","function","generator_function","function_definition","lambda","lambda_expression"]),Pk=400,Lk=4096;jk=/\/[/*]|#|--|=begin/;Fg=(e,t)=>e&&t&&!/[\s([{]$/.test(e)&&!/^[\s,;)\]}]/.test(t)?`${e} ${t}`:e+t});function Td(e){return e.replace(/^['"`]|['"`]$/g,"")}function zk(e,t){if(e.type==="import_statement"){let n=e.childForFieldName("source");if(!n)return;let r=Td(n.text);for(let o of e.namedChildren)if(o.type==="import_clause"){for(let s of o.namedChildren)if(s.type==="identifier")t.push({local:s.text,name:"default",from:r});else if(s.type==="namespace_import"){let a=s.namedChildren.find(l=>l.type==="identifier");a&&t.push({local:a.text,name:"*",from:r})}else if(s.type==="named_imports")for(let a of s.namedChildren){if(a.type!=="import_specifier")continue;let l=a.childForFieldName("name")?.text,c=a.childForFieldName("alias")?.text;l&&c&&c!==l&&t.push({local:c,name:Td(l),from:r})}}}else if(e.type==="export_statement"&&e.children.some(n=>n.type==="default")){let n=e.childForFieldName("declaration"),r=n?n.childForFieldName("name")?.text:e.childForFieldName("value")?.type==="identifier"?e.childForFieldName("value").text:void 0;r&&t.push({local:"default",name:r})}}function Ng(e,t){if(e.type==="import_statement"){for(let n of e.namedChildren)if(n.type==="dotted_name"){let r=n.namedChildren[0]?.text;r&&t.push({local:r,name:"*",from:r})}else if(n.type==="aliased_import"){let r=n.childForFieldName("name")?.text,o=n.childForFieldName("alias")?.text;r&&o&&t.push({local:o,name:"*",from:r})}}else if(e.type==="import_from_statement"){let n=e.childForFieldName("module_name")?.text;if(!n)return;for(let r of e.namedChildren){if(r.type!=="aliased_import")continue;let o=r.childForFieldName("name")?.text,s=r.childForFieldName("alias")?.text;o&&s&&s!==o&&t.push({local:s,name:o,from:n})}}else if(Uk.has(e.type))for(let n of e.namedChildren)Ng(n,t)}function Pg(e,t){if(e.type==="import_declaration"||e.type==="import_spec_list")for(let n of e.namedChildren)Pg(n,t);else if(e.type==="import_spec"){let n=e.childForFieldName("name"),r=e.childForFieldName("path");n?.type==="package_identifier"&&r&&t.push({local:n.text,name:"*",from:Td(r.text)})}}function Lg(e,t){let n=t==="typescript"||t==="javascript"?zk:t==="python"?Ng:t==="go"?Pg:void 0;if(!n)return[];let r=[];for(let a of e.namedChildren)n(a,r);let o=new Set,s=[];for(let a of r.sort((l,c)=>$(l.local,c.local)||$(l.name,c.name)||$(l.from??"",c.from??""))){let l=`${a.local}\0${a.name}\0${a.from??""}`;if(!o.has(l)&&(o.add(l),s.push(a),s.length>=Bk))break}return s}var Bk,Uk,Dg=z(()=>{"use strict";I();le();Bk=256,Uk=new Set(["if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement","block"])});function aE(e){let t=Wg.get(e);return t===void 0&&(t=(eE.test(e)?Bg:0)|(Ma.test(e)?Ug:0)|(nE.test(e)?Oa:0)|(rE.test(e)?zg:0)|(sE.test(e)?Hg:0),Wg.set(e,t)),t}function lE(e){return e.namedChildren.every(t=>iE.test(t.type))}function cE(e){let t=e.parent;return t!==null&&t.type==="expression_statement"&&t.namedChildCount===1}function Na(e,t){let n=e.slice();if(e.length>t){let r=new Uint8Array(e.length),o=new Set,s=0;for(let a=0;ar[l]===1)}return n.sort((r,o)=>$(r.name,o.name)||r.line-o.line||$(r.receiver??"",o.receiver??""))}function dE(e,t,n,r){let o=new Set,s=t.calls!==void 0,a=[],l=new Set,c=(h,_,y)=>{if(!h||h==="_"||!/^[A-Za-z_]\w*$/.test(h))return;let b=_.startPosition.row+1,x=`${h} ${b} ${y??""}`;l.has(x)||(l.add(x),a.push(y?{name:h,line:b,receiver:y}:{name:h,line:b}))},d=new Set,u=h=>{if(!(d.size>=jg))for(let _ of mn(h)){if(d.size>=jg)return;d.add(_)}},f=new Kn,m=t.imports?.import_statement!==void 0,p=new Set,g=[e];for(;g.length;){let h=g.pop(),_=h.type,y=h.namedChildren,b=aE(_);if(y.length===0&&b&Bg){let k=h.text;tE.test(k)&&!n.has(k)&&o.add(k)}let x=b&Oa?lE(h):!1;if(b&Ug)for(let k of h.text.split(/\r?\n/))u(Dt(k));else if(b&Oa&&h.endIndex-h.startIndex<=Jk)if(x)u(cd(h.text));else for(let k of y)oE.test(k.type)&&u(k.text);if(f.full||(b&Oa?x&&!cE(h)&&f.addString(h.text,h.startPosition.row+1):y.length===0&&b&zg?f.add("number",h.text.trim(),h.startPosition.row+1):b&Hg&&f.add("regex",h.text,h.startPosition.row+1)),s&&!(t.kindFrom?.[_]&&t.kindFrom[_](h))&&!t.skipCall?.(h)){let k=t.calls[_];if(k==="function"){let v=h.childForFieldName("function")??h.childForFieldName("callee")??h.childForFieldName("method")??h.childForFieldName("name")??h.childForFieldName("target")??y[0]??null,T=v&&t.calls[v.type]==="function"?v.childForFieldName("function"):null;c(Ir(v),h,Ri(T??v)??Ri(h))}else if(k==="member")c(Ir(h.childForFieldName("name")),h,Ri(h));else if(k==="constructor"){let v=h.childForFieldName("constructor")??h.childForFieldName("type")??h.childForFieldName("name");for(let T=0;!v&&T=0;k--)g.push(y[k])}return{idents:[...o].slice(0,Hk).sort(),calls:Na(a,r),importedNames:[...p].slice(0,Gk).sort($),terms:[...d].sort($),literals:f.result()??[]}}function fE(e,t){let n=(r,o)=>{for(let s of r.namedChildren)if(s.namedChildren.length===0){if(s.text===t)return s.startIndex}else if(o<3&&!uE.test(s.type)){let a=n(s,o+1);if(a!==void 0)return a}};return n(e,0)}function Qn(e){let t=e.endPosition;return t.column===0&&t.row>e.startPosition.row?t.row:t.row+1}function mE(e){let t=[],n=r=>{if(/^(shorthand_property_identifier_pattern|identifier)$/.test(r.type)){t.includes(r.text)||t.push(r.text);return}if(r.type==="pair_pattern"){let o=r.childForFieldName("value");o&&n(o);return}for(let o of r.namedChildren)n(o)};for(let r of e.namedChildren)n(r);return t}function $d(e,t,n,r={}){let o=va(t,n);if(!o||!Le(o))return;let s=Id[o];if(!s)return;let a=Ss(o);if(!a)return;let l=Id[Ar(t)??o]?.lang??s.lang,c=null;try{if(c=a.parse(n),!c)return;let d=r.maxSymbols??qk,u=[],f=c.rootNode,m=(e.split("/").pop()??"").replace(/\.[^.]+$/,""),p=new Map,g=U=>U.parentPath??U.parent??"",h=(U,B)=>{let G=g(B),ee=p.get(G);ee||p.set(G,ee=new Set),ee.add(U)},_=U=>{u.length{let ee=s.relationsFrom?.[G];if(ee)for(let ce of ee(U,{self:B})){if(ce.from===ce.to)continue;let ke=`${ce.kind} ${ce.from} ${ce.to}`;x.has(ke)||b.length>=Vk||(x.add(ke),b.push(ce))}},v=(U,B,G,ee)=>{if(ee.inFunctionBody||s.privateMember?.(U)===!0)return!1;if(s.publicMember?.(U)===!0)return!0;if(!ee.sectionPublic)return!1;if(ee.forcePublic||ee.exported)return!0;let ce=fE(U,G);return s.exported(B,G,ce===void 0?B:n.slice(U.startIndex,ce))},T=U=>s.docFrom?.(U)??(s.docstring?fg(U):void 0)??Zn(U),F=(U,B)=>{let G=B.sectionPublic,ee=s.bareMembers?.[U.type];for(let ce of U.namedChildren){if(s.sectionVisibility){let qe=s.sectionVisibility(ce);if(qe!==void 0){G=qe;continue}}let ke=G===B.sectionPublic?B:{...B,sectionPublic:G},rt=s.inlineVisibility?.(ce);if(rt)for(let qe of rt.nodes)R(qe,ee,{...ke,sectionPublic:rt.public});else R(ce,ee,ke)}},R=(U,B,G)=>{if(B&&U.namedChildren.length===0&&ks.test(U.type)){_({name:U.text,kind:B,file:e,line:U.startPosition.row+1,endLine:Qn(U),...G.parent?{parent:G.parent}:{},exported:G.forcePublic||G.exported,lang:l});return}let ee=s.extraMembers?.(U,{ownerKind:G.ownerKind,inFunctionBody:G.inFunctionBody,publicNames:y});for(let ce of ee??[]){let ke=ce.node??U,rt=Yn(ke,n),qe=s.docFrom?.(ke)??Zn(ke);_({name:ce.name,kind:ce.kind,file:e,line:ke.startPosition.row+1,endLine:Qn(ke),...G.parent?{parent:G.parent}:{},...G.parentPath&&G.parentPath!==G.parent?{parentPath:G.parentPath}:{},signature:rt,...qe?{doc:qe}:{},exported:v(ke,rt,ce.name,G),lang:l})}E(U,G)},C=(U,B,G,ee,ce)=>{let ke=Ad.has(B);return{parent:U,parentPath:G?`${G}/${U}`:U,ownerKind:B,exported:ce,forcePublic:Cg.has(B),inFunctionBody:ee.inFunctionBody||ke,funcDepth:ee.funcDepth+(ke?1:0),sectionPublic:!0}},A=(U,B)=>{let G=s.bodyFrom?.[U.type]?.(U);if(G)return A(G,B);let ee=!1;for(let ce of U.namedChildren)s.containers.has(ce.type)&&(ee=!0,F(ce,B));!ee&&s.containers.has(U.type)&&F(U,B)},S=(U,B,G,ee,ce)=>{k(U,B,U.type==="class"?"class_declaration":U.type),A(U,C(B,G,ee.parentPath,ee,ce))},w=0,E=(U,B)=>{if(!(w>=Xk)){w++;try{P(U,B)}finally{w--}}},P=(U,B)=>{if(B.funcDepth>Kk)return;let G=U.type,ee=s.exportMarkers?.has(G)===!0,ce=B.exported||ee;if(G==="export_statement"&&!U.childForFieldName("source")){for(let _e of U.namedChildren)if(_e.type==="identifier")h(_e.text,B);else if(_e.type==="export_clause")for(let me of _e.namedChildren){let he=me.childForFieldName("name")??me.namedChildren[0];he?.text&&h(he.text,B)}}if(G==="export_statement"&&m&&U.children.some(_e=>_e.type==="default"))for(let _e of U.namedChildren){let me=Yk.has(_e.type),he=Qk.has(_e.type);if((me||he)&&!_e.childForFieldName("name")){let Z=Zn(U),K=he?"class":"function";_({name:m,kind:K,file:e,line:U.startPosition.row+1,endLine:Qn(U),signature:Yn(U,n),...Z?{doc:Z}:{},exported:!0,lang:l}),S(_e,m,K,B,!0);return}}if(s.assignments&&G==="expression_statement"){let _e=U.namedChildren[0];if(_e?.type==="assignment_expression"){let me=_e.childForFieldName("left"),he=_e.childForFieldName("right");if(me?.type==="member_expression"&&me.text==="module.exports"&&he){if(he.type==="object"){for(let K of he.namedChildren)if(K.type==="shorthand_property_identifier")h(K.text,B);else if(K.type==="pair"){let J=K.childForFieldName("key"),X=K.childForFieldName("value");J?.type==="property_identifier"&&h(J.text,B),X?.type==="identifier"&&h(X.text,B)}return}if(he.type==="identifier"){h(he.text,B);return}}let Z=he&&Fa.has(he.type);if(me&&he&&Z){let K,J=!1;if(me.type==="member_expression"&&me.text==="module.exports")K=he.childForFieldName("name")?.text??(m||void 0),J=!0;else if(me.type==="member_expression"){let X=me.childForFieldName("property");if(X?.type==="property_identifier"){K=X.text;let V=me.text.slice(0,me.text.length-X.text.length-1);J=V==="exports"||V==="module.exports"}}else me.type==="identifier"&&(K=me.text);if(K){let X=Zn(U),V=he.type==="class"?"class":"function",te=!B.inFunctionBody&&(ce||J);_({name:K,kind:V,file:e,line:_e.startPosition.row+1,endLine:Qn(_e),...B.parent?{parent:B.parent}:{},signature:Yn(_e,n),...X?{doc:X}:{},exported:te,lang:l}),S(he,K,V,B,te);return}}else if(me?.type==="member_expression"&&he){let K=me.childForFieldName("property");if(K?.type==="property_identifier"){let J=me.text.slice(0,me.text.length-K.text.length-1);if(J==="exports"||J==="module.exports"){he.type==="identifier"&&h(he.text,B),(he.type!=="identifier"||he.text!==K.text)&&_({name:K.text,kind:"const",file:e,line:_e.startPosition.row+1,endLine:Qn(_e),...B.parent?{parent:B.parent}:{},signature:Yn(_e,n),exported:!0,lang:l});return}}}}}if(s.assignments&&G==="assignment_statement"){let _e=U.children.find(J=>J.type==="variable_list"),me=U.children.find(J=>J.type==="expression_list"),he=_e?.namedChildren??[],Z=me?.namedChildren??[],K=Math.min(he.length,Z.length);for(let J=0;JK.type==="object_pattern"||K.type==="array_pattern");if(he&&!B.inFunctionBody){let K=Yn(U,n),J=T(U);for(let X of mE(he))_({name:X,kind:qe,file:e,line:U.startPosition.row+1,endLine:Qn(U),...B.parent?{parent:B.parent}:{},signature:K,...J?{doc:J}:{},exported:v(U,K,X,{...B,exported:ce}),lang:l});return}let Z=Ad.has(qe)||Zk.has(qe)||s.nestedDefs?.has(G)===!0||Fa.has(U.childForFieldName("value")?.type??"");if(me&&(!B.inFunctionBody||Z)){let K=Yn(U,n),J=T(U),X=ke??B.parent,V=ke??B.parentPath,te=s.namesFrom?.[G]?.(U);for(let de of te&&te.length>1?te:[me])_({name:de,kind:qe,file:e,line:U.startPosition.row+1,endLine:Qn(U),...X?{parent:X}:{},...V&&V!==X?{parentPath:V}:{},signature:K,...J?{doc:J}:{},exported:v(U,K,de,{...B,exported:ce}),lang:l});k(U,me),A(U,C(me,qe,V,B,ce));return}}if(k(U,ke??B.parent),s.containers.has(G)){let _e=B.forcePublic||s.publicMembersIn?.[G]?.(U)===!0,me=Fa.has(G);F(U,{...B,exported:ce,forcePublic:_e,inFunctionBody:B.inFunctionBody||me,funcDepth:B.funcDepth+(me?1:0),...ke?{parent:ke,parentPath:ke,ownerKind:"type"}:{},...s.sectionScopes?.has(G)?{sectionPublic:!0}:{}})}};if(F(f,{exported:!1,forcePublic:!1,inFunctionBody:!1,funcDepth:0,sectionPublic:!0}),p.size)for(let U of u)!U.exported&&p.get(g(U))?.has(U.name)&&(U.exported=!0);if(y){for(let G of u)G.parent===void 0&&(G.exported=y.has(G.name));let U=new Set(u.filter(G=>G.parent===void 0&&G.kind!=="reexport").map(G=>G.name)),B=0;for(let G of u)(G.parent!==void 0||G.kind!=="reexport"||!U.has(G.name))&&(u[B++]=G);u.length=B}let{idents:N,calls:L,importedNames:H,terms:Y,literals:oe}=dE(f,s,new Set(u.map(U=>U.name)),r.maxCalls??Ai),ge=r.imports!==!1,Se=ge?pi(t,n):[],Ce=ge?ua(t,n):void 0;return b.sort((U,B)=>$(U.from,B.from)||$(U.kind,B.kind)||$(U.to,B.to)),{symbols:u,refs:Se,pkg:Ce,idents:N,calls:L,importedNames:H,importAliases:Lg(f,s.lang),relations:b,terms:Y,literals:oe,...u.length>=d?{truncated:!0}:{}}}catch(d){r.onFailure?.(d);return}finally{c?.delete()}}var Hk,Ai,Gk,qk,Vk,jg,Jk,Kk,Xk,Zk,Yk,Qk,eE,tE,nE,rE,sE,iE,oE,Bg,Ug,Oa,zg,Hg,Wg,uE,Fd=z(()=>{"use strict";I();ya();le();pt();Aa();Ig();Og();Ed();Dg();ai();ft();et();Hk=512,Ai=8192,Gk=256,qk=2e3,Vk=256,jg=512,Jk=80,Kk=2,Xk=256,Zk=new Set(["class","struct","enum","interface","trait","type","record","union"]),Yk=new Set(["function","function_expression","function_declaration","generator_function","generator_function_declaration","arrow_function"]),Qk=new Set(["class","class_declaration","abstract_class_declaration"]),eE=/identifier|constant|(^|_)name$/,tE=/^[A-Za-z_]\w{4,}$/,nE=/(^|_)string(_literal)?$/,rE=/(^|_)(integer|float|number|decimal|numeric)(_literal)?$/,sE=/(^|_)(regex|regular_expression)(_pattern|_literal)?$/,iE=/(^|_)(fragment|content|escape_sequence|character|start|end)$/,oE=/(^|_)(fragment|content)$/,Bg=1,Ug=2,Oa=4,zg=8,Hg=16,Wg=new Map;uE=/annotation|attribute|decorator|modifier|parameter|argument|body|block|string|comment|_list$/});function Nd(e,t){let n=t.exec(e);return n?(n[1]??n[2]??n[3]??"").trim().toLowerCase():void 0}function Pd(e){return e.replace(/[^\r\n]/g," ")}function Gg(e,t,n){let r="",o=0;for(let[a,l]of t){let c=e.slice(o,a),d=e.slice(a,l);r+=n?Pd(c)+d:c+Pd(d),o=l}let s=e.slice(o);return r+(n?Pd(s):s)}function SE(e,t){let n=[],r=1,o=0,s=a=>{for(let l=e.indexOf(` +${a}`)}let s=o.clone();try{n=await WebAssembly.compileStreaming(o)}catch(a){console.error("wasm streaming compile failed:",a),console.error("falling back to ArrayBuffer instantiation"),n=new Uint8Array(await s.arrayBuffer())}}let r=await A.loadWebAssemblyModule(n,{loadAsync:!0});return Sa.loadFromWasmExports(r,{sync:!1})}static loadFromWasmExports(t,{sync:n}){let r=Object.keys(t),o=r.find(a=>dk.test(a)&&!a.includes("external_scanner_"));if(!o)throw console.log(`Couldn't find language function in Wasm file. Symbols: +${JSON.stringify(r,null,2)}`),new Error(`Language.${n?"loadSync":"load"} failed: no language function found in Wasm file`);let s=t[o]();return new Sa(Yn,s)}static loadSync(t){let n=A.loadWebAssemblyModule(t,{loadAsync:!1});return Sa.loadFromWasmExports(n,{sync:!0})}};D(Yp,"Module");uk=Yp,Qp=null;D(eg,"initializeBinding");D(tg,"checkModule");Hp=bs(e=>{A._ts_parser_delete(e[0]),A._free(e[1])}),wd=class{static{D(this,"Parser")}0=0;1=0;logCallback=null;language=null;static async init(e){Vp(await eg(e)),Y=A._ts_init(),pd=A.getValue(Y,"i32"),gd=A.getValue(Y+ee,"i32")}constructor(){this.initialize(),Hp?.register(this,[this[0],this[1]],this)}initialize(){if(!tg())throw new Error("cannot construct a Parser before calling `init()`");A._ts_parser_new_wasm(),this[0]=A.getValue(Y,"i32"),this[1]=A.getValue(Y+ee,"i32")}delete(){Hp?.unregister(this),A._ts_parser_delete(this[0]),A._free(this[1]),this[0]=0,this[1]=0}setLanguage(e){let t;if(!e)t=0,this.language=null;else if(e.constructor===bd){t=e[0];let n=A._ts_language_abi_version(t);if(ne.slice(l);else if(typeof e=="function")A.currentParseCallback=e;else throw new Error("Argument must be a string or a function");n?.progressCallback?A.currentProgressCallback=n.progressCallback:A.currentProgressCallback=null,this.logCallback?(A.currentLogCallback=this.logCallback,A._ts_parser_enable_logger_wasm(this[0],1)):(A.currentLogCallback=null,A._ts_parser_enable_logger_wasm(this[0],0));let r=0,o=0;if(n?.includedRanges){r=n.includedRanges.length,o=A._calloc(r,ki);let l=o;for(let c=0;c0){let r=t;for(let o=0;oe.type==="capture","isCaptureStep"),xd=D(e=>e.type==="string","isStringStep"),on={Syntax:1,NodeName:2,FieldName:3,CaptureName:4,PatternStructure:5},xi=class ng extends Error{constructor(t,n,r,o){super(ng.formatMessage(t,n)),this.kind=t,this.info=n,this.index=r,this.length=o,this.name="QueryError"}kind;info;index;length;static{D(this,"QueryError")}static formatMessage(t,n){switch(t){case on.NodeName:return`Bad node name '${n.word}'`;case on.FieldName:return`Bad field name '${n.word}'`;case on.CaptureName:return`Bad capture name @${n.word}`;case on.PatternStructure:return`Bad pattern structure at offset ${n.suffix}`;case on.Syntax:return`Bad syntax at offset ${n.suffix}`}}};D(rg,"parseAnyPredicate");D(sg,"parseMatchPredicate");D(ig,"parseAnyOfPredicate");D(og,"parseIsPredicate");D(ag,"parseSetDirective");D(lg,"parsePattern");qp=bs(e=>{A._ts_query_delete(e)}),cg=class{static{D(this,"Query")}0=0;exceededMatchLimit;textPredicates;captureNames;captureQuantifiers;predicates;setProperties;assertedProperties;refutedProperties;matchLimit;constructor(e,t){let n=A.lengthBytesUTF8(t),r=A._malloc(n+1);A.stringToUTF8(t,r,n+1);let o=A._ts_query_new(e[0],r,n,Y,Y+ee);if(!o){let _=A.getValue(Y+ee,"i32"),y=A.getValue(Y,"i32"),b=A.UTF8ToString(r,y).length,S=t.slice(b,b+100).split(` +`)[0],k=S.match(pk)?.[0]??"";switch(A._free(r),_){case on.Syntax:throw new xi(on.Syntax,{suffix:`${b}: '${S}'...`},b,0);case on.NodeName:throw new xi(_,{word:k},b,k.length);case on.FieldName:throw new xi(_,{word:k},b,k.length);case on.CaptureName:throw new xi(_,{word:k},b,k.length);case on.PatternStructure:throw new xi(_,{suffix:`${b}: '${S}'...`},b,0)}}let s=A._ts_query_string_count(o),a=A._ts_query_capture_count(o),l=A._ts_query_pattern_count(o),c=new Array(a),d=new Array(l),u=new Array(s);for(let _=0;_s)throw new Error("`startIndex` cannot be greater than `endIndex`");if(r!==kt&&(n.row>r.row||n.row===r.row&&n.column>r.column))throw new Error("`startPosition` cannot be greater than `endPosition`");if(d!==0&&c>d)throw new Error("`startContainingIndex` cannot be greater than `endContainingIndex`");if(l!==kt&&(a.row>l.row||a.row===l.row&&a.column>l.column))throw new Error("`startContainingPosition` cannot be greater than `endContainingPosition`");m&&(A.currentQueryProgressCallback=m),de(e),A._ts_query_matches_wasm(this[0],e.tree[0],n.row,n.column,r.row,r.column,o,s,a.row,a.column,l.row,l.column,c,d,u,f);let p=A.getValue(Y,"i32"),g=A.getValue(Y+ee,"i32"),h=A.getValue(Y+2*ee,"i32"),_=new Array(p);this.exceededMatchLimit=!!h;let y=0,b=g;for(let S=0;SP(I))){_[y]={patternIndex:k,captures:I};let P=this.setProperties[k];_[y].setProperties=P;let v=this.assertedProperties[k];_[y].assertedProperties=v;let C=this.refutedProperties[k];_[y].refutedProperties=C,y++}}return _.length=y,A._free(g),A.currentQueryProgressCallback=null,_}captures(e,t={}){let n=t.startPosition??kt,r=t.endPosition??kt,o=t.startIndex??0,s=t.endIndex??0,a=t.startContainingPosition??kt,l=t.endContainingPosition??kt,c=t.startContainingIndex??0,d=t.endContainingIndex??0,u=t.matchLimit??4294967295,f=t.maxStartDepth??4294967295,m=t.progressCallback;if(typeof u!="number")throw new Error("Arguments must be numbers");if(this.matchLimit=u,s!==0&&o>s)throw new Error("`startIndex` cannot be greater than `endIndex`");if(r!==kt&&(n.row>r.row||n.row===r.row&&n.column>r.column))throw new Error("`startPosition` cannot be greater than `endPosition`");if(d!==0&&c>d)throw new Error("`startContainingIndex` cannot be greater than `endContainingIndex`");if(l!==kt&&(a.row>l.row||a.row===l.row&&a.column>l.column))throw new Error("`startContainingPosition` cannot be greater than `endContainingPosition`");m&&(A.currentQueryProgressCallback=m),de(e),A._ts_query_captures_wasm(this[0],e.tree[0],n.row,n.column,r.row,r.column,o,s,a.row,a.column,l.row,l.column,c,d,u,f);let p=A.getValue(Y,"i32"),g=A.getValue(Y+ee,"i32"),h=A.getValue(Y+2*ee,"i32"),_=new Array;this.exceededMatchLimit=!!h;let y=new Array,b=g;for(let S=0;SP(y))){let P=y[I],v=this.setProperties[k];P.setProperties=v;let C=this.assertedProperties[k];P.assertedProperties=C;let M=this.refutedProperties[k];P.refutedProperties=M,_.push(P)}}return A._free(g),A.currentQueryProgressCallback=null,_}predicatesForPattern(e){return this.predicates[e]}disableCapture(e){let t=A.lengthBytesUTF8(e),n=A._malloc(t+1);A.stringToUTF8(e,n,t+1),A._ts_query_disable_capture(this[0],n,t),A._free(n)}disablePattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);A._ts_query_disable_pattern(this[0],e)}didExceedMatchLimit(){return this.exceededMatchLimit}startIndexForPattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);return A._ts_query_start_byte_for_pattern(this[0],e)}endIndexForPattern(e){if(e>=this.predicates.length)throw new Error(`Pattern index is ${e} but the pattern count is ${this.predicates.length}`);return A._ts_query_end_byte_for_pattern(this[0],e)}patternCount(){return A._ts_query_pattern_count(this[0])}captureIndexForName(e){return this.captureNames.indexOf(e)}isPatternRooted(e){return A._ts_query_is_pattern_rooted(this[0],e)===1}isPatternNonLocal(e){return A._ts_query_is_pattern_non_local(this[0],e)===1}isPatternGuaranteedAtStep(e){return A._ts_query_is_pattern_guaranteed_at_step(this[0],e)===1}}});function Ir(e){return Ri[e]}function Ra(e,t){let n=Ri[e];return e===".h"&&hk.test(t)?"cpp":n}function xs(){let e=F.env.XDG_CACHE_HOME,t=e&&e.trim()?e.trim():j(ba(),".cache");return j(t,"codeindex","grammars",Ie)}function Wt(e={}){let t=xs(),n=F.env.CODEINDEX_GRAMMARS_DIR,r=n&&n.trim()&&Q(n)?n:void 0,o=Q(t)?t:void 0,s=(d,u,f)=>{let m=j(u,"..",yk),p=[];for(let g of[u,Q(m)?m:void 0,...f])g!==void 0&&!p.includes(g)&&p.push(g);return{tier:d,dir:u,cacheDir:t,dirs:p}},a=F.env.CODEINDEX_GRAMMAR_DIR??F.env.ULTRAINDEX_GRAMMAR_DIR;if(a&&a.trim()&&Q(a))return s("env",a,[]);let l=e.moduleDir??Ce(xa(import.meta.url)),c=[j(l,"grammars"),j(l,"..","..","scripts","grammars"),j(l,"..","scripts","grammars")];for(let d of c)if(Q(d))return s("adjacent",d,[r,o]);return r?s("env",r,[o]):o?s("cache",o,[]):{tier:"none",cacheDir:t,dirs:[]}}function Ca(){let{dirs:e}=Wt(),t=n=>e.some(r=>Q(j(r,n)));return t("web-tree-sitter.wasm")?new Set(Ma().filter(n=>t(`${n}.wasm`))):new Set}function _k(e){return Wt(e).dir}async function an(e){let{dirs:t}=Wt();if(!t.length)return;let n=r=>{for(let o of t){let s=j(o,r);if(Q(s))return s}};if(!dg){let r=n("web-tree-sitter.wasm");if(!r)return;await wd.init({wasmBinary:ie(r)}),dg=!0,va=new wd}for(let r of new Set(e)){if(Ei.has(r))continue;let o=n(`${r}.wasm`),s=o?(()=>{try{let a=Me(o);return`${o}:${a.size}:${a.mtimeMs}`}catch{return`${o}:unreadable`}})():`missing:${t.join("|")}`;if(Ea.get(r)!==s){if(!o){Ea.set(r,s);continue}try{Ei.set(r,await bd.load(new Uint8Array(ie(o)))),Ea.delete(r)}catch{Ea.set(r,s)}}}}function Ma(){return[...new Set(Object.values(Ri))]}function Bt(e){let t=new Set;for(let n of e){for(let o of gk[n]??[])t.add(o);let r=Ri[n];r!==void 0&&t.add(r),n===".h"&&t.add("cpp")}return[...t].sort()}function De(e){return Ei.has(e)}function kd(e){return Ei.get(e)}function Ss(e){let t=Ei.get(e);return!va||!t?null:(va.setLanguage(t),va)}var vi,ws,Ri,gk,hk,yk,dg,va,Ei,Ea,pt=H(()=>{"use strict";$();ke();bi();me();wi();Sd();bt();vi=new Set(["typescript","tsx","javascript","python","go","rust","java","ruby","c","cpp","c_sharp","php","scala","bash","lua"]),ws=new Set(["kotlin","elixir","zig","hcl","terraform","solidity"]),Ri={".ts":"typescript",".mts":"typescript",".cts":"typescript",".tsx":"tsx",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".go":"go",".rs":"rust",".java":"java",".rb":"ruby",".rake":"ruby",".c":"c",".h":"c",".cc":"cpp",".cpp":"cpp",".cxx":"cpp",".hpp":"cpp",".hh":"cpp",".cs":"c_sharp",".php":"php",".scala":"scala",".sc":"scala",".sh":"bash",".bash":"bash",".lua":"lua",".kt":"kotlin",".kts":"kotlin",".ex":"elixir",".exs":"elixir",".zig":"zig",".hcl":"hcl",".tf":"terraform",".tfvars":"terraform",".sol":"solidity"},gk={".vue":["javascript","tsx","typescript"],".svelte":["javascript","tsx","typescript"],".astro":["typescript"]};hk=/^[ \t]*(?:namespace(?:[ \t]+[A-Za-z_][\w:]*)?\s*\{|using[ \t]+namespace[ \t]|template[ \t]*<|class[ \t]+(?:[A-Z_][A-Z0-9_]*[ \t]+)?[A-Za-z_]\w*(?:[ \t]+final)?[ \t]*(?:[:;{]|$)|(?:public|private|protected)[ \t]*:(?!:)|#[ \t]*include[ \t]*<[a-z_]+>|extern[ \t]+"C\+\+")/m;yk="grammars-extended";dg=!1,va=null,Ei=new Map,Ea=new Map});function Tt(e,t){let n=[...e.namedChildren].reverse();for(;n.length;){let r=n.pop();if(t(r))return r;let o=r.namedChildren;for(let s=o.length-1;s>=0;s--)n.push(o[s])}}function ug(e){switch(e.type){case"operator_name":return e.text.replace(/\s+/g,"").replace(/^operator(?=\w)/,"operator ");case"operator_cast":{let t=e.text.split("(")[0].replace(/\s+/g," ").replace(/\s*([*&])\s*/g,"$1").trim();return t.length>8?t:void 0}case"destructor_name":return e.text.replace(/\s+/g,"")}}function Ed(e){return e.childForFieldName("declarator")??(bk.has(e.type)?e.namedChildren[0]??null:null)}function Tr(e){let t=e.childForFieldName("name");if(t?.text)return t.text;let n=e.childForFieldName("declarator");for(;n;){let s=n.childForFieldName("name");if(s?.text){if(s.type==="qualified_identifier"){n=s;continue}return ug(s)??s.text}if(n.namedChildren.length===0&&/(^|_)identifier$/.test(n.type))return n.text;let a=ug(n);if(a)return a;let l=Ed(n);if(!l||l===n)break;n=l}let o=Tt(e,s=>s.type==="variable_declarator")?.childForFieldName("name");if(o?.text)return o.text;for(let s of e.namedChildren)if(/(^|_)(identifier|name|constant)$/.test(s.type))return s.text}function $r(e){if(!e)return;let t=e.namedChildren;if(t.length===0)return ks.test(e.type)?e.text:void 0;let n=e.childForFieldName("name")??e.childForFieldName("property")??e.childForFieldName("attribute")??e.childForFieldName("field")??e.childForFieldName("function");if(n)return $r(n);let r=t[t.length-1];return r&&r!==e?$r(r):void 0}function Ci(e){if(!e||e.namedChildren.length===0)return;let t=e.childForFieldName("object")??e.childForFieldName("operand")??e.childForFieldName("value")??e.childForFieldName("path")??e.childForFieldName("expression")??e.childForFieldName("argument")??e.childForFieldName("receiver")??e.childForFieldName("table");if(t&&(t.type==="crate"||t.type==="super"))return t.type;let n=t?$r(t):void 0;return n&&/^[A-Za-z_]\w*$/.test(n)?n:void 0}function vt(e){if(!e)return;let t=e.childForFieldName("type")??e.childForFieldName("name");if(t&&/generic|qualified|scoped|nested/.test(e.type))return vt(t);if(e.namedChildren.length===0)return fg.test(e.type)?e.text:void 0;let n,r=o=>{if(o.namedChildren.length===0){fg.test(o.type)&&(n=o.text);return}if(!/arguments|parameters|argument_list/.test(o.type))for(let s of o.namedChildren)r(s)};return r(e),n}var ks,Aa,bk,fg,Ia=H(()=>{"use strict";$();ks=/(^|_)(identifier|name|constant|word)$/,Aa=/(^|_)comment$/;bk=new Set(["reference_declarator","parenthesized_declarator"]);fg=/identifier|constant|(^|_)name$/});function kk(e){let t=[],n=e.previousNamedSibling,r=e.startPosition.row;for(;n;){let s=wk.test(n.type);if(!s&&!Sk.test(n.type)||r-n.endPosition.row>1)break;s&&t.push(n),r=n.startPosition.row,n=n.previousNamedSibling}if(!t.length)return[];t.reverse();let o=[];for(let s of t)for(let a of s.text.split(/\r?\n/))o.push(Dt(a));return o}function Qn(e){let t=e;for(;t;){let n=kk(t);if(n.length){let s=Er(n);if(s)return s}let r=t.parent;if(!r||!xk.has(r.type))return;let o=t.previousNamedSibling;if(o&&!Ek.test(o.type))return;t=r}}function mg(e){let n=e.childForFieldName("body")?.namedChildren[0];if(!n)return;let r=n.type==="string"?n:n.type==="expression_statement"?n.namedChildren[0]:void 0;if(!(!r||r.type!=="string"))return Er(r.text.split(/\r?\n/).map(Dt))}var wk,xk,Sk,Ek,vd=H(()=>{"use strict";$();li();wk=/(^|_)comment$/,xk=new Set(["export_statement","ambient_declaration","decorated_definition","template_declaration","labeled_statement","lexical_declaration","variable_declaration","type_declaration","const_declaration","var_declaration","body_statement","body"]),Sk=/^(attribute_item|decorator)$/;Ek=/decorator|annotation|modifiers/});function lt(e){if(!e)return[];let t=[];for(let n of e.namedChildren){if(/arguments|parameters/.test(n.type))continue;let r=vt(n);r&&t.push(r)}return t}function pg(e,t){if(!t.self)return[];let n=qe(e,"class_heritage");if(!n)return[];let r=n.namedChildren.some(s=>s.type.endsWith("_clause")),o=[];for(let s of lt(r?qe(n,"extends_clause"):n))o.push(Ge("extends",t.self,s,e));for(let s of lt(qe(n,"implements_clause")))o.push(Ge("implements",t.self,s,e));return o}function Mi(e,t,n){return lt(e).map((o,s)=>Ge(s===0?"extends":"implements",t,o,n))}function Ak(e){for(let t=e.parent;t&&t.type!=="module";t=t.parent)if(t.type==="if_statement"&&Mk.test(t.childForFieldName("condition")?.text??""))return!0;return!1}function $k(e){let t=new Set,n=!1,r=c=>{if(c?.type!=="string"||c.namedChildren.some(u=>u.type==="interpolation"))return;let d=c.namedChildren.filter(u=>u.type==="string_content");return d.length<=1?d[0]?.text??"":void 0},o=c=>{if(c?.type!=="list"&&c?.type!=="tuple")return;let d=[];for(let u of c.namedChildren){let f=r(u);if(f===void 0)return;d.push(f)}return d},s=c=>c?.type==="identifier"&&c.text==="__all__",a=c=>{let d=c.namedChildren[0];if(!d)return[];if((d.type==="assignment"||d.type==="augmented_assignment")&&s(d.childForFieldName("left"))){if(d.type==="assignment")n=!0;else if(d.childForFieldName("operator")?.text!=="+=")return;return o(d.childForFieldName("right"))}let u=d.type==="call"?d.childForFieldName("function"):null;if(u?.type!=="attribute"||!s(u.childForFieldName("object")))return[];let f=d.childForFieldName("arguments")?.namedChildren,m=u.childForFieldName("attribute")?.text;if(m==="extend"&&f?.length===1)return o(f[0]);let p=m==="append"&&f?.length===1?r(f[0]):void 0;return p===void 0?void 0:[p]},l=c=>{for(let d of c.namedChildren){if(Ik.has(d.type)){if(!l(d))return!1;continue}if(d.type!=="expression_statement")continue;let u=a(d);if(u===void 0)return!1;for(let f of u)t.add(f)}return!0};return l(e)&&n?t:void 0}function wg(e){if(e.type!=="type_definition")return[];let t=Ad(e),n=t?.childForFieldName("name")?.text;return t&&n&&n!==Tr(e)?[{name:n,kind:Ag[t.type]}]:[]}function xg(e){if(e.childForFieldName("value"))return!1;let t=e.parent;return t?.type!=="preproc_ifdef"||t.namedChildCount<=2||t.childForFieldName("name")?.text!==e.childForFieldName("name")?.text?!1:t.firstChild?.type==="#ifndef"}function Sg(e){let t=e.childForFieldName("declarator");for(;t&&t.type!=="qualified_identifier";)t=Ed(t);let n=null;for(;t?.type==="qualified_identifier";)n=t.childForFieldName("scope"),t=t.childForFieldName("name");return n?vt(n):void 0}function kg(e,t){if(t)return/\b(val|var)\s*$/.exec(e.text.slice(0,t.startIndex-e.startIndex))?.[1]}function Fa(e){if(!e)return;if(e.type==="identifier")return{name:e.text};if(e.type!=="dot_index_expression"&&e.type!=="method_index_expression")return;let t=e.childForFieldName("table"),n=e.childForFieldName("field")??e.childForFieldName("method");return t&&n&&/^[\w.]+$/.test(t.text)?{name:n.text,table:t.text}:void 0}function Rg(e){if(e.childForFieldName("left")?.type!=="constant")return;let t=e.childForFieldName("right");if(t?.type==="call")return Fk[`${t.childForFieldName("receiver")?.text}.${t.childForFieldName("method")?.text}`]}function Nk(e,t){if(t.inFunctionBody||e.type!=="method_definition"||e.childForFieldName("name")?.text!=="constructor")return[];let n=[];for(let r of e.childForFieldName("parameters")?.namedChildren??[]){if(r.type!=="required_parameter"&&r.type!=="optional_parameter"||!r.children.some(s=>s.type==="accessibility_modifier"||s.type==="override_modifier"||s.type==="readonly"))continue;let o=r.childForFieldName("pattern");o?.type==="identifier"&&n.push({name:o.text,kind:"property",node:r})}return n}function Pk(e,t){if(t.inFunctionBody||e.type!=="method_declaration")return[];if(!/^__construct$/i.test(e.childForFieldName("name")?.text??""))return[];let n=[];for(let r of e.childForFieldName("parameters")?.namedChildren??[]){if(r.type!=="property_promotion_parameter")continue;let o=r.childForFieldName("name")?.text.replace(/^\$/,"");o&&n.push({name:o,kind:"property",node:r})}return n}var qe,Ge,Mg,Id,Oa,gg,Rd,vk,hg,yg,Rk,Ai,Ck,Mk,Ik,$a,Cd,_g,bg,Ta,Ag,Ad,Eg,Ig,Tk,vg,Fk,Ok,Cg,Md,$d,$g=H(()=>{"use strict";$();Ia();vd();qe=(e,t)=>e.namedChildren.find(n=>n.type===t),Ge=(e,t,n,r)=>({kind:e,from:t,to:n,line:r.startPosition.row+1});Mg=new Set(["interface","trait","enum","protocol","annotation"]),Id=new Set(["function","method","def","constructor","operator"]),Oa=new Set(["function","function_expression","arrow_function","generator_function","class","function_definition","lambda"]),gg=(e,t,n)=>/\b(public|internal)\b/.test(n),Rd=(e,t,n)=>!/\b(private|protected)\b/.test(n),vk=e=>!/^local\b/.test(e),hg=(e,t,n)=>/\bpub\b/.test(n),yg=(e,t)=>/^[A-Z]/.test(t),Rk=(e,t)=>!t.startsWith("_")||/^__\w+__$/.test(t),Ai=()=>!0,Ck=()=>!1,Mk=/^(__name__\s*==\s*(["'])__main__\2|(["'])__main__\3\s*==\s*__name__)$/;Ik=new Set(["block","if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement"]);$a=e=>Tt(e,t=>t.type==="function_declarator"||t.type==="operator_cast")!==void 0,Cd=e=>t=>t.childrenForFieldName(e).flatMap(n=>/identifier$/.test(n.type)?n.text:[]),_g=e=>(qe(e,"variable_declaration")?.namedChildren??[]).flatMap(t=>t.type==="variable_declarator"?t.childForFieldName("name")?.text??[]:[]),bg=e=>e.childrenForFieldName("declarator").flatMap(t=>t.childForFieldName("name")?.text??[]),Ta=e=>e.childrenForFieldName("declarator").flatMap(t=>t.namedChildren.length>0?Tr(t)??[]:/identifier$/.test(t.type)?t.text:[]),Ag={struct_specifier:"struct",union_specifier:"union",enum_specifier:"enum",class_specifier:"class"},Ad=e=>{let t=e.childForFieldName("type");return t&&Ag[t.type]&&t.childForFieldName("body")?t:void 0};Eg={defmodule:"module",defprotocol:"protocol",defimpl:"impl",defstruct:"struct",defexception:"exception",def:"function",defp:"function",defmacro:"macro",defmacrop:"macro",defguard:"guard",defguardp:"guard",defdelegate:"function"},Ig=e=>e.type==="binary_operator"&&e.childForFieldName("operator")?.text==="when",Tk=e=>Ig(e)?e.childForFieldName("left")??e:e;vg={public:!0,private:!1,protected:!1,module_function:!0,public_class_method:!0,private_class_method:!1},Fk={"Struct.new":"class","Class.new":"class","Data.define":"class","Module.new":"module"};Ok=new Set(["resource","data","variable","output","module","provider","locals","terraform"]),Cg={lang:"terraform",defs:{block:"block"},containers:new Set(["config_file","body"]),exported:Ai,kindFrom:{block:e=>{let t=e.namedChildren.find(n=>n.type==="identifier")?.text;return t&&Ok.has(t)?t:void 0}},nameFrom:{block:e=>{let t=e.namedChildren.filter(n=>n.type==="string_lit").map(n=>n.text.replace(/^"|"$/g,""));return t.length?t.join("."):e.namedChildren.find(n=>n.type==="identifier")?.text}}};Md={lang:"typescript",defs:{function_declaration:"function",generator_function_declaration:"function",function_signature:"function",class_declaration:"class",abstract_class_declaration:"class",interface_declaration:"interface",type_alias_declaration:"type",enum_declaration:"enum",enum_assignment:"enum-member",method_definition:"method",method_signature:"method",abstract_method_signature:"method",property_signature:"property",public_field_definition:"property",call_signature:"call-signature",construct_signature:"construct-signature",index_signature:"index-signature",internal_module:"namespace",module:"namespace",variable_declarator:"const"},containers:new Set(["class_body","export_statement","ambient_declaration","program","lexical_declaration","variable_declaration","interface_body","object_type","enum_body","statement_block","try_statement","catch_clause","finally_clause","if_statement","else_clause","for_statement","for_in_statement","while_statement","do_statement","switch_statement","switch_body","switch_case","switch_default","labeled_statement","return_statement","expression_statement","call_expression","arguments","arrow_function","function_expression","function","parenthesized_expression"]),exported:Ck,exportMarkers:new Set(["export_statement","ambient_declaration"]),bareMembers:{enum_body:"enum-member"},nameFrom:{call_signature:()=>"(call)",construct_signature:()=>"(construct)",index_signature:e=>`[${e.namedChildren.find(t=>t.type==="identifier")?.text??"key"}]`},privateMember:e=>{for(let t of e.namedChildren)if(t.type==="accessibility_modifier"&&/^(private|protected)/.test(t.text)||t.type==="private_property_identifier")return!0;return!1},imports:{import_statement:"string"},calls:{call_expression:"function",new_expression:"constructor"},assignments:!0,extraMembers:Nk,relationsFrom:{class_declaration:pg,abstract_class_declaration:pg,interface_declaration:(e,t)=>t.self?lt(qe(e,"extends_type_clause")).map(n=>Ge("extends",t.self,n,e)):[]}},$d={typescript:Md,tsx:{...Md,lang:"typescript"},javascript:{...Md,lang:"javascript",defs:{function_declaration:"function",generator_function_declaration:"function",class_declaration:"class",method_definition:"method",field_definition:"property",variable_declarator:"const"}},python:{lang:"python",defs:{function_definition:"function",class_definition:"class"},containers:new Set(["block","decorated_definition","module","if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement","match_statement","case_clause"]),exported:Rk,publicNames:$k,imports:{import_statement:"path",import_from_statement:"path"},calls:{call:"function"},docstring:!0,relationsFrom:{class_definition:(e,t)=>t.self?lt(e.childForFieldName("superclasses")).map(n=>Ge("extends",t.self,n,e)):[]},extraMembers:(e,t)=>{if(t.inFunctionBody)return[];if(e.type==="import_from_statement"){let s=[],a=e.childForFieldName("module_name");for(let l of e.namedChildren)if(!(a&&l.startIndex===a.startIndex))if(l.type==="aliased_import"){let c=l.namedChildren[0]?.text,d=l.childForFieldName("alias")?.text;d&&(c===d||t.ownerKind===void 0&&t.publicNames?.has(d))&&s.push({name:d,kind:"reexport"})}else l.type==="dotted_name"&&t.ownerKind===void 0&&t.publicNames?.has(l.text)&&s.push({name:l.text,kind:"reexport"});return s}if(e.type!=="expression_statement")return[];let n=e.namedChildren[0];if(!n||n.type!=="assignment")return[];if(Ak(e))return[];let r=[];for(let s=n;s?.type==="assignment";s=s.childForFieldName("right")){let a=s.childForFieldName("left");if(a?.type==="identifier")r.push(a.text);else if(a&&/^(pattern_list|tuple_pattern|list_pattern)$/.test(a.type))for(let l of a.namedChildren){let c=l.type==="list_splat_pattern"?l.namedChildren[0]:l;c?.type==="identifier"&&r.push(c.text)}}let o=t.ownerKind==="class"?"field":"const";return r.map(s=>({name:s,kind:o}))}},go:{lang:"go",defs:{function_declaration:"function",method_declaration:"method",type_spec:"type",type_alias:"type",const_spec:"const",var_spec:"var",field_declaration:"field",method_spec:"method",method_elem:"method",package_clause:"package"},containers:new Set(["type_declaration","const_declaration","var_declaration","var_spec_list","source_file","struct_type","interface_type","field_declaration_list"]),exported:yg,imports:{import_declaration:"string"},calls:{call_expression:"function"},parentFrom:{method_declaration:e=>vt(e.childForFieldName("receiver"))},nameFrom:{field_declaration:e=>e.childForFieldName("name")?.text},namesFrom:{var_spec:Cd("name"),const_spec:Cd("name"),field_declaration:Cd("name")},relationsFrom:{field_declaration:(e,t)=>{if(!t.self||e.childForFieldName("name"))return[];let n=vt(e.childForFieldName("type"));return n?[Ge("extends",t.self,n,e)]:[]}}},ruby:{lang:"ruby",defs:{method:"def",singleton_method:"def",class:"class",module:"module"},containers:new Set(["class","module","body_statement","program","singleton_class","block_body"]),sectionScopes:new Set(["singleton_class"]),exported:Ai,kindFrom:{assignment:Rg},nameFrom:{assignment:e=>e.childForFieldName("left")?.text},bodyFrom:{assignment:e=>e.childForFieldName("right")?.childForFieldName("block")?.childForFieldName("body")??void 0},inlineVisibility:e=>{if(e.type!=="call"||e.childForFieldName("receiver"))return;let t=vg[e.childForFieldName("method")?.text??""];if(t===void 0)return;let n=(e.childForFieldName("arguments")?.namedChildren??[]).filter(r=>r.type==="method"||r.type==="singleton_method"||r.type==="call");return n.length?{nodes:n,public:t}:void 0},docFrom:e=>{let t=e.parent?.type==="argument_list"?e.parent.parent:null;return t?.type==="call"&&vg[t.childForFieldName("method")?.text??""]!==void 0?Qn(t):void 0},calls:{call:"function"},sectionVisibility:e=>(e.type==="identifier"||e.type==="call")&&/^(private|protected)$/.test(e.text)?!1:e.type==="identifier"&&e.text==="public"?!0:void 0,relationsFrom:{class:(e,t)=>{if(!t.self)return[];let n=vt(e.childForFieldName("superclass"));return n?[Ge("extends",t.self,n,e)]:[]},call:(e,t)=>{let n=e.childForFieldName("method"),r=e.childForFieldName("receiver");if(!t.self||!n||!/^(include|prepend|extend)$/.test(n.text))return[];if(r&&r.type!=="self")return[];let o=[];for(let s of e.childForFieldName("arguments")?.namedChildren??[]){let a=vt(s);a&&o.push(Ge("implements",t.self,a,e))}return o}},extraMembers:(e,t)=>{if(t.inFunctionBody)return[];if(e.type==="assignment"){let n=e.childForFieldName("left");return n?.type==="constant"&&!Rg(e)?[{name:n.text,kind:"const"}]:[]}if(e.type==="call"){let n=e.childForFieldName("method");if(!n||!/^attr_(reader|writer|accessor)$/.test(n.text))return[];let r=e.childForFieldName("arguments"),o=[];for(let s of r?.namedChildren??[])s.type==="simple_symbol"&&o.push({name:s.text.replace(/^:/,""),kind:"attr"});return o}return[]}},java:{lang:"java",defs:{class_declaration:"class",interface_declaration:"interface",annotation_type_declaration:"annotation",enum_declaration:"enum",enum_constant:"enum-member",record_declaration:"record",method_declaration:"method",constructor_declaration:"constructor",compact_constructor_declaration:"constructor",field_declaration:"field",constant_declaration:"field",annotation_type_element_declaration:"method"},containers:new Set(["class_body","interface_body","enum_body","enum_body_declarations","annotation_type_body","program","formal_parameters"]),exported:gg,imports:{import_declaration:"path"},calls:{method_invocation:"function",object_creation_expression:"constructor"},kindFrom:{formal_parameter:e=>e.parent?.parent?.type==="record_declaration"?"field":void 0},publicMember:e=>e.parent?.parent?.type==="record_declaration",nameFrom:{field_declaration:e=>Tt(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,constant_declaration:e=>Tt(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text},namesFrom:{field_declaration:bg,constant_declaration:bg},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let o of lt(e.childForFieldName("superclass")))n.push(Ge("extends",t.self,o,e));let r=e.childForFieldName("interfaces");for(let o of lt(qe(r??e,"type_list")??r))n.push(Ge("implements",t.self,o,e));return n},interface_declaration:(e,t)=>{let n=e.childForFieldName("interfaces")??qe(e,"extends_interfaces");return t.self?lt(qe(n??e,"type_list")??n).map(r=>Ge("extends",t.self,r,e)):[]},record_declaration:(e,t)=>{let n=e.childForFieldName("interfaces");return t.self?lt(qe(n??e,"type_list")??n).map(r=>Ge("implements",t.self,r,e)):[]}}},rust:{lang:"rust",defs:{function_item:"function",function_signature_item:"function",struct_item:"struct",enum_item:"enum",enum_variant:"enum-member",field_declaration:"field",trait_item:"trait",type_item:"type",associated_type:"type",mod_item:"mod",const_item:"const",static_item:"static",union_item:"union",macro_definition:"macro"},containers:new Set(["impl_item","declaration_list","source_file","field_declaration_list","enum_variant_list","foreign_mod_item","block"]),exported:hg,calls:{call_expression:"function"},parentFrom:{impl_item:e=>vt(e.childForFieldName("type"))},nestedDefs:new Set(["const_item","static_item"]),publicMembersIn:{impl_item:e=>e.childForFieldName("trait")!==null},relationsFrom:{impl_item:(e,t)=>{let n=vt(e.childForFieldName("trait"));return t.self&&n?[Ge("implements",t.self,n,e)]:[]}}},c_sharp:{lang:"csharp",defs:{class_declaration:"class",interface_declaration:"interface",struct_declaration:"struct",enum_declaration:"enum",enum_member_declaration:"enum-member",record_declaration:"record",delegate_declaration:"delegate",method_declaration:"method",constructor_declaration:"constructor",property_declaration:"property",indexer_declaration:"indexer",operator_declaration:"operator",field_declaration:"field",event_declaration:"event",event_field_declaration:"event",conversion_operator_declaration:"operator",destructor_declaration:"destructor"},containers:new Set(["namespace_declaration","declaration_list","compilation_unit","file_scoped_namespace_declaration","enum_member_declaration_list","parameter_list"]),exported:gg,calls:{invocation_expression:"function",object_creation_expression:"constructor"},kindFrom:{parameter:e=>e.parent?.parent?.type==="record_declaration"?"field":void 0},publicMember:e=>e.parent?.parent?.type==="record_declaration",nameFrom:{field_declaration:e=>Tt(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,event_field_declaration:e=>Tt(e,t=>t.type==="variable_declarator")?.childForFieldName("name")?.text,conversion_operator_declaration:e=>e.childForFieldName("type")?.text,operator_declaration:e=>{let t=e.childForFieldName("operator")?.text;return t?`operator${/^\w/.test(t)?" ":""}${t}`:void 0},indexer_declaration:()=>"this[]"},namesFrom:{field_declaration:e=>_g(e),event_field_declaration:e=>_g(e)},relationsFrom:{class_declaration:(e,t)=>t.self?Mi(qe(e,"base_list"),t.self,e):[],struct_declaration:(e,t)=>t.self?Mi(qe(e,"base_list"),t.self,e):[],record_declaration:(e,t)=>t.self?Mi(qe(e,"base_list"),t.self,e):[],interface_declaration:(e,t)=>t.self?lt(qe(e,"base_list")).map(n=>Ge("extends",t.self,n,e)):[]}},php:{lang:"php",defs:{function_definition:"function",class_declaration:"class",interface_declaration:"interface",trait_declaration:"trait",enum_declaration:"enum",enum_case:"enum-member",method_declaration:"method",property_declaration:"property",const_declaration:"const",namespace_definition:"namespace"},containers:new Set(["declaration_list","enum_declaration_list","program"]),exported:Rd,calls:{function_call_expression:"function",member_call_expression:"member",object_creation_expression:"constructor"},extraMembers:Pk,nameFrom:{property_declaration:e=>Tt(e,t=>t.type==="variable_name")?.text.replace(/^\$/,""),const_declaration:e=>Tt(e,t=>t.type==="const_element")?.namedChildren[0]?.text},namesFrom:{property_declaration:e=>e.namedChildren.flatMap(t=>t.type==="property_element"?t.childForFieldName("name")?.text.replace(/^\$/,"")??[]:[]),const_declaration:e=>e.namedChildren.flatMap(t=>t.type==="const_element"?t.namedChildren[0]?.text??[]:[])},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let r of lt(qe(e,"base_clause")))n.push(Ge("extends",t.self,r,e));for(let r of lt(qe(e,"class_interface_clause")))n.push(Ge("implements",t.self,r,e));return n},interface_declaration:(e,t)=>t.self?lt(qe(e,"base_clause")).map(n=>Ge("extends",t.self,n,e)):[]}},c:{lang:"c",defs:{function_definition:"function",struct_specifier:"struct",enum_specifier:"enum",enumerator:"enum-member",union_specifier:"union",type_definition:"type",field_declaration:"field",declaration:"const",preproc_def:"macro",preproc_function_def:"macro"},containers:new Set(["translation_unit","declaration_list","field_declaration_list","enumerator_list","linkage_specification","preproc_ifdef","preproc_if"]),exported:Ai,calls:{call_expression:"function"},kindFrom:{field_declaration:e=>$a(e)?"method":"field",declaration:e=>$a(e)?"function":"const"},nameFrom:{preproc_def:e=>xg(e)?void 0:e.childForFieldName("name")?.text},namesFrom:{field_declaration:Ta,declaration:Ta},bodyFrom:{type_definition:Ad},extraMembers:wg},cpp:{lang:"cpp",defs:{function_definition:"function",class_specifier:"class",struct_specifier:"struct",enum_specifier:"enum",enumerator:"enum-member",union_specifier:"union",type_definition:"type",alias_declaration:"type",concept_definition:"concept",namespace_definition:"namespace",namespace_alias_definition:"namespace",field_declaration:"field",declaration:"const",using_declaration:"using",friend_declaration:"friend",preproc_def:"macro",preproc_function_def:"macro"},containers:new Set(["translation_unit","declaration_list","field_declaration_list","enumerator_list","template_declaration","linkage_specification","preproc_ifdef","preproc_if"]),exported:Ai,calls:{call_expression:"function",new_expression:"constructor"},kindFrom:{field_declaration:e=>$a(e)?"method":"field",declaration:e=>$a(e)?"function":"const"},sectionVisibility:e=>e.type==="access_specifier"?!/^(private|protected)/.test(e.text):void 0,nameFrom:{friend_declaration:e=>Tr(e)??(e.namedChildren[0]?Tr(e.namedChildren[0]):void 0),preproc_def:e=>xg(e)?void 0:e.childForFieldName("name")?.text},namesFrom:{field_declaration:Ta,declaration:Ta},parentFrom:{function_definition:Sg,declaration:Sg},bodyFrom:{type_definition:Ad},extraMembers:wg,relationsFrom:{class_specifier:(e,t)=>t.self?lt(qe(e,"base_class_clause")).map(n=>Ge("extends",t.self,n,e)):[],struct_specifier:(e,t)=>t.self?lt(qe(e,"base_class_clause")).map(n=>Ge("extends",t.self,n,e)):[]}},scala:{lang:"scala",defs:{class_definition:"class",object_definition:"object",trait_definition:"trait",enum_definition:"enum",function_definition:"def",function_declaration:"def",val_definition:"val",val_declaration:"val",var_definition:"var",type_definition:"type",given_definition:"given",package_clause:"package"},containers:new Set(["compilation_unit","package_clause","template_body","class_parameters","parameters","extension_definition"]),parentFrom:{extension_definition:e=>vt(qe(e,"parameters")?.namedChildren[0]?.childForFieldName("type")??null)},exported:Rd,kindFrom:{class_parameter:e=>{let t=kg(e,e.childForFieldName("name"));return t||(e.parent?.parent?.type==="class_definition"&&/\bcase\s+class\b/.test(e.parent.parent.text.slice(0,80))?"val":void 0)}},calls:{call_expression:"function",instance_expression:"constructor"},relationsFrom:{class_definition:(e,t)=>t.self?Mi(qe(e,"extends_clause"),t.self,e):[],object_definition:(e,t)=>t.self?Mi(qe(e,"extends_clause"),t.self,e):[],trait_definition:(e,t)=>t.self?lt(qe(e,"extends_clause")).map(n=>Ge("extends",t.self,n,e)):[]}},bash:{lang:"shell",defs:{function_definition:"function",declaration_command:"const"},containers:new Set(["program","if_statement","compound_statement"]),exported:Ai,calls:{command:"function"},nameFrom:{declaration_command:e=>/^\s*local\b/.test(e.text)?void 0:Tt(e,t=>t.type==="variable_name")?.text}},kotlin:{lang:"kotlin",defs:{class_declaration:"class",object_declaration:"object",function_declaration:"function",property_declaration:"property",enum_entry:"enum-member",type_alias:"type",class_parameter:"property"},containers:new Set(["source_file","class_body","enum_class_body","companion_object","object_declaration","primary_constructor","class_parameters"]),exported:Rd,calls:{call_expression:"function"},kindFrom:{class_parameter:e=>kg(e,e.namedChildren.find(t=>/identifier$/.test(t.type)))||/\bdata\s+class\b/.test(e.parent?.parent?.parent?.text.slice(0,80)??"")?"property":void 0,class_declaration:e=>{let t=e.text.slice(0,80);return/\binterface\b/.test(t)?"interface":/\benum\s+class\b/.test(t)?"enum":/\bannotation\s+class\b/.test(t)?"annotation":"class"}},nameFrom:{property_declaration:e=>Tt(e,t=>t.type==="variable_declaration")?.namedChildren[0]?.text??e.namedChildren.find(t=>t.type==="identifier")?.text},relationsFrom:{class_declaration:(e,t)=>{if(!t.self)return[];let n=[];for(let r of qe(e,"delegation_specifiers")?.namedChildren??[]){let o=vt(r);o&&n.push(Ge(Tt(r,s=>s.type==="constructor_invocation")?"extends":"implements",t.self,o,e))}return n}}},elixir:{lang:"elixir",defs:{},containers:new Set(["source","do_block","call","stab_clause"]),exported:e=>!/^\s*def(p|macrop|guardp)\b/.test(e),calls:{call:"function"},kindFrom:{call:e=>Eg[e.childForFieldName("target")?.text??e.namedChildren[0]?.text??""]},skipCall:e=>{if(e.parent?.type==="unary_operator")return!0;let t=e.parent,n=t&&Ig(t)&&t.startIndex===e.startIndex?t:e;if(n.parent?.type!=="arguments")return!1;let r=n.parent.parent,o=r?.childForFieldName("target")??r?.namedChildren[0];return o!==void 0&&Eg[o.text]!==void 0},docFrom:e=>{let t=e.previousNamedSibling;for(;t&&t.type==="unary_operator";){let n=t.namedChildren[0],r=n?.childForFieldName("target")??n?.namedChildren[0];if(r&&/^(doc|moduledoc)$/.test(r.text)){let o=Tt(t,s=>s.type==="string");if(o)return o.text.replace(/^"""|"""$/g,"").replace(/^"|"$/g,"").trim()||void 0}t=t.previousNamedSibling}},nameFrom:{call:e=>{let n=(e.childForFieldName("arguments")??e.namedChildren.find(s=>s.type==="arguments"))?.namedChildren[0];if(!n)return;let r=Tk(n);if(r.type==="alias"||r.type==="identifier")return r.text;if(r.type==="binary_operator")return r.childForFieldName("operator")?.text;let o=r.childForFieldName("target")??r.namedChildren[0];return o&&/identifier|alias/.test(o.type)?o.text:void 0}}},zig:{lang:"zig",defs:{function_declaration:"function",variable_declaration:"const",container_field:"field",test_declaration:"test"},containers:new Set(["source_file","variable_declaration","struct_declaration","enum_declaration","union_declaration","error_set_declaration","opaque_declaration","block"]),exported:hg,calls:{call_expression:"function"},kindFrom:{variable_declaration:e=>{let t=e.namedChildren.find(n=>n.type==="builtin_function");if(!(t&&/^@(import|cImport)\b/.test(t.text))){for(let n of e.namedChildren){if(n.type==="struct_declaration")return"struct";if(n.type==="enum_declaration")return"enum";if(n.type==="union_declaration")return"union";if(n.type==="error_set_declaration")return"error";if(n.type==="opaque_declaration")return"opaque"}return/^\s*(?:pub\s+)?var\b/.test(e.text.slice(0,24))?"var":"const"}},container_field:e=>e.parent?.type==="enum_declaration"?"enum-member":"field"}},solidity:{lang:"solidity",defs:{contract_declaration:"contract",interface_declaration:"interface",library_declaration:"library",function_definition:"function",constructor_definition:"constructor",modifier_definition:"modifier",event_definition:"event",error_declaration:"error",struct_declaration:"struct",struct_member:"field",enum_declaration:"enum",enum_value:"enum-member",state_variable_declaration:"field",constant_variable_declaration:"const",user_defined_type_definition:"type",fallback_receive_definition:"function"},containers:new Set(["source_file","contract_body","struct_declaration","enum_declaration","enum_body"]),exported:(e,t)=>/\b(public|external)\b/.test(e)?!0:/\b(internal|private)\b/.test(e)?!1:yg(e,t)||!0,calls:{call_expression:"function"},nameFrom:{state_variable_declaration:e=>e.namedChildren.find(t=>t.type==="identifier")?.text,fallback_receive_definition:e=>/^\s*receive\b/.test(e.text)?"receive":"fallback",enum_value:e=>e.text},relationsFrom:{contract_declaration:(e,t)=>t.self?e.namedChildren.filter(n=>n.type==="inheritance_specifier").map(n=>vt(n)).filter(n=>n!==void 0).map(n=>Ge("extends",t.self,n,e)):[],interface_declaration:(e,t)=>t.self?e.namedChildren.filter(n=>n.type==="inheritance_specifier").map(n=>vt(n)).filter(n=>n!==void 0).map(n=>Ge("extends",t.self,n,e)):[]}},terraform:Cg,hcl:{...Cg,lang:"hcl"},lua:{lang:"lua",defs:{function_declaration:"function"},containers:new Set(["chunk","variable_declaration"]),exported:vk,calls:{function_call:"function"},assignments:!0,nameFrom:{function_declaration:e=>Fa(e.childForFieldName("name"))?.name},parentFrom:{function_declaration:e=>Fa(e.childForFieldName("name"))?.table}}}});function Tg(e){for(let t of e.children)if(t.type==="{"||t.type==="("||t.type==="[")return t.startIndex}function Bk(e,t){let n,r=s=>{s!==void 0&&s>e.startIndex&&(n===void 0||s{Lk.has(s.type)?r(s.startIndex):r(Dk.get(s.type)?.(s))};r(e.childForFieldName("body")?.startIndex),o(e);for(let s of e.namedChildren){if(n!==void 0&&s.startIndex>=n)break;o(s),Fg.has(s.type)&&r(s.childForFieldName("body")?.startIndex);let a;for(let l of s.namedChildren){if(n!==void 0&&l.startIndex>=n)break;o(l),Fg.has(l.type)&&(a===void 0&&(a=s.childForFieldName("value")??s.childForFieldName("right")),a?.startIndex===l.startIndex&&r(l.childForFieldName("body")?.startIndex))}}if(n===void 0&&t.startsWith("end",e.endIndex-3)){let s=e.children,a=s.length-1;if(s[a]?.type==="end"){for(;a>0&&s[a-1].type===";";)a--;r(s[a].startIndex)}}return n}function zk(e,t,n){let r=[],o=s=>{for(let a of s.namedChildren){if(a.startIndex>=n)return;a.endIndex<=t||(Aa.test(a.type)?r.push(a):ks.test(a.type)||o(a))}};return o(e),r}function er(e,t){let n=e.startIndex,r=Math.min(Bk(e,t)??e.endIndex,n+Wk),o=t.slice(n,r),s="",a=n;for(let l of Uk.test(o)?zk(e,n,r):[])for(s=Og(s,t.slice(a,Math.max(a,l.startIndex)).replace(/[ \t]+$/,"")),a=Math.min(l.endIndex,r);a|=)$/,"").trim().slice(0,jk)}var Lk,Dk,Fg,jk,Wk,Uk,Og,Ng=H(()=>{"use strict";$();Ia();Lk=new Set(["block","statement_block","class_body","declaration_list","field_declaration_list","template_body","compound_statement","body_statement","enum_body","enum_body_declarations","enum_variant_list","enum_member_declaration_list","enumerator_list","interface_body","object_type","do_block","struct_declaration","enum_declaration","union_declaration","error_set_declaration","opaque_declaration","contract_body","enum_class_body"]),Dk=new Map([["interface_type",e=>e.namedChildren.some(t=>t.type==="method_elem")?Tg(e):void 0],["macro_definition",e=>Tg(e)],["preproc_function_def",e=>e.childForFieldName("value")?.startIndex]]);Fg=new Set(["arrow_function","function_expression","function","generator_function","function_definition","lambda","lambda_expression"]),jk=400,Wk=4096;Uk=/\/[/*]|#|--|=begin/;Og=(e,t)=>e&&t&&!/[\s([{]$/.test(e)&&!/^[\s,;)\]}]/.test(t)?`${e} ${t}`:e+t});function Td(e){return e.replace(/^['"`]|['"`]$/g,"")}function qk(e,t){if(e.type==="import_statement"){let n=e.childForFieldName("source");if(!n)return;let r=Td(n.text);for(let o of e.namedChildren)if(o.type==="import_clause"){for(let s of o.namedChildren)if(s.type==="identifier")t.push({local:s.text,name:"default",from:r});else if(s.type==="namespace_import"){let a=s.namedChildren.find(l=>l.type==="identifier");a&&t.push({local:a.text,name:"*",from:r})}else if(s.type==="named_imports")for(let a of s.namedChildren){if(a.type!=="import_specifier")continue;let l=a.childForFieldName("name")?.text,c=a.childForFieldName("alias")?.text;l&&c&&c!==l&&t.push({local:c,name:Td(l),from:r})}}}else if(e.type==="export_statement"&&e.children.some(n=>n.type==="default")){let n=e.childForFieldName("declaration"),r=n?n.childForFieldName("name")?.text:e.childForFieldName("value")?.type==="identifier"?e.childForFieldName("value").text:void 0;r&&t.push({local:"default",name:r})}}function Pg(e,t){if(e.type==="import_statement"){for(let n of e.namedChildren)if(n.type==="dotted_name"){let r=n.namedChildren[0]?.text;r&&t.push({local:r,name:"*",from:r})}else if(n.type==="aliased_import"){let r=n.childForFieldName("name")?.text,o=n.childForFieldName("alias")?.text;r&&o&&t.push({local:o,name:"*",from:r})}}else if(e.type==="import_from_statement"){let n=e.childForFieldName("module_name")?.text;if(!n)return;for(let r of e.namedChildren){if(r.type!=="aliased_import")continue;let o=r.childForFieldName("name")?.text,s=r.childForFieldName("alias")?.text;o&&s&&s!==o&&t.push({local:s,name:o,from:n})}}else if(Gk.has(e.type))for(let n of e.namedChildren)Pg(n,t)}function Lg(e,t){if(e.type==="import_declaration"||e.type==="import_spec_list")for(let n of e.namedChildren)Lg(n,t);else if(e.type==="import_spec"){let n=e.childForFieldName("name"),r=e.childForFieldName("path");n?.type==="package_identifier"&&r&&t.push({local:n.text,name:"*",from:Td(r.text)})}}function Dg(e,t){let n=t==="typescript"||t==="javascript"?qk:t==="python"?Pg:t==="go"?Lg:void 0;if(!n)return[];let r=[];for(let a of e.namedChildren)n(a,r);let o=new Set,s=[];for(let a of r.sort((l,c)=>T(l.local,c.local)||T(l.name,c.name)||T(l.from??"",c.from??""))){let l=`${a.local}\0${a.name}\0${a.from??""}`;if(!o.has(l)&&(o.add(l),s.push(a),s.length>=Hk))break}return s}var Hk,Gk,jg=H(()=>{"use strict";$();ce();Hk=256,Gk=new Set(["if_statement","elif_clause","else_clause","try_statement","except_clause","finally_clause","with_statement","block"])});function dE(e){let t=Bg.get(e);return t===void 0&&(t=(rE.test(e)?Ug:0)|(Aa.test(e)?zg:0)|(iE.test(e)?Na:0)|(oE.test(e)?Hg:0)|(aE.test(e)?Gg:0),Bg.set(e,t)),t}function uE(e){return e.namedChildren.every(t=>lE.test(t.type))}function fE(e){let t=e.parent;return t!==null&&t.type==="expression_statement"&&t.namedChildCount===1}function Pa(e,t){let n=e.slice();if(e.length>t){let r=new Uint8Array(e.length),o=new Set,s=0;for(let a=0;ar[l]===1)}return n.sort((r,o)=>T(r.name,o.name)||r.line-o.line||T(r.receiver??"",o.receiver??""))}function mE(e,t,n,r){let o=new Set,s=t.calls!==void 0,a=[],l=new Set,c=(h,_,y)=>{if(!h||h==="_"||!/^[A-Za-z_]\w*$/.test(h))return;let b=_.startPosition.row+1,S=`${h} ${b} ${y??""}`;l.has(S)||(l.add(S),a.push(y?{name:h,line:b,receiver:y}:{name:h,line:b}))},d=new Set,u=h=>{if(!(d.size>=Wg))for(let _ of gn(h)){if(d.size>=Wg)return;d.add(_)}},f=new Zn,m=t.imports?.import_statement!==void 0,p=new Set,g=[e];for(;g.length;){let h=g.pop(),_=h.type,y=h.namedChildren,b=dE(_);if(y.length===0&&b&Ug){let k=h.text;sE.test(k)&&!n.has(k)&&o.add(k)}let S=b&Na?uE(h):!1;if(b&zg)for(let k of h.text.split(/\r?\n/))u(Dt(k));else if(b&Na&&h.endIndex-h.startIndex<=Zk)if(S)u(dd(h.text));else for(let k of y)cE.test(k.type)&&u(k.text);if(f.full||(b&Na?S&&!fE(h)&&f.addString(h.text,h.startPosition.row+1):y.length===0&&b&Hg?f.add("number",h.text.trim(),h.startPosition.row+1):b&Gg&&f.add("regex",h.text,h.startPosition.row+1)),s&&!(t.kindFrom?.[_]&&t.kindFrom[_](h))&&!t.skipCall?.(h)){let k=t.calls[_];if(k==="function"){let R=h.childForFieldName("function")??h.childForFieldName("callee")??h.childForFieldName("method")??h.childForFieldName("name")??h.childForFieldName("target")??y[0]??null,I=R&&t.calls[R.type]==="function"?R.childForFieldName("function"):null;c($r(R),h,Ci(I??R)??Ci(h))}else if(k==="member")c($r(h.childForFieldName("name")),h,Ci(h));else if(k==="constructor"){let R=h.childForFieldName("constructor")??h.childForFieldName("type")??h.childForFieldName("name");for(let I=0;!R&&I=0;k--)g.push(y[k])}return{idents:[...o].slice(0,Vk).sort(),calls:Pa(a,r),importedNames:[...p].slice(0,Jk).sort(T),terms:[...d].sort(T),literals:f.result()??[]}}function gE(e,t){let n=(r,o)=>{for(let s of r.namedChildren)if(s.namedChildren.length===0){if(s.text===t)return s.startIndex}else if(o<3&&!pE.test(s.type)){let a=n(s,o+1);if(a!==void 0)return a}};return n(e,0)}function tr(e){let t=e.endPosition;return t.column===0&&t.row>e.startPosition.row?t.row:t.row+1}function hE(e){let t=[],n=r=>{if(/^(shorthand_property_identifier_pattern|identifier)$/.test(r.type)){t.includes(r.text)||t.push(r.text);return}if(r.type==="pair_pattern"){let o=r.childForFieldName("value");o&&n(o);return}for(let o of r.namedChildren)n(o)};for(let r of e.namedChildren)n(r);return t}function Fd(e,t,n,r={}){let o=Ra(t,n);if(!o||!De(o))return;let s=$d[o];if(!s)return;let a=Ss(o);if(!a)return;let l=$d[Ir(t)??o]?.lang??s.lang,c=null;try{if(c=a.parse(n),!c)return;let d=r.maxSymbols??Kk,u=[],f=c.rootNode,m=(e.split("/").pop()??"").replace(/\.[^.]+$/,""),p=new Map,g=z=>z.parentPath??z.parent??"",h=(z,U)=>{let q=g(U),te=p.get(q);te||p.set(q,te=new Set),te.add(z)},_=z=>{u.length{let te=s.relationsFrom?.[q];if(te)for(let ae of te(z,{self:U})){if(ae.from===ae.to)continue;let ge=`${ae.kind} ${ae.from} ${ae.to}`;S.has(ge)||b.length>=Xk||(S.add(ge),b.push(ae))}},R=(z,U,q,te)=>{if(te.inFunctionBody||s.privateMember?.(z)===!0)return!1;if(s.publicMember?.(z)===!0)return!0;if(!te.sectionPublic)return!1;if(te.forcePublic||te.exported)return!0;let ae=gE(z,q);return s.exported(U,q,ae===void 0?U:n.slice(z.startIndex,ae))},I=z=>s.docFrom?.(z)??(s.docstring?mg(z):void 0)??Qn(z),P=(z,U)=>{let q=U.sectionPublic,te=s.bareMembers?.[z.type];for(let ae of z.namedChildren){if(s.sectionVisibility){let Je=s.sectionVisibility(ae);if(Je!==void 0){q=Je;continue}}let ge=q===U.sectionPublic?U:{...U,sectionPublic:q},st=s.inlineVisibility?.(ae);if(st)for(let Je of st.nodes)v(Je,te,{...ge,sectionPublic:st.public});else v(ae,te,ge)}},v=(z,U,q)=>{if(U&&z.namedChildren.length===0&&ks.test(z.type)){_({name:z.text,kind:U,file:e,line:z.startPosition.row+1,endLine:tr(z),...q.parent?{parent:q.parent}:{},exported:q.forcePublic||q.exported,lang:l});return}let te=s.extraMembers?.(z,{ownerKind:q.ownerKind,inFunctionBody:q.inFunctionBody,publicNames:y});for(let ae of te??[]){let ge=ae.node??z,st=er(ge,n),Je=s.docFrom?.(ge)??Qn(ge);_({name:ae.name,kind:ae.kind,file:e,line:ge.startPosition.row+1,endLine:tr(ge),...q.parent?{parent:q.parent}:{},...q.parentPath&&q.parentPath!==q.parent?{parentPath:q.parentPath}:{},signature:st,...Je?{doc:Je}:{},exported:R(ge,st,ae.name,q),lang:l})}E(z,q)},C=(z,U,q,te,ae)=>{let ge=Id.has(U);return{parent:z,parentPath:q?`${q}/${z}`:z,ownerKind:U,exported:ae,forcePublic:Mg.has(U),inFunctionBody:te.inFunctionBody||ge,funcDepth:te.funcDepth+(ge?1:0),sectionPublic:!0}},M=(z,U)=>{let q=s.bodyFrom?.[z.type]?.(z);if(q)return M(q,U);let te=!1;for(let ae of z.namedChildren)s.containers.has(ae.type)&&(te=!0,P(ae,U));!te&&s.containers.has(z.type)&&P(z,U)},x=(z,U,q,te,ae)=>{k(z,U,z.type==="class"?"class_declaration":z.type),M(z,C(U,q,te.parentPath,te,ae))},w=0,E=(z,U)=>{if(!(w>=Qk)){w++;try{N(z,U)}finally{w--}}},N=(z,U)=>{if(U.funcDepth>Yk)return;let q=z.type,te=s.exportMarkers?.has(q)===!0,ae=U.exported||te;if(q==="export_statement"&&!z.childForFieldName("source")){for(let he of z.namedChildren)if(he.type==="identifier")h(he.text,U);else if(he.type==="export_clause")for(let fe of he.namedChildren){let ye=fe.childForFieldName("name")??fe.namedChildren[0];ye?.text&&h(ye.text,U)}}if(q==="export_statement"&&m&&z.children.some(he=>he.type==="default"))for(let he of z.namedChildren){let fe=tE.has(he.type),ye=nE.has(he.type);if((fe||ye)&&!he.childForFieldName("name")){let at=Qn(z),ne=ye?"class":"function";_({name:m,kind:ne,file:e,line:z.startPosition.row+1,endLine:tr(z),signature:er(z,n),...at?{doc:at}:{},exported:!0,lang:l}),x(he,m,ne,U,!0);return}}if(s.assignments&&q==="expression_statement"){let he=z.namedChildren[0];if(he?.type==="assignment_expression"){let fe=he.childForFieldName("left"),ye=he.childForFieldName("right");if(fe?.type==="member_expression"&&fe.text==="module.exports"&&ye){if(ye.type==="object"){for(let ne of ye.namedChildren)if(ne.type==="shorthand_property_identifier")h(ne.text,U);else if(ne.type==="pair"){let V=ne.childForFieldName("key"),Z=ne.childForFieldName("value");V?.type==="property_identifier"&&h(V.text,U),Z?.type==="identifier"&&h(Z.text,U)}return}if(ye.type==="identifier"){h(ye.text,U);return}}let at=ye&&Oa.has(ye.type);if(fe&&ye&&at){let ne,V=!1;if(fe.type==="member_expression"&&fe.text==="module.exports")ne=ye.childForFieldName("name")?.text??(m||void 0),V=!0;else if(fe.type==="member_expression"){let Z=fe.childForFieldName("property");if(Z?.type==="property_identifier"){ne=Z.text;let B=fe.text.slice(0,fe.text.length-Z.text.length-1);V=B==="exports"||B==="module.exports"}}else fe.type==="identifier"&&(ne=fe.text);if(ne){let Z=Qn(z),B=ye.type==="class"?"class":"function",K=!U.inFunctionBody&&(ae||V);_({name:ne,kind:B,file:e,line:he.startPosition.row+1,endLine:tr(he),...U.parent?{parent:U.parent}:{},signature:er(he,n),...Z?{doc:Z}:{},exported:K,lang:l}),x(ye,ne,B,U,K);return}}else if(fe?.type==="member_expression"&&ye){let ne=fe.childForFieldName("property");if(ne?.type==="property_identifier"){let V=fe.text.slice(0,fe.text.length-ne.text.length-1);if(V==="exports"||V==="module.exports"){ye.type==="identifier"&&h(ye.text,U),(ye.type!=="identifier"||ye.text!==ne.text)&&_({name:ne.text,kind:"const",file:e,line:he.startPosition.row+1,endLine:tr(he),...U.parent?{parent:U.parent}:{},signature:er(he,n),exported:!0,lang:l});return}}}}}if(s.assignments&&q==="assignment_statement"){let he=z.children.find(V=>V.type==="variable_list"),fe=z.children.find(V=>V.type==="expression_list"),ye=he?.namedChildren??[],at=fe?.namedChildren??[],ne=Math.min(ye.length,at.length);for(let V=0;Vne.type==="object_pattern"||ne.type==="array_pattern");if(ye&&!U.inFunctionBody){let ne=er(z,n),V=I(z);for(let Z of hE(ye))_({name:Z,kind:Je,file:e,line:z.startPosition.row+1,endLine:tr(z),...U.parent?{parent:U.parent}:{},signature:ne,...V?{doc:V}:{},exported:R(z,ne,Z,{...U,exported:ae}),lang:l});return}let at=Id.has(Je)||eE.has(Je)||s.nestedDefs?.has(q)===!0||Oa.has(z.childForFieldName("value")?.type??"");if(fe&&(!U.inFunctionBody||at)){let ne=er(z,n),V=I(z),Z=ge??U.parent,B=ge??U.parentPath,K=s.namesFrom?.[q]?.(z);for(let se of K&&K.length>1?K:[fe])_({name:se,kind:Je,file:e,line:z.startPosition.row+1,endLine:tr(z),...Z?{parent:Z}:{},...B&&B!==Z?{parentPath:B}:{},signature:ne,...V?{doc:V}:{},exported:R(z,ne,se,{...U,exported:ae}),lang:l});k(z,fe),M(z,C(fe,Je,B,U,ae));return}}if(k(z,ge??U.parent),s.containers.has(q)){let he=U.forcePublic||s.publicMembersIn?.[q]?.(z)===!0,fe=Oa.has(q);P(z,{...U,exported:ae,forcePublic:he,inFunctionBody:U.inFunctionBody||fe,funcDepth:U.funcDepth+(fe?1:0),...ge?{parent:ge,parentPath:ge,ownerKind:"type"}:{},...s.sectionScopes?.has(q)?{sectionPublic:!0}:{}})}};if(P(f,{exported:!1,forcePublic:!1,inFunctionBody:!1,funcDepth:0,sectionPublic:!0}),p.size)for(let z of u)!z.exported&&p.get(g(z))?.has(z.name)&&(z.exported=!0);if(y){for(let q of u)q.parent===void 0&&(q.exported=y.has(q.name));let z=new Set(u.filter(q=>q.parent===void 0&&q.kind!=="reexport").map(q=>q.name)),U=0;for(let q of u)(q.parent!==void 0||q.kind!=="reexport"||!z.has(q.name))&&(u[U++]=q);u.length=U}let{idents:O,calls:L,importedNames:G,terms:X,literals:oe}=mE(f,s,new Set(u.map(z=>z.name)),r.maxCalls??Ii),ue=r.imports!==!1,ve=ue?gi(t,n):[],Oe=ue?fa(t,n):void 0;return b.sort((z,U)=>T(z.from,U.from)||T(z.kind,U.kind)||T(z.to,U.to)),{symbols:u,refs:ve,pkg:Oe,idents:O,calls:L,importedNames:G,importAliases:Dg(f,s.lang),relations:b,terms:X,literals:oe,...u.length>=d?{truncated:!0}:{}}}catch(d){r.onFailure?.(d);return}finally{c?.delete()}}var Vk,Ii,Jk,Kk,Xk,Wg,Zk,Yk,Qk,eE,tE,nE,rE,sE,iE,oE,aE,lE,cE,Ug,zg,Na,Hg,Gg,Bg,pE,Od=H(()=>{"use strict";$();_a();ce();pt();Ia();$g();Ng();vd();jg();li();ft();et();Vk=512,Ii=8192,Jk=256,Kk=2e3,Xk=256,Wg=512,Zk=80,Yk=2,Qk=256,eE=new Set(["class","struct","enum","interface","trait","type","record","union"]),tE=new Set(["function","function_expression","function_declaration","generator_function","generator_function_declaration","arrow_function"]),nE=new Set(["class","class_declaration","abstract_class_declaration"]),rE=/identifier|constant|(^|_)name$/,sE=/^[A-Za-z_]\w{4,}$/,iE=/(^|_)string(_literal)?$/,oE=/(^|_)(integer|float|number|decimal|numeric)(_literal)?$/,aE=/(^|_)(regex|regular_expression)(_pattern|_literal)?$/,lE=/(^|_)(fragment|content|escape_sequence|character|start|end)$/,cE=/(^|_)(fragment|content)$/,Ug=1,zg=2,Na=4,Hg=8,Gg=16,Bg=new Map;pE=/annotation|attribute|decorator|modifier|parameter|argument|body|block|string|comment|_list$/});function Pd(e,t){let n=t.exec(e);return n?(n[1]??n[2]??n[3]??"").trim().toLowerCase():void 0}function Ld(e){return e.replace(/[^\r\n]/g," ")}function qg(e,t,n){let r="",o=0;for(let[a,l]of t){let c=e.slice(o,a),d=e.slice(a,l);r+=n?Ld(c)+d:c+Ld(d),o=l}let s=e.slice(o);return r+(n?Ld(s):s)}function vE(e,t){let n=[],r=1,o=0,s=a=>{for(let l=e.indexOf(` `,o);l!==-1&&l`,"gi");m.lastIndex=f;let p=m.exec(t),g=p?p.index:t.length;if(Od.lastIndex=p?p.index+p[0].length:t.length,r.push([f,g]),d!=="script")continue;let h=Nd(u,hE);if(h!==void 0&&!bE.test(h))continue;let _=Nd(u,gE)??"js";if(_==="ts"||_==="typescript")s=!0;else if(_==="tsx")s=a=!0;else if(_==="jsx")a=!0;else if(_!=="js"&&_!=="javascript")continue;n.push([f,g]);let y=Nd(u,yE)==="module"||_E.test(u);(e===".astro"||e===".svelte"&&!y)&&o.push([f,g])}return{script:Gg(t,n,!0),ext:s?a?".tsx":".ts":a?".jsx":".js",markup:Gg(t,r,!1),notExported:SE(t,o)}}var pE,Od,Ld,gE,hE,yE,_E,bE,wE,xE,Vg=z(()=>{"use strict";I();pE=new Set([".vue",".svelte",".astro"]),Od=/|$)|<(script|style)(?=[\s>/])((?:[^>"']|"[^"]*"|'[^']*')*)>/gi,Ld=e=>new RegExp(`(?:^|\\s)${e}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s"'>]+))`,"i"),gE=Ld("lang"),hE=Ld("type"),yE=Ld("context"),_E=/(?:^|\s)module(?=[\s/=]|$)/i,bE=/^(?:module|(?:text|application)\/(?:javascript|ecmascript|typescript|babel)|text\/jsx|)$/i,wE=/^\s*---[ \t]*\r?\n/,xE=/^---[ \t]*\r?$/m});function Xg(e,t){if(jd.has(e)){if(AE(e,t))return"minified";if(TE(e,t))return"bundle"}}function AE(e,t){if(!jd.has(e))return!1;let n=0;for(let m=0;m{o+=a,a>=Dd&&l*100<=a*kE&&c*100>=a*EE&&(s+=a),a=l=c=0,d=!1};for(let m=0;m32?(d&&u&&a>0&&l++,d=!1,a++,(p===vE||p===RE||p===CE||p===ME)&&c++):(d||(d=!0,u=!0),t.charCodeAt(m)>32&&(u=!1))}return f(),s>0&&s*2>=o}function TE(e,t){if(!jd.has(e))return!1;let n;if(t.includes("_require__")&&IE.test(n=Er(t)))return!0;let r=[];Jg.lastIndex=0;for(let s;s=Jg.exec(t);)r.push(s);if(new Set(r.map(s=>s[1])).size=Kg}var jd,Dd,kE,EE,vE,RE,CE,ME,Jg,IE,Kg,Zg=z(()=>{"use strict";I();ft();jd=new Set([".js",".mjs",".cjs"]);Dd=300,kE=6,EE=1,vE=59,RE=40,CE=123,ME=125;Jg=/^\/\/ ((?:[\w@$.+~-]+\/)*[\w@$.+~-]+\.(?:[cm]?[jt]sx?|json|vue|svelte|astro))\r?$/gm,IE=/\bfunction __(?:webpack|nccwpck)_require__\s*\(/,Kg=3});function Qg(e,t){let n=t;for(;n>0&&Yg.test(e[n-1]);)n--;if(n>0&&e[n-1]==="*")for(n--;n>0&&Yg.test(e[n-1]);)n--;let r=n;for(;r>0&&NE.test(e[r-1]);)r--;return r`${l.name} ${l.line}`)),s=e.split(` -`),a=/(?:\bnew\s+)?(?:([A-Za-z_$][\w$]*)\s*\.\s*)?([A-Za-z_$][\w$]*)\s*\(/g;for(let l=0;l{if(!(t.size>=Wd))for(let s of mn(o)){if(t.size>=Wd)return;t.add(s)}},r=!1;for(let o of e.split(` -`)){if(t.size>=Wd)break;let s=o;if(r){let c=s.indexOf("*/");if(n(Dt(c===-1?s:s.slice(0,c))),c===-1)continue;r=!1,s=s.slice(c+2)}let a=s.indexOf("/*");if(a!==-1){let c=s.indexOf("*/",a+2);n(Dt(s.slice(a,c===-1?void 0:c))),c===-1?(r=!0,s=s.slice(0,a)):s=s.slice(0,a)+s.slice(c+2)}let l=/(^|\s)(\/\/|#|--)(.*)$/.exec(s);l&&(n(Dt(l[2]+l[3])),s=s.slice(0,l.index));for(let c of s.matchAll(/(['"`])((?:\\.|(?!\1)[^\\])*)\1/g)){let d=c[2];d.length&&d.length<=PE&&n(d)}}return[...t].sort()}function DE(e){let t=new Kn,n=!1,r=0;for(let o of e.split(` -`)){if(r++,t.full)break;let s=o;if(n){let c=s.indexOf("*/");if(c===-1)continue;n=!1,s=s.slice(c+2)}let a=s.indexOf("/*");if(a!==-1){let c=s.indexOf("*/",a+2);c===-1?(n=!0,s=s.slice(0,a)):s=s.slice(0,a)+s.slice(c+2)}let l=/(^|\s)(\/\/|#|--)(.*)$/.exec(s);l&&(s=s.slice(0,l.index));for(let c of s.matchAll(/(['"`])((?:\\.|(?!\1)[^\\])*)\1/g))t.add("string",c[2],r);for(let c of s.replace(/(['"`])(?:\\.|(?!\1)[^\\])*\1/g," ").matchAll(/(?`${a.name} ${a.line} ${a.receiver??""}`,o=new Set(e.map(r)),s=[...e];for(let a of t)o.has(r(a))||s.push(a);return Na(s,n)}function Ii(e,t,n,r={}){let o=Xg(t,n);if(o)return{symbols:[],generated:o,summary:Uc(t,n),refs:pi(t,n)};let s=qg(t,n),a=s?s.script:n,l=s?s.ext:t,c=!1,d=$d(e,l,a,{maxCalls:r.maxCallsPerFile,imports:!1,onFailure:()=>c=!0}),u=d?d.symbols:Yc(e,l,a),f=u.slice(0,$E),m=s?f.map(x=>({...x,lang:nn(t),exported:x.exported&&!s.notExported.some(([k,v])=>x.line>=k&&x.line<=v)})):f,p=new Set(m.map(x=>x.name)),g=aa(e,a,m).filter(x=>!p.has(x.name)),h=pi(l,a),_=new Set(h.filter(x=>!x.soft).map(x=>x.spec)),y=(d&&!s?d.literals.length?d.literals:void 0:DE(n))?.filter(x=>!(x.kind==="string"&&_.has(x.value))),b=d?d.calls:eh(a,m,r.maxCallsPerFile);return s&&(b=jE(b,eh(s.markup,[],r.maxCallsPerFile),r.maxCallsPerFile)),{symbols:[...m,...g],...d?.truncated||u.length>m.length||g.length>=oa?{truncated:!0}:{},...c?{astFallback:!0}:{},...b.length>=(r.maxCallsPerFile??Ai)?{callsCapped:!0}:{},summary:Uc(t,n),refs:h,pkg:ua(t,n),idents:d?.idents,calls:b,importedNames:d?.importedNames,importAliases:d?.importAliases.length?d.importAliases:void 0,relations:d?.relations?.length?d.relations:void 0,terms:d&&!s?d.terms:LE(n),literals:y?.length?y:void 0}}var $E,FE,OE,Yg,NE,Wd,PE,Pa=z(()=>{"use strict";I();ya();Rr();Fd();tt();ft();Vg();Zg();ai();et();$E=2e3,FE=new Set(["if","else","elif","for","while","do","switch","case","match","when","unless","until","catch","except","return","throw","raise","yield","await","typeof","instanceof","sizeof","delete","void","in","of","not","and","or","assert","defer","select","with","loop"]),OE=new Set(["function","def","func","fun","fn","class","sub","macro","proc"]),Yg=/\s/,NE=/\w/;Wd=512,PE=80});function nh(e){let t=new Kn,n=0;for(let r of e.split(` -`)){if(n++,t.full)break;let o=HE(r);for(let c of o.matchAll(th))t.add("string",c[1]??c[2].replace(/''/g,"'"),n);let a=zE.exec(o)?.[1].trim(),l=a&&!/^[[{|>&*-]/.test(a)&&!WE.test(a)?a:void 0;if(l!==void 0&&!UE.test(l)){t.add("string",l,n);continue}for(let c of o.replace(th," ").matchAll(BE))t.add("number",c[0].replace(/_/g,""),n)}return t.result()}function HE(e){let t;for(let n=0;n{"use strict";I();ya();th=/"((?:\\.|[^"\\])*)"|'((?:[^']|'')*)'/g,WE=/"(?:\\.|[^"\\])*"|'(?:[^']|'')*'/,BE=/(?Ud(e,m)),s=t.exclude?.map(m=>Ud(e,m)),a=It(r),l=It(o),c=It(s);if(!a&&!l&&!c)return;let d=nd(r),u=nd(o),f=$p(s);return({rel:m,directory:p})=>p?(!d||d(m))&&(!u||u(m))&&!f?.(m):(!a||a(m))&&(!l||l(m))&&!c?.(m)}function ih(e,t,n){let r=l=>It(l.map(c=>Ud(e,c)))?.(n)??!0,o=t.scope===void 0?"":er(e,t.scope),s={};o&&!r([o,`${o}/**`])&&(s.scope=t.scope),t.include?.length&&!r(t.include)&&(s.include=t.include);let a=t.exclude?.find(l=>r([l]));return a!==void 0&&(s.exclude=a),s.scope!==void 0||s.include||s.exclude!==void 0?s:void 0}function $r(e,t){let n=zd(e,t);return{maxFileBytes:t.maxBytes,maxFiles:t.maxFiles,gitignore:t.gitignore,ignoreDirs:t.ignoreDirs,...n?{filter:n}:{},...t.onSkip?{onSkip:t.onSkip}:{}}}function*Da(e,t){let n=$r(e,t),{files:r,capped:o,excluded:s,oversized:a}=t.precomputedWalk??Xe(e,n),l=VE(e,t.out),c=t.precomputedWalk?n.filter:void 0;for(let d of r){if(l&&l(d)){t.onSkip?.({rel:d.rel,reason:"index-output",directory:!1,size:d.size});continue}if(c&&!c({rel:d.rel,abs:d.abs,directory:!1})){t.onSkip?.({rel:d.rel,reason:"filter",directory:!1,size:d.size});continue}yield{f:d,kind:mt(d.rel,d.ext),lang:nn(d.ext)}}return{capped:o,excluded:s,oversized:a}}function VE(e,t){if(!t)return;let n=ae(t),r=De(n,ae(e));if(r==="")return a=>!a.rel.includes("/")&&qE(a.rel);if(r!==".."&&!r.startsWith(`..${"/"}`)&&!Ne(r))return;let o=De(ae(e),n);if(o===".."||o.startsWith(`..${"/"}`)||Ne(o))return;let s=o.split("/").join("/");return a=>a.rel===s||a.rel.startsWith(`${s}/`)}function Hd(e,t={}){let n=[],r=Da(e,t);for(let o=r.next();!o.done;o=r.next())o.value.kind==="code"&&n.push({f:o.value.f,lang:o.value.lang});return n}function Es(e,t={}){let n=[],r=Da(e,t),o=r.next();for(;!o.done;o=r.next())n.push(o.value.f);return{files:n,capped:o.value.capped}}function Ti(e,t={}){let n={},r=0,o=Da(e,t),s=o.next();for(;!s.done;s=o.next())n[s.value.lang]=(n[s.value.lang]??0)+1,r++;return{root:e,commit:Qt(e),fileCount:r,languages:n,capped:s.value.capped,excluded:s.value.excluded}}function vt(e,t={}){let n=[],r={},o=new Bd,s=new Map,a=t.cache,l=a!==void 0,c=a===void 0,d=Da(e,t),u=d.next();for(;!u.done;u=d.next()){let{f,kind:m,lang:p}=u.value;r[p]=(r[p]??0)+1,s.set(f.rel,f.mtimeMs);let g=t.cache?.get(f.rel);if(!t.fullHash&&g&&g.size!==void 0&&g.mtimeMs!==void 0&&g.size===f.size&&g.mtimeMs===f.mtimeMs){n.push(g.record),m==="doc"&&o.defer(f.rel,f.abs);continue}let h=t.extracted?.get(f.rel),_=h&&h.size===f.size&&h.mtimeMs===f.mtimeMs&&(h.record||h.hash===g?.hash)?h:void 0,y=_?void 0:se(f.abs),b=_?_.hash:Re(y);if(g&&g.hash===b){n.push(g.record.size===f.size?g.record:{...g.record,size:f.size}),m==="doc"&&y&&o.set(f.rel,y),(g.size!==f.size||g.mtimeMs!==f.mtimeMs)&&(c=!0);continue}if(l=!1,c=!0,_?.record){n.push(_.record);continue}let x=m==="code"?La(f.rel,f.ext,f.size,y,b,p,t):{rel:f.rel,ext:f.ext,size:f.size,lines:sh(y),hash:b,kind:m,lang:p,headings:[],symbols:[],refs:[]};if(m!=="code")if(y&&m==="doc"&&(ed.has(f.ext)||f.ext===".rst")){let k=f.ext===".rst"?ad(f.rel,y):rd(y);x.title=k.title??je(f.rel),x.summary=k.summary,x.headings=k.headings,x.refs=k.refs}else y&&m==="doc"?x.title=je(f.rel):y&&m==="config"?(x.title=je(f.rel),x.literals=nh(y)):x.title=je(f.rel);m==="doc"&&y&&o.set(f.rel,y),n.push(x)}return n.sort(xr(f=>f.rel)),a!==void 0&&n.length!==a.size&&(l=!1,c=!0),{root:e,commit:Qt(e),files:n,languages:r,docText:o,mtimes:s,capped:u.value.capped,excluded:u.value.excluded,...u.value.oversized?{oversized:u.value.oversized}:{},contentUnchanged:l,cacheDirty:c}}var Bd,GE,qE,Ut=z(()=>{"use strict";I();fe();Ze();tn();xt();Mn();Rr();yi();le();sd();ld();Pa();rh();Bd=class extends Map{pending=new Map;defer(t,n){this.pending.set(t,n)}load(t){let n=this.pending.get(t);if(n===void 0)return;this.pending.delete(t);let r=se(n);r&&super.set(t,r)}loadAll(){for(let t of[...this.pending.keys()])this.load(t)}get(t){return this.load(t),super.get(t)}has(t){return this.load(t),super.has(t)}set(t,n){return this.pending?.delete(t),super.set(t,n)}delete(t){let n=this.pending.delete(t);return super.delete(t)||n}clear(){this.pending.clear(),super.clear()}get size(){return this.loadAll(),super.size}forEach(t,n){this.loadAll(),super.forEach(t,n)}entries(){return this.loadAll(),super.entries()}keys(){return this.loadAll(),super.keys()}values(){return this.loadAll(),super.values()}[Symbol.iterator](){return this.entries()}};GE=["graph.json","symbols.json","cache.json","freshness.json","embeddings.bin"],qE=e=>GE.some(t=>e===t||e.startsWith(`${t}.tmp-`))});function qd(e,t,n){return t.every(r=>e[r]===void 0||n(e[r]))}function ev(e,t){return an(e)&&Qe(e.name)&&Qe(e.kind)&&e.file===t&&$i(e.line)&&(e.endLine===void 0||$i(e.endLine)&&e.endLine>=e.line)&&typeof e.exported=="boolean"&&Qe(e.lang)&&qd(e,ZE,Qe)}function tv(e){return an(e)&&(e.kind==="import"||e.kind==="doc-link")&&Qe(e.spec)&&(e.soft===void 0||e.soft===!0)}function nv(e){return an(e)&&Qe(e.name)&&$i(e.line)&&(e.receiver===void 0||Qe(e.receiver))}function rv(e){return an(e)&&Qe(e.local)&&Qe(e.name)&&(e.from===void 0||Qe(e.from))}function sv(e){return an(e)&&(e.kind==="extends"||e.kind==="implements")&&Qe(e.from)&&Qe(e.to)&&$i(e.line)}function iv(e){return an(e)&&(e.kind==="string"||e.kind==="number"||e.kind==="regex")&&Qe(e.value)&&$i(e.line)}function Wa(e,t){return e===void 0||Array.isArray(e)&&e.every(t)}function ov(e,t){return an(e)&&e.rel===t&&Qe(e.ext)&&Ba(e.size)&&Ba(e.lines)&&lh(e.hash)&&Qe(e.kind)&&XE.has(e.kind)&&Qe(e.lang)&&qd(e,YE,Qe)&&qd(e,QE,ah)&&ah(e.headings)&&Array.isArray(e.symbols)&&e.symbols.every(n=>ev(n,t))&&Array.isArray(e.refs)&&e.refs.every(tv)&&Wa(e.calls,nv)&&Wa(e.importAliases,rv)&&Wa(e.relations,sv)&&Wa(e.literals,iv)&&(e.truncated===void 0||e.truncated===!0)&&(e.callsCapped===void 0||e.callsCapped===!0)&&(e.astFallback===void 0||e.astFallback===!0)&&(e.generated===void 0||e.generated==="minified"||e.generated==="bundle")}function av(e,t){return an(e)&&lh(e.hash)&&ov(e.record,t)&&e.hash===e.record.hash&&(e.size===void 0||Ba(e.size)&&e.size===e.record.size)&&(e.mtimeMs===void 0||typeof e.mtimeMs=="number"&&Number.isFinite(e.mtimeMs))}function ch(e){if(!an(e)||e.schemaVersion!==5||e.extractorVersion!==17||!an(e.files))return;let t=new Map;for(let[n,r]of Object.entries(e.files)){if(n.split("/").some(o=>o===""||o==="."||o==="..")||!av(r,n))return;t.set(n,r)}return t}function Vd(e,t,n){let r=Bt(e.filter(o=>o.kind==="code").map(o=>o.ext)).filter(n);return t===void 0?{grammars:r}:{grammars:r,maxCallsPerFile:t}}function Jd(e,t){return e!==void 0&&e.maxCallsPerFile===t.maxCallsPerFile&&e.grammars.join(",")===t.grammars.join(",")}function Ua(e){if(!an(e)||!Array.isArray(e.grammars)||!e.grammars.every(Qe))return;let t=e.maxCallsPerFile;if(t!==void 0&&!(typeof t=="number"&&Number.isFinite(t)&&t>0))return;let n=[...e.grammars];return t===void 0?{grammars:n}:{grammars:n,maxCallsPerFile:t}}function Fi(e,t,n){let r=Oi(t,n),o=new Map;for(let[s,a]of e)r(a.record.kind,a.record.ext)&&o.set(s,a);return o}function Oi(e,t){let n=new Set(e?.grammars),r=e!==void 0&&e.maxCallsPerFile===t.maxCallsPerFile;return(o,s)=>o!=="code"?!0:r?Bt([s]).every(a=>n.has(a)===t.ast(a)):!1}var an,Qe,Ba,$i,ah,lh,XE,ZE,YE,QE,Ni=z(()=>{"use strict";I();_t();pt();an=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Qe=e=>typeof e=="string",Ba=e=>typeof e=="number"&&Number.isSafeInteger(e)&&e>=0,$i=e=>Ba(e)&&e>0,ah=e=>Array.isArray(e)&&e.every(Qe),lh=e=>Qe(e)&&/^[a-f0-9]{40}$/.test(e),XE=new Set(["code","doc","config","asset","other"]),ZE=["parent","parentPath","signature","doc"],YE=["title","summary","pkg"],QE=["idents","importedNames","terms"]});var vs,za,Kd=z(()=>{I();vs=class{constructor(){throw new Error("worker_threads is not available in the browser build (the engine runs single-threaded here)")}},za=class{constructor(){throw new Error("worker_threads is not available in the browser build (the engine runs single-threaded here)")}}});function lv(e=wa(import.meta.url)){try{if(je(e)==="engine.mjs")return Cr(e).href;let t=j(Me(e),"engine.mjs");return ne(t)?Cr(t).href:void 0}catch{return}}function dh(e){let t=O.env.CODEINDEX_WORKERS,n=e??(t!==void 0&&t!==""?Number(t):void 0);if(n!==void 0)return Number.isFinite(n)&&n>0?Math.floor(n):0;let r=1;try{r=typeof ba=="function"?ba():Dp().length}catch{r=1}return Math.max(0,Math.min(r-1,8))}async function uv(e,t){await on(e.grammarKeys);let n=e.grammarKeys.filter(o=>Le(o)),r=[];for(let o of e.jobs){let s,a;try{let u=Ae(o.abs);s=u.size,a=u.mtimeMs}catch{continue}let l=se(o.abs),c=Re(l);if(c===o.cachedHash){r.push({rel:o.rel,size:s,mtimeMs:a,hash:c});continue}let d=La(o.rel,o.ext,s,l,c,nn(o.ext),{maxCallsPerFile:e.maxCallsPerFile});r.push({rel:o.rel,size:s,mtimeMs:a,hash:c,record:d})}t({ready:n,records:r})}async function uh(e,t,n,r={}){if(n<2||e.length===0)return;let o=r.engineUrl??lv();if(!o)return;let s=t.filter(m=>Le(m)).sort(),a=Math.min(n,e.length),l=`import { runExtractWorker } from ${JSON.stringify(o)}; +`,l+1))r++;o=a};for(let[a,l]of t){s(a);let c=r;s(l),n.push([c,r])}return n}function Vg(e,t){if(!yE.has(e))return;let n=[],r=[],o=[],s=!1,a=!1,l=0;if(e===".astro"){s=!0;let c=kE.exec(t);if(c){let d=c[0].length,u=EE.exec(t.slice(d)),f=u?d+u.index:t.length;n.push([d,f]),r.push([d,f]),o.push([d,f]),l=u?f+u[0].length:f}}Nd.lastIndex=l;for(let c;c=Nd.exec(t);){let d=c[1]?.toLowerCase();if(!d){r.push([c.index,c.index+c[0].length]);continue}let u=c[2],f=c.index+c[0].length;if(u.trimEnd().endsWith("/"))continue;let m=new RegExp(``,"gi");m.lastIndex=f;let p=m.exec(t),g=p?p.index:t.length;if(Nd.lastIndex=p?p.index+p[0].length:t.length,r.push([f,g]),d!=="script")continue;let h=Pd(u,bE);if(h!==void 0&&!SE.test(h))continue;let _=Pd(u,_E)??"js";if(_==="ts"||_==="typescript")s=!0;else if(_==="tsx")s=a=!0;else if(_==="jsx")a=!0;else if(_!=="js"&&_!=="javascript")continue;n.push([f,g]);let y=Pd(u,wE)==="module"||xE.test(u);(e===".astro"||e===".svelte"&&!y)&&o.push([f,g])}return{script:qg(t,n,!0),ext:s?a?".tsx":".ts":a?".jsx":".js",markup:qg(t,r,!1),notExported:vE(t,o)}}var yE,Nd,Dd,_E,bE,wE,xE,SE,kE,EE,Jg=H(()=>{"use strict";$();yE=new Set([".vue",".svelte",".astro"]),Nd=/|$)|<(script|style)(?=[\s>/])((?:[^>"']|"[^"]*"|'[^']*')*)>/gi,Dd=e=>new RegExp(`(?:^|\\s)${e}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s"'>]+))`,"i"),_E=Dd("lang"),bE=Dd("type"),wE=Dd("context"),xE=/(?:^|\s)module(?=[\s/=]|$)/i,SE=/^(?:module|(?:text|application)\/(?:javascript|ecmascript|typescript|babel)|text\/jsx|)$/i,kE=/^\s*---[ \t]*\r?\n/,EE=/^---[ \t]*\r?$/m});function Zg(e,t){if(Wd.has(e)){if(TE(e,t))return"minified";if(OE(e,t))return"bundle"}}function TE(e,t){if(!Wd.has(e))return!1;let n=0;for(let m=0;m{o+=a,a>=jd&&l*100<=a*RE&&c*100>=a*CE&&(s+=a),a=l=c=0,d=!1};for(let m=0;m32?(d&&u&&a>0&&l++,d=!1,a++,(p===ME||p===AE||p===IE||p===$E)&&c++):(d||(d=!0,u=!0),t.charCodeAt(m)>32&&(u=!1))}return f(),s>0&&s*2>=o}function OE(e,t){if(!Wd.has(e))return!1;let n;if(t.includes("_require__")&&FE.test(n=vr(t)))return!0;let r=[];Kg.lastIndex=0;for(let s;s=Kg.exec(t);)r.push(s);if(new Set(r.map(s=>s[1])).size=Xg}var Wd,jd,RE,CE,ME,AE,IE,$E,Kg,FE,Xg,Yg=H(()=>{"use strict";$();ft();Wd=new Set([".js",".mjs",".cjs"]);jd=300,RE=6,CE=1,ME=59,AE=40,IE=123,$E=125;Kg=/^\/\/ ((?:[\w@$.+~-]+\/)*[\w@$.+~-]+\.(?:[cm]?[jt]sx?|json|vue|svelte|astro))\r?$/gm,FE=/\bfunction __(?:webpack|nccwpck)_require__\s*\(/,Xg=3});function eh(e,t){let n=t;for(;n>0&&Qg.test(e[n-1]);)n--;if(n>0&&e[n-1]==="*")for(n--;n>0&&Qg.test(e[n-1]);)n--;let r=n;for(;r>0&&DE.test(e[r-1]);)r--;return r`${l.name} ${l.line}`)),s=e.split(` +`),a=/(?:\bnew\s+)?(?:([A-Za-z_$][\w$]*)\s*\.\s*)?([A-Za-z_$][\w$]*)\s*\(/g;for(let l=0;l{if(!(t.size>=Bd))for(let s of gn(o)){if(t.size>=Bd)return;t.add(s)}},r=!1;for(let o of e.split(` +`)){if(t.size>=Bd)break;let s=o;if(r){let c=s.indexOf("*/");if(n(Dt(c===-1?s:s.slice(0,c))),c===-1)continue;r=!1,s=s.slice(c+2)}let a=s.indexOf("/*");if(a!==-1){let c=s.indexOf("*/",a+2);n(Dt(s.slice(a,c===-1?void 0:c))),c===-1?(r=!0,s=s.slice(0,a)):s=s.slice(0,a)+s.slice(c+2)}let l=/(^|\s)(\/\/|#|--)(.*)$/.exec(s);l&&(n(Dt(l[2]+l[3])),s=s.slice(0,l.index));for(let c of s.matchAll(/(['"`])((?:\\.|(?!\1)[^\\])*)\1/g)){let d=c[2];d.length&&d.length<=jE&&n(d)}}return[...t].sort()}function BE(e){let t=new Zn,n=!1,r=0;for(let o of e.split(` +`)){if(r++,t.full)break;let s=o;if(n){let c=s.indexOf("*/");if(c===-1)continue;n=!1,s=s.slice(c+2)}let a=s.indexOf("/*");if(a!==-1){let c=s.indexOf("*/",a+2);c===-1?(n=!0,s=s.slice(0,a)):s=s.slice(0,a)+s.slice(c+2)}let l=/(^|\s)(\/\/|#|--)(.*)$/.exec(s);l&&(s=s.slice(0,l.index));for(let c of s.matchAll(/(['"`])((?:\\.|(?!\1)[^\\])*)\1/g))t.add("string",c[2],r);for(let c of s.replace(/(['"`])(?:\\.|(?!\1)[^\\])*\1/g," ").matchAll(/(?`${a.name} ${a.line} ${a.receiver??""}`,o=new Set(e.map(r)),s=[...e];for(let a of t)o.has(r(a))||s.push(a);return Pa(s,n)}function $i(e,t,n,r={}){let o=Zg(t,n);if(o)return{symbols:[],generated:o,summary:zc(t,n),refs:gi(t,n)};let s=Vg(t,n),a=s?s.script:n,l=s?s.ext:t,c=!1,d=Fd(e,l,a,{maxCalls:r.maxCallsPerFile,imports:!1,onFailure:()=>c=!0}),u=d?d.symbols:Qc(e,l,a),f=u.slice(0,NE),m=s?f.map(S=>({...S,lang:rn(t),exported:S.exported&&!s.notExported.some(([k,R])=>S.line>=k&&S.line<=R)})):f,p=new Set(m.map(S=>S.name)),g=la(e,a,m).filter(S=>!p.has(S.name)),h=gi(l,a),_=new Set(h.filter(S=>!S.soft).map(S=>S.spec)),y=(d&&!s?d.literals.length?d.literals:void 0:BE(n))?.filter(S=>!(S.kind==="string"&&_.has(S.value))),b=d?d.calls:th(a,m,r.maxCallsPerFile);return s&&(b=UE(b,th(s.markup,[],r.maxCallsPerFile),r.maxCallsPerFile)),{symbols:[...m,...g],...d?.truncated||u.length>m.length||g.length>=aa?{truncated:!0}:{},...c?{astFallback:!0}:{},...b.length>=(r.maxCallsPerFile??Ii)?{callsCapped:!0}:{},summary:zc(t,n),refs:h,pkg:fa(t,n),idents:d?.idents,calls:b,importedNames:d?.importedNames,importAliases:d?.importAliases.length?d.importAliases:void 0,relations:d?.relations?.length?d.relations:void 0,terms:d&&!s?d.terms:WE(n),literals:y?.length?y:void 0}}var NE,PE,LE,Qg,DE,Bd,jE,La=H(()=>{"use strict";$();_a();Cr();Od();tt();ft();Jg();Yg();li();et();NE=2e3,PE=new Set(["if","else","elif","for","while","do","switch","case","match","when","unless","until","catch","except","return","throw","raise","yield","await","typeof","instanceof","sizeof","delete","void","in","of","not","and","or","assert","defer","select","with","loop"]),LE=new Set(["function","def","func","fun","fn","class","sub","macro","proc"]),Qg=/\s/,DE=/\w/;Bd=512,jE=80});function rh(e){let t=new Zn,n=0;for(let r of e.split(` +`)){if(n++,t.full)break;let o=VE(r);for(let c of o.matchAll(nh))t.add("string",c[1]??c[2].replace(/''/g,"'"),n);let a=qE.exec(o)?.[1].trim(),l=a&&!/^[[{|>&*-]/.test(a)&&!zE.test(a)?a:void 0;if(l!==void 0&&!GE.test(l)){t.add("string",l,n);continue}for(let c of o.replace(nh," ").matchAll(HE))t.add("number",c[0].replace(/_/g,""),n)}return t.result()}function VE(e){let t;for(let n=0;n{"use strict";$();_a();nh=/"((?:\\.|[^"\\])*)"|'((?:[^']|'')*)'/g,zE=/"(?:\\.|[^"\\])*"|'(?:[^']|'')*'/,HE=/(?zd(e,m)),s=t.exclude?.map(m=>zd(e,m)),a=It(r),l=It(o),c=It(s);if(!a&&!l&&!c)return;let d=rd(r),u=rd(o),f=Fp(s);return({rel:m,directory:p})=>p?(!d||d(m))&&(!u||u(m))&&!f?.(m):(!a||a(m))&&(!l||l(m))&&!c?.(m)}function oh(e,t,n){let r=l=>It(l.map(c=>zd(e,c)))?.(n)??!0,o=t.scope===void 0?"":nr(e,t.scope),s={};o&&!r([o,`${o}/**`])&&(s.scope=t.scope),t.include?.length&&!r(t.include)&&(s.include=t.include);let a=t.exclude?.find(l=>r([l]));return a!==void 0&&(s.exclude=a),s.scope!==void 0||s.include||s.exclude!==void 0?s:void 0}function Fr(e,t){let n=Hd(e,t);return{maxFileBytes:t.maxBytes,maxFiles:t.maxFiles,gitignore:t.gitignore,ignoreDirs:t.ignoreDirs,...n?{filter:n}:{},...t.onSkip?{onSkip:t.onSkip}:{}}}function*ja(e,t){let n=Fr(e,t),{files:r,capped:o,excluded:s,oversized:a}=t.precomputedWalk??Xe(e,n),l=XE(e,t.out),c=t.precomputedWalk?n.filter:void 0;for(let d of r){if(l&&l(d)){t.onSkip?.({rel:d.rel,reason:"index-output",directory:!1,size:d.size});continue}if(c&&!c({rel:d.rel,abs:d.abs,directory:!1})){t.onSkip?.({rel:d.rel,reason:"filter",directory:!1,size:d.size});continue}yield{f:d,kind:mt(d.rel,d.ext),lang:rn(d.ext)}}return{capped:o,excluded:s,oversized:a}}function XE(e,t){if(!t)return;let n=le(t),r=je(n,le(e));if(r==="")return a=>!a.rel.includes("/")&&KE(a.rel);if(r!==".."&&!r.startsWith(`..${"/"}`)&&!Pe(r))return;let o=je(le(e),n);if(o===".."||o.startsWith(`..${"/"}`)||Pe(o))return;let s=o.split("/").join("/");return a=>a.rel===s||a.rel.startsWith(`${s}/`)}function Gd(e,t={}){let n=[],r=ja(e,t);for(let o=r.next();!o.done;o=r.next())o.value.kind==="code"&&n.push({f:o.value.f,lang:o.value.lang});return n}function Es(e,t={}){let n=[],r=ja(e,t),o=r.next();for(;!o.done;o=r.next())n.push(o.value.f);return{files:n,capped:o.value.capped}}function Ti(e,t={}){let n={},r=0,o=ja(e,t),s=o.next();for(;!s.done;s=o.next())n[s.value.lang]=(n[s.value.lang]??0)+1,r++;return{root:e,commit:en(e),fileCount:r,languages:n,capped:s.value.capped,excluded:s.value.excluded}}function Rt(e,t={}){let n=[],r={},o=new Ud,s=new Map,a=t.cache,l=a!==void 0,c=a===void 0,d=ja(e,t),u=d.next();for(;!u.done;u=d.next()){let{f,kind:m,lang:p}=u.value;r[p]=(r[p]??0)+1,s.set(f.rel,f.mtimeMs);let g=t.cache?.get(f.rel);if(!t.fullHash&&g&&g.size!==void 0&&g.mtimeMs!==void 0&&g.size===f.size&&g.mtimeMs===f.mtimeMs){n.push(g.record),m==="doc"&&o.defer(f.rel,f.abs);continue}let h=t.extracted?.get(f.rel),_=h&&h.size===f.size&&h.mtimeMs===f.mtimeMs&&(h.record||h.hash===g?.hash)?h:void 0,y=_?void 0:re(f.abs),b=_?_.hash:Re(y);if(g&&g.hash===b){n.push(g.record.size===f.size?g.record:{...g.record,size:f.size}),m==="doc"&&y&&o.set(f.rel,y),(g.size!==f.size||g.mtimeMs!==f.mtimeMs)&&(c=!0);continue}if(l=!1,c=!0,_?.record){n.push(_.record);continue}let S=m==="code"?Da(f.rel,f.ext,f.size,y,b,p,t):{rel:f.rel,ext:f.ext,size:f.size,lines:ih(y),hash:b,kind:m,lang:p,headings:[],symbols:[],refs:[]};if(m!=="code")if(y&&m==="doc"&&(td.has(f.ext)||f.ext===".rst")){let k=f.ext===".rst"?ld(f.rel,y):sd(y);S.title=k.title??We(f.rel),S.summary=k.summary,S.headings=k.headings,S.refs=k.refs}else y&&m==="doc"?S.title=We(f.rel):y&&m==="config"?(S.title=We(f.rel),S.literals=rh(y)):S.title=We(f.rel);m==="doc"&&y&&o.set(f.rel,y),n.push(S)}return n.sort(Sr(f=>f.rel)),a!==void 0&&n.length!==a.size&&(l=!1,c=!0),{root:e,commit:en(e),files:n,languages:r,docText:o,mtimes:s,capped:u.value.capped,excluded:u.value.excluded,...u.value.oversized?{oversized:u.value.oversized}:{},contentUnchanged:l,cacheDirty:c}}var Ud,JE,KE,Ut=H(()=>{"use strict";$();me();Ze();nn();St();In();Cr();_i();ce();id();cd();La();sh();Ud=class extends Map{pending=new Map;defer(t,n){this.pending.set(t,n)}load(t){let n=this.pending.get(t);if(n===void 0)return;this.pending.delete(t);let r=re(n);r&&super.set(t,r)}loadAll(){for(let t of[...this.pending.keys()])this.load(t)}get(t){return this.load(t),super.get(t)}has(t){return this.load(t),super.has(t)}set(t,n){return this.pending?.delete(t),super.set(t,n)}delete(t){let n=this.pending.delete(t);return super.delete(t)||n}clear(){this.pending.clear(),super.clear()}get size(){return this.loadAll(),super.size}forEach(t,n){this.loadAll(),super.forEach(t,n)}entries(){return this.loadAll(),super.entries()}keys(){return this.loadAll(),super.keys()}values(){return this.loadAll(),super.values()}[Symbol.iterator](){return this.entries()}};JE=["graph.json","symbols.json","cache.json","freshness.json","embeddings.bin"],KE=e=>JE.some(t=>e===t||e.startsWith(`${t}.tmp-`))});function Vd(e,t,n){return t.every(r=>e[r]===void 0||n(e[r]))}function rv(e,t){return ln(e)&&Qe(e.name)&&Qe(e.kind)&&e.file===t&&Fi(e.line)&&(e.endLine===void 0||Fi(e.endLine)&&e.endLine>=e.line)&&typeof e.exported=="boolean"&&Qe(e.lang)&&Vd(e,ev,Qe)}function sv(e){return ln(e)&&(e.kind==="import"||e.kind==="doc-link")&&Qe(e.spec)&&(e.soft===void 0||e.soft===!0)}function iv(e){return ln(e)&&Qe(e.name)&&Fi(e.line)&&(e.receiver===void 0||Qe(e.receiver))}function ov(e){return ln(e)&&Qe(e.local)&&Qe(e.name)&&(e.from===void 0||Qe(e.from))}function av(e){return ln(e)&&(e.kind==="extends"||e.kind==="implements")&&Qe(e.from)&&Qe(e.to)&&Fi(e.line)}function lv(e){return ln(e)&&(e.kind==="string"||e.kind==="number"||e.kind==="regex")&&Qe(e.value)&&Fi(e.line)}function Ba(e,t){return e===void 0||Array.isArray(e)&&e.every(t)}function cv(e,t){return ln(e)&&e.rel===t&&Qe(e.ext)&&Ua(e.size)&&Ua(e.lines)&&ch(e.hash)&&Qe(e.kind)&&QE.has(e.kind)&&Qe(e.lang)&&Vd(e,tv,Qe)&&Vd(e,nv,lh)&&lh(e.headings)&&Array.isArray(e.symbols)&&e.symbols.every(n=>rv(n,t))&&Array.isArray(e.refs)&&e.refs.every(sv)&&Ba(e.calls,iv)&&Ba(e.importAliases,ov)&&Ba(e.relations,av)&&Ba(e.literals,lv)&&(e.truncated===void 0||e.truncated===!0)&&(e.callsCapped===void 0||e.callsCapped===!0)&&(e.astFallback===void 0||e.astFallback===!0)&&(e.generated===void 0||e.generated==="minified"||e.generated==="bundle")}function dv(e,t){return ln(e)&&ch(e.hash)&&cv(e.record,t)&&e.hash===e.record.hash&&(e.size===void 0||Ua(e.size)&&e.size===e.record.size)&&(e.mtimeMs===void 0||typeof e.mtimeMs=="number"&&Number.isFinite(e.mtimeMs))}function dh(e){if(!ln(e)||e.schemaVersion!==5||e.extractorVersion!==17||!ln(e.files))return;let t=new Map;for(let[n,r]of Object.entries(e.files)){if(n.split("/").some(o=>o===""||o==="."||o==="..")||!dv(r,n))return;t.set(n,r)}return t}function Jd(e,t,n){let r=Bt(e.filter(o=>o.kind==="code").map(o=>o.ext)).filter(n);return t===void 0?{grammars:r}:{grammars:r,maxCallsPerFile:t}}function Kd(e,t){return e!==void 0&&e.maxCallsPerFile===t.maxCallsPerFile&&e.grammars.join(",")===t.grammars.join(",")}function za(e){if(!ln(e)||!Array.isArray(e.grammars)||!e.grammars.every(Qe))return;let t=e.maxCallsPerFile;if(t!==void 0&&!(typeof t=="number"&&Number.isFinite(t)&&t>0))return;let n=[...e.grammars];return t===void 0?{grammars:n}:{grammars:n,maxCallsPerFile:t}}function Oi(e,t,n){let r=Ni(t,n),o=new Map;for(let[s,a]of e)r(a.record.kind,a.record.ext)&&o.set(s,a);return o}function Ni(e,t){let n=new Set(e?.grammars),r=e!==void 0&&e.maxCallsPerFile===t.maxCallsPerFile;return(o,s)=>o!=="code"?!0:r?Bt([s]).every(a=>n.has(a)===t.ast(a)):!1}var ln,Qe,Ua,Fi,lh,ch,QE,ev,tv,nv,Pi=H(()=>{"use strict";$();bt();pt();ln=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Qe=e=>typeof e=="string",Ua=e=>typeof e=="number"&&Number.isSafeInteger(e)&&e>=0,Fi=e=>Ua(e)&&e>0,lh=e=>Array.isArray(e)&&e.every(Qe),ch=e=>Qe(e)&&/^[a-f0-9]{40}$/.test(e),QE=new Set(["code","doc","config","asset","other"]),ev=["parent","parentPath","signature","doc"],tv=["title","summary","pkg"],nv=["idents","importedNames","terms"]});var vs,Ha,Xd=H(()=>{$();vs=class{constructor(){throw new Error("worker_threads is not available in the browser build (the engine runs single-threaded here)")}},Ha=class{constructor(){throw new Error("worker_threads is not available in the browser build (the engine runs single-threaded here)")}}});function uv(e=xa(import.meta.url)){try{if(We(e)==="engine.mjs")return Mr(e).href;let t=j(Ce(e),"engine.mjs");return Q(t)?Mr(t).href:void 0}catch{return}}function uh(e){let t=F.env.CODEINDEX_WORKERS,n=e??(t!==void 0&&t!==""?Number(t):void 0);if(n!==void 0)return Number.isFinite(n)&&n>0?Math.floor(n):0;let r=1;try{r=typeof wa=="function"?wa():jp().length}catch{r=1}return Math.max(0,Math.min(r-1,8))}async function pv(e,t){await an(e.grammarKeys);let n=e.grammarKeys.filter(o=>De(o)),r=[];for(let o of e.jobs){let s,a;try{let u=Me(o.abs);s=u.size,a=u.mtimeMs}catch{continue}let l=re(o.abs),c=Re(l);if(c===o.cachedHash){r.push({rel:o.rel,size:s,mtimeMs:a,hash:c});continue}let d=Da(o.rel,o.ext,s,l,c,rn(o.ext),{maxCallsPerFile:e.maxCallsPerFile});r.push({rel:o.rel,size:s,mtimeMs:a,hash:c,record:d})}t({ready:n,records:r})}async function fh(e,t,n,r={}){if(n<2||e.length===0)return;let o=r.engineUrl??uv();if(!o)return;let s=t.filter(m=>De(m)).sort(),a=Math.min(n,e.length),l=`import { runExtractWorker } from ${JSON.stringify(o)}; import { parentPort, workerData } from "node:worker_threads"; const base = workerData.input; const post = (o) => parentPort.postMessage(o); @@ -36,83 +36,83 @@ runExtractWorker({ ...base, jobs: [] }, post).then(() => { runExtractWorker({ ...base, jobs: m.jobs }, post).catch(fail); }); }).catch(fail); -`,c=new Map,d=0,u=()=>{let m=e.length-d;if(m<=0)return[];let p=Math.max(mv,Math.ceil(m/(a*fv))),g=e.slice(d,d+p);return d+=g.length,g},f=[];try{return await Promise.all(Array.from({length:a},()=>new Promise((m,p)=>{let g=new vs(l,{eval:!0,workerData:{input:{jobs:[],grammarKeys:s,maxCallsPerFile:r.maxCallsPerFile}}});f.push(g);let h=!1,_,y=()=>{_&&clearTimeout(_),_=setTimeout(()=>{b(()=>p(new Error("extraction worker timed out"))),g.terminate()},cv)},b=v=>{_&&clearTimeout(_),h=!0,v()};y();let x=0,k=()=>{let v=u();return v.length===0?!1:(x++,g.postMessage({jobs:v}),!0)};g.on("message",v=>{if(!h){if("error"in v){b(()=>p(new Error(v.error))),g.terminate();return}if(v.ready.slice().sort().join(",")!==s.join(",")){b(()=>p(new Error("extraction worker grammar tier mismatch"))),g.terminate();return}for(let T of v.records)c.set(T.rel,T.record?{size:T.size,mtimeMs:T.mtimeMs,hash:T.hash,record:T.record}:{size:T.size,mtimeMs:T.mtimeMs,hash:T.hash});if(x===0?k():x--,k(),x===0){b(()=>m()),g.postMessage({done:!0}),g.terminate();return}y()}}),g.once("error",v=>b(()=>p(v))),g.once("exit",v=>{h||b(()=>p(new Error(`extraction worker exited with ${v} before finishing`)))})}))),c}catch{for(let m of f)m.terminate();return}}async function yn(e,t={}){let n=dh(t.workers);if(n<2)return vt(e,t);let r=t.precomputedWalk??Xe(e,$r(e,t)),o={...t,precomputedWalk:r},s=[];for(let{f:d}of Hd(e,{...o,onSkip:void 0})){let u=t.cache?.get(d.rel);!t.fullHash&&u&&u.size!==void 0&&u.mtimeMs!==void 0&&u.size===d.size&&u.mtimeMs===d.mtimeMs||s.push(u?{abs:d.abs,rel:d.rel,ext:d.ext,cachedHash:u.hash}:{abs:d.abs,rel:d.rel,ext:d.ext})}if(s.length===0)return vt(e,o);if(!(t.workers!==void 0||(O.env.CODEINDEX_WORKERS??"")!=="")&&s.lengthd.ext)),c=await uh(s,l,n,{maxCallsPerFile:t.maxCallsPerFile});return vt(e,c?{...o,extracted:c}:o)}var cv,dv,fv,mv,Pi=z(()=>{"use strict";I();Ee();_i();fe();bi();Kd();xt();Ze();Rr();pt();Ut();cv=600*1e3,dv=200;fv=4,mv=4});function zt(e,t=Je){return ae(e,t)}function Rt(e){let t=new Map;for(let n of e.files)t.set(n.rel,{hash:n.hash,record:n,size:n.size,mtimeMs:e.mtimes.get(n.rel)});return t}function Xd(e,t,n=!1){let r=e.files.filter(o=>mt(o.rel,o.ext)==="code");return n&&r.length>0||r.some(o=>{let s=t.get(o.rel);return!s||s.size!==o.size||s.mtimeMs!==o.mtimeMs})}function Zd(e,t){return e>=t}function Li(e,t=Je){let n=Di(e,t);return"unusable"in n?void 0:n}function Di(e,t=Je){let n,r;try{let a=j(zt(e,t),"cache.json");n=ie(a,"utf8"),r=Ae(a).mtimeMs}catch(a){let l=a.code;return{unusable:l==="ENOENT"||l==="ENOTDIR"?"absent":"unreadable"}}let o;try{o=JSON.parse(n)}catch{return{unusable:"corrupt"}}if(o===null||typeof o!="object"||Array.isArray(o)||typeof o.schemaVersion!="number")return{unusable:"corrupt"};if(o.schemaVersion!==5)return{unusable:"schema"};if(o.extractorVersion!==17)return{unusable:"extractor"};let s=ch(o);if(!s)return{unusable:"corrupt"};for(let[a,l]of s)if(l.mtimeMs!==void 0&&Zd(l.mtimeMs,r)){let{mtimeMs:c,...d}=l;s.set(a,d)}return{cacheMap:s,meta:{engineVersion:o.engineVersion,commit:o.commit,graphSha1:o.graphSha1,symbolsSha1:o.symbolsSha1,embed:o.embed,extraction:Ua(o.extraction)}}}function Rs(e,t,n){if(n===void 0)return;let r;try{r=ie(j(e,`${t}.json`))}catch{return}return Re(r)===n?r:void 0}function fh(e){if(e)try{let t=JSON.parse(e.toString("utf8"));return t.schemaVersion===5?t:void 0}catch{return}}function pv(e,t){if(e.commit===t)return e;let{schemaVersion:n,version:r,commit:o,...s}=e;return{schemaVersion:n,version:r,commit:t,...s}}function Fr(e,t,n,r=Je){if(!t.contentUnchanged||n.engineVersion!==Te||n.graphSha1===void 0||n.symbolsSha1===void 0)return;let o=zt(e,r),s=a=>a==="graph"?n.graphSha1:n.symbolsSha1;return{bytes:a=>a==="graph"&&n.commit!==t.commit?void 0:Rs(o,a,s(a)),graph:()=>{let a=fh(Rs(o,"graph",n.graphSha1));return a&&pv(a,t.commit)},symbols:()=>fh(Rs(o,"symbols",n.symbolsSha1))}}function mh(e,t,n,r=Je){return ph(t,Fr(e,t,n,r))}function ph(e,t){let n=t?.graph(),r=n?t?.symbols():void 0;return n&&r?{scan:e,graph:n,symbols:r}:void 0}function Yd(e,t,n=Je){let r=Li(e,n);if(!r)return;let o=Fi(r.cacheMap,r.meta.extraction,{maxCallsPerFile:t.maxCallsPerFile,ast:Le}),s=vt(e,{...t,cache:o});return{scan:s,cacheMap:Rt(s),arts:mh(e,s,r.meta,n)}}async function Ha(e,t,n,r=Je){let o=Li(e,r);if(!o)return;let{ast:s,workers:a,...l}=t,c=l.precomputedWalk??Xe(e,$r(e,l)),d=s===!1?new Set:Ra(),u=y=>Fi(o.cacheMap,o.meta.extraction,{maxCallsPerFile:l.maxCallsPerFile,ast:y}),f=u(y=>Le(y)||d.has(y));Xd(c,f,l.fullHash)&&(await n(),f=u(Le));let p=await yn(e,{...l,workers:a,cache:f,precomputedWalk:c}),g=Fr(e,p,o.meta,r),h=!1,_;return{scan:p,cacheMap:Rt(p),loadArtifacts:()=>(h||(h=!0,_=ph(p,g)),_),...g?{artifacts:g}:{}}}var Je,tr=z(()=>{"use strict";I();Ee();fe();_t();Ni();pt();Ut();Pi();xt();Ze();Mn();Je=".codeindex"});function eu(e){if(e===!1)return()=>!1;let t=Ra();return n=>Le(n)||t.has(n)}function tu(e,t,n,r=!1){let o={indexed:t.size,unchanged:0,touched:0,modified:0,added:0,deleted:0,reextract:0};for(let s of e){let a=t.get(s.rel);a?n(s)?!r&&a.size===s.size&&a.mtimeMs===s.mtimeMs?o.unchanged++:Re(se(s.abs))===a.hash?o.touched++:o.modified++:o.reextract++:o.added++}return o.deleted=t.size-(e.length-o.added),o}function gh(e,t,n,r){let o=Object.create(null);for(let s of e.files)o[s.rel]=[s.hash,s.size,e.mtimes.get(s.rel)];return JSON.stringify({schemaVersion:5,extractorVersion:17,engineVersion:Te,commit:e.commit,graphSha1:t.graphSha1,symbolsSha1:t.symbolsSha1,embed:t.embed,extraction:n,cache:r,files:o})+` -`}function nu(e,t=Je){let n=zt(e,t),r,o;try{r=JSON.parse(ie(j(n,Qd),"utf8"));let{size:d,mtimeMs:u}=Ae(j(n,"cache.json"));o={size:d,mtimeMs:u}}catch{return}if(r===null||typeof r!="object"||r.schemaVersion!==5||r.extractorVersion!==17)return;let s=r.cache;if(!s||s.size!==o.size||s.mtimeMs!==o.mtimeMs)return;let a=d=>typeof d=="string"?d:void 0,l=r.embed;if(l!==void 0&&(l===null||typeof l!="object")||typeof r.files!="object"||r.files===null)return;let c=new Map;for(let[d,u]of Object.entries(r.files)){if(!Array.isArray(u)||!hv(u[0])||!yv(u[1])||!_v(u[2]))return;c.set(d,Zd(u[2],o.mtimeMs)?{hash:u[0],size:u[1]}:{hash:u[0],size:u[1],mtimeMs:u[2]})}return{meta:{engineVersion:a(r.engineVersion),commit:a(r.commit),graphSha1:a(r.graphSha1),symbolsSha1:a(r.symbolsSha1),embed:l&&{embedVersion:typeof l.embedVersion=="number"?l.embedVersion:void 0,modelId:a(l.modelId),sha1:a(l.sha1)},extraction:Ua(r.extraction)},cache:o,files:c}}function ru(e,t,n,r=Je){let o=nu(e,r);if(!o)return;let s=Oi(o.meta.extraction,{maxCallsPerFile:t.maxCallsPerFile,ast:n}),{files:a,capped:l}=Es(e,t),c=tu(a,o.files,d=>s(mt(d.rel,d.ext),d.ext),t.fullHash);return{fresh:o,walked:a,capped:l,drift:c,commit:Qt(e)}}function hh(e,t,n=Je){let{ast:r,...o}=t,s=ru(e,o,eu(r),n);if(!s||!gv(s.drift))return;let a=Fr(e,{contentUnchanged:!0,commit:s.commit},s.fresh.meta,n);return a&&{artifacts:a,fileCount:s.walked.length}}var Qd,gv,hv,yv,_v,su=z(()=>{"use strict";I();Ee();fe();_t();Ni();pt();Mn();tr();Ut();Ze();tn();xt();Qd="freshness.json";gv=e=>!(e.added||e.deleted||e.modified||e.reextract);hv=e=>typeof e=="string"&&/^[a-f0-9]{40}$/.test(e),yv=e=>typeof e=="number"&&Number.isSafeInteger(e)&&e>=0,_v=e=>typeof e=="number"&&Number.isFinite(e)});function ji(e,t={},n=Je){let{ast:r,...o}=t,s=zt(e,n),a=Qt(e)??null,c=nu(e,n)??Di(e,n);if("unusable"in c)return{indexDir:s,present:c.unusable!=="absent",usable:!1,reason:c.unusable,engineVersion:{index:null,current:Te},commit:{index:null,head:a},files:null,artifactsFresh:!1,stale:[c.unusable]};let d=c.meta,u="files"in c?c.files:c.cacheMap,f=Oi(d.extraction,{maxCallsPerFile:o.maxCallsPerFile,ast:eu(r)}),m=Es(e,o).files,p=tu(m,u,h=>f(mt(h.rel,h.ext),h.ext),o.fullHash),g=[];return d.engineVersion!==Te&&g.push("engine-version"),p.reextract&&g.push("extraction"),(p.added||p.deleted||p.modified)&&g.push("files"),Rs(s,"graph",d.graphSha1)||g.push("graph.json"),Rs(s,"symbols",d.symbolsSha1)||g.push("symbols.json"),{indexDir:s,present:!0,usable:!0,engineVersion:{index:d.engineVersion??null,current:Te},commit:{index:d.commit??null,head:a},files:p,artifactsFresh:g.length===0,stale:g}}var Ga=z(()=>{"use strict";I();_t();Ni();Mn();tr();Ut();tn();su()});function Pv(e,t,n){let r=e.dirFilesMemo??=new Map,o=n+"\0"+t,s=r.get(o);return s||r.set(o,s=(e.filesByDir.get(t)??[]).filter(a=>a.endsWith(n)).sort()),s}function cu(e){let t=Ie(e).split("/").filter(o=>o!=="."),n=[],r=0;for(;rt?1:0)}function Or(e){let t="",n=!1;for(let o=0;o{let m=e.length-d;if(m<=0)return[];let p=Math.max(hv,Math.ceil(m/(a*gv))),g=e.slice(d,d+p);return d+=g.length,g},f=[];try{return await Promise.all(Array.from({length:a},()=>new Promise((m,p)=>{let g=new vs(l,{eval:!0,workerData:{input:{jobs:[],grammarKeys:s,maxCallsPerFile:r.maxCallsPerFile}}});f.push(g);let h=!1,_,y=()=>{_&&clearTimeout(_),_=setTimeout(()=>{b(()=>p(new Error("extraction worker timed out"))),g.terminate()},fv)},b=R=>{_&&clearTimeout(_),h=!0,R()};y();let S=0,k=()=>{let R=u();return R.length===0?!1:(S++,g.postMessage({jobs:R}),!0)};g.on("message",R=>{if(!h){if("error"in R){b(()=>p(new Error(R.error))),g.terminate();return}if(R.ready.slice().sort().join(",")!==s.join(",")){b(()=>p(new Error("extraction worker grammar tier mismatch"))),g.terminate();return}for(let I of R.records)c.set(I.rel,I.record?{size:I.size,mtimeMs:I.mtimeMs,hash:I.hash,record:I.record}:{size:I.size,mtimeMs:I.mtimeMs,hash:I.hash});if(S===0?k():S--,k(),S===0){b(()=>m()),g.postMessage({done:!0}),g.terminate();return}y()}}),g.once("error",R=>b(()=>p(R))),g.once("exit",R=>{h||b(()=>p(new Error(`extraction worker exited with ${R} before finishing`)))})}))),c}catch{for(let m of f)m.terminate();return}}async function bn(e,t={}){let n=uh(t.workers);if(n<2)return Rt(e,t);let r=t.precomputedWalk??Xe(e,Fr(e,t)),o={...t,precomputedWalk:r},s=[];for(let{f:d}of Gd(e,{...o,onSkip:void 0})){let u=t.cache?.get(d.rel);!t.fullHash&&u&&u.size!==void 0&&u.mtimeMs!==void 0&&u.size===d.size&&u.mtimeMs===d.mtimeMs||s.push(u?{abs:d.abs,rel:d.rel,ext:d.ext,cachedHash:u.hash}:{abs:d.abs,rel:d.rel,ext:d.ext})}if(s.length===0)return Rt(e,o);if(!(t.workers!==void 0||(F.env.CODEINDEX_WORKERS??"")!=="")&&s.lengthd.ext)),c=await fh(s,l,n,{maxCallsPerFile:t.maxCallsPerFile});return Rt(e,c?{...o,extracted:c}:o)}var fv,mv,gv,hv,Li=H(()=>{"use strict";$();ke();bi();me();wi();Xd();St();Ze();Cr();pt();Ut();fv=600*1e3,mv=200;gv=4,hv=4});function zt(e,t=Ve){return le(e,t)}function Ct(e){let t=new Map;for(let n of e.files)t.set(n.rel,{hash:n.hash,record:n,size:n.size,mtimeMs:e.mtimes.get(n.rel)});return t}function Zd(e,t,n=!1){let r=e.files.filter(o=>mt(o.rel,o.ext)==="code");return n&&r.length>0||r.some(o=>{let s=t.get(o.rel);return!s||s.size!==o.size||s.mtimeMs!==o.mtimeMs})}function Yd(e,t){return e>=t}function Di(e,t=Ve){let n=ji(e,t);return"unusable"in n?void 0:n}function ji(e,t=Ve){let n,r;try{let a=j(zt(e,t),"cache.json");n=ie(a,"utf8"),r=Me(a).mtimeMs}catch(a){let l=a.code;return{unusable:l==="ENOENT"||l==="ENOTDIR"?"absent":"unreadable"}}let o;try{o=JSON.parse(n)}catch{return{unusable:"corrupt"}}if(o===null||typeof o!="object"||Array.isArray(o)||typeof o.schemaVersion!="number")return{unusable:"corrupt"};if(o.schemaVersion!==5)return{unusable:"schema"};if(o.extractorVersion!==17)return{unusable:"extractor"};let s=dh(o);if(!s)return{unusable:"corrupt"};for(let[a,l]of s)if(l.mtimeMs!==void 0&&Yd(l.mtimeMs,r)){let{mtimeMs:c,...d}=l;s.set(a,d)}return{cacheMap:s,meta:{engineVersion:o.engineVersion,commit:o.commit,graphSha1:o.graphSha1,symbolsSha1:o.symbolsSha1,embed:o.embed,extraction:za(o.extraction)}}}function Rs(e,t,n){if(n===void 0)return;let r;try{r=ie(j(e,`${t}.json`))}catch{return}return Re(r)===n?r:void 0}function mh(e){if(e)try{let t=JSON.parse(e.toString("utf8"));return t.schemaVersion===5?t:void 0}catch{return}}function yv(e,t){if(e.commit===t)return e;let{schemaVersion:n,version:r,commit:o,...s}=e;return{schemaVersion:n,version:r,commit:t,...s}}function Or(e,t,n,r=Ve){if(!t.contentUnchanged||n.engineVersion!==Ie||n.graphSha1===void 0||n.symbolsSha1===void 0)return;let o=zt(e,r),s=a=>a==="graph"?n.graphSha1:n.symbolsSha1;return{bytes:a=>a==="graph"&&n.commit!==t.commit?void 0:Rs(o,a,s(a)),graph:()=>{let a=mh(Rs(o,"graph",n.graphSha1));return a&&yv(a,t.commit)},symbols:()=>mh(Rs(o,"symbols",n.symbolsSha1))}}function ph(e,t,n,r=Ve){return gh(t,Or(e,t,n,r))}function gh(e,t){let n=t?.graph(),r=n?t?.symbols():void 0;return n&&r?{scan:e,graph:n,symbols:r}:void 0}function Qd(e,t,n=Ve){let r=Di(e,n);if(!r)return;let o=Oi(r.cacheMap,r.meta.extraction,{maxCallsPerFile:t.maxCallsPerFile,ast:De}),s=Rt(e,{...t,cache:o});return{scan:s,cacheMap:Ct(s),arts:ph(e,s,r.meta,n)}}async function Ga(e,t,n,r=Ve){let o=Di(e,r);if(!o)return;let{ast:s,workers:a,...l}=t,c=l.precomputedWalk??Xe(e,Fr(e,l)),d=s===!1?new Set:Ca(),u=y=>Oi(o.cacheMap,o.meta.extraction,{maxCallsPerFile:l.maxCallsPerFile,ast:y}),f=u(y=>De(y)||d.has(y));Zd(c,f,l.fullHash)&&(await n(),f=u(De));let p=await bn(e,{...l,workers:a,cache:f,precomputedWalk:c}),g=Or(e,p,o.meta,r),h=!1,_;return{scan:p,cacheMap:Ct(p),loadArtifacts:()=>(h||(h=!0,_=gh(p,g)),_),...g?{artifacts:g}:{}}}var Ve,rr=H(()=>{"use strict";$();ke();me();bt();Pi();pt();Ut();Li();St();Ze();In();Ve=".codeindex"});function tu(e){if(e===!1)return()=>!1;let t=Ca();return n=>De(n)||t.has(n)}function nu(e,t,n,r=!1){let o={indexed:t.size,unchanged:0,touched:0,modified:0,added:0,deleted:0,reextract:0};for(let s of e){let a=t.get(s.rel);a?n(s)?!r&&a.size===s.size&&a.mtimeMs===s.mtimeMs?o.unchanged++:Re(re(s.abs))===a.hash?o.touched++:o.modified++:o.reextract++:o.added++}return o.deleted=t.size-(e.length-o.added),o}function hh(e,t,n,r){let o=Object.create(null);for(let s of e.files)o[s.rel]=[s.hash,s.size,e.mtimes.get(s.rel)];return JSON.stringify({schemaVersion:5,extractorVersion:17,engineVersion:Ie,commit:e.commit,graphSha1:t.graphSha1,symbolsSha1:t.symbolsSha1,embed:t.embed,extraction:n,cache:r,files:o})+` +`}function ru(e,t=Ve){let n=zt(e,t),r,o;try{r=JSON.parse(ie(j(n,eu),"utf8"));let{size:d,mtimeMs:u}=Me(j(n,"cache.json"));o={size:d,mtimeMs:u}}catch{return}if(r===null||typeof r!="object"||r.schemaVersion!==5||r.extractorVersion!==17)return;let s=r.cache;if(!s||s.size!==o.size||s.mtimeMs!==o.mtimeMs)return;let a=d=>typeof d=="string"?d:void 0,l=r.embed;if(l!==void 0&&(l===null||typeof l!="object")||typeof r.files!="object"||r.files===null)return;let c=new Map;for(let[d,u]of Object.entries(r.files)){if(!Array.isArray(u)||!bv(u[0])||!wv(u[1])||!xv(u[2]))return;c.set(d,Yd(u[2],o.mtimeMs)?{hash:u[0],size:u[1]}:{hash:u[0],size:u[1],mtimeMs:u[2]})}return{meta:{engineVersion:a(r.engineVersion),commit:a(r.commit),graphSha1:a(r.graphSha1),symbolsSha1:a(r.symbolsSha1),embed:l&&{embedVersion:typeof l.embedVersion=="number"?l.embedVersion:void 0,modelId:a(l.modelId),sha1:a(l.sha1)},extraction:za(r.extraction)},cache:o,files:c}}function su(e,t,n,r=Ve){let o=ru(e,r);if(!o)return;let s=Ni(o.meta.extraction,{maxCallsPerFile:t.maxCallsPerFile,ast:n}),{files:a,capped:l}=Es(e,t),c=nu(a,o.files,d=>s(mt(d.rel,d.ext),d.ext),t.fullHash);return{fresh:o,walked:a,capped:l,drift:c,commit:en(e)}}function yh(e,t,n=Ve){let{ast:r,...o}=t,s=su(e,o,tu(r),n);if(!s||!_v(s.drift))return;let a=Or(e,{contentUnchanged:!0,commit:s.commit},s.fresh.meta,n);return a&&{artifacts:a,fileCount:s.walked.length}}var eu,_v,bv,wv,xv,iu=H(()=>{"use strict";$();ke();me();bt();Pi();pt();In();rr();Ut();Ze();nn();St();eu="freshness.json";_v=e=>!(e.added||e.deleted||e.modified||e.reextract);bv=e=>typeof e=="string"&&/^[a-f0-9]{40}$/.test(e),wv=e=>typeof e=="number"&&Number.isSafeInteger(e)&&e>=0,xv=e=>typeof e=="number"&&Number.isFinite(e)});function Wi(e,t={},n=Ve){let{ast:r,...o}=t,s=zt(e,n),a=en(e)??null,c=ru(e,n)??ji(e,n);if("unusable"in c)return{indexDir:s,present:c.unusable!=="absent",usable:!1,reason:c.unusable,engineVersion:{index:null,current:Ie},commit:{index:null,head:a},files:null,artifactsFresh:!1,stale:[c.unusable]};let d=c.meta,u="files"in c?c.files:c.cacheMap,f=Ni(d.extraction,{maxCallsPerFile:o.maxCallsPerFile,ast:tu(r)}),m=Es(e,o).files,p=nu(m,u,h=>f(mt(h.rel,h.ext),h.ext),o.fullHash),g=[];return d.engineVersion!==Ie&&g.push("engine-version"),p.reextract&&g.push("extraction"),(p.added||p.deleted||p.modified)&&g.push("files"),Rs(s,"graph",d.graphSha1)||g.push("graph.json"),Rs(s,"symbols",d.symbolsSha1)||g.push("symbols.json"),{indexDir:s,present:!0,usable:!0,engineVersion:{index:d.engineVersion??null,current:Ie},commit:{index:d.commit??null,head:a},files:p,artifactsFresh:g.length===0,stale:g}}var qa=H(()=>{"use strict";$();bt();Pi();In();rr();Ut();nn();iu()});function jv(e,t,n){let r=e.dirFilesMemo??=new Map,o=n+"\0"+t,s=r.get(o);return s||r.set(o,s=(e.filesByDir.get(t)??[]).filter(a=>a.endsWith(n)).sort()),s}function du(e){let t=Ae(e).split("/").filter(o=>o!=="."),n=[],r=0;for(;rt?1:0)}function Nr(e){let t="",n=!1;for(let o=0;o=Hv)){if(typeof e=="string")t.includes(e)||t.push(e);else if(Array.isArray(e))for(let n of e)Ja(n,t);else if(e!==null&&typeof e=="object"){let n=Object.keys(e).sort((r,o)=>vh(r)-vh(o)||(ro?1:0));for(let r of n)Ja(e[r],t)}}}function Gv(e){if(e==null)return[];let t=[],n=(r,o)=>{let s=[];Ja(o,s),s.length&&t.push({key:r,star:r.includes("*"),targets:s})};if(typeof e=="string"||Array.isArray(e))n(".",e);else if(typeof e=="object"){let r=Object.keys(e);if(r.every(o=>o==="."||o.startsWith("./")))for(let o of r)n(o,e[o]);else n(".",e)}return t.sort((r,o)=>Number(r.star)-Number(o.star)||o.key.length-r.key.length||(r.keyNumber(n.star)-Number(r.star)||r.key.length-n.key.length||$(n.key,r.key)),t}function Rh(e,t){for(let n of e){if(!n.star){if(n.key===t)return n.targets;continue}let r=n.key.indexOf("*"),o=n.key.slice(0,r),s=n.key.slice(r+1);if(!t.startsWith(o)||!t.endsWith(s)||t.lengthl.replace(/\*/g,()=>a))}}function Vv(e,t){let n=[],r=o=>{let s=/^\s*([^\s=]+)(?:\s+v\S+)?\s*=>\s*(\S+)(?:\s+v\S+)?\s*$/.exec(o);if(!s)return;let a=s[2];if(!/^\.\.?\//.test(a))return;let l=Ie(q.join(t,a));l.startsWith("..")||n.push({from:s[1],toDir:l})};for(let o of e.matchAll(/^[ \t]*replace[ \t]+([^(\r\n][^\r\n]*)$/gm))r(o[1]);for(let o of e.matchAll(/^[ \t]*replace[ \t]*\(([\s\S]*?)\)/gm))for(let s of o[1].split(/\r?\n/))r(s);return n}function Jv(e,t){let n={dir:t,deps:new Map},r=l=>{let c=/^(?:"([^"]*)"|'([^']*)')$/.exec(l);return c?c[1]??c[2]:void 0},o=(l,c)=>{let d=l.get(c);return d||l.set(c,d={}),d},s=(l,c,d)=>{c==="package"||c==="path"?l[c]=r(d)??l[c]:c==="workspace"&&(l.workspace=d==="true")},a="";for(let l of e.split(/\r?\n/)){let c=l.replace(/^((?:[^"'#]|"[^"]*"|'[^']*')*)#.*$/,"$1").trim(),d=/^\[\[?([^\]]+)\]\]?$/.exec(c);if(d){a=d[1].replace(/["'\s]/g,""),(a==="workspace"||a.startsWith("workspace."))&&(n.workspaceDeps??=new Map);continue}let u=/^([\w.-]+)\s*=\s*(.+)$/.exec(c);if(!u)continue;let f=u[1],m=u[2];if(a==="package"){f==="name"?n.packageName=r(m)??n.packageName:f==="edition"?n.edition=r(m)??(/workspace\s*=\s*true/.test(m)?"workspace":void 0):f==="edition.workspace"&&(n.edition="workspace");continue}if(a==="lib"){f==="name"?n.libName=r(m)??n.libName:f==="path"&&(n.libPath=r(m)??n.libPath);continue}let p=/^(?:(workspace)\.|target\..+\.)?(?:dev-|build-)?dependencies(?:\.(.+))?$/.exec(a);if(!p)continue;let g=p[1]?n.workspaceDeps:n.deps;if(p[2]){s(o(g,p[2]),f,m);continue}let h=/^([\w-]+)\.(package|path|workspace)$/.exec(f);if(h)s(o(g,h[1]),h[2],m);else if(m.startsWith("{")){let _=o(g,f);for(let y of m.matchAll(/\b(package|path|workspace)\s*=\s*("[^"]*"|'[^']*'|true|false)/g))s(_,y[1],y[2])}}return n}function Kv(e,t){let n=[],r=[...t].filter(c=>c==="Cargo.toml"||c.endsWith("/Cargo.toml"));for(let c of r.sort($))n.push(Jv(se(j(e,c)),c.includes("/")?q.dirname(c):""));let o=n.filter(c=>c.packageName!==void 0),s=new Map(o.map(c=>[c.dir,c])),a=(c,d)=>!d||c===d||c.startsWith(d+"/"),l=[];for(let c of o){let d=Ie(q.join(c.dir,"src")).replace(/^\.$/,""),u=c.libPath?Ie(q.join(c.dir,c.libPath)):void 0,f=u&&!u.startsWith("..")&&t.has(u)?u:void 0,m=f?f.includes("/")?q.dirname(f):"":d,p=f??Bv(t,[q.join(d,"lib.rs"),q.join(d,"main.rs")]),g=n.filter(_=>_.workspaceDeps&&a(c.dir,_.dir)).sort((_,y)=>y.dir.length-_.dir.length)[0],h=new Map;for(let[_,y]of[...c.deps].sort((b,x)=>$(b[0],x[0]))){let b=y.workspace?g?.workspaceDeps?.get(_):y;if(!b?.package)continue;let x=y.workspace?g.dir:c.dir,k=b.path?s.get(Ie(q.join(x,b.path)).replace(/^\.$/,"")):o.find(v=>v.packageName===b.package);k&&h.set(_.replace(/-/g,"_"),k.dir)}l.push({name:(c.libName??c.packageName).replace(/-/g,"_"),dir:c.dir,srcDir:m,rootFile:p,...h.size?{renames:h}:{},...c.edition===void 0||c.edition==="2015"?{edition2015:!0}:{}})}return l.sort((c,d)=>d.dir.length-c.dir.length||(c.dirR.rel)),n=new Map,r=new Set;for(let R of e.files){let C=R.rel.includes("/")?q.dirname(R.rel):"",A=n.get(C);A||n.set(C,A=[]),A.push(R.rel);let S=C;for(;S&&!r.has(S);)r.add(S),S=S.includes("/")?q.dirname(S):""}let o=[],s=[],a=[],l=[];for(let R of t){if(R!=="package.json"&&!R.endsWith("/package.json"))continue;let C=Or(se(j(e.root,R)));if(C===void 0){s.push(`unparseable ${R} \u2014 skipped for workspace resolution`);continue}let A=R.includes("/")?q.dirname(R):"";if(l.push({dir:A,importEntries:qv(C.imports)}),typeof C.name!="string")continue;let S=[C.source,C.main,C.module,C.types].filter(w=>typeof w=="string");a.push({name:C.name,dir:A,exportEntries:Gv(C.exports),mainCandidates:S,...typeof C.tsconfig=="string"?{tsconfig:C.tsconfig}:{}})}a.sort((R,C)=>C.name.length-R.name.length),l.sort((R,C)=>C.dir.length-R.dir.length||$(R.dir,C.dir));let c=[];for(let R of t){let C=R.slice(R.lastIndexOf("/")+1);if(C!=="tsconfig.json"&&C!=="jsconfig.json"&&!(R==="tsconfig.base.json"))continue;let S=R.includes("/")?q.dirname(R):"",w=Nh(e.root,t,R,o,new Set,a);if(!w||!w.paths&&w.baseUrl===void 0)continue;let E=w.baseUrl===void 0?w.pathsDir:w.baseUrl.startsWith(Va)?Ie(q.join(S,w.baseUrl.slice(Va.length))).replace(/^\.$/,""):Ie(q.join(w.baseUrlDir,w.baseUrl)).replace(/^\.$/,""),P=q.relative(E,S)||".",N=[];for(let[L,H]of Object.entries(w.paths??{})){if(!Array.isArray(H))continue;let Y=L.endsWith("*");N.push({prefix:Y?L.slice(0,-1):L,star:Y,targets:H.filter(oe=>typeof oe=="string").map(oe=>oe.startsWith(Va)?q.join(P,oe.slice(Va.length)):oe)})}N.sort((L,H)=>Number(L.star)-Number(H.star)||H.prefix.length-L.prefix.length||$(L.prefix,H.prefix)),!(!N.length&&w.baseUrl===void 0)&&c.push({dir:S,file:C,baseUrl:E,baseUrlSet:w.baseUrl!==void 0,paths:N})}let d=R=>R==="tsconfig.json"?0:R==="jsconfig.json"?1:2;c.sort((R,C)=>C.dir.length-R.dir.length||d(R.file)-d(C.file)),o.push(...s);let u=[];for(let R of t){if(R!=="go.mod"&&!R.endsWith("/go.mod"))continue;let C=se(j(e.root,R)),A=/^\s*module\s+(\S+)/m.exec(C);if(!A)continue;let S=R.includes("/")?q.dirname(R):"";u.push({module:A[1],dir:S,replaces:Vv(C,S)})}u.sort((R,C)=>C.dir.length-R.dir.length||(R.dirC.prefix.length-R.prefix.length);let b=new Map;for(let R of e.files){if(R.ext!==".cs"||!R.pkg)continue;let C=b.get(R.pkg);C||b.set(R.pkg,C=[]),C.push(R.rel)}for(let R of b.values())R.sort($);let x=[...m].sort(Bi),k=new Map,v=[...t].filter(R=>R==="pubspec.yaml"||R.endsWith("/pubspec.yaml"));for(let R of v.sort($)){let C=/^name:[ \t]*["']?(\w+)["']?[ \t]*(?:#.*)?$/m.exec(se(j(e.root,R)));C&&!k.has(C[1])&&k.set(C[1],R.includes("/")?q.dirname(R):"")}let T=new Set([""]);for(let R of r){let C=R.slice(R.lastIndexOf("/")+1);(C==="lua"||C==="src"||C==="lib")&&T.add(R)}let F=new Map;for(let R of e.files)if(!(R.ext!==".ex"&&R.ext!==".exs"))for(let C of R.symbols){if(C.kind!=="module")continue;let A=C.parentPath?C.parentPath.replace(/\//g,"."):C.parent,S=A?A+"."+C.name:C.name,w=F.get(S);(w===void 0||$(R.rel,w)<0)&&F.set(S,R.rel)}return{fileSet:t,dirSet:r,filesByDir:n,tsConfigs:c,goModules:u,rustCrates:f,javaRoots:x,jvm:Ph({filesByDir:n,javaRoots:x},e.files),dartPackages:k,luaRoots:[...T].sort(Bi),root:e.root,svelteKitRoots:[...t].filter(R=>/(?:^|\/)svelte\.config\.(?:js|ts|mjs|cjs)$/.test(R)).map(R=>R.includes("/")?q.dirname(R):"").sort((R,C)=>C.length-R.length||$(R,C)),elixirModules:F,pyRoots:[...g].sort(Bi),workspacePackages:a,packageScopes:l,cIncludeRoots:[...h].sort(Bi),rubyLibRoots:[..._].sort(Bi),phpPsr4:y,csharpNamespaces:b,warnings:o}}function Ht(e,t){for(let n of t){let r=Ie(n);if(r&&!r.startsWith("..")&&e.fileSet.has(r))return r}}function nr(e,t,n){let r=t.split("#")[0].split("?")[0];if(!r)return{kind:"external"};if(r.startsWith("//")||/^[a-z][a-z0-9+.-]*:/i.test(r))return{kind:"external"};let o=r.startsWith("/"),s=o||!e.includes("/")?"":q.dirname(e),a=Ie(q.join(s,o?r.slice(1):r));if(a==="."&&(a=""),a.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let l=u=>[u,u+".md",u+".mdx",q.join(u,"README.md"),q.join(u,"readme.md"),q.join(u,"index.md"),q.join(u,"index.mdx")],c=a;try{c=Ie(decodeURIComponent(a))}catch{}if(c.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let d=Ht(n,c===a?l(a):[...l(a),...l(c)]);return d?{kind:"resolved",target:d}:!a||n.dirSet.has(a)?{kind:"external"}:n.root&&[a,c].some(u=>ne(j(n.root,u)))?{kind:"external"}:{kind:"dangling",reason:"missing-target"}}function Xv(e,t,n){let r=f=>Ht(n,[...Dv.map(m=>f+m),...jv.map(m=>q.join(f,m))]),o=f=>{let m=r(f);if(m)return m;let p=f.replace(/\.(js|jsx|mjs|cjs)$/,"");return p!==f?r(p):void 0},s=(f,m)=>{for(let p of[m,...cu(m)]){let g=o(Ie(q.join(f,p)));if(g)return g}},a=t.indexOf("?"),l=a===-1?t:t.slice(0,a);if(!l)return{kind:"external"};let c=n.svelteKitRoots?.find(f=>!f||e.startsWith(f+"/"));if(l.startsWith(".")){let f=e.includes("/")?q.dirname(e):"",m=Ie(q.join(f,l));if(m.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let p=o(m);return p?{kind:"resolved",target:p}:c!==void 0&&/(?:^|\/)\$types(?:\.d\.ts|\.js)?$/.test(l)?{kind:"external"}:{kind:"dangling",reason:"missing-module"}}let d,u;for(let f of n.tsConfigs){if(f.dir&&e!==f.dir&&!e.startsWith(f.dir+"/"))continue;u===void 0&&f.baseUrlSet&&(u=f.baseUrl);let m=!1;for(let p of f.paths){if(!(p.star?l.startsWith(p.prefix):l===p.prefix))continue;m=!0;let g=p.star?l.slice(p.prefix.length):"",h=!1;for(let _ of p.targets){let y=p.star?_.replace(/\*/,()=>g):_,b=Ie(q.join(f.baseUrl,y)),x=o(b);if(x)return{kind:"resolved",target:x};let k=b.includes("/")?q.dirname(b):"";(n.dirSet.has(k)||n.fileSet.has(b))&&(h=!0)}d=h?{kind:"dangling",reason:"alias-unresolved"}:{kind:"external"};break}if(m)break}if(u!==void 0&&!l.startsWith("/")){let f=o(Ie(q.join(u,l)));if(f)return{kind:"resolved",target:f}}if(c!==void 0&&!d&&(l==="$lib"||l.startsWith("$lib/"))){let f=Ie(q.join(c,"src/lib",l.slice(4))),m=o(f);if(m)return{kind:"resolved",target:m};if(n.dirSet.has(Ie(q.join(c,"src/lib"))))return{kind:"dangling",reason:"alias-unresolved"}}if(l.startsWith("#")){let f=n.packageScopes.find(p=>!p.dir||e.startsWith(p.dir+"/")),m=f?Rh(f.importEntries,l):void 0;for(let p of m??[]){let g=f&&p.startsWith("./")?s(f.dir,p):void 0;if(g)return{kind:"resolved",target:g}}return d??{kind:"external"}}for(let f of n.workspacePackages){if(l!==f.name&&!l.startsWith(f.name+"/"))continue;let m=l.slice(f.name.length).replace(/^\//,"");for(let g of Rh(f.exportEntries,m?"./"+m:".")??[]){let h=s(f.dir,g);if(h)return{kind:"resolved",target:h}}if(!m)for(let g of f.mainCandidates){let h=s(f.dir,g);if(h)return{kind:"resolved",target:h}}let p=m?[q.join(f.dir,"src",m),q.join(f.dir,m)]:[q.join(f.dir,"src","index"),q.join(f.dir,"index"),q.join(f.dir,"src")];for(let g of p){let h=o(Ie(g));if(h)return{kind:"resolved",target:h}}return{kind:"external"}}return d??{kind:"external"}}function Zv(e,t,n){let r=(a,l)=>{let c=l?l.replace(/\./g,"/"):"",d=Ie(q.join(a,c));return Ht(n,[d+".py",d+".pyi",q.join(d,"__init__.py")])};if(t.startsWith(".")){let a=/^\.+/.exec(t)[0].length,l=t.slice(a),c=e.includes("/")?q.dirname(e):"",d=c?c.split("/"):[];if(a-1>d.length)return{kind:"dangling",reason:"escapes-repo-root"};let u=d.slice(0,d.length-(a-1)).join("/");if(l){let m=r(u,l);return m?{kind:"resolved",target:m}:{kind:"dangling",reason:"missing-module"}}let f=Ht(n,[q.join(u,"__init__.py")]);return f?{kind:"resolved",target:f}:{kind:"external"}}let o=[],s=[];for(let a of n.pyRoots)(!a||e.startsWith(a+"/")?o:s).push(a);for(let a of[...o.reverse(),...s]){let l=r(a,t);if(l)return{kind:"resolved",target:l}}return{kind:"external"}}function Yv(e,t,n){if(!n.goModules.length)return{kind:"external"};let r=c=>{let d=Ie(c).replace(/^\.$/,""),u=Pv(n,d,".go"),f=u.find(m=>!m.endsWith("_test.go"))??u[0];return f?{kind:"resolved",target:f}:{kind:"dangling",reason:"missing-package"}},o=n.goModules.find(c=>!c.dir||e===c.dir||e.startsWith(c.dir+"/"));if(o)for(let c of o.replaces){if(t!==c.from&&!t.startsWith(c.from+"/"))continue;let d=t.slice(c.from.length).replace(/^\//,"");return r(q.join(c.toDir,d))}let s;for(let c of n.goModules)t!==c.module&&!t.startsWith(c.module+"/")||(!s||c.module.length>s.module.length||c.module.length===s.module.length&&c===o)&&(s=c);if(!s)return{kind:"external"};let a=Ie(q.join(s.dir,t.slice(s.module.length).replace(/^\//,""))).replace(/^\.$/,""),l=(c,d)=>!d||c===d||c.startsWith(d+"/");return n.goModules.some(c=>c!==s&&c.dir!==s.dir&&l(c.dir,s.dir)&&l(a,c.dir))?{kind:"dangling",reason:"missing-package"}:r(a)}function Qv(e,t,n){if(!n.rustCrates.length)return{kind:"external"};let r=(b,x)=>Ht(n,[q.join(b,x+".rs"),q.join(b,x,"mod.rs")]),o=(b,x)=>{for(let k=x.length;k>=1;k--){let v=Ie(q.join(b,...x.slice(0,k-1))),T=r(v,x[k-1]);if(T)return T}},s=e.includes("/")?q.dirname(e):"",a=e.slice(e.lastIndexOf("/")+1).replace(/\.rs$/,""),l=a==="mod"||a==="lib"||a==="main",c=l?s:q.join(s,a);if(t.startsWith("mod ")){let b=t.slice(4),x=r(c,b)??(l?void 0:r(s,b));return x?{kind:"resolved",target:x}:{kind:"dangling",reason:"missing-module"}}if(t.startsWith("mod-path ")){let b=Ie(q.join(s,t.slice(9)));return b.startsWith("..")?{kind:"dangling",reason:"escapes-repo-root"}:n.fileSet.has(b)?{kind:"resolved",target:b}:{kind:"dangling",reason:"missing-module"}}let d=t.split("::").map(b=>b.trim()).filter(Boolean);if(!d.length)return{kind:"external"};let u=d[0],f=n.rustCrates.find(b=>!b.dir||e===b.dir||e.startsWith(b.dir+"/")),m,p=[];if(u==="crate"&&f)m=f.srcDir,p=d.slice(1);else if(u==="self")m=c,p=d.slice(1);else if(u==="super"){let b=l?s.includes("/")?q.dirname(s):"":s,x=1;for(;xv.dir===x):n.rustCrates.find(v=>v.name===u);if(k){let v=o(k.srcDir,d.slice(1));if(v)return{kind:"resolved",target:v};if(k.rootFile)return{kind:"resolved",target:k.rootFile}}return{kind:"external"}}if(!p.length)return{kind:"external"};let g=o(m,p);if(g)return{kind:"resolved",target:g};if(f&&m===f.srcDir&&f.rootFile)return{kind:"resolved",target:f.rootFile};let h=m.includes("/")?q.dirname(m):"",_=m.slice(m.lastIndexOf("/")+1),y=_?r(h,_):void 0;return y&&y!==e?{kind:"resolved",target:y}:{kind:"external"}}function*e0(e,t){for(let n=e;;n=n.includes("/")?q.dirname(n):""){let r=t.get(n);if(r!==void 0){let o=n?e.slice(n.length+1):e;o.includes(".")||(yield{rank:r,pkg:o.replace(/\//g,".")})}if(!n)return}}function Ph(e,t=[]){let n={types:new Map,packages:new Map,scalaPkg:new Map};t0(n,e);let r=t.filter(s=>lu.has(s.ext)&&s.pkg).sort((s,a)=>$(s.rel,a.rel)),o=(s,a,l)=>{s.has(a)||s.set(a,l)};for(let s of r){Fh.has(s.ext)&&n.scalaPkg.set(s.rel,s.pkg),o(n.packages,s.pkg,s.rel);for(let a of s.symbols)!a.parent&&a.kind!=="package"&&o(n.types,s.pkg+"."+a.name,s.rel)}for(let s of r){let a=s.rel.slice(s.rel.lastIndexOf("/")+1,s.rel.length-s.ext.length);/^\w+$/.test(a)&&(o(n.types,s.pkg+"."+a,s.rel),$h.has(s.ext)&&o(n.types,s.pkg+"."+a+"Kt",s.rel))}return n}function t0(e,t){let n=new Map(t.javaRoots.map((c,d)=>[c,d]));if(!n.size)return;let{types:r,packages:o}=e,s=new Map,a=new Map,l=(c,d,u,f,m)=>{f>=(d.get(u)??1/0)||(d.set(u,f),c.set(u,m))};for(let[c,d]of t.filesByDir){let u=d.filter(m=>m.endsWith(".java"));if(!u.length)continue;let f=u.reduce((m,p)=>p=Math.min(2,n.length);r--){let o=e.types.get(r===n.length?n.join("."):n.slice(0,r).join("."));if(o)return o}}function n0(e,t,n){let r=n.jvm??=Ph(n),o=Ch(r,t),s=o?void 0:r.scalaPkg.get(e);for(let a=s;a&&!o;a=a.includes(".")?a.slice(0,a.lastIndexOf(".")):void 0)o=Ch(r,a+"."+t);return o?{kind:"resolved",target:o}:{kind:"external"}}function i0(e,t,n){let r=e.includes("/")?q.dirname(e):"",o=Ht(n,[q.join(r,t),...n.cIncludeRoots.map(s=>q.join(s,t))]);return o?{kind:"resolved",target:o}:r0.has(t)||s0.test(t)?{kind:"external"}:{kind:"dangling",reason:"missing-include"}}function o0(e,t,n){if(t.startsWith(".")){let r=e.includes("/")?q.dirname(e):"",o=Ie(q.join(r,t)),s=Ht(n,[o+".rb",q.join(o,"index.rb")]);return s?{kind:"resolved",target:s}:{kind:"dangling",reason:"missing-module"}}for(let r of n.rubyLibRoots){let o=Ht(n,[q.join(r,t+".rb")]);if(o)return{kind:"resolved",target:o}}return{kind:"external"}}function a0(e,t,n){if(t.startsWith(".")){let o=e.includes("/")?q.dirname(e):"",s=Ie(q.join(o,t)),a=Ht(n,[s,s+".php"]);return a?{kind:"resolved",target:a}:{kind:"dangling",reason:"missing-module"}}let r=t.replace(/^\\+/,"");for(let{prefix:o,dir:s}of n.phpPsr4){if(o&&r!==o&&!r.startsWith(o+"\\"))continue;let a=o?r.slice(o.length).replace(/^\\+/,""):r,l=Ht(n,[q.join(s,a.replace(/\\/g,"/"))+".php"]);if(l)return{kind:"resolved",target:l}}return{kind:"external"}}function l0(e,t){let n=t.csharpNamespaces.get(e);if(n?.length)return{kind:"resolved",target:n[0]};let r=(t.csharpPrefix??=c0(t.csharpNamespaces)).get(e);return r?{kind:"resolved",target:r}:{kind:"external"}}function c0(e){let t=new Map;for(let[n,r]of e){let o=r[0];if(o!==void 0)for(let s=n.indexOf(".");;s=n.indexOf(".",s+1)){let a=s===-1?n:n.slice(0,s),l=t.get(a);if((l===void 0||$(o,l)<0)&&t.set(a,o),s===-1)break}}return t}function d0(e,t,n){let r,o=/^package:([^/]+)\/(.+)$/.exec(t);if(o){let s=n.dartPackages?.get(o[1]);if(s===void 0)return{kind:"external"};r=Ie(q.join(s,"lib",o[2]))}else{if(/^[a-z][\w+.-]*:/i.test(t)||t.startsWith("/"))return{kind:"external"};r=Ie(q.join(e.includes("/")?q.dirname(e):"",t))}return r.startsWith("..")?{kind:"dangling",reason:"escapes-repo-root"}:n.fileSet.has(r)?{kind:"resolved",target:r}:/\.[\w-]+\.dart$/.test(r.slice(r.lastIndexOf("/")+1))?{kind:"external"}:{kind:"dangling",reason:"missing-module"}}function u0(e,t,n){let r=t.replace(/\./g,"/"),o=e.includes("/")?q.dirname(e):"",s=n.luaRoots??[""],a=s.filter(c=>!c||o===c||o.startsWith(c+"/")).reverse(),l=[...a,o,...s.filter(c=>!a.includes(c))];for(let c of l){let d=Ht(n,[q.join(c,r+".lua"),q.join(c,r,"init.lua")]);if(d)return{kind:"resolved",target:d}}return{kind:"external"}}function f0(e,t,n){let r=e.includes("/")?q.dirname(e):"",o=Ht(n,[q.join(r,t),t]);return o?{kind:"resolved",target:o}:{kind:"external"}}function Lh(e){return Mh.has(e)||Ah.has(e)||Ih.has(e)||Th.has(e)||lu.has(e)||Oh.has(e)||m0.has(e)}function ct(e,t,n,r){if(Mh.has(t)||Ah.has(t)){let o=n.lastIndexOf(".");if(o!==-1&&Lv.has(n.slice(o).toLowerCase().replace(/[?#].*$/,"")))return{kind:"external"};let a=(e.includes("/")?q.dirname(e):"")+"\0"+n,l=r.jsMemo??=new Map,c=l.get(a);return c||l.set(a,c=Xv(e,n,r)),{...c}}if(Ih.has(t)){let s=(e.includes("/")?q.dirname(e):"")+"\0"+n,a=r.pyMemo??=new Map,l=a.get(s);return l||a.set(s,l=Zv(e,n,r)),{...l}}if(t===".go")return Yv(e,n,r);if(t===".rs")return Qv(e,n,r);if(t===".java"||lu.has(t))return n0(e,n,r);if(Th.has(t))return i0(e,n,r);if(t===".rb"||t===".rake")return o0(e,n,r);if(t===".php")return a0(e,n,r);if(t===".cs")return l0(n,r);if(t===".dart")return d0(e,n,r);if(t===".lua")return u0(e,n,r);if(Oh.has(t))return f0(e,n,r);if(t===".ex"||t===".exs"){let o=r.elixirModules?.get(n);return o?{kind:"resolved",target:o}:{kind:"external"}}return{kind:"external"}}var Lv,Dv,jv,Mh,Ah,Ih,Th,$h,Fh,lu,Oh,Wv,Va,au,Hv,r0,s0,m0,An=z(()=>{"use strict";I();Ee();fe();fe();Ze();le();Lv=new Set([".svg",".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico",".icns",".pdf",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".wav",".flac",".ogg",".map"]),Dv=["",".ts",".tsx",".d.ts",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".svelte",".astro",".html",".htm"],jv=["index.ts","index.tsx","index.js","index.jsx","index.mjs","index.cjs"],Mh=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]),Ah=new Set([".vue",".svelte",".astro",".html",".htm"]),Ih=new Set([".py",".pyi"]),Th=new Set([".c",".h",".cc",".cpp",".cxx",".hpp",".hh"]),$h=new Set([".kt",".kts"]),Fh=new Set([".scala",".sc"]),lu=new Set([...$h,...Fh]),Oh=new Set([".sh",".bash",".zsh",".ksh",".fish"]),Wv=new Set(["dist","build","lib","out","output","esm","cjs","umd"]);Va="${configDir}";au=["source","ts","import","module","require","node","default"],Hv=8;r0=new Set(["assert.h","complex.h","ctype.h","errno.h","fenv.h","float.h","inttypes.h","iso646.h","limits.h","locale.h","math.h","setjmp.h","signal.h","stdalign.h","stdarg.h","stdatomic.h","stdbool.h","stddef.h","stdint.h","stdio.h","stdlib.h","stdnoreturn.h","string.h","tgmath.h","threads.h","time.h","uchar.h","wchar.h","wctype.h","unistd.h","fcntl.h","pthread.h","dirent.h","dlfcn.h","poll.h","sched.h","semaphore.h","strings.h","termios.h","glob.h","regex.h","syslog.h","netdb.h","pwd.h","grp.h","libgen.h","fnmatch.h","spawn.h","utime.h","windows.h"]),s0=/^(?:sys|arpa|netinet|net)\//;m0=new Set([".go",".rs",".java",".rb",".rake",".php",".cs",".dart",".lua",".ex",".exs"])});function Xa(e){return y0.test(e.split("/").pop())}function _0(e){return e.includes("/")?q.dirname(e):Ka}function Cs(e){return e===Ka?0:g0.test(e)||h0.test(e)?2:p0.test(e)?0:null}function b0(e,t){let n=Cs(e);return n!==null?n:t.every(r=>r.kind==="doc"||r.kind==="config"||Xa(r.rel))?2:1}function w0(e,t){let n=t.find(a=>/^(readme|index)\.(md|mdx)$/i.test(a.rel.split("/").pop()));if(n?.summary)return n.summary;if(n?.title)return n.title;let r=t.filter(a=>a.summary).sort((a,l)=>(l.summary?.length??0)-(a.summary?.length??0));if(r[0]?.summary)return r[0].summary;let o=[...new Set(t.map(a=>a.lang))].filter(a=>a!=="other"),s=e===Ka?"the repository root":`\`${e}/\``;return`${t.length} file(s) in ${s}${o.length?` (${o.slice(0,3).join(", ")})`:""}.`}function du(e){let t=new Map;for(let c of e.files){let d=_0(c.rel),u=t.get(d);u||t.set(d,u=[]),u.push(c)}let n=[...t.keys()].sort($),r=new Map,o=new Map;for(let c of n){let d=c===Ka?"root":ri(c);r.set(c,d),o.set(d,(o.get(d)??0)+1)}let s=c=>{let d=r.get(c);return d&&o.get(d)===1?d:`${d||"module"}-${Re(c).slice(0,8)}`},a=[],l=new Map;for(let c of n){let d=t.get(c).slice().sort((m,p)=>$(m.rel,p.rel)),u=s(c),f={slug:u,path:c,title:c,tier:b0(c,d),members:d.map(m=>m.rel),summary:w0(c,d)};a.push(f);for(let m of d)l.set(m.rel,u)}return a.sort((c,d)=>$(c.slug,d.slug)),{modules:a,moduleOf:l}}var Ka,p0,g0,h0,y0,Ms=z(()=>{"use strict";I();fe();et();xt();le();Ka="(root)",p0=/(^|\/)(types?|util|utils|lib|libs|common|core|config|configs|constants|shared|helpers|internal)$/i,g0=/(^|\/)(tests?|__tests?__|__mocks?__|__snapshots?__|spec|specs|e2e|examples?|example|benchmark|benchmarks|fixtures?|docs?|documentation|\.github)(\/|$)/i,h0=/(^|\/)(scripts?|bin|\.storybook)$/i,y0=/\.(test|spec|e2e|stories|story)\.[cm]?[jt]sx?$/i});function uu(e){let t=Nr(e),n=new Map;if(!t.size)return n;let r=(s,a)=>{let l=n.get(s);l||n.set(s,l=new Set),l.add(a)},o=Ya(e);for(let s of e.files)if(s.kind==="code"&&s.idents)for(let a of s.idents){let l=t.get(a);l&&l!==s.rel&&r(a,s.rel)}else if(s.kind==="doc"){let a=o.get(s.rel);if(!a||!a.retained)continue;for(let l of a.counts.keys()){let c=t.get(l);c&&c!==s.rel&&r(l,s.rel)}}return n}function fu(e,t=new Map,n=5){let r=new Map;for(let a of e.files)for(let l of a.symbols){let c=r.get(l.name);c||r.set(l.name,c=[]),c.push({file:l.file,line:l.line,...l.endLine!==void 0?{endLine:l.endLine}:{},kind:l.kind,exported:l.exported,lang:l.lang,...l.parent?{parent:l.parent}:{}})}let o=Object.create(null);for(let a of[...r.keys()].sort($))o[a]=r.get(a).slice().sort((l,c)=>$(l.file,c.file)||l.line-c.line||$(l.kind,c.kind));let s=Object.create(null);for(let a of[...t.keys()].sort($)){let l=[...t.get(a)].sort($);l.length&&(s[a]=l)}return{schemaVersion:n,defs:o,refs:s}}function Za(e){return JSON.stringify(e,null,2)+` -`}var zi=z(()=>{"use strict";I();_t();le();gt()});function In(e){let t=[{name:e}],n=e.lastIndexOf("#");n>0&&n0&&r0&&n{"use strict";I()});function jh(e){let t=new Map;for(let n of e.files)for(let r of n.symbols)S0.has(r.kind)&&qi(t,r.name,{name:r.name,file:r.file,kind:r.kind,lang:r.lang,line:r.line});return t}function rr(e,t,n){return Wh(e,t,n).map(r=>r.rel)}function Wh(e,t,n){let r=jh(e),o=gu(e,t,n),s=[];for(let a of e.files){if(!a.relations?.length)continue;let l=Oe(a.lang),c=o.aliases(a);for(let d of a.relations){let u=c.names.get(d.to),f=u?.name??d.to,m=r.get(f)?.get(l);if(!m)continue;let p;if(u){if(!u.files)continue;p=Lr(a.rel,o.within(m,u.files,f))}else{let g=o.reached(m,a,f),h=m.byFile.get(a.rel);h&&g.push(h),p=Lr(a.rel,g.length?g:m.list)}p&&s.push({written:d.to,rel:{kind:x0.has(p.kind)?"implements":d.kind,from:d.from,fromFile:a.rel,fromLine:d.line,to:p.name,toFile:p.file,toKind:p.kind}})}}return s.sort((a,l)=>$(a.rel.fromFile,l.rel.fromFile)||$(a.rel.from,l.rel.from)||$(a.rel.kind,l.rel.kind)||$(a.rel.to,l.rel.to))}function mu(e,t,n){let r=new Map;for(let o of rr(e,t,n)){if(o.toFile===o.fromFile)continue;let s=`${o.fromFile}${Be}${o.toFile}${Be}${o.kind}`,a=r.get(s);a?a.weight=Math.min(a.weight+1,5):r.set(s,{from:o.fromFile,to:o.toFile,kind:o.kind,weight:1})}return[...r.values()].sort((o,s)=>$(o.from,s.from)||$(o.to,s.to)||$(o.kind,s.kind))}function pu(e,t){let n=jh(e),r=Wh(e,t),o=r.map(m=>m.rel),s=new Map,a=(m,p)=>`${m}${Be}${p}`;for(let m of n.values())for(let p of[...m.values()].flatMap(g=>g.list))s.set(a(p.name,p.file),{name:p.name,file:p.file,line:p.line,kind:p.kind,extends:[],implements:[],extendedBy:[],implementedBy:[],unresolved:[]});let l=m=>({name:m.name,file:m.file,line:m.line,kind:m.kind});for(let m of o){let p=s.get(a(m.from,m.fromFile)),g=s.get(a(m.to,m.toFile));g&&(p?((m.kind==="extends"?p.extends:p.implements).push(l(g)),(m.kind==="extends"?g.extendedBy:g.implementedBy).push(l(p))):(m.kind==="extends"?g.extendedBy:g.implementedBy).push({name:m.from,file:m.fromFile,line:m.fromLine,kind:"unknown"}))}for(let m of Hi(e)){let p=s.get(a(m.from,m.fromFile)),g=s.get(a(m.to,m.toFile));if(!p||!g)continue;let h=_=>m.structural?{..._,structural:!0}:_;p.implements.push(h(l(g))),g.implementedBy.push(h(l(p)))}let c=new Set(r.map(({rel:m,written:p})=>`${m.fromFile}${Be}${m.from}${Be}${m.kind}${Be}${p}`));for(let m of e.files)for(let p of m.relations??[]){if(c.has(`${m.rel}${Be}${p.from}${Be}${p.kind}${Be}${p.to}`))continue;let g=p.kind==="extends"?"implements":"extends";c.has(`${m.rel}${Be}${p.from}${Be}${g}${Be}${p.to}`)||s.get(a(p.from,m.rel))?.unresolved.push({kind:p.kind,to:p.to})}let d=(m,p)=>$(m.name,p.name)||$(m.file,p.file),u=new Map,f=[...s.keys()].sort($);for(let m of f){let p=s.get(m);p.extends.sort(d),p.implements.sort(d),p.extendedBy.sort(d),p.implementedBy.sort(d),p.unresolved.sort((g,h)=>$(g.kind,h.kind)||$(g.to,h.to)),u.has(p.name)?u.set(`${p.name}@${p.file}`,p):u.set(p.name,p)}return u}function E0(e,t){let n=e.indexOf(`${t}(`);if(n===-1)return;let r=0,o=0,s=!0;for(let a=n+t.length;a=1&&!/\s/.test(l)&&(s=!1)}}function Hi(e){let t=h=>h.includes("/")?h.slice(0,h.lastIndexOf("/")):"",n=new Map,r=new Map,o=new Map,s=new Map,a=[],l=e.files.filter(h=>h.lang==="go"&&!h.rel.endsWith("_test.go"));for(let h of l){let _=t(h.rel);for(let y of h.symbols)if(y.kind==="type"&&!y.parent){let b=`${_}${Be}${y.name}`;n.has(b)||n.set(b,y);let x=r.get(y.name)??[];x.push(y),r.set(y.name,x)}else if(y.kind==="method"&&y.parent){let b=`${_}${Be}${y.parent}`,x=o.get(b);x||o.set(b,x=new Map),x.set(y.name,y.signature?E0(y.signature,y.name):void 0);let k=s.get(y.name);k||s.set(y.name,k=new Set),k.add(b)}else if(y.name==="_"&&y.signature){let b=k0.exec(y.signature);b&&a.push({sym:y,iface:b[1],type:b[2]??b[3]??b[4]})}}let c=[];for(let h of l)for(let _ of h.relations??[])_.kind==="extends"&&/^\w+$/.test(_.to)&&c.push([`${t(h.rel)}${Be}${_.from}`,`${t(h.rel)}${Be}${_.to}`]);c.sort((h,_)=>$(h[0],_[0])||$(h[1],_[1]));for(let h=0;h<3;h++)for(let[_,y]of c){let b=o.get(y);if(!b)continue;let x=o.get(_);x||o.set(_,x=new Map);for(let[k,v]of b)x.has(k)||(x.set(k,v),s.get(k).add(_))}let d=h=>!!h.signature?.startsWith(h.name)&&/^(\[[^\]]*\])?\s+interface\b/.test(h.signature.slice(h.name.length)),u=new Map,f=(h,_,y)=>{let b=u.get(h);if(b!==void 0)return b??void 0;if(y.has(h))return;y.add(h);let x=new Map(o.get(h)??[]),k=!0,v=se(j(e.root,_.file)).split(` -`).slice(_.line,(_.endLine??_.line)-1);for(let F of v){let R=F.replace(/\/\/.*$/,"").trim();if(/[~|]/.test(R)&&!R.includes("(")&&(k=!1),!/^[\w.]+$/.test(R))continue;let A=R.lastIndexOf(".")===-1?n.get(`${t(_.file)}${Be}${R}`):void 0,S=A&&d(A)?f(`${t(A.file)}${Be}${A.name}`,A,y):void 0;if(!S)k=!1;else for(let[w,E]of S)x.set(w,E)}let T=k&&x.size?x:void 0;return u.set(h,T??null),T},m=new Map,p=(h,_,y)=>{let b=`${h.file}${Be}${h.name}${Be}${_.file}${Be}${_.name}`,x=m.get(b);if(x){y||delete x.structural;return}m.set(b,{from:h.name,fromFile:h.file,to:_.name,toFile:_.file,...y?{structural:!0}:{}})};for(let[h,_]of[...n].sort((y,b)=>$(y[0],b[0]))){if(!d(_))continue;let y=f(h,_,new Set);if(!y)continue;let b=[...y.keys()].sort($),x=b.some(v=>!/^[A-Z]/.test(v)),k=b.reduce((v,T)=>(s.get(T)?.size??0)<(s.get(v)?.size??0)?T:v);for(let v of[...s.get(k)??[]].sort($)){if(v===h)continue;let T=n.get(v);if(!T||d(T)||x&&t(T.file)!==t(_.file))continue;let F=o.get(v);b.every(C=>{if(!F.has(C))return!1;let A=F.get(C),S=y.get(C);return A===void 0||S===void 0||A===S})&&p(T,_,!0)}}let g=(h,_)=>{let y=h.slice(h.lastIndexOf(".")+1);if(!h.includes(".")){let x=n.get(`${_}${Be}${y}`);if(x)return x}let b=(r.get(y)??[]).slice().sort((x,k)=>$(x.file,k.file));return b.length===1?b[0]:void 0};for(let h of a){let _=t(h.sym.file),y=g(h.iface,_),b=g(h.type,_);y&&b&&d(y)&&!d(b)&&p(b,y,!1)}return[...m.values()].sort((h,_)=>$(h.fromFile,_.fromFile)||$(h.from,_.from)||$(h.toFile,_.toFile)||$(h.to,_.to))}function Gi(e,t,n){let r=sr(e,t,n);if(!r)return[];let o=new Set([`${r.name}${Be}${r.file}`]),s=[],a=[r];for(;a.length;){let l=[];for(let c of a)for(let d of[...c.implementedBy,...c.extendedBy]){let u=`${d.name}${Be}${d.file}`;if(o.has(u))continue;o.add(u),s.push(d);let f=Bh(e,d.name,d.file);f&&l.push(f)}a=l}return s.sort((l,c)=>$(l.name,c.name)||$(l.file,c.file))}function sr(e,t,n){let r=e.get(t);if(r)return r;for(let o of In(t).slice(1))if(o.parent===void 0){for(let s of e.values())if(As(o,s))return s}for(let o of n??[]){let s=Bh(e,o.name,o.file);if(s)return s}}function Bh(e,t,n){let r=e.get(t);return r?.file===n?r:e.get(`${t}@${n}`)}var Be,x0,S0,k0,Tn=z(()=>{"use strict";I();fe();ir();Is();le();Pr();Ze();Be="\0",x0=new Set(["interface","trait","protocol"]),S0=new Set(["class","interface","trait","struct","type","enum","record","object","protocol","module","mod","union","annotation"]);k0=/^_\s+([\w.]+)\s*=\s*(?:\(\s*\*\s*([\w.]+)\s*\)\s*\(\s*nil\s*\)|&?([\w.]+)\s*\{|new\(\s*([\w.]+)\s*\))/});function Dr(e,t,n,r,o){let s=[...new Set(e)].sort($),a=s.filter(b=>t.has(b));if(a.length)return{hops:0,paths:a.slice(0,o).map(b=>[{node:b}]),pathCount:a.length};let l=new Map(s.map(b=>[b,0])),c=new Map,d=[s],u;for(let b=1;b<=r&&!u;b++){let x=[];for(let v of d[b-1])for(let[T,F]of n(v)){let R=l.get(T);if(R===void 0)l.set(T,b),c.set(T,new Map),x.push(T);else if(R!==b)continue;let C=c.get(T);C.has(v)||C.set(v,F)}if(!x.length)break;x.sort($),d.push(x);let k=x.filter(v=>t.has(v));k.length&&(u=k)}if(!u)return{hops:null,paths:[],pathCount:0};let f=d.length-1,m=new Set(u),p=[...u];for(;p.length;)for(let b of c.get(p.pop())?.keys()??[])m.has(b)||(m.add(b),p.push(b));let g=new Map,h=new Map;for(let b of s)m.has(b)&&g.set(b,1);for(let b=1;b<=f;b++)for(let x of d[b]){if(!m.has(x))continue;let k=0;for(let[v,T]of c.get(x)){k+=g.get(v)??0;let F=h.get(v);F?F.push([x,T]):h.set(v,[[x,T]])}g.set(x,k)}let _=[],y=b=>{if(_.length>=o)return;let x=b[b.length-1].node;if(b.length===f+1){_.push(b.slice());return}for(let[k,v]of h.get(x)??[])if(b.push({node:k,via:v}),y(b),b.pop(),_.length>=o)return};for(let b of s)m.has(b)&&y([{node:b}]);return{hops:f,paths:_,pathCount:u.reduce((b,x)=>b+(g.get(x)??0),0)}}var hu=z(()=>{"use strict";I();le()});function ht(e){return e.parent?`${e.file}#${e.parent}/${e.name}`:`${e.file}#${e.name}`}function R0(e){return{id:ht(e),name:e.name,kind:e.kind,file:e.file,line:e.line,...e.endLine!==void 0?{endLine:e.endLine}:{},exported:e.exported,...e.doc?{doc:e.doc}:{},...e.signature?{signature:e.signature}:{}}}function wu(e,t){let n=new Map,r=new Map;for(let p of e.files){let g=[];for(let h of p.symbols)v0.has(h.kind)||(g.push(h),n.set(ht(h),R0(h)));r.set(p.rel,g)}let o=new Map,s=(p,g,h)=>{if(p===g)return;let _=`${p}${jr}${g}${jr}${h}`,y=o.get(_);y?y.weight+=1:o.set(_,{from:p,to:g,kind:h,weight:1})},a=ar(e,t);for(let p of e.files){let g=a.forFile(p);if(!g)continue;let h=r.get(p.rel)??[];for(let _ of p.calls){let y=$n(h,_.line);if(!y)continue;let b=g(_,y);b&&s(ht(y),ht(b.def),"calls")}}let l=new Map;for(let p of n.values()){let g=`${p.name} ${p.file}`;(!l.has(g)||p.id===`${p.file}#${p.name}`)&&l.set(g,p.id)}let c=rr(e,t);for(let p of Hi(e))c.push({...p,kind:"implements"});for(let p of c){let g=l.get(`${p.from} ${p.fromFile}`),h=l.get(`${p.to} ${p.toFile}`);g&&h&&s(g,h,p.kind)}for(let{sub:p,sup:g}of xu(e,c))s(ht(p),ht(g),"overrides");let d=[...o.values()].sort((p,g)=>$(p.from,g.from)||$(p.kind,g.kind)||$(p.to,g.to)),u=new Map,f=new Map;for(let p of d)(u.get(p.from)??u.set(p.from,[]).get(p.from)).push(p),(f.get(p.to)??f.set(p.to,[]).get(p.to)).push(p);let m=new Map;for(let p of[...n.keys()].sort($)){let g=n.get(p);(m.get(g.name)??m.set(g.name,[]).get(g.name)).push(p)}return{nodes:n,edges:d,out:u,in:f,byName:m}}function xu(e,t){let n=new Map(e.files.map(d=>[d.rel,d.lang])),r=d=>d.includes("/")?d.slice(0,d.lastIndexOf("/")):"",o=(d,u)=>Oe(n.get(u)??"")==="go"?`go${jr}${r(u)}${jr}${d}`:`${u}${jr}${d}`,s=new Map;for(let d of e.files)for(let u of d.symbols){if(!u.parent||!C0.has(u.kind))continue;let f=o(u.parent,u.file),m=s.get(f);m||s.set(f,m=new Map),m.has(u.name)||m.set(u.name,u)}let a=new Map;for(let d of t){let u=o(d.from,d.fromFile),f=a.get(u)??[],m=o(d.to,d.toFile);m!==u&&!f.includes(m)&&f.push(m),a.set(u,f)}for(let d of a.values())d.sort($);let l=(d,u,f,m)=>{for(let p of a.get(d)??[]){if(f.has(p))continue;f.add(p);let g=s.get(p)?.get(u);g?m.push(g):l(p,u,f,m)}},c=[];for(let d of[...a.keys()].sort($)){let u=s.get(d);if(u)for(let f of[...u.keys()].sort($)){let m=[];l(d,f,new Set([d]),m);for(let p of m)c.push({sub:u.get(f),sup:p})}}return c.sort((d,u)=>$(ht(d.sub),ht(u.sub))||$(ht(d.sup),ht(u.sup)))}function bu(e,t){if(e.nodes.has(t))return[t];for(let n of In(t)){let r=n.parent?.slice(n.parent.lastIndexOf("/")+1),o=(e.byName.get(n.name)??[]).filter(s=>{let a=e.nodes.get(s);return n.file!==void 0&&a.file!==n.file?!1:r===void 0||s===`${a.file}#${r}/${a.name}`});if(o.length)return o}return[]}function Vi(e,t,n={}){let r=n.depth??2,o=Math.max(1,Math.min(r,yu)),s=n.direction??"both",a=bu(e,t),l=a.map(g=>e.nodes.get(g));if(!l.length)return{root:[],nodes:[],edges:[]};let c=new Map;for(let g of a)c.set(g,0);let d=new Map,u=[...a],f=!1;for(let g=1;g<=o&&u.length;g++){let h=[];for(let _ of u){let y=(k,v)=>{for(let T of k??[]){d.set(`${T.from}${jr}${T.to}${jr}${T.kind}`,T);let F=v(T);if(!c.has(F)){if(c.size>=M0){f=!0;continue}c.set(F,g),h.push(F)}}},b=e.out.get(_),x=e.in.get(_);s==="both"?(y(b,k=>k.to),y(x,k=>k.from)):s==="out"?(y(b?.filter(k=>k.kind!=="overrides"),k=>k.to),y(x?.filter(k=>k.kind==="overrides"),k=>k.from)):(y(x?.filter(k=>k.kind!=="overrides"),k=>k.from),y(b?.filter(k=>k.kind==="overrides"),k=>k.to))}u=h}let m=[...c.entries()].map(([g,h])=>({...e.nodes.get(g),depth:h})).sort((g,h)=>g.depth-h.depth||$(g.file,h.file)||$(g.name,h.name)),p=[...d.values()].filter(g=>c.has(g.from)&&c.has(g.to)).sort((g,h)=>$(g.from,h.from)||$(g.kind,h.kind)||$(g.to,h.to));return{root:l,nodes:m,edges:p,...f?{truncated:!0}:{},...r>yu?{depthClamped:yu}:{}}}function el(e,t,n,r={}){let o=r.depth??A0,s=Math.max(1,Math.min(o,_u)),a=Math.max(1,r.maxPaths??5),l=bu(e,t),c=bu(e,n),d=l.map(_=>e.nodes.get(_)),u=c.map(_=>e.nodes.get(_)),f=o>_u?{depthClamped:_u}:{};if(!d.length||!u.length)return{from:d,to:u,hops:null,paths:[],pathCount:0,...f};let m=function*(_){for(let y of e.out.get(_)??[])y.kind==="calls"&&(yield[y.to,"calls"]);for(let y of e.in.get(_)??[])y.kind==="overrides"&&(yield[y.from,"dispatch"])},p=Dr(l,new Set(c),m,s,a),g=_=>{let y=e.nodes.get(_.node);return{id:y.id,name:y.name,kind:y.kind,file:y.file,line:y.line,..._.via?{via:_.via}:{}}},h={from:d,to:u,hops:p.hops,paths:p.paths.map(_=>_.map(g)),pathCount:p.pathCount,...p.paths.length{"use strict";I();Is();or();ir();Tn();le();hu();Pr();jr="\0",v0=new Set(["reexport","reexport-all","default"]);C0=new Set(["method","function","def","getter","setter","operator"]);yu=5,M0=400;A0=8,_u=16});function I0(e){let t=new Array(e.length*tl);for(let n=0;n$(u.to,f.to));for(let d of a.values())d.sort((u,f)=>$(u.from,f.from));let c={out:s,inn:a,degree:l,threshold:Gh([...l.values()])};return r.views.set(n,c),c}function Gh(e){let t=e.slice().sort((o,s)=>o-s),n=t.length,r=n===0?0:t[Math.min(n-1,Math.floor(.99*n))];return Math.max(50,r)}function Ji(e,t,n=1/0,r={}){return vu(Eu(e,r),t,n)}function Eu(e,t={}){let n=new Map,r=new Map,o=(s,a,l)=>{let c=s.get(a);c?c.push(l):s.set(a,[l])};for(let s of e)s.dangling||!Ts.has(s.kind)||t.skipInferred&&s.confidence==="inferred"||(o(n,s.to,s),t.goPackages&&s.kind==="import"&&s.to.endsWith(".go")&&o(r,nl(s.to),s));return{dependents:n,packageImports:r,goPackages:t.goPackages===!0}}function vu(e,t,n=1/0){let{dependents:r,packageImports:o,goPackages:s}=e,a=new Map,l=new Set(t),c=[...t];for(let d=1;d<=n&&c.length;d++){let u=[];for(let f of c){let m=r.get(f)??[];s&&ku(f)&&(m=m.concat(o.get(nl(f))??[]));for(let p of m.slice().sort((g,h)=>$(g.from,h.from)))l.has(p.from)||(l.add(p.from),a.set(p.from,d),u.push(p.from))}c=u}return a}function Ki(e,t,n=1/0,r={}){let o=new Map(e.files.map(p=>[p.rel,p.module])),s=e.modules.find(p=>p.slug===t),a=s?void 0:e.files.find(p=>p.rel===t);if(!s&&!a)return;let l=s?s.members:[a.rel],c=r.includeInferred===!0,d=Ji(e.fileEdges,l,n,{skipInferred:!c,goPackages:!0}),u=[...d.entries()].map(([p,g])=>({rel:p,module:o.get(p)??"root",depth:g})).sort((p,g)=>p.depth-g.depth||$(p.rel,g.rel)),f=[...new Set(u.map(p=>p.module).filter(p=>p!==t))].sort($),m={target:t,scope:s?"module":"file",seeds:l,files:u,modules:f};if(!c){let p=Ji(e.fileEdges,l,n,{goPackages:!0}).size-d.size;p>0&&(m.inferredDependents=p)}return m}function zh(e){return e.kind==="call"?e.confidence==="inferred"?4:1:e.kind==="import"||e.kind==="extends"||e.kind==="implements"?0:e.kind==="use"?2:3}function Hh(e,t,n,r){let{out:o,inn:s,degree:a,threshold:l}=$0(e,r),c=new Set([t]),d=[],u=[t];for(let f=1;f<=n;f++){let m=new Map,p=(g,h,_)=>{let y=m.get(g);if(!y){if(c.has(g))return;c.add(g),m.set(g,y=[])}y.some(b=>b.direction===h&&b.kind===_.kind)||y.push({node:g,direction:h,kind:_.kind,weight:_.weight,depth:f,confidence:_.confidence})};for(let g of u)if(!(g!==t&&(a.get(g)??0)>=l)){for(let h of o.get(g)??[])p(h.to,"out",h);for(let h of s.get(g)??[])p(h.from,"in",h)}for(let g of m.values())g.sort((h,_)=>zh(h)-zh(_)||+(h.direction==="in")-+(_.direction==="in")||$(h.kind,_.kind)),d.push(...g);u=[...m.keys()]}return d}function Xi(e,t,n=1,r){let o=e.modules.find(a=>a.slug===t);if(o)return{target:t,scope:"module",links:Hh(e.moduleEdges,t,n,r),members:o.members};if(e.files.find(a=>a.rel===t))return{target:t,scope:"file",links:Hh(e.fileEdges,t,n,r)}}function rl(e,t,n,r={}){let o=new Set(e.files.map(g=>g.rel));if(!o.has(t)||!o.has(n))return;let s=r.depth??F0,a=Math.max(1,Math.min(s,Su)),l=Math.max(1,r.maxPaths??5),c=new Map;for(let g of[...o].sort($)){if(!ku(g))continue;let h=nl(g),_=c.get(h);_?_.push(g):c.set(h,[g])}let d=g=>{let h=new Map;for(let y of e.fileEdges){if(y.dangling||!Ts.has(y.kind)||!g&&y.confidence==="inferred")continue;let b=y.kind==="import"&&ku(y.to)&&c.get(nl(y.to))||[y.to],x=h.get(y.from)??h.set(y.from,[]).get(y.from);for(let k of b)x.push([k,y.kind])}let _=y=>y==="import"?0:y==="extends"||y==="implements"?1:y==="use"?2:3;for(let y of h.values())y.sort((b,x)=>$(b[0],x[0])||_(b[1])-_(x[1]));return y=>h.get(y)??[]},u=r.includeInferred===!0,f=d(u),m=Dr([t],new Set([n]),f,a,l),p={from:t,to:n,hops:m.hops,paths:m.paths.map(g=>g.map(h=>h.via?{file:h.node,via:h.via}:{file:h.node})),pathCount:m.pathCount,...m.paths.lengthSu?{depthClamped:Su}:{}};if(m.hops===null){let g=Dr([n],new Set([t]),f,a,0);if(g.hops!==null&&(p.reverseHops=g.hops),!u){let h=Dr([t],new Set([n]),d(!0),a,0);h.hops!==null&&(p.inferredHops=h.hops)}}return p}var Ts,tl,Uh,nl,ku,$s,F0,Su,Br=z(()=>{"use strict";I();le();hu();Ts=new Set(["import","use","call","extends","implements"]),tl=6;Uh=new WeakMap;nl=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",ku=e=>e.endsWith(".go")&&!e.endsWith("_test.go");$s=["import","call","use","extends","implements","doc-link","mention","contains"];F0=8,Su=16});function Ft(e){return N0.test(e)||Ru(e)}function Ru(e){if(Xa(e))return!0;let t=e.split("/").pop();return O0.some(n=>n.test(t))}function L0(e){let t=e.lastIndexOf("/"),n=t===-1?"":e.slice(0,t+1),r=e.slice(t+1),o;if(o=/^(.+)\.(?:test|spec)(\.[cm]?[jt]sx?)$/.exec(r)){let s=[n];return/(^|\/)__tests__\/$/.test(n)&&s.push(n.slice(0,-10)),s.flatMap(a=>[o[2],...P0.filter(l=>l!==o[2])].map(l=>a+o[1]+l))}if(o=/^test_(.+)\.py$/.exec(r)??/^(.+)_test\.py$/.exec(r))return[n+o[1]+".py"];if(o=/^(.+)_test\.go$/.exec(r))return[n+o[1]+".go"];if(o=/^(.+)_(?:spec|test)\.rb$/.exec(r))return[n+o[1]+".rb"];if(o=/^(.+?)(?:Tests?|IT)\.(java|kt)$/.exec(r)){let s=n+o[1]+"."+o[2],a=s.replace(/(^|\/)src\/test\//,"$1src/main/");return a===s?[s]:[s,a]}return[]}function Zi(e){let t=new Set,n=new Map,r=new Set,o=new Map;for(let d of e.files)if(n.set(d.rel,d.module),d.fileKind==="code"){if(Ft(d.rel)){t.add(d.rel);continue}if(r.add(d.rel),d.rel.endsWith(".go")){let u=d.rel.includes("/")?d.rel.slice(0,d.rel.lastIndexOf("/")):"",f=o.get(u);f?f.push(d.rel):o.set(u,[d.rel])}}let s=new Map,a=new Map,l=(d,u)=>{let f=s.get(u);f||s.set(u,f=new Set),f.add(d);let m=n.get(u);if(m!==void 0){let p=a.get(m);p||a.set(m,p=new Set),p.add(d)}};for(let d of e.fileEdges)d.dangling||Ts.has(d.kind)&&(!t.has(d.from)||t.has(d.to)||l(d.from,d.to));for(let d of t){for(let u of L0(d))r.has(u)&&l(d,u);if(d.endsWith("_test.go")){let u=d.includes("/")?d.slice(0,d.lastIndexOf("/")):"";for(let f of o.get(u)??[])l(d,f)}}let c=d=>{let u=new Map;for(let f of[...d.keys()].sort($))u.set(f,[...d.get(f)].sort($));return u};return{testFiles:t,testedByFile:c(s),testedByModule:c(a)}}function D0(e,t){let n=e.modules.find(r=>r.slug===t);return n?.testedBy?n.testedBy:Zi(e).testedByModule.get(t)??[]}function j0(e){let t=Zi(e),n=new Map;for(let r of e.files)r.fileKind!=="code"||t.testFiles.has(r.rel)||n.set(r.module,(n.get(r.module)??0)+1);return e.modules.filter(r=>r.tier<=1&&r.symbols>0&&(n.get(r.slug)??0)>0&&!t.testedByModule.has(r.slug))}var O0,N0,P0,lr=z(()=>{"use strict";I();Ms();le();Br();O0=[/^test_.*\.py$/i,/_test\.py$/i,/_test\.go$/,/(Test|Tests|IT)\.java$/,/(Test|Tests)\.kt$/,/_spec\.rb$/,/_test\.rb$/,/Test\.php$/,/(Test|Tests)\.cs$/,/_test\.exs$/],N0=/(^|\/)(tests?|__tests?__|spec|specs|e2e)(\/|$)/i;P0=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"]});function Ur(e,t,n){let r=e.fields[t];for(let o of mn(n))r.tf.set(o,(r.tf.get(o)??0)+1),r.len++,e.all.add(o)}function Y0(){let e={};for(let t of sl)e[t]={tf:new Map,len:0};return e}function il(e){let t=[];for(let n of e.files){let r={file:n.rel,fields:Y0(),all:new Set,symbols:[],decls:[],exactNames:new Set,isTest:Ft(n.rel),isFixture:Z0.test(n.rel)},o=new Set;for(let a of n.symbols){if(a.doc&&Ur(r,"doc",a.doc),V0.has(a.kind)){Ur(r,"body",a.name);continue}Ur(r,"name",a.name),r.exactNames.add(qn(a.name).toLowerCase()),o.has(a.name)||(o.add(a.name),r.symbols.push(a.name),r.decls.push({name:a.name,kind:a.kind,line:a.line}))}for(let a of n.rel.split("/"))Ur(r,"path",a);for(let a of n.headings)Ur(r,"heading",a);n.summary&&Ur(r,"summary",n.summary);let s=r.fields.body;for(let a of n.terms??[]){if(!rR.test(a)){Ur(r,"body",a);continue}s.tf.set(a,(s.tf.get(a)??0)+1),s.len++,r.all.add(a)}t.push(r)}return tR(t),t}function tR(e){let t=new Set;for(let r of e)for(let o of r.fields.name.tf.keys())o.length>=Cu&&/^[a-z]+$/.test(o)&&t.add(o);let n=new Map;for(let r of e){if(r.isTest||r.isFixture)continue;let o=r.fields.path;for(let s of[...o.tf.keys()]){if(s.lengtheR||!/^[a-z]+$/.test(s))continue;let a=n.get(s);if(n.has(s)||n.set(s,a=nR(s,t)),!a)continue;let l=o.tf.get(s);for(let c of a)o.tf.set(c,(o.tf.get(c)??0)+l),o.len+=l,r.all.add(c)}}}function nR(e,t){let n=e.length,r=new Array(n+1);r[n]=[];for(let s=n-Cu;s>=0;s--)for(let a=s+Cu;a<=n;a++){let l=r[a],c=e.slice(s,a);if(!l||!t.has(c))continue;let d=[c,...l],u=r[s];(!u||d.length=2?o:void 0}function sR(e){let t=Kh.get(e);if(t)return t;t={};for(let n of sl){let r=0;for(let o of e)r+=o.fields[n].len;t[n]=r/e.length||1}return Kh.set(e,t),t}function Zh(e){let t=`^^${e}$$`,n=new Set;for(let r=0;r+3<=t.length;r++)n.add(t.slice(r,r+3));return n}function Yh(e){let t=new Set,n=new Map;for(let r of e)for(let o of r.all){if(t.has(o))continue;t.add(o);let s=Qo(o);if(s===o)continue;let a=n.get(s);a||n.set(s,a=[]),a.push(o)}for(let r of n.values())r.sort($);return n}function Qh(e){let t=[],n=new Set;for(let a of e)for(let l of a.all)n.has(l)||(n.add(l),t.push(l));let r=new Uint32Array(t.length),o=new Map;for(let a=0;a=U0&&s.push({term:e.terms[a],dice:l})}return s}function oR(e,t,n={}){return ey(e,t,n).results}function Gt(e,t,n={}){return ey(e,t,n)}function Xh(e,t,n,r){return{results:[],explain:{query:e,terms:[],droppedStopwords:si(e,r),unresolvedTerms:[],verdict:t,note:n,bridgedOnlyResults:0,resultCount:0}}}function aR(e,t){let n=si(t).filter(l=>l.length>=2);if(!n.length)return;let r=new Set(n.map(l=>l.toLowerCase()));if(r.size===1&&!us(t).length)return l=>r.has(l.toLowerCase());let o=n.filter(l=>/[A-Z]/.test(l));if(!o.length)return;let s=Mu(e),a=new Set(o.filter(l=>{let c=l.toLowerCase();return s.some(d=>d.exactNames.has(c)&&d.symbols.includes(l))}));return a.size?l=>a.has(l):void 0}function ey(e,t,n={}){let r=aR(e,t),o=[],s=new Set;for(let T of us(t,r))for(let F of mn(T))s.has(F)||(s.add(F),o.push(F));if(!o.length){let T=si(t,r);return Xh(t,"none",T.length?`Nothing was searched for: every token in this query (${T.join(", ")}) is a stopword or too short to index. Search with the identifiers or domain words you are actually looking for.`:"Nothing was searched for: the query carried no indexable token.",r)}let a=o.some(T=>K0.test(T)),l=Mu(e),c=l.length;if(!c)return Xh(t,"none","This index contains no files.",r);let d=sR(l),u=new Uint8Array(c),f=T=>{let F=0;for(let R=0;Rm.get(F)===0);if(T.length){let F=ry(e),R=[];for(let C of T){let A=Qo(C),S=(F.get(A)??[]).filter(w=>w!==C);A!==C&&Qo(A)===A&&l.some(w=>w.all.has(A))&&(S.push(A),S.sort($)),S.length?g.set(C,S.slice(0,Vh).map(w=>({term:w,dice:z0,via:"stem"}))):R.push(C)}if(R.length){let C=ty(e);for(let A of R){let S=iR(C,A);S.sort((w,E)=>E.dice-w.dice||$(w.term,E.term)),g.set(A,S.slice(0,Vh).map(w=>({...w,via:"trigram"})))}}}}let h=new Map;for(let T of g.values())for(let{term:F}of T)!m.has(F)&&!h.has(F)&&h.set(F,f(F));let _=T=>m.get(T)??h.get(T),y=T=>Math.log(1+(c-T+.5)/(T+.5)),b=n.rank==="graph"?ny(e):void 0,x=T=>(1+Jh*Math.log1p(T*c))/(1+Jh*Math.LN2),k=[];for(let T=0;T{let L=0;for(let H of sl){let Y=F.fields[H],oe=Y.tf.get(N);if(!oe)continue;A.add(H);let ge=G0[H];L+=H0[H]*oe/(1-ge+ge*Y.len/d[H])}return L};for(let N of o){let L=P(N);if(L>0){C.push(N),S.add(N),F.exactNames.has(N)&&(E=!0),R+=y(m.get(N))*(L/(qh+L));continue}for(let H of g.get(N)??[]){let Y=P(H.term);Y&&(R+=y(_(H.term))*(Y/(qh+Y))*H.dice,S.add(H.term),w.add(N))}}!C.length&&!w.size||(E&&(R*=q0),a||(F.isFixture?R*=X0:F.isTest&&(R*=J0)),b&&!F.file.endsWith(".go")&&(R*=x(b.get(F.file)??0)),k.push({d:F,score:Number(R.toFixed(4)),matched:C,matchedFields:A,symbolTerms:S,fuzzyHit:w}))}k.sort((T,F)=>F.score-T.score||$(T.d.file,F.d.file));let v=(n.exact?k.filter(T=>T.matched.length):k).slice(0,n.limit??W0).map(lR);return{results:v,explain:cR(t,o,m,g,v,r)}}function lR({d:e,score:t,matched:n,matchedFields:r,symbolTerms:o,fuzzyHit:s}){let l=e.decls.map(d=>{let u=new Set(mn(d.name)),f=0;for(let m of o)u.has(m)&&f++;return{decl:d,hits:f}}).filter(d=>d.hits>0).sort((d,u)=>u.hits-d.hits||$(d.decl.name,u.decl.name)).slice(0,B0).map(d=>d.decl),c={file:e.file,score:t,matchedTerms:n.sort($),topSymbols:l.map(d=>d.name)};return r.size&&(c.matchedFields=sl.filter(d=>r.has(d))),l.length&&(c.symbolHits=l,c.line=Math.min(...l.map(d=>d.line))),s.size&&(c.fuzzyTerms=[...s].sort($)),n.length||(c.bridgedOnly=!0),c}function cR(e,t,n,r,o,s){let a=t.map(y=>{let b=n.get(y)??0,x=b===0?r.get(y)??[]:[];return x.length?{term:y,df:b,bridge:{via:x[0].via,to:x.map(k=>k.term),dice:x[0].dice}}:{term:y,df:b}}),l=a.filter(y=>y.df===0&&!y.bridge).map(y=>y.term).sort($),c=!/\s/.test(e.trim()),d=c?us(e,s).map(y=>mn(y)[0]).filter(y=>y!==void 0):[],u=!c||!t.length?void 0:d.length>1?{term:e.trim(),df:Math.min(...d.map(y=>n.get(y)??0))}:{term:t[0],df:n.get(t[0])??0},f=o.filter(y=>y.bridgedOnly).length,m=o.length>0&&f===o.length,p=u?.df===0,g=o.length?p||m?"weak":"match":"none",h={query:e,terms:a,droppedStopwords:si(e,s),unresolvedTerms:l,...u?{wholeIdentifier:u}:{},verdict:g,bridgedOnlyResults:f,resultCount:o.length},_=dR(h,p,m);return _&&(h.note=_),h}function dR(e,t,n){let{verdict:r,wholeIdentifier:o,resultCount:s,terms:a}=e;if(r!=="match"){if(!s){let l=e.unresolvedTerms;return l.length?`No file matches. ${l.length===1?"The term":"The terms"} ${l.join(", ")} ${l.length===1?"appears":"appear"} nowhere in this index.`:"No file matches this query."}if(t&&o){let l=a.filter(m=>m.term!==o.term&&m.df>0).map(m=>m.term).join(", "),c=a.find(m=>m.term===o.term),d=(c?c.bridge?.to:a.find(m=>m.df===0&&m.bridge)?.bridge?.to)??[],u=l?` The ${s} result${s===1?"":"s"} below match only its parts (${l}).`:"",f=d.length?` Closest indexed name${d.length===1?"":"s"}: ${d.join(", ")}.`:"";return`No file in this index defines or mentions "${o.term}".${u}${f} If you expected it here, check you are indexing the right branch or commit.`}if(n)return`Nothing matched verbatim. Every result below came from a near match: ${a.filter(d=>d.bridge).map(d=>`"${d.term}" \u2192 ${d.bridge.to.join(", ")}`).join("; ")}. Re-run with --exact to see only literal matches.`}}var qh,W0,B0,U0,Vh,z0,sl,H0,G0,q0,V0,J0,K0,X0,Z0,Jh,Q0,eR,Cu,rR,Kh,Fs=z(()=>{"use strict";I();gt();et();lr();le();qh=1.2,W0=20,B0=5,U0=.6,Vh=3,z0=.9,sl=["name","path","heading","summary","doc","body"],H0={name:3,path:2,heading:1.5,summary:1.5,doc:1.6,body:.7},G0={name:.75,path:.75,heading:.75,summary:.75,doc:.75,body:.4},q0=1.35,V0=new Set(["reexport","reexport-all"]),J0=.65,K0=/^(test|tests|spec|specs|fixture|fixtures|testdata|mock|mocks|stub|stubs)$/,X0=.5,Z0=/(^|\/)(testdata|test-data|test_data|fixtures?|__fixtures__|__snapshots__)(\/|$)/i,Jh=.1;Q0=7,eR=32,Cu=3;rR=/^[a-z0-9]{2,}$/,Kh=new WeakMap});function zr(e,t,n=.85){let r=new Map,o=e.length;if(o===0)return r;let s=new Map(e.map((d,u)=>[d,u])),a=Array.from({length:o},()=>[]),l=new Array(o).fill(0);for(let d of t){if(d.dangling)continue;let u=s.get(d.from),f=s.get(d.to);u===void 0||f===void 0||u===f||(a[u].push([f,d.weight]),l[u]+=d.weight)}let c=new Array(o).fill(1/o);for(let d=0;d<200;d++){let u=0;for(let g=0;gr.set(d,c[u])),r}function sy(e,t){let n=new Map;for(let h of e)n.set(h,0);let r=e.length;if(r<3)return n;let o=new Map(e.map((h,_)=>[h,_])),s=Array.from({length:r},()=>new Set);for(let h of t){if(h.dangling)continue;let _=o.get(h.from),y=o.get(h.to);_===void 0||y===void 0||_===y||(s[_].add(y),s[y].add(_))}let a=s.map(h=>[...h].sort((_,y)=>_-y)),l=new Float64Array(r),c=[],d=[],u=Array.from({length:r},()=>[]),f=new Float64Array(r),m=new Int32Array(r).fill(-1),p=new Float64Array(r);for(let h=0;h=0;_--){let y=c[_];for(let b of u[y])p[b]+=f[b]/f[y]*(1+p[y]);y!==h&&(l[y]+=p[y])}}let g=(r-1)*(r-2)/2;return e.forEach((h,_)=>n.set(h,l[_]/2/g)),n}function Au(e){let t=[],n=e.modules.length;if(n>0){let o=e.modules.map(a=>a.id),s=zr(o,e.moduleEdges);for(let a of e.modules)a.pagerank=Number(((s.get(a.id)??0)*n).toFixed(4));if(n>3e3)t.push(`betweenness skipped (${n} modules > 3000)`);else{let a=sy(o,e.moduleEdges);for(let l of e.modules)l.betweenness=Number((a.get(l.id)??0).toFixed(6))}}let r=e.files.length;if(r>0){let o=e.files.map(a=>a.id),s=zr(o,e.fileEdges);for(let a of e.files)a.pagerank=Number(((s.get(a.id)??0)*r).toFixed(4))}return t}var Yi=z(()=>{"use strict";I()});function mR(e){let t=iy.get(e);if(!t){let n=["if","for","while",...uR[e]??fR];t=new RegExp(`(?r[0])]);e.block&&n.add("/"),e.backtick&&n.add("`"),t=new RegExp(`[${[...n].map(r=>"\\"+r).join("")}]`,"g"),oy.set(e,t)}return t}function ol(e,t){let n=t&&_R[Oe(t)]||cr,r=e.length,o="",s=0,a=(u,f)=>{o+=e.slice(s,u)+e.slice(u,f).replace(/[^\n]/g," "),s=f},l=(u,f,m,p)=>{for(;ue.startsWith(f,d))){let f=e.indexOf(` -`,d),m=f===-1?r:f;a(d,m),d=m}else if(n.triple&&(e.startsWith('"""',d)||e.startsWith("'''",d))){let f=l(d+3,e.slice(d,d+3),!0,!0);a(d,f),d=f}else if(u==='"'||u==="'"&&!n.charOnly){let f=l(d+1,u,!0,!1);a(d,f),d=f}else if(u==="'"){ay.lastIndex=d;let f=ay.exec(e);f&&a(d,d+f[0].length),d+=f?f[0].length:1}else if(u==="`"&&n.backtick){let f=l(d+1,"`",n.backtick==="template",!0);a(d,f),d=f}else d++}return s===0?e:o+e.slice(s)}function ly(e,t){let n=t?Oe(t):"",r=(e.match(mR(n))??[]).length;return n==="python"&&(r+=(e.match(pR)??[]).length),hR.has(n)&&(r+=(e.match(gR)??[]).length),r}function Iu(e,t){return 1+ly(ol(e,t),t)}function Qi(e,t,n=50){let r=[];for(let o of e.files){if(o.kind!=="code"||t&&o.rel!==t||!o.symbols.length)continue;let s=ol(se(j(e.root,o.rel)),o.lang).split(` -`),a=o.symbols.filter(l=>l.kind!=="reexport"&&l.kind!=="reexport-all").sort((l,c)=>l.line-c.line||(c.endLine??c.line)-(l.endLine??l.line));a.forEach((l,c)=>{if(yR.has(l.kind))return;let d=l.endLine??l.line,u=s.slice(l.line-1,d);for(let m of wR(a,c,d))for(let p=m.line;p<=m.endLine;p++)u[p-l.line]="";let f={file:o.rel,name:l.name,line:l.line,complexity:1+ly(u.join(` -`),o.lang)};l.endLine!==void 0&&(f.endLine=l.endLine),r.push(f)})}return r.sort((o,s)=>s.complexity-o.complexity||$(o.file,s.file)||o.line-s.line),r.slice(0,n)}function wR(e,t,n){let r=e[t],o=[];for(let s=t+1;sn||(a.line>r.line||a.endLines.kind==="code"&&(t.get(s.rel)??0)>0).map(s=>{let a=r.get(s.rel),l=t.get(s.rel)??0;return{file:s.rel,complexity:a,commits:l,score:(l+1)*a}});return o.sort((s,a)=>a.score-s.score||$(s.file,a.file)),o.slice(0,n)}var uR,fR,iy,pR,gR,hR,yR,cr,qt,_R,oy,ay,Os=z(()=>{"use strict";I();fe();ir();gt();Ze();le();uR={js:["else\\s+if","case","catch"],c:["else\\s+if","case"],java:["else\\s+if","case","catch"],csharp:["else\\s+if","foreach","case","catch"],go:["else\\s+if","case"],rust:["else\\s+if","match"],kotlin:["else\\s+if","when","catch"],scala:["else\\s+if","match","case","catch"],swift:["else\\s+if","case","catch","guard"],php:["elseif","else\\s+if","foreach","case","catch"],dart:["else\\s+if","case","catch"],python:["elif","except"],ruby:["elsif","unless","until","when","rescue"],elixir:["unless","case","cond","rescue"],lua:["elseif"],shell:["elif","until","case"],perl:["elsif","unless","until","foreach"]},fR=["elif","elsif","else\\s+if","foreach","until","unless","case","when","match","catch","rescue","except"],iy=new Map;pR=/^[ \t]*case\b[^\n]*:[ \t]*$/gm,gR=/(?[n.rel,n]))}function al(e){let t=dt(e);if(!t.symbolsByName){let n=new Map;for(let r of e.files)for(let o of r.symbols){let s=n.get(o.name);s?s.push(o):n.set(o.name,[o])}t.symbolsByName=n}return t.symbolsByName}function ln(e){let t=dt(e);return t.resolveCtx??=Ui(e)}function Ot(e){let t=dt(e);if(!t.importPairs){let n=ln(e),r=new Set;for(let o of e.files)for(let s of o.refs){if(s.kind!=="import")continue;let a=ct(o.rel,o.ext,s.spec,n);a.kind==="resolved"&&a.target!==o.rel&&r.add(`${o.rel}|${a.target}`)}t.importPairs=r}return t.importPairs}function dy(e,t,n){let r=Tu.get(e);!r||r.resolveCtx!==t||r.importPairs||(r.importPairs=n)}function Nr(e){let t=dt(e);return t.uniqueDefs??=$u(e)}function ll(e){let t=dt(e);return t.symbolRefs??=uu(e)}function Ya(e){let t=dt(e);if(t.docMentions)return t.docMentions;let n=Nr(e),r=new Map;if(n.size)for(let o of e.files){if(o.kind!=="doc")continue;let s=e.docText.get(o.rel),a=s??se(j(e.root,o.rel));if(!a)continue;let l=new Map;for(let c of a.split(/[^A-Za-z0-9_]+/))n.has(c)&&l.set(c,(l.get(c)??0)+1);r.set(o.rel,{counts:l,retained:s!==void 0})}return t.docMentions=r}function uy(e){let t=dt(e);if(t.identSets)return t.identSets;let n=new Map;for(let r of e.files)r.kind==="code"&&r.idents?.length&&n.set(r.rel,new Set(r.idents));return t.identSets=n}function Ns(e){let t=dt(e);return t.callerIndex??=Hr(e,Ot(e))}function Ps(e){let t=dt(e);return t.hierarchy??=pu(e,Ot(e))}function Ls(e){let t=dt(e);return t.symbolGraph??=wu(e,Ot(e))}function Mu(e){let t=dt(e);return(t.bm25??={docs:il(e)}).docs}function ty(e){let t=dt(e),n=t.bm25??={docs:il(e)};return n.trigrams??=Qh(n.docs)}function ny(e){let t=dt(e);if(!t.importPagerank){let n=e.files.map(o=>o.rel),r=[];for(let o of Ot(e)){let s=o.indexOf("|");r.push({from:o.slice(0,s),to:o.slice(s+1),kind:"import",weight:1})}t.importPagerank=zr(n,r)}return t.importPagerank}function ry(e){let t=dt(e),n=t.bm25??={docs:il(e)};return n.stems??=Yh(n.docs)}function cy(e){let t=dt(e);if(!t.fileComplexity){let n=new Map;for(let r of e.files)r.kind==="code"&&n.set(r.rel,Iu(se(j(e.root,r.rel)),r.lang));t.fileComplexity=n}return t.fileComplexity}var Tu,gt=z(()=>{"use strict";I();fe();An();cl();zi();or();Tn();Wr();Fs();Yi();Os();Ze();Tu=new WeakMap});function dl(e,t){let n=e.get(t);if(n)return n;for(let r of In(t).slice(1))for(let o of e.values())if(As(r,o.def))return o}function my(e,t,n={}){return gy(e,Ot(e),n.recall===!0,new Set(t))}function py(e){return[...new Set(In(e).map(t=>t.name))]}function xR(e){return new Set(Ot(e))}function Hr(e,t,n={}){return gy(e,t??Ot(e),n.recall===!0)}function gy(e,t,n,r){let o=ar(e,t,{recall:n,only:r}),s=new Map;for(let c of e.files){let d=o.forFile(c);if(d)for(let u of c.calls){let f=d(u);if(!f)continue;let m=f.def.name+"\0"+f.def.file,p=s.get(m);p?f.def.line$(f.file,m.file)||f.line-m.line),a.has(d.name)?a.set(`${d.name}@${d.file}`,{def:d,callers:u}):a.set(d.name,{def:d,callers:u})}return a}function SR(e,t,n){let r=e.files.find(o=>o.rel===t);if(r?.symbols.length)return $n(r.symbols,n)}function $n(e,t){let n;for(let r of e)fy.has(r.kind)||r.line>t||r.endLine!==void 0&&t>r.endLine||(!n||r.line>n.line||r.line===n.line&&(r.endLine??1/0)<=(n.endLine??1/0))&&(n=r);return n}function Fu(e){return hy(e)}function ur(e,t){return hy(e,t).get(t)??[]}function hy(e,t){let n=new Map;for(let o of e.files){if(!o.calls?.length)continue;let s;for(let a of o.calls){if(t!==void 0&&a.name!==t)continue;s??=o.symbols.filter(u=>!fy.has(u.kind));let l={file:o.rel,line:a.line};a.receiver!==void 0&&(l.receiver=a.receiver);let c=$n(s,a.line);c&&(l.enclosingSymbol=c);let d=n.get(a.name);d||n.set(a.name,d=[]),d.push(l)}}let r=new Map;for(let o of[...n.keys()].sort($)){let s=n.get(o);s.sort((a,l)=>$(a.file,l.file)||a.line-l.line),r.set(o,s)}return r}var fy,or=z(()=>{"use strict";I();Is();gt();le();Pr();fy=new Set(["reexport","reexport-all","default"])});function RR(e){let t=e.split("/"),n=t.pop()??e;return(/^v\d+$/.test(n)||n==="go")&&t.length&&(n=t.pop()),n.replace(/\.v\d+$/,"").replace(/^go-/,"").replace(/[-.]go$/,"").replace(/\W/g,"")}function CR(e,t){if(!e.includes(t))return;let n=Pu.get(t);n||(n=new RegExp(`(?:^|[(,\\s])${t}\\s*(?::\\s*["']?|\\s+[*&]?)\\s*(?:([A-Za-z_]\\w*)\\.)?(?:[A-Za-z_]\\w*\\.)*([A-Za-z_]\\w*)`),Pu.size<4096&&Pu.set(t,n));let r=n.exec(e);return r?{type:r[2],qualifier:r[1]}:void 0}function MR(e){if(!(!e?.signature||e.kind!=="method"))return/^func\s*\(\s*([A-Za-z_]\w*)\s/.exec(e.signature)?.[1]}function gu(e,t,n){let r=Ds(t),o,s=C=>(o??=new Map(e.files.map(A=>[A.rel,A]))).get(C),a=new Map;for(let C of e.files){let A=C.rel.endsWith("/__init__.py")||C.rel==="__init__.py"?{all:!0,names:new Set}:void 0;for(let S of C.symbols)S.kind!=="reexport"&&S.kind!=="reexport-all"||(A??={all:!1,names:new Set},S.kind==="reexport-all"?A.all=!0:A.names.add(S.name));A&&a.set(C.rel,A)}let l=new Map,c=(C,A)=>{let S=`${C}\0${A}`,w=l.get(S);if(w)return w;w=new Set;let E=[C];for(let P=0;P{if(!d){d=new Map;for(let S of e.files){let w=Oe(S.lang);if(!by.has(w)||S.kind!=="code")continue;let E=`${w}\0${Ct(S.rel)}`,P=d.get(E);P||d.set(E,P=[]),P.push(S)}}return d.get(`${C}\0${A}`)??[]},f=new Map,m=C=>{let A=Oe(C.lang);if(!by.has(A))return null;let S=f.get(C.rel);if(S!==void 0)return S;let w=Ct(C.rel),E=new Set;if(A==="go")for(let P of r.get(C.rel)??[])P.endsWith(".go")&&Ct(P)!==w&&E.add(Ct(P));return f.set(C.rel,S={own:w,test:to(C.rel),imported:E}),S},p=new WeakMap,g=(C,A,S,w,E)=>{let P=(L,H)=>{L.file===A.rel||E.has(L.file)||(H===S.own?S.test||!to(L.file):S.imported.has(H)&&!to(L.file))&&(E.add(L.file),w.push(L))};if(C.list.length<=S.imported.size+1){for(let L of C.list)P(L,Ct(L.file));return}let N=p.get(C);if(!N){N=new Map;for(let L of C.list){let H=Ct(L.file),Y=N.get(H);Y?Y.push(L):N.set(H,[L])}p.set(C,N)}for(let L of N.get(S.own)??[])P(L,S.own);for(let L of S.imported)for(let H of N.get(L)??[])P(H,L)},h=(C,A,S,w)=>{if(A.size{for(let P of A){let N=a.get(P);if(N&&(h(C,c(P,S),w,E),!(N.all||!N.names.size)))for(let L of C.list)L.parent&&!E.has(L.file)&&N.names.has(L.parent)&&c(P,L.parent).has(L.file)&&(E.add(L.file),w.push(L))}},y=(C,A,S)=>{if(!C)return[];let w=m(A);if(w&&A.lang==="go"){let L=[];return g(C,A,w,L,new Set),L}let E=r.get(A.rel),P=Lu(C,E),N=new Set(P.map(L=>L.file));return N.add(A.rel),E&&_(C,E,S,P,N),w&&g(C,A,w,P,N),P},b=(C,A,S)=>{if(!C)return[];let w=[],E=new Set;return h(C,new Set(A),w,E),_(C,A,S,w,E),w},x=n,k=xy.get(e),v=()=>(x??=ln(e),k?.ctx!==x&&xy.set(e,k={ctx:x,files:new Map}),k.files),T=C=>{let A=s(C);if(!A)return;let S=A.importAliases?.find(P=>P.local==="default"&&P.from===void 0);if(S)return S.name;let w=A.symbols.find(P=>P.kind==="default");if(w)return w.name;let E=C.slice(C.lastIndexOf("/")+1).replace(/\.[^.]+$/,"");return A.symbols.some(P=>P.name===E&&!P.parent)?E:void 0},F=C=>u("go",C).find(A=>!to(A.rel))?.symbols.find(A=>A.kind==="package")?.name;return{targets:C=>r.get(C),reached:y,within:b,aliases:C=>{let A=C.lang==="go";if(!C.importAliases?.length&&!(A&&C.refs.length))return vR;let S=v(),w=S.get(C.rel);if(w)return w;w={modules:new Map,names:new Map};let E=N=>{let L=ct(C.rel,C.ext,N,x);return L.kind==="resolved"&&L.target!==C.rel?L.target:null},P=(N,L)=>{let H=w.modules.get(N);H==null?w.modules.set(N,L):L&&w.modules.set(N,[...new Set([...H,...L])].sort($))};if(A){let N=new Map;for(let L of C.importAliases??[])L.from!==void 0&&N.set(L.from,L.local);for(let L of C.refs){if(L.kind!=="import")continue;let H=E(L.spec),Y=H===null?void 0:Ct(H),oe=N.get(L.spec)??(Y!==void 0?F(Y):void 0)??RR(L.spec);P(oe,Y!==void 0?u("go",Y).filter(ge=>!to(ge.rel)).map(ge=>ge.rel):null)}}else for(let N of C.importAliases??[]){if(N.from===void 0)continue;let L=E(N.from);if(N.name==="*"){P(N.local,L?[L]:null);continue}if(C.lang==="python"){let Y=E(N.from.endsWith(".")?N.from+N.name:`${N.from}.${N.name}`);if(Y&&Y!==L){P(N.local,[Y]);continue}}if(w.names.has(N.local))continue;let H=N.name==="default"?(L?T(L):void 0)??N.local:N.name;w.names.set(N.local,{name:H,files:L?[L]:null})}return S.set(C.rel,w),w}}}function ky(e,t,n){qi(e.any,t.name,t),qi(n?e.member:e.free,t.name,t)}function Ey(e,t,n,r){if(r!=="member-first")return e[r].get(t)?.get(n);let o=e.member.get(t)?.get(n),s=e.free.get(t)?.get(n);if(!o||!s)return o??s;let a=new Map(o.byFile),l=[...o.list];for(let c of s.list)a.has(c.file)||(a.set(c.file,c),l.push(c));return{list:l,byFile:a}}function ar(e,t,n={}){let r=n.recall===!0,o=n.only,s=gu(e,t,n.ctx),a,l=new Map,c=new Set,d=F=>{let R=l.get(F);if(R)return R;let C=(a??=new Map(e.files.map(w=>[w.rel,w]))).get(F)?.symbols??[],A,S;for(let w of C)if(w.parent!==void 0){if(!S){S=new Map;for(let E of C)S.has(E.name)||S.set(E.name,E.kind)}kR.has(S.get(w.parent)??"")&&(A??=new Set).add(w.parent)}return l.set(F,R=A??c),R},u=F=>(a??=new Map(e.files.map(R=>[R.rel,R]))).has(F),f=(F,R)=>R.map(C=>F?`${F}/${C}`:C).find(u),m=(F,R)=>{let C=F.slice(F.lastIndexOf("/")+1),A;if(R==="crate")for(let S=Ct(F);!A&&(A=f(S,["lib.rs","main.rs"]),!!S);S=Ct(S));else if(C!=="lib.rs"&&C!=="main.rs"){let S=Ct(C==="mod.rs"?Ct(F):F.slice(0,-3));A=f(S,["mod.rs","lib.rs","main.rs"])??(S&&u(`${S}.rs`)?`${S}.rs`:void 0)}return A===void 0?void 0:[A]},p=F=>F.parent!==void 0&&d(F.file).has(F.parent),g=F=>F.parent!==void 0&&!d(F.file).has(F.parent),h=new Map;for(let F of e.files){let R=wy[Oe(F.lang)]!==void 0;for(let C of F.symbols){if(ul.has(C.kind)||Ou.has(C.kind)||!C.exported&&!R||o&&!o.has(C.name))continue;let A=h.get(C.name);A?A.push(C):h.set(C.name,[C])}}let _=new Map,y=F=>{let R=_.get(F);if(R!==void 0)return R;let C=h.get(F);if(R=null,C){R={exported:Sy(),hidden:Sy()};for(let A of C)A.exported?ky(R.exported,A,g(A)):p(A)||ky(R.hidden,A,g(A))}return _.set(F,R),R},b=(F,R,C)=>{let A=y(F);return A?Ey(A.exported,F,R,C):void 0},x=(F,R,C)=>{let A=y(F);return A?Ey(A.hidden,F,R,C):void 0},k=new Map,v=F=>{let R=k.get(F);return R===void 0&&k.set(F,R=Ft(F)||Cs(Ct(F)||"(root)")===2),R};return{forFile:F=>{if(!F.calls?.length||o&&!F.calls.some(Z=>o.has(Z.name)||F.importAliases?.some(K=>K.local===Z.name)))return;let R=Oe(F.lang),C=!r&&_y.has(R),A=wy[R],S=new Map,w=new Map,E=new Map,P=new Set,N=d(F.rel),L=Z=>Z.parent!==void 0&&!N.has(Z.parent);for(let Z of F.symbols)ul.has(Z.kind)||Ou.has(Z.kind)||(S.has(Z.name)||S.set(Z.name,Z),L(Z)?(E.has(Z.name)||E.set(Z.name,Z),P.add(Z.parent)):w.has(Z.name)||w.set(Z.name,Z));let H,Y,oe,ge=(Z,K)=>{if(!Y){Y=new Map;for(let J of F.symbols){if(ul.has(J.kind)||Ou.has(J.kind)||!L(J))continue;let X=`${J.parent}\0${J.name}`;Y.has(X)||Y.set(X,J)}}return Y.get(`${Z}\0${K}`)},Se=Z=>{if(P.size){if(!oe){oe=new Map;for(let K of P){let J=K.toLowerCase();oe.set(J,oe.has(J)?null:K)}}return oe.get(Z.toLowerCase())}},Ce=s.aliases(F),U;if(R==="rust")for(let Z of["crate","super"]){let K=m(F.rel,Z);K&&(U??=new Map).set(Z,K)}let B=(Z,K)=>{let J=s.reached(b(Z,R,K),F,Z),X=x(Z,R,K);if(X&&(A==="package"||A==="import")){let V=new Set(J.map(te=>te.file));for(let te of A==="package"?s.reached(X,F,Z):Lu(X,s.targets(F.rel)))A==="package"&&Ct(te.file)!==Ct(F.rel)||te.file!==F.rel&&!V.has(te.file)&&(V.add(te.file),J.push(te))}return J},G=(Z,K,J)=>{if(K!==void 0&&Z.some(V=>V.parent===K))return Z.filter(V=>V.parent===K);let X=J?.toLowerCase();return X!==void 0&&Z.some(V=>V.parent?.toLowerCase()===X)?Z.filter(V=>V.parent?.toLowerCase()===X):Z},ee=(Z,K,J,X)=>({shape:Z,receiver:K,selfType:J,typeHint:X,results:new Map}),ce=ee("bare"),ke=ee("outside"),rt=new Map,qe=new Map,_e=(Z,K)=>{let J=Z.receiver;if(J===void 0)return ce;let X=rt.get(J);if(X)return X;let V=de=>ee("self",J,de,de);if(!Nu.has(J)){if(U?.has(J))X=ee("module",J);else if(Ce.modules.has(J))X=ee("module",J);else if(P.has(J))X=V(J);else if(!_y.has(R)){let de=Se(J);X=de?V(de):ee("foreign",J,void 0,Ce.names.get(J)?.name??J)}if(X)return rt.set(J,X),X}K===void 0&&(H??=F.symbols.filter(de=>!ul.has(de.kind)),K=$n(H,Z.line));let te=qe.get(K??null);return te||qe.set(K??null,te=new Map),X=te.get(J),X||(X=me(J,K,V),te.set(J,X),X)},me=(Z,K,J)=>{if(Nu.has(Z))return J(K?.parent);if(R==="go"&&MR(K)===Z)return J(K.parent);let X=K?.signature?CR(K.signature,Z):void 0;if(X?.qualifier!==void 0&&!r&&Ce.modules.get(X.qualifier)===null)return ke;if(X!==void 0&&P.has(X.type))return J(X.type);let V=X===void 0?Se(Z):void 0;return V?J(V):ee("foreign",Z,void 0,X?.type??Ce.names.get(Z)?.name??Z)},he=(Z,K)=>{let{shape:J,receiver:X,selfType:V,typeHint:te}=K;if(J==="outside")return null;let de;if(r?de=S.get(Z):J==="bare"?de=C?w.get(Z):S.get(Z):J==="self"&&(de=V!==void 0?ge(V,Z):void 0,!de&&X!==void 0&&Nu.has(X)&&(de=E.get(Z))),de)return o&&!o.has(de.name)?null:{hit:{def:de,corroborated:!0},local:!0};let it,Ve=Z;if(J==="bare"){let Lt=Ce.names.get(Z);Lt&&({name:Ve,files:it}=Lt)}else J==="module"&&(it=U?.get(X)??Ce.modules.get(X));let cs=U?.has(X)===!0&&J==="module";if(o&&!o.has(Ve))return null;let yr=C?J==="bare"||J==="module"?"free":J==="self"||R==="go"?"member":"member-first":"any",kn=yr==="member-first"?"member":yr;if(it!==void 0)if(it===null){if(!r)return null}else{let Lt=s.within(b(Ve,R,yr),it,Ve);if(A==="import"||cs)for(let am of s.within(x(Ve,R,yr),it,Ve))Lt.includes(am)||Lt.push(am);let ni=Lr(F.rel,Lt);if(ni)return{hit:{def:ni,corroborated:!0},local:!1};if(Lt.length||!r&&yy.has(R))return null}let sm=G(B(Ve,yr),te,X);if(sm.length){let Lt=Lr(F.rel,sm);return Lt?{hit:{def:Lt,corroborated:!0},local:!1}:null}let im=b(Ve,R,r?"any":kn);if(!im)return null;let kc=vy(im,F.rel);if(!kc.length)return null;let Ec=[...kc];if(r){if(R==="js"&&kc.length!==1)return null}else{if(yy.has(R))return null;let Lt=v(F.rel);Ec=Ec.filter(ni=>!Ru(ni.file)&&(Lt||!v(ni.file)))}let om=Lr(F.rel,G(Ec,te,X));return om?{hit:{def:om,corroborated:!1},local:!1}:null};return(Z,K)=>{let J=_e(Z,K),X=J.results.get(Z.name);if(X===void 0&&J.results.set(Z.name,X=he(Z.name,J)),!!X&&!(X.local&&X.hit.def.line===Z.line))return X.hit}}}}var ul,yy,_y,by,wy,Ou,Nu,kR,ER,vR,Ct,to,Pu,xy,Sy,Is=z(()=>{"use strict";I();An();ir();or();gt();Ms();lr();le();ul=new Set(["reexport","reexport-all","default"]),yy=new Set(["js","go"]),_y=new Set(["go","python"]),by=new Set(["go","java"]),wy={go:"package",java:"package",python:"import",rust:"path"},Ou=new Set(["mod","module","package","namespace"]),Nu=new Set(["self","cls","this","Self"]),kR=new Set(["function","method","def","constructor","operator"]),ER=3,vR={modules:new Map,names:new Map},Ct=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",to=e=>e.endsWith("_test.go");Pu=new Map;xy=new WeakMap;Sy=()=>({any:new Map,free:new Map,member:new Map})});function Oe(e){return AR.has(e)?"js":e==="c"||e==="cpp"?"c":e}function IR(e,t){let n=Math.min(e.length,t.length),r=0,o=0;for(;or?(r=a,n=s,o=!1):a===r&&(o=!0)}return o?void 0:n}function qi(e,t,n){let r=e.get(t);r||e.set(t,r=new Map);for(let a of r.values())if(a.byFile.has(n.file))return!1;let o=Oe(n.lang),s=r.get(o);return s||r.set(o,s={list:[],byFile:new Map}),s.list.push(n),s.byFile.set(n.file,n),!0}function Ds(e){let t=new Map;for(let n of e)for(let r=n.indexOf("|");r!==-1;r=n.indexOf("|",r+1)){let o=n.slice(0,r),s=n.slice(r+1);if(o===s)continue;let a=t.get(o);a||t.set(o,a=new Set),a.add(s)}return t}function Lu(e,t){if(!t?.size)return[];if(t.sizet.has(n.file))}function vy(e,t){return e.byFile.has(t)?e.list.filter(n=>n.file!==t):e.list}function Du(e,t,n){let r=ar(e,t,{ctx:n}),o=new Map;for(let s of e.files){let a=r.forFile(s);if(a)for(let l of s.calls){let c=a(l);if(!c||c.def.file===s.rel)continue;let d=c.corroborated?"extracted":"inferred",u=`${s.rel}|${c.def.file}`,f=o.get(u);f?(f.weight+=1,d==="extracted"&&(f.confidence="extracted")):o.set(u,{from:s.rel,to:c.def.file,weight:1,confidence:d})}}return[...o.values()].map(s=>({from:s.from,to:s.to,kind:"call",weight:Math.min(s.weight,5),confidence:s.confidence})).sort((s,a)=>$(s.from,a.from)||$(s.to,a.to))}var AR,ir=z(()=>{"use strict";I();Is();le();AR=new Set(["typescript","javascript","vue","svelte","astro"])});function TR(e){return e.length<5?!1:/[a-z][A-Z]/.test(e)||/[A-Z]{2}/.test(e)||e.includes("_")||/\d/.test(e)}function $u(e){let t=new Map;for(let r of e.files)for(let o of r.symbols){if(!o.exported||$R.has(o.kind)||!TR(o.name))continue;let s=t.get(o.name);s||t.set(o.name,s=new Set),s.add(r.rel)}let n=new Map;for(let[r,o]of t)o.size===1&&n.set(r,[...o][0]);return n}function Fn(e,t){let n=Ry(t.from,t.to,t.kind),r=e.get(n);if(r){r.weight+=t.weight;return}e.set(n,{...t})}function Wu(e,t,n,r,o){let s=new Map,a=new Set;for(let v of e.files){let T;for(let F of v.refs){if(F.soft){(T??=[]).push(F);continue}if(F.kind==="doc-link"){let R=nr(v.rel,F.spec,t);if(R.kind==="external")continue;R.kind==="dangling"?Fn(s,{from:v.rel,to:F.spec,kind:"doc-link",weight:1,dangling:!0,reason:R.reason}):R.target!==v.rel&&Fn(s,{from:v.rel,to:R.target,kind:"doc-link",weight:1})}else{let R=ct(v.rel,v.ext,F.spec,t);if(R.kind==="external")continue;R.kind==="dangling"?Fn(s,{from:v.rel,to:F.spec,kind:"import",weight:1,dangling:!0,reason:R.reason}):R.target!==v.rel&&(Fn(s,{from:v.rel,to:R.target,kind:"import",weight:1}),a.add(`${v.rel}|${R.target}`))}}for(let F of T??[]){let R=F.kind==="doc-link"?nr(v.rel,F.spec,t):ct(v.rel,v.ext,F.spec,t);R.kind!=="resolved"||R.target===v.rel||s.has(Ry(v.rel,R.target,F.kind))||(Fn(s,{from:v.rel,to:R.target,kind:F.kind,weight:1}),F.kind==="import"&&a.add(`${v.rel}|${R.target}`))}}let l=new Set;for(let v of Du(e,a,t))Fn(s,v),l.add(`${v.from}|${v.to}`);for(let v of mu(e,a,t))Fn(s,v);dy(e,t,a);let c=Nr(e);if(c.size){let v,T=(R,C)=>{let A=fl(C);for(let S of(v??=Ds(a)).get(R)??[])if(fl(S)===A)return!0;return!1},F=new Map(e.files.map(R=>[R.rel,R.lang]));for(let R of e.files){if(R.kind!=="code"||!R.idents?.length)continue;let C=new Set([...R.importedNames??[],...(R.importAliases??[]).map(E=>E.local)]),A=Oe(R.lang),S=new Map;for(let E of R.idents){let P=c.get(E);!P||P===R.rel||C.has(E)||Oe(F.get(P)??"")===A&&S.set(P,(S.get(P)??0)+1)}let w=R.lang==="go";for(let[E,P]of S){let N=`${R.rel}|${E}`;a.has(N)||l.has(N)||w&&E.endsWith(".go")&&fl(E)!==fl(R.rel)&&!T(R.rel,E)||Fn(s,{from:R.rel,to:E,kind:"use",weight:Math.min(P,5)})}}}if(c.size)for(let[v,{counts:T}]of Ya(e))for(let[F,R]of T){let C=c.get(F);C!==v&&Fn(s,{from:v,to:C,kind:"mention",weight:Math.min(R,5)})}let d=[...s.values()].sort((v,T)=>$(v.from,T.from)||$(v.to,T.to)||$(v.kind,T.kind)),u=new Map,f=new Map,m=new Set(e.files.map(v=>v.rel));for(let v of d)v.dangling||!m.has(v.to)||(f.set(v.from,(f.get(v.from)??0)+1),u.set(v.to,(u.get(v.to)??0)+1));let p={import:7,extends:6,implements:5,call:4,use:3,"doc-link":2,mention:1,contains:0},g=new Map;for(let v of d){if(v.dangling||!m.has(v.to))continue;let T=r.get(v.from),F=r.get(v.to);if(!T||!F||T===F)continue;let R=`${T}${ju}${F}`,C=g.get(R);C?(C.weight+=v.weight,(p[v.kind]??0)>(p[C.kind]??0)&&(C.kind=v.kind)):g.set(R,{from:T,to:F,kind:v.kind,weight:v.weight})}let h=[...g.values()].sort((v,T)=>$(v.from,T.from)||$(v.to,T.to)),_=new Map,y=new Map;for(let v of h)y.set(v.from,(y.get(v.from)??0)+1),_.set(v.to,(_.get(v.to)??0)+1);let b=e.files.map(v=>({id:v.rel,kind:"file",rel:v.rel,fileKind:v.kind,lang:v.lang,module:r.get(v.rel)??"root",title:v.title,summary:v.summary,symbols:v.symbols.length,lines:v.lines,degIn:u.get(v.rel)??0,degOut:f.get(v.rel)??0,...v.generated?{generated:v.generated}:{}})).sort((v,T)=>$(v.rel,T.rel)),x=new Map;for(let v of e.files){let T=r.get(v.rel)??"root";x.set(T,(x.get(T)??0)+v.symbols.length)}let k=n.map(v=>({id:v.slug,kind:"module",slug:v.slug,path:v.path,title:v.title,summary:v.summary,tier:v.tier,members:v.members,symbols:x.get(v.slug)??0,degIn:_.get(v.slug)??0,degOut:y.get(v.slug)??0})).sort((v,T)=>$(v.slug,T.slug));return{schemaVersion:o?.schemaVersion??5,version:o?.version??Te,commit:e.commit,fileCount:e.files.length,languages:e.languages,files:b,modules:k,fileEdges:d,moduleEdges:h}}var fl,$R,ju,Ry,cl=z(()=>{"use strict";I();_t();An();ir();Tn();gt();le();fl=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";$R=new Set(["reexport","reexport-all","default"]);ju="\0",Ry=(e,t,n)=>`${e}${ju}${t}${ju}${n}`});function*FR(e){for(let t of e.files)yield*t.symbols}function no(e,t){let n=dr(e).get(t);return n?[...n.symbols].filter(r=>!ml.has(r.kind)).sort((r,o)=>r.line-o.line||$(r.name,o.name)):[]}function pl(e,t,n){let r=dr(e).get(t);if(!r)return;let o=$n(r.symbols,n);if(!o)return{file:t,line:n,symbol:null,enclosing:[]};let s=Math.max(n,o.endLine??n),a=r.symbols.filter(c=>c!==o&&!ml.has(c.kind)&&c.endLine!==void 0&&c.line<=o.line&&c.endLine>=s).sort((c,d)=>c.line-d.line||d.endLine-c.endLine||$(c.name,d.name)).map(ht),l=ht(o);return{file:t,line:n,symbol:{...o,id:l},enclosing:[...new Set(a)].filter(c=>c!==l),...o.endLine===void 0?{approximate:!0}:{}}}function ro(e,t){let n=dr(e);return{...t,callers:t.callers.map(r=>{let o=$n(n.get(r.file)?.symbols??[],r.line);return o?{...r,caller:ht(o)}:{...r}})}}function _n(e,t,n={}){let r=t.split("/").filter(Boolean);if(!r.length)return[];let o=r[r.length-1],s=r.slice(0,-1),a=(u,f)=>n.substring?u.toLowerCase().includes(f.toLowerCase()):u===f,l=[],c=n.substring?FR(e):al(e).get(o)??[];for(let u of c)if(!ml.has(u.kind)&&a(u.name,o)){if(s.length){let f=s[s.length-1];if(!u.parent||u.parent!==f)continue}l.push({...u})}l.sort((u,f)=>+(f.name===o)-+(u.name===o)||$(u.file,f.file)||u.line-f.line);let d=l.slice(0,n.maxResults??50);if(n.includeBody){let u=new Map,f=new Set;for(let m of d){let p=m.endLine??m.line;if(f.has(m.file))continue;let g=u.get(m.file);if(!g){let h=se(j(e.root,m.file));if(!h){f.add(m.file);continue}g=h.split(` +`||t[a]==="\r");)a++;if(t[a]==="}"||t[a]==="]")continue}r+=s}try{return JSON.parse(r)}catch{return}}function Gv(e,t,n,r){let o=Ae(J.join(t,n)),s=n.endsWith(".json")?[o]:[o+".json",J.join(o,"tsconfig.json")];for(let a of s)if(e.has(a))return a;if(!(n.startsWith(".")||n.startsWith("/")))for(let a of r){let l;if(n===a.name)l=[...a.tsconfig?[a.tsconfig]:[],"tsconfig.json"];else if(n.startsWith(a.name+"/")){let c=n.slice(a.name.length+1);l=c.endsWith(".json")?[c]:[c+".json",J.join(c,"tsconfig.json")]}else continue;for(let c of l){let d=Ae(J.join(a.dir,c));if(!d.startsWith("..")&&e.has(d))return d}return}}function Ph(e,t,n,r,o,s){if(!o.has(n)){o.add(n);try{return qv(e,t,n,r,o,s)}finally{o.delete(n)}}}function qv(e,t,n,r,o,s){let a=Nr(re(j(e,n)));if(a===void 0){r.push(`unparseable ${n} \u2014 its path aliases were ignored`);return}let l=n.includes("/")?J.dirname(n):"",c={baseUrlDir:"",pathsDir:""},d=a.extends===void 0?[]:Array.isArray(a.extends)?a.extends:[a.extends];for(let f of d){if(typeof f!="string")continue;let m=Gv(t,l,f,s);if(!m){/^\.\.?\//.test(f)&&r.push(`${n} extends "${f}" which is missing \u2014 its path aliases were ignored`);continue}let p=Ph(e,t,m,r,o,s);p?.baseUrl!==void 0&&(c.baseUrl=p.baseUrl,c.baseUrlDir=p.baseUrlDir),p?.paths&&(c.paths=p.paths,c.pathsDir=p.pathsDir)}let u=a.compilerOptions;return typeof u?.baseUrl=="string"&&(c.baseUrl=u.baseUrl,c.baseUrlDir=l),u?.paths&&(c.paths=u.paths,c.pathsDir=l),c}function Rh(e){let t=lu.indexOf(e);return t!==-1?t:e==="types"?lu.length+1:lu.length}function Ka(e,t){if(!(t.length>=Vv)){if(typeof e=="string")t.includes(e)||t.push(e);else if(Array.isArray(e))for(let n of e)Ka(n,t);else if(e!==null&&typeof e=="object"){let n=Object.keys(e).sort((r,o)=>Rh(r)-Rh(o)||(ro?1:0));for(let r of n)Ka(e[r],t)}}}function Jv(e){if(e==null)return[];let t=[],n=(r,o)=>{let s=[];Ka(o,s),s.length&&t.push({key:r,star:r.includes("*"),targets:s})};if(typeof e=="string"||Array.isArray(e))n(".",e);else if(typeof e=="object"){let r=Object.keys(e);if(r.every(o=>o==="."||o.startsWith("./")))for(let o of r)n(o,e[o]);else n(".",e)}return t.sort((r,o)=>Number(r.star)-Number(o.star)||o.key.length-r.key.length||(r.keyNumber(n.star)-Number(r.star)||r.key.length-n.key.length||T(n.key,r.key)),t}function Ch(e,t){for(let n of e){if(!n.star){if(n.key===t)return n.targets;continue}let r=n.key.indexOf("*"),o=n.key.slice(0,r),s=n.key.slice(r+1);if(!t.startsWith(o)||!t.endsWith(s)||t.lengthl.replace(/\*/g,()=>a))}}function Xv(e,t){let n=[],r=o=>{let s=/^\s*([^\s=]+)(?:\s+v\S+)?\s*=>\s*(\S+)(?:\s+v\S+)?\s*$/.exec(o);if(!s)return;let a=s[2];if(!/^\.\.?\//.test(a))return;let l=Ae(J.join(t,a));l.startsWith("..")||n.push({from:s[1],toDir:l})};for(let o of e.matchAll(/^[ \t]*replace[ \t]+([^(\r\n][^\r\n]*)$/gm))r(o[1]);for(let o of e.matchAll(/^[ \t]*replace[ \t]*\(([\s\S]*?)\)/gm))for(let s of o[1].split(/\r?\n/))r(s);return n}function Zv(e,t){let n={dir:t,deps:new Map},r=l=>{let c=/^(?:"([^"]*)"|'([^']*)')$/.exec(l);return c?c[1]??c[2]:void 0},o=(l,c)=>{let d=l.get(c);return d||l.set(c,d={}),d},s=(l,c,d)=>{c==="package"||c==="path"?l[c]=r(d)??l[c]:c==="workspace"&&(l.workspace=d==="true")},a="";for(let l of e.split(/\r?\n/)){let c=l.replace(/^((?:[^"'#]|"[^"]*"|'[^']*')*)#.*$/,"$1").trim(),d=/^\[\[?([^\]]+)\]\]?$/.exec(c);if(d){a=d[1].replace(/["'\s]/g,""),(a==="workspace"||a.startsWith("workspace."))&&(n.workspaceDeps??=new Map);continue}let u=/^([\w.-]+)\s*=\s*(.+)$/.exec(c);if(!u)continue;let f=u[1],m=u[2];if(a==="package"){f==="name"?n.packageName=r(m)??n.packageName:f==="edition"?n.edition=r(m)??(/workspace\s*=\s*true/.test(m)?"workspace":void 0):f==="edition.workspace"&&(n.edition="workspace");continue}if(a==="lib"){f==="name"?n.libName=r(m)??n.libName:f==="path"&&(n.libPath=r(m)??n.libPath);continue}let p=/^(?:(workspace)\.|target\..+\.)?(?:dev-|build-)?dependencies(?:\.(.+))?$/.exec(a);if(!p)continue;let g=p[1]?n.workspaceDeps:n.deps;if(p[2]){s(o(g,p[2]),f,m);continue}let h=/^([\w-]+)\.(package|path|workspace)$/.exec(f);if(h)s(o(g,h[1]),h[2],m);else if(m.startsWith("{")){let _=o(g,f);for(let y of m.matchAll(/\b(package|path|workspace)\s*=\s*("[^"]*"|'[^']*'|true|false)/g))s(_,y[1],y[2])}}return n}function Yv(e,t){let n=[],r=[...t].filter(c=>c==="Cargo.toml"||c.endsWith("/Cargo.toml"));for(let c of r.sort(T))n.push(Zv(re(j(e,c)),c.includes("/")?J.dirname(c):""));let o=n.filter(c=>c.packageName!==void 0),s=new Map(o.map(c=>[c.dir,c])),a=(c,d)=>!d||c===d||c.startsWith(d+"/"),l=[];for(let c of o){let d=Ae(J.join(c.dir,"src")).replace(/^\.$/,""),u=c.libPath?Ae(J.join(c.dir,c.libPath)):void 0,f=u&&!u.startsWith("..")&&t.has(u)?u:void 0,m=f?f.includes("/")?J.dirname(f):"":d,p=f??Hv(t,[J.join(d,"lib.rs"),J.join(d,"main.rs")]),g=n.filter(_=>_.workspaceDeps&&a(c.dir,_.dir)).sort((_,y)=>y.dir.length-_.dir.length)[0],h=new Map;for(let[_,y]of[...c.deps].sort((b,S)=>T(b[0],S[0]))){let b=y.workspace?g?.workspaceDeps?.get(_):y;if(!b?.package)continue;let S=y.workspace?g.dir:c.dir,k=b.path?s.get(Ae(J.join(S,b.path)).replace(/^\.$/,"")):o.find(R=>R.packageName===b.package);k&&h.set(_.replace(/-/g,"_"),k.dir)}l.push({name:(c.libName??c.packageName).replace(/-/g,"_"),dir:c.dir,srcDir:m,rootFile:p,...h.size?{renames:h}:{},...c.edition===void 0||c.edition==="2015"?{edition2015:!0}:{}})}return l.sort((c,d)=>d.dir.length-c.dir.length||(c.dirv.rel)),n=new Map,r=new Set;for(let v of e.files){let C=v.rel.includes("/")?J.dirname(v.rel):"",M=n.get(C);M||n.set(C,M=[]),M.push(v.rel);let x=C;for(;x&&!r.has(x);)r.add(x),x=x.includes("/")?J.dirname(x):""}let o=[],s=[],a=[],l=[];for(let v of t){if(v!=="package.json"&&!v.endsWith("/package.json"))continue;let C=Nr(re(j(e.root,v)));if(C===void 0){s.push(`unparseable ${v} \u2014 skipped for workspace resolution`);continue}let M=v.includes("/")?J.dirname(v):"";if(l.push({dir:M,importEntries:Kv(C.imports)}),typeof C.name!="string")continue;let x=[C.source,C.main,C.module,C.types].filter(w=>typeof w=="string");a.push({name:C.name,dir:M,exportEntries:Jv(C.exports),mainCandidates:x,...typeof C.tsconfig=="string"?{tsconfig:C.tsconfig}:{}})}a.sort((v,C)=>C.name.length-v.name.length),l.sort((v,C)=>C.dir.length-v.dir.length||T(v.dir,C.dir));let c=[];for(let v of t){let C=v.slice(v.lastIndexOf("/")+1);if(C!=="tsconfig.json"&&C!=="jsconfig.json"&&!(v==="tsconfig.base.json"))continue;let x=v.includes("/")?J.dirname(v):"",w=Ph(e.root,t,v,o,new Set,a);if(!w||!w.paths&&w.baseUrl===void 0)continue;let E=w.baseUrl===void 0?w.pathsDir:w.baseUrl.startsWith(Ja)?Ae(J.join(x,w.baseUrl.slice(Ja.length))).replace(/^\.$/,""):Ae(J.join(w.baseUrlDir,w.baseUrl)).replace(/^\.$/,""),N=J.relative(E,x)||".",O=[];for(let[L,G]of Object.entries(w.paths??{})){if(!Array.isArray(G))continue;let X=L.endsWith("*");O.push({prefix:X?L.slice(0,-1):L,star:X,targets:G.filter(oe=>typeof oe=="string").map(oe=>oe.startsWith(Ja)?J.join(N,oe.slice(Ja.length)):oe)})}O.sort((L,G)=>Number(L.star)-Number(G.star)||G.prefix.length-L.prefix.length||T(L.prefix,G.prefix)),!(!O.length&&w.baseUrl===void 0)&&c.push({dir:x,file:C,baseUrl:E,baseUrlSet:w.baseUrl!==void 0,paths:O})}let d=v=>v==="tsconfig.json"?0:v==="jsconfig.json"?1:2;c.sort((v,C)=>C.dir.length-v.dir.length||d(v.file)-d(C.file)),o.push(...s);let u=[];for(let v of t){if(v!=="go.mod"&&!v.endsWith("/go.mod"))continue;let C=re(j(e.root,v)),M=/^\s*module\s+(\S+)/m.exec(C);if(!M)continue;let x=v.includes("/")?J.dirname(v):"";u.push({module:M[1],dir:x,replaces:Xv(C,x)})}u.sort((v,C)=>C.dir.length-v.dir.length||(v.dirC.prefix.length-v.prefix.length);let b=new Map;for(let v of e.files){if(v.ext!==".cs"||!v.pkg)continue;let C=b.get(v.pkg);C||b.set(v.pkg,C=[]),C.push(v.rel)}for(let v of b.values())v.sort(T);let S=[...m].sort(Ui),k=new Map,R=[...t].filter(v=>v==="pubspec.yaml"||v.endsWith("/pubspec.yaml"));for(let v of R.sort(T)){let C=/^name:[ \t]*["']?(\w+)["']?[ \t]*(?:#.*)?$/m.exec(re(j(e.root,v)));C&&!k.has(C[1])&&k.set(C[1],v.includes("/")?J.dirname(v):"")}let I=new Set([""]);for(let v of r){let C=v.slice(v.lastIndexOf("/")+1);(C==="lua"||C==="src"||C==="lib")&&I.add(v)}let P=new Map;for(let v of e.files)if(!(v.ext!==".ex"&&v.ext!==".exs"))for(let C of v.symbols){if(C.kind!=="module")continue;let M=C.parentPath?C.parentPath.replace(/\//g,"."):C.parent,x=M?M+"."+C.name:C.name,w=P.get(x);(w===void 0||T(v.rel,w)<0)&&P.set(x,v.rel)}return{fileSet:t,dirSet:r,filesByDir:n,tsConfigs:c,goModules:u,rustCrates:f,javaRoots:S,jvm:Lh({filesByDir:n,javaRoots:S},e.files),dartPackages:k,luaRoots:[...I].sort(Ui),root:e.root,svelteKitRoots:[...t].filter(v=>/(?:^|\/)svelte\.config\.(?:js|ts|mjs|cjs)$/.test(v)).map(v=>v.includes("/")?J.dirname(v):"").sort((v,C)=>C.length-v.length||T(v,C)),elixirModules:P,pyRoots:[...g].sort(Ui),workspacePackages:a,packageScopes:l,cIncludeRoots:[...h].sort(Ui),rubyLibRoots:[..._].sort(Ui),phpPsr4:y,csharpNamespaces:b,warnings:o}}function Ht(e,t){for(let n of t){let r=Ae(n);if(r&&!r.startsWith("..")&&e.fileSet.has(r))return r}}function sr(e,t,n){let r=t.split("#")[0].split("?")[0];if(!r)return{kind:"external"};if(r.startsWith("//")||/^[a-z][a-z0-9+.-]*:/i.test(r))return{kind:"external"};let o=r.startsWith("/"),s=o||!e.includes("/")?"":J.dirname(e),a=Ae(J.join(s,o?r.slice(1):r));if(a==="."&&(a=""),a.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let l=u=>[u,u+".md",u+".mdx",J.join(u,"README.md"),J.join(u,"readme.md"),J.join(u,"index.md"),J.join(u,"index.mdx")],c=a;try{c=Ae(decodeURIComponent(a))}catch{}if(c.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let d=Ht(n,c===a?l(a):[...l(a),...l(c)]);return d?{kind:"resolved",target:d}:!a||n.dirSet.has(a)?{kind:"external"}:n.root&&[a,c].some(u=>Q(j(n.root,u)))?{kind:"external"}:{kind:"dangling",reason:"missing-target"}}function Qv(e,t,n){let r=f=>Ht(n,[...Bv.map(m=>f+m),...Uv.map(m=>J.join(f,m))]),o=f=>{let m=r(f);if(m)return m;let p=f.replace(/\.(js|jsx|mjs|cjs)$/,"");return p!==f?r(p):void 0},s=(f,m)=>{for(let p of[m,...du(m)]){let g=o(Ae(J.join(f,p)));if(g)return g}},a=t.indexOf("?"),l=a===-1?t:t.slice(0,a);if(!l)return{kind:"external"};let c=n.svelteKitRoots?.find(f=>!f||e.startsWith(f+"/"));if(l.startsWith(".")){let f=e.includes("/")?J.dirname(e):"",m=Ae(J.join(f,l));if(m.startsWith(".."))return{kind:"dangling",reason:"escapes-repo-root"};let p=o(m);return p?{kind:"resolved",target:p}:c!==void 0&&/(?:^|\/)\$types(?:\.d\.ts|\.js)?$/.test(l)?{kind:"external"}:{kind:"dangling",reason:"missing-module"}}let d,u;for(let f of n.tsConfigs){if(f.dir&&e!==f.dir&&!e.startsWith(f.dir+"/"))continue;u===void 0&&f.baseUrlSet&&(u=f.baseUrl);let m=!1;for(let p of f.paths){if(!(p.star?l.startsWith(p.prefix):l===p.prefix))continue;m=!0;let g=p.star?l.slice(p.prefix.length):"",h=!1;for(let _ of p.targets){let y=p.star?_.replace(/\*/,()=>g):_,b=Ae(J.join(f.baseUrl,y)),S=o(b);if(S)return{kind:"resolved",target:S};let k=b.includes("/")?J.dirname(b):"";(n.dirSet.has(k)||n.fileSet.has(b))&&(h=!0)}d=h?{kind:"dangling",reason:"alias-unresolved"}:{kind:"external"};break}if(m)break}if(u!==void 0&&!l.startsWith("/")){let f=o(Ae(J.join(u,l)));if(f)return{kind:"resolved",target:f}}if(c!==void 0&&!d&&(l==="$lib"||l.startsWith("$lib/"))){let f=Ae(J.join(c,"src/lib",l.slice(4))),m=o(f);if(m)return{kind:"resolved",target:m};if(n.dirSet.has(Ae(J.join(c,"src/lib"))))return{kind:"dangling",reason:"alias-unresolved"}}if(l.startsWith("#")){let f=n.packageScopes.find(p=>!p.dir||e.startsWith(p.dir+"/")),m=f?Ch(f.importEntries,l):void 0;for(let p of m??[]){let g=f&&p.startsWith("./")?s(f.dir,p):void 0;if(g)return{kind:"resolved",target:g}}return d??{kind:"external"}}for(let f of n.workspacePackages){if(l!==f.name&&!l.startsWith(f.name+"/"))continue;let m=l.slice(f.name.length).replace(/^\//,"");for(let g of Ch(f.exportEntries,m?"./"+m:".")??[]){let h=s(f.dir,g);if(h)return{kind:"resolved",target:h}}if(!m)for(let g of f.mainCandidates){let h=s(f.dir,g);if(h)return{kind:"resolved",target:h}}let p=m?[J.join(f.dir,"src",m),J.join(f.dir,m)]:[J.join(f.dir,"src","index"),J.join(f.dir,"index"),J.join(f.dir,"src")];for(let g of p){let h=o(Ae(g));if(h)return{kind:"resolved",target:h}}return{kind:"external"}}return d??{kind:"external"}}function e0(e,t,n){let r=(a,l)=>{let c=l?l.replace(/\./g,"/"):"",d=Ae(J.join(a,c));return Ht(n,[d+".py",d+".pyi",J.join(d,"__init__.py")])};if(t.startsWith(".")){let a=/^\.+/.exec(t)[0].length,l=t.slice(a),c=e.includes("/")?J.dirname(e):"",d=c?c.split("/"):[];if(a-1>d.length)return{kind:"dangling",reason:"escapes-repo-root"};let u=d.slice(0,d.length-(a-1)).join("/");if(l){let m=r(u,l);return m?{kind:"resolved",target:m}:{kind:"dangling",reason:"missing-module"}}let f=Ht(n,[J.join(u,"__init__.py")]);return f?{kind:"resolved",target:f}:{kind:"external"}}let o=[],s=[];for(let a of n.pyRoots)(!a||e.startsWith(a+"/")?o:s).push(a);for(let a of[...o.reverse(),...s]){let l=r(a,t);if(l)return{kind:"resolved",target:l}}return{kind:"external"}}function t0(e,t,n){if(!n.goModules.length)return{kind:"external"};let r=c=>{let d=Ae(c).replace(/^\.$/,""),u=jv(n,d,".go"),f=u.find(m=>!m.endsWith("_test.go"))??u[0];return f?{kind:"resolved",target:f}:{kind:"dangling",reason:"missing-package"}},o=n.goModules.find(c=>!c.dir||e===c.dir||e.startsWith(c.dir+"/"));if(o)for(let c of o.replaces){if(t!==c.from&&!t.startsWith(c.from+"/"))continue;let d=t.slice(c.from.length).replace(/^\//,"");return r(J.join(c.toDir,d))}let s;for(let c of n.goModules)t!==c.module&&!t.startsWith(c.module+"/")||(!s||c.module.length>s.module.length||c.module.length===s.module.length&&c===o)&&(s=c);if(!s)return{kind:"external"};let a=Ae(J.join(s.dir,t.slice(s.module.length).replace(/^\//,""))).replace(/^\.$/,""),l=(c,d)=>!d||c===d||c.startsWith(d+"/");return n.goModules.some(c=>c!==s&&c.dir!==s.dir&&l(c.dir,s.dir)&&l(a,c.dir))?{kind:"dangling",reason:"missing-package"}:r(a)}function n0(e,t,n){if(!n.rustCrates.length)return{kind:"external"};let r=(b,S)=>Ht(n,[J.join(b,S+".rs"),J.join(b,S,"mod.rs")]),o=(b,S)=>{for(let k=S.length;k>=1;k--){let R=Ae(J.join(b,...S.slice(0,k-1))),I=r(R,S[k-1]);if(I)return I}},s=e.includes("/")?J.dirname(e):"",a=e.slice(e.lastIndexOf("/")+1).replace(/\.rs$/,""),l=a==="mod"||a==="lib"||a==="main",c=l?s:J.join(s,a);if(t.startsWith("mod ")){let b=t.slice(4),S=r(c,b)??(l?void 0:r(s,b));return S?{kind:"resolved",target:S}:{kind:"dangling",reason:"missing-module"}}if(t.startsWith("mod-path ")){let b=Ae(J.join(s,t.slice(9)));return b.startsWith("..")?{kind:"dangling",reason:"escapes-repo-root"}:n.fileSet.has(b)?{kind:"resolved",target:b}:{kind:"dangling",reason:"missing-module"}}let d=t.split("::").map(b=>b.trim()).filter(Boolean);if(!d.length)return{kind:"external"};let u=d[0],f=n.rustCrates.find(b=>!b.dir||e===b.dir||e.startsWith(b.dir+"/")),m,p=[];if(u==="crate"&&f)m=f.srcDir,p=d.slice(1);else if(u==="self")m=c,p=d.slice(1);else if(u==="super"){let b=l?s.includes("/")?J.dirname(s):"":s,S=1;for(;SR.dir===S):n.rustCrates.find(R=>R.name===u);if(k){let R=o(k.srcDir,d.slice(1));if(R)return{kind:"resolved",target:R};if(k.rootFile)return{kind:"resolved",target:k.rootFile}}return{kind:"external"}}if(!p.length)return{kind:"external"};let g=o(m,p);if(g)return{kind:"resolved",target:g};if(f&&m===f.srcDir&&f.rootFile)return{kind:"resolved",target:f.rootFile};let h=m.includes("/")?J.dirname(m):"",_=m.slice(m.lastIndexOf("/")+1),y=_?r(h,_):void 0;return y&&y!==e?{kind:"resolved",target:y}:{kind:"external"}}function*r0(e,t){for(let n=e;;n=n.includes("/")?J.dirname(n):""){let r=t.get(n);if(r!==void 0){let o=n?e.slice(n.length+1):e;o.includes(".")||(yield{rank:r,pkg:o.replace(/\//g,".")})}if(!n)return}}function Lh(e,t=[]){let n={types:new Map,packages:new Map,scalaPkg:new Map};s0(n,e);let r=t.filter(s=>cu.has(s.ext)&&s.pkg).sort((s,a)=>T(s.rel,a.rel)),o=(s,a,l)=>{s.has(a)||s.set(a,l)};for(let s of r){Oh.has(s.ext)&&n.scalaPkg.set(s.rel,s.pkg),o(n.packages,s.pkg,s.rel);for(let a of s.symbols)!a.parent&&a.kind!=="package"&&o(n.types,s.pkg+"."+a.name,s.rel)}for(let s of r){let a=s.rel.slice(s.rel.lastIndexOf("/")+1,s.rel.length-s.ext.length);/^\w+$/.test(a)&&(o(n.types,s.pkg+"."+a,s.rel),Fh.has(s.ext)&&o(n.types,s.pkg+"."+a+"Kt",s.rel))}return n}function s0(e,t){let n=new Map(t.javaRoots.map((c,d)=>[c,d]));if(!n.size)return;let{types:r,packages:o}=e,s=new Map,a=new Map,l=(c,d,u,f,m)=>{f>=(d.get(u)??1/0)||(d.set(u,f),c.set(u,m))};for(let[c,d]of t.filesByDir){let u=d.filter(m=>m.endsWith(".java"));if(!u.length)continue;let f=u.reduce((m,p)=>p=Math.min(2,n.length);r--){let o=e.types.get(r===n.length?n.join("."):n.slice(0,r).join("."));if(o)return o}}function i0(e,t,n){let r=n.jvm??=Lh(n),o=Mh(r,t),s=o?void 0:r.scalaPkg.get(e);for(let a=s;a&&!o;a=a.includes(".")?a.slice(0,a.lastIndexOf(".")):void 0)o=Mh(r,a+"."+t);return o?{kind:"resolved",target:o}:{kind:"external"}}function l0(e,t,n){let r=e.includes("/")?J.dirname(e):"",o=Ht(n,[J.join(r,t),...n.cIncludeRoots.map(s=>J.join(s,t))]);return o?{kind:"resolved",target:o}:o0.has(t)||a0.test(t)?{kind:"external"}:{kind:"dangling",reason:"missing-include"}}function c0(e,t,n){if(t.startsWith(".")){let r=e.includes("/")?J.dirname(e):"",o=Ae(J.join(r,t)),s=Ht(n,[o+".rb",J.join(o,"index.rb")]);return s?{kind:"resolved",target:s}:{kind:"dangling",reason:"missing-module"}}for(let r of n.rubyLibRoots){let o=Ht(n,[J.join(r,t+".rb")]);if(o)return{kind:"resolved",target:o}}return{kind:"external"}}function d0(e,t,n){if(t.startsWith(".")){let o=e.includes("/")?J.dirname(e):"",s=Ae(J.join(o,t)),a=Ht(n,[s,s+".php"]);return a?{kind:"resolved",target:a}:{kind:"dangling",reason:"missing-module"}}let r=t.replace(/^\\+/,"");for(let{prefix:o,dir:s}of n.phpPsr4){if(o&&r!==o&&!r.startsWith(o+"\\"))continue;let a=o?r.slice(o.length).replace(/^\\+/,""):r,l=Ht(n,[J.join(s,a.replace(/\\/g,"/"))+".php"]);if(l)return{kind:"resolved",target:l}}return{kind:"external"}}function u0(e,t){let n=t.csharpNamespaces.get(e);if(n?.length)return{kind:"resolved",target:n[0]};let r=(t.csharpPrefix??=f0(t.csharpNamespaces)).get(e);return r?{kind:"resolved",target:r}:{kind:"external"}}function f0(e){let t=new Map;for(let[n,r]of e){let o=r[0];if(o!==void 0)for(let s=n.indexOf(".");;s=n.indexOf(".",s+1)){let a=s===-1?n:n.slice(0,s),l=t.get(a);if((l===void 0||T(o,l)<0)&&t.set(a,o),s===-1)break}}return t}function m0(e,t,n){let r,o=/^package:([^/]+)\/(.+)$/.exec(t);if(o){let s=n.dartPackages?.get(o[1]);if(s===void 0)return{kind:"external"};r=Ae(J.join(s,"lib",o[2]))}else{if(/^[a-z][\w+.-]*:/i.test(t)||t.startsWith("/"))return{kind:"external"};r=Ae(J.join(e.includes("/")?J.dirname(e):"",t))}return r.startsWith("..")?{kind:"dangling",reason:"escapes-repo-root"}:n.fileSet.has(r)?{kind:"resolved",target:r}:/\.[\w-]+\.dart$/.test(r.slice(r.lastIndexOf("/")+1))?{kind:"external"}:{kind:"dangling",reason:"missing-module"}}function p0(e,t,n){let r=t.replace(/\./g,"/"),o=e.includes("/")?J.dirname(e):"",s=n.luaRoots??[""],a=s.filter(c=>!c||o===c||o.startsWith(c+"/")).reverse(),l=[...a,o,...s.filter(c=>!a.includes(c))];for(let c of l){let d=Ht(n,[J.join(c,r+".lua"),J.join(c,r,"init.lua")]);if(d)return{kind:"resolved",target:d}}return{kind:"external"}}function g0(e,t,n){let r=e.includes("/")?J.dirname(e):"",o=Ht(n,[J.join(r,t),t]);return o?{kind:"resolved",target:o}:{kind:"external"}}function Dh(e){return Ah.has(e)||Ih.has(e)||$h.has(e)||Th.has(e)||cu.has(e)||Nh.has(e)||h0.has(e)}function ct(e,t,n,r){if(Ah.has(t)||Ih.has(t)){let o=n.lastIndexOf(".");if(o!==-1&&Wv.has(n.slice(o).toLowerCase().replace(/[?#].*$/,"")))return{kind:"external"};let a=(e.includes("/")?J.dirname(e):"")+"\0"+n,l=r.jsMemo??=new Map,c=l.get(a);return c||l.set(a,c=Qv(e,n,r)),{...c}}if($h.has(t)){let s=(e.includes("/")?J.dirname(e):"")+"\0"+n,a=r.pyMemo??=new Map,l=a.get(s);return l||a.set(s,l=e0(e,n,r)),{...l}}if(t===".go")return t0(e,n,r);if(t===".rs")return n0(e,n,r);if(t===".java"||cu.has(t))return i0(e,n,r);if(Th.has(t))return l0(e,n,r);if(t===".rb"||t===".rake")return c0(e,n,r);if(t===".php")return d0(e,n,r);if(t===".cs")return u0(n,r);if(t===".dart")return m0(e,n,r);if(t===".lua")return p0(e,n,r);if(Nh.has(t))return g0(e,n,r);if(t===".ex"||t===".exs"){let o=r.elixirModules?.get(n);return o?{kind:"resolved",target:o}:{kind:"external"}}return{kind:"external"}}var Wv,Bv,Uv,Ah,Ih,$h,Th,Fh,Oh,cu,Nh,zv,Ja,lu,Vv,o0,a0,h0,$n=H(()=>{"use strict";$();ke();me();me();Ze();ce();Wv=new Set([".svg",".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico",".icns",".pdf",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".wav",".flac",".ogg",".map"]),Bv=["",".ts",".tsx",".d.ts",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".svelte",".astro",".html",".htm"],Uv=["index.ts","index.tsx","index.js","index.jsx","index.mjs","index.cjs"],Ah=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"]),Ih=new Set([".vue",".svelte",".astro",".html",".htm"]),$h=new Set([".py",".pyi"]),Th=new Set([".c",".h",".cc",".cpp",".cxx",".hpp",".hh"]),Fh=new Set([".kt",".kts"]),Oh=new Set([".scala",".sc"]),cu=new Set([...Fh,...Oh]),Nh=new Set([".sh",".bash",".zsh",".ksh",".fish"]),zv=new Set(["dist","build","lib","out","output","esm","cjs","umd"]);Ja="${configDir}";lu=["source","ts","import","module","require","node","default"],Vv=8;o0=new Set(["assert.h","complex.h","ctype.h","errno.h","fenv.h","float.h","inttypes.h","iso646.h","limits.h","locale.h","math.h","setjmp.h","signal.h","stdalign.h","stdarg.h","stdatomic.h","stdbool.h","stddef.h","stdint.h","stdio.h","stdlib.h","stdnoreturn.h","string.h","tgmath.h","threads.h","time.h","uchar.h","wchar.h","wctype.h","unistd.h","fcntl.h","pthread.h","dirent.h","dlfcn.h","poll.h","sched.h","semaphore.h","strings.h","termios.h","glob.h","regex.h","syslog.h","netdb.h","pwd.h","grp.h","libgen.h","fnmatch.h","spawn.h","utime.h","windows.h"]),a0=/^(?:sys|arpa|netinet|net)\//;h0=new Set([".go",".rs",".java",".rb",".rake",".php",".cs",".dart",".lua",".ex",".exs"])});function Za(e){return w0.test(e.split("/").pop())}function x0(e){return e.includes("/")?J.dirname(e):Xa}function Cs(e){return e===Xa?0:_0.test(e)||b0.test(e)?2:y0.test(e)?0:null}function S0(e,t){let n=Cs(e);return n!==null?n:t.every(r=>r.kind==="doc"||r.kind==="config"||Za(r.rel))?2:1}function k0(e,t){let n=t.find(a=>/^(readme|index)\.(md|mdx)$/i.test(a.rel.split("/").pop()));if(n?.summary)return n.summary;if(n?.title)return n.title;let r=t.filter(a=>a.summary).sort((a,l)=>(l.summary?.length??0)-(a.summary?.length??0));if(r[0]?.summary)return r[0].summary;let o=[...new Set(t.map(a=>a.lang))].filter(a=>a!=="other"),s=e===Xa?"the repository root":`\`${e}/\``;return`${t.length} file(s) in ${s}${o.length?` (${o.slice(0,3).join(", ")})`:""}.`}function uu(e){let t=new Map;for(let c of e.files){let d=x0(c.rel),u=t.get(d);u||t.set(d,u=[]),u.push(c)}let n=[...t.keys()].sort(T),r=new Map,o=new Map;for(let c of n){let d=c===Xa?"root":si(c);r.set(c,d),o.set(d,(o.get(d)??0)+1)}let s=c=>{let d=r.get(c);return d&&o.get(d)===1?d:`${d||"module"}-${Re(c).slice(0,8)}`},a=[],l=new Map;for(let c of n){let d=t.get(c).slice().sort((m,p)=>T(m.rel,p.rel)),u=s(c),f={slug:u,path:c,title:c,tier:S0(c,d),members:d.map(m=>m.rel),summary:k0(c,d)};a.push(f);for(let m of d)l.set(m.rel,u)}return a.sort((c,d)=>T(c.slug,d.slug)),{modules:a,moduleOf:l}}var Xa,y0,_0,b0,w0,Ms=H(()=>{"use strict";$();me();et();St();ce();Xa="(root)",y0=/(^|\/)(types?|util|utils|lib|libs|common|core|config|configs|constants|shared|helpers|internal)$/i,_0=/(^|\/)(tests?|__tests?__|__mocks?__|__snapshots?__|spec|specs|e2e|examples?|example|benchmark|benchmarks|fixtures?|docs?|documentation|\.github)(\/|$)/i,b0=/(^|\/)(scripts?|bin|\.storybook)$/i,w0=/\.(test|spec|e2e|stories|story)\.[cm]?[jt]sx?$/i});function fu(e){let t=Pr(e),n=new Map;if(!t.size)return n;let r=(s,a)=>{let l=n.get(s);l||n.set(s,l=new Set),l.add(a)},o=Qa(e);for(let s of e.files)if(s.kind==="code"&&s.idents)for(let a of s.idents){let l=t.get(a);l&&l!==s.rel&&r(a,s.rel)}else if(s.kind==="doc"){let a=o.get(s.rel);if(!a||!a.retained)continue;for(let l of a.counts.keys()){let c=t.get(l);c&&c!==s.rel&&r(l,s.rel)}}return n}function mu(e,t=new Map,n=5){let r=new Map;for(let a of e.files)for(let l of a.symbols){let c=r.get(l.name);c||r.set(l.name,c=[]),c.push({file:l.file,line:l.line,...l.endLine!==void 0?{endLine:l.endLine}:{},kind:l.kind,exported:l.exported,lang:l.lang,...l.parent?{parent:l.parent}:{}})}let o=Object.create(null);for(let a of[...r.keys()].sort(T))o[a]=r.get(a).slice().sort((l,c)=>T(l.file,c.file)||l.line-c.line||T(l.kind,c.kind));let s=Object.create(null);for(let a of[...t.keys()].sort(T)){let l=[...t.get(a)].sort(T);l.length&&(s[a]=l)}return{schemaVersion:n,defs:o,refs:s}}function Ya(e){return JSON.stringify(e,null,2)+` +`}var Hi=H(()=>{"use strict";$();bt();ce();gt()});function Tn(e){let t=[{name:e}],n=e.lastIndexOf("#");n>0&&n0&&r0&&n{"use strict";$()});function Wh(e){let t=new Map;for(let n of e.files)for(let r of n.symbols)v0.has(r.kind)&&Vi(t,r.name,{name:r.name,file:r.file,kind:r.kind,lang:r.lang,line:r.line});return t}function ir(e,t,n){return Bh(e,t,n).map(r=>r.rel)}function Bh(e,t,n){let r=Wh(e),o=hu(e,t,n),s=[];for(let a of e.files){if(!a.relations?.length)continue;let l=Fe(a.lang),c=o.aliases(a);for(let d of a.relations){let u=c.names.get(d.to),f=u?.name??d.to,m=r.get(f)?.get(l);if(!m)continue;let p;if(u){if(!u.files)continue;p=Dr(a.rel,o.within(m,u.files,f))}else{let g=o.reached(m,a,f),h=m.byFile.get(a.rel);h&&g.push(h),p=Dr(a.rel,g.length?g:m.list)}p&&s.push({written:d.to,rel:{kind:E0.has(p.kind)?"implements":d.kind,from:d.from,fromFile:a.rel,fromLine:d.line,to:p.name,toFile:p.file,toKind:p.kind}})}}return s.sort((a,l)=>T(a.rel.fromFile,l.rel.fromFile)||T(a.rel.from,l.rel.from)||T(a.rel.kind,l.rel.kind)||T(a.rel.to,l.rel.to))}function pu(e,t,n){let r=new Map;for(let o of ir(e,t,n)){if(o.toFile===o.fromFile)continue;let s=`${o.fromFile}${Ue}${o.toFile}${Ue}${o.kind}`,a=r.get(s);a?a.weight=Math.min(a.weight+1,5):r.set(s,{from:o.fromFile,to:o.toFile,kind:o.kind,weight:1})}return[...r.values()].sort((o,s)=>T(o.from,s.from)||T(o.to,s.to)||T(o.kind,s.kind))}function gu(e,t){let n=Wh(e),r=Bh(e,t),o=r.map(m=>m.rel),s=new Map,a=(m,p)=>`${m}${Ue}${p}`;for(let m of n.values())for(let p of[...m.values()].flatMap(g=>g.list))s.set(a(p.name,p.file),{name:p.name,file:p.file,line:p.line,kind:p.kind,extends:[],implements:[],extendedBy:[],implementedBy:[],unresolved:[]});let l=m=>({name:m.name,file:m.file,line:m.line,kind:m.kind});for(let m of o){let p=s.get(a(m.from,m.fromFile)),g=s.get(a(m.to,m.toFile));g&&(p?((m.kind==="extends"?p.extends:p.implements).push(l(g)),(m.kind==="extends"?g.extendedBy:g.implementedBy).push(l(p))):(m.kind==="extends"?g.extendedBy:g.implementedBy).push({name:m.from,file:m.fromFile,line:m.fromLine,kind:"unknown"}))}for(let m of Gi(e)){let p=s.get(a(m.from,m.fromFile)),g=s.get(a(m.to,m.toFile));if(!p||!g)continue;let h=_=>m.structural?{..._,structural:!0}:_;p.implements.push(h(l(g))),g.implementedBy.push(h(l(p)))}let c=new Set(r.map(({rel:m,written:p})=>`${m.fromFile}${Ue}${m.from}${Ue}${m.kind}${Ue}${p}`));for(let m of e.files)for(let p of m.relations??[]){if(c.has(`${m.rel}${Ue}${p.from}${Ue}${p.kind}${Ue}${p.to}`))continue;let g=p.kind==="extends"?"implements":"extends";c.has(`${m.rel}${Ue}${p.from}${Ue}${g}${Ue}${p.to}`)||s.get(a(p.from,m.rel))?.unresolved.push({kind:p.kind,to:p.to})}let d=(m,p)=>T(m.name,p.name)||T(m.file,p.file),u=new Map,f=[...s.keys()].sort(T);for(let m of f){let p=s.get(m);p.extends.sort(d),p.implements.sort(d),p.extendedBy.sort(d),p.implementedBy.sort(d),p.unresolved.sort((g,h)=>T(g.kind,h.kind)||T(g.to,h.to)),u.has(p.name)?u.set(`${p.name}@${p.file}`,p):u.set(p.name,p)}return u}function C0(e,t){let n=e.indexOf(`${t}(`);if(n===-1)return;let r=0,o=0,s=!0;for(let a=n+t.length;a=1&&!/\s/.test(l)&&(s=!1)}}function Gi(e){let t=h=>h.includes("/")?h.slice(0,h.lastIndexOf("/")):"",n=new Map,r=new Map,o=new Map,s=new Map,a=[],l=e.files.filter(h=>h.lang==="go"&&!h.rel.endsWith("_test.go"));for(let h of l){let _=t(h.rel);for(let y of h.symbols)if(y.kind==="type"&&!y.parent){let b=`${_}${Ue}${y.name}`;n.has(b)||n.set(b,y);let S=r.get(y.name)??[];S.push(y),r.set(y.name,S)}else if(y.kind==="method"&&y.parent){let b=`${_}${Ue}${y.parent}`,S=o.get(b);S||o.set(b,S=new Map),S.set(y.name,y.signature?C0(y.signature,y.name):void 0);let k=s.get(y.name);k||s.set(y.name,k=new Set),k.add(b)}else if(y.name==="_"&&y.signature){let b=R0.exec(y.signature);b&&a.push({sym:y,iface:b[1],type:b[2]??b[3]??b[4]})}}let c=[];for(let h of l)for(let _ of h.relations??[])_.kind==="extends"&&/^\w+$/.test(_.to)&&c.push([`${t(h.rel)}${Ue}${_.from}`,`${t(h.rel)}${Ue}${_.to}`]);c.sort((h,_)=>T(h[0],_[0])||T(h[1],_[1]));for(let h=0;h<3;h++)for(let[_,y]of c){let b=o.get(y);if(!b)continue;let S=o.get(_);S||o.set(_,S=new Map);for(let[k,R]of b)S.has(k)||(S.set(k,R),s.get(k).add(_))}let d=h=>!!h.signature?.startsWith(h.name)&&/^(\[[^\]]*\])?\s+interface\b/.test(h.signature.slice(h.name.length)),u=new Map,f=(h,_,y)=>{let b=u.get(h);if(b!==void 0)return b??void 0;if(y.has(h))return;y.add(h);let S=new Map(o.get(h)??[]),k=!0,R=re(j(e.root,_.file)).split(` +`).slice(_.line,(_.endLine??_.line)-1);for(let P of R){let v=P.replace(/\/\/.*$/,"").trim();if(/[~|]/.test(v)&&!v.includes("(")&&(k=!1),!/^[\w.]+$/.test(v))continue;let M=v.lastIndexOf(".")===-1?n.get(`${t(_.file)}${Ue}${v}`):void 0,x=M&&d(M)?f(`${t(M.file)}${Ue}${M.name}`,M,y):void 0;if(!x)k=!1;else for(let[w,E]of x)S.set(w,E)}let I=k&&S.size?S:void 0;return u.set(h,I??null),I},m=new Map,p=(h,_,y)=>{let b=`${h.file}${Ue}${h.name}${Ue}${_.file}${Ue}${_.name}`,S=m.get(b);if(S){y||delete S.structural;return}m.set(b,{from:h.name,fromFile:h.file,to:_.name,toFile:_.file,...y?{structural:!0}:{}})};for(let[h,_]of[...n].sort((y,b)=>T(y[0],b[0]))){if(!d(_))continue;let y=f(h,_,new Set);if(!y)continue;let b=[...y.keys()].sort(T),S=b.some(R=>!/^[A-Z]/.test(R)),k=b.reduce((R,I)=>(s.get(I)?.size??0)<(s.get(R)?.size??0)?I:R);for(let R of[...s.get(k)??[]].sort(T)){if(R===h)continue;let I=n.get(R);if(!I||d(I)||S&&t(I.file)!==t(_.file))continue;let P=o.get(R);b.every(C=>{if(!P.has(C))return!1;let M=P.get(C),x=y.get(C);return M===void 0||x===void 0||M===x})&&p(I,_,!0)}}let g=(h,_)=>{let y=h.slice(h.lastIndexOf(".")+1);if(!h.includes(".")){let S=n.get(`${_}${Ue}${y}`);if(S)return S}let b=(r.get(y)??[]).slice().sort((S,k)=>T(S.file,k.file));return b.length===1?b[0]:void 0};for(let h of a){let _=t(h.sym.file),y=g(h.iface,_),b=g(h.type,_);y&&b&&d(y)&&!d(b)&&p(b,y,!1)}return[...m.values()].sort((h,_)=>T(h.fromFile,_.fromFile)||T(h.from,_.from)||T(h.toFile,_.toFile)||T(h.to,_.to))}function qi(e,t,n){let r=or(e,t,n);if(!r)return[];let o=new Set([`${r.name}${Ue}${r.file}`]),s=[],a=[r];for(;a.length;){let l=[];for(let c of a)for(let d of[...c.implementedBy,...c.extendedBy]){let u=`${d.name}${Ue}${d.file}`;if(o.has(u))continue;o.add(u),s.push(d);let f=Uh(e,d.name,d.file);f&&l.push(f)}a=l}return s.sort((l,c)=>T(l.name,c.name)||T(l.file,c.file))}function or(e,t,n){let r=e.get(t);if(r)return r;for(let o of Tn(t).slice(1))if(o.parent===void 0){for(let s of e.values())if(As(o,s))return s}for(let o of n??[]){let s=Uh(e,o.name,o.file);if(s)return s}}function Uh(e,t,n){let r=e.get(t);return r?.file===n?r:e.get(`${t}@${n}`)}var Ue,E0,v0,R0,Fn=H(()=>{"use strict";$();me();ar();Is();ce();Lr();Ze();Ue="\0",E0=new Set(["interface","trait","protocol"]),v0=new Set(["class","interface","trait","struct","type","enum","record","object","protocol","module","mod","union","annotation"]);R0=/^_\s+([\w.]+)\s*=\s*(?:\(\s*\*\s*([\w.]+)\s*\)\s*\(\s*nil\s*\)|&?([\w.]+)\s*\{|new\(\s*([\w.]+)\s*\))/});function jr(e,t,n,r,o){let s=[...new Set(e)].sort(T),a=s.filter(b=>t.has(b));if(a.length)return{hops:0,paths:a.slice(0,o).map(b=>[{node:b}]),pathCount:a.length};let l=new Map(s.map(b=>[b,0])),c=new Map,d=[s],u;for(let b=1;b<=r&&!u;b++){let S=[];for(let R of d[b-1])for(let[I,P]of n(R)){let v=l.get(I);if(v===void 0)l.set(I,b),c.set(I,new Map),S.push(I);else if(v!==b)continue;let C=c.get(I);C.has(R)||C.set(R,P)}if(!S.length)break;S.sort(T),d.push(S);let k=S.filter(R=>t.has(R));k.length&&(u=k)}if(!u)return{hops:null,paths:[],pathCount:0};let f=d.length-1,m=new Set(u),p=[...u];for(;p.length;)for(let b of c.get(p.pop())?.keys()??[])m.has(b)||(m.add(b),p.push(b));let g=new Map,h=new Map;for(let b of s)m.has(b)&&g.set(b,1);for(let b=1;b<=f;b++)for(let S of d[b]){if(!m.has(S))continue;let k=0;for(let[R,I]of c.get(S)){k+=g.get(R)??0;let P=h.get(R);P?P.push([S,I]):h.set(R,[[S,I]])}g.set(S,k)}let _=[],y=b=>{if(_.length>=o)return;let S=b[b.length-1].node;if(b.length===f+1){_.push(b.slice());return}for(let[k,R]of h.get(S)??[])if(b.push({node:k,via:R}),y(b),b.pop(),_.length>=o)return};for(let b of s)m.has(b)&&y([{node:b}]);return{hops:f,paths:_,pathCount:u.reduce((b,S)=>b+(g.get(S)??0),0)}}var yu=H(()=>{"use strict";$();ce()});function ht(e){return e.parent?`${e.file}#${e.parent}/${e.name}`:`${e.file}#${e.name}`}function A0(e){return{id:ht(e),name:e.name,kind:e.kind,file:e.file,line:e.line,...e.endLine!==void 0?{endLine:e.endLine}:{},exported:e.exported,...e.doc?{doc:e.doc}:{},...e.signature?{signature:e.signature}:{}}}function xu(e,t){let n=new Map,r=new Map;for(let p of e.files){let g=[];for(let h of p.symbols)M0.has(h.kind)||(g.push(h),n.set(ht(h),A0(h)));r.set(p.rel,g)}let o=new Map,s=(p,g,h)=>{if(p===g)return;let _=`${p}${Wr}${g}${Wr}${h}`,y=o.get(_);y?y.weight+=1:o.set(_,{from:p,to:g,kind:h,weight:1})},a=cr(e,t);for(let p of e.files){let g=a.forFile(p);if(!g)continue;let h=r.get(p.rel)??[];for(let _ of p.calls){let y=On(h,_.line);if(!y)continue;let b=g(_,y);b&&s(ht(y),ht(b.def),"calls")}}let l=new Map;for(let p of n.values()){let g=`${p.name} ${p.file}`;(!l.has(g)||p.id===`${p.file}#${p.name}`)&&l.set(g,p.id)}let c=ir(e,t);for(let p of Gi(e))c.push({...p,kind:"implements"});for(let p of c){let g=l.get(`${p.from} ${p.fromFile}`),h=l.get(`${p.to} ${p.toFile}`);g&&h&&s(g,h,p.kind)}for(let{sub:p,sup:g}of Su(e,c))s(ht(p),ht(g),"overrides");let d=[...o.values()].sort((p,g)=>T(p.from,g.from)||T(p.kind,g.kind)||T(p.to,g.to)),u=new Map,f=new Map;for(let p of d)(u.get(p.from)??u.set(p.from,[]).get(p.from)).push(p),(f.get(p.to)??f.set(p.to,[]).get(p.to)).push(p);let m=new Map;for(let p of[...n.keys()].sort(T)){let g=n.get(p);(m.get(g.name)??m.set(g.name,[]).get(g.name)).push(p)}return{nodes:n,edges:d,out:u,in:f,byName:m}}function Su(e,t){let n=new Map(e.files.map(d=>[d.rel,d.lang])),r=d=>d.includes("/")?d.slice(0,d.lastIndexOf("/")):"",o=(d,u)=>Fe(n.get(u)??"")==="go"?`go${Wr}${r(u)}${Wr}${d}`:`${u}${Wr}${d}`,s=new Map;for(let d of e.files)for(let u of d.symbols){if(!u.parent||!I0.has(u.kind))continue;let f=o(u.parent,u.file),m=s.get(f);m||s.set(f,m=new Map),m.has(u.name)||m.set(u.name,u)}let a=new Map;for(let d of t){let u=o(d.from,d.fromFile),f=a.get(u)??[],m=o(d.to,d.toFile);m!==u&&!f.includes(m)&&f.push(m),a.set(u,f)}for(let d of a.values())d.sort(T);let l=(d,u,f,m)=>{for(let p of a.get(d)??[]){if(f.has(p))continue;f.add(p);let g=s.get(p)?.get(u);g?m.push(g):l(p,u,f,m)}},c=[];for(let d of[...a.keys()].sort(T)){let u=s.get(d);if(u)for(let f of[...u.keys()].sort(T)){let m=[];l(d,f,new Set([d]),m);for(let p of m)c.push({sub:u.get(f),sup:p})}}return c.sort((d,u)=>T(ht(d.sub),ht(u.sub))||T(ht(d.sup),ht(u.sup)))}function wu(e,t){if(e.nodes.has(t))return[t];for(let n of Tn(t)){let r=n.parent?.slice(n.parent.lastIndexOf("/")+1),o=(e.byName.get(n.name)??[]).filter(s=>{let a=e.nodes.get(s);return n.file!==void 0&&a.file!==n.file?!1:r===void 0||s===`${a.file}#${r}/${a.name}`});if(o.length)return o}return[]}function Ji(e,t,n={}){let r=n.depth??2,o=Math.max(1,Math.min(r,_u)),s=n.direction??"both",a=wu(e,t),l=a.map(g=>e.nodes.get(g));if(!l.length)return{root:[],nodes:[],edges:[]};let c=new Map;for(let g of a)c.set(g,0);let d=new Map,u=[...a],f=!1;for(let g=1;g<=o&&u.length;g++){let h=[];for(let _ of u){let y=(k,R)=>{for(let I of k??[]){d.set(`${I.from}${Wr}${I.to}${Wr}${I.kind}`,I);let P=R(I);if(!c.has(P)){if(c.size>=$0){f=!0;continue}c.set(P,g),h.push(P)}}},b=e.out.get(_),S=e.in.get(_);s==="both"?(y(b,k=>k.to),y(S,k=>k.from)):s==="out"?(y(b?.filter(k=>k.kind!=="overrides"),k=>k.to),y(S?.filter(k=>k.kind==="overrides"),k=>k.from)):(y(S?.filter(k=>k.kind!=="overrides"),k=>k.from),y(b?.filter(k=>k.kind==="overrides"),k=>k.to))}u=h}let m=[...c.entries()].map(([g,h])=>({...e.nodes.get(g),depth:h})).sort((g,h)=>g.depth-h.depth||T(g.file,h.file)||T(g.name,h.name)),p=[...d.values()].filter(g=>c.has(g.from)&&c.has(g.to)).sort((g,h)=>T(g.from,h.from)||T(g.kind,h.kind)||T(g.to,h.to));return{root:l,nodes:m,edges:p,...f?{truncated:!0}:{},...r>_u?{depthClamped:_u}:{}}}function tl(e,t,n,r={}){let o=r.depth??T0,s=Math.max(1,Math.min(o,bu)),a=Math.max(1,r.maxPaths??5),l=wu(e,t),c=wu(e,n),d=l.map(_=>e.nodes.get(_)),u=c.map(_=>e.nodes.get(_)),f=o>bu?{depthClamped:bu}:{};if(!d.length||!u.length)return{from:d,to:u,hops:null,paths:[],pathCount:0,...f};let m=function*(_){for(let y of e.out.get(_)??[])y.kind==="calls"&&(yield[y.to,"calls"]);for(let y of e.in.get(_)??[])y.kind==="overrides"&&(yield[y.from,"dispatch"])},p=jr(l,new Set(c),m,s,a),g=_=>{let y=e.nodes.get(_.node);return{id:y.id,name:y.name,kind:y.kind,file:y.file,line:y.line,..._.via?{via:_.via}:{}}},h={from:d,to:u,hops:p.hops,paths:p.paths.map(_=>_.map(g)),pathCount:p.pathCount,...p.paths.length{"use strict";$();Is();lr();ar();Fn();ce();yu();Lr();Wr="\0",M0=new Set(["reexport","reexport-all","default"]);I0=new Set(["method","function","def","getter","setter","operator"]);_u=5,$0=400;T0=8,bu=16});function F0(e){let t=new Array(e.length*nl);for(let n=0;nT(u.to,f.to));for(let d of a.values())d.sort((u,f)=>T(u.from,f.from));let c={out:s,inn:a,degree:l,threshold:qh([...l.values()])};return r.views.set(n,c),c}function qh(e){let t=e.slice().sort((o,s)=>o-s),n=t.length,r=n===0?0:t[Math.min(n-1,Math.floor(.99*n))];return Math.max(50,r)}function Ki(e,t,n=1/0,r={}){return Ru(vu(e,r),t,n)}function vu(e,t={}){let n=new Map,r=new Map,o=(s,a,l)=>{let c=s.get(a);c?c.push(l):s.set(a,[l])};for(let s of e)s.dangling||!$s.has(s.kind)||t.skipInferred&&s.confidence==="inferred"||(o(n,s.to,s),t.goPackages&&s.kind==="import"&&s.to.endsWith(".go")&&o(r,rl(s.to),s));return{dependents:n,packageImports:r,goPackages:t.goPackages===!0}}function Ru(e,t,n=1/0){let{dependents:r,packageImports:o,goPackages:s}=e,a=new Map,l=new Set(t),c=[...t];for(let d=1;d<=n&&c.length;d++){let u=[];for(let f of c){let m=r.get(f)??[];s&&Eu(f)&&(m=m.concat(o.get(rl(f))??[]));for(let p of m.slice().sort((g,h)=>T(g.from,h.from)))l.has(p.from)||(l.add(p.from),a.set(p.from,d),u.push(p.from))}c=u}return a}function Xi(e,t,n=1/0,r={}){let o=new Map(e.files.map(p=>[p.rel,p.module])),s=e.modules.find(p=>p.slug===t),a=s?void 0:e.files.find(p=>p.rel===t);if(!s&&!a)return;let l=s?s.members:[a.rel],c=r.includeInferred===!0,d=Ki(e.fileEdges,l,n,{skipInferred:!c,goPackages:!0}),u=[...d.entries()].map(([p,g])=>({rel:p,module:o.get(p)??"root",depth:g})).sort((p,g)=>p.depth-g.depth||T(p.rel,g.rel)),f=[...new Set(u.map(p=>p.module).filter(p=>p!==t))].sort(T),m={target:t,scope:s?"module":"file",seeds:l,files:u,modules:f};if(!c){let p=Ki(e.fileEdges,l,n,{goPackages:!0}).size-d.size;p>0&&(m.inferredDependents=p)}return m}function Hh(e){return e.kind==="call"?e.confidence==="inferred"?4:1:e.kind==="import"||e.kind==="extends"||e.kind==="implements"?0:e.kind==="use"?2:3}function Gh(e,t,n,r){let{out:o,inn:s,degree:a,threshold:l}=N0(e,r),c=new Set([t]),d=[],u=[t];for(let f=1;f<=n;f++){let m=new Map,p=(g,h,_)=>{let y=m.get(g);if(!y){if(c.has(g))return;c.add(g),m.set(g,y=[])}y.some(b=>b.direction===h&&b.kind===_.kind)||y.push({node:g,direction:h,kind:_.kind,weight:_.weight,depth:f,confidence:_.confidence})};for(let g of u)if(!(g!==t&&(a.get(g)??0)>=l)){for(let h of o.get(g)??[])p(h.to,"out",h);for(let h of s.get(g)??[])p(h.from,"in",h)}for(let g of m.values())g.sort((h,_)=>Hh(h)-Hh(_)||+(h.direction==="in")-+(_.direction==="in")||T(h.kind,_.kind)),d.push(...g);u=[...m.keys()]}return d}function Zi(e,t,n=1,r){let o=e.modules.find(a=>a.slug===t);if(o)return{target:t,scope:"module",links:Gh(e.moduleEdges,t,n,r),members:o.members};if(e.files.find(a=>a.rel===t))return{target:t,scope:"file",links:Gh(e.fileEdges,t,n,r)}}function sl(e,t,n,r={}){let o=new Set(e.files.map(g=>g.rel));if(!o.has(t)||!o.has(n))return;let s=r.depth??P0,a=Math.max(1,Math.min(s,ku)),l=Math.max(1,r.maxPaths??5),c=new Map;for(let g of[...o].sort(T)){if(!Eu(g))continue;let h=rl(g),_=c.get(h);_?_.push(g):c.set(h,[g])}let d=g=>{let h=new Map;for(let y of e.fileEdges){if(y.dangling||!$s.has(y.kind)||!g&&y.confidence==="inferred")continue;let b=y.kind==="import"&&Eu(y.to)&&c.get(rl(y.to))||[y.to],S=h.get(y.from)??h.set(y.from,[]).get(y.from);for(let k of b)S.push([k,y.kind])}let _=y=>y==="import"?0:y==="extends"||y==="implements"?1:y==="use"?2:3;for(let y of h.values())y.sort((b,S)=>T(b[0],S[0])||_(b[1])-_(S[1]));return y=>h.get(y)??[]},u=r.includeInferred===!0,f=d(u),m=jr([t],new Set([n]),f,a,l),p={from:t,to:n,hops:m.hops,paths:m.paths.map(g=>g.map(h=>h.via?{file:h.node,via:h.via}:{file:h.node})),pathCount:m.pathCount,...m.paths.lengthku?{depthClamped:ku}:{}};if(m.hops===null){let g=jr([n],new Set([t]),f,a,0);if(g.hops!==null&&(p.reverseHops=g.hops),!u){let h=jr([t],new Set([n]),d(!0),a,0);h.hops!==null&&(p.inferredHops=h.hops)}}return p}var $s,nl,zh,rl,Eu,Ts,P0,ku,Ur=H(()=>{"use strict";$();ce();yu();$s=new Set(["import","use","call","extends","implements"]),nl=6;zh=new WeakMap;rl=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",Eu=e=>e.endsWith(".go")&&!e.endsWith("_test.go");Ts=["import","call","use","extends","implements","doc-link","mention","contains"];P0=8,ku=16});function Ft(e){return D0.test(e)||Cu(e)}function Cu(e){if(Za(e))return!0;let t=e.split("/").pop();return L0.some(n=>n.test(t))}function W0(e){let t=e.lastIndexOf("/"),n=t===-1?"":e.slice(0,t+1),r=e.slice(t+1),o;if(o=/^(.+)\.(?:test|spec)(\.[cm]?[jt]sx?)$/.exec(r)){let s=[n];return/(^|\/)__tests__\/$/.test(n)&&s.push(n.slice(0,-10)),s.flatMap(a=>[o[2],...j0.filter(l=>l!==o[2])].map(l=>a+o[1]+l))}if(o=/^test_(.+)\.py$/.exec(r)??/^(.+)_test\.py$/.exec(r))return[n+o[1]+".py"];if(o=/^(.+)_test\.go$/.exec(r))return[n+o[1]+".go"];if(o=/^(.+)_(?:spec|test)\.rb$/.exec(r))return[n+o[1]+".rb"];if(o=/^(.+?)(?:Tests?|IT)\.(java|kt)$/.exec(r)){let s=n+o[1]+"."+o[2],a=s.replace(/(^|\/)src\/test\//,"$1src/main/");return a===s?[s]:[s,a]}return[]}function Yi(e){let t=new Set,n=new Map,r=new Set,o=new Map;for(let d of e.files)if(n.set(d.rel,d.module),d.fileKind==="code"){if(Ft(d.rel)){t.add(d.rel);continue}if(r.add(d.rel),d.rel.endsWith(".go")){let u=d.rel.includes("/")?d.rel.slice(0,d.rel.lastIndexOf("/")):"",f=o.get(u);f?f.push(d.rel):o.set(u,[d.rel])}}let s=new Map,a=new Map,l=(d,u)=>{let f=s.get(u);f||s.set(u,f=new Set),f.add(d);let m=n.get(u);if(m!==void 0){let p=a.get(m);p||a.set(m,p=new Set),p.add(d)}};for(let d of e.fileEdges)d.dangling||$s.has(d.kind)&&(!t.has(d.from)||t.has(d.to)||l(d.from,d.to));for(let d of t){for(let u of W0(d))r.has(u)&&l(d,u);if(d.endsWith("_test.go")){let u=d.includes("/")?d.slice(0,d.lastIndexOf("/")):"";for(let f of o.get(u)??[])l(d,f)}}let c=d=>{let u=new Map;for(let f of[...d.keys()].sort(T))u.set(f,[...d.get(f)].sort(T));return u};return{testFiles:t,testedByFile:c(s),testedByModule:c(a)}}function B0(e,t){let n=e.modules.find(r=>r.slug===t);return n?.testedBy?n.testedBy:Yi(e).testedByModule.get(t)??[]}function U0(e){let t=Yi(e),n=new Map;for(let r of e.files)r.fileKind!=="code"||t.testFiles.has(r.rel)||n.set(r.module,(n.get(r.module)??0)+1);return e.modules.filter(r=>r.tier<=1&&r.symbols>0&&(n.get(r.slug)??0)>0&&!t.testedByModule.has(r.slug))}var L0,D0,j0,dr=H(()=>{"use strict";$();Ms();ce();Ur();L0=[/^test_.*\.py$/i,/_test\.py$/i,/_test\.go$/,/(Test|Tests|IT)\.java$/,/(Test|Tests)\.kt$/,/_spec\.rb$/,/_test\.rb$/,/Test\.php$/,/(Test|Tests)\.cs$/,/_test\.exs$/],D0=/(^|\/)(tests?|__tests?__|spec|specs|e2e)(\/|$)/i;j0=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"]});function zr(e,t,n){let r=e.fields[t];for(let o of gn(n))r.tf.set(o,(r.tf.get(o)??0)+1),r.len++,e.all.add(o)}function tR(){let e={};for(let t of il)e[t]={tf:new Map,len:0};return e}function ol(e){let t=[];for(let n of e.files){let r={file:n.rel,fields:tR(),all:new Set,symbols:[],decls:[],exactNames:new Set,isTest:Ft(n.rel),isFixture:eR.test(n.rel)},o=new Set;for(let a of n.symbols){if(a.doc&&zr(r,"doc",a.doc),X0.has(a.kind)){zr(r,"body",a.name);continue}zr(r,"name",a.name),r.exactNames.add(Jn(a.name).toLowerCase()),o.has(a.name)||(o.add(a.name),r.symbols.push(a.name),r.decls.push({name:a.name,kind:a.kind,line:a.line}))}for(let a of n.rel.split("/"))zr(r,"path",a);for(let a of n.headings)zr(r,"heading",a);n.summary&&zr(r,"summary",n.summary);let s=r.fields.body;for(let a of n.terms??[]){if(!oR.test(a)){zr(r,"body",a);continue}s.tf.set(a,(s.tf.get(a)??0)+1),s.len++,r.all.add(a)}t.push(r)}return sR(t),t}function sR(e){let t=new Set;for(let r of e)for(let o of r.fields.name.tf.keys())o.length>=Mu&&/^[a-z]+$/.test(o)&&t.add(o);let n=new Map;for(let r of e){if(r.isTest||r.isFixture)continue;let o=r.fields.path;for(let s of[...o.tf.keys()]){if(s.lengthrR||!/^[a-z]+$/.test(s))continue;let a=n.get(s);if(n.has(s)||n.set(s,a=iR(s,t)),!a)continue;let l=o.tf.get(s);for(let c of a)o.tf.set(c,(o.tf.get(c)??0)+l),o.len+=l,r.all.add(c)}}}function iR(e,t){let n=e.length,r=new Array(n+1);r[n]=[];for(let s=n-Mu;s>=0;s--)for(let a=s+Mu;a<=n;a++){let l=r[a],c=e.slice(s,a);if(!l||!t.has(c))continue;let d=[c,...l],u=r[s];(!u||d.length=2?o:void 0}function aR(e){let t=Xh.get(e);if(t)return t;t={};for(let n of il){let r=0;for(let o of e)r+=o.fields[n].len;t[n]=r/e.length||1}return Xh.set(e,t),t}function Yh(e){let t=`^^${e}$$`,n=new Set;for(let r=0;r+3<=t.length;r++)n.add(t.slice(r,r+3));return n}function Qh(e){let t=new Set,n=new Map;for(let r of e)for(let o of r.all){if(t.has(o))continue;t.add(o);let s=ea(o);if(s===o)continue;let a=n.get(s);a||n.set(s,a=[]),a.push(o)}for(let r of n.values())r.sort(T);return n}function ey(e){let t=[],n=new Set;for(let a of e)for(let l of a.all)n.has(l)||(n.add(l),t.push(l));let r=new Uint32Array(t.length),o=new Map;for(let a=0;a=G0&&s.push({term:e.terms[a],dice:l})}return s}function cR(e,t,n={}){return ty(e,t,n).results}function Gt(e,t,n={}){return ty(e,t,n)}function Zh(e,t,n,r){return{results:[],explain:{query:e,terms:[],droppedStopwords:ii(e,r),unresolvedTerms:[],verdict:t,note:n,bridgedOnlyResults:0,resultCount:0}}}function dR(e,t){let n=ii(t).filter(l=>l.length>=2);if(!n.length)return;let r=new Set(n.map(l=>l.toLowerCase()));if(r.size===1&&!us(t).length)return l=>r.has(l.toLowerCase());let o=n.filter(l=>/[A-Z]/.test(l));if(!o.length)return;let s=Au(e),a=new Set(o.filter(l=>{let c=l.toLowerCase();return s.some(d=>d.exactNames.has(c)&&d.symbols.includes(l))}));return a.size?l=>a.has(l):void 0}function ty(e,t,n={}){let r=dR(e,t),o=[],s=new Set;for(let I of us(t,r))for(let P of gn(I))s.has(P)||(s.add(P),o.push(P));if(!o.length){let I=ii(t,r);return Zh(t,"none",I.length?`Nothing was searched for: every token in this query (${I.join(", ")}) is a stopword or too short to index. Search with the identifiers or domain words you are actually looking for.`:"Nothing was searched for: the query carried no indexable token.",r)}let a=o.some(I=>Y0.test(I)),l=Au(e),c=l.length;if(!c)return Zh(t,"none","This index contains no files.",r);let d=aR(l),u=new Uint8Array(c),f=I=>{let P=0;for(let v=0;vm.get(P)===0);if(I.length){let P=sy(e),v=[];for(let C of I){let M=ea(C),x=(P.get(M)??[]).filter(w=>w!==C);M!==C&&ea(M)===M&&l.some(w=>w.all.has(M))&&(x.push(M),x.sort(T)),x.length?g.set(C,x.slice(0,Jh).map(w=>({term:w,dice:q0,via:"stem"}))):v.push(C)}if(v.length){let C=ny(e);for(let M of v){let x=lR(C,M);x.sort((w,E)=>E.dice-w.dice||T(w.term,E.term)),g.set(M,x.slice(0,Jh).map(w=>({...w,via:"trigram"})))}}}}let h=new Map;for(let I of g.values())for(let{term:P}of I)!m.has(P)&&!h.has(P)&&h.set(P,f(P));let _=I=>m.get(I)??h.get(I),y=I=>Math.log(1+(c-I+.5)/(I+.5)),b=n.rank==="graph"?ry(e):void 0,S=I=>(1+Kh*Math.log1p(I*c))/(1+Kh*Math.LN2),k=[];for(let I=0;I{let L=0;for(let G of il){let X=P.fields[G],oe=X.tf.get(O);if(!oe)continue;M.add(G);let ue=J0[G];L+=V0[G]*oe/(1-ue+ue*X.len/d[G])}return L};for(let O of o){let L=N(O);if(L>0){C.push(O),x.add(O),P.exactNames.has(O)&&(E=!0),v+=y(m.get(O))*(L/(Vh+L));continue}for(let G of g.get(O)??[]){let X=N(G.term);X&&(v+=y(_(G.term))*(X/(Vh+X))*G.dice,x.add(G.term),w.add(O))}}!C.length&&!w.size||(E&&(v*=K0),a||(P.isFixture?v*=Q0:P.isTest&&(v*=Z0)),b&&!P.file.endsWith(".go")&&(v*=S(b.get(P.file)??0)),k.push({d:P,score:Number(v.toFixed(4)),matched:C,matchedFields:M,symbolTerms:x,fuzzyHit:w}))}k.sort((I,P)=>P.score-I.score||T(I.d.file,P.d.file));let R=(n.exact?k.filter(I=>I.matched.length):k).slice(0,n.limit??z0).map(uR);return{results:R,explain:fR(t,o,m,g,R,r)}}function uR({d:e,score:t,matched:n,matchedFields:r,symbolTerms:o,fuzzyHit:s}){let l=e.decls.map(d=>{let u=new Set(gn(d.name)),f=0;for(let m of o)u.has(m)&&f++;return{decl:d,hits:f}}).filter(d=>d.hits>0).sort((d,u)=>u.hits-d.hits||T(d.decl.name,u.decl.name)).slice(0,H0).map(d=>d.decl),c={file:e.file,score:t,matchedTerms:n.sort(T),topSymbols:l.map(d=>d.name)};return r.size&&(c.matchedFields=il.filter(d=>r.has(d))),l.length&&(c.symbolHits=l,c.line=Math.min(...l.map(d=>d.line))),s.size&&(c.fuzzyTerms=[...s].sort(T)),n.length||(c.bridgedOnly=!0),c}function fR(e,t,n,r,o,s){let a=t.map(y=>{let b=n.get(y)??0,S=b===0?r.get(y)??[]:[];return S.length?{term:y,df:b,bridge:{via:S[0].via,to:S.map(k=>k.term),dice:S[0].dice}}:{term:y,df:b}}),l=a.filter(y=>y.df===0&&!y.bridge).map(y=>y.term).sort(T),c=!/\s/.test(e.trim()),d=c?us(e,s).map(y=>gn(y)[0]).filter(y=>y!==void 0):[],u=!c||!t.length?void 0:d.length>1?{term:e.trim(),df:Math.min(...d.map(y=>n.get(y)??0))}:{term:t[0],df:n.get(t[0])??0},f=o.filter(y=>y.bridgedOnly).length,m=o.length>0&&f===o.length,p=u?.df===0,g=o.length?p||m?"weak":"match":"none",h={query:e,terms:a,droppedStopwords:ii(e,s),unresolvedTerms:l,...u?{wholeIdentifier:u}:{},verdict:g,bridgedOnlyResults:f,resultCount:o.length},_=mR(h,p,m);return _&&(h.note=_),h}function mR(e,t,n){let{verdict:r,wholeIdentifier:o,resultCount:s,terms:a}=e;if(r!=="match"){if(!s){let l=e.unresolvedTerms;return l.length?`No file matches. ${l.length===1?"The term":"The terms"} ${l.join(", ")} ${l.length===1?"appears":"appear"} nowhere in this index.`:"No file matches this query."}if(t&&o){let l=a.filter(m=>m.term!==o.term&&m.df>0).map(m=>m.term).join(", "),c=a.find(m=>m.term===o.term),d=(c?c.bridge?.to:a.find(m=>m.df===0&&m.bridge)?.bridge?.to)??[],u=l?` The ${s} result${s===1?"":"s"} below match only its parts (${l}).`:"",f=d.length?` Closest indexed name${d.length===1?"":"s"}: ${d.join(", ")}.`:"";return`No file in this index defines or mentions "${o.term}".${u}${f} If you expected it here, check you are indexing the right branch or commit.`}if(n)return`Nothing matched verbatim. Every result below came from a near match: ${a.filter(d=>d.bridge).map(d=>`"${d.term}" \u2192 ${d.bridge.to.join(", ")}`).join("; ")}. Re-run with --exact to see only literal matches.`}}var Vh,z0,H0,G0,Jh,q0,il,V0,J0,K0,X0,Z0,Y0,Q0,eR,Kh,nR,rR,Mu,oR,Xh,Fs=H(()=>{"use strict";$();gt();et();dr();ce();Vh=1.2,z0=20,H0=5,G0=.6,Jh=3,q0=.9,il=["name","path","heading","summary","doc","body"],V0={name:3,path:2,heading:1.5,summary:1.5,doc:1.6,body:.7},J0={name:.75,path:.75,heading:.75,summary:.75,doc:.75,body:.4},K0=1.35,X0=new Set(["reexport","reexport-all"]),Z0=.65,Y0=/^(test|tests|spec|specs|fixture|fixtures|testdata|mock|mocks|stub|stubs)$/,Q0=.5,eR=/(^|\/)(testdata|test-data|test_data|fixtures?|__fixtures__|__snapshots__)(\/|$)/i,Kh=.1;nR=7,rR=32,Mu=3;oR=/^[a-z0-9]{2,}$/,Xh=new WeakMap});function Hr(e,t,n=.85){let r=new Map,o=e.length;if(o===0)return r;let s=new Map(e.map((d,u)=>[d,u])),a=Array.from({length:o},()=>[]),l=new Array(o).fill(0);for(let d of t){if(d.dangling)continue;let u=s.get(d.from),f=s.get(d.to);u===void 0||f===void 0||u===f||(a[u].push([f,d.weight]),l[u]+=d.weight)}let c=new Array(o).fill(1/o);for(let d=0;d<200;d++){let u=0;for(let g=0;gr.set(d,c[u])),r}function iy(e,t){let n=new Map;for(let h of e)n.set(h,0);let r=e.length;if(r<3)return n;let o=new Map(e.map((h,_)=>[h,_])),s=Array.from({length:r},()=>new Set);for(let h of t){if(h.dangling)continue;let _=o.get(h.from),y=o.get(h.to);_===void 0||y===void 0||_===y||(s[_].add(y),s[y].add(_))}let a=s.map(h=>[...h].sort((_,y)=>_-y)),l=new Float64Array(r),c=[],d=[],u=Array.from({length:r},()=>[]),f=new Float64Array(r),m=new Int32Array(r).fill(-1),p=new Float64Array(r);for(let h=0;h=0;_--){let y=c[_];for(let b of u[y])p[b]+=f[b]/f[y]*(1+p[y]);y!==h&&(l[y]+=p[y])}}let g=(r-1)*(r-2)/2;return e.forEach((h,_)=>n.set(h,l[_]/2/g)),n}function Iu(e){let t=[],n=e.modules.length;if(n>0){let o=e.modules.map(a=>a.id),s=Hr(o,e.moduleEdges);for(let a of e.modules)a.pagerank=Number(((s.get(a.id)??0)*n).toFixed(4));if(n>3e3)t.push(`betweenness skipped (${n} modules > 3000)`);else{let a=iy(o,e.moduleEdges);for(let l of e.modules)l.betweenness=Number((a.get(l.id)??0).toFixed(6))}}let r=e.files.length;if(r>0){let o=e.files.map(a=>a.id),s=Hr(o,e.fileEdges);for(let a of e.files)a.pagerank=Number(((s.get(a.id)??0)*r).toFixed(4))}return t}var Qi=H(()=>{"use strict";$()});function hR(e){let t=oy.get(e);if(!t){let n=["if","for","while",...pR[e]??gR];t=new RegExp(`(?r[0])]);e.block&&n.add("/"),e.backtick&&n.add("`"),t=new RegExp(`[${[...n].map(r=>"\\"+r).join("")}]`,"g"),ay.set(e,t)}return t}function al(e,t){let n=t&&xR[Fe(t)]||ur,r=e.length,o="",s=0,a=(u,f)=>{o+=e.slice(s,u)+e.slice(u,f).replace(/[^\n]/g," "),s=f},l=(u,f,m,p)=>{for(;ue.startsWith(f,d))){let f=e.indexOf(` +`,d),m=f===-1?r:f;a(d,m),d=m}else if(n.triple&&(e.startsWith('"""',d)||e.startsWith("'''",d))){let f=l(d+3,e.slice(d,d+3),!0,!0);a(d,f),d=f}else if(u==='"'||u==="'"&&!n.charOnly){let f=l(d+1,u,!0,!1);a(d,f),d=f}else if(u==="'"){ly.lastIndex=d;let f=ly.exec(e);f&&a(d,d+f[0].length),d+=f?f[0].length:1}else if(u==="`"&&n.backtick){let f=l(d+1,"`",n.backtick==="template",!0);a(d,f),d=f}else d++}return s===0?e:o+e.slice(s)}function cy(e,t){let n=t?Fe(t):"",r=(e.match(hR(n))??[]).length;return n==="python"&&(r+=(e.match(yR)??[]).length),bR.has(n)&&(r+=(e.match(_R)??[]).length),r}function $u(e,t){return 1+cy(al(e,t),t)}function eo(e,t,n=50){let r=[];for(let o of e.files){if(o.kind!=="code"||t&&o.rel!==t||!o.symbols.length)continue;let s=al(re(j(e.root,o.rel)),o.lang).split(` +`),a=o.symbols.filter(l=>l.kind!=="reexport"&&l.kind!=="reexport-all").sort((l,c)=>l.line-c.line||(c.endLine??c.line)-(l.endLine??l.line));a.forEach((l,c)=>{if(wR.has(l.kind))return;let d=l.endLine??l.line,u=s.slice(l.line-1,d);for(let m of kR(a,c,d))for(let p=m.line;p<=m.endLine;p++)u[p-l.line]="";let f={file:o.rel,name:l.name,line:l.line,complexity:1+cy(u.join(` +`),o.lang)};l.endLine!==void 0&&(f.endLine=l.endLine),r.push(f)})}return r.sort((o,s)=>s.complexity-o.complexity||T(o.file,s.file)||o.line-s.line),r.slice(0,n)}function kR(e,t,n){let r=e[t],o=[];for(let s=t+1;sn||(a.line>r.line||a.endLines.kind==="code"&&(t.get(s.rel)??0)>0).map(s=>{let a=r.get(s.rel),l=t.get(s.rel)??0;return{file:s.rel,complexity:a,commits:l,score:(l+1)*a}});return o.sort((s,a)=>a.score-s.score||T(s.file,a.file)),o.slice(0,n)}var pR,gR,oy,yR,_R,bR,wR,ur,qt,xR,ay,ly,Os=H(()=>{"use strict";$();me();ar();gt();Ze();ce();pR={js:["else\\s+if","case","catch"],c:["else\\s+if","case"],java:["else\\s+if","case","catch"],csharp:["else\\s+if","foreach","case","catch"],go:["else\\s+if","case"],rust:["else\\s+if","match"],kotlin:["else\\s+if","when","catch"],scala:["else\\s+if","match","case","catch"],swift:["else\\s+if","case","catch","guard"],php:["elseif","else\\s+if","foreach","case","catch"],dart:["else\\s+if","case","catch"],python:["elif","except"],ruby:["elsif","unless","until","when","rescue"],elixir:["unless","case","cond","rescue"],lua:["elseif"],shell:["elif","until","case"],perl:["elsif","unless","until","foreach"]},gR=["elif","elsif","else\\s+if","foreach","until","unless","case","when","match","catch","rescue","except"],oy=new Map;yR=/^[ \t]*case\b[^\n]*:[ \t]*$/gm,_R=/(?[n.rel,n]))}function ll(e){let t=dt(e);if(!t.symbolsByName){let n=new Map;for(let r of e.files)for(let o of r.symbols){let s=n.get(o.name);s?s.push(o):n.set(o.name,[o])}t.symbolsByName=n}return t.symbolsByName}function cn(e){let t=dt(e);return t.resolveCtx??=zi(e)}function Ot(e){let t=dt(e);if(!t.importPairs){let n=cn(e),r=new Set;for(let o of e.files)for(let s of o.refs){if(s.kind!=="import")continue;let a=ct(o.rel,o.ext,s.spec,n);a.kind==="resolved"&&a.target!==o.rel&&r.add(`${o.rel}|${a.target}`)}t.importPairs=r}return t.importPairs}function uy(e,t,n){let r=Tu.get(e);!r||r.resolveCtx!==t||r.importPairs||(r.importPairs=n)}function Pr(e){let t=dt(e);return t.uniqueDefs??=Fu(e)}function cl(e){let t=dt(e);return t.symbolRefs??=fu(e)}function Qa(e){let t=dt(e);if(t.docMentions)return t.docMentions;let n=Pr(e),r=new Map;if(n.size)for(let o of e.files){if(o.kind!=="doc")continue;let s=e.docText.get(o.rel),a=s??re(j(e.root,o.rel));if(!a)continue;let l=new Map;for(let c of a.split(/[^A-Za-z0-9_]+/))n.has(c)&&l.set(c,(l.get(c)??0)+1);r.set(o.rel,{counts:l,retained:s!==void 0})}return t.docMentions=r}function fy(e){let t=dt(e);if(t.identSets)return t.identSets;let n=new Map;for(let r of e.files)r.kind==="code"&&r.idents?.length&&n.set(r.rel,new Set(r.idents));return t.identSets=n}function Ns(e){let t=dt(e);return t.callerIndex??=Gr(e,Ot(e))}function Ps(e){let t=dt(e);return t.hierarchy??=gu(e,Ot(e))}function Ls(e){let t=dt(e);return t.symbolGraph??=xu(e,Ot(e))}function Au(e){let t=dt(e);return(t.bm25??={docs:ol(e)}).docs}function ny(e){let t=dt(e),n=t.bm25??={docs:ol(e)};return n.trigrams??=ey(n.docs)}function ry(e){let t=dt(e);if(!t.importPagerank){let n=e.files.map(o=>o.rel),r=[];for(let o of Ot(e)){let s=o.indexOf("|");r.push({from:o.slice(0,s),to:o.slice(s+1),kind:"import",weight:1})}t.importPagerank=Hr(n,r)}return t.importPagerank}function sy(e){let t=dt(e),n=t.bm25??={docs:ol(e)};return n.stems??=Qh(n.docs)}function dy(e){let t=dt(e);if(!t.fileComplexity){let n=new Map;for(let r of e.files)r.kind==="code"&&n.set(r.rel,$u(re(j(e.root,r.rel)),r.lang));t.fileComplexity=n}return t.fileComplexity}var Tu,gt=H(()=>{"use strict";$();me();$n();dl();Hi();lr();Fn();Br();Fs();Qi();Os();Ze();Tu=new WeakMap});function ul(e,t){let n=e.get(t);if(n)return n;for(let r of Tn(t).slice(1))for(let o of e.values())if(As(r,o.def))return o}function py(e,t,n={}){return hy(e,Ot(e),n.recall===!0,new Set(t))}function gy(e){return[...new Set(Tn(e).map(t=>t.name))]}function ER(e){return new Set(Ot(e))}function Gr(e,t,n={}){return hy(e,t??Ot(e),n.recall===!0)}function hy(e,t,n,r){let o=cr(e,t,{recall:n,only:r}),s=new Map;for(let c of e.files){let d=o.forFile(c);if(d)for(let u of c.calls){let f=d(u);if(!f)continue;let m=f.def.name+"\0"+f.def.file,p=s.get(m);p?f.def.lineT(f.file,m.file)||f.line-m.line),a.has(d.name)?a.set(`${d.name}@${d.file}`,{def:d,callers:u}):a.set(d.name,{def:d,callers:u})}return a}function vR(e,t,n){let r=e.files.find(o=>o.rel===t);if(r?.symbols.length)return On(r.symbols,n)}function On(e,t){let n;for(let r of e)my.has(r.kind)||r.line>t||r.endLine!==void 0&&t>r.endLine||(!n||r.line>n.line||r.line===n.line&&(r.endLine??1/0)<=(n.endLine??1/0))&&(n=r);return n}function Ou(e){return yy(e)}function mr(e,t){return yy(e,t).get(t)??[]}function yy(e,t){let n=new Map;for(let o of e.files){if(!o.calls?.length)continue;let s;for(let a of o.calls){if(t!==void 0&&a.name!==t)continue;s??=o.symbols.filter(u=>!my.has(u.kind));let l={file:o.rel,line:a.line};a.receiver!==void 0&&(l.receiver=a.receiver);let c=On(s,a.line);c&&(l.enclosingSymbol=c);let d=n.get(a.name);d||n.set(a.name,d=[]),d.push(l)}}let r=new Map;for(let o of[...n.keys()].sort(T)){let s=n.get(o);s.sort((a,l)=>T(a.file,l.file)||a.line-l.line),r.set(o,s)}return r}var my,lr=H(()=>{"use strict";$();Is();gt();ce();Lr();my=new Set(["reexport","reexport-all","default"])});function AR(e){let t=e.split("/"),n=t.pop()??e;return(/^v\d+$/.test(n)||n==="go")&&t.length&&(n=t.pop()),n.replace(/\.v\d+$/,"").replace(/^go-/,"").replace(/[-.]go$/,"").replace(/\W/g,"")}function IR(e,t){if(!e.includes(t))return;let n=Lu.get(t);n||(n=new RegExp(`(?:^|[(,\\s])${t}\\s*(?::\\s*["']?|\\s+[*&]?)\\s*(?:([A-Za-z_]\\w*)\\.)?(?:[A-Za-z_]\\w*\\.)*([A-Za-z_]\\w*)`),Lu.size<4096&&Lu.set(t,n));let r=n.exec(e);return r?{type:r[2],qualifier:r[1]}:void 0}function $R(e){if(!(!e?.signature||e.kind!=="method"))return/^func\s*\(\s*([A-Za-z_]\w*)\s/.exec(e.signature)?.[1]}function hu(e,t,n){let r=Ds(t),o,s=C=>(o??=new Map(e.files.map(M=>[M.rel,M]))).get(C),a=new Map;for(let C of e.files){let M=C.rel.endsWith("/__init__.py")||C.rel==="__init__.py"?{all:!0,names:new Set}:void 0;for(let x of C.symbols)x.kind!=="reexport"&&x.kind!=="reexport-all"||(M??={all:!1,names:new Set},x.kind==="reexport-all"?M.all=!0:M.names.add(x.name));M&&a.set(C.rel,M)}let l=new Map,c=(C,M)=>{let x=`${C}\0${M}`,w=l.get(x);if(w)return w;w=new Set;let E=[C];for(let N=0;N{if(!d){d=new Map;for(let x of e.files){let w=Fe(x.lang);if(!wy.has(w)||x.kind!=="code")continue;let E=`${w}\0${yt(x.rel)}`,N=d.get(E);N||d.set(E,N=[]),N.push(x)}}return d.get(`${C}\0${M}`)??[]},f=new Map,m=C=>{let M=Fe(C.lang);if(!wy.has(M))return null;let x=f.get(C.rel);if(x!==void 0)return x;let w=yt(C.rel),E=new Set;if(M==="go")for(let N of r.get(C.rel)??[])N.endsWith(".go")&&yt(N)!==w&&E.add(yt(N));return f.set(C.rel,x={own:w,test:no(C.rel),imported:E}),x},p=new WeakMap,g=(C,M,x,w,E)=>{let N=(L,G)=>{L.file===M.rel||E.has(L.file)||(G===x.own?x.test||!no(L.file):x.imported.has(G)&&!no(L.file))&&(E.add(L.file),w.push(L))};if(C.list.length<=x.imported.size+1){for(let L of C.list)N(L,yt(L.file));return}let O=p.get(C);if(!O){O=new Map;for(let L of C.list){let G=yt(L.file),X=O.get(G);X?X.push(L):O.set(G,[L])}p.set(C,O)}for(let L of O.get(x.own)??[])N(L,x.own);for(let L of x.imported)for(let G of O.get(L)??[])N(G,L)},h=(C,M,x,w)=>{if(M.size{for(let N of M){let O=a.get(N);if(O&&(h(C,c(N,x),w,E),!(O.all||!O.names.size)))for(let L of C.list)L.parent&&!E.has(L.file)&&O.names.has(L.parent)&&c(N,L.parent).has(L.file)&&(E.add(L.file),w.push(L))}},y=(C,M,x)=>{if(!C)return[];let w=m(M);if(w&&M.lang==="go"){let L=[];return g(C,M,w,L,new Set),L}let E=r.get(M.rel),N=Du(C,E),O=new Set(N.map(L=>L.file));return O.add(M.rel),E&&_(C,E,x,N,O),w&&g(C,M,w,N,O),N},b=(C,M,x)=>{if(!C)return[];let w=[],E=new Set;return h(C,new Set(M),w,E),_(C,M,x,w,E),w},S=n,k=ky.get(e),R=()=>(S??=cn(e),k?.ctx!==S&&ky.set(e,k={ctx:S,files:new Map}),k.files),I=C=>{let M=s(C);if(!M)return;let x=M.importAliases?.find(N=>N.local==="default"&&N.from===void 0);if(x)return x.name;let w=M.symbols.find(N=>N.kind==="default");if(w)return w.name;let E=C.slice(C.lastIndexOf("/")+1).replace(/\.[^.]+$/,"");return M.symbols.some(N=>N.name===E&&!N.parent)?E:void 0},P=C=>u("go",C).find(M=>!no(M.rel))?.symbols.find(M=>M.kind==="package")?.name;return{targets:C=>r.get(C),reached:y,within:b,aliases:C=>{let M=C.lang==="go";if(!C.importAliases?.length&&!(M&&C.refs.length))return MR;let x=R(),w=x.get(C.rel);if(w)return w;w={modules:new Map,names:new Map};let E=O=>{let L=ct(C.rel,C.ext,O,S);return L.kind==="resolved"&&L.target!==C.rel?L.target:null},N=(O,L)=>{let G=w.modules.get(O);G==null?w.modules.set(O,L):L&&w.modules.set(O,[...new Set([...G,...L])].sort(T))};if(M){let O=new Map;for(let L of C.importAliases??[])L.from!==void 0&&O.set(L.from,L.local);for(let L of C.refs){if(L.kind!=="import")continue;let G=E(L.spec),X=G===null?void 0:yt(G),oe=O.get(L.spec)??(X!==void 0?P(X):void 0)??AR(L.spec);N(oe,X!==void 0?u("go",X).filter(ue=>!no(ue.rel)).map(ue=>ue.rel):null)}}else for(let O of C.importAliases??[]){if(O.from===void 0)continue;let L=E(O.from);if(O.name==="*"){N(O.local,L?[L]:null);continue}if(C.lang==="python"){let X=E(O.from.endsWith(".")?O.from+O.name:`${O.from}.${O.name}`);if(X&&X!==L){N(O.local,[X]);continue}}if(w.names.has(O.local))continue;let G=O.name==="default"?(L?I(L):void 0)??O.local:O.name;w.names.set(O.local,{name:G,files:L?[L]:null})}return x.set(C.rel,w),w}}}function vy(e,t,n){Vi(e.any,t.name,t),Vi(n?e.member:e.free,t.name,t)}function Ry(e,t,n,r){if(r!=="member-first")return e[r].get(t)?.get(n);let o=e.member.get(t)?.get(n),s=e.free.get(t)?.get(n);if(!o||!s)return o??s;let a=new Map(o.byFile),l=[...o.list];for(let c of s.list)a.has(c.file)||(a.set(c.file,c),l.push(c));return{list:l,byFile:a}}function cr(e,t,n={}){let r=n.recall===!0,o=n.only,s=hu(e,t,n.ctx),a,l=new Map,c=new Set,d=v=>{let C=l.get(v);if(C)return C;let M=(a??=new Map(e.files.map(E=>[E.rel,E]))).get(v)?.symbols??[],x,w;for(let E of M)if(E.parent!==void 0){if(!w){w=new Map;for(let N of M)w.has(N.name)||w.set(N.name,N.kind)}RR.has(w.get(E.parent)??"")&&(x??=new Set).add(E.parent)}return l.set(v,C=x??c),C},u=v=>(a??=new Map(e.files.map(C=>[C.rel,C]))).has(v),f=(v,C)=>C.map(M=>v?`${v}/${M}`:M).find(u),m=(v,C)=>{if(C==="lib.rs"||C==="main.rs")return!0;let M=yt(v),x=M.slice(M.lastIndexOf("/")+1);return x==="examples"||x==="tests"||x==="benches"||x==="bin"&&/(^|\/)src\/bin$/.test(M)},p=(v,C)=>{let M=v.slice(v.lastIndexOf("/")+1),x;if(m(v,M))C==="crate"&&(x=v);else if(C==="crate")for(let w=yt(v);!x&&(x=f(w,["lib.rs","main.rs"]),!!w);w=yt(w));else{let w=yt(M==="mod.rs"?yt(v):v.slice(0,-3));x=f(w,["mod.rs","lib.rs","main.rs"])??(w&&u(`${w}.rs`)?`${w}.rs`:void 0)}return x===void 0?void 0:[x]},g=v=>v.parent!==void 0&&d(v.file).has(v.parent),h=v=>v.parent!==void 0&&!d(v.file).has(v.parent),_=new Map;for(let v of e.files){let C=xy[Fe(v.lang)]!==void 0;for(let M of v.symbols){if(fl.has(M.kind)||Nu.has(M.kind)||!M.exported&&!C||o&&!o.has(M.name))continue;let x=_.get(M.name);x?x.push(M):_.set(M.name,[M])}}let y=new Map,b=v=>{let C=y.get(v);if(C!==void 0)return C;let M=_.get(v);if(C=null,M){C={exported:Ey(),hidden:Ey()};for(let x of M)x.exported?vy(C.exported,x,h(x)):g(x)||vy(C.hidden,x,h(x))}return y.set(v,C),C},S=(v,C,M)=>{let x=b(v);return x?Ry(x.exported,v,C,M):void 0},k=(v,C,M)=>{let x=b(v);return x?Ry(x.hidden,v,C,M):void 0},R=new Map,I=v=>{let C=R.get(v);return C===void 0&&R.set(v,C=Ft(v)||Cs(yt(v)||"(root)")===2),C};return{forFile:v=>{if(!v.calls?.length||o&&!v.calls.some(V=>o.has(V.name)||v.importAliases?.some(Z=>Z.local===V.name)))return;let C=Fe(v.lang),M=!r&&by.has(C),x=xy[C],w=new Map,E=new Map,N=new Map,O=new Set,L=d(v.rel),G=V=>V.parent!==void 0&&!L.has(V.parent);for(let V of v.symbols)fl.has(V.kind)||Nu.has(V.kind)||(w.has(V.name)||w.set(V.name,V),G(V)?(N.has(V.name)||N.set(V.name,V),O.add(V.parent)):E.has(V.name)||E.set(V.name,V));let X,oe,ue,ve=(V,Z)=>{if(!oe){oe=new Map;for(let B of v.symbols){if(fl.has(B.kind)||Nu.has(B.kind)||!G(B))continue;let K=`${B.parent}\0${B.name}`;oe.has(K)||oe.set(K,B)}}return oe.get(`${V}\0${Z}`)},Oe=V=>{if(O.size){if(!ue){ue=new Map;for(let Z of O){let B=Z.toLowerCase();ue.set(B,ue.has(B)?null:Z)}}return ue.get(V.toLowerCase())}},z=s.aliases(v),U,q;if(C==="rust"){for(let V of["crate","super"]){let Z=p(v.rel,V);Z&&(U??=new Map).set(V,Z)}q=v.symbols.filter(V=>V.kind==="mod"&&V.endLine!==void 0&&V.endLine>V.line),q.length&&(U??=new Map).set(Sy,[v.rel])}let te=(V,Z)=>{let B=s.reached(S(V,C,Z),v,V),K=k(V,C,Z);if(K&&(x==="package"||x==="import")){let se=new Set(B.map(Ne=>Ne.file));for(let Ne of x==="package"?s.reached(K,v,V):Du(K,s.targets(v.rel)))x==="package"&&yt(Ne.file)!==yt(v.rel)||Ne.file!==v.rel&&!se.has(Ne.file)&&(se.add(Ne.file),B.push(Ne))}return B},ae=(V,Z,B)=>{if(Z!==void 0&&V.some(se=>se.parent===Z))return V.filter(se=>se.parent===Z);let K=B?.toLowerCase();return K!==void 0&&V.some(se=>se.parent?.toLowerCase()===K)?V.filter(se=>se.parent?.toLowerCase()===K):V},ge=(V,Z,B,K)=>({shape:V,receiver:Z,selfType:B,typeHint:K,results:new Map}),st=ge("bare"),Je=ge("outside"),he=new Map,fe=new Map,ye=(V,Z)=>{let B=V.receiver;if(B===void 0)return st;B==="super"&&q?.some(Se=>V.line>Se.line&&V.line<=Se.endLine)&&(B=Sy);let K=he.get(B);if(K)return K;let se=Se=>ge("self",B,Se,Se);if(!Pu.has(B)){if(U?.has(B))K=ge("module",B);else if(z.modules.has(B))K=ge("module",B);else if(O.has(B))K=se(B);else if(!by.has(C)){let Se=Oe(B);K=Se?se(Se):ge("foreign",B,void 0,z.names.get(B)?.name??B)}if(K)return he.set(B,K),K}Z===void 0&&(X??=v.symbols.filter(Se=>!fl.has(Se.kind)),Z=On(X,V.line));let Ne=fe.get(Z??null);return Ne||fe.set(Z??null,Ne=new Map),K=Ne.get(B),K||(K=at(B,Z,se),Ne.set(B,K),K)},at=(V,Z,B)=>{if(Pu.has(V))return B(Z?.parent);if(C==="go"&&$R(Z)===V)return B(Z.parent);let K=Z?.signature?IR(Z.signature,V):void 0;if(K?.qualifier!==void 0&&!r&&z.modules.get(K.qualifier)===null)return Je;if(K!==void 0&&O.has(K.type))return B(K.type);let se=K===void 0?Oe(V):void 0;return se?B(se):ge("foreign",V,void 0,K?.type??z.names.get(V)?.name??V)},ne=(V,Z)=>{let{shape:B,receiver:K,selfType:se,typeHint:Ne}=Z;if(B==="outside")return null;let Se;if(r?Se=w.get(V):B==="bare"?Se=M?E.get(V):w.get(V):B==="self"&&(Se=se!==void 0?ve(se,V):void 0,!Se&&K!==void 0&&Pu.has(K)&&(Se=N.get(V))),Se)return o&&!o.has(Se.name)?null:{hit:{def:Se,corroborated:!0},local:!0};let Zt,un=V;if(B==="bare"){let Lt=z.names.get(V);Lt&&({name:un,files:Zt}=Lt)}else B==="module"&&(Zt=U?.get(K)??z.modules.get(K));let vn=U?.has(K)===!0&&B==="module";if(o&&!o.has(un))return null;let ni=M?B==="bare"||B==="module"?"free":B==="self"||C==="go"?"member":"member-first":"any",Kb=ni==="member-first"?"member":ni;if(Zt!==void 0)if(Zt===null){if(!r)return null}else{let Lt=s.within(S(un,C,ni),Zt,un);if(x==="import"||vn)for(let lm of s.within(k(un,C,ni),Zt,un))Lt.includes(lm)||Lt.push(lm);let ri=Dr(v.rel,Lt);if(ri)return{hit:{def:ri,corroborated:!0},local:!1};if(Lt.length||!r&&_y.has(C))return null}let im=ae(te(un,ni),Ne,K);if(im.length){let Lt=Dr(v.rel,im);return Lt?{hit:{def:Lt,corroborated:!0},local:!1}:null}let om=S(un,C,r?"any":Kb);if(!om)return null;let Ec=Cy(om,v.rel);if(!Ec.length)return null;let vc=[...Ec];if(r){if(C==="js"&&Ec.length!==1)return null}else{if(_y.has(C))return null;let Lt=I(v.rel);vc=vc.filter(ri=>!Cu(ri.file)&&(Lt||!I(ri.file)))}let am=Dr(v.rel,ae(vc,Ne,K));return am?{hit:{def:am,corroborated:!1},local:!1}:null};return(V,Z)=>{let B=ye(V,Z),K=B.results.get(V.name);if(K===void 0&&B.results.set(V.name,K=ne(V.name,B)),!!K&&!(K.local&&K.hit.def.line===V.line))return K.hit}}}}var fl,_y,by,wy,xy,Nu,Sy,Pu,RR,CR,MR,yt,no,Lu,ky,Ey,Is=H(()=>{"use strict";$();$n();ar();lr();gt();Ms();dr();ce();fl=new Set(["reexport","reexport-all","default"]),_y=new Set(["js","go"]),by=new Set(["go","python"]),wy=new Set(["go","java"]),xy={go:"package",java:"package",python:"import",rust:"path"},Nu=new Set(["mod","module","package","namespace"]),Sy="super\0inline",Pu=new Set(["self","cls","this","Self"]),RR=new Set(["function","method","def","constructor","operator"]),CR=3,MR={modules:new Map,names:new Map},yt=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",no=e=>e.endsWith("_test.go");Lu=new Map;ky=new WeakMap;Ey=()=>({any:new Map,free:new Map,member:new Map})});function Fe(e){return TR.has(e)?"js":e==="c"||e==="cpp"?"c":e}function FR(e,t){let n=Math.min(e.length,t.length),r=0,o=0;for(;or?(r=a,n=s,o=!1):a===r&&(o=!0)}return o?void 0:n}function Vi(e,t,n){let r=e.get(t);r||e.set(t,r=new Map);for(let a of r.values())if(a.byFile.has(n.file))return!1;let o=Fe(n.lang),s=r.get(o);return s||r.set(o,s={list:[],byFile:new Map}),s.list.push(n),s.byFile.set(n.file,n),!0}function Ds(e){let t=new Map;for(let n of e)for(let r=n.indexOf("|");r!==-1;r=n.indexOf("|",r+1)){let o=n.slice(0,r),s=n.slice(r+1);if(o===s)continue;let a=t.get(o);a||t.set(o,a=new Set),a.add(s)}return t}function Du(e,t){if(!t?.size)return[];if(t.sizet.has(n.file))}function Cy(e,t){return e.byFile.has(t)?e.list.filter(n=>n.file!==t):e.list}function ju(e,t,n){let r=cr(e,t,{ctx:n}),o=new Map;for(let s of e.files){let a=r.forFile(s);if(a)for(let l of s.calls){let c=a(l);if(!c||c.def.file===s.rel)continue;let d=c.corroborated?"extracted":"inferred",u=`${s.rel}|${c.def.file}`,f=o.get(u);f?(f.weight+=1,d==="extracted"&&(f.confidence="extracted")):o.set(u,{from:s.rel,to:c.def.file,weight:1,confidence:d})}}return[...o.values()].map(s=>({from:s.from,to:s.to,kind:"call",weight:Math.min(s.weight,5),confidence:s.confidence})).sort((s,a)=>T(s.from,a.from)||T(s.to,a.to))}var TR,ar=H(()=>{"use strict";$();Is();ce();TR=new Set(["typescript","javascript","vue","svelte","astro"])});function OR(e){return e.length<5?!1:/[a-z][A-Z]/.test(e)||/[A-Z]{2}/.test(e)||e.includes("_")||/\d/.test(e)}function Fu(e){let t=new Map;for(let r of e.files)for(let o of r.symbols){if(!o.exported||NR.has(o.kind)||!OR(o.name))continue;let s=t.get(o.name);s||t.set(o.name,s=new Set),s.add(r.rel)}let n=new Map;for(let[r,o]of t)o.size===1&&n.set(r,[...o][0]);return n}function Nn(e,t){let n=My(t.from,t.to,t.kind),r=e.get(n);if(r){r.weight+=t.weight;return}e.set(n,{...t})}function Bu(e,t,n,r,o){let s=new Map,a=new Set;for(let R of e.files){let I;for(let P of R.refs){if(P.soft){(I??=[]).push(P);continue}if(P.kind==="doc-link"){let v=sr(R.rel,P.spec,t);if(v.kind==="external")continue;v.kind==="dangling"?Nn(s,{from:R.rel,to:P.spec,kind:"doc-link",weight:1,dangling:!0,reason:v.reason}):v.target!==R.rel&&Nn(s,{from:R.rel,to:v.target,kind:"doc-link",weight:1})}else{let v=ct(R.rel,R.ext,P.spec,t);if(v.kind==="external")continue;v.kind==="dangling"?Nn(s,{from:R.rel,to:P.spec,kind:"import",weight:1,dangling:!0,reason:v.reason}):v.target!==R.rel&&(Nn(s,{from:R.rel,to:v.target,kind:"import",weight:1}),a.add(`${R.rel}|${v.target}`))}}for(let P of I??[]){let v=P.kind==="doc-link"?sr(R.rel,P.spec,t):ct(R.rel,R.ext,P.spec,t);v.kind!=="resolved"||v.target===R.rel||s.has(My(R.rel,v.target,P.kind))||(Nn(s,{from:R.rel,to:v.target,kind:P.kind,weight:1}),P.kind==="import"&&a.add(`${R.rel}|${v.target}`))}}let l=new Set;for(let R of ju(e,a,t))Nn(s,R),l.add(`${R.from}|${R.to}`);for(let R of pu(e,a,t))Nn(s,R);uy(e,t,a);let c=Pr(e);if(c.size){let R,I=(v,C)=>{let M=ml(C);for(let x of(R??=Ds(a)).get(v)??[])if(ml(x)===M)return!0;return!1},P=new Map(e.files.map(v=>[v.rel,v.lang]));for(let v of e.files){if(v.kind!=="code"||!v.idents?.length)continue;let C=new Set([...v.importedNames??[],...(v.importAliases??[]).map(E=>E.local)]),M=Fe(v.lang),x=new Map;for(let E of v.idents){let N=c.get(E);!N||N===v.rel||C.has(E)||Fe(P.get(N)??"")===M&&x.set(N,(x.get(N)??0)+1)}let w=v.lang==="go";for(let[E,N]of x){let O=`${v.rel}|${E}`;a.has(O)||l.has(O)||w&&E.endsWith(".go")&&ml(E)!==ml(v.rel)&&!I(v.rel,E)||Nn(s,{from:v.rel,to:E,kind:"use",weight:Math.min(N,5)})}}}if(c.size)for(let[R,{counts:I}]of Qa(e))for(let[P,v]of I){let C=c.get(P);C!==R&&Nn(s,{from:R,to:C,kind:"mention",weight:Math.min(v,5)})}let d=[...s.values()].sort((R,I)=>T(R.from,I.from)||T(R.to,I.to)||T(R.kind,I.kind)),u=new Map,f=new Map,m=new Set(e.files.map(R=>R.rel));for(let R of d)R.dangling||!m.has(R.to)||(f.set(R.from,(f.get(R.from)??0)+1),u.set(R.to,(u.get(R.to)??0)+1));let p={import:7,extends:6,implements:5,call:4,use:3,"doc-link":2,mention:1,contains:0},g=new Map;for(let R of d){if(R.dangling||!m.has(R.to))continue;let I=r.get(R.from),P=r.get(R.to);if(!I||!P||I===P)continue;let v=`${I}${Wu}${P}`,C=g.get(v);C?(C.weight+=R.weight,(p[R.kind]??0)>(p[C.kind]??0)&&(C.kind=R.kind)):g.set(v,{from:I,to:P,kind:R.kind,weight:R.weight})}let h=[...g.values()].sort((R,I)=>T(R.from,I.from)||T(R.to,I.to)),_=new Map,y=new Map;for(let R of h)y.set(R.from,(y.get(R.from)??0)+1),_.set(R.to,(_.get(R.to)??0)+1);let b=e.files.map(R=>({id:R.rel,kind:"file",rel:R.rel,fileKind:R.kind,lang:R.lang,module:r.get(R.rel)??"root",title:R.title,summary:R.summary,symbols:R.symbols.length,lines:R.lines,degIn:u.get(R.rel)??0,degOut:f.get(R.rel)??0,...R.generated?{generated:R.generated}:{}})).sort((R,I)=>T(R.rel,I.rel)),S=new Map;for(let R of e.files){let I=r.get(R.rel)??"root";S.set(I,(S.get(I)??0)+R.symbols.length)}let k=n.map(R=>({id:R.slug,kind:"module",slug:R.slug,path:R.path,title:R.title,summary:R.summary,tier:R.tier,members:R.members,symbols:S.get(R.slug)??0,degIn:_.get(R.slug)??0,degOut:y.get(R.slug)??0})).sort((R,I)=>T(R.slug,I.slug));return{schemaVersion:o?.schemaVersion??5,version:o?.version??Ie,commit:e.commit,fileCount:e.files.length,languages:e.languages,files:b,modules:k,fileEdges:d,moduleEdges:h}}var ml,NR,Wu,My,dl=H(()=>{"use strict";$();bt();$n();ar();Fn();gt();ce();ml=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";NR=new Set(["reexport","reexport-all","default"]);Wu="\0",My=(e,t,n)=>`${e}${Wu}${t}${Wu}${n}`});function*PR(e){for(let t of e.files)yield*t.symbols}function ro(e,t){let n=fr(e).get(t);return n?[...n.symbols].filter(r=>!pl.has(r.kind)).sort((r,o)=>r.line-o.line||T(r.name,o.name)):[]}function gl(e,t,n){let r=fr(e).get(t);if(!r)return;let o=On(r.symbols,n);if(!o)return{file:t,line:n,symbol:null,enclosing:[]};let s=Math.max(n,o.endLine??n),a=r.symbols.filter(c=>c!==o&&!pl.has(c.kind)&&c.endLine!==void 0&&c.line<=o.line&&c.endLine>=s).sort((c,d)=>c.line-d.line||d.endLine-c.endLine||T(c.name,d.name)).map(ht),l=ht(o);return{file:t,line:n,symbol:{...o,id:l},enclosing:[...new Set(a)].filter(c=>c!==l),...o.endLine===void 0?{approximate:!0}:{}}}function so(e,t){let n=fr(e);return{...t,callers:t.callers.map(r=>{let o=On(n.get(r.file)?.symbols??[],r.line);return o?{...r,caller:ht(o)}:{...r}})}}function wn(e,t,n={}){let r=t.split("/").filter(Boolean);if(!r.length)return[];let o=r[r.length-1],s=r.slice(0,-1),a=(u,f)=>n.substring?u.toLowerCase().includes(f.toLowerCase()):u===f,l=[],c=n.substring?PR(e):ll(e).get(o)??[];for(let u of c)if(!pl.has(u.kind)&&a(u.name,o)){if(s.length){let f=s[s.length-1];if(!u.parent||u.parent!==f)continue}l.push({...u})}l.sort((u,f)=>+(f.name===o)-+(u.name===o)||T(u.file,f.file)||u.line-f.line);let d=l.slice(0,n.maxResults??50);if(n.includeBody){let u=new Map,f=new Set;for(let m of d){let p=m.endLine??m.line;if(f.has(m.file))continue;let g=u.get(m.file);if(!g){let h=re(j(e.root,m.file));if(!h){f.add(m.file);continue}g=h.split(` `),u.set(m.file,g)}m.body=g.slice(m.line-1,p).join(` -`)}}return n.concise?d.map(u=>({name:u.name,kind:u.kind,file:u.file,line:u.line,...u.parent?{parent:u.parent}:{},...u.body!==void 0?{body:u.body}:{}})):d}function Nt(e,t){let n=al(e);for(let r of In(t)){let o=(n.get(r.name)??[]).filter(s=>!ml.has(s.kind)&&As(r,s));if(o.length)return{reading:r,defs:o.sort((s,a)=>$(s.file,a.file)||s.line-a.line)}}}function gl(e,t){let n=ur(e,t),r=n.length?t:Nt(e,t)?.reading.name;return r===void 0||r===t?{name:t,sites:n}:{name:r,sites:ur(e,r)}}function hl(e,t,n){let r=Nt(e,t);if(!r)return;let o=r.reading.name,s=(c,d)=>`${d}:${c}`,a=new Set;for(let c of n.values())if(c.def.name===o)for(let d of c.callers)a.add(s(d.file,d.line));for(let c of al(e).get(o)??[])a.add(s(c.file,c.line));let l=ur(e,o).filter(c=>!a.has(s(c.file,c.line)));return{name:t,error:`no tracked callers for "${t}"`,defs:r.defs.map(c=>({name:c.name,kind:c.kind,file:c.file,line:c.line})),unresolvedSites:l.length,sample:l.slice(0,5).map(c=>c.receiver!==void 0?{file:c.file,line:c.line,receiver:c.receiver}:{file:c.file,line:c.line}),hint:l.length?`${l.length} call site(s) name "${o}" but none could be bound to a single definition; raw mode (CLI --raw, MCP raw:true) lists every site, recall mode (--recall, recall:true) relaxes the JS/TS import gate`:`no call site in the index names "${o}"`}}function so(e,t){let n=Nt(e,t),r=n?.defs??[],o=n?.reading.name??t,s=Ns(e),a=s.get(o),l=[...new Set(r.map(g=>g.file))],c=[];for(let g of l){let h=a?.def.file===g?a:s.get(`${o}@${g}`);if(h)for(let _ of h.callers)c.push(l.length>1?{..._,def:g}:{..._})}c.sort((g,h)=>$(g.file,h.file)||g.line-h.line);let d=new Set,f=Nr(e).get(o),m=uy(e),p=new RegExp(`(?{"use strict";I();fe();Ze();or();gt();le();Pr();Wr();ml=new Set(["reexport","reexport-all","default"])});function My(e,t,n){if(!OR.has(n)||t<0||t>=e.length)return;let r=Bu(e[t]),o=[{t:"code",close:null,nest:0}],s=0,a=0,l=!1,c=Math.min(e.length,t+NR),d=(u,f,m)=>{let p=e[u];if(PR.test(p.slice(f+1))&&!(m&&u!==t&&(Bu(p)!==r||p.trim()[0]!=="}")))return u};for(let u=t;u1||l||s>0||a>0)continue;let g=e.slice(u+1,c).findIndex(_=>_.trim()!=="");if(g<0)return;let h=e[u+1+g];if(!h.trim().startsWith("{")&&!(/[,:=>|&+\-*/?.]/.test(m)&&Bu(h).length>r.length&&h.startsWith(r)))return}}function LR(e,t,n){let r=e[t];if(n==="swift"){let c=0;for(;e[t+c]==="#";)c++;if(e[t+c]!=='"')return r==="`"?Cy("`"):void 0;let d=e.startsWith('"""',t+c),u=d?'"""':'"';return{frame:{t:"str",quote:u,hashes:c,escapes:c===0,interp:"swift",multiline:d},length:c+u.length}}if(n==="kotlin")return e.startsWith('"""',t)?{frame:{t:"str",quote:'"""',hashes:0,escapes:!1,interp:"dollar",multiline:!0},length:3}:r==='"'?{frame:{t:"str",quote:'"',hashes:0,escapes:!0,interp:"dollar",multiline:!1},length:1}:r==="'"?{frame:{t:"str",quote:"'",hashes:0,escapes:!0,interp:null,multiline:!1},length:1}:r==="`"?Cy("`"):void 0;let o=r==="r"&&(e[t+1]==='"'||e[t+1]==="'")&&!/[\w$]/.test(e[t-1]??""),s=o?t+1:t;if(e[s]!=='"'&&e[s]!=="'")return;let a=e.startsWith(e[s].repeat(3),s),l=a?e[s].repeat(3):e[s];return{frame:{t:"str",quote:l,hashes:0,escapes:!o,interp:o?null:"dollar",multiline:a},length:(o?1:0)+l.length}}function Cy(e){return{frame:{t:"str",quote:e,hashes:0,escapes:!1,interp:null,multiline:!1},length:e.length}}function HR(e,t,n){return t==="rust"&&Iy.test(e)?!1:Ay.has(t)&&(e.startsWith("//")||e.startsWith("/*")&&e.endsWith("*/"))||DR.has(t)&&e.startsWith("#")&&!(n===0&&e.startsWith("#!"))?!0:jR.has(t)&&e.startsWith("--")}function Ty(e,t){return WR.has(t)&&/^@[A-Za-z_]/.test(e)||BR.has(t)&&/^#\[/.test(e)||UR.has(t)&&e.startsWith("[")?!0:t==="cpp"&&/^template\b/.test(e)}function $y(e){let t=0;for(let n of e.replace(/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`/g,""))n==="("||n==="["||n==="{"?t++:(n===")"||n==="]"||n==="}")&&t--;return t}function GR(e,t,n){let r=e[t].trim(),o=Math.max(0,t-zR);if(Ay.has(n)&&r.endsWith("*/")){for(let a=t;a>=o;a--){let l=e[a];if(l.lastIndexOf("/*")<0)continue;let d=l.trim();return d.startsWith("/*")&&!(n==="rust"&&Iy.test(d))?a:void 0}return}if(n==="elixir"&&r.endsWith('"""')){for(let a=t-1;a>=o;a--)if(e[a].includes('"""'))return/^@\w+\s.*"""\s*$/.test(e[a].trim())?a:void 0;return}if(n==="cpp"&&r.endsWith(">")){for(let a=t;a>=o&&e[a].trim()!=="";a--)if(/^template\b/.test(e[a].trim()))return a;return}if(!/[)\]}]$/.test(r))return;let s=0;for(let a=t;a>=o;a--){let l=e[a];if(l.trim()===""||(s+=$y(l),s>0))return;if(s===0)return Ty(l.trim(),n)?a:void 0}}function Fy(e,t,n){let r=t;for(let o=t-1;o>=0;){let s=e[o].trim();if(s==="")break;if(HR(s,n,o)||Ty(s,n)&&$y(s)===0){r=o--;continue}let a=GR(e,o,n);if(a===void 0)break;r=a,o=a-1}return r}var OR,NR,PR,Bu,Ay,DR,jR,WR,BR,UR,zR,Iy,Oy=z(()=>{"use strict";I();OR=new Set(["swift","kotlin","dart"]),NR=1e4,PR=/^\s*[;,]?\s*(?:\/\/.*)?$/,Bu=e=>/^\s*/.exec(e)[0];Ay=new Set(["typescript","javascript","java","kotlin","scala","dart","swift","go","rust","csharp","c","cpp","php","zig","solidity","hcl","terraform"]),DR=new Set(["python","ruby","shell","elixir","php","hcl","terraform"]),jR=new Set(["lua"]),WR=new Set(["python","typescript","javascript","java","kotlin","scala","dart","swift","elixir"]),BR=new Set(["rust","php"]),UR=new Set(["csharp","cpp"]),zR=200,Iy=/^(?:\/\/!|\/\*!|#!\[)/});function jy(e,t,n,r){let o=_n(e,t,{maxResults:1/0}),s=n===void 0?void 0:VR(e.root,n);n!==void 0&&(o=o.filter(c=>c.file===n||c.file===s));let a=s!==void 0?` in ${s}`:"";if(o.length===0){let c=_n(e,t,{substring:!0,maxResults:5}).map(d=>`${d.file}:${d.line} ${d.parent?d.parent+"/":""}${d.name}`).join(", ");throw new Error(`no symbol matches "${t}"${a}${c?` \u2014 near matches: ${c}`:""}`)}if(r!==void 0){let c=o;if(o=c.filter(d=>d.line===r),!o.length){let d=m=>(m.endLine??m.line)-m.line,u=c.filter(m=>m.line<=r&&r<=(m.endLine??m.line)),f=Math.min(...u.map(d));o=u.filter(m=>d(m)===f)}if(!o.length)throw new Error(`no "${t}"${a} is declared at or spans line ${r} \u2014 candidates: ${Ny(c)}`)}if(o.length===1)return o[0];if(new Set(o.map(c=>c.file)).size===1){let c=o.map(d=>d.line).join(", ");throw new Error(`"${t}" is ambiguous (${o.length} declarations in ${o[0].file}, lines ${c}) \u2014 pass \`line\`: one of ${c}`)}throw new Error(`"${t}" is ambiguous (${o.length} matches: ${Ny(o)}) \u2014 qualify with \`file\` or a Parent/name path, and \`line\` for same-file homonyms`)}function Ny(e){let t=e.slice(0,Uu).map(n=>`${n.file}:${n.line}`).join(", ");return e.length>Uu?`${t}, \u2026 ${e.length-Uu} more`:t}function VR(e,t){let n=Ne(t)?De(e,t):t;return q.normalize(n.replace(/\\/g,"/"))}function JR(e){let t=ps(e);if(!t.ok)throw new Error(`cannot read ${e}`);if(t.binary||t.encoding===null)throw new Error(`cannot edit a binary file: ${e}`);let n=t.encoding;if((n==="utf16le"||n==="utf16be")&&(t.bytes-2)%2)throw new Error("cannot edit malformed UTF-16 source: odd byte length");let r=t.text.split(/(\r?\n)/),o=[],s=[];for(let l=0;lc)??e.newline,l=n?s[t+n-1]:t0&&(s[t-1]=a),o.splice(t,n,...r),s.splice(t,n,...r.map((c,d)=>d===r.length-1?l:a))}function XR(e){return e.replace(/\r\n/g,` +`)}}return n.concise?d.map(u=>({name:u.name,kind:u.kind,file:u.file,line:u.line,...u.parent?{parent:u.parent}:{},...u.body!==void 0?{body:u.body}:{}})):d}function Nt(e,t){let n=ll(e);for(let r of Tn(t)){let o=(n.get(r.name)??[]).filter(s=>!pl.has(s.kind)&&As(r,s));if(o.length)return{reading:r,defs:o.sort((s,a)=>T(s.file,a.file)||s.line-a.line)}}}function hl(e,t){let n=mr(e,t),r=n.length?t:Nt(e,t)?.reading.name;return r===void 0||r===t?{name:t,sites:n}:{name:r,sites:mr(e,r)}}function yl(e,t,n){let r=Nt(e,t);if(!r)return;let o=r.reading.name,s=(c,d)=>`${d}:${c}`,a=new Set;for(let c of n.values())if(c.def.name===o)for(let d of c.callers)a.add(s(d.file,d.line));for(let c of ll(e).get(o)??[])a.add(s(c.file,c.line));let l=mr(e,o).filter(c=>!a.has(s(c.file,c.line)));return{name:t,error:`no tracked callers for "${t}"`,defs:r.defs.map(c=>({name:c.name,kind:c.kind,file:c.file,line:c.line})),unresolvedSites:l.length,sample:l.slice(0,5).map(c=>c.receiver!==void 0?{file:c.file,line:c.line,receiver:c.receiver}:{file:c.file,line:c.line}),hint:l.length?`${l.length} call site(s) name "${o}" but none could be bound to a single definition; raw mode (CLI --raw, MCP raw:true) lists every site, recall mode (--recall, recall:true) relaxes the JS/TS import gate`:`no call site in the index names "${o}"`}}function io(e,t){let n=Nt(e,t),r=n?.defs??[],o=n?.reading.name??t,s=Ns(e),a=s.get(o),l=[...new Set(r.map(g=>g.file))],c=[];for(let g of l){let h=a?.def.file===g?a:s.get(`${o}@${g}`);if(h)for(let _ of h.callers)c.push(l.length>1?{..._,def:g}:{..._})}c.sort((g,h)=>T(g.file,h.file)||g.line-h.line);let d=new Set,f=Pr(e).get(o),m=fy(e),p=new RegExp(`(?{"use strict";$();me();Ze();lr();gt();ce();Lr();Br();pl=new Set(["reexport","reexport-all","default"])});function Iy(e,t,n){if(!LR.has(n)||t<0||t>=e.length)return;let r=Uu(e[t]),o=[{t:"code",close:null,nest:0}],s=0,a=0,l=!1,c=Math.min(e.length,t+DR),d=(u,f,m)=>{let p=e[u];if(jR.test(p.slice(f+1))&&!(m&&u!==t&&(Uu(p)!==r||p.trim()[0]!=="}")))return u};for(let u=t;u1||l||s>0||a>0)continue;let g=e.slice(u+1,c).findIndex(_=>_.trim()!=="");if(g<0)return;let h=e[u+1+g];if(!h.trim().startsWith("{")&&!(/[,:=>|&+\-*/?.]/.test(m)&&Uu(h).length>r.length&&h.startsWith(r)))return}}function WR(e,t,n){let r=e[t];if(n==="swift"){let c=0;for(;e[t+c]==="#";)c++;if(e[t+c]!=='"')return r==="`"?Ay("`"):void 0;let d=e.startsWith('"""',t+c),u=d?'"""':'"';return{frame:{t:"str",quote:u,hashes:c,escapes:c===0,interp:"swift",multiline:d},length:c+u.length}}if(n==="kotlin")return e.startsWith('"""',t)?{frame:{t:"str",quote:'"""',hashes:0,escapes:!1,interp:"dollar",multiline:!0},length:3}:r==='"'?{frame:{t:"str",quote:'"',hashes:0,escapes:!0,interp:"dollar",multiline:!1},length:1}:r==="'"?{frame:{t:"str",quote:"'",hashes:0,escapes:!0,interp:null,multiline:!1},length:1}:r==="`"?Ay("`"):void 0;let o=r==="r"&&(e[t+1]==='"'||e[t+1]==="'")&&!/[\w$]/.test(e[t-1]??""),s=o?t+1:t;if(e[s]!=='"'&&e[s]!=="'")return;let a=e.startsWith(e[s].repeat(3),s),l=a?e[s].repeat(3):e[s];return{frame:{t:"str",quote:l,hashes:0,escapes:!o,interp:o?null:"dollar",multiline:a},length:(o?1:0)+l.length}}function Ay(e){return{frame:{t:"str",quote:e,hashes:0,escapes:!1,interp:null,multiline:!1},length:e.length}}function VR(e,t,n){return t==="rust"&&Ty.test(e)?!1:$y.has(t)&&(e.startsWith("//")||e.startsWith("/*")&&e.endsWith("*/"))||BR.has(t)&&e.startsWith("#")&&!(n===0&&e.startsWith("#!"))?!0:UR.has(t)&&e.startsWith("--")}function Fy(e,t){return zR.has(t)&&/^@[A-Za-z_]/.test(e)||HR.has(t)&&/^#\[/.test(e)||GR.has(t)&&e.startsWith("[")?!0:t==="cpp"&&/^template\b/.test(e)}function Oy(e){let t=0;for(let n of e.replace(/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`/g,""))n==="("||n==="["||n==="{"?t++:(n===")"||n==="]"||n==="}")&&t--;return t}function JR(e,t,n){let r=e[t].trim(),o=Math.max(0,t-qR);if($y.has(n)&&r.endsWith("*/")){for(let a=t;a>=o;a--){let l=e[a];if(l.lastIndexOf("/*")<0)continue;let d=l.trim();return d.startsWith("/*")&&!(n==="rust"&&Ty.test(d))?a:void 0}return}if(n==="elixir"&&r.endsWith('"""')){for(let a=t-1;a>=o;a--)if(e[a].includes('"""'))return/^@\w+\s.*"""\s*$/.test(e[a].trim())?a:void 0;return}if(n==="cpp"&&r.endsWith(">")){for(let a=t;a>=o&&e[a].trim()!=="";a--)if(/^template\b/.test(e[a].trim()))return a;return}if(!/[)\]}]$/.test(r))return;let s=0;for(let a=t;a>=o;a--){let l=e[a];if(l.trim()===""||(s+=Oy(l),s>0))return;if(s===0)return Fy(l.trim(),n)?a:void 0}}function Ny(e,t,n){let r=t;for(let o=t-1;o>=0;){let s=e[o].trim();if(s==="")break;if(VR(s,n,o)||Fy(s,n)&&Oy(s)===0){r=o--;continue}let a=JR(e,o,n);if(a===void 0)break;r=a,o=a-1}return r}var LR,DR,jR,Uu,$y,BR,UR,zR,HR,GR,qR,Ty,Py=H(()=>{"use strict";$();LR=new Set(["swift","kotlin","dart"]),DR=1e4,jR=/^\s*[;,]?\s*(?:\/\/.*)?$/,Uu=e=>/^\s*/.exec(e)[0];$y=new Set(["typescript","javascript","java","kotlin","scala","dart","swift","go","rust","csharp","c","cpp","php","zig","solidity","hcl","terraform"]),BR=new Set(["python","ruby","shell","elixir","php","hcl","terraform"]),UR=new Set(["lua"]),zR=new Set(["python","typescript","javascript","java","kotlin","scala","dart","swift","elixir"]),HR=new Set(["rust","php"]),GR=new Set(["csharp","cpp"]),qR=200,Ty=/^(?:\/\/!|\/\*!|#!\[)/});function By(e,t,n,r){let o=wn(e,t,{maxResults:1/0}),s=n===void 0?void 0:XR(e.root,n);n!==void 0&&(o=o.filter(c=>c.file===n||c.file===s));let a=s!==void 0?` in ${s}`:"";if(o.length===0){let c=wn(e,t,{substring:!0,maxResults:5}).map(d=>`${d.file}:${d.line} ${d.parent?d.parent+"/":""}${d.name}`).join(", ");throw new Error(`no symbol matches "${t}"${a}${c?` \u2014 near matches: ${c}`:""}`)}if(r!==void 0){let c=o;if(o=c.filter(d=>d.line===r),!o.length){let d=m=>(m.endLine??m.line)-m.line,u=c.filter(m=>m.line<=r&&r<=(m.endLine??m.line)),f=Math.min(...u.map(d));o=u.filter(m=>d(m)===f)}if(!o.length)throw new Error(`no "${t}"${a} is declared at or spans line ${r} \u2014 candidates: ${Ly(c)}`)}if(o.length===1)return o[0];if(new Set(o.map(c=>c.file)).size===1){let c=o.map(d=>d.line).join(", ");throw new Error(`"${t}" is ambiguous (${o.length} declarations in ${o[0].file}, lines ${c}) \u2014 pass \`line\`: one of ${c}`)}throw new Error(`"${t}" is ambiguous (${o.length} matches: ${Ly(o)}) \u2014 qualify with \`file\` or a Parent/name path, and \`line\` for same-file homonyms`)}function Ly(e){let t=e.slice(0,zu).map(n=>`${n.file}:${n.line}`).join(", ");return e.length>zu?`${t}, \u2026 ${e.length-zu} more`:t}function XR(e,t){let n=Pe(t)?je(e,t):t;return J.normalize(n.replace(/\\/g,"/"))}function ZR(e){let t=ps(e);if(!t.ok)throw new Error(`cannot read ${e}`);if(t.binary||t.encoding===null)throw new Error(`cannot edit a binary file: ${e}`);let n=t.encoding;if((n==="utf16le"||n==="utf16be")&&(t.bytes-2)%2)throw new Error("cannot edit malformed UTF-16 source: odd byte length");let r=t.text.split(/(\r?\n)/),o=[],s=[];for(let l=0;lc)??e.newline,l=n?s[t+n-1]:t0&&(s[t-1]=a),o.splice(t,n,...r),s.splice(t,n,...r.map((c,d)=>d===r.length-1?l:a))}function QR(e){return e.replace(/\r\n/g,` `).replace(/^\n+|\n+$/g,"").split(` -`)}function ZR(e,t,n=Ke){let r=st(e),o=Ae(r).mode,s;try{s=br(j(Me(r),".codeindex-edit-"))}catch{ot(r,t),Ko(r,o);return}let a=j(s,je(r));try{ot(a,t),Ko(a,o);try{En(a,r)}catch{ot(r,t),Ko(r,o)}}finally{try{n(s,{recursive:!0,force:!0})}catch{}}}function Wy(e,t,n,r){if(r&&r.hash===Re(n)&&r.symbols.some(s=>s.endLine!==void 0)===YR(t))return{symbols:r.symbols,truncated:r.truncated===!0};let o=Ii(e,t,n);return{symbols:o.symbols,truncated:o.truncated===!0}}function QR(e,t){let n=t.symbols.filter(o=>o.name===e.name&&o.line===e.line&&!Dy.has(o.kind)),r=n.find(o=>o.kind===e.kind&&o.parent===e.parent)??n[0];if(!r)throw new Error(`"${e.name}" is no longer declared at ${e.file}:${e.line} \u2014 the file changed after it was indexed; re-scan and retry`);return r}function Py(e,t,n){if(e.endLine!==void 0)return e.endLine;let r=My(t,e.line-1,e.lang);if(r!==void 0)return r+1;let o=Ar(n)!==void 0?"; `codeindex grammars pull` installs its AST grammar":"";throw new Error(`cannot tell where "${e.name}" ends in ${e.file}: ${e.lang} symbols come from the regex tier, which records only the first line${o}. Inserting before the symbol still works; otherwise edit the file directly`)}function eC(e,t,n,r,o,s){let a=[],{index:l,count:c,len:d,target:u}=s,f=l+1,m=l+c,p=l+d,g=d-c,h=n.truncated?void 0:Wy(e,t,o);if(h&&!h.truncated){let y=c?f:l,b=(C,A,S)=>C===void 0||C>=y&&C<=A?"":`-${C>A?C+S:C}`,x=(C,A,S)=>{let w=new Map;for(let E of C){if(Dy.has(E.kind)||E.line>=f&&E.line<=A)continue;let P=b(E.endLine,A,S),N=`${E.kind} ${io(E)} ${E.line>A?E.line+S:E.line}${P}`,L=w.get(N);L?L.n++:w.set(N,{n:1,label:`${io(E)} (${E.kind}, ${P?`lines ${E.line}-${E.endLine}`:`line ${E.line}`})`})}return w},k=x(n.symbols,m,g),v=x(h.symbols,p,0),T=(C,A)=>[...C.keys()].filter(S=>C.get(S).n>(A.get(S)?.n??0)).sort($),F=T(k,v),R=T(v,k);if(F.length||R.length){let C=(S,w)=>S.slice(0,5).map(E=>w.get(E).label).join(", ")+(S.length>5?`, \u2026 ${S.length-5} more`:""),A=[F.length?`lost ${C(F,k)}`:"",R.length?`gained ${C(R,v)}`:""];a.push(`the edit changed declarations outside lines ${f}-${p}: ${A.filter(Boolean).join("; ")}`)}u&&!h.symbols.some(C=>C.line>=f&&C.line<=p&&C.name===u.name&&io(C)===io(u))&&a.push(`"${io(u)}" is no longer declared in lines ${f}-${p}`)}let _=Ly(t,o);if(_?.length){let y=new Set((Ly(t,r)??[]).map(x=>x>m?x+g:x)),b=_.filter(x=>!y.has(x));b.length&&a.push(`the edited file has ${b.length} new syntax error(s), first at line ${b[0]}`)}return a}function Ly(e,t){let n=Ar(e);if(!n||!Le(n))return;let o=Ss(n)?.parse(t);if(o)try{let s=[],a=o.rootNode.hasError?[o.rootNode]:[];for(;a.length;){let l=a.pop();(l.isError||l.isMissing)&&s.push(l.startPosition.row+1);for(let c of l.children)c.hasError&&a.push(c)}return s.sort((l,c)=>l-c)}finally{o.delete()}}function zu(e,t,n,r,o,s={}){let a=jy(e,t,o,s.line),l=j(e.root,a.file),c=JR(l),d=c.text(),u=dr(e).get(a.file),f=u?.ext??un(a.file),m=Wy(a.file,f,d,u),p=QR(a,m),g=XR(n),h,_=0,y=g;if(r==="replace")h=p.line-1,_=Py(p,c.lines,f)-h;else{h=r==="after"?Py(p,c.lines,f):Fy(c.lines,p.line-1,p.lang);let k=qR.has(p.kind);y=[...k&&h>0&&c.lines[h-1].trim()!==""?[""]:[],...g,...k&&h{"use strict";I();Ee();fe();js();gt();Pa();pt();oi();xt();Oy();le();qR=new Set(["function","method","class","interface","struct","trait","enum","def"]),Dy=new Set(["reexport","reexport-all","default"]),Uu=20;YR=e=>{let t=Ar(e);return t!==void 0&&Le(t)};io=e=>{let t=e.parentPath??e.parent;return t?`${t}/${e.name}`:e.name}});function By(e){let t=e.replace(/^mem:/,"").replace(/\.md$/,"");if(!t)throw new Error("memory name is empty");let n=t.split("/");for(let r of n){if(!r||r==="."||r===".."||r.includes("\\"))throw new Error(`invalid memory name: "${e}"`);if(!/^[\w][\w.-]*$/.test(r))throw new Error(`invalid memory name segment: "${r}"`)}return t}function Ju(e,t){let n=st(e);for(let r of[...tC,...t]){n=j(n,r);try{let o=Hn(n);if(o.isSymbolicLink())throw new Error(`memory path contains a symbolic link: ${n}`);if(o.isFile()&&o.nlink>1)throw new Error(`memory path contains a hard link: ${n}`)}catch(o){if(o.code!=="ENOENT")throw o}}return n}function yl(e,t){return Ju(e,`${By(t)}.md`.split("/"))}function oo(e,t,n){let r=yl(e,t);return Zt(Me(r),{recursive:!0}),yl(e,t),ot(r,n.endsWith(` +`)}function eC(e,t,n=Ke){let r=rt(e),o=Me(r).mode,s;try{s=wr(j(Ce(r),".codeindex-edit-"))}catch{it(r,t),Xo(r,o);return}let a=j(s,We(r));try{it(a,t),Xo(a,o);try{Rn(a,r)}catch{it(r,t),Xo(r,o)}}finally{try{n(s,{recursive:!0,force:!0})}catch{}}}function Uy(e,t,n,r){if(r&&r.hash===Re(n)&&r.symbols.some(s=>s.endLine!==void 0)===tC(t))return{symbols:r.symbols,truncated:r.truncated===!0};let o=$i(e,t,n);return{symbols:o.symbols,truncated:o.truncated===!0}}function nC(e,t){let n=t.symbols.filter(o=>o.name===e.name&&o.line===e.line&&!Wy.has(o.kind)),r=n.find(o=>o.kind===e.kind&&o.parent===e.parent)??n[0];if(!r)throw new Error(`"${e.name}" is no longer declared at ${e.file}:${e.line} \u2014 the file changed after it was indexed; re-scan and retry`);return r}function Dy(e,t,n){if(e.endLine!==void 0)return e.endLine;let r=Iy(t,e.line-1,e.lang);if(r!==void 0)return r+1;let o=Ir(n)!==void 0?"; `codeindex grammars pull` installs its AST grammar":"";throw new Error(`cannot tell where "${e.name}" ends in ${e.file}: ${e.lang} symbols come from the regex tier, which records only the first line${o}. Inserting before the symbol still works; otherwise edit the file directly`)}function rC(e,t,n,r,o,s){let a=[],{index:l,count:c,len:d,target:u}=s,f=l+1,m=l+c,p=l+d,g=d-c,h=n.truncated?void 0:Uy(e,t,o);if(h&&!h.truncated){let y=c?f:l,b=(C,M,x)=>C===void 0||C>=y&&C<=M?"":`-${C>M?C+x:C}`,S=(C,M,x)=>{let w=new Map;for(let E of C){if(Wy.has(E.kind)||E.line>=f&&E.line<=M)continue;let N=b(E.endLine,M,x),O=`${E.kind} ${oo(E)} ${E.line>M?E.line+x:E.line}${N}`,L=w.get(O);L?L.n++:w.set(O,{n:1,label:`${oo(E)} (${E.kind}, ${N?`lines ${E.line}-${E.endLine}`:`line ${E.line}`})`})}return w},k=S(n.symbols,m,g),R=S(h.symbols,p,0),I=(C,M)=>[...C.keys()].filter(x=>C.get(x).n>(M.get(x)?.n??0)).sort(T),P=I(k,R),v=I(R,k);if(P.length||v.length){let C=(x,w)=>x.slice(0,5).map(E=>w.get(E).label).join(", ")+(x.length>5?`, \u2026 ${x.length-5} more`:""),M=[P.length?`lost ${C(P,k)}`:"",v.length?`gained ${C(v,R)}`:""];a.push(`the edit changed declarations outside lines ${f}-${p}: ${M.filter(Boolean).join("; ")}`)}u&&!h.symbols.some(C=>C.line>=f&&C.line<=p&&C.name===u.name&&oo(C)===oo(u))&&a.push(`"${oo(u)}" is no longer declared in lines ${f}-${p}`)}let _=jy(t,o);if(_?.length){let y=new Set((jy(t,r)??[]).map(S=>S>m?S+g:S)),b=_.filter(S=>!y.has(S));b.length&&a.push(`the edited file has ${b.length} new syntax error(s), first at line ${b[0]}`)}return a}function jy(e,t){let n=Ir(e);if(!n||!De(n))return;let o=Ss(n)?.parse(t);if(o)try{let s=[],a=o.rootNode.hasError?[o.rootNode]:[];for(;a.length;){let l=a.pop();(l.isError||l.isMissing)&&s.push(l.startPosition.row+1);for(let c of l.children)c.hasError&&a.push(c)}return s.sort((l,c)=>l-c)}finally{o.delete()}}function Hu(e,t,n,r,o,s={}){let a=By(e,t,o,s.line),l=j(e.root,a.file),c=ZR(l),d=c.text(),u=fr(e).get(a.file),f=u?.ext??mn(a.file),m=Uy(a.file,f,d,u),p=nC(a,m),g=QR(n),h,_=0,y=g;if(r==="replace")h=p.line-1,_=Dy(p,c.lines,f)-h;else{h=r==="after"?Dy(p,c.lines,f):Ny(c.lines,p.line-1,p.lang);let k=KR.has(p.kind);y=[...k&&h>0&&c.lines[h-1].trim()!==""?[""]:[],...g,...k&&h{"use strict";$();ke();me();js();gt();La();pt();ai();St();Py();ce();KR=new Set(["function","method","class","interface","struct","trait","enum","def"]),Wy=new Set(["reexport","reexport-all","default"]),zu=20;tC=e=>{let t=Ir(e);return t!==void 0&&De(t)};oo=e=>{let t=e.parentPath??e.parent;return t?`${t}/${e.name}`:e.name}});function zy(e){let t=e.replace(/^mem:/,"").replace(/\.md$/,"");if(!t)throw new Error("memory name is empty");let n=t.split("/");for(let r of n){if(!r||r==="."||r===".."||r.includes("\\"))throw new Error(`invalid memory name: "${e}"`);if(!/^[\w][\w.-]*$/.test(r))throw new Error(`invalid memory name segment: "${r}"`)}return t}function Ku(e,t){let n=rt(e);for(let r of[...sC,...t]){n=j(n,r);try{let o=qn(n);if(o.isSymbolicLink())throw new Error(`memory path contains a symbolic link: ${n}`);if(o.isFile()&&o.nlink>1)throw new Error(`memory path contains a hard link: ${n}`)}catch(o){if(o.code!=="ENOENT")throw o}}return n}function _l(e,t){return Ku(e,`${zy(t)}.md`.split("/"))}function ao(e,t,n){let r=_l(e,t);return Yt(Ce(r),{recursive:!0}),_l(e,t),it(r,n.endsWith(` `)?n:n+` -`),By(t)}function Ku(e,t){try{return ie(yl(e,t),"utf8")}catch{return}}function Xu(e,t){let n=yl(e,t);try{Ae(n)}catch{return!1}return Ke(n),!0}function Zu(e){let t;try{t=Ju(e,[])}catch{return[]}let n=[],r=(o,s)=>{let a;try{a=Gn(o,{withFileTypes:!0})}catch{return}for(let l of a)if(!l.isSymbolicLink()){if(l.isDirectory())r(j(o,l.name),s?`${s}/${l.name}`:l.name);else if(l.isFile()&&l.name.endsWith(".md")){let c=s?`${s}/${l.name.slice(0,-3)}`:l.name.slice(0,-3);try{Ju(e,`${c}.md`.split("/")),n.push(c)}catch{}}}};return r(t,""),n.sort()}var tC,_l=z(()=>{"use strict";I();Ee();fe();tC=[".codeindex","memories"]});function bn(e,t,n){let r=se(e);if(!r)return;let o;try{o=JSON.parse(r)}catch(s){if(o=Or(r),o===void 0){if(t&&n){let a=String(s instanceof Error?s.message:s).split(` -`)[0];n.push(`malformed ${t}: ${a}`)}return}}if(o&&typeof o=="object"&&!Array.isArray(o))return o;t&&n&&n.push(`malformed ${t}: not a JSON object`)}function cn(e,t){let n=new RegExp(`^\\[${bt(t)}\\]\\s*$([\\s\\S]*?)(?=^\\[|$(?![\\s\\S]))`,"m"),r=e.match(n);return r?r[1]:null}function ao(e,t){let n=e.match(new RegExp(`${bt(t)}\\s*=\\s*\\[([^\\]]*)\\]`));return n?n[1].split(/\r?\n/).map(r=>r.replace(/#.*$/,"")).join(` -`).split(",").map(r=>r.trim().replace(/^["']|["']$/g,"")).filter(Boolean):[]}function Vt(e,t){return e?.match(new RegExp(`^\\s*${bt(t)}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]}function ef(e){let t="";for(let n=0;nnC(e,t,n,r),s=()=>rC(e,t),a=()=>sC(e,t),l=()=>iC(e,t),c=()=>oC(e,t),d=()=>aC(e,t,r),u=()=>lC(e,t,r),m=n==="go"?[a,o,s,l,c,d,u]:n==="uv"?[c,o,s,a,l,d,u]:n==="composer"?[d,o,c,s,a,l,u]:n==="gradle"?[o,l,s,a,c,d,u,()=>cC(e,t)]:[o,s,a,l,c,d,u];for(let p of m){let g=p();if(g)return g}}function zy(e){return e.replace(/[\s\S]*?<\/parent>/g,"").replace(/[\s\S]*?<\/dependencies>/g,"").match(/\s*([^<]+?)\s*<\/artifactId>/)?.[1]}function Ws(e,t,n,r,o){let s=t.replace(/^\.\//,"").replace(/\/+$/,"");if(!s||s==="."||n.has(s)||s.split("/").includes(".."))return;let a=dC(e,s,r,o);a&&n.set(s,a)}function uC(e,t){try{return Ae(j(e,t)).isDirectory()}catch{return!1}}function Hy(e,t){let n;try{n=Gn(t?j(e,t):e,{withFileTypes:!0})}catch{return[]}return n.filter(r=>r.isDirectory()&&!r.name.startsWith(".")&&!Uy.has(r.name)).map(r=>t?`${t}/${r.name}`:r.name).sort($)}function Gy(e,t,n,r){if(!(n>Qu))for(let o of Hy(e,t))r.push(o),Gy(e,o,n+1,r)}function fC(e,t){let n=t.split("/").filter(o=>o&&o!==".");if(n.includes(".."))return[];let r=[""];for(let o of n){let s=new Set;if(o==="**")for(let a of r){a&&s.add(a);let l=[];Gy(e,a,0,l);for(let c of l)s.add(c)}else if(o.includes("*")){let a=new RegExp(`^${o.split("*").map(bt).join("[^/]*")}$`);for(let l of r)for(let c of Hy(e,l))a.test(c.split("/").pop())&&s.add(c)}else for(let a of r){let l=a?`${a}/${o}`:o;uC(e,l)&&s.add(l)}if(r=[...s],!r.length)return[]}return r.filter(Boolean)}function bl(e,t,n,r,o){let s=t.replace(/^\.\//,"").replace(/\/+$/,"");if(s){if(!s.includes("*")){Ws(e,s,n,r,o);return}for(let a of fC(e,s))Ws(e,a,n,r,o)}}function mC(e,t){let n=[],r=[],o=(l,c)=>{let d=l.trim();d&&(d.startsWith("!")?r.push(d.slice(1)):n.push({pattern:d,kind:c}))},a=bn(j(e,"package.json"),"package.json",t)?.workspaces;if(Array.isArray(a))for(let l of a)typeof l=="string"&&o(l,"npm");else if(a&&typeof a=="object"&&Array.isArray(a.packages))for(let l of a.packages)typeof l=="string"&&o(l,"npm");for(let l of gC(se(j(e,"pnpm-workspace.yaml"))))o(l,"pnpm");return{positives:n,negations:r}}function Yu(e){let t="";for(let n=0;ntypeof o=="string").map(o=>({pattern:o,kind:"lerna"}));let r=bn(j(e,"nx.json"),"nx.json",t);if(r){let o=r.workspaceLayout??{},s=typeof o.appsDir=="string"?o.appsDir:"apps",a=typeof o.libsDir=="string"?o.libsDir:"libs";return[...new Set([s,a])].map(l=>({pattern:`${l}/*`,kind:"nx"}))}return[]}function yC(e,t,n){let r=se(j(e,"Cargo.toml"));if(!r)return;let o=cn(r,"workspace");if(!o)return;let s=ao(o,"members");if(!s.length)return;let a=ao(o,"exclude").map(ef),l=new Map;for(let c of s)bl(e,c,l,"cargo",n);for(let[c,d]of l)a.some(u=>u.test(c))||t.has(c)||t.set(c,d)}function qy(e,t,n,r){let o;try{o=Gn(t?j(e,t):e,{withFileTypes:!0})}catch{return}if(t&&o.some(a=>a.name==="go.mod"&&!a.isDirectory())&&r.push(t),n>Qu)return;let s=o.filter(a=>a.isDirectory()&&!/^[._]/.test(a.name)&&!Uy.has(a.name)&&!_C.has(a.name)).map(a=>a.name).sort($);for(let a of s)qy(e,t?`${t}/${a}`:a,n+1,r)}function bC(e,t,n){let r=se(j(e,"go.work"));if(!r){if(ne(j(e,"go.work")))return;let s=[];qy(e,"",0,s);for(let a of s)Ws(e,a,t,"go",n);return}let o=[];for(let s of r.matchAll(/^use\s*\(([\s\S]*?)\)/gm))for(let a of s[1].split(/\r?\n/)){let l=a.replace(/\/\/.*$/,"").trim();l&&o.push(l)}for(let s of r.matchAll(/^use\s+([^\s(]+)/gm))o.push(s[1]);for(let s of o)s==="."||s==="./"||Ws(e,s,t,"go",n)}function wC(e,t,n){let r=new Set,o=(s,a)=>{if(a>Qu||r.has(s))return;r.add(s);let l=se(j(e,s,"pom.xml")).replace(//g,"");for(let c of l.matchAll(/([\s\S]*?)<\/modules>/g))for(let d of c[1].matchAll(/\s*([^<]+?)\s*<\/module>/g)){let u=d[1].endsWith(".xml")?q.dirname(d[1]):d[1],f=q.normalize(q.join(s||".",u)).replace(/\/+$/,"");f==="."||f===".."||f.startsWith("../")||(Ws(e,f,t,"maven",n),o(f,a+1))}};o("",0)}function xC(e,t,n){let r=se(j(e,"pyproject.toml"));if(!r)return;let o=cn(r,"tool.uv.workspace");if(!o)return;let s=ao(o,"members");if(!s.length)return;let a=ao(o,"exclude").map(ef),l=new Map;for(let c of s)bl(e,c,l,"uv",n);for(let[c,d]of l)a.some(u=>u.test(c))||t.has(c)||t.set(c,d)}function SC(e,t,n){let o=bn(j(e,"composer.json"),"composer.json",n)?.repositories;if(Array.isArray(o))for(let s of o){if(!s||typeof s!="object")continue;let{type:a,url:l}=s;a==="path"&&typeof l=="string"&&l&&bl(e,l,t,"composer",n)}}function kC(e,t,n){for(let r of["settings.gradle","settings.gradle.kts"]){let o=se(j(e,r));if(!o)continue;let s=o.replace(/\/\*[\s\S]*?\*\//g,"").replace(/(^|[^:])\/\/.*$/gm,"$1");for(let a of s.matchAll(/^[ \t]*include\b[ \t]*(\([^)]*\)|(?:[^\n]*,[ \t]*\r?\n)*[^\n]*)/gm))for(let l of a[1].matchAll(/["']([^"']+)["']/g)){let c=l[1].replace(/^:/,"").replace(/:/g,"/");c&&Ws(e,c,t,"gradle",n)}}}function EC(e,t,n,r){let o=bn(j(e,t.dir,"package.json"),`${t.dir}/package.json`,r);if(!o)return[];let s=new Set;for(let a of["dependencies","devDependencies","peerDependencies"]){let l=o[a];if(!(!l||typeof l!="object"))for(let c of Object.keys(l))c!==t.name&&n.has(c)&&s.add(c)}return[...s]}function Vy(e,t){let n=`${e}/${t}`.split("/"),r=[];for(let o of n)!o||o==="."||(o===".."?r.pop():r.push(o));return r.join("/")}function vC(e,t,n,r){let o=se(j(e,t.dir,"Cargo.toml"));if(!o)return[];let s=new Set;for(let a of["dependencies","dev-dependencies","build-dependencies"]){let l=cn(o,a);if(l)for(let c of l.split(/\r?\n/)){let d=c.match(/^\s*([A-Za-z0-9_-]+)\s*=\s*(.+)$/);if(!d)continue;let u=d[1];if(u!==t.name&&n.has(u)){s.add(u);continue}let f=d[2].match(/path\s*=\s*["']([^"']+)["']/);if(f){let m=r.get(Vy(t.dir,f[1]));m&&m!==t.name&&s.add(m)}}}return[...s]}function RC(e,t,n,r){let o=se(j(e,t.dir,"go.mod"));if(!o)return[];let s=new Set;for(let a of o.matchAll(/^\s*(?:require\s+)?([^\s/(][^\s]*)\s+v[^\s]+/gm)){let l=a[1];l!==t.name&&n.has(l)&&s.add(l)}for(let a of o.matchAll(/^\s*(?:replace\s+)?(\S+)(?:\s+\S+)?\s*=>\s*(\.\.?\/\S+)/gm)){let l=r.get(Vy(t.dir,a[2]));l&&l!==t.name&&s.add(l)}return[...s]}function CC(e,t,n){let r=se(j(e,t.dir,"pom.xml"));if(!r)return[];let o=new Set;for(let s of r.replace(/[\s\S]*?<\/parent>/g,"").matchAll(/([\s\S]*?)<\/dependency>/g)){let a=s[1].match(/\s*([^<]+?)\s*<\/artifactId>/)?.[1];a&&a!==t.name&&n.has(a)&&o.add(a)}return[...o]}function MC(e,t,n){let r=se(j(e,t.dir,"pyproject.toml"));if(!r)return[];let o=new Set,s=cn(r,"project");if(s)for(let l of ao(s,"dependencies")){let c=l.match(/^[A-Za-z0-9_.-]+/)?.[0];c&&c!==t.name&&n.has(c)&&o.add(c)}let a=cn(r,"tool.uv.sources");if(a)for(let l of a.split(/\r?\n/)){let c=l.match(/^\s*([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*workspace\s*=\s*true/);c&&c[1]!==t.name&&n.has(c[1])&&o.add(c[1])}return[...o]}function AC(e,t,n,r){let o=bn(j(e,t.dir,"composer.json"),`${t.dir}/composer.json`,r);if(!o)return[];let s=new Set;for(let a of["require","require-dev"]){let l=o[a];if(!(!l||typeof l!="object"))for(let c of Object.keys(l))c!==t.name&&n.has(c)&&s.add(c)}return[...s]}function IC(e){return e.split("/").map(t=>t.replace(/[-_]+([A-Za-z0-9])/g,(n,r)=>r.toUpperCase())).join(".")}function TC(e,t,n,r,o){for(let s of["build.gradle","build.gradle.kts"]){let a=se(j(e,t.dir,s));if(!a)continue;let l=new Set;for(let c of a.matchAll(/project\s*\(\s*(?:path\s*[:=]\s*)?["']:?([^"']+)["']/g)){let d=c[1].replace(/:/g,"/"),u=r.get(d)??(n.has(d)?d:void 0);u&&u!==t.name&&l.add(u)}for(let c of a.matchAll(/\bprojects((?:\.[A-Za-z_]\w*)+)/g)){let d=c[1].slice(1).split(".");for(let u=d.length;u>0;u--){let f=o.get(d.slice(0,u).join("."));if(f){f!==t.name&&l.add(f);break}}}return[...l]}return[]}function $C(e,t,n,r,o,s){switch(t.kind){case"cargo":return vC(e,t,n,r);case"go":return RC(e,t,n,r);case"maven":return CC(e,t,n);case"uv":return MC(e,t,n);case"composer":return AC(e,t,n,s);case"gradle":return TC(e,t,n,r,o);default:return EC(e,t,n,s)}}function FC(e){let t=new Map(e.map(s=>[s.name,[...s.dependsOn??[]].sort($)])),n=new Map,r=[],o=s=>{n.set(s,"visiting"),r.push(s);for(let a of t.get(s)??[])if(t.has(a)){if(n.get(a)==="visiting")return[...r.slice(r.indexOf(a)),a];if(!n.has(a)){let l=o(a);if(l)return l}}return r.pop(),n.set(s,"done"),null};for(let s of[...t.keys()].sort($))if(!n.has(s)){let a=o(s);if(a)return a}}function OC(e){let t=new Map(e.map(r=>[r.name,new Set(r.dependsOn??[])])),n=[];for(;t.size>0;){let r=[...t.entries()].filter(([,o])=>[...o].every(s=>!t.has(s))).map(([o])=>o).sort($);if(!r.length){n.push(...[...t.keys()].sort($));break}for(let o of r)n.push(o),t.delete(o)}return n}function On(e){let t=[],n=new Map,{positives:r,negations:o}=mC(e,t),s=r.length?r:hC(e,t);if(s.length){let f=new Map;for(let{pattern:p,kind:g}of s)bl(e,p,f,g,t);let m=o.map(ef);for(let[p,g]of f)m.some(h=>h.test(p))||n.set(p,g)}yC(e,n,t),bC(e,n,t),wC(e,n,t),xC(e,n,t),SC(e,n,t),kC(e,n,t);let a=[...n.values()].sort((f,m)=>$(f.dir,m.dir)),l=new Set(a.map(f=>f.name)),c=new Map(a.map(f=>[f.dir,f.name])),d=new Map(a.map(f=>[IC(f.dir),f.name]));for(let f of a){let m=$C(e,f,l,c,d,t);m.length&&(f.dependsOn=m.sort($))}let u=[...a].sort((f,m)=>m.dir.length-f.dir.length);return{packages:a,cycle:FC(a),topoOrder:OC(a),warnings:[...new Set(t)].sort($),packageOf:f=>u.find(m=>f===m.dir||f.startsWith(m.dir+"/"))}}function NC(e){return e.replace(/<(parent|dependencies|dependencyManagement|build|profiles|reporting)>[\s\S]*?<\/\1>/g,"").match(/\s*([^<]+?)\s*<\/version>/)?.[1]}function Jy(e,t,n){let r=j(e,t,n),o=se(r);if(!o)return;let s=l=>typeof l=="string"&&l.trim()?l.trim():void 0,a=(l,c,d)=>c?{manager:l,name:c,...d?{version:d}:{}}:void 0;switch(n){case"package.json":case"composer.json":{let l=bn(r);return a(n==="package.json"?"npm":"composer",s(l?.name),s(l?.version))}case"go.mod":return a("gomod",o.match(/^module\s+"?([^\s"]+)/m)?.[1],void 0);case"Cargo.toml":{let l=cn(o,"package");return a("cargo",Vt(l,"name"),Vt(l,"version"))}case"pyproject.toml":{let l=cn(o,"project"),c=cn(o,"tool.poetry");return a("python",Vt(l,"name")??Vt(c,"name"),Vt(l,"version")??Vt(c,"version"))}case"pom.xml":return a("maven",zy(o),NC(o));default:return}}function wl(e,t){let n=new Map;for(let a of t.fileEdges){if(a.kind!=="import"||a.dangling)continue;let l=e.packageOf(a.from),c=e.packageOf(a.to);if(!l||!c||l===c)continue;let d=`${l.name}\0${c.name}`,u=n.get(d);u||n.set(d,u={from:l,to:c,files:new Set}),u.files.add(a.from)}let r=[];for(let{from:a,to:l,files:c}of n.values()){if(PC.has(a.kind)||a.dependsOn?.includes(l.name))continue;let d=[...c].sort($);r.push({from:a.name,to:l.name,files:d.length,example:d[0]})}let o=[];for(let a of e.packages)if(LC.has(a.kind))for(let l of a.dependsOn??[])n.has(`${a.name}\0${l}`)||o.push({from:a.name,to:l});let s=(a,l)=>$(a.from,l.from)||$(a.to,l.to);return{ok:r.length===0,undeclared:r.sort(s),unusedDeclared:o.sort(s)}}function xl(e,t){let n={packages:e.packages,cycle:e.cycle??null,topoOrder:e.topoOrder};return e.warnings.length&&(n.warnings=e.warnings),t&&(n.check=t),n}var Uy,Qu,pC,_C,PC,LC,Gr=z(()=>{"use strict";I();Ee();fe();Ze();An();le();et();Uy=new Set(["node_modules",".git","dist","build","target","coverage"]),Qu=4;pC=e=>e.trim().replace(/^(["'])(.*)\1$/,"$2").trim();_C=new Set(["vendor","testdata","fixtures","__fixtures__"]);PC=new Set(["nx"]),LC=new Set(["npm","pnpm","lerna","cargo","go"])});function DC(e,t){return e.modules.find(n=>n.slug===t)?.community}function HC(e,t){let n=e.length,r=new Map(e.map((l,c)=>[l,c])),o=Array.from({length:n},()=>new Map);for(let l of t){if(l.dangling)continue;let c=r.get(l.from),d=r.get(l.to);c===void 0||d===void 0||c===d||(o[c].set(d,(o[c].get(d)??0)+l.weight),o[d].set(c,(o[d].get(c)??0)+l.weight))}let s=o.map(l=>{let c=0;for(let d of l.values())c+=d;return c}),a=s.reduce((l,c)=>l+c,0);return{n,adj:o,k:s,twoM:a}}function tf(e){let t=new Map,n=new Array(e.length);for(let r=0;ru);if(o===0)return tf(s);let a=r.slice(),l=!0,c=0;for(;l&&ch-_)){if(g===u)continue;let h=f.get(g)-Ky*r[d]*a[g]/o;h>p+BC&&(p=h,m=g)}a[m]+=r[d],m!==u&&(s[d]=m,l=!0)}}return tf(s)}function qC(e,t,n){let r=Array.from({length:n},()=>new Map);for(let a=0;a{let l=0;for(let c of a.values())l+=c;return l}),s=o.reduce((a,l)=>a+l,0);return{n,adj:r,k:o,twoM:s}}function Xy(e){if(e.n===0)return[];let t=e,n=Array.from({length:e.n},(r,o)=>o);for(let r=0;rn&&n.length>0)}function VC(e,t){let n=t.length,r=new Map;t.forEach((c,d)=>r.set(c,d));let o=Array.from({length:n},()=>new Map);for(let c=0;c{let d=0;for(let u of c.values())d+=u;return d}),a=s.reduce((c,d)=>c+d,0),l=Xy({n,adj:o,k:s,twoM:a});return Zy(l).map(c=>c.map(d=>t[d]))}function JC(e,t,n){let r=[];for(let o of e){if(o.length>UC*n&&o.length>=zC){let s=VC(t,o);if(s.length>1){r.push(...s);continue}}r.push(o)}return r}function KC(e,t){if(e.length!==t.length)return t.length-e.length;for(let n=0;n({id:Number(f),set:new Set(m)})),s=[];e.forEach((f,m)=>{for(let p of o){let g=0;for(let h of f)p.set.has(h)&&g++;g>0&&s.push({ni:m,prevId:p.id,inter:g})}}),s.sort((f,m)=>m.inter-f.inter||f.ni-m.ni||f.prevId-m.prevId);let a=new Map,l=new Set;for(let f of s)a.has(f.ni)||l.has(f.prevId)||(a.set(f.ni,f.prevId),l.add(f.prevId));let c=new Set;for(let f=0;f=0&&mu.slug).sort($),s=HC(o,t),a=Xy(s),c=JC(Zy(a),s,o.length).map(u=>u.map(f=>o[f]).sort($));c.sort(KC);let d=XC(c,n);return c.forEach((u,f)=>{for(let m of u)r.set(m,d[f])}),r}var Ky,jC,WC,BC,UC,zC,rf=z(()=>{"use strict";I();le();Ky=1,jC=20,WC=10,BC=1e-12,UC=.25,zC=10});function Sl(e){let t=new Map,n=new Map;for(let a of e.modules)a.community!==void 0&&t.set(a.slug,a.community),n.set(a.slug,a.tier);let r=new Map,o=(a,l)=>ar.get(o(a.comms[0],a.comms[1]))<=YC).map(a=>({from:a.edge.from,to:a.edge.to,kind:a.edge.kind,weight:a.edge.weight,communities:a.comms,pairEdges:r.get(o(a.comms[0],a.comms[1]))})).sort((a,l)=>a.pairEdges-l.pairEdges||$(a.from,l.from)||$(a.to,l.to)).slice(0,ZC)}function eM(e,t,n){return(e.surprises??Sl(e)).some(o=>o.from===t&&o.to===n)}var ZC,YC,QC,sf=z(()=>{"use strict";I();le();Br();ZC=24,YC=2,QC=Ts});function tM(e){let t={};for(let n of Object.keys(e).sort($))t[n]=e[n];return t}function qr(e){let t={...e,languages:tM(e.languages)};return JSON.stringify(t,null,2)+` -`}var kl=z(()=>{"use strict";I();le()});function BM(e,t){return t!=="string"?!0:e.length>=jM||WM.test(e)}function qM(e){if(!e)return!1;for(let t=0;t")&&!"=!<>+-*/%&|^".includes(e[t-1]??""))return GM.test(e.slice(t+1));return!1}function VM(e){let t=[];for(let n of e)LM.has(n.kind)&&(qM(n.signature)||(n.endLine??n.line)-n.line>DM||t.push(n));return t}function JM(e){return`${e.file.endsWith(".go")&&e.file.includes("/")?e.file.slice(0,e.file.lastIndexOf("/")):e.file}\0${e.holder}`}function ZM(e){if(e.every(n=>KM.test(n.file)))return!0;let t=c_(e[0].file);return XM.has(t)&&e.every(n=>c_(n.file)===t)}function YM(e,t){let n;for(let r of e){let o=r.endLine??r.line;to||(!n||r.line>n.line)&&(n=r)}return n}function Pn(e,t={}){let n=t.minFiles??l_.minFiles,r=t.minCount??l_.minCount,o=new Map;for(let a of e.files){if(!a.literals?.length||!t.includeTests&&Ft(a.rel))continue;let l;for(let c of a.literals){if(t.kinds&&!t.kinds.has(c.kind)||!BM(c.value,c.kind))continue;let d=`${c.kind}\0${c.value}`,u=o.get(d);u||o.set(d,u={value:c.value,kind:c.kind,sites:[]});let f=YM(l??=VM(a.symbols),c.line);u.sites.push(f?{file:a.rel,line:c.line,holder:f.name,holderExported:f.exported}:{file:a.rel,line:c.line})}}let s=[];for(let a of o.values()){let l=new Set(a.sites.map(p=>p.file));if(l.sizep.holder),d=a.sites.filter(p=>!p.holder),u=new Set(c.map(p=>p.holder)),m=new Set(c.map(JM)).size>=2?"competing":c.length>0?"bypassed":"uncentralized";if(a.kind==="number"){if(u.size!==1||d.length===0)continue;m="bypassed"}m==="bypassed"&&d.length===0||s.push({value:a.value,kind:a.kind,tier:m,holders:c.sort(d_),literals:d.sort(d_),files:l.size,count:a.sites.length})}return s.sort((a,l)=>u_(a.tier)-u_(l.tier)||l.files-a.files||l.count-a.count||$(a.value,l.value)),{duplications:s,families:QM(s)}}function d_(e,t){return $(e.file,t.file)||e.line-t.line}function u_(e){return e==="competing"?0:e==="bypassed"?1:2}function QM(e){let t=new Map;for(let r of e){if(r.kind!=="string"||!UM.test(r.value))continue;let o=eA(r.value);if(!o)continue;let s=t.get(o);s?s.push(r):t.set(o,[r])}let n=[];for(let[r,o]of t){if(o.lengtho.files-r.files||o.count-r.count||$(r.prefix,o.prefix)),n}function eA(e){let t=e.startsWith("/")?e.slice(1):e,n=t.search(/[/:]/);if(n<=0)return;let r=(e.startsWith("/")?"/":"")+t.slice(0,n);return r.length>=HM?r:void 0}var f_,l_,LM,DM,jM,WM,UM,zM,HM,GM,KM,XM,c_,Us=z(()=>{"use strict";I();lr();le();f_=24,l_={minFiles:2,minCount:3},LM=new Set(["const","constant","variable","enum","enumerator","property","field","static"]),DM=12,jM=6,WM=/[/:._-]/;UM=/^[/@a-z0-9][\w./:@-]*$/i,zM=2,HM=4,GM=/^\s*(?:async\b|function\b|\(|[A-Za-z_$][\w$]*\s*(?:=>|$))/;KM=/(?:^|\/)\.github\/workflows\//,XM=new Set(["package.json","pyproject.toml","composer.json","go.mod"]),c_=e=>e.slice(e.lastIndexOf("/")+1)});function tA(e,t={}){return Ln(vt(e,t),t)}function Ln(e,t={}){let n=ln(e),{modules:r,moduleOf:o}=du(e),s=Wu(e,n,r,o,t.meta),a=nf(s.modules,s.moduleEdges,t.previousCommunities);for(let m of s.modules){let p=a.get(m.slug);p!==void 0&&(m.community=p)}let l=Au(s),c=Zi(s);for(let m of s.files)c.testFiles.has(m.rel)&&(m.testFile=!0);for(let m of s.modules){let p=c.testedByModule.get(m.slug);p?.length&&(m.testedBy=p)}let d=Sl(s);d.length&&(s.surprises=d);let{duplications:u}=Pn(e);u.length&&(s.literalDuplications=u.slice(0,f_));let f=fu(e,ll(e),t.meta?.schemaVersion);return l.length?{scan:e,graph:s,symbols:f,notes:l}:{scan:e,graph:s,symbols:f}}var vl=z(()=>{"use strict";I();Ut();gt();Ms();cl();rf();Yi();lr();sf();Us();zi()});function iA(e){let t=!1;for(let n=0;n`\`\\${a}\` is not JavaScript regex syntax (the pattern dialect)${m_[o]?`: ${m_[o]}`:""}`;if(o==="<"||o===">")return s(o);if(!/[A-Za-z0-9]/.test(o))continue;if(!sA.has(o))return s(o);if(o==="x"&&!/^[0-9A-Fa-f]{2}/.test(e.slice(n+1))||o==="u"&&!/^[0-9A-Fa-f]{4}/.test(e.slice(n+1)))return s(e.slice(n,n+2));if(o==="c"&&!/^[A-Za-z]/.test(e.slice(n+1)))return s("c");if(o==="k"&&e[n+1]!=="<")return s("k");continue}if(t){if(r==="]")t=!1;else{if(r==="["&&/^\[:\^?[a-z]+:\]/.test(e.slice(n)))return"POSIX classes like [[:alpha:]] are not JavaScript regex syntax (the pattern dialect): use [A-Za-z] or \\p{L}";if((r==="&"||r==="~")&&e[n+1]===r)return`\`${r}${r}\` inside a class is set syntax in other dialects, a literal in JavaScript: escape it`}continue}r==="["&&(t=!0,e[n+1]==="^"&&n++,e[n+1]==="]"&&n++)}}function cf(e,t=!1){let n=t?"i":"";try{return new RegExp(e,`u${n}`)}catch{let r=new RegExp(e,n),o=iA(e);if(o)throw new SyntaxError(`Invalid regular expression: /${e}/: ${o}`);return r}}function oA(e){let t=e.source,n=e.flags.includes("u"),r="",o=!1,s=!1;for(let a=0;a=55296&&u<=57343)return;r+=`\\u{${u.toString(16)}}`,a+=d[0].length}else if(c==="p"||c==="P"){if(!n)return;let d=/^\{[^}]*\}/.exec(t.slice(a+1));if(!d)return;r+=`\\${c}${d[0]}`,a+=d[0].length}else{if(/[A-Za-z0-9]/.test(c))return;c.charCodeAt(0)>127?r+=c:r+=`\\${c}`}continue}if(o){if(l==="]"){if(s)return;o=!1,r+=l}else l==="["||l==="&"||l==="~"||l==="-"&&t[a-1]==="-"?r+=`\\${l}`:r+=l;s=!1;continue}if(l==="[")o=!0,s=!0,r+=l,t[a+1]==="^"&&(r+=t[++a]);else if(l===".")r+="[^\\n\\r\\u{2028}\\u{2029}]";else if(l==="{"){let c=/^\{\d+(?:,\d*)?\}/.exec(t.slice(a));c?(r+=c[0],a+=c[0].length-1):r+="\\{"}else if(l==="}"||l==="]")r+=`\\${l}`;else if(l==="("&&t[a+1]==="?"){let c=/^\(\?(?::|<[A-Za-z_][A-Za-z0-9_]*>)/.exec(t.slice(a));if(!c)return;r+=c[0],a+=c[0].length-1}else r+=l}return o?void 0:r}function aA(e,t){let n=Fp(t.globs?.map(o=>o.replace(/^(!?)\//,"$1"))),r=lA(e,t.scope);return r?n?o=>r(o)&&n(o):r:n}function lA(e,t){if(!t)return null;let n=er(e,t);if(n===".."||n.startsWith("../")||Ne(n))throw new Error(`--scope is outside the repository: ${t}`);return n===""?null:It([n,`${n}/**`])}function df(e,t,n){if(e.length<=n)return e;let r=Math.max(0,Math.min(t-(n>>2),e.length-n)),o=r+n,s=a=>{let l=e.charCodeAt(a);return l>=56320&&l<=57343};return r>0&&s(r)&&r++,o0?"\u2026":"")+e.slice(r,o)+(o$(t.file,n.file)||t.line-n.line)}function dA(e){let t=["--no-config","--no-messages","--color=never","--hidden","--no-require-git","--no-ignore-global","--no-ignore-parent","--no-ignore-dot","--max-filesize",String(e.maxFileBytes??rA)];e.gitignore===!1&&t.push("--no-ignore-vcs");let n=e.ignoreDirs?new Set([".git",...e.ignoreDirs]):vn;for(let r of[...n].sort($))t.push("--glob",`!**/${cA(r)}/**`);t.push("--glob","!**/.codeindex-edit-*/**"),t.push("--glob","!**/.codeindex/**");for(let r of ta)t.push("--iglob",`!**/${r}`);for(let r of na)t.push("--iglob",`!**/*${r}`);t.push("--glob","!*.min.js","--glob","!*.min.css");for(let r of e.globs??[]){let o=r.slice(1).replace(/^\//,"");r.startsWith("!")&&o.endsWith("/**")&&!/[{}[\]\\!]/.test(o)&&t.push("--glob",`!/${o}`)}return e.ignoreCase&&t.push("--ignore-case"),t}function uA(e,t,n,r,o){let s=dA(n),a=$e("rg",[...s,"--files-with-matches","--null","--regexp",t,"./"],{cwd:e,maxBufferBytes:g_});if(a.missing)return;if(a.errorCode||a.status!==0&&a.status!==1&&!a.stdout){let p=a.stderr.split(` -`).map(_=>_.trim()).filter(Boolean),g=p.find(_=>/^error:/.test(_))??p[0]??a.errorCode??`exit ${a.status}`;return{fallback:`${/regex parse error|error parsing|not allowed|impossible to match/i.test(a.stderr)?"ripgrep rejected the pattern":"ripgrep failed"} (${g}); searched with the slower JavaScript engine`}}let l=a.stdout.split("\0").filter(Boolean).map(p=>p.replace(/^\.\//,"")).filter(p=>!r||r(p)).sort($),c=o+1,d=[],u=[],f=(p,g)=>{let h=$e("rg",["--no-config","--no-messages","--json",...n.ignoreCase?["--ignore-case"]:[],"--max-count",String(n.filesWithMatches?1:g),"--regexp",t,"--",...p.map(_=>`./${_}`)],{cwd:e,maxBufferBytes:g_});if(h.errorCode==="ENOBUFS"&&p.length>1){let _=p.length>>1;f(p.slice(0,_),g),f(p.slice(_),g);return}h.errorCode&&u.push(`ripgrep could not search ${p.length===1?p[0]:`${p.length} files`} (${h.errorCode})`);for(let _ of h.stdout.split(` -`)){if(!_.startsWith('{"type":"match"'))continue;let y=JSON.parse(_).data,b=y.lines.text!==void 0?W.from(y.lines.text,"utf8"):W.from(y.lines.bytes??"","base64"),x=y.path.text??W.from(y.path.bytes??"","base64").toString("utf8"),k=b.toString("utf8").replace(/\n$/,""),v=b.subarray(0,y.submatches[0]?.start??0).toString("utf8").length;d.push({file:x.replace(/^\.\//,""),line:y.line_number,col:v+1,text:df(k,v,y_)})}},m=O.platform==="win32"?24e3:512e3;for(let p=0,g=64;pm&&h>p));h++);f(l.slice(p,h),c-d.length),p=h}return __(d),{hits:d.slice(0,o),filesMatched:l.length,truncated:d.length>o,notes:u}}function b_(e,t){let n=new RegExp(e.source,e.flags),r=s=>{let a=s.length;if(a>=2&&s[0]===255&&s[1]===254)return s.subarray(2,2+(a-2&-2)).toString("utf16le");if(a>=2&&s[0]===254&&s[1]===255){let l=W.from(s.subarray(2,2+(a-2&-2)));return l.swap16(),l.toString("utf16le")}if(a>=3&&s[0]===239&&s[1]===187&&s[2]===191)return s.subarray(3).toString("utf8");if(!s.includes(0))return s.toString("utf8")},o=0;for(let s=0;se.deadline){t.emit({stoppedAt:s});return}t.progress(s);let a;try{a=r(t.readFile(e.files[s][1]))}catch{a=void 0}if(!a)continue;let l=a.split(` +`),zy(t)}function Xu(e,t){try{return ie(_l(e,t),"utf8")}catch{return}}function Zu(e,t){let n=_l(e,t);try{Me(n)}catch{return!1}return Ke(n),!0}function Yu(e){let t;try{t=Ku(e,[])}catch{return[]}let n=[],r=(o,s)=>{let a;try{a=Vn(o,{withFileTypes:!0})}catch{return}for(let l of a)if(!l.isSymbolicLink()){if(l.isDirectory())r(j(o,l.name),s?`${s}/${l.name}`:l.name);else if(l.isFile()&&l.name.endsWith(".md")){let c=s?`${s}/${l.name.slice(0,-3)}`:l.name.slice(0,-3);try{Ku(e,`${c}.md`.split("/")),n.push(c)}catch{}}}};return r(t,""),n.sort()}var sC,bl=H(()=>{"use strict";$();ke();me();sC=[".codeindex","memories"]});function xn(e,t,n){let r=re(e);if(!r)return;let o;try{o=JSON.parse(r)}catch(s){if(o=Nr(r),o===void 0){if(t&&n){let a=String(s instanceof Error?s.message:s).split(` +`)[0];n.push(`malformed ${t}: ${a}`)}return}}if(o&&typeof o=="object"&&!Array.isArray(o))return o;t&&n&&n.push(`malformed ${t}: not a JSON object`)}function dn(e,t){let n=new RegExp(`^\\[${wt(t)}\\]\\s*$([\\s\\S]*?)(?=^\\[|$(?![\\s\\S]))`,"m"),r=e.match(n);return r?r[1]:null}function lo(e,t){let n=e.match(new RegExp(`${wt(t)}\\s*=\\s*\\[([^\\]]*)\\]`));return n?n[1].split(/\r?\n/).map(r=>r.replace(/#.*$/,"")).join(` +`).split(",").map(r=>r.trim().replace(/^["']|["']$/g,"")).filter(Boolean):[]}function Vt(e,t){return e?.match(new RegExp(`^\\s*${wt(t)}\\s*=\\s*["']([^"']+)["']`,"m"))?.[1]}function tf(e){let t="";for(let n=0;niC(e,t,n,r),s=()=>oC(e,t),a=()=>aC(e,t),l=()=>lC(e,t),c=()=>cC(e,t),d=()=>dC(e,t,r),u=()=>uC(e,t,r),m=n==="go"?[a,o,s,l,c,d,u]:n==="uv"?[c,o,s,a,l,d,u]:n==="composer"?[d,o,c,s,a,l,u]:n==="gradle"?[o,l,s,a,c,d,u,()=>fC(e,t)]:[o,s,a,l,c,d,u];for(let p of m){let g=p();if(g)return g}}function Gy(e){return e.replace(/[\s\S]*?<\/parent>/g,"").replace(/[\s\S]*?<\/dependencies>/g,"").match(/\s*([^<]+?)\s*<\/artifactId>/)?.[1]}function Ws(e,t,n,r,o){let s=t.replace(/^\.\//,"").replace(/\/+$/,"");if(!s||s==="."||n.has(s)||s.split("/").includes(".."))return;let a=mC(e,s,r,o);a&&n.set(s,a)}function pC(e,t){try{return Me(j(e,t)).isDirectory()}catch{return!1}}function qy(e,t){let n;try{n=Vn(t?j(e,t):e,{withFileTypes:!0})}catch{return[]}return n.filter(r=>r.isDirectory()&&!r.name.startsWith(".")&&!Hy.has(r.name)).map(r=>t?`${t}/${r.name}`:r.name).sort(T)}function Vy(e,t,n,r){if(!(n>ef))for(let o of qy(e,t))r.push(o),Vy(e,o,n+1,r)}function gC(e,t){let n=t.split("/").filter(o=>o&&o!==".");if(n.includes(".."))return[];let r=[""];for(let o of n){let s=new Set;if(o==="**")for(let a of r){a&&s.add(a);let l=[];Vy(e,a,0,l);for(let c of l)s.add(c)}else if(o.includes("*")){let a=new RegExp(`^${o.split("*").map(wt).join("[^/]*")}$`);for(let l of r)for(let c of qy(e,l))a.test(c.split("/").pop())&&s.add(c)}else for(let a of r){let l=a?`${a}/${o}`:o;pC(e,l)&&s.add(l)}if(r=[...s],!r.length)return[]}return r.filter(Boolean)}function wl(e,t,n,r,o){let s=t.replace(/^\.\//,"").replace(/\/+$/,"");if(s){if(!s.includes("*")){Ws(e,s,n,r,o);return}for(let a of gC(e,s))Ws(e,a,n,r,o)}}function hC(e,t){let n=[],r=[],o=(l,c)=>{let d=l.trim();d&&(d.startsWith("!")?r.push(d.slice(1)):n.push({pattern:d,kind:c}))},a=xn(j(e,"package.json"),"package.json",t)?.workspaces;if(Array.isArray(a))for(let l of a)typeof l=="string"&&o(l,"npm");else if(a&&typeof a=="object"&&Array.isArray(a.packages))for(let l of a.packages)typeof l=="string"&&o(l,"npm");for(let l of _C(re(j(e,"pnpm-workspace.yaml"))))o(l,"pnpm");return{positives:n,negations:r}}function Qu(e){let t="";for(let n=0;ntypeof o=="string").map(o=>({pattern:o,kind:"lerna"}));let r=xn(j(e,"nx.json"),"nx.json",t);if(r){let o=r.workspaceLayout??{},s=typeof o.appsDir=="string"?o.appsDir:"apps",a=typeof o.libsDir=="string"?o.libsDir:"libs";return[...new Set([s,a])].map(l=>({pattern:`${l}/*`,kind:"nx"}))}return[]}function wC(e,t,n){let r=re(j(e,"Cargo.toml"));if(!r)return;let o=dn(r,"workspace");if(!o)return;let s=lo(o,"members");if(!s.length)return;let a=lo(o,"exclude").map(tf),l=new Map;for(let c of s)wl(e,c,l,"cargo",n);for(let[c,d]of l)a.some(u=>u.test(c))||t.has(c)||t.set(c,d)}function Jy(e,t,n,r){let o;try{o=Vn(t?j(e,t):e,{withFileTypes:!0})}catch{return}if(t&&o.some(a=>a.name==="go.mod"&&!a.isDirectory())&&r.push(t),n>ef)return;let s=o.filter(a=>a.isDirectory()&&!/^[._]/.test(a.name)&&!Hy.has(a.name)&&!xC.has(a.name)).map(a=>a.name).sort(T);for(let a of s)Jy(e,t?`${t}/${a}`:a,n+1,r)}function SC(e,t,n){let r=re(j(e,"go.work"));if(!r){if(Q(j(e,"go.work")))return;let s=[];Jy(e,"",0,s);for(let a of s)Ws(e,a,t,"go",n);return}let o=[];for(let s of r.matchAll(/^use\s*\(([\s\S]*?)\)/gm))for(let a of s[1].split(/\r?\n/)){let l=a.replace(/\/\/.*$/,"").trim();l&&o.push(l)}for(let s of r.matchAll(/^use\s+([^\s(]+)/gm))o.push(s[1]);for(let s of o)s==="."||s==="./"||Ws(e,s,t,"go",n)}function kC(e,t,n){let r=new Set,o=(s,a)=>{if(a>ef||r.has(s))return;r.add(s);let l=re(j(e,s,"pom.xml")).replace(//g,"");for(let c of l.matchAll(/([\s\S]*?)<\/modules>/g))for(let d of c[1].matchAll(/\s*([^<]+?)\s*<\/module>/g)){let u=d[1].endsWith(".xml")?J.dirname(d[1]):d[1],f=J.normalize(J.join(s||".",u)).replace(/\/+$/,"");f==="."||f===".."||f.startsWith("../")||(Ws(e,f,t,"maven",n),o(f,a+1))}};o("",0)}function EC(e,t,n){let r=re(j(e,"pyproject.toml"));if(!r)return;let o=dn(r,"tool.uv.workspace");if(!o)return;let s=lo(o,"members");if(!s.length)return;let a=lo(o,"exclude").map(tf),l=new Map;for(let c of s)wl(e,c,l,"uv",n);for(let[c,d]of l)a.some(u=>u.test(c))||t.has(c)||t.set(c,d)}function vC(e,t,n){let o=xn(j(e,"composer.json"),"composer.json",n)?.repositories;if(Array.isArray(o))for(let s of o){if(!s||typeof s!="object")continue;let{type:a,url:l}=s;a==="path"&&typeof l=="string"&&l&&wl(e,l,t,"composer",n)}}function RC(e,t,n){for(let r of["settings.gradle","settings.gradle.kts"]){let o=re(j(e,r));if(!o)continue;let s=o.replace(/\/\*[\s\S]*?\*\//g,"").replace(/(^|[^:])\/\/.*$/gm,"$1");for(let a of s.matchAll(/^[ \t]*include\b[ \t]*(\([^)]*\)|(?:[^\n]*,[ \t]*\r?\n)*[^\n]*)/gm))for(let l of a[1].matchAll(/["']([^"']+)["']/g)){let c=l[1].replace(/^:/,"").replace(/:/g,"/");c&&Ws(e,c,t,"gradle",n)}}}function CC(e,t,n,r){let o=xn(j(e,t.dir,"package.json"),`${t.dir}/package.json`,r);if(!o)return[];let s=new Set;for(let a of["dependencies","devDependencies","peerDependencies"]){let l=o[a];if(!(!l||typeof l!="object"))for(let c of Object.keys(l))c!==t.name&&n.has(c)&&s.add(c)}return[...s]}function Ky(e,t){let n=`${e}/${t}`.split("/"),r=[];for(let o of n)!o||o==="."||(o===".."?r.pop():r.push(o));return r.join("/")}function MC(e,t,n,r){let o=re(j(e,t.dir,"Cargo.toml"));if(!o)return[];let s=new Set;for(let a of["dependencies","dev-dependencies","build-dependencies"]){let l=dn(o,a);if(l)for(let c of l.split(/\r?\n/)){let d=c.match(/^\s*([A-Za-z0-9_-]+)\s*=\s*(.+)$/);if(!d)continue;let u=d[1];if(u!==t.name&&n.has(u)){s.add(u);continue}let f=d[2].match(/path\s*=\s*["']([^"']+)["']/);if(f){let m=r.get(Ky(t.dir,f[1]));m&&m!==t.name&&s.add(m)}}}return[...s]}function AC(e,t,n,r){let o=re(j(e,t.dir,"go.mod"));if(!o)return[];let s=new Set;for(let a of o.matchAll(/^\s*(?:require\s+)?([^\s/(][^\s]*)\s+v[^\s]+/gm)){let l=a[1];l!==t.name&&n.has(l)&&s.add(l)}for(let a of o.matchAll(/^\s*(?:replace\s+)?(\S+)(?:\s+\S+)?\s*=>\s*(\.\.?\/\S+)/gm)){let l=r.get(Ky(t.dir,a[2]));l&&l!==t.name&&s.add(l)}return[...s]}function IC(e,t,n){let r=re(j(e,t.dir,"pom.xml"));if(!r)return[];let o=new Set;for(let s of r.replace(/[\s\S]*?<\/parent>/g,"").matchAll(/([\s\S]*?)<\/dependency>/g)){let a=s[1].match(/\s*([^<]+?)\s*<\/artifactId>/)?.[1];a&&a!==t.name&&n.has(a)&&o.add(a)}return[...o]}function $C(e,t,n){let r=re(j(e,t.dir,"pyproject.toml"));if(!r)return[];let o=new Set,s=dn(r,"project");if(s)for(let l of lo(s,"dependencies")){let c=l.match(/^[A-Za-z0-9_.-]+/)?.[0];c&&c!==t.name&&n.has(c)&&o.add(c)}let a=dn(r,"tool.uv.sources");if(a)for(let l of a.split(/\r?\n/)){let c=l.match(/^\s*([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*workspace\s*=\s*true/);c&&c[1]!==t.name&&n.has(c[1])&&o.add(c[1])}return[...o]}function TC(e,t,n,r){let o=xn(j(e,t.dir,"composer.json"),`${t.dir}/composer.json`,r);if(!o)return[];let s=new Set;for(let a of["require","require-dev"]){let l=o[a];if(!(!l||typeof l!="object"))for(let c of Object.keys(l))c!==t.name&&n.has(c)&&s.add(c)}return[...s]}function FC(e){return e.split("/").map(t=>t.replace(/[-_]+([A-Za-z0-9])/g,(n,r)=>r.toUpperCase())).join(".")}function OC(e,t,n,r,o){for(let s of["build.gradle","build.gradle.kts"]){let a=re(j(e,t.dir,s));if(!a)continue;let l=new Set;for(let c of a.matchAll(/project\s*\(\s*(?:path\s*[:=]\s*)?["']:?([^"']+)["']/g)){let d=c[1].replace(/:/g,"/"),u=r.get(d)??(n.has(d)?d:void 0);u&&u!==t.name&&l.add(u)}for(let c of a.matchAll(/\bprojects((?:\.[A-Za-z_]\w*)+)/g)){let d=c[1].slice(1).split(".");for(let u=d.length;u>0;u--){let f=o.get(d.slice(0,u).join("."));if(f){f!==t.name&&l.add(f);break}}}return[...l]}return[]}function NC(e,t,n,r,o,s){switch(t.kind){case"cargo":return MC(e,t,n,r);case"go":return AC(e,t,n,r);case"maven":return IC(e,t,n);case"uv":return $C(e,t,n);case"composer":return TC(e,t,n,s);case"gradle":return OC(e,t,n,r,o);default:return CC(e,t,n,s)}}function PC(e){let t=new Map(e.map(s=>[s.name,[...s.dependsOn??[]].sort(T)])),n=new Map,r=[],o=s=>{n.set(s,"visiting"),r.push(s);for(let a of t.get(s)??[])if(t.has(a)){if(n.get(a)==="visiting")return[...r.slice(r.indexOf(a)),a];if(!n.has(a)){let l=o(a);if(l)return l}}return r.pop(),n.set(s,"done"),null};for(let s of[...t.keys()].sort(T))if(!n.has(s)){let a=o(s);if(a)return a}}function LC(e){let t=new Map(e.map(r=>[r.name,new Set(r.dependsOn??[])])),n=[];for(;t.size>0;){let r=[...t.entries()].filter(([,o])=>[...o].every(s=>!t.has(s))).map(([o])=>o).sort(T);if(!r.length){n.push(...[...t.keys()].sort(T));break}for(let o of r)n.push(o),t.delete(o)}return n}function Pn(e){let t=[],n=new Map,{positives:r,negations:o}=hC(e,t),s=r.length?r:bC(e,t);if(s.length){let f=new Map;for(let{pattern:p,kind:g}of s)wl(e,p,f,g,t);let m=o.map(tf);for(let[p,g]of f)m.some(h=>h.test(p))||n.set(p,g)}wC(e,n,t),SC(e,n,t),kC(e,n,t),EC(e,n,t),vC(e,n,t),RC(e,n,t);let a=[...n.values()].sort((f,m)=>T(f.dir,m.dir)),l=new Set(a.map(f=>f.name)),c=new Map(a.map(f=>[f.dir,f.name])),d=new Map(a.map(f=>[FC(f.dir),f.name]));for(let f of a){let m=NC(e,f,l,c,d,t);m.length&&(f.dependsOn=m.sort(T))}let u=[...a].sort((f,m)=>m.dir.length-f.dir.length);return{packages:a,cycle:PC(a),topoOrder:LC(a),warnings:[...new Set(t)].sort(T),packageOf:f=>u.find(m=>f===m.dir||f.startsWith(m.dir+"/"))}}function DC(e){return e.replace(/<(parent|dependencies|dependencyManagement|build|profiles|reporting)>[\s\S]*?<\/\1>/g,"").match(/\s*([^<]+?)\s*<\/version>/)?.[1]}function Xy(e,t,n){let r=j(e,t,n),o=re(r);if(!o)return;let s=l=>typeof l=="string"&&l.trim()?l.trim():void 0,a=(l,c,d)=>c?{manager:l,name:c,...d?{version:d}:{}}:void 0;switch(n){case"package.json":case"composer.json":{let l=xn(r);return a(n==="package.json"?"npm":"composer",s(l?.name),s(l?.version))}case"go.mod":return a("gomod",o.match(/^module\s+"?([^\s"]+)/m)?.[1],void 0);case"Cargo.toml":{let l=dn(o,"package");return a("cargo",Vt(l,"name"),Vt(l,"version"))}case"pyproject.toml":{let l=dn(o,"project"),c=dn(o,"tool.poetry");return a("python",Vt(l,"name")??Vt(c,"name"),Vt(l,"version")??Vt(c,"version"))}case"pom.xml":return a("maven",Gy(o),DC(o));default:return}}function xl(e,t){let n=new Map;for(let a of t.fileEdges){if(a.kind!=="import"||a.dangling)continue;let l=e.packageOf(a.from),c=e.packageOf(a.to);if(!l||!c||l===c)continue;let d=`${l.name}\0${c.name}`,u=n.get(d);u||n.set(d,u={from:l,to:c,files:new Set}),u.files.add(a.from)}let r=[];for(let{from:a,to:l,files:c}of n.values()){if(jC.has(a.kind)||a.dependsOn?.includes(l.name))continue;let d=[...c].sort(T);r.push({from:a.name,to:l.name,files:d.length,example:d[0]})}let o=[];for(let a of e.packages)if(WC.has(a.kind))for(let l of a.dependsOn??[])n.has(`${a.name}\0${l}`)||o.push({from:a.name,to:l});let s=(a,l)=>T(a.from,l.from)||T(a.to,l.to);return{ok:r.length===0,undeclared:r.sort(s),unusedDeclared:o.sort(s)}}function Sl(e,t){let n={packages:e.packages,cycle:e.cycle??null,topoOrder:e.topoOrder};return e.warnings.length&&(n.warnings=e.warnings),t&&(n.check=t),n}var Hy,ef,yC,xC,jC,WC,qr=H(()=>{"use strict";$();ke();me();Ze();$n();ce();et();Hy=new Set(["node_modules",".git","dist","build","target","coverage"]),ef=4;yC=e=>e.trim().replace(/^(["'])(.*)\1$/,"$2").trim();xC=new Set(["vendor","testdata","fixtures","__fixtures__"]);jC=new Set(["nx"]),WC=new Set(["npm","pnpm","lerna","cargo","go"])});function BC(e,t){return e.modules.find(n=>n.slug===t)?.community}function VC(e,t){let n=e.length,r=new Map(e.map((l,c)=>[l,c])),o=Array.from({length:n},()=>new Map);for(let l of t){if(l.dangling)continue;let c=r.get(l.from),d=r.get(l.to);c===void 0||d===void 0||c===d||(o[c].set(d,(o[c].get(d)??0)+l.weight),o[d].set(c,(o[d].get(c)??0)+l.weight))}let s=o.map(l=>{let c=0;for(let d of l.values())c+=d;return c}),a=s.reduce((l,c)=>l+c,0);return{n,adj:o,k:s,twoM:a}}function nf(e){let t=new Map,n=new Array(e.length);for(let r=0;ru);if(o===0)return nf(s);let a=r.slice(),l=!0,c=0;for(;l&&ch-_)){if(g===u)continue;let h=f.get(g)-Zy*r[d]*a[g]/o;h>p+HC&&(p=h,m=g)}a[m]+=r[d],m!==u&&(s[d]=m,l=!0)}}return nf(s)}function KC(e,t,n){let r=Array.from({length:n},()=>new Map);for(let a=0;a{let l=0;for(let c of a.values())l+=c;return l}),s=o.reduce((a,l)=>a+l,0);return{n,adj:r,k:o,twoM:s}}function Yy(e){if(e.n===0)return[];let t=e,n=Array.from({length:e.n},(r,o)=>o);for(let r=0;rn&&n.length>0)}function XC(e,t){let n=t.length,r=new Map;t.forEach((c,d)=>r.set(c,d));let o=Array.from({length:n},()=>new Map);for(let c=0;c{let d=0;for(let u of c.values())d+=u;return d}),a=s.reduce((c,d)=>c+d,0),l=Yy({n,adj:o,k:s,twoM:a});return Qy(l).map(c=>c.map(d=>t[d]))}function ZC(e,t,n){let r=[];for(let o of e){if(o.length>GC*n&&o.length>=qC){let s=XC(t,o);if(s.length>1){r.push(...s);continue}}r.push(o)}return r}function YC(e,t){if(e.length!==t.length)return t.length-e.length;for(let n=0;n({id:Number(f),set:new Set(m)})),s=[];e.forEach((f,m)=>{for(let p of o){let g=0;for(let h of f)p.set.has(h)&&g++;g>0&&s.push({ni:m,prevId:p.id,inter:g})}}),s.sort((f,m)=>m.inter-f.inter||f.ni-m.ni||f.prevId-m.prevId);let a=new Map,l=new Set;for(let f of s)a.has(f.ni)||l.has(f.prevId)||(a.set(f.ni,f.prevId),l.add(f.prevId));let c=new Set;for(let f=0;f=0&&mu.slug).sort(T),s=VC(o,t),a=Yy(s),c=ZC(Qy(a),s,o.length).map(u=>u.map(f=>o[f]).sort(T));c.sort(YC);let d=QC(c,n);return c.forEach((u,f)=>{for(let m of u)r.set(m,d[f])}),r}var Zy,UC,zC,HC,GC,qC,sf=H(()=>{"use strict";$();ce();Zy=1,UC=20,zC=10,HC=1e-12,GC=.25,qC=10});function kl(e){let t=new Map,n=new Map;for(let a of e.modules)a.community!==void 0&&t.set(a.slug,a.community),n.set(a.slug,a.tier);let r=new Map,o=(a,l)=>ar.get(o(a.comms[0],a.comms[1]))<=tM).map(a=>({from:a.edge.from,to:a.edge.to,kind:a.edge.kind,weight:a.edge.weight,communities:a.comms,pairEdges:r.get(o(a.comms[0],a.comms[1]))})).sort((a,l)=>a.pairEdges-l.pairEdges||T(a.from,l.from)||T(a.to,l.to)).slice(0,eM)}function rM(e,t,n){return(e.surprises??kl(e)).some(o=>o.from===t&&o.to===n)}var eM,tM,nM,of=H(()=>{"use strict";$();ce();Ur();eM=24,tM=2,nM=$s});function sM(e){let t={};for(let n of Object.keys(e).sort(T))t[n]=e[n];return t}function Vr(e){let t={...e,languages:sM(e.languages)};return JSON.stringify(t,null,2)+` +`}var El=H(()=>{"use strict";$();ce()});function HM(e,t){return t!=="string"?!0:e.length>=UM||zM.test(e)}function KM(e){if(!e)return!1;for(let t=0;t")&&!"=!<>+-*/%&|^".includes(e[t-1]??""))return JM.test(e.slice(t+1));return!1}function XM(e){let t=[];for(let n of e)WM.has(n.kind)&&(KM(n.signature)||(n.endLine??n.line)-n.line>BM||t.push(n));return t}function ZM(e){return`${e.file.endsWith(".go")&&e.file.includes("/")?e.file.slice(0,e.file.lastIndexOf("/")):e.file}\0${e.holder}`}function eA(e){if(e.every(n=>YM.test(n.file)))return!0;let t=u_(e[0].file);return QM.has(t)&&e.every(n=>u_(n.file)===t)}function tA(e,t){let n;for(let r of e){let o=r.endLine??r.line;to||(!n||r.line>n.line)&&(n=r)}return n}function Dn(e,t={}){let n=t.minFiles??d_.minFiles,r=t.minCount??d_.minCount,o=new Map;for(let a of e.files){if(!a.literals?.length||!t.includeTests&&Ft(a.rel))continue;let l;for(let c of a.literals){if(t.kinds&&!t.kinds.has(c.kind)||!HM(c.value,c.kind))continue;let d=`${c.kind}\0${c.value}`,u=o.get(d);u||o.set(d,u={value:c.value,kind:c.kind,sites:[]});let f=tA(l??=XM(a.symbols),c.line);u.sites.push(f?{file:a.rel,line:c.line,holder:f.name,holderExported:f.exported}:{file:a.rel,line:c.line})}}let s=[];for(let a of o.values()){let l=new Set(a.sites.map(p=>p.file));if(l.sizep.holder),d=a.sites.filter(p=>!p.holder),u=new Set(c.map(p=>p.holder)),m=new Set(c.map(ZM)).size>=2?"competing":c.length>0?"bypassed":"uncentralized";if(a.kind==="number"){if(u.size!==1||d.length===0)continue;m="bypassed"}m==="bypassed"&&d.length===0||s.push({value:a.value,kind:a.kind,tier:m,holders:c.sort(f_),literals:d.sort(f_),files:l.size,count:a.sites.length})}return s.sort((a,l)=>m_(a.tier)-m_(l.tier)||l.files-a.files||l.count-a.count||T(a.value,l.value)),{duplications:s,families:nA(s)}}function f_(e,t){return T(e.file,t.file)||e.line-t.line}function m_(e){return e==="competing"?0:e==="bypassed"?1:2}function nA(e){let t=new Map;for(let r of e){if(r.kind!=="string"||!GM.test(r.value))continue;let o=rA(r.value);if(!o)continue;let s=t.get(o);s?s.push(r):t.set(o,[r])}let n=[];for(let[r,o]of t){if(o.lengtho.files-r.files||o.count-r.count||T(r.prefix,o.prefix)),n}function rA(e){let t=e.startsWith("/")?e.slice(1):e,n=t.search(/[/:]/);if(n<=0)return;let r=(e.startsWith("/")?"/":"")+t.slice(0,n);return r.length>=VM?r:void 0}var p_,d_,WM,BM,UM,zM,GM,qM,VM,JM,YM,QM,u_,Us=H(()=>{"use strict";$();dr();ce();p_=24,d_={minFiles:2,minCount:3},WM=new Set(["const","constant","variable","enum","enumerator","property","field","static"]),BM=12,UM=6,zM=/[/:._-]/;GM=/^[/@a-z0-9][\w./:@-]*$/i,qM=2,VM=4,JM=/^\s*(?:async\b|function\b|\(|[A-Za-z_$][\w$]*\s*(?:=>|$))/;YM=/(?:^|\/)\.github\/workflows\//,QM=new Set(["package.json","pyproject.toml","composer.json","go.mod"]),u_=e=>e.slice(e.lastIndexOf("/")+1)});function sA(e,t={}){return jn(Rt(e,t),t)}function jn(e,t={}){let n=cn(e),{modules:r,moduleOf:o}=uu(e),s=Bu(e,n,r,o,t.meta),a=rf(s.modules,s.moduleEdges,t.previousCommunities);for(let m of s.modules){let p=a.get(m.slug);p!==void 0&&(m.community=p)}let l=Iu(s),c=Yi(s);for(let m of s.files)c.testFiles.has(m.rel)&&(m.testFile=!0);for(let m of s.modules){let p=c.testedByModule.get(m.slug);p?.length&&(m.testedBy=p)}let d=kl(s);d.length&&(s.surprises=d);let{duplications:u}=Dn(e);u.length&&(s.literalDuplications=u.slice(0,p_));let f=mu(e,cl(e),t.meta?.schemaVersion);return l.length?{scan:e,graph:s,symbols:f,notes:l}:{scan:e,graph:s,symbols:f}}var Rl=H(()=>{"use strict";$();Ut();gt();Ms();dl();sf();Qi();dr();of();Us();Hi()});function lA(e){let t=!1;for(let n=0;n`\`\\${a}\` is not JavaScript regex syntax (the pattern dialect)${g_[o]?`: ${g_[o]}`:""}`;if(o==="<"||o===">")return s(o);if(!/[A-Za-z0-9]/.test(o))continue;if(!aA.has(o))return s(o);if(o==="x"&&!/^[0-9A-Fa-f]{2}/.test(e.slice(n+1))||o==="u"&&!/^[0-9A-Fa-f]{4}/.test(e.slice(n+1)))return s(e.slice(n,n+2));if(o==="c"&&!/^[A-Za-z]/.test(e.slice(n+1)))return s("c");if(o==="k"&&e[n+1]!=="<")return s("k");continue}if(t){if(r==="]")t=!1;else{if(r==="["&&/^\[:\^?[a-z]+:\]/.test(e.slice(n)))return"POSIX classes like [[:alpha:]] are not JavaScript regex syntax (the pattern dialect): use [A-Za-z] or \\p{L}";if((r==="&"||r==="~")&&e[n+1]===r)return`\`${r}${r}\` inside a class is set syntax in other dialects, a literal in JavaScript: escape it`}continue}r==="["&&(t=!0,e[n+1]==="^"&&n++,e[n+1]==="]"&&n++)}}function df(e,t=!1){let n=t?"i":"";try{return new RegExp(e,`u${n}`)}catch{let r=new RegExp(e,n),o=lA(e);if(o)throw new SyntaxError(`Invalid regular expression: /${e}/: ${o}`);return r}}function cA(e){let t=e.source,n=e.flags.includes("u"),r="",o=!1,s=!1;for(let a=0;a=55296&&u<=57343)return;r+=`\\u{${u.toString(16)}}`,a+=d[0].length}else if(c==="p"||c==="P"){if(!n)return;let d=/^\{[^}]*\}/.exec(t.slice(a+1));if(!d)return;r+=`\\${c}${d[0]}`,a+=d[0].length}else{if(/[A-Za-z0-9]/.test(c))return;c.charCodeAt(0)>127?r+=c:r+=`\\${c}`}continue}if(o){if(l==="]"){if(s)return;o=!1,r+=l}else l==="["||l==="&"||l==="~"||l==="-"&&t[a-1]==="-"?r+=`\\${l}`:r+=l;s=!1;continue}if(l==="[")o=!0,s=!0,r+=l,t[a+1]==="^"&&(r+=t[++a]);else if(l===".")r+="[^\\n\\r\\u{2028}\\u{2029}]";else if(l==="{"){let c=/^\{\d+(?:,\d*)?\}/.exec(t.slice(a));c?(r+=c[0],a+=c[0].length-1):r+="\\{"}else if(l==="}"||l==="]")r+=`\\${l}`;else if(l==="("&&t[a+1]==="?"){let c=/^\(\?(?::|<[A-Za-z_][A-Za-z0-9_]*>)/.exec(t.slice(a));if(!c)return;r+=c[0],a+=c[0].length-1}else r+=l}return o?void 0:r}function dA(e,t){let n=Op(t.globs?.map(o=>o.replace(/^(!?)\//,"$1"))),r=uA(e,t.scope);return r?n?o=>r(o)&&n(o):r:n}function uA(e,t){if(!t)return null;let n=nr(e,t);if(n===".."||n.startsWith("../")||Pe(n))throw new Error(`--scope is outside the repository: ${t}`);return n===""?null:It([n,`${n}/**`])}function uf(e,t,n){if(e.length<=n)return e;let r=Math.max(0,Math.min(t-(n>>2),e.length-n)),o=r+n,s=a=>{let l=e.charCodeAt(a);return l>=56320&&l<=57343};return r>0&&s(r)&&r++,o0?"\u2026":"")+e.slice(r,o)+(oT(t.file,n.file)||t.line-n.line)}function mA(e){let t=["--no-config","--no-messages","--color=never","--hidden","--no-require-git","--no-ignore-global","--no-ignore-parent","--no-ignore-dot","--max-filesize",String(e.maxFileBytes??oA)];e.gitignore===!1&&t.push("--no-ignore-vcs");let n=e.ignoreDirs?new Set([".git",...e.ignoreDirs]):Cn;for(let r of[...n].sort(T))t.push("--glob",`!**/${fA(r)}/**`);t.push("--glob","!**/.codeindex-edit-*/**"),t.push("--glob","!**/.codeindex/**");for(let r of na)t.push("--iglob",`!**/${r}`);for(let r of ra)t.push("--iglob",`!**/*${r}`);t.push("--glob","!*.min.js","--glob","!*.min.css");for(let r of e.globs??[]){let o=r.slice(1).replace(/^\//,"");r.startsWith("!")&&o.endsWith("/**")&&!/[{}[\]\\!]/.test(o)&&t.push("--glob",`!/${o}`)}return e.ignoreCase&&t.push("--ignore-case"),t}function pA(e,t,n,r,o){let s=mA(n),a=$e("rg",[...s,"--files-with-matches","--null","--regexp",t,"./"],{cwd:e,maxBufferBytes:y_});if(a.missing)return;if(a.errorCode||a.status!==0&&a.status!==1&&!a.stdout){let p=a.stderr.split(` +`).map(_=>_.trim()).filter(Boolean),g=p.find(_=>/^error:/.test(_))??p[0]??a.errorCode??`exit ${a.status}`;return{fallback:`${/regex parse error|error parsing|not allowed|impossible to match/i.test(a.stderr)?"ripgrep rejected the pattern":"ripgrep failed"} (${g}); searched with the slower JavaScript engine`}}let l=a.stdout.split("\0").filter(Boolean).map(p=>p.replace(/^\.\//,"")).filter(p=>!r||r(p)).sort(T),c=o+1,d=[],u=[],f=(p,g)=>{let h=$e("rg",["--no-config","--no-messages","--json",...n.ignoreCase?["--ignore-case"]:[],"--max-count",String(n.filesWithMatches?1:g),"--regexp",t,"--",...p.map(_=>`./${_}`)],{cwd:e,maxBufferBytes:y_});if(h.errorCode==="ENOBUFS"&&p.length>1){let _=p.length>>1;f(p.slice(0,_),g),f(p.slice(_),g);return}h.errorCode&&u.push(`ripgrep could not search ${p.length===1?p[0]:`${p.length} files`} (${h.errorCode})`);for(let _ of h.stdout.split(` +`)){if(!_.startsWith('{"type":"match"'))continue;let y=JSON.parse(_).data,b=y.lines.text!==void 0?W.from(y.lines.text,"utf8"):W.from(y.lines.bytes??"","base64"),S=y.path.text??W.from(y.path.bytes??"","base64").toString("utf8"),k=b.toString("utf8").replace(/\n$/,""),R=b.subarray(0,y.submatches[0]?.start??0).toString("utf8").length;d.push({file:S.replace(/^\.\//,""),line:y.line_number,col:R+1,text:uf(k,R,b_)})}},m=F.platform==="win32"?24e3:512e3;for(let p=0,g=64;pm&&h>p));h++);f(l.slice(p,h),c-d.length),p=h}return w_(d),{hits:d.slice(0,o),filesMatched:l.length,truncated:d.length>o,notes:u}}function x_(e,t){let n=new RegExp(e.source,e.flags),r=s=>{let a=s.length;if(a>=2&&s[0]===255&&s[1]===254)return s.subarray(2,2+(a-2&-2)).toString("utf16le");if(a>=2&&s[0]===254&&s[1]===255){let l=W.from(s.subarray(2,2+(a-2&-2)));return l.swap16(),l.toString("utf16le")}if(a>=3&&s[0]===239&&s[1]===187&&s[2]===191)return s.subarray(3).toString("utf8");if(!s.includes(0))return s.toString("utf8")},o=0;for(let s=0;se.deadline){t.emit({stoppedAt:s});return}t.progress(s);let a;try{a=r(t.readFile(e.files[s][1]))}catch{a=void 0}if(!a)continue;let l=a.split(` `);a.endsWith(` -`)&&l.pop();let c=[],d=!1;for(let u=0;u=e.want||(o++,c.push([u+1,f.index+1,t.clip(l[u],f.index,e.textMax)]),e.firstOnly)))break}d&&t.emit({i:s,hits:c})}t.emit({done:!0})}function mA(e,t){let n,r,o;try{o=new Int32Array(new SharedArrayBuffer(8));let s=new za;r=s.port1,n=new vs(fA,{eval:!0,workerData:{port:s.port2,sig:o.buffer,job:e},transferList:[s.port2]}),n.unref()}catch{let s;return b_(e,{readFile:a=>ie(a),clip:df,emit:a=>"stoppedAt"in a?s=a.stoppedAt:t(a),progress:()=>{}}),s===void 0?{}:{stoppedAt:s}}try{for(;;){let s=Atomics.load(o,0),a=void 0;if(a){let c=a.message;if("error"in c)throw new Error(`grep worker failed: ${c.error}`);if("stoppedAt"in c)return{stoppedAt:c.stoppedAt};if("done"in c)return{};t(c);continue}let l=e.deadline-Date.now();if(l<=0){let c=Atomics.load(o,1);for(let d;d=void 0;)"i"in d.message&&d.message.i!r||r(g.rel)).map(g=>[g.rel,g.abs]).sort((g,h)=>$(g[0],h[0])),c={source:t.source,flags:t.flags,files:l,want:o+1,firstOnly:n.filesWithMatches===!0,textMax:y_,deadline:s},d=[],u=0,{stoppedAt:f}=mA(c,g=>{if(!("i"in g))return;u++;let h=l[g.i][0];for(let[_,y,b]of g.hits)d.push({file:h,line:_,col:y,text:b})}),m=[],p=f!==void 0;return p&&m.push(`the JavaScript regex engine ran out of its ${n.timeoutMs??h_} ms budget in ${l[f]?.[0]??"the last file"}: hits cover only the ${f} file${f===1?"":"s"} before it in path order \u2014 simplify the pattern, narrow scope/globs, or raise the budget (--timeout-ms)`),{hits:__(d).slice(0,o),filesMatched:u,truncated:d.length>o,notes:m,timedOut:p}}function zs(e,t,n={}){let r=Date.now()+(n.timeoutMs??h_),o=cf(t,n.ignoreCase),s=n.maxHits??nA,a=aA(e,n),l=[],c;if(!n.noRipgrep&&Yt("rg")){let d=oA(o),u=d===void 0?void 0:uA(e,d,n,a,s);u&&"fallback"in u?l.push(u.fallback):u?c=u:d===void 0&&l.push("the pattern uses JavaScript-only syntax (lookaround, backreference\u2026); searched with the slower JavaScript engine")}if(c??=pA(e,o,n,a,s,r),l.push(...c.notes),c.truncated){let d=n.filesWithMatches?`${s} matching files by path`:`${s} hits by (file, line)`;l.push(`showing the first ${d}; ${c.filesMatched} files match in all \u2014 raise maxHits (--max-hits) or narrow scope/globs for the rest`)}return{hits:c.hits,truncated:c.truncated,filesMatched:c.filesMatched,timedOut:c.timedOut??!1,notes:l}}function gA(e,t,n={}){return zs(e,t,n).hits}var nA,h_,rA,y_,sA,m_,p_,cA,g_,fA,co=z(()=>{"use strict";I();Kd();Ee();fe();Ze();yi();et();le();Ut();nA=200,h_=1e4,rA=1024*1024,y_=300,sA=new Set("bBdDwWsSfnrtvcxuk0123456789"),m_={A:"use ^",z:"use $",Z:"use $",Q:"escape the metacharacters instead",E:"escape the metacharacters instead",h:"use [ \\t]",p:"\\p{\u2026} needs a pattern that is otherwise valid with the u flag",P:"\\P{\u2026} needs a pattern that is otherwise valid with the u flag","<":"use \\b",">":"use \\b"};p_={w:"[:word:]",W:"[:^word:]",d:"[:digit:]",D:"[:^digit:]"};cA=e=>e.replace(/[\\*?[\]{}!]/g,t=>`\\${t}`);g_=256*1024*1024;fA=`var __name = (fn) => fn; +`)&&l.pop();let c=[],d=!1;for(let u=0;u=e.want||(o++,c.push([u+1,f.index+1,t.clip(l[u],f.index,e.textMax)]),e.firstOnly)))break}d&&t.emit({i:s,hits:c})}t.emit({done:!0})}function hA(e,t){let n,r,o;try{o=new Int32Array(new SharedArrayBuffer(8));let s=new Ha;r=s.port1,n=new vs(gA,{eval:!0,workerData:{port:s.port2,sig:o.buffer,job:e},transferList:[s.port2]}),n.unref()}catch{let s;return x_(e,{readFile:a=>ie(a),clip:uf,emit:a=>"stoppedAt"in a?s=a.stoppedAt:t(a),progress:()=>{}}),s===void 0?{}:{stoppedAt:s}}try{for(;;){let s=Atomics.load(o,0),a=void 0;if(a){let c=a.message;if("error"in c)throw new Error(`grep worker failed: ${c.error}`);if("stoppedAt"in c)return{stoppedAt:c.stoppedAt};if("done"in c)return{};t(c);continue}let l=e.deadline-Date.now();if(l<=0){let c=Atomics.load(o,1);for(let d;d=void 0;)"i"in d.message&&d.message.i!r||r(g.rel)).map(g=>[g.rel,g.abs]).sort((g,h)=>T(g[0],h[0])),c={source:t.source,flags:t.flags,files:l,want:o+1,firstOnly:n.filesWithMatches===!0,textMax:b_,deadline:s},d=[],u=0,{stoppedAt:f}=hA(c,g=>{if(!("i"in g))return;u++;let h=l[g.i][0];for(let[_,y,b]of g.hits)d.push({file:h,line:_,col:y,text:b})}),m=[],p=f!==void 0;return p&&m.push(`the JavaScript regex engine ran out of its ${n.timeoutMs??__} ms budget in ${l[f]?.[0]??"the last file"}: hits cover only the ${f} file${f===1?"":"s"} before it in path order \u2014 simplify the pattern, narrow scope/globs, or raise the budget (--timeout-ms)`),{hits:w_(d).slice(0,o),filesMatched:u,truncated:d.length>o,notes:m,timedOut:p}}function zs(e,t,n={}){let r=Date.now()+(n.timeoutMs??__),o=df(t,n.ignoreCase),s=n.maxHits??iA,a=dA(e,n),l=[],c;if(!n.noRipgrep&&Qt("rg")){let d=cA(o),u=d===void 0?void 0:pA(e,d,n,a,s);u&&"fallback"in u?l.push(u.fallback):u?c=u:d===void 0&&l.push("the pattern uses JavaScript-only syntax (lookaround, backreference\u2026); searched with the slower JavaScript engine")}if(c??=yA(e,o,n,a,s,r),l.push(...c.notes),c.truncated){let d=n.filesWithMatches?`${s} matching files by path`:`${s} hits by (file, line)`;l.push(`showing the first ${d}; ${c.filesMatched} files match in all \u2014 raise maxHits (--max-hits) or narrow scope/globs for the rest`)}return{hits:c.hits,truncated:c.truncated,filesMatched:c.filesMatched,timedOut:c.timedOut??!1,notes:l}}function _A(e,t,n={}){return zs(e,t,n).hits}var iA,__,oA,b_,aA,g_,h_,fA,y_,gA,uo=H(()=>{"use strict";$();Xd();ke();me();Ze();_i();et();ce();Ut();iA=200,__=1e4,oA=1024*1024,b_=300,aA=new Set("bBdDwWsSfnrtvcxuk0123456789"),g_={A:"use ^",z:"use $",Z:"use $",Q:"escape the metacharacters instead",E:"escape the metacharacters instead",h:"use [ \\t]",p:"\\p{\u2026} needs a pattern that is otherwise valid with the u flag",P:"\\P{\u2026} needs a pattern that is otherwise valid with the u flag","<":"use \\b",">":"use \\b"};h_={w:"[:word:]",W:"[:^word:]",d:"[:digit:]",D:"[:^digit:]"};fA=e=>e.replace(/[\\*?[\]{}!]/g,t=>`\\${t}`);y_=256*1024*1024;gA=`var __name = (fn) => fn; const { workerData } = require("node:worker_threads"); const { readFileSync } = require("node:fs"); const { port, sig, job } = workerData; const s = new Int32Array(sig); -const clip = ${df.toString()}; +const clip = ${uf.toString()}; const emit = (ev) => { port.postMessage(ev); Atomics.add(s, 0, 1); Atomics.notify(s, 0); }; try { - (${b_.toString()})(job, { readFile: readFileSync, clip, emit, progress: (i) => Atomics.store(s, 1, i) }); + (${x_.toString()})(job, { readFile: readFileSync, clip, emit, progress: (i) => Atomics.store(s, 1, i) }); } catch (e) { emit({ error: String(e && e.message || e) }); } -`});function Dn(e){let t=O.env.CODEINDEX_EMBED_DIR,n=[];t&&n.push(t),e&&n.push(j(e,".codeindex",w_)),n.push(j(O.cwd(),".codeindex",w_));for(let r of n)if(ne(j(r,"model.json")))return r}function _A(e){return Dn(e)!==void 0}function uf(e,t){let{modelId:n,dim:r,vocab:o,weights:s,unk:a}=e??{};if(typeof n!="string"||!n)throw new Error(`embed model: missing modelId in ${t}`);if(!Number.isInteger(r)||r<=0)throw new Error(`embed model: bad dim ${r} in ${t}`);if(!Array.isArray(o)||!Array.isArray(s)||o.length!==s.length)throw new Error(`embed model: vocab/weights length mismatch in ${t}`);let l=o.length,c=new Float64Array(l*r),d=new Map;for(let m=0;m{"use strict";I();ia();Ee();fe();Jt=3,w_="models",hA="https://github.com/maxgfr/codeindex/releases/download/embed-model-v1/model.json",yA="163ad053eab4e9a80d421ed4164f32292c83290f02fbbe6fe4b9b1cd6ea18d34"});function k_(e){let t=qn(e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2"),n=[];for(let r of t.toLowerCase().split(/[^a-z0-9]+/))r&&n.push(r);return n}function wA(e){let t=S_.get(e);if(t===void 0){t=0;for(let n of e.vocab.keys())t=Math.max(t,n.startsWith("##")?n.length-2:n.length);S_.set(e,t)}return t}function E_(e,t){if(!e)return[];if(e.length>bA)return t.unkId>=0?[t.unkId]:[];let n=[],r=0,o=e.length,s=wA(t);for(;rr;){let c=r===0?e.slice(r,a):"##"+e.slice(r,a),d=t.vocab.get(c);if(d!==void 0){l=d;break}a--}if(l===-1)return t.unkId>=0?[t.unkId]:[];n.push(l),r=a}return n}function v_(e,t){let n=[];for(let r of k_(e))for(let o of E_(r,t))n.push(o);return n}function R_(e){let t=Math.floor(e),n=e-t;return n<.5?t:n>.5?t+1:t%2===0?t:t+1}function Gs(e){let t=e.length,n=new Int8Array(t),r=0;for(let s=0;suo?a=uo:a<-uo&&(a=-uo),n[s]=a}return n}function fo(e,t){let{dim:n,weights:r}=e,o=v_(t,e);if(o.length===0)return new Int8Array(n);let s=new Float64Array(n);for(let l of o){let c=l*n;for(let d=0;d{"use strict";I();et();uo=127;bA=100,S_=new WeakMap});function xA(e,t,n){return[t.name,t.signature??"",t.doc??"",n??"",e.replace(/\//g," ")].join(` -`)}function kA(e,t,n,r){return[t??"",n??"",...r,e.replace(/\//g," ")].join(` -`)}function Rl(e){return Re(e).slice(0,16)}function pf(e,t,n){let r=new Map;if(!e||e.embedVersion!==Jt||e.modelId!==t||n!==void 0&&e.dim!==n)return r;for(let o of e.records)o.textHash&&(n===void 0||o.vec.length===n)&&r.set(o.textHash,o.vec);return r}function C_(e,t){return!e||e.embedVersion!==t.embedVersion||e.modelId!==t.modelId||e.dim!==t.dim||e.records.length!==t.records.length?!1:e.records.every((n,r)=>{let o=t.records[r];return n.file===o.file&&n.symbol===o.symbol&&n.line===o.line&&n.textHash===o.textHash})}function Cl(e){let t=[];for(let n of e.files){let r=new Set,o=!1;for(let s of n.symbols)SA.has(s.kind)||r.has(s.name)||(r.add(s.name),o=!0,t.push({file:n.rel,symbol:s.name,line:s.line,text:xA(n.rel,s,n.summary)}));if(!o){let s=kA(n.rel,n.title,n.summary,n.headings);s.replace(/\s+/g,"")&&t.push({file:n.rel,text:s})}}return t}function Xr(e,t,n={}){let r=pf(n.previous,t.modelId,t.dim),o=Cl(e).map(s=>{let a=Rl(s.text);return gf(s,a,r.get(a)??fo(t,s.text))});return{embedVersion:Jt,modelId:t.modelId,dim:t.dim,records:o}}function gf(e,t,n){return{file:e.file,...e.symbol!==void 0?{symbol:e.symbol}:{},...e.line!==void 0?{line:e.line}:{},textHash:t,vec:n}}function po(e){let t=JSON.stringify({embedVersion:e.embedVersion,modelId:e.modelId,dim:e.dim,count:e.records.length,records:e.records.map(a=>({file:a.file,symbol:a.symbol??"",line:a.line??0,hash:a.textHash??""}))}),n=new TextEncoder().encode(t),r=e.records.length*e.dim,o=new Uint8Array(8+n.length+r);o.set([67,73,69,49],0),new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(4,n.length,!0),o.set(n,8);let s=8+n.length;for(let a of e.records)for(let l=0;le.byteLength)throw new Error("embeddings.bin: truncated header");let r=JSON.parse(new TextDecoder().decode(e.subarray(8,8+n))),{dim:o}=r;if(typeof r.embedVersion!="number"||typeof r.modelId!="string"||!Number.isInteger(o)||o<0||!Array.isArray(r.records)||r.records.length!==r.count)throw new Error("embeddings.bin: malformed header");let s=8+n,a=r.records.length*o;if(s+a>e.byteLength)throw new Error("embeddings.bin: truncated body");let l=new Int8Array(a);l.set(new Int8Array(e.buffer,e.byteOffset+s,a));let c=r.records.map((d,u)=>({file:d.file,...d.symbol?{symbol:d.symbol}:{},...d.line?{line:d.line}:{},...d.hash?{textHash:d.hash}:{},vec:l.subarray(u*o,(u+1)*o)}));return{embedVersion:r.embedVersion,modelId:r.modelId,dim:o,records:c}}var SA,EA,Zr=z(()=>{"use strict";I();xt();mo();Kr();SA=new Set(["reexport","reexport-all"]);EA="CIE1"});function fr(e,t,n,r={}){let o=r.limit??vA,s={...r.fuzzy!==void 0?{fuzzy:r.fuzzy}:{},...r.exact?{exact:!0}:{},...r.rank?{rank:r.rank}:{}},a=r.queryVec??(r.model?fo(r.model,t):void 0);if(!a||!n||n.records.length===0)return Gt(e,t,{...s,limit:o});let l=r.model&&n.modelId!==r.model.modelId?`the embedding index was built with model ${n.modelId}, not ${r.model.modelId}`:a.length!==n.dim?`the embedding index holds ${n.dim}-dimension vectors and the query has ${a.length}`:void 0;if(l){let h=Gt(e,t,{...s,limit:o}),_=`Semantic ranking skipped: ${l} \u2014 rebuild it (codeindex index).`;return{...h,explain:{...h.explain,note:h.explain.note?`${h.explain.note} ${_}`:_}}}let c=Gt(e,t,{...s,limit:Math.max(o,50)}),d=new Map;for(let h of n.records){let _=mf(a,h.vec),y=d.get(h.file);(!y||_>y.score)&&d.set(h.file,{score:_,symbol:h.symbol,line:h.line})}let u=[...d.entries()].filter(([,h])=>h.score>0).sort((h,_)=>_[1].score-h[1].score||$(h[0],_[0])).map(([h])=>h),f=c.results.map(h=>h.file),m=Cc([f,u],h=>h,r.rrfK??RA),p=new Map(c.results.map(h=>[h.file,h])),g=[...m.entries()].sort((h,_)=>_[1]-h[1]||$(h[0],_[0])).slice(0,o).map(([h,_])=>{let y=p.get(h),b=d.get(h),x=y?{...y,score:Number(_.toFixed(4))}:{file:h,score:Number(_.toFixed(4)),matchedTerms:[],topSymbols:[],...b?.line?{line:b.line}:{}};return b?.symbol&&b.score>0&&(x.semanticSymbol=b.symbol),x});return{results:g,explain:MA(c.explain,g,p)}}function CA(e,t,n,r={}){return fr(e,t,n,r).results}function Ml(e,t,n){return`${e} ${e===1?t:n}`}function MA(e,t,n){let r=t.filter(m=>!n.has(m.file)).length,o=t.filter(m=>m.bridgedOnly).length,s=t.length-r-o,a=e.wholeIdentifier?.df===0?e.wholeIdentifier.term:void 0,{note:l,...c}=e,d={...c,verdict:t.length?a!==void 0||s===0?"weak":"match":"none",bridgedOnlyResults:o,resultCount:t.length,semanticOnlyResults:r};if(!t.length)return e.note&&(d.note=e.note),d;if(d.verdict==="match")return d;let u=[];if(s){let m=e.terms.filter(p=>p.df>0&&p.term!==a).map(p=>p.term);u.push(`${Ml(s,"lexical match","lexical matches")}${a&&m.length?` on its parts (${m.join(", ")})`:""}`)}if(o){let m=e.terms.filter(p=>p.bridge).map(p=>`"${p.term}" \u2192 ${p.bridge.to.join(", ")}`).join("; ");u.push(`${Ml(o,"near match","near matches")}${m?` (${m})`:""}`)}r&&u.push(`${Ml(r,"embedding neighbour","embedding neighbours")} with no lexical match (see semanticSymbol)`);let f=`The ${Ml(t.length,"result","results")} below: ${u.join("; ")}.`;if(a!==void 0){let m=e.terms.find(g=>g.term===a)?.bridge?.to??[],p=m.length?` Closest indexed name${m.length===1?"":"s"}: ${m.join(", ")}.`:"";d.note=`No file in this index defines or mentions "${a}". ${f}${p}`}else{let m=e.unresolvedTerms,p=m.length?` (${m.length===1?"the term":"the terms"} ${m.join(", ")} ${m.length===1?"appears":"appear"} nowhere in this index)`:"";d.note=`Nothing matched the query verbatim${p}. ${f}`}return d}var vA,RA,Al=z(()=>{"use strict";I();et();le();Fs();mo();vA=20,RA=60});function mr(e={}){let t=e.url??O.env.CODEINDEX_EMBED_ENDPOINT;return t&&t.trim()?t.trim():void 0}function M_(e){return e.replace(/\/+$/,"")}function Il(e){let t=M_(e);return t.endsWith("/embed")?t:t+"/embed"}function A_(e){return M_(e).replace(/\/embed$/,"")+"/healthz"}function I_(e){if(typeof e.timeoutMs=="number")return e.timeoutMs;let t=Number(O.env.CODEINDEX_EMBED_TIMEOUT_MS);return Number.isFinite(t)&&t>0?t:3e4}async function Tl(e,t={}){let n=mr(t);if(!n)throw new Error("no embedding endpoint configured (set CODEINDEX_EMBED_ENDPOINT or pass opts.url)");let r=Il(n),o=new AbortController,s=setTimeout(()=>o.abort(),I_(t));try{let a=await fetch(r,{method:"POST",headers:{"content-type":"application/json",...t.headers??{}},body:JSON.stringify({texts:e}),signal:o.signal});if(!a.ok)throw new Error(`embedding endpoint ${r} returned HTTP ${a.status}`);let c=(await a.json()).vectors;if(!Array.isArray(c)||!c.every(d=>Array.isArray(d)&&d.every(u=>typeof u=="number")))throw new Error(`embedding endpoint ${r} returned a malformed { vectors } payload`);return c}finally{clearTimeout(s)}}async function go(e,t={}){let n=new AbortController,r=setTimeout(()=>n.abort(),I_(t));try{return(await fetch(A_(e),{signal:n.signal,headers:t.headers})).ok}catch{return!1}finally{clearTimeout(r)}}async function ho(e,t={}){let[n]=await Tl([e],t);if(!n)throw new Error("embedding endpoint returned no vector for the query");return Gs(n)}async function yf(e={}){let[t]=await Tl([AA],e);if(!t)throw new Error("embedding endpoint returned no vector for the fingerprint text");let n=Gs(t);return`endpoint@${Re(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)).slice(0,16)}`}async function yo(e,t={}){let n=t.modelId??"endpoint",r=Cl(e),o=r.map(y=>Rl(y.text)),s=pf(t.previous,n),a=o.map(y=>s.get(y)),l=new Map;o.forEach((y,b)=>{if(a[b])return;let x=l.get(y);x?x.push(b):l.set(y,[b])});let c=[...l.values()],d=t.batchSize&&t.batchSize>0?t.batchSize:64,u=[];for(let y=0;y{for(;!m&&fr[x[0]].text),t);if(b.length!==y.length)throw new Error(`embedding endpoint returned ${b.length} vectors for ${y.length} texts`);y.forEach((x,k)=>{let v=Gs(b[k]);for(let T of x)a[T]=v})}catch(b){throw m=!0,b}}},g=t.concurrency&&t.concurrency>0?t.concurrency:4;await Promise.all(Array.from({length:Math.min(g,u.length)},p));let h=0,_=r.map((y,b)=>{let x=a[b];return x.length>h&&(h=x.length),gf(y,o[b],x)});return{embedVersion:Jt,modelId:n,dim:h,records:_}}var AA,$l=z(()=>{"use strict";I();xt();mo();Kr();Zr();AA="codeindex endpoint fingerprint: parse the request, retry on timeout"});function $A(e){let t=e.parent!==void 0;return $_.has(e.kind)||TA.has(e.kind)?t?2:$_.has(e.kind)?0:1:t?4:3}function FA(e,t){let n=new Map;for(let s of e)s.parent===void 0&&!n.has(s.name)&&n.set(s.name,s);let r=s=>s.exported&&!s.name.startsWith("_"),o=s=>{let a=s.parent===void 0?void 0:n.get(s.parent);return r(s)&&(a===void 0||r(a))};return e.map(s=>({s,pub:o(s),tier:$A(s)})).sort((s,a)=>Number(a.pub)-Number(s.pub)||s.tier-a.tier||s.s.line-a.s.line||$(s.s.name,a.s.name)).slice(0,t).map(s=>s.s)}function OA(e){let t=new Set(e.files.filter(o=>o.testFile).map(o=>o.rel)),n=e.fileEdges.filter(o=>!t.has(o.from));if(n.length===e.fileEdges.length)return new Map(e.files.map(o=>[o.rel,o.pagerank??0]));let r=zr(e.files.map(o=>o.id),n);return new Map(e.files.map(o=>[o.rel,r.get(o.id)??0]))}function Yr(e,t,n={}){let r=(n.budgetTokens??1024)*T_,o=n.maxSymbolsPerFile??8,s=OA(t),a=t.files.filter(f=>f.fileKind==="code"&&!f.testFile).sort((f,m)=>s.get(m.rel)-s.get(f.rel)||m.symbols-f.symbols||$(f.rel,m.rel)),l=new Map(e.files.map(f=>[f.rel,f])),c=n.bare?"":`# repo map \u2014 ${t.fileCount} files -`,d=0,u=0;for(let f of a){let m=l.get(f.rel);if(!m)continue;let p=m.symbols.filter(_=>!IA.has(_.kind)&&_.name!=="_"),g=FA(p,o).sort((_,y)=>_.line-y.line||$(_.name,y.name)),h=` +`});function Wn(e){let t=F.env.CODEINDEX_EMBED_DIR,n=[];t&&n.push(t),e&&n.push(j(e,".codeindex",S_)),n.push(j(F.cwd(),".codeindex",S_));for(let r of n)if(Q(j(r,"model.json")))return r}function xA(e){return Wn(e)!==void 0}function ff(e,t){let{modelId:n,dim:r,vocab:o,weights:s,unk:a}=e??{};if(typeof n!="string"||!n)throw new Error(`embed model: missing modelId in ${t}`);if(!Number.isInteger(r)||r<=0)throw new Error(`embed model: bad dim ${r} in ${t}`);if(!Array.isArray(o)||!Array.isArray(s)||o.length!==s.length)throw new Error(`embed model: vocab/weights length mismatch in ${t}`);let l=o.length,c=new Float64Array(l*r),d=new Map;for(let m=0;m{"use strict";$();oa();ke();me();Jt=3,S_="models",bA="https://github.com/maxgfr/codeindex/releases/download/embed-model-v1/model.json",wA="163ad053eab4e9a80d421ed4164f32292c83290f02fbbe6fe4b9b1cd6ea18d34"});function v_(e){let t=Jn(e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2"),n=[];for(let r of t.toLowerCase().split(/[^a-z0-9]+/))r&&n.push(r);return n}function kA(e){let t=E_.get(e);if(t===void 0){t=0;for(let n of e.vocab.keys())t=Math.max(t,n.startsWith("##")?n.length-2:n.length);E_.set(e,t)}return t}function R_(e,t){if(!e)return[];if(e.length>SA)return t.unkId>=0?[t.unkId]:[];let n=[],r=0,o=e.length,s=kA(t);for(;rr;){let c=r===0?e.slice(r,a):"##"+e.slice(r,a),d=t.vocab.get(c);if(d!==void 0){l=d;break}a--}if(l===-1)return t.unkId>=0?[t.unkId]:[];n.push(l),r=a}return n}function C_(e,t){let n=[];for(let r of v_(e))for(let o of R_(r,t))n.push(o);return n}function M_(e){let t=Math.floor(e),n=e-t;return n<.5?t:n>.5?t+1:t%2===0?t:t+1}function Gs(e){let t=e.length,n=new Int8Array(t),r=0;for(let s=0;sfo?a=fo:a<-fo&&(a=-fo),n[s]=a}return n}function mo(e,t){let{dim:n,weights:r}=e,o=C_(t,e);if(o.length===0)return new Int8Array(n);let s=new Float64Array(n);for(let l of o){let c=l*n;for(let d=0;d{"use strict";$();et();fo=127;SA=100,E_=new WeakMap});function EA(e,t,n){return[t.name,t.signature??"",t.doc??"",n??"",e.replace(/\//g," ")].join(` +`)}function RA(e,t,n,r){return[t??"",n??"",...r,e.replace(/\//g," ")].join(` +`)}function Cl(e){return Re(e).slice(0,16)}function gf(e,t,n){let r=new Map;if(!e||e.embedVersion!==Jt||e.modelId!==t||n!==void 0&&e.dim!==n)return r;for(let o of e.records)o.textHash&&(n===void 0||o.vec.length===n)&&r.set(o.textHash,o.vec);return r}function A_(e,t){return!e||e.embedVersion!==t.embedVersion||e.modelId!==t.modelId||e.dim!==t.dim||e.records.length!==t.records.length?!1:e.records.every((n,r)=>{let o=t.records[r];return n.file===o.file&&n.symbol===o.symbol&&n.line===o.line&&n.textHash===o.textHash})}function Ml(e){let t=[];for(let n of e.files){let r=new Set,o=!1;for(let s of n.symbols)vA.has(s.kind)||r.has(s.name)||(r.add(s.name),o=!0,t.push({file:n.rel,symbol:s.name,line:s.line,text:EA(n.rel,s,n.summary)}));if(!o){let s=RA(n.rel,n.title,n.summary,n.headings);s.replace(/\s+/g,"")&&t.push({file:n.rel,text:s})}}return t}function Zr(e,t,n={}){let r=gf(n.previous,t.modelId,t.dim),o=Ml(e).map(s=>{let a=Cl(s.text);return hf(s,a,r.get(a)??mo(t,s.text))});return{embedVersion:Jt,modelId:t.modelId,dim:t.dim,records:o}}function hf(e,t,n){return{file:e.file,...e.symbol!==void 0?{symbol:e.symbol}:{},...e.line!==void 0?{line:e.line}:{},textHash:t,vec:n}}function go(e){let t=JSON.stringify({embedVersion:e.embedVersion,modelId:e.modelId,dim:e.dim,count:e.records.length,records:e.records.map(a=>({file:a.file,symbol:a.symbol??"",line:a.line??0,hash:a.textHash??""}))}),n=new TextEncoder().encode(t),r=e.records.length*e.dim,o=new Uint8Array(8+n.length+r);o.set([67,73,69,49],0),new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(4,n.length,!0),o.set(n,8);let s=8+n.length;for(let a of e.records)for(let l=0;le.byteLength)throw new Error("embeddings.bin: truncated header");let r=JSON.parse(new TextDecoder().decode(e.subarray(8,8+n))),{dim:o}=r;if(typeof r.embedVersion!="number"||typeof r.modelId!="string"||!Number.isInteger(o)||o<0||!Array.isArray(r.records)||r.records.length!==r.count)throw new Error("embeddings.bin: malformed header");let s=8+n,a=r.records.length*o;if(s+a>e.byteLength)throw new Error("embeddings.bin: truncated body");let l=new Int8Array(a);l.set(new Int8Array(e.buffer,e.byteOffset+s,a));let c=r.records.map((d,u)=>({file:d.file,...d.symbol?{symbol:d.symbol}:{},...d.line?{line:d.line}:{},...d.hash?{textHash:d.hash}:{},vec:l.subarray(u*o,(u+1)*o)}));return{embedVersion:r.embedVersion,modelId:r.modelId,dim:o,records:c}}var vA,CA,Yr=H(()=>{"use strict";$();St();po();Xr();vA=new Set(["reexport","reexport-all"]);CA="CIE1"});function pr(e,t,n,r={}){let o=r.limit??MA,s={...r.fuzzy!==void 0?{fuzzy:r.fuzzy}:{},...r.exact?{exact:!0}:{},...r.rank?{rank:r.rank}:{}},a=r.queryVec??(r.model?mo(r.model,t):void 0);if(!a||!n||n.records.length===0)return Gt(e,t,{...s,limit:o});let l=r.model&&n.modelId!==r.model.modelId?`the embedding index was built with model ${n.modelId}, not ${r.model.modelId}`:a.length!==n.dim?`the embedding index holds ${n.dim}-dimension vectors and the query has ${a.length}`:void 0;if(l){let h=Gt(e,t,{...s,limit:o}),_=`Semantic ranking skipped: ${l} \u2014 rebuild it (codeindex index).`;return{...h,explain:{...h.explain,note:h.explain.note?`${h.explain.note} ${_}`:_}}}let c=Gt(e,t,{...s,limit:Math.max(o,50)}),d=new Map;for(let h of n.records){let _=pf(a,h.vec),y=d.get(h.file);(!y||_>y.score)&&d.set(h.file,{score:_,symbol:h.symbol,line:h.line})}let u=[...d.entries()].filter(([,h])=>h.score>0).sort((h,_)=>_[1].score-h[1].score||T(h[0],_[0])).map(([h])=>h),f=c.results.map(h=>h.file),m=Mc([f,u],h=>h,r.rrfK??AA),p=new Map(c.results.map(h=>[h.file,h])),g=[...m.entries()].sort((h,_)=>_[1]-h[1]||T(h[0],_[0])).slice(0,o).map(([h,_])=>{let y=p.get(h),b=d.get(h),S=y?{...y,score:Number(_.toFixed(4))}:{file:h,score:Number(_.toFixed(4)),matchedTerms:[],topSymbols:[],...b?.line?{line:b.line}:{}};return b?.symbol&&b.score>0&&(S.semanticSymbol=b.symbol),S});return{results:g,explain:$A(c.explain,g,p)}}function IA(e,t,n,r={}){return pr(e,t,n,r).results}function Al(e,t,n){return`${e} ${e===1?t:n}`}function $A(e,t,n){let r=t.filter(m=>!n.has(m.file)).length,o=t.filter(m=>m.bridgedOnly).length,s=t.length-r-o,a=e.wholeIdentifier?.df===0?e.wholeIdentifier.term:void 0,{note:l,...c}=e,d={...c,verdict:t.length?a!==void 0||s===0?"weak":"match":"none",bridgedOnlyResults:o,resultCount:t.length,semanticOnlyResults:r};if(!t.length)return e.note&&(d.note=e.note),d;if(d.verdict==="match")return d;let u=[];if(s){let m=e.terms.filter(p=>p.df>0&&p.term!==a).map(p=>p.term);u.push(`${Al(s,"lexical match","lexical matches")}${a&&m.length?` on its parts (${m.join(", ")})`:""}`)}if(o){let m=e.terms.filter(p=>p.bridge).map(p=>`"${p.term}" \u2192 ${p.bridge.to.join(", ")}`).join("; ");u.push(`${Al(o,"near match","near matches")}${m?` (${m})`:""}`)}r&&u.push(`${Al(r,"embedding neighbour","embedding neighbours")} with no lexical match (see semanticSymbol)`);let f=`The ${Al(t.length,"result","results")} below: ${u.join("; ")}.`;if(a!==void 0){let m=e.terms.find(g=>g.term===a)?.bridge?.to??[],p=m.length?` Closest indexed name${m.length===1?"":"s"}: ${m.join(", ")}.`:"";d.note=`No file in this index defines or mentions "${a}". ${f}${p}`}else{let m=e.unresolvedTerms,p=m.length?` (${m.length===1?"the term":"the terms"} ${m.join(", ")} ${m.length===1?"appears":"appear"} nowhere in this index)`:"";d.note=`Nothing matched the query verbatim${p}. ${f}`}return d}var MA,AA,Il=H(()=>{"use strict";$();et();ce();Fs();po();MA=20,AA=60});function gr(e={}){let t=e.url??F.env.CODEINDEX_EMBED_ENDPOINT;return t&&t.trim()?t.trim():void 0}function I_(e){return e.replace(/\/+$/,"")}function $l(e){let t=I_(e);return t.endsWith("/embed")?t:t+"/embed"}function $_(e){return I_(e).replace(/\/embed$/,"")+"/healthz"}function T_(e){if(typeof e.timeoutMs=="number")return e.timeoutMs;let t=Number(F.env.CODEINDEX_EMBED_TIMEOUT_MS);return Number.isFinite(t)&&t>0?t:3e4}async function Tl(e,t={}){let n=gr(t);if(!n)throw new Error("no embedding endpoint configured (set CODEINDEX_EMBED_ENDPOINT or pass opts.url)");let r=$l(n),o=new AbortController,s=setTimeout(()=>o.abort(),T_(t));try{let a=await fetch(r,{method:"POST",headers:{"content-type":"application/json",...t.headers??{}},body:JSON.stringify({texts:e}),signal:o.signal});if(!a.ok)throw new Error(`embedding endpoint ${r} returned HTTP ${a.status}`);let c=(await a.json()).vectors;if(!Array.isArray(c)||!c.every(d=>Array.isArray(d)&&d.every(u=>typeof u=="number")))throw new Error(`embedding endpoint ${r} returned a malformed { vectors } payload`);return c}finally{clearTimeout(s)}}async function ho(e,t={}){let n=new AbortController,r=setTimeout(()=>n.abort(),T_(t));try{return(await fetch($_(e),{signal:n.signal,headers:t.headers})).ok}catch{return!1}finally{clearTimeout(r)}}async function yo(e,t={}){let[n]=await Tl([e],t);if(!n)throw new Error("embedding endpoint returned no vector for the query");return Gs(n)}async function _f(e={}){let[t]=await Tl([TA],e);if(!t)throw new Error("embedding endpoint returned no vector for the fingerprint text");let n=Gs(t);return`endpoint@${Re(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)).slice(0,16)}`}async function _o(e,t={}){let n=t.modelId??"endpoint",r=Ml(e),o=r.map(y=>Cl(y.text)),s=gf(t.previous,n),a=o.map(y=>s.get(y)),l=new Map;o.forEach((y,b)=>{if(a[b])return;let S=l.get(y);S?S.push(b):l.set(y,[b])});let c=[...l.values()],d=t.batchSize&&t.batchSize>0?t.batchSize:64,u=[];for(let y=0;y{for(;!m&&fr[S[0]].text),t);if(b.length!==y.length)throw new Error(`embedding endpoint returned ${b.length} vectors for ${y.length} texts`);y.forEach((S,k)=>{let R=Gs(b[k]);for(let I of S)a[I]=R})}catch(b){throw m=!0,b}}},g=t.concurrency&&t.concurrency>0?t.concurrency:4;await Promise.all(Array.from({length:Math.min(g,u.length)},p));let h=0,_=r.map((y,b)=>{let S=a[b];return S.length>h&&(h=S.length),hf(y,o[b],S)});return{embedVersion:Jt,modelId:n,dim:h,records:_}}var TA,Fl=H(()=>{"use strict";$();St();po();Xr();Yr();TA="codeindex endpoint fingerprint: parse the request, retry on timeout"});function NA(e){let t=e.parent!==void 0;return O_.has(e.kind)||OA.has(e.kind)?t?2:O_.has(e.kind)?0:1:t?4:3}function PA(e,t){let n=new Map;for(let s of e)s.parent===void 0&&!n.has(s.name)&&n.set(s.name,s);let r=s=>s.exported&&!s.name.startsWith("_"),o=s=>{let a=s.parent===void 0?void 0:n.get(s.parent);return r(s)&&(a===void 0||r(a))};return e.map(s=>({s,pub:o(s),tier:NA(s)})).sort((s,a)=>Number(a.pub)-Number(s.pub)||s.tier-a.tier||s.s.line-a.s.line||T(s.s.name,a.s.name)).slice(0,t).map(s=>s.s)}function LA(e){let t=new Set(e.files.filter(o=>o.testFile).map(o=>o.rel)),n=e.fileEdges.filter(o=>!t.has(o.from));if(n.length===e.fileEdges.length)return new Map(e.files.map(o=>[o.rel,o.pagerank??0]));let r=Hr(e.files.map(o=>o.id),n);return new Map(e.files.map(o=>[o.rel,r.get(o.id)??0]))}function Qr(e,t,n={}){let r=(n.budgetTokens??1024)*F_,o=n.maxSymbolsPerFile??8,s=LA(t),a=t.files.filter(f=>f.fileKind==="code"&&!f.testFile).sort((f,m)=>s.get(m.rel)-s.get(f.rel)||m.symbols-f.symbols||T(f.rel,m.rel)),l=new Map(e.files.map(f=>[f.rel,f])),c=n.bare?"":`# repo map \u2014 ${t.fileCount} files +`,d=0,u=0;for(let f of a){let m=l.get(f.rel);if(!m)continue;let p=m.symbols.filter(_=>!FA.has(_.kind)&&_.name!=="_"),g=PA(p,o).sort((_,y)=>_.line-y.line||T(_.name,y.name)),h=` ${f.rel}: `;for(let _ of g){let y=(_.signature??`${_.kind} ${_.name}`).replace(/\s+/g," ").trim().slice(0,120);h+=` ${_.line}: ${y} `}if(p.length>g.length&&(h+=` \u2026 ${p.length-g.length} more -`),c.length+h.length>r){if(++u>=NA)break;continue}u=0,c+=h,d++}return`${c} -(${d} of ${a.length} code files shown, ~${Math.ceil(c.length/T_)} tokens) -`}var T_,IA,$_,TA,NA,_o=z(()=>{"use strict";I();Yi();le();T_=4,IA=new Set(["reexport","reexport-all","package"]),$_=new Set(["class","struct","interface","type","enum","trait","record","protocol","typedef","union","object","module"]),TA=new Set(["function","def","fn","func","method","constructor","macro"]);NA=32});function bo(e,t={}){let n=t.maxCommitFiles??30,r=t.minTogether??3,o=t.maxPairs??100,s=jc(e,t.since);if(!s.ok)return{ok:!1,error:s.error,couplings:[]};let{log:a}=s,l=t.graph?new Set(t.graph.files.map(x=>x.rel)):void 0,c=Wc(a),d=c.filter(x=>x!==void 0&&(!l||l.has(x))).sort($),u=new Map(d.map((x,k)=>[x,k])),f=c.map(x=>x===void 0?-1:u.get(x)??-1),m=d.length,p=new Int32Array(m),g=new Map,h=new Int32Array(a.paths.length).fill(-1),_=[];for(let x=0;x+1=0&&_.push(f[T]))}if(!(k===0||k>n)){_.sort((v,T)=>v-T);for(let v=0;v<_.length;v++){let T=_[v];p[T]++;for(let F=v+1;F<_.length;F++){let R=T*m+_[F];g.set(R,(g.get(R)??0)+1)}}}}let y;if(t.graph){y=new Set;for(let x of t.graph.fileEdges){if(x.dangling||x.kind==="mention"||x.kind==="contains")continue;let k=u.get(x.from),v=u.get(x.to);k===void 0||v===void 0||k===v||y.add(kk.confidence-x.confidence||k.strength-x.strength||k.together-x.together||$(x.a,k.a)||$(x.b,k.b)),{ok:!0,...a.shallow?{shallow:!0}:{},couplings:b.slice(0,o)}}function F_(e){let t=e.indexOf(".",e.lastIndexOf("/")+2);return t<0?e:e.slice(0,t)}function PA(e,t){let n=3.8415999999999997,r=e/t;return(r+n/(2*t)-Math.sqrt(n*(r*(1-r)+n/(4*t))/t))/(1+n/t)}function Qr(e,t,n=20){let r=[];for(let o of e.files){if(o.kind!=="code")continue;let s=t.get(o.rel)??0,a=Number((s*Math.log2(o.lines+1)).toFixed(2));a<=0||r.push({rel:o.rel,lines:o.lines,commits:s,score:a,...Ft(o.rel)?{test:!0}:{}})}return r.sort((o,s)=>s.score-o.score||s.lines-o.lines||$(o.rel,s.rel)),r.slice(0,n)}var O_,wo=z(()=>{"use strict";I();tn();le();lr();O_=e=>Number(e.toFixed(3))});function jA(e){let t=0,n,r=e.replace(/\r\n?/g,` +`),c.length+h.length>r){if(++u>=DA)break;continue}u=0,c+=h,d++}return`${c} +(${d} of ${a.length} code files shown, ~${Math.ceil(c.length/F_)} tokens) +`}var F_,FA,O_,OA,DA,bo=H(()=>{"use strict";$();Qi();ce();F_=4,FA=new Set(["reexport","reexport-all","package"]),O_=new Set(["class","struct","interface","type","enum","trait","record","protocol","typedef","union","object","module"]),OA=new Set(["function","def","fn","func","method","constructor","macro"]);DA=32});function wo(e,t={}){let n=t.maxCommitFiles??30,r=t.minTogether??3,o=t.maxPairs??100,s=Wc(e,t.since);if(!s.ok)return{ok:!1,error:s.error,couplings:[]};let{log:a}=s,l=t.graph?new Set(t.graph.files.map(S=>S.rel)):void 0,c=Bc(a),d=c.filter(S=>S!==void 0&&(!l||l.has(S))).sort(T),u=new Map(d.map((S,k)=>[S,k])),f=c.map(S=>S===void 0?-1:u.get(S)??-1),m=d.length,p=new Int32Array(m),g=new Map,h=new Int32Array(a.paths.length).fill(-1),_=[];for(let S=0;S+1=0&&_.push(f[I]))}if(!(k===0||k>n)){_.sort((R,I)=>R-I);for(let R=0;R<_.length;R++){let I=_[R];p[I]++;for(let P=R+1;P<_.length;P++){let v=I*m+_[P];g.set(v,(g.get(v)??0)+1)}}}}let y;if(t.graph){y=new Set;for(let S of t.graph.fileEdges){if(S.dangling||S.kind==="mention"||S.kind==="contains")continue;let k=u.get(S.from),R=u.get(S.to);k===void 0||R===void 0||k===R||y.add(kk.confidence-S.confidence||k.strength-S.strength||k.together-S.together||T(S.a,k.a)||T(S.b,k.b)),{ok:!0,...a.shallow?{shallow:!0}:{},couplings:b.slice(0,o)}}function N_(e){let t=e.indexOf(".",e.lastIndexOf("/")+2);return t<0?e:e.slice(0,t)}function jA(e,t){let n=3.8415999999999997,r=e/t;return(r+n/(2*t)-Math.sqrt(n*(r*(1-r)+n/(4*t))/t))/(1+n/t)}function es(e,t,n=20){let r=[];for(let o of e.files){if(o.kind!=="code")continue;let s=t.get(o.rel)??0,a=Number((s*Math.log2(o.lines+1)).toFixed(2));a<=0||r.push({rel:o.rel,lines:o.lines,commits:s,score:a,...Ft(o.rel)?{test:!0}:{}})}return r.sort((o,s)=>s.score-o.score||s.lines-o.lines||T(o.rel,s.rel)),r.slice(0,n)}var P_,xo=H(()=>{"use strict";$();nn();ce();dr();P_=e=>Number(e.toFixed(3))});function UA(e){let t=0,n,r=e.replace(/\r\n?/g,` `).replace(/^ {0,3}(`{3,}|~{3,})[^\n]*\n[\s\S]*?^ {0,3}\1[^\n]*$/gm,"");for(let o of r.split(/\n\s*\n/)){let s=o.trim().split(` -`),a=/^(#{1,6})\s/.exec(s[0]??"");if(a)t=a[1].length,s=s.slice(1);else if(s.length>=2&&/^(=+|-+)\s*$/.test(s[s.length-1])){t=s[s.length-1].startsWith("=")?1:2;continue}else if(s.length===1&&/^(?:[-*_]\s*){3,}$/.test(s[0])){t=Math.min(t,1);continue}let l=s.join(" ").trim();if(!l||l.startsWith("<")||l.startsWith("#")||/^(\[!\[|!\[|\[)/.test(l)&&!/[.:]\s/.test(l)||/^\[[^\]]+\]:\s/.test(l))continue;let c=l.replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\](?:\[[^\]]*\])?/g,"$1").replace(/[*_`]/g,"").replace(/\s+/g," ").trim();if(!(c.length<=20)){if(t<=1)return c.slice(0,400);n??=c.slice(0,400)}}return n}function WA(e){for(let t of LA){let n=j(e,t);if(ne(n))try{return jA(ie(n,"utf8"))}catch{continue}}}function _f(e,t,n={}){let r=[],o=ae(e.root).replace(/\/+$/,"").split("/").pop()||"repository";r.push(`# ${o}`,"");let s=WA(e.root);s&&r.push(s,"");let a=Object.entries(t.languages).sort((f,m)=>m[1]-f[1]||$(f[0],m[0])).slice(0,6).map(([f,m])=>`${f} ${m}`).join(", ");r.push(`**${t.fileCount} indexed files** \xB7 ${a}`,"");let l=On(e.root);if(l.packages.length>1){r.push(`## Layout \u2014 monorepo, ${l.packages.length} packages`,"");for(let f of l.packages.slice(0,20))r.push(`- \`${f.dir}\` \u2014 ${f.name}`);l.packages.length>20&&r.push(`- \u2026and ${l.packages.length-20} more`),l.cycle?.length&&r.push("",`\u26A0 dependency cycle: ${l.cycle.join(" \u2192 ")}`),r.push("")}r.push("## Key files","",Yr(e,t,{budgetTokens:n.budgetTokens??900,bare:!0}).trim(),"");let c=en(e.root);if(c.ok&&c.commits>=DA){let f=Qr(e,c.churn,8);if(f.length){let m=c.shallow?` Shallow clone: only ${c.commits} commits of history are visible.`:"";r.push("## Where work concentrates","",`Files ranked by commits \xD7 size \u2014 where changes and defects cluster.${m}`,"");for(let p of f)r.push(`- \`${p.rel}\` \u2014 ${p.commits} commits, ${p.lines} lines${p.test?" (test)":""}`);r.push("")}}r.push("## Next","","- `search ` \u2014 BM25 over names, paths, doc comments and prose; `explain_search` says whether it really matched","- `find_symbol ` / `symbols_overview ` \u2014 read structure without reading files","- `find_references ` \u2014 three labelled tiers; add `lsp: true` when a language server is configured","");let d=r.join(` -`);if(n.remember===!1)return{brief:d};let u=n.memoryName??"onboarding";try{oo(e.root,u,d)}catch(f){return{brief:d,memoryError:`not saved as the ${u} memory: ${f instanceof Error?f.message:String(f)}`}}return{brief:d,memory:u}}var LA,DA,bf=z(()=>{"use strict";I();Ee();fe();_o();Gr();wo();tn();_l();le();LA=["README.md","README.markdown","README.rst","README.txt","README"],DA=10});function BA(e={}){if(e.trustRepoConfig===!0)return!0;let t=(O.env.CODEINDEX_TRUST_LSP_CONFIG??"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"}function UA(){let e=O.env.XDG_CONFIG_HOME?.trim();return j(e?ae(e):j(_a(),".config"),"codeindex",wf)}function qs(e,t={}){let n=O.env.CODEINDEX_LSP_CONFIG;if(n!==void 0){let c=n.trim();return!c||c==="0"||c.toLowerCase()==="off"?{path:void 0,source:"none"}:{path:ae(c),source:"env"}}let r=BA(t),o,s=j(e,N_,wf),a=j(O.cwd(),N_,wf);for(let[c,d]of[[s,"repo"],[a,"cwd"]])if(!(d==="cwd"&&c===s)&&ne(c)){if(r)return{path:c,source:d};o??=c}let l=UA();return ne(l)?{path:l,source:"user",...o?{ignored:o}:{}}:{path:void 0,source:"none",...o?{ignored:o}:{}}}function L_(e){if(!e||typeof e!="object")throw new Error("lsp.json must be a JSON object");let t=e;if(t.version!==1)throw new Error(`lsp.json: unsupported version ${JSON.stringify(t.version)} (expected 1)`);if(!Array.isArray(t.servers))throw new Error("lsp.json: `servers` must be an array");let n=new Set;return{version:1,servers:t.servers.map((o,s)=>{if(!o||typeof o!="object")throw new Error(`lsp.json: servers[${s}] must be an object`);let a=o,l=typeof a.id=="string"&&a.id.trim()?a.id.trim():void 0;if(!l)throw new Error(`lsp.json: servers[${s}].id must be a non-empty string`);if(n.has(l))throw new Error(`lsp.json: duplicate server id ${JSON.stringify(l)}`);if(n.add(l),typeof a.command!="string"||!a.command.trim())throw new Error(`lsp.json: servers[${s}].command must be a non-empty string`);if(!Array.isArray(a.languages)||!a.languages.length||a.languages.some(c=>typeof c!="string"))throw new Error(`lsp.json: servers[${s}].languages must be a non-empty array of strings`);if(a.args!==void 0&&(!Array.isArray(a.args)||a.args.some(c=>typeof c!="string")))throw new Error(`lsp.json: servers[${s}].args must be an array of strings`);return{id:l,languages:a.languages,...typeof a.languageId=="string"?{languageId:a.languageId}:{},command:a.command,...Array.isArray(a.args)?{args:a.args}:{},...a.env&&typeof a.env=="object"?{env:a.env}:{},...a.initializationOptions!==void 0?{initializationOptions:a.initializationOptions}:{},...a.timeoutMs!==void 0?{timeoutMs:P_(a.timeoutMs,`servers[${s}].timeoutMs`)}:{},...a.startupTimeoutMs!==void 0?{startupTimeoutMs:P_(a.startupTimeoutMs,`servers[${s}].startupTimeoutMs`)}:{}}})}}function P_(e,t){if(typeof e!="number"||!Number.isFinite(e)||e<=0)throw new Error(`lsp.json: ${t} must be a positive number of milliseconds, got ${JSON.stringify(e)}`);return e}function xo(e,t={}){let{path:n}=qs(e,t);if(!n||!ne(n))return;let r;try{r=JSON.parse(ie(n,"utf8"))}catch(o){throw new Error(`${n}: ${o instanceof Error?o.message:String(o)}`)}return L_(r)}function xf(e,t){return e.servers.find(n=>n.languages.includes(t))}function Ol(e){return j_("CODEINDEX_LSP_TIMEOUT_MS")??e.timeoutMs??zA}function D_(e){return j_("CODEINDEX_LSP_STARTUP_TIMEOUT_MS")??e.startupTimeoutMs??HA}function j_(e){let t=O.env[e];if(t===void 0)return;let n=Number(t);return Number.isFinite(n)&&n>0?n:void 0}var wf,N_,Fl,zA,HA,Nl=z(()=>{"use strict";I();Ee();_i();fe();wf="lsp.json",N_=".codeindex",Fl="a repository's lsp.json names commands to run, so it is read only with --trust-lsp-config or CODEINDEX_TRUST_LSP_CONFIG=1";zA=5e3,HA=15e3});function es(e,t){return{server:e,ok:!1,reason:t,refs:[],agreement:{both:[],lspOnly:[],staticOnly:[]}}}function Ll(e,t,n,r){try{let o=ie(j(e,t),"utf8").split(/\r?\n/)[n-1];return o===void 0?0:GA(o,r)}catch{return 0}}function GA(e,t){if(!t)return 0;let n=Pl.test(t[0]),r=Pl.test(t[t.length-1]),o=c=>(!n||c===0||!Pl.test(e[c-1]))&&(!r||c+t.length>=e.length||!Pl.test(e[c+t.length])),s=c=>{let d=[];for(let u=e.indexOf(t,c);u>=0;u=e.indexOf(t,u+1))o(u)&&d.push(u);return d},a=JA(e),l=s(a);if(l.length){if(!qA.has(t))return l[0];let c=VA(e,a),d=l.filter(u=>u0?s(0)[0]??0:0}function VA(e,t){for(let n=t;nl.file)),r=new Set([...t.callSites.map(l=>l.file),...t.referencingFiles,...t.defs.map(l=>l.file)]),o=[],s=[],a=[];for(let l of n)(r.has(l)?o:s).push(l);for(let l of r)n.has(l)||a.push(l);return{both:o.sort($),lspOnly:s.sort($),staticOnly:a.sort($)}}async function B_(e,t,n,r,o,s){if(!r.capabilities.references)return{...n,lsp:es(o,"server does not provide textDocument/references")};if(!n.defs.length)return{...n,lsp:es(o,`no declaration of ${t} to anchor a request on`)};let a=new Set,l=[];try{for(let c of n.defs){let d=KA(e.root,c.file);if(!d)continue;r.didOpen(c.file,d,s??c.lang);let u=Ll(e.root,c.file,c.line,t);for(let f of await r.references(c.file,c.line,u)){let m=`${f.file}:${f.line}:${f.character??""}`;a.has(m)||(a.add(m),l.push(f))}}}catch(c){return{...n,lsp:{server:o,ok:!1,reason:c instanceof Error?c.message:String(c),refs:l.sort(W_),agreement:So(l,n)}}}return l.sort(W_),{...n,lsp:{server:o,ok:!0,refs:l,agreement:So(l,n)}}}function W_(e,t){return $(e.file,t.file)||e.line-t.line||(e.character??0)-(t.character??0)}function KA(e,t){try{return ie(j(e,t),"utf8")}catch{return""}}var Pl,qA,Dl=z(()=>{"use strict";I();Ee();fe();le();Pl=/[\p{L}\p{N}_$]/u;qA=new Set(["abstract","async","const","declare","def","default","export","final","fn","fun","func","function","get","internal","let","open","override","private","protected","pub","public","readonly","set","static","type","val","var","virtual"])});function z_(e,t){if(!Array.isArray(t))return[];let n=[];for(let r of t){let o=r?.from;if(!o||typeof o.uri!="string"||typeof o.name!="string"||typeof o.kind!="number")continue;let s=Vs(e,{uri:o.uri,range:o.selectionRange})[0];if(!(!s||!Array.isArray(r.fromRanges)))for(let a of r.fromRanges){let l=a?.start;if(!(!Number.isInteger(l?.line)||l.line<0||!Number.isInteger(l?.character)||l.character<0))for(let c of Vs(e,{uri:o.uri,range:a}))n.push({...c,caller:{...s,name:o.name,kind:o.kind}})}}return jn(n)}function jn(e){let t=new Set;return e.filter(n=>{let r=JSON.stringify([n.file,n.line,n.character,n.caller]);return t.has(r)?!1:(t.add(r),!0)}).sort((n,r)=>$(n.file,r.file)||n.line-r.line||(n.character??0)-(r.character??0)||$(n.caller.name,r.caller.name)||n.caller.line-r.caller.line)}function jl(e){let t=JSON.stringify(e);return`Content-Length: ${ZA(t)}${XA}${t}`}function ZA(e){return new TextEncoder().encode(e).byteLength}function Sf(){let e=new TextEncoder,t=new TextDecoder,n=new Uint8Array(0),r=[],o=0,s=0,a=0,l=f=>{n=n.subarray(f),a=0},c=f=>{r.push(f),o+=f.length},d=()=>{if(!r.length)return;let f=new Uint8Array(n.length+o);f.set(n);let m=n.length;for(let p of r)f.set(p,m),m+=p.length;n=f,r.length=0,o=0},u=()=>{for(let f=a;f+3U_&&l(n.length-U_),m;let g=t.decode(n.subarray(0,p)),h=/content-length:\s*(\d+)/i.exec(g);if(!h){l(p+4);continue}let _=Number(h[1]);if(!Number.isSafeInteger(_)||_<0||_>H_){l(p+4);continue}let y=p+4;if(n.lengthc===0||c===1&&/^[A-Za-z]:$/.test(l)?l:encodeURIComponent(l)).join("/")}function kf(e,t){if(typeof e!="string"){for(let l of e){let c=kf(l,t);if(c!==void 0)return c}return}if(!t.startsWith("file://"))return;let n;try{let l=t.slice(7);n=decodeURIComponent(l.startsWith("/")?l:`//${l}`).replace(/\\/g,"/")}catch{return}/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1));let r=e.replace(/\\/g,"/").replace(/\/+$/,""),o=/^[A-Za-z]:/.test(r)||r.startsWith("//"),s=o?n.toLowerCase():n,a=o?r.toLowerCase():r;if(s===a)return"";if(s.startsWith(`${a}/`))return n.slice(r.length+1)}function Vs(e,t){let n=Array.isArray(t)?t:t&&typeof t=="object"?[t]:[],r=new Set,o=[];for(let s of n){if(!s||typeof s!="object")continue;let a=s.uri??s.targetUri;if(!a)continue;let l=kf(e,a);if(l===void 0||l==="")continue;let c=(s.range??s.targetSelectionRange??s.targetRange)?.start,d=typeof c?.line=="number"?c.line+1:1,u=typeof c?.character=="number"?c.character:void 0,f=`${l}:${d}:${u??""}`;r.has(f)||(r.add(f),o.push(u===void 0?{file:l,line:d}:{file:l,line:d,character:u}))}return o.sort((s,a)=>$(s.file,a.file)||s.line-a.line||(s.character??0)-(a.character??0))}var H_,U_,XA,ko=z(()=>{"use strict";I();le();H_=32*1024*1024,U_=64*1024,XA=`\r +`),a=/^(#{1,6})\s/.exec(s[0]??"");if(a)t=a[1].length,s=s.slice(1);else if(s.length>=2&&/^(=+|-+)\s*$/.test(s[s.length-1])){t=s[s.length-1].startsWith("=")?1:2;continue}else if(s.length===1&&/^(?:[-*_]\s*){3,}$/.test(s[0])){t=Math.min(t,1);continue}let l=s.join(" ").trim();if(!l||l.startsWith("<")||l.startsWith("#")||/^(\[!\[|!\[|\[)/.test(l)&&!/[.:]\s/.test(l)||/^\[[^\]]+\]:\s/.test(l))continue;let c=l.replace(/!\[[^\]]*\]\([^)]*\)/g,"").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\](?:\[[^\]]*\])?/g,"$1").replace(/[*_`]/g,"").replace(/\s+/g," ").trim();if(!(c.length<=20)){if(t<=1)return c.slice(0,400);n??=c.slice(0,400)}}return n}function zA(e){for(let t of WA){let n=j(e,t);if(Q(n))try{return UA(ie(n,"utf8"))}catch{continue}}}function bf(e,t,n={}){let r=[],o=le(e.root).replace(/\/+$/,"").split("/").pop()||"repository";r.push(`# ${o}`,"");let s=zA(e.root);s&&r.push(s,"");let a=Object.entries(t.languages).sort((f,m)=>m[1]-f[1]||T(f[0],m[0])).slice(0,6).map(([f,m])=>`${f} ${m}`).join(", ");r.push(`**${t.fileCount} indexed files** \xB7 ${a}`,"");let l=Pn(e.root);if(l.packages.length>1){r.push(`## Layout \u2014 monorepo, ${l.packages.length} packages`,"");for(let f of l.packages.slice(0,20))r.push(`- \`${f.dir}\` \u2014 ${f.name}`);l.packages.length>20&&r.push(`- \u2026and ${l.packages.length-20} more`),l.cycle?.length&&r.push("",`\u26A0 dependency cycle: ${l.cycle.join(" \u2192 ")}`),r.push("")}r.push("## Key files","",Qr(e,t,{budgetTokens:n.budgetTokens??900,bare:!0}).trim(),"");let c=tn(e.root);if(c.ok&&c.commits>=BA){let f=es(e,c.churn,8);if(f.length){let m=c.shallow?` Shallow clone: only ${c.commits} commits of history are visible.`:"";r.push("## Where work concentrates","",`Files ranked by commits \xD7 size \u2014 where changes and defects cluster.${m}`,"");for(let p of f)r.push(`- \`${p.rel}\` \u2014 ${p.commits} commits, ${p.lines} lines${p.test?" (test)":""}`);r.push("")}}r.push("## Next","","- `search ` \u2014 BM25 over names, paths, doc comments and prose; `explain_search` says whether it really matched","- `find_symbol ` / `symbols_overview ` \u2014 read structure without reading files","- `find_references ` \u2014 three labelled tiers; add `lsp: true` when a language server is configured","");let d=r.join(` +`);if(n.remember===!1)return{brief:d};let u=n.memoryName??"onboarding";try{ao(e.root,u,d)}catch(f){return{brief:d,memoryError:`not saved as the ${u} memory: ${f instanceof Error?f.message:String(f)}`}}return{brief:d,memory:u}}var WA,BA,wf=H(()=>{"use strict";$();ke();me();bo();qr();xo();nn();bl();ce();WA=["README.md","README.markdown","README.rst","README.txt","README"],BA=10});function HA(e={}){if(e.trustRepoConfig===!0)return!0;let t=(F.env.CODEINDEX_TRUST_LSP_CONFIG??"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"}function GA(){let e=F.env.XDG_CONFIG_HOME?.trim();return j(e?le(e):j(ba(),".config"),"codeindex",xf)}function qs(e,t={}){let n=F.env.CODEINDEX_LSP_CONFIG;if(n!==void 0){let c=n.trim();return!c||c==="0"||c.toLowerCase()==="off"?{path:void 0,source:"none"}:{path:le(c),source:"env"}}let r=HA(t),o,s=j(e,L_,xf),a=j(F.cwd(),L_,xf);for(let[c,d]of[[s,"repo"],[a,"cwd"]])if(!(d==="cwd"&&c===s)&&Q(c)){if(r)return{path:c,source:d};o??=c}let l=GA();return Q(l)?{path:l,source:"user",...o?{ignored:o}:{}}:{path:void 0,source:"none",...o?{ignored:o}:{}}}function j_(e){if(!e||typeof e!="object")throw new Error("lsp.json must be a JSON object");let t=e;if(t.version!==1)throw new Error(`lsp.json: unsupported version ${JSON.stringify(t.version)} (expected 1)`);if(!Array.isArray(t.servers))throw new Error("lsp.json: `servers` must be an array");let n=new Set;return{version:1,servers:t.servers.map((o,s)=>{if(!o||typeof o!="object")throw new Error(`lsp.json: servers[${s}] must be an object`);let a=o,l=typeof a.id=="string"&&a.id.trim()?a.id.trim():void 0;if(!l)throw new Error(`lsp.json: servers[${s}].id must be a non-empty string`);if(n.has(l))throw new Error(`lsp.json: duplicate server id ${JSON.stringify(l)}`);if(n.add(l),typeof a.command!="string"||!a.command.trim())throw new Error(`lsp.json: servers[${s}].command must be a non-empty string`);if(!Array.isArray(a.languages)||!a.languages.length||a.languages.some(c=>typeof c!="string"))throw new Error(`lsp.json: servers[${s}].languages must be a non-empty array of strings`);if(a.args!==void 0&&(!Array.isArray(a.args)||a.args.some(c=>typeof c!="string")))throw new Error(`lsp.json: servers[${s}].args must be an array of strings`);return{id:l,languages:a.languages,...typeof a.languageId=="string"?{languageId:a.languageId}:{},command:a.command,...Array.isArray(a.args)?{args:a.args}:{},...a.env&&typeof a.env=="object"?{env:a.env}:{},...a.initializationOptions!==void 0?{initializationOptions:a.initializationOptions}:{},...a.timeoutMs!==void 0?{timeoutMs:D_(a.timeoutMs,`servers[${s}].timeoutMs`)}:{},...a.startupTimeoutMs!==void 0?{startupTimeoutMs:D_(a.startupTimeoutMs,`servers[${s}].startupTimeoutMs`)}:{}}})}}function D_(e,t){if(typeof e!="number"||!Number.isFinite(e)||e<=0)throw new Error(`lsp.json: ${t} must be a positive number of milliseconds, got ${JSON.stringify(e)}`);return e}function So(e,t={}){let{path:n}=qs(e,t);if(!n||!Q(n))return;let r;try{r=JSON.parse(ie(n,"utf8"))}catch(o){throw new Error(`${n}: ${o instanceof Error?o.message:String(o)}`)}return j_(r)}function Sf(e,t){return e.servers.find(n=>n.languages.includes(t))}function Nl(e){return B_("CODEINDEX_LSP_TIMEOUT_MS")??e.timeoutMs??qA}function W_(e){return B_("CODEINDEX_LSP_STARTUP_TIMEOUT_MS")??e.startupTimeoutMs??VA}function B_(e){let t=F.env[e];if(t===void 0)return;let n=Number(t);return Number.isFinite(n)&&n>0?n:void 0}var xf,L_,Ol,qA,VA,Pl=H(()=>{"use strict";$();ke();bi();me();xf="lsp.json",L_=".codeindex",Ol="a repository's lsp.json names commands to run, so it is read only with --trust-lsp-config or CODEINDEX_TRUST_LSP_CONFIG=1";qA=5e3,VA=15e3});function ts(e,t){return{server:e,ok:!1,reason:t,refs:[],agreement:{both:[],lspOnly:[],staticOnly:[]}}}function Dl(e,t,n,r){try{let o=ie(j(e,t),"utf8").split(/\r?\n/)[n-1];return o===void 0?0:JA(o,r)}catch{return 0}}function JA(e,t){if(!t)return 0;let n=Ll.test(t[0]),r=Ll.test(t[t.length-1]),o=c=>(!n||c===0||!Ll.test(e[c-1]))&&(!r||c+t.length>=e.length||!Ll.test(e[c+t.length])),s=c=>{let d=[];for(let u=e.indexOf(t,c);u>=0;u=e.indexOf(t,u+1))o(u)&&d.push(u);return d},a=ZA(e),l=s(a);if(l.length){if(!KA.has(t))return l[0];let c=XA(e,a),d=l.filter(u=>u0?s(0)[0]??0:0}function XA(e,t){for(let n=t;nl.file)),r=new Set([...t.callSites.map(l=>l.file),...t.referencingFiles,...t.defs.map(l=>l.file)]),o=[],s=[],a=[];for(let l of n)(r.has(l)?o:s).push(l);for(let l of r)n.has(l)||a.push(l);return{both:o.sort(T),lspOnly:s.sort(T),staticOnly:a.sort(T)}}async function z_(e,t,n,r,o,s){if(!r.capabilities.references)return{...n,lsp:ts(o,"server does not provide textDocument/references")};if(!n.defs.length)return{...n,lsp:ts(o,`no declaration of ${t} to anchor a request on`)};let a=new Set,l=[];try{for(let c of n.defs){let d=YA(e.root,c.file);if(!d)continue;r.didOpen(c.file,d,s??c.lang);let u=Dl(e.root,c.file,c.line,t);for(let f of await r.references(c.file,c.line,u)){let m=`${f.file}:${f.line}:${f.character??""}`;a.has(m)||(a.add(m),l.push(f))}}}catch(c){return{...n,lsp:{server:o,ok:!1,reason:c instanceof Error?c.message:String(c),refs:l.sort(U_),agreement:ko(l,n)}}}return l.sort(U_),{...n,lsp:{server:o,ok:!0,refs:l,agreement:ko(l,n)}}}function U_(e,t){return T(e.file,t.file)||e.line-t.line||(e.character??0)-(t.character??0)}function YA(e,t){try{return ie(j(e,t),"utf8")}catch{return""}}var Ll,KA,jl=H(()=>{"use strict";$();ke();me();ce();Ll=/[\p{L}\p{N}_$]/u;KA=new Set(["abstract","async","const","declare","def","default","export","final","fn","fun","func","function","get","internal","let","open","override","private","protected","pub","public","readonly","set","static","type","val","var","virtual"])});function G_(e,t){if(!Array.isArray(t))return[];let n=[];for(let r of t){let o=r?.from;if(!o||typeof o.uri!="string"||typeof o.name!="string"||typeof o.kind!="number")continue;let s=Vs(e,{uri:o.uri,range:o.selectionRange})[0];if(!(!s||!Array.isArray(r.fromRanges)))for(let a of r.fromRanges){let l=a?.start;if(!(!Number.isInteger(l?.line)||l.line<0||!Number.isInteger(l?.character)||l.character<0))for(let c of Vs(e,{uri:o.uri,range:a}))n.push({...c,caller:{...s,name:o.name,kind:o.kind}})}}return Bn(n)}function Bn(e){let t=new Set;return e.filter(n=>{let r=JSON.stringify([n.file,n.line,n.character,n.caller]);return t.has(r)?!1:(t.add(r),!0)}).sort((n,r)=>T(n.file,r.file)||n.line-r.line||(n.character??0)-(r.character??0)||T(n.caller.name,r.caller.name)||n.caller.line-r.caller.line)}function Wl(e){let t=JSON.stringify(e);return`Content-Length: ${eI(t)}${QA}${t}`}function eI(e){return new TextEncoder().encode(e).byteLength}function kf(){let e=new TextEncoder,t=new TextDecoder,n=new Uint8Array(0),r=[],o=0,s=0,a=0,l=f=>{n=n.subarray(f),a=0},c=f=>{r.push(f),o+=f.length},d=()=>{if(!r.length)return;let f=new Uint8Array(n.length+o);f.set(n);let m=n.length;for(let p of r)f.set(p,m),m+=p.length;n=f,r.length=0,o=0},u=()=>{for(let f=a;f+3H_&&l(n.length-H_),m;let g=t.decode(n.subarray(0,p)),h=/content-length:\s*(\d+)/i.exec(g);if(!h){l(p+4);continue}let _=Number(h[1]);if(!Number.isSafeInteger(_)||_<0||_>q_){l(p+4);continue}let y=p+4;if(n.lengthc===0||c===1&&/^[A-Za-z]:$/.test(l)?l:encodeURIComponent(l)).join("/")}function Ef(e,t){if(typeof e!="string"){for(let l of e){let c=Ef(l,t);if(c!==void 0)return c}return}if(!t.startsWith("file://"))return;let n;try{let l=t.slice(7);n=decodeURIComponent(l.startsWith("/")?l:`//${l}`).replace(/\\/g,"/")}catch{return}/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1));let r=e.replace(/\\/g,"/").replace(/\/+$/,""),o=/^[A-Za-z]:/.test(r)||r.startsWith("//"),s=o?n.toLowerCase():n,a=o?r.toLowerCase():r;if(s===a)return"";if(s.startsWith(`${a}/`))return n.slice(r.length+1)}function Vs(e,t){let n=Array.isArray(t)?t:t&&typeof t=="object"?[t]:[],r=new Set,o=[];for(let s of n){if(!s||typeof s!="object")continue;let a=s.uri??s.targetUri;if(!a)continue;let l=Ef(e,a);if(l===void 0||l==="")continue;let c=(s.range??s.targetSelectionRange??s.targetRange)?.start,d=typeof c?.line=="number"?c.line+1:1,u=typeof c?.character=="number"?c.character:void 0,f=`${l}:${d}:${u??""}`;r.has(f)||(r.add(f),o.push(u===void 0?{file:l,line:d}:{file:l,line:d,character:u}))}return o.sort((s,a)=>T(s.file,a.file)||s.line-a.line||(s.character??0)-(a.character??0))}var q_,H_,QA,Eo=H(()=>{"use strict";$();ce();q_=32*1024*1024,H_=64*1024,QA=`\r \r -`});function Ef(e,t){let n=t.lastError?.();return n&&!e.includes(n)?`${e}: ${n}`:e}async function vf(e,t){let n=t.timeoutMs??YA,r=t.startupTimeoutMs??QA,o=Sf(),s=new Map,a=new Set,l=[t.root,...(t.rootAliases??[]).filter(y=>y!==t.root)],c=1,d,u=y=>{d=y;for(let[,b]of s)clearTimeout(b.timer),b.reject(y);s.clear()};e.onData(y=>{for(let b of o.push(y)){if(typeof b.id!="number")continue;let x=s.get(b.id);x&&(s.delete(b.id),clearTimeout(x.timer),b.error?x.reject(new Error(`${b.error.message} (code ${b.error.code})`)):x.resolve(b.result))}}),e.onExit(y=>u(new Error(Ef(`language server exited (code ${y??"unknown"})`,e))));let f=(y,b)=>{d||e.write(jl({jsonrpc:"2.0",method:y,params:b}))},m=(y,b,x=n)=>{if(d)return Promise.reject(d);let k=c++;return new Promise((v,T)=>{let F=setTimeout(()=>{s.delete(k),T(new Wl(y,x))},x);F.unref?.(),s.set(k,{resolve:v,reject:T,timer:F}),e.write(jl({jsonrpc:"2.0",id:k,method:y,params:b}))})},p=await m("initialize",{processId:typeof O<"u"&&typeof O.pid=="number"?O.pid:null,rootUri:ts(t.root,""),workspaceFolders:[{uri:ts(t.root,""),name:"repo"}],capabilities:{textDocument:{references:{dynamicRegistration:!1},definition:{dynamicRegistration:!1,linkSupport:!0},implementation:{dynamicRegistration:!1,linkSupport:!0},callHierarchy:{dynamicRegistration:!1}}},...t.initializationOptions!==void 0?{initializationOptions:t.initializationOptions}:{}},r);f("initialized",{});let g=y=>{let b=p?.capabilities?.[y];return b===!0||typeof b=="object"&&b!==null},h={references:g("referencesProvider"),definition:g("definitionProvider"),implementation:g("implementationProvider"),typeHierarchy:g("typeHierarchyProvider"),callHierarchy:g("callHierarchyProvider")},_=(y,b,x)=>({textDocument:{uri:ts(t.root,y)},position:{line:Math.max(0,b-1),character:x}});return{capabilities:h,didOpen(y,b,x){a.has(y)||(a.add(y),f("textDocument/didOpen",{textDocument:{uri:ts(t.root,y),languageId:x,version:1,text:b}}))},async references(y,b,x){if(!h.references)return[];let k=await m("textDocument/references",{..._(y,b,x),context:{includeDeclaration:!0}});return Vs(l,k)},async definition(y,b,x){return h.definition?Vs(l,await m("textDocument/definition",_(y,b,x))):[]},async incomingCalls(y,b,x){if(!h.callHierarchy)return[];let k=await m("textDocument/prepareCallHierarchy",_(y,b,x));if(!Array.isArray(k))return[];let v=[];try{for(let T of k)!T||typeof T!="object"||v.push(...z_(l,await m("callHierarchy/incomingCalls",{item:T})))}catch(T){throw new Eo(T,jn(v))}return jn(v)},alive(){return d===void 0},async shutdown(){try{for(let y of a)f("textDocument/didClose",{textDocument:{uri:ts(t.root,y)}});a.clear(),await m("shutdown",null,Math.min(n,2e3)),f("exit",void 0)}catch{}finally{u(new Error("session closed")),e.close()}}}}var Wl,Eo,YA,QA,Bl=z(()=>{"use strict";I();ko();Wl=class extends Error{constructor(t,n){super(`${t} exceeded ${n}ms`),this.name="LspTimeout"}},Eo=class extends Error{constructor(n,r){super(n instanceof Error?n.message:String(n),{cause:n});this.calls=r;this.name="LspIncomingCallsError"}calls},YA=5e3,QA=15e3});function G_(e,t){let n="callers"in t?t.callers:void 0,r=new Set;if(Array.isArray(n))for(let s of n)s&&typeof s.file=="string"&&r.add(s.file);let o=new Set(e.map(s=>s.file));return{both:[...o].filter(s=>r.has(s)).sort($),lspOnly:[...o].filter(s=>!r.has(s)).sort($),staticOnly:[...r].filter(s=>!o.has(s)).sort($)}}function Ul(e,t){return{server:e,ok:!1,reason:t,calls:[],agreement:{both:[],lspOnly:[],staticOnly:[]}}}async function q_(e,t,n,r){let o=[];if(!n.capabilities.callHierarchy)return{calls:o,reason:"server does not provide textDocument/prepareCallHierarchy"};try{for(let s of t){let a=ie(j(e.root,s.file),"utf8");n.didOpen(s.file,a,r??s.lang),o.push(...await n.incomingCalls(s.file,s.line,Ll(e.root,s.file,s.line,s.name)))}return{calls:jn(o)}}catch(s){return s instanceof Eo&&o.push(...s.calls),{calls:jn(o),reason:s instanceof Error?s.message:String(s)}}}var V_=z(()=>{"use strict";I();Ee();fe();le();Bl();ko();Dl()});function Rf(e,t){let n;try{n=ym(e.command,e.args??[],{cwd:t,stdio:["pipe","pipe","pipe"],...e.env?{env:{...O.env,...e.env}}:{}})}catch{return}let r=!1,o="",s=d=>{o=(o+d).slice(-eI)},a=[],l=[],c=d=>{if(!r){r=!0;for(let u of l)u(d)}};return n.on("error",d=>{s(d.message),c(null)}),n.on("close",d=>c(d)),n.stdin?.on("error",()=>c(null)),n.stdout?.on("error",()=>c(null)),n.stderr?.on("error",()=>c(null)),n.stdout?.on("data",d=>{for(let u of a)u(d)}),n.stderr?.setEncoding("utf8"),n.stderr?.on("data",d=>s(String(d))),{write(d){if(!r)try{n.stdin?.write(d)}catch{c(null)}},onData(d){a.push(d)},lastError(){let d=o.split(/\r?\n/).map(f=>f.trim()).filter(Boolean),u=d[d.length-1];return u&&u.length>300?`${u.slice(0,300)}\u2026`:u},onExit(d){r?d(null):l.push(d)},kill(){if(!r)try{n.kill("SIGKILL")}catch{}},close(){try{n.stdin?.end()}catch{}let d=setTimeout(()=>{try{n.kill("SIGKILL")}catch{}},2e3);d.unref?.(),n.on("close",()=>clearTimeout(d))}}}var eI,Cf=z(()=>{"use strict";I();Yo();eI=2048});function tI(e){try{let t=st(e);return t===e?[]:[t]}catch{return[]}}async function zl(e,t){if(!Yt(e.command))return{ok:!1,reason:`${e.command} is not on PATH`};let n=Rf(e,t);if(!n)return{ok:!1,reason:`could not start ${e.command}`};try{return{ok:!0,session:await vf(n,{root:t,rootAliases:tI(t),timeoutMs:Ol(e),startupTimeoutMs:D_(e),...e.initializationOptions!==void 0?{initializationOptions:e.initializationOptions}:{}}),transport:n}}catch(r){return n.close(),{ok:!1,reason:Ef(r instanceof Error?r.message:String(r),n)}}}function nI(e){return Re(e.files.filter(t=>t.kind!=="doc").map(t=>`${t.rel}:${t.hash}`).join(` -`))}async function Mf(e,t,n,r){if(n)return n.use(e,t.root,nI(t),r);let o=await zl(e,t.root);if(!o.ok)return o;let s=!1;try{return{ok:!0,value:await r({session:o.session,get warm(){return s},markWarm:()=>{s=!0}})}}finally{await o.session.shutdown()}}function sI(){let e=O.env.CODEINDEX_LSP_IDLE_MS;if(e===void 0)return;let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}var rI,J_,Js,Af=z(()=>{"use strict";I();Ee();et();xt();Bl();Nl();Cf();rI=5*6e4,J_=["SIGINT","SIGTERM","SIGHUP"],Js=class{entries=new Map;idleMs;open;live=new Set;killAll=()=>{for(let t of this.live)t.kill?.()};hooked=!1;closed=!1;constructor(t={}){this.idleMs=t.idleMs??sI()??rI,this.open=t.open??zl}get size(){return this.entries.size}async use(t,n,r,o,s=!1){let a=JSON.stringify([n,t.id]),l=JSON.stringify(t),c=this.entries.get(a);c&&(c.identity!==l||c.stamp!==r)&&(this.retire(a,c),c=void 0);let d=c?await c.opening:void 0;c&&d?.ok&&!d.session.alive()&&(this.retire(a,c),c=void 0);let u=c!==void 0;if(!c){this.hook();let p=this.open(t,n).then(g=>(g.ok&&(this.live.add(g.transport),g.transport.onExit(()=>{this.live.delete(g.transport),this.closed&&this.unhook()})),g));c={identity:l,stamp:r,opening:p,warm:!1,busy:0,retired:!1},this.entries.set(a,c),d=await c.opening}if(!d?.ok)return this.entries.get(a)===c&&this.entries.delete(a),{ok:!1,reason:d?.reason??"language server did not start"};let f=c;f.busy++,f.idle&&clearTimeout(f.idle),f.idle=void 0;let m;try{m=await o({session:d.session,get warm(){return f.warm},markWarm:()=>{f.warm=!0}})}finally{f.busy--,f.busy===0&&(f.retired?this.shutdown(f):(f.idle=setTimeout(()=>this.retire(a,f),this.idleMs),f.idle.unref?.()))}return u&&!s&&!d.session.alive()?(this.retire(a,f),this.use(t,n,r,o,!0)):{ok:!0,value:m}}async close(){let t=[...this.entries.values()];this.entries.clear(),this.closed=!0,await Promise.all(t.map(n=>this.shutdown(n))),this.unhook()}retire(t,n){this.entries.get(t)===n&&this.entries.delete(t),n.retired=!0,n.busy===0&&this.shutdown(n)}async shutdown(t){t.idle&&clearTimeout(t.idle),t.idle=void 0;let n=await t.opening;n.ok&&await n.session.shutdown()}onSignal=t=>{this.killAll(),this.unhook(!0),O.listenerCount(t)===0&&O.kill(O.pid,t)};hook(){if(this.closed=!1,!this.hooked){this.hooked=!0,O.on("exit",this.killAll);for(let t of J_)O.on(t,this.onSignal)}}unhook(t=!1){if(!(!this.hooked||this.live.size&&!t)){this.hooked=!1,O.removeListener("exit",this.killAll);for(let n of J_)O.removeListener(n,this.onSignal)}}}});async function vo(e,t,n=!1,r={}){let{path:o,source:s,ignored:a}=qs(t,r),l=a?{ignoredConfig:{path:a,reason:Fl}}:{},c=xo(t,r);if(!c)return{lspVersion:1,mode:"none",configPath:o??null,source:s,...l,servers:[],unmappedLanguages:[]};let d=new Map;for(let p of e.files)d.set(p.lang,(d.get(p.lang)??0)+1);let u=[];for(let p of c.servers){let g={id:p.id,languages:p.languages,command:p.command,onPath:Yt(p.command),filesInRepo:p.languages.reduce((h,_)=>h+(d.get(_)??0),0)};if(n){let h=await zl(p,e.root);h.ok?(g.reachable=!0,g.capabilities=h.session.capabilities,await h.session.shutdown()):(g.reachable=!1,g.error=h.reason)}u.push(g)}let f=new Set(c.servers.flatMap(p=>p.languages)),m=[...d.keys()].filter(p=>!f.has(p)&&p!=="other").sort();return{lspVersion:1,mode:"configured",configPath:o??null,source:s,...l,servers:u,unmappedLanguages:m}}async function Ro(e,t,n,r,o={}){let s;try{s=xo(t,o)}catch(p){return{...r,lsp:es("(config)",p instanceof Error?p.message:String(p))}}if(!s){let p=qs(t,o).ignored;return p?{...r,lsp:es("(config)",`${p} ignored: ${Fl}`)}:r}if(!r.defs.length)return{...r,lsp:es("(none)",`no declaration of ${n} to anchor a request on`)};let{groups:a,reasons:l}=Q_(s,r.defs),c=[],d=[],u=r.callSites.some(p=>!K_(p,r.defs));for(let[p,g]of a){let h=await Mf(p,e,o.pool,b=>Y_(b,p,()=>B_(e,n,{...r,defs:g},b.session,p.id,p.languageId),x=>x.lsp?.ok?x.lsp.refs.some(k=>!K_(k,g))?"full":"thin":"failed",u));if(!h.ok){l.push(`${p.id}: ${h.reason}`);continue}let{answer:_,partial:y}=h.value;_.lsp&&(d.push(..._.lsp.refs),_.lsp.ok||l.push(`${p.id}: ${_.lsp.reason??"request failed"}`)),y&&c.push(`${p.id}: ${X_}`)}let f=new Set,m=d.filter(p=>{let g=JSON.stringify([p.file,p.line,p.character]);return f.has(g)?!1:(f.add(g),!0)}).sort((p,g)=>p.fileg.file?1:p.line-g.line||(p.character??0)-(g.character??0));return{...r,lsp:{server:[...a.keys()].map(p=>p.id).sort().join(", ")||"(none)",ok:l.length===0,...Z_(l,c),refs:m,agreement:So(m,r)}}}async function Ks(e,t,n,r,o={}){let s;try{s=xo(t,o)}catch(y){return{...r,lsp:Ul("(config)",y instanceof Error?y.message:String(y))}}if(!s){let y=qs(t,o).ignored;return{...r,lsp:Ul("(none)",y?`${y} ignored: ${Fl}`:"no LSP server configured")}}let a=n.indexOf("@"),l=a<0?n:n.slice(0,a),c=a<0?void 0:n.slice(a+1),d=_n(e,l,{maxResults:1/0}).filter(y=>c===void 0||y.file===c);if(!d.length)return{...r,lsp:Ul("(none)",`no declaration of ${n} to anchor a request on`)};let{groups:u,reasons:f}=Q_(s,d),m=[],p=[],g="callers"in r?r.callers:void 0,h=Array.isArray(g)&&g.length>0;for(let[y,b]of u){let x=await Mf(y,e,o.pool,T=>Y_(T,y,()=>q_(e,b,T.session,y.languageId),F=>F.reason?"failed":F.calls.length?"full":"thin",h));if(!x.ok){f.push(`${y.id}: ${x.reason}`);continue}let{answer:k,partial:v}=x.value;p.push(...k.calls),k.reason&&f.push(`${y.id}: ${k.reason}`),v&&m.push(`${y.id}: ${X_}`)}let _=jn(p);return{...r,lsp:{server:[...u.keys()].map(y=>y.id).sort().join(", ")||"(none)",ok:f.length===0,...Z_(f,m),calls:_,agreement:G_(_,r)}}}function Z_(e,t){let n=[...new Set([...e,...t])].sort();return{...t.length?{partial:!0}:{},...n.length?{reason:n.join("; ")}:{}}}function K_(e,t){return t.some(n=>n.file===e.file&&n.line===e.line)}async function Y_(e,t,n,r,o){let s=await n(),a=Ol(t);for(let l of[...iI,1/0]){let c=r(s);if(c==="full"&&e.markWarm(),c!=="thin")return{answer:s,partial:!1};if(!o||e.warm)return{answer:s,partial:!1};if(l>a)break;a-=l,await new Promise(d=>setTimeout(d,l)),s=await n()}return{answer:s,partial:!0}}function Q_(e,t){let n=new Map,r=[];for(let o of t){let s=xf(e,o.lang);if(!s){r.push(`no server configured for ${o.lang}`);continue}let a=n.get(s)??[];a.push(o),n.set(s,a)}return{groups:n,reasons:r}}var X_,iI,Hl=z(()=>{"use strict";I();js();et();Nl();Dl();V_();ko();Af();Af();X_="answered with declarations only while the static tier found call sites; the server may still be indexing, or those sites are homonyms";iI=[100,250,500,1e3]});function mI(e){let t=new Map(e.files.map(s=>[s.rel,s.lang])),n=new Set;for(let s of e.fileEdges){if(s.dangling||s.kind==="contains"||s.kind==="doc-link"||s.kind==="mention")continue;let a=t.get(s.from),l=t.get(s.to);a!==void 0&&n.add(a),l!==void 0&&n.add(l)}let r=new Set;for(let s of e.files)nb.has(s.lang)&&(s.degIn>0||s.degOut>0&&!s.testFile)&&r.add(`${s.lang}\0${rb(s.rel)}`);let o=[];for(let s of e.files)s.fileKind!=="code"||s.degIn!==0||s.degOut!==0||s.testFile||!n.has(s.lang)||pI(s.rel)||nb.has(s.lang)&&r.has(`${s.lang}\0${rb(s.rel)}`)||o.push(s.rel);return o}function pI(e){let n=e.split("/").pop().split(".")[0].toLowerCase();return fI.has(n)}function If(e){return Array.isArray(e)?e:[e]}function Gl(e,t){let n;try{n=JSON.parse(e)}catch(r){let o=/position (\d+)/.exec(r instanceof Error?r.message:""),s="";if(o){let a=e.slice(0,Number(o[1]));s=` (line ${a.split(` +`});function vf(e,t){let n=t.lastError?.();return n&&!e.includes(n)?`${e}: ${n}`:e}async function Rf(e,t){let n=t.timeoutMs??tI,r=t.startupTimeoutMs??nI,o=kf(),s=new Map,a=new Set,l=[t.root,...(t.rootAliases??[]).filter(y=>y!==t.root)],c=1,d,u=y=>{d=y;for(let[,b]of s)clearTimeout(b.timer),b.reject(y);s.clear()};e.onData(y=>{for(let b of o.push(y)){if(typeof b.id!="number")continue;let S=s.get(b.id);S&&(s.delete(b.id),clearTimeout(S.timer),b.error?S.reject(new Error(`${b.error.message} (code ${b.error.code})`)):S.resolve(b.result))}}),e.onExit(y=>u(new Error(vf(`language server exited (code ${y??"unknown"})`,e))));let f=(y,b)=>{d||e.write(Wl({jsonrpc:"2.0",method:y,params:b}))},m=(y,b,S=n)=>{if(d)return Promise.reject(d);let k=c++;return new Promise((R,I)=>{let P=setTimeout(()=>{s.delete(k),I(new Bl(y,S))},S);P.unref?.(),s.set(k,{resolve:R,reject:I,timer:P}),e.write(Wl({jsonrpc:"2.0",id:k,method:y,params:b}))})},p=await m("initialize",{processId:typeof F<"u"&&typeof F.pid=="number"?F.pid:null,rootUri:ns(t.root,""),workspaceFolders:[{uri:ns(t.root,""),name:"repo"}],capabilities:{textDocument:{references:{dynamicRegistration:!1},definition:{dynamicRegistration:!1,linkSupport:!0},implementation:{dynamicRegistration:!1,linkSupport:!0},callHierarchy:{dynamicRegistration:!1}}},...t.initializationOptions!==void 0?{initializationOptions:t.initializationOptions}:{}},r);f("initialized",{});let g=y=>{let b=p?.capabilities?.[y];return b===!0||typeof b=="object"&&b!==null},h={references:g("referencesProvider"),definition:g("definitionProvider"),implementation:g("implementationProvider"),typeHierarchy:g("typeHierarchyProvider"),callHierarchy:g("callHierarchyProvider")},_=(y,b,S)=>({textDocument:{uri:ns(t.root,y)},position:{line:Math.max(0,b-1),character:S}});return{capabilities:h,didOpen(y,b,S){a.has(y)||(a.add(y),f("textDocument/didOpen",{textDocument:{uri:ns(t.root,y),languageId:S,version:1,text:b}}))},async references(y,b,S){if(!h.references)return[];let k=await m("textDocument/references",{..._(y,b,S),context:{includeDeclaration:!0}});return Vs(l,k)},async definition(y,b,S){return h.definition?Vs(l,await m("textDocument/definition",_(y,b,S))):[]},async incomingCalls(y,b,S){if(!h.callHierarchy)return[];let k=await m("textDocument/prepareCallHierarchy",_(y,b,S));if(!Array.isArray(k))return[];let R=[];try{for(let I of k)!I||typeof I!="object"||R.push(...G_(l,await m("callHierarchy/incomingCalls",{item:I})))}catch(I){throw new vo(I,Bn(R))}return Bn(R)},alive(){return d===void 0},async shutdown(){try{for(let y of a)f("textDocument/didClose",{textDocument:{uri:ns(t.root,y)}});a.clear(),await m("shutdown",null,Math.min(n,2e3)),f("exit",void 0)}catch{}finally{u(new Error("session closed")),e.close()}}}}var Bl,vo,tI,nI,Ul=H(()=>{"use strict";$();Eo();Bl=class extends Error{constructor(t,n){super(`${t} exceeded ${n}ms`),this.name="LspTimeout"}},vo=class extends Error{constructor(n,r){super(n instanceof Error?n.message:String(n),{cause:n});this.calls=r;this.name="LspIncomingCallsError"}calls},tI=5e3,nI=15e3});function V_(e,t){let n="callers"in t?t.callers:void 0,r=new Set;if(Array.isArray(n))for(let s of n)s&&typeof s.file=="string"&&r.add(s.file);let o=new Set(e.map(s=>s.file));return{both:[...o].filter(s=>r.has(s)).sort(T),lspOnly:[...o].filter(s=>!r.has(s)).sort(T),staticOnly:[...r].filter(s=>!o.has(s)).sort(T)}}function zl(e,t){return{server:e,ok:!1,reason:t,calls:[],agreement:{both:[],lspOnly:[],staticOnly:[]}}}async function J_(e,t,n,r){let o=[];if(!n.capabilities.callHierarchy)return{calls:o,reason:"server does not provide textDocument/prepareCallHierarchy"};try{for(let s of t){let a=ie(j(e.root,s.file),"utf8");n.didOpen(s.file,a,r??s.lang),o.push(...await n.incomingCalls(s.file,s.line,Dl(e.root,s.file,s.line,s.name)))}return{calls:Bn(o)}}catch(s){return s instanceof vo&&o.push(...s.calls),{calls:Bn(o),reason:s instanceof Error?s.message:String(s)}}}var K_=H(()=>{"use strict";$();ke();me();ce();Ul();Eo();jl()});function Cf(e,t){let n;try{n=_m(e.command,e.args??[],{cwd:t,stdio:["pipe","pipe","pipe"],...e.env?{env:{...F.env,...e.env}}:{}})}catch{return}let r=!1,o="",s=d=>{o=(o+d).slice(-rI)},a=[],l=[],c=d=>{if(!r){r=!0;for(let u of l)u(d)}};return n.on("error",d=>{s(d.message),c(null)}),n.on("close",d=>c(d)),n.stdin?.on("error",()=>c(null)),n.stdout?.on("error",()=>c(null)),n.stderr?.on("error",()=>c(null)),n.stdout?.on("data",d=>{for(let u of a)u(d)}),n.stderr?.setEncoding("utf8"),n.stderr?.on("data",d=>s(String(d))),{write(d){if(!r)try{n.stdin?.write(d)}catch{c(null)}},onData(d){a.push(d)},lastError(){let d=o.split(/\r?\n/).map(f=>f.trim()).filter(Boolean),u=d[d.length-1];return u&&u.length>300?`${u.slice(0,300)}\u2026`:u},onExit(d){r?d(null):l.push(d)},kill(){if(!r)try{n.kill("SIGKILL")}catch{}},close(){try{n.stdin?.end()}catch{}let d=setTimeout(()=>{try{n.kill("SIGKILL")}catch{}},2e3);d.unref?.(),n.on("close",()=>clearTimeout(d))}}}var rI,Mf=H(()=>{"use strict";$();Qo();rI=2048});function sI(e){try{let t=rt(e);return t===e?[]:[t]}catch{return[]}}async function Hl(e,t){if(!Qt(e.command))return{ok:!1,reason:`${e.command} is not on PATH`};let n=Cf(e,t);if(!n)return{ok:!1,reason:`could not start ${e.command}`};try{return{ok:!0,session:await Rf(n,{root:t,rootAliases:sI(t),timeoutMs:Nl(e),startupTimeoutMs:W_(e),...e.initializationOptions!==void 0?{initializationOptions:e.initializationOptions}:{}}),transport:n}}catch(r){return n.close(),{ok:!1,reason:vf(r instanceof Error?r.message:String(r),n)}}}function iI(e){return Re(e.files.filter(t=>t.kind!=="doc").map(t=>`${t.rel}:${t.hash}`).join(` +`))}async function Af(e,t,n,r){if(n)return n.use(e,t.root,iI(t),r);let o=await Hl(e,t.root);if(!o.ok)return o;let s=!1;try{return{ok:!0,value:await r({session:o.session,get warm(){return s},markWarm:()=>{s=!0}})}}finally{await o.session.shutdown()}}function aI(){let e=F.env.CODEINDEX_LSP_IDLE_MS;if(e===void 0)return;let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}var oI,X_,Js,If=H(()=>{"use strict";$();ke();et();St();Ul();Pl();Mf();oI=5*6e4,X_=["SIGINT","SIGTERM","SIGHUP"],Js=class{entries=new Map;idleMs;open;live=new Set;killAll=()=>{for(let t of this.live)t.kill?.()};hooked=!1;closed=!1;constructor(t={}){this.idleMs=t.idleMs??aI()??oI,this.open=t.open??Hl}get size(){return this.entries.size}async use(t,n,r,o,s=!1){let a=JSON.stringify([n,t.id]),l=JSON.stringify(t),c=this.entries.get(a);c&&(c.identity!==l||c.stamp!==r)&&(this.retire(a,c),c=void 0);let d=c?await c.opening:void 0;c&&d?.ok&&!d.session.alive()&&(this.retire(a,c),c=void 0);let u=c!==void 0;if(!c){this.hook();let p=this.open(t,n).then(g=>(g.ok&&(this.live.add(g.transport),g.transport.onExit(()=>{this.live.delete(g.transport),this.closed&&this.unhook()})),g));c={identity:l,stamp:r,opening:p,warm:!1,busy:0,retired:!1},this.entries.set(a,c),d=await c.opening}if(!d?.ok)return this.entries.get(a)===c&&this.entries.delete(a),{ok:!1,reason:d?.reason??"language server did not start"};let f=c;f.busy++,f.idle&&clearTimeout(f.idle),f.idle=void 0;let m;try{m=await o({session:d.session,get warm(){return f.warm},markWarm:()=>{f.warm=!0}})}finally{f.busy--,f.busy===0&&(f.retired?this.shutdown(f):(f.idle=setTimeout(()=>this.retire(a,f),this.idleMs),f.idle.unref?.()))}return u&&!s&&!d.session.alive()?(this.retire(a,f),this.use(t,n,r,o,!0)):{ok:!0,value:m}}async close(){let t=[...this.entries.values()];this.entries.clear(),this.closed=!0,await Promise.all(t.map(n=>this.shutdown(n))),this.unhook()}retire(t,n){this.entries.get(t)===n&&this.entries.delete(t),n.retired=!0,n.busy===0&&this.shutdown(n)}async shutdown(t){t.idle&&clearTimeout(t.idle),t.idle=void 0;let n=await t.opening;n.ok&&await n.session.shutdown()}onSignal=t=>{this.killAll(),this.unhook(!0),F.listenerCount(t)===0&&F.kill(F.pid,t)};hook(){if(this.closed=!1,!this.hooked){this.hooked=!0,F.on("exit",this.killAll);for(let t of X_)F.on(t,this.onSignal)}}unhook(t=!1){if(!(!this.hooked||this.live.size&&!t)){this.hooked=!1,F.removeListener("exit",this.killAll);for(let n of X_)F.removeListener(n,this.onSignal)}}}});async function Ro(e,t,n=!1,r={}){let{path:o,source:s,ignored:a}=qs(t,r),l=a?{ignoredConfig:{path:a,reason:Ol}}:{},c=So(t,r);if(!c)return{lspVersion:1,mode:"none",configPath:o??null,source:s,...l,servers:[],unmappedLanguages:[]};let d=new Map;for(let p of e.files)d.set(p.lang,(d.get(p.lang)??0)+1);let u=[];for(let p of c.servers){let g={id:p.id,languages:p.languages,command:p.command,onPath:Qt(p.command),filesInRepo:p.languages.reduce((h,_)=>h+(d.get(_)??0),0)};if(n){let h=await Hl(p,e.root);h.ok?(g.reachable=!0,g.capabilities=h.session.capabilities,await h.session.shutdown()):(g.reachable=!1,g.error=h.reason)}u.push(g)}let f=new Set(c.servers.flatMap(p=>p.languages)),m=[...d.keys()].filter(p=>!f.has(p)&&p!=="other").sort();return{lspVersion:1,mode:"configured",configPath:o??null,source:s,...l,servers:u,unmappedLanguages:m}}async function Co(e,t,n,r,o={}){let s;try{s=So(t,o)}catch(p){return{...r,lsp:ts("(config)",p instanceof Error?p.message:String(p))}}if(!s){let p=qs(t,o).ignored;return p?{...r,lsp:ts("(config)",`${p} ignored: ${Ol}`)}:r}if(!r.defs.length)return{...r,lsp:ts("(none)",`no declaration of ${n} to anchor a request on`)};let{groups:a,reasons:l}=tb(s,r.defs),c=[],d=[],u=r.callSites.some(p=>!Z_(p,r.defs));for(let[p,g]of a){let h=await Af(p,e,o.pool,b=>eb(b,p,()=>z_(e,n,{...r,defs:g},b.session,p.id,p.languageId),S=>S.lsp?.ok?S.lsp.refs.some(k=>!Z_(k,g))?"full":"thin":"failed",u));if(!h.ok){l.push(`${p.id}: ${h.reason}`);continue}let{answer:_,partial:y}=h.value;_.lsp&&(d.push(..._.lsp.refs),_.lsp.ok||l.push(`${p.id}: ${_.lsp.reason??"request failed"}`)),y&&c.push(`${p.id}: ${Y_}`)}let f=new Set,m=d.filter(p=>{let g=JSON.stringify([p.file,p.line,p.character]);return f.has(g)?!1:(f.add(g),!0)}).sort((p,g)=>p.fileg.file?1:p.line-g.line||(p.character??0)-(g.character??0));return{...r,lsp:{server:[...a.keys()].map(p=>p.id).sort().join(", ")||"(none)",ok:l.length===0,...Q_(l,c),refs:m,agreement:ko(m,r)}}}async function Ks(e,t,n,r,o={}){let s;try{s=So(t,o)}catch(y){return{...r,lsp:zl("(config)",y instanceof Error?y.message:String(y))}}if(!s){let y=qs(t,o).ignored;return{...r,lsp:zl("(none)",y?`${y} ignored: ${Ol}`:"no LSP server configured")}}let a=n.indexOf("@"),l=a<0?n:n.slice(0,a),c=a<0?void 0:n.slice(a+1),d=wn(e,l,{maxResults:1/0}).filter(y=>c===void 0||y.file===c);if(!d.length)return{...r,lsp:zl("(none)",`no declaration of ${n} to anchor a request on`)};let{groups:u,reasons:f}=tb(s,d),m=[],p=[],g="callers"in r?r.callers:void 0,h=Array.isArray(g)&&g.length>0;for(let[y,b]of u){let S=await Af(y,e,o.pool,I=>eb(I,y,()=>J_(e,b,I.session,y.languageId),P=>P.reason?"failed":P.calls.length?"full":"thin",h));if(!S.ok){f.push(`${y.id}: ${S.reason}`);continue}let{answer:k,partial:R}=S.value;p.push(...k.calls),k.reason&&f.push(`${y.id}: ${k.reason}`),R&&m.push(`${y.id}: ${Y_}`)}let _=Bn(p);return{...r,lsp:{server:[...u.keys()].map(y=>y.id).sort().join(", ")||"(none)",ok:f.length===0,...Q_(f,m),calls:_,agreement:V_(_,r)}}}function Q_(e,t){let n=[...new Set([...e,...t])].sort();return{...t.length?{partial:!0}:{},...n.length?{reason:n.join("; ")}:{}}}function Z_(e,t){return t.some(n=>n.file===e.file&&n.line===e.line)}async function eb(e,t,n,r,o){let s=await n(),a=Nl(t);for(let l of[...lI,1/0]){let c=r(s);if(c==="full"&&e.markWarm(),c!=="thin")return{answer:s,partial:!1};if(!o||e.warm)return{answer:s,partial:!1};if(l>a)break;a-=l,await new Promise(d=>setTimeout(d,l)),s=await n()}return{answer:s,partial:!0}}function tb(e,t){let n=new Map,r=[];for(let o of t){let s=Sf(e,o.lang);if(!s){r.push(`no server configured for ${o.lang}`);continue}let a=n.get(s)??[];a.push(o),n.set(s,a)}return{groups:n,reasons:r}}var Y_,lI,Gl=H(()=>{"use strict";$();js();et();Pl();jl();K_();Eo();If();If();Y_="answered with declarations only while the static tier found call sites; the server may still be indexing, or those sites are homonyms";lI=[100,250,500,1e3]});function hI(e){let t=new Map(e.files.map(s=>[s.rel,s.lang])),n=new Set;for(let s of e.fileEdges){if(s.dangling||s.kind==="contains"||s.kind==="doc-link"||s.kind==="mention")continue;let a=t.get(s.from),l=t.get(s.to);a!==void 0&&n.add(a),l!==void 0&&n.add(l)}let r=new Set;for(let s of e.files)sb.has(s.lang)&&(s.degIn>0||s.degOut>0&&!s.testFile)&&r.add(`${s.lang}\0${ib(s.rel)}`);let o=[];for(let s of e.files)s.fileKind!=="code"||s.degIn!==0||s.degOut!==0||s.testFile||!n.has(s.lang)||yI(s.rel)||sb.has(s.lang)&&r.has(`${s.lang}\0${ib(s.rel)}`)||o.push(s.rel);return o}function yI(e){let n=e.split("/").pop().split(".")[0].toLowerCase();return gI.has(n)}function $f(e){return Array.isArray(e)?e:[e]}function ql(e,t){let n;try{n=JSON.parse(e)}catch(r){let o=/position (\d+)/.exec(r instanceof Error?r.message:""),s="";if(o){let a=e.slice(0,Number(o[1]));s=` (line ${a.split(` `).length}, column ${a.length-a.lastIndexOf(` -`)})`}throw new Error(`rules config ${t} is not valid JSON${s}`)}try{return ql(n)}catch(r){throw new Error(`rules config ${t}: ${r instanceof Error?r.message:String(r)}`)}}function ql(e){let t=Array.isArray(e)?e:e?.rules;if(!Array.isArray(t))throw new Error("rules config must be an array (or an object with a `rules` array)");return t.map((n,r)=>{let o=`rules[${r}]`;if(typeof n!="object"||n===null||Array.isArray(n))throw new Error(`${o}: must be an object`);let s=n;if(typeof s.name!="string"||!s.name)throw new Error(`${o}: \`name\` (non-empty string) is required`);let a=s.builtin===void 0?cI:s.builtin==="literals"?dI:ib,l=Object.keys(s).filter(f=>!a.has(f)).sort($);if(l.length){let f=s.builtin===void 0?"a forbidden-edge rule":`builtin "${String(s.builtin)}"`;throw new Error(`${o} (${s.name}): unknown key${l.length>1?"s":""} ${l.map(m=>`\`${m}\``).join(", ")} \u2014 ${f} takes ${[...a].join(", ")}`)}if(s.severity!==void 0&&!aI.has(s.severity))throw new Error(`${o} (${s.name}): \`severity\` must be "error" or "warn"`);if(s.comment!==void 0&&typeof s.comment!="string")throw new Error(`${o} (${s.name}): \`comment\` must be a string`);if(s.builtin!==void 0){if(!lI.has(s.builtin))throw new Error(`${o} (${s.name}): \`builtin\` must be "cycles", "orphans" or "literals"`);if(s.tiers!==void 0&&!(Array.isArray(s.tiers)&&s.tiers.length>0&&s.tiers.every(m=>tb.has(m))))throw new Error(`${o} (${s.name}): \`tiers\` must be a non-empty array of ${[...tb].join(", ")}`);for(let f of["minFiles","minCount"]){let m=s[f];if(m!==void 0&&!(typeof m=="number"&&Number.isInteger(m)&&m>=1))throw new Error(`${o} (${s.name}): \`${f}\` must be a positive integer`)}if(s.includeTests!==void 0&&typeof s.includeTests!="boolean")throw new Error(`${o} (${s.name}): \`includeTests\` must be a boolean`);return{name:s.name,builtin:s.builtin,severity:s.severity,comment:s.comment,...s.tiers!==void 0?{tiers:s.tiers}:{},...s.minFiles!==void 0?{minFiles:s.minFiles}:{},...s.minCount!==void 0?{minCount:s.minCount}:{},...s.includeTests!==void 0?{includeTests:s.includeTests}:{}}}let c=f=>{let m=s[f];if(!(typeof m=="string"?m.length>0:Array.isArray(m)&&m.length>0&&m.every(g=>typeof g=="string"&&g)))throw new Error(`${o} (${s.name}): \`${f}\` must be a glob or a non-empty array of globs`);return m},d=c("from"),u=c("to");if(s.kind!==void 0&&!(Array.isArray(s.kind)&&s.kind.length>0&&s.kind.every(m=>eb.has(m))))throw new Error(`${o} (${s.name}): \`kind\` must be a non-empty array of edge kinds (${[...eb].join(", ")})`);return{name:s.name,from:d,to:u,kind:s.kind,severity:s.severity,comment:s.comment}})}function gI(e){let t=new Map;for(let u of e.moduleEdges){if(u.kind!=="import")continue;let f=t.get(u.from);f||t.set(u.from,f=[]),f.push(u.to)}for(let u of t.values())u.sort($);let n=[...t.keys()].sort($),r=new Map,o=new Map,s=new Set,a=[],l=[],c=0;for(let u of n){if(r.has(u))continue;let f=[{node:u,next:0}];for(;f.length;){let m=f[f.length-1],p=m.node;m.next===0&&(r.set(p,c),o.set(p,c),c++,a.push(p),s.add(p));let g=t.get(p)??[];if(m.next1&&l.push(_)}f.pop();let h=f[f.length-1];h&&o.set(h.node,Math.min(o.get(h.node),o.get(p)))}}}let d=[];for(let u of l){let f=new Set(u),m=[...u].sort($)[0],p=new Map([[m,null]]),g=[m];for(let y=0;y(t.get(y)??[]).includes(m)&&y!==m)??m,_=[];for(let y=h;y!==null;y=p.get(y)??null)_.unshift(y);_.push(m),d.push({start:m,path:_})}return d}function Co(e,t,n={}){let r=[],o=(c,d)=>{r.push({rule:c.name,...d,severity:c.severity??"error",...c.comment!==void 0?{comment:c.comment}:{}})},s=new Set(e.files.map(c=>c.rel)),a=new Map,l=c=>{if(!n.scan)return e.literalDuplications??[];let d=`${c.minFiles??""}\0${c.minCount??""}\0${c.includeTests===!0}`,u=a.get(d);return u||(u=Pn(n.scan,{minFiles:c.minFiles,minCount:c.minCount,includeTests:c.includeTests}).duplications,a.set(d,u)),u};for(let c of t){if("builtin"in c){if(c.builtin==="cycles")for(let p of gI(e))o(c,{from:p.start,to:p.path.join(" -> "),kind:"cycle"});else if(c.builtin==="literals"){let p=new Set(c.tiers?.length?c.tiers:uI);for(let g of l(c)){if(!p.has(g.tier))continue;let h=g.holders[0]??g.literals[0];o(c,{from:`${h.file}:${h.line}`,to:`${g.tier} ${JSON.stringify(g.value)} (${g.count} sites, ${g.files} files)`,kind:"literal"})}}else for(let p of mI(e))o(c,{from:p,to:p,kind:"orphan"});continue}let d=It(If(c.from)),u=It(If(c.to));if(!d||!u)continue;let f=!1;for(let[p,g]of[["from",d],["to",u]])e.files.some(h=>g(h.rel))||(f=!0,r.push({rule:c.name,from:If(c[p]).join(", "),to:`\`${p}\` matches no indexed file`,kind:"unmatched",severity:"warn"}));if(f)continue;let m=c.kind?.length?new Set(c.kind):null;for(let p of e.fileEdges)p.dangling||!s.has(p.to)||m&&!m.has(p.kind)||!d(p.from)||!u(p.to)||o(c,{from:p.from,to:p.to,kind:p.kind})}return r.sort((c,d)=>$(c.rule,d.rule)||$(c.from,d.from)||$(c.to,d.to)||$(c.kind,d.kind)),r}function Vl(e){let t=e.filter(n=>n.severity==="error").length;return{errors:t,warnings:e.length-t,violations:e}}var oI,eb,aI,lI,tb,sb,cI,ib,dI,uI,fI,nb,rb,Jl=z(()=>{"use strict";I();yi();Us();le();oI={contains:!0,"doc-link":!0,import:!0,call:!0,extends:!0,implements:!0,use:!0,mention:!0},eb=new Set(Object.keys(oI)),aI=new Set(["error","warn"]),lI=new Set(["cycles","orphans","literals"]),tb=new Set(["competing","bypassed","uncentralized"]),sb=["name","severity","comment"],cI=new Set([...sb,"from","to","kind"]),ib=new Set([...sb,"builtin"]),dI=new Set([...ib,"tiers","minFiles","minCount","includeTests"]),uI=["competing","bypassed"],fI=new Set(["index","main","app","application","cli","server","entry","entrypoint","setup","conftest","__init__","__main__","mod","lib","wsgi","asgi","manage"]),nb=new Set(["go","java","kotlin","scala"]),rb=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):""});function kI(e){return Cs(Mo(e)||"(root)")===2||/(^|\/)testdata\//.test(e)}function ob(e){if(yI.has(e.kind))return!0;if(e.kind!=="const"||!e.signature)return!1;let t=Oe(e.lang);return t==="js"?_I.test(e.signature):t==="python"&&bI.test(e.signature)}function EI(e){switch(Oe(e.lang)){case"python":return/^__\w+__$/.test(e.name);case"go":return e.name==="init"||e.name==="main";case"js":return e.name==="constructor";default:return!1}}function Ao(e,t={}){let n=t.kinds==="all",r=Ns(e),o=Ot(e),s=rr(e,o),a=CI(e,o,s),l=m=>{let p=r.get(`${m.name}@${m.file}`)??r.get(m.name);return!!p&&p.def.file===m.file&&p.callers.length>0},c=vI(e,s,m=>l(m)||a.has(`${m.name}${yt}${m.file}`)),d=[];for(let m of e.files)if(!Ft(m.rel)&&!(!t.includeTail&&kI(m.rel)))for(let p of m.symbols)!p.exported||hI.has(p.kind)||EI(p)||!n&&!ob(p)||a.has(`${p.name}${yt}${p.file}`)||l(p)||c(p)||d.push(p);let u=RI(e,d,s),f=[];for(let m of d){let p=u(m);p&&!ob(m)||f.push({name:m.name,file:m.file,line:m.line,kind:m.kind,tier:p?"uncalled":"unreferenced"})}return f.sort((m,p)=>$(m.tier,p.tier)||$(m.file,p.file)||m.line-p.line)}function vI(e,t,n){let r=[...t];for(let d of Hi(e))r.push({...d,kind:"implements"});let o=new Map;for(let{sub:d,sup:u}of xu(e,r)){let f=o.get(d)??[];f.push(u),o.set(d,f)}let s=new Map;for(let d of t){let u=`${d.from}${yt}${d.fromFile}`;s.set(u,(s.get(u)??0)+1)}let a=new Set;for(let d of e.files){if(Oe(d.lang)==="go")continue;let u=new Map;for(let f of d.relations??[])u.set(f.from,(u.get(f.from)??0)+1);for(let[f,m]of u)m>(s.get(`${f}${yt}${d.rel}`)??0)&&a.add(`${f}${yt}${d.rel}`)}let l=new Map,c=(d,u)=>{let f=l.get(d);if(f!==void 0)return f;let m=o.get(d),p;return m?(u.add(d),p=m.some(g=>n(g)||!u.has(g)&&c(g,u))):p=!!d.parent&&a.has(`${d.parent}${yt}${d.file}`),l.set(d,p),p};return d=>!!d.parent&&c(d,new Set)}function RI(e,t,n){let r=new Map;for(let m of t){let p=Oe(m.lang),g=r.get(p);g||r.set(p,g=new Map),g.has(m.name)||g.set(m.name,[])}let o=(m,p,g)=>{if(p===void 0)return;let h=m?.get(p);h&&h.length<2&&h[h.length-1]!==g&&h.push(g)},s=new Map,a=new Set;for(let m of e.files){if(m.kind!=="code")continue;s.set(m.rel,m.lang);let p=Oe(m.lang),g=r.get(p);if(g){m.idents===void 0&&a.add(p);for(let h of m.idents??[])o(g,h,m.rel);for(let h of m.calls??[])o(g,h.name,m.rel),o(g,h.receiver,m.rel);for(let h of m.importedNames??[])o(g,h,m.rel);for(let h of m.importAliases??[])o(g,h.name,m.rel),o(g,h.local,m.rel);for(let h of m.relations??[])o(g,h.to,"")}}for(let m of n)o(r.get(Oe(s.get(m.toFile)??"")),m.to,"");let l=ll(e),c=m=>(r.get(Oe(m.lang))?.get(m.name)??[]).some(g=>g!==m.file)||[...l.get(m.name)??[]].some(g=>g!==m.file),d=new Map;for(let m of t){let p=Oe(m.lang);if(c(m)||SI.test(m.name)&&!a.has(p))continue;let g=d.get(p);g||d.set(p,g=new Set),g.add(m.name)}if(d.size)for(let m of e.files){if(m.kind!=="code")continue;let p=Oe(m.lang),g=d.get(p);if(!g)continue;let h=se(j(e.root,m.rel)),_=p==="js"?/[A-Za-z_$][\w$]*/g:/[A-Za-z_]\w*/g,y=new Set;for(let b of h.match(_)??[])g.has(b)&&y.add(b);for(let b of y)o(r.get(p),b,m.rel)}let u=new Set,f=new Map;for(let m of t){if(c(m))continue;let p=f.get(m.file)??[];p.push(m),f.set(m.file,p)}for(let[m,p]of f){let g=new Set(p.map(y=>y.name)),h=Oe(p[0].lang)==="js"?/[A-Za-z_$][\w$]*/g:/[A-Za-z_]\w*/g,_=new Map;ol(se(j(e.root,m)),p[0].lang).split(` -`).forEach((y,b)=>{for(let x of y.match(h)??[])g.has(x)&&(_.get(x)??_.set(x,[]).get(x)).push(b+1)});for(let y of p){let b=y.endLine??y.line;(_.get(y.name)??[]).some(x=>xb)&&u.add(y)}}return m=>u.has(m)||c(m)}function CI(e,t,n){let r=ln(e),o=new Map(e.files.map(p=>[p.rel,p])),s=II(e,r,o);if(!s.length)for(let p of e.files)p.kind==="code"&&xI.test(p.rel)&&s.push({rel:p.rel});for(let p of e.files)(p.rel==="__init__.py"||p.rel.endsWith("/__init__.py"))&&s.push({rel:p.rel});let a=Ds(t),l=new Set,c=new Set;for(let p=0;p<5&&s.length;p++){let g=[];for(let{rel:h,names:_}of s){let y=`${h}${yt}${_?[..._].sort($).join(","):"*"}`;if(c.has(y))continue;c.add(y);let b=o.get(h);if(!b)continue;let x=new Set;for(let k of b.symbols)if(k.kind==="reexport")(!_||_.has(k.name))&&x.add(k.name);else if(k.kind==="reexport-all"){let v=/^\* \((.+)\)$/.exec(k.name)?.[1],T=v===void 0?void 0:ct(h,b.ext,v,r);T?.kind==="resolved"&&g.push({rel:T.target,..._?{names:_}:{}})}else k.exported&&k.kind!=="default"&&(!_||_.has(k.name))&&l.add(`${k.name}${yt}${k.file}`);if(x.size)for(let k of[...a.get(h)??[]].sort($))g.push({rel:k,names:x})}s=g}for(let p of MI(e,r))l.add(p);let d=new Map;for(let p of n){let g=`${p.from}${yt}${p.fromFile}`,h=d.get(g)??[];h.push(`${p.to}${yt}${p.toFile}`),d.set(g,h)}let u=new Map;for(let p of e.files)for(let g of p.symbols){if(!g.parent)continue;let h=`${g.parent}${yt}${g.file}`,_=u.get(h)??[];_.push(`${g.name}${yt}${g.file}`),u.set(h,_)}let f=new Set;for(let p of e.files)for(let g of p.symbols)wI.has(g.kind)&&f.add(`${g.name}${yt}${g.file}`);let m=[...l].sort($);for(;m.length;){let p=m.pop(),g=[...d.get(p)??[],...f.has(p)?u.get(p)??[]:[]];for(let h of g)l.has(h)||(l.add(h),m.push(h))}return l}function MI(e,t){let n=[],r=new Set;for(let a of e.files)a.lang==="go"&&!a.rel.endsWith("_test.go")&&a.symbols.some(l=>l.name==="main"&&!l.parent&&l.kind==="function")&&r.add(Mo(a.rel));let o=[];for(let a of e.files){let l=a.rel.slice(a.rel.lastIndexOf("/")+1);if(l!=="build.gradle"&&l!=="build.gradle.kts"&&l!=="pom.xml")continue;let c=se(j(e.root,a.rel));(l==="pom.xml"?/|maven-deploy-plugin|central-publishing-maven-plugin|nexus-staging-maven-plugin/.test(c):/\bjava-library\b|\bmaven-publish\b|com\.vanniktech\.maven\.publish/.test(c))&&o.push(Mo(a.rel))}let s=(a,l)=>!l||a.startsWith(l+"/");for(let a of e.files)if(!(a.kind!=="code"||Ft(a.rel))){if(a.lang==="go"){if(a.rel.endsWith("_test.go"))continue;let l=t.goModules.find(u=>s(a.rel,u.dir));if(!l)continue;let c=Mo(a.rel),d=l.dir?c.slice(l.dir.length+1):c;if(r.has(c)||/(^|\/)internal(\/|$)/.test(d))continue;for(let u of a.symbols)u.exported&&n.push(`${u.name}${yt}${u.file}`)}else if(AI.has(a.lang)&&o.some(l=>s(a.rel,l))&&!/(^|\/)src\/test\//.test(a.rel))for(let l of a.symbols)l.exported&&!l.parent&&n.push(`${l.name}${yt}${l.file}`)}return n}function II(e,t,n){let r=new Set,o=new Map,s=l=>n.get(l)?.kind==="code";for(let l of e.files){let c=l.rel.slice(l.rel.lastIndexOf("/")+1),d=Mo(l.rel);if(c==="package.json"){let u=Or(se(j(e.root,l.rel)));if(!u||typeof u!="object")continue;let f=[],m=h=>{typeof h=="string"?f.push(h):Array.isArray(h)?h.forEach(m):h&&typeof h=="object"&&Object.values(h).forEach(m)},p=u;for(let h of["source","main","module","types","typings","bin","exports"])m(p[h]);typeof p.browser=="string"&&m(p.browser);let g=d?`${d}/package.json`:"package.json";for(let h of f){let _=h.slice(h.lastIndexOf("/")+1);if(h.includes("*")||_.includes(".")&&!/\.[cm]?[jt]sx?$/.test(_))continue;let y=_.replace(/(\.d)?\.[cm]?[jt]sx?$/,"");for(let b of[h,...cu(h),`src/${y}`]){let x=ct(g,".ts",b.startsWith(".")?b:`./${b}`,t);x.kind==="resolved"&&s(x.target)&&r.add(x.target)}}}else if(c==="pyproject.toml"){let u=se(j(e.root,l.rel)),f=/^\[(?:project\.(?:gui-)?scripts|tool\.poetry\.scripts)\]\s*$([\s\S]*?)(?=^\[|(?![\s\S]))/gm;for(let m of u.matchAll(f))for(let p of m[1].matchAll(/^\s*[\w.-]+\s*=\s*["']([\w.]+):(\w+)[\w.]*["']/gm)){let g=ct(d?`${d}/pyproject.py`:"pyproject.py",".py",p[1],t);if(g.kind!=="resolved"||!s(g.target))continue;let h=o.get(g.target)??new Set;o.set(g.target,h.add(p[2]))}}}for(let l of t.rustCrates)l.rootFile&&r.add(l.rootFile);let a=[...r].sort($).map(l=>({rel:l}));for(let l of[...o.keys()].sort($))r.has(l)||a.push({rel:l,names:o.get(l)});return a}function Kl(e,t){return t===void 0||e.length<=t?e:{total:e.length,shown:t,truncated:!0,candidates:e.slice(0,t)}}var hI,yI,_I,bI,wI,xI,SI,yt,Mo,AI,Xl=z(()=>{"use strict";I();fe();gt();ir();Ms();Tn();Wr();An();lr();Ze();le();Os();hI=new Set(["reexport","reexport-all","default"]),yI=new Set(["function","method","def","constructor","operator","class","macro"]),_I=/^[\w$]+\s*(?::[^=]*)?=\s*(?:async\s+)?(?:function\b|\(|[\w$]+\s*=>)/,bI=/^\w+\s*(?::[^=]*)?=\s*lambda\b/,wI=new Set(["class","interface","struct","trait","object","enum","record","protocol","module","type"]),xI=/(^|\/)(index|main|cli|mod|lib|__main__)\.[a-z]+$/,SI=/^[A-Za-z_]\w{4,}$/,yt="\0",Mo=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";AI=new Set(["java","kotlin","scala"])});function lb(e,t){let n=new Set(e.modules.map(c=>c.slug));for(let c of e.moduleEdges)n.add(c.from).add(c.to);let r=[...n].sort($),o=new Map(r.map(c=>[c,t+c.replace(/[^A-Za-z0-9_]/g,"_")])),s=new Map;for(let c of o.values())s.set(c,(s.get(c)??0)+1);let a=new Set([...o.values()].filter(c=>s.get(c)===1)),l=new Map;for(let c of r){let d=o.get(c),u=d;if(s.get(d)>1){for(let f=2;a.has(u);f++)u=`${d}_${f}`;a.add(u)}l.set(c,u)}return l}function TI(e,t){if(e.modules.some(o=>o.slug===t))return t;let n=t.replace(/\/+$/,""),r=e.modules.find(o=>o.path===n);return r?r.slug:e.files.find(o=>o.rel===t)?.module}function cb(e){return e.replace(/#/g,"#35;").replace(/"/g,"#quot;").replace(/&/g,"#38;").replace(//g,"#gt;").replace(/`/g,"#96;").replace(/[\r\n]+/g," ")}function Io(e,t={}){let n=t.maxEdges??80,r=t.module?TI(e,t.module):void 0;if(t.module&&!r)throw new Error(`no such file or module in the index: ${t.module}`);let o=lb(e,"m_"),s=[...e.moduleEdges].filter(d=>!d.dangling);r&&(s=s.filter(d=>d.from===r||d.to===r)),s.sort((d,u)=>u.weight-d.weight||$(d.from,u.from)||$(d.to,u.to));let a=Math.max(0,s.length-n);s=s.slice(0,n);let l=new Set;for(let d of s)l.add(d.from),l.add(d.to);r&&l.add(r);let c=["graph LR"];for(let d of[...e.modules].sort((u,f)=>$(u.slug,f.slug)))l.has(d.slug)&&c.push(` ${o.get(d.slug)}["${$I(d)}"]`);for(let d of s){let u=d.kind==="import"?"":`|${d.kind}|`;c.push(` ${o.get(d.from)} -->${u} ${o.get(d.to)}`)}return a&&c.push(` %% ${a} lighter edges omitted (maxEdges=${n})`),c.join(` +`)})`}throw new Error(`rules config ${t} is not valid JSON${s}`)}try{return Vl(n)}catch(r){throw new Error(`rules config ${t}: ${r instanceof Error?r.message:String(r)}`)}}function Vl(e){let t=Array.isArray(e)?e:e?.rules;if(!Array.isArray(t))throw new Error("rules config must be an array (or an object with a `rules` array)");return t.map((n,r)=>{let o=`rules[${r}]`;if(typeof n!="object"||n===null||Array.isArray(n))throw new Error(`${o}: must be an object`);let s=n;if(typeof s.name!="string"||!s.name)throw new Error(`${o}: \`name\` (non-empty string) is required`);let a=s.builtin===void 0?fI:s.builtin==="literals"?mI:ab,l=Object.keys(s).filter(f=>!a.has(f)).sort(T);if(l.length){let f=s.builtin===void 0?"a forbidden-edge rule":`builtin "${String(s.builtin)}"`;throw new Error(`${o} (${s.name}): unknown key${l.length>1?"s":""} ${l.map(m=>`\`${m}\``).join(", ")} \u2014 ${f} takes ${[...a].join(", ")}`)}if(s.severity!==void 0&&!dI.has(s.severity))throw new Error(`${o} (${s.name}): \`severity\` must be "error" or "warn"`);if(s.comment!==void 0&&typeof s.comment!="string")throw new Error(`${o} (${s.name}): \`comment\` must be a string`);if(s.builtin!==void 0){if(!uI.has(s.builtin))throw new Error(`${o} (${s.name}): \`builtin\` must be "cycles", "orphans" or "literals"`);if(s.tiers!==void 0&&!(Array.isArray(s.tiers)&&s.tiers.length>0&&s.tiers.every(m=>rb.has(m))))throw new Error(`${o} (${s.name}): \`tiers\` must be a non-empty array of ${[...rb].join(", ")}`);for(let f of["minFiles","minCount"]){let m=s[f];if(m!==void 0&&!(typeof m=="number"&&Number.isInteger(m)&&m>=1))throw new Error(`${o} (${s.name}): \`${f}\` must be a positive integer`)}if(s.includeTests!==void 0&&typeof s.includeTests!="boolean")throw new Error(`${o} (${s.name}): \`includeTests\` must be a boolean`);return{name:s.name,builtin:s.builtin,severity:s.severity,comment:s.comment,...s.tiers!==void 0?{tiers:s.tiers}:{},...s.minFiles!==void 0?{minFiles:s.minFiles}:{},...s.minCount!==void 0?{minCount:s.minCount}:{},...s.includeTests!==void 0?{includeTests:s.includeTests}:{}}}let c=f=>{let m=s[f];if(!(typeof m=="string"?m.length>0:Array.isArray(m)&&m.length>0&&m.every(g=>typeof g=="string"&&g)))throw new Error(`${o} (${s.name}): \`${f}\` must be a glob or a non-empty array of globs`);return m},d=c("from"),u=c("to");if(s.kind!==void 0&&!(Array.isArray(s.kind)&&s.kind.length>0&&s.kind.every(m=>nb.has(m))))throw new Error(`${o} (${s.name}): \`kind\` must be a non-empty array of edge kinds (${[...nb].join(", ")})`);return{name:s.name,from:d,to:u,kind:s.kind,severity:s.severity,comment:s.comment}})}function _I(e){let t=new Map;for(let u of e.moduleEdges){if(u.kind!=="import")continue;let f=t.get(u.from);f||t.set(u.from,f=[]),f.push(u.to)}for(let u of t.values())u.sort(T);let n=[...t.keys()].sort(T),r=new Map,o=new Map,s=new Set,a=[],l=[],c=0;for(let u of n){if(r.has(u))continue;let f=[{node:u,next:0}];for(;f.length;){let m=f[f.length-1],p=m.node;m.next===0&&(r.set(p,c),o.set(p,c),c++,a.push(p),s.add(p));let g=t.get(p)??[];if(m.next1&&l.push(_)}f.pop();let h=f[f.length-1];h&&o.set(h.node,Math.min(o.get(h.node),o.get(p)))}}}let d=[];for(let u of l){let f=new Set(u),m=[...u].sort(T)[0],p=new Map([[m,null]]),g=[m];for(let y=0;y(t.get(y)??[]).includes(m)&&y!==m)??m,_=[];for(let y=h;y!==null;y=p.get(y)??null)_.unshift(y);_.push(m),d.push({start:m,path:_})}return d}function Mo(e,t,n={}){let r=[],o=(c,d)=>{r.push({rule:c.name,...d,severity:c.severity??"error",...c.comment!==void 0?{comment:c.comment}:{}})},s=new Set(e.files.map(c=>c.rel)),a=new Map,l=c=>{if(!n.scan)return e.literalDuplications??[];let d=`${c.minFiles??""}\0${c.minCount??""}\0${c.includeTests===!0}`,u=a.get(d);return u||(u=Dn(n.scan,{minFiles:c.minFiles,minCount:c.minCount,includeTests:c.includeTests}).duplications,a.set(d,u)),u};for(let c of t){if("builtin"in c){if(c.builtin==="cycles")for(let p of _I(e))o(c,{from:p.start,to:p.path.join(" -> "),kind:"cycle"});else if(c.builtin==="literals"){let p=new Set(c.tiers?.length?c.tiers:pI);for(let g of l(c)){if(!p.has(g.tier))continue;let h=g.holders[0]??g.literals[0];o(c,{from:`${h.file}:${h.line}`,to:`${g.tier} ${JSON.stringify(g.value)} (${g.count} sites, ${g.files} files)`,kind:"literal"})}}else for(let p of hI(e))o(c,{from:p,to:p,kind:"orphan"});continue}let d=It($f(c.from)),u=It($f(c.to));if(!d||!u)continue;let f=!1;for(let[p,g]of[["from",d],["to",u]])e.files.some(h=>g(h.rel))||(f=!0,r.push({rule:c.name,from:$f(c[p]).join(", "),to:`\`${p}\` matches no indexed file`,kind:"unmatched",severity:"warn"}));if(f)continue;let m=c.kind?.length?new Set(c.kind):null;for(let p of e.fileEdges)p.dangling||!s.has(p.to)||m&&!m.has(p.kind)||!d(p.from)||!u(p.to)||o(c,{from:p.from,to:p.to,kind:p.kind})}return r.sort((c,d)=>T(c.rule,d.rule)||T(c.from,d.from)||T(c.to,d.to)||T(c.kind,d.kind)),r}function Jl(e){let t=e.filter(n=>n.severity==="error").length;return{errors:t,warnings:e.length-t,violations:e}}var cI,nb,dI,uI,rb,ob,fI,ab,mI,pI,gI,sb,ib,Kl=H(()=>{"use strict";$();_i();Us();ce();cI={contains:!0,"doc-link":!0,import:!0,call:!0,extends:!0,implements:!0,use:!0,mention:!0},nb=new Set(Object.keys(cI)),dI=new Set(["error","warn"]),uI=new Set(["cycles","orphans","literals"]),rb=new Set(["competing","bypassed","uncentralized"]),ob=["name","severity","comment"],fI=new Set([...ob,"from","to","kind"]),ab=new Set([...ob,"builtin"]),mI=new Set([...ab,"tiers","minFiles","minCount","includeTests"]),pI=["competing","bypassed"],gI=new Set(["index","main","app","application","cli","server","entry","entrypoint","setup","conftest","__init__","__main__","mod","lib","wsgi","asgi","manage"]),sb=new Set(["go","java","kotlin","scala"]),ib=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):""});function RI(e){return Cs(Ao(e)||"(root)")===2||/(^|\/)testdata\//.test(e)}function lb(e){if(wI.has(e.kind))return!0;if(e.kind!=="const"||!e.signature)return!1;let t=Fe(e.lang);return t==="js"?xI.test(e.signature):t==="python"&&SI.test(e.signature)}function CI(e){switch(Fe(e.lang)){case"python":return/^__\w+__$/.test(e.name);case"go":return e.name==="init"||e.name==="main";case"js":return e.name==="constructor";default:return!1}}function Io(e,t={}){let n=t.kinds==="all",r=Ns(e),o=Ot(e),s=ir(e,o),a=II(e,o,s),l=m=>{let p=r.get(`${m.name}@${m.file}`)??r.get(m.name);return!!p&&p.def.file===m.file&&p.callers.length>0},c=MI(e,s,m=>l(m)||a.has(`${m.name}${_t}${m.file}`)),d=[];for(let m of e.files)if(!Ft(m.rel)&&!(!t.includeTail&&RI(m.rel)))for(let p of m.symbols)!p.exported||bI.has(p.kind)||CI(p)||!n&&!lb(p)||a.has(`${p.name}${_t}${p.file}`)||l(p)||c(p)||d.push(p);let u=AI(e,d,s),f=[];for(let m of d){let p=u(m);p&&!lb(m)||f.push({name:m.name,file:m.file,line:m.line,kind:m.kind,tier:p?"uncalled":"unreferenced"})}return f.sort((m,p)=>T(m.tier,p.tier)||T(m.file,p.file)||m.line-p.line)}function MI(e,t,n){let r=[...t];for(let d of Gi(e))r.push({...d,kind:"implements"});let o=new Map;for(let{sub:d,sup:u}of Su(e,r)){let f=o.get(d)??[];f.push(u),o.set(d,f)}let s=new Map;for(let d of t){let u=`${d.from}${_t}${d.fromFile}`;s.set(u,(s.get(u)??0)+1)}let a=new Set;for(let d of e.files){if(Fe(d.lang)==="go")continue;let u=new Map;for(let f of d.relations??[])u.set(f.from,(u.get(f.from)??0)+1);for(let[f,m]of u)m>(s.get(`${f}${_t}${d.rel}`)??0)&&a.add(`${f}${_t}${d.rel}`)}let l=new Map,c=(d,u)=>{let f=l.get(d);if(f!==void 0)return f;let m=o.get(d),p;return m?(u.add(d),p=m.some(g=>n(g)||!u.has(g)&&c(g,u))):p=!!d.parent&&a.has(`${d.parent}${_t}${d.file}`),l.set(d,p),p};return d=>!!d.parent&&c(d,new Set)}function AI(e,t,n){let r=new Map;for(let m of t){let p=Fe(m.lang),g=r.get(p);g||r.set(p,g=new Map),g.has(m.name)||g.set(m.name,[])}let o=(m,p,g)=>{if(p===void 0)return;let h=m?.get(p);h&&h.length<2&&h[h.length-1]!==g&&h.push(g)},s=new Map,a=new Set;for(let m of e.files){if(m.kind!=="code")continue;s.set(m.rel,m.lang);let p=Fe(m.lang),g=r.get(p);if(g){m.idents===void 0&&a.add(p);for(let h of m.idents??[])o(g,h,m.rel);for(let h of m.calls??[])o(g,h.name,m.rel),o(g,h.receiver,m.rel);for(let h of m.importedNames??[])o(g,h,m.rel);for(let h of m.importAliases??[])o(g,h.name,m.rel),o(g,h.local,m.rel);for(let h of m.relations??[])o(g,h.to,"")}}for(let m of n)o(r.get(Fe(s.get(m.toFile)??"")),m.to,"");let l=cl(e),c=m=>(r.get(Fe(m.lang))?.get(m.name)??[]).some(g=>g!==m.file)||[...l.get(m.name)??[]].some(g=>g!==m.file),d=new Map;for(let m of t){let p=Fe(m.lang);if(c(m)||vI.test(m.name)&&!a.has(p))continue;let g=d.get(p);g||d.set(p,g=new Set),g.add(m.name)}if(d.size)for(let m of e.files){if(m.kind!=="code")continue;let p=Fe(m.lang),g=d.get(p);if(!g)continue;let h=re(j(e.root,m.rel)),_=p==="js"?/[A-Za-z_$][\w$]*/g:/[A-Za-z_]\w*/g,y=new Set;for(let b of h.match(_)??[])g.has(b)&&y.add(b);for(let b of y)o(r.get(p),b,m.rel)}let u=new Set,f=new Map;for(let m of t){if(c(m))continue;let p=f.get(m.file)??[];p.push(m),f.set(m.file,p)}for(let[m,p]of f){let g=new Set(p.map(y=>y.name)),h=Fe(p[0].lang)==="js"?/[A-Za-z_$][\w$]*/g:/[A-Za-z_]\w*/g,_=new Map;al(re(j(e.root,m)),p[0].lang).split(` +`).forEach((y,b)=>{for(let S of y.match(h)??[])g.has(S)&&(_.get(S)??_.set(S,[]).get(S)).push(b+1)});for(let y of p){let b=y.endLine??y.line;(_.get(y.name)??[]).some(S=>Sb)&&u.add(y)}}return m=>u.has(m)||c(m)}function II(e,t,n){let r=cn(e),o=new Map(e.files.map(p=>[p.rel,p])),s=FI(e,r,o);if(!s.length)for(let p of e.files)p.kind==="code"&&EI.test(p.rel)&&s.push({rel:p.rel});for(let p of e.files)(p.rel==="__init__.py"||p.rel.endsWith("/__init__.py"))&&s.push({rel:p.rel});let a=Ds(t),l=new Set,c=new Set;for(let p=0;p<5&&s.length;p++){let g=[];for(let{rel:h,names:_}of s){let y=`${h}${_t}${_?[..._].sort(T).join(","):"*"}`;if(c.has(y))continue;c.add(y);let b=o.get(h);if(!b)continue;let S=new Set;for(let k of b.symbols)if(k.kind==="reexport")(!_||_.has(k.name))&&S.add(k.name);else if(k.kind==="reexport-all"){let R=/^\* \((.+)\)$/.exec(k.name)?.[1],I=R===void 0?void 0:ct(h,b.ext,R,r);I?.kind==="resolved"&&g.push({rel:I.target,..._?{names:_}:{}})}else k.exported&&k.kind!=="default"&&(!_||_.has(k.name))&&l.add(`${k.name}${_t}${k.file}`);if(S.size)for(let k of[...a.get(h)??[]].sort(T))g.push({rel:k,names:S})}s=g}for(let p of $I(e,r))l.add(p);let d=new Map;for(let p of n){let g=`${p.from}${_t}${p.fromFile}`,h=d.get(g)??[];h.push(`${p.to}${_t}${p.toFile}`),d.set(g,h)}let u=new Map;for(let p of e.files)for(let g of p.symbols){if(!g.parent)continue;let h=`${g.parent}${_t}${g.file}`,_=u.get(h)??[];_.push(`${g.name}${_t}${g.file}`),u.set(h,_)}let f=new Set;for(let p of e.files)for(let g of p.symbols)kI.has(g.kind)&&f.add(`${g.name}${_t}${g.file}`);let m=[...l].sort(T);for(;m.length;){let p=m.pop(),g=[...d.get(p)??[],...f.has(p)?u.get(p)??[]:[]];for(let h of g)l.has(h)||(l.add(h),m.push(h))}return l}function $I(e,t){let n=[],r=new Set;for(let a of e.files)a.lang==="go"&&!a.rel.endsWith("_test.go")&&a.symbols.some(l=>l.name==="main"&&!l.parent&&l.kind==="function")&&r.add(Ao(a.rel));let o=[];for(let a of e.files){let l=a.rel.slice(a.rel.lastIndexOf("/")+1);if(l!=="build.gradle"&&l!=="build.gradle.kts"&&l!=="pom.xml")continue;let c=re(j(e.root,a.rel));(l==="pom.xml"?/|maven-deploy-plugin|central-publishing-maven-plugin|nexus-staging-maven-plugin/.test(c):/\bjava-library\b|\bmaven-publish\b|com\.vanniktech\.maven\.publish/.test(c))&&o.push(Ao(a.rel))}let s=(a,l)=>!l||a.startsWith(l+"/");for(let a of e.files)if(!(a.kind!=="code"||Ft(a.rel))){if(a.lang==="go"){if(a.rel.endsWith("_test.go"))continue;let l=t.goModules.find(u=>s(a.rel,u.dir));if(!l)continue;let c=Ao(a.rel),d=l.dir?c.slice(l.dir.length+1):c;if(r.has(c)||/(^|\/)internal(\/|$)/.test(d))continue;for(let u of a.symbols)u.exported&&n.push(`${u.name}${_t}${u.file}`)}else if(TI.has(a.lang)&&o.some(l=>s(a.rel,l))&&!/(^|\/)src\/test\//.test(a.rel))for(let l of a.symbols)l.exported&&!l.parent&&n.push(`${l.name}${_t}${l.file}`)}return n}function FI(e,t,n){let r=new Set,o=new Map,s=l=>n.get(l)?.kind==="code";for(let l of e.files){let c=l.rel.slice(l.rel.lastIndexOf("/")+1),d=Ao(l.rel);if(c==="package.json"){let u=Nr(re(j(e.root,l.rel)));if(!u||typeof u!="object")continue;let f=[],m=h=>{typeof h=="string"?f.push(h):Array.isArray(h)?h.forEach(m):h&&typeof h=="object"&&Object.values(h).forEach(m)},p=u;for(let h of["source","main","module","types","typings","bin","exports"])m(p[h]);typeof p.browser=="string"&&m(p.browser);let g=d?`${d}/package.json`:"package.json";for(let h of f){let _=h.slice(h.lastIndexOf("/")+1);if(h.includes("*")||_.includes(".")&&!/\.[cm]?[jt]sx?$/.test(_))continue;let y=_.replace(/(\.d)?\.[cm]?[jt]sx?$/,"");for(let b of[h,...du(h),`src/${y}`]){let S=ct(g,".ts",b.startsWith(".")?b:`./${b}`,t);S.kind==="resolved"&&s(S.target)&&r.add(S.target)}}}else if(c==="pyproject.toml"){let u=re(j(e.root,l.rel)),f=/^\[(?:project\.(?:gui-)?scripts|tool\.poetry\.scripts)\]\s*$([\s\S]*?)(?=^\[|(?![\s\S]))/gm;for(let m of u.matchAll(f))for(let p of m[1].matchAll(/^\s*[\w.-]+\s*=\s*["']([\w.]+):(\w+)[\w.]*["']/gm)){let g=ct(d?`${d}/pyproject.py`:"pyproject.py",".py",p[1],t);if(g.kind!=="resolved"||!s(g.target))continue;let h=o.get(g.target)??new Set;o.set(g.target,h.add(p[2]))}}}for(let l of t.rustCrates)l.rootFile&&r.add(l.rootFile);let a=[...r].sort(T).map(l=>({rel:l}));for(let l of[...o.keys()].sort(T))r.has(l)||a.push({rel:l,names:o.get(l)});return a}function Xl(e,t){return t===void 0||e.length<=t?e:{total:e.length,shown:t,truncated:!0,candidates:e.slice(0,t)}}var bI,wI,xI,SI,kI,EI,vI,_t,Ao,TI,Zl=H(()=>{"use strict";$();me();gt();ar();Ms();Fn();Br();$n();dr();Ze();ce();Os();bI=new Set(["reexport","reexport-all","default"]),wI=new Set(["function","method","def","constructor","operator","class","macro"]),xI=/^[\w$]+\s*(?::[^=]*)?=\s*(?:async\s+)?(?:function\b|\(|[\w$]+\s*=>)/,SI=/^\w+\s*(?::[^=]*)?=\s*lambda\b/,kI=new Set(["class","interface","struct","trait","object","enum","record","protocol","module","type"]),EI=/(^|\/)(index|main|cli|mod|lib|__main__)\.[a-z]+$/,vI=/^[A-Za-z_]\w{4,}$/,_t="\0",Ao=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";TI=new Set(["java","kotlin","scala"])});function db(e,t){let n=new Set(e.modules.map(c=>c.slug));for(let c of e.moduleEdges)n.add(c.from).add(c.to);let r=[...n].sort(T),o=new Map(r.map(c=>[c,t+c.replace(/[^A-Za-z0-9_]/g,"_")])),s=new Map;for(let c of o.values())s.set(c,(s.get(c)??0)+1);let a=new Set([...o.values()].filter(c=>s.get(c)===1)),l=new Map;for(let c of r){let d=o.get(c),u=d;if(s.get(d)>1){for(let f=2;a.has(u);f++)u=`${d}_${f}`;a.add(u)}l.set(c,u)}return l}function OI(e,t){if(e.modules.some(o=>o.slug===t))return t;let n=t.replace(/\/+$/,""),r=e.modules.find(o=>o.path===n);return r?r.slug:e.files.find(o=>o.rel===t)?.module}function ub(e){return e.replace(/#/g,"#35;").replace(/"/g,"#quot;").replace(/&/g,"#38;").replace(//g,"#gt;").replace(/`/g,"#96;").replace(/[\r\n]+/g," ")}function $o(e,t={}){let n=t.maxEdges??80,r=t.module?OI(e,t.module):void 0;if(t.module&&!r)throw new Error(`no such file or module in the index: ${t.module}`);let o=db(e,"m_"),s=[...e.moduleEdges].filter(d=>!d.dangling);r&&(s=s.filter(d=>d.from===r||d.to===r)),s.sort((d,u)=>u.weight-d.weight||T(d.from,u.from)||T(d.to,u.to));let a=Math.max(0,s.length-n);s=s.slice(0,n);let l=new Set;for(let d of s)l.add(d.from),l.add(d.to);r&&l.add(r);let c=["graph LR"];for(let d of[...e.modules].sort((u,f)=>T(u.slug,f.slug)))l.has(d.slug)&&c.push(` ${o.get(d.slug)}["${NI(d)}"]`);for(let d of s){let u=d.kind==="import"?"":`|${d.kind}|`;c.push(` ${o.get(d.from)} -->${u} ${o.get(d.to)}`)}return a&&c.push(` %% ${a} lighter edges omitted (maxEdges=${n})`),c.join(` `)+` -`}function PI(e,t={}){let n=t.maxModules??OI,r=t.maxEdges??NI,o=lb(e,"m_"),s=f=>o.get(f),l=e.modules.slice().sort((f,m)=>ab(m)-ab(f)||$(f.slug,m.slug)).slice(0,n),c=new Set(l.map(f=>f.slug)),d=e.moduleEdges.filter(f=>c.has(f.from)&&c.has(f.to)).sort((f,m)=>m.weight-f.weight||$(f.from,m.from)||$(f.to,m.to)).slice(0,r),u=[];u.push(`%% ${t.title??"module graph"} \u2014 ${l.length} of ${e.modules.length} modules, ${d.length} of ${e.moduleEdges.length} edges`),(l.lengthp.tier===f);if(m.length){u.push(` subgraph ${FI[f]}`);for(let p of m)u.push(` ${s(p.slug)}["${cb(p.path)}"]`);u.push(" end")}}for(let f of d){let m=f.weight>1?`|${f.weight}| `:"";u.push(` ${s(f.from)} -->${m?" "+m:" "}${s(f.to)}`)}return{content:"```mermaid\n"+u.join(` -`)+"\n```\n",shownModules:l.length,totalModules:e.modules.length,shownEdges:d.length,totalEdges:e.moduleEdges.length}}var $I,FI,OI,NI,ab,Zl=z(()=>{"use strict";I();le();$I=e=>`${cb(e.path)}${e.tier===0?" (core)":""}`;FI={0:"Foundations",1:"Features",2:"Tail"},OI=40,NI=80,ab=e=>e.degIn+e.degOut});function db(e,t){let n=[],r=new Set,o=(a,l)=>{let c=`${a.name}:${a.line}`;r.has(c)||(r.add(c),n.push({name:a.name,kind:a.kind,exported:a.exported,line:a.line,...a.endLine!==void 0?{endLine:a.endLine}:{},...a.parent!==void 0?{parent:a.parent}:{},...l?{approx:!0}:{}}))},s=a=>(a.endLine??a.line)-a.line;for(let a of t){let l=e.filter(c=>c.line<=a.end&&(c.endLine??c.line)>=a.start);if(l.length){l.sort((c,d)=>s(c)-s(d)||d.line-c.line||$(c.name,d.name));for(let c of l)o(c,!1)}else{let c=e.filter(u=>u.line<=a.start&&u.endLine===void 0),d=c[c.length-1];d&&o(d,!0)}}return n}function WI(e,t){if(e.length<=1)return 0;let n=0;for(let r of e)rc.dangling&&(c.kind==="import"||c.kind==="doc-link"));if(!r.length||!n.length)return[];let o=Ui(e),s=new Map;for(let c of n){if(o.fileSet.has(c.path))continue;s.set(c.path,c.renamedTo),o.fileSet.add(c.path);let d=c.path.includes("/")?q.dirname(c.path):"",u=o.filesByDir.get(d);u?u.push(c.path):o.filesByDir.set(d,[c.path]);for(let f=d;f&&!o.dirSet.has(f);f=f.includes("/")?q.dirname(f):"")o.dirSet.add(f)}if(!s.size)return[];let a=new Map(e.files.map(c=>[c.rel,c.ext])),l=[];for(let c of r){let d=a.get(c.from);if(d===void 0)continue;let u=c.kind==="doc-link"?"doc-link":"import",f=u==="doc-link"?nr(c.from,c.to,o):ct(c.from,d,c.to,o);if(f.kind!=="resolved"||!s.has(f.target))continue;let m=s.get(f.target);l.push({from:c.from,spec:c.to,kind:u,target:f.target,...m!==void 0?{renamedTo:m}:{}})}return l.sort((c,d)=>$(c.target,d.target)||$(c.from,d.from)||$(c.spec,d.spec))}function fb(e,t,n,r=Yl){let o=[...n.notes??[]];t||o.push("symbol index missing \u2014 symbol-level attribution disabled");let s=n.broken??[],a=new Map(e.files.map(w=>[w.rel,w])),l=new Map(e.modules.map(w=>[w.slug,w])),c=new Map;for(let w of n.files)w.status!=="deleted"&&a.has(w.path)&&c.set(w.path,[]);if(t&&c.size){for(let w of Object.keys(t.defs))for(let E of t.defs[w])c.get(E.file)?.push({name:w,...E});for(let w of c.values())w.sort((E,P)=>E.line-P.line||$(E.name,P.name))}let d=[],u=[],f=[];for(let w of[...n.files].sort((E,P)=>$(E.path,P.path))){let E={...w.oldPath!==void 0?{oldPath:w.oldPath}:{},...w.binary?{binary:!0}:{},...w.linesAdded!==void 0?{linesAdded:w.linesAdded}:{},...w.linesDeleted!==void 0?{linesDeleted:w.linesDeleted}:{}};if(w.status==="deleted"){d.push(w.path),f.push({path:w.path,status:w.status,...E,hunks:[],symbols:[]});continue}let P=a.get(w.path);if(!P){u.push(w.path);continue}let N=n.hunks.get(w.path)??[];!N.length&&w.status==="added"&&!w.binary&&(N=[{start:1,end:Math.max(P.lines,1)}]);let L=w.binary?[]:db(c.get(w.path)??[],N);f.push({path:w.path,status:w.status,...E,module:P.module,hunks:N.map(H=>({start:H.start,end:H.end})),symbols:L})}let m=new Set(f.filter(w=>w.status!=="deleted").map(w=>w.path)),p=new Set(s.map(w=>`${w.from}\0${w.spec}`)),g=e.fileEdges.filter(w=>w.dangling&&(w.kind==="import"||w.kind==="doc-link")&&m.has(w.from)&&!p.has(`${w.from}\0${w.to}`)).map(w=>({from:w.from,spec:w.to,reason:w.reason??"unknown"})).sort((w,E)=>$(w.from,E.from)||$(w.spec,E.spec)),h=(w,E)=>{if(!E.startsWith("."))return!1;let P=w.split("/").slice(0,-1);for(let N of E.split("/"))N==="."||N===""||(N===".."?P.pop():P.push(N));return P.some(N=>vn.has(N))},_=new Map;for(let w of f){if(w.status==="deleted"||!w.module)continue;let E=_.get(w.module);E||_.set(w.module,E=[]),E.push(w)}let y=new Map(e.modules.map(w=>[w.path,w])),b=w=>{let E=w.includes("/")?q.dirname(w):"(root)",P=y.get(E);if(P)return P.slug;let N=E==="(root)"?"root":ri(E);return N&&!l.has(N)?N:`${N||"module"}-${Re(E).slice(0,8)}`},x=new Map,k=new Map;for(let w of s){let E=b(w.target);l.has(E)||k.set(E,w.target.includes("/")?q.dirname(w.target):"(root)");let P=x.get(E);P||x.set(E,P=[]),P.push(w)}let v=new Set;for(let w of e.files)w.fileKind==="code"&&!w.testFile&&v.add(w.module);let T=e.modules.some(w=>w.pagerank!==void 0),F=w=>T?w.pagerank??0:w.degIn+w.degOut,R=e.modules.map(F),C=T?"pagerank":"degree",A=Eu(e.fileEdges,{skipInferred:!0,goPackages:!0}),S=[];for(let w of[...new Set([..._.keys(),...x.keys()])].sort($)){let E=l.get(w),P=k.get(w);if(!E&&P===void 0)continue;let N=_.get(w)??[],L=x.get(w)??[],H=[],Y=0,oe=L.filter(V=>V.kind==="import");if(oe.length){Y+=xn.brokenImport;let V=[...new Set(oe.map(kn=>kn.target))].sort($),te=V[0],de=[...new Set(oe.filter(kn=>kn.target===te).map(kn=>kn.from))].sort($),it=oe.find(kn=>kn.target===te),Ve=it.renamedTo!==void 0?`renamed ${te} (now ${it.renamedTo})`:`removed ${te}`,cs=de.slice(0,3).join(", ")+(de.length>3?", \u2026":""),yr=V.length>1?` (+${V.length-1} more removed file${V.length>2?"s":""})`:"";H.push(`${Ve} is still imported by ${de.length} file${de.length===1?"":"s"} (${cs})${yr}`)}let ge=[...new Set(N.flatMap(V=>V.symbols.filter(te=>te.exported).map(te=>te.name)))].sort($);if(ge.length){Y+=xn.exportedChange;let V=ge.slice(0,3).join(", ")+(ge.length>3?", \u2026":"");H.push(ge.length===1?`exported symbol ${V} changed`:`exported symbols ${V} changed`)}let Se=E?WI(R,F(E)):0;Se>=.9?(Y+=xn.hubHigh,H.push(`${C} p${Math.round(Se*100)} hub`)):Se>=.75&&(Y+=xn.hubMed,H.push(`${C} p${Math.round(Se*100)} hub`));let Ce=new Map,U=new Set,B=(V,te)=>{let de=Ce.get(V);(de===void 0||teV.from))].sort($);if(G.length&&r>=1){let V=new Map(G.map(te=>[te,1]));for(let[te,de]of Ji(e.fileEdges,G,r-1))V.set(te,de+1);for(let[te,de]of V){B(te,de);let it=a.get(te)?.module??"root";it!==w&&U.add(it)}}let ee=Ce.size,ke={directFiles:[...Ce.values()].filter(V=>V===1).length,transitiveFiles:ee,modules:[...U].sort($)};ee>=20||ke.modules.length>=5?(Y+=xn.blastHigh,H.push(`${ee} dependent files across ${ke.modules.length} modules (depth ${r})`)):ee>=5&&(Y+=xn.blastMed,H.push(`${ee} dependent files across ${ke.modules.length} modules (depth ${r})`));let rt=E!==void 0&&E.tier<=1&&E.symbols>0&&v.has(w),qe=E?.testedBy??[],_e=rt?qe.length?{status:"covered",files:qe}:{status:"gap",files:[]}:{status:"n/a",files:[]};_e.status==="gap"&&(Y+=xn.testGap,H.push("no test covers this module"));let me=(e.surprises??[]).find(V=>V.from===w||V.to===w);me&&(Y+=xn.surprise,H.push(`cross-community edge to ${me.from===w?me.to:me.from} (surprising)`));let he=g.filter(V=>N.some(te=>te.path===V.from)&&!h(V.from,V.spec));if(he.length){Y+=xn.dangling;let V=he[0],te=he.length>1?` (+${he.length-1} more)`:"";H.push(`dangling import "${V.spec}" in ${V.from}${te}`)}Y=Math.min(100,Y);let Z=[...new Set(L.map(V=>V.target))].filter(V=>d.includes(V)),K=[...N.map(V=>V.path),...Z].sort($),J=N.flatMap(V=>V.symbols),X=[...N.slice().sort((V,te)=>te.symbols.filter(de=>de.exported).length-V.symbols.filter(de=>de.exported).length||te.symbols.length-V.symbols.length||$(V.path,te.path)).map(V=>V.path),...G.filter(V=>!m.has(V))].slice(0,jI);S.push({slug:w,path:E?.path??P,score:Y,bucket:Y>=LI?"HIGH":Y>=DI?"MEDIUM":"LOW",reasons:H,changedFiles:K,changedSymbols:{total:new Set(J.map(V=>`${V.name}:${V.line}`)).size,exported:new Set(J.filter(V=>V.exported).map(V=>`${V.name}:${V.line}`)).size},impact:ke,tests:_e,open:X})}return S.sort((w,E)=>E.score-w.score||$(w.slug,E.slug)),{base:n.base,...e.commit!==void 0?{indexCommit:e.commit}:{},depth:r,changes:f,modules:S,dangling:g,broken:s,deleted:d.sort($),unindexed:u.sort($),notes:o}}function BI(e,t){let n=De(ae(e),ae(e,t??".codeindex")).split("/").join("/"),r=n&&!n.startsWith("..")&&!Ne(n)?o=>o===n||o.startsWith(`${n}/`):()=>!1;return(o,s)=>r(o)?!1:s?!0:!o.split("/").slice(0,-1).some(l=>vn.has(l)||l.startsWith(".codeindex-edit-"))}function Xs(e,t={}){if(!Yt("git"))return{error:"git is required for delta and was not found on PATH"};if(!Nc(e))return{error:`delta needs a git worktree \u2014 ${e} is not inside one`};let n=[],r;if(t.staged){let l=$e("git",["-C",e,"rev-parse","--verify","--quiet","HEAD"]);if(l.ok)r={ref:"HEAD",mergeBase:l.stdout.trim(),staged:!0};else{let c=Oc(e);if(!c)return{error:"cannot resolve HEAD, nor the empty tree"};r={ref:ra,mergeBase:c,staged:!0},n.push("no commits yet \u2014 every staged file is reviewed as added")}}else{let l=Pc(e,t.base);if("error"in l)return{error:l.error};l.note&&n.push(l.note),r={ref:l.ref,mergeBase:l.mergeBase,staged:!1}}let o=BI(e,t.indexDir),s=t.staged?{staged:!0}:{mergeBase:r.mergeBase},a=Lc(e,s).filter(l=>o(l.path,!0));if(!t.staged){let l=new Set(a.map(c=>c.path));for(let c of sa(e))!l.has(c)&&o(c,!1)&&a.push({path:c,status:"added"})}return{base:r,files:a,hunks:a.length?Dc(e,s):new Map,notes:n}}function To(e,t=Yl){return{base:e.base,depth:t,changes:[],modules:[],dangling:[],broken:[],deleted:[],unindexed:[],notes:e.notes}}function Zs(e,t,n,r={}){let o=[...e.notes],s=e.files.flatMap(l=>l.status==="deleted"?[{path:l.path}]:l.status==="renamed"&&l.oldPath!==void 0?[{path:l.oldPath,renamedTo:l.path}]:[]),a=[];return s.length&&r.scan?a=ub(r.scan,t,s):s.length&&o.push("no scan supplied \u2014 importers of removed files were not traced"),fb(t,n,{...e,notes:o,broken:a},r.depth??Yl)}function UI(e,t,n,r={}){let o=Xs(e,r);return"error"in o?o:Zs(o,t,n,r)}function $o(e){let{ref:t,mergeBase:n,staged:r}=e.base,o=t===ra?"vs the empty tree (no commits yet)":`vs ${t} (${r?"":"merge-base "}${n.slice(0,7)})`,s=r?"staged changes":"changes";if(!e.changes.length&&!e.unindexed.length)return`codeindex: no ${s} ${o} +`}function jI(e,t={}){let n=t.maxModules??LI,r=t.maxEdges??DI,o=db(e,"m_"),s=f=>o.get(f),l=e.modules.slice().sort((f,m)=>cb(m)-cb(f)||T(f.slug,m.slug)).slice(0,n),c=new Set(l.map(f=>f.slug)),d=e.moduleEdges.filter(f=>c.has(f.from)&&c.has(f.to)).sort((f,m)=>m.weight-f.weight||T(f.from,m.from)||T(f.to,m.to)).slice(0,r),u=[];u.push(`%% ${t.title??"module graph"} \u2014 ${l.length} of ${e.modules.length} modules, ${d.length} of ${e.moduleEdges.length} edges`),(l.lengthp.tier===f);if(m.length){u.push(` subgraph ${PI[f]}`);for(let p of m)u.push(` ${s(p.slug)}["${ub(p.path)}"]`);u.push(" end")}}for(let f of d){let m=f.weight>1?`|${f.weight}| `:"";u.push(` ${s(f.from)} -->${m?" "+m:" "}${s(f.to)}`)}return{content:"```mermaid\n"+u.join(` +`)+"\n```\n",shownModules:l.length,totalModules:e.modules.length,shownEdges:d.length,totalEdges:e.moduleEdges.length}}var NI,PI,LI,DI,cb,Yl=H(()=>{"use strict";$();ce();NI=e=>`${ub(e.path)}${e.tier===0?" (core)":""}`;PI={0:"Foundations",1:"Features",2:"Tail"},LI=40,DI=80,cb=e=>e.degIn+e.degOut});function fb(e,t){let n=[],r=new Set,o=(a,l)=>{let c=`${a.name}:${a.line}`;r.has(c)||(r.add(c),n.push({name:a.name,kind:a.kind,exported:a.exported,line:a.line,...a.endLine!==void 0?{endLine:a.endLine}:{},...a.parent!==void 0?{parent:a.parent}:{},...l?{approx:!0}:{}}))},s=a=>(a.endLine??a.line)-a.line;for(let a of t){let l=e.filter(c=>c.line<=a.end&&(c.endLine??c.line)>=a.start);if(l.length){l.sort((c,d)=>s(c)-s(d)||d.line-c.line||T(c.name,d.name));for(let c of l)o(c,!1)}else{let c=e.filter(u=>u.line<=a.start&&u.endLine===void 0),d=c[c.length-1];d&&o(d,!0)}}return n}function zI(e,t){if(e.length<=1)return 0;let n=0;for(let r of e)rc.dangling&&(c.kind==="import"||c.kind==="doc-link"));if(!r.length||!n.length)return[];let o=zi(e),s=new Map;for(let c of n){if(o.fileSet.has(c.path))continue;s.set(c.path,c.renamedTo),o.fileSet.add(c.path);let d=c.path.includes("/")?J.dirname(c.path):"",u=o.filesByDir.get(d);u?u.push(c.path):o.filesByDir.set(d,[c.path]);for(let f=d;f&&!o.dirSet.has(f);f=f.includes("/")?J.dirname(f):"")o.dirSet.add(f)}if(!s.size)return[];let a=new Map(e.files.map(c=>[c.rel,c.ext])),l=[];for(let c of r){let d=a.get(c.from);if(d===void 0)continue;let u=c.kind==="doc-link"?"doc-link":"import",f=u==="doc-link"?sr(c.from,c.to,o):ct(c.from,d,c.to,o);if(f.kind!=="resolved"||!s.has(f.target))continue;let m=s.get(f.target);l.push({from:c.from,spec:c.to,kind:u,target:f.target,...m!==void 0?{renamedTo:m}:{}})}return l.sort((c,d)=>T(c.target,d.target)||T(c.from,d.from)||T(c.spec,d.spec))}function pb(e,t,n,r=Ql){let o=[...n.notes??[]];t||o.push("symbol index missing \u2014 symbol-level attribution disabled");let s=n.broken??[],a=new Map(e.files.map(w=>[w.rel,w])),l=new Map(e.modules.map(w=>[w.slug,w])),c=new Map;for(let w of n.files)w.status!=="deleted"&&a.has(w.path)&&c.set(w.path,[]);if(t&&c.size){for(let w of Object.keys(t.defs))for(let E of t.defs[w])c.get(E.file)?.push({name:w,...E});for(let w of c.values())w.sort((E,N)=>E.line-N.line||T(E.name,N.name))}let d=[],u=[],f=[];for(let w of[...n.files].sort((E,N)=>T(E.path,N.path))){let E={...w.oldPath!==void 0?{oldPath:w.oldPath}:{},...w.binary?{binary:!0}:{},...w.linesAdded!==void 0?{linesAdded:w.linesAdded}:{},...w.linesDeleted!==void 0?{linesDeleted:w.linesDeleted}:{}};if(w.status==="deleted"){d.push(w.path),f.push({path:w.path,status:w.status,...E,hunks:[],symbols:[]});continue}let N=a.get(w.path);if(!N){u.push(w.path);continue}let O=n.hunks.get(w.path)??[];!O.length&&w.status==="added"&&!w.binary&&(O=[{start:1,end:Math.max(N.lines,1)}]);let L=w.binary?[]:fb(c.get(w.path)??[],O);f.push({path:w.path,status:w.status,...E,module:N.module,hunks:O.map(G=>({start:G.start,end:G.end})),symbols:L})}let m=new Set(f.filter(w=>w.status!=="deleted").map(w=>w.path)),p=new Set(s.map(w=>`${w.from}\0${w.spec}`)),g=e.fileEdges.filter(w=>w.dangling&&(w.kind==="import"||w.kind==="doc-link")&&m.has(w.from)&&!p.has(`${w.from}\0${w.to}`)).map(w=>({from:w.from,spec:w.to,reason:w.reason??"unknown"})).sort((w,E)=>T(w.from,E.from)||T(w.spec,E.spec)),h=(w,E)=>{if(!E.startsWith("."))return!1;let N=w.split("/").slice(0,-1);for(let O of E.split("/"))O==="."||O===""||(O===".."?N.pop():N.push(O));return N.some(O=>Cn.has(O))},_=new Map;for(let w of f){if(w.status==="deleted"||!w.module)continue;let E=_.get(w.module);E||_.set(w.module,E=[]),E.push(w)}let y=new Map(e.modules.map(w=>[w.path,w])),b=w=>{let E=w.includes("/")?J.dirname(w):"(root)",N=y.get(E);if(N)return N.slug;let O=E==="(root)"?"root":si(E);return O&&!l.has(O)?O:`${O||"module"}-${Re(E).slice(0,8)}`},S=new Map,k=new Map;for(let w of s){let E=b(w.target);l.has(E)||k.set(E,w.target.includes("/")?J.dirname(w.target):"(root)");let N=S.get(E);N||S.set(E,N=[]),N.push(w)}let R=new Set;for(let w of e.files)w.fileKind==="code"&&!w.testFile&&R.add(w.module);let I=e.modules.some(w=>w.pagerank!==void 0),P=w=>I?w.pagerank??0:w.degIn+w.degOut,v=e.modules.map(P),C=I?"pagerank":"degree",M=vu(e.fileEdges,{skipInferred:!0,goPackages:!0}),x=[];for(let w of[...new Set([..._.keys(),...S.keys()])].sort(T)){let E=l.get(w),N=k.get(w);if(!E&&N===void 0)continue;let O=_.get(w)??[],L=S.get(w)??[],G=[],X=0,oe=L.filter(B=>B.kind==="import");if(oe.length){X+=kn.brokenImport;let B=[...new Set(oe.map(vn=>vn.target))].sort(T),K=B[0],se=[...new Set(oe.filter(vn=>vn.target===K).map(vn=>vn.from))].sort(T),Ne=oe.find(vn=>vn.target===K),Se=Ne.renamedTo!==void 0?`renamed ${K} (now ${Ne.renamedTo})`:`removed ${K}`,Zt=se.slice(0,3).join(", ")+(se.length>3?", \u2026":""),un=B.length>1?` (+${B.length-1} more removed file${B.length>2?"s":""})`:"";G.push(`${Se} is still imported by ${se.length} file${se.length===1?"":"s"} (${Zt})${un}`)}let ue=[...new Set(O.flatMap(B=>B.symbols.filter(K=>K.exported).map(K=>K.name)))].sort(T);if(ue.length){X+=kn.exportedChange;let B=ue.slice(0,3).join(", ")+(ue.length>3?", \u2026":"");G.push(ue.length===1?`exported symbol ${B} changed`:`exported symbols ${B} changed`)}let ve=E?zI(v,P(E)):0;ve>=.9?(X+=kn.hubHigh,G.push(`${C} p${Math.round(ve*100)} hub`)):ve>=.75&&(X+=kn.hubMed,G.push(`${C} p${Math.round(ve*100)} hub`));let Oe=new Map,z=new Set,U=(B,K)=>{let se=Oe.get(B);(se===void 0||KB.from))].sort(T);if(q.length&&r>=1){let B=new Map(q.map(K=>[K,1]));for(let[K,se]of Ki(e.fileEdges,q,r-1))B.set(K,se+1);for(let[K,se]of B){U(K,se);let Ne=a.get(K)?.module??"root";Ne!==w&&z.add(Ne)}}let te=Oe.size,ge={directFiles:[...Oe.values()].filter(B=>B===1).length,transitiveFiles:te,modules:[...z].sort(T)};te>=20||ge.modules.length>=5?(X+=kn.blastHigh,G.push(`${te} dependent files across ${ge.modules.length} modules (depth ${r})`)):te>=5&&(X+=kn.blastMed,G.push(`${te} dependent files across ${ge.modules.length} modules (depth ${r})`));let st=E!==void 0&&E.tier<=1&&E.symbols>0&&R.has(w),Je=E?.testedBy??[],he=st?Je.length?{status:"covered",files:Je}:{status:"gap",files:[]}:{status:"n/a",files:[]};he.status==="gap"&&(X+=kn.testGap,G.push("no test covers this module"));let fe=(e.surprises??[]).find(B=>B.from===w||B.to===w);fe&&(X+=kn.surprise,G.push(`cross-community edge to ${fe.from===w?fe.to:fe.from} (surprising)`));let ye=g.filter(B=>O.some(K=>K.path===B.from)&&!h(B.from,B.spec));if(ye.length){X+=kn.dangling;let B=ye[0],K=ye.length>1?` (+${ye.length-1} more)`:"";G.push(`dangling import "${B.spec}" in ${B.from}${K}`)}X=Math.min(100,X);let at=[...new Set(L.map(B=>B.target))].filter(B=>d.includes(B)),ne=[...O.map(B=>B.path),...at].sort(T),V=O.flatMap(B=>B.symbols),Z=[...O.slice().sort((B,K)=>K.symbols.filter(se=>se.exported).length-B.symbols.filter(se=>se.exported).length||K.symbols.length-B.symbols.length||T(B.path,K.path)).map(B=>B.path),...q.filter(B=>!m.has(B))].slice(0,UI);x.push({slug:w,path:E?.path??N,score:X,bucket:X>=WI?"HIGH":X>=BI?"MEDIUM":"LOW",reasons:G,changedFiles:ne,changedSymbols:{total:new Set(V.map(B=>`${B.name}:${B.line}`)).size,exported:new Set(V.filter(B=>B.exported).map(B=>`${B.name}:${B.line}`)).size},impact:ge,tests:he,open:Z})}return x.sort((w,E)=>E.score-w.score||T(w.slug,E.slug)),{base:n.base,...e.commit!==void 0?{indexCommit:e.commit}:{},depth:r,changes:f,modules:x,dangling:g,broken:s,deleted:d.sort(T),unindexed:u.sort(T),notes:o}}function HI(e,t){let n=je(le(e),le(e,t??".codeindex")).split("/").join("/"),r=n&&!n.startsWith("..")&&!Pe(n)?o=>o===n||o.startsWith(`${n}/`):()=>!1;return(o,s)=>r(o)?!1:s?!0:!o.split("/").slice(0,-1).some(l=>Cn.has(l)||l.startsWith(".codeindex-edit-"))}function Xs(e,t={}){if(!Qt("git"))return{error:"git is required for delta and was not found on PATH"};if(!Pc(e))return{error:`delta needs a git worktree \u2014 ${e} is not inside one`};let n=[],r;if(t.staged){let l=$e("git",["-C",e,"rev-parse","--verify","--quiet","HEAD"]);if(l.ok)r={ref:"HEAD",mergeBase:l.stdout.trim(),staged:!0};else{let c=Nc(e);if(!c)return{error:"cannot resolve HEAD, nor the empty tree"};r={ref:sa,mergeBase:c,staged:!0},n.push("no commits yet \u2014 every staged file is reviewed as added")}}else{let l=Lc(e,t.base);if("error"in l)return{error:l.error};l.note&&n.push(l.note),r={ref:l.ref,mergeBase:l.mergeBase,staged:!1}}let o=HI(e,t.indexDir),s=t.staged?{staged:!0}:{mergeBase:r.mergeBase},a=Dc(e,s).filter(l=>o(l.path,!0));if(!t.staged){let l=new Set(a.map(c=>c.path));for(let c of ia(e))!l.has(c)&&o(c,!1)&&a.push({path:c,status:"added"})}return{base:r,files:a,hunks:a.length?jc(e,s):new Map,notes:n}}function To(e,t=Ql){return{base:e.base,depth:t,changes:[],modules:[],dangling:[],broken:[],deleted:[],unindexed:[],notes:e.notes}}function Zs(e,t,n,r={}){let o=[...e.notes],s=e.files.flatMap(l=>l.status==="deleted"?[{path:l.path}]:l.status==="renamed"&&l.oldPath!==void 0?[{path:l.oldPath,renamedTo:l.path}]:[]),a=[];return s.length&&r.scan?a=mb(r.scan,t,s):s.length&&o.push("no scan supplied \u2014 importers of removed files were not traced"),pb(t,n,{...e,notes:o,broken:a},r.depth??Ql)}function GI(e,t,n,r={}){let o=Xs(e,r);return"error"in o?o:Zs(o,t,n,r)}function Fo(e){let{ref:t,mergeBase:n,staged:r}=e.base,o=t===sa?"vs the empty tree (no commits yet)":`vs ${t} (${r?"":"merge-base "}${n.slice(0,7)})`,s=r?"staged changes":"changes";if(!e.changes.length&&!e.unindexed.length)return`codeindex: no ${s} ${o} `;let a=e.changes.length+e.unindexed.length,l=[`codeindex: delta ${r?"of staged changes ":""}${o} \u2014 ${a} changed file(s), ${e.modules.length} module(s)${e.indexCommit?`, index @ ${e.indexCommit}`:""}`];for(let d of e.notes)l.push(` note: ${d}`);for(let d of e.modules){l.push(` ${d.bucket.padEnd(6)} ${d.slug} score ${d.score}${d.reasons.length?` \u2014 ${d.reasons.join("; ")}`:""}`);let u=d.tests.status==="gap"?"GAP":d.tests.status==="covered"?`covered (${d.tests.files.length})`:"n/a";l.push(` open: ${d.open.join(", ")||"\u2014"} \xB7 tests: ${u}`)}e.dangling.length&&l.push(` dangling: ${e.dangling.map(d=>`${d.spec} (from ${d.from})`).join(" \xB7 ")}`);let c=[...new Set(e.broken.map(d=>d.target))];for(let d of c){let u=e.broken.filter(p=>p.target===d),f=u[0].renamedTo!==void 0?` (renamed to ${u[0].renamedTo})`:"",m=[...new Set(u.map(p=>p.from))];l.push(` broken: ${d}${f} still imported by ${m.join(", ")}`)}return e.deleted.length&&l.push(` deleted: ${e.deleted.join(", ")}`),e.unindexed.length&&l.push(` unindexed: ${e.unindexed.join(", ")}`),l.join(` `)+` -`}var xn,LI,DI,jI,Yl,Ql=z(()=>{"use strict";I();fe();tn();An();le();Ze();et();xt();Br();xn={exportedChange:25,hubHigh:20,hubMed:10,blastHigh:20,blastMed:10,testGap:20,surprise:10,dangling:15,brokenImport:40},LI=60,DI=30,jI=3,Yl=2});function mb(){throw new Error("readline is not available in the browser build (the MCP stdio transport is Node-only)")}var pb=z(()=>{I()});function GI(e,t,n){if(t==="doc-link")return n;if(HI.has(e)){if(/^[./]/.test(n))return n;let r=n.split("/");return n.startsWith("@")&&r.length>1?`${r[0]}/${r[1]}`:r[0]}if(e==="python")return n.startsWith(".")?n:n.split(".")[0];if(e==="go"){let r=n.split("/");return r[0].includes(".")?r.slice(0,3).join("/"):r[0]}return e==="rust"?n.split("::")[0]:e==="java"||e==="csharp"?n.split(".").slice(0,2).join("."):e==="php"?n.replace(/^\\+/,"").split("\\")[0]:n.split("/")[0]}function ec(e,t={}){let n=t.limit??zI,r=ln(e),o=new Map;for(let c of e.files){if(t.lang!==void 0&&c.lang!==t.lang)continue;let d=o.get(c.lang);d||(d={files:0,withRefs:0,row:{refs:0,resolved:0,external:0,dangling:0,unsupported:0},reasons:new Map,dangling:new Map,external:new Map,code:!1},o.set(c.lang,d)),d.files++,c.kind==="code"&&(d.code=!0),c.refs.length&&d.withRefs++;for(let u of c.refs){if(d.row.refs++,u.kind==="import"&&!Lh(c.ext)){d.row.unsupported++;continue}let f=u.kind==="doc-link"?nr(c.rel,u.spec,r):ct(c.rel,c.ext,u.spec,r);if(f.kind==="resolved")d.row.resolved++;else if(f.kind==="external"){d.row.external++;let m=GI(c.lang,u.kind,u.spec);d.external.set(m,(d.external.get(m)??0)+1)}else{d.row.dangling++,d.reasons.set(f.reason,(d.reasons.get(f.reason)??0)+1);let m=`${u.spec}\0${f.reason}`,p=d.dangling.get(m);p?(p.count++,$(c.rel,p.example)<0&&(p.example=c.rel)):d.dangling.set(m,{reason:f.reason,count:1,example:c.rel})}}}if(t.lang!==void 0&&!o.size){let c=Object.keys(e.languages).sort($).join(", ");throw new Error(`no indexed files in language "${t.lang}"${c?` \u2014 one of: ${c}`:""}`)}let s={refs:0,resolved:0,external:0,dangling:0,unsupported:0},a=[];for(let c of[...o.keys()].sort($)){let d=o.get(c);if(!d.code&&d.row.refs===0&&t.lang===void 0)continue;for(let h of Object.keys(s))s[h]+=d.row[h];let u={};for(let h of[...d.reasons.keys()].sort($))u[h]=d.reasons.get(h);let f=[...d.dangling.entries()].map(([h,_])=>({spec:h.slice(0,h.indexOf("\0")),reason:_.reason,count:_.count,example:_.example})).sort(gb(h=>h.count,h=>`${h.spec}\0${h.reason}`)).slice(0,n),m=[...d.external.entries()].map(([h,_])=>({name:h,count:_})).sort(gb(h=>h.count,h=>h.name)).slice(0,n),p={lang:c,files:d.files,filesWithRefs:d.withRefs,...d.row,danglingByReason:u,topDangling:f,topExternal:m},g=qI(p);g&&(p.note=g),a.push(p)}let l=[...new Set([...r.warnings,...On(e.root).warnings])].sort($);return{totals:s,languages:a,warnings:l}}function qI(e){let t=e.lang==="markdown"?"link":"import",n=(r,o)=>`${r} ${o}${r===1?"":"s"}`;if(e.refs===0)return`no ${t}s extracted from ${n(e.files,"file")} \u2014 this language gets no ${t} edges`;if(e.unsupported===e.refs)return`no import resolver for this language \u2014 its ${n(e.refs,"import")} never become edges`;if(e.resolved===0&&e.dangling===0)return`every ${t} is external \u2014 no in-repo ${t} edges for this language`;if(e.dangling>e.resolved)return t==="link"?"more links dangle than resolve \u2014 broken relative links in the docs":"more imports dangle than resolve \u2014 check path aliases and `warnings` before trusting impact or dead-code answers"}var zI,HI,gb,Tf=z(()=>{"use strict";I();An();gt();Gr();le();zI=10,HI=new Set(["typescript","javascript","vue","svelte","astro","html"]);gb=(e,t)=>(n,r)=>e(r)-e(n)||$(t(n),t(r))});function Wn(e,t){let n=(Ne(t)?De(e,t):t).replace(/\\/g,"/");for(;n.startsWith("./");)n=n.slice(2);return n!==t&&n!==""&&n!==".."&&!n.startsWith("../")?[t,n]:[t]}function ns(e,t,n){return Wn(e,t).find(n)}var tc=z(()=>{"use strict";I();fe()});function nc(e,t){if(!e.oversized?.length||!/^[A-Za-z_$][\w$]*$/.test(t))return[];let n=hb.get(e);n||hb.set(e,n=new Map);let r=n.get(t);if(r)return r;let o=new RegExp(`(?VI||mt(a.rel,un(a.rel).toLowerCase())!=="code")continue;let l;try{l=ie(j(e.root,a.rel),"utf8")}catch{continue}o.test(l)&&s.push({file:a.rel,size:a.size})}return n.set(t,s),s}function pr(e,t,n){let r=n.calls?e.files.filter(a=>a.callsCapped&&a.calls?.some(l=>l.name===t)).map(a=>a.rel):[],o=nc(e,t);if(!r.length&&!o.length)return;let s=[];return r.length&&s.push(`${r.length} file(s) reached the per-file call-site cap, so some of their calls are missing; re-index with a higher --max-calls`),o.length&&s.push(yb(o,`name "${t}"`)),{...r.length?{callCapped:r}:{},...o.length?{notIndexed:o}:{},hint:s.join("; ")}}function yb(e,t){let n=Math.max(...e.map(r=>r.size));return`${e.length} file(s) over --max-bytes ${t} but are not indexed (${e.map(r=>r.file).join(", ")}); re-index with --max-bytes ${n}`}function rc(e,t){let n=nc(e,t);return n.length?` \u2014 ${yb(n,`name "${t}"`)}`:""}function rs(e,t,n){let r=Wn(t,n),o=e.oversized?.find(s=>r.includes(s.rel));return o?`not in the index: ${o.rel} is ${o.size} bytes, over --max-bytes (default 1 MiB); re-index with --max-bytes ${o.size} to include it`:void 0}var VI,hb,$f=z(()=>{"use strict";I();Ee();fe();Mn();tc();VI=32*1024*1024,hb=new WeakMap});function gr(e,t){return{name:t,kind:e.kind,file:e.file,line:e.line,...e.parent?{parent:e.parent}:{}}}function Ff(e){return{...e,def:gr(e.def,e.def.name)}}function sc(e){return{...e,defs:e.defs.map(t=>gr(t,t.name))}}function _b(e){return{...e,defs:Object.fromEntries(Object.entries(e.defs).map(([t,n])=>[t,n.map(r=>gr(r,t))]))}}function bb(e){return{...e,changes:e.changes.map(t=>({path:t.path,status:t.status,...t.oldPath!==void 0?{oldPath:t.oldPath}:{},...t.module!==void 0?{module:t.module}:{},symbols:t.symbols.map(n=>({name:n.name,kind:n.kind,line:n.line}))}))}}var Of=z(()=>{"use strict";I()});function ss(e){try{return hf(ie(e))}catch{return}}function wb(e,t){let n=`${e}.${O.pid}.tmp`;try{return Zt(Me(e),{recursive:!0}),ot(n,t),En(n,e),!0}catch{return Ke(n,{force:!0}),!1}}var Nf=z(()=>{"use strict";I();Ee();fe();Zr()});function Df(e){return Re(e.files.map(t=>`${t.rel}:${t.hash}`).join(` -`))}async function Fo(e,t){let n=`${e.mode}:${e.identity}`,r=`${n}:${Df(e.scan)}`;if(Ys&&Ys.key===r)return Ys.index;let o=await t(Ys?.tier===n?Ys.index:void 0);return Ys={key:r,tier:n,index:o},o}function Oo(e){let t;try{t=Ae(j(e,"model.json"))}catch{return}let n=`${e}:${t.mtimeMs}:${t.size}`;if(ic&&ic.key===n)return ic.model;let r=Hs(e);return r&&(ic={key:n,model:r}),r}function oc(e,t){e.scan.commit!==t&&(e.scan.commit=t,e.arts=void 0,e.loadArtifacts=void 0)}function Pf(e){let t=Kt.findIndex(r=>r.key===e);if(t<0)return;let[n]=Kt.splice(t,1);return Kt.unshift(n),n}function hr(e){let t=Kt.findIndex(n=>n.key===e.key);return t>=0&&Kt.splice(t,1),Kt.unshift(e),Kt.length=Math.min(Kt.length,JI),e}function kb(e){let t=xb(e);for(let n of Kt){let r=new Set([Sb(n.scan.root,e),Sb(xb(n.scan.root),t)]);for(let o of r){let s=o===void 0?void 0:n.cacheMap.get(o);s&&(Lf(n.cacheMap,o,s),n.walked=void 0)}}}function Lf(e,t,n){e.set(t,{hash:n.hash,record:n.record})}function xb(e){try{return st(e)}catch{return e}}function Sb(e,t){let n=De(e,t);if(!(!n||n===".."||n.startsWith("../")||Ne(n)))return n.split("/").join("/")}function No(e,t){let n=e+"\0";for(let r of Kt)if(r.key.startsWith(n))if(r.walked=void 0,t===void 0)for(let[o,s]of r.cacheMap)Lf(r.cacheMap,o,s);else{let o=r.cacheMap.get(t);o&&Lf(r.cacheMap,t,o)}}function Eb(e,t){return e+"\0"+JSON.stringify({scope:t.scope,include:t.include,exclude:t.exclude,gitignore:t.gitignore,ignoreDirs:t.ignoreDirs,maxBytes:t.maxBytes,maxFiles:t.maxFiles,maxCallsPerFile:t.maxCallsPerFile,out:t.out,fullHash:t.fullHash})}function Po(e,t={},n){let r=Eb(e,t),o=Pf(r);if(o){if(n&&o.walked===n)return oc(o,Qt(e)),o.scan;let l=vt(e,{...t,cache:o.cacheMap,precomputedWalk:n});return l.contentUnchanged?(l.cacheDirty&&(o.cacheMap=Rt(l)),oc(o,l.commit),o.walked=n,o.scan):(hr({key:r,scan:l,cacheMap:Rt(l),walked:n}),l)}let s=Yd(e,{...t,precomputedWalk:n});if(s)return hr({key:r,scan:s.scan,cacheMap:s.cacheMap,arts:s.arts,walked:n}),s.scan;let a=vt(e,{...t,precomputedWalk:n});return hr({key:r,scan:a,cacheMap:Rt(a),walked:n}),a}async function ac(e,t={},n,r=async()=>{}){let o=Eb(e,t),s=Kt.find(c=>c.key===o);if(s){if(n&&s.walked===n)return oc(s,Qt(e)),Pf(o),s.scan;let c=s.cacheMap,d=m=>(m.cacheDirty&&(s.cacheMap=Rt(m)),oc(s,m.commit),s.walked=n,Pf(o),s.scan);if(n&&Xd(n,c,t.fullHash)){await r();let m=await yn(e,{...t,cache:c,precomputedWalk:n});return m.contentUnchanged?d(m):(hr({key:o,scan:m,cacheMap:Rt(m),walked:n}),m)}let u=vt(e,{...t,cache:c,precomputedWalk:n});if(u.contentUnchanged)return d(u);if(n)return hr({key:o,scan:u,cacheMap:Rt(u),walked:n}),u;await r();let f=await yn(e,{...t,cache:c,precomputedWalk:n});return hr({key:o,scan:f,cacheMap:Rt(f)}),f}let a=await Ha(e,{...t,precomputedWalk:n},r);if(a)return hr({key:o,scan:a.scan,cacheMap:a.cacheMap,arts:a.arts,loadArtifacts:a.loadArtifacts,walked:n}),a.scan;await r();let l=await yn(e,{...t,precomputedWalk:n});return hr({key:o,scan:l,cacheMap:Rt(l),walked:n}),l}function lc(e,t={},n){return Ti(e,{...t,precomputedWalk:n})}function cc(e,t={},n,r){let o=r??Po(e,t,n),s=Kt.find(a=>a.scan===o);return s?s.arts??=s.loadArtifacts?.()??Ln(o,t):Ln(o,t)}async function vb(e){await Lo(Xe(e,{}))}async function Lo(e){await on(Bt(e.files.map(t=>t.ext)))}var Ys,ic,JI,Kt,dc=z(()=>{"use strict";I();Ee();fe();vl();Ut();Pi();tr();Ze();pt();Kr();Zr();xt();tn();JI=4,Kt=[]});function Rb(e,t,n=KI){return O.platform==="linux"?new jf(e,t,n):ZI(e,t)}function ZI(e,t){let n;try{n=Xo(e,{recursive:!0},(r,o)=>{let s=o?.toString().replaceAll("\\","/")??"";s.split("/").some(l=>vn.has(l)||l.startsWith(".codeindex-edit-"))||No(e,s||void 0)}),n.on("error",r=>{t(`MCP watcher disabled (${r.message}); using freshness scans`),n?.close(),n=void 0,No(e)})}catch(r){t(`MCP watcher unavailable (${r instanceof Error?r.message:String(r)}); using freshness scans`)}return{walk:async()=>({walked:Xe(e,{}),reused:!1}),close:()=>n?.close()}}var KI,XI,jf,Cb=z(()=>{"use strict";I();Ee();_i();fe();Ze();dc();KI=8192,XI=2e3;jf=class{constructor(t,n,r){this.repo=t;this.warn=n;this.maxDirs=r}repo;warn;maxDirs;dirs=new Map;events=0;proof;barrier;disabled=!1;async walk(){if(this.disabled)return{walked:Xe(this.repo,{}),reused:!1};let t=await this.sync();if(t!==void 0&&this.proof?.events===t)return{walked:this.proof.walked,reused:!0};this.proof=void 0;let n=this.walkAndWatch();return t!==void 0&&!this.disabled&&(this.proof={events:t,walked:n}),{walked:n,reused:!1}}close(){for(let t of this.dirs.values())t.close();this.dirs.clear(),this.proof=void 0,this.barrier&&(this.barrier.watcher.close(),Ke(this.barrier.dir,{recursive:!0,force:!0})),this.barrier=null}sync(){this.barrier===void 0&&(this.barrier=this.openBarrier());let t=this.barrier;if(!t)return Promise.resolve(void 0);let n=`barrier-${++t.seq}`,r=j(t.dir,n);return new Promise(o=>{let s=l=>{clearTimeout(a),t.waiting=void 0,Ke(r,{force:!0}),o(l)},a=setTimeout(()=>s(void 0),XI);t.waiting={name:n,done:()=>s(this.events)};try{ot(r,"")}catch{s(void 0)}})}openBarrier(){let t;try{t=br(j(Lp(),"codeindex-watch-"));let n={dir:t,seq:0,watcher:Xo(t,(r,o)=>{n.waiting&&o?.toString()===n.waiting.name&&n.waiting.done()})};return n.watcher.on("error",()=>{}),n}catch(n){return t&&Ke(t,{recursive:!0,force:!0}),this.disable(n instanceof Error?n.message:String(n)),null}}walkAndWatch(){let t=new Set([""]);this.add("");let n=Xe(this.repo,{filter:o=>(o.directory&&(t.add(o.rel),this.add(o.rel)),!0)}),r=".git/info";ne(j(this.repo,r))&&Ae(j(this.repo,r)).isDirectory()&&(t.add(r),this.add(r));for(let[o,s]of this.dirs)t.has(o)||(s.close(),this.dirs.delete(o));return n}add(t){if(!(this.disabled||this.dirs.has(t))){if(this.dirs.size>=this.maxDirs){this.disable(`more than ${this.maxDirs} directories to watch`);return}try{let n=Xo(t?j(this.repo,t):this.repo,(r,o)=>this.onEvent(t,r,o));n.on("error",()=>{this.events++,this.forget(t)}),this.dirs.set(t,n)}catch(n){let r=n.code;if(r==="ENOENT"||r==="ENOTDIR"||r==="EACCES")return;this.disable(n instanceof Error?n.message:String(n))}}}onEvent(t,n,r){this.events++;let o=r?.toString();if(!o){No(this.repo);return}let s=t?`${t}/${o}`:o;n==="rename"&&this.forget(s),No(this.repo,s)}forget(t){let n=this.dirs.get(t);if(!n)return;n.close(),this.dirs.delete(t);let r=t?t+"/":"";for(let[o,s]of this.dirs)r&&!o.startsWith(r)||(s.close(),this.dirs.delete(o))}disable(t){this.disabled||(this.disabled=!0,this.warn(`MCP watcher disabled (${t}); using freshness scans`),this.close())}}});function uc(e,t){let n=e.properties??{};for(let r of e.required??[]){if(t[r]!==void 0&&t[r]!==null)continue;let o=n[r]?.description;return o?`\`${r}\` is required (${o})`:`\`${r}\` is required`}for(let[r,o]of Object.entries(t)){if(o==null)continue;let s=n[r];if(!s?.type)continue;let a=Array.isArray(o)?"array":typeof o;if(s.type==="number"||s.type==="integer"){let l=a==="number"?o:a==="string"&&o.trim()!==""?Number(o):NaN;if(!Number.isFinite(l))return`\`${r}\` must be a number, got ${a==="string"?JSON.stringify(o):a}`;if(s.type==="integer"&&!Number.isInteger(l))return`\`${r}\` must be a whole number, got ${l}`;if(s.minimum!==void 0&&ls.maximum)return`\`${r}\` must be at most ${s.maximum}`;continue}if(s.type==="array"){let l=s.items?.type==="string",c=l?"an array of strings":"an array";if(a!=="array")return`\`${r}\` must be ${c}, got ${a}`;if(l&&!o.every(d=>typeof d=="string"))return`\`${r}\` must be ${c}`;continue}if(a!==s.type)return`\`${r}\` must be a ${s.type}, got ${a}`;if(s.enum&&!s.enum.includes(o))return`\`${r}\` must be one of ${s.enum.map(l=>JSON.stringify(l)).join(", ")}, got ${JSON.stringify(o)}`}}function fc(e,t,n){if(t||!n)return;let r;try{r=JSON.parse(e)}catch{return}if(!(r===null||typeof r!="object"||Array.isArray(r)))return r}function mc(e){return typeof e=="string"&&Bn.includes(e)?e:YI}function QI(e,t,n){let r;try{r=Ae(e).size}catch{return"absent"}if(r!==n&&r!==n+1)return"stale";try{let o=ie(e,"utf8");return o===t||o===t+` -`?"identical":"stale"}catch{return"absent"}}function Ab(e){return/^[A-Za-z0-9_\-./=@:]+$/.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'"}function jo(e,t,n,r,o=!0,s){let a=W.byteLength(e,"utf8"),l=s??a;if(l<=r)return e;let c=o&&Object.hasOwn(Wf,t)?Wf[t]:void 0,d=c?j(n,Je,c):void 0,u=d?QI(d,e,a):void 0,f=`codeindex index --repo ${Ab(n)} --out ${Ab(j(n,Je))}`;return JSON.stringify({truncated:!0,tool:t,bytes:l,maxBytes:r,reason:"This response exceeds the configured limit and was withheld rather than sent as an unusable partial payload.",narrower:Object.hasOwn(Mb,t)?Mb[t]:"narrow the request with the arguments this tool's inputSchema offers",...u==="identical"?{artifact:d,artifactNote:"The full result is on disk here, byte-for-byte what this call would have returned \u2014 read it directly if you need all of it."}:u==="stale"?{artifactNote:`The artifact at ${d} does not match this answer (the repository changed since it was written, or it was indexed with other options). Run \`${f}\` to refresh it, then read it.`}:u==="absent"?{artifactNote:`Run \`${f}\` to get this as a file.`}:{}},null,2)+` -`}function gc(e,t){let n=Wf[t];if(!n)return;let r;try{r=JSON.parse(e)}catch{return}if(!(r.truncated!==!0||typeof r.artifact!="string"))return{type:"resource_link",uri:Cr(r.artifact).href,name:n,description:`The full ${t} result this call was too large to inline.`,mimeType:"application/json"}}var Bn,YI,Ib,Do,Tb,pc,Mb,Wf,$b,hc=z(()=>{"use strict";I();Ee();fe();bi();tr();Bn=["2024-11-05","2025-03-26","2025-06-18","2025-11-25"],YI=Bn[Bn.length-1],Ib="2025-03-26",Do="2025-06-18",Tb="2025-03-26";pc=1e6,Mb={graph:"pass `scope` to a subdirectory (or `include`/`exclude` globs), or use repo_map / mermaid for an overview",symbols:"pass `name` to look up one symbol, or `concise` for locations only; find_symbol / symbols_overview answer narrower questions",callers:"pass `name` to look up one symbol's call sites, or `concise` for locations only",dead_code:"pass a `limit`, or `scope` to a subdirectory",duplicated_literals:"pass a `limit`, raise `minFiles`/`minCount`, or pass `scope` to a subdirectory",find_references:"the symbol is referenced very widely \u2014 pass `concise`, or ask callers for the call sites alone",find_symbol:"lower `maxResults`, or drop `includeBody`/pass `concise`",symbols_overview:"the file declares a great many symbols \u2014 pass `concise`",grep:"lower `maxHits`, or restrict with `globs` or `scope`",search:"lower `limit`, or pass `scope` to a subdirectory",explain_search:"lower `limit`, or pass `scope` to a subdirectory",complexity:"lower `top`, or pass one `file`",call_graph:"lower `depth`, or follow one `direction`",type_hierarchy:"pass `name` to look up one type",mermaid:"lower `maxEdges`, or focus on one `module`",repo_map:"lower `budgetTokens`",onboard:"lower `budgetTokens`",hotspots:"pass `since` to count recent history only",churn:"pass `since` to count recent history only",coupling:"pass `since` to mine recent history only",check_rules:"narrow the rule set, or pass `scope` to a subdirectory",delta:'pass `concise` (drops the hunks), a `limit` on modules, or `format` "text" for the panel'},Wf={graph:"graph.json",symbols:"symbols.json"};$b=96});function zf(e){let t=Uo[e];if(t)return{readOnlyHint:!t.write,...t.write?{destructiveHint:t.destructive===!0,idempotentHint:t.idempotent===!0}:{},openWorldHint:t.openWorld===!0}}function as(){return["all",...Object.keys(zo).sort()]}function Ho(e){let t=e.split(",").map(r=>r.trim()).filter(Boolean),n=new Set;for(let r of t){if(r==="all")return new Set(Bo.map(s=>s.name));let o=Object.hasOwn(zo,r)?zo[r]:void 0;if(!o)throw new Error(`unknown tool profile "${r}" \u2014 one of: ${as().join(", ")}`);for(let s of o)n.add(s)}return n}function Qs(e,t=Bn[0],n){let r=t>=Ib,o=t>=Do,s=n?Ho(n):void 0,a=s?Bo.filter(l=>s.has(l.name)):Bo;return!e&&!r&&!o?a:a.map(l=>({...l,...o&&Uo[l.name]?{title:Uo[l.name].title}:{},...o&&os[l.name]?{outputSchema:os[l.name]}:{},...r?{annotations:zf(l.name)}:{},inputSchema:e?{...l.inputSchema,properties:{...l.inputSchema.properties,repo:{type:"string",description:`Absolute path to the repository root (optional \u2014 defaults to ${e})`}},required:l.inputSchema.required.filter(c=>c!=="repo")}:l.inputSchema}))}var pe,is,yc,Wo,Bf,Un,Bo,Pt,ye,Uf,os,Uo,zo,_c=z(()=>{"use strict";I();hc();pe={repo:{type:"string",description:"Absolute path to the repository root"}},is="name, name@file, file#name, file#Parent/name (a call_graph id) or Parent/name",yc={type:"string",description:'Only count commits after this ref (tag, branch, sha) or since this date ("2024-01-01", "6 months ago"); anything else is an error'},Wo={concise:{type:"boolean",description:"Return declaration locations (name/kind/file/line, plus parent for a member) without full symbol metadata. Keeps every result, reference tier and confidence label (default false)."}},Bf={file:{type:"string",description:"Disambiguate: repo-relative file containing the symbol"},line:{type:"number",minimum:1,description:"Disambiguate same-file homonyms: the declaration's first line, or any line inside it"},strict:{type:"boolean",description:"Refuse the edit (nothing written) when the post-edit check reports warnings (default false)"}},Un={scope:{type:"string",description:"Restrict to one directory or file (repo-relative); ANDed with include/exclude"},include:{type:"array",items:{type:"string"},description:"Include globs, rooted at the repo: '*.ts' is top-level only, '**/*.ts' any depth"},exclude:{type:"array",items:{type:"string"},description:"Exclude globs (rooted, like include)"}},Bo=[{name:"scan_summary",description:"Deterministically scan a repository: file count, per-language file histogram, HEAD commit, and whether the walk was capped. Fast first look at any codebase.",inputSchema:{type:"object",properties:{...pe,...Un},required:["repo"]}},{name:"graph",description:"Build the full typed cross-file link-graph (import/call/use/doc-link/mention edges, module grouping, PageRank centrality, Louvain communities, tests-map). Returns graph.json. Large on big repos \u2014 prefer scan_summary/symbols/callers for targeted questions.",inputSchema:{type:"object",properties:{...pe,...Un},required:["repo"]}},{name:"symbols",description:"Where is a symbol defined and which files reference it? Returns the definition sites (file, line, kind, exported) and referencing files. Omit `name` for the full symbol index.",inputSchema:{type:"object",properties:{...pe,...Wo,name:{type:"string",description:"Symbol name to look up"}},required:["repo"]}},{name:"callers",description:"Who calls a function? Per-symbol caller index: each defined symbol with the exact (file, line) call sites that bind to it. Omit `name` for the full index. An unknown symbol is an error; a known one no site binds to answers with its defs and how many call sites name it anyway (`unresolvedSites`, `sample`).",inputSchema:{type:"object",properties:{...pe,...Wo,name:{type:"string",description:is},lsp:{type:"boolean",description:"Append incoming calls from configured language servers and agreement with static callers. Requires name; name@file disambiguates. Unsupported servers and failures keep the static answer with a stated reason (default false)."},recall:{type:"boolean",description:"Recall-oriented binding: add the name-only matches precision mode rejects (a unique JS/TS name with no import, a same-file homonym whatever the receiver, a proximity guess in Go or into tests), labelling each site corroborated|unique-name (default false = precision)"},raw:{type:"boolean",description:"Every call site of `name` as written, before any binding: {name, sites:[{file, line, receiver?, enclosingSymbol?}]}. Requires name (default false)"},withCaller:{type:"boolean",description:"Add `caller` to each site: the symbol id of the declaration the call sits in (a call_graph node id), so the answer names functions, not just lines (default false)"}},required:["repo"]}},{name:"workspaces",description:"Detect monorepo packages (npm/pnpm/yarn/lerna/nx/cargo/go modules/maven/gradle/uv/composer) with the workspace dependency graph, one cycle if present, a topological build order, and warnings for malformed manifests. `check: true` also compares each package's declared sibling dependencies with the imports it really makes: `undeclared` (imported, not declared \u2014 breaks isolated installs and publishing) and `unusedDeclared` (declared, never imported).",inputSchema:{type:"object",properties:{...pe,check:{type:"boolean",description:"Compare declared workspace dependencies with resolved cross-package imports (builds the link-graph; default false)"}},required:["repo"]}},{name:"churn",description:"Per-file git commit counts (whole history, or a since window) \u2014 the churn half of hotspot analysis. Paths are relative to repo; `shallow: true` means a shallow clone (counts are lower bounds), `error` says why `ok` is false.",inputSchema:{type:"object",properties:{...pe,since:yc},required:["repo"]}},{name:"symbols_overview",description:"All symbols declared in ONE file (name, kind, line span, exported, parent), in declaration order \u2014 the fastest way to understand a file without reading it.",inputSchema:{type:"object",properties:{...pe,...Wo,file:{type:"string",description:"Repo-relative file path"}},required:["repo","file"]}},{name:"find_symbol",description:`Find symbol declarations by name or name path ('Class/method' matches a method inside Class). Each match carries its COMPLETE SIGNATURE (parameters and return type) by default, because "what shape is it" is the question that follows "where is it" almost every time and one round trip beats two. Options: substring matching, includeBody for the declaration's source, concise to drop everything but name/kind/file/line (and a member's parent) when you genuinely only want a location. Exact-name matches rank first.`,inputSchema:{type:"object",properties:{...pe,namePath:{type:"string",description:"Symbol name or Parent/child path"},substring:{type:"boolean"},includeBody:{type:"boolean"},concise:{type:"boolean",description:"Return only name/kind/file/line (plus parent for a member) \u2014 drop the signature, line span, visibility and language. Roughly 2.5x smaller; use it when you are resolving a path and nothing more (default false)."},maxResults:{type:"integer",minimum:1,description:"Cap matches (default 50)"}},required:["repo","namePath"]}},{name:"find_references",description:"Who references a symbol? Three labeled tiers: defs (declarations), callSites (line-precise, import-corroborated call bindings), referencingFiles (file-level identifier/doc mentions \u2014 may include homonyms). Confidence decreases across tiers; the labels let you decide what to trust.",inputSchema:{type:"object",properties:{...pe,name:{type:"string",description:`${is}; a bare name covers every homonym`},...Wo,lsp:{type:"boolean",description:"Also ask a configured language server (see lsp_status) and append an `lsp` block: its references plus an `agreement` matrix (both / lspOnly / staticOnly). The three static tiers are unchanged either way. `staticOnly` can indicate homonyms or an incomplete language-server answer; `partial: true` flags a declaration-only answer while static uses exist. Servers stay up for the session. No config, no binary, a crash or a timeout all degrade to the static answer with a stated reason (default false)."}},required:["repo","name"]}},{name:"symbol_at",description:"Which symbol is at file:line? The innermost declaration holding the line (full metadata plus its symbol `id`, the form callers/call_graph/call_path read) and the declarations around it, outermost first. Turns a grep hit, a stack frame or a diagnostic into something the navigation tools accept. `symbol` is null outside every declaration; `approximate: true` means the declaration has no recorded end line (regex tier), so it is only the nearest declaration above.",inputSchema:{type:"object",properties:{...pe,file:{type:"string",description:"Repo-relative file path"},line:{type:"number",minimum:1,description:"1-based line number"}},required:["repo","file","line"]}},{name:"lsp_status",description:"Is the optional LSP tier configured, and would it answer? Reports the config path and its source, each server with whether its command is on PATH and how many files in this repo it claims, and the languages no server covers. Opt-in by asset: the tier is active only when CODEINDEX_LSP_CONFIG points at a config or ~/.config/codeindex/lsp.json exists; the repo's own /.codeindex/lsp.json names commands to run, so it is read only when the server was started with --trust-lsp-config (or CODEINDEX_TRUST_LSP_CONFIG=1), and is reported as `ignoredConfig` otherwise. `probe: true` additionally starts each server to read the capabilities it really advertises. The tier never touches graph.json/symbols.json \u2014 it annotates query answers only.",inputSchema:{type:"object",properties:{...pe,probe:{type:"boolean",description:"Start each server and read its real capabilities (default false: no spawn)"}},required:["repo"]}},{name:"onboard",description:"One call that says what this repository IS: its own tagline, size and language mix, monorepo layout when there is one, a token-budgeted map of the highest-PageRank files with their key signatures, and where git says work concentrates. Composes scan_summary + workspaces + repo_map + hotspots so the first four round trips of a session become one, and persists the result as the `onboarding` memory (read_memory) so the next session does not repeat them. Set remember:false to skip the write.",inputSchema:{type:"object",properties:{...pe,budgetTokens:{type:"integer",minimum:1,description:"Token budget for the key-files section (default 900)"},remember:{type:"boolean",description:"Persist the brief as the `onboarding` memory (default true)"}},required:["repo"]}},{name:"repo_map",description:"Token-budgeted map of the repository: the most central production files (PageRank over the edges production code creates; tests left out) with their public types, functions and methods first, deterministically rendered to fit `budgetTokens` (default 1024). The densest single read to understand an unfamiliar codebase.",inputSchema:{type:"object",properties:{...pe,budgetTokens:{type:"integer",minimum:1,description:"Approximate token budget (default 1024)"}},required:["repo"]}},{name:"hotspots",description:"Where does work concentrate? Files changed in the window, ranked by git churn \xD7 size (commits \xD7 log2 lines); test files carry `test: true`. High-scoring files are where changes and defects cluster.",inputSchema:{type:"object",properties:{...pe,since:yc,limit:{type:"integer",minimum:1,description:"Max files (default 20)"}},required:["repo"]}},{name:"coupling",description:"Change coupling: pairs of indexed files that repeatedly change in the same commits. strength 1.0 = every change to one touched the other; ranked by `confidence` (the strength a pair's history supports); `linked: false` = no graph edge joins them \u2014 a hidden dependency.",inputSchema:{type:"object",properties:{...pe,since:yc,hidden:{type:"boolean",description:"Only pairs no graph edge links (default false)"},minTogether:{type:"integer",minimum:1,description:"Commits a pair must share (default 3)"},maxCommitFiles:{type:"integer",minimum:1,description:"Skip commits touching more files, as mass refactors (default 30)"},limit:{type:"integer",minimum:1,description:"Max pairs (default 100)"}},required:["repo"]}},{name:"replace_symbol_body",description:"WRITE: replace a symbol's whole declaration with `body` (verbatim, supply full indentation). The symbol is resolved by name path ('Class/method'); ambiguity errors list the candidates \u2014 qualify with `file`, and `line` for same-file homonyms (getter/setter, overloads). Line spans come from the AST index; a regex-tier symbol whose end cannot be proven is refused. The doc comment above the declaration is kept. The edited file is re-extracted before writing: `warnings` reports declarations changed outside the edit and new syntax errors, and `strict` refuses such an edit.",inputSchema:{type:"object",properties:{...pe,namePath:{type:"string"},body:{type:"string"},...Bf},required:["repo","namePath","body"]}},{name:"insert_after_symbol",description:"WRITE: insert `body` after a symbol's declaration (blank-line separation preserved for definition-like kinds). Resolved and verified like replace_symbol_body.",inputSchema:{type:"object",properties:{...pe,namePath:{type:"string"},body:{type:"string"},...Bf},required:["repo","namePath","body"]}},{name:"insert_before_symbol",description:"WRITE: insert `body` before a symbol, above its decorators/attributes and attached doc comment (blank-line separation preserved). Resolved and verified like replace_symbol_body.",inputSchema:{type:"object",properties:{...pe,namePath:{type:"string"},body:{type:"string"},...Bf},required:["repo","namePath","body"]}},{name:"write_memory",description:"Persist a named markdown note under /.codeindex/memories/ (names may use topic/name form). Write small, focused notes: project map, build commands, conventions.",inputSchema:{type:"object",properties:{...pe,name:{type:"string"},content:{type:"string"}},required:["repo","name","content"]}},{name:"read_memory",description:"Read one persisted memory by name.",inputSchema:{type:"object",properties:{...pe,name:{type:"string"}},required:["repo","name"]}},{name:"list_memories",description:"List persisted memory names \u2014 load this first, then read individual memories on relevance.",inputSchema:{type:"object",properties:{...pe},required:["repo"]}},{name:"delete_memory",description:"Delete one persisted memory by name.",inputSchema:{type:"object",properties:{...pe,name:{type:"string"}},required:["repo","name"]}},{name:"dead_code",description:"Dead-code candidates in two labeled tiers: 'unreferenced' (no call site binds AND no other file names it) and 'uncalled' (named elsewhere \u2014 import, type position, base-class list, a same-name call site \u2014 but no call binds). Exported callables only unless `kinds: \"all\"`; test and tail files (examples, docs, fixtures, scripts \u2014 `includeTail` to include them), the package's public API (manifest entry points and what they re-export), language protocol names and overrides of live methods are never candidates. On a large repo this list runs to thousands of entries \u2014 pass `limit`, or `scope` to one subdirectory.",inputSchema:{type:"object",properties:{...pe,...Un,limit:{type:"integer",minimum:1,description:"Cap entries (default: all)"},kinds:{type:"string",enum:["callable","all"],description:"Candidate kinds (default callable; all adds types, properties and constants, unreferenced only)"},includeTail:{type:"boolean",description:"Also report examples, docs, fixtures and scripts"}},required:["repo"]}},{name:"duplicated_literals",description:"Values with no single source of truth: one literal written out across many files. Three labeled tiers \u2014 'competing' (two or more exported constants hold the same value), 'bypassed' (a constant holds it and other files rewrite it anyway), 'uncentralized' (nothing holds it). Path-like values are also grouped into namespace families, so a whole route space reports once instead of once per route. Covers config files (JSON/YAML/TOML) as well as code, which is where the dangerous cases live: a threshold declared in TypeScript and again in a rules JSON is checked by no compiler. Use it to answer 'what breaks if this value changes' and 'is there already a helper for this'.",inputSchema:{type:"object",properties:{...pe,...Un,minFiles:{type:"integer",minimum:1,description:"Distinct files a value must span (default 2)"},minCount:{type:"integer",minimum:1,description:"Total occurrences required (default 3)"},includeTests:{type:"boolean",description:"Count test files too (default false)"},limit:{type:"integer",minimum:1,description:"Cap duplications (default: all)"}},required:["repo"]}},{name:"complexity",description:"Cyclomatic-complexity estimates (branch-token counting over AST line spans, comments and string literals aside), most-complex first; functions and methods only \u2014 containers are not ranked, and nested functions score on their own. Pass `file` for one file's symbols, omit for the repo-wide top. Combine with hotspots: the `risk` field of this tool's sibling ranks complexity \xD7 churn.",inputSchema:{type:"object",properties:{...pe,file:{type:"string"},risk:{type:"boolean",description:"Return complexity \xD7 git-churn risk ranking instead"},since:{...yc,description:"Only count risk churn after this ref (tag, branch, sha) or since this date"},top:{type:"integer",minimum:1,description:"Cap ranked symbols"}},required:["repo"]}},{name:"mermaid",description:"Mermaid diagram of the module graph (renders inline in Claude/GitHub \u2014 no graph database). Optionally scoped to one module's neighborhood.",inputSchema:{type:"object",properties:{...pe,module:{type:"string",description:"Module slug to focus on"},maxEdges:{type:"integer",minimum:1,description:"Cap rendered edges"}},required:["repo"]}},{name:"grep",description:"Search file contents with a JavaScript regular expression (ripgrep when available, a deterministic JS scan otherwise \u2014 same results either way). Returns hits sorted by (file, line): {file, line, col, text}, `col` being the 1-based UTF-16 column of the first match and `text` the line, cut to a window around the match when longer than 300 chars. Capped at maxHits (default 200): set `withMeta: true` to get `{ hits, truncated, filesMatched, notes? }` and know whether the list is complete. A pattern too slow for the JS engine is stopped at `timeoutMs` (default 10000) and the response is then always that envelope, with `timedOut: true`.",inputSchema:{type:"object",properties:{...pe,pattern:{type:"string",description:"JavaScript regular expression to search for"},scope:{type:"string",description:"Restrict to one directory or file (repo-relative). ANDed with `globs`"},globs:{type:"array",items:{type:"string"},description:"Restrict to matching paths. Rooted at the repo: '*.ts' matches root-level files only, '**/*.ts' any depth; a '!' prefix excludes (exclusion wins)"},ignoreCase:{type:"boolean"},maxHits:{type:"integer",minimum:1},filesWithMatches:{type:"boolean",description:"One hit per matching file (its first match); maxHits then caps files"},withMeta:{type:"boolean",description:"Return { hits, truncated, filesMatched, notes? } instead of the bare hit array"},timeoutMs:{type:"integer",minimum:1,description:"Wall-clock budget for the JS regex engine (default 10000)"}},required:["repo","pattern"]}},{name:"search",description:'Natural-language-ish lexical search: BM25F ranking over SIX weighted fields \u2014 symbol names (camelCase/snake_case subtokens), path segments, markdown headings, the file summary, per-symbol DOC COMMENTS, and the prose body (comment + short-literal words). The last two are why "where is rate limiting handled" works: the phrase lives in a comment, not in a name. Results carry `matchedFields`, a `line` anchor and `symbolHits` (name/kind/line). NOT embeddings by default \u2014 deterministic, diacritic-folded, zero API keys. Answers "where is auth handled?"-style queries with ranked files, matched terms and top symbols. Query terms with zero document frequency get a deterministic trigram-fuzzy fallback (typo-tolerant) unless `fuzzy: false`. Set `semantic: true` to RRF-fuse an embedding tier (HTTP endpoint, else a local static model) with lexical \u2014 the response then wraps the ranked list as `{ results, tier, degradedReason? }`, `tier` being "endpoint"/"static" when fusion happened or "lexical" (with `degradedReason`) when it did not (see embed_status). Without `semantic`, the response is the bare ranked array, unchanged.',inputSchema:{type:"object",properties:{...pe,...Un,query:{type:"string",description:"Natural-language or identifier query"},limit:{type:"integer",minimum:1,description:"Max results, a whole number (default 20)"},fuzzy:{type:"boolean",description:'Fallback for query terms with zero document frequency: a morphological stem match first ("caching" finds "cache"), then trigram similarity for typos (default true)'},rank:{type:"string",enum:["lexical","graph"],description:`Structural prior: "graph" multiplies the lexical score by the file's PageRank over the resolved import graph relative to an average file (a leaf \xD70.95, a hub well above \xD71; Go files unchanged); "lexical" (default) scores on text alone. Measured a wash \u2014 it helps some queries and hurts as many \u2014 see SearchOptions.rank.`},exact:{type:"boolean",description:"Drop results that carry no verbatim query-term match \u2014 the ones the stem/trigram bridge produced (default false)."},explain:{type:"boolean",description:"Wrap the response as `{ results, explain }` with the query verdict (default false = bare array). See explain_search."},semantic:{type:"boolean",description:'RRF-fuse an embedding tier with lexical (default false). Precedence: the HTTP endpoint (CODEINDEX_EMBED_ENDPOINT) if set, else a local static model. The response reports the effective tier as a top-level `tier` field ("endpoint"/"static" on success, "lexical" plus `degradedReason` when neither is available/reachable) instead of degrading silently \u2014 see embed_status. `exact` and `rank` apply to the lexical side; `explain: true` adds an `explain` key to that object, restated for the fused rows (with `semanticOnlyResults`).'}},required:["repo","query"]}},{name:"explain_search",description:'Search, and say whether the query actually found anything. Returns `{ results, explain }` where explain.verdict is "match" (a verbatim term matched), "weak" (results exist but rest on a near match, or the identifier you asked for has document frequency 0) or "none". Use this instead of `search` whenever an empty-feeling or surprising result matters: a query for an identifier that is NOT in the indexed tree still returns confident-looking rows built from its subtokens \u2014 searching "nullGipStep7" in a repo that only has "nullGipStep2" ranks files matching "null" and "gip" \u2014 and only the verdict distinguishes that from a real hit. Also names the terms dropped as stopwords, the terms that exist nowhere, and what each near match bridged to.',inputSchema:{type:"object",properties:{...pe,...Un,query:{type:"string",description:"Natural-language or identifier query"},limit:{type:"integer",minimum:1,description:"Max results, a whole number (default 20)"},fuzzy:{type:"boolean",description:"Stem/trigram fallback for zero-document-frequency terms (default true)"},exact:{type:"boolean",description:"Drop results carrying no verbatim term match (default false)"}},required:["repo","query"]}},{name:"embed_status",description:"Report the embedding tier: the effective mode (none/static/endpoint; endpoint > static model), the resolved model (opt-in, never shipped in the package) with its modelId/dim, EMBED_VERSION, and the configured HTTP endpoint with its reachability. A model.json that is present but fails to load is reported as `model: { present: true, error }` with mode none. Use to check whether `search` with semantic:true will fuse embeddings or degrade to lexical.",inputSchema:{type:"object",properties:{...pe},required:["repo"]}},{name:"type_hierarchy",description:"How do types relate? For one type: the base classes it extends, the interfaces/traits it implements, and \u2014 the reverse direction, which no other tool answers \u2014 what extends or implements IT, plus any declared supertype with no definition in this repo. Omit `name` for the whole hierarchy.",inputSchema:{type:"object",properties:{...pe,name:{type:"string",description:`Type to look up \u2014 ${is}`}},required:["repo"]}},{name:"implementations",description:"Who implements this interface (or extends this class)? Walks the hierarchy TRANSITIVELY, so a class implementing a sub-interface of the one asked about is included. Go states no implementations: a Go type counts when a `var _ I = (*T)(nil)` assertion says so, or when its methods (own and promoted by embedding) cover the interface's by name and parameter count \u2014 those are marked `structural: true`. The tool to reach for before changing an interface.",inputSchema:{type:"object",properties:{...pe,name:{type:"string",description:`Interface/trait/class \u2014 ${is}`}},required:["repo","name"]}},{name:"call_graph",description:"What does this symbol reach, and what reaches it? A bounded symbol-to-symbol neighborhood around `symbol` \u2014 `depth` hops (default 2) following `calls`/`extends`/`implements`/`overrides` edges, `direction` out (callees) | in (callers) | both. Dispatch is followed: walking out through a method also reaches the methods overriding it, and walking in to an override reaches the callers of the method it overrides. Answers impact questions the one-hop `callers` tool cannot.",inputSchema:{type:"object",properties:{...pe,symbol:{type:"string",description:`Symbol to centre on \u2014 ${is}`},depth:{type:"integer",minimum:1,maximum:5,description:"Hops to follow (default 2, max 5)"},direction:{type:"string",enum:["out","in","both"],description:"out | in | both (default both)"}},required:["repo","symbol"]}},{name:"call_path",description:'How does `from` reach `to`? The shortest chains of calls between two symbols (a call to a method may dispatch to an override: `via: "dispatch"`), listed in id order with the total count of equally short ones. No path within `depth` hops answers hops: null, plus `reverseHops` when `to` reaches `from` instead. With files: true, `from` and `to` are file paths and the steps are import/use/call edges of the link-graph \u2014 why does A depend on B (a path only name-inferred calls would open is reported as `inferredHops` unless includeInferred).',inputSchema:{type:"object",properties:{...pe,from:{type:"string",description:`Start \u2014 ${is}; a file path with files: true`},to:{type:"string",description:`End \u2014 ${is}; a file path with files: true`},depth:{type:"integer",minimum:1,description:"Longest path to look for, in hops (default 8, max 16)"},maxPaths:{type:"integer",minimum:1,description:"Shortest paths to list (default 5)"},files:{type:"boolean",description:"Walk the file link-graph instead of the symbol graph (default false)"},includeInferred:{type:"boolean",description:"files: true only \u2014 also step through calls inferred from a name alone (default false)"}},required:["repo","from","to"]}},{name:"impact",description:"What breaks if I change this file or module? The reverse dependency closure over the link-graph: every file that transitively imports, uses or calls `target`, nearest first, with the modules touched. A Go import reaches every non-test file of the package it names. A call inferred from a name alone is counted (`inferredDependents`) but not followed unless includeInferred. Answers from the persisted graph \u2014 no need to pull the whole `graph`.",inputSchema:{type:"object",properties:{...pe,target:{type:"string",description:"Repo-relative file path or module slug"},depth:{type:"integer",minimum:1,description:"Hops to follow (default: the full closure)"},includeInferred:{type:"boolean",description:"Also follow call edges inferred from a name alone (default false)"}},required:["repo","target"]}},{name:"neighbors",description:"What sits next to this file or module in the link-graph, both directions: every edge kind linking each neighbour (import, call, use, extends, implements, doc-link, mention, contains), strongest evidence first, out to `depth` hops. Hubs are listed but not expanded through, so depth 2 stays an answer rather than a dump.",inputSchema:{type:"object",properties:{...pe,target:{type:"string",description:"Repo-relative file path or module slug"},depth:{type:"integer",minimum:1,description:"Hops to follow (default 1)"},kinds:{type:"array",items:{type:"string"},description:"Edge kinds to traverse (default all)"}},required:["repo","target"]}},{name:"check_rules",description:'Validate dependency-cruiser-style architecture rules against the link-graph. Rules (inline JSON array): forbidden edges {name, from, to, kind?, severity?, comment?} with glob paths, plus builtins {name, builtin: "cycles"|"orphans"|"literals"} (module-level import cycles; code files nothing connects to; values with no single source of truth, narrowed by tiers?/minFiles?/minCount?/includeTests?). Unknown keys are rejected; a forbidden rule whose globs match no indexed file comes back as an `unmatched` warning. Returns `{ errors, warnings, violations }`, as the CLI does: deterministic violations with severity error|warn \u2014 a CI gate.',inputSchema:{type:"object",properties:{...pe,...Un,rules:{type:"array",description:"Rules array (inline JSON \u2014 see description)"},configPath:{type:"string",description:"Read the rules from this JSON file instead \u2014 the CLI's --config. Repo-relative, or absolute; either way it must resolve inside the repository. Ignored when `rules` is given."}},required:["repo"]}},{name:"resolution_report",description:"Can the link-graph be trusted for a language? Per importer language: how many imports resolved to in-repo files, went external (third-party/stdlib), dangle (local target missing, by reason) or are unsupported (no resolver for that language), the top dangling specs with an example importer, the top external packages, and the config warnings (unparseable tsconfig/package.json, missing `extends`) that silently turn imports external. Check it before relying on impact, callers or dead_code for a language.",inputSchema:{type:"object",properties:{...pe,...Un,lang:{type:"string",description:"Only this language (as scan_summary names it)"},limit:{type:"integer",minimum:1,description:"Entries per top list (default 10)"}},required:["repo"]}},{name:"index_status",description:"Is the persisted index (/.codeindex, written by `codeindex index`) fresh for this tree? Returns whether its cache.json is usable (or why not: absent/unreadable/corrupt/schema/extractor), the indexed vs HEAD commit, per-file drift counts (unchanged, touched, modified, added, deleted, reextract), artifactsFresh and the reasons it is not. Cheap: reads cache.json, walks and stats, hashes only stat-changed files, never extracts. A fresh index is what makes the first graph-shaped call on a large repo fast; a stale one is rebuilt in memory, so answers stay correct either way.",inputSchema:{type:"object",properties:{...pe,...Un},required:["repo"]}},{name:"delta",description:"What does my change break? Maps the git diff (the branch against its merge-base with the default branch, uncommitted and untracked work included; or the staged changeset) onto the graph: each changed file with the symbols enclosing its hunks, and per module a 0-100 risk score (HIGH/MEDIUM/LOW) in which every point comes with its reason \u2014 exported API changed, hub, blast radius, test gap, a deleted or renamed file that is still imported (`broken`, with its importers), dangling imports. `open` names the files to read first. Call it after editing.",inputSchema:{type:"object",properties:{...pe,...Wo,base:{type:"string",description:"Branch or ref to review against (default: origin/HEAD, origin/main, origin/master, main, master; else HEAD)"},staged:{type:"boolean",description:"Review the staged changeset against HEAD instead (default false)"},depth:{type:"integer",minimum:1,description:"Blast-radius hops (default 2)"},limit:{type:"integer",minimum:1,description:"Max modules, highest score first (default: all)"},format:{type:"string",enum:["json","text"],description:'"text" returns the compact human panel instead of JSON (default "json")'}},required:["repo"]}}],Pt={type:"array",items:{type:"string"}},ye={type:"object"},Uf={error:{type:"string"},shallow:{type:"boolean"},note:{type:"string"}},os={call_graph:{type:"object",properties:{root:{type:"array",items:ye},nodes:{type:"array",items:ye},edges:{type:"array",items:ye},truncated:{type:"boolean"},depthClamped:{type:"integer"}},required:["root","nodes","edges"]},call_path:{type:"object",properties:{from:{},to:{},hops:{type:["integer","null"]},paths:{type:"array",items:{type:"array",items:ye}},pathCount:{type:"integer"},truncated:{type:"boolean"},depthClamped:{type:"integer"},reverseHops:{type:"integer"},inferredHops:{type:"integer"}},required:["from","to","hops","paths","pathCount"]},impact:{type:"object",properties:{target:{type:"string"},scope:{type:"string",enum:["module","file"]},seeds:Pt,files:{type:"array",items:ye},modules:Pt,inferredDependents:{type:"integer"}},required:["target","scope","seeds","files","modules"]},neighbors:{type:"object",properties:{target:{type:"string"},scope:{type:"string",enum:["module","file"]},links:{type:"array",items:ye},members:Pt},required:["target","scope","links"]},scan_summary:{type:"object",properties:{engineVersion:{type:"string"},commit:{type:"string"},fileCount:{type:"integer"},languages:{type:"object",additionalProperties:{type:"integer"}},capped:{type:"boolean"}},required:["engineVersion","fileCount","languages","capped"]},graph:{type:"object",properties:{schemaVersion:{type:"integer"},version:{type:"string"},commit:{type:"string"},fileCount:{type:"integer"},languages:{type:"object",additionalProperties:{type:"integer"}},files:{type:"array",items:ye},modules:{type:"array",items:ye},fileEdges:{type:"array",items:ye},moduleEdges:{type:"array",items:ye}},required:["schemaVersion","files","fileEdges","modules","moduleEdges"]},symbols:{type:"object",oneOf:[{type:"object",properties:{schemaVersion:{type:"integer"},defs:ye,refs:ye},required:["schemaVersion","defs"]},{type:"object",properties:{name:{type:"string"},defs:{type:"array",items:ye},refs:Pt},required:["name","defs","refs"]}]},callers:{type:"object",oneOf:[{type:"object",additionalProperties:ye},{type:"object",properties:{def:ye,callers:{type:"array",items:ye},lsp:ye},required:["def","callers"]},{type:"object",properties:{error:{type:"string"},defs:{type:"array",items:ye},unresolvedSites:{type:"integer"},sample:{type:"array",items:ye}},required:["error"]},{type:"object",properties:{name:{type:"string"},sites:{type:"array",items:ye}},required:["name","sites"]}]},workspaces:{type:"object",properties:{packages:{type:"array",items:ye},cycle:{type:["array","null"],items:{type:"string"}},topoOrder:Pt,warnings:Pt,check:{type:"object",properties:{ok:{type:"boolean"},undeclared:{type:"array",items:ye},unusedDeclared:{type:"array",items:ye}},required:["ok","undeclared","unusedDeclared"]}},required:["packages","topoOrder"]},churn:{type:"object",properties:{ok:{type:"boolean"},...Uf,churn:{type:"object",additionalProperties:{type:"integer"}}},required:["ok","churn"]},find_references:{type:"object",properties:{defs:{type:"array",items:ye},callSites:{type:"array",items:ye},referencingFiles:Pt},required:["defs","callSites","referencingFiles"]},symbol_at:{type:"object",properties:{file:{type:"string"},line:{type:"integer"},symbol:{type:["object","null"]},enclosing:Pt,approximate:{type:"boolean"}},required:["file","line","symbol","enclosing"]},lsp_status:{type:"object",properties:{lspVersion:{type:"number"},mode:{type:"string",enum:["none","configured"]},configPath:{type:["string","null"]},source:{type:"string",enum:["env","repo","cwd","user","none"]},ignoredConfig:{type:"object",properties:{path:{type:"string"},reason:{type:"string"}},required:["path","reason"]},servers:{type:"array",items:ye},unmappedLanguages:Pt},required:["lspVersion","mode","source","servers","unmappedLanguages"]},check_rules:{type:"object",properties:{errors:{type:"integer"},warnings:{type:"integer"},violations:{type:"array",items:ye}},required:["errors","warnings","violations"]},onboard:{type:"object",properties:{brief:{type:"string"},memory:{type:"string"},memoryError:{type:"string"}},required:["brief"]},explain_search:{type:"object",properties:{results:{type:"array",items:ye},explain:{type:"object",properties:{query:{type:"string"},terms:{type:"array",items:ye},droppedStopwords:Pt,unresolvedTerms:Pt,wholeIdentifier:ye,verdict:{type:"string",enum:["match","weak","none"]},note:{type:"string"},bridgedOnlyResults:{type:"number"},resultCount:{type:"number"}},required:["query","terms","droppedStopwords","unresolvedTerms","verdict","bridgedOnlyResults","resultCount"]}},required:["results","explain"]},hotspots:{type:"object",properties:{churnOk:{type:"boolean"},...Uf,hotspots:{type:"array",items:ye}},required:["churnOk","hotspots"]},coupling:{type:"object",properties:{ok:{type:"boolean"},...Uf,couplings:{type:"array",items:ye}},required:["ok","couplings"]},duplicated_literals:{type:"object",properties:{duplications:{type:"array",items:ye},families:{type:"array",items:ye}},required:["duplications","families"]},index_status:{type:"object",properties:{indexDir:{type:"string"},present:{type:"boolean"},usable:{type:"boolean"},reason:{type:"string",enum:["absent","unreadable","corrupt","schema","extractor"]},engineVersion:ye,commit:ye,files:{type:["object","null"]},artifactsFresh:{type:"boolean"},stale:Pt},required:["indexDir","present","usable","engineVersion","commit","files","artifactsFresh","stale"]},embed_status:{type:"object",properties:{embedVersion:{type:"integer"},mode:{type:"string",enum:["none","static","endpoint"]},model:{},endpoint:{},endpointReachable:{type:"boolean"}},required:["embedVersion","mode"]},resolution_report:{type:"object",properties:{totals:ye,languages:{type:"array",items:ye},warnings:Pt},required:["totals","languages","warnings"]},write_memory:{type:"object",properties:{written:{type:"string"}},required:["written"]},delete_memory:{type:"object",properties:{deleted:{type:"boolean"}},required:["deleted"]}};for(let e of["replace_symbol_body","insert_after_symbol","insert_before_symbol"])os[e]={type:"object",properties:{file:{type:"string"},symbol:{type:"string"},startLine:{type:"integer"},endLine:{type:"integer"},lines:{type:"integer"},warnings:{type:"array",items:{type:"string"}}},required:["file"]};Uo={scan_summary:{title:"Scan summary"},graph:{title:"Link graph"},symbols:{title:"Symbol index"},callers:{title:"Caller index"},workspaces:{title:"Monorepo workspaces"},churn:{title:"Git churn"},symbols_overview:{title:"File symbol overview"},find_symbol:{title:"Find symbol"},find_references:{title:"Find references"},symbol_at:{title:"Symbol at a line"},repo_map:{title:"Repository map"},onboard:{title:"Project brief",write:!0,destructive:!1,idempotent:!0},hotspots:{title:"Hotspots"},coupling:{title:"Change coupling"},replace_symbol_body:{title:"Replace symbol body",write:!0,destructive:!0,idempotent:!0},insert_after_symbol:{title:"Insert after symbol",write:!0,destructive:!1,idempotent:!1},insert_before_symbol:{title:"Insert before symbol",write:!0,destructive:!1,idempotent:!1},write_memory:{title:"Write memory",write:!0,destructive:!1,idempotent:!0},read_memory:{title:"Read memory"},list_memories:{title:"List memories"},delete_memory:{title:"Delete memory",write:!0,destructive:!0,idempotent:!0},dead_code:{title:"Dead-code candidates"},duplicated_literals:{title:"Values with no single source of truth"},complexity:{title:"Complexity"},mermaid:{title:"Mermaid module diagram"},grep:{title:"Grep file contents"},search:{title:"Lexical search",openWorld:!0},explain_search:{title:"Search with a verdict",openWorld:!0},lsp_status:{title:"LSP tier status",openWorld:!0},embed_status:{title:"Embedding tier status",openWorld:!0},type_hierarchy:{title:"Type hierarchy"},implementations:{title:"Implementations"},call_graph:{title:"Call graph neighborhood"},call_path:{title:"Shortest call path"},impact:{title:"Reverse dependency closure"},neighbors:{title:"Link-graph neighbours"},check_rules:{title:"Check architecture rules"},resolution_report:{title:"Import resolution report"},index_status:{title:"Index freshness"},delta:{title:"Review the diff"}};zo={orient:["scan_summary","index_status","repo_map","onboard","workspaces","mermaid","graph","read_memory","list_memories","write_memory"],find:["search","explain_search","grep","find_symbol","symbols","symbols_overview","symbol_at","embed_status"],impact:["find_references","callers","call_graph","call_path","impact","neighbors","dead_code","type_hierarchy","implementations","lsp_status","resolution_report","delta"],edit:["find_symbol","symbols_overview","symbol_at","replace_symbol_body","insert_after_symbol","insert_before_symbol"],risk:["hotspots","churn","coupling","complexity","check_rules","duplicated_literals","dead_code","delta"],memory:["write_memory","read_memory","list_memories","delete_memory"]}});var Ob={};vc(Ob,{DEFAULT_MAX_RESPONSE_BYTES:()=>pc,OUTPUT_SCHEMAS:()=>os,PROTOCOL_VERSIONS:()=>Bn,TOOLS:()=>Bo,TOOL_META:()=>Uo,TOOL_PROFILES:()=>zo,annotationsFor:()=>zf,capResponse:()=>jo,getArtifacts:()=>cc,getScan:()=>Po,getScanParallel:()=>ac,getScanSummary:()=>lc,memoizedEmbedModel:()=>Oo,memoizedEmbeddingIndex:()=>Fo,negotiateProtocol:()=>mc,profileNames:()=>as,resourceLinkFor:()=>gc,runMcpServer:()=>Fb,scanFingerprint:()=>Df,structuredContentFor:()=>fc,toCacheMap:()=>Rt,toolsFor:()=>Qs,toolsInProfiles:()=>Ho,validateArgs:()=>uc,warmGrammarsForRepo:()=>vb,warmGrammarsForWalk:()=>Lo});function eT(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.jsonrpc!=="2.0"||typeof t.method!="string"?!1:t.id===void 0||t.id===null||typeof t.id=="number"||typeof t.id=="string"}function tT(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method!="string"&&("result"in t||"error"in t)}function be(e){return typeof e=="string"&&e?e:void 0}function ei(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")&&e.length?e:void 0}function qf(e){let t=typeof e=="number"?e:typeof e=="string"&&e.trim()!==""?Number(e):NaN;return Number.isFinite(t)&&t>=0?t:void 0}function bc(e,t){let n=qf(e);if(n!==void 0&&!Number.isInteger(n))throw new Error(`\`${t}\` must be a whole number, got ${n}`);return n}function Ue(e){let t=qf(e);return t!==void 0&&t>0?t:void 0}function Gf(e){return e instanceof Error?e.message:String(e)}function wc(e,t){return t?{...e,coverage:t}:e}function Hf(e,t,n){let r=dr(e);if(r.has(n))return n;let o=De(t,ae(t,n.replaceAll("\\","/"))).split("/").join("/");if(o===".."||o.startsWith("../")||Ne(o))throw new Error(`\`file\` is outside the repository: ${n}`);if(r.has(o))return o;let s=rs(e,t,n);if(s)throw new Error(s);let a=je(o),l=e.files.filter(c=>je(c.rel)===a).map(c=>c.rel).sort($).slice(0,5);throw new Error(`file not in the index: ${n}`+(l.length?` \u2014 did you mean ${l.join(", ")}?`:" (paths are repo-relative, as symbols_overview and find_symbol report them)"))}function rT(e,t){let n=be(e.repo)??t;if(!n)throw new Error("`repo` is required (absolute path to the repository root)");let r=ae(n);try{if(!Ae(r).isDirectory())throw new Error("not a directory")}catch{throw new Error(`repository root is not a readable directory: ${n}`)}return r}async function sT(e,t,n,r,o=async a=>({walked:Xe(a,{}),reused:!1}),s={}){let a={scope:be(t.scope),include:ei(t.include),exclude:ei(t.exclude)},l=be(t.rank),c=l==="graph"||l==="lexical"?{rank:l}:{},d,u;if(!(nT.has(e)&&!(e==="workspaces"&&t.check===!0))){let g=await o(n);d=g.walked,r?.(g.reused?`unchanged since the last call: ${d.files.length} files`:`walked ${d.files.length} files`),u=await ac(n,a,d,()=>d?Lo(d):Promise.resolve()),r?.(`scan ready: ${u.files.length} files`)}let m=()=>u??Po(n,a,d),p=()=>cc(n,a,d,u);if(e==="scan_summary"){let g=lc(n,a,d);return JSON.stringify({engineVersion:Te,commit:g.commit,fileCount:g.fileCount,languages:g.languages,capped:g.capped},null,2)}if(e==="index_status")return JSON.stringify(ji(n,a),null,2);if(e==="graph")return qr(p().graph);if(e==="symbols"){let{symbols:g}=p(),h=be(t.name);if(h){let _=Object.hasOwn(g.defs,h)?g.defs[h]:[],y=Object.hasOwn(g.refs,h)?g.refs[h]:[];return JSON.stringify({name:h,defs:t.concise===!0?_.map(b=>gr(b,h)):_,refs:y},null,2)}return JSON.stringify(t.concise===!0?_b(g):g,null,2)}if(e==="callers"){let g=be(t.name);if(t.lsp===!0&&!g)throw new Error("callers with lsp:true requires `name` (or name@file)");let h=m();if(t.raw===!0){if(!g)throw new Error("callers with raw:true requires `name`");if(t.lsp===!0||t.recall===!0)throw new Error("callers raw:true takes neither lsp nor recall");if(t.withCaller===!0)throw new Error("callers raw:true already names each site's enclosing symbol: it takes no withCaller");let x=gl(h,g);return JSON.stringify(wc(x,pr(h,x.name,{calls:!0})),null,2)}let _=t.recall===!0?Hr(h,void 0,{recall:!0}):Ns(h),y=x=>t.withCaller===!0?ro(h,x):x;if(g){let x=Nt(h,g)?.reading,k=x?Qa(x):g,v=pr(h,x?.name??g,{calls:!0}),T=dl(_,g),F=T&&y(T);if(F){let C=t.lsp===!0?await Ks(h,n,k,F,s):F;return JSON.stringify(wc(t.concise===!0?Ff(C):C,v),null,2)}let R=hl(h,g,_);if(!R){let C=ur(h,g).length;throw new Error(`no symbol named "${g}" in the index`+(C?` (${C} call site(s) use the name; raw:true lists them)`:"")+rc(h,g))}return JSON.stringify(wc(t.lsp===!0?await Ks(h,n,k,R,s):R,v),null,2)}let b={};for(let[x,k]of _)b[x]=t.concise===!0?Ff(y(k)):y(k);return JSON.stringify(b,null,2)}if(e==="workspaces"){let g=On(n),h=t.check===!0?wl(g,p().graph):void 0;return JSON.stringify(xl(g,h),null,2)}if(e==="churn"){let g=en(n,{since:be(t.since)}),h={};for(let _ of[...g.churn.keys()].sort())h[_]=g.churn.get(_);return JSON.stringify({ok:g.ok,...pn(g),churn:h},null,2)}if(e==="symbols_overview"){let g=be(t.file);if(!g)throw new Error("`file` is required");let h=m(),_=no(h,Hf(h,n,g));return JSON.stringify(t.concise===!0?_.map(y=>gr(y,y.name)):_,null,2)}if(e==="find_symbol"){let g=be(t.namePath);if(!g)throw new Error("`namePath` is required");let h=_n(m(),g,{substring:t.substring===!0,includeBody:t.includeBody===!0,concise:t.concise===!0,maxResults:Ue(t.maxResults)});return JSON.stringify(h,null,2)}if(e==="find_references"){let g=be(t.name);if(!g)throw new Error("`name` is required");let h=m(),_=so(h,g),y=Nt(h,g)?.reading.name??g,b=t.lsp===!0?await Ro(h,n,y,_,s):_;return JSON.stringify(wc(t.concise===!0?sc(b):b,pr(h,y,{calls:!0})),null,2)}if(e==="symbol_at"){let g=be(t.file),h=qf(t.line);if(!g)throw new Error("`file` is required");if(h===void 0||!Number.isInteger(h)||h<1)throw new Error("`line` must be a positive integer");let _=m(),y=new Set(_.files.map(x=>x.rel)),b=ns(n,g,x=>y.has(x));if(b===void 0)throw new Error(rs(_,n,g)??`no such file in the index: ${g}`);return JSON.stringify(pl(_,b,h),null,2)}if(e==="lsp_status")return JSON.stringify(await vo(m(),n,t.probe===!0,s),null,2);if(e==="replace_symbol_body"||e==="insert_after_symbol"||e==="insert_before_symbol"){let g=be(t.namePath),h=typeof t.body=="string"?t.body:void 0;if(!g||h===void 0)throw new Error("`namePath` and `body` are required");let _=Ue(t.line);if(t.line!==void 0&&(_===void 0||!Number.isInteger(_)))throw new Error("`line` must be a 1-based line number");let y=m(),b=e==="replace_symbol_body"?Hu:e==="insert_after_symbol"?Gu:qu,x=be(t.file),k=b(y,g,h,x===void 0?void 0:Hf(y,n,x),{line:_,strict:t.strict===!0});return kb(j(y.root,k.file)),JSON.stringify(k,null,2)}if(e==="write_memory"){let g=be(t.name),h=typeof t.content=="string"?t.content:void 0;if(!g||h===void 0)throw new Error("`name` and `content` are required");return JSON.stringify({written:oo(n,g,h)},null,2)}if(e==="read_memory"){let g=be(t.name);if(!g)throw new Error("`name` is required");let h=Ku(n,g);if(h===void 0)throw new Error(`no memory named "${g}" \u2014 see list_memories`);return h}if(e==="list_memories")return JSON.stringify(Zu(n),null,2);if(e==="delete_memory"){let g=be(t.name);if(!g)throw new Error("`name` is required");return JSON.stringify({deleted:Xu(n,g)},null,2)}if(e==="dead_code"){let g=Ao(m(),{kinds:t.kinds==="all"?"all":"callable",includeTail:t.includeTail===!0});return JSON.stringify(Kl(g,bc(t.limit,"limit")),null,2)}if(e==="duplicated_literals"){let g=Pn(m(),{minFiles:Ue(t.minFiles),minCount:Ue(t.minCount),includeTests:t.includeTests===!0}),h=bc(t.limit,"limit");return h===void 0||g.duplications.length<=h?JSON.stringify(g,null,2):JSON.stringify({total:g.duplications.length,shown:h,truncated:!0,duplications:g.duplications.slice(0,h),families:g.families},null,2)}if(e==="complexity"){let g=m();if(t.risk===!0){let y=en(n,{since:be(t.since)}),b=eo(g,y.churn,Ue(t.top));return JSON.stringify({churnOk:y.ok,...pn(y),risks:b},null,2)}let h=be(t.file),_=h===void 0?void 0:Hf(g,n,h);return JSON.stringify(Qi(g,_,Ue(t.top)),null,2)}if(e==="mermaid"){let{graph:g}=p();return Io(g,{module:be(t.module),maxEdges:Ue(t.maxEdges)})}if(e==="onboard"){let g=m(),{graph:h}=p();return JSON.stringify(_f(g,h,{...Ue(t.budgetTokens)!==void 0?{budgetTokens:Ue(t.budgetTokens)}:{},...t.remember===!1?{remember:!1}:{}}),null,2)}if(e==="repo_map"){let{scan:g,graph:h}=p();return Yr(g,h,{budgetTokens:Ue(t.budgetTokens)})}if(e==="hotspots"){let g=m(),h=en(n,{since:be(t.since)}),_=Qr(g,h.churn,Ue(t.limit));return JSON.stringify({churnOk:h.ok,...pn(h),hotspots:_},null,2)}if(e==="coupling"){let{graph:g}=p(),h=bo(n,{since:be(t.since),graph:g,hidden:t.hidden===!0,minTogether:Ue(t.minTogether),maxCommitFiles:Ue(t.maxCommitFiles),maxPairs:Ue(t.limit)});return JSON.stringify({ok:h.ok,...pn(h),couplings:h.couplings},null,2)}if(e==="grep"){let g=be(t.pattern);if(!g)throw new Error("`pattern` is required");let h=zs(n,g,{globs:ei(t.globs),scope:be(t.scope),ignoreCase:t.ignoreCase===!0,maxHits:Ue(t.maxHits),filesWithMatches:t.filesWithMatches===!0,timeoutMs:Ue(t.timeoutMs)});if(t.withMeta===!0||h.timedOut){let{hits:_,truncated:y,filesMatched:b,timedOut:x,notes:k}=h;return JSON.stringify({hits:_,truncated:y,filesMatched:b,...x?{timedOut:x}:{},...k.length?{notes:k}:{}},null,2)}return JSON.stringify(h.hits,null,2)}if(e==="search"){let g=be(t.query);if(!g)throw new Error("`query` is required");let h=bc(t.limit,"limit"),_=m(),y=typeof t.fuzzy=="boolean"?t.fuzzy:void 0,b=t.exact===!0?{exact:!0}:{},x={limit:h,fuzzy:y,...b,...c};if(t.semantic===!0){let T=({results:S,explain:w},E,P)=>JSON.stringify({results:S,tier:E,...P?{degradedReason:P}:{},...t.explain===!0?{explain:w}:{}},null,2),F=mr();if(F)try{let S=await Fo({mode:"endpoint",identity:F,scan:_},E=>yo(_,{previous:E})),w=await ho(g);return T(fr(_,g,S,{...x,queryVec:w}),"endpoint")}catch(S){return T(Gt(_,g,x),"lexical",`embedding endpoint failed: ${Gf(S)}`)}let R=Dn(n),{model:C,error:A}=Jr(R,Oo);if(C){let S=await Fo({mode:"static",identity:`${R}#${C.modelId}`,scan:_},w=>Xr(_,C,{previous:w??ss(j(n,Je,"embeddings.bin"))}));return T(fr(_,g,S,{...x,model:C}),"static")}return T(Gt(_,g,x),"lexical",A?`static model unusable: ${A}`:"no embedding endpoint or static model configured \u2014 see embed_status")}let{results:k,explain:v}=Gt(_,g,x);return JSON.stringify(t.explain===!0?{results:k,explain:v}:k,null,2)}if(e==="explain_search"){let g=be(t.query);if(!g)throw new Error("`query` is required");let h=bc(t.limit,"limit"),_=m(),y=typeof t.fuzzy=="boolean"?t.fuzzy:void 0,{results:b,explain:x}=Gt(_,g,{limit:h,fuzzy:y,...t.exact===!0?{exact:!0}:{},...c});return JSON.stringify({results:b,explain:x},null,2)}if(e==="embed_status"){let g=Dn(n),{model:h,error:_}=Jr(g,Oo),y=mr(),x={embedVersion:Jt,mode:y?"endpoint":h?"static":"none",model:h?{present:!0,dir:g,modelId:h.modelId,dim:h.dim,vocabSize:h.vocabSize}:_?{present:!0,dir:g,error:_}:{present:!1},endpoint:y??null};return y&&(x.endpointReachable=await go(y)),JSON.stringify(x,null,2)}if(e==="type_hierarchy"){let g=m(),h=Ps(g),_=be(t.name);if(!_){let b={};for(let[x,k]of h)b[x]=k;return JSON.stringify(b,null,2)}let y=sr(h,_,Nt(g,_)?.defs);if(!y)throw new ti(`no type named ${_}`);return JSON.stringify(y,null,2)}if(e==="implementations"){let g=be(t.name);if(!g)throw new Error("`name` is required");let h=m(),_=Ps(h),y=Nt(h,g)?.defs;if(!sr(_,g,y))throw new ti(`no type named ${g}`);return JSON.stringify({name:g,implementations:Gi(_,g,y)},null,2)}if(e==="call_graph"){let g=be(t.symbol);if(!g)throw new Error("`symbol` is required");let h=be(t.direction),_=h==="out"||h==="in"?h:"both",y=Vi(Ls(m()),g,{...Ue(t.depth)!==void 0?{depth:Ue(t.depth)}:{},direction:_});if(!y.root.length)throw new ti(`no symbol named ${g}`);return JSON.stringify(y,null,2)}if(e==="call_path"){let g=be(t.from),h=be(t.to);if(!g||!h)throw new Error("`from` and `to` are required");let _={depth:Ue(t.depth),maxPaths:Ue(t.maxPaths)};if(t.files===!0){let{graph:b}=p(),x=new Set(b.files.map(T=>T.rel)),[k,v]=[g,h].map(T=>{let F=ns(n,T,R=>x.has(R));if(F===void 0)throw new Error(`no such file in the index: ${T}`);return F});return JSON.stringify(rl(b,k,v,{..._,includeInferred:t.includeInferred===!0}),null,2)}if(t.includeInferred===!0)throw new Error("includeInferred applies to files: true only");let y=el(Ls(m()),g,h,_);if(!y.from.length)throw new Error(`no symbol named ${g}`);if(!y.to.length)throw new Error(`no symbol named ${h}`);return JSON.stringify(y,null,2)}if(e==="impact"||e==="neighbors"){let g=be(t.target);if(!g)throw new Error("`target` is required");let h=Ue(t.depth),_;if(e==="neighbors"&&t.kinds!==void 0){let b=ei(t.kinds)??[],x=b.filter(k=>!$s.includes(k));if(!b.length||x.length)throw new Error(`\`kinds\` expects edge kinds among ${$s.join("|")}, got ${JSON.stringify(x.length?x:t.kinds)}`);_=new Set(b)}let{graph:y}=p();for(let b of Wn(n,g)){let x=e==="impact"?Ki(y,b,h??1/0,{includeInferred:t.includeInferred===!0}):Xi(y,b,h??1,_);if(x)return JSON.stringify(x,null,2)}throw new Error(`no such file or module in the index: ${g}`)}if(e==="check_rules"){let g=be(t.configPath),h;if(t.rules!==void 0)h=ql(t.rules);else if(g){let b=new Error(`cannot read rules config ${g}`),x;try{x=st(Ne(g)?g:j(n,g))}catch{throw b}let k=st(n);if(!x.startsWith(k.endsWith("/")?k:k+"/"))throw new Error(`rules config must be a file inside the repository: ${g}`);let v;try{v=ie(x,"utf8")}catch{throw b}h=Gl(v,g)}else throw new Error("`rules` (or `configPath`) is required");let{scan:_,graph:y}=p();return JSON.stringify(Vl(Co(y,h,{scan:_})),null,2)}if(e==="delta"){let g=Xs(n,{base:be(t.base),staged:t.staged===!0});if("error"in g)throw new Error(g.error);let h=Ue(t.depth),_=To(g,h);if(g.files.length){let{scan:x,graph:k,symbols:v}=p();_=Zs(g,k,v,{depth:h,scan:x})}if(be(t.format)==="text")return $o(_);let y=t.concise===!0?bb(_):_,b=Ue(t.limit);return b===void 0||y.modules.length<=b?JSON.stringify(y,null,2):JSON.stringify({...y,modules:y.modules.slice(0,b),totalModules:y.modules.length,truncated:!0},null,2)}if(e==="resolution_report")return JSON.stringify(ec(m(),{lang:be(t.lang),limit:Ue(t.limit)}),null,2);throw new Error(`unknown tool: ${e}`)}async function Fb(e={}){let t={name:e.serverInfo?.name??"codeindex",version:e.serverInfo?.version??Te},n=Bn[0],r=e.defaultRepo===void 0?void 0:ae(e.defaultRepo),o=Qs(r,n,e.profile),s=new Map(Qs(r).map(k=>[k.name,k.inputSchema])),a=e.watch&&r?Rb(r,k=>O.stderr.write(`codeindex: ${k} -`)):void 0,l=async k=>a&&k===r?a.walk():{walked:Xe(k,{}),reused:!1},c=new Js,d=k=>{let v=Array.isArray(k)?k.map(T=>({jsonrpc:"2.0",...T})):{jsonrpc:"2.0",...k};O.stdout.write(JSON.stringify(v)+` -`)},u=Promise.resolve(),f=new Set,m=new Set,p=new Set,g=k=>{let v=k.finally(()=>p.delete(v));p.add(v)},h=mb({input:O.stdin,terminal:!1});try{for await(let k of h){let v=k.trim();if(!v)continue;let T;try{T=JSON.parse(v)}catch{d({id:null,error:{code:-32700,message:"parse error"}});continue}if(Array.isArray(T)&&T.length===0){d({id:null,error:{code:-32600,message:"invalid request"}});continue}if(Array.isArray(T)){let F=T.map(_),R=C=>{let A=C.filter(S=>S!==void 0);A.length>0&&d(A)};F.some(C=>C instanceof Promise)?g(Promise.all(F).then(R)):R(F)}else{let F=_(T);F instanceof Promise?g(F.then(R=>R?d(R):void 0)):F&&d(F)}}for(;p.size>0;)await Promise.all(p)}finally{a?.close(),await c.close()}function _(k){if(!tT(k))return eT(k)?y(k):{id:null,error:{code:-32600,message:"invalid request"}}}function y(k){let v=!("id"in k),T=F=>v?void 0:{id:k.id??null,...F};try{if(k.method==="initialize")return n=mc(k.params?.protocolVersion),o=Qs(r,n,e.profile),T({result:{protocolVersion:n,capabilities:{tools:{}},serverInfo:t,instructions:`Available tool profiles: ${as().join(", ")}. Active profile: ${e.profile??"all"}. Configure profiles with --tools . Profiles select advertised tools; known tools remain callable.`}});if(k.method==="ping")return T({result:{}});if(k.method==="tools/list")return T({result:{tools:o}});if(k.method==="tools/call")return b(k,T);if(k.method==="notifications/cancelled"){let F=k.params?.requestId;(typeof F=="string"||typeof F=="number")&&f.has(F)&&m.add(F);return}else return T({error:{code:-32601,message:`method not found: ${k.method}`}})}catch(F){return T({error:{code:-32603,message:Gf(F)}})}}function b(k,v){let T=k.params??{},F=T.arguments;if(typeof T.name!="string")return v({error:{code:-32602,message:"invalid params: tools/call requires a string `name`"}});if(F!=null&&(typeof F!="object"||Array.isArray(F)))return v({error:{code:-32602,message:"invalid params: tools/call `arguments` must be an object"}});let R=T.name,C=F??{},A=s.get(R),S=A?uc(A,C):`unknown tool: ${R}`;if(S)return v({result:{content:[{type:"text",text:S}],isError:!0}});let w=n,E=typeof k.id=="string"||typeof k.id=="number"?k.id:void 0;E!==void 0&&f.add(E);let P=T._meta?.progressToken,N=0,L=typeof P=="string"||typeof P=="number"?Y=>{if(E!==void 0&&m.has(E))return;let oe=w>=Tb?{message:Y}:{};d({method:"notifications/progress",params:{progressToken:P,progress:++N,...oe}})}:void 0,H=u.then(async()=>{if(!(E!==void 0&&m.has(E)))return v(await x(R,C,w,L))});return u=H.catch(()=>{}),H.then(Y=>E===void 0?Y:(f.delete(E),m.delete(E)?void 0:Y))}async function x(k,v,T,F){try{let R=rT(v,r),C=await sT(k,v,R,F,l,{pool:c,trustRepoConfig:e.trustLspConfig}),A=be(v.scope)!==void 0||ei(v.include)!==void 0||ei(v.exclude)!==void 0||be(v.name)!==void 0||v.concise===!0,S=e.maxResponseBytes??pc,w=N=>{let L=N!==C,H=L&&T>=Do?gc(N,k):void 0,Y=T>=Do?fc(N,L,os[k]!==void 0):void 0;return{content:H?[{type:"text",text:N},H]:[{type:"text",text:N}],...Y?{structuredContent:Y}:{},...L?{isError:!0}:{}}},E=jo(C,k,R,S,!A),P=w(E);if(E===C){let N=W.byteLength(JSON.stringify(P),"utf8")+$b;N>S&&(P=w(jo(C,k,R,S,!A,N)))}return{result:P}}catch(R){return{result:{content:[{type:"text",text:R instanceof ti?JSON.stringify({error:R.message},null,2):Gf(R)}],isError:!0}}}}}var ti,nT,Vf=z(()=>{"use strict";I();Ee();fe();pb();_t();kl();or();gt();le();Tn();Wr();Gr();tn();co();wo();_o();Xl();Us();Os();Zl();Tf();js();$f();tc();Br();Pr();Hl();Of();bf();Ga();Vu();_l();Fs();Jl();Ql();Kr();Zr();Nf();tr();Al();$l();Ze();Cb();_c();hc();dc();_c();hc();dc();ti=class extends Error{},nT=new Set(["workspaces","churn","grep","write_memory","read_memory","list_memories","delete_memory","embed_status","scan_summary","index_status"])});var Wb={};vc(Wb,{rewriteCommand:()=>jb,shellQuote:()=>ls,tokenize:()=>iT});function Pb(e){let t=[],n="",r=!1,o=!1;for(let s=0;s{"use strict";$();me();nn();$n();ce();Ze();et();St();Ur();kn={exportedChange:25,hubHigh:20,hubMed:10,blastHigh:20,blastMed:10,testGap:20,surprise:10,dangling:15,brokenImport:40},WI=60,BI=30,UI=3,Ql=2});function gb(){throw new Error("readline is not available in the browser build (the MCP stdio transport is Node-only)")}var hb=H(()=>{$()});function JI(e,t,n){if(t==="doc-link")return n;if(VI.has(e)){if(/^[./]/.test(n))return n;let r=n.split("/");return n.startsWith("@")&&r.length>1?`${r[0]}/${r[1]}`:r[0]}if(e==="python")return n.startsWith(".")?n:n.split(".")[0];if(e==="go"){let r=n.split("/");return r[0].includes(".")?r.slice(0,3).join("/"):r[0]}return e==="rust"?n.split("::")[0]:e==="java"||e==="csharp"?n.split(".").slice(0,2).join("."):e==="php"?n.replace(/^\\+/,"").split("\\")[0]:n.split("/")[0]}function tc(e,t={}){let n=t.limit??qI,r=cn(e),o=new Map;for(let c of e.files){if(t.lang!==void 0&&c.lang!==t.lang)continue;let d=o.get(c.lang);d||(d={files:0,withRefs:0,row:{refs:0,resolved:0,external:0,dangling:0,unsupported:0},reasons:new Map,dangling:new Map,external:new Map,code:!1},o.set(c.lang,d)),d.files++,c.kind==="code"&&(d.code=!0),c.refs.length&&d.withRefs++;for(let u of c.refs){if(d.row.refs++,u.kind==="import"&&!Dh(c.ext)){d.row.unsupported++;continue}let f=u.kind==="doc-link"?sr(c.rel,u.spec,r):ct(c.rel,c.ext,u.spec,r);if(f.kind==="resolved")d.row.resolved++;else if(f.kind==="external"){d.row.external++;let m=JI(c.lang,u.kind,u.spec);d.external.set(m,(d.external.get(m)??0)+1)}else{d.row.dangling++,d.reasons.set(f.reason,(d.reasons.get(f.reason)??0)+1);let m=`${u.spec}\0${f.reason}`,p=d.dangling.get(m);p?(p.count++,T(c.rel,p.example)<0&&(p.example=c.rel)):d.dangling.set(m,{reason:f.reason,count:1,example:c.rel})}}}if(t.lang!==void 0&&!o.size){let c=Object.keys(e.languages).sort(T).join(", ");throw new Error(`no indexed files in language "${t.lang}"${c?` \u2014 one of: ${c}`:""}`)}let s={refs:0,resolved:0,external:0,dangling:0,unsupported:0},a=[];for(let c of[...o.keys()].sort(T)){let d=o.get(c);if(!d.code&&d.row.refs===0&&t.lang===void 0)continue;for(let h of Object.keys(s))s[h]+=d.row[h];let u={};for(let h of[...d.reasons.keys()].sort(T))u[h]=d.reasons.get(h);let f=[...d.dangling.entries()].map(([h,_])=>({spec:h.slice(0,h.indexOf("\0")),reason:_.reason,count:_.count,example:_.example})).sort(yb(h=>h.count,h=>`${h.spec}\0${h.reason}`)).slice(0,n),m=[...d.external.entries()].map(([h,_])=>({name:h,count:_})).sort(yb(h=>h.count,h=>h.name)).slice(0,n),p={lang:c,files:d.files,filesWithRefs:d.withRefs,...d.row,danglingByReason:u,topDangling:f,topExternal:m},g=KI(p);g&&(p.note=g),a.push(p)}let l=[...new Set([...r.warnings,...Pn(e.root).warnings])].sort(T);return{totals:s,languages:a,warnings:l}}function KI(e){let t=e.lang==="markdown"?"link":"import",n=(r,o)=>`${r} ${o}${r===1?"":"s"}`;if(e.refs===0)return`no ${t}s extracted from ${n(e.files,"file")} \u2014 this language gets no ${t} edges`;if(e.unsupported===e.refs)return`no import resolver for this language \u2014 its ${n(e.refs,"import")} never become edges`;if(e.resolved===0&&e.dangling===0)return`every ${t} is external \u2014 no in-repo ${t} edges for this language`;if(e.dangling>e.resolved)return t==="link"?"more links dangle than resolve \u2014 broken relative links in the docs":"more imports dangle than resolve \u2014 check path aliases and `warnings` before trusting impact or dead-code answers"}var qI,VI,yb,Tf=H(()=>{"use strict";$();$n();gt();qr();ce();qI=10,VI=new Set(["typescript","javascript","vue","svelte","astro","html"]);yb=(e,t)=>(n,r)=>e(r)-e(n)||T(t(n),t(r))});function Un(e,t){let n=(Pe(t)?je(e,t):t).replace(/\\/g,"/");for(;n.startsWith("./");)n=n.slice(2);return n!==t&&n!==""&&n!==".."&&!n.startsWith("../")?[t,n]:[t]}function rs(e,t,n){return Un(e,t).find(n)}var nc=H(()=>{"use strict";$();me()});function rc(e,t){if(!e.oversized?.length||!/^[A-Za-z_$][\w$]*$/.test(t))return[];let n=_b.get(e);n||_b.set(e,n=new Map);let r=n.get(t);if(r)return r;let o=new RegExp(`(?XI||mt(a.rel,mn(a.rel).toLowerCase())!=="code")continue;let l;try{l=ie(j(e.root,a.rel),"utf8")}catch{continue}o.test(l)&&s.push({file:a.rel,size:a.size})}return n.set(t,s),s}function hr(e,t,n){let r=n.calls?e.files.filter(a=>a.callsCapped&&a.calls?.some(l=>l.name===t)).map(a=>a.rel):[],o=rc(e,t);if(!r.length&&!o.length)return;let s=[];return r.length&&s.push(`${r.length} file(s) reached the per-file call-site cap, so some of their calls are missing; re-index with a higher --max-calls`),o.length&&s.push(bb(o,`name "${t}"`)),{...r.length?{callCapped:r}:{},...o.length?{notIndexed:o}:{},hint:s.join("; ")}}function bb(e,t){let n=Math.max(...e.map(r=>r.size));return`${e.length} file(s) over --max-bytes ${t} but are not indexed (${e.map(r=>r.file).join(", ")}); re-index with --max-bytes ${n}`}function sc(e,t){let n=rc(e,t);return n.length?` \u2014 ${bb(n,`name "${t}"`)}`:""}function ss(e,t,n){let r=Un(t,n),o=e.oversized?.find(s=>r.includes(s.rel));return o?`not in the index: ${o.rel} is ${o.size} bytes, over --max-bytes (default 1 MiB); re-index with --max-bytes ${o.size} to include it`:void 0}var XI,_b,Ff=H(()=>{"use strict";$();ke();me();In();nc();XI=32*1024*1024,_b=new WeakMap});function yr(e,t){return{name:t,kind:e.kind,file:e.file,line:e.line,...e.parent?{parent:e.parent}:{}}}function Of(e){return{...e,def:yr(e.def,e.def.name)}}function ic(e){return{...e,defs:e.defs.map(t=>yr(t,t.name))}}function wb(e){return{...e,defs:Object.fromEntries(Object.entries(e.defs).map(([t,n])=>[t,n.map(r=>yr(r,t))]))}}function xb(e){return{...e,changes:e.changes.map(t=>({path:t.path,status:t.status,...t.oldPath!==void 0?{oldPath:t.oldPath}:{},...t.module!==void 0?{module:t.module}:{},symbols:t.symbols.map(n=>({name:n.name,kind:n.kind,line:n.line}))}))}}var Nf=H(()=>{"use strict";$()});function is(e){try{return yf(ie(e))}catch{return}}function Sb(e,t){let n=`${e}.${F.pid}.tmp`;try{return Yt(Ce(e),{recursive:!0}),it(n,t),Rn(n,e),!0}catch{return Ke(n,{force:!0}),!1}}var Pf=H(()=>{"use strict";$();ke();me();Yr()});function jf(e){return Re(e.files.map(t=>`${t.rel}:${t.hash}`).join(` +`))}async function Oo(e,t){let n=`${e.mode}:${e.identity}`,r=`${n}:${jf(e.scan)}`;if(Ys&&Ys.key===r)return Ys.index;let o=await t(Ys?.tier===n?Ys.index:void 0);return Ys={key:r,tier:n,index:o},o}function No(e){let t;try{t=Me(j(e,"model.json"))}catch{return}let n=`${e}:${t.mtimeMs}:${t.size}`;if(oc&&oc.key===n)return oc.model;let r=Hs(e);return r&&(oc={key:n,model:r}),r}function ac(e,t){e.scan.commit!==t&&(e.scan.commit=t,e.arts=void 0,e.loadArtifacts=void 0)}function Lf(e){let t=Kt.findIndex(r=>r.key===e);if(t<0)return;let[n]=Kt.splice(t,1);return Kt.unshift(n),n}function _r(e){let t=Kt.findIndex(n=>n.key===e.key);return t>=0&&Kt.splice(t,1),Kt.unshift(e),Kt.length=Math.min(Kt.length,ZI),e}function vb(e){let t=kb(e);for(let n of Kt){let r=new Set([Eb(n.scan.root,e),Eb(kb(n.scan.root),t)]);for(let o of r){let s=o===void 0?void 0:n.cacheMap.get(o);s&&(Df(n.cacheMap,o,s),n.walked=void 0)}}}function Df(e,t,n){e.set(t,{hash:n.hash,record:n.record})}function kb(e){try{return rt(e)}catch{return e}}function Eb(e,t){let n=je(e,t);if(!(!n||n===".."||n.startsWith("../")||Pe(n)))return n.split("/").join("/")}function Po(e,t){let n=e+"\0";for(let r of Kt)if(r.key.startsWith(n))if(r.walked=void 0,t===void 0)for(let[o,s]of r.cacheMap)Df(r.cacheMap,o,s);else{let o=r.cacheMap.get(t);o&&Df(r.cacheMap,t,o)}}function Rb(e,t){return e+"\0"+JSON.stringify({scope:t.scope,include:t.include,exclude:t.exclude,gitignore:t.gitignore,ignoreDirs:t.ignoreDirs,maxBytes:t.maxBytes,maxFiles:t.maxFiles,maxCallsPerFile:t.maxCallsPerFile,out:t.out,fullHash:t.fullHash})}function Lo(e,t={},n){let r=Rb(e,t),o=Lf(r);if(o){if(n&&o.walked===n)return ac(o,en(e)),o.scan;let l=Rt(e,{...t,cache:o.cacheMap,precomputedWalk:n});return l.contentUnchanged?(l.cacheDirty&&(o.cacheMap=Ct(l)),ac(o,l.commit),o.walked=n,o.scan):(_r({key:r,scan:l,cacheMap:Ct(l),walked:n}),l)}let s=Qd(e,{...t,precomputedWalk:n});if(s)return _r({key:r,scan:s.scan,cacheMap:s.cacheMap,arts:s.arts,walked:n}),s.scan;let a=Rt(e,{...t,precomputedWalk:n});return _r({key:r,scan:a,cacheMap:Ct(a),walked:n}),a}async function lc(e,t={},n,r=async()=>{}){let o=Rb(e,t),s=Kt.find(c=>c.key===o);if(s){if(n&&s.walked===n)return ac(s,en(e)),Lf(o),s.scan;let c=s.cacheMap,d=m=>(m.cacheDirty&&(s.cacheMap=Ct(m)),ac(s,m.commit),s.walked=n,Lf(o),s.scan);if(n&&Zd(n,c,t.fullHash)){await r();let m=await bn(e,{...t,cache:c,precomputedWalk:n});return m.contentUnchanged?d(m):(_r({key:o,scan:m,cacheMap:Ct(m),walked:n}),m)}let u=Rt(e,{...t,cache:c,precomputedWalk:n});if(u.contentUnchanged)return d(u);if(n)return _r({key:o,scan:u,cacheMap:Ct(u),walked:n}),u;await r();let f=await bn(e,{...t,cache:c,precomputedWalk:n});return _r({key:o,scan:f,cacheMap:Ct(f)}),f}let a=await Ga(e,{...t,precomputedWalk:n},r);if(a)return _r({key:o,scan:a.scan,cacheMap:a.cacheMap,arts:a.arts,loadArtifacts:a.loadArtifacts,walked:n}),a.scan;await r();let l=await bn(e,{...t,precomputedWalk:n});return _r({key:o,scan:l,cacheMap:Ct(l),walked:n}),l}function cc(e,t={},n){return Ti(e,{...t,precomputedWalk:n})}function dc(e,t={},n,r){let o=r??Lo(e,t,n),s=Kt.find(a=>a.scan===o);return s?s.arts??=s.loadArtifacts?.()??jn(o,t):jn(o,t)}async function Cb(e){await Do(Xe(e,{}))}async function Do(e){await an(Bt(e.files.map(t=>t.ext)))}var Ys,oc,ZI,Kt,uc=H(()=>{"use strict";$();ke();me();Rl();Ut();Li();rr();Ze();pt();Xr();Yr();St();nn();ZI=4,Kt=[]});function Mb(e,t,n=YI){return F.platform==="linux"?new Wf(e,t,n):e$(e,t)}function e$(e,t){let n;try{n=Zo(e,{recursive:!0},(r,o)=>{let s=o?.toString().replaceAll("\\","/")??"";s.split("/").some(l=>Cn.has(l)||l.startsWith(".codeindex-edit-"))||Po(e,s||void 0)}),n.on("error",r=>{t(`MCP watcher disabled (${r.message}); using freshness scans`),n?.close(),n=void 0,Po(e)})}catch(r){t(`MCP watcher unavailable (${r instanceof Error?r.message:String(r)}); using freshness scans`)}return{walk:async()=>({walked:Xe(e,{}),reused:!1}),close:()=>n?.close()}}var YI,QI,Wf,Ab=H(()=>{"use strict";$();ke();bi();me();Ze();uc();YI=8192,QI=2e3;Wf=class{constructor(t,n,r){this.repo=t;this.warn=n;this.maxDirs=r}repo;warn;maxDirs;dirs=new Map;events=0;proof;barrier;disabled=!1;async walk(){if(this.disabled)return{walked:Xe(this.repo,{}),reused:!1};let t=await this.sync();if(t!==void 0&&this.proof?.events===t)return{walked:this.proof.walked,reused:!0};this.proof=void 0;let n=this.walkAndWatch();return t!==void 0&&!this.disabled&&(this.proof={events:t,walked:n}),{walked:n,reused:!1}}close(){for(let t of this.dirs.values())t.close();this.dirs.clear(),this.proof=void 0,this.barrier&&(this.barrier.watcher.close(),Ke(this.barrier.dir,{recursive:!0,force:!0})),this.barrier=null}sync(){this.barrier===void 0&&(this.barrier=this.openBarrier());let t=this.barrier;if(!t)return Promise.resolve(void 0);let n=`barrier-${++t.seq}`,r=j(t.dir,n);return new Promise(o=>{let s=l=>{clearTimeout(a),t.waiting=void 0,Ke(r,{force:!0}),o(l)},a=setTimeout(()=>s(void 0),QI);t.waiting={name:n,done:()=>s(this.events)};try{it(r,"")}catch{s(void 0)}})}openBarrier(){let t;try{t=wr(j(Dp(),"codeindex-watch-"));let n={dir:t,seq:0,watcher:Zo(t,(r,o)=>{n.waiting&&o?.toString()===n.waiting.name&&n.waiting.done()})};return n.watcher.on("error",()=>{}),n}catch(n){return t&&Ke(t,{recursive:!0,force:!0}),this.disable(n instanceof Error?n.message:String(n)),null}}walkAndWatch(){let t=new Set([""]);this.add("");let n=Xe(this.repo,{filter:o=>(o.directory&&(t.add(o.rel),this.add(o.rel)),!0)}),r=".git/info";Q(j(this.repo,r))&&Me(j(this.repo,r)).isDirectory()&&(t.add(r),this.add(r));for(let[o,s]of this.dirs)t.has(o)||(s.close(),this.dirs.delete(o));return n}add(t){if(!(this.disabled||this.dirs.has(t))){if(this.dirs.size>=this.maxDirs){this.disable(`more than ${this.maxDirs} directories to watch`);return}try{let n=Zo(t?j(this.repo,t):this.repo,(r,o)=>this.onEvent(t,r,o));n.on("error",()=>{this.events++,this.forget(t)}),this.dirs.set(t,n)}catch(n){let r=n.code;if(r==="ENOENT"||r==="ENOTDIR"||r==="EACCES")return;this.disable(n instanceof Error?n.message:String(n))}}}onEvent(t,n,r){this.events++;let o=r?.toString();if(!o){Po(this.repo);return}let s=t?`${t}/${o}`:o;n==="rename"&&this.forget(s),Po(this.repo,s)}forget(t){let n=this.dirs.get(t);if(!n)return;n.close(),this.dirs.delete(t);let r=t?t+"/":"";for(let[o,s]of this.dirs)r&&!o.startsWith(r)||(s.close(),this.dirs.delete(o))}disable(t){this.disabled||(this.disabled=!0,this.warn(`MCP watcher disabled (${t}); using freshness scans`),this.close())}}});function fc(e,t){let n=e.properties??{};for(let r of e.required??[]){if(t[r]!==void 0&&t[r]!==null)continue;let o=n[r]?.description;return o?`\`${r}\` is required (${o})`:`\`${r}\` is required`}for(let[r,o]of Object.entries(t)){if(o==null)continue;let s=n[r];if(!s?.type)continue;let a=Array.isArray(o)?"array":typeof o;if(s.type==="number"||s.type==="integer"){let l=a==="number"?o:a==="string"&&o.trim()!==""?Number(o):NaN;if(!Number.isFinite(l))return`\`${r}\` must be a number, got ${a==="string"?JSON.stringify(o):a}`;if(s.type==="integer"&&!Number.isInteger(l))return`\`${r}\` must be a whole number, got ${l}`;if(s.minimum!==void 0&&ls.maximum)return`\`${r}\` must be at most ${s.maximum}`;continue}if(s.type==="array"){let l=s.items?.type==="string",c=l?"an array of strings":"an array";if(a!=="array")return`\`${r}\` must be ${c}, got ${a}`;if(l&&!o.every(d=>typeof d=="string"))return`\`${r}\` must be ${c}`;continue}if(a!==s.type)return`\`${r}\` must be a ${s.type}, got ${a}`;if(s.enum&&!s.enum.includes(o))return`\`${r}\` must be one of ${s.enum.map(l=>JSON.stringify(l)).join(", ")}, got ${JSON.stringify(o)}`}}function mc(e,t,n){if(t||!n)return;let r;try{r=JSON.parse(e)}catch{return}if(!(r===null||typeof r!="object"||Array.isArray(r)))return r}function pc(e){return typeof e=="string"&&zn.includes(e)?e:t$}function n$(e,t,n){let r;try{r=Me(e).size}catch{return"absent"}if(r!==n&&r!==n+1)return"stale";try{let o=ie(e,"utf8");return o===t||o===t+` +`?"identical":"stale"}catch{return"absent"}}function $b(e){return/^[A-Za-z0-9_\-./=@:]+$/.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'"}function Wo(e,t,n,r,o=!0,s){let a=W.byteLength(e,"utf8"),l=s??a;if(l<=r)return e;let c=o&&Object.hasOwn(Bf,t)?Bf[t]:void 0,d=c?j(n,Ve,c):void 0,u=d?n$(d,e,a):void 0,f=`codeindex index --repo ${$b(n)} --out ${$b(j(n,Ve))}`;return JSON.stringify({truncated:!0,tool:t,bytes:l,maxBytes:r,reason:"This response exceeds the configured limit and was withheld rather than sent as an unusable partial payload.",narrower:Object.hasOwn(Ib,t)?Ib[t]:"narrow the request with the arguments this tool's inputSchema offers",...u==="identical"?{artifact:d,artifactNote:"The full result is on disk here, byte-for-byte what this call would have returned \u2014 read it directly if you need all of it."}:u==="stale"?{artifactNote:`The artifact at ${d} does not match this answer (the repository changed since it was written, or it was indexed with other options). Run \`${f}\` to refresh it, then read it.`}:u==="absent"?{artifactNote:`Run \`${f}\` to get this as a file.`}:{}},null,2)+` +`}function hc(e,t){let n=Bf[t];if(!n)return;let r;try{r=JSON.parse(e)}catch{return}if(!(r.truncated!==!0||typeof r.artifact!="string"))return{type:"resource_link",uri:Mr(r.artifact).href,name:n,description:`The full ${t} result this call was too large to inline.`,mimeType:"application/json"}}var zn,t$,Tb,jo,Fb,gc,Ib,Bf,Ob,yc=H(()=>{"use strict";$();ke();me();wi();rr();zn=["2024-11-05","2025-03-26","2025-06-18","2025-11-25"],t$=zn[zn.length-1],Tb="2025-03-26",jo="2025-06-18",Fb="2025-03-26";gc=1e6,Ib={graph:"pass `scope` to a subdirectory (or `include`/`exclude` globs), or use repo_map / mermaid for an overview",symbols:"pass `name` to look up one symbol, or `concise` for locations only; find_symbol / symbols_overview answer narrower questions",callers:"pass `name` to look up one symbol's call sites, or `concise` for locations only",dead_code:"pass a `limit`, or `scope` to a subdirectory",duplicated_literals:"pass a `limit`, raise `minFiles`/`minCount`, or pass `scope` to a subdirectory",find_references:"the symbol is referenced very widely \u2014 pass `concise`, or ask callers for the call sites alone",find_symbol:"lower `maxResults`, or drop `includeBody`/pass `concise`",symbols_overview:"the file declares a great many symbols \u2014 pass `concise`",grep:"lower `maxHits`, or restrict with `globs` or `scope`",search:"lower `limit`, or pass `scope` to a subdirectory",explain_search:"lower `limit`, or pass `scope` to a subdirectory",complexity:"lower `top`, or pass one `file`",call_graph:"lower `depth`, or follow one `direction`",type_hierarchy:"pass `name` to look up one type",mermaid:"lower `maxEdges`, or focus on one `module`",repo_map:"lower `budgetTokens`",onboard:"lower `budgetTokens`",hotspots:"pass `since` to count recent history only",churn:"pass `since` to count recent history only",coupling:"pass `since` to mine recent history only",check_rules:"narrow the rule set, or pass `scope` to a subdirectory",delta:'pass `concise` (drops the hunks), a `limit` on modules, or `format` "text" for the panel'},Bf={graph:"graph.json",symbols:"symbols.json"};Ob=96});function Hf(e){let t=zo[e];if(t)return{readOnlyHint:!t.write,...t.write?{destructiveHint:t.destructive===!0,idempotentHint:t.idempotent===!0}:{},openWorldHint:t.openWorld===!0}}function ls(){return["all",...Object.keys(Ho).sort()]}function Go(e){let t=e.split(",").map(r=>r.trim()).filter(Boolean),n=new Set;for(let r of t){if(r==="all")return new Set(Uo.map(s=>s.name));let o=Object.hasOwn(Ho,r)?Ho[r]:void 0;if(!o)throw new Error(`unknown tool profile "${r}" \u2014 one of: ${ls().join(", ")}`);for(let s of o)n.add(s)}return n}function Qs(e,t=zn[0],n){let r=t>=Tb,o=t>=jo,s=n?Go(n):void 0,a=s?Uo.filter(l=>s.has(l.name)):Uo;return!e&&!r&&!o?a:a.map(l=>({...l,...o&&zo[l.name]?{title:zo[l.name].title}:{},...o&&as[l.name]?{outputSchema:as[l.name]}:{},...r?{annotations:Hf(l.name)}:{},inputSchema:e?{...l.inputSchema,properties:{...l.inputSchema.properties,repo:{type:"string",description:`Absolute path to the repository root (optional \u2014 defaults to ${e})`}},required:l.inputSchema.required.filter(c=>c!=="repo")}:l.inputSchema}))}var pe,os,_c,Bo,Uf,Hn,Uo,Pt,_e,zf,as,zo,Ho,bc=H(()=>{"use strict";$();yc();pe={repo:{type:"string",description:"Absolute path to the repository root"}},os="name, name@file, file#name, file#Parent/name (a call_graph id) or Parent/name",_c={type:"string",description:'Only count commits after this ref (tag, branch, sha) or since this date ("2024-01-01", "6 months ago"); anything else is an error'},Bo={concise:{type:"boolean",description:"Return declaration locations (name/kind/file/line, plus parent for a member) without full symbol metadata. Keeps every result, reference tier and confidence label (default false)."}},Uf={file:{type:"string",description:"Disambiguate: repo-relative file containing the symbol"},line:{type:"number",minimum:1,description:"Disambiguate same-file homonyms: the declaration's first line, or any line inside it"},strict:{type:"boolean",description:"Refuse the edit (nothing written) when the post-edit check reports warnings (default false)"}},Hn={scope:{type:"string",description:"Restrict to one directory or file (repo-relative); ANDed with include/exclude"},include:{type:"array",items:{type:"string"},description:"Include globs, rooted at the repo: '*.ts' is top-level only, '**/*.ts' any depth"},exclude:{type:"array",items:{type:"string"},description:"Exclude globs (rooted, like include)"}},Uo=[{name:"scan_summary",description:"Deterministically scan a repository: file count, per-language file histogram, HEAD commit, and whether the walk was capped. Fast first look at any codebase.",inputSchema:{type:"object",properties:{...pe,...Hn},required:["repo"]}},{name:"graph",description:"Build the full typed cross-file link-graph (import/call/use/doc-link/mention edges, module grouping, PageRank centrality, Louvain communities, tests-map). Returns graph.json. Large on big repos \u2014 prefer scan_summary/symbols/callers for targeted questions.",inputSchema:{type:"object",properties:{...pe,...Hn},required:["repo"]}},{name:"symbols",description:"Where is a symbol defined and which files reference it? Returns the definition sites (file, line, kind, exported) and referencing files. Omit `name` for the full symbol index.",inputSchema:{type:"object",properties:{...pe,...Bo,name:{type:"string",description:"Symbol name to look up"}},required:["repo"]}},{name:"callers",description:"Who calls a function? Per-symbol caller index: each defined symbol with the exact (file, line) call sites that bind to it. Omit `name` for the full index. An unknown symbol is an error; a known one no site binds to answers with its defs and how many call sites name it anyway (`unresolvedSites`, `sample`).",inputSchema:{type:"object",properties:{...pe,...Bo,name:{type:"string",description:os},lsp:{type:"boolean",description:"Append incoming calls from configured language servers and agreement with static callers. Requires name; name@file disambiguates. Unsupported servers and failures keep the static answer with a stated reason (default false)."},recall:{type:"boolean",description:"Recall-oriented binding: add the name-only matches precision mode rejects (a unique JS/TS name with no import, a same-file homonym whatever the receiver, a proximity guess in Go or into tests), labelling each site corroborated|unique-name (default false = precision)"},raw:{type:"boolean",description:"Every call site of `name` as written, before any binding: {name, sites:[{file, line, receiver?, enclosingSymbol?}]}. Requires name (default false)"},withCaller:{type:"boolean",description:"Add `caller` to each site: the symbol id of the declaration the call sits in (a call_graph node id), so the answer names functions, not just lines (default false)"}},required:["repo"]}},{name:"workspaces",description:"Detect monorepo packages (npm/pnpm/yarn/lerna/nx/cargo/go modules/maven/gradle/uv/composer) with the workspace dependency graph, one cycle if present, a topological build order, and warnings for malformed manifests. `check: true` also compares each package's declared sibling dependencies with the imports it really makes: `undeclared` (imported, not declared \u2014 breaks isolated installs and publishing) and `unusedDeclared` (declared, never imported).",inputSchema:{type:"object",properties:{...pe,check:{type:"boolean",description:"Compare declared workspace dependencies with resolved cross-package imports (builds the link-graph; default false)"}},required:["repo"]}},{name:"churn",description:"Per-file git commit counts (whole history, or a since window) \u2014 the churn half of hotspot analysis. Paths are relative to repo; `shallow: true` means a shallow clone (counts are lower bounds), `error` says why `ok` is false.",inputSchema:{type:"object",properties:{...pe,since:_c},required:["repo"]}},{name:"symbols_overview",description:"All symbols declared in ONE file (name, kind, line span, exported, parent), in declaration order \u2014 the fastest way to understand a file without reading it.",inputSchema:{type:"object",properties:{...pe,...Bo,file:{type:"string",description:"Repo-relative file path"}},required:["repo","file"]}},{name:"find_symbol",description:`Find symbol declarations by name or name path ('Class/method' matches a method inside Class). Each match carries its COMPLETE SIGNATURE (parameters and return type) by default, because "what shape is it" is the question that follows "where is it" almost every time and one round trip beats two. Options: substring matching, includeBody for the declaration's source, concise to drop everything but name/kind/file/line (and a member's parent) when you genuinely only want a location. Exact-name matches rank first.`,inputSchema:{type:"object",properties:{...pe,namePath:{type:"string",description:"Symbol name or Parent/child path"},substring:{type:"boolean"},includeBody:{type:"boolean"},concise:{type:"boolean",description:"Return only name/kind/file/line (plus parent for a member) \u2014 drop the signature, line span, visibility and language. Roughly 2.5x smaller; use it when you are resolving a path and nothing more (default false)."},maxResults:{type:"integer",minimum:1,description:"Cap matches (default 50)"}},required:["repo","namePath"]}},{name:"find_references",description:"Who references a symbol? Three labeled tiers: defs (declarations), callSites (line-precise, import-corroborated call bindings), referencingFiles (file-level identifier/doc mentions \u2014 may include homonyms). Confidence decreases across tiers; the labels let you decide what to trust.",inputSchema:{type:"object",properties:{...pe,name:{type:"string",description:`${os}; a bare name covers every homonym`},...Bo,lsp:{type:"boolean",description:"Also ask a configured language server (see lsp_status) and append an `lsp` block: its references plus an `agreement` matrix (both / lspOnly / staticOnly). The three static tiers are unchanged either way. `staticOnly` can indicate homonyms or an incomplete language-server answer; `partial: true` flags a declaration-only answer while static uses exist. Servers stay up for the session. No config, no binary, a crash or a timeout all degrade to the static answer with a stated reason (default false)."}},required:["repo","name"]}},{name:"symbol_at",description:"Which symbol is at file:line? The innermost declaration holding the line (full metadata plus its symbol `id`, the form callers/call_graph/call_path read) and the declarations around it, outermost first. Turns a grep hit, a stack frame or a diagnostic into something the navigation tools accept. `symbol` is null outside every declaration; `approximate: true` means the declaration has no recorded end line (regex tier), so it is only the nearest declaration above.",inputSchema:{type:"object",properties:{...pe,file:{type:"string",description:"Repo-relative file path"},line:{type:"number",minimum:1,description:"1-based line number"}},required:["repo","file","line"]}},{name:"lsp_status",description:"Is the optional LSP tier configured, and would it answer? Reports the config path and its source, each server with whether its command is on PATH and how many files in this repo it claims, and the languages no server covers. Opt-in by asset: the tier is active only when CODEINDEX_LSP_CONFIG points at a config or ~/.config/codeindex/lsp.json exists; the repo's own /.codeindex/lsp.json names commands to run, so it is read only when the server was started with --trust-lsp-config (or CODEINDEX_TRUST_LSP_CONFIG=1), and is reported as `ignoredConfig` otherwise. `probe: true` additionally starts each server to read the capabilities it really advertises. The tier never touches graph.json/symbols.json \u2014 it annotates query answers only.",inputSchema:{type:"object",properties:{...pe,probe:{type:"boolean",description:"Start each server and read its real capabilities (default false: no spawn)"}},required:["repo"]}},{name:"onboard",description:"One call that says what this repository IS: its own tagline, size and language mix, monorepo layout when there is one, a token-budgeted map of the highest-PageRank files with their key signatures, and where git says work concentrates. Composes scan_summary + workspaces + repo_map + hotspots so the first four round trips of a session become one, and persists the result as the `onboarding` memory (read_memory) so the next session does not repeat them. Set remember:false to skip the write.",inputSchema:{type:"object",properties:{...pe,budgetTokens:{type:"integer",minimum:1,description:"Token budget for the key-files section (default 900)"},remember:{type:"boolean",description:"Persist the brief as the `onboarding` memory (default true)"}},required:["repo"]}},{name:"repo_map",description:"Token-budgeted map of the repository: the most central production files (PageRank over the edges production code creates; tests left out) with their public types, functions and methods first, deterministically rendered to fit `budgetTokens` (default 1024). The densest single read to understand an unfamiliar codebase.",inputSchema:{type:"object",properties:{...pe,budgetTokens:{type:"integer",minimum:1,description:"Approximate token budget (default 1024)"}},required:["repo"]}},{name:"hotspots",description:"Where does work concentrate? Files changed in the window, ranked by git churn \xD7 size (commits \xD7 log2 lines); test files carry `test: true`. High-scoring files are where changes and defects cluster.",inputSchema:{type:"object",properties:{...pe,since:_c,limit:{type:"integer",minimum:1,description:"Max files (default 20)"}},required:["repo"]}},{name:"coupling",description:"Change coupling: pairs of indexed files that repeatedly change in the same commits. strength 1.0 = every change to one touched the other; ranked by `confidence` (the strength a pair's history supports); `linked: false` = no graph edge joins them \u2014 a hidden dependency.",inputSchema:{type:"object",properties:{...pe,since:_c,hidden:{type:"boolean",description:"Only pairs no graph edge links (default false)"},minTogether:{type:"integer",minimum:1,description:"Commits a pair must share (default 3)"},maxCommitFiles:{type:"integer",minimum:1,description:"Skip commits touching more files, as mass refactors (default 30)"},limit:{type:"integer",minimum:1,description:"Max pairs (default 100)"}},required:["repo"]}},{name:"replace_symbol_body",description:"WRITE: replace a symbol's whole declaration with `body` (verbatim, supply full indentation). The symbol is resolved by name path ('Class/method'); ambiguity errors list the candidates \u2014 qualify with `file`, and `line` for same-file homonyms (getter/setter, overloads). Line spans come from the AST index; a regex-tier symbol whose end cannot be proven is refused. The doc comment above the declaration is kept. The edited file is re-extracted before writing: `warnings` reports declarations changed outside the edit and new syntax errors, and `strict` refuses such an edit.",inputSchema:{type:"object",properties:{...pe,namePath:{type:"string"},body:{type:"string"},...Uf},required:["repo","namePath","body"]}},{name:"insert_after_symbol",description:"WRITE: insert `body` after a symbol's declaration (blank-line separation preserved for definition-like kinds). Resolved and verified like replace_symbol_body.",inputSchema:{type:"object",properties:{...pe,namePath:{type:"string"},body:{type:"string"},...Uf},required:["repo","namePath","body"]}},{name:"insert_before_symbol",description:"WRITE: insert `body` before a symbol, above its decorators/attributes and attached doc comment (blank-line separation preserved). Resolved and verified like replace_symbol_body.",inputSchema:{type:"object",properties:{...pe,namePath:{type:"string"},body:{type:"string"},...Uf},required:["repo","namePath","body"]}},{name:"write_memory",description:"Persist a named markdown note under /.codeindex/memories/ (names may use topic/name form). Write small, focused notes: project map, build commands, conventions.",inputSchema:{type:"object",properties:{...pe,name:{type:"string"},content:{type:"string"}},required:["repo","name","content"]}},{name:"read_memory",description:"Read one persisted memory by name.",inputSchema:{type:"object",properties:{...pe,name:{type:"string"}},required:["repo","name"]}},{name:"list_memories",description:"List persisted memory names \u2014 load this first, then read individual memories on relevance.",inputSchema:{type:"object",properties:{...pe},required:["repo"]}},{name:"delete_memory",description:"Delete one persisted memory by name.",inputSchema:{type:"object",properties:{...pe,name:{type:"string"}},required:["repo","name"]}},{name:"dead_code",description:"Dead-code candidates in two labeled tiers: 'unreferenced' (no call site binds AND no other file names it) and 'uncalled' (named elsewhere \u2014 import, type position, base-class list, a same-name call site \u2014 but no call binds). Exported callables only unless `kinds: \"all\"`; test and tail files (examples, docs, fixtures, scripts \u2014 `includeTail` to include them), the package's public API (manifest entry points and what they re-export), language protocol names and overrides of live methods are never candidates. On a large repo this list runs to thousands of entries \u2014 pass `limit`, or `scope` to one subdirectory.",inputSchema:{type:"object",properties:{...pe,...Hn,limit:{type:"integer",minimum:1,description:"Cap entries (default: all)"},kinds:{type:"string",enum:["callable","all"],description:"Candidate kinds (default callable; all adds types, properties and constants, unreferenced only)"},includeTail:{type:"boolean",description:"Also report examples, docs, fixtures and scripts"}},required:["repo"]}},{name:"duplicated_literals",description:"Values with no single source of truth: one literal written out across many files. Three labeled tiers \u2014 'competing' (two or more exported constants hold the same value), 'bypassed' (a constant holds it and other files rewrite it anyway), 'uncentralized' (nothing holds it). Path-like values are also grouped into namespace families, so a whole route space reports once instead of once per route. Covers config files (JSON/YAML/TOML) as well as code, which is where the dangerous cases live: a threshold declared in TypeScript and again in a rules JSON is checked by no compiler. Use it to answer 'what breaks if this value changes' and 'is there already a helper for this'.",inputSchema:{type:"object",properties:{...pe,...Hn,minFiles:{type:"integer",minimum:1,description:"Distinct files a value must span (default 2)"},minCount:{type:"integer",minimum:1,description:"Total occurrences required (default 3)"},includeTests:{type:"boolean",description:"Count test files too (default false)"},limit:{type:"integer",minimum:1,description:"Cap duplications (default: all)"}},required:["repo"]}},{name:"complexity",description:"Cyclomatic-complexity estimates (branch-token counting over AST line spans, comments and string literals aside), most-complex first; functions and methods only \u2014 containers are not ranked, and nested functions score on their own. Pass `file` for one file's symbols, omit for the repo-wide top. Combine with hotspots: the `risk` field of this tool's sibling ranks complexity \xD7 churn.",inputSchema:{type:"object",properties:{...pe,file:{type:"string"},risk:{type:"boolean",description:"Return complexity \xD7 git-churn risk ranking instead"},since:{..._c,description:"Only count risk churn after this ref (tag, branch, sha) or since this date"},top:{type:"integer",minimum:1,description:"Cap ranked symbols"}},required:["repo"]}},{name:"mermaid",description:"Mermaid diagram of the module graph (renders inline in Claude/GitHub \u2014 no graph database). Optionally scoped to one module's neighborhood.",inputSchema:{type:"object",properties:{...pe,module:{type:"string",description:"Module slug to focus on"},maxEdges:{type:"integer",minimum:1,description:"Cap rendered edges"}},required:["repo"]}},{name:"grep",description:"Search file contents with a JavaScript regular expression (ripgrep when available, a deterministic JS scan otherwise \u2014 same results either way). Returns hits sorted by (file, line): {file, line, col, text}, `col` being the 1-based UTF-16 column of the first match and `text` the line, cut to a window around the match when longer than 300 chars. Capped at maxHits (default 200): set `withMeta: true` to get `{ hits, truncated, filesMatched, notes? }` and know whether the list is complete. A pattern too slow for the JS engine is stopped at `timeoutMs` (default 10000) and the response is then always that envelope, with `timedOut: true`.",inputSchema:{type:"object",properties:{...pe,pattern:{type:"string",description:"JavaScript regular expression to search for"},scope:{type:"string",description:"Restrict to one directory or file (repo-relative). ANDed with `globs`"},globs:{type:"array",items:{type:"string"},description:"Restrict to matching paths. Rooted at the repo: '*.ts' matches root-level files only, '**/*.ts' any depth; a '!' prefix excludes (exclusion wins)"},ignoreCase:{type:"boolean"},maxHits:{type:"integer",minimum:1},filesWithMatches:{type:"boolean",description:"One hit per matching file (its first match); maxHits then caps files"},withMeta:{type:"boolean",description:"Return { hits, truncated, filesMatched, notes? } instead of the bare hit array"},timeoutMs:{type:"integer",minimum:1,description:"Wall-clock budget for the JS regex engine (default 10000)"}},required:["repo","pattern"]}},{name:"search",description:'Natural-language-ish lexical search: BM25F ranking over SIX weighted fields \u2014 symbol names (camelCase/snake_case subtokens), path segments, markdown headings, the file summary, per-symbol DOC COMMENTS, and the prose body (comment + short-literal words). The last two are why "where is rate limiting handled" works: the phrase lives in a comment, not in a name. Results carry `matchedFields`, a `line` anchor and `symbolHits` (name/kind/line). NOT embeddings by default \u2014 deterministic, diacritic-folded, zero API keys. Answers "where is auth handled?"-style queries with ranked files, matched terms and top symbols. Query terms with zero document frequency get a deterministic trigram-fuzzy fallback (typo-tolerant) unless `fuzzy: false`. Set `semantic: true` to RRF-fuse an embedding tier (HTTP endpoint, else a local static model) with lexical \u2014 the response then wraps the ranked list as `{ results, tier, degradedReason? }`, `tier` being "endpoint"/"static" when fusion happened or "lexical" (with `degradedReason`) when it did not (see embed_status). Without `semantic`, the response is the bare ranked array, unchanged.',inputSchema:{type:"object",properties:{...pe,...Hn,query:{type:"string",description:"Natural-language or identifier query"},limit:{type:"integer",minimum:1,description:"Max results, a whole number (default 20)"},fuzzy:{type:"boolean",description:'Fallback for query terms with zero document frequency: a morphological stem match first ("caching" finds "cache"), then trigram similarity for typos (default true)'},rank:{type:"string",enum:["lexical","graph"],description:`Structural prior: "graph" multiplies the lexical score by the file's PageRank over the resolved import graph relative to an average file (a leaf \xD70.95, a hub well above \xD71; Go files unchanged); "lexical" (default) scores on text alone. Measured a wash \u2014 it helps some queries and hurts as many \u2014 see SearchOptions.rank.`},exact:{type:"boolean",description:"Drop results that carry no verbatim query-term match \u2014 the ones the stem/trigram bridge produced (default false)."},explain:{type:"boolean",description:"Wrap the response as `{ results, explain }` with the query verdict (default false = bare array). See explain_search."},semantic:{type:"boolean",description:'RRF-fuse an embedding tier with lexical (default false). Precedence: the HTTP endpoint (CODEINDEX_EMBED_ENDPOINT) if set, else a local static model. The response reports the effective tier as a top-level `tier` field ("endpoint"/"static" on success, "lexical" plus `degradedReason` when neither is available/reachable) instead of degrading silently \u2014 see embed_status. `exact` and `rank` apply to the lexical side; `explain: true` adds an `explain` key to that object, restated for the fused rows (with `semanticOnlyResults`).'}},required:["repo","query"]}},{name:"explain_search",description:'Search, and say whether the query actually found anything. Returns `{ results, explain }` where explain.verdict is "match" (a verbatim term matched), "weak" (results exist but rest on a near match, or the identifier you asked for has document frequency 0) or "none". Use this instead of `search` whenever an empty-feeling or surprising result matters: a query for an identifier that is NOT in the indexed tree still returns confident-looking rows built from its subtokens \u2014 searching "nullGipStep7" in a repo that only has "nullGipStep2" ranks files matching "null" and "gip" \u2014 and only the verdict distinguishes that from a real hit. Also names the terms dropped as stopwords, the terms that exist nowhere, and what each near match bridged to.',inputSchema:{type:"object",properties:{...pe,...Hn,query:{type:"string",description:"Natural-language or identifier query"},limit:{type:"integer",minimum:1,description:"Max results, a whole number (default 20)"},fuzzy:{type:"boolean",description:"Stem/trigram fallback for zero-document-frequency terms (default true)"},exact:{type:"boolean",description:"Drop results carrying no verbatim term match (default false)"}},required:["repo","query"]}},{name:"embed_status",description:"Report the embedding tier: the effective mode (none/static/endpoint; endpoint > static model), the resolved model (opt-in, never shipped in the package) with its modelId/dim, EMBED_VERSION, and the configured HTTP endpoint with its reachability. A model.json that is present but fails to load is reported as `model: { present: true, error }` with mode none. Use to check whether `search` with semantic:true will fuse embeddings or degrade to lexical.",inputSchema:{type:"object",properties:{...pe},required:["repo"]}},{name:"type_hierarchy",description:"How do types relate? For one type: the base classes it extends, the interfaces/traits it implements, and \u2014 the reverse direction, which no other tool answers \u2014 what extends or implements IT, plus any declared supertype with no definition in this repo. Omit `name` for the whole hierarchy.",inputSchema:{type:"object",properties:{...pe,name:{type:"string",description:`Type to look up \u2014 ${os}`}},required:["repo"]}},{name:"implementations",description:"Who implements this interface (or extends this class)? Walks the hierarchy TRANSITIVELY, so a class implementing a sub-interface of the one asked about is included. Go states no implementations: a Go type counts when a `var _ I = (*T)(nil)` assertion says so, or when its methods (own and promoted by embedding) cover the interface's by name and parameter count \u2014 those are marked `structural: true`. The tool to reach for before changing an interface.",inputSchema:{type:"object",properties:{...pe,name:{type:"string",description:`Interface/trait/class \u2014 ${os}`}},required:["repo","name"]}},{name:"call_graph",description:"What does this symbol reach, and what reaches it? A bounded symbol-to-symbol neighborhood around `symbol` \u2014 `depth` hops (default 2) following `calls`/`extends`/`implements`/`overrides` edges, `direction` out (callees) | in (callers) | both. Dispatch is followed: walking out through a method also reaches the methods overriding it, and walking in to an override reaches the callers of the method it overrides. Answers impact questions the one-hop `callers` tool cannot.",inputSchema:{type:"object",properties:{...pe,symbol:{type:"string",description:`Symbol to centre on \u2014 ${os}`},depth:{type:"integer",minimum:1,maximum:5,description:"Hops to follow (default 2, max 5)"},direction:{type:"string",enum:["out","in","both"],description:"out | in | both (default both)"}},required:["repo","symbol"]}},{name:"call_path",description:'How does `from` reach `to`? The shortest chains of calls between two symbols (a call to a method may dispatch to an override: `via: "dispatch"`), listed in id order with the total count of equally short ones. No path within `depth` hops answers hops: null, plus `reverseHops` when `to` reaches `from` instead. With files: true, `from` and `to` are file paths and the steps are import/use/call edges of the link-graph \u2014 why does A depend on B (a path only name-inferred calls would open is reported as `inferredHops` unless includeInferred).',inputSchema:{type:"object",properties:{...pe,from:{type:"string",description:`Start \u2014 ${os}; a file path with files: true`},to:{type:"string",description:`End \u2014 ${os}; a file path with files: true`},depth:{type:"integer",minimum:1,description:"Longest path to look for, in hops (default 8, max 16)"},maxPaths:{type:"integer",minimum:1,description:"Shortest paths to list (default 5)"},files:{type:"boolean",description:"Walk the file link-graph instead of the symbol graph (default false)"},includeInferred:{type:"boolean",description:"files: true only \u2014 also step through calls inferred from a name alone (default false)"}},required:["repo","from","to"]}},{name:"impact",description:"What breaks if I change this file or module? The reverse dependency closure over the link-graph: every file that transitively imports, uses or calls `target`, nearest first, with the modules touched. A Go import reaches every non-test file of the package it names. A call inferred from a name alone is counted (`inferredDependents`) but not followed unless includeInferred. Answers from the persisted graph \u2014 no need to pull the whole `graph`.",inputSchema:{type:"object",properties:{...pe,target:{type:"string",description:"Repo-relative file path or module slug"},depth:{type:"integer",minimum:1,description:"Hops to follow (default: the full closure)"},includeInferred:{type:"boolean",description:"Also follow call edges inferred from a name alone (default false)"}},required:["repo","target"]}},{name:"neighbors",description:"What sits next to this file or module in the link-graph, both directions: every edge kind linking each neighbour (import, call, use, extends, implements, doc-link, mention, contains), strongest evidence first, out to `depth` hops. Hubs are listed but not expanded through, so depth 2 stays an answer rather than a dump.",inputSchema:{type:"object",properties:{...pe,target:{type:"string",description:"Repo-relative file path or module slug"},depth:{type:"integer",minimum:1,description:"Hops to follow (default 1)"},kinds:{type:"array",items:{type:"string"},description:"Edge kinds to traverse (default all)"}},required:["repo","target"]}},{name:"check_rules",description:'Validate dependency-cruiser-style architecture rules against the link-graph. Rules (inline JSON array): forbidden edges {name, from, to, kind?, severity?, comment?} with glob paths, plus builtins {name, builtin: "cycles"|"orphans"|"literals"} (module-level import cycles; code files nothing connects to; values with no single source of truth, narrowed by tiers?/minFiles?/minCount?/includeTests?). Unknown keys are rejected; a forbidden rule whose globs match no indexed file comes back as an `unmatched` warning. Returns `{ errors, warnings, violations }`, as the CLI does: deterministic violations with severity error|warn \u2014 a CI gate.',inputSchema:{type:"object",properties:{...pe,...Hn,rules:{type:"array",description:"Rules array (inline JSON \u2014 see description)"},configPath:{type:"string",description:"Read the rules from this JSON file instead \u2014 the CLI's --config. Repo-relative, or absolute; either way it must resolve inside the repository. Ignored when `rules` is given."}},required:["repo"]}},{name:"resolution_report",description:"Can the link-graph be trusted for a language? Per importer language: how many imports resolved to in-repo files, went external (third-party/stdlib), dangle (local target missing, by reason) or are unsupported (no resolver for that language), the top dangling specs with an example importer, the top external packages, and the config warnings (unparseable tsconfig/package.json, missing `extends`) that silently turn imports external. Check it before relying on impact, callers or dead_code for a language.",inputSchema:{type:"object",properties:{...pe,...Hn,lang:{type:"string",description:"Only this language (as scan_summary names it)"},limit:{type:"integer",minimum:1,description:"Entries per top list (default 10)"}},required:["repo"]}},{name:"index_status",description:"Is the persisted index (/.codeindex, written by `codeindex index`) fresh for this tree? Returns whether its cache.json is usable (or why not: absent/unreadable/corrupt/schema/extractor), the indexed vs HEAD commit, per-file drift counts (unchanged, touched, modified, added, deleted, reextract), artifactsFresh and the reasons it is not. Cheap: reads cache.json, walks and stats, hashes only stat-changed files, never extracts. A fresh index is what makes the first graph-shaped call on a large repo fast; a stale one is rebuilt in memory, so answers stay correct either way.",inputSchema:{type:"object",properties:{...pe,...Hn},required:["repo"]}},{name:"delta",description:"What does my change break? Maps the git diff (the branch against its merge-base with the default branch, uncommitted and untracked work included; or the staged changeset) onto the graph: each changed file with the symbols enclosing its hunks, and per module a 0-100 risk score (HIGH/MEDIUM/LOW) in which every point comes with its reason \u2014 exported API changed, hub, blast radius, test gap, a deleted or renamed file that is still imported (`broken`, with its importers), dangling imports. `open` names the files to read first. Call it after editing.",inputSchema:{type:"object",properties:{...pe,...Bo,base:{type:"string",description:"Branch or ref to review against (default: origin/HEAD, origin/main, origin/master, main, master; else HEAD)"},staged:{type:"boolean",description:"Review the staged changeset against HEAD instead (default false)"},depth:{type:"integer",minimum:1,description:"Blast-radius hops (default 2)"},limit:{type:"integer",minimum:1,description:"Max modules, highest score first (default: all)"},format:{type:"string",enum:["json","text"],description:'"text" returns the compact human panel instead of JSON (default "json")'}},required:["repo"]}}],Pt={type:"array",items:{type:"string"}},_e={type:"object"},zf={error:{type:"string"},shallow:{type:"boolean"},note:{type:"string"}},as={call_graph:{type:"object",properties:{root:{type:"array",items:_e},nodes:{type:"array",items:_e},edges:{type:"array",items:_e},truncated:{type:"boolean"},depthClamped:{type:"integer"}},required:["root","nodes","edges"]},call_path:{type:"object",properties:{from:{},to:{},hops:{type:["integer","null"]},paths:{type:"array",items:{type:"array",items:_e}},pathCount:{type:"integer"},truncated:{type:"boolean"},depthClamped:{type:"integer"},reverseHops:{type:"integer"},inferredHops:{type:"integer"}},required:["from","to","hops","paths","pathCount"]},impact:{type:"object",properties:{target:{type:"string"},scope:{type:"string",enum:["module","file"]},seeds:Pt,files:{type:"array",items:_e},modules:Pt,inferredDependents:{type:"integer"}},required:["target","scope","seeds","files","modules"]},neighbors:{type:"object",properties:{target:{type:"string"},scope:{type:"string",enum:["module","file"]},links:{type:"array",items:_e},members:Pt},required:["target","scope","links"]},scan_summary:{type:"object",properties:{engineVersion:{type:"string"},commit:{type:"string"},fileCount:{type:"integer"},languages:{type:"object",additionalProperties:{type:"integer"}},capped:{type:"boolean"}},required:["engineVersion","fileCount","languages","capped"]},graph:{type:"object",properties:{schemaVersion:{type:"integer"},version:{type:"string"},commit:{type:"string"},fileCount:{type:"integer"},languages:{type:"object",additionalProperties:{type:"integer"}},files:{type:"array",items:_e},modules:{type:"array",items:_e},fileEdges:{type:"array",items:_e},moduleEdges:{type:"array",items:_e}},required:["schemaVersion","files","fileEdges","modules","moduleEdges"]},symbols:{type:"object",oneOf:[{type:"object",properties:{schemaVersion:{type:"integer"},defs:_e,refs:_e},required:["schemaVersion","defs"]},{type:"object",properties:{name:{type:"string"},defs:{type:"array",items:_e},refs:Pt},required:["name","defs","refs"]}]},callers:{type:"object",oneOf:[{type:"object",additionalProperties:_e},{type:"object",properties:{def:_e,callers:{type:"array",items:_e},lsp:_e},required:["def","callers"]},{type:"object",properties:{error:{type:"string"},defs:{type:"array",items:_e},unresolvedSites:{type:"integer"},sample:{type:"array",items:_e}},required:["error"]},{type:"object",properties:{name:{type:"string"},sites:{type:"array",items:_e}},required:["name","sites"]}]},workspaces:{type:"object",properties:{packages:{type:"array",items:_e},cycle:{type:["array","null"],items:{type:"string"}},topoOrder:Pt,warnings:Pt,check:{type:"object",properties:{ok:{type:"boolean"},undeclared:{type:"array",items:_e},unusedDeclared:{type:"array",items:_e}},required:["ok","undeclared","unusedDeclared"]}},required:["packages","topoOrder"]},churn:{type:"object",properties:{ok:{type:"boolean"},...zf,churn:{type:"object",additionalProperties:{type:"integer"}}},required:["ok","churn"]},find_references:{type:"object",properties:{defs:{type:"array",items:_e},callSites:{type:"array",items:_e},referencingFiles:Pt},required:["defs","callSites","referencingFiles"]},symbol_at:{type:"object",properties:{file:{type:"string"},line:{type:"integer"},symbol:{type:["object","null"]},enclosing:Pt,approximate:{type:"boolean"}},required:["file","line","symbol","enclosing"]},lsp_status:{type:"object",properties:{lspVersion:{type:"number"},mode:{type:"string",enum:["none","configured"]},configPath:{type:["string","null"]},source:{type:"string",enum:["env","repo","cwd","user","none"]},ignoredConfig:{type:"object",properties:{path:{type:"string"},reason:{type:"string"}},required:["path","reason"]},servers:{type:"array",items:_e},unmappedLanguages:Pt},required:["lspVersion","mode","source","servers","unmappedLanguages"]},check_rules:{type:"object",properties:{errors:{type:"integer"},warnings:{type:"integer"},violations:{type:"array",items:_e}},required:["errors","warnings","violations"]},onboard:{type:"object",properties:{brief:{type:"string"},memory:{type:"string"},memoryError:{type:"string"}},required:["brief"]},explain_search:{type:"object",properties:{results:{type:"array",items:_e},explain:{type:"object",properties:{query:{type:"string"},terms:{type:"array",items:_e},droppedStopwords:Pt,unresolvedTerms:Pt,wholeIdentifier:_e,verdict:{type:"string",enum:["match","weak","none"]},note:{type:"string"},bridgedOnlyResults:{type:"number"},resultCount:{type:"number"}},required:["query","terms","droppedStopwords","unresolvedTerms","verdict","bridgedOnlyResults","resultCount"]}},required:["results","explain"]},hotspots:{type:"object",properties:{churnOk:{type:"boolean"},...zf,hotspots:{type:"array",items:_e}},required:["churnOk","hotspots"]},coupling:{type:"object",properties:{ok:{type:"boolean"},...zf,couplings:{type:"array",items:_e}},required:["ok","couplings"]},duplicated_literals:{type:"object",properties:{duplications:{type:"array",items:_e},families:{type:"array",items:_e}},required:["duplications","families"]},index_status:{type:"object",properties:{indexDir:{type:"string"},present:{type:"boolean"},usable:{type:"boolean"},reason:{type:"string",enum:["absent","unreadable","corrupt","schema","extractor"]},engineVersion:_e,commit:_e,files:{type:["object","null"]},artifactsFresh:{type:"boolean"},stale:Pt},required:["indexDir","present","usable","engineVersion","commit","files","artifactsFresh","stale"]},embed_status:{type:"object",properties:{embedVersion:{type:"integer"},mode:{type:"string",enum:["none","static","endpoint"]},model:{},endpoint:{},endpointReachable:{type:"boolean"}},required:["embedVersion","mode"]},resolution_report:{type:"object",properties:{totals:_e,languages:{type:"array",items:_e},warnings:Pt},required:["totals","languages","warnings"]},write_memory:{type:"object",properties:{written:{type:"string"}},required:["written"]},delete_memory:{type:"object",properties:{deleted:{type:"boolean"}},required:["deleted"]}};for(let e of["replace_symbol_body","insert_after_symbol","insert_before_symbol"])as[e]={type:"object",properties:{file:{type:"string"},symbol:{type:"string"},startLine:{type:"integer"},endLine:{type:"integer"},lines:{type:"integer"},warnings:{type:"array",items:{type:"string"}}},required:["file"]};zo={scan_summary:{title:"Scan summary"},graph:{title:"Link graph"},symbols:{title:"Symbol index"},callers:{title:"Caller index"},workspaces:{title:"Monorepo workspaces"},churn:{title:"Git churn"},symbols_overview:{title:"File symbol overview"},find_symbol:{title:"Find symbol"},find_references:{title:"Find references"},symbol_at:{title:"Symbol at a line"},repo_map:{title:"Repository map"},onboard:{title:"Project brief",write:!0,destructive:!1,idempotent:!0},hotspots:{title:"Hotspots"},coupling:{title:"Change coupling"},replace_symbol_body:{title:"Replace symbol body",write:!0,destructive:!0,idempotent:!0},insert_after_symbol:{title:"Insert after symbol",write:!0,destructive:!1,idempotent:!1},insert_before_symbol:{title:"Insert before symbol",write:!0,destructive:!1,idempotent:!1},write_memory:{title:"Write memory",write:!0,destructive:!1,idempotent:!0},read_memory:{title:"Read memory"},list_memories:{title:"List memories"},delete_memory:{title:"Delete memory",write:!0,destructive:!0,idempotent:!0},dead_code:{title:"Dead-code candidates"},duplicated_literals:{title:"Values with no single source of truth"},complexity:{title:"Complexity"},mermaid:{title:"Mermaid module diagram"},grep:{title:"Grep file contents"},search:{title:"Lexical search",openWorld:!0},explain_search:{title:"Search with a verdict",openWorld:!0},lsp_status:{title:"LSP tier status",openWorld:!0},embed_status:{title:"Embedding tier status",openWorld:!0},type_hierarchy:{title:"Type hierarchy"},implementations:{title:"Implementations"},call_graph:{title:"Call graph neighborhood"},call_path:{title:"Shortest call path"},impact:{title:"Reverse dependency closure"},neighbors:{title:"Link-graph neighbours"},check_rules:{title:"Check architecture rules"},resolution_report:{title:"Import resolution report"},index_status:{title:"Index freshness"},delta:{title:"Review the diff"}};Ho={orient:["scan_summary","index_status","repo_map","onboard","workspaces","mermaid","graph","read_memory","list_memories","write_memory"],find:["search","explain_search","grep","find_symbol","symbols","symbols_overview","symbol_at","embed_status"],impact:["find_references","callers","call_graph","call_path","impact","neighbors","dead_code","type_hierarchy","implementations","lsp_status","resolution_report","delta"],edit:["find_symbol","symbols_overview","symbol_at","replace_symbol_body","insert_after_symbol","insert_before_symbol"],risk:["hotspots","churn","coupling","complexity","check_rules","duplicated_literals","dead_code","delta"],memory:["write_memory","read_memory","list_memories","delete_memory"]}});var Pb={};Rc(Pb,{DEFAULT_MAX_RESPONSE_BYTES:()=>gc,OUTPUT_SCHEMAS:()=>as,PROTOCOL_VERSIONS:()=>zn,TOOLS:()=>Uo,TOOL_META:()=>zo,TOOL_PROFILES:()=>Ho,annotationsFor:()=>Hf,capResponse:()=>Wo,getArtifacts:()=>dc,getScan:()=>Lo,getScanParallel:()=>lc,getScanSummary:()=>cc,memoizedEmbedModel:()=>No,memoizedEmbeddingIndex:()=>Oo,negotiateProtocol:()=>pc,profileNames:()=>ls,resourceLinkFor:()=>hc,runMcpServer:()=>Nb,scanFingerprint:()=>jf,structuredContentFor:()=>mc,toCacheMap:()=>Ct,toolsFor:()=>Qs,toolsInProfiles:()=>Go,validateArgs:()=>fc,warmGrammarsForRepo:()=>Cb,warmGrammarsForWalk:()=>Do});function r$(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.jsonrpc!=="2.0"||typeof t.method!="string"?!1:t.id===void 0||t.id===null||typeof t.id=="number"||typeof t.id=="string"}function s$(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method!="string"&&("result"in t||"error"in t)}function be(e){return typeof e=="string"&&e?e:void 0}function ei(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")&&e.length?e:void 0}function Vf(e){let t=typeof e=="number"?e:typeof e=="string"&&e.trim()!==""?Number(e):NaN;return Number.isFinite(t)&&t>=0?t:void 0}function wc(e,t){let n=Vf(e);if(n!==void 0&&!Number.isInteger(n))throw new Error(`\`${t}\` must be a whole number, got ${n}`);return n}function ze(e){let t=Vf(e);return t!==void 0&&t>0?t:void 0}function qf(e){return e instanceof Error?e.message:String(e)}function xc(e,t){return t?{...e,coverage:t}:e}function Gf(e,t,n){let r=fr(e);if(r.has(n))return n;let o=je(t,le(t,n.replaceAll("\\","/"))).split("/").join("/");if(o===".."||o.startsWith("../")||Pe(o))throw new Error(`\`file\` is outside the repository: ${n}`);if(r.has(o))return o;let s=ss(e,t,n);if(s)throw new Error(s);let a=We(o),l=e.files.filter(c=>We(c.rel)===a).map(c=>c.rel).sort(T).slice(0,5);throw new Error(`file not in the index: ${n}`+(l.length?` \u2014 did you mean ${l.join(", ")}?`:" (paths are repo-relative, as symbols_overview and find_symbol report them)"))}function o$(e,t){let n=be(e.repo)??t;if(!n)throw new Error("`repo` is required (absolute path to the repository root)");let r=le(n);try{if(!Me(r).isDirectory())throw new Error("not a directory")}catch{throw new Error(`repository root is not a readable directory: ${n}`)}return r}async function a$(e,t,n,r,o=async a=>({walked:Xe(a,{}),reused:!1}),s={}){let a={scope:be(t.scope),include:ei(t.include),exclude:ei(t.exclude)},l=be(t.rank),c=l==="graph"||l==="lexical"?{rank:l}:{},d,u;if(!(i$.has(e)&&!(e==="workspaces"&&t.check===!0))){let g=await o(n);d=g.walked,r?.(g.reused?`unchanged since the last call: ${d.files.length} files`:`walked ${d.files.length} files`),u=await lc(n,a,d,()=>d?Do(d):Promise.resolve()),r?.(`scan ready: ${u.files.length} files`)}let m=()=>u??Lo(n,a,d),p=()=>dc(n,a,d,u);if(e==="scan_summary"){let g=cc(n,a,d);return JSON.stringify({engineVersion:Ie,commit:g.commit,fileCount:g.fileCount,languages:g.languages,capped:g.capped},null,2)}if(e==="index_status")return JSON.stringify(Wi(n,a),null,2);if(e==="graph")return Vr(p().graph);if(e==="symbols"){let{symbols:g}=p(),h=be(t.name);if(h){let _=Object.hasOwn(g.defs,h)?g.defs[h]:[],y=Object.hasOwn(g.refs,h)?g.refs[h]:[];return JSON.stringify({name:h,defs:t.concise===!0?_.map(b=>yr(b,h)):_,refs:y},null,2)}return JSON.stringify(t.concise===!0?wb(g):g,null,2)}if(e==="callers"){let g=be(t.name);if(t.lsp===!0&&!g)throw new Error("callers with lsp:true requires `name` (or name@file)");let h=m();if(t.raw===!0){if(!g)throw new Error("callers with raw:true requires `name`");if(t.lsp===!0||t.recall===!0)throw new Error("callers raw:true takes neither lsp nor recall");if(t.withCaller===!0)throw new Error("callers raw:true already names each site's enclosing symbol: it takes no withCaller");let S=hl(h,g);return JSON.stringify(xc(S,hr(h,S.name,{calls:!0})),null,2)}let _=t.recall===!0?Gr(h,void 0,{recall:!0}):Ns(h),y=S=>t.withCaller===!0?so(h,S):S;if(g){let S=Nt(h,g)?.reading,k=S?el(S):g,R=hr(h,S?.name??g,{calls:!0}),I=ul(_,g),P=I&&y(I);if(P){let C=t.lsp===!0?await Ks(h,n,k,P,s):P;return JSON.stringify(xc(t.concise===!0?Of(C):C,R),null,2)}let v=yl(h,g,_);if(!v){let C=mr(h,g).length;throw new Error(`no symbol named "${g}" in the index`+(C?` (${C} call site(s) use the name; raw:true lists them)`:"")+sc(h,g))}return JSON.stringify(xc(t.lsp===!0?await Ks(h,n,k,v,s):v,R),null,2)}let b={};for(let[S,k]of _)b[S]=t.concise===!0?Of(y(k)):y(k);return JSON.stringify(b,null,2)}if(e==="workspaces"){let g=Pn(n),h=t.check===!0?xl(g,p().graph):void 0;return JSON.stringify(Sl(g,h),null,2)}if(e==="churn"){let g=tn(n,{since:be(t.since)}),h={};for(let _ of[...g.churn.keys()].sort())h[_]=g.churn.get(_);return JSON.stringify({ok:g.ok,...hn(g),churn:h},null,2)}if(e==="symbols_overview"){let g=be(t.file);if(!g)throw new Error("`file` is required");let h=m(),_=ro(h,Gf(h,n,g));return JSON.stringify(t.concise===!0?_.map(y=>yr(y,y.name)):_,null,2)}if(e==="find_symbol"){let g=be(t.namePath);if(!g)throw new Error("`namePath` is required");let h=wn(m(),g,{substring:t.substring===!0,includeBody:t.includeBody===!0,concise:t.concise===!0,maxResults:ze(t.maxResults)});return JSON.stringify(h,null,2)}if(e==="find_references"){let g=be(t.name);if(!g)throw new Error("`name` is required");let h=m(),_=io(h,g),y=Nt(h,g)?.reading.name??g,b=t.lsp===!0?await Co(h,n,y,_,s):_;return JSON.stringify(xc(t.concise===!0?ic(b):b,hr(h,y,{calls:!0})),null,2)}if(e==="symbol_at"){let g=be(t.file),h=Vf(t.line);if(!g)throw new Error("`file` is required");if(h===void 0||!Number.isInteger(h)||h<1)throw new Error("`line` must be a positive integer");let _=m(),y=new Set(_.files.map(S=>S.rel)),b=rs(n,g,S=>y.has(S));if(b===void 0)throw new Error(ss(_,n,g)??`no such file in the index: ${g}`);return JSON.stringify(gl(_,b,h),null,2)}if(e==="lsp_status")return JSON.stringify(await Ro(m(),n,t.probe===!0,s),null,2);if(e==="replace_symbol_body"||e==="insert_after_symbol"||e==="insert_before_symbol"){let g=be(t.namePath),h=typeof t.body=="string"?t.body:void 0;if(!g||h===void 0)throw new Error("`namePath` and `body` are required");let _=ze(t.line);if(t.line!==void 0&&(_===void 0||!Number.isInteger(_)))throw new Error("`line` must be a 1-based line number");let y=m(),b=e==="replace_symbol_body"?Gu:e==="insert_after_symbol"?qu:Vu,S=be(t.file),k=b(y,g,h,S===void 0?void 0:Gf(y,n,S),{line:_,strict:t.strict===!0});return vb(j(y.root,k.file)),JSON.stringify(k,null,2)}if(e==="write_memory"){let g=be(t.name),h=typeof t.content=="string"?t.content:void 0;if(!g||h===void 0)throw new Error("`name` and `content` are required");return JSON.stringify({written:ao(n,g,h)},null,2)}if(e==="read_memory"){let g=be(t.name);if(!g)throw new Error("`name` is required");let h=Xu(n,g);if(h===void 0)throw new Error(`no memory named "${g}" \u2014 see list_memories`);return h}if(e==="list_memories")return JSON.stringify(Yu(n),null,2);if(e==="delete_memory"){let g=be(t.name);if(!g)throw new Error("`name` is required");return JSON.stringify({deleted:Zu(n,g)},null,2)}if(e==="dead_code"){let g=Io(m(),{kinds:t.kinds==="all"?"all":"callable",includeTail:t.includeTail===!0});return JSON.stringify(Xl(g,wc(t.limit,"limit")),null,2)}if(e==="duplicated_literals"){let g=Dn(m(),{minFiles:ze(t.minFiles),minCount:ze(t.minCount),includeTests:t.includeTests===!0}),h=wc(t.limit,"limit");return h===void 0||g.duplications.length<=h?JSON.stringify(g,null,2):JSON.stringify({total:g.duplications.length,shown:h,truncated:!0,duplications:g.duplications.slice(0,h),families:g.families},null,2)}if(e==="complexity"){let g=m();if(t.risk===!0){let y=tn(n,{since:be(t.since)}),b=to(g,y.churn,ze(t.top));return JSON.stringify({churnOk:y.ok,...hn(y),risks:b},null,2)}let h=be(t.file),_=h===void 0?void 0:Gf(g,n,h);return JSON.stringify(eo(g,_,ze(t.top)),null,2)}if(e==="mermaid"){let{graph:g}=p();return $o(g,{module:be(t.module),maxEdges:ze(t.maxEdges)})}if(e==="onboard"){let g=m(),{graph:h}=p();return JSON.stringify(bf(g,h,{...ze(t.budgetTokens)!==void 0?{budgetTokens:ze(t.budgetTokens)}:{},...t.remember===!1?{remember:!1}:{}}),null,2)}if(e==="repo_map"){let{scan:g,graph:h}=p();return Qr(g,h,{budgetTokens:ze(t.budgetTokens)})}if(e==="hotspots"){let g=m(),h=tn(n,{since:be(t.since)}),_=es(g,h.churn,ze(t.limit));return JSON.stringify({churnOk:h.ok,...hn(h),hotspots:_},null,2)}if(e==="coupling"){let{graph:g}=p(),h=wo(n,{since:be(t.since),graph:g,hidden:t.hidden===!0,minTogether:ze(t.minTogether),maxCommitFiles:ze(t.maxCommitFiles),maxPairs:ze(t.limit)});return JSON.stringify({ok:h.ok,...hn(h),couplings:h.couplings},null,2)}if(e==="grep"){let g=be(t.pattern);if(!g)throw new Error("`pattern` is required");let h=zs(n,g,{globs:ei(t.globs),scope:be(t.scope),ignoreCase:t.ignoreCase===!0,maxHits:ze(t.maxHits),filesWithMatches:t.filesWithMatches===!0,timeoutMs:ze(t.timeoutMs)});if(t.withMeta===!0||h.timedOut){let{hits:_,truncated:y,filesMatched:b,timedOut:S,notes:k}=h;return JSON.stringify({hits:_,truncated:y,filesMatched:b,...S?{timedOut:S}:{},...k.length?{notes:k}:{}},null,2)}return JSON.stringify(h.hits,null,2)}if(e==="search"){let g=be(t.query);if(!g)throw new Error("`query` is required");let h=wc(t.limit,"limit"),_=m(),y=typeof t.fuzzy=="boolean"?t.fuzzy:void 0,b=t.exact===!0?{exact:!0}:{},S={limit:h,fuzzy:y,...b,...c};if(t.semantic===!0){let I=({results:x,explain:w},E,N)=>JSON.stringify({results:x,tier:E,...N?{degradedReason:N}:{},...t.explain===!0?{explain:w}:{}},null,2),P=gr();if(P)try{let x=await Oo({mode:"endpoint",identity:P,scan:_},E=>_o(_,{previous:E})),w=await yo(g);return I(pr(_,g,x,{...S,queryVec:w}),"endpoint")}catch(x){return I(Gt(_,g,S),"lexical",`embedding endpoint failed: ${qf(x)}`)}let v=Wn(n),{model:C,error:M}=Kr(v,No);if(C){let x=await Oo({mode:"static",identity:`${v}#${C.modelId}`,scan:_},w=>Zr(_,C,{previous:w??is(j(n,Ve,"embeddings.bin"))}));return I(pr(_,g,x,{...S,model:C}),"static")}return I(Gt(_,g,S),"lexical",M?`static model unusable: ${M}`:"no embedding endpoint or static model configured \u2014 see embed_status")}let{results:k,explain:R}=Gt(_,g,S);return JSON.stringify(t.explain===!0?{results:k,explain:R}:k,null,2)}if(e==="explain_search"){let g=be(t.query);if(!g)throw new Error("`query` is required");let h=wc(t.limit,"limit"),_=m(),y=typeof t.fuzzy=="boolean"?t.fuzzy:void 0,{results:b,explain:S}=Gt(_,g,{limit:h,fuzzy:y,...t.exact===!0?{exact:!0}:{},...c});return JSON.stringify({results:b,explain:S},null,2)}if(e==="embed_status"){let g=Wn(n),{model:h,error:_}=Kr(g,No),y=gr(),S={embedVersion:Jt,mode:y?"endpoint":h?"static":"none",model:h?{present:!0,dir:g,modelId:h.modelId,dim:h.dim,vocabSize:h.vocabSize}:_?{present:!0,dir:g,error:_}:{present:!1},endpoint:y??null};return y&&(S.endpointReachable=await ho(y)),JSON.stringify(S,null,2)}if(e==="type_hierarchy"){let g=m(),h=Ps(g),_=be(t.name);if(!_){let b={};for(let[S,k]of h)b[S]=k;return JSON.stringify(b,null,2)}let y=or(h,_,Nt(g,_)?.defs);if(!y)throw new ti(`no type named ${_}`);return JSON.stringify(y,null,2)}if(e==="implementations"){let g=be(t.name);if(!g)throw new Error("`name` is required");let h=m(),_=Ps(h),y=Nt(h,g)?.defs;if(!or(_,g,y))throw new ti(`no type named ${g}`);return JSON.stringify({name:g,implementations:qi(_,g,y)},null,2)}if(e==="call_graph"){let g=be(t.symbol);if(!g)throw new Error("`symbol` is required");let h=be(t.direction),_=h==="out"||h==="in"?h:"both",y=Ji(Ls(m()),g,{...ze(t.depth)!==void 0?{depth:ze(t.depth)}:{},direction:_});if(!y.root.length)throw new ti(`no symbol named ${g}`);return JSON.stringify(y,null,2)}if(e==="call_path"){let g=be(t.from),h=be(t.to);if(!g||!h)throw new Error("`from` and `to` are required");let _={depth:ze(t.depth),maxPaths:ze(t.maxPaths)};if(t.files===!0){let{graph:b}=p(),S=new Set(b.files.map(I=>I.rel)),[k,R]=[g,h].map(I=>{let P=rs(n,I,v=>S.has(v));if(P===void 0)throw new Error(`no such file in the index: ${I}`);return P});return JSON.stringify(sl(b,k,R,{..._,includeInferred:t.includeInferred===!0}),null,2)}if(t.includeInferred===!0)throw new Error("includeInferred applies to files: true only");let y=tl(Ls(m()),g,h,_);if(!y.from.length)throw new Error(`no symbol named ${g}`);if(!y.to.length)throw new Error(`no symbol named ${h}`);return JSON.stringify(y,null,2)}if(e==="impact"||e==="neighbors"){let g=be(t.target);if(!g)throw new Error("`target` is required");let h=ze(t.depth),_;if(e==="neighbors"&&t.kinds!==void 0){let b=ei(t.kinds)??[],S=b.filter(k=>!Ts.includes(k));if(!b.length||S.length)throw new Error(`\`kinds\` expects edge kinds among ${Ts.join("|")}, got ${JSON.stringify(S.length?S:t.kinds)}`);_=new Set(b)}let{graph:y}=p();for(let b of Un(n,g)){let S=e==="impact"?Xi(y,b,h??1/0,{includeInferred:t.includeInferred===!0}):Zi(y,b,h??1,_);if(S)return JSON.stringify(S,null,2)}throw new Error(`no such file or module in the index: ${g}`)}if(e==="check_rules"){let g=be(t.configPath),h;if(t.rules!==void 0)h=Vl(t.rules);else if(g){let b=new Error(`cannot read rules config ${g}`),S;try{S=rt(Pe(g)?g:j(n,g))}catch{throw b}let k=rt(n);if(!S.startsWith(k.endsWith("/")?k:k+"/"))throw new Error(`rules config must be a file inside the repository: ${g}`);let R;try{R=ie(S,"utf8")}catch{throw b}h=ql(R,g)}else throw new Error("`rules` (or `configPath`) is required");let{scan:_,graph:y}=p();return JSON.stringify(Jl(Mo(y,h,{scan:_})),null,2)}if(e==="delta"){let g=Xs(n,{base:be(t.base),staged:t.staged===!0});if("error"in g)throw new Error(g.error);let h=ze(t.depth),_=To(g,h);if(g.files.length){let{scan:S,graph:k,symbols:R}=p();_=Zs(g,k,R,{depth:h,scan:S})}if(be(t.format)==="text")return Fo(_);let y=t.concise===!0?xb(_):_,b=ze(t.limit);return b===void 0||y.modules.length<=b?JSON.stringify(y,null,2):JSON.stringify({...y,modules:y.modules.slice(0,b),totalModules:y.modules.length,truncated:!0},null,2)}if(e==="resolution_report")return JSON.stringify(tc(m(),{lang:be(t.lang),limit:ze(t.limit)}),null,2);throw new Error(`unknown tool: ${e}`)}async function Nb(e={}){let t={name:e.serverInfo?.name??"codeindex",version:e.serverInfo?.version??Ie},n=zn[0],r=e.defaultRepo===void 0?void 0:le(e.defaultRepo),o=Qs(r,n,e.profile),s=new Map(Qs(r).map(k=>[k.name,k.inputSchema])),a=e.watch&&r?Mb(r,k=>F.stderr.write(`codeindex: ${k} +`)):void 0,l=async k=>a&&k===r?a.walk():{walked:Xe(k,{}),reused:!1},c=new Js,d=k=>{let R=Array.isArray(k)?k.map(I=>({jsonrpc:"2.0",...I})):{jsonrpc:"2.0",...k};F.stdout.write(JSON.stringify(R)+` +`)},u=Promise.resolve(),f=new Set,m=new Set,p=new Set,g=k=>{let R=k.finally(()=>p.delete(R));p.add(R)},h=gb({input:F.stdin,terminal:!1});try{for await(let k of h){let R=k.trim();if(!R)continue;let I;try{I=JSON.parse(R)}catch{d({id:null,error:{code:-32700,message:"parse error"}});continue}if(Array.isArray(I)&&I.length===0){d({id:null,error:{code:-32600,message:"invalid request"}});continue}if(Array.isArray(I)){let P=I.map(_),v=C=>{let M=C.filter(x=>x!==void 0);M.length>0&&d(M)};P.some(C=>C instanceof Promise)?g(Promise.all(P).then(v)):v(P)}else{let P=_(I);P instanceof Promise?g(P.then(v=>v?d(v):void 0)):P&&d(P)}}for(;p.size>0;)await Promise.all(p)}finally{a?.close(),await c.close()}function _(k){if(!s$(k))return r$(k)?y(k):{id:null,error:{code:-32600,message:"invalid request"}}}function y(k){let R=!("id"in k),I=P=>R?void 0:{id:k.id??null,...P};try{if(k.method==="initialize")return n=pc(k.params?.protocolVersion),o=Qs(r,n,e.profile),I({result:{protocolVersion:n,capabilities:{tools:{}},serverInfo:t,instructions:`Available tool profiles: ${ls().join(", ")}. Active profile: ${e.profile??"all"}. Configure profiles with --tools . Profiles select advertised tools; known tools remain callable.`}});if(k.method==="ping")return I({result:{}});if(k.method==="tools/list")return I({result:{tools:o}});if(k.method==="tools/call")return b(k,I);if(k.method==="notifications/cancelled"){let P=k.params?.requestId;(typeof P=="string"||typeof P=="number")&&f.has(P)&&m.add(P);return}else return I({error:{code:-32601,message:`method not found: ${k.method}`}})}catch(P){return I({error:{code:-32603,message:qf(P)}})}}function b(k,R){let I=k.params??{},P=I.arguments;if(typeof I.name!="string")return R({error:{code:-32602,message:"invalid params: tools/call requires a string `name`"}});if(P!=null&&(typeof P!="object"||Array.isArray(P)))return R({error:{code:-32602,message:"invalid params: tools/call `arguments` must be an object"}});let v=I.name,C=P??{},M=s.get(v),x=M?fc(M,C):`unknown tool: ${v}`;if(x)return R({result:{content:[{type:"text",text:x}],isError:!0}});let w=n,E=typeof k.id=="string"||typeof k.id=="number"?k.id:void 0;E!==void 0&&f.add(E);let N=I._meta?.progressToken,O=0,L=typeof N=="string"||typeof N=="number"?X=>{if(E!==void 0&&m.has(E))return;let oe=w>=Fb?{message:X}:{};d({method:"notifications/progress",params:{progressToken:N,progress:++O,...oe}})}:void 0,G=u.then(async()=>{if(!(E!==void 0&&m.has(E)))return R(await S(v,C,w,L))});return u=G.catch(()=>{}),G.then(X=>E===void 0?X:(f.delete(E),m.delete(E)?void 0:X))}async function S(k,R,I,P){try{let v=o$(R,r),C=await a$(k,R,v,P,l,{pool:c,trustRepoConfig:e.trustLspConfig}),M=be(R.scope)!==void 0||ei(R.include)!==void 0||ei(R.exclude)!==void 0||be(R.name)!==void 0||R.concise===!0,x=e.maxResponseBytes??gc,w=O=>{let L=O!==C,G=L&&I>=jo?hc(O,k):void 0,X=I>=jo?mc(O,L,as[k]!==void 0):void 0;return{content:G?[{type:"text",text:O},G]:[{type:"text",text:O}],...X?{structuredContent:X}:{},...L?{isError:!0}:{}}},E=Wo(C,k,v,x,!M),N=w(E);if(E===C){let O=W.byteLength(JSON.stringify(N),"utf8")+Ob;O>x&&(N=w(Wo(C,k,v,x,!M,O)))}return{result:N}}catch(v){return{result:{content:[{type:"text",text:v instanceof ti?JSON.stringify({error:v.message},null,2):qf(v)}],isError:!0}}}}}var ti,i$,Jf=H(()=>{"use strict";$();ke();me();hb();bt();El();lr();gt();ce();Fn();Br();qr();nn();uo();xo();bo();Zl();Us();Os();Yl();Tf();js();Ff();nc();Ur();Lr();Gl();Nf();wf();qa();Ju();bl();Fs();Kl();ec();Xr();Yr();Pf();rr();Il();Fl();Ze();Ab();bc();yc();uc();bc();yc();uc();ti=class extends Error{},i$=new Set(["workspaces","churn","grep","write_memory","read_memory","list_memories","delete_memory","embed_status","scan_summary","index_status"])});var Ub={};Rc(Ub,{rewriteCommand:()=>Bb,shellQuote:()=>cs,tokenize:()=>l$});function Db(e){let t=[],n="",r=!1,o=!1;for(let s=0;s()$`\n\r{}]/.test(a))return;if((a==="#"||a==="~")&&!r&&!n)return;(a==="*"||a==="?"||a==="[")&&(o=!0),n+=a}}return(r||n)&&t.push({value:n,globbed:o}),t}function iT(e){return Pb(e)?.map(t=>t.value)}function ls(e){return e!==""&&!/[^A-Za-z0-9_\-./=@:]/.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'"}function Xf(e,t){let n=[],r=[],o=-1;for(let s=0;s2)return;n.noGitignore=!0,r===2&&(o=!0);break;case"--hidden":case"-.":o=!0;break;case"--sort":if(l!=="path")return;break;case"-n":case"--line-number":case"-N":case"--no-line-number":case"-H":case"--with-filename":case"-I":case"--no-filename":case"--no-heading":case"--heading":case"--column":case"-p":case"--pretty":case"--sort-files":case"-j":case"--threads":break;case"--color":if(l!==void 0&&!["never","auto","always","ansi"].includes(l))return;break;default:return}if(Lb(n,t.positionals)&&!(n.types.length&&s.some(a=>!a.negated))){for(let{glob:a,negated:l}of s){let c=aT(a,n.paths.length===0);if(!(l?Kf(n,c):xc(n,c)))return}return n.skipHidden=!o,n}}function dT(e){let t=Xf(e,new Set(["-e"]));if(!t)return;let n=Zf("bre",!0);for(let{name:d,value:u}of t.flags)switch(d){case"-i":case"-y":case"--ignore-case":n.ignoreCase=!0;break;case"-E":case"--extended-regexp":n.dialect="ere";break;case"-G":case"--basic-regexp":n.dialect="bre";break;case"-F":case"--fixed-strings":n.fixed=!0;break;case"-w":case"--word-regexp":n.word=!0;break;case"-e":n.patterns.push(u);break;case"-l":case"--files-with-matches":case"--name-only":n.filesOnly=!0;break;case"-n":case"--line-number":case"-I":case"-r":case"--recursive":case"--no-color":case"--full-name":break;default:return}let{positionals:r,afterDashDash:o}=t,s=o===-1?r.length:o;if(n.patterns.length===0){if(s===0||(n.patterns.push(r[0]),s>1))return}else if(s>0)return;let a=o===-1?[]:r.slice(o),l=a.filter(d=>!/[*?]/.test(d)),c=a.filter(d=>/[*?]/.test(d));if(!a.some(d=>d.startsWith(":")||Yf.test(d))&&!(l.length>1||l.length&&c.length)){for(let d of c)if(d.includes("/")||!xc(n,`**/${d}`))return;return n.paths.push(...l),n}}function Lb(e,t){let n=[...t];if(e.patterns.length===0){let r=n.shift();if(r===void 0)return!1;e.patterns.push(r)}return e.paths=n,!0}function Db(e,t,n){let r=t+1,o="[";e[r]==="^"&&(o+="^",r++);for(let s=!0;r")n+="\\b";else if("wWsSbB".includes(l)||/[1-9]/.test(l))n+=`\\${l}`;else if(/[.*[\]^$\\/+?(){}|]/.test(l))n+=`\\${l}`;else return;continue}if(s==="["){let l=Db(e,o,"bre");if(!l)return;n+=l[0],o=l[1]}else if(s==="*")n+=a?"\\*":"*";else if(s==="^")n+=t||a?"^":"\\^",r=a;else if(s==="$"){let l=e.slice(o+1);n+=t||l===""||l.startsWith("\\)")||l.startsWith("\\|")?"$":"\\$"}else if(!t&&"()|+?{}".includes(s))n+=`\\${s}`;else if(t&&s==="{"){let l=/^\{(\d*)(,?)(\d*)\}/.exec(e.slice(o));l&&(l[1]!==""||l[2]!=="")?(n+=`{${l[1]||"0"}${l[2]}${l[3]}}`,o+=l[0].length-1):n+="\\{"}else if(t&&s==="}")n+="\\}";else{if(t&&(s==="+"||s==="?"||s==="*")&&a)return;n+=s,r=t&&(s==="("||s==="|")}}return n}function pT(e){let t="";for(let n=0;n]/.test(o))return;t+=`\\${o}`}continue}if(r==="["){let o=Db(e,n,"rust");if(!o)return;t+=o[0],n=o[1]}else if(r==="("&&e[n+1]==="?"){let o=/^\(\?(?::|P?<([A-Za-z_]\w*)>)/.exec(e.slice(n));if(!o)return;t+=o[1]?`(?<${o[1]}>`:"(?:",n+=o[0].length-1}else if(r==="{"){let o=/^\{\d+(?:,\d*)?\}/.exec(e.slice(n));if(!o)return;t+=o[0],n+=o[0].length-1}else t+=r}return t}function gT(e){let t=e.replace(/\\[pP]\{[^}]*\}|\\[pP][A-Za-z]|\\./g,"");return t!==t.toLowerCase()}function hT(e){let t=[];for(let r of e.patterns){if(r===""||r.includes(` -`))return;let o=e.fixed?bt(r):e.dialect==="rust"?pT(r):mT(r,e.dialect==="ere");if(o===void 0)return;t.push(o)}let n=t.length===1?t[0]:t.map(r=>`(?:${r})`).join("|");if(e.word){let r=e.patterns.every(s=>(e.fixed||!/[\\^$.*+?()[\]{}|]/.test(s))&&/^\w(?:.*\w)?$/.test(s)),o=t.length===1&&r?n:`(?:${n})`;n=r?`\\b${o}\\b`:`(?n===".."))return t===""||t==="."?"":t}function _T(e){for(let t=ae(e);;t=Me(t)){let n=j(t,".gitmodules");if(ne(n)){let r;try{r=ie(n,"utf8")}catch{return[]}return[...r.matchAll(/^\s*path\s*=\s*(.+?)\s*$/gm)].map(o=>ae(t,o[1]))}if(ne(j(t,".git"))||Me(t)===t)return[]}}function jb(e,t="codeindex",n){let r=Pb(e.trim());if(!r||r.length<2||r.some(p=>p.globbed&&!p.value.startsWith("-")))return;let o=r.map(p=>p.value),[s,...a]=o,l;if(s==="grep"||s==="egrep"?l=lT(s,a):s==="rg"?l=cT(a):s==="git"&&a[0]==="grep"&&(l=dT(a.slice(1))),!l||!l.recursive||l.paths.length>1)return;let c=l.paths.length?yT(l.paths[0]):"";if(c===void 0||l.orderSensitive||l.skipHidden&&c.split("/").some(p=>p.startsWith(".")))return;if(n!==void 0&&s!=="git"){let p=ae(n,c||".");if(_T(n).some(g=>Nb(g,p)||Nb(p,g)))return}let d=p=>l.fixed?p!==p.toLowerCase():gT(p),u=l.smartCase?!l.patterns.some(d):l.ignoreCase,f=hT(l);if(f===void 0)return;try{cf(f,u)}catch{return}let m=[t,"grep",...f.startsWith("-")?["--"]:[],ls(f)];c&&m.push("--scope",ls(c));for(let p of l.includes)m.push("--include",ls(p));for(let p of[...l.excludes,...l.excludeDirs])m.push("--exclude",ls(p));return l.skipHidden&&m.push("--exclude",ls("**/.*"),"--exclude",ls("**/.*/**")),u&&m.push("--ignore-case"),l.filesOnly&&m.push("--files-with-matches"),l.noGitignore&&m.push("--no-gitignore"),m.push("--ignore-dir",".codeindex"),m.join(" ")}var Yf,uT,fT,Nb,Qf=z(()=>{"use strict";I();Ee();fe();co();et();Yf=/[[\]{}\\]/;uT={c:["*.c","*.h","*.H","*.c.in","*.h.in","*.H.in","*.cats"],cpp:["*.C","*.h","*.H","*.C.in","*.h.in","*.H.in","*.cpp","*.hpp","*.cpp.in","*.hpp.in","*.cxx","*.hxx","*.cxx.in","*.hxx.in","*.cc","*.cc.in","*.hh","*.hh.in","*.inl"],cs:["*.cs"],csharp:["*.cs"],css:["*.css","*.scss"],go:["*.go"],html:["*.ejs","*.htm","*.html"],java:["*.java","*.jsp","*.jspx","*.properties"],js:["*.cjs","*.js","*.jsx","*.mjs","*.vue"],json:["*.json","*.sarif","composer.lock"],kotlin:["*.kt","*.kts"],lua:["*.lua"],markdown:["*.markdown","*.md","*.mdown","*.mdwn","*.mdx","*.mkd","*.mkdn"],md:["*.markdown","*.md","*.mdown","*.mdwn","*.mdx","*.mkd","*.mkdn"],php:["*.php","*.php3","*.php4","*.php5","*.php7","*.php8","*.pht","*.phtml"],py:["*.py","*.pyi"],ruby:["*.gemspec","*.rb","*.rbw",".irbrc","Gemfile","Rakefile","config.ru"],rust:["*.rs"],scala:["*.sbt","*.scala"],sql:["*.psql","*.sql"],swift:["*.swift"],toml:["*.toml","Cargo.lock"],ts:["*.cts","*.mts","*.ts","*.tsx"],typescript:["*.cts","*.mts","*.ts","*.tsx"],txt:["*.txt"],yaml:["*.yaml","*.yml"]},fT={alpha:"A-Za-z",digit:"0-9",alnum:"A-Za-z0-9",upper:"A-Z",lower:"a-z",space:" \\t\\n\\r\\f\\v",blank:" \\t",xdigit:"0-9A-Fa-f",punct:"!-\\/:-@\\[-`{-~",word:"A-Za-z0-9_"};Nb=(e,t)=>{let n=De(t,e);return n===""||n!==".."&&!n.startsWith(`..${"/"}`)&&!n.startsWith("/")}});I();I();_t();Ze();Ut();Ut();I();Ee();fe();Mn();Rr();Ut();le();var JE=1024*1024;function oh(e,t={}){let n=[],{files:r,capped:o}=Es(e,{...t,precomputedWalk:void 0,onSkip:s=>n.push(s)});return{skips:n.sort(xr(s=>s.rel)),files:r,capped:o}}function ja(e){let t=new Map;for(let r of e)t.set(r.reason,(t.get(r.reason)??0)+1);let n={};for(let r of[...t.keys()].sort($))n[r]=t.get(r);return n}function Gd(e,t,n={}){let r=er(e,t);if(r===".."||r.startsWith("../")||Ne(r))return{path:t,indexed:!1,reason:"outside-repo",detail:{}};let o=r||".",{skips:s,files:a,capped:l}=oh(e,n),c=a.find(f=>f.rel===r);if(c)return{path:o,indexed:!0,reason:null,detail:{kind:mt(c.rel,c.ext),lang:nn(c.ext),size:c.size}};let d;try{d=Hn(j(e,r))}catch{return{path:o,indexed:!1,reason:"not-found",detail:{}}}let u=new Map(s.map(f=>[f.rel,f]));for(let f=r;f;f=f.slice(0,Math.max(0,f.lastIndexOf("/")))){let m=u.get(f);if(m){let p={...f===r?{}:{dir:f},...KE(e,n,r,m)};return{path:o,indexed:!1,reason:m.reason,detail:p}}}if(r===".git"||r.startsWith(".git/"))return{path:o,indexed:!1,reason:"ignore-dir",detail:{dir:".git"}};if(d.isDirectory()){let f=r?`${r}/`:"",m=a.filter(g=>g.rel.startsWith(f)).length,p=ja(s.filter(g=>g.rel.startsWith(f)));return{path:o,indexed:m>0,reason:m>0?null:"no-indexed-files",detail:{directory:!0,files:m,skipped:p}}}return l?{path:o,indexed:!1,reason:"max-files",detail:{maxFiles:n.maxFiles}}:{path:o,indexed:!1,reason:"not-walked",detail:{}}}function KE(e,t,n,r){switch(r.reason){case"gitignored":return r.rule?{...r.rule}:{};case"over-max-bytes":return{size:r.size,maxBytes:t.maxBytes??JE};case"filter":return ih(e,t,n)??{};case"binary-ext":return{ext:un(r.rel).toLowerCase()};case"index-output":return{out:t.out};case"file-symlink":case"directory-symlink":case"symlink-outside-root":try{let o=st(j(e,r.rel)),s=De(st(e),o);return{target:s.startsWith("..")||Ne(s)?o:s.split("/").join("/")}}catch{return{}}default:return{}}}tr();Ga();Pi();yi();Ac();Mn();I();fe();var bv=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".svelte",".astro",".py",".rb",".go",".rs",".java",".kt",".kts",".php",".c",".cc",".cpp",".h",".hpp",".cs",".swift",".scala",".clj",".ex",".exs",".dart",".lua",".sh",".bash",".zig",".elm",".hcl",".tf",".tfvars",".sol",".hh",".sc",".pyi",".rake",".cxx"]),wv=new Set([".css",".scss",".sass",".less",".styl",".pcss"]),xv=new Set([".md",".mdx",".rst",".adoc",".txt"]),Sv=new Set([".json",".yaml",".yml",".toml",".csv",".xml",".env"]),kv=new Set([".png",".jpg",".jpeg",".gif",".webp",".avif",".ico",".bmp",".tiff",".svg",".pdf",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".zip",".gz",".tar",".rar",".7z",".wasm",".so",".dylib",".dll",".exe",".bin",".class",".jar",".pyc",".node"]),Ev=["locales","locale","i18n","lang","langs","translations","messages"],vv=new Set([".json",".yaml",".yml",".po",".properties"]),Rv=["__tests__","test","tests","spec","e2e","__mocks__"],Cv=["migrations","entities","models"],Mv=new Set(["package.json","tsconfig.json","dockerfile","makefile","pyproject.toml","cargo.toml","go.mod","requirements.txt","gemfile","composer.json","pubspec.yaml"]);function Av(e,t){let n=e.toLowerCase(),r=je(n),o=n.split("/"),s=a=>a.some(l=>o.includes(l));return s(Ev)&&vv.has(t)?"i18n":t===".prisma"||t===".sql"||t===".graphql"||t===".gql"||r.startsWith("schema.")||r==="models.py"||s(Cv)?"schema":n.includes(".test.")||n.includes(".spec.")||s(Rv)?"test":Mv.has(r)||r.endsWith(".config.js")||r.endsWith(".config.ts")||r.endsWith(".config.mjs")||r.startsWith(".eslintrc")||r.startsWith(".prettierrc")||r.startsWith(".env")||r.startsWith("docker-compose")?"config":xv.has(t)?"doc":wv.has(t)?"style":bv.has(t)?"code":kv.has(t)?"asset":Sv.has(t)?"data":"other"}Rr();Pa();sd();ld();pt();Fd();I();Ee();fe();xd();pt();le();var yh=new Map;function _h(e,t){let n=yh.get(e);if(n!==void 0)return n;let r=null;for(let o of Wt().dirs){let s=j(o,`${e}.tags.scm`);if(ne(s)){try{r=new lg(t,ie(s,"utf8"))}catch{r=null}break}}return yh.set(e,r),r}function Iv(e){if(!Wt().dirs.some(r=>ne(j(r,`${e}.tags.scm`))))return{present:!1,compiled:!1};let n=Sd(e);return n?{present:!0,compiled:_h(e,n)!==null}:{present:!0,compiled:!1}}function Tv(e,t){let n=va(e,t);if(!n)return[];let r=Sd(n),o=Ss(n);if(!r||!o)return[];let s=_h(n,r);if(!s)return[];let a=null;try{if(a=o.parse(t),!a)return[];let l=[],c=new Set;for(let d of s.matches(a.rootNode)){let u,f,m=0;for(let g of d.captures)g.name==="name"?(u=g.node.text,m=g.node.startPosition.row+1):g.name.startsWith("definition.")&&(f=g.name.slice(11));if(!u||!f)continue;let p=`${f} ${u} ${m}`;c.has(p)||(c.add(p),l.push({kind:f,name:u,line:m}))}return l.sort((d,u)=>d.line-u.line||$(d.name,u.name)||$(d.kind,u.kind))}catch{return[]}finally{a?.delete()}}pt();pt();I();ia();Ee();fe();I();function bh(){throw new Error("zlib.gunzipSync is not available in the browser build (use DecompressionStream at an async boundary)")}_t();var ou=`https://github.com/maxgfr/codeindex/releases/download/v${Te}/grammars-${Te}.tar.gz`;function qa(){let e=O.env.CODEINDEX_GRAMMARS_URL;return e&&e.trim()?{url:e.trim()}:{url:ou,sha256Url:`${ou}.sha256`}}async function wh(e,t){let n=await fetch(e);if(!n.ok)throw new Error(`HTTP ${n.status} from ${e}`);let r=W.from(await n.arrayBuffer());if(t){let o=gs("sha256").update(r).digest("hex");if(o!==t)throw new Error(`sha256 mismatch: expected ${t}, got ${o}`)}return r}function xh(e){return W.isBuffer(e)?e:W.from(e.buffer,e.byteOffset,e.byteLength)}async function Sh(e){let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} from ${e}`);let r=((await t.text()).trim().split(/\s+/)[0]??"").toLowerCase();if(!/^[0-9a-f]{64}$/.test(r))throw new Error(`invalid sha256 sidecar at ${e}`);return r}function iu(e,t,n){let r=e.subarray(t,t+n),o=r.indexOf(0);return r.toString("utf8",0,o===-1?r.length:o)}function*$v(e){let t=0;for(;t+512<=e.length;){let n=e.subarray(t,t+512),r=!0;for(let u=0;u<512;u++)if(n[u]!==0){r=!1;break}if(r)break;let o=iu(n,0,100),s=iu(n,345,155),a=iu(n,124,12).trim(),l=a?parseInt(a,8):0,c=String.fromCharCode(n[156]??0);t+=512;let d=e.subarray(t,t+l);if(d.length!==l)throw new Error(`truncated grammars archive: ${o} declares ${l} bytes, ${d.length} remain`);t+=Math.ceil(l/512)*512,yield{name:s?`${s}/${o}`:o,type:c,data:d}}}function Fv(e){if(!e||e.includes("\0")||e.startsWith("/")||e.startsWith("\\")||/^[A-Za-z]:/.test(e))return null;let t=[];for(let n of e.split(/[/\\]/))if(!(n===""||n===".")){if(n==="..")return null;t.push(n)}return t.length?t.join("/"):null}function kh(e,t){let n=ae(t),r=[];for(let o of $v(xh(e))){if(o.type!=="0"&&o.type!=="\0")continue;let s=Fv(o.name);if(s===null)throw new Error(`refusing unsafe tar entry: ${o.name}`);let a=ae(t,s);if(a!==n&&!a.startsWith(n+"/"))throw new Error(`tar entry escapes destination: ${o.name}`);Zt(Me(a),{recursive:!0}),ot(a,o.data),r.push(s)}return r}function Eh(e,t){let n=xh(e),r=n.length>=2&&n[0]===31&&n[1]===139?bh(n):n;return kh(r,t)}function Ov(e,t,n,r,o=En,s=Ke){let a=Me(t),l=br(j(a,".grammars-swap-")),c=j(l,"previous-cache"),d=j(l,"previous-marker"),u=j(l,"next-marker"),f=!1,m=!1,p=!1,g=!1;try{r&&ot(u,r+` -`),ne(t)&&(o(t,c),f=!0),ne(n)&&(o(n,d),m=!0),o(e,t),p=!0,r&&(o(u,n),g=!0)}catch(h){let _=[],y=b=>{try{b()}catch(x){_.push(x)}};if(g&&ne(n)&&y(()=>Ke(n,{force:!0})),p&&ne(t)&&y(()=>Ke(t,{recursive:!0,force:!0})),m&&ne(d)&&y(()=>o(d,n)),f&&ne(c)&&y(()=>o(c,t)),_.length===0)try{Ke(l,{recursive:!0,force:!0})}catch{}if(_.length>0){let b=_[0];throw new Error(`${h instanceof Error?h.message:String(h)}; rollback failed: ${b instanceof Error?b.message:String(b)} (backup preserved at ${l})`)}throw h}try{s(l,{recursive:!0,force:!0})}catch{}}async function Wi(e,t={}){let n=t.onNote??(()=>{}),r=qa(),o;if(r.sha256Url)try{o=await Sh(r.sha256Url)}catch(d){n(`codeindex: could not fetch checksum (${d instanceof Error?d.message:String(d)}) \u2014 proceeding unverified -`)}let s=j(e,"web-tree-sitter.wasm"),a=j(Me(e),`${Te}.sha256`);if(ne(s)&&o&&ne(a)){let d="";try{d=ie(a,"utf8").trim()}catch{}if(d===o)return{ok:!0,status:"up-to-date",cacheDir:e,message:`codeindex: grammars already present at ${e} (up to date) +`||l==="\r")return;n+=l,r=!0,s++}else if(a===" "||a===" ")(r||n)&&t.push({value:n,globbed:o}),n="",r=!1,o=!1;else{if(/[|&;<>()$`\n\r{}]/.test(a))return;if((a==="#"||a==="~")&&!r&&!n)return;(a==="*"||a==="?"||a==="[")&&(o=!0),n+=a}}return(r||n)&&t.push({value:n,globbed:o}),t}function l$(e){return Db(e)?.map(t=>t.value)}function cs(e){return e!==""&&!/[^A-Za-z0-9_\-./=@:]/.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'"}function Zf(e,t){let n=[],r=[],o=-1;for(let s=0;s2)return;n.noGitignore=!0,r===2&&(o=!0);break;case"--hidden":case"-.":o=!0;break;case"--sort":if(l!=="path")return;break;case"-n":case"--line-number":case"-N":case"--no-line-number":case"-H":case"--with-filename":case"-I":case"--no-filename":case"--no-heading":case"--heading":case"--column":case"-p":case"--pretty":case"--sort-files":case"-j":case"--threads":break;case"--color":if(l!==void 0&&!["never","auto","always","ansi"].includes(l))return;break;default:return}if(jb(n,t.positionals)&&!(n.types.length&&s.some(a=>!a.negated))){for(let{glob:a,negated:l}of s){let c=d$(a,n.paths.length===0);if(!(l?Xf(n,c):Sc(n,c)))return}return n.skipHidden=!o,n}}function m$(e){let t=Zf(e,new Set(["-e"]));if(!t)return;let n=Yf("bre",!0);for(let{name:d,value:u}of t.flags)switch(d){case"-i":case"-y":case"--ignore-case":n.ignoreCase=!0;break;case"-E":case"--extended-regexp":n.dialect="ere";break;case"-G":case"--basic-regexp":n.dialect="bre";break;case"-F":case"--fixed-strings":n.fixed=!0;break;case"-w":case"--word-regexp":n.word=!0;break;case"-e":n.patterns.push(u);break;case"-l":case"--files-with-matches":case"--name-only":n.filesOnly=!0;break;case"-n":case"--line-number":case"-I":case"-r":case"--recursive":case"--no-color":case"--full-name":break;default:return}let{positionals:r,afterDashDash:o}=t,s=o===-1?r.length:o;if(n.patterns.length===0){if(s===0||(n.patterns.push(r[0]),s>1))return}else if(s>0)return;let a=o===-1?[]:r.slice(o),l=a.filter(d=>!/[*?]/.test(d)),c=a.filter(d=>/[*?]/.test(d));if(!a.some(d=>d.startsWith(":")||Qf.test(d))&&!(l.length>1||l.length&&c.length)){for(let d of c)if(d.includes("/")||!Sc(n,`**/${d}`))return;return n.paths.push(...l),n}}function jb(e,t){let n=[...t];if(e.patterns.length===0){let r=n.shift();if(r===void 0)return!1;e.patterns.push(r)}return e.paths=n,!0}function Wb(e,t,n){let r=t+1,o="[";e[r]==="^"&&(o+="^",r++);for(let s=!0;r")n+="\\b";else if("wWsSbB".includes(l)||/[1-9]/.test(l))n+=`\\${l}`;else if(/[.*[\]^$\\/+?(){}|]/.test(l))n+=`\\${l}`;else return;continue}if(s==="["){let l=Wb(e,o,"bre");if(!l)return;n+=l[0],o=l[1]}else if(s==="*")n+=a?"\\*":"*";else if(s==="^")n+=t||a?"^":"\\^",r=a;else if(s==="$"){let l=e.slice(o+1);n+=t||l===""||l.startsWith("\\)")||l.startsWith("\\|")?"$":"\\$"}else if(!t&&"()|+?{}".includes(s))n+=`\\${s}`;else if(t&&s==="{"){let l=/^\{(\d*)(,?)(\d*)\}/.exec(e.slice(o));l&&(l[1]!==""||l[2]!=="")?(n+=`{${l[1]||"0"}${l[2]}${l[3]}}`,o+=l[0].length-1):n+="\\{"}else if(t&&s==="}")n+="\\}";else{if(t&&(s==="+"||s==="?"||s==="*")&&a)return;n+=s,r=t&&(s==="("||s==="|")}}return n}function y$(e){let t="";for(let n=0;n]/.test(o))return;t+=`\\${o}`}continue}if(r==="["){let o=Wb(e,n,"rust");if(!o)return;t+=o[0],n=o[1]}else if(r==="("&&e[n+1]==="?"){let o=/^\(\?(?::|P?<([A-Za-z_]\w*)>)/.exec(e.slice(n));if(!o)return;t+=o[1]?`(?<${o[1]}>`:"(?:",n+=o[0].length-1}else if(r==="{"){let o=/^\{\d+(?:,\d*)?\}/.exec(e.slice(n));if(!o)return;t+=o[0],n+=o[0].length-1}else t+=r}return t}function _$(e){let t=e.replace(/\\[pP]\{[^}]*\}|\\[pP][A-Za-z]|\\./g,"");return t!==t.toLowerCase()}function b$(e){let t=[];for(let r of e.patterns){if(r===""||r.includes(` +`))return;let o=e.fixed?wt(r):e.dialect==="rust"?y$(r):h$(r,e.dialect==="ere");if(o===void 0)return;t.push(o)}let n=t.length===1?t[0]:t.map(r=>`(?:${r})`).join("|");if(e.word){let r=e.patterns.every(s=>(e.fixed||!/[\\^$.*+?()[\]{}|]/.test(s))&&/^\w(?:.*\w)?$/.test(s)),o=t.length===1&&r?n:`(?:${n})`;n=r?`\\b${o}\\b`:`(?n===".."))return t===""||t==="."?"":t}function x$(e){for(let t=le(e);;t=Ce(t)){let n=j(t,".gitmodules");if(Q(n)){let r;try{r=ie(n,"utf8")}catch{return[]}return[...r.matchAll(/^\s*path\s*=\s*(.+?)\s*$/gm)].map(o=>le(t,o[1]))}if(Q(j(t,".git"))||Ce(t)===t)return[]}}function Bb(e,t="codeindex",n){let r=Db(e.trim());if(!r||r.length<2||r.some(p=>p.globbed&&!p.value.startsWith("-")))return;let o=r.map(p=>p.value),[s,...a]=o,l;if(s==="grep"||s==="egrep"?l=u$(s,a):s==="rg"?l=f$(a):s==="git"&&a[0]==="grep"&&(l=m$(a.slice(1))),!l||!l.recursive||l.paths.length>1)return;let c=l.paths.length?w$(l.paths[0]):"";if(c===void 0||l.orderSensitive||l.skipHidden&&c.split("/").some(p=>p.startsWith(".")))return;if(n!==void 0&&s!=="git"){let p=le(n,c||".");if(x$(n).some(g=>Lb(g,p)||Lb(p,g)))return}let d=p=>l.fixed?p!==p.toLowerCase():_$(p),u=l.smartCase?!l.patterns.some(d):l.ignoreCase,f=b$(l);if(f===void 0)return;try{df(f,u)}catch{return}let m=[t,"grep",...f.startsWith("-")?["--"]:[],cs(f)];c&&m.push("--scope",cs(c));for(let p of l.includes)m.push("--include",cs(p));for(let p of[...l.excludes,...l.excludeDirs])m.push("--exclude",cs(p));return l.skipHidden&&m.push("--exclude",cs("**/.*"),"--exclude",cs("**/.*/**")),u&&m.push("--ignore-case"),l.filesOnly&&m.push("--files-with-matches"),l.noGitignore&&m.push("--no-gitignore"),m.push("--ignore-dir",".codeindex"),m.join(" ")}var Qf,p$,g$,Lb,em=H(()=>{"use strict";$();ke();me();uo();et();Qf=/[[\]{}\\]/;p$={c:["*.c","*.h","*.H","*.c.in","*.h.in","*.H.in","*.cats"],cpp:["*.C","*.h","*.H","*.C.in","*.h.in","*.H.in","*.cpp","*.hpp","*.cpp.in","*.hpp.in","*.cxx","*.hxx","*.cxx.in","*.hxx.in","*.cc","*.cc.in","*.hh","*.hh.in","*.inl"],cs:["*.cs"],csharp:["*.cs"],css:["*.css","*.scss"],go:["*.go"],html:["*.ejs","*.htm","*.html"],java:["*.java","*.jsp","*.jspx","*.properties"],js:["*.cjs","*.js","*.jsx","*.mjs","*.vue"],json:["*.json","*.sarif","composer.lock"],kotlin:["*.kt","*.kts"],lua:["*.lua"],markdown:["*.markdown","*.md","*.mdown","*.mdwn","*.mdx","*.mkd","*.mkdn"],md:["*.markdown","*.md","*.mdown","*.mdwn","*.mdx","*.mkd","*.mkdn"],php:["*.php","*.php3","*.php4","*.php5","*.php7","*.php8","*.pht","*.phtml"],py:["*.py","*.pyi"],ruby:["*.gemspec","*.rb","*.rbw",".irbrc","Gemfile","Rakefile","config.ru"],rust:["*.rs"],scala:["*.sbt","*.scala"],sql:["*.psql","*.sql"],swift:["*.swift"],toml:["*.toml","Cargo.lock"],ts:["*.cts","*.mts","*.ts","*.tsx"],typescript:["*.cts","*.mts","*.ts","*.tsx"],txt:["*.txt"],yaml:["*.yaml","*.yml"]},g$={alpha:"A-Za-z",digit:"0-9",alnum:"A-Za-z0-9",upper:"A-Z",lower:"a-z",space:" \\t\\n\\r\\f\\v",blank:" \\t",xdigit:"0-9A-Fa-f",punct:"!-\\/:-@\\[-`{-~",word:"A-Za-z0-9_"};Lb=(e,t)=>{let n=je(t,e);return n===""||n!==".."&&!n.startsWith(`..${"/"}`)&&!n.startsWith("/")}});$();$();bt();Ze();Ut();Ut();$();ke();me();In();Cr();Ut();ce();var ZE=1024*1024;function ah(e,t={}){let n=[],{files:r,capped:o}=Es(e,{...t,precomputedWalk:void 0,onSkip:s=>n.push(s)});return{skips:n.sort(Sr(s=>s.rel)),files:r,capped:o}}function Wa(e){let t=new Map;for(let r of e)t.set(r.reason,(t.get(r.reason)??0)+1);let n={};for(let r of[...t.keys()].sort(T))n[r]=t.get(r);return n}function qd(e,t,n={}){let r=nr(e,t);if(r===".."||r.startsWith("../")||Pe(r))return{path:t,indexed:!1,reason:"outside-repo",detail:{}};let o=r||".",{skips:s,files:a,capped:l}=ah(e,n),c=a.find(f=>f.rel===r);if(c)return{path:o,indexed:!0,reason:null,detail:{kind:mt(c.rel,c.ext),lang:rn(c.ext),size:c.size}};let d;try{d=qn(j(e,r))}catch{return{path:o,indexed:!1,reason:"not-found",detail:{}}}let u=new Map(s.map(f=>[f.rel,f]));for(let f=r;f;f=f.slice(0,Math.max(0,f.lastIndexOf("/")))){let m=u.get(f);if(m){let p={...f===r?{}:{dir:f},...YE(e,n,r,m)};return{path:o,indexed:!1,reason:m.reason,detail:p}}}if(r===".git"||r.startsWith(".git/"))return{path:o,indexed:!1,reason:"ignore-dir",detail:{dir:".git"}};if(d.isDirectory()){let f=r?`${r}/`:"",m=a.filter(g=>g.rel.startsWith(f)).length,p=Wa(s.filter(g=>g.rel.startsWith(f)));return{path:o,indexed:m>0,reason:m>0?null:"no-indexed-files",detail:{directory:!0,files:m,skipped:p}}}return l?{path:o,indexed:!1,reason:"max-files",detail:{maxFiles:n.maxFiles}}:{path:o,indexed:!1,reason:"not-walked",detail:{}}}function YE(e,t,n,r){switch(r.reason){case"gitignored":return r.rule?{...r.rule}:{};case"over-max-bytes":return{size:r.size,maxBytes:t.maxBytes??ZE};case"filter":return oh(e,t,n)??{};case"binary-ext":return{ext:mn(r.rel).toLowerCase()};case"index-output":return{out:t.out};case"file-symlink":case"directory-symlink":case"symlink-outside-root":try{let o=rt(j(e,r.rel)),s=je(rt(e),o);return{target:s.startsWith("..")||Pe(s)?o:s.split("/").join("/")}}catch{return{}}default:return{}}}rr();qa();Li();_i();Ic();In();$();me();var Sv=new Set([".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".svelte",".astro",".py",".rb",".go",".rs",".java",".kt",".kts",".php",".c",".cc",".cpp",".h",".hpp",".cs",".swift",".scala",".clj",".ex",".exs",".dart",".lua",".sh",".bash",".zig",".elm",".hcl",".tf",".tfvars",".sol",".hh",".sc",".pyi",".rake",".cxx"]),kv=new Set([".css",".scss",".sass",".less",".styl",".pcss"]),Ev=new Set([".md",".mdx",".rst",".adoc",".txt"]),vv=new Set([".json",".yaml",".yml",".toml",".csv",".xml",".env"]),Rv=new Set([".png",".jpg",".jpeg",".gif",".webp",".avif",".ico",".bmp",".tiff",".svg",".pdf",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".mov",".avi",".webm",".zip",".gz",".tar",".rar",".7z",".wasm",".so",".dylib",".dll",".exe",".bin",".class",".jar",".pyc",".node"]),Cv=["locales","locale","i18n","lang","langs","translations","messages"],Mv=new Set([".json",".yaml",".yml",".po",".properties"]),Av=["__tests__","test","tests","spec","e2e","__mocks__"],Iv=["migrations","entities","models"],$v=new Set(["package.json","tsconfig.json","dockerfile","makefile","pyproject.toml","cargo.toml","go.mod","requirements.txt","gemfile","composer.json","pubspec.yaml"]);function Tv(e,t){let n=e.toLowerCase(),r=We(n),o=n.split("/"),s=a=>a.some(l=>o.includes(l));return s(Cv)&&Mv.has(t)?"i18n":t===".prisma"||t===".sql"||t===".graphql"||t===".gql"||r.startsWith("schema.")||r==="models.py"||s(Iv)?"schema":n.includes(".test.")||n.includes(".spec.")||s(Av)?"test":$v.has(r)||r.endsWith(".config.js")||r.endsWith(".config.ts")||r.endsWith(".config.mjs")||r.startsWith(".eslintrc")||r.startsWith(".prettierrc")||r.startsWith(".env")||r.startsWith("docker-compose")?"config":Ev.has(t)?"doc":kv.has(t)?"style":Sv.has(t)?"code":Rv.has(t)?"asset":vv.has(t)?"data":"other"}Cr();La();id();cd();pt();Od();$();ke();me();Sd();pt();ce();var _h=new Map;function bh(e,t){let n=_h.get(e);if(n!==void 0)return n;let r=null;for(let o of Wt().dirs){let s=j(o,`${e}.tags.scm`);if(Q(s)){try{r=new cg(t,ie(s,"utf8"))}catch{r=null}break}}return _h.set(e,r),r}function Fv(e){if(!Wt().dirs.some(r=>Q(j(r,`${e}.tags.scm`))))return{present:!1,compiled:!1};let n=kd(e);return n?{present:!0,compiled:bh(e,n)!==null}:{present:!0,compiled:!1}}function Ov(e,t){let n=Ra(e,t);if(!n)return[];let r=kd(n),o=Ss(n);if(!r||!o)return[];let s=bh(n,r);if(!s)return[];let a=null;try{if(a=o.parse(t),!a)return[];let l=[],c=new Set;for(let d of s.matches(a.rootNode)){let u,f,m=0;for(let g of d.captures)g.name==="name"?(u=g.node.text,m=g.node.startPosition.row+1):g.name.startsWith("definition.")&&(f=g.name.slice(11));if(!u||!f)continue;let p=`${f} ${u} ${m}`;c.has(p)||(c.add(p),l.push({kind:f,name:u,line:m}))}return l.sort((d,u)=>d.line-u.line||T(d.name,u.name)||T(d.kind,u.kind))}catch{return[]}finally{a?.delete()}}pt();pt();$();oa();ke();me();$();function wh(){throw new Error("zlib.gunzipSync is not available in the browser build (use DecompressionStream at an async boundary)")}bt();var au=`https://github.com/maxgfr/codeindex/releases/download/v${Ie}/grammars-${Ie}.tar.gz`;function Va(){let e=F.env.CODEINDEX_GRAMMARS_URL;return e&&e.trim()?{url:e.trim()}:{url:au,sha256Url:`${au}.sha256`}}async function xh(e,t){let n=await fetch(e);if(!n.ok)throw new Error(`HTTP ${n.status} from ${e}`);let r=W.from(await n.arrayBuffer());if(t){let o=gs("sha256").update(r).digest("hex");if(o!==t)throw new Error(`sha256 mismatch: expected ${t}, got ${o}`)}return r}function Sh(e){return W.isBuffer(e)?e:W.from(e.buffer,e.byteOffset,e.byteLength)}async function kh(e){let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status} from ${e}`);let r=((await t.text()).trim().split(/\s+/)[0]??"").toLowerCase();if(!/^[0-9a-f]{64}$/.test(r))throw new Error(`invalid sha256 sidecar at ${e}`);return r}function ou(e,t,n){let r=e.subarray(t,t+n),o=r.indexOf(0);return r.toString("utf8",0,o===-1?r.length:o)}function*Nv(e){let t=0;for(;t+512<=e.length;){let n=e.subarray(t,t+512),r=!0;for(let u=0;u<512;u++)if(n[u]!==0){r=!1;break}if(r)break;let o=ou(n,0,100),s=ou(n,345,155),a=ou(n,124,12).trim(),l=a?parseInt(a,8):0,c=String.fromCharCode(n[156]??0);t+=512;let d=e.subarray(t,t+l);if(d.length!==l)throw new Error(`truncated grammars archive: ${o} declares ${l} bytes, ${d.length} remain`);t+=Math.ceil(l/512)*512,yield{name:s?`${s}/${o}`:o,type:c,data:d}}}function Pv(e){if(!e||e.includes("\0")||e.startsWith("/")||e.startsWith("\\")||/^[A-Za-z]:/.test(e))return null;let t=[];for(let n of e.split(/[/\\]/))if(!(n===""||n===".")){if(n==="..")return null;t.push(n)}return t.length?t.join("/"):null}function Eh(e,t){let n=le(t),r=[];for(let o of Nv(Sh(e))){if(o.type!=="0"&&o.type!=="\0")continue;let s=Pv(o.name);if(s===null)throw new Error(`refusing unsafe tar entry: ${o.name}`);let a=le(t,s);if(a!==n&&!a.startsWith(n+"/"))throw new Error(`tar entry escapes destination: ${o.name}`);Yt(Ce(a),{recursive:!0}),it(a,o.data),r.push(s)}return r}function vh(e,t){let n=Sh(e),r=n.length>=2&&n[0]===31&&n[1]===139?wh(n):n;return Eh(r,t)}function Lv(e,t,n,r,o=Rn,s=Ke){let a=Ce(t),l=wr(j(a,".grammars-swap-")),c=j(l,"previous-cache"),d=j(l,"previous-marker"),u=j(l,"next-marker"),f=!1,m=!1,p=!1,g=!1;try{r&&it(u,r+` +`),Q(t)&&(o(t,c),f=!0),Q(n)&&(o(n,d),m=!0),o(e,t),p=!0,r&&(o(u,n),g=!0)}catch(h){let _=[],y=b=>{try{b()}catch(S){_.push(S)}};if(g&&Q(n)&&y(()=>Ke(n,{force:!0})),p&&Q(t)&&y(()=>Ke(t,{recursive:!0,force:!0})),m&&Q(d)&&y(()=>o(d,n)),f&&Q(c)&&y(()=>o(c,t)),_.length===0)try{Ke(l,{recursive:!0,force:!0})}catch{}if(_.length>0){let b=_[0];throw new Error(`${h instanceof Error?h.message:String(h)}; rollback failed: ${b instanceof Error?b.message:String(b)} (backup preserved at ${l})`)}throw h}try{s(l,{recursive:!0,force:!0})}catch{}}async function Bi(e,t={}){let n=t.onNote??(()=>{}),r=Va(),o;if(r.sha256Url)try{o=await kh(r.sha256Url)}catch(d){n(`codeindex: could not fetch checksum (${d instanceof Error?d.message:String(d)}) \u2014 proceeding unverified +`)}let s=j(e,"web-tree-sitter.wasm"),a=j(Ce(e),`${Ie}.sha256`);if(Q(s)&&o&&Q(a)){let d="";try{d=ie(a,"utf8").trim()}catch{}if(d===o)return{ok:!0,status:"up-to-date",cacheDir:e,message:`codeindex: grammars already present at ${e} (up to date) `}}n(`codeindex: fetching grammars from ${r.url} \u2192 ${e} -`);let l;try{l=await wh(r.url,o)}catch(d){return{ok:!1,status:"failed",cacheDir:e,message:`codeindex: pull failed \u2014 ${d instanceof Error?d.message:String(d)} (nothing written) -`}}let c;try{if(Zt(Me(e),{recursive:!0}),c=br(j(Me(e),".grammars-tmp-")),Eh(l,c),!ne(j(c,"web-tree-sitter.wasm")))throw new Error("archive is missing web-tree-sitter.wasm");Ov(c,e,a,o),c=void 0}catch(d){if(c)try{Ke(c,{recursive:!0,force:!0})}catch{}return{ok:!1,status:"failed",cacheDir:e,message:`codeindex: pull failed \u2014 ${d instanceof Error?d.message:String(d)} (nothing written) +`);let l;try{l=await xh(r.url,o)}catch(d){return{ok:!1,status:"failed",cacheDir:e,message:`codeindex: pull failed \u2014 ${d instanceof Error?d.message:String(d)} (nothing written) +`}}let c;try{if(Yt(Ce(e),{recursive:!0}),c=wr(j(Ce(e),".grammars-tmp-")),vh(l,c),!Q(j(c,"web-tree-sitter.wasm")))throw new Error("archive is missing web-tree-sitter.wasm");Lv(c,e,a,o),c=void 0}catch(d){if(c)try{Ke(c,{recursive:!0,force:!0})}catch{}return{ok:!1,status:"failed",cacheDir:e,message:`codeindex: pull failed \u2014 ${d instanceof Error?d.message:String(d)} (nothing written) `}}return{ok:!0,status:"pulled",cacheDir:e,message:`codeindex: grammars extracted \u2192 ${e} -`}}I();pt();async function Nv(e={}){let t=e.label??"codeindex",n=[],r=u=>{n.push(u),e.onNote?e.onNote(u):O.stderr.write(u)},o=O.env.CODEINDEX_NO_GRAMMARS_PULL,s=(e.pull??!0)&&!(o&&o.trim()&&o!=="0"),a=[...e.keys??Ca()],l=!1;if(Wt().tier==="none"&&s){r(`${t}: tree-sitter grammars not found locally \u2014 pulling them into the shared cache (once per machine)\u2026 -`);let u=await Wi(xs(),{onNote:r});r(u.message),l=u.ok&&u.status==="pulled"}await on(a);let c=Wt().tier,d=a.some(u=>Le(u));return d||r(`${t}: no tree-sitter grammars available (offline?) \u2014 extracting with the regex tier, so symbols and call sites are less precise. Run \`codeindex grammars pull\` once online to enable AST precision. -`),{tier:c,ready:d,pulled:l,notes:n}}An();Ms();cl();ir();Tn();Wr();or();js();Vu();_l();Gr();Yi();rf();lr();sf();zi();kl();I();fe();bi();_t();Ze();le();Is();gt();Tn();Gr();var wn=class{buf;len=0;constructor(t=64){this.buf=new Uint8Array(t)}get length(){return this.len}grow(t){if(this.len+t<=this.buf.length)return;let n=this.buf.length*2||64;for(;n127;)e.push(t&127|128),t=Math.floor(t/128);e.push(t&127)}function s_(e,t,n){El(e,t*8+n)}function Bs(e,t,n){s_(e,t,0),El(e,n)}function i_(e,t,n){s_(e,t,2),El(e,n.length),e.pushAll(n)}function Vr(e,t,n){i_(e,t,n.view())}function Nn(e,t,n){i_(e,t,nM.encode(n))}function rM(e,t,n){let r=new wn(n.length*2);for(let o of n)El(r,o);Vr(e,t,r)}var sM=1,iM=2,oM=2,aM=3,lM=4,cM=1,dM=2,uM=1,fM=2,mM=3,pM=4,gM=6,hM=1,yM=2,_M=3,bM=1,wM=4,xM=5,SM=6,kM=1,EM=2,vM=3,RM=1,CM=1,MM=2,AM="codeindex",Yy=". . .",IM=new Map([["typescript","package.json"],["javascript","package.json"],["go","go.mod"],["rust","Cargo.toml"],["python","pyproject.toml"],["java","pom.xml"],["kotlin","pom.xml"],["scala","pom.xml"],["php","composer.json"]]);function of(e){return e?e.replace(/ /g," "):"."}var TM=/^[A-Za-z0-9_+\-$]+$/;function o_(e){return TM.test(e)?e:"`"+e.replace(/`/g,"``")+"`"}function $M(e){return"`"+e.replace(/`/g,"``")+"`/"}var a_=new Map([["class",[7,"#"]],["record",[7,"#"]],["interface",[21,"#"]],["annotation",[21,"#"]],["enum",[11,"#"]],["struct",[49,"#"]],["exception",[49,"#"]],["trait",[53,"#"]],["type",[54,"#"]],["opaque",[54,"#"]],["union",[59,"#"]],["protocol",[42,"#"]],["delegate",[73,"#"]],["contract",[62,"#"]],["library",[64,"#"]],["mixin",[85,"#"]],["extension",[84,"#"]],["concept",[86,"#"]],["error",[63,"#"]],["namespace",[30,"/"]],["package",[35,"/"]],["module",[29,"/"]],["mod",[29,"/"]],["impl",[29,"/"]],["function",[17,"()."]],["test",[17,"()."]],["method",[26,"()."]],["def",[26,"()."]],["destructor",[26,"()."]],["fallback",[26,"()."]],["receive",[26,"()."]],["call-signature",[26,"()."]],["constructor",[9,"()."]],["construct-signature",[9,"()."]],["getter",[18,"()."]],["setter",[45,"()."]],["operator",[34,"()."]],["modifier",[65,"()."]],["attr",[72,"()."]],["indexer",[47,"()."]],["index-signature",[47,"()."]],["macro",[25,"!"]],["guard",[25,"!"]],["const",[8,"."]],["val",[8,"."]],["var",[61,"."]],["variable",[61,"."]],["static",[82,"."]],["field",[15,"."]],["property",[41,"."]],["enum-member",[12,"."]],["event",[13,"."]],["object",[33,"."]]]),FM=e=>a_.get(e)?.[0],OM=e=>a_.get(e)?.[1]??".",NM=e=>e==="#"||e==="/";function PM(e,t,n,r,o){let s=o_(t),a=e+s+n;if(!o.has(a))return o.add(a),a;for(let l=0;;l++){let c=l===0?String(r):`${r}_${l}`,d=n==="()."?`${e}${s}(${c}).`:`${a}(${c})`;if(!o.has(d))return o.add(d),d}}function Qy(e){return e==="typescript"||e==="javascript"||e==="vue"||e==="svelte"||e==="astro"?"js":e==="c"||e==="cpp"?"c":e}var e_=new Set(["reexport","reexport-all","default"]);function t_(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95||e===36}function n_(e,t){if(!t)return null;let n=/^[A-Za-z_$][\w$]*$/.test(t),r=0;for(;;){let o=e.indexOf(t,r);if(o<0)return null;if(!n)return[o,o+t.length];let s=o>0?e.charCodeAt(o-1):-1,a=o+t.length,l=ae.sym.endLine??e.sym.line,af=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";function r_(e){let t=e.symbols.find(n=>n.kind==="package")?.name??"";return`${af(e.rel)}\0${t}`}function lf(e,t={}){let n=t.projectRoot??Cr(e.root).href,r=t.toolVersion??Te,o=new Map,s=(A,S)=>{let w=`${A}\0${S}`,E=o.get(w);if(E===void 0){let P=Jy(e.root,A,S);E=P?`${of(P.manager)} ${of(P.name)} ${of(P.version)}`:A?s(af(A),S):Yy,o.set(w,E)}return E},a=A=>{let S=IM.get(A.lang);return`${AM} ${S?s(af(A.rel),S):Yy} ${$M(A.rel)}`},l=e.files.filter(A=>A.kind==="code"&&A.symbols.length>0),c=new Map,d=new Map,u=new Map;for(let A of l){let S=[],w=new Map;for(let E of A.symbols){if(!E.name||e_.has(E.kind))continue;let P={file:A,sym:E,suffix:OM(E.kind)};S.push(P);let N=w.get(E.name);if(N||w.set(E.name,N=[]),N.push(P),A.lang==="go"&&!E.parent&&P.suffix==="#"){let L=r_(A),H=u.get(L);H||u.set(L,H=new Map),H.has(E.name)||H.set(E.name,P)}}c.set(A.rel,{defs:S,byName:w}),d.set(A.rel,a(A))}let f=A=>{let S=A.sym.parent;if(!S)return;let w=c.get(A.file.rel).byName.get(S)??[],E;for(let L of w)L===A||L.sym.line>A.sym.line||lo(L)E.sym.line||L.sym.line===E.sym.line&&lo(L)L!==A&&NM(L.suffix)),N=P.find(L=>!L.sym.parent)??P[0];if(N)return N;if(A.file.lang==="go")return u.get(r_(A.file))?.get(S)},m=new Set,p=new Set,g=A=>{if(A.symbol!==void 0)return A.symbol;p.add(A);let S=f(A),w=S&&!p.has(S)?g(S):d.get(A.file.rel)+(A.sym.parent?o_(A.sym.parent)+"#":"");return p.delete(A),A.symbol=PM(w,A.sym.name,A.suffix,A.sym.line,m),S&&w===S.symbol&&(S.children??=[]).push(A),A.symbol},h=new Map,_=new Map;for(let A of l)for(let S of c.get(A.rel).defs){let w=g(S);if(_.set(S.sym,w),!S.sym.exported)continue;let E=h.get(S.sym.name);E||h.set(S.sym.name,E=[]),E.push({symbolString:w,family:Qy(S.sym.lang)})}let y=new Map,b=(A,S,w)=>{if(A===S)return;let E=y.get(A);E||y.set(A,E=new Map),E.set(S.symbol,w||E.get(S.symbol)===!0)};for(let A of rr(e,Ot(e))){let S=(c.get(A.fromFile)?.byName.get(A.from)??[]).filter(N=>N.suffix!=="()."&&N.suffix!=="!"),w=S.find(N=>N.sym.line===A.fromLine)??S.filter(N=>N.sym.line<=A.fromLine&&lo(N)>=A.fromLine).pop()??S[0],E=c.get(A.toFile)?.byName.get(A.to)?.find(N=>N.sym.kind===A.toKind);if(!w||!E)continue;b(w,E,!1);let P=new Map;for(let N of E.children??[])N.suffix==="()."&&!P.has(N.sym.name)&&P.set(N.sym.name,N);for(let N of w.children??[]){let L=N.suffix==="()."?P.get(N.sym.name):void 0;L&&b(N,L,!0)}}let x=(A,S)=>{let w=h.get(A);if(!w||w.length!==1)return;let E=w[0];return E.family===S?E.symbolString:void 0},k=ar(e,Ot(e)),v=[];for(let A of l){let w=se(j(e.root,A.rel)).split(` -`).map(B=>B.endsWith("\r")?B.slice(0,-1):B),E=(B,G)=>{let ee=w[B-1];if(ee===void 0)return[B-1,0,0];let ce=n_(ee,G);return ce?[B-1,ce[0],ce[1]]:[B-1,0,ee.length]},{defs:P}=c.get(A.rel),N=[];for(let B of P)N.push({range:E(B.sym.line,B.sym.name),symbol:B.symbol,roles:CM});let L=Qy(A.lang),H=k.forFile(A);for(let B of A.calls??[]){let G=x(B.name,L);if(!G)continue;let ee=H?.(B);!ee||_.get(ee.def)!==G||N.push({range:E(B.line,B.name),symbol:G,roles:0})}for(let B of A.symbols){if(!e_.has(B.kind)||!B.name)continue;let G=w[B.line-1],ee=G===void 0?null:n_(G,B.name),ce=ee&&x(B.name,L);!ee||!ce||N.push({range:[B.line-1,ee[0],ee[1]],symbol:ce,roles:0})}if(!N.length)continue;N.sort((B,G)=>B.range[0]-G.range[0]||B.range[1]-G.range[1]||B.range[2]-G.range[2]||B.roles-G.roles||$(B.symbol,G.symbol));let Y=new Set,oe=P.map(B=>({symbol:B.symbol,displayName:B.sym.name,kind:FM(B.sym.kind),relationships:[...y.get(B)??[]].sort((G,ee)=>$(G[0],ee[0]))})).sort((B,G)=>$(B.symbol,G.symbol)),ge=new wn(1024);Nn(ge,uM,A.rel);let Se=new wn(64);for(let B of N){let G=`${B.range.join(",")} ${B.roles} ${B.symbol}`;Y.has(G)||(Y.add(G),Se.reset(),rM(Se,hM,B.range),Nn(Se,yM,B.symbol),B.roles!==0&&Bs(Se,_M,B.roles),Vr(ge,fM,Se))}let Ce=new wn(64),U=new wn(64);for(let B of oe){Ce.reset(),Nn(Ce,bM,B.symbol);for(let[G,ee]of B.relationships)U.reset(),Nn(U,kM,G),ee&&Bs(U,EM,1),Bs(U,vM,1),Vr(Ce,wM,U);B.kind!==void 0&&Bs(Ce,xM,B.kind),Nn(Ce,SM,B.displayName),Vr(ge,mM,Ce)}Nn(ge,pM,A.lang),Bs(ge,gM,MM),v.push(ge)}let T=new wn;Nn(T,cM,"codeindex"),Nn(T,dM,r);let F=new wn;Vr(F,oM,T),Nn(F,aM,n),Bs(F,lM,RM);let R=0;for(let A of v)R+=A.length;let C=new wn(R+F.length+16);Vr(C,sM,F);for(let A of v)Vr(C,iM,A);return C.toUint8Array()}vl();tn();co();Fs();Kr();mo();Zr();Al();$l();bf();Hl();Nl();Bl();Cf();ko();Dl();Jl();wo();_o();Xl();Us();Os();Zl();Br();Ql();Vf();Qf();xt();le();et();I();Ee();fe();tc();_t();_t();pt();vl();xt();kl();zi();Ut();le();Pi();tr();Ga();su();Mn();Ni();Ze();Tn();Wr();or();js();$f();Of();Pr();Gr();tn();co();wo();_o();Xl();Us();Os();Zl();Tf();gt();Br();Ql();Fs();Jl();Kr();Zr();Nf();Al();$l();et();Hl();_c();var Sc=`codeindex engine v${Te} \u2014 deterministic repo indexing +`}}$();pt();async function Dv(e={}){let t=e.label??"codeindex",n=[],r=u=>{n.push(u),e.onNote?e.onNote(u):F.stderr.write(u)},o=F.env.CODEINDEX_NO_GRAMMARS_PULL,s=(e.pull??!0)&&!(o&&o.trim()&&o!=="0"),a=[...e.keys??Ma()],l=!1;if(Wt().tier==="none"&&s){r(`${t}: tree-sitter grammars not found locally \u2014 pulling them into the shared cache (once per machine)\u2026 +`);let u=await Bi(xs(),{onNote:r});r(u.message),l=u.ok&&u.status==="pulled"}await an(a);let c=Wt().tier,d=a.some(u=>De(u));return d||r(`${t}: no tree-sitter grammars available (offline?) \u2014 extracting with the regex tier, so symbols and call sites are less precise. Run \`codeindex grammars pull\` once online to enable AST precision. +`),{tier:c,ready:d,pulled:l,notes:n}}$n();Ms();dl();ar();Fn();Br();lr();js();Ju();bl();qr();Qi();sf();dr();of();Hi();El();$();me();wi();bt();Ze();ce();Is();gt();Fn();qr();var Sn=class{buf;len=0;constructor(t=64){this.buf=new Uint8Array(t)}get length(){return this.len}grow(t){if(this.len+t<=this.buf.length)return;let n=this.buf.length*2||64;for(;n127;)e.push(t&127|128),t=Math.floor(t/128);e.push(t&127)}function o_(e,t,n){vl(e,t*8+n)}function Bs(e,t,n){o_(e,t,0),vl(e,n)}function a_(e,t,n){o_(e,t,2),vl(e,n.length),e.pushAll(n)}function Jr(e,t,n){a_(e,t,n.view())}function Ln(e,t,n){a_(e,t,iM.encode(n))}function oM(e,t,n){let r=new Sn(n.length*2);for(let o of n)vl(r,o);Jr(e,t,r)}var aM=1,lM=2,cM=2,dM=3,uM=4,fM=1,mM=2,pM=1,gM=2,hM=3,yM=4,_M=6,bM=1,wM=2,xM=3,SM=1,kM=4,EM=5,vM=6,RM=1,CM=2,MM=3,AM=1,IM=1,$M=2,TM="codeindex",e_=". . .",FM=new Map([["typescript","package.json"],["javascript","package.json"],["go","go.mod"],["rust","Cargo.toml"],["python","pyproject.toml"],["java","pom.xml"],["kotlin","pom.xml"],["scala","pom.xml"],["php","composer.json"]]);function af(e){return e?e.replace(/ /g," "):"."}var OM=/^[A-Za-z0-9_+\-$]+$/;function l_(e){return OM.test(e)?e:"`"+e.replace(/`/g,"``")+"`"}function NM(e){return"`"+e.replace(/`/g,"``")+"`/"}var c_=new Map([["class",[7,"#"]],["record",[7,"#"]],["interface",[21,"#"]],["annotation",[21,"#"]],["enum",[11,"#"]],["struct",[49,"#"]],["exception",[49,"#"]],["trait",[53,"#"]],["type",[54,"#"]],["opaque",[54,"#"]],["union",[59,"#"]],["protocol",[42,"#"]],["delegate",[73,"#"]],["contract",[62,"#"]],["library",[64,"#"]],["mixin",[85,"#"]],["extension",[84,"#"]],["concept",[86,"#"]],["error",[63,"#"]],["namespace",[30,"/"]],["package",[35,"/"]],["module",[29,"/"]],["mod",[29,"/"]],["impl",[29,"/"]],["function",[17,"()."]],["test",[17,"()."]],["method",[26,"()."]],["def",[26,"()."]],["destructor",[26,"()."]],["fallback",[26,"()."]],["receive",[26,"()."]],["call-signature",[26,"()."]],["constructor",[9,"()."]],["construct-signature",[9,"()."]],["getter",[18,"()."]],["setter",[45,"()."]],["operator",[34,"()."]],["modifier",[65,"()."]],["attr",[72,"()."]],["indexer",[47,"()."]],["index-signature",[47,"()."]],["macro",[25,"!"]],["guard",[25,"!"]],["const",[8,"."]],["val",[8,"."]],["var",[61,"."]],["variable",[61,"."]],["static",[82,"."]],["field",[15,"."]],["property",[41,"."]],["enum-member",[12,"."]],["event",[13,"."]],["object",[33,"."]]]),PM=e=>c_.get(e)?.[0],LM=e=>c_.get(e)?.[1]??".",DM=e=>e==="#"||e==="/";function jM(e,t,n,r,o){let s=l_(t),a=e+s+n;if(!o.has(a))return o.add(a),a;for(let l=0;;l++){let c=l===0?String(r):`${r}_${l}`,d=n==="()."?`${e}${s}(${c}).`:`${a}(${c})`;if(!o.has(d))return o.add(d),d}}function t_(e){return e==="typescript"||e==="javascript"||e==="vue"||e==="svelte"||e==="astro"?"js":e==="c"||e==="cpp"?"c":e}var n_=new Set(["reexport","reexport-all","default"]);function r_(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95||e===36}function s_(e,t){if(!t)return null;let n=/^[A-Za-z_$][\w$]*$/.test(t),r=0;for(;;){let o=e.indexOf(t,r);if(o<0)return null;if(!n)return[o,o+t.length];let s=o>0?e.charCodeAt(o-1):-1,a=o+t.length,l=ae.sym.endLine??e.sym.line,lf=e=>e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";function i_(e){let t=e.symbols.find(n=>n.kind==="package")?.name??"";return`${lf(e.rel)}\0${t}`}function cf(e,t={}){let n=t.projectRoot??Mr(e.root).href,r=t.toolVersion??Ie,o=new Map,s=(M,x)=>{let w=`${M}\0${x}`,E=o.get(w);if(E===void 0){let N=Xy(e.root,M,x);E=N?`${af(N.manager)} ${af(N.name)} ${af(N.version)}`:M?s(lf(M),x):e_,o.set(w,E)}return E},a=M=>{let x=FM.get(M.lang);return`${TM} ${x?s(lf(M.rel),x):e_} ${NM(M.rel)}`},l=e.files.filter(M=>M.kind==="code"&&M.symbols.length>0),c=new Map,d=new Map,u=new Map;for(let M of l){let x=[],w=new Map;for(let E of M.symbols){if(!E.name||n_.has(E.kind))continue;let N={file:M,sym:E,suffix:LM(E.kind)};x.push(N);let O=w.get(E.name);if(O||w.set(E.name,O=[]),O.push(N),M.lang==="go"&&!E.parent&&N.suffix==="#"){let L=i_(M),G=u.get(L);G||u.set(L,G=new Map),G.has(E.name)||G.set(E.name,N)}}c.set(M.rel,{defs:x,byName:w}),d.set(M.rel,a(M))}let f=M=>{let x=M.sym.parent;if(!x)return;let w=c.get(M.file.rel).byName.get(x)??[],E;for(let L of w)L===M||L.sym.line>M.sym.line||co(L)E.sym.line||L.sym.line===E.sym.line&&co(L)L!==M&&DM(L.suffix)),O=N.find(L=>!L.sym.parent)??N[0];if(O)return O;if(M.file.lang==="go")return u.get(i_(M.file))?.get(x)},m=new Set,p=new Set,g=M=>{if(M.symbol!==void 0)return M.symbol;p.add(M);let x=f(M),w=x&&!p.has(x)?g(x):d.get(M.file.rel)+(M.sym.parent?l_(M.sym.parent)+"#":"");return p.delete(M),M.symbol=jM(w,M.sym.name,M.suffix,M.sym.line,m),x&&w===x.symbol&&(x.children??=[]).push(M),M.symbol},h=new Map,_=new Map;for(let M of l)for(let x of c.get(M.rel).defs){let w=g(x);if(_.set(x.sym,w),!x.sym.exported)continue;let E=h.get(x.sym.name);E||h.set(x.sym.name,E=[]),E.push({symbolString:w,family:t_(x.sym.lang)})}let y=new Map,b=(M,x,w)=>{if(M===x)return;let E=y.get(M);E||y.set(M,E=new Map),E.set(x.symbol,w||E.get(x.symbol)===!0)};for(let M of ir(e,Ot(e))){let x=(c.get(M.fromFile)?.byName.get(M.from)??[]).filter(O=>O.suffix!=="()."&&O.suffix!=="!"),w=x.find(O=>O.sym.line===M.fromLine)??x.filter(O=>O.sym.line<=M.fromLine&&co(O)>=M.fromLine).pop()??x[0],E=c.get(M.toFile)?.byName.get(M.to)?.find(O=>O.sym.kind===M.toKind);if(!w||!E)continue;b(w,E,!1);let N=new Map;for(let O of E.children??[])O.suffix==="()."&&!N.has(O.sym.name)&&N.set(O.sym.name,O);for(let O of w.children??[]){let L=O.suffix==="()."?N.get(O.sym.name):void 0;L&&b(O,L,!0)}}let S=(M,x)=>{let w=h.get(M);if(!w||w.length!==1)return;let E=w[0];return E.family===x?E.symbolString:void 0},k=cr(e,Ot(e)),R=[];for(let M of l){let w=re(j(e.root,M.rel)).split(` +`).map(U=>U.endsWith("\r")?U.slice(0,-1):U),E=(U,q)=>{let te=w[U-1];if(te===void 0)return[U-1,0,0];let ae=s_(te,q);return ae?[U-1,ae[0],ae[1]]:[U-1,0,te.length]},{defs:N}=c.get(M.rel),O=[];for(let U of N)O.push({range:E(U.sym.line,U.sym.name),symbol:U.symbol,roles:IM});let L=t_(M.lang),G=k.forFile(M);for(let U of M.calls??[]){let q=S(U.name,L);if(!q)continue;let te=G?.(U);!te||_.get(te.def)!==q||O.push({range:E(U.line,U.name),symbol:q,roles:0})}for(let U of M.symbols){if(!n_.has(U.kind)||!U.name)continue;let q=w[U.line-1],te=q===void 0?null:s_(q,U.name),ae=te&&S(U.name,L);!te||!ae||O.push({range:[U.line-1,te[0],te[1]],symbol:ae,roles:0})}if(!O.length)continue;O.sort((U,q)=>U.range[0]-q.range[0]||U.range[1]-q.range[1]||U.range[2]-q.range[2]||U.roles-q.roles||T(U.symbol,q.symbol));let X=new Set,oe=N.map(U=>({symbol:U.symbol,displayName:U.sym.name,kind:PM(U.sym.kind),relationships:[...y.get(U)??[]].sort((q,te)=>T(q[0],te[0]))})).sort((U,q)=>T(U.symbol,q.symbol)),ue=new Sn(1024);Ln(ue,pM,M.rel);let ve=new Sn(64);for(let U of O){let q=`${U.range.join(",")} ${U.roles} ${U.symbol}`;X.has(q)||(X.add(q),ve.reset(),oM(ve,bM,U.range),Ln(ve,wM,U.symbol),U.roles!==0&&Bs(ve,xM,U.roles),Jr(ue,gM,ve))}let Oe=new Sn(64),z=new Sn(64);for(let U of oe){Oe.reset(),Ln(Oe,SM,U.symbol);for(let[q,te]of U.relationships)z.reset(),Ln(z,RM,q),te&&Bs(z,CM,1),Bs(z,MM,1),Jr(Oe,kM,z);U.kind!==void 0&&Bs(Oe,EM,U.kind),Ln(Oe,vM,U.displayName),Jr(ue,hM,Oe)}Ln(ue,yM,M.lang),Bs(ue,_M,$M),R.push(ue)}let I=new Sn;Ln(I,fM,"codeindex"),Ln(I,mM,r);let P=new Sn;Jr(P,cM,I),Ln(P,dM,n),Bs(P,uM,AM);let v=0;for(let M of R)v+=M.length;let C=new Sn(v+P.length+16);Jr(C,aM,P);for(let M of R)Jr(C,lM,M);return C.toUint8Array()}Rl();nn();uo();Fs();Xr();po();Yr();Il();Fl();wf();Gl();Pl();Ul();Mf();Eo();jl();Kl();xo();bo();Zl();Us();Os();Yl();Ur();ec();Jf();em();St();ce();et();$();ke();me();nc();bt();bt();pt();Rl();St();El();Hi();Ut();ce();Li();rr();qa();iu();In();Pi();Ze();Fn();Br();lr();js();Ff();Nf();Lr();qr();nn();uo();xo();bo();Zl();Us();Os();Yl();Tf();gt();Ur();ec();Fs();Kl();Xr();Yr();Pf();Il();Fl();et();Gl();bc();var kc=`codeindex engine v${Ie} \u2014 deterministic repo indexing Usage: codeindex [flags] @@ -497,78 +497,78 @@ Flags (accepted before OR after the subcommand: '--repo X scan' and --json \`delta\`: the JSON result instead of the text panel --fail-on \`delta\`: exit 1 when a module scores HIGH, MEDIUM or LOW (or above) -`,em=new Set(["--repo","--out","--include","--exclude","--scope","--no-gitignore","--ignore-dir","--max-files","--max-bytes","--max-calls","--no-ast","--workers","--index","--no-index-cache","--full-hash"]),qo={index:{flags:[],positionals:0},scan:{flags:["--why","--skipped"],positionals:0},status:{flags:["--check"],positionals:0},graph:{flags:[],positionals:0},symbols:{flags:[],positionals:0},scip:{flags:["--project-root"],positionals:0},callers:{flags:["--lsp","--trust-lsp-config","--recall","--raw","--with-caller"],positionals:1},hierarchy:{flags:[],positionals:1},implementations:{flags:[],positionals:1},callgraph:{flags:["--depth","--direction"],positionals:1},callpath:{flags:["--depth","--limit","--files","--include-inferred"],positionals:2},find:{flags:["--substring","--include-body","--concise","--limit"],positionals:1},refs:{flags:["--lsp","--trust-lsp-config","--concise"],positionals:1},outline:{flags:["--concise"],positionals:1},"symbol-at":{flags:[],positionals:1},workspaces:{flags:["--check"],positionals:0},churn:{flags:["--since"],positionals:0},grep:{flags:["--ignore-case","--max-hits","--files-with-matches","--timeout-ms"],positionals:1},search:{flags:["--limit","--no-fuzzy","--exact","--explain","--rank","--semantic"],positionals:1},embed:{flags:["--run"],positionals:1},lsp:{flags:["--probe","--trust-lsp-config"],positionals:1},grammars:{flags:[],positionals:1},rules:{flags:["--config"],positionals:0},repomap:{flags:["--budget-tokens"],positionals:0},hotspots:{flags:["--since","--limit"],positionals:0},coupling:{flags:["--since","--limit","--min-together","--max-commit-files","--hidden"],positionals:0},literals:{flags:["--min-files","--min-count","--include-tests"],positionals:0},deadcode:{flags:["--kinds","--include-tail","--limit"],positionals:0},complexity:{flags:["--limit"],positionals:1},risk:{flags:["--since","--limit"],positionals:0},delta:{flags:["--base","--staged","--depth","--json","--fail-on"],positionals:0},impact:{flags:["--depth","--include-inferred"],positionals:1},neighbors:{flags:["--depth","--kind"],positionals:1},resolution:{flags:["--lang","--limit"],positionals:0},mermaid:{flags:[],positionals:1}},bT={"-i":"--ignore-case","-l":"--files-with-matches","-o":"--out","-h":"--help","-v":"--version"};function wT(e,t){let n=Array.from({length:t.length+1},(r,o)=>o);for(let r=1;r<=e.length;r++){let o=[r];for(let s=1;s<=t.length;s++)o[s]=Math.min(n[s]+1,o[s-1]+1,n[s-1]+(e[r-1]===t[s-1]?0:1));n=o}return n[t.length]}function tm(e,t){let n,r=1/0;for(let o of[...t].sort()){let s=wT(e,o);snew Set([...em,...Object.values(qo).flatMap(e=>e.flags)]);function Bb(e){let t=bT[e]??tm(e,xT());return new Error(`unknown flag: ${e}${t?` (did you mean ${t}?)`:""}`)}function ST(e,t){let n=qo[e];if(n){for(let r of t.given){if(em.has(r)||n.flags.includes(r))continue;let o=tm(r,n.flags);throw new Error(`${r} does not apply to ${e}`+(o?` (did you mean ${o}?)`:n.flags.length?` (it takes ${n.flags.join(", ")})`:"")+` \u2014 codeindex ${e} --help`)}if(t.positionals.length>n.positionals){let r=t.positionals[n.positionals];throw new Error(n.positionals===0?`${e} takes no argument, got "${r}" \u2014 codeindex ${e} --help`:`unexpected argument "${r}": ${e} takes ${n.positionals===1?"one":n.positionals} \u2014 codeindex ${e} --help`)}}}function kT(e){let t=Sc.split(` -`),n=l=>{let c=[t[l]];for(let d=l+1;dl.startsWith(` ${e} `)),o=qo[e],s=[`codeindex ${e}`,"",...r===-1?[]:n(r)],a=(o?.flags??[]).flatMap(l=>{let c=t.findIndex(d=>d.startsWith(` ${l} `)||d===` ${l}`);return c===-1?[]:n(c)});return a.length&&s.push("","Flags:",...a),s.push("",`Global flags: ${[...em].join(", ")} (codeindex --help)`,""),s.join(` -`)}function ET(e){let t={repo:O.cwd(),include:[],exclude:[],gitignore:!0,ignoreDirs:[],noAst:!1,fuzzy:!0,semantic:!1,positionals:[],given:[]};for(let n=0;n{let l=e[++n];if(l===void 0)throw new Error(`missing value for ${r}`);return l},s=()=>{let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<=0)throw new Error(`${r} expects a positive whole number, got "${l}"`);return c},a=()=>{let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<=0)throw new Error(`${r} expects a positive number, a whole one, got "${l}"`);return c};if(r.startsWith("--")&&r!=="--"&&t.given.push(r),r==="--repo")t.repo=ae(o());else if(r==="--out"){let l=o();t.out=l==="-"?"-":ae(l)}else if(r==="--project-root")t.projectRoot=o();else if(r==="--include")t.include.push(o());else if(r==="--exclude")t.exclude.push(o());else if(r==="--scope")t.scope=o();else if(r==="--no-gitignore")t.gitignore=!1;else if(r==="--ignore-dir")t.ignoreDirs.push(o().replace(/(.)[\\/]+$/,"$1"));else if(r==="--max-files")t.maxFiles=a();else if(r==="--max-bytes")t.maxBytes=a();else if(r==="--max-calls")t.maxCalls=a();else if(r==="--ignore-case")t.ignoreCase=!0;else if(r==="--max-hits")t.maxHits=s();else if(r==="--timeout-ms")t.timeoutMs=a();else if(r==="--files-with-matches")t.filesWithMatches=!0;else if(r==="--budget-tokens")t.budgetTokens=a();else if(r==="--min-files")t.minFiles=a();else if(r==="--min-count")t.minCount=a();else if(r==="--include-tests")t.includeTests=!0;else if(r==="--include-inferred")t.includeInferred=!0;else if(r==="--include-tail")t.includeTail=!0;else if(r==="--kinds"){let l=o();if(l!=="callable"&&l!=="all")throw new Error(`--kinds expects callable|all, got "${l}"`);t.kinds=l}else if(r==="--no-ast")t.noAst=!0;else if(r==="--index")t.indexDir=o();else if(r==="--no-index-cache")t.noIndexCache=!0;else if(r==="--full-hash")t.fullHash=!0;else if(r==="--check")t.check=!0;else if(r==="--why")t.why=o();else if(r==="--skipped")t.skipped=!0;else if(r==="--workers"){let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<0)throw new Error(`--workers expects a non-negative integer, got "${l}"`);t.workers=c}else if(r==="--since")t.since=o();else if(r==="--min-together")t.minTogether=a();else if(r==="--max-commit-files")t.maxCommitFiles=a();else if(r==="--hidden")t.hidden=!0;else if(r==="--config")t.config=o();else if(r==="--limit")t.limit=s();else if(r==="--no-fuzzy")t.fuzzy=!1;else if(r==="--exact")t.exact=!0;else if(r==="--explain")t.explain=!0;else if(r==="--semantic")t.semantic=!0;else if(r==="--lsp")t.lsp=!0;else if(r==="--trust-lsp-config")t.trustLspConfig=!0;else if(r==="--recall")t.recall=!0;else if(r==="--raw")t.raw=!0;else if(r==="--run")t.run=!0;else if(r==="--probe")t.probe=!0;else if(r==="--base")t.base=o();else if(r==="--staged")t.staged=!0;else if(r==="--depth")t.depth=a();else if(r==="--kind"){let l=o(),c=l.split(",").map(u=>u.trim()).filter(Boolean),d=c.filter(u=>!$s.includes(u));if(!c.length||d.length)throw new Error(`--kind expects a comma-separated list of ${$s.join("|")}, got "${d.join(",")||l}"`);t.kind=c.join(",")}else if(r==="--rank"){let l=o();if(l!=="graph"&&l!=="lexical")throw new Error(`--rank expects graph|lexical, got "${l}"`);t.rank=l}else if(r==="--direction"){let l=o();if(l!=="out"&&l!=="in"&&l!=="both")throw new Error(`--direction expects out|in|both, got "${l}"`);t.direction=l}else if(r==="--json")t.json=!0;else if(r==="--fail-on"){let l=o().toUpperCase();if(l!=="HIGH"&&l!=="MEDIUM"&&l!=="LOW")throw new Error(`--fail-on expects HIGH, MEDIUM or LOW, got "${l}"`);t.failOn=l}else if(r==="--lang")t.lang=o();else if(r==="--substring")t.substring=!0;else if(r==="--include-body")t.includeBody=!0;else if(r==="--concise")t.concise=!0;else if(r==="--files")t.files=!0;else if(r==="--with-caller")t.withCaller=!0;else if(r==="--"){if(t.positional!==void 0)throw new Error(`unexpected "--": the positional is already "${t.positional}"`);let l=o();t.positionals.push(l),t.positional=l}else{if(r.startsWith("-")&&r!=="-")throw Bb(r);if(!r.startsWith("--"))t.positionals.push(r),t.positional??=r;else throw Bb(r)}}return t}function we(e,t){t&&t!=="-"?Sn(t,e):O.stdout.write(e)}function Sn(e,t){try{if(!Hn(e).isFile()){ot(e,t);return}}catch{}let n=`${e}.tmp-${O.pid}`;try{ot(n,t),En(n,e);return}catch{Ke(n,{force:!0})}ot(e,t)}function vT(e){for(let n of e.ignoreDirs)/[\\/]/.test(n)&&O.stderr.write(`codeindex: warning: --ignore-dir takes a directory name, and "${n}" is a path that matches nothing \u2014 use --exclude '${n}/**' to leave that directory out -`);if(e.scope===void 0)return;let t=er(e.repo,e.scope);t===".."||t.startsWith("../")||Ne(t)?O.stderr.write(`codeindex: warning: --scope ${e.scope} is outside --repo ${e.repo} \u2014 nothing matches -`):t&&!/[*?[]/.test(t)&&!ne(j(e.repo,t))&&O.stderr.write(`codeindex: warning: --scope ${e.scope} does not exist under ${e.repo} \u2014 nothing matches -`)}function Go(e){let t=e.include.find(n=>!n.includes("/"));O.stderr.write(`codeindex: warning: no file of ${e.repo} was indexed \u2014 check --scope/--include/--exclude and the ignore rules`+(t?` (globs are rooted at the repo: '${t}' matches top-level paths only, '**/${t}' any depth)`:"")+` -`)}function Xt(e,t){return{include:e.include.length?e.include:void 0,exclude:e.exclude.length?e.exclude:void 0,scope:e.scope,gitignore:e.gitignore,ignoreDirs:e.ignoreDirs.length?e.ignoreDirs:void 0,maxFiles:e.maxFiles,maxBytes:e.maxBytes,maxCallsPerFile:e.maxCalls,fullHash:e.fullHash,out:zt(e.repo,e.indexDir),precomputedWalk:t}}var Ub=e=>e==="HIGH"?2:e==="MEDIUM"?1:0,RT=new Set(["grep","churn","workspaces","grammars"]),CT=new Set(["scan","status"]),MT={absent:"no cache.json there",unreadable:"cache.json cannot be read",corrupt:"cache.json is not a valid index",schema:"written for another schema version",extractor:"written by another extractor version"};function AT(e,t,n,r,o){let s=ru(e,t,Le,r);if(!s)return;let{fresh:a,walked:l,drift:c}=s,d=l.map(f=>({kind:mt(f.rel,f.ext),ext:f.ext}));if(c.unchanged!==l.length||c.indexed!==l.length||a.meta.commit!==s.commit||!Jd(a.meta.extraction,Vd(d,n,Le))||!o(a.meta.embed))return;let u=Fr(e,{contentUnchanged:!0,commit:s.commit},a.meta,r);if(!(!u?.bytes("symbols")||!u.bytes("graph")))return{files:l.length,capped:s.capped}}function IT(e){let t,n,r,o,s=!1,a=!1;for(let l=0;l");return{defaultRepo:t,serverInfo:n?{name:n}:void 0,maxResponseBytes:r,profile:o,watch:s,...a?{trustLspConfig:a}:{}}}var TT=new Set(["--repo","--out","--project-root","--include","--exclude","--scope","--ignore-dir","--max-files","--max-bytes","--max-calls","--max-hits","--timeout-ms","--budget-tokens","--min-files","--min-count","--since","--min-together","--max-commit-files","--config","--limit","--server-name","--tools","--workers","--index","--max-response-bytes","--base","--fail-on","--depth","--kind","--rank","--direction","--lang","--why","--kinds"]);function $T(e){let t=[],n=0;for(;n=e.length?e:[e[n],...t,...e.slice(n+1)]}async function FT(e){let t=$T(e),[n,...r]=t;if(!n||n==="help"||n==="--help"||n==="-h"){O.stdout.write(Sc);return}if(n==="version"||n==="--version"){O.stdout.write(Te+` -`);return}if(n==="rewrite"){let S=e.slice(e.indexOf("rewrite")+1);if(S.length!==1){O.stderr.write(`codeindex: rewrite takes the command line as ONE argument: codeindex rewrite '' -`),O.exitCode=1;return}let{rewriteCommand:w}=await Promise.resolve().then(()=>(Qf(),Wb)),E=w(S[0],"codeindex",O.cwd());if(!E){O.exitCode=1;return}O.stdout.write(E+` -`);return}if(n==="mcp"){let{runMcpServer:S}=await Promise.resolve().then(()=>(Vf(),Ob));await S(IT(r));return}if(!(n in qo)){let S=tm(n,Object.keys(qo));O.stderr.write(`unknown command: ${n}${S?` (did you mean ${S}?)`:""} +`,tm=new Set(["--repo","--out","--include","--exclude","--scope","--no-gitignore","--ignore-dir","--max-files","--max-bytes","--max-calls","--no-ast","--workers","--index","--no-index-cache","--full-hash"]),Vo={index:{flags:[],positionals:0},scan:{flags:["--why","--skipped"],positionals:0},status:{flags:["--check"],positionals:0},graph:{flags:[],positionals:0},symbols:{flags:[],positionals:0},scip:{flags:["--project-root"],positionals:0},callers:{flags:["--lsp","--trust-lsp-config","--recall","--raw","--with-caller"],positionals:1},hierarchy:{flags:[],positionals:1},implementations:{flags:[],positionals:1},callgraph:{flags:["--depth","--direction"],positionals:1},callpath:{flags:["--depth","--limit","--files","--include-inferred"],positionals:2},find:{flags:["--substring","--include-body","--concise","--limit"],positionals:1},refs:{flags:["--lsp","--trust-lsp-config","--concise"],positionals:1},outline:{flags:["--concise"],positionals:1},"symbol-at":{flags:[],positionals:1},workspaces:{flags:["--check"],positionals:0},churn:{flags:["--since"],positionals:0},grep:{flags:["--ignore-case","--max-hits","--files-with-matches","--timeout-ms"],positionals:1},search:{flags:["--limit","--no-fuzzy","--exact","--explain","--rank","--semantic"],positionals:1},embed:{flags:["--run"],positionals:1},lsp:{flags:["--probe","--trust-lsp-config"],positionals:1},grammars:{flags:[],positionals:1},rules:{flags:["--config"],positionals:0},repomap:{flags:["--budget-tokens"],positionals:0},hotspots:{flags:["--since","--limit"],positionals:0},coupling:{flags:["--since","--limit","--min-together","--max-commit-files","--hidden"],positionals:0},literals:{flags:["--min-files","--min-count","--include-tests"],positionals:0},deadcode:{flags:["--kinds","--include-tail","--limit"],positionals:0},complexity:{flags:["--limit"],positionals:1},risk:{flags:["--since","--limit"],positionals:0},delta:{flags:["--base","--staged","--depth","--json","--fail-on"],positionals:0},impact:{flags:["--depth","--include-inferred"],positionals:1},neighbors:{flags:["--depth","--kind"],positionals:1},resolution:{flags:["--lang","--limit"],positionals:0},mermaid:{flags:[],positionals:1}},S$={"-i":"--ignore-case","-l":"--files-with-matches","-o":"--out","-h":"--help","-v":"--version"};function k$(e,t){let n=Array.from({length:t.length+1},(r,o)=>o);for(let r=1;r<=e.length;r++){let o=[r];for(let s=1;s<=t.length;s++)o[s]=Math.min(n[s]+1,o[s-1]+1,n[s-1]+(e[r-1]===t[s-1]?0:1));n=o}return n[t.length]}function nm(e,t){let n,r=1/0;for(let o of[...t].sort()){let s=k$(e,o);snew Set([...tm,...Object.values(Vo).flatMap(e=>e.flags)]);function zb(e){let t=S$[e]??nm(e,E$());return new Error(`unknown flag: ${e}${t?` (did you mean ${t}?)`:""}`)}function v$(e,t){let n=Vo[e];if(n){for(let r of t.given){if(tm.has(r)||n.flags.includes(r))continue;let o=nm(r,n.flags);throw new Error(`${r} does not apply to ${e}`+(o?` (did you mean ${o}?)`:n.flags.length?` (it takes ${n.flags.join(", ")})`:"")+` \u2014 codeindex ${e} --help`)}if(t.positionals.length>n.positionals){let r=t.positionals[n.positionals];throw new Error(n.positionals===0?`${e} takes no argument, got "${r}" \u2014 codeindex ${e} --help`:`unexpected argument "${r}": ${e} takes ${n.positionals===1?"one":n.positionals} \u2014 codeindex ${e} --help`)}}}function R$(e){let t=kc.split(` +`),n=l=>{let c=[t[l]];for(let d=l+1;dl.startsWith(` ${e} `)),o=Vo[e],s=[`codeindex ${e}`,"",...r===-1?[]:n(r)],a=(o?.flags??[]).flatMap(l=>{let c=t.findIndex(d=>d.startsWith(` ${l} `)||d===` ${l}`);return c===-1?[]:n(c)});return a.length&&s.push("","Flags:",...a),s.push("",`Global flags: ${[...tm].join(", ")} (codeindex --help)`,""),s.join(` +`)}function C$(e){let t={repo:F.cwd(),include:[],exclude:[],gitignore:!0,ignoreDirs:[],noAst:!1,fuzzy:!0,semantic:!1,positionals:[],given:[]};for(let n=0;n{let l=e[++n];if(l===void 0)throw new Error(`missing value for ${r}`);return l},s=()=>{let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<=0)throw new Error(`${r} expects a positive whole number, got "${l}"`);return c},a=()=>{let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<=0)throw new Error(`${r} expects a positive number, a whole one, got "${l}"`);return c};if(r.startsWith("--")&&r!=="--"&&t.given.push(r),r==="--repo")t.repo=le(o());else if(r==="--out"){let l=o();t.out=l==="-"?"-":le(l)}else if(r==="--project-root")t.projectRoot=o();else if(r==="--include")t.include.push(o());else if(r==="--exclude")t.exclude.push(o());else if(r==="--scope")t.scope=o();else if(r==="--no-gitignore")t.gitignore=!1;else if(r==="--ignore-dir")t.ignoreDirs.push(o().replace(/(.)[\\/]+$/,"$1"));else if(r==="--max-files")t.maxFiles=a();else if(r==="--max-bytes")t.maxBytes=a();else if(r==="--max-calls")t.maxCalls=a();else if(r==="--ignore-case")t.ignoreCase=!0;else if(r==="--max-hits")t.maxHits=s();else if(r==="--timeout-ms")t.timeoutMs=a();else if(r==="--files-with-matches")t.filesWithMatches=!0;else if(r==="--budget-tokens")t.budgetTokens=a();else if(r==="--min-files")t.minFiles=a();else if(r==="--min-count")t.minCount=a();else if(r==="--include-tests")t.includeTests=!0;else if(r==="--include-inferred")t.includeInferred=!0;else if(r==="--include-tail")t.includeTail=!0;else if(r==="--kinds"){let l=o();if(l!=="callable"&&l!=="all")throw new Error(`--kinds expects callable|all, got "${l}"`);t.kinds=l}else if(r==="--no-ast")t.noAst=!0;else if(r==="--index")t.indexDir=o();else if(r==="--no-index-cache")t.noIndexCache=!0;else if(r==="--full-hash")t.fullHash=!0;else if(r==="--check")t.check=!0;else if(r==="--why")t.why=o();else if(r==="--skipped")t.skipped=!0;else if(r==="--workers"){let l=o(),c=l.trim()===""?NaN:Number(l);if(!Number.isInteger(c)||c<0)throw new Error(`--workers expects a non-negative integer, got "${l}"`);t.workers=c}else if(r==="--since")t.since=o();else if(r==="--min-together")t.minTogether=a();else if(r==="--max-commit-files")t.maxCommitFiles=a();else if(r==="--hidden")t.hidden=!0;else if(r==="--config")t.config=o();else if(r==="--limit")t.limit=s();else if(r==="--no-fuzzy")t.fuzzy=!1;else if(r==="--exact")t.exact=!0;else if(r==="--explain")t.explain=!0;else if(r==="--semantic")t.semantic=!0;else if(r==="--lsp")t.lsp=!0;else if(r==="--trust-lsp-config")t.trustLspConfig=!0;else if(r==="--recall")t.recall=!0;else if(r==="--raw")t.raw=!0;else if(r==="--run")t.run=!0;else if(r==="--probe")t.probe=!0;else if(r==="--base")t.base=o();else if(r==="--staged")t.staged=!0;else if(r==="--depth")t.depth=a();else if(r==="--kind"){let l=o(),c=l.split(",").map(u=>u.trim()).filter(Boolean),d=c.filter(u=>!Ts.includes(u));if(!c.length||d.length)throw new Error(`--kind expects a comma-separated list of ${Ts.join("|")}, got "${d.join(",")||l}"`);t.kind=c.join(",")}else if(r==="--rank"){let l=o();if(l!=="graph"&&l!=="lexical")throw new Error(`--rank expects graph|lexical, got "${l}"`);t.rank=l}else if(r==="--direction"){let l=o();if(l!=="out"&&l!=="in"&&l!=="both")throw new Error(`--direction expects out|in|both, got "${l}"`);t.direction=l}else if(r==="--json")t.json=!0;else if(r==="--fail-on"){let l=o().toUpperCase();if(l!=="HIGH"&&l!=="MEDIUM"&&l!=="LOW")throw new Error(`--fail-on expects HIGH, MEDIUM or LOW, got "${l}"`);t.failOn=l}else if(r==="--lang")t.lang=o();else if(r==="--substring")t.substring=!0;else if(r==="--include-body")t.includeBody=!0;else if(r==="--concise")t.concise=!0;else if(r==="--files")t.files=!0;else if(r==="--with-caller")t.withCaller=!0;else if(r==="--"){if(t.positional!==void 0)throw new Error(`unexpected "--": the positional is already "${t.positional}"`);let l=o();t.positionals.push(l),t.positional=l}else{if(r.startsWith("-")&&r!=="-")throw zb(r);if(!r.startsWith("--"))t.positionals.push(r),t.positional??=r;else throw zb(r)}}return t}function we(e,t){t&&t!=="-"?En(t,e):F.stdout.write(e)}function En(e,t){try{if(!qn(e).isFile()){it(e,t);return}}catch{}let n=`${e}.tmp-${F.pid}`;try{it(n,t),Rn(n,e);return}catch{Ke(n,{force:!0})}it(e,t)}function M$(e){for(let n of e.ignoreDirs)/[\\/]/.test(n)&&F.stderr.write(`codeindex: warning: --ignore-dir takes a directory name, and "${n}" is a path that matches nothing \u2014 use --exclude '${n}/**' to leave that directory out +`);if(e.scope===void 0)return;let t=nr(e.repo,e.scope);t===".."||t.startsWith("../")||Pe(t)?F.stderr.write(`codeindex: warning: --scope ${e.scope} is outside --repo ${e.repo} \u2014 nothing matches +`):t&&!/[*?[]/.test(t)&&!Q(j(e.repo,t))&&F.stderr.write(`codeindex: warning: --scope ${e.scope} does not exist under ${e.repo} \u2014 nothing matches +`)}function qo(e){let t=e.include.find(n=>!n.includes("/"));F.stderr.write(`codeindex: warning: no file of ${e.repo} was indexed \u2014 check --scope/--include/--exclude and the ignore rules`+(t?` (globs are rooted at the repo: '${t}' matches top-level paths only, '**/${t}' any depth)`:"")+` +`)}function Xt(e,t){return{include:e.include.length?e.include:void 0,exclude:e.exclude.length?e.exclude:void 0,scope:e.scope,gitignore:e.gitignore,ignoreDirs:e.ignoreDirs.length?e.ignoreDirs:void 0,maxFiles:e.maxFiles,maxBytes:e.maxBytes,maxCallsPerFile:e.maxCalls,fullHash:e.fullHash,out:zt(e.repo,e.indexDir),precomputedWalk:t}}var Hb=e=>e==="HIGH"?2:e==="MEDIUM"?1:0,A$=new Set(["grep","churn","workspaces","grammars"]),I$=new Set(["scan","status"]),$$={absent:"no cache.json there",unreadable:"cache.json cannot be read",corrupt:"cache.json is not a valid index",schema:"written for another schema version",extractor:"written by another extractor version"};function T$(e,t,n,r,o){let s=su(e,t,De,r);if(!s)return;let{fresh:a,walked:l,drift:c}=s,d=l.map(f=>({kind:mt(f.rel,f.ext),ext:f.ext}));if(c.unchanged!==l.length||c.indexed!==l.length||a.meta.commit!==s.commit||!Kd(a.meta.extraction,Jd(d,n,De))||!o(a.meta.embed))return;let u=Or(e,{contentUnchanged:!0,commit:s.commit},a.meta,r);if(!(!u?.bytes("symbols")||!u.bytes("graph")))return{files:l.length,capped:s.capped}}function F$(e){let t,n,r,o,s=!1,a=!1;for(let l=0;l");return{defaultRepo:t,serverInfo:n?{name:n}:void 0,maxResponseBytes:r,profile:o,watch:s,...a?{trustLspConfig:a}:{}}}var O$=new Set(["--repo","--out","--project-root","--include","--exclude","--scope","--ignore-dir","--max-files","--max-bytes","--max-calls","--max-hits","--timeout-ms","--budget-tokens","--min-files","--min-count","--since","--min-together","--max-commit-files","--config","--limit","--server-name","--tools","--workers","--index","--max-response-bytes","--base","--fail-on","--depth","--kind","--rank","--direction","--lang","--why","--kinds"]);function N$(e){let t=[],n=0;for(;n=e.length?e:[e[n],...t,...e.slice(n+1)]}async function P$(e){let t=N$(e),[n,...r]=t;if(!n||n==="help"||n==="--help"||n==="-h"){F.stdout.write(kc);return}if(n==="version"||n==="--version"){F.stdout.write(Ie+` +`);return}if(n==="rewrite"){let x=e.slice(e.indexOf("rewrite")+1);if(x.length!==1){F.stderr.write(`codeindex: rewrite takes the command line as ONE argument: codeindex rewrite '' +`),F.exitCode=1;return}let{rewriteCommand:w}=await Promise.resolve().then(()=>(em(),Ub)),E=w(x[0],"codeindex",F.cwd());if(!E){F.exitCode=1;return}F.stdout.write(E+` +`);return}if(n==="mcp"){let{runMcpServer:x}=await Promise.resolve().then(()=>(Jf(),Pb));await x(F$(r));return}if(!(n in Vo)){let x=nm(n,Object.keys(Vo));F.stderr.write(`unknown command: ${n}${x?` (did you mean ${x}?)`:""} -${Sc}`),O.exitCode=2;return}let o=r.indexOf("--");if((o===-1?r:r.slice(0,o)).some(S=>S==="--help"||S==="-h")){O.stdout.write(kT(n));return}let s=ET(r);if(ST(n,s),(n==="index"||n==="embed"&&s.positional==="build")&&s.out==="-")throw new Error(`${n==="index"?"index":"embed build"} writes files: --out needs a directory, not "-"`);if(!ne(s.repo))throw new Error(`--repo path does not exist: ${s.repo}`);if(!Ae(s.repo).isDirectory())throw new Error(`--repo path is not a directory: ${s.repo}`);vT(s);let a=(!RT.has(n)||n==="workspaces"&&s.check===!0)&&!(n==="embed"&&s.positional!=="build"),l=()=>Xe(s.repo,$r(s.repo,Xt(s))),c;a&&!s.noAst&&!CT.has(n)&&n!=="delta"&&(c=l());let d=!1,u=async()=>{d||s.noAst||!c||(await on(Bt(c.files.map(S=>S.ext))),d=!0)},f=s.indexDir??Je,m=!1,p,g,h=!1,_=S=>(S.files.length===0&&!h&&(h=!0,Go(s)),S),y=async()=>{if(p)return p;if(m)return g;if(m=!0,!s.noIndexCache)return p=Ha(s.repo,{...Xt(s,c),workers:s.workers,ast:!s.noAst},u,f).then(S=>{if(S)g={scan:_(S.scan),arts:S.arts,loadArtifacts:S.loadArtifacts,artifacts:S.artifacts};else if(s.indexDir!==void 0){let w=Di(s.repo,f),E=MT["unusable"in w?w.unusable:"unreadable"];O.stderr.write(`codeindex: no usable index at ${zt(s.repo,f)} (${E}) \u2014 building from scratch -`)}return g}),p},b,x=async()=>{let S=(await y())?.scan;return S||(b??=u().then(()=>yn(s.repo,{...Xt(s,c),workers:s.workers}).then(_)))},k,v=async()=>{let S=await y();return S?.arts?S.arts:S?S.arts??=S.loadArtifacts?.()??Ln(S.scan,Xt(s,c)):k??=x().then(w=>Ln(w,Xt(s,c)))},T=!1,F,R=()=>{if(!T){T=!0;let S=s.noIndexCache?void 0:hh(s.repo,{...Xt(s,c),ast:!s.noAst},f);S?.fileCount===0&&!h&&(h=!0,Go(s)),F=S?.artifacts}return F},C=async()=>{let S=R()?.graph();if(S)return S;let w=await y();return w?.arts?.graph??w?.artifacts?.graph()??(await v()).graph},A=async S=>R()?.bytes(S)??(await y())?.artifacts?.bytes(S);if(n==="index"){if(!s.out)throw new Error("index needs --out ");let S=s.out;Zt(S,{recursive:!0});let w=j(S,"cache.json");await u();let E=Dn(s.repo),{model:P,error:N}=Jr(E);N&&O.stderr.write(`codeindex: ${N} \u2014 embeddings.bin skipped; re-run \`codeindex embed pull\` -`);let L=j(S,"graph.json"),H=j(S,"symbols.json"),Y=j(S,"embeddings.bin"),oe=K=>{try{return Re(ie(K))}catch{return}},ge=K=>!P||K!==void 0&&K.embedVersion===Jt&&K.modelId===P.modelId&&K.sha1!==void 0&&oe(Y)===K.sha1,Se=s.noIndexCache||s.fullHash?void 0:AT(s.repo,{...Xt(s,c),out:S},s.maxCalls,S,ge);if(Se){Se.files===0&&Go(s),O.stderr.write(`codeindex: ${Se.files} files \u2192 ${S}/graph.json + symbols.json${Se.capped?" (capped)":""} (unchanged \u2014 artifacts reused) -`);return}let Ce=s.noIndexCache?void 0:Li(s.repo,S),U=Ce?.meta??{},B=Ce&&Fi(Ce.cacheMap,Ce.meta.extraction,{maxCallsPerFile:s.maxCalls,ast:Le}),G=await yn(s.repo,{...Xt(s,c),cache:B,out:S,workers:s.workers}),ee=Vd(G.files,s.maxCalls,Le);G.files.length===0&&Go(s);let ce=j(S,Qd),ke=K=>{let J;try{J=Ae(w)}catch{return}let X=gh(G,K,ee,{size:J.size,mtimeMs:J.mtimeMs}),V;try{V=ie(ce,"utf8")}catch{V=void 0}V!==X&&Sn(ce,X)},rt=K=>{let J=Object.create(null);for(let X of G.files){let V={hash:X.hash,record:X,size:X.size},te=G.mtimes.get(X.rel);te!==void 0&&(V.mtimeMs=te),J[X.rel]=V}Sn(w,JSON.stringify({schemaVersion:5,extractorVersion:17,engineVersion:Te,commit:G.commit,graphSha1:K.graphSha1,symbolsSha1:K.symbolsSha1,embed:K.embed,extraction:ee,files:J})+` -`),ke(K)},_e=ge(U.embed)?Fr(s.repo,G,U,S):void 0,me=_e?.bytes("symbols")!==void 0,he=me&&_e.bytes("graph")!==void 0,Z=me&&!he&&U.commit!==G.commit?_e.graph():void 0;if(he)G.cacheDirty||!Jd(Ce?.meta.extraction,ee)?rt(U):ke(U),O.stderr.write(`codeindex: ${G.files.length} files \u2192 ${S}/graph.json + symbols.json${G.capped?" (capped)":""} (unchanged \u2014 artifacts reused) -`);else if(Z){let K=qr(Z);Sn(L,K),rt({graphSha1:Re(K),symbolsSha1:U.symbolsSha1,embed:U.embed}),O.stderr.write(`codeindex: ${G.files.length} files \u2192 ${S}/graph.json + symbols.json${G.capped?" (capped)":""} (unchanged at a new commit \u2014 graph.json restamped, symbols.json reused) -`)}else{let{graph:K,symbols:J,notes:X}=Ln(G);for(let Ve of X??[])O.stderr.write(`codeindex: note: ${Ve} -`);let V=qr(K),te=Za(J);Sn(L,V),Sn(H,te);let de="",it;if(P){let Ve=Xr(G,P,{previous:ss(Y)}),cs=po(Ve);Sn(Y,cs),it={embedVersion:Jt,modelId:P.modelId,sha1:Re(cs)},de=` + embeddings.bin (${Ve.records.length} records, model ${P.modelId})`}rt({graphSha1:Re(V),symbolsSha1:Re(te),embed:it}),O.stderr.write(`codeindex: ${G.files.length} files \u2192 ${S}/graph.json + symbols.json${de}${G.capped?" (capped)":""} -`);for(let Ve of[...new Set(ln(G).warnings)].sort())O.stderr.write(`codeindex: warning: ${Ve} -`)}}else if(n==="scan"){if(s.why!==void 0&&s.skipped)throw new Error("scan takes --why or --skipped, not both");if(s.why!==void 0)we(JSON.stringify(Gd(s.repo,s.why,Xt(s)),null,2)+` -`,s.out);else{let S=[],w=Ti(s.repo,{...Xt(s),onSkip:E=>S.push(E)});if(w.fileCount===0&&Go(s),s.skipped)we(JSON.stringify(S.sort(xr(E=>E.rel)),null,2)+` -`,s.out);else{let E={engineVersion:Te,commit:w.commit,fileCount:w.fileCount,languages:w.languages,capped:w.capped,excluded:w.excluded,skipped:ja(S)};we(JSON.stringify(E,null,2)+` -`,s.out)}}}else if(n==="status"){let S=ji(s.repo,{...Xt(s),ast:!s.noAst},f);we(JSON.stringify(S,null,2)+` -`,s.out),s.check&&!S.artifactsFresh&&(O.exitCode=1)}else if(n==="graph")we(await A("graph")??qr(await C()),s.out);else if(n==="symbols")we(await A("symbols")??Za((await v()).symbols),s.out);else if(n==="scip"){let S=await x(),w=lf(S,{projectRoot:s.projectRoot}),E=s.out??ae("index.scip");E==="-"?O.stdout.write(W.from(w)):(Sn(E,w),O.stderr.write(`codeindex: SCIP index \u2192 ${E} (${w.length} bytes) -`))}else if(n==="callers"){if(s.lsp&&!s.positional)throw new Error("callers --lsp requires a symbol: callers --lsp");if(s.raw&&(s.lsp||s.recall))throw new Error("callers --raw lists call sites before any binding: it takes neither --lsp nor --recall");if(s.raw&&s.withCaller)throw new Error("callers --raw already names each site's enclosing symbol: it takes no --with-caller");let S=await x(),w=s.positional;if(s.raw)if(w){let E=gl(S,w),P=pr(S,E.name,{calls:!0});we(JSON.stringify(P?{...E,coverage:P}:E,null,2)+` -`,s.out)}else{let E={};for(let[P,N]of Fu(S))E[P]=N;we(JSON.stringify(E,null,2)+` -`,s.out)}else if(w){let E=my(S,py(w),{recall:s.recall}),P=dl(E,w),L=(P&&s.withCaller?ro(S,P):P)??hl(S,w,E);if(!L){let ge=ur(S,w).length;throw new Error(`no symbol named "${w}" in the index`+(ge?` (${ge} call site(s) use the name; \`callers --raw ${w}\` lists them)`:"")+rc(S,w))}let H=Nt(S,w)?.reading,Y=s.lsp?await Ks(S,s.repo,H?Qa(H):w,L,{trustRepoConfig:s.trustLspConfig}):L,oe=pr(S,H?.name??w,{calls:!0});we(JSON.stringify(oe?{...Y,coverage:oe}:Y,null,2)+` -`,s.out)}else{let E=Hr(S,void 0,{recall:s.recall}),P={};for(let[N,L]of E)P[N]=s.withCaller?ro(S,L):L;we(JSON.stringify(P,null,2)+` -`,s.out)}}else if(n==="hierarchy"){let S=await x(),w=Ps(S);if(s.positional){let E=sr(w,s.positional,Nt(S,s.positional)?.defs);if(!E)throw new Error(`no type named ${s.positional}`);we(JSON.stringify(E,null,2)+` -`,s.out)}else{let E={};for(let[P,N]of w)E[P]=N;we(JSON.stringify(E,null,2)+` -`,s.out)}}else if(n==="implementations"){if(!s.positional)throw new Error("implementations needs a type name: cli.mjs implementations --repo ");let S=await x(),w=Ps(S),E=Nt(S,s.positional)?.defs;if(!sr(w,s.positional,E))throw new Error(`no type named ${s.positional}`);we(JSON.stringify({name:s.positional,implementations:Gi(w,s.positional,E)},null,2)+` -`,s.out)}else if(n==="callgraph"){if(!s.positional)throw new Error("callgraph needs a symbol: cli.mjs callgraph --repo ");let S=await x(),w=Ls(S),E=Vi(w,s.positional,{...s.depth!==void 0?{depth:s.depth}:{},...s.direction?{direction:s.direction}:{}});if(!E.root.length)throw new Error(`no symbol named ${s.positional}`);we(JSON.stringify(E,null,2)+` -`,s.out)}else if(n==="find"||n==="refs"||n==="outline"){if(!s.positional){let E={find:"find ",refs:"refs ",outline:"outline "}[n];throw new Error(`${n} needs an argument: cli.mjs ${E} --repo `)}if(s.lsp&&n!=="refs")throw new Error("--lsp applies to `callers ` and `refs ` only");let S=await x(),w;if(n==="find"){if(w=_n(S,s.positional,{substring:s.substring,includeBody:s.includeBody,concise:s.concise,maxResults:s.limit}),Array.isArray(w)&&!w.length){let E=nc(S,s.positional.replace(/@.*$/,"").replace(/^.*[#/]/,""));E.length&&O.stderr.write(`codeindex: not indexed for size but naming it: ${E.map(P=>`${P.file} (${P.size} bytes)`).join(", ")}; re-index with --max-bytes ${Math.max(...E.map(P=>P.size))} -`)}}else if(n==="refs"){let E=so(S,s.positional),P=Nt(S,s.positional)?.reading.name??s.positional,N=s.lsp?await Ro(S,s.repo,P,E,{trustRepoConfig:s.trustLspConfig}):E,L=s.concise?sc(N):N,H=pr(S,P,{calls:!0});w=H?{...L,coverage:H}:L}else{let E=new Set(S.files.map(L=>L.rel)),P=ns(s.repo,s.positional,L=>E.has(L));if(P===void 0)throw new Error(rs(S,s.repo,s.positional)??`no such file in the index: ${s.positional}`);let N=no(S,P);w=s.concise?N.map(L=>gr(L,L.name)):N}we(JSON.stringify(w,null,2)+` -`,s.out)}else if(n==="callpath"){let[S,w]=s.positionals;if(!S||!w)throw new Error("callpath needs two arguments: cli.mjs callpath --repo (--files: two file paths)");if(s.includeInferred&&!s.files)throw new Error("--include-inferred applies to `impact` and `callpath --files` only");let E={depth:s.depth,maxPaths:s.limit},P;if(s.files){let{graph:N}=await v(),L=new Set(N.files.map(oe=>oe.rel)),[H,Y]=[S,w].map(oe=>{let ge=ns(s.repo,oe,Se=>L.has(Se));if(ge===void 0)throw new Error(`no such file in the index: ${oe}`);return ge});P=rl(N,H,Y,{...E,includeInferred:s.includeInferred})}else{let N=el(Ls(await x()),S,w,E);if(!N.from.length)throw new Error(`no symbol named ${S}`);if(!N.to.length)throw new Error(`no symbol named ${w}`);P=N}we(JSON.stringify(P,null,2)+` -`,s.out)}else if(n==="symbol-at"){let S=s.positional?/^(.+?):(\d+)(?::\d+)?$/.exec(s.positional):null;if(!S||Number(S[2])<1)throw new Error("symbol-at needs : cli.mjs symbol-at src/a.ts:42 --repo ");let w=await x(),E=new Set(w.files.map(N=>N.rel)),P=ns(s.repo,S[1],N=>E.has(N));if(P===void 0)throw new Error(rs(w,s.repo,S[1])??`no such file in the index: ${S[1]}`);we(JSON.stringify(pl(w,P,Number(S[2])),null,2)+` -`,s.out)}else if(n==="search"){if(!s.positional)throw new Error('search needs a query: cli.mjs search "" --repo ');let S=await x(),w={limit:s.limit,fuzzy:s.fuzzy,...s.exact?{exact:!0}:{},...s.rank?{rank:s.rank}:{}},E=({results:N,explain:L})=>{we(JSON.stringify(s.explain?{results:N,explain:L}:N,null,2)+` -`,s.out),L.note&&O.stderr.write(`codeindex: ${L.note} -`)},P=()=>E(Gt(S,s.positional,w));if(s.semantic){let N=mr();if(N){let L;try{let H=ne(j(zt(s.repo,f),"cache.json"))?j(zt(s.repo,f),"embed-cache",`endpoint-${Re(Il(N)).slice(0,12)}.bin`):void 0,Y=H?await yf():void 0,oe=H?ss(H):void 0,ge=await yo(S,{previous:oe,modelId:Y});H&&!C_(oe,ge)&&wb(H,po(ge));let Se=await ho(s.positional);L=fr(S,s.positional,ge,{...w,queryVec:Se})}catch(H){O.stderr.write(`codeindex: embedding endpoint ${N} unavailable (${H instanceof Error?H.message:H}) \u2014 returning lexical results -`)}L?E(L):P()}else{let{model:L,error:H}=Jr(Dn(s.repo));if(!L)O.stderr.write(H?`codeindex: semantic search unavailable (${H}) \u2014 returning lexical results; re-run \`codeindex embed pull\` to replace the model -`:"codeindex: semantic search unavailable (no embedding model or endpoint) \u2014 returning lexical results; run `codeindex embed pull` or set CODEINDEX_EMBED_ENDPOINT to enable it\n"),P();else{let Y=ss(j(zt(s.repo,f),"embeddings.bin")),oe=Xr(S,L,{previous:Y});E(fr(S,s.positional,oe,{...w,model:L}))}}}else P()}else if(n==="embed"){let S=s.positional,w=Dn(s.repo);if(S==="status"){let{model:E,error:P}=Jr(w),N=mr(),H={embedVersion:Jt,mode:N?"endpoint":E?"static":"none",model:E?{present:!0,dir:w,modelId:E.modelId,dim:E.dim,vocabSize:E.vocabSize}:P?{present:!0,dir:w,error:P}:{present:!1},endpoint:N??null};N&&(H.endpointReachable=await go(N)),we(JSON.stringify(H,null,2)+` -`,s.out)}else if(S==="serve"){let E=["run","-d","-p","8756:8756","ghcr.io/maxgfr/codeindex-embed:latest"],P=`docker ${E.join(" ")}`;if(!Yt("docker")){O.stderr.write(`codeindex: docker not found on PATH. Install Docker, then run: - `+P+` -`),O.exitCode=1;return}if(s.run){O.stderr.write(`codeindex: starting embedding server \u2192 ${P} -`);let N=$e("docker",E);if(N.stdout.trim()&&O.stdout.write(N.stdout.trim()+` -`),!N.ok){O.stderr.write(N.stderr||`codeindex: docker run failed -`),O.exitCode=1;return}O.stderr.write(`codeindex: server starting on http://localhost:8756 \u2014 then: +${kc}`),F.exitCode=2;return}let o=r.indexOf("--");if((o===-1?r:r.slice(0,o)).some(x=>x==="--help"||x==="-h")){F.stdout.write(R$(n));return}let s=C$(r);if(v$(n,s),(n==="index"||n==="embed"&&s.positional==="build")&&s.out==="-")throw new Error(`${n==="index"?"index":"embed build"} writes files: --out needs a directory, not "-"`);if(!Q(s.repo))throw new Error(`--repo path does not exist: ${s.repo}`);if(!Me(s.repo).isDirectory())throw new Error(`--repo path is not a directory: ${s.repo}`);M$(s);let a=(!A$.has(n)||n==="workspaces"&&s.check===!0)&&!(n==="embed"&&s.positional!=="build"),l=()=>Xe(s.repo,Fr(s.repo,Xt(s))),c;a&&!s.noAst&&!I$.has(n)&&n!=="delta"&&(c=l());let d=!1,u=async()=>{d||s.noAst||!c||(await an(Bt(c.files.map(x=>x.ext))),d=!0)},f=s.indexDir??Ve,m=!1,p,g,h=!1,_=x=>(x.files.length===0&&!h&&(h=!0,qo(s)),x),y=async()=>{if(p)return p;if(m)return g;if(m=!0,!s.noIndexCache)return p=Ga(s.repo,{...Xt(s,c),workers:s.workers,ast:!s.noAst},u,f).then(x=>{if(x)g={scan:_(x.scan),arts:x.arts,loadArtifacts:x.loadArtifacts,artifacts:x.artifacts};else if(s.indexDir!==void 0){let w=ji(s.repo,f),E=$$["unusable"in w?w.unusable:"unreadable"];F.stderr.write(`codeindex: no usable index at ${zt(s.repo,f)} (${E}) \u2014 building from scratch +`)}return g}),p},b,S=async()=>{let x=(await y())?.scan;return x||(b??=u().then(()=>bn(s.repo,{...Xt(s,c),workers:s.workers}).then(_)))},k,R=async()=>{let x=await y();return x?.arts?x.arts:x?x.arts??=x.loadArtifacts?.()??jn(x.scan,Xt(s,c)):k??=S().then(w=>jn(w,Xt(s,c)))},I=!1,P,v=()=>{if(!I){I=!0;let x=s.noIndexCache?void 0:yh(s.repo,{...Xt(s,c),ast:!s.noAst},f);x?.fileCount===0&&!h&&(h=!0,qo(s)),P=x?.artifacts}return P},C=async()=>{let x=v()?.graph();if(x)return x;let w=await y();return w?.arts?.graph??w?.artifacts?.graph()??(await R()).graph},M=async x=>v()?.bytes(x)??(await y())?.artifacts?.bytes(x);if(n==="index"){if(!s.out)throw new Error("index needs --out ");let x=s.out;Yt(x,{recursive:!0});let w=j(x,"cache.json");await u();let E=Wn(s.repo),{model:N,error:O}=Kr(E);O&&F.stderr.write(`codeindex: ${O} \u2014 embeddings.bin skipped; re-run \`codeindex embed pull\` +`);let L=j(x,"graph.json"),G=j(x,"symbols.json"),X=j(x,"embeddings.bin"),oe=ne=>{try{return Re(ie(ne))}catch{return}},ue=ne=>!N||ne!==void 0&&ne.embedVersion===Jt&&ne.modelId===N.modelId&&ne.sha1!==void 0&&oe(X)===ne.sha1,ve=s.noIndexCache||s.fullHash?void 0:T$(s.repo,{...Xt(s,c),out:x},s.maxCalls,x,ue);if(ve){ve.files===0&&qo(s),F.stderr.write(`codeindex: ${ve.files} files \u2192 ${x}/graph.json + symbols.json${ve.capped?" (capped)":""} (unchanged \u2014 artifacts reused) +`);return}let Oe=s.noIndexCache?void 0:Di(s.repo,x),z=Oe?.meta??{},U=Oe&&Oi(Oe.cacheMap,Oe.meta.extraction,{maxCallsPerFile:s.maxCalls,ast:De}),q=await bn(s.repo,{...Xt(s,c),cache:U,out:x,workers:s.workers}),te=Jd(q.files,s.maxCalls,De);q.files.length===0&&qo(s);let ae=j(x,eu),ge=ne=>{let V;try{V=Me(w)}catch{return}let Z=hh(q,ne,te,{size:V.size,mtimeMs:V.mtimeMs}),B;try{B=ie(ae,"utf8")}catch{B=void 0}B!==Z&&En(ae,Z)},st=ne=>{let V=Object.create(null);for(let Z of q.files){let B={hash:Z.hash,record:Z,size:Z.size},K=q.mtimes.get(Z.rel);K!==void 0&&(B.mtimeMs=K),V[Z.rel]=B}En(w,JSON.stringify({schemaVersion:5,extractorVersion:17,engineVersion:Ie,commit:q.commit,graphSha1:ne.graphSha1,symbolsSha1:ne.symbolsSha1,embed:ne.embed,extraction:te,files:V})+` +`),ge(ne)},he=ue(z.embed)?Or(s.repo,q,z,x):void 0,fe=he?.bytes("symbols")!==void 0,ye=fe&&he.bytes("graph")!==void 0,at=fe&&!ye&&z.commit!==q.commit?he.graph():void 0;if(ye)q.cacheDirty||!Kd(Oe?.meta.extraction,te)?st(z):ge(z),F.stderr.write(`codeindex: ${q.files.length} files \u2192 ${x}/graph.json + symbols.json${q.capped?" (capped)":""} (unchanged \u2014 artifacts reused) +`);else if(at){let ne=Vr(at);En(L,ne),st({graphSha1:Re(ne),symbolsSha1:z.symbolsSha1,embed:z.embed}),F.stderr.write(`codeindex: ${q.files.length} files \u2192 ${x}/graph.json + symbols.json${q.capped?" (capped)":""} (unchanged at a new commit \u2014 graph.json restamped, symbols.json reused) +`)}else{let{graph:ne,symbols:V,notes:Z}=jn(q);for(let Se of Z??[])F.stderr.write(`codeindex: note: ${Se} +`);let B=Vr(ne),K=Ya(V);En(L,B),En(G,K);let se="",Ne;if(N){let Se=Zr(q,N,{previous:is(X)}),Zt=go(Se);En(X,Zt),Ne={embedVersion:Jt,modelId:N.modelId,sha1:Re(Zt)},se=` + embeddings.bin (${Se.records.length} records, model ${N.modelId})`}st({graphSha1:Re(B),symbolsSha1:Re(K),embed:Ne}),F.stderr.write(`codeindex: ${q.files.length} files \u2192 ${x}/graph.json + symbols.json${se}${q.capped?" (capped)":""} +`);for(let Se of[...new Set(cn(q).warnings)].sort())F.stderr.write(`codeindex: warning: ${Se} +`)}}else if(n==="scan"){if(s.why!==void 0&&s.skipped)throw new Error("scan takes --why or --skipped, not both");if(s.why!==void 0)we(JSON.stringify(qd(s.repo,s.why,Xt(s)),null,2)+` +`,s.out);else{let x=[],w=Ti(s.repo,{...Xt(s),onSkip:E=>x.push(E)});if(w.fileCount===0&&qo(s),s.skipped)we(JSON.stringify(x.sort(Sr(E=>E.rel)),null,2)+` +`,s.out);else{let E={engineVersion:Ie,commit:w.commit,fileCount:w.fileCount,languages:w.languages,capped:w.capped,excluded:w.excluded,skipped:Wa(x)};we(JSON.stringify(E,null,2)+` +`,s.out)}}}else if(n==="status"){let x=Wi(s.repo,{...Xt(s),ast:!s.noAst},f);we(JSON.stringify(x,null,2)+` +`,s.out),s.check&&!x.artifactsFresh&&(F.exitCode=1)}else if(n==="graph")we(await M("graph")??Vr(await C()),s.out);else if(n==="symbols")we(await M("symbols")??Ya((await R()).symbols),s.out);else if(n==="scip"){let x=await S(),w=cf(x,{projectRoot:s.projectRoot}),E=s.out??le("index.scip");E==="-"?F.stdout.write(W.from(w)):(En(E,w),F.stderr.write(`codeindex: SCIP index \u2192 ${E} (${w.length} bytes) +`))}else if(n==="callers"){if(s.lsp&&!s.positional)throw new Error("callers --lsp requires a symbol: callers --lsp");if(s.raw&&(s.lsp||s.recall))throw new Error("callers --raw lists call sites before any binding: it takes neither --lsp nor --recall");if(s.raw&&s.withCaller)throw new Error("callers --raw already names each site's enclosing symbol: it takes no --with-caller");let x=await S(),w=s.positional;if(s.raw)if(w){let E=hl(x,w),N=hr(x,E.name,{calls:!0});we(JSON.stringify(N?{...E,coverage:N}:E,null,2)+` +`,s.out)}else{let E={};for(let[N,O]of Ou(x))E[N]=O;we(JSON.stringify(E,null,2)+` +`,s.out)}else if(w){let E=py(x,gy(w),{recall:s.recall}),N=ul(E,w),L=(N&&s.withCaller?so(x,N):N)??yl(x,w,E);if(!L){let ue=mr(x,w).length;throw new Error(`no symbol named "${w}" in the index`+(ue?` (${ue} call site(s) use the name; \`callers --raw ${w}\` lists them)`:"")+sc(x,w))}let G=Nt(x,w)?.reading,X=s.lsp?await Ks(x,s.repo,G?el(G):w,L,{trustRepoConfig:s.trustLspConfig}):L,oe=hr(x,G?.name??w,{calls:!0});we(JSON.stringify(oe?{...X,coverage:oe}:X,null,2)+` +`,s.out)}else{let E=Gr(x,void 0,{recall:s.recall}),N={};for(let[O,L]of E)N[O]=s.withCaller?so(x,L):L;we(JSON.stringify(N,null,2)+` +`,s.out)}}else if(n==="hierarchy"){let x=await S(),w=Ps(x);if(s.positional){let E=or(w,s.positional,Nt(x,s.positional)?.defs);if(!E)throw new Error(`no type named ${s.positional}`);we(JSON.stringify(E,null,2)+` +`,s.out)}else{let E={};for(let[N,O]of w)E[N]=O;we(JSON.stringify(E,null,2)+` +`,s.out)}}else if(n==="implementations"){if(!s.positional)throw new Error("implementations needs a type name: cli.mjs implementations --repo ");let x=await S(),w=Ps(x),E=Nt(x,s.positional)?.defs;if(!or(w,s.positional,E))throw new Error(`no type named ${s.positional}`);we(JSON.stringify({name:s.positional,implementations:qi(w,s.positional,E)},null,2)+` +`,s.out)}else if(n==="callgraph"){if(!s.positional)throw new Error("callgraph needs a symbol: cli.mjs callgraph --repo ");let x=await S(),w=Ls(x),E=Ji(w,s.positional,{...s.depth!==void 0?{depth:s.depth}:{},...s.direction?{direction:s.direction}:{}});if(!E.root.length)throw new Error(`no symbol named ${s.positional}`);we(JSON.stringify(E,null,2)+` +`,s.out)}else if(n==="find"||n==="refs"||n==="outline"){if(!s.positional){let E={find:"find ",refs:"refs ",outline:"outline "}[n];throw new Error(`${n} needs an argument: cli.mjs ${E} --repo `)}if(s.lsp&&n!=="refs")throw new Error("--lsp applies to `callers ` and `refs ` only");let x=await S(),w;if(n==="find"){if(w=wn(x,s.positional,{substring:s.substring,includeBody:s.includeBody,concise:s.concise,maxResults:s.limit}),Array.isArray(w)&&!w.length){let E=rc(x,s.positional.replace(/@.*$/,"").replace(/^.*[#/]/,""));E.length&&F.stderr.write(`codeindex: not indexed for size but naming it: ${E.map(N=>`${N.file} (${N.size} bytes)`).join(", ")}; re-index with --max-bytes ${Math.max(...E.map(N=>N.size))} +`)}}else if(n==="refs"){let E=io(x,s.positional),N=Nt(x,s.positional)?.reading.name??s.positional,O=s.lsp?await Co(x,s.repo,N,E,{trustRepoConfig:s.trustLspConfig}):E,L=s.concise?ic(O):O,G=hr(x,N,{calls:!0});w=G?{...L,coverage:G}:L}else{let E=new Set(x.files.map(L=>L.rel)),N=rs(s.repo,s.positional,L=>E.has(L));if(N===void 0)throw new Error(ss(x,s.repo,s.positional)??`no such file in the index: ${s.positional}`);let O=ro(x,N);w=s.concise?O.map(L=>yr(L,L.name)):O}we(JSON.stringify(w,null,2)+` +`,s.out)}else if(n==="callpath"){let[x,w]=s.positionals;if(!x||!w)throw new Error("callpath needs two arguments: cli.mjs callpath --repo (--files: two file paths)");if(s.includeInferred&&!s.files)throw new Error("--include-inferred applies to `impact` and `callpath --files` only");let E={depth:s.depth,maxPaths:s.limit},N;if(s.files){let{graph:O}=await R(),L=new Set(O.files.map(oe=>oe.rel)),[G,X]=[x,w].map(oe=>{let ue=rs(s.repo,oe,ve=>L.has(ve));if(ue===void 0)throw new Error(`no such file in the index: ${oe}`);return ue});N=sl(O,G,X,{...E,includeInferred:s.includeInferred})}else{let O=tl(Ls(await S()),x,w,E);if(!O.from.length)throw new Error(`no symbol named ${x}`);if(!O.to.length)throw new Error(`no symbol named ${w}`);N=O}we(JSON.stringify(N,null,2)+` +`,s.out)}else if(n==="symbol-at"){let x=s.positional?/^(.+?):(\d+)(?::\d+)?$/.exec(s.positional):null;if(!x||Number(x[2])<1)throw new Error("symbol-at needs : cli.mjs symbol-at src/a.ts:42 --repo ");let w=await S(),E=new Set(w.files.map(O=>O.rel)),N=rs(s.repo,x[1],O=>E.has(O));if(N===void 0)throw new Error(ss(w,s.repo,x[1])??`no such file in the index: ${x[1]}`);we(JSON.stringify(gl(w,N,Number(x[2])),null,2)+` +`,s.out)}else if(n==="search"){if(!s.positional)throw new Error('search needs a query: cli.mjs search "" --repo ');let x=await S(),w={limit:s.limit,fuzzy:s.fuzzy,...s.exact?{exact:!0}:{},...s.rank?{rank:s.rank}:{}},E=({results:O,explain:L})=>{we(JSON.stringify(s.explain?{results:O,explain:L}:O,null,2)+` +`,s.out),L.note&&F.stderr.write(`codeindex: ${L.note} +`)},N=()=>E(Gt(x,s.positional,w));if(s.semantic){let O=gr();if(O){let L;try{let G=Q(j(zt(s.repo,f),"cache.json"))?j(zt(s.repo,f),"embed-cache",`endpoint-${Re($l(O)).slice(0,12)}.bin`):void 0,X=G?await _f():void 0,oe=G?is(G):void 0,ue=await _o(x,{previous:oe,modelId:X});G&&!A_(oe,ue)&&Sb(G,go(ue));let ve=await yo(s.positional);L=pr(x,s.positional,ue,{...w,queryVec:ve})}catch(G){F.stderr.write(`codeindex: embedding endpoint ${O} unavailable (${G instanceof Error?G.message:G}) \u2014 returning lexical results +`)}L?E(L):N()}else{let{model:L,error:G}=Kr(Wn(s.repo));if(!L)F.stderr.write(G?`codeindex: semantic search unavailable (${G}) \u2014 returning lexical results; re-run \`codeindex embed pull\` to replace the model +`:"codeindex: semantic search unavailable (no embedding model or endpoint) \u2014 returning lexical results; run `codeindex embed pull` or set CODEINDEX_EMBED_ENDPOINT to enable it\n"),N();else{let X=is(j(zt(s.repo,f),"embeddings.bin")),oe=Zr(x,L,{previous:X});E(pr(x,s.positional,oe,{...w,model:L}))}}}else N()}else if(n==="embed"){let x=s.positional,w=Wn(s.repo);if(x==="status"){let{model:E,error:N}=Kr(w),O=gr(),G={embedVersion:Jt,mode:O?"endpoint":E?"static":"none",model:E?{present:!0,dir:w,modelId:E.modelId,dim:E.dim,vocabSize:E.vocabSize}:N?{present:!0,dir:w,error:N}:{present:!1},endpoint:O??null};O&&(G.endpointReachable=await ho(O)),we(JSON.stringify(G,null,2)+` +`,s.out)}else if(x==="serve"){let E=["run","-d","-p","8756:8756","ghcr.io/maxgfr/codeindex-embed:latest"],N=`docker ${E.join(" ")}`;if(!Qt("docker")){F.stderr.write(`codeindex: docker not found on PATH. Install Docker, then run: + `+N+` +`),F.exitCode=1;return}if(s.run){F.stderr.write(`codeindex: starting embedding server \u2192 ${N} +`);let O=$e("docker",E);if(O.stdout.trim()&&F.stdout.write(O.stdout.trim()+` +`),!O.ok){F.stderr.write(O.stderr||`codeindex: docker run failed +`),F.exitCode=1;return}F.stderr.write(`codeindex: server starting on http://localhost:8756 \u2014 then: CODEINDEX_EMBED_ENDPOINT=http://localhost:8756 codeindex search "" --repo . --semantic -`)}else O.stdout.write(P+` -`),O.stderr.write('codeindex: run the line above to start the embedding server (or `embed serve --run`), then:\n CODEINDEX_EMBED_ENDPOINT=http://localhost:8756 codeindex search "" --repo . --semantic\n')}else if(S==="build"){if(!s.out)throw new Error("embed build needs --out ");if(!w){O.stderr.write("codeindex: no embedding model present \u2014 run `codeindex embed pull` first (nothing written)\n"),O.exitCode=1;return}let E=Hs(w);Zt(s.out,{recursive:!0});let P=await x(),N=Xr(P,E,{previous:ss(j(s.out,"embeddings.bin"))});Sn(j(s.out,"embeddings.bin"),po(N)),O.stderr.write(`codeindex: ${N.records.length} embedding records \u2192 ${s.out}/embeddings.bin (model ${E.modelId}) -`)}else if(S==="pull"){let{url:E,sha256:P}=ff(),N=O.env.CODEINDEX_EMBED_DIR??j(s.repo,".codeindex","models");Zt(N,{recursive:!0}),O.stderr.write(`codeindex: fetching model from ${E} \u2192 ${j(N,"model.json")} -`);let L;try{L=await x_(E,P)}catch(H){O.stderr.write(`codeindex: pull failed \u2014 ${H instanceof Error?H.message:String(H)} (nothing written) -`),O.exitCode=1;return}try{uf(JSON.parse(L),E)}catch(H){O.stderr.write(`codeindex: pull failed \u2014 response is not a valid model.json (${H instanceof Error?H.message:String(H)}) (nothing written) -`),O.exitCode=1;return}Sn(j(N,"model.json"),L),O.stderr.write(`codeindex: model written to ${j(N,"model.json")} -`)}else throw new Error("embed needs a subcommand: status | build | pull | serve")}else if(n==="lsp"){if(s.positional!=="status")throw new Error("lsp needs a subcommand: status");we(JSON.stringify(await vo(await x(),s.repo,s.probe===!0,{trustRepoConfig:s.trustLspConfig}),null,2)+` -`,s.out)}else if(n==="grammars"){let S=s.positional,w=xs();if(S==="status"){let E=Wt(),P=Se=>E.dirs.some(Ce=>ne(j(Ce,Se))),N=P("web-tree-sitter.wasm"),L=qa(),H=Se=>[...Se].filter(Ce=>P(`${Ce}.wasm`)).sort(),Y=H(Ei),oe=H(ws),ge={engineVersion:Te,tier:E.tier,dir:E.dir??null,dirs:E.dirs,cacheDir:w,runtimePresent:N,pullNeeded:!N,extendedPullNeeded:oe.length!Y.includes(Se)).sort()},extended:{resolved:oe.length,of:ws.size,missing:[...ws].filter(Se=>!oe.includes(Se)).sort()},url:L.url};we(JSON.stringify(ge,null,2)+` -`,s.out)}else if(S==="pull"){let E=await Wi(w,{onNote:P=>O.stderr.write(P)});O.stderr.write(E.message),E.ok||(O.exitCode=1)}else throw new Error("grammars needs a subcommand: status | pull")}else if(n==="rules"){if(!s.config)throw new Error("rules needs --config ");let S=[ae(s.config),ae(s.repo,s.config)].find(L=>ne(L))??ae(s.config),w=Gl(ie(S,"utf8"),S),{scan:E,graph:P}=await v(),N=Vl(Co(P,w,{scan:E}));we(JSON.stringify(N,null,2)+` -`,s.out),N.errors>0&&(O.exitCode=1)}else if(n==="workspaces"){let S=On(s.repo),w=s.check?wl(S,(await v()).graph):void 0;we(JSON.stringify(xl(S,w),null,2)+` -`,s.out),w&&!w.ok&&(O.exitCode=1)}else if(n==="churn"){let S=en(s.repo,{since:s.since}),w=zd(s.repo,Xt(s)),E=w&&(N=>w({rel:N,abs:j(s.repo,N),directory:!1})),P={};for(let N of[...S.churn.keys()].sort())(!E||E(N))&&(P[N]=S.churn.get(N));we(JSON.stringify({ok:S.ok,...pn(S),churn:P},null,2)+` -`,s.out)}else if(n==="repomap"){let S=await C();we(Yr(await x(),S,{budgetTokens:s.budgetTokens}),s.out)}else if(n==="hotspots"){let S=await x(),w=en(s.repo,{since:s.since}),E=Qr(S,w.churn,s.limit);we(JSON.stringify({churnOk:w.ok,...pn(w),hotspots:E},null,2)+` -`,s.out)}else if(n==="coupling"){let{graph:S}=await v(),w=bo(s.repo,{since:s.since,graph:S,hidden:s.hidden,minTogether:s.minTogether,maxCommitFiles:s.maxCommitFiles,maxPairs:s.limit});we(JSON.stringify({ok:w.ok,...pn(w),couplings:w.couplings},null,2)+` -`,s.out)}else if(n==="deadcode"){let S=Ao(await x(),{kinds:s.kinds,includeTail:s.includeTail});we(JSON.stringify(Kl(S,s.limit),null,2)+` -`,s.out)}else if(n==="literals"){let S=Pn(await x(),{minFiles:s.minFiles,minCount:s.minCount,includeTests:s.includeTests});we(JSON.stringify(S,null,2)+` -`,s.out)}else if(n==="complexity"){let S=await x(),w=s.positional;if(w!==void 0){let E=new Set(S.files.map(N=>N.rel)),P=Wn(s.repo,w).find(N=>E.has(N));if(P===void 0)throw new Error(rs(S,s.repo,w)??`no such file in the index: ${w}`);w=P}we(JSON.stringify(Qi(S,w,s.limit),null,2)+` -`,s.out)}else if(n==="risk"){let S=await x(),w=en(s.repo,{since:s.since}),E=eo(S,w.churn,s.limit);we(JSON.stringify({churnOk:w.ok,...pn(w),risks:E},null,2)+` -`,s.out)}else if(n==="delta"){let S={base:s.base,staged:s.staged,depth:s.depth,indexDir:f},w=Xs(s.repo,S);if("error"in w)throw new Error(w.error);let E=To(w,s.depth);if(w.files.length){s.noAst||(c=l());let{scan:P,graph:N,symbols:L}=await v();E=Zs(w,N,L,{...S,scan:P})}we(s.json?JSON.stringify(E,null,2)+` -`:$o(E),s.out),s.failOn&&E.modules.some(P=>Ub(P.bucket)>=Ub(s.failOn))&&(O.exitCode=1)}else if(n==="impact"){if(!s.positional)throw new Error("impact needs a target: cli.mjs impact --repo ");let S=await C(),w;for(let E of Wn(s.repo,s.positional))if(w=Ki(S,E,s.depth??1/0,{includeInferred:s.includeInferred}),w)break;if(!w)throw new Error(`no such file or module in the index: ${s.positional}`);we(JSON.stringify(w,null,2)+` -`,s.out)}else if(n==="neighbors"){if(!s.positional)throw new Error("neighbors needs a target: cli.mjs neighbors --repo ");let S=await C(),w=s.kind?new Set(s.kind.split(",")):void 0,E;for(let P of Wn(s.repo,s.positional))if(E=Xi(S,P,s.depth??1,w),E)break;if(!E)throw new Error(`no such file or module in the index: ${s.positional}`);we(JSON.stringify(E,null,2)+` -`,s.out)}else if(n==="resolution"){let S=ec(await x(),{lang:s.lang,limit:s.limit});we(JSON.stringify(S,null,2)+` -`,s.out)}else if(n==="mermaid")we(Io(await C(),{module:s.positional}),s.out);else if(n==="grep"){if(!s.positional)throw new Error("grep needs a pattern: cli.mjs grep --repo ");let S=zs(s.repo,s.positional,{globs:s.include.length||s.exclude.length?[...s.include,...s.exclude.map(w=>`!${w}`)]:void 0,scope:s.scope,ignoreCase:s.ignoreCase,maxHits:s.maxHits,filesWithMatches:s.filesWithMatches,gitignore:s.gitignore,ignoreDirs:s.ignoreDirs.length?s.ignoreDirs:void 0,maxFileBytes:s.maxBytes,timeoutMs:s.timeoutMs});we(JSON.stringify(S.hits,null,2)+` -`,s.out);for(let w of S.notes)O.stderr.write(`codeindex grep: ${w} -`)}else O.stderr.write(`unknown command: ${n} +`)}else F.stdout.write(N+` +`),F.stderr.write('codeindex: run the line above to start the embedding server (or `embed serve --run`), then:\n CODEINDEX_EMBED_ENDPOINT=http://localhost:8756 codeindex search "" --repo . --semantic\n')}else if(x==="build"){if(!s.out)throw new Error("embed build needs --out ");if(!w){F.stderr.write("codeindex: no embedding model present \u2014 run `codeindex embed pull` first (nothing written)\n"),F.exitCode=1;return}let E=Hs(w);Yt(s.out,{recursive:!0});let N=await S(),O=Zr(N,E,{previous:is(j(s.out,"embeddings.bin"))});En(j(s.out,"embeddings.bin"),go(O)),F.stderr.write(`codeindex: ${O.records.length} embedding records \u2192 ${s.out}/embeddings.bin (model ${E.modelId}) +`)}else if(x==="pull"){let{url:E,sha256:N}=mf(),O=F.env.CODEINDEX_EMBED_DIR??j(s.repo,".codeindex","models");Yt(O,{recursive:!0}),F.stderr.write(`codeindex: fetching model from ${E} \u2192 ${j(O,"model.json")} +`);let L;try{L=await k_(E,N)}catch(G){F.stderr.write(`codeindex: pull failed \u2014 ${G instanceof Error?G.message:String(G)} (nothing written) +`),F.exitCode=1;return}try{ff(JSON.parse(L),E)}catch(G){F.stderr.write(`codeindex: pull failed \u2014 response is not a valid model.json (${G instanceof Error?G.message:String(G)}) (nothing written) +`),F.exitCode=1;return}En(j(O,"model.json"),L),F.stderr.write(`codeindex: model written to ${j(O,"model.json")} +`)}else throw new Error("embed needs a subcommand: status | build | pull | serve")}else if(n==="lsp"){if(s.positional!=="status")throw new Error("lsp needs a subcommand: status");we(JSON.stringify(await Ro(await S(),s.repo,s.probe===!0,{trustRepoConfig:s.trustLspConfig}),null,2)+` +`,s.out)}else if(n==="grammars"){let x=s.positional,w=xs();if(x==="status"){let E=Wt(),N=ve=>E.dirs.some(Oe=>Q(j(Oe,ve))),O=N("web-tree-sitter.wasm"),L=Va(),G=ve=>[...ve].filter(Oe=>N(`${Oe}.wasm`)).sort(),X=G(vi),oe=G(ws),ue={engineVersion:Ie,tier:E.tier,dir:E.dir??null,dirs:E.dirs,cacheDir:w,runtimePresent:O,pullNeeded:!O,extendedPullNeeded:oe.length!X.includes(ve)).sort()},extended:{resolved:oe.length,of:ws.size,missing:[...ws].filter(ve=>!oe.includes(ve)).sort()},url:L.url};we(JSON.stringify(ue,null,2)+` +`,s.out)}else if(x==="pull"){let E=await Bi(w,{onNote:N=>F.stderr.write(N)});F.stderr.write(E.message),E.ok||(F.exitCode=1)}else throw new Error("grammars needs a subcommand: status | pull")}else if(n==="rules"){if(!s.config)throw new Error("rules needs --config ");let x=[le(s.config),le(s.repo,s.config)].find(L=>Q(L))??le(s.config),w=ql(ie(x,"utf8"),x),{scan:E,graph:N}=await R(),O=Jl(Mo(N,w,{scan:E}));we(JSON.stringify(O,null,2)+` +`,s.out),O.errors>0&&(F.exitCode=1)}else if(n==="workspaces"){let x=Pn(s.repo),w=s.check?xl(x,(await R()).graph):void 0;we(JSON.stringify(Sl(x,w),null,2)+` +`,s.out),w&&!w.ok&&(F.exitCode=1)}else if(n==="churn"){let x=tn(s.repo,{since:s.since}),w=Hd(s.repo,Xt(s)),E=w&&(O=>w({rel:O,abs:j(s.repo,O),directory:!1})),N={};for(let O of[...x.churn.keys()].sort())(!E||E(O))&&(N[O]=x.churn.get(O));we(JSON.stringify({ok:x.ok,...hn(x),churn:N},null,2)+` +`,s.out)}else if(n==="repomap"){let x=await C();we(Qr(await S(),x,{budgetTokens:s.budgetTokens}),s.out)}else if(n==="hotspots"){let x=await S(),w=tn(s.repo,{since:s.since}),E=es(x,w.churn,s.limit);we(JSON.stringify({churnOk:w.ok,...hn(w),hotspots:E},null,2)+` +`,s.out)}else if(n==="coupling"){let{graph:x}=await R(),w=wo(s.repo,{since:s.since,graph:x,hidden:s.hidden,minTogether:s.minTogether,maxCommitFiles:s.maxCommitFiles,maxPairs:s.limit});we(JSON.stringify({ok:w.ok,...hn(w),couplings:w.couplings},null,2)+` +`,s.out)}else if(n==="deadcode"){let x=Io(await S(),{kinds:s.kinds,includeTail:s.includeTail});we(JSON.stringify(Xl(x,s.limit),null,2)+` +`,s.out)}else if(n==="literals"){let x=Dn(await S(),{minFiles:s.minFiles,minCount:s.minCount,includeTests:s.includeTests});we(JSON.stringify(x,null,2)+` +`,s.out)}else if(n==="complexity"){let x=await S(),w=s.positional;if(w!==void 0){let E=new Set(x.files.map(O=>O.rel)),N=Un(s.repo,w).find(O=>E.has(O));if(N===void 0)throw new Error(ss(x,s.repo,w)??`no such file in the index: ${w}`);w=N}we(JSON.stringify(eo(x,w,s.limit),null,2)+` +`,s.out)}else if(n==="risk"){let x=await S(),w=tn(s.repo,{since:s.since}),E=to(x,w.churn,s.limit);we(JSON.stringify({churnOk:w.ok,...hn(w),risks:E},null,2)+` +`,s.out)}else if(n==="delta"){let x={base:s.base,staged:s.staged,depth:s.depth,indexDir:f},w=Xs(s.repo,x);if("error"in w)throw new Error(w.error);let E=To(w,s.depth);if(w.files.length){s.noAst||(c=l());let{scan:N,graph:O,symbols:L}=await R();E=Zs(w,O,L,{...x,scan:N})}we(s.json?JSON.stringify(E,null,2)+` +`:Fo(E),s.out),s.failOn&&E.modules.some(N=>Hb(N.bucket)>=Hb(s.failOn))&&(F.exitCode=1)}else if(n==="impact"){if(!s.positional)throw new Error("impact needs a target: cli.mjs impact --repo ");let x=await C(),w;for(let E of Un(s.repo,s.positional))if(w=Xi(x,E,s.depth??1/0,{includeInferred:s.includeInferred}),w)break;if(!w)throw new Error(`no such file or module in the index: ${s.positional}`);we(JSON.stringify(w,null,2)+` +`,s.out)}else if(n==="neighbors"){if(!s.positional)throw new Error("neighbors needs a target: cli.mjs neighbors --repo ");let x=await C(),w=s.kind?new Set(s.kind.split(",")):void 0,E;for(let N of Un(s.repo,s.positional))if(E=Zi(x,N,s.depth??1,w),E)break;if(!E)throw new Error(`no such file or module in the index: ${s.positional}`);we(JSON.stringify(E,null,2)+` +`,s.out)}else if(n==="resolution"){let x=tc(await S(),{lang:s.lang,limit:s.limit});we(JSON.stringify(x,null,2)+` +`,s.out)}else if(n==="mermaid")we($o(await C(),{module:s.positional}),s.out);else if(n==="grep"){if(!s.positional)throw new Error("grep needs a pattern: cli.mjs grep --repo ");let x=zs(s.repo,s.positional,{globs:s.include.length||s.exclude.length?[...s.include,...s.exclude.map(w=>`!${w}`)]:void 0,scope:s.scope,ignoreCase:s.ignoreCase,maxHits:s.maxHits,filesWithMatches:s.filesWithMatches,gitignore:s.gitignore,ignoreDirs:s.ignoreDirs.length?s.ignoreDirs:void 0,maxFileBytes:s.maxBytes,timeoutMs:s.timeoutMs});we(JSON.stringify(x.hits,null,2)+` +`,s.out);for(let w of x.notes)F.stderr.write(`codeindex grep: ${w} +`)}else F.stderr.write(`unknown command: ${n} -${Sc}`),O.exitCode=2}oi();Ee();I();Ee();pt();var nm="/grammars",rm="web-tree-sitter.wasm";function zb(e){Gb(rm,e)}function Hb(e,t){Gb(`${e}.wasm`,t)}function Gb(e,t){Jo(`${nm}/${e}`,t),O.env.CODEINDEX_GRAMMAR_DIR=nm}function qb(e){return`${e}.wasm`}async function OT(e,t){let n=Bt(e);if(!n.length)return{tier:"regex",loaded:[],failed:[],note:"no language here ships a tree-sitter grammar"};try{zb(await t(rm))}catch(s){return{tier:"regex",loaded:[],failed:[...n],note:`tree-sitter runtime unavailable (${s.message})`}}await Promise.all(n.map(async s=>{try{Hb(s,await t(qb(s)))}catch{}})),await on(n);let r=n.filter(s=>Le(s)).sort(),o=n.filter(s=>!Le(s)).sort();return{tier:r.length?"ast":"regex",loaded:r,failed:o,note:o.length?`${o.join(", ")} could not load; those languages use the regex tier`:""}}export{na as BINARY_EXT,Ei as CORE_GRAMMARS,Yl as DEFAULT_DELTA_DEPTH,ou as DEFAULT_GRAMMARS_URL,Iw as DEFAULT_MAX_FILES,Jt as EMBED_VERSION,Te as ENGINE_VERSION,ws as EXTENDED_GRAMMARS,dn as EXTRACTOR_VERSION,vi as EXT_GRAMMAR,nm as GRAMMARS_DIR,vn as IGNORE_DIRS,Je as INDEX_DIR,ta as LOCKFILES,Js as LspSessionPool,Wl as LspTimeout,ed as MARKDOWN_EXT,H_ as MAX_FRAME_BYTES,Ic as OffsetMap,xn as RISK_WEIGHTS,rm as RUNTIME_WASM,ut as SCHEMA_VERSION,So as agreementOf,Ca as allGrammarKeys,Au as applyCentrality,k_ as basicTokenize,sy as betweennessOf,ub as brokenImports,Ln as buildArtifactsFromScan,Hr as buildCallerIndex,La as buildCodeRecord,Xr as buildEmbeddingIndex,yo as buildEndpointIndex,Wu as buildGraph,tA as buildIndexArtifacts,du as buildModules,Fu as buildRawCallerIndex,Ui as buildResolveContext,wu as buildSymbolGraph,fu as buildSymbolIndex,pu as buildTypeHierarchy,xr as byKey,$ as byStr,Ks as callersWithLsp,Av as categorize,bo as changeCoupling,Bw as changedSince,Co as checkRules,mt as classify,iw as clip,ow as clipInline,Ll as columnOfSymbol,DC as communityOf,It as compileGlobs,Iu as complexityOfSource,fb as computeDelta,xR as computeImportPairs,Sl as computeSurprises,uu as computeSymbolRefs,Zi as computeTestMap,Sf as createFramer,ea as decidingRule,Xu as deleteMemory,UI as deltaFor,Zs as deltaOfDiff,hf as deserializeEmbeddings,nf as detectCommunities,On as detectWorkspaces,Lc as diffFiles,Dc as diffHunks,Il as embedEndpointUrl,Tl as embedViaEndpoint,Cl as embeddingUnits,To as emptyDelta,SR as enclosingSymbol,fo as encode,jl as encodeMessage,ho as encodeQueryViaEndpoint,yf as endpointModelId,on as ensureGrammars,bt as escapeRegExp,Gt as explainQuery,fr as explainSemantic,nn as extToLang,$d as extractAst,Ii as extractCode,Eh as extractGrammarsTarball,uh as extractInParallel,rd as extractMarkdown,ad as extractRst,Yc as extractSymbols,Tv as extractTags,kh as extractTarInto,Sh as fetchExpectedSha256,wh as fetchGrammarsTarball,ts as fileUri,Ao as findDeadCode,Pn as findLiteralDuplications,so as findReferences,_n as findSymbol,qn as foldText,$o as formatDeltaPanel,en as gitChurn,Ar as grammarKeyForExt,Bt as grammarKeysForExts,Le as grammarReady,qb as grammarWasmName,gA as grepRepo,zs as grepRepoEx,_A as hasEmbedModel,ew as hasFileBytes,Yt as have,Qt as headCommit,A_ as healthzUrl,Gh as hubThreshold,Ki as impactOf,Gi as implementationsOf,ji as indexStatus,Gu as insertAfterSymbol,qu as insertBeforeSymbol,mf as intDot,Tp as isCode,Ip as isDoc,Nc as isGitWorktree,ii as isIgnored,eM as isSurprising,Xa as isTestFile,Ft as isTestPath,Hd as keptCodeFiles,us as keywords,Qc as languageOf,Zu as listMemories,Hs as loadEmbedModel,OT as loadGrammars,xo as loadLspConfig,Vs as locationsToRefs,vo as lspStatus,es as lspUnavailable,gm as mountFiles,Hb as mountGrammar,zb as mountRuntime,Vi as neighborhood,Xi as neighborsOf,_f as onboardBrief,vf as openLspSession,zr as pagerankOf,ms as parseGitignore,L_ as parseLspConfig,ql as parseRules,mh as preloadArtifacts,Yd as preloadSession,go as probeEndpoint,tw as pruneUnfetched,Wi as pullGrammars,Gs as quantize,Qr as rankHotspots,aw as rankedKeywords,Xs as readDeltaDiff,Ku as readMemory,Li as readPersistedIndex,se as readText,ps as readTextEx,Ro as referencesWithLsp,kf as relFromUri,qr as renderGraphJson,Io as renderMermaid,PI as renderMermaidClustered,Yr as renderRepoMap,lf as renderScip,Za as renderSymbolsJson,Hu as replaceSymbolBody,Qb as resetVfs,nw as residentBytes,Pc as resolveBaseRef,Du as resolveCallEdges,nr as resolveDocLink,mr as resolveEmbedEndpoint,Dn as resolveEmbedModelDir,ff as resolveEmbedPullUrl,gk as resolveGrammarsDir,qa as resolveGrammarsPullTarget,Wt as resolveGrammarsTier,ct as resolveImport,qs as resolveLspConfigPath,mu as resolveRelationEdges,rr as resolveRelations,jy as resolveUniqueSymbol,Ji as reverseClosure,jb as rewriteCommand,eo as riskHotspots,R_ as roundHalfToEven,Cc as rrf,FT as runCli,uv as runExtractWorker,Fb as runMcpServer,vt as scanRepo,yn as scanRepoParallel,oh as scanSkips,Ti as scanSummary,oR as searchIndex,CA as searchSemantic,po as serializeEmbeddings,xf as serverForLang,Jo as setFileBytes,$e as sh,Re as sha1,xs as sharedGrammarsCacheDir,Kw as shortHash,ja as skipHistogram,ri as slugify,Rf as spawnLspTransport,mn as subtokens,Qi as symbolComplexity,ht as symbolId,db as symbolsInHunks,no as symbolsOverview,Iv as tagsQueryStatus,D0 as testsForModule,Cs as tierForPath,Rt as toCacheMap,v_ as tokenize,sr as typeEntry,$u as uniqueSymbolDefs,Rl as unitHash,j0 as untestedModules,sa as untrackedFiles,Xe as walk,Nv as warmGrammars,Gd as whyPath,E_ as wordpiece,dh as workerCount,oo as writeMemory}; +${kc}`),F.exitCode=2}ai();ke();$();ke();pt();var rm="/grammars",sm="web-tree-sitter.wasm";function Gb(e){Vb(sm,e)}function qb(e,t){Vb(`${e}.wasm`,t)}function Vb(e,t){Ko(`${rm}/${e}`,t),F.env.CODEINDEX_GRAMMAR_DIR=rm}function Jb(e){return`${e}.wasm`}async function L$(e,t){let n=Bt(e);if(!n.length)return{tier:"regex",loaded:[],failed:[],note:"no language here ships a tree-sitter grammar"};try{Gb(await t(sm))}catch(s){return{tier:"regex",loaded:[],failed:[...n],note:`tree-sitter runtime unavailable (${s.message})`}}await Promise.all(n.map(async s=>{try{qb(s,await t(Jb(s)))}catch{}})),await an(n);let r=n.filter(s=>De(s)).sort(),o=n.filter(s=>!De(s)).sort();return{tier:r.length?"ast":"regex",loaded:r,failed:o,note:o.length?`${o.join(", ")} could not load; those languages use the regex tier`:""}}export{ra as BINARY_EXT,vi as CORE_GRAMMARS,Ql as DEFAULT_DELTA_DEPTH,au as DEFAULT_GRAMMARS_URL,Fw as DEFAULT_MAX_FILES,Jt as EMBED_VERSION,Ie as ENGINE_VERSION,ws as EXTENDED_GRAMMARS,fn as EXTRACTOR_VERSION,Ri as EXT_GRAMMAR,rm as GRAMMARS_DIR,Cn as IGNORE_DIRS,Ve as INDEX_DIR,na as LOCKFILES,Js as LspSessionPool,Bl as LspTimeout,td as MARKDOWN_EXT,q_ as MAX_FRAME_BYTES,$c as OffsetMap,kn as RISK_WEIGHTS,sm as RUNTIME_WASM,ut as SCHEMA_VERSION,ko as agreementOf,Ma as allGrammarKeys,Iu as applyCentrality,v_ as basicTokenize,iy as betweennessOf,mb as brokenImports,jn as buildArtifactsFromScan,Gr as buildCallerIndex,Da as buildCodeRecord,Zr as buildEmbeddingIndex,_o as buildEndpointIndex,Bu as buildGraph,sA as buildIndexArtifacts,uu as buildModules,Ou as buildRawCallerIndex,zi as buildResolveContext,xu as buildSymbolGraph,mu as buildSymbolIndex,gu as buildTypeHierarchy,Sr as byKey,T as byStr,Ks as callersWithLsp,Tv as categorize,wo as changeCoupling,Hw as changedSince,Mo as checkRules,mt as classify,lw as clip,cw as clipInline,Dl as columnOfSymbol,BC as communityOf,It as compileGlobs,$u as complexityOfSource,pb as computeDelta,ER as computeImportPairs,kl as computeSurprises,fu as computeSymbolRefs,Yi as computeTestMap,kf as createFramer,ta as decidingRule,Zu as deleteMemory,GI as deltaFor,Zs as deltaOfDiff,yf as deserializeEmbeddings,rf as detectCommunities,Pn as detectWorkspaces,Dc as diffFiles,jc as diffHunks,$l as embedEndpointUrl,Tl as embedViaEndpoint,Ml as embeddingUnits,To as emptyDelta,vR as enclosingSymbol,mo as encode,Wl as encodeMessage,yo as encodeQueryViaEndpoint,_f as endpointModelId,an as ensureGrammars,wt as escapeRegExp,Gt as explainQuery,pr as explainSemantic,rn as extToLang,Fd as extractAst,$i as extractCode,vh as extractGrammarsTarball,fh as extractInParallel,sd as extractMarkdown,ld as extractRst,Qc as extractSymbols,Ov as extractTags,Eh as extractTarInto,kh as fetchExpectedSha256,xh as fetchGrammarsTarball,ns as fileUri,Io as findDeadCode,Dn as findLiteralDuplications,io as findReferences,wn as findSymbol,Jn as foldText,Fo as formatDeltaPanel,tn as gitChurn,Ir as grammarKeyForExt,Bt as grammarKeysForExts,De as grammarReady,Jb as grammarWasmName,_A as grepRepo,zs as grepRepoEx,xA as hasEmbedModel,rw as hasFileBytes,Qt as have,en as headCommit,$_ as healthzUrl,qh as hubThreshold,Xi as impactOf,qi as implementationsOf,Wi as indexStatus,qu as insertAfterSymbol,Vu as insertBeforeSymbol,pf as intDot,Tp as isCode,$p as isDoc,Pc as isGitWorktree,oi as isIgnored,rM as isSurprising,Za as isTestFile,Ft as isTestPath,Gd as keptCodeFiles,us as keywords,ed as languageOf,Yu as listMemories,Hs as loadEmbedModel,L$ as loadGrammars,So as loadLspConfig,Vs as locationsToRefs,Ro as lspStatus,ts as lspUnavailable,hm as mountFiles,qb as mountGrammar,Gb as mountRuntime,Ji as neighborhood,Zi as neighborsOf,bf as onboardBrief,Rf as openLspSession,Hr as pagerankOf,ms as parseGitignore,j_ as parseLspConfig,Vl as parseRules,ph as preloadArtifacts,Qd as preloadSession,ho as probeEndpoint,sw as pruneUnfetched,Bi as pullGrammars,Gs as quantize,es as rankHotspots,dw as rankedKeywords,Xs as readDeltaDiff,Xu as readMemory,Di as readPersistedIndex,re as readText,ps as readTextEx,Co as referencesWithLsp,Ef as relFromUri,Vr as renderGraphJson,$o as renderMermaid,jI as renderMermaidClustered,Qr as renderRepoMap,cf as renderScip,Ya as renderSymbolsJson,Gu as replaceSymbolBody,nw as resetVfs,iw as residentBytes,Lc as resolveBaseRef,ju as resolveCallEdges,sr as resolveDocLink,gr as resolveEmbedEndpoint,Wn as resolveEmbedModelDir,mf as resolveEmbedPullUrl,_k as resolveGrammarsDir,Va as resolveGrammarsPullTarget,Wt as resolveGrammarsTier,ct as resolveImport,qs as resolveLspConfigPath,pu as resolveRelationEdges,ir as resolveRelations,By as resolveUniqueSymbol,Ki as reverseClosure,Bb as rewriteCommand,to as riskHotspots,M_ as roundHalfToEven,Mc as rrf,P$ as runCli,pv as runExtractWorker,Nb as runMcpServer,Rt as scanRepo,bn as scanRepoParallel,ah as scanSkips,Ti as scanSummary,cR as searchIndex,IA as searchSemantic,go as serializeEmbeddings,Sf as serverForLang,Ko as setFileBytes,$e as sh,Re as sha1,xs as sharedGrammarsCacheDir,Yw as shortHash,Wa as skipHistogram,si as slugify,Cf as spawnLspTransport,gn as subtokens,eo as symbolComplexity,ht as symbolId,fb as symbolsInHunks,ro as symbolsOverview,Fv as tagsQueryStatus,B0 as testsForModule,Cs as tierForPath,Ct as toCacheMap,C_ as tokenize,or as typeEntry,Fu as uniqueSymbolDefs,Cl as unitHash,U0 as untestedModules,ia as untrackedFiles,Xe as walk,Dv as warmGrammars,qd as whyPath,R_ as wordpiece,uh as workerCount,ao as writeMemory}; diff --git a/scripts/engine.mjs b/scripts/engine.mjs index abea0ea..88ebe1f 100755 --- a/scripts/engine.mjs +++ b/scripts/engine.mjs @@ -15424,15 +15424,23 @@ function createCallBinder(scan2, pairs, opts = {}) { }; const indexed = (rel2) => (byRel ??= new Map(scan2.files.map((f) => [f.rel, f]))).has(rel2); const firstIndexed = (dir, names) => names.map((n) => dir ? `${dir}/${n}` : n).find(indexed); + const crateRoot = (rel2, base) => { + if (base === "lib.rs" || base === "main.rs") return true; + const dir = dirOf3(rel2); + const parent = dir.slice(dir.lastIndexOf("/") + 1); + return parent === "examples" || parent === "tests" || parent === "benches" || parent === "bin" && /(^|\/)src\/bin$/.test(dir); + }; const rustPath = (rel2, receiver) => { const base = rel2.slice(rel2.lastIndexOf("/") + 1); let found; - if (receiver === "crate") { + if (crateRoot(rel2, base)) { + if (receiver === "crate") found = rel2; + } else if (receiver === "crate") { for (let dir = dirOf3(rel2); !found; dir = dirOf3(dir)) { found = firstIndexed(dir, ["lib.rs", "main.rs"]); if (!dir) break; } - } else if (base !== "lib.rs" && base !== "main.rs") { + } else { const parent = dirOf3(base === "mod.rs" ? dirOf3(rel2) : rel2.slice(0, -".rs".length)); found = firstIndexed(parent, ["mod.rs", "lib.rs", "main.rs"]) ?? (parent && indexed(`${parent}.rs`) ? `${parent}.rs` : void 0); } @@ -15528,11 +15536,14 @@ function createCallBinder(scan2, pairs, opts = {}) { }; const aliases = scope.aliases(f); let rustModules; + let inlineMods; if (family === "rust") { for (const q of ["crate", "super"]) { const files = rustPath(f.rel, q); if (files) (rustModules ??= /* @__PURE__ */ new Map()).set(q, files); } + inlineMods = f.symbols.filter((s) => s.kind === "mod" && s.endLine !== void 0 && s.endLine > s.line); + if (inlineMods.length) (rustModules ??= /* @__PURE__ */ new Map()).set(INLINE_SUPER, [f.rel]); } const corroborated = (name2, pool) => { const out2 = scope.reached(exportedGroup(name2, family, pool), f, name2); @@ -15558,8 +15569,9 @@ function createCallBinder(scan2, pairs, opts = {}) { const byReceiver = /* @__PURE__ */ new Map(); const byEnclosing = /* @__PURE__ */ new Map(); const read = (c2, enclosing) => { - const receiver = c2.receiver; + let receiver = c2.receiver; if (receiver === void 0) return BARE; + if (receiver === "super" && inlineMods?.some((m) => c2.line > m.line && c2.line <= m.endLine)) receiver = INLINE_SUPER; let r = byReceiver.get(receiver); if (r) return r; const self = (t) => reading("self", receiver, t, t); @@ -15664,7 +15676,7 @@ function createCallBinder(scan2, pairs, opts = {}) { }; return { forFile }; } -var REFERENCE_KINDS3, STRICT, SHAPED, PACKAGE_DIR, PRIVATE_REACH, NOT_CALLABLE, SELF_NAMES, FUNCTION_KINDS2, MAX_HOPS, NO_ALIASES, dirOf3, isGoTest, declaredRe, aliasMemo, newTables; +var REFERENCE_KINDS3, STRICT, SHAPED, PACKAGE_DIR, PRIVATE_REACH, NOT_CALLABLE, INLINE_SUPER, SELF_NAMES, FUNCTION_KINDS2, MAX_HOPS, NO_ALIASES, dirOf3, isGoTest, declaredRe, aliasMemo, newTables; var init_bind = __esm({ "src/bind.ts"() { "use strict"; @@ -15681,6 +15693,7 @@ var init_bind = __esm({ PACKAGE_DIR = /* @__PURE__ */ new Set(["go", "java"]); PRIVATE_REACH = { go: "package", java: "package", python: "import", rust: "path" }; NOT_CALLABLE = /* @__PURE__ */ new Set(["mod", "module", "package", "namespace"]); + INLINE_SUPER = "super\0inline"; SELF_NAMES = /* @__PURE__ */ new Set(["self", "cls", "this", "Self"]); FUNCTION_KINDS2 = /* @__PURE__ */ new Set(["function", "method", "def", "constructor", "operator"]); MAX_HOPS = 3; diff --git a/src/bind.ts b/src/bind.ts index dced23a..c7ecc6d 100644 --- a/src/bind.ts +++ b/src/bind.ts @@ -69,6 +69,10 @@ const PRIVATE_REACH: Record = { go: "pack // Rust's `mod search;` beside `fn search` took every `search()` call in the file. const NOT_CALLABLE = new Set(["mod", "module", "package", "namespace"]); +// The receiver a Rust `super::` takes inside an inline `mod { … }` block, where +// it names the enclosing file rather than its parent module. +const INLINE_SUPER = "super\u0000inline"; + // Receivers that name the enclosing object. JS/TS/Java `this` and Rust `self` // never get here (the extractor reads no receiver from them); PHP's `$this` // does, as "this". @@ -511,15 +515,25 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB const indexed = (rel: string): boolean => (byRel ??= new Map(scan.files.map((f) => [f.rel, f]))).has(rel); const firstIndexed = (dir: string, names: string[]): string | undefined => names.map((n) => (dir ? `${dir}/${n}` : n)).find(indexed); + // Cargo also makes every file directly under a target directory a crate of + // its own: `src/bin/tool.rs`, `examples/demo.rs`, `tests/it.rs`, `benches/b.rs`. + const crateRoot = (rel: string, base: string): boolean => { + if (base === "lib.rs" || base === "main.rs") return true; + const dir = dirOf(rel); + const parent = dir.slice(dir.lastIndexOf("/") + 1); + return parent === "examples" || parent === "tests" || parent === "benches" || (parent === "bin" && /(^|\/)src\/bin$/.test(dir)); + }; const rustPath = (rel: string, receiver: string): string[] | undefined => { const base = rel.slice(rel.lastIndexOf("/") + 1); let found: string | undefined; - if (receiver === "crate") { + if (crateRoot(rel, base)) { + if (receiver === "crate") found = rel; + } else if (receiver === "crate") { for (let dir = dirOf(rel); !found; dir = dirOf(dir)) { found = firstIndexed(dir, ["lib.rs", "main.rs"]); if (!dir) break; } - } else if (base !== "lib.rs" && base !== "main.rs") { + } else { const parent = dirOf(base === "mod.rs" ? dirOf(rel) : rel.slice(0, -".rs".length)); found = firstIndexed(parent, ["mod.rs", "lib.rs", "main.rs"]) ?? (parent && indexed(`${parent}.rs`) ? `${parent}.rs` : undefined); } @@ -631,11 +645,16 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB const aliases = scope.aliases(f); // `crate` and `super` as this Rust file's path qualifiers, where they name a file. let rustModules: Map | undefined; + // The file's inline `mod name { … }` blocks: inside one, `super::` is the + // file itself (`#[cfg(test)] mod tests` calling `super::parse`). + let inlineMods: CodeSymbol[] | undefined; if (family === "rust") { for (const q of ["crate", "super"]) { const files = rustPath(f.rel, q); if (files) (rustModules ??= new Map()).set(q, files); } + inlineMods = f.symbols.filter((s) => s.kind === "mod" && s.endLine !== undefined && s.endLine > s.line); + if (inlineMods.length) (rustModules ??= new Map()).set(INLINE_SUPER, [f.rel]); } // Cross-file defs of `name` this file reaches by stated evidence. @@ -685,8 +704,9 @@ export function createCallBinder(scan: RepoScan, pairs: Set, opts: CallB const byReceiver = new Map(); const byEnclosing = new Map>(); const read = (c: CallSite, enclosing: CodeSymbol | undefined): Reading => { - const receiver = c.receiver; + let receiver = c.receiver; if (receiver === undefined) return BARE; + if (receiver === "super" && inlineMods?.some((m) => c.line > m.line && c.line <= m.endLine!)) receiver = INLINE_SUPER; let r = byReceiver.get(receiver); if (r) return r; const self = (t: string | undefined): Reading => reading("self", receiver, t, t); diff --git a/tests/eval-findings.test.ts b/tests/eval-findings.test.ts index b8be01d..70cf9f2 100644 --- a/tests/eval-findings.test.ts +++ b/tests/eval-findings.test.ts @@ -110,6 +110,39 @@ describe("Rust paths", () => { expect(lines(callersOf(crate, "top"))).toEqual(["src/a/b.rs:2"]); }); + it("super:: inside an inline `mod tests { … }` is the file itself", () => { + const inline = repo({ + "Cargo.toml": '[package]\nname = "y"\nversion = "0.1.0"\n', + "src/lib.rs": "mod foo;\n\nfn parse(s: &str) -> usize { s.len() }\n", + "src/foo.rs": [ + "fn parse(s: &str) -> usize { s.len() }", + "", + "#[cfg(test)]", + "mod tests {", + " #[test]", + " fn t() {", + ' let _ = super::parse("ab");', + " }", + "}", + "", + ].join("\n"), + }); + expect(lines(callersOf(inline, "parse@src/foo.rs"))).toEqual(["src/foo.rs:7"]); + expect(lines(callersOf(inline, "parse@src/lib.rs"))).toEqual([]); + }); + + it("crate:: in a binary target is that binary's own crate", () => { + const bins = repo({ + "Cargo.toml": '[package]\nname = "z"\nversion = "0.1.0"\n', + "src/lib.rs": "fn setup() -> u8 { 0 }\n", + "src/bin/tool.rs": "fn setup() -> u8 { 1 }\n\nfn main() {\n let _ = crate::setup();\n}\n", + "examples/demo.rs": "fn setup() -> u8 { 2 }\n\nfn main() {\n let _ = crate::setup();\n}\n", + }); + expect(lines(callersOf(bins, "setup@src/bin/tool.rs"))).toEqual(["src/bin/tool.rs:4"]); + expect(lines(callersOf(bins, "setup@examples/demo.rs"))).toEqual(["examples/demo.rs:4"]); + expect(lines(callersOf(bins, "setup@src/lib.rs"))).toEqual([]); + }); + it("a call never binds to a `mod` declaration of the same name", () => { const entry = callersOf(crate, "search@src/main.rs"); expect(entry?.def.kind).toBe("function");