ruflo-graph-intelligence 0.1.0-alpha.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 (126) hide show
  1. package/.claude-flow/data/pending-insights.jsonl +30 -0
  2. package/dist/adapters/aidefence-suspicion-adapter.d.ts +40 -0
  3. package/dist/adapters/aidefence-suspicion-adapter.d.ts.map +1 -0
  4. package/dist/adapters/aidefence-suspicion-adapter.js +77 -0
  5. package/dist/adapters/aidefence-suspicion-adapter.js.map +1 -0
  6. package/dist/adapters/browser-causal-adapter.d.ts +83 -0
  7. package/dist/adapters/browser-causal-adapter.d.ts.map +1 -0
  8. package/dist/adapters/browser-causal-adapter.js +146 -0
  9. package/dist/adapters/browser-causal-adapter.js.map +1 -0
  10. package/dist/adapters/cost-attribution-adapter.d.ts +48 -0
  11. package/dist/adapters/cost-attribution-adapter.d.ts.map +1 -0
  12. package/dist/adapters/cost-attribution-adapter.js +95 -0
  13. package/dist/adapters/cost-attribution-adapter.js.map +1 -0
  14. package/dist/adapters/federation-trust-adapter.d.ts +49 -0
  15. package/dist/adapters/federation-trust-adapter.d.ts.map +1 -0
  16. package/dist/adapters/federation-trust-adapter.js +82 -0
  17. package/dist/adapters/federation-trust-adapter.js.map +1 -0
  18. package/dist/adapters/index.d.ts +16 -0
  19. package/dist/adapters/index.d.ts.map +1 -0
  20. package/dist/adapters/index.js +16 -0
  21. package/dist/adapters/index.js.map +1 -0
  22. package/dist/adapters/jujutsu-blast-radius-adapter.d.ts +46 -0
  23. package/dist/adapters/jujutsu-blast-radius-adapter.d.ts.map +1 -0
  24. package/dist/adapters/jujutsu-blast-radius-adapter.js +80 -0
  25. package/dist/adapters/jujutsu-blast-radius-adapter.js.map +1 -0
  26. package/dist/adapters/knowledge-graph-adapter.d.ts +41 -0
  27. package/dist/adapters/knowledge-graph-adapter.d.ts.map +1 -0
  28. package/dist/adapters/knowledge-graph-adapter.js +83 -0
  29. package/dist/adapters/knowledge-graph-adapter.js.map +1 -0
  30. package/dist/adapters/observability-span-adapter.d.ts +45 -0
  31. package/dist/adapters/observability-span-adapter.d.ts.map +1 -0
  32. package/dist/adapters/observability-span-adapter.js +97 -0
  33. package/dist/adapters/observability-span-adapter.js.map +1 -0
  34. package/dist/adapters/portfolio-cg-adapter.d.ts +60 -0
  35. package/dist/adapters/portfolio-cg-adapter.d.ts.map +1 -0
  36. package/dist/adapters/portfolio-cg-adapter.js +102 -0
  37. package/dist/adapters/portfolio-cg-adapter.js.map +1 -0
  38. package/dist/adapters/rag-memory-adapter.d.ts +49 -0
  39. package/dist/adapters/rag-memory-adapter.d.ts.map +1 -0
  40. package/dist/adapters/rag-memory-adapter.js +86 -0
  41. package/dist/adapters/rag-memory-adapter.js.map +1 -0
  42. package/dist/application/federation-client.d.ts +54 -0
  43. package/dist/application/federation-client.d.ts.map +1 -0
  44. package/dist/application/federation-client.js +101 -0
  45. package/dist/application/federation-client.js.map +1 -0
  46. package/dist/application/federation-server.d.ts +38 -0
  47. package/dist/application/federation-server.d.ts.map +1 -0
  48. package/dist/application/federation-server.js +127 -0
  49. package/dist/application/federation-server.js.map +1 -0
  50. package/dist/application/streaming-bridge.d.ts +62 -0
  51. package/dist/application/streaming-bridge.d.ts.map +1 -0
  52. package/dist/application/streaming-bridge.js +101 -0
  53. package/dist/application/streaming-bridge.js.map +1 -0
  54. package/dist/domain/adapter.d.ts +58 -0
  55. package/dist/domain/adapter.d.ts.map +1 -0
  56. package/dist/domain/adapter.js +43 -0
  57. package/dist/domain/adapter.js.map +1 -0
  58. package/dist/domain/federation-protocol.d.ts +857 -0
  59. package/dist/domain/federation-protocol.d.ts.map +1 -0
  60. package/dist/domain/federation-protocol.js +72 -0
  61. package/dist/domain/federation-protocol.js.map +1 -0
  62. package/dist/domain/signed-artifact.d.ts +429 -0
  63. package/dist/domain/signed-artifact.d.ts.map +1 -0
  64. package/dist/domain/signed-artifact.js +57 -0
  65. package/dist/domain/signed-artifact.js.map +1 -0
  66. package/dist/domain/types.d.ts +329 -0
  67. package/dist/domain/types.d.ts.map +1 -0
  68. package/dist/domain/types.js +165 -0
  69. package/dist/domain/types.js.map +1 -0
  70. package/dist/index.d.ts +31 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +37 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/infrastructure/jl-embed.d.ts +27 -0
  75. package/dist/infrastructure/jl-embed.d.ts.map +1 -0
  76. package/dist/infrastructure/jl-embed.js +79 -0
  77. package/dist/infrastructure/jl-embed.js.map +1 -0
  78. package/dist/infrastructure/solver-bridge.d.ts +73 -0
  79. package/dist/infrastructure/solver-bridge.d.ts.map +1 -0
  80. package/dist/infrastructure/solver-bridge.js +359 -0
  81. package/dist/infrastructure/solver-bridge.js.map +1 -0
  82. package/dist/infrastructure/witness-signer.d.ts +44 -0
  83. package/dist/infrastructure/witness-signer.d.ts.map +1 -0
  84. package/dist/infrastructure/witness-signer.js +158 -0
  85. package/dist/infrastructure/witness-signer.js.map +1 -0
  86. package/dist/mcp-tools/index.d.ts +27 -0
  87. package/dist/mcp-tools/index.d.ts.map +1 -0
  88. package/dist/mcp-tools/index.js +292 -0
  89. package/dist/mcp-tools/index.js.map +1 -0
  90. package/package.json +55 -0
  91. package/ruvector.db +0 -0
  92. package/src/adapters/aidefence-suspicion-adapter.ts +102 -0
  93. package/src/adapters/browser-causal-adapter.ts +193 -0
  94. package/src/adapters/cost-attribution-adapter.ts +123 -0
  95. package/src/adapters/federation-trust-adapter.ts +116 -0
  96. package/src/adapters/index.ts +87 -0
  97. package/src/adapters/jujutsu-blast-radius-adapter.ts +107 -0
  98. package/src/adapters/knowledge-graph-adapter.ts +110 -0
  99. package/src/adapters/observability-span-adapter.ts +123 -0
  100. package/src/adapters/portfolio-cg-adapter.ts +140 -0
  101. package/src/adapters/rag-memory-adapter.ts +117 -0
  102. package/src/application/federation-client.ts +147 -0
  103. package/src/application/federation-server.ts +158 -0
  104. package/src/application/streaming-bridge.ts +137 -0
  105. package/src/domain/adapter.ts +92 -0
  106. package/src/domain/federation-protocol.ts +95 -0
  107. package/src/domain/signed-artifact.ts +80 -0
  108. package/src/domain/types.ts +215 -0
  109. package/src/index.ts +105 -0
  110. package/src/infrastructure/jl-embed.ts +98 -0
  111. package/src/infrastructure/solver-bridge.ts +389 -0
  112. package/src/infrastructure/witness-signer.ts +209 -0
  113. package/src/mcp-tools/index.ts +316 -0
  114. package/tests/adapter-registry.test.ts +69 -0
  115. package/tests/browser-causal-adapter.test.ts +174 -0
  116. package/tests/mcp-tools.test.ts +169 -0
  117. package/tests/phase3-adapters.test.ts +206 -0
  118. package/tests/phase4-adapters.test.ts +158 -0
  119. package/tests/phase5-portfolio.test.ts +122 -0
  120. package/tests/phase6-adapters.test.ts +224 -0
  121. package/tests/phase6_5-streaming.test.ts +135 -0
  122. package/tests/phase7-signed-artifact.test.ts +238 -0
  123. package/tests/phase8-federation.test.ts +194 -0
  124. package/tests/solver-bridge.test.ts +255 -0
  125. package/tsconfig.json +21 -0
  126. package/vitest.config.ts +9 -0
