Files
foxhunt/.claude/helpers/router.js
jgrusewski 12fdd18223 refactor: remove entire CPU training path — 5,307 lines of dead code
Deleted:
- DQN::compute_loss_internal (280 lines) — old Candle forward+loss
- DQN::train_step (55 lines) — old Candle training step
- DQN::compute_gradients (47 lines) — old gradient accumulation
- ComputeLossResult struct — only used by deleted functions
- RegimeConditionalDQN::train_step (65 lines) — old dispatch
- RegimeConditionalDQN::train_step_gpu_regime (100 lines) — old GPU path
- RegimeConditionalDQN::compute_gradients_gpu (130 lines) — old regime gradients
- RegimeConditionalDQN::compute_gradients (92 lines) — old dispatch
- DQNAgentType::train_step dispatch — dead
- DQNAgentType::compute_gradients dispatch — dead
- GpuDqnTrainer::upload_batch (71 lines) — old CPU→GPU upload
- train_step.rs (500 lines) — entire module including ensure_fused_ctx
- dqn_benchmark.rs — used old train_step
- examples.rs — used old train_step
- validation/adapters.rs (289 lines) — used old train_step
- dqn/trainable_adapter.rs — used old train_step
- gpu_smoketest.rs — tested old train_step
- Gradient accumulation path in training_loop.rs (144 lines)
- IQN d_h_s2().clone() → raw pointer (zero alloc)
- Causal intervention format! string alloc removed
- Dead HER relabel functions (320 lines)

Kept:
- ensure_fused_ctx logic inlined into training_loop.rs
- set_noise_sigma_scale re-added to RegimeConditionalDQN

Fixed:
- GpuReplayBuffer max_batch_size wired from batch_size parameter
  (was hardcoded 1024, blocking batch_size=8192)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 09:06:23 +02:00

67 lines
2.1 KiB
JavaScript

#!/usr/bin/env node
/**
* Claude Flow Agent Router
* Routes tasks to optimal agents based on learned patterns
*/
const AGENT_CAPABILITIES = {
coder: ['code-generation', 'refactoring', 'debugging', 'implementation'],
tester: ['unit-testing', 'integration-testing', 'coverage', 'test-generation'],
reviewer: ['code-review', 'security-audit', 'quality-check', 'best-practices'],
researcher: ['web-search', 'documentation', 'analysis', 'summarization'],
architect: ['system-design', 'architecture', 'patterns', 'scalability'],
'backend-dev': ['api', 'database', 'server', 'authentication'],
'frontend-dev': ['ui', 'react', 'css', 'components'],
devops: ['ci-cd', 'docker', 'deployment', 'infrastructure'],
};
const TASK_PATTERNS = {
// Code patterns
'implement|create|build|add|write code': 'coder',
'test|spec|coverage|unit test|integration': 'tester',
'review|audit|check|validate|security': 'reviewer',
'research|find|search|documentation|explore': 'researcher',
'design|architect|structure|plan': 'architect',
// Domain patterns
'api|endpoint|server|backend|database': 'backend-dev',
'ui|frontend|component|react|css|style': 'frontend-dev',
'deploy|docker|ci|cd|pipeline|infrastructure': 'devops',
};
function routeTask(task) {
const taskLower = task.toLowerCase();
// Check patterns
for (const [pattern, agent] of Object.entries(TASK_PATTERNS)) {
const regex = new RegExp(pattern, 'i');
if (regex.test(taskLower)) {
return {
agent,
confidence: 0.8,
reason: `Matched pattern: ${pattern}`,
};
}
}
// Default to coder for unknown tasks
return {
agent: 'coder',
confidence: 0.5,
reason: 'Default routing - no specific pattern matched',
};
}
// CLI
const task = process.argv.slice(2).join(' ');
if (task) {
const result = routeTask(task);
console.log(JSON.stringify(result, null, 2));
} else {
console.log('Usage: router.js <task description>');
console.log('\nAvailable agents:', Object.keys(AGENT_CAPABILITIES).join(', '));
}
module.exports = { routeTask, AGENT_CAPABILITIES, TASK_PATTERNS };