@grafema/cli 0.2.5-beta → 0.2.6-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/dist/cli.js +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +3 -10
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +5 -347
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/analyzeAction.d.ts +28 -0
- package/dist/commands/analyzeAction.d.ts.map +1 -0
- package/dist/commands/analyzeAction.js +243 -0
- package/dist/commands/analyzeAction.js.map +1 -0
- package/dist/commands/check.js +2 -2
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/context.d.ts +16 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +238 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/doctor/checks.js +1 -1
- package/dist/commands/doctor/checks.js.map +1 -1
- package/dist/commands/explain.d.ts.map +1 -1
- package/dist/commands/explain.js +4 -3
- package/dist/commands/explain.js.map +1 -1
- package/dist/commands/file.d.ts +15 -0
- package/dist/commands/file.d.ts.map +1 -0
- package/dist/commands/file.js +144 -0
- package/dist/commands/file.js.map +1 -0
- package/dist/commands/impact.d.ts.map +1 -1
- package/dist/commands/impact.js +2 -3
- package/dist/commands/impact.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +13 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/ls.d.ts.map +1 -1
- package/dist/commands/ls.js +3 -2
- package/dist/commands/ls.js.map +1 -1
- package/dist/commands/query.d.ts +8 -0
- package/dist/commands/query.d.ts.map +1 -1
- package/dist/commands/query.js +158 -51
- package/dist/commands/query.js.map +1 -1
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +3 -2
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +8 -59
- package/dist/commands/server.js.map +1 -1
- package/dist/commands/setup-skill.d.ts +17 -0
- package/dist/commands/setup-skill.d.ts.map +1 -0
- package/dist/commands/setup-skill.js +131 -0
- package/dist/commands/setup-skill.js.map +1 -0
- package/dist/commands/trace.d.ts.map +1 -1
- package/dist/commands/trace.js +20 -10
- package/dist/commands/trace.js.map +1 -1
- package/dist/plugins/builtinPlugins.d.ts +10 -0
- package/dist/plugins/builtinPlugins.d.ts.map +1 -0
- package/dist/plugins/builtinPlugins.js +68 -0
- package/dist/plugins/builtinPlugins.js.map +1 -0
- package/dist/plugins/pluginLoader.d.ts +16 -0
- package/dist/plugins/pluginLoader.d.ts.map +1 -0
- package/dist/plugins/pluginLoader.js +101 -0
- package/dist/plugins/pluginLoader.js.map +1 -0
- package/dist/plugins/pluginResolver.js +38 -0
- package/dist/utils/codePreview.d.ts +1 -0
- package/dist/utils/codePreview.d.ts.map +1 -1
- package/dist/utils/codePreview.js +5 -3
- package/dist/utils/codePreview.js.map +1 -1
- package/dist/utils/formatNode.d.ts +1 -1
- package/dist/utils/formatNode.d.ts.map +1 -1
- package/dist/utils/formatNode.js +2 -2
- package/dist/utils/formatNode.js.map +1 -1
- package/dist/utils/pathUtils.d.ts +2 -0
- package/dist/utils/pathUtils.d.ts.map +1 -0
- package/dist/utils/pathUtils.js +9 -0
- package/dist/utils/pathUtils.js.map +1 -0
- package/package.json +7 -9
- package/skills/grafema-codebase-analysis/SKILL.md +295 -0
- package/skills/grafema-codebase-analysis/references/node-edge-types.md +123 -0
- package/skills/grafema-codebase-analysis/references/query-patterns.md +205 -0
- package/src/cli.ts +8 -2
- package/src/commands/analyze.ts +5 -435
- package/src/commands/analyzeAction.ts +284 -0
- package/src/commands/check.ts +2 -2
- package/src/commands/context.ts +309 -0
- package/src/commands/doctor/checks.ts +1 -1
- package/src/commands/explain.ts +4 -3
- package/src/commands/explore.tsx +7 -5
- package/src/commands/file.ts +179 -0
- package/src/commands/impact.ts +2 -3
- package/src/commands/init.ts +13 -1
- package/src/commands/ls.ts +3 -2
- package/src/commands/query.ts +167 -52
- package/src/commands/schema.ts +3 -2
- package/src/commands/server.ts +8 -64
- package/src/commands/setup-skill.ts +162 -0
- package/src/commands/trace.ts +18 -9
- package/src/plugins/builtinPlugins.ts +108 -0
- package/src/plugins/pluginLoader.ts +123 -0
- package/src/plugins/pluginResolver.js +38 -0
- package/src/utils/codePreview.ts +7 -3
- package/src/utils/formatNode.ts +3 -3
- package/src/utils/pathUtils.ts +9 -0
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
> Grafema command-line interface for building and querying the code graph.
|
|
4
4
|
|
|
5
|
+
**Warning: This package is in beta stage and the API may change between minor versions.**
|
|
6
|
+
|
|
5
7
|
## Quick Start
|
|
6
8
|
|
|
7
9
|
```bash
|
|
@@ -59,15 +61,25 @@ npx @grafema/cli check --list-categories
|
|
|
59
61
|
npx @grafema/cli doctor # Validate local setup
|
|
60
62
|
```
|
|
61
63
|
|
|
64
|
+
### Server management
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx @grafema/cli server start # Start RFDB server
|
|
68
|
+
npx @grafema/cli server stop # Stop RFDB server
|
|
69
|
+
npx @grafema/cli server status # Check server status
|
|
70
|
+
```
|
|
71
|
+
|
|
62
72
|
### Misc
|
|
63
73
|
|
|
64
74
|
```bash
|
|
65
75
|
npx @grafema/cli coverage # Coverage stats
|
|
66
76
|
npx @grafema/cli impact # Impact analysis
|
|
67
77
|
npx @grafema/cli explore # Interactive explorer (TUI)
|
|
78
|
+
npx @grafema/cli analyze --log-file analysis.log # Log to file
|
|
68
79
|
```
|
|
69
80
|
|
|
70
81
|
## Notes
|
|
71
82
|
|
|
72
83
|
- All commands accept `--project <path>` to point at a specific repo.
|
|
73
84
|
- `npx @grafema/cli` works without global install and is preferred for docs/examples.
|
|
85
|
+
- Unknown Datalog predicates in `--raw` queries will show a warning with suggestions.
|
package/dist/cli.js
CHANGED
|
@@ -15,7 +15,7 @@ import { lsCommand } from './commands/ls.js';
|
|
|
15
15
|
import { getCommand } from './commands/get.js';
|
|
16
16
|
import { traceCommand } from './commands/trace.js';
|
|
17
17
|
import { impactCommand } from './commands/impact.js';
|
|
18
|
-
import {
|
|
18
|
+
import { contextCommand } from './commands/context.js';
|
|
19
19
|
import { statsCommand } from './commands/stats.js';
|
|
20
20
|
import { checkCommand } from './commands/check.js';
|
|
21
21
|
import { serverCommand } from './commands/server.js';
|
|
@@ -23,6 +23,8 @@ import { coverageCommand } from './commands/coverage.js';
|
|
|
23
23
|
import { doctorCommand } from './commands/doctor.js';
|
|
24
24
|
import { schemaCommand } from './commands/schema.js';
|
|
25
25
|
import { explainCommand } from './commands/explain.js';
|
|
26
|
+
import { fileCommand } from './commands/file.js';
|
|
27
|
+
import { setupSkillCommand } from './commands/setup-skill.js';
|
|
26
28
|
// Read version from package.json
|
|
27
29
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
28
30
|
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
@@ -36,12 +38,12 @@ program.addCommand(initCommand);
|
|
|
36
38
|
program.addCommand(analyzeCommand);
|
|
37
39
|
program.addCommand(overviewCommand);
|
|
38
40
|
program.addCommand(queryCommand);
|
|
41
|
+
program.addCommand(contextCommand);
|
|
39
42
|
program.addCommand(typesCommand);
|
|
40
43
|
program.addCommand(lsCommand);
|
|
41
44
|
program.addCommand(getCommand);
|
|
42
45
|
program.addCommand(traceCommand);
|
|
43
46
|
program.addCommand(impactCommand);
|
|
44
|
-
program.addCommand(exploreCommand);
|
|
45
47
|
program.addCommand(statsCommand); // Keep for backwards compat
|
|
46
48
|
program.addCommand(coverageCommand);
|
|
47
49
|
program.addCommand(checkCommand);
|
|
@@ -49,5 +51,7 @@ program.addCommand(serverCommand);
|
|
|
49
51
|
program.addCommand(doctorCommand);
|
|
50
52
|
program.addCommand(schemaCommand);
|
|
51
53
|
program.addCommand(explainCommand);
|
|
54
|
+
program.addCommand(fileCommand);
|
|
55
|
+
program.addCommand(setupSkillCommand);
|
|
52
56
|
program.parse();
|
|
53
57
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Analyze command
|
|
2
|
+
* Analyze command — Run project analysis via Orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Command definition only. Execution logic is in analyzeAction.ts.
|
|
3
5
|
*/
|
|
4
6
|
import { Command } from 'commander';
|
|
5
|
-
export interface NodeEdgeCountBackend {
|
|
6
|
-
nodeCount: () => Promise<number>;
|
|
7
|
-
edgeCount: () => Promise<number>;
|
|
8
|
-
}
|
|
9
|
-
export declare function fetchNodeEdgeCounts(backend: NodeEdgeCountBackend): Promise<{
|
|
10
|
-
nodeCount: number;
|
|
11
|
-
edgeCount: number;
|
|
12
|
-
}>;
|
|
13
|
-
export declare function exitWithCode(code: number, exitFn?: (code: number) => void): void;
|
|
14
7
|
export declare const analyzeCommand: Command;
|
|
15
8
|
//# sourceMappingURL=analyze.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,cAAc,SA2BH,CAAC"}
|
package/dist/commands/analyze.js
CHANGED
|
@@ -1,149 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Analyze command
|
|
3
|
-
*/
|
|
4
|
-
import { Command } from 'commander';
|
|
5
|
-
import { resolve, join } from 'path';
|
|
6
|
-
import { existsSync, mkdirSync, readdirSync } from 'fs';
|
|
7
|
-
import { pathToFileURL } from 'url';
|
|
8
|
-
import { Orchestrator, RFDBServerBackend, DiagnosticReporter, DiagnosticWriter, createLogger, loadConfig, StrictModeFailure,
|
|
9
|
-
// Discovery
|
|
10
|
-
SimpleProjectDiscovery, MonorepoServiceDiscovery, WorkspaceDiscovery,
|
|
11
|
-
// Indexing
|
|
12
|
-
JSModuleIndexer, RustModuleIndexer,
|
|
13
|
-
// Analysis
|
|
14
|
-
JSASTAnalyzer, ExpressRouteAnalyzer, ExpressResponseAnalyzer, SocketIOAnalyzer, DatabaseAnalyzer, FetchAnalyzer, ServiceLayerAnalyzer, ReactAnalyzer, RustAnalyzer,
|
|
15
|
-
// Enrichment
|
|
16
|
-
MethodCallResolver, ArgumentParameterLinker, AliasTracker, ValueDomainAnalyzer, MountPointResolver, ExpressHandlerLinker, PrefixEvaluator, InstanceOfResolver, ImportExportLinker, FunctionCallResolver, HTTPConnectionEnricher, RustFFIEnricher, RejectionPropagationEnricher,
|
|
17
|
-
// Validation
|
|
18
|
-
CallResolverValidator, EvalBanValidator, SQLInjectionValidator, ShadowingDetector, GraphConnectivityValidator, DataFlowValidator, TypeScriptDeadCodeValidator, BrokenImportValidator, } from '@grafema/core';
|
|
19
|
-
import { ProgressRenderer } from '../utils/progressRenderer.js';
|
|
20
|
-
export async function fetchNodeEdgeCounts(backend) {
|
|
21
|
-
const [nodeCount, edgeCount] = await Promise.all([backend.nodeCount(), backend.edgeCount()]);
|
|
22
|
-
return { nodeCount, edgeCount };
|
|
23
|
-
}
|
|
24
|
-
export function exitWithCode(code, exitFn = process.exit) {
|
|
25
|
-
exitFn(code);
|
|
26
|
-
}
|
|
27
|
-
const BUILTIN_PLUGINS = {
|
|
28
|
-
// Discovery
|
|
29
|
-
SimpleProjectDiscovery: () => new SimpleProjectDiscovery(),
|
|
30
|
-
MonorepoServiceDiscovery: () => new MonorepoServiceDiscovery(),
|
|
31
|
-
WorkspaceDiscovery: () => new WorkspaceDiscovery(),
|
|
32
|
-
// Indexing
|
|
33
|
-
JSModuleIndexer: () => new JSModuleIndexer(),
|
|
34
|
-
RustModuleIndexer: () => new RustModuleIndexer(),
|
|
35
|
-
// Analysis
|
|
36
|
-
JSASTAnalyzer: () => new JSASTAnalyzer(),
|
|
37
|
-
ExpressRouteAnalyzer: () => new ExpressRouteAnalyzer(),
|
|
38
|
-
ExpressResponseAnalyzer: () => new ExpressResponseAnalyzer(),
|
|
39
|
-
SocketIOAnalyzer: () => new SocketIOAnalyzer(),
|
|
40
|
-
DatabaseAnalyzer: () => new DatabaseAnalyzer(),
|
|
41
|
-
FetchAnalyzer: () => new FetchAnalyzer(),
|
|
42
|
-
ServiceLayerAnalyzer: () => new ServiceLayerAnalyzer(),
|
|
43
|
-
ReactAnalyzer: () => new ReactAnalyzer(),
|
|
44
|
-
RustAnalyzer: () => new RustAnalyzer(),
|
|
45
|
-
// Enrichment
|
|
46
|
-
MethodCallResolver: () => new MethodCallResolver(),
|
|
47
|
-
ArgumentParameterLinker: () => new ArgumentParameterLinker(),
|
|
48
|
-
AliasTracker: () => new AliasTracker(),
|
|
49
|
-
ValueDomainAnalyzer: () => new ValueDomainAnalyzer(),
|
|
50
|
-
MountPointResolver: () => new MountPointResolver(),
|
|
51
|
-
ExpressHandlerLinker: () => new ExpressHandlerLinker(),
|
|
52
|
-
PrefixEvaluator: () => new PrefixEvaluator(),
|
|
53
|
-
InstanceOfResolver: () => new InstanceOfResolver(),
|
|
54
|
-
ImportExportLinker: () => new ImportExportLinker(),
|
|
55
|
-
FunctionCallResolver: () => new FunctionCallResolver(),
|
|
56
|
-
HTTPConnectionEnricher: () => new HTTPConnectionEnricher(),
|
|
57
|
-
RustFFIEnricher: () => new RustFFIEnricher(),
|
|
58
|
-
RejectionPropagationEnricher: () => new RejectionPropagationEnricher(),
|
|
59
|
-
// Validation
|
|
60
|
-
CallResolverValidator: () => new CallResolverValidator(),
|
|
61
|
-
EvalBanValidator: () => new EvalBanValidator(),
|
|
62
|
-
SQLInjectionValidator: () => new SQLInjectionValidator(),
|
|
63
|
-
ShadowingDetector: () => new ShadowingDetector(),
|
|
64
|
-
GraphConnectivityValidator: () => new GraphConnectivityValidator(),
|
|
65
|
-
DataFlowValidator: () => new DataFlowValidator(),
|
|
66
|
-
TypeScriptDeadCodeValidator: () => new TypeScriptDeadCodeValidator(),
|
|
67
|
-
BrokenImportValidator: () => new BrokenImportValidator(),
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* Load custom plugins from .grafema/plugins/ directory
|
|
71
|
-
*/
|
|
72
|
-
async function loadCustomPlugins(projectPath, log) {
|
|
73
|
-
const pluginsDir = join(projectPath, '.grafema', 'plugins');
|
|
74
|
-
if (!existsSync(pluginsDir)) {
|
|
75
|
-
return {};
|
|
76
|
-
}
|
|
77
|
-
const customPlugins = {};
|
|
78
|
-
try {
|
|
79
|
-
const files = readdirSync(pluginsDir).filter((f) => f.endsWith('.js') || f.endsWith('.mjs') || f.endsWith('.cjs'));
|
|
80
|
-
for (const file of files) {
|
|
81
|
-
try {
|
|
82
|
-
const pluginPath = join(pluginsDir, file);
|
|
83
|
-
const pluginUrl = pathToFileURL(pluginPath).href;
|
|
84
|
-
const module = await import(pluginUrl);
|
|
85
|
-
const PluginClass = module.default || module[file.replace(/\.[cm]?js$/, '')];
|
|
86
|
-
if (PluginClass && typeof PluginClass === 'function') {
|
|
87
|
-
const pluginName = PluginClass.name || file.replace(/\.[cm]?js$/, '');
|
|
88
|
-
customPlugins[pluginName] = () => {
|
|
89
|
-
const instance = new PluginClass();
|
|
90
|
-
instance.config.sourceFile = pluginPath;
|
|
91
|
-
return instance;
|
|
92
|
-
};
|
|
93
|
-
log(`Loaded custom plugin: ${pluginName}`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
98
|
-
console.warn(`Failed to load plugin ${file}: ${message}`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
104
|
-
console.warn(`Error loading custom plugins: ${message}`);
|
|
105
|
-
}
|
|
106
|
-
return customPlugins;
|
|
107
|
-
}
|
|
108
|
-
function createPlugins(config, customPlugins = {}, verbose = false) {
|
|
109
|
-
const plugins = [];
|
|
110
|
-
const phases = ['discovery', 'indexing', 'analysis', 'enrichment', 'validation'];
|
|
111
|
-
for (const phase of phases) {
|
|
112
|
-
const names = config[phase] || [];
|
|
113
|
-
for (const name of names) {
|
|
114
|
-
// Check built-in first, then custom
|
|
115
|
-
const factory = BUILTIN_PLUGINS[name] || customPlugins[name];
|
|
116
|
-
if (factory) {
|
|
117
|
-
plugins.push(factory());
|
|
118
|
-
}
|
|
119
|
-
else if (verbose) {
|
|
120
|
-
// Only show plugin warning in verbose mode
|
|
121
|
-
console.warn(`Plugin not found: ${name} (skipping). Check .grafema/config.yaml or add to .grafema/plugins/`);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
return plugins;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Determine log level from CLI options.
|
|
129
|
-
* Priority: --log-level > --quiet > --verbose > default ('silent')
|
|
2
|
+
* Analyze command — Run project analysis via Orchestrator.
|
|
130
3
|
*
|
|
131
|
-
*
|
|
132
|
-
* Use --verbose to see detailed logs (disables interactive progress).
|
|
4
|
+
* Command definition only. Execution logic is in analyzeAction.ts.
|
|
133
5
|
*/
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const validLevels = ['silent', 'errors', 'warnings', 'info', 'debug'];
|
|
137
|
-
if (validLevels.includes(options.logLevel)) {
|
|
138
|
-
return options.logLevel;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
if (options.quiet)
|
|
142
|
-
return 'silent';
|
|
143
|
-
if (options.verbose)
|
|
144
|
-
return 'info'; // --verbose shows logs instead of progress UI
|
|
145
|
-
return 'silent'; // Default: silent logs, clean progress UI
|
|
146
|
-
}
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { analyzeAction } from './analyzeAction.js';
|
|
147
8
|
export const analyzeCommand = new Command('analyze')
|
|
148
9
|
.description('Run project analysis')
|
|
149
10
|
.argument('[path]', 'Project path to analyze', '.')
|
|
@@ -171,208 +32,5 @@ Examples:
|
|
|
171
32
|
|
|
172
33
|
Note: Start the server first with: grafema server start
|
|
173
34
|
`)
|
|
174
|
-
.action(
|
|
175
|
-
const projectPath = resolve(path);
|
|
176
|
-
const grafemaDir = join(projectPath, '.grafema');
|
|
177
|
-
const dbPath = join(grafemaDir, 'graph.rfdb');
|
|
178
|
-
if (!existsSync(grafemaDir)) {
|
|
179
|
-
mkdirSync(grafemaDir, { recursive: true });
|
|
180
|
-
}
|
|
181
|
-
// Two log levels for CLI output:
|
|
182
|
-
// - info: important results (shows unless --quiet)
|
|
183
|
-
// - debug: verbose details (shows only with --verbose)
|
|
184
|
-
const info = options.quiet ? () => { } : console.log;
|
|
185
|
-
const debug = options.verbose ? console.log : () => { };
|
|
186
|
-
// Create logger based on CLI flags
|
|
187
|
-
const logLevel = getLogLevel(options);
|
|
188
|
-
const logFile = options.logFile ? resolve(options.logFile) : undefined;
|
|
189
|
-
const logger = createLogger(logLevel, logFile ? { logFile } : undefined);
|
|
190
|
-
if (logFile) {
|
|
191
|
-
debug(`Log file: ${logFile}`);
|
|
192
|
-
}
|
|
193
|
-
debug(`Analyzing project: ${projectPath}`);
|
|
194
|
-
// Connect to RFDB server
|
|
195
|
-
// Default: require explicit `grafema server start`
|
|
196
|
-
// Use --auto-start for CI or backwards compatibility
|
|
197
|
-
// In normal mode (not verbose), suppress backend logs for clean progress UI
|
|
198
|
-
const backend = new RFDBServerBackend({
|
|
199
|
-
dbPath,
|
|
200
|
-
autoStart: options.autoStart ?? false,
|
|
201
|
-
silent: !options.verbose // Silent in normal mode (show progress), verbose shows logs
|
|
202
|
-
});
|
|
203
|
-
try {
|
|
204
|
-
await backend.connect();
|
|
205
|
-
}
|
|
206
|
-
catch (err) {
|
|
207
|
-
if (!options.autoStart && err instanceof Error && err.message.includes('not running')) {
|
|
208
|
-
console.error('');
|
|
209
|
-
console.error('RFDB server is not running.');
|
|
210
|
-
console.error('');
|
|
211
|
-
console.error('Start the server first:');
|
|
212
|
-
console.error(' grafema server start');
|
|
213
|
-
console.error('');
|
|
214
|
-
console.error('Or use --auto-start flag:');
|
|
215
|
-
console.error(' grafema analyze --auto-start');
|
|
216
|
-
console.error('');
|
|
217
|
-
process.exit(1);
|
|
218
|
-
}
|
|
219
|
-
throw err;
|
|
220
|
-
}
|
|
221
|
-
if (options.clear) {
|
|
222
|
-
debug('Clearing existing database...');
|
|
223
|
-
await backend.clear();
|
|
224
|
-
}
|
|
225
|
-
const config = loadConfig(projectPath, logger);
|
|
226
|
-
// Extract services from config (REG-174)
|
|
227
|
-
if (config.services.length > 0) {
|
|
228
|
-
debug(`Loaded ${config.services.length} service(s) from config`);
|
|
229
|
-
for (const svc of config.services) {
|
|
230
|
-
const entry = svc.entryPoint ? ` (entry: ${svc.entryPoint})` : '';
|
|
231
|
-
debug(` - ${svc.name}: ${svc.path}${entry}`);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
// Load custom plugins from .grafema/plugins/
|
|
235
|
-
const customPlugins = await loadCustomPlugins(projectPath, debug);
|
|
236
|
-
const plugins = createPlugins(config.plugins, customPlugins, options.verbose);
|
|
237
|
-
debug(`Loaded ${plugins.length} plugins`);
|
|
238
|
-
// Resolve strict mode: CLI flag overrides config
|
|
239
|
-
const strictMode = options.strict ?? config.strict ?? false;
|
|
240
|
-
if (strictMode) {
|
|
241
|
-
debug('Strict mode enabled - analysis will fail on unresolved references');
|
|
242
|
-
}
|
|
243
|
-
const startTime = Date.now();
|
|
244
|
-
// Create progress renderer for CLI output
|
|
245
|
-
// In quiet mode, use a no-op renderer (skip rendering)
|
|
246
|
-
// In verbose mode, use non-interactive (newlines per update)
|
|
247
|
-
// In normal mode, use interactive (spinner with line overwrite)
|
|
248
|
-
const renderer = options.quiet
|
|
249
|
-
? null
|
|
250
|
-
: new ProgressRenderer({
|
|
251
|
-
isInteractive: !options.verbose && process.stdout.isTTY,
|
|
252
|
-
});
|
|
253
|
-
// Poll graph stats periodically to show node/edge counts in progress
|
|
254
|
-
let statsInterval = null;
|
|
255
|
-
if (renderer && !options.quiet) {
|
|
256
|
-
statsInterval = setInterval(async () => {
|
|
257
|
-
try {
|
|
258
|
-
const stats = await fetchNodeEdgeCounts(backend);
|
|
259
|
-
renderer.setStats(stats.nodeCount, stats.edgeCount);
|
|
260
|
-
}
|
|
261
|
-
catch {
|
|
262
|
-
// Ignore stats errors during analysis
|
|
263
|
-
}
|
|
264
|
-
}, 500); // Poll every 500ms
|
|
265
|
-
statsInterval.unref?.();
|
|
266
|
-
}
|
|
267
|
-
const orchestrator = new Orchestrator({
|
|
268
|
-
graph: backend,
|
|
269
|
-
plugins,
|
|
270
|
-
serviceFilter: options.service || null,
|
|
271
|
-
entrypoint: options.entrypoint,
|
|
272
|
-
forceAnalysis: options.clear || false,
|
|
273
|
-
logger,
|
|
274
|
-
services: config.services.length > 0 ? config.services : undefined, // Pass config services (REG-174)
|
|
275
|
-
strictMode, // REG-330: Pass strict mode flag
|
|
276
|
-
onProgress: (progress) => {
|
|
277
|
-
renderer?.update(progress);
|
|
278
|
-
},
|
|
279
|
-
});
|
|
280
|
-
let exitCode = 0;
|
|
281
|
-
try {
|
|
282
|
-
await orchestrator.run(projectPath);
|
|
283
|
-
await backend.flush();
|
|
284
|
-
const elapsedSeconds = (Date.now() - startTime) / 1000;
|
|
285
|
-
const stats = await fetchNodeEdgeCounts(backend);
|
|
286
|
-
// Clear progress line in interactive mode, then show results
|
|
287
|
-
if (renderer && process.stdout.isTTY) {
|
|
288
|
-
process.stdout.write('\r\x1b[K'); // Clear line
|
|
289
|
-
}
|
|
290
|
-
info('');
|
|
291
|
-
info(renderer ? renderer.finish(elapsedSeconds) : `Analysis complete in ${elapsedSeconds.toFixed(2)}s`);
|
|
292
|
-
info(` Nodes: ${stats.nodeCount}`);
|
|
293
|
-
info(` Edges: ${stats.edgeCount}`);
|
|
294
|
-
// Get diagnostics and report summary
|
|
295
|
-
const diagnostics = orchestrator.getDiagnostics();
|
|
296
|
-
const reporter = new DiagnosticReporter(diagnostics);
|
|
297
|
-
// Print summary if there are any issues
|
|
298
|
-
if (diagnostics.count() > 0) {
|
|
299
|
-
info('');
|
|
300
|
-
info(reporter.categorizedSummary());
|
|
301
|
-
// In verbose mode, print full report
|
|
302
|
-
if (options.verbose) {
|
|
303
|
-
debug('');
|
|
304
|
-
debug(reporter.report({ format: 'text', includeSummary: false }));
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
// Always write diagnostics.log (required for `grafema check` command)
|
|
308
|
-
const writer = new DiagnosticWriter();
|
|
309
|
-
await writer.write(diagnostics, grafemaDir);
|
|
310
|
-
if (options.debug) {
|
|
311
|
-
debug(`Diagnostics written to ${writer.getLogPath(grafemaDir)}`);
|
|
312
|
-
}
|
|
313
|
-
// Determine exit code based on severity
|
|
314
|
-
if (diagnostics.hasFatal()) {
|
|
315
|
-
exitCode = 1;
|
|
316
|
-
}
|
|
317
|
-
else if (diagnostics.hasErrors()) {
|
|
318
|
-
exitCode = 2; // Completed with errors
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
exitCode = 0; // Success (maybe warnings)
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
catch (e) {
|
|
325
|
-
const diagnostics = orchestrator.getDiagnostics();
|
|
326
|
-
const reporter = new DiagnosticReporter(diagnostics);
|
|
327
|
-
// Clear progress line in interactive mode
|
|
328
|
-
if (renderer && process.stdout.isTTY) {
|
|
329
|
-
process.stdout.write('\r\x1b[K');
|
|
330
|
-
}
|
|
331
|
-
// Check if this is a strict mode failure (REG-332: structured output)
|
|
332
|
-
if (e instanceof StrictModeFailure) {
|
|
333
|
-
// Format ONLY from diagnostics, not from error.message
|
|
334
|
-
console.error('');
|
|
335
|
-
console.error(`✗ Strict mode: ${e.count} unresolved reference(s) found during ENRICHMENT.`);
|
|
336
|
-
console.error('');
|
|
337
|
-
console.error(reporter.formatStrict(e.diagnostics, {
|
|
338
|
-
verbose: options.verbose,
|
|
339
|
-
suppressedCount: e.suppressedCount, // REG-332
|
|
340
|
-
}));
|
|
341
|
-
console.error('');
|
|
342
|
-
console.error('Run without --strict for graceful degradation, or fix the underlying issues.');
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
// Generic error handling (non-strict)
|
|
346
|
-
const error = e instanceof Error ? e : new Error(String(e));
|
|
347
|
-
console.error('');
|
|
348
|
-
console.error(`✗ Analysis failed: ${error.message}`);
|
|
349
|
-
console.error('');
|
|
350
|
-
console.error('→ Run with --debug for detailed diagnostics');
|
|
351
|
-
if (diagnostics.count() > 0) {
|
|
352
|
-
console.error('');
|
|
353
|
-
console.error(reporter.report({ format: 'text', includeSummary: true }));
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
// Write diagnostics.log in debug mode even on failure
|
|
357
|
-
if (options.debug) {
|
|
358
|
-
const writer = new DiagnosticWriter();
|
|
359
|
-
await writer.write(diagnostics, grafemaDir);
|
|
360
|
-
console.error(`Diagnostics written to ${writer.getLogPath(grafemaDir)}`);
|
|
361
|
-
}
|
|
362
|
-
exitCode = 1;
|
|
363
|
-
}
|
|
364
|
-
finally {
|
|
365
|
-
// Stop stats polling
|
|
366
|
-
if (statsInterval) {
|
|
367
|
-
clearInterval(statsInterval);
|
|
368
|
-
statsInterval = null;
|
|
369
|
-
}
|
|
370
|
-
if (backend.connected) {
|
|
371
|
-
await backend.close();
|
|
372
|
-
}
|
|
373
|
-
// Exit with appropriate code
|
|
374
|
-
// 0 = success, 1 = fatal, 2 = errors
|
|
375
|
-
exitWithCode(exitCode);
|
|
376
|
-
}
|
|
377
|
-
});
|
|
35
|
+
.action(analyzeAction);
|
|
378
36
|
//# sourceMappingURL=analyze.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,sBAAsB,CAAC;KACnC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,EAAE,GAAG,CAAC;KAClD,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;KACjE,MAAM,CAAC,yBAAyB,EAAE,+CAA+C,CAAC;KAClF,MAAM,CAAC,aAAa,EAAE,yCAAyC,CAAC;KAChE,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,SAAS,EAAE,4CAA4C,CAAC;KAC/D,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;KACtF,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC;KAC7D,MAAM,CAAC,UAAU,EAAE,oDAAoD,CAAC;KACxE,MAAM,CAAC,cAAc,EAAE,uCAAuC,CAAC;KAC/D,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;CAavB,CAAC;KACC,MAAM,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analyze command action — connects to RFDB, loads plugins, runs Orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from analyze.ts (REG-435) to keep command definition separate
|
|
5
|
+
* from execution logic.
|
|
6
|
+
*/
|
|
7
|
+
export interface NodeEdgeCountBackend {
|
|
8
|
+
nodeCount: () => Promise<number>;
|
|
9
|
+
edgeCount: () => Promise<number>;
|
|
10
|
+
}
|
|
11
|
+
export declare function fetchNodeEdgeCounts(backend: NodeEdgeCountBackend): Promise<{
|
|
12
|
+
nodeCount: number;
|
|
13
|
+
edgeCount: number;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function exitWithCode(code: number, exitFn?: (code: number) => void): void;
|
|
16
|
+
export declare function analyzeAction(path: string, options: {
|
|
17
|
+
service?: string;
|
|
18
|
+
entrypoint?: string;
|
|
19
|
+
clear?: boolean;
|
|
20
|
+
quiet?: boolean;
|
|
21
|
+
verbose?: boolean;
|
|
22
|
+
debug?: boolean;
|
|
23
|
+
logLevel?: string;
|
|
24
|
+
logFile?: string;
|
|
25
|
+
strict?: boolean;
|
|
26
|
+
autoStart?: boolean;
|
|
27
|
+
}): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=analyzeAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeAction.d.ts","sourceRoot":"","sources":["../../src/commands/analyzeAction.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAG1H;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAmB,GAAG,IAAI,CAE9F;AAqBD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoOrQ"}
|