@cesarandreslopez/occ 0.10.0 → 0.12.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.
Files changed (154) hide show
  1. package/README.md +31 -8
  2. package/dist/src/cli.d.ts +16 -0
  3. package/dist/src/cli.js +46 -4
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/code/build.d.ts +22 -0
  6. package/dist/src/code/build.js +47 -13
  7. package/dist/src/code/build.js.map +1 -1
  8. package/dist/src/code/cache.js +30 -1
  9. package/dist/src/code/cache.js.map +1 -1
  10. package/dist/src/code/check.js +46 -6
  11. package/dist/src/code/check.js.map +1 -1
  12. package/dist/src/code/command.js +125 -69
  13. package/dist/src/code/command.js.map +1 -1
  14. package/dist/src/code/context.d.ts +54 -0
  15. package/dist/src/code/context.js +67 -0
  16. package/dist/src/code/context.js.map +1 -0
  17. package/dist/src/code/diff.d.ts +12 -2
  18. package/dist/src/code/diff.js +15 -3
  19. package/dist/src/code/diff.js.map +1 -1
  20. package/dist/src/code/discover.d.ts +2 -2
  21. package/dist/src/code/discover.js +8 -10
  22. package/dist/src/code/discover.js.map +1 -1
  23. package/dist/src/code/focus.js +34 -26
  24. package/dist/src/code/focus.js.map +1 -1
  25. package/dist/src/code/incremental.js +1 -1
  26. package/dist/src/code/incremental.js.map +1 -1
  27. package/dist/src/code/index-io.js +10 -2
  28. package/dist/src/code/index-io.js.map +1 -1
  29. package/dist/src/code/isolated-chunk-runner.js +17 -2
  30. package/dist/src/code/isolated-chunk-runner.js.map +1 -1
  31. package/dist/src/code/isolated-runner.js +17 -3
  32. package/dist/src/code/isolated-runner.js.map +1 -1
  33. package/dist/src/code/isolated.js +32 -6
  34. package/dist/src/code/isolated.js.map +1 -1
  35. package/dist/src/code/languages.js +23 -3
  36. package/dist/src/code/languages.js.map +1 -1
  37. package/dist/src/code/map.d.ts +47 -0
  38. package/dist/src/code/map.js +155 -12
  39. package/dist/src/code/map.js.map +1 -1
  40. package/dist/src/code/output.d.ts +3 -1
  41. package/dist/src/code/output.js +11 -0
  42. package/dist/src/code/output.js.map +1 -1
  43. package/dist/src/code/parsers.js +115 -36
  44. package/dist/src/code/parsers.js.map +1 -1
  45. package/dist/src/code/preview.js +24 -22
  46. package/dist/src/code/preview.js.map +1 -1
  47. package/dist/src/code/query.js +0 -0
  48. package/dist/src/code/query.js.map +1 -1
  49. package/dist/src/code/search.d.ts +39 -0
  50. package/dist/src/code/search.js +154 -0
  51. package/dist/src/code/search.js.map +1 -0
  52. package/dist/src/code/session.d.ts +9 -3
  53. package/dist/src/code/session.js +16 -4
  54. package/dist/src/code/session.js.map +1 -1
  55. package/dist/src/code/slim.d.ts +2 -0
  56. package/dist/src/code/slim.js +16 -1
  57. package/dist/src/code/slim.js.map +1 -1
  58. package/dist/src/code/store.d.ts +23 -0
  59. package/dist/src/code/store.js +61 -6
  60. package/dist/src/code/store.js.map +1 -1
  61. package/dist/src/code/tree-sitter.d.ts +1 -0
  62. package/dist/src/code/tree-sitter.js +11 -10
  63. package/dist/src/code/tree-sitter.js.map +1 -1
  64. package/dist/src/code/tree.d.ts +7 -0
  65. package/dist/src/code/tree.js +364 -0
  66. package/dist/src/code/tree.js.map +1 -0
  67. package/dist/src/code/types.d.ts +131 -0
  68. package/dist/src/code/types.js +47 -0
  69. package/dist/src/code/types.js.map +1 -1
  70. package/dist/src/doc/batch.d.ts +2 -0
  71. package/dist/src/doc/batch.js +3 -1
  72. package/dist/src/doc/batch.js.map +1 -1
  73. package/dist/src/doc/discover.js +2 -2
  74. package/dist/src/doc/discover.js.map +1 -1
  75. package/dist/src/doc/inspect-odt.js +3 -1
  76. package/dist/src/doc/inspect-odt.js.map +1 -1
  77. package/dist/src/doc/inspect-pdf.d.ts +6 -0
  78. package/dist/src/doc/inspect-pdf.js +11 -1
  79. package/dist/src/doc/inspect-pdf.js.map +1 -1
  80. package/dist/src/doc/inspect.js +2 -2
  81. package/dist/src/doc/inspect.js.map +1 -1
  82. package/dist/src/doc/types.d.ts +1 -0
  83. package/dist/src/doc/types.js +7 -0
  84. package/dist/src/doc/types.js.map +1 -1
  85. package/dist/src/git/api.d.ts +7 -1
  86. package/dist/src/git/api.js +32 -10
  87. package/dist/src/git/api.js.map +1 -1
  88. package/dist/src/git/client.js +5 -1
  89. package/dist/src/git/client.js.map +1 -1
  90. package/dist/src/git/command.js +22 -2
  91. package/dist/src/git/command.js.map +1 -1
  92. package/dist/src/git/output.d.ts +2 -1
  93. package/dist/src/git/output.js +7 -1
  94. package/dist/src/git/output.js.map +1 -1
  95. package/dist/src/git/parse.d.ts +2 -1
  96. package/dist/src/git/parse.js +222 -2
  97. package/dist/src/git/parse.js.map +1 -1
  98. package/dist/src/git/types.d.ts +49 -5
  99. package/dist/src/git/types.js +21 -0
  100. package/dist/src/git/types.js.map +1 -1
  101. package/dist/src/health.d.ts +8 -0
  102. package/dist/src/health.js +15 -0
  103. package/dist/src/health.js.map +1 -1
  104. package/dist/src/index.d.ts +23 -11
  105. package/dist/src/index.js +14 -5
  106. package/dist/src/index.js.map +1 -1
  107. package/dist/src/inspect/xlsx-cells.js +4 -2
  108. package/dist/src/inspect/xlsx-cells.js.map +1 -1
  109. package/dist/src/markdown/convert.d.ts +9 -0
  110. package/dist/src/markdown/convert.js +23 -1
  111. package/dist/src/markdown/convert.js.map +1 -1
  112. package/dist/src/output/tabular.js +33 -16
  113. package/dist/src/output/tabular.js.map +1 -1
  114. package/dist/src/parsers/odf.js +4 -2
  115. package/dist/src/parsers/odf.js.map +1 -1
  116. package/dist/src/scc.d.ts +3 -0
  117. package/dist/src/scc.js +2 -0
  118. package/dist/src/scc.js.map +1 -1
  119. package/dist/src/skills/command.d.ts +6 -0
  120. package/dist/src/skills/command.js +18 -3
  121. package/dist/src/skills/command.js.map +1 -1
  122. package/dist/src/slide/inspect-odp.js +3 -2
  123. package/dist/src/slide/inspect-odp.js.map +1 -1
  124. package/dist/src/slide/inspect-pptx.js +4 -3
  125. package/dist/src/slide/inspect-pptx.js.map +1 -1
  126. package/dist/src/stats.js +3 -1
  127. package/dist/src/stats.js.map +1 -1
  128. package/dist/src/structure/extract.js +16 -3
  129. package/dist/src/structure/extract.js.map +1 -1
  130. package/dist/src/utils.d.ts +7 -0
  131. package/dist/src/utils.js +19 -0
  132. package/dist/src/utils.js.map +1 -1
  133. package/dist/src/walker.js +15 -3
  134. package/dist/src/walker.js.map +1 -1
  135. package/dist/src/workspace/analyze.d.ts +3 -0
  136. package/dist/src/workspace/analyze.js +26 -15
  137. package/dist/src/workspace/analyze.js.map +1 -1
  138. package/dist/src/workspace/bundle.js +11 -3
  139. package/dist/src/workspace/bundle.js.map +1 -1
  140. package/dist/src/workspace/command.d.ts +6 -0
  141. package/dist/src/workspace/command.js +73 -44
  142. package/dist/src/workspace/command.js.map +1 -1
  143. package/dist/src/workspace/describe.js +22 -13
  144. package/dist/src/workspace/describe.js.map +1 -1
  145. package/dist/src/workspace/documents.d.ts +3 -0
  146. package/dist/src/workspace/documents.js +25 -14
  147. package/dist/src/workspace/documents.js.map +1 -1
  148. package/dist/src/workspace/prepare.js +3 -1
  149. package/dist/src/workspace/prepare.js.map +1 -1
  150. package/dist/src/workspace/types.d.ts +4 -0
  151. package/package.json +12 -11
  152. package/skills/occ/SKILL.md +27 -24
  153. package/skills/occ/reference/code.md +62 -1
  154. package/skills/occ/reference/git.md +17 -1
