ultracode 5.3.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/chunks/analysis-tool-handlers-H2RXLDPX.js +817 -0
  2. package/dist/chunks/analysis-tool-handlers-RJZAR6VT.js +817 -0
  3. package/dist/chunks/analysis-tool-handlers-Z2RF24T7.js +13 -0
  4. package/dist/chunks/autodoc-tool-handlers-CV5JEQUA.js +1112 -0
  5. package/dist/chunks/autodoc-tool-handlers-EHTNCH6I.js +1112 -0
  6. package/dist/chunks/autodoc-tool-handlers-MECXQJ2K.js +138 -0
  7. package/dist/chunks/chaos-CO7TOBOJ.js +18 -0
  8. package/dist/chunks/chaos-VM2PXERO.js +1573 -0
  9. package/dist/chunks/chaos-W3XRVJ7K.js +1564 -0
  10. package/dist/chunks/chunk-6K37BWK5.js +439 -0
  11. package/dist/chunks/chunk-EALTCYHZ.js +10 -0
  12. package/dist/chunks/chunk-FTBE7VMY.js +316 -0
  13. package/dist/chunks/chunk-KBW6LRQP.js +322 -0
  14. package/dist/chunks/chunk-NKUHX4CU.js +5 -0
  15. package/dist/chunks/chunk-NZFF4DQ4.js +3179 -0
  16. package/dist/chunks/chunk-RGP5UVQ7.js +3179 -0
  17. package/dist/chunks/chunk-RMZXFGQZ.js +322 -0
  18. package/dist/chunks/chunk-UG44F23Y.js +316 -0
  19. package/dist/chunks/chunk-V2SCB5H5.js +4403 -0
  20. package/dist/chunks/chunk-V6JAQNM3.js +1 -0
  21. package/dist/chunks/chunk-XFGXM4CR.js +4403 -0
  22. package/dist/chunks/dev-agent-JVIGBMHQ.js +1 -0
  23. package/dist/chunks/dev-agent-TRVP5U6N.js +1624 -0
  24. package/dist/chunks/dev-agent-Y5G5WKQ4.js +1624 -0
  25. package/dist/chunks/graph-storage-factory-AYZ57YSL.js +13 -0
  26. package/dist/chunks/graph-storage-factory-GTAIJEI5.js +1 -0
  27. package/dist/chunks/graph-storage-factory-T2WO5QVG.js +13 -0
  28. package/dist/chunks/incremental-updater-KDIQGAUU.js +14 -0
  29. package/dist/chunks/incremental-updater-OJRSTO3Q.js +1 -0
  30. package/dist/chunks/incremental-updater-SBEBH7KF.js +14 -0
  31. package/dist/chunks/indexer-agent-H3QIEL3Z.js +21 -0
  32. package/dist/chunks/indexer-agent-KHF5JMV7.js +21 -0
  33. package/dist/chunks/indexer-agent-SHJD6Z77.js +1 -0
  34. package/dist/chunks/indexing-pipeline-J6Z4BHKF.js +1 -0
  35. package/dist/chunks/indexing-pipeline-OY3337QN.js +249 -0
  36. package/dist/chunks/indexing-pipeline-WCXIDMAP.js +249 -0
  37. package/dist/chunks/merge-agent-LSUBDJB2.js +2481 -0
  38. package/dist/chunks/merge-agent-MJEW3HWU.js +2481 -0
  39. package/dist/chunks/merge-agent-O45OXF33.js +11 -0
  40. package/dist/chunks/merge-tool-handlers-BDSVNQVZ.js +277 -0
  41. package/dist/chunks/merge-tool-handlers-HP7DRBXJ.js +1 -0
  42. package/dist/chunks/merge-tool-handlers-RUJAKE3D.js +277 -0
  43. package/dist/chunks/pattern-tool-handlers-L62W3CXR.js +1549 -0
  44. package/dist/chunks/pattern-tool-handlers-SAHX2CVW.js +13 -0
  45. package/dist/chunks/query-agent-3TWDFIMT.js +191 -0
  46. package/dist/chunks/query-agent-HXQ3BMMF.js +191 -0
  47. package/dist/chunks/query-agent-USMC2GNG.js +1 -0
  48. package/dist/chunks/semantic-agent-MQCAWIAB.js +6381 -0
  49. package/dist/chunks/semantic-agent-NDGR3NAK.js +6381 -0
  50. package/dist/chunks/semantic-agent-S4ZL6GZC.js +137 -0
  51. package/dist/index.js +17 -17
  52. package/dist/roslyn-addon/.build-hash +1 -1
  53. package/dist/roslyn-addon/ILGPU.Algorithms.dll +0 -0
  54. package/dist/roslyn-addon/ILGPU.dll +0 -0
  55. package/dist/roslyn-addon/UltraCode.CSharp.deps.json +35 -0
  56. package/dist/roslyn-addon/UltraCode.CSharp.dll +0 -0
  57. package/package.json +1 -1
