@cesarandreslopez/occ 0.8.8 → 0.8.9

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.
@@ -0,0 +1,275 @@
1
+ /**
2
+ * Token-budgeted, importance-ranked repo map / pack.
3
+ *
4
+ * `buildRepoMap` ranks the graph (see `rank.ts`), then greedily admits the
5
+ * highest-ranked files until a token budget is hit — shedding low-rank symbols
6
+ * or shrinking content (partial admission) rather than dropping a whole file
7
+ * when it nearly fits. Two modes:
8
+ * - `map` — Aider-style: top symbol signatures per file (cheap context).
9
+ * - `pack` — Repomix-style: file content, optionally compressed to the
10
+ * architecturally-significant section via `extractKeySection`.
11
+ *
12
+ * Token counting is injected (`countTokens`) so a real BPE tokenizer can
13
+ * enforce an exact budget; it defaults to the language-aware heuristic.
14
+ */
15
+ import { z } from 'zod';
16
+ import { estimateTokenCount } from '../tokens.js';
17
+ import { extractKeySection } from './query.js';
18
+ import { toNormalizedSymbolKind } from './types.js';
19
+ import { rankNodes, RankOptionsSchema } from './rank.js';
20
+ export const RepoMapFormatSchema = z.enum(['markdown', 'xml', 'json', 'plain']);
21
+ export const RepoMapModeSchema = z.enum(['map', 'pack']);
22
+ export const RepoMapOptionsSchema = z.object({
23
+ tokenBudget: z.number().int().positive(),
24
+ mode: RepoMapModeSchema.optional(),
25
+ format: RepoMapFormatSchema.optional(),
26
+ compress: z.boolean().optional(),
27
+ maxSymbolsPerFile: z.number().int().positive().optional(),
28
+ rank: RankOptionsSchema.optional(),
29
+ });
30
+ export const RepoMapSymbolSchema = z.object({
31
+ name: z.string(),
32
+ kind: z.string(),
33
+ signature: z.string(),
34
+ line: z.number().optional(),
35
+ exported: z.boolean(),
36
+ jsdoc: z.string().optional(),
37
+ });
38
+ export const RepoMapEntrySchema = z.object({
39
+ relativePath: z.string(),
40
+ path: z.string(),
41
+ language: z.string(),
42
+ score: z.number(),
43
+ normalizedScore: z.number(),
44
+ symbols: z.array(RepoMapSymbolSchema),
45
+ content: z.string().optional(),
46
+ contentReason: z.string().optional(),
47
+ tokens: z.number(),
48
+ droppedSymbols: z.number(),
49
+ });
50
+ export const RepoMapResultSchema = z.object({
51
+ mode: RepoMapModeSchema,
52
+ format: RepoMapFormatSchema,
53
+ tokenizer: z.string().optional(),
54
+ tokenBudget: z.number(),
55
+ tokensUsed: z.number(),
56
+ totalFiles: z.number(),
57
+ entries: z.array(RepoMapEntrySchema),
58
+ droppedFiles: z.number(),
59
+ droppedSymbols: z.number(),
60
+ truncated: z.boolean(),
61
+ rankIterations: z.number(),
62
+ rankConverged: z.boolean(),
63
+ });
64
+ const APPROX_CHARS_PER_TOKEN = 4;
65
+ const DEFAULT_COMPRESS_CHARS = 4_000;
66
+ function symbolKey(parts) {
67
+ return [parts.type, parts.name, parts.line ?? '', parts.containerName ?? ''].join('|');
68
+ }
69
+ /** Order ranked symbols of a file: exported first, then by descending rank. */
70
+ function orderedSymbolsForFile(file, rankedByPath) {
71
+ const byKey = new Map();
72
+ for (const symbol of file.symbols) {
73
+ byKey.set(symbolKey({ type: symbol.type, name: symbol.name, line: symbol.line, containerName: symbol.containerName }), symbol);
74
+ }
75
+ const seen = new Set();
76
+ const built = [];
77
+ for (const node of rankedByPath) {
78
+ const key = symbolKey({ type: node.type, name: node.name, line: node.line, containerName: node.containerName });
79
+ const symbol = byKey.get(key);
80
+ if (!symbol || seen.has(key))
81
+ continue;
82
+ seen.add(key);
83
+ built.push({
84
+ name: symbol.name,
85
+ kind: toNormalizedSymbolKind(symbol.type, symbol.containerName),
86
+ signature: symbol.fullSignature ?? symbol.signature ?? symbol.name,
87
+ line: symbol.line,
88
+ exported: symbol.exported ?? false,
89
+ jsdoc: symbol.jsdoc,
90
+ });
91
+ }
92
+ // Stable partition: exported first, preserving the rank order within each group.
93
+ const exported = built.filter((symbol) => symbol.exported);
94
+ const rest = built.filter((symbol) => !symbol.exported);
95
+ return [...exported, ...rest];
96
+ }
97
+ /**
98
+ * Render one symbol as a readable declaration line. The stored `signature` is
99
+ * the nameless callable form (`(params) => Return`), so we re-attach the name
100
+ * and a kind keyword to produce e.g. `export function foo(a: number): void`.
101
+ */
102
+ export function repoMapSignatureLine(symbol) {
103
+ const prefix = symbol.exported ? 'export ' : '';
104
+ const sig = symbol.signature;
105
+ if (symbol.kind === 'function' || symbol.kind === 'method') {
106
+ const keyword = symbol.kind === 'method' ? '' : 'function ';
107
+ const body = sig.startsWith('(') ? `${symbol.name}${sig}` : (sig && sig !== symbol.name ? sig : `${symbol.name}()`);
108
+ return `${prefix}${keyword}${body}`;
109
+ }
110
+ const kindWord = symbol.kind === 'type' ? 'type' : symbol.kind;
111
+ if (sig && sig !== symbol.name && !sig.startsWith('(')) {
112
+ return `${prefix}${kindWord} ${symbol.name} ${sig}`;
113
+ }
114
+ return `${prefix}${kindWord} ${symbol.name}`;
115
+ }
116
+ /**
117
+ * Markdown serialization of a single entry. Shared between token measurement
118
+ * (here) and the markdown renderer in `output.ts`, so the enforced budget
119
+ * matches the emitted document exactly.
120
+ */
121
+ export function repoMapEntryToMarkdown(entry, mode) {
122
+ const lines = [`## ${entry.relativePath} (score ${entry.normalizedScore.toFixed(1)})`];
123
+ if (mode === 'pack' && entry.content != null) {
124
+ if (entry.contentReason)
125
+ lines.push(`<!-- ${entry.contentReason} -->`);
126
+ lines.push('```' + entry.language);
127
+ lines.push(entry.content);
128
+ lines.push('```');
129
+ }
130
+ else {
131
+ for (const symbol of entry.symbols)
132
+ lines.push(`- ${repoMapSignatureLine(symbol)}`);
133
+ }
134
+ return lines.join('\n');
135
+ }
136
+ function buildContentEntry(file, charBudget) {
137
+ try {
138
+ const section = extractKeySection(file, Math.max(charBudget, 200));
139
+ return { content: section.content, reason: section.reason };
140
+ }
141
+ catch {
142
+ return null;
143
+ }
144
+ }
145
+ /** Build a token-budgeted, importance-ranked repo map (or pack) from an index. */
146
+ export function buildRepoMap(index, options) {
147
+ const mode = options.mode ?? 'map';
148
+ const format = options.format ?? 'markdown';
149
+ const compress = options.compress ?? false;
150
+ const countTokens = options.countTokens ?? estimateTokenCount;
151
+ const budget = options.tokenBudget;
152
+ const ranking = rankNodes(index, options.rank);
153
+ const fileByPath = new Map();
154
+ for (const file of index.files)
155
+ fileByPath.set(file.path, file);
156
+ const rankedSymbolsByPath = new Map();
157
+ for (const node of ranking.nodes) {
158
+ if (node.type === 'file' || node.type === 'module')
159
+ continue;
160
+ const list = rankedSymbolsByPath.get(node.path);
161
+ if (list)
162
+ list.push(node);
163
+ else
164
+ rankedSymbolsByPath.set(node.path, [node]);
165
+ }
166
+ const entries = [];
167
+ let tokensUsed = 0;
168
+ let droppedFiles = 0;
169
+ let droppedSymbols = 0;
170
+ for (const fileScore of ranking.fileScores) {
171
+ const file = fileByPath.get(fileScore.path);
172
+ if (!file)
173
+ continue;
174
+ const remaining = budget - tokensUsed;
175
+ if (remaining <= 0) {
176
+ droppedFiles++;
177
+ continue;
178
+ }
179
+ let symbols = orderedSymbolsForFile(file, rankedSymbolsByPath.get(file.path) ?? []);
180
+ if (options.maxSymbolsPerFile != null && symbols.length > options.maxSymbolsPerFile) {
181
+ droppedSymbols += symbols.length - options.maxSymbolsPerFile;
182
+ symbols = symbols.slice(0, options.maxSymbolsPerFile);
183
+ }
184
+ let content;
185
+ let contentReason;
186
+ if (mode === 'pack') {
187
+ const charBudget = compress
188
+ ? Math.min(DEFAULT_COMPRESS_CHARS, remaining * APPROX_CHARS_PER_TOKEN)
189
+ : remaining * APPROX_CHARS_PER_TOKEN;
190
+ const built = buildContentEntry(file, charBudget);
191
+ if (built) {
192
+ content = built.content;
193
+ contentReason = built.reason;
194
+ }
195
+ }
196
+ // Map mode with no symbols carries no information — skip it.
197
+ if (mode === 'map' && symbols.length === 0)
198
+ continue;
199
+ if (mode === 'pack' && content == null && symbols.length === 0)
200
+ continue;
201
+ const makeEntry = (entrySymbols, entryContent) => {
202
+ const entry = {
203
+ relativePath: file.relativePath,
204
+ path: file.path,
205
+ language: file.language,
206
+ score: fileScore.score,
207
+ normalizedScore: fileScore.normalizedScore,
208
+ symbols: entrySymbols,
209
+ content: entryContent,
210
+ contentReason: entryContent != null ? contentReason : undefined,
211
+ tokens: 0,
212
+ droppedSymbols: 0,
213
+ };
214
+ entry.tokens = countTokens(repoMapEntryToMarkdown(entry, mode));
215
+ return entry;
216
+ };
217
+ let entry = makeEntry(symbols, content);
218
+ if (tokensUsed + entry.tokens <= budget) {
219
+ tokensUsed += entry.tokens;
220
+ entries.push(entry);
221
+ continue;
222
+ }
223
+ // Partial admission — shrink until it fits or the file must be dropped.
224
+ if (mode === 'pack' && content != null) {
225
+ const shrunkBudget = Math.max(200, Math.floor((budget - tokensUsed) * APPROX_CHARS_PER_TOKEN * 0.9));
226
+ const shrunk = buildContentEntry(file, shrunkBudget);
227
+ if (shrunk) {
228
+ content = shrunk.content;
229
+ contentReason = shrunk.reason;
230
+ entry = makeEntry(symbols, content);
231
+ }
232
+ }
233
+ else {
234
+ // map mode: drop lowest-ranked symbols from the tail until it fits.
235
+ let kept = symbols.length;
236
+ while (kept > 0) {
237
+ const trial = makeEntry(symbols.slice(0, kept));
238
+ if (tokensUsed + trial.tokens <= budget) {
239
+ entry = trial;
240
+ break;
241
+ }
242
+ kept--;
243
+ }
244
+ if (kept === 0) {
245
+ droppedFiles++;
246
+ droppedSymbols += symbols.length;
247
+ continue;
248
+ }
249
+ droppedSymbols += symbols.length - kept;
250
+ entry.droppedSymbols = symbols.length - kept;
251
+ }
252
+ if (tokensUsed + entry.tokens <= budget) {
253
+ tokensUsed += entry.tokens;
254
+ entries.push(entry);
255
+ }
256
+ else {
257
+ droppedFiles++;
258
+ droppedSymbols += entry.symbols.length;
259
+ }
260
+ }
261
+ return {
262
+ mode,
263
+ format,
264
+ tokenBudget: budget,
265
+ tokensUsed,
266
+ totalFiles: ranking.fileScores.length,
267
+ entries,
268
+ droppedFiles,
269
+ droppedSymbols,
270
+ truncated: droppedFiles > 0 || droppedSymbols > 0,
271
+ rankIterations: ranking.iterations,
272
+ rankConverged: ranking.converged,
273
+ };
274
+ }
275
+ //# sourceMappingURL=map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../../src/code/map.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { CallChain, ClassTreeAnalysis, CodeCommandPayload, CodeSearchResult, ContentMatch, DependencyAnalysis, RelationMatch } from './types.js';
2
2
  import type { FusedSearchResult, ModuleCoupling } from './query.js';
