@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 +27 -0
- package/README.md +75 -16
- package/dist/core/rag/index.d.ts +3 -0
- package/dist/core/rag/index.d.ts.map +1 -0
- package/dist/core/rag/index.js +7 -0
- package/dist/core/rag/index.js.map +1 -0
- package/dist/core/rag/rag.d.ts +38 -0
- package/dist/core/rag/rag.d.ts.map +1 -0
- package/dist/core/rag/rag.js +260 -0
- package/dist/core/rag/rag.js.map +1 -0
- package/dist/core/summarizer/summarizer.d.ts +0 -10
- package/dist/core/summarizer/summarizer.d.ts.map +1 -1
- package/dist/core/summarizer/summarizer.js +200 -214
- package/dist/core/summarizer/summarizer.js.map +1 -1
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/package.json +1 -1
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
|
[](https://modelcontextprotocol.io)
|
|
19
19
|
[](LICENSE)
|
|
20
20
|
[](src/)
|
|
21
|
-
[](#-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
|
|
35
|
-
WITH engi-mcp: 3 tool calls →
|
|
34
|
+
WITHOUT engi-mcp: Claude reads 30 files → 20,842 tokens
|
|
35
|
+
WITH engi-mcp: 3 tool calls → 528 tokens
|
|
36
36
|
─────────────────────────
|
|
37
|
-
SAVED:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 @@
|
|
|
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":"
|
|
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 -
|
|
39
|
-
|
|
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
|
|
48
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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,
|
|
102
|
-
entryPoint: options.entryPoint
|
|
103
|
-
handle: this.generateHandle('flow',
|
|
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
|
|
111
|
-
|
|
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
|
-
//
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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.
|
|
130
|
-
likelyCauses.push({
|
|
131
|
-
description: '
|
|
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.
|
|
137
|
-
likelyCauses.push({
|
|
138
|
-
description: '
|
|
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.
|
|
144
|
-
likelyCauses.push({
|
|
145
|
-
description: '
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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.
|
|
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
|
|
189
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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:
|
|
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,
|
|
259
|
+
examples: examples.slice(0, DOC_MAX_EXAMPLES),
|
|
241
260
|
audienceNotes,
|
|
242
|
-
handle: this.generateHandle('doc', options.feature
|
|
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
|
-
|
|
281
|
-
|
|
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 [
|
|
294
|
-
if (file.imports.some(imp => imp === filePath ||
|
|
295
|
-
importers.push(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
325
|
-
case '
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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
|
-
//
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkVA,wDAGC;AArVD,2EAA2E;AAC3E,gFAAgF;AAChF,mEAAmE;AACnE,2CAA6B;AAW7B,sDAAmD;AACnD,0CAA6C;AAE7C,gFAAgF;AAChF,gEAAgE;AAChE,MAAM,iBAAiB,GAAI,CAAC,CAAC,CAAG,0CAA0C;AAC1E,MAAM,gBAAgB,GAAK,CAAC,CAAC,CAAG,uCAAuC;AACvE,MAAM,gBAAgB,GAAK,CAAC,CAAC,CAAG,oCAAoC;AACpE,MAAM,iBAAiB,GAAI,EAAE,CAAC,CAAE,kCAAkC;AAElE,MAAa,mBAAmB;IAE9B,+EAA+E;IAE/E,KAAK,CAAC,mBAAmB,CAAC,OAIzB;QACC,MAAM,KAAK,GAAG,IAAA,uBAAU,GAAE,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;YACzB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAU;YACrE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEnF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC;QAClD,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,4EAA4E;QAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9F,MAAM,SAAS,GAAI,IAAA,qBAAY,GAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE;YAC5D,KAAK,EAAE,UAAU;YACjB,IAAI,EAAG,iBAAiB;SACzB,CAAC,CAAC;QACH,+CAA+C;QAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC;QAED,4EAA4E;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAS,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAE5D,uDAAuD;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,WAAmB,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,WAAW,GAAG,UAAU,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,WAAW,GAAG,GAAG,IAAI,CAAC,IAAI,YAAY,UAAU,CAAC,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrH,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;YAED,MAAM,IAAI,GAAa;gBACrB,KAAK,EAAG,CAAC,GAAG,CAAC;gBACb,WAAW;gBACX,IAAI,EAAI,IAAI,CAAC,IAAI;gBACjB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;aACxB,CAAC;YAEF,wEAAwE;YACxE,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,iBAAiB,CAAC,CAAC;YAC1E,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjB,sBAAsB;YACtB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QACtF,CAAC;QAED,OAAO;YACL,OAAO,EAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC;YACtD,KAAK;YACL,QAAQ,EAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACzC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI;YAChD,MAAM,EAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED,+EAA+E;IAE/E,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,KAAgB;QAC9C,MAAM,KAAK,GAAG,IAAA,uBAAU,GAAE,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;QAExC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAe,EAAE,CAAC;QACpC,MAAM,YAAY,GAAI,IAAI,GAAG,EAAU,CAAC;QACxC,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,4EAA4E;QAC5E,IAAI,YAAY,CAAC,KAAK,CAAC,8CAA8C,CAAC,EAAE,CAAC;YACvE,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI;gBAC1D,WAAW,EAAE,4EAA4E,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,YAAY,CAAC,KAAK,CAAC,oCAAoC,CAAC,EAAE,CAAC;YAC7D,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI;gBAC1D,WAAW,EAAE,yEAAyE,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,YAAY,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC;YACtD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI;gBACzD,WAAW,EAAE,gEAAgE,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,YAAY,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC;YACrD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI;gBACvD,WAAW,EAAE,8CAA8C,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,YAAY,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC;YACtD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI;gBACxD,WAAW,EAAE,iFAAiF,EAAE,CAAC,CAAC;QACtG,CAAC;QAED,4EAA4E;QAC5E,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAK,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAK,IAAA,qBAAY,GAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE;YACnE,KAAK,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACrD,IAAI,EAAG,gBAAgB;SACxB,CAAC,CAAC;QAEH,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,IAAA,qBAAY,GAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;YACvD,KAAK,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACrD,IAAI,EAAG,gBAAgB;SACxB,CAAC,CAAC;QAEH,8EAA8E;QAC9E,MAAM,IAAI,GAAM,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,MAAM,GAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACpD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAE9B,4EAA4E;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAExD,+CAA+C;YAC/C,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC5B,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,GAAM,KAAK,CAAC,IAAI,CAAC;gBACrC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,GAAI,KAAK,CAAC,MAAM,CAAC;gBACvC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACN,yEAAyE;gBACzE,YAAY,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAS,OAAO;oBACpB,UAAU,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;oBACvC,WAAW,EAAE,oBAAoB,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,EAAE;oBACjF,IAAI,EAAS,KAAK,CAAC,IAAI;oBACvB,MAAM,EAAO,KAAK,CAAC,MAAM;oBACzB,OAAO,EAAM,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC;iBAC1D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,KAAK;gBACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAU;gBAC7D,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;oBAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAEhG,OAAO;YACL,YAAY;YACZ,YAAY,EAAI,CAAC,GAAG,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC9C,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC3C,UAAU;YACV,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,+EAA+E;IAE/E,KAAK,CAAC,eAAe,CAAC,OAIrB;QACC,MAAM,KAAK,GAAG,IAAA,uBAAU,GAAE,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QAE1C,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,IAAI,mBAAmB,CAAC;QAC9D,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY;YACtC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAU;YAC5E,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAElF,4EAA4E;QAC5E,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvB,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,aAAa,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACtF,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,MAAM,QAAQ,GAAI,cAAc,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5H,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,SAAS,GAAI,IAAA,qBAAY,GAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE;YAC1D,KAAK,EAAE,UAAU;YACjB,IAAI,EAAG,gBAAgB;SACxB,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAK,GAAG,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,IAAI,EAAE;gBAC3C,IAAI,EAAM,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBACtD,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,MAAM,aAAa,GAA2B,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC;QAC5C,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAEpE,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,cAAc;YACd,eAAe,EAAE,GAAG,WAAW,CAAC,MAAM,YAAY,YAAY,iBAAiB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9J,cAAc;YACd,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC;YAC7C,aAAa;YACb,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC;SAClE,CAAC;IACJ,CAAC;IAED,+EAA+E;IAEvE,gBAAgB;QACtB,OAAO,EAAE,OAAO,EAAE,uEAAuE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1J,CAAC;IAEO,aAAa;QACnB,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtG,CAAC;IAEO,eAAe;QACrB,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7H,CAAC;IAEO,mBAAmB,CAAC,KAAiB,EAAE,SAAiB;QAC9D,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,CAAC,MAAM,gBAAgB,CAAC;QAC1F,IAAI,SAAS,KAAK,UAAU;YAAE,OAAO,mBAAmB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpH,OAAO,cAAc,KAAK,CAAC,MAAM,eAAe,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IACjL,CAAC;IAEO,iBAAiB,CAAC,QAAgB,EAAE,KAAsB;QAChE,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,cAAc,CAAC,MAAc,EAAE,IAAY;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1F,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC;IAEO,oBAAoB,CAAC,QAAgB,EAAE,IAAqB;QAClE,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,CAAC,CAAG,OAAO,eAAe,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC;YACvH,KAAK,QAAQ,CAAC,CAAG,OAAO,cAAc,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC;YAChH,KAAK,KAAK,CAAC,CAAM,OAAO,mBAAmB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9I,KAAK,IAAI,CAAC,CAAO,OAAO,GAAG,IAAI,CAAC,MAAM,sCAAsC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChI,KAAK,IAAI,CAAC,CAAO,OAAO,sBAAsB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7F,OAAO,CAAC,CAAS,OAAO,GAAG,IAAI,CAAC,MAAM,wBAAwB,CAAC;QACjE,CAAC;IACH,CAAC;CACF;AAjSD,kDAiSC;AAED,iFAAiF;AAEjF,SAAS,UAAU,CAAC,IAAY,EAAE,GAAW;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;AACpF,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,MAAc;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,mFAAmF;IACnF,MAAM,MAAM,GAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,iFAAiF;AAEjF,IAAI,qBAAqB,GAA+B,IAAI,CAAC;AAE7D,SAAgB,sBAAsB;IACpC,IAAI,CAAC,qBAAqB;QAAE,qBAAqB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC9E,OAAO,qBAAqB,CAAC;AAC/B,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -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[];
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -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.
|
|
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",
|