@@ -3,13 +3,14 @@ import path from 'node:path';
3
3
  import { Option } from 'commander';
4
4
  import { z } from 'zod';
5
5
  import { buildCodebaseIndex } from './build.js';
6
- import { writeStream } from '../utils.js';
6
+ 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, formatDependencies, formatFusedResults, formatModuleCoupling, formatPayloadJson, formatRelationResults, formatSearchResults, renderRepoMap, } from './output.js';
10
+ import { formatCodeDiff, formatCodeDiffJson, formatChains, formatClassTree, formatContentResults, formatDirectoryTree, formatDirectoryTreeJson, formatDependencies, formatFusedResults, formatModuleCoupling, formatPayloadJson, formatRelationResults, formatSearchResults, renderRepoMap, } from './output.js';
11
11
  import { computeCodeDiff } from './diff.js';
12
- import { buildRepoMap } from './map.js';
12
+ import { buildDirectoryTree } from './tree.js';
13
+ import { buildRepoMap, stampRepoMapChanges, toRepoMapChangeContext, } from './map.js';
13
14
  import { readCodeSource } from './source.js';
14
15
  import { createTokenizer, resolveTokenizerName } from '../tokens.js';
15
16
  import { getGitDiffSummary, getGitFileHistory } from '../git/api.js';
