agentic-flow 2.0.1-alpha.2 → 2.0.1-alpha.20

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.
Files changed (218) hide show
  1. package/CHANGELOG.md +352 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/agentdb/controllers/EmbeddingService.d.ts +37 -0
  4. package/dist/agentdb/controllers/EmbeddingService.d.ts.map +1 -0
  5. package/dist/agentdb/controllers/EmbeddingService.js +1 -0
  6. package/dist/agentdb/controllers/EmbeddingService.js.map +1 -0
  7. package/dist/billing/mcp/tools.d.ts.map +1 -1
  8. package/dist/billing/mcp/tools.js +2 -0
  9. package/dist/billing/mcp/tools.js.map +1 -1
  10. package/dist/cli/commands/hooks.d.ts +18 -0
  11. package/dist/cli/commands/hooks.d.ts.map +1 -0
  12. package/dist/cli/commands/hooks.js +755 -0
  13. package/dist/cli/commands/hooks.js.map +1 -0
  14. package/dist/cli-proxy.d.ts +1 -1
  15. package/dist/cli-proxy.d.ts.map +1 -1
  16. package/dist/cli-proxy.js +28 -1
  17. package/dist/cli-proxy.js.map +1 -1
  18. package/dist/core/agentdb-fast.js +3 -3
  19. package/dist/core/agentdb-fast.js.map +1 -1
  20. package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
  21. package/dist/core/agentdb-wrapper-enhanced.js +32 -17
  22. package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
  23. package/dist/core/attention-native.d.ts +1 -0
  24. package/dist/core/attention-native.d.ts.map +1 -1
  25. package/dist/core/attention-native.js +6 -1
  26. package/dist/core/attention-native.js.map +1 -1
  27. package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
  28. package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
  29. package/dist/intelligence/EmbeddingCache.d.ts +112 -0
  30. package/dist/intelligence/EmbeddingCache.d.ts.map +1 -0
  31. package/dist/intelligence/EmbeddingCache.js +624 -0
  32. package/dist/intelligence/EmbeddingCache.js.map +1 -0
  33. package/dist/intelligence/EmbeddingService.d.ts +380 -0
  34. package/dist/intelligence/EmbeddingService.d.ts.map +1 -0
  35. package/dist/intelligence/EmbeddingService.js +1484 -0
  36. package/dist/intelligence/EmbeddingService.js.map +1 -0
  37. package/dist/intelligence/IntelligenceStore.d.ts +168 -0
  38. package/dist/intelligence/IntelligenceStore.d.ts.map +1 -0
  39. package/dist/intelligence/IntelligenceStore.js +364 -0
  40. package/dist/intelligence/IntelligenceStore.js.map +1 -0
  41. package/dist/intelligence/RuVectorIntelligence.d.ts +362 -0
  42. package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -0
  43. package/dist/intelligence/RuVectorIntelligence.js +853 -0
  44. package/dist/intelligence/RuVectorIntelligence.js.map +1 -0
  45. package/dist/intelligence/embedding-benchmark.d.ts +7 -0
  46. package/dist/intelligence/embedding-benchmark.d.ts.map +1 -0
  47. package/dist/intelligence/embedding-benchmark.js +155 -0
  48. package/dist/intelligence/embedding-benchmark.js.map +1 -0
  49. package/dist/intelligence/index.d.ts +14 -0
  50. package/dist/intelligence/index.d.ts.map +1 -0
  51. package/dist/intelligence/index.js +14 -0
  52. package/dist/intelligence/index.js.map +1 -0
  53. package/dist/llm/RuvLLMOrchestrator.d.ts +184 -0
  54. package/dist/llm/RuvLLMOrchestrator.d.ts.map +1 -0
  55. package/dist/llm/RuvLLMOrchestrator.js +442 -0
  56. package/dist/llm/RuvLLMOrchestrator.js.map +1 -0
  57. package/dist/llm/index.d.ts +9 -0
  58. package/dist/llm/index.d.ts.map +1 -0
  59. package/dist/llm/index.js +8 -0
  60. package/dist/llm/index.js.map +1 -0
  61. package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
  62. package/dist/mcp/claudeFlowSdkServer.js +86 -21
  63. package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
  64. package/dist/mcp/fastmcp/servers/hooks-server.d.ts +15 -0
  65. package/dist/mcp/fastmcp/servers/hooks-server.d.ts.map +1 -0
  66. package/dist/mcp/fastmcp/servers/hooks-server.js +63 -0
  67. package/dist/mcp/fastmcp/servers/hooks-server.js.map +1 -0
  68. package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts +20 -0
  69. package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts.map +1 -0
  70. package/dist/mcp/fastmcp/tools/hooks/benchmark.js +110 -0
  71. package/dist/mcp/fastmcp/tools/hooks/benchmark.js.map +1 -0
  72. package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts +7 -0
  73. package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts.map +1 -0
  74. package/dist/mcp/fastmcp/tools/hooks/build-agents.js +276 -0
  75. package/dist/mcp/fastmcp/tools/hooks/build-agents.js.map +1 -0
  76. package/dist/mcp/fastmcp/tools/hooks/explain.d.ts +6 -0
  77. package/dist/mcp/fastmcp/tools/hooks/explain.d.ts.map +1 -0
  78. package/dist/mcp/fastmcp/tools/hooks/explain.js +164 -0
  79. package/dist/mcp/fastmcp/tools/hooks/explain.js.map +1 -0
  80. package/dist/mcp/fastmcp/tools/hooks/index.d.ts +28 -0
  81. package/dist/mcp/fastmcp/tools/hooks/index.d.ts.map +1 -0
  82. package/dist/mcp/fastmcp/tools/hooks/index.js +59 -0
  83. package/dist/mcp/fastmcp/tools/hooks/index.js.map +1 -0
  84. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts +307 -0
  85. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts.map +1 -0
  86. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +714 -0
  87. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -0
  88. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts +58 -0
  89. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts.map +1 -0
  90. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js +425 -0
  91. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js.map +1 -0
  92. package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts +6 -0
  93. package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts.map +1 -0
  94. package/dist/mcp/fastmcp/tools/hooks/metrics.js +137 -0
  95. package/dist/mcp/fastmcp/tools/hooks/metrics.js.map +1 -0
  96. package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts +7 -0
  97. package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts.map +1 -0
  98. package/dist/mcp/fastmcp/tools/hooks/post-command.js +91 -0
  99. package/dist/mcp/fastmcp/tools/hooks/post-command.js.map +1 -0
  100. package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts +12 -0
  101. package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts.map +1 -0
  102. package/dist/mcp/fastmcp/tools/hooks/post-edit.js +146 -0
  103. package/dist/mcp/fastmcp/tools/hooks/post-edit.js.map +1 -0
  104. package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts +7 -0
  105. package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts.map +1 -0
  106. package/dist/mcp/fastmcp/tools/hooks/pre-command.js +70 -0
  107. package/dist/mcp/fastmcp/tools/hooks/pre-command.js.map +1 -0
  108. package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts +14 -0
  109. package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts.map +1 -0
  110. package/dist/mcp/fastmcp/tools/hooks/pre-edit.js +121 -0
  111. package/dist/mcp/fastmcp/tools/hooks/pre-edit.js.map +1 -0
  112. package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts +7 -0
  113. package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts.map +1 -0
  114. package/dist/mcp/fastmcp/tools/hooks/pretrain.js +171 -0
  115. package/dist/mcp/fastmcp/tools/hooks/pretrain.js.map +1 -0
  116. package/dist/mcp/fastmcp/tools/hooks/route.d.ts +12 -0
  117. package/dist/mcp/fastmcp/tools/hooks/route.d.ts.map +1 -0
  118. package/dist/mcp/fastmcp/tools/hooks/route.js +267 -0
  119. package/dist/mcp/fastmcp/tools/hooks/route.js.map +1 -0
  120. package/dist/mcp/fastmcp/tools/hooks/shared.d.ts +46 -0
  121. package/dist/mcp/fastmcp/tools/hooks/shared.d.ts.map +1 -0
  122. package/dist/mcp/fastmcp/tools/hooks/shared.js +159 -0
  123. package/dist/mcp/fastmcp/tools/hooks/shared.js.map +1 -0
  124. package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts +7 -0
  125. package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts.map +1 -0
  126. package/dist/mcp/fastmcp/tools/hooks/transfer.js +151 -0
  127. package/dist/mcp/fastmcp/tools/hooks/transfer.js.map +1 -0
  128. package/dist/mcp/tools/agent-booster-tools.d.ts +10 -1
  129. package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
  130. package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
  131. package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
  132. package/dist/mcp/tools/sona-tools.js +15 -3
  133. package/dist/mcp/tools/sona-tools.js.map +1 -1
  134. package/dist/memory/SharedMemoryPool.d.ts +16 -3
  135. package/dist/memory/SharedMemoryPool.d.ts.map +1 -1
  136. package/dist/memory/SharedMemoryPool.js +33 -1
  137. package/dist/memory/SharedMemoryPool.js.map +1 -1
  138. package/dist/middleware/auth.middleware.d.ts +114 -0
  139. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  140. package/dist/middleware/auth.middleware.js +222 -0
  141. package/dist/middleware/auth.middleware.js.map +1 -0
  142. package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
  143. package/dist/optimizations/agent-booster-migration.js.map +1 -1
  144. package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -1
  145. package/dist/proxy/anthropic-to-gemini.js.map +1 -1
  146. package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -1
  147. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  148. package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -1
  149. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  150. package/dist/proxy/quic-proxy.d.ts +0 -1
  151. package/dist/proxy/quic-proxy.d.ts.map +1 -1
  152. package/dist/proxy/quic-proxy.js +2 -1
  153. package/dist/proxy/quic-proxy.js.map +1 -1
  154. package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -1
  155. package/dist/reasoningbank/AdvancedMemory.js +12 -1
  156. package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
  157. package/dist/reasoningbank/HybridBackend.d.ts +9 -0
  158. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
  159. package/dist/reasoningbank/HybridBackend.js +48 -4
  160. package/dist/reasoningbank/HybridBackend.js.map +1 -1
  161. package/dist/reasoningbank/backend-selector.d.ts +1 -1
  162. package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
  163. package/dist/reasoningbank/backend-selector.js.map +1 -1
  164. package/dist/reasoningbank/index-new.d.ts +0 -6
  165. package/dist/reasoningbank/index-new.d.ts.map +1 -1
  166. package/dist/reasoningbank/index-new.js +9 -7
  167. package/dist/reasoningbank/index-new.js.map +1 -1
  168. package/dist/reasoningbank/index.d.ts +1 -6
  169. package/dist/reasoningbank/index.d.ts.map +1 -1
  170. package/dist/reasoningbank/index.js +10 -7
  171. package/dist/reasoningbank/index.js.map +1 -1
  172. package/dist/router/providers/onnx-local.d.ts.map +1 -1
  173. package/dist/router/providers/onnx-local.js +3 -1
  174. package/dist/router/providers/onnx-local.js.map +1 -1
  175. package/dist/routing/CircuitBreakerRouter.d.ts +187 -0
  176. package/dist/routing/CircuitBreakerRouter.d.ts.map +1 -0
  177. package/dist/routing/CircuitBreakerRouter.js +460 -0
  178. package/dist/routing/CircuitBreakerRouter.js.map +1 -0
  179. package/dist/routing/SemanticRouter.d.ts +164 -0
  180. package/dist/routing/SemanticRouter.d.ts.map +1 -0
  181. package/dist/routing/SemanticRouter.js +291 -0
  182. package/dist/routing/SemanticRouter.js.map +1 -0
  183. package/dist/routing/index.d.ts +12 -0
  184. package/dist/routing/index.d.ts.map +1 -0
  185. package/dist/routing/index.js +10 -0
  186. package/dist/routing/index.js.map +1 -0
  187. package/dist/services/embedding-service.d.ts.map +1 -1
  188. package/dist/services/embedding-service.js +5 -2
  189. package/dist/services/embedding-service.js.map +1 -1
  190. package/dist/services/sona-agent-training.js +1 -1
  191. package/dist/services/sona-agent-training.js.map +1 -1
  192. package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
  193. package/dist/services/sona-agentdb-integration.js +10 -5
  194. package/dist/services/sona-agentdb-integration.js.map +1 -1
  195. package/dist/services/sona-service.d.ts +6 -6
  196. package/dist/services/sona-service.d.ts.map +1 -1
  197. package/dist/services/sona-service.js +3 -1
  198. package/dist/services/sona-service.js.map +1 -1
  199. package/dist/utils/agentdb-runtime-patch.d.ts +1 -0
  200. package/dist/utils/agentdb-runtime-patch.d.ts.map +1 -1
  201. package/dist/utils/agentdb-runtime-patch.js +97 -2
  202. package/dist/utils/agentdb-runtime-patch.js.map +1 -1
  203. package/dist/utils/audit-logger.d.ts +115 -0
  204. package/dist/utils/audit-logger.d.ts.map +1 -0
  205. package/dist/utils/audit-logger.js +228 -0
  206. package/dist/utils/audit-logger.js.map +1 -0
  207. package/dist/utils/cli.d.ts +1 -1
  208. package/dist/utils/cli.d.ts.map +1 -1
  209. package/dist/utils/cli.js +5 -0
  210. package/dist/utils/cli.js.map +1 -1
  211. package/dist/utils/input-validator.d.ts +116 -0
  212. package/dist/utils/input-validator.d.ts.map +1 -0
  213. package/dist/utils/input-validator.js +299 -0
  214. package/dist/utils/input-validator.js.map +1 -0
  215. package/dist/utils/rate-limiter.js +2 -2
  216. package/dist/utils/rate-limiter.js.map +1 -1
  217. package/package.json +14 -3
  218. package/scripts/postinstall.js +72 -0
