sxng-cli 1.0.8 → 1.1.0

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 (107) hide show
  1. package/README.md +10 -2
  2. package/dist/commands/graph-add.d.ts.map +1 -1
  3. package/dist/commands/graph-add.js +11 -3
  4. package/dist/commands/graph-add.js.map +1 -1
  5. package/dist/commands/graph-drill.d.ts +11 -0
  6. package/dist/commands/graph-drill.d.ts.map +1 -0
  7. package/dist/commands/graph-drill.js +26 -0
  8. package/dist/commands/graph-drill.js.map +1 -0
  9. package/dist/commands/graph-explore.d.ts +10 -0
  10. package/dist/commands/graph-explore.d.ts.map +1 -0
  11. package/dist/commands/graph-explore.js +32 -0
  12. package/dist/commands/graph-explore.js.map +1 -0
  13. package/dist/commands/graph-obfuscate.d.ts +17 -0
  14. package/dist/commands/graph-obfuscate.d.ts.map +1 -0
  15. package/dist/commands/graph-obfuscate.js +110 -0
  16. package/dist/commands/graph-obfuscate.js.map +1 -0
  17. package/dist/commands/graph-search.d.ts +11 -0
  18. package/dist/commands/graph-search.d.ts.map +1 -0
  19. package/dist/commands/graph-search.js +19 -0
  20. package/dist/commands/graph-search.js.map +1 -0
  21. package/dist/commands/graph-traverse.d.ts +10 -0
  22. package/dist/commands/graph-traverse.d.ts.map +1 -0
  23. package/dist/commands/graph-traverse.js +39 -0
  24. package/dist/commands/graph-traverse.js.map +1 -0
  25. package/dist/commands/query-graph.d.ts +2 -0
  26. package/dist/commands/query-graph.d.ts.map +1 -1
  27. package/dist/commands/query-graph.js +68 -2
  28. package/dist/commands/query-graph.js.map +1 -1
  29. package/dist/commands/session.js +1 -1
  30. package/dist/commands/session.js.map +1 -1
  31. package/dist/deep/co-occurrence.d.ts +50 -0
  32. package/dist/deep/co-occurrence.d.ts.map +1 -0
  33. package/dist/deep/co-occurrence.js +95 -0
  34. package/dist/deep/co-occurrence.js.map +1 -0
  35. package/dist/deep/degree-utils.d.ts +39 -0
  36. package/dist/deep/degree-utils.d.ts.map +1 -0
  37. package/dist/deep/degree-utils.js +42 -0
  38. package/dist/deep/degree-utils.js.map +1 -0
  39. package/dist/deep/extractor.d.ts +7 -2
  40. package/dist/deep/extractor.d.ts.map +1 -1
  41. package/dist/deep/extractor.js +143 -78
  42. package/dist/deep/extractor.js.map +1 -1
  43. package/dist/deep/graph-explore.d.ts +115 -0
  44. package/dist/deep/graph-explore.d.ts.map +1 -0
  45. package/dist/deep/graph-explore.js +586 -0
  46. package/dist/deep/graph-explore.js.map +1 -0
  47. package/dist/deep/graph-obfuscate.d.ts +51 -0
  48. package/dist/deep/graph-obfuscate.d.ts.map +1 -0
  49. package/dist/deep/graph-obfuscate.js +226 -0
  50. package/dist/deep/graph-obfuscate.js.map +1 -0
  51. package/dist/deep/graph-preprocess.d.ts +41 -0
  52. package/dist/deep/graph-preprocess.d.ts.map +1 -0
  53. package/dist/deep/graph-preprocess.js +32 -0
  54. package/dist/deep/graph-preprocess.js.map +1 -0
  55. package/dist/deep/graph-sampling.d.ts +51 -0
  56. package/dist/deep/graph-sampling.d.ts.map +1 -0
  57. package/dist/deep/graph-sampling.js +409 -0
  58. package/dist/deep/graph-sampling.js.map +1 -0
  59. package/dist/deep/graph.d.ts +24 -1
  60. package/dist/deep/graph.d.ts.map +1 -1
  61. package/dist/deep/graph.js +42 -1
  62. package/dist/deep/graph.js.map +1 -1
  63. package/dist/deep/iteration-data.d.ts +38 -0
  64. package/dist/deep/iteration-data.d.ts.map +1 -0
  65. package/dist/deep/iteration-data.js +48 -0
  66. package/dist/deep/iteration-data.js.map +1 -0
  67. package/dist/deep/path-extraction.d.ts +53 -0
  68. package/dist/deep/path-extraction.d.ts.map +1 -0
  69. package/dist/deep/path-extraction.js +229 -0
  70. package/dist/deep/path-extraction.js.map +1 -0
  71. package/dist/deep/quality-assess.d.ts +45 -0
  72. package/dist/deep/quality-assess.d.ts.map +1 -0
  73. package/dist/deep/quality-assess.js +125 -0
  74. package/dist/deep/quality-assess.js.map +1 -0
  75. package/dist/deep/query-redundancy.d.ts +39 -0
  76. package/dist/deep/query-redundancy.d.ts.map +1 -0
  77. package/dist/deep/query-redundancy.js +109 -0
  78. package/dist/deep/query-redundancy.js.map +1 -0
  79. package/dist/deep/query-suggest.d.ts +35 -0
  80. package/dist/deep/query-suggest.d.ts.map +1 -0
  81. package/dist/deep/query-suggest.js +98 -0
  82. package/dist/deep/query-suggest.js.map +1 -0
  83. package/dist/deep/recovery-analysis.d.ts +61 -0
  84. package/dist/deep/recovery-analysis.d.ts.map +1 -0
  85. package/dist/deep/recovery-analysis.js +188 -0
  86. package/dist/deep/recovery-analysis.js.map +1 -0
  87. package/dist/deep/search-strategy.d.ts +37 -0
  88. package/dist/deep/search-strategy.d.ts.map +1 -0
  89. package/dist/deep/search-strategy.js +99 -0
  90. package/dist/deep/search-strategy.js.map +1 -0
  91. package/dist/deep/session.d.ts +3 -1
  92. package/dist/deep/session.d.ts.map +1 -1
  93. package/dist/deep/session.js +4 -4
  94. package/dist/deep/session.js.map +1 -1
  95. package/dist/deep/simhash.d.ts +5 -0
  96. package/dist/deep/simhash.d.ts.map +1 -1
  97. package/dist/deep/simhash.js +16 -0
  98. package/dist/deep/simhash.js.map +1 -1
  99. package/dist/deep/tfidf.d.ts +38 -0
  100. package/dist/deep/tfidf.d.ts.map +1 -0
  101. package/dist/deep/tfidf.js +103 -0
  102. package/dist/deep/tfidf.js.map +1 -0
  103. package/dist/runCli.d.ts +3 -1
  104. package/dist/runCli.d.ts.map +1 -1
  105. package/dist/runCli.js +762 -307
  106. package/dist/runCli.js.map +1 -1
  107. package/package.json +17 -4
