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 @@
|
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/cli/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI generate command
|
|
3
|
+
*
|
|
4
|
+
* Creates a documentation generation plan by:
|
|
5
|
+
* 1. Discovering files to analyze
|
|
6
|
+
* 2. Detecting file types
|
|
7
|
+
* 3. Creating analysis tasks with prompts
|
|
8
|
+
* 4. Tracking token budget
|
|
9
|
+
*
|
|
10
|
+
* With --execute flag, outputs tasks as JSON for AI agent execution.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Options for the generate command.
|
|
14
|
+
*/
|
|
15
|
+
export interface GenerateOptions {
|
|
16
|
+
/** Suppress output except errors */
|
|
17
|
+
quiet?: boolean;
|
|
18
|
+
/** Show detailed task breakdown */
|
|
19
|
+
verbose?: boolean;
|
|
20
|
+
/** Dry run - show plan without generating */
|
|
21
|
+
dryRun?: boolean;
|
|
22
|
+
/** Override token budget */
|
|
23
|
+
budget?: number;
|
|
24
|
+
/** Execute mode - output JSON for AI agent execution */
|
|
25
|
+
execute?: boolean;
|
|
26
|
+
/** Stream mode - output tasks one per line */
|
|
27
|
+
stream?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generate command - creates documentation generation plan.
|
|
31
|
+
*
|
|
32
|
+
* This command:
|
|
33
|
+
* 1. Discovers files to analyze
|
|
34
|
+
* 2. Detects file types
|
|
35
|
+
* 3. Creates analysis tasks (prompts)
|
|
36
|
+
* 4. Reports budget and plan
|
|
37
|
+
*
|
|
38
|
+
* The actual analysis is performed by the host LLM using the generated prompts.
|
|
39
|
+
*/
|
|
40
|
+
export declare function generateCommand(targetPath: string, options: GenerateOptions): Promise<void>;
|
|
41
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAyED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CA8Gf"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI generate command
|
|
3
|
+
*
|
|
4
|
+
* Creates a documentation generation plan by:
|
|
5
|
+
* 1. Discovering files to analyze
|
|
6
|
+
* 2. Detecting file types
|
|
7
|
+
* 3. Creating analysis tasks with prompts
|
|
8
|
+
* 4. Tracking token budget
|
|
9
|
+
*
|
|
10
|
+
* With --execute flag, outputs tasks as JSON for AI agent execution.
|
|
11
|
+
*/
|
|
12
|
+
import * as path from 'node:path';
|
|
13
|
+
import { loadConfig } from '../config/loader.js';
|
|
14
|
+
import { createLogger } from '../output/logger.js';
|
|
15
|
+
import { walkDirectory } from '../discovery/walker.js';
|
|
16
|
+
import { applyFilters, createGitignoreFilter, createVendorFilter, createBinaryFilter, createCustomFilter, } from '../discovery/filters/index.js';
|
|
17
|
+
import { createOrchestrator } from '../generation/orchestrator.js';
|
|
18
|
+
import { buildExecutionPlan, formatExecutionPlanAsJson, streamTasks } from '../generation/executor.js';
|
|
19
|
+
/**
|
|
20
|
+
* Format file type distribution for display.
|
|
21
|
+
*/
|
|
22
|
+
function formatTypeDistribution(plan) {
|
|
23
|
+
const typeCounts = new Map();
|
|
24
|
+
for (const file of plan.files) {
|
|
25
|
+
const count = typeCounts.get(file.fileType) ?? 0;
|
|
26
|
+
typeCounts.set(file.fileType, count + 1);
|
|
27
|
+
}
|
|
28
|
+
return Array.from(typeCounts.entries())
|
|
29
|
+
.sort((a, b) => b[1] - a[1])
|
|
30
|
+
.map(([type, count]) => ` ${type}: ${count}`)
|
|
31
|
+
.join('\n');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Format the generation plan for display.
|
|
35
|
+
*/
|
|
36
|
+
function formatPlan(plan) {
|
|
37
|
+
const lines = [];
|
|
38
|
+
lines.push(`\n=== Generation Plan ===\n`);
|
|
39
|
+
// File summary
|
|
40
|
+
lines.push(`Files to analyze: ${plan.files.length}`);
|
|
41
|
+
lines.push(`Tasks to execute: ${plan.tasks.length}`);
|
|
42
|
+
lines.push('');
|
|
43
|
+
// File type distribution
|
|
44
|
+
lines.push('File types:');
|
|
45
|
+
lines.push(formatTypeDistribution(plan));
|
|
46
|
+
lines.push('');
|
|
47
|
+
// Budget
|
|
48
|
+
lines.push('Token budget:');
|
|
49
|
+
lines.push(` Total: ${plan.budget.total.toLocaleString()}`);
|
|
50
|
+
lines.push(` Estimated: ${plan.budget.estimated.toLocaleString()}`);
|
|
51
|
+
lines.push(` Remaining: ${plan.budget.remaining.toLocaleString()}`);
|
|
52
|
+
lines.push('');
|
|
53
|
+
// Complexity
|
|
54
|
+
lines.push('Complexity:');
|
|
55
|
+
lines.push(` Files: ${plan.complexity.fileCount}`);
|
|
56
|
+
lines.push(` Directory depth: ${plan.complexity.directoryDepth}`);
|
|
57
|
+
if (plan.complexity.architecturalPatterns.length > 0) {
|
|
58
|
+
lines.push(` Patterns: ${plan.complexity.architecturalPatterns.join(', ')}`);
|
|
59
|
+
}
|
|
60
|
+
lines.push('');
|
|
61
|
+
// Supplementary docs
|
|
62
|
+
lines.push('Supplementary docs:');
|
|
63
|
+
lines.push(` ARCHITECTURE.md: ${plan.generateArchitecture ? 'yes' : 'no'}`);
|
|
64
|
+
lines.push(` STACK.md: ${plan.generateStack ? 'yes' : 'no'}`);
|
|
65
|
+
lines.push('');
|
|
66
|
+
// Skipped files
|
|
67
|
+
if (plan.skippedFiles.length > 0) {
|
|
68
|
+
lines.push(`Skipped (budget): ${plan.skippedFiles.length} files`);
|
|
69
|
+
if (plan.skippedFiles.length <= 5) {
|
|
70
|
+
for (const file of plan.skippedFiles) {
|
|
71
|
+
lines.push(` - ${file}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
lines.push('');
|
|
75
|
+
}
|
|
76
|
+
return lines.join('\n');
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Generate command - creates documentation generation plan.
|
|
80
|
+
*
|
|
81
|
+
* This command:
|
|
82
|
+
* 1. Discovers files to analyze
|
|
83
|
+
* 2. Detects file types
|
|
84
|
+
* 3. Creates analysis tasks (prompts)
|
|
85
|
+
* 4. Reports budget and plan
|
|
86
|
+
*
|
|
87
|
+
* The actual analysis is performed by the host LLM using the generated prompts.
|
|
88
|
+
*/
|
|
89
|
+
export async function generateCommand(targetPath, options) {
|
|
90
|
+
const absolutePath = path.resolve(targetPath);
|
|
91
|
+
// In execute/stream mode, suppress all non-JSON output
|
|
92
|
+
const isJsonMode = options.execute || options.stream;
|
|
93
|
+
const logger = createLogger({
|
|
94
|
+
colors: !isJsonMode,
|
|
95
|
+
verbose: options.verbose ?? false,
|
|
96
|
+
quiet: isJsonMode || (options.quiet ?? false),
|
|
97
|
+
showExcluded: false,
|
|
98
|
+
});
|
|
99
|
+
logger.info(`Generating documentation plan for: ${absolutePath}`);
|
|
100
|
+
// Load configuration
|
|
101
|
+
const config = await loadConfig(absolutePath);
|
|
102
|
+
// Override budget if specified
|
|
103
|
+
if (options.budget) {
|
|
104
|
+
config.generation.tokenBudget = options.budget;
|
|
105
|
+
}
|
|
106
|
+
// Discover files
|
|
107
|
+
logger.info('Discovering files...');
|
|
108
|
+
// Create filters in order (same as discover command)
|
|
109
|
+
const gitignoreFilter = await createGitignoreFilter(absolutePath);
|
|
110
|
+
const vendorFilter = createVendorFilter(config.exclude.vendorDirs);
|
|
111
|
+
const binaryFilter = createBinaryFilter({
|
|
112
|
+
maxFileSize: config.options.maxFileSize,
|
|
113
|
+
additionalExtensions: config.exclude.binaryExtensions,
|
|
114
|
+
});
|
|
115
|
+
const customFilter = createCustomFilter(config.exclude.patterns, absolutePath);
|
|
116
|
+
const filters = [gitignoreFilter, vendorFilter, binaryFilter, customFilter];
|
|
117
|
+
// Walk directory
|
|
118
|
+
const files = await walkDirectory({
|
|
119
|
+
cwd: absolutePath,
|
|
120
|
+
followSymlinks: config.options.followSymlinks,
|
|
121
|
+
});
|
|
122
|
+
// Apply filters
|
|
123
|
+
const filterResult = await applyFilters(files, filters);
|
|
124
|
+
// Create discovery result for orchestrator
|
|
125
|
+
const discoveryResult = {
|
|
126
|
+
files: filterResult.included,
|
|
127
|
+
excluded: filterResult.excluded.map(e => ({ path: e.path, reason: e.reason })),
|
|
128
|
+
};
|
|
129
|
+
logger.info(`Found ${discoveryResult.files.length} files to analyze`);
|
|
130
|
+
// Create generation plan
|
|
131
|
+
logger.info('Creating generation plan...');
|
|
132
|
+
const orchestrator = createOrchestrator(config, absolutePath, discoveryResult.files.length);
|
|
133
|
+
const plan = await orchestrator.createPlan(discoveryResult);
|
|
134
|
+
// Display plan (skip in JSON mode)
|
|
135
|
+
if (!options.quiet && !isJsonMode) {
|
|
136
|
+
console.log(formatPlan(plan));
|
|
137
|
+
}
|
|
138
|
+
if (options.dryRun) {
|
|
139
|
+
logger.info('Dry run complete. No files written.');
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// Execute mode - output JSON for AI agent execution
|
|
143
|
+
if (options.execute || options.stream) {
|
|
144
|
+
const executionPlan = buildExecutionPlan(plan, absolutePath);
|
|
145
|
+
if (options.stream) {
|
|
146
|
+
// Stream mode - one task per line for incremental processing
|
|
147
|
+
for (const line of streamTasks(executionPlan)) {
|
|
148
|
+
console.log(line);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// Full JSON output
|
|
153
|
+
console.log(formatExecutionPlanAsJson(executionPlan));
|
|
154
|
+
}
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// Default: Output task instructions for the host LLM
|
|
158
|
+
console.log('\n=== Ready for Analysis ===\n');
|
|
159
|
+
console.log(`This plan contains ${plan.tasks.length} analysis tasks.`);
|
|
160
|
+
console.log('The host LLM will process each file and generate summaries.');
|
|
161
|
+
console.log('\nTo proceed, the host should:');
|
|
162
|
+
console.log('1. Read each file and its prompt');
|
|
163
|
+
console.log('2. Generate summaries following the prompt guidelines');
|
|
164
|
+
console.log('3. Write .sum files alongside source files');
|
|
165
|
+
console.log('4. Generate AGENTS.md for each directory');
|
|
166
|
+
console.log('5. Generate CLAUDE.md at the project root');
|
|
167
|
+
if (plan.generateArchitecture) {
|
|
168
|
+
console.log('6. Generate ARCHITECTURE.md (complexity threshold met)');
|
|
169
|
+
}
|
|
170
|
+
if (plan.generateStack) {
|
|
171
|
+
console.log('7. Generate STACK.md (package.json found)');
|
|
172
|
+
}
|
|
173
|
+
console.log('\nRun with --execute to get JSON output for AI agent execution.');
|
|
174
|
+
console.log('Run with --stream for streaming task output.');
|
|
175
|
+
// Summary
|
|
176
|
+
const budgetReport = orchestrator.getBudgetReport();
|
|
177
|
+
logger.info(`\nPlan ready. Estimated tokens: ${budgetReport.used.toLocaleString()}`);
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI entry point for agents-reverse
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* init Create default configuration
|
|
7
|
+
* discover [path] Discover files to analyze
|
|
8
|
+
* generate [path] Generate documentation plan
|
|
9
|
+
* update [path] Update docs incrementally
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI entry point for agents-reverse
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* init Create default configuration
|
|
7
|
+
* discover [path] Discover files to analyze
|
|
8
|
+
* generate [path] Generate documentation plan
|
|
9
|
+
* update [path] Update docs incrementally
|
|
10
|
+
*/
|
|
11
|
+
import { initCommand } from './init.js';
|
|
12
|
+
import { discoverCommand } from './discover.js';
|
|
13
|
+
import { generateCommand } from './generate.js';
|
|
14
|
+
import { updateCommand } from './update.js';
|
|
15
|
+
const USAGE = `
|
|
16
|
+
agents-reverse-engineer - AI-friendly codebase documentation
|
|
17
|
+
|
|
18
|
+
Commands:
|
|
19
|
+
init Create default configuration
|
|
20
|
+
discover [path] Discover files to analyze (default: current directory)
|
|
21
|
+
generate [path] Generate documentation plan (default: current directory)
|
|
22
|
+
update [path] Update docs incrementally (default: current directory)
|
|
23
|
+
|
|
24
|
+
Options:
|
|
25
|
+
--quiet, -q Suppress output except errors
|
|
26
|
+
--verbose, -v Show detailed output
|
|
27
|
+
--show-excluded List each excluded file (discover only)
|
|
28
|
+
--plan Generate GENERATION-PLAN.md file (discover only)
|
|
29
|
+
--dry-run Show plan without writing files (generate, update)
|
|
30
|
+
--budget <n> Override token budget (generate, update)
|
|
31
|
+
--execute Output JSON execution plan for AI agents (generate)
|
|
32
|
+
--stream Output tasks as streaming JSON, one per line (generate)
|
|
33
|
+
--uncommitted Include uncommitted changes (update only)
|
|
34
|
+
--integration Generate AI assistant command files (init only)
|
|
35
|
+
--help, -h Show this help
|
|
36
|
+
|
|
37
|
+
Examples:
|
|
38
|
+
are init
|
|
39
|
+
are init --integration
|
|
40
|
+
are discover
|
|
41
|
+
are discover --plan
|
|
42
|
+
are generate --dry-run
|
|
43
|
+
are generate --execute
|
|
44
|
+
are generate ./my-project --budget 50000
|
|
45
|
+
are update
|
|
46
|
+
are update --uncommitted --verbose
|
|
47
|
+
`;
|
|
48
|
+
/**
|
|
49
|
+
* Parse command-line arguments.
|
|
50
|
+
*
|
|
51
|
+
* Extracts the command, positional arguments, and flags.
|
|
52
|
+
* Handles global flags (--help, -h) that may appear before the command.
|
|
53
|
+
*/
|
|
54
|
+
function parseArgs(args) {
|
|
55
|
+
let command;
|
|
56
|
+
const positional = [];
|
|
57
|
+
const flags = new Set();
|
|
58
|
+
const values = new Map();
|
|
59
|
+
for (let i = 0; i < args.length; i++) {
|
|
60
|
+
const arg = args[i];
|
|
61
|
+
if (arg.startsWith('--')) {
|
|
62
|
+
const flagName = arg.slice(2);
|
|
63
|
+
// Check if next arg is a value (not starting with -)
|
|
64
|
+
if (i + 1 < args.length && !args[i + 1].startsWith('-')) {
|
|
65
|
+
values.set(flagName, args[i + 1]);
|
|
66
|
+
i++; // Skip the value
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
flags.add(flagName);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else if (arg.startsWith('-')) {
|
|
73
|
+
// Handle short flags (e.g., -q, -h, -v)
|
|
74
|
+
for (const char of arg.slice(1)) {
|
|
75
|
+
switch (char) {
|
|
76
|
+
case 'q':
|
|
77
|
+
flags.add('quiet');
|
|
78
|
+
break;
|
|
79
|
+
case 'h':
|
|
80
|
+
flags.add('help');
|
|
81
|
+
break;
|
|
82
|
+
case 'v':
|
|
83
|
+
flags.add('verbose');
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
// Unknown short flag - ignore
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else if (!command) {
|
|
92
|
+
// First non-flag argument is the command
|
|
93
|
+
command = arg;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// Subsequent non-flag arguments are positional
|
|
97
|
+
positional.push(arg);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return { command, positional, flags, values };
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Show usage information and exit.
|
|
104
|
+
*/
|
|
105
|
+
function showHelp() {
|
|
106
|
+
console.log(USAGE);
|
|
107
|
+
process.exit(0);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Show error for unknown command and exit.
|
|
111
|
+
*/
|
|
112
|
+
function showUnknownCommand(command) {
|
|
113
|
+
console.error(`Unknown command: ${command}`);
|
|
114
|
+
console.error(`Run 'are --help' for usage information.`);
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Main CLI entry point.
|
|
119
|
+
*/
|
|
120
|
+
async function main() {
|
|
121
|
+
const args = process.argv.slice(2);
|
|
122
|
+
const { command, positional, flags, values } = parseArgs(args);
|
|
123
|
+
// Handle help flag anywhere
|
|
124
|
+
if (flags.has('help') || args.length === 0) {
|
|
125
|
+
showHelp();
|
|
126
|
+
}
|
|
127
|
+
// Route to command handlers
|
|
128
|
+
switch (command) {
|
|
129
|
+
case 'init': {
|
|
130
|
+
const options = {
|
|
131
|
+
interactive: flags.has('interactive'),
|
|
132
|
+
integration: flags.has('integration'),
|
|
133
|
+
};
|
|
134
|
+
await initCommand(positional[0] || '.', options);
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
case 'discover': {
|
|
138
|
+
const options = {
|
|
139
|
+
quiet: flags.has('quiet'),
|
|
140
|
+
showExcluded: flags.has('show-excluded'),
|
|
141
|
+
verbose: !flags.has('quiet'),
|
|
142
|
+
plan: flags.has('plan'),
|
|
143
|
+
};
|
|
144
|
+
await discoverCommand(positional[0] || '.', options);
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
case 'generate': {
|
|
148
|
+
const options = {
|
|
149
|
+
quiet: flags.has('quiet'),
|
|
150
|
+
verbose: flags.has('verbose'),
|
|
151
|
+
dryRun: flags.has('dry-run'),
|
|
152
|
+
budget: values.has('budget') ? parseInt(values.get('budget'), 10) : undefined,
|
|
153
|
+
execute: flags.has('execute'),
|
|
154
|
+
stream: flags.has('stream'),
|
|
155
|
+
};
|
|
156
|
+
await generateCommand(positional[0] || '.', options);
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case 'update': {
|
|
160
|
+
const options = {
|
|
161
|
+
uncommitted: flags.has('uncommitted'),
|
|
162
|
+
quiet: flags.has('quiet'),
|
|
163
|
+
verbose: flags.has('verbose'),
|
|
164
|
+
dryRun: flags.has('dry-run'),
|
|
165
|
+
budget: values.has('budget') ? parseInt(values.get('budget'), 10) : undefined,
|
|
166
|
+
};
|
|
167
|
+
await updateCommand(positional[0] || '.', options);
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
default:
|
|
171
|
+
if (command) {
|
|
172
|
+
showUnknownCommand(command);
|
|
173
|
+
}
|
|
174
|
+
showHelp();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Run main and handle any uncaught errors
|
|
178
|
+
main().catch((err) => {
|
|
179
|
+
console.error(`Error: ${err.message}`);
|
|
180
|
+
process.exit(1);
|
|
181
|
+
});
|
|
182
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `are init` command - Create default configuration
|
|
3
|
+
*
|
|
4
|
+
* Creates the `.agents-reverse/config.yaml` file with documented defaults.
|
|
5
|
+
* Warns if configuration already exists.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Options for the init command.
|
|
9
|
+
*/
|
|
10
|
+
export interface InitOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Run in interactive mode (reserved for future --interactive flag).
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
interactive?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Generate integration files for detected AI assistant environments.
|
|
18
|
+
* @default false
|
|
19
|
+
*/
|
|
20
|
+
integration?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Execute the `are init` command.
|
|
24
|
+
*
|
|
25
|
+
* Creates a default configuration file at `.agents-reverse/config.yaml`.
|
|
26
|
+
* If the file already exists, logs a warning and returns without modification.
|
|
27
|
+
*
|
|
28
|
+
* @param root - Root directory where config will be created
|
|
29
|
+
* @param options - Command options
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* await initCommand('.', { interactive: false });
|
|
34
|
+
* // Creates .agents-reverse/config.yaml in current directory
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function initCommand(root: string, options: InitOptions): Promise<void>;
|
|
38
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEnF"}
|
package/dist/cli/init.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `are init` command - Create default configuration
|
|
3
|
+
*
|
|
4
|
+
* Creates the `.agents-reverse/config.yaml` file with documented defaults.
|
|
5
|
+
* Warns if configuration already exists.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { configExists, writeDefaultConfig, CONFIG_DIR, CONFIG_FILE } from '../config/loader.js';
|
|
9
|
+
import { createLogger } from '../output/logger.js';
|
|
10
|
+
/**
|
|
11
|
+
* Execute the `are init` command.
|
|
12
|
+
*
|
|
13
|
+
* Creates a default configuration file at `.agents-reverse/config.yaml`.
|
|
14
|
+
* If the file already exists, logs a warning and returns without modification.
|
|
15
|
+
*
|
|
16
|
+
* @param root - Root directory where config will be created
|
|
17
|
+
* @param options - Command options
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* await initCommand('.', { interactive: false });
|
|
22
|
+
* // Creates .agents-reverse/config.yaml in current directory
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export async function initCommand(root, options) {
|
|
26
|
+
const resolvedRoot = path.resolve(root);
|
|
27
|
+
const configPath = path.join(resolvedRoot, CONFIG_DIR, CONFIG_FILE);
|
|
28
|
+
const logger = createLogger({
|
|
29
|
+
verbose: true,
|
|
30
|
+
quiet: false,
|
|
31
|
+
colors: true,
|
|
32
|
+
showExcluded: false,
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
// Check if config already exists
|
|
36
|
+
if (await configExists(resolvedRoot)) {
|
|
37
|
+
logger.warn(`Config already exists at ${configPath}`);
|
|
38
|
+
logger.info('Edit the file to customize exclusions and options.');
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Create default config
|
|
42
|
+
await writeDefaultConfig(resolvedRoot);
|
|
43
|
+
logger.info(`Created configuration at ${configPath}`);
|
|
44
|
+
logger.info('');
|
|
45
|
+
logger.info('Edit the file to customize:');
|
|
46
|
+
logger.info(' - exclude.patterns: Add custom glob patterns to exclude');
|
|
47
|
+
logger.info(' - exclude.vendorDirs: Modify vendor directories list');
|
|
48
|
+
logger.info(' - options.maxFileSize: Adjust large file threshold');
|
|
49
|
+
// Handle integration file generation
|
|
50
|
+
if (options.integration) {
|
|
51
|
+
const { generateIntegrationFiles } = await import('../integration/generate.js');
|
|
52
|
+
const results = await generateIntegrationFiles(resolvedRoot);
|
|
53
|
+
if (results.length === 0) {
|
|
54
|
+
logger.info('');
|
|
55
|
+
logger.info('No AI assistant environments detected.');
|
|
56
|
+
logger.info('Integration files will be created when .claude/ or .opencode/ exists.');
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
for (const result of results) {
|
|
60
|
+
logger.info('');
|
|
61
|
+
logger.info(`${result.environment} integration:`);
|
|
62
|
+
if (result.filesCreated.length > 0) {
|
|
63
|
+
logger.info(` Created: ${result.filesCreated.join(', ')}`);
|
|
64
|
+
}
|
|
65
|
+
if (result.filesSkipped.length > 0) {
|
|
66
|
+
logger.info(` Skipped (already exist): ${result.filesSkipped.join(', ')}`);
|
|
67
|
+
}
|
|
68
|
+
if (result.environment === 'claude') {
|
|
69
|
+
logger.info('');
|
|
70
|
+
logger.info('Note: Add SessionEnd hook to .claude/settings.json manually:');
|
|
71
|
+
logger.info(' "hooks": { "SessionEnd": [".claude/hooks/ar-session-end.js"] }');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
logger.info('');
|
|
78
|
+
logger.info('Run with --integration to set up AI assistant commands');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
const error = err;
|
|
83
|
+
// Permission error
|
|
84
|
+
if (error.code === 'EACCES' || error.code === 'EPERM') {
|
|
85
|
+
logger.error(`Permission denied: Cannot create ${configPath}`);
|
|
86
|
+
logger.info('Check that you have write permissions to this directory.');
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
// Other error
|
|
90
|
+
logger.error(`Failed to create configuration: ${error.message}`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for the update command.
|
|
3
|
+
*/
|
|
4
|
+
export interface UpdateCommandOptions {
|
|
5
|
+
/** Include uncommitted changes (staged + working directory) */
|
|
6
|
+
uncommitted?: boolean;
|
|
7
|
+
/** Suppress output except errors */
|
|
8
|
+
quiet?: boolean;
|
|
9
|
+
/** Show detailed output */
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
/** Dry run - show plan without making changes */
|
|
12
|
+
dryRun?: boolean;
|
|
13
|
+
/** Override token budget */
|
|
14
|
+
budget?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Update command - incrementally updates documentation based on git changes.
|
|
18
|
+
*
|
|
19
|
+
* This command:
|
|
20
|
+
* 1. Checks git repository status
|
|
21
|
+
* 2. Detects files changed since last run
|
|
22
|
+
* 3. Cleans up orphaned .sum files
|
|
23
|
+
* 4. Analyzes changed files and generates .sum files
|
|
24
|
+
* 5. Regenerates AGENTS.md for affected directories
|
|
25
|
+
* 6. Records update state for next run
|
|
26
|
+
*/
|
|
27
|
+
export declare function updateCommand(targetPath: string, options: UpdateCommandOptions): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkND;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA0Hf"}
|