@grafema/util 0.3.17 → 0.3.20

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 (50) hide show
  1. package/dist/core/FileOverview.d.ts +12 -0
  2. package/dist/core/FileOverview.d.ts.map +1 -1
  3. package/dist/core/FileOverview.js +98 -2
  4. package/dist/core/FileOverview.js.map +1 -1
  5. package/dist/federation/FederatedRouter.d.ts +124 -0
  6. package/dist/federation/FederatedRouter.d.ts.map +1 -0
  7. package/dist/federation/FederatedRouter.js +297 -0
  8. package/dist/federation/FederatedRouter.js.map +1 -0
  9. package/dist/federation/ShardDiscovery.d.ts +56 -0
  10. package/dist/federation/ShardDiscovery.d.ts.map +1 -0
  11. package/dist/federation/ShardDiscovery.js +100 -0
  12. package/dist/federation/ShardDiscovery.js.map +1 -0
  13. package/dist/federation/index.d.ts +28 -0
  14. package/dist/federation/index.d.ts.map +1 -0
  15. package/dist/federation/index.js +26 -0
  16. package/dist/federation/index.js.map +1 -0
  17. package/dist/index.d.ts +4 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/manifest/generator.d.ts.map +1 -1
  22. package/dist/manifest/generator.js +26 -4
  23. package/dist/manifest/generator.js.map +1 -1
  24. package/dist/manifest/index.d.ts +2 -0
  25. package/dist/manifest/index.d.ts.map +1 -1
  26. package/dist/manifest/index.js +1 -0
  27. package/dist/manifest/index.js.map +1 -1
  28. package/dist/manifest/registry.d.ts +116 -0
  29. package/dist/manifest/registry.d.ts.map +1 -0
  30. package/dist/manifest/registry.js +638 -0
  31. package/dist/manifest/registry.js.map +1 -0
  32. package/dist/manifest/resolver.d.ts +9 -0
  33. package/dist/manifest/resolver.d.ts.map +1 -1
  34. package/dist/manifest/resolver.js +31 -0
  35. package/dist/manifest/resolver.js.map +1 -1
  36. package/dist/notation/traceRenderer.d.ts +2 -0
  37. package/dist/notation/traceRenderer.d.ts.map +1 -1
  38. package/dist/notation/traceRenderer.js +6 -5
  39. package/dist/notation/traceRenderer.js.map +1 -1
  40. package/package.json +3 -3
  41. package/src/core/FileOverview.ts +104 -2
  42. package/src/federation/FederatedRouter.ts +440 -0
  43. package/src/federation/ShardDiscovery.ts +130 -0
  44. package/src/federation/index.ts +35 -0
  45. package/src/index.ts +16 -1
  46. package/src/manifest/generator.ts +25 -4
  47. package/src/manifest/index.ts +2 -0
  48. package/src/manifest/registry.ts +769 -0
  49. package/src/manifest/resolver.ts +33 -0
  50. package/src/notation/traceRenderer.ts +8 -5
