agentic-flow 2.0.1-alpha.4 → 2.0.1-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentdb/controllers/EmbeddingService.d.ts +37 -0
- package/dist/agentdb/controllers/EmbeddingService.d.ts.map +1 -0
- package/dist/agentdb/controllers/EmbeddingService.js +1 -0
- package/dist/agentdb/controllers/EmbeddingService.js.map +1 -0
- package/dist/billing/mcp/tools.d.ts.map +1 -1
- package/dist/billing/mcp/tools.js +2 -0
- package/dist/billing/mcp/tools.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts +18 -0
- package/dist/cli/commands/hooks.d.ts.map +1 -0
- package/dist/cli/commands/hooks.js +750 -0
- package/dist/cli/commands/hooks.js.map +1 -0
- package/dist/cli-proxy.js +26 -1
- package/dist/cli-proxy.js.map +1 -1
- package/dist/core/agentdb-fast.js +3 -3
- package/dist/core/agentdb-fast.js.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.js +32 -17
- package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
- package/dist/core/attention-native.d.ts +1 -0
- package/dist/core/attention-native.d.ts.map +1 -1
- package/dist/core/attention-native.js +6 -1
- package/dist/core/attention-native.js.map +1 -1
- package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
- package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
- package/dist/intelligence/RuVectorIntelligence.d.ts +362 -0
- package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -0
- package/dist/intelligence/RuVectorIntelligence.js +852 -0
- package/dist/intelligence/RuVectorIntelligence.js.map +1 -0
- package/dist/intelligence/index.d.ts +14 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +14 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/llm/RuvLLMOrchestrator.d.ts +184 -0
- package/dist/llm/RuvLLMOrchestrator.d.ts.map +1 -0
- package/dist/llm/RuvLLMOrchestrator.js +442 -0
- package/dist/llm/RuvLLMOrchestrator.js.map +1 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +8 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.js +86 -21
- package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
- package/dist/mcp/fastmcp/servers/hooks-server.d.ts +15 -0
- package/dist/mcp/fastmcp/servers/hooks-server.d.ts.map +1 -0
- package/dist/mcp/fastmcp/servers/hooks-server.js +63 -0
- package/dist/mcp/fastmcp/servers/hooks-server.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts +20 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.js +110 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.js +276 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.d.ts +6 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.js +164 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/index.d.ts +28 -0
- package/dist/mcp/fastmcp/tools/hooks/index.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/index.js +59 -0
- package/dist/mcp/fastmcp/tools/hooks/index.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts +91 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +269 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts +58 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js +416 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts +6 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.js +137 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.js +91 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts +12 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.js +146 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.js +70 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts +14 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.js +121 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js +171 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/route.d.ts +12 -0
- package/dist/mcp/fastmcp/tools/hooks/route.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/route.js +267 -0
- package/dist/mcp/fastmcp/tools/hooks/route.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.d.ts +46 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.js +159 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.js +151 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.js.map +1 -0
- package/dist/mcp/tools/agent-booster-tools.d.ts +10 -1
- package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
- package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
- package/dist/mcp/tools/sona-tools.js +15 -3
- package/dist/mcp/tools/sona-tools.js.map +1 -1
- package/dist/memory/SharedMemoryPool.d.ts +16 -3
- package/dist/memory/SharedMemoryPool.d.ts.map +1 -1
- package/dist/memory/SharedMemoryPool.js +33 -1
- package/dist/memory/SharedMemoryPool.js.map +1 -1
- package/dist/middleware/auth.middleware.d.ts +114 -0
- package/dist/middleware/auth.middleware.d.ts.map +1 -0
- package/dist/middleware/auth.middleware.js +222 -0
- package/dist/middleware/auth.middleware.js.map +1 -0
- package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
- package/dist/optimizations/agent-booster-migration.js.map +1 -1
- package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-gemini.js.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
- package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-requesty.js.map +1 -1
- package/dist/proxy/quic-proxy.d.ts +0 -1
- package/dist/proxy/quic-proxy.d.ts.map +1 -1
- package/dist/proxy/quic-proxy.js +2 -1
- package/dist/proxy/quic-proxy.js.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.js +12 -1
- package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
- package/dist/reasoningbank/HybridBackend.d.ts +9 -0
- package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
- package/dist/reasoningbank/HybridBackend.js +48 -4
- package/dist/reasoningbank/HybridBackend.js.map +1 -1
- package/dist/reasoningbank/backend-selector.d.ts +1 -1
- package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
- package/dist/reasoningbank/backend-selector.js.map +1 -1
- package/dist/reasoningbank/index-new.d.ts +0 -6
- package/dist/reasoningbank/index-new.d.ts.map +1 -1
- package/dist/reasoningbank/index-new.js +9 -7
- package/dist/reasoningbank/index-new.js.map +1 -1
- package/dist/reasoningbank/index.d.ts +1 -6
- package/dist/reasoningbank/index.d.ts.map +1 -1
- package/dist/reasoningbank/index.js +10 -7
- package/dist/reasoningbank/index.js.map +1 -1
- package/dist/router/providers/onnx-local.d.ts.map +1 -1
- package/dist/router/providers/onnx-local.js +3 -1
- package/dist/router/providers/onnx-local.js.map +1 -1
- package/dist/routing/CircuitBreakerRouter.d.ts +187 -0
- package/dist/routing/CircuitBreakerRouter.d.ts.map +1 -0
- package/dist/routing/CircuitBreakerRouter.js +460 -0
- package/dist/routing/CircuitBreakerRouter.js.map +1 -0
- package/dist/routing/SemanticRouter.d.ts +164 -0
- package/dist/routing/SemanticRouter.d.ts.map +1 -0
- package/dist/routing/SemanticRouter.js +291 -0
- package/dist/routing/SemanticRouter.js.map +1 -0
- package/dist/routing/index.d.ts +12 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +10 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/services/embedding-service.d.ts.map +1 -1
- package/dist/services/embedding-service.js +5 -2
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/sona-agent-training.js +1 -1
- package/dist/services/sona-agent-training.js.map +1 -1
- package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
- package/dist/services/sona-agentdb-integration.js +10 -5
- package/dist/services/sona-agentdb-integration.js.map +1 -1
- package/dist/services/sona-service.d.ts +6 -6
- package/dist/services/sona-service.d.ts.map +1 -1
- package/dist/services/sona-service.js +3 -1
- package/dist/services/sona-service.js.map +1 -1
- package/dist/utils/audit-logger.d.ts +115 -0
- package/dist/utils/audit-logger.d.ts.map +1 -0
- package/dist/utils/audit-logger.js +228 -0
- package/dist/utils/audit-logger.js.map +1 -0
- package/dist/utils/cli.d.ts +1 -1
- package/dist/utils/cli.d.ts.map +1 -1
- package/dist/utils/cli.js +5 -0
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils/input-validator.d.ts +116 -0
- package/dist/utils/input-validator.d.ts.map +1 -0
- package/dist/utils/input-validator.js +299 -0
- package/dist/utils/input-validator.js.map +1 -0
- package/dist/utils/rate-limiter.js +2 -2
- package/dist/utils/rate-limiter.js.map +1 -1
- package/package.json +5 -2
- package/wasm/reasoningbank/reasoningbank_wasm_bg.js +2 -2
- package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
|
@@ -0,0 +1,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 @@
|
|
|
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"]}
|