@grafema/cli 0.2.11 → 0.3.0-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.
Files changed (133) hide show
  1. package/dist/cli.js +13 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/analyze.d.ts.map +1 -1
  4. package/dist/commands/analyze.js +2 -4
  5. package/dist/commands/analyze.js.map +1 -1
  6. package/dist/commands/analyzeAction.d.ts +5 -3
  7. package/dist/commands/analyzeAction.d.ts.map +1 -1
  8. package/dist/commands/analyzeAction.js +109 -151
  9. package/dist/commands/analyzeAction.js.map +1 -1
  10. package/dist/commands/check.d.ts +1 -1
  11. package/dist/commands/check.js +4 -4
  12. package/dist/commands/check.js.map +1 -1
  13. package/dist/commands/context.js +2 -2
  14. package/dist/commands/context.js.map +1 -1
  15. package/dist/commands/coverage.js +2 -2
  16. package/dist/commands/coverage.js.map +1 -1
  17. package/dist/commands/describe.d.ts +13 -0
  18. package/dist/commands/describe.d.ts.map +1 -0
  19. package/dist/commands/describe.js +131 -0
  20. package/dist/commands/describe.js.map +1 -0
  21. package/dist/commands/doctor/checks.d.ts +6 -1
  22. package/dist/commands/doctor/checks.d.ts.map +1 -1
  23. package/dist/commands/doctor/checks.js +128 -13
  24. package/dist/commands/doctor/checks.js.map +1 -1
  25. package/dist/commands/doctor.d.ts +10 -9
  26. package/dist/commands/doctor.d.ts.map +1 -1
  27. package/dist/commands/doctor.js +12 -10
  28. package/dist/commands/doctor.js.map +1 -1
  29. package/dist/commands/explain.js +2 -2
  30. package/dist/commands/explain.js.map +1 -1
  31. package/dist/commands/file.js +2 -2
  32. package/dist/commands/file.js.map +1 -1
  33. package/dist/commands/get.js +2 -2
  34. package/dist/commands/get.js.map +1 -1
  35. package/dist/commands/git-ingest.d.ts +6 -0
  36. package/dist/commands/git-ingest.d.ts.map +1 -0
  37. package/dist/commands/git-ingest.js +46 -0
  38. package/dist/commands/git-ingest.js.map +1 -0
  39. package/dist/commands/impact.d.ts.map +1 -1
  40. package/dist/commands/impact.js +276 -50
  41. package/dist/commands/impact.js.map +1 -1
  42. package/dist/commands/init.d.ts.map +1 -1
  43. package/dist/commands/init.js +20 -22
  44. package/dist/commands/init.js.map +1 -1
  45. package/dist/commands/ls.js +2 -2
  46. package/dist/commands/ls.js.map +1 -1
  47. package/dist/commands/overview.js +2 -2
  48. package/dist/commands/overview.js.map +1 -1
  49. package/dist/commands/query.d.ts +1 -1
  50. package/dist/commands/query.d.ts.map +1 -1
  51. package/dist/commands/query.js +169 -7
  52. package/dist/commands/query.js.map +1 -1
  53. package/dist/commands/schema.js +2 -2
  54. package/dist/commands/schema.js.map +1 -1
  55. package/dist/commands/server.d.ts.map +1 -1
  56. package/dist/commands/server.js +122 -76
  57. package/dist/commands/server.js.map +1 -1
  58. package/dist/commands/stats.js +2 -2
  59. package/dist/commands/stats.js.map +1 -1
  60. package/dist/commands/tldr.d.ts +12 -0
  61. package/dist/commands/tldr.d.ts.map +1 -0
  62. package/dist/commands/tldr.js +81 -0
  63. package/dist/commands/tldr.js.map +1 -0
  64. package/dist/commands/trace.d.ts +1 -1
  65. package/dist/commands/trace.d.ts.map +1 -1
  66. package/dist/commands/trace.js +17 -133
  67. package/dist/commands/trace.js.map +1 -1
  68. package/dist/commands/types.js +2 -2
  69. package/dist/commands/types.js.map +1 -1
  70. package/dist/commands/who.d.ts +12 -0
  71. package/dist/commands/who.d.ts.map +1 -0
  72. package/dist/commands/who.js +184 -0
  73. package/dist/commands/who.js.map +1 -0
  74. package/dist/commands/why.d.ts +12 -0
  75. package/dist/commands/why.d.ts.map +1 -0
  76. package/dist/commands/why.js +118 -0
  77. package/dist/commands/why.js.map +1 -0
  78. package/dist/commands/wtf.d.ts +12 -0
  79. package/dist/commands/wtf.d.ts.map +1 -0
  80. package/dist/commands/wtf.js +117 -0
  81. package/dist/commands/wtf.js.map +1 -0
  82. package/dist/plugins/builtinPlugins.d.ts +1 -9
  83. package/dist/plugins/builtinPlugins.d.ts.map +1 -1
  84. package/dist/plugins/builtinPlugins.js +2 -67
  85. package/dist/plugins/builtinPlugins.js.map +1 -1
  86. package/dist/plugins/pluginLoader.d.ts +1 -15
  87. package/dist/plugins/pluginLoader.d.ts.map +1 -1
  88. package/dist/plugins/pluginLoader.js +2 -100
  89. package/dist/plugins/pluginLoader.js.map +1 -1
  90. package/dist/plugins/pluginResolver.js +3 -3
  91. package/dist/utils/progressRenderer.d.ts +15 -1
  92. package/dist/utils/progressRenderer.d.ts.map +1 -1
  93. package/dist/utils/progressRenderer.js +19 -3
  94. package/dist/utils/progressRenderer.js.map +1 -1
  95. package/dist/utils/queryHints.d.ts +6 -0
  96. package/dist/utils/queryHints.d.ts.map +1 -0
  97. package/dist/utils/queryHints.js +36 -0
  98. package/dist/utils/queryHints.js.map +1 -0
  99. package/package.json +4 -4
  100. package/skills/grafema-codebase-analysis/SKILL.md +1 -1
  101. package/src/cli.ts +14 -0
  102. package/src/commands/analyze.ts +2 -4
  103. package/src/commands/analyzeAction.ts +122 -168
  104. package/src/commands/check.ts +5 -5
  105. package/src/commands/context.ts +3 -3
  106. package/src/commands/coverage.ts +2 -2
  107. package/src/commands/describe.ts +160 -0
  108. package/src/commands/doctor/checks.ts +153 -10
  109. package/src/commands/doctor.ts +13 -9
  110. package/src/commands/explain.ts +2 -2
  111. package/src/commands/explore.tsx +2 -2
  112. package/src/commands/file.ts +3 -3
  113. package/src/commands/get.ts +2 -2
  114. package/src/commands/git-ingest.ts +49 -0
  115. package/src/commands/impact.ts +318 -55
  116. package/src/commands/init.ts +20 -22
  117. package/src/commands/ls.ts +2 -2
  118. package/src/commands/overview.ts +2 -2
  119. package/src/commands/query.ts +197 -7
  120. package/src/commands/schema.ts +2 -2
  121. package/src/commands/server.ts +136 -84
  122. package/src/commands/stats.ts +2 -2
  123. package/src/commands/tldr.ts +103 -0
  124. package/src/commands/trace.ts +19 -161
  125. package/src/commands/types.ts +2 -2
  126. package/src/commands/who.ts +215 -0
  127. package/src/commands/why.ts +134 -0
  128. package/src/commands/wtf.ts +140 -0
  129. package/src/plugins/builtinPlugins.ts +1 -108
  130. package/src/plugins/pluginLoader.ts +1 -123
  131. package/src/plugins/pluginResolver.js +3 -3
  132. package/src/utils/progressRenderer.ts +34 -4
  133. package/src/utils/queryHints.ts +46 -0
