@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,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"}
@@ -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