milens 0.6.2 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/.agents/skills/adapters/SKILL.md +31 -0
  2. package/.agents/skills/analyzer/SKILL.md +55 -0
  3. package/.agents/skills/apps/SKILL.md +42 -0
  4. package/.agents/skills/docs/SKILL.md +46 -0
  5. package/.agents/skills/milens/SKILL.md +168 -0
  6. package/.agents/skills/milens-code-review/SKILL.md +186 -0
  7. package/.agents/skills/milens-eval/SKILL.md +221 -0
  8. package/.agents/skills/milens-plan/SKILL.md +227 -0
  9. package/.agents/skills/milens-refactor-clean/SKILL.md +209 -0
  10. package/.agents/skills/milens-security-review/SKILL.md +224 -0
  11. package/.agents/skills/milens-tdd/SKILL.md +156 -0
  12. package/.agents/skills/parser/SKILL.md +60 -0
  13. package/.agents/skills/root/SKILL.md +64 -0
  14. package/.agents/skills/scripts/SKILL.md +27 -0
  15. package/.agents/skills/security/SKILL.md +44 -0
  16. package/.agents/skills/server/SKILL.md +46 -0
  17. package/.agents/skills/store/SKILL.md +53 -0
  18. package/.agents/skills/test/SKILL.md +73 -0
  19. package/LICENSE +75 -75
  20. package/README.md +524 -305
  21. package/adapters/README.md +107 -0
  22. package/adapters/claude-code/.claude/mcp.json +9 -0
  23. package/adapters/claude-code/CLAUDE.md +58 -0
  24. package/adapters/codex/.codex/codex.md +52 -0
  25. package/adapters/copilot/.github/copilot-instructions.md +62 -0
  26. package/adapters/cursor/.cursorrules +9 -0
  27. package/adapters/gemini/.gemini/context.md +58 -0
  28. package/adapters/opencode/.opencode/config.json +9 -0
  29. package/adapters/opencode/AGENTS.md +58 -0
  30. package/adapters/zed/.zed/settings.json +8 -0
  31. package/dist/agents-md.d.ts +3 -0
  32. package/dist/agents-md.d.ts.map +1 -0
  33. package/dist/agents-md.js +112 -0
  34. package/dist/agents-md.js.map +1 -0
  35. package/dist/analyzer/engine.d.ts +1 -0
  36. package/dist/analyzer/engine.d.ts.map +1 -1
  37. package/dist/analyzer/engine.js +27 -8
  38. package/dist/analyzer/engine.js.map +1 -1
  39. package/dist/analyzer/review.d.ts +23 -0
  40. package/dist/analyzer/review.d.ts.map +1 -0
  41. package/dist/analyzer/review.js +143 -0
  42. package/dist/analyzer/review.js.map +1 -0
  43. package/dist/analyzer/testplan.d.ts +59 -0
  44. package/dist/analyzer/testplan.d.ts.map +1 -0
  45. package/dist/analyzer/testplan.js +218 -0
  46. package/dist/analyzer/testplan.js.map +1 -0
  47. package/dist/cli.js +1192 -401
  48. package/dist/cli.js.map +1 -1
  49. package/dist/metrics.d.ts +51 -0
  50. package/dist/metrics.d.ts.map +1 -0
  51. package/dist/metrics.js +64 -0
  52. package/dist/metrics.js.map +1 -0
  53. package/dist/parser/extract.d.ts +1 -0
  54. package/dist/parser/extract.d.ts.map +1 -1
  55. package/dist/parser/extract.js +8 -0
  56. package/dist/parser/extract.js.map +1 -1
  57. package/dist/parser/lang-go.d.ts.map +1 -1
  58. package/dist/parser/lang-go.js +75 -39
  59. package/dist/parser/lang-go.js.map +1 -1
  60. package/dist/parser/lang-java.d.ts.map +1 -1
  61. package/dist/parser/lang-java.js +30 -29
  62. package/dist/parser/lang-java.js.map +1 -1
  63. package/dist/parser/lang-js.js +105 -105
  64. package/dist/parser/lang-php.js +38 -38
  65. package/dist/parser/lang-py.d.ts.map +1 -1
  66. package/dist/parser/lang-py.js +53 -31
  67. package/dist/parser/lang-py.js.map +1 -1
  68. package/dist/parser/lang-ruby.d.ts.map +1 -1
  69. package/dist/parser/lang-ruby.js +15 -14
  70. package/dist/parser/lang-ruby.js.map +1 -1
  71. package/dist/parser/lang-rust.js +30 -30
  72. package/dist/parser/lang-ts.js +191 -191
  73. package/dist/security/deps.d.ts +38 -0
  74. package/dist/security/deps.d.ts.map +1 -0
  75. package/dist/security/deps.js +685 -0
  76. package/dist/security/deps.js.map +1 -0
  77. package/dist/security/rules.d.ts +42 -0
  78. package/dist/security/rules.d.ts.map +1 -0
  79. package/dist/security/rules.js +940 -0
  80. package/dist/security/rules.js.map +1 -0
  81. package/dist/server/hooks.d.ts +26 -0
  82. package/dist/server/hooks.d.ts.map +1 -0
  83. package/dist/server/hooks.js +253 -0
  84. package/dist/server/hooks.js.map +1 -0
  85. package/dist/server/mcp-prompts.d.ts +277 -0
  86. package/dist/server/mcp-prompts.d.ts.map +1 -0
  87. package/dist/server/mcp-prompts.js +627 -0
  88. package/dist/server/mcp-prompts.js.map +1 -0
  89. package/dist/server/mcp.d.ts.map +1 -1
  90. package/dist/server/mcp.js +520 -36
  91. package/dist/server/mcp.js.map +1 -1
  92. package/dist/server/test-plan.d.ts +20 -0
  93. package/dist/server/test-plan.d.ts.map +1 -0
  94. package/dist/server/test-plan.js +100 -0
  95. package/dist/server/test-plan.js.map +1 -0
  96. package/dist/skills.js +152 -120
  97. package/dist/skills.js.map +1 -1
  98. package/dist/store/annotations.d.ts +41 -0
  99. package/dist/store/annotations.d.ts.map +1 -0
  100. package/dist/store/annotations.js +192 -0
  101. package/dist/store/annotations.js.map +1 -0
  102. package/dist/store/confidence.d.ts +18 -0
  103. package/dist/store/confidence.d.ts.map +1 -0
  104. package/dist/store/confidence.js +82 -0
  105. package/dist/store/confidence.js.map +1 -0
  106. package/dist/store/db.d.ts +68 -1
  107. package/dist/store/db.d.ts.map +1 -1
  108. package/dist/store/db.js +349 -139
  109. package/dist/store/db.js.map +1 -1
  110. package/dist/store/schema.sql +128 -83
  111. package/dist/store/vectors.d.ts +65 -0
  112. package/dist/store/vectors.d.ts.map +1 -0
  113. package/dist/store/vectors.js +212 -0
  114. package/dist/store/vectors.js.map +1 -0
  115. package/dist/types.d.ts +101 -0
  116. package/dist/types.d.ts.map +1 -1
  117. package/dist/utils.d.ts +3 -0
  118. package/dist/utils.d.ts.map +1 -0
  119. package/dist/utils.js +9 -0
  120. package/dist/utils.js.map +1 -0
  121. package/docs/README.md +24 -0
  122. package/docs/diagram2.svg +1 -1
  123. package/package.json +80 -65
