@yalehwang/archguard 0.1.6 → 0.1.7

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 (100) hide show
  1. package/README.md +57 -35
  2. package/dist/cli/analyze/normalize-to-diagrams.d.ts +5 -0
  3. package/dist/cli/analyze/normalize-to-diagrams.d.ts.map +1 -0
  4. package/dist/cli/analyze/normalize-to-diagrams.js +64 -0
  5. package/dist/cli/analyze/normalize-to-diagrams.js.map +1 -0
  6. package/dist/cli/analyze/run-analysis.d.ts +20 -0
  7. package/dist/cli/analyze/run-analysis.d.ts.map +1 -0
  8. package/dist/cli/analyze/run-analysis.js +147 -0
  9. package/dist/cli/analyze/run-analysis.js.map +1 -0
  10. package/dist/cli/cache/arch-json-disk-cache.d.ts.map +1 -1
  11. package/dist/cli/cache/arch-json-disk-cache.js +2 -1
  12. package/dist/cli/cache/arch-json-disk-cache.js.map +1 -1
  13. package/dist/cli/cache/diagram-manifest.d.ts +13 -0
  14. package/dist/cli/cache/diagram-manifest.d.ts.map +1 -0
  15. package/dist/cli/cache/diagram-manifest.js +60 -0
  16. package/dist/cli/cache/diagram-manifest.js.map +1 -0
  17. package/dist/cli/cache/render-hash-cache.d.ts +13 -0
  18. package/dist/cli/cache/render-hash-cache.d.ts.map +1 -0
  19. package/dist/cli/cache/render-hash-cache.js +39 -0
  20. package/dist/cli/cache/render-hash-cache.js.map +1 -0
  21. package/dist/cli/commands/analyze.d.ts +1 -4
  22. package/dist/cli/commands/analyze.d.ts.map +1 -1
  23. package/dist/cli/commands/analyze.js +26 -143
  24. package/dist/cli/commands/analyze.js.map +1 -1
  25. package/dist/cli/commands/cache.d.ts.map +1 -1
  26. package/dist/cli/commands/cache.js +7 -0
  27. package/dist/cli/commands/cache.js.map +1 -1
  28. package/dist/cli/commands/mcp.d.ts +3 -0
  29. package/dist/cli/commands/mcp.d.ts.map +1 -0
  30. package/dist/cli/commands/mcp.js +21 -0
  31. package/dist/cli/commands/mcp.js.map +1 -0
  32. package/dist/cli/commands/query.d.ts +3 -0
  33. package/dist/cli/commands/query.d.ts.map +1 -0
  34. package/dist/cli/commands/query.js +227 -0
  35. package/dist/cli/commands/query.js.map +1 -0
  36. package/dist/cli/index.d.ts.map +1 -1
  37. package/dist/cli/index.js +4 -0
  38. package/dist/cli/index.js.map +1 -1
  39. package/dist/cli/mcp/analyze-tool.d.ts +10 -0
  40. package/dist/cli/mcp/analyze-tool.d.ts.map +1 -0
  41. package/dist/cli/mcp/analyze-tool.js +116 -0
  42. package/dist/cli/mcp/analyze-tool.js.map +1 -0
  43. package/dist/cli/mcp/mcp-server.d.ts +6 -0
  44. package/dist/cli/mcp/mcp-server.d.ts.map +1 -0
  45. package/dist/cli/mcp/mcp-server.js +114 -0
  46. package/dist/cli/mcp/mcp-server.js.map +1 -0
  47. package/dist/cli/processors/arch-json-provider.d.ts +38 -0
  48. package/dist/cli/processors/arch-json-provider.d.ts.map +1 -0
  49. package/dist/cli/processors/arch-json-provider.js +289 -0
  50. package/dist/cli/processors/arch-json-provider.js.map +1 -0
  51. package/dist/cli/processors/diagram-output-router.d.ts +26 -0
  52. package/dist/cli/processors/diagram-output-router.d.ts.map +1 -0
  53. package/dist/cli/processors/diagram-output-router.js +234 -0
  54. package/dist/cli/processors/diagram-output-router.js.map +1 -0
  55. package/dist/cli/processors/diagram-processor.d.ts +11 -22
  56. package/dist/cli/processors/diagram-processor.d.ts.map +1 -1
  57. package/dist/cli/processors/diagram-processor.js +37 -455
  58. package/dist/cli/processors/diagram-processor.js.map +1 -1
  59. package/dist/cli/progress.d.ts +22 -1
  60. package/dist/cli/progress.d.ts.map +1 -1
  61. package/dist/cli/progress.js +24 -0
  62. package/dist/cli/progress.js.map +1 -1
  63. package/dist/cli/query/arch-index-builder.d.ts +4 -0
  64. package/dist/cli/query/arch-index-builder.d.ts.map +1 -0
  65. package/dist/cli/query/arch-index-builder.js +126 -0
  66. package/dist/cli/query/arch-index-builder.js.map +1 -0
  67. package/dist/cli/query/arch-index.d.ts +17 -0
  68. package/dist/cli/query/arch-index.d.ts.map +1 -0
  69. package/dist/cli/query/arch-index.js +2 -0
  70. package/dist/cli/query/arch-index.js.map +1 -0
  71. package/dist/cli/query/engine-loader.d.ts +7 -0
  72. package/dist/cli/query/engine-loader.d.ts.map +1 -0
  73. package/dist/cli/query/engine-loader.js +98 -0
  74. package/dist/cli/query/engine-loader.js.map +1 -0
  75. package/dist/cli/query/query-artifacts.d.ts +7 -0
  76. package/dist/cli/query/query-artifacts.d.ts.map +1 -0
  77. package/dist/cli/query/query-artifacts.js +78 -0
  78. package/dist/cli/query/query-artifacts.js.map +1 -0
  79. package/dist/cli/query/query-engine.d.ts +49 -0
  80. package/dist/cli/query/query-engine.d.ts.map +1 -0
  81. package/dist/cli/query/query-engine.js +137 -0
  82. package/dist/cli/query/query-engine.js.map +1 -0
  83. package/dist/cli/query/query-manifest.d.ts +24 -0
  84. package/dist/cli/query/query-manifest.d.ts.map +1 -0
  85. package/dist/cli/query/query-manifest.js +2 -0
  86. package/dist/cli/query/query-manifest.js.map +1 -0
  87. package/dist/cli/utils/canonicalize-arch-json.d.ts +3 -0
  88. package/dist/cli/utils/canonicalize-arch-json.d.ts.map +1 -0
  89. package/dist/cli/utils/canonicalize-arch-json.js +81 -0
  90. package/dist/cli/utils/canonicalize-arch-json.js.map +1 -0
  91. package/dist/cli/utils/diagram-index-generator.d.ts.map +1 -1
  92. package/dist/cli/utils/diagram-index-generator.js +0 -5
  93. package/dist/cli/utils/diagram-index-generator.js.map +1 -1
  94. package/dist/cli/utils/project-structure-detector.d.ts.map +1 -1
  95. package/dist/cli/utils/project-structure-detector.js +0 -10
  96. package/dist/cli/utils/project-structure-detector.js.map +1 -1
  97. package/dist/mermaid/renderer.d.ts.map +1 -1
  98. package/dist/mermaid/renderer.js +34 -0
  99. package/dist/mermaid/renderer.js.map +1 -1
  100. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAiBvE,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,EAAE,CAAC,CAqE1B;AASD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAM5F;AAkDD,wBAAgB,oBAAoB,IAAI,OAAO,CAiE9C"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAkD1F,wBAAgB,oBAAoB,IAAI,OAAO,CAiE9C"}
