indexer-cli 0.12.2 → 0.12.4
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 +54 -10
- package/dist/cli/commands/architecture.js +143 -21
- package/dist/cli/commands/architecture.js.map +1 -1
- package/dist/cli/commands/deps.js +120 -25
- package/dist/cli/commands/deps.js.map +1 -1
- package/dist/cli/commands/ensure-indexed.d.ts +16 -1
- package/dist/cli/commands/ensure-indexed.js +28 -3
- package/dist/cli/commands/ensure-indexed.js.map +1 -1
- package/dist/cli/commands/explain.js +81 -2
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/init.d.ts +3 -1
- package/dist/cli/commands/init.js +9 -5
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/search.js +92 -14
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/skills.js +23 -9
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/structure.js +98 -10
- package/dist/cli/commands/structure.js.map +1 -1
- package/dist/cli/format/compact.d.ts +2 -0
- package/dist/cli/format/compact.js +32 -0
- package/dist/cli/format/compact.js.map +1 -0
- package/dist/cli/test-hints.d.ts +19 -0
- package/dist/cli/test-hints.js +135 -0
- package/dist/cli/test-hints.js.map +1 -0
- package/dist/core/skills-version.d.ts +1 -1
- package/dist/core/skills-version.js +1 -1
- package/dist/core/version-check.js +8 -1
- package/dist/core/version-check.js.map +1 -1
- package/dist/engine/searcher.d.ts +8 -0
- package/dist/engine/searcher.js +125 -7
- package/dist/engine/searcher.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -156,10 +156,27 @@ project root. If no `.indexer-cli/` data exists yet, it stops and tells you to r
|
|
|
156
156
|
|--------------------------|---------|--------------------------------------------------------------------------------------------------------------|
|
|
157
157
|
| `--max-files <number>` | 3 | Number of results to return |
|
|
158
158
|
| `--path-prefix <string>` | — | Limit results to files under this path |
|
|
159
|
-
| `--chunk-types <string>` | — | Comma-separated filter: `full_file`, `imports`, `preamble`, `declaration`, `module_section`, `impl`, `types` |
|
|
159
|
+
| `--chunk-types <string>` | — | Comma-separated filter. Types: `full_file`, `imports`, `preamble`, `declaration`, `module_section`, `impl`, `types`; aliases: `api`, `impl`, `tests`, `imports` |
|
|
160
|
+
| `--mode <mode>` | hybrid | Ranking mode: `hybrid`, `semantic`, `lexical`, or `symbol` |
|
|
160
161
|
| `--include-imports` | — | Include `imports`/`preamble` chunks (excluded by default) |
|
|
161
|
-
| `--min-score <number>` | 0.
|
|
162
|
+
| `--min-score <number>` | 0.55 | Filter out results below the final ranking score. Semantic scores are usually 0..1; hybrid scores may exceed 1 |
|
|
162
163
|
| `--include-content` | — | Include matched code content in output (omitted by default to save tokens) |
|
|
164
|
+
| `--dedupe-file` | — | Return at most one result per file |
|
|
165
|
+
| `--dedupe-symbol` | — | Return at most one result per file/symbol pair |
|
|
166
|
+
| `--cluster` | — | Group nearby similar chunks and show one representative |
|
|
167
|
+
| `--exclude-tests` | — | Exclude test files from search results |
|
|
168
|
+
| `--include-tests` | — | Include test files without the default test penalty |
|
|
169
|
+
|
|
170
|
+
`idx search` prints compact diagnostics when a query is likely too broad, a path prefix is missing, or a high
|
|
171
|
+
`--min-score` filters every result. Each result includes a line range, `rank=<mode>`, and compact `why=` reason codes.
|
|
172
|
+
The final line suggests the cheapest file ranges to read next. Example:
|
|
173
|
+
|
|
174
|
+
```text
|
|
175
|
+
src/cli/commands/search.ts:93-169 (score: 2.24, rank=hybrid, function: registerSearchCommand, why=symbol+path+text+semantic)
|
|
176
|
+
Read next: src/cli/commands/search.ts:93-169
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
No-result diagnostics stay compact, for example: `WARN no-results min-score=0.99 suggestion='try --min-score 0.55'`.
|
|
163
180
|
|
|
164
181
|
### `idx structure`
|
|
165
182
|
|
|
@@ -172,12 +189,29 @@ files if needed.
|
|
|
172
189
|
| `--kind <string>` | Filter by symbol kind: `function`, `class`, `method`, `interface`, `type`, `variable`, `module`, `signal` |
|
|
173
190
|
| `--max-depth <number>` | Limit directory traversal depth in the rendered tree |
|
|
174
191
|
| `--max-files <number>` | Limit number of files shown in output |
|
|
192
|
+
| `--cursor <number>` | Continue from a previous `TRUNC` cursor |
|
|
193
|
+
| `--include-internal` | Include non-exported/internal symbols |
|
|
194
|
+
| `--include-fixtures` | Include fixture/vendor paths in output |
|
|
175
195
|
| `--no-tests` | Exclude test files from output |
|
|
196
|
+
| `--include-tests-summary` | Show nearest tests for listed source files |
|
|
197
|
+
|
|
198
|
+
`idx structure` annotates symbols with line ranges, so agents can jump directly to the smallest useful `Read` range:
|
|
199
|
+
|
|
200
|
+
```text
|
|
201
|
+
search.ts — function: registerSearchCommand:93-294
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
When output is capped with `--max-files`, truncation is explicit and includes a continuation command:
|
|
205
|
+
|
|
206
|
+
```text
|
|
207
|
+
TRUNC hidden=49 cursor=5
|
|
208
|
+
NEXT idx structure --path-prefix src --max-depth 2 --max-files 5 --cursor 5
|
|
209
|
+
```
|
|
176
210
|
|
|
177
211
|
### `idx architecture`
|
|
178
212
|
|
|
179
|
-
Print an architecture snapshot for the current working directory: file statistics, detected entry points,
|
|
180
|
-
|
|
213
|
+
Print an architecture snapshot for the current working directory: file statistics, detected entry points, a dependency
|
|
214
|
+
graph, actionable cycle causes, classified unresolved dependencies, and up to three suggested actions.
|
|
181
215
|
|
|
182
216
|
| Option | Description |
|
|
183
217
|
|--------------------------|----------------------------------------|
|
|
@@ -197,17 +231,27 @@ specific function, class, or type does and how it is used.
|
|
|
197
231
|
When auto-root detection is used, symbol paths such as `src/payments/processor.ts::PaymentProcessor` are still resolved
|
|
198
232
|
relative to the project root, not the subdirectory where you ran the command.
|
|
199
233
|
|
|
234
|
+
| Option | Default | Description |
|
|
235
|
+
|--------------------------|---------|----------------------------------------------|
|
|
236
|
+
| `--path-prefix <string>` | — | Limit symbol lookup to files under this path |
|
|
237
|
+
| `--include-fixtures` | — | Include fixture/vendor paths in lookup |
|
|
238
|
+
| `--include-body` | — | Include a compact body preview |
|
|
239
|
+
| `--body-lines <number>` | 40 | Number of body preview lines, from 1 to 200 |
|
|
240
|
+
| `--signature-only` | — | Omit dependency context, tests, and body hints |
|
|
241
|
+
|
|
200
242
|
### `idx deps <path>`
|
|
201
243
|
|
|
202
|
-
Show
|
|
203
|
-
of changes and understanding dependency chains.
|
|
244
|
+
Show module import dependencies for a path. The default text output labels imported-by/imports first and keeps
|
|
245
|
+
`Callers`/`Callees` aliases for compatibility. Useful for tracing impact of changes and understanding dependency chains.
|
|
204
246
|
|
|
205
247
|
Path arguments stay project-root-relative even when you invoke the command from a nested subdirectory.
|
|
206
248
|
|
|
207
|
-
| Option
|
|
208
|
-
|
|
209
|
-
| `--direction <dir>` | both
|
|
210
|
-
| `--depth <n>`
|
|
249
|
+
| Option | Default | Description |
|
|
250
|
+
|------------------|---------|------------------------------------------------------------|
|
|
251
|
+
| `--direction <dir>` | both | `callers`/imported-by, `callees`/imports, or `both` |
|
|
252
|
+
| `--depth <n>` | 1 | Traversal depth, with transitive edges marked as `d=<n>` |
|
|
253
|
+
| `--show-edges` | — | Show the import specifier/kind that created each edge |
|
|
254
|
+
| `--tests` | — | Show nearest/impacted tests and a suggested verification command |
|
|
211
255
|
|
|
212
256
|
### `idx uninstall`
|
|
213
257
|
|
|
@@ -11,6 +11,7 @@ const types_js_1 = require("../../core/types.js");
|
|
|
11
11
|
const architecture_js_1 = require("../../engine/architecture.js");
|
|
12
12
|
const sqlite_js_1 = require("../../storage/sqlite.js");
|
|
13
13
|
const ensure_indexed_js_1 = require("./ensure-indexed.js");
|
|
14
|
+
const compact_js_1 = require("../format/compact.js");
|
|
14
15
|
const path_prefix_js_1 = require("./path-prefix.js");
|
|
15
16
|
const project_root_js_1 = require("../project-root.js");
|
|
16
17
|
function summarizeExternalDependencies(values) {
|
|
@@ -133,6 +134,116 @@ function renderDependencyEdge(key, values, localPrefix) {
|
|
|
133
134
|
const rhs = values.map((v) => relativePath(v, localPrefix));
|
|
134
135
|
return `${relativePath(key, localPrefix)} -> ${rhs.join(", ")}`;
|
|
135
136
|
}
|
|
137
|
+
function normalizeFilePath(value) {
|
|
138
|
+
return value.replace(/\\/g, "/");
|
|
139
|
+
}
|
|
140
|
+
function getModuleKey(filePath) {
|
|
141
|
+
const parts = normalizeFilePath(filePath).split("/");
|
|
142
|
+
if (parts.length === 1)
|
|
143
|
+
return "root";
|
|
144
|
+
const rootGroup = parts[0];
|
|
145
|
+
if (["packages", "services", "apps", "libs", "modules"].includes(rootGroup) &&
|
|
146
|
+
parts[1]) {
|
|
147
|
+
return `${rootGroup}/${parts[1]}`;
|
|
148
|
+
}
|
|
149
|
+
if (parts.length >= 2)
|
|
150
|
+
return `${parts[0]}/${parts[1]}`;
|
|
151
|
+
return rootGroup;
|
|
152
|
+
}
|
|
153
|
+
function classifyUnresolvedDependency(specifier) {
|
|
154
|
+
const spec = specifier.trim();
|
|
155
|
+
const normalized = normalizeFilePath(spec);
|
|
156
|
+
const lower = normalized.toLowerCase();
|
|
157
|
+
if (/\b(dist|build|out|target|bin)\b/.test(lower)) {
|
|
158
|
+
return { kind: "build-output", severity: "low" };
|
|
159
|
+
}
|
|
160
|
+
if (/\b(generated|gen|proto)\b/.test(lower)) {
|
|
161
|
+
return { kind: "generated-file", severity: "low" };
|
|
162
|
+
}
|
|
163
|
+
if (/^[@a-zA-Z0-9_-]+(?:\/[^./][^/]*)?$/.test(spec)) {
|
|
164
|
+
return { kind: "external-package", severity: "low" };
|
|
165
|
+
}
|
|
166
|
+
if (spec.startsWith("@") || spec.startsWith("~") || spec.startsWith("#")) {
|
|
167
|
+
return { kind: "path-alias", severity: "med" };
|
|
168
|
+
}
|
|
169
|
+
if (/^\.\.?\//.test(spec) && /\.(js|jsx|mjs|cjs)$/.test(lower)) {
|
|
170
|
+
return { kind: "generated-output-missing", severity: "med" };
|
|
171
|
+
}
|
|
172
|
+
if (/^\.\.?\//.test(spec)) {
|
|
173
|
+
return { kind: "missing-source", severity: "med" };
|
|
174
|
+
}
|
|
175
|
+
return { kind: "false-positive-possible", severity: "low" };
|
|
176
|
+
}
|
|
177
|
+
function buildInternalEdgeIndex(dependencies) {
|
|
178
|
+
const edges = new Map();
|
|
179
|
+
for (const dependency of dependencies) {
|
|
180
|
+
if (dependency.dependencyType !== "internal" || !dependency.toPath)
|
|
181
|
+
continue;
|
|
182
|
+
const fromModule = getModuleKey(dependency.fromPath);
|
|
183
|
+
const toModule = getModuleKey(dependency.toPath);
|
|
184
|
+
const key = `${fromModule}\0${toModule}`;
|
|
185
|
+
if (!edges.has(key))
|
|
186
|
+
edges.set(key, dependency);
|
|
187
|
+
}
|
|
188
|
+
return edges;
|
|
189
|
+
}
|
|
190
|
+
function severityForCycle(from, to) {
|
|
191
|
+
const pair = `${from} ${to}`;
|
|
192
|
+
if (/src\/core|src\/storage|core|storage/.test(pair))
|
|
193
|
+
return "high";
|
|
194
|
+
return "med";
|
|
195
|
+
}
|
|
196
|
+
function suggestedCycleFix(from, to) {
|
|
197
|
+
return `move shared helpers/types between ${from} and ${to} into a lower-level module`;
|
|
198
|
+
}
|
|
199
|
+
function findCycleDetails(architecture, dependencies = []) {
|
|
200
|
+
const internalDependencies = architecture.dependency_map?.internal ?? {};
|
|
201
|
+
const edgeIndex = buildInternalEdgeIndex(dependencies);
|
|
202
|
+
const cycles = [];
|
|
203
|
+
const seenCycles = new Set();
|
|
204
|
+
for (const [from, tos] of Object.entries(internalDependencies)) {
|
|
205
|
+
for (const to of tos) {
|
|
206
|
+
const pair = [from, to].sort().join(" <-> ");
|
|
207
|
+
if (seenCycles.has(pair))
|
|
208
|
+
continue;
|
|
209
|
+
if (!internalDependencies[to]?.includes(from))
|
|
210
|
+
continue;
|
|
211
|
+
cycles.push({
|
|
212
|
+
from,
|
|
213
|
+
to,
|
|
214
|
+
severity: severityForCycle(from, to),
|
|
215
|
+
forward: edgeIndex.get(`${from}\0${to}`),
|
|
216
|
+
backward: edgeIndex.get(`${to}\0${from}`),
|
|
217
|
+
fix: suggestedCycleFix(from, to),
|
|
218
|
+
});
|
|
219
|
+
seenCycles.add(pair);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return cycles.sort((a, b) => `${a.from} ${a.to}`.localeCompare(`${b.from} ${b.to}`));
|
|
223
|
+
}
|
|
224
|
+
function formatCycleEdge(edge, from, to) {
|
|
225
|
+
if (!edge?.toPath)
|
|
226
|
+
return ` ${from} -> ${to}`;
|
|
227
|
+
return ` ${edge.fromPath} -> ${edge.toPath} via=${edge.toSpecifier}`;
|
|
228
|
+
}
|
|
229
|
+
function collectArchitectureActions(cycles, unresolvedEntries) {
|
|
230
|
+
const actions = [];
|
|
231
|
+
const highCycle = cycles.find((cycle) => cycle.severity === "high") ?? cycles[0];
|
|
232
|
+
if (highCycle) {
|
|
233
|
+
actions.push(`Break ${highCycle.from} <-> ${highCycle.to}: ${highCycle.fix}.`);
|
|
234
|
+
}
|
|
235
|
+
const firstUnresolved = unresolvedEntries.find(([, values]) => values.length > 0);
|
|
236
|
+
if (firstUnresolved) {
|
|
237
|
+
const [from, values] = firstUnresolved;
|
|
238
|
+
const first = values[0];
|
|
239
|
+
const classified = classifyUnresolvedDependency(first);
|
|
240
|
+
actions.push(`Verify unresolved ${from} -> ${first} kind=${classified.kind}.`);
|
|
241
|
+
}
|
|
242
|
+
if (cycles.length > 0) {
|
|
243
|
+
actions.push("Add architecture rules for intended one-way module boundaries.");
|
|
244
|
+
}
|
|
245
|
+
return actions.slice(0, 3);
|
|
246
|
+
}
|
|
136
247
|
function renderExternalCount(key, values, localPrefix) {
|
|
137
248
|
const count = values[0];
|
|
138
249
|
const label = relativePath(key, localPrefix);
|
|
@@ -152,7 +263,7 @@ function printExternalSection(label, entries) {
|
|
|
152
263
|
console.log(line);
|
|
153
264
|
}
|
|
154
265
|
}
|
|
155
|
-
function formatPlain(architecture) {
|
|
266
|
+
function formatPlain(architecture, dependencies = []) {
|
|
156
267
|
console.log("File stats by language");
|
|
157
268
|
const fileEntries = Object.entries(architecture.file_stats ?? {}).sort((a, b) => a[0].localeCompare(b[0]));
|
|
158
269
|
if (fileEntries.length === 0) {
|
|
@@ -175,32 +286,37 @@ function formatPlain(architecture) {
|
|
|
175
286
|
}
|
|
176
287
|
const internalEntries = Object.entries(architecture.dependency_map?.internal ?? {}).sort((a, b) => a[0].localeCompare(b[0]));
|
|
177
288
|
printDependencySection("Module dependency graph", internalEntries);
|
|
178
|
-
const
|
|
179
|
-
const cycles = [];
|
|
180
|
-
const seenCycles = new Set();
|
|
181
|
-
for (const [from, tos] of Object.entries(internalDependencies)) {
|
|
182
|
-
for (const to of tos) {
|
|
183
|
-
const pair = [from, to].sort().join(" <-> ");
|
|
184
|
-
if (seenCycles.has(pair)) {
|
|
185
|
-
continue;
|
|
186
|
-
}
|
|
187
|
-
if (internalDependencies[to]?.includes(from)) {
|
|
188
|
-
cycles.push(pair);
|
|
189
|
-
seenCycles.add(pair);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
289
|
+
const cycles = findCycleDetails(architecture, dependencies);
|
|
193
290
|
if (cycles.length > 0) {
|
|
194
291
|
console.log("\n⚠ Cyclic dependencies detected:");
|
|
195
|
-
for (const cycle of cycles
|
|
196
|
-
console.log(`
|
|
292
|
+
for (const cycle of cycles) {
|
|
293
|
+
console.log(`CYCLE sev=${cycle.severity} ${cycle.from} <-> ${cycle.to}`);
|
|
294
|
+
console.log(formatCycleEdge(cycle.forward, cycle.from, cycle.to));
|
|
295
|
+
console.log(formatCycleEdge(cycle.backward, cycle.to, cycle.from));
|
|
296
|
+
console.log(` fix=${cycle.fix}`);
|
|
197
297
|
}
|
|
198
298
|
}
|
|
199
299
|
const externalSummary = summarizeExternalDependencies(architecture.dependency_map?.external ?? {});
|
|
200
300
|
const extEntries = Object.entries(externalSummary).sort((a, b) => a[0].localeCompare(b[0]));
|
|
201
301
|
printExternalSection("External dependencies summary", extEntries);
|
|
202
302
|
const unresolvedEntries = Object.entries(architecture.dependency_map?.unresolved ?? {}).sort((a, b) => a[0].localeCompare(b[0]));
|
|
203
|
-
|
|
303
|
+
console.log("Unresolved dependencies");
|
|
304
|
+
if (unresolvedEntries.length === 0) {
|
|
305
|
+
console.log(" none");
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
for (const [from, values] of unresolvedEntries) {
|
|
309
|
+
for (const value of values) {
|
|
310
|
+
const classified = classifyUnresolvedDependency(value);
|
|
311
|
+
console.log(`UNRESOLVED sev=${classified.severity} ${from} -> ${value} kind=${classified.kind}`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
const actions = collectArchitectureActions(cycles, unresolvedEntries);
|
|
316
|
+
if (actions.length > 0) {
|
|
317
|
+
console.log("\nActions:");
|
|
318
|
+
actions.forEach((action, index) => console.log(`${index + 1}. ${action}`));
|
|
319
|
+
}
|
|
204
320
|
}
|
|
205
321
|
function registerArchitectureCommand(program) {
|
|
206
322
|
program
|
|
@@ -230,9 +346,14 @@ function registerArchitectureCommand(program) {
|
|
|
230
346
|
const metadata = new sqlite_js_1.SqliteMetadataStore(dbPath);
|
|
231
347
|
try {
|
|
232
348
|
await metadata.initialize();
|
|
233
|
-
await (0, ensure_indexed_js_1.ensureIndexed)(metadata, resolvedProjectPath, {
|
|
349
|
+
const indexResult = await (0, ensure_indexed_js_1.ensureIndexed)(metadata, resolvedProjectPath, {
|
|
234
350
|
silent: !process.stderr.isTTY,
|
|
235
351
|
});
|
|
352
|
+
console.log((0, compact_js_1.formatAutoIndexResult)(indexResult));
|
|
353
|
+
if (indexResult.status === "failed") {
|
|
354
|
+
process.exitCode = 1;
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
236
357
|
const snapshot = await metadata.getLatestCompletedSnapshot(types_js_1.DEFAULT_PROJECT_ID);
|
|
237
358
|
if (!snapshot) {
|
|
238
359
|
throw new Error("Auto-indexing did not produce a completed snapshot.");
|
|
@@ -287,7 +408,8 @@ function registerArchitectureCommand(program) {
|
|
|
287
408
|
};
|
|
288
409
|
}
|
|
289
410
|
}
|
|
290
|
-
|
|
411
|
+
const dependencies = await metadata.listDependencies(types_js_1.DEFAULT_PROJECT_ID, snapshot.id);
|
|
412
|
+
formatPlain(visibleArchitecture, dependencies);
|
|
291
413
|
}
|
|
292
414
|
catch (error) {
|
|
293
415
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../../src/cli/commands/architecture.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../../src/cli/commands/architecture.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,13 +10,72 @@ const logger_js_1 = require("../../core/logger.js");
|
|
|
10
10
|
const types_js_1 = require("../../core/types.js");
|
|
11
11
|
const sqlite_js_1 = require("../../storage/sqlite.js");
|
|
12
12
|
const ensure_indexed_js_1 = require("./ensure-indexed.js");
|
|
13
|
+
const compact_js_1 = require("../format/compact.js");
|
|
14
|
+
const test_hints_js_1 = require("../test-hints.js");
|
|
13
15
|
const project_root_js_1 = require("../project-root.js");
|
|
16
|
+
function normalizeDirection(value) {
|
|
17
|
+
if (value === "callers" || value === "callees" || value === "both") {
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
throw new Error(`Invalid --direction "${value}". Expected callers, callees, or both.`);
|
|
21
|
+
}
|
|
22
|
+
function compactSpecifier(value) {
|
|
23
|
+
return value.replace(/\s+/g, " ").trim();
|
|
24
|
+
}
|
|
25
|
+
function formatImportEdge(edge, prefix, showEdges) {
|
|
26
|
+
const depth = edge.depth > 1 ? ` d=${edge.depth}` : "";
|
|
27
|
+
if (!showEdges || !edge.via)
|
|
28
|
+
return `${prefix} ${edge.path}${depth}`;
|
|
29
|
+
const via = compactSpecifier(edge.via);
|
|
30
|
+
const kind = edge.kind ? ` kind=${edge.kind}` : "";
|
|
31
|
+
return `${prefix} ${edge.path}${depth} via=${via}${kind}`;
|
|
32
|
+
}
|
|
33
|
+
function sectionCountLabel(edges, depth) {
|
|
34
|
+
if (depth <= 1)
|
|
35
|
+
return `direct=${edges.length}`;
|
|
36
|
+
const direct = edges.filter((edge) => edge.depth === 1).length;
|
|
37
|
+
return `direct=${direct} total=${edges.length}`;
|
|
38
|
+
}
|
|
39
|
+
function riskLevel(importedBy, imports) {
|
|
40
|
+
if (importedBy >= 5 || imports >= 12)
|
|
41
|
+
return "high";
|
|
42
|
+
if (importedBy >= 2 || imports >= 6)
|
|
43
|
+
return "med";
|
|
44
|
+
return "low";
|
|
45
|
+
}
|
|
46
|
+
function appendUniqueEdge(edges, seen, edge) {
|
|
47
|
+
const key = `${edge.path}\0${edge.depth}`;
|
|
48
|
+
if (seen.has(key))
|
|
49
|
+
return;
|
|
50
|
+
seen.add(key);
|
|
51
|
+
edges.push(edge);
|
|
52
|
+
}
|
|
53
|
+
function toImportedByEdge(dep, depth) {
|
|
54
|
+
return {
|
|
55
|
+
path: dep.fromPath,
|
|
56
|
+
via: dep.toSpecifier,
|
|
57
|
+
kind: dep.kind,
|
|
58
|
+
depth,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function toImportsEdge(dep, depth) {
|
|
62
|
+
if (dep.dependencyType !== "internal" || !dep.toPath)
|
|
63
|
+
return null;
|
|
64
|
+
return {
|
|
65
|
+
path: dep.toPath,
|
|
66
|
+
via: dep.toSpecifier,
|
|
67
|
+
kind: dep.kind,
|
|
68
|
+
depth,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
14
71
|
function registerDepsCommand(program) {
|
|
15
72
|
program
|
|
16
73
|
.command("deps <path>")
|
|
17
|
-
.description("Show
|
|
18
|
-
.option("--direction <dir>", "callers
|
|
74
|
+
.description("Show module import dependencies for a path")
|
|
75
|
+
.option("--direction <dir>", "callers/imported-by, callees/imports, or both", "both")
|
|
19
76
|
.option("--depth <n>", "traversal depth (default: 1)", "1")
|
|
77
|
+
.option("--show-edges", "show import specifier reasons for dependency edges")
|
|
78
|
+
.option("--tests", "show nearest/impacted tests and suggested verification")
|
|
20
79
|
.action(async (targetPath, options) => {
|
|
21
80
|
let resolvedProjectPath;
|
|
22
81
|
try {
|
|
@@ -39,15 +98,22 @@ function registerDepsCommand(program) {
|
|
|
39
98
|
const metadata = new sqlite_js_1.SqliteMetadataStore(dbPath);
|
|
40
99
|
try {
|
|
41
100
|
await metadata.initialize();
|
|
42
|
-
await (0, ensure_indexed_js_1.ensureIndexed)(metadata, resolvedProjectPath, {
|
|
101
|
+
const indexResult = await (0, ensure_indexed_js_1.ensureIndexed)(metadata, resolvedProjectPath, {
|
|
43
102
|
silent: !process.stderr.isTTY,
|
|
44
103
|
});
|
|
104
|
+
console.log((0, compact_js_1.formatAutoIndexResult)(indexResult));
|
|
105
|
+
if (indexResult.status === "failed") {
|
|
106
|
+
process.exitCode = 1;
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
45
109
|
const snapshot = await metadata.getLatestCompletedSnapshot(types_js_1.DEFAULT_PROJECT_ID);
|
|
46
110
|
if (!snapshot) {
|
|
47
111
|
throw new Error("No completed snapshot found.");
|
|
48
112
|
}
|
|
49
|
-
const direction = options?.direction ?? "both";
|
|
113
|
+
const direction = normalizeDirection(options?.direction ?? "both");
|
|
50
114
|
const depth = Math.max(1, Math.min(5, parseInt(options?.depth ?? "1", 10)));
|
|
115
|
+
const showEdges = options?.showEdges === true;
|
|
116
|
+
const includeTests = options?.tests === true;
|
|
51
117
|
// Normalize path (strip leading ./)
|
|
52
118
|
const normalizedPath = targetPath.replace(/^\.\//, "");
|
|
53
119
|
const matchedFiles = await metadata.listFiles(types_js_1.DEFAULT_PROJECT_ID, snapshot.id, { pathPrefix: normalizedPath });
|
|
@@ -57,13 +123,14 @@ function registerDepsCommand(program) {
|
|
|
57
123
|
const seedPaths = matchedFiles.map((file) => file.path);
|
|
58
124
|
const result = {
|
|
59
125
|
path: normalizedPath,
|
|
60
|
-
|
|
61
|
-
|
|
126
|
+
importedBy: [],
|
|
127
|
+
imports: [],
|
|
62
128
|
};
|
|
63
129
|
// BFS traversal
|
|
64
130
|
if (direction === "callers" || direction === "both") {
|
|
65
131
|
const visited = new Set();
|
|
66
132
|
const queue = [...seedPaths];
|
|
133
|
+
const seenEdges = new Set();
|
|
67
134
|
for (let d = 0; d < depth && queue.length > 0; d++) {
|
|
68
135
|
const next = [];
|
|
69
136
|
for (const p of queue) {
|
|
@@ -73,18 +140,19 @@ function registerDepsCommand(program) {
|
|
|
73
140
|
const dependents = await metadata.getDependents(types_js_1.DEFAULT_PROJECT_ID, snapshot.id, p);
|
|
74
141
|
for (const dep of dependents) {
|
|
75
142
|
if (!visited.has(dep.fromPath)) {
|
|
76
|
-
result.
|
|
143
|
+
appendUniqueEdge(result.importedBy, seenEdges, toImportedByEdge(dep, d + 1));
|
|
77
144
|
next.push(dep.fromPath);
|
|
78
145
|
}
|
|
79
146
|
}
|
|
80
147
|
}
|
|
81
148
|
queue.splice(0, queue.length, ...next);
|
|
82
149
|
}
|
|
83
|
-
result.
|
|
150
|
+
result.importedBy.sort((a, b) => a.path.localeCompare(b.path));
|
|
84
151
|
}
|
|
85
152
|
if (direction === "callees" || direction === "both") {
|
|
86
153
|
const visited = new Set();
|
|
87
154
|
const queue = [...seedPaths];
|
|
155
|
+
const seenEdges = new Set();
|
|
88
156
|
for (let d = 0; d < depth && queue.length > 0; d++) {
|
|
89
157
|
const next = [];
|
|
90
158
|
for (const p of queue) {
|
|
@@ -93,41 +161,68 @@ function registerDepsCommand(program) {
|
|
|
93
161
|
visited.add(p);
|
|
94
162
|
const deps = await metadata.listDependencies(types_js_1.DEFAULT_PROJECT_ID, snapshot.id, p);
|
|
95
163
|
for (const dep of deps) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
164
|
+
const edge = toImportsEdge(dep, d + 1);
|
|
165
|
+
if (edge && !visited.has(edge.path)) {
|
|
166
|
+
appendUniqueEdge(result.imports, seenEdges, edge);
|
|
167
|
+
next.push(edge.path);
|
|
101
168
|
}
|
|
102
169
|
}
|
|
103
170
|
}
|
|
104
171
|
queue.splice(0, queue.length, ...next);
|
|
105
172
|
}
|
|
106
|
-
result.
|
|
173
|
+
result.imports.sort((a, b) => a.path.localeCompare(b.path));
|
|
107
174
|
}
|
|
108
|
-
console.log(`
|
|
175
|
+
console.log(`M ${result.path} mode=module-imports`);
|
|
109
176
|
if (direction === "callers" || direction === "both") {
|
|
110
|
-
if (result.
|
|
111
|
-
console.log("\
|
|
177
|
+
if (result.importedBy.length === 0) {
|
|
178
|
+
console.log("\nimported-by (Callers): none");
|
|
112
179
|
}
|
|
113
180
|
else {
|
|
114
|
-
console.log(`\
|
|
115
|
-
for (const caller of result.
|
|
116
|
-
console.log(
|
|
181
|
+
console.log(`\nimported-by (Callers) ${sectionCountLabel(result.importedBy, depth)}:`);
|
|
182
|
+
for (const caller of result.importedBy) {
|
|
183
|
+
console.log(formatImportEdge(caller, "<-", showEdges));
|
|
117
184
|
}
|
|
118
185
|
}
|
|
119
186
|
}
|
|
120
187
|
if (direction === "callees" || direction === "both") {
|
|
121
|
-
if (result.
|
|
122
|
-
console.log("\
|
|
188
|
+
if (result.imports.length === 0) {
|
|
189
|
+
console.log("\nimports (Callees): none");
|
|
123
190
|
}
|
|
124
191
|
else {
|
|
125
|
-
console.log(`\
|
|
126
|
-
for (const callee of result.
|
|
127
|
-
console.log(
|
|
192
|
+
console.log(`\nimports (Callees) ${sectionCountLabel(result.imports, depth)}:`);
|
|
193
|
+
for (const callee of result.imports) {
|
|
194
|
+
console.log(formatImportEdge(callee, "->", showEdges));
|
|
128
195
|
}
|
|
129
196
|
}
|
|
130
197
|
}
|
|
198
|
+
const risk = riskLevel(result.importedBy.length, result.imports.length);
|
|
199
|
+
console.log(`\nRisk: ${risk} imported-by=${result.importedBy.length} imports=${result.imports.length} mode=module-imports`);
|
|
200
|
+
if (includeTests) {
|
|
201
|
+
const [allFiles, allDependencies] = await Promise.all([
|
|
202
|
+
metadata.listFiles(types_js_1.DEFAULT_PROJECT_ID, snapshot.id, {}),
|
|
203
|
+
metadata.listDependencies(types_js_1.DEFAULT_PROJECT_ID, snapshot.id),
|
|
204
|
+
]);
|
|
205
|
+
const testHints = (0, test_hints_js_1.findNearestTests)({
|
|
206
|
+
targetPaths: seedPaths,
|
|
207
|
+
files: allFiles,
|
|
208
|
+
dependencies: allDependencies,
|
|
209
|
+
maxTests: 3,
|
|
210
|
+
});
|
|
211
|
+
const testLines = (0, test_hints_js_1.formatTestHints)(testHints);
|
|
212
|
+
if (testLines.length > 0) {
|
|
213
|
+
console.log("");
|
|
214
|
+
for (const line of testLines) {
|
|
215
|
+
console.log(line);
|
|
216
|
+
}
|
|
217
|
+
const verify = (0, test_hints_js_1.formatSuggestedVerification)(testHints);
|
|
218
|
+
if (verify)
|
|
219
|
+
console.log(verify);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
console.log("\nTests: none");
|
|
223
|
+
console.log("Verify: inspect package scripts");
|
|
224
|
+
}
|
|
225
|
+
}
|
|
131
226
|
}
|
|
132
227
|
catch (error) {
|
|
133
228
|
const message = error instanceof Error ? error.message : String(error);
|