monarch-code-graph 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +485 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +100 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/analyze.d.ts +8 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +76 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/diff.d.ts +8 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +203 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/graph.d.ts +12 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +72 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/help.d.ts +2 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +234 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +37 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +7 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +148 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/run.d.ts +10 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +388 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/serve.d.ts +8 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +137 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/queries/calls.ql +53 -0
- package/dist/queries/dataflow.ql +62 -0
- package/dist/queries/functions.ql +52 -0
- package/dist/utils/ascii-graph.d.ts +21 -0
- package/dist/utils/ascii-graph.d.ts.map +1 -0
- package/dist/utils/ascii-graph.js +431 -0
- package/dist/utils/ascii-graph.js.map +1 -0
- package/dist/utils/output.d.ts +12 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +24 -0
- package/dist/utils/output.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface DiffOptions {
|
|
2
|
+
format: 'text' | 'json' | 'markdown';
|
|
3
|
+
exitOnChanges: boolean;
|
|
4
|
+
only?: 'functions' | 'modules' | 'edges';
|
|
5
|
+
}
|
|
6
|
+
export declare function diffCommand(baselinePath: string, currentPath: string, options: DiffOptions): Promise<void>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;CAC1C;AA0BD,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { isCodeFlowArtifact } from '@codeflow/shared';
|
|
5
|
+
import { log, formatPath, formatDiff } from '../utils/output.js';
|
|
6
|
+
export async function diffCommand(baselinePath, currentPath, options) {
|
|
7
|
+
const baseline = loadArtifact(baselinePath, 'Baseline');
|
|
8
|
+
const current = loadArtifact(currentPath, 'Current');
|
|
9
|
+
if (!baseline || !current) {
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
const diff = calculateDiff(baseline, current);
|
|
13
|
+
switch (options.format) {
|
|
14
|
+
case 'json':
|
|
15
|
+
console.log(JSON.stringify(diff, null, 2));
|
|
16
|
+
break;
|
|
17
|
+
case 'markdown':
|
|
18
|
+
printMarkdownDiff(diff, baselinePath, currentPath, options.only);
|
|
19
|
+
break;
|
|
20
|
+
default:
|
|
21
|
+
printTextDiff(diff, baselinePath, currentPath, options.only);
|
|
22
|
+
}
|
|
23
|
+
if (options.exitOnChanges && diff.hasChanges) {
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function loadArtifact(filePath, label) {
|
|
28
|
+
const absolutePath = path.resolve(filePath);
|
|
29
|
+
if (!fs.existsSync(absolutePath)) {
|
|
30
|
+
log.error(`${label} artifact not found: ${formatPath(absolutePath)}`);
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const content = fs.readFileSync(absolutePath, 'utf-8');
|
|
35
|
+
const artifact = JSON.parse(content);
|
|
36
|
+
if (!isCodeFlowArtifact(artifact)) {
|
|
37
|
+
log.error(`${label} file is not a valid Monarch artifact`);
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
return artifact;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
log.error(`Failed to parse ${label} artifact: ${error}`);
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function calculateDiff(baseline, current) {
|
|
48
|
+
const baselineFnIds = new Set(baseline.nodes.functions.map((fn) => fn.id));
|
|
49
|
+
const currentFnIds = new Set(current.nodes.functions.map((fn) => fn.id));
|
|
50
|
+
const addedFunctions = current.nodes.functions
|
|
51
|
+
.filter((fn) => !baselineFnIds.has(fn.id))
|
|
52
|
+
.map((fn) => `${fn.name} (${fn.file}:${fn.startLine})`);
|
|
53
|
+
const removedFunctions = baseline.nodes.functions
|
|
54
|
+
.filter((fn) => !currentFnIds.has(fn.id))
|
|
55
|
+
.map((fn) => `${fn.name} (${fn.file}:${fn.startLine})`);
|
|
56
|
+
const baselineModIds = new Set(baseline.nodes.modules.map((m) => m.id));
|
|
57
|
+
const currentModIds = new Set(current.nodes.modules.map((m) => m.id));
|
|
58
|
+
const addedModules = current.nodes.modules
|
|
59
|
+
.filter((m) => !baselineModIds.has(m.id))
|
|
60
|
+
.map((m) => m.path);
|
|
61
|
+
const removedModules = baseline.nodes.modules
|
|
62
|
+
.filter((m) => !currentModIds.has(m.id))
|
|
63
|
+
.map((m) => m.path);
|
|
64
|
+
const edgeKey = (e) => `${e.from}->${e.to}`;
|
|
65
|
+
const baselineCallEdges = new Set(baseline.edges.calls.map(edgeKey));
|
|
66
|
+
const currentCallEdges = new Set(current.edges.calls.map(edgeKey));
|
|
67
|
+
const addedCallEdges = current.edges.calls
|
|
68
|
+
.filter((e) => !baselineCallEdges.has(edgeKey(e)))
|
|
69
|
+
.map((e) => formatEdge(e, current));
|
|
70
|
+
const removedCallEdges = baseline.edges.calls
|
|
71
|
+
.filter((e) => !currentCallEdges.has(edgeKey(e)))
|
|
72
|
+
.map((e) => formatEdge(e, baseline));
|
|
73
|
+
const baselineDataflowEdges = new Set(baseline.edges.dataflow.map(edgeKey));
|
|
74
|
+
const currentDataflowEdges = new Set(current.edges.dataflow.map(edgeKey));
|
|
75
|
+
const addedDataflowEdges = current.edges.dataflow
|
|
76
|
+
.filter((e) => !baselineDataflowEdges.has(edgeKey(e)))
|
|
77
|
+
.map((e) => formatEdge(e, current));
|
|
78
|
+
const removedDataflowEdges = baseline.edges.dataflow
|
|
79
|
+
.filter((e) => !currentDataflowEdges.has(edgeKey(e)))
|
|
80
|
+
.map((e) => formatEdge(e, baseline));
|
|
81
|
+
const hasChanges = addedFunctions.length > 0 ||
|
|
82
|
+
removedFunctions.length > 0 ||
|
|
83
|
+
addedModules.length > 0 ||
|
|
84
|
+
removedModules.length > 0 ||
|
|
85
|
+
addedCallEdges.length > 0 ||
|
|
86
|
+
removedCallEdges.length > 0 ||
|
|
87
|
+
addedDataflowEdges.length > 0 ||
|
|
88
|
+
removedDataflowEdges.length > 0;
|
|
89
|
+
return {
|
|
90
|
+
hasChanges,
|
|
91
|
+
summary: {
|
|
92
|
+
functionsAdded: addedFunctions.length,
|
|
93
|
+
functionsRemoved: removedFunctions.length,
|
|
94
|
+
modulesAdded: addedModules.length,
|
|
95
|
+
modulesRemoved: removedModules.length,
|
|
96
|
+
callEdgesAdded: addedCallEdges.length,
|
|
97
|
+
callEdgesRemoved: removedCallEdges.length,
|
|
98
|
+
dataflowEdgesAdded: addedDataflowEdges.length,
|
|
99
|
+
dataflowEdgesRemoved: removedDataflowEdges.length,
|
|
100
|
+
},
|
|
101
|
+
details: {
|
|
102
|
+
addedFunctions,
|
|
103
|
+
removedFunctions,
|
|
104
|
+
addedModules,
|
|
105
|
+
removedModules,
|
|
106
|
+
addedCallEdges,
|
|
107
|
+
removedCallEdges,
|
|
108
|
+
addedDataflowEdges,
|
|
109
|
+
removedDataflowEdges,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function formatEdge(edge, artifact) {
|
|
114
|
+
const fromFn = artifact.nodes.functions.find((fn) => fn.id === edge.from);
|
|
115
|
+
const toFn = artifact.nodes.functions.find((fn) => fn.id === edge.to);
|
|
116
|
+
return `${fromFn?.name || edge.from} → ${toFn?.name || edge.to}`;
|
|
117
|
+
}
|
|
118
|
+
function printTextDiff(diff, baselinePath, currentPath, only) {
|
|
119
|
+
log.title('Monarch Graph Diff');
|
|
120
|
+
console.log(chalk.dim(`Baseline: ${baselinePath}`));
|
|
121
|
+
console.log(chalk.dim(`Current: ${currentPath}`));
|
|
122
|
+
console.log('');
|
|
123
|
+
if (!diff.hasChanges) {
|
|
124
|
+
log.success('No changes detected');
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
console.log(chalk.bold('Summary:'));
|
|
128
|
+
if (!only || only === 'functions') {
|
|
129
|
+
console.log(` Functions: ${formatDiff(diff.summary.functionsAdded, diff.summary.functionsRemoved)}`);
|
|
130
|
+
}
|
|
131
|
+
if (!only || only === 'modules') {
|
|
132
|
+
console.log(` Modules: ${formatDiff(diff.summary.modulesAdded, diff.summary.modulesRemoved)}`);
|
|
133
|
+
}
|
|
134
|
+
if (!only || only === 'edges') {
|
|
135
|
+
console.log(` Call Edges: ${formatDiff(diff.summary.callEdgesAdded, diff.summary.callEdgesRemoved)}`);
|
|
136
|
+
console.log(` Dataflow Edges: ${formatDiff(diff.summary.dataflowEdgesAdded, diff.summary.dataflowEdgesRemoved)}`);
|
|
137
|
+
}
|
|
138
|
+
console.log('');
|
|
139
|
+
if ((!only || only === 'functions') && diff.details.addedFunctions.length > 0) {
|
|
140
|
+
console.log(chalk.green.bold('Added Functions:'));
|
|
141
|
+
diff.details.addedFunctions.forEach((fn) => console.log(chalk.green(` + ${fn}`)));
|
|
142
|
+
console.log('');
|
|
143
|
+
}
|
|
144
|
+
if ((!only || only === 'functions') && diff.details.removedFunctions.length > 0) {
|
|
145
|
+
console.log(chalk.red.bold('Removed Functions:'));
|
|
146
|
+
diff.details.removedFunctions.forEach((fn) => console.log(chalk.red(` - ${fn}`)));
|
|
147
|
+
console.log('');
|
|
148
|
+
}
|
|
149
|
+
if ((!only || only === 'modules') && diff.details.addedModules.length > 0) {
|
|
150
|
+
console.log(chalk.green.bold('Added Modules:'));
|
|
151
|
+
diff.details.addedModules.forEach((m) => console.log(chalk.green(` + ${m}`)));
|
|
152
|
+
console.log('');
|
|
153
|
+
}
|
|
154
|
+
if ((!only || only === 'modules') && diff.details.removedModules.length > 0) {
|
|
155
|
+
console.log(chalk.red.bold('Removed Modules:'));
|
|
156
|
+
diff.details.removedModules.forEach((m) => console.log(chalk.red(` - ${m}`)));
|
|
157
|
+
console.log('');
|
|
158
|
+
}
|
|
159
|
+
if ((!only || only === 'edges') && diff.details.addedCallEdges.length > 0) {
|
|
160
|
+
console.log(chalk.green.bold('Added Call Edges:'));
|
|
161
|
+
diff.details.addedCallEdges.forEach((e) => console.log(chalk.green(` + ${e}`)));
|
|
162
|
+
console.log('');
|
|
163
|
+
}
|
|
164
|
+
if ((!only || only === 'edges') && diff.details.removedCallEdges.length > 0) {
|
|
165
|
+
console.log(chalk.red.bold('Removed Call Edges:'));
|
|
166
|
+
diff.details.removedCallEdges.forEach((e) => console.log(chalk.red(` - ${e}`)));
|
|
167
|
+
console.log('');
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function printMarkdownDiff(diff, baselinePath, currentPath, only) {
|
|
171
|
+
console.log('# Monarch Graph Diff\n');
|
|
172
|
+
console.log(`- **Baseline:** \`${baselinePath}\``);
|
|
173
|
+
console.log(`- **Current:** \`${currentPath}\`\n`);
|
|
174
|
+
if (!diff.hasChanges) {
|
|
175
|
+
console.log('✅ No changes detected\n');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
console.log('## Summary\n');
|
|
179
|
+
console.log('| Category | Added | Removed |');
|
|
180
|
+
console.log('|----------|-------|---------|');
|
|
181
|
+
if (!only || only === 'functions') {
|
|
182
|
+
console.log(`| Functions | ${diff.summary.functionsAdded} | ${diff.summary.functionsRemoved} |`);
|
|
183
|
+
}
|
|
184
|
+
if (!only || only === 'modules') {
|
|
185
|
+
console.log(`| Modules | ${diff.summary.modulesAdded} | ${diff.summary.modulesRemoved} |`);
|
|
186
|
+
}
|
|
187
|
+
if (!only || only === 'edges') {
|
|
188
|
+
console.log(`| Call Edges | ${diff.summary.callEdgesAdded} | ${diff.summary.callEdgesRemoved} |`);
|
|
189
|
+
console.log(`| Dataflow Edges | ${diff.summary.dataflowEdgesAdded} | ${diff.summary.dataflowEdgesRemoved} |`);
|
|
190
|
+
}
|
|
191
|
+
console.log('');
|
|
192
|
+
if ((!only || only === 'functions') && diff.details.addedFunctions.length > 0) {
|
|
193
|
+
console.log('### Added Functions\n');
|
|
194
|
+
diff.details.addedFunctions.forEach((fn) => console.log(`- \`${fn}\``));
|
|
195
|
+
console.log('');
|
|
196
|
+
}
|
|
197
|
+
if ((!only || only === 'functions') && diff.details.removedFunctions.length > 0) {
|
|
198
|
+
console.log('### Removed Functions\n');
|
|
199
|
+
diff.details.removedFunctions.forEach((fn) => console.log(`- \`${fn}\``));
|
|
200
|
+
console.log('');
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ViewLevel } from '../utils/ascii-graph.js';
|
|
2
|
+
interface GraphOptions {
|
|
3
|
+
level: ViewLevel;
|
|
4
|
+
expand?: string;
|
|
5
|
+
expandType?: 'component' | 'module';
|
|
6
|
+
list: boolean;
|
|
7
|
+
noColor: boolean;
|
|
8
|
+
width?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function graphCommand(artifactPath: string, options: GraphOptions): Promise<void>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,yBAAyB,CAAC;AAEjC,UAAU,YAAY;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA4Df"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { isCodeFlowArtifact } from '@codeflow/shared';
|
|
4
|
+
import { log, formatPath } from '../utils/output.js';
|
|
5
|
+
import { renderAsciiGraph, renderExpandedView, listExpandableItems, } from '../utils/ascii-graph.js';
|
|
6
|
+
export async function graphCommand(artifactPath, options) {
|
|
7
|
+
const absolutePath = path.resolve(artifactPath);
|
|
8
|
+
// Load artifact
|
|
9
|
+
if (!fs.existsSync(absolutePath)) {
|
|
10
|
+
log.error(`Artifact not found: ${formatPath(absolutePath)}`);
|
|
11
|
+
log.info('Run `monarch analyze` or `monarch run` first to generate a graph');
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
let artifact;
|
|
15
|
+
try {
|
|
16
|
+
const content = fs.readFileSync(absolutePath, 'utf-8');
|
|
17
|
+
artifact = JSON.parse(content);
|
|
18
|
+
if (!isCodeFlowArtifact(artifact)) {
|
|
19
|
+
log.error('Invalid artifact file');
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
log.error(`Failed to read artifact: ${error}`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
const maxWidth = options.width ? parseInt(options.width, 10) : process.stdout.columns || 80;
|
|
28
|
+
const colorize = !options.noColor;
|
|
29
|
+
// List mode - show expandable items
|
|
30
|
+
if (options.list) {
|
|
31
|
+
console.log(listExpandableItems(artifact));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Expand mode - show specific component or module
|
|
35
|
+
if (options.expand) {
|
|
36
|
+
const expandType = options.expandType || detectExpandType(artifact, options.expand);
|
|
37
|
+
if (!expandType) {
|
|
38
|
+
log.error(`Could not find "${options.expand}" as a component or module.`);
|
|
39
|
+
log.info('Use --list to see available components and modules.');
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
const output = renderExpandedView(artifact, options.expand, expandType, {
|
|
43
|
+
maxWidth,
|
|
44
|
+
colorize,
|
|
45
|
+
showEdgeCounts: true,
|
|
46
|
+
});
|
|
47
|
+
console.log(output);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Default mode - show graph at specified level
|
|
51
|
+
const output = renderAsciiGraph(artifact, options.level, {
|
|
52
|
+
maxWidth,
|
|
53
|
+
colorize,
|
|
54
|
+
showEdgeCounts: true,
|
|
55
|
+
});
|
|
56
|
+
console.log(output);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Try to detect if the given name is a component or module
|
|
60
|
+
*/
|
|
61
|
+
function detectExpandType(artifact, name) {
|
|
62
|
+
// Check components first
|
|
63
|
+
const component = artifact.nodes.components.find((c) => c.name === name || c.id === name);
|
|
64
|
+
if (component)
|
|
65
|
+
return 'component';
|
|
66
|
+
// Check modules
|
|
67
|
+
const module = artifact.nodes.modules.find((m) => m.path === name || m.id === name || m.path.endsWith(name));
|
|
68
|
+
if (module)
|
|
69
|
+
return 'module';
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AA2IA,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAUlD"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
const commands = {
|
|
3
|
+
init: {
|
|
4
|
+
name: 'init',
|
|
5
|
+
description: 'Initialize a new Monarch project in the current directory',
|
|
6
|
+
usage: 'monarch init [options]',
|
|
7
|
+
options: [
|
|
8
|
+
{ flag: '-f, --force', description: 'Overwrite existing configuration', default: 'false' },
|
|
9
|
+
],
|
|
10
|
+
examples: [
|
|
11
|
+
'monarch init',
|
|
12
|
+
'monarch init --force',
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
analyze: {
|
|
16
|
+
name: 'analyze',
|
|
17
|
+
alias: 'a',
|
|
18
|
+
description: 'Analyze a codebase and generate a flow artifact containing functions, modules, call edges, and dataflow relationships',
|
|
19
|
+
usage: 'monarch analyze [path] [options]',
|
|
20
|
+
options: [
|
|
21
|
+
{ flag: '-o, --output <path>', description: 'Output artifact file path', default: 'monarch-graph.json' },
|
|
22
|
+
{ flag: '-e, --exporter <name>', description: 'Exporter to use (mock, codeql-ts)', default: 'mock' },
|
|
23
|
+
{ flag: '-w, --watch', description: 'Watch for changes and re-analyze', default: 'false' },
|
|
24
|
+
],
|
|
25
|
+
examples: [
|
|
26
|
+
'monarch analyze',
|
|
27
|
+
'monarch analyze ./src',
|
|
28
|
+
'monarch analyze ./src -o graph.json',
|
|
29
|
+
'monarch analyze ./src --exporter codeql-ts',
|
|
30
|
+
'monarch a ./src -o graph.json',
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
diff: {
|
|
34
|
+
name: 'diff',
|
|
35
|
+
alias: 'd',
|
|
36
|
+
description: 'Compare two graph artifacts and show changes in functions, modules, and edges. Useful for tracking code structure changes between versions',
|
|
37
|
+
usage: 'monarch diff <baseline> <current> [options]',
|
|
38
|
+
options: [
|
|
39
|
+
{ flag: '-f, --format <type>', description: 'Output format (text, json, markdown)', default: 'text' },
|
|
40
|
+
{ flag: '--exit-on-changes', description: 'Exit with code 1 if changes detected (for CI)', default: 'false' },
|
|
41
|
+
{ flag: '--only <type>', description: 'Show only specific changes (functions, modules, edges)' },
|
|
42
|
+
],
|
|
43
|
+
examples: [
|
|
44
|
+
'monarch diff baseline.json current.json',
|
|
45
|
+
'monarch diff baseline.json current.json --format json',
|
|
46
|
+
'monarch diff baseline.json current.json --format markdown',
|
|
47
|
+
'monarch diff baseline.json current.json --exit-on-changes',
|
|
48
|
+
'monarch d old.json new.json --only functions',
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
serve: {
|
|
52
|
+
name: 'serve',
|
|
53
|
+
alias: 's',
|
|
54
|
+
description: 'Start an HTTP server to serve the artifact and visualization UI',
|
|
55
|
+
usage: 'monarch serve [options]',
|
|
56
|
+
options: [
|
|
57
|
+
{ flag: '-p, --port <number>', description: 'Port to serve on', default: '3000' },
|
|
58
|
+
{ flag: '-a, --artifact <path>', description: 'Artifact file path', default: 'monarch-graph.json' },
|
|
59
|
+
{ flag: '--open', description: 'Open browser automatically', default: 'false' },
|
|
60
|
+
],
|
|
61
|
+
examples: [
|
|
62
|
+
'monarch serve',
|
|
63
|
+
'monarch serve --port 8080',
|
|
64
|
+
'monarch serve --artifact my-graph.json --open',
|
|
65
|
+
'monarch s -p 4000',
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
list: {
|
|
69
|
+
name: 'list',
|
|
70
|
+
alias: 'ls',
|
|
71
|
+
description: 'List and inspect contents of a graph artifact including metadata, functions, modules, components, and edges',
|
|
72
|
+
usage: 'monarch list [artifact] [options]',
|
|
73
|
+
options: [
|
|
74
|
+
{ flag: '-t, --type <type>', description: 'Filter by type (functions, modules, components, edges)' },
|
|
75
|
+
{ flag: '--json', description: 'Output as JSON', default: 'false' },
|
|
76
|
+
],
|
|
77
|
+
examples: [
|
|
78
|
+
'monarch list',
|
|
79
|
+
'monarch list my-graph.json',
|
|
80
|
+
'monarch list --type functions',
|
|
81
|
+
'monarch list --json',
|
|
82
|
+
'monarch ls -t modules --json',
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
run: {
|
|
86
|
+
name: 'run',
|
|
87
|
+
alias: 'r',
|
|
88
|
+
description: 'All-in-one command that analyzes the codebase, detects changes from the previous graph, updates the artifact if needed, and starts the visualization server. Perfect for development workflow.',
|
|
89
|
+
usage: 'monarch run [path] [options]',
|
|
90
|
+
options: [
|
|
91
|
+
{ flag: '-o, --output <path>', description: 'Output artifact file path', default: 'monarch-graph.json' },
|
|
92
|
+
{ flag: '-e, --exporter <name>', description: 'Exporter to use (mock, codeql-ts)', default: 'mock' },
|
|
93
|
+
{ flag: '-p, --port <number>', description: 'Port for visualization server', default: '3000' },
|
|
94
|
+
{ flag: '--open', description: 'Open browser automatically', default: 'false' },
|
|
95
|
+
{ flag: '-f, --force', description: 'Force regeneration even if no changes detected', default: 'false' },
|
|
96
|
+
],
|
|
97
|
+
examples: [
|
|
98
|
+
'monarch run',
|
|
99
|
+
'monarch run ./src',
|
|
100
|
+
'monarch run ./src --open',
|
|
101
|
+
'monarch run ./src -p 8080 --open',
|
|
102
|
+
'monarch r ./src -o my-graph.json --force',
|
|
103
|
+
],
|
|
104
|
+
},
|
|
105
|
+
graph: {
|
|
106
|
+
name: 'graph',
|
|
107
|
+
alias: 'g',
|
|
108
|
+
description: 'Render an ASCII graph visualization directly in the terminal. Supports different view levels (components, modules, functions) and can expand specific containers to show their internal structure.',
|
|
109
|
+
usage: 'monarch graph [artifact] [options]',
|
|
110
|
+
options: [
|
|
111
|
+
{ flag: '-l, --level <level>', description: 'View level (components, modules, functions)', default: 'modules' },
|
|
112
|
+
{ flag: '-x, --expand <name>', description: 'Expand a specific component or module by name' },
|
|
113
|
+
{ flag: '--expand-type <type>', description: 'Type of item to expand (component, module)' },
|
|
114
|
+
{ flag: '--list', description: 'List expandable components and modules', default: 'false' },
|
|
115
|
+
{ flag: '--no-color', description: 'Disable colored output' },
|
|
116
|
+
{ flag: '-w, --width <cols>', description: 'Max output width in columns' },
|
|
117
|
+
],
|
|
118
|
+
examples: [
|
|
119
|
+
'monarch graph',
|
|
120
|
+
'monarch graph --level components',
|
|
121
|
+
'monarch graph --level functions',
|
|
122
|
+
'monarch graph --list',
|
|
123
|
+
'monarch graph --expand src-utils',
|
|
124
|
+
'monarch graph -x auth.ts --expand-type module',
|
|
125
|
+
'monarch g -l components',
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
export function helpCommand(command) {
|
|
130
|
+
if (command && commands[command]) {
|
|
131
|
+
printCommandHelp(commands[command]);
|
|
132
|
+
}
|
|
133
|
+
else if (command) {
|
|
134
|
+
console.error(chalk.red(`Unknown command: ${command}`));
|
|
135
|
+
console.log(`\nRun ${chalk.cyan('monarch help')} to see all available commands.`);
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
printGeneralHelp();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function printGeneralHelp() {
|
|
143
|
+
console.log(chalk.bold.cyan(`
|
|
144
|
+
__ __ _
|
|
145
|
+
| \\/ | ___ _ __ __ _ _ __ ___| |__
|
|
146
|
+
| |\\/| |/ _ \\| '_ \\ / _\` | '__/ __| '_ \\
|
|
147
|
+
| | | | (_) | | | | (_| | | | (__| | | |
|
|
148
|
+
|_| |_|\\___/|_| |_|\\__,_|_| \\___|_| |_|
|
|
149
|
+
`));
|
|
150
|
+
console.log(chalk.bold('Monarch') + ' - Static codebase flow mapping and visualization\n');
|
|
151
|
+
console.log(chalk.dim('Analyze TypeScript/JavaScript codebases to extract function call graphs'));
|
|
152
|
+
console.log(chalk.dim('and dataflow relationships for visualization and change tracking.\n'));
|
|
153
|
+
console.log(chalk.bold.underline('USAGE'));
|
|
154
|
+
console.log(` ${chalk.cyan('monarch')} ${chalk.yellow('<command>')} ${chalk.dim('[options]')}\n`);
|
|
155
|
+
console.log(chalk.bold.underline('COMMANDS'));
|
|
156
|
+
console.log();
|
|
157
|
+
const commandList = [
|
|
158
|
+
{ cmd: 'run', alias: 'r', desc: 'Analyze, detect changes, and start server (recommended)' },
|
|
159
|
+
{ cmd: 'init', alias: '', desc: 'Initialize a new Monarch project' },
|
|
160
|
+
{ cmd: 'analyze', alias: 'a', desc: 'Analyze codebase and generate artifact' },
|
|
161
|
+
{ cmd: 'graph', alias: 'g', desc: 'Render ASCII graph in terminal' },
|
|
162
|
+
{ cmd: 'diff', alias: 'd', desc: 'Compare two artifacts for changes' },
|
|
163
|
+
{ cmd: 'serve', alias: 's', desc: 'Start visualization server' },
|
|
164
|
+
{ cmd: 'list', alias: 'ls', desc: 'List artifact contents' },
|
|
165
|
+
{ cmd: 'help', alias: '', desc: 'Show help for a command' },
|
|
166
|
+
];
|
|
167
|
+
for (const { cmd, alias, desc } of commandList) {
|
|
168
|
+
const aliasStr = alias ? chalk.dim(` (${alias})`) : '';
|
|
169
|
+
console.log(` ${chalk.cyan(cmd.padEnd(10))}${aliasStr.padEnd(8)} ${desc}`);
|
|
170
|
+
}
|
|
171
|
+
console.log();
|
|
172
|
+
console.log(chalk.bold.underline('QUICK START'));
|
|
173
|
+
console.log();
|
|
174
|
+
console.log(chalk.dim(' # Fastest way: analyze and visualize in one command'));
|
|
175
|
+
console.log(` ${chalk.green('$')} monarch run ./src --open`);
|
|
176
|
+
console.log();
|
|
177
|
+
console.log(chalk.dim(' # Or step by step:'));
|
|
178
|
+
console.log(` ${chalk.green('$')} monarch init`);
|
|
179
|
+
console.log(` ${chalk.green('$')} monarch analyze ./src`);
|
|
180
|
+
console.log(` ${chalk.green('$')} monarch serve --open`);
|
|
181
|
+
console.log();
|
|
182
|
+
console.log(chalk.dim(' # Compare changes between versions'));
|
|
183
|
+
console.log(` ${chalk.green('$')} monarch diff baseline.json current.json`);
|
|
184
|
+
console.log();
|
|
185
|
+
console.log(chalk.bold.underline('EXPORTERS'));
|
|
186
|
+
console.log();
|
|
187
|
+
console.log(` ${chalk.cyan('mock')} Fast regex-based analysis (default, no dependencies)`);
|
|
188
|
+
console.log(` ${chalk.cyan('codeql-ts')} Production-grade CodeQL analysis (requires CodeQL CLI)`);
|
|
189
|
+
console.log();
|
|
190
|
+
console.log(chalk.bold.underline('EXAMPLES'));
|
|
191
|
+
console.log();
|
|
192
|
+
console.log(chalk.dim(' # Analyze with custom output'));
|
|
193
|
+
console.log(` ${chalk.green('$')} monarch analyze ./src -o my-graph.json`);
|
|
194
|
+
console.log();
|
|
195
|
+
console.log(chalk.dim(' # Use CodeQL for production analysis'));
|
|
196
|
+
console.log(` ${chalk.green('$')} monarch analyze ./src --exporter codeql-ts`);
|
|
197
|
+
console.log();
|
|
198
|
+
console.log(chalk.dim(' # CI pipeline with diff check'));
|
|
199
|
+
console.log(` ${chalk.green('$')} monarch diff baseline.json current.json --exit-on-changes`);
|
|
200
|
+
console.log();
|
|
201
|
+
console.log(chalk.bold.underline('MORE INFORMATION'));
|
|
202
|
+
console.log();
|
|
203
|
+
console.log(` Run ${chalk.cyan('monarch help <command>')} for detailed help on a specific command.`);
|
|
204
|
+
console.log(` Documentation: ${chalk.underline('https://github.com/your-username/monarch')}`);
|
|
205
|
+
console.log();
|
|
206
|
+
}
|
|
207
|
+
function printCommandHelp(cmd) {
|
|
208
|
+
const aliasStr = cmd.alias ? ` ${chalk.dim(`(alias: ${cmd.alias})`)}` : '';
|
|
209
|
+
console.log();
|
|
210
|
+
console.log(chalk.bold.cyan(`monarch ${cmd.name}`) + aliasStr);
|
|
211
|
+
console.log();
|
|
212
|
+
console.log(cmd.description);
|
|
213
|
+
console.log();
|
|
214
|
+
console.log(chalk.bold.underline('USAGE'));
|
|
215
|
+
console.log(` ${chalk.cyan(cmd.usage)}`);
|
|
216
|
+
console.log();
|
|
217
|
+
if (cmd.options.length > 0) {
|
|
218
|
+
console.log(chalk.bold.underline('OPTIONS'));
|
|
219
|
+
console.log();
|
|
220
|
+
const maxFlagLen = Math.max(...cmd.options.map(o => o.flag.length));
|
|
221
|
+
for (const opt of cmd.options) {
|
|
222
|
+
const defaultStr = opt.default !== undefined ? chalk.dim(` [default: ${opt.default}]`) : '';
|
|
223
|
+
console.log(` ${chalk.yellow(opt.flag.padEnd(maxFlagLen + 2))} ${opt.description}${defaultStr}`);
|
|
224
|
+
}
|
|
225
|
+
console.log();
|
|
226
|
+
}
|
|
227
|
+
console.log(chalk.bold.underline('EXAMPLES'));
|
|
228
|
+
console.log();
|
|
229
|
+
for (const example of cmd.examples) {
|
|
230
|
+
console.log(` ${chalk.green('$')} ${example}`);
|
|
231
|
+
}
|
|
232
|
+
console.log();
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAUD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BrE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { log, formatPath } from '../utils/output.js';
|
|
4
|
+
const DEFAULT_CONFIG = {
|
|
5
|
+
version: '1.0',
|
|
6
|
+
exporter: 'mock',
|
|
7
|
+
output: 'monarch-graph.json',
|
|
8
|
+
include: ['src/**/*.ts', 'src/**/*.tsx'],
|
|
9
|
+
exclude: ['**/*.test.ts', '**/*.spec.ts', '**/node_modules/**'],
|
|
10
|
+
};
|
|
11
|
+
export async function initCommand(options) {
|
|
12
|
+
const configPath = path.resolve('monarch.json');
|
|
13
|
+
if (fs.existsSync(configPath) && !options.force) {
|
|
14
|
+
log.error(`Configuration file already exists: ${formatPath(configPath)}`);
|
|
15
|
+
log.info('Use --force to overwrite');
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
// Create config file
|
|
19
|
+
fs.writeFileSync(configPath, JSON.stringify(DEFAULT_CONFIG, null, 2));
|
|
20
|
+
log.success(`Created configuration file: ${formatPath(configPath)}`);
|
|
21
|
+
// Create .gitignore entry suggestion
|
|
22
|
+
const gitignorePath = path.resolve('.gitignore');
|
|
23
|
+
const gitignoreEntry = '\n# Monarch\nmonarch-graph.json\n.monarch/\n';
|
|
24
|
+
if (fs.existsSync(gitignorePath)) {
|
|
25
|
+
const content = fs.readFileSync(gitignorePath, 'utf-8');
|
|
26
|
+
if (!content.includes('monarch-graph.json')) {
|
|
27
|
+
log.info(`Consider adding to ${formatPath('.gitignore')}:`);
|
|
28
|
+
log.dim(gitignoreEntry.trim());
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
log.title('Monarch initialized successfully!');
|
|
32
|
+
log.info('Next steps:');
|
|
33
|
+
log.dim(' 1. Run `monarch analyze` to generate your first graph');
|
|
34
|
+
log.dim(' 2. Run `monarch serve` to visualize the graph');
|
|
35
|
+
log.dim(' 3. Run `monarch diff <old> <new>` to compare graphs');
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=init.js.map
|