@@ -1 +1 @@
1
- {"version":3,"file":"progressRenderer.js","sourceRoot":"","sources":["../../src/utils/progressRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progressRenderer.js","sourceRoot":"","sources":["../../src/utils/progressRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function extractQueriedTypes(query: string): {
2
+ nodeTypes: string[];
3
+ edgeTypes: string[];
4
+ };
5
+ export declare function findSimilarTypes(queriedType: string, availableTypes: string[], maxDistance?: number): string[];
6
+ //# sourceMappingURL=queryHints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryHints.d.ts","sourceRoot":"","sources":["../../src/utils/queryHints.ts"],"names":[],"mappings":"AASA,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAkB/F;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EAAE,EACxB,WAAW,GAAE,MAAU,GACtB,MAAM,EAAE,CAYV"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Query hint utilities for the CLI raw query path.
3
+ *
4
+ * Note: extractQueriedTypes() is intentionally duplicated from packages/mcp/src/utils.ts.
5
+ * The CLI cannot import @grafema/mcp (dependency direction). If the Datalog syntax changes,
6
+ * both copies must be updated.
7
+ */
8
+ import { levenshtein } from '@grafema/util';
9
+ export function extractQueriedTypes(query) {
10
+ const nodeTypes = [];
11
+ const edgeTypes = [];
12
+ // Match node(VAR, "TYPE") — only working node predicate.
13
+ // type(VAR, "TYPE") is excluded: Rust evaluator has no "type" branch.
14
+ const nodeRegex = /\bnode\([^,)]+,\s*"([^"]+)"\)/g;
15
+ let m;
16
+ while ((m = nodeRegex.exec(query)) !== null) {
17
+ nodeTypes.push(m[1]);
18
+ }
19
+ const edgeRegex = /\b(?:edge|incoming)\([^,)]+,\s*[^,)]+,\s*"([^"]+)"\)/g;
20
+ while ((m = edgeRegex.exec(query)) !== null) {
21
+ edgeTypes.push(m[1]);
22
+ }
23
+ return { nodeTypes, edgeTypes };
24
+ }
25
+ export function findSimilarTypes(queriedType, availableTypes, maxDistance = 2) {
26
+ const queriedLower = queriedType.toLowerCase();
27
+ const similar = [];
28
+ for (const type of availableTypes) {
29
+ const dist = levenshtein(queriedLower, type.toLowerCase());
30
+ if (dist <= maxDistance && (dist > 0 || queriedType !== type)) {
31
+ similar.push(type);
32
+ }
33
+ }
34
+ return similar;
35
+ }
36
+ //# sourceMappingURL=queryHints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryHints.js","sourceRoot":"","sources":["../../src/utils/queryHints.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,yDAAyD;IACzD,sEAAsE;IACtE,MAAM,SAAS,GAAG,gCAAgC,CAAC;IACnD,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,SAAS,GAAG,uDAAuD,CAAC;IAC1E,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,cAAwB,EACxB,cAAsB,CAAC;IAEvB,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,IAAI,IAAI,IAAI,WAAW,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grafema/cli",
3
- "version": "0.2.11",
3
+ "version": "0.3.0-beta",
4
4
  "description": "CLI for Grafema code analysis toolkit",
