indexer-cli 0.5.1 → 0.7.1

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.
@@ -31,74 +31,173 @@ const SKILL_DEFINITIONS = [
31
31
  {
32
32
  name: "semantic-search",
33
33
  directory: "semantic-search",
34
- description: `FIRST choice for CONCEPT and BEHAVIOR questions like "how is quiz scoring calculated" or "what happens on subscription cancel". Do NOT use for keyword/identifier lookups — use grep instead. If the search term is also a code identifier (entity name, class name, variable name), this is the WRONG tool.`,
35
- heading: "Use semantic-search for implementation hunting",
36
- useWhen: "Use this when the agent already knows it needs semantic search results, not a tree or architecture map.",
37
- focusHint: "Keep the prompt short and centered on the code concept to find.",
38
- allowedTools: ["Bash(npx indexer-cli search:*)"],
39
- rules: [
40
- `**2-4 domain-specific words**: "how claim prize", "billing webhook", "quiz scoring"`,
41
- `Do NOT write long queries with synonyms — it dilutes ranking.`,
42
- "Prefer compact JSON fields first; include content only after the right chunk is found.",
43
- "Use --path-prefix or --chunk-types when you already know the likely area.",
44
- ],
45
- skipWhen: [
46
- "You need a file tree or symbol inventory instead of search results",
47
- "You already know the exact file and line range to inspect",
48
- ],
49
- commandSamples: [
50
- 'npx indexer-cli search "<query>"',
51
- 'npx indexer-cli search "<query>" --path-prefix src/<area>',
52
- 'npx indexer-cli search "<query>" --chunk-types impl,types',
53
- ],
54
- cliReference: [
55
- "Positional args: <query>.",
56
- "Options: --max-files <number>, --path-prefix <string>, --chunk-types <string>, --fields <list>, --min-score <number>, --include-content, --include-imports.",
57
- "Allowed --chunk-types values: full_file, imports, preamble, declaration, module_section, impl, types.",
58
- "Imports/preamble chunks are excluded by default; use --include-imports to include them.",
59
- "Allowed --fields values: filePath, startLine, endLine, score, primarySymbol, content.",
60
- ],
34
+ rawContent: `---
35
+ name: semantic-search
36
+ description:
37
+ FIRST choice for CONCEPT and BEHAVIOR questions — "how is scoring calculated", "what happens on order cancel", "what if a user stops paying", "how does the system handle expired subscriptions", "lifecycle of a payment", "flow when X fails". Use BEFORE spawning explore agents for these questions — it traces cross-module behavior that grep misses. Do NOT use for keyword/identifier lookups (use grep/ast-grep instead). If the search term is a code identifier (class name, variable name, function name), this is the WRONG tool — use symbol-explain or grep instead.
38
+ allowed-tools: Bash(npx indexer-cli search:*)
39
+ ---
40
+
41
+ # Use semantic-search for implementation hunting
42
+
43
+ Use when semantic search is already the right tool.
44
+ Keep the query short and centered on one code concept.
45
+
46
+ ## Mandatory rules
47
+
48
+ ### 1) Search count
49
+
50
+ - 1 search per question
51
+ - Max 2 only if the second is a truly different angle
52
+ - If search 1 answers the question: STOP
53
+
54
+ Never run 3+ overlapping searches.
55
+
56
+ ### 2) Query shape
57
+
58
+ Use 1-3 domain-specific words. No synonyms.
59
+
60
+ Pick the single best concept word. Add words only to narrow scope.
61
+
62
+ - ✅ \`prize\`
63
+ - ✅ \`password reset\`
64
+ - ✅ \`rate limiting\`
65
+ - ❌ \`prize reward award\`
66
+ - ❌ \`chapter pass percent quiz result score\`
67
+ - ❌ \`order cancel payment failure refund\`
68
+
69
+ ### 3) Two-phase retrieval — ALWAYS
70
+
71
+ #### Phase 1: Discover
72
+
73
+ Search without \`--include-content\`.
74
+
75
+ \`\`\`bash
76
+ npx indexer-cli search "prize"
77
+ \`\`\`
78
+
79
+ #### Phase 2: Read
80
+
81
+ Use the Read tool on the exact files and line ranges from Phase 1.
82
+
83
+ Do NOT:
84
+
85
+ - run another semantic search for the same concept
86
+ - grep the same concept
87
+ - grep terms revealed by Phase 1
88
+ - replace reading with \`--include-content\`
89
+
90
+ ### Hard stop after Phase 1
91
+
92
+ If Phase 1 returned useful file paths and ranges, read them.
93
+
94
+ Only if Phase 1 returns nothing useful, do one fallback:
95
+
96
+ - one alternative semantic query, or
97
+ - grep
98
+
99
+ ### 4) \`--include-content\` is rare
100
+
101
+ Use it only for a quick scan when you expect fewer than 5 results.
102
+
103
+ ### 5) Narrow early with \`--path-prefix\`
104
+
105
+ If you know the subsystem, add \`--path-prefix\`.
106
+
107
+ \`\`\`bash
108
+ npx indexer-cli search "password reset" --path-prefix src/auth
109
+ \`\`\`
110
+
111
+ ## Skip when
112
+
113
+ - you need a file tree or symbol inventory
114
+ - you already know the exact file and line range
115
+ - the query is an identifier; use grep/LSP/symbol-explain instead
116
+
117
+ ## Command patterns
118
+
119
+ \`\`\`bash
120
+ # Phase 1: discover
121
+ npx indexer-cli search "rate limiting"
122
+ npx indexer-cli search "password reset" --path-prefix src/auth
123
+
124
+ # Phase 2: Read returned files/lines with Read tool
125
+
126
+ # Rare exception: inline content when expecting <5 hits
127
+ npx indexer-cli search "input validation" --include-content --max-files 3
128
+ \`\`\`
129
+
130
+ ## CLI reference
131
+
132
+ - Positional args: \`<query>\`
133
+ - Options: \`--max-files\`, \`--path-prefix\`, \`--chunk-types\`, \`--min-score\`, \`--include-content\`,
134
+ \`--include-imports\`
135
+
136
+ ### Allowed \`--chunk-types\`
137
+
138
+ \`full_file\`, \`imports\`, \`preamble\`, \`declaration\`, \`module_section\`, \`impl\`, \`types\`
139
+
140
+ Imports and preamble are excluded by default. Use \`--include-imports\` to include them.
141
+
142
+ ## Anti-patterns
143
+
144
+ - ❌ 3+ overlapping searches
145
+ - ❌ broad searches with \`--include-content\`
146
+ - ❌ long synonym-heavy queries
147
+ - ❌ re-searching after Phase 1 already found the locations
148
+ - ❌ grepping the same concept after semantic search already found it
149
+ - ❌ loading this skill via \`skill\` when you already know the \`indexer-cli\` command
150
+ `,
151
+ description: "",
152
+ heading: "",
153
+ useWhen: "",
154
+ allowedTools: [],
155
+ rules: [],
156
+ commandSamples: [],
61
157
  },
62
158
  {
63
159
  name: "repo-structure",
64
160
  directory: "repo-structure",
65
- description: `FIRST choice when you need to see what's inside a package/directory — all files, classes, functions, exports in a tree. Produces a symbol-level map of any path prefix. Use BEFORE opening multiple files to understand layout. Triggers: "show me the structure of X", "what's in this module", "list the symbols".`,
161
+ description: `FIRST choice when you need to see what's inside a package/directory — all files, classes, functions, exports in a tree. Produces a symbol-level map of any path prefix. Use BEFORE opening multiple files to understand layout. Triggers: "show me the structure of X", "what's in this module", "list the symbols". ALWAYS narrow with --path-prefix or --kind; unfiltered output can exceed 2500 tokens.`,
66
162
  heading: "Use repo-structure for tree and symbol-map questions",
67
163
  useWhen: "Use this when the agent needs to see how files and symbols are organized in an area of the repo before reading implementation details.",
68
164
  focusHint: "Keep the request centered on one repo area or one symbol kind so the tree stays readable.",
69
165
  allowedTools: ["Bash(npx indexer-cli structure:*)"],
70
166
  rules: [
71
167
  "Prefer structure when layout matters more than implementation snippets.",
72
- "Use --path-prefix and --kind to keep output focused.",
73
- "Use JSON output for agents unless a human explicitly asks for text.",
168
+ "ALWAYS use --path-prefix or --kind to keep output focused — unfiltered output can exceed 2500 tokens.",
169
+ "Combine --path-prefix with --kind for the tightest result (e.g. --path-prefix src/engine --kind class).",
170
+ "By default only exported symbols are shown (classes, exported functions, interfaces, types). Use --include-internal to see private methods and non-exported helpers.",
74
171
  ],
75
172
  skipWhen: [
76
173
  "You need dependency relationships rather than physical structure",
77
174
  "You need semantic search results rather than a tree",
78
175
  ],
79
176
  commandSamples: [
80
- "npx indexer-cli structure",
81
177
  "npx indexer-cli structure --path-prefix src/<area>",
178
+ "npx indexer-cli structure --path-prefix src/<area> --kind class",
82
179
  "npx indexer-cli structure --kind function",
180
+ "npx indexer-cli structure --path-prefix src/<area> --include-internal",
83
181
  ],
84
182
  cliReference: [
85
- "Output: JSON by default; use --txt for human-readable text.",
86
- "Options: --path-prefix <string>, --kind <string>, --max-depth <number>, --max-files <number>, --txt.",
183
+ "Options: --path-prefix <string>, --kind <string>, --max-depth <number>, --max-files <number>, --include-internal.",
87
184
  "Allowed --kind values: function, class, method, interface, type, variable, module, signal.",
185
+ "By default shows only exported symbols. Add --include-internal to show all symbols (methods, private members).",
88
186
  ],
89
187
  },
90
188
  {
91
189
  name: "repo-architecture",
92
190
  directory: "repo-architecture",
93
- description: `FIRST choice when user asks "what is this project", "explain the codebase", "how is this organized". Produces a full dependency graph, entry points, and module breakdown — everything needed to understand a repo without reading individual files. Use BEFORE reading package.json or exploring directories manually.`,
191
+ description: `FIRST choice when user asks "what is this project", "explain the codebase", "how is this organized". Produces a full dependency graph, entry points, and module breakdown — everything needed to understand a repo without reading individual files. Use BEFORE reading package.json or exploring directories manually. Also the best starting point for onboarding: run this first, then drill into specific modules with deps or explain.`,
94
192
  heading: "Use repo-architecture for dependency-graph questions",
95
- useWhen: "Use this when the agent needs a high-level snapshot of modules, entry points, and dependency shape before going deeper.",
193
+ useWhen: "Use this when the agent needs a high-level snapshot of modules, entry points, and dependency shape before going deeper. This is the cheapest way to orient in an unfamiliar codebase (~140 tokens for a typical project).",
96
194
  focusHint: "Keep the scope to the subsystem that matters so the graph highlights the right boundaries.",
97
195
  allowedTools: ["Bash(npx indexer-cli architecture:*)"],
98
196
  rules: [
99
197
  "Use architecture when the question is about system shape, not a single symbol.",
100
198
  "Filter by path prefix when only one subsystem matters.",
101
- "Use JSON output to preserve structured dependency data.",
199
+ "Pay attention to cyclic dependencies they indicate tight coupling that may affect where you make changes.",
200
+ "Follow up with `deps <hot-path>` to drill into specific module relationships, or `explain <symbol>` to understand a key class.",
102
201
  ],
103
202
  skipWhen: [
104
203
  "You need callers/callees for one specific file or symbol",
@@ -108,51 +207,55 @@ const SKILL_DEFINITIONS = [
108
207
  "npx indexer-cli architecture",
109
208
  "npx indexer-cli architecture --path-prefix src/<area>",
110
209
  ],
111
- cliReference: [
112
- "Output: JSON by default; use --txt for human-readable text.",
113
- "Options: --path-prefix <string>, --include-fixtures, --txt.",
114
- ],
210
+ cliReference: ["Options: --path-prefix <string>, --include-fixtures."],
115
211
  },
116
212
  {
117
213
  name: "repo-context",
118
214
  directory: "repo-context",
119
- 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.",
215
+ 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.",
120
216
  heading: "Use repo-context for dense summaries",
121
217
  useWhen: "Use this when the agent wants a compressed view of a subsystem, changed area, or dependency neighborhood without opening many files.",
122
218
  focusHint: "Keep the scope explicit so the summary stays dense instead of drifting across the repo.",
123
219
  allowedTools: ["Bash(npx indexer-cli context:*)"],
124
220
  rules: [
125
221
  "Prefer context when you want breadth over exact source snippets.",
126
- "Use --scope to target all, changed, or relevant-to:<path>.",
222
+ "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.",
223
+ "Use --compact to omit symbol signatures and show only file::name (kind) — saves ~50% tokens.",
127
224
  "Lower --max-deps when you need a tighter prompt budget.",
225
+ "Tests are excluded by default. Add --include-tests to see test files and symbols.",
128
226
  ],
129
227
  skipWhen: [
130
228
  "You need exact implementation locations or ranked chunks",
131
229
  "You need a file tree or architecture graph instead of a summary",
132
230
  ],
133
231
  commandSamples: [
134
- "npx indexer-cli context",
135
- "npx indexer-cli context --scope changed",
136
232
  "npx indexer-cli context --scope relevant-to:src/<area>",
233
+ "npx indexer-cli context --scope changed",
234
+ "npx indexer-cli context --scope relevant-to:src/<area> --max-deps 10 --compact",
235
+ "npx indexer-cli context --scope relevant-to:src --compact",
137
236
  ],
138
237
  cliReference: [
139
- "Output: JSON by default; use --txt for human-readable text.",
140
- "Options: --scope <scope>, --max-deps <number>, --include-fixtures, --txt.",
238
+ "Options: --scope <scope>, --max-deps <number>, --include-fixtures, --include-tests, --compact.",
141
239
  "Allowed --scope values: all, changed, relevant-to:<path>.",
240
+ "--compact omits symbol signatures for token savings. --include-tests includes test files.",
142
241
  ],
143
242
  },
144
243
  {
145
244
  name: "symbol-explain",
146
245
  directory: "symbol-explain",
147
- description: "FIRST choice once the symbol name is known. Load this before manual caller/signature tracing to get one symbol's signature, module context, and callers fast.",
246
+ description: "FIRST choice once the symbol name is known. Load this before manual caller/signature tracing to get one symbol's signature, module context, and callers fast. Output is ~80 tokens — the cheapest way to understand a single symbol.",
148
247
  heading: "Use symbol-explain for one symbol at a time",
149
248
  useWhen: "Use this when the task centers on one function, class, type, or symbol and the agent needs signature, usage, and containing module context fast.",
150
249
  focusHint: "Keep the request centered on one symbol name for the cleanest caller and signature output.",
151
250
  allowedTools: ["Bash(npx indexer-cli explain:*)"],
152
251
  rules: [
153
252
  "Use explain only when the symbol name is already known.",
154
- "Do not use this skill for symbol discovery; use it only once the symbol name is already known.",
253
+ "Use <file>::<symbol> syntax when the same symbol name exists in multiple files (e.g. `explain src/engine/indexer.ts::IndexerEngine`).",
254
+ "Use bare <symbol> when the name is unique in the codebase.",
155
255
  "Keep the prompt centered on a single symbol for the cleanest output.",
256
+ "Use --path-prefix to limit results to files under a specific path (e.g. --path-prefix src/).",
257
+ "Tests and fixtures are excluded by default. Add --include-fixtures to include them.",
258
+ "Exact name matches take priority; fuzzy matches only appear when no exact match exists.",
156
259
  ],
157
260
  skipWhen: [
158
261
  "You need to discover candidate symbols first",
@@ -161,17 +264,18 @@ const SKILL_DEFINITIONS = [
161
264
  commandSamples: [
162
265
  "npx indexer-cli explain <symbol>",
163
266
  "npx indexer-cli explain <file>::<symbol>",
267
+ "npx indexer-cli explain <symbol> --path-prefix src/",
164
268
  ],
165
269
  cliReference: [
166
270
  "Positional args: <symbol> or <file>::<symbol>.",
167
- "Output: JSON by default; use --txt for human-readable text.",
168
- "Options: --txt.",
271
+ "Options: --path-prefix <string>, --include-fixtures.",
272
+ "Tests/fixtures excluded by default. Exact matches prioritized over fuzzy matches.",
169
273
  ],
170
274
  },
171
275
  {
172
276
  name: "dependency-trace",
173
277
  directory: "dependency-trace",
174
- description: "FIRST choice once the file or module is known and impact matters. Load this before manual import tracing to see callers, callees, and likely change impact.",
278
+ description: "FIRST choice once the file or module is known and impact matters. Load this before manual import tracing to see callers, callees, and likely change impact. Output is ~140 tokens per depth level.",
175
279
  heading: "Use dependency-trace for impact analysis",
176
280
  useWhen: "Use this when the agent needs to know who imports a module, what it imports, or how far change impact may spread.",
177
281
  focusHint: "Start with a single path or module and keep depth low until the first-hop trace stops being enough.",
@@ -179,7 +283,7 @@ const SKILL_DEFINITIONS = [
179
283
  rules: [
180
284
  "Use deps when the question is about relationships, not source snippets.",
181
285
  "Set --direction callers or --direction callees when only one side matters.",
182
- "Increase depth only when the first hop is not enough.",
286
+ "Start at depth 1 (default). Increase to --depth 2 only when the first hop is not enough — each depth level adds more callers/callees.",
183
287
  ],
184
288
  skipWhen: [
185
289
  "You need a repo-wide architecture snapshot rather than one trace",
@@ -189,11 +293,11 @@ const SKILL_DEFINITIONS = [
189
293
  "npx indexer-cli deps <path>",
190
294
  "npx indexer-cli deps <path> --direction callers",
191
295
  "npx indexer-cli deps <path> --direction callees",
296
+ "npx indexer-cli deps <path> --depth 2",
192
297
  ],
193
298
  cliReference: [
194
299
  "Positional args: <path>.",
195
- "Output: JSON by default; use --txt for human-readable text.",
196
- "Options: --direction <dir>, --depth <n>, --txt.",
300
+ "Options: --direction <dir>, --depth <n>.",
197
301
  "Allowed --direction values: callers, callees, both.",
198
302
  "Behavior: --depth is effectively clamped to the range 1..5.",
199
303
  ],
@@ -202,7 +306,7 @@ const SKILL_DEFINITIONS = [
202
306
  exports.GENERATED_SKILLS = SKILL_DEFINITIONS.map((definition) => ({
203
307
  name: definition.name,
204
308
  directory: definition.directory,
205
- content: renderSkill(definition),
309
+ content: definition.rawContent ?? renderSkill(definition),
206
310
  }));
207
311
  exports.DEPRECATED_SKILL_DIRECTORIES = ["context-pack"];
208
312
  exports.GENERATED_SKILL_DIRECTORIES = exports.GENERATED_SKILLS.map((skill) => skill.directory);
@@ -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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"}
@@ -10,7 +10,6 @@ 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 help_text_js_1 = require("../help-text.js");
13
- const output_mode_js_1 = require("../output-mode.js");
14
13
  const ensure_indexed_js_1 = require("./ensure-indexed.js");
15
14
  function parseMaxDepth(value) {
16
15
  if (!value) {
@@ -94,7 +93,12 @@ function collectDescendantFiles(node, prefix, symbolsByFile, fileCounter, maxFil
94
93
  }
95
94
  return entries;
96
95
  }
97
- function printTree(node, indent, prefix, symbolsByFile, depth, maxDepth, fileCounter, maxFiles) {
96
+ const NO_SYMBOLS_EXPORTED_ONLY = "(no exported symbols)";
97
+ const NO_SYMBOLS_ALL = "(no symbols)";
98
+ function printTree(node, indent, prefix, symbolsByFile, depth, maxDepth, fileCounter, maxFiles, includeInternal) {
99
+ const noSymbolsText = includeInternal
100
+ ? NO_SYMBOLS_ALL
101
+ : NO_SYMBOLS_EXPORTED_ONLY;
98
102
  if (maxDepth !== undefined && depth >= maxDepth) {
99
103
  if (node.files.size > 0) {
100
104
  const summary = summarizeHiddenChildren(node);
@@ -110,7 +114,7 @@ function printTree(node, indent, prefix, symbolsByFile, depth, maxDepth, fileCou
110
114
  console.log(`${indent} ${symbol.name} (${symbol.kind}${exported})`);
111
115
  }
112
116
  if (file.symbols.length === 0) {
113
- console.log(`${indent} (no symbols)`);
117
+ console.log(`${indent} ${noSymbolsText}`);
114
118
  }
115
119
  }
116
120
  return;
@@ -126,7 +130,7 @@ function printTree(node, indent, prefix, symbolsByFile, depth, maxDepth, fileCou
126
130
  }
127
131
  const nextPrefix = prefix ? `${prefix}/${directoryName}` : directoryName;
128
132
  console.log(`${indent}${directoryName}/`);
129
- printTree(childNode, `${indent} `, nextPrefix, symbolsByFile, depth + 1, maxDepth, fileCounter, maxFiles);
133
+ printTree(childNode, `${indent} `, nextPrefix, symbolsByFile, depth + 1, maxDepth, fileCounter, maxFiles, includeInternal);
130
134
  }
131
135
  for (const fileName of fileEntries) {
132
136
  if (maxFiles !== undefined &&
@@ -148,97 +152,10 @@ function printTree(node, indent, prefix, symbolsByFile, depth, maxDepth, fileCou
148
152
  }
149
153
  }
150
154
  else {
151
- console.log(`${indent} (no symbols)`);
155
+ console.log(`${indent} ${noSymbolsText}`);
152
156
  }
153
157
  }
154
158
  }
155
- function treeToJson(node, prefix, symbolsByFile, depth, maxDepth, fileCounter, maxFiles) {
156
- if (maxDepth !== undefined && depth >= maxDepth) {
157
- if (node.files.size > 0) {
158
- const summary = summarizeHiddenChildren(node);
159
- return summary === "... (0 children)"
160
- ? []
161
- : [{ type: "summary", name: summary }];
162
- }
163
- return collectDescendantFiles(node, prefix, symbolsByFile, fileCounter, maxFiles).map((file) => ({
164
- type: "file",
165
- name: file.name,
166
- path: file.path,
167
- symbols: file.symbols,
168
- }));
169
- }
170
- const entries = [];
171
- const directoryEntries = Array.from(node.directories.entries()).sort((a, b) => a[0].localeCompare(b[0]));
172
- const fileEntries = Array.from(node.files).sort((a, b) => a.localeCompare(b));
173
- for (const [directoryName, childNode] of directoryEntries) {
174
- if (maxFiles !== undefined &&
175
- fileCounter &&
176
- fileCounter.printed >= maxFiles) {
177
- fileCounter.hidden += countFiles(childNode);
178
- continue;
179
- }
180
- const childPrefix = prefix ? `${prefix}/${directoryName}` : directoryName;
181
- const children = treeToJson(childNode, childPrefix, symbolsByFile, depth + 1, maxDepth, fileCounter, maxFiles);
182
- if (maxFiles !== undefined && children.length === 0) {
183
- continue;
184
- }
185
- entries.push({
186
- type: "directory",
187
- name: directoryName,
188
- children,
189
- });
190
- }
191
- for (const fileName of fileEntries) {
192
- if (maxFiles !== undefined &&
193
- fileCounter &&
194
- fileCounter.printed >= maxFiles) {
195
- fileCounter.hidden += 1;
196
- continue;
197
- }
198
- const filePath = prefix ? `${prefix}/${fileName}` : fileName;
199
- const symbols = (symbolsByFile.get(filePath) ?? []).map((s) => ({
200
- name: s.name,
201
- kind: s.kind,
202
- exported: s.exported,
203
- }));
204
- if (fileCounter) {
205
- fileCounter.printed += 1;
206
- }
207
- entries.push({ type: "file", name: fileName, path: filePath, symbols });
208
- }
209
- return entries;
210
- }
211
- function narrowJsonTreeToPathPrefix(entries, pathPrefix) {
212
- if (!pathPrefix) {
213
- return entries;
214
- }
215
- const parts = pathPrefix.split("/").filter(Boolean);
216
- let current = entries;
217
- for (let index = 0; index < parts.length; index += 1) {
218
- const part = parts[index];
219
- const file = current.find((entry) => typeof entry === "object" &&
220
- entry !== null &&
221
- "type" in entry &&
222
- "name" in entry &&
223
- "path" in entry &&
224
- entry.type === "file" &&
225
- entry.name === part);
226
- if (file) {
227
- return index === parts.length - 1 ? [file] : [];
228
- }
229
- const dir = current.find((entry) => typeof entry === "object" &&
230
- entry !== null &&
231
- "type" in entry &&
232
- "name" in entry &&
233
- entry.type === "directory" &&
234
- entry.name === part);
235
- if (!dir) {
236
- return [];
237
- }
238
- current = dir.children ?? [];
239
- }
240
- return current;
241
- }
242
159
  function registerStructureCommand(program) {
243
160
  program
244
161
  .command("structure")
@@ -248,12 +165,11 @@ function registerStructureCommand(program) {
248
165
  .option("--kind <string>", "filter symbols by kind")
249
166
  .option("--max-depth <number>", "limit directory traversal depth in the rendered tree")
250
167
  .option("--max-files <number>", "limit number of files shown in output")
251
- .option("--txt", "output results as human-readable text")
168
+ .option("--include-internal", "include non-exported symbols (methods, private members)")
252
169
  .action(async (options) => {
253
170
  const resolvedProjectPath = process.cwd();
254
171
  const dataDir = node_path_1.default.join(resolvedProjectPath, ".indexer-cli");
255
172
  const dbPath = node_path_1.default.join(dataDir, "db.sqlite");
256
- const isJson = (0, output_mode_js_1.isJsonOutput)(options);
257
173
  (0, logger_js_1.initLogger)(dataDir);
258
174
  config_js_1.config.load(dataDir);
259
175
  const metadata = new sqlite_js_1.SqliteMetadataStore(dbPath);
@@ -263,7 +179,7 @@ function registerStructureCommand(program) {
263
179
  const fileCounter = maxFiles !== undefined ? { printed: 0, hidden: 0 } : undefined;
264
180
  await metadata.initialize();
265
181
  await (0, ensure_indexed_js_1.ensureIndexed)(metadata, resolvedProjectPath, {
266
- silent: isJson,
182
+ silent: false,
267
183
  });
268
184
  const snapshot = await metadata.getLatestCompletedSnapshot(types_js_1.DEFAULT_PROJECT_ID);
269
185
  if (!snapshot) {
@@ -282,46 +198,29 @@ function registerStructureCommand(program) {
282
198
  !symbol.filePath.startsWith(options.pathPrefix)) {
283
199
  continue;
284
200
  }
201
+ if (!options?.includeInternal && !symbol.exported) {
202
+ continue;
203
+ }
285
204
  const current = symbolsByFile.get(symbol.filePath) ?? [];
286
205
  current.push(symbol);
287
206
  symbolsByFile.set(symbol.filePath, current);
288
207
  }
289
208
  if (files.length === 0) {
290
- if (isJson) {
291
- console.log("[]");
292
- }
293
- else {
294
- console.log("No indexed files found for the requested filters.");
295
- }
209
+ console.log("No indexed files found for the requested filters.");
296
210
  return;
297
211
  }
298
212
  const root = createNode();
299
213
  for (const file of files) {
300
214
  insertPath(root, file.path);
301
215
  }
302
- if (isJson) {
303
- let tree = treeToJson(root, "", symbolsByFile, 0, maxDepth, fileCounter, maxFiles);
304
- tree = narrowJsonTreeToPathPrefix(tree, options?.pathPrefix);
305
- if (fileCounter && fileCounter.hidden > 0) {
306
- tree.push({ type: "truncated", hiddenFiles: fileCounter.hidden });
307
- }
308
- console.log(JSON.stringify(tree, null, 2));
309
- }
310
- else {
311
- printTree(root, "", "", symbolsByFile, 0, maxDepth, fileCounter, maxFiles);
312
- if (fileCounter && fileCounter.hidden > 0) {
313
- console.log(`\n... and ${fileCounter.hidden} more files (use --max-files to see more)`);
314
- }
216
+ printTree(root, "", "", symbolsByFile, 0, maxDepth, fileCounter, maxFiles, options?.includeInternal);
217
+ if (fileCounter && fileCounter.hidden > 0) {
218
+ console.log(`\n... and ${fileCounter.hidden} more files (use --max-files to see more)`);
315
219
  }
316
220
  }
317
221
  catch (error) {
318
222
  const message = error instanceof Error ? error.message : String(error);
319
- if (isJson) {
320
- console.error(JSON.stringify({ error: message }, null, 2));
321
- }
322
- else {
323
- console.error(`Structure command failed: ${message}`);
324
- }
223
+ console.error(`Structure command failed: ${message}`);
325
224
  process.exitCode = 1;
326
225
  }
327
226
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"structure.js","sourceRoot":"","sources":["../../../src/cli/commands/structure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structure.js","sourceRoot":"","sources":["../../../src/cli/commands/structure.ts"],"names":[],"mappings":"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"}