@motebit/protocol 0.8.0 → 1.0.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 (80) hide show
  1. package/LICENSE +198 -18
  2. package/NOTICE +19 -0
  3. package/README.md +37 -5
  4. package/dist/agent-settlement-anchor.d.ts +102 -0
  5. package/dist/agent-settlement-anchor.d.ts.map +1 -0
  6. package/dist/agent-settlement-anchor.js +18 -0
  7. package/dist/agent-settlement-anchor.js.map +1 -0
  8. package/dist/computer-use.d.ts +312 -0
  9. package/dist/computer-use.d.ts.map +1 -0
  10. package/dist/computer-use.js +86 -0
  11. package/dist/computer-use.js.map +1 -0
  12. package/dist/credential-anchor.d.ts +17 -2
  13. package/dist/credential-anchor.d.ts.map +1 -1
  14. package/dist/credential-anchor.js +3 -2
  15. package/dist/credential-anchor.js.map +1 -1
  16. package/dist/crypto-suite.d.ts +100 -0
  17. package/dist/crypto-suite.d.ts.map +1 -0
  18. package/dist/crypto-suite.js +93 -0
  19. package/dist/crypto-suite.js.map +1 -0
  20. package/dist/discovery.d.ts +87 -0
  21. package/dist/discovery.d.ts.map +1 -0
  22. package/dist/discovery.js +9 -0
  23. package/dist/discovery.js.map +1 -0
  24. package/dist/dispute.d.ts +176 -0
  25. package/dist/dispute.d.ts.map +1 -0
  26. package/dist/dispute.js +9 -0
  27. package/dist/dispute.js.map +1 -0
  28. package/dist/goal-lifecycle.d.ts +129 -0
  29. package/dist/goal-lifecycle.d.ts.map +1 -0
  30. package/dist/goal-lifecycle.js +29 -0
  31. package/dist/goal-lifecycle.js.map +1 -0
  32. package/dist/index.d.ts +692 -26
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +29 -2
  35. package/dist/index.js.map +1 -1
  36. package/dist/memory-events.d.ts +140 -0
  37. package/dist/memory-events.d.ts.map +1 -0
  38. package/dist/memory-events.js +29 -0
  39. package/dist/memory-events.js.map +1 -0
  40. package/dist/migration.d.ts +180 -0
  41. package/dist/migration.d.ts.map +1 -0
  42. package/dist/migration.js +9 -0
  43. package/dist/migration.js.map +1 -0
  44. package/dist/plan-lifecycle.d.ts +147 -0
  45. package/dist/plan-lifecycle.d.ts.map +1 -0
  46. package/dist/plan-lifecycle.js +36 -0
  47. package/dist/plan-lifecycle.js.map +1 -0
  48. package/dist/semiring.d.ts +16 -0
  49. package/dist/semiring.d.ts.map +1 -1
  50. package/dist/semiring.js +21 -0
  51. package/dist/semiring.js.map +1 -1
  52. package/dist/settlement-mode.d.ts +68 -0
  53. package/dist/settlement-mode.d.ts.map +1 -0
  54. package/dist/settlement-mode.js +8 -0
  55. package/dist/settlement-mode.js.map +1 -0
  56. package/dist/tool-mode.d.ts +46 -0
  57. package/dist/tool-mode.d.ts.map +1 -0
  58. package/dist/tool-mode.js +50 -0
  59. package/dist/tool-mode.js.map +1 -0
  60. package/package.json +8 -5
  61. package/dist/__tests__/branded-ids.test.d.ts +0 -2
  62. package/dist/__tests__/branded-ids.test.d.ts.map +0 -1
  63. package/dist/__tests__/branded-ids.test.js +0 -70
  64. package/dist/__tests__/branded-ids.test.js.map +0 -1
  65. package/dist/__tests__/semiring-laws.test.d.ts +0 -25
  66. package/dist/__tests__/semiring-laws.test.d.ts.map +0 -1
  67. package/dist/__tests__/semiring-laws.test.js +0 -231
  68. package/dist/__tests__/semiring-laws.test.js.map +0 -1
  69. package/dist/__tests__/semiring.test.d.ts +0 -2
  70. package/dist/__tests__/semiring.test.d.ts.map +0 -1
  71. package/dist/__tests__/semiring.test.js +0 -201
  72. package/dist/__tests__/semiring.test.js.map +0 -1
  73. package/dist/__tests__/traversal.test.d.ts +0 -2
  74. package/dist/__tests__/traversal.test.d.ts.map +0 -1
  75. package/dist/__tests__/traversal.test.js +0 -331
  76. package/dist/__tests__/traversal.test.js.map +0 -1
  77. package/dist/__tests__/trust-algebra.test.d.ts +0 -2
  78. package/dist/__tests__/trust-algebra.test.d.ts.map +0 -1
  79. package/dist/__tests__/trust-algebra.test.js +0 -105
  80. package/dist/__tests__/trust-algebra.test.js.map +0 -1