@@ -0,0 +1,857 @@
1
+ /**
2
+ * Federation Protocol for PR Artifacts (Phase 8 — beyond-SOTA, ADR-123)
3
+ *
4
+ * Wire message types over the ADR-104 federation transport. Peers can ask
5
+ * for a precomputed signed PageRank vector instead of re-walking the graph,
6
+ * verify via the Phase 7 signer, and fall back to local recompute when the
7
+ * artifact is stale (graphHash mismatch) or the holder isn't trusted.
8
+ */
9
+ import { z } from 'zod';
10
+ export declare const PrArtifactRequestSchema: z.ZodObject<{
11
+ type: z.ZodLiteral<"pr_artifact_request">;
12
+ /** Requesting installation id. */
13
+ fromInstallation: z.ZodString;
14
+ /** Adapter graph id to query. */
15
+ graphId: z.ZodString;
16
+ /** Query node for single-entry PR. Omit for full-vector requests. */
17
+ queryNode: z.ZodOptional<z.ZodString>;
18
+ alpha: z.ZodDefault<z.ZodNumber>;
19
+ epsilon: z.ZodDefault<z.ZodNumber>;
20
+ seedNodes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
21
+ /** Hash of the graph the requester has locally. Holder uses this to decide
22
+ * whether to ship a fresh artifact or a delta. */
23
+ lastKnownGraphHash: z.ZodOptional<z.ZodString>;
24
+ /** Hash of any previous PR result the requester has cached. */
25
+ lastKnownResultHash: z.ZodOptional<z.ZodString>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ type: "pr_artifact_request";
28
+ graphId: string;
29
+ alpha: number;
30
+ epsilon: number;
31
+ seedNodes: string[];
32
+ fromInstallation: string;
33
+ queryNode?: string | undefined;
34
+ lastKnownGraphHash?: string | undefined;
35
+ lastKnownResultHash?: string | undefined;
36
+ }, {
37
+ type: "pr_artifact_request";
38
+ graphId: string;
39
+ fromInstallation: string;
40
+ alpha?: number | undefined;
41
+ epsilon?: number | undefined;
42
+ seedNodes?: string[] | undefined;
43
+ queryNode?: string | undefined;
44
+ lastKnownGraphHash?: string | undefined;
45
+ lastKnownResultHash?: string | undefined;
46
+ }>;
47
+ export type PrArtifactRequest = z.infer<typeof PrArtifactRequestSchema>;
48
+ export declare const PrArtifactResponseSchema: z.ZodObject<{
49
+ type: z.ZodLiteral<"pr_artifact_response">;
50
+ /** Responding installation id. */
51
+ fromInstallation: z.ZodString;
52
+ /** The Phase 7 signed envelope. */
53
+ envelope: z.ZodObject<{
54
+ payload: z.ZodObject<{
55
+ envelopeVersion: z.ZodLiteral<"1.0.0">;
56
+ kind: z.ZodLiteral<"pagerank">;
57
+ installationId: z.ZodString;
58
+ witnessKeyId: z.ZodString;
59
+ publicKey: z.ZodString;
60
+ graphId: z.ZodString;
61
+ graphHash: z.ZodString;
62
+ graphTimestamp: z.ZodString;
63
+ algorithm: z.ZodEnum<["forward-push", "backward-push", "bidirectional", "cg", "neumann"]>;
64
+ alpha: z.ZodNumber;
65
+ epsilon: z.ZodNumber;
66
+ queryNode: z.ZodOptional<z.ZodString>;
67
+ seedNodes: z.ZodArray<z.ZodString, "many">;
68
+ result: z.ZodObject<{
69
+ graphId: z.ZodString;
70
+ nodeId: z.ZodString;
71
+ score: z.ZodNumber;
72
+ alpha: z.ZodNumber;
73
+ epsilon: z.ZodNumber;
74
+ iterations: z.ZodNumber;
75
+ complexityClass: z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>;
76
+ coherence: z.ZodObject<{
77
+ score: z.ZodNumber;
78
+ passed: z.ZodBoolean;
79
+ threshold: z.ZodNumber;
80
+ }, "strip", z.ZodTypeAny, {
81
+ score: number;
82
+ passed: boolean;
83
+ threshold: number;
84
+ }, {
85
+ score: number;
86
+ passed: boolean;
87
+ threshold: number;
88
+ }>;
89
+ computedAt: z.ZodString;
90
+ resultHash: z.ZodString;
91
+ }, "strip", z.ZodTypeAny, {
92
+ graphId: string;
93
+ score: number;
94
+ nodeId: string;
95
+ alpha: number;
96
+ epsilon: number;
97
+ iterations: number;
98
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
99
+ coherence: {
100
+ score: number;
101
+ passed: boolean;
102
+ threshold: number;
103
+ };
104
+ computedAt: string;
105
+ resultHash: string;
106
+ }, {
107
+ graphId: string;
108
+ score: number;
109
+ nodeId: string;
110
+ alpha: number;
111
+ epsilon: number;
112
+ iterations: number;
113
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
114
+ coherence: {
115
+ score: number;
116
+ passed: boolean;
117
+ threshold: number;
118
+ };
119
+ computedAt: string;
120
+ resultHash: string;
121
+ }>;
122
+ complexityClass: z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>;
123
+ coherenceScore: z.ZodNumber;
124
+ resultHash: z.ZodString;
125
+ sealedAt: z.ZodString;
126
+ solverVersion: z.ZodDefault<z.ZodString>;
127
+ }, "strip", z.ZodTypeAny, {
128
+ graphId: string;
129
+ alpha: number;
130
+ epsilon: number;
131
+ seedNodes: string[];
132
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
133
+ resultHash: string;
134
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
135
+ result: {
136
+ graphId: string;
137
+ score: number;
138
+ nodeId: string;
139
+ alpha: number;
140
+ epsilon: number;
141
+ iterations: number;
142
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
143
+ coherence: {
144
+ score: number;
145
+ passed: boolean;
146
+ threshold: number;
147
+ };
148
+ computedAt: string;
149
+ resultHash: string;
150
+ };
151
+ envelopeVersion: "1.0.0";
152
+ kind: "pagerank";
153
+ installationId: string;
154
+ witnessKeyId: string;
155
+ publicKey: string;
156
+ graphHash: string;
157
+ graphTimestamp: string;
158
+ coherenceScore: number;
159
+ sealedAt: string;
160
+ solverVersion: string;
161
+ queryNode?: string | undefined;
162
+ }, {
163
+ graphId: string;
164
+ alpha: number;
165
+ epsilon: number;
166
+ seedNodes: string[];
167
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
168
+ resultHash: string;
169
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
170
+ result: {
171
+ graphId: string;
172
+ score: number;
173
+ nodeId: string;
174
+ alpha: number;
175
+ epsilon: number;
176
+ iterations: number;
177
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
178
+ coherence: {
179
+ score: number;
180
+ passed: boolean;
181
+ threshold: number;
182
+ };
183
+ computedAt: string;
184
+ resultHash: string;
185
+ };
186
+ envelopeVersion: "1.0.0";
187
+ kind: "pagerank";
188
+ installationId: string;
189
+ witnessKeyId: string;
190
+ publicKey: string;
191
+ graphHash: string;
192
+ graphTimestamp: string;
193
+ coherenceScore: number;
194
+ sealedAt: string;
195
+ queryNode?: string | undefined;
196
+ solverVersion?: string | undefined;
197
+ }>;
198
+ signature: z.ZodString;
199
+ algorithm: z.ZodLiteral<"ed25519">;
200
+ }, "strip", z.ZodTypeAny, {
201
+ algorithm: "ed25519";
202
+ payload: {
203
+ graphId: string;
204
+ alpha: number;
205
+ epsilon: number;
206
+ seedNodes: string[];
207
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
208
+ resultHash: string;
209
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
210
+ result: {
211
+ graphId: string;
212
+ score: number;
213
+ nodeId: string;
214
+ alpha: number;
215
+ epsilon: number;
216
+ iterations: number;
217
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
218
+ coherence: {
219
+ score: number;
220
+ passed: boolean;
221
+ threshold: number;
222
+ };
223
+ computedAt: string;
224
+ resultHash: string;
225
+ };
226
+ envelopeVersion: "1.0.0";
227
+ kind: "pagerank";
228
+ installationId: string;
229
+ witnessKeyId: string;
230
+ publicKey: string;
231
+ graphHash: string;
232
+ graphTimestamp: string;
233
+ coherenceScore: number;
234
+ sealedAt: string;
235
+ solverVersion: string;
236
+ queryNode?: string | undefined;
237
+ };
238
+ signature: string;
239
+ }, {
240
+ algorithm: "ed25519";
241
+ payload: {
242
+ graphId: string;
243
+ alpha: number;
244
+ epsilon: number;
245
+ seedNodes: string[];
246
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
247
+ resultHash: string;
248
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
249
+ result: {
250
+ graphId: string;
251
+ score: number;
252
+ nodeId: string;
253
+ alpha: number;
254
+ epsilon: number;
255
+ iterations: number;
256
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
257
+ coherence: {
258
+ score: number;
259
+ passed: boolean;
260
+ threshold: number;
261
+ };
262
+ computedAt: string;
263
+ resultHash: string;
264
+ };
265
+ envelopeVersion: "1.0.0";
266
+ kind: "pagerank";
267
+ installationId: string;
268
+ witnessKeyId: string;
269
+ publicKey: string;
270
+ graphHash: string;
271
+ graphTimestamp: string;
272
+ coherenceScore: number;
273
+ sealedAt: string;
274
+ queryNode?: string | undefined;
275
+ solverVersion?: string | undefined;
276
+ };
277
+ signature: string;
278
+ }>;
279
+ }, "strip", z.ZodTypeAny, {
280
+ type: "pr_artifact_response";
281
+ fromInstallation: string;
282
+ envelope: {
283
+ algorithm: "ed25519";
284
+ payload: {
285
+ graphId: string;
286
+ alpha: number;
287
+ epsilon: number;
288
+ seedNodes: string[];
289
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
290
+ resultHash: string;
291
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
292
+ result: {
293
+ graphId: string;
294
+ score: number;
295
+ nodeId: string;
296
+ alpha: number;
297
+ epsilon: number;
298
+ iterations: number;
299
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
300
+ coherence: {
301
+ score: number;
302
+ passed: boolean;
303
+ threshold: number;
304
+ };
305
+ computedAt: string;
306
+ resultHash: string;
307
+ };
308
+ envelopeVersion: "1.0.0";
309
+ kind: "pagerank";
310
+ installationId: string;
311
+ witnessKeyId: string;
312
+ publicKey: string;
313
+ graphHash: string;
314
+ graphTimestamp: string;
315
+ coherenceScore: number;
316
+ sealedAt: string;
317
+ solverVersion: string;
318
+ queryNode?: string | undefined;
319
+ };
320
+ signature: string;
321
+ };
322
+ }, {
323
+ type: "pr_artifact_response";
324
+ fromInstallation: string;
325
+ envelope: {
326
+ algorithm: "ed25519";
327
+ payload: {
328
+ graphId: string;
329
+ alpha: number;
330
+ epsilon: number;
331
+ seedNodes: string[];
332
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
333
+ resultHash: string;
334
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
335
+ result: {
336
+ graphId: string;
337
+ score: number;
338
+ nodeId: string;
339
+ alpha: number;
340
+ epsilon: number;
341
+ iterations: number;
342
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
343
+ coherence: {
344
+ score: number;
345
+ passed: boolean;
346
+ threshold: number;
347
+ };
348
+ computedAt: string;
349
+ resultHash: string;
350
+ };
351
+ envelopeVersion: "1.0.0";
352
+ kind: "pagerank";
353
+ installationId: string;
354
+ witnessKeyId: string;
355
+ publicKey: string;
356
+ graphHash: string;
357
+ graphTimestamp: string;
358
+ coherenceScore: number;
359
+ sealedAt: string;
360
+ queryNode?: string | undefined;
361
+ solverVersion?: string | undefined;
362
+ };
363
+ signature: string;
364
+ };
365
+ }>;
366
+ export type PrArtifactResponse = z.infer<typeof PrArtifactResponseSchema>;
367
+ /** Lightweight delta — only the score difference + new resultHash. */
368
+ export declare const PrArtifactDeltaSchema: z.ZodObject<{
369
+ type: z.ZodLiteral<"pr_artifact_delta">;
370
+ fromInstallation: z.ZodString;
371
+ graphId: z.ZodString;
372
+ /** Hash the delta is based on. */
373
+ baseResultHash: z.ZodString;
374
+ /** New resultHash after delta applied. */
375
+ newResultHash: z.ZodString;
376
+ /** Score delta (single-entry) or sparse delta indices+values (vector). */
377
+ scoreDelta: z.ZodOptional<z.ZodNumber>;
378
+ sparseDelta: z.ZodOptional<z.ZodObject<{
379
+ indices: z.ZodArray<z.ZodNumber, "many">;
380
+ values: z.ZodArray<z.ZodNumber, "many">;
381
+ }, "strip", z.ZodTypeAny, {
382
+ values: number[];
383
+ indices: number[];
384
+ }, {
385
+ values: number[];
386
+ indices: number[];
387
+ }>>;
388
+ }, "strip", z.ZodTypeAny, {
389
+ type: "pr_artifact_delta";
390
+ graphId: string;
391
+ fromInstallation: string;
392
+ baseResultHash: string;
393
+ newResultHash: string;
394
+ scoreDelta?: number | undefined;
395
+ sparseDelta?: {
396
+ values: number[];
397
+ indices: number[];
398
+ } | undefined;
399
+ }, {
400
+ type: "pr_artifact_delta";
401
+ graphId: string;
402
+ fromInstallation: string;
403
+ baseResultHash: string;
404
+ newResultHash: string;
405
+ scoreDelta?: number | undefined;
406
+ sparseDelta?: {
407
+ values: number[];
408
+ indices: number[];
409
+ } | undefined;
410
+ }>;
411
+ export type PrArtifactDelta = z.infer<typeof PrArtifactDeltaSchema>;
412
+ export declare const PrArtifactStaleSchema: z.ZodObject<{
413
+ type: z.ZodLiteral<"pr_artifact_stale">;
414
+ fromInstallation: z.ZodString;
415
+ graphId: z.ZodString;
416
+ /** The holder's current graph hash so the requester can decide what to do. */
417
+ currentGraphHash: z.ZodString;
418
+ /** Why the request was stale-rejected. */
419
+ reason: z.ZodString;
420
+ }, "strip", z.ZodTypeAny, {
421
+ type: "pr_artifact_stale";
422
+ graphId: string;
423
+ fromInstallation: string;
424
+ currentGraphHash: string;
425
+ reason: string;
426
+ }, {
427
+ type: "pr_artifact_stale";
428
+ graphId: string;
429
+ fromInstallation: string;
430
+ currentGraphHash: string;
431
+ reason: string;
432
+ }>;
433
+ export type PrArtifactStale = z.infer<typeof PrArtifactStaleSchema>;
434
+ export declare const FederationMessageSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
435
+ type: z.ZodLiteral<"pr_artifact_request">;
436
+ /** Requesting installation id. */
437
+ fromInstallation: z.ZodString;
438
+ /** Adapter graph id to query. */
439
+ graphId: z.ZodString;
440
+ /** Query node for single-entry PR. Omit for full-vector requests. */
441
+ queryNode: z.ZodOptional<z.ZodString>;
442
+ alpha: z.ZodDefault<z.ZodNumber>;
443
+ epsilon: z.ZodDefault<z.ZodNumber>;
444
+ seedNodes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
445
+ /** Hash of the graph the requester has locally. Holder uses this to decide
446
+ * whether to ship a fresh artifact or a delta. */
447
+ lastKnownGraphHash: z.ZodOptional<z.ZodString>;
448
+ /** Hash of any previous PR result the requester has cached. */
449
+ lastKnownResultHash: z.ZodOptional<z.ZodString>;
450
+ }, "strip", z.ZodTypeAny, {
451
+ type: "pr_artifact_request";
452
+ graphId: string;
453
+ alpha: number;
454
+ epsilon: number;
455
+ seedNodes: string[];
456
+ fromInstallation: string;
457
+ queryNode?: string | undefined;
458
+ lastKnownGraphHash?: string | undefined;
459
+ lastKnownResultHash?: string | undefined;
460
+ }, {
461
+ type: "pr_artifact_request";
462
+ graphId: string;
463
+ fromInstallation: string;
464
+ alpha?: number | undefined;
465
+ epsilon?: number | undefined;
466
+ seedNodes?: string[] | undefined;
467
+ queryNode?: string | undefined;
468
+ lastKnownGraphHash?: string | undefined;
469
+ lastKnownResultHash?: string | undefined;
470
+ }>, z.ZodObject<{
471
+ type: z.ZodLiteral<"pr_artifact_response">;
472
+ /** Responding installation id. */
473
+ fromInstallation: z.ZodString;
474
+ /** The Phase 7 signed envelope. */
475
+ envelope: z.ZodObject<{
476
+ payload: z.ZodObject<{
477
+ envelopeVersion: z.ZodLiteral<"1.0.0">;
478
+ kind: z.ZodLiteral<"pagerank">;
479
+ installationId: z.ZodString;
480
+ witnessKeyId: z.ZodString;
481
+ publicKey: z.ZodString;
482
+ graphId: z.ZodString;
483
+ graphHash: z.ZodString;
484
+ graphTimestamp: z.ZodString;
485
+ algorithm: z.ZodEnum<["forward-push", "backward-push", "bidirectional", "cg", "neumann"]>;
486
+ alpha: z.ZodNumber;
487
+ epsilon: z.ZodNumber;
488
+ queryNode: z.ZodOptional<z.ZodString>;
489
+ seedNodes: z.ZodArray<z.ZodString, "many">;
490
+ result: z.ZodObject<{
491
+ graphId: z.ZodString;
492
+ nodeId: z.ZodString;
493
+ score: z.ZodNumber;
494
+ alpha: z.ZodNumber;
495
+ epsilon: z.ZodNumber;
496
+ iterations: z.ZodNumber;
497
+ complexityClass: z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>;
498
+ coherence: z.ZodObject<{
499
+ score: z.ZodNumber;
500
+ passed: z.ZodBoolean;
501
+ threshold: z.ZodNumber;
502
+ }, "strip", z.ZodTypeAny, {
503
+ score: number;
504
+ passed: boolean;
505
+ threshold: number;
506
+ }, {
507
+ score: number;
508
+ passed: boolean;
509
+ threshold: number;
510
+ }>;
511
+ computedAt: z.ZodString;
512
+ resultHash: z.ZodString;
513
+ }, "strip", z.ZodTypeAny, {
514
+ graphId: string;
515
+ score: number;
516
+ nodeId: string;
517
+ alpha: number;
518
+ epsilon: number;
519
+ iterations: number;
520
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
521
+ coherence: {
522
+ score: number;
523
+ passed: boolean;
524
+ threshold: number;
525
+ };
526
+ computedAt: string;
527
+ resultHash: string;
528
+ }, {
529
+ graphId: string;
530
+ score: number;
531
+ nodeId: string;
532
+ alpha: number;
533
+ epsilon: number;
534
+ iterations: number;
535
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
536
+ coherence: {
537
+ score: number;
538
+ passed: boolean;
539
+ threshold: number;
540
+ };
541
+ computedAt: string;
542
+ resultHash: string;
543
+ }>;
544
+ complexityClass: z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>;
545
+ coherenceScore: z.ZodNumber;
546
+ resultHash: z.ZodString;
547
+ sealedAt: z.ZodString;
548
+ solverVersion: z.ZodDefault<z.ZodString>;
549
+ }, "strip", z.ZodTypeAny, {
550
+ graphId: string;
551
+ alpha: number;
552
+ epsilon: number;
553
+ seedNodes: string[];
554
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
555
+ resultHash: string;
556
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
557
+ result: {
558
+ graphId: string;
559
+ score: number;
560
+ nodeId: string;
561
+ alpha: number;
562
+ epsilon: number;
563
+ iterations: number;
564
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
565
+ coherence: {
566
+ score: number;
567
+ passed: boolean;
568
+ threshold: number;
569
+ };
570
+ computedAt: string;
571
+ resultHash: string;
572
+ };
573
+ envelopeVersion: "1.0.0";
574
+ kind: "pagerank";
575
+ installationId: string;
576
+ witnessKeyId: string;
577
+ publicKey: string;
578
+ graphHash: string;
579
+ graphTimestamp: string;
580
+ coherenceScore: number;
581
+ sealedAt: string;
582
+ solverVersion: string;
583
+ queryNode?: string | undefined;
584
+ }, {
585
+ graphId: string;
586
+ alpha: number;
587
+ epsilon: number;
588
+ seedNodes: string[];
589
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
590
+ resultHash: string;
591
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
592
+ result: {
593
+ graphId: string;
594
+ score: number;
595
+ nodeId: string;
596
+ alpha: number;
597
+ epsilon: number;
598
+ iterations: number;
599
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
600
+ coherence: {
601
+ score: number;
602
+ passed: boolean;
603
+ threshold: number;
604
+ };
605
+ computedAt: string;
606
+ resultHash: string;
607
+ };
608
+ envelopeVersion: "1.0.0";
609
+ kind: "pagerank";
610
+ installationId: string;
611
+ witnessKeyId: string;
612
+ publicKey: string;
613
+ graphHash: string;
614
+ graphTimestamp: string;
615
+ coherenceScore: number;
616
+ sealedAt: string;
617
+ queryNode?: string | undefined;
618
+ solverVersion?: string | undefined;
619
+ }>;
620
+ signature: z.ZodString;
621
+ algorithm: z.ZodLiteral<"ed25519">;
622
+ }, "strip", z.ZodTypeAny, {
623
+ algorithm: "ed25519";
624
+ payload: {
625
+ graphId: string;
626
+ alpha: number;
627
+ epsilon: number;
628
+ seedNodes: string[];
629
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
630
+ resultHash: string;
631
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
632
+ result: {
633
+ graphId: string;
634
+ score: number;
635
+ nodeId: string;
636
+ alpha: number;
637
+ epsilon: number;
638
+ iterations: number;
639
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
640
+ coherence: {
641
+ score: number;
642
+ passed: boolean;
643
+ threshold: number;
644
+ };
645
+ computedAt: string;
646
+ resultHash: string;
647
+ };
648
+ envelopeVersion: "1.0.0";
649
+ kind: "pagerank";
650
+ installationId: string;
651
+ witnessKeyId: string;
652
+ publicKey: string;
653
+ graphHash: string;
654
+ graphTimestamp: string;
655
+ coherenceScore: number;
656
+ sealedAt: string;
657
+ solverVersion: string;
658
+ queryNode?: string | undefined;
659
+ };
660
+ signature: string;
661
+ }, {
662
+ algorithm: "ed25519";
663
+ payload: {
664
+ graphId: string;
665
+ alpha: number;
666
+ epsilon: number;
667
+ seedNodes: string[];
668
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
669
+ resultHash: string;
670
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
671
+ result: {
672
+ graphId: string;
673
+ score: number;
674
+ nodeId: string;
675
+ alpha: number;
676
+ epsilon: number;
677
+ iterations: number;
678
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
679
+ coherence: {
680
+ score: number;
681
+ passed: boolean;
682
+ threshold: number;
683
+ };
684
+ computedAt: string;
685
+ resultHash: string;
686
+ };
687
+ envelopeVersion: "1.0.0";
688
+ kind: "pagerank";
689
+ installationId: string;
690
+ witnessKeyId: string;
691
+ publicKey: string;
692
+ graphHash: string;
693
+ graphTimestamp: string;
694
+ coherenceScore: number;
695
+ sealedAt: string;
696
+ queryNode?: string | undefined;
697
+ solverVersion?: string | undefined;
698
+ };
699
+ signature: string;
700
+ }>;
701
+ }, "strip", z.ZodTypeAny, {
702
+ type: "pr_artifact_response";
703
+ fromInstallation: string;
704
+ envelope: {
705
+ algorithm: "ed25519";
706
+ payload: {
707
+ graphId: string;
708
+ alpha: number;
709
+ epsilon: number;
710
+ seedNodes: string[];
711
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
712
+ resultHash: string;
713
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
714
+ result: {
715
+ graphId: string;
716
+ score: number;
717
+ nodeId: string;
718
+ alpha: number;
719
+ epsilon: number;
720
+ iterations: number;
721
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
722
+ coherence: {
723
+ score: number;
724
+ passed: boolean;
725
+ threshold: number;
726
+ };
727
+ computedAt: string;
728
+ resultHash: string;
729
+ };
730
+ envelopeVersion: "1.0.0";
731
+ kind: "pagerank";
732
+ installationId: string;
733
+ witnessKeyId: string;
734
+ publicKey: string;
735
+ graphHash: string;
736
+ graphTimestamp: string;
737
+ coherenceScore: number;
738
+ sealedAt: string;
739
+ solverVersion: string;
740
+ queryNode?: string | undefined;
741
+ };
742
+ signature: string;
743
+ };
744
+ }, {
745
+ type: "pr_artifact_response";
746
+ fromInstallation: string;
747
+ envelope: {
748
+ algorithm: "ed25519";
749
+ payload: {
750
+ graphId: string;
751
+ alpha: number;
752
+ epsilon: number;
753
+ seedNodes: string[];
754
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
755
+ resultHash: string;
756
+ algorithm: "cg" | "neumann" | "forward-push" | "backward-push" | "bidirectional";
757
+ result: {
758
+ graphId: string;
759
+ score: number;
760
+ nodeId: string;
761
+ alpha: number;
762
+ epsilon: number;
763
+ iterations: number;
764
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
765
+ coherence: {
766
+ score: number;
767
+ passed: boolean;
768
+ threshold: number;
769
+ };
770
+ computedAt: string;
771
+ resultHash: string;
772
+ };
773
+ envelopeVersion: "1.0.0";
774
+ kind: "pagerank";
775
+ installationId: string;
776
+ witnessKeyId: string;
777
+ publicKey: string;
778
+ graphHash: string;
779
+ graphTimestamp: string;
780
+ coherenceScore: number;
781
+ sealedAt: string;
782
+ queryNode?: string | undefined;
783
+ solverVersion?: string | undefined;
784
+ };
785
+ signature: string;
786
+ };
787
+ }>, z.ZodObject<{
788
+ type: z.ZodLiteral<"pr_artifact_delta">;
789
+ fromInstallation: z.ZodString;
790
+ graphId: z.ZodString;
791
+ /** Hash the delta is based on. */
792
+ baseResultHash: z.ZodString;
793
+ /** New resultHash after delta applied. */
794
+ newResultHash: z.ZodString;
795
+ /** Score delta (single-entry) or sparse delta indices+values (vector). */
796
+ scoreDelta: z.ZodOptional<z.ZodNumber>;
797
+ sparseDelta: z.ZodOptional<z.ZodObject<{
798
+ indices: z.ZodArray<z.ZodNumber, "many">;
799
+ values: z.ZodArray<z.ZodNumber, "many">;
800
+ }, "strip", z.ZodTypeAny, {
801
+ values: number[];
802
+ indices: number[];
803
+ }, {
804
+ values: number[];
805
+ indices: number[];
806
+ }>>;
807
+ }, "strip", z.ZodTypeAny, {
808
+ type: "pr_artifact_delta";
809
+ graphId: string;
810
+ fromInstallation: string;
811
+ baseResultHash: string;
812
+ newResultHash: string;
813
+ scoreDelta?: number | undefined;
814
+ sparseDelta?: {
815
+ values: number[];
816
+ indices: number[];
817
+ } | undefined;
818
+ }, {
819
+ type: "pr_artifact_delta";
820
+ graphId: string;
821
+ fromInstallation: string;
822
+ baseResultHash: string;
823
+ newResultHash: string;
824
+ scoreDelta?: number | undefined;
825
+ sparseDelta?: {
826
+ values: number[];
827
+ indices: number[];
828
+ } | undefined;
829
+ }>, z.ZodObject<{
830
+ type: z.ZodLiteral<"pr_artifact_stale">;
831
+ fromInstallation: z.ZodString;
832
+ graphId: z.ZodString;
833
+ /** The holder's current graph hash so the requester can decide what to do. */
834
+ currentGraphHash: z.ZodString;
835
+ /** Why the request was stale-rejected. */
836
+ reason: z.ZodString;
837
+ }, "strip", z.ZodTypeAny, {
838
+ type: "pr_artifact_stale";
839
+ graphId: string;
840
+ fromInstallation: string;
841
+ currentGraphHash: string;
842
+ reason: string;
843
+ }, {
844
+ type: "pr_artifact_stale";
845
+ graphId: string;
846
+ fromInstallation: string;
847
+ currentGraphHash: string;
848
+ reason: string;
849
+ }>]>;
850
+ export type FederationMessage = z.infer<typeof FederationMessageSchema>;
851
+ export interface FederationTransport {
852
+ /** Send a message to a specific peer. Returns the response message. */
853
+ send(toInstallation: string, message: FederationMessage): Promise<FederationMessage | null>;
854
+ /** Subscribe to inbound messages. */
855
+ onMessage(handler: (msg: FederationMessage) => Promise<FederationMessage | null>): () => void;
856
+ }
857
+ //# sourceMappingURL=federation-protocol.d.ts.map