agentmap 0.4.1 → 0.5.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/dist/cli.js +13 -2
- package/dist/cli.js.map +1 -1
- package/dist/extract/markdown.d.ts +8 -0
- package/dist/extract/markdown.d.ts.map +1 -0
- package/dist/extract/markdown.js +191 -0
- package/dist/extract/markdown.js.map +1 -0
- package/dist/extract/markdown.test.d.ts +2 -0
- package/dist/extract/markdown.test.d.ts.map +1 -0
- package/dist/extract/markdown.test.js +148 -0
- package/dist/extract/markdown.test.js.map +1 -0
- package/dist/extract/marker.d.ts +1 -0
- package/dist/extract/marker.d.ts.map +1 -1
- package/dist/extract/marker.js +19 -8
- package/dist/extract/marker.js.map +1 -1
- package/dist/extract/marker.test.js +5 -3
- package/dist/extract/marker.test.js.map +1 -1
- package/dist/map/yaml.d.ts.map +1 -1
- package/dist/map/yaml.js +15 -1
- package/dist/map/yaml.js.map +1 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +23 -3
- package/dist/scanner.js.map +1 -1
- package/package.json +5 -2
package/dist/cli.js
CHANGED
|
@@ -54,12 +54,21 @@ cli
|
|
|
54
54
|
process.exit(1);
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
|
-
const PROMPT_TEXT = `
|
|
57
|
+
const PROMPT_TEXT = `Analyze the repository structure first. Look for clear separation of concerns:
|
|
58
|
+
- Monorepo workspaces (package.json workspaces, pnpm-workspace.yaml, etc.)
|
|
59
|
+
- Separate packages or modules
|
|
60
|
+
- Different languages or technology stacks
|
|
61
|
+
- Independent services or apps
|
|
62
|
+
|
|
63
|
+
If you find well-separated packages, use the Task tool to process them concurrently - assign each package/workspace to a separate task agent for speed.
|
|
64
|
+
|
|
65
|
+
For each package/area, identify the most important files - entry points, core modules, main utilities, and key abstractions.
|
|
58
66
|
|
|
59
67
|
For each important file, add a descriptive comment at the very top (before any imports or code). The comment should:
|
|
60
68
|
- Be 2-4 lines describing what the file does and why it exists
|
|
61
69
|
- Use the appropriate comment style for the language (// for JS/TS, # for Python, //! for Rust modules, etc.)
|
|
62
70
|
- If the file is an entry point (CLI, main, server start, etc.), mark it as such in the description
|
|
71
|
+
- If the file already has a top comment, review and update it to be accurate and descriptive - don't skip it
|
|
63
72
|
|
|
64
73
|
Examples:
|
|
65
74
|
|
|
@@ -75,7 +84,9 @@ Rust:
|
|
|
75
84
|
//! HTTP server module.
|
|
76
85
|
//! Entry point for the web API, configures routes and middleware.
|
|
77
86
|
|
|
78
|
-
After adding comments to all important files, run \`npx agentmap\` to verify the files appear in the generated map.
|
|
87
|
+
After adding comments to all important files, run \`npx -y agentmap\` to verify the files appear in the generated map.
|
|
88
|
+
|
|
89
|
+
You can run this prompt again anytime to keep file descriptions up to date as the codebase evolves.
|
|
79
90
|
|
|
80
91
|
Finally, set up the agentmap plugin so future sessions automatically get the codebase map.
|
|
81
92
|
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,+CAA+C;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEzD,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAA;AAE3B,MAAM,gBAAgB,GAAG;;;;;;;;;;CAUxB,CAAA;AAED,GAAG;KACA,OAAO,CAAC,OAAO,EAAE,qCAAqC,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;KACvE,MAAM,CAAC,wBAAwB,EAAE,kCAAkC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KAClF,MAAM,CAAC,YAAY,EAAE,+DAA+D,CAAC;KACrF,MAAM,CAAC,KAAK,EAAE,GAAuB,EAAE,OAA+D,EAAE,EAAE;IACzG,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;IAErC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;YAC5B,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;QAEF,8DAA8D;QAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;QAC9B,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;YAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;YACjC,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC7C,OAAO,CAAC,KAAK,CAAC,gBAAgB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,WAAW,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,+CAA+C;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEzD,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAA;AAE3B,MAAM,gBAAgB,GAAG;;;;;;;;;;CAUxB,CAAA;AAED,GAAG;KACA,OAAO,CAAC,OAAO,EAAE,qCAAqC,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;KACvE,MAAM,CAAC,wBAAwB,EAAE,kCAAkC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KAClF,MAAM,CAAC,YAAY,EAAE,+DAA+D,CAAC;KACrF,MAAM,CAAC,KAAK,EAAE,GAAuB,EAAE,OAA+D,EAAE,EAAE;IACzG,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;IAErC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;YAC5B,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;QAEF,8DAA8D;QAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;QAC9B,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;YAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;YACjC,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC7C,OAAO,CAAC,KAAK,CAAC,gBAAgB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DAyCyC,CAAA;AAE7D,GAAG;KACA,OAAO,CAAC,QAAQ,EAAE,2DAA2D,CAAC;KAC9E,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAC1B,CAAC,CAAC,CAAA;AAEJ,GAAG,CAAC,IAAI,EAAE,CAAA;AACV,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAEpB,GAAG,CAAC,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract description from a markdown file using marked lexer.
|
|
3
|
+
* Parses first N lines, extracts plain text from AST nodes,
|
|
4
|
+
* ignoring HTML comments and images.
|
|
5
|
+
* Falls back to raw content if parsing fails.
|
|
6
|
+
*/
|
|
7
|
+
export declare function extractMarkdownDescription(filepath: string): Promise<string | null>;
|
|
8
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/extract/markdown.ts"],"names":[],"mappings":"AAqLA;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BzF"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
// Extract description from markdown files using marked AST.
|
|
2
|
+
import { open } from 'fs/promises';
|
|
3
|
+
import { Lexer } from 'marked';
|
|
4
|
+
const MAX_LINES = 50;
|
|
5
|
+
const MAX_DESC_LINES = 25;
|
|
6
|
+
/**
|
|
7
|
+
* Read the first N lines of a file
|
|
8
|
+
*/
|
|
9
|
+
async function readFirstLines(filepath, maxLines) {
|
|
10
|
+
const handle = await open(filepath, 'r');
|
|
11
|
+
try {
|
|
12
|
+
const buffer = Buffer.alloc(maxLines * 200);
|
|
13
|
+
const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
|
|
14
|
+
const content = buffer.toString('utf8', 0, bytesRead);
|
|
15
|
+
const lines = content.split('\n').slice(0, maxLines);
|
|
16
|
+
return lines.join('\n');
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
await handle.close();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Truncate lines to MAX_DESC_LINES, adding indicator if truncated
|
|
24
|
+
*/
|
|
25
|
+
function truncateDescription(lines) {
|
|
26
|
+
const trimmed = lines.join('\n').trim();
|
|
27
|
+
const trimmedLines = trimmed.split('\n');
|
|
28
|
+
if (trimmedLines.length <= MAX_DESC_LINES) {
|
|
29
|
+
return trimmed;
|
|
30
|
+
}
|
|
31
|
+
const truncated = trimmedLines.slice(0, MAX_DESC_LINES);
|
|
32
|
+
const remaining = trimmedLines.length - MAX_DESC_LINES;
|
|
33
|
+
truncated.push(`... and ${remaining} more lines`);
|
|
34
|
+
return truncated.join('\n');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Extract plain text from inline tokens, skipping images.
|
|
38
|
+
*/
|
|
39
|
+
function extractInlineText(tokens) {
|
|
40
|
+
if (!tokens)
|
|
41
|
+
return '';
|
|
42
|
+
const parts = [];
|
|
43
|
+
for (const token of tokens) {
|
|
44
|
+
// Skip images
|
|
45
|
+
if (token.type === 'image') {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
// Handle text
|
|
49
|
+
if (token.type === 'text') {
|
|
50
|
+
const text = token;
|
|
51
|
+
if (text.text) {
|
|
52
|
+
parts.push(text.text);
|
|
53
|
+
}
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
// Handle links - extract the text content
|
|
57
|
+
if (token.type === 'link') {
|
|
58
|
+
const link = token;
|
|
59
|
+
if (link.text) {
|
|
60
|
+
parts.push(link.text);
|
|
61
|
+
}
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
// Handle strong/em - extract nested text
|
|
65
|
+
if (token.type === 'strong' || token.type === 'em') {
|
|
66
|
+
const styled = token;
|
|
67
|
+
const inner = extractInlineText(styled.tokens);
|
|
68
|
+
if (inner) {
|
|
69
|
+
parts.push(inner);
|
|
70
|
+
}
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
// Handle codespan (inline code)
|
|
74
|
+
if (token.type === 'codespan') {
|
|
75
|
+
const code = token;
|
|
76
|
+
if (code.text) {
|
|
77
|
+
parts.push('`' + code.text + '`');
|
|
78
|
+
}
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return parts.join('');
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Extract text content from markdown tokens recursively.
|
|
86
|
+
* Skips HTML, comments, and images. Returns plain text lines.
|
|
87
|
+
*/
|
|
88
|
+
function extractTextFromTokens(tokens) {
|
|
89
|
+
const lines = [];
|
|
90
|
+
for (const token of tokens) {
|
|
91
|
+
// Skip HTML (includes comments)
|
|
92
|
+
if (token.type === 'html') {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
// Skip spaces
|
|
96
|
+
if (token.type === 'space') {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
// Handle headings - extract inline text
|
|
100
|
+
if (token.type === 'heading') {
|
|
101
|
+
const heading = token;
|
|
102
|
+
const text = extractInlineText(heading.tokens);
|
|
103
|
+
if (text) {
|
|
104
|
+
lines.push(text);
|
|
105
|
+
}
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// Handle paragraphs - extract inline text (skips images)
|
|
109
|
+
if (token.type === 'paragraph') {
|
|
110
|
+
const para = token;
|
|
111
|
+
const text = extractInlineText(para.tokens);
|
|
112
|
+
if (text) {
|
|
113
|
+
lines.push(text);
|
|
114
|
+
}
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
// Handle lists - extract text from items
|
|
118
|
+
if (token.type === 'list') {
|
|
119
|
+
const list = token;
|
|
120
|
+
for (const item of list.items) {
|
|
121
|
+
const text = extractInlineText(item.tokens);
|
|
122
|
+
if (text) {
|
|
123
|
+
lines.push('- ' + text.split('\n')[0]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
// Handle blockquotes - extract nested tokens
|
|
129
|
+
if (token.type === 'blockquote') {
|
|
130
|
+
const quote = token;
|
|
131
|
+
if (quote.tokens) {
|
|
132
|
+
const nestedLines = extractTextFromTokens(quote.tokens);
|
|
133
|
+
lines.push(...nestedLines.map(l => '> ' + l));
|
|
134
|
+
}
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
// Handle code blocks - include with fence
|
|
138
|
+
if (token.type === 'code') {
|
|
139
|
+
const code = token;
|
|
140
|
+
if (code.lang) {
|
|
141
|
+
lines.push('```' + code.lang);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
lines.push('```');
|
|
145
|
+
}
|
|
146
|
+
lines.push(...code.text.split('\n'));
|
|
147
|
+
lines.push('```');
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
// Handle text tokens (inline)
|
|
151
|
+
if (token.type === 'text') {
|
|
152
|
+
const text = token;
|
|
153
|
+
if (text.text) {
|
|
154
|
+
lines.push(text.text);
|
|
155
|
+
}
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return lines;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Extract description from a markdown file using marked lexer.
|
|
163
|
+
* Parses first N lines, extracts plain text from AST nodes,
|
|
164
|
+
* ignoring HTML comments and images.
|
|
165
|
+
* Falls back to raw content if parsing fails.
|
|
166
|
+
*/
|
|
167
|
+
export async function extractMarkdownDescription(filepath) {
|
|
168
|
+
const head = await readFirstLines(filepath, MAX_LINES);
|
|
169
|
+
try {
|
|
170
|
+
// Parse markdown to tokens using marked lexer
|
|
171
|
+
const lexer = new Lexer();
|
|
172
|
+
const tokens = lexer.lex(head);
|
|
173
|
+
// Extract text from tokens
|
|
174
|
+
const lines = extractTextFromTokens(tokens);
|
|
175
|
+
// Filter empty lines
|
|
176
|
+
const contentLines = lines.filter(l => l.trim() !== '');
|
|
177
|
+
if (contentLines.length === 0) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
return truncateDescription(contentLines);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Fallback: return raw content if parsing fails
|
|
184
|
+
const lines = head.split('\n').filter(l => l.trim() !== '');
|
|
185
|
+
if (lines.length === 0) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
return truncateDescription(lines);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/extract/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.test.d.ts","sourceRoot":"","sources":["../../src/extract/markdown.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// Tests for markdown description extraction.
|
|
2
|
+
import { describe, expect, test } from 'bun:test';
|
|
3
|
+
import { writeFile, unlink, mkdir } from 'fs/promises';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { tmpdir } from 'os';
|
|
6
|
+
import { extractMarkdownDescription } from './markdown.js';
|
|
7
|
+
const TEST_DIR = join(tmpdir(), 'agentmap-markdown-test');
|
|
8
|
+
async function testMarkdown(content) {
|
|
9
|
+
await mkdir(TEST_DIR, { recursive: true });
|
|
10
|
+
const filepath = join(TEST_DIR, 'README.md');
|
|
11
|
+
await writeFile(filepath, content, 'utf8');
|
|
12
|
+
try {
|
|
13
|
+
return await extractMarkdownDescription(filepath);
|
|
14
|
+
}
|
|
15
|
+
finally {
|
|
16
|
+
await unlink(filepath).catch(() => { });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
describe('Markdown extraction', () => {
|
|
20
|
+
test('simple heading and paragraph', async () => {
|
|
21
|
+
const desc = await testMarkdown(`# My Project
|
|
22
|
+
|
|
23
|
+
This is a description of my project.
|
|
24
|
+
It does amazing things.
|
|
25
|
+
`);
|
|
26
|
+
expect(desc).toMatchInlineSnapshot(`
|
|
27
|
+
"My Project
|
|
28
|
+
This is a description of my project.
|
|
29
|
+
It does amazing things."
|
|
30
|
+
`);
|
|
31
|
+
});
|
|
32
|
+
test('ignores HTML comments', async () => {
|
|
33
|
+
const desc = await testMarkdown(`<!-- This is a comment -->
|
|
34
|
+
# Title
|
|
35
|
+
|
|
36
|
+
Some content here.
|
|
37
|
+
`);
|
|
38
|
+
expect(desc).toMatchInlineSnapshot(`
|
|
39
|
+
"Title
|
|
40
|
+
Some content here."
|
|
41
|
+
`);
|
|
42
|
+
});
|
|
43
|
+
test('ignores badge images', async () => {
|
|
44
|
+
const desc = await testMarkdown(`
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+
# My Library
|
|
48
|
+
|
|
49
|
+
A useful library.
|
|
50
|
+
`);
|
|
51
|
+
expect(desc).toMatchInlineSnapshot(`
|
|
52
|
+
"My Library
|
|
53
|
+
A useful library."
|
|
54
|
+
`);
|
|
55
|
+
});
|
|
56
|
+
test('handles lists', async () => {
|
|
57
|
+
const desc = await testMarkdown(`# Features
|
|
58
|
+
|
|
59
|
+
- Feature one
|
|
60
|
+
- Feature two
|
|
61
|
+
- Feature three
|
|
62
|
+
`);
|
|
63
|
+
expect(desc).toMatchInlineSnapshot(`
|
|
64
|
+
"Features
|
|
65
|
+
- Feature one
|
|
66
|
+
- Feature two
|
|
67
|
+
- Feature three"
|
|
68
|
+
`);
|
|
69
|
+
});
|
|
70
|
+
test('handles code blocks', async () => {
|
|
71
|
+
const desc = await testMarkdown(`# Usage
|
|
72
|
+
|
|
73
|
+
Install the package:
|
|
74
|
+
|
|
75
|
+
\`\`\`bash
|
|
76
|
+
npm install mypackage
|
|
77
|
+
\`\`\`
|
|
78
|
+
`);
|
|
79
|
+
expect(desc).toMatchInlineSnapshot(`
|
|
80
|
+
"Usage
|
|
81
|
+
Install the package:
|
|
82
|
+
\`\`\`bash
|
|
83
|
+
npm install mypackage
|
|
84
|
+
\`\`\`"
|
|
85
|
+
`);
|
|
86
|
+
});
|
|
87
|
+
test('handles blockquotes', async () => {
|
|
88
|
+
const desc = await testMarkdown(`# Quote Example
|
|
89
|
+
|
|
90
|
+
> This is a blockquote
|
|
91
|
+
> with multiple lines
|
|
92
|
+
`);
|
|
93
|
+
expect(desc).toMatchInlineSnapshot(`
|
|
94
|
+
"Quote Example
|
|
95
|
+
> This is a blockquote
|
|
96
|
+
with multiple lines"
|
|
97
|
+
`);
|
|
98
|
+
});
|
|
99
|
+
test('truncates long content with indicator', async () => {
|
|
100
|
+
// Create 40 lines without blank lines between (so all fit in first 50 lines read)
|
|
101
|
+
const lines = Array.from({ length: 40 }, (_, i) => `- Item ${i + 1}`).join('\n');
|
|
102
|
+
const desc = await testMarkdown(`# Title\n\n${lines}`);
|
|
103
|
+
const descLines = desc?.split('\n') ?? [];
|
|
104
|
+
// 25 content lines + 1 truncation indicator
|
|
105
|
+
expect(descLines.length).toBe(26);
|
|
106
|
+
expect(descLines[25]).toBe('... and 16 more lines');
|
|
107
|
+
});
|
|
108
|
+
test('returns null for empty markdown', async () => {
|
|
109
|
+
const desc = await testMarkdown(``);
|
|
110
|
+
expect(desc).toBeNull();
|
|
111
|
+
});
|
|
112
|
+
test('returns null for only HTML comments', async () => {
|
|
113
|
+
const desc = await testMarkdown(`<!-- Just a comment -->
|
|
114
|
+
|
|
115
|
+
<!-- Another comment -->
|
|
116
|
+
`);
|
|
117
|
+
expect(desc).toBeNull();
|
|
118
|
+
});
|
|
119
|
+
test('handles mixed content', async () => {
|
|
120
|
+
const desc = await testMarkdown(`<!-- Header comment -->
|
|
121
|
+

|
|
122
|
+
|
|
123
|
+
# agentmap
|
|
124
|
+
|
|
125
|
+
A compact, YAML-based inventory of your codebase.
|
|
126
|
+
|
|
127
|
+
## Features
|
|
128
|
+
|
|
129
|
+
- Fast scanning
|
|
130
|
+
- Tree-sitter parsing
|
|
131
|
+
|
|
132
|
+
\`\`\`bash
|
|
133
|
+
npm install agentmap
|
|
134
|
+
\`\`\`
|
|
135
|
+
`);
|
|
136
|
+
expect(desc).toMatchInlineSnapshot(`
|
|
137
|
+
"agentmap
|
|
138
|
+
A compact, YAML-based inventory of your codebase.
|
|
139
|
+
Features
|
|
140
|
+
- Fast scanning
|
|
141
|
+
- Tree-sitter parsing
|
|
142
|
+
\`\`\`bash
|
|
143
|
+
npm install agentmap
|
|
144
|
+
\`\`\`"
|
|
145
|
+
`);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=markdown.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.test.js","sourceRoot":"","sources":["../../src/extract/markdown.test.ts"],"names":[],"mappings":"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"}
|
package/dist/extract/marker.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marker.d.ts","sourceRoot":"","sources":["../../src/extract/marker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"marker.d.ts","sourceRoot":"","sources":["../../src/extract/marker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAA;AAErE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAuC1D;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkB3E"}
|
package/dist/extract/marker.js
CHANGED
|
@@ -2,8 +2,23 @@
|
|
|
2
2
|
// Detects standard comment styles from existing projects.
|
|
3
3
|
import { open } from 'fs/promises';
|
|
4
4
|
import { parseCode, detectLanguage } from '../parser/index.js';
|
|
5
|
+
export { extractMarkdownDescription } from './markdown.js';
|
|
5
6
|
const MAX_LINES = 50;
|
|
6
|
-
const MAX_DESC_LINES =
|
|
7
|
+
const MAX_DESC_LINES = 25;
|
|
8
|
+
/**
|
|
9
|
+
* Truncate lines to MAX_DESC_LINES, adding indicator if truncated
|
|
10
|
+
*/
|
|
11
|
+
function truncateDescription(lines) {
|
|
12
|
+
const trimmed = lines.join('\n').trim();
|
|
13
|
+
const trimmedLines = trimmed.split('\n');
|
|
14
|
+
if (trimmedLines.length <= MAX_DESC_LINES) {
|
|
15
|
+
return trimmed;
|
|
16
|
+
}
|
|
17
|
+
const truncated = trimmedLines.slice(0, MAX_DESC_LINES);
|
|
18
|
+
const remaining = trimmedLines.length - MAX_DESC_LINES;
|
|
19
|
+
truncated.push(`... and ${remaining} more lines`);
|
|
20
|
+
return truncated.join('\n');
|
|
21
|
+
}
|
|
7
22
|
/**
|
|
8
23
|
* Read the first N lines of a file
|
|
9
24
|
*/
|
|
@@ -121,12 +136,8 @@ function extractConsecutiveComments(children, startIdx, language) {
|
|
|
121
136
|
if (text !== null) {
|
|
122
137
|
lines.push(...text.split('\n'));
|
|
123
138
|
}
|
|
124
|
-
// Limit description length
|
|
125
|
-
if (lines.length >= MAX_DESC_LINES) {
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
139
|
}
|
|
129
|
-
return lines
|
|
140
|
+
return truncateDescription(lines);
|
|
130
141
|
}
|
|
131
142
|
/**
|
|
132
143
|
* Extract text content from a comment node
|
|
@@ -212,7 +223,7 @@ function extractPythonDocstring(node) {
|
|
|
212
223
|
const content = findChild(node, 'string_content');
|
|
213
224
|
if (content) {
|
|
214
225
|
const lines = content.text.trim().split('\n');
|
|
215
|
-
return lines
|
|
226
|
+
return truncateDescription(lines);
|
|
216
227
|
}
|
|
217
228
|
// Fallback: extract from full text
|
|
218
229
|
let text = node.text;
|
|
@@ -224,7 +235,7 @@ function extractPythonDocstring(node) {
|
|
|
224
235
|
text = text.slice(0, -3);
|
|
225
236
|
}
|
|
226
237
|
const lines = text.trim().split('\n');
|
|
227
|
-
return lines
|
|
238
|
+
return truncateDescription(lines);
|
|
228
239
|
}
|
|
229
240
|
/**
|
|
230
241
|
* Get all children of a node as array
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marker.js","sourceRoot":"","sources":["../../src/extract/marker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"marker.js","sourceRoot":"","sources":["../../src/extract/marker.ts"],"names":[],"mappings":"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"}
|
|
@@ -357,11 +357,13 @@ describe('Edge cases', () => {
|
|
|
357
357
|
`);
|
|
358
358
|
expect(desc).toBeUndefined();
|
|
359
359
|
});
|
|
360
|
-
test('description limited to
|
|
360
|
+
test('description limited to 25 lines with truncation indicator', async () => {
|
|
361
361
|
const lines = Array.from({ length: 30 }, (_, i) => `// Line ${i + 1}`).join('\n');
|
|
362
362
|
const desc = await testFile('test.ts', lines + '\n\nexport function foo() {}');
|
|
363
|
-
const
|
|
364
|
-
|
|
363
|
+
const descLines = desc?.split('\n') ?? [];
|
|
364
|
+
// 25 content lines + 1 truncation indicator
|
|
365
|
+
expect(descLines.length).toBe(26);
|
|
366
|
+
expect(descLines[25]).toBe('... and 5 more lines');
|
|
365
367
|
});
|
|
366
368
|
test('empty comment returns undefined (no meaningful description)', async () => {
|
|
367
369
|
const desc = await testFile('test.ts', `//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marker.test.js","sourceRoot":"","sources":["../../src/extract/marker.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"marker.test.js","sourceRoot":"","sources":["../../src/extract/marker.test.ts"],"names":[],"mappings":"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"}
|
package/dist/map/yaml.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../src/map/yaml.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../src/map/yaml.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAgC1C;;GAEG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAS3C"}
|
package/dist/map/yaml.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
// Format map object to YAML string.
|
|
2
2
|
import yaml from 'js-yaml';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Check if a key is a README file (case-insensitive)
|
|
5
|
+
*/
|
|
6
|
+
function isReadme(key) {
|
|
7
|
+
const lower = key.toLowerCase();
|
|
8
|
+
return lower === 'readme.md' || lower === 'readme';
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Custom key sorter: description first, then diff, then defs, then README files, then alphabetical
|
|
5
12
|
*/
|
|
6
13
|
function sortKeys(a, b) {
|
|
7
14
|
// description always first
|
|
@@ -19,6 +26,13 @@ function sortKeys(a, b) {
|
|
|
19
26
|
return -1;
|
|
20
27
|
if (b === 'defs')
|
|
21
28
|
return 1;
|
|
29
|
+
// README files come before other files
|
|
30
|
+
const aIsReadme = isReadme(a);
|
|
31
|
+
const bIsReadme = isReadme(b);
|
|
32
|
+
if (aIsReadme && !bIsReadme)
|
|
33
|
+
return -1;
|
|
34
|
+
if (bIsReadme && !aIsReadme)
|
|
35
|
+
return 1;
|
|
22
36
|
// alphabetical for everything else
|
|
23
37
|
return a.localeCompare(b);
|
|
24
38
|
}
|
package/dist/map/yaml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../src/map/yaml.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,IAAI,MAAM,SAAS,CAAA;AAG1B;;GAEG;AACH,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,2BAA2B;IAC3B,IAAI,CAAC,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC,CAAA;IAClC,IAAI,CAAC,KAAK,aAAa;QAAE,OAAO,CAAC,CAAA;IACjC,cAAc;IACd,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,CAAA;IAC3B,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAA;IAC1B,aAAa;IACb,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,CAAA;IAC3B,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAA;IAC1B,mCAAmC;IACnC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,GAAY;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QACpB,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC,CAAC,EAAG,mBAAmB;QACnC,MAAM,EAAE,IAAI,EAAI,4BAA4B;QAC5C,QAAQ,EAAQ,qCAAqC;QACrD,WAAW,EAAE,GAAG;QAChB,WAAW,EAAE,KAAK;KACnB,CAAC,CAAA;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../src/map/yaml.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,IAAI,MAAM,SAAS,CAAA;AAG1B;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IAC/B,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,QAAQ,CAAA;AACpD,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,2BAA2B;IAC3B,IAAI,CAAC,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC,CAAA;IAClC,IAAI,CAAC,KAAK,aAAa;QAAE,OAAO,CAAC,CAAA;IACjC,cAAc;IACd,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,CAAA;IAC3B,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAA;IAC1B,aAAa;IACb,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,CAAA;IAC3B,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,CAAC,CAAA;IAC1B,uCAAuC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC7B,IAAI,SAAS,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,CAAC,CAAA;IACtC,IAAI,SAAS,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,CAAA;IACrC,mCAAmC;IACnC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,GAAY;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QACpB,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC,CAAC,EAAG,mBAAmB;QACnC,MAAM,EAAE,IAAI,EAAI,4BAA4B;QAC5C,QAAQ,EAAQ,qCAAqC;QACrD,WAAW,EAAE,GAAG;QAChB,WAAW,EAAE,KAAK;KACnB,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/scanner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAA2B,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAA2B,MAAM,YAAY,CAAA;AAiFtF;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA6DxF"}
|
package/dist/scanner.js
CHANGED
|
@@ -4,7 +4,7 @@ import fg from 'fast-glob';
|
|
|
4
4
|
import picomatch from 'picomatch';
|
|
5
5
|
import { readFile } from 'fs/promises';
|
|
6
6
|
import { join, normalize } from 'path';
|
|
7
|
-
import { extractMarker } from './extract/marker.js';
|
|
7
|
+
import { extractMarker, extractMarkdownDescription } from './extract/marker.js';
|
|
8
8
|
import { extractDefinitions } from './extract/definitions.js';
|
|
9
9
|
import { getAllDiffData, applyDiffToDefinitions } from './extract/git-status.js';
|
|
10
10
|
import { parseCode, detectLanguage, LANGUAGE_EXTENSIONS } from './parser/index.js';
|
|
@@ -19,6 +19,13 @@ function isSupportedFile(filepath) {
|
|
|
19
19
|
const ext = filepath.slice(filepath.lastIndexOf('.'));
|
|
20
20
|
return SUPPORTED_EXTENSIONS.has(ext);
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Check if a file is a README file (case-insensitive, with or without .md extension)
|
|
24
|
+
*/
|
|
25
|
+
function isReadmeFile(filepath) {
|
|
26
|
+
const filename = filepath.split(/[/\\]/).pop()?.toLowerCase() ?? '';
|
|
27
|
+
return filename === 'readme.md' || filename === 'readme';
|
|
28
|
+
}
|
|
22
29
|
/**
|
|
23
30
|
* Check if running inside a git repository
|
|
24
31
|
*/
|
|
@@ -89,8 +96,8 @@ export async function scanDirectory(options = {}) {
|
|
|
89
96
|
else {
|
|
90
97
|
files = await getGlobFiles(dir);
|
|
91
98
|
}
|
|
92
|
-
// Filter by supported extensions
|
|
93
|
-
files = files.filter(isSupportedFile);
|
|
99
|
+
// Filter by supported extensions or README files
|
|
100
|
+
files = files.filter(f => isSupportedFile(f) || isReadmeFile(f));
|
|
94
101
|
// Filter by ignore patterns
|
|
95
102
|
if (ignorePatterns.length > 0) {
|
|
96
103
|
const isIgnored = picomatch(ignorePatterns);
|
|
@@ -136,6 +143,19 @@ export async function scanDirectory(options = {}) {
|
|
|
136
143
|
* Process a single file - check for marker and extract definitions
|
|
137
144
|
*/
|
|
138
145
|
async function processFile(fullPath, relativePath, fileDiff, fileStats) {
|
|
146
|
+
// Handle README.md files specially
|
|
147
|
+
if (isReadmeFile(relativePath)) {
|
|
148
|
+
const description = await extractMarkdownDescription(fullPath);
|
|
149
|
+
if (!description) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
relativePath,
|
|
154
|
+
description,
|
|
155
|
+
definitions: [],
|
|
156
|
+
diff: fileStats,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
139
159
|
// Check for marker first (only reads first 30KB)
|
|
140
160
|
const marker = await extractMarker(fullPath);
|
|
141
161
|
if (!marker.found) {
|
package/dist/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,WAAW,CAAA;AAC1B,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.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.5.0",
|
|
4
4
|
"description": "Generate a YAML map of your codebase for AI agent context",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -30,12 +30,14 @@
|
|
|
30
30
|
"build": "tsc",
|
|
31
31
|
"dev": "tsc --watch",
|
|
32
32
|
"cli": "bun src/cli.ts",
|
|
33
|
-
"test": "bun test"
|
|
33
|
+
"test": "bun test",
|
|
34
|
+
"prepublishOnly": "bun run build"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
37
|
"cac": "^6.7.14",
|
|
37
38
|
"fast-glob": "^3.3.2",
|
|
38
39
|
"js-yaml": "^4.1.0",
|
|
40
|
+
"marked": "^17.0.1",
|
|
39
41
|
"picomatch": "^4.0.2",
|
|
40
42
|
"tree-sitter-go": "^0.23.4",
|
|
41
43
|
"tree-sitter-javascript": "^0.23.1",
|
|
@@ -47,6 +49,7 @@
|
|
|
47
49
|
"devDependencies": {
|
|
48
50
|
"@types/bun": "^1.3.5",
|
|
49
51
|
"@types/js-yaml": "^4.0.9",
|
|
52
|
+
"@types/marked": "^6.0.0",
|
|
50
53
|
"@types/node": "^22.10.2",
|
|
51
54
|
"@types/picomatch": "^3.0.1",
|
|
52
55
|
"typescript": "^5.7.2"
|