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

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 (220) hide show
  1. package/CHANGELOG.md +371 -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 +114 -22
  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 +15 -2
  129. package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
  130. package/dist/mcp/tools/agent-booster-tools.js +34 -6
  131. package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
  132. package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
  133. package/dist/mcp/tools/sona-tools.js +15 -3
  134. package/dist/mcp/tools/sona-tools.js.map +1 -1
  135. package/dist/memory/SharedMemoryPool.d.ts +16 -3
  136. package/dist/memory/SharedMemoryPool.d.ts.map +1 -1
  137. package/dist/memory/SharedMemoryPool.js +33 -1
  138. package/dist/memory/SharedMemoryPool.js.map +1 -1
  139. package/dist/middleware/auth.middleware.d.ts +114 -0
  140. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  141. package/dist/middleware/auth.middleware.js +222 -0
  142. package/dist/middleware/auth.middleware.js.map +1 -0
  143. package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
  144. package/dist/optimizations/agent-booster-migration.js +22 -6
  145. package/dist/optimizations/agent-booster-migration.js.map +1 -1
  146. package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -1
  147. package/dist/proxy/anthropic-to-gemini.js.map +1 -1
  148. package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -1
  149. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  150. package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -1
  151. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  152. package/dist/proxy/quic-proxy.d.ts +0 -1
  153. package/dist/proxy/quic-proxy.d.ts.map +1 -1
  154. package/dist/proxy/quic-proxy.js +2 -1
  155. package/dist/proxy/quic-proxy.js.map +1 -1
  156. package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -1
  157. package/dist/reasoningbank/AdvancedMemory.js +12 -1
  158. package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
  159. package/dist/reasoningbank/HybridBackend.d.ts +9 -0
  160. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
  161. package/dist/reasoningbank/HybridBackend.js +48 -4
  162. package/dist/reasoningbank/HybridBackend.js.map +1 -1
  163. package/dist/reasoningbank/backend-selector.d.ts +1 -1
  164. package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
  165. package/dist/reasoningbank/backend-selector.js.map +1 -1
  166. package/dist/reasoningbank/index-new.d.ts +0 -6
  167. package/dist/reasoningbank/index-new.d.ts.map +1 -1
  168. package/dist/reasoningbank/index-new.js +9 -7
  169. package/dist/reasoningbank/index-new.js.map +1 -1
  170. package/dist/reasoningbank/index.d.ts +1 -6
  171. package/dist/reasoningbank/index.d.ts.map +1 -1
  172. package/dist/reasoningbank/index.js +10 -7
  173. package/dist/reasoningbank/index.js.map +1 -1
  174. package/dist/router/providers/onnx-local.d.ts.map +1 -1
  175. package/dist/router/providers/onnx-local.js +3 -1
  176. package/dist/router/providers/onnx-local.js.map +1 -1
  177. package/dist/routing/CircuitBreakerRouter.d.ts +187 -0
  178. package/dist/routing/CircuitBreakerRouter.d.ts.map +1 -0
  179. package/dist/routing/CircuitBreakerRouter.js +460 -0
  180. package/dist/routing/CircuitBreakerRouter.js.map +1 -0
  181. package/dist/routing/SemanticRouter.d.ts +164 -0
  182. package/dist/routing/SemanticRouter.d.ts.map +1 -0
  183. package/dist/routing/SemanticRouter.js +291 -0
  184. package/dist/routing/SemanticRouter.js.map +1 -0
  185. package/dist/routing/index.d.ts +12 -0
  186. package/dist/routing/index.d.ts.map +1 -0
  187. package/dist/routing/index.js +10 -0
  188. package/dist/routing/index.js.map +1 -0
  189. package/dist/services/embedding-service.d.ts.map +1 -1
  190. package/dist/services/embedding-service.js +5 -2
  191. package/dist/services/embedding-service.js.map +1 -1
  192. package/dist/services/sona-agent-training.js +1 -1
  193. package/dist/services/sona-agent-training.js.map +1 -1
  194. package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
  195. package/dist/services/sona-agentdb-integration.js +10 -5
  196. package/dist/services/sona-agentdb-integration.js.map +1 -1
  197. package/dist/services/sona-service.d.ts +6 -6
  198. package/dist/services/sona-service.d.ts.map +1 -1
  199. package/dist/services/sona-service.js +3 -1
  200. package/dist/services/sona-service.js.map +1 -1
  201. package/dist/utils/agentdb-runtime-patch.d.ts +1 -0
  202. package/dist/utils/agentdb-runtime-patch.d.ts.map +1 -1
  203. package/dist/utils/agentdb-runtime-patch.js +97 -2
  204. package/dist/utils/agentdb-runtime-patch.js.map +1 -1
  205. package/dist/utils/audit-logger.d.ts +115 -0
  206. package/dist/utils/audit-logger.d.ts.map +1 -0
  207. package/dist/utils/audit-logger.js +228 -0
  208. package/dist/utils/audit-logger.js.map +1 -0
  209. package/dist/utils/cli.d.ts +1 -1
  210. package/dist/utils/cli.d.ts.map +1 -1
  211. package/dist/utils/cli.js +5 -0
  212. package/dist/utils/cli.js.map +1 -1
  213. package/dist/utils/input-validator.d.ts +116 -0
  214. package/dist/utils/input-validator.d.ts.map +1 -0
  215. package/dist/utils/input-validator.js +299 -0
  216. package/dist/utils/input-validator.js.map +1 -0
  217. package/dist/utils/rate-limiter.js +2 -2
  218. package/dist/utils/rate-limiter.js.map +1 -1
  219. package/package.json +14 -4
  220. package/scripts/postinstall.js +72 -0