@@ -0,0 +1,137 @@
1
+ import {a as a$1}from'./chunk-MTWE62OK.js';import {a as a$5}from'./chunk-6MFITFK4.js';import {b as b$6}from'./chunk-6DSENGA6.js';import {b as b$2,c as c$2}from'./chunk-TLK5HT5K.js';import {a as a$3}from'./chunk-DWXELIG2.js';import'./chunk-QBFXI33X.js';import {c as c$3}from'./chunk-GJZGCWYM.js';import {d as d$1}from'./chunk-IWVAUDA7.js';import {a as a$2,b as b$3,e,d}from'./chunk-NC7PZJZ6.js';import {a as a$4}from'./chunk-7YC4KTAW.js';import {b as b$1}from'./chunk-V5VLOVE7.js';import {d as d$2,f as f$2,j}from'./chunk-6K37BWK5.js';import'./chunk-RK5TLU72.js';import'./chunk-LESND2CW.js';import {c as c$1,a}from'./chunk-QUO46LUP.js';import'./chunk-3IFLFBQ4.js';import {a as a$6}from'./chunk-SMIWBMYP.js';import'./chunk-IFKMF76K.js';import'./chunk-3X7W3DL2.js';import {H,p as p$1,v,q as q$1,r}from'./chunk-GVQNDMAK.js';import {c,b as b$5}from'./chunk-PZF7YC35.js';import'./chunk-2VECFQM2.js';import'./chunk-F3VMUQ7O.js';import {p,i,o,c as c$4}from'./chunk-QZQIPXIR.js';import {b as b$4}from'./chunk-AIZJT6AG.js';import'./chunk-NWQZW3Y6.js';import {g,b,f as f$1}from'./chunk-KXUWGHHN.js';import'./chunk-2KIPXYOB.js';import'./chunk-OG62YNVF.js';import {R,I,M}from'./chunk-4BI7EBPQ.js';import'./chunk-NUFRM6SI.js';import {g as g$1}from'./chunk-F45ISXCP.js';import {f}from'./chunk-DXB73IDG.js';import {existsSync,rmSync,mkdirSync,writeFileSync,readdirSync,readFileSync}from'fs';import {join,dirname}from'path';import {fileURLToPath}from'url';import {LRUCache}from'lru-cache';g();R();var Ft=new Set(["the","a","an","this","that","these","those","it","its","i","me","my","we","us","our","you","your","he","him","his","she","her","they","them","their","is","are","was","were","be","been","being","have","has","had","do","does","did","will","would","could","should","may","might","must","shall","can","in","on","at","to","for","from","by","with","of","about","into","through","during","before","after","above","below","between","under","over","and","or","but","nor","so","yet","if","then","else","when","where","while","as","because","although","not","no","yes","all","any","some","each","every","both","few","more","most","other","such","only","own","same","than","too","very","just","also","var","let","const","new","return","true","false","null","undefined","void"]),Ot=new Set(["\u044F","\u043C\u044B","\u0442\u044B","\u0432\u044B","\u043E\u043D","\u043E\u043D\u0430","\u043E\u043D\u043E","\u043E\u043D\u0438","\u043C\u043E\u0439","\u0442\u0432\u043E\u0439","\u0435\u0433\u043E","\u0435\u0451","\u043D\u0430\u0448","\u0432\u0430\u0448","\u0438\u0445","\u044D\u0442\u043E\u0442","\u0442\u043E\u0442","\u0447\u0442\u043E","\u043A\u0442\u043E","\u043A\u043E\u0442\u043E\u0440\u044B\u0439","\u0431\u044B\u0442\u044C","\u0435\u0441\u0442\u044C","\u0431\u044B\u043B","\u0431\u044B\u043B\u0430","\u0431\u044B\u043B\u043E","\u0431\u044B\u043B\u0438","\u0431\u0443\u0434\u0435\u0442","\u0431\u0443\u0434\u0443\u0442","\u0438\u043C\u0435\u0442\u044C","\u0438\u043C\u0435\u0435\u0442","\u0432","\u043D\u0430","\u0441","\u0438\u0437","\u043A","\u043F\u043E","\u0437\u0430","\u0434\u043E","\u043E\u0442","\u043F\u0440\u0438","\u0434\u043B\u044F","\u0431\u0435\u0437","\u043F\u043E\u0434","\u043D\u0430\u0434","\u043C\u0435\u0436\u0434\u0443","\u0447\u0435\u0440\u0435\u0437","\u043F\u043E\u0441\u043B\u0435","\u043F\u0435\u0440\u0435\u0434","\u0438","\u0438\u043B\u0438","\u043D\u043E","\u0430","\u0434\u0430","\u0435\u0441\u043B\u0438","\u0447\u0442\u043E","\u0447\u0442\u043E\u0431\u044B","\u043A\u043E\u0433\u0434\u0430","\u0433\u0434\u0435","\u043A\u0430\u043A","\u0442\u0430\u043A","\u043F\u043E\u0442\u043E\u043C\u0443","\u043F\u043E\u044D\u0442\u043E\u043C\u0443","\u043D\u0435","\u043D\u0438","\u0431\u044B","\u0436\u0435","\u043B\u0438","\u0432\u043E\u0442","\u0442\u043E\u043B\u044C\u043A\u043E","\u0443\u0436\u0435","\u0435\u0449\u0451","\u0442\u043E\u0436\u0435","\u0442\u0430\u043A\u0436\u0435","\u0432\u0435\u0441\u044C","\u0432\u0441\u0435","\u0432\u0441\u0451","\u043A\u0430\u0436\u0434\u044B\u0439","\u043B\u044E\u0431\u043E\u0439","\u0434\u0440\u0443\u0433\u043E\u0439","\u043E\u0434\u0438\u043D","\u0434\u0432\u0430","\u0442\u0440\u0438","\u043C\u043D\u043E\u0433\u043E","\u043C\u0430\u043B\u043E","\u043E\u0447\u0435\u043D\u044C","\u0431\u043E\u043B\u0435\u0435","\u043C\u0435\u043D\u0435\u0435","\u0441\u0430\u043C\u044B\u0439"]),Gt=new Set([...Ft,...Ot]);function st(s){return s.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").split("_").filter(t=>t.length>0)}function Ht(s){return s.split(/[-_]/).filter(e=>e.length>0)}function L(s,e=2){if(!s||typeof s!="string")return [];let t=[],r=s.toLowerCase().replace(/[^\p{L}\p{N}\s_-]/gu," ").split(/\s+/).filter(a=>a.length>0);for(let a of r){let i=a.includes("_"),n=a.includes("-"),c=/[a-z][A-Z]/.test(a)||/[A-Z]{2,}[a-z]/.test(a);if(i||n){let u=Ht(a);for(let g of u)c?t.push(...st(g)):t.push(g);}else c?t.push(...st(a)):t.push(a);}return t.map(a=>a.toLowerCase()).filter(a=>a.length>=e&&!Gt.has(a))}function U(s,e=2){return new Set(L(s,e))}function ot(s,e=2){let t=new Map,r=L(s,e);for(let a of r)t.set(a,(t.get(a)||0)+1);return t}var Y=class{constructor(e,t={}){this.storage=e;this.config={windowSize:t.windowSize??5,minTermLength:t.minTermLength??3,maxTermsPerChunk:t.maxTermsPerChunk??500};}config;async updateFromChunk(e){let{windowSize:t,minTermLength:r,maxTermsPerChunk:a}=this.config,i=L(e,r);if(i.length>a&&(i=i.slice(0,a)),i.length<2)return;let n=this.extractPairs(i,t);if(n.size===0)return;await this.storage.batchUpdateCooccurrence(n);let c=ot(e,r);await this.storage.updateTermFrequencies(c,true);}async updateFromChunks(e){let{windowSize:t,minTermLength:r,maxTermsPerChunk:a}=this.config,i=new Map,n=new Map,c=new Set;for(let u of e){if(!u||u.length<r*2)continue;let g=L(u,r);if(g.length>a&&(g=g.slice(0,a)),g.length<2)continue;let x=this.extractPairs(g,t);for(let[m,y]of x)i.set(m,(i.get(m)||0)+y);let p=U(u,r),b=this.hashChunk(u);for(let m of p){let y=`${m}|${b}`;c.has(y)||(c.add(y),n.set(m,(n.get(m)||0)+1));}}i.size>0&&await this.storage.batchUpdateCooccurrence(i),n.size>0&&await this.storage.updateTermFrequencies(n,true);}extractPairs(e,t){let r=new Map;for(let a=0;a<e.length;a++){let i=e[a];for(let n=a+1;n<=Math.min(a+t,e.length-1);n++){let c=e[n];if(i===c)continue;let[u,g]=i<c?[i,c]:[c,i],x=`${u}|${g}`;r.set(x,(r.get(x)||0)+1);}}return r}hashChunk(e){let t=e.length,r=e.charCodeAt(0)||0,a=e.charCodeAt(t-1)||0,i=e.charCodeAt(Math.floor(t/2))||0;return `${t}_${r}_${i}_${a}`}async getRelatedTerms(e,t=5){return this.storage.getRelatedTerms(e,t)}async getRelatedTermsForQuery(e,t=3){if(e.length===0)return [];let r=await this.storage.getRelatedTermsBatch(e,t),a=new Map;for(let[i,n]of r)for(let c of n){let u=a.get(c.term);(!u||c.score>u.score)&&a.set(c.term,c);}return Array.from(a.values()).sort((i,n)=>n.score-i.score)}async recalculatePMI(){await this.storage.recalculatePMI();}async getStats(){return this.storage.getStats()}async clear(){await this.storage.clear();}async pruneRarePairs(e=2){return this.storage.pruneRarePairs(e)}};var J=class{options;constructor(e={}){this.options={minLength:e.minLength??3,logNormTf:e.logNormTf??true,minDocFreq:e.minDocFreq??1,maxDocFreqRatio:e.maxDocFreqRatio??.9};}extractTopTerms(e,t,r=5){if(e.length===0)return [];let a=e.length,{minLength:i,logNormTf:n,minDocFreq:c,maxDocFreqRatio:u}=this.options,g=new Map;for(let m of e){let y=U(m,i);for(let l of y)g.set(l,(g.get(l)||0)+1);}let x=new Map;for(let m of e){let y=L(m,i);for(let l of y)x.set(l,(x.get(l)||0)+1);}let p=Math.floor(a*u),b=[];for(let[m,y]of x){if(t.has(m))continue;let l=g.get(m)||1;if(l<c||l>p)continue;let d=n?1+Math.log(y):y,h=Math.log(a/l),f=d*h;b.push({term:m,score:f,tf:y,idf:h});}return b.sort((m,y)=>y.score-m.score).slice(0,r)}extractWithPrecomputedIdf(e,t,r,a=5){let{minLength:i,logNormTf:n}=this.options,c=L(e,i),u=new Map;for(let p of c)u.set(p,(u.get(p)||0)+1);let g=[],x=Math.log(10);for(let[p,b]of u){if(r.has(p))continue;let m=t.get(p)??x,l=(n?1+Math.log(b):b)*m;g.push({term:p,score:l,tf:b,idf:m});}return g.sort((p,b)=>b.score-p.score).slice(0,a)}buildIdfMap(e){if(e.length===0)return new Map;let t=e.length,{minLength:r}=this.options,a=new Map;for(let n of e){let c=U(n,r);for(let u of c)a.set(u,(a.get(u)||0)+1);}let i=new Map;for(let[n,c]of a)i.set(n,Math.log(t/c));return i}};var X=class{constructor(e,t={}){this.coocIndex=e;this.config={originalWeight:t.originalWeight??1,cooccurrenceWeight:t.cooccurrenceWeight??.6,prfWeight:t.prfWeight??.4,maxCoocTermsPerToken:t.maxCoocTermsPerToken??3,maxPrfTerms:t.maxPrfTerms??5,maxExpandedTerms:t.maxExpandedTerms??15,minTermLength:t.minTermLength??3},this.tfidfExtractor=new J({minLength:this.config.minTermLength});}config;tfidfExtractor;async expand(e,t){let{minTermLength:r,originalWeight:a,cooccurrenceWeight:i,prfWeight:n,maxExpandedTerms:c}=this.config,u=L(e,r),g=new Set(u),x=new Map;for(let d of u)x.set(d,a);let p=[];if(this.coocIndex&&u.length>0){let d=await this.getCooccurrenceTerms(u,g);for(let{term:h,score:f}of d){let E=f*i;p.push({term:h,weight:E});let w=x.get(h)||0;x.set(h,Math.max(w,E));}}let b=[];if(t.length>0){let d=this.extractPrfTerms(t,g);for(let{term:h,score:f}of d){let w=Math.min(f/5,1)*n;b.push({term:h,weight:w});let S=x.get(h)||0;x.set(h,Math.max(S,w));}}let m=Array.from(x.entries()).sort((d,h)=>h[1]-d[1]).slice(0,c),l=m.map(([d])=>d).join(" ");return {original:e,expanded:l,originalTokens:u,coocTerms:p,prfTerms:b,allTerms:new Map(m)}}async expandWithoutPrf(e){return this.expand(e,[])}async getCooccurrenceTerms(e,t){if(!this.coocIndex)return [];let{maxCoocTermsPerToken:r}=this.config;return (await this.coocIndex.getRelatedTermsForQuery(e,r)).filter(i=>!t.has(i.term)).map(i=>({term:i.term,score:Math.max(0,Math.min((i.score+5)/10,1))}))}extractPrfTerms(e,t){let{maxPrfTerms:r}=this.config,a=e.map(i=>i.content).filter(i=>i&&i.length>0);return a.length===0?[]:this.tfidfExtractor.extractTopTerms(a,t,r)}setConfig(e){Object.assign(this.config,e);}getConfig(){return {...this.config}}};R();var V={type1:.95,type2:.85,type3:.75},ct={lines:.1,branches:.3,loops:.2,functions:.2,classes:.2},Ut=[{pattern:"nested_loops",type:"smell",description:"Deeply nested loops detected",suggestion:"Consider extracting inner loops into separate functions"},{pattern:"long_function",type:"smell",description:"Function exceeds recommended length",suggestion:"Break down into smaller, focused functions"},{pattern:"duplicate_logic",type:"antipattern",description:"Similar logic appears multiple times",suggestion:"Extract common logic into a reusable function"},{pattern:"complex_condition",type:"smell",description:"Complex conditional expression",suggestion:"Extract condition into a well-named variable or function"}];function G(s,e){return (s.match(e)??[]).length}function lt(s){let e=s.split(`
2
+ `).length,t=G(s,/if\s*\(|else\s*{|switch\s*\(|case\s+/g),r=G(s,/for\s*\(|while\s*\(|do\s*{/g),a=G(s,/function\s+\w+|=>\s*{|async\s+function/g),i=G(s,/class\s+\w+/g),n={lines:e,branches:t,loops:r,functions:a,classes:i},c=0;for(let u of Object.keys(ct))c+=n[u]*ct[u];return {lines:e,branches:t,loops:r,functions:a,classes:i,complexity:c}}function Vt(s){let e=s.toLowerCase();return [[e.includes("test")||e.includes("spec"),"test"],[e.includes("class"),"class"],[e.includes("function")||e.includes("=>"),"function"],[e.includes("export")||e.includes("module"),"module"]].find(([r])=>r)?.[1]??"utility"}function gt(s){let t=[[/function\s+(\w+)/g,/^function\s+/],[/class\s+(\w+)/g,/^class\s+/],[/(?:const|let|var)\s+(\w+)/g,/^(?:const|let|var)\s+/]].flatMap(([r,a])=>(s.match(r)??[]).map(i=>i.replace(a,"")));return [...new Set(t)]}function mt(s,...e){if(!s)return "";for(let t of e){let r=s[t];if(typeof r=="string")return r}return ""}function dt(s,e,t,r,a){return {id:s,path:mt(e,"path","filePath"),content:t,similarity:r,type:a,startLine:e?.startLine,endLine:e?.endLine,name:e?.name}}var Z=class{vectorStore;embeddingGen;cache;patterns;constructor(e,t,r){this.vectorStore=e,this.embeddingGen=t,this.cache=r,this.patterns=Ut;}async analyzeCodeSemantics(e){let t=`analysis:${e.slice(0,100)}`,r=this.cache.get(t);if(r)return r;let a=lt(e),i=gt(e),n=Vt(e),c=this.extractConcepts(e),u=i[0]??"code",g={entities:i,concepts:c,complexity:a.complexity,semanticType:n,summary:`${n} containing ${i.length} entities (${a.lines} lines). Main entity: ${u}`};return this.cache.set(t,g,36e5),g}async findSimilarCode(e,t=.5){let r=await this.embeddingGen.generateCodeEmbedding(e);return (await this.vectorStore.search(r,20)).filter(i=>i.similarity>=t).map(i=>dt(i.id,i.metadata,i.content,i.similarity,this.simType(i.similarity)))}async detectClones(e=.65){let t=await this.vectorStore.count();if(t===0)return [];let r=Math.min(100,t);I.d("ANALYZER","Analyzing code fragments for clones",{maxSamples:r,minSimilarity:e});let a=new Map,i=$t(),n=new Set;await Promise.all(Array.from({length:Math.min(5,Math.ceil(r/20))},()=>this.vectorStore.search(ut(384),20).then(b=>{for(let m of b){if(n.size>=r)break;n.has(m.id)||(n.add(m.id),a.set(m.id,{content:m.content,metadata:m.metadata}));}})));let c=new Set,u=new Map,g=Math.min(10,Math.ceil(r/10));for(let b=0;b<g;b++){let y=(await this.vectorStore.search(ut(384),30)).filter(l=>l.similarity>=e);for(let l=0;l<y.length;l++){let d=y[l];a.has(d.id)||a.set(d.id,{content:d.content,metadata:d.metadata});for(let h=l+1;h<y.length;h++){let f=y[h],E=Math.sqrt(d.similarity*f.similarity);if(E<e)continue;let w=d.id<f.id?`${d.id}|${f.id}`:`${f.id}|${d.id}`;c.has(w)||(c.add(w),u.set(w,E),i.union(d.id,f.id),a.has(f.id)||a.set(f.id,{content:f.content,metadata:f.metadata}));}}}let x=0,p=[];for(let b of i.groups()){if(b.length<2)continue;let m=0,y=0;for(let h=0;h<b.length;h++)for(let f=h+1;f<b.length;f++){let E=b[h],w=b[f],S=u.get(E<w?`${E}|${w}`:`${w}|${E}`);S!==void 0&&(m+=S,y++);}let l=y>0?m/y:e,d=b.map(h=>{let f=a.get(h);return dt(h,f?.metadata,f?.content??"",l,this.simType(l))});p.push({id:`clone-${++x}`,cloneType:this.cloneType(l),members:d,avgSimilarity:l});}return I.d("ANALYZER","Clone detection complete",{cloneGroups:p.length,entitiesCached:a.size,pairsProcessed:c.size}),p}async crossLanguageSearch(e,t){let r=await this.embeddingGen.generateEmbedding(e),a=await this.vectorStore.search(r,50),i=new Set(t);return a.filter(n=>i.has(n.metadata?.language)).map(n=>({id:n.id,language:n.metadata?.language??"unknown",path:mt(n.metadata,"path","filePath"),content:n.content,similarity:n.similarity,startLine:n.metadata?.startLine,endLine:n.metadata?.endLine,name:n.metadata?.name}))}async suggestRefactoring(e){let t=[],r=lt(e);r.lines>50&&t.push({type:"extract",description:"Function is too long",impact:"medium",confidence:.8,code:"// Consider breaking this function into smaller pieces"}),r.branches>10&&t.push({type:"simplify",description:"High cyclomatic complexity detected",impact:"high",confidence:.9,code:"// Consider using early returns or extracting complex conditions"});let a=await this.findSimilarCode(e,.85);a.length>1&&t.push({type:"combine",description:`Found ${a.length} similar code fragments`,impact:"high",confidence:.85,code:"// Consider extracting common functionality into a shared function"});for(let i of gt(e).filter(n=>n.length<3||n==="tmp"||n==="temp"))t.push({type:"rename",description:`Poor variable name: '${i}'`,impact:"low",confidence:.7});for(let i of this.patterns)this.matchPat(e,i)&&t.push({type:i.type==="antipattern"?"extract":"simplify",description:i.description,impact:i.type==="antipattern"?"high":"medium",confidence:.75,code:`// ${i.suggestion}`});return t}async generateCodeEmbedding(e){return this.embeddingGen.generateCodeEmbedding(e)}getStats(){return {patternsLoaded:this.patterns.length,cacheStats:this.cache.getStats()}}extractConcepts(e){return [[["async","await"],"asynchronous"],["Promise","promises"],["class","object-oriented"],["=>","functional"],[["test","expect"],"testing"],[["try","catch"],"error-handling"]].filter(([r])=>Array.isArray(r)?r.some(a=>e.includes(a)):e.includes(r)).map(([,r])=>r)}simType(e){return e>=V.type1?"exact":e>=V.type2?"near":"semantic"}cloneType(e){return e>=V.type1?"type1":e>=V.type2?"type2":e>=V.type3?"type3":"type4"}matchPat(e,t){return {nested_loops:()=>G(e,/for\s*\([^)]*\)\s*{[^}]*for\s*\(/g)>0,long_function:()=>e.split(`
3
+ `).length>50,complex_condition:()=>G(e,/if\s*\([^)]{50,}\)/g)>0}[t.pattern]?.()??false}};function ut(s){let e=new Float32Array(s);for(let t=0;t<s;t++)e[t]=Math.random()-.5;return e}function $t(){let s=new Map,e=new Map,t=i=>{s.has(i)||(s.set(i,i),e.set(i,0));let n=i;for(;s.get(n)!==n;)n=s.get(n);for(let c=i;c!==n;){let u=s.get(c);s.set(c,n),c=u;}return n};return {find:t,union:(i,n)=>{let c=t(i),u=t(n);if(c===u)return;let g=e.get(c)??0,x=e.get(u)??0;g<x?s.set(c,u):g>x?s.set(u,c):(s.set(u,c),e.set(c,g+1));},groups:()=>{let i=new Map;for(let n of s.keys()){let c=t(n),u=i.get(c);u||(u=[],i.set(c,u)),u.push(n);}return [...i.values()]}}}R();p();function W(){return join(c$4(),".embeddings-dump")}function bt(){let s=W();if(existsSync(s))try{rmSync(s,{recursive:!0,force:!0});}catch(e){I.w("DUMP",`Could not clean dump dir: ${e}`);}return mkdirSync(s,{recursive:true}),I.i("DUMP",`Initialized dump directory: ${s}`),s}function xt(s,e){let t=W();existsSync(t)||mkdirSync(t,{recursive:true});let r={batchIndex:e,embeddings:s,timestamp:Date.now()},a=`batch-${String(e).padStart(6,"0")}.json`,i=join(t,a);writeFileSync(i,JSON.stringify(r)),I.d("DUMP",`Saved batch ${e} with ${s.length} embeddings`);}function wt(){let s=W();if(!existsSync(s))return [];let e=readdirSync(s).filter(r=>r.startsWith("batch-")&&r.endsWith(".json")).sort(),t=[];for(let r of e)try{let a=readFileSync(join(s,r),"utf-8"),i=JSON.parse(a);t.push(...i.embeddings);}catch(a){I.e("DUMP",`Failed to load batch ${r}: ${a}`);}return I.i("DUMP",`Loaded ${t.length} embeddings from ${e.length} batch files`),t}function te(){let s=W();if(!existsSync(s))return {batchCount:0,totalEmbeddings:0,diskSizeBytes:0};let e=readdirSync(s).filter(a=>a.startsWith("batch-")&&a.endsWith(".json")),t=0,r=0;for(let a of e)try{let i=join(s,a),n=readFileSync(i,"utf-8");r+=n.length;let c=JSON.parse(n);t+=c.embeddings.length;}catch{}return {batchCount:e.length,totalEmbeddings:t,diskSizeBytes:r}}function vt(){let s=W();if(existsSync(s))try{rmSync(s,{recursive:!0,force:!0}),I.i("DUMP","Cleaned up dump directory");}catch(e){I.w("DUMP",`Could not clean dump dir: ${e}`);}}function Et(){return te().totalEmbeddings>0}function St(s){return Array.from(s)}function Ct(s){return new Float32Array(s)}R();var Tt={maxTokens:512,expandableTypes:["class","interface","struct","trait","impl_block"],minChildrenForExpansion:2,includeParentInChildName:true};function kt(s){let e=s.location;if(!e?.start?.line||!e?.end?.line)return 100;let t=e.end.line-e.start.line+1,r=s.type==="interface"?6:10;return t*r}function qt(s,e){let t={...Tt,...e};return !t.expandableTypes.includes(s.type)||!s.children||s.children.length<t.minChildrenForExpansion?false:kt(s)>t.maxTokens*.8}function Qt(s){let e=Math.min(s.location.start.line+10,s.location.end.line);return {...s,id:s.id?`${s.id}:header`:void 0,name:`${s.name} (header)`,children:void 0,location:{start:s.location.start,end:{line:e,column:0,index:s.location.start.index+500}}}}function Kt(s,e,t){let r=t?`${s.name}.${e.name}`:e.name;return {...e,id:e.id||(s.id?`${s.id}:${e.name}`:void 0),name:r,filePath:e.filePath||s.filePath,language:e.language||s.language,references:[...e.references||[],s.id||s.name]}}function Pt(s,e){let t={...Tt,...e},r=[],a=0,i=0;for(let n of s)if(qt(n,t)){a++,r.push(Qt(n));for(let c of n.children||[])r.push(Kt(n,c,t.includeParentInChildName)),i++;}else r.push(n);return a>0&&I.d("EXPANDER","Expanded large entities",{expandedCount:a,childrenAdded:i,maxTokens:t.maxTokens}),r}function It(s,e){let t=[];for(let n of s){let c=kt(n);if(c>e){let u=n.location?.end?.line&&n.location?.start?.line?n.location.end.line-n.location.start.line+1:0,g;n.type==="function"||n.type==="method"?g=`Split function into smaller functions (${u} lines \u2192 aim for <${Math.floor(e/10)} lines)`:n.type==="class"||n.type==="interface"?g="Add child methods/properties parsing or split into multiple files":g="Consider refactoring to reduce size",t.push({name:n.name,type:n.type,filePath:n.filePath||"",estimatedTokens:c,lines:u,recommendation:g});}}t.sort((n,c)=>c.estimatedTokens-n.estimatedTokens);let r=t.length,a=s.length>0?Math.round(r/s.length*100*10)/10:0,i=null;if(r>0){let c=t.slice(0,5).map(u=>` - ${u.type} "${u.name}" (${u.lines} lines, ~${u.estimatedTokens} tokens): ${u.recommendation}`).join(`
4
+ `);i=`\u26A0\uFE0F **Large Entity Warning**: ${r} entities (${a}%) exceed embedding context (${e} tokens).
5
+
6
+ These entities may have reduced search quality:
7
+ ${c}${r>5?`
8
+ ... and ${r-5} more`:""}
9
+
10
+ **Recommendations**:
11
+ 1. For large functions: Split into smaller, focused functions
12
+ 2. For large classes without parsed methods: Check if parser extracts children
13
+ 3. Consider using an embedding provider with larger context (e.g., 8192 tokens)`;}return {hasWarning:r>0,maxTokens:e,oversizedCount:r,totalEntities:s.length,oversizedPercent:a,entities:t.slice(0,10),aiMessage:i}}R();c();var re=[{text:"useState",category:"framework",language:"typescript",framework:"react"},{text:"useEffect",category:"framework",language:"typescript",framework:"react"},{text:"useContext",category:"framework",language:"typescript",framework:"react"},{text:"useReducer",category:"framework",language:"typescript",framework:"react"},{text:"useCallback",category:"framework",language:"typescript",framework:"react"},{text:"useMemo",category:"framework",language:"typescript",framework:"react"},{text:"useRef",category:"framework",language:"typescript",framework:"react"},{text:"useLayoutEffect",category:"framework",language:"typescript",framework:"react"},{text:"useImperativeHandle",category:"framework",language:"typescript",framework:"react"},{text:"useDebugValue",category:"framework",language:"typescript",framework:"react"},{text:"useDeferredValue",category:"framework",language:"typescript",framework:"react"},{text:"useTransition",category:"framework",language:"typescript",framework:"react"},{text:"useId",category:"framework",language:"typescript",framework:"react"},{text:"useSyncExternalStore",category:"framework",language:"typescript",framework:"react"},{text:"React.FC",category:"framework",language:"typescript",framework:"react"},{text:"React.Component",category:"framework",language:"typescript",framework:"react"},{text:"React.PureComponent",category:"framework",language:"typescript",framework:"react"},{text:"React.memo",category:"framework",language:"typescript",framework:"react"},{text:"React.forwardRef",category:"framework",language:"typescript",framework:"react"},{text:"React.lazy",category:"framework",language:"typescript",framework:"react"},{text:"React.Suspense",category:"framework",language:"typescript",framework:"react"},{text:"React.Fragment",category:"framework",language:"typescript",framework:"react"},{text:"React.createContext",category:"framework",language:"typescript",framework:"react"},{text:"Context.Provider",category:"framework",language:"typescript",framework:"react"},{text:"Context.Consumer",category:"framework",language:"typescript",framework:"react"},{text:"import React from 'react'",category:"framework",language:"typescript",framework:"react"},{text:"import { useState } from 'react'",category:"framework",language:"typescript",framework:"react"},{text:"import { useEffect } from 'react'",category:"framework",language:"typescript",framework:"react"},{text:"componentDidMount",embeddingText:`componentDidMount method
14
+ description: react lifecycle called after component mounts into the dom`,category:"framework",language:"typescript",framework:"react"},{text:"componentWillUnmount",embeddingText:`componentWillUnmount method
15
+ description: react lifecycle called before component is removed from the dom`,category:"framework",language:"typescript",framework:"react"},{text:"componentDidUpdate",embeddingText:`componentDidUpdate method
16
+ description: react lifecycle called after component updates
17
+ params: prevProps:object, prevState:object`,category:"framework",language:"typescript",framework:"react"},{text:"shouldComponentUpdate",embeddingText:`shouldComponentUpdate method
18
+ description: react lifecycle to optimize re-renders
19
+ returns: boolean`,category:"framework",language:"typescript",framework:"react"},{text:"render",embeddingText:`render method
20
+ description: react class component render method returns jsx element
21
+ returns: JSX.Element`,category:"framework",language:"typescript",framework:"react"},{text:"getSnapshotBeforeUpdate",embeddingText:`getSnapshotBeforeUpdate method
22
+ description: react lifecycle captures snapshot before dom update`,category:"framework",language:"typescript",framework:"react"},{text:"getDerivedStateFromProps",embeddingText:`getDerivedStateFromProps method
23
+ description: react static lifecycle to sync state from props
24
+ returns: object|null`,category:"framework",language:"typescript",framework:"react"},{text:"return (<div>",category:"pattern",language:"typescript",framework:"react"},{text:"className=",category:"pattern",language:"typescript",framework:"react"},{text:"onClick=",category:"pattern",language:"typescript",framework:"react"},{text:"onChange=",category:"pattern",language:"typescript",framework:"react"},{text:"{children}",category:"pattern",language:"typescript",framework:"react"},{text:"key=",category:"pattern",language:"typescript",framework:"react"},{text:"ref=",category:"pattern",language:"typescript",framework:"react"}],ae=[{text:"@Component",category:"framework",language:"typescript",framework:"angular"},{text:"@Injectable",category:"framework",language:"typescript",framework:"angular"},{text:"@NgModule",category:"framework",language:"typescript",framework:"angular"},{text:"@Directive",category:"framework",language:"typescript",framework:"angular"},{text:"@Pipe",category:"framework",language:"typescript",framework:"angular"},{text:"@Input",category:"framework",language:"typescript",framework:"angular"},{text:"@Output",category:"framework",language:"typescript",framework:"angular"},{text:"@ViewChild",category:"framework",language:"typescript",framework:"angular"},{text:"@ViewChildren",category:"framework",language:"typescript",framework:"angular"},{text:"@ContentChild",category:"framework",language:"typescript",framework:"angular"},{text:"@ContentChildren",category:"framework",language:"typescript",framework:"angular"},{text:"@HostListener",category:"framework",language:"typescript",framework:"angular"},{text:"@HostBinding",category:"framework",language:"typescript",framework:"angular"},{text:"ngOnInit",embeddingText:`ngOnInit method
25
+ description: angular lifecycle hook called on component initialization`,category:"framework",language:"typescript",framework:"angular"},{text:"ngOnDestroy",embeddingText:`ngOnDestroy method
26
+ description: angular lifecycle hook called before component is destroyed`,category:"framework",language:"typescript",framework:"angular"},{text:"ngOnChanges",embeddingText:`ngOnChanges method
27
+ description: angular lifecycle hook called when input properties change
28
+ params: changes:SimpleChanges`,category:"framework",language:"typescript",framework:"angular"},{text:"ngAfterViewInit",embeddingText:`ngAfterViewInit method
29
+ description: angular lifecycle hook called after component view is initialized`,category:"framework",language:"typescript",framework:"angular"},{text:"ngAfterContentInit",embeddingText:`ngAfterContentInit method
30
+ description: angular lifecycle hook called after content is projected into the component`,category:"framework",language:"typescript",framework:"angular"},{text:"ngDoCheck",embeddingText:`ngDoCheck method
31
+ description: angular lifecycle hook for custom change detection`,category:"framework",language:"typescript",framework:"angular"},{text:"constructor(private",category:"pattern",language:"typescript",framework:"angular"},{text:"inject()",category:"framework",language:"typescript",framework:"angular"},{text:"Observable",category:"framework",language:"typescript",framework:"angular"},{text:"Subject",category:"framework",language:"typescript",framework:"angular"},{text:"BehaviorSubject",category:"framework",language:"typescript",framework:"angular"},{text:"ReplaySubject",category:"framework",language:"typescript",framework:"angular"},{text:".subscribe",category:"framework",language:"typescript",framework:"angular"},{text:".pipe",category:"framework",language:"typescript",framework:"angular"},{text:"map()",category:"framework",language:"typescript",framework:"angular"},{text:"filter()",category:"framework",language:"typescript",framework:"angular"},{text:"switchMap()",category:"framework",language:"typescript",framework:"angular"},{text:"mergeMap()",category:"framework",language:"typescript",framework:"angular"},{text:"catchError()",category:"framework",language:"typescript",framework:"angular"},{text:"takeUntil()",category:"framework",language:"typescript",framework:"angular"},{text:"tap()",category:"framework",language:"typescript",framework:"angular"},{text:"signal()",category:"framework",language:"typescript",framework:"angular"},{text:"computed()",category:"framework",language:"typescript",framework:"angular"},{text:"effect()",category:"framework",language:"typescript",framework:"angular"},{text:"import { Component } from '@angular/core'",category:"framework",language:"typescript",framework:"angular"},{text:"import { Injectable } from '@angular/core'",category:"framework",language:"typescript",framework:"angular"},{text:"import { Observable } from 'rxjs'",category:"framework",language:"typescript",framework:"angular"}],ne=[{text:"ref",category:"framework",language:"typescript",framework:"vue"},{text:"reactive",category:"framework",language:"typescript",framework:"vue"},{text:"computed",category:"framework",language:"typescript",framework:"vue"},{text:"watch",category:"framework",language:"typescript",framework:"vue"},{text:"watchEffect",category:"framework",language:"typescript",framework:"vue"},{text:"onMounted",category:"framework",language:"typescript",framework:"vue"},{text:"onUnmounted",category:"framework",language:"typescript",framework:"vue"},{text:"onUpdated",category:"framework",language:"typescript",framework:"vue"},{text:"provide",category:"framework",language:"typescript",framework:"vue"},{text:"inject",category:"framework",language:"typescript",framework:"vue"},{text:"defineProps",category:"framework",language:"typescript",framework:"vue"},{text:"defineEmits",category:"framework",language:"typescript",framework:"vue"},{text:"defineExpose",category:"framework",language:"typescript",framework:"vue"},{text:"data()",category:"framework",language:"typescript",framework:"vue"},{text:"methods:",category:"framework",language:"typescript",framework:"vue"},{text:"computed:",category:"framework",language:"typescript",framework:"vue"},{text:"watch:",category:"framework",language:"typescript",framework:"vue"},{text:"props:",category:"framework",language:"typescript",framework:"vue"},{text:"emits:",category:"framework",language:"typescript",framework:"vue"},{text:"v-if",category:"pattern",language:"typescript",framework:"vue"},{text:"v-else",category:"pattern",language:"typescript",framework:"vue"},{text:"v-for",category:"pattern",language:"typescript",framework:"vue"},{text:"v-bind",category:"pattern",language:"typescript",framework:"vue"},{text:"v-on",category:"pattern",language:"typescript",framework:"vue"},{text:"v-model",category:"pattern",language:"typescript",framework:"vue"},{text:"v-show",category:"pattern",language:"typescript",framework:"vue"},{text:"v-slot",category:"pattern",language:"typescript",framework:"vue"},{text:"import { ref } from 'vue'",category:"framework",language:"typescript",framework:"vue"},{text:"import { defineComponent } from 'vue'",category:"framework",language:"typescript",framework:"vue"}],ie=[{text:"app.get",category:"framework",language:"typescript",framework:"express"},{text:"app.post",category:"framework",language:"typescript",framework:"express"},{text:"app.put",category:"framework",language:"typescript",framework:"express"},{text:"app.delete",category:"framework",language:"typescript",framework:"express"},{text:"app.patch",category:"framework",language:"typescript",framework:"express"},{text:"app.use",category:"framework",language:"typescript",framework:"express"},{text:"req.body",category:"framework",language:"typescript",framework:"express"},{text:"req.params",category:"framework",language:"typescript",framework:"express"},{text:"req.query",category:"framework",language:"typescript",framework:"express"},{text:"req.headers",category:"framework",language:"typescript",framework:"express"},{text:"res.json",category:"framework",language:"typescript",framework:"express"},{text:"res.send",category:"framework",language:"typescript",framework:"express"},{text:"res.status",category:"framework",language:"typescript",framework:"express"},{text:"res.redirect",category:"framework",language:"typescript",framework:"express"},{text:"(req, res, next)",category:"pattern",language:"typescript",framework:"express"},{text:"next()",category:"framework",language:"typescript",framework:"express"},{text:"import express from 'express'",category:"framework",language:"typescript",framework:"express"},{text:"const app = express()",category:"pattern",language:"typescript",framework:"express"},{text:"app.listen",category:"framework",language:"typescript",framework:"express"}],se=[{text:"@Controller",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Injectable",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Module",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Get",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Post",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Put",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Delete",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Patch",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Body",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Param",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Query",category:"framework",language:"typescript",framework:"nestjs"},{text:"@Headers",category:"framework",language:"typescript",framework:"nestjs"},{text:"@UseGuards",category:"framework",language:"typescript",framework:"nestjs"},{text:"@UsePipes",category:"framework",language:"typescript",framework:"nestjs"},{text:"@UseInterceptors",category:"framework",language:"typescript",framework:"nestjs"},{text:"import { Controller } from '@nestjs/common'",category:"framework",language:"typescript",framework:"nestjs"},{text:"import { Injectable } from '@nestjs/common'",category:"framework",language:"typescript",framework:"nestjs"}];var oe=[{text:"fmt.Println",category:"stdlib",language:"go"},{text:"fmt.Printf",category:"stdlib",language:"go"},{text:"fmt.Sprintf",category:"stdlib",language:"go"},{text:"fmt.Errorf",category:"stdlib",language:"go"},{text:"make",category:"builtin",language:"go"},{text:"new",category:"builtin",language:"go"},{text:"append",category:"builtin",language:"go"},{text:"copy",category:"builtin",language:"go"},{text:"delete",category:"builtin",language:"go"},{text:"len",category:"builtin",language:"go"},{text:"cap",category:"builtin",language:"go"},{text:"close",category:"builtin",language:"go"},{text:"panic",category:"builtin",language:"go"},{text:"recover",category:"builtin",language:"go"},{text:'import "fmt"',category:"stdlib",language:"go"},{text:'import "os"',category:"stdlib",language:"go"},{text:'import "io"',category:"stdlib",language:"go"},{text:'import "net/http"',category:"stdlib",language:"go"},{text:'import "encoding/json"',category:"stdlib",language:"go"},{text:'import "context"',category:"stdlib",language:"go"},{text:'import "sync"',category:"stdlib",language:"go"},{text:'import "time"',category:"stdlib",language:"go"},{text:'import "errors"',category:"stdlib",language:"go"},{text:'import "strings"',category:"stdlib",language:"go"},{text:"if err != nil",category:"pattern",language:"go"},{text:"defer",category:"pattern",language:"go"},{text:"go func()",category:"pattern",language:"go"},{text:"select",category:"pattern",language:"go"},{text:"chan",category:"pattern",language:"go"},{text:"interface{}",category:"pattern",language:"go"},{text:"struct{}",category:"pattern",language:"go"},{text:"New",embeddingText:`New function
32
+ description: go constructor function returns new instance`,category:"pattern",language:"go"},{text:"String",embeddingText:`String method
33
+ description: go stringer interface returns string representation
34
+ returns: string`,category:"pattern",language:"go"},{text:"Error",embeddingText:`Error method
35
+ description: go error interface returns error message
36
+ returns: string`,category:"pattern",language:"go"},{text:"main",embeddingText:`main function
37
+ description: go application entry point`,category:"pattern",language:"go"},{text:"init",embeddingText:`init function
38
+ description: go package initialization function called before main`,category:"pattern",language:"go"},{text:"Close",embeddingText:`Close method
39
+ description: closes connection or resource and releases associated memory`,category:"pattern",language:"go"},{text:"ServeHTTP",embeddingText:`ServeHTTP method
40
+ description: go http handler interface serves http requests
41
+ params: w:ResponseWriter, r:*Request`,category:"pattern",language:"go"}],ce=[{text:"Option<T>",category:"builtin",language:"rust"},{text:"Result<T, E>",category:"builtin",language:"rust"},{text:"Vec<T>",category:"builtin",language:"rust"},{text:"String",category:"builtin",language:"rust"},{text:"&str",category:"builtin",language:"rust"},{text:"Box<T>",category:"builtin",language:"rust"},{text:"Rc<T>",category:"builtin",language:"rust"},{text:"Arc<T>",category:"builtin",language:"rust"},{text:"HashMap<K, V>",category:"builtin",language:"rust"},{text:"HashSet<T>",category:"builtin",language:"rust"},{text:".unwrap()",category:"builtin",language:"rust"},{text:".expect()",category:"builtin",language:"rust"},{text:".ok()",category:"builtin",language:"rust"},{text:".err()",category:"builtin",language:"rust"},{text:".map()",category:"builtin",language:"rust"},{text:".and_then()",category:"builtin",language:"rust"},{text:".or_else()",category:"builtin",language:"rust"},{text:".collect()",category:"builtin",language:"rust"},{text:".iter()",category:"builtin",language:"rust"},{text:".into_iter()",category:"builtin",language:"rust"},{text:".clone()",category:"builtin",language:"rust"},{text:"println!",category:"builtin",language:"rust"},{text:"format!",category:"builtin",language:"rust"},{text:"vec!",category:"builtin",language:"rust"},{text:"panic!",category:"builtin",language:"rust"},{text:"assert!",category:"builtin",language:"rust"},{text:"assert_eq!",category:"builtin",language:"rust"},{text:"derive",category:"builtin",language:"rust"},{text:"use std::collections::HashMap",category:"stdlib",language:"rust"},{text:"use std::io",category:"stdlib",language:"rust"},{text:"use std::fs",category:"stdlib",language:"rust"},{text:"use std::sync::Arc",category:"stdlib",language:"rust"},{text:"use std::sync::Mutex",category:"stdlib",language:"rust"},{text:"impl",category:"pattern",language:"rust"},{text:"match",category:"pattern",language:"rust"},{text:"if let",category:"pattern",language:"rust"},{text:"while let",category:"pattern",language:"rust"},{text:"async fn",category:"pattern",language:"rust"},{text:".await",category:"pattern",language:"rust"},{text:"#[derive(",category:"pattern",language:"rust"},{text:"fn main",embeddingText:`main function
42
+ description: rust application entry point`,category:"pattern",language:"rust"},{text:"fn new",embeddingText:`new function
43
+ description: rust constructor creates a new instance`,category:"pattern",language:"rust"},{text:"fn fmt",embeddingText:`fmt method
44
+ description: rust display trait implementation for formatting
45
+ params: f:Formatter
46
+ returns: Result`,category:"pattern",language:"rust"},{text:"fn from",embeddingText:`from function
47
+ description: rust from trait converts from another type`,category:"pattern",language:"rust"},{text:"fn drop",embeddingText:`drop method
48
+ description: rust drop trait cleanup called when value goes out of scope`,category:"pattern",language:"rust"}];var le=[{text:"String",category:"builtin",language:"java"},{text:"Integer",category:"builtin",language:"java"},{text:"Long",category:"builtin",language:"java"},{text:"Double",category:"builtin",language:"java"},{text:"Boolean",category:"builtin",language:"java"},{text:"Object",category:"builtin",language:"java"},{text:"Class",category:"builtin",language:"java"},{text:"List",category:"stdlib",language:"java"},{text:"ArrayList",category:"stdlib",language:"java"},{text:"LinkedList",category:"stdlib",language:"java"},{text:"Map",category:"stdlib",language:"java"},{text:"HashMap",category:"stdlib",language:"java"},{text:"TreeMap",category:"stdlib",language:"java"},{text:"Set",category:"stdlib",language:"java"},{text:"HashSet",category:"stdlib",language:"java"},{text:"TreeSet",category:"stdlib",language:"java"},{text:"Queue",category:"stdlib",language:"java"},{text:"Deque",category:"stdlib",language:"java"},{text:"Stack",category:"stdlib",language:"java"},{text:"Collections",category:"stdlib",language:"java"},{text:"Arrays",category:"stdlib",language:"java"},{text:"Stream",category:"stdlib",language:"java"},{text:".stream()",category:"stdlib",language:"java"},{text:".filter()",category:"stdlib",language:"java"},{text:".map()",category:"stdlib",language:"java"},{text:".collect()",category:"stdlib",language:"java"},{text:"Collectors.toList()",category:"stdlib",language:"java"},{text:"Optional",category:"stdlib",language:"java"},{text:"Optional.of",category:"stdlib",language:"java"},{text:"Optional.empty",category:"stdlib",language:"java"},{text:"Optional.ofNullable",category:"stdlib",language:"java"},{text:"CompletableFuture",category:"stdlib",language:"java"},{text:"ExecutorService",category:"stdlib",language:"java"},{text:"Executors",category:"stdlib",language:"java"},{text:"synchronized",category:"builtin",language:"java"},{text:"volatile",category:"builtin",language:"java"},{text:"@Override",category:"pattern",language:"java"},{text:"@Deprecated",category:"pattern",language:"java"},{text:"@SuppressWarnings",category:"pattern",language:"java"},{text:"@FunctionalInterface",category:"pattern",language:"java"},{text:"public static void main",embeddingText:`main method
49
+ description: java application entry point
50
+ params: args:String[]`,category:"pattern",language:"java"},{text:"try catch finally",category:"pattern",language:"java"},{text:"throws Exception",category:"pattern",language:"java"},{text:"implements",category:"pattern",language:"java"},{text:"extends",category:"pattern",language:"java"},{text:"toString",embeddingText:`toString method
51
+ description: java string representation of the object
52
+ returns: String`,category:"pattern",language:"java"},{text:"equals",embeddingText:`equals method
53
+ description: java equality comparison with another object
54
+ params: obj:Object
55
+ returns: boolean`,category:"pattern",language:"java"},{text:"hashCode",embeddingText:`hashCode method
56
+ description: java hash code for the object used in hash-based collections
57
+ returns: int`,category:"pattern",language:"java"},{text:"compareTo",embeddingText:`compareTo method
58
+ description: java comparable interface compares objects for ordering
59
+ returns: int`,category:"pattern",language:"java"},{text:"close",embeddingText:`close method
60
+ description: java closeable interface releases resources
61
+ returns: void`,category:"pattern",language:"java"}],ge=[{text:"listOf",category:"builtin",language:"kotlin"},{text:"mutableListOf",category:"builtin",language:"kotlin"},{text:"mapOf",category:"builtin",language:"kotlin"},{text:"mutableMapOf",category:"builtin",language:"kotlin"},{text:"setOf",category:"builtin",language:"kotlin"},{text:"mutableSetOf",category:"builtin",language:"kotlin"},{text:".let",category:"builtin",language:"kotlin"},{text:".run",category:"builtin",language:"kotlin"},{text:".with",category:"builtin",language:"kotlin"},{text:".apply",category:"builtin",language:"kotlin"},{text:".also",category:"builtin",language:"kotlin"},{text:"?.",category:"builtin",language:"kotlin"},{text:"?:",category:"builtin",language:"kotlin"},{text:"!!",category:"builtin",language:"kotlin"},{text:"suspend fun",category:"stdlib",language:"kotlin"},{text:"launch",category:"stdlib",language:"kotlin"},{text:"async",category:"stdlib",language:"kotlin"},{text:"await",category:"stdlib",language:"kotlin"},{text:"withContext",category:"stdlib",language:"kotlin"},{text:"Dispatchers.IO",category:"stdlib",language:"kotlin"},{text:"Dispatchers.Main",category:"stdlib",language:"kotlin"},{text:"CoroutineScope",category:"stdlib",language:"kotlin"},{text:"Flow",category:"stdlib",language:"kotlin"},{text:"data class",category:"pattern",language:"kotlin"},{text:"sealed class",category:"pattern",language:"kotlin"},{text:"object",category:"pattern",language:"kotlin"},{text:"companion object",category:"pattern",language:"kotlin"},{text:"when",category:"pattern",language:"kotlin"},{text:"is",category:"pattern",language:"kotlin"}];var de=[{text:"Array.prototype.map",category:"builtin",language:"javascript"},{text:"Array.prototype.filter",category:"builtin",language:"javascript"},{text:"Array.prototype.reduce",category:"builtin",language:"javascript"},{text:"Array.prototype.forEach",category:"builtin",language:"javascript"},{text:"Array.prototype.find",category:"builtin",language:"javascript"},{text:"Array.prototype.findIndex",category:"builtin",language:"javascript"},{text:"Array.prototype.some",category:"builtin",language:"javascript"},{text:"Array.prototype.every",category:"builtin",language:"javascript"},{text:"Array.prototype.includes",category:"builtin",language:"javascript"},{text:"Array.prototype.indexOf",category:"builtin",language:"javascript"},{text:"Array.prototype.slice",category:"builtin",language:"javascript"},{text:"Array.prototype.splice",category:"builtin",language:"javascript"},{text:"Array.prototype.concat",category:"builtin",language:"javascript"},{text:"Array.prototype.join",category:"builtin",language:"javascript"},{text:"Array.prototype.sort",category:"builtin",language:"javascript"},{text:"Array.prototype.reverse",category:"builtin",language:"javascript"},{text:"Array.prototype.flat",category:"builtin",language:"javascript"},{text:"Array.prototype.flatMap",category:"builtin",language:"javascript"},{text:"Array.from",category:"builtin",language:"javascript"},{text:"Array.isArray",category:"builtin",language:"javascript"},{text:"Object.keys",category:"builtin",language:"javascript"},{text:"Object.values",category:"builtin",language:"javascript"},{text:"Object.entries",category:"builtin",language:"javascript"},{text:"Object.assign",category:"builtin",language:"javascript"},{text:"Object.freeze",category:"builtin",language:"javascript"},{text:"Object.seal",category:"builtin",language:"javascript"},{text:"Object.create",category:"builtin",language:"javascript"},{text:"Object.defineProperty",category:"builtin",language:"javascript"},{text:"Object.getOwnPropertyNames",category:"builtin",language:"javascript"},{text:"Object.hasOwn",category:"builtin",language:"javascript"},{text:"String.prototype.split",category:"builtin",language:"javascript"},{text:"String.prototype.trim",category:"builtin",language:"javascript"},{text:"String.prototype.replace",category:"builtin",language:"javascript"},{text:"String.prototype.replaceAll",category:"builtin",language:"javascript"},{text:"String.prototype.includes",category:"builtin",language:"javascript"},{text:"String.prototype.startsWith",category:"builtin",language:"javascript"},{text:"String.prototype.endsWith",category:"builtin",language:"javascript"},{text:"String.prototype.toLowerCase",category:"builtin",language:"javascript"},{text:"String.prototype.toUpperCase",category:"builtin",language:"javascript"},{text:"String.prototype.slice",category:"builtin",language:"javascript"},{text:"String.prototype.substring",category:"builtin",language:"javascript"},{text:"String.prototype.padStart",category:"builtin",language:"javascript"},{text:"String.prototype.padEnd",category:"builtin",language:"javascript"},{text:"Promise.resolve",category:"builtin",language:"javascript"},{text:"Promise.reject",category:"builtin",language:"javascript"},{text:"Promise.all",category:"builtin",language:"javascript"},{text:"Promise.allSettled",category:"builtin",language:"javascript"},{text:"Promise.race",category:"builtin",language:"javascript"},{text:"Promise.any",category:"builtin",language:"javascript"},{text:"new Promise",category:"builtin",language:"javascript"},{text:"async function",category:"builtin",language:"javascript"},{text:"await",category:"builtin",language:"javascript"},{text:"console.log",category:"builtin",language:"javascript"},{text:"console.error",category:"builtin",language:"javascript"},{text:"console.warn",category:"builtin",language:"javascript"},{text:"console.info",category:"builtin",language:"javascript"},{text:"console.debug",category:"builtin",language:"javascript"},{text:"console.table",category:"builtin",language:"javascript"},{text:"console.time",category:"builtin",language:"javascript"},{text:"console.timeEnd",category:"builtin",language:"javascript"},{text:"Math.abs",category:"builtin",language:"javascript"},{text:"Math.floor",category:"builtin",language:"javascript"},{text:"Math.ceil",category:"builtin",language:"javascript"},{text:"Math.round",category:"builtin",language:"javascript"},{text:"Math.max",category:"builtin",language:"javascript"},{text:"Math.min",category:"builtin",language:"javascript"},{text:"Math.random",category:"builtin",language:"javascript"},{text:"Math.pow",category:"builtin",language:"javascript"},{text:"Math.sqrt",category:"builtin",language:"javascript"},{text:"JSON.parse",category:"builtin",language:"javascript"},{text:"JSON.stringify",category:"builtin",language:"javascript"},{text:"new Date",category:"builtin",language:"javascript"},{text:"Date.now",category:"builtin",language:"javascript"},{text:"Date.parse",category:"builtin",language:"javascript"},{text:"new Map",category:"builtin",language:"javascript"},{text:"new Set",category:"builtin",language:"javascript"},{text:"new WeakMap",category:"builtin",language:"javascript"},{text:"new WeakSet",category:"builtin",language:"javascript"},{text:"setTimeout",category:"builtin",language:"javascript"},{text:"setInterval",category:"builtin",language:"javascript"},{text:"clearTimeout",category:"builtin",language:"javascript"},{text:"clearInterval",category:"builtin",language:"javascript"},{text:"try catch",category:"pattern",language:"javascript"},{text:"throw new Error",category:"pattern",language:"javascript"},{text:"try catch finally",category:"pattern",language:"javascript"}],ue=[{text:"constructor",embeddingText:`constructor function
62
+ description: class constructor initializes instance`,category:"pattern",language:"javascript"},{text:"toString",embeddingText:`toString method
63
+ description: returns string representation of the object
64
+ returns: string`,category:"pattern",language:"javascript"},{text:"valueOf",embeddingText:`valueOf method
65
+ description: returns primitive value of the object`,category:"pattern",language:"javascript"},{text:"toJSON",embeddingText:`toJSON method
66
+ description: returns json-serializable representation of the object
67
+ returns: object`,category:"pattern",language:"javascript"},{text:"fromJSON",embeddingText:`fromJSON function
68
+ description: deserializes object from json representation
69
+ returns: object`,category:"pattern",language:"javascript"},{text:"clone",embeddingText:`clone method
70
+ description: creates a deep copy of the object`,category:"pattern",language:"javascript"},{text:"equals",embeddingText:`equals method
71
+ description: compares equality with another object
72
+ returns: boolean`,category:"pattern",language:"javascript"},{text:"main",embeddingText:`main function
73
+ description: application entry point`,category:"pattern",language:"javascript"},{text:"init",embeddingText:`init function
74
+ description: initializes module or service`,category:"pattern",language:"javascript"},{text:"setup",embeddingText:`setup function
75
+ description: sets up configuration or dependencies`,category:"pattern",language:"javascript"},{text:"teardown",embeddingText:`teardown function
76
+ description: cleans up resources and state`,category:"pattern",language:"javascript"},{text:"destroy",embeddingText:`destroy method
77
+ description: cleans up resources and event listeners`,category:"pattern",language:"javascript"},{text:"dispose",embeddingText:`dispose method
78
+ description: releases managed resources`,category:"pattern",language:"javascript"}],me=[{text:"Partial<T>",category:"builtin",language:"typescript"},{text:"Required<T>",category:"builtin",language:"typescript"},{text:"Readonly<T>",category:"builtin",language:"typescript"},{text:"Pick<T, K>",category:"builtin",language:"typescript"},{text:"Omit<T, K>",category:"builtin",language:"typescript"},{text:"Record<K, V>",category:"builtin",language:"typescript"},{text:"Exclude<T, U>",category:"builtin",language:"typescript"},{text:"Extract<T, U>",category:"builtin",language:"typescript"},{text:"NonNullable<T>",category:"builtin",language:"typescript"},{text:"ReturnType<T>",category:"builtin",language:"typescript"},{text:"Parameters<T>",category:"builtin",language:"typescript"},{text:"InstanceType<T>",category:"builtin",language:"typescript"},{text:"Awaited<T>",category:"builtin",language:"typescript"},{text:"keyof",category:"builtin",language:"typescript"},{text:"typeof",category:"builtin",language:"typescript"},{text:"infer",category:"builtin",language:"typescript"},{text:"extends",category:"builtin",language:"typescript"},{text:"as const",category:"builtin",language:"typescript"},{text:"satisfies",category:"builtin",language:"typescript"},{text:"interface",category:"pattern",language:"typescript"},{text:"type alias",category:"pattern",language:"typescript"},{text:"enum",category:"pattern",language:"typescript"},{text:"generic function",category:"pattern",language:"typescript"},{text:"type guard",category:"pattern",language:"typescript"},{text:"discriminated union",category:"pattern",language:"typescript"}];var pe=[{text:"fs.readFile",category:"stdlib",language:"javascript"},{text:"fs.writeFile",category:"stdlib",language:"javascript"},{text:"fs.readFileSync",category:"stdlib",language:"javascript"},{text:"fs.writeFileSync",category:"stdlib",language:"javascript"},{text:"fs.readdir",category:"stdlib",language:"javascript"},{text:"fs.readdirSync",category:"stdlib",language:"javascript"},{text:"fs.stat",category:"stdlib",language:"javascript"},{text:"fs.statSync",category:"stdlib",language:"javascript"},{text:"fs.mkdir",category:"stdlib",language:"javascript"},{text:"fs.mkdirSync",category:"stdlib",language:"javascript"},{text:"fs.unlink",category:"stdlib",language:"javascript"},{text:"fs.unlinkSync",category:"stdlib",language:"javascript"},{text:"fs.existsSync",category:"stdlib",language:"javascript"},{text:"fs.copyFile",category:"stdlib",language:"javascript"},{text:"fs.rename",category:"stdlib",language:"javascript"},{text:"fs.createReadStream",category:"stdlib",language:"javascript"},{text:"fs.createWriteStream",category:"stdlib",language:"javascript"},{text:"fs/promises",category:"stdlib",language:"javascript"},{text:"import fs from 'node:fs'",category:"stdlib",language:"javascript"},{text:"import { readFile, writeFile } from 'node:fs/promises'",category:"stdlib",language:"javascript"},{text:"path.join",category:"stdlib",language:"javascript"},{text:"path.resolve",category:"stdlib",language:"javascript"},{text:"path.dirname",category:"stdlib",language:"javascript"},{text:"path.basename",category:"stdlib",language:"javascript"},{text:"path.extname",category:"stdlib",language:"javascript"},{text:"path.parse",category:"stdlib",language:"javascript"},{text:"path.relative",category:"stdlib",language:"javascript"},{text:"path.isAbsolute",category:"stdlib",language:"javascript"},{text:"import path from 'node:path'",category:"stdlib",language:"javascript"},{text:"import { join, resolve, dirname } from 'node:path'",category:"stdlib",language:"javascript"},{text:"process.env",category:"stdlib",language:"javascript"},{text:"process.exit",category:"stdlib",language:"javascript"},{text:"process.cwd",category:"stdlib",language:"javascript"},{text:"process.argv",category:"stdlib",language:"javascript"},{text:"process.platform",category:"stdlib",language:"javascript"},{text:"process.stdout",category:"stdlib",language:"javascript"},{text:"process.stderr",category:"stdlib",language:"javascript"},{text:"os.homedir",category:"stdlib",language:"javascript"},{text:"os.platform",category:"stdlib",language:"javascript"},{text:"os.tmpdir",category:"stdlib",language:"javascript"},{text:"os.cpus",category:"stdlib",language:"javascript"},{text:"os.freemem",category:"stdlib",language:"javascript"},{text:"import os from 'node:os'",category:"stdlib",language:"javascript"},{text:"Buffer.from",category:"builtin",language:"javascript"},{text:"Buffer.alloc",category:"builtin",language:"javascript"},{text:"Buffer.concat",category:"builtin",language:"javascript"},{text:"Buffer.isBuffer",category:"builtin",language:"javascript"},{text:"http.createServer",category:"stdlib",language:"javascript"},{text:"https.request",category:"stdlib",language:"javascript"},{text:"import http from 'node:http'",category:"stdlib",language:"javascript"},{text:"import https from 'node:https'",category:"stdlib",language:"javascript"},{text:"new URL",category:"builtin",language:"javascript"},{text:"URL.parse",category:"stdlib",language:"javascript"},{text:"import { URL } from 'node:url'",category:"stdlib",language:"javascript"},{text:"crypto.randomUUID",category:"stdlib",language:"javascript"},{text:"crypto.createHash",category:"stdlib",language:"javascript"},{text:"crypto.createHmac",category:"stdlib",language:"javascript"},{text:"import crypto from 'node:crypto'",category:"stdlib",language:"javascript"},{text:"stream.Readable",category:"stdlib",language:"javascript"},{text:"stream.Writable",category:"stdlib",language:"javascript"},{text:"stream.Transform",category:"stdlib",language:"javascript"},{text:"EventEmitter",category:"stdlib",language:"javascript"},{text:"import { EventEmitter } from 'node:events'",category:"stdlib",language:"javascript"},{text:"child_process.exec",category:"stdlib",language:"javascript"},{text:"child_process.spawn",category:"stdlib",language:"javascript"},{text:"child_process.execSync",category:"stdlib",language:"javascript"},{text:"util.promisify",category:"stdlib",language:"javascript"},{text:"util.inspect",category:"stdlib",language:"javascript"},{text:"import { promisify } from 'node:util'",category:"stdlib",language:"javascript"},{text:"fileURLToPath",embeddingText:`fileURLToPath function
79
+ description: convert file URL to filesystem path
80
+ returns: string
81
+ params: url:URL|string`,category:"stdlib",language:"javascript"},{text:"import.meta.url",category:"pattern",language:"javascript"},{text:"import.meta.dirname",category:"pattern",language:"javascript"},{text:"import { fileURLToPath } from 'node:url'",category:"stdlib",language:"javascript"}];var he=[{text:"print",category:"builtin",language:"python"},{text:"len",category:"builtin",language:"python"},{text:"range",category:"builtin",language:"python"},{text:"enumerate",category:"builtin",language:"python"},{text:"zip",category:"builtin",language:"python"},{text:"map",category:"builtin",language:"python"},{text:"filter",category:"builtin",language:"python"},{text:"sorted",category:"builtin",language:"python"},{text:"reversed",category:"builtin",language:"python"},{text:"sum",category:"builtin",language:"python"},{text:"min",category:"builtin",language:"python"},{text:"max",category:"builtin",language:"python"},{text:"abs",category:"builtin",language:"python"},{text:"round",category:"builtin",language:"python"},{text:"int",category:"builtin",language:"python"},{text:"float",category:"builtin",language:"python"},{text:"str",category:"builtin",language:"python"},{text:"bool",category:"builtin",language:"python"},{text:"list",category:"builtin",language:"python"},{text:"dict",category:"builtin",language:"python"},{text:"set",category:"builtin",language:"python"},{text:"tuple",category:"builtin",language:"python"},{text:"type",category:"builtin",language:"python"},{text:"isinstance",category:"builtin",language:"python"},{text:"issubclass",category:"builtin",language:"python"},{text:"hasattr",category:"builtin",language:"python"},{text:"getattr",category:"builtin",language:"python"},{text:"setattr",category:"builtin",language:"python"},{text:"open",category:"builtin",language:"python"},{text:"input",category:"builtin",language:"python"},{text:"from typing import List",category:"stdlib",language:"python"},{text:"from typing import Dict",category:"stdlib",language:"python"},{text:"from typing import Optional",category:"stdlib",language:"python"},{text:"from typing import Union",category:"stdlib",language:"python"},{text:"from typing import Tuple",category:"stdlib",language:"python"},{text:"from typing import Callable",category:"stdlib",language:"python"},{text:"from typing import Any",category:"stdlib",language:"python"},{text:"from typing import TypeVar",category:"stdlib",language:"python"},{text:"from typing import Generic",category:"stdlib",language:"python"},{text:"import os",category:"stdlib",language:"python"},{text:"import sys",category:"stdlib",language:"python"},{text:"import json",category:"stdlib",language:"python"},{text:"import re",category:"stdlib",language:"python"},{text:"import logging",category:"stdlib",language:"python"},{text:"import datetime",category:"stdlib",language:"python"},{text:"import pathlib",category:"stdlib",language:"python"},{text:"from pathlib import Path",category:"stdlib",language:"python"},{text:"import asyncio",category:"stdlib",language:"python"},{text:"from dataclasses import dataclass",category:"stdlib",language:"python"},{text:"from enum import Enum",category:"stdlib",language:"python"},{text:"from abc import ABC, abstractmethod",category:"stdlib",language:"python"},{text:"def __init__(self)",embeddingText:`__init__ method
82
+ description: python class constructor initializes instance attributes`,category:"pattern",language:"python"},{text:"def __str__(self)",embeddingText:`__str__ method
83
+ description: python string representation of the object
84
+ returns: str`,category:"pattern",language:"python"},{text:"def __repr__(self)",embeddingText:`__repr__ method
85
+ description: python developer representation of the object
86
+ returns: str`,category:"pattern",language:"python"},{text:"def __len__(self)",embeddingText:`__len__ method
87
+ description: python length of the object
88
+ returns: int`,category:"pattern",language:"python"},{text:"def __eq__(self, other)",embeddingText:`__eq__ method
89
+ description: python equality comparison
90
+ params: other:object
91
+ returns: bool`,category:"pattern",language:"python"},{text:"def __lt__(self, other)",embeddingText:`__lt__ method
92
+ description: python less-than comparison
93
+ params: other:object
94
+ returns: bool`,category:"pattern",language:"python"},{text:"def __hash__(self)",embeddingText:`__hash__ method
95
+ description: python hash value for the object
96
+ returns: int`,category:"pattern",language:"python"},{text:"def __contains__(self, item)",embeddingText:`__contains__ method
97
+ description: python membership test operator
98
+ params: item:object
99
+ returns: bool`,category:"pattern",language:"python"},{text:"def __iter__(self)",embeddingText:`__iter__ method
100
+ description: python iterator protocol returns iterator object`,category:"pattern",language:"python"},{text:"def __next__(self)",embeddingText:`__next__ method
101
+ description: python iterator returns next value
102
+ returns: object`,category:"pattern",language:"python"},{text:"def __enter__(self)",embeddingText:`__enter__ method
103
+ description: python context manager enter returns context object`,category:"pattern",language:"python"},{text:"def __exit__(self, exc_type, exc_val, exc_tb)",embeddingText:`__exit__ method
104
+ description: python context manager exit handles cleanup and exception suppression
105
+ returns: bool`,category:"pattern",language:"python"},{text:"def __getitem__(self, key)",embeddingText:`__getitem__ method
106
+ description: python subscript access operator
107
+ params: key:object`,category:"pattern",language:"python"},{text:"def __setitem__(self, key, value)",embeddingText:`__setitem__ method
108
+ description: python subscript assignment operator
109
+ params: key:object, value:object`,category:"pattern",language:"python"},{text:"def __call__(self)",embeddingText:`__call__ method
110
+ description: python callable object invocation`,category:"pattern",language:"python"},{text:"@property",category:"pattern",language:"python"},{text:"@staticmethod",category:"pattern",language:"python"},{text:"@classmethod",category:"pattern",language:"python"},{text:"@dataclass",category:"pattern",language:"python"},{text:"async def",category:"pattern",language:"python"},{text:"with open",category:"pattern",language:"python"},{text:"try except",category:"pattern",language:"python"},{text:"if __name__ == '__main__'",category:"pattern",language:"python"}];var ye=[{text:"describe",embeddingText:`describe function
111
+ description: defines a test suite grouping related tests`,category:"pattern",language:"javascript"},{text:"describe.each",embeddingText:`describe.each function
112
+ description: parameterized test suite run for each dataset`,category:"pattern",language:"javascript"},{text:"describe.only",embeddingText:`describe.only function
113
+ description: focused test suite runs only this block`,category:"pattern",language:"javascript"},{text:"describe.skip",embeddingText:`describe.skip function
114
+ description: skipped test suite`,category:"pattern",language:"javascript"},{text:"it",embeddingText:`it function
115
+ description: defines a single test case assertion`,category:"pattern",language:"javascript"},{text:"test",embeddingText:`test function
116
+ description: defines a single test case assertion`,category:"pattern",language:"javascript"},{text:"it.each",embeddingText:`it.each function
117
+ description: parameterized test case run for each dataset`,category:"pattern",language:"javascript"},{text:"test.each",embeddingText:`test.each function
118
+ description: parameterized test case run for each dataset`,category:"pattern",language:"javascript"},{text:"it.only",embeddingText:`it.only function
119
+ description: focused test runs only this case`,category:"pattern",language:"javascript"},{text:"test.only",embeddingText:`test.only function
120
+ description: focused test runs only this case`,category:"pattern",language:"javascript"},{text:"it.skip",embeddingText:`it.skip function
121
+ description: skipped test case`,category:"pattern",language:"javascript"},{text:"test.skip",embeddingText:`test.skip function
122
+ description: skipped test case`,category:"pattern",language:"javascript"},{text:"beforeEach",embeddingText:`beforeEach function
123
+ description: runs setup before each test case in the suite`,category:"pattern",language:"javascript"},{text:"afterEach",embeddingText:`afterEach function
124
+ description: runs cleanup after each test case in the suite`,category:"pattern",language:"javascript"},{text:"beforeAll",embeddingText:`beforeAll function
125
+ description: runs once before all tests in the suite`,category:"pattern",language:"javascript"},{text:"afterAll",embeddingText:`afterAll function
126
+ description: runs once after all tests in the suite`,category:"pattern",language:"javascript"},{text:"expect",category:"pattern",language:"javascript"},{text:"expect().toBe",category:"pattern",language:"javascript"},{text:"expect().toEqual",category:"pattern",language:"javascript"},{text:"expect().toBeTruthy",category:"pattern",language:"javascript"},{text:"expect().toBeFalsy",category:"pattern",language:"javascript"},{text:"expect().toBeNull",category:"pattern",language:"javascript"},{text:"expect().toBeUndefined",category:"pattern",language:"javascript"},{text:"expect().toBeDefined",category:"pattern",language:"javascript"},{text:"expect().toContain",category:"pattern",language:"javascript"},{text:"expect().toHaveLength",category:"pattern",language:"javascript"},{text:"expect().toThrow",category:"pattern",language:"javascript"},{text:"expect().toHaveBeenCalled",category:"pattern",language:"javascript"},{text:"expect().toHaveBeenCalledWith",category:"pattern",language:"javascript"},{text:"expect().resolves",category:"pattern",language:"javascript"},{text:"expect().rejects",category:"pattern",language:"javascript"},{text:"expect().toMatchSnapshot",category:"pattern",language:"javascript"},{text:"expect().toMatchInlineSnapshot",category:"pattern",language:"javascript"},{text:"jest.fn",category:"framework",language:"javascript"},{text:"jest.mock",category:"framework",language:"javascript"},{text:"jest.spyOn",category:"framework",language:"javascript"},{text:"jest.clearAllMocks",category:"framework",language:"javascript"},{text:"jest.resetAllMocks",category:"framework",language:"javascript"},{text:"jest.restoreAllMocks",category:"framework",language:"javascript"},{text:"jest.useFakeTimers",category:"framework",language:"javascript"},{text:"jest.useRealTimers",category:"framework",language:"javascript"},{text:"jest.runAllTimers",category:"framework",language:"javascript"},{text:"jest.advanceTimersByTime",category:"framework",language:"javascript"},{text:"vi.fn",category:"framework",language:"javascript"},{text:"vi.mock",category:"framework",language:"javascript"},{text:"vi.spyOn",category:"framework",language:"javascript"},{text:"vi.clearAllMocks",category:"framework",language:"javascript"},{text:"vi.useFakeTimers",category:"framework",language:"javascript"},{text:"vi.advanceTimersByTime",category:"framework",language:"javascript"},{text:"assert.equal",category:"pattern",language:"javascript"},{text:"assert.deepEqual",category:"pattern",language:"javascript"},{text:"assert.throws",category:"pattern",language:"javascript"},{text:"chai.expect",category:"framework",language:"javascript"},{text:"should.equal",category:"framework",language:"javascript"},{text:"test.describe",category:"framework",language:"typescript",framework:"playwright"},{text:"page.goto",category:"framework",language:"typescript",framework:"playwright"},{text:"page.click",category:"framework",language:"typescript",framework:"playwright"},{text:"page.fill",category:"framework",language:"typescript",framework:"playwright"},{text:"expect(page).toHaveURL",category:"framework",language:"typescript",framework:"playwright"},{text:"expect(page).toHaveTitle",category:"framework",language:"typescript",framework:"playwright"},{text:"import { describe, it, expect } from 'vitest'",category:"pattern",language:"javascript"},{text:"import { describe, expect, test } from '@jest/globals'",category:"pattern",language:"javascript"}];function fe(){return [...de,...ue,...me,...pe,...he,...le,...ge,...oe,...ce,...re,...ae,...ne,...ie,...se,...ye]}var q=class s{static instance=null;cache=new Map;textToHash=new Map;initialized=false;static MAX_CACHE_SIZE=5e4;constructor(){}static getInstance(){return s.instance||(s.instance=new s),s.instance}async initialize(e,t){if(!this.initialized){this.initialized=true;try{let r=dirname(fileURLToPath(import.meta.url)),a=e.replace(/\//g,"_"),i=join(r,"..","semantic","global-cache-prebuilt",a),n=join(i,"metadata.json");if(!existsSync(n)){I.d("GLOBALCACHE","No pre-built embeddings found, starting empty",{model:e});return}let c=JSON.parse(readFileSync(n,"utf-8"));if(c.model!==e||c.dimension!==t){I.d("GLOBALCACHE","Pre-built model/dim mismatch, starting empty",{prebuilt:`${c.model}/${c.dimension}`,current:`${e}/${t}`});return}let u=join(i,"embeddings.bin"),g=join(i,"texts.json");if(!existsSync(u)||!existsSync(g)){I.d("GLOBALCACHE","Pre-built files incomplete, starting empty");return}let x=JSON.parse(readFileSync(g,"utf-8"));for(let[y,l]of Object.entries(x))this.textToHash.set(l,y);let p=readFileSync(u),b=Object.keys(x),m=Math.min(b.length,p.length/(t*4));for(let y=0;y<m;y++){let l=y*t*4,d=new Float32Array(p.buffer,p.byteOffset+l,t);this.cache.set(b[y],new Float32Array(d));}I.i("GLOBALCACHE","Loaded pre-built embeddings",{count:this.cache.size,model:e}),M("GLOBALCACHE",{cacheSize:this.cache.size,textToHashSize:this.textToHash.size});}catch(r){I.w("GLOBALCACHE","Failed to load pre-built embeddings (non-fatal)",{error:r.message});}}}has(e){let t=e.trim().toLowerCase();return this.textToHash.has(t)}get(e){let t=e.trim().toLowerCase(),r=this.textToHash.get(t);return r?this.cache.get(r)??null:null}set(e,t){let r=e.trim().toLowerCase(),a=b$5(r).slice(0,16);this.textToHash.set(r,a),this.cache.set(a,t),this.evictOldest();}setEntry(e,t){if(this.set(e.text,t),e.embeddingText&&e.embeddingText!==e.text){let r=e.embeddingText.trim().toLowerCase(),a=b$5(r).slice(0,16);this.textToHash.set(r,a),this.cache.set(a,new Float32Array(t)),this.evictOldest();}}getEntriesNeedingEmbeddings(){return fe().filter(t=>!this.has(t.embeddingText??t.text))}getStats(){let e=fe(),t={},r={};for(let a of e)t[a.category]=(t[a.category]??0)+1,r[a.language]=(r[a.language]??0)+1;return {total:this.cache.size,byCategory:t,byLanguage:r}}clear(){this.cache.clear(),this.textToHash.clear();}evictOldest(){if(this.cache.size<=s.MAX_CACHE_SIZE)return;let e=this.cache.size-s.MAX_CACHE_SIZE,t=this.cache.keys(),r=new Set;for(let a=0;a<e;a++){let i=t.next();if(i.done)break;let n=i.value;this.cache.delete(n),r.add(n);}if(r.size>0){for(let[a,i]of this.textToHash)r.has(i)&&this.textToHash.delete(a);I.d("GLOBALCACHE","evicted_oldest",{evicted:r.size,remaining:this.cache.size});}}};R();var Xt={k:60,structuralWeight:.6,semanticWeight:.4,limit:10};function Zt(s){if(s.length<2)return s;let e=s[0].score,t=e;for(let a=1;a<s.length;a++){let i=s[a].score;i<e&&(e=i),i>t&&(t=i);}let r=t-e;if(r===0){for(let a of s)a.score=1;return s}for(let a of s)a.score=(a.score-e)/r;return s}function er(s){let e=new Map,t=[];for(let r of s)e.has(r.id)||(e.set(r.id,true),t.push(r));return t}function tr(s){return s.structuralRank!==void 0&&s.semanticRank!==void 0?"hybrid":s.structuralRank!==void 0?"structural":"semantic"}var xe=class{vectorStore;embeddingGen;queryAgent;queryExpander=null;searchMetrics={totalSearches:0,avgSearchTime:0,avgResultCount:0};constructor(e,t,r){this.vectorStore=e,this.embeddingGen=t,this.queryAgent=r??null;}setQueryExpander(e){this.queryExpander=e,I.i("HYBRID","QueryExpander configured");}setQueryAgent(e){this.queryAgent=e;}async search(e,t={}){let r=Date.now(),a={...Xt,...t};try{let i=await this.embeddingGen.generateEmbedding(e),n=a.limit*2,[c,u]=await Promise.all([this.runStructuralSearch(e,n),this.vectorStore.adaptiveSearch(i,n)]);I.d("HYBRID",`Found ${c.length} structural and ${u.results.length} semantic results`,{usedFaiss:u.usedFaiss});let g=this.applyReciprocalRankFusion(c,u.results,a),x=Date.now()-r;return this.recordMetrics(x,g.length),I.i("HYBRID","Hybrid search complete",{resultsCount:g.length,searchTimeMs:x}),g}catch(i){throw I.e("HYBRID","Hybrid search failed",{error:i.message}),i}}async semanticSearch(e,t=10){let r=Date.now();try{if(this.queryExpander)return await this.twoPassExpandedSearch(e,t,r);let a=await this.embeddingGen.generateEmbedding(e),i=await this.vectorStore.adaptiveSearch(a,t);return {query:e,results:i.results,processingTime:Date.now()-r}}catch(a){throw I.e("HYBRID","Semantic search failed",{query:e,error:a.message}),a}}async rerank(e,t,r){let a=r??rr,i=e.map(n=>({...n,score:n.score*.7+a(n,t)*.3}));return i.sort((n,c)=>c.score-n.score),i}getMetrics(){return {...this.searchMetrics}}clearCaches(){this.embeddingGen.clearCache(),I.i("HYBRID","Caches cleared");}async runStructuralSearch(e,t){if(!this.queryAgent)return I.d("HYBRID","QueryAgent not available, skipping structural search"),[];try{let r={id:`search-${Date.now()}`,type:"search",priority:5,payload:{query:e,limit:t},createdAt:Date.now()};return await this.queryAgent.process(r)??[]}catch(r){return I.e("HYBRID","Structural search failed",{error:r.message}),[]}}applyReciprocalRankFusion(e,t,r){let a=new Map,i=r.k,n=(p,b)=>b/(i+p+1);for(let p=0;p<e.length;p++){let b=e[p],m=n(p,r.structuralWeight),y=a.get(b.id);y?(y.score+=m,y.structuralRank=p):a.set(b.id,{id:b.id,score:m,structuralRank:p,content:b.content,metadata:{path:b.path,type:b.type,name:b.name}});}for(let p=0;p<t.length;p++){let b=t[p],m=n(p,r.semanticWeight),y=a.get(b.id);y?(y.score+=m,y.semanticRank=p,b.metadata&&(y.metadata={...y.metadata,...b.metadata})):a.set(b.id,{id:b.id,score:m,semanticRank:p,content:b.content,metadata:b.metadata});}let c=Array.from(a.values());c.sort((p,b)=>b.score-p.score);let u=c.slice(0,r.limit),g=Zt(u);return er(g).map(p=>({id:p.id,score:p.score,source:tr(p),content:p.content,metadata:p.metadata}))}async twoPassExpandedSearch(e,t,r){let a=await this.embeddingGen.generateEmbedding(e),n=(await this.vectorStore.adaptiveSearch(a,5)).results.map(x=>({content:x.content||""})),c=await this.queryExpander.expand(e,n);I.d("HYBRID","Query expanded",{original:e,expanded:c.expanded,coocTerms:c.coocTerms.length,prfTerms:c.prfTerms.length});let u=await this.embeddingGen.generateEmbedding(c.expanded),g=await this.vectorStore.adaptiveSearch(u,t);return {query:e,expandedQuery:c.expanded,results:g.results,processingTime:Date.now()-r,expansionInfo:{originalTokens:c.originalTokens,coocTerms:c.coocTerms,prfTerms:c.prfTerms}}}recordMetrics(e,t){let r=this.searchMetrics,a=r.totalSearches+1;this.searchMetrics={totalSearches:a,avgSearchTime:r.avgSearchTime+(e-r.avgSearchTime)/a,avgResultCount:r.avgResultCount+(t-r.avgResultCount)/a};}};function rr(s,e){let t=e.toLowerCase().split(/\s+/),r=(s.content??"").toLowerCase();if(t.length===0)return 0;let a=0;for(let i of t)r.includes(i)&&a++;return a/t.length}R();var De=5e3,ar=3600*1e3,nr=100*1024*1024,ir=50*1024*1024,sr=50*1024*1024;function or(s){return s instanceof Float32Array?s.byteLength:Array.isArray(s)?s.length*100:typeof s=="object"&&s!==null?JSON.stringify(s).length*2:64}function F(s,e){return `${s}:${e}`}var we=class{embeddings;results;misc;counters={hits:0,misses:0,evictions:0};constructor(e={}){let t=Math.floor((e.maxSize??De)/3),r=e.ttl??ar,a=e.updateAgeOnGet??true,i=e.updateAgeOnHas??false,n=()=>{this.counters.evictions++;};this.embeddings=new LRUCache({max:t,ttl:r,ttlAutopurge:true,maxSize:nr,sizeCalculation:c=>c.byteLength,updateAgeOnGet:a,updateAgeOnHas:i,dispose:n}),this.results=new LRUCache({max:t,ttl:r,ttlAutopurge:true,maxSize:ir,sizeCalculation:c=>c.length*100,updateAgeOnGet:a,updateAgeOnHas:i,dispose:n}),this.misc=new LRUCache({max:t,ttl:r,ttlAutopurge:true,maxSize:sr,sizeCalculation:or,updateAgeOnGet:a,updateAgeOnHas:i,dispose:n}),I.d("CACHE","Initialized",{maxSize:e.maxSize??De,ttl:r});}setEmbedding(e,t,r){this.embeddings.set(F("emb",e),t,r!=null?{ttl:r}:void 0);}getEmbedding(e){let t=this.embeddings.get(F("emb",e));return t?this.counters.hits++:this.counters.misses++,t}setSearchResults(e,t,r){this.results.set(F("sr",e),t,r!=null?{ttl:r}:void 0);}getSearchResults(e){let t=this.results.get(F("sr",e));return t?this.counters.hits++:this.counters.misses++,t}set(e,t,r){this.misc.set(e,t,r!=null?{ttl:r}:void 0);}get(e){let t=this.misc.get(e);return t!==void 0?this.counters.hits++:this.counters.misses++,t}has(e){return this.embeddings.has(F("emb",e))||this.results.has(F("sr",e))||this.misc.has(e)}delete(e){let t=this.embeddings.delete(F("emb",e)),r=this.results.delete(F("sr",e)),a=this.misc.delete(e);return t||r||a}clear(){this.embeddings.clear(),this.results.clear(),this.misc.clear(),this.counters={hits:0,misses:0,evictions:0},I.d("CACHE","All caches cleared");}prune(){let e=this.size();this.embeddings.purgeStale(),this.results.purgeStale(),this.misc.purgeStale();let t=e-this.size();return I.d("CACHE","Pruned expired entries",{count:t}),t}size(){return this.embeddings.size+this.results.size+this.misc.size}getStats(){let e=this.counters.hits+this.counters.misses;return {size:this.size(),hits:this.counters.hits,misses:this.counters.misses,evictions:this.counters.evictions,hitRate:e>0?this.counters.hits/e:0,memoryUsage:(this.embeddings.calculatedSize||0)+(this.results.calculatedSize||0)+(this.misc.calculatedSize||0)}}getInfo(){return {embedding:{size:this.embeddings.size,memory:this.embeddings.calculatedSize||0},results:{size:this.results.size,memory:this.results.calculatedSize||0},general:{size:this.misc.size,memory:this.misc.calculatedSize||0},stats:this.getStats()}}async warmup(e){let t=Math.floor(De/3),r=0;for(let[a,i]of e){if(r>=t)break;this.setEmbedding(a,i),r++;}I.d("CACHE","Warmed up",{embeddings:r});}export(){return {embeddings:Array.from(this.embeddings.entries()),results:Array.from(this.results.entries()),general:Array.from(this.misc.entries())}}import(e){if(e.embeddings)for(let[t,r]of e.embeddings)this.embeddings.set(t,r);if(e.results)for(let[t,r]of e.results)this.results.set(t,r);if(e.general)for(let[t,r]of e.general)this.misc.set(t,r);I.d("CACHE","Imported entries",{count:this.size()});}};R();H();var cr={dimensions:384};function At(s){let e=new Map;for(let t of s)e.set(t.id,t);return Array.from(e.values())}var ve=class{config;faissProvider=null;layeredProvider=null;useLayeredIndex;isInitialized=false;isInitializing=false;initializationPromise=null;debugMode=process.env.VECTOR_STORE_DEBUG==="true";cachedAutoDocManager=null;autoDocInitialized=false;currentContext=null;currentProjectPath=null;constructor(e={}){this.useLayeredIndex=e.useLayeredIndex??false,I.d("VECTOR",this.useLayeredIndex?"v6: Layered Faiss backend":"v5: Faiss-only backend"),this.config={dbPath:e.dbPath||"",dimensions:e.dimensions||cr.dimensions,workingDirectory:e.workingDirectory,libsql:e.libsql,useLayeredIndex:this.useLayeredIndex};}async setProjectContext(e){if(this.currentContext&&this.currentContext.projectHash!==e.projectHash&&(this.autoDocInitialized=false,this.cachedAutoDocManager=null),this.currentContext=e,this.useLayeredIndex&&this.layeredProvider){let t=this.currentProjectPath||this.config.workingDirectory||"";await this.layeredProvider.initialize(t,e.projectHash,e.branchName)||I.e("VECTOR","Failed to initialize/switch LayeredFaissProvider on context set");}else this.faissProvider&&await this.faissProvider.setProjectContext(e.projectHash,e.branchName);I.d("VECTOR","Context set",{project:e.projectHash,branch:e.branchName,layered:this.useLayeredIndex});}async setProject(e,t){this.currentProjectPath=e,await this.setProjectContext({projectHash:q$1(e),branchName:r(t)});}getProjectContext(){return {...this.ensureContextSet()}}hasProjectContext(){return this.currentContext!==null}getDbPath(){return this.config.dbPath}async initialize(){if(this.isInitialized){this.debugMode&&I.d("VECTOR","Already initialized, returning early");return}if(this.isInitializing&&this.initializationPromise)return this.debugMode&&I.d("VECTOR","Initialization in progress, waiting..."),this.initializationPromise;this.isInitializing=true,this.initializationPromise=this.initializeInternal();try{await this.initializationPromise,this.isInitialized=!0,this.debugMode&&I.d("VECTOR","Initialization completed successfully");}catch(e){throw this.isInitializing=false,this.initializationPromise=null,e}finally{this.isInitializing=false;}}async initializeInternal(){try{if(this.useLayeredIndex){if(this.layeredProvider=b$6({dimensions:this.config.dimensions}),this.currentContext){if(!this.layeredProvider.initialized&&!await this.layeredProvider.initialize(this.config.workingDirectory||"",this.currentContext.projectHash,this.currentContext.branchName))throw new Error("Failed to initialize LayeredFaissProvider")}else I.w("VECTOR","Layered index requires context, deferring initialization");I.i("VECTOR","Initialized with Layered Faiss backend (singleton)",{dimensions:this.config.dimensions,mode:"layered-base-delta"});}else {let e=await c$3({dimensions:this.config.dimensions,indexType:"hnsw",hnswM:32,hnswEfConstruction:200,hnswEfSearch:64});if(!e)throw new Error("Failed to initialize FaissProvider");this.faissProvider=e,this.currentContext&&this.faissProvider.setProjectContext(this.currentContext.projectHash,this.currentContext.branchName),I.i("VECTOR","Initialized with Faiss backend",{dimensions:this.config.dimensions,mode:"faiss-hnsw"});}}catch(e){throw I.e("VECTOR","Initialization failed",{error:e.message}),new Error("Failed to initialize vector store",{cause:e})}}ensureFaissProvider(){if(!this.faissProvider)throw new Error("VectorStore not initialized. Call initialize() first.");return this.faissProvider}async ensureLayeredProviderInitialized(){if(!this.layeredProvider)throw new Error("VectorStore not initialized. Call initialize() first.");if(this.currentContext){if(!await this.layeredProvider.initialize(this.config.workingDirectory||"",this.currentContext.projectHash,this.currentContext.branchName))throw new Error("Failed to initialize LayeredFaissProvider with context")}else throw new Error("LayeredFaissProvider requires project context. Call setProjectContext() first.");return this.layeredProvider}ensureContextSet(){if(!this.currentContext)throw new Error("VectorStore project context not set. Call setProjectContext() or setProject() before operations.");return this.currentContext}getStrategy(e,t=false,r=1){return a$6(e,this.config.dimensions,t,r)}async insert(e){I.i("VECTOR","insert_embedding",{id:e.id,vectorDim:e.vector.length,contentLen:e.content.length,metadataType:e.metadata?.type}),this.useLayeredIndex?await(await this.ensureLayeredProviderInitialized()).add(e):await this.ensureFaissProvider().add(e),I.d("VECTOR","insert_complete",{id:e.id});}async insertBatch(e){let t=At(e);this.useLayeredIndex?await(await this.ensureLayeredProviderInitialized()).addBatch(t):await this.ensureFaissProvider().addBatch(t);}async bulkInsert(e){await this.insertBatch(e);}async adaptiveBulkInsert(e){let t=At(e),r=performance.now();this.useLayeredIndex?await(await this.ensureLayeredProviderInitialized()).addBatch(t):await this.ensureFaissProvider().addBatch(t);let a=performance.now()-r;return I.i("VECTOR","Bulk insert via Faiss HNSW",{count:t.length,ms:a.toFixed(1),layered:this.useLayeredIndex}),{usedFaiss:true,insertedCount:t.length,timeMs:a}}async adaptiveRebuildIndex(e){let t=performance.now();return {usedFaiss:true,strategy:"faiss-hnsw-live",timeMs:performance.now()-t}}async adaptiveSearch(e,t=10){let r;return this.useLayeredIndex?r=await(await this.ensureLayeredProviderInitialized()).searchForVectorStore(e,t):r=await this.ensureFaissProvider().search(e,t),{results:await this.enrichResultsFromLibSQL(r),usedFaiss:true}}async dropVectorIndex(){I.d("VECTOR","dropVectorIndex: no-op with Faiss HNSW");}async rebuildVectorIndex(){I.d("VECTOR","rebuildVectorIndex: no-op with Faiss HNSW");}async flushAndSave(){try{let e=0;return this.useLayeredIndex&&this.layeredProvider?(await this.layeredProvider.save(),e=0):this.faissProvider&&(e=await this.faissProvider.flush(),await this.faissProvider.save()),I.i("VECTOR","Saved Faiss index to disk",{flushed:e,layered:this.useLayeredIndex}),{flushed:e,saved:!0}}catch(e){return I.e("VECTOR","flushAndSave failed",{error:e.message}),{flushed:0,saved:false}}}async search(e,t=10){let r;this.useLayeredIndex?r=await(await this.ensureLayeredProviderInitialized()).searchForVectorStore(e,t):r=await this.ensureFaissProvider().search(e,t),I.i("VECTOR","search_raw_results",{count:r.length,ids:r.map(i=>i.id).slice(0,10)});let a=await this.enrichResultsFromLibSQL(r);return I.i("VECTOR","search_enriched_results",{beforeCount:r.length,afterCount:a.length,filtered:r.length-a.length}),a}async enrichResultsFromLibSQL(e){if(e.length===0)return e;try{let{getGraphStorage:t}=await import('./graph-storage-factory-GTAIJEI5.js'),r=await t(),a=e.filter(l=>!l.id.startsWith("doc::")),i=e.filter(l=>l.id.startsWith("doc::"));this.debugMode&&I.d("VECTOR","enrich_split",{total:e.length,entities:a.length,docs:i.length});let n=a.map(l=>l.id.startsWith("ent:")?l.id.slice(4):l.id),c=new Map;await Promise.all(n.map(async(l,d)=>{let h=await r.getEntity(l);if(!h&&l.includes(":")){let f=l.lastIndexOf(":"),E=l.lastIndexOf(":",f-1);if(E>0){let w=l.slice(0,E),S=l.slice(E+1,f),P=l.slice(f+1),T=await r.findEntities({filters:{filePath:w,name:P,entityType:S},limit:1});T.length>0&&(h=T[0]);}}h&&c.set(n[d],h);}));let u=a.map(l=>{let d=l.id.startsWith("ent:")?l.id.slice(4):l.id,h=c.get(d);return h?{...l,content:h.name||"",metadata:{...l.metadata,entityId:d,type:h.type,filePath:h.filePath,name:h.name,language:h.language,startLine:h.location?.start?.line,endLine:h.location?.end?.line,startColumn:h.location?.start?.column,endColumn:h.location?.end?.column}}:l}),g=[],x=this.cachedAutoDocManager;if(i.length>0)try{if(!x){let{getAutoDocManager:l}=await import('./autodoc-manager-3H2I6BSU.js'),{getGlobalDbPaths:d}=await import('./storage-paths-4D2SRV4U.js'),{dirname:h,join:f}=await import('path'),E=d(),w=f(h(E.graphDbPath),"autodoc.db");x=l(w),this.cachedAutoDocManager=x;}this.autoDocInitialized||(await x.initialize(r),this.autoDocInitialized=!0);for(let l of i){let d=await x.getDocument(l.id);d?g.push({...l,content:d.title,metadata:{...l.metadata,type:"autodoc",docType:d.type,filePath:d.filePath,section:d.section,title:d.title}}):g.push(l);}this.debugMode&&I.d("VECTOR","enrich_autodoc",{total:i.length,enriched:g.length});}catch(l){I.w("VECTOR","Failed to enrich AutoDoc results",{error:l.message}),g.push(...i);}let p=50,b=[],m=g.length>p?g.slice(0,p):g;if(m.length>0&&x)try{this.debugMode&&I.i("VECTOR","autodoc_enrichment_start",{docCount:m.length,totalDocs:g.length,limited:g.length>p});let l=w=>({describes:1,depends:.9,uses:.8,participates:.7,example:.6,test:.5})[w]||.8,d=w=>{let S=w.toLowerCase();return S.includes("overview")||S.includes("architecture")?1:S.includes("implement")||S.includes("usage")?.9:S.includes("example")?.7:S.includes("test")?.6:.85},h=new Map;for(let w of m){let S=await x.getDocument(w.id);if(!S)continue;let P=await x.getReferences(S.filePath);this.debugMode&&I.i("VECTOR","autodoc_all_refs",{docId:w.id,totalRefs:P.length,refTypes:P.map(C=>C.targetType),refTargetIds:P.map(C=>C.targetId),refValid:P.map(C=>C.valid)});let T=P.filter(C=>(C.targetType==="entity"||C.targetType==="line_range")&&C.valid&&C.targetId);this.debugMode&&I.i("VECTOR","autodoc_refs_from_doc",{docId:w.id,totalRefs:P.length,entityRefs:T.length,sampleTargetIds:T.slice(0,3).map(C=>C.targetId)});let k=new Map;for(let C of T){let v=C.targetId;k.set(v,(k.get(v)||0)+1);}for(let C of T){let v=C.targetId;if(!h.has(v)){let M=S.section||"Overview";h.set(v,{docId:w.id,docSimilarity:w.similarity||0,docTitle:S.title,refType:C.refType,sectionTitle:M,mentions:k.get(v)||1});}}}this.debugMode&&I.i("VECTOR","autodoc_refs_collected",{uniqueEntities:h.size});let f=new Set;for(let w of u){let S=w.metadata?.entityId;S&&typeof S=="string"&&f.add(S);}let E=Array.from(h.keys()).filter(w=>!f.has(w));if(this.debugMode&&I.i("VECTOR","autodoc_deduplication",{totalRefs:h.size,existing:f.size,new:E.length}),E.length>0){this.debugMode&&I.i("VECTOR","autodoc_resolving_names",{names:E});let w=[],S=await Promise.all(E.map(P=>r.findEntities({filters:{name:P},limit:1})));for(let P=0;P<E.length;P++){let T=E[P],k=S[P];if(this.debugMode&&I.i("VECTOR","autodoc_name_match",{name:T,matches:k.length}),k.length>0){let C=k[0],v=h.get(T);w.push({name:T,entity:C,refInfo:v});}}I.i("VECTOR","autodoc_resolved",{total:E.length,resolved:w.length});for(let{name:P,entity:T,refInfo:k}of w){let C=l(k.refType),v=d(k.sectionTitle),M=Math.min(1+(k.mentions-1)*.05,1.2),R=k.docSimilarity*C*v*M;this.debugMode&&I.d("VECTOR","autodoc_entity_score",{entityId:T.id,entityName:P,docSim:k.docSimilarity,refType:k.refType,refWeight:C,section:k.sectionTitle,secWeight:v,mentions:k.mentions,freqBoost:M,finalSim:R}),b.push({id:`ent:${T.id}`,content:T.name||"",similarity:R,metadata:{entityId:T.id,type:T.type,filePath:T.filePath,name:T.name,startLine:T.location?.start?.line,endLine:T.location?.end?.line,startColumn:T.location?.start?.column,endColumn:T.location?.end?.column,foundVia:"autodoc",sourceDoc:k.docId,sourceDocTitle:k.docTitle}});}this.debugMode&&I.d("VECTOR","autodoc_enrichment_complete",{added:b.length});}}catch(l){I.w("VECTOR","AutoDoc enrichment failed",{error:l.message});}let y=[...u,...g,...b];for(let l of y){let d=l.metadata?.pageRank;typeof d=="number"&&(l.similarity=(l.similarity||0)*(1+(d-.5)*.2));}return y.sort((l,d)=>(d.similarity||0)-(l.similarity||0)),this.debugMode&&I.d("VECTOR","enrich_complete",{enrichedEntities:u.length,enrichedDocs:g.length,autodocDerived:b.length,total:y.length}),y}catch(t){return I.w("VECTOR","Failed to enrich results from LibSQL",{error:t.message}),e}}async searchWithFilters(e,t={}){let{limit:r=10,threshold:a=0,metadataFilter:i,dateRange:n}=t,c=i||n?r*10:r,u;this.useLayeredIndex?u=await(await this.ensureLayeredProviderInitialized()).searchForVectorStore(e,c):u=await this.ensureFaissProvider().search(e,c),I.d("VECTOR","search_raw_results",{count:u.length,sample:u.slice(0,3).map(p=>({id:p.id,similarity:p.similarity,hasMetadata:!!p.metadata,metadataType:p.metadata?.type}))});let x=await this.enrichResultsFromLibSQL(u);return a>0&&(x=x.filter(p=>p.similarity>=a)),i&&(I.d("VECTOR","before_metadata_filter",{count:x.length,filter:i,sample:x.slice(0,3).map(p=>({id:p.id,hasMetadata:!!p.metadata,metadata:p.metadata}))}),x=x.filter(p=>{if(!p.metadata)return false;for(let[b,m]of Object.entries(i))if(p.metadata[b]!==m)return false;return true}),I.d("VECTOR","after_metadata_filter",{count:x.length,kept:x.slice(0,3).map(p=>({id:p.id,metadata:p.metadata}))})),n&&(x=x.filter(p=>{let b=p.metadata?.createdAt;return b?!(n.start!=null&&b<n.start||n.end!=null&&b>n.end):true})),x.slice(0,r)}async get(e){let t=false;if(this.useLayeredIndex&&this.layeredProvider?t=this.layeredProvider.has(e):this.faissProvider&&(t=this.faissProvider.hasId(e)),!t)return null;try{let{getGraphStorage:r}=await import('./graph-storage-factory-GTAIJEI5.js'),a=await r(),i=e.startsWith("ent:")?e.slice(4):e,n=await a.getEntity(i);if(n)return {id:e,content:n.name||"",vector:new Float32Array(0),metadata:{entityId:i,type:n.type,filePath:n.filePath},createdAt:n.createdAt||Date.now()}}catch{}return {id:e,content:"",vector:new Float32Array(0),createdAt:Date.now()}}async getExistingIds(e){if(this.useLayeredIndex&&this.layeredProvider){let r=new Set;for(let a of e)this.layeredProvider.has(a)&&r.add(a);return r}return this.ensureFaissProvider().getExistingIds(e)}async update(e,t,r){if(this.useLayeredIndex){let a=await this.ensureLayeredProviderInitialized();if(!a.has(e))throw new Error(`Embedding with id=${e} not found`);await a.remove([e]),await a.add({id:e,content:"",vector:t,metadata:r,createdAt:Date.now()});}else {let a=this.ensureFaissProvider();if(!a.hasId(e))throw new Error(`Embedding with id=${e} not found`);await a.remove([e]),await a.add({id:e,content:"",vector:t,metadata:r,createdAt:Date.now()});}}async delete(e){this.useLayeredIndex?await(await this.ensureLayeredProviderInitialized()).remove([e]):await this.ensureFaissProvider().remove([e]);}async count(){return this.useLayeredIndex?(await(await this.ensureLayeredProviderInitialized()).getStats()).totalVectors:await this.ensureFaissProvider().getVectorCount()}async clear(){I.w("VECTOR","clear() not fully implemented for Faiss-only mode");}async clearAll(){I.w("VECTOR","clearAll() not implemented for Faiss-only mode");}async close(){this.useLayeredIndex&&this.layeredProvider?await this.layeredProvider.save():this.faissProvider&&await this.faissProvider.save(),this.isInitialized=false,I.d("VECTOR","Closed (Faiss index saved)",{layered:this.useLayeredIndex});}getFaissProvider(){return this.faissProvider}getActiveProvider(){return this.useLayeredIndex&&this.layeredProvider?this.layeredProvider:this.faissProvider}isLayeredMode(){return this.useLayeredIndex}async getStats(){let e;return this.useLayeredIndex&&this.layeredProvider?e=await this.layeredProvider.getStats():e=await this.ensureFaissProvider().getStats(),{totalEmbeddings:e.totalVectors,dbSizeMB:0,oldestEntry:null,newestEntry:null}}async batchSearch(e,t=10){let r;if(this.useLayeredIndex){let i=await this.ensureLayeredProviderInitialized();r=await Promise.all(e.map(n=>i.searchForVectorStore(n,t)));}else r=await this.ensureFaissProvider().batchSearch(e,t);return await Promise.all(r.map(i=>this.enrichResultsFromLibSQL(i)))}async searchWithinRadius(e,t,r=100){let a=Math.max(0,1-t);return this.searchWithFilters(e,{limit:r,threshold:a})}getVectorStats(){return {hasExtension:true,optimizedOperations:true,backend:"faiss",backendInfo:{type:"Faiss HNSW",persistent:true,note:"In-memory HNSW index with disk persistence"}}}getBackendInfo(){return {currentBackend:"faiss",vectorCount:0,recommended:true,performance:{insertSpeed:"very-fast",searchSpeed:"very-fast",accuracy:"approximate",memoryUsage:"medium",persistent:true}}}async searchInBranch(e,t,r=10){return I.w("VECTOR","searchInBranch: cross-branch search not implemented, using current context"),await this.search(e,r)}async compareEmbeddingsBetweenBranches(e,t,r,a=10){return I.w("VECTOR","compareEmbeddingsBetweenBranches: not implemented in Faiss-only mode"),{branch1Results:[],branch2Results:[],onlyInBranch1:[],onlyInBranch2:[],inBoth:[]}}async listBranches(){return [this.ensureContextSet().branchName]}async getCountPerBranch(){let e=this.ensureContextSet(),t=await this.count();return [{branchName:e.branchName,count:t}]}async deleteBranch(e){return I.w("VECTOR","deleteBranch: not implemented in Faiss-only mode"),0}async copyBranch(e,t){return I.w("VECTOR","copyBranch: not implemented in Faiss-only mode"),0}};H();c$1.DEFAULT_VECTOR_DIMENSIONS;c$1.DEFAULT_SIMILARITY_THRESHOLD;c$1.MAX_BATCH_SIZE;a.MAX_CACHE_ENTRIES;R();var lr={failureThreshold:5,recoveryTimeout:3e4,successThreshold:3,monitorWindow:6e4,name:"CircuitBreaker"},Ee=class{state="CLOSED";failureWindow=[];lastFailureTime=0;successCount=0;config;constructor(e={}){this.config={...lr,...e};}getState(){return this.state}canExecute(){let e=Date.now();switch(this.state){case "CLOSED":return true;case "OPEN":return e-this.lastFailureTime>=this.config.recoveryTimeout?(this.state="HALF_OPEN",this.successCount=0,I.d("CIRCUITBREAK","half_open",{name:this.config.name}),true):false;case "HALF_OPEN":return true;default:return false}}recordSuccess(){this.state==="HALF_OPEN"?(this.successCount++,this.successCount>=this.config.successThreshold&&(this.state="CLOSED",this.failureWindow=[],I.d("CIRCUITBREAK","closed",{name:this.config.name,successes:this.successCount}))):this.state==="CLOSED"&&this.cleanupFailureWindow();}recordFailure(){let e=Date.now();this.lastFailureTime=e,this.failureWindow.push(e),this.cleanupFailureWindow();let t=this.failureWindow.length;t>=this.config.failureThreshold&&(this.state="OPEN",I.w("CIRCUITBREAK","opened",{name:this.config.name,failures:t}));}cleanupFailureWindow(){let e=Date.now();this.failureWindow=this.failureWindow.filter(t=>e-t<=this.config.monitorWindow);}async execute(e,t,r){if(!this.canExecute())return I.d("CIRCUITBREAK","fallback_open",{name:this.config.name,op:r}),t();try{let a=await e();return this.recordSuccess(),a}catch(a){return this.recordFailure(),I.w("CIRCUITBREAK","fallback_error",{name:this.config.name,op:r,err:a.message}),t()}}reset(){this.state="CLOSED",this.failureWindow=[],this.lastFailureTime=0,this.successCount=0;}getMetrics(){return {state:this.state,recentFailures:this.failureWindow.length,lastFailureTime:this.lastFailureTime,successCount:this.successCount}}};p();c();g();R();function gr(s){if(!s)return null;let e=[];if(s.type&&e.push(`type: ${s.type}`),s.name&&e.push(`name: ${s.name}`),s.filePath&&e.push(`file: ${s.filePath}`),s.metadata&&typeof s.metadata=="object"&&"language"in s.metadata&&typeof s.metadata.language=="string"&&e.push(`language: ${s.metadata.language}`),s.metadata)try{let t=JSON.stringify(s.metadata).slice(0,512);t.length>0&&e.push(`metadata: ${t}`);}catch{}return e.length>0?e.join(`
127
+ `):null}async function Mt(s){let e=b(),t=e.mcp.semantic?.cacheWarmupLimit??0;t<=0&&(t=1);try{let a=new Map,i=e.mcp.semantic?.popularEntitiesTopic;if(i){let d=a$4.query(i,t);for(let h of d){let f=h.data,E,w;if(typeof f=="string")E=f,w={id:E,name:f};else if(f&&typeof f=="object"){let S=f;E=S.id??S.entityId??S.name,w={id:E,name:S.name,type:S.type,filePath:S.filePath??S.path,metadata:S.metadata};}if(E&&w&&!a.has(E)&&a.set(E,w),a.size>=t)break}}let n=null;try{n=await d$2();}catch{}if(n&&a.size<t){let d=t-a.size,h=await n.executeQuery({type:"entity",limit:d,filters:{entityType:["function","class","type"]}});for(let f of h.entities??[])if(!(!f?.id||a.has(f.id))&&(a.set(f.id,f),a.size>=t))break}if(a.size===0){let d=`semantic-warmup-${Date.now()}`;a.set(d,{id:d,name:"WarmupPlaceholder",type:"function",filePath:"warmup/placeholder.ts"});}let c=[],u=[];for(let d of a.values()){let h=d;if(n&&d.id&&(!d.name||!d.type||!d.filePath))try{let w=await n.getEntity(d.id);w&&(h=w);}catch{}let f=gr(h),E=h.id??d.id;!f||!E||(c.push(E),u.push(f));}if(u.length===0){let d=`semantic-warmup-${Date.now()}`;c.push(d),u.push("type: function name: WarmupPlaceholder file: warmup/placeholder.ts");}let g,x=s.embeddingMutex,p=new Promise(d=>{g=d;});s.setEmbeddingMutex(p),await x;let b;try{b=await s.embeddingGen.generateBatch(u);}catch{b=u.map(()=>new Float32Array(s.embeddingDim));}finally{g();}let m=new Map;if(b.forEach((d,h)=>{let f=c[h];f&&m.set(f,d??new Float32Array(s.embeddingDim));}),m.size===0){let d=`semantic-warmup-${Date.now()}`;m.set(d,new Float32Array(s.embeddingDim));}await s.cache.warmup(m);let y=globalThis.__semanticCacheWarmupMock;if(typeof y=="function"&&y!==s.cache.warmup)try{y(m);}catch{}let l=s.cache.getStats();s.semanticMetrics.cacheHitRate=l.hitRate,s.semanticMetrics.embeddingsGenerated+=m.size,a$4.publish("semantic:warmup:complete",{warmed:m.size,limit:t},s.agentId,6e4);}catch(a){I.w("CACHE","warmup_failed",{err:a.message});}}R();async function jt(s,e,t,r){I.t("COMMENT","process_start");let a=Date.now(),i=l=>{let d=Date.now()-a;I.d("COMMENT",l,{ms:d});},{CommentExtractor:n}=await import('./comment-extractor-4LGLLLXK.js');i("P1_IMPORT"),I.t("COMMENT","import_done");let c=[],u=[],g=Array.from(s.keys()),x=20,p=new Map;for(let l=0;l<g.length;l+=x){let d=g.slice(l,l+x),h=await Promise.all(d.map(f=>t.findEntities({filters:{filePath:f},limit:1e4}).catch(()=>[])));for(let f=0;f<d.length;f++)p.set(d[f],h[f]||[]);}i("P2_FETCH_FILE_ENTITIES");for(let[l,d]of s.entries()){let h=e.get(l)||new Map,f=p.get(l)||[],E=n.createCommentEntities(d.comments,l,h),w=n.createDocumentationRelationships(E,f,h);c.push(...E),u.push(...w);}if(i("P3_BUILD_ENTITIES"),c.length===0)return I.t("COMMENT","no_comments"),{entities:0,relationships:0};let b,m=r.embeddingMutex,y=new Promise(l=>{b=l;});r.setEmbeddingMutex(y),await m;try{await t.insertEntities(c),i("P4_INSERT_ENTITIES");let l=c.map(f=>f.metadata?.content||""),d=await r.embeddingGen.generateBatch(l);i("P5_GENERATE_EMBEDDINGS");let h=c.map((f,E)=>({id:`ent:${f.id}`,content:l[E]??"",vector:d[E]??new Float32Array(r.embeddingDim),metadata:{path:f.filePath,type:f.type,name:f.name,entityId:f.id,isComment:!0,commentType:f.metadata?.commentType},createdAt:Date.now()}));await r.vectorStore.adaptiveBulkInsert(h),i("P6_VECTOR_INSERT"),await t.insertRelationships(u),i("P7_INSERT_RELATIONSHIPS"),I.d("COMMENT","indexed_batch",{entities:c.length,rels:u.length});}catch(l){I.w("COMMENT","batch_failed",{err:l.message});}finally{b();}return I.t("COMMENT","process_done",{entities:c.length,rels:u.length}),{entities:c.length,relationships:u.length}}R();c();var Ne=["src/generated/","/autogenerated/","/node_modules/","/__generated__/","/.cache/","/dist/"];function Rt(s){let e=s.replace(/\\/g,"/");for(let t of Ne)if(e.includes(t))return true;return false}function _t(s){let e=s.complexity?.linesOfCode??0;if(e===0)return false;let t=(s.calls?.length??0)>0,r=s.controlFlow,a=(r?.branches?.length??0)+(r?.loops?.length??0)+(r?.exceptions?.length??0)>0,i=!!s.documentation?.description;return t||a||i?false:e<=2}function dr(s,e){let t={path:s.filePath??s.path??"",type:s.type,name:s.name,language:s.language??void 0,entityId:s.id??void 0,start:s.location?.start?.index??void 0,end:s.location?.end?.index??void 0,model:e};if(s.complexity&&(t.cyclomatic=s.complexity.cyclomatic,t.cognitive=s.complexity.cognitive,t.linesOfCode=s.complexity.linesOfCode,t.nestingDepth=s.complexity.nestingDepth),s.calls?.length&&(t.callCount=s.calls.length,t.hasAsyncCalls=s.calls.some(r=>r.isAwait)),s.controlFlow){let r=s.controlFlow;t.hasBranches=(r.branches?.length||0)>0,t.hasLoops=(r.loops?.length||0)>0,t.hasExceptions=(r.exceptions?.length||0)>0,t.hasAwaits=(r.awaits?.length||0)>0,t.branchCount=r.branches?.length||0,t.loopCount=r.loops?.length||0,t.returnCount=r.returns?.length||0;}return s.documentation&&(t.hasDocumentation=true,t.hasParams=(s.documentation.params?.length||0)>0,t.hasExamples=(s.documentation.examples?.length||0)>0,t.isDeprecated=!!s.documentation.deprecated),s.returnType&&(t.returnType=s.returnType),s.parameters?.length&&(t.paramCount=s.parameters.length),t}async function Dt(s,e,t){let r=[],a=[];for(let i of s){let n=i;try{let c=Buffer.from(n.embeddingBase64,"base64"),u=new Float32Array(c.buffer,c.byteOffset,c.length/4),g=n.id?`ent:${n.id}`:`doc:${b$5(`${n.filePath??""}|${n.type}|${n.name??"anon"}|${t}`).slice(0,24)}`;a.push({id:g,content:n.embeddingText??`${n.name??""} ${n.type??""}`.trim(),vector:u,metadata:dr(n,t),createdAt:Date.now()});}catch(c){I.w("EMBEDDING","Failed to decode pre-generated embedding",{entityId:n.id,name:n.name,error:c.message}),r.push(i);}}if(a.length>0){let i=await e.vectorStore.adaptiveBulkInsert(a);I.i("EMBEDDING","Inserted pre-generated embeddings",{count:a.length,timeMs:i.timeMs.toFixed(1)}),e.onMetricsUpdate(a.length);}return {processed:a.length,failed:r}}R();var Se=class{constructor(e,t,r){this.vectorStore=e;this.codeAnalyzer=t;this.embeddingGen=r;}async dropVectorIndex(){this.vectorStore&&(I.d("VECTORINDEX","drop_for_bulk"),await this.vectorStore.dropVectorIndex());}async rebuildVectorIndex(){if(!this.vectorStore)return {strategy:"none",usedFaiss:false,timeMs:0};I.d("VECTORINDEX","rebuild_start");let e=await this.vectorStore.adaptiveRebuildIndex();return I.i("VECTORINDEX","rebuild_done",{strategy:e.strategy,usedFaiss:e.usedFaiss,ms:e.timeMs.toFixed(0)}),e}async analyzeHotspots(e,t){let{readByteRange:r,readLineRange:a,readText:i}=await import('./file-ops-HXOTPMZ7.js'),n=await d$2(),c=e??[];if(c.length===0)return {metric:t,items:[]};let u=c.map(l=>("entity"in l?l.entity:l).id).filter(l=>!!l),g=20,x=new Map;for(let l=0;l<u.length;l+=g){let d=u.slice(l,l+g),h=await Promise.all(d.map(async f=>{try{return {id:f,entity:await n.getEntity(f)}}catch{return {id:f,entity:null}}}));for(let{id:f,entity:E}of h)E&&x.set(f,E);}let p=c.map(async l=>{let d="entity"in l?l.entity:l,h=d.filePath,f="",E;if(!h)return {entity:d,code:f,snippetInfo:E};try{let w=d.id?x.get(d.id):null;if(w?.location&&typeof w.location.start?.index=="number"&&typeof w.location.end?.index=="number"){let S=Math.max(0,w.location.start.index),P=w.location.end.index,T=await r(h,S,P,1e4);T?(f=T,E={startLine:w.location.start.line,endLine:w.location.end.line,length:T.length}):f=await i(h);}else if(w?.location&&typeof w.location.start?.line=="number"&&typeof w.location.end?.line=="number"){let S=w.location.start.line||1,P=w.location.end.line||S,T=await a(h,S,P,1e4);T?(f=T,E={startLine:S,endLine:P,length:T.length}):f=await i(h);}else f=await i(h);}catch{}return {entity:d,code:f,snippetInfo:E}}),m=(await Promise.all(p)).map(l=>({...l,semantic:void 0}));for(let l=0;l<m.length;l+=g){let d=m.slice(l,l+g);await Promise.all(d.map(async h=>{if(h.code)try{await this.embeddingGen.generateCodeEmbedding(h.code),h.semantic=await this.codeAnalyzer.analyzeCodeSemantics(h.code);}catch{}}));}let y=m.map(l=>{let d=l.entity;return {entityId:d.id,filePath:d.filePath||d.path,name:d.name,language:d.language,structuralScore:d.score||d.complexity||void 0,semantic:l.semantic,snippet:l.snippetInfo}});return y.sort((l,d)=>{let h=(l.structuralScore||0)+(l.semantic?.complexity||0);return (d.structuralScore||0)+(d.semantic?.complexity||0)-h}),{metric:t,items:y}}};function ur(){let s=b();return {maxConcurrency:s.semanticAgent?.maxConcurrency??5,memoryLimit:s.semanticAgent?.memoryLimit??240,priority:s.semanticAgent?.priority??8,batchSize:s.semanticAgent?.batchSize??8,queueBatchSize:s.semanticAgent?.queueBatchSize??100,modelPath:s.semanticAgent?.modelPath??"./models"}}var Q=ur(),Nt=class extends b$1{vectorStore;embeddingGen;hybridSearch;cache;codeAnalyzer;vectorIndexManager;embeddingReady=false;embeddingReadyPromise=null;embeddingInitError=null;embeddingDim=384;embeddingBatchSize=Q.batchSize;defaultMaxConcurrency;defaultMemoryLimit;defaultBatchSize=Q.batchSize;resourceMixin=new a$1;circuitBreaker=new Ee({name:"SemanticAgent"});lastOversizedWarning=null;isGeneratingEmbeddings=false;lastGenerationCompleteTime=0;embeddingMutex=Promise.resolve();embeddingModelName="all-MiniLM-L6-v2";twoPhaseMode=false;dumpBatchIndex=0;globalCache=null;cooccurrenceIndex=null;queryExpander=null;getLastOversizedWarning(){return this.lastOversizedWarning}get modelName(){return this.embeddingModelName}async getEmbeddingDimensions(){let e=b$2();if(e)return this.embeddingDim=e,I.i("SEMANTIC","dims_from_warmup",{dims:e}),e;try{let a=(await Promise.race([this.embeddingGen.generateEmbedding("dimension detection test"),new Promise((i,n)=>setTimeout(()=>n(new Error("dim detection timeout after 5000ms")),5e3))])).length;return this.embeddingDim=a,I.i("SEMANTIC","dims_detected",{dims:a}),a}catch(t){return I.w("SEMANTIC","dims_fallback",{err:t.message,dims:384}),this.embeddingDim=384,384}}semanticMetrics={embeddingsGenerated:0,searchesPerformed:0,avgEmbeddingTime:0,avgSearchTime:0,cacheHitRate:0,vectorsStored:0};constructor(){super("semantic",{maxConcurrency:Q.maxConcurrency,memoryLimit:Q.memoryLimit,priority:Q.priority}),this.cache=new we({maxSize:5e3,ttl:36e5}),this.defaultMaxConcurrency=this.capabilities.maxConcurrency,this.defaultMemoryLimit=this.capabilities.memoryLimit,this.embeddingBatchSize=this.defaultBatchSize;}async setupComponents(){let e$1=Date.now(),t=b();I.t("SEMANTIC","setup_start",{});let r=i();I.t("SEMANTIC","config_loaded",{ms:Date.now()-e$1}),this.twoPhaseMode=t.mcp?.embedding?.twoPhaseMode??false,this.twoPhaseMode&&(I.i("SEMANTIC","two_phase_mode",{}),bt(),this.dumpBatchIndex=0);let a=t.mcp?.embedding?.provider,i$1=a$2(r),n=i$1!=="auto"?i$1:a??"auto",c=t.mcp?.embedding?.model,u=b$3(r),g=u!=="all-MiniLM-L6-v2"?u:c||"all-MiniLM-L6-v2";this.embeddingModelName=g;let x=i$1!=="auto"?"semantic-config.json":a?"YAML config":"auto-detect";I.i("SEMANTIC","init",{provider:n,model:g,src:x});let p=t.mcp?.semantic;p?.cacheWarmupLimit&&p.cacheWarmupLimit>0&&(this.embeddingBatchSize=Math.min(this.defaultBatchSize,Math.max(1,Math.floor(p.cacheWarmupLimit)))),this.embeddingBatchSize=e(r,this.embeddingBatchSize),I.d("SEMANTIC","batch_size",{size:this.embeddingBatchSize});let b$1=c$2();if(b$1)I.i("SEMANTIC","Using pre-warmed embedding generator"),this.embeddingGen=b$1;else {I.d("SEMANTIC","Creating new embedding generator (no pre-warmed available)");let S=d(n,g,this.embeddingBatchSize,r,t);this.embeddingGen=new d$1(S);}let m=await this.getEmbeddingDimensions(),y=a$3()||process.cwd(),l=p$1(),h=t.database?.path&&t.database.path.length>0?t.database.path:l.vectorsDbPath;I.d("SEMANTIC","vectorstore_cfg",{path:h,dims:m});let f=t.vectorBackend||{},E=t.mcp?.embedding?.useLayeredIndex??true;this.vectorStore=new ve({dbPath:h,dimensions:m,workingDirectory:y,libsql:f.libsql,useLayeredIndex:E}),await this.vectorStore.initialize();let w=v(y);await this.vectorStore.setProject(y,w),I.i("SEMANTIC","vectorstore_ready",{project:q$1(y),branch:w}),this.hybridSearch=new xe(this.vectorStore,this.embeddingGen);try{let S=await d$2();S.setProject(y,w);let P=S.getCooccurrenceOps();this.cooccurrenceIndex=new Y(P),this.queryExpander=new X(this.cooccurrenceIndex),this.hybridSearch.setQueryExpander(this.queryExpander),I.i("SEMANTIC","query_expander_ready",{project:q$1(y),branch:w});}catch(S){I.w("SEMANTIC","query_expander_init_fail",{err:S.message});}this.codeAnalyzer=new Z(this.vectorStore,this.embeddingGen,this.cache),this.vectorIndexManager=new Se(this.vectorStore,this.codeAnalyzer,this.embeddingGen);}async"embeddingGen.generateBatch"(e){return this.embeddingGen.generateBatch(e)}async initialize(){let e=Date.now();I.t("SEMANTIC","init_start",{}),await this.setupComponents(),I.t("SEMANTIC","setup_done",{ms:Date.now()-e}),this.subscribeToKnowledgeBus(),await super.initialize(),I.t("SEMANTIC","init_done",{ms:Date.now()-e});}async onInitialize(){this.stopResourceMonitoring(),this.initializeEmbeddingGenAsync(),this.semanticMetrics.vectorsStored=await this.vectorStore.count(),I.i("SEMANTIC","ready",{vectors:this.semanticMetrics.vectorsStored});}initializeEmbeddingGenAsync(){this.embeddingReadyPromise=(async()=>{try{let e=Date.now();await this.embeddingGen.initialize(),this.embeddingGen.setBatchSize(this.embeddingBatchSize),this.embeddingReady=!0;let t=Date.now()-e;I.i("SEMANTIC","embedding_ready",{ms:t}),await this.initializeGlobalCache(),this.warmupSemanticCache().catch(r=>{I.w("SEMANTIC","warmup_failed",{err:r.message});});}catch(e){this.embeddingInitError=e,I.e("SEMANTIC","embedding_init_fail",{err:this.embeddingInitError.message});}})();}async waitForEmbeddingReady(e=6e4){if(this.embeddingReady)return true;if(!this.embeddingReadyPromise)return false;let t=Date.now();for(;Date.now()-t<e;){if(this.embeddingReady)return true;await b$4(100);}return this.embeddingReady}isEmbeddingReady(){return this.embeddingReady}getEmbeddingInitError(){return this.embeddingInitError}getWorkerEmbeddingConfig(){if(!this.embeddingReady||!this.embeddingGen)return null;let e=this.embeddingGen.getProvider();if(!e)return null;let t=e.info,r=t.name.toLowerCase(),a,{getConfig:i}=(g(),f(f$1)),n=i(),{loadSemanticConfig:c}=(p(),f(o)),u=c();switch(r){case "tei":{let g=u?.embedding?.tei||n.mcp?.embedding?.tei;a={baseUrl:g?.endpoint||g?.baseUrl||"http://127.0.0.1:8081",timeoutMs:g?.timeoutMs,concurrency:g?.concurrency,maxBatchSize:g?.max_batch_tokens};break}case "ovms":{let g=u?.embedding?.ovms;a={baseUrl:g?.endpoint,timeoutMs:g?.timeoutMs,concurrency:g?.concurrency,useEmbeddingsApi:g?.useEmbeddingsApi??true,encodingFormat:g?.encodingFormat??"base64",protocol:g?.protocol,grpcPort:g?.grpcPort};break}case "ollama":{let g=u?.embedding?.ollama;a={baseUrl:g?.endpoint,timeoutMs:g?.timeoutMs,concurrency:g?.concurrency};break}default:a=void 0;}return {enabled:true,provider:r,modelName:t.model,maxTokens:t.maxTokens||512,contextTokens:t.maxTokens||512,batchSize:this.embeddingBatchSize,providerOptions:a}}isEmbeddingGenerationInProgress(){return this.isGeneratingEmbeddings}wasGenerationRecentlyCompleted(e=3e4){return Date.now()-this.lastGenerationCompleteTime<e}async reinitializeForProject(e,t){let r=this.vectorStore?.getProjectContext?.(),a=q$1(e),i=t||v(e);r?.projectHash===a&&r?.branchName===i||(I.d("SEMANTIC","Switching project context",{from:r?.projectHash,to:a,branch:i}),await this.vectorStore.setProject(e,i),this.semanticMetrics.vectorsStored=await this.vectorStore.count(),I.i("SEMANTIC","Context switched",{project:a,vectors:this.semanticMetrics.vectorsStored}));}async switchBranch(e){let t=this.vectorStore?.getProjectContext?.();if(!t){I.w("SEMANTIC","Cannot switch branch - no context");return}if(!e){I.w("SEMANTIC","switchBranch called without branchName");return}t.branchName!==e&&(await this.vectorStore.setProjectContext({projectHash:t.projectHash,branchName:e}),this.semanticMetrics.vectorsStored=await this.vectorStore.count(),I.i("SEMANTIC","Branch switched",{branch:e,vectors:this.semanticMetrics.vectorsStored}));}async onShutdown(){await this.embeddingGen.cleanup(),await this.vectorStore.close(),this.cache.clear(),I.i("SEMANTIC","Shutdown complete");}canProcessTask(e){return e.type==="semantic"}async processTask(e){let t=e.payload;switch(t.type){case "embed":return this.handleEmbedTask(t);case "search":return this.handleSearchTask(t);case "analyze":return this.handleAnalyzeTask(t);case "clone_detect":return this.handleCloneDetectionTask(t);case "refactor":return this.handleRefactorTask(t);default:throw new Error(`Unknown semantic task type: ${t.type}`)}}async handleMessage(e){switch(e.type){case "index:complete":await this.handleNewEntities(e.payload);break;case "search:request":await this.handleSearchRequest(e);break;default:I.d("SEMANTIC","Unknown message type",{type:e.type,from:e.from});}}async handleEmbedTask(e){let t=Date.now(),r=await this.generateCodeEmbedding(e.code||"");return this.semanticMetrics.embeddingsGenerated++,this.updateEmbeddingTime(Date.now()-t),r}async handleSearchTask(e){let t=Date.now(),r=await this.semanticSearch(e.query||"",e.limit);return this.semanticMetrics.searchesPerformed++,this.updateSearchTime(Date.now()-t),r}async handleAnalyzeTask(e){return this.analyzeCodeSemantics(e.code||"")}async handleCloneDetectionTask(e){return this.detectClones(e.threshold)}async handleRefactorTask(e){return this.suggestRefactoring(e.code||"")}async semanticSearch(e,t=10){if(!await this.waitForEmbeddingReady(6e4))return I.w("SEMANTIC","Embedding generator not ready, returning empty results",{query:e}),{results:[],totalResults:0,searchTime:0,processingTime:0,query:e};let a=`search:${e}:${t}`,i=this.cache.get(a);return i?(this.updateCacheHitRate(true),i):(this.updateCacheHitRate(false),this.circuitBreaker.execute(async()=>{let n=await this.hybridSearch.semanticSearch(e,t);return this.cache.set(a,n,6e5),n},()=>({results:[],totalResults:0,searchTime:0,processingTime:0,query:e}),"semanticSearch"))}async findSimilarCode(e,t=.7){return this.codeAnalyzer.findSimilarCode(e,t)}async detectClones(e=.65){return this.codeAnalyzer?this.codeAnalyzer.detectClones(e):(I.w("SEMANTIC","detectClones called before codeAnalyzer initialized"),[])}async analyzeCodeSemantics(e){return this.codeAnalyzer.analyzeCodeSemantics(e)}async generateCodeEmbedding(e){return this.circuitBreaker.execute(async()=>this.codeAnalyzer.generateCodeEmbedding(e),()=>new Float32Array(this.embeddingDim),"generateCodeEmbedding")}async crossLanguageSearch(e,t){return this.codeAnalyzer.crossLanguageSearch(e,t)}async suggestRefactoring(e){return this.codeAnalyzer.suggestRefactoring(e)}async analyzeHotspots(e,t){return this.vectorIndexManager.analyzeHotspots(e,t)}subscribeToKnowledgeBus(){a$4.subscribe(this.id,"semantic:new_entities",async e=>{let t=e.data;if(t?.length){if(this.cooccurrenceIndex)try{await this.updateCooccurrenceFromEntities(t);}catch(r){I.w("COOC","update_fail",{err:r.message,count:t.length});}try{let{SUPPORTED_LANGUAGES:r}=await import('./language-detection-VNXIYFJR.js'),a=new Set(r),i=t.filter(n=>!a.has(n.language??""));i.length>0&&(I.i("EMBEDDING","generating_for_non_worker",{total:t.length,nonWorker:i.length,languages:[...new Set(i.map(n=>n.language))]}),await this.handleNewEntities(i));}catch(r){I.w("EMBEDDING","non_worker_embed_fail",{err:r.message});}}}),a$4.subscribe(this.id,"resources:adjusted",this.handleResourceAdjustment.bind(this)),a$4.subscribe(this.id,"indexer:incremental:complete",async e=>{let t=e.data;I.i("SEMANTIC","Incremental update complete, generating embeddings",{reason:t?.reason,timestamp:t?.timestamp});try{await this.generateEmbeddingsFromStorage(!1);}catch(r){I.e("SEMANTIC","Incremental embedding generation failed",{error:r.message});}}),a$4.subscribe(this.id,"indexer:embeddings:generate",async e=>{let t=e.data;t.source?.startsWith("git-watcher")&&await this.handleIncrementalEmbeddingGeneration(t.files,t.bulkMode);}),a$4.subscribe(this.id,"indexer:branch:changed",async e=>{let t=e.data;I.i("SEMANTIC","branch_change_detected",{from:t.oldBranch,to:t.newBranch});try{await this.vectorStore.setProject(t.repositoryPath,t.newBranch),I.i("SEMANTIC","faiss_context_switched",{branch:t.newBranch});}catch(r){I.e("SEMANTIC","faiss_context_switch_fail",{err:String(r)});}}),a$4.subscribe(this.id,"index:completed",e=>{if(e.data?.incremental||!this.cooccurrenceIndex)return;let r=this.cooccurrenceIndex;(async()=>{try{I.i("COOC","recalculating_pmi_async"),await r.recalculatePMI();let a=await r.getStats();I.i("COOC","pmi_done",{pairs:a.totalPairs,terms:a.totalTerms});}catch(a){I.w("COOC","pmi_fail",{err:a.message});}})();});}async dropVectorIndex(){return this.vectorIndexManager.dropVectorIndex()}async rebuildVectorIndex(){await this.vectorIndexManager.rebuildVectorIndex();}async handleIncrementalEmbeddingGeneration(e,t){let r=Date.now();try{if(!await this.waitForEmbeddingReady(6e4)){I.w("SEMANTIC","Embedding not ready, skipping incremental");return}let i=await this.generateEmbeddingsFromStorage(t),n=Date.now()-r;I.i("EMBEDDING","Incremental complete",{generated:i.generated,skipped:i.skipped,bulkMode:t,elapsedMs:n}),a$4.publish("semantic:embeddings:complete",{generated:i.generated,skipped:i.skipped,bulkMode:t,elapsedMs:n,source:"incremental"},this.id);}catch(a){I.e("SEMANTIC","Incremental embedding failed",{error:a.message});}}async generateEmbeddingsFromStorage(e=true){if(this.isGeneratingEmbeddings)return I.w("EMBEDDING","[DUPLICATE] generateEmbeddingsFromStorage skipped - already running"),{generated:0,skipped:0};this.isGeneratingEmbeddings=true;try{let r=await a$5().flush();return r>0&&I.i("EMBEDDING","Flushed pending from accumulator",{count:r}),await this.vectorStore.flushAndSave(),I.i("EMBEDDING","generateEmbeddingsFromStorage complete - embeddings saved to disk"),{generated:r,skipped:0}}catch(t){return I.e("EMBEDDING","generateEmbeddingsFromStorage failed",{error:t.message}),{generated:0,skipped:0}}finally{this.isGeneratingEmbeddings=false,this.lastGenerationCompleteTime=Date.now();}}async filterWorkerEntities(e){try{let{buildWorkerEmbeddingConfig:t}=await import('./worker-embedding-config-SCMFWSFD.js');if(t()?.enabled){let{SUPPORTED_LANGUAGES:a}=await import('./language-detection-VNXIYFJR.js'),i=new Set(a),n=e.filter(c=>!i.has(c.language??""));return n.length===0?(I.d("EMBEDDING","Skipping - workers generate embeddings via IPC",{agentId:this.id,entities:e.length}),null):(I.i("EMBEDDING","non_worker_entities",{workerHandled:e.length-n.length,needGeneration:n.length,languages:[...new Set(n.map(c=>c.language))]}),n)}}catch{}return e}async resolveEmbeddingCache(e){let t=new Map,r=new Array(e.length),a=[],i=new Map,n=[],c=[],u=[],g=[];for(let y=0;y<e.length;y++){let l=e[y],d=b$5(l).slice(0,16);if(r[y]=d,!t.has(d)){t.set(d,a.length),a.push(l);let h=this.globalCache?.get(l);h?i.set(d,h):(n.push(l),c.push(d));}}let x=i.size,p=0,b=f$2();if(b&&c.length>0)try{let y=await b.getEmbeddingsFromCache(c);for(let l=0;l<c.length;l++){let d=c[l],h=y.get(d);h?(i.set(d,h),this.globalCache?.set(n[l],h),p++):(u.push(n[l]),g.push(d));}p>0&&I.i("CACHE","Batch hits",{checked:c.length,hits:p,remaining:u.length});}catch(y){I.w("CACHE","Batch lookup failed",{error:y.message}),u.push(...n),g.push(...c);}else u.push(...n),g.push(...c);let m=e.length-a.length;return {cacheHits:i,originalIndexToHash:r,uniqueTexts:a,textsNeedingGeneration:u,textsNeedingGenerationHashes:g,dedupeSaved:m,globalCacheHitCount:x,persistentCacheHitCount:p}}buildEntityEmbeddingText(e,t,r,a,i){let n=e,c="";try{if(n.filePath&&!n.filePath.startsWith("external://")&&!n.filePath.includes("://")){let m=t.get(n.filePath);if(m===void 0)try{m=a(n.filePath),t.set(n.filePath,m);}catch{m="";}if(typeof n.location?.start?.index=="number"&&typeof n.location?.end?.index=="number"){let y=Math.max(0,n.location.start.index),l=Math.min(n.location.end.index,y+1e4);c=m.slice(y,l);}else if(typeof n.location?.start?.line=="number"&&typeof n.location?.end?.line=="number"){let y=m.split(`
128
+ `),l=Math.max(0,n.location.start.line-1),d=Math.min(y.length,n.location.end.line);c=y.slice(l,d).join(`
129
+ `).slice(0,1e4);}}}catch{}let u=`${n.name??""} ${n.type??""} ${n.signature??""}`.trim(),g=u;if(n.documentation?.description&&(g+=`
130
+ description: ${n.documentation.description}`),n.calls&&n.calls.length>0){let m="",y=n.calls.length>20?n.calls.slice(0,20):n.calls;for(let l=0;l<y.length;l++){let d=y[l];l>0&&(m+=", "),m+=d.target?`${d.target}.${d.name}`:d.name;}g+=`
131
+ calls: ${m}`;}if(n.complexity){let m=n.complexity;(m.cyclomatic>5||m.cognitive>10)&&(g+=`
132
+ complexity: cyclomatic=${m.cyclomatic} cognitive=${m.cognitive}`);}if(n.controlFlow){let m=n.controlFlow,y="";m.branches?.length>0&&(y+=`branches=${m.branches.length}`),m.loops?.length>0&&(y+=(y?", ":"")+`loops=${m.loops.length}`),m.exceptions?.length>0&&(y+=(y?", ":"")+`exceptions=${m.exceptions.length}`),m.awaits?.length>0&&(y+=(y?", ":"")+`awaits=${m.awaits.length}`),y&&(g+=`
133
+ flow: ${y}`);}if(n.returnType&&(g+=`
134
+ returns: ${n.returnType}`),n.parameters&&n.parameters.length>0){let m="",y=0;for(let l of n.parameters)l.type&&y<10&&(y>0&&(m+=", "),m+=`${l.name}:${l.type}`,y++);m&&(g+=`
135
+ params: ${m}`);}c&&(g+=`
136
+ `+c);let x=n.id||i.generateEntityId(e),b=r.get(n.filePath)?.get(x)||[];return b.length>0?i.enhanceEntityContentWithComments(g,u,b):g.trim()}async extractFileComments(e){let{readTextSync:t}=await import('./file-ops-HXOTPMZ7.js'),{CommentExtractor:r}=await import('./comment-extractor-4LGLLLXK.js'),a=new Map;for(let g of e)g.filePath&&!g.filePath.startsWith("external://")&&!g.filePath.includes("://")&&(a.has(g.filePath)||a.set(g.filePath,[]),a.get(g.filePath).push(g));let i=new Map,n=new Map;I.d("EMBEDDING","Extracting comments from files",{agentId:this.id,fileCount:a.size});let c=0,u=process.memoryUsage();I.d("EMBEDDING","Memory before comment extraction",{heapUsedMB:Math.round(u.heapUsed/1024/1024),rssMB:Math.round(u.rss/1024/1024)});for(let[g,x]of a.entries())if(c++,I.t("EMBEDDING","For loop iteration start",{fileIdx:c,filePath:g}),!(g.startsWith("external://")||g.includes("://")))try{I.d("EMBEDDING",`Reading file ${c}/${a.size}`,{agentId:this.id,filePath:g,entityCount:x.length});let p=t(g);I.d("EMBEDDING","File read, extracting comments",{agentId:this.id,filePath:g,contentLen:p.length});let b=r.extractComments(p,g);I.d("EMBEDDING","Comments extracted",{agentId:this.id,filePath:g,commentCount:b.comments.length}),i.set(g,b);let m=r.associateCommentsWithEntities(b.comments,x,b.leadingComments);n.set(g,m),I.d("EMBEDDING",`File ${c} done`,{agentId:this.id});}catch(p){I.d("SEMANTIC","Comment extraction failed",{filePath:g,error:p.message});}return {commentsByFile:i,associationsByFile:n,CommentExtractor:r}}async generateAndStoreEmbeddings(e,t,r,a,i){let n=this.modelName,{cacheHits:c,originalIndexToHash:u,textsNeedingGeneration:g,textsNeedingGenerationHashes:x,globalCacheHitCount:p,persistentCacheHitCount:b}=a,m=p+b;(m>0||a.dedupeSaved>0)&&I.i("CACHE","Batch optimization",{total:t.length,toGenerate:g.length,fromMemory:p,fromDisk:b,dedupe:a.dedupeSaved,cacheHitRate:t.length>0?`${Math.round(m/t.length*100)}%`:"0%"}),I.t("EMBEDDING","Before mutex wait");let y,l=this.embeddingMutex;this.embeddingMutex=new Promise(w=>{y=w;}),await l,I.t("EMBEDDING","Mutex acquired");let d,h,f=0,E=w=>{let S=Date.now()-f;I.i("PERF",w,{elapsedMs:S,sinceStart:`${S}ms`});};try{let w=new Map(c);if(g.length>0){I.t("EMBEDDING","Before generateBatch",{count:g.length});let k=await this.embeddingGen.generateBatch(g);I.t("EMBEDDING","After generateBatch",{count:k.length});for(let v=0;v<x.length;v++)w.set(x[v],k[v]);let C=f$2();if(C){let v=x.map((M,R)=>({contentHash:M,model:n,embedding:k[R],textPreview:g[R]?.slice(0,100)}));C.setEmbeddingsInCache(v).catch(M=>{I.w("CACHE","Failed to save embeddings",{error:M.message});}),I.d("CACHE","Saving new embeddings",{count:v.length});}}else I.i("CACHE","100% cache hit",{count:m});d=u.map(k=>w.get(k)),i("4_EMBEDDING_GEN",d.length),f=Date.now(),h=await d$2(),E("5a_GET_STORAGE");let S=new Map,P=e.filter(k=>k.id&&!k.filePath&&!k.path);if(P.length>0&&P.length<100){let k=P.map(v=>v.id).filter(v=>v!==void 0),C=20;for(let v=0;v<k.length;v+=C){let M=k.slice(v,v+C),R=await Promise.all(M.map(N=>h.getEntity(N)));for(let N=0;N<M.length;N++){let A=R[N];A!==null&&S.set(M[N],A);}}}E("5b_FETCH_ENTITIES");let T=e.map((k,C)=>{let v=k,M=r.get(k)??(v.id?`ent:${v.id}`:"doc:unknown"),R=S.get(v.id),N=v.filePath??v.path??R?.filePath??"",A=v.language??R?.language??void 0,I={path:N,type:v.type,name:v.name,language:A,entityId:v.id??void 0,start:v.location?.start?.index??void 0,end:v.location?.end?.index??void 0,model:n};if(v.complexity&&(I.cyclomatic=v.complexity.cyclomatic,I.cognitive=v.complexity.cognitive,I.linesOfCode=v.complexity.linesOfCode,I.nestingDepth=v.complexity.nestingDepth),v.calls?.length&&(I.callCount=v.calls.length,I.hasAsyncCalls=v.calls.some(j=>j.isAwait)),v.controlFlow){let j=v.controlFlow;I.hasBranches=(j.branches?.length||0)>0,I.hasLoops=(j.loops?.length||0)>0,I.hasExceptions=(j.exceptions?.length||0)>0,I.hasAwaits=(j.awaits?.length||0)>0,I.branchCount=j.branches?.length||0,I.loopCount=j.loops?.length||0,I.returnCount=j.returns?.length||0;}return v.documentation&&(I.hasDocumentation=!0,I.hasParams=(v.documentation.params?.length||0)>0,I.hasExamples=(v.documentation.examples?.length||0)>0,I.isDeprecated=!!v.documentation.deprecated),v.returnType&&(I.returnType=v.returnType),v.parameters?.length&&(I.paramCount=v.parameters.length),{id:M,content:t[C]??"",vector:d[C]??new Float32Array(this.embeddingDim),metadata:I,createdAt:Date.now()}});if(E("5c_BUILD_VECTORS"),this.twoPhaseMode){let k=T.map(C=>({id:C.id,content:C.content,vector:St(C.vector),metadata:C.metadata,createdAt:C.createdAt}));xt(k,this.dumpBatchIndex++),this.semanticMetrics.embeddingsGenerated+=d.length;}else {T.length>0&&I.d("EMBEDDING","Insert sample IDs",{sampleIds:T.slice(0,3).map(C=>C.id)}),I.d("EMBEDDING","Calling adaptiveBulkInsert",{agentId:this.id,count:T.length});let k=await this.vectorStore.adaptiveBulkInsert(T);E("5d_FAISS_INSERT"),I.t("EMBEDDING","adaptiveBulkInsert returned to caller"),i("5_DB_INSERT",T.length),I.d("EMBEDDING","adaptiveBulkInsert done",{agentId:this.id,usedFaiss:k.usedFaiss,timeMs:k.timeMs.toFixed(1)}),this.semanticMetrics.embeddingsGenerated+=d.length,this.semanticMetrics.vectorsStored=await this.vectorStore.count(),E("5e_COUNT"),a$4.publish("semantic:embeddings:complete",{count:d.length},this.id),I.i("EMBEDDING","Stored embeddings",{agentId:this.id,count:d.length,total:this.semanticMetrics.vectorsStored});}}finally{y(),E("5f_MUTEX_RELEASE"),I.d("EMBEDDING","Mutex released, about to process comments",{agentId:this.id});}}async handleNewEntities(e){if(!Array.isArray(e)||e.length===0)return;await this.updateCooccurrenceFromEntities(e);let t=await this.filterWorkerEntities(e);if(t===null)return;e=t;let r=Date.now(),a=r,i=(A,I$1)=>{let j=Date.now()-a,Ce=j>0?Math.round(I$1/j*1e3):0;I.i("PERF",`${A}`,{entities:I$1,ms:j,speed:`${Ce}/s`}),a=Date.now();},n=this.embeddingGen.maxTokens,c=Pt(e,{maxTokens:n}),u=c.length,g=[],x=[],p=0,b=0;for(let A of c){let I=A.filePath||"";if(Rt(I)){p++;continue}if(!A.embeddingBase64&&_t(A)){b++;continue}A.embeddingBase64?g.push(A):x.push(A);}(p>0||b>0)&&I.i("EMBEDDING","Filtered out machine-generated and trivial entities",{before:u,after:u-p-b,skipped_patterns:p,skipped_trivial:b,patterns:Ne});let m=x;if(g.length>0){I.i("EMBEDDING","Processing pre-generated embeddings from workers",{preGenerated:g.length,needGeneration:x.length});let A=this.modelName,I$1={vectorStore:this.vectorStore,onMetricsUpdate:Lt=>{this.semanticMetrics.embeddingsGenerated+=Lt;}},{processed:j,failed:Ce}=await Dt(g,I$1,A);if(x.push(...Ce),m.length=0,m.push(...x),m.length===0){this.semanticMetrics.vectorsStored=await this.vectorStore.count(),I.i("EMBEDDING","All embeddings were pre-generated by workers",{total:j});return}}this.lastOversizedWarning=It(m,n),this.lastOversizedWarning.hasWarning&&I.w("SEMANTIC","Oversized entities",{count:this.lastOversizedWarning.oversizedCount,maxTokens:n});let y=this.modelName,{readTextSync:l}=await import('./file-ops-HXOTPMZ7.js'),d=new Map,h=new Map;for(let A of m){let I=A.id?`ent:${A.id}`:`doc:${b$5(`${A.filePath??""}|${A.type}|${A.name??"anon"}|${y}`).slice(0,24)}`;h.set(I,A);}i("1_FILE_READ",h.size);let f=new Set,E=Array.from(h.keys());try{f=await this.vectorStore.getExistingIds(E),I.d("EMBEDDING","Batch existence check",{agentId:this.id,total:h.size,existing:f.size});}catch(A){if(A instanceof g$1)throw I.e("EMBEDDING","DATABASE CORRUPTION - recreating database",{error:A.message}),await j(),new Error("Database was corrupt and has been recreated. Please retry the operation.");I.w("EMBEDDING","Batch existence check failed, processing all",{error:A.message});}let w=[],S=new Map;for(let[A,I]of h)f.has(A)||(w.push(I),S.set(I,A));if(w.length===0)return;I.i("EMBEDDING","Generating embeddings",{agentId:this.id,count:w.length});let{commentsByFile:P,associationsByFile:T,CommentExtractor:k}=await this.extractFileComments(w);i("2_COMMENT_EXTRACT",w.length),I.d("EMBEDDING","Comments extracted, building texts",{agentId:this.id,entityCount:w.length});let C=[];for(let A of w)C.push(this.buildEntityEmbeddingText(A,d,T,l,k));d.clear(),i("3_TEXT_BUILD",C.length),I.d("EMBEDDING","Texts built",{agentId:this.id,textCount:C.length}),P.clear(),T.clear();let v=await this.resolveEmbeddingCache(C);I.t("EMBEDDING","Text deduplication complete",{unique:v.uniqueTexts.length,dedupe:v.dedupeSaved,needsGen:v.textsNeedingGeneration.length}),await this.generateAndStoreEmbeddings(w,C,S,v,i);let M=await d$2();I.d("EMBEDDING","Starting processStandaloneComments",{agentId:this.id,commentFiles:P.size}),await this.processStandaloneComments(P,T,M),I.t("EMBEDDING","processStandaloneComments returned successfully",{agentId:this.id});let R=Date.now()-r,N=R>0?Math.round(w.length/R*1e3):0;I.i("PERF","BATCH_COMPLETE",{entities:w.length,totalMs:R,speed:`${N}/s`}),I.d("EMBEDDING","handleNewEntities complete",{agentId:this.id});}async updateCooccurrenceFromEntities(e){if(!(!this.cooccurrenceIndex||e.length===0))try{let t=Date.now(),r=[];for(let n of e){let c=n;if(c.name&&r.push(c.name),c.documentation?.description&&r.push(c.documentation.description),c.documentation?.params?.length>0)for(let u of c.documentation.params)u.description&&r.push(`${u.name} ${u.description}`);c.signature&&c.signature.length>20&&r.push(c.signature);}let a=r.filter(n=>{let c=/[a-zA-Z\u0400-\u04FF]{3,}/.test(n),u=n.length>=10;return c&&u});if(a.length===0)return;await this.cooccurrenceIndex.updateFromChunks(a);let i=Date.now()-t;I.d("COOC","entities_updated",{entities:e.length,chunks:a.length,ms:i});}catch(t){I.w("COOC","entities_update_failed",{error:t.message});}}async flushDumpToDatabase(){let e=te();if(e.totalEmbeddings===0)return I.i("DUMP","No embeddings to flush"),{inserted:0,skipped:0};I.i("DUMP","Starting flush",{totalEmbeddings:e.totalEmbeddings,batchCount:e.batchCount,diskSizeMB:(e.diskSizeBytes/1024/1024).toFixed(2)});let t=wt();if(t.length===0)return I.w("DUMP","No embeddings loaded from dump files"),{inserted:0,skipped:0};let r=t.map(c=>({id:c.id,content:c.content,vector:Ct(c.vector),metadata:c.metadata,createdAt:c.createdAt})),a=100,i=0,n=0;for(let c=0;c<r.length;c+=a){let u=r.slice(c,c+a),g=Math.floor(c/a)+1;try{let x=await this.vectorStore.adaptiveBulkInsert(u);i+=x.insertedCount;}catch(x){I.e("DUMP",`Batch ${g} failed`,{error:x.message}),n+=u.length;}c+a<r.length&&await b$4(1);}return this.semanticMetrics.vectorsStored=await this.vectorStore.count(),vt(),this.dumpBatchIndex=0,I.i("DUMP","Flush completed",{inserted:i,skipped:n,totalVectors:this.semanticMetrics.vectorsStored}),a$4.publish("semantic:embeddings:complete",{count:i},this.id),{inserted:i,skipped:n}}hasPendingDump(){return Et()}getDumpStatistics(){return te()}isTwoPhaseMode(){return this.twoPhaseMode}async processStandaloneComments(e,t,r){await jt(e,t,r,{embeddingGen:this.embeddingGen,vectorStore:this.vectorStore,embeddingDim:this.embeddingDim,embeddingMutex:this.embeddingMutex,setEmbeddingMutex:a=>{this.embeddingMutex=a;}});}async initializeGlobalCache(){try{let e=this.embeddingDim,t=this.modelName;this.globalCache=q.getInstance(),await this.globalCache.initialize(t,e);let r=this.globalCache.getStats();I.i("CACHE","Global cache ready",{total:r.total,model:t});}catch(e){I.w("CACHE","Init failed (non-fatal)",{error:e.message});}}async warmupSemanticCache(){await Mt({embeddingGen:this.embeddingGen,cache:this.cache,semanticMetrics:this.semanticMetrics,embeddingDim:this.embeddingDim,agentId:this.id,embeddingMutex:this.embeddingMutex,setEmbeddingMutex:e=>{this.embeddingMutex=e;}});}handleResourceAdjustment(e){this.resourceMixin.handleResourceAdjustment.call(this,e);}adjustConcurrency(e){let t=Math.max(1,Math.min(this.defaultMaxConcurrency*2,Math.floor(e)));this.capabilities.maxConcurrency!==t&&(this.capabilities.maxConcurrency=t);}adjustBatchSize(e){let t=Math.max(.5,Math.min(2,e/this.defaultMemoryLimit)),r=Math.max(1,Math.round(this.defaultBatchSize*t));if(this.embeddingBatchSize!==r){this.embeddingBatchSize=r;let a=this.embeddingGen;a&&"setBatchSize"in a&&typeof a.setBatchSize=="function"&&a.setBatchSize(r);}}async handleSearchRequest(e){let{query:t,limit:r}=e.payload,a=await this.semanticSearch(t,r);await this.send({id:`${this.id}-response-${Date.now()}`,from:this.id,to:e.from,type:"search:response",payload:a,timestamp:Date.now(),correlationId:e.id});}updateEmbeddingTime(e){let t=this.semanticMetrics.avgEmbeddingTime,r=this.semanticMetrics.embeddingsGenerated;this.semanticMetrics.avgEmbeddingTime=(t*(r-1)+e)/r;}updateSearchTime(e){let t=this.semanticMetrics.avgSearchTime,r=this.semanticMetrics.searchesPerformed;this.semanticMetrics.avgSearchTime=(t*(r-1)+e)/r;}updateCacheHitRate(e){let t=this.cache.getStats();this.semanticMetrics.cacheHitRate=t.hitRate;}getSemanticMetrics(){return {...this.semanticMetrics}}getVectorStore(){return this.vectorStore}async generateEmbedding(e){return this.embeddingGen?this.embeddingGen.generateEmbedding(e):null}getEmbeddingProvider(){return this.embeddingGen.getProvider()}setQueryAgent(e){this.hybridSearch.setQueryAgent(e);}exportCache(){return this.cache.export()}importCache(e){this.cache.import(e);}};
137
+ export{Nt as SemanticAgent};