@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.
- package/README.md +31 -8
- package/dist/src/cli.d.ts +16 -0
- package/dist/src/cli.js +46 -4
- package/dist/src/cli.js.map +1 -1
- package/dist/src/code/build.d.ts +22 -0
- package/dist/src/code/build.js +47 -13
- package/dist/src/code/build.js.map +1 -1
- package/dist/src/code/cache.js +30 -1
- package/dist/src/code/cache.js.map +1 -1
- package/dist/src/code/check.js +46 -6
- package/dist/src/code/check.js.map +1 -1
- package/dist/src/code/command.js +125 -69
- package/dist/src/code/command.js.map +1 -1
- package/dist/src/code/context.d.ts +54 -0
- package/dist/src/code/context.js +67 -0
- package/dist/src/code/context.js.map +1 -0
- package/dist/src/code/diff.d.ts +12 -2
- package/dist/src/code/diff.js +15 -3
- package/dist/src/code/diff.js.map +1 -1
- package/dist/src/code/discover.d.ts +2 -2
- package/dist/src/code/discover.js +8 -10
- package/dist/src/code/discover.js.map +1 -1
- package/dist/src/code/focus.js +34 -26
- package/dist/src/code/focus.js.map +1 -1
- package/dist/src/code/incremental.js +1 -1
- package/dist/src/code/incremental.js.map +1 -1
- package/dist/src/code/index-io.js +10 -2
- package/dist/src/code/index-io.js.map +1 -1
- package/dist/src/code/isolated-chunk-runner.js +17 -2
- package/dist/src/code/isolated-chunk-runner.js.map +1 -1
- package/dist/src/code/isolated-runner.js +17 -3
- package/dist/src/code/isolated-runner.js.map +1 -1
- package/dist/src/code/isolated.js +32 -6
- package/dist/src/code/isolated.js.map +1 -1
- package/dist/src/code/languages.js +23 -3
- package/dist/src/code/languages.js.map +1 -1
- package/dist/src/code/map.d.ts +47 -0
- package/dist/src/code/map.js +155 -12
- package/dist/src/code/map.js.map +1 -1
- package/dist/src/code/output.d.ts +3 -1
- package/dist/src/code/output.js +11 -0
- package/dist/src/code/output.js.map +1 -1
- package/dist/src/code/parsers.js +115 -36
- package/dist/src/code/parsers.js.map +1 -1
- package/dist/src/code/preview.js +24 -22
- package/dist/src/code/preview.js.map +1 -1
- package/dist/src/code/query.js +0 -0
- package/dist/src/code/query.js.map +1 -1
- package/dist/src/code/search.d.ts +39 -0
- package/dist/src/code/search.js +154 -0
- package/dist/src/code/search.js.map +1 -0
- package/dist/src/code/session.d.ts +9 -3
- package/dist/src/code/session.js +16 -4
- package/dist/src/code/session.js.map +1 -1
- package/dist/src/code/slim.d.ts +2 -0
- package/dist/src/code/slim.js +16 -1
- package/dist/src/code/slim.js.map +1 -1
- package/dist/src/code/store.d.ts +23 -0
- package/dist/src/code/store.js +61 -6
- package/dist/src/code/store.js.map +1 -1
- package/dist/src/code/tree-sitter.d.ts +1 -0
- package/dist/src/code/tree-sitter.js +11 -10
- package/dist/src/code/tree-sitter.js.map +1 -1
- package/dist/src/code/tree.d.ts +7 -0
- package/dist/src/code/tree.js +364 -0
- package/dist/src/code/tree.js.map +1 -0
- package/dist/src/code/types.d.ts +131 -0
- package/dist/src/code/types.js +47 -0
- package/dist/src/code/types.js.map +1 -1
- package/dist/src/doc/batch.d.ts +2 -0
- package/dist/src/doc/batch.js +3 -1
- package/dist/src/doc/batch.js.map +1 -1
- package/dist/src/doc/discover.js +2 -2
- package/dist/src/doc/discover.js.map +1 -1
- package/dist/src/doc/inspect-odt.js +3 -1
- package/dist/src/doc/inspect-odt.js.map +1 -1
- package/dist/src/doc/inspect-pdf.d.ts +6 -0
- package/dist/src/doc/inspect-pdf.js +11 -1
- package/dist/src/doc/inspect-pdf.js.map +1 -1
- package/dist/src/doc/inspect.js +2 -2
- package/dist/src/doc/inspect.js.map +1 -1
- package/dist/src/doc/types.d.ts +1 -0
- package/dist/src/doc/types.js +7 -0
- package/dist/src/doc/types.js.map +1 -1
- package/dist/src/git/api.d.ts +7 -1
- package/dist/src/git/api.js +32 -10
- package/dist/src/git/api.js.map +1 -1
- package/dist/src/git/client.js +5 -1
- package/dist/src/git/client.js.map +1 -1
- package/dist/src/git/command.js +22 -2
- package/dist/src/git/command.js.map +1 -1
- package/dist/src/git/output.d.ts +2 -1
- package/dist/src/git/output.js +7 -1
- package/dist/src/git/output.js.map +1 -1
- package/dist/src/git/parse.d.ts +2 -1
- package/dist/src/git/parse.js +222 -2
- package/dist/src/git/parse.js.map +1 -1
- package/dist/src/git/types.d.ts +49 -5
- package/dist/src/git/types.js +21 -0
- package/dist/src/git/types.js.map +1 -1
- package/dist/src/health.d.ts +8 -0
- package/dist/src/health.js +15 -0
- package/dist/src/health.js.map +1 -1
- package/dist/src/index.d.ts +23 -11
- package/dist/src/index.js +14 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/inspect/xlsx-cells.js +4 -2
- package/dist/src/inspect/xlsx-cells.js.map +1 -1
- package/dist/src/markdown/convert.d.ts +9 -0
- package/dist/src/markdown/convert.js +23 -1
- package/dist/src/markdown/convert.js.map +1 -1
- package/dist/src/output/tabular.js +33 -16
- package/dist/src/output/tabular.js.map +1 -1
- package/dist/src/parsers/odf.js +4 -2
- package/dist/src/parsers/odf.js.map +1 -1
- package/dist/src/scc.d.ts +3 -0
- package/dist/src/scc.js +2 -0
- package/dist/src/scc.js.map +1 -1
- package/dist/src/skills/command.d.ts +6 -0
- package/dist/src/skills/command.js +18 -3
- package/dist/src/skills/command.js.map +1 -1
- package/dist/src/slide/inspect-odp.js +3 -2
- package/dist/src/slide/inspect-odp.js.map +1 -1
- package/dist/src/slide/inspect-pptx.js +4 -3
- package/dist/src/slide/inspect-pptx.js.map +1 -1
- package/dist/src/stats.js +3 -1
- package/dist/src/stats.js.map +1 -1
- package/dist/src/structure/extract.js +16 -3
- package/dist/src/structure/extract.js.map +1 -1
- package/dist/src/utils.d.ts +7 -0
- package/dist/src/utils.js +19 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/src/walker.js +15 -3
- package/dist/src/walker.js.map +1 -1
- package/dist/src/workspace/analyze.d.ts +3 -0
- package/dist/src/workspace/analyze.js +26 -15
- package/dist/src/workspace/analyze.js.map +1 -1
- package/dist/src/workspace/bundle.js +11 -3
- package/dist/src/workspace/bundle.js.map +1 -1
- package/dist/src/workspace/command.d.ts +6 -0
- package/dist/src/workspace/command.js +73 -44
- package/dist/src/workspace/command.js.map +1 -1
- package/dist/src/workspace/describe.js +22 -13
- package/dist/src/workspace/describe.js.map +1 -1
- package/dist/src/workspace/documents.d.ts +3 -0
- package/dist/src/workspace/documents.js +25 -14
- package/dist/src/workspace/documents.js.map +1 -1
- package/dist/src/workspace/prepare.js +3 -1
- package/dist/src/workspace/prepare.js.map +1 -1
- package/dist/src/workspace/types.d.ts +4 -0
- package/package.json +12 -11
- package/skills/occ/SKILL.md +27 -24
- package/skills/occ/reference/code.md +62 -1
- package/skills/occ/reference/git.md +17 -1
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { tmpdir } from 'node:os';
|
|
7
|
+
import { rm } from 'node:fs/promises';
|
|
7
8
|
import { chunkFromIndex, chunkFromIndexCooperative, chunkFromIndexStreaming } from './chunk.js';
|
|
9
|
+
import { CodeIndexBudgetExceededError } from './build.js';
|
|
8
10
|
import { writeNdjsonFile } from './index-io.js';
|
|
9
11
|
import { openCodeIndexStore } from './store.js';
|
|
10
12
|
import { createTokenizer } from '../tokens.js';
|
|
@@ -33,6 +35,7 @@ process.on('message', async (msg) => {
|
|
|
33
35
|
if (msg.type !== 'start')
|
|
34
36
|
return;
|
|
35
37
|
const store = openCodeIndexStore(msg.options.store);
|
|
38
|
+
let resultPath;
|
|
36
39
|
try {
|
|
37
40
|
abortController = new AbortController();
|
|
38
41
|
const signal = abortController.signal;
|
|
@@ -75,17 +78,29 @@ process.on('message', async (msg) => {
|
|
|
75
78
|
scope: 'code',
|
|
76
79
|
},
|
|
77
80
|
});
|
|
78
|
-
|
|
81
|
+
resultPath = join(tmpdir(), `occ-code-chunks-${process.pid}-${Date.now()}.ndjson`);
|
|
79
82
|
await writeNdjsonFile(resultPath, chunks, signal);
|
|
80
83
|
send({ type: 'complete', resultPath });
|
|
81
84
|
}
|
|
82
85
|
catch (err) {
|
|
83
86
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
87
|
+
// Remove any partially written artifact so an aborted/failed chunk run leaves
|
|
88
|
+
// nothing behind for the parent to clean.
|
|
89
|
+
if (resultPath) {
|
|
90
|
+
await rm(resultPath, { force: true }).catch(() => undefined);
|
|
91
|
+
}
|
|
84
92
|
if (error.name === 'AbortError') {
|
|
85
93
|
send({ type: 'aborted' });
|
|
86
94
|
}
|
|
87
95
|
else {
|
|
88
|
-
|
|
96
|
+
const code = error.code;
|
|
97
|
+
send({
|
|
98
|
+
type: 'error',
|
|
99
|
+
message: error.message,
|
|
100
|
+
name: error.name,
|
|
101
|
+
code: typeof code === 'string' ? code : undefined,
|
|
102
|
+
budget: error instanceof CodeIndexBudgetExceededError ? error.budget : undefined,
|
|
103
|
+
});
|
|
89
104
|
}
|
|
90
105
|
}
|
|
91
106
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isolated-chunk-runner.js","sourceRoot":"","sources":["../../../src/code/isolated-chunk-runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"isolated-chunk-runner.js","sourceRoot":"","sources":["../../../src/code/isolated-chunk-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
2
|
import { tmpdir } from 'node:os';
|
|
3
|
-
import {
|
|
3
|
+
import { rm } from 'node:fs/promises';
|
|
4
|
+
import { buildCodebaseIndex, CodeIndexBudgetExceededError } from './build.js';
|
|
4
5
|
import { writeSectionedCodeIndex } from './index-io.js';
|
|
5
6
|
import { slimifyIndex } from './slim.js';
|
|
6
7
|
function send(msg) {
|
|
@@ -14,23 +15,36 @@ process.on('message', async (msg) => {
|
|
|
14
15
|
}
|
|
15
16
|
if (msg.type !== 'start')
|
|
16
17
|
return;
|
|
18
|
+
let resultPath;
|
|
17
19
|
try {
|
|
18
20
|
abortController = new AbortController();
|
|
19
21
|
const index = await buildCodebaseIndex(msg.options, (event) => {
|
|
20
22
|
send({ type: 'progress', event });
|
|
21
23
|
}, abortController.signal);
|
|
22
24
|
const exportIndex = msg.slim ? slimifyIndex(index) : index;
|
|
23
|
-
|
|
25
|
+
resultPath = join(tmpdir(), `occ-code-index-${process.pid}-${Date.now()}`);
|
|
24
26
|
await writeSectionedCodeIndex(resultPath, exportIndex, {}, abortController.signal);
|
|
25
27
|
send({ type: 'complete', resultPath });
|
|
26
28
|
}
|
|
27
29
|
catch (err) {
|
|
28
30
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
31
|
+
// Remove any partially written artifact so an aborted/failed build leaves
|
|
32
|
+
// nothing behind for the parent to clean.
|
|
33
|
+
if (resultPath) {
|
|
34
|
+
await rm(resultPath, { recursive: true, force: true }).catch(() => undefined);
|
|
35
|
+
}
|
|
29
36
|
if (error.name === 'AbortError') {
|
|
30
37
|
send({ type: 'aborted' });
|
|
31
38
|
}
|
|
32
39
|
else {
|
|
33
|
-
|
|
40
|
+
const code = error.code;
|
|
41
|
+
send({
|
|
42
|
+
type: 'error',
|
|
43
|
+
message: error.message,
|
|
44
|
+
name: error.name,
|
|
45
|
+
code: typeof code === 'string' ? code : undefined,
|
|
46
|
+
budget: error instanceof CodeIndexBudgetExceededError ? error.budget : undefined,
|
|
47
|
+
});
|
|
34
48
|
}
|
|
35
49
|
}
|
|
36
50
|
process.disconnect?.();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isolated-runner.js","sourceRoot":"","sources":["../../../src/code/isolated-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAA6B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"isolated-runner.js","sourceRoot":"","sources":["../../../src/code/isolated-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { rm } from 'node:fs/promises';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
import { readNdjsonFile, readSectionedCodeIndex } from './index-io.js';
|
|
7
|
+
import { CodeIndexBudgetExceededError } from './build.js';
|
|
7
8
|
import { OccAbortError } from '../errors.js';
|
|
8
9
|
import { abortIfNeeded, isCooperative, sanitizeForkExecArgv } from '../utils.js';
|
|
9
10
|
function resolveRunnerPath() {
|
|
@@ -27,6 +28,21 @@ function serializableCooperative(option) {
|
|
|
27
28
|
return true;
|
|
28
29
|
return { yieldEveryMs: option.yieldEveryMs };
|
|
29
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Rebuild a typed error from the fields the runner transmits so callers keep the
|
|
33
|
+
* same `instanceof`/`.code`/`.budget` surface they get from the in-process build.
|
|
34
|
+
*/
|
|
35
|
+
function rehydrateRunnerError(msg, fallbackMessage) {
|
|
36
|
+
if (msg.code === 'OCC_CODE_INDEX_BUDGET_EXCEEDED' && msg.budget) {
|
|
37
|
+
return new CodeIndexBudgetExceededError(msg.budget);
|
|
38
|
+
}
|
|
39
|
+
const error = new Error(msg.message ?? fallbackMessage);
|
|
40
|
+
if (msg.name)
|
|
41
|
+
error.name = msg.name;
|
|
42
|
+
if (msg.code)
|
|
43
|
+
error.code = msg.code;
|
|
44
|
+
return error;
|
|
45
|
+
}
|
|
30
46
|
export async function buildCodebaseIndexIsolated(options, onProgress) {
|
|
31
47
|
abortIfNeeded(options.signal);
|
|
32
48
|
const runnerPath = resolveRunnerPath();
|
|
@@ -71,10 +87,10 @@ export async function buildCodebaseIndexIsolated(options, onProgress) {
|
|
|
71
87
|
}
|
|
72
88
|
else if (msg.type === 'complete' && msg.resultPath) {
|
|
73
89
|
settled = true;
|
|
90
|
+
const resultPath = msg.resultPath;
|
|
74
91
|
void (async () => {
|
|
75
92
|
try {
|
|
76
|
-
const { index } = await readSectionedCodeIndex(
|
|
77
|
-
await rm(msg.resultPath, { recursive: true, force: true }).catch(() => undefined);
|
|
93
|
+
const { index } = await readSectionedCodeIndex(resultPath, signal);
|
|
78
94
|
cleanup();
|
|
79
95
|
resolve(index);
|
|
80
96
|
}
|
|
@@ -82,12 +98,17 @@ export async function buildCodebaseIndexIsolated(options, onProgress) {
|
|
|
82
98
|
cleanup();
|
|
83
99
|
reject(err instanceof Error ? err : new Error(String(err)));
|
|
84
100
|
}
|
|
101
|
+
finally {
|
|
102
|
+
// Always remove the artifact once its path is known, even when the
|
|
103
|
+
// read fails or is interrupted by an aborting signal.
|
|
104
|
+
await rm(resultPath, { recursive: true, force: true }).catch(() => undefined);
|
|
105
|
+
}
|
|
85
106
|
})();
|
|
86
107
|
}
|
|
87
108
|
else if (msg.type === 'error') {
|
|
88
109
|
settled = true;
|
|
89
110
|
cleanup();
|
|
90
|
-
reject(
|
|
111
|
+
reject(rehydrateRunnerError(msg, 'Isolated code index build failed'));
|
|
91
112
|
}
|
|
92
113
|
});
|
|
93
114
|
child.on('error', err => {
|
|
@@ -157,10 +178,10 @@ export async function chunkFromStoreIsolated(options, onProgress) {
|
|
|
157
178
|
}
|
|
158
179
|
else if (msg.type === 'complete' && msg.resultPath) {
|
|
159
180
|
settled = true;
|
|
181
|
+
const resultPath = msg.resultPath;
|
|
160
182
|
void (async () => {
|
|
161
183
|
try {
|
|
162
|
-
const chunks = await readNdjsonFile(
|
|
163
|
-
await rm(msg.resultPath, { force: true }).catch(() => undefined);
|
|
184
|
+
const chunks = await readNdjsonFile(resultPath, signal);
|
|
164
185
|
cleanup();
|
|
165
186
|
resolve(chunks);
|
|
166
187
|
}
|
|
@@ -168,12 +189,17 @@ export async function chunkFromStoreIsolated(options, onProgress) {
|
|
|
168
189
|
cleanup();
|
|
169
190
|
reject(err instanceof Error ? err : new Error(String(err)));
|
|
170
191
|
}
|
|
192
|
+
finally {
|
|
193
|
+
// Always remove the artifact once its path is known, even when the
|
|
194
|
+
// read fails or is interrupted by an aborting signal.
|
|
195
|
+
await rm(resultPath, { force: true }).catch(() => undefined);
|
|
196
|
+
}
|
|
171
197
|
})();
|
|
172
198
|
}
|
|
173
199
|
else if (msg.type === 'error') {
|
|
174
200
|
settled = true;
|
|
175
201
|
cleanup();
|
|
176
|
-
reject(
|
|
202
|
+
reject(rehydrateRunnerError(msg, 'Isolated code chunking failed'));
|
|
177
203
|
}
|
|
178
204
|
});
|
|
179
205
|
child.on('error', err => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isolated.js","sourceRoot":"","sources":["../../../src/code/isolated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"isolated.js","sourceRoot":"","sources":["../../../src/code/isolated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAO1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAA0B,MAAM,aAAa,CAAC;AAkCzG,SAAS,iBAAiB;IACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC/D,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;IACrE,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAqC;IACpE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;AAC/C,CAAC;AASD;;;GAGG;AACH,SAAS,oBAAoB,CAAC,GAA0B,EAAE,eAAuB;IAC/E,IAAI,GAAG,CAAC,IAAI,KAAK,gCAAgC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAChE,OAAO,IAAI,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;IACxD,IAAI,GAAG,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpC,IAAI,GAAG,CAAC,IAAI;QAAG,KAA4B,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA0C,EAC1C,UAAuB;IAEvB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IAElD,OAAO,IAAI,OAAO,CAAoC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxE,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,UAAsC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE;YACjC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;YAC1C,QAAQ,EAAE,oBAAoB,EAAE;SACjC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,UAAU;gBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,OAAO;gBAAE,OAAO;YACpB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9B,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3B,IAAI,CAAC,OAAO;oBAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/D,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CACN,SAAS,EACT,CAAC,GAQA,EAAE,EAAE;YACH,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACzC,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,GAAG,IAAI,CAAC;gBACf,WAAW,EAAE,CAAC;YAChB,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACrD,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;gBAClC,KAAK,CAAC,KAAK,IAAI,EAAE;oBACf,IAAI,CAAC;wBACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;wBACnE,OAAO,EAAE,CAAC;wBACV,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjB,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACtB,OAAO,EAAE,CAAC;wBACV,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC9D,CAAC;4BAAS,CAAC;wBACT,mEAAmE;wBACnE,sDAAsD;wBACtD,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAChF,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAChC,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CACF,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACtB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACvB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,EAAE,CAAC;YACV,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,WAAW,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7F,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAsC,EACtC,UAAuB;IAEvB,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,sBAAsB,EAAE,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IAE1E,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,UAAsC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE;YACjC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;YAC1C,QAAQ,EAAE,oBAAoB,EAAE;SACjC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,UAAU;gBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,OAAO;gBAAE,OAAO;YACpB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9B,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3B,IAAI,CAAC,OAAO;oBAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/D,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAiB,EAAE,EAAE;YAC7C,MAAM,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CACN,SAAS,EACT,CAAC,GAQA,EAAE,EAAE;YACH,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACzC,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,GAAG,IAAI,CAAC;gBACf,WAAW,EAAE,CAAC;YAChB,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACrD,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;gBAClC,KAAK,CAAC,KAAK,IAAI,EAAE;oBACf,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAY,UAAU,EAAE,MAAM,CAAC,CAAC;wBACnE,OAAO,EAAE,CAAC;wBACV,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACtB,OAAO,EAAE,CAAC;wBACV,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC9D,CAAC;4BAAS,CAAC;wBACT,mEAAmE;wBACnE,sDAAsD;wBACtD,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAChC,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CACF,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACtB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACvB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,EAAE,CAAC;YACV,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,WAAW,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7F,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,KAAK,EAAE,YAAY;gBACnB,QAAQ;gBACR,KAAK;gBACL,WAAW,EAAE,uBAAuB,CAAC,WAAW,CAAC;aAClD;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -208,9 +208,27 @@ export function isAssetSpecifier(specifier) {
|
|
|
208
208
|
const extension = path.extname(stripImportSuffix(specifier)).toLowerCase().replace('.', '');
|
|
209
209
|
return extension.length > 0 && ASSET_EXTENSIONS.has(extension);
|
|
210
210
|
}
|
|
211
|
+
// NodeNext/ESM TypeScript specifiers name the emitted file (`./mod.js`), but
|
|
212
|
+
// the source on disk is `./mod.ts`/`./mod.tsx`. Remap so local imports in such
|
|
213
|
+
// projects resolve to their sources instead of dangling as unresolved edges.
|
|
214
|
+
// The literal candidate is still tried first, so a real .js file wins.
|
|
215
|
+
const JS_TO_TS_EXTENSION_REMAP = {
|
|
216
|
+
'.js': ['.ts', '.tsx'],
|
|
217
|
+
'.jsx': ['.tsx'],
|
|
218
|
+
'.mjs': ['.ts'],
|
|
219
|
+
'.cjs': ['.ts'],
|
|
220
|
+
};
|
|
211
221
|
function resolveAsCodePath(candidateBase) {
|
|
212
|
-
const candidates = new Set([
|
|
213
|
-
|
|
222
|
+
const candidates = new Set([candidateBase]);
|
|
223
|
+
const extension = path.extname(candidateBase).toLowerCase();
|
|
224
|
+
const remappedExtensions = JS_TO_TS_EXTENSION_REMAP[extension];
|
|
225
|
+
if (remappedExtensions) {
|
|
226
|
+
const stem = candidateBase.slice(0, -extension.length);
|
|
227
|
+
for (const remapped of remappedExtensions) {
|
|
228
|
+
candidates.add(`${stem}${remapped}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
for (const candidate of [
|
|
214
232
|
`${candidateBase}.ts`,
|
|
215
233
|
`${candidateBase}.tsx`,
|
|
216
234
|
`${candidateBase}.vue`,
|
|
@@ -234,7 +252,9 @@ function resolveAsCodePath(candidateBase) {
|
|
|
234
252
|
path.join(candidateBase, 'index.js'),
|
|
235
253
|
path.join(candidateBase, 'index.jsx'),
|
|
236
254
|
path.join(candidateBase, 'index.py'),
|
|
237
|
-
])
|
|
255
|
+
]) {
|
|
256
|
+
candidates.add(candidate);
|
|
257
|
+
}
|
|
238
258
|
for (const candidate of candidates) {
|
|
239
259
|
const spec = getLanguageSpec(candidate);
|
|
240
260
|
if (spec && existsSync(candidate))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/code/languages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../../src/code/languages.ts"],"names":[],"mappings":"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"}
|
package/dist/src/code/map.d.ts
CHANGED
|
@@ -198,4 +198,51 @@ export declare function repoMapEntryToMarkdown(entry: RepoMapEntry, mode: RepoMa
|
|
|
198
198
|
* those lengths constant are not detected and reuse the cached ranking.
|
|
199
199
|
*/
|
|
200
200
|
export declare function buildRepoMap(index: CodebaseIndex, options: RepoMapOptions): RepoMapResult;
|
|
201
|
+
export declare const ChangedRepoMapRangeSchema: z.ZodObject<{
|
|
202
|
+
base: z.ZodOptional<z.ZodString>;
|
|
203
|
+
head: z.ZodOptional<z.ZodString>;
|
|
204
|
+
staged: z.ZodOptional<z.ZodBoolean>;
|
|
205
|
+
}, z.core.$strip>;
|
|
206
|
+
export type ChangedRepoMapRange = z.infer<typeof ChangedRepoMapRangeSchema>;
|
|
207
|
+
export interface ChangedRepoMapOptions extends RepoMapOptions {
|
|
208
|
+
changed: ChangedRepoMapRange;
|
|
209
|
+
}
|
|
210
|
+
export interface RepoMapChangeContext {
|
|
211
|
+
/** Absolute paths of changed (non-deleted) files, for focus merging. */
|
|
212
|
+
focusPaths: string[];
|
|
213
|
+
/** Absolute path → churn for stamping admitted entries. */
|
|
214
|
+
churnByPath: Map<string, {
|
|
215
|
+
added: number;
|
|
216
|
+
deleted: number;
|
|
217
|
+
binary: boolean;
|
|
218
|
+
}>;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Resolve a git change range into repo-map focus inputs. Split out from
|
|
222
|
+
* {@link buildChangedRepoMap} so callers holding a diff summary (or a CLI
|
|
223
|
+
* that already fetched one) can reuse the same merge/stamp semantics.
|
|
224
|
+
*/
|
|
225
|
+
export declare function toRepoMapChangeContext(repoRoot: string, summary: {
|
|
226
|
+
files: Array<{
|
|
227
|
+
path: string;
|
|
228
|
+
status?: string;
|
|
229
|
+
binary?: boolean;
|
|
230
|
+
}>;
|
|
231
|
+
numstat: Array<{
|
|
232
|
+
path: string;
|
|
233
|
+
added: number | null;
|
|
234
|
+
deleted: number | null;
|
|
235
|
+
binary?: boolean;
|
|
236
|
+
}>;
|
|
237
|
+
}): RepoMapChangeContext;
|
|
238
|
+
/** Stamp changed/churn metadata onto admitted entries (idempotent). */
|
|
239
|
+
export declare function stampRepoMapChanges(result: RepoMapResult, context: RepoMapChangeContext): RepoMapResult;
|
|
240
|
+
/**
|
|
241
|
+
* {@link buildRepoMap} focused on a git change range: files changed in the
|
|
242
|
+
* range are added to the focus set (merged with any caller-provided focus),
|
|
243
|
+
* and admitted entries carry `changed`/`churn` metadata. Async because it
|
|
244
|
+
* shells out to git for the diff summary; the map itself builds like any
|
|
245
|
+
* other repo map, so token budgeting is unchanged.
|
|
246
|
+
*/
|
|
247
|
+
export declare function buildChangedRepoMap(index: CodebaseIndex, options: ChangedRepoMapOptions): Promise<RepoMapResult>;
|
|
201
248
|
export {};
|
package/dist/src/code/map.js
CHANGED
|
@@ -12,8 +12,10 @@
|
|
|
12
12
|
* Token counting is injected (`countTokens`) so a real BPE tokenizer can
|
|
13
13
|
* enforce an exact budget; it defaults to the language-aware heuristic.
|
|
14
14
|
*/
|
|
15
|
+
import path from 'node:path';
|
|
15
16
|
import { z } from 'zod';
|
|
16
17
|
import { estimateTokenCount } from '../tokens.js';
|
|
18
|
+
import { getGitDiffSummary } from '../git/api.js';
|
|
17
19
|
import { extractKeySection } from './query.js';
|
|
18
20
|
import { toNormalizedSymbolKind } from './types.js';
|
|
19
21
|
import { rankNodesCached, RankOptionsSchema } from './rank.js';
|
|
@@ -194,6 +196,57 @@ function buildContentEntry(file, charBudget) {
|
|
|
194
196
|
return null;
|
|
195
197
|
}
|
|
196
198
|
}
|
|
199
|
+
/** Mirrors the focus descriptor the markdown/plain header renders, so its chrome is reserved accurately. */
|
|
200
|
+
function chromeFocusDescriptor(focus) {
|
|
201
|
+
const parts = [];
|
|
202
|
+
if (focus.query)
|
|
203
|
+
parts.push(`query "${focus.query}"`);
|
|
204
|
+
if (focus.paths.length > 0)
|
|
205
|
+
parts.push(`${focus.paths.length} path(s)`);
|
|
206
|
+
const what = parts.length > 0 ? parts.join(' + ') : 'focus';
|
|
207
|
+
return `${what}, ${focus.matchedFiles} matched`;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Fixed and per-entry token overhead the format renderer wraps around the entry
|
|
211
|
+
* bodies — the header line, block separators, truncation footer, and trailing
|
|
212
|
+
* newline. The emitted document (not just the summed entry bodies) must fit the
|
|
213
|
+
* budget, so this overhead is reserved before entries are admitted. Numeric
|
|
214
|
+
* fields use budget / total-file upper bounds and the widest tokenizer suffix so
|
|
215
|
+
* the reservation never underestimates the rendered chrome. `json` output is a
|
|
216
|
+
* structural serialization unrelated to the entry markdown, so it reserves
|
|
217
|
+
* nothing.
|
|
218
|
+
*/
|
|
219
|
+
function documentChromeReserve(format, budget, totalFiles, focus, countTokens) {
|
|
220
|
+
if (format === 'json')
|
|
221
|
+
return { fixed: 0, perEntry: 0 };
|
|
222
|
+
const filesField = `${totalFiles}/${totalFiles} files`;
|
|
223
|
+
const tokenField = `${budget}/${budget} tokens`;
|
|
224
|
+
const omitted = `${totalFiles} file(s) / ${totalFiles} symbol(s) omitted to fit the ${budget}-token budget.`;
|
|
225
|
+
const focusSuffix = focus ? ` — focus: ${chromeFocusDescriptor(focus)}` : '';
|
|
226
|
+
if (format === 'plain') {
|
|
227
|
+
const header = `Repo Map (${filesField}, ${tokenField})${focusSuffix}`;
|
|
228
|
+
return {
|
|
229
|
+
fixed: countTokens(header) + countTokens(omitted) + countTokens('\n') * 3,
|
|
230
|
+
perEntry: countTokens('\n') * 2,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
if (format === 'xml') {
|
|
234
|
+
const open = `<repomap mode="pack" tokens="${budget}" budget="${budget}" files="${totalFiles}" totalFiles="${totalFiles}" truncated="true">`;
|
|
235
|
+
return {
|
|
236
|
+
fixed: countTokens(open) + countTokens('</repomap>') + countTokens('\n') * 2,
|
|
237
|
+
perEntry: countTokens('\n'),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
// markdown: `# Repo Map — E/M files, U/B tokens[, tokenizer][ — focus: …]`,
|
|
241
|
+
// blocks joined by `\n\n`, an optional italic footer, and a trailing newline.
|
|
242
|
+
const header = `# Repo Map — ${filesField}, ${tokenField}, cl100k_base${focusSuffix}`;
|
|
243
|
+
const footer = `_${omitted}_`;
|
|
244
|
+
const separator = '\n\n';
|
|
245
|
+
return {
|
|
246
|
+
fixed: countTokens(header) + countTokens(footer) + countTokens(separator) * 3 + countTokens('\n'),
|
|
247
|
+
perEntry: countTokens(separator),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
197
250
|
/**
|
|
198
251
|
* Build a token-budgeted, importance-ranked repo map (or pack) from an index.
|
|
199
252
|
*
|
|
@@ -256,20 +309,32 @@ export function buildRepoMap(index, options) {
|
|
|
256
309
|
let tokensUsed = 0;
|
|
257
310
|
let droppedFiles = 0;
|
|
258
311
|
let droppedSymbols = 0;
|
|
312
|
+
// Reserve the format's fixed document chrome (header/footer/separators) up
|
|
313
|
+
// front and charge each admitted entry its block separator, so the rendered
|
|
314
|
+
// document — not merely the summed entry bodies — stays within budget.
|
|
315
|
+
const chrome = documentChromeReserve(format, budget, ranking.fileScores.length, focusResult, countTokens);
|
|
316
|
+
const effectiveBudget = budget - chrome.fixed;
|
|
259
317
|
for (const fileScore of orderedFileScores) {
|
|
260
318
|
const file = fileByPath.get(fileScore.path);
|
|
261
319
|
if (!file)
|
|
262
320
|
continue;
|
|
263
|
-
const remaining = budget - tokensUsed;
|
|
264
|
-
if (remaining <= 0) {
|
|
265
|
-
droppedFiles++;
|
|
266
|
-
continue;
|
|
267
|
-
}
|
|
268
321
|
let symbols = orderedSymbolsForFile(file, rankedSymbolsByPath.get(file.path) ?? []);
|
|
269
322
|
if (options.maxSymbolsPerFile != null && symbols.length > options.maxSymbolsPerFile) {
|
|
270
323
|
droppedSymbols += symbols.length - options.maxSymbolsPerFile;
|
|
271
324
|
symbols = symbols.slice(0, options.maxSymbolsPerFile);
|
|
272
325
|
}
|
|
326
|
+
const remaining = effectiveBudget - tokensUsed;
|
|
327
|
+
if (remaining <= 0) {
|
|
328
|
+
// Budget already spent: nothing further can be admitted. Count only files
|
|
329
|
+
// that would have carried information — a no-symbol map file is skipped
|
|
330
|
+
// uncounted here exactly as it is on the normal path — and add every
|
|
331
|
+
// dropped file's symbols to droppedSymbols so all drop paths agree.
|
|
332
|
+
if (mode === 'map' && symbols.length === 0)
|
|
333
|
+
continue;
|
|
334
|
+
droppedFiles++;
|
|
335
|
+
droppedSymbols += symbols.length;
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
273
338
|
let content;
|
|
274
339
|
let contentReason;
|
|
275
340
|
if (mode === 'pack') {
|
|
@@ -312,14 +377,14 @@ export function buildRepoMap(index, options) {
|
|
|
312
377
|
return entry;
|
|
313
378
|
};
|
|
314
379
|
let entry = makeEntry(symbols, content);
|
|
315
|
-
if (tokensUsed + entry.tokens <=
|
|
316
|
-
tokensUsed += entry.tokens;
|
|
380
|
+
if (tokensUsed + entry.tokens + chrome.perEntry <= effectiveBudget) {
|
|
381
|
+
tokensUsed += entry.tokens + chrome.perEntry;
|
|
317
382
|
entries.push(entry);
|
|
318
383
|
continue;
|
|
319
384
|
}
|
|
320
385
|
// Partial admission — shrink until it fits or the file must be dropped.
|
|
321
386
|
if (mode === 'pack' && content != null) {
|
|
322
|
-
const shrunkBudget = Math.max(200, Math.floor((
|
|
387
|
+
const shrunkBudget = Math.max(200, Math.floor((effectiveBudget - tokensUsed) * APPROX_CHARS_PER_TOKEN * 0.9));
|
|
323
388
|
const shrunk = buildContentEntry(file, shrunkBudget);
|
|
324
389
|
if (shrunk) {
|
|
325
390
|
content = shrunk.content;
|
|
@@ -328,11 +393,20 @@ export function buildRepoMap(index, options) {
|
|
|
328
393
|
}
|
|
329
394
|
}
|
|
330
395
|
else {
|
|
331
|
-
// map mode: drop lowest-ranked symbols from the tail until it fits.
|
|
396
|
+
// map mode: drop lowest-ranked symbols from the tail until it fits. Locate
|
|
397
|
+
// the cut by subtracting each dropped symbol's line cost from the exact
|
|
398
|
+
// full-entry count already measured above (avoiding an O(S^2) re-render of
|
|
399
|
+
// the whole entry per step), then confirm the admitted prefix with an
|
|
400
|
+
// exact re-count.
|
|
332
401
|
let kept = symbols.length;
|
|
402
|
+
let approxTokens = entry.tokens;
|
|
403
|
+
while (kept > 0 && tokensUsed + approxTokens + chrome.perEntry > effectiveBudget) {
|
|
404
|
+
kept--;
|
|
405
|
+
approxTokens -= countTokens(`\n- ${repoMapSignatureLine(symbols[kept])}`);
|
|
406
|
+
}
|
|
333
407
|
while (kept > 0) {
|
|
334
408
|
const trial = makeEntry(symbols.slice(0, kept));
|
|
335
|
-
if (tokensUsed + trial.tokens <=
|
|
409
|
+
if (tokensUsed + trial.tokens + chrome.perEntry <= effectiveBudget) {
|
|
336
410
|
entry = trial;
|
|
337
411
|
break;
|
|
338
412
|
}
|
|
@@ -346,8 +420,8 @@ export function buildRepoMap(index, options) {
|
|
|
346
420
|
droppedSymbols += symbols.length - kept;
|
|
347
421
|
entry.droppedSymbols = symbols.length - kept;
|
|
348
422
|
}
|
|
349
|
-
if (tokensUsed + entry.tokens <=
|
|
350
|
-
tokensUsed += entry.tokens;
|
|
423
|
+
if (tokensUsed + entry.tokens + chrome.perEntry <= effectiveBudget) {
|
|
424
|
+
tokensUsed += entry.tokens + chrome.perEntry;
|
|
351
425
|
entries.push(entry);
|
|
352
426
|
}
|
|
353
427
|
else {
|
|
@@ -370,4 +444,73 @@ export function buildRepoMap(index, options) {
|
|
|
370
444
|
focus: focusResult,
|
|
371
445
|
};
|
|
372
446
|
}
|
|
447
|
+
// ---------------------------------------------------------------------------
|
|
448
|
+
// Changed-focus repo map
|
|
449
|
+
// ---------------------------------------------------------------------------
|
|
450
|
+
export const ChangedRepoMapRangeSchema = z.object({
|
|
451
|
+
/** Base ref to diff from (merge-base three-dot semantics, as in `git diff base...head`). */
|
|
452
|
+
base: z.string().optional(),
|
|
453
|
+
/** Head ref to diff to; defaults to HEAD. */
|
|
454
|
+
head: z.string().optional(),
|
|
455
|
+
/** Use staged changes instead of a ref range. */
|
|
456
|
+
staged: z.boolean().optional(),
|
|
457
|
+
});
|
|
458
|
+
/**
|
|
459
|
+
* Resolve a git change range into repo-map focus inputs. Split out from
|
|
460
|
+
* {@link buildChangedRepoMap} so callers holding a diff summary (or a CLI
|
|
461
|
+
* that already fetched one) can reuse the same merge/stamp semantics.
|
|
462
|
+
*/
|
|
463
|
+
export function toRepoMapChangeContext(repoRoot, summary) {
|
|
464
|
+
const numstatByPath = new Map(summary.numstat.map(entry => [entry.path, entry]));
|
|
465
|
+
const focusPaths = [];
|
|
466
|
+
const churnByPath = new Map();
|
|
467
|
+
for (const file of summary.files) {
|
|
468
|
+
if (file.status === 'deleted')
|
|
469
|
+
continue;
|
|
470
|
+
const absolutePath = path.resolve(repoRoot, file.path);
|
|
471
|
+
const numstat = numstatByPath.get(file.path);
|
|
472
|
+
focusPaths.push(absolutePath);
|
|
473
|
+
churnByPath.set(absolutePath, {
|
|
474
|
+
added: numstat?.added ?? 0,
|
|
475
|
+
deleted: numstat?.deleted ?? 0,
|
|
476
|
+
binary: file.binary === true || numstat?.binary === true,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
return { focusPaths, churnByPath };
|
|
480
|
+
}
|
|
481
|
+
/** Stamp changed/churn metadata onto admitted entries (idempotent). */
|
|
482
|
+
export function stampRepoMapChanges(result, context) {
|
|
483
|
+
for (const entry of result.entries) {
|
|
484
|
+
const churn = context.churnByPath.get(entry.path);
|
|
485
|
+
if (!churn)
|
|
486
|
+
continue;
|
|
487
|
+
entry.changed = true;
|
|
488
|
+
entry.churn = churn;
|
|
489
|
+
}
|
|
490
|
+
return result;
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* {@link buildRepoMap} focused on a git change range: files changed in the
|
|
494
|
+
* range are added to the focus set (merged with any caller-provided focus),
|
|
495
|
+
* and admitted entries carry `changed`/`churn` metadata. Async because it
|
|
496
|
+
* shells out to git for the diff summary; the map itself builds like any
|
|
497
|
+
* other repo map, so token budgeting is unchanged.
|
|
498
|
+
*/
|
|
499
|
+
export async function buildChangedRepoMap(index, options) {
|
|
500
|
+
const { changed, ...mapOptions } = options;
|
|
501
|
+
const summary = await getGitDiffSummary({
|
|
502
|
+
repoRoot: index.repoRoot,
|
|
503
|
+
base: changed.base,
|
|
504
|
+
head: changed.head,
|
|
505
|
+
staged: changed.staged,
|
|
506
|
+
});
|
|
507
|
+
const context = toRepoMapChangeContext(index.repoRoot, summary);
|
|
508
|
+
const existingFocus = mapOptions.focus;
|
|
509
|
+
const mergedPaths = [...new Set([...(existingFocus?.paths ?? []), ...context.focusPaths])];
|
|
510
|
+
const focus = (existingFocus?.query ?? '').trim().length > 0 || mergedPaths.length > 0
|
|
511
|
+
? { ...existingFocus, paths: mergedPaths }
|
|
512
|
+
: existingFocus;
|
|
513
|
+
const result = buildRepoMap(index, { ...mapOptions, focus });
|
|
514
|
+
return stampRepoMapChanges(result, context);
|
|
515
|
+
}
|
|
373
516
|
//# sourceMappingURL=map.js.map
|