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.
Files changed (53) hide show
  1. package/README.md +485 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +100 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/analyze.d.ts +8 -0
  7. package/dist/commands/analyze.d.ts.map +1 -0
  8. package/dist/commands/analyze.js +76 -0
  9. package/dist/commands/analyze.js.map +1 -0
  10. package/dist/commands/diff.d.ts +8 -0
  11. package/dist/commands/diff.d.ts.map +1 -0
  12. package/dist/commands/diff.js +203 -0
  13. package/dist/commands/diff.js.map +1 -0
  14. package/dist/commands/graph.d.ts +12 -0
  15. package/dist/commands/graph.d.ts.map +1 -0
  16. package/dist/commands/graph.js +72 -0
  17. package/dist/commands/graph.js.map +1 -0
  18. package/dist/commands/help.d.ts +2 -0
  19. package/dist/commands/help.d.ts.map +1 -0
  20. package/dist/commands/help.js +234 -0
  21. package/dist/commands/help.js.map +1 -0
  22. package/dist/commands/init.d.ts +6 -0
  23. package/dist/commands/init.d.ts.map +1 -0
  24. package/dist/commands/init.js +37 -0
  25. package/dist/commands/init.js.map +1 -0
  26. package/dist/commands/list.d.ts +7 -0
  27. package/dist/commands/list.d.ts.map +1 -0
  28. package/dist/commands/list.js +148 -0
  29. package/dist/commands/list.js.map +1 -0
  30. package/dist/commands/run.d.ts +10 -0
  31. package/dist/commands/run.d.ts.map +1 -0
  32. package/dist/commands/run.js +388 -0
  33. package/dist/commands/run.js.map +1 -0
  34. package/dist/commands/serve.d.ts +8 -0
  35. package/dist/commands/serve.d.ts.map +1 -0
  36. package/dist/commands/serve.js +137 -0
  37. package/dist/commands/serve.js.map +1 -0
  38. package/dist/index.d.ts +6 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +7 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/queries/calls.ql +53 -0
  43. package/dist/queries/dataflow.ql +62 -0
  44. package/dist/queries/functions.ql +52 -0
  45. package/dist/utils/ascii-graph.d.ts +21 -0
  46. package/dist/utils/ascii-graph.d.ts.map +1 -0
  47. package/dist/utils/ascii-graph.js +431 -0
  48. package/dist/utils/ascii-graph.js.map +1 -0
  49. package/dist/utils/output.d.ts +12 -0
  50. package/dist/utils/output.d.ts.map +1 -0
  51. package/dist/utils/output.js +24 -0
  52. package/dist/utils/output.js.map +1 -0
  53. package/package.json +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,oBAAoB;IAC5B,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;IACxC,OAAO,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,oBAAoB,CAAC;CAChE,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEhD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAChD,GAAG,CAAC,KAAK,CAAC,sCAAsC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC1E,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qBAAqB;IACrB,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,GAAG,CAAC,OAAO,CAAC,+BAA+B,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAErE,qCAAqC;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,8CAA8C,CAAC;IAEtE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,sBAAsB,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC5D,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACnE,GAAG,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC3D,GAAG,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ListOptions {
2
+ type?: 'functions' | 'modules' | 'components' | 'edges';
3
+ json: boolean;
4
+ }
5
+ export declare function listCommand(artifactPath: string, options: ListOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;IACxD,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -0,0 +1,148 @@
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, formatNumber } from '../utils/output.js';
6
+ export async function listCommand(artifactPath, options) {
7
+ const absolutePath = path.resolve(artifactPath);
8
+ if (!fs.existsSync(absolutePath)) {
9
+ log.error(`Artifact not found: ${formatPath(absolutePath)}`);
10
+ log.info('Run `monarch analyze` first to generate a graph');
11
+ process.exit(1);
12
+ }
13
+ let artifact;
14
+ try {
15
+ const content = fs.readFileSync(absolutePath, 'utf-8');
16
+ artifact = JSON.parse(content);
17
+ if (!isCodeFlowArtifact(artifact)) {
18
+ log.error('Invalid artifact file');
19
+ process.exit(1);
20
+ }
21
+ }
22
+ catch (error) {
23
+ log.error(`Failed to read artifact: ${error}`);
24
+ process.exit(1);
25
+ }
26
+ if (options.json) {
27
+ printJsonOutput(artifact, options.type);
28
+ }
29
+ else {
30
+ printTextOutput(artifact, options.type);
31
+ }
32
+ }
33
+ function printJsonOutput(artifact, type) {
34
+ let output;
35
+ switch (type) {
36
+ case 'functions':
37
+ output = artifact.nodes.functions;
38
+ break;
39
+ case 'modules':
40
+ output = artifact.nodes.modules;
41
+ break;
42
+ case 'components':
43
+ output = artifact.nodes.components;
44
+ break;
45
+ case 'edges':
46
+ output = {
47
+ calls: artifact.edges.calls,
48
+ dataflow: artifact.edges.dataflow,
49
+ };
50
+ break;
51
+ default:
52
+ output = {
53
+ metadata: artifact.metadata,
54
+ summary: {
55
+ functions: artifact.nodes.functions.length,
56
+ modules: artifact.nodes.modules.length,
57
+ components: artifact.nodes.components.length,
58
+ callEdges: artifact.edges.calls.length,
59
+ dataflowEdges: artifact.edges.dataflow.length,
60
+ },
61
+ };
62
+ }
63
+ console.log(JSON.stringify(output, null, 2));
64
+ }
65
+ function printTextOutput(artifact, type) {
66
+ log.title('Monarch Graph Contents');
67
+ // Print metadata
68
+ console.log(chalk.bold('Metadata:'));
69
+ console.log(` Version: ${artifact.metadata.analyzerVersion}`);
70
+ console.log(` Language: ${artifact.metadata.language}`);
71
+ console.log(` Commit: ${artifact.metadata.repoCommit}`);
72
+ console.log(` Generated: ${artifact.metadata.generatedAt}`);
73
+ console.log('');
74
+ // Print summary
75
+ console.log(chalk.bold('Summary:'));
76
+ console.log(` Functions: ${formatNumber(artifact.nodes.functions.length)}`);
77
+ console.log(` Modules: ${formatNumber(artifact.nodes.modules.length)}`);
78
+ console.log(` Components: ${formatNumber(artifact.nodes.components.length)}`);
79
+ console.log(` Call Edges: ${formatNumber(artifact.edges.calls.length)}`);
80
+ console.log(` Dataflow Edges: ${formatNumber(artifact.edges.dataflow.length)}`);
81
+ console.log('');
82
+ if (!type || type === 'functions') {
83
+ console.log(chalk.bold('Functions:'));
84
+ const grouped = groupByFile(artifact.nodes.functions);
85
+ for (const [file, fns] of Object.entries(grouped)) {
86
+ console.log(chalk.cyan(` ${file}`));
87
+ for (const fn of fns) {
88
+ console.log(` ${fn.name} ${chalk.dim(`(${fn.startLine}-${fn.endLine})`)}`);
89
+ }
90
+ }
91
+ console.log('');
92
+ }
93
+ if (!type || type === 'modules') {
94
+ console.log(chalk.bold('Modules:'));
95
+ for (const mod of artifact.nodes.modules) {
96
+ const fnCount = mod.functionIds?.length || 0;
97
+ console.log(` ${mod.path} ${chalk.dim(`(${fnCount} functions)`)}`);
98
+ }
99
+ console.log('');
100
+ }
101
+ if (!type || type === 'components') {
102
+ console.log(chalk.bold('Components:'));
103
+ for (const comp of artifact.nodes.components) {
104
+ const modCount = comp.moduleIds?.length || 0;
105
+ console.log(` ${comp.name} ${chalk.dim(`(${modCount} modules)`)}`);
106
+ }
107
+ console.log('');
108
+ }
109
+ if (!type || type === 'edges') {
110
+ if (artifact.edges.calls.length > 0) {
111
+ console.log(chalk.bold('Call Edges:'));
112
+ for (const edge of artifact.edges.calls.slice(0, 10)) {
113
+ const from = artifact.nodes.functions.find((f) => f.id === edge.from);
114
+ const to = artifact.nodes.functions.find((f) => f.id === edge.to);
115
+ console.log(` ${from?.name || edge.from} ${chalk.dim('→')} ${to?.name || edge.to}`);
116
+ }
117
+ if (artifact.edges.calls.length > 10) {
118
+ console.log(chalk.dim(` ... and ${artifact.edges.calls.length - 10} more`));
119
+ }
120
+ console.log('');
121
+ }
122
+ if (artifact.edges.dataflow.length > 0) {
123
+ console.log(chalk.bold('Dataflow Edges:'));
124
+ for (const edge of artifact.edges.dataflow.slice(0, 10)) {
125
+ const from = artifact.nodes.functions.find((f) => f.id === edge.from);
126
+ const to = artifact.nodes.functions.find((f) => f.id === edge.to);
127
+ console.log(` ${from?.name || edge.from} ${chalk.yellow('⟿')} ${to?.name || edge.to}`);
128
+ if (edge.label) {
129
+ console.log(chalk.dim(` ${edge.label}`));
130
+ }
131
+ }
132
+ if (artifact.edges.dataflow.length > 10) {
133
+ console.log(chalk.dim(` ... and ${artifact.edges.dataflow.length - 10} more`));
134
+ }
135
+ console.log('');
136
+ }
137
+ }
138
+ }
139
+ function groupByFile(items) {
140
+ return items.reduce((acc, item) => {
141
+ if (!acc[item.file]) {
142
+ acc[item.file] = [];
143
+ }
144
+ acc[item.file].push(item);
145
+ return acc;
146
+ }, {});
147
+ }
148
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAyB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOnE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,YAAoB,EACpB,OAAoB;IAEpB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEhD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,KAAK,CAAC,uBAAuB,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,QAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B,EAAE,IAAa;IAChE,IAAI,MAAe,CAAC;IAEpB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW;YACd,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;YAClC,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;YAChC,MAAM;QACR,KAAK,YAAY;YACf,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;YACnC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,GAAG;gBACP,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ;aAClC,CAAC;YACF,MAAM;QACR;YACE,MAAM,GAAG;gBACP,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,OAAO,EAAE;oBACP,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;oBAC1C,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;oBACtC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;oBAC5C,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;oBACtC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;iBAC9C;aACF,CAAC;IACN,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B,EAAE,IAAa;IAChE,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEpC,iBAAiB;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YACrC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,WAAW,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAA6B,KAAU;IACzD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAChC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAyB,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,10 @@
1
+ interface RunOptions {
2
+ port: string;
3
+ output: string;
4
+ exporter: string;
5
+ open: boolean;
6
+ force: boolean;
7
+ }
8
+ export declare function runCommand(targetPath: string, options: RunOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAUA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAYD,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CA6Ef"}
@@ -0,0 +1,388 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
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
@@ -0,0 +1 @@
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"}