5
5
  "type": "module",
6
6
  "main": "./dist/cli.js",
@@ -35,9 +35,9 @@
35
35
  "dependencies": {
36
36
  "commander": "^13.0.0",
37
37
  "yaml": "^2.8.2",
38
- "@grafema/api": "0.2.11",
39
- "@grafema/core": "0.2.11",
40
- "@grafema/types": "0.2.11"
38
+ "@grafema/api": "0.3.0-beta",
39
+ "@grafema/types": "0.3.0-beta",
40
+ "@grafema/util": "0.3.0-beta"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^25.0.8",
@@ -10,7 +10,7 @@ license: Apache-2.0
10
10
  compatibility: Requires Grafema MCP server configured (grafema or @grafema/mcp package)
11
11
  metadata:
12
12
  author: Grafema
13
- version: "0.2.5"
13
+ version: "0.3.0"
14
14
  ---
15
15
 
16
16
  # Grafema: Graph-Based Codebase Analysis
package/src/cli.ts CHANGED
@@ -17,6 +17,11 @@ import { getCommand } from './commands/get.js';
17
17
  import { traceCommand } from './commands/trace.js';
18
18
  import { impactCommand } from './commands/impact.js';
19
19
  import { contextCommand } from './commands/context.js';
20
+ import { describeCommand } from './commands/describe.js';
21
+ import { tldrCommand } from './commands/tldr.js';
22
+ import { wtfCommand } from './commands/wtf.js';
23
+ import { whoCommand } from './commands/who.js';
24
+ import { whyCommand } from './commands/why.js';
20
25
 
21
26
  import { statsCommand } from './commands/stats.js';
22
27
  import { checkCommand } from './commands/check.js';
@@ -27,6 +32,7 @@ import { schemaCommand } from './commands/schema.js';
27
32
  import { explainCommand } from './commands/explain.js';
28
33
  import { fileCommand } from './commands/file.js';
29
34
  import { setupSkillCommand } from './commands/setup-skill.js';
35
+ import { gitIngestCommand } from './commands/git-ingest.js';
30
36
 
31
37
  // Read version from package.json
32
38
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -39,12 +45,19 @@ program
39
45
  .description('Grafema code analysis CLI')
40
46
  .version(pkg.version);
41
47
 
48
+ // Human-first commands
49
+ program.addCommand(tldrCommand);
50
+ program.addCommand(wtfCommand);
51
+ program.addCommand(whoCommand);
52
+ program.addCommand(whyCommand);
53
+
42
54
  // Commands in logical order
43
55
  program.addCommand(initCommand);
44
56
  program.addCommand(analyzeCommand);
45
57
  program.addCommand(overviewCommand);
46
58
  program.addCommand(queryCommand);
47
59
  program.addCommand(contextCommand);
60
+ program.addCommand(describeCommand);
48
61
  program.addCommand(typesCommand);
49
62
  program.addCommand(lsCommand);
50
63
  program.addCommand(getCommand);
@@ -60,5 +73,6 @@ program.addCommand(schemaCommand);
60
73
  program.addCommand(explainCommand);
61
74
  program.addCommand(fileCommand);
62
75
  program.addCommand(setupSkillCommand);
76
+ program.addCommand(gitIngestCommand);
63
77
 
64
78
  program.parse();
@@ -20,7 +20,7 @@ export const analyzeCommand = new Command('analyze')
20
20
  .option('--log-level <level>', 'Set log level (silent, errors, warnings, info, debug)')
21
21
  .option('--log-file <path>', 'Write all log output to a file')
22
22
  .option('--strict', 'Enable strict mode (fail on unresolved references)')
23
- .option('--auto-start', 'Auto-start RFDB server if not running')
23
+ .option('--no-auto-start', 'Do not auto-start RFDB server (require manual start)')
24
24
  .addHelpText('after', `
25
25
  Examples:
26
26
  grafema analyze Analyze current project
@@ -31,8 +31,6 @@ Examples:
31
31
  grafema analyze --debug Write diagnostics.log for debugging
32
32
  grafema analyze --log-file out.log Write all logs to a file
33
33
  grafema analyze --strict Fail on unresolved references (debugging)
34
- grafema analyze --auto-start Auto-start server (useful for CI)
35
-
36
- Note: Start the server first with: grafema server start
34
+ grafema analyze --no-auto-start Require manual server start
37
35
  `)
38
36
  .action(analyzeAction);
@@ -1,24 +1,24 @@
1
1
  /**
2
- * Analyze command action — connects to RFDB, loads plugins, runs Orchestrator.
2
+ * Analyze command action — spawns grafema-orchestrator for project analysis.
3
3
  *
4
- * Extracted from analyze.ts (REG-435) to keep command definition separate
5
- * from execution logic.
4
+ * The Rust grafema-orchestrator binary handles the full analysis pipeline:
5
+ * discovery, parsing (OXC), analysis (grafema-analyzer), resolution,
6
+ * and RFDB ingestion. This action finds the binary, spawns it with
7
+ * the correct args, streams output, and prints a summary.
6
8
  */
7
9
 
8
10
  import { resolve, join } from 'path';
9
11
  import { existsSync, mkdirSync } from 'fs';
12
+ import { spawn } from 'child_process';
10
13
  import {
11
- Orchestrator,
12
14
  RFDBServerBackend,
13
- DiagnosticReporter,
14
- DiagnosticWriter,
15
15
  createLogger,
16
- loadConfig,
17
- StrictModeFailure,
18
- } from '@grafema/core';
19
- import type { LogLevel, GraphBackend } from '@grafema/types';
20
- import { ProgressRenderer } from '../utils/progressRenderer.js';
21
- import { loadCustomPlugins, createPlugins } from '../plugins/pluginLoader.js';
16
+ findOrchestratorBinary,
17
+ getBinaryNotFoundMessage,
18
+ findAnalyzerBinary,
19
+ ensureBinary,
20
+ } from '@grafema/util';
21
+ import type { LogLevel } from '@grafema/util';
22
22
 