3
+ import { type RepoMapResult } from './map.js';
3
4
  export declare function formatPayloadJson(payload: CodeCommandPayload): string;
4
5
  export declare function formatSearchResults(title: string, results: CodeSearchResult[], ci?: boolean): string;
5
6
  export declare function formatContentResults(results: ContentMatch[], ci?: boolean): string;
@@ -9,3 +10,7 @@ export declare function formatClassTree(result: ClassTreeAnalysis | null, ci?: b
9
10
  export declare function formatChains(chains: CallChain[], ci?: boolean): string;
10
11
  export declare function formatFusedResults(results: FusedSearchResult[], ci?: boolean): string;
11
12
  export declare function formatModuleCoupling(result: ModuleCoupling, ci?: boolean): string;
13
+ export declare function formatRepoMapMarkdown(result: RepoMapResult): string;
14
+ export declare function formatRepoMapPlain(result: RepoMapResult): string;
15
+ export declare function formatRepoMapXml(result: RepoMapResult): string;
16
+ export declare function renderRepoMap(result: RepoMapResult): string;
@@ -2,6 +2,7 @@ import Table from 'cli-table3';
2
2
  import chalk from 'chalk';
3
3
  import { formatNumber } from '../utils.js';
4
4
  import { sectionHeader, stripAnsi, tableChars } from '../output/tabular.js';
5
+ import { repoMapEntryToMarkdown, repoMapSignatureLine } from './map.js';
5
6
  const colors = {
6
7
  header: (value) => chalk.bold(value),
7
8
  key: (value) => chalk.cyan(value),
@@ -302,4 +303,93 @@ export function formatModuleCoupling(result, ci = false) {
302
303
  }
303
304
  return lines.join('\n') + '\n';
304
305
  }
306
+ // ── Repo map / pack ───────────────────────────────────────────────────────
307
+ // Repo-map output is meant to be pasted into an LLM, so it is deliberately
308
+ // plain (no ANSI colors) regardless of the `ci` flag.
309
+ function repoMapHeader(result) {
310
+ const tokenizer = result.tokenizer && result.tokenizer !== 'heuristic' ? `, ${result.tokenizer}` : '';
311
+ return `# Repo Map — ${result.entries.length}/${result.totalFiles} files, ${result.tokensUsed}/${result.tokenBudget} tokens${tokenizer}`;
312
+ }
313
+ function repoMapFooter(result) {
314
+ if (!result.truncated)
315
+ return null;
316
+ const parts = [];
317
+ if (result.droppedFiles > 0)
318
+ parts.push(`${result.droppedFiles} file(s)`);
319
+ if (result.droppedSymbols > 0)
320
+ parts.push(`${result.droppedSymbols} symbol(s)`);
321
+ return `_${parts.join(' / ')} omitted to fit the ${result.tokenBudget}-token budget._`;
322
+ }
323
+ export function formatRepoMapMarkdown(result) {
324
+ const blocks = [repoMapHeader(result), ''];
325
+ for (const entry of result.entries)
326
+ blocks.push(repoMapEntryToMarkdown(entry, result.mode));
327
+ const footer = repoMapFooter(result);
328
+ if (footer)
329
+ blocks.push('', footer);
330
+ return blocks.join('\n\n') + '\n';
331
+ }
332
+ export function formatRepoMapPlain(result) {
333
+ const lines = [
334
+ `Repo Map (${result.entries.length}/${result.totalFiles} files, ${result.tokensUsed}/${result.tokenBudget} tokens)`,
335
+ '',
336
+ ];
337
+ for (const entry of result.entries) {
338
+ lines.push(`${entry.relativePath} [${entry.normalizedScore.toFixed(1)}]`);
339
+ if (result.mode === 'pack' && entry.content != null) {
340
+ for (const line of entry.content.split('\n'))
341
+ lines.push(` ${line}`);
342
+ }
343
+ else {
344
+ for (const symbol of entry.symbols) {
345
+ lines.push(` ${repoMapSignatureLine(symbol)}`);
346
+ }
347
+ }
348
+ lines.push('');
349
+ }
350
+ const footer = repoMapFooter(result);
351
+ if (footer)
352
+ lines.push(footer.replace(/_/g, ''));
353
+ return lines.join('\n') + '\n';
354
+ }
355
+ function escapeXml(value) {
356
+ return value
357
+ .replace(/&/g, '&amp;')
358
+ .replace(/</g, '&lt;')
359
+ .replace(/>/g, '&gt;')
360
+ .replace(/"/g, '&quot;');
361
+ }
362
+ function repoMapEntryToXml(entry, mode) {
363
+ const lines = [` <file path="${escapeXml(entry.relativePath)}" score="${entry.normalizedScore.toFixed(1)}" language="${escapeXml(entry.language)}">`];
364
+ for (const symbol of entry.symbols) {
365
+ lines.push(` <symbol kind="${escapeXml(symbol.kind)}" exported="${symbol.exported}"${symbol.line != null ? ` line="${symbol.line}"` : ''}>${escapeXml(symbol.signature)}</symbol>`);
366
+ }
367
+ if (mode === 'pack' && entry.content != null) {
368
+ lines.push(` <content${entry.contentReason ? ` reason="${escapeXml(entry.contentReason)}"` : ''}>${escapeXml(entry.content)}</content>`);
369
+ }
370
+ lines.push(' </file>');
371
+ return lines.join('\n');
372
+ }
373
+ export function formatRepoMapXml(result) {
374
+ const lines = [
375
+ `<repomap mode="${result.mode}" tokens="${result.tokensUsed}" budget="${result.tokenBudget}" files="${result.entries.length}" totalFiles="${result.totalFiles}"${result.truncated ? ' truncated="true"' : ''}>`,
376
+ ];
377
+ for (const entry of result.entries)
378
+ lines.push(repoMapEntryToXml(entry, result.mode));
379
+ lines.push('</repomap>');
380
+ return lines.join('\n') + '\n';
381
+ }
382
+ export function renderRepoMap(result) {
383
+ switch (result.format) {
384
+ case 'json':
385
+ return JSON.stringify(result, null, 2) + '\n';
386
+ case 'xml':
387
+ return formatRepoMapXml(result);
388
+ case 'plain':
389
+ return formatRepoMapPlain(result);
390
+ case 'markdown':
391
+ default:
392
+ return formatRepoMapMarkdown(result);
393
+ }
394
+ }
305
395
  //# sourceMappingURL=output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/code/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/code/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Importance ranking over the code graph.
3
+ *
4
+ * Runs a weighted PageRank on the `imports`/`calls`/`inherits`/`implements`
5
+ * edges so that symbols and files which many *important* others depend on
6
+ * float to the top. This is the signal `buildRepoMap` uses to decide what to
7
+ * keep within a token budget (cf. Aider's tree-sitter repo map).
8
+ *
9
+ * Pure and dependency-free (types + zod only) so it stays trivially testable
10
+ * and obeys the module DAG — it performs no I/O and does not count tokens.
11
+ */
12
+ import { z } from 'zod';
13
+ import type { CodebaseIndex } from './types.js';
14
+ export declare const RankEdgeWeightsSchema: z.ZodObject<{
15
+ imports: z.ZodOptional<z.ZodNumber>;
16
+ calls: z.ZodOptional<z.ZodNumber>;
17
+ inherits: z.ZodOptional<z.ZodNumber>;
18
+ }, z.core.$strip>;
19
+ export type RankEdgeWeights = z.infer<typeof RankEdgeWeightsSchema>;
20
+ export declare const RankOptionsSchema: z.ZodObject<{
21
+ damping: z.ZodOptional<z.ZodNumber>;
22
+ maxIterations: z.ZodOptional<z.ZodNumber>;
23
+ epsilon: z.ZodOptional<z.ZodNumber>;
24
+ edgeWeights: z.ZodOptional<z.ZodObject<{
25
+ imports: z.ZodOptional<z.ZodNumber>;
26
+ calls: z.ZodOptional<z.ZodNumber>;
27
+ inherits: z.ZodOptional<z.ZodNumber>;
28
+ }, z.core.$strip>>;
29
+ biasExports: z.ZodOptional<z.ZodBoolean>;
30
+ includeExternal: z.ZodOptional<z.ZodBoolean>;
31
+ }, z.core.$strip>;
32
+ export type RankOptions = z.infer<typeof RankOptionsSchema>;
33
+ export declare const RankedNodeSchema: z.ZodObject<{
34
+ nodeId: z.ZodString;
35
+ score: z.ZodNumber;
36
+ normalizedScore: z.ZodNumber;
37
+ type: z.ZodString;
38
+ name: z.ZodString;
39
+ path: z.ZodString;
40
+ relativePath: z.ZodOptional<z.ZodString>;
41
+ line: z.ZodOptional<z.ZodNumber>;
42
+ containerName: z.ZodOptional<z.ZodString>;
43
+ isExported: z.ZodBoolean;
44
+ }, z.core.$strip>;
45
+ export type RankedNode = z.infer<typeof RankedNodeSchema>;
46
+ export declare const RankedFileSchema: z.ZodObject<{
47
+ path: z.ZodString;
48
+ relativePath: z.ZodString;
49
+ score: z.ZodNumber;
50
+ normalizedScore: z.ZodNumber;
51
+ }, z.core.$strip>;
52
+ export type RankedFile = z.infer<typeof RankedFileSchema>;
53
+ export declare const RankResultSchema: z.ZodObject<{
54
+ nodes: z.ZodArray<z.ZodObject<{
55
+ nodeId: z.ZodString;
56
+ score: z.ZodNumber;
57
+ normalizedScore: z.ZodNumber;
58
+ type: z.ZodString;
59
+ name: z.ZodString;
60
+ path: z.ZodString;
61
+ relativePath: z.ZodOptional<z.ZodString>;
62
+ line: z.ZodOptional<z.ZodNumber>;
63
+ containerName: z.ZodOptional<z.ZodString>;
64
+ isExported: z.ZodBoolean;
65
+ }, z.core.$strip>>;
66
+ fileScores: z.ZodArray<z.ZodObject<{
67
+ path: z.ZodString;
68
+ relativePath: z.ZodString;
69
+ score: z.ZodNumber;
70
+ normalizedScore: z.ZodNumber;
71
+ }, z.core.$strip>>;
72
+ iterations: z.ZodNumber;
73
+ converged: z.ZodBoolean;
74
+ }, z.core.$strip>;
75
+ export type RankResult = z.infer<typeof RankResultSchema>;
76
+ /**
77
+ * Weighted PageRank over the dependency/call graph.
78
+ *
79
+ * Edge direction matches storage (`from` depends on `to`), so rank flows from a
80
+ * dependent toward the thing it depends on — heavily-relied-upon nodes
81
+ * accumulate importance. `ambiguous`/`unresolved` edges (no concrete `to`) are
82
+ * skipped because their importance cannot be attributed.
83
+ */
84
+ export declare function rankNodes(index: CodebaseIndex, options?: RankOptions): RankResult;
85
+ export declare function topRankedFiles(result: RankResult, limit: number): RankedFile[];
86
+ export declare function topRankedSymbols(result: RankResult, limit: number): RankedNode[];