monarch-code-graph 0.3.4 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/cli.d.ts +0 -2
  2. package/dist/cli.js +2632 -96
  3. package/dist/index.d.ts +33 -6
  4. package/dist/index.js +1552 -7
  5. package/package.json +7 -5
  6. package/dist/cli.d.ts.map +0 -1
  7. package/dist/cli.js.map +0 -1
  8. package/dist/commands/analyze.d.ts +0 -8
  9. package/dist/commands/analyze.d.ts.map +0 -1
  10. package/dist/commands/analyze.js +0 -76
  11. package/dist/commands/analyze.js.map +0 -1
  12. package/dist/commands/diff.d.ts +0 -8
  13. package/dist/commands/diff.d.ts.map +0 -1
  14. package/dist/commands/diff.js +0 -203
  15. package/dist/commands/diff.js.map +0 -1
  16. package/dist/commands/graph.d.ts +0 -12
  17. package/dist/commands/graph.d.ts.map +0 -1
  18. package/dist/commands/graph.js +0 -72
  19. package/dist/commands/graph.js.map +0 -1
  20. package/dist/commands/help.d.ts +0 -2
  21. package/dist/commands/help.d.ts.map +0 -1
  22. package/dist/commands/help.js +0 -234
  23. package/dist/commands/help.js.map +0 -1
  24. package/dist/commands/init.d.ts +0 -6
  25. package/dist/commands/init.d.ts.map +0 -1
  26. package/dist/commands/init.js +0 -37
  27. package/dist/commands/init.js.map +0 -1
  28. package/dist/commands/list.d.ts +0 -7
  29. package/dist/commands/list.d.ts.map +0 -1
  30. package/dist/commands/list.js +0 -148
  31. package/dist/commands/list.js.map +0 -1
  32. package/dist/commands/run.d.ts +0 -10
  33. package/dist/commands/run.d.ts.map +0 -1
  34. package/dist/commands/run.js +0 -388
  35. package/dist/commands/run.js.map +0 -1
  36. package/dist/commands/serve.d.ts +0 -8
  37. package/dist/commands/serve.d.ts.map +0 -1
  38. package/dist/commands/serve.js +0 -137
  39. package/dist/commands/serve.js.map +0 -1
  40. package/dist/index.d.ts.map +0 -1
  41. package/dist/index.js.map +0 -1
  42. package/dist/utils/ascii-graph.d.ts +0 -21
  43. package/dist/utils/ascii-graph.d.ts.map +0 -1
  44. package/dist/utils/ascii-graph.js +0 -431
  45. package/dist/utils/ascii-graph.js.map +0 -1
  46. package/dist/utils/output.d.ts +0 -12
  47. package/dist/utils/output.d.ts.map +0 -1
  48. package/dist/utils/output.js +0 -24
  49. package/dist/utils/output.js.map +0 -1
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- interface ServeOptions {
2
- port: string;
3
- artifact: string;
4
- open: boolean;
5
- }
6
- export declare function serveCommand(options: ServeOptions): Promise<void>;
7
- export {};
8
- //# sourceMappingURL=serve.d.ts.map
@@ -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"}
@@ -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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"}
@@ -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"}