agentic-flow 2.0.1-alpha.5 → 2.0.1-alpha.8
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/CHANGELOG.md +26 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentdb/controllers/EmbeddingService.d.ts +37 -0
- package/dist/agentdb/controllers/EmbeddingService.d.ts.map +1 -0
- package/dist/agentdb/controllers/EmbeddingService.js +1 -0
- package/dist/agentdb/controllers/EmbeddingService.js.map +1 -0
- package/dist/billing/mcp/tools.d.ts.map +1 -1
- package/dist/billing/mcp/tools.js +2 -0
- package/dist/billing/mcp/tools.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts +18 -0
- package/dist/cli/commands/hooks.d.ts.map +1 -0
- package/dist/cli/commands/hooks.js +750 -0
- package/dist/cli/commands/hooks.js.map +1 -0
- package/dist/cli-proxy.js +26 -1
- package/dist/cli-proxy.js.map +1 -1
- package/dist/core/agentdb-fast.js +3 -3
- package/dist/core/agentdb-fast.js.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.js +32 -17
- package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
- package/dist/core/attention-native.d.ts +1 -0
- package/dist/core/attention-native.d.ts.map +1 -1
- package/dist/core/attention-native.js +6 -1
- package/dist/core/attention-native.js.map +1 -1
- package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
- package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
- package/dist/intelligence/RuVectorIntelligence.d.ts +362 -0
- package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -0
- package/dist/intelligence/RuVectorIntelligence.js +852 -0
- package/dist/intelligence/RuVectorIntelligence.js.map +1 -0
- package/dist/intelligence/index.d.ts +14 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +14 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/llm/RuvLLMOrchestrator.d.ts +184 -0
- package/dist/llm/RuvLLMOrchestrator.d.ts.map +1 -0
- package/dist/llm/RuvLLMOrchestrator.js +442 -0
- package/dist/llm/RuvLLMOrchestrator.js.map +1 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +8 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.js +86 -21
- package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
- package/dist/mcp/fastmcp/servers/hooks-server.d.ts +15 -0
- package/dist/mcp/fastmcp/servers/hooks-server.d.ts.map +1 -0
- package/dist/mcp/fastmcp/servers/hooks-server.js +63 -0
- package/dist/mcp/fastmcp/servers/hooks-server.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts +20 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.js +110 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.js +276 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.d.ts +6 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.js +164 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/index.d.ts +28 -0
- package/dist/mcp/fastmcp/tools/hooks/index.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/index.js +59 -0
- package/dist/mcp/fastmcp/tools/hooks/index.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts +91 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +269 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts +58 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js +416 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts +6 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.js +137 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.js +91 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts +12 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.js +146 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.js +70 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts +14 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.js +121 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js +171 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/route.d.ts +12 -0
- package/dist/mcp/fastmcp/tools/hooks/route.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/route.js +267 -0
- package/dist/mcp/fastmcp/tools/hooks/route.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.d.ts +46 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.js +159 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.js +151 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.js.map +1 -0
- package/dist/mcp/tools/agent-booster-tools.d.ts +10 -1
- package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
- package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
- package/dist/mcp/tools/sona-tools.js +15 -3
- package/dist/mcp/tools/sona-tools.js.map +1 -1
- package/dist/memory/SharedMemoryPool.d.ts +16 -3
- package/dist/memory/SharedMemoryPool.d.ts.map +1 -1
- package/dist/memory/SharedMemoryPool.js +33 -1
- package/dist/memory/SharedMemoryPool.js.map +1 -1
- package/dist/middleware/auth.middleware.d.ts +114 -0
- package/dist/middleware/auth.middleware.d.ts.map +1 -0
- package/dist/middleware/auth.middleware.js +222 -0
- package/dist/middleware/auth.middleware.js.map +1 -0
- package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
- package/dist/optimizations/agent-booster-migration.js.map +1 -1
- package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-gemini.js.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
- package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-requesty.js.map +1 -1
- package/dist/proxy/quic-proxy.d.ts +0 -1
- package/dist/proxy/quic-proxy.d.ts.map +1 -1
- package/dist/proxy/quic-proxy.js +2 -1
- package/dist/proxy/quic-proxy.js.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.js +12 -1
- package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
- package/dist/reasoningbank/HybridBackend.d.ts +9 -0
- package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
- package/dist/reasoningbank/HybridBackend.js +48 -4
- package/dist/reasoningbank/HybridBackend.js.map +1 -1
- package/dist/reasoningbank/backend-selector.d.ts +1 -1
- package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
- package/dist/reasoningbank/backend-selector.js.map +1 -1
- package/dist/reasoningbank/index-new.d.ts +0 -6
- package/dist/reasoningbank/index-new.d.ts.map +1 -1
- package/dist/reasoningbank/index-new.js +9 -7
- package/dist/reasoningbank/index-new.js.map +1 -1
- package/dist/reasoningbank/index.d.ts +1 -6
- package/dist/reasoningbank/index.d.ts.map +1 -1
- package/dist/reasoningbank/index.js +10 -7
- package/dist/reasoningbank/index.js.map +1 -1
- package/dist/router/providers/onnx-local.d.ts.map +1 -1
- package/dist/router/providers/onnx-local.js +3 -1
- package/dist/router/providers/onnx-local.js.map +1 -1
- package/dist/routing/CircuitBreakerRouter.d.ts +187 -0
- package/dist/routing/CircuitBreakerRouter.d.ts.map +1 -0
- package/dist/routing/CircuitBreakerRouter.js +460 -0
- package/dist/routing/CircuitBreakerRouter.js.map +1 -0
- package/dist/routing/SemanticRouter.d.ts +164 -0
- package/dist/routing/SemanticRouter.d.ts.map +1 -0
- package/dist/routing/SemanticRouter.js +291 -0
- package/dist/routing/SemanticRouter.js.map +1 -0
- package/dist/routing/index.d.ts +12 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +10 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/services/embedding-service.d.ts.map +1 -1
- package/dist/services/embedding-service.js +5 -2
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/sona-agent-training.js +1 -1
- package/dist/services/sona-agent-training.js.map +1 -1
- package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
- package/dist/services/sona-agentdb-integration.js +10 -5
- package/dist/services/sona-agentdb-integration.js.map +1 -1
- package/dist/services/sona-service.d.ts +6 -6
- package/dist/services/sona-service.d.ts.map +1 -1
- package/dist/services/sona-service.js +3 -1
- package/dist/services/sona-service.js.map +1 -1
- package/dist/utils/audit-logger.d.ts +115 -0
- package/dist/utils/audit-logger.d.ts.map +1 -0
- package/dist/utils/audit-logger.js +228 -0
- package/dist/utils/audit-logger.js.map +1 -0
- package/dist/utils/cli.d.ts +1 -1
- package/dist/utils/cli.d.ts.map +1 -1
- package/dist/utils/cli.js +5 -0
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils/input-validator.d.ts +116 -0
- package/dist/utils/input-validator.d.ts.map +1 -0
- package/dist/utils/input-validator.js +299 -0
- package/dist/utils/input-validator.js.map +1 -0
- package/dist/utils/rate-limiter.js +2 -2
- package/dist/utils/rate-limiter.js.map +1 -1
- package/package.json +5 -2
- package/wasm/reasoningbank/reasoningbank_wasm_bg.js +2 -2
- package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intelligence MCP Tools - Expose RuVector Intelligence via MCP
|
|
3
|
+
*
|
|
4
|
+
* These tools provide direct access to the full RuVector ecosystem:
|
|
5
|
+
* - @ruvector/sona: Micro-LoRA (~0.05ms), EWC++, Trajectory tracking
|
|
6
|
+
* - @ruvector/attention: MoE, Flash, Hyperbolic, Graph attention
|
|
7
|
+
* - ruvector core: HNSW indexing (150x faster than brute force)
|
|
8
|
+
*
|
|
9
|
+
* Available both as MCP tools AND CLI hooks.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
import { getIntelligence, routeTaskIntelligent, beginTaskTrajectory, recordTrajectoryStep, endTaskTrajectory, storePattern, findSimilarPatterns, getIntelligenceStats, forceLearningCycle, computeAttentionSimilarity, } from './intelligence-bridge.js';
|
|
13
|
+
/**
|
|
14
|
+
* Intelligence Route Tool
|
|
15
|
+
* Route tasks using SONA Micro-LoRA + MoE Attention + HNSW indexing
|
|
16
|
+
*/
|
|
17
|
+
export const intelligenceRouteTool = {
|
|
18
|
+
name: 'intelligence_route',
|
|
19
|
+
description: 'Route task using RuVector intelligence: SONA Micro-LoRA (~0.05ms) + MoE attention + HNSW (150x faster)',
|
|
20
|
+
parameters: z.object({
|
|
21
|
+
task: z.string().describe('Task description to route'),
|
|
22
|
+
file: z.string().optional().describe('Optional file context'),
|
|
23
|
+
errorContext: z.string().optional().describe('Optional error context for debugging tasks'),
|
|
24
|
+
topK: z.number().optional().default(5).describe('Number of agent candidates to return'),
|
|
25
|
+
}),
|
|
26
|
+
execute: async ({ task, file, errorContext, topK }, { onProgress }) => {
|
|
27
|
+
const startTime = Date.now();
|
|
28
|
+
try {
|
|
29
|
+
const result = await routeTaskIntelligent(task, {
|
|
30
|
+
file,
|
|
31
|
+
errorContext,
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
success: true,
|
|
35
|
+
agent: result.agent,
|
|
36
|
+
confidence: result.confidence,
|
|
37
|
+
alternatives: result.routingResults.slice(1, topK).map(r => ({
|
|
38
|
+
agent: r.agentId,
|
|
39
|
+
confidence: r.confidence,
|
|
40
|
+
})),
|
|
41
|
+
features: result.usedFeatures,
|
|
42
|
+
latencyMs: result.latencyMs,
|
|
43
|
+
engine: 'ruvector-sona-moe-hnsw',
|
|
44
|
+
timestamp: new Date().toISOString(),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return {
|
|
49
|
+
success: false,
|
|
50
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
51
|
+
latencyMs: Date.now() - startTime,
|
|
52
|
+
timestamp: new Date().toISOString(),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Trajectory Start Tool
|
|
59
|
+
* Begin trajectory tracking for learning from task execution
|
|
60
|
+
*/
|
|
61
|
+
export const intelligenceTrajectoryStartTool = {
|
|
62
|
+
name: 'intelligence_trajectory_start',
|
|
63
|
+
description: 'Begin SONA trajectory for learning from task execution. Returns trajectoryId for tracking.',
|
|
64
|
+
parameters: z.object({
|
|
65
|
+
task: z.string().describe('Task description'),
|
|
66
|
+
agent: z.string().describe('Agent executing the task'),
|
|
67
|
+
context: z.string().optional().describe('Additional context'),
|
|
68
|
+
}),
|
|
69
|
+
execute: async ({ task, agent, context }, { onProgress }) => {
|
|
70
|
+
const startTime = Date.now();
|
|
71
|
+
try {
|
|
72
|
+
const fullTask = context ? `${task} [context: ${context}]` : task;
|
|
73
|
+
const result = await beginTaskTrajectory(fullTask, agent);
|
|
74
|
+
if (!result.success) {
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
error: result.error || 'Failed to start trajectory',
|
|
78
|
+
latencyMs: Date.now() - startTime,
|
|
79
|
+
timestamp: new Date().toISOString(),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
success: true,
|
|
84
|
+
trajectoryId: result.trajectoryId,
|
|
85
|
+
message: `Trajectory ${result.trajectoryId} started for agent ${agent}`,
|
|
86
|
+
trackingEnabled: true,
|
|
87
|
+
features: ['micro-lora', 'ewc++', 'attention-patterns'],
|
|
88
|
+
latencyMs: Date.now() - startTime,
|
|
89
|
+
timestamp: new Date().toISOString(),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
96
|
+
latencyMs: Date.now() - startTime,
|
|
97
|
+
timestamp: new Date().toISOString(),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Trajectory Step Tool
|
|
104
|
+
* Record intermediate steps during task execution
|
|
105
|
+
*/
|
|
106
|
+
export const intelligenceTrajectoryStepTool = {
|
|
107
|
+
name: 'intelligence_trajectory_step',
|
|
108
|
+
description: 'Record a step in the trajectory for reinforcement learning',
|
|
109
|
+
parameters: z.object({
|
|
110
|
+
trajectoryId: z.number().describe('Trajectory ID from trajectory_start'),
|
|
111
|
+
action: z.string().describe('Action taken (e.g., "edit-file", "run-test")'),
|
|
112
|
+
reward: z.number().min(-1).max(1).describe('Reward signal (-1 to 1)'),
|
|
113
|
+
file: z.string().optional().describe('File involved'),
|
|
114
|
+
errorFixed: z.boolean().optional().describe('Whether an error was fixed'),
|
|
115
|
+
testPassed: z.boolean().optional().describe('Whether tests passed'),
|
|
116
|
+
}),
|
|
117
|
+
execute: async ({ trajectoryId, action, reward, file, errorFixed, testPassed }, { onProgress }) => {
|
|
118
|
+
const startTime = Date.now();
|
|
119
|
+
try {
|
|
120
|
+
await recordTrajectoryStep(trajectoryId, action, reward, {
|
|
121
|
+
file,
|
|
122
|
+
errorFixed,
|
|
123
|
+
testPassed,
|
|
124
|
+
});
|
|
125
|
+
return {
|
|
126
|
+
success: true,
|
|
127
|
+
trajectoryId,
|
|
128
|
+
action,
|
|
129
|
+
reward,
|
|
130
|
+
message: `Step recorded: ${action} with reward ${reward}`,
|
|
131
|
+
latencyMs: Date.now() - startTime,
|
|
132
|
+
timestamp: new Date().toISOString(),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
return {
|
|
137
|
+
success: false,
|
|
138
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
139
|
+
latencyMs: Date.now() - startTime,
|
|
140
|
+
timestamp: new Date().toISOString(),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Trajectory End Tool
|
|
147
|
+
* Complete trajectory and trigger learning with EWC++
|
|
148
|
+
*/
|
|
149
|
+
export const intelligenceTrajectoryEndTool = {
|
|
150
|
+
name: 'intelligence_trajectory_end',
|
|
151
|
+
description: 'End trajectory, trigger SONA learning with EWC++ (prevents catastrophic forgetting)',
|
|
152
|
+
parameters: z.object({
|
|
153
|
+
trajectoryId: z.number().describe('Trajectory ID from trajectory_start'),
|
|
154
|
+
success: z.boolean().describe('Whether the task was successful'),
|
|
155
|
+
quality: z.number().min(0).max(1).optional().default(0.8).describe('Quality score (0-1)'),
|
|
156
|
+
}),
|
|
157
|
+
execute: async ({ trajectoryId, success, quality }, { onProgress }) => {
|
|
158
|
+
const startTime = Date.now();
|
|
159
|
+
try {
|
|
160
|
+
const outcome = await endTaskTrajectory(trajectoryId, success, quality);
|
|
161
|
+
return {
|
|
162
|
+
success: true,
|
|
163
|
+
trajectoryId,
|
|
164
|
+
taskSuccess: success,
|
|
165
|
+
quality,
|
|
166
|
+
learningOutcome: outcome,
|
|
167
|
+
features: ['micro-lora-update', 'ewc++-consolidation', 'reasoning-bank-storage'],
|
|
168
|
+
latencyMs: Date.now() - startTime,
|
|
169
|
+
timestamp: new Date().toISOString(),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
return {
|
|
174
|
+
success: false,
|
|
175
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
176
|
+
latencyMs: Date.now() - startTime,
|
|
177
|
+
timestamp: new Date().toISOString(),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Pattern Store Tool
|
|
184
|
+
* Store successful patterns in ReasoningBank for future retrieval
|
|
185
|
+
*/
|
|
186
|
+
export const intelligencePatternStoreTool = {
|
|
187
|
+
name: 'intelligence_pattern_store',
|
|
188
|
+
description: 'Store pattern in ReasoningBank (HNSW-indexed, ~0.1ms retrieval)',
|
|
189
|
+
parameters: z.object({
|
|
190
|
+
task: z.string().describe('Task description'),
|
|
191
|
+
resolution: z.string().describe('How the task was resolved'),
|
|
192
|
+
reward: z.number().min(0).max(1).describe('Success score (0-1)'),
|
|
193
|
+
tags: z.array(z.string()).optional().describe('Optional tags for categorization'),
|
|
194
|
+
}),
|
|
195
|
+
execute: async ({ task, resolution, reward, tags }, { onProgress }) => {
|
|
196
|
+
const startTime = Date.now();
|
|
197
|
+
try {
|
|
198
|
+
await storePattern(task, resolution, reward);
|
|
199
|
+
return {
|
|
200
|
+
success: true,
|
|
201
|
+
message: `Pattern stored: "${task.slice(0, 50)}..."`,
|
|
202
|
+
reward,
|
|
203
|
+
indexed: true,
|
|
204
|
+
retrieval: 'hnsw-150x-faster',
|
|
205
|
+
latencyMs: Date.now() - startTime,
|
|
206
|
+
timestamp: new Date().toISOString(),
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
return {
|
|
211
|
+
success: false,
|
|
212
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
213
|
+
latencyMs: Date.now() - startTime,
|
|
214
|
+
timestamp: new Date().toISOString(),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* Pattern Search Tool
|
|
221
|
+
* Find similar patterns using HNSW (150x faster than brute force)
|
|
222
|
+
*/
|
|
223
|
+
export const intelligencePatternSearchTool = {
|
|
224
|
+
name: 'intelligence_pattern_search',
|
|
225
|
+
description: 'Search ReasoningBank for similar patterns using HNSW (150x faster)',
|
|
226
|
+
parameters: z.object({
|
|
227
|
+
query: z.string().describe('Query to search for similar patterns'),
|
|
228
|
+
topK: z.number().optional().default(5).describe('Number of results to return'),
|
|
229
|
+
minReward: z.number().min(0).max(1).optional().describe('Minimum reward filter'),
|
|
230
|
+
}),
|
|
231
|
+
execute: async ({ query, topK, minReward }, { onProgress }) => {
|
|
232
|
+
const startTime = Date.now();
|
|
233
|
+
try {
|
|
234
|
+
let patterns = await findSimilarPatterns(query, topK);
|
|
235
|
+
// Filter by minimum reward if specified
|
|
236
|
+
if (minReward !== undefined) {
|
|
237
|
+
patterns = patterns.filter(p => p.reward >= minReward);
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
success: true,
|
|
241
|
+
query: query.slice(0, 50),
|
|
242
|
+
patterns,
|
|
243
|
+
count: patterns.length,
|
|
244
|
+
searchEngine: 'hnsw-150x-faster',
|
|
245
|
+
latencyMs: Date.now() - startTime,
|
|
246
|
+
timestamp: new Date().toISOString(),
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
return {
|
|
251
|
+
success: false,
|
|
252
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
253
|
+
latencyMs: Date.now() - startTime,
|
|
254
|
+
timestamp: new Date().toISOString(),
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* Intelligence Stats Tool
|
|
261
|
+
* Get statistics about the intelligence layer
|
|
262
|
+
*/
|
|
263
|
+
export const intelligenceStatsTool = {
|
|
264
|
+
name: 'intelligence_stats',
|
|
265
|
+
description: 'Get RuVector intelligence layer statistics: SONA, HNSW, attention metrics',
|
|
266
|
+
parameters: z.object({}),
|
|
267
|
+
execute: async (_, { onProgress }) => {
|
|
268
|
+
const startTime = Date.now();
|
|
269
|
+
try {
|
|
270
|
+
const stats = await getIntelligenceStats();
|
|
271
|
+
const intelligence = await getIntelligence();
|
|
272
|
+
const fullStats = intelligence.getStats();
|
|
273
|
+
return {
|
|
274
|
+
success: true,
|
|
275
|
+
stats: {
|
|
276
|
+
...stats,
|
|
277
|
+
...fullStats,
|
|
278
|
+
},
|
|
279
|
+
features: {
|
|
280
|
+
sona: {
|
|
281
|
+
enabled: stats.features?.includes('sona') ?? false,
|
|
282
|
+
microLora: 'rank-1 (~0.05ms)',
|
|
283
|
+
baseLora: 'rank-8',
|
|
284
|
+
ewcLambda: 1000.0,
|
|
285
|
+
},
|
|
286
|
+
attention: {
|
|
287
|
+
type: 'moe',
|
|
288
|
+
experts: 4,
|
|
289
|
+
topK: 2,
|
|
290
|
+
},
|
|
291
|
+
hnsw: {
|
|
292
|
+
enabled: stats.features?.includes('hnsw') ?? false,
|
|
293
|
+
speedup: '150x vs brute-force',
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
latencyMs: Date.now() - startTime,
|
|
297
|
+
timestamp: new Date().toISOString(),
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
return {
|
|
302
|
+
success: false,
|
|
303
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
304
|
+
latencyMs: Date.now() - startTime,
|
|
305
|
+
timestamp: new Date().toISOString(),
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* Force Learning Tool
|
|
312
|
+
* Trigger an immediate learning cycle
|
|
313
|
+
*/
|
|
314
|
+
export const intelligenceLearnTool = {
|
|
315
|
+
name: 'intelligence_learn',
|
|
316
|
+
description: 'Force immediate SONA learning cycle with EWC++ consolidation',
|
|
317
|
+
parameters: z.object({
|
|
318
|
+
reason: z.string().optional().describe('Reason for forcing learning'),
|
|
319
|
+
}),
|
|
320
|
+
execute: async ({ reason }, { onProgress }) => {
|
|
321
|
+
const startTime = Date.now();
|
|
322
|
+
try {
|
|
323
|
+
const result = await forceLearningCycle();
|
|
324
|
+
return {
|
|
325
|
+
success: true,
|
|
326
|
+
message: 'Learning cycle completed',
|
|
327
|
+
result,
|
|
328
|
+
reason: reason || 'manual trigger',
|
|
329
|
+
features: ['micro-lora-batch', 'ewc++-consolidation', 'pattern-distillation'],
|
|
330
|
+
latencyMs: Date.now() - startTime,
|
|
331
|
+
timestamp: new Date().toISOString(),
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
return {
|
|
336
|
+
success: false,
|
|
337
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
338
|
+
latencyMs: Date.now() - startTime,
|
|
339
|
+
timestamp: new Date().toISOString(),
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
};
|
|
344
|
+
/**
|
|
345
|
+
* Attention Compute Tool
|
|
346
|
+
* Compute attention-weighted similarity using MoE/Flash/Hyperbolic
|
|
347
|
+
*/
|
|
348
|
+
export const intelligenceAttentionTool = {
|
|
349
|
+
name: 'intelligence_attention',
|
|
350
|
+
description: 'Compute attention-weighted similarity using MoE/Flash/Hyperbolic attention',
|
|
351
|
+
parameters: z.object({
|
|
352
|
+
query: z.string().describe('Query text'),
|
|
353
|
+
candidates: z.array(z.string()).describe('Candidate texts to score'),
|
|
354
|
+
attentionType: z.enum(['moe', 'flash', 'hyperbolic', 'graph', 'dual']).optional().default('moe')
|
|
355
|
+
.describe('Attention mechanism type'),
|
|
356
|
+
}),
|
|
357
|
+
execute: async ({ query, candidates, attentionType }, { onProgress }) => {
|
|
358
|
+
const startTime = Date.now();
|
|
359
|
+
try {
|
|
360
|
+
// Simple embedding function
|
|
361
|
+
const embed = (text) => {
|
|
362
|
+
const arr = new Float32Array(64);
|
|
363
|
+
const words = text.toLowerCase().split(/\s+/);
|
|
364
|
+
for (const word of words) {
|
|
365
|
+
for (let i = 0; i < word.length; i++) {
|
|
366
|
+
const idx = (word.charCodeAt(i) * (i + 1)) % 64;
|
|
367
|
+
arr[idx] += 1;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
// Normalize
|
|
371
|
+
const mag = Math.sqrt(arr.reduce((sum, v) => sum + v * v, 0));
|
|
372
|
+
if (mag > 0) {
|
|
373
|
+
for (let i = 0; i < arr.length; i++)
|
|
374
|
+
arr[i] /= mag;
|
|
375
|
+
}
|
|
376
|
+
return arr;
|
|
377
|
+
};
|
|
378
|
+
const queryEmbed = embed(query);
|
|
379
|
+
const candidateEmbeds = candidates.map(c => embed(c));
|
|
380
|
+
const scores = await computeAttentionSimilarity(queryEmbed, candidateEmbeds);
|
|
381
|
+
const results = candidates.map((c, i) => ({
|
|
382
|
+
text: c.slice(0, 50),
|
|
383
|
+
score: scores[i] || 0,
|
|
384
|
+
})).sort((a, b) => b.score - a.score);
|
|
385
|
+
return {
|
|
386
|
+
success: true,
|
|
387
|
+
query: query.slice(0, 50),
|
|
388
|
+
attentionType,
|
|
389
|
+
results,
|
|
390
|
+
latencyMs: Date.now() - startTime,
|
|
391
|
+
timestamp: new Date().toISOString(),
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
return {
|
|
396
|
+
success: false,
|
|
397
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
398
|
+
latencyMs: Date.now() - startTime,
|
|
399
|
+
timestamp: new Date().toISOString(),
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
};
|
|
404
|
+
// Export all intelligence tools
|
|
405
|
+
export const intelligenceTools = [
|
|
406
|
+
intelligenceRouteTool,
|
|
407
|
+
intelligenceTrajectoryStartTool,
|
|
408
|
+
intelligenceTrajectoryStepTool,
|
|
409
|
+
intelligenceTrajectoryEndTool,
|
|
410
|
+
intelligencePatternStoreTool,
|
|
411
|
+
intelligencePatternSearchTool,
|
|
412
|
+
intelligenceStatsTool,
|
|
413
|
+
intelligenceLearnTool,
|
|
414
|
+
intelligenceAttentionTool,
|
|
415
|
+
];
|
|
416
|
+
//# sourceMappingURL=intelligence-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intelligence-tools.js","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/intelligence-tools.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Intelligence MCP Tools - Expose RuVector Intelligence via MCP\n *\n * These tools provide direct access to the full RuVector ecosystem:\n * - @ruvector/sona: Micro-LoRA (~0.05ms), EWC++, Trajectory tracking\n * - @ruvector/attention: MoE, Flash, Hyperbolic, Graph attention\n * - ruvector core: HNSW indexing (150x faster than brute force)\n *\n * Available both as MCP tools AND CLI hooks.\n */\n\nimport { z } from 'zod';\nimport type { ToolDefinition } from '../../types/index.js';\nimport {\n getIntelligence,\n routeTaskIntelligent,\n beginTaskTrajectory,\n recordTrajectoryStep,\n endTaskTrajectory,\n storePattern,\n findSimilarPatterns,\n getIntelligenceStats,\n forceLearningCycle,\n computeAttentionSimilarity,\n} from './intelligence-bridge.js';\n\n/**\n * Intelligence Route Tool\n * Route tasks using SONA Micro-LoRA + MoE Attention + HNSW indexing\n */\nexport const intelligenceRouteTool: ToolDefinition = {\n name: 'intelligence_route',\n description: 'Route task using RuVector intelligence: SONA Micro-LoRA (~0.05ms) + MoE attention + HNSW (150x faster)',\n parameters: z.object({\n task: z.string().describe('Task description to route'),\n file: z.string().optional().describe('Optional file context'),\n errorContext: z.string().optional().describe('Optional error context for debugging tasks'),\n topK: z.number().optional().default(5).describe('Number of agent candidates to return'),\n }),\n execute: async ({ task, file, errorContext, topK }, { onProgress }) => {\n const startTime = Date.now();\n\n try {\n const result = await routeTaskIntelligent(task, {\n file,\n errorContext,\n });\n\n return {\n success: true,\n agent: result.agent,\n confidence: result.confidence,\n alternatives: result.routingResults.slice(1, topK).map(r => ({\n agent: r.agentId,\n confidence: r.confidence,\n })),\n features: result.usedFeatures,\n latencyMs: result.latencyMs,\n engine: 'ruvector-sona-moe-hnsw',\n timestamp: new Date().toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n },\n};\n\n/**\n * Trajectory Start Tool\n * Begin trajectory tracking for learning from task execution\n */\nexport const intelligenceTrajectoryStartTool: ToolDefinition = {\n name: 'intelligence_trajectory_start',\n description: 'Begin SONA trajectory for learning from task execution. Returns trajectoryId for tracking.',\n parameters: z.object({\n task: z.string().describe('Task description'),\n agent: z.string().describe('Agent executing the task'),\n context: z.string().optional().describe('Additional context'),\n }),\n execute: async ({ task, agent, context }, { onProgress }) => {\n const startTime = Date.now();\n\n try {\n const fullTask = context ? `${task} [context: ${context}]` : task;\n const result = await beginTaskTrajectory(fullTask, agent);\n\n if (!result.success) {\n return {\n success: false,\n error: result.error || 'Failed to start trajectory',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n\n return {\n success: true,\n trajectoryId: result.trajectoryId,\n message: `Trajectory ${result.trajectoryId} started for agent ${agent}`,\n trackingEnabled: true,\n features: ['micro-lora', 'ewc++', 'attention-patterns'],\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n },\n};\n\n/**\n * Trajectory Step Tool\n * Record intermediate steps during task execution\n */\nexport const intelligenceTrajectoryStepTool: ToolDefinition = {\n name: 'intelligence_trajectory_step',\n description: 'Record a step in the trajectory for reinforcement learning',\n parameters: z.object({\n trajectoryId: z.number().describe('Trajectory ID from trajectory_start'),\n action: z.string().describe('Action taken (e.g., \"edit-file\", \"run-test\")'),\n reward: z.number().min(-1).max(1).describe('Reward signal (-1 to 1)'),\n file: z.string().optional().describe('File involved'),\n errorFixed: z.boolean().optional().describe('Whether an error was fixed'),\n testPassed: z.boolean().optional().describe('Whether tests passed'),\n }),\n execute: async ({ trajectoryId, action, reward, file, errorFixed, testPassed }, { onProgress }) => {\n const startTime = Date.now();\n\n try {\n await recordTrajectoryStep(trajectoryId, action, reward, {\n file,\n errorFixed,\n testPassed,\n });\n\n return {\n success: true,\n trajectoryId,\n action,\n reward,\n message: `Step recorded: ${action} with reward ${reward}`,\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n },\n};\n\n/**\n * Trajectory End Tool\n * Complete trajectory and trigger learning with EWC++\n */\nexport const intelligenceTrajectoryEndTool: ToolDefinition = {\n name: 'intelligence_trajectory_end',\n description: 'End trajectory, trigger SONA learning with EWC++ (prevents catastrophic forgetting)',\n parameters: z.object({\n trajectoryId: z.number().describe('Trajectory ID from trajectory_start'),\n success: z.boolean().describe('Whether the task was successful'),\n quality: z.number().min(0).max(1).optional().default(0.8).describe('Quality score (0-1)'),\n }),\n execute: async ({ trajectoryId, success, quality }, { onProgress }) => {\n const startTime = Date.now();\n\n try {\n const outcome = await endTaskTrajectory(trajectoryId, success, quality);\n\n return {\n success: true,\n trajectoryId,\n taskSuccess: success,\n quality,\n learningOutcome: outcome,\n features: ['micro-lora-update', 'ewc++-consolidation', 'reasoning-bank-storage'],\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n },\n};\n\n/**\n * Pattern Store Tool\n * Store successful patterns in ReasoningBank for future retrieval\n */\nexport const intelligencePatternStoreTool: ToolDefinition = {\n name: 'intelligence_pattern_store',\n description: 'Store pattern in ReasoningBank (HNSW-indexed, ~0.1ms retrieval)',\n parameters: z.object({\n task: z.string().describe('Task description'),\n resolution: z.string().describe('How the task was resolved'),\n reward: z.number().min(0).max(1).describe('Success score (0-1)'),\n tags: z.array(z.string()).optional().describe('Optional tags for categorization'),\n }),\n execute: async ({ task, resolution, reward, tags }, { onProgress }) => {\n const startTime = Date.now();\n\n try {\n await storePattern(task, resolution, reward);\n\n return {\n success: true,\n message: `Pattern stored: \"${task.slice(0, 50)}...\"`,\n reward,\n indexed: true,\n retrieval: 'hnsw-150x-faster',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n },\n};\n\n/**\n * Pattern Search Tool\n * Find similar patterns using HNSW (150x faster than brute force)\n */\nexport const intelligencePatternSearchTool: ToolDefinition = {\n name: 'intelligence_pattern_search',\n description: 'Search ReasoningBank for similar patterns using HNSW (150x faster)',\n parameters: z.object({\n query: z.string().describe('Query to search for similar patterns'),\n topK: z.number().optional().default(5).describe('Number of results to return'),\n minReward: z.number().min(0).max(1).optional().describe('Minimum reward filter'),\n }),\n execute: async ({ query, topK, minReward }, { onProgress }) => {\n const startTime = Date.now();\n\n try {\n let patterns = await findSimilarPatterns(query, topK);\n\n // Filter by minimum reward if specified\n if (minReward !== undefined) {\n patterns = patterns.filter(p => p.reward >= minReward);\n }\n\n return {\n success: true,\n query: query.slice(0, 50),\n patterns,\n count: patterns.length,\n searchEngine: 'hnsw-150x-faster',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n },\n};\n\n/**\n * Intelligence Stats Tool\n * Get statistics about the intelligence layer\n */\nexport const intelligenceStatsTool: ToolDefinition = {\n name: 'intelligence_stats',\n description: 'Get RuVector intelligence layer statistics: SONA, HNSW, attention metrics',\n parameters: z.object({}),\n execute: async (_, { onProgress }) => {\n const startTime = Date.now();\n\n try {\n const stats = await getIntelligenceStats();\n const intelligence = await getIntelligence();\n const fullStats = intelligence.getStats();\n\n return {\n success: true,\n stats: {\n ...stats,\n ...fullStats,\n },\n features: {\n sona: {\n enabled: stats.features?.includes('sona') ?? false,\n microLora: 'rank-1 (~0.05ms)',\n baseLora: 'rank-8',\n ewcLambda: 1000.0,\n },\n attention: {\n type: 'moe',\n experts: 4,\n topK: 2,\n },\n hnsw: {\n enabled: stats.features?.includes('hnsw') ?? false,\n speedup: '150x vs brute-force',\n },\n },\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n },\n};\n\n/**\n * Force Learning Tool\n * Trigger an immediate learning cycle\n */\nexport const intelligenceLearnTool: ToolDefinition = {\n name: 'intelligence_learn',\n description: 'Force immediate SONA learning cycle with EWC++ consolidation',\n parameters: z.object({\n reason: z.string().optional().describe('Reason for forcing learning'),\n }),\n execute: async ({ reason }, { onProgress }) => {\n const startTime = Date.now();\n\n try {\n const result = await forceLearningCycle();\n\n return {\n success: true,\n message: 'Learning cycle completed',\n result,\n reason: reason || 'manual trigger',\n features: ['micro-lora-batch', 'ewc++-consolidation', 'pattern-distillation'],\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n },\n};\n\n/**\n * Attention Compute Tool\n * Compute attention-weighted similarity using MoE/Flash/Hyperbolic\n */\nexport const intelligenceAttentionTool: ToolDefinition = {\n name: 'intelligence_attention',\n description: 'Compute attention-weighted similarity using MoE/Flash/Hyperbolic attention',\n parameters: z.object({\n query: z.string().describe('Query text'),\n candidates: z.array(z.string()).describe('Candidate texts to score'),\n attentionType: z.enum(['moe', 'flash', 'hyperbolic', 'graph', 'dual']).optional().default('moe')\n .describe('Attention mechanism type'),\n }),\n execute: async ({ query, candidates, attentionType }, { onProgress }) => {\n const startTime = Date.now();\n\n try {\n // Simple embedding function\n const embed = (text: string): Float32Array => {\n const arr = new Float32Array(64);\n const words = text.toLowerCase().split(/\\s+/);\n for (const word of words) {\n for (let i = 0; i < word.length; i++) {\n const idx = (word.charCodeAt(i) * (i + 1)) % 64;\n arr[idx] += 1;\n }\n }\n // Normalize\n const mag = Math.sqrt(arr.reduce((sum, v) => sum + v * v, 0));\n if (mag > 0) {\n for (let i = 0; i < arr.length; i++) arr[i] /= mag;\n }\n return arr;\n };\n\n const queryEmbed = embed(query);\n const candidateEmbeds = candidates.map(c => embed(c));\n\n const scores = await computeAttentionSimilarity(queryEmbed, candidateEmbeds);\n\n const results = candidates.map((c, i) => ({\n text: c.slice(0, 50),\n score: scores[i] || 0,\n })).sort((a, b) => b.score - a.score);\n\n return {\n success: true,\n query: query.slice(0, 50),\n attentionType,\n results,\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n latencyMs: Date.now() - startTime,\n timestamp: new Date().toISOString(),\n };\n }\n },\n};\n\n// Export all intelligence tools\nexport const intelligenceTools = [\n intelligenceRouteTool,\n intelligenceTrajectoryStartTool,\n intelligenceTrajectoryStepTool,\n intelligenceTrajectoryEndTool,\n intelligencePatternStoreTool,\n intelligencePatternSearchTool,\n intelligenceStatsTool,\n intelligenceLearnTool,\n intelligenceAttentionTool,\n];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/metrics.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,eAAO,MAAM,eAAe,EAAE,cAmK7B,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrics Hook - Learning dashboard and performance metrics
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { loadIntelligence } from './shared.js';
|
|
6
|
+
export const hookMetricsTool = {
|
|
7
|
+
name: 'hook_metrics',
|
|
8
|
+
description: 'Get learning metrics and performance dashboard',
|
|
9
|
+
parameters: z.object({
|
|
10
|
+
timeframe: z.enum(['1h', '24h', '7d', '30d']).optional().default('24h'),
|
|
11
|
+
detailed: z.boolean().optional().default(false)
|
|
12
|
+
}),
|
|
13
|
+
execute: async ({ timeframe, detailed }, { onProgress }) => {
|
|
14
|
+
const startTime = Date.now();
|
|
15
|
+
const intel = loadIntelligence();
|
|
16
|
+
// Parse timeframe
|
|
17
|
+
const timeMs = {
|
|
18
|
+
'1h': 60 * 60 * 1000,
|
|
19
|
+
'24h': 24 * 60 * 60 * 1000,
|
|
20
|
+
'7d': 7 * 24 * 60 * 60 * 1000,
|
|
21
|
+
'30d': 30 * 24 * 60 * 60 * 1000
|
|
22
|
+
};
|
|
23
|
+
const cutoff = Date.now() - timeMs[timeframe];
|
|
24
|
+
// Filter routing history by timeframe
|
|
25
|
+
const recentHistory = intel.metrics.routingHistory.filter(h => new Date(h.timestamp).getTime() > cutoff);
|
|
26
|
+
// Calculate routing accuracy
|
|
27
|
+
const successCount = recentHistory.filter(h => h.success).length;
|
|
28
|
+
const routingAccuracy = recentHistory.length > 0
|
|
29
|
+
? successCount / recentHistory.length
|
|
30
|
+
: 0;
|
|
31
|
+
// Calculate per-agent performance
|
|
32
|
+
const agentPerformance = {};
|
|
33
|
+
for (const entry of recentHistory) {
|
|
34
|
+
if (!agentPerformance[entry.agent]) {
|
|
35
|
+
agentPerformance[entry.agent] = { total: 0, successful: 0, rate: 0 };
|
|
36
|
+
}
|
|
37
|
+
agentPerformance[entry.agent].total++;
|
|
38
|
+
if (entry.success) {
|
|
39
|
+
agentPerformance[entry.agent].successful++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Calculate rates
|
|
43
|
+
for (const agent of Object.keys(agentPerformance)) {
|
|
44
|
+
const perf = agentPerformance[agent];
|
|
45
|
+
perf.rate = perf.total > 0 ? perf.successful / perf.total : 0;
|
|
46
|
+
}
|
|
47
|
+
// Get top patterns
|
|
48
|
+
const patternStats = [];
|
|
49
|
+
for (const [state, agents] of Object.entries(intel.patterns)) {
|
|
50
|
+
const agentScores = agents;
|
|
51
|
+
let topAgent = '';
|
|
52
|
+
let topScore = 0;
|
|
53
|
+
for (const [agent, score] of Object.entries(agentScores)) {
|
|
54
|
+
if (score > topScore) {
|
|
55
|
+
topScore = score;
|
|
56
|
+
topAgent = agent;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
patternStats.push({
|
|
60
|
+
state,
|
|
61
|
+
agents: agentScores,
|
|
62
|
+
topAgent,
|
|
63
|
+
topScore
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
patternStats.sort((a, b) => b.topScore - a.topScore);
|
|
67
|
+
// Calculate learning velocity (improvement trend)
|
|
68
|
+
let learningVelocity = 0;
|
|
69
|
+
if (recentHistory.length >= 10) {
|
|
70
|
+
const firstHalf = recentHistory.slice(0, Math.floor(recentHistory.length / 2));
|
|
71
|
+
const secondHalf = recentHistory.slice(Math.floor(recentHistory.length / 2));
|
|
72
|
+
const firstHalfRate = firstHalf.filter(h => h.success).length / firstHalf.length;
|
|
73
|
+
const secondHalfRate = secondHalf.filter(h => h.success).length / secondHalf.length;
|
|
74
|
+
learningVelocity = secondHalfRate - firstHalfRate;
|
|
75
|
+
}
|
|
76
|
+
// Memory utilization
|
|
77
|
+
const memoryStats = {
|
|
78
|
+
total: intel.memories.length,
|
|
79
|
+
byType: {}
|
|
80
|
+
};
|
|
81
|
+
for (const mem of intel.memories) {
|
|
82
|
+
memoryStats.byType[mem.type] = (memoryStats.byType[mem.type] || 0) + 1;
|
|
83
|
+
}
|
|
84
|
+
// Error pattern analysis
|
|
85
|
+
const errorStats = {
|
|
86
|
+
total: intel.errorPatterns.length,
|
|
87
|
+
topErrors: intel.errorPatterns
|
|
88
|
+
.map(ep => ({
|
|
89
|
+
type: ep.errorType,
|
|
90
|
+
context: ep.context.slice(0, 50),
|
|
91
|
+
occurrences: Object.values(ep.agentSuccess).reduce((a, b) => Math.abs(a) + Math.abs(b), 0)
|
|
92
|
+
}))
|
|
93
|
+
.sort((a, b) => b.occurrences - a.occurrences)
|
|
94
|
+
.slice(0, 5)
|
|
95
|
+
};
|
|
96
|
+
const latency = Date.now() - startTime;
|
|
97
|
+
return {
|
|
98
|
+
success: true,
|
|
99
|
+
timeframe,
|
|
100
|
+
routing: {
|
|
101
|
+
accuracy: routingAccuracy,
|
|
102
|
+
total: recentHistory.length,
|
|
103
|
+
successful: successCount,
|
|
104
|
+
failed: recentHistory.length - successCount
|
|
105
|
+
},
|
|
106
|
+
learning: {
|
|
107
|
+
velocity: learningVelocity,
|
|
108
|
+
improving: learningVelocity > 0,
|
|
109
|
+
patternsLearned: Object.keys(intel.patterns).length,
|
|
110
|
+
memoriesStored: intel.memories.length
|
|
111
|
+
},
|
|
112
|
+
agents: detailed ? agentPerformance : Object.fromEntries(Object.entries(agentPerformance)
|
|
113
|
+
.sort((a, b) => b[1].total - a[1].total)
|
|
114
|
+
.slice(0, 5)),
|
|
115
|
+
topPatterns: patternStats.slice(0, detailed ? 10 : 5).map(p => ({
|
|
116
|
+
state: p.state,
|
|
117
|
+
topAgent: p.topAgent,
|
|
118
|
+
score: p.topScore.toFixed(2)
|
|
119
|
+
})),
|
|
120
|
+
memory: memoryStats,
|
|
121
|
+
errors: errorStats,
|
|
122
|
+
pretrained: intel.pretrained || null,
|
|
123
|
+
health: {
|
|
124
|
+
status: routingAccuracy > 0.7 ? 'healthy' : routingAccuracy > 0.5 ? 'learning' : 'needs-data',
|
|
125
|
+
dataPoints: recentHistory.length,
|
|
126
|
+
recommendation: recentHistory.length < 10
|
|
127
|
+
? 'Need more data points for accurate metrics'
|
|
128
|
+
: learningVelocity < 0
|
|
129
|
+
? 'Learning velocity negative - consider retraining'
|
|
130
|
+
: 'System learning effectively'
|
|
131
|
+
},
|
|
132
|
+
latencyMs: latency,
|
|
133
|
+
timestamp: new Date().toISOString()
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Metrics Hook - Learning dashboard and performance metrics\n */\n\nimport { z } from 'zod';\nimport type { ToolDefinition } from '../../types/index.js';\nimport { loadIntelligence } from './shared.js';\n\nexport const hookMetricsTool: ToolDefinition = {\n name: 'hook_metrics',\n description: 'Get learning metrics and performance dashboard',\n parameters: z.object({\n timeframe: z.enum(['1h', '24h', '7d', '30d']).optional().default('24h'),\n detailed: z.boolean().optional().default(false)\n }),\n execute: async ({ timeframe, detailed }, { onProgress }) => {\n const startTime = Date.now();\n const intel = loadIntelligence();\n\n // Parse timeframe\n const timeMs: Record<string, number> = {\n '1h': 60 * 60 * 1000,\n '24h': 24 * 60 * 60 * 1000,\n '7d': 7 * 24 * 60 * 60 * 1000,\n '30d': 30 * 24 * 60 * 60 * 1000\n };\n\n const cutoff = Date.now() - timeMs[timeframe];\n\n // Filter routing history by timeframe\n const recentHistory = intel.metrics.routingHistory.filter(\n h => new Date(h.timestamp).getTime() > cutoff\n );\n\n // Calculate routing accuracy\n const successCount = recentHistory.filter(h => h.success).length;\n const routingAccuracy = recentHistory.length > 0\n ? successCount / recentHistory.length\n : 0;\n\n // Calculate per-agent performance\n const agentPerformance: Record<string, {\n total: number;\n successful: number;\n rate: number;\n }> = {};\n\n for (const entry of recentHistory) {\n if (!agentPerformance[entry.agent]) {\n agentPerformance[entry.agent] = { total: 0, successful: 0, rate: 0 };\n }\n agentPerformance[entry.agent].total++;\n if (entry.success) {\n agentPerformance[entry.agent].successful++;\n }\n }\n\n // Calculate rates\n for (const agent of Object.keys(agentPerformance)) {\n const perf = agentPerformance[agent];\n perf.rate = perf.total > 0 ? perf.successful / perf.total : 0;\n }\n\n // Get top patterns\n const patternStats: Array<{\n state: string;\n agents: Record<string, number>;\n topAgent: string;\n topScore: number;\n }> = [];\n\n for (const [state, agents] of Object.entries(intel.patterns)) {\n const agentScores = agents as Record<string, number>;\n let topAgent = '';\n let topScore = 0;\n\n for (const [agent, score] of Object.entries(agentScores)) {\n if (score > topScore) {\n topScore = score;\n topAgent = agent;\n }\n }\n\n patternStats.push({\n state,\n agents: agentScores,\n topAgent,\n topScore\n });\n }\n\n patternStats.sort((a, b) => b.topScore - a.topScore);\n\n // Calculate learning velocity (improvement trend)\n let learningVelocity = 0;\n if (recentHistory.length >= 10) {\n const firstHalf = recentHistory.slice(0, Math.floor(recentHistory.length / 2));\n const secondHalf = recentHistory.slice(Math.floor(recentHistory.length / 2));\n\n const firstHalfRate = firstHalf.filter(h => h.success).length / firstHalf.length;\n const secondHalfRate = secondHalf.filter(h => h.success).length / secondHalf.length;\n\n learningVelocity = secondHalfRate - firstHalfRate;\n }\n\n // Memory utilization\n const memoryStats = {\n total: intel.memories.length,\n byType: {} as Record<string, number>\n };\n\n for (const mem of intel.memories) {\n memoryStats.byType[mem.type] = (memoryStats.byType[mem.type] || 0) + 1;\n }\n\n // Error pattern analysis\n const errorStats = {\n total: intel.errorPatterns.length,\n topErrors: intel.errorPatterns\n .map(ep => ({\n type: ep.errorType,\n context: ep.context.slice(0, 50),\n occurrences: Object.values(ep.agentSuccess).reduce((a, b) => Math.abs(a) + Math.abs(b), 0)\n }))\n .sort((a, b) => b.occurrences - a.occurrences)\n .slice(0, 5)\n };\n\n const latency = Date.now() - startTime;\n\n return {\n success: true,\n timeframe,\n routing: {\n accuracy: routingAccuracy,\n total: recentHistory.length,\n successful: successCount,\n failed: recentHistory.length - successCount\n },\n learning: {\n velocity: learningVelocity,\n improving: learningVelocity > 0,\n patternsLearned: Object.keys(intel.patterns).length,\n memoriesStored: intel.memories.length\n },\n agents: detailed ? agentPerformance : Object.fromEntries(\n Object.entries(agentPerformance)\n .sort((a, b) => b[1].total - a[1].total)\n .slice(0, 5)\n ),\n topPatterns: patternStats.slice(0, detailed ? 10 : 5).map(p => ({\n state: p.state,\n topAgent: p.topAgent,\n score: p.topScore.toFixed(2)\n })),\n memory: memoryStats,\n errors: errorStats,\n pretrained: intel.pretrained || null,\n health: {\n status: routingAccuracy > 0.7 ? 'healthy' : routingAccuracy > 0.5 ? 'learning' : 'needs-data',\n dataPoints: recentHistory.length,\n recommendation: recentHistory.length < 10\n ? 'Need more data points for accurate metrics'\n : learningVelocity < 0\n ? 'Learning velocity negative - consider retraining'\n : 'System learning effectively'\n },\n latencyMs: latency,\n timestamp: new Date().toISOString()\n };\n }\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Post-Command Hook - Learn from command outcomes
|
|
3
|
+
* Records command results and learns from errors
|
|
4
|
+
*/
|
|
5
|
+
import type { ToolDefinition } from '../../types/index.js';
|
|
6
|
+
export declare const hookPostCommandTool: ToolDefinition;
|
|
7
|
+
//# sourceMappingURL=post-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-command.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/post-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAS3D,eAAO,MAAM,mBAAmB,EAAE,cAgGjC,CAAC"}
|