@@ -37,6 +38,7 @@ const CodeCommandOptionsSchema = z
37
38
  compress: z.boolean().optional(),
38
39
  biasExports: z.boolean().optional(),
39
40
  maxSymbols: z.string().optional(),
41
+ maxEntries: z.string().optional(),
40
42
  tokenizer: z.string().optional(),
41
43
  query: z.string().optional(),
42
44
  focusPath: z.array(z.string()).optional(),
@@ -52,6 +54,23 @@ const CodeCommandOptionsSchema = z
52
54
  function getOptions(command) {
53
55
  return CodeCommandOptionsSchema.parse(command.optsWithGlobals());
54
56
  }
57
+ /**
58
+ * Wrap a subcommand action so thrown validation/runtime errors print a clean
59
+ * `Error: <message>` line and set a non-zero exit code, matching the default
60
+ * scan command. parseAsync does not catch action-handler rejections, so each
61
+ * action opts in explicitly.
62
+ */
63
+ function runAction(handler) {
64
+ return async (...args) => {
65
+ try {
66
+ await handler(...args);
67
+ }
68
+ catch (error) {
69
+ await writeStream(process.stderr, `Error: ${error.message}\n`);
70
+ process.exitCode = 1;
71
+ }
72
+ };
73
+ }
55
74
  const FINDABLE_TYPES = [
56
75
  'file',
57
76
  'module',
@@ -85,6 +104,16 @@ function parseType(value) {
85
104
  }
86
105
  return result.data;
87
106
  }
