monarch-code-graph 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +2632 -96
- package/dist/index.d.ts +33 -6
- package/dist/index.js +1552 -7
- package/package.json +7 -5
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/analyze.d.ts +0 -8
- package/dist/commands/analyze.d.ts.map +0 -1
- package/dist/commands/analyze.js +0 -76
- package/dist/commands/analyze.js.map +0 -1
- package/dist/commands/diff.d.ts +0 -8
- package/dist/commands/diff.d.ts.map +0 -1
- package/dist/commands/diff.js +0 -203
- package/dist/commands/diff.js.map +0 -1
- package/dist/commands/graph.d.ts +0 -12
- package/dist/commands/graph.d.ts.map +0 -1
- package/dist/commands/graph.js +0 -72
- package/dist/commands/graph.js.map +0 -1
- package/dist/commands/help.d.ts +0 -2
- package/dist/commands/help.d.ts.map +0 -1
- package/dist/commands/help.js +0 -234
- package/dist/commands/help.js.map +0 -1
- package/dist/commands/init.d.ts +0 -6
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -37
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/list.d.ts +0 -7
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -148
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/run.d.ts +0 -10
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -388
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -8
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -137
- package/dist/commands/serve.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/utils/ascii-graph.d.ts +0 -21
- package/dist/utils/ascii-graph.d.ts.map +0 -1
- package/dist/utils/ascii-graph.js +0 -431
- package/dist/utils/ascii-graph.js.map +0 -1
- package/dist/utils/output.d.ts +0 -12
- package/dist/utils/output.d.ts.map +0 -1
- package/dist/utils/output.js +0 -24
- package/dist/utils/output.js.map +0 -1
package/dist/commands/run.js
DELETED
|
@@ -1,388 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { createServer } from 'http';
|
|
4
|
-
import { exec } from 'child_process';
|
|
5
|
-
import ora from 'ora';
|
|
6
|
-
import chalk from 'chalk';
|
|
7
|
-
import { isCodeFlowArtifact } from '@codeflow/shared';
|
|
8
|
-
import { MockExporter, applyElkLayout } from '@codeflow/analyzer';
|
|
9
|
-
import { log, formatPath, formatNumber, formatDiff } from '../utils/output.js';
|
|
10
|
-
export async function runCommand(targetPath, options) {
|
|
11
|
-
const absolutePath = path.resolve(targetPath);
|
|
12
|
-
const artifactPath = path.resolve(options.output);
|
|
13
|
-
const port = parseInt(options.port, 10);
|
|
14
|
-
// Validate target path
|
|
15
|
-
if (!fs.existsSync(absolutePath)) {
|
|
16
|
-
log.error(`Path does not exist: ${formatPath(absolutePath)}`);
|
|
17
|
-
process.exit(1);
|
|
18
|
-
}
|
|
19
|
-
log.title('Monarch Run');
|
|
20
|
-
log.info(`Target: ${formatPath(absolutePath)}`);
|
|
21
|
-
log.info(`Artifact: ${formatPath(artifactPath)}`);
|
|
22
|
-
// Step 1: Check if artifact exists
|
|
23
|
-
const existingArtifact = loadExistingArtifact(artifactPath);
|
|
24
|
-
let artifact;
|
|
25
|
-
let diffSummary = null;
|
|
26
|
-
if (existingArtifact && !options.force) {
|
|
27
|
-
// Step 2: Analyze and check for changes
|
|
28
|
-
log.info('');
|
|
29
|
-
log.info('Existing graph found, checking for changes...');
|
|
30
|
-
const newArtifact = await analyzeCodebase(absolutePath, options.exporter);
|
|
31
|
-
if (!newArtifact) {
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
diffSummary = calculateDiffSummary(existingArtifact, newArtifact);
|
|
35
|
-
if (!diffSummary.hasChanges) {
|
|
36
|
-
// Step 2b: No changes - use existing artifact
|
|
37
|
-
log.success('No changes detected, using existing graph');
|
|
38
|
-
artifact = existingArtifact;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
// Step 3: Changes detected - save new artifact
|
|
42
|
-
log.warning('Changes detected:');
|
|
43
|
-
printDiffSummary(diffSummary);
|
|
44
|
-
artifact = await applyElkLayout(newArtifact);
|
|
45
|
-
saveArtifact(artifact, artifactPath);
|
|
46
|
-
log.success(`Updated graph saved to ${formatPath(artifactPath)}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
// Step 1b: No existing artifact - create new one
|
|
51
|
-
if (options.force) {
|
|
52
|
-
log.info('Force flag set, regenerating graph...');
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
log.info('No existing graph found, generating...');
|
|
56
|
-
}
|
|
57
|
-
const newArtifact = await analyzeCodebase(absolutePath, options.exporter);
|
|
58
|
-
if (!newArtifact) {
|
|
59
|
-
process.exit(1);
|
|
60
|
-
}
|
|
61
|
-
artifact = await applyElkLayout(newArtifact);
|
|
62
|
-
saveArtifact(artifact, artifactPath);
|
|
63
|
-
log.success(`Graph saved to ${formatPath(artifactPath)}`);
|
|
64
|
-
}
|
|
65
|
-
// Print graph summary
|
|
66
|
-
console.log('');
|
|
67
|
-
log.info(chalk.bold('Graph Summary:'));
|
|
68
|
-
log.info(` Functions: ${formatNumber(artifact.nodes.functions.length)}`);
|
|
69
|
-
log.info(` Modules: ${formatNumber(artifact.nodes.modules.length)}`);
|
|
70
|
-
log.info(` Components: ${formatNumber(artifact.nodes.components.length)}`);
|
|
71
|
-
log.info(` Call edges: ${formatNumber(artifact.edges.calls.length)}`);
|
|
72
|
-
log.info(` Dataflow: ${formatNumber(artifact.edges.dataflow.length)}`);
|
|
73
|
-
// Step 4 & 5: Start server and load graph
|
|
74
|
-
console.log('');
|
|
75
|
-
await startServer(artifactPath, port, options.open);
|
|
76
|
-
}
|
|
77
|
-
function loadExistingArtifact(artifactPath) {
|
|
78
|
-
if (!fs.existsSync(artifactPath)) {
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
try {
|
|
82
|
-
const content = fs.readFileSync(artifactPath, 'utf-8');
|
|
83
|
-
const artifact = JSON.parse(content);
|
|
84
|
-
if (!isCodeFlowArtifact(artifact)) {
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
return artifact;
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
async function analyzeCodebase(targetPath, exporterName) {
|
|
94
|
-
const spinner = ora('Analyzing codebase...').start();
|
|
95
|
-
try {
|
|
96
|
-
let artifact;
|
|
97
|
-
if (exporterName === 'mock') {
|
|
98
|
-
const exporter = new MockExporter(targetPath);
|
|
99
|
-
await exporter.prepare();
|
|
100
|
-
spinner.text = 'Scanning files...';
|
|
101
|
-
await exporter.analyze();
|
|
102
|
-
spinner.text = 'Generating artifact...';
|
|
103
|
-
artifact = await exporter.export();
|
|
104
|
-
await exporter.cleanup();
|
|
105
|
-
}
|
|
106
|
-
else if (exporterName === 'codeql-ts') {
|
|
107
|
-
spinner.text = 'Creating CodeQL database...';
|
|
108
|
-
const { CodeQLExporter } = await import('@codeflow/analyzer');
|
|
109
|
-
const exporter = new CodeQLExporter(targetPath);
|
|
110
|
-
await exporter.prepare();
|
|
111
|
-
spinner.text = 'Running CodeQL queries...';
|
|
112
|
-
await exporter.analyze();
|
|
113
|
-
spinner.text = 'Generating artifact...';
|
|
114
|
-
artifact = await exporter.export();
|
|
115
|
-
await exporter.cleanup();
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
spinner.fail(`Unknown exporter: ${exporterName}`);
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
spinner.succeed('Analysis complete');
|
|
122
|
-
return artifact;
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
spinner.fail('Analysis failed');
|
|
126
|
-
log.error(String(error));
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
function calculateDiffSummary(baseline, current) {
|
|
131
|
-
const baselineFnIds = new Set(baseline.nodes.functions.map((fn) => fn.id));
|
|
132
|
-
const currentFnIds = new Set(current.nodes.functions.map((fn) => fn.id));
|
|
133
|
-
const functionsAdded = current.nodes.functions.filter((fn) => !baselineFnIds.has(fn.id)).length;
|
|
134
|
-
const functionsRemoved = baseline.nodes.functions.filter((fn) => !currentFnIds.has(fn.id)).length;
|
|
135
|
-
const baselineModIds = new Set(baseline.nodes.modules.map((m) => m.id));
|
|
136
|
-
const currentModIds = new Set(current.nodes.modules.map((m) => m.id));
|
|
137
|
-
const modulesAdded = current.nodes.modules.filter((m) => !baselineModIds.has(m.id)).length;
|
|
138
|
-
const modulesRemoved = baseline.nodes.modules.filter((m) => !currentModIds.has(m.id)).length;
|
|
139
|
-
const edgeKey = (e) => `${e.from}->${e.to}`;
|
|
140
|
-
const baselineCallEdges = new Set(baseline.edges.calls.map(edgeKey));
|
|
141
|
-
const currentCallEdges = new Set(current.edges.calls.map(edgeKey));
|
|
142
|
-
const callEdgesAdded = current.edges.calls.filter((e) => !baselineCallEdges.has(edgeKey(e))).length;
|
|
143
|
-
const callEdgesRemoved = baseline.edges.calls.filter((e) => !currentCallEdges.has(edgeKey(e))).length;
|
|
144
|
-
const hasChanges = functionsAdded > 0 ||
|
|
145
|
-
functionsRemoved > 0 ||
|
|
146
|
-
modulesAdded > 0 ||
|
|
147
|
-
modulesRemoved > 0 ||
|
|
148
|
-
callEdgesAdded > 0 ||
|
|
149
|
-
callEdgesRemoved > 0;
|
|
150
|
-
return {
|
|
151
|
-
hasChanges,
|
|
152
|
-
functionsAdded,
|
|
153
|
-
functionsRemoved,
|
|
154
|
-
modulesAdded,
|
|
155
|
-
modulesRemoved,
|
|
156
|
-
callEdgesAdded,
|
|
157
|
-
callEdgesRemoved,
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
function printDiffSummary(diff) {
|
|
161
|
-
console.log(` Functions: ${formatDiff(diff.functionsAdded, diff.functionsRemoved)}`);
|
|
162
|
-
console.log(` Modules: ${formatDiff(diff.modulesAdded, diff.modulesRemoved)}`);
|
|
163
|
-
console.log(` Call edges: ${formatDiff(diff.callEdgesAdded, diff.callEdgesRemoved)}`);
|
|
164
|
-
}
|
|
165
|
-
function saveArtifact(artifact, outputPath) {
|
|
166
|
-
const outputDir = path.dirname(outputPath);
|
|
167
|
-
if (!fs.existsSync(outputDir)) {
|
|
168
|
-
fs.mkdirSync(outputDir, { recursive: true });
|
|
169
|
-
}
|
|
170
|
-
fs.writeFileSync(outputPath, JSON.stringify(artifact, null, 2));
|
|
171
|
-
}
|
|
172
|
-
async function startServer(artifactPath, port, openBrowser) {
|
|
173
|
-
// Check if port is already in use
|
|
174
|
-
const isPortInUse = await checkPort(port);
|
|
175
|
-
if (isPortInUse) {
|
|
176
|
-
log.info(`Server already running on port ${port}`);
|
|
177
|
-
log.success(`View graph at ${chalk.underline(`http://localhost:${port}`)}`);
|
|
178
|
-
if (openBrowser) {
|
|
179
|
-
openInBrowser(`http://localhost:${port}`);
|
|
180
|
-
}
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
log.info('Starting visualization server...');
|
|
184
|
-
const server = createServer((req, res) => {
|
|
185
|
-
const url = req.url || '/';
|
|
186
|
-
if (url === '/api/artifact') {
|
|
187
|
-
res.setHeader('Content-Type', 'application/json');
|
|
188
|
-
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
189
|
-
const content = fs.readFileSync(artifactPath, 'utf-8');
|
|
190
|
-
res.end(content);
|
|
191
|
-
}
|
|
192
|
-
else if (url === '/api/reload') {
|
|
193
|
-
// Endpoint to signal the UI to reload (for future watch mode)
|
|
194
|
-
res.setHeader('Content-Type', 'application/json');
|
|
195
|
-
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
196
|
-
res.end(JSON.stringify({ status: 'ok' }));
|
|
197
|
-
}
|
|
198
|
-
else if (url === '/') {
|
|
199
|
-
res.setHeader('Content-Type', 'text/html');
|
|
200
|
-
res.end(getIndexHtml(port, artifactPath));
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
res.statusCode = 404;
|
|
204
|
-
res.end('Not Found');
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
return new Promise((resolve) => {
|
|
208
|
-
server.listen(port, () => {
|
|
209
|
-
log.success(`Server running at ${chalk.underline(`http://localhost:${port}`)}`);
|
|
210
|
-
log.info(`Serving: ${formatPath(artifactPath)}`);
|
|
211
|
-
log.dim('\nPress Ctrl+C to stop');
|
|
212
|
-
if (openBrowser) {
|
|
213
|
-
openInBrowser(`http://localhost:${port}`);
|
|
214
|
-
}
|
|
215
|
-
// Handle graceful shutdown
|
|
216
|
-
process.on('SIGINT', () => {
|
|
217
|
-
log.info('\nShutting down server...');
|
|
218
|
-
server.close(() => {
|
|
219
|
-
process.exit(0);
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
resolve();
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
function checkPort(port) {
|
|
227
|
-
return new Promise((resolve) => {
|
|
228
|
-
const server = createServer();
|
|
229
|
-
server.once('error', (err) => {
|
|
230
|
-
if (err.code === 'EADDRINUSE') {
|
|
231
|
-
resolve(true);
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
resolve(false);
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
server.once('listening', () => {
|
|
238
|
-
server.close();
|
|
239
|
-
resolve(false);
|
|
240
|
-
});
|
|
241
|
-
server.listen(port);
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
function openInBrowser(url) {
|
|
245
|
-
const cmd = process.platform === 'win32'
|
|
246
|
-
? 'start'
|
|
247
|
-
: process.platform === 'darwin'
|
|
248
|
-
? 'open'
|
|
249
|
-
: 'xdg-open';
|
|
250
|
-
exec(`${cmd} ${url}`);
|
|
251
|
-
}
|
|
252
|
-
function getIndexHtml(port, artifactPath) {
|
|
253
|
-
const fileName = path.basename(artifactPath);
|
|
254
|
-
return `<!DOCTYPE html>
|
|
255
|
-
<html lang="en">
|
|
256
|
-
<head>
|
|
257
|
-
<meta charset="UTF-8">
|
|
258
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
259
|
-
<title>Monarch - Graph Visualization</title>
|
|
260
|
-
<style>
|
|
261
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
262
|
-
body {
|
|
263
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
264
|
-
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
|
|
265
|
-
color: #fff;
|
|
266
|
-
min-height: 100vh;
|
|
267
|
-
display: flex;
|
|
268
|
-
align-items: center;
|
|
269
|
-
justify-content: center;
|
|
270
|
-
}
|
|
271
|
-
.container {
|
|
272
|
-
text-align: center;
|
|
273
|
-
padding: 2rem;
|
|
274
|
-
max-width: 600px;
|
|
275
|
-
}
|
|
276
|
-
.logo {
|
|
277
|
-
font-size: 4rem;
|
|
278
|
-
margin-bottom: 1rem;
|
|
279
|
-
}
|
|
280
|
-
h1 {
|
|
281
|
-
font-size: 2.5rem;
|
|
282
|
-
margin-bottom: 0.5rem;
|
|
283
|
-
background: linear-gradient(135deg, #4a90d9, #67b26f);
|
|
284
|
-
-webkit-background-clip: text;
|
|
285
|
-
-webkit-text-fill-color: transparent;
|
|
286
|
-
background-clip: text;
|
|
287
|
-
}
|
|
288
|
-
.tagline {
|
|
289
|
-
color: #888;
|
|
290
|
-
margin-bottom: 2rem;
|
|
291
|
-
font-size: 1.1rem;
|
|
292
|
-
}
|
|
293
|
-
.card {
|
|
294
|
-
background: rgba(255, 255, 255, 0.05);
|
|
295
|
-
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
296
|
-
padding: 1.5rem;
|
|
297
|
-
border-radius: 12px;
|
|
298
|
-
margin-bottom: 1.5rem;
|
|
299
|
-
}
|
|
300
|
-
.card h2 {
|
|
301
|
-
font-size: 1rem;
|
|
302
|
-
color: #4a90d9;
|
|
303
|
-
margin-bottom: 0.75rem;
|
|
304
|
-
text-transform: uppercase;
|
|
305
|
-
letter-spacing: 1px;
|
|
306
|
-
}
|
|
307
|
-
.endpoint {
|
|
308
|
-
background: rgba(0, 0, 0, 0.3);
|
|
309
|
-
padding: 0.75rem 1rem;
|
|
310
|
-
border-radius: 6px;
|
|
311
|
-
font-family: 'SF Mono', Monaco, monospace;
|
|
312
|
-
font-size: 0.9rem;
|
|
313
|
-
color: #67b26f;
|
|
314
|
-
word-break: break-all;
|
|
315
|
-
}
|
|
316
|
-
.file-name {
|
|
317
|
-
color: #ffd93d;
|
|
318
|
-
font-family: 'SF Mono', Monaco, monospace;
|
|
319
|
-
}
|
|
320
|
-
.instructions {
|
|
321
|
-
color: #888;
|
|
322
|
-
font-size: 0.9rem;
|
|
323
|
-
line-height: 1.6;
|
|
324
|
-
}
|
|
325
|
-
.instructions code {
|
|
326
|
-
background: rgba(255, 255, 255, 0.1);
|
|
327
|
-
padding: 0.2rem 0.5rem;
|
|
328
|
-
border-radius: 4px;
|
|
329
|
-
font-family: 'SF Mono', Monaco, monospace;
|
|
330
|
-
color: #4a90d9;
|
|
331
|
-
}
|
|
332
|
-
.status {
|
|
333
|
-
display: inline-flex;
|
|
334
|
-
align-items: center;
|
|
335
|
-
gap: 0.5rem;
|
|
336
|
-
background: rgba(103, 178, 111, 0.2);
|
|
337
|
-
color: #67b26f;
|
|
338
|
-
padding: 0.5rem 1rem;
|
|
339
|
-
border-radius: 20px;
|
|
340
|
-
font-size: 0.85rem;
|
|
341
|
-
margin-top: 1rem;
|
|
342
|
-
}
|
|
343
|
-
.status-dot {
|
|
344
|
-
width: 8px;
|
|
345
|
-
height: 8px;
|
|
346
|
-
background: #67b26f;
|
|
347
|
-
border-radius: 50%;
|
|
348
|
-
animation: pulse 2s infinite;
|
|
349
|
-
}
|
|
350
|
-
@keyframes pulse {
|
|
351
|
-
0%, 100% { opacity: 1; }
|
|
352
|
-
50% { opacity: 0.5; }
|
|
353
|
-
}
|
|
354
|
-
</style>
|
|
355
|
-
</head>
|
|
356
|
-
<body>
|
|
357
|
-
<div class="container">
|
|
358
|
-
<div class="logo">🔮</div>
|
|
359
|
-
<h1>Monarch</h1>
|
|
360
|
-
<p class="tagline">Static Codebase Flow Mapping</p>
|
|
361
|
-
|
|
362
|
-
<div class="card">
|
|
363
|
-
<h2>Current Graph</h2>
|
|
364
|
-
<p class="file-name">${fileName}</p>
|
|
365
|
-
</div>
|
|
366
|
-
|
|
367
|
-
<div class="card">
|
|
368
|
-
<h2>API Endpoint</h2>
|
|
369
|
-
<p class="endpoint">http://localhost:${port}/api/artifact</p>
|
|
370
|
-
</div>
|
|
371
|
-
|
|
372
|
-
<div class="card">
|
|
373
|
-
<h2>View Full Visualization</h2>
|
|
374
|
-
<p class="instructions">
|
|
375
|
-
Run the UI development server:<br><br>
|
|
376
|
-
<code>pnpm --filter @codeflow/ui dev</code>
|
|
377
|
-
</p>
|
|
378
|
-
</div>
|
|
379
|
-
|
|
380
|
-
<div class="status">
|
|
381
|
-
<span class="status-dot"></span>
|
|
382
|
-
Server running on port ${port}
|
|
383
|
-
</div>
|
|
384
|
-
</div>
|
|
385
|
-
</body>
|
|
386
|
-
</html>`;
|
|
387
|
-
}
|
|
388
|
-
//# sourceMappingURL=run.js.map
|
package/dist/commands/run.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/serve.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEvE"}
|
package/dist/commands/serve.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { createServer } from 'http';
|
|
4
|
-
import { isCodeFlowArtifact } from '@codeflow/shared';
|
|
5
|
-
import { log, formatPath } from '../utils/output.js';
|
|
6
|
-
export async function serveCommand(options) {
|
|
7
|
-
const artifactPath = path.resolve(options.artifact);
|
|
8
|
-
const port = parseInt(options.port, 10);
|
|
9
|
-
if (!fs.existsSync(artifactPath)) {
|
|
10
|
-
log.error(`Artifact not found: ${formatPath(artifactPath)}`);
|
|
11
|
-
log.info('Run `monarch analyze` first to generate a graph');
|
|
12
|
-
process.exit(1);
|
|
13
|
-
}
|
|
14
|
-
// Validate artifact
|
|
15
|
-
try {
|
|
16
|
-
const content = fs.readFileSync(artifactPath, 'utf-8');
|
|
17
|
-
const 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
|
-
// Create a simple HTTP server that serves the UI and artifact
|
|
28
|
-
const server = createServer((req, res) => {
|
|
29
|
-
const url = req.url || '/';
|
|
30
|
-
if (url === '/api/artifact') {
|
|
31
|
-
// Serve the artifact JSON
|
|
32
|
-
res.setHeader('Content-Type', 'application/json');
|
|
33
|
-
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
34
|
-
const content = fs.readFileSync(artifactPath, 'utf-8');
|
|
35
|
-
res.end(content);
|
|
36
|
-
}
|
|
37
|
-
else if (url === '/') {
|
|
38
|
-
// Serve a simple HTML page that redirects to the UI
|
|
39
|
-
res.setHeader('Content-Type', 'text/html');
|
|
40
|
-
res.end(getIndexHtml(port));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
res.statusCode = 404;
|
|
44
|
-
res.end('Not Found');
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
server.listen(port, () => {
|
|
48
|
-
log.title('Monarch Visualization Server');
|
|
49
|
-
log.success(`Server running at http://localhost:${port}`);
|
|
50
|
-
log.info(`Serving artifact: ${formatPath(artifactPath)}`);
|
|
51
|
-
log.dim('\nPress Ctrl+C to stop');
|
|
52
|
-
if (options.open) {
|
|
53
|
-
// Try to open browser
|
|
54
|
-
const url = `http://localhost:${port}`;
|
|
55
|
-
import('child_process').then(({ exec }) => {
|
|
56
|
-
const cmd = process.platform === 'win32' ? 'start' :
|
|
57
|
-
process.platform === 'darwin' ? 'open' : 'xdg-open';
|
|
58
|
-
exec(`${cmd} ${url}`);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
// Handle graceful shutdown
|
|
63
|
-
process.on('SIGINT', () => {
|
|
64
|
-
log.info('\nShutting down server...');
|
|
65
|
-
server.close(() => {
|
|
66
|
-
process.exit(0);
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
function getIndexHtml(port) {
|
|
71
|
-
return `<!DOCTYPE html>
|
|
72
|
-
<html lang="en">
|
|
73
|
-
<head>
|
|
74
|
-
<meta charset="UTF-8">
|
|
75
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
76
|
-
<title>Monarch - Graph Visualization</title>
|
|
77
|
-
<style>
|
|
78
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
79
|
-
body {
|
|
80
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
81
|
-
background: #16213e;
|
|
82
|
-
color: #fff;
|
|
83
|
-
min-height: 100vh;
|
|
84
|
-
display: flex;
|
|
85
|
-
align-items: center;
|
|
86
|
-
justify-content: center;
|
|
87
|
-
}
|
|
88
|
-
.container {
|
|
89
|
-
text-align: center;
|
|
90
|
-
padding: 2rem;
|
|
91
|
-
}
|
|
92
|
-
h1 {
|
|
93
|
-
font-size: 2.5rem;
|
|
94
|
-
margin-bottom: 1rem;
|
|
95
|
-
color: #4a90d9;
|
|
96
|
-
}
|
|
97
|
-
p {
|
|
98
|
-
color: #888;
|
|
99
|
-
margin-bottom: 2rem;
|
|
100
|
-
}
|
|
101
|
-
.info {
|
|
102
|
-
background: #1a1a2e;
|
|
103
|
-
padding: 1.5rem;
|
|
104
|
-
border-radius: 8px;
|
|
105
|
-
margin-bottom: 2rem;
|
|
106
|
-
}
|
|
107
|
-
.info code {
|
|
108
|
-
background: #2d2d44;
|
|
109
|
-
padding: 0.25rem 0.5rem;
|
|
110
|
-
border-radius: 4px;
|
|
111
|
-
font-family: monospace;
|
|
112
|
-
}
|
|
113
|
-
a {
|
|
114
|
-
color: #4a90d9;
|
|
115
|
-
text-decoration: none;
|
|
116
|
-
}
|
|
117
|
-
a:hover {
|
|
118
|
-
text-decoration: underline;
|
|
119
|
-
}
|
|
120
|
-
</style>
|
|
121
|
-
</head>
|
|
122
|
-
<body>
|
|
123
|
-
<div class="container">
|
|
124
|
-
<h1>🔮 Monarch</h1>
|
|
125
|
-
<p>Static Codebase Flow Mapping</p>
|
|
126
|
-
<div class="info">
|
|
127
|
-
<p>API Endpoint: <code>http://localhost:${port}/api/artifact</code></p>
|
|
128
|
-
</div>
|
|
129
|
-
<p>
|
|
130
|
-
To view the full visualization, run the UI package:<br>
|
|
131
|
-
<code>pnpm --filter @codeflow/ui dev</code>
|
|
132
|
-
</p>
|
|
133
|
-
</div>
|
|
134
|
-
</body>
|
|
135
|
-
</html>`;
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=serve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { CodeFlowArtifact } from '@codeflow/shared';
|
|
2
|
-
export type ViewLevel = 'components' | 'modules' | 'functions';
|
|
3
|
-
interface AsciiGraphOptions {
|
|
4
|
-
maxWidth?: number;
|
|
5
|
-
showEdgeCounts?: boolean;
|
|
6
|
-
colorize?: boolean;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Render an ASCII graph from a CodeFlowArtifact
|
|
10
|
-
*/
|
|
11
|
-
export declare function renderAsciiGraph(artifact: CodeFlowArtifact, level: ViewLevel, options?: AsciiGraphOptions): string;
|
|
12
|
-
/**
|
|
13
|
-
* Render a specific component or module expanded
|
|
14
|
-
*/
|
|
15
|
-
export declare function renderExpandedView(artifact: CodeFlowArtifact, targetName: string, targetType: 'component' | 'module', options?: AsciiGraphOptions): string;
|
|
16
|
-
/**
|
|
17
|
-
* List available components and modules for expansion
|
|
18
|
-
*/
|
|
19
|
-
export declare function listExpandableItems(artifact: CodeFlowArtifact): string;
|
|
20
|
-
export {};
|
|
21
|
-
//# sourceMappingURL=ascii-graph.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ascii-graph.d.ts","sourceRoot":"","sources":["../../src/utils/ascii-graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,kBAAkB,CAAC;AAEvE,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;AAe/D,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAeD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CA8BR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,WAAW,GAAG,QAAQ,EAClC,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAsGR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CA2BtE"}
|