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,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for hook tools
|
|
3
|
+
*/
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
// Intelligence data storage
|
|
7
|
+
const INTELLIGENCE_PATH = '.agentic-flow/intelligence.json';
|
|
8
|
+
// Default intelligence data
|
|
9
|
+
const defaultIntelligence = {
|
|
10
|
+
patterns: {},
|
|
11
|
+
sequences: {},
|
|
12
|
+
memories: [],
|
|
13
|
+
dirPatterns: {},
|
|
14
|
+
errorPatterns: [],
|
|
15
|
+
metrics: {
|
|
16
|
+
totalRoutes: 0,
|
|
17
|
+
successfulRoutes: 0,
|
|
18
|
+
routingHistory: []
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
// Load intelligence data
|
|
22
|
+
export function loadIntelligence() {
|
|
23
|
+
try {
|
|
24
|
+
const fullPath = path.join(process.cwd(), INTELLIGENCE_PATH);
|
|
25
|
+
if (fs.existsSync(fullPath)) {
|
|
26
|
+
const data = fs.readFileSync(fullPath, 'utf-8');
|
|
27
|
+
return { ...defaultIntelligence, ...JSON.parse(data) };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
// Return default on error
|
|
32
|
+
}
|
|
33
|
+
return { ...defaultIntelligence };
|
|
34
|
+
}
|
|
35
|
+
// Save intelligence data
|
|
36
|
+
export function saveIntelligence(data) {
|
|
37
|
+
try {
|
|
38
|
+
const fullPath = path.join(process.cwd(), INTELLIGENCE_PATH);
|
|
39
|
+
const dir = path.dirname(fullPath);
|
|
40
|
+
if (!fs.existsSync(dir)) {
|
|
41
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
42
|
+
}
|
|
43
|
+
fs.writeFileSync(fullPath, JSON.stringify(data, null, 2));
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
console.error('[Hook] Failed to save intelligence:', e);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Agent mapping by file extension
|
|
50
|
+
export const agentMapping = {
|
|
51
|
+
'.rs': 'rust-developer',
|
|
52
|
+
'.ts': 'typescript-developer',
|
|
53
|
+
'.tsx': 'react-developer',
|
|
54
|
+
'.js': 'javascript-developer',
|
|
55
|
+
'.jsx': 'react-developer',
|
|
56
|
+
'.py': 'python-developer',
|
|
57
|
+
'.go': 'go-developer',
|
|
58
|
+
'.sql': 'database-specialist',
|
|
59
|
+
'.md': 'documentation-specialist',
|
|
60
|
+
'.json': 'config-specialist',
|
|
61
|
+
'.yaml': 'config-specialist',
|
|
62
|
+
'.yml': 'config-specialist',
|
|
63
|
+
'.html': 'frontend-developer',
|
|
64
|
+
'.css': 'frontend-developer',
|
|
65
|
+
'.scss': 'frontend-developer',
|
|
66
|
+
'.vue': 'vue-developer',
|
|
67
|
+
'.svelte': 'svelte-developer',
|
|
68
|
+
'Dockerfile': 'devops-engineer',
|
|
69
|
+
'Makefile': 'devops-engineer'
|
|
70
|
+
};
|
|
71
|
+
// Get agent for file
|
|
72
|
+
export function getAgentForFile(filePath) {
|
|
73
|
+
const ext = path.extname(filePath);
|
|
74
|
+
const basename = path.basename(filePath);
|
|
75
|
+
// Check for test files FIRST (higher priority)
|
|
76
|
+
if (filePath.includes('.test.') || filePath.includes('.spec.') || filePath.includes('_test.')) {
|
|
77
|
+
return 'test-engineer';
|
|
78
|
+
}
|
|
79
|
+
// Check for CI/CD
|
|
80
|
+
if (filePath.includes('.github/workflows')) {
|
|
81
|
+
return 'cicd-engineer';
|
|
82
|
+
}
|
|
83
|
+
// Check basename (for Dockerfile, Makefile, etc.)
|
|
84
|
+
if (agentMapping[basename]) {
|
|
85
|
+
return agentMapping[basename];
|
|
86
|
+
}
|
|
87
|
+
// Check extension
|
|
88
|
+
if (agentMapping[ext]) {
|
|
89
|
+
return agentMapping[ext];
|
|
90
|
+
}
|
|
91
|
+
return 'coder'; // Default
|
|
92
|
+
}
|
|
93
|
+
// Compute simple embedding (hash-based for speed)
|
|
94
|
+
export function simpleEmbed(text) {
|
|
95
|
+
const embedding = new Array(64).fill(0);
|
|
96
|
+
const words = text.toLowerCase().split(/\s+/);
|
|
97
|
+
for (const word of words) {
|
|
98
|
+
for (let i = 0; i < word.length; i++) {
|
|
99
|
+
const idx = (word.charCodeAt(i) * (i + 1)) % 64;
|
|
100
|
+
embedding[idx] += 1;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Normalize
|
|
104
|
+
const magnitude = Math.sqrt(embedding.reduce((sum, val) => sum + val * val, 0));
|
|
105
|
+
if (magnitude > 0) {
|
|
106
|
+
for (let i = 0; i < embedding.length; i++) {
|
|
107
|
+
embedding[i] /= magnitude;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return embedding;
|
|
111
|
+
}
|
|
112
|
+
// Cosine similarity
|
|
113
|
+
export function cosineSimilarity(a, b) {
|
|
114
|
+
if (a.length !== b.length)
|
|
115
|
+
return 0;
|
|
116
|
+
let dotProduct = 0;
|
|
117
|
+
let normA = 0;
|
|
118
|
+
let normB = 0;
|
|
119
|
+
for (let i = 0; i < a.length; i++) {
|
|
120
|
+
dotProduct += a[i] * b[i];
|
|
121
|
+
normA += a[i] * a[i];
|
|
122
|
+
normB += b[i] * b[i];
|
|
123
|
+
}
|
|
124
|
+
const magnitude = Math.sqrt(normA) * Math.sqrt(normB);
|
|
125
|
+
return magnitude > 0 ? dotProduct / magnitude : 0;
|
|
126
|
+
}
|
|
127
|
+
// Dangerous command patterns
|
|
128
|
+
export const dangerousPatterns = [
|
|
129
|
+
/rm\s+-rf\s+\//,
|
|
130
|
+
/rm\s+-rf\s+\*/,
|
|
131
|
+
/sudo\s+rm/,
|
|
132
|
+
/chmod\s+777/,
|
|
133
|
+
/>\s*\/dev\/sd/,
|
|
134
|
+
/mkfs\./,
|
|
135
|
+
/dd\s+if=/,
|
|
136
|
+
/:(){.*};:/, // Fork bomb
|
|
137
|
+
/curl.*\|\s*(ba)?sh/,
|
|
138
|
+
/wget.*\|\s*(ba)?sh/
|
|
139
|
+
];
|
|
140
|
+
// Assess command risk
|
|
141
|
+
export function assessCommandRisk(command) {
|
|
142
|
+
let risk = 0;
|
|
143
|
+
for (const pattern of dangerousPatterns) {
|
|
144
|
+
if (pattern.test(command)) {
|
|
145
|
+
risk = Math.max(risk, 0.9);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Medium risk patterns
|
|
149
|
+
if (/sudo/.test(command))
|
|
150
|
+
risk = Math.max(risk, 0.5);
|
|
151
|
+
if (/rm\s+-/.test(command))
|
|
152
|
+
risk = Math.max(risk, 0.4);
|
|
153
|
+
if (/chmod/.test(command))
|
|
154
|
+
risk = Math.max(risk, 0.3);
|
|
155
|
+
if (/chown/.test(command))
|
|
156
|
+
risk = Math.max(risk, 0.3);
|
|
157
|
+
return risk;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/shared.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared utilities for hook tools\n */\n\nimport * as path from 'path';\nimport * as fs from 'fs';\n\n// Intelligence data storage\nconst INTELLIGENCE_PATH = '.agentic-flow/intelligence.json';\n\nexport interface IntelligenceData {\n patterns: Record<string, Record<string, number>>;\n sequences: Record<string, Array<{ file: string; score: number }>>;\n memories: Array<{\n content: string;\n type: string;\n created: string;\n embedding?: number[];\n }>;\n dirPatterns: Record<string, string>;\n errorPatterns: Array<{\n errorType: string;\n context: string;\n resolution: string;\n agentSuccess: Record<string, number>;\n }>;\n metrics: {\n totalRoutes: number;\n successfulRoutes: number;\n routingHistory: Array<{\n timestamp: string;\n task: string;\n agent: string;\n success: boolean;\n }>;\n };\n pretrained?: {\n date: string;\n stats: Record<string, number>;\n };\n}\n\n// Default intelligence data\nconst defaultIntelligence: IntelligenceData = {\n patterns: {},\n sequences: {},\n memories: [],\n dirPatterns: {},\n errorPatterns: [],\n metrics: {\n totalRoutes: 0,\n successfulRoutes: 0,\n routingHistory: []\n }\n};\n\n// Load intelligence data\nexport function loadIntelligence(): IntelligenceData {\n try {\n const fullPath = path.join(process.cwd(), INTELLIGENCE_PATH);\n if (fs.existsSync(fullPath)) {\n const data = fs.readFileSync(fullPath, 'utf-8');\n return { ...defaultIntelligence, ...JSON.parse(data) };\n }\n } catch (e) {\n // Return default on error\n }\n return { ...defaultIntelligence };\n}\n\n// Save intelligence data\nexport function saveIntelligence(data: IntelligenceData): void {\n try {\n const fullPath = path.join(process.cwd(), INTELLIGENCE_PATH);\n const dir = path.dirname(fullPath);\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n fs.writeFileSync(fullPath, JSON.stringify(data, null, 2));\n } catch (e) {\n console.error('[Hook] Failed to save intelligence:', e);\n }\n}\n\n// Agent mapping by file extension\nexport const agentMapping: Record<string, string> = {\n '.rs': 'rust-developer',\n '.ts': 'typescript-developer',\n '.tsx': 'react-developer',\n '.js': 'javascript-developer',\n '.jsx': 'react-developer',\n '.py': 'python-developer',\n '.go': 'go-developer',\n '.sql': 'database-specialist',\n '.md': 'documentation-specialist',\n '.json': 'config-specialist',\n '.yaml': 'config-specialist',\n '.yml': 'config-specialist',\n '.html': 'frontend-developer',\n '.css': 'frontend-developer',\n '.scss': 'frontend-developer',\n '.vue': 'vue-developer',\n '.svelte': 'svelte-developer',\n 'Dockerfile': 'devops-engineer',\n 'Makefile': 'devops-engineer'\n};\n\n// Get agent for file\nexport function getAgentForFile(filePath: string): string {\n const ext = path.extname(filePath);\n const basename = path.basename(filePath);\n\n // Check for test files FIRST (higher priority)\n if (filePath.includes('.test.') || filePath.includes('.spec.') || filePath.includes('_test.')) {\n return 'test-engineer';\n }\n\n // Check for CI/CD\n if (filePath.includes('.github/workflows')) {\n return 'cicd-engineer';\n }\n\n // Check basename (for Dockerfile, Makefile, etc.)\n if (agentMapping[basename]) {\n return agentMapping[basename];\n }\n\n // Check extension\n if (agentMapping[ext]) {\n return agentMapping[ext];\n }\n\n return 'coder'; // Default\n}\n\n// Compute simple embedding (hash-based for speed)\nexport function simpleEmbed(text: string): number[] {\n const embedding = new Array(64).fill(0);\n const words = text.toLowerCase().split(/\\s+/);\n\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 embedding[idx] += 1;\n }\n }\n\n // Normalize\n const magnitude = Math.sqrt(embedding.reduce((sum, val) => sum + val * val, 0));\n if (magnitude > 0) {\n for (let i = 0; i < embedding.length; i++) {\n embedding[i] /= magnitude;\n }\n }\n\n return embedding;\n}\n\n// Cosine similarity\nexport function cosineSimilarity(a: number[], b: number[]): number {\n if (a.length !== b.length) return 0;\n\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n dotProduct += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n\n const magnitude = Math.sqrt(normA) * Math.sqrt(normB);\n return magnitude > 0 ? dotProduct / magnitude : 0;\n}\n\n// Dangerous command patterns\nexport const dangerousPatterns = [\n /rm\\s+-rf\\s+\\//,\n /rm\\s+-rf\\s+\\*/,\n /sudo\\s+rm/,\n /chmod\\s+777/,\n />\\s*\\/dev\\/sd/,\n /mkfs\\./,\n /dd\\s+if=/,\n /:(){.*};:/, // Fork bomb\n /curl.*\\|\\s*(ba)?sh/,\n /wget.*\\|\\s*(ba)?sh/\n];\n\n// Assess command risk\nexport function assessCommandRisk(command: string): number {\n let risk = 0;\n\n for (const pattern of dangerousPatterns) {\n if (pattern.test(command)) {\n risk = Math.max(risk, 0.9);\n }\n }\n\n // Medium risk patterns\n if (/sudo/.test(command)) risk = Math.max(risk, 0.5);\n if (/rm\\s+-/.test(command)) risk = Math.max(risk, 0.4);\n if (/chmod/.test(command)) risk = Math.max(risk, 0.3);\n if (/chown/.test(command)) risk = Math.max(risk, 0.3);\n\n return risk;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/transfer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAW3D,eAAO,MAAM,gBAAgB,EAAE,cAwK9B,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transfer Hook - Cross-project pattern transfer
|
|
3
|
+
* Enables knowledge sharing between projects
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import { loadIntelligence, saveIntelligence, simpleEmbed } from './shared.js';
|
|
9
|
+
const INTELLIGENCE_PATH = '.agentic-flow/intelligence.json';
|
|
10
|
+
export const hookTransferTool = {
|
|
11
|
+
name: 'hook_transfer',
|
|
12
|
+
description: 'Transfer learned patterns from another project',
|
|
13
|
+
parameters: z.object({
|
|
14
|
+
sourceProject: z.string().describe('Path to source project'),
|
|
15
|
+
minConfidence: z.number().optional().default(0.5).describe('Minimum pattern score to transfer'),
|
|
16
|
+
maxPatterns: z.number().optional().default(50).describe('Maximum patterns to transfer'),
|
|
17
|
+
mode: z.enum(['merge', 'replace', 'additive']).optional().default('merge')
|
|
18
|
+
.describe('Transfer mode: merge combines, replace overwrites, additive only adds new')
|
|
19
|
+
}),
|
|
20
|
+
execute: async ({ sourceProject, minConfidence, maxPatterns, mode }, { onProgress }) => {
|
|
21
|
+
const startTime = Date.now();
|
|
22
|
+
onProgress?.({ progress: 0.1, message: 'Loading source intelligence...' });
|
|
23
|
+
// Load source intelligence
|
|
24
|
+
const sourcePath = path.join(sourceProject, INTELLIGENCE_PATH);
|
|
25
|
+
if (!fs.existsSync(sourcePath)) {
|
|
26
|
+
throw new Error(`Source intelligence not found at ${sourcePath}. Run pretrain on source project first.`);
|
|
27
|
+
}
|
|
28
|
+
let sourceIntel;
|
|
29
|
+
try {
|
|
30
|
+
sourceIntel = JSON.parse(fs.readFileSync(sourcePath, 'utf-8'));
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
throw new Error(`Failed to parse source intelligence: ${e}`);
|
|
34
|
+
}
|
|
35
|
+
// Load target (current) intelligence
|
|
36
|
+
const targetIntel = loadIntelligence();
|
|
37
|
+
onProgress?.({ progress: 0.3, message: 'Analyzing patterns...' });
|
|
38
|
+
// Track transfer stats
|
|
39
|
+
const stats = {
|
|
40
|
+
patternsTransferred: 0,
|
|
41
|
+
memoriesTransferred: 0,
|
|
42
|
+
sequencesTransferred: 0,
|
|
43
|
+
errorsTransferred: 0,
|
|
44
|
+
skipped: 0
|
|
45
|
+
};
|
|
46
|
+
// Transfer patterns
|
|
47
|
+
const patternsToTransfer = [];
|
|
48
|
+
for (const [state, agents] of Object.entries(sourceIntel.patterns || {})) {
|
|
49
|
+
for (const [agent, score] of Object.entries(agents)) {
|
|
50
|
+
if (typeof score === 'number' && score >= minConfidence) {
|
|
51
|
+
patternsToTransfer.push({ state, agent, score });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Sort by score and limit
|
|
56
|
+
patternsToTransfer.sort((a, b) => b.score - a.score);
|
|
57
|
+
const selectedPatterns = patternsToTransfer.slice(0, maxPatterns);
|
|
58
|
+
onProgress?.({ progress: 0.5, message: 'Transferring patterns...' });
|
|
59
|
+
// Apply patterns based on mode
|
|
60
|
+
for (const pattern of selectedPatterns) {
|
|
61
|
+
if (!targetIntel.patterns[pattern.state]) {
|
|
62
|
+
targetIntel.patterns[pattern.state] = {};
|
|
63
|
+
}
|
|
64
|
+
const currentValue = targetIntel.patterns[pattern.state][pattern.agent] || 0;
|
|
65
|
+
switch (mode) {
|
|
66
|
+
case 'replace':
|
|
67
|
+
// Overwrite with source value (reduced confidence)
|
|
68
|
+
targetIntel.patterns[pattern.state][pattern.agent] = pattern.score * 0.7;
|
|
69
|
+
stats.patternsTransferred++;
|
|
70
|
+
break;
|
|
71
|
+
case 'additive':
|
|
72
|
+
// Only add if not present
|
|
73
|
+
if (currentValue === 0) {
|
|
74
|
+
targetIntel.patterns[pattern.state][pattern.agent] = pattern.score * 0.5;
|
|
75
|
+
stats.patternsTransferred++;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
stats.skipped++;
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
case 'merge':
|
|
82
|
+
default:
|
|
83
|
+
// Weighted average
|
|
84
|
+
targetIntel.patterns[pattern.state][pattern.agent] =
|
|
85
|
+
currentValue * 0.6 + pattern.score * 0.4;
|
|
86
|
+
stats.patternsTransferred++;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
onProgress?.({ progress: 0.7, message: 'Transferring memories...' });
|
|
91
|
+
// Transfer high-quality memories
|
|
92
|
+
if (sourceIntel.memories && sourceIntel.memories.length > 0) {
|
|
93
|
+
const existingContents = new Set(targetIntel.memories.map(m => m.content.slice(0, 50)));
|
|
94
|
+
for (const mem of sourceIntel.memories) {
|
|
95
|
+
// Skip duplicates
|
|
96
|
+
if (existingContents.has(mem.content.slice(0, 50))) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
// Only transfer project-type memories (not ephemeral)
|
|
100
|
+
if (mem.type === 'project' || mem.type === 'success') {
|
|
101
|
+
targetIntel.memories.push({
|
|
102
|
+
...mem,
|
|
103
|
+
type: 'transferred',
|
|
104
|
+
created: new Date().toISOString(),
|
|
105
|
+
embedding: mem.embedding || simpleEmbed(mem.content)
|
|
106
|
+
});
|
|
107
|
+
stats.memoriesTransferred++;
|
|
108
|
+
if (stats.memoriesTransferred >= 20)
|
|
109
|
+
break; // Limit
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Transfer error patterns (valuable for learning)
|
|
114
|
+
if (sourceIntel.errorPatterns && sourceIntel.errorPatterns.length > 0) {
|
|
115
|
+
const existingErrors = new Set(targetIntel.errorPatterns.map(e => e.errorType));
|
|
116
|
+
for (const ep of sourceIntel.errorPatterns) {
|
|
117
|
+
if (!existingErrors.has(ep.errorType) && ep.resolution) {
|
|
118
|
+
targetIntel.errorPatterns.push(ep);
|
|
119
|
+
stats.errorsTransferred++;
|
|
120
|
+
if (stats.errorsTransferred >= 10)
|
|
121
|
+
break; // Limit
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
onProgress?.({ progress: 0.9, message: 'Saving intelligence...' });
|
|
126
|
+
// Save updated intelligence
|
|
127
|
+
saveIntelligence(targetIntel);
|
|
128
|
+
onProgress?.({ progress: 1.0, message: 'Transfer complete!' });
|
|
129
|
+
const latency = Date.now() - startTime;
|
|
130
|
+
return {
|
|
131
|
+
success: true,
|
|
132
|
+
sourceProject,
|
|
133
|
+
mode,
|
|
134
|
+
transferred: {
|
|
135
|
+
patterns: stats.patternsTransferred,
|
|
136
|
+
memories: stats.memoriesTransferred,
|
|
137
|
+
sequences: stats.sequencesTransferred,
|
|
138
|
+
errorPatterns: stats.errorsTransferred
|
|
139
|
+
},
|
|
140
|
+
skipped: stats.skipped,
|
|
141
|
+
targetStats: {
|
|
142
|
+
totalPatterns: Object.keys(targetIntel.patterns).length,
|
|
143
|
+
totalMemories: targetIntel.memories.length,
|
|
144
|
+
totalErrors: targetIntel.errorPatterns.length
|
|
145
|
+
},
|
|
146
|
+
latencyMs: latency,
|
|
147
|
+
timestamp: new Date().toISOString()
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/transfer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Transfer Hook - Cross-project pattern transfer\n * Enables knowledge sharing between projects\n */\n\nimport { z } from 'zod';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport type { ToolDefinition } from '../../types/index.js';\nimport {\n loadIntelligence,\n saveIntelligence,\n IntelligenceData,\n simpleEmbed,\n cosineSimilarity\n} from './shared.js';\n\nconst INTELLIGENCE_PATH = '.agentic-flow/intelligence.json';\n\nexport const hookTransferTool: ToolDefinition = {\n name: 'hook_transfer',\n description: 'Transfer learned patterns from another project',\n parameters: z.object({\n sourceProject: z.string().describe('Path to source project'),\n minConfidence: z.number().optional().default(0.5).describe('Minimum pattern score to transfer'),\n maxPatterns: z.number().optional().default(50).describe('Maximum patterns to transfer'),\n mode: z.enum(['merge', 'replace', 'additive']).optional().default('merge')\n .describe('Transfer mode: merge combines, replace overwrites, additive only adds new')\n }),\n execute: async ({ sourceProject, minConfidence, maxPatterns, mode }, { onProgress }) => {\n const startTime = Date.now();\n\n onProgress?.({ progress: 0.1, message: 'Loading source intelligence...' });\n\n // Load source intelligence\n const sourcePath = path.join(sourceProject, INTELLIGENCE_PATH);\n if (!fs.existsSync(sourcePath)) {\n throw new Error(`Source intelligence not found at ${sourcePath}. Run pretrain on source project first.`);\n }\n\n let sourceIntel: IntelligenceData;\n try {\n sourceIntel = JSON.parse(fs.readFileSync(sourcePath, 'utf-8'));\n } catch (e) {\n throw new Error(`Failed to parse source intelligence: ${e}`);\n }\n\n // Load target (current) intelligence\n const targetIntel = loadIntelligence();\n\n onProgress?.({ progress: 0.3, message: 'Analyzing patterns...' });\n\n // Track transfer stats\n const stats = {\n patternsTransferred: 0,\n memoriesTransferred: 0,\n sequencesTransferred: 0,\n errorsTransferred: 0,\n skipped: 0\n };\n\n // Transfer patterns\n const patternsToTransfer: Array<{ state: string; agent: string; score: number }> = [];\n\n for (const [state, agents] of Object.entries(sourceIntel.patterns || {})) {\n for (const [agent, score] of Object.entries(agents as Record<string, number>)) {\n if (typeof score === 'number' && score >= minConfidence) {\n patternsToTransfer.push({ state, agent, score });\n }\n }\n }\n\n // Sort by score and limit\n patternsToTransfer.sort((a, b) => b.score - a.score);\n const selectedPatterns = patternsToTransfer.slice(0, maxPatterns);\n\n onProgress?.({ progress: 0.5, message: 'Transferring patterns...' });\n\n // Apply patterns based on mode\n for (const pattern of selectedPatterns) {\n if (!targetIntel.patterns[pattern.state]) {\n targetIntel.patterns[pattern.state] = {};\n }\n\n const currentValue = targetIntel.patterns[pattern.state][pattern.agent] || 0;\n\n switch (mode) {\n case 'replace':\n // Overwrite with source value (reduced confidence)\n targetIntel.patterns[pattern.state][pattern.agent] = pattern.score * 0.7;\n stats.patternsTransferred++;\n break;\n\n case 'additive':\n // Only add if not present\n if (currentValue === 0) {\n targetIntel.patterns[pattern.state][pattern.agent] = pattern.score * 0.5;\n stats.patternsTransferred++;\n } else {\n stats.skipped++;\n }\n break;\n\n case 'merge':\n default:\n // Weighted average\n targetIntel.patterns[pattern.state][pattern.agent] =\n currentValue * 0.6 + pattern.score * 0.4;\n stats.patternsTransferred++;\n break;\n }\n }\n\n onProgress?.({ progress: 0.7, message: 'Transferring memories...' });\n\n // Transfer high-quality memories\n if (sourceIntel.memories && sourceIntel.memories.length > 0) {\n const existingContents = new Set(\n targetIntel.memories.map(m => m.content.slice(0, 50))\n );\n\n for (const mem of sourceIntel.memories) {\n // Skip duplicates\n if (existingContents.has(mem.content.slice(0, 50))) {\n continue;\n }\n\n // Only transfer project-type memories (not ephemeral)\n if (mem.type === 'project' || mem.type === 'success') {\n targetIntel.memories.push({\n ...mem,\n type: 'transferred',\n created: new Date().toISOString(),\n embedding: mem.embedding || simpleEmbed(mem.content)\n });\n stats.memoriesTransferred++;\n\n if (stats.memoriesTransferred >= 20) break; // Limit\n }\n }\n }\n\n // Transfer error patterns (valuable for learning)\n if (sourceIntel.errorPatterns && sourceIntel.errorPatterns.length > 0) {\n const existingErrors = new Set(\n targetIntel.errorPatterns.map(e => e.errorType)\n );\n\n for (const ep of sourceIntel.errorPatterns) {\n if (!existingErrors.has(ep.errorType) && ep.resolution) {\n targetIntel.errorPatterns.push(ep);\n stats.errorsTransferred++;\n\n if (stats.errorsTransferred >= 10) break; // Limit\n }\n }\n }\n\n onProgress?.({ progress: 0.9, message: 'Saving intelligence...' });\n\n // Save updated intelligence\n saveIntelligence(targetIntel);\n\n onProgress?.({ progress: 1.0, message: 'Transfer complete!' });\n\n const latency = Date.now() - startTime;\n\n return {\n success: true,\n sourceProject,\n mode,\n transferred: {\n patterns: stats.patternsTransferred,\n memories: stats.memoriesTransferred,\n sequences: stats.sequencesTransferred,\n errorPatterns: stats.errorsTransferred\n },\n skipped: stats.skipped,\n targetStats: {\n totalPatterns: Object.keys(targetIntel.patterns).length,\n totalMemories: targetIntel.memories.length,\n totalErrors: targetIntel.errorPatterns.length\n },\n latencyMs: latency,\n timestamp: new Date().toISOString()\n };\n }\n};\n"]}
|
|
@@ -4,8 +4,16 @@
|
|
|
4
4
|
* Ultra-fast code editing (352x faster than cloud APIs, $0 cost)
|
|
5
5
|
* Uses Agent Booster's local WASM engine for sub-millisecond transformations
|
|
6
6
|
*/
|
|
7
|
-
import { MCPTool } from '../types';
|
|
8
7
|
import type { MorphApplyResponse } from 'agent-booster';
|
|
8
|
+
interface MCPTool {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
inputSchema: {
|
|
12
|
+
type: string;
|
|
13
|
+
properties: Record<string, any>;
|
|
14
|
+
required?: string[];
|
|
15
|
+
};
|
|
16
|
+
}
|
|
9
17
|
/**
|
|
10
18
|
* Agent Booster MCP Tools
|
|
11
19
|
*/
|
|
@@ -65,4 +73,5 @@ export declare function getAgentBoosterStats(): {
|
|
|
65
73
|
languages: string[];
|
|
66
74
|
};
|
|
67
75
|
};
|
|
76
|
+
export {};
|
|
68
77
|
//# sourceMappingURL=agent-booster-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-booster-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/agent-booster-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-booster-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/agent-booster-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAqB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3E,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAQD;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,EA6EzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB;IAClC;;OAEG;sCACqC;QACtC,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAG,OAAO,CAAC,kBAAkB,CAAC;IA+C/B;;OAEG;uCACsC;QACvC,KAAK,EAAE,KAAK,CAAC;YACX,eAAe,EAAE,MAAM,CAAC;YACxB,YAAY,EAAE,MAAM,CAAC;YACrB,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;KACJ,KAAG,OAAO,CAAC;QAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC;IAsE5D;;OAEG;2CAC0C;QAC3C,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAG,OAAO,CAAC;QAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC;CAmC7D,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB;;;;;;;;;;;;;;EAmBnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-booster-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/agent-booster-tools.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Booster MCP Tools\n *\n * Ultra-fast code editing (352x faster than cloud APIs, $0 cost)\n * Uses Agent Booster's local WASM engine for sub-millisecond transformations\n */\n\nimport { AgentBooster } from 'agent-booster';\nimport { MCPTool } from '../types';\nimport type { MorphApplyRequest, MorphApplyResponse } from 'agent-booster';\n\n// Initialize Agent Booster instance\nconst booster = new AgentBooster({\n confidenceThreshold: 0.5,\n maxChunks: 100\n});\n\n/**\n * Agent Booster MCP Tools\n */\nexport const agentBoosterMCPTools: MCPTool[] = [\n {\n name: 'agent_booster_edit_file',\n description: 'Ultra-fast code editing (352x faster than cloud APIs, $0 cost). Apply precise code edits using Agent Booster\\'s local WASM engine. Use \"// ... existing code ...\" markers for unchanged sections.',\n inputSchema: {\n type: 'object',\n properties: {\n target_filepath: {\n type: 'string',\n description: 'Path of the file to modify'\n },\n instructions: {\n type: 'string',\n description: 'First-person instruction (e.g., \"I will add error handling\")'\n },\n code_edit: {\n type: 'string',\n description: 'Precise code lines to edit, using \"// ... existing code ...\" for unchanged sections'\n },\n language: {\n type: 'string',\n description: 'Programming language (auto-detected from file extension if not provided)'\n }\n },\n required: ['target_filepath', 'instructions', 'code_edit']\n }\n },\n {\n name: 'agent_booster_batch_edit',\n description: 'Apply multiple code edits in a single operation (ultra-fast batch processing). Perfect for multi-file refactoring.',\n inputSchema: {\n type: 'object',\n properties: {\n edits: {\n type: 'array',\n description: 'Array of edit requests',\n items: {\n type: 'object',\n properties: {\n target_filepath: {\n type: 'string',\n description: 'File path'\n },\n instructions: {\n type: 'string',\n description: 'First-person instruction'\n },\n code_edit: {\n type: 'string',\n description: 'Code edit with markers'\n },\n language: {\n type: 'string',\n description: 'Programming language'\n }\n },\n required: ['target_filepath', 'instructions', 'code_edit']\n }\n }\n },\n required: ['edits']\n }\n },\n {\n name: 'agent_booster_parse_markdown',\n description: 'Parse markdown code blocks with filepath= and instruction= metadata, then apply all edits. Compatible with LLM-generated multi-file refactoring outputs.',\n inputSchema: {\n type: 'object',\n properties: {\n markdown: {\n type: 'string',\n description: 'Markdown text containing code blocks with filepath= and instruction= metadata'\n }\n },\n required: ['markdown']\n }\n }\n];\n\n/**\n * Agent Booster MCP Tool Handlers\n */\nexport const agentBoosterMCPHandlers = {\n /**\n * Edit a single file with Agent Booster\n */\n agent_booster_edit_file: async (params: {\n target_filepath: string;\n instructions: string;\n code_edit: string;\n language?: string;\n }): Promise<MorphApplyResponse> => {\n const fs = require('fs/promises');\n const path = require('path');\n\n try {\n // Read current file content\n const originalCode = await fs.readFile(params.target_filepath, 'utf8');\n\n // Auto-detect language from file extension if not provided\n const language = params.language || path.extname(params.target_filepath).slice(1);\n\n // Apply edit using Agent Booster\n const result = await booster.apply({\n code: originalCode,\n edit: params.code_edit,\n language\n });\n\n // Write modified code if successful\n if (result.success) {\n await fs.writeFile(params.target_filepath, result.output, 'utf8');\n }\n\n return {\n ...result,\n // Add metadata\n metadata: {\n filepath: params.target_filepath,\n instructions: params.instructions,\n language,\n originalSize: originalCode.length,\n modifiedSize: result.output.length\n }\n } as any;\n } catch (error: any) {\n return {\n output: '',\n success: false,\n latency: 0,\n tokens: { input: 0, output: 0 },\n confidence: 0,\n strategy: 'failed',\n error: error.message\n } as any;\n }\n },\n\n /**\n * Apply multiple edits in batch\n */\n agent_booster_batch_edit: async (params: {\n edits: Array<{\n target_filepath: string;\n instructions: string;\n code_edit: string;\n language?: string;\n }>;\n }): Promise<{ results: MorphApplyResponse[]; summary: any }> => {\n const results: MorphApplyResponse[] = [];\n const fs = require('fs/promises');\n const path = require('path');\n\n let totalLatency = 0;\n let successCount = 0;\n let totalBytes = 0;\n\n for (const edit of params.edits) {\n try {\n // Read current file content\n const originalCode = await fs.readFile(edit.target_filepath, 'utf8');\n\n // Auto-detect language\n const language = edit.language || path.extname(edit.target_filepath).slice(1);\n\n // Apply edit using Agent Booster\n const result = await booster.apply({\n code: originalCode,\n edit: edit.code_edit,\n language\n });\n\n // Write modified code if successful\n if (result.success) {\n await fs.writeFile(edit.target_filepath, result.output, 'utf8');\n successCount++;\n }\n\n totalLatency += result.latency;\n totalBytes += Buffer.byteLength(result.output, 'utf8');\n\n results.push({\n ...result,\n metadata: {\n filepath: edit.target_filepath,\n instructions: edit.instructions\n }\n } as any);\n } catch (error: any) {\n results.push({\n output: '',\n success: false,\n latency: 0,\n tokens: { input: 0, output: 0 },\n confidence: 0,\n strategy: 'failed',\n error: error.message,\n metadata: {\n filepath: edit.target_filepath\n }\n } as any);\n }\n }\n\n return {\n results,\n summary: {\n total: params.edits.length,\n successful: successCount,\n failed: params.edits.length - successCount,\n totalLatency,\n avgLatency: totalLatency / params.edits.length,\n totalBytes,\n speedupVsCloud: Math.round(352 / (totalLatency / params.edits.length))\n }\n };\n },\n\n /**\n * Parse markdown and apply edits\n */\n agent_booster_parse_markdown: async (params: {\n markdown: string;\n }): Promise<{ results: MorphApplyResponse[]; summary: any }> => {\n // Parse markdown code blocks\n const codeBlockRegex = /```(\\w+)?\\s+filepath=[\"']([^\"']+)[\"']\\s+instruction=[\"']([^\"']+)[\"']\\s*\\n([\\s\\S]*?)```/g;\n const edits: Array<{\n target_filepath: string;\n instructions: string;\n code_edit: string;\n language?: string;\n }> = [];\n\n let match;\n while ((match = codeBlockRegex.exec(params.markdown)) !== null) {\n edits.push({\n language: match[1],\n target_filepath: match[2],\n instructions: match[3],\n code_edit: match[4].trim()\n });\n }\n\n if (edits.length === 0) {\n return {\n results: [],\n summary: {\n total: 0,\n successful: 0,\n failed: 0,\n error: 'No code blocks found with required metadata'\n }\n };\n }\n\n // Apply all edits\n return agentBoosterMCPHandlers.agent_booster_batch_edit({ edits });\n }\n};\n\n/**\n * Get Agent Booster statistics\n */\nexport function getAgentBoosterStats() {\n return {\n engine: 'Agent Booster WASM',\n version: '0.2.2',\n performance: {\n avgLatency: '1ms',\n speedup: '352x vs cloud APIs',\n costSavings: '$240/month'\n },\n features: {\n local: true,\n offline: true,\n privacy: 'Complete (no data sent to cloud)',\n languages: [\n 'javascript', 'typescript', 'python', 'rust', 'go',\n 'java', 'c', 'cpp', 'ruby', 'php', 'swift', 'kotlin'\n ]\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent-booster-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/agent-booster-tools.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Booster MCP Tools\n *\n * Ultra-fast code editing (352x faster than cloud APIs, $0 cost)\n * Uses Agent Booster's local WASM engine for sub-millisecond transformations\n */\n\nimport { AgentBooster } from 'agent-booster';\nimport type { MorphApplyRequest, MorphApplyResponse } from 'agent-booster';\n\n// MCP Tool definition type\ninterface MCPTool {\n name: string;\n description: string;\n inputSchema: {\n type: string;\n properties: Record<string, any>;\n required?: string[];\n };\n}\n\n// Initialize Agent Booster instance\nconst booster = new AgentBooster({\n confidenceThreshold: 0.5,\n maxChunks: 100\n});\n\n/**\n * Agent Booster MCP Tools\n */\nexport const agentBoosterMCPTools: MCPTool[] = [\n {\n name: 'agent_booster_edit_file',\n description: 'Ultra-fast code editing (352x faster than cloud APIs, $0 cost). Apply precise code edits using Agent Booster\\'s local WASM engine. Use \"// ... existing code ...\" markers for unchanged sections.',\n inputSchema: {\n type: 'object',\n properties: {\n target_filepath: {\n type: 'string',\n description: 'Path of the file to modify'\n },\n instructions: {\n type: 'string',\n description: 'First-person instruction (e.g., \"I will add error handling\")'\n },\n code_edit: {\n type: 'string',\n description: 'Precise code lines to edit, using \"// ... existing code ...\" for unchanged sections'\n },\n language: {\n type: 'string',\n description: 'Programming language (auto-detected from file extension if not provided)'\n }\n },\n required: ['target_filepath', 'instructions', 'code_edit']\n }\n },\n {\n name: 'agent_booster_batch_edit',\n description: 'Apply multiple code edits in a single operation (ultra-fast batch processing). Perfect for multi-file refactoring.',\n inputSchema: {\n type: 'object',\n properties: {\n edits: {\n type: 'array',\n description: 'Array of edit requests',\n items: {\n type: 'object',\n properties: {\n target_filepath: {\n type: 'string',\n description: 'File path'\n },\n instructions: {\n type: 'string',\n description: 'First-person instruction'\n },\n code_edit: {\n type: 'string',\n description: 'Code edit with markers'\n },\n language: {\n type: 'string',\n description: 'Programming language'\n }\n },\n required: ['target_filepath', 'instructions', 'code_edit']\n }\n }\n },\n required: ['edits']\n }\n },\n {\n name: 'agent_booster_parse_markdown',\n description: 'Parse markdown code blocks with filepath= and instruction= metadata, then apply all edits. Compatible with LLM-generated multi-file refactoring outputs.',\n inputSchema: {\n type: 'object',\n properties: {\n markdown: {\n type: 'string',\n description: 'Markdown text containing code blocks with filepath= and instruction= metadata'\n }\n },\n required: ['markdown']\n }\n }\n];\n\n/**\n * Agent Booster MCP Tool Handlers\n */\nexport const agentBoosterMCPHandlers = {\n /**\n * Edit a single file with Agent Booster\n */\n agent_booster_edit_file: async (params: {\n target_filepath: string;\n instructions: string;\n code_edit: string;\n language?: string;\n }): Promise<MorphApplyResponse> => {\n const fs = require('fs/promises');\n const path = require('path');\n\n try {\n // Read current file content\n const originalCode = await fs.readFile(params.target_filepath, 'utf8');\n\n // Auto-detect language from file extension if not provided\n const language = params.language || path.extname(params.target_filepath).slice(1);\n\n // Apply edit using Agent Booster\n const result = await booster.apply({\n code: originalCode,\n edit: params.code_edit,\n language\n });\n\n // Write modified code if successful\n if (result.success) {\n await fs.writeFile(params.target_filepath, result.output, 'utf8');\n }\n\n return {\n ...result,\n // Add metadata\n metadata: {\n filepath: params.target_filepath,\n instructions: params.instructions,\n language,\n originalSize: originalCode.length,\n modifiedSize: result.output.length\n }\n } as any;\n } catch (error: any) {\n return {\n output: '',\n success: false,\n latency: 0,\n tokens: { input: 0, output: 0 },\n confidence: 0,\n strategy: 'failed',\n error: error.message\n } as any;\n }\n },\n\n /**\n * Apply multiple edits in batch\n */\n agent_booster_batch_edit: async (params: {\n edits: Array<{\n target_filepath: string;\n instructions: string;\n code_edit: string;\n language?: string;\n }>;\n }): Promise<{ results: MorphApplyResponse[]; summary: any }> => {\n const results: MorphApplyResponse[] = [];\n const fs = require('fs/promises');\n const path = require('path');\n\n let totalLatency = 0;\n let successCount = 0;\n let totalBytes = 0;\n\n for (const edit of params.edits) {\n try {\n // Read current file content\n const originalCode = await fs.readFile(edit.target_filepath, 'utf8');\n\n // Auto-detect language\n const language = edit.language || path.extname(edit.target_filepath).slice(1);\n\n // Apply edit using Agent Booster\n const result = await booster.apply({\n code: originalCode,\n edit: edit.code_edit,\n language\n });\n\n // Write modified code if successful\n if (result.success) {\n await fs.writeFile(edit.target_filepath, result.output, 'utf8');\n successCount++;\n }\n\n totalLatency += result.latency;\n totalBytes += Buffer.byteLength(result.output, 'utf8');\n\n results.push({\n ...result,\n metadata: {\n filepath: edit.target_filepath,\n instructions: edit.instructions\n }\n } as any);\n } catch (error: any) {\n results.push({\n output: '',\n success: false,\n latency: 0,\n tokens: { input: 0, output: 0 },\n confidence: 0,\n strategy: 'failed',\n error: error.message,\n metadata: {\n filepath: edit.target_filepath\n }\n } as any);\n }\n }\n\n return {\n results,\n summary: {\n total: params.edits.length,\n successful: successCount,\n failed: params.edits.length - successCount,\n totalLatency,\n avgLatency: totalLatency / params.edits.length,\n totalBytes,\n speedupVsCloud: Math.round(352 / (totalLatency / params.edits.length))\n }\n };\n },\n\n /**\n * Parse markdown and apply edits\n */\n agent_booster_parse_markdown: async (params: {\n markdown: string;\n }): Promise<{ results: MorphApplyResponse[]; summary: any }> => {\n // Parse markdown code blocks\n const codeBlockRegex = /```(\\w+)?\\s+filepath=[\"']([^\"']+)[\"']\\s+instruction=[\"']([^\"']+)[\"']\\s*\\n([\\s\\S]*?)```/g;\n const edits: Array<{\n target_filepath: string;\n instructions: string;\n code_edit: string;\n language?: string;\n }> = [];\n\n let match;\n while ((match = codeBlockRegex.exec(params.markdown)) !== null) {\n edits.push({\n language: match[1],\n target_filepath: match[2],\n instructions: match[3],\n code_edit: match[4].trim()\n });\n }\n\n if (edits.length === 0) {\n return {\n results: [],\n summary: {\n total: 0,\n successful: 0,\n failed: 0,\n error: 'No code blocks found with required metadata'\n }\n };\n }\n\n // Apply all edits\n return agentBoosterMCPHandlers.agent_booster_batch_edit({ edits });\n }\n};\n\n/**\n * Get Agent Booster statistics\n */\nexport function getAgentBoosterStats() {\n return {\n engine: 'Agent Booster WASM',\n version: '0.2.2',\n performance: {\n avgLatency: '1ms',\n speedup: '352x vs cloud APIs',\n costSavings: '$240/month'\n },\n features: {\n local: true,\n offline: true,\n privacy: 'Complete (no data sent to cloud)',\n languages: [\n 'javascript', 'typescript', 'python', 'rust', 'go',\n 'java', 'c', 'cpp', 'ruby', 'php', 'swift', 'kotlin'\n ]\n }\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sona-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sona-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAIL,WAAW,EACZ,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,EAySjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;oCACY;QACpC,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB;;;;;;mCAYoC;QACnC,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;KAChB;;;;;
|
|
1
|
+
{"version":3,"file":"sona-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/sona-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAIL,WAAW,EACZ,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,EAySjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;oCACY;QACpC,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB;;;;;;mCAYoC;QACnC,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;KAChB;;;;;sCAiBuC;QACtC,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB;;;;;kCAYmC;QAClC,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;KACtB;;;;;;mCAeoC;QAAE,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE;;;;gCAgB5B;QAChC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB;;;;oCAgBqC;QACpC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB;;;;;;mCAcoC;QACnC,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB;;;;;;;+BAegC;QAAE,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE;;;;;6BAW3B;QAC7B,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB;+BA4BgC;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE;;;;;;;;;;;;;+BAoDxB;QAC/B,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB;;;;;6BAW8B;QAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB;;;;;;;;;;;;;;;;;;;;CAgDF,CAAC;AAgDF,eAAe,YAAY,CAAC"}
|
|
@@ -308,7 +308,9 @@ export const sonaMCPHandlers = {
|
|
|
308
308
|
};
|
|
309
309
|
},
|
|
310
310
|
sona_trajectory_step: async (params) => {
|
|
311
|
-
|
|
311
|
+
// Convert string ID to number for SONA service
|
|
312
|
+
const trajectoryIdNum = parseInt(params.trajectoryId, 10);
|
|
313
|
+
sonaService.addTrajectoryStep(trajectoryIdNum, params.activations, params.attentionWeights, params.reward);
|
|
312
314
|
return {
|
|
313
315
|
success: true,
|
|
314
316
|
trajectoryId: params.trajectoryId,
|
|
@@ -316,7 +318,9 @@ export const sonaMCPHandlers = {
|
|
|
316
318
|
};
|
|
317
319
|
},
|
|
318
320
|
sona_trajectory_context: async (params) => {
|
|
319
|
-
|
|
321
|
+
// Convert string ID to number for SONA service
|
|
322
|
+
const trajectoryIdNum = parseInt(params.trajectoryId, 10);
|
|
323
|
+
sonaService.addTrajectoryContext(trajectoryIdNum, params.contextId);
|
|
320
324
|
return {
|
|
321
325
|
success: true,
|
|
322
326
|
trajectoryId: params.trajectoryId,
|
|
@@ -324,7 +328,9 @@ export const sonaMCPHandlers = {
|
|
|
324
328
|
};
|
|
325
329
|
},
|
|
326
330
|
sona_trajectory_end: async (params) => {
|
|
327
|
-
|
|
331
|
+
// Convert string ID to number for SONA service
|
|
332
|
+
const trajectoryIdNum = parseInt(params.trajectoryId, 10);
|
|
333
|
+
sonaService.endTrajectory(trajectoryIdNum, params.qualityScore);
|
|
328
334
|
const stats = sonaService.getStats();
|
|
329
335
|
return {
|
|
330
336
|
success: true,
|
|
@@ -552,6 +558,12 @@ function getProfileCharacteristics(profile) {
|
|
|
552
558
|
latency: '~1ms',
|
|
553
559
|
memory: '~50MB',
|
|
554
560
|
qualityGain: '+25%'
|
|
561
|
+
},
|
|
562
|
+
'custom': {
|
|
563
|
+
throughput: 'configurable',
|
|
564
|
+
latency: 'configurable',
|
|
565
|
+
memory: 'configurable',
|
|
566
|
+
qualityGain: 'configurable'
|
|
555
567
|
}
|
|
556
568
|
};
|
|
557
569
|
return characteristics[profile];
|