@monoes/monomindcli 1.17.0 → 1.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/.claude/agents/engineering/engineering-security-engineer.md +1 -1
  2. package/.claude/commands/mastermind/_repeat.md +4 -0
  3. package/.claude/commands/mastermind/master.md +52 -1
  4. package/.claude/skills/mastermind/_repeat.md +2 -0
  5. package/dist/src/__tests__/browse-analyzer.test.js +42 -59
  6. package/dist/src/__tests__/browse-analyzer.test.js.map +1 -1
  7. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  8. package/dist/src/browser/dashboard/server.js +18 -0
  9. package/dist/src/browser/dashboard/server.js.map +1 -1
  10. package/dist/src/browser/dashboard/ui.html +37 -125
  11. package/dist/src/commands/agent-lifecycle.d.ts +17 -0
  12. package/dist/src/commands/agent-lifecycle.d.ts.map +1 -0
  13. package/dist/src/commands/agent-lifecycle.js +320 -0
  14. package/dist/src/commands/agent-lifecycle.js.map +1 -0
  15. package/dist/src/commands/agent-ops.d.ts +9 -0
  16. package/dist/src/commands/agent-ops.d.ts.map +1 -0
  17. package/dist/src/commands/agent-ops.js +329 -0
  18. package/dist/src/commands/agent-ops.js.map +1 -0
  19. package/dist/src/commands/agent.d.ts.map +1 -1
  20. package/dist/src/commands/agent.js +5 -907
  21. package/dist/src/commands/agent.js.map +1 -1
  22. package/dist/src/commands/analyze-ast.d.ts +26 -0
  23. package/dist/src/commands/analyze-ast.d.ts.map +1 -0
  24. package/dist/src/commands/analyze-ast.js +284 -0
  25. package/dist/src/commands/analyze-ast.js.map +1 -0
  26. package/dist/src/commands/analyze-boundaries.d.ts +14 -0
  27. package/dist/src/commands/analyze-boundaries.d.ts.map +1 -0
  28. package/dist/src/commands/analyze-boundaries.js +295 -0
  29. package/dist/src/commands/analyze-boundaries.js.map +1 -0
  30. package/dist/src/commands/analyze-diff.d.ts +8 -0
  31. package/dist/src/commands/analyze-diff.d.ts.map +1 -0
  32. package/dist/src/commands/analyze-diff.js +395 -0
  33. package/dist/src/commands/analyze-diff.js.map +1 -0
  34. package/dist/src/commands/analyze-graph.d.ts +14 -0
  35. package/dist/src/commands/analyze-graph.d.ts.map +1 -0
  36. package/dist/src/commands/analyze-graph.js +304 -0
  37. package/dist/src/commands/analyze-graph.js.map +1 -0
  38. package/dist/src/commands/analyze-imports.d.ts +11 -0
  39. package/dist/src/commands/analyze-imports.d.ts.map +1 -0
  40. package/dist/src/commands/analyze-imports.js +287 -0
  41. package/dist/src/commands/analyze-imports.js.map +1 -0
  42. package/dist/src/commands/analyze-symbols.d.ts +14 -0
  43. package/dist/src/commands/analyze-symbols.d.ts.map +1 -0
  44. package/dist/src/commands/analyze-symbols.js +302 -0
  45. package/dist/src/commands/analyze-symbols.js.map +1 -0
  46. package/dist/src/commands/analyze.d.ts +38 -0
  47. package/dist/src/commands/analyze.d.ts.map +1 -1
  48. package/dist/src/commands/analyze.js +12 -1827
  49. package/dist/src/commands/analyze.js.map +1 -1
  50. package/dist/src/commands/doctor-env-checks.d.ts +26 -0
  51. package/dist/src/commands/doctor-env-checks.d.ts.map +1 -0
  52. package/dist/src/commands/doctor-env-checks.js +189 -0
  53. package/dist/src/commands/doctor-env-checks.js.map +1 -0
  54. package/dist/src/commands/doctor-project-checks.d.ts +19 -0
  55. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -0
  56. package/dist/src/commands/doctor-project-checks.js +388 -0
  57. package/dist/src/commands/doctor-project-checks.js.map +1 -0
  58. package/dist/src/commands/doctor.d.ts.map +1 -1
  59. package/dist/src/commands/doctor.js +51 -942
  60. package/dist/src/commands/doctor.js.map +1 -1
  61. package/dist/src/commands/hive-mind-comms.d.ts +11 -0
  62. package/dist/src/commands/hive-mind-comms.d.ts.map +1 -0
  63. package/dist/src/commands/hive-mind-comms.js +242 -0
  64. package/dist/src/commands/hive-mind-comms.js.map +1 -0
  65. package/dist/src/commands/hive-mind-helpers.d.ts +35 -0
  66. package/dist/src/commands/hive-mind-helpers.d.ts.map +1 -0
  67. package/dist/src/commands/hive-mind-helpers.js +203 -0
  68. package/dist/src/commands/hive-mind-helpers.js.map +1 -0
  69. package/dist/src/commands/hive-mind-ops.d.ts +8 -0
  70. package/dist/src/commands/hive-mind-ops.d.ts.map +1 -0
  71. package/dist/src/commands/hive-mind-ops.js +233 -0
  72. package/dist/src/commands/hive-mind-ops.js.map +1 -0
  73. package/dist/src/commands/hive-mind-spawn.d.ts +12 -0
  74. package/dist/src/commands/hive-mind-spawn.d.ts.map +1 -0
  75. package/dist/src/commands/hive-mind-spawn.js +274 -0
  76. package/dist/src/commands/hive-mind-spawn.js.map +1 -0
  77. package/dist/src/commands/hive-mind.d.ts.map +1 -1
  78. package/dist/src/commands/hive-mind.js +10 -1129
  79. package/dist/src/commands/hive-mind.js.map +1 -1
  80. package/dist/src/commands/hooks-coverage-commands.d.ts +4 -4
  81. package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -1
  82. package/dist/src/commands/hooks-coverage-commands.js +19 -819
  83. package/dist/src/commands/hooks-coverage-commands.js.map +1 -1
  84. package/dist/src/commands/hooks-coverage-gaps.d.ts +7 -0
  85. package/dist/src/commands/hooks-coverage-gaps.d.ts.map +1 -0
  86. package/dist/src/commands/hooks-coverage-gaps.js +334 -0
  87. package/dist/src/commands/hooks-coverage-gaps.js.map +1 -0
  88. package/dist/src/commands/hooks-coverage-routing.d.ts +7 -0
  89. package/dist/src/commands/hooks-coverage-routing.d.ts.map +1 -0
  90. package/dist/src/commands/hooks-coverage-routing.js +399 -0
  91. package/dist/src/commands/hooks-coverage-routing.js.map +1 -0
  92. package/dist/src/commands/init-subcommands.d.ts +8 -0
  93. package/dist/src/commands/init-subcommands.d.ts.map +1 -0
  94. package/dist/src/commands/init-subcommands.js +156 -0
  95. package/dist/src/commands/init-subcommands.js.map +1 -0
  96. package/dist/src/commands/init-upgrade.d.ts +6 -0
  97. package/dist/src/commands/init-upgrade.d.ts.map +1 -0
  98. package/dist/src/commands/init-upgrade.js +203 -0
  99. package/dist/src/commands/init-upgrade.js.map +1 -0
  100. package/dist/src/commands/init-wizard.d.ts +6 -0
  101. package/dist/src/commands/init-wizard.d.ts.map +1 -0
  102. package/dist/src/commands/init-wizard.js +246 -0
  103. package/dist/src/commands/init-wizard.js.map +1 -0
  104. package/dist/src/commands/init.d.ts.map +1 -1
  105. package/dist/src/commands/init.js +6 -623
  106. package/dist/src/commands/init.js.map +1 -1
  107. package/dist/src/commands/memory-admin.d.ts +10 -0
  108. package/dist/src/commands/memory-admin.d.ts.map +1 -0
  109. package/dist/src/commands/memory-admin.js +433 -0
  110. package/dist/src/commands/memory-admin.js.map +1 -0
  111. package/dist/src/commands/memory-crud.d.ts +9 -0
  112. package/dist/src/commands/memory-crud.d.ts.map +1 -0
  113. package/dist/src/commands/memory-crud.js +342 -0
  114. package/dist/src/commands/memory-crud.js.map +1 -0
  115. package/dist/src/commands/memory-list.d.ts +10 -0
  116. package/dist/src/commands/memory-list.d.ts.map +1 -0
  117. package/dist/src/commands/memory-list.js +321 -0
  118. package/dist/src/commands/memory-list.js.map +1 -0
  119. package/dist/src/commands/memory-transfer.d.ts +9 -0
  120. package/dist/src/commands/memory-transfer.d.ts.map +1 -0
  121. package/dist/src/commands/memory-transfer.js +372 -0
  122. package/dist/src/commands/memory-transfer.js.map +1 -0
  123. package/dist/src/commands/memory.d.ts +6 -0
  124. package/dist/src/commands/memory.d.ts.map +1 -1
  125. package/dist/src/commands/memory.js +10 -1441
  126. package/dist/src/commands/memory.js.map +1 -1
  127. package/dist/src/commands/neural-core.d.ts +8 -0
  128. package/dist/src/commands/neural-core.d.ts.map +1 -0
  129. package/dist/src/commands/neural-core.js +274 -0
  130. package/dist/src/commands/neural-core.js.map +1 -0
  131. package/dist/src/commands/neural-optimize.d.ts +7 -0
  132. package/dist/src/commands/neural-optimize.d.ts.map +1 -0
  133. package/dist/src/commands/neural-optimize.js +332 -0
  134. package/dist/src/commands/neural-optimize.js.map +1 -0
  135. package/dist/src/commands/neural-registry.d.ts +7 -0
  136. package/dist/src/commands/neural-registry.d.ts.map +1 -0
  137. package/dist/src/commands/neural-registry.js +290 -0
  138. package/dist/src/commands/neural-registry.js.map +1 -0
  139. package/dist/src/commands/neural.d.ts.map +1 -1
  140. package/dist/src/commands/neural.js +3 -974
  141. package/dist/src/commands/neural.js.map +1 -1
  142. package/dist/src/commands/platforms.d.ts.map +1 -1
  143. package/dist/src/commands/platforms.js +327 -7
  144. package/dist/src/commands/platforms.js.map +1 -1
  145. package/dist/src/commands/security-cve.d.ts +6 -0
  146. package/dist/src/commands/security-cve.d.ts.map +1 -0
  147. package/dist/src/commands/security-cve.js +310 -0
  148. package/dist/src/commands/security-cve.js.map +1 -0
  149. package/dist/src/commands/security-misc.d.ts +9 -0
  150. package/dist/src/commands/security-misc.d.ts.map +1 -0
  151. package/dist/src/commands/security-misc.js +293 -0
  152. package/dist/src/commands/security-misc.js.map +1 -0
  153. package/dist/src/commands/security-scan.d.ts +18 -0
  154. package/dist/src/commands/security-scan.d.ts.map +1 -0
  155. package/dist/src/commands/security-scan.js +328 -0
  156. package/dist/src/commands/security-scan.js.map +1 -0
  157. package/dist/src/commands/security.d.ts.map +1 -1
  158. package/dist/src/commands/security.js +3 -958
  159. package/dist/src/commands/security.js.map +1 -1
  160. package/dist/src/commands/session.js +1 -1
  161. package/dist/src/commands/session.js.map +1 -1
  162. package/dist/src/commands/swarm.d.ts.map +1 -1
  163. package/dist/src/commands/swarm.js +23 -17
  164. package/dist/src/commands/swarm.js.map +1 -1
  165. package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
  166. package/dist/src/mcp-tools/swarm-tools.js +77 -0
  167. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  168. package/dist/src/parser.d.ts.map +1 -1
  169. package/dist/src/parser.js +11 -6
  170. package/dist/src/parser.js.map +1 -1
  171. package/dist/src/routing/llm-caller.d.ts.map +1 -1
  172. package/dist/src/routing/llm-caller.js +1 -2
  173. package/dist/src/routing/llm-caller.js.map +1 -1
  174. package/dist/tsconfig.tsbuildinfo +1 -1
  175. package/package.json +2 -3
  176. package/scripts/understand-analyze.mjs +1 -1
