spec-gen-cli 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,295 @@
1
+ /**
2
+ * SpecVectorIndex
3
+ *
4
+ * Builds and queries a LanceDB vector index over OpenSpec spec files.
5
+ * Each record represents a logical section (requirement, purpose, design note...)
6
+ * parsed from the Markdown spec files.
7
+ *
8
+ * Storage: <outputDir>/vector-index/ (same LanceDB folder as VectorIndex, different table)
9
+ * Table name: "specs"
10
+ *
11
+ * Usage:
12
+ * // Build (or rebuild)
13
+ * await SpecVectorIndex.build(outputDir, specsDir, mappingJson, embedSvc);
14
+ *
15
+ * // Search
16
+ * const results = await SpecVectorIndex.search(outputDir, "email validation", embedSvc);
17
+ */
18
+ import { existsSync } from 'node:fs';
19
+ import { readdir, readFile } from 'node:fs/promises';
20
+ import { join, basename, dirname } from 'node:path';
21
+ // ============================================================================
22
+ // CONSTANTS
23
+ // ============================================================================
24
+ const DB_FOLDER = 'vector-index';
25
+ const TABLE_NAME = 'specs';
26
+ /**
27
+ * Parse a spec Markdown file into logical sections.
28
+ * Each H2 becomes a section; H3 within Requirements becomes individual items.
29
+ */
30
+ function parseSpecFile(markdown) {
31
+ const lines = markdown.split('\n');
32
+ const results = [];
33
+ let currentH2 = '';
34
+ let currentH2Section = '';
35
+ let currentH3 = '';
36
+ let currentH3Key = '';
37
+ let buffer = [];
38
+ const flush = () => {
39
+ const content = buffer.join('\n').trim();
40
+ if (!content)
41
+ return;
42
+ if (currentH3 && currentH2Section === 'requirements') {
43
+ results.push({
44
+ section: 'requirements',
45
+ title: currentH3,
46
+ content,
47
+ requirementKey: currentH3Key,
48
+ });
49
+ }
50
+ else if (currentH2) {
51
+ results.push({
52
+ section: currentH2Section,
53
+ title: currentH2,
54
+ content,
55
+ });
56
+ }
57
+ buffer = [];
58
+ };
59
+ for (const line of lines) {
60
+ // Skip generator comment lines
61
+ if (line.startsWith('> Generated by'))
62
+ continue;
63
+ if (line.startsWith('> Source files:'))
64
+ continue;
65
+ const h2Match = line.match(/^## (.+)/);
66
+ const h3Match = line.match(/^### (.+)/);
67
+ if (h2Match) {
68
+ flush();
69
+ currentH2 = h2Match[1].trim();
70
+ currentH2Section = slugifySection(currentH2);
71
+ currentH3 = '';
72
+ currentH3Key = '';
73
+ }
74
+ else if (h3Match && currentH2Section === 'requirements') {
75
+ flush();
76
+ currentH3 = h3Match[1].trim();
77
+ currentH3Key = slugifyRequirement(currentH3);
78
+ }
79
+ else if (!line.startsWith('# ')) {
80
+ // Skip H1 (spec title handled by filename/domain)
81
+ buffer.push(line);
82
+ }
83
+ }
84
+ flush();
85
+ return results;
86
+ }
87
+ function slugifySection(title) {
88
+ const lower = title.toLowerCase();
89
+ if (lower.includes('purpose'))
90
+ return 'purpose';
91
+ if (lower.includes('entit'))
92
+ return 'entities';
93
+ if (lower.includes('requirement'))
94
+ return 'requirements';
95
+ if (lower.includes('design'))
96
+ return 'design';
97
+ if (lower.includes('architecture'))
98
+ return 'architecture';
99
+ if (lower.includes('sub-component') || lower.includes('subcomponent'))
100
+ return 'subcomponents';
101
+ return lower.replace(/[^a-z0-9]+/g, '_').replace(/^_|_$/g, '');
102
+ }
103
+ /** Extract requirement key from "Requirement: MapSomething" -> "mapSomething" */
104
+ function slugifyRequirement(title) {
105
+ const withoutPrefix = title.replace(/^Requirement:\s*/i, '').trim();
106
+ // camelCase -> first char lowercase
107
+ return withoutPrefix.charAt(0).toLowerCase() + withoutPrefix.slice(1);
108
+ }
109
+ // ============================================================================
110
+ // MAPPING INDEX
111
+ // ============================================================================
112
+ /**
113
+ * Build a lookup: "domain:requirementKey" -> string[] of source files.
114
+ * Filters out wildcard entries (*) and deduplicates.
115
+ */
116
+ function buildMappingIndex(mappings) {
117
+ const index = new Map();
118
+ for (const m of mappings) {
119
+ const key = `${m.domain}:${m.requirement}`;
120
+ const files = (m.functions ?? [])
121
+ .map(f => f.file)
122
+ .filter(f => f && f !== '*');
123
+ if (files.length > 0) {
124
+ const existing = index.get(key) ?? [];
125
+ const merged = [...new Set([...existing, ...files])];
126
+ index.set(key, merged);
127
+ }
128
+ }
129
+ return index;
130
+ }
131
+ // ============================================================================
132
+ // TEXT BUILDER
133
+ // ============================================================================
134
+ function buildText(domain, section) {
135
+ const parts = [`[spec:${domain}] ${section.title}`];
136
+ if (section.content)
137
+ parts.push(section.content);
138
+ return parts.join('\n');
139
+ }
140
+ // ============================================================================
141
+ // SPEC VECTOR INDEX
142
+ // ============================================================================
143
+ export class SpecVectorIndex {
144
+ /**
145
+ * Discover all spec.md files under specsDir, parse them, enrich with mapping,
146
+ * embed, and write to LanceDB table "specs".
147
+ *
148
+ * @param outputDir Path to .spec-gen/analysis/
149
+ * @param specsDir Path to openspec/specs/ (or any directory containing domain/spec.md files)
150
+ * @param mappingJsonPath Path to mapping.json (optional -- no enrichment if absent)
151
+ */
152
+ static async build(outputDir, specsDir, embedSvc, mappingJsonPath) {
153
+ const { connect } = await import('@lancedb/lancedb');
154
+ // Load mapping index (optional)
155
+ let mappingIndex = new Map();
156
+ if (mappingJsonPath && existsSync(mappingJsonPath)) {
157
+ try {
158
+ const raw = JSON.parse(await readFile(mappingJsonPath, 'utf-8'));
159
+ mappingIndex = buildMappingIndex((raw.mappings ?? []));
160
+ }
161
+ catch {
162
+ // non-fatal -- proceed without enrichment
163
+ }
164
+ }
165
+ // Discover spec files
166
+ const specFiles = await findSpecFiles(specsDir);
167
+ if (specFiles.length === 0) {
168
+ throw new Error(`No spec.md files found in ${specsDir}`);
169
+ }
170
+ // Parse all specs into records (without vectors)
171
+ const records = [];
172
+ for (const specFile of specFiles) {
173
+ const domain = basename(dirname(specFile));
174
+ let markdown;
175
+ try {
176
+ markdown = await readFile(specFile, 'utf-8');
177
+ }
178
+ catch {
179
+ continue;
180
+ }
181
+ const sections = parseSpecFile(markdown);
182
+ for (const sec of sections) {
183
+ const reqKey = sec.requirementKey ?? sec.section;
184
+ const mappingKey = `${domain}:${reqKey}`;
185
+ const linkedFiles = mappingIndex.get(mappingKey) ?? [];
186
+ const id = sec.requirementKey
187
+ ? `${domain}.${sec.requirementKey}`
188
+ : `${domain}.${sec.section}`;
189
+ const text = buildText(domain, sec);
190
+ records.push({
191
+ id,
192
+ domain,
193
+ section: sec.section,
194
+ title: sec.title,
195
+ text,
196
+ linkedFiles: JSON.stringify(linkedFiles),
197
+ });
198
+ }
199
+ }
200
+ if (records.length === 0) {
201
+ throw new Error('No spec sections could be parsed');
202
+ }
203
+ // Batch-embed
204
+ const texts = records.map(r => r.text);
205
+ const vectors = await embedSvc.embed(texts);
206
+ if (vectors.length !== records.length) {
207
+ throw new Error(`Embedding count mismatch: expected ${records.length}, got ${vectors.length}`);
208
+ }
209
+ const fullRecords = records.map((r, i) => ({
210
+ ...r,
211
+ vector: vectors[i],
212
+ }));
213
+ // Write to LanceDB (same DB folder, table "specs")
214
+ const dbPath = join(outputDir, DB_FOLDER);
215
+ const db = await connect(dbPath);
216
+ await db.createTable(TABLE_NAME, fullRecords, { mode: 'overwrite' });
217
+ return { recordCount: fullRecords.length };
218
+ }
219
+ /**
220
+ * Semantic search over the spec index.
221
+ */
222
+ static async search(outputDir, query, embedSvc, opts = {}) {
223
+ const { connect } = await import('@lancedb/lancedb');
224
+ const { limit = 10, domain, section } = opts;
225
+ if (!SpecVectorIndex.exists(outputDir)) {
226
+ throw new Error('No spec index found. Run "spec-gen analyze --embed" or "spec-gen analyze --reindex-specs" first.');
227
+ }
228
+ const [queryVector] = await embedSvc.embed([query]);
229
+ if (!queryVector)
230
+ throw new Error('Failed to embed query');
231
+ const dbPath = join(outputDir, DB_FOLDER);
232
+ const db = await connect(dbPath);
233
+ const table = await db.openTable(TABLE_NAME);
234
+ const fetchLimit = Math.min(limit * 10, 500);
235
+ const rows = await table.query().nearestTo(queryVector).limit(fetchLimit).toArray();
236
+ const filtered = rows
237
+ .filter(row => {
238
+ if (domain && row.domain !== domain)
239
+ return false;
240
+ if (section && row.section !== section)
241
+ return false;
242
+ return true;
243
+ })
244
+ .slice(0, limit);
245
+ return filtered.map(row => {
246
+ let linkedFiles = [];
247
+ try {
248
+ linkedFiles = JSON.parse(row.linkedFiles);
249
+ }
250
+ catch { /* ignore */ }
251
+ return {
252
+ record: {
253
+ id: row.id,
254
+ domain: row.domain,
255
+ section: row.section,
256
+ title: row.title,
257
+ text: row.text,
258
+ linkedFiles,
259
+ },
260
+ score: row._distance,
261
+ };
262
+ });
263
+ }
264
+ /**
265
+ * Returns true if the spec index table exists.
266
+ */
267
+ static exists(outputDir) {
268
+ // LanceDB stores each table as a subfolder inside the DB folder
269
+ return existsSync(join(outputDir, DB_FOLDER, `${TABLE_NAME}.lance`));
270
+ }
271
+ }
272
+ // ============================================================================
273
+ // HELPERS
274
+ // ============================================================================
275
+ async function findSpecFiles(specsDir) {
276
+ if (!existsSync(specsDir))
277
+ return [];
278
+ const results = [];
279
+ let entries;
280
+ try {
281
+ entries = await readdir(specsDir);
282
+ }
283
+ catch {
284
+ return [];
285
+ }
286
+ for (const entry of entries) {
287
+ const domainDir = join(specsDir, entry);
288
+ const specFile = join(domainDir, 'spec.md');
289
+ if (existsSync(specFile)) {
290
+ results.push(specFile);
291
+ }
292
+ }
293
+ return results;
294
+ }
295
+ //# sourceMappingURL=spec-vector-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-vector-index.js","sourceRoot":"","sources":["../../../src/core/analyzer/spec-vector-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpD,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,SAAS,GAAG,cAAc,CAAC;AACjC,MAAM,UAAU,GAAG,OAAO,CAAC;AAsB3B;;;GAGG;AACH,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,MAAM,GAAa,EAAE,CAAC;IAE1B,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,SAAS,IAAI,gBAAgB,KAAK,cAAc,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC;gBACX,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE,SAAS;gBAChB,OAAO;gBACP,cAAc,EAAE,YAAY;aAC7B,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC;gBACX,OAAO,EAAE,gBAAgB;gBACzB,KAAK,EAAE,SAAS;gBAChB,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,EAAE,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,+BAA+B;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAAE,SAAS;QAChD,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAAE,SAAS;QAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAExC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,EAAE,CAAC;YACR,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YAC7C,SAAS,GAAG,EAAE,CAAC;YACf,YAAY,GAAG,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,OAAO,IAAI,gBAAgB,KAAK,cAAc,EAAE,CAAC;YAC1D,KAAK,EAAE,CAAC;YACR,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,kDAAkD;YAClD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC;IAER,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,UAAU,CAAC;IAC/C,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,cAAc,CAAC;IACzD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,cAAc,CAAC;IAC1D,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,eAAe,CAAC;IAC9F,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,iFAAiF;AACjF,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,oCAAoC;IACpC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,iBAAiB,CAAC,QAAwB;IACjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACrD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,SAAS,SAAS,CAAC,MAAc,EAAE,OAAsB;IACvD,MAAM,KAAK,GAAG,CAAC,SAAS,MAAM,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,OAAO,eAAe;IAC1B;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,SAAiB,EACjB,QAAgB,EAChB,QAA0B,EAC1B,eAAwB;QAExB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAErD,gCAAgC;QAChC,IAAI,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC/C,IAAI,eAAe,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBACjE,YAAY,GAAG,iBAAiB,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAmB,CAAC,CAAC;YAC3E,CAAC;YAAC,MAAM,CAAC;gBACP,0CAA0C;YAC5C,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,iDAAiD;QACjD,MAAM,OAAO,GAAiC,EAAE,CAAC;QAEjD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3C,IAAI,QAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEzC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,OAAO,CAAC;gBACjD,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;gBACzC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAEvD,MAAM,EAAE,GAAG,GAAG,CAAC,cAAc;oBAC3B,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE;oBACnC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAE/B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAEpC,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE;oBACF,MAAM;oBACN,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,IAAI;oBACJ,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;iBACzC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,cAAc;QACd,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,WAAW,GAAiB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,GAAG,CAAC;YACJ,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SACnB,CAAC,CAAC,CAAC;QAEJ,mDAAmD;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,WAAmD,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAE7G,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,SAAiB,EACjB,KAAa,EACb,QAA0B,EAC1B,OAII,EAAE;QAEN,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAErD,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAE7C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAC;QACtH,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QAEpF,MAAM,QAAQ,GAAG,IAAI;aAClB,MAAM,CAAC,GAAG,CAAC,EAAE;YACZ,IAAI,MAAM,IAAK,GAAG,CAAC,MAAiB,KAAK,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC9D,IAAI,OAAO,IAAK,GAAG,CAAC,OAAkB,KAAK,OAAO;gBAAE,OAAO,KAAK,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEnB,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,WAAW,GAAa,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAqB,CAAa,CAAC;YAClE,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAExB,OAAO;gBACL,MAAM,EAAE;oBACN,EAAE,EAAE,GAAG,CAAC,EAAY;oBACpB,MAAM,EAAE,GAAG,CAAC,MAAgB;oBAC5B,OAAO,EAAE,GAAG,CAAC,OAAiB;oBAC9B,KAAK,EAAE,GAAG,CAAC,KAAe;oBAC1B,IAAI,EAAE,GAAG,CAAC,IAAc;oBACxB,WAAW;iBACZ;gBACD,KAAK,EAAE,GAAG,CAAC,SAAmB;aAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,SAAiB;QAC7B,gEAAgE;QAChE,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,UAAU,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC;CACF;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * ChatAgent agentic tool-use loop for the diagram chatbot.
2
+ * ChatAgent -- agentic tool-use loop for the diagram chatbot.
3
3
  *
4
4
  * Supports three provider formats:
5
5
  * - Anthropic Claude (tool_use / tool_result via /v1/messages)
@@ -7,13 +7,13 @@
7
7
  * - Google Gemini (function calling via generateContent)
8
8
  *
9
9
  * Provider resolution (same priority as generate.ts):
10
- * 1. GEMINI_API_KEY Gemini
11
- * 2. ANTHROPIC_API_KEY Anthropic Claude
12
- * 3. OPENAI_COMPAT_BASE_URL any OpenAI-compatible endpoint
13
- * 4. specGenConfig.generation reads provider + openaiCompatBaseUrl from config
14
- * 5. OPENAI_API_KEY OpenAI directly
10
+ * 1. GEMINI_API_KEY -> Gemini
11
+ * 2. ANTHROPIC_API_KEY -> Anthropic Claude
12
+ * 3. OPENAI_COMPAT_BASE_URL -> any OpenAI-compatible endpoint
13
+ * 4. specGenConfig.generation -> reads provider + openaiCompatBaseUrl from config
14
+ * 5. OPENAI_API_KEY -> OpenAI directly
15
15
  *
16
- * Model: OPENAI_COMPAT_MODEL env var specGenConfig.generation.model provider default.
16
+ * Model: OPENAI_COMPAT_MODEL env var -> specGenConfig.generation.model -> provider default.
17
17
  *
18
18
  * Max iterations: 8 (prevents runaway loops).
19
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chat-agent.d.ts","sourceRoot":"","sources":["../../../src/core/services/chat-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyEH,KAAK,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC;AAE7D,UAAU,cAAc;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA+CtF;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAqSD,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAQtF"}
1
+ {"version":3,"file":"chat-agent.d.ts","sourceRoot":"","sources":["../../../src/core/services/chat-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyEH,KAAK,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC;AAE7D,UAAU,cAAc;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA+CtF;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAmTD,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAQtF"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * ChatAgent agentic tool-use loop for the diagram chatbot.
2
+ * ChatAgent -- agentic tool-use loop for the diagram chatbot.
3
3
  *
4
4
  * Supports three provider formats:
5
5
  * - Anthropic Claude (tool_use / tool_result via /v1/messages)
@@ -7,13 +7,13 @@
7
7
  * - Google Gemini (function calling via generateContent)
8
8
  *
9
9
  * Provider resolution (same priority as generate.ts):
10
- * 1. GEMINI_API_KEY Gemini
11
- * 2. ANTHROPIC_API_KEY Anthropic Claude
12
- * 3. OPENAI_COMPAT_BASE_URL any OpenAI-compatible endpoint
13
- * 4. specGenConfig.generation reads provider + openaiCompatBaseUrl from config
14
- * 5. OPENAI_API_KEY OpenAI directly
10
+ * 1. GEMINI_API_KEY -> Gemini
11
+ * 2. ANTHROPIC_API_KEY -> Anthropic Claude
12
+ * 3. OPENAI_COMPAT_BASE_URL -> any OpenAI-compatible endpoint
13
+ * 4. specGenConfig.generation -> reads provider + openaiCompatBaseUrl from config
14
+ * 5. OPENAI_API_KEY -> OpenAI directly
15
15
  *
16
- * Model: OPENAI_COMPAT_MODEL env var specGenConfig.generation.model provider default.
16
+ * Model: OPENAI_COMPAT_MODEL env var -> specGenConfig.generation.model -> provider default.
17
17
  *
18
18
  * Max iterations: 8 (prevents runaway loops).
19
19
  */
@@ -70,9 +70,23 @@ function buildSystemPrompt(directory) {
70
70
  The project directory is: ${directory}
71
71
  You have access to tools that query the codebase's static analysis data.
72
72
  When calling tools, always pass directory="${directory}" -- never ask the user for it.
73
- When the user asks a question, use the appropriate tools to gather information,
74
- then synthesise a clear, concise answer. Always explain what the highlighted files/functions are.
75
- Keep replies focused and actionable. Use markdown for code and lists.`;
73
+
74
+ ## Reasoning strategy
75
+
76
+ **For questions about features, requirements, or intended behaviour** (e.g. "how does X work?",
77
+ "where should we implement Y?", "which spec covers Z?"):
78
+ 1. Start with search_specs to find relevant requirements and design notes.
79
+ 2. Use the linkedFiles from the results to identify the related source files.
80
+ 3. Follow up with get_subgraph or analyze_impact on those files if more detail is needed.
81
+
82
+ **For questions about code structure, hubs, or refactoring**:
83
+ Start with get_architecture_overview, get_call_graph, or get_critical_hubs.
84
+
85
+ **For semantic code search** (e.g. "find the function that validates emails"):
86
+ Use search_code.
87
+
88
+ Always explain what the highlighted files/functions are. Keep replies focused and actionable.
89
+ Use markdown for code and lists.`;
76
90
  }
77
91
  async function executeTool(toolMap, directory, name, args, callbacks) {
78
92
  callbacks?.onToolStart?.(name);
@@ -161,7 +175,7 @@ async function runGeminiLoop(cfg, directory, messages, callbacks, signal) {
161
175
  description: t.description,
162
176
  parameters: t.inputSchema,
163
177
  }));
164
- // Convert history to Gemini content format (no system role handled separately)
178
+ // Convert history to Gemini content format (no system role -- handled separately)
165
179
  const contents = messages.map(m => ({
166
180
  role: m.role === 'assistant' ? 'model' : 'user',
167
181
  parts: [{ text: m.content }],
@@ -193,7 +207,7 @@ async function runGeminiLoop(cfg, directory, messages, callbacks, signal) {
193
207
  // Append model turn
194
208
  contents.push({ role: 'model', parts });
195
209
  if (fnCalls.length === 0) {
196
- // Final answer join all text parts
210
+ // Final answer -- join all text parts
197
211
  const reply = textParts.map(p => p.text).join('').trim();
198
212
  return { reply: reply || '(no response)', filePaths: [...new Set(allFilePaths)] };
199
213
  }
@@ -213,7 +227,7 @@ async function runGeminiLoop(cfg, directory, messages, callbacks, signal) {
213
227
  }
214
228
  contents.push({ role: 'user', parts: responseParts });
215
229
  }
216
- // Max iterations extract last model text
230
+ // Max iterations -- extract last model text
217
231
  const lastModel = [...contents].reverse().find(c => c.role === 'model');
218
232
  const lastText = lastModel?.parts.filter((p) => 'text' in p).map(p => p.text).join('') ?? '';
219
233
  return {
@@ -280,7 +294,7 @@ async function runAnthropicLoop(cfg, directory, messages, callbacks, signal) {
280
294
  }
281
295
  history.push({ role: 'user', content: resultBlocks });
282
296
  }
283
- // Max iterations extract last assistant text
297
+ // Max iterations -- extract last assistant text
284
298
  const lastAssistant = [...history].reverse().find(m => m.role === 'assistant');
285
299
  const lastText = Array.isArray(lastAssistant?.content)
286
300
  ? lastAssistant.content
@@ -1 +1 @@
1
- {"version":3,"file":"chat-agent.js","sourceRoot":"","sources":["../../../src/core/services/chat-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-agent.js","sourceRoot":"","sources":["../../../src/core/services/chat-agent.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  * Tool registry for the diagram chatbot.
3
3
  *
4
4
  * Each entry in CHAT_TOOLS maps a tool name to:
5
- * - description / inputSchema forwarded to the LLM as tool definitions
6
- * - execute() calls the matching handler and returns
5
+ * - description / inputSchema -- forwarded to the LLM as tool definitions
6
+ * - execute() -- calls the matching handler and returns
7
7
  * { result, filePaths } where filePaths is
8
8
  * the list of source files to highlight in
9
9
  * the dependency graph.
@@ -1 +1 @@
1
- {"version":3,"file":"chat-tools.d.ts","sourceRoot":"","sources":["../../../src/core/services/chat-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAwBH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACtD;AAmCD,eAAO,MAAM,UAAU,EAAE,QAAQ,EAqPhC,CAAC;AAMF,gEAAgE;AAChE,wBAAgB,qBAAqB;;;;;;;IASpC"}
1
+ {"version":3,"file":"chat-tools.d.ts","sourceRoot":"","sources":["../../../src/core/services/chat-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA0BH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACtD;AAmCD,eAAO,MAAM,UAAU,EAAE,QAAQ,EAoThC,CAAC;AAMF,gEAAgE;AAChE,wBAAgB,qBAAqB;;;;;;;IASpC"}
@@ -2,8 +2,8 @@
2
2
  * Tool registry for the diagram chatbot.
3
3
  *
4
4
  * Each entry in CHAT_TOOLS maps a tool name to:
5
- * - description / inputSchema forwarded to the LLM as tool definitions
6
- * - execute() calls the matching handler and returns
5
+ * - description / inputSchema -- forwarded to the LLM as tool definitions
6
+ * - execute() -- calls the matching handler and returns
7
7
  * { result, filePaths } where filePaths is
8
8
  * the list of source files to highlight in
9
9
  * the dependency graph.
@@ -11,7 +11,7 @@
11
11
  * To add a future MCP tool: add one entry here pointing to any handler.
12
12
  */
13
13
  import { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetCriticalHubs, handleGetGodFunctions, } from './mcp-handlers/graph.js';
14
- import { handleSearchCode, handleSuggestInsertionPoints, } from './mcp-handlers/semantic.js';
14
+ import { handleSearchCode, handleSuggestInsertionPoints, handleSearchSpecs, handleListSpecDomains, } from './mcp-handlers/semantic.js';
15
15
  import { handleGetArchitectureOverview, handleGetRefactorReport, } from './mcp-handlers/analysis.js';
16
16
  // ============================================================================
17
17
  // HELPERS
@@ -234,6 +234,60 @@ export const CHAT_TOOLS = [
234
234
  return { result, filePaths: [...new Set(paths)] };
235
235
  },
236
236
  },
237
+ // ── List spec domains ────────────────────────────────────────────────────
238
+ {
239
+ name: 'list_spec_domains',
240
+ description: 'List all OpenSpec domains available in this project. ' +
241
+ 'Use this first when the user asks a broad spec question and you need to discover ' +
242
+ 'what domains exist before doing a targeted search_specs call.',
243
+ inputSchema: {
244
+ type: 'object',
245
+ properties: {
246
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
247
+ },
248
+ required: ['directory'],
249
+ },
250
+ async execute(directory, args) {
251
+ const result = await handleListSpecDomains(args.directory ?? directory);
252
+ return { result, filePaths: [] };
253
+ },
254
+ },
255
+ // ── Spec semantic search ─────────────────────────────────────────────────
256
+ {
257
+ name: 'search_specs',
258
+ description: 'Semantic search over OpenSpec specifications to find requirements, design notes, ' +
259
+ 'and architecture decisions by meaning. Returns linked source files for graph highlighting. ' +
260
+ 'Use this when the user asks "which spec covers X?", "what requirement describes Y?", ' +
261
+ 'or "where should we implement Z?" (spec-first approach). ' +
262
+ 'Requires a spec index (spec-gen analyze --embed or --reindex-specs).',
263
+ inputSchema: {
264
+ type: 'object',
265
+ properties: {
266
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
267
+ query: { type: 'string', description: 'Natural language search query' },
268
+ limit: { type: 'number', description: 'Results to return (default: 10)' },
269
+ domain: { type: 'string', description: 'Filter by domain name (e.g. "auth", "analyzer")' },
270
+ section: {
271
+ type: 'string',
272
+ description: 'Filter by section type: "requirements", "purpose", "design", "architecture", "entities"',
273
+ },
274
+ },
275
+ required: ['directory', 'query'],
276
+ },
277
+ async execute(directory, args) {
278
+ const result = await handleSearchSpecs(args.directory ?? directory, args.query, args.limit ?? 10, args.domain, args.section);
279
+ // linkedFiles arrays are returned per result -- collect all for graph highlighting
280
+ const paths = [];
281
+ if (result && typeof result === 'object') {
282
+ const r = result;
283
+ for (const res of r.results ?? []) {
284
+ for (const f of res.linkedFiles ?? [])
285
+ paths.push(f);
286
+ }
287
+ }
288
+ return { result, filePaths: [...new Set(paths)] };
289
+ },
290
+ },
237
291
  // ── Refactor report ──────────────────────────────────────────────────────
238
292
  {
239
293
  name: 'get_refactor_report',
@@ -1 +1 @@
1
- {"version":3,"file":"chat-tools.js","sourceRoot":"","sources":["../../../src/core/services/chat-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-tools.js","sourceRoot":"","sources":["../../../src/core/services/chat-tools.ts"],"names":[],"mappings":"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"}