@grafema/cli 0.2.4-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 +85 -0
- package/dist/cli.js +7 -2
- package/dist/cli.js.map +1 -0
- package/dist/commands/analyze.d.ts +3 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +8 -266
- package/dist/commands/analyze.js.map +1 -0
- 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.d.ts +2 -6
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +34 -48
- package/dist/commands/check.js.map +1 -0
- 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/coverage.js +1 -0
- package/dist/commands/coverage.js.map +1 -0
- package/dist/commands/doctor/checks.d.ts.map +1 -1
- package/dist/commands/doctor/checks.js +10 -6
- package/dist/commands/doctor/checks.js.map +1 -0
- package/dist/commands/doctor/output.js +1 -0
- package/dist/commands/doctor/output.js.map +1 -0
- package/dist/commands/doctor/types.js +1 -0
- package/dist/commands/doctor/types.js.map +1 -0
- package/dist/commands/doctor.js +1 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/explain.d.ts.map +1 -1
- package/dist/commands/explain.js +5 -3
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/explore.d.ts.map +1 -1
- package/dist/commands/explore.js +9 -4
- package/dist/commands/explore.js.map +1 -0
- 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/get.d.ts.map +1 -1
- package/dist/commands/get.js +7 -0
- package/dist/commands/get.js.map +1 -0
- package/dist/commands/impact.d.ts.map +1 -1
- package/dist/commands/impact.js +3 -3
- package/dist/commands/impact.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +20 -2
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/ls.d.ts.map +1 -1
- package/dist/commands/ls.js +10 -2
- package/dist/commands/ls.js.map +1 -0
- package/dist/commands/overview.d.ts.map +1 -1
- package/dist/commands/overview.js +1 -0
- package/dist/commands/overview.js.map +1 -0
- package/dist/commands/query.d.ts +8 -0
- package/dist/commands/query.d.ts.map +1 -1
- package/dist/commands/query.js +217 -43
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +4 -2
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/server.d.ts +2 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +76 -14
- package/dist/commands/server.js.map +1 -0
- 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/stats.js +1 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/trace.d.ts.map +1 -1
- package/dist/commands/trace.js +21 -10
- package/dist/commands/trace.js.map +1 -0
- package/dist/commands/types.js +1 -0
- package/dist/commands/types.js.map +1 -0
- 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 +6 -3
- package/dist/utils/codePreview.js.map +1 -0
- package/dist/utils/errorFormatter.js +1 -0
- package/dist/utils/errorFormatter.js.map +1 -0
- package/dist/utils/formatNode.d.ts +1 -1
- package/dist/utils/formatNode.d.ts.map +1 -1
- package/dist/utils/formatNode.js +3 -2
- package/dist/utils/formatNode.js.map +1 -0
- 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/dist/utils/progressRenderer.d.ts +119 -0
- package/dist/utils/progressRenderer.d.ts.map +1 -0
- package/dist/utils/progressRenderer.js +245 -0
- package/dist/utils/progressRenderer.js.map +1 -0
- package/dist/utils/spinner.d.ts +39 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +84 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +8 -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 +7 -342
- package/src/commands/analyzeAction.ts +284 -0
- package/src/commands/check.ts +38 -70
- package/src/commands/context.ts +309 -0
- package/src/commands/doctor/checks.ts +9 -6
- package/src/commands/explain.ts +4 -3
- package/src/commands/explore.tsx +15 -9
- package/src/commands/file.ts +179 -0
- package/src/commands/get.ts +8 -0
- package/src/commands/impact.ts +3 -4
- package/src/commands/init.ts +19 -3
- package/src/commands/ls.ts +11 -2
- package/src/commands/overview.ts +0 -4
- package/src/commands/query.ts +235 -44
- package/src/commands/schema.ts +3 -2
- package/src/commands/server.ts +85 -15
- 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/src/utils/progressRenderer.ts +288 -0
- package/src/utils/spinner.ts +94 -0
package/dist/commands/query.js
CHANGED
|
@@ -9,11 +9,21 @@
|
|
|
9
9
|
* For raw Datalog queries, use --raw flag
|
|
10
10
|
*/
|
|
11
11
|
import { Command } from 'commander';
|
|
12
|
-
import { resolve, join,
|
|
12
|
+
import { resolve, join, basename } from 'path';
|
|
13
|
+
import { toRelativeDisplay } from '../utils/pathUtils.js';
|
|
13
14
|
import { existsSync } from 'fs';
|
|
14
|
-
import { RFDBServerBackend, parseSemanticId, findCallsInFunction as findCallsInFunctionCore, findContainingFunction as findContainingFunctionCore } from '@grafema/core';
|
|
15
|
+
import { RFDBServerBackend, parseSemanticId, parseSemanticIdV2, findCallsInFunction as findCallsInFunctionCore, findContainingFunction as findContainingFunctionCore } from '@grafema/core';
|
|
15
16
|
import { formatNodeDisplay, formatNodeInline, formatLocation } from '../utils/formatNode.js';
|
|
16
17
|
import { exitWithError } from '../utils/errorFormatter.js';
|
|
18
|
+
import { Spinner } from '../utils/spinner.js';
|
|
19
|
+
// Node type constants to avoid magic string duplication
|
|
20
|
+
const HTTP_ROUTE_TYPE = 'http:route';
|
|
21
|
+
const HTTP_REQUEST_TYPE = 'http:request';
|
|
22
|
+
const SOCKETIO_EVENT_TYPE = 'socketio:event';
|
|
23
|
+
const SOCKETIO_EMIT_TYPE = 'socketio:emit';
|
|
24
|
+
const SOCKETIO_ON_TYPE = 'socketio:on';
|
|
25
|
+
const GRAFEMA_PLUGIN_TYPE = 'grafema:plugin';
|
|
26
|
+
const PROPERTY_ACCESS_TYPE = 'PROPERTY_ACCESS';
|
|
17
27
|
export const queryCommand = new Command('query')
|
|
18
28
|
.description('Search the code graph')
|
|
19
29
|
.argument('<pattern>', 'Search pattern: "function X", "class Y", or just "X"')
|
|
@@ -22,6 +32,9 @@ export const queryCommand = new Command('query')
|
|
|
22
32
|
.option('-l, --limit <n>', 'Limit results', '10')
|
|
23
33
|
.option('--raw', `Execute raw Datalog query
|
|
24
34
|
|
|
35
|
+
Supports both direct queries and Datalog rules.
|
|
36
|
+
Rules (containing ":-") define a violation predicate and return matching nodes.
|
|
37
|
+
|
|
25
38
|
Predicates:
|
|
26
39
|
type(Id, Type) Find nodes by type or get type of node
|
|
27
40
|
node(Id, Type) Alias for type
|
|
@@ -30,10 +43,14 @@ Predicates:
|
|
|
30
43
|
path(Src, Dst) Check reachability between nodes
|
|
31
44
|
incoming(Dst, Src, T) Find incoming edges
|
|
32
45
|
|
|
33
|
-
|
|
46
|
+
Direct queries:
|
|
34
47
|
grafema query --raw 'type(X, "FUNCTION")'
|
|
35
48
|
grafema query --raw 'type(X, "FUNCTION"), attr(X, "name", "main")'
|
|
36
|
-
grafema query --raw 'edge(X, Y, "CALLS")'
|
|
49
|
+
grafema query --raw 'edge(X, Y, "CALLS")'
|
|
50
|
+
|
|
51
|
+
Rules (must define violation/1):
|
|
52
|
+
grafema query --raw 'violation(X) :- node(X, "FUNCTION").'
|
|
53
|
+
grafema query --raw 'violation(X) :- node(X, "http:route"), attr(X, "method", "POST").'`)
|
|
37
54
|
.option('-t, --type <nodeType>', `Filter by exact node type (bypasses type aliases)
|
|
38
55
|
|
|
39
56
|
Use this when:
|
|
@@ -70,13 +87,20 @@ Examples:
|
|
|
70
87
|
}
|
|
71
88
|
const backend = new RFDBServerBackend({ dbPath });
|
|
72
89
|
await backend.connect();
|
|
90
|
+
const spinner = new Spinner('Querying graph...');
|
|
91
|
+
spinner.start();
|
|
73
92
|
try {
|
|
93
|
+
const limit = parseInt(options.limit, 10);
|
|
94
|
+
if (isNaN(limit) || limit < 1) {
|
|
95
|
+
spinner.stop();
|
|
96
|
+
exitWithError('Invalid limit', ['Use a positive number, e.g.: --limit 10']);
|
|
97
|
+
}
|
|
74
98
|
// Raw Datalog mode
|
|
75
99
|
if (options.raw) {
|
|
76
|
-
|
|
100
|
+
spinner.stop();
|
|
101
|
+
await executeRawQuery(backend, pattern, limit, options.json);
|
|
77
102
|
return;
|
|
78
103
|
}
|
|
79
|
-
const limit = parseInt(options.limit, 10);
|
|
80
104
|
// Parse query with scope support
|
|
81
105
|
let query;
|
|
82
106
|
if (options.type) {
|
|
@@ -95,6 +119,7 @@ Examples:
|
|
|
95
119
|
}
|
|
96
120
|
// Find matching nodes
|
|
97
121
|
const nodes = await findNodes(backend, query, limit);
|
|
122
|
+
spinner.stop();
|
|
98
123
|
// Check if query has scope constraints for suggestion
|
|
99
124
|
const hasScope = query.file !== null || query.scopes.length > 0;
|
|
100
125
|
if (nodes.length === 0) {
|
|
@@ -146,6 +171,7 @@ Examples:
|
|
|
146
171
|
}
|
|
147
172
|
}
|
|
148
173
|
finally {
|
|
174
|
+
spinner.stop();
|
|
149
175
|
await backend.close();
|
|
150
176
|
}
|
|
151
177
|
});
|
|
@@ -162,23 +188,31 @@ function parsePattern(pattern) {
|
|
|
162
188
|
fn: 'FUNCTION',
|
|
163
189
|
func: 'FUNCTION',
|
|
164
190
|
class: 'CLASS',
|
|
191
|
+
interface: 'INTERFACE',
|
|
192
|
+
type: 'TYPE',
|
|
193
|
+
enum: 'ENUM',
|
|
165
194
|
module: 'MODULE',
|
|
166
195
|
variable: 'VARIABLE',
|
|
167
196
|
var: 'VARIABLE',
|
|
168
197
|
const: 'CONSTANT',
|
|
169
198
|
constant: 'CONSTANT',
|
|
170
199
|
// HTTP route aliases
|
|
171
|
-
route:
|
|
172
|
-
endpoint:
|
|
200
|
+
route: HTTP_ROUTE_TYPE,
|
|
201
|
+
endpoint: HTTP_ROUTE_TYPE,
|
|
173
202
|
// HTTP request aliases
|
|
174
|
-
request:
|
|
175
|
-
fetch:
|
|
176
|
-
api:
|
|
203
|
+
request: HTTP_REQUEST_TYPE,
|
|
204
|
+
fetch: HTTP_REQUEST_TYPE,
|
|
205
|
+
api: HTTP_REQUEST_TYPE,
|
|
177
206
|
// Socket.IO aliases
|
|
178
|
-
event:
|
|
179
|
-
emit:
|
|
180
|
-
on:
|
|
181
|
-
listener:
|
|
207
|
+
event: SOCKETIO_EVENT_TYPE,
|
|
208
|
+
emit: SOCKETIO_EMIT_TYPE,
|
|
209
|
+
on: SOCKETIO_ON_TYPE,
|
|
210
|
+
listener: SOCKETIO_ON_TYPE,
|
|
211
|
+
// Grafema internal
|
|
212
|
+
plugin: GRAFEMA_PLUGIN_TYPE,
|
|
213
|
+
// Property access aliases (REG-395)
|
|
214
|
+
property: PROPERTY_ACCESS_TYPE,
|
|
215
|
+
prop: PROPERTY_ACCESS_TYPE,
|
|
182
216
|
};
|
|
183
217
|
if (typeMap[typeWord]) {
|
|
184
218
|
return { type: typeMap[typeWord], name };
|
|
@@ -275,6 +309,36 @@ export function isFileScope(scope) {
|
|
|
275
309
|
* @returns true if ID matches all constraints
|
|
276
310
|
*/
|
|
277
311
|
export function matchesScope(semanticId, file, scopes) {
|
|
312
|
+
// No constraints = everything matches (regardless of ID format)
|
|
313
|
+
if (file === null && scopes.length === 0)
|
|
314
|
+
return true;
|
|
315
|
+
// Try v2 parsing first
|
|
316
|
+
const parsedV2 = parseSemanticIdV2(semanticId);
|
|
317
|
+
if (parsedV2) {
|
|
318
|
+
// File scope check (v2)
|
|
319
|
+
if (file !== null) {
|
|
320
|
+
if (parsedV2.file === file) {
|
|
321
|
+
// Exact match - OK
|
|
322
|
+
}
|
|
323
|
+
else if (parsedV2.file.endsWith('/' + file)) {
|
|
324
|
+
// Partial path match - OK
|
|
325
|
+
}
|
|
326
|
+
else if (basename(parsedV2.file) === file) {
|
|
327
|
+
// Basename exact match - OK
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// Function/class scope check (v2): check namedParent
|
|
334
|
+
for (const scope of scopes) {
|
|
335
|
+
if (!parsedV2.namedParent || parsedV2.namedParent.toLowerCase() !== scope.toLowerCase()) {
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return true;
|
|
340
|
+
}
|
|
341
|
+
// Fallback to v1 parsing
|
|
278
342
|
const parsed = parseSemanticId(semanticId);
|
|
279
343
|
if (!parsed)
|
|
280
344
|
return false;
|
|
@@ -325,6 +389,16 @@ export function matchesScope(semanticId, file, scopes) {
|
|
|
325
389
|
* @returns Human-readable scope context or null
|
|
326
390
|
*/
|
|
327
391
|
export function extractScopeContext(semanticId) {
|
|
392
|
+
// Try v2 parsing first
|
|
393
|
+
const parsedV2 = parseSemanticIdV2(semanticId);
|
|
394
|
+
if (parsedV2) {
|
|
395
|
+
if (parsedV2.namedParent) {
|
|
396
|
+
return `inside ${parsedV2.namedParent}`;
|
|
397
|
+
}
|
|
398
|
+
// v2 with no parent = top-level
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
401
|
+
// Fallback to v1 parsing
|
|
328
402
|
const parsed = parseSemanticId(semanticId);
|
|
329
403
|
if (!parsed)
|
|
330
404
|
return null;
|
|
@@ -368,7 +442,7 @@ export function extractScopeContext(semanticId) {
|
|
|
368
442
|
function matchesSearchPattern(node, nodeType, pattern) {
|
|
369
443
|
const lowerPattern = pattern.toLowerCase();
|
|
370
444
|
// HTTP routes: search method and path
|
|
371
|
-
if (nodeType ===
|
|
445
|
+
if (nodeType === HTTP_ROUTE_TYPE) {
|
|
372
446
|
const method = (node.method || '').toLowerCase();
|
|
373
447
|
const path = (node.path || '').toLowerCase();
|
|
374
448
|
// Pattern could be: "POST", "/api/users", "POST /api", etc.
|
|
@@ -390,7 +464,7 @@ function matchesSearchPattern(node, nodeType, pattern) {
|
|
|
390
464
|
}
|
|
391
465
|
}
|
|
392
466
|
// HTTP requests: search method and url
|
|
393
|
-
if (nodeType ===
|
|
467
|
+
if (nodeType === HTTP_REQUEST_TYPE) {
|
|
394
468
|
const method = (node.method || '').toLowerCase();
|
|
395
469
|
const url = (node.url || '').toLowerCase();
|
|
396
470
|
// Pattern could be: "POST", "/api/users", "POST /api", etc.
|
|
@@ -412,12 +486,12 @@ function matchesSearchPattern(node, nodeType, pattern) {
|
|
|
412
486
|
}
|
|
413
487
|
}
|
|
414
488
|
// Socket.IO event channels: search name field (standard)
|
|
415
|
-
if (nodeType ===
|
|
489
|
+
if (nodeType === SOCKETIO_EVENT_TYPE) {
|
|
416
490
|
const nodeName = (node.name || '').toLowerCase();
|
|
417
491
|
return nodeName.includes(lowerPattern);
|
|
418
492
|
}
|
|
419
493
|
// Socket.IO emit/on: search event field
|
|
420
|
-
if (nodeType ===
|
|
494
|
+
if (nodeType === SOCKETIO_EMIT_TYPE || nodeType === SOCKETIO_ON_TYPE) {
|
|
421
495
|
const eventName = (node.event || '').toLowerCase();
|
|
422
496
|
return eventName.includes(lowerPattern);
|
|
423
497
|
}
|
|
@@ -435,17 +509,21 @@ async function findNodes(backend, query, limit) {
|
|
|
435
509
|
: [
|
|
436
510
|
'FUNCTION',
|
|
437
511
|
'CLASS',
|
|
512
|
+
'INTERFACE',
|
|
513
|
+
'TYPE',
|
|
514
|
+
'ENUM',
|
|
438
515
|
'MODULE',
|
|
439
516
|
'VARIABLE',
|
|
440
517
|
'CONSTANT',
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
518
|
+
HTTP_ROUTE_TYPE,
|
|
519
|
+
HTTP_REQUEST_TYPE,
|
|
520
|
+
SOCKETIO_EVENT_TYPE,
|
|
521
|
+
SOCKETIO_EMIT_TYPE,
|
|
522
|
+
SOCKETIO_ON_TYPE,
|
|
523
|
+
PROPERTY_ACCESS_TYPE,
|
|
446
524
|
];
|
|
447
525
|
for (const nodeType of searchTypes) {
|
|
448
|
-
for await (const node of backend.queryNodes({ nodeType
|
|
526
|
+
for await (const node of backend.queryNodes({ nodeType })) {
|
|
449
527
|
// Type-aware field matching (name)
|
|
450
528
|
const nameMatches = matchesSearchPattern(node, nodeType, query.name);
|
|
451
529
|
if (!nameMatches)
|
|
@@ -464,31 +542,44 @@ async function findNodes(backend, query, limit) {
|
|
|
464
542
|
// Add scope context for display
|
|
465
543
|
nodeInfo.scopeContext = extractScopeContext(node.id);
|
|
466
544
|
// Include method and path for http:route nodes
|
|
467
|
-
if (nodeType ===
|
|
545
|
+
if (nodeType === HTTP_ROUTE_TYPE) {
|
|
468
546
|
nodeInfo.method = node.method;
|
|
469
547
|
nodeInfo.path = node.path;
|
|
470
548
|
}
|
|
471
549
|
// Include method and url for http:request nodes
|
|
472
|
-
if (nodeType ===
|
|
550
|
+
if (nodeType === HTTP_REQUEST_TYPE) {
|
|
473
551
|
nodeInfo.method = node.method;
|
|
474
552
|
nodeInfo.url = node.url;
|
|
475
553
|
}
|
|
476
554
|
// Include event field for Socket.IO nodes
|
|
477
|
-
if (nodeType ===
|
|
555
|
+
if (nodeType === SOCKETIO_EVENT_TYPE || nodeType === SOCKETIO_EMIT_TYPE || nodeType === SOCKETIO_ON_TYPE) {
|
|
478
556
|
nodeInfo.event = node.event;
|
|
479
557
|
}
|
|
480
558
|
// Include emit-specific fields
|
|
481
|
-
if (nodeType ===
|
|
559
|
+
if (nodeType === SOCKETIO_EMIT_TYPE) {
|
|
482
560
|
nodeInfo.room = node.room;
|
|
483
561
|
nodeInfo.namespace = node.namespace;
|
|
484
562
|
nodeInfo.broadcast = node.broadcast;
|
|
485
563
|
nodeInfo.objectName = node.objectName;
|
|
486
564
|
}
|
|
487
565
|
// Include listener-specific fields
|
|
488
|
-
if (nodeType ===
|
|
566
|
+
if (nodeType === SOCKETIO_ON_TYPE) {
|
|
489
567
|
nodeInfo.objectName = node.objectName;
|
|
490
568
|
nodeInfo.handlerName = node.handlerName;
|
|
491
569
|
}
|
|
570
|
+
// Include plugin-specific fields
|
|
571
|
+
if (nodeType === GRAFEMA_PLUGIN_TYPE) {
|
|
572
|
+
nodeInfo.phase = node.phase;
|
|
573
|
+
nodeInfo.priority = node.priority;
|
|
574
|
+
nodeInfo.builtin = node.builtin;
|
|
575
|
+
nodeInfo.createsNodes = node.createsNodes;
|
|
576
|
+
nodeInfo.createsEdges = node.createsEdges;
|
|
577
|
+
nodeInfo.dependencies = node.dependencies;
|
|
578
|
+
}
|
|
579
|
+
// Include objectName for PROPERTY_ACCESS nodes (REG-395)
|
|
580
|
+
if (nodeType === PROPERTY_ACCESS_TYPE) {
|
|
581
|
+
nodeInfo.objectName = node.objectName;
|
|
582
|
+
}
|
|
492
583
|
results.push(nodeInfo);
|
|
493
584
|
if (results.length >= limit)
|
|
494
585
|
break;
|
|
@@ -580,25 +671,30 @@ async function getCallees(backend, nodeId, limit) {
|
|
|
580
671
|
*/
|
|
581
672
|
async function displayNode(node, projectPath, backend) {
|
|
582
673
|
// Special formatting for HTTP routes
|
|
583
|
-
if (node.type ===
|
|
674
|
+
if (node.type === HTTP_ROUTE_TYPE && node.method && node.path) {
|
|
584
675
|
console.log(formatHttpRouteDisplay(node, projectPath));
|
|
585
676
|
return;
|
|
586
677
|
}
|
|
587
678
|
// Special formatting for HTTP requests
|
|
588
|
-
if (node.type ===
|
|
679
|
+
if (node.type === HTTP_REQUEST_TYPE) {
|
|
589
680
|
console.log(formatHttpRequestDisplay(node, projectPath));
|
|
590
681
|
return;
|
|
591
682
|
}
|
|
592
683
|
// Special formatting for Socket.IO event channels
|
|
593
|
-
if (node.type ===
|
|
684
|
+
if (node.type === SOCKETIO_EVENT_TYPE) {
|
|
594
685
|
console.log(await formatSocketEventDisplay(node, projectPath, backend));
|
|
595
686
|
return;
|
|
596
687
|
}
|
|
597
688
|
// Special formatting for Socket.IO emit/on
|
|
598
|
-
if (node.type ===
|
|
689
|
+
if (node.type === SOCKETIO_EMIT_TYPE || node.type === SOCKETIO_ON_TYPE) {
|
|
599
690
|
console.log(formatSocketIONodeDisplay(node, projectPath));
|
|
600
691
|
return;
|
|
601
692
|
}
|
|
693
|
+
// Special formatting for Grafema plugin nodes
|
|
694
|
+
if (node.type === GRAFEMA_PLUGIN_TYPE) {
|
|
695
|
+
console.log(formatPluginDisplay(node, projectPath));
|
|
696
|
+
return;
|
|
697
|
+
}
|
|
602
698
|
console.log(formatNodeDisplay(node, { projectPath }));
|
|
603
699
|
// Add scope context if present
|
|
604
700
|
if (node.scopeContext) {
|
|
@@ -618,7 +714,7 @@ function formatHttpRouteDisplay(node, projectPath) {
|
|
|
618
714
|
lines.push(`[${node.type}] ${node.method} ${node.path}`);
|
|
619
715
|
// Line 2: Location
|
|
620
716
|
if (node.file) {
|
|
621
|
-
const relPath =
|
|
717
|
+
const relPath = toRelativeDisplay(node.file, projectPath);
|
|
622
718
|
const loc = node.line ? `${relPath}:${node.line}` : relPath;
|
|
623
719
|
lines.push(` Location: ${loc}`);
|
|
624
720
|
}
|
|
@@ -639,7 +735,7 @@ function formatHttpRequestDisplay(node, projectPath) {
|
|
|
639
735
|
lines.push(`[${node.type}] ${method} ${url}`);
|
|
640
736
|
// Line 2: Location
|
|
641
737
|
if (node.file) {
|
|
642
|
-
const relPath =
|
|
738
|
+
const relPath = toRelativeDisplay(node.file, projectPath);
|
|
643
739
|
const loc = node.line ? `${relPath}:${node.line}` : relPath;
|
|
644
740
|
lines.push(` Location: ${loc}`);
|
|
645
741
|
}
|
|
@@ -710,7 +806,7 @@ function formatSocketIONodeDisplay(node, projectPath) {
|
|
|
710
806
|
}
|
|
711
807
|
}
|
|
712
808
|
// Emit-specific fields
|
|
713
|
-
if (node.type ===
|
|
809
|
+
if (node.type === SOCKETIO_EMIT_TYPE) {
|
|
714
810
|
if (node.room) {
|
|
715
811
|
lines.push(` Room: ${node.room}`);
|
|
716
812
|
}
|
|
@@ -722,19 +818,87 @@ function formatSocketIONodeDisplay(node, projectPath) {
|
|
|
722
818
|
}
|
|
723
819
|
}
|
|
724
820
|
// Listener-specific fields
|
|
725
|
-
if (node.type ===
|
|
821
|
+
if (node.type === SOCKETIO_ON_TYPE && node.handlerName) {
|
|
726
822
|
lines.push(` Handler: ${node.handlerName}`);
|
|
727
823
|
}
|
|
728
824
|
return lines.join('\n');
|
|
729
825
|
}
|
|
730
826
|
/**
|
|
731
|
-
*
|
|
827
|
+
* Format Grafema plugin node for display.
|
|
828
|
+
*
|
|
829
|
+
* Output:
|
|
830
|
+
* [grafema:plugin] HTTPConnectionEnricher
|
|
831
|
+
* Phase: ENRICHMENT (priority: 50)
|
|
832
|
+
* Creates: edges: INTERACTS_WITH, HTTP_RECEIVES
|
|
833
|
+
* Dependencies: ExpressRouteAnalyzer, FetchAnalyzer, ExpressResponseAnalyzer
|
|
834
|
+
* Source: packages/core/src/plugins/enrichment/HTTPConnectionEnricher.ts
|
|
732
835
|
*/
|
|
733
|
-
|
|
734
|
-
const
|
|
735
|
-
|
|
836
|
+
function formatPluginDisplay(node, projectPath) {
|
|
837
|
+
const lines = [];
|
|
838
|
+
lines.push(`[${node.type}] ${node.name}`);
|
|
839
|
+
const phase = node.phase || 'unknown';
|
|
840
|
+
const priority = node.priority ?? 0;
|
|
841
|
+
lines.push(` Phase: ${phase} (priority: ${priority})`);
|
|
842
|
+
const createsNodes = node.createsNodes || [];
|
|
843
|
+
const createsEdges = node.createsEdges || [];
|
|
844
|
+
const createsParts = [];
|
|
845
|
+
if (createsNodes.length > 0)
|
|
846
|
+
createsParts.push(`nodes: ${createsNodes.join(', ')}`);
|
|
847
|
+
if (createsEdges.length > 0)
|
|
848
|
+
createsParts.push(`edges: ${createsEdges.join(', ')}`);
|
|
849
|
+
if (createsParts.length > 0) {
|
|
850
|
+
lines.push(` Creates: ${createsParts.join('; ')}`);
|
|
851
|
+
}
|
|
852
|
+
const deps = node.dependencies || [];
|
|
853
|
+
if (deps.length > 0) {
|
|
854
|
+
lines.push(` Dependencies: ${deps.join(', ')}`);
|
|
855
|
+
}
|
|
856
|
+
if (node.file) {
|
|
857
|
+
const relPath = toRelativeDisplay(node.file, projectPath);
|
|
858
|
+
lines.push(` Source: ${relPath}`);
|
|
859
|
+
}
|
|
860
|
+
return lines.join('\n');
|
|
861
|
+
}
|
|
862
|
+
/** Built-in Datalog predicates supported by RFDB server */
|
|
863
|
+
export const BUILTIN_PREDICATES = new Set([
|
|
864
|
+
'node', 'type', 'edge', 'incoming', 'path',
|
|
865
|
+
'attr', 'attr_edge',
|
|
866
|
+
'neq', 'starts_with', 'not_starts_with',
|
|
867
|
+
]);
|
|
868
|
+
/** Extract predicate names from a Datalog query string */
|
|
869
|
+
export function extractPredicates(query) {
|
|
870
|
+
const regex = /\b([a-z_][a-z0-9_]*)\s*\(/g;
|
|
871
|
+
const predicates = new Set();
|
|
872
|
+
let match;
|
|
873
|
+
while ((match = regex.exec(query)) !== null) {
|
|
874
|
+
predicates.add(match[1]);
|
|
875
|
+
}
|
|
876
|
+
return [...predicates];
|
|
877
|
+
}
|
|
878
|
+
/** Extract predicate names defined as rule heads (word(...) :-) */
|
|
879
|
+
export function extractRuleHeads(query) {
|
|
880
|
+
const regex = /\b([a-z_][a-z0-9_]*)\s*\([^)]*\)\s*:-/g;
|
|
881
|
+
const heads = new Set();
|
|
882
|
+
let match;
|
|
883
|
+
while ((match = regex.exec(query)) !== null) {
|
|
884
|
+
heads.add(match[1]);
|
|
885
|
+
}
|
|
886
|
+
return heads;
|
|
887
|
+
}
|
|
888
|
+
/** Find predicates in a query that are not built-in and not user-defined rule heads */
|
|
889
|
+
export function getUnknownPredicates(query) {
|
|
890
|
+
const predicates = extractPredicates(query);
|
|
891
|
+
const ruleHeads = extractRuleHeads(query);
|
|
892
|
+
return predicates.filter(p => !BUILTIN_PREDICATES.has(p) && !ruleHeads.has(p));
|
|
893
|
+
}
|
|
894
|
+
/**
|
|
895
|
+
* Execute raw Datalog query.
|
|
896
|
+
* Uses unified executeDatalog endpoint which auto-detects rules vs direct queries.
|
|
897
|
+
*/
|
|
898
|
+
async function executeRawQuery(backend, query, limit, json) {
|
|
899
|
+
const results = await backend.executeDatalog(query);
|
|
736
900
|
const limited = results.slice(0, limit);
|
|
737
|
-
if (
|
|
901
|
+
if (json) {
|
|
738
902
|
console.log(JSON.stringify(limited, null, 2));
|
|
739
903
|
}
|
|
740
904
|
else {
|
|
@@ -750,4 +914,14 @@ async function executeRawQuery(backend, query, options) {
|
|
|
750
914
|
}
|
|
751
915
|
}
|
|
752
916
|
}
|
|
917
|
+
// Show warning for unknown predicates (on stderr, works in both text and JSON mode)
|
|
918
|
+
if (limited.length === 0) {
|
|
919
|
+
const unknown = getUnknownPredicates(query);
|
|
920
|
+
if (unknown.length > 0) {
|
|
921
|
+
const unknownList = unknown.map(p => `'${p}'`).join(', ');
|
|
922
|
+
const builtinList = [...BUILTIN_PREDICATES].join(', ');
|
|
923
|
+
console.error(`Note: unknown predicate ${unknownList}. Built-in predicates: ${builtinList}`);
|
|
924
|
+
}
|
|
925
|
+
}
|
|
753
926
|
}
|
|
927
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4UpC,eAAO,MAAM,aAAa,SAEK,CAAC"}
|
package/dist/commands/schema.js
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* grafema schema export --graph --format yaml
|
|
10
10
|
*/
|
|
11
11
|
import { Command } from 'commander';
|
|
12
|
-
import { resolve, join
|
|
12
|
+
import { resolve, join } from 'path';
|
|
13
|
+
import { toRelativeDisplay } from '../utils/pathUtils.js';
|
|
13
14
|
import { existsSync, writeFileSync } from 'fs';
|
|
14
15
|
import { RFDBServerBackend, InterfaceSchemaExtractor, GraphSchemaExtractor, } from '@grafema/core';
|
|
15
16
|
import { exitWithError } from '../utils/errorFormatter.js';
|
|
@@ -54,7 +55,7 @@ function formatInterfaceYaml(schema) {
|
|
|
54
55
|
}
|
|
55
56
|
function formatInterfaceMarkdown(schema, projectPath) {
|
|
56
57
|
const lines = [];
|
|
57
|
-
const relPath =
|
|
58
|
+
const relPath = toRelativeDisplay(schema.source.file, projectPath);
|
|
58
59
|
lines.push(`# Interface: ${schema.name}`);
|
|
59
60
|
lines.push('');
|
|
60
61
|
if (schema.typeParameters && schema.typeParameters.length > 0) {
|
|
@@ -277,3 +278,4 @@ const exportSubcommand = new Command('export')
|
|
|
277
278
|
export const schemaCommand = new Command('schema')
|
|
278
279
|
.description('Extract and manage code schemas')
|
|
279
280
|
.addCommand(exportSubcommand);
|
|
281
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Server command - Manage RFDB server lifecycle
|
|
2
|
+
* Server command - Manage RFDB (Rega Flow Database) server lifecycle
|
|
3
3
|
*
|
|
4
4
|
* Provides explicit control over the RFDB server process:
|
|
5
5
|
* grafema server start - Start detached server
|
|
6
6
|
* grafema server stop - Stop server gracefully
|
|
7
7
|
* grafema server status - Check if server is running
|
|
8
|
+
* grafema server graphql - Start GraphQL API server
|
|
8
9
|
*/
|
|
9
10
|
import { Command } from 'commander';
|
|
10
11
|
export declare const serverCommand: Command;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4DpC,eAAO,MAAM,aAAa,SAaxB,CAAC"}
|