indexer-cli 0.9.10 → 0.9.12
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 +2 -15
- package/dist/cli/commands/skills.js +0 -30
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/entry.js +2 -3
- package/dist/cli/entry.js.map +1 -1
- package/dist/cli/help-text.js +1 -1
- package/dist/cli/help-text.js.map +1 -1
- package/dist/core/skills-version.d.ts +1 -1
- package/dist/core/skills-version.js +1 -1
- package/dist/core/version-check.js +1 -0
- package/dist/core/version-check.js.map +1 -1
- package/package.json +1 -3
- package/dist/cli/commands/context.d.ts +0 -2
- package/dist/cli/commands/context.js +0 -298
- package/dist/cli/commands/context.js.map +0 -1
package/README.md
CHANGED
|
@@ -54,10 +54,9 @@ npx indexer-cli search "authentication middleware"
|
|
|
54
54
|
|
|
55
55
|
After `init`, the repo contains focused skills like `.claude/skills/semantic-search/SKILL.md`,
|
|
56
56
|
`.claude/skills/repo-structure/SKILL.md`, `.claude/skills/repo-architecture/SKILL.md`,
|
|
57
|
-
`.claude/skills/
|
|
58
|
-
`.claude/skills/dependency-trace/SKILL.md`, so coding agents can load
|
|
57
|
+
`.claude/skills/symbol-explain/SKILL.md`, and `.claude/skills/dependency-trace/SKILL.md`, so coding agents can load
|
|
59
58
|
the right indexed discovery workflow for
|
|
60
|
-
`npx indexer-cli search`, `npx indexer-cli structure`, `npx indexer-cli architecture`,
|
|
59
|
+
`npx indexer-cli search`, `npx indexer-cli structure`, `npx indexer-cli architecture`,
|
|
61
60
|
`npx indexer-cli explain`, and `npx indexer-cli deps` before they start burning tokens on broad filesystem scans.
|
|
62
61
|
|
|
63
62
|
## Why agents save tokens with this
|
|
@@ -84,7 +83,6 @@ Those skills cover repository discovery flows such as:
|
|
|
84
83
|
npx indexer-cli search "<query>"
|
|
85
84
|
npx indexer-cli structure --path-prefix src/<area>
|
|
86
85
|
npx indexer-cli architecture
|
|
87
|
-
npx indexer-cli context --scope relevant-to:src/<area>
|
|
88
86
|
```
|
|
89
87
|
|
|
90
88
|
All discovery commands return human-readable text output, optimized for coding agents.
|
|
@@ -156,17 +154,6 @@ dependency graph.
|
|
|
156
154
|
| `--path-prefix <string>` | Limit output to files under this path |
|
|
157
155
|
| `--include-fixtures` | Include fixture/vendor paths in output |
|
|
158
156
|
|
|
159
|
-
### `npx indexer-cli context`
|
|
160
|
-
|
|
161
|
-
Output dense project context aggregated from the index. Useful for getting a concise overview of a codebase area
|
|
162
|
-
without pulling in entire files.
|
|
163
|
-
|
|
164
|
-
| Option | Default | Description |
|
|
165
|
-
|-----------------------|---------|-----------------------------------------------------------------|
|
|
166
|
-
| `--scope <scope>` | all | `all`, `changed` (uncommitted changes), or `relevant-to:<path>` |
|
|
167
|
-
| `--max-deps <number>` | 30 | Maximum number of dependency edges to output |
|
|
168
|
-
| `--include-fixtures` | — | Include fixture/vendor paths in output |
|
|
169
|
-
|
|
170
157
|
### `npx indexer-cli explain <symbol>`
|
|
171
158
|
|
|
172
159
|
Show context for a symbol: its signature, callers, and containing module. Use this to quickly understand what a
|
|
@@ -212,36 +212,6 @@ Imports and preamble are excluded by default. Use \`--include-imports\` to inclu
|
|
|
212
212
|
],
|
|
213
213
|
cliReference: ["Options: --path-prefix <string>, --include-fixtures."],
|
|
214
214
|
},
|
|
215
|
-
{
|
|
216
|
-
name: "repo-context",
|
|
217
|
-
directory: "repo-context",
|
|
218
|
-
description: "FIRST choice for changed-area and subsystem summaries. Load this before opening many files when you need whole-repo orientation, changed-scope context, or a dependency-neighborhood snapshot without exact implementation snippets. ALWAYS pass --scope; without it the output can exceed 5000 tokens.",
|
|
219
|
-
heading: "Use repo-context for dense summaries",
|
|
220
|
-
useWhen: "Use this when the agent wants a compressed view of a subsystem, changed area, or dependency neighborhood without opening many files.",
|
|
221
|
-
focusHint: "Keep the scope explicit so the summary stays dense instead of drifting across the repo.",
|
|
222
|
-
allowedTools: ["Bash(npx -y indexer-cli context:*)"],
|
|
223
|
-
rules: [
|
|
224
|
-
"Prefer context when you want breadth over exact source snippets.",
|
|
225
|
-
"ALWAYS use --scope — default `--scope all` outputs every symbol in the repo. Use --scope relevant-to:<path> for a focused neighborhood or --scope changed for uncommitted changes.",
|
|
226
|
-
"Use --compact to omit symbol signatures and show only file::name (kind) — saves ~50% tokens.",
|
|
227
|
-
"Lower --max-deps when you need a tighter prompt budget.",
|
|
228
|
-
"Tests are excluded by default. Add --include-tests to see test files and symbols.",
|
|
229
|
-
],
|
|
230
|
-
skipWhen: [
|
|
231
|
-
"You need exact implementation locations or ranked chunks",
|
|
232
|
-
"You need a file tree or architecture graph instead of a summary",
|
|
233
|
-
],
|
|
234
|
-
commandSamples: [
|
|
235
|
-
"npx -y indexer-cli context --scope relevant-to:<area>",
|
|
236
|
-
"npx -y indexer-cli context --scope changed",
|
|
237
|
-
"npx -y indexer-cli context --scope relevant-to:<area> --max-deps 10 --compact",
|
|
238
|
-
],
|
|
239
|
-
cliReference: [
|
|
240
|
-
"Options: --scope <scope>, --max-deps <number>, --include-fixtures, --include-tests, --compact.",
|
|
241
|
-
"Allowed --scope values: all, changed, relevant-to:<path>.",
|
|
242
|
-
"--compact omits symbol signatures for token savings. --include-tests includes test files.",
|
|
243
|
-
],
|
|
244
|
-
},
|
|
245
215
|
{
|
|
246
216
|
name: "symbol-explain",
|
|
247
217
|
directory: "symbol-explain",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/commands/skills.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/commands/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/entry.js
CHANGED
|
@@ -8,10 +8,10 @@ const structure_js_1 = require("./commands/structure.js");
|
|
|
8
8
|
const architecture_js_1 = require("./commands/architecture.js");
|
|
9
9
|
const uninstall_js_1 = require("./commands/uninstall.js");
|
|
10
10
|
const setup_js_1 = require("./commands/setup.js");
|
|
11
|
-
const context_js_1 = require("./commands/context.js");
|
|
12
11
|
const explain_js_1 = require("./commands/explain.js");
|
|
13
12
|
const deps_js_1 = require("./commands/deps.js");
|
|
14
13
|
const version_js_1 = require("../core/version.js");
|
|
14
|
+
const skills_version_js_1 = require("../core/skills-version.js");
|
|
15
15
|
const version_check_js_1 = require("../core/version-check.js");
|
|
16
16
|
const help_text_js_1 = require("./help-text.js");
|
|
17
17
|
const SKIP_MIGRATION_COMMANDS = new Set(["setup", "init", "uninstall"]);
|
|
@@ -31,7 +31,7 @@ function isHandledCommanderExit(error) {
|
|
|
31
31
|
commander_1.program
|
|
32
32
|
.name("indexer-cli")
|
|
33
33
|
.description("Lightweight project indexer with semantic search. Run project commands from the root of the target project; `setup` can run anywhere.")
|
|
34
|
-
.version(version_js_1.PACKAGE_VERSION)
|
|
34
|
+
.version(`${version_js_1.PACKAGE_VERSION} (skills: ${skills_version_js_1.SKILLS_VERSION})`)
|
|
35
35
|
.addHelpText("after", `\n${help_text_js_1.PROJECT_ROOT_PROGRAM_HELP}\n`)
|
|
36
36
|
.exitOverride();
|
|
37
37
|
(0, setup_js_1.registerSetupCommand)(commander_1.program);
|
|
@@ -40,7 +40,6 @@ commander_1.program
|
|
|
40
40
|
(0, search_js_1.registerSearchCommand)(commander_1.program);
|
|
41
41
|
(0, structure_js_1.registerStructureCommand)(commander_1.program);
|
|
42
42
|
(0, architecture_js_1.registerArchitectureCommand)(commander_1.program);
|
|
43
|
-
(0, context_js_1.registerContextCommand)(commander_1.program);
|
|
44
43
|
(0, explain_js_1.registerExplainCommand)(commander_1.program);
|
|
45
44
|
(0, deps_js_1.registerDepsCommand)(commander_1.program);
|
|
46
45
|
(0, uninstall_js_1.registerUninstallCommand)(commander_1.program);
|
package/dist/cli/entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/cli/entry.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,gDAAyD;AACzD,kDAA2D;AAC3D,oDAA6D;AAC7D,0DAAmE;AACnE,gEAAyE;AACzE,0DAAmE;AACnE,kDAA2D;AAC3D,sDAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/cli/entry.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,gDAAyD;AACzD,kDAA2D;AAC3D,oDAA6D;AAC7D,0DAAmE;AACnE,gEAAyE;AACzE,0DAAmE;AACnE,kDAA2D;AAC3D,sDAA+D;AAC/D,gDAAyD;AACzD,mDAAqD;AACrD,iEAA2D;AAC3D,+DAGkC;AAClC,iDAA2D;AAE3D,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAExE,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC5C,yBAAyB;IACzB,gBAAgB;IAChB,mBAAmB;IACnB,0BAA0B;CAC1B,CAAC,CAAC;AAEH,SAAS,sBAAsB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,mBAAO;KACL,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CACX,uIAAuI,CACvI;KACA,OAAO,CAAC,GAAG,4BAAe,aAAa,kCAAc,GAAG,CAAC;KACzD,WAAW,CAAC,OAAO,EAAE,KAAK,wCAAyB,IAAI,CAAC;KACxD,YAAY,EAAE,CAAC;AAEjB,IAAA,+BAAoB,EAAC,mBAAO,CAAC,CAAC;AAC9B,IAAA,6BAAmB,EAAC,mBAAO,CAAC,CAAC;AAC7B,IAAA,+BAAoB,EAAC,mBAAO,CAAC,CAAC;AAC9B,IAAA,iCAAqB,EAAC,mBAAO,CAAC,CAAC;AAC/B,IAAA,uCAAwB,EAAC,mBAAO,CAAC,CAAC;AAClC,IAAA,6CAA2B,EAAC,mBAAO,CAAC,CAAC;AACrC,IAAA,mCAAsB,EAAC,mBAAO,CAAC,CAAC;AAChC,IAAA,6BAAmB,EAAC,mBAAO,CAAC,CAAC;AAC7B,IAAA,uCAAwB,EAAC,mBAAO,CAAC,CAAC;AAElC,mBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE;IAC9D,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAA,0CAAuB,GAAE,CAAC;QAChC,MAAM,IAAA,wCAAqB,GAAE,CAAC;IAC/B,CAAC;AACF,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IAClB,IAAI,CAAC;QACJ,MAAM,mBAAO,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/cli/help-text.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PROJECT_ROOT_PROGRAM_HELP = exports.PROJECT_ROOT_COMMAND_HELP = void 0;
|
|
4
4
|
exports.PROJECT_ROOT_COMMAND_HELP = "Run this command from the root of the target project.";
|
|
5
5
|
exports.PROJECT_ROOT_PROGRAM_HELP = [
|
|
6
|
-
"Project commands (`init`, `index`, `search`, `structure`, `architecture`, `
|
|
6
|
+
"Project commands (`init`, `index`, `search`, `structure`, `architecture`, `explain`, `deps`, `uninstall`) must be run from the root of the target project.",
|
|
7
7
|
"`setup` only prepares local machine dependencies and can be run from anywhere.",
|
|
8
8
|
].join("\n");
|
|
9
9
|
//# sourceMappingURL=help-text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help-text.js","sourceRoot":"","sources":["../../src/cli/help-text.ts"],"names":[],"mappings":";;;AAAa,QAAA,yBAAyB,GACrC,uDAAuD,CAAC;AAE5C,QAAA,yBAAyB,GAAG;IACxC,
|
|
1
|
+
{"version":3,"file":"help-text.js","sourceRoot":"","sources":["../../src/cli/help-text.ts"],"names":[],"mappings":";;;AAAa,QAAA,yBAAyB,GACrC,uDAAuD,CAAC;AAE5C,QAAA,yBAAyB,GAAG;IACxC,4JAA4J;IAC5J,gFAAgF;CAChF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SKILLS_VERSION =
|
|
1
|
+
export declare const SKILLS_VERSION = 1232892283;
|
|
@@ -102,6 +102,7 @@ async function checkAndRefreshSkills() {
|
|
|
102
102
|
if (storedSkillsVersion === skills_version_js_1.SKILLS_VERSION) {
|
|
103
103
|
return false;
|
|
104
104
|
}
|
|
105
|
+
console.error(`indexer-cli: skills updated (version ${storedSkillsVersion ?? "none"} → ${skills_version_js_1.SKILLS_VERSION}). Refreshing .claude/skills/...`);
|
|
105
106
|
await (0, init_js_2.refreshClaudeSkills)(projectRoot);
|
|
106
107
|
const raw = (0, node_fs_1.readFileSync)(configPath, "utf8");
|
|
107
108
|
const parsed = JSON.parse(raw);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/core/version-check.ts"],"names":[],"mappings":";;;;;AAYA,kCAQC;AAQD,0DAyDC;AAED,
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/core/version-check.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "indexer-cli",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.12",
|
|
4
4
|
"description": "Lightweight CLI project indexer with semantic search via Ollama",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,8 +26,6 @@
|
|
|
26
26
|
"indexer-cli:init": "tsx bin/indexer-cli.js init",
|
|
27
27
|
"indexer-cli:uninstall": "tsx bin/indexer-cli.js uninstall -f",
|
|
28
28
|
"refresh-skills": "tsx bin/indexer-cli.js init --refresh-skills",
|
|
29
|
-
"install:global": "npm run build && npm link --force",
|
|
30
|
-
"uninstall:global": "npm unlink -g indexer-cli",
|
|
31
29
|
"test": "vitest run tests/unit/",
|
|
32
30
|
"test:full": "vitest run tests/unit/ tests/cli/ --testTimeout=180000",
|
|
33
31
|
"test:watch": "vitest",
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.registerContextCommand = registerContextCommand;
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
-
const config_js_1 = require("../../core/config.js");
|
|
9
|
-
const logger_js_1 = require("../../core/logger.js");
|
|
10
|
-
const types_js_1 = require("../../core/types.js");
|
|
11
|
-
const architecture_js_1 = require("../../engine/architecture.js");
|
|
12
|
-
const git_js_1 = require("../../engine/git.js");
|
|
13
|
-
const sqlite_js_1 = require("../../storage/sqlite.js");
|
|
14
|
-
const help_text_js_1 = require("../help-text.js");
|
|
15
|
-
const ensure_indexed_js_1 = require("./ensure-indexed.js");
|
|
16
|
-
const DEFAULT_TEST_EXCLUDE_PATH_PATTERNS = ["tests/**", "**/tests/**"];
|
|
17
|
-
function estimateTokens(data) {
|
|
18
|
-
let charCount = 0;
|
|
19
|
-
if (data.architecture) {
|
|
20
|
-
charCount += Object.entries(data.architecture.fileStats)
|
|
21
|
-
.map(([k, v]) => `${k}: ${v}`)
|
|
22
|
-
.join(", ").length;
|
|
23
|
-
charCount += data.architecture.entrypoints.join(", ").length;
|
|
24
|
-
}
|
|
25
|
-
for (const mod of data.modules)
|
|
26
|
-
charCount += mod.path.length + 1;
|
|
27
|
-
for (const sym of data.symbols) {
|
|
28
|
-
charCount +=
|
|
29
|
-
`${sym.file}::${sym.name} (${sym.kind})${sym.signature ? ` — ${sym.signature}` : ""}`
|
|
30
|
-
.length + 1;
|
|
31
|
-
}
|
|
32
|
-
for (const [from, to] of Object.entries(data.dependencies)) {
|
|
33
|
-
charCount += `${from} -> ${to.join(", ")}`.length + 1;
|
|
34
|
-
}
|
|
35
|
-
return Math.ceil(charCount / 4);
|
|
36
|
-
}
|
|
37
|
-
function parseMaxDeps(input) {
|
|
38
|
-
if (!input) {
|
|
39
|
-
return undefined;
|
|
40
|
-
}
|
|
41
|
-
const parsed = Number.parseInt(input, 10);
|
|
42
|
-
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
43
|
-
throw new Error("--max-deps must be a positive integer.");
|
|
44
|
-
}
|
|
45
|
-
return parsed;
|
|
46
|
-
}
|
|
47
|
-
function limitDependencies(dependencies, maxDeps) {
|
|
48
|
-
const entries = Object.entries(dependencies).sort((a, b) => a[0].localeCompare(b[0]));
|
|
49
|
-
if (maxDeps === undefined || entries.length <= maxDeps) {
|
|
50
|
-
return {
|
|
51
|
-
dependencies: Object.fromEntries(entries),
|
|
52
|
-
shown: entries.length,
|
|
53
|
-
total: entries.length,
|
|
54
|
-
truncated: false,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
return {
|
|
58
|
-
dependencies: Object.fromEntries(entries.slice(0, maxDeps)),
|
|
59
|
-
shown: maxDeps,
|
|
60
|
-
total: entries.length,
|
|
61
|
-
truncated: true,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
function normalizeScopePath(inputPath, resolvedProjectPath) {
|
|
65
|
-
const projectRelativePath = node_path_1.default.isAbsolute(inputPath)
|
|
66
|
-
? node_path_1.default.relative(resolvedProjectPath, inputPath)
|
|
67
|
-
: inputPath;
|
|
68
|
-
return projectRelativePath.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
69
|
-
}
|
|
70
|
-
function formatPlain(data, options) {
|
|
71
|
-
if (data.modules.length > 0) {
|
|
72
|
-
console.log("## Modules\n");
|
|
73
|
-
for (const mod of data.modules) {
|
|
74
|
-
console.log(mod.path);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (data.symbols.length > 0) {
|
|
78
|
-
console.log("\n## Key Symbols\n");
|
|
79
|
-
for (const sym of data.symbols) {
|
|
80
|
-
const sig = options?.compact
|
|
81
|
-
? ""
|
|
82
|
-
: sym.signature
|
|
83
|
-
? ` — ${sym.signature}`
|
|
84
|
-
: "";
|
|
85
|
-
console.log(`${sym.file}::${sym.name} (${sym.kind})${sig}`);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
const depEntries = Object.entries(data.dependencies).sort((a, b) => a[0].localeCompare(b[0]));
|
|
89
|
-
if (depEntries.length > 0) {
|
|
90
|
-
console.log("\n## Module Dependencies\n");
|
|
91
|
-
for (const [from, to] of depEntries) {
|
|
92
|
-
console.log(`${from} -> ${to.join(", ")}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
function registerContextCommand(program) {
|
|
97
|
-
program
|
|
98
|
-
.command("context")
|
|
99
|
-
.description("Output dense project context aggregated from the index")
|
|
100
|
-
.addHelpText("after", `\n${help_text_js_1.PROJECT_ROOT_COMMAND_HELP}\n`)
|
|
101
|
-
.option("--scope <scope>", "scope: all, changed (uncommitted changes), or relevant-to:<path>", "all")
|
|
102
|
-
.option("--max-deps <number>", "maximum number of dependency edges to output", "30")
|
|
103
|
-
.option("--include-fixtures", "include fixture/vendor paths in output")
|
|
104
|
-
.option("--include-tests", "include test paths in output")
|
|
105
|
-
.option("--compact", "use compact one-line-per-symbol output")
|
|
106
|
-
.action(async (options) => {
|
|
107
|
-
const resolvedProjectPath = process.cwd();
|
|
108
|
-
const dataDir = node_path_1.default.join(resolvedProjectPath, ".indexer-cli");
|
|
109
|
-
const dbPath = node_path_1.default.join(dataDir, "db.sqlite");
|
|
110
|
-
const maxDeps = parseMaxDeps(options?.maxDeps);
|
|
111
|
-
const scope = options?.scope ?? "all";
|
|
112
|
-
const relevantToPrefix = "relevant-to:";
|
|
113
|
-
(0, logger_js_1.initLogger)(dataDir);
|
|
114
|
-
config_js_1.config.load(dataDir);
|
|
115
|
-
const metadata = new sqlite_js_1.SqliteMetadataStore(dbPath);
|
|
116
|
-
try {
|
|
117
|
-
await metadata.initialize();
|
|
118
|
-
await (0, ensure_indexed_js_1.ensureIndexed)(metadata, resolvedProjectPath, {
|
|
119
|
-
silent: false,
|
|
120
|
-
});
|
|
121
|
-
const snapshot = await metadata.getLatestCompletedSnapshot(types_js_1.DEFAULT_PROJECT_ID);
|
|
122
|
-
if (!snapshot) {
|
|
123
|
-
throw new Error("No completed snapshot found.");
|
|
124
|
-
}
|
|
125
|
-
let scopeFilePaths = null;
|
|
126
|
-
let scopeWarning;
|
|
127
|
-
let normalizedTargetPath;
|
|
128
|
-
if (scope === "changed") {
|
|
129
|
-
const git = new git_js_1.SimpleGitOperations();
|
|
130
|
-
const changes = await git.getWorkingTreeChanges(resolvedProjectPath);
|
|
131
|
-
scopeFilePaths = new Set([...changes.added, ...changes.modified]);
|
|
132
|
-
}
|
|
133
|
-
const [files, allSymbols, archArtifact] = await Promise.all([
|
|
134
|
-
metadata.listFiles(types_js_1.DEFAULT_PROJECT_ID, snapshot.id),
|
|
135
|
-
metadata.listSymbols(types_js_1.DEFAULT_PROJECT_ID, snapshot.id),
|
|
136
|
-
metadata.getArtifact(types_js_1.DEFAULT_PROJECT_ID, snapshot.id, "architecture_snapshot", "project"),
|
|
137
|
-
]);
|
|
138
|
-
const rawArchitecture = archArtifact
|
|
139
|
-
? JSON.parse(archArtifact.dataJson)
|
|
140
|
-
: null;
|
|
141
|
-
const architecture = rawArchitecture
|
|
142
|
-
? options?.includeFixtures
|
|
143
|
-
? rawArchitecture
|
|
144
|
-
: (0, architecture_js_1.filterArchitectureSnapshot)(rawArchitecture, config_js_1.config.get("excludePaths"))
|
|
145
|
-
: null;
|
|
146
|
-
if (scope.startsWith(relevantToPrefix)) {
|
|
147
|
-
const targetPath = normalizeScopePath(scope.slice(relevantToPrefix.length), resolvedProjectPath);
|
|
148
|
-
normalizedTargetPath = targetPath.replace(/\/+$/, "");
|
|
149
|
-
// Strategy 1: exact file match → file-level 1-hop neighborhood
|
|
150
|
-
const targetFile = await metadata.getFile(types_js_1.DEFAULT_PROJECT_ID, snapshot.id, normalizedTargetPath);
|
|
151
|
-
if (targetFile) {
|
|
152
|
-
const [callees, callers] = await Promise.all([
|
|
153
|
-
metadata.listDependencies(types_js_1.DEFAULT_PROJECT_ID, snapshot.id, normalizedTargetPath),
|
|
154
|
-
metadata.getDependents(types_js_1.DEFAULT_PROJECT_ID, snapshot.id, normalizedTargetPath),
|
|
155
|
-
]);
|
|
156
|
-
const neighborhood = new Set([normalizedTargetPath]);
|
|
157
|
-
for (const dep of callees) {
|
|
158
|
-
if (dep.dependencyType === "internal" && dep.toPath) {
|
|
159
|
-
neighborhood.add(dep.toPath);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
for (const dep of callers) {
|
|
163
|
-
if (dep.dependencyType === "internal") {
|
|
164
|
-
neighborhood.add(dep.fromPath);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
if (neighborhood.size > 1) {
|
|
168
|
-
scopeFilePaths = neighborhood;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
scopeFilePaths = neighborhood;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
// Strategy 2: directory/module path → module-level expansion
|
|
176
|
-
const targetDirectoryPrefix = `${normalizedTargetPath}/`;
|
|
177
|
-
const moduleFiles = architecture?.module_files ?? {};
|
|
178
|
-
const dependencyMap = architecture?.dependency_map?.internal ?? {};
|
|
179
|
-
const targetModuleKey = Object.entries(moduleFiles).find(([, moduleFilePaths]) => moduleFilePaths.some((filePath) => normalizeScopePath(filePath, resolvedProjectPath) ===
|
|
180
|
-
normalizedTargetPath))?.[0];
|
|
181
|
-
const targetModuleKeys = targetModuleKey
|
|
182
|
-
? new Set([targetModuleKey])
|
|
183
|
-
: new Set(Object.entries(moduleFiles)
|
|
184
|
-
.filter(([, moduleFilePaths]) => moduleFilePaths.some((filePath) => normalizeScopePath(filePath, resolvedProjectPath).startsWith(targetDirectoryPrefix)))
|
|
185
|
-
.map(([moduleKey]) => moduleKey));
|
|
186
|
-
if (targetModuleKeys.size > 0) {
|
|
187
|
-
const relatedModuleKeys = new Set(targetModuleKeys);
|
|
188
|
-
for (const moduleKey of targetModuleKeys) {
|
|
189
|
-
for (const dependencyModule of dependencyMap[moduleKey] ??
|
|
190
|
-
[]) {
|
|
191
|
-
relatedModuleKeys.add(dependencyModule);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
for (const [fromModule, toModules] of Object.entries(dependencyMap)) {
|
|
195
|
-
if (toModules.some((toModule) => targetModuleKeys.has(toModule))) {
|
|
196
|
-
relatedModuleKeys.add(fromModule);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
scopeFilePaths = new Set(Array.from(relatedModuleKeys).flatMap((moduleKey) => moduleFiles[moduleKey] ?? []));
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
scopeWarning = `No indexed file or module found for path \"${normalizedTargetPath}\". Returning empty context.`;
|
|
203
|
-
scopeFilePaths = new Set();
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
const scopedFiles = scopeFilePaths !== null
|
|
208
|
-
? files.filter((file) => scopeFilePaths.has(file.path))
|
|
209
|
-
: files;
|
|
210
|
-
const excludePatterns = [
|
|
211
|
-
...(options?.includeFixtures ? [] : config_js_1.config.get("excludePaths")),
|
|
212
|
-
...(options?.includeTests
|
|
213
|
-
? []
|
|
214
|
-
: DEFAULT_TEST_EXCLUDE_PATH_PATTERNS),
|
|
215
|
-
];
|
|
216
|
-
const visibleFiles = excludePatterns.length === 0
|
|
217
|
-
? scopedFiles
|
|
218
|
-
: scopedFiles.filter((file) => !(0, architecture_js_1.matchesPathPatterns)(file.path, excludePatterns));
|
|
219
|
-
const filePathSet = new Set(visibleFiles.map((file) => file.path));
|
|
220
|
-
const visibleSymbols = allSymbols.filter((symbol) => filePathSet.has(symbol.filePath));
|
|
221
|
-
let scopedDependencies;
|
|
222
|
-
const isFileLevelScope = scopeFilePaths !== null &&
|
|
223
|
-
scopeFilePaths.size > 0 &&
|
|
224
|
-
normalizedTargetPath !== undefined &&
|
|
225
|
-
scopeFilePaths.has(normalizedTargetPath);
|
|
226
|
-
if (isFileLevelScope) {
|
|
227
|
-
const allDeps = await metadata.listDependencies(types_js_1.DEFAULT_PROJECT_ID, snapshot.id);
|
|
228
|
-
const fileDepMap = {};
|
|
229
|
-
for (const dep of allDeps) {
|
|
230
|
-
if (dep.dependencyType !== "internal" ||
|
|
231
|
-
!dep.toPath ||
|
|
232
|
-
!filePathSet.has(dep.fromPath) ||
|
|
233
|
-
!filePathSet.has(dep.toPath)) {
|
|
234
|
-
continue;
|
|
235
|
-
}
|
|
236
|
-
if (!fileDepMap[dep.fromPath]) {
|
|
237
|
-
fileDepMap[dep.fromPath] = new Set();
|
|
238
|
-
}
|
|
239
|
-
fileDepMap[dep.fromPath].add(dep.toPath);
|
|
240
|
-
}
|
|
241
|
-
scopedDependencies = Object.fromEntries(Object.entries(fileDepMap).map(([k, v]) => [
|
|
242
|
-
k,
|
|
243
|
-
Array.from(v).sort(),
|
|
244
|
-
]));
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
const dependencyCandidates = architecture?.dependency_map?.internal ?? {};
|
|
248
|
-
const moduleFiles = architecture?.module_files ?? {};
|
|
249
|
-
const scopedModuleKeys = scopeFilePaths === null
|
|
250
|
-
? null
|
|
251
|
-
: new Set(Object.entries(moduleFiles)
|
|
252
|
-
.filter(([, moduleFilePaths]) => moduleFilePaths.some((filePath) => filePathSet.has(filePath)))
|
|
253
|
-
.map(([moduleKey]) => moduleKey));
|
|
254
|
-
scopedDependencies =
|
|
255
|
-
scopedModuleKeys === null
|
|
256
|
-
? dependencyCandidates
|
|
257
|
-
: Object.fromEntries(Object.entries(dependencyCandidates).filter(([fromModule]) => scopedModuleKeys.has(fromModule)));
|
|
258
|
-
}
|
|
259
|
-
const limitedDependencies = limitDependencies(scopedDependencies, maxDeps);
|
|
260
|
-
if (limitedDependencies.truncated) {
|
|
261
|
-
console.error(`Showing ${limitedDependencies.shown} of ${limitedDependencies.total} dependencies. Use --max-deps to see more.`);
|
|
262
|
-
}
|
|
263
|
-
const filesWithExports = new Set(visibleSymbols
|
|
264
|
-
.filter((symbol) => symbol.exported)
|
|
265
|
-
.map((symbol) => symbol.filePath));
|
|
266
|
-
const seedFilePath = isFileLevelScope
|
|
267
|
-
? normalizedTargetPath
|
|
268
|
-
: undefined;
|
|
269
|
-
const contextData = {
|
|
270
|
-
modules: visibleFiles
|
|
271
|
-
.filter((file) => filesWithExports.has(file.path) || file.path === seedFilePath)
|
|
272
|
-
.map((file) => ({ path: file.path })),
|
|
273
|
-
symbols: visibleSymbols
|
|
274
|
-
.filter((symbol) => symbol.exported)
|
|
275
|
-
.map((symbol) => ({
|
|
276
|
-
file: symbol.filePath,
|
|
277
|
-
name: symbol.name,
|
|
278
|
-
kind: symbol.kind,
|
|
279
|
-
signature: symbol.signature,
|
|
280
|
-
})),
|
|
281
|
-
dependencies: limitedDependencies.dependencies,
|
|
282
|
-
};
|
|
283
|
-
if (scopeWarning) {
|
|
284
|
-
console.warn(`Warning: ${scopeWarning}`);
|
|
285
|
-
}
|
|
286
|
-
formatPlain(contextData, { compact: options?.compact });
|
|
287
|
-
}
|
|
288
|
-
catch (error) {
|
|
289
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
290
|
-
console.error(`Context command failed: ${message}`);
|
|
291
|
-
process.exitCode = 1;
|
|
292
|
-
}
|
|
293
|
-
finally {
|
|
294
|
-
await metadata.close().catch(() => undefined);
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"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"}
|