codecrucible-synth
Version:
Production-Ready AI Development Platform with Multi-Voice Synthesis, Smithery MCP Integration, Enterprise Security, and Zero-Timeout Reliability
68 lines (67 loc) • 2.94 kB
JavaScript
/**
* Simple Agent Router - 2025 Best Practices Implementation
* Based on research: modular design, timeout/retry mechanisms, observability
*/
export class SimpleAgentRouter {
static DEFAULT_TIMEOUT = 30000; // 30 seconds
static CODING_KEYWORDS = [
'implement', 'code', 'function', 'debug', 'refactor', 'typescript', 'javascript'
];
/**
* Route request to appropriate agent with performance optimizations
*/
static async routeRequest(request) {
const startTime = Date.now();
const timeout = request.timeout || this.DEFAULT_TIMEOUT;
try {
// Detect coding operation
const isCoding = this.detectCodingOperation(request.prompt);
// Build lightweight prompt based on operation type
const systemPrompt = this.buildPrompt(request.voice || 'developer', isCoding);
// Create timeout promise
const timeoutPromise = new Promise((_, reject) => {
setTimeout(() => reject(new Error('Agent timeout')), timeout);
});
// Create agent response promise (simplified)
const responsePromise = this.generateResponse(systemPrompt, request.prompt);
// Race between response and timeout
const content = await Promise.race([responsePromise, timeoutPromise]);
return {
content,
voice: request.voice || 'developer',
duration: Date.now() - startTime,
success: true
};
}
catch (error) {
return {
content: `Error: ${error instanceof Error ? error.message : 'Unknown error'}`,
voice: request.voice || 'developer',
duration: Date.now() - startTime,
success: false,
error: error instanceof Error ? error.message : 'Unknown error'
};
}
}
static detectCodingOperation(prompt) {
const lowerPrompt = prompt.toLowerCase();
return this.CODING_KEYWORDS.some(keyword => lowerPrompt.includes(keyword));
}
static buildPrompt(voice, isCoding) {
const basePrompt = `You are ${voice} voice, an AI coding assistant.`;
if (isCoding) {
return `${basePrompt}
# CODING GUIDELINES
- Follow Living Spiral methodology: Collapse → Council → Synthesis → Rebirth → Reflection
- Apply TDD and security-first principles
- Write clean, maintainable code
- Provide concise, practical solutions`;
}
return `${basePrompt} Provide helpful, concise responses.`;
}
static async generateResponse(systemPrompt, userPrompt) {
// Simplified response generation - in real implementation this would call the model client
return `${systemPrompt}\n\nUser: ${userPrompt}\n\nResponse: [Generated response would go here]`;
}
}
//# sourceMappingURL=simple-agent-router.js.map