@cesarandreslopez/occ 0.12.0 → 0.13.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 +13 -1
- package/dist/src/code/command.js +134 -3
- package/dist/src/code/command.js.map +1 -1
- package/dist/src/code/diff.d.ts +2 -2
- package/dist/src/code/hash.d.ts +19 -0
- package/dist/src/code/hash.js +85 -0
- package/dist/src/code/hash.js.map +1 -0
- package/dist/src/code/output.d.ts +4 -1
- package/dist/src/code/output.js +67 -0
- package/dist/src/code/output.js.map +1 -1
- package/dist/src/code/query.d.ts +6 -0
- package/dist/src/code/query.js +0 -0
- package/dist/src/code/query.js.map +1 -1
- package/dist/src/code/seams.d.ts +39 -0
- package/dist/src/code/seams.js +154 -0
- package/dist/src/code/seams.js.map +1 -0
- package/dist/src/code/session.d.ts +5 -1
- package/dist/src/code/session.js +11 -0
- package/dist/src/code/session.js.map +1 -1
- package/dist/src/code/source.d.ts +10 -11
- package/dist/src/code/source.js +8 -2
- package/dist/src/code/source.js.map +1 -1
- package/dist/src/code/types.d.ts +311 -0
- package/dist/src/code/types.js +101 -0
- package/dist/src/code/types.js.map +1 -1
- package/dist/src/git/api.d.ts +7 -0
- package/dist/src/git/api.js +6 -1
- package/dist/src/git/api.js.map +1 -1
- package/dist/src/git/client.d.ts +6 -0
- package/dist/src/git/client.js +12 -0
- package/dist/src/git/client.js.map +1 -1
- package/dist/src/health.js +2 -0
- package/dist/src/health.js.map +1 -1
- package/dist/src/index.d.ts +8 -2
- package/dist/src/index.js +6 -1
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/occ/SKILL.md +5 -1
- package/skills/occ/reference/code.md +52 -0
- package/skills/occ/reference/commands.md +4 -0
package/README.md
CHANGED
|
@@ -73,6 +73,8 @@ After install the skill lands at `<skills-dir>/occ/SKILL.md` and your agent surf
|
|
|
73
73
|
- **Repository map / pack via `occ code map` / `occ code pack`** — token-budgeted, PageRank-ranked repo map (top symbol signatures per file) or content pack, with a pluggable heuristic or BPE (`o200k_base` / `cl100k_base`) tokenizer for exact budgets, and opt-in query/path focus (`--query`, `--focus-path`, `--focus-depth`) to bias the map toward a specific task
|
|
74
74
|
- **Workspace analysis via `occ workspace`** — fast directory description plus combined code, document, and structure analysis with versioned JSON contracts, per-document summaries, and cross-reference detection
|
|
75
75
|
- **Directory tree via `occ code dirtree`** — bounded, ignore-aware trees from the built code index with focus drill-in and map-mode symbol annotations
|
|
76
|
+
- **Symbol body hashing via `occ code symbol-hash`** — stable, line-independent symbol keys plus a frozen sha256 body-hash contract, so a persisted hash can be re-checked later to detect drift in exactly that symbol (batch queries, explicit ambiguity, `spanExact` span quality)
|
|
77
|
+
- **Seam enumeration via `occ code seams`** — cross-module import/call relationships with durable order-independent `seamKey`s, optional git co-change weighting (`--since`), lift/importance ranking, and `--resolve` freshness checks where a missing key is surfaced as drift
|
|
76
78
|
- **Git context via `occ git`** — changed files, diff summaries and token-bounded patches, commit/file history, churn hotspots, and file-level co-change over a typed, shell-injection-safe git client; plus git-aware code (`occ code diff`, `occ code history`, `occ code map --changed-from`) that maps a diff to the code symbols it touches
|
|
77
79
|
- **Multiple output modes** — grouped by type, per-file breakdown, or JSON
|
|
78
80
|
- **CI-friendly** — ASCII-only, no-color mode for pipelines
|
|
@@ -295,6 +297,14 @@ occ code source bootstrap --path . --file src/main.ts --type function
|
|
|
295
297
|
# Check syntax without a language server (exits nonzero only when invalid)
|
|
296
298
|
occ code check src/main.ts --path .
|
|
297
299
|
|
|
300
|
+
# Hash a symbol body by stable line-independent key; re-check it later for drift
|
|
301
|
+
occ code symbol-hash --path . --file src/main.ts --name bootstrap --format json
|
|
302
|
+
occ code symbol-hash --path . --queries-json queries.json --format json
|
|
303
|
+
|
|
304
|
+
# Enumerate cross-module seams, weight by co-change, and re-check a persisted key
|
|
305
|
+
occ code seams --path . --since "90 days ago" --limit 20 --format json
|
|
306
|
+
occ code seams --path . --resolve "seam:src::src/code" --format json
|
|
307
|
+
|
|
298
308
|
# Outgoing and incoming call analysis
|
|
299
309
|
occ code analyze calls bootstrap --path test/fixtures/code-explore
|
|
300
310
|
occ code analyze callers createUser --path test/fixtures/code-explore
|
|
@@ -338,6 +348,8 @@ Highlights of the current code exploration behavior:
|
|
|
338
348
|
- **Code-context projection** via `buildCodeContext` / `session.projectContext` (`createOcc().code.context`) — project a full or slim index down to per-file exported symbols, a deduplicated local import graph, and external dependency roots
|
|
339
349
|
- **Symbol→node linkage** — index `files[].symbols[]` entries (and the slim format, `occ code map` / `find` / `index` JSON) carry a `nodeId`, so a file symbol addresses its graph node directly without scanning `nodes`
|
|
340
350
|
- **Single-symbol source reads** via `occ code source` — read one symbol body by stable `nodeId` (from `occ code map` / `find` / `index` JSON) or a disambiguated name, reading file content on demand and refusing paths that escape the repo root
|
|
351
|
+
- **Symbol body hashing** via `occ code symbol-hash` / `hashCodeSymbols` / `session.hashSymbols` — batch-hash symbol bodies by stable `{relativePath, name, kind?, containerName?}` keys; the `bodyHash` contract (full 64-hex sha256 of the exact source span) is frozen so persisted hashes remain valid comparison baselines across releases
|
|
352
|
+
- **Seam enumeration** via `occ code seams` / `listCodeSeams` / `resolveCodeSeams` — derive cross-module import/call seams at query time (no new index node/edge types), optionally join a `getGitCochange` summary for lift-weighted ranking, and re-check persisted `seamKey`s where `missing` means drift
|
|
341
353
|
- **Language-server-free syntax checks** via `occ code check` — TS/JS, Vue SFC, Python, and the vendored tree-sitter languages; exits nonzero only when `valid` is false
|
|
342
354
|
- **Call analysis** with explicit `resolved`, `ambiguous`, and `unresolved` states
|
|
343
355
|
- **Receiver-aware method resolution** for `this`, `super`, `self`, and `cls`
|
|
@@ -416,7 +428,7 @@ const doc = await occ.doc.inspect('report.docx', {});
|
|
|
416
428
|
const status = await occ.health(); // version, capability flags, and a `features` map for probing
|
|
417
429
|
```
|
|
418
430
|
|
|
419
|
-
The facade also exposes the code helpers directly: `occ.code.searchSymbols(index, query, options)` (fuzzy symbol search), `occ.code.context(index)` (per-file exports + local import graph), `occ.code.mapChanged(index, { changed, ...RepoMapOptions })` (the programmatic form of `occ code map --changed-from`), `occ.code.directoryTree(index, options)` / `session.getDirectoryTree(options)`, and `occ.git.cochange(options)`. Hosts that must support multiple OCC versions can feature-detect with `status.features?.['code.directoryTree'] === true`, `status.features?.['git.cochange'] === true`, or `status.features?.['
|
|
431
|
+
The facade also exposes the code helpers directly: `occ.code.searchSymbols(index, query, options)` (fuzzy symbol search), `occ.code.context(index)` (per-file exports + local import graph), `occ.code.mapChanged(index, { changed, ...RepoMapOptions })` (the programmatic form of `occ code map --changed-from`), `occ.code.directoryTree(index, options)` / `session.getDirectoryTree(options)`, `occ.code.symbolHash(index, queries)` / `session.hashSymbols(queries)` (stable-key symbol body hashing with a frozen sha256 contract), `occ.code.seams(index, options)` / `occ.code.resolveSeams(index, seamKeys)` / `session.seams(options)` / `session.resolveSeams(keys)` (cross-module seam enumeration and freshness checks; `seamKeyFor(moduleA, moduleB)` builds keys), and `occ.git.cochange(options)`. Hosts that must support multiple OCC versions can feature-detect with `status.features?.['code.directoryTree'] === true`, `status.features?.['git.cochange'] === true`, `status.features?.['code.symbol.bodyHash'] === true`, or `status.features?.['code.seams'] === true` — the map only ever gains keys, so a missing key means the feature is unavailable.
|
|
420
432
|
|
|
421
433
|
For large or untrusted repositories, preview the size first, then build the index in an isolated subprocess with a budget. Pair with the slim variant when the consumer only needs the graph (no source content):
|
|
422
434
|
|
package/dist/src/code/command.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { writeFile } from 'node:fs/promises';
|
|
1
|
+
import { readFile, realpath, writeFile } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { Option } from 'commander';
|
|
4
4
|
import { z } from 'zod';
|
|
@@ -7,13 +7,17 @@ import { DEFAULT_EXCLUDE_DIRS, writeStream } from '../utils.js';
|
|
|
7
7
|
import { parsePositiveInt } from '../cli-validation.js';
|
|
8
8
|
import { checkCodeSyntax } from './check.js';
|
|
9
9
|
import { analyzeCallChain, analyzeCallers, analyzeCalls, analyzeDeps, analyzeModuleCoupling, analyzeTree, createPayload, findByName, findByPattern, findByType, findContent, fusedSearch, } from './query.js';
|
|
10
|
-
import { formatCodeDiff, formatCodeDiffJson, formatChains, formatClassTree, formatContentResults, formatDirectoryTree, formatDirectoryTreeJson, formatDependencies, formatFusedResults, formatModuleCoupling, formatPayloadJson, formatRelationResults, formatSearchResults, renderRepoMap, } from './output.js';
|
|
10
|
+
import { formatCodeDiff, formatCodeDiffJson, formatChains, formatClassTree, formatContentResults, formatDirectoryTree, formatDirectoryTreeJson, formatDependencies, formatFusedResults, formatModuleCoupling, formatPayloadJson, formatRelationResults, formatCodeSeams, formatSearchResults, formatSeamResolutions, formatSymbolHashes, renderRepoMap, } from './output.js';
|
|
11
11
|
import { computeCodeDiff } from './diff.js';
|
|
12
12
|
import { buildDirectoryTree } from './tree.js';
|
|
13
13
|
import { buildRepoMap, stampRepoMapChanges, toRepoMapChangeContext, } from './map.js';
|
|
14
14
|
import { readCodeSource } from './source.js';
|
|
15
|
+
import { hashCodeSymbols } from './hash.js';
|
|
16
|
+
import { listCodeSeams, rebaseCochangeToIndexRoot, resolveCodeSeams } from './seams.js';
|
|
17
|
+
import { normalizePath } from './languages.js';
|
|
15
18
|
import { createTokenizer, resolveTokenizerName } from '../tokens.js';
|
|
16
|
-
import { getGitDiffSummary, getGitFileHistory } from '../git/api.js';
|
|
19
|
+
import { getGitCochange, getGitDiffSummary, getGitFileHistory } from '../git/api.js';
|
|
20
|
+
import { resolveGitToplevel } from '../git/client.js';
|
|
17
21
|
const CodeCommandOptionsSchema = z
|
|
18
22
|
.object({
|
|
19
23
|
path: z.string().optional(),
|
|
@@ -49,6 +53,13 @@ const CodeCommandOptionsSchema = z
|
|
|
49
53
|
changedFrom: z.string().optional(),
|
|
50
54
|
changedTo: z.string().optional(),
|
|
51
55
|
nodeId: z.string().optional(),
|
|
56
|
+
name: z.string().optional(),
|
|
57
|
+
kind: z.string().optional(),
|
|
58
|
+
container: z.string().optional(),
|
|
59
|
+
queriesJson: z.string().optional(),
|
|
60
|
+
minLift: z.string().optional(),
|
|
61
|
+
since: z.string().optional(),
|
|
62
|
+
resolve: z.array(z.string()).optional(),
|
|
52
63
|
})
|
|
53
64
|
.passthrough();
|
|
54
65
|
function getOptions(command) {
|
|
@@ -104,6 +115,16 @@ function parseType(value) {
|
|
|
104
115
|
}
|
|
105
116
|
return result.data;
|
|
106
117
|
}
|
|
118
|
+
/** Parse a CLI string option as a non-negative float, or undefined when absent. */
|
|
119
|
+
function parseNonNegativeFloat(value, label) {
|
|
120
|
+
if (!value)
|
|
121
|
+
return undefined;
|
|
122
|
+
const parsed = Number.parseFloat(value);
|
|
123
|
+
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
124
|
+
throw new Error(`Invalid ${label}: "${value}"`);
|
|
125
|
+
}
|
|
126
|
+
return parsed;
|
|
127
|
+
}
|
|
107
128
|
/** Parse a CLI string option as a non-negative integer, returning fallback if undefined. */
|
|
108
129
|
function parseNonNegativeInt(value, fallback, label) {
|
|
109
130
|
if (!value)
|
|
@@ -146,6 +167,49 @@ function formatCheckResult(result) {
|
|
|
146
167
|
}),
|
|
147
168
|
].join('\n');
|
|
148
169
|
}
|
|
170
|
+
async function readStdinText() {
|
|
171
|
+
const chunks = [];
|
|
172
|
+
for await (const chunk of process.stdin) {
|
|
173
|
+
chunks.push(chunk);
|
|
174
|
+
}
|
|
175
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
176
|
+
}
|
|
177
|
+
/** Kinds that resolve to hashable source nodes (files/modules are not hashable). */
|
|
178
|
+
const HASHABLE_KINDS = ['function', 'class', 'interface', 'type-alias', 'enum', 'variable'];
|
|
179
|
+
const SymbolHashQueriesSchema = z.array(z.unknown());
|
|
180
|
+
async function resolveSymbolHashQueries(options) {
|
|
181
|
+
if (options.queriesJson) {
|
|
182
|
+
if (options.name || options.file || options.kind || options.container) {
|
|
183
|
+
throw new Error('Use either --queries-json or the single-query flags (--file/--name/--kind/--container), not both.');
|
|
184
|
+
}
|
|
185
|
+
const raw = options.queriesJson === '-' ? await readStdinText() : await readFile(options.queriesJson, 'utf8');
|
|
186
|
+
let parsed;
|
|
187
|
+
try {
|
|
188
|
+
parsed = JSON.parse(raw);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
throw new Error(`--queries-json is not valid JSON: ${error.message}`);
|
|
192
|
+
}
|
|
193
|
+
const queries = SymbolHashQueriesSchema.safeParse(parsed);
|
|
194
|
+
if (!queries.success) {
|
|
195
|
+
throw new Error('--queries-json must contain a JSON array of symbol key queries.');
|
|
196
|
+
}
|
|
197
|
+
// Entry shapes are validated per query by hashCodeSymbols (bad entries
|
|
198
|
+
// become per-query `error` results instead of failing the batch).
|
|
199
|
+
return queries.data;
|
|
200
|
+
}
|
|
201
|
+
if (!options.file || !options.name) {
|
|
202
|
+
throw new Error('Provide --file <relativePath> and --name <name>, or --queries-json <path|->.');
|
|
203
|
+
}
|
|
204
|
+
return [
|
|
205
|
+
{
|
|
206
|
+
relativePath: options.file,
|
|
207
|
+
name: options.name,
|
|
208
|
+
kind: options.kind,
|
|
209
|
+
containerName: options.container,
|
|
210
|
+
},
|
|
211
|
+
];
|
|
212
|
+
}
|
|
149
213
|
function resolveContentMode(value, fallback) {
|
|
150
214
|
if (!value)
|
|
151
215
|
return fallback;
|
|
@@ -364,6 +428,73 @@ export function registerCodeCommands(program) {
|
|
|
364
428
|
const output = options.format === 'json' ? JSON.stringify(result, null, 2) : formatCheckResult(result);
|
|
365
429
|
await emit(output.endsWith('\n') ? output : `${output}\n`, options);
|
|
366
430
|
}));
|
|
431
|
+
const symbolHashCmd = code
|
|
432
|
+
.command('symbol-hash')
|
|
433
|
+
.description('Hash symbol bodies by stable, line-independent key (sha256 of the exact source span)');
|
|
434
|
+
addSharedOptions(symbolHashCmd, { includeFile: true });
|
|
435
|
+
symbolHashCmd.option('--name <name>', 'symbol name for a single query');
|
|
436
|
+
symbolHashCmd.addOption(new Option('--kind <kind>', 'symbol kind to disambiguate').choices([...HASHABLE_KINDS]));
|
|
437
|
+
symbolHashCmd.option('--container <name>', 'container name to disambiguate (e.g. the class of a method)');
|
|
438
|
+
symbolHashCmd.option('--queries-json <path>', 'batch mode: JSON array of {relativePath, name, kind?, containerName?} (use - for stdin)');
|
|
439
|
+
symbolHashCmd.action(runAction(async (_options, command) => {
|
|
440
|
+
const options = getOptions(command);
|
|
441
|
+
const queries = await resolveSymbolHashQueries(options);
|
|
442
|
+
const index = await withIndex(options, 'none');
|
|
443
|
+
const results = await hashCodeSymbols(index, queries);
|
|
444
|
+
// Mirror `code source`: non-resolved outcomes signal failure to scripts.
|
|
445
|
+
if (results.some(result => result.status !== 'resolved')) {
|
|
446
|
+
process.exitCode = 1;
|
|
447
|
+
}
|
|
448
|
+
const output = options.format === 'json' ? JSON.stringify(results, null, 2) : formatSymbolHashes(results, options.ci);
|
|
449
|
+
await emit(output.endsWith('\n') ? output : `${output}\n`, options);
|
|
450
|
+
}));
|
|
451
|
+
const seamsCmd = code
|
|
452
|
+
.command('seams')
|
|
453
|
+
.description('Enumerate cross-module seams (import/call edges between directory modules)');
|
|
454
|
+
addSharedOptions(seamsCmd, { includeLimit: true });
|
|
455
|
+
seamsCmd.option('--min-lift <n>', 'keep only seams with co-change lift >= n (needs --since)');
|
|
456
|
+
seamsCmd.option('--since <window>', 'join git co-change over this history window (e.g. "90 days ago")');
|
|
457
|
+
seamsCmd.option('--resolve <seamKeys...>', 'resolve seam keys for freshness instead of enumerating');
|
|
458
|
+
seamsCmd.action(runAction(async (_options, command) => {
|
|
459
|
+
const options = getOptions(command);
|
|
460
|
+
if (options.minLift != null && !options.since) {
|
|
461
|
+
throw new Error('--min-lift needs --since: co-change lift is only computed over a history window.');
|
|
462
|
+
}
|
|
463
|
+
const index = await withIndex(options, 'excerpt');
|
|
464
|
+
let cochange;
|
|
465
|
+
if (options.since) {
|
|
466
|
+
// scope 'history': --since is a history window, not a diff range — a
|
|
467
|
+
// clean tree sitting on its base branch must still join co-change.
|
|
468
|
+
cochange = await getGitCochange({ repoRoot: index.repoRoot, since: options.since, scope: 'history' });
|
|
469
|
+
// git reports toplevel-relative paths; rebase them onto the index root
|
|
470
|
+
// so the module join still matches when --path sits below the toplevel.
|
|
471
|
+
const toplevel = await resolveGitToplevel(index.repoRoot);
|
|
472
|
+
if (toplevel) {
|
|
473
|
+
const indexRoot = await realpath(index.repoRoot).catch(() => index.repoRoot);
|
|
474
|
+
const prefix = normalizePath(path.relative(toplevel, indexRoot));
|
|
475
|
+
if (prefix && !prefix.startsWith('..')) {
|
|
476
|
+
cochange = rebaseCochangeToIndexRoot(cochange, prefix);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
if (options.resolve && options.resolve.length > 0) {
|
|
481
|
+
const results = resolveCodeSeams(index, options.resolve, { cochange });
|
|
482
|
+
// Missing seams are drift: signal failure to scripts/agents.
|
|
483
|
+
if (results.some(result => result.status === 'missing')) {
|
|
484
|
+
process.exitCode = 1;
|
|
485
|
+
}
|
|
486
|
+
const output = options.format === 'json' ? JSON.stringify(results, null, 2) : formatSeamResolutions(results, options.ci);
|
|
487
|
+
await emit(output.endsWith('\n') ? output : `${output}\n`, options);
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
const seams = listCodeSeams(index, {
|
|
491
|
+
cochange,
|
|
492
|
+
minLift: parseNonNegativeFloat(options.minLift, 'min lift'),
|
|
493
|
+
limit: parsePositiveInt(options.limit, 50, 'limit'),
|
|
494
|
+
});
|
|
495
|
+
const output = options.format === 'json' ? JSON.stringify(seams, null, 2) : formatCodeSeams(seams, options.ci);
|
|
496
|
+
await emit(output.endsWith('\n') ? output : `${output}\n`, options);
|
|
497
|
+
}));
|
|
367
498
|
const analyzeCallsCmd = analyze.command('calls <functionName>').description('Show what a function calls');
|
|
368
499
|
addSharedOptions(analyzeCallsCmd, { includeFile: true });
|
|
369
500
|
analyzeCallsCmd.action(runAction(async (functionName, _options, command) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/code/command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/code/command.ts"],"names":[],"mappings":"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"}
|
package/dist/src/code/diff.d.ts
CHANGED
|
@@ -25,9 +25,9 @@ export declare const ChangedSymbolSchema: z.ZodObject<{
|
|
|
25
25
|
endLine: z.ZodOptional<z.ZodNumber>;
|
|
26
26
|
endLineApprox: z.ZodOptional<z.ZodBoolean>;
|
|
27
27
|
changeKind: z.ZodEnum<{
|
|
28
|
-
signature: "signature";
|
|
29
28
|
added: "added";
|
|
30
29
|
modified: "modified";
|
|
30
|
+
signature: "signature";
|
|
31
31
|
removed: "removed";
|
|
32
32
|
}>;
|
|
33
33
|
churn: z.ZodObject<{
|
|
@@ -155,9 +155,9 @@ export declare const CodeDiffResultSchema: z.ZodObject<{
|
|
|
155
155
|
endLine: z.ZodOptional<z.ZodNumber>;
|
|
156
156
|
endLineApprox: z.ZodOptional<z.ZodBoolean>;
|
|
157
157
|
changeKind: z.ZodEnum<{
|
|
158
|
-
signature: "signature";
|
|
159
158
|
added: "added";
|
|
160
159
|
modified: "modified";
|
|
160
|
+
signature: "signature";
|
|
161
161
|
removed: "removed";
|
|
162
162
|
}>;
|
|
163
163
|
churn: z.ZodObject<{
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type CodebaseIndex, type HashCodeSymbolsResult, type SymbolKeyQuery } from './types.js';
|
|
2
|
+
export interface HashCodeSymbolsOptions {
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Batch body-hash primitive behind the `code.symbol.bodyHash` feature key.
|
|
6
|
+
*
|
|
7
|
+
* Resolution reuses the `readCodeSource` candidate matcher (`selectByQuery`),
|
|
8
|
+
* narrowed by `containerName` when the query provides one. Each query is
|
|
9
|
+
* independent: a bad query yields one `error`/`not_found` entry in the result
|
|
10
|
+
* array (positionally aligned with `queries`), never a thrown batch.
|
|
11
|
+
*
|
|
12
|
+
* Frozen hash contract: `bodyHash` is the full 64-char lowercase hex sha256
|
|
13
|
+
* over the UTF-8 bytes of the exact `source` string `readCodeSource` returns
|
|
14
|
+
* for the resolved node (the `lines.slice(line - 1, endLine)` join). No
|
|
15
|
+
* truncation. Algorithm and normalization are part of the public contract;
|
|
16
|
+
* changing either is a breaking change requiring a new feature key.
|
|
17
|
+
*/
|
|
18
|
+
export declare function hashCodeSymbols(index: CodebaseIndex, queries: SymbolKeyQuery[], _options?: HashCodeSymbolsOptions): Promise<HashCodeSymbolsResult[]>;
|
|
19
|
+
export declare function computeBodyHash(source: string): string;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { candidateFromNode, readCodeSource, selectByQuery } from './source.js';
|
|
3
|
+
import { SymbolKeyQuerySchema, } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Batch body-hash primitive behind the `code.symbol.bodyHash` feature key.
|
|
6
|
+
*
|
|
7
|
+
* Resolution reuses the `readCodeSource` candidate matcher (`selectByQuery`),
|
|
8
|
+
* narrowed by `containerName` when the query provides one. Each query is
|
|
9
|
+
* independent: a bad query yields one `error`/`not_found` entry in the result
|
|
10
|
+
* array (positionally aligned with `queries`), never a thrown batch.
|
|
11
|
+
*
|
|
12
|
+
* Frozen hash contract: `bodyHash` is the full 64-char lowercase hex sha256
|
|
13
|
+
* over the UTF-8 bytes of the exact `source` string `readCodeSource` returns
|
|
14
|
+
* for the resolved node (the `lines.slice(line - 1, endLine)` join). No
|
|
15
|
+
* truncation. Algorithm and normalization are part of the public contract;
|
|
16
|
+
* changing either is a breaking change requiring a new feature key.
|
|
17
|
+
*/
|
|
18
|
+
export async function hashCodeSymbols(index, queries, _options = {}) {
|
|
19
|
+
const results = [];
|
|
20
|
+
for (const query of queries) {
|
|
21
|
+
results.push(await hashOneSymbol(index, query));
|
|
22
|
+
}
|
|
23
|
+
return results;
|
|
24
|
+
}
|
|
25
|
+
export function computeBodyHash(source) {
|
|
26
|
+
return createHash('sha256').update(source, 'utf8').digest('hex');
|
|
27
|
+
}
|
|
28
|
+
async function hashOneSymbol(index, rawQuery) {
|
|
29
|
+
const parsed = SymbolKeyQuerySchema.safeParse(rawQuery);
|
|
30
|
+
if (!parsed.success) {
|
|
31
|
+
return { status: 'error', message: `Invalid symbol key query: ${parsed.error.message}` };
|
|
32
|
+
}
|
|
33
|
+
const query = parsed.data;
|
|
34
|
+
try {
|
|
35
|
+
const selected = selectByQuery(index, { name: query.name, file: query.relativePath, type: query.kind });
|
|
36
|
+
if (typeof selected === 'string') {
|
|
37
|
+
return { status: 'error', query, message: selected };
|
|
38
|
+
}
|
|
39
|
+
const candidates = query.containerName != null ? selected.filter(node => node.containerName === query.containerName) : selected;
|
|
40
|
+
if (candidates.length === 0) {
|
|
41
|
+
return { status: 'not_found', query, candidates: [], message: 'No matching source node was found.' };
|
|
42
|
+
}
|
|
43
|
+
if (candidates.length > 1) {
|
|
44
|
+
// Overloads/redeclarations where all key fields match stay explicit —
|
|
45
|
+
// never a silent first pick.
|
|
46
|
+
return {
|
|
47
|
+
status: 'ambiguous',
|
|
48
|
+
query,
|
|
49
|
+
candidates: candidates.map(candidateFromNode),
|
|
50
|
+
message: `Found ${candidates.length} matching source nodes.`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const node = candidates[0];
|
|
54
|
+
const source = await readCodeSource(index, { nodeId: node.id });
|
|
55
|
+
if (source.status !== 'resolved') {
|
|
56
|
+
const message = 'message' in source ? source.message : `Could not read source for node "${node.id}".`;
|
|
57
|
+
return { status: 'error', query, message };
|
|
58
|
+
}
|
|
59
|
+
return { status: 'resolved', query, symbol: hashedSymbolFromSource(query, node, source.source, source) };
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return { status: 'error', query, message: error.message };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function hashedSymbolFromSource(query, node, source, span) {
|
|
66
|
+
return {
|
|
67
|
+
key: {
|
|
68
|
+
relativePath: span.relativePath ?? node.relativePath ?? query.relativePath,
|
|
69
|
+
kind: node.type,
|
|
70
|
+
name: node.name,
|
|
71
|
+
containerName: node.containerName,
|
|
72
|
+
},
|
|
73
|
+
nodeId: node.id,
|
|
74
|
+
line: span.line,
|
|
75
|
+
endLine: span.endLine,
|
|
76
|
+
signature: node.signature,
|
|
77
|
+
bodyHash: computeBodyHash(source),
|
|
78
|
+
// Regex-fallback parsers report no real span (endLine === line); the hash
|
|
79
|
+
// then covers only the declaration line. Genuine one-line declarations are
|
|
80
|
+
// conservatively reported as inexact too — consumers fall back to
|
|
81
|
+
// file-level hashing either way.
|
|
82
|
+
spanExact: span.endLine > span.line,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/code/hash.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CallChain, ClassTreeAnalysis, CodeCommandPayload, DirectoryTreeResult, CodeSearchResult, ContentMatch, DependencyAnalysis, RelationMatch } from './types.js';
|
|
1
|
+
import type { CallChain, ClassTreeAnalysis, CodeCommandPayload, DirectoryTreeResult, CodeSearchResult, ContentMatch, CodeSeam, DependencyAnalysis, HashCodeSymbolsResult, RelationMatch, ResolveCodeSeamsResult } from './types.js';
|
|
2
2
|
import type { FusedSearchResult, ModuleCoupling } from './query.js';
|
|
3
3
|
import { type RepoMapResult } from './map.js';
|
|
4
4
|
import { type CodeDiffResult } from './diff.js';
|
|
@@ -15,6 +15,9 @@ export declare function formatClassTree(result: ClassTreeAnalysis | null, ci?: b
|
|
|
15
15
|
export declare function formatChains(chains: CallChain[], ci?: boolean): string;
|
|
16
16
|
export declare function formatFusedResults(results: FusedSearchResult[], ci?: boolean): string;
|
|
17
17
|
export declare function formatModuleCoupling(result: ModuleCoupling, ci?: boolean): string;
|
|
18
|
+
export declare function formatSymbolHashes(results: HashCodeSymbolsResult[], ci?: boolean): string;
|
|
19
|
+
export declare function formatCodeSeams(seams: CodeSeam[], ci?: boolean): string;
|
|
20
|
+
export declare function formatSeamResolutions(results: ResolveCodeSeamsResult[], ci?: boolean): string;
|
|
18
21
|
export declare function formatRepoMapMarkdown(result: RepoMapResult): string;
|
|
19
22
|
export declare function formatRepoMapPlain(result: RepoMapResult): string;
|
|
20
23
|
export declare function formatRepoMapXml(result: RepoMapResult): string;
|
package/dist/src/code/output.js
CHANGED
|
@@ -333,6 +333,73 @@ export function formatModuleCoupling(result, ci = false) {
|
|
|
333
333
|
}
|
|
334
334
|
return lines.join('\n') + '\n';
|
|
335
335
|
}
|
|
336
|
+
export function formatSymbolHashes(results, ci = false) {
|
|
337
|
+
const c = palette(ci);
|
|
338
|
+
const counts = { resolved: 0, ambiguous: 0, not_found: 0, error: 0 };
|
|
339
|
+
for (const result of results)
|
|
340
|
+
counts[result.status]++;
|
|
341
|
+
const lines = [
|
|
342
|
+
c.header(`# Symbol Hashes — ${counts.resolved} resolved, ${counts.ambiguous} ambiguous, ${counts.not_found} not found, ${counts.error} error(s)`),
|
|
343
|
+
];
|
|
344
|
+
for (const result of results) {
|
|
345
|
+
const label = result.status === 'error' ? (result.query?.name ?? '(invalid query)') : result.query.name;
|
|
346
|
+
if (result.status === 'resolved') {
|
|
347
|
+
const { symbol } = result;
|
|
348
|
+
const container = symbol.key.containerName ? ` in ${symbol.key.containerName}` : '';
|
|
349
|
+
const span = symbol.spanExact ? 'exact span' : 'declaration-only span';
|
|
350
|
+
lines.push(`${c.ok('resolved')} ${label} (${symbol.key.kind}${container}) ${symbol.key.relativePath}:${symbol.line}-${symbol.endLine} [${span}]`);
|
|
351
|
+
lines.push(` sha256 ${symbol.bodyHash}`);
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
354
|
+
if (result.status === 'error') {
|
|
355
|
+
lines.push(`${c.bad('error')} ${label} — ${result.message}`);
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
const color = result.status === 'ambiguous' ? c.warn : c.bad;
|
|
359
|
+
lines.push(`${color(result.status)} ${label} — ${result.message}`);
|
|
360
|
+
for (const candidate of result.candidates) {
|
|
361
|
+
lines.push(` - ${candidate.name} ${candidate.relativePath ?? candidate.path}:${candidate.line ?? '?'}`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return lines.join('\n') + '\n';
|
|
365
|
+
}
|
|
366
|
+
export function formatCodeSeams(seams, ci = false) {
|
|
367
|
+
const c = palette(ci);
|
|
368
|
+
if (seams.length === 0)
|
|
369
|
+
return `${c.dim('No cross-module seams found.')}\n`;
|
|
370
|
+
const table = new Table({
|
|
371
|
+
head: [c.key('Rank'), c.key('Seam'), c.key('Imports'), c.key('Calls'), c.key('Co-change')],
|
|
372
|
+
chars: tableChars(ci),
|
|
373
|
+
style: { head: [], border: [] },
|
|
374
|
+
});
|
|
375
|
+
for (const seam of seams) {
|
|
376
|
+
const cochange = seam.cochange
|
|
377
|
+
? `${seam.cochange.count}x lift ${seam.cochange.lift.toFixed(2)} last ${seam.cochange.lastCochangedAt.slice(0, 10)}`
|
|
378
|
+
: '';
|
|
379
|
+
table.push([
|
|
380
|
+
String(seam.rank),
|
|
381
|
+
`${seam.moduleA || '.'} <-> ${seam.moduleB || '.'}`,
|
|
382
|
+
formatNumber(seam.importEdgeCount),
|
|
383
|
+
formatNumber(seam.callEdgeCount),
|
|
384
|
+
cochange,
|
|
385
|
+
]);
|
|
386
|
+
}
|
|
387
|
+
return `${tableTitle(`Code Seams (${seams.length})`, addSeparators(table.toString(), ci), ci)}\n`;
|
|
388
|
+
}
|
|
389
|
+
export function formatSeamResolutions(results, ci = false) {
|
|
390
|
+
const c = palette(ci);
|
|
391
|
+
const missing = results.filter(result => result.status === 'missing').length;
|
|
392
|
+
const lines = [c.header(`# Seam Resolution — ${results.length - missing} resolved, ${missing} missing`)];
|
|
393
|
+
for (const result of results) {
|
|
394
|
+
if (result.status === 'resolved' && result.seam) {
|
|
395
|
+
lines.push(`${c.ok('resolved')} ${result.seamKey} (${result.seam.importEdgeCount} imports, ${result.seam.callEdgeCount} calls)`);
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
lines.push(`${c.bad('missing')} ${result.seamKey}`);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return lines.join('\n') + '\n';
|
|
402
|
+
}
|
|
336
403
|
// ── Repo map / pack ───────────────────────────────────────────────────────
|
|
337
404
|
// Repo-map output is meant to be pasted into an LLM, so it is deliberately
|
|
338
405
|
// plain (no ANSI colors) regardless of the `ci` flag.
|