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.
- package/dist/chunks/analysis-tool-handlers-H2RXLDPX.js +817 -0
- package/dist/chunks/analysis-tool-handlers-RJZAR6VT.js +817 -0
- package/dist/chunks/analysis-tool-handlers-Z2RF24T7.js +13 -0
- package/dist/chunks/autodoc-tool-handlers-CV5JEQUA.js +1112 -0
- package/dist/chunks/autodoc-tool-handlers-EHTNCH6I.js +1112 -0
- package/dist/chunks/autodoc-tool-handlers-MECXQJ2K.js +138 -0
- package/dist/chunks/chaos-CO7TOBOJ.js +18 -0
- package/dist/chunks/chaos-VM2PXERO.js +1573 -0
- package/dist/chunks/chaos-W3XRVJ7K.js +1564 -0
- package/dist/chunks/chunk-6K37BWK5.js +439 -0
- package/dist/chunks/chunk-EALTCYHZ.js +10 -0
- package/dist/chunks/chunk-FTBE7VMY.js +316 -0
- package/dist/chunks/chunk-KBW6LRQP.js +322 -0
- package/dist/chunks/chunk-NKUHX4CU.js +5 -0
- package/dist/chunks/chunk-NZFF4DQ4.js +3179 -0
- package/dist/chunks/chunk-RGP5UVQ7.js +3179 -0
- package/dist/chunks/chunk-RMZXFGQZ.js +322 -0
- package/dist/chunks/chunk-UG44F23Y.js +316 -0
- package/dist/chunks/chunk-V2SCB5H5.js +4403 -0
- package/dist/chunks/chunk-V6JAQNM3.js +1 -0
- package/dist/chunks/chunk-XFGXM4CR.js +4403 -0
- package/dist/chunks/dev-agent-JVIGBMHQ.js +1 -0
- package/dist/chunks/dev-agent-TRVP5U6N.js +1624 -0
- package/dist/chunks/dev-agent-Y5G5WKQ4.js +1624 -0
- package/dist/chunks/graph-storage-factory-AYZ57YSL.js +13 -0
- package/dist/chunks/graph-storage-factory-GTAIJEI5.js +1 -0
- package/dist/chunks/graph-storage-factory-T2WO5QVG.js +13 -0
- package/dist/chunks/incremental-updater-KDIQGAUU.js +14 -0
- package/dist/chunks/incremental-updater-OJRSTO3Q.js +1 -0
- package/dist/chunks/incremental-updater-SBEBH7KF.js +14 -0
- package/dist/chunks/indexer-agent-H3QIEL3Z.js +21 -0
- package/dist/chunks/indexer-agent-KHF5JMV7.js +21 -0
- package/dist/chunks/indexer-agent-SHJD6Z77.js +1 -0
- package/dist/chunks/indexing-pipeline-J6Z4BHKF.js +1 -0
- package/dist/chunks/indexing-pipeline-OY3337QN.js +249 -0
- package/dist/chunks/indexing-pipeline-WCXIDMAP.js +249 -0
- package/dist/chunks/merge-agent-LSUBDJB2.js +2481 -0
- package/dist/chunks/merge-agent-MJEW3HWU.js +2481 -0
- package/dist/chunks/merge-agent-O45OXF33.js +11 -0
- package/dist/chunks/merge-tool-handlers-BDSVNQVZ.js +277 -0
- package/dist/chunks/merge-tool-handlers-HP7DRBXJ.js +1 -0
- package/dist/chunks/merge-tool-handlers-RUJAKE3D.js +277 -0
- package/dist/chunks/pattern-tool-handlers-L62W3CXR.js +1549 -0
- package/dist/chunks/pattern-tool-handlers-SAHX2CVW.js +13 -0
- package/dist/chunks/query-agent-3TWDFIMT.js +191 -0
- package/dist/chunks/query-agent-HXQ3BMMF.js +191 -0
- package/dist/chunks/query-agent-USMC2GNG.js +1 -0
- package/dist/chunks/semantic-agent-MQCAWIAB.js +6381 -0
- package/dist/chunks/semantic-agent-NDGR3NAK.js +6381 -0
- package/dist/chunks/semantic-agent-S4ZL6GZC.js +137 -0
- package/dist/index.js +17 -17
- package/dist/roslyn-addon/.build-hash +1 -1
- package/dist/roslyn-addon/ILGPU.Algorithms.dll +0 -0
- package/dist/roslyn-addon/ILGPU.dll +0 -0
- package/dist/roslyn-addon/UltraCode.CSharp.deps.json +35 -0
- package/dist/roslyn-addon/UltraCode.CSharp.dll +0 -0
- 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};
|