@@ -1,231 +0,0 @@
1
- /**
2
- * Property-based tests for semiring laws using fast-check.
3
- *
4
- * These verify the algebraic invariants that every algorithm in the
5
- * semiring package depends on — associativity, commutativity, identity,
6
- * annihilation, distributivity — over thousands of random inputs rather
7
- * than a handful of hand-picked examples.
8
- *
9
- * ### Determinism
10
- *
11
- * Fast-check defaults to a time-based seed, which means two CI runs
12
- * can draw different inputs and expose different edge cases. That
13
- * turns property tests into nondeterministic flakes under parallel
14
- * monorepo execution — one of the 103 tests in this file fired
15
- * intermittently during the pre-push hook. Fixed by pinning a seed:
16
- * every run now draws the same input sequence, so a passing run is a
17
- * reproducible guarantee, and a failing run is a bisectable
18
- * counterexample instead of a ghost.
19
- *
20
- * If a new law fails locally but passes the fixed-seed CI run, bump
21
- * `FC_NUM_RUNS` to explore more inputs, or switch the seed temporarily
22
- * to confirm the counterexample isn't a cherry-pick.
23
- */
24
- import { describe, it, beforeAll } from "vitest";
25
- import fc from "fast-check";
26
- import { TrustSemiring, CostSemiring, LatencySemiring, BottleneckSemiring, ReliabilitySemiring, BooleanSemiring, RegulatoryRiskSemiring, productSemiring, recordSemiring, } from "../index.js";
27
- // Pin fast-check's seed so the property tests run deterministically.
28
- // This makes CI runs reproducible and removes the "works locally,
29
- // fails in CI once every N runs" flake class entirely. The number of
30
- // runs per property stays at the default (100) — raising it would
31
- // make the suite slower without changing the deterministic guarantee.
32
- const FC_SEED = 0x5eed; // arbitrary fixed value, no security meaning
33
- beforeAll(() => {
34
- fc.configureGlobal({ seed: FC_SEED, numRuns: 100 });
35
- });
36
- // ── Approximate equality for floating-point ────────────────────────
37
- /**
38
- * Relative epsilon scaled by magnitude. Absolute 1e-10 tolerance is too
39
- * tight when values reach ~1e6 (one ULP of 1e6 is ~1.2e-10), so
40
- * associativity/distributivity checks would occasionally "fail" on
41
- * perfectly-algebraic IEEE 754 math. Relative epsilon (1e-9 × the
42
- * larger magnitude) plus a small absolute floor fixes both the
43
- * large-value and near-zero cases.
44
- */
45
- function tolerance(a, b) {
46
- const scale = Math.max(Math.abs(a), Math.abs(b), 1);
47
- return 1e-9 * scale + 1e-12;
48
- }
49
- function approxEq(a, b) {
50
- if (a === b)
51
- return true; // handles Infinity === Infinity
52
- if (!isFinite(a) || !isFinite(b))
53
- return false;
54
- return Math.abs(a - b) <= tolerance(a, b);
55
- }
56
- /** `x <= y` with the same scaled tolerance approxEq uses. */
57
- function approxLeq(x, y) {
58
- if (x === y)
59
- return true;
60
- if (x === -Infinity || y === Infinity)
61
- return true;
62
- if (x === Infinity || y === -Infinity)
63
- return false;
64
- return x <= y + tolerance(x, y);
65
- }
66
- // ── Generic law checker ────────────────────────────────────────────
67
- function semiringLaws(name, sr, arb, eq, opts) {
68
- describe(`${name} — property-based semiring laws`, () => {
69
- it("associativity of add: a + (b + c) = (a + b) + c", () => {
70
- fc.assert(fc.property(arb, arb, arb, (a, b, c) => {
71
- return eq(sr.add(a, sr.add(b, c)), sr.add(sr.add(a, b), c));
72
- }));
73
- });
74
- it("associativity of mul: a * (b * c) = (a * b) * c", () => {
75
- fc.assert(fc.property(arb, arb, arb, (a, b, c) => {
76
- return eq(sr.mul(a, sr.mul(b, c)), sr.mul(sr.mul(a, b), c));
77
- }));
78
- });
79
- it("commutativity of add: a + b = b + a", () => {
80
- fc.assert(fc.property(arb, arb, (a, b) => {
81
- return eq(sr.add(a, b), sr.add(b, a));
82
- }));
83
- });
84
- it("additive identity: a + 0 = a = 0 + a", () => {
85
- fc.assert(fc.property(arb, (a) => {
86
- return eq(sr.add(a, sr.zero), a) && eq(sr.add(sr.zero, a), a);
87
- }));
88
- });
89
- it("multiplicative identity: a * 1 = a = 1 * a", () => {
90
- fc.assert(fc.property(arb, (a) => {
91
- return eq(sr.mul(a, sr.one), a) && eq(sr.mul(sr.one, a), a);
92
- }));
93
- });
94
- it("annihilation: a * 0 = 0 = 0 * a", () => {
95
- fc.assert(fc.property(arb, (a) => {
96
- return eq(sr.mul(a, sr.zero), sr.zero) && eq(sr.mul(sr.zero, a), sr.zero);
97
- }));
98
- });
99
- it("left distributivity: a * (b + c) = (a * b) + (a * c)", () => {
100
- fc.assert(fc.property(arb, arb, arb, (a, b, c) => {
101
- const lhs = sr.mul(a, sr.add(b, c));
102
- const rhs = sr.add(sr.mul(a, b), sr.mul(a, c));
103
- return eq(lhs, rhs);
104
- }));
105
- });
106
- it("right distributivity: (a + b) * c = (a * c) + (b * c)", () => {
107
- fc.assert(fc.property(arb, arb, arb, (a, b, c) => {
108
- const lhs = sr.mul(sr.add(a, b), c);
109
- const rhs = sr.add(sr.mul(a, c), sr.mul(b, c));
110
- return eq(lhs, rhs);
111
- }));
112
- });
113
- if (opts?.idempotentAdd) {
114
- it("idempotency of add: a + a = a", () => {
115
- fc.assert(fc.property(arb, (a) => {
116
- return eq(sr.add(a, a), a);
117
- }));
118
- });
119
- }
120
- it("closure: add result is in valid domain", () => {
121
- fc.assert(fc.property(arb, arb, (a, b) => {
122
- const r = sr.add(a, b);
123
- // Result should be the same type and not NaN
124
- return typeof r === typeof a && !(typeof r === "number" && isNaN(r));
125
- }));
126
- });
127
- it("closure: mul result is in valid domain", () => {
128
- fc.assert(fc.property(arb, arb, (a, b) => {
129
- const r = sr.mul(a, b);
130
- return typeof r === typeof a && !(typeof r === "number" && isNaN(r));
131
- }));
132
- });
133
- });
134
- }
135
- // ── Arbitraries ────────────────────────────────────────────────────
136
- // Trust/Reliability: values in [0, 1]
137
- const unitArb = fc.double({ min: 0, max: 1, noNaN: true });
138
- // Cost/Latency/RegulatoryRisk: non-negative including Infinity
139
- // Use oneof to ensure Infinity appears in the test distribution
140
- const nonNegArb = fc.oneof(fc.double({ min: 0, max: 1e6, noNaN: true }), fc.constant(Infinity), fc.constant(0));
141
- // Bottleneck: non-negative including 0 and Infinity
142
- const bottleneckArb = fc.oneof(fc.double({ min: 0, max: 1e6, noNaN: true }), fc.constant(Infinity), fc.constant(0));
143
- const boolArb = fc.boolean();
144
- // ── Run law checks on all concrete semirings ───────────────────────
145
- // Trust: (max, *, 0, 1) — add is idempotent (max(a,a) = a)
146
- semiringLaws("TrustSemiring", TrustSemiring, unitArb, approxEq, {
147
- idempotentAdd: true,
148
- });
149
- // Cost: (min, +, Inf, 0) — tropical semiring, add is idempotent (min(a,a) = a)
150
- semiringLaws("CostSemiring", CostSemiring, nonNegArb, approxEq, {
151
- idempotentAdd: true,
152
- });
153
- // Latency: same algebra as Cost
154
- semiringLaws("LatencySemiring", LatencySemiring, nonNegArb, approxEq, {
155
- idempotentAdd: true,
156
- });
157
- // RegulatoryRisk: same algebra as Cost
158
- semiringLaws("RegulatoryRiskSemiring", RegulatoryRiskSemiring, nonNegArb, approxEq, {
159
- idempotentAdd: true,
160
- });
161
- // Bottleneck: (max, min, 0, Inf) — add is idempotent (max(a,a) = a)
162
- semiringLaws("BottleneckSemiring", BottleneckSemiring, bottleneckArb, approxEq, {
163
- idempotentAdd: true,
164
- });
165
- // Reliability: (max, *, 0, 1) — same algebra as Trust
166
- semiringLaws("ReliabilitySemiring", ReliabilitySemiring, unitArb, approxEq, {
167
- idempotentAdd: true,
168
- });
169
- // Boolean: (||, &&, false, true)
170
- semiringLaws("BooleanSemiring", BooleanSemiring, boolArb, (a, b) => a === b, {
171
- idempotentAdd: true,
172
- });
173
- // ── Product semiring ───────────────────────────────────────────────
174
- describe("Product(Trust x Cost) — property-based", () => {
175
- const ps = productSemiring(TrustSemiring, CostSemiring);
176
- const productArb = fc.tuple(unitArb, nonNegArb);
177
- const productEq = (a, b) => approxEq(a[0], b[0]) && approxEq(a[1], b[1]);
178
- semiringLaws("Product(Trust x Cost)", ps, productArb, productEq, {
179
- idempotentAdd: true,
180
- });
181
- });
182
- // ── Record semiring ────────────────────────────────────────────────
183
- describe("Record{trust, cost, latency} — property-based", () => {
184
- const rs = recordSemiring({
185
- trust: TrustSemiring,
186
- cost: CostSemiring,
187
- latency: LatencySemiring,
188
- });
189
- const recordArb = fc.record({
190
- trust: unitArb,
191
- cost: nonNegArb,
192
- latency: nonNegArb,
193
- });
194
- const recordEq = (a, b) => approxEq(a.trust, b.trust) && approxEq(a.cost, b.cost) && approxEq(a.latency, b.latency);
195
- semiringLaws("Record{trust, cost, latency}", rs, recordArb, recordEq, {
196
- idempotentAdd: true,
197
- });
198
- });
199
- // ── Monotonicity ───────────────────────────────────────────────────
200
- // For semirings where add = max or add = min, verify monotonicity.
201
- describe("monotonicity", () => {
202
- it("TrustSemiring: if a <= b then a + c <= b + c", () => {
203
- fc.assert(fc.property(unitArb, unitArb, unitArb, (a, b, c) => {
204
- if (a > b)
205
- return true; // only test when a <= b
206
- return approxLeq(TrustSemiring.add(a, c), TrustSemiring.add(b, c));
207
- }));
208
- });
209
- it("CostSemiring: if a <= b then a + c <= b + c (min is monotone)", () => {
210
- fc.assert(fc.property(nonNegArb, nonNegArb, nonNegArb, (a, b, c) => {
211
- if (a > b)
212
- return true;
213
- return approxLeq(CostSemiring.add(a, c), CostSemiring.add(b, c));
214
- }));
215
- });
216
- it("ReliabilitySemiring: if a <= b then a + c <= b + c", () => {
217
- fc.assert(fc.property(unitArb, unitArb, unitArb, (a, b, c) => {
218
- if (a > b)
219
- return true;
220
- return approxLeq(ReliabilitySemiring.add(a, c), ReliabilitySemiring.add(b, c));
221
- }));
222
- });
223
- it("BottleneckSemiring: if a <= b then a + c <= b + c", () => {
224
- fc.assert(fc.property(bottleneckArb, bottleneckArb, bottleneckArb, (a, b, c) => {
225
- if (a > b)
226
- return true;
227
- return approxLeq(BottleneckSemiring.add(a, c), BottleneckSemiring.add(b, c));
228
- }));
229
- });
230
- });
231
- //# sourceMappingURL=semiring-laws.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semiring-laws.test.js","sourceRoot":"","sources":["../../src/__tests__/semiring-laws.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,qEAAqE;AACrE,kEAAkE;AAClE,qEAAqE;AACrE,kEAAkE;AAClE,sEAAsE;AACtE,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,6CAA6C;AACrE,SAAS,CAAC,GAAG,EAAE;IACb,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,sEAAsE;AAEtE;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,gCAAgC;IAC1D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,6DAA6D;AAC7D,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,sEAAsE;AAEtE,SAAS,YAAY,CACnB,IAAY,EACZ,EAAe,EACf,GAAoB,EACpB,EAA2B,EAC3B,IAAkC;IAElC,QAAQ,CAAC,GAAG,IAAI,iCAAiC,EAAE,GAAG,EAAE;QACtD,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrC,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrC,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC7B,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC5E,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/C,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/C,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,EAAE,aAAa,EAAE,CAAC;YACxB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;gBACvC,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;oBACrB,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7B,CAAC,CAAC,CACH,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC7B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvB,6CAA6C;gBAC7C,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAW,CAAC,CAAC,CAAC;YACjF,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC7B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvB,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAW,CAAC,CAAC,CAAC;YACjF,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AAEtE,sCAAsC;AACtC,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE3D,+DAA+D;AAC/D,gEAAgE;AAChE,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,CACxB,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAC5C,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACrB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CACf,CAAC;AAEF,oDAAoD;AACpD,MAAM,aAAa,GAAG,EAAE,CAAC,KAAK,CAC5B,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAC5C,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACrB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CACf,CAAC;AAEF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAE7B,sEAAsE;AAEtE,2DAA2D;AAC3D,YAAY,CAAC,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC9D,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAEH,+EAA+E;AAC/E,YAAY,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE;IAC9D,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAEH,gCAAgC;AAChC,YAAY,CAAC,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE;IACpE,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAEH,uCAAuC;AACvC,YAAY,CAAC,wBAAwB,EAAE,sBAAsB,EAAE,SAAS,EAAE,QAAQ,EAAE;IAClF,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAEH,oEAAoE;AACpE,YAAY,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,aAAa,EAAE,QAAQ,EAAE;IAC9E,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAEH,sDAAsD;AACtD,YAAY,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC1E,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAEH,iCAAiC;AACjC,YAAY,CAAC,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;IAC3E,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAEH,sEAAsE;AAEtE,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,MAAM,EAAE,GAAG,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAA4C,CAAC;IAE3F,MAAM,SAAS,GAAG,CAAC,CAA4B,EAAE,CAA4B,EAAE,EAAE,CAC/E,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,YAAY,CAAC,uBAAuB,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;QAC/D,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,sEAAsE;AAEtE,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,MAAM,EAAE,GAAG,cAAc,CAAC;QACxB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC;QAC1B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,CACf,CAAmD,EACnD,CAAmD,EACnD,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAE9F,YAAY,CAAC,8BAA8B,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACpE,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,sEAAsE;AACtE,mEAAmE;AAEnE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,CAAC,wBAAwB;YAChD,OAAO,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACvD,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACvB,OAAO,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACvB,OAAO,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACnE,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACvB,OAAO,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=semiring.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semiring.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/semiring.test.ts"],"names":[],"mappings":""}
@@ -1,201 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { TrustSemiring, CostSemiring, LatencySemiring, BottleneckSemiring, ReliabilitySemiring, BooleanSemiring, RegulatoryRiskSemiring, productSemiring, recordSemiring, mappedSemiring, } from "../index.js";
3
- // Cover the barrel re-export (index.ts line 1+)
4
- import * as barrel from "../index.js";
5
- // ── Semiring Axiom Verification ─────────────────────────────────────
6
- // If the axioms don't hold, every algorithm built on top is wrong.
7
- function verifySemiringAxioms(name, sr, values, eq = (a, b) => a === b) {
8
- describe(`${name} — semiring axioms`, () => {
9
- it("⊕ is commutative: a ⊕ b = b ⊕ a", () => {
10
- for (const a of values) {
11
- for (const b of values) {
12
- expect(eq(sr.add(a, b), sr.add(b, a))).toBe(true);
13
- }
14
- }
15
- });
16
- it("⊕ is associative: (a ⊕ b) ⊕ c = a ⊕ (b ⊕ c)", () => {
17
- for (const a of values) {
18
- for (const b of values) {
19
- for (const c of values) {
20
- expect(eq(sr.add(sr.add(a, b), c), sr.add(a, sr.add(b, c)))).toBe(true);
21
- }
22
- }
23
- }
24
- });
25
- it("0 is additive identity: a ⊕ 0 = a", () => {
26
- for (const a of values) {
27
- expect(eq(sr.add(a, sr.zero), a)).toBe(true);
28
- expect(eq(sr.add(sr.zero, a), a)).toBe(true);
29
- }
30
- });
31
- it("⊗ is associative: (a ⊗ b) ⊗ c = a ⊗ (b ⊗ c)", () => {
32
- for (const a of values) {
33
- for (const b of values) {
34
- for (const c of values) {
35
- const lhs = sr.mul(sr.mul(a, b), c);
36
- const rhs = sr.mul(a, sr.mul(b, c));
37
- expect(eq(lhs, rhs)).toBe(true);
38
- }
39
- }
40
- }
41
- });
42
- it("1 is multiplicative identity: a ⊗ 1 = 1 ⊗ a = a", () => {
43
- for (const a of values) {
44
- expect(eq(sr.mul(a, sr.one), a)).toBe(true);
45
- expect(eq(sr.mul(sr.one, a), a)).toBe(true);
46
- }
47
- });
48
- it("0 annihilates: a ⊗ 0 = 0 ⊗ a = 0", () => {
49
- for (const a of values) {
50
- expect(eq(sr.mul(a, sr.zero), sr.zero)).toBe(true);
51
- expect(eq(sr.mul(sr.zero, a), sr.zero)).toBe(true);
52
- }
53
- });
54
- it("⊗ distributes over ⊕: a ⊗ (b ⊕ c) = (a ⊗ b) ⊕ (a ⊗ c)", () => {
55
- for (const a of values) {
56
- for (const b of values) {
57
- for (const c of values) {
58
- const lhs = sr.mul(a, sr.add(b, c));
59
- const rhs = sr.add(sr.mul(a, b), sr.mul(a, c));
60
- expect(eq(lhs, rhs)).toBe(true);
61
- }
62
- }
63
- }
64
- });
65
- it("right distributivity: (b ⊕ c) ⊗ a = (b ⊗ a) ⊕ (c ⊗ a)", () => {
66
- for (const a of values) {
67
- for (const b of values) {
68
- for (const c of values) {
69
- const lhs = sr.mul(sr.add(b, c), a);
70
- const rhs = sr.add(sr.mul(b, a), sr.mul(c, a));
71
- expect(eq(lhs, rhs)).toBe(true);
72
- }
73
- }
74
- }
75
- });
76
- });
77
- }
78
- // ── Number equality with floating point tolerance ───────────────────
79
- const numEq = (a, b) => Math.abs(a - b) < 1e-10 || a === b;
80
- // ── Run axiom checks on all concrete semirings ──────────────────────
81
- const trustValues = [0, 0.1, 0.3, 0.6, 0.9, 1];
82
- verifySemiringAxioms("TrustSemiring", TrustSemiring, trustValues, numEq);
83
- const costValues = [0, 0.5, 1, 5, 10, Infinity];
84
- verifySemiringAxioms("CostSemiring", CostSemiring, costValues, numEq);
85
- const latencyValues = [0, 100, 500, 1000, Infinity];
86
- verifySemiringAxioms("LatencySemiring", LatencySemiring, latencyValues, numEq);
87
- // RegulatoryRisk: (min, +, ∞, 0) — same algebra as Cost/Latency (tropical)
88
- const riskValues = [0, 0.5, 1, 5, 10, Infinity];
89
- verifySemiringAxioms("RegulatoryRiskSemiring", RegulatoryRiskSemiring, riskValues, numEq);
90
- // Bottleneck: (max, min, 0, ∞) — annihilation check needs special care
91
- // a ⊗ 0 = min(a, 0) = 0 ✓ and a ⊕ 0 = max(a, 0) = a ✓ (for a >= 0)
92
- const bottleneckValues = [0, 0.5, 1, 10, Infinity];
93
- verifySemiringAxioms("BottleneckSemiring", BottleneckSemiring, bottleneckValues, numEq);
94
- verifySemiringAxioms("ReliabilitySemiring", ReliabilitySemiring, trustValues, numEq);
95
- verifySemiringAxioms("BooleanSemiring", BooleanSemiring, [true, false]);
96
- // ── Product Semiring ────────────────────────────────────────────────
97
- describe("productSemiring", () => {
98
- const ps = productSemiring(TrustSemiring, CostSemiring);
99
- it("zero and one are correct", () => {
100
- expect(ps.zero).toEqual([0, Infinity]);
101
- expect(ps.one).toEqual([1, 0]);
102
- });
103
- it("add applies component-wise", () => {
104
- expect(ps.add([0.5, 10], [0.8, 5])).toEqual([0.8, 5]);
105
- });
106
- it("mul applies component-wise", () => {
107
- const result = ps.mul([0.9, 2], [0.8, 3]);
108
- expect(result[0]).toBeCloseTo(0.72); // 0.9 × 0.8
109
- expect(result[1]).toBeCloseTo(5); // 2 + 3
110
- });
111
- // Verify axioms on the product
112
- const productValues = [
113
- [0, Infinity],
114
- [1, 0],
115
- [0.5, 3],
116
- [0.9, 1],
117
- [0.3, 10],
118
- ];
119
- verifySemiringAxioms("Product(Trust × Cost)", ps, [...productValues], (a, b) => numEq(a[0], b[0]) && numEq(a[1], b[1]));
120
- });
121
- // ── Record Semiring ─────────────────────────────────────────────────
122
- describe("recordSemiring", () => {
123
- const rs = recordSemiring({
124
- trust: TrustSemiring,
125
- cost: CostSemiring,
126
- latency: LatencySemiring,
127
- });
128
- it("computes zero and one correctly", () => {
129
- expect(rs.zero).toEqual({ trust: 0, cost: Infinity, latency: Infinity });
130
- expect(rs.one).toEqual({ trust: 1, cost: 0, latency: 0 });
131
- });
132
- it("add picks best per dimension", () => {
133
- const a = { trust: 0.5, cost: 10, latency: 200 };
134
- const b = { trust: 0.8, cost: 5, latency: 300 };
135
- const result = rs.add(a, b);
136
- expect(result.trust).toBe(0.8); // max
137
- expect(result.cost).toBe(5); // min
138
- expect(result.latency).toBe(200); // min
139
- });
140
- it("mul composes per dimension", () => {
141
- const a = { trust: 0.9, cost: 2, latency: 100 };
142
- const b = { trust: 0.8, cost: 3, latency: 200 };
143
- const result = rs.mul(a, b);
144
- expect(result.trust).toBeCloseTo(0.72); // ×
145
- expect(result.cost).toBe(5); // +
146
- expect(result.latency).toBe(300); // +
147
- });
148
- });
149
- // ── Mapped Semiring ─────────────────────────────────────────────────
150
- describe("barrel re-export (index.ts)", () => {
151
- it("exports all MIT protocol symbols", () => {
152
- expect(barrel.TrustSemiring).toBeDefined();
153
- expect(barrel.CostSemiring).toBeDefined();
154
- expect(barrel.WeightedDigraph).toBeDefined();
155
- expect(barrel.optimalPaths).toBeDefined();
156
- // ProvenanceSemiring, buildAgentGraph, addDelegationEdges, RouteWeightSemiring
157
- // are BSL exports from @motebit/semiring — tested there, not here.
158
- });
159
- });
160
- describe("mappedSemiring", () => {
161
- // Map cost semiring through milliseconds ↔ seconds conversion
162
- const SecondsCost = mappedSemiring(CostSemiring, (ms) => ms / 1000, (s) => s * 1000);
163
- it("preserves semiring structure through isomorphism", () => {
164
- expect(SecondsCost.zero).toBe(Infinity);
165
- expect(SecondsCost.one).toBe(0);
166
- expect(SecondsCost.add(5, 3)).toBe(3); // min
167
- expect(SecondsCost.mul(2, 3)).toBe(5); // mapped: (2000+3000)/1000
168
- });
169
- it("eq delegates through the mapping", () => {
170
- expect(SecondsCost.eq(3, 3)).toBe(true);
171
- expect(SecondsCost.eq(3, 4)).toBe(false);
172
- });
173
- });
174
- // ── Semiring eq (value equality for convergence) ────────────────────
175
- describe("Semiring eq — value equality for compound semirings", () => {
176
- it("productSemiring eq compares both components", () => {
177
- const TC = productSemiring(TrustSemiring, CostSemiring);
178
- expect(TC.eq([0.8, 10], [0.8, 10])).toBe(true);
179
- expect(TC.eq([0.8, 10], [0.9, 10])).toBe(false);
180
- expect(TC.eq([0.8, 10], [0.8, 11])).toBe(false);
181
- });
182
- it("recordSemiring eq compares all fields", () => {
183
- const Multi = recordSemiring({ trust: TrustSemiring, cost: CostSemiring });
184
- expect(Multi.eq({ trust: 0.5, cost: 10 }, { trust: 0.5, cost: 10 })).toBe(true);
185
- expect(Multi.eq({ trust: 0.5, cost: 10 }, { trust: 0.6, cost: 10 })).toBe(false);
186
- expect(Multi.eq({ trust: 0.5, cost: 10 }, { trust: 0.5, cost: 11 })).toBe(false);
187
- });
188
- it("recordSemiring with nested eq propagates through fields", () => {
189
- // Build a record where one field is itself a product (has non-trivial eq)
190
- const Inner = productSemiring(TrustSemiring, CostSemiring);
191
- const Outer = recordSemiring({ inner: Inner, lat: LatencySemiring });
192
- expect(Outer.eq({ inner: [0.5, 3], lat: 10 }, { inner: [0.5, 3], lat: 10 })).toBe(true);
193
- expect(Outer.eq({ inner: [0.5, 3], lat: 10 }, { inner: [0.5, 4], lat: 10 })).toBe(false);
194
- });
195
- it("primitive semirings do not define eq (defaults to ===)", () => {
196
- expect(TrustSemiring.eq).toBeUndefined();
197
- expect(CostSemiring.eq).toBeUndefined();
198
- expect(BooleanSemiring.eq).toBeUndefined();
199
- });
200
- });
201
- //# sourceMappingURL=semiring.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semiring.test.js","sourceRoot":"","sources":["../../src/__tests__/semiring.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=traversal.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traversal.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/traversal.test.ts"],"names":[],"mappings":""}