@@ -1,11 +1,41 @@
1
1
  // In-SDK MCP server for claude-flow tools (no subprocess required)
2
2
  import { createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';
3
3
  import { z } from 'zod';
4
- import { execSync } from 'child_process';
4
+ import { spawnSync } from 'child_process';
5
5
  import { readFileSync, writeFileSync } from 'fs';
6
6
  import { extname } from 'path';
7
7
  import { logger } from '../utils/logger.js';
8
8
  import { AgentBooster } from 'agent-booster';
9
+ /**
10
+ * Sanitize string input to prevent command injection
11
+ * Removes shell metacharacters and validates format
12
+ */
13
+ function sanitizeInput(input, maxLength = 10000) {
14
+ if (!input || typeof input !== 'string') {
15
+ return '';
16
+ }
17
+ // Limit length to prevent buffer overflow attacks
18
+ const limited = input.slice(0, maxLength);
19
+ // Remove common shell metacharacters
20
+ return limited.replace(/[;&|`$(){}[\]<>\\'"!#]/g, '');
21
+ }
22
+ /**
23
+ * Execute claude-flow command safely using spawn with arguments array
24
+ */
25
+ function safeExec(args) {
26
+ const result = spawnSync('npx', ['claude-flow@alpha', ...args], {
27
+ encoding: 'utf-8',
28
+ maxBuffer: 10 * 1024 * 1024,
29
+ shell: false, // Important: disable shell interpretation
30
+ });
31
+ if (result.error) {
32
+ throw result.error;
33
+ }
34
+ if (result.status !== 0) {
35
+ throw new Error(result.stderr || `Command failed with exit code ${result.status}`);
36
+ }
37
+ return result.stdout;
38
+ }
9
39
  /**
10
40
  * Create an in-SDK MCP server that provides claude-flow memory and coordination tools
11
41
  * This runs in-process without spawning Claude Code CLI subprocess
@@ -22,14 +52,22 @@ export const claudeFlowSdkServer = createSdkMcpServer({
22
52
  ttl: z.number().optional().describe('Time-to-live in seconds')
23
53
  }, async ({ key, value, namespace, ttl }) => {
24
54
  try {
25
- logger.info('Storing memory', { key, namespace });
26
- const cmd = `npx claude-flow@alpha memory store "${key}" "${value}" --namespace "${namespace}"${ttl ? ` --ttl ${ttl}` : ''}`;
27
- const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
28
- logger.info('Memory stored successfully', { key });
55
+ // Sanitize inputs to prevent command injection
56
+ const safeKey = sanitizeInput(key, 256);
57
+ const safeValue = sanitizeInput(value, 10000);
58
+ const safeNamespace = sanitizeInput(namespace || 'default', 64);
59
+ logger.info('Storing memory', { key: safeKey, namespace: safeNamespace });
60
+ // Use safe execution with argument array
61
+ const args = ['memory', 'store', safeKey, safeValue, '--namespace', safeNamespace];
62
+ if (ttl && typeof ttl === 'number' && ttl > 0) {
63
+ args.push('--ttl', String(ttl));
64
+ }
65
+ const result = safeExec(args);
66
+ logger.info('Memory stored successfully', { key: safeKey });
29
67
  return {
30
68
  content: [{
31
69
  type: 'text',
32
- text: `āœ… Stored successfully\nšŸ“ Key: ${key}\nšŸ“¦ Namespace: ${namespace}\nšŸ’¾ Size: ${value.length} bytes`
70
+ text: `āœ… Stored successfully\nšŸ“ Key: ${safeKey}\nšŸ“¦ Namespace: ${safeNamespace}\nšŸ’¾ Size: ${safeValue.length} bytes`
33
71
  }]
34
72
  };
35
73
  }
@@ -50,8 +88,10 @@ export const claudeFlowSdkServer = createSdkMcpServer({
50
88
  namespace: z.string().optional().default('default').describe('Memory namespace')
51
89
  }, async ({ key, namespace }) => {
52
90
  try {
53
- const cmd = `npx claude-flow@alpha memory retrieve "${key}" --namespace "${namespace}"`;
54
- const result = execSync(cmd, { encoding: 'utf-8' });
91
+ // Sanitize inputs
92
+ const safeKey = sanitizeInput(key, 256);
93
+ const safeNamespace = sanitizeInput(namespace || 'default', 64);
94
+ const result = safeExec(['memory', 'retrieve', safeKey, '--namespace', safeNamespace]);
55
95
  return {
56
96
  content: [{
57
97
  type: 'text',
@@ -76,8 +116,15 @@ export const claudeFlowSdkServer = createSdkMcpServer({
76
116
  limit: z.number().optional().default(10).describe('Maximum results to return')
77
117
  }, async ({ pattern, namespace, limit }) => {
78
118
  try {
79
- const cmd = `npx claude-flow@alpha memory search "${pattern}"${namespace ? ` --namespace "${namespace}"` : ''} --limit ${limit}`;
80
- const result = execSync(cmd, { encoding: 'utf-8' });
119
+ // Sanitize inputs
120
+ const safePattern = sanitizeInput(pattern, 256);
121
+ const safeNamespace = sanitizeInput(namespace || '', 64);
122
+ const args = ['memory', 'search', safePattern];
123
+ if (safeNamespace) {
124
+ args.push('--namespace', safeNamespace);
125
+ }
126
+ args.push('--limit', String(limit));
127
+ const result = safeExec(args);
81
128
  return {
82
129
  content: [{
83
130
  type: 'text',
@@ -102,8 +149,13 @@ export const claudeFlowSdkServer = createSdkMcpServer({
102
149
  strategy: z.enum(['balanced', 'specialized', 'adaptive']).optional().default('balanced').describe('Agent distribution strategy')
103
150
  }, async ({ topology, maxAgents, strategy }) => {
104
151
  try {
105
- const cmd = `npx claude-flow@alpha swarm init --topology ${topology} --max-agents ${maxAgents} --strategy ${strategy}`;
106
- const result = execSync(cmd, { encoding: 'utf-8' });
152
+ // Topology, maxAgents, and strategy are validated by zod enum/number
153
+ const result = safeExec([
154
+ 'swarm', 'init',
155
+ '--topology', topology,
156
+ '--max-agents', String(maxAgents),
157
+ '--strategy', strategy || 'balanced'
158
+ ]);
107
159
  return {
108
160
  content: [{
109
161
  type: 'text',
@@ -128,10 +180,16 @@ export const claudeFlowSdkServer = createSdkMcpServer({
128
180
  name: z.string().optional().describe('Custom agent name')
129
181
  }, async ({ type, capabilities, name }) => {
130
182
  try {
131
- const capStr = capabilities ? ` --capabilities "${capabilities.join(',')}"` : '';
132
- const nameStr = name ? ` --name "${name}"` : '';
133
- const cmd = `npx claude-flow@alpha agent spawn --type ${type}${capStr}${nameStr}`;
134
- const result = execSync(cmd, { encoding: 'utf-8' });
183
+ const args = ['agent', 'spawn', '--type', type];
184
+ if (capabilities && capabilities.length > 0) {
185
+ // Sanitize each capability
186
+ const safeCaps = capabilities.map(c => sanitizeInput(c, 64)).join(',');
187
+ args.push('--capabilities', safeCaps);
188
+ }
189
+ if (name) {
190
+ args.push('--name', sanitizeInput(name, 64));
191
+ }
192
+ const result = safeExec(args);
135
193
  return {
136
194
  content: [{
137
195
  type: 'text',
@@ -157,9 +215,13 @@ export const claudeFlowSdkServer = createSdkMcpServer({
157
215
  maxAgents: z.number().optional().describe('Maximum agents to use for this task')
158
216
  }, async ({ task, strategy, priority, maxAgents }) => {
159
217
  try {
160
- const maxStr = maxAgents ? ` --max-agents ${maxAgents}` : '';
161
- const cmd = `npx claude-flow@alpha task orchestrate "${task}" --strategy ${strategy} --priority ${priority}${maxStr}`;
162
- const result = execSync(cmd, { encoding: 'utf-8' });
218
+ // Sanitize task description
219
+ const safeTask = sanitizeInput(task, 2000);
220
+ const args = ['task', 'orchestrate', safeTask, '--strategy', strategy || 'adaptive', '--priority', priority || 'medium'];
221
+ if (maxAgents && typeof maxAgents === 'number' && maxAgents > 0) {
222
+ args.push('--max-agents', String(maxAgents));
223
+ }
224
+ const result = safeExec(args);
163
225
  return {
164
226
  content: [{
165
227
  type: 'text',
@@ -182,8 +244,11 @@ export const claudeFlowSdkServer = createSdkMcpServer({
182
244
  verbose: z.boolean().optional().default(false).describe('Include detailed metrics')
183
245
  }, async ({ verbose }) => {
184
246
  try {
185
- const cmd = `npx claude-flow@alpha swarm status${verbose ? ' --verbose' : ''}`;
186
- const result = execSync(cmd, { encoding: 'utf-8' });
247
+ const args = ['swarm', 'status'];
248
+ if (verbose) {
249
+ args.push('--verbose');
250
+ }
251
+ const result = safeExec(args);
187
252
  return {
188
253
  content: [{
189
254
  type: 'text',
@@ -1 +1 @@
1
- {"version":3,"file":"claudeFlowSdkServer.js","sourceRoot":"","sources":["../../src/mcp/claudeFlowSdkServer.ts"],"names":[],"mappings":"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","sourcesContent":["// In-SDK MCP server for claude-flow tools (no subprocess required)\nimport { createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';\nimport { z } from 'zod';\nimport { execSync } from 'child_process';\nimport { readFileSync, writeFileSync } from 'fs';\nimport { extname } from 'path';\nimport { logger } from '../utils/logger.js';\nimport { AgentBooster } from 'agent-booster';\n\n/**\n * Create an in-SDK MCP server that provides claude-flow memory and coordination tools\n * This runs in-process without spawning Claude Code CLI subprocess\n */\nexport const claudeFlowSdkServer = createSdkMcpServer({\n name: 'claude-flow-sdk',\n version: '1.0.0',\n\n tools: [\n // Memory storage tool\n tool(\n 'memory_store',\n 'Store a value in persistent memory with optional namespace and TTL',\n {\n key: z.string().describe('Memory key'),\n value: z.string().describe('Value to store'),\n namespace: z.string().optional().default('default').describe('Memory namespace'),\n ttl: z.number().optional().describe('Time-to-live in seconds')\n },\n async ({ key, value, namespace, ttl }) => {\n try {\n logger.info('Storing memory', { key, namespace });\n const cmd = `npx claude-flow@alpha memory store \"${key}\" \"${value}\" --namespace \"${namespace}\"${ttl ? ` --ttl ${ttl}` : ''}`;\n const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });\n\n logger.info('Memory stored successfully', { key });\n return {\n content: [{\n type: 'text',\n text: `āœ… Stored successfully\\nšŸ“ Key: ${key}\\nšŸ“¦ Namespace: ${namespace}\\nšŸ’¾ Size: ${value.length} bytes`\n }]\n };\n } catch (error: any) {\n logger.error('Failed to store memory', { error: error.message });\n return {\n content: [{\n type: 'text',\n text: `āŒ Failed to store: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Memory retrieval tool\n tool(\n 'memory_retrieve',\n 'Retrieve a value from persistent memory',\n {\n key: z.string().describe('Memory key'),\n namespace: z.string().optional().default('default').describe('Memory namespace')\n },\n async ({ key, namespace }) => {\n try {\n const cmd = `npx claude-flow@alpha memory retrieve \"${key}\" --namespace \"${namespace}\"`;\n const result = execSync(cmd, { encoding: 'utf-8' });\n\n return {\n content: [{\n type: 'text',\n text: `āœ… Retrieved:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Failed to retrieve: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Memory search tool\n tool(\n 'memory_search',\n 'Search for keys matching a pattern in memory',\n {\n pattern: z.string().describe('Search pattern (supports wildcards)'),\n namespace: z.string().optional().describe('Memory namespace to search in'),\n limit: z.number().optional().default(10).describe('Maximum results to return')\n },\n async ({ pattern, namespace, limit }) => {\n try {\n const cmd = `npx claude-flow@alpha memory search \"${pattern}\"${namespace ? ` --namespace \"${namespace}\"` : ''} --limit ${limit}`;\n const result = execSync(cmd, { encoding: 'utf-8' });\n\n return {\n content: [{\n type: 'text',\n text: `šŸ” Search results:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Search failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Swarm initialization tool\n tool(\n 'swarm_init',\n 'Initialize a multi-agent swarm with specified topology',\n {\n topology: z.enum(['mesh', 'hierarchical', 'ring', 'star']).describe('Swarm topology'),\n maxAgents: z.number().optional().default(8).describe('Maximum number of agents'),\n strategy: z.enum(['balanced', 'specialized', 'adaptive']).optional().default('balanced').describe('Agent distribution strategy')\n },\n async ({ topology, maxAgents, strategy }) => {\n try {\n const cmd = `npx claude-flow@alpha swarm init --topology ${topology} --max-agents ${maxAgents} --strategy ${strategy}`;\n const result = execSync(cmd, { encoding: 'utf-8' });\n\n return {\n content: [{\n type: 'text',\n text: `šŸš€ Swarm initialized:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Swarm init failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Agent spawn tool\n tool(\n 'agent_spawn',\n 'Spawn a new agent in the swarm',\n {\n type: z.enum(['researcher', 'coder', 'analyst', 'optimizer', 'coordinator']).describe('Agent type'),\n capabilities: z.array(z.string()).optional().describe('Agent capabilities'),\n name: z.string().optional().describe('Custom agent name')\n },\n async ({ type, capabilities, name }) => {\n try {\n const capStr = capabilities ? ` --capabilities \"${capabilities.join(',')}\"` : '';\n const nameStr = name ? ` --name \"${name}\"` : '';\n const cmd = `npx claude-flow@alpha agent spawn --type ${type}${capStr}${nameStr}`;\n const result = execSync(cmd, { encoding: 'utf-8' });\n\n return {\n content: [{\n type: 'text',\n text: `šŸ¤– Agent spawned:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Agent spawn failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Task orchestration tool\n tool(\n 'task_orchestrate',\n 'Orchestrate a complex task across the swarm',\n {\n task: z.string().describe('Task description or instructions'),\n strategy: z.enum(['parallel', 'sequential', 'adaptive']).optional().default('adaptive').describe('Execution strategy'),\n priority: z.enum(['low', 'medium', 'high', 'critical']).optional().default('medium').describe('Task priority'),\n maxAgents: z.number().optional().describe('Maximum agents to use for this task')\n },\n async ({ task, strategy, priority, maxAgents }) => {\n try {\n const maxStr = maxAgents ? ` --max-agents ${maxAgents}` : '';\n const cmd = `npx claude-flow@alpha task orchestrate \"${task}\" --strategy ${strategy} --priority ${priority}${maxStr}`;\n const result = execSync(cmd, { encoding: 'utf-8' });\n\n return {\n content: [{\n type: 'text',\n text: `⚔ Task orchestrated:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Task orchestration failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Swarm status tool\n tool(\n 'swarm_status',\n 'Get current swarm status and metrics',\n {\n verbose: z.boolean().optional().default(false).describe('Include detailed metrics')\n },\n async ({ verbose }) => {\n try {\n const cmd = `npx claude-flow@alpha swarm status${verbose ? ' --verbose' : ''}`;\n const result = execSync(cmd, { encoding: 'utf-8' });\n\n return {\n content: [{\n type: 'text',\n text: `šŸ“Š Swarm status:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Status check failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Agent Booster - Ultra-fast code editing\n tool(\n 'agent_booster_edit_file',\n 'Ultra-fast code editing (352x faster than cloud APIs, $0 cost). Apply precise code edits using Agent Booster\\'s local WASM engine.',\n {\n target_filepath: z.string().describe('Path of the file to modify'),\n instructions: z.string().describe('Description of what changes to make'),\n code_edit: z.string().describe('The new code or edit to apply'),\n language: z.string().optional().describe('Programming language (auto-detected if not provided)')\n },\n async ({ target_filepath, instructions, code_edit, language }) => {\n try {\n // Initialize Agent Booster\n const booster = new AgentBooster({ confidenceThreshold: 0.5 });\n\n // Read original file\n const originalCode = readFileSync(target_filepath, 'utf8');\n\n // Auto-detect language if not provided\n const lang = language || extname(target_filepath).slice(1);\n\n // Apply edit\n const result = await booster.apply({\n code: originalCode,\n edit: code_edit,\n language: lang\n });\n\n // Write if successful\n if (result.success) {\n writeFileSync(target_filepath, result.output, 'utf8');\n }\n\n return {\n content: [{\n type: 'text',\n text: `⚔ Agent Booster Edit Result:\\n` +\n `šŸ“ File: ${target_filepath}\\n` +\n `āœ… Success: ${result.success}\\n` +\n `ā±ļø Latency: ${result.latency}ms\\n` +\n `šŸŽÆ Confidence: ${(result.confidence * 100).toFixed(1)}%\\n` +\n `šŸ”§ Strategy: ${result.strategy}\\n` +\n `šŸ“Š Speedup: ~${Math.round(352 / result.latency)}x vs cloud APIs\\n` +\n `šŸ’° Cost: $0 (vs ~$0.01 for cloud API)\\n\\n` +\n `${result.success ? '✨ Edit applied successfully!' : 'āŒ Edit failed - check confidence score'}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Agent Booster edit failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Agent Booster - Batch editing\n tool(\n 'agent_booster_batch_edit',\n 'Apply multiple code edits in parallel using Agent Booster. Perfect for multi-file refactoring.',\n {\n edits: z.array(z.object({\n target_filepath: z.string(),\n instructions: z.string(),\n code_edit: z.string(),\n language: z.string().optional()\n })).describe('Array of edit operations to apply')\n },\n async ({ edits }) => {\n try {\n const booster = new AgentBooster({ confidenceThreshold: 0.5 });\n let successCount = 0;\n let totalLatency = 0;\n const results: string[] = [];\n\n for (const edit of edits) {\n const originalCode = readFileSync(edit.target_filepath, 'utf8');\n const lang = edit.language || extname(edit.target_filepath).slice(1);\n\n const result = await booster.apply({\n code: originalCode,\n edit: edit.code_edit,\n language: lang\n });\n\n if (result.success) {\n writeFileSync(edit.target_filepath, result.output, 'utf8');\n successCount++;\n }\n\n totalLatency += result.latency;\n results.push(` ${result.success ? 'āœ…' : 'āŒ'} ${edit.target_filepath} (${result.latency}ms, ${(result.confidence * 100).toFixed(0)}%)`);\n }\n\n const avgLatency = totalLatency / edits.length;\n const avgSpeedup = Math.round(352 / avgLatency);\n\n return {\n content: [{\n type: 'text',\n text: `⚔ Agent Booster Batch Edit Results:\\n\\n` +\n `šŸ“Š Summary:\\n` +\n ` Total edits: ${edits.length}\\n` +\n ` Successful: ${successCount}\\n` +\n ` Failed: ${edits.length - successCount}\\n` +\n ` Total time: ${totalLatency.toFixed(1)}ms\\n` +\n ` Avg latency: ${avgLatency.toFixed(1)}ms\\n` +\n ` Avg speedup: ~${avgSpeedup}x vs cloud APIs\\n` +\n ` Cost savings: ~$${(edits.length * 0.01).toFixed(2)}\\n\\n` +\n `šŸ“ Results:\\n${results.join('\\n')}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Batch edit failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n )\n ]\n});\n"]}
1
+ {"version":3,"file":"claudeFlowSdkServer.js","sourceRoot":"","sources":["../../src/mcp/claudeFlowSdkServer.ts"],"names":[],"mappings":"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","sourcesContent":["// In-SDK MCP server for claude-flow tools (no subprocess required)\nimport { createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';\nimport { z } from 'zod';\nimport { spawnSync } from 'child_process';\nimport { readFileSync, writeFileSync } from 'fs';\nimport { extname } from 'path';\nimport { logger } from '../utils/logger.js';\nimport { AgentBooster } from 'agent-booster';\n\n/**\n * Sanitize string input to prevent command injection\n * Removes shell metacharacters and validates format\n */\nfunction sanitizeInput(input: string, maxLength: number = 10000): string {\n if (!input || typeof input !== 'string') {\n return '';\n }\n // Limit length to prevent buffer overflow attacks\n const limited = input.slice(0, maxLength);\n // Remove common shell metacharacters\n return limited.replace(/[;&|`$(){}[\\]<>\\\\'\"!#]/g, '');\n}\n\n/**\n * Execute claude-flow command safely using spawn with arguments array\n */\nfunction safeExec(args: string[]): string {\n const result = spawnSync('npx', ['claude-flow@alpha', ...args], {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n shell: false, // Important: disable shell interpretation\n });\n if (result.error) {\n throw result.error;\n }\n if (result.status !== 0) {\n throw new Error(result.stderr || `Command failed with exit code ${result.status}`);\n }\n return result.stdout;\n}\n\n/**\n * Create an in-SDK MCP server that provides claude-flow memory and coordination tools\n * This runs in-process without spawning Claude Code CLI subprocess\n */\nexport const claudeFlowSdkServer = createSdkMcpServer({\n name: 'claude-flow-sdk',\n version: '1.0.0',\n\n tools: [\n // Memory storage tool\n tool(\n 'memory_store',\n 'Store a value in persistent memory with optional namespace and TTL',\n {\n key: z.string().describe('Memory key'),\n value: z.string().describe('Value to store'),\n namespace: z.string().optional().default('default').describe('Memory namespace'),\n ttl: z.number().optional().describe('Time-to-live in seconds')\n },\n async ({ key, value, namespace, ttl }) => {\n try {\n // Sanitize inputs to prevent command injection\n const safeKey = sanitizeInput(key, 256);\n const safeValue = sanitizeInput(value, 10000);\n const safeNamespace = sanitizeInput(namespace || 'default', 64);\n\n logger.info('Storing memory', { key: safeKey, namespace: safeNamespace });\n\n // Use safe execution with argument array\n const args = ['memory', 'store', safeKey, safeValue, '--namespace', safeNamespace];\n if (ttl && typeof ttl === 'number' && ttl > 0) {\n args.push('--ttl', String(ttl));\n }\n const result = safeExec(args);\n\n logger.info('Memory stored successfully', { key: safeKey });\n return {\n content: [{\n type: 'text',\n text: `āœ… Stored successfully\\nšŸ“ Key: ${safeKey}\\nšŸ“¦ Namespace: ${safeNamespace}\\nšŸ’¾ Size: ${safeValue.length} bytes`\n }]\n };\n } catch (error: any) {\n logger.error('Failed to store memory', { error: error.message });\n return {\n content: [{\n type: 'text',\n text: `āŒ Failed to store: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Memory retrieval tool\n tool(\n 'memory_retrieve',\n 'Retrieve a value from persistent memory',\n {\n key: z.string().describe('Memory key'),\n namespace: z.string().optional().default('default').describe('Memory namespace')\n },\n async ({ key, namespace }) => {\n try {\n // Sanitize inputs\n const safeKey = sanitizeInput(key, 256);\n const safeNamespace = sanitizeInput(namespace || 'default', 64);\n\n const result = safeExec(['memory', 'retrieve', safeKey, '--namespace', safeNamespace]);\n\n return {\n content: [{\n type: 'text',\n text: `āœ… Retrieved:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Failed to retrieve: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Memory search tool\n tool(\n 'memory_search',\n 'Search for keys matching a pattern in memory',\n {\n pattern: z.string().describe('Search pattern (supports wildcards)'),\n namespace: z.string().optional().describe('Memory namespace to search in'),\n limit: z.number().optional().default(10).describe('Maximum results to return')\n },\n async ({ pattern, namespace, limit }) => {\n try {\n // Sanitize inputs\n const safePattern = sanitizeInput(pattern, 256);\n const safeNamespace = sanitizeInput(namespace || '', 64);\n\n const args = ['memory', 'search', safePattern];\n if (safeNamespace) {\n args.push('--namespace', safeNamespace);\n }\n args.push('--limit', String(limit));\n const result = safeExec(args);\n\n return {\n content: [{\n type: 'text',\n text: `šŸ” Search results:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Search failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Swarm initialization tool\n tool(\n 'swarm_init',\n 'Initialize a multi-agent swarm with specified topology',\n {\n topology: z.enum(['mesh', 'hierarchical', 'ring', 'star']).describe('Swarm topology'),\n maxAgents: z.number().optional().default(8).describe('Maximum number of agents'),\n strategy: z.enum(['balanced', 'specialized', 'adaptive']).optional().default('balanced').describe('Agent distribution strategy')\n },\n async ({ topology, maxAgents, strategy }) => {\n try {\n // Topology, maxAgents, and strategy are validated by zod enum/number\n const result = safeExec([\n 'swarm', 'init',\n '--topology', topology,\n '--max-agents', String(maxAgents),\n '--strategy', strategy || 'balanced'\n ]);\n\n return {\n content: [{\n type: 'text',\n text: `šŸš€ Swarm initialized:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Swarm init failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Agent spawn tool\n tool(\n 'agent_spawn',\n 'Spawn a new agent in the swarm',\n {\n type: z.enum(['researcher', 'coder', 'analyst', 'optimizer', 'coordinator']).describe('Agent type'),\n capabilities: z.array(z.string()).optional().describe('Agent capabilities'),\n name: z.string().optional().describe('Custom agent name')\n },\n async ({ type, capabilities, name }) => {\n try {\n const args = ['agent', 'spawn', '--type', type];\n if (capabilities && capabilities.length > 0) {\n // Sanitize each capability\n const safeCaps = capabilities.map(c => sanitizeInput(c, 64)).join(',');\n args.push('--capabilities', safeCaps);\n }\n if (name) {\n args.push('--name', sanitizeInput(name, 64));\n }\n const result = safeExec(args);\n\n return {\n content: [{\n type: 'text',\n text: `šŸ¤– Agent spawned:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Agent spawn failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Task orchestration tool\n tool(\n 'task_orchestrate',\n 'Orchestrate a complex task across the swarm',\n {\n task: z.string().describe('Task description or instructions'),\n strategy: z.enum(['parallel', 'sequential', 'adaptive']).optional().default('adaptive').describe('Execution strategy'),\n priority: z.enum(['low', 'medium', 'high', 'critical']).optional().default('medium').describe('Task priority'),\n maxAgents: z.number().optional().describe('Maximum agents to use for this task')\n },\n async ({ task, strategy, priority, maxAgents }) => {\n try {\n // Sanitize task description\n const safeTask = sanitizeInput(task, 2000);\n const args = ['task', 'orchestrate', safeTask, '--strategy', strategy || 'adaptive', '--priority', priority || 'medium'];\n if (maxAgents && typeof maxAgents === 'number' && maxAgents > 0) {\n args.push('--max-agents', String(maxAgents));\n }\n const result = safeExec(args);\n\n return {\n content: [{\n type: 'text',\n text: `⚔ Task orchestrated:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Task orchestration failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Swarm status tool\n tool(\n 'swarm_status',\n 'Get current swarm status and metrics',\n {\n verbose: z.boolean().optional().default(false).describe('Include detailed metrics')\n },\n async ({ verbose }) => {\n try {\n const args = ['swarm', 'status'];\n if (verbose) {\n args.push('--verbose');\n }\n const result = safeExec(args);\n\n return {\n content: [{\n type: 'text',\n text: `šŸ“Š Swarm status:\\n${result}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Status check failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Agent Booster - Ultra-fast code editing\n tool(\n 'agent_booster_edit_file',\n 'Ultra-fast code editing (352x faster than cloud APIs, $0 cost). Apply precise code edits using Agent Booster\\'s local WASM engine.',\n {\n target_filepath: z.string().describe('Path of the file to modify'),\n instructions: z.string().describe('Description of what changes to make'),\n code_edit: z.string().describe('The new code or edit to apply'),\n language: z.string().optional().describe('Programming language (auto-detected if not provided)')\n },\n async ({ target_filepath, instructions, code_edit, language }) => {\n try {\n // Initialize Agent Booster\n const booster = new AgentBooster({ confidenceThreshold: 0.5 });\n\n // Read original file\n const originalCode = readFileSync(target_filepath, 'utf8');\n\n // Auto-detect language if not provided\n const lang = language || extname(target_filepath).slice(1);\n\n // Apply edit\n const result = await booster.apply({\n code: originalCode,\n edit: code_edit,\n language: lang\n });\n\n // Write if successful\n if (result.success) {\n writeFileSync(target_filepath, result.output, 'utf8');\n }\n\n return {\n content: [{\n type: 'text',\n text: `⚔ Agent Booster Edit Result:\\n` +\n `šŸ“ File: ${target_filepath}\\n` +\n `āœ… Success: ${result.success}\\n` +\n `ā±ļø Latency: ${result.latency}ms\\n` +\n `šŸŽÆ Confidence: ${(result.confidence * 100).toFixed(1)}%\\n` +\n `šŸ”§ Strategy: ${result.strategy}\\n` +\n `šŸ“Š Speedup: ~${Math.round(352 / result.latency)}x vs cloud APIs\\n` +\n `šŸ’° Cost: $0 (vs ~$0.01 for cloud API)\\n\\n` +\n `${result.success ? '✨ Edit applied successfully!' : 'āŒ Edit failed - check confidence score'}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Agent Booster edit failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n ),\n\n // Agent Booster - Batch editing\n tool(\n 'agent_booster_batch_edit',\n 'Apply multiple code edits in parallel using Agent Booster. Perfect for multi-file refactoring.',\n {\n edits: z.array(z.object({\n target_filepath: z.string(),\n instructions: z.string(),\n code_edit: z.string(),\n language: z.string().optional()\n })).describe('Array of edit operations to apply')\n },\n async ({ edits }) => {\n try {\n const booster = new AgentBooster({ confidenceThreshold: 0.5 });\n let successCount = 0;\n let totalLatency = 0;\n const results: string[] = [];\n\n for (const edit of edits) {\n const originalCode = readFileSync(edit.target_filepath, 'utf8');\n const lang = edit.language || extname(edit.target_filepath).slice(1);\n\n const result = await booster.apply({\n code: originalCode,\n edit: edit.code_edit,\n language: lang\n });\n\n if (result.success) {\n writeFileSync(edit.target_filepath, result.output, 'utf8');\n successCount++;\n }\n\n totalLatency += result.latency;\n results.push(` ${result.success ? 'āœ…' : 'āŒ'} ${edit.target_filepath} (${result.latency}ms, ${(result.confidence * 100).toFixed(0)}%)`);\n }\n\n const avgLatency = totalLatency / edits.length;\n const avgSpeedup = Math.round(352 / avgLatency);\n\n return {\n content: [{\n type: 'text',\n text: `⚔ Agent Booster Batch Edit Results:\\n\\n` +\n `šŸ“Š Summary:\\n` +\n ` Total edits: ${edits.length}\\n` +\n ` Successful: ${successCount}\\n` +\n ` Failed: ${edits.length - successCount}\\n` +\n ` Total time: ${totalLatency.toFixed(1)}ms\\n` +\n ` Avg latency: ${avgLatency.toFixed(1)}ms\\n` +\n ` Avg speedup: ~${avgSpeedup}x vs cloud APIs\\n` +\n ` Cost savings: ~$${(edits.length * 0.01).toFixed(2)}\\n\\n` +\n `šŸ“ Results:\\n${results.join('\\n')}`\n }]\n };\n } catch (error: any) {\n return {\n content: [{\n type: 'text',\n text: `āŒ Batch edit failed: ${error.message}`\n }],\n isError: true\n };\n }\n }\n )\n ]\n});\n"]}
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * FastMCP Hook Server - Intelligent agent routing and self-learning
4
+ *
5
+ * 19 tools total:
6
+ * - 10 hook tools (pre/post edit, command, routing, etc.)
7
+ * - 9 intelligence tools (SONA, attention, trajectory, patterns)
8
+ *
9
+ * RuVector Intelligence Features:
10
+ * - @ruvector/sona: Micro-LoRA (~0.05ms), EWC++, Trajectory tracking
11
+ * - @ruvector/attention: MoE, Flash, Hyperbolic, Graph attention
12
+ * - ruvector core: HNSW indexing (150x faster)
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=hooks-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-server.d.ts","sourceRoot":"","sources":["../../../../src/mcp/fastmcp/servers/hooks-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * FastMCP Hook Server - Intelligent agent routing and self-learning
4
+ *
5
+ * 19 tools total:
6
+ * - 10 hook tools (pre/post edit, command, routing, etc.)
7
+ * - 9 intelligence tools (SONA, attention, trajectory, patterns)
8
+ *
9
+ * RuVector Intelligence Features:
10
+ * - @ruvector/sona: Micro-LoRA (~0.05ms), EWC++, Trajectory tracking
11
+ * - @ruvector/attention: MoE, Flash, Hyperbolic, Graph attention
12
+ * - ruvector core: HNSW indexing (150x faster)
13
+ */
14
+ import { FastMCP } from 'fastmcp';
15
+ import { allHookTools, hookTools, intelligenceTools } from '../tools/hooks/index.js';
16
+ console.error('🧠 Starting FastMCP Hook Server with RuVector Intelligence...');
17
+ console.error(`šŸ“¦ Loading ${allHookTools.length} tools (${hookTools.length} hooks + ${intelligenceTools.length} intelligence)`);
18
+ // Create server
19
+ const server = new FastMCP({
20
+ name: 'agentic-flow-hooks',
21
+ version: '2.0.0'
22
+ });
23
+ // Register all hook tools (includes intelligence tools)
24
+ for (const tool of allHookTools) {
25
+ server.addTool({
26
+ name: tool.name,
27
+ description: tool.description,
28
+ parameters: tool.parameters,
29
+ execute: async (args) => {
30
+ const result = await tool.execute(args, {
31
+ onProgress: (update) => {
32
+ console.error(`[${tool.name}] ${update.message} (${Math.round(update.progress * 100)}%)`);
33
+ }
34
+ });
35
+ return JSON.stringify(result, null, 2);
36
+ }
37
+ });
38
+ // Mark intelligence tools differently
39
+ const isIntelligence = tool.name.startsWith('intelligence_');
40
+ const marker = isIntelligence ? '⚔' : 'āœ“';
41
+ console.error(` ${marker} Registered: ${tool.name}`);
42
+ }
43
+ console.error('');
44
+ console.error('āœ… Hook Tools (10):');
45
+ console.error(' hook_pre_edit, hook_post_edit, hook_pre_command, hook_post_command');
46
+ console.error(' hook_route, hook_explain, hook_pretrain, hook_build_agents');
47
+ console.error(' hook_metrics, hook_transfer');
48
+ console.error('');
49
+ console.error('⚔ Intelligence Tools (9):');
50
+ console.error(' intelligence_route (SONA + MoE + HNSW)');
51
+ console.error(' intelligence_trajectory_start/step/end (learning)');
52
+ console.error(' intelligence_pattern_store/search (ReasoningBank)');
53
+ console.error(' intelligence_stats, intelligence_learn, intelligence_attention');
54
+ console.error('');
55
+ console.error('šŸ”Œ Starting stdio transport...');
56
+ // Start server
57
+ server.start({ transportType: 'stdio' }).then(() => {
58
+ console.error('āœ… Hook Server running on stdio with RuVector Intelligence');
59
+ }).catch((error) => {
60
+ console.error('āŒ Failed to start:', error);
61
+ process.exit(1);
62
+ });
63
+ //# sourceMappingURL=hooks-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-server.js","sourceRoot":"","sources":["../../../../src/mcp/fastmcp/servers/hooks-server.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * FastMCP Hook Server - Intelligent agent routing and self-learning\n *\n * 19 tools total:\n * - 10 hook tools (pre/post edit, command, routing, etc.)\n * - 9 intelligence tools (SONA, attention, trajectory, patterns)\n *\n * RuVector Intelligence Features:\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)\n */\n\nimport { FastMCP } from 'fastmcp';\nimport { allHookTools, hookTools, intelligenceTools } from '../tools/hooks/index.js';\n\nconsole.error('🧠 Starting FastMCP Hook Server with RuVector Intelligence...');\nconsole.error(`šŸ“¦ Loading ${allHookTools.length} tools (${hookTools.length} hooks + ${intelligenceTools.length} intelligence)`);\n\n// Create server\nconst server = new FastMCP({\n name: 'agentic-flow-hooks',\n version: '2.0.0'\n});\n\n// Register all hook tools (includes intelligence tools)\nfor (const tool of allHookTools) {\n server.addTool({\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n execute: async (args: any) => {\n const result = await tool.execute(args, {\n onProgress: (update) => {\n console.error(`[${tool.name}] ${update.message} (${Math.round(update.progress * 100)}%)`);\n }\n });\n return JSON.stringify(result, null, 2);\n }\n });\n\n // Mark intelligence tools differently\n const isIntelligence = tool.name.startsWith('intelligence_');\n const marker = isIntelligence ? '⚔' : 'āœ“';\n console.error(` ${marker} Registered: ${tool.name}`);\n}\n\nconsole.error('');\nconsole.error('āœ… Hook Tools (10):');\nconsole.error(' hook_pre_edit, hook_post_edit, hook_pre_command, hook_post_command');\nconsole.error(' hook_route, hook_explain, hook_pretrain, hook_build_agents');\nconsole.error(' hook_metrics, hook_transfer');\nconsole.error('');\nconsole.error('⚔ Intelligence Tools (9):');\nconsole.error(' intelligence_route (SONA + MoE + HNSW)');\nconsole.error(' intelligence_trajectory_start/step/end (learning)');\nconsole.error(' intelligence_pattern_store/search (ReasoningBank)');\nconsole.error(' intelligence_stats, intelligence_learn, intelligence_attention');\nconsole.error('');\nconsole.error('šŸ”Œ Starting stdio transport...');\n\n// Start server\nserver.start({ transportType: 'stdio' }).then(() => {\n console.error('āœ… Hook Server running on stdio with RuVector Intelligence');\n}).catch((error) => {\n console.error('āŒ Failed to start:', error);\n process.exit(1);\n});\n"]}
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Benchmark for Hook Tools
4
+ * Tests latency and throughput
5
+ */
6
+ interface BenchmarkResult {
7
+ tool: string;
8
+ iterations: number;
9
+ avgLatencyMs: number;
10
+ p50Ms: number;
11
+ p95Ms: number;
12
+ p99Ms: number;
13
+ minMs: number;
14
+ maxMs: number;
15
+ throughputOpsPerSec: number;
16
+ }
17
+ declare function benchmark(name: string, fn: () => Promise<any>, iterations?: number): Promise<BenchmarkResult>;
18
+ declare function runBenchmarks(): Promise<BenchmarkResult[]>;
19
+ export { runBenchmarks, benchmark };
20
+ //# sourceMappingURL=benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/benchmark.ts"],"names":[],"mappings":";AACA;;;GAGG;AAaH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,iBAAe,SAAS,CACtB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EACtB,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC,eAAe,CAAC,CAkC1B;AAED,iBAAe,aAAa,+BA8F3B;AAKD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Benchmark for Hook Tools
4
+ * Tests latency and throughput
5
+ */
6
+ import { hookPreEditTool } from './pre-edit.js';
7
+ import { hookPostEditTool } from './post-edit.js';
8
+ import { hookPreCommandTool } from './pre-command.js';
9
+ import { hookRouteTool } from './route.js';
10
+ import { hookMetricsTool } from './metrics.js';
11
+ const mockContext = {
12
+ onProgress: () => { }
13
+ };
14
+ async function benchmark(name, fn, iterations = 100) {
15
+ const latencies = [];
16
+ // Warmup
17
+ for (let i = 0; i < 5; i++) {
18
+ await fn();
19
+ }
20
+ // Benchmark
21
+ const startTime = Date.now();
22
+ for (let i = 0; i < iterations; i++) {
23
+ const start = performance.now();
24
+ await fn();
25
+ latencies.push(performance.now() - start);
26
+ }
27
+ const totalTime = Date.now() - startTime;
28
+ // Calculate percentiles
29
+ latencies.sort((a, b) => a - b);
30
+ const p50 = latencies[Math.floor(iterations * 0.5)];
31
+ const p95 = latencies[Math.floor(iterations * 0.95)];
32
+ const p99 = latencies[Math.floor(iterations * 0.99)];
33
+ return {
34
+ tool: name,
35
+ iterations,
36
+ avgLatencyMs: latencies.reduce((a, b) => a + b, 0) / iterations,
37
+ p50Ms: p50,
38
+ p95Ms: p95,
39
+ p99Ms: p99,
40
+ minMs: latencies[0],
41
+ maxMs: latencies[latencies.length - 1],
42
+ throughputOpsPerSec: (iterations / totalTime) * 1000
43
+ };
44
+ }
45
+ async function runBenchmarks() {
46
+ console.log('šŸš€ Hook Tools Benchmark\n');
47
+ console.log('='.repeat(80));
48
+ const results = [];
49
+ // Pre-edit benchmark
50
+ console.log('\nšŸ“ Benchmarking hook_pre_edit...');
51
+ results.push(await benchmark('hook_pre_edit', async () => {
52
+ await hookPreEditTool.execute({ filePath: 'src/index.ts', task: 'Fix bug' }, mockContext);
53
+ }));
54
+ // Post-edit benchmark
55
+ console.log('šŸ“ Benchmarking hook_post_edit...');
56
+ results.push(await benchmark('hook_post_edit', async () => {
57
+ await hookPostEditTool.execute({ filePath: 'src/test.ts', success: true, agent: 'coder' }, mockContext);
58
+ }));
59
+ // Pre-command benchmark
60
+ console.log('šŸ“ Benchmarking hook_pre_command...');
61
+ results.push(await benchmark('hook_pre_command', async () => {
62
+ await hookPreCommandTool.execute({ command: 'npm test' }, mockContext);
63
+ }));
64
+ // Route benchmark
65
+ console.log('šŸ“ Benchmarking hook_route...');
66
+ results.push(await benchmark('hook_route', async () => {
67
+ await hookRouteTool.execute({ task: 'Implement authentication feature' }, mockContext);
68
+ }));
69
+ // Metrics benchmark
70
+ console.log('šŸ“ Benchmarking hook_metrics...');
71
+ results.push(await benchmark('hook_metrics', async () => {
72
+ await hookMetricsTool.execute({ timeframe: '24h', detailed: false }, mockContext);
73
+ }));
74
+ // Print results
75
+ console.log('\n' + '='.repeat(80));
76
+ console.log('\nšŸ“Š Results:\n');
77
+ console.log('| Tool | Avg (ms) | P50 (ms) | P95 (ms) | P99 (ms) | Ops/sec |');
78
+ console.log('|------|----------|----------|----------|----------|---------|');
79
+ for (const r of results) {
80
+ console.log(`| ${r.tool.padEnd(16)} | ${r.avgLatencyMs.toFixed(2).padStart(8)} | ` +
81
+ `${r.p50Ms.toFixed(2).padStart(8)} | ${r.p95Ms.toFixed(2).padStart(8)} | ` +
82
+ `${r.p99Ms.toFixed(2).padStart(8)} | ${r.throughputOpsPerSec.toFixed(0).padStart(7)} |`);
83
+ }
84
+ // Latency targets check
85
+ console.log('\n' + '='.repeat(80));
86
+ console.log('\nāœ… Latency Target Check:\n');
87
+ const targets = {
88
+ 'hook_pre_edit': 20,
89
+ 'hook_post_edit': 50,
90
+ 'hook_pre_command': 10,
91
+ 'hook_route': 30,
92
+ 'hook_metrics': 50
93
+ };
94
+ let allPassed = true;
95
+ for (const r of results) {
96
+ const target = targets[r.tool] || 50;
97
+ const passed = r.p95Ms < target;
98
+ allPassed = allPassed && passed;
99
+ console.log(` ${passed ? 'āœ…' : 'āŒ'} ${r.tool}: P95=${r.p95Ms.toFixed(2)}ms ` +
100
+ `(target: <${target}ms) - ${passed ? 'PASS' : 'FAIL'}`);
101
+ }
102
+ console.log('\n' + '='.repeat(80));
103
+ console.log(`\n${allPassed ? 'šŸŽ‰ All latency targets met!' : 'āš ļø Some targets not met'}`);
104
+ // Return results for programmatic use
105
+ return results;
106
+ }
107
+ // Run if called directly
108
+ runBenchmarks().catch(console.error);
109
+ export { runBenchmarks, benchmark };
110
+ //# sourceMappingURL=benchmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/benchmark.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * Benchmark for Hook Tools\n * Tests latency and throughput\n */\n\nimport { hookPreEditTool } from './pre-edit.js';\nimport { hookPostEditTool } from './post-edit.js';\nimport { hookPreCommandTool } from './pre-command.js';\nimport { hookRouteTool } from './route.js';\nimport { hookMetricsTool } from './metrics.js';\nimport { hookPretrainTool } from './pretrain.js';\n\nconst mockContext = {\n onProgress: () => {}\n};\n\ninterface BenchmarkResult {\n tool: string;\n iterations: number;\n avgLatencyMs: number;\n p50Ms: number;\n p95Ms: number;\n p99Ms: number;\n minMs: number;\n maxMs: number;\n throughputOpsPerSec: number;\n}\n\nasync function benchmark(\n name: string,\n fn: () => Promise<any>,\n iterations: number = 100\n): Promise<BenchmarkResult> {\n const latencies: number[] = [];\n\n // Warmup\n for (let i = 0; i < 5; i++) {\n await fn();\n }\n\n // Benchmark\n const startTime = Date.now();\n for (let i = 0; i < iterations; i++) {\n const start = performance.now();\n await fn();\n latencies.push(performance.now() - start);\n }\n const totalTime = Date.now() - startTime;\n\n // Calculate percentiles\n latencies.sort((a, b) => a - b);\n const p50 = latencies[Math.floor(iterations * 0.5)];\n const p95 = latencies[Math.floor(iterations * 0.95)];\n const p99 = latencies[Math.floor(iterations * 0.99)];\n\n return {\n tool: name,\n iterations,\n avgLatencyMs: latencies.reduce((a, b) => a + b, 0) / iterations,\n p50Ms: p50,\n p95Ms: p95,\n p99Ms: p99,\n minMs: latencies[0],\n maxMs: latencies[latencies.length - 1],\n throughputOpsPerSec: (iterations / totalTime) * 1000\n };\n}\n\nasync function runBenchmarks() {\n console.log('šŸš€ Hook Tools Benchmark\\n');\n console.log('='.repeat(80));\n\n const results: BenchmarkResult[] = [];\n\n // Pre-edit benchmark\n console.log('\\nšŸ“ Benchmarking hook_pre_edit...');\n results.push(await benchmark('hook_pre_edit', async () => {\n await hookPreEditTool.execute(\n { filePath: 'src/index.ts', task: 'Fix bug' },\n mockContext\n );\n }));\n\n // Post-edit benchmark\n console.log('šŸ“ Benchmarking hook_post_edit...');\n results.push(await benchmark('hook_post_edit', async () => {\n await hookPostEditTool.execute(\n { filePath: 'src/test.ts', success: true, agent: 'coder' },\n mockContext\n );\n }));\n\n // Pre-command benchmark\n console.log('šŸ“ Benchmarking hook_pre_command...');\n results.push(await benchmark('hook_pre_command', async () => {\n await hookPreCommandTool.execute(\n { command: 'npm test' },\n mockContext\n );\n }));\n\n // Route benchmark\n console.log('šŸ“ Benchmarking hook_route...');\n results.push(await benchmark('hook_route', async () => {\n await hookRouteTool.execute(\n { task: 'Implement authentication feature' },\n mockContext\n );\n }));\n\n // Metrics benchmark\n console.log('šŸ“ Benchmarking hook_metrics...');\n results.push(await benchmark('hook_metrics', async () => {\n await hookMetricsTool.execute(\n { timeframe: '24h', detailed: false },\n mockContext\n );\n }));\n\n // Print results\n console.log('\\n' + '='.repeat(80));\n console.log('\\nšŸ“Š Results:\\n');\n\n console.log('| Tool | Avg (ms) | P50 (ms) | P95 (ms) | P99 (ms) | Ops/sec |');\n console.log('|------|----------|----------|----------|----------|---------|');\n\n for (const r of results) {\n console.log(\n `| ${r.tool.padEnd(16)} | ${r.avgLatencyMs.toFixed(2).padStart(8)} | ` +\n `${r.p50Ms.toFixed(2).padStart(8)} | ${r.p95Ms.toFixed(2).padStart(8)} | ` +\n `${r.p99Ms.toFixed(2).padStart(8)} | ${r.throughputOpsPerSec.toFixed(0).padStart(7)} |`\n );\n }\n\n // Latency targets check\n console.log('\\n' + '='.repeat(80));\n console.log('\\nāœ… Latency Target Check:\\n');\n\n const targets: Record<string, number> = {\n 'hook_pre_edit': 20,\n 'hook_post_edit': 50,\n 'hook_pre_command': 10,\n 'hook_route': 30,\n 'hook_metrics': 50\n };\n\n let allPassed = true;\n for (const r of results) {\n const target = targets[r.tool] || 50;\n const passed = r.p95Ms < target;\n allPassed = allPassed && passed;\n console.log(\n ` ${passed ? 'āœ…' : 'āŒ'} ${r.tool}: P95=${r.p95Ms.toFixed(2)}ms ` +\n `(target: <${target}ms) - ${passed ? 'PASS' : 'FAIL'}`\n );\n }\n\n console.log('\\n' + '='.repeat(80));\n console.log(`\\n${allPassed ? 'šŸŽ‰ All latency targets met!' : 'āš ļø Some targets not met'}`);\n\n // Return results for programmatic use\n return results;\n}\n\n// Run if called directly\nrunBenchmarks().catch(console.error);\n\nexport { runBenchmarks, benchmark };\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Build Agents Hook - Generate optimized agent configurations
3
+ * Creates YAML agent definitions based on pretrain analysis
4
+ */
5
+ import type { ToolDefinition } from '../../types/index.js';
6
+ export declare const hookBuildAgentsTool: ToolDefinition;
7
+ //# sourceMappingURL=build-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-agents.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/build-agents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA8C3D,eAAO,MAAM,mBAAmB,EAAE,cA8PjC,CAAC"}