@cesarandreslopez/occ 0.10.0 → 0.11.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.
- package/README.md +17 -3
- package/dist/src/cli.d.ts +16 -0
- package/dist/src/cli.js +46 -4
- package/dist/src/cli.js.map +1 -1
- package/dist/src/code/build.d.ts +22 -0
- package/dist/src/code/build.js +47 -13
- package/dist/src/code/build.js.map +1 -1
- package/dist/src/code/cache.js +30 -1
- package/dist/src/code/cache.js.map +1 -1
- package/dist/src/code/check.js +46 -6
- package/dist/src/code/check.js.map +1 -1
- package/dist/src/code/command.js +96 -68
- package/dist/src/code/command.js.map +1 -1
- package/dist/src/code/context.d.ts +54 -0
- package/dist/src/code/context.js +67 -0
- package/dist/src/code/context.js.map +1 -0
- package/dist/src/code/diff.d.ts +12 -2
- package/dist/src/code/diff.js +15 -3
- package/dist/src/code/diff.js.map +1 -1
- package/dist/src/code/discover.d.ts +2 -2
- package/dist/src/code/discover.js +8 -10
- package/dist/src/code/discover.js.map +1 -1
- package/dist/src/code/focus.js +34 -26
- package/dist/src/code/focus.js.map +1 -1
- package/dist/src/code/incremental.js +1 -1
- package/dist/src/code/incremental.js.map +1 -1
- package/dist/src/code/index-io.js +10 -2
- package/dist/src/code/index-io.js.map +1 -1
- package/dist/src/code/isolated-chunk-runner.js +17 -2
- package/dist/src/code/isolated-chunk-runner.js.map +1 -1
- package/dist/src/code/isolated-runner.js +17 -3
- package/dist/src/code/isolated-runner.js.map +1 -1
- package/dist/src/code/isolated.js +32 -6
- package/dist/src/code/isolated.js.map +1 -1
- package/dist/src/code/languages.js +23 -3
- package/dist/src/code/languages.js.map +1 -1
- package/dist/src/code/map.d.ts +47 -0
- package/dist/src/code/map.js +155 -12
- package/dist/src/code/map.js.map +1 -1
- package/dist/src/code/parsers.js +115 -36
- package/dist/src/code/parsers.js.map +1 -1
- package/dist/src/code/preview.js +24 -22
- package/dist/src/code/preview.js.map +1 -1
- package/dist/src/code/query.js +0 -0
- package/dist/src/code/query.js.map +1 -1
- package/dist/src/code/search.d.ts +39 -0
- package/dist/src/code/search.js +154 -0
- package/dist/src/code/search.js.map +1 -0
- package/dist/src/code/session.d.ts +6 -2
- package/dist/src/code/session.js +12 -4
- package/dist/src/code/session.js.map +1 -1
- package/dist/src/code/slim.d.ts +2 -0
- package/dist/src/code/slim.js +16 -1
- package/dist/src/code/slim.js.map +1 -1
- package/dist/src/code/store.d.ts +23 -0
- package/dist/src/code/store.js +61 -6
- package/dist/src/code/store.js.map +1 -1
- package/dist/src/code/tree-sitter.d.ts +1 -0
- package/dist/src/code/tree-sitter.js +11 -10
- package/dist/src/code/tree-sitter.js.map +1 -1
- package/dist/src/code/types.d.ts +3 -0
- package/dist/src/code/types.js +2 -0
- package/dist/src/code/types.js.map +1 -1
- package/dist/src/doc/batch.d.ts +2 -0
- package/dist/src/doc/batch.js +3 -1
- package/dist/src/doc/batch.js.map +1 -1
- package/dist/src/doc/discover.js +2 -2
- package/dist/src/doc/discover.js.map +1 -1
- package/dist/src/doc/inspect-odt.js +3 -1
- package/dist/src/doc/inspect-odt.js.map +1 -1
- package/dist/src/doc/inspect-pdf.d.ts +6 -0
- package/dist/src/doc/inspect-pdf.js +11 -1
- package/dist/src/doc/inspect-pdf.js.map +1 -1
- package/dist/src/doc/inspect.js +2 -2
- package/dist/src/doc/inspect.js.map +1 -1
- package/dist/src/doc/types.d.ts +1 -0
- package/dist/src/doc/types.js +7 -0
- package/dist/src/doc/types.js.map +1 -1
- package/dist/src/git/api.d.ts +2 -1
- package/dist/src/git/api.js +15 -9
- package/dist/src/git/api.js.map +1 -1
- package/dist/src/git/client.js +5 -1
- package/dist/src/git/client.js.map +1 -1
- package/dist/src/git/output.js +2 -1
- package/dist/src/git/output.js.map +1 -1
- package/dist/src/git/parse.js +131 -2
- package/dist/src/git/parse.js.map +1 -1
- package/dist/src/git/types.d.ts +5 -5
- package/dist/src/health.d.ts +8 -0
- package/dist/src/health.js +12 -0
- package/dist/src/health.js.map +1 -1
- package/dist/src/index.d.ts +14 -6
- package/dist/src/index.js +9 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/inspect/xlsx-cells.js +4 -2
- package/dist/src/inspect/xlsx-cells.js.map +1 -1
- package/dist/src/markdown/convert.d.ts +9 -0
- package/dist/src/markdown/convert.js +23 -1
- package/dist/src/markdown/convert.js.map +1 -1
- package/dist/src/parsers/odf.js +4 -2
- package/dist/src/parsers/odf.js.map +1 -1
- package/dist/src/skills/command.d.ts +6 -0
- package/dist/src/skills/command.js +18 -3
- package/dist/src/skills/command.js.map +1 -1
- package/dist/src/slide/inspect-odp.js +3 -2
- package/dist/src/slide/inspect-odp.js.map +1 -1
- package/dist/src/slide/inspect-pptx.js +4 -3
- package/dist/src/slide/inspect-pptx.js.map +1 -1
- package/dist/src/stats.js +3 -1
- package/dist/src/stats.js.map +1 -1
- package/dist/src/structure/extract.js +16 -3
- package/dist/src/structure/extract.js.map +1 -1
- package/dist/src/utils.d.ts +7 -0
- package/dist/src/utils.js +19 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/src/walker.js +15 -3
- package/dist/src/walker.js.map +1 -1
- package/dist/src/workspace/analyze.d.ts +3 -0
- package/dist/src/workspace/analyze.js +26 -15
- package/dist/src/workspace/analyze.js.map +1 -1
- package/dist/src/workspace/bundle.js +11 -3
- package/dist/src/workspace/bundle.js.map +1 -1
- package/dist/src/workspace/command.d.ts +6 -0
- package/dist/src/workspace/command.js +73 -44
- package/dist/src/workspace/command.js.map +1 -1
- package/dist/src/workspace/describe.js +22 -13
- package/dist/src/workspace/describe.js.map +1 -1
- package/dist/src/workspace/documents.d.ts +3 -0
- package/dist/src/workspace/documents.js +25 -14
- package/dist/src/workspace/documents.js.map +1 -1
- package/dist/src/workspace/prepare.js +3 -1
- package/dist/src/workspace/prepare.js.map +1 -1
- package/package.json +11 -11
- package/skills/occ/SKILL.md +2 -1
- package/skills/occ/reference/code.md +41 -1
package/dist/src/code/map.js
CHANGED
|
@@ -12,8 +12,10 @@
|
|
|
12
12
|
* Token counting is injected (`countTokens`) so a real BPE tokenizer can
|
|
13
13
|
* enforce an exact budget; it defaults to the language-aware heuristic.
|
|
14
14
|
*/
|
|
15
|
+
import path from 'node:path';
|
|
15
16
|
import { z } from 'zod';
|
|
16
17
|
import { estimateTokenCount } from '../tokens.js';
|
|
18
|
+
import { getGitDiffSummary } from '../git/api.js';
|
|
17
19
|
import { extractKeySection } from './query.js';
|
|
18
20
|
import { toNormalizedSymbolKind } from './types.js';
|
|
19
21
|
import { rankNodesCached, RankOptionsSchema } from './rank.js';
|
|
@@ -194,6 +196,57 @@ function buildContentEntry(file, charBudget) {
|
|
|
194
196
|
return null;
|
|
195
197
|
}
|
|
196
198
|
}
|
|
199
|
+
/** Mirrors the focus descriptor the markdown/plain header renders, so its chrome is reserved accurately. */
|
|
200
|
+
function chromeFocusDescriptor(focus) {
|
|
201
|
+
const parts = [];
|
|
202
|
+
if (focus.query)
|
|
203
|
+
parts.push(`query "${focus.query}"`);
|
|
204
|
+
if (focus.paths.length > 0)
|
|
205
|
+
parts.push(`${focus.paths.length} path(s)`);
|
|
206
|
+
const what = parts.length > 0 ? parts.join(' + ') : 'focus';
|
|
207
|
+
return `${what}, ${focus.matchedFiles} matched`;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Fixed and per-entry token overhead the format renderer wraps around the entry
|
|
211
|
+
* bodies — the header line, block separators, truncation footer, and trailing
|
|
212
|
+
* newline. The emitted document (not just the summed entry bodies) must fit the
|
|
213
|
+
* budget, so this overhead is reserved before entries are admitted. Numeric
|
|
214
|
+
* fields use budget / total-file upper bounds and the widest tokenizer suffix so
|
|
215
|
+
* the reservation never underestimates the rendered chrome. `json` output is a
|
|
216
|
+
* structural serialization unrelated to the entry markdown, so it reserves
|
|
217
|
+
* nothing.
|
|
218
|
+
*/
|
|
219
|
+
function documentChromeReserve(format, budget, totalFiles, focus, countTokens) {
|
|
220
|
+
if (format === 'json')
|
|
221
|
+
return { fixed: 0, perEntry: 0 };
|
|
222
|
+
const filesField = `${totalFiles}/${totalFiles} files`;
|
|
223
|
+
const tokenField = `${budget}/${budget} tokens`;
|
|
224
|
+
const omitted = `${totalFiles} file(s) / ${totalFiles} symbol(s) omitted to fit the ${budget}-token budget.`;
|
|
225
|
+
const focusSuffix = focus ? ` — focus: ${chromeFocusDescriptor(focus)}` : '';
|
|
226
|
+
if (format === 'plain') {
|
|
227
|
+
const header = `Repo Map (${filesField}, ${tokenField})${focusSuffix}`;
|
|
228
|
+
return {
|
|
229
|
+
fixed: countTokens(header) + countTokens(omitted) + countTokens('\n') * 3,
|
|
230
|
+
perEntry: countTokens('\n') * 2,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
if (format === 'xml') {
|
|
234
|
+
const open = `<repomap mode="pack" tokens="${budget}" budget="${budget}" files="${totalFiles}" totalFiles="${totalFiles}" truncated="true">`;
|
|
235
|
+
return {
|
|
236
|
+
fixed: countTokens(open) + countTokens('</repomap>') + countTokens('\n') * 2,
|
|
237
|
+
perEntry: countTokens('\n'),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
// markdown: `# Repo Map — E/M files, U/B tokens[, tokenizer][ — focus: …]`,
|
|
241
|
+
// blocks joined by `\n\n`, an optional italic footer, and a trailing newline.
|
|
242
|
+
const header = `# Repo Map — ${filesField}, ${tokenField}, cl100k_base${focusSuffix}`;
|
|
243
|
+
const footer = `_${omitted}_`;
|
|
244
|
+
const separator = '\n\n';
|
|
245
|
+
return {
|
|
246
|
+
fixed: countTokens(header) + countTokens(footer) + countTokens(separator) * 3 + countTokens('\n'),
|
|
247
|
+
perEntry: countTokens(separator),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
197
250
|
/**
|
|
198
251
|
* Build a token-budgeted, importance-ranked repo map (or pack) from an index.
|
|
199
252
|
*
|
|
@@ -256,20 +309,32 @@ export function buildRepoMap(index, options) {
|
|
|
256
309
|
let tokensUsed = 0;
|
|
257
310
|
let droppedFiles = 0;
|
|
258
311
|
let droppedSymbols = 0;
|
|
312
|
+
// Reserve the format's fixed document chrome (header/footer/separators) up
|
|
313
|
+
// front and charge each admitted entry its block separator, so the rendered
|
|
314
|
+
// document — not merely the summed entry bodies — stays within budget.
|
|
315
|
+
const chrome = documentChromeReserve(format, budget, ranking.fileScores.length, focusResult, countTokens);
|
|
316
|
+
const effectiveBudget = budget - chrome.fixed;
|
|
259
317
|
for (const fileScore of orderedFileScores) {
|
|
260
318
|
const file = fileByPath.get(fileScore.path);
|
|
261
319
|
if (!file)
|
|
262
320
|
continue;
|
|
263
|
-
const remaining = budget - tokensUsed;
|
|
264
|
-
if (remaining <= 0) {
|
|
265
|
-
droppedFiles++;
|
|
266
|
-
continue;
|
|
267
|
-
}
|
|
268
321
|
let symbols = orderedSymbolsForFile(file, rankedSymbolsByPath.get(file.path) ?? []);
|
|
269
322
|
if (options.maxSymbolsPerFile != null && symbols.length > options.maxSymbolsPerFile) {
|
|
270
323
|
droppedSymbols += symbols.length - options.maxSymbolsPerFile;
|
|
271
324
|
symbols = symbols.slice(0, options.maxSymbolsPerFile);
|
|
272
325
|
}
|
|
326
|
+
const remaining = effectiveBudget - tokensUsed;
|
|
327
|
+
if (remaining <= 0) {
|
|
328
|
+
// Budget already spent: nothing further can be admitted. Count only files
|
|
329
|
+
// that would have carried information — a no-symbol map file is skipped
|
|
330
|
+
// uncounted here exactly as it is on the normal path — and add every
|
|
331
|
+
// dropped file's symbols to droppedSymbols so all drop paths agree.
|
|
332
|
+
if (mode === 'map' && symbols.length === 0)
|
|
333
|
+
continue;
|
|
334
|
+
droppedFiles++;
|
|
335
|
+
droppedSymbols += symbols.length;
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
273
338
|
let content;
|
|
274
339
|
let contentReason;
|
|
275
340
|
if (mode === 'pack') {
|
|
@@ -312,14 +377,14 @@ export function buildRepoMap(index, options) {
|
|
|
312
377
|
return entry;
|
|
313
378
|
};
|
|
314
379
|
let entry = makeEntry(symbols, content);
|
|
315
|
-
if (tokensUsed + entry.tokens <=
|
|
316
|
-
tokensUsed += entry.tokens;
|
|
380
|
+
if (tokensUsed + entry.tokens + chrome.perEntry <= effectiveBudget) {
|
|
381
|
+
tokensUsed += entry.tokens + chrome.perEntry;
|
|
317
382
|
entries.push(entry);
|
|
318
383
|
continue;
|
|
319
384
|
}
|
|
320
385
|
// Partial admission — shrink until it fits or the file must be dropped.
|
|
321
386
|
if (mode === 'pack' && content != null) {
|
|
322
|
-
const shrunkBudget = Math.max(200, Math.floor((
|
|
387
|
+
const shrunkBudget = Math.max(200, Math.floor((effectiveBudget - tokensUsed) * APPROX_CHARS_PER_TOKEN * 0.9));
|
|
323
388
|
const shrunk = buildContentEntry(file, shrunkBudget);
|
|
324
389
|
if (shrunk) {
|
|
325
390
|
content = shrunk.content;
|
|
@@ -328,11 +393,20 @@ export function buildRepoMap(index, options) {
|
|
|
328
393
|
}
|
|
329
394
|
}
|
|
330
395
|
else {
|
|
331
|
-
// map mode: drop lowest-ranked symbols from the tail until it fits.
|
|
396
|
+
// map mode: drop lowest-ranked symbols from the tail until it fits. Locate
|
|
397
|
+
// the cut by subtracting each dropped symbol's line cost from the exact
|
|
398
|
+
// full-entry count already measured above (avoiding an O(S^2) re-render of
|
|
399
|
+
// the whole entry per step), then confirm the admitted prefix with an
|
|
400
|
+
// exact re-count.
|
|
332
401
|
let kept = symbols.length;
|
|
402
|
+
let approxTokens = entry.tokens;
|
|
403
|
+
while (kept > 0 && tokensUsed + approxTokens + chrome.perEntry > effectiveBudget) {
|
|
404
|
+
kept--;
|
|
405
|
+
approxTokens -= countTokens(`\n- ${repoMapSignatureLine(symbols[kept])}`);
|
|
406
|
+
}
|
|
333
407
|
while (kept > 0) {
|
|
334
408
|
const trial = makeEntry(symbols.slice(0, kept));
|
|
335
|
-
if (tokensUsed + trial.tokens <=
|
|
409
|
+
if (tokensUsed + trial.tokens + chrome.perEntry <= effectiveBudget) {
|
|
336
410
|
entry = trial;
|
|
337
411
|
break;
|
|
338
412
|
}
|
|
@@ -346,8 +420,8 @@ export function buildRepoMap(index, options) {
|
|
|
346
420
|
droppedSymbols += symbols.length - kept;
|
|
347
421
|
entry.droppedSymbols = symbols.length - kept;
|
|
348
422
|
}
|
|
349
|
-
if (tokensUsed + entry.tokens <=
|
|
350
|
-
tokensUsed += entry.tokens;
|
|
423
|
+
if (tokensUsed + entry.tokens + chrome.perEntry <= effectiveBudget) {
|
|
424
|
+
tokensUsed += entry.tokens + chrome.perEntry;
|
|
351
425
|
entries.push(entry);
|
|
352
426
|
}
|
|
353
427
|
else {
|
|
@@ -370,4 +444,73 @@ export function buildRepoMap(index, options) {
|
|
|
370
444
|
focus: focusResult,
|
|
371
445
|
};
|
|
372
446
|
}
|
|
447
|
+
// ---------------------------------------------------------------------------
|
|
448
|
+
// Changed-focus repo map
|
|
449
|
+
// ---------------------------------------------------------------------------
|
|
450
|
+
export const ChangedRepoMapRangeSchema = z.object({
|
|
451
|
+
/** Base ref to diff from (merge-base three-dot semantics, as in `git diff base...head`). */
|
|
452
|
+
base: z.string().optional(),
|
|
453
|
+
/** Head ref to diff to; defaults to HEAD. */
|
|
454
|
+
head: z.string().optional(),
|
|
455
|
+
/** Use staged changes instead of a ref range. */
|
|
456
|
+
staged: z.boolean().optional(),
|
|
457
|
+
});
|
|
458
|
+
/**
|
|
459
|
+
* Resolve a git change range into repo-map focus inputs. Split out from
|
|
460
|
+
* {@link buildChangedRepoMap} so callers holding a diff summary (or a CLI
|
|
461
|
+
* that already fetched one) can reuse the same merge/stamp semantics.
|
|
462
|
+
*/
|
|
463
|
+
export function toRepoMapChangeContext(repoRoot, summary) {
|
|
464
|
+
const numstatByPath = new Map(summary.numstat.map(entry => [entry.path, entry]));
|
|
465
|
+
const focusPaths = [];
|
|
466
|
+
const churnByPath = new Map();
|
|
467
|
+
for (const file of summary.files) {
|
|
468
|
+
if (file.status === 'deleted')
|
|
469
|
+
continue;
|
|
470
|
+
const absolutePath = path.resolve(repoRoot, file.path);
|
|
471
|
+
const numstat = numstatByPath.get(file.path);
|
|
472
|
+
focusPaths.push(absolutePath);
|
|
473
|
+
churnByPath.set(absolutePath, {
|
|
474
|
+
added: numstat?.added ?? 0,
|
|
475
|
+
deleted: numstat?.deleted ?? 0,
|
|
476
|
+
binary: file.binary === true || numstat?.binary === true,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
return { focusPaths, churnByPath };
|
|
480
|
+
}
|
|
481
|
+
/** Stamp changed/churn metadata onto admitted entries (idempotent). */
|
|
482
|
+
export function stampRepoMapChanges(result, context) {
|
|
483
|
+
for (const entry of result.entries) {
|
|
484
|
+
const churn = context.churnByPath.get(entry.path);
|
|
485
|
+
if (!churn)
|
|
486
|
+
continue;
|
|
487
|
+
entry.changed = true;
|
|
488
|
+
entry.churn = churn;
|
|
489
|
+
}
|
|
490
|
+
return result;
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* {@link buildRepoMap} focused on a git change range: files changed in the
|
|
494
|
+
* range are added to the focus set (merged with any caller-provided focus),
|
|
495
|
+
* and admitted entries carry `changed`/`churn` metadata. Async because it
|
|
496
|
+
* shells out to git for the diff summary; the map itself builds like any
|
|
497
|
+
* other repo map, so token budgeting is unchanged.
|
|
498
|
+
*/
|
|
499
|
+
export async function buildChangedRepoMap(index, options) {
|
|
500
|
+
const { changed, ...mapOptions } = options;
|
|
501
|
+
const summary = await getGitDiffSummary({
|
|
502
|
+
repoRoot: index.repoRoot,
|
|
503
|
+
base: changed.base,
|
|
504
|
+
head: changed.head,
|
|
505
|
+
staged: changed.staged,
|
|
506
|
+
});
|
|
507
|
+
const context = toRepoMapChangeContext(index.repoRoot, summary);
|
|
508
|
+
const existingFocus = mapOptions.focus;
|
|
509
|
+
const mergedPaths = [...new Set([...(existingFocus?.paths ?? []), ...context.focusPaths])];
|
|
510
|
+
const focus = (existingFocus?.query ?? '').trim().length > 0 || mergedPaths.length > 0
|
|
511
|
+
? { ...existingFocus, paths: mergedPaths }
|
|
512
|
+
: existingFocus;
|
|
513
|
+
const result = buildRepoMap(index, { ...mapOptions, focus });
|
|
514
|
+
return stampRepoMapChanges(result, context);
|
|
515
|
+
}
|
|
373
516
|
//# sourceMappingURL=map.js.map
|
package/dist/src/code/map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../src/code/map.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../src/code/map.ts"],"names":[],"mappings":"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"}
|
package/dist/src/code/parsers.js
CHANGED
|
@@ -2,6 +2,20 @@ import { readFile, stat } from 'node:fs/promises';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { getLanguageSpec, getModuleName, isAssetSpecifier, isLocalSpecifier, normalizePath, resolveLocalImport, resolvePythonImport, resolveTsconfigImport, } from './languages.js';
|
|
4
4
|
import { collectTreeSitterTagCaptures, parseTreeSitterContent } from './tree-sitter.js';
|
|
5
|
+
/**
|
|
6
|
+
* Signals that a `.vue` single-file component could not be parsed because its
|
|
7
|
+
* SFC structure (template/script/style blocks) is malformed. Carries a
|
|
8
|
+
* human-readable reason so the file can be reported as skipped rather than
|
|
9
|
+
* aborting the surrounding batch.
|
|
10
|
+
*/
|
|
11
|
+
class VueSfcParseError extends Error {
|
|
12
|
+
reason;
|
|
13
|
+
constructor(reason) {
|
|
14
|
+
super(reason);
|
|
15
|
+
this.name = 'VueSfcParseError';
|
|
16
|
+
this.reason = reason;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
5
19
|
const DEFAULT_MAX_FILE_SIZE_BYTES = 2_097_152;
|
|
6
20
|
const DEFAULT_MAX_LINES = 25_000;
|
|
7
21
|
const MINIFIED_FILE_MIN_BYTES = 4_096;
|
|
@@ -122,11 +136,21 @@ function buildFullSignature(sourceFile, node) {
|
|
|
122
136
|
function getReturnTypeText(sourceFile, node) {
|
|
123
137
|
return node.type ? node.type.getText(sourceFile) : undefined;
|
|
124
138
|
}
|
|
139
|
+
function symbolIdentityKey(symbol) {
|
|
140
|
+
return [symbol.type, symbol.name, symbol.line, symbol.containerName ?? ''].join('\u0000');
|
|
141
|
+
}
|
|
142
|
+
// Dedup keys are tracked per target array so insertion stays O(1); the array
|
|
143
|
+
// itself preserves discovery order.
|
|
144
|
+
const symbolIdentityKeys = new WeakMap();
|
|
125
145
|
function pushUniqueSymbol(symbols, next) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
146
|
+
let seen = symbolIdentityKeys.get(symbols);
|
|
147
|
+
if (!seen) {
|
|
148
|
+
seen = new Set(symbols.map(symbolIdentityKey));
|
|
149
|
+
symbolIdentityKeys.set(symbols, seen);
|
|
150
|
+
}
|
|
151
|
+
const key = symbolIdentityKey(next);
|
|
152
|
+
if (!seen.has(key)) {
|
|
153
|
+
seen.add(key);
|
|
130
154
|
symbols.push(next);
|
|
131
155
|
}
|
|
132
156
|
}
|
|
@@ -429,9 +453,13 @@ function toPascalCase(value) {
|
|
|
429
453
|
const result = words.map(word => `${word.slice(0, 1).toUpperCase()}${word.slice(1)}`).join('');
|
|
430
454
|
return result || 'VueComponent';
|
|
431
455
|
}
|
|
432
|
-
function inferVueComponentName(filePath,
|
|
433
|
-
|
|
434
|
-
|
|
456
|
+
function inferVueComponentName(filePath, scriptContent) {
|
|
457
|
+
// Only trust a `name:` field when it sits inside a component-options object
|
|
458
|
+
// (defineOptions/defineComponent/export default), scoped to the script block —
|
|
459
|
+
// a bare `name:` anywhere else is usually unrelated data.
|
|
460
|
+
const explicit = scriptContent.match(/\bdefineOptions\s*\(\s*\{[\s\S]*?\bname\s*:\s*['"]([^'"]+)['"]/) ??
|
|
461
|
+
scriptContent.match(/\bdefineComponent\s*\(\s*\{[\s\S]*?\bname\s*:\s*['"]([^'"]+)['"]/) ??
|
|
462
|
+
scriptContent.match(/\bexport\s+default\s*\{[\s\S]*?\bname\s*:\s*['"]([^'"]+)['"]/);
|
|
435
463
|
return explicit?.[1] ?? toPascalCase(path.basename(filePath));
|
|
436
464
|
}
|
|
437
465
|
function composeVueVirtualScript(content, blocks) {
|
|
@@ -453,7 +481,7 @@ async function parseVueFile(filePath, content, context) {
|
|
|
453
481
|
if (errors.length > 0) {
|
|
454
482
|
const firstError = errors[0];
|
|
455
483
|
const message = firstError instanceof Error ? firstError.message : String(firstError);
|
|
456
|
-
throw new
|
|
484
|
+
throw new VueSfcParseError(`Unable to parse Vue SFC: ${message}`);
|
|
457
485
|
}
|
|
458
486
|
const relativePath = normalizePath(path.relative(context.repoRoot, filePath));
|
|
459
487
|
const scriptContent = composeVueVirtualScript(content, [descriptor.script, descriptor.scriptSetup]);
|
|
@@ -474,7 +502,7 @@ async function parseVueFile(filePath, content, context) {
|
|
|
474
502
|
parsed.language = 'vue';
|
|
475
503
|
parsed.content = content;
|
|
476
504
|
parsed.lines = content.split(/\r?\n/);
|
|
477
|
-
const componentName = inferVueComponentName(filePath,
|
|
505
|
+
const componentName = inferVueComponentName(filePath, scriptContent);
|
|
478
506
|
const componentLine = descriptor.script?.loc.start.line ?? descriptor.scriptSetup?.loc.start.line ?? 1;
|
|
479
507
|
pushUniqueSymbol(parsed.symbols, {
|
|
480
508
|
type: 'class',
|
|
@@ -486,6 +514,21 @@ async function parseVueFile(filePath, content, context) {
|
|
|
486
514
|
});
|
|
487
515
|
return parsed;
|
|
488
516
|
}
|
|
517
|
+
// Parses a single Go import spec (the `"path"` / `alias "path"` fragment that
|
|
518
|
+
// follows `import` on a line or stands alone inside a grouped `import ( ... )`
|
|
519
|
+
// block). The alias may be an identifier, `_` (blank), or `.` (dot import).
|
|
520
|
+
function parseGoImportSpec(spec) {
|
|
521
|
+
const match = spec.match(/^(?:([A-Za-z0-9_.]+)\s+)?["`]([^"`]+)["`]/);
|
|
522
|
+
if (!match)
|
|
523
|
+
return undefined;
|
|
524
|
+
const specifier = match[2];
|
|
525
|
+
return {
|
|
526
|
+
specifier,
|
|
527
|
+
line: 0,
|
|
528
|
+
kind: 'external',
|
|
529
|
+
bindings: [{ localName: match[1] || specifier.split('/').at(-1) || specifier, importedName: specifier }],
|
|
530
|
+
};
|
|
531
|
+
}
|
|
489
532
|
function parseImportsFromLine(line, language, context, filePath) {
|
|
490
533
|
const imports = [];
|
|
491
534
|
if (language === 'python') {
|
|
@@ -526,14 +569,11 @@ function parseImportsFromLine(line, language, context, filePath) {
|
|
|
526
569
|
return imports;
|
|
527
570
|
}
|
|
528
571
|
if (language === 'go') {
|
|
529
|
-
const
|
|
530
|
-
if (
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
kind: 'external',
|
|
535
|
-
bindings: [{ localName: match[1] || match[2].split('/').at(-1) || match[2], importedName: match[2] }],
|
|
536
|
-
});
|
|
572
|
+
const single = line.match(/^import\s+(.+)$/);
|
|
573
|
+
if (single) {
|
|
574
|
+
const parsed = parseGoImportSpec(single[1].trim());
|
|
575
|
+
if (parsed)
|
|
576
|
+
imports.push(parsed);
|
|
537
577
|
}
|
|
538
578
|
return imports;
|
|
539
579
|
}
|
|
@@ -550,7 +590,9 @@ function parseImportsFromLine(line, language, context, filePath) {
|
|
|
550
590
|
}
|
|
551
591
|
return imports;
|
|
552
592
|
}
|
|
553
|
-
|
|
593
|
+
// Strip an optional leading `#` so C/C++ `#include <...>` / `#include "..."`
|
|
594
|
+
// directives are recognized alongside plain import/require forms.
|
|
595
|
+
const generic = line.replace(/^#\s*/, '').match(/^(?:import|include|require)\s+["<]?([^">;]+)[">]?/);
|
|
554
596
|
if (generic) {
|
|
555
597
|
const specifier = generic[1].trim();
|
|
556
598
|
imports.push({
|
|
@@ -562,6 +604,43 @@ function parseImportsFromLine(line, language, context, filePath) {
|
|
|
562
604
|
}
|
|
563
605
|
return imports;
|
|
564
606
|
}
|
|
607
|
+
/**
|
|
608
|
+
* Extracts every import across `lines`, stamping each with its 1-based line
|
|
609
|
+
* number. Handles Go's grouped `import ( ... )` blocks, whose inner specs are
|
|
610
|
+
* bare quoted paths that no single-line pattern matches.
|
|
611
|
+
*/
|
|
612
|
+
function collectImportsFromLines(lines, language, context, filePath) {
|
|
613
|
+
const imports = [];
|
|
614
|
+
let inGoImportBlock = false;
|
|
615
|
+
for (let index = 0; index < lines.length; index++) {
|
|
616
|
+
const trimmed = lines[index].trim();
|
|
617
|
+
const lineNumber = index + 1;
|
|
618
|
+
if (language === 'go') {
|
|
619
|
+
if (inGoImportBlock) {
|
|
620
|
+
if (trimmed.startsWith(')')) {
|
|
621
|
+
inGoImportBlock = false;
|
|
622
|
+
continue;
|
|
623
|
+
}
|
|
624
|
+
const grouped = parseGoImportSpec(trimmed);
|
|
625
|
+
if (grouped)
|
|
626
|
+
imports.push({ ...grouped, line: lineNumber });
|
|
627
|
+
continue;
|
|
628
|
+
}
|
|
629
|
+
if (/^import\s*\(\s*$/.test(trimmed)) {
|
|
630
|
+
inGoImportBlock = true;
|
|
631
|
+
continue;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
for (const parsedImport of parseImportsFromLine(trimmed, language, context, filePath)) {
|
|
635
|
+
imports.push({
|
|
636
|
+
...parsedImport,
|
|
637
|
+
line: lineNumber,
|
|
638
|
+
resolvedPath: parsedImport.resolvedPath ?? resolveImportPath(language, context, filePath, parsedImport.specifier),
|
|
639
|
+
});
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
return imports;
|
|
643
|
+
}
|
|
565
644
|
function parseRegexFile(filePath, content, context) {
|
|
566
645
|
const language = getLanguageSpec(filePath)?.name ?? 'generic';
|
|
567
646
|
const relativePath = normalizePath(path.relative(context.repoRoot, filePath));
|
|
@@ -584,6 +663,10 @@ function parseRegexFile(filePath, content, context) {
|
|
|
584
663
|
}
|
|
585
664
|
return classStack[classStack.length - 1];
|
|
586
665
|
};
|
|
666
|
+
// Imports are collected up front so grouped/multi-line forms (e.g. Go's
|
|
667
|
+
// `import ( ... )`) and directive lines skipped as comments below are still
|
|
668
|
+
// captured.
|
|
669
|
+
imports.push(...collectImportsFromLines(lines, language, context, filePath));
|
|
587
670
|
for (let index = 0; index < lines.length; index++) {
|
|
588
671
|
const line = lines[index];
|
|
589
672
|
const lineNumber = index + 1;
|
|
@@ -591,13 +674,6 @@ function parseRegexFile(filePath, content, context) {
|
|
|
591
674
|
const indent = line.match(/^\s*/)?.[0].length ?? 0;
|
|
592
675
|
if (trimmed.length === 0 || trimmed.startsWith('#') || trimmed.startsWith('//'))
|
|
593
676
|
continue;
|
|
594
|
-
for (const parsedImport of parseImportsFromLine(trimmed, language, context, filePath)) {
|
|
595
|
-
imports.push({
|
|
596
|
-
...parsedImport,
|
|
597
|
-
line: lineNumber,
|
|
598
|
-
resolvedPath: parsedImport.resolvedPath ?? resolveImportPath(language, context, filePath, parsedImport.specifier),
|
|
599
|
-
});
|
|
600
|
-
}
|
|
601
677
|
if (language === 'python') {
|
|
602
678
|
const classMatch = trimmed.match(/^class\s+([A-Za-z_][A-Za-z0-9_]*)(?:\(([^)]+)\))?:/);
|
|
603
679
|
if (classMatch) {
|
|
@@ -910,15 +986,7 @@ async function parseTreeSitterFile(filePath, content, context, descriptor) {
|
|
|
910
986
|
const classNodeTypes = new Set(descriptor.classNodeTypes);
|
|
911
987
|
const callNodeTypes = new Set(descriptor.callNodeTypes);
|
|
912
988
|
const tagIndex = await treeSitterTagIndex(descriptor.grammar, tree.rootNode);
|
|
913
|
-
|
|
914
|
-
for (const parsedImport of parseImportsFromLine(lines[index].trim(), language, context, filePath)) {
|
|
915
|
-
imports.push({
|
|
916
|
-
...parsedImport,
|
|
917
|
-
line: index + 1,
|
|
918
|
-
resolvedPath: parsedImport.resolvedPath ?? resolveImportPath(language, context, filePath, parsedImport.specifier),
|
|
919
|
-
});
|
|
920
|
-
}
|
|
921
|
-
}
|
|
989
|
+
imports.push(...collectImportsFromLines(lines, language, context, filePath));
|
|
922
990
|
const visit = (node, containers, activeFunction) => {
|
|
923
991
|
let nextContainers = containers;
|
|
924
992
|
let nextFunction = activeFunction;
|
|
@@ -966,7 +1034,7 @@ async function parseTreeSitterFile(filePath, content, context, descriptor) {
|
|
|
966
1034
|
}
|
|
967
1035
|
for (const child of namedChildren(node))
|
|
968
1036
|
visit(child, nextContainers, nextFunction);
|
|
969
|
-
if (activeFunction && pendingCall?.calleeName
|
|
1037
|
+
if (activeFunction && pendingCall?.calleeName) {
|
|
970
1038
|
calls.push({
|
|
971
1039
|
callerName: activeFunction.name,
|
|
972
1040
|
callerLine: activeFunction.line,
|
|
@@ -1031,7 +1099,18 @@ export async function parseCodeFile(filePath, context, guardrails = {}) {
|
|
|
1031
1099
|
case 'typescript':
|
|
1032
1100
|
return { kind: 'parsed', file: await parseTypescriptFile(filePath, content, context) };
|
|
1033
1101
|
case 'vue':
|
|
1034
|
-
|
|
1102
|
+
try {
|
|
1103
|
+
return { kind: 'parsed', file: await parseVueFile(filePath, content, context) };
|
|
1104
|
+
}
|
|
1105
|
+
catch (error) {
|
|
1106
|
+
// A structurally broken SFC is reported as a skipped file rather than
|
|
1107
|
+
// aborting the surrounding batch, matching the other parsers' tolerance
|
|
1108
|
+
// of malformed input.
|
|
1109
|
+
if (error instanceof VueSfcParseError) {
|
|
1110
|
+
return { kind: 'skipped', reason: error.reason };
|
|
1111
|
+
}
|
|
1112
|
+
throw error;
|
|
1113
|
+
}
|
|
1035
1114
|
case 'python':
|
|
1036
1115
|
case 'go':
|
|
1037
1116
|
case 'rust':
|