@@ -0,0 +1,409 @@
1
+ /**
2
+ * Graph sampling strategies for knowledge graph exploration.
3
+ *
4
+ * Given a graph, seed entities, and a strategy, produces a sampled subgraph
5
+ * focused on the most relevant structures for reasoning.
6
+ *
7
+ * Strategies:
8
+ * - augmented_chain: sequential entity chain with attribute enrichment
9
+ * - dual_core_bridge: two seed entities converging on a shared target
10
+ * - community_core_path: high-degree hub → peripheral entities
11
+ * - deep_chain: depth-limited DFS (max 5-8 hops)
12
+ * - mixed: randomly pick one of the above
13
+ */
14
+ import { getEntityDegree, filterEntitiesByDegree, adaptiveDegreeRange } from './degree-utils.js';
15
+ // ── Helpers ───────────────────────────────────────────────────────
16
+ /** Create a simple seeded PRNG (mulberry32). */
17
+ function mulberry32(seed) {
18
+ let s = seed | 0;
19
+ return () => {
20
+ s = (s + 0x6D2B79F5) | 0;
21
+ let t = Math.imul(s ^ (s >>> 15), 1 | s);
22
+ t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
23
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
24
+ };
25
+ }
26
+ function toSampledEntity(graph, nodeId) {
27
+ const attrs = graph.getNodeAttributes(nodeId);
28
+ return {
29
+ id: nodeId,
30
+ label: attrs.label,
31
+ entityType: attrs.entityType,
32
+ score: attrs.score,
33
+ degree: getEntityDegree(graph, nodeId),
34
+ };
35
+ }
36
+ function collectEdge(graph, source, target) {
37
+ if (!graph.hasEdge(source, target))
38
+ return null;
39
+ const attrs = graph.getEdgeAttributes(source, target);
40
+ return { source, target, relation: attrs.relation, weight: attrs.weight };
41
+ }
42
+ function collectAllEdgesBetween(graph, nodeSet) {
43
+ const edges = [];
44
+ graph.forEachEdge((edge, attrs, source, target) => {
45
+ if (nodeSet.has(source) && nodeSet.has(target)) {
46
+ edges.push({ source, target, relation: attrs.relation, weight: attrs.weight });
47
+ }
48
+ });
49
+ return edges;
50
+ }
51
+ /** Filter entity neighbors by adaptive degree range.
52
+ * Falls back to all entity neighbors if degree filtering removes everything
53
+ * (common for very small graphs where adaptive range is too tight). */
54
+ function degreeFilteredNeighbors(graph, nodeId, config) {
55
+ const range = adaptiveDegreeRange(graph, {
56
+ minDegree: config.degreeRange?.min,
57
+ maxDegreeCap: config.degreeRange?.max ?? config.degreeRange?.maxDegreeCap,
58
+ });
59
+ const filtered = [];
60
+ const allEntityNeighbors = [];
61
+ graph.forEachNeighbor(nodeId, (neighbor) => {
62
+ if (graph.getNodeAttributes(neighbor).type !== 'entity')
63
+ return;
64
+ allEntityNeighbors.push(neighbor);
65
+ const deg = getEntityDegree(graph, neighbor);
66
+ if (deg >= range.min && deg <= range.max) {
67
+ filtered.push(neighbor);
68
+ }
69
+ });
70
+ // Fallback: if degree range filtered everything out, use all entity neighbors
71
+ // This is common for very small graphs where the adaptive range is too tight
72
+ return filtered.length > 0 ? filtered : allEntityNeighbors;
73
+ }
74
+ /** Get unvisited entity neighbors, preferring degree-filtered ones but falling
75
+ * back to all when the filtered set is empty or all-filtered are already visited. */
76
+ function getNextEntityNeighbors(graph, nodeId, config, visited) {
77
+ const preferred = degreeFilteredNeighbors(graph, nodeId, config);
78
+ const unvisitedPreferred = preferred.filter(n => !visited.has(n));
79
+ if (unvisitedPreferred.length > 0)
80
+ return unvisitedPreferred;
81
+ // All preferred neighbors are visited — try all entity neighbors
82
+ const all = [];
83
+ graph.forEachNeighbor(nodeId, (neighbor) => {
84
+ if (graph.getNodeAttributes(neighbor).type !== 'entity' && !visited.has(neighbor))
85
+ return;
86
+ if (!visited.has(neighbor))
87
+ all.push(neighbor);
88
+ });
89
+ return all;
90
+ }
91
+ // ── augmented_chain ───────────────────────────────────────────────
92
+ /**
93
+ * Walk a sequential chain from seed entity, picking the highest-degree
94
+ * neighbor at each hop. Enrich each node with degree and score.
95
+ * Good for multi-hop reasoning questions.
96
+ */
97
+ function sampleAugmentedChain(graph, config) {
98
+ const visited = new Set();
99
+ const entityOrder = [];
100
+ const maxHops = config.maxHops;
101
+ let current = config.seedEntities[0];
102
+ if (!current || !graph.hasNode(current)) {
103
+ return { strategy: 'augmented_chain', entities: [], edges: [], hopsCovered: 0, metadata: { reason: 'no_valid_seed' } };
104
+ }
105
+ visited.add(current);
106
+ entityOrder.push(current);
107
+ let hops = 0;
108
+ while (hops < maxHops) {
109
+ const neighbors = getNextEntityNeighbors(graph, current, config, visited);
110
+ if (neighbors.length === 0)
111
+ break;
112
+ // Pick the highest-degree neighbor
113
+ neighbors.sort((a, b) => getEntityDegree(graph, b) - getEntityDegree(graph, a));
114
+ const next = neighbors[0];
115
+ visited.add(next);
116
+ entityOrder.push(next);
117
+ current = next;
118
+ hops++;
119
+ }
120
+ const nodeSet = new Set(entityOrder);
121
+ const edges = collectAllEdgesBetween(graph, nodeSet);
122
+ return {
123
+ strategy: 'augmented_chain',
124
+ entities: entityOrder.map(id => toSampledEntity(graph, id)),
125
+ edges,
126
+ hopsCovered: hops,
127
+ metadata: { chainLength: entityOrder.length },
128
+ };
129
+ }
130
+ // ── dual_core_bridge ──────────────────────────────────────────────
131
+ /**
132
+ * Given two seed entities, find if they converge on a shared target entity.
133
+ * Good for comparative analysis (e.g., "tokio vs async-std").
134
+ */
135
+ function sampleDualCoreBridge(graph, config) {
136
+ const seeds = config.seedEntities.slice(0, 2);
137
+ const validSeeds = seeds.filter(s => graph.hasNode(s));
138
+ if (validSeeds.length < 2) {
139
+ return { strategy: 'dual_core_bridge', entities: [], edges: [], hopsCovered: 0, metadata: { reason: 'need_two_seeds' } };
140
+ }
141
+ const [seed1, seed2] = validSeeds;
142
+ const maxHops = config.maxHops;
143
+ // BFS from each seed, collecting reachable entity nodes within maxHops
144
+ function bfsReachable(start) {
145
+ const dist = new Map();
146
+ const queue = [{ id: start, d: 0 }];
147
+ dist.set(start, 0);
148
+ while (queue.length > 0) {
149
+ const { id, d } = queue.shift();
150
+ if (d >= maxHops)
151
+ continue;
152
+ graph.forEachNeighbor(id, (neighbor) => {
153
+ if (dist.has(neighbor))
154
+ return;
155
+ if (graph.getNodeAttributes(neighbor).type !== 'entity')
156
+ return;
157
+ dist.set(neighbor, d + 1);
158
+ queue.push({ id: neighbor, d: d + 1 });
159
+ });
160
+ }
161
+ return dist;
162
+ }
163
+ const reach1 = bfsReachable(seed1);
164
+ const reach2 = bfsReachable(seed2);
165
+ // Find convergence nodes: entities reachable from both seeds
166
+ const convergenceNodes = [];
167
+ for (const [nodeId, d1] of reach1) {
168
+ const d2 = reach2.get(nodeId);
169
+ if (d2 !== undefined && nodeId !== seed1 && nodeId !== seed2) {
170
+ convergenceNodes.push({ id: nodeId, totalDist: d1 + d2, dist1: d1, dist2: d2 });
171
+ }
172
+ }
173
+ convergenceNodes.sort((a, b) => a.totalDist - b.totalDist);
174
+ if (convergenceNodes.length === 0) {
175
+ // No convergence: just return the two seeds with their direct neighbors
176
+ const nodeSet = new Set([seed1, seed2]);
177
+ const neighbors1 = degreeFilteredNeighbors(graph, seed1, config).slice(0, 3);
178
+ const neighbors2 = degreeFilteredNeighbors(graph, seed2, config).slice(0, 3);
179
+ for (const n of neighbors1)
180
+ nodeSet.add(n);
181
+ for (const n of neighbors2)
182
+ nodeSet.add(n);
183
+ return {
184
+ strategy: 'dual_core_bridge',
185
+ entities: Array.from(nodeSet).map(id => toSampledEntity(graph, id)),
186
+ edges: collectAllEdgesBetween(graph, nodeSet),
187
+ hopsCovered: 0,
188
+ metadata: { convergence: false, reason: 'no_shared_target' },
189
+ };
190
+ }
191
+ // Trace shortest paths from each seed to the best convergence node
192
+ const bridgeNode = convergenceNodes[0];
193
+ const allNodes = new Set([seed1, seed2, bridgeNode.id]);
194
+ // Trace path seed1 → bridge
195
+ const path1 = tracePath(graph, seed1, bridgeNode.id, bridgeNode.dist1);
196
+ const path2 = tracePath(graph, seed2, bridgeNode.id, bridgeNode.dist2);
197
+ for (const n of path1)
198
+ allNodes.add(n);
199
+ for (const n of path2)
200
+ allNodes.add(n);
201
+ const edges = collectAllEdgesBetween(graph, allNodes);
202
+ const maxDist = Math.max(bridgeNode.dist1, bridgeNode.dist2);
203
+ return {
204
+ strategy: 'dual_core_bridge',
205
+ entities: Array.from(allNodes).map(id => toSampledEntity(graph, id)),
206
+ edges,
207
+ hopsCovered: maxDist,
208
+ metadata: {
209
+ convergence: true,
210
+ bridgeEntity: bridgeNode.id,
211
+ bridgeLabel: graph.getNodeAttributes(bridgeNode.id).label,
212
+ distFromSeed1: bridgeNode.dist1,
213
+ distFromSeed2: bridgeNode.dist2,
214
+ totalConvergencePoints: convergenceNodes.length,
215
+ },
216
+ };
217
+ }
218
+ /** Trace a shortest path from start to target using BFS (entity-only). */
219
+ function tracePath(graph, start, target, maxDepth) {
220
+ const prev = new Map();
221
+ const visited = new Set([start]);
222
+ const queue = [{ id: start, d: 0 }];
223
+ while (queue.length > 0) {
224
+ const { id, d } = queue.shift();
225
+ if (id === target)
226
+ break;
227
+ if (d >= maxDepth)
228
+ continue;
229
+ graph.forEachNeighbor(id, (neighbor) => {
230
+ if (visited.has(neighbor))
231
+ return;
232
+ if (graph.getNodeAttributes(neighbor).type !== 'entity')
233
+ return;
234
+ visited.add(neighbor);
235
+ prev.set(neighbor, id);
236
+ queue.push({ id: neighbor, d: d + 1 });
237
+ });
238
+ }
239
+ // Reconstruct path
240
+ const path = [];
241
+ let cur = target;
242
+ while (cur && cur !== start) {
243
+ path.push(cur);
244
+ cur = prev.get(cur);
245
+ }
246
+ return path;
247
+ }
248
+ // ── community_core_path ───────────────────────────────────────────
249
+ /**
250
+ * High-degree hub entities at the center, paths radiating to peripheral entities.
251
+ * Useful for understanding the "backbone" of the knowledge graph.
252
+ */
253
+ function sampleCommunityCorePath(graph, config) {
254
+ const range = adaptiveDegreeRange(graph, {
255
+ minDegree: config.degreeRange?.min,
256
+ maxDegreeCap: config.degreeRange?.max ?? config.degreeRange?.maxDegreeCap,
257
+ });
258
+ // Find hub entities within degree range
259
+ let allEntities = filterEntitiesByDegree(graph, {
260
+ minDegree: range.min,
261
+ maxDegreeCap: range.max,
262
+ });
263
+ // Fallback: if degree filtering removes everything, use all entities
264
+ if (allEntities.length === 0) {
265
+ const entities = [];
266
+ graph.forEachNode((node, attrs) => {
267
+ if (attrs.type === 'entity') {
268
+ entities.push({ id: node, degree: getEntityDegree(graph, node), label: attrs.label });
269
+ }
270
+ });
271
+ entities.sort((a, b) => b.degree - a.degree);
272
+ allEntities = entities;
273
+ }
274
+ if (allEntities.length === 0) {
275
+ return { strategy: 'community_core_path', entities: [], edges: [], hopsCovered: 0, metadata: { reason: 'no_entities' } };
276
+ }
277
+ // Top hub: highest-degree entity (or seed if provided)
278
+ let hubId = allEntities[0].id;
279
+ if (config.seedEntities.length > 0 && graph.hasNode(config.seedEntities[0])) {
280
+ hubId = config.seedEntities[0];
281
+ }
282
+ // Collect hub and its neighbors within maxHops
283
+ // Use degreeFilteredNeighbors with fallback for each step
284
+ const visited = new Set();
285
+ const nodeSet = new Set();
286
+ const queue = [{ id: hubId, d: 0 }];
287
+ visited.add(hubId);
288
+ while (queue.length > 0) {
289
+ const { id, d } = queue.shift();
290
+ if (d > config.maxHops)
291
+ continue;
292
+ const attrs = graph.getNodeAttributes(id);
293
+ if (attrs.type === 'entity')
294
+ nodeSet.add(id);
295
+ // Use getNextEntityNeighbors for consistent fallback behavior
296
+ const visitedSet = visited;
297
+ graph.forEachNeighbor(id, (neighbor) => {
298
+ if (visited.has(neighbor))
299
+ return;
300
+ if (graph.getNodeAttributes(neighbor).type !== 'entity')
301
+ return;
302
+ visited.add(neighbor);
303
+ queue.push({ id: neighbor, d: d + 1 });
304
+ });
305
+ }
306
+ const edges = collectAllEdgesBetween(graph, nodeSet);
307
+ return {
308
+ strategy: 'community_core_path',
309
+ entities: Array.from(nodeSet).map(id => toSampledEntity(graph, id)),
310
+ edges,
311
+ hopsCovered: Math.min(config.maxHops, ...Array.from(nodeSet).map(id => {
312
+ // BFS distance from hub
313
+ const visited2 = new Set();
314
+ const q = [{ n: hubId, d: 0 }];
315
+ visited2.add(hubId);
316
+ while (q.length > 0) {
317
+ const { n, d } = q.shift();
318
+ if (n === id)
319
+ return d;
320
+ graph.forEachNeighbor(n, (nb) => {
321
+ if (!visited2.has(nb) && nodeSet.has(nb)) {
322
+ visited2.add(nb);
323
+ q.push({ n: nb, d: d + 1 });
324
+ }
325
+ });
326
+ }
327
+ return config.maxHops;
328
+ })),
329
+ metadata: {
330
+ hubEntity: hubId,
331
+ hubLabel: graph.getNodeAttributes(hubId).label,
332
+ hubDegree: getEntityDegree(graph, hubId),
333
+ totalEntities: allEntities.length,
334
+ },
335
+ };
336
+ }
337
+ // ── deep_chain ────────────────────────────────────────────────────
338
+ /**
339
+ * Depth-limited DFS (max 5-8 hops), exploring the deepest reachable paths.
340
+ * Not NP-hard longest path — just a bounded DFS with cycle detection.
341
+ */
342
+ function sampleDeepChain(graph, config) {
343
+ const start = config.seedEntities[0];
344
+ if (!start || !graph.hasNode(start)) {
345
+ return { strategy: 'deep_chain', entities: [], edges: [], hopsCovered: 0, metadata: { reason: 'no_valid_seed' } };
346
+ }
347
+ const maxHops = Math.min(config.maxHops, 8); // hard cap at 8
348
+ // DFS tracking the deepest path found
349
+ let bestPath = [start];
350
+ function dfs(current, path, visited) {
351
+ if (path.length > bestPath.length) {
352
+ bestPath = [...path];
353
+ }
354
+ if (path.length - 1 >= maxHops)
355
+ return;
356
+ const neighbors = getNextEntityNeighbors(graph, current, config, visited);
357
+ for (const next of neighbors) {
358
+ visited.add(next);
359
+ path.push(next);
360
+ dfs(next, path, visited);
361
+ path.pop();
362
+ visited.delete(next);
363
+ }
364
+ }
365
+ const visited = new Set([start]);
366
+ dfs(start, [start], visited);
367
+ const nodeSet = new Set(bestPath);
368
+ const edges = collectAllEdgesBetween(graph, nodeSet);
369
+ return {
370
+ strategy: 'deep_chain',
371
+ entities: bestPath.map(id => toSampledEntity(graph, id)),
372
+ edges,
373
+ hopsCovered: bestPath.length - 1,
374
+ metadata: { chainLength: bestPath.length },
375
+ };
376
+ }
377
+ // ── mixed ─────────────────────────────────────────────────────────
378
+ /** Randomly pick one of the concrete strategies. */
379
+ function sampleMixed(graph, config) {
380
+ const strategies = [
381
+ 'augmented_chain',
382
+ 'dual_core_bridge',
383
+ 'community_core_path',
384
+ 'deep_chain',
385
+ ];
386
+ const rng = mulberry32(config.rngSeed ?? 42);
387
+ const idx = Math.floor(rng() * strategies.length);
388
+ const chosen = strategies[idx];
389
+ return sampleGraph(graph, { ...config, strategy: chosen });
390
+ }
391
+ // ── Main dispatch ─────────────────────────────────────────────────
392
+ /** Sample a knowledge graph using the specified strategy. */
393
+ export function sampleGraph(graph, config) {
394
+ switch (config.strategy) {
395
+ case 'augmented_chain':
396
+ return sampleAugmentedChain(graph, config);
397
+ case 'dual_core_bridge':
398
+ return sampleDualCoreBridge(graph, config);
399
+ case 'community_core_path':
400
+ return sampleCommunityCorePath(graph, config);
401
+ case 'deep_chain':
402
+ return sampleDeepChain(graph, config);
403
+ case 'mixed':
404
+ return sampleMixed(graph, config);
405
+ default:
406
+ return { strategy: config.strategy, entities: [], edges: [], hopsCovered: 0, metadata: { reason: 'unknown_strategy' } };
407
+ }
408
+ }
409
+ //# sourceMappingURL=graph-sampling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-sampling.js","sourceRoot":"","sources":["../../src/deep/graph-sampling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AA2CjG,qEAAqE;AAErE,gDAAgD;AAChD,SAAS,UAAU,CAAC,IAAY;IAC5B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACjB,OAAO,GAAG,EAAE;QACR,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IACjD,CAAC,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CACpB,KAAoD,EACpD,MAAc;IAEd,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO;QACH,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC;KACzC,CAAC;AACN,CAAC;AAED,SAAS,WAAW,CAChB,KAAoD,EACpD,MAAc,EACd,MAAc;IAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAC9E,CAAC;AAED,SAAS,sBAAsB,CAC3B,KAAoD,EACpD,OAAoB;IAEpB,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAY,EAAE,KAAqB,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE;QACtF,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACnF,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;wEAEwE;AACxE,SAAS,uBAAuB,CAC5B,KAAoD,EACpD,MAAc,EACd,MAAsB;IAEtB,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE;QACrC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG;QAClC,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY;KAC5E,CAAC,CAAC;IACH,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE;QAC/C,IAAI,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QAChE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC,CAAC,CAAC;IACH,8EAA8E;IAC9E,6EAA6E;IAC7E,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAC/D,CAAC;AAED;sFACsF;AACtF,SAAS,sBAAsB,CAC3B,KAAoD,EACpD,MAAc,EACd,MAAsB,EACtB,OAAoB;IAEpB,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAE7D,iEAAiE;IACjE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE;QAC/C,IAAI,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QAC1F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACf,CAAC;AAED,qEAAqE;AAErE;;;;GAIG;AACH,SAAS,oBAAoB,CACzB,KAAoD,EACpD,MAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAE/B,IAAI,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC;IAC3H,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE1B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO,IAAI,GAAG,OAAO,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE1E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAElC,mCAAmC;QACnC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,EAAE,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAErD,OAAO;QACH,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3D,KAAK;QACL,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE;KAChD,CAAC;AACN,CAAC;AAED,qEAAqE;AAErE;;;GAGG;AACH,SAAS,oBAAoB,CACzB,KAAoD,EACpD,MAAsB;IAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC;IAC7H,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAE/B,uEAAuE;IACvE,SAAS,YAAY,CAAC,KAAa;QAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;QACvC,MAAM,KAAK,GAAqC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEnB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YACjC,IAAI,CAAC,IAAI,OAAO;gBAAE,SAAS;YAC3B,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,QAAgB,EAAE,EAAE;gBAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,OAAO;gBAC/B,IAAI,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAO;gBAChE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAEnC,6DAA6D;IAC7D,MAAM,gBAAgB,GAA2E,EAAE,CAAC;IACpG,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAC3D,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;IACL,CAAC;IACD,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAE3D,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,wEAAwE;QACxE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,KAAK,MAAM,CAAC,IAAI,UAAU;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,UAAU;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE3C,OAAO;YACH,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnE,KAAK,EAAE,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;YAC7C,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE;SAC/D,CAAC;IACN,CAAC;IAED,mEAAmE;IACnE,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAExD,4BAA4B;IAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACvE,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAE7D,OAAO;QACH,QAAQ,EAAE,kBAAkB;QAC5B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpE,KAAK;QACL,WAAW,EAAE,OAAO;QACpB,QAAQ,EAAE;YACN,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK;YACzD,aAAa,EAAE,UAAU,CAAC,KAAK;YAC/B,aAAa,EAAE,UAAU,CAAC,KAAK;YAC/B,sBAAsB,EAAE,gBAAgB,CAAC,MAAM;SAClD;KACJ,CAAC;AACN,CAAC;AAED,0EAA0E;AAC1E,SAAS,SAAS,CACd,KAAoD,EACpD,KAAa,EACb,MAAc,EACd,QAAgB;IAEhB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,MAAM,KAAK,GAAqC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEtE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QACjC,IAAI,EAAE,KAAK,MAAM;YAAE,MAAM;QACzB,IAAI,CAAC,IAAI,QAAQ;YAAE,SAAS;QAE5B,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,QAAgB,EAAE,EAAE;YAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;YAClC,IAAI,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAChE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,mBAAmB;IACnB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,GAAG,GAAG,MAAM,CAAC;IACjB,OAAO,GAAG,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,qEAAqE;AAErE;;;GAGG;AACH,SAAS,uBAAuB,CAC5B,KAAoD,EACpD,MAAsB;IAEtB,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE;QACrC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG;QAClC,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY;KAC5E,CAAC,CAAC;IAEH,wCAAwC;IACxC,IAAI,WAAW,GAAG,sBAAsB,CAAC,KAAK,EAAE;QAC5C,SAAS,EAAE,KAAK,CAAC,GAAG;QACpB,YAAY,EAAE,KAAK,CAAC,GAAG;KAC1B,CAAC,CAAC;IAEH,qEAAqE;IACrE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAyD,EAAE,CAAC;QAC1E,KAAK,CAAC,WAAW,CAAC,CAAC,IAAY,EAAE,KAAqB,EAAE,EAAE;YACtD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1F,CAAC;QACL,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QAC7C,WAAW,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC;IAC7H,CAAC;IAED,uDAAuD;IACvD,IAAI,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,+CAA+C;IAC/C,0DAA0D;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAqC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEnB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QACjC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO;YAAE,SAAS;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE7C,8DAA8D;QAC9D,MAAM,UAAU,GAAG,OAAsB,CAAC;QAC1C,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,QAAgB,EAAE,EAAE;YAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;YAClC,IAAI,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAChE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAErD,OAAO;QACH,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnE,KAAK;QACL,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAClE,wBAAwB;YACxB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;YACnC,MAAM,CAAC,GAAoC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAG,CAAC;gBAC5B,IAAI,CAAC,KAAK,EAAE;oBAAE,OAAO,CAAC,CAAC;gBACvB,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAU,EAAE,EAAE;oBACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;wBACvC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACjB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChC,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,QAAQ,EAAE;YACN,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK;YAC9C,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;YACxC,aAAa,EAAE,WAAW,CAAC,MAAM;SACpC;KACJ,CAAC;AACN,CAAC;AAED,qEAAqE;AAErE;;;GAGG;AACH,SAAS,eAAe,CACpB,KAAoD,EACpD,MAAsB;IAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC;IACtH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;IAE7D,sCAAsC;IACtC,IAAI,QAAQ,GAAa,CAAC,KAAK,CAAC,CAAC;IAEjC,SAAS,GAAG,CAAC,OAAe,EAAE,IAAc,EAAE,OAAoB;QAC9D,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAChC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO;YAAE,OAAO;QAEvC,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE1E,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAE7B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAErD,OAAO;QACH,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxD,KAAK;QACL,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;QAChC,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE;KAC7C,CAAC;AACN,CAAC;AAED,qEAAqE;AAErE,oDAAoD;AACpD,SAAS,WAAW,CAChB,KAAoD,EACpD,MAAsB;IAEtB,MAAM,UAAU,GAAuB;QACnC,iBAAiB;QACjB,kBAAkB;QAClB,qBAAqB;QACrB,YAAY;KACf,CAAC;IAEF,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,qEAAqE;AAErE,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CACvB,KAAoD,EACpD,MAAsB;IAEtB,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,iBAAiB;YAClB,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,KAAK,kBAAkB;YACnB,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,KAAK,qBAAqB;YACtB,OAAO,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClD,KAAK,YAAY;YACb,OAAO,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,OAAO;YACR,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtC;YACI,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC;IAChI,CAAC;AACL,CAAC"}
@@ -9,17 +9,36 @@
9
9
  * The CLI only stores what the Agent sends via graph-add.
