@grafema/cli 0.3.21 → 0.3.23
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/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +1 -0
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/analyzeAction.d.ts +1 -0
- package/dist/commands/analyzeAction.d.ts.map +1 -1
- package/dist/commands/analyzeAction.js +24 -1
- package/dist/commands/analyzeAction.js.map +1 -1
- package/dist/commands/resolve.d.ts +8 -0
- package/dist/commands/resolve.d.ts.map +1 -0
- package/dist/commands/resolve.js +25 -0
- package/dist/commands/resolve.js.map +1 -0
- package/dist/commands/resolveAction.d.ts +17 -0
- package/dist/commands/resolveAction.d.ts.map +1 -0
- package/dist/commands/resolveAction.js +230 -0
- package/dist/commands/resolveAction.js.map +1 -0
- package/package.json +4 -4
- package/src/cli.ts +2 -0
- package/src/commands/analyze.ts +1 -0
- package/src/commands/analyzeAction.ts +30 -1
- package/src/commands/resolve.ts +27 -0
- package/src/commands/resolveAction.ts +270 -0
package/dist/cli.js
CHANGED
|
@@ -8,6 +8,7 @@ import { fileURLToPath } from 'url';
|
|
|
8
8
|
import { dirname, join } from 'path';
|
|
9
9
|
import { initCommand } from './commands/init.js';
|
|
10
10
|
import { analyzeCommand } from './commands/analyze.js';
|
|
11
|
+
import { resolveCommand } from './commands/resolve.js';
|
|
11
12
|
import { overviewCommand } from './commands/overview.js';
|
|
12
13
|
import { queryCommand } from './commands/query.js';
|
|
13
14
|
import { typesCommand } from './commands/types.js';
|
|
@@ -48,6 +49,7 @@ program.addCommand(whyCommand);
|
|
|
48
49
|
// Commands in logical order
|
|
49
50
|
program.addCommand(initCommand);
|
|
50
51
|
program.addCommand(analyzeCommand);
|
|
52
|
+
program.addCommand(resolveCommand);
|
|
51
53
|
program.addCommand(overviewCommand);
|
|
52
54
|
program.addCommand(queryCommand);
|
|
53
55
|
program.addCommand(contextCommand);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
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,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;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,iCAAiC;AACjC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAErF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,2BAA2B,CAAC;KACxC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,uBAAuB;AACvB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,4BAA4B;AAC5B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAE,4BAA4B;AAC/D,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEpC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,SA4BH,CAAC"}
|
package/dist/commands/analyze.js
CHANGED
|
@@ -17,6 +17,7 @@ export const analyzeCommand = new Command('analyze')
|
|
|
17
17
|
.option('--log-level <level>', 'Set log level (silent, errors, warnings, info, debug)')
|
|
18
18
|
.option('--log-file <path>', 'Write all log output to a file')
|
|
19
19
|
.option('--strict', 'Enable strict mode (fail on unresolved references)')
|
|
20
|
+
.option('--resolve-jobs <number>', 'Number of parallel resolve workers (default: auto based on CPU and memory)')
|
|
20
21
|
.option('--no-auto-start', 'Do not auto-start RFDB server (require manual start)')
|
|
21
22
|
.option('--quickstart', 'Auto-initialize if no config exists (scan project, generate config)')
|
|
22
23
|
.addHelpText('after', `
|
|
@@ -1 +1 @@
|
|
|
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,iBAAiB,EAAE,sDAAsD,CAAC;KACjF,MAAM,CAAC,cAAc,EAAE,qEAAqE,CAAC;KAC7F,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;CAYvB,CAAC;KACC,MAAM,CAAC,aAAa,CAAC,CAAC"}
|
|
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,yBAAyB,EAAE,4EAA4E,CAAC;KAC/G,MAAM,CAAC,iBAAiB,EAAE,sDAAsD,CAAC;KACjF,MAAM,CAAC,cAAc,EAAE,qEAAqE,CAAC;KAC7F,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;CAYvB,CAAC;KACC,MAAM,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeAction.d.ts","sourceRoot":"","sources":["../../src/commands/analyzeAction.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"analyzeAction.d.ts","sourceRoot":"","sources":["../../src/commands/analyzeAction.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqBH,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;AAkHD,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,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmOjT"}
|
|
@@ -10,7 +10,7 @@ import { resolve, join, dirname } from 'path';
|
|
|
10
10
|
import { fileURLToPath } from 'url';
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
12
12
|
import { spawn } from 'child_process';
|
|
13
|
-
import { RFDBServerBackend, createLogger, findOrchestratorBinary, getBinaryNotFoundMessage, findAnalyzerBinary, ensureBinary, ManifestGenerator, ManifestResolver, } from '@grafema/util';
|
|
13
|
+
import { RFDBServerBackend, createLogger, findOrchestratorBinary, getBinaryNotFoundMessage, findAnalyzerBinary, ensureBinary, ManifestGenerator, ManifestResolver, GRAFEMA_VERSION, getSchemaVersion, } from '@grafema/util';
|
|
14
14
|
import { scanExtensions, generateSmartConfig, writeConfig, updateGitignore, formatDetected } from '../utils/quickstart.js';
|
|
15
15
|
export async function fetchNodeEdgeCounts(backend) {
|
|
16
16
|
const [nodeCount, edgeCount] = await Promise.all([backend.nodeCount(), backend.edgeCount()]);
|
|
@@ -225,6 +225,12 @@ export async function analyzeAction(path, options) {
|
|
|
225
225
|
if (options.clear) {
|
|
226
226
|
debug('Clearing existing database...');
|
|
227
227
|
await backend.clear();
|
|
228
|
+
// Shutdown + restart server for clean state.
|
|
229
|
+
// Without this, the old server keeps running with a stale socket
|
|
230
|
+
// after the orchestrator finishes, causing "connection failed" in extension.
|
|
231
|
+
debug('Restarting server for clean state...');
|
|
232
|
+
await backend.shutdownServer();
|
|
233
|
+
await backend.connect(); // auto-starts a fresh server
|
|
228
234
|
}
|
|
229
235
|
const startTime = Date.now();
|
|
230
236
|
// Build orchestrator args
|
|
@@ -232,6 +238,9 @@ export async function analyzeAction(path, options) {
|
|
|
232
238
|
if (options.clear) {
|
|
233
239
|
args.push('--force');
|
|
234
240
|
}
|
|
241
|
+
if (options.resolveJobs) {
|
|
242
|
+
args.push('--resolve-jobs', options.resolveJobs);
|
|
243
|
+
}
|
|
235
244
|
debug(`Spawning: ${orchestratorBinary} ${args.join(' ')}`);
|
|
236
245
|
let exitCode = 0;
|
|
237
246
|
try {
|
|
@@ -273,6 +282,20 @@ export async function analyzeAction(path, options) {
|
|
|
273
282
|
catch (err) {
|
|
274
283
|
debug(`Manifest generation skipped: ${err instanceof Error ? err.message : String(err)}`);
|
|
275
284
|
}
|
|
285
|
+
// Auto-update config version if it differs (prevents patch mismatch warnings)
|
|
286
|
+
try {
|
|
287
|
+
const currentSchema = getSchemaVersion(GRAFEMA_VERSION);
|
|
288
|
+
const configContent = readFileSync(configPath, 'utf-8');
|
|
289
|
+
const versionMatch = configContent.match(/^version:\s*["']?([^"'\s]+)["']?/m);
|
|
290
|
+
if (versionMatch && versionMatch[1] !== currentSchema) {
|
|
291
|
+
const updated = configContent.replace(/^version:\s*["']?[^"'\s]+["']?/m, `version: ${currentSchema}`);
|
|
292
|
+
writeFileSync(configPath, updated);
|
|
293
|
+
debug(`Config version updated: ${versionMatch[1]} → ${currentSchema}`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
debug('Config version auto-update skipped');
|
|
298
|
+
}
|
|
276
299
|
// Auto-load registry manifests for cross-package resolution
|
|
277
300
|
const registryDir = join(projectPath, 'registry');
|
|
278
301
|
if (existsSync(registryDir)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeAction.js","sourceRoot":"","sources":["../../src/commands/analyzeAction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyzeAction.js","sourceRoot":"","sources":["../../src/commands/analyzeAction.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAO3H,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAA6B;IACrE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,SAAiC,OAAO,CAAC,IAAI;IACtF,MAAM,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,OAAkE;IACrF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,WAAW,GAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAClF,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAoB,CAAC,EAAE,CAAC;YACvD,OAAO,OAAO,CAAC,QAAoB,CAAC;QACtC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IACnC,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,CAAE,8CAA8C;IACnF,OAAO,QAAQ,CAAC,CAAE,0CAA0C;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,WAAmB;IACzC,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC;QACxC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC;KAC7C,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,MAAM,eAAe,GAA6B;IAChD,+BAA+B;IAC/B,EAAE,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAC3C,EAAE,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAC3C,GAAG,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAC5C,GAAG,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAC5C,GAAG,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAC5C,GAAG,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAC5C,SAAS;IACT,EAAE,EAAE,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IACjD,GAAG,EAAE,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAClD,UAAU;IACV,EAAE,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAC3C,OAAO;IACP,EAAE,EAAE,CAAC,uBAAuB,EAAE,sBAAsB,CAAC;IACrD,OAAO;IACP,IAAI,EAAE,CAAC,uBAAuB,EAAE,cAAc,EAAE,aAAa,CAAC;IAC9D,SAAS;IACT,EAAE,EAAE,CAAC,yBAAyB,EAAE,gBAAgB,EAAE,eAAe,CAAC;IAClE,GAAG,EAAE,CAAC,yBAAyB,EAAE,gBAAgB,EAAE,eAAe,CAAC;IACnE,KAAK;IACL,EAAE,EAAE,CAAC,qBAAqB,EAAE,YAAY,EAAE,WAAW,CAAC;IACtD,QAAQ;IACR,CAAC,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC;IAC1C,GAAG,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC;IAC5C,CAAC,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC;IAC1C,GAAG,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC;IAC5C,QAAQ;IACR,KAAK,EAAE,CAAC,wBAAwB,EAAE,eAAe,EAAE,cAAc,CAAC;IAClE,QAAQ;IACR,CAAC,EAAE,CAAC,uBAAuB,EAAE,aAAa,CAAC;IAC3C,EAAE,EAAE,CAAC,uBAAuB,EAAE,aAAa,CAAC;IAC5C,uBAAuB;IACvB,EAAE,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC;IACrC,GAAG,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC;IACtC,GAAG,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC;CACvC,CAAC;AAEF;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CAAC,UAAkB,EAAE,GAAiC;IACzF,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAErD,2EAA2E;IAC3E,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,+DAA+D;IAC/D,KAAK,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACxD,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,yEAAyE;QACzE,IAAI,kBAAkB,CAAC,OAAO,CAAC;YAAE,SAAS;QAC1C,0EAA0E;QAC1E,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,cAAc,OAAO,MAAM,UAAU,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,OAAgP;IAChS,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAE9C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,iCAAiC;IACjC,mDAAmD;IACnD,uDAAuD;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;IAEvD,mCAAmC;IACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE1E,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;IAE3C,8DAA8D;IAC9D,IAAI,kBAAkB,GAAG,sBAAsB,EAAE,CAAC;IAClD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1E,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;YACzD,kBAAkB,GAAG,UAAU,CAAC;QAClC,CAAC;IACH,CAAC;IACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,uBAAuB,kBAAkB,EAAE,CAAC,CAAC;IAEnD,wCAAwC;IACxC,IAAI,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpD,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACxC,eAAe,CAAC,WAAW,CAAC,CAAC;QAE7B,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,wBAAwB,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,+DAA+D,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,CAAC;QAET,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;IAErC,mFAAmF;IACnF,MAAM,sBAAsB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAEhD,kEAAkE;IAClE,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC;QACpC,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACpC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACvC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,6CAA6C;QAC7C,iEAAiE;QACjE,6EAA6E;QAC7E,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC9C,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,6BAA6B;IACxD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,0BAA0B;IAC1B,MAAM,IAAI,GAAa,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAE3F,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,aAAa,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE3D,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,IAAI,CAAC;QACH,6BAA6B;QAC7B,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;YAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE;gBAC5C,KAAK,EAAE;oBACL,QAAQ;oBACR,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;oBACpC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;iBACrC;gBACD,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,sCAAsC;oBACtC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;iBACtE;aACF,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;YACvD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAI,CAAC,EAAE,CAAC,CAAC;YACT,IAAI,CAAC,wBAAwB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YACpC,IAAI,CAAC,YAAY,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YAEpC,8CAA8C;YAC9C,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACrF,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAI,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;YAED,8EAA8E;YAC9E,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;gBACxD,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACxD,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBAC9E,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;oBACtD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CACnC,iCAAiC,EACjC,YAAY,aAAa,EAAE,CAC5B,CAAC;oBACF,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBACnC,KAAK,CAAC,2BAA2B,YAAY,CAAC,CAAC,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC9C,CAAC;YAED,4DAA4D;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAClD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;oBACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;oBACtD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;wBACf,IAAI,CAAC,eAAe,MAAM,2BAA2B,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,KAAK,CAAC,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QAED,6BAA6B;QAC7B,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAC7B,OAA0B,EAC1B,WAAmB,EACnB,UAAkB,EAClB,KAAmC;IAEnC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAK5D,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0DAA0D;IAC1D,IAAI,SAA6B,CAAC;IAClC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;aAAM,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,WAAW,GAAI,SAAoC,CAAC,MAAM,IAAK,SAAoC,CAAC,OAAO,CAAC;YAClH,IAAI,WAAW;gBAAE,SAAS,GAAG,WAAW,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,qEAAqE;IACrE,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,GAAG,SAAS;aAClB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;aAC1B,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEtF,8CAA8C;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5E,MAAM,mBAAmB,GAAG;QAC1B,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC;KAChC,CAAC;IACF,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,KAAK,CAAC,2BAA2B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACzB,KAAK,CAAC,gBAAgB,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,gBAAgB,aAAa,IAAI,QAAQ,EAAE,CAAC,CAAC;IAEnD,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,OAAO,EAAE;QACzC,IAAI;QACJ,aAAa;QACb,UAAU;QACV,UAAU,EAAE,QAAQ;QACpB,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACxD,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE3C,KAAK,CAAC,cAAc,QAAQ,CAAC,OAAO,CAAC,MAAM,cAAc,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpF,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve command — Re-run resolution phase on an already-analyzed project.
|
|
3
|
+
*
|
|
4
|
+
* Command definition only. Execution logic is in resolveAction.ts.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
export declare const resolveCommand: Command;
|
|
8
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/commands/resolve.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,cAAc,SAgBH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve command — Re-run resolution phase on an already-analyzed project.
|
|
3
|
+
*
|
|
4
|
+
* Command definition only. Execution logic is in resolveAction.ts.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { resolveAction } from './resolveAction.js';
|
|
8
|
+
export const resolveCommand = new Command('resolve')
|
|
9
|
+
.description('Re-run resolution phase on an already-analyzed project')
|
|
10
|
+
.argument('[path]', 'Project path', '.')
|
|
11
|
+
.option('-q, --quiet', 'Suppress progress output')
|
|
12
|
+
.option('-v, --verbose', 'Show verbose logging')
|
|
13
|
+
.option('--debug', 'Enable debug mode')
|
|
14
|
+
.option('--log-level <level>', 'Set log level (silent, errors, warnings, info, debug)')
|
|
15
|
+
.option('--log-file <path>', 'Write all log output to a file')
|
|
16
|
+
.option('-j, --jobs <number>', 'Number of parallel resolve workers (default: auto)')
|
|
17
|
+
.option('--no-auto-start', 'Do not auto-start RFDB server (require manual start)')
|
|
18
|
+
.addHelpText('after', `
|
|
19
|
+
Examples:
|
|
20
|
+
grafema resolve Re-run resolution on current project
|
|
21
|
+
grafema resolve ./my-project Re-run resolution on specific directory
|
|
22
|
+
grafema resolve -v Verbose output with progress details
|
|
23
|
+
`)
|
|
24
|
+
.action(resolveAction);
|
|
25
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/commands/resolve.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,wDAAwD,CAAC;KACrE,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC;KACvC,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACtC,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;KACtF,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC;KAC7D,MAAM,CAAC,qBAAqB,EAAE,oDAAoD,CAAC;KACnF,MAAM,CAAC,iBAAiB,EAAE,sDAAsD,CAAC;KACjF,WAAW,CAAC,OAAO,EAAE;;;;;CAKvB,CAAC;KACC,MAAM,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve command action — re-runs the resolution phase via grafema-orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Requires an already-analyzed project (graph.rfdb must exist).
|
|
5
|
+
* Spawns grafema-orchestrator with the `resolve` subcommand to re-run
|
|
6
|
+
* only the resolution phase without re-parsing or re-analyzing files.
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolveAction(path: string, options: {
|
|
9
|
+
quiet?: boolean;
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
debug?: boolean;
|
|
12
|
+
logLevel?: string;
|
|
13
|
+
logFile?: string;
|
|
14
|
+
jobs?: string;
|
|
15
|
+
autoStart?: boolean;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=resolveAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveAction.d.ts","sourceRoot":"","sources":["../../src/commands/resolveAction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2GH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJhB"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve command action — re-runs the resolution phase via grafema-orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Requires an already-analyzed project (graph.rfdb must exist).
|
|
5
|
+
* Spawns grafema-orchestrator with the `resolve` subcommand to re-run
|
|
6
|
+
* only the resolution phase without re-parsing or re-analyzing files.
|
|
7
|
+
*/
|
|
8
|
+
import { resolve, join } from 'path';
|
|
9
|
+
import { existsSync, readFileSync } from 'fs';
|
|
10
|
+
import { spawn } from 'child_process';
|
|
11
|
+
import { RFDBServerBackend, createLogger, findOrchestratorBinary, getBinaryNotFoundMessage, findAnalyzerBinary, ensureBinary, } from '@grafema/util';
|
|
12
|
+
import { fetchNodeEdgeCounts, exitWithCode } from './analyzeAction.js';
|
|
13
|
+
/**
|
|
14
|
+
* Determine log level from CLI options.
|
|
15
|
+
* Priority: --log-level > --quiet > --verbose > default ('silent')
|
|
16
|
+
*/
|
|
17
|
+
function getLogLevel(options) {
|
|
18
|
+
if (options.logLevel) {
|
|
19
|
+
const validLevels = ['silent', 'errors', 'warnings', 'info', 'debug'];
|
|
20
|
+
if (validLevels.includes(options.logLevel)) {
|
|
21
|
+
return options.logLevel;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (options.quiet)
|
|
25
|
+
return 'silent';
|
|
26
|
+
if (options.verbose)
|
|
27
|
+
return 'info';
|
|
28
|
+
return 'silent';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Find the grafema.config.yaml config file for the orchestrator.
|
|
32
|
+
*
|
|
33
|
+
* Search order:
|
|
34
|
+
* 1. <projectPath>/grafema.config.yaml
|
|
35
|
+
* 2. <projectPath>/.grafema/config.yaml (legacy location)
|
|
36
|
+
*/
|
|
37
|
+
function findConfigFile(projectPath) {
|
|
38
|
+
const candidates = [
|
|
39
|
+
join(projectPath, 'grafema.config.yaml'),
|
|
40
|
+
join(projectPath, '.grafema', 'config.yaml'),
|
|
41
|
+
];
|
|
42
|
+
for (const candidate of candidates) {
|
|
43
|
+
if (existsSync(candidate)) {
|
|
44
|
+
return candidate;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
/** Map of file extensions to required resolve binaries only. */
|
|
50
|
+
const EXT_TO_RESOLVE_BINARIES = {
|
|
51
|
+
js: ['grafema-resolve'],
|
|
52
|
+
ts: ['grafema-resolve'],
|
|
53
|
+
jsx: ['grafema-resolve'],
|
|
54
|
+
tsx: ['grafema-resolve'],
|
|
55
|
+
mjs: ['grafema-resolve'],
|
|
56
|
+
cjs: ['grafema-resolve'],
|
|
57
|
+
py: ['python-resolve'],
|
|
58
|
+
pyi: ['python-resolve'],
|
|
59
|
+
hs: ['haskell-resolve'],
|
|
60
|
+
rs: ['grafema-rust-resolve'],
|
|
61
|
+
java: ['java-resolve'],
|
|
62
|
+
kt: ['kotlin-resolve'],
|
|
63
|
+
kts: ['kotlin-resolve'],
|
|
64
|
+
go: ['go-resolve'],
|
|
65
|
+
c: ['cpp-resolve'],
|
|
66
|
+
cpp: ['cpp-resolve'],
|
|
67
|
+
h: ['cpp-resolve'],
|
|
68
|
+
hpp: ['cpp-resolve'],
|
|
69
|
+
swift: ['swift-resolve'],
|
|
70
|
+
ex: ['beam-resolve'],
|
|
71
|
+
exs: ['beam-resolve'],
|
|
72
|
+
erl: ['beam-resolve'],
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Detect languages from config include patterns and ensure their resolve binaries exist.
|
|
76
|
+
* Reads the config file as text, extracts file extensions from include globs,
|
|
77
|
+
* and pre-downloads missing binaries before the orchestrator needs them.
|
|
78
|
+
*/
|
|
79
|
+
async function ensureResolveBinaries(configPath, log) {
|
|
80
|
+
const configText = readFileSync(configPath, 'utf-8');
|
|
81
|
+
const neededBinaries = new Set();
|
|
82
|
+
for (const match of configText.matchAll(/\*\.(\w+)/g)) {
|
|
83
|
+
const ext = match[1];
|
|
84
|
+
const bins = EXT_TO_RESOLVE_BINARIES[ext];
|
|
85
|
+
if (bins)
|
|
86
|
+
bins.forEach(b => neededBinaries.add(b));
|
|
87
|
+
}
|
|
88
|
+
// Always ensure JS/TS resolve binary (most common, default language)
|
|
89
|
+
neededBinaries.add('grafema-resolve');
|
|
90
|
+
for (const binName of neededBinaries) {
|
|
91
|
+
if (findAnalyzerBinary(binName))
|
|
92
|
+
continue;
|
|
93
|
+
const downloaded = await ensureBinary(binName, null, log);
|
|
94
|
+
if (downloaded) {
|
|
95
|
+
log(`Downloaded ${binName} → ${downloaded}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export async function resolveAction(path, options) {
|
|
100
|
+
const projectPath = resolve(path);
|
|
101
|
+
const grafemaDir = join(projectPath, '.grafema');
|
|
102
|
+
const dbPath = join(grafemaDir, 'graph.rfdb');
|
|
103
|
+
if (!existsSync(dbPath)) {
|
|
104
|
+
console.error('');
|
|
105
|
+
console.error('No analyzed database found.');
|
|
106
|
+
console.error('Run `grafema analyze` first to analyze the project.');
|
|
107
|
+
console.error('');
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
const info = options.quiet ? () => { } : console.log;
|
|
111
|
+
const debug = options.verbose ? console.log : () => { };
|
|
112
|
+
const logLevel = getLogLevel(options);
|
|
113
|
+
const logFile = options.logFile ? resolve(options.logFile) : undefined;
|
|
114
|
+
const _logger = createLogger(logLevel, logFile ? { logFile } : undefined);
|
|
115
|
+
if (logFile) {
|
|
116
|
+
debug(`Log file: ${logFile}`);
|
|
117
|
+
}
|
|
118
|
+
debug(`Re-running resolution: ${projectPath}`);
|
|
119
|
+
// Find grafema-orchestrator binary (lazy download if missing)
|
|
120
|
+
let orchestratorBinary = findOrchestratorBinary();
|
|
121
|
+
if (!orchestratorBinary) {
|
|
122
|
+
const downloaded = await ensureBinary('grafema-orchestrator', null, info);
|
|
123
|
+
if (downloaded) {
|
|
124
|
+
debug(`Downloaded grafema-orchestrator → ${downloaded}`);
|
|
125
|
+
orchestratorBinary = downloaded;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (!orchestratorBinary) {
|
|
129
|
+
console.error('');
|
|
130
|
+
console.error(getBinaryNotFoundMessage('grafema-orchestrator'));
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
debug(`Using orchestrator: ${orchestratorBinary}`);
|
|
134
|
+
// Find config file for the orchestrator
|
|
135
|
+
const configPath = findConfigFile(projectPath);
|
|
136
|
+
if (!configPath) {
|
|
137
|
+
console.error('');
|
|
138
|
+
console.error('No grafema config file found.');
|
|
139
|
+
console.error('');
|
|
140
|
+
console.error('Expected one of:');
|
|
141
|
+
console.error(` ${join(projectPath, 'grafema.config.yaml')}`);
|
|
142
|
+
console.error(` ${join(projectPath, '.grafema', 'config.yaml')}`);
|
|
143
|
+
console.error('');
|
|
144
|
+
console.error('Run `grafema analyze` first (or `grafema analyze --quickstart`).');
|
|
145
|
+
console.error('');
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
debug(`Using config: ${configPath}`);
|
|
149
|
+
// Ensure resolve binaries exist for detected languages (lazy download if missing)
|
|
150
|
+
await ensureResolveBinaries(configPath, debug);
|
|
151
|
+
// Connect to RFDB server — auto-start by default (zero-config UX)
|
|
152
|
+
const backend = new RFDBServerBackend({
|
|
153
|
+
dbPath,
|
|
154
|
+
autoStart: options.autoStart ?? true,
|
|
155
|
+
silent: !options.verbose,
|
|
156
|
+
clientName: 'cli'
|
|
157
|
+
});
|
|
158
|
+
try {
|
|
159
|
+
await backend.connect();
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
if (err instanceof Error && err.message.includes('not running')) {
|
|
163
|
+
console.error('');
|
|
164
|
+
console.error('RFDB server failed to start.');
|
|
165
|
+
console.error('');
|
|
166
|
+
console.error('Try starting manually:');
|
|
167
|
+
console.error(' grafema server start');
|
|
168
|
+
console.error('');
|
|
169
|
+
console.error('Or run diagnostics:');
|
|
170
|
+
console.error(' grafema doctor');
|
|
171
|
+
console.error('');
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
throw err;
|
|
175
|
+
}
|
|
176
|
+
const startTime = Date.now();
|
|
177
|
+
// Build orchestrator args — resolve subcommand
|
|
178
|
+
const args = ['resolve', '--config', configPath, '--socket', backend.socketPath];
|
|
179
|
+
if (options.jobs) {
|
|
180
|
+
args.push('--jobs', options.jobs);
|
|
181
|
+
}
|
|
182
|
+
debug(`Spawning: ${orchestratorBinary} ${args.join(' ')}`);
|
|
183
|
+
let exitCode = 0;
|
|
184
|
+
try {
|
|
185
|
+
exitCode = await new Promise((resolvePromise, reject) => {
|
|
186
|
+
const child = spawn(orchestratorBinary, args, {
|
|
187
|
+
stdio: [
|
|
188
|
+
'ignore',
|
|
189
|
+
options.quiet ? 'ignore' : 'inherit',
|
|
190
|
+
options.quiet ? 'ignore' : 'inherit',
|
|
191
|
+
],
|
|
192
|
+
env: {
|
|
193
|
+
...process.env,
|
|
194
|
+
RUST_LOG: options.debug ? 'debug' : (options.quiet ? 'warn' : 'info'),
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
child.on('error', (err) => {
|
|
198
|
+
reject(new Error(`Failed to spawn grafema-orchestrator: ${err.message}`));
|
|
199
|
+
});
|
|
200
|
+
child.on('close', (code) => {
|
|
201
|
+
resolvePromise(code ?? 1);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
if (exitCode === 0) {
|
|
205
|
+
const elapsedSeconds = (Date.now() - startTime) / 1000;
|
|
206
|
+
const stats = await fetchNodeEdgeCounts(backend);
|
|
207
|
+
info('');
|
|
208
|
+
info(`Resolution complete in ${elapsedSeconds.toFixed(2)}s`);
|
|
209
|
+
info(` Nodes: ${stats.nodeCount}`);
|
|
210
|
+
info(` Edges: ${stats.edgeCount}`);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
console.error('');
|
|
214
|
+
console.error(`Resolution failed with exit code ${exitCode}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
219
|
+
console.error('');
|
|
220
|
+
console.error(`Resolution failed: ${error.message}`);
|
|
221
|
+
exitCode = 1;
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
if (backend.connected) {
|
|
225
|
+
await backend.close();
|
|
226
|
+
}
|
|
227
|
+
exitWithCode(exitCode);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=resolveAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveAction.js","sourceRoot":"","sources":["../../src/commands/resolveAction.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafema/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.23",
|
|
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.3.
|
|
39
|
-
"@grafema/
|
|
40
|
-
"@grafema/
|
|
38
|
+
"@grafema/api": "0.3.23",
|
|
39
|
+
"@grafema/types": "0.3.23",
|
|
40
|
+
"@grafema/util": "0.3.23"
|
|
41
41
|
},
|
|
42
42
|
"optionalDependencies": {
|
|
43
43
|
"@grafema/grafema-darwin-arm64": "0.3.16",
|
package/src/cli.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { fileURLToPath } from 'url';
|
|
|
9
9
|
import { dirname, join } from 'path';
|
|
10
10
|
import { initCommand } from './commands/init.js';
|
|
11
11
|
import { analyzeCommand } from './commands/analyze.js';
|
|
12
|
+
import { resolveCommand } from './commands/resolve.js';
|
|
12
13
|
import { overviewCommand } from './commands/overview.js';
|
|
13
14
|
import { queryCommand } from './commands/query.js';
|
|
14
15
|
import { typesCommand } from './commands/types.js';
|
|
@@ -55,6 +56,7 @@ program.addCommand(whyCommand);
|
|
|
55
56
|
// Commands in logical order
|
|
56
57
|
program.addCommand(initCommand);
|
|
57
58
|
program.addCommand(analyzeCommand);
|
|
59
|
+
program.addCommand(resolveCommand);
|
|
58
60
|
program.addCommand(overviewCommand);
|
|
59
61
|
program.addCommand(queryCommand);
|
|
60
62
|
program.addCommand(contextCommand);
|
package/src/commands/analyze.ts
CHANGED
|
@@ -20,6 +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('--resolve-jobs <number>', 'Number of parallel resolve workers (default: auto based on CPU and memory)')
|
|
23
24
|
.option('--no-auto-start', 'Do not auto-start RFDB server (require manual start)')
|
|
24
25
|
.option('--quickstart', 'Auto-initialize if no config exists (scan project, generate config)')
|
|
25
26
|
.addHelpText('after', `
|
|
@@ -20,6 +20,8 @@ import {
|
|
|
20
20
|
ensureBinary,
|
|
21
21
|
ManifestGenerator,
|
|
22
22
|
ManifestResolver,
|
|
23
|
+
GRAFEMA_VERSION,
|
|
24
|
+
getSchemaVersion,
|
|
23
25
|
} from '@grafema/util';
|
|
24
26
|
import type { LogLevel } from '@grafema/util';
|
|
25
27
|
import { scanExtensions, generateSmartConfig, writeConfig, updateGitignore, formatDetected } from '../utils/quickstart.js';
|
|
@@ -150,7 +152,7 @@ async function ensureLanguageBinaries(configPath: string, log: (...args: unknown
|
|
|
150
152
|
}
|
|
151
153
|
}
|
|
152
154
|
|
|
153
|
-
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; quickstart?: boolean }): Promise<void> {
|
|
155
|
+
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; resolveJobs?: string; autoStart?: boolean; quickstart?: boolean }): Promise<void> {
|
|
154
156
|
const projectPath = resolve(path);
|
|
155
157
|
const grafemaDir = join(projectPath, '.grafema');
|
|
156
158
|
const dbPath = join(grafemaDir, 'graph.rfdb');
|
|
@@ -261,6 +263,12 @@ export async function analyzeAction(path: string, options: { service?: string; e
|
|
|
261
263
|
if (options.clear) {
|
|
262
264
|
debug('Clearing existing database...');
|
|
263
265
|
await backend.clear();
|
|
266
|
+
// Shutdown + restart server for clean state.
|
|
267
|
+
// Without this, the old server keeps running with a stale socket
|
|
268
|
+
// after the orchestrator finishes, causing "connection failed" in extension.
|
|
269
|
+
debug('Restarting server for clean state...');
|
|
270
|
+
await backend.shutdownServer();
|
|
271
|
+
await backend.connect(); // auto-starts a fresh server
|
|
264
272
|
}
|
|
265
273
|
|
|
266
274
|
const startTime = Date.now();
|
|
@@ -272,6 +280,10 @@ export async function analyzeAction(path: string, options: { service?: string; e
|
|
|
272
280
|
args.push('--force');
|
|
273
281
|
}
|
|
274
282
|
|
|
283
|
+
if (options.resolveJobs) {
|
|
284
|
+
args.push('--resolve-jobs', options.resolveJobs);
|
|
285
|
+
}
|
|
286
|
+
|
|
275
287
|
debug(`Spawning: ${orchestratorBinary} ${args.join(' ')}`);
|
|
276
288
|
|
|
277
289
|
let exitCode = 0;
|
|
@@ -320,6 +332,23 @@ export async function analyzeAction(path: string, options: { service?: string; e
|
|
|
320
332
|
debug(`Manifest generation skipped: ${err instanceof Error ? err.message : String(err)}`);
|
|
321
333
|
}
|
|
322
334
|
|
|
335
|
+
// Auto-update config version if it differs (prevents patch mismatch warnings)
|
|
336
|
+
try {
|
|
337
|
+
const currentSchema = getSchemaVersion(GRAFEMA_VERSION);
|
|
338
|
+
const configContent = readFileSync(configPath, 'utf-8');
|
|
339
|
+
const versionMatch = configContent.match(/^version:\s*["']?([^"'\s]+)["']?/m);
|
|
340
|
+
if (versionMatch && versionMatch[1] !== currentSchema) {
|
|
341
|
+
const updated = configContent.replace(
|
|
342
|
+
/^version:\s*["']?[^"'\s]+["']?/m,
|
|
343
|
+
`version: ${currentSchema}`
|
|
344
|
+
);
|
|
345
|
+
writeFileSync(configPath, updated);
|
|
346
|
+
debug(`Config version updated: ${versionMatch[1]} → ${currentSchema}`);
|
|
347
|
+
}
|
|
348
|
+
} catch {
|
|
349
|
+
debug('Config version auto-update skipped');
|
|
350
|
+
}
|
|
351
|
+
|
|
323
352
|
// Auto-load registry manifests for cross-package resolution
|
|
324
353
|
const registryDir = join(projectPath, 'registry');
|
|
325
354
|
if (existsSync(registryDir)) {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve command — Re-run resolution phase on an already-analyzed project.
|
|
3
|
+
*
|
|
4
|
+
* Command definition only. Execution logic is in resolveAction.ts.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { resolveAction } from './resolveAction.js';
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
export const resolveCommand = new Command('resolve')
|
|
12
|
+
.description('Re-run resolution phase on an already-analyzed project')
|
|
13
|
+
.argument('[path]', 'Project path', '.')
|
|
14
|
+
.option('-q, --quiet', 'Suppress progress output')
|
|
15
|
+
.option('-v, --verbose', 'Show verbose logging')
|
|
16
|
+
.option('--debug', 'Enable debug mode')
|
|
17
|
+
.option('--log-level <level>', 'Set log level (silent, errors, warnings, info, debug)')
|
|
18
|
+
.option('--log-file <path>', 'Write all log output to a file')
|
|
19
|
+
.option('-j, --jobs <number>', 'Number of parallel resolve workers (default: auto)')
|
|
20
|
+
.option('--no-auto-start', 'Do not auto-start RFDB server (require manual start)')
|
|
21
|
+
.addHelpText('after', `
|
|
22
|
+
Examples:
|
|
23
|
+
grafema resolve Re-run resolution on current project
|
|
24
|
+
grafema resolve ./my-project Re-run resolution on specific directory
|
|
25
|
+
grafema resolve -v Verbose output with progress details
|
|
26
|
+
`)
|
|
27
|
+
.action(resolveAction);
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve command action — re-runs the resolution phase via grafema-orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Requires an already-analyzed project (graph.rfdb must exist).
|
|
5
|
+
* Spawns grafema-orchestrator with the `resolve` subcommand to re-run
|
|
6
|
+
* only the resolution phase without re-parsing or re-analyzing files.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { resolve, join } from 'path';
|
|
10
|
+
import { existsSync, readFileSync } from 'fs';
|
|
11
|
+
import { spawn } from 'child_process';
|
|
12
|
+
import {
|
|
13
|
+
RFDBServerBackend,
|
|
14
|
+
createLogger,
|
|
15
|
+
findOrchestratorBinary,
|
|
16
|
+
getBinaryNotFoundMessage,
|
|
17
|
+
findAnalyzerBinary,
|
|
18
|
+
ensureBinary,
|
|
19
|
+
} from '@grafema/util';
|
|
20
|
+
import type { LogLevel } from '@grafema/util';
|
|
21
|
+
import { fetchNodeEdgeCounts, exitWithCode } from './analyzeAction.js';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Determine log level from CLI options.
|
|
25
|
+
* Priority: --log-level > --quiet > --verbose > default ('silent')
|
|
26
|
+
*/
|
|
27
|
+
function getLogLevel(options: { quiet?: boolean; verbose?: boolean; logLevel?: string }): LogLevel {
|
|
28
|
+
if (options.logLevel) {
|
|
29
|
+
const validLevels: LogLevel[] = ['silent', 'errors', 'warnings', 'info', 'debug'];
|
|
30
|
+
if (validLevels.includes(options.logLevel as LogLevel)) {
|
|
31
|
+
return options.logLevel as LogLevel;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (options.quiet) return 'silent';
|
|
35
|
+
if (options.verbose) return 'info';
|
|
36
|
+
return 'silent';
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Find the grafema.config.yaml config file for the orchestrator.
|
|
41
|
+
*
|
|
42
|
+
* Search order:
|
|
43
|
+
* 1. <projectPath>/grafema.config.yaml
|
|
44
|
+
* 2. <projectPath>/.grafema/config.yaml (legacy location)
|
|
45
|
+
*/
|
|
46
|
+
function findConfigFile(projectPath: string): string | null {
|
|
47
|
+
const candidates = [
|
|
48
|
+
join(projectPath, 'grafema.config.yaml'),
|
|
49
|
+
join(projectPath, '.grafema', 'config.yaml'),
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
for (const candidate of candidates) {
|
|
53
|
+
if (existsSync(candidate)) {
|
|
54
|
+
return candidate;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Map of file extensions to required resolve binaries only. */
|
|
62
|
+
const EXT_TO_RESOLVE_BINARIES: Record<string, string[]> = {
|
|
63
|
+
js: ['grafema-resolve'],
|
|
64
|
+
ts: ['grafema-resolve'],
|
|
65
|
+
jsx: ['grafema-resolve'],
|
|
66
|
+
tsx: ['grafema-resolve'],
|
|
67
|
+
mjs: ['grafema-resolve'],
|
|
68
|
+
cjs: ['grafema-resolve'],
|
|
69
|
+
py: ['python-resolve'],
|
|
70
|
+
pyi: ['python-resolve'],
|
|
71
|
+
hs: ['haskell-resolve'],
|
|
72
|
+
rs: ['grafema-rust-resolve'],
|
|
73
|
+
java: ['java-resolve'],
|
|
74
|
+
kt: ['kotlin-resolve'],
|
|
75
|
+
kts: ['kotlin-resolve'],
|
|
76
|
+
go: ['go-resolve'],
|
|
77
|
+
c: ['cpp-resolve'],
|
|
78
|
+
cpp: ['cpp-resolve'],
|
|
79
|
+
h: ['cpp-resolve'],
|
|
80
|
+
hpp: ['cpp-resolve'],
|
|
81
|
+
swift: ['swift-resolve'],
|
|
82
|
+
ex: ['beam-resolve'],
|
|
83
|
+
exs: ['beam-resolve'],
|
|
84
|
+
erl: ['beam-resolve'],
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Detect languages from config include patterns and ensure their resolve binaries exist.
|
|
89
|
+
* Reads the config file as text, extracts file extensions from include globs,
|
|
90
|
+
* and pre-downloads missing binaries before the orchestrator needs them.
|
|
91
|
+
*/
|
|
92
|
+
async function ensureResolveBinaries(configPath: string, log: (...args: unknown[]) => void): Promise<void> {
|
|
93
|
+
const configText = readFileSync(configPath, 'utf-8');
|
|
94
|
+
|
|
95
|
+
const neededBinaries = new Set<string>();
|
|
96
|
+
for (const match of configText.matchAll(/\*\.(\w+)/g)) {
|
|
97
|
+
const ext = match[1];
|
|
98
|
+
const bins = EXT_TO_RESOLVE_BINARIES[ext];
|
|
99
|
+
if (bins) bins.forEach(b => neededBinaries.add(b));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Always ensure JS/TS resolve binary (most common, default language)
|
|
103
|
+
neededBinaries.add('grafema-resolve');
|
|
104
|
+
|
|
105
|
+
for (const binName of neededBinaries) {
|
|
106
|
+
if (findAnalyzerBinary(binName)) continue;
|
|
107
|
+
const downloaded = await ensureBinary(binName, null, log);
|
|
108
|
+
if (downloaded) {
|
|
109
|
+
log(`Downloaded ${binName} → ${downloaded}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export async function resolveAction(path: string, options: {
|
|
115
|
+
quiet?: boolean;
|
|
116
|
+
verbose?: boolean;
|
|
117
|
+
debug?: boolean;
|
|
118
|
+
logLevel?: string;
|
|
119
|
+
logFile?: string;
|
|
120
|
+
jobs?: string;
|
|
121
|
+
autoStart?: boolean;
|
|
122
|
+
}): Promise<void> {
|
|
123
|
+
const projectPath = resolve(path);
|
|
124
|
+
const grafemaDir = join(projectPath, '.grafema');
|
|
125
|
+
const dbPath = join(grafemaDir, 'graph.rfdb');
|
|
126
|
+
|
|
127
|
+
if (!existsSync(dbPath)) {
|
|
128
|
+
console.error('');
|
|
129
|
+
console.error('No analyzed database found.');
|
|
130
|
+
console.error('Run `grafema analyze` first to analyze the project.');
|
|
131
|
+
console.error('');
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const info = options.quiet ? () => {} : console.log;
|
|
136
|
+
const debug = options.verbose ? console.log : () => {};
|
|
137
|
+
|
|
138
|
+
const logLevel = getLogLevel(options);
|
|
139
|
+
const logFile = options.logFile ? resolve(options.logFile) : undefined;
|
|
140
|
+
const _logger = createLogger(logLevel, logFile ? { logFile } : undefined);
|
|
141
|
+
|
|
142
|
+
if (logFile) {
|
|
143
|
+
debug(`Log file: ${logFile}`);
|
|
144
|
+
}
|
|
145
|
+
debug(`Re-running resolution: ${projectPath}`);
|
|
146
|
+
|
|
147
|
+
// Find grafema-orchestrator binary (lazy download if missing)
|
|
148
|
+
let orchestratorBinary = findOrchestratorBinary();
|
|
149
|
+
if (!orchestratorBinary) {
|
|
150
|
+
const downloaded = await ensureBinary('grafema-orchestrator', null, info);
|
|
151
|
+
if (downloaded) {
|
|
152
|
+
debug(`Downloaded grafema-orchestrator → ${downloaded}`);
|
|
153
|
+
orchestratorBinary = downloaded;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (!orchestratorBinary) {
|
|
157
|
+
console.error('');
|
|
158
|
+
console.error(getBinaryNotFoundMessage('grafema-orchestrator'));
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
debug(`Using orchestrator: ${orchestratorBinary}`);
|
|
163
|
+
|
|
164
|
+
// Find config file for the orchestrator
|
|
165
|
+
const configPath = findConfigFile(projectPath);
|
|
166
|
+
if (!configPath) {
|
|
167
|
+
console.error('');
|
|
168
|
+
console.error('No grafema config file found.');
|
|
169
|
+
console.error('');
|
|
170
|
+
console.error('Expected one of:');
|
|
171
|
+
console.error(` ${join(projectPath, 'grafema.config.yaml')}`);
|
|
172
|
+
console.error(` ${join(projectPath, '.grafema', 'config.yaml')}`);
|
|
173
|
+
console.error('');
|
|
174
|
+
console.error('Run `grafema analyze` first (or `grafema analyze --quickstart`).');
|
|
175
|
+
console.error('');
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
debug(`Using config: ${configPath}`);
|
|
180
|
+
|
|
181
|
+
// Ensure resolve binaries exist for detected languages (lazy download if missing)
|
|
182
|
+
await ensureResolveBinaries(configPath, debug);
|
|
183
|
+
|
|
184
|
+
// Connect to RFDB server — auto-start by default (zero-config UX)
|
|
185
|
+
const backend = new RFDBServerBackend({
|
|
186
|
+
dbPath,
|
|
187
|
+
autoStart: options.autoStart ?? true,
|
|
188
|
+
silent: !options.verbose,
|
|
189
|
+
clientName: 'cli'
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
try {
|
|
193
|
+
await backend.connect();
|
|
194
|
+
} catch (err) {
|
|
195
|
+
if (err instanceof Error && err.message.includes('not running')) {
|
|
196
|
+
console.error('');
|
|
197
|
+
console.error('RFDB server failed to start.');
|
|
198
|
+
console.error('');
|
|
199
|
+
console.error('Try starting manually:');
|
|
200
|
+
console.error(' grafema server start');
|
|
201
|
+
console.error('');
|
|
202
|
+
console.error('Or run diagnostics:');
|
|
203
|
+
console.error(' grafema doctor');
|
|
204
|
+
console.error('');
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
207
|
+
throw err;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const startTime = Date.now();
|
|
211
|
+
|
|
212
|
+
// Build orchestrator args — resolve subcommand
|
|
213
|
+
const args: string[] = ['resolve', '--config', configPath, '--socket', backend.socketPath];
|
|
214
|
+
|
|
215
|
+
if (options.jobs) {
|
|
216
|
+
args.push('--jobs', options.jobs);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
debug(`Spawning: ${orchestratorBinary} ${args.join(' ')}`);
|
|
220
|
+
|
|
221
|
+
let exitCode = 0;
|
|
222
|
+
|
|
223
|
+
try {
|
|
224
|
+
exitCode = await new Promise<number>((resolvePromise, reject) => {
|
|
225
|
+
const child = spawn(orchestratorBinary, args, {
|
|
226
|
+
stdio: [
|
|
227
|
+
'ignore',
|
|
228
|
+
options.quiet ? 'ignore' : 'inherit',
|
|
229
|
+
options.quiet ? 'ignore' : 'inherit',
|
|
230
|
+
],
|
|
231
|
+
env: {
|
|
232
|
+
...process.env,
|
|
233
|
+
RUST_LOG: options.debug ? 'debug' : (options.quiet ? 'warn' : 'info'),
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
child.on('error', (err) => {
|
|
238
|
+
reject(new Error(`Failed to spawn grafema-orchestrator: ${err.message}`));
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
child.on('close', (code) => {
|
|
242
|
+
resolvePromise(code ?? 1);
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
if (exitCode === 0) {
|
|
247
|
+
const elapsedSeconds = (Date.now() - startTime) / 1000;
|
|
248
|
+
const stats = await fetchNodeEdgeCounts(backend);
|
|
249
|
+
|
|
250
|
+
info('');
|
|
251
|
+
info(`Resolution complete in ${elapsedSeconds.toFixed(2)}s`);
|
|
252
|
+
info(` Nodes: ${stats.nodeCount}`);
|
|
253
|
+
info(` Edges: ${stats.edgeCount}`);
|
|
254
|
+
} else {
|
|
255
|
+
console.error('');
|
|
256
|
+
console.error(`Resolution failed with exit code ${exitCode}`);
|
|
257
|
+
}
|
|
258
|
+
} catch (e) {
|
|
259
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
260
|
+
console.error('');
|
|
261
|
+
console.error(`Resolution failed: ${error.message}`);
|
|
262
|
+
exitCode = 1;
|
|
263
|
+
} finally {
|
|
264
|
+
if (backend.connected) {
|
|
265
|
+
await backend.close();
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
exitWithCode(exitCode);
|
|
269
|
+
}
|
|
270
|
+
}
|