agentmap 0.7.1 → 0.9.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/CHANGELOG.md +96 -0
- package/README.md +24 -0
- package/dist/cli.js +44 -12
- package/dist/cli.js.map +1 -1
- package/dist/extract/definitions.js +12 -12
- package/dist/extract/definitions.js.map +1 -1
- package/dist/extract/definitions.test.js +30 -259
- package/dist/extract/definitions.test.js.map +1 -1
- package/dist/extract/git-status.d.ts +11 -4
- package/dist/extract/git-status.d.ts.map +1 -1
- package/dist/extract/git-status.js +21 -16
- package/dist/extract/git-status.js.map +1 -1
- package/dist/extract/markdown.js +1 -1
- package/dist/extract/markdown.test.js +3 -3
- package/dist/extract/markdown.test.js.map +1 -1
- package/dist/extract/marker.js +1 -1
- package/dist/extract/marker.test.js +4 -4
- package/dist/extract/marker.test.js.map +1 -1
- package/dist/extract/submodules.d.ts +12 -0
- package/dist/extract/submodules.d.ts.map +1 -0
- package/dist/extract/submodules.js +234 -0
- package/dist/extract/submodules.js.map +1 -0
- package/dist/extract/submodules.test.d.ts +2 -0
- package/dist/extract/submodules.test.d.ts.map +1 -0
- package/dist/extract/submodules.test.js +84 -0
- package/dist/extract/submodules.test.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +10 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +41 -0
- package/dist/logger.js.map +1 -0
- package/dist/map/builder.d.ts +3 -3
- package/dist/map/builder.d.ts.map +1 -1
- package/dist/map/builder.js +59 -9
- package/dist/map/builder.js.map +1 -1
- package/dist/map/builder.test.d.ts +2 -0
- package/dist/map/builder.test.d.ts.map +1 -0
- package/dist/map/builder.test.js +66 -0
- package/dist/map/builder.test.js.map +1 -0
- package/dist/map/truncate.d.ts +7 -3
- package/dist/map/truncate.d.ts.map +1 -1
- package/dist/map/truncate.js +90 -9
- package/dist/map/truncate.js.map +1 -1
- package/dist/map/yaml.d.ts.map +1 -1
- package/dist/map/yaml.js +13 -3
- package/dist/map/yaml.js.map +1 -1
- package/dist/scanner.d.ts +9 -2
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +172 -49
- package/dist/scanner.js.map +1 -1
- package/dist/scanner.test.d.ts +2 -0
- package/dist/scanner.test.d.ts.map +1 -0
- package/dist/scanner.test.js +84 -0
- package/dist/scanner.test.js.map +1 -0
- package/dist/test-helpers/git-test-helpers.d.ts +13 -0
- package/dist/test-helpers/git-test-helpers.d.ts.map +1 -0
- package/dist/test-helpers/git-test-helpers.js +48 -0
- package/dist/test-helpers/git-test-helpers.js.map +1 -0
- package/dist/types.d.ts +42 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +15 -3
- package/src/cli.ts +164 -0
- package/src/extract/definitions.test.ts +2040 -0
- package/src/extract/definitions.ts +379 -0
- package/src/extract/git-status.test.ts +507 -0
- package/src/extract/git-status.ts +359 -0
- package/src/extract/markdown.test.ts +159 -0
- package/src/extract/markdown.ts +202 -0
- package/src/extract/marker.test.ts +566 -0
- package/src/extract/marker.ts +398 -0
- package/src/extract/submodules.test.ts +95 -0
- package/src/extract/submodules.ts +269 -0
- package/src/extract/utils.ts +27 -0
- package/src/index.ts +106 -0
- package/src/languages/cpp.ts +129 -0
- package/src/languages/go.ts +72 -0
- package/src/languages/index.ts +231 -0
- package/src/languages/javascript.ts +33 -0
- package/src/languages/python.ts +41 -0
- package/src/languages/rust.ts +72 -0
- package/src/languages/typescript.ts +74 -0
- package/src/languages/zig.ts +106 -0
- package/src/logger.ts +55 -0
- package/src/map/builder.test.ts +72 -0
- package/src/map/builder.ts +175 -0
- package/src/map/truncate.ts +188 -0
- package/src/map/yaml.ts +66 -0
- package/src/parser/index.ts +53 -0
- package/src/parser/languages.ts +64 -0
- package/src/scanner.test.ts +95 -0
- package/src/scanner.ts +364 -0
- package/src/test-helpers/git-test-helpers.ts +62 -0
- package/src/types.ts +191 -0
package/dist/scanner.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
// Scan directory for files with header comments/docstrings.
|
|
1
|
+
// Scan directory for files with header comments/docstrings and recurse into submodules.
|
|
2
2
|
import { execSync } from 'child_process';
|
|
3
|
+
import { realpathSync } from 'fs';
|
|
3
4
|
import pLimit from 'p-limit';
|
|
4
5
|
import picomatch from 'picomatch';
|
|
5
6
|
import { readFile } from 'fs/promises';
|
|
@@ -7,6 +8,8 @@ import { join, normalize } from 'path';
|
|
|
7
8
|
import { extractMarkerFromCode, extractMarkdownDescription } from './extract/marker.js';
|
|
8
9
|
import { extractDefinitions } from './extract/definitions.js';
|
|
9
10
|
import { getAllDiffData, applyDiffToDefinitions } from './extract/git-status.js';
|
|
11
|
+
import { getSubmodules, getSubmodulePaths } from './extract/submodules.js';
|
|
12
|
+
import { createConsoleLogger } from './logger.js';
|
|
10
13
|
import { parseCode, detectLanguage, LANGUAGE_EXTENSIONS } from './parser/index.js';
|
|
11
14
|
/**
|
|
12
15
|
* Maximum number of files to process (safety limit)
|
|
@@ -32,92 +35,212 @@ function isReadmeFile(filepath) {
|
|
|
32
35
|
return filename === 'readme.md' || filename === 'readme';
|
|
33
36
|
}
|
|
34
37
|
/**
|
|
35
|
-
* Get tracked files using git ls-files
|
|
36
|
-
*
|
|
38
|
+
* Get tracked files using git ls-files -z -s.
|
|
39
|
+
* NUL-delimited for safe cross-platform parsing of any filename.
|
|
40
|
+
* Filters out symlinks (mode 120000).
|
|
41
|
+
* Returns path + blob SHA for duplicate detection.
|
|
42
|
+
*
|
|
43
|
+
* Format per entry: "<mode> <sha> <stage>\t<path>\0"
|
|
37
44
|
*/
|
|
38
45
|
function getGitFiles(dir) {
|
|
39
46
|
const maxBuffer = 1024 * 10000000;
|
|
40
47
|
try {
|
|
41
|
-
|
|
42
|
-
const stdout = execSync('git ls-files', {
|
|
48
|
+
const stdout = execSync('git ls-files -z -s', {
|
|
43
49
|
cwd: dir,
|
|
44
50
|
maxBuffer,
|
|
45
51
|
encoding: 'utf8',
|
|
46
52
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
const results = [];
|
|
54
|
+
// Split on NUL byte, filter empty trailing entry
|
|
55
|
+
const entries = stdout.split('\0').filter(Boolean);
|
|
56
|
+
for (const entry of entries) {
|
|
57
|
+
// Format: "<mode> <sha> <stage>\t<path>"
|
|
58
|
+
const tabIdx = entry.indexOf('\t');
|
|
59
|
+
if (tabIdx === -1)
|
|
60
|
+
continue;
|
|
61
|
+
const meta = entry.slice(0, tabIdx);
|
|
62
|
+
const path = entry.slice(tabIdx + 1);
|
|
63
|
+
const spaceIdx = meta.indexOf(' ');
|
|
64
|
+
if (spaceIdx === -1)
|
|
65
|
+
continue;
|
|
66
|
+
const mode = meta.slice(0, spaceIdx);
|
|
67
|
+
const sha = meta.slice(spaceIdx + 1, meta.indexOf(' ', spaceIdx + 1));
|
|
68
|
+
// Skip symlinks (mode 120000)
|
|
69
|
+
if (mode === '120000')
|
|
70
|
+
continue;
|
|
71
|
+
results.push({ path: normalize(path), sha });
|
|
72
|
+
}
|
|
73
|
+
return results;
|
|
52
74
|
}
|
|
53
75
|
catch {
|
|
54
76
|
return [];
|
|
55
77
|
}
|
|
56
78
|
}
|
|
57
79
|
/**
|
|
58
|
-
*
|
|
80
|
+
* Build a map of blob SHA → shortest path for duplicate detection.
|
|
81
|
+
* Files sharing the same blob SHA are exact duplicates in git.
|
|
59
82
|
*/
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
function buildDuplicateMap(files, pathPrefix) {
|
|
84
|
+
// Group paths by SHA
|
|
85
|
+
const shaToEntries = new Map();
|
|
86
|
+
for (const { path, sha } of files) {
|
|
87
|
+
const prefixed = joinRelativePath(pathPrefix, path);
|
|
88
|
+
const existing = shaToEntries.get(sha);
|
|
89
|
+
if (existing) {
|
|
90
|
+
existing.push(prefixed);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
shaToEntries.set(sha, [prefixed]);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// For each group with >1 file, shortest path is the original
|
|
97
|
+
const duplicateOf = new Map();
|
|
98
|
+
for (const paths of shaToEntries.values()) {
|
|
99
|
+
if (paths.length < 2)
|
|
100
|
+
continue;
|
|
101
|
+
paths.sort((a, b) => a.length - b.length || a.localeCompare(b));
|
|
102
|
+
const original = paths[0];
|
|
103
|
+
for (let i = 1; i < paths.length; i++) {
|
|
104
|
+
duplicateOf.set(paths[i], original);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return duplicateOf;
|
|
108
|
+
}
|
|
109
|
+
function normalizeRelativePath(path) {
|
|
110
|
+
return path.replace(/\\/g, '/');
|
|
111
|
+
}
|
|
112
|
+
function joinRelativePath(prefix, path) {
|
|
113
|
+
const normalizedPath = normalizeRelativePath(path);
|
|
114
|
+
return prefix ? `${prefix}/${normalizedPath}` : normalizedPath;
|
|
115
|
+
}
|
|
116
|
+
function getCanonicalRepoDir(dir) {
|
|
117
|
+
try {
|
|
118
|
+
return realpathSync(dir);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return dir;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async function scanRepo(options) {
|
|
125
|
+
const canonicalRepoDir = getCanonicalRepoDir(options.repoDir);
|
|
126
|
+
if (options.visitedRepoDirs.has(canonicalRepoDir)) {
|
|
127
|
+
return { files: [], submodules: [] };
|
|
128
|
+
}
|
|
129
|
+
options.visitedRepoDirs.add(canonicalRepoDir);
|
|
130
|
+
let submodules = [];
|
|
131
|
+
const directSubmodules = options.includeSubmodules ? getSubmodules(options.repoDir) : [];
|
|
132
|
+
const directSubmodulePathSet = options.includeSubmodules
|
|
133
|
+
? new Set(directSubmodules.map(submodule => submodule.path))
|
|
134
|
+
: getSubmodulePaths(options.repoDir);
|
|
135
|
+
if (options.includeSubmodules) {
|
|
136
|
+
submodules = directSubmodules.map(submodule => ({
|
|
137
|
+
...submodule,
|
|
138
|
+
path: joinRelativePath(options.pathPrefix, submodule.path),
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
const normalizedSubmodulePaths = new Set();
|
|
142
|
+
for (const path of directSubmodulePathSet) {
|
|
143
|
+
normalizedSubmodulePaths.add(normalize(path));
|
|
144
|
+
}
|
|
145
|
+
const allGitFiles = getGitFiles(options.repoDir);
|
|
146
|
+
// Build duplicate map before filtering (needs all files to detect dupes)
|
|
147
|
+
const duplicateOf = buildDuplicateMap(allGitFiles, options.pathPrefix);
|
|
148
|
+
let gitFiles = allGitFiles.filter(f => !normalizedSubmodulePaths.has(f.path));
|
|
149
|
+
gitFiles = gitFiles.filter(f => isSupportedFile(f.path) || isReadmeFile(f.path));
|
|
150
|
+
gitFiles = gitFiles.filter(f => {
|
|
151
|
+
const relativePath = joinRelativePath(options.pathPrefix, f.path);
|
|
152
|
+
if (options.isIncluded && !options.isIncluded(relativePath)) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
if (options.isIgnored && options.isIgnored(relativePath)) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
return true;
|
|
159
|
+
});
|
|
160
|
+
if (gitFiles.length > MAX_FILES) {
|
|
161
|
+
options.logger?.warn(`Warning: Too many files (${gitFiles.length} > ${MAX_FILES}), skipping scan`);
|
|
162
|
+
return { files: [], submodules };
|
|
84
163
|
}
|
|
85
|
-
// Get git diff data if needed (isolated from main processing)
|
|
86
164
|
let fileStats = null;
|
|
87
165
|
let fileDiffs = null;
|
|
88
|
-
if (includeDiff) {
|
|
166
|
+
if (options.includeDiff) {
|
|
89
167
|
try {
|
|
90
|
-
const diffData = getAllDiffData(
|
|
168
|
+
const diffData = getAllDiffData(options.repoDir, directSubmodulePathSet, options.logger);
|
|
91
169
|
fileStats = diffData.fileStats;
|
|
92
170
|
fileDiffs = diffData.fileDiffs;
|
|
93
171
|
}
|
|
94
172
|
catch {
|
|
95
|
-
// Diff failed - continue without diff info
|
|
96
173
|
fileStats = null;
|
|
97
174
|
fileDiffs = null;
|
|
98
175
|
}
|
|
99
176
|
}
|
|
100
|
-
// Process files in parallel with concurrency limit
|
|
101
177
|
const limit = pLimit(20);
|
|
102
|
-
const resultPromises =
|
|
103
|
-
const fullPath = join(
|
|
104
|
-
|
|
105
|
-
const
|
|
178
|
+
const resultPromises = gitFiles.map(({ path: relativePath }) => {
|
|
179
|
+
const fullPath = join(options.repoDir, relativePath);
|
|
180
|
+
const normalizedPath = normalizeRelativePath(relativePath);
|
|
181
|
+
const prefixedRelativePath = joinRelativePath(options.pathPrefix, relativePath);
|
|
106
182
|
const fileDiff = fileDiffs?.get(normalizedPath);
|
|
107
183
|
const stats = fileStats?.get(normalizedPath);
|
|
184
|
+
const dupOriginal = duplicateOf.get(prefixedRelativePath);
|
|
108
185
|
return limit(async () => {
|
|
109
186
|
try {
|
|
110
|
-
|
|
187
|
+
// If this file is a duplicate, return a stub pointing to the original
|
|
188
|
+
if (dupOriginal) {
|
|
189
|
+
return {
|
|
190
|
+
relativePath: prefixedRelativePath,
|
|
191
|
+
duplicateOf: dupOriginal,
|
|
192
|
+
definitions: [],
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
return await processFile(fullPath, prefixedRelativePath, fileDiff, stats);
|
|
111
196
|
}
|
|
112
|
-
catch
|
|
113
|
-
// Skip files that fail to process
|
|
114
|
-
console.error(`Warning: Failed to process ${relativePath}:`, err);
|
|
197
|
+
catch {
|
|
115
198
|
return null;
|
|
116
199
|
}
|
|
117
200
|
});
|
|
118
201
|
});
|
|
202
|
+
const nestedResults = options.includeSubmodules
|
|
203
|
+
? await Promise.all(directSubmodules.map(async (submodule) => {
|
|
204
|
+
if (!submodule.initialized) {
|
|
205
|
+
return { files: [], submodules: [] };
|
|
206
|
+
}
|
|
207
|
+
return scanRepo({
|
|
208
|
+
...options,
|
|
209
|
+
repoDir: join(options.repoDir, submodule.path),
|
|
210
|
+
pathPrefix: joinRelativePath(options.pathPrefix, submodule.path),
|
|
211
|
+
});
|
|
212
|
+
}))
|
|
213
|
+
: [];
|
|
119
214
|
const results = await Promise.all(resultPromises);
|
|
120
|
-
|
|
215
|
+
for (const nested of nestedResults) {
|
|
216
|
+
submodules.push(...nested.submodules);
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
files: [
|
|
220
|
+
...results.filter((result) => result !== null),
|
|
221
|
+
...nestedResults.flatMap(result => result.files),
|
|
222
|
+
],
|
|
223
|
+
submodules,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Scan directory and process files with header comments
|
|
228
|
+
*/
|
|
229
|
+
export async function scanDirectory(options = {}) {
|
|
230
|
+
const dir = options.dir ?? process.cwd();
|
|
231
|
+
const logger = options.logger ?? createConsoleLogger();
|
|
232
|
+
const ignorePatterns = (options.ignore ?? []).filter((p) => !!p);
|
|
233
|
+
const filterPatterns = (options.filter ?? []).filter((p) => !!p);
|
|
234
|
+
return scanRepo({
|
|
235
|
+
repoDir: dir,
|
|
236
|
+
pathPrefix: '',
|
|
237
|
+
includeDiff: options.diff ?? false,
|
|
238
|
+
includeSubmodules: options.submodules !== false,
|
|
239
|
+
logger,
|
|
240
|
+
isIncluded: filterPatterns.length > 0 ? picomatch(filterPatterns) : undefined,
|
|
241
|
+
isIgnored: ignorePatterns.length > 0 ? picomatch(ignorePatterns) : undefined,
|
|
242
|
+
visitedRepoDirs: new Set(),
|
|
243
|
+
});
|
|
121
244
|
}
|
|
122
245
|
/**
|
|
123
246
|
* Process a single file - check for marker and extract definitions
|
package/dist/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.test.d.ts","sourceRoot":"","sources":["../src/scanner.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// Tests for recursive scanning across initialized git submodules.
|
|
2
|
+
import { describe, expect, test } from 'bun:test';
|
|
3
|
+
import { scanDirectory } from './scanner.js';
|
|
4
|
+
import { addSubmodule, commitAll, createRepo, deinitSubmodule, updateSubmodulesRecursive, writeTrackedFile } from './test-helpers/git-test-helpers.js';
|
|
5
|
+
describe('scanDirectory submodule recursion', () => {
|
|
6
|
+
test('includes files from initialized nested submodules under prefixed paths', async () => {
|
|
7
|
+
const nestedRepo = createRepo('agentmap-submodule-nested-');
|
|
8
|
+
writeTrackedFile(nestedRepo, 'README.md', '# Nested repo\n\nNested submodule README.');
|
|
9
|
+
commitAll(nestedRepo, 'Add nested repo README');
|
|
10
|
+
const childRepo = createRepo('agentmap-submodule-child-');
|
|
11
|
+
writeTrackedFile(childRepo, 'README.md', '# Child repo\n\nChild submodule README.');
|
|
12
|
+
commitAll(childRepo, 'Add child repo README');
|
|
13
|
+
addSubmodule(childRepo, nestedRepo.dir, 'deps/nested-lib');
|
|
14
|
+
commitAll(childRepo, 'Add nested submodule');
|
|
15
|
+
const rootRepo = createRepo('agentmap-submodule-root-');
|
|
16
|
+
writeTrackedFile(rootRepo, 'README.md', '# Root repo\n\nRoot repo README.');
|
|
17
|
+
commitAll(rootRepo, 'Add root README');
|
|
18
|
+
addSubmodule(rootRepo, childRepo.dir, 'vendor/child-lib');
|
|
19
|
+
commitAll(rootRepo, 'Add child submodule');
|
|
20
|
+
updateSubmodulesRecursive(rootRepo);
|
|
21
|
+
const result = await scanDirectory({ dir: rootRepo.dir });
|
|
22
|
+
expect(result.files.map(file => file.relativePath).sort()).toMatchInlineSnapshot(`
|
|
23
|
+
[
|
|
24
|
+
"README.md",
|
|
25
|
+
"vendor/child-lib/README.md",
|
|
26
|
+
"vendor/child-lib/deps/nested-lib/README.md",
|
|
27
|
+
]
|
|
28
|
+
`);
|
|
29
|
+
expect(result.submodules.map(submodule => ({
|
|
30
|
+
path: submodule.path,
|
|
31
|
+
initialized: submodule.initialized,
|
|
32
|
+
dirty: submodule.dirty,
|
|
33
|
+
commitLength: submodule.commit.length,
|
|
34
|
+
}))).toMatchInlineSnapshot(`
|
|
35
|
+
[
|
|
36
|
+
{
|
|
37
|
+
"commitLength": 7,
|
|
38
|
+
"dirty": false,
|
|
39
|
+
"initialized": true,
|
|
40
|
+
"path": "vendor/child-lib",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"commitLength": 7,
|
|
44
|
+
"dirty": false,
|
|
45
|
+
"initialized": true,
|
|
46
|
+
"path": "vendor/child-lib/deps/nested-lib",
|
|
47
|
+
},
|
|
48
|
+
]
|
|
49
|
+
`);
|
|
50
|
+
});
|
|
51
|
+
test('keeps uninitialized submodules as metadata-only nodes', async () => {
|
|
52
|
+
const childRepo = createRepo('agentmap-submodule-uninit-child-');
|
|
53
|
+
writeTrackedFile(childRepo, 'README.md', '# Child repo\n\nChild submodule README.');
|
|
54
|
+
commitAll(childRepo, 'Add child repo README');
|
|
55
|
+
const rootRepo = createRepo('agentmap-submodule-uninit-root-');
|
|
56
|
+
writeTrackedFile(rootRepo, 'README.md', '# Root repo\n\nRoot repo README.');
|
|
57
|
+
commitAll(rootRepo, 'Add root README');
|
|
58
|
+
addSubmodule(rootRepo, childRepo.dir, 'vendor/child-lib');
|
|
59
|
+
commitAll(rootRepo, 'Add child submodule');
|
|
60
|
+
deinitSubmodule(rootRepo, 'vendor/child-lib');
|
|
61
|
+
const result = await scanDirectory({ dir: rootRepo.dir });
|
|
62
|
+
expect(result.files.map(file => file.relativePath).sort()).toMatchInlineSnapshot(`
|
|
63
|
+
[
|
|
64
|
+
"README.md",
|
|
65
|
+
]
|
|
66
|
+
`);
|
|
67
|
+
expect(result.submodules.map(submodule => ({
|
|
68
|
+
path: submodule.path,
|
|
69
|
+
initialized: submodule.initialized,
|
|
70
|
+
dirty: submodule.dirty,
|
|
71
|
+
commitLength: submodule.commit.length,
|
|
72
|
+
}))).toMatchInlineSnapshot(`
|
|
73
|
+
[
|
|
74
|
+
{
|
|
75
|
+
"commitLength": 7,
|
|
76
|
+
"dirty": false,
|
|
77
|
+
"initialized": false,
|
|
78
|
+
"path": "vendor/child-lib",
|
|
79
|
+
},
|
|
80
|
+
]
|
|
81
|
+
`);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=scanner.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.test.js","sourceRoot":"","sources":["../src/scanner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface TempRepo {
|
|
2
|
+
dir: string;
|
|
3
|
+
}
|
|
4
|
+
export declare function createTempDir(prefix: string): string;
|
|
5
|
+
export declare function initRepo(dir: string): TempRepo;
|
|
6
|
+
export declare function createRepo(prefix: string): TempRepo;
|
|
7
|
+
export declare function writeTrackedFile(repo: TempRepo, relativePath: string, content: string): void;
|
|
8
|
+
export declare function commitAll(repo: TempRepo, message: string): void;
|
|
9
|
+
export declare function shortHead(repo: TempRepo): string;
|
|
10
|
+
export declare function addSubmodule(repo: TempRepo, sourceDir: string, targetPath: string): void;
|
|
11
|
+
export declare function updateSubmodulesRecursive(repo: TempRepo): void;
|
|
12
|
+
export declare function deinitSubmodule(repo: TempRepo, targetPath: string): void;
|
|
13
|
+
//# sourceMappingURL=git-test-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-test-helpers.d.ts","sourceRoot":"","sources":["../../src/test-helpers/git-test-helpers.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;CACZ;AAUD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAK9C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAInD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI5F;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAG/D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAExF;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAE9D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAExE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Helpers for creating temporary git repositories in tests.
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import { mkdtempSync, mkdirSync, writeFileSync } from 'fs';
|
|
4
|
+
import { tmpdir } from 'os';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
function run(command, cwd) {
|
|
7
|
+
return execSync(command, {
|
|
8
|
+
cwd,
|
|
9
|
+
encoding: 'utf8',
|
|
10
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export function createTempDir(prefix) {
|
|
14
|
+
return mkdtempSync(join(tmpdir(), prefix));
|
|
15
|
+
}
|
|
16
|
+
export function initRepo(dir) {
|
|
17
|
+
run('git init', dir);
|
|
18
|
+
run('git config user.name "agentmap tests"', dir);
|
|
19
|
+
run('git config user.email "agentmap@example.com"', dir);
|
|
20
|
+
return { dir };
|
|
21
|
+
}
|
|
22
|
+
export function createRepo(prefix) {
|
|
23
|
+
const dir = createTempDir(prefix);
|
|
24
|
+
mkdirSync(dir, { recursive: true });
|
|
25
|
+
return initRepo(dir);
|
|
26
|
+
}
|
|
27
|
+
export function writeTrackedFile(repo, relativePath, content) {
|
|
28
|
+
const filePath = join(repo.dir, relativePath);
|
|
29
|
+
mkdirSync(join(filePath, '..'), { recursive: true });
|
|
30
|
+
writeFileSync(filePath, content, 'utf8');
|
|
31
|
+
}
|
|
32
|
+
export function commitAll(repo, message) {
|
|
33
|
+
run('git add .', repo.dir);
|
|
34
|
+
run(`git commit -m ${JSON.stringify(message)}`, repo.dir);
|
|
35
|
+
}
|
|
36
|
+
export function shortHead(repo) {
|
|
37
|
+
return run('git rev-parse --short HEAD', repo.dir).trim();
|
|
38
|
+
}
|
|
39
|
+
export function addSubmodule(repo, sourceDir, targetPath) {
|
|
40
|
+
run(`git -c protocol.file.allow=always submodule add ${JSON.stringify(sourceDir)} ${JSON.stringify(targetPath)}`, repo.dir);
|
|
41
|
+
}
|
|
42
|
+
export function updateSubmodulesRecursive(repo) {
|
|
43
|
+
run('git -c protocol.file.allow=always submodule update --init --recursive', repo.dir);
|
|
44
|
+
}
|
|
45
|
+
export function deinitSubmodule(repo, targetPath) {
|
|
46
|
+
run(`git submodule deinit -f ${JSON.stringify(targetPath)}`, repo.dir);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=git-test-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-test-helpers.js","sourceRoot":"","sources":["../../src/test-helpers/git-test-helpers.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAM3B,SAAS,GAAG,CAAC,OAAe,EAAE,GAAW;IACvC,OAAO,QAAQ,CAAC,OAAO,EAAE;QACvB,GAAG;QACH,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IACpB,GAAG,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;IACjD,GAAG,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAA;IACxD,OAAO,EAAE,GAAG,EAAE,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACjC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAc,EAAE,YAAoB,EAAE,OAAe;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;IAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,OAAe;IACvD,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1B,GAAG,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,OAAO,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,SAAiB,EAAE,UAAkB;IAChF,GAAG,CAAC,mDAAmD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7H,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAc;IACtD,GAAG,CAAC,uEAAuE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;AACxF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,UAAkB;IAChE,GAAG,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;AACxE,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type Parser from 'web-tree-sitter';
|
|
2
|
+
import type { Logger } from './logger.js';
|
|
2
3
|
/**
|
|
3
4
|
* Supported programming languages
|
|
4
5
|
*/
|
|
@@ -26,10 +27,41 @@ export interface FileEntry {
|
|
|
26
27
|
exports?: DefEntry;
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
+
* A submodule entry in the map
|
|
31
|
+
*/
|
|
32
|
+
export interface SubmoduleEntry {
|
|
33
|
+
submodule: string;
|
|
34
|
+
dirty?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A submodule node in the map.
|
|
38
|
+
* Carries submodule metadata and can also contain nested files/directories.
|
|
39
|
+
*/
|
|
40
|
+
export interface SubmoduleNode extends SubmoduleEntry {
|
|
41
|
+
[name: string]: MapNode | FileEntry | SubmoduleNode | string | undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Info about a git submodule discovered in the repo
|
|
45
|
+
*/
|
|
46
|
+
export interface SubmoduleInfo {
|
|
47
|
+
/** Relative path of the submodule in the parent repo */
|
|
48
|
+
path: string;
|
|
49
|
+
/** Current HEAD commit SHA (short) */
|
|
50
|
+
commit: string;
|
|
51
|
+
/** Checked-out branch name, or undefined if detached HEAD */
|
|
52
|
+
branch?: string;
|
|
53
|
+
/** Remote URL from .gitmodules */
|
|
54
|
+
url?: string;
|
|
55
|
+
/** Whether the submodule has uncommitted changes */
|
|
56
|
+
dirty?: boolean;
|
|
57
|
+
/** Whether the submodule is initialized */
|
|
58
|
+
initialized: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Recursive map node - either a directory (with children), a file entry, or a submodule entry
|
|
30
62
|
*/
|
|
31
63
|
export interface MapNode {
|
|
32
|
-
[name: string]: MapNode | FileEntry;
|
|
64
|
+
[name: string]: MapNode | FileEntry | SubmoduleNode;
|
|
33
65
|
}
|
|
34
66
|
/**
|
|
35
67
|
* Result of extracting marker and description from a file
|
|
@@ -74,6 +106,8 @@ export interface FileResult {
|
|
|
74
106
|
description?: string;
|
|
75
107
|
definitions: Definition[];
|
|
76
108
|
diff?: FileDiffStats;
|
|
109
|
+
/** If set, this file is an exact duplicate of another file (by git blob SHA) */
|
|
110
|
+
duplicateOf?: string;
|
|
77
111
|
}
|
|
78
112
|
/**
|
|
79
113
|
* Options for generating the map
|
|
@@ -91,6 +125,12 @@ export interface GenerateOptions {
|
|
|
91
125
|
diffBase?: string;
|
|
92
126
|
/** Max definitions per file before truncation (default: 25) */
|
|
93
127
|
maxDefs?: number;
|
|
128
|
+
/** Max characters for file descriptions before truncation (default: 300). Rounds up to full line. */
|
|
129
|
+
maxDescChars?: number;
|
|
130
|
+
/** Include submodule info in the map (default: true) */
|
|
131
|
+
submodules?: boolean;
|
|
132
|
+
/** Logger implementation (default: console logger) */
|
|
133
|
+
logger?: Logger;
|
|
94
134
|
}
|
|
95
135
|
/**
|
|
96
136
|
* A hunk from git diff output
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,IAAI,GACJ,KAAK,GACL,KAAK,CAAA;AAET;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentmap",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Generate a YAML map of your codebase for AI agent context",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -18,13 +18,25 @@
|
|
|
18
18
|
"main": "./dist/index.js",
|
|
19
19
|
"types": "./dist/index.d.ts",
|
|
20
20
|
"exports": {
|
|
21
|
+
"./package.json": "./package.json",
|
|
21
22
|
".": {
|
|
22
23
|
"types": "./dist/index.d.ts",
|
|
23
24
|
"default": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./src": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"default": "./src/index.ts"
|
|
29
|
+
},
|
|
30
|
+
"./src/*": {
|
|
31
|
+
"types": "./dist/*.d.ts",
|
|
32
|
+
"default": "./src/*.ts"
|
|
24
33
|
}
|
|
25
34
|
},
|
|
26
35
|
"files": [
|
|
27
|
-
"
|
|
36
|
+
"src",
|
|
37
|
+
"dist",
|
|
38
|
+
"README.md",
|
|
39
|
+
"CHANGELOG.md"
|
|
28
40
|
],
|
|
29
41
|
"scripts": {
|
|
30
42
|
"build": "tsc",
|
|
@@ -35,7 +47,7 @@
|
|
|
35
47
|
},
|
|
36
48
|
"dependencies": {
|
|
37
49
|
"@tree-sitter-grammars/tree-sitter-zig": "^1.1.2",
|
|
38
|
-
"
|
|
50
|
+
"goke": "^6.2.0",
|
|
39
51
|
"js-yaml": "^4.1.0",
|
|
40
52
|
"marked": "^17.0.1",
|
|
41
53
|
"p-limit": "^7.2.0",
|