agents-reverse-engineer 0.1.1
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/LICENSE +21 -0
- package/README.md +238 -0
- package/dist/change-detection/detector.d.ts +24 -0
- package/dist/change-detection/detector.d.ts.map +1 -0
- package/dist/change-detection/detector.js +114 -0
- package/dist/change-detection/detector.js.map +1 -0
- package/dist/change-detection/index.d.ts +9 -0
- package/dist/change-detection/index.d.ts.map +1 -0
- package/dist/change-detection/index.js +8 -0
- package/dist/change-detection/index.js.map +1 -0
- package/dist/change-detection/types.d.ts +39 -0
- package/dist/change-detection/types.d.ts.map +1 -0
- package/dist/change-detection/types.js +5 -0
- package/dist/change-detection/types.js.map +1 -0
- package/dist/cli/discover.d.ts +52 -0
- package/dist/cli/discover.d.ts.map +1 -0
- package/dist/cli/discover.js +125 -0
- package/dist/cli/discover.js.map +1 -0
- package/dist/cli/generate.d.ts +41 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +179 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +182 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +38 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +94 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/update.d.ts +28 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +296 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/config/defaults.d.ts +38 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +89 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/loader.d.ts +66 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +158 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +235 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +80 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/discovery/filters/binary.d.ts +46 -0
- package/dist/discovery/filters/binary.d.ts.map +1 -0
- package/dist/discovery/filters/binary.js +157 -0
- package/dist/discovery/filters/binary.js.map +1 -0
- package/dist/discovery/filters/custom.d.ts +26 -0
- package/dist/discovery/filters/custom.d.ts.map +1 -0
- package/dist/discovery/filters/custom.js +50 -0
- package/dist/discovery/filters/custom.js.map +1 -0
- package/dist/discovery/filters/gitignore.d.ts +24 -0
- package/dist/discovery/filters/gitignore.d.ts.map +1 -0
- package/dist/discovery/filters/gitignore.js +53 -0
- package/dist/discovery/filters/gitignore.js.map +1 -0
- package/dist/discovery/filters/index.d.ts +85 -0
- package/dist/discovery/filters/index.d.ts.map +1 -0
- package/dist/discovery/filters/index.js +98 -0
- package/dist/discovery/filters/index.js.map +1 -0
- package/dist/discovery/filters/vendor.d.ts +30 -0
- package/dist/discovery/filters/vendor.d.ts.map +1 -0
- package/dist/discovery/filters/vendor.js +57 -0
- package/dist/discovery/filters/vendor.js.map +1 -0
- package/dist/discovery/types.d.ts +66 -0
- package/dist/discovery/types.d.ts.map +1 -0
- package/dist/discovery/types.js +8 -0
- package/dist/discovery/types.js.map +1 -0
- package/dist/discovery/walker.d.ts +24 -0
- package/dist/discovery/walker.d.ts.map +1 -0
- package/dist/discovery/walker.js +35 -0
- package/dist/discovery/walker.js.map +1 -0
- package/dist/generation/budget/chunker.d.ts +38 -0
- package/dist/generation/budget/chunker.d.ts.map +1 -0
- package/dist/generation/budget/chunker.js +73 -0
- package/dist/generation/budget/chunker.js.map +1 -0
- package/dist/generation/budget/counter.d.ts +26 -0
- package/dist/generation/budget/counter.d.ts.map +1 -0
- package/dist/generation/budget/counter.js +45 -0
- package/dist/generation/budget/counter.js.map +1 -0
- package/dist/generation/budget/index.d.ts +4 -0
- package/dist/generation/budget/index.d.ts.map +1 -0
- package/dist/generation/budget/index.js +4 -0
- package/dist/generation/budget/index.js.map +1 -0
- package/dist/generation/budget/tracker.d.ts +63 -0
- package/dist/generation/budget/tracker.d.ts.map +1 -0
- package/dist/generation/budget/tracker.js +96 -0
- package/dist/generation/budget/tracker.js.map +1 -0
- package/dist/generation/complexity.d.ts +43 -0
- package/dist/generation/complexity.d.ts.map +1 -0
- package/dist/generation/complexity.js +156 -0
- package/dist/generation/complexity.js.map +1 -0
- package/dist/generation/detection/detector.d.ts +23 -0
- package/dist/generation/detection/detector.d.ts.map +1 -0
- package/dist/generation/detection/detector.js +62 -0
- package/dist/generation/detection/detector.js.map +1 -0
- package/dist/generation/detection/patterns.d.ts +21 -0
- package/dist/generation/detection/patterns.d.ts.map +1 -0
- package/dist/generation/detection/patterns.js +115 -0
- package/dist/generation/detection/patterns.js.map +1 -0
- package/dist/generation/executor.d.ts +95 -0
- package/dist/generation/executor.d.ts.map +1 -0
- package/dist/generation/executor.js +352 -0
- package/dist/generation/executor.js.map +1 -0
- package/dist/generation/orchestrator.d.ts +126 -0
- package/dist/generation/orchestrator.d.ts.map +1 -0
- package/dist/generation/orchestrator.js +222 -0
- package/dist/generation/orchestrator.js.map +1 -0
- package/dist/generation/prompts/builder.d.ts +31 -0
- package/dist/generation/prompts/builder.d.ts.map +1 -0
- package/dist/generation/prompts/builder.js +136 -0
- package/dist/generation/prompts/builder.js.map +1 -0
- package/dist/generation/prompts/index.d.ts +5 -0
- package/dist/generation/prompts/index.d.ts.map +1 -0
- package/dist/generation/prompts/index.js +4 -0
- package/dist/generation/prompts/index.js.map +1 -0
- package/dist/generation/prompts/templates.d.ts +11 -0
- package/dist/generation/prompts/templates.d.ts.map +1 -0
- package/dist/generation/prompts/templates.js +247 -0
- package/dist/generation/prompts/templates.js.map +1 -0
- package/dist/generation/prompts/types.d.ts +71 -0
- package/dist/generation/prompts/types.d.ts.map +1 -0
- package/dist/generation/prompts/types.js +23 -0
- package/dist/generation/prompts/types.js.map +1 -0
- package/dist/generation/types.d.ts +72 -0
- package/dist/generation/types.d.ts.map +1 -0
- package/dist/generation/types.js +5 -0
- package/dist/generation/types.js.map +1 -0
- package/dist/generation/writers/agents-md.d.ts +63 -0
- package/dist/generation/writers/agents-md.d.ts.map +1 -0
- package/dist/generation/writers/agents-md.js +235 -0
- package/dist/generation/writers/agents-md.js.map +1 -0
- package/dist/generation/writers/claude-md.d.ts +13 -0
- package/dist/generation/writers/claude-md.d.ts.map +1 -0
- package/dist/generation/writers/claude-md.js +33 -0
- package/dist/generation/writers/claude-md.js.map +1 -0
- package/dist/generation/writers/index.d.ts +5 -0
- package/dist/generation/writers/index.d.ts.map +1 -0
- package/dist/generation/writers/index.js +5 -0
- package/dist/generation/writers/index.js.map +1 -0
- package/dist/generation/writers/sum.d.ts +37 -0
- package/dist/generation/writers/sum.d.ts.map +1 -0
- package/dist/generation/writers/sum.js +98 -0
- package/dist/generation/writers/sum.js.map +1 -0
- package/dist/generation/writers/supplementary.d.ts +53 -0
- package/dist/generation/writers/supplementary.d.ts.map +1 -0
- package/dist/generation/writers/supplementary.js +195 -0
- package/dist/generation/writers/supplementary.js.map +1 -0
- package/dist/integration/detect.d.ts +28 -0
- package/dist/integration/detect.d.ts.map +1 -0
- package/dist/integration/detect.js +64 -0
- package/dist/integration/detect.js.map +1 -0
- package/dist/integration/generate.d.ts +36 -0
- package/dist/integration/generate.d.ts.map +1 -0
- package/dist/integration/generate.js +107 -0
- package/dist/integration/generate.js.map +1 -0
- package/dist/integration/templates.d.ts +42 -0
- package/dist/integration/templates.d.ts.map +1 -0
- package/dist/integration/templates.js +203 -0
- package/dist/integration/templates.js.map +1 -0
- package/dist/integration/types.d.ts +44 -0
- package/dist/integration/types.d.ts.map +1 -0
- package/dist/integration/types.js +8 -0
- package/dist/integration/types.js.map +1 -0
- package/dist/output/logger.d.ts +86 -0
- package/dist/output/logger.d.ts.map +1 -0
- package/dist/output/logger.js +107 -0
- package/dist/output/logger.js.map +1 -0
- package/dist/state/database.d.ts +9 -0
- package/dist/state/database.d.ts.map +1 -0
- package/dist/state/database.js +66 -0
- package/dist/state/database.js.map +1 -0
- package/dist/state/index.d.ts +8 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +7 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/migrations.d.ts +12 -0
- package/dist/state/migrations.d.ts.map +1 -0
- package/dist/state/migrations.js +39 -0
- package/dist/state/migrations.js.map +1 -0
- package/dist/state/types.d.ts +54 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/state/types.js +2 -0
- package/dist/state/types.js.map +1 -0
- package/dist/types/index.d.ts +39 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/update/index.d.ts +10 -0
- package/dist/update/index.d.ts.map +1 -0
- package/dist/update/index.js +9 -0
- package/dist/update/index.js.map +1 -0
- package/dist/update/orchestrator.d.ts +91 -0
- package/dist/update/orchestrator.d.ts.map +1 -0
- package/dist/update/orchestrator.js +204 -0
- package/dist/update/orchestrator.js.map +1 -0
- package/dist/update/orphan-cleaner.d.ts +30 -0
- package/dist/update/orphan-cleaner.d.ts.map +1 -0
- package/dist/update/orphan-cleaner.js +151 -0
- package/dist/update/orphan-cleaner.js.map +1 -0
- package/dist/update/types.d.ts +59 -0
- package/dist/update/types.d.ts.map +1 -0
- package/dist/update/types.js +2 -0
- package/dist/update/types.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { writeFile, readdir, stat, mkdir } from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { readSumFile, getSumPath } from './sum.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build AGENTS.md content from directory documentation.
|
|
6
|
+
*/
|
|
7
|
+
export function buildAgentsMd(doc) {
|
|
8
|
+
const sections = [];
|
|
9
|
+
const dirName = path.basename(doc.path) || 'Project Root';
|
|
10
|
+
// Header
|
|
11
|
+
sections.push(`# ${dirName}\n`);
|
|
12
|
+
if (doc.description) {
|
|
13
|
+
sections.push(`${doc.description}\n`);
|
|
14
|
+
}
|
|
15
|
+
// Files grouped by purpose (not flat listing)
|
|
16
|
+
if (doc.files.length > 0) {
|
|
17
|
+
sections.push('## Contents\n');
|
|
18
|
+
for (const group of doc.files) {
|
|
19
|
+
if (group.files.length === 0)
|
|
20
|
+
continue;
|
|
21
|
+
sections.push(`### ${group.purpose}\n`);
|
|
22
|
+
for (const file of group.files) {
|
|
23
|
+
const marker = file.critical ? ' **[critical]**' : '';
|
|
24
|
+
sections.push(`- [${file.name}](./${file.name}) - ${file.description}${marker}`);
|
|
25
|
+
}
|
|
26
|
+
sections.push('');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Subdirectories
|
|
30
|
+
if (doc.subdirectories.length > 0) {
|
|
31
|
+
sections.push('## Subdirectories\n');
|
|
32
|
+
for (const subdir of doc.subdirectories) {
|
|
33
|
+
sections.push(`- [${subdir.name}/](./${subdir.name}/) - ${subdir.summary}`);
|
|
34
|
+
}
|
|
35
|
+
sections.push('');
|
|
36
|
+
}
|
|
37
|
+
// Related directories
|
|
38
|
+
if (doc.relatedDirectories.length > 0) {
|
|
39
|
+
sections.push('## Related\n');
|
|
40
|
+
for (const related of doc.relatedDirectories) {
|
|
41
|
+
sections.push(`- [${related}](${related})`);
|
|
42
|
+
}
|
|
43
|
+
sections.push('');
|
|
44
|
+
}
|
|
45
|
+
// Patterns/Conventions
|
|
46
|
+
if (doc.patterns.length > 0) {
|
|
47
|
+
sections.push('## Patterns\n');
|
|
48
|
+
for (const pattern of doc.patterns) {
|
|
49
|
+
sections.push(`- ${pattern}`);
|
|
50
|
+
}
|
|
51
|
+
sections.push('');
|
|
52
|
+
}
|
|
53
|
+
return sections.join('\n').trim() + '\n';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Categorize files by purpose based on file type and name.
|
|
57
|
+
*/
|
|
58
|
+
function categorizeFile(_fileName, fileType) {
|
|
59
|
+
// Use file type for categorization
|
|
60
|
+
const typeCategories = {
|
|
61
|
+
component: 'Components',
|
|
62
|
+
service: 'Services',
|
|
63
|
+
util: 'Utilities',
|
|
64
|
+
type: 'Types',
|
|
65
|
+
test: 'Tests',
|
|
66
|
+
config: 'Configuration',
|
|
67
|
+
api: 'API Routes',
|
|
68
|
+
model: 'Models',
|
|
69
|
+
hook: 'Hooks',
|
|
70
|
+
schema: 'Schemas',
|
|
71
|
+
generic: 'Core',
|
|
72
|
+
};
|
|
73
|
+
return typeCategories[fileType] ?? 'Other';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Synthesize a directory description from aggregated .sum file metadata.
|
|
77
|
+
*
|
|
78
|
+
* This function creates a meaningful directory-level description by:
|
|
79
|
+
* 1. Collecting all purposes from .sum files in the directory
|
|
80
|
+
* 2. Identifying common patterns and themes
|
|
81
|
+
* 3. Generating a concise summary of the directory's role
|
|
82
|
+
*
|
|
83
|
+
* @param files - Map of category to file references with descriptions
|
|
84
|
+
* @param dirName - Name of the directory
|
|
85
|
+
* @returns A synthesized description of the directory's purpose
|
|
86
|
+
*/
|
|
87
|
+
function synthesizeDirectoryDescription(files, dirName) {
|
|
88
|
+
// Collect all file purposes/descriptions
|
|
89
|
+
const allDescriptions = [];
|
|
90
|
+
const categories = [];
|
|
91
|
+
for (const [category, fileRefs] of files) {
|
|
92
|
+
categories.push(category);
|
|
93
|
+
for (const file of fileRefs) {
|
|
94
|
+
if (file.description && file.description !== 'No description') {
|
|
95
|
+
allDescriptions.push(file.description);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// If no descriptions available, create a basic description from categories
|
|
100
|
+
if (allDescriptions.length === 0) {
|
|
101
|
+
if (categories.length === 0) {
|
|
102
|
+
return `Contains ${dirName} related files.`;
|
|
103
|
+
}
|
|
104
|
+
const categoryList = categories.slice(0, 3).join(', ');
|
|
105
|
+
return `Contains ${categoryList.toLowerCase()} for ${dirName}.`;
|
|
106
|
+
}
|
|
107
|
+
// Synthesize description from available metadata
|
|
108
|
+
// Extract common themes from descriptions (simple keyword extraction)
|
|
109
|
+
const keywords = new Map();
|
|
110
|
+
const commonWords = new Set([
|
|
111
|
+
'the', 'a', 'an', 'and', 'or', 'for', 'to', 'of', 'in', 'on', 'with',
|
|
112
|
+
'this', 'that', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
|
|
113
|
+
'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
|
|
114
|
+
'should', 'may', 'might', 'must', 'can', 'from', 'by', 'as', 'at',
|
|
115
|
+
]);
|
|
116
|
+
for (const desc of allDescriptions) {
|
|
117
|
+
const words = desc.toLowerCase()
|
|
118
|
+
.replace(/[^a-z\s]/g, '')
|
|
119
|
+
.split(/\s+/)
|
|
120
|
+
.filter(w => w.length > 3 && !commonWords.has(w));
|
|
121
|
+
for (const word of words) {
|
|
122
|
+
keywords.set(word, (keywords.get(word) ?? 0) + 1);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Get top themes
|
|
126
|
+
const topThemes = Array.from(keywords.entries())
|
|
127
|
+
.sort((a, b) => b[1] - a[1])
|
|
128
|
+
.slice(0, 3)
|
|
129
|
+
.map(([word]) => word);
|
|
130
|
+
// Build description
|
|
131
|
+
if (topThemes.length > 0) {
|
|
132
|
+
const themePhrase = topThemes.join(', ');
|
|
133
|
+
const primaryCategory = categories[0]?.toLowerCase() ?? 'files';
|
|
134
|
+
return `${capitalizeFirst(dirName)} ${primaryCategory} for ${themePhrase}.`;
|
|
135
|
+
}
|
|
136
|
+
// Fallback: use first description as base
|
|
137
|
+
const firstDesc = allDescriptions[0];
|
|
138
|
+
if (firstDesc.length <= 80) {
|
|
139
|
+
return `${capitalizeFirst(dirName)} directory: ${firstDesc}`;
|
|
140
|
+
}
|
|
141
|
+
return `${capitalizeFirst(dirName)} directory containing ${categories.length} file type(s).`;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Capitalize first letter of a string.
|
|
145
|
+
*/
|
|
146
|
+
function capitalizeFirst(str) {
|
|
147
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Build directory documentation from .sum files.
|
|
151
|
+
*/
|
|
152
|
+
export async function buildDirectoryDoc(dirPath, projectRoot) {
|
|
153
|
+
const relativePath = path.relative(projectRoot, dirPath) || '.';
|
|
154
|
+
const dirName = path.basename(dirPath) || 'root';
|
|
155
|
+
const doc = {
|
|
156
|
+
path: relativePath,
|
|
157
|
+
description: '', // Will be populated after collecting file metadata
|
|
158
|
+
files: [],
|
|
159
|
+
subdirectories: [],
|
|
160
|
+
relatedDirectories: [],
|
|
161
|
+
patterns: [],
|
|
162
|
+
};
|
|
163
|
+
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
164
|
+
const filesByCategory = new Map();
|
|
165
|
+
for (const entry of entries) {
|
|
166
|
+
const entryPath = path.join(dirPath, entry.name);
|
|
167
|
+
if (entry.isDirectory()) {
|
|
168
|
+
// Check for AGENTS.md in subdirectory
|
|
169
|
+
const childAgentsPath = path.join(entryPath, 'AGENTS.md');
|
|
170
|
+
try {
|
|
171
|
+
await stat(childAgentsPath);
|
|
172
|
+
// Has AGENTS.md - extract first line as summary
|
|
173
|
+
doc.subdirectories.push({
|
|
174
|
+
name: entry.name,
|
|
175
|
+
summary: `See ${entry.name}/AGENTS.md`,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
// No AGENTS.md - just note the directory exists
|
|
180
|
+
doc.subdirectories.push({
|
|
181
|
+
name: entry.name,
|
|
182
|
+
summary: `${entry.name} directory`,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else if (entry.isFile() && !entry.name.endsWith('.sum') && !entry.name.startsWith('.')) {
|
|
187
|
+
// Try to read .sum file for this source file
|
|
188
|
+
const sumPath = getSumPath(entryPath);
|
|
189
|
+
const sumContent = await readSumFile(sumPath);
|
|
190
|
+
if (sumContent) {
|
|
191
|
+
const category = categorizeFile(entry.name, sumContent.fileType);
|
|
192
|
+
const files = filesByCategory.get(category) ?? [];
|
|
193
|
+
files.push({
|
|
194
|
+
name: entry.name,
|
|
195
|
+
description: sumContent.metadata.purpose || 'No description',
|
|
196
|
+
});
|
|
197
|
+
filesByCategory.set(category, files);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Synthesize directory description from collected .sum metadata
|
|
202
|
+
doc.description = synthesizeDirectoryDescription(filesByCategory, dirName);
|
|
203
|
+
// Convert map to sorted groups
|
|
204
|
+
const categoryOrder = [
|
|
205
|
+
'Configuration', 'Types', 'Models', 'Schemas',
|
|
206
|
+
'Services', 'API Routes', 'Hooks', 'Components',
|
|
207
|
+
'Utilities', 'Tests', 'Core', 'Other',
|
|
208
|
+
];
|
|
209
|
+
for (const category of categoryOrder) {
|
|
210
|
+
const files = filesByCategory.get(category);
|
|
211
|
+
if (files && files.length > 0) {
|
|
212
|
+
doc.files.push({
|
|
213
|
+
purpose: category,
|
|
214
|
+
files: files.sort((a, b) => a.name.localeCompare(b.name)),
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return doc;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Write AGENTS.md for a directory.
|
|
222
|
+
*
|
|
223
|
+
* @param dirPath - Directory to write AGENTS.md for
|
|
224
|
+
* @param projectRoot - Project root for relative paths
|
|
225
|
+
* @returns Path to written AGENTS.md
|
|
226
|
+
*/
|
|
227
|
+
export async function writeAgentsMd(dirPath, projectRoot) {
|
|
228
|
+
const doc = await buildDirectoryDoc(dirPath, projectRoot);
|
|
229
|
+
const content = buildAgentsMd(doc);
|
|
230
|
+
const agentsPath = path.join(dirPath, 'AGENTS.md');
|
|
231
|
+
await mkdir(path.dirname(agentsPath), { recursive: true });
|
|
232
|
+
await writeFile(agentsPath, content, 'utf-8');
|
|
233
|
+
return agentsPath;
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=agents-md.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../../src/generation/writers/agents-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write CLAUDE.md at the project root.
|
|
3
|
+
*
|
|
4
|
+
* @param projectRoot - Project root directory
|
|
5
|
+
* @returns Path to written CLAUDE.md
|
|
6
|
+
*/
|
|
7
|
+
export declare function writeClaudeMd(projectRoot: string): Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
* Get the content that would be written to CLAUDE.md.
|
|
10
|
+
* Useful for previewing without writing.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getClaudeMdContent(): string;
|
|
13
|
+
//# sourceMappingURL=claude-md.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../../src/generation/writers/claude-md.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIxE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { writeFile } from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Standard CLAUDE.md content - simple pointer to AGENTS.md.
|
|
5
|
+
*
|
|
6
|
+
* Per CONTEXT.md: "Simple pointer to AGENTS.md for Anthropic compatibility"
|
|
7
|
+
*/
|
|
8
|
+
const CLAUDE_MD_CONTENT = `# CLAUDE.md
|
|
9
|
+
|
|
10
|
+
See [AGENTS.md](./AGENTS.md) for codebase documentation.
|
|
11
|
+
|
|
12
|
+
This file exists for Anthropic compatibility. The actual documentation
|
|
13
|
+
is maintained in AGENTS.md files throughout the codebase.
|
|
14
|
+
`;
|
|
15
|
+
/**
|
|
16
|
+
* Write CLAUDE.md at the project root.
|
|
17
|
+
*
|
|
18
|
+
* @param projectRoot - Project root directory
|
|
19
|
+
* @returns Path to written CLAUDE.md
|
|
20
|
+
*/
|
|
21
|
+
export async function writeClaudeMd(projectRoot) {
|
|
22
|
+
const claudePath = path.join(projectRoot, 'CLAUDE.md');
|
|
23
|
+
await writeFile(claudePath, CLAUDE_MD_CONTENT, 'utf-8');
|
|
24
|
+
return claudePath;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the content that would be written to CLAUDE.md.
|
|
28
|
+
* Useful for previewing without writing.
|
|
29
|
+
*/
|
|
30
|
+
export function getClaudeMdContent() {
|
|
31
|
+
return CLAUDE_MD_CONTENT;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=claude-md.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../../src/generation/writers/claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;;GAIG;AACH,MAAM,iBAAiB,GAAG;;;;;;CAMzB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,SAAS,CAAC,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { writeSumFile, readSumFile, getSumPath, sumFileExists, type SumFileContent, } from './sum.js';
|
|
2
|
+
export { writeAgentsMd, buildAgentsMd, buildDirectoryDoc, type DirectoryDoc, type FileGroup, type FileRef, type SubdirSummary, } from './agents-md.js';
|
|
3
|
+
export { writeClaudeMd, getClaudeMdContent, } from './claude-md.js';
|
|
4
|
+
export { writeArchitectureMd, writeStackMd, buildArchitectureMd, buildStackMd, analyzePackageJson, type SupplementaryConfig, type StackInfo, } from './supplementary.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generation/writers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,aAAa,EACb,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { writeSumFile, readSumFile, getSumPath, sumFileExists, } from './sum.js';
|
|
2
|
+
export { writeAgentsMd, buildAgentsMd, buildDirectoryDoc, } from './agents-md.js';
|
|
3
|
+
export { writeClaudeMd, getClaudeMdContent, } from './claude-md.js';
|
|
4
|
+
export { writeArchitectureMd, writeStackMd, buildArchitectureMd, buildStackMd, analyzePackageJson, } from './supplementary.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generation/writers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,aAAa,GAEd,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,GAKlB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,aAAa,EACb,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,GAGnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { SummaryMetadata } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Content structure for a .sum file.
|
|
4
|
+
*/
|
|
5
|
+
export interface SumFileContent {
|
|
6
|
+
/** Main summary text */
|
|
7
|
+
summary: string;
|
|
8
|
+
/** Extracted metadata */
|
|
9
|
+
metadata: SummaryMetadata;
|
|
10
|
+
/** File type that was detected */
|
|
11
|
+
fileType: string;
|
|
12
|
+
/** Generation timestamp */
|
|
13
|
+
generatedAt: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parse a .sum file back into structured content.
|
|
17
|
+
* Returns null if file doesn't exist or is invalid.
|
|
18
|
+
*/
|
|
19
|
+
export declare function readSumFile(sumPath: string): Promise<SumFileContent | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Write a .sum file alongside a source file.
|
|
22
|
+
* Creates: foo.ts -> foo.ts.sum
|
|
23
|
+
*
|
|
24
|
+
* @param sourcePath - Path to the source file
|
|
25
|
+
* @param content - Summary content to write
|
|
26
|
+
* @returns Path to the written .sum file
|
|
27
|
+
*/
|
|
28
|
+
export declare function writeSumFile(sourcePath: string, content: SumFileContent): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Get the .sum path for a source file.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getSumPath(sourcePath: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Check if a .sum file exists for a source file.
|
|
35
|
+
*/
|
|
36
|
+
export declare function sumFileExists(sourcePath: string): Promise<boolean>;
|
|
37
|
+
//# sourceMappingURL=sum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sum.d.ts","sourceRoot":"","sources":["../../../src/generation/writers/sum.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAOjF;AA0DD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIxE"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { writeFile, readFile, mkdir } from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Parse a .sum file back into structured content.
|
|
5
|
+
* Returns null if file doesn't exist or is invalid.
|
|
6
|
+
*/
|
|
7
|
+
export async function readSumFile(sumPath) {
|
|
8
|
+
try {
|
|
9
|
+
const content = await readFile(sumPath, 'utf-8');
|
|
10
|
+
return parseSumFile(content);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parse .sum file content into structured data.
|
|
18
|
+
*/
|
|
19
|
+
function parseSumFile(content) {
|
|
20
|
+
try {
|
|
21
|
+
// Extract frontmatter
|
|
22
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n/);
|
|
23
|
+
if (!frontmatterMatch)
|
|
24
|
+
return null;
|
|
25
|
+
const frontmatter = frontmatterMatch[1];
|
|
26
|
+
const summary = content.slice(frontmatterMatch[0].length).trim();
|
|
27
|
+
// Parse frontmatter (simple YAML-like parsing)
|
|
28
|
+
const fileType = frontmatter.match(/file_type:\s*(.+)/)?.[1]?.trim() ?? 'generic';
|
|
29
|
+
const generatedAt = frontmatter.match(/generated_at:\s*(.+)/)?.[1]?.trim() ?? '';
|
|
30
|
+
// Parse metadata sections
|
|
31
|
+
const metadata = {
|
|
32
|
+
purpose: '',
|
|
33
|
+
publicInterface: [],
|
|
34
|
+
dependencies: [],
|
|
35
|
+
patterns: [],
|
|
36
|
+
};
|
|
37
|
+
// Extract purpose from summary (first paragraph after any heading)
|
|
38
|
+
const purposeMatch = summary.match(/##?\s*Purpose\n([\s\S]*?)(?=\n##|\n\n##|$)/i);
|
|
39
|
+
if (purposeMatch) {
|
|
40
|
+
metadata.purpose = purposeMatch[1].trim();
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
summary,
|
|
44
|
+
metadata,
|
|
45
|
+
fileType,
|
|
46
|
+
generatedAt,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Format .sum file content for writing.
|
|
55
|
+
*/
|
|
56
|
+
function formatSumFile(content) {
|
|
57
|
+
const frontmatter = [
|
|
58
|
+
'---',
|
|
59
|
+
`file_type: ${content.fileType}`,
|
|
60
|
+
`generated_at: ${content.generatedAt}`,
|
|
61
|
+
'---',
|
|
62
|
+
'',
|
|
63
|
+
].join('\n');
|
|
64
|
+
return frontmatter + content.summary;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Write a .sum file alongside a source file.
|
|
68
|
+
* Creates: foo.ts -> foo.ts.sum
|
|
69
|
+
*
|
|
70
|
+
* @param sourcePath - Path to the source file
|
|
71
|
+
* @param content - Summary content to write
|
|
72
|
+
* @returns Path to the written .sum file
|
|
73
|
+
*/
|
|
74
|
+
export async function writeSumFile(sourcePath, content) {
|
|
75
|
+
const sumPath = `${sourcePath}.sum`;
|
|
76
|
+
const dir = path.dirname(sumPath);
|
|
77
|
+
// Ensure directory exists
|
|
78
|
+
await mkdir(dir, { recursive: true });
|
|
79
|
+
// Write file
|
|
80
|
+
const formatted = formatSumFile(content);
|
|
81
|
+
await writeFile(sumPath, formatted, 'utf-8');
|
|
82
|
+
return sumPath;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get the .sum path for a source file.
|
|
86
|
+
*/
|
|
87
|
+
export function getSumPath(sourcePath) {
|
|
88
|
+
return `${sourcePath}.sum`;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if a .sum file exists for a source file.
|
|
92
|
+
*/
|
|
93
|
+
export async function sumFileExists(sourcePath) {
|
|
94
|
+
const sumPath = getSumPath(sourcePath);
|
|
95
|
+
const content = await readSumFile(sumPath);
|
|
96
|
+
return content !== null;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=sum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sum.js","sourceRoot":"","sources":["../../../src/generation/writers/sum.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ComplexityMetrics } from '../complexity.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for supplementary documentation.
|
|
4
|
+
*/
|
|
5
|
+
export interface SupplementaryConfig {
|
|
6
|
+
/** Output directory (default: project root) */
|
|
7
|
+
outputDir?: string;
|
|
8
|
+
/** Whether to generate ARCHITECTURE.md */
|
|
9
|
+
generateArchitecture: boolean;
|
|
10
|
+
/** Whether to generate STACK.md */
|
|
11
|
+
generateStack: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Information about the technology stack.
|
|
15
|
+
*/
|
|
16
|
+
export interface StackInfo {
|
|
17
|
+
/** Runtime environment */
|
|
18
|
+
runtime: string;
|
|
19
|
+
/** Primary framework */
|
|
20
|
+
framework?: string;
|
|
21
|
+
/** Key dependencies grouped by category */
|
|
22
|
+
dependencies: Record<string, Array<{
|
|
23
|
+
name: string;
|
|
24
|
+
version: string;
|
|
25
|
+
purpose?: string;
|
|
26
|
+
}>>;
|
|
27
|
+
/** Development tools */
|
|
28
|
+
devTools: string[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build ARCHITECTURE.md content from complexity metrics.
|
|
32
|
+
*
|
|
33
|
+
* This generates a template that the host LLM will expand with actual
|
|
34
|
+
* architectural analysis.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildArchitectureMd(metrics: ComplexityMetrics, projectName: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Build STACK.md content from package.json analysis.
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildStackMd(stackInfo: StackInfo, projectName: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Parse package.json to extract stack information.
|
|
43
|
+
*/
|
|
44
|
+
export declare function analyzePackageJson(packageJsonPath: string): Promise<StackInfo | null>;
|
|
45
|
+
/**
|
|
46
|
+
* Write ARCHITECTURE.md to the configured location.
|
|
47
|
+
*/
|
|
48
|
+
export declare function writeArchitectureMd(projectRoot: string, metrics: ComplexityMetrics, config: SupplementaryConfig): Promise<string | null>;
|
|
49
|
+
/**
|
|
50
|
+
* Write STACK.md to the configured location.
|
|
51
|
+
*/
|
|
52
|
+
export declare function writeStackMd(projectRoot: string, config: SupplementaryConfig): Promise<string | null>;
|
|
53
|
+
//# sourceMappingURL=supplementary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supplementary.d.ts","sourceRoot":"","sources":["../../../src/generation/writers/supplementary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mCAAmC;IACnC,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACzF,wBAAwB;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,MAAM,GAClB,MAAM,CAsCR;AA4BD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,GAClB,MAAM,CAoCR;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA+D3B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB"}
|