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,329 @@
1
+ /**
2
+ * ruflo-graph-intelligence — Domain Types (ADR-123)
3
+ *
4
+ * Core type contract: SparseMatrix shape, ComplexityClass budget, coherence
5
+ * threshold, signed PR artifact envelope. These are the wire types every
6
+ * adapter, MCP tool, and federation peer agrees on.
7
+ */
8
+ import { z } from 'zod';
9
+ export declare const SparseEntrySchema: z.ZodObject<{
10
+ row: z.ZodNumber;
11
+ col: z.ZodNumber;
12
+ value: z.ZodNumber;
13
+ }, "strip", z.ZodTypeAny, {
14
+ row: number;
15
+ col: number;
16
+ value: number;
17
+ }, {
18
+ row: number;
19
+ col: number;
20
+ value: number;
21
+ }>;
22
+ export type SparseEntry = z.infer<typeof SparseEntrySchema>;
23
+ export declare const SparseMatrixSchema: z.ZodObject<{
24
+ /** Stable identifier — e.g. "ruflo-federation:trust-mesh:2026-05-19T01:00:00Z". */
25
+ graphId: z.ZodString;
26
+ /** Number of rows / columns (square). */
27
+ size: z.ZodNumber;
28
+ /** Non-zero entries. */
29
+ entries: z.ZodArray<z.ZodObject<{
30
+ row: z.ZodNumber;
31
+ col: z.ZodNumber;
32
+ value: z.ZodNumber;
33
+ }, "strip", z.ZodTypeAny, {
34
+ row: number;
35
+ col: number;
36
+ value: number;
37
+ }, {
38
+ row: number;
39
+ col: number;
40
+ value: number;
41
+ }>, "many">;
42
+ /** Node-id → row-index lookup so callers can talk in domain identifiers. */
43
+ nodeIndex: z.ZodRecord<z.ZodString, z.ZodNumber>;
44
+ /** Reverse lookup row-index → node-id. */
45
+ indexNode: z.ZodArray<z.ZodString, "many">;
46
+ /** When the snapshot was taken (ISO). */
47
+ capturedAt: z.ZodString;
48
+ /** Optional content hash for memoization + signed-artifact integrity. */
49
+ contentHash: z.ZodOptional<z.ZodString>;
50
+ }, "strip", z.ZodTypeAny, {
51
+ entries: {
52
+ row: number;
53
+ col: number;
54
+ value: number;
55
+ }[];
56
+ graphId: string;
57
+ size: number;
58
+ nodeIndex: Record<string, number>;
59
+ indexNode: string[];
60
+ capturedAt: string;
61
+ contentHash?: string | undefined;
62
+ }, {
63
+ entries: {
64
+ row: number;
65
+ col: number;
66
+ value: number;
67
+ }[];
68
+ graphId: string;
69
+ size: number;
70
+ nodeIndex: Record<string, number>;
71
+ indexNode: string[];
72
+ capturedAt: string;
73
+ contentHash?: string | undefined;
74
+ }>;
75
+ export type SparseMatrix = z.infer<typeof SparseMatrixSchema>;
76
+ /**
77
+ * 12-tier upstream `sublinear-time-solver@1.7.0` taxonomy. Ordered.
78
+ * Lower-cost classes are at the top; Adaptive wraps a (default, worst) pair.
79
+ */
80
+ export declare const ComplexityClassSchema: z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>;
81
+ export type ComplexityClass = z.infer<typeof ComplexityClassSchema>;
82
+ /** For Adaptive: default + worst-case both reported. */
83
+ export interface AdaptiveBound {
84
+ default: ComplexityClass;
85
+ worst: ComplexityClass;
86
+ }
87
+ /** Is `actual` within `budget`? */
88
+ export declare function fitsBudget(actual: ComplexityClass, budget: ComplexityClass): boolean;
89
+ /** Pi-Zero-safe ≈ at most polylogarithmic. */
90
+ export declare function isEdgeSafe(c: ComplexityClass): boolean;
91
+ export declare const CoherenceReportSchema: z.ZodObject<{
92
+ /** Per-row margin (min over rows of (|diag| − Σ|off|) / |diag|). Range (−∞, 1]. */
93
+ score: z.ZodNumber;
94
+ /** Did the matrix pass the configured threshold? */
95
+ passed: z.ZodBoolean;
96
+ /** Threshold used. 0 = gate disabled (wire-compatible default). */
97
+ threshold: z.ZodNumber;
98
+ }, "strip", z.ZodTypeAny, {
99
+ score: number;
100
+ passed: boolean;
101
+ threshold: number;
102
+ }, {
103
+ score: number;
104
+ passed: boolean;
105
+ threshold: number;
106
+ }>;
107
+ export type CoherenceReport = z.infer<typeof CoherenceReportSchema>;
108
+ export declare const PageRankQuerySchema: z.ZodObject<{
109
+ graphId: z.ZodString;
110
+ /** Single-entry query — the node we want the PR score for. */
111
+ nodeId: z.ZodString;
112
+ /** Damping factor. Default 0.85. */
113
+ alpha: z.ZodDefault<z.ZodNumber>;
114
+ /** ε convergence target. Default 1e-3. */
115
+ epsilon: z.ZodDefault<z.ZodNumber>;
116
+ /** For personalized PR — seed nodes weighted as the restart distribution. */
117
+ seedNodes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
118
+ /** Budget gate. Default `linear` (tier-2-safe). */
119
+ maxComplexityClass: z.ZodDefault<z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>>;
120
+ /** DD-margin floor. 0 = disabled. */
121
+ coherenceThreshold: z.ZodDefault<z.ZodNumber>;
122
+ }, "strip", z.ZodTypeAny, {
123
+ graphId: string;
124
+ nodeId: string;
125
+ alpha: number;
126
+ epsilon: number;
127
+ seedNodes: string[];
128
+ maxComplexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
129
+ coherenceThreshold: number;
130
+ }, {
131
+ graphId: string;
132
+ nodeId: string;
133
+ alpha?: number | undefined;
134
+ epsilon?: number | undefined;
135
+ seedNodes?: string[] | undefined;
136
+ maxComplexityClass?: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded" | undefined;
137
+ coherenceThreshold?: number | undefined;
138
+ }>;
139
+ export type PageRankQuery = z.infer<typeof PageRankQuerySchema>;
140
+ export declare const PageRankResultSchema: z.ZodObject<{
141
+ graphId: z.ZodString;
142
+ nodeId: z.ZodString;
143
+ score: z.ZodNumber;
144
+ alpha: z.ZodNumber;
145
+ epsilon: z.ZodNumber;
146
+ iterations: z.ZodNumber;
147
+ /** Class the solver actually used. */
148
+ complexityClass: z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>;
149
+ /** Coherence report attached at compute time. */
150
+ coherence: z.ZodObject<{
151
+ /** Per-row margin (min over rows of (|diag| − Σ|off|) / |diag|). Range (−∞, 1]. */
152
+ score: z.ZodNumber;
153
+ /** Did the matrix pass the configured threshold? */
154
+ passed: z.ZodBoolean;
155
+ /** Threshold used. 0 = gate disabled (wire-compatible default). */
156
+ threshold: z.ZodNumber;
157
+ }, "strip", z.ZodTypeAny, {
158
+ score: number;
159
+ passed: boolean;
160
+ threshold: number;
161
+ }, {
162
+ score: number;
163
+ passed: boolean;
164
+ threshold: number;
165
+ }>;
166
+ computedAt: z.ZodString;
167
+ /** Hash of (graphId, nodeId, alpha, epsilon, seedNodes, score). Stable for memoization. */
168
+ resultHash: z.ZodString;
169
+ }, "strip", z.ZodTypeAny, {
170
+ graphId: string;
171
+ score: number;
172
+ nodeId: string;
173
+ alpha: number;
174
+ epsilon: number;
175
+ iterations: number;
176
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
177
+ coherence: {
178
+ score: number;
179
+ passed: boolean;
180
+ threshold: number;
181
+ };
182
+ computedAt: string;
183
+ resultHash: string;
184
+ }, {
185
+ graphId: string;
186
+ score: number;
187
+ nodeId: string;
188
+ alpha: number;
189
+ epsilon: number;
190
+ iterations: number;
191
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
192
+ coherence: {
193
+ score: number;
194
+ passed: boolean;
195
+ threshold: number;
196
+ };
197
+ computedAt: string;
198
+ resultHash: string;
199
+ }>;
200
+ export type PageRankResult = z.infer<typeof PageRankResultSchema>;
201
+ export declare const SolveQuerySchema: z.ZodObject<{
202
+ graphId: z.ZodString;
203
+ rhs: z.ZodArray<z.ZodNumber, "many">;
204
+ algorithm: z.ZodDefault<z.ZodEnum<["cg", "neumann", "random-walk"]>>;
205
+ maxComplexityClass: z.ZodDefault<z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>>;
206
+ coherenceThreshold: z.ZodDefault<z.ZodNumber>;
207
+ }, "strip", z.ZodTypeAny, {
208
+ graphId: string;
209
+ maxComplexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
210
+ coherenceThreshold: number;
211
+ rhs: number[];
212
+ algorithm: "cg" | "neumann" | "random-walk";
213
+ }, {
214
+ graphId: string;
215
+ rhs: number[];
216
+ maxComplexityClass?: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded" | undefined;
217
+ coherenceThreshold?: number | undefined;
218
+ algorithm?: "cg" | "neumann" | "random-walk" | undefined;
219
+ }>;
220
+ export type SolveQuery = z.infer<typeof SolveQuerySchema>;
221
+ export declare const SolveResultSchema: z.ZodObject<{
222
+ graphId: z.ZodString;
223
+ x: z.ZodArray<z.ZodNumber, "many">;
224
+ residualNorm: z.ZodNumber;
225
+ iterations: z.ZodNumber;
226
+ complexityClass: z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>;
227
+ coherence: z.ZodObject<{
228
+ /** Per-row margin (min over rows of (|diag| − Σ|off|) / |diag|). Range (−∞, 1]. */
229
+ score: z.ZodNumber;
230
+ /** Did the matrix pass the configured threshold? */
231
+ passed: z.ZodBoolean;
232
+ /** Threshold used. 0 = gate disabled (wire-compatible default). */
233
+ threshold: z.ZodNumber;
234
+ }, "strip", z.ZodTypeAny, {
235
+ score: number;
236
+ passed: boolean;
237
+ threshold: number;
238
+ }, {
239
+ score: number;
240
+ passed: boolean;
241
+ threshold: number;
242
+ }>;
243
+ computedAt: z.ZodString;
244
+ }, "strip", z.ZodTypeAny, {
245
+ graphId: string;
246
+ iterations: number;
247
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
248
+ coherence: {
249
+ score: number;
250
+ passed: boolean;
251
+ threshold: number;
252
+ };
253
+ computedAt: string;
254
+ x: number[];
255
+ residualNorm: number;
256
+ }, {
257
+ graphId: string;
258
+ iterations: number;
259
+ complexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
260
+ coherence: {
261
+ score: number;
262
+ passed: boolean;
263
+ threshold: number;
264
+ };
265
+ computedAt: string;
266
+ x: number[];
267
+ residualNorm: number;
268
+ }>;
269
+ export type SolveResult = z.infer<typeof SolveResultSchema>;
270
+ export declare const SparseDeltaSchema: z.ZodObject<{
271
+ indices: z.ZodArray<z.ZodNumber, "many">;
272
+ values: z.ZodArray<z.ZodNumber, "many">;
273
+ }, "strip", z.ZodTypeAny, {
274
+ values: number[];
275
+ indices: number[];
276
+ }, {
277
+ values: number[];
278
+ indices: number[];
279
+ }>;
280
+ export type SparseDelta = z.infer<typeof SparseDeltaSchema>;
281
+ export declare const SolveOnChangeQuerySchema: z.ZodObject<{
282
+ graphId: z.ZodString;
283
+ prevSolution: z.ZodArray<z.ZodNumber, "many">;
284
+ delta: z.ZodObject<{
285
+ indices: z.ZodArray<z.ZodNumber, "many">;
286
+ values: z.ZodArray<z.ZodNumber, "many">;
287
+ }, "strip", z.ZodTypeAny, {
288
+ values: number[];
289
+ indices: number[];
290
+ }, {
291
+ values: number[];
292
+ indices: number[];
293
+ }>;
294
+ algorithm: z.ZodDefault<z.ZodEnum<["cg", "neumann"]>>;
295
+ maxComplexityClass: z.ZodDefault<z.ZodEnum<["constant", "logarithmic", "polylogarithmic", "sublinear", "linear", "linearithmic", "polynomial", "exponential", "doubleExponential", "adaptive", "unknown", "unbounded"]>>;
296
+ }, "strip", z.ZodTypeAny, {
297
+ graphId: string;
298
+ maxComplexityClass: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded";
299
+ algorithm: "cg" | "neumann";
300
+ prevSolution: number[];
301
+ delta: {
302
+ values: number[];
303
+ indices: number[];
304
+ };
305
+ }, {
306
+ graphId: string;
307
+ prevSolution: number[];
308
+ delta: {
309
+ values: number[];
310
+ indices: number[];
311
+ };
312
+ maxComplexityClass?: "unknown" | "constant" | "logarithmic" | "polylogarithmic" | "sublinear" | "linear" | "linearithmic" | "polynomial" | "exponential" | "doubleExponential" | "adaptive" | "unbounded" | undefined;
313
+ algorithm?: "cg" | "neumann" | undefined;
314
+ }>;
315
+ export type SolveOnChangeQuery = z.infer<typeof SolveOnChangeQuerySchema>;
316
+ export declare const GraphIntelErrorKindSchema: z.ZodEnum<["complexity-budget-exceeded", "coherence-rejected", "graph-not-found", "invalid-input", "solver-failed", "not-applicable"]>;
317
+ export type GraphIntelErrorKind = z.infer<typeof GraphIntelErrorKindSchema>;
318
+ export interface GraphIntelError {
319
+ kind: GraphIntelErrorKind;
320
+ message: string;
321
+ recoverable: boolean;
322
+ /** If `complexity-budget-exceeded`: what class was needed vs requested. */
323
+ requiredClass?: ComplexityClass;
324
+ requestedClass?: ComplexityClass;
325
+ /** If `coherence-rejected`: actual vs threshold. */
326
+ coherence?: number;
327
+ threshold?: number;
328
+ }
329
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/domain/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * ruflo-graph-intelligence — Domain Types (ADR-123)
3
+ *
4
+ * Core type contract: SparseMatrix shape, ComplexityClass budget, coherence
5
+ * threshold, signed PR artifact envelope. These are the wire types every
6
+ * adapter, MCP tool, and federation peer agrees on.
7
+ */
8
+ import { z } from 'zod';
9
+ // ============================================================================
10
+ // SparseMatrix — the adapter handover shape
11
+ // ============================================================================
12
+ export const SparseEntrySchema = z.object({
13
+ row: z.number().int().nonnegative(),
14
+ col: z.number().int().nonnegative(),
15
+ value: z.number().finite(),
16
+ });
17
+ export const SparseMatrixSchema = z.object({
18
+ /** Stable identifier — e.g. "ruflo-federation:trust-mesh:2026-05-19T01:00:00Z". */
19
+ graphId: z.string().min(1),
20
+ /** Number of rows / columns (square). */
21
+ size: z.number().int().positive(),
22
+ /** Non-zero entries. */
23
+ entries: z.array(SparseEntrySchema),
24
+ /** Node-id → row-index lookup so callers can talk in domain identifiers. */
25
+ nodeIndex: z.record(z.number().int().nonnegative()),
26
+ /** Reverse lookup row-index → node-id. */
27
+ indexNode: z.array(z.string()),
28
+ /** When the snapshot was taken (ISO). */
29
+ capturedAt: z.string(),
30
+ /** Optional content hash for memoization + signed-artifact integrity. */
31
+ contentHash: z.string().regex(/^[0-9a-f]{64}$/).optional(),
32
+ });
33
+ // ============================================================================
34
+ // Complexity class — runtime governance budget
35
+ // ============================================================================
36
+ /**
37
+ * 12-tier upstream `sublinear-time-solver@1.7.0` taxonomy. Ordered.
38
+ * Lower-cost classes are at the top; Adaptive wraps a (default, worst) pair.
39
+ */
40
+ export const ComplexityClassSchema = z.enum([
41
+ 'constant', // O(1)
42
+ 'logarithmic', // O(log n)
43
+ 'polylogarithmic', // O((log n)^k)
44
+ 'sublinear', // O(n^α) for α < 1
45
+ 'linear', // O(n)
46
+ 'linearithmic', // O(n log n)
47
+ 'polynomial', // O(n^k)
48
+ 'exponential', // O(2^n)
49
+ 'doubleExponential', // O(2^(2^n))
50
+ 'adaptive', // see adaptiveBound
51
+ 'unknown',
52
+ 'unbounded',
53
+ ]);
54
+ /** Ordering — index = cost rank, so `rank('logarithmic') < rank('linear')`. */
55
+ const COMPLEXITY_RANK = {
56
+ constant: 0,
57
+ logarithmic: 1,
58
+ polylogarithmic: 2,
59
+ sublinear: 3,
60
+ linear: 4,
61
+ linearithmic: 5,
62
+ polynomial: 6,
63
+ exponential: 7,
64
+ doubleExponential: 8,
65
+ adaptive: 4, // worst-case treated as Linear for budget comparisons by default
66
+ unknown: 8,
67
+ unbounded: 9,
68
+ };
69
+ /** Is `actual` within `budget`? */
70
+ export function fitsBudget(actual, budget) {
71
+ return COMPLEXITY_RANK[actual] <= COMPLEXITY_RANK[budget];
72
+ }
73
+ /** Pi-Zero-safe ≈ at most polylogarithmic. */
74
+ export function isEdgeSafe(c) {
75
+ return COMPLEXITY_RANK[c] <= COMPLEXITY_RANK['polylogarithmic'];
76
+ }
77
+ // ============================================================================
78
+ // Coherence — DD margin for graph stability monitoring
79
+ // ============================================================================
80
+ export const CoherenceReportSchema = z.object({
81
+ /** Per-row margin (min over rows of (|diag| − Σ|off|) / |diag|). Range (−∞, 1]. */
82
+ score: z.number(),
83
+ /** Did the matrix pass the configured threshold? */
84
+ passed: z.boolean(),
85
+ /** Threshold used. 0 = gate disabled (wire-compatible default). */
86
+ threshold: z.number(),
87
+ });
88
+ // ============================================================================
89
+ // PageRank query + result
90
+ // ============================================================================
91
+ export const PageRankQuerySchema = z.object({
92
+ graphId: z.string(),
93
+ /** Single-entry query — the node we want the PR score for. */
94
+ nodeId: z.string(),
95
+ /** Damping factor. Default 0.85. */
96
+ alpha: z.number().positive().lt(1).default(0.85),
97
+ /** ε convergence target. Default 1e-3. */
98
+ epsilon: z.number().positive().default(1e-3),
99
+ /** For personalized PR — seed nodes weighted as the restart distribution. */
100
+ seedNodes: z.array(z.string()).default([]),
101
+ /** Budget gate. Default `linear` (tier-2-safe). */
102
+ maxComplexityClass: ComplexityClassSchema.default('linear'),
103
+ /** DD-margin floor. 0 = disabled. */
104
+ coherenceThreshold: z.number().default(0),
105
+ });
106
+ export const PageRankResultSchema = z.object({
107
+ graphId: z.string(),
108
+ nodeId: z.string(),
109
+ score: z.number(),
110
+ alpha: z.number(),
111
+ epsilon: z.number(),
112
+ iterations: z.number().int().nonnegative(),
113
+ /** Class the solver actually used. */
114
+ complexityClass: ComplexityClassSchema,
115
+ /** Coherence report attached at compute time. */
116
+ coherence: CoherenceReportSchema,
117
+ computedAt: z.string(),
118
+ /** Hash of (graphId, nodeId, alpha, epsilon, seedNodes, score). Stable for memoization. */
119
+ resultHash: z.string().regex(/^[0-9a-f]{64}$/),
120
+ });
121
+ // ============================================================================
122
+ // Solve (full vector)
123
+ // ============================================================================
124
+ export const SolveQuerySchema = z.object({
125
+ graphId: z.string(),
126
+ rhs: z.array(z.number()),
127
+ algorithm: z.enum(['cg', 'neumann', 'random-walk']).default('cg'),
128
+ maxComplexityClass: ComplexityClassSchema.default('linear'),
129
+ coherenceThreshold: z.number().default(0),
130
+ });
131
+ export const SolveResultSchema = z.object({
132
+ graphId: z.string(),
133
+ x: z.array(z.number()),
134
+ residualNorm: z.number(),
135
+ iterations: z.number().int().nonnegative(),
136
+ complexityClass: ComplexityClassSchema,
137
+ coherence: CoherenceReportSchema,
138
+ computedAt: z.string(),
139
+ });
140
+ // ============================================================================
141
+ // Incremental solve (Wedge 12 — streaming)
142
+ // ============================================================================
143
+ export const SparseDeltaSchema = z.object({
144
+ indices: z.array(z.number().int().nonnegative()),
145
+ values: z.array(z.number()),
146
+ });
147
+ export const SolveOnChangeQuerySchema = z.object({
148
+ graphId: z.string(),
149
+ prevSolution: z.array(z.number()),
150
+ delta: SparseDeltaSchema,
151
+ algorithm: z.enum(['cg', 'neumann']).default('cg'),
152
+ maxComplexityClass: ComplexityClassSchema.default('linear'),
153
+ });
154
+ // ============================================================================
155
+ // Structured errors
156
+ // ============================================================================
157
+ export const GraphIntelErrorKindSchema = z.enum([
158
+ 'complexity-budget-exceeded',
159
+ 'coherence-rejected',
160
+ 'graph-not-found',
161
+ 'invalid-input',
162
+ 'solver-failed',
163
+ 'not-applicable',
164
+ ]);
165
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/domain/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * ruflo-graph-intelligence — RuFlo Graph Intelligence Engine (ADR-123)
3
+ *
4
+ * Real-time relationship intelligence with complexity-aware execution.
5
+ *
6
+ * Three-layer architecture:
7
+ * Neural Layer — adaptive learning (existing — @claude-flow/neural)
8
+ * Graph Intelligence — relationship reasoning (this plugin)
9
+ * Complexity Layer — runtime governance (this plugin)
10
+ *
11
+ * Built on `sublinear-time-solver@1.7.0`.
12
+ */
13
+ export * from './domain/types.js';
14
+ export { AdapterRegistry, getRegistry, resetRegistry, noopUnsubscribe, type SublinearAdapter, } from './domain/adapter.js';
15
+ export { coherenceScore, checkCoherence, singleEntryPageRank, conjugateGradient, neumann, solveOnChange, hashResult, observedComplexity, runPageRank, runSolve, runSolveOnChange, } from './infrastructure/solver-bridge.js';
16
+ export { graphIntelligenceTools, type MCPTool } from './mcp-tools/index.js';
17
+ export * from './adapters/index.js';
18
+ export { jlEmbed, computeTargetDim, type JLEmbedOptions, type JLEmbedResult } from './infrastructure/jl-embed.js';
19
+ export { StreamingBridge, type StreamingBridgeOptions, type StreamingUpdate, } from './application/streaming-bridge.js';
20
+ export { PrArtifactRequestSchema, PrArtifactResponseSchema, PrArtifactDeltaSchema, PrArtifactStaleSchema, FederationMessageSchema, type PrArtifactRequest, type PrArtifactResponse, type PrArtifactDelta, type PrArtifactStale, type FederationMessage, type FederationTransport, } from './domain/federation-protocol.js';
21
+ export { FederationServer, type FederationServerOptions, } from './application/federation-server.js';
22
+ export { FederationClient, inProcessTransport, type FederationClientOptions, type FetchPrResult, } from './application/federation-client.js';
23
+ export { ARTIFACT_ENVELOPE_VERSION, ARTIFACT_ENVELOPE_KIND, SignedPageRankEnvelopeSchema, SignedPageRankPayloadSchema, type SignedPageRankEnvelope, type SignedPageRankPayload, type ArtifactVerificationResult, } from './domain/signed-artifact.js';
24
+ export { generateWitnessKey, loadWitnessKey, resolveWitnessKey, sealArtifact, verifyArtifact, canonicalJSON, sha256Hex, type WitnessKey, type SealArtifactInput, } from './infrastructure/witness-signer.js';
25
+ import { getRegistry } from './domain/adapter.js';
26
+ declare const _default: {
27
+ tools: import("./mcp-tools/index.js").MCPTool[];
28
+ registry: typeof getRegistry;
29
+ };
30
+ export default _default;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,eAAe,EACf,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,sBAAsB,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG5E,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlH,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,eAAe,GACrB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,GACnB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,GAChC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,EACT,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;;;;;AAClD,wBAAwE"}
package/dist/index.js ADDED
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ruflo-graph-intelligence — RuFlo Graph Intelligence Engine (ADR-123)
3
+ *
4
+ * Real-time relationship intelligence with complexity-aware execution.
5
+ *
6
+ * Three-layer architecture:
7
+ * Neural Layer — adaptive learning (existing — @claude-flow/neural)
8
+ * Graph Intelligence — relationship reasoning (this plugin)
9
+ * Complexity Layer — runtime governance (this plugin)
10
+ *
11
+ * Built on `sublinear-time-solver@1.7.0`.
12
+ */
13
+ // Domain
14
+ export * from './domain/types.js';
15
+ export { AdapterRegistry, getRegistry, resetRegistry, noopUnsubscribe, } from './domain/adapter.js';
16
+ // Infrastructure
17
+ export { coherenceScore, checkCoherence, singleEntryPageRank, conjugateGradient, neumann, solveOnChange, hashResult, observedComplexity, runPageRank, runSolve, runSolveOnChange, } from './infrastructure/solver-bridge.js';
18
+ // MCP tools
19
+ export { graphIntelligenceTools } from './mcp-tools/index.js';
20
+ // Adapters (per-wedge integrations)
21
+ export * from './adapters/index.js';
22
+ // JL embedding (ADR-121 follow-up)
23
+ export { jlEmbed, computeTargetDim } from './infrastructure/jl-embed.js';
24
+ // Streaming bridge (Wedge 12)
25
+ export { StreamingBridge, } from './application/streaming-bridge.js';
26
+ // Federation protocol (Phase 8 — beyond-SOTA)
27
+ export { PrArtifactRequestSchema, PrArtifactResponseSchema, PrArtifactDeltaSchema, PrArtifactStaleSchema, FederationMessageSchema, } from './domain/federation-protocol.js';
28
+ export { FederationServer, } from './application/federation-server.js';
29
+ export { FederationClient, inProcessTransport, } from './application/federation-client.js';
30
+ // Signed PR artifacts (Phase 7 — beyond-SOTA)
31
+ export { ARTIFACT_ENVELOPE_VERSION, ARTIFACT_ENVELOPE_KIND, SignedPageRankEnvelopeSchema, SignedPageRankPayloadSchema, } from './domain/signed-artifact.js';
32
+ export { generateWitnessKey, loadWitnessKey, resolveWitnessKey, sealArtifact, verifyArtifact, canonicalJSON, sha256Hex, } from './infrastructure/witness-signer.js';
33
+ // Default export
34
+ import { graphIntelligenceTools } from './mcp-tools/index.js';
35
+ import { getRegistry } from './domain/adapter.js';
36
+ export default { tools: graphIntelligenceTools, registry: getRegistry };
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,SAAS;AACT,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EACb,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAE7B,iBAAiB;AACjB,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAE3C,YAAY;AACZ,OAAO,EAAE,sBAAsB,EAAgB,MAAM,sBAAsB,CAAC;AAE5E,oCAAoC;AACpC,cAAc,qBAAqB,CAAC;AAEpC,mCAAmC;AACnC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAA2C,MAAM,8BAA8B,CAAC;AAElH,8BAA8B;AAC9B,OAAO,EACL,eAAe,GAGhB,MAAM,mCAAmC,CAAC;AAE3C,8CAA8C;AAC9C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GAOxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,gBAAgB,GAEjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GAGnB,MAAM,oCAAoC,CAAC;AAE5C,8CAA8C;AAC9C,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,GAI5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,GAGV,MAAM,oCAAoC,CAAC;AAE5C,iBAAiB;AACjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,eAAe,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Johnson-Lindenstrauss embedding (Wedge: ADR-121 follow-up, ADR-123 Phase 6)
3
+ *
4
+ * Replaces `@claude-flow/embeddings`' hand-rolled hand-rolled JL with a
5
+ * tested implementation that obeys the Achlioptas / Dasgupta-Gupta bound
6
+ * `target_dim ≤ original_dim − 1`. Matches the upstream
7
+ * `sublinear-time-solver@1.7.0` JL contract.
8
+ */
9
+ /** Cap target dim at `n − 1` (Achlioptas / Dasgupta-Gupta). */
10
+ export declare function computeTargetDim(originalDim: number, requestedDim: number, epsilon: number): number;
11
+ export interface JLEmbedOptions {
12
+ targetDim: number;
13
+ epsilon?: number;
14
+ /** Seed for the projection matrix. Default 'ruflo-jl-v1' so it's reproducible. */
15
+ seed?: string;
16
+ }
17
+ export interface JLEmbedResult {
18
+ projected: number[][];
19
+ targetDim: number;
20
+ /** ε from the input, echoed for reporting. */
21
+ epsilon: number;
22
+ /** Confirmed within k ≤ n − 1 bound. */
23
+ withinAchlioptasBound: boolean;
24
+ }
25
+ /** Project a list of vectors to `targetDim` via a random Gaussian matrix. */
26
+ export declare function jlEmbed(vectors: number[][], options: JLEmbedOptions): JLEmbedResult;
27
+ //# sourceMappingURL=jl-embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jl-embed.d.ts","sourceRoot":"","sources":["../../src/infrastructure/jl-embed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAoBH,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMnG;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,CA4CnF"}