10
10
  */
11
11
  import { DirectedGraph } from 'graphology';
12
+ /** Semantic edge relation types */
13
+ export declare const EDGE_RELATIONS: {
14
+ readonly yields: "yields";
15
+ readonly belongs_to: "belongs_to";
16
+ readonly mentions: "mentions";
17
+ readonly alternative_to: "alternative_to";
18
+ readonly depends_on: "depends_on";
19
+ readonly co_occurs_with: "co_occurs_with";
20
+ readonly mentioned_in: "mentioned_in";
21
+ readonly includes: "includes";
22
+ };
23
+ export type PathType = 'composition_chain' | 'conjunction' | 'augmented_chain' | 'community_core_path' | 'dual_core_bridge';
12
24
  export interface GraphNodeAttrs {
13
- type: 'entity' | 'result' | 'query' | 'domain';
25
+ type: 'entity' | 'result' | 'query' | 'domain' | 'path';
14
26
  label: string;
15
27
  entityType?: string;
16
28
  score?: number;
29
+ reasoningPaths?: string[];
30
+ sourceRounds?: number[];
31
+ frequency?: number;
32
+ obfuscatedLabel?: string;
17
33
  url?: string;
18
34
  rank?: number;
19
35
  title?: string;
20
36
  query?: string;
21
37
  round?: number;
22
38
  domain?: string;
39
+ pathType?: PathType;
40
+ hops?: number;
41
+ entities?: string[];
23
42
  }
24
43
  export interface GraphEdgeAttrs {
25
44
  relation: string;
@@ -35,6 +54,9 @@ export declare function resultId(url: string): string;
35
54
  export declare function queryId(query: string): string;
36
55
  /** Generate a node ID for a domain */
37
56
  export declare function domainId(domain: string): string;
57
+ /** Generate the next path node ID for a given path type.
58
+ * Scans existing graph nodes to find the current max counter. */
59
+ export declare function nextPathId(graph: DirectedGraph<GraphNodeAttrs, GraphEdgeAttrs>, pathType: PathType): string;
38
60
  /** Auto-build structural edges: query→result→domain */
39
61
  export declare function buildStructuralEdges(graph: DirectedGraph<GraphNodeAttrs, GraphEdgeAttrs>, query: string, results: Array<{
40
62
  url: string;
@@ -51,5 +73,6 @@ export declare function graphStats(graph: DirectedGraph<GraphNodeAttrs, GraphEdg
51
73
  results: number;
52
74
  queries: number;
53
75
  domains: number;
76
+ paths: number;
54
77
  };
55
78
  //# sourceMappingURL=graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/deep/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IAEd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB;AAMD,qDAAqD;AACrD,wBAAgB,WAAW,IAAI,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,CAE3E;AAED,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,sCAAsC;AACtC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,qCAAqC;AACrC,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,sCAAsC;AACtC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/C;AAWD,uDAAuD;AACvD,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,EACpD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC7D,KAAK,CAAC,EAAE,MAAM,GACf,IAAI,CAuDN;AAED,wBAAgB,WAAW,CACvB,KAAK,EAAE,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,EACpD,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,GAAE,MAAU,GAClB,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,CA+B/C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,MAAM,CAE3F;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,CAIzF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB,CAiBA"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/deep/graph.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,17 @@
9
9
  * The CLI only stores what the Agent sends via graph-add.
10
10
  */
11
11
  import { DirectedGraph } from 'graphology';
12
+ /** Semantic edge relation types */
13
+ export const EDGE_RELATIONS = {
14
+ yields: 'yields', // query → result
15
+ belongs_to: 'belongs_to', // result → domain
16
+ mentions: 'mentions', // result → entity
17
+ alternative_to: 'alternative_to', // entity ↔ entity
18
+ depends_on: 'depends_on', // entity → entity
19
+ co_occurs_with: 'co_occurs_with', // entity ↔ entity
20
+ mentioned_in: 'mentioned_in', // entity → result
21
+ includes: 'includes', // path → entity
22
+ };
12
23
  function generateId(prefix, value) {
13
24
  return `${prefix}:${value.toLowerCase().replace(/[^\w]+/g, '_').slice(0, 60)}`;
14
25
  }
@@ -32,6 +43,33 @@ export function queryId(query) {
32
43
  export function domainId(domain) {
33
44
  return generateId('d', domain);
34
45
  }
46
+ /** Map from PathType to ID prefix */
47
+ const PATH_TYPE_PREFIX = {
48
+ composition_chain: 'chain',
49
+ conjunction: 'conj',
50
+ augmented_chain: 'aug',
51
+ community_core_path: 'core',
52
+ dual_core_bridge: 'bridge',
53
+ };
54
+ /** Generate the next path node ID for a given path type.
55
+ * Scans existing graph nodes to find the current max counter. */
56
+ export function nextPathId(graph, pathType) {
57
+ const prefix = PATH_TYPE_PREFIX[pathType];
58
+ let maxCounter = 0;
59
+ graph.forEachNode((node, attrs) => {
60
+ if (attrs.type === 'path' && attrs.pathType === pathType) {
61
+ // Extract counter from node ID: p:<prefix>_NNN
62
+ const match = node.match(new RegExp(`^p:${prefix}_(\\d+)$`));
63
+ if (match) {
64
+ const counter = parseInt(match[1], 10);
65
+ if (counter > maxCounter)
66
+ maxCounter = counter;
67
+ }
68
+ }
69
+ });
70
+ const next = maxCounter + 1;
71
+ return `p:${prefix}_${String(next).padStart(3, '0')}`;
72
+ }
35
73
  /** Extract domain from URL */
36
74
  function extractDomain(url) {
37
75
  try {
@@ -130,7 +168,7 @@ export function deserializeGraph(data) {
130
168
  return graph;
131
169
  }
132
170
  export function graphStats(graph) {
133
- let entities = 0, results = 0, queries = 0, domains = 0;
171
+ let entities = 0, results = 0, queries = 0, domains = 0, paths = 0;
134
172
  graph.forEachNode((node, attrs) => {
135
173
  if (attrs.type === 'entity')
136
174
  entities++;
@@ -140,6 +178,8 @@ export function graphStats(graph) {
140
178
  queries++;
141
179
  else if (attrs.type === 'domain')
142
180
  domains++;
181
+ else if (attrs.type === 'path')
182
+ paths++;
143
183
  });
144
184
  return {
145
185
  nodes: graph.order,
@@ -148,6 +188,7 @@ export function graphStats(graph) {
148
188
  results,
149
189
  queries,
150
190
  domains,
191
+ paths,
151
192
  };
152
193
  }
153
194
  //# sourceMappingURL=graph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/deep/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/deep/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Unified interface for all deep search iteration data commands.
3
+ *
4
+ * Composes the individual data modules into a single analysis call:
5
+ * - checkQueryRedundancy
6
+ * - assessResultQuality
7
+ * - generateQuerySuggestions
8
+ * - analyzeRecoveryOptions
9
+ * - getStrategyInfo
10
+ *
11
+ * Agent can call getSessionAnalysis() to get a comprehensive snapshot
12
+ * of the session state for decision-making.
13
+ */
14
+ import { DirectedGraph } from 'graphology';
15
+ import { GraphNodeAttrs, GraphEdgeAttrs } from './graph.js';
16
+ import { SessionResult } from './session.js';
17
+ import { QualityScore, QualityThresholds } from './quality-assess.js';
18
+ import { QuerySuggestionData } from './query-suggest.js';
19
+ import { StrategyConfig, StrategyInfo } from './search-strategy.js';
20
+ import { RecoveryAnalysis } from './recovery-analysis.js';
21
+ import { RedundancyConfig, RedundancyResult } from './query-redundancy.js';
22
+ export interface SessionAnalysis {
23
+ quality: QualityScore;
24
+ strategy: StrategyInfo;
25
+ suggestions: QuerySuggestionData;
26
+ recovery: RecoveryAnalysis;
27
+ }
28
+ /** Get a comprehensive analysis of the current session state.
29
+ * Combines quality assessment, strategy info, query suggestions,
30
+ * and recovery analysis into a single output for Agent decision-making. */
31
+ export declare function getSessionAnalysis(graph: DirectedGraph<GraphNodeAttrs, GraphEdgeAttrs>, sessionResults: SessionResult[], options?: {
32
+ qualityThresholds?: Partial<QualityThresholds>;
33
+ strategyConfig?: Partial<StrategyConfig>;
34
+ }): SessionAnalysis;
35
+ /** Check a new query for redundancy before execution.
36
+ * Standalone convenience function — also available via query-redundancy.ts. */
37
+ export declare function checkNewQueryRedundancy(newQuery: string, graph: DirectedGraph<GraphNodeAttrs, GraphEdgeAttrs>, config?: Partial<RedundancyConfig>): RedundancyResult;
38
+ //# sourceMappingURL=iteration-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iteration-data.d.ts","sourceRoot":"","sources":["../../src/deep/iteration-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAuB,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAyC,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAA0B,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAwB,MAAM,uBAAuB,CAAC;AAIjG,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,gBAAgB,CAAC;CAC9B;AAID;;4EAE4E;AAC5E,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,EACpD,cAAc,EAAE,aAAa,EAAE,EAC/B,OAAO,CAAC,EAAE;IACN,iBAAiB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5C,GACF,eAAe,CA6BjB;AAED;gFACgF;AAChF,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,EACpD,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACnC,gBAAgB,CAYlB"}