@@ -2,73 +2,9 @@ import { Command } from 'commander';
2
2
  import path from 'path';
3
3
  import os from 'os';
4
4
  import { ProgressReporter } from '../progress.js';
5
- import { ConfigLoader } from '../config-loader.js';
6
5
  import { ErrorHandler } from '../error-handler.js';
7
- import { DiagramProcessor } from '../processors/diagram-processor.js';
8
- import { DiagramIndexGenerator } from '../utils/diagram-index-generator.js';
9
- import { detectProjectStructure } from '../utils/project-structure-detector.js';
10
- import { detectCppProjectStructure } from '../utils/cpp-project-structure-detector.js';
11
- import { ParseCache } from '../../parser/parse-cache.js';
12
- export async function normalizeToDiagrams(config, cliOptions, rootDir) {
13
- if (config.diagrams && config.diagrams.length > 0) {
14
- return filterByLevels(config.diagrams, cliOptions.diagrams);
15
- }
16
- if (cliOptions.sources && cliOptions.sources.length > 0) {
17
- const language = cliOptions.lang ?? (cliOptions.atlas ? 'go' : undefined);
18
- const atlasEnabled = language === 'go' && !cliOptions.noAtlas;
19
- if (atlasEnabled) {
20
- const diagram = {
21
- name: 'architecture',
22
- sources: cliOptions.sources,
23
- level: 'package',
24
- format: cliOptions.format,
25
- exclude: cliOptions.exclude,
26
- language,
27
- languageSpecific: {
28
- atlas: {
29
- enabled: true,
30
- functionBodyStrategy: cliOptions.atlasStrategy ?? 'selective',
31
- excludeTests: !cliOptions.atlasIncludeTests,
32
- protocols: cliOptions.atlasProtocols?.split(',').map((s) => s.trim()),
33
- layers: cliOptions.atlasLayers?.split(',').map((s) => s.trim()),
34
- },
35
- },
36
- };
37
- return [diagram];
38
- }
39
- if (language === 'go' && cliOptions.noAtlas) {
40
- const diagram = {
41
- name: 'architecture',
42
- sources: cliOptions.sources,
43
- level: 'class',
44
- format: cliOptions.format,
45
- exclude: cliOptions.exclude,
46
- language,
47
- };
48
- return [diagram];
49
- }
50
- if (language === 'cpp') {
51
- const sourcePath = path.resolve(cliOptions.sources[0]);
52
- const moduleName = path.basename(sourcePath);
53
- const diagrams = await detectCppProjectStructure(sourcePath, moduleName, {
54
- format: cliOptions.format,
55
- exclude: cliOptions.exclude,
56
- });
57
- return filterByLevels(diagrams, cliOptions.diagrams);
58
- }
59
- const externalSourceRoot = path.resolve(cliOptions.sources[0]);
60
- const diagrams = await detectProjectStructure(process.cwd(), externalSourceRoot);
61
- return filterByLevels(diagrams, cliOptions.diagrams);
62
- }
63
- const diagrams = await detectProjectStructure(rootDir ?? process.cwd());
64
- return filterByLevels(diagrams, cliOptions.diagrams);
65
- }
66
- export function filterByLevels(diagrams, levels) {
67
- if (!levels || levels.length === 0) {
68
- return diagrams;
69
- }
70
- return diagrams.filter((d) => levels.includes(d.level ?? 'class'));
71
- }
6
+ import { runAnalysis } from '../analyze/run-analysis.js';
7
+ export { normalizeToDiagrams, filterByLevels } from '../analyze/normalize-to-diagrams.js';
72
8
  function displayResults(results, config) {
73
9
  const successful = results.filter((r) => r.success);
74
10
  const failed = results.filter((r) => !r.success);
@@ -136,86 +72,18 @@ export function createAnalyzeCommand() {
136
72
  async function analyzeCommandHandler(cliOptions) {
137
73
  const progress = new ProgressReporter();
138
74
  try {
139
- progress.start('Loading configuration...');
140
- const configLoader = new ConfigLoader(process.cwd());
141
- const configOverrides = {};
142
- if (cliOptions.format)
143
- configOverrides.format = cliOptions.format;
144
- if (cliOptions.exclude)
145
- configOverrides.exclude = cliOptions.exclude;
146
- if (cliOptions.workDir)
147
- configOverrides.workDir = cliOptions.workDir;
148
- if (cliOptions.cache !== undefined) {
149
- configOverrides.cache = { enabled: cliOptions.cache, ttl: 86400 };
150
- }
151
- if (cliOptions.cacheDir) {
152
- configOverrides.cache = {
153
- enabled: cliOptions.cache ?? true,
154
- ttl: 86400,
155
- dir: cliOptions.cacheDir,
156
- };
157
- }
158
- if (cliOptions.concurrency) {
159
- configOverrides.concurrency = parseInt(String(cliOptions.concurrency), 10);
160
- }
161
- if (cliOptions.verbose !== undefined)
162
- configOverrides.verbose = cliOptions.verbose;
163
- if (cliOptions.cliCommand || cliOptions.cliArgs) {
164
- configOverrides.cli = {
165
- command: cliOptions.cliCommand || 'claude',
166
- args: cliOptions.cliArgs ? cliOptions.cliArgs.split(' ') : [],
167
- timeout: 60000,
168
- };
169
- }
170
- if (cliOptions.mermaidTheme !== undefined || cliOptions.mermaidRenderer !== undefined) {
171
- configOverrides.mermaid = {
172
- theme: cliOptions.mermaidTheme,
173
- renderer: cliOptions.mermaidRenderer,
174
- transparentBackground: true,
175
- };
176
- }
177
- if (cliOptions.sources &&
178
- cliOptions.sources.length > 0 &&
179
- !cliOptions.outputDir &&
180
- !cliOptions.workDir) {
181
- const sourcePath = path.resolve(cliOptions.sources[0]);
182
- const cwd = process.cwd();
183
- if (!sourcePath.startsWith(cwd)) {
184
- const SOURCE_ROOT_NAMES = ['src', 'lib', 'app', 'source'];
185
- const basename = path.basename(sourcePath);
186
- const projectRoot = SOURCE_ROOT_NAMES.includes(basename)
187
- ? path.dirname(sourcePath)
188
- : sourcePath;
189
- configOverrides.workDir = path.join(projectRoot, '.archguard');
190
- }
191
- }
192
- if (cliOptions.outputDir)
193
- configOverrides.outputDir = cliOptions.outputDir;
194
- const config = await configLoader.load(configOverrides, cliOptions.config);
195
- progress.succeed('Configuration loaded');
196
- const selectedDiagrams = await normalizeToDiagrams(config, cliOptions, process.cwd());
197
- progress.info(`Found ${selectedDiagrams.length} diagram(s) to generate`);
198
- if (selectedDiagrams.length === 0) {
75
+ const result = await runAnalysis({
76
+ sessionRoot: process.cwd(),
77
+ workDir: inferCliWorkDir(process.cwd(), cliOptions),
78
+ cliOptions,
79
+ reporter: progress,
80
+ });
81
+ if (result.diagrams.length === 0) {
199
82
  progress.warn('No diagrams selected');
200
83
  process.exit(0);
201
84
  }
202
- const parseCache = new ParseCache();
203
- const processor = new DiagramProcessor({
204
- diagrams: selectedDiagrams,
205
- globalConfig: config,
206
- progress,
207
- parseCache,
208
- });
209
- const results = await processor.processAll();
210
- if (results.length > 1) {
211
- progress.start('Generating index...');
212
- const indexGenerator = new DiagramIndexGenerator(config);
213
- await indexGenerator.generate(results);
214
- progress.succeed('Index generated');
215
- }
216
- displayResults(results, config);
217
- const hasFailed = results.some((r) => !r.success);
218
- process.exit(hasFailed ? 1 : 0);
85
+ displayResults(result.results, result.config);
86
+ process.exit(result.hasDiagramFailures ? 1 : 0);
219
87
  }
220
88
  catch (error) {
221
89
  progress.fail('Analysis failed');
@@ -224,4 +92,19 @@ async function analyzeCommandHandler(cliOptions) {
224
92
  process.exit(1);
225
93
  }
226
94
  }
95
+ function inferCliWorkDir(sessionRoot, cliOptions) {
96
+ if (cliOptions.workDir) {
97
+ return cliOptions.workDir;
98
+ }
99
+ if (cliOptions.sources && cliOptions.sources.length > 0 && !cliOptions.outputDir) {
100
+ const sourcePath = path.resolve(sessionRoot, cliOptions.sources[0]);
101
+ if (!sourcePath.startsWith(sessionRoot)) {
102
+ const SOURCE_ROOT_NAMES = ['src', 'lib', 'app', 'source'];
103
+ const basename = path.basename(sourcePath);
104
+ const projectRoot = SOURCE_ROOT_NAMES.includes(basename) ? path.dirname(sourcePath) : sourcePath;
105
+ return path.join(projectRoot, '.archguard');
106
+ }
107
+ }
108
+ return path.join(sessionRoot, '.archguard');
109
+ }
227
110
  //# sourceMappingURL=analyze.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cache.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,kBAAkB,IAAI,OAAO,CAgD5C"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cache.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,kBAAkB,IAAI,OAAO,CAuD5C"}
@@ -1,7 +1,9 @@
1
1
  import { Command } from 'commander';
2
+ import path from 'path';
2
3
  import { CacheManager } from '../cache-manager.js';
3
4
  import { ErrorHandler } from '../error-handler.js';
4
5
  import { ConfigLoader } from '../config-loader.js';
6
+ import { clearRenderHashes } from '../cache/diagram-manifest.js';
5
7
  import chalk from 'chalk';
6
8
  export function createCacheCommand() {
7
9
  const cacheCmd = new Command('cache').description('Manage cache operations');
@@ -13,6 +15,11 @@ export function createCacheCommand() {
13
15
  const config = await new ConfigLoader(process.cwd()).load();
14
16
  const cache = new CacheManager(config.cache.dir);
15
17
  await cache.clear();
18
+ const outputDir = config.outputDir || path.join(config.workDir || '.archguard', 'output');
19
+ const hashCount = await clearRenderHashes(outputDir);
20
+ if (hashCount > 0) {
21
+ console.log(chalk.green(`✓ Cleared ${hashCount} render hash file(s)`));
22
+ }
16
23
  console.log(chalk.green('✓ Cache cleared successfully'));
17
24
  }
18
25
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/cli/commands/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/cli/commands/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createMcpCommand(): Command;
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,gBAAgB,IAAI,OAAO,CAiB1C"}
@@ -0,0 +1,21 @@
1
+ import { Command } from 'commander';
2
+ import { resolveArchDir } from '../query/engine-loader.js';
3
+ export function createMcpCommand() {
4
+ return new Command('mcp')
5
+ .description('Start ArchGuard MCP server (stdio transport)')
6
+ .option('--arch-dir <dir>', 'ArchGuard work directory')
7
+ .option('--scope <key>', 'Query scope key')
8
+ .action(async (opts) => {
9
+ try {
10
+ const archDir = resolveArchDir(opts.archDir);
11
+ const { startMcpServer } = await import('../mcp/mcp-server.js');
12
+ await startMcpServer(archDir, opts.scope);
13
+ }
14
+ catch (error) {
15
+ const message = error instanceof Error ? error.message : String(error);
16
+ console.error(`Error: ${message}`);
17
+ process.exit(1);
18
+ }
19
+ });
20
+ }
21
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAO3D,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;SACtB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,IAAgB,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAChE,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createQueryCommand(): Command;
3
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/query.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCpC,wBAAgB,kBAAkB,IAAI,OAAO,CA8B5C"}
@@ -0,0 +1,227 @@
1
+ import { Command } from 'commander';
2
+ import { resolveArchDir, loadEngine, readManifest } from '../query/engine-loader.js';
3
+ export function createQueryCommand() {
4
+ return new Command('query')
5
+ .description('Query architecture entities and relationships')
6
+ .option('--arch-dir <dir>', 'ArchGuard work directory')
7
+ .option('--scope <key>', 'Query scope key')
8
+ .option('--format <type>', 'Output format: json|text', 'text')
9
+ .option('--verbose', 'Return full entities in JSON output instead of summary')
10
+ .option('--entity <name>', 'Find entity by name')
11
+ .option('--deps-of <name>', 'Find dependencies of entity')
12
+ .option('--used-by <name>', 'Find dependents of entity')
13
+ .option('--implementers-of <name>', 'Find implementers of interface')
14
+ .option('--subclasses-of <name>', 'Find subclasses of class')
15
+ .option('--file <path>', 'Find entities in file')
16
+ .option('--depth <n>', 'BFS depth for --deps-of/--used-by (1-5)', '1')
17
+ .option('--cycles', 'Show dependency cycles')
18
+ .option('--summary', 'Show scope summary')
19
+ .option('--list-scopes', 'List available query scopes')
20
+ .option('--type <entityType>', 'Filter entities by type')
21
+ .option('--high-coupling', 'Find high-coupling entities')
22
+ .option('--threshold <n>', 'Coupling threshold for --high-coupling', '8')
23
+ .option('--orphans', 'Find orphan entities (no relations)')
24
+ .option('--in-cycles', 'Find entities participating in cycles')
25
+ .action(queryHandler);
26
+ }
27
+ async function queryHandler(opts) {
28
+ try {
29
+ validateQueryOptions(opts);
30
+ if (opts.listScopes) {
31
+ await handleListScopes(opts);
32
+ return;
33
+ }
34
+ const archDir = resolveArchDir(opts.archDir);
35
+ const engine = await loadEngine(archDir, opts.scope);
36
+ const isJson = opts.format === 'json';
37
+ const scopeEntry = engine.getScopeEntry();
38
+ let result;
39
+ if (opts.entity) {
40
+ const entities = engine.findEntity(opts.entity);
41
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
42
+ if (!isJson)
43
+ formatEntityList(entities, `Entities matching "${opts.entity}"`);
44
+ }
45
+ else if (opts.depsOf) {
46
+ const depth = parseBoundedInt(opts.depth, '--depth', 1, 5);
47
+ const entities = engine.getDependencies(opts.depsOf, depth);
48
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
49
+ if (!isJson)
50
+ formatEntityList(entities, `Dependencies of "${opts.depsOf}" (depth: ${depth})`);
51
+ }
52
+ else if (opts.usedBy) {
53
+ const depth = parseBoundedInt(opts.depth, '--depth', 1, 5);
54
+ const entities = engine.getDependents(opts.usedBy, depth);
55
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
56
+ if (!isJson)
57
+ formatEntityList(entities, `Dependents of "${opts.usedBy}" (depth: ${depth})`);
58
+ }
59
+ else if (opts.implementersOf) {
60
+ const entities = engine.findImplementers(opts.implementersOf);
61
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
62
+ if (!isJson)
63
+ formatEntityList(entities, `Implementers of "${opts.implementersOf}"`);
64
+ }
65
+ else if (opts.subclassesOf) {
66
+ const entities = engine.findSubclasses(opts.subclassesOf);
67
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
68
+ if (!isJson)
69
+ formatEntityList(entities, `Subclasses of "${opts.subclassesOf}"`);
70
+ }
71
+ else if (opts.file) {
72
+ const entities = engine.getFileEntities(opts.file);
73
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
74
+ if (!isJson)
75
+ formatEntityList(entities, `Entities in ${opts.file}`);
76
+ }
77
+ else if (opts.cycles) {
78
+ const cycles = engine.getCycles();
79
+ result = cycles;
80
+ if (!isJson)
81
+ formatCycles(cycles);
82
+ }
83
+ else if (opts.summary) {
84
+ const summary = engine.getSummary();
85
+ result = summary;
86
+ if (!isJson)
87
+ formatSummary(summary);
88
+ }
89
+ else if (opts.type) {
90
+ const entities = engine.findByType(opts.type);
91
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
92
+ if (!isJson)
93
+ formatEntityList(entities, `Entities of type "${opts.type}"`);
94
+ }
95
+ else if (opts.highCoupling) {
96
+ const threshold = parseBoundedInt(opts.threshold, '--threshold', 1);
97
+ const entities = engine.findHighCoupling(threshold);
98
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
99
+ if (!isJson)
100
+ formatEntityList(entities, `High-coupling entities (threshold: ${threshold})`);
101
+ }
102
+ else if (opts.orphans) {
103
+ const entities = engine.findOrphans();
104
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
105
+ if (!isJson)
106
+ formatEntityList(entities, 'Orphan entities (no relations)');
107
+ }
108
+ else if (opts.inCycles) {
109
+ const entities = engine.findInCycles();
110
+ result = projectEntitiesForOutput(engine, entities, opts.verbose);
111
+ if (!isJson)
112
+ formatEntityList(entities, 'Entities in dependency cycles');
113
+ }
114
+ else {
115
+ console.error('No query option specified. Use --help to see available options.');
116
+ process.exit(1);
117
+ }
118
+ if (isJson) {
119
+ console.log(JSON.stringify(result, null, 2));
120
+ }
121
+ if (scopeEntry.kind === 'derived' && !isJson) {
122
+ console.log('\n[Note: This scope is a derived (partial) view, not a complete project analysis.]');
123
+ }
124
+ }
125
+ catch (error) {
126
+ const message = error instanceof Error ? error.message : String(error);
127
+ console.error(`Error: ${message}`);
128
+ process.exit(1);
129
+ }
130
+ }
131
+ function validateQueryOptions(opts) {
132
+ const primaryOptions = [
133
+ opts.entity,
134
+ opts.depsOf,
135
+ opts.usedBy,
136
+ opts.implementersOf,
137
+ opts.subclassesOf,
138
+ opts.file,
139
+ opts.cycles,
140
+ opts.summary,
141
+ opts.listScopes,
142
+ opts.type,
143
+ opts.highCoupling,
144
+ opts.orphans,
145
+ opts.inCycles,
146
+ ].filter(Boolean);
147
+ if (primaryOptions.length > 1) {
148
+ throw new Error('Specify exactly one primary query option.');
149
+ }
150
+ if (opts.depsOf || opts.usedBy) {
151
+ parseBoundedInt(opts.depth, '--depth', 1, 5);
152
+ }
153
+ if (opts.highCoupling) {
154
+ parseBoundedInt(opts.threshold, '--threshold', 1);
155
+ }
156
+ }
157
+ function parseBoundedInt(value, flagName, min, max) {
158
+ const parsed = Number(value);
159
+ if (!Number.isInteger(parsed) || parsed < min || (max !== undefined && parsed > max)) {
160
+ const range = max !== undefined ? ` (${min}-${max})` : ` (>= ${min})`;
161
+ throw new Error(`Invalid ${flagName}: "${value}". Expected an integer${range}.`);
162
+ }
163
+ return parsed;
164
+ }
165
+ function projectEntitiesForOutput(engine, entities, verbose) {
166
+ return verbose ? entities : entities.map((entity) => engine.toSummary(entity));
167
+ }
168
+ async function handleListScopes(opts) {
169
+ const archDir = resolveArchDir(opts.archDir);
170
+ const manifest = await readManifest(archDir);
171
+ if (opts.format === 'json') {
172
+ console.log(JSON.stringify(manifest.scopes, null, 2));
173
+ return;
174
+ }
175
+ if (manifest.scopes.length === 0) {
176
+ console.log('No query scopes available. Run `archguard analyze` first.');
177
+ return;
178
+ }
179
+ console.log('Available query scopes:\n');
180
+ for (const scope of manifest.scopes) {
181
+ console.log(` ${scope.key} (${scope.kind})`);
182
+ console.log(` Label: ${scope.label}`);
183
+ console.log(` Language: ${scope.language}`);
184
+ console.log(` Sources: ${scope.sources.join(', ')}`);
185
+ console.log(` Entities: ${scope.entityCount}, Relations: ${scope.relationCount}`);
186
+ console.log('');
187
+ }
188
+ console.log(`Total: ${manifest.scopes.length} scope(s)`);
189
+ }
190
+ function formatEntityList(entities, title) {
191
+ console.log(`${title}:\n`);
192
+ if (entities.length === 0) {
193
+ console.log(' (none)');
194
+ return;
195
+ }
196
+ for (const e of entities) {
197
+ const loc = e.sourceLocation;
198
+ console.log(` ${e.name} (${e.type}) @ ${loc.file}:${loc.startLine}`);
199
+ }
200
+ console.log(`\n Total: ${entities.length}`);
201
+ }
202
+ function formatCycles(cycles) {
203
+ if (cycles.length === 0) {
204
+ console.log('No dependency cycles detected.');
205
+ return;
206
+ }
207
+ console.log(`Found ${cycles.length} dependency cycle(s):\n`);
208
+ for (let i = 0; i < cycles.length; i++) {
209
+ const c = cycles[i];
210
+ console.log(` Cycle ${i + 1} (size ${c.size}): ${c.memberNames.join(' -> ')}`);
211
+ console.log(` Files: ${c.files.join(', ')}`);
212
+ }
213
+ }
214
+ function formatSummary(summary) {
215
+ console.log('Scope Summary:\n');
216
+ console.log(` Language: ${summary.language}`);
217
+ console.log(` Kind: ${summary.kind}`);
218
+ console.log(` Entities: ${summary.entityCount}`);
219
+ console.log(` Relations: ${summary.relationCount}`);
220
+ if (summary.topDependedOn.length > 0) {
221
+ console.log('\n Top depended-on:');
222
+ for (const item of summary.topDependedOn) {
223
+ console.log(` ${item.name}: ${item.dependentCount} dependents`);
224
+ }
225
+ }
226
+ }
227
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/cli/commands/query.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,SAAS,IAAI,OAAO,CAcnC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,SAAS,IAAI,OAAO,CAgBnC"}
package/dist/cli/index.js CHANGED
@@ -3,6 +3,8 @@ import { Command } from 'commander';
3
3
  import { createAnalyzeCommand } from './commands/analyze.js';
4
4
  import { createCacheCommand } from './commands/cache.js';
5
5
  import { createInitCommand } from './commands/init.js';
6
+ import { createQueryCommand } from './commands/query.js';
7
+ import { createMcpCommand } from './commands/mcp.js';
6
8
  import { createRequire } from 'module';
7
9
  const require = createRequire(import.meta.url);
8
10
  const packageJson = require('../../package.json');
@@ -15,6 +17,8 @@ export function createCLI() {
15
17
  program.addCommand(createAnalyzeCommand());
16
18
  program.addCommand(createCacheCommand());
17
19
  program.addCommand(createInitCommand());
20
+ program.addCommand(createQueryCommand());
21
+ program.addCommand(createMcpCommand());
18
22
  return program;
19
23
  }
20
24
  import * as fs from 'fs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAKlD,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,WAAW,CAAC;SACjB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;SAC5B,WAAW,CAAC,0EAA0E,CAAC,CAAC;IAG3F,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAK3B,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClG,IAAI,MAAM,EAAE,CAAC;IACX,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAKlD,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,WAAW,CAAC;SACjB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;SAC5B,WAAW,CAAC,0EAA0E,CAAC,CAAC;IAG3F,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEvC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAK3B,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClG,IAAI,MAAM,EAAE,CAAC;IACX,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export interface AnalyzeToolContext {
3
+ sessionRoot: string;
4
+ archDir: string;
5
+ getActiveScope(): string | undefined;
6
+ setActiveScope(scopeKey?: string): void;
7
+ invalidateEngine(): void;
8
+ }
9
+ export declare function registerAnalyzeTool(server: McpServer, ctx: AnalyzeToolContext): void;
10
+ //# sourceMappingURL=analyze-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-tool.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/analyze-tool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,IAAI,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,gBAAgB,IAAI,IAAI,CAAC;CAC1B;AA6BD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,GAAG,IAAI,CA8DpF"}