@simpletoolsindiaorg/engi-mcp 1.1.1 → 1.2.1

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/CHANGELOG.md CHANGED
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.2.1] - 2026-03-16
9
+
10
+ ### Documentation
11
+ - Full benchmark results published: 15 scenarios across 2 real projects (engi-mcp repo + fresh sandbox), 51 files total
12
+ - Combined result: 225,983 → 8,716 tokens · **96.1% reduction**
13
+ - Added real API cost savings table (Claude Sonnet pricing · up to $418/month saved per developer at 50 tasks/day)
14
+ - Updated top-level banner and token-savings badge to reflect v1.2.0 numbers
15
+
16
+ ## [1.2.0] - 2026-03-16
17
+
18
+ ### Added
19
+ - **RAG Engine** (`src/core/rag/rag.ts`) — chunks file content into function/class bodies, scores via TF-IDF term overlap, cached by `lastIndexed`
20
+ - **`RagEngine.retrieve()`** — semantic keyword retrieval across all indexed chunks
21
+ - **`RagEngine.retrieveByLiteral()`** — literal string search (error codes, symbol names) for bug tracing
22
+ - **`FlowStep.snippet`** — RAG-retrieved code snippet attached to each flow step (standard/detailed verbosity)
23
+ - **`BugCause.snippet`** — actual code near the suspected bug location, attached by RAG
24
+ - **Summarizer: RAG-augmented flow summaries** — each step now carries a real code snippet from the file, not just file name + export list
25
+ - **Summarizer: RAG-augmented bug traces** — literal + semantic retrieval finds the exact function containing the bug; cause includes file, symbol, and snippet
26
+ - **Summarizer: RAG-augmented doc context** — code examples pulled from actual file content via semantic search, replacing fragile regex extraction
27
+
28
+ ### Changed
29
+ - `SummarizationEngine.generateFlowSummary` now uses RAG to attach code snippets to steps
30
+ - `SummarizationEngine.traceBug` runs both literal + semantic RAG retrieval; merges results, enriches causes
31
+ - `SummarizationEngine.buildDocContext` uses RAG for example extraction instead of manual regex
32
+ - Audience notes expanded: `api`, `pm`, `qa` cases added to `generateAudienceNote`
33
+ - `FlowStep` and `BugCause` interfaces extended with optional `snippet` field
34
+
8
35
  ## [1.1.1] - 2026-03-16
9
36
 
10
37
  ### Fixed