@@ -115,6 +115,18 @@ export declare class FileOverview {
115
115
  * Complexity: Without edges O(M), with edges O(M * (S + C))
116
116
  */
117
117
  private buildClassOverview;
118
+ /**
119
+ * Detect CommonJS require() calls as imports.
120
+ * Pattern: CALL(name="require") with PASSES_ARGUMENT -> LITERAL(value="module-path")
121
+ * Complexity: O(C * A) where C = CONTAINS edges, A = PASSES_ARGUMENT edges per CALL
122
+ */
123
+ private detectCjsImports;
124
+ /**
125
+ * Detect CommonJS module.exports/exports assignments as exports.
126
+ * Pattern: PROPERTY_ACCESS with name containing "exports"
127
+ * Complexity: O(C) where C = CONTAINS edges from MODULE
128
+ */
129
+ private detectCjsExports;
118
130
  /**
119
131
  * Build VariableOverview from a VARIABLE or CONSTANT node.
120
132
  * Complexity: Without edges O(1), with edges O(1)
@@ -1 +1 @@
1
- {"version":3,"file":"FileOverview.d.ts","sourceRoot":"","sources":["../../src/core/FileOverview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,gBAAgB,CAAC;AAM/E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,cAAc,CAAC;IACpC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAaD,qBAAa,YAAY;IACX,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEvC;;;;;;OAMG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAO,GACvC,OAAO,CAAC,kBAAkB,CAAC;IAgE9B;;;OAGG;YACW,cAAc;IAY5B;;;OAGG;YACW,mBAAmB;IAkBjC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAmBvB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;OAIG;YACW,qBAAqB;IA2DnC;;;;OAIG;YACW,kBAAkB;IAoDhC;;;OAGG;YACW,qBAAqB;CA0BpC"}
1
+ {"version":3,"file":"FileOverview.d.ts","sourceRoot":"","sources":["../../src/core/FileOverview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,gBAAgB,CAAC;AAM/E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,cAAc,CAAC;IACpC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAaD,qBAAa,YAAY;IACX,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEvC;;;;;;OAMG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAO,GACvC,OAAO,CAAC,kBAAkB,CAAC;IAiG9B;;;OAGG;YACW,cAAc;IAY5B;;;OAGG;YACW,mBAAmB;IAkBjC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAmBvB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;OAIG;YACW,qBAAqB;IA2DnC;;;;OAIG;YACW,kBAAkB;IAoDhC;;;;OAIG;YACW,gBAAgB;IA+B9B;;;;OAIG;YACW,gBAAgB;IA4B9B;;;OAGG;YACW,qBAAqB;CA0BpC"}
@@ -82,11 +82,44 @@ export class FileOverview {
82
82
  functions.push(await this.buildFunctionOverview(child, includeEdges));
83
83
  break;
84
84
  case 'VARIABLE':
85
- case 'CONSTANT':
86
- variables.push(await this.buildVariableOverview(child, includeEdges));
85
+ case 'CONSTANT': {
86
+ // Check if this is a const-bound function (const foo = () => {})
87
+ if (includeEdges) {
88
+ const assignedEdges = await this.graph.getOutgoingEdges(child.id, ['ASSIGNED_FROM']);
89
+ let isFunctionBinding = false;
90
+ for (const edge of assignedEdges) {
91
+ const target = await this.graph.getNode(edge.dst);
92
+ if (target && (target.type === 'FUNCTION' || target.type === 'METHOD')) {
93
+ // Build function overview using the target function but with the const name
94
+ const fnOverview = await this.buildFunctionOverview(target, includeEdges);
95
+ fnOverview.name = child.name ?? '<anonymous>';
96
+ fnOverview.line = child.line;
97
+ fnOverview.id = child.id;
98
+ functions.push(fnOverview);
99
+ isFunctionBinding = true;
100
+ break;
101
+ }
102
+ }
103
+ if (!isFunctionBinding) {
104
+ variables.push(await this.buildVariableOverview(child, includeEdges));
105
+ }
106
+ }
107
+ else {
108
+ variables.push(await this.buildVariableOverview(child, includeEdges));
109
+ }
87
110
  break;
111
+ }
88
112
  }
89
113
  }
114
+ // CJS fallback: if no ESM imports/exports found, try CommonJS patterns
115
+ if (imports.length === 0) {
116
+ const cjsImports = await this.detectCjsImports(moduleNode.id);
117
+ imports.push(...cjsImports);
118
+ }
119
+ if (exports.length === 0) {
120
+ const cjsExports = await this.detectCjsExports(moduleNode.id);
121
+ exports.push(...cjsExports);
122
+ }
90
123
  const byLine = (a, b) => (a.line ?? 0) - (b.line ?? 0);
91
124
  classes.sort(byLine);
92
125
  functions.sort(byLine);
@@ -253,6 +286,69 @@ export class FileOverview {
253
286
  overview.methods.sort((a, b) => (a.line ?? 0) - (b.line ?? 0));
254
287
  return overview;
255
288
  }
289
+ /**
290
+ * Detect CommonJS require() calls as imports.
291
+ * Pattern: CALL(name="require") with PASSES_ARGUMENT -> LITERAL(value="module-path")
292
+ * Complexity: O(C * A) where C = CONTAINS edges, A = PASSES_ARGUMENT edges per CALL
293
+ */
294
+ async detectCjsImports(moduleId) {
295
+ const imports = [];
296
+ const containsEdges = await this.graph.getOutgoingEdges(moduleId, ['CONTAINS']);
297
+ for (const edge of containsEdges) {
298
+ const child = await this.graph.getNode(edge.dst);
299
+ if (!child || child.type !== 'CALL')
300
+ continue;
301
+ if (child.name !== 'require' && !child.name?.endsWith('.require'))
302
+ continue;
303
+ // Find the first argument (module path)
304
+ const argEdges = await this.graph.getOutgoingEdges(child.id, ['PASSES_ARGUMENT']);
305
+ let source = '<unknown>';
306
+ for (const argEdge of argEdges) {
307
+ // Check metadata for index=0
308
+ const meta = argEdge.metadata;
309
+ const idx = typeof meta === 'object' && meta !== null ? meta.index : undefined;
310
+ if (idx !== undefined && idx !== 0)
311
+ continue;
312
+ const argNode = await this.graph.getNode(argEdge.dst);
313
+ if (argNode) {
314
+ source = argNode.value ?? argNode.name ?? '<unknown>';
315
+ break;
316
+ }
317
+ }
318
+ imports.push({ id: child.id, source, specifiers: [] });
319
+ }
320
+ return imports;
321
+ }
322
+ /**
323
+ * Detect CommonJS module.exports/exports assignments as exports.
324
+ * Pattern: PROPERTY_ACCESS with name containing "exports"
325
+ * Complexity: O(C) where C = CONTAINS edges from MODULE
326
+ */
327
+ async detectCjsExports(moduleId) {
328
+ const exports = [];
329
+ const containsEdges = await this.graph.getOutgoingEdges(moduleId, ['CONTAINS']);
330
+ for (const edge of containsEdges) {
331
+ const child = await this.graph.getNode(edge.dst);
332
+ if (!child)
333
+ continue;
334
+ if (child.type === 'PROPERTY_ACCESS') {
335
+ const name = child.name ?? '';
336
+ // Match patterns like "module.exports", "exports.foo"
337
+ if (name === 'module.exports' || name === 'exports' ||
338
+ name.startsWith('exports.') || name.startsWith('module.exports.')) {
339
+ const exportName = name.includes('.exports.')
340
+ ? name.split('.exports.').pop() ?? 'default'
341
+ : 'default';
342
+ exports.push({
343
+ id: child.id,
344
+ name: exportName,
345
+ isDefault: exportName === 'default',
346
+ });
347
+ }
348
+ }
349
+ }
350
+ return exports;
351
+ }
256
352
  /**
257
353
  * Build VariableOverview from a VARIABLE or CONSTANT node.
258
354
  * Complexity: Without edges O(1), with edges O(1)
@@ -1 +1 @@
1
- {"version":3,"file":"FileOverview.js","sourceRoot":"","sources":["../../src/core/FileOverview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileOverview.js","sourceRoot":"","sources":["../../src/core/FileOverview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * FederatedRouter — orchestrates cross-shard graph queries.
3
+ *
4
+ * Two query patterns:
5
+ * 1. Traversal with frontier: trace_dataflow, trace_alias
6
+ * - Start in local shard, follow edges until boundary
7
+ * - Frontier edges grouped by target shard, batch-resolved via SUBGRAPH
8
+ * - Repeat until no more frontier or depth exhausted
9
+ *
10
+ * 2. Scatter-gather: find_calls, find_nodes
11
+ * - Broadcast query to all shards, merge results
12
+ *
13
+ * Key properties:
14
+ * - Global visited set across all hops (cycle prevention / INV-3)
15
+ * - Cost budget: max connections, max total nodes (fan-out protection / INV-6)
16
+ * - Frontier grouping: N edges to same shard → 1 SUBGRAPH call (not N)
17
+ */
18
+ import type { WireNode, WireEdge } from '@grafema/types';
19
+ import type { ShardDiscovery, ShardRegistration } from './ShardDiscovery.js';
20
+ import type { ManifestResolver } from '../manifest/index.js';
21
+ export interface FrontierEdge {
22
+ /** Source node semantic ID (in the source shard) */
23
+ src: string;
24
+ /** Target node ID (hash — target doesn't exist in source shard) */
25
+ dst: string;
26
+ /** Edge type */
27
+ edgeType: string;
28
+ /** Edge metadata (JSON string, may contain "source" for IMPORTS_FROM) */
29
+ metadata?: string;
30
+ /** Absolute file path of the target (extracted from semantic ID) */
31
+ targetFile?: string;
32
+ /** How this edge was resolved: "graph" | "manifest" | "unresolved" */
33
+ resolvedVia?: 'graph' | 'manifest' | 'unresolved';
34
+ }
35
+ export interface SubgraphResponse {
36
+ ok: boolean;
37
+ nodes: WireNode[];
38
+ edges: WireEdge[];
39
+ frontier: FrontierEdge[];
40
+ }
41
+ export interface FederatedTraceHop {
42
+ /** Which shard this hop came from */
43
+ shard: ShardRegistration | null;
44
+ /** Nodes discovered in this hop */
45
+ nodes: WireNode[];
46
+ /** Edges discovered in this hop */
47
+ edges: WireEdge[];
48
+ /** Unresolved frontier (shard not found or unavailable) */
49
+ unresolvedFrontier: FrontierEdge[];
50
+ }
51
+ /** Node resolved from manifest (no full graph, just export surface) */
52
+ export interface ManifestResolvedNode {
53
+ /** Package name (e.g., "@grafema/util") */
54
+ packageName: string;
55
+ /** Symbol name */
56
+ symbolName: string;
57
+ /** Export kind: FUNCTION, CLASS, etc. */
58
+ kind: string;
59
+ /** Known effects */
60
+ effects: string[];
61
+ /** Semantic ID from manifest (if available) */
62
+ semanticId?: string;
63
+ }
64
+ export interface FederatedTraceResult {
65
+ /** All nodes from all hops, merged */
66
+ nodes: WireNode[];
67
+ /** All edges from all hops, merged */
68
+ edges: WireEdge[];
69
+ /** Individual hops for debugging/visualization */
70
+ hops: FederatedTraceHop[];
71
+ /** Nodes resolved via manifest (partial info, no subgraph) */
72
+ manifestNodes: ManifestResolvedNode[];
73
+ /** Unresolved frontier across all hops */
74
+ unresolvedFrontier: FrontierEdge[];
75
+ /** Whether the traversal was cut short by cost budget */
76
+ truncated: boolean;
77
+ }
78
+ export interface FederatedRouterOptions {
79
+ /** Max total nodes across all hops (default: 10000) */
80
+ maxNodes?: number;
81
+ /** Max shard connections per round (default: 10) */
82
+ maxShardsPerRound?: number;
83
+ /** Max traversal rounds (default: 5) */
84
+ maxRounds?: number;
85
+ }
86
+ /** Function that sends a SUBGRAPH command to an rfdb-server via its socket */
87
+ type SubgraphSender = (socket: string, entries: string[], direction: string, edgeTypes: string[], maxDepth: number) => Promise<SubgraphResponse>;
88
+ export declare class FederatedRouter {
89
+ private discovery;
90
+ private sendSubgraph;
91
+ private manifestResolver;
92
+ private options;
93
+ constructor(discovery: ShardDiscovery, sendSubgraph: SubgraphSender, options?: FederatedRouterOptions, manifestResolver?: ManifestResolver);
94
+ /**
95
+ * Federated traversal: start from entry points, hop across shards via frontier.
96
+ *
97
+ * 1. Send SUBGRAPH to the shard owning the first entry point
98
+ * 2. Collect frontier, group by target shard
99
+ * 3. Send SUBGRAPH to each target shard (parallel)
100
+ * 4. Repeat until no more frontier or budget exhausted
101
+ */
102
+ trace(entries: string[], direction: 'forward' | 'backward' | 'both', edgeTypes: string[], maxDepth: number): Promise<FederatedTraceResult>;
103
+ /**
104
+ * Scatter-gather: broadcast a query to all known shards, merge results.
105
+ * Used for find_nodes, find_calls when no file filter is specified.
106
+ */
107
+ scatterGather<T>(queryFn: (socket: string) => Promise<T[]>): Promise<{
108
+ results: T[];
109
+ queriedShards: number;
110
+ }>;
111
+ /**
112
+ * Try to resolve a frontier edge via ManifestResolver.
113
+ * Works for IMPORTS_FROM edges that carry "source" in metadata.
114
+ * Returns ManifestResolvedNode if found, null otherwise.
115
+ */
116
+ private tryManifestFallback;
117
+ /**
118
+ * Group frontier edges by target shard using ShardDiscovery.
119
+ * Edges whose target shard can't be found go into a null group.
120
+ */
121
+ private groupByShard;
122
+ }
123
+ export {};
124
+ //# sourceMappingURL=FederatedRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FederatedRouter.d.ts","sourceRoot":"","sources":["../../src/federation/FederatedRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,297 @@
1
+ /**
2
+ * FederatedRouter — orchestrates cross-shard graph queries.
3
+ *
4
+ * Two query patterns:
5
+ * 1. Traversal with frontier: trace_dataflow, trace_alias
6
+ * - Start in local shard, follow edges until boundary
7
+ * - Frontier edges grouped by target shard, batch-resolved via SUBGRAPH
8
+ * - Repeat until no more frontier or depth exhausted
9
+ *
10
+ * 2. Scatter-gather: find_calls, find_nodes
11
+ * - Broadcast query to all shards, merge results
12
+ *
13
+ * Key properties:
14
+ * - Global visited set across all hops (cycle prevention / INV-3)
15
+ * - Cost budget: max connections, max total nodes (fan-out protection / INV-6)
16
+ * - Frontier grouping: N edges to same shard → 1 SUBGRAPH call (not N)
17
+ */
18
+ // ── Router ─────────────────────────────────────────────────────
19
+ export class FederatedRouter {
20
+ discovery;
21
+ sendSubgraph;
22
+ manifestResolver;
23
+ options;
24
+ constructor(discovery, sendSubgraph, options = {}, manifestResolver) {
25
+ this.discovery = discovery;
26
+ this.sendSubgraph = sendSubgraph;
27
+ this.manifestResolver = manifestResolver ?? null;
28
+ this.options = {
29
+ maxNodes: options.maxNodes ?? 10_000,
30
+ maxShardsPerRound: options.maxShardsPerRound ?? 10,
31
+ maxRounds: options.maxRounds ?? 5,
32
+ };
33
+ }
34
+ /**
35
+ * Federated traversal: start from entry points, hop across shards via frontier.
36
+ *
37
+ * 1. Send SUBGRAPH to the shard owning the first entry point
38
+ * 2. Collect frontier, group by target shard
39
+ * 3. Send SUBGRAPH to each target shard (parallel)
40
+ * 4. Repeat until no more frontier or budget exhausted
41
+ */
42
+ async trace(entries, direction, edgeTypes, maxDepth) {
43
+ const allNodes = [];
44
+ const allEdges = [];
45
+ const allHops = [];
46
+ const manifestNodes = [];
47
+ const globalVisited = new Set(); // INV-3: global across all hops
48
+ let unresolvedFrontier = [];
49
+ let truncated = false;
50
+ // Initial frontier: the entry points themselves, grouped by shard
51
+ let currentFrontier = [];
52
+ // Group entry points by shard
53
+ const entryGroups = this.groupByShard(entries.map(e => ({ src: '', dst: e, edgeType: '' })));
54
+ for (const [, group] of entryGroups) {
55
+ currentFrontier.push({
56
+ shard: group.shard,
57
+ entries: group.edges.map(e => e.dst),
58
+ });
59
+ }
60
+ let remainingDepth = maxDepth;
61
+ for (let round = 0; round < this.options.maxRounds; round++) {
62
+ if (currentFrontier.length === 0 || remainingDepth <= 0)
63
+ break;
64
+ // Cost check: limit shards per round
65
+ const roundShards = currentFrontier.slice(0, this.options.maxShardsPerRound);
66
+ if (roundShards.length < currentFrontier.length) {
67
+ truncated = true;
68
+ }
69
+ // Query all shards in parallel
70
+ const hopResults = await Promise.all(roundShards.map(async ({ shard, entries: entryIds }) => {
71
+ // Filter out already-visited entries
72
+ const newEntries = entryIds.filter(e => !globalVisited.has(e));
73
+ if (newEntries.length === 0) {
74
+ return null;
75
+ }
76
+ try {
77
+ const result = await this.sendSubgraph(shard.socket, newEntries, direction, edgeTypes, remainingDepth);
78
+ // Mark visited
79
+ for (const node of result.nodes) {
80
+ const nodeId = node.semanticId || node.id;
81
+ globalVisited.add(nodeId);
82
+ }
83
+ return { shard, result };
84
+ }
85
+ catch {
86
+ // Shard unavailable — all its entries become unresolved
87
+ return {
88
+ shard,
89
+ result: {
90
+ ok: false,
91
+ nodes: [],
92
+ edges: [],
93
+ frontier: newEntries.map(e => ({
94
+ src: '',
95
+ dst: e,
96
+ edgeType: 'UNRESOLVED',
97
+ })),
98
+ },
99
+ };
100
+ }
101
+ }));
102
+ // Collect results
103
+ const nextFrontierEdges = [];
104
+ for (const hopResult of hopResults) {
105
+ if (!hopResult)
106
+ continue;
107
+ const { shard, result } = hopResult;
108
+ const hop = {
109
+ shard,
110
+ nodes: result.nodes,
111
+ edges: result.edges,
112
+ unresolvedFrontier: [],
113
+ };
114
+ allNodes.push(...result.nodes);
115
+ allEdges.push(...result.edges);
116
+ // Check cost budget
117
+ if (allNodes.length >= this.options.maxNodes) {
118
+ truncated = true;
119
+ allHops.push(hop);
120
+ break;
121
+ }
122
+ // Process frontier
123
+ for (const edge of result.frontier) {
124
+ if (globalVisited.has(edge.dst))
125
+ continue; // Already visited
126
+ nextFrontierEdges.push(edge);
127
+ }
128
+ allHops.push(hop);
129
+ }
130
+ if (truncated)
131
+ break;
132
+ // Group next frontier by target shard
133
+ const nextGroups = this.groupByShard(nextFrontierEdges);
134
+ currentFrontier = [];
135
+ const newUnresolved = [];
136
+ for (const [, group] of nextGroups) {
137
+ if (group.shard) {
138
+ currentFrontier.push({
139
+ shard: group.shard,
140
+ entries: group.edges.map(e => e.dst),
141
+ });
142
+ }
143
+ else {
144
+ // No shard found — try manifest fallback
145
+ for (const edge of group.edges) {
146
+ const resolved = this.tryManifestFallback(edge);
147
+ if (resolved) {
148
+ manifestNodes.push(resolved);
149
+ edge.resolvedVia = 'manifest';
150
+ }
151
+ else {
152
+ edge.resolvedVia = 'unresolved';
153
+ newUnresolved.push(edge);
154
+ }
155
+ }
156
+ }
157
+ }
158
+ unresolvedFrontier = newUnresolved;
159
+ remainingDepth = Math.max(0, remainingDepth - 1);
160
+ }
161
+ return {
162
+ nodes: allNodes,
163
+ edges: allEdges,
164
+ hops: allHops,
165
+ manifestNodes,
166
+ unresolvedFrontier,
167
+ truncated,
168
+ };
169
+ }
170
+ /**
171
+ * Scatter-gather: broadcast a query to all known shards, merge results.
172
+ * Used for find_nodes, find_calls when no file filter is specified.
173
+ */
174
+ async scatterGather(queryFn) {
175
+ const shards = this.discovery.all();
176
+ const allResults = [];
177
+ const responses = await Promise.all(shards.map(async (shard) => {
178
+ try {
179
+ return await queryFn(shard.socket);
180
+ }
181
+ catch {
182
+ return [];
183
+ }
184
+ }));
185
+ for (const results of responses) {
186
+ allResults.push(...results);
187
+ }
188
+ return { results: allResults, queriedShards: shards.length };
189
+ }
190
+ // ── Private ────────────────────────────────────────────────────
191
+ /**
192
+ * Try to resolve a frontier edge via ManifestResolver.
193
+ * Works for IMPORTS_FROM edges that carry "source" in metadata.
194
+ * Returns ManifestResolvedNode if found, null otherwise.
195
+ */
196
+ tryManifestFallback(edge) {
197
+ if (!this.manifestResolver)
198
+ return null;
199
+ if (edge.edgeType !== 'IMPORTS_FROM')
200
+ return null;
201
+ // Extract package source and symbol from edge metadata
202
+ const meta = parseEdgeMetadata(edge.metadata);
203
+ if (!meta.source)
204
+ return null;
205
+ // Try to find the symbol in the manifest
206
+ // Symbol name might be in metadata or extractable from src semantic ID
207
+ const symbolName = meta.specifier || meta.localName || extractSymbolFromId(edge.src);
208
+ if (!symbolName) {
209
+ // No specific symbol — check if package exists in manifests at all
210
+ if (this.manifestResolver.has(meta.source)) {
211
+ return {
212
+ packageName: meta.source,
213
+ symbolName: '*',
214
+ kind: 'VARIABLE',
215
+ effects: ['UNKNOWN'],
216
+ };
217
+ }
218
+ return null;
219
+ }
220
+ const result = this.manifestResolver.resolve(meta.source, symbolName);
221
+ if (!result)
222
+ return null;
223
+ return {
224
+ packageName: meta.source,
225
+ symbolName,
226
+ kind: result.export.kind,
227
+ effects: result.export.effects,
228
+ semanticId: result.export.semanticId,
229
+ };
230
+ }
231
+ /**
232
+ * Group frontier edges by target shard using ShardDiscovery.
233
+ * Edges whose target shard can't be found go into a null group.
234
+ */
235
+ groupByShard(edges) {
236
+ const groups = new Map();
237
+ for (const edge of edges) {
238
+ // Try to extract file path from the target ID (dst)
239
+ // Semantic IDs contain file path as first segment: "path/to/file.ts->FUNCTION->name"
240
+ const filePath = extractFilePath(edge.dst);
241
+ const shard = filePath ? this.discovery.resolve(filePath) : null;
242
+ const key = shard ? shard.root : '__unresolved__';
243
+ if (!groups.has(key)) {
244
+ groups.set(key, { shard: shard, edges: [] });
245
+ }
246
+ groups.get(key).edges.push(edge);
247
+ }
248
+ return groups;
249
+ }
250
+ }
251
+ /** Parse JSON edge metadata, returning an object with known fields. */
252
+ function parseEdgeMetadata(metadata) {
253
+ if (!metadata)
254
+ return {};
255
+ try {
256
+ return JSON.parse(metadata);
257
+ }
258
+ catch {
259
+ return {};
260
+ }
261
+ }
262
+ /** Extract symbol name from the last segment of a semantic ID. */
263
+ function extractSymbolFromId(semanticId) {
264
+ if (!semanticId)
265
+ return null;
266
+ // "file.ts->FUNCTION->myFunc" → "myFunc"
267
+ const parts = semanticId.split('->');
268
+ return parts.length >= 3 ? parts[parts.length - 1] : null;
269
+ }
270
+ /**
271
+ * Extract absolute file path from a semantic ID or grafema URI.
272
+ * Handles both formats:
273
+ * - Arrow format: "path/to/file.ts->FUNCTION->name"
274
+ * - URI format: "grafema://path/to/file.ts#FUNCTION%3Aname"
275
+ */
276
+ function extractFilePath(semanticId) {
277
+ if (!semanticId)
278
+ return null;
279
+ // URI format: grafema://path/to/file.ts#fragment
280
+ if (semanticId.startsWith('grafema://')) {
281
+ const hashIdx = semanticId.indexOf('#');
282
+ return hashIdx > 0
283
+ ? semanticId.slice('grafema://'.length, hashIdx)
284
+ : semanticId.slice('grafema://'.length);
285
+ }
286
+ // Arrow format: path/to/file.ts->FUNCTION->name
287
+ const arrowIdx = semanticId.indexOf('->');
288
+ if (arrowIdx > 0) {
289
+ return semanticId.slice(0, arrowIdx);
290
+ }
291
+ // Might be just a file path or hash — return as-is if it looks like a path
292
+ if (semanticId.includes('/') && !semanticId.includes(' ')) {
293
+ return semanticId;
294
+ }
295
+ return null;
296
+ }
297
+ //# sourceMappingURL=FederatedRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FederatedRouter.js","sourceRoot":"","sources":["../../src/federation/FederatedRouter.ts"],"names":[],"mappings":"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"}