@@ -0,0 +1,304 @@
1
+ /**
2
+ * Analyze dependencies and circular subcommands
3
+ * Full dependency graph building and circular dependency detection
4
+ */
5
+ import { output } from '../output.js';
6
+ import { resolve } from 'path';
7
+ import { getGraphAnalyzer, safeWriteOutputFile } from './analyze.js';
8
+ /**
9
+ * Build and export dependency graph
10
+ */
11
+ export const dependenciesCommand = {
12
+ name: 'dependencies',
13
+ aliases: ['graph'],
14
+ description: 'Build and export full dependency graph',
15
+ options: [
16
+ {
17
+ name: 'output',
18
+ short: 'o',
19
+ description: 'Output file path',
20
+ type: 'string',
21
+ },
22
+ {
23
+ name: 'format',
24
+ short: 'f',
25
+ description: 'Output format (text, json, dot)',
26
+ type: 'string',
27
+ default: 'text',
28
+ choices: ['text', 'json', 'dot'],
29
+ },
30
+ {
31
+ name: 'include',
32
+ short: 'i',
33
+ description: 'File extensions to include (comma-separated)',
34
+ type: 'string',
35
+ default: '.ts,.tsx,.js,.jsx,.mjs,.cjs',
36
+ },
37
+ {
38
+ name: 'exclude',
39
+ short: 'e',
40
+ description: 'Patterns to exclude (comma-separated)',
41
+ type: 'string',
42
+ default: 'node_modules,dist,build,.git',
43
+ },
44
+ {
45
+ name: 'depth',
46
+ short: 'd',
47
+ description: 'Maximum directory depth',
48
+ type: 'number',
49
+ default: 10,
50
+ },
51
+ ],
52
+ examples: [
53
+ { command: 'monomind analyze dependencies src/', description: 'Build dependency graph' },
54
+ { command: 'monomind analyze dependencies -f dot -o deps.dot src/', description: 'Export to DOT' },
55
+ { command: 'monomind analyze dependencies -i .ts,.tsx src/', description: 'Only TypeScript files' },
56
+ ],
57
+ action: async (ctx) => {
58
+ const targetDir = ctx.args[0] || ctx.cwd;
59
+ const outputFile = ctx.flags.output;
60
+ const format = ctx.flags.format || 'text';
61
+ const include = (ctx.flags.include || '.ts,.tsx,.js,.jsx,.mjs,.cjs').split(',');
62
+ const exclude = (ctx.flags.exclude || 'node_modules,dist,build,.git').split(',');
63
+ const rawDepth = ctx.flags.depth || 10;
64
+ const maxDepth = Number.isFinite(rawDepth) ? Math.max(1, Math.min(rawDepth, 50)) : 10;
65
+ output.printInfo(`Building dependency graph for: ${output.highlight(targetDir)}`);
66
+ output.writeln();
67
+ const spinner = output.createSpinner({ text: 'Scanning files...', spinner: 'dots' });
68
+ spinner.start();
69
+ try {
70
+ const analyzer = await getGraphAnalyzer();
71
+ if (!analyzer) {
72
+ spinner.stop();
73
+ output.printError('Graph analyzer module not available');
74
+ return { success: false, exitCode: 1 };
75
+ }
76
+ const graph = await analyzer.buildDependencyGraph(resolve(targetDir), {
77
+ include,
78
+ exclude,
79
+ maxDepth,
80
+ });
81
+ spinner.stop();
82
+ // Detect circular dependencies
83
+ const circularDeps = analyzer.detectCircularDependencies(graph);
84
+ // Handle different output formats
85
+ if (format === 'json') {
86
+ const jsonOutput = {
87
+ nodes: Array.from(graph.nodes.values()),
88
+ edges: graph.edges,
89
+ metadata: graph.metadata,
90
+ circularDependencies: circularDeps,
91
+ };
92
+ if (outputFile) {
93
+ await safeWriteOutputFile(outputFile, JSON.stringify(jsonOutput, null, 2));
94
+ output.printSuccess(`Graph written to ${outputFile}`);
95
+ }
96
+ else {
97
+ output.printJson(jsonOutput);
98
+ }
99
+ return { success: true, data: jsonOutput };
100
+ }
101
+ if (format === 'dot') {
102
+ const result = { graph, circularDependencies: circularDeps, statistics: {
103
+ nodeCount: graph.nodes.size,
104
+ edgeCount: graph.edges.length,
105
+ avgDegree: 0,
106
+ maxDegree: 0,
107
+ density: 0,
108
+ componentCount: 0,
109
+ } };
110
+ const dotOutput = analyzer.exportToDot(result, {
111
+ includeLabels: true,
112
+ highlightCycles: true,
113
+ });
114
+ if (outputFile) {
115
+ await safeWriteOutputFile(outputFile, dotOutput);
116
+ output.printSuccess(`DOT graph written to ${outputFile}`);
117
+ output.writeln(output.dim('Visualize with: dot -Tpng -o deps.png ' + outputFile));
118
+ }
119
+ else {
120
+ output.writeln(dotOutput);
121
+ }
122
+ return { success: true };
123
+ }
124
+ // Text format (default)
125
+ output.printBox([
126
+ `Files: ${graph.metadata.totalFiles}`,
127
+ `Dependencies: ${graph.metadata.totalEdges}`,
128
+ `Build time: ${graph.metadata.buildTime}ms`,
129
+ `Root: ${graph.metadata.rootDir}`,
130
+ ].join('\n'), 'Dependency Graph');
131
+ // Show top files by imports
132
+ output.writeln();
133
+ output.writeln(output.bold('Most Connected Files'));
134
+ output.writeln();
135
+ const nodesByDegree = Array.from(graph.nodes.values())
136
+ .map((n) => ({
137
+ ...n,
138
+ degree: graph.edges.filter((e) => e.source === n.id || e.target === n.id).length,
139
+ }))
140
+ .sort((a, b) => b.degree - a.degree)
141
+ .slice(0, 10);
142
+ output.printTable({
143
+ columns: [
144
+ { key: 'path', header: 'File', width: 50 },
145
+ { key: 'degree', header: 'Connections', width: 12, align: 'right' },
146
+ { key: 'complexity', header: 'Complexity', width: 12, align: 'right' },
147
+ ],
148
+ data: nodesByDegree.map(n => ({
149
+ path: n.path.length > 48 ? '...' + n.path.slice(-45) : n.path,
150
+ degree: n.degree,
151
+ complexity: n.complexity || 0,
152
+ })),
153
+ });
154
+ // Show circular dependencies
155
+ if (circularDeps.length > 0) {
156
+ output.writeln();
157
+ output.writeln(output.bold(output.warning(`Circular Dependencies: ${circularDeps.length}`)));
158
+ output.writeln();
159
+ for (const cycle of circularDeps.slice(0, 3)) {
160
+ output.writeln(` ${cycle.cycle.join(' -> ')}`);
161
+ }
162
+ if (circularDeps.length > 3) {
163
+ output.writeln(output.dim(` ... and ${circularDeps.length - 3} more`));
164
+ }
165
+ }
166
+ if (outputFile) {
167
+ const fullOutput = {
168
+ nodes: Array.from(graph.nodes.values()),
169
+ edges: graph.edges,
170
+ metadata: graph.metadata,
171
+ circularDependencies: circularDeps,
172
+ };
173
+ await safeWriteOutputFile(outputFile, JSON.stringify(fullOutput, null, 2));
174
+ output.printSuccess(`Full results written to ${outputFile}`);
175
+ }
176
+ return { success: true };
177
+ }
178
+ catch (error) {
179
+ spinner.stop();
180
+ const message = error instanceof Error ? error.message : String(error);
181
+ output.printError(`Analysis failed: ${message}`);
182
+ return { success: false, exitCode: 1 };
183
+ }
184
+ },
185
+ };
186
+ /**
187
+ * Detect circular dependencies
188
+ */
189
+ export const circularCommand = {
190
+ name: 'circular',
191
+ aliases: ['cycles'],
192
+ description: 'Detect circular dependencies in codebase',
193
+ options: [
194
+ {
195
+ name: 'output',
196
+ short: 'o',
197
+ description: 'Output file path',
198
+ type: 'string',
199
+ },
200
+ {
201
+ name: 'format',
202
+ short: 'f',
203
+ description: 'Output format (text, json)',
204
+ type: 'string',
205
+ default: 'text',
206
+ choices: ['text', 'json'],
207
+ },
208
+ {
209
+ name: 'severity',
210
+ short: 's',
211
+ description: 'Minimum severity to show (low, medium, high)',
212
+ type: 'string',
213
+ default: 'low',
214
+ choices: ['low', 'medium', 'high'],
215
+ },
216
+ ],
217
+ examples: [
218
+ { command: 'monomind analyze circular src/', description: 'Find circular dependencies' },
219
+ { command: 'monomind analyze circular -s high src/', description: 'Only high severity cycles' },
220
+ ],
221
+ action: async (ctx) => {
222
+ const targetDir = ctx.args[0] || ctx.cwd;
223
+ const outputFile = ctx.flags.output;
224
+ const format = ctx.flags.format || 'text';
225
+ const minSeverity = ctx.flags.severity || 'low';
226
+ output.printInfo(`Detecting circular dependencies in: ${output.highlight(targetDir)}`);
227
+ output.writeln();
228
+ const spinner = output.createSpinner({ text: 'Analyzing dependencies...', spinner: 'dots' });
229
+ spinner.start();
230
+ try {
231
+ const analyzer = await getGraphAnalyzer();
232
+ if (!analyzer) {
233
+ spinner.stop();
234
+ output.printError('Graph analyzer module not available');
235
+ return { success: false, exitCode: 1 };
236
+ }
237
+ const graph = await analyzer.buildDependencyGraph(resolve(targetDir));
238
+ const cycles = analyzer.detectCircularDependencies(graph);
239
+ spinner.stop();
240
+ // Filter by severity
241
+ const severityOrder = { low: 0, medium: 1, high: 2 };
242
+ const minLevel = severityOrder[minSeverity] || 0;
243
+ const filtered = cycles.filter(c => severityOrder[c.severity] >= minLevel);
244
+ if (format === 'json') {
245
+ const jsonOutput = { cycles: filtered, total: cycles.length, filtered: filtered.length };
246
+ if (outputFile) {
247
+ await safeWriteOutputFile(outputFile, JSON.stringify(jsonOutput, null, 2));
248
+ output.printSuccess(`Results written to ${outputFile}`);
249
+ }
250
+ else {
251
+ output.printJson(jsonOutput);
252
+ }
253
+ return { success: true, data: jsonOutput };
254
+ }
255
+ // Text format
256
+ if (filtered.length === 0) {
257
+ output.printSuccess('No circular dependencies found!');
258
+ return { success: true };
259
+ }
260
+ output.printBox([
261
+ `Total cycles: ${cycles.length}`,
262
+ `Shown (${minSeverity}+): ${filtered.length}`,
263
+ `High severity: ${cycles.filter(c => c.severity === 'high').length}`,
264
+ `Medium severity: ${cycles.filter(c => c.severity === 'medium').length}`,
265
+ `Low severity: ${cycles.filter(c => c.severity === 'low').length}`,
266
+ ].join('\n'), 'Circular Dependencies');
267
+ output.writeln();
268
+ // Group by severity
269
+ const grouped = {
270
+ high: filtered.filter(c => c.severity === 'high'),
271
+ medium: filtered.filter(c => c.severity === 'medium'),
272
+ low: filtered.filter(c => c.severity === 'low'),
273
+ };
274
+ for (const [severity, items] of Object.entries(grouped)) {
275
+ if (items.length === 0)
276
+ continue;
277
+ const color = severity === 'high' ? output.error : severity === 'medium' ? output.warning : output.dim;
278
+ output.writeln(color(output.bold(`${severity.toUpperCase()} SEVERITY (${items.length})`)));
279
+ output.writeln();
280
+ for (const cycle of items.slice(0, 5)) {
281
+ output.writeln(` ${cycle.cycle.join(' -> ')}`);
282
+ output.writeln(output.dim(` Fix: ${cycle.suggestion}`));
283
+ output.writeln();
284
+ }
285
+ if (items.length > 5) {
286
+ output.writeln(output.dim(` ... and ${items.length - 5} more ${severity} cycles`));
287
+ output.writeln();
288
+ }
289
+ }
290
+ if (outputFile) {
291
+ await safeWriteOutputFile(outputFile, JSON.stringify({ cycles: filtered }, null, 2));
292
+ output.printSuccess(`Results written to ${outputFile}`);
293
+ }
294
+ return { success: true, data: { cycles: filtered } };
295
+ }
296
+ catch (error) {
297
+ spinner.stop();
298
+ const message = error instanceof Error ? error.message : String(error);
299
+ output.printError(`Analysis failed: ${message}`);
300
+ return { success: false, exitCode: 1 };
301
+ }
302
+ },
303
+ };
304
+ //# sourceMappingURL=analyze-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-graph.js","sourceRoot":"","sources":["../../../src/commands/analyze-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Analyze imports and deps subcommands
3
+ * Import dependency analysis and project dependency checking
4
+ */
5
+ import type { Command } from '../types.js';
6
+ /**
7
+ * Imports analysis subcommand
8
+ */
9
+ export declare const importsCommand: Command;
10
+ export declare const depsCommand: Command;
11
+ //# sourceMappingURL=analyze-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-imports.d.ts","sourceRoot":"","sources":["../../../src/commands/analyze-imports.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAO1E;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OA6J5B,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,OA8IzB,CAAC"}
@@ -0,0 +1,287 @@
1
+ /**
2
+ * Analyze imports and deps subcommands
3
+ * Import dependency analysis and project dependency checking
4
+ */
5
+ import { output } from '../output.js';
6
+ import * as fs from 'fs/promises';
7
+ import { resolve } from 'path';
8
+ import { execSync } from 'child_process';
9
+ import { getASTAnalyzer, safeWriteOutputFile, scanSourceFiles, fallbackAnalyze } from './analyze.js';
10
+ /**
11
+ * Imports analysis subcommand
12
+ */
13
+ export const importsCommand = {
14
+ name: 'imports',
15
+ aliases: ['imp'],
16
+ description: 'Analyze import dependencies across files',
17
+ options: [
18
+ {
19
+ name: 'format',
20
+ short: 'f',
21
+ description: 'Output format (text, json)',
22
+ type: 'string',
23
+ default: 'text',
24
+ choices: ['text', 'json'],
25
+ },
26
+ {
27
+ name: 'output',
28
+ short: 'o',
29
+ description: 'Output file path',
30
+ type: 'string',
31
+ },
32
+ {
33
+ name: 'external',
34
+ short: 'e',
35
+ description: 'Show only external (npm) imports',
36
+ type: 'boolean',
37
+ default: false,
38
+ },
39
+ ],
40
+ examples: [
41
+ { command: 'monomind analyze imports src/', description: 'Analyze all imports' },
42
+ { command: 'monomind analyze imports src/ --external', description: 'Only npm packages' },
43
+ ],
44
+ action: async (ctx) => {
45
+ const targetPath = ctx.args[0] || ctx.cwd;
46
+ const formatType = ctx.flags.format || 'text';
47
+ const outputFile = ctx.flags.output;
48
+ const externalOnly = ctx.flags.external;
49
+ output.printInfo(`Analyzing imports: ${output.highlight(targetPath)}`);
50
+ output.writeln();
51
+ const spinner = output.createSpinner({ text: 'Scanning imports...', spinner: 'dots' });
52
+ spinner.start();
53
+ try {
54
+ const astModule = await getASTAnalyzer();
55
+ const resolvedPath = resolve(targetPath);
56
+ const stat = await fs.stat(resolvedPath);
57
+ const files = stat.isDirectory() ? await scanSourceFiles(resolvedPath) : [resolvedPath];
58
+ const importCounts = new Map();
59
+ const fileImports = new Map();
60
+ for (const file of files.slice(0, 100)) {
61
+ try {
62
+ const content = await fs.readFile(file, 'utf-8');
63
+ let analysis;
64
+ if (astModule) {
65
+ const analyzer = astModule.createASTAnalyzer();
66
+ analysis = analyzer.analyze(content, file);
67
+ }
68
+ else {
69
+ analysis = fallbackAnalyze(content, file);
70
+ }
71
+ const imports = analysis.imports.filter(imp => {
72
+ if (externalOnly) {
73
+ return !imp.startsWith('.') && !imp.startsWith('/');
74
+ }
75
+ return true;
76
+ });
77
+ fileImports.set(file, imports);
78
+ for (const imp of imports) {
79
+ const existing = importCounts.get(imp) || { count: 0, files: [] };
80
+ existing.count++;
81
+ existing.files.push(file);
82
+ importCounts.set(imp, existing);
83
+ }
84
+ }
85
+ catch {
86
+ // Skip files that can't be parsed
87
+ }
88
+ }
89
+ spinner.stop();
90
+ // Sort by count
91
+ const sortedImports = Array.from(importCounts.entries())
92
+ .sort((a, b) => b[1].count - a[1].count);
93
+ if (formatType === 'json') {
94
+ const jsonOutput = {
95
+ imports: Object.fromEntries(sortedImports),
96
+ fileImports: Object.fromEntries(fileImports),
97
+ };
98
+ if (outputFile) {
99
+ await safeWriteOutputFile(outputFile, JSON.stringify(jsonOutput, null, 2));
100
+ output.printSuccess(`Results written to ${outputFile}`);
101
+ }
102
+ else {
103
+ output.printJson(jsonOutput);
104
+ }
105
+ return { success: true, data: jsonOutput };
106
+ }
107
+ // Summary
108
+ const externalImports = sortedImports.filter(([imp]) => !imp.startsWith('.') && !imp.startsWith('/'));
109
+ const localImports = sortedImports.filter(([imp]) => imp.startsWith('.') || imp.startsWith('/'));
110
+ output.printBox([
111
+ `Total unique imports: ${sortedImports.length}`,
112
+ `External (npm): ${externalImports.length}`,
113
+ `Local (relative): ${localImports.length}`,
114
+ `Files scanned: ${files.length}`,
115
+ ].join('\n'), 'Import Analysis');
116
+ // Most used imports
117
+ output.writeln();
118
+ output.writeln(output.bold('Most Used Imports'));
119
+ output.writeln(output.dim('-'.repeat(60)));
120
+ const topImports = sortedImports.slice(0, 20);
121
+ output.printTable({
122
+ columns: [
123
+ { key: 'count', header: 'Uses', width: 8, align: 'right' },
124
+ { key: 'import', header: 'Import', width: 50 },
125
+ { key: 'type', header: 'Type', width: 10 },
126
+ ],
127
+ data: topImports.map(([imp, data]) => ({
128
+ count: data.count,
129
+ import: imp,
130
+ type: imp.startsWith('.') || imp.startsWith('/') ? output.dim('local') : output.highlight('npm'),
131
+ })),
132
+ });
133
+ if (sortedImports.length > 20) {
134
+ output.writeln(output.dim(` ... and ${sortedImports.length - 20} more imports`));
135
+ }
136
+ if (outputFile) {
137
+ await safeWriteOutputFile(outputFile, JSON.stringify({
138
+ imports: Object.fromEntries(sortedImports),
139
+ fileImports: Object.fromEntries(fileImports),
140
+ }, null, 2));
141
+ output.printSuccess(`Results written to ${outputFile}`);
142
+ }
143
+ return { success: true, data: { imports: sortedImports } };
144
+ }
145
+ catch (error) {
146
+ spinner.stop();
147
+ const message = error instanceof Error ? error.message : String(error);
148
+ output.printError(`Import analysis failed: ${message}`);
149
+ return { success: false, exitCode: 1 };
150
+ }
151
+ },
152
+ };
153
+ // Dependencies subcommand
154
+ export const depsCommand = {
155
+ name: 'deps',
156
+ description: 'Analyze project dependencies',
157
+ options: [
158
+ { name: 'outdated', short: 'o', type: 'boolean', description: 'Show only outdated dependencies' },
159
+ { name: 'security', short: 's', type: 'boolean', description: 'Check for security vulnerabilities' },
160
+ { name: 'format', short: 'f', type: 'string', description: 'Output format: text, json', default: 'text' },
161
+ ],
162
+ examples: [
163
+ { command: 'monomind analyze deps --outdated', description: 'Show outdated dependencies' },
164
+ { command: 'monomind analyze deps --security', description: 'Check for vulnerabilities' },
165
+ ],
166
+ action: async (ctx) => {
167
+ const showOutdated = ctx.flags.outdated;
168
+ const checkSecurity = ctx.flags.security;
169
+ const formatJson = ctx.flags.format === 'json';
170
+ output.writeln();
171
+ output.writeln(output.bold('Dependency Analysis'));
172
+ output.writeln(output.dim('-'.repeat(50)));
173
+ try {
174
+ const pkgPath = resolve('package.json');
175
+ let pkgContent;
176
+ try {
177
+ pkgContent = await fs.readFile(pkgPath, 'utf-8');
178
+ }
179
+ catch {
180
+ output.printError('No package.json found in current directory');
181
+ return { success: false, exitCode: 1 };
182
+ }
183
+ const pkg = JSON.parse(pkgContent);
184
+ const deps = Object.entries(pkg.dependencies || {});
185
+ const devDeps = Object.entries(pkg.devDependencies || {});
186
+ const optDeps = Object.entries(pkg.optionalDependencies || {});
187
+ const peerDeps = Object.entries(pkg.peerDependencies || {});
188
+ const total = deps.length + devDeps.length + optDeps.length + peerDeps.length;
189
+ if (formatJson && !showOutdated && !checkSecurity) {
190
+ const jsonData = { name: pkg.name, version: pkg.version, dependencies: deps.length, devDependencies: devDeps.length, optionalDependencies: optDeps.length, peerDependencies: peerDeps.length, total };
191
+ output.printJson(jsonData);
192
+ return { success: true, data: jsonData };
193
+ }
194
+ output.printBox([`Package: ${pkg.name || 'unknown'} @ ${pkg.version || '0.0.0'}`, `Dependencies: ${deps.length}`, `Dev Dependencies: ${devDeps.length}`, `Optional: ${optDeps.length}`, `Peer: ${peerDeps.length}`, `Total: ${total}`].join('\n'), 'Dependency Summary');
195
+ if (showOutdated) {
196
+ output.writeln();
197
+ output.writeln(output.bold('Outdated Check'));
198
+ output.writeln(output.dim('-'.repeat(60)));
199
+ const outdated = [];
200
+ const checkDeps = async (entries, category) => {
201
+ for (const [name, declared] of entries) {
202
+ try {
203
+ const installedPkg = resolve('node_modules', name, 'package.json');
204
+ const raw = await fs.readFile(installedPkg, 'utf-8');
205
+ const installedContent = JSON.parse(raw);
206
+ const installed = installedContent.version || 'unknown';
207
+ const cleanDeclared = declared.replace(/^[\^~>=<]+/, '');
208
+ if (installed !== cleanDeclared) {
209
+ outdated.push({ name, declared: declared, installed, category });
210
+ }
211
+ }
212
+ catch {
213
+ outdated.push({ name, declared: declared, installed: 'not installed', category });
214
+ }
215
+ }
216
+ };
217
+ await checkDeps(deps, 'prod');
218
+ await checkDeps(devDeps, 'dev');
219
+ if (outdated.length === 0) {
220
+ output.printSuccess('All dependencies match declared versions');
221
+ }
222
+ else {
223
+ output.printTable({
224
+ columns: [
225
+ { key: 'name', header: 'Package', width: 30 },
226
+ { key: 'declared', header: 'Declared', width: 14 },
227
+ { key: 'installed', header: 'Installed', width: 14 },
228
+ { key: 'category', header: 'Type', width: 6 },
229
+ ],
230
+ data: outdated.slice(0, 30),
231
+ });
232
+ if (outdated.length > 30) {
233
+ output.writeln(output.dim(` ... and ${outdated.length - 30} more`));
234
+ }
235
+ }
236
+ }
237
+ if (checkSecurity) {
238
+ output.writeln();
239
+ output.writeln(output.bold('Security Audit'));
240
+ output.writeln(output.dim('-'.repeat(60)));
241
+ try {
242
+ const auditRaw = execSync('npm audit --json 2>/dev/null', { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
243
+ const audit = JSON.parse(auditRaw);
244
+ const vulns = audit.metadata?.vulnerabilities || audit.vulnerabilities || {};
245
+ const info = vulns.info || 0;
246
+ const low = vulns.low || 0;
247
+ const moderate = vulns.moderate || 0;
248
+ const high = vulns.high || 0;
249
+ const critical = vulns.critical || 0;
250
+ const totalVulns = info + low + moderate + high + critical;
251
+ if (totalVulns === 0) {
252
+ output.printSuccess('No known vulnerabilities found');
253
+ }
254
+ else {
255
+ output.printTable({
256
+ columns: [
257
+ { key: 'severity', header: 'Severity', width: 12 },
258
+ { key: 'count', header: 'Count', width: 8, align: 'right' },
259
+ ],
260
+ data: [
261
+ ...(critical > 0 ? [{ severity: 'Critical', count: critical }] : []),
262
+ ...(high > 0 ? [{ severity: 'High', count: high }] : []),
263
+ ...(moderate > 0 ? [{ severity: 'Moderate', count: moderate }] : []),
264
+ ...(low > 0 ? [{ severity: 'Low', count: low }] : []),
265
+ ...(info > 0 ? [{ severity: 'Info', count: info }] : []),
266
+ { severity: 'Total', count: totalVulns },
267
+ ],
268
+ });
269
+ if (critical > 0 || high > 0) {
270
+ output.printWarning(`${critical + high} high/critical vulnerabilities found. Run 'npm audit' for details.`);
271
+ }
272
+ }
273
+ }
274
+ catch {
275
+ output.printWarning('npm audit failed. Ensure npm is available and node_modules is installed.');
276
+ }
277
+ }
278
+ return { success: true };
279
+ }
280
+ catch (error) {
281
+ const message = error instanceof Error ? error.message : String(error);
282
+ output.printError(`Dependency analysis failed: ${message}`);
283
+ return { success: false, exitCode: 1 };
284
+ }
285
+ },
286
+ };
287
+ //# sourceMappingURL=analyze-imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-imports.js","sourceRoot":"","sources":["../../../src/commands/analyze-imports.ts"],"names":[],"mappings":"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"}