package/README.md CHANGED
@@ -18,7 +18,7 @@
18
18
  [![MCP Compatible](https://img.shields.io/badge/MCP-compatible-blueviolet?style=flat-square)](https://modelcontextprotocol.io)
19
19
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](LICENSE)
20
20
  [![Tests](https://img.shields.io/badge/tests-55%20passing-success?style=flat-square)](src/)
21
- [![Token Savings](https://img.shields.io/badge/token%20savings-97%25-ff6b35?style=flat-square)](#-proven-token-savings)
21
+ [![Token Savings](https://img.shields.io/badge/token%20savings-96%25-ff6b35?style=flat-square)](#-proven-token-savings)
22
22
 
23
23
  </div>
24
24
 
@@ -31,10 +31,13 @@ Every time Claude Code helps you with a task, it reads files. Lots of them. For
31
31
  **engi-mcp** gives Claude a compact intelligence layer: indexed summaries, scoped file discovery, and compact planning tools. Instead of reading 27 files (18,000 tokens), Claude reads a 350-token summary and gets the same job done.
32
32
 
33
33
  ```
34
- WITHOUT engi-mcp: Claude reads 27 files → 18,298 tokens
35
- WITH engi-mcp: 3 tool calls → 405 tokens
34
+ WITHOUT engi-mcp: Claude reads 30 files → 20,842 tokens
35
+ WITH engi-mcp: 3 tool calls → 528 tokens
36
36
  ─────────────────────────
37
- SAVED: 17,893 tokens (97.8% reduction)
37
+ SAVED: 20,314 tokens (97.5% reduction)
38
+
39
+ Combined across 15 real scenarios · 51 files · 2 projects:
40
+ 225,983 tokens → 8,716 tokens → 96.1% reduction
38
41
  ```
39
42
 
40
43
  ---
@@ -377,22 +380,78 @@ Resources are read via repo:// URIs — lighter than tools, no arguments needed.
377
380
 
378
381
  ## Proven Token Savings
379
382
 
380
- Real measurements on this repo (27 files, ~18k tokens):
383
+ Full benchmark run across **two real projects** — 15 scenarios, 51 files, every tool and resource exercised.
384
+
385
+ ### Test 1 — engi-mcp own repo (30 files · 20,842 token baseline)
386
+
387
+ | Scenario | Tools | Without MCP | With MCP | Saved |
388
+ |----------|-------|------------|---------|-------|
389
+ | Analysis | 3 | 20,842 | 528 | **97.5%** |
390
+ | Bug Fix | 3 | 20,842 | 950 | **95.4%** |
391
+ | Feature | 5 | 20,842 | 1,159 | **94.4%** |
392
+ | POC | 2 | 20,842 | 128 | **99.4%** |
393
+ | Documentation | 3 | 20,842 | 443 | **97.9%** |
394
+ | Multi-session Memory | 2 | 41,684 | 422 | **99.0%** |
395
+ | All 7 Resources | 7 | 20,842 | 870 | **95.8%** |
396
+ | **TOTAL** | **19/19** | **166,736** | **4,500** | **97.3%** |
397
+
398
+ ### Test 2 — Sandbox: fresh Node.js REST API (21 files · 6,583 token baseline)
399
+
400
+ > Project the MCP had never seen before — auth, users, db, notifications, utils.
401
+
402
+ | Scenario | Tools | Without MCP | With MCP | Saved |
403
+ |----------|-------|------------|---------|-------|
404
+ | Architecture Analysis | 3 | 6,583 | 194 | **97.1%** |
405
+ | Bug Fix | 3 | 6,583 | 866 | **86.8%** |
406
+ | Feature (OAuth2 login) | 5 | 6,583 | 854 | **87.0%** |
407
+ | Refactor (BaseRepo) | 4 | 6,583 | 813 | **87.7%** |
408
+ | POC (Redis rate limit) | 2 | 6,583 | 127 | **98.1%** |
409
+ | Documentation | 3 | 6,583 | 450 | **93.2%** |
410
+ | Multi-session Memory | 2 | 13,166 | 436 | **96.7%** |
411
+ | All 7 Resources | 7 | 6,583 | 476 | **92.8%** |
412
+ | **TOTAL** | **19/19** | **59,247** | **4,216** | **92.9%** |
413
+
414
+ ### Combined across both tests
415
+
416
+ | | Tokens |
417
+ |--|--------|
418
+ | Without MCP | 225,983 |
419
+ | With MCP | 8,716 |
420
+ | **Saved** | **217,267** |
421
+ | **Net reduction** | **96.1%** |
381
422
 
382
- | Scenario | Tools Used | Without MCP | With MCP | Saved |
383
- |----------|-----------|------------|---------|-------|
384
- | Analysis | 3 | 18,298 | 405 | **97.8%** |
385
- | Bug Fix | 3 | 18,298 | 734 | **96.0%** |
386
- | Feature | 5 | 18,298 | 1,117 | **93.9%** |
387
- | POC | 2 | 18,298 | 128 | **99.3%** |
388
- | Documentation | 3 | 18,298 | 226 | **98.8%** |
389
- | Multi-session Memory | 2 | 36,596 | 434 | **98.8%** |
390
- | All 7 Resources | 7 | 18,298 | 836 | **95.4%** |
391
- | **TOTAL** | **19/19** | **146,384** | **3,880** | **97.3%** |
423
+ Total wall time: **103ms** for 15 scenarios. Tool coverage: **19/19 (100%)**.
392
424
 
393
- Run the benchmark yourself:
425
+ ### Real Cost Savings (Claude API pricing)
426
+
427
+ > Prices based on Claude Sonnet 4.5 input token rate ($3 / 1M tokens).
428
+
429
+ | Usage | Without MCP | With MCP | Saved / session |
430
+ |-------|------------|---------|----------------|
431
+ | 10 tasks/day · small repo (6k tok) | ~$0.18 | ~$0.013 | **$0.17** |
432
+ | 10 tasks/day · medium repo (21k tok) | ~$0.63 | ~$0.045 | **$0.58** |
433
+ | 10 tasks/day · large repo (100k tok) | ~$3.00 | ~$0.21 | **$2.79** |
434
+ | 50 tasks/day · large repo | ~$15.00 | ~$1.05 | **$13.95/day** |
435
+
436
+ At 50 tasks/day on a large repo: **~$418/month saved per developer.**
437
+ The larger the repo, the greater the savings — token cost scales linearly with repo size, MCP cost does not.
438
+
439
+ ### What RAG adds (v1.2.0+)
440
+
441
+ engi-mcp v1.2.0 added a RAG engine that chunks file content and attaches real code snippets to summaries. The snippets eliminate follow-up file reads that the benchmark does not count:
442
+
443
+ | Tool | Extra tokens (RAG) | What it replaces |
444
+ |------|--------------------|-----------------|
445
+ | `flow_summarize` | +12 | 1–2 Read calls (~800 tok) |
446
+ | `bug_trace_compact` | +270 | 2–4 Read calls (~2,000 tok) |
447
+ | `doc_context_build` | +212 | 2–3 Read calls (~1,500 tok) |
448
+
449
+ Run the benchmarks yourself:
394
450
  ```bash
451
+ # Clone and run against this repo
395
452
  npx tsx test-token-report.ts
453
+
454
+ # Or against your own project — edit REPO_PATH in test-token-report.ts
396
455
  ```
397
456
 
398
457
  ---
@@ -0,0 +1,3 @@
1
+ export { RagEngine, getRagEngine } from './rag.js';
2
+ export type { CodeChunk, RetrievedChunk } from './rag.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRagEngine = exports.RagEngine = void 0;
4
+ var rag_js_1 = require("./rag.js");
5
+ Object.defineProperty(exports, "RagEngine", { enumerable: true, get: function () { return rag_js_1.RagEngine; } });
6
+ Object.defineProperty(exports, "getRagEngine", { enumerable: true, get: function () { return rag_js_1.getRagEngine; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/rag/index.ts"],"names":[],"mappings":";;;AAAA,mCAAmD;AAA1C,mGAAA,SAAS,OAAA;AAAE,sGAAA,YAAY,OAAA"}
@@ -0,0 +1,38 @@
1
+ import { RepositoryIndex } from '../types.js';
2
+ export interface CodeChunk {
3
+ file: string;
4
+ symbol: string;
5
+ type: 'function' | 'class' | 'method' | 'block';
6
+ startLine: number;
7
+ content: string;
8
+ tokens: number;
9
+ terms: Map<string, number>;
10
+ }
11
+ export interface RetrievedChunk {
12
+ file: string;
13
+ symbol: string;
14
+ snippet: string;
15
+ score: number;
16
+ reason: string;
17
+ }
18
+ export declare class RagEngine {
19
+ /**
20
+ * Retrieve the top-K code chunks most relevant to `query`, optionally
21
+ * restricting to `files` (relative paths).
22
+ */
23
+ retrieve(query: string, index: RepositoryIndex, options?: {
24
+ files?: string[];
25
+ topK?: number;
26
+ }): RetrievedChunk[];
27
+ /**
28
+ * Retrieve chunks that contain any of the given literal strings (e.g. error
29
+ * codes, symbol names). Used for bug tracing.
30
+ */
31
+ retrieveByLiteral(literals: string[], index: RepositoryIndex, options?: {
32
+ files?: string[];
33
+ topK?: number;
34
+ }): RetrievedChunk[];
35
+ private getChunks;
36
+ }
37
+ export declare function getRagEngine(): RagEngine;
38
+ //# sourceMappingURL=rag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag.d.ts","sourceRoot":"","sources":["../../../src/core/rag/rag.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AA6BD,qBAAa,SAAS;IAEpB;;;OAGG;IACH,QAAQ,CACN,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAChD,cAAc,EAAE;IA2BnB;;;OAGG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAChD,cAAc,EAAE;IA+BnB,OAAO,CAAC,SAAS;CAQlB;AA+ID,wBAAgB,YAAY,IAAI,SAAS,CAGxC"}
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.RagEngine = void 0;
37
+ exports.getRagEngine = getRagEngine;
38
+ // RAG Engine — Retrieval-Augmented Generation for code summaries
39
+ // Chunks file content into function/class bodies, scores by TF-IDF keyword
40
+ // overlap, and returns compact snippets that augment metadata-only summaries.
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ // ── Constants ────────────────────────────────────────────────────────────────
44
+ const MAX_CHUNK_LINES = 40; // cap body extraction at 40 lines
45
+ const MAX_SNIPPET_LINES = 12; // what we return to the caller
46
+ const MAX_RESULTS = 5; // top-K per retrieve() call
47
+ const MIN_SCORE = 0.05; // discard near-zero matches
48
+ // Shared with retriever — stop words that carry no discriminating signal
49
+ const STOP = new Set([
50
+ 'function', 'class', 'method', 'const', 'let', 'var', 'return', 'import', 'export',
51
+ 'async', 'await', 'the', 'and', 'for', 'with', 'this', 'that', 'from', 'type',
52
+ 'interface', 'new', 'not', 'if', 'else', 'try', 'catch', 'throw', 'get', 'set',
53
+ 'public', 'private', 'protected', 'readonly', 'static', 'void', 'any', 'true', 'false',
54
+ 'null', 'undefined', 'string', 'number', 'boolean', 'object', 'array',
55
+ ]);
56
+ // Regex patterns for detecting chunk start lines
57
+ const CHUNK_START_RE = /^(?:export\s+)?(?:async\s+)?(?:function\s+(\w+)|class\s+(\w+)|(?:const|let)\s+(\w+)\s*=\s*(?:async\s+)?\(|(?: |\t)(?:async\s+)?(\w+)\s*\()/;
58
+ let chunkCache = null;
59
+ // ── Public API ────────────────────────────────────────────────────────────────
60
+ class RagEngine {
61
+ /**
62
+ * Retrieve the top-K code chunks most relevant to `query`, optionally
63
+ * restricting to `files` (relative paths).
64
+ */
65
+ retrieve(query, index, options = {}) {
66
+ const chunks = this.getChunks(index);
67
+ const topK = options.topK ?? MAX_RESULTS;
68
+ const fileSet = options.files ? new Set(options.files) : null;
69
+ const queryTerms = extractTerms(query);
70
+ if (queryTerms.size === 0)
71
+ return [];
72
+ const scored = [];
73
+ for (const chunk of chunks) {
74
+ if (fileSet && !fileSet.has(chunk.file))
75
+ continue;
76
+ const { score, reason } = scoreChunk(queryTerms, chunk.terms, chunk.symbol);
77
+ if (score >= MIN_SCORE)
78
+ scored.push({ chunk, score, reason });
79
+ }
80
+ scored.sort((a, b) => b.score - a.score);
81
+ return scored.slice(0, topK).map(({ chunk, score, reason }) => ({
82
+ file: chunk.file,
83
+ symbol: chunk.symbol,
84
+ snippet: trimSnippet(chunk.content, MAX_SNIPPET_LINES),
85
+ score: Math.round(score * 100) / 100,
86
+ reason,
87
+ }));
88
+ }
89
+ /**
90
+ * Retrieve chunks that contain any of the given literal strings (e.g. error
91
+ * codes, symbol names). Used for bug tracing.
92
+ */
93
+ retrieveByLiteral(literals, index, options = {}) {
94
+ const chunks = this.getChunks(index);
95
+ const topK = options.topK ?? MAX_RESULTS;
96
+ const fileSet = options.files ? new Set(options.files) : null;
97
+ const lits = literals.map(l => l.toLowerCase());
98
+ const scored = [];
99
+ for (const chunk of chunks) {
100
+ if (fileSet && !fileSet.has(chunk.file))
101
+ continue;
102
+ const lower = chunk.content.toLowerCase();
103
+ const hits = lits.filter(l => lower.includes(l));
104
+ if (hits.length > 0) {
105
+ const score = hits.length / lits.length;
106
+ scored.push({ chunk, score, reason: `literal:${hits.slice(0, 3).join(',')}` });
107
+ }
108
+ }
109
+ scored.sort((a, b) => b.score - a.score);
110
+ return scored.slice(0, topK).map(({ chunk, score, reason }) => ({
111
+ file: chunk.file,
112
+ symbol: chunk.symbol,
113
+ snippet: trimSnippet(chunk.content, MAX_SNIPPET_LINES),
114
+ score: Math.round(score * 100) / 100,
115
+ reason,
116
+ }));
117
+ }
118
+ // ── Private ──────────────────────────────────────────────────────────────
119
+ getChunks(index) {
120
+ if (chunkCache && chunkCache.indexedAt === index.lastIndexed) {
121
+ return chunkCache.chunks;
122
+ }
123
+ const chunks = buildChunkIndex(index);
124
+ chunkCache = { chunks, indexedAt: index.lastIndexed };
125
+ return chunks;
126
+ }
127
+ }
128
+ exports.RagEngine = RagEngine;
129
+ // ── Chunk building ────────────────────────────────────────────────────────────
130
+ function buildChunkIndex(index) {
131
+ const chunks = [];
132
+ for (const [filePath, file] of index.files) {
133
+ if (file.type !== 'source' && file.type !== 'test')
134
+ continue;
135
+ if (!['typescript', 'javascript', 'python', 'go'].includes(file.language))
136
+ continue;
137
+ const absPath = path.join(index.rootPath, filePath);
138
+ let content;
139
+ try {
140
+ content = fs.readFileSync(absPath, 'utf-8');
141
+ }
142
+ catch {
143
+ continue;
144
+ }
145
+ const fileChunks = extractChunks(content, filePath, file.language);
146
+ chunks.push(...fileChunks);
147
+ }
148
+ return chunks;
149
+ }
150
+ function extractChunks(content, filePath, language) {
151
+ const lines = content.split('\n');
152
+ const chunks = [];
153
+ for (let i = 0; i < lines.length; i++) {
154
+ const line = lines[i];
155
+ const match = CHUNK_START_RE.exec(line);
156
+ if (!match)
157
+ continue;
158
+ const symbol = match[1] || match[2] || match[3] || match[4];
159
+ if (!symbol || symbol.length < 2)
160
+ continue;
161
+ const type = line.includes('class ') ? 'class'
162
+ : match[4] ? 'method'
163
+ : line.includes('function') || line.includes('=>') || line.includes('= (') ? 'function'
164
+ : 'block';
165
+ // Extract body by brace counting
166
+ const bodyLines = extractBody(lines, i, MAX_CHUNK_LINES);
167
+ if (bodyLines.length < 2)
168
+ continue;
169
+ const chunkContent = bodyLines.join('\n');
170
+ chunks.push({
171
+ file: filePath,
172
+ symbol,
173
+ type,
174
+ startLine: i + 1,
175
+ content: chunkContent,
176
+ tokens: estimateChunkTokens(chunkContent),
177
+ terms: extractTerms(chunkContent + ' ' + symbol),
178
+ });
179
+ }
180
+ return chunks;
181
+ }
182
+ function extractBody(lines, startIdx, maxLines) {
183
+ const body = [lines[startIdx]];
184
+ let depth = 0;
185
+ let started = false;
186
+ for (let i = startIdx; i < Math.min(lines.length, startIdx + maxLines); i++) {
187
+ const line = lines[i];
188
+ for (const ch of line) {
189
+ if (ch === '{' || ch === '(') {
190
+ depth++;
191
+ started = true;
192
+ }
193
+ else if (ch === '}' || ch === ')')
194
+ depth--;
195
+ }
196
+ if (i > startIdx)
197
+ body.push(line);
198
+ if (started && depth <= 0)
199
+ break;
200
+ }
201
+ return body;
202
+ }
203
+ // ── Scoring ───────────────────────────────────────────────────────────────────
204
+ function scoreChunk(queryTerms, chunkTerms, symbol) {
205
+ let score = 0;
206
+ const hits = [];
207
+ const symbolLower = symbol.toLowerCase();
208
+ for (const [term, qFreq] of queryTerms) {
209
+ const cFreq = chunkTerms.get(term) ?? 0;
210
+ if (cFreq > 0) {
211
+ // TF-IDF approximation: boost rare terms (short term = common = lower weight)
212
+ const idfBoost = term.length > 5 ? 1.5 : 1.0;
213
+ score += Math.min(qFreq, cFreq) * idfBoost;
214
+ hits.push(term);
215
+ }
216
+ // Symbol name match is a strong signal
217
+ if (symbolLower.includes(term) || term.includes(symbolLower)) {
218
+ score += 3.0;
219
+ if (!hits.includes(term))
220
+ hits.push(`sym:${term}`);
221
+ }
222
+ }
223
+ // Normalize by query size
224
+ const normalized = score / Math.max(queryTerms.size, 1);
225
+ return { score: normalized, reason: hits.slice(0, 4).join(',') };
226
+ }
227
+ // ── Term extraction ───────────────────────────────────────────────────────────
228
+ function extractTerms(text) {
229
+ const freq = new Map();
230
+ // Split on non-word chars, also split camelCase
231
+ const words = text
232
+ .replace(/([a-z])([A-Z])/g, '$1 $2') // camelCase → camel Case
233
+ .toLowerCase()
234
+ .split(/[^\w]+/);
235
+ for (const w of words) {
236
+ if (w.length > 2 && !STOP.has(w) && !/^\d+$/.test(w)) {
237
+ freq.set(w, (freq.get(w) ?? 0) + 1);
238
+ }
239
+ }
240
+ return freq;
241
+ }
242
+ // ── Helpers ───────────────────────────────────────────────────────────────────
243
+ function trimSnippet(content, maxLines) {
244
+ const lines = content.split('\n');
245
+ if (lines.length <= maxLines)
246
+ return content;
247
+ // Keep first N lines + indicate truncation
248
+ return lines.slice(0, maxLines).join('\n') + '\n // ...';
249
+ }
250
+ function estimateChunkTokens(content) {
251
+ return Math.ceil(content.length / 4);
252
+ }
253
+ // ── Singleton ─────────────────────────────────────────────────────────────────
254
+ let ragInstance = null;
255
+ function getRagEngine() {
256
+ if (!ragInstance)
257
+ ragInstance = new RagEngine();
258
+ return ragInstance;
259
+ }
260
+ //# sourceMappingURL=rag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag.js","sourceRoot":"","sources":["../../../src/core/rag/rag.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,11 @@
1
1
  import { FlowSummary, BugTraceResult, DocContext } from '../types.js';
2
2
  export declare class SummarizationEngine {
3
- /**
4
- * Generate a flow summary for the codebase or specific files
5
- */
6
3
  generateFlowSummary(options: {
7
4
  scope?: string[];
8
5
  entryPoint?: string;
9
6
  verbosity?: 'minimal' | 'standard' | 'detailed';
10
7
  }): Promise<FlowSummary>;
11
- /**
12
- * Trace likely bug causes from symptom description
13
- */
14
8
  traceBug(symptom: string, scope?: string[]): Promise<BugTraceResult>;
15
- /**
16
- * Build documentation context for a feature or change
17
- */
18
9
  buildDocContext(options: {
19
10
  feature?: string;
20
11
  changedFiles?: string[];
@@ -26,7 +17,6 @@ export declare class SummarizationEngine {
26
17
  private generateSummaryText;
27
18
  private getFilesImporting;
28
19
  private generateHandle;
29
- private extractExampleCode;
30
20
  private generateAudienceNote;
31
21
  }
32
22
  export declare function getSummarizationEngine(): SummarizationEngine;
@@ -1 +1 @@
1
- {"version":3,"file":"summarizer.d.ts","sourceRoot":"","sources":["../../../src/core/summarizer/summarizer.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,WAAW,EAEX,cAAc,EAEd,UAAU,EAGX,MAAM,aAAa,CAAC;AAIrB,qBAAa,mBAAmB;IAC9B;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE;QACjC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;KACjD,GAAG,OAAO,CAAC,WAAW,CAAC;IAsExB;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAyF1E;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,UAAU,CAAC;IAsEvB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,oBAAoB;CAU7B;AAKD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAK5D"}
1
+ {"version":3,"file":"summarizer.d.ts","sourceRoot":"","sources":["../../../src/core/summarizer/summarizer.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,WAAW,EAEX,cAAc,EAEd,UAAU,EAGX,MAAM,aAAa,CAAC;AAWrB,qBAAa,mBAAmB;IAIxB,mBAAmB,CAAC,OAAO,EAAE;QACjC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;KACjD,GAAG,OAAO,CAAC,WAAW,CAAC;IA0ElB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAqGpE,eAAe,CAAC,OAAO,EAAE;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6DvB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,oBAAoB;CAU7B;AAyBD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAG5D"}
@@ -35,307 +35,293 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.SummarizationEngine = void 0;
37
37
  exports.getSummarizationEngine = getSummarizationEngine;
38
- // Summarization Layer - Generate compact summaries for code flows, bug traces, and docs
39
- const fs = __importStar(require("fs"));
38
+ // Summarization Layer - Metadata summaries augmented by RAG code snippets.
39
+ // Flow: metadata-only → RAG retrieves top-K relevant chunks → snippets embedded
40
+ // in steps/causes → richer output with near-zero extra token cost.
40
41
  const path = __importStar(require("path"));
41
42
  const indexer_js_1 = require("../indexer/indexer.js");
43
+ const rag_js_1 = require("../rag/rag.js");
44
+ // ── Token budget for RAG snippets ────────────────────────────────────────────
45
+ // These limits keep RAG from blowing up the output token count.
46
+ const FLOW_MAX_SNIPPETS = 4; // max chunks injected into a flow summary
47
+ const BUG_MAX_SNIPPETS = 3; // max chunks injected into a bug trace
48
+ const DOC_MAX_EXAMPLES = 3; // max code examples for doc context
49
+ const SNIPPET_MAX_LINES = 10; // each snippet capped at 10 lines
42
50
  class SummarizationEngine {
43
- /**
44
- * Generate a flow summary for the codebase or specific files
45
- */
51
+ // ── Flow Summary ────────────────────────────────────────────────────────────
46
52
  async generateFlowSummary(options) {
47
- const indexer = (0, indexer_js_1.getIndexer)();
48
- const index = indexer.getIndex();
49
- if (!index) {
53
+ const index = (0, indexer_js_1.getIndexer)().getIndex();
54
+ if (!index)
50
55
  return this.emptyFlowSummary();
51
- }
52
56
  const files = options.scope
53
57
  ? options.scope.map(p => index.files.get(p)).filter(Boolean)
54
58
  : Array.from(index.files.values()).filter(f => f.type === 'source').slice(0, 10);
55
- if (files.length === 0) {
59
+ if (files.length === 0)
56
60
  return this.emptyFlowSummary();
57
- }
61
+ const verbosity = options.verbosity ?? 'standard';
58
62
  const steps = [];
59
- const keyFiles = [];
60
63
  const keySymbols = [];
61
- // Generate steps based on file analysis
64
+ // ── RAG: retrieve code chunks relevant to the scope ──────────────────────
65
+ const scopePaths = files.map((f) => f.path);
66
+ const scopeQuery = scopePaths.map((p) => path.basename(p, path.extname(p))).join(' ');
67
+ const ragChunks = (0, rag_js_1.getRagEngine)().retrieve(scopeQuery, index, {
68
+ files: scopePaths,
69
+ topK: FLOW_MAX_SNIPPETS,
70
+ });
71
+ // Build a map: file → best chunk for that file
72
+ const bestChunk = new Map();
73
+ for (const c of ragChunks) {
74
+ if (!bestChunk.has(c.file))
75
+ bestChunk.set(c.file, c.snippet);
76
+ }
77
+ // ── Build flow steps ─────────────────────────────────────────────────────
62
78
  for (let i = 0; i < files.length; i++) {
63
79
  const file = files[i];
80
+ const importedBy = this.getFilesImporting(file.path, index);
81
+ // Describe the step from actual exports + import graph
82
+ const topExports = file.exports.slice(0, 3).join(', ');
83
+ let description;
64
84
  if (i === 0) {
65
- steps.push({
66
- order: 1,
67
- description: `Entry point: ${file.name}`,
68
- file: file.path
69
- });
85
+ description = `Entry: ${file.name}` + (topExports ? ` — exports ${topExports}` : '');
86
+ }
87
+ else if (importedBy.length > 0) {
88
+ description = `${file.name} used by ${importedBy.length} file(s)` + (topExports ? ` · exports ${topExports}` : '');
70
89
  }
71
90
  else {
72
- // Analyze imports to determine flow
73
- const importedBy = this.getFilesImporting(file.path, index);
74
- if (importedBy.length > 0) {
75
- steps.push({
76
- order: steps.length + 1,
77
- description: `${file.name} is used by ${importedBy.length} file(s)`,
78
- file: file.path
79
- });
80
- }
81
- else {
82
- steps.push({
83
- order: steps.length + 1,
84
- description: `Dependency: ${file.name}`,
85
- file: file.path
86
- });
87
- }
91
+ description = `${file.name}` + (topExports ? ` — exports ${topExports}` : '');
88
92
  }
89
- keyFiles.push(file.path);
90
- // Extract key symbols
91
- const symbols = index.symbols.get(file.path) || [];
92
- for (const symbol of symbols.slice(0, 3)) {
93
- keySymbols.push(`${symbol.name} (${symbol.type})`);
93
+ const step = {
94
+ order: i + 1,
95
+ description,
96
+ file: file.path,
97
+ symbol: file.exports[0],
98
+ };
99
+ // ── Attach RAG snippet for detailed / standard verbosity ─────────────
100
+ if (verbosity !== 'minimal' && bestChunk.has(file.path)) {
101
+ step.snippet = limitLines(bestChunk.get(file.path), SNIPPET_MAX_LINES);
94
102
  }
103
+ steps.push(step);
104
+ // Collect key symbols
105
+ const symbols = index.symbols.get(file.path) ?? [];
106
+ for (const sym of symbols.slice(0, 3))
107
+ keySymbols.push(`${sym.name} (${sym.type})`);
95
108
  }
96
- const summary = this.generateSummaryText(steps, options.verbosity || 'standard');
97
109
  return {
98
- summary,
110
+ summary: this.generateSummaryText(steps, verbosity),
99
111
  steps,
100
- keyFiles,
101
- keySymbols: keySymbols.slice(0, 10),
102
- entryPoint: options.entryPoint || files[0]?.path,
103
- handle: this.generateHandle('flow', files.map(f => f.path).join(','))
112
+ keyFiles: files.map((f) => f.path),
113
+ keySymbols: keySymbols.slice(0, 12),
114
+ entryPoint: options.entryPoint ?? files[0]?.path,
115
+ handle: this.generateHandle('flow', scopePaths.join(',')),
104
116
  };
105
117
  }
106
- /**
107
- * Trace likely bug causes from symptom description
108
- */
118
+ // ── Bug Trace ───────────────────────────────────────────────────────────────
109
119
  async traceBug(symptom, scope) {
110
- const indexer = (0, indexer_js_1.getIndexer)();
111
- const index = indexer.getIndex();
112
- if (!index) {
120
+ const index = (0, indexer_js_1.getIndexer)().getIndex();
121
+ if (!index)
113
122
  return this.emptyBugTrace();
114
- }
115
- // Analyze symptom to find likely causes
123
+ const symptomLower = symptom.toLowerCase();
116
124
  const likelyCauses = [];
117
- const suspectFiles = [];
125
+ const suspectFiles = new Set();
118
126
  const suspectSymbols = [];
119
- // Parse symptom keywords
120
- const symptomLower = symptom.toLowerCase();
121
- // Check for common bug patterns
122
- if (symptomLower.includes('null') || symptomLower.includes('undefined') || symptomLower.includes('cannot read')) {
123
- likelyCauses.push({
124
- description: 'Potential null/undefined access - check for missing null guards',
125
- likelihood: 0.8,
126
- type: 'null_undefined'
127
- });
127
+ // ── Pattern-based cause detection (same as before) ───────────────────────
128
+ if (symptomLower.match(/null|undefined|cannot read|is not a function/)) {
129
+ likelyCauses.push({ type: 'null_undefined', likelihood: 0.85,
130
+ description: 'Null/undefined access — check for missing null guards before dereferencing' });
128
131
  }
129
- if (symptomLower.includes('async') || symptomLower.includes('race') || symptomLower.includes('timing')) {
130
- likelyCauses.push({
131
- description: 'Potential race condition or async timing issue',
132
- likelihood: 0.7,
133
- type: 'race_condition'
134
- });
132
+ if (symptomLower.match(/race|timing|async|concurrent|await/)) {
133
+ likelyCauses.push({ type: 'race_condition', likelihood: 0.75,
134
+ description: 'Race condition or unresolved async ensure all async paths are awaited' });
135
135
  }
136
- if (symptomLower.includes('type') || symptomLower.includes('cast')) {
137
- likelyCauses.push({
138
- description: 'Potential type mismatch or incorrect type assertion',
139
- likelihood: 0.6,
140
- type: 'type_mismatch'
141
- });
136
+ if (symptomLower.match(/type|cast|instanceof|assign/)) {
137
+ likelyCauses.push({ type: 'type_mismatch', likelihood: 0.65,
138
+ description: 'Type mismatch verify type assertions and interface contracts' });
142
139
  }
143
- if (symptomLower.includes('loop') || symptomLower.includes('infinite')) {
144
- likelyCauses.push({
145
- description: 'Potential infinite loop or iteration issue',
146
- likelihood: 0.7,
147
- type: 'logic_error'
148
- });
140
+ if (symptomLower.match(/loop|infinite|timeout|hang/)) {
141
+ likelyCauses.push({ type: 'logic_error', likelihood: 0.70,
142
+ description: 'Logic error in loop or termination condition' });
149
143
  }
150
- // Find suspicious files in scope
151
- const targetFiles = scope
152
- ? scope.map(p => index.files.get(p)).filter(Boolean)
153
- : Array.from(index.files.values()).filter(f => f.type === 'source').slice(0, 20);
154
- // Check files with many imports (complex dependencies)
155
- for (const file of targetFiles) {
156
- if (file.imports.length > 10) {
157
- suspectFiles.push(file.path);
158
- }
144
+ if (symptomLower.match(/state|stale|cache|invalidat/)) {
145
+ likelyCauses.push({ type: 'unsafe_state', likelihood: 0.70,
146
+ description: 'Stale or incorrectly invalidated state — check cache write-through and eviction' });
159
147
  }
160
- // Check files with complex logic (many exports)
161
- for (const file of targetFiles) {
162
- if (file.exports.length > 10) {
163
- suspectFiles.push(file.path);
148
+ // ── RAG: find chunks that literally contain symptom keywords ─────────────
149
+ const scopePaths = scope ?? [];
150
+ const keywords = extractKeywords(symptom);
151
+ const ragByLit = (0, rag_js_1.getRagEngine)().retrieveByLiteral(keywords, index, {
152
+ files: scopePaths.length > 0 ? scopePaths : undefined,
153
+ topK: BUG_MAX_SNIPPETS,
154
+ });
155
+ // ── RAG: semantic retrieval on the symptom text ──────────────────────────
156
+ const ragBySem = (0, rag_js_1.getRagEngine)().retrieve(symptom, index, {
157
+ files: scopePaths.length > 0 ? scopePaths : undefined,
158
+ topK: BUG_MAX_SNIPPETS,
159
+ });
160
+ // Merge: literal hits first (higher relevance for bug tracing), then semantic
161
+ const seen = new Set();
162
+ const topRag = [...ragByLit, ...ragBySem].filter(c => {
163
+ const key = `${c.file}:${c.symbol}`;
164
+ if (seen.has(key))
165
+ return false;
166
+ seen.add(key);
167
+ return true;
168
+ }).slice(0, BUG_MAX_SNIPPETS);
169
+ // ── Attach snippets to causes and build suspect lists ────────────────────
170
+ for (let i = 0; i < topRag.length; i++) {
171
+ const chunk = topRag[i];
172
+ suspectFiles.add(chunk.file);
173
+ suspectSymbols.push(`${chunk.symbol} in ${chunk.file}`);
174
+ // Enrich the matching cause (or add a new one)
175
+ if (i < likelyCauses.length) {
176
+ likelyCauses[i].file = chunk.file;
177
+ likelyCauses[i].symbol = chunk.symbol;
178
+ likelyCauses[i].snippet = limitLines(chunk.snippet, SNIPPET_MAX_LINES);
179
+ }
180
+ else {
181
+ // RAG found a relevant chunk not covered by pattern matching — add cause
182
+ likelyCauses.push({
183
+ type: 'other',
184
+ likelihood: Math.max(0.3, chunk.score),
185
+ description: `Relevant code in ${chunk.symbol} (${chunk.file}) — ${chunk.reason}`,
186
+ file: chunk.file,
187
+ symbol: chunk.symbol,
188
+ snippet: limitLines(chunk.snippet, SNIPPET_MAX_LINES),
189
+ });
164
190
  }
165
191
  }
166
- // Find suspicious symbols
167
- for (const [filePath, symbols] of index.symbols) {
168
- for (const symbol of symbols) {
169
- // Functions that could throw
170
- if (symbol.type === 'function' && !symbol.name.startsWith('get') && !symbol.name.startsWith('is')) {
171
- suspectSymbols.push(`${symbol.name} in ${filePath}`);
172
- }
192
+ // Fallback: if RAG found nothing, add suspect files from index heuristics
193
+ if (suspectFiles.size === 0) {
194
+ const targetFiles = scope
195
+ ? scope.map(p => index.files.get(p)).filter(Boolean)
196
+ : Array.from(index.files.values()).filter(f => f.type === 'source').slice(0, 20);
197
+ for (const file of targetFiles) {
198
+ if (file.imports.length > 10 || file.exports.length > 10)
199
+ suspectFiles.add(file.path);
173
200
  }
174
201
  }
175
- const confidence = Math.min(likelyCauses.length * 0.25 + 0.3, 0.9);
202
+ const confidence = Math.min(likelyCauses.length * 0.2 + (topRag.length > 0 ? 0.25 : 0.1), 0.95);
176
203
  return {
177
204
  likelyCauses,
178
- suspectFiles: suspectFiles.slice(0, 10),
205
+ suspectFiles: [...suspectFiles].slice(0, 10),
179
206
  suspectSymbols: suspectSymbols.slice(0, 10),
180
207
  confidence,
181
- handle: this.generateHandle('bug', symptom)
208
+ handle: this.generateHandle('bug', symptom),
182
209
  };
183
210
  }
184
- /**
185
- * Build documentation context for a feature or change
186
- */
211
+ // ── Doc Context ─────────────────────────────────────────────────────────────
187
212
  async buildDocContext(options) {
188
- const indexer = (0, indexer_js_1.getIndexer)();
189
- const index = indexer.getIndex();
190
- if (!index) {
213
+ const index = (0, indexer_js_1.getIndexer)().getIndex();
214
+ if (!index)
191
215
  return this.emptyDocContext();
192
- }
193
- const featureSummary = options.feature || 'Codebase overview';
216
+ const featureSummary = options.feature ?? 'Codebase overview';
194
217
  const codeReferences = [];
195
218
  const examples = [];
196
- // Find relevant code references
197
219
  const targetFiles = options.changedFiles
198
220
  ? options.changedFiles.map(p => index.files.get(p)).filter(Boolean)
199
221
  : Array.from(index.files.values()).filter(f => f.type === 'source').slice(0, 5);
222
+ // ── Metadata: collect code references from index ─────────────────────────
200
223
  for (const file of targetFiles) {
201
- const symbols = index.symbols.get(file.path) || [];
202
224
  codeReferences.push({
203
225
  file: file.path,
204
- description: `${file.exports.length} exports: ${file.exports.slice(0, 3).join(', ')}`
226
+ symbol: file.exports[0],
227
+ description: `${file.exports.length} exports: ${file.exports.slice(0, 4).join(', ')}`,
205
228
  });
206
- // Try to extract code examples
207
- if (file.exports.length > 0 && file.language === 'typescript') {
208
- try {
209
- const content = fs.readFileSync(path.join(index.rootPath, file.path), 'utf-8');
210
- const exampleCode = this.extractExampleCode(content, file.exports[0]);
211
- if (exampleCode) {
212
- examples.push({
213
- title: `Usage of ${file.exports[0]}`,
214
- code: exampleCode,
215
- language: file.language
216
- });
217
- }
218
- }
219
- catch {
220
- // Ignore errors
221
- }
222
- }
223
229
  }
224
- // Generate audience notes
225
- const audienceNotes = {};
226
- if (options.audience) {
227
- audienceNotes[options.audience] = this.generateAudienceNote(options.audience, codeReferences);
228
- }
229
- else {
230
- audienceNotes['developer'] = this.generateAudienceNote('developer', codeReferences);
230
+ // ── RAG: retrieve usage examples via semantic search ─────────────────────
231
+ const ragQuery = featureSummary + ' ' + (options.changedFiles ?? []).map(f => path.basename(f, path.extname(f))).join(' ');
232
+ const scopePaths = targetFiles.map((f) => f.path);
233
+ const ragChunks = (0, rag_js_1.getRagEngine)().retrieve(ragQuery, index, {
234
+ files: scopePaths,
235
+ topK: DOC_MAX_EXAMPLES,
236
+ });
237
+ for (const chunk of ragChunks) {
238
+ const fileEntry = index.files.get(chunk.file);
239
+ if (!fileEntry)
240
+ continue;
241
+ examples.push({
242
+ title: `${chunk.symbol} — ${chunk.file}`,
243
+ code: limitLines(chunk.snippet, SNIPPET_MAX_LINES),
244
+ language: fileEntry.language,
245
+ });
231
246
  }
232
- const totalExports = codeReferences.reduce((sum, r) => {
233
- const match = r.description.match(/\d+/);
234
- return sum + (match ? parseInt(match[0], 10) : 0);
247
+ // ── Audience notes ───────────────────────────────────────────────────────
248
+ const audienceNotes = {};
249
+ const aud = options.audience ?? 'developer';
250
+ audienceNotes[aud] = this.generateAudienceNote(aud, codeReferences);
251
+ const totalExports = codeReferences.reduce((s, r) => {
252
+ const m = r.description.match(/\d+/);
253
+ return s + (m ? parseInt(m[0], 10) : 0);
235
254
  }, 0);
236
255
  return {
237
256
  featureSummary,
238
- currentBehavior: `The codebase contains ${targetFiles.length} main source files with ${totalExports} total exports.`,
257
+ currentBehavior: `${targetFiles.length} files · ${totalExports} total exports${ragChunks.length > 0 ? ` · ${ragChunks.length} code snippet(s) attached` : ''}`,
239
258
  codeReferences,
240
- examples: examples.slice(0, 3),
259
+ examples: examples.slice(0, DOC_MAX_EXAMPLES),
241
260
  audienceNotes,
242
- handle: this.generateHandle('doc', options.feature || 'overview')
261
+ handle: this.generateHandle('doc', options.feature ?? 'overview'),
243
262
  };
244
263
  }
245
- // =========================================================================
246
- // Private Helpers
247
- // =========================================================================
264
+ // ── Private helpers ─────────────────────────────────────────────────────────
248
265
  emptyFlowSummary() {
249
- return {
250
- summary: 'No codebase indexed. Use repo_scope_find to index a repository first.',
251
- steps: [],
252
- keyFiles: [],
253
- keySymbols: [],
254
- handle: undefined
255
- };
266
+ return { summary: 'No codebase indexed. Use repo_scope_find to index a repository first.', steps: [], keyFiles: [], keySymbols: [], handle: undefined };
256
267
  }
257
268
  emptyBugTrace() {
258
- return {
259
- likelyCauses: [],
260
- suspectFiles: [],
261
- suspectSymbols: [],
262
- confidence: 0,
263
- handle: undefined
264
- };
269
+ return { likelyCauses: [], suspectFiles: [], suspectSymbols: [], confidence: 0, handle: undefined };
265
270
  }
266
271
  emptyDocContext() {
267
- return {
268
- featureSummary: '',
269
- currentBehavior: '',
270
- codeReferences: [],
271
- examples: [],
272
- audienceNotes: {},
273
- handle: undefined
274
- };
272
+ return { featureSummary: '', currentBehavior: '', codeReferences: [], examples: [], audienceNotes: {}, handle: undefined };
275
273
  }
276
274
  generateSummaryText(steps, verbosity) {
277
- if (verbosity === 'minimal') {
275
+ if (verbosity === 'minimal' || steps.length === 0)
278
276
  return `${steps.length} files in flow`;
279
- }
280
- if (steps.length === 0) {
281
- return 'No flow data available';
282
- }
283
- if (verbosity === 'standard') {
284
- const lines = steps.map(s => `${s.order}. ${s.description}`);
285
- return `Flow overview:\n${lines.join('\n')}`;
286
- }
287
- // Detailed
288
- const detailedLines = steps.map(s => `${s.order}. ${s.description} (${s.file})`);
289
- return `Code flow analysis (${steps.length} steps):\n\n${detailedLines.join('\n')}`;
277
+ if (verbosity === 'standard')
278
+ return `Flow overview:\n${steps.map(s => `${s.order}. ${s.description}`).join('\n')}`;
279
+ return `Code flow (${steps.length} files):\n\n${steps.map(s => `${s.order}. ${s.description}\n ${s.file}${s.snippet ? '\n' + indent(s.snippet, ' ') : ''}`).join('\n\n')}`;
290
280
  }
291
281
  getFilesImporting(filePath, index) {
292
282
  const importers = [];
293
- for (const [path, file] of index.files) {
294
- if (file.imports.some(imp => imp === filePath || path.endsWith(imp))) {
295
- importers.push(path);
296
- }
283
+ for (const [p, file] of index.files) {
284
+ if (file.imports.some(imp => imp === filePath || p.endsWith(imp)))
285
+ importers.push(p);
297
286
  }
298
287
  return importers;
299
288
  }
300
289
  generateHandle(prefix, data) {
301
- // Simple hash-like handle
302
- const hash = data.split('').reduce((acc, char) => {
303
- return ((acc << 5) - acc) + char.charCodeAt(0);
304
- }, 0);
290
+ const hash = data.split('').reduce((acc, ch) => ((acc << 5) - acc) + ch.charCodeAt(0), 0);
305
291
  return `${prefix}_${Math.abs(hash).toString(36)}`;
306
292
  }
307
- extractExampleCode(content, exportName) {
308
- // Try to find a usage example of the exported symbol
309
- const lines = content.split('\n');
310
- for (let i = 0; i < lines.length; i++) {
311
- const line = lines[i];
312
- if (line.includes(exportName) && !line.startsWith('export')) {
313
- // Return a few lines around this
314
- const start = Math.max(0, i - 2);
315
- const end = Math.min(lines.length, i + 3);
316
- return lines.slice(start, end).join('\n');
317
- }
318
- }
319
- return null;
320
- }
321
- generateAudienceNote(audience, references) {
293
+ generateAudienceNote(audience, refs) {
322
294
  switch (audience) {
323
- case 'junior':
324
- return `Start with the main entry points: ${references.slice(0, 2).map(r => r.file).join(', ')}. Focus on understanding the exports.`;
325
- case 'senior':
326
- return `Key files: ${references.map(r => r.file).join(', ')}. Review architecture patterns.`;
327
- default:
328
- return `${references.length} main files to review.`;
295
+ case 'junior': return `Start with: ${refs.slice(0, 2).map(r => r.file).join(', ')}. Focus on the exported functions.`;
296
+ case 'senior': return `Key files: ${refs.map(r => r.file).join(', ')}. Review architecture and side-effects.`;
297
+ case 'api': return `Public surface: ${refs.flatMap(r => r.description.replace(/^\d+ exports: /, '').split(', ')).slice(0, 8).join(', ')}`;
298
+ case 'pm': return `${refs.length} components changed. Each exposes: ${refs.map(r => r.file.split('/').pop()).join(', ')}`;
299
+ case 'qa': return `Test entry points: ${refs.map(r => r.symbol ?? r.file).join(', ')}`;
300
+ default: return `${refs.length} main files to review.`;
329
301
  }
330
302
  }
331
303
  }
332
304
  exports.SummarizationEngine = SummarizationEngine;
333
- // Singleton instance
305
+ // ── Utility ───────────────────────────────────────────────────────────────────
306
+ function limitLines(text, max) {
307
+ const lines = text.split('\n');
308
+ return lines.length <= max ? text : lines.slice(0, max).join('\n') + '\n // ...';
309
+ }
310
+ function indent(text, prefix) {
311
+ return text.split('\n').map(l => prefix + l).join('\n');
312
+ }
313
+ function extractKeywords(text) {
314
+ // Pull out quoted strings, error codes (ALL_CAPS_WITH_UNDERSCORES), and long words
315
+ const quoted = [...text.matchAll(/'([^']+)'|"([^"]+)"/g)].map(m => m[1] ?? m[2]);
316
+ const errCodes = text.match(/[A-Z][A-Z0-9_]{3,}/g) ?? [];
317
+ const words = text.toLowerCase().replace(/[^\w\s]/g, ' ').split(/\s+/).filter(w => w.length > 5);
318
+ return [...new Set([...quoted, ...errCodes, ...words])].slice(0, 12);
319
+ }
320
+ // ── Singleton ─────────────────────────────────────────────────────────────────
334
321
  let summarizationInstance = null;
335
322
  function getSummarizationEngine() {
336
- if (!summarizationInstance) {
323
+ if (!summarizationInstance)
337
324
  summarizationInstance = new SummarizationEngine();
338
- }
339
325
  return summarizationInstance;
340
326
  }
341
327
  //# sourceMappingURL=summarizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarizer.js","sourceRoot":"","sources":["../../../src/core/summarizer/summarizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summarizer.js","sourceRoot":"","sources":["../../../src/core/summarizer/summarizer.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,7 @@ export interface FlowStep {
86
86
  description: string;
87
87
  file: string;
88
88
  symbol?: string;
89
+ snippet?: string;
89
90
  }
90
91
  export interface BugTraceResult {
91
92
  likelyCauses: BugCause[];
@@ -100,6 +101,7 @@ export interface BugCause {
100
101
  type: 'missing_guard' | 'unsafe_state' | 'race_condition' | 'null_undefined' | 'type_mismatch' | 'logic_error' | 'other';
101
102
  file?: string;
102
103
  symbol?: string;
104
+ snippet?: string;
103
105
  }
104
106
  export interface ImplementationPlan {
105
107
  steps: PlanStep[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simpletoolsindiaorg/engi-mcp",
3
- "version": "1.1.1",
3
+ "version": "1.2.1",
4
4
  "description": "Software Engineering Intelligence MCP Server — 97% token reduction for Claude Code. 12 tools + 7 resources for scoped file discovery, flow summaries, bug tracing, planning, and multi-session memory.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",