milens 0.6.2 → 0.6.3
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/README.md +157 -14
- package/dist/analyzer/engine.d.ts +1 -0
- package/dist/analyzer/engine.d.ts.map +1 -1
- package/dist/analyzer/engine.js +27 -8
- package/dist/analyzer/engine.js.map +1 -1
- package/dist/analyzer/review.d.ts +23 -0
- package/dist/analyzer/review.d.ts.map +1 -0
- package/dist/analyzer/review.js +143 -0
- package/dist/analyzer/review.js.map +1 -0
- package/dist/analyzer/testplan.d.ts +59 -0
- package/dist/analyzer/testplan.d.ts.map +1 -0
- package/dist/analyzer/testplan.js +218 -0
- package/dist/analyzer/testplan.js.map +1 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/gateway/analyzer.d.ts +6 -0
- package/dist/gateway/analyzer.d.ts.map +1 -0
- package/dist/gateway/analyzer.js +218 -0
- package/dist/gateway/analyzer.js.map +1 -0
- package/dist/gateway/cache.d.ts +35 -0
- package/dist/gateway/cache.d.ts.map +1 -0
- package/dist/gateway/cache.js +175 -0
- package/dist/gateway/cache.js.map +1 -0
- package/dist/gateway/config.d.ts +10 -0
- package/dist/gateway/config.d.ts.map +1 -0
- package/dist/gateway/config.js +167 -0
- package/dist/gateway/config.js.map +1 -0
- package/dist/gateway/context-memory.d.ts +68 -0
- package/dist/gateway/context-memory.d.ts.map +1 -0
- package/dist/gateway/context-memory.js +157 -0
- package/dist/gateway/context-memory.js.map +1 -0
- package/dist/gateway/observability.d.ts +83 -0
- package/dist/gateway/observability.d.ts.map +1 -0
- package/dist/gateway/observability.js +152 -0
- package/dist/gateway/observability.js.map +1 -0
- package/dist/gateway/privacy.d.ts +27 -0
- package/dist/gateway/privacy.d.ts.map +1 -0
- package/dist/gateway/privacy.js +139 -0
- package/dist/gateway/privacy.js.map +1 -0
- package/dist/gateway/providers.d.ts +66 -0
- package/dist/gateway/providers.d.ts.map +1 -0
- package/dist/gateway/providers.js +377 -0
- package/dist/gateway/providers.js.map +1 -0
- package/dist/gateway/router.d.ts +18 -0
- package/dist/gateway/router.d.ts.map +1 -0
- package/dist/gateway/router.js +102 -0
- package/dist/gateway/router.js.map +1 -0
- package/dist/gateway/server.d.ts +20 -0
- package/dist/gateway/server.d.ts.map +1 -0
- package/dist/gateway/server.js +387 -0
- package/dist/gateway/server.js.map +1 -0
- package/dist/gateway/translator.d.ts +19 -0
- package/dist/gateway/translator.d.ts.map +1 -0
- package/dist/gateway/translator.js +340 -0
- package/dist/gateway/translator.js.map +1 -0
- package/dist/gateway/types.d.ts +215 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +3 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/parser/extract.d.ts +1 -0
- package/dist/parser/extract.d.ts.map +1 -1
- package/dist/parser/extract.js +8 -0
- package/dist/parser/extract.js.map +1 -1
- package/dist/parser/lang-go.d.ts.map +1 -1
- package/dist/parser/lang-go.js +41 -5
- package/dist/parser/lang-go.js.map +1 -1
- package/dist/parser/lang-java.d.ts.map +1 -1
- package/dist/parser/lang-java.js +1 -0
- package/dist/parser/lang-java.js.map +1 -1
- package/dist/parser/lang-py.d.ts.map +1 -1
- package/dist/parser/lang-py.js +22 -0
- package/dist/parser/lang-py.js.map +1 -1
- package/dist/parser/lang-ruby.d.ts.map +1 -1
- package/dist/parser/lang-ruby.js +1 -0
- package/dist/parser/lang-ruby.js.map +1 -1
- package/dist/server/mcp.d.ts.map +1 -1
- package/dist/server/mcp.js +615 -106
- package/dist/server/mcp.js.map +1 -1
- package/dist/skills.js +32 -0
- package/dist/skills.js.map +1 -1
- package/dist/store/db.d.ts +44 -0
- package/dist/store/db.d.ts.map +1 -1
- package/dist/store/db.js +142 -25
- package/dist/store/db.js.map +1 -1
- package/dist/store/gateway-schema.sql +53 -0
- package/dist/store/schema.sql +33 -0
- package/dist/store/vectors.d.ts +65 -0
- package/dist/store/vectors.d.ts.map +1 -0
- package/dist/store/vectors.js +212 -0
- package/dist/store/vectors.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +9 -0
- package/dist/utils.js.map +1 -0
- package/docs/diagram2.svg +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector embeddings for semantic code search.
|
|
3
|
+
*
|
|
4
|
+
* Two providers:
|
|
5
|
+
* - Built-in TF-IDF: zero-dependency, fast, no model download. Good baseline.
|
|
6
|
+
* - Neural (optional): requires `@xenova/transformers` peer dep for real semantic embeddings.
|
|
7
|
+
*
|
|
8
|
+
* Architecture: embeddings stored as BLOBs in SQLite, cosine similarity search.
|
|
9
|
+
*/
|
|
10
|
+
// ── Cosine similarity ──
|
|
11
|
+
function cosineSimilarity(a, b) {
|
|
12
|
+
let dot = 0, normA = 0, normB = 0;
|
|
13
|
+
for (let i = 0; i < a.length; i++) {
|
|
14
|
+
dot += a[i] * b[i];
|
|
15
|
+
normA += a[i] * a[i];
|
|
16
|
+
normB += b[i] * b[i];
|
|
17
|
+
}
|
|
18
|
+
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
19
|
+
return denom === 0 ? 0 : dot / denom;
|
|
20
|
+
}
|
|
21
|
+
// ── Built-in TF-IDF provider (zero dependencies) ──
|
|
22
|
+
/** Simple bag-of-words with IDF weighting. Fixed 256-dimension hash-based. */
|
|
23
|
+
export class TfIdfProvider {
|
|
24
|
+
name = 'tfidf-256';
|
|
25
|
+
dimensions = 256;
|
|
26
|
+
// Corpus stats for IDF
|
|
27
|
+
docCount = 0;
|
|
28
|
+
termDocFreq = new Map();
|
|
29
|
+
async init() { }
|
|
30
|
+
/** Feed corpus to build IDF weights (call before embed for best results) */
|
|
31
|
+
trainIdf(documents) {
|
|
32
|
+
this.docCount = documents.length;
|
|
33
|
+
this.termDocFreq.clear();
|
|
34
|
+
for (const doc of documents) {
|
|
35
|
+
const uniqueTerms = new Set(this.tokenize(doc));
|
|
36
|
+
for (const term of uniqueTerms) {
|
|
37
|
+
this.termDocFreq.set(term, (this.termDocFreq.get(term) ?? 0) + 1);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async embed(text) {
|
|
42
|
+
const tokens = this.tokenize(text);
|
|
43
|
+
const vec = new Float32Array(this.dimensions);
|
|
44
|
+
// Count term frequencies
|
|
45
|
+
const tf = new Map();
|
|
46
|
+
for (const t of tokens)
|
|
47
|
+
tf.set(t, (tf.get(t) ?? 0) + 1);
|
|
48
|
+
// Hash each term to a dimension bucket, weighted by TF-IDF
|
|
49
|
+
for (const [term, count] of tf) {
|
|
50
|
+
const idf = this.docCount > 0
|
|
51
|
+
? Math.log(1 + this.docCount / (1 + (this.termDocFreq.get(term) ?? 0)))
|
|
52
|
+
: 1;
|
|
53
|
+
const tfidf = (count / tokens.length) * idf;
|
|
54
|
+
// Deterministic hash → bucket
|
|
55
|
+
const bucket = this.hash(term) % this.dimensions;
|
|
56
|
+
// Use +/- based on secondary hash to reduce collisions
|
|
57
|
+
const sign = this.hash(term + '_sign') % 2 === 0 ? 1 : -1;
|
|
58
|
+
vec[bucket] += sign * tfidf;
|
|
59
|
+
}
|
|
60
|
+
// L2 normalize
|
|
61
|
+
let norm = 0;
|
|
62
|
+
for (let i = 0; i < vec.length; i++)
|
|
63
|
+
norm += vec[i] * vec[i];
|
|
64
|
+
norm = Math.sqrt(norm);
|
|
65
|
+
if (norm > 0)
|
|
66
|
+
for (let i = 0; i < vec.length; i++)
|
|
67
|
+
vec[i] /= norm;
|
|
68
|
+
return vec;
|
|
69
|
+
}
|
|
70
|
+
async embedBatch(texts) {
|
|
71
|
+
return Promise.all(texts.map(t => this.embed(t)));
|
|
72
|
+
}
|
|
73
|
+
tokenize(text) {
|
|
74
|
+
return text
|
|
75
|
+
.toLowerCase()
|
|
76
|
+
// Split camelCase/PascalCase
|
|
77
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
78
|
+
// Split on non-alphanumeric
|
|
79
|
+
.split(/[^a-z0-9]+/)
|
|
80
|
+
.filter(t => t.length > 1);
|
|
81
|
+
}
|
|
82
|
+
hash(str) {
|
|
83
|
+
let h = 0x811c9dc5;
|
|
84
|
+
for (let i = 0; i < str.length; i++) {
|
|
85
|
+
h ^= str.charCodeAt(i);
|
|
86
|
+
h = Math.imul(h, 0x01000193);
|
|
87
|
+
}
|
|
88
|
+
return h >>> 0; // unsigned
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// ── Neural provider (optional, requires @xenova/transformers) ──
|
|
92
|
+
export class NeuralProvider {
|
|
93
|
+
modelId;
|
|
94
|
+
name;
|
|
95
|
+
dimensions;
|
|
96
|
+
pipeline = null;
|
|
97
|
+
constructor(modelId = 'Xenova/all-MiniLM-L6-v2', dims = 384) {
|
|
98
|
+
this.modelId = modelId;
|
|
99
|
+
this.name = `neural-${modelId.split('/').pop()}`;
|
|
100
|
+
this.dimensions = dims;
|
|
101
|
+
}
|
|
102
|
+
async init() {
|
|
103
|
+
try {
|
|
104
|
+
// Dynamic import — package is optional peer dependency
|
|
105
|
+
const mod = await import(/* webpackIgnore: true */ '@xenova/transformers');
|
|
106
|
+
this.pipeline = await mod.pipeline('feature-extraction', this.modelId, {
|
|
107
|
+
quantized: true,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
throw new Error(`Neural embeddings require @xenova/transformers. Install: npm i @xenova/transformers`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async embed(text) {
|
|
115
|
+
if (!this.pipeline)
|
|
116
|
+
await this.init();
|
|
117
|
+
const output = await this.pipeline(text, { pooling: 'mean', normalize: true });
|
|
118
|
+
return new Float32Array(output.data);
|
|
119
|
+
}
|
|
120
|
+
async embedBatch(texts) {
|
|
121
|
+
// Process in small batches to avoid OOM
|
|
122
|
+
const results = [];
|
|
123
|
+
const batchSize = 32;
|
|
124
|
+
for (let i = 0; i < texts.length; i += batchSize) {
|
|
125
|
+
const batch = texts.slice(i, i + batchSize);
|
|
126
|
+
const outputs = await Promise.all(batch.map(t => this.embed(t)));
|
|
127
|
+
results.push(...outputs);
|
|
128
|
+
}
|
|
129
|
+
return results;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// ── Embedding store (SQL operations) ──
|
|
133
|
+
export class EmbeddingStore {
|
|
134
|
+
db;
|
|
135
|
+
dimensions;
|
|
136
|
+
stmts;
|
|
137
|
+
constructor(db, dimensions) {
|
|
138
|
+
this.db = db;
|
|
139
|
+
this.dimensions = dimensions;
|
|
140
|
+
this.stmts = {
|
|
141
|
+
upsert: db.prepare(`INSERT INTO symbol_embeddings (symbol_id, embedding, model, updated_at)
|
|
142
|
+
VALUES (?, ?, ?, datetime('now'))
|
|
143
|
+
ON CONFLICT(symbol_id) DO UPDATE SET embedding = excluded.embedding, model = excluded.model, updated_at = datetime('now')`),
|
|
144
|
+
get: db.prepare('SELECT embedding FROM symbol_embeddings WHERE symbol_id = ?'),
|
|
145
|
+
getAll: db.prepare('SELECT symbol_id, embedding FROM symbol_embeddings'),
|
|
146
|
+
count: db.prepare('SELECT COUNT(*) as c FROM symbol_embeddings'),
|
|
147
|
+
delete: db.prepare('DELETE FROM symbol_embeddings WHERE symbol_id = ?'),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
store(symbolId, embedding, model) {
|
|
151
|
+
const buf = Buffer.from(embedding.buffer, embedding.byteOffset, embedding.byteLength);
|
|
152
|
+
this.stmts.upsert.run(symbolId, buf, model);
|
|
153
|
+
}
|
|
154
|
+
get(symbolId) {
|
|
155
|
+
const row = this.stmts.get.get(symbolId);
|
|
156
|
+
if (!row)
|
|
157
|
+
return null;
|
|
158
|
+
const buf = row.embedding;
|
|
159
|
+
if (buf.byteLength < this.dimensions * 4)
|
|
160
|
+
return null; // corrupted/mismatched
|
|
161
|
+
// Copy to avoid byteOffset issues with SQLite Buffers
|
|
162
|
+
const copy = new Float32Array(this.dimensions);
|
|
163
|
+
copy.set(new Float32Array(buf.buffer, buf.byteOffset, this.dimensions));
|
|
164
|
+
return copy;
|
|
165
|
+
}
|
|
166
|
+
count() {
|
|
167
|
+
return this.stmts.count.get().c;
|
|
168
|
+
}
|
|
169
|
+
/** Brute-force cosine search across all stored embeddings.
|
|
170
|
+
* Uses iterate() to avoid loading all rows into a JS array at once,
|
|
171
|
+
* and maintains a bounded top-K result set during scanning. */
|
|
172
|
+
searchSimilar(queryVec, limit, excludeId) {
|
|
173
|
+
const results = [];
|
|
174
|
+
let minScore = -Infinity;
|
|
175
|
+
for (const row of this.stmts.getAll.iterate()) {
|
|
176
|
+
if (excludeId && row.symbol_id === excludeId)
|
|
177
|
+
continue;
|
|
178
|
+
const buf = row.embedding;
|
|
179
|
+
if (buf.byteLength < this.dimensions * 4)
|
|
180
|
+
continue; // skip corrupted
|
|
181
|
+
// Copy to own buffer to avoid shared ArrayBuffer offset issues
|
|
182
|
+
const vec = new Float32Array(this.dimensions);
|
|
183
|
+
vec.set(new Float32Array(buf.buffer, buf.byteOffset, this.dimensions));
|
|
184
|
+
const score = cosineSimilarity(queryVec, vec);
|
|
185
|
+
if (results.length < limit) {
|
|
186
|
+
results.push({ symbolId: row.symbol_id, score });
|
|
187
|
+
if (results.length === limit) {
|
|
188
|
+
results.sort((a, b) => b.score - a.score);
|
|
189
|
+
minScore = results[results.length - 1].score;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else if (score > minScore) {
|
|
193
|
+
results[results.length - 1] = { symbolId: row.symbol_id, score };
|
|
194
|
+
results.sort((a, b) => b.score - a.score);
|
|
195
|
+
minScore = results[results.length - 1].score;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (results.length < limit) {
|
|
199
|
+
results.sort((a, b) => b.score - a.score);
|
|
200
|
+
}
|
|
201
|
+
return results;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// ── Embedding text builder ──
|
|
205
|
+
export function buildEmbeddingText(sym) {
|
|
206
|
+
const parts = [sym.kind, sym.name];
|
|
207
|
+
if (sym.signature)
|
|
208
|
+
parts.push(sym.signature);
|
|
209
|
+
parts.push('in', sym.filePath);
|
|
210
|
+
return parts.join(' ');
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=vectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectors.js","sourceRoot":"","sources":["../../src/store/vectors.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMpD"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Check if a file path looks like a test/spec file */
|
|
2
|
+
export function isTestFile(filePath) {
|
|
3
|
+
return /\.(test|spec)\.[jt]sx?$/.test(filePath) ||
|
|
4
|
+
/(^|[\/\\])tests?[\/\\]/.test(filePath) ||
|
|
5
|
+
/__tests__[/\\]/.test(filePath) ||
|
|
6
|
+
/_test\.(go|py|rb|rs|java|php)$/.test(filePath) ||
|
|
7
|
+
/^test_.*\.py$/.test(filePath.split('/').pop() ?? '');
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7C,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,gCAAgC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/C,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|
package/docs/diagram2.svg
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1703.05px; background-color: transparent;" viewBox="0 0 1703.046875 348" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#333333;stroke-width:1px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#my-svg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster" id="my-svg-Serve" data-look="classic"><rect style="" x="1278.6875" y="8" width="193.75" height="332"/><g class="cluster-label" transform="translate(1335.6640625, 8)"><foreignObject width="79.796875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>MCP Server</p></span></div></foreignObject></g></g><g class="cluster" id="my-svg-Pipeline" data-look="classic"><rect style="" x="8" y="24" width="1220.6875" height="280"/><g class="cluster-label" transform="translate(557.2734375, 24)"><foreignObject width="122.140625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>Indexing Pipeline</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M211.172,174L215.339,174C219.505,174,227.839,174,235.505,174C243.172,174,250.172,174,253.672,174L257.172,174" id="my-svg-L_Scan_Parse_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Scan_Parse_0" data-points="W3sieCI6MjExLjE3MTg3NSwieSI6MTc0fSx7IngiOjIzNi4xNzE4NzUsInkiOjE3NH0seyJ4IjoyNjEuMTcxODc1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M441.266,174L445.432,174C449.599,174,457.932,174,465.599,174C473.266,174,480.266,174,483.766,174L487.266,174" id="my-svg-L_Parse_Resolve_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Parse_Resolve_0" data-points="W3sieCI6NDQxLjI2NTYyNSwieSI6MTc0fSx7IngiOjQ2Ni4yNjU2MjUsInkiOjE3NH0seyJ4Ijo0OTEuMjY1NjI1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M728.688,174L732.854,174C737.021,174,745.354,174,753.021,174C760.688,174,767.688,174,771.188,174L774.688,174" id="my-svg-L_Resolve_Enrich_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Resolve_Enrich_0" data-points="W3sieCI6NzI4LjY4NzUsInkiOjE3NH0seyJ4Ijo3NTMuNjg3NSwieSI6MTc0fSx7IngiOjc3OC42ODc1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M995.641,174L999.807,174C1003.974,174,1012.307,174,1019.974,174C1027.641,174,1034.641,174,1038.141,174L1041.641,174" id="my-svg-L_Enrich_Store_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Enrich_Store_0" data-points="W3sieCI6OTk1LjY0MDYyNSwieSI6MTc0fSx7IngiOjEwMjAuNjQwNjI1LCJ5IjoxNzR9LHsieCI6MTA0NS42NDA2MjUsInkiOjE3NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1163.673,135L1174.509,124.167C1185.344,113.333,1207.016,91.667,1222.018,80.833C1237.021,70,1245.354,70,1253.688,70C1262.021,70,1270.354,70,1280.251,70C1290.148,70,1301.609,70,1307.34,70L1313.07,70" id="my-svg-L_Store_Tools_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Store_Tools_0" data-points="W3sieCI6MTE2My42NzI4NTE1NjI1LCJ5IjoxMzV9LHsieCI6MTIyOC42ODc1LCJ5Ijo3MH0seyJ4IjoxMjUzLjY4NzUsInkiOjcwfSx7IngiOjEyNzguNjg3NSwieSI6NzB9LHsieCI6MTMxNy4wNzAzMTI1LCJ5Ijo3MH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1203.688,174L1207.854,174C1212.021,174,1220.354,174,1228.688,174C1237.021,174,1245.354,174,1253.688,174C1262.021,174,1270.354,174,1278.021,174C1285.688,174,1292.688,174,1296.188,174L1299.688,174" id="my-svg-L_Store_Resources_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Store_Resources_0" data-points="W3sieCI6MTIwMy42ODc1LCJ5IjoxNzR9LHsieCI6MTIyOC42ODc1LCJ5IjoxNzR9LHsieCI6MTI1My42ODc1LCJ5IjoxNzR9LHsieCI6MTI3OC42ODc1LCJ5IjoxNzR9LHsieCI6MTMwMy42ODc1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1163.673,213L1174.509,223.833C1185.344,234.667,1207.016,256.333,1222.018,267.167C1237.021,278,1245.354,278,1253.688,278C1262.021,278,1270.354,278,1279.066,278C1287.779,278,1296.87,278,1301.415,278L1305.961,278" id="my-svg-L_Store_Prompts_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Store_Prompts_0" data-points="W3sieCI6MTE2My42NzI4NTE1NjI1LCJ5IjoyMTN9LHsieCI6MTIyOC42ODc1LCJ5IjoyNzh9LHsieCI6MTI1My42ODc1LCJ5IjoyNzh9LHsieCI6MTI3OC42ODc1LCJ5IjoyNzh9LHsieCI6MTMwOS45NjA5Mzc1LCJ5IjoyNzh9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1434.055,70L1440.452,70C1446.849,70,1459.643,70,1470.207,70C1480.771,70,1489.104,70,1502.237,78.378C1515.371,86.756,1533.304,103.513,1542.271,111.891L1551.237,120.269" id="my-svg-L_Tools_Agent_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Tools_Agent_0" data-points="W3sieCI6MTQzNC4wNTQ2ODc1LCJ5Ijo3MH0seyJ4IjoxNDcyLjQzNzUsInkiOjcwfSx7IngiOjE0OTcuNDM3NSwieSI6NzB9LHsieCI6MTU1NC4xNjAwODExMjk4MDc2LCJ5IjoxMjN9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1447.438,174L1451.604,174C1455.771,174,1464.104,174,1472.438,174C1480.771,174,1489.104,174,1496.771,174C1504.438,174,1511.438,174,1514.938,174L1518.438,174" id="my-svg-L_Resources_Agent_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Resources_Agent_0" data-points="W3sieCI6MTQ0Ny40Mzc1LCJ5IjoxNzR9LHsieCI6MTQ3Mi40Mzc1LCJ5IjoxNzR9LHsieCI6MTQ5Ny40Mzc1LCJ5IjoxNzR9LHsieCI6MTUyMi40Mzc1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1441.164,278L1446.376,278C1451.589,278,1462.013,278,1471.392,278C1480.771,278,1489.104,278,1502.237,269.622C1515.371,261.244,1533.304,244.487,1542.271,236.109L1551.237,227.731" id="my-svg-L_Prompts_Agent_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Prompts_Agent_0" data-points="W3sieCI6MTQ0MS4xNjQwNjI1LCJ5IjoyNzh9LHsieCI6MTQ3Mi40Mzc1LCJ5IjoyNzh9LHsieCI6MTQ5Ny40Mzc1LCJ5IjoyNzh9LHsieCI6MTU1NC4xNjAwODExMjk4MDc2LCJ5IjoyMjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_Scan_Parse_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Parse_Resolve_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Resolve_Enrich_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Enrich_Store_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Store_Tools_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Store_Resources_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Store_Prompts_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Tools_Agent_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Resources_Agent_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Prompts_Agent_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-Scan-0" data-look="classic" transform="translate(122.0859375, 174)"><rect class="basic label-container" style="" x="-89.0859375" y="-39" width="178.171875" height="78"/><g class="label" style="" transform="translate(-59.0859375, -24)"><rect/><foreignObject width="118.171875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>📁 Scan<br />.gitignore aware</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Parse-1" data-look="classic" transform="translate(351.21875, 174)"><rect class="basic label-container" style="" x="-90.046875" y="-39" width="180.09375" height="78"/><g class="label" style="" transform="translate(-60.046875, -24)"><rect/><foreignObject width="120.09375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>🌳 Parse<br />tree-sitter WASM</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Resolve-2" data-look="classic" transform="translate(609.9765625, 174)"><rect class="basic label-container" style="" x="-118.7109375" y="-39" width="237.421875" height="78"/><g class="label" style="" transform="translate(-88.7109375, -24)"><rect/><foreignObject width="177.421875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>🔗 Resolve<br />imports · calls · heritage</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Enrich-3" data-look="classic" transform="translate(887.1640625, 174)"><rect class="basic label-container" style="" x="-108.4765625" y="-39" width="216.953125" height="78"/><g class="label" style="" transform="translate(-78.4765625, -24)"><rect/><foreignObject width="156.953125" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>⚡ Enrich<br />roles · heat · domains</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Store-4" data-look="classic" transform="translate(1124.6640625, 174)"><rect class="basic label-container" style="" x="-79.0234375" y="-39" width="158.046875" height="78"/><g class="label" style="" transform="translate(-49.0234375, -24)"><rect/><foreignObject width="98.046875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>💾 Store<br />SQLite + FTS5</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Tools-5" data-look="classic" transform="translate(1375.5625, 70)"><rect class="basic label-container" style="" x="-58.4921875" y="-27" width="116.984375" height="54"/><g class="label" style="" transform="translate(-28.4921875, -12)"><rect/><foreignObject width="56.984375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>19 Tools</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Resources-6" data-look="classic" transform="translate(1375.5625, 174)"><rect class="basic label-container" style="" x="-71.875" y="-27" width="143.75" height="54"/><g class="label" style="" transform="translate(-41.875, -12)"><rect/><foreignObject width="83.75" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>4 Resources</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Prompts-7" data-look="classic" transform="translate(1375.5625, 278)"><rect class="basic label-container" style="" x="-65.6015625" y="-27" width="131.203125" height="54"/><g class="label" style="" transform="translate(-35.6015625, -12)"><rect/><foreignObject width="71.203125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>3 Prompts</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Agent-19" data-look="classic" transform="translate(1608.7421875, 174)"><rect class="basic label-container" style="" x="-86.3046875" y="-51" width="172.609375" height="102"/><g class="label" style="" transform="translate(-56.3046875, -36)"><rect/><foreignObject width="112.609375" height="72"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>🤖 AI Agent<br />Copilot · Cursor<br />Claude · Codex</p></span></div></foreignObject></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs></svg>
|
|
1
|
+
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1703.05px; background-color: transparent;" viewBox="0 0 1703.046875 348" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#333333;stroke-width:1px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#my-svg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster" id="my-svg-Serve" data-look="classic"><rect style="" x="1278.6875" y="8" width="193.75" height="332"/><g class="cluster-label" transform="translate(1335.6640625, 8)"><foreignObject width="79.796875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>MCP Server</p></span></div></foreignObject></g></g><g class="cluster" id="my-svg-Pipeline" data-look="classic"><rect style="" x="8" y="24" width="1220.6875" height="280"/><g class="cluster-label" transform="translate(557.2734375, 24)"><foreignObject width="122.140625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>Indexing Pipeline</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M211.172,174L215.339,174C219.505,174,227.839,174,235.505,174C243.172,174,250.172,174,253.672,174L257.172,174" id="my-svg-L_Scan_Parse_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Scan_Parse_0" data-points="W3sieCI6MjExLjE3MTg3NSwieSI6MTc0fSx7IngiOjIzNi4xNzE4NzUsInkiOjE3NH0seyJ4IjoyNjEuMTcxODc1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M441.266,174L445.432,174C449.599,174,457.932,174,465.599,174C473.266,174,480.266,174,483.766,174L487.266,174" id="my-svg-L_Parse_Resolve_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Parse_Resolve_0" data-points="W3sieCI6NDQxLjI2NTYyNSwieSI6MTc0fSx7IngiOjQ2Ni4yNjU2MjUsInkiOjE3NH0seyJ4Ijo0OTEuMjY1NjI1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M728.688,174L732.854,174C737.021,174,745.354,174,753.021,174C760.688,174,767.688,174,771.188,174L774.688,174" id="my-svg-L_Resolve_Enrich_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Resolve_Enrich_0" data-points="W3sieCI6NzI4LjY4NzUsInkiOjE3NH0seyJ4Ijo3NTMuNjg3NSwieSI6MTc0fSx7IngiOjc3OC42ODc1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M995.641,174L999.807,174C1003.974,174,1012.307,174,1019.974,174C1027.641,174,1034.641,174,1038.141,174L1041.641,174" id="my-svg-L_Enrich_Store_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Enrich_Store_0" data-points="W3sieCI6OTk1LjY0MDYyNSwieSI6MTc0fSx7IngiOjEwMjAuNjQwNjI1LCJ5IjoxNzR9LHsieCI6MTA0NS42NDA2MjUsInkiOjE3NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1163.673,135L1174.509,124.167C1185.344,113.333,1207.016,91.667,1222.018,80.833C1237.021,70,1245.354,70,1253.688,70C1262.021,70,1270.354,70,1280.251,70C1290.148,70,1301.609,70,1307.34,70L1313.07,70" id="my-svg-L_Store_Tools_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Store_Tools_0" data-points="W3sieCI6MTE2My42NzI4NTE1NjI1LCJ5IjoxMzV9LHsieCI6MTIyOC42ODc1LCJ5Ijo3MH0seyJ4IjoxMjUzLjY4NzUsInkiOjcwfSx7IngiOjEyNzguNjg3NSwieSI6NzB9LHsieCI6MTMxNy4wNzAzMTI1LCJ5Ijo3MH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1203.688,174L1207.854,174C1212.021,174,1220.354,174,1228.688,174C1237.021,174,1245.354,174,1253.688,174C1262.021,174,1270.354,174,1278.021,174C1285.688,174,1292.688,174,1296.188,174L1299.688,174" id="my-svg-L_Store_Resources_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Store_Resources_0" data-points="W3sieCI6MTIwMy42ODc1LCJ5IjoxNzR9LHsieCI6MTIyOC42ODc1LCJ5IjoxNzR9LHsieCI6MTI1My42ODc1LCJ5IjoxNzR9LHsieCI6MTI3OC42ODc1LCJ5IjoxNzR9LHsieCI6MTMwMy42ODc1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1163.673,213L1174.509,223.833C1185.344,234.667,1207.016,256.333,1222.018,267.167C1237.021,278,1245.354,278,1253.688,278C1262.021,278,1270.354,278,1279.066,278C1287.779,278,1296.87,278,1301.415,278L1305.961,278" id="my-svg-L_Store_Prompts_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Store_Prompts_0" data-points="W3sieCI6MTE2My42NzI4NTE1NjI1LCJ5IjoyMTN9LHsieCI6MTIyOC42ODc1LCJ5IjoyNzh9LHsieCI6MTI1My42ODc1LCJ5IjoyNzh9LHsieCI6MTI3OC42ODc1LCJ5IjoyNzh9LHsieCI6MTMwOS45NjA5Mzc1LCJ5IjoyNzh9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1434.055,70L1440.452,70C1446.849,70,1459.643,70,1470.207,70C1480.771,70,1489.104,70,1502.237,78.378C1515.371,86.756,1533.304,103.513,1542.271,111.891L1551.237,120.269" id="my-svg-L_Tools_Agent_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Tools_Agent_0" data-points="W3sieCI6MTQzNC4wNTQ2ODc1LCJ5Ijo3MH0seyJ4IjoxNDcyLjQzNzUsInkiOjcwfSx7IngiOjE0OTcuNDM3NSwieSI6NzB9LHsieCI6MTU1NC4xNjAwODExMjk4MDc2LCJ5IjoxMjN9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1447.438,174L1451.604,174C1455.771,174,1464.104,174,1472.438,174C1480.771,174,1489.104,174,1496.771,174C1504.438,174,1511.438,174,1514.938,174L1518.438,174" id="my-svg-L_Resources_Agent_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Resources_Agent_0" data-points="W3sieCI6MTQ0Ny40Mzc1LCJ5IjoxNzR9LHsieCI6MTQ3Mi40Mzc1LCJ5IjoxNzR9LHsieCI6MTQ5Ny40Mzc1LCJ5IjoxNzR9LHsieCI6MTUyMi40Mzc1LCJ5IjoxNzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1441.164,278L1446.376,278C1451.589,278,1462.013,278,1471.392,278C1480.771,278,1489.104,278,1502.237,269.622C1515.371,261.244,1533.304,244.487,1542.271,236.109L1551.237,227.731" id="my-svg-L_Prompts_Agent_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Prompts_Agent_0" data-points="W3sieCI6MTQ0MS4xNjQwNjI1LCJ5IjoyNzh9LHsieCI6MTQ3Mi40Mzc1LCJ5IjoyNzh9LHsieCI6MTQ5Ny40Mzc1LCJ5IjoyNzh9LHsieCI6MTU1NC4xNjAwODExMjk4MDc2LCJ5IjoyMjV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_Scan_Parse_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Parse_Resolve_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Resolve_Enrich_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Enrich_Store_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Store_Tools_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Store_Resources_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Store_Prompts_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Tools_Agent_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Resources_Agent_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Prompts_Agent_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-Scan-0" data-look="classic" transform="translate(122.0859375, 174)"><rect class="basic label-container" style="" x="-89.0859375" y="-39" width="178.171875" height="78"/><g class="label" style="" transform="translate(-59.0859375, -24)"><rect/><foreignObject width="118.171875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>📁 Scan<br />.gitignore aware</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Parse-1" data-look="classic" transform="translate(351.21875, 174)"><rect class="basic label-container" style="" x="-90.046875" y="-39" width="180.09375" height="78"/><g class="label" style="" transform="translate(-60.046875, -24)"><rect/><foreignObject width="120.09375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>🌳 Parse<br />tree-sitter WASM</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Resolve-2" data-look="classic" transform="translate(609.9765625, 174)"><rect class="basic label-container" style="" x="-118.7109375" y="-39" width="237.421875" height="78"/><g class="label" style="" transform="translate(-88.7109375, -24)"><rect/><foreignObject width="177.421875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>🔗 Resolve<br />imports · calls · heritage</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Enrich-3" data-look="classic" transform="translate(887.1640625, 174)"><rect class="basic label-container" style="" x="-108.4765625" y="-39" width="216.953125" height="78"/><g class="label" style="" transform="translate(-78.4765625, -24)"><rect/><foreignObject width="156.953125" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>⚡ Enrich<br />roles · heat · domains</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Store-4" data-look="classic" transform="translate(1124.6640625, 174)"><rect class="basic label-container" style="" x="-79.0234375" y="-39" width="158.046875" height="78"/><g class="label" style="" transform="translate(-49.0234375, -24)"><rect/><foreignObject width="98.046875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>💾 Store<br />SQLite + FTS5</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Tools-5" data-look="classic" transform="translate(1375.5625, 70)"><rect class="basic label-container" style="" x="-58.4921875" y="-27" width="116.984375" height="54"/><g class="label" style="" transform="translate(-28.4921875, -12)"><rect/><foreignObject width="56.984375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>32 Tools</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Resources-6" data-look="classic" transform="translate(1375.5625, 174)"><rect class="basic label-container" style="" x="-71.875" y="-27" width="143.75" height="54"/><g class="label" style="" transform="translate(-41.875, -12)"><rect/><foreignObject width="83.75" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>4 Resources</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Prompts-7" data-look="classic" transform="translate(1375.5625, 278)"><rect class="basic label-container" style="" x="-65.6015625" y="-27" width="131.203125" height="54"/><g class="label" style="" transform="translate(-35.6015625, -12)"><rect/><foreignObject width="71.203125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>3 Prompts</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Agent-19" data-look="classic" transform="translate(1608.7421875, 174)"><rect class="basic label-container" style="" x="-86.3046875" y="-51" width="172.609375" height="102"/><g class="label" style="" transform="translate(-56.3046875, -36)"><rect/><foreignObject width="112.609375" height="72"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>🤖 AI Agent<br />Copilot · Cursor<br />Claude · Codex</p></span></div></foreignObject></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs></svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "milens",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"description": "Lightweight Code Intelligence Platform — analyze codebases and build knowledge graphs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
49
|
+
"@xenova/transformers": "^2.17.2",
|
|
49
50
|
"better-sqlite3": "^11.0.0",
|
|
50
51
|
"commander": "^12.0.0",
|
|
51
52
|
"ignore": "^7.0.0",
|