107
+ /** Parse a CLI string option as a non-negative integer, returning fallback if undefined. */
108
+ function parseNonNegativeInt(value, fallback, label) {
109
+ if (!value)
110
+ return fallback;
111
+ const parsed = Number.parseInt(value, 10);
112
+ if (!Number.isFinite(parsed) || parsed < 0) {
113
+ throw new Error(`Invalid ${label}: "${value}"`);
114
+ }
115
+ return parsed;
116
+ }
88
117
  async function emit(output, options) {
89
118
  if (options.output) {
90
119
  await writeFile(options.output, output);
@@ -122,7 +151,7 @@ function resolveContentMode(value, fallback) {
122
151
  return fallback;
123
152
  return ContentModeSchema.parse(value);
124
153
  }
125
- function buildIndexOptions(options, fallbackContentMode) {
154
+ function buildIndexOptions(options, fallbackContentMode, forceContentMode) {
126
155
  const repoRoot = path.resolve(options.path ?? process.cwd());
127
156
  return {
128
157
  repoRoot,
@@ -132,7 +161,7 @@ function buildIndexOptions(options, fallbackContentMode) {
132
161
  .filter(Boolean),
133
162
  noGitignore: options.gitignore === false,
134
163
  ignorePatterns: options.ignorePattern,
135
- contentMode: resolveContentMode(options.contentMode, fallbackContentMode),
164
+ contentMode: forceContentMode ?? resolveContentMode(options.contentMode, fallbackContentMode),
136
165
  maxFileSizeBytes: options.maxFileSizeBytes
137
166
  ? parsePositiveInt(options.maxFileSizeBytes, 2_097_152, 'max file size')
138
167
  : undefined,
@@ -143,13 +172,24 @@ function buildIndexOptions(options, fallbackContentMode) {
143
172
  async function withIndex(options, fallbackContentMode = 'excerpt') {
144
173
  return buildCodebaseIndex(buildIndexOptions(options, fallbackContentMode));
145
174
  }
175
+ /**
176
+ * Build an index with content forced to "full" for commands whose search cannot
177
+ * run without full content. An explicit conflicting --content-mode is reported
178
+ * and overridden rather than silently producing an index that would fail.
179
+ */
180
+ async function withFullContentIndex(options, commandLabel) {
181
+ if (options.contentMode && options.contentMode !== 'full') {
182
+ await writeStream(process.stderr, `Warning: ${commandLabel} requires --content-mode full; ignoring "${options.contentMode}".\n`);
183
+ }
184
+ return buildCodebaseIndex(buildIndexOptions(options, 'full', 'full'));
185
+ }
146
186
  function addSharedOptions(command, extra = {}) {
147
187
  command
148
188
  .option('--path <repo-root>', 'repository root to analyze', process.cwd())
149
189
  .option('--format <type>', 'output format: tabular or json', 'tabular')
150
190
  .option('-o, --output <file>', 'write output to file')
151
191
  .option('--ci', 'ASCII-only output, no colors')
152
- .option('--exclude-dir <dirs>', 'directories to skip (comma-separated)', 'node_modules,.git,dist,vendor,build,coverage,target')
192
+ .option('--exclude-dir <dirs>', 'directories to skip (comma-separated)', DEFAULT_EXCLUDE_DIRS.join(','))
153
193
  .option('--no-gitignore', 'disable .gitignore respect')
154
194
  .option('--ignore-pattern <pattern>', 'gitignore-style pattern to ignore', collectOption, [])
155
195
  .option('--content-mode <mode>', 'indexed content mode: none, excerpt, or full')
@@ -184,7 +224,7 @@ export function registerCodeCommands(program) {
184
224
  'o200k_base',
185
225
  'cl100k_base',
186
226
  ]));
187
- diffCmd.action(async (_options, command) => {
227
+ diffCmd.action(runAction(async (_options, command) => {
188
228
  const options = getOptions(command);
189
229
  const tokenizerName = resolveTokenizerName(options.tokenizer);
190
230
  const tokenizer = await createTokenizer(tokenizerName);
@@ -199,10 +239,10 @@ export function registerCodeCommands(program) {
199
239
  });
200
240
  const output = options.format === 'json' ? formatCodeDiffJson(result) : formatCodeDiff(result, options.ci);
201
241
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
202
- });
242
+ }));
203
243
  const historyCmd = code.command('history <symbol>').description('Show git line history for a symbol');
204
244
  addSharedOptions(historyCmd, { includeFile: true, includeLimit: true, includeType: true });
205
- historyCmd.action(async (symbol, _options, command) => {
245
+ historyCmd.action(runAction(async (symbol, _options, command) => {
206
246
  const options = getOptions(command);
207
247
  const index = await withIndex(options, 'excerpt');
208
248
  const matches = findByName(index, symbol, parseType(options.type), options.file, 1);
@@ -221,13 +261,13 @@ export function registerCodeCommands(program) {
221
261
  ? JSON.stringify(result, null, 2)
222
262
  : result.entries.map(entry => `${entry.shortHash} ${entry.authorDate} ${entry.subject}`).join('\n') + '\n';
223
263
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
224
- });
264
+ }));
225
265
  // occ code index — build and emit the full codebase index
226
266
  const indexCmd = code
227
267
  .command('index')
228
268
  .description('Build the full codebase index (files, symbols, edges, capabilities)');
229
269
  addSharedOptions(indexCmd);
230
- indexCmd.action(async (_options, command) => {
270
+ indexCmd.action(runAction(async (_options, command) => {
231
271
  const options = getOptions(command);
232
272
  const index = await buildCodebaseIndex(buildIndexOptions(options, 'full'), event => {
233
273
  if (options.format !== 'json') {
@@ -241,10 +281,10 @@ export function registerCodeCommands(program) {
241
281
  ? JSON.stringify(index, null, 2)
242
282
  : `${index.files.length} files, ${index.nodes.length} nodes, ${index.edges.length} edges, ${Object.keys(index.capabilities).length} languages\n`;
243
283
  await emit(summary.endsWith('\n') ? summary : `${summary}\n`, options);
244
- });
284
+ }));
245
285
  const findName = find.command('name <name>').description('Find code elements by exact name');
246
286
  addSharedOptions(findName, { includeFile: true, includeLimit: true, includeType: true });
247
- findName.action(async (name, _options, command) => {
287
+ findName.action(runAction(async (name, _options, command) => {
248
288
  const options = getOptions(command);
249
289
  const index = await withIndex(options, 'excerpt');
250
290
  const results = findByName(index, name, parseType(options.type), options.file, parsePositiveInt(options.limit, 50, 'limit'));
@@ -253,10 +293,10 @@ export function registerCodeCommands(program) {
253
293
  ? formatPayloadJson(payload)
254
294
  : formatSearchResults(`Code Search: ${name}`, results, options.ci);
255
295
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
256
- });
296
+ }));
257
297
  const findPatternCmd = find.command('pattern <pattern>').description('Find code elements by substring pattern');
258
298
  addSharedOptions(findPatternCmd, { includeLimit: true, includeType: true });
259
- findPatternCmd.action(async (pattern, _options, command) => {
299
+ findPatternCmd.action(runAction(async (pattern, _options, command) => {
260
300
  const options = getOptions(command);
261
301
  const index = await withIndex(options, 'excerpt');
262
302
  const results = findByPattern(index, pattern, parseType(options.type), parsePositiveInt(options.limit, 50, 'limit'));
@@ -265,10 +305,10 @@ export function registerCodeCommands(program) {
265
305
  ? formatPayloadJson(payload)
266
306
  : formatSearchResults(`Code Pattern: ${pattern}`, results, options.ci);
267
307
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
268
- });
308
+ }));
269
309
  const findTypeCmd = find.command('type <nodeType>').description('List all nodes of a given type');
270
310
  addSharedOptions(findTypeCmd, { includeLimit: true });
271
- findTypeCmd.action(async (nodeType, _options, command) => {
311
+ findTypeCmd.action(runAction(async (nodeType, _options, command) => {
272
312
  const options = getOptions(command);
273
313
  const index = await withIndex(options, 'excerpt');
274
314
  const results = findByType(index, parseType(nodeType) ?? 'function', parsePositiveInt(options.limit, 50, 'limit'));
@@ -277,21 +317,21 @@ export function registerCodeCommands(program) {
277
317
  ? formatPayloadJson(payload)
278
318
  : formatSearchResults(`Code Type: ${nodeType}`, results, options.ci);
279
319
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
280
- });
320
+ }));
281
321
  const findContentCmd = find.command('content <text>').description('Search code content');
282
322
  addSharedOptions(findContentCmd, { includeLimit: true });
283
- findContentCmd.action(async (text, _options, command) => {
323
+ findContentCmd.action(runAction(async (text, _options, command) => {
284
324
  const options = getOptions(command);
285
- const index = await withIndex(options, 'full');
325
+ const index = await withFullContentIndex(options, 'find content');
286
326
  const results = findContent(index, text, parsePositiveInt(options.limit, 50, 'limit'));
287
327
  const payload = createPayload(index, { command: 'code.find.content', value: text }, results);
288
328
  const output = options.format === 'json' ? formatPayloadJson(payload) : formatContentResults(results, options.ci);
289
329
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
290
- });
330
+ }));
291
331
  const sourceCmd = code.command('source [name]').description('Read one symbol body by node id or disambiguated name');
292
332
  addSharedOptions(sourceCmd, { includeFile: true, includeType: true });
293
333
  sourceCmd.option('--node-id <id>', 'exact node id from code map/find/index output');
294
- sourceCmd.action(async (name, _options, command) => {
334
+ sourceCmd.action(runAction(async (name, _options, command) => {
295
335
  const options = getOptions(command);
296
336
  if (options.nodeId && name) {
297
337
  throw new Error('Use either --node-id or a symbol name, not both.');
@@ -311,10 +351,10 @@ export function registerCodeCommands(program) {
311
351
  }
312
352
  const output = options.format === 'json' ? JSON.stringify(result, null, 2) : formatSourceResult(result);
313
353
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
314
- });
354
+ }));
315
355
  const checkCmd = code.command('check <file>').description('Check syntax for a source file without a language server');
316
356
  addSharedOptions(checkCmd);
317
- checkCmd.action(async (file, _options, command) => {
357
+ checkCmd.action(runAction(async (file, _options, command) => {
318
358
  const options = getOptions(command);
319
359
  const repoRoot = path.resolve(options.path ?? process.cwd());
320
360
  const result = await checkCodeSyntax({ repoRoot, file });
@@ -323,10 +363,10 @@ export function registerCodeCommands(program) {
323
363
  }
324
364
  const output = options.format === 'json' ? JSON.stringify(result, null, 2) : formatCheckResult(result);
325
365
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
326
- });
366
+ }));
327
367
  const analyzeCallsCmd = analyze.command('calls <functionName>').description('Show what a function calls');
328
368
  addSharedOptions(analyzeCallsCmd, { includeFile: true });
329
- analyzeCallsCmd.action(async (functionName, _options, command) => {
369
+ analyzeCallsCmd.action(runAction(async (functionName, _options, command) => {
330
370
  const options = getOptions(command);
331
371
  const index = await withIndex(options, 'excerpt');
332
372
  const results = analyzeCalls(index, functionName, options.file);
@@ -335,10 +375,10 @@ export function registerCodeCommands(program) {
335
375
  ? formatPayloadJson(payload)
336
376
  : formatRelationResults(`Outgoing Calls: ${functionName}`, 'Callee', results, options.ci);
337
377
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
338
- });
378
+ }));
339
379
  const analyzeCallersCmd = analyze.command('callers <functionName>').description('Show what calls a function');
340
380
  addSharedOptions(analyzeCallersCmd, { includeFile: true });
341
- analyzeCallersCmd.action(async (functionName, _options, command) => {
381
+ analyzeCallersCmd.action(runAction(async (functionName, _options, command) => {
342
382
  const options = getOptions(command);
343
383
  const index = await withIndex(options, 'excerpt');
344
384
  const results = analyzeCallers(index, functionName, options.file);
@@ -347,66 +387,74 @@ export function registerCodeCommands(program) {
347
387
  ? formatPayloadJson(payload)
348
388
  : formatRelationResults(`Incoming Calls: ${functionName}`, 'Caller', results, options.ci, 'from');
349
389
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
350
- });
390
+ }));
351
391
  const analyzeChainCmd = analyze
352
392
  .command('chain <fromFunction> <toFunction>')
353
393
  .description('Find call paths between two functions');
354
394
  addSharedOptions(analyzeChainCmd, { includeDepth: true });
355
- analyzeChainCmd.action(async (fromFunction, toFunction, _options, command) => {
395
+ analyzeChainCmd.action(runAction(async (fromFunction, toFunction, _options, command) => {
356
396
  const options = getOptions(command);
357
397
  const index = await withIndex(options, 'excerpt');
358
398
  const results = analyzeCallChain(index, fromFunction, toFunction, parsePositiveInt(options.depth, 5, 'depth'));
359
399
  const payload = createPayload(index, { command: 'code.analyze.chain', from: fromFunction, to: toFunction, depth: options.depth }, results);
360
400
  const output = options.format === 'json' ? formatPayloadJson(payload) : formatChains(results, options.ci);
361
401
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
362
- });
402
+ }));
363
403
  const analyzeDepsCmd = analyze.command('deps <target>').description('Show module/file import relationships');
364
404
  addSharedOptions(analyzeDepsCmd);
365
- analyzeDepsCmd.action(async (target, _options, command) => {
405
+ analyzeDepsCmd.action(runAction(async (target, _options, command) => {
366
406
  const options = getOptions(command);
367
407
  const index = await withIndex(options, 'excerpt');
368
408
  const results = analyzeDeps(index, target);
369
409
  const payload = createPayload(index, { command: 'code.analyze.deps', value: target }, results);
370
410
  const output = options.format === 'json' ? formatPayloadJson(payload) : formatDependencies(results, options.ci);
371
411
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
372
- });
412
+ }));
373
413
  const analyzeCouplingCmd = analyze.command('coupling <target>').description('Show module-level coupling metrics');
374
414
  addSharedOptions(analyzeCouplingCmd);
375
- analyzeCouplingCmd.action(async (target, _options, command) => {
415
+ analyzeCouplingCmd.action(runAction(async (target, _options, command) => {
376
416
  const options = getOptions(command);
377
417
  const index = await withIndex(options, 'excerpt');
378
418
  const results = analyzeModuleCoupling(index, target);
379
419
  const payload = createPayload(index, { command: 'code.analyze.coupling', value: target }, results);
380
420
  const output = options.format === 'json' ? formatPayloadJson(payload) : formatModuleCoupling(results, options.ci);
381
421
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
382
- });
422
+ }));
383
423
  const analyzeTreeCmd = analyze
384
424
  .command('tree <className>')
385
425
  .description('Show class/interface inheritance relationships');
386
426
  addSharedOptions(analyzeTreeCmd, { includeFile: true });
387
- analyzeTreeCmd.action(async (className, _options, command) => {
427
+ analyzeTreeCmd.action(runAction(async (className, _options, command) => {
388
428
  const options = getOptions(command);
389
429
  const index = await withIndex(options, 'excerpt');
390
430
  const results = analyzeTree(index, className, options.file);
391
431
  const payload = createPayload(index, { command: 'code.analyze.tree', value: className, file: options.file }, results);
392
432
  const output = options.format === 'json' ? formatPayloadJson(payload) : formatClassTree(results, options.ci);
393
433
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
394
- });
434
+ }));
395
435
  const findFusedCmd = find
396
436
  .command('fused <query>')
397
437
  .description('Fused search: combines name, pattern, and content search with rank fusion');
398
438
  addSharedOptions(findFusedCmd, { includeLimit: true });
399
439
  findFusedCmd.option('--weights <spec>', 'weights as name:N,pattern:N,content:N', 'name:3,pattern:2,content:1');
400
- findFusedCmd.action(async (query, _options, command) => {
440
+ findFusedCmd.action(runAction(async (query, _options, command) => {
401
441
  const options = getOptions(command);
402
442
  const weightsStr = options.weights ?? 'name:3,pattern:2,content:1';
403
443
  const weights = {};
404
444
  for (const pair of weightsStr.split(',')) {
405
445
  const [key, val] = pair.split(':');
406
- if (key && val)
407
- weights[key.trim()] = parseFloat(val);
446
+ const weightKey = key?.trim();
447
+ const weightValue = val?.trim();
448
+ if (!weightKey || !weightValue)
449
+ continue;
450
+ const parsed = z.number().finite().nonnegative().safeParse(Number(weightValue));
451
+ if (!parsed.success) {
452
+ throw new Error(`Invalid --weights value "${weightValue}" for "${weightKey}" (expected a non-negative number).`);
453
+ }
454
+ weights[weightKey] = parsed.data;
408
455
  }
409
- const index = await withIndex(options, (weights.content ?? 1) > 0 ? 'full' : 'excerpt');
456
+ const needsFull = (weights.content ?? 1) > 0;
457
+ const index = needsFull ? await withFullContentIndex(options, 'find fused') : await withIndex(options, 'excerpt');
410
458
  const results = fusedSearch(index, query, {
411
459
  weights: { name: weights.name, pattern: weights.pattern, content: weights.content },
412
460
  limit: parsePositiveInt(options.limit, 50, 'limit'),
@@ -414,7 +462,33 @@ export function registerCodeCommands(program) {
414
462
  const payload = createPayload(index, { command: 'code.find.fused', value: query, weights }, results);
415
463
  const output = options.format === 'json' ? formatPayloadJson(payload) : formatFusedResults(results, options.ci);
416
464
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
417
- });
465
+ }));
466
+ const dirtreeCmd = code.command('dirtree').description('Render a bounded directory tree from the built code index');
467
+ addSharedOptions(dirtreeCmd);
468
+ dirtreeCmd.option('--depth <n>', 'maximum rendered tree depth', '6');
469
+ dirtreeCmd.option('--max-entries <n>', 'maximum entries per directory', '50');
470
+ dirtreeCmd.addOption(new Option('--mode <mode>', 'tree mode').choices(['compact', 'verbose', 'map']).default('compact'));
471
+ dirtreeCmd.option('--map-tokens <n>', 'token budget for the directory tree (default 4096)');
472
+ dirtreeCmd.option('--token-budget <n>', 'alias for --map-tokens');
473
+ dirtreeCmd.addOption(new Option('--tokenizer <name>', 'token counter for the budget').choices(['heuristic', 'o200k_base', 'cl100k_base']));
474
+ dirtreeCmd.option('--focus-path <path>', 'subtree root to render', collectOption, []);
475
+ dirtreeCmd.action(runAction(async (_options, command) => {
476
+ const options = getOptions(command);
477
+ const tokenizerName = resolveTokenizerName(options.tokenizer);
478
+ const tokenizer = await createTokenizer(tokenizerName);
479
+ const index = await withIndex(options, 'excerpt');
480
+ const focusPath = (options.focusPath ?? []).at(-1);
481
+ const result = buildDirectoryTree(index, {
482
+ mode: options.mode === 'verbose' || options.mode === 'map' ? options.mode : 'compact',
483
+ maxDepth: parseNonNegativeInt(options.depth, 6, 'depth'),
484
+ maxEntriesPerDir: parsePositiveInt(options.maxEntries, 50, 'max entries'),
485
+ tokenBudget: parsePositiveInt(options.mapTokens ?? options.tokenBudget, 4096, 'map tokens'),
486
+ focusPath,
487
+ countTokens: text => tokenizer.count(text),
488
+ });
489
+ const output = options.format === 'json' ? formatDirectoryTreeJson(result) : formatDirectoryTree(result);
490
+ await emit(output.endsWith('\n') ? output : `${output}\n`, options);
491
+ }));
418
492
  registerRepoMapCommand(code, 'map', 'map', 'Token-budgeted, importance-ranked repo map (top symbol signatures per file)');
419
493
  registerRepoMapCommand(code, 'pack', 'pack', 'Token-budgeted, importance-ranked pack (file content, optionally compressed)');
420
494
  }
@@ -432,11 +506,11 @@ function registerRepoMapCommand(code, name, defaultMode, description) {
432
506
  cmd.addOption(new Option('--tokenizer <name>', 'token counter for the budget').choices(['heuristic', 'o200k_base', 'cl100k_base']));
433
507
  cmd.option('--query <text>', 'focus: boost files/symbols matching this text');
434
508
  cmd.option('--focus-path <path>', 'focus: boost this file/dir and its graph neighbors (repeatable)', collectOption, []);
435
- cmd.option('--focus-depth <n>', 'focus: graph-neighbor depth for --focus-path (default 1)');
509
+ cmd.option('--focus-depth <n>', 'focus: graph-neighbor depth for --focus-path (default 1, 0 = seeds only)');
436
510
  cmd.option('--changed-from <ref>', 'focus: boost files changed from this base ref');
437
511
  cmd.option('--changed-to <ref>', 'focus: compare changed files to this head ref');
438
512
  cmd.option('--staged', 'focus: use staged changes for --changed-from/--changed-to');
439
- cmd.action(async (_options, command) => {
513
+ cmd.action(runAction(async (_options, command) => {
440
514
  const options = getOptions(command);
441
515
  const mode = options.mode ?? defaultMode;
442
516
  const format = options.mapFormat ?? (options.format === 'json' ? 'json' : 'markdown');
@@ -447,8 +521,7 @@ function registerRepoMapCommand(code, name, defaultMode, description) {
447
521
  const index = await withIndex(options, mode === 'pack' ? 'full' : 'excerpt');
448
522
  const focusQuery = options.query?.trim();
449
523
  const focusPaths = (options.focusPath ?? []).map(value => value.trim()).filter(Boolean);
450
- const changedByPath = new Map();
451
- const changedFocusPaths = [];
524
+ let changeContext;
452
525
  if (options.changedFrom || options.changedTo || options.staged) {
453
526
  const summary = await getGitDiffSummary({
454
527
  repoRoot: index.repoRoot,
@@ -456,26 +529,14 @@ function registerRepoMapCommand(code, name, defaultMode, description) {
456
529
  head: options.changedTo,
457
530
  staged: options.staged,
458
531
  });
459
- const numstatByPath = new Map(summary.numstat.map(entry => [entry.path, entry]));
460
- for (const file of summary.files) {
461
- if (file.status === 'deleted')
462
- continue;
463
- const absolutePath = path.resolve(index.repoRoot, file.path);
464
- const numstat = numstatByPath.get(file.path);
465
- changedFocusPaths.push(absolutePath);
466
- changedByPath.set(absolutePath, {
467
- added: numstat?.added ?? 0,
468
- deleted: numstat?.deleted ?? 0,
469
- binary: file.binary === true || numstat?.binary === true,
470
- });
471
- }
532
+ changeContext = toRepoMapChangeContext(index.repoRoot, summary);
472
533
  }
473
- const allFocusPaths = [...new Set([...focusPaths, ...changedFocusPaths])];
534
+ const allFocusPaths = [...new Set([...focusPaths, ...(changeContext?.focusPaths ?? [])])];
474
535
  const focus = focusQuery || allFocusPaths.length > 0
475
536
  ? {
476
537
  query: focusQuery || undefined,
477
538
  paths: allFocusPaths,
478
- graphDepth: options.focusDepth ? parsePositiveInt(options.focusDepth, 1, 'focus depth') : undefined,
539
+ graphDepth: options.focusDepth ? parseNonNegativeInt(options.focusDepth, 1, 'focus depth') : undefined,
479
540
  }
480
541
  : undefined;
481
542
  const result = buildRepoMap(index, {
@@ -489,15 +550,10 @@ function registerRepoMapCommand(code, name, defaultMode, description) {
489
550
  focus,
490
551
  });
491
552
  result.tokenizer = tokenizerName;
492
- for (const entry of result.entries) {
493
- const churn = changedByPath.get(entry.path);
494
- if (!churn)
495
- continue;
496
- entry.changed = true;
497
- entry.churn = churn;
498
- }
553
+ if (changeContext)
554
+ stampRepoMapChanges(result, changeContext);
499
555
  const output = renderRepoMap(result);
500
556
  await emit(output.endsWith('\n') ? output : `${output}\n`, options);
501
- });
557
+ }));
502
558
  }
503
559
  //# sourceMappingURL=command.js.map
@@ -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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"}
@@ -0,0 +1,54 @@
1
+ import { type CodeNodeType, type NormalizedSymbolKind, type ParsedImport, type ParsedSymbol } from './types.js';
2
+ /**
3
+ * Minimal structural view of an index that context projection needs — both
4
+ * `CodebaseIndex` and `CodebaseIndexSlim` satisfy it, so hosts holding either
5
+ * can project without converting.
6
+ */
7
+ export interface CodeContextSource {
8
+ repoRoot: string;
9
+ files: ReadonlyArray<{
10
+ path: string;
11
+ relativePath: string;
12
+ language: string;
13
+ symbols: ReadonlyArray<ParsedSymbol>;
14
+ imports: ReadonlyArray<ParsedImport>;
15
+ }>;
16
+ }
17
+ export interface CodeContextExport {
18
+ name: string;
19
+ kind: NormalizedSymbolKind;
20
+ type: CodeNodeType;
21
+ /** Graph node id when the index carries symbol→node linkage. */
22
+ nodeId?: string;
23
+ signature?: string;
24
+ fullSignature?: string;
25
+ returnType?: string;
26
+ jsdoc?: string;
27
+ containerName?: string;
28
+ line: number;
29
+ }
30
+ export interface CodeContextLocalImport {
31
+ /** Repo-relative, forward-slash path of the imported module. */
32
+ resolvedPath: string;
33
+ /** Local binding names introduced by the import. */
34
+ bindings: string[];
35
+ }
36
+ export interface CodeContextFile {
37
+ relativePath: string;
38
+ language?: string;
39
+ exports: CodeContextExport[];
40
+ localImports: CodeContextLocalImport[];
41
+ /** External package roots (`@scope/name` or the bare first segment), deduped. */
42
+ externalDeps: string[];
43
+ }
44
+ export interface CodeContext {
45
+ files: CodeContextFile[];
46
+ /** relativePath → repo-relative resolved local import paths (files with none are omitted). */
47
+ importGraph: Record<string, string[]>;
48
+ }
49
+ /**
50
+ * Project an index down to the shape hosts typically feed to models or graph
51
+ * views: per-file exported symbols, the local import graph, and external
52
+ * dependency roots. Pure and synchronous — no filesystem access.
53
+ */
54
+ export declare function buildCodeContext(index: CodeContextSource): CodeContext;