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
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Build Agents Hook - Generate optimized agent configurations
3
+ * Creates YAML agent definitions based on pretrain analysis
4
+ */
5
+ import { z } from 'zod';
6
+ import * as path from 'path';
7
+ import * as fs from 'fs';
8
+ import { loadIntelligence } from './shared.js';
9
+ // Focus mode configurations
10
+ const focusConfigs = {
11
+ quality: {
12
+ description: 'Emphasizes code quality, best practices, and maintainability',
13
+ priorities: ['code-review', 'refactoring', 'documentation', 'testing'],
14
+ temperature: 0.3
15
+ },
16
+ speed: {
17
+ description: 'Optimized for rapid development and iteration',
18
+ priorities: ['implementation', 'prototyping', 'quick-fixes'],
19
+ temperature: 0.7
20
+ },
21
+ security: {
22
+ description: 'Security-first development with vulnerability awareness',
23
+ priorities: ['security-audit', 'input-validation', 'authentication', 'encryption'],
24
+ temperature: 0.2
25
+ },
26
+ testing: {
27
+ description: 'Test-driven development with comprehensive coverage',
28
+ priorities: ['unit-tests', 'integration-tests', 'e2e-tests', 'mocking'],
29
+ temperature: 0.4
30
+ },
31
+ fullstack: {
32
+ description: 'Balanced full-stack development capabilities',
33
+ priorities: ['frontend', 'backend', 'database', 'api-design'],
34
+ temperature: 0.5
35
+ }
36
+ };
37
+ export const hookBuildAgentsTool = {
38
+ name: 'hook_build_agents',
39
+ description: 'Generate optimized agent configurations from pretrain data',
40
+ parameters: z.object({
41
+ focus: z.enum(['quality', 'speed', 'security', 'testing', 'fullstack'])
42
+ .optional()
43
+ .default('quality')
44
+ .describe('Focus mode for agent generation'),
45
+ output: z.string().optional().default('.claude/agents').describe('Output directory'),
46
+ includePrompts: z.boolean().optional().default(true).describe('Include system prompts'),
47
+ format: z.enum(['yaml', 'json']).optional().default('yaml').describe('Output format')
48
+ }),
49
+ execute: async ({ focus, output, includePrompts, format }, { onProgress }) => {
50
+ const startTime = Date.now();
51
+ const intel = loadIntelligence();
52
+ const focusConfig = focusConfigs[focus];
53
+ onProgress?.({ progress: 0.1, message: 'Analyzing patterns...' });
54
+ // Detect languages from patterns
55
+ const detectedLangs = new Set();
56
+ const detectedFrameworks = new Set();
57
+ for (const state of Object.keys(intel.patterns)) {
58
+ if (state.includes('.rs'))
59
+ detectedLangs.add('rust');
60
+ if (state.includes('.ts') || state.includes('.js'))
61
+ detectedLangs.add('typescript');
62
+ if (state.includes('.tsx') || state.includes('.jsx'))
63
+ detectedFrameworks.add('react');
64
+ if (state.includes('.py'))
65
+ detectedLangs.add('python');
66
+ if (state.includes('.go'))
67
+ detectedLangs.add('go');
68
+ if (state.includes('.vue'))
69
+ detectedFrameworks.add('vue');
70
+ if (state.includes('.sql'))
71
+ detectedFrameworks.add('database');
72
+ }
73
+ onProgress?.({ progress: 0.3, message: 'Generating agent configs...' });
74
+ const agents = [];
75
+ // Language-specific agents
76
+ if (detectedLangs.has('rust')) {
77
+ agents.push({
78
+ name: 'rust-specialist',
79
+ type: 'rust-developer',
80
+ description: 'Rust development specialist for this codebase',
81
+ capabilities: ['cargo', 'unsafe-rust', 'async-rust', 'wasm', 'error-handling'],
82
+ focus: focusConfig.priorities,
83
+ temperature: focusConfig.temperature,
84
+ systemPrompt: includePrompts ? `You are a Rust specialist.
85
+ Focus on: memory safety, zero-cost abstractions, idiomatic Rust patterns.
86
+ Use cargo conventions, prefer Result over panic, leverage the type system.
87
+ ${focusConfig.description}` : undefined
88
+ });
89
+ }
90
+ if (detectedLangs.has('typescript')) {
91
+ agents.push({
92
+ name: 'typescript-specialist',
93
+ type: 'typescript-developer',
94
+ description: 'TypeScript development specialist',
95
+ capabilities: ['types', 'generics', 'decorators', 'async-await', 'modules'],
96
+ focus: focusConfig.priorities,
97
+ temperature: focusConfig.temperature,
98
+ systemPrompt: includePrompts ? `You are a TypeScript specialist.
99
+ Focus on: strict typing, type inference, generic patterns, module organization.
100
+ Prefer type safety over any, use discriminated unions, leverage utility types.
101
+ ${focusConfig.description}` : undefined
102
+ });
103
+ }
104
+ if (detectedLangs.has('python')) {
105
+ agents.push({
106
+ name: 'python-specialist',
107
+ type: 'python-developer',
108
+ description: 'Python development specialist',
109
+ capabilities: ['typing', 'async', 'testing', 'packaging', 'data-science'],
110
+ focus: focusConfig.priorities,
111
+ temperature: focusConfig.temperature,
112
+ systemPrompt: includePrompts ? `You are a Python specialist.
113
+ Focus on: type hints, PEP standards, pythonic idioms, virtual environments.
114
+ Use dataclasses, prefer pathlib, leverage context managers.
115
+ ${focusConfig.description}` : undefined
116
+ });
117
+ }
118
+ if (detectedLangs.has('go')) {
119
+ agents.push({
120
+ name: 'go-specialist',
121
+ type: 'go-developer',
122
+ description: 'Go development specialist',
123
+ capabilities: ['goroutines', 'channels', 'interfaces', 'testing', 'modules'],
124
+ focus: focusConfig.priorities,
125
+ temperature: focusConfig.temperature,
126
+ systemPrompt: includePrompts ? `You are a Go specialist.
127
+ Focus on: simplicity, explicit error handling, goroutines, interface composition.
128
+ Follow Go conventions, use go fmt, prefer composition over inheritance.
129
+ ${focusConfig.description}` : undefined
130
+ });
131
+ }
132
+ // Framework-specific agents
133
+ if (detectedFrameworks.has('react')) {
134
+ agents.push({
135
+ name: 'react-specialist',
136
+ type: 'react-developer',
137
+ description: 'React/Next.js development specialist',
138
+ capabilities: ['hooks', 'state-management', 'components', 'ssr', 'testing'],
139
+ focus: focusConfig.priorities,
140
+ temperature: focusConfig.temperature,
141
+ systemPrompt: includePrompts ? `You are a React specialist.
142
+ Focus on: functional components, hooks, state management, performance optimization.
143
+ Prefer composition, use memo wisely, follow React best practices.
144
+ ${focusConfig.description}` : undefined
145
+ });
146
+ }
147
+ if (detectedFrameworks.has('database')) {
148
+ agents.push({
149
+ name: 'database-specialist',
150
+ type: 'database-specialist',
151
+ description: 'Database design and optimization specialist',
152
+ capabilities: ['schema-design', 'queries', 'indexing', 'migrations', 'orm'],
153
+ focus: focusConfig.priorities,
154
+ temperature: focusConfig.temperature,
155
+ systemPrompt: includePrompts ? `You are a database specialist.
156
+ Focus on: normalized schemas, efficient queries, proper indexing, data integrity.
157
+ Consider performance implications, use transactions appropriately.
158
+ ${focusConfig.description}` : undefined
159
+ });
160
+ }
161
+ // Focus-specific agents
162
+ if (focus === 'testing' || focus === 'quality') {
163
+ agents.push({
164
+ name: 'test-architect',
165
+ type: 'test-engineer',
166
+ description: 'Testing and quality assurance specialist',
167
+ capabilities: ['unit-tests', 'integration-tests', 'mocking', 'coverage', 'tdd'],
168
+ focus: ['testing', 'quality', 'reliability'],
169
+ temperature: focusConfig.temperature,
170
+ systemPrompt: includePrompts ? `You are a testing specialist.
171
+ Focus on: comprehensive test coverage, meaningful assertions, test isolation.
172
+ Write tests first when possible, mock external dependencies, aim for >80% coverage.
173
+ ${focusConfig.description}` : undefined
174
+ });
175
+ }
176
+ if (focus === 'security') {
177
+ agents.push({
178
+ name: 'security-auditor',
179
+ type: 'security-specialist',
180
+ description: 'Security audit and hardening specialist',
181
+ capabilities: ['vulnerability-scan', 'auth', 'encryption', 'input-validation', 'owasp'],
182
+ focus: ['security', 'compliance', 'hardening'],
183
+ temperature: focusConfig.temperature,
184
+ systemPrompt: includePrompts ? `You are a security specialist.
185
+ Focus on: OWASP top 10, input validation, authentication, authorization, encryption.
186
+ Never trust user input, use parameterized queries, implement defense in depth.
187
+ ${focusConfig.description}` : undefined
188
+ });
189
+ }
190
+ // Add coordinator
191
+ agents.push({
192
+ name: 'project-coordinator',
193
+ type: 'coordinator',
194
+ description: 'Coordinates multi-agent workflows for this project',
195
+ capabilities: ['task-decomposition', 'agent-routing', 'context-management'],
196
+ focus: focusConfig.priorities,
197
+ temperature: focusConfig.temperature
198
+ });
199
+ onProgress?.({ progress: 0.7, message: 'Writing agent files...' });
200
+ // Create output directory
201
+ const outputDir = path.join(process.cwd(), output || '.claude/agents');
202
+ if (!fs.existsSync(outputDir)) {
203
+ fs.mkdirSync(outputDir, { recursive: true });
204
+ }
205
+ // Write agent files
206
+ const savedFiles = [];
207
+ for (const agent of agents) {
208
+ const filename = `${agent.name}.${format}`;
209
+ const filePath = path.join(outputDir, filename);
210
+ let content;
211
+ if (format === 'yaml') {
212
+ content = `# ${agent.description}
213
+ name: ${agent.name}
214
+ type: ${agent.type}
215
+ description: ${agent.description}
216
+ capabilities:
217
+ ${agent.capabilities.map(c => ` - ${c}`).join('\n')}
218
+ focus:
219
+ ${agent.focus.map(f => ` - ${f}`).join('\n')}
220
+ temperature: ${agent.temperature}
221
+ ${agent.systemPrompt ? `systemPrompt: |\n ${agent.systemPrompt.split('\n').join('\n ')}` : ''}
222
+ `;
223
+ }
224
+ else {
225
+ content = JSON.stringify(agent, null, 2);
226
+ }
227
+ fs.writeFileSync(filePath, content);
228
+ savedFiles.push(filename);
229
+ }
230
+ // Write index file
231
+ const indexPath = path.join(outputDir, `index.${format}`);
232
+ if (format === 'yaml') {
233
+ const indexContent = `# Generated Agent Index
234
+ # Focus: ${focus}
235
+ # Generated: ${new Date().toISOString()}
236
+
237
+ agents:
238
+ ${agents.map(a => ` - ${a.name}`).join('\n')}
239
+
240
+ detected:
241
+ languages:
242
+ ${[...detectedLangs].map(l => ` - ${l}`).join('\n') || ' - generic'}
243
+ frameworks:
244
+ ${[...detectedFrameworks].map(f => ` - ${f}`).join('\n') || ' - none'}
245
+ `;
246
+ fs.writeFileSync(indexPath, indexContent);
247
+ }
248
+ else {
249
+ fs.writeFileSync(indexPath, JSON.stringify({
250
+ focus,
251
+ generated: new Date().toISOString(),
252
+ agents: agents.map(a => a.name),
253
+ detected: {
254
+ languages: [...detectedLangs],
255
+ frameworks: [...detectedFrameworks]
256
+ }
257
+ }, null, 2));
258
+ }
259
+ savedFiles.push(`index.${format}`);
260
+ onProgress?.({ progress: 1.0, message: 'Agent generation complete!' });
261
+ const latency = Date.now() - startTime;
262
+ return {
263
+ success: true,
264
+ focus,
265
+ agentsGenerated: agents.length,
266
+ agents: agents.map(a => a.name),
267
+ detectedLanguages: [...detectedLangs],
268
+ detectedFrameworks: [...detectedFrameworks],
269
+ savedFiles,
270
+ outputDir: output,
271
+ latencyMs: latency,
272
+ timestamp: new Date().toISOString()
273
+ };
274
+ }
275
+ };
276
+ //# sourceMappingURL=build-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-agents.js","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/build-agents.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Build Agents Hook - Generate optimized agent configurations\n * Creates YAML agent definitions based on pretrain analysis\n */\n\nimport { z } from 'zod';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport type { ToolDefinition } from '../../types/index.js';\nimport { loadIntelligence } from './shared.js';\n\n// Focus mode configurations\nconst focusConfigs: Record<string, {\n description: string;\n priorities: string[];\n temperature: number;\n}> = {\n quality: {\n description: 'Emphasizes code quality, best practices, and maintainability',\n priorities: ['code-review', 'refactoring', 'documentation', 'testing'],\n temperature: 0.3\n },\n speed: {\n description: 'Optimized for rapid development and iteration',\n priorities: ['implementation', 'prototyping', 'quick-fixes'],\n temperature: 0.7\n },\n security: {\n description: 'Security-first development with vulnerability awareness',\n priorities: ['security-audit', 'input-validation', 'authentication', 'encryption'],\n temperature: 0.2\n },\n testing: {\n description: 'Test-driven development with comprehensive coverage',\n priorities: ['unit-tests', 'integration-tests', 'e2e-tests', 'mocking'],\n temperature: 0.4\n },\n fullstack: {\n description: 'Balanced full-stack development capabilities',\n priorities: ['frontend', 'backend', 'database', 'api-design'],\n temperature: 0.5\n }\n};\n\ninterface AgentConfig {\n name: string;\n type: string;\n description: string;\n capabilities: string[];\n focus: string[];\n temperature: number;\n systemPrompt?: string;\n}\n\nexport const hookBuildAgentsTool: ToolDefinition = {\n name: 'hook_build_agents',\n description: 'Generate optimized agent configurations from pretrain data',\n parameters: z.object({\n focus: z.enum(['quality', 'speed', 'security', 'testing', 'fullstack'])\n .optional()\n .default('quality')\n .describe('Focus mode for agent generation'),\n output: z.string().optional().default('.claude/agents').describe('Output directory'),\n includePrompts: z.boolean().optional().default(true).describe('Include system prompts'),\n format: z.enum(['yaml', 'json']).optional().default('yaml').describe('Output format')\n }),\n execute: async ({ focus, output, includePrompts, format }, { onProgress }) => {\n const startTime = Date.now();\n const intel = loadIntelligence();\n const focusConfig = focusConfigs[focus];\n\n onProgress?.({ progress: 0.1, message: 'Analyzing patterns...' });\n\n // Detect languages from patterns\n const detectedLangs = new Set<string>();\n const detectedFrameworks = new Set<string>();\n\n for (const state of Object.keys(intel.patterns)) {\n if (state.includes('.rs')) detectedLangs.add('rust');\n if (state.includes('.ts') || state.includes('.js')) detectedLangs.add('typescript');\n if (state.includes('.tsx') || state.includes('.jsx')) detectedFrameworks.add('react');\n if (state.includes('.py')) detectedLangs.add('python');\n if (state.includes('.go')) detectedLangs.add('go');\n if (state.includes('.vue')) detectedFrameworks.add('vue');\n if (state.includes('.sql')) detectedFrameworks.add('database');\n }\n\n onProgress?.({ progress: 0.3, message: 'Generating agent configs...' });\n\n const agents: AgentConfig[] = [];\n\n // Language-specific agents\n if (detectedLangs.has('rust')) {\n agents.push({\n name: 'rust-specialist',\n type: 'rust-developer',\n description: 'Rust development specialist for this codebase',\n capabilities: ['cargo', 'unsafe-rust', 'async-rust', 'wasm', 'error-handling'],\n focus: focusConfig.priorities,\n temperature: focusConfig.temperature,\n systemPrompt: includePrompts ? `You are a Rust specialist.\nFocus on: memory safety, zero-cost abstractions, idiomatic Rust patterns.\nUse cargo conventions, prefer Result over panic, leverage the type system.\n${focusConfig.description}` : undefined\n });\n }\n\n if (detectedLangs.has('typescript')) {\n agents.push({\n name: 'typescript-specialist',\n type: 'typescript-developer',\n description: 'TypeScript development specialist',\n capabilities: ['types', 'generics', 'decorators', 'async-await', 'modules'],\n focus: focusConfig.priorities,\n temperature: focusConfig.temperature,\n systemPrompt: includePrompts ? `You are a TypeScript specialist.\nFocus on: strict typing, type inference, generic patterns, module organization.\nPrefer type safety over any, use discriminated unions, leverage utility types.\n${focusConfig.description}` : undefined\n });\n }\n\n if (detectedLangs.has('python')) {\n agents.push({\n name: 'python-specialist',\n type: 'python-developer',\n description: 'Python development specialist',\n capabilities: ['typing', 'async', 'testing', 'packaging', 'data-science'],\n focus: focusConfig.priorities,\n temperature: focusConfig.temperature,\n systemPrompt: includePrompts ? `You are a Python specialist.\nFocus on: type hints, PEP standards, pythonic idioms, virtual environments.\nUse dataclasses, prefer pathlib, leverage context managers.\n${focusConfig.description}` : undefined\n });\n }\n\n if (detectedLangs.has('go')) {\n agents.push({\n name: 'go-specialist',\n type: 'go-developer',\n description: 'Go development specialist',\n capabilities: ['goroutines', 'channels', 'interfaces', 'testing', 'modules'],\n focus: focusConfig.priorities,\n temperature: focusConfig.temperature,\n systemPrompt: includePrompts ? `You are a Go specialist.\nFocus on: simplicity, explicit error handling, goroutines, interface composition.\nFollow Go conventions, use go fmt, prefer composition over inheritance.\n${focusConfig.description}` : undefined\n });\n }\n\n // Framework-specific agents\n if (detectedFrameworks.has('react')) {\n agents.push({\n name: 'react-specialist',\n type: 'react-developer',\n description: 'React/Next.js development specialist',\n capabilities: ['hooks', 'state-management', 'components', 'ssr', 'testing'],\n focus: focusConfig.priorities,\n temperature: focusConfig.temperature,\n systemPrompt: includePrompts ? `You are a React specialist.\nFocus on: functional components, hooks, state management, performance optimization.\nPrefer composition, use memo wisely, follow React best practices.\n${focusConfig.description}` : undefined\n });\n }\n\n if (detectedFrameworks.has('database')) {\n agents.push({\n name: 'database-specialist',\n type: 'database-specialist',\n description: 'Database design and optimization specialist',\n capabilities: ['schema-design', 'queries', 'indexing', 'migrations', 'orm'],\n focus: focusConfig.priorities,\n temperature: focusConfig.temperature,\n systemPrompt: includePrompts ? `You are a database specialist.\nFocus on: normalized schemas, efficient queries, proper indexing, data integrity.\nConsider performance implications, use transactions appropriately.\n${focusConfig.description}` : undefined\n });\n }\n\n // Focus-specific agents\n if (focus === 'testing' || focus === 'quality') {\n agents.push({\n name: 'test-architect',\n type: 'test-engineer',\n description: 'Testing and quality assurance specialist',\n capabilities: ['unit-tests', 'integration-tests', 'mocking', 'coverage', 'tdd'],\n focus: ['testing', 'quality', 'reliability'],\n temperature: focusConfig.temperature,\n systemPrompt: includePrompts ? `You are a testing specialist.\nFocus on: comprehensive test coverage, meaningful assertions, test isolation.\nWrite tests first when possible, mock external dependencies, aim for >80% coverage.\n${focusConfig.description}` : undefined\n });\n }\n\n if (focus === 'security') {\n agents.push({\n name: 'security-auditor',\n type: 'security-specialist',\n description: 'Security audit and hardening specialist',\n capabilities: ['vulnerability-scan', 'auth', 'encryption', 'input-validation', 'owasp'],\n focus: ['security', 'compliance', 'hardening'],\n temperature: focusConfig.temperature,\n systemPrompt: includePrompts ? `You are a security specialist.\nFocus on: OWASP top 10, input validation, authentication, authorization, encryption.\nNever trust user input, use parameterized queries, implement defense in depth.\n${focusConfig.description}` : undefined\n });\n }\n\n // Add coordinator\n agents.push({\n name: 'project-coordinator',\n type: 'coordinator',\n description: 'Coordinates multi-agent workflows for this project',\n capabilities: ['task-decomposition', 'agent-routing', 'context-management'],\n focus: focusConfig.priorities,\n temperature: focusConfig.temperature\n });\n\n onProgress?.({ progress: 0.7, message: 'Writing agent files...' });\n\n // Create output directory\n const outputDir = path.join(process.cwd(), output || '.claude/agents');\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n // Write agent files\n const savedFiles: string[] = [];\n\n for (const agent of agents) {\n const filename = `${agent.name}.${format}`;\n const filePath = path.join(outputDir, filename);\n\n let content: string;\n if (format === 'yaml') {\n content = `# ${agent.description}\nname: ${agent.name}\ntype: ${agent.type}\ndescription: ${agent.description}\ncapabilities:\n${agent.capabilities.map(c => ` - ${c}`).join('\\n')}\nfocus:\n${agent.focus.map(f => ` - ${f}`).join('\\n')}\ntemperature: ${agent.temperature}\n${agent.systemPrompt ? `systemPrompt: |\\n ${agent.systemPrompt.split('\\n').join('\\n ')}` : ''}\n`;\n } else {\n content = JSON.stringify(agent, null, 2);\n }\n\n fs.writeFileSync(filePath, content);\n savedFiles.push(filename);\n }\n\n // Write index file\n const indexPath = path.join(outputDir, `index.${format}`);\n if (format === 'yaml') {\n const indexContent = `# Generated Agent Index\n# Focus: ${focus}\n# Generated: ${new Date().toISOString()}\n\nagents:\n${agents.map(a => ` - ${a.name}`).join('\\n')}\n\ndetected:\n languages:\n${[...detectedLangs].map(l => ` - ${l}`).join('\\n') || ' - generic'}\n frameworks:\n${[...detectedFrameworks].map(f => ` - ${f}`).join('\\n') || ' - none'}\n`;\n fs.writeFileSync(indexPath, indexContent);\n } else {\n fs.writeFileSync(indexPath, JSON.stringify({\n focus,\n generated: new Date().toISOString(),\n agents: agents.map(a => a.name),\n detected: {\n languages: [...detectedLangs],\n frameworks: [...detectedFrameworks]\n }\n }, null, 2));\n }\n\n savedFiles.push(`index.${format}`);\n\n onProgress?.({ progress: 1.0, message: 'Agent generation complete!' });\n\n const latency = Date.now() - startTime;\n\n return {\n success: true,\n focus,\n agentsGenerated: agents.length,\n agents: agents.map(a => a.name),\n detectedLanguages: [...detectedLangs],\n detectedFrameworks: [...detectedFrameworks],\n savedFiles,\n outputDir: output,\n latencyMs: latency,\n timestamp: new Date().toISOString()\n };\n }\n};\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Explain Hook - Explain routing decisions with full transparency
3
+ */
4
+ import type { ToolDefinition } from '../../types/index.js';
5
+ export declare const hookExplainTool: ToolDefinition;
6
+ //# sourceMappingURL=explain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/explain.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,eAAO,MAAM,eAAe,EAAE,cAuL7B,CAAC"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Explain Hook - Explain routing decisions with full transparency
3
+ */
4
+ import { z } from 'zod';
5
+ import * as path from 'path';
6
+ import { loadIntelligence, getAgentForFile, simpleEmbed, cosineSimilarity } from './shared.js';
7
+ export const hookExplainTool = {
8
+ name: 'hook_explain',
9
+ description: 'Explain why an agent would be selected for a task',
10
+ parameters: z.object({
11
+ task: z.string().describe('Task description'),
12
+ file: z.string().optional().describe('Optional file context'),
13
+ agent: z.string().optional().describe('Specific agent to explain selection for')
14
+ }),
15
+ execute: async ({ task, file, agent }, { onProgress }) => {
16
+ const startTime = Date.now();
17
+ const intel = loadIntelligence();
18
+ // Collect all reasoning
19
+ const reasons = [];
20
+ // All agent scores
21
+ const allScores = {};
22
+ // 1. File pattern analysis
23
+ if (file) {
24
+ const ext = path.extname(file);
25
+ const suggestedAgent = getAgentForFile(file);
26
+ reasons.push({
27
+ factor: 'File Extension',
28
+ weight: 2.0,
29
+ evidence: `${ext} files are typically handled by ${suggestedAgent}`,
30
+ contributes: agent === suggestedAgent ? 'positive' : 'neutral'
31
+ });
32
+ allScores[suggestedAgent] = (allScores[suggestedAgent] || 0) + 2.0;
33
+ // Learned patterns
34
+ const state = `edit:${ext}`;
35
+ if (intel.patterns[state]) {
36
+ const patterns = intel.patterns[state];
37
+ const sortedPatterns = Object.entries(patterns)
38
+ .sort((a, b) => b[1] - a[1]);
39
+ for (const [patternAgent, value] of sortedPatterns.slice(0, 3)) {
40
+ if (typeof value === 'number') {
41
+ allScores[patternAgent] = (allScores[patternAgent] || 0) + value;
42
+ reasons.push({
43
+ factor: 'Learned Pattern',
44
+ weight: value,
45
+ evidence: `Historical Q-value of ${value.toFixed(2)} for ${patternAgent} on ${ext} files`,
46
+ contributes: agent === patternAgent
47
+ ? (value > 0 ? 'positive' : 'negative')
48
+ : 'neutral'
49
+ });
50
+ }
51
+ }
52
+ }
53
+ }
54
+ // 2. Task keyword analysis
55
+ const taskLower = task.toLowerCase();
56
+ const keywordMatches = [];
57
+ const keywordMap = {
58
+ 'test-engineer': ['test', 'spec', 'coverage'],
59
+ 'documentation-specialist': ['document', 'readme', 'docs'],
60
+ 'security-specialist': ['security', 'auth', 'vulnerability'],
61
+ 'database-specialist': ['database', 'sql', 'query'],
62
+ 'optimizer': ['optimize', 'performance', 'speed'],
63
+ 'researcher': ['research', 'find', 'explore']
64
+ };
65
+ for (const [agentType, keywords] of Object.entries(keywordMap)) {
66
+ for (const keyword of keywords) {
67
+ if (taskLower.includes(keyword)) {
68
+ keywordMatches.push(keyword);
69
+ allScores[agentType] = (allScores[agentType] || 0) + 1.5;
70
+ reasons.push({
71
+ factor: 'Keyword Match',
72
+ weight: 1.5,
73
+ evidence: `Task mentions "${keyword}" → suggests ${agentType}`,
74
+ contributes: agent === agentType ? 'positive' : 'neutral'
75
+ });
76
+ }
77
+ }
78
+ }
79
+ // 3. Memory similarity analysis
80
+ if (intel.memories.length > 0) {
81
+ const taskEmbed = simpleEmbed(task);
82
+ const similarMemories = [];
83
+ for (const mem of intel.memories) {
84
+ if (mem.embedding) {
85
+ const similarity = cosineSimilarity(taskEmbed, mem.embedding);
86
+ if (similarity > 0.3) {
87
+ similarMemories.push({
88
+ content: mem.content.slice(0, 100),
89
+ similarity
90
+ });
91
+ }
92
+ }
93
+ }
94
+ if (similarMemories.length > 0) {
95
+ similarMemories.sort((a, b) => b.similarity - a.similarity);
96
+ const topMemory = similarMemories[0];
97
+ reasons.push({
98
+ factor: 'Memory Similarity',
99
+ weight: topMemory.similarity,
100
+ evidence: `Similar past task: "${topMemory.content}..."`,
101
+ contributes: 'positive'
102
+ });
103
+ }
104
+ }
105
+ // 4. Error pattern analysis
106
+ const relevantErrors = intel.errorPatterns.filter(ep => task.toLowerCase().includes(ep.errorType.toLowerCase()) ||
107
+ ep.context.toLowerCase().includes(task.toLowerCase().split(' ')[0]));
108
+ if (relevantErrors.length > 0) {
109
+ for (const ep of relevantErrors.slice(0, 2)) {
110
+ const bestAgent = Object.entries(ep.agentSuccess)
111
+ .sort((a, b) => b[1] - a[1])[0];
112
+ if (bestAgent) {
113
+ reasons.push({
114
+ factor: 'Error History',
115
+ weight: 1.0,
116
+ evidence: `${bestAgent[0]} has fixed ${ep.errorType} ${bestAgent[1]} times`,
117
+ contributes: agent === bestAgent[0] ? 'positive' : 'neutral'
118
+ });
119
+ }
120
+ }
121
+ }
122
+ // 5. Calculate final scores and ranking
123
+ const ranking = Object.entries(allScores)
124
+ .sort((a, b) => b[1] - a[1])
125
+ .map(([agentName, score], index) => ({
126
+ rank: index + 1,
127
+ agent: agentName,
128
+ score,
129
+ isRequested: agent === agentName
130
+ }));
131
+ // 6. Generate explanation summary
132
+ const topAgent = ranking[0];
133
+ const requestedAgentRank = agent
134
+ ? ranking.find(r => r.agent === agent)
135
+ : null;
136
+ let summary;
137
+ if (!agent) {
138
+ summary = `${topAgent?.agent || 'coder'} is recommended with score ${topAgent?.score.toFixed(2) || 0}`;
139
+ }
140
+ else if (requestedAgentRank?.rank === 1) {
141
+ summary = `${agent} is the top choice with score ${requestedAgentRank.score.toFixed(2)}`;
142
+ }
143
+ else if (requestedAgentRank) {
144
+ summary = `${agent} ranks #${requestedAgentRank.rank} with score ${requestedAgentRank.score.toFixed(2)}. ${topAgent?.agent} is preferred.`;
145
+ }
146
+ else {
147
+ summary = `${agent} has no specific advantages for this task. Consider ${topAgent?.agent || 'coder'}.`;
148
+ }
149
+ const latency = Date.now() - startTime;
150
+ return {
151
+ success: true,
152
+ summary,
153
+ reasons,
154
+ ranking: ranking.slice(0, 5),
155
+ requestedAgent: agent || null,
156
+ recommendedAgent: topAgent?.agent || 'coder',
157
+ memoryCount: intel.memories.length,
158
+ patternCount: Object.keys(intel.patterns).length,
159
+ latencyMs: latency,
160
+ timestamp: new Date().toISOString()
161
+ };
162
+ }
163
+ };
164
+ //# sourceMappingURL=explain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/explain.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Explain Hook - Explain routing decisions with full transparency\n */\n\nimport { z } from 'zod';\nimport * as path from 'path';\nimport type { ToolDefinition } from '../../types/index.js';\nimport {\n loadIntelligence,\n getAgentForFile,\n simpleEmbed,\n cosineSimilarity\n} from './shared.js';\n\nexport const hookExplainTool: ToolDefinition = {\n name: 'hook_explain',\n description: 'Explain why an agent would be selected for a task',\n parameters: z.object({\n task: z.string().describe('Task description'),\n file: z.string().optional().describe('Optional file context'),\n agent: z.string().optional().describe('Specific agent to explain selection for')\n }),\n execute: async ({ task, file, agent }, { onProgress }) => {\n const startTime = Date.now();\n const intel = loadIntelligence();\n\n // Collect all reasoning\n const reasons: Array<{\n factor: string;\n weight: number;\n evidence: string;\n contributes: 'positive' | 'negative' | 'neutral';\n }> = [];\n\n // All agent scores\n const allScores: Record<string, number> = {};\n\n // 1. File pattern analysis\n if (file) {\n const ext = path.extname(file);\n const suggestedAgent = getAgentForFile(file);\n\n reasons.push({\n factor: 'File Extension',\n weight: 2.0,\n evidence: `${ext} files are typically handled by ${suggestedAgent}`,\n contributes: agent === suggestedAgent ? 'positive' : 'neutral'\n });\n\n allScores[suggestedAgent] = (allScores[suggestedAgent] || 0) + 2.0;\n\n // Learned patterns\n const state = `edit:${ext}`;\n if (intel.patterns[state]) {\n const patterns = intel.patterns[state];\n const sortedPatterns = Object.entries(patterns)\n .sort((a, b) => (b[1] as number) - (a[1] as number));\n\n for (const [patternAgent, value] of sortedPatterns.slice(0, 3)) {\n if (typeof value === 'number') {\n allScores[patternAgent] = (allScores[patternAgent] || 0) + value;\n reasons.push({\n factor: 'Learned Pattern',\n weight: value,\n evidence: `Historical Q-value of ${value.toFixed(2)} for ${patternAgent} on ${ext} files`,\n contributes: agent === patternAgent\n ? (value > 0 ? 'positive' : 'negative')\n : 'neutral'\n });\n }\n }\n }\n }\n\n // 2. Task keyword analysis\n const taskLower = task.toLowerCase();\n const keywordMatches: string[] = [];\n\n const keywordMap: Record<string, string[]> = {\n 'test-engineer': ['test', 'spec', 'coverage'],\n 'documentation-specialist': ['document', 'readme', 'docs'],\n 'security-specialist': ['security', 'auth', 'vulnerability'],\n 'database-specialist': ['database', 'sql', 'query'],\n 'optimizer': ['optimize', 'performance', 'speed'],\n 'researcher': ['research', 'find', 'explore']\n };\n\n for (const [agentType, keywords] of Object.entries(keywordMap)) {\n for (const keyword of keywords) {\n if (taskLower.includes(keyword)) {\n keywordMatches.push(keyword);\n allScores[agentType] = (allScores[agentType] || 0) + 1.5;\n\n reasons.push({\n factor: 'Keyword Match',\n weight: 1.5,\n evidence: `Task mentions \"${keyword}\" → suggests ${agentType}`,\n contributes: agent === agentType ? 'positive' : 'neutral'\n });\n }\n }\n }\n\n // 3. Memory similarity analysis\n if (intel.memories.length > 0) {\n const taskEmbed = simpleEmbed(task);\n const similarMemories: Array<{ content: string; similarity: number }> = [];\n\n for (const mem of intel.memories) {\n if (mem.embedding) {\n const similarity = cosineSimilarity(taskEmbed, mem.embedding);\n if (similarity > 0.3) {\n similarMemories.push({\n content: mem.content.slice(0, 100),\n similarity\n });\n }\n }\n }\n\n if (similarMemories.length > 0) {\n similarMemories.sort((a, b) => b.similarity - a.similarity);\n const topMemory = similarMemories[0];\n\n reasons.push({\n factor: 'Memory Similarity',\n weight: topMemory.similarity,\n evidence: `Similar past task: \"${topMemory.content}...\"`,\n contributes: 'positive'\n });\n }\n }\n\n // 4. Error pattern analysis\n const relevantErrors = intel.errorPatterns.filter(ep =>\n task.toLowerCase().includes(ep.errorType.toLowerCase()) ||\n ep.context.toLowerCase().includes(task.toLowerCase().split(' ')[0])\n );\n\n if (relevantErrors.length > 0) {\n for (const ep of relevantErrors.slice(0, 2)) {\n const bestAgent = Object.entries(ep.agentSuccess)\n .sort((a, b) => b[1] - a[1])[0];\n\n if (bestAgent) {\n reasons.push({\n factor: 'Error History',\n weight: 1.0,\n evidence: `${bestAgent[0]} has fixed ${ep.errorType} ${bestAgent[1]} times`,\n contributes: agent === bestAgent[0] ? 'positive' : 'neutral'\n });\n }\n }\n }\n\n // 5. Calculate final scores and ranking\n const ranking = Object.entries(allScores)\n .sort((a, b) => b[1] - a[1])\n .map(([agentName, score], index) => ({\n rank: index + 1,\n agent: agentName,\n score,\n isRequested: agent === agentName\n }));\n\n // 6. Generate explanation summary\n const topAgent = ranking[0];\n const requestedAgentRank = agent\n ? ranking.find(r => r.agent === agent)\n : null;\n\n let summary: string;\n if (!agent) {\n summary = `${topAgent?.agent || 'coder'} is recommended with score ${topAgent?.score.toFixed(2) || 0}`;\n } else if (requestedAgentRank?.rank === 1) {\n summary = `${agent} is the top choice with score ${requestedAgentRank.score.toFixed(2)}`;\n } else if (requestedAgentRank) {\n summary = `${agent} ranks #${requestedAgentRank.rank} with score ${requestedAgentRank.score.toFixed(2)}. ${topAgent?.agent} is preferred.`;\n } else {\n summary = `${agent} has no specific advantages for this task. Consider ${topAgent?.agent || 'coder'}.`;\n }\n\n const latency = Date.now() - startTime;\n\n return {\n success: true,\n summary,\n reasons,\n ranking: ranking.slice(0, 5),\n requestedAgent: agent || null,\n recommendedAgent: topAgent?.agent || 'coder',\n memoryCount: intel.memories.length,\n patternCount: Object.keys(intel.patterns).length,\n latencyMs: latency,\n timestamp: new Date().toISOString()\n };\n }\n};\n"]}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Hook Tools - Intelligent agent routing and self-learning
3
+ * Integrates with ReasoningBank, LearningSystem, and Swarm
4
+ *
5
+ * NOW WITH FULL RUVECTOR INTELLIGENCE:
6
+ * - @ruvector/sona: Micro-LoRA (~0.05ms), EWC++, Trajectory tracking
7
+ * - @ruvector/attention: MoE, Flash, Hyperbolic, Graph attention
8
+ * - ruvector core: HNSW indexing (150x faster)
9
+ *
10
+ * Available as BOTH:
11
+ * 1. MCP Tools (via hooks-server.ts)
12
+ * 2. CLI Hooks (via npx ruvector hooks)
13
+ */
14
+ export { hookPreEditTool } from './pre-edit.js';
15
+ export { hookPostEditTool } from './post-edit.js';
16
+ export { hookPreCommandTool } from './pre-command.js';
17
+ export { hookPostCommandTool } from './post-command.js';
18
+ export { hookRouteTool } from './route.js';
19
+ export { hookExplainTool } from './explain.js';
20
+ export { hookPretrainTool } from './pretrain.js';
21
+ export { hookBuildAgentsTool } from './build-agents.js';
22
+ export { hookMetricsTool } from './metrics.js';
23
+ export { hookTransferTool } from './transfer.js';
24
+ export { getIntelligence, routeTaskIntelligent, beginTaskTrajectory, recordTrajectoryStep, endTaskTrajectory, storePattern, findSimilarPatterns, getIntelligenceStats, forceLearningCycle, computeAttentionSimilarity } from './intelligence-bridge.js';
25
+ export { intelligenceRouteTool, intelligenceTrajectoryStartTool, intelligenceTrajectoryStepTool, intelligenceTrajectoryEndTool, intelligencePatternStoreTool, intelligencePatternSearchTool, intelligenceStatsTool, intelligenceLearnTool, intelligenceAttentionTool, intelligenceTools } from './intelligence-tools.js';
26
+ export declare const hookTools: import("../../types/index.js").ToolDefinition[];
27
+ export declare const allHookTools: import("../../types/index.js").ToolDefinition[];
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,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,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,8BAA8B,EAC9B,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAgBjC,eAAO,MAAM,SAAS,iDAWrB,CAAC;AAGF,eAAO,MAAM,YAAY,iDAGxB,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Hook Tools - Intelligent agent routing and self-learning
3
+ * Integrates with ReasoningBank, LearningSystem, and Swarm
4
+ *
5
+ * NOW WITH FULL RUVECTOR INTELLIGENCE:
6
+ * - @ruvector/sona: Micro-LoRA (~0.05ms), EWC++, Trajectory tracking
7
+ * - @ruvector/attention: MoE, Flash, Hyperbolic, Graph attention
8
+ * - ruvector core: HNSW indexing (150x faster)
9
+ *
10
+ * Available as BOTH:
11
+ * 1. MCP Tools (via hooks-server.ts)
12
+ * 2. CLI Hooks (via npx ruvector hooks)
13
+ */
14
+ // Hook tools (original)
15
+ export { hookPreEditTool } from './pre-edit.js';
16
+ export { hookPostEditTool } from './post-edit.js';
17
+ export { hookPreCommandTool } from './pre-command.js';
18
+ export { hookPostCommandTool } from './post-command.js';
19
+ export { hookRouteTool } from './route.js';
20
+ export { hookExplainTool } from './explain.js';
21
+ export { hookPretrainTool } from './pretrain.js';
22
+ export { hookBuildAgentsTool } from './build-agents.js';
23
+ export { hookMetricsTool } from './metrics.js';
24
+ export { hookTransferTool } from './transfer.js';
25
+ // RuVector Intelligence Bridge
26
+ export { getIntelligence, routeTaskIntelligent, beginTaskTrajectory, recordTrajectoryStep, endTaskTrajectory, storePattern, findSimilarPatterns, getIntelligenceStats, forceLearningCycle, computeAttentionSimilarity } from './intelligence-bridge.js';
27
+ // RuVector Intelligence MCP Tools (NEW)
28
+ export { intelligenceRouteTool, intelligenceTrajectoryStartTool, intelligenceTrajectoryStepTool, intelligenceTrajectoryEndTool, intelligencePatternStoreTool, intelligencePatternSearchTool, intelligenceStatsTool, intelligenceLearnTool, intelligenceAttentionTool, intelligenceTools } from './intelligence-tools.js';
29
+ // Import all tools for registration
30
+ import { hookPreEditTool } from './pre-edit.js';
31
+ import { hookPostEditTool } from './post-edit.js';
32
+ import { hookPreCommandTool } from './pre-command.js';
33
+ import { hookPostCommandTool } from './post-command.js';
34
+ import { hookRouteTool } from './route.js';
35
+ import { hookExplainTool } from './explain.js';
36
+ import { hookPretrainTool } from './pretrain.js';
37
+ import { hookBuildAgentsTool } from './build-agents.js';
38
+ import { hookMetricsTool } from './metrics.js';
39
+ import { hookTransferTool } from './transfer.js';
40
+ import { intelligenceTools } from './intelligence-tools.js';
41
+ // Original hook tools (10 tools)
42
+ export const hookTools = [
43
+ hookPreEditTool,
44
+ hookPostEditTool,
45
+ hookPreCommandTool,
46
+ hookPostCommandTool,
47
+ hookRouteTool,
48
+ hookExplainTool,
49
+ hookPretrainTool,
50
+ hookBuildAgentsTool,
51
+ hookMetricsTool,
52
+ hookTransferTool
53
+ ];
54
+ // All tools including intelligence (19 tools total)
55
+ export const allHookTools = [
56
+ ...hookTools,
57
+ ...intelligenceTools
58
+ ];
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/mcp/fastmcp/tools/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,wBAAwB;AACxB,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,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,+BAA+B;AAC/B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAElC,wCAAwC;AACxC,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,8BAA8B,EAC9B,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAEjC,oCAAoC;AACpC,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,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,iCAAiC;AACjC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,mBAAmB;IACnB,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,mBAAmB;IACnB,eAAe;IACf,gBAAgB;CACjB,CAAC;AAEF,oDAAoD;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,SAAS;IACZ,GAAG,iBAAiB;CACrB,CAAC","sourcesContent":["/**\n * Hook Tools - Intelligent agent routing and self-learning\n * Integrates with ReasoningBank, LearningSystem, and Swarm\n *\n * NOW WITH FULL RUVECTOR INTELLIGENCE:\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 * Available as BOTH:\n * 1. MCP Tools (via hooks-server.ts)\n * 2. CLI Hooks (via npx ruvector hooks)\n */\n\n// Hook tools (original)\nexport { hookPreEditTool } from './pre-edit.js';\nexport { hookPostEditTool } from './post-edit.js';\nexport { hookPreCommandTool } from './pre-command.js';\nexport { hookPostCommandTool } from './post-command.js';\nexport { hookRouteTool } from './route.js';\nexport { hookExplainTool } from './explain.js';\nexport { hookPretrainTool } from './pretrain.js';\nexport { hookBuildAgentsTool } from './build-agents.js';\nexport { hookMetricsTool } from './metrics.js';\nexport { hookTransferTool } from './transfer.js';\n\n// RuVector Intelligence Bridge\nexport {\n getIntelligence,\n routeTaskIntelligent,\n beginTaskTrajectory,\n recordTrajectoryStep,\n endTaskTrajectory,\n storePattern,\n findSimilarPatterns,\n getIntelligenceStats,\n forceLearningCycle,\n computeAttentionSimilarity\n} from './intelligence-bridge.js';\n\n// RuVector Intelligence MCP Tools (NEW)\nexport {\n intelligenceRouteTool,\n intelligenceTrajectoryStartTool,\n intelligenceTrajectoryStepTool,\n intelligenceTrajectoryEndTool,\n intelligencePatternStoreTool,\n intelligencePatternSearchTool,\n intelligenceStatsTool,\n intelligenceLearnTool,\n intelligenceAttentionTool,\n intelligenceTools\n} from './intelligence-tools.js';\n\n// Import all tools for registration\nimport { hookPreEditTool } from './pre-edit.js';\nimport { hookPostEditTool } from './post-edit.js';\nimport { hookPreCommandTool } from './pre-command.js';\nimport { hookPostCommandTool } from './post-command.js';\nimport { hookRouteTool } from './route.js';\nimport { hookExplainTool } from './explain.js';\nimport { hookPretrainTool } from './pretrain.js';\nimport { hookBuildAgentsTool } from './build-agents.js';\nimport { hookMetricsTool } from './metrics.js';\nimport { hookTransferTool } from './transfer.js';\nimport { intelligenceTools } from './intelligence-tools.js';\n\n// Original hook tools (10 tools)\nexport const hookTools = [\n hookPreEditTool,\n hookPostEditTool,\n hookPreCommandTool,\n hookPostCommandTool,\n hookRouteTool,\n hookExplainTool,\n hookPretrainTool,\n hookBuildAgentsTool,\n hookMetricsTool,\n hookTransferTool\n];\n\n// All tools including intelligence (19 tools total)\nexport const allHookTools = [\n ...hookTools,\n ...intelligenceTools\n];\n"]}