@claude-flow/plugin-hyperbolic-reasoning 3.0.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.
@@ -0,0 +1,423 @@
1
+ /**
2
+ * GNN Bridge - Graph Neural Network Operations
3
+ *
4
+ * Bridge to @ruvector/gnn-wasm for graph-based reasoning,
5
+ * node classification, link prediction, and graph embeddings.
6
+ */
7
+ /**
8
+ * Default GNN configuration
9
+ */
10
+ const DEFAULT_GNN_CONFIG = {
11
+ inputDim: 128,
12
+ hiddenDim: 256,
13
+ outputDim: 128,
14
+ numLayers: 3,
15
+ aggregation: 'mean',
16
+ dropout: 0.1,
17
+ };
18
+ /**
19
+ * Graph Neural Network Bridge
20
+ */
21
+ export class GnnBridge {
22
+ name = 'hyperbolic-gnn-bridge';
23
+ version = '0.1.0';
24
+ _status = 'unloaded';
25
+ _module = null;
26
+ _config;
27
+ constructor(config = {}) {
28
+ this._config = { ...DEFAULT_GNN_CONFIG, ...config };
29
+ }
30
+ get status() {
31
+ return this._status;
32
+ }
33
+ get initialized() {
34
+ return this._status === 'ready';
35
+ }
36
+ /**
37
+ * Initialize the WASM module
38
+ */
39
+ async initialize() {
40
+ if (this._status === 'ready')
41
+ return;
42
+ if (this._status === 'loading')
43
+ return;
44
+ this._status = 'loading';
45
+ try {
46
+ // Dynamic import - module may not be installed
47
+ const wasmModule = await import(/* webpackIgnore: true */ '@ruvector/gnn-wasm').catch(() => null);
48
+ if (wasmModule) {
49
+ this._module = wasmModule;
50
+ }
51
+ else {
52
+ this._module = this.createMockModule();
53
+ }
54
+ this._status = 'ready';
55
+ }
56
+ catch (error) {
57
+ this._status = 'error';
58
+ throw new Error(`Failed to initialize GnnBridge: ${error instanceof Error ? error.message : String(error)}`);
59
+ }
60
+ }
61
+ /**
62
+ * Dispose of resources
63
+ */
64
+ async dispose() {
65
+ this._module = null;
66
+ this._status = 'unloaded';
67
+ }
68
+ /**
69
+ * Forward pass through GNN
70
+ */
71
+ forward(graph, config = {}) {
72
+ if (!this._module) {
73
+ throw new Error('GnnBridge not initialized');
74
+ }
75
+ const mergedConfig = { ...this._config, ...config };
76
+ // Message passing layers
77
+ let embeddings = graph.nodeFeatures.map(f => new Float32Array(f));
78
+ for (let layer = 0; layer < mergedConfig.numLayers; layer++) {
79
+ const newEmbeddings = embeddings.map(emb => new Float32Array(mergedConfig.hiddenDim).fill(0));
80
+ // Aggregate neighbor messages
81
+ for (const [src, tgt] of graph.edges) {
82
+ const srcEmb = embeddings[src];
83
+ const weight = graph.edgeWeights?.[graph.edges.indexOf([src, tgt])] ?? 1;
84
+ if (srcEmb) {
85
+ for (let i = 0; i < Math.min(srcEmb.length, mergedConfig.hiddenDim); i++) {
86
+ newEmbeddings[tgt][i] += srcEmb[i] * weight;
87
+ }
88
+ }
89
+ }
90
+ // Normalize based on aggregation type
91
+ const degrees = new Array(graph.nodeFeatures.length).fill(0);
92
+ for (const [, tgt] of graph.edges) {
93
+ degrees[tgt]++;
94
+ }
95
+ for (let i = 0; i < newEmbeddings.length; i++) {
96
+ if (mergedConfig.aggregation === 'mean' && degrees[i] > 0) {
97
+ for (let j = 0; j < newEmbeddings[i].length; j++) {
98
+ newEmbeddings[i][j] /= degrees[i];
99
+ }
100
+ }
101
+ // Add self-loop
102
+ for (let j = 0; j < Math.min(embeddings[i].length, mergedConfig.hiddenDim); j++) {
103
+ newEmbeddings[i][j] += embeddings[i][j];
104
+ }
105
+ // ReLU activation
106
+ for (let j = 0; j < newEmbeddings[i].length; j++) {
107
+ newEmbeddings[i][j] = Math.max(0, newEmbeddings[i][j]);
108
+ }
109
+ }
110
+ embeddings = newEmbeddings;
111
+ }
112
+ // Compute graph-level embedding via readout
113
+ const graphEmbedding = new Float32Array(mergedConfig.outputDim).fill(0);
114
+ for (const emb of embeddings) {
115
+ for (let i = 0; i < Math.min(emb.length, mergedConfig.outputDim); i++) {
116
+ graphEmbedding[i] += emb[i] / embeddings.length;
117
+ }
118
+ }
119
+ return {
120
+ nodeEmbeddings: embeddings,
121
+ graphEmbedding,
122
+ };
123
+ }
124
+ /**
125
+ * Predict links between nodes
126
+ */
127
+ predictLinks(graph, sourceNodes, targetNodes) {
128
+ const result = this.forward(graph);
129
+ const predictions = new Float32Array(sourceNodes.length);
130
+ for (let i = 0; i < sourceNodes.length; i++) {
131
+ const srcEmb = result.nodeEmbeddings[sourceNodes[i]];
132
+ const tgtEmb = result.nodeEmbeddings[targetNodes[i]];
133
+ if (srcEmb && tgtEmb) {
134
+ // Dot product similarity
135
+ let dot = 0;
136
+ for (let j = 0; j < Math.min(srcEmb.length, tgtEmb.length); j++) {
137
+ dot += srcEmb[j] * tgtEmb[j];
138
+ }
139
+ predictions[i] = 1 / (1 + Math.exp(-dot)); // Sigmoid
140
+ }
141
+ }
142
+ return predictions;
143
+ }
144
+ /**
145
+ * Build entailment graph from concepts using GNN
146
+ */
147
+ async buildEntailmentGraph(concepts, threshold = 0.7) {
148
+ // Create initial embeddings from concept text
149
+ const nodeFeatures = concepts.map(c => {
150
+ const emb = new Float32Array(this._config.inputDim);
151
+ // Simple text embedding via character hashing
152
+ for (let i = 0; i < c.text.length; i++) {
153
+ const idx = c.text.charCodeAt(i) % this._config.inputDim;
154
+ emb[idx] += 1;
155
+ }
156
+ // Normalize
157
+ const norm = Math.sqrt(emb.reduce((s, v) => s + v * v, 0));
158
+ for (let i = 0; i < emb.length; i++) {
159
+ emb[i] /= norm + 1e-10;
160
+ }
161
+ return emb;
162
+ });
163
+ // Initial fully connected graph for message passing
164
+ const edges = [];
165
+ for (let i = 0; i < concepts.length; i++) {
166
+ for (let j = 0; j < concepts.length; j++) {
167
+ if (i !== j) {
168
+ edges.push([i, j]);
169
+ }
170
+ }
171
+ }
172
+ const graph = {
173
+ nodeFeatures,
174
+ edges,
175
+ };
176
+ // Get embeddings
177
+ const result = this.forward(graph);
178
+ // Predict entailment relations
179
+ const relations = [];
180
+ for (let i = 0; i < concepts.length; i++) {
181
+ for (let j = 0; j < concepts.length; j++) {
182
+ if (i === j)
183
+ continue;
184
+ const srcEmb = result.nodeEmbeddings[i];
185
+ const tgtEmb = result.nodeEmbeddings[j];
186
+ // Asymmetric entailment score
187
+ const entailmentScore = this.computeEntailmentScore(srcEmb, tgtEmb);
188
+ if (entailmentScore.entailmentProb > threshold) {
189
+ relations.push({
190
+ premise: concepts[i].id,
191
+ hypothesis: concepts[j].id,
192
+ confidence: entailmentScore.entailmentProb,
193
+ type: 'entails',
194
+ });
195
+ }
196
+ else if (entailmentScore.contradictionProb > threshold) {
197
+ relations.push({
198
+ premise: concepts[i].id,
199
+ hypothesis: concepts[j].id,
200
+ confidence: entailmentScore.contradictionProb,
201
+ type: 'contradicts',
202
+ });
203
+ }
204
+ }
205
+ }
206
+ // Compute graph statistics
207
+ const nodeCount = concepts.length;
208
+ const edgeCount = relations.length;
209
+ const maxPossibleEdges = nodeCount * (nodeCount - 1);
210
+ const density = maxPossibleEdges > 0 ? edgeCount / maxPossibleEdges : 0;
211
+ // Compute max depth via BFS from each node
212
+ let maxDepth = 0;
213
+ for (const concept of concepts) {
214
+ const depth = this.computeMaxDepth(concept.id, relations, new Set());
215
+ maxDepth = Math.max(maxDepth, depth);
216
+ }
217
+ return {
218
+ concepts: concepts,
219
+ relations,
220
+ transitiveClosure: false,
221
+ stats: {
222
+ nodeCount,
223
+ edgeCount,
224
+ density,
225
+ maxDepth,
226
+ },
227
+ };
228
+ }
229
+ /**
230
+ * Predict entailment between two concepts
231
+ */
232
+ predictEntailment(premiseEmb, hypothesisEmb) {
233
+ const score = this.computeEntailmentScore(premiseEmb, hypothesisEmb);
234
+ let relation;
235
+ if (score.entailmentProb > score.contradictionProb && score.entailmentProb > score.neutralProb) {
236
+ relation = 'entails';
237
+ }
238
+ else if (score.contradictionProb > score.neutralProb) {
239
+ relation = 'contradicts';
240
+ }
241
+ else {
242
+ relation = 'neutral';
243
+ }
244
+ return {
245
+ premise: '',
246
+ hypothesis: '',
247
+ entailmentProb: score.entailmentProb,
248
+ contradictionProb: score.contradictionProb,
249
+ neutralProb: score.neutralProb,
250
+ relation,
251
+ };
252
+ }
253
+ /**
254
+ * Compute transitive closure of entailment graph
255
+ */
256
+ computeTransitiveClosure(graph) {
257
+ const relations = [...graph.relations];
258
+ const conceptIds = new Set(graph.concepts.map(c => c.id));
259
+ // Floyd-Warshall style transitive closure
260
+ let changed = true;
261
+ while (changed) {
262
+ changed = false;
263
+ for (const r1 of relations) {
264
+ for (const r2 of relations) {
265
+ if (r1.hypothesis === r2.premise && r1.type === 'entails' && r2.type === 'entails') {
266
+ // Check if transitive relation exists
267
+ const exists = relations.some(r => r.premise === r1.premise && r.hypothesis === r2.hypothesis);
268
+ if (!exists && conceptIds.has(r1.premise) && conceptIds.has(r2.hypothesis)) {
269
+ relations.push({
270
+ premise: r1.premise,
271
+ hypothesis: r2.hypothesis,
272
+ confidence: r1.confidence * r2.confidence,
273
+ type: 'entails',
274
+ });
275
+ changed = true;
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
281
+ return {
282
+ ...graph,
283
+ relations,
284
+ transitiveClosure: true,
285
+ stats: {
286
+ ...graph.stats,
287
+ edgeCount: relations.length,
288
+ density: relations.length / (graph.concepts.length * (graph.concepts.length - 1)),
289
+ },
290
+ };
291
+ }
292
+ /**
293
+ * Prune entailment graph using transitive reduction
294
+ */
295
+ transitiveReduction(graph) {
296
+ const relations = [...graph.relations];
297
+ const toRemove = new Set();
298
+ // For each edge, check if it can be inferred transitively
299
+ for (let i = 0; i < relations.length; i++) {
300
+ const r = relations[i];
301
+ if (r.type !== 'entails')
302
+ continue;
303
+ // Check if there's an indirect path
304
+ const visited = new Set();
305
+ const hasIndirectPath = (current, target) => {
306
+ if (current === target)
307
+ return true;
308
+ if (visited.has(current))
309
+ return false;
310
+ visited.add(current);
311
+ for (let j = 0; j < relations.length; j++) {
312
+ if (i === j)
313
+ continue;
314
+ const other = relations[j];
315
+ if (other.type !== 'entails')
316
+ continue;
317
+ if (other.premise === current && other.hypothesis !== target) {
318
+ if (hasIndirectPath(other.hypothesis, target)) {
319
+ return true;
320
+ }
321
+ }
322
+ }
323
+ return false;
324
+ };
325
+ // Check if there's a path from premise to hypothesis not using this edge
326
+ visited.clear();
327
+ for (let j = 0; j < relations.length; j++) {
328
+ if (i === j)
329
+ continue;
330
+ const other = relations[j];
331
+ if (other.type !== 'entails')
332
+ continue;
333
+ if (other.premise === r.premise && hasIndirectPath(other.hypothesis, r.hypothesis)) {
334
+ toRemove.add(i);
335
+ break;
336
+ }
337
+ }
338
+ }
339
+ const prunedRelations = relations.filter((_, i) => !toRemove.has(i));
340
+ return {
341
+ ...graph,
342
+ relations: prunedRelations,
343
+ stats: {
344
+ ...graph.stats,
345
+ edgeCount: prunedRelations.length,
346
+ density: prunedRelations.length / (graph.concepts.length * (graph.concepts.length - 1)),
347
+ },
348
+ };
349
+ }
350
+ // ============================================================================
351
+ // Private Helper Methods
352
+ // ============================================================================
353
+ computeEntailmentScore(premiseEmb, hypothesisEmb) {
354
+ // Asymmetric entailment using inclusion heuristic
355
+ // Premise should "include" hypothesis for entailment
356
+ // Compute norms
357
+ const normP = Math.sqrt(premiseEmb.reduce((s, v) => s + v * v, 0));
358
+ const normH = Math.sqrt(hypothesisEmb.reduce((s, v) => s + v * v, 0));
359
+ // Dot product
360
+ let dot = 0;
361
+ for (let i = 0; i < Math.min(premiseEmb.length, hypothesisEmb.length); i++) {
362
+ dot += premiseEmb[i] * hypothesisEmb[i];
363
+ }
364
+ const cosine = dot / (normP * normH + 1e-10);
365
+ // Asymmetric features
366
+ const normRatio = normH / (normP + 1e-10);
367
+ // Difference features
368
+ let diffNorm = 0;
369
+ for (let i = 0; i < Math.min(premiseEmb.length, hypothesisEmb.length); i++) {
370
+ diffNorm += Math.pow(premiseEmb[i] - hypothesisEmb[i], 2);
371
+ }
372
+ diffNorm = Math.sqrt(diffNorm);
373
+ // Simple scoring model
374
+ const entailmentScore = (1 + cosine) / 2 * (1 - normRatio * 0.5);
375
+ const contradictionScore = (1 - cosine) / 2 * (diffNorm > 1 ? 0.8 : 0.2);
376
+ const neutralScore = 1 - entailmentScore - contradictionScore;
377
+ // Softmax normalization
378
+ const maxScore = Math.max(entailmentScore, contradictionScore, neutralScore);
379
+ const expE = Math.exp(entailmentScore - maxScore);
380
+ const expC = Math.exp(contradictionScore - maxScore);
381
+ const expN = Math.exp(neutralScore - maxScore);
382
+ const sumExp = expE + expC + expN;
383
+ return {
384
+ entailmentProb: expE / sumExp,
385
+ contradictionProb: expC / sumExp,
386
+ neutralProb: expN / sumExp,
387
+ };
388
+ }
389
+ computeMaxDepth(nodeId, relations, visited) {
390
+ if (visited.has(nodeId))
391
+ return 0;
392
+ visited.add(nodeId);
393
+ let maxChildDepth = 0;
394
+ for (const r of relations) {
395
+ if (r.premise === nodeId && r.type === 'entails') {
396
+ const childDepth = this.computeMaxDepth(r.hypothesis, relations, visited);
397
+ maxChildDepth = Math.max(maxChildDepth, childDepth + 1);
398
+ }
399
+ }
400
+ visited.delete(nodeId);
401
+ return maxChildDepth;
402
+ }
403
+ /**
404
+ * Create mock module for development
405
+ */
406
+ createMockModule() {
407
+ return {
408
+ forward: () => new Float32Array(0),
409
+ node_classification: () => new Float32Array(0),
410
+ link_prediction: () => new Float32Array(0),
411
+ alloc: () => 0,
412
+ dealloc: () => undefined,
413
+ memory: new WebAssembly.Memory({ initial: 1 }),
414
+ };
415
+ }
416
+ }
417
+ /**
418
+ * Create a new GnnBridge instance
419
+ */
420
+ export function createGnnBridge(config) {
421
+ return new GnnBridge(config);
422
+ }
423
+ //# sourceMappingURL=gnn-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gnn-bridge.js","sourceRoot":"","sources":["../../src/bridges/gnn-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Hyperbolic Bridge - Poincare Ball and Lorentz Model Operations
3
+ *
4
+ * Bridge to @ruvector/hyperbolic-hnsw-wasm for hyperbolic geometry operations
5
+ * including embeddings, distance computation, and hierarchical search.
6
+ */
7
+ import type { HyperbolicPoint, Hierarchy, EmbeddedHierarchy, SearchResult, EmbedHierarchyInput } from '../types.js';
8
+ /**
9
+ * WASM module status
10
+ */
11
+ export type WasmModuleStatus = 'unloaded' | 'loading' | 'ready' | 'error';
12
+ /**
13
+ * Hyperbolic Embeddings Bridge
14
+ */
15
+ export declare class HyperbolicBridge {
16
+ readonly name = "hyperbolic-reasoning-bridge";
17
+ readonly version = "0.1.0";
18
+ private _status;
19
+ private _module;
20
+ private _indices;
21
+ get status(): WasmModuleStatus;
22
+ get initialized(): boolean;
23
+ /**
24
+ * Initialize the WASM module
25
+ */
26
+ initialize(): Promise<void>;
27
+ /**
28
+ * Dispose of resources
29
+ */
30
+ dispose(): Promise<void>;
31
+ /**
32
+ * Embed a hierarchy into hyperbolic space
33
+ */
34
+ embedHierarchy(hierarchy: Hierarchy, config?: Partial<EmbedHierarchyInput['parameters']>): Promise<EmbeddedHierarchy>;
35
+ /**
36
+ * Compute hyperbolic distance between two points
37
+ */
38
+ distance(a: HyperbolicPoint, b: HyperbolicPoint): number;
39
+ /**
40
+ * Check if one point is ancestor of another (closer to origin)
41
+ */
42
+ isAncestor(parent: HyperbolicPoint, child: HyperbolicPoint, threshold?: number): boolean;
43
+ /**
44
+ * Get hierarchy depth from hyperbolic point
45
+ */
46
+ hierarchyDepth(point: HyperbolicPoint): number;
47
+ /**
48
+ * Create or get an index
49
+ */
50
+ createIndex(id: string, dimension: number, curvature: number): void;
51
+ /**
52
+ * Add point to index
53
+ */
54
+ addToIndex(indexId: string, nodeId: string, point: HyperbolicPoint): void;
55
+ /**
56
+ * Search in hyperbolic space
57
+ */
58
+ search(query: HyperbolicPoint, indexId: string, k: number, mode?: 'nearest' | 'subtree' | 'ancestors' | 'siblings' | 'cone'): Promise<SearchResult>;
59
+ private validateHierarchy;
60
+ private computeDistanceGradient;
61
+ private estimateCurvatureGradient;
62
+ private computeEmbeddingMetrics;
63
+ private inCone;
64
+ /**
65
+ * Create mock module for development
66
+ */
67
+ private createMockModule;
68
+ }
69
+ /**
70
+ * Create a new HyperbolicBridge instance
71
+ */
72
+ export declare function createHyperbolicBridge(): HyperbolicBridge;
73
+ //# sourceMappingURL=hyperbolic-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyperbolic-bridge.d.ts","sourceRoot":"","sources":["../../src/bridges/hyperbolic-bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,SAAS,EAET,iBAAiB,EACjB,YAAY,EAEZ,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAUrB;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAsD1E;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,IAAI,iCAAiC;IAC9C,QAAQ,CAAC,OAAO,WAAW;IAE3B,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAA2C;IAE3D,IAAI,MAAM,IAAI,gBAAgB,CAE7B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,SAAS,EACpB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAM,GACtD,OAAO,CAAC,iBAAiB,CAAC;IAmI7B;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM;IAOxD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,SAAM,GAAG,OAAO;IAMrF;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM;IAK9C;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAanE;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI;IASzE;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,EACT,IAAI,GAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,MAAkB,GAC1E,OAAO,CAAC,YAAY,CAAC;IA+DxB,OAAO,CAAC,iBAAiB;IAkEzB,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,uBAAuB;IAoD/B,OAAO,CAAC,MAAM;IAcd;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAqBzB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD"}