package/dist/types.d.ts CHANGED
@@ -111,4 +111,105 @@ export interface RepoEntry {
111
111
  analyzedAt: string;
112
112
  hash: string;
113
113
  }
114
+ export type AnnotationKey = 'note' | 'bug' | 'security' | 'architecture' | 'workflow' | 'test' | 'dependency' | 'refactor';
115
+ export interface Annotation {
116
+ id: string;
117
+ symbol: string;
118
+ key: AnnotationKey;
119
+ value: string;
120
+ agent?: string;
121
+ sessionId?: string;
122
+ confidence: number;
123
+ createdAt: string;
124
+ updatedAt: string;
125
+ }
126
+ export interface Session {
127
+ id: string;
128
+ agent: string;
129
+ status: 'active' | 'completed' | 'failed';
130
+ startedAt: string;
131
+ endedAt?: string;
132
+ toolCallsCount: number;
133
+ annotationsCount: number;
134
+ context?: string;
135
+ }
136
+ export interface EvolutionEvent {
137
+ id: number;
138
+ annotationId: string;
139
+ event: 'created' | 'confidence_up' | 'confidence_down' | 'promoted' | 'demoted' | 'archived';
140
+ oldValue?: string;
141
+ newValue?: string;
142
+ createdAt: string;
143
+ }
144
+ export interface HookConfig {
145
+ enabled: boolean;
146
+ onSessionStart: boolean;
147
+ onSessionEnd: boolean;
148
+ onFileChange: boolean;
149
+ onPreCommit: boolean;
150
+ onPreCompact: boolean;
151
+ onPostCompact: boolean;
152
+ }
153
+ export interface HookSessionContext {
154
+ agent: string;
155
+ sessionId: string;
156
+ rootPath: string;
157
+ }
158
+ export type SecurityCategory = 'secrets' | 'injection' | 'unicode' | 'dangerous' | 'config' | 'data-leak' | 'crypto' | 'auth' | 'file-access';
159
+ export interface SecurityRule {
160
+ id: string;
161
+ category: SecurityCategory;
162
+ owasp: string;
163
+ severity: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
164
+ name: string;
165
+ description: string;
166
+ patterns: RegExp[];
167
+ fileGlob?: string;
168
+ excludeGlob?: string;
169
+ fix?: string;
170
+ confidence: number;
171
+ enabled: boolean;
172
+ }
173
+ export interface SecurityMatch {
174
+ ruleId: string;
175
+ category: SecurityCategory;
176
+ severity: string;
177
+ owasp: string;
178
+ file: string;
179
+ line: number;
180
+ match: string;
181
+ context: string;
182
+ fix?: string;
183
+ }
184
+ export interface SecurityReport {
185
+ summary: {
186
+ totalScanned: number;
187
+ findings: number;
188
+ byCategory: Record<string, number>;
189
+ bySeverity: Record<string, number>;
190
+ score: number;
191
+ };
192
+ findings: SecurityMatch[];
193
+ }
194
+ export type Ecosystem = 'npm' | 'python' | 'rust' | 'go' | 'java' | 'unknown';
195
+ export interface DependInfo {
196
+ name: string;
197
+ version: string;
198
+ ecosystem: Ecosystem;
199
+ }
200
+ export interface VulnInfo {
201
+ id: string;
202
+ cve?: string;
203
+ severity: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
204
+ package: string;
205
+ affectedVersions: string;
206
+ fixedVersion?: string;
207
+ description: string;
208
+ }
209
+ export interface VulnReport {
210
+ ecosystem: Ecosystem;
211
+ totalDependencies: number;
212
+ vulnerableDependencies: number;
213
+ findings: VulnInfo[];
214
+ }
114
215
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAClB,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAC7C,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAC5D,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAEhF,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,CAAC;AAEnF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,kBAAkB,EAAE,oBAAoB,EAAE,CAAC;IAC3C,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,kBAAkB,EAAE,oBAAoB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Check if a file path looks like a test/spec file */
2
+ export declare function isTestFile(filePath: string): boolean;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -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/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # Milens Documentation
2
+
3
+ Comprehensive guides and reference for the Milens AI-DOS platform.
4
+
5
+ ## Getting Started
6
+
7
+ - [Quick Start](quickstart.md) — Install and bootstrap in 30 seconds
8
+ - [Pricing](pricing.md) — Free, Pro ($19/seat), Enterprise
9
+ - [Adapters](adapters.md) — Connect to Claude Code, OpenCode, Cursor, and more
10
+
11
+ ## Reference
12
+
13
+ - [MCP Tools](tools.md) — Complete reference of all 33 MCP tools
14
+ - [Security Presets](security-presets.md) — 50+ security rules with OWASP mapping
15
+ - [CLI Commands](#) — Full CLI reference (see README)
16
+
17
+ ## Architecture
18
+
19
+ - [ECC → Milens Mapping](ecc-milens-vibe-code.md) — How milens compares to ECC
20
+ - [Closed-Loop AI Development](closed-loop-ai-development.md) — Token optimization, self-learning, metrics
21
+
22
+ ## Browser
23
+
24
+ Open `index.html` in a browser for the full landing page with interactive demo.
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,65 +1,80 @@
1
- {
2
- "name": "milens",
3
- "version": "0.6.2",
4
- "description": "Lightweight Code Intelligence Platform — analyze codebases and build knowledge graphs",
5
- "type": "module",
6
- "bin": {
7
- "milens": "./dist/cli.js"
8
- },
9
- "files": [
10
- "dist/",
11
- "docs/*.svg",
12
- "README.md",
13
- "LICENSE"
14
- ],
15
- "scripts": {
16
- "build": "tsc && node -e \"require('fs').copyFileSync('src/store/schema.sql','dist/store/schema.sql')\"",
17
- "dev": "tsx src/cli.ts",
18
- "test": "vitest run",
19
- "test:watch": "vitest",
20
- "lint": "tsc --noEmit",
21
- "prepublishOnly": "npm run build && npm test",
22
- "build:standalone": "node scripts/build-standalone.mjs",
23
- "build:standalone:all": "node scripts/build-standalone.mjs --target all",
24
- "self-analyze": "tsx src/cli.ts analyze -p . --force --verbose --skills",
25
- "self-serve": "tsx src/cli.ts serve -p . --http --port 3100"
26
- },
27
- "keywords": [
28
- "code-intelligence",
29
- "knowledge-graph",
30
- "mcp",
31
- "tree-sitter",
32
- "static-analysis",
33
- "codebase-indexer",
34
- "ai-agent"
35
- ],
36
- "repository": {
37
- "type": "git",
38
- "url": "git+https://github.com/fuze210699/milens.git"
39
- },
40
- "homepage": "https://github.com/fuze210699/milens#readme",
41
- "bugs": {
42
- "url": "https://github.com/fuze210699/milens/issues"
43
- },
44
- "engines": {
45
- "node": ">=20.0.0"
46
- },
47
- "dependencies": {
48
- "@modelcontextprotocol/sdk": "^1.29.0",
49
- "better-sqlite3": "^11.0.0",
50
- "commander": "^12.0.0",
51
- "ignore": "^7.0.0",
52
- "tree-sitter-wasms": "^0.1.12",
53
- "web-tree-sitter": "^0.24.7"
54
- },
55
- "license": "PolyForm-Noncommercial-1.0.0",
56
- "devDependencies": {
57
- "@types/better-sqlite3": "^7.0.0",
58
- "@types/node": "^20.0.0",
59
- "@yao-pkg/pkg": "^6.14.2",
60
- "esbuild": "^0.25.12",
61
- "tsx": "^4.0.0",
62
- "typescript": "^5.4.0",
63
- "vitest": "^4.0.0"
64
- }
65
- }
1
+ {
2
+ "name": "milens",
3
+ "version": "0.6.4",
4
+ "description": "AI-DOS: Code Intelligence Platform — knowledge graphs, security scanning, and closed-loop AI development. 33 MCP tools, 6 sub-agent prompts, 50 security rules.",
5
+ "type": "module",
6
+ "bin": {
7
+ "milens": "./dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist/",
11
+ "docs/*.svg",
12
+ "README.md",
13
+ "LICENSE",
14
+ ".agents/skills/",
15
+ "adapters/"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc && node -e \"require('fs').copyFileSync('src/store/schema.sql','dist/store/schema.sql')\"",
19
+ "dev": "tsx src/cli.ts",
20
+ "test": "vitest run",
21
+ "test:watch": "vitest",
22
+ "lint": "tsc --noEmit",
23
+ "prepublishOnly": "npm run build && npm test",
24
+ "build:standalone": "node scripts/build-standalone.mjs",
25
+ "build:standalone:all": "node scripts/build-standalone.mjs --target all",
26
+ "self-analyze": "tsx src/cli.ts analyze -p . --force --verbose --skills",
27
+ "self-serve": "tsx src/cli.ts serve -p . --http --port 3100"
28
+ },
29
+ "keywords": [
30
+ "code-intelligence",
31
+ "knowledge-graph",
32
+ "mcp",
33
+ "tree-sitter",
34
+ "static-analysis",
35
+ "codebase-indexer",
36
+ "ai-agent",
37
+ "security-scan",
38
+ "vibe-code",
39
+ "closed-loop",
40
+ "ai-dos",
41
+ "model-context-protocol",
42
+ "sub-agent",
43
+ "code-review",
44
+ "impact-analysis"
45
+ ],
46
+ "repository": {
47
+ "type": "git",
48
+ "url": "git+https://github.com/fuze210699/milens.git"
49
+ },
50
+ "homepage": "https://github.com/fuze210699/milens#readme",
51
+ "bugs": {
52
+ "url": "https://github.com/fuze210699/milens/issues"
53
+ },
54
+ "funding": {
55
+ "type": "github",
56
+ "url": "https://github.com/sponsors/fuze210699"
57
+ },
58
+ "engines": {
59
+ "node": ">=20.0.0"
60
+ },
61
+ "dependencies": {
62
+ "@modelcontextprotocol/sdk": "^1.29.0",
63
+ "@xenova/transformers": "^2.17.2",
64
+ "better-sqlite3": "^11.0.0",
65
+ "commander": "^12.0.0",
66
+ "ignore": "^7.0.0",
67
+ "tree-sitter-wasms": "^0.1.12",
68
+ "web-tree-sitter": "^0.24.7"
69
+ },
70
+ "license": "PolyForm-Noncommercial-1.0.0",
71
+ "devDependencies": {
72
+ "@types/better-sqlite3": "^7.0.0",
73
+ "@types/node": "^20.0.0",
74
+ "@yao-pkg/pkg": "^6.14.2",
75
+ "esbuild": "^0.25.12",
76
+ "tsx": "^4.0.0",
77
+ "typescript": "^5.4.0",
78
+ "vitest": "^4.0.0"
79
+ }
80
+ }