@@ -1,11 +1,48 @@
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
- import { AgentBooster } from 'agent-booster';
8
+ // Optional agent-booster import (may not be available on Windows)
9
+ let AgentBooster = null;
10
+ try {
11
+ AgentBooster = (await import('agent-booster')).AgentBooster;
12
+ }
13
+ catch {
14
+ // agent-booster not available, will use fallback
15
+ }
16
+ /**
17
+ * Sanitize string input to prevent command injection
18
+ * Removes shell metacharacters and validates format
19
+ */
20
+ function sanitizeInput(input, maxLength = 10000) {
21
+ if (!input || typeof input !== 'string') {
22
+ return '';
23
+ }
24
+ // Limit length to prevent buffer overflow attacks
25
+ const limited = input.slice(0, maxLength);
26
+ // Remove common shell metacharacters
27
+ return limited.replace(/[;&|`$(){}[\]<>\\'"!#]/g, '');
28
+ }
29
+ /**
30
+ * Execute claude-flow command safely using spawn with arguments array
31
+ */
32
+ function safeExec(args) {
33
+ const result = spawnSync('npx', ['claude-flow@alpha', ...args], {
34
+ encoding: 'utf-8',
35
+ maxBuffer: 10 * 1024 * 1024,
36
+ shell: false, // Important: disable shell interpretation
37
+ });
38
+ if (result.error) {
39
+ throw result.error;
40
+ }
41
+ if (result.status !== 0) {
42
+ throw new Error(result.stderr || `Command failed with exit code ${result.status}`);
43
+ }
44
+ return result.stdout;
45
+ }
9
46
  /**
10
47
  * Create an in-SDK MCP server that provides claude-flow memory and coordination tools
11
48
  * This runs in-process without spawning Claude Code CLI subprocess
@@ -22,14 +59,22 @@ export const claudeFlowSdkServer = createSdkMcpServer({
22
59
  ttl: z.number().optional().describe('Time-to-live in seconds')
23
60
  }, async ({ key, value, namespace, ttl }) => {
24
61
  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 });
62
+ // Sanitize inputs to prevent command injection
63
+ const safeKey = sanitizeInput(key, 256);
64
+ const safeValue = sanitizeInput(value, 10000);
65
+ const safeNamespace = sanitizeInput(namespace || 'default', 64);
66
+ logger.info('Storing memory', { key: safeKey, namespace: safeNamespace });
67
+ // Use safe execution with argument array
68
+ const args = ['memory', 'store', safeKey, safeValue, '--namespace', safeNamespace];
69
+ if (ttl && typeof ttl === 'number' && ttl > 0) {
70
+ args.push('--ttl', String(ttl));
71
+ }
72
+ const result = safeExec(args);
73
+ logger.info('Memory stored successfully', { key: safeKey });
29
74
  return {
30
75
  content: [{
31
76
  type: 'text',
32
- text: `āœ… Stored successfully\nšŸ“ Key: ${key}\nšŸ“¦ Namespace: ${namespace}\nšŸ’¾ Size: ${value.length} bytes`
77
+ text: `āœ… Stored successfully\nšŸ“ Key: ${safeKey}\nšŸ“¦ Namespace: ${safeNamespace}\nšŸ’¾ Size: ${safeValue.length} bytes`
33
78
  }]
34
79
  };
35
80
  }
@@ -50,8 +95,10 @@ export const claudeFlowSdkServer = createSdkMcpServer({
50
95
  namespace: z.string().optional().default('default').describe('Memory namespace')
51
96
  }, async ({ key, namespace }) => {
52
97
  try {
53
- const cmd = `npx claude-flow@alpha memory retrieve "${key}" --namespace "${namespace}"`;
54
- const result = execSync(cmd, { encoding: 'utf-8' });
98
+ // Sanitize inputs
99
+ const safeKey = sanitizeInput(key, 256);
100
+ const safeNamespace = sanitizeInput(namespace || 'default', 64);
101
+ const result = safeExec(['memory', 'retrieve', safeKey, '--namespace', safeNamespace]);
55
102
  return {
56
103
  content: [{
57
104
  type: 'text',
@@ -76,8 +123,15 @@ export const claudeFlowSdkServer = createSdkMcpServer({
76
123
  limit: z.number().optional().default(10).describe('Maximum results to return')
77
124
  }, async ({ pattern, namespace, limit }) => {
78
125
  try {
79
- const cmd = `npx claude-flow@alpha memory search "${pattern}"${namespace ? ` --namespace "${namespace}"` : ''} --limit ${limit}`;
80
- const result = execSync(cmd, { encoding: 'utf-8' });
126
+ // Sanitize inputs
127
+ const safePattern = sanitizeInput(pattern, 256);
128
+ const safeNamespace = sanitizeInput(namespace || '', 64);
129
+ const args = ['memory', 'search', safePattern];
130
+ if (safeNamespace) {
131
+ args.push('--namespace', safeNamespace);
132
+ }
133
+ args.push('--limit', String(limit));
134
+ const result = safeExec(args);
81
135
  return {
82
136
  content: [{
83
137
  type: 'text',
@@ -102,8 +156,13 @@ export const claudeFlowSdkServer = createSdkMcpServer({
102
156
  strategy: z.enum(['balanced', 'specialized', 'adaptive']).optional().default('balanced').describe('Agent distribution strategy')
103
157
  }, async ({ topology, maxAgents, strategy }) => {
104
158
  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' });
159
+ // Topology, maxAgents, and strategy are validated by zod enum/number
160
+ const result = safeExec([
161
+ 'swarm', 'init',
162
+ '--topology', topology,
163
+ '--max-agents', String(maxAgents),
164
+ '--strategy', strategy || 'balanced'
165
+ ]);
107
166
  return {
108
167
  content: [{
109
168
  type: 'text',
@@ -128,10 +187,16 @@ export const claudeFlowSdkServer = createSdkMcpServer({
128
187
  name: z.string().optional().describe('Custom agent name')
129
188
  }, async ({ type, capabilities, name }) => {
130
189
  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' });
190
+ const args = ['agent', 'spawn', '--type', type];
191
+ if (capabilities && capabilities.length > 0) {
192
+ // Sanitize each capability
193
+ const safeCaps = capabilities.map(c => sanitizeInput(c, 64)).join(',');
194
+ args.push('--capabilities', safeCaps);
195
+ }
196
+ if (name) {
197
+ args.push('--name', sanitizeInput(name, 64));
198
+ }
199
+ const result = safeExec(args);
135
200
  return {
136
201
  content: [{
137
202
  type: 'text',
@@ -157,9 +222,13 @@ export const claudeFlowSdkServer = createSdkMcpServer({
157
222
  maxAgents: z.number().optional().describe('Maximum agents to use for this task')
158
223
  }, async ({ task, strategy, priority, maxAgents }) => {
159
224
  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' });
225
+ // Sanitize task description
226
+ const safeTask = sanitizeInput(task, 2000);
227
+ const args = ['task', 'orchestrate', safeTask, '--strategy', strategy || 'adaptive', '--priority', priority || 'medium'];
228
+ if (maxAgents && typeof maxAgents === 'number' && maxAgents > 0) {
229
+ args.push('--max-agents', String(maxAgents));
230
+ }
231
+ const result = safeExec(args);
163
232
  return {
164
233
  content: [{
165
234
  type: 'text',
@@ -182,8 +251,11 @@ export const claudeFlowSdkServer = createSdkMcpServer({
182
251
  verbose: z.boolean().optional().default(false).describe('Include detailed metrics')
183
252
  }, async ({ verbose }) => {
184
253
  try {
185
- const cmd = `npx claude-flow@alpha swarm status${verbose ? ' --verbose' : ''}`;
186
- const result = execSync(cmd, { encoding: 'utf-8' });
254
+ const args = ['swarm', 'status'];
255
+ if (verbose) {
256
+ args.push('--verbose');
257
+ }
258
+ const result = safeExec(args);
187
259
  return {
188
260
  content: [{
189
261
  type: 'text',
@@ -209,6 +281,16 @@ export const claudeFlowSdkServer = createSdkMcpServer({
209
281
  language: z.string().optional().describe('Programming language (auto-detected if not provided)')
210
282
  }, async ({ target_filepath, instructions, code_edit, language }) => {
211
283
  try {
284
+ // Check if Agent Booster is available
285
+ if (!AgentBooster) {
286
+ return {
287
+ content: [{
288
+ type: 'text',
289
+ text: `āš ļø Agent Booster not available on this platform. Use standard code editing tools instead.`
290
+ }],
291
+ isError: true
292
+ };
293
+ }
212
294
  // Initialize Agent Booster
213
295
  const booster = new AgentBooster({ confidenceThreshold: 0.5 });
214
296
  // Read original file
@@ -260,6 +342,16 @@ export const claudeFlowSdkServer = createSdkMcpServer({
260
342
  })).describe('Array of edit operations to apply')
261
343
  }, async ({ edits }) => {
262
344
  try {
345
+ // Check if Agent Booster is available
346
+ if (!AgentBooster) {
347
+ return {
348
+ content: [{
349
+ type: 'text',
350
+ text: `āš ļø Agent Booster not available on this platform. Use standard code editing tools instead.`
351
+ }],
352
+ isError: true
353
+ };
354
+ }
263
355
  const booster = new AgentBooster({ confidenceThreshold: 0.5 });
264
356
  let successCount = 0;
265
357
  let totalLatency = 0;
@@ -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';\n\n// Optional agent-booster import (may not be available on Windows)\nlet AgentBooster: any = null;\ntry {\n AgentBooster = (await import('agent-booster')).AgentBooster;\n} catch {\n // agent-booster not available, will use fallback\n}\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 // Check if Agent Booster is available\n if (!AgentBooster) {\n return {\n content: [{\n type: 'text',\n text: `āš ļø Agent Booster not available on this platform. Use standard code editing tools instead.`\n }],\n isError: true\n };\n }\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 // Check if Agent Booster is available\n if (!AgentBooster) {\n return {\n content: [{\n type: 'text',\n text: `āš ļø Agent Booster not available on this platform. Use standard code editing tools instead.`\n }],\n isError: true\n };\n }\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":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAErF,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;AAC/E,OAAO,CAAC,KAAK,CAAC,cAAc,YAAY,CAAC,MAAM,WAAW,SAAS,CAAC,MAAM,YAAY,iBAAiB,CAAC,MAAM,gBAAgB,CAAC,CAAC;AAEhI,gBAAgB;AAChB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC;IACzB,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,wDAAwD;AACxD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;IAChC,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACtC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;oBACrB,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5F,CAAC;aACF,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;KACF,CAAC,CAAC;IAEH,sCAAsC;IACtC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACpC,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACvF,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;AAC/E,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;AAChD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC3C,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC3D,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;AACtE,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;AACtE,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;AACnF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;AAEhD,eAAe;AACf,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACjD,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC","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":";AACA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,MAAM,WAAW,GAAG;IAClB,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;CACrB,CAAC;AAcF,KAAK,UAAU,SAAS,CACtB,IAAY,EACZ,EAAsB,EACtB,aAAqB,GAAG;IAExB,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,SAAS;IACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;IAED,YAAY;IACZ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,EAAE,EAAE,CAAC;QACX,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAEzC,wBAAwB;IACxB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;IAErD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,UAAU;QACV,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU;QAC/D,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACnB,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,mBAAmB,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,IAAI;KACrD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,eAAe,CAAC,OAAO,CAC3B,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,EAC7C,WAAW,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;IAEJ,sBAAsB;IACtB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,gBAAgB,CAAC,OAAO,CAC5B,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAC1D,WAAW,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;IAEJ,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,kBAAkB,CAAC,OAAO,CAC9B,EAAE,OAAO,EAAE,UAAU,EAAE,EACvB,WAAW,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;IAEJ,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,aAAa,CAAC,OAAO,CACzB,EAAE,IAAI,EAAE,kCAAkC,EAAE,EAC5C,WAAW,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;IAEJ,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,eAAe,CAAC,OAAO,CAC3B,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EACrC,WAAW,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;IAEJ,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAE/B,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAE9E,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YACtE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YAC1E,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CACxF,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,MAAM,OAAO,GAA2B;QACtC,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,EAAE;QACtB,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,EAAE;KACnB,CAAC;IAEF,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;QAChC,SAAS,GAAG,SAAS,IAAI,MAAM,CAAC;QAChC,OAAO,CAAC,GAAG,CACT,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YACjE,aAAa,MAAM,SAAS,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CACvD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAE3F,sCAAsC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,yBAAyB;AACzB,aAAa,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC","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"}