23
23
  export interface NodeEdgeCountBackend {
24
24
  nodeCount: () => Promise<number>;
@@ -53,6 +53,28 @@ function getLogLevel(options: { quiet?: boolean; verbose?: boolean; logLevel?: s
53
53
  return 'silent'; // Default: silent logs, clean progress UI
54
54
  }
55
55
 
56
+ /**
57
+ * Find the grafema.config.yaml config file for the orchestrator.
58
+ *
59
+ * Search order:
60
+ * 1. <projectPath>/grafema.config.yaml
61
+ * 2. <projectPath>/.grafema/config.yaml (legacy location)
62
+ */
63
+ function findConfigFile(projectPath: string): string | null {
64
+ const candidates = [
65
+ join(projectPath, 'grafema.config.yaml'),
66
+ join(projectPath, '.grafema', 'config.yaml'),
67
+ ];
68
+
69
+ for (const candidate of candidates) {
70
+ if (existsSync(candidate)) {
71
+ return candidate;
72
+ }
73
+ }
74
+
75
+ return null;
76
+ }
77
+
56
78
  export async function analyzeAction(path: string, options: { service?: string; entrypoint?: string; clear?: boolean; quiet?: boolean; verbose?: boolean; debug?: boolean; logLevel?: string; logFile?: string; strict?: boolean; autoStart?: boolean }): Promise<void> {
57
79
  const projectPath = resolve(path);
58
80
  const grafemaDir = join(projectPath, '.grafema');
@@ -71,35 +93,74 @@ export async function analyzeAction(path: string, options: { service?: string; e
71
93
  // Create logger based on CLI flags
72
94
  const logLevel = getLogLevel(options);
73
95
  const logFile = options.logFile ? resolve(options.logFile) : undefined;
74
- const logger = createLogger(logLevel, logFile ? { logFile } : undefined);
96
+ const _logger = createLogger(logLevel, logFile ? { logFile } : undefined);
75
97
 
76
98
  if (logFile) {
77
99
  debug(`Log file: ${logFile}`);
78
100
  }
79
101
  debug(`Analyzing project: ${projectPath}`);
80
102
 
81
- // Connect to RFDB server
82
- // Default: require explicit `grafema server start`
83
- // Use --auto-start for CI or backwards compatibility
84
- // In normal mode (not verbose), suppress backend logs for clean progress UI
103
+ // Find grafema-orchestrator binary
104
+ const orchestratorBinary = findOrchestratorBinary();
105
+ if (!orchestratorBinary) {
106
+ console.error('');
107
+ console.error(getBinaryNotFoundMessage('grafema-orchestrator'));
108
+ process.exit(1);
109
+ }
110
+
111
+ debug(`Using orchestrator: ${orchestratorBinary}`);
112
+
113
+ // Ensure JS/TS analyzer binaries exist (lazy download if missing)
114
+ for (const binName of ['grafema-analyzer', 'grafema-resolve']) {
115
+ const existing = findAnalyzerBinary(binName);
116
+ if (!existing) {
117
+ const downloaded = await ensureBinary(binName, null, info);
118
+ if (downloaded) {
119
+ debug(`Downloaded ${binName} → ${downloaded}`);
120
+ }
121
+ }
122
+ }
123
+
124
+ // Find config file for the orchestrator
125
+ const configPath = findConfigFile(projectPath);
126
+ if (!configPath) {
127
+ console.error('');
128
+ console.error('No grafema config file found.');
129
+ console.error('');
130
+ console.error('Expected one of:');
131
+ console.error(` ${join(projectPath, 'grafema.config.yaml')}`);
132
+ console.error(` ${join(projectPath, '.grafema', 'config.yaml')}`);
133
+ console.error('');
134
+ console.error('Create a config file with at least:');
135
+ console.error(' root: "."');
136
+ console.error(' include:');
137
+ console.error(' - "src/**/*.js"');
138
+ console.error('');
139
+ process.exit(1);
140
+ }
141
+
142
+ debug(`Using config: ${configPath}`);
143
+
144
+ // Connect to RFDB server — auto-start by default (zero-config UX)
85
145
  const backend = new RFDBServerBackend({
86
146
  dbPath,
87
- autoStart: options.autoStart ?? false,
88
- silent: !options.verbose // Silent in normal mode (show progress), verbose shows logs
147
+ autoStart: options.autoStart ?? true,
148
+ silent: !options.verbose,
149
+ clientName: 'cli'
89
150
  });
90
151
 
91
152
  try {
92
153
  await backend.connect();
93
154
  } catch (err) {
94
- if (!options.autoStart && err instanceof Error && err.message.includes('not running')) {
155
+ if (err instanceof Error && err.message.includes('not running')) {
95
156
  console.error('');
96
- console.error('RFDB server is not running.');
157
+ console.error('RFDB server failed to start.');
97
158
  console.error('');
98
- console.error('Start the server first:');
159
+ console.error('Try starting manually:');
99
160
  console.error(' grafema server start');
100
161
  console.error('');
101
- console.error('Or use --auto-start flag:');
102
- console.error(' grafema analyze --auto-start');
162
+ console.error('Or run diagnostics:');
163
+ console.error(' grafema doctor');
103
164
  console.error('');
104
165
  process.exit(1);
105
166
  }
@@ -111,174 +172,67 @@ export async function analyzeAction(path: string, options: { service?: string; e
111
172
  await backend.clear();
112
173
  }
113
174
 
114
- const config = loadConfig(projectPath, logger);
115
-
116
- // Extract services from config (REG-174)
117
- if (config.services.length > 0) {
118
- debug(`Loaded ${config.services.length} service(s) from config`);
119
- for (const svc of config.services) {
120
- const entry = svc.entryPoint ? ` (entry: ${svc.entryPoint})` : '';
121
- debug(` - ${svc.name}: ${svc.path}${entry}`);
122
- }
123
- }
124
-
125
- // Load custom plugins from .grafema/plugins/
126
- const customPlugins = await loadCustomPlugins(projectPath, debug);
127
- const plugins = createPlugins(config.plugins, customPlugins, options.verbose);
128
-
129
- debug(`Loaded ${plugins.length} plugins`);
130
-
131
- // Resolve strict mode: CLI flag overrides config
132
- const strictMode = options.strict ?? config.strict ?? false;
133
- if (strictMode) {
134
- debug('Strict mode enabled - analysis will fail on unresolved references');
135
- }
136
-
137
175
  const startTime = Date.now();
138
176
 
139
- // Create progress renderer for CLI output
140
- // In quiet mode, use a no-op renderer (skip rendering)
141
- // In verbose mode, use non-interactive (newlines per update)
142
- // In normal mode, use interactive (spinner with line overwrite)
143
- const renderer = options.quiet
144
- ? null
145
- : new ProgressRenderer({
146
- isInteractive: !options.verbose && process.stdout.isTTY,
147
- });
177
+ // Build orchestrator args
178
+ const args: string[] = ['analyze', '--config', configPath, '--socket', backend.socketPath];
148
179
 
149
- // Poll graph stats periodically to show node/edge counts in progress
150
- let statsInterval: NodeJS.Timeout | null = null;
151
- if (renderer && !options.quiet) {
152
- statsInterval = setInterval(async () => {
153
- try {
154
- const stats = await fetchNodeEdgeCounts(backend);
155
- renderer.setStats(stats.nodeCount, stats.edgeCount);
156
- } catch {
157
- // Ignore stats errors during analysis
158
- }
159
- }, 500); // Poll every 500ms
160
- statsInterval.unref?.();
180
+ if (options.clear) {
181
+ args.push('--force');
161
182
  }
162
183
 
163
- const orchestrator = new Orchestrator({
164
- graph: backend as unknown as GraphBackend,
165
- plugins,
166
- serviceFilter: options.service || null,
167
- entrypoint: options.entrypoint,
168
- forceAnalysis: options.clear || false,
169
- logger,
170
- services: config.services.length > 0 ? config.services : undefined, // Pass config services (REG-174)
171
- strictMode, // REG-330: Pass strict mode flag
172
- onProgress: (progress) => {
173
- renderer?.update(progress);
174
- },
175
- });
184
+ debug(`Spawning: ${orchestratorBinary} ${args.join(' ')}`);
176
185
 
177
186
  let exitCode = 0;
178
187
 
179
188
  try {
180
- await orchestrator.run(projectPath);
181
- await backend.flush();
189
+ // Spawn grafema-orchestrator
190
+ exitCode = await new Promise<number>((resolvePromise, reject) => {
191
+ const child = spawn(orchestratorBinary, args, {
192
+ stdio: [
193
+ 'ignore',
194
+ options.quiet ? 'ignore' : 'inherit',
195
+ options.quiet ? 'ignore' : 'inherit',
196
+ ],
197
+ env: {
198
+ ...process.env,
199
+ // Pass RUST_LOG for tracing verbosity
200
+ RUST_LOG: options.verbose ? 'info' : (options.debug ? 'debug' : 'warn'),
201
+ },
202
+ });
182
203
 
183
- const elapsedSeconds = (Date.now() - startTime) / 1000;
184
- const stats = await fetchNodeEdgeCounts(backend);
204
+ child.on('error', (err) => {
205
+ reject(new Error(`Failed to spawn grafema-orchestrator: ${err.message}`));
206
+ });
185
207
 
186
- // Clear progress line in interactive mode, then show results
187
- if (renderer && process.stdout.isTTY) {
188
- process.stdout.write('\r\x1b[K'); // Clear line
189
- }
190
- info('');
191
- info(renderer ? renderer.finish(elapsedSeconds) : `Analysis complete in ${elapsedSeconds.toFixed(2)}s`);
192
- info(` Nodes: ${stats.nodeCount}`);
193
- info(` Edges: ${stats.edgeCount}`);
208
+ child.on('close', (code) => {
209
+ resolvePromise(code ?? 1);
210
+ });
211
+ });
194
212
 
195
- // Get diagnostics and report summary
196
- const diagnostics = orchestrator.getDiagnostics();
197
- const reporter = new DiagnosticReporter(diagnostics);
213
+ if (exitCode === 0) {
214
+ const elapsedSeconds = (Date.now() - startTime) / 1000;
215
+ const stats = await fetchNodeEdgeCounts(backend);
198
216
 
199
- // Print summary if there are any issues
200
- if (diagnostics.count() > 0) {
201
217
  info('');
202
- info(reporter.categorizedSummary());
203
-
204
- // In verbose mode, print full report
205
- if (options.verbose) {
206
- debug('');
207
- debug(reporter.report({ format: 'text', includeSummary: false }));
208
- }
209
- }
210
-
211
- // Always write diagnostics.log (required for `grafema check` command)
212
- const writer = new DiagnosticWriter();
213
- await writer.write(diagnostics, grafemaDir);
214
- if (options.debug) {
215
- debug(`Diagnostics written to ${writer.getLogPath(grafemaDir)}`);
216
- }
217
-
218
- // Determine exit code based on severity
219
- if (diagnostics.hasFatal()) {
220
- exitCode = 1;
221
- } else if (diagnostics.hasErrors()) {
222
- exitCode = 2; // Completed with errors
218
+ info(`Analysis complete in ${elapsedSeconds.toFixed(2)}s`);
219
+ info(` Nodes: ${stats.nodeCount}`);
220
+ info(` Edges: ${stats.edgeCount}`);
223
221
  } else {
224
- exitCode = 0; // Success (maybe warnings)
225
- }
226
- } catch (e) {
227
- const diagnostics = orchestrator.getDiagnostics();
228
- const reporter = new DiagnosticReporter(diagnostics);
229
-
230
- // Clear progress line in interactive mode
231
- if (renderer && process.stdout.isTTY) {
232
- process.stdout.write('\r\x1b[K');
233
- }
234
-
235
- // Check if this is a strict mode failure (REG-332: structured output)
236
- if (e instanceof StrictModeFailure) {
237
- // Format ONLY from diagnostics, not from error.message
238
- console.error('');
239
- console.error(`✗ Strict mode: ${e.count} unresolved reference(s) found during ENRICHMENT.`);
240
222
  console.error('');
241
- console.error(reporter.formatStrict(e.diagnostics, {
242
- verbose: options.verbose,
243
- suppressedCount: e.suppressedCount, // REG-332
244
- }));
245
- console.error('');
246
- console.error('Run without --strict for graceful degradation, or fix the underlying issues.');
247
- } else {
248
- // Generic error handling (non-strict)
249
- const error = e instanceof Error ? e : new Error(String(e));
250
- console.error('');
251
- console.error(`✗ Analysis failed: ${error.message}`);
252
- console.error('');
253
- console.error('→ Run with --debug for detailed diagnostics');
254
-
255
- if (diagnostics.count() > 0) {
256
- console.error('');
257
- console.error(reporter.report({ format: 'text', includeSummary: true }));
258
- }
259
- }
260
-
261
- // Write diagnostics.log in debug mode even on failure
262
- if (options.debug) {
263
- const writer = new DiagnosticWriter();
264
- await writer.write(diagnostics, grafemaDir);
265
- console.error(`Diagnostics written to ${writer.getLogPath(grafemaDir)}`);
223
+ console.error(`Analysis failed with exit code ${exitCode}`);
266
224
  }
267
-
225
+ } catch (e) {
226
+ const error = e instanceof Error ? e : new Error(String(e));
227
+ console.error('');
228
+ console.error(`Analysis failed: ${error.message}`);
268
229
  exitCode = 1;
269
230
  } finally {
270
- // Stop stats polling
271
- if (statsInterval) {
272
- clearInterval(statsInterval);
273
- statsInterval = null;
274
- }
275
-
276
231
  if (backend.connected) {
277
232
  await backend.close();
278
233
  }
279
234
 
280
235
  // Exit with appropriate code
281
- // 0 = success, 1 = fatal, 2 = errors
282
236
  exitWithCode(exitCode);
283
237
  }
284
238
  }
@@ -15,8 +15,8 @@ import {
15
15
  GraphFreshnessChecker,
16
16
  IncrementalReanalyzer,
17
17
  DIAGNOSTIC_CATEGORIES,
18
- } from '@grafema/core';
19
- import type { GuaranteeGraph, DiagnosticCategoryKey } from '@grafema/core';
18
+ } from '@grafema/util';
19
+ import type { GuaranteeGraph, DiagnosticCategoryKey } from '@grafema/util';
20
20
  import { exitWithError } from '../utils/errorFormatter.js';
21
21
 
22
22
 
@@ -31,7 +31,7 @@ const BUILT_IN_VALIDATORS: Record<string, { name: string; description: string; c
31
31
  // }
32
32
  };
33
33
 
34
- // Re-export for backward compatibility (deprecated - import from @grafema/core instead)
34
+ // Re-export for backward compatibility (deprecated - import from @grafema/util instead)
35
35
  export { DIAGNOSTIC_CATEGORIES as CHECK_CATEGORIES };
36
36
 
37
37
  export const checkCommand = new Command('check')
@@ -132,7 +132,7 @@ Examples:
132
132
  exitWithError('No graph database found', ['Run: grafema analyze']);
133
133
  }
134
134
 
135
- const backend = new RFDBServerBackend({ dbPath });
135
+ const backend = new RFDBServerBackend({ dbPath, clientName: 'cli' });
136
136
  await backend.connect();
137
137
 
138
138
  // Check graph freshness
@@ -287,7 +287,7 @@ async function runBuiltInValidator(
287
287
  exitWithError('No graph database found', ['Run: grafema analyze']);
288
288
  }
289
289
 
290
- const backend = new RFDBServerBackend({ dbPath });
290
+ const backend = new RFDBServerBackend({ dbPath, clientName: 'cli' });
291
291
  await backend.connect();
292
292
 
293
293
  // Check graph freshness
@@ -21,8 +21,8 @@ import {
21
21
  getNodeDisplayName,
22
22
  formatEdgeMetadata,
23
23
  STRUCTURAL_EDGE_TYPES,
24
- } from '@grafema/core';
25
- import type { NodeContext, EdgeGroup } from '@grafema/core';
24
+ } from '@grafema/util';
25
+ import type { NodeContext, EdgeGroup } from '@grafema/util';
26
26
  import type { BaseNodeRecord } from '@grafema/types';
27
27
  import { getCodePreview, formatCodePreview } from '../utils/codePreview.js';
28
28
  import { formatLocation } from '../utils/formatNode.js';
@@ -79,7 +79,7 @@ Examples:
79
79
  exitWithError('No graph database found', ['Run: grafema analyze']);
80
80
  }
81
81
 
82
- const backend = new RFDBServerBackend({ dbPath });
82
+ const backend = new RFDBServerBackend({ dbPath, clientName: 'cli' });
83
83
  await backend.connect();
84
84
 
85
85
  const spinner = new Spinner('Loading context...');
@@ -10,7 +10,7 @@
10
10
  import { Command } from 'commander';
11
11
  import { resolve, join } from 'path';
12
12
  import { existsSync } from 'fs';
13
- import { RFDBServerBackend, CoverageAnalyzer, type CoverageResult } from '@grafema/core';
13
+ import { RFDBServerBackend, CoverageAnalyzer, type CoverageResult } from '@grafema/util';
14
14
  import { exitWithError } from '../utils/errorFormatter.js';
15
15
 
16
16
  export const coverageCommand = new Command('coverage')
@@ -34,7 +34,7 @@ Examples:
34
34
  exitWithError('No graph database found', ['Run: grafema analyze']);
35
35
  }
36
36
 
37
- const backend = new RFDBServerBackend({ dbPath });
37
+ const backend = new RFDBServerBackend({ dbPath, clientName: 'cli' });
38
38
  await backend.connect();
39
39
 
40
40
  try {