@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.
- package/README.md +318 -0
- package/dist/bridges/gnn-bridge.d.ts +127 -0
- package/dist/bridges/gnn-bridge.d.ts.map +1 -0
- package/dist/bridges/gnn-bridge.js +423 -0
- package/dist/bridges/gnn-bridge.js.map +1 -0
- package/dist/bridges/hyperbolic-bridge.d.ts +73 -0
- package/dist/bridges/hyperbolic-bridge.d.ts.map +1 -0
- package/dist/bridges/hyperbolic-bridge.js +451 -0
- package/dist/bridges/hyperbolic-bridge.js.map +1 -0
- package/dist/bridges/index.d.ts +10 -0
- package/dist/bridges/index.d.ts.map +1 -0
- package/dist/bridges/index.js +8 -0
- package/dist/bridges/index.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-tools.d.ts +34 -0
- package/dist/mcp-tools.d.ts.map +1 -0
- package/dist/mcp-tools.js +740 -0
- package/dist/mcp-tools.js.map +1 -0
- package/dist/types.d.ts +1013 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +199 -0
- package/dist/types.js.map +1 -0
- package/package.json +101 -0
|
@@ -0,0 +1,451 @@
|
|
|
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 { clipToBall, poincareDistance, mobiusAdd, expMap, logMap, POINCARE_BALL_EPS, } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Default embedding configuration
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_EMBED_CONFIG = {
|
|
12
|
+
dimensions: 32,
|
|
13
|
+
curvature: -1.0,
|
|
14
|
+
learnCurvature: true,
|
|
15
|
+
epochs: 100,
|
|
16
|
+
learningRate: 0.01,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Hyperbolic Embeddings Bridge
|
|
20
|
+
*/
|
|
21
|
+
export class HyperbolicBridge {
|
|
22
|
+
name = 'hyperbolic-reasoning-bridge';
|
|
23
|
+
version = '0.1.0';
|
|
24
|
+
_status = 'unloaded';
|
|
25
|
+
_module = null;
|
|
26
|
+
_indices = new Map();
|
|
27
|
+
get status() {
|
|
28
|
+
return this._status;
|
|
29
|
+
}
|
|
30
|
+
get initialized() {
|
|
31
|
+
return this._status === 'ready';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Initialize the WASM module
|
|
35
|
+
*/
|
|
36
|
+
async initialize() {
|
|
37
|
+
if (this._status === 'ready')
|
|
38
|
+
return;
|
|
39
|
+
if (this._status === 'loading')
|
|
40
|
+
return;
|
|
41
|
+
this._status = 'loading';
|
|
42
|
+
try {
|
|
43
|
+
// Dynamic import - module may not be installed
|
|
44
|
+
const wasmModule = await import(/* webpackIgnore: true */ '@ruvector/hyperbolic-hnsw-wasm').catch(() => null);
|
|
45
|
+
if (wasmModule) {
|
|
46
|
+
this._module = wasmModule;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this._module = this.createMockModule();
|
|
50
|
+
}
|
|
51
|
+
this._status = 'ready';
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
this._status = 'error';
|
|
55
|
+
throw new Error(`Failed to initialize HyperbolicBridge: ${error instanceof Error ? error.message : String(error)}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Dispose of resources
|
|
60
|
+
*/
|
|
61
|
+
async dispose() {
|
|
62
|
+
this._indices.clear();
|
|
63
|
+
this._module = null;
|
|
64
|
+
this._status = 'unloaded';
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Embed a hierarchy into hyperbolic space
|
|
68
|
+
*/
|
|
69
|
+
async embedHierarchy(hierarchy, config = {}) {
|
|
70
|
+
if (!this._module) {
|
|
71
|
+
throw new Error('HyperbolicBridge not initialized');
|
|
72
|
+
}
|
|
73
|
+
const mergedConfig = { ...DEFAULT_EMBED_CONFIG, ...config };
|
|
74
|
+
this.validateHierarchy(hierarchy);
|
|
75
|
+
// Initialize embeddings
|
|
76
|
+
const embeddings = new Map();
|
|
77
|
+
const nodeIndex = new Map();
|
|
78
|
+
const parentMap = new Map();
|
|
79
|
+
hierarchy.nodes.forEach((node, idx) => {
|
|
80
|
+
nodeIndex.set(node.id, idx);
|
|
81
|
+
parentMap.set(node.id, node.parent);
|
|
82
|
+
});
|
|
83
|
+
// Find root(s) and compute depths
|
|
84
|
+
const depths = new Map();
|
|
85
|
+
const computeDepth = (nodeId) => {
|
|
86
|
+
if (depths.has(nodeId))
|
|
87
|
+
return depths.get(nodeId);
|
|
88
|
+
const parent = parentMap.get(nodeId);
|
|
89
|
+
if (parent === null || parent === undefined) {
|
|
90
|
+
depths.set(nodeId, 0);
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
const depth = computeDepth(parent) + 1;
|
|
94
|
+
depths.set(nodeId, depth);
|
|
95
|
+
return depth;
|
|
96
|
+
};
|
|
97
|
+
hierarchy.nodes.forEach(node => computeDepth(node.id));
|
|
98
|
+
// Initialize random embeddings
|
|
99
|
+
const rawEmbeddings = new Map();
|
|
100
|
+
for (const node of hierarchy.nodes) {
|
|
101
|
+
const depth = depths.get(node.id) ?? 0;
|
|
102
|
+
const embedding = new Float32Array(mergedConfig.dimensions);
|
|
103
|
+
// Initialize with depth-based radius
|
|
104
|
+
// Root near center, deeper nodes near boundary
|
|
105
|
+
const maxDepth = Math.max(...Array.from(depths.values()));
|
|
106
|
+
const targetRadius = 0.1 + 0.8 * (depth / (maxDepth + 1));
|
|
107
|
+
// Random direction
|
|
108
|
+
let norm = 0;
|
|
109
|
+
for (let i = 0; i < mergedConfig.dimensions; i++) {
|
|
110
|
+
embedding[i] = (Math.random() - 0.5) * 2;
|
|
111
|
+
norm += embedding[i] * embedding[i];
|
|
112
|
+
}
|
|
113
|
+
norm = Math.sqrt(norm);
|
|
114
|
+
// Scale to target radius
|
|
115
|
+
for (let i = 0; i < mergedConfig.dimensions; i++) {
|
|
116
|
+
embedding[i] = (embedding[i] / norm) * targetRadius;
|
|
117
|
+
}
|
|
118
|
+
rawEmbeddings.set(node.id, embedding);
|
|
119
|
+
}
|
|
120
|
+
// Optimization loop using Riemannian SGD
|
|
121
|
+
let curvature = mergedConfig.curvature;
|
|
122
|
+
for (let epoch = 0; epoch < mergedConfig.epochs; epoch++) {
|
|
123
|
+
const lr = mergedConfig.learningRate * Math.pow(0.99, epoch);
|
|
124
|
+
// For each edge (parent-child pair), minimize hyperbolic distance
|
|
125
|
+
for (const node of hierarchy.nodes) {
|
|
126
|
+
if (node.parent === null)
|
|
127
|
+
continue;
|
|
128
|
+
const childEmb = rawEmbeddings.get(node.id);
|
|
129
|
+
const parentEmb = rawEmbeddings.get(node.parent);
|
|
130
|
+
if (!childEmb || !parentEmb)
|
|
131
|
+
continue;
|
|
132
|
+
// Compute gradient of hyperbolic distance
|
|
133
|
+
const grad = this.computeDistanceGradient(childEmb, parentEmb, curvature);
|
|
134
|
+
// Parent should be closer to origin than child
|
|
135
|
+
const childNorm = Math.sqrt(childEmb.reduce((s, v) => s + v * v, 0));
|
|
136
|
+
const parentNorm = Math.sqrt(parentEmb.reduce((s, v) => s + v * v, 0));
|
|
137
|
+
if (parentNorm > childNorm * 0.9) {
|
|
138
|
+
// Push parent toward origin
|
|
139
|
+
for (let i = 0; i < mergedConfig.dimensions; i++) {
|
|
140
|
+
parentEmb[i] = parentEmb[i] * 0.95;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Apply gradient update in tangent space
|
|
144
|
+
const childTangent = logMap(childEmb, curvature);
|
|
145
|
+
for (let i = 0; i < mergedConfig.dimensions; i++) {
|
|
146
|
+
childTangent[i] -= lr * grad.child[i];
|
|
147
|
+
}
|
|
148
|
+
const newChildEmb = expMap(childTangent, curvature);
|
|
149
|
+
rawEmbeddings.set(node.id, clipToBall(newChildEmb, curvature));
|
|
150
|
+
}
|
|
151
|
+
// Learn curvature if enabled
|
|
152
|
+
if (mergedConfig.learnCurvature && epoch % 10 === 0) {
|
|
153
|
+
const curvatureGrad = this.estimateCurvatureGradient(hierarchy, rawEmbeddings, curvature);
|
|
154
|
+
curvature = Math.max(-10, Math.min(-0.01, curvature - lr * curvatureGrad));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Create final embeddings
|
|
158
|
+
for (const [nodeId, rawEmb] of rawEmbeddings) {
|
|
159
|
+
embeddings.set(nodeId, {
|
|
160
|
+
coordinates: clipToBall(rawEmb, curvature),
|
|
161
|
+
curvature,
|
|
162
|
+
dimension: mergedConfig.dimensions,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
// Compute quality metrics
|
|
166
|
+
const metrics = this.computeEmbeddingMetrics(hierarchy, embeddings);
|
|
167
|
+
return {
|
|
168
|
+
embeddings,
|
|
169
|
+
model: 'poincare_ball',
|
|
170
|
+
curvature,
|
|
171
|
+
dimension: mergedConfig.dimensions,
|
|
172
|
+
metrics,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Compute hyperbolic distance between two points
|
|
177
|
+
*/
|
|
178
|
+
distance(a, b) {
|
|
179
|
+
if (a.curvature !== b.curvature) {
|
|
180
|
+
throw new Error('Cannot compute distance between points with different curvatures');
|
|
181
|
+
}
|
|
182
|
+
return poincareDistance(a.coordinates, b.coordinates, a.curvature);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Check if one point is ancestor of another (closer to origin)
|
|
186
|
+
*/
|
|
187
|
+
isAncestor(parent, child, threshold = 0.1) {
|
|
188
|
+
const parentNorm = Math.sqrt(parent.coordinates.reduce((s, v) => s + v * v, 0));
|
|
189
|
+
const childNorm = Math.sqrt(child.coordinates.reduce((s, v) => s + v * v, 0));
|
|
190
|
+
return parentNorm < childNorm - threshold;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get hierarchy depth from hyperbolic point
|
|
194
|
+
*/
|
|
195
|
+
hierarchyDepth(point) {
|
|
196
|
+
const norm = Math.sqrt(point.coordinates.reduce((s, v) => s + v * v, 0));
|
|
197
|
+
return Math.atanh(Math.min(norm, 1 - POINCARE_BALL_EPS));
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Create or get an index
|
|
201
|
+
*/
|
|
202
|
+
createIndex(id, dimension, curvature) {
|
|
203
|
+
if (this._indices.has(id)) {
|
|
204
|
+
throw new Error(`Index ${id} already exists`);
|
|
205
|
+
}
|
|
206
|
+
this._indices.set(id, {
|
|
207
|
+
id,
|
|
208
|
+
embeddings: new Map(),
|
|
209
|
+
curvature,
|
|
210
|
+
dimension,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Add point to index
|
|
215
|
+
*/
|
|
216
|
+
addToIndex(indexId, nodeId, point) {
|
|
217
|
+
const index = this._indices.get(indexId);
|
|
218
|
+
if (!index) {
|
|
219
|
+
throw new Error(`Index ${indexId} not found`);
|
|
220
|
+
}
|
|
221
|
+
index.embeddings.set(nodeId, point);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Search in hyperbolic space
|
|
225
|
+
*/
|
|
226
|
+
async search(query, indexId, k, mode = 'nearest') {
|
|
227
|
+
const startTime = performance.now();
|
|
228
|
+
const index = this._indices.get(indexId);
|
|
229
|
+
if (!index) {
|
|
230
|
+
throw new Error(`Index ${indexId} not found`);
|
|
231
|
+
}
|
|
232
|
+
const results = [];
|
|
233
|
+
const queryDepth = this.hierarchyDepth(query);
|
|
234
|
+
for (const [nodeId, point] of index.embeddings) {
|
|
235
|
+
const dist = this.distance(query, point);
|
|
236
|
+
const nodeDepth = this.hierarchyDepth(point);
|
|
237
|
+
let include = false;
|
|
238
|
+
switch (mode) {
|
|
239
|
+
case 'nearest':
|
|
240
|
+
include = true;
|
|
241
|
+
break;
|
|
242
|
+
case 'subtree':
|
|
243
|
+
// Include nodes deeper than query
|
|
244
|
+
include = this.isAncestor(query, point);
|
|
245
|
+
break;
|
|
246
|
+
case 'ancestors':
|
|
247
|
+
// Include nodes shallower than query
|
|
248
|
+
include = this.isAncestor(point, query);
|
|
249
|
+
break;
|
|
250
|
+
case 'siblings':
|
|
251
|
+
// Include nodes at similar depth
|
|
252
|
+
include = Math.abs(nodeDepth - queryDepth) < 0.5;
|
|
253
|
+
break;
|
|
254
|
+
case 'cone':
|
|
255
|
+
// Include nodes in a hyperbolic cone
|
|
256
|
+
include = this.inCone(query, point, Math.PI / 4);
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
if (include) {
|
|
260
|
+
results.push({
|
|
261
|
+
id: nodeId,
|
|
262
|
+
distance: dist,
|
|
263
|
+
similarity: Math.exp(-dist),
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Sort by distance and take top k
|
|
268
|
+
results.sort((a, b) => a.distance - b.distance);
|
|
269
|
+
const topK = results.slice(0, k);
|
|
270
|
+
return {
|
|
271
|
+
items: topK,
|
|
272
|
+
totalCandidates: results.length,
|
|
273
|
+
searchTimeMs: performance.now() - startTime,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
// ============================================================================
|
|
277
|
+
// Private Helper Methods
|
|
278
|
+
// ============================================================================
|
|
279
|
+
validateHierarchy(hierarchy) {
|
|
280
|
+
if (hierarchy.nodes.length === 0) {
|
|
281
|
+
throw new Error('Hierarchy must have at least one node');
|
|
282
|
+
}
|
|
283
|
+
if (hierarchy.nodes.length > 1_000_000) {
|
|
284
|
+
throw new Error('Hierarchy exceeds maximum size of 1M nodes');
|
|
285
|
+
}
|
|
286
|
+
// Check for cycles
|
|
287
|
+
const visited = new Set();
|
|
288
|
+
const inStack = new Set();
|
|
289
|
+
const hasCycle = (nodeId) => {
|
|
290
|
+
if (inStack.has(nodeId))
|
|
291
|
+
return true;
|
|
292
|
+
if (visited.has(nodeId))
|
|
293
|
+
return false;
|
|
294
|
+
visited.add(nodeId);
|
|
295
|
+
inStack.add(nodeId);
|
|
296
|
+
const node = hierarchy.nodes.find(n => n.id === nodeId);
|
|
297
|
+
if (node?.parent) {
|
|
298
|
+
if (hasCycle(node.parent))
|
|
299
|
+
return true;
|
|
300
|
+
}
|
|
301
|
+
inStack.delete(nodeId);
|
|
302
|
+
return false;
|
|
303
|
+
};
|
|
304
|
+
for (const node of hierarchy.nodes) {
|
|
305
|
+
if (hasCycle(node.id)) {
|
|
306
|
+
throw new Error('Hierarchy contains cycles');
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// Check max depth
|
|
310
|
+
const depths = new Map();
|
|
311
|
+
const computeDepth = (node) => {
|
|
312
|
+
if (depths.has(node.id))
|
|
313
|
+
return depths.get(node.id);
|
|
314
|
+
if (node.parent === null) {
|
|
315
|
+
depths.set(node.id, 0);
|
|
316
|
+
return 0;
|
|
317
|
+
}
|
|
318
|
+
const parent = hierarchy.nodes.find(n => n.id === node.parent);
|
|
319
|
+
if (!parent) {
|
|
320
|
+
depths.set(node.id, 0);
|
|
321
|
+
return 0;
|
|
322
|
+
}
|
|
323
|
+
const depth = computeDepth(parent) + 1;
|
|
324
|
+
depths.set(node.id, depth);
|
|
325
|
+
return depth;
|
|
326
|
+
};
|
|
327
|
+
let maxDepth = 0;
|
|
328
|
+
for (const node of hierarchy.nodes) {
|
|
329
|
+
maxDepth = Math.max(maxDepth, computeDepth(node));
|
|
330
|
+
}
|
|
331
|
+
if (maxDepth > 100) {
|
|
332
|
+
throw new Error(`Hierarchy too deep: ${maxDepth} > 100`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
computeDistanceGradient(x, y, c) {
|
|
336
|
+
const eps = 1e-6;
|
|
337
|
+
const childGrad = new Float32Array(x.length);
|
|
338
|
+
const parentGrad = new Float32Array(x.length);
|
|
339
|
+
const d0 = poincareDistance(x, y, c);
|
|
340
|
+
for (let i = 0; i < x.length; i++) {
|
|
341
|
+
// Gradient w.r.t. x
|
|
342
|
+
const xPlus = new Float32Array(x);
|
|
343
|
+
xPlus[i] += eps;
|
|
344
|
+
childGrad[i] = (poincareDistance(xPlus, y, c) - d0) / eps;
|
|
345
|
+
// Gradient w.r.t. y
|
|
346
|
+
const yPlus = new Float32Array(y);
|
|
347
|
+
yPlus[i] += eps;
|
|
348
|
+
parentGrad[i] = (poincareDistance(x, yPlus, c) - d0) / eps;
|
|
349
|
+
}
|
|
350
|
+
return { child: childGrad, parent: parentGrad };
|
|
351
|
+
}
|
|
352
|
+
estimateCurvatureGradient(hierarchy, embeddings, curvature) {
|
|
353
|
+
const eps = 0.01;
|
|
354
|
+
let loss0 = 0;
|
|
355
|
+
let lossPlus = 0;
|
|
356
|
+
for (const node of hierarchy.nodes) {
|
|
357
|
+
if (node.parent === null)
|
|
358
|
+
continue;
|
|
359
|
+
const childEmb = embeddings.get(node.id);
|
|
360
|
+
const parentEmb = embeddings.get(node.parent);
|
|
361
|
+
if (!childEmb || !parentEmb)
|
|
362
|
+
continue;
|
|
363
|
+
loss0 += poincareDistance(childEmb, parentEmb, curvature);
|
|
364
|
+
lossPlus += poincareDistance(childEmb, parentEmb, curvature + eps);
|
|
365
|
+
}
|
|
366
|
+
return (lossPlus - loss0) / eps;
|
|
367
|
+
}
|
|
368
|
+
computeEmbeddingMetrics(hierarchy, embeddings) {
|
|
369
|
+
let totalDistortion = 0;
|
|
370
|
+
let maxDistortion = 0;
|
|
371
|
+
let count = 0;
|
|
372
|
+
// Compute distortion for parent-child pairs
|
|
373
|
+
for (const node of hierarchy.nodes) {
|
|
374
|
+
if (node.parent === null)
|
|
375
|
+
continue;
|
|
376
|
+
const childEmb = embeddings.get(node.id);
|
|
377
|
+
const parentEmb = embeddings.get(node.parent);
|
|
378
|
+
if (!childEmb || !parentEmb)
|
|
379
|
+
continue;
|
|
380
|
+
const hypDist = this.distance(childEmb, parentEmb);
|
|
381
|
+
const idealDist = 1.0; // Target distance between parent and child
|
|
382
|
+
const distortion = Math.abs(hypDist - idealDist) / idealDist;
|
|
383
|
+
totalDistortion += distortion;
|
|
384
|
+
maxDistortion = Math.max(maxDistortion, distortion);
|
|
385
|
+
count++;
|
|
386
|
+
}
|
|
387
|
+
// Mean Average Precision for hierarchy preservation
|
|
388
|
+
let mapScore = 0;
|
|
389
|
+
let mapCount = 0;
|
|
390
|
+
for (const node of hierarchy.nodes) {
|
|
391
|
+
if (node.parent === null)
|
|
392
|
+
continue;
|
|
393
|
+
const childEmb = embeddings.get(node.id);
|
|
394
|
+
const parentEmb = embeddings.get(node.parent);
|
|
395
|
+
if (!childEmb || !parentEmb)
|
|
396
|
+
continue;
|
|
397
|
+
// Check if parent is correctly identified as ancestor
|
|
398
|
+
if (this.isAncestor(parentEmb, childEmb)) {
|
|
399
|
+
mapScore += 1;
|
|
400
|
+
}
|
|
401
|
+
mapCount++;
|
|
402
|
+
}
|
|
403
|
+
return {
|
|
404
|
+
distortionMean: count > 0 ? totalDistortion / count : 0,
|
|
405
|
+
distortionMax: maxDistortion,
|
|
406
|
+
mapScore: mapCount > 0 ? mapScore / mapCount : 1,
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
inCone(apex, point, angle) {
|
|
410
|
+
// Check if point is within a hyperbolic cone with apex at the given point
|
|
411
|
+
const apexNorm = Math.sqrt(apex.coordinates.reduce((s, v) => s + v * v, 0));
|
|
412
|
+
const pointNorm = Math.sqrt(point.coordinates.reduce((s, v) => s + v * v, 0));
|
|
413
|
+
if (pointNorm <= apexNorm)
|
|
414
|
+
return false;
|
|
415
|
+
// Compute angular distance
|
|
416
|
+
const dot = apex.coordinates.reduce((s, v, i) => s + v * (point.coordinates[i] ?? 0), 0);
|
|
417
|
+
const cosAngle = dot / (apexNorm * pointNorm + 1e-10);
|
|
418
|
+
return Math.acos(Math.min(1, Math.max(-1, cosAngle))) < angle;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Create mock module for development
|
|
422
|
+
*/
|
|
423
|
+
createMockModule() {
|
|
424
|
+
return {
|
|
425
|
+
embed_poincare: (v, c) => expMap(v, c),
|
|
426
|
+
embed_lorentz: (v) => v,
|
|
427
|
+
poincare_distance: poincareDistance,
|
|
428
|
+
lorentz_distance: () => 0,
|
|
429
|
+
mobius_add: mobiusAdd,
|
|
430
|
+
mobius_scalar: (r, x, c) => {
|
|
431
|
+
const result = expMap(new Float32Array(x.map(v => v * r)), c);
|
|
432
|
+
return clipToBall(result, c);
|
|
433
|
+
},
|
|
434
|
+
exp_map: expMap,
|
|
435
|
+
log_map: logMap,
|
|
436
|
+
create_index: () => 0,
|
|
437
|
+
add_to_index: () => undefined,
|
|
438
|
+
search_index: () => new Float32Array(0),
|
|
439
|
+
alloc: () => 0,
|
|
440
|
+
dealloc: () => undefined,
|
|
441
|
+
memory: new WebAssembly.Memory({ initial: 1 }),
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Create a new HyperbolicBridge instance
|
|
447
|
+
*/
|
|
448
|
+
export function createHyperbolicBridge() {
|
|
449
|
+
return new HyperbolicBridge();
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=hyperbolic-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperbolic-bridge.js","sourceRoot":"","sources":["../../src/bridges/hyperbolic-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperbolic Reasoning Plugin - Bridges Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* @module @claude-flow/plugin-hyperbolic-reasoning/bridges
|
|
5
|
+
*/
|
|
6
|
+
export { HyperbolicBridge, createHyperbolicBridge, } from './hyperbolic-bridge.js';
|
|
7
|
+
export type { WasmModuleStatus } from './hyperbolic-bridge.js';
|
|
8
|
+
export { GnnBridge, createGnnBridge, } from './gnn-bridge.js';
|
|
9
|
+
export type { GnnConfig, Graph, GnnResult, EntailmentPrediction, } from './gnn-bridge.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridges/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EACL,SAAS,EACT,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,SAAS,EACT,KAAK,EACL,SAAS,EACT,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperbolic Reasoning Plugin - Bridges Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* @module @claude-flow/plugin-hyperbolic-reasoning/bridges
|
|
5
|
+
*/
|
|
6
|
+
export { HyperbolicBridge, createHyperbolicBridge, } from './hyperbolic-bridge.js';
|
|
7
|
+
export { GnnBridge, createGnnBridge, } from './gnn-bridge.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridges/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,SAAS,EACT,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @claude-flow/plugin-hyperbolic-reasoning
|
|
3
|
+
*
|
|
4
|
+
* Hyperbolic reasoning plugin for Claude Flow V3.
|
|
5
|
+
*
|
|
6
|
+
* Provides MCP tools for:
|
|
7
|
+
* - Hierarchy embedding in Poincare ball
|
|
8
|
+
* - Taxonomic reasoning (IS-A, subsumption, LCA)
|
|
9
|
+
* - Hierarchically-aware semantic search
|
|
10
|
+
* - Hierarchy comparison and alignment
|
|
11
|
+
* - Entailment graph construction
|
|
12
|
+
*
|
|
13
|
+
* @module @claude-flow/plugin-hyperbolic-reasoning
|
|
14
|
+
* @version 3.0.0-alpha.1
|
|
15
|
+
*/
|
|
16
|
+
export type { HyperbolicPoint, HyperbolicModel, MobiusTransform, HierarchyNode, HierarchyEdge, Hierarchy, EmbeddedHierarchy, TaxonomicQueryType, TaxonomicQuery, InferenceConfig, TaxonomicResult, SearchMode, SearchConstraints, SearchResultItem, SearchResult, AlignmentMethod, ComparisonMetric, NodeAlignment, ComparisonResult, Concept, EntailmentRelation, EntailmentAction, PruneStrategy, EntailmentGraph, EntailmentQueryResult, MCPTool, MCPToolResult, MCPToolInputSchema, ToolContext, Logger, HyperbolicReasoningConfig, HyperbolicReasoningBridge, } from './types.js';
|
|
17
|
+
export { HierarchyNodeSchema, HierarchyEdgeSchema, HierarchySchema, EmbedHierarchyInputSchema, TaxonomicReasonInputSchema, SemanticSearchInputSchema, HierarchyCompareInputSchema, ConceptSchema, EntailmentGraphInputSchema, successResult, errorResult, POINCARE_BALL_EPS, MAX_NORM, RESOURCE_LIMITS, } from './types.js';
|
|
18
|
+
export { clipToBall, poincareDistance, mobiusAdd, expMap, logMap, } from './types.js';
|
|
19
|
+
export { HyperbolicBridge, createHyperbolicBridge } from './bridges/hyperbolic-bridge.js';
|
|
20
|
+
export { GnnBridge, createGnnBridge } from './bridges/gnn-bridge.js';
|
|
21
|
+
export type { WasmModuleStatus } from './bridges/hyperbolic-bridge.js';
|
|
22
|
+
export type { GnnConfig, Graph, GnnResult, EntailmentPrediction, } from './bridges/gnn-bridge.js';
|
|
23
|
+
export { hyperbolicReasoningTools, toolHandlers, getTool, getToolNames, embedHierarchyTool, taxonomicReasonTool, semanticSearchTool, hierarchyCompareTool, entailmentGraphTool, } from './mcp-tools.js';
|
|
24
|
+
export { default } from './mcp-tools.js';
|
|
25
|
+
/**
|
|
26
|
+
* Plugin metadata
|
|
27
|
+
*/
|
|
28
|
+
export declare const pluginMetadata: {
|
|
29
|
+
readonly name: "@claude-flow/plugin-hyperbolic-reasoning";
|
|
30
|
+
readonly version: "3.0.0-alpha.1";
|
|
31
|
+
readonly description: "Hyperbolic geometry for hierarchical reasoning";
|
|
32
|
+
readonly category: "exotic";
|
|
33
|
+
readonly author: "rUv";
|
|
34
|
+
readonly license: "MIT";
|
|
35
|
+
readonly repository: "https://github.com/ruvnet/claude-flow";
|
|
36
|
+
readonly tools: readonly ["hyperbolic_embed_hierarchy", "hyperbolic_taxonomic_reason", "hyperbolic_semantic_search", "hyperbolic_hierarchy_compare", "hyperbolic_entailment_graph"];
|
|
37
|
+
readonly bridges: readonly ["hyperbolic-bridge", "gnn-bridge"];
|
|
38
|
+
readonly wasmPackages: readonly ["@ruvector/hyperbolic-hnsw-wasm", "@ruvector/attention-wasm", "@ruvector/gnn-wasm", "@ruvector/sona"];
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Initialize the plugin
|
|
42
|
+
*/
|
|
43
|
+
export declare function initializePlugin(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Plugin configuration validator
|
|
46
|
+
*/
|
|
47
|
+
export declare function validateConfig(config: unknown): config is HyperbolicReasoningConfig;
|
|
48
|
+
/**
|
|
49
|
+
* Default plugin configuration
|
|
50
|
+
*/
|
|
51
|
+
export declare const defaultConfig: HyperbolicReasoningConfig;
|
|
52
|
+
import type { HyperbolicReasoningConfig } from './types.js';
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,YAAY,EAEV,eAAe,EACf,eAAe,EACf,eAAe,EAEf,aAAa,EACb,aAAa,EACb,SAAS,EACT,iBAAiB,EAEjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,eAAe,EAEf,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EAEZ,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAEhB,OAAO,EACP,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,qBAAqB,EAErB,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,MAAM,EACN,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,aAAa,EACb,0BAA0B,EAC1B,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,MAAM,EACN,MAAM,GACP,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EACV,SAAS,EACT,KAAK,EACL,SAAS,EACT,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;CAsBjB,CAAC;AAEX;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAatD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,yBAAyB,CAWnF;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,yBAmB3B,CAAC;AAGF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @claude-flow/plugin-hyperbolic-reasoning
|
|
3
|
+
*
|
|
4
|
+
* Hyperbolic reasoning plugin for Claude Flow V3.
|
|
5
|
+
*
|
|
6
|
+
* Provides MCP tools for:
|
|
7
|
+
* - Hierarchy embedding in Poincare ball
|
|
8
|
+
* - Taxonomic reasoning (IS-A, subsumption, LCA)
|
|
9
|
+
* - Hierarchically-aware semantic search
|
|
10
|
+
* - Hierarchy comparison and alignment
|
|
11
|
+
* - Entailment graph construction
|
|
12
|
+
*
|
|
13
|
+
* @module @claude-flow/plugin-hyperbolic-reasoning
|
|
14
|
+
* @version 3.0.0-alpha.1
|
|
15
|
+
*/
|
|
16
|
+
// Zod Schemas
|
|
17
|
+
export { HierarchyNodeSchema, HierarchyEdgeSchema, HierarchySchema, EmbedHierarchyInputSchema, TaxonomicReasonInputSchema, SemanticSearchInputSchema, HierarchyCompareInputSchema, ConceptSchema, EntailmentGraphInputSchema, successResult, errorResult, POINCARE_BALL_EPS, MAX_NORM, RESOURCE_LIMITS, } from './types.js';
|
|
18
|
+
// Hyperbolic Math Utilities
|
|
19
|
+
export { clipToBall, poincareDistance, mobiusAdd, expMap, logMap, } from './types.js';
|
|
20
|
+
// Bridges
|
|
21
|
+
export { HyperbolicBridge, createHyperbolicBridge } from './bridges/hyperbolic-bridge.js';
|
|
22
|
+
export { GnnBridge, createGnnBridge } from './bridges/gnn-bridge.js';
|
|
23
|
+
// MCP Tools
|
|
24
|
+
export { hyperbolicReasoningTools, toolHandlers, getTool, getToolNames, embedHierarchyTool, taxonomicReasonTool, semanticSearchTool, hierarchyCompareTool, entailmentGraphTool, } from './mcp-tools.js';
|
|
25
|
+
// Re-export default
|
|
26
|
+
export { default } from './mcp-tools.js';
|
|
27
|
+
/**
|
|
28
|
+
* Plugin metadata
|
|
29
|
+
*/
|
|
30
|
+
export const pluginMetadata = {
|
|
31
|
+
name: '@claude-flow/plugin-hyperbolic-reasoning',
|
|
32
|
+
version: '3.0.0-alpha.1',
|
|
33
|
+
description: 'Hyperbolic geometry for hierarchical reasoning',
|
|
34
|
+
category: 'exotic',
|
|
35
|
+
author: 'rUv',
|
|
36
|
+
license: 'MIT',
|
|
37
|
+
repository: 'https://github.com/ruvnet/claude-flow',
|
|
38
|
+
tools: [
|
|
39
|
+
'hyperbolic_embed_hierarchy',
|
|
40
|
+
'hyperbolic_taxonomic_reason',
|
|
41
|
+
'hyperbolic_semantic_search',
|
|
42
|
+
'hyperbolic_hierarchy_compare',
|
|
43
|
+
'hyperbolic_entailment_graph',
|
|
44
|
+
],
|
|
45
|
+
bridges: ['hyperbolic-bridge', 'gnn-bridge'],
|
|
46
|
+
wasmPackages: [
|
|
47
|
+
'@ruvector/hyperbolic-hnsw-wasm',
|
|
48
|
+
'@ruvector/attention-wasm',
|
|
49
|
+
'@ruvector/gnn-wasm',
|
|
50
|
+
'@ruvector/sona',
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Initialize the plugin
|
|
55
|
+
*/
|
|
56
|
+
export async function initializePlugin() {
|
|
57
|
+
const { createHyperbolicBridge } = await import('./bridges/hyperbolic-bridge.js');
|
|
58
|
+
const { createGnnBridge } = await import('./bridges/gnn-bridge.js');
|
|
59
|
+
const hyperbolicBridge = createHyperbolicBridge();
|
|
60
|
+
const gnnBridge = createGnnBridge();
|
|
61
|
+
await Promise.all([
|
|
62
|
+
hyperbolicBridge.initialize(),
|
|
63
|
+
gnnBridge.initialize(),
|
|
64
|
+
]);
|
|
65
|
+
console.info('[hyperbolic-reasoning] Plugin initialized');
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Plugin configuration validator
|
|
69
|
+
*/
|
|
70
|
+
export function validateConfig(config) {
|
|
71
|
+
if (!config || typeof config !== 'object')
|
|
72
|
+
return false;
|
|
73
|
+
const c = config;
|
|
74
|
+
return (typeof c['embedding'] === 'object' &&
|
|
75
|
+
typeof c['search'] === 'object' &&
|
|
76
|
+
typeof c['entailment'] === 'object' &&
|
|
77
|
+
typeof c['resourceLimits'] === 'object');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Default plugin configuration
|
|
81
|
+
*/
|
|
82
|
+
export const defaultConfig = {
|
|
83
|
+
embedding: {
|
|
84
|
+
defaultDimensions: 32,
|
|
85
|
+
defaultCurvature: -1.0,
|
|
86
|
+
maxNodes: 1000000,
|
|
87
|
+
},
|
|
88
|
+
search: {
|
|
89
|
+
maxTopK: 10000,
|
|
90
|
+
defaultTopK: 10,
|
|
91
|
+
},
|
|
92
|
+
entailment: {
|
|
93
|
+
defaultThreshold: 0.7,
|
|
94
|
+
maxConcepts: 100000,
|
|
95
|
+
},
|
|
96
|
+
resourceLimits: {
|
|
97
|
+
maxMemoryBytes: 2147483648,
|
|
98
|
+
maxCpuTimeMs: 300000,
|
|
99
|
+
maxDepth: 100,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=index.js.map
|