graphwise 1.4.3 → 1.5.1

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 (97) hide show
  1. package/dist/__test__/fixtures/graphs/index.d.ts +1 -0
  2. package/dist/__test__/fixtures/graphs/index.d.ts.map +1 -1
  3. package/dist/__test__/fixtures/graphs/linear-chain.d.ts +18 -0
  4. package/dist/__test__/fixtures/graphs/linear-chain.d.ts.map +1 -0
  5. package/dist/__test__/fixtures/helpers.d.ts +20 -1
  6. package/dist/__test__/fixtures/helpers.d.ts.map +1 -1
  7. package/dist/__test__/fixtures/index.d.ts +1 -0
  8. package/dist/__test__/fixtures/index.d.ts.map +1 -1
  9. package/dist/__test__/fixtures/metrics.d.ts +86 -0
  10. package/dist/__test__/fixtures/metrics.d.ts.map +1 -0
  11. package/dist/__test__/fixtures/metrics.unit.test.d.ts +7 -0
  12. package/dist/__test__/fixtures/metrics.unit.test.d.ts.map +1 -0
  13. package/dist/expansion/dfs-priority.d.ts +23 -0
  14. package/dist/expansion/dfs-priority.d.ts.map +1 -0
  15. package/dist/expansion/dfs-priority.unit.test.d.ts +2 -0
  16. package/dist/expansion/dfs-priority.unit.test.d.ts.map +1 -0
  17. package/dist/expansion/edge.d.ts.map +1 -1
  18. package/dist/expansion/flux.d.ts.map +1 -1
  19. package/dist/expansion/fuse.d.ts.map +1 -1
  20. package/dist/expansion/index.d.ts +3 -0
  21. package/dist/expansion/index.d.ts.map +1 -1
  22. package/dist/expansion/k-hop.d.ts +26 -0
  23. package/dist/expansion/k-hop.d.ts.map +1 -0
  24. package/dist/expansion/k-hop.unit.test.d.ts +2 -0
  25. package/dist/expansion/k-hop.unit.test.d.ts.map +1 -0
  26. package/dist/expansion/lace.d.ts.map +1 -1
  27. package/dist/expansion/maze.d.ts.map +1 -1
  28. package/dist/expansion/priority-helpers.d.ts +43 -0
  29. package/dist/expansion/priority-helpers.d.ts.map +1 -0
  30. package/dist/expansion/random-walk.d.ts +35 -0
  31. package/dist/expansion/random-walk.d.ts.map +1 -0
  32. package/dist/expansion/random-walk.unit.test.d.ts +2 -0
  33. package/dist/expansion/random-walk.unit.test.d.ts.map +1 -0
  34. package/dist/expansion/sage.d.ts.map +1 -1
  35. package/dist/expansion/sift.d.ts.map +1 -1
  36. package/dist/expansion/warp.d.ts.map +1 -1
  37. package/dist/index/index.cjs +887 -297
  38. package/dist/index/index.cjs.map +1 -1
  39. package/dist/index/index.js +878 -299
  40. package/dist/index/index.js.map +1 -1
  41. package/dist/ranking/baselines/betweenness.d.ts.map +1 -1
  42. package/dist/ranking/baselines/communicability.d.ts.map +1 -1
  43. package/dist/ranking/baselines/degree-sum.d.ts.map +1 -1
  44. package/dist/ranking/baselines/hitting-time.d.ts +27 -0
  45. package/dist/ranking/baselines/hitting-time.d.ts.map +1 -0
  46. package/dist/ranking/baselines/hitting-time.unit.test.d.ts +2 -0
  47. package/dist/ranking/baselines/hitting-time.unit.test.d.ts.map +1 -0
  48. package/dist/ranking/baselines/index.d.ts +1 -0
  49. package/dist/ranking/baselines/index.d.ts.map +1 -1
  50. package/dist/ranking/baselines/jaccard-arithmetic.d.ts.map +1 -1
  51. package/dist/ranking/baselines/katz.d.ts.map +1 -1
  52. package/dist/ranking/baselines/pagerank.d.ts.map +1 -1
  53. package/dist/ranking/baselines/random-ranking.d.ts.map +1 -1
  54. package/dist/ranking/baselines/resistance-distance.d.ts.map +1 -1
  55. package/dist/ranking/baselines/shortest.d.ts.map +1 -1
  56. package/dist/ranking/baselines/utils.d.ts +20 -0
  57. package/dist/ranking/baselines/utils.d.ts.map +1 -0
  58. package/dist/ranking/baselines/widest-path.d.ts.map +1 -1
  59. package/dist/ranking/mi/adaptive.d.ts.map +1 -1
  60. package/dist/ranking/mi/cosine.d.ts +13 -0
  61. package/dist/ranking/mi/cosine.d.ts.map +1 -0
  62. package/dist/ranking/mi/cosine.unit.test.d.ts +2 -0
  63. package/dist/ranking/mi/cosine.unit.test.d.ts.map +1 -0
  64. package/dist/ranking/mi/etch.d.ts.map +1 -1
  65. package/dist/ranking/mi/hub-promoted.d.ts +13 -0
  66. package/dist/ranking/mi/hub-promoted.d.ts.map +1 -0
  67. package/dist/ranking/mi/hub-promoted.unit.test.d.ts +2 -0
  68. package/dist/ranking/mi/hub-promoted.unit.test.d.ts.map +1 -0
  69. package/dist/ranking/mi/index.d.ts +5 -0
  70. package/dist/ranking/mi/index.d.ts.map +1 -1
  71. package/dist/ranking/mi/jaccard.d.ts.map +1 -1
  72. package/dist/ranking/mi/notch.d.ts.map +1 -1
  73. package/dist/ranking/mi/overlap-coefficient.d.ts +13 -0
  74. package/dist/ranking/mi/overlap-coefficient.d.ts.map +1 -0
  75. package/dist/ranking/mi/overlap-coefficient.unit.test.d.ts +2 -0
  76. package/dist/ranking/mi/overlap-coefficient.unit.test.d.ts.map +1 -0
  77. package/dist/ranking/mi/resource-allocation.d.ts +13 -0
  78. package/dist/ranking/mi/resource-allocation.d.ts.map +1 -0
  79. package/dist/ranking/mi/resource-allocation.unit.test.d.ts +2 -0
  80. package/dist/ranking/mi/resource-allocation.unit.test.d.ts.map +1 -0
  81. package/dist/ranking/mi/scale.d.ts.map +1 -1
  82. package/dist/ranking/mi/skew.d.ts.map +1 -1
  83. package/dist/ranking/mi/sorensen.d.ts +13 -0
  84. package/dist/ranking/mi/sorensen.d.ts.map +1 -0
  85. package/dist/ranking/mi/sorensen.unit.test.d.ts +2 -0
  86. package/dist/ranking/mi/sorensen.unit.test.d.ts.map +1 -0
  87. package/dist/ranking/mi/span.d.ts.map +1 -1
  88. package/dist/ranking/mi/types.d.ts +1 -1
  89. package/dist/ranking/mi/types.d.ts.map +1 -1
  90. package/dist/schemas/graph.d.ts +1 -1
  91. package/dist/utils/index.cjs +22 -0
  92. package/dist/utils/index.cjs.map +1 -1
  93. package/dist/utils/index.js +22 -1
  94. package/dist/utils/index.js.map +1 -1
  95. package/dist/utils/neighbours.d.ts +23 -0
  96. package/dist/utils/neighbours.d.ts.map +1 -1
  97. package/package.json +1 -1
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Each builder creates a complete test graph with nodes, edges, seeds, and metadata.
5
5
  */
6
+ export * from './linear-chain';
6
7
  export * from './social-hub';
7
8
  export * from './two-department';
8
9
  export * from './city-village';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/__test__/fixtures/graphs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/__test__/fixtures/graphs/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { AdjacencyMapGraph } from '../../../graph';
2
+ import { KGNode } from '../types';
3
+ /**
4
+ * Five-node linear chain: A – B – C – D – E, all edges weight 1.
5
+ *
6
+ * Used as the primary test graph in expansion unit tests. Seeds are typically
7
+ * placed at the two endpoints (A and E) to exercise bidirectional expansion
8
+ * across the full chain length.
9
+ */
10
+ export declare function createLinearChainGraph(): AdjacencyMapGraph<KGNode>;
11
+ /**
12
+ * Two disconnected nodes A and B with no edges between them.
13
+ *
14
+ * Used to verify that expansion algorithms correctly return zero paths when
15
+ * seeds cannot be connected.
16
+ */
17
+ export declare function createDisconnectedGraph(): AdjacencyMapGraph<KGNode>;
18
+ //# sourceMappingURL=linear-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-chain.d.ts","sourceRoot":"","sources":["../../../../src/__test__/fixtures/graphs/linear-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAiBlE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAKnE"}
@@ -1,5 +1,5 @@
1
1
  import { NodeId, ReadableGraph, NodeData, EdgeData } from '../../graph';
2
- import { ExpansionPath } from '../../expansion';
2
+ import { ExpansionPath, ExpansionResult, ExpansionStats } from '../../expansion';
3
3
  import { MIFunction } from '../../ranking/mi';
4
4
  /**
5
5
  * Create an ExpansionPath from an array of node IDs.
@@ -41,6 +41,25 @@ export declare function createPath(nodes: readonly NodeId[]): ExpansionPath;
41
41
  * ```
42
42
  */
43
43
  export declare function pathMI<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, path: ExpansionPath, mi: MIFunction<N, E>): number;
44
+ /**
45
+ * Assert that an ExpansionResult has the four required top-level properties.
46
+ *
47
+ * Checks for `paths`, `sampledNodes`, `sampledEdges`, and `stats`. Intended
48
+ * as a concise structural guard in expansion unit tests.
49
+ *
50
+ * @param result - The expansion result to validate
51
+ */
52
+ export declare function assertExpansionResultShape(result: ExpansionResult): void;
53
+ /**
54
+ * Assert that an ExpansionStats object has all expected numeric fields and
55
+ * a valid termination reason.
56
+ *
57
+ * Checks `iterations`, `nodesVisited`, `edgesTraversed`, `pathsFound`,
58
+ * `durationMs`, `algorithm`, and `termination`.
59
+ *
60
+ * @param stats - The stats object to validate
61
+ */
62
+ export declare function assertValidStats(stats: ExpansionStats): void;
44
63
  /**
45
64
  * Compute the mean MI across all edges in all paths.
46
65
  *
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/__test__/fixtures/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAiBlE;AAoBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC5D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAClB,MAAM,CAgCR;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAChE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAClB,MAAM,CAeR"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/__test__/fixtures/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAiBlE;AAoBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC5D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAClB,MAAM,CAgCR;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAaxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CA8B5D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAChE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAClB,MAAM,CAeR"}
@@ -7,4 +7,5 @@
7
7
  export * from './types';
8
8
  export * from './helpers';
9
9
  export * from './graphs';
10
+ export * from './metrics';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/__test__/fixtures/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/__test__/fixtures/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { NodeId, NodeData, EdgeData, ReadableGraph } from '../../graph';
2
+ import { ExpansionResult } from '../../expansion/types';
3
+ import { PARSEResult } from '../../ranking/parse';
4
+ /**
5
+ * Fraction of visited nodes whose degree is below the 90th percentile of all
6
+ * sampled node degrees. A high ratio indicates the algorithm successfully
7
+ * defers high-degree hubs in favour of lower-degree nodes.
8
+ */
9
+ export declare function hubDeferralRatio<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, result: ExpansionResult): number;
10
+ /**
11
+ * Count of distinct intermediate nodes (i.e. excluding endpoints) across all
12
+ * discovered paths. Higher values indicate broader path diversity.
13
+ */
14
+ export declare function pathDiversity(result: ExpansionResult): number;
15
+ /**
16
+ * Ratio of sampled edges to sampled nodes. Reflects how densely the sampled
17
+ * subgraph is connected (higher = more edges per node).
18
+ */
19
+ export declare function subgraphDensity(result: ExpansionResult): number;
20
+ /**
21
+ * Ratio of discovered paths to total nodes visited. Measures how efficiently
22
+ * the expansion produced useful paths relative to exploration cost.
23
+ */
24
+ export declare function coverageEfficiency(result: ExpansionResult): number;
25
+ /**
26
+ * Ratio of total iterations to paths discovered. Measures how many
27
+ * iterations were required per path. Returns Infinity when no paths
28
+ * were found (expansion terminated without connecting seeds).
29
+ */
30
+ export declare function firstPathLatency(result: ExpansionResult): number;
31
+ /**
32
+ * Number of distinct node types present in the sampled node set.
33
+ * Nodes without a `type` property are counted as a single unnamed type.
34
+ */
35
+ export declare function typeCoverage<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, result: ExpansionResult): number;
36
+ /**
37
+ * Number of connected components that contain at least one path node,
38
+ * determined via union-find over the sampled edge set. Higher values
39
+ * indicate paths spanning structurally distant regions of the graph.
40
+ */
41
+ export declare function communitySpan(result: ExpansionResult): number;
42
+ /**
43
+ * Spearman rank correlation coefficient between two rankings (arrays of node
44
+ * IDs ordered from highest to lowest). Returns a value in [-1, 1] where 1
45
+ * means identical order and -1 means perfectly reversed.
46
+ *
47
+ * Only nodes present in both rankings are considered.
48
+ */
49
+ export declare function spearmanRho(rankingA: readonly NodeId[], rankingB: readonly NodeId[]): number;
50
+ /**
51
+ * Kendall tau rank correlation coefficient between two rankings. Returns a
52
+ * value in [-1, 1] where 1 means identical and -1 means fully reversed.
53
+ *
54
+ * Only nodes present in both rankings are considered.
55
+ */
56
+ export declare function kendallTau(rankingA: readonly NodeId[], rankingB: readonly NodeId[]): number;
57
+ /**
58
+ * Ratio of weak-link path salience to consistent-path salience. Values below
59
+ * 1 indicate the consistent path scores higher (expected behaviour); values
60
+ * above 1 indicate the weak-link path is incorrectly ranked higher.
61
+ *
62
+ * @param consistent - Mean salience of paths expected to rank highest
63
+ * @param weakLink - Mean salience of paths expected to rank lower
64
+ */
65
+ export declare function weakLinkSensitivity(consistent: number, weakLink: number): number;
66
+ /**
67
+ * Sample variance of salience scores across all ranked paths. Returns 0 when
68
+ * all paths have identical scores (no discriminative power).
69
+ */
70
+ export declare function scoreVariance(parseResult: PARSEResult): number;
71
+ /**
72
+ * Pearson correlation between path length (number of edges) and salience
73
+ * score. Values near 0 indicate length-unbiased ranking; strong positive or
74
+ * negative values indicate length bias.
75
+ */
76
+ export declare function lengthBias(parseResult: PARSEResult): number;
77
+ /**
78
+ * Ratio of hub path salience to peripheral path salience. Values below 1
79
+ * indicate hub paths score lower (hub penalty is working); values at or above
80
+ * 1 indicate no penalty.
81
+ *
82
+ * @param peripheral - Mean salience of paths through low-degree nodes
83
+ * @param hub - Mean salience of paths through high-degree hub nodes
84
+ */
85
+ export declare function hubPenaltyStrength(peripheral: number, hub: number): number;
86
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/__test__/fixtures/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACtE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,eAAe,GACrB,MAAM,CAaR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAa7D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAM/D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAMlE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAKhE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAClE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,eAAe,GACrB,MAAM,CASR;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA4C7D;AAMD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAC1B,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,CA+BR;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACzB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,CAsCR;AAMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACd,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAS9D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CA+B3D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAK1E"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Unit tests for the comparison metrics module.
3
+ *
4
+ * Tests use minimal mock data to verify each metric function independently.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=metrics.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.unit.test.d.ts","sourceRoot":"","sources":["../../../src/__test__/fixtures/metrics.unit.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,23 @@
1
+ import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { Seed, ExpansionResult, ExpansionConfig, PriorityContext } from './types';
3
+ /**
4
+ * DFS priority function: negative iteration produces LIFO ordering.
5
+ *
6
+ * Lower priority values are expanded first, so negating the iteration
7
+ * counter ensures the most recently enqueued node is always next.
8
+ */
9
+ export declare function dfsPriorityFn<N extends NodeData, E extends EdgeData>(_nodeId: string, context: PriorityContext<N, E>): number;
10
+ /**
11
+ * Run DFS-priority expansion (LIFO discovery order).
12
+ *
13
+ * Uses the BASE framework with a negative-iteration priority function,
14
+ * which causes the most recently discovered node to be expanded first —
15
+ * equivalent to depth-first search behaviour.
16
+ *
17
+ * @param graph - Source graph
18
+ * @param seeds - Seed nodes for expansion
19
+ * @param config - Expansion configuration
20
+ * @returns Expansion result with discovered paths
21
+ */
22
+ export declare function dfsPriority<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: ExpansionConfig<N, E>): ExpansionResult;
23
+ //# sourceMappingURL=dfs-priority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dfs-priority.d.ts","sourceRoot":"","sources":["../../src/expansion/dfs-priority.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EACf,eAAe,EACf,MAAM,SAAS,CAAC;AAGjB;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACnE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACjE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dfs-priority.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dfs-priority.unit.test.d.ts","sourceRoot":"","sources":["../../src/expansion/dfs-priority.unit.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/expansion/edge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAgCjB;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB"}
1
+ {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/expansion/edge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAOtE;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"flux.d.ts","sourceRoot":"","sources":["../../src/expansion/flux.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CAClC;AA8FD;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAcjB"}
1
+ {"version":3,"file":"flux.d.ts","sourceRoot":"","sources":["../../src/expansion/flux.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CAClC;AA0ED;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAcjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"fuse.d.ts","sourceRoot":"","sources":["../../src/expansion/fuse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;IACZ,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CACrB,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAC1B,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAyCrB;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAUjB"}
1
+ {"version":3,"file":"fuse.d.ts","sourceRoot":"","sources":["../../src/expansion/fuse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;IACZ,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CACrB,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAC1B,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAwBrB;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAUjB"}
@@ -24,4 +24,7 @@ export * from './flux';
24
24
  export * from './standard-bfs';
25
25
  export * from './frontier-balanced';
26
26
  export * from './random-priority';
27
+ export * from './dfs-priority';
28
+ export * from './k-hop';
29
+ export * from './random-walk';
27
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/expansion/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/expansion/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { Seed, ExpansionResult, ExpansionConfig } from './types';
3
+ /**
4
+ * Configuration for k-hop expansion.
5
+ */
6
+ export interface KHopConfig<N extends NodeData = NodeData, E extends EdgeData = EdgeData> extends ExpansionConfig<N, E> {
7
+ /**
8
+ * Maximum number of hops from any seed node.
9
+ * Defaults to 2.
10
+ */
11
+ readonly k?: number;
12
+ }
13
+ /**
14
+ * Run k-hop expansion (fixed-depth BFS).
15
+ *
16
+ * Explores all nodes reachable within exactly k hops of any seed using
17
+ * breadth-first search. Paths between seeds are detected when a node
18
+ * is reached by frontiers from two different seeds.
19
+ *
20
+ * @param graph - Source graph
21
+ * @param seeds - Seed nodes for expansion
22
+ * @param config - K-hop configuration (k defaults to 2)
23
+ * @returns Expansion result with discovered paths
24
+ */
25
+ export declare function kHop<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: KHopConfig<N, E>): ExpansionResult;
26
+ //# sourceMappingURL=k-hop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k-hop.d.ts","sourceRoot":"","sources":["../../src/expansion/k-hop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAU,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EAGf,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CA4JjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=k-hop.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k-hop.unit.test.d.ts","sourceRoot":"","sources":["../../src/expansion/k-hop.unit.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"lace.d.ts","sourceRoot":"","sources":["../../src/expansion/lace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;CACZ;AA0CD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAUjB"}
1
+ {"version":3,"file":"lace.d.ts","sourceRoot":"","sources":["../../src/expansion/lace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;CACZ;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAUjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"maze.d.ts","sourceRoot":"","sources":["../../src/expansion/maze.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAU,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AASjB;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAsEjB"}
1
+ {"version":3,"file":"maze.d.ts","sourceRoot":"","sources":["../../src/expansion/maze.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAU,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAUjB;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CA8DjB"}
@@ -0,0 +1,43 @@
1
+ import { NodeId, NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { PriorityContext, ExpansionPath } from './types';
3
+ /**
4
+ * Compute the average mutual information between a node and all visited
5
+ * nodes in the same frontier.
6
+ *
7
+ * Returns a value in [0, 1] — higher means the node is more similar
8
+ * (on average) to already-visited same-frontier nodes.
9
+ *
10
+ * @param graph - Source graph
11
+ * @param nodeId - Node being prioritised
12
+ * @param context - Current priority context
13
+ * @param mi - MI function to use for pairwise scoring
14
+ * @returns Average MI score, or 0 if no same-frontier visited nodes exist
15
+ */
16
+ export declare function avgFrontierMI<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, nodeId: NodeId, context: PriorityContext<N, E>, mi: (graph: ReadableGraph<N, E>, source: string, target: string) => number): number;
17
+ /**
18
+ * Count the number of a node's neighbours that have been visited by
19
+ * frontiers other than the node's own frontier.
20
+ *
21
+ * A higher count indicates this node is likely to bridge two frontiers,
22
+ * making it a strong candidate for path completion.
23
+ *
24
+ * @param graph - Source graph
25
+ * @param nodeId - Node being evaluated
26
+ * @param context - Current priority context
27
+ * @returns Number of neighbours visited by other frontiers
28
+ */
29
+ export declare function countCrossFrontierNeighbours<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, nodeId: NodeId, context: PriorityContext<N, E>): number;
30
+ /**
31
+ * Incrementally update salience counts for paths discovered since the
32
+ * last update.
33
+ *
34
+ * Iterates only over paths from `fromIndex` onwards, avoiding redundant
35
+ * re-processing of already-counted paths.
36
+ *
37
+ * @param salienceCounts - Mutable map of node ID to salience count (mutated in place)
38
+ * @param paths - Full list of discovered paths
39
+ * @param fromIndex - Index to start counting from (exclusive of earlier paths)
40
+ * @returns The new `fromIndex` value (i.e. `paths.length` after update)
41
+ */
42
+ export declare function updateSalienceCounts(salienceCounts: Map<NodeId, number>, paths: readonly ExpansionPath[], fromIndex: number): number;
43
+ //# sourceMappingURL=priority-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority-helpers.d.ts","sourceRoot":"","sources":["../../src/expansion/priority-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACnE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GACxE,MAAM,CAcR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC3C,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,QAAQ,EAElB,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,MAAM,CAYR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CACnC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,SAAS,EAAE,MAAM,GACf,MAAM,CAUR"}
@@ -0,0 +1,35 @@
1
+ import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { Seed, ExpansionResult } from './types';
3
+ /**
4
+ * Configuration for random-walk-with-restart expansion.
5
+ */
6
+ export interface RandomWalkConfig {
7
+ /** Probability of restarting a walk from its seed node (default: 0.15). */
8
+ readonly restartProbability?: number;
9
+ /** Number of walks to perform per seed node (default: 10). */
10
+ readonly walks?: number;
11
+ /** Maximum steps per walk (default: 20). */
12
+ readonly walkLength?: number;
13
+ /** Random seed for deterministic reproducibility (default: 0). */
14
+ readonly seed?: number;
15
+ }
16
+ /**
17
+ * Run random-walk-with-restart expansion.
18
+ *
19
+ * For each seed, performs `walks` independent random walks of up to
20
+ * `walkLength` steps. At each step the walk either restarts (with
21
+ * probability `restartProbability`) or moves to a uniformly sampled
22
+ * neighbour. All visited nodes and traversed edges are collected.
23
+ *
24
+ * Inter-seed paths are detected when a walk reaches a node that was
25
+ * previously reached by a walk originating from a different seed.
26
+ * The recorded path contains only the two seed endpoints rather than
27
+ * the full walk trajectory, consistent with the ExpansionPath contract.
28
+ *
29
+ * @param graph - Source graph
30
+ * @param seeds - Seed nodes for expansion
31
+ * @param config - Random walk configuration
32
+ * @returns Expansion result with discovered paths
33
+ */
34
+ export declare function randomWalk<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: RandomWalkConfig): ExpansionResult;
35
+ //# sourceMappingURL=random-walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-walk.d.ts","sourceRoot":"","sources":["../../src/expansion/random-walk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAU,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EAGf,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAqBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAChE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,gBAAgB,GACvB,eAAe,CAwJjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=random-walk.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-walk.unit.test.d.ts","sourceRoot":"","sources":["../../src/expansion/random-walk.unit.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"sage.d.ts","sourceRoot":"","sources":["../../src/expansion/sage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAU,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAGjB;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAiDjB"}
1
+ {"version":3,"file":"sage.d.ts","sourceRoot":"","sources":["../../src/expansion/sage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAU,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAIjB;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CA6CjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"sift.d.ts","sourceRoot":"","sources":["../../src/expansion/sift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,MAAM,WAAW,WAAW,CAC3B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;IACZ,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAsCD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GACxB,eAAe,CAWjB"}
1
+ {"version":3,"file":"sift.d.ts","sourceRoot":"","sources":["../../src/expansion/sift.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,MAAM,WAAW,WAAW,CAC3B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;IACZ,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAyBD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GACxB,eAAe,CAWjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../src/expansion/warp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAsCjB;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB"}
1
+ {"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../src/expansion/warp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAkCjB;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB"}