@kernel.chat/kbot
Advanced tools
| export {}; | ||
| //# sourceMappingURL=agents.test.d.ts.map |
| {"version":3,"file":"agents.test.d.ts","sourceRoot":"","sources":["../../src/agents/agents.test.ts"],"names":[],"mappings":""} |
| // K:BOT Agent Definition Tests — Creative & Developer | ||
| import { describe, it, expect } from 'vitest'; | ||
| import { CREATIVE_PRESET, CREATIVE_BUILTIN, CREATIVE_KEYWORDS, CREATIVE_PATTERNS, CREATIVE_AGENT_ENTRY, } from './creative.js'; | ||
| import { DEVELOPER_PRESET, DEVELOPER_BUILTIN, DEVELOPER_KEYWORDS, DEVELOPER_PATTERNS, DEVELOPER_AGENT_ENTRY, } from './developer.js'; | ||
| describe('Creative Agent', () => { | ||
| it('has valid preset structure', () => { | ||
| expect(CREATIVE_PRESET.name).toBe('Creative'); | ||
| expect(CREATIVE_PRESET.prompt).toContain('creative intelligence specialist'); | ||
| expect(CREATIVE_PRESET.prompt.length).toBeGreaterThan(500); | ||
| }); | ||
| it('has valid builtin structure', () => { | ||
| expect(CREATIVE_BUILTIN.name).toBe('Creative'); | ||
| expect(CREATIVE_BUILTIN.icon).toBe('✧'); | ||
| expect(CREATIVE_BUILTIN.color).toBe('#E879F9'); | ||
| expect(CREATIVE_BUILTIN.prompt).toBe(CREATIVE_PRESET.prompt); | ||
| }); | ||
| it('has keywords for routing', () => { | ||
| expect(CREATIVE_KEYWORDS.length).toBeGreaterThan(20); | ||
| expect(CREATIVE_KEYWORDS).toContain('generative'); | ||
| expect(CREATIVE_KEYWORDS).toContain('shader'); | ||
| expect(CREATIVE_KEYWORDS).toContain('music'); | ||
| expect(CREATIVE_KEYWORDS).toContain('fractal'); | ||
| }); | ||
| it('has routing patterns that match creative intents', () => { | ||
| expect(CREATIVE_PATTERNS.length).toBeGreaterThan(5); | ||
| // Test pattern matching | ||
| const testCases = [ | ||
| { input: 'create a generative art sketch', shouldMatch: true }, | ||
| { input: 'write a GLSL shader for water', shouldMatch: true }, | ||
| { input: 'build a p5.js animation', shouldMatch: true }, | ||
| { input: 'generate sonic pi music', shouldMatch: true }, | ||
| { input: 'create a particle system with flocking', shouldMatch: true }, | ||
| { input: 'fix the database migration', shouldMatch: false }, | ||
| ]; | ||
| for (const tc of testCases) { | ||
| const matched = CREATIVE_PATTERNS.some(p => p.pattern.test(tc.input)); | ||
| expect(matched).toBe(tc.shouldMatch); | ||
| } | ||
| }); | ||
| it('all patterns target creative agent', () => { | ||
| for (const p of CREATIVE_PATTERNS) { | ||
| expect(p.agent).toBe('creative'); | ||
| expect(p.confidence).toBeGreaterThanOrEqual(0.7); | ||
| expect(p.confidence).toBeLessThanOrEqual(1.0); | ||
| } | ||
| }); | ||
| it('has valid agent entry for bridge', () => { | ||
| expect(CREATIVE_AGENT_ENTRY.id).toBe('creative'); | ||
| expect(CREATIVE_AGENT_ENTRY.name).toBe('Creative'); | ||
| expect(CREATIVE_AGENT_ENTRY.description).toBeTruthy(); | ||
| }); | ||
| }); | ||
| describe('Developer Agent', () => { | ||
| it('has valid preset structure', () => { | ||
| expect(DEVELOPER_PRESET.name).toBe('Developer'); | ||
| expect(DEVELOPER_PRESET.prompt).toContain('K:BOT Developer agent'); | ||
| expect(DEVELOPER_PRESET.prompt.length).toBeGreaterThan(500); | ||
| }); | ||
| it('contains architecture documentation in prompt', () => { | ||
| const prompt = DEVELOPER_PRESET.prompt; | ||
| expect(prompt).toContain('cli.ts'); | ||
| expect(prompt).toContain('agent.ts'); | ||
| expect(prompt).toContain('matrix.ts'); | ||
| expect(prompt).toContain('registerTool'); | ||
| expect(prompt).toContain('flat parameter schema'); | ||
| expect(prompt).toContain('7 files'); | ||
| }); | ||
| it('has valid builtin structure', () => { | ||
| expect(DEVELOPER_BUILTIN.name).toBe('Developer'); | ||
| expect(DEVELOPER_BUILTIN.icon).toBe('⚙'); | ||
| expect(DEVELOPER_BUILTIN.color).toBe('#38BDF8'); | ||
| expect(DEVELOPER_BUILTIN.prompt).toBe(DEVELOPER_PRESET.prompt); | ||
| }); | ||
| it('has keywords for routing', () => { | ||
| expect(DEVELOPER_KEYWORDS.length).toBeGreaterThan(20); | ||
| expect(DEVELOPER_KEYWORDS).toContain('kbot'); | ||
| expect(DEVELOPER_KEYWORDS).toContain('register'); | ||
| expect(DEVELOPER_KEYWORDS).toContain('specialist'); | ||
| expect(DEVELOPER_KEYWORDS).toContain('mcp'); | ||
| }); | ||
| it('has routing patterns that match developer intents', () => { | ||
| expect(DEVELOPER_PATTERNS.length).toBeGreaterThan(5); | ||
| const testCases = [ | ||
| { input: 'kbot add a new tool', shouldMatch: true }, | ||
| { input: 'fix the tool registry', shouldMatch: true }, | ||
| { input: 'npm publish kbot', shouldMatch: true }, | ||
| { input: 'update bridge.ts for IDE integration', shouldMatch: true }, | ||
| { input: 'kbot self-improvement loop', shouldMatch: true }, | ||
| { input: 'write a blog post about cooking', shouldMatch: false }, | ||
| ]; | ||
| for (const tc of testCases) { | ||
| const matched = DEVELOPER_PATTERNS.some(p => p.pattern.test(tc.input)); | ||
| expect(matched).toBe(tc.shouldMatch); | ||
| } | ||
| }); | ||
| it('all patterns target developer agent', () => { | ||
| for (const p of DEVELOPER_PATTERNS) { | ||
| expect(p.agent).toBe('developer'); | ||
| expect(p.confidence).toBeGreaterThanOrEqual(0.7); | ||
| expect(p.confidence).toBeLessThanOrEqual(1.0); | ||
| } | ||
| }); | ||
| it('has valid agent entry for bridge', () => { | ||
| expect(DEVELOPER_AGENT_ENTRY.id).toBe('developer'); | ||
| expect(DEVELOPER_AGENT_ENTRY.name).toBe('Developer'); | ||
| expect(DEVELOPER_AGENT_ENTRY.description).toBeTruthy(); | ||
| }); | ||
| }); | ||
| describe('Agent Uniqueness', () => { | ||
| it('creative and developer have different IDs', () => { | ||
| expect(CREATIVE_AGENT_ENTRY.id).not.toBe(DEVELOPER_AGENT_ENTRY.id); | ||
| }); | ||
| it('creative and developer have different colors', () => { | ||
| expect(CREATIVE_BUILTIN.color).not.toBe(DEVELOPER_BUILTIN.color); | ||
| }); | ||
| it('creative and developer have different icons', () => { | ||
| expect(CREATIVE_BUILTIN.icon).not.toBe(DEVELOPER_BUILTIN.icon); | ||
| }); | ||
| it('keyword lists do not significantly overlap', () => { | ||
| const creativeSet = new Set(CREATIVE_KEYWORDS); | ||
| const overlap = DEVELOPER_KEYWORDS.filter(k => creativeSet.has(k)); | ||
| // Some overlap is expected (e.g., 'agent'), but should be <30% | ||
| const overlapRatio = overlap.length / Math.min(CREATIVE_KEYWORDS.length, DEVELOPER_KEYWORDS.length); | ||
| expect(overlapRatio).toBeLessThan(0.3); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=agents.test.js.map |
| {"version":3,"file":"agents.test.js","sourceRoot":"","sources":["../../src/agents/agents.test.ts"],"names":[],"mappings":"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"} |
| export interface Weakness { | ||
| /** Which subsystem is weak (e.g. 'streaming', 'tool-execution', 'routing') */ | ||
| area: string; | ||
| /** What's wrong — human-readable */ | ||
| description: string; | ||
| /** Severity: how much this hurts overall quality */ | ||
| severity: 'low' | 'medium' | 'high'; | ||
| /** Evidence — metric name, sample count, etc. */ | ||
| evidence: string; | ||
| /** Suggested file to improve */ | ||
| targetFile?: string; | ||
| } | ||
| export interface Proposal { | ||
| /** File path relative to packages/kbot/ */ | ||
| file: string; | ||
| /** Description of the change */ | ||
| description: string; | ||
| /** The weakness this addresses */ | ||
| weakness: Weakness; | ||
| /** Full proposed file content (or diff instructions) */ | ||
| patch: string; | ||
| /** Original file content for rollback reference */ | ||
| original: string; | ||
| } | ||
| export interface EvolutionResult { | ||
| /** Whether the change was applied or rolled back */ | ||
| status: 'applied' | 'rolled-back' | 'skipped'; | ||
| /** Why this status */ | ||
| reason: string; | ||
| /** Weakness that was targeted */ | ||
| weakness: Weakness; | ||
| /** Score improvement (positive = better) */ | ||
| delta: number; | ||
| /** Timestamp */ | ||
| timestamp: string; | ||
| } | ||
| export interface EvolutionCycle { | ||
| /** Unique ID for this cycle */ | ||
| id: string; | ||
| /** When the cycle started */ | ||
| startedAt: string; | ||
| /** When the cycle ended */ | ||
| endedAt?: string; | ||
| /** Weaknesses found */ | ||
| weaknesses: Weakness[]; | ||
| /** Proposals generated */ | ||
| proposals: Proposal[]; | ||
| /** Results of applying proposals */ | ||
| results: EvolutionResult[]; | ||
| /** Overall cycle status */ | ||
| status: 'running' | 'completed' | 'failed' | 'aborted'; | ||
| /** Error message if failed */ | ||
| error?: string; | ||
| } | ||
| /** | ||
| * Analyze kbot's performance data to find areas for improvement. | ||
| * Uses the confidence engine's skill profile + learning stats. | ||
| */ | ||
| export declare function diagnose(): Weakness[]; | ||
| /** | ||
| * Ask the LLM to propose a code improvement for a weakness. | ||
| * Reuses the auth/provider pattern from self-eval.ts. | ||
| */ | ||
| export declare function proposeImprovement(weakness: Weakness): Promise<Proposal | null>; | ||
| /** | ||
| * Apply a proposal temporarily and run validation (tsc + vitest). | ||
| * Returns true if the change passes, false otherwise. | ||
| */ | ||
| export declare function validate(proposal: Proposal): { | ||
| passes: boolean; | ||
| errors: string; | ||
| }; | ||
| export interface Metrics { | ||
| /** Lines of code in the file */ | ||
| loc: number; | ||
| /** Cyclomatic complexity estimate (branches + loops) */ | ||
| complexity: number; | ||
| /** Number of TODO/FIXME/HACK markers */ | ||
| todoCount: number; | ||
| /** Number of exported functions */ | ||
| exportCount: number; | ||
| } | ||
| export declare function scoreMetrics(source: string): Metrics; | ||
| /** | ||
| * Compute a delta score between before/after metrics. | ||
| * Positive = improvement, negative = regression. | ||
| */ | ||
| export declare function computeDelta(before: Metrics, after: Metrics): number; | ||
| /** | ||
| * Run one evolution cycle: | ||
| * 1. Check for clean working tree | ||
| * 2. Diagnose weaknesses | ||
| * 3. For each weakness (max 3): propose → validate → score → apply/rollback | ||
| * 4. Log everything | ||
| */ | ||
| export declare function runEvolutionCycle(): Promise<EvolutionCycle>; | ||
| /** Get the full evolution log */ | ||
| export declare function getEvolutionLog(): EvolutionCycle[]; | ||
| /** Get a summary of evolution activity */ | ||
| export declare function getEvolutionStats(): { | ||
| totalCycles: number; | ||
| totalApplied: number; | ||
| totalRolledBack: number; | ||
| totalSkipped: number; | ||
| avgDelta: number; | ||
| lastCycle: string | null; | ||
| }; | ||
| /** Format evolution status for terminal display */ | ||
| export declare function formatEvolutionStatus(): string; | ||
| /** Format diagnosis output for terminal display */ | ||
| export declare function formatDiagnosis(weaknesses: Weakness[]): string; | ||
| //# sourceMappingURL=evolution.d.ts.map |
| {"version":3,"file":"evolution.d.ts","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"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"} |
| // K:BOT Self-Evolution Loop — Automated Source Code Improvement | ||
| // | ||
| // CONCEPT: kbot identifies its own weaknesses, proposes code changes, | ||
| // validates them (typecheck + tests), scores the improvement, and | ||
| // applies or rolls back. The first self-evolving open-source CLI agent. | ||
| // | ||
| // SAFETY: | ||
| // - Only modifies files in packages/kbot/src/ (never node_modules, configs, etc.) | ||
| // - Never modifies evolution.ts, cli.ts, or test files (prevents recursive traps) | ||
| // - Uses git stash for instant rollback on any failure | ||
| // - Requires clean working tree before starting | ||
| // - Never auto-publishes or pushes | ||
| // - Max 3 changes per cycle (bounded blast radius) | ||
| // - All changes logged to ~/.kbot/evolution-log.json | ||
| // | ||
| // FLOW: diagnose → propose → validate → score → apply/rollback → log | ||
| import { homedir } from 'node:os'; | ||
| import { join } from 'node:path'; | ||
| import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs'; | ||
| import { execSync } from 'node:child_process'; | ||
| // ── File paths ── | ||
| const KBOT_DIR = join(homedir(), '.kbot'); | ||
| const LOG_FILE = join(KBOT_DIR, 'evolution-log.json'); | ||
| // Files that must NEVER be modified by the evolution loop | ||
| const PROTECTED_FILES = [ | ||
| 'src/evolution.ts', | ||
| 'src/cli.ts', | ||
| 'src/auth.ts', // never touch auth — security-critical | ||
| 'vitest.config.ts', | ||
| 'package.json', | ||
| 'tsconfig.json', | ||
| ]; | ||
| const PROTECTED_PATTERNS = [ | ||
| /\.test\.(ts|tsx)$/, // never modify tests | ||
| /\.spec\.(ts|tsx)$/, | ||
| /^node_modules\//, | ||
| /^dist\//, | ||
| ]; | ||
| // ── Helpers ── | ||
| function ensureDir() { | ||
| if (!existsSync(KBOT_DIR)) | ||
| mkdirSync(KBOT_DIR, { recursive: true }); | ||
| } | ||
| function loadLog() { | ||
| ensureDir(); | ||
| if (!existsSync(LOG_FILE)) | ||
| return []; | ||
| try { | ||
| return JSON.parse(readFileSync(LOG_FILE, 'utf-8')); | ||
| } | ||
| catch { | ||
| return []; | ||
| } | ||
| } | ||
| function saveLog(log) { | ||
| ensureDir(); | ||
| // Keep only last 50 cycles | ||
| const trimmed = log.slice(-50); | ||
| writeFileSync(LOG_FILE, JSON.stringify(trimmed, null, 2), 'utf-8'); | ||
| } | ||
| function isProtectedFile(relPath) { | ||
| if (PROTECTED_FILES.includes(relPath)) | ||
| return true; | ||
| return PROTECTED_PATTERNS.some(p => p.test(relPath)); | ||
| } | ||
| /** Find the kbot package root */ | ||
| function findKbotRoot() { | ||
| // Try relative to this file first | ||
| const candidates = [ | ||
| join(process.cwd(), 'packages/kbot'), | ||
| join(import.meta.dirname || process.cwd(), '..'), | ||
| ]; | ||
| for (const c of candidates) { | ||
| if (existsSync(join(c, 'package.json'))) { | ||
| try { | ||
| const pkg = JSON.parse(readFileSync(join(c, 'package.json'), 'utf-8')); | ||
| if (pkg.name === '@kernel.chat/kbot') | ||
| return c; | ||
| } | ||
| catch { /* continue */ } | ||
| } | ||
| } | ||
| throw new Error('Cannot find kbot package root. Run from the project directory.'); | ||
| } | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| // 1. DIAGNOSE — Find weaknesses from skill profile + learning data | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| /** | ||
| * Analyze kbot's performance data to find areas for improvement. | ||
| * Uses the confidence engine's skill profile + learning stats. | ||
| */ | ||
| export function diagnose() { | ||
| const weaknesses = []; | ||
| // Pull skill profile data | ||
| try { | ||
| // Dynamic import would be async — use require-style for sync diagnosis | ||
| const skillFile = join(KBOT_DIR, 'skill-profile.json'); | ||
| const confFile = join(KBOT_DIR, 'confidence.json'); | ||
| const statsFile = join(KBOT_DIR, 'memory', 'stats.json'); | ||
| // Check skill weaknesses | ||
| if (existsSync(skillFile)) { | ||
| const skills = JSON.parse(readFileSync(skillFile, 'utf-8')).skills || {}; | ||
| for (const [domain, data] of Object.entries(skills)) { | ||
| if (data.sampleSize < 3) | ||
| continue; | ||
| const rate = data.successCount / data.sampleSize; | ||
| if (rate < 0.5) { | ||
| weaknesses.push({ | ||
| area: domain, | ||
| description: `Low success rate in ${domain} tasks (${Math.round(rate * 100)}%)`, | ||
| severity: rate < 0.3 ? 'high' : 'medium', | ||
| evidence: `${data.successCount}/${data.sampleSize} successes`, | ||
| }); | ||
| } | ||
| } | ||
| } | ||
| // Check calibration — are we systematically overconfident? | ||
| if (existsSync(confFile)) { | ||
| const cal = JSON.parse(readFileSync(confFile, 'utf-8')); | ||
| if (cal.avgError > 0.25 && (cal.entries?.length || 0) >= 5) { | ||
| weaknesses.push({ | ||
| area: 'confidence-calibration', | ||
| description: `Confidence predictions are poorly calibrated (avg error: ${(cal.avgError * 100).toFixed(0)}%)`, | ||
| severity: cal.avgError > 0.4 ? 'high' : 'medium', | ||
| evidence: `${cal.entries.length} calibration entries, avg error ${cal.avgError.toFixed(3)}`, | ||
| targetFile: 'src/confidence.ts', | ||
| }); | ||
| } | ||
| } | ||
| // Check learning stats — look for patterns with low success | ||
| if (existsSync(statsFile)) { | ||
| const stats = JSON.parse(readFileSync(statsFile, 'utf-8')); | ||
| if (stats.totalMessages > 50 && stats.toolErrorRate > 0.15) { | ||
| weaknesses.push({ | ||
| area: 'tool-execution', | ||
| description: `High tool error rate (${(stats.toolErrorRate * 100).toFixed(0)}%)`, | ||
| severity: stats.toolErrorRate > 0.3 ? 'high' : 'medium', | ||
| evidence: `${stats.totalMessages} messages, ${(stats.toolErrorRate * 100).toFixed(0)}% tool errors`, | ||
| }); | ||
| } | ||
| } | ||
| // Check for common code quality signals | ||
| const kbotRoot = findKbotRoot(); | ||
| const srcDir = join(kbotRoot, 'src'); | ||
| // Look for TODO/FIXME/HACK comments as improvement signals | ||
| try { | ||
| const result = execSync(`grep -rn "TODO\\|FIXME\\|HACK\\|XXX" "${srcDir}" --include="*.ts" | head -20`, { encoding: 'utf-8', timeout: 5000 }).trim(); | ||
| if (result) { | ||
| const todoCount = result.split('\n').filter(l => l.trim()).length; | ||
| if (todoCount >= 3) { | ||
| weaknesses.push({ | ||
| area: 'code-quality', | ||
| description: `${todoCount} TODO/FIXME/HACK markers in source code`, | ||
| severity: todoCount > 10 ? 'medium' : 'low', | ||
| evidence: `Found ${todoCount} markers via grep`, | ||
| }); | ||
| } | ||
| } | ||
| } | ||
| catch { /* grep not critical */ } | ||
| } | ||
| catch (err) { | ||
| // Diagnosis failure is not fatal — return what we have | ||
| if (process.env.KBOT_DEBUG) { | ||
| console.error('[evolution] diagnose error:', err.message); | ||
| } | ||
| } | ||
| // Sort by severity (high first) | ||
| const severityOrder = { high: 0, medium: 1, low: 2 }; | ||
| weaknesses.sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]); | ||
| return weaknesses; | ||
| } | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| // 2. PROPOSE — Use LLM to generate code improvements | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| /** | ||
| * Ask the LLM to propose a code improvement for a weakness. | ||
| * Reuses the auth/provider pattern from self-eval.ts. | ||
| */ | ||
| export async function proposeImprovement(weakness) { | ||
| // Determine which file to improve | ||
| const kbotRoot = findKbotRoot(); | ||
| const targetFile = weakness.targetFile || guessTargetFile(weakness.area); | ||
| if (!targetFile) | ||
| return null; | ||
| if (isProtectedFile(targetFile)) | ||
| return null; | ||
| const absPath = join(kbotRoot, targetFile); | ||
| if (!existsSync(absPath)) | ||
| return null; | ||
| const original = readFileSync(absPath, 'utf-8'); | ||
| // Truncate very large files to keep prompt costs reasonable | ||
| const maxSourceChars = 8000; | ||
| const source = original.length > maxSourceChars | ||
| ? original.slice(0, maxSourceChars) + '\n// ... (truncated)' | ||
| : original; | ||
| const prompt = buildProposalPrompt(weakness, targetFile, source); | ||
| try { | ||
| const { getByokKey, getByokProvider, getProvider, getProviderModel } = await import('./auth.js'); | ||
| const apiKey = getByokKey(); | ||
| if (!apiKey) | ||
| return null; | ||
| const byokProvider = getByokProvider(); | ||
| const provider = getProvider(byokProvider); | ||
| const model = getProviderModel(byokProvider, 'default'); | ||
| const headers = { 'Content-Type': 'application/json' }; | ||
| if (provider.authHeader === 'x-api-key') { | ||
| headers['x-api-key'] = apiKey; | ||
| headers['anthropic-version'] = '2023-06-01'; | ||
| } | ||
| else if (apiKey && apiKey !== 'local') { | ||
| headers['Authorization'] = `Bearer ${apiKey}`; | ||
| } | ||
| let body; | ||
| let url; | ||
| if (provider.apiStyle === 'anthropic') { | ||
| url = provider.apiUrl; | ||
| body = JSON.stringify({ | ||
| model, | ||
| max_tokens: 4096, | ||
| messages: [{ role: 'user', content: prompt }], | ||
| }); | ||
| } | ||
| else if (provider.apiStyle === 'google') { | ||
| url = `${provider.apiUrl}/${model}:generateContent?key=${apiKey}`; | ||
| body = JSON.stringify({ | ||
| contents: [{ parts: [{ text: prompt }] }], | ||
| generationConfig: { maxOutputTokens: 4096 }, | ||
| }); | ||
| } | ||
| else { | ||
| url = provider.apiUrl; | ||
| body = JSON.stringify({ | ||
| model, | ||
| max_tokens: 4096, | ||
| messages: [{ role: 'user', content: prompt }], | ||
| }); | ||
| } | ||
| const res = await fetch(url, { | ||
| method: 'POST', | ||
| headers, | ||
| body, | ||
| signal: AbortSignal.timeout(60_000), | ||
| }); | ||
| if (!res.ok) | ||
| return null; | ||
| const data = await res.json(); | ||
| let text = ''; | ||
| if (provider.apiStyle === 'anthropic') { | ||
| const blocks = data.content || []; | ||
| text = blocks.filter(b => b.type === 'text').map(b => b.text || '').join(''); | ||
| } | ||
| else if (provider.apiStyle === 'google') { | ||
| const candidates = data.candidates || []; | ||
| text = candidates[0]?.content?.parts?.map(p => p.text).join('') || ''; | ||
| } | ||
| else { | ||
| const choices = data.choices || []; | ||
| text = choices[0]?.message?.content || ''; | ||
| } | ||
| // Parse the response — expect a code block with the improved file | ||
| const patch = extractCodeBlock(text); | ||
| if (!patch) | ||
| return null; | ||
| // Basic sanity: patch should be at least 50% the size of original | ||
| if (patch.length < original.length * 0.5) | ||
| return null; | ||
| return { | ||
| file: targetFile, | ||
| description: extractDescription(text), | ||
| weakness, | ||
| patch, | ||
| original, | ||
| }; | ||
| } | ||
| catch { | ||
| return null; | ||
| } | ||
| } | ||
| function buildProposalPrompt(weakness, file, source) { | ||
| return `You are improving the source code of K:BOT, an open-source terminal AI agent. | ||
| WEAKNESS DETECTED: | ||
| - Area: ${weakness.area} | ||
| - Issue: ${weakness.description} | ||
| - Severity: ${weakness.severity} | ||
| - Evidence: ${weakness.evidence} | ||
| FILE TO IMPROVE: ${file} | ||
| CURRENT SOURCE: | ||
| \`\`\`typescript | ||
| ${source} | ||
| \`\`\` | ||
| RULES: | ||
| 1. Make the MINIMAL change needed to address the weakness | ||
| 2. Keep all existing exports and function signatures | ||
| 3. Do NOT change import paths | ||
| 4. Do NOT add new dependencies | ||
| 5. Preserve the coding style (2-space indent, single quotes, no semicolons at line ends where absent) | ||
| 6. The change must pass \`npx tsc --noEmit\` and \`npx vitest run\` | ||
| Respond with: | ||
| 1. A one-line description of your change | ||
| 2. The COMPLETE improved file in a single typescript code block | ||
| DESCRIPTION: <your one-line description> | ||
| \`\`\`typescript | ||
| <complete improved file> | ||
| \`\`\``; | ||
| } | ||
| function extractCodeBlock(text) { | ||
| const match = text.match(/```(?:typescript|ts)?\n([\s\S]*?)```/); | ||
| return match ? match[1].trim() : null; | ||
| } | ||
| function extractDescription(text) { | ||
| const match = text.match(/DESCRIPTION:\s*(.+)/i); | ||
| return match ? match[1].trim() : 'Code improvement'; | ||
| } | ||
| function guessTargetFile(area) { | ||
| const areaMap = { | ||
| 'typescript': 'src/agent.ts', | ||
| 'javascript': 'src/agent.ts', | ||
| 'streaming': 'src/streaming.ts', | ||
| 'tool-execution': 'src/agent.ts', | ||
| 'routing': 'src/learned-router.ts', | ||
| 'confidence-calibration': 'src/confidence.ts', | ||
| 'learning': 'src/learning.ts', | ||
| 'memory': 'src/memory.ts', | ||
| 'planning': 'src/planner.ts', | ||
| 'context': 'src/context-manager.ts', | ||
| 'code-quality': 'src/agent.ts', | ||
| 'testing': 'src/agent.ts', | ||
| 'search': 'src/tools/search.ts', | ||
| 'git': 'src/tools/git.ts', | ||
| 'devops': 'src/tools/bash.ts', | ||
| }; | ||
| return areaMap[area] || null; | ||
| } | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| // 3. VALIDATE — Typecheck + test the proposed change | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| /** | ||
| * Apply a proposal temporarily and run validation (tsc + vitest). | ||
| * Returns true if the change passes, false otherwise. | ||
| */ | ||
| export function validate(proposal) { | ||
| const kbotRoot = findKbotRoot(); | ||
| const absPath = join(kbotRoot, proposal.file); | ||
| // Write the patched file | ||
| writeFileSync(absPath, proposal.patch, 'utf-8'); | ||
| try { | ||
| // Type check | ||
| execSync('npx tsc --noEmit', { | ||
| cwd: kbotRoot, | ||
| encoding: 'utf-8', | ||
| timeout: 60_000, | ||
| stdio: 'pipe', | ||
| }); | ||
| } | ||
| catch (err) { | ||
| // Rollback | ||
| writeFileSync(absPath, proposal.original, 'utf-8'); | ||
| const stderr = err.stderr || ''; | ||
| return { passes: false, errors: `Typecheck failed:\n${stderr.slice(0, 500)}` }; | ||
| } | ||
| try { | ||
| // Run tests | ||
| execSync('npx vitest run --reporter=verbose 2>&1', { | ||
| cwd: kbotRoot, | ||
| encoding: 'utf-8', | ||
| timeout: 120_000, | ||
| stdio: 'pipe', | ||
| }); | ||
| } | ||
| catch (err) { | ||
| // Rollback | ||
| writeFileSync(absPath, proposal.original, 'utf-8'); | ||
| const stderr = err.stderr || err.stdout || ''; | ||
| return { passes: false, errors: `Tests failed:\n${stderr.slice(0, 500)}` }; | ||
| } | ||
| return { passes: true, errors: '' }; | ||
| } | ||
| export function scoreMetrics(source) { | ||
| const lines = source.split('\n'); | ||
| const loc = lines.filter(l => l.trim() && !l.trim().startsWith('//')).length; | ||
| // Simple complexity: count if/else/for/while/switch/catch/? (ternary) | ||
| const complexity = (source.match(/\b(if|else|for|while|switch|catch|case)\b|\?.*:/g) || []).length; | ||
| const todoCount = (source.match(/\b(TODO|FIXME|HACK|XXX)\b/g) || []).length; | ||
| const exportCount = (source.match(/\bexport\s+(function|const|class|interface|type|enum)\b/g) || []).length; | ||
| return { loc, complexity, todoCount, exportCount }; | ||
| } | ||
| /** | ||
| * Compute a delta score between before/after metrics. | ||
| * Positive = improvement, negative = regression. | ||
| */ | ||
| export function computeDelta(before, after) { | ||
| let delta = 0; | ||
| // Fewer TODOs is better | ||
| delta += (before.todoCount - after.todoCount) * 0.2; | ||
| // Lower complexity (if significant) is better | ||
| if (before.complexity > 0) { | ||
| const complexityReduction = (before.complexity - after.complexity) / before.complexity; | ||
| delta += complexityReduction * 0.3; | ||
| } | ||
| // Breaking exports is bad — any lost export is a -1.0 penalty | ||
| if (after.exportCount < before.exportCount) { | ||
| delta -= (before.exportCount - after.exportCount) * 1.0; | ||
| } | ||
| // LOC change: slight preference for smaller (but not drastic reduction) | ||
| if (before.loc > 0) { | ||
| const locChange = (before.loc - after.loc) / before.loc; | ||
| if (locChange > 0 && locChange < 0.3) { | ||
| delta += locChange * 0.1; // slight reward for trimming | ||
| } | ||
| else if (locChange > 0.3) { | ||
| delta -= 0.5; // suspicious: lost too much code | ||
| } | ||
| } | ||
| return Math.round(delta * 1000) / 1000; | ||
| } | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| // 5. RUN EVOLUTION CYCLE — Full orchestrator | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| /** | ||
| * Run one evolution cycle: | ||
| * 1. Check for clean working tree | ||
| * 2. Diagnose weaknesses | ||
| * 3. For each weakness (max 3): propose → validate → score → apply/rollback | ||
| * 4. Log everything | ||
| */ | ||
| export async function runEvolutionCycle() { | ||
| const cycleId = `evo-${Date.now()}`; | ||
| const cycle = { | ||
| id: cycleId, | ||
| startedAt: new Date().toISOString(), | ||
| weaknesses: [], | ||
| proposals: [], | ||
| results: [], | ||
| status: 'running', | ||
| }; | ||
| try { | ||
| const kbotRoot = findKbotRoot(); | ||
| // Safety: check for clean working tree | ||
| try { | ||
| const gitStatus = execSync('git status --porcelain', { | ||
| cwd: kbotRoot, | ||
| encoding: 'utf-8', | ||
| timeout: 5000, | ||
| }).trim(); | ||
| if (gitStatus) { | ||
| // Stash changes for safety | ||
| execSync('git stash push -m "kbot-evolution-safety-stash"', { | ||
| cwd: kbotRoot, | ||
| encoding: 'utf-8', | ||
| timeout: 10000, | ||
| }); | ||
| } | ||
| } | ||
| catch { | ||
| // Not a git repo or git not available — proceed without safety net | ||
| } | ||
| // Step 1: Diagnose | ||
| const weaknesses = diagnose(); | ||
| cycle.weaknesses = weaknesses; | ||
| if (weaknesses.length === 0) { | ||
| cycle.status = 'completed'; | ||
| cycle.endedAt = new Date().toISOString(); | ||
| cycle.results.push({ | ||
| status: 'skipped', | ||
| reason: 'No weaknesses detected — kbot is performing well', | ||
| weakness: { area: 'none', description: 'No issues found', severity: 'low', evidence: 'clean diagnosis' }, | ||
| delta: 0, | ||
| timestamp: new Date().toISOString(), | ||
| }); | ||
| appendToLog(cycle); | ||
| return cycle; | ||
| } | ||
| // Step 2: Process top 3 weaknesses | ||
| const targetWeaknesses = weaknesses.slice(0, 3); | ||
| for (const weakness of targetWeaknesses) { | ||
| // Propose | ||
| const proposal = await proposeImprovement(weakness); | ||
| if (!proposal) { | ||
| cycle.results.push({ | ||
| status: 'skipped', | ||
| reason: 'Could not generate a valid proposal', | ||
| weakness, | ||
| delta: 0, | ||
| timestamp: new Date().toISOString(), | ||
| }); | ||
| continue; | ||
| } | ||
| cycle.proposals.push(proposal); | ||
| // Score before | ||
| const beforeMetrics = scoreMetrics(proposal.original); | ||
| // Validate (writes file, runs tsc + vitest) | ||
| const validation = validate(proposal); | ||
| if (!validation.passes) { | ||
| // validate() already rolled back the file | ||
| cycle.results.push({ | ||
| status: 'rolled-back', | ||
| reason: validation.errors, | ||
| weakness, | ||
| delta: 0, | ||
| timestamp: new Date().toISOString(), | ||
| }); | ||
| continue; | ||
| } | ||
| // Score after (file is still patched from validate()) | ||
| const afterMetrics = scoreMetrics(proposal.patch); | ||
| const delta = computeDelta(beforeMetrics, afterMetrics); | ||
| if (delta < -0.1) { | ||
| // Negative delta — rollback even though it passes | ||
| const absPath = join(kbotRoot, proposal.file); | ||
| writeFileSync(absPath, proposal.original, 'utf-8'); | ||
| cycle.results.push({ | ||
| status: 'rolled-back', | ||
| reason: `Negative quality delta (${delta.toFixed(3)}) — change makes code worse`, | ||
| weakness, | ||
| delta, | ||
| timestamp: new Date().toISOString(), | ||
| }); | ||
| continue; | ||
| } | ||
| // Apply! File is already written by validate() | ||
| cycle.results.push({ | ||
| status: 'applied', | ||
| reason: `${proposal.description} (delta: +${delta.toFixed(3)})`, | ||
| weakness, | ||
| delta, | ||
| timestamp: new Date().toISOString(), | ||
| }); | ||
| } | ||
| cycle.status = 'completed'; | ||
| } | ||
| catch (err) { | ||
| cycle.status = 'failed'; | ||
| cycle.error = err instanceof Error ? err.message : String(err); | ||
| } | ||
| cycle.endedAt = new Date().toISOString(); | ||
| appendToLog(cycle); | ||
| return cycle; | ||
| } | ||
| function appendToLog(cycle) { | ||
| const log = loadLog(); | ||
| log.push(cycle); | ||
| saveLog(log); | ||
| } | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| // 6. STATUS + REPORTING | ||
| // ══════════════════════════════════════════════════════════════════ | ||
| /** Get the full evolution log */ | ||
| export function getEvolutionLog() { | ||
| return loadLog(); | ||
| } | ||
| /** Get a summary of evolution activity */ | ||
| export function getEvolutionStats() { | ||
| const log = loadLog(); | ||
| let totalApplied = 0; | ||
| let totalRolledBack = 0; | ||
| let totalSkipped = 0; | ||
| let totalDelta = 0; | ||
| let deltaCount = 0; | ||
| for (const cycle of log) { | ||
| for (const result of cycle.results) { | ||
| if (result.status === 'applied') { | ||
| totalApplied++; | ||
| totalDelta += result.delta; | ||
| deltaCount++; | ||
| } | ||
| else if (result.status === 'rolled-back') { | ||
| totalRolledBack++; | ||
| } | ||
| else { | ||
| totalSkipped++; | ||
| } | ||
| } | ||
| } | ||
| return { | ||
| totalCycles: log.length, | ||
| totalApplied, | ||
| totalRolledBack, | ||
| totalSkipped, | ||
| avgDelta: deltaCount > 0 ? Math.round((totalDelta / deltaCount) * 1000) / 1000 : 0, | ||
| lastCycle: log.length > 0 ? log[log.length - 1].endedAt || log[log.length - 1].startedAt : null, | ||
| }; | ||
| } | ||
| /** Format evolution status for terminal display */ | ||
| export function formatEvolutionStatus() { | ||
| const stats = getEvolutionStats(); | ||
| const lines = []; | ||
| lines.push('=== K:BOT Evolution Engine ==='); | ||
| lines.push(''); | ||
| lines.push(`Cycles run: ${stats.totalCycles}`); | ||
| lines.push(`Applied: ${stats.totalApplied}`); | ||
| lines.push(`Rolled back: ${stats.totalRolledBack}`); | ||
| lines.push(`Skipped: ${stats.totalSkipped}`); | ||
| lines.push(`Avg improvement: ${stats.avgDelta >= 0 ? '+' : ''}${stats.avgDelta.toFixed(3)}`); | ||
| if (stats.lastCycle) { | ||
| const ago = Date.now() - new Date(stats.lastCycle).getTime(); | ||
| const hours = Math.round(ago / 3600000); | ||
| lines.push(`Last cycle: ${hours < 24 ? `${hours}h ago` : `${Math.round(hours / 24)}d ago`}`); | ||
| } | ||
| else { | ||
| lines.push('Last cycle: never'); | ||
| } | ||
| // Show recent results | ||
| const log = loadLog(); | ||
| if (log.length > 0) { | ||
| const recent = log[log.length - 1]; | ||
| lines.push(''); | ||
| lines.push(`Latest cycle (${recent.id}):`); | ||
| lines.push(` Status: ${recent.status}`); | ||
| lines.push(` Weaknesses: ${recent.weaknesses.length}`); | ||
| for (const r of recent.results) { | ||
| const icon = r.status === 'applied' ? '✓' : r.status === 'rolled-back' ? '✗' : '○'; | ||
| lines.push(` ${icon} ${r.weakness.area}: ${r.reason.slice(0, 80)}`); | ||
| } | ||
| } | ||
| return lines.join('\n'); | ||
| } | ||
| /** Format diagnosis output for terminal display */ | ||
| export function formatDiagnosis(weaknesses) { | ||
| if (weaknesses.length === 0) { | ||
| return 'No weaknesses detected. K:BOT is performing well.'; | ||
| } | ||
| const lines = [`Found ${weaknesses.length} weakness${weaknesses.length > 1 ? 'es' : ''}:`, '']; | ||
| for (const w of weaknesses) { | ||
| const icon = w.severity === 'high' ? '▲' : w.severity === 'medium' ? '●' : '○'; | ||
| lines.push(` ${icon} [${w.severity}] ${w.area}`); | ||
| lines.push(` ${w.description}`); | ||
| lines.push(` Evidence: ${w.evidence}`); | ||
| if (w.targetFile) | ||
| lines.push(` Target: ${w.targetFile}`); | ||
| lines.push(''); | ||
| } | ||
| return lines.join('\n'); | ||
| } | ||
| //# sourceMappingURL=evolution.js.map |
| {"version":3,"file":"evolution.js","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"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"} |
| export {}; | ||
| //# sourceMappingURL=evolution.test.d.ts.map |
| {"version":3,"file":"evolution.test.d.ts","sourceRoot":"","sources":["../src/evolution.test.ts"],"names":[],"mappings":""} |
| import { describe, it, expect } from 'vitest'; | ||
| import { diagnose, scoreMetrics, computeDelta, formatDiagnosis, formatEvolutionStatus, getEvolutionLog, getEvolutionStats, } from './evolution.js'; | ||
| describe('evolution engine', () => { | ||
| // ── diagnose ── | ||
| it('returns an array of weaknesses', () => { | ||
| const weaknesses = diagnose(); | ||
| expect(Array.isArray(weaknesses)).toBe(true); | ||
| for (const w of weaknesses) { | ||
| expect(w).toHaveProperty('area'); | ||
| expect(w).toHaveProperty('description'); | ||
| expect(w).toHaveProperty('severity'); | ||
| expect(w).toHaveProperty('evidence'); | ||
| expect(['low', 'medium', 'high']).toContain(w.severity); | ||
| } | ||
| }); | ||
| it('sorts weaknesses by severity (high first)', () => { | ||
| const weaknesses = diagnose(); | ||
| if (weaknesses.length >= 2) { | ||
| const severityOrder = { high: 0, medium: 1, low: 2 }; | ||
| for (let i = 1; i < weaknesses.length; i++) { | ||
| expect(severityOrder[weaknesses[i].severity]) | ||
| .toBeGreaterThanOrEqual(severityOrder[weaknesses[i - 1].severity]); | ||
| } | ||
| } | ||
| }); | ||
| // ── scoreMetrics ── | ||
| it('counts lines of code excluding comments', () => { | ||
| const source = `// comment | ||
| const a = 1 | ||
| const b = 2 | ||
| // another comment | ||
| export function foo() {} | ||
| `; | ||
| const m = scoreMetrics(source); | ||
| expect(m.loc).toBe(3); // 3 non-comment, non-blank lines | ||
| }); | ||
| it('counts complexity (branches + loops)', () => { | ||
| const source = ` | ||
| function test(x: number) { | ||
| if (x > 0) { | ||
| for (let i = 0; i < x; i++) { | ||
| while (true) { | ||
| switch (x) { | ||
| case 1: break | ||
| case 2: break | ||
| } | ||
| } | ||
| } | ||
| } else { | ||
| const y = x > 0 ? 1 : 0 | ||
| } | ||
| } | ||
| `; | ||
| const m = scoreMetrics(source); | ||
| // if, for, while, switch, case, case, else, ternary (?:) | ||
| expect(m.complexity).toBeGreaterThanOrEqual(6); | ||
| }); | ||
| it('counts TODO/FIXME/HACK markers', () => { | ||
| const source = ` | ||
| // TODO: fix this | ||
| const a = 1 // FIXME later | ||
| // HACK: workaround for issue | ||
| // XXX: temporary | ||
| const clean = 2 | ||
| `; | ||
| const m = scoreMetrics(source); | ||
| expect(m.todoCount).toBe(4); | ||
| }); | ||
| it('counts exported symbols', () => { | ||
| const source = ` | ||
| export function foo() {} | ||
| export const BAR = 1 | ||
| export class Baz {} | ||
| export interface Qux {} | ||
| export type Quux = string | ||
| export enum Status {} | ||
| function internal() {} | ||
| const local = 1 | ||
| `; | ||
| const m = scoreMetrics(source); | ||
| expect(m.exportCount).toBe(6); | ||
| }); | ||
| it('returns zero for empty source', () => { | ||
| const m = scoreMetrics(''); | ||
| expect(m.loc).toBe(0); | ||
| expect(m.complexity).toBe(0); | ||
| expect(m.todoCount).toBe(0); | ||
| expect(m.exportCount).toBe(0); | ||
| }); | ||
| // ── computeDelta ── | ||
| it('positive delta when TODOs are removed', () => { | ||
| const before = { loc: 100, complexity: 10, todoCount: 5, exportCount: 3 }; | ||
| const after = { loc: 100, complexity: 10, todoCount: 2, exportCount: 3 }; | ||
| const delta = computeDelta(before, after); | ||
| expect(delta).toBeGreaterThan(0); | ||
| }); | ||
| it('positive delta when complexity is reduced', () => { | ||
| const before = { loc: 100, complexity: 20, todoCount: 0, exportCount: 3 }; | ||
| const after = { loc: 100, complexity: 10, todoCount: 0, exportCount: 3 }; | ||
| const delta = computeDelta(before, after); | ||
| expect(delta).toBeGreaterThan(0); | ||
| }); | ||
| it('negative delta when exports are removed', () => { | ||
| const before = { loc: 100, complexity: 10, todoCount: 0, exportCount: 5 }; | ||
| const after = { loc: 100, complexity: 10, todoCount: 0, exportCount: 3 }; | ||
| const delta = computeDelta(before, after); | ||
| expect(delta).toBeLessThan(0); | ||
| }); | ||
| it('negative delta when too much code is removed', () => { | ||
| const before = { loc: 100, complexity: 10, todoCount: 0, exportCount: 3 }; | ||
| const after = { loc: 30, complexity: 10, todoCount: 0, exportCount: 3 }; | ||
| const delta = computeDelta(before, after); | ||
| expect(delta).toBeLessThan(0); | ||
| }); | ||
| it('zero delta when nothing changes', () => { | ||
| const metrics = { loc: 100, complexity: 10, todoCount: 0, exportCount: 3 }; | ||
| const delta = computeDelta(metrics, metrics); | ||
| expect(delta).toBe(0); | ||
| }); | ||
| // ── formatDiagnosis ── | ||
| it('formats empty weaknesses', () => { | ||
| const result = formatDiagnosis([]); | ||
| expect(result).toContain('No weaknesses'); | ||
| }); | ||
| it('formats weaknesses with correct severity icons', () => { | ||
| const weaknesses = [ | ||
| { area: 'test', description: 'High severity', severity: 'high', evidence: 'e1' }, | ||
| { area: 'test2', description: 'Low severity', severity: 'low', evidence: 'e2' }, | ||
| ]; | ||
| const result = formatDiagnosis(weaknesses); | ||
| expect(result).toContain('▲'); | ||
| expect(result).toContain('○'); | ||
| expect(result).toContain('High severity'); | ||
| expect(result).toContain('Low severity'); | ||
| }); | ||
| // ── formatEvolutionStatus ── | ||
| it('formats status without errors', () => { | ||
| const result = formatEvolutionStatus(); | ||
| expect(result).toContain('Evolution Engine'); | ||
| expect(result).toContain('Cycles run:'); | ||
| expect(result).toContain('Applied:'); | ||
| }); | ||
| // ── getEvolutionLog / getEvolutionStats ── | ||
| it('returns a valid log array', () => { | ||
| const log = getEvolutionLog(); | ||
| expect(Array.isArray(log)).toBe(true); | ||
| }); | ||
| it('returns valid stats', () => { | ||
| const stats = getEvolutionStats(); | ||
| expect(stats).toHaveProperty('totalCycles'); | ||
| expect(stats).toHaveProperty('totalApplied'); | ||
| expect(stats).toHaveProperty('totalRolledBack'); | ||
| expect(stats).toHaveProperty('totalSkipped'); | ||
| expect(stats).toHaveProperty('avgDelta'); | ||
| expect(typeof stats.totalCycles).toBe('number'); | ||
| expect(typeof stats.avgDelta).toBe('number'); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=evolution.test.js.map |
| {"version":3,"file":"evolution.test.js","sourceRoot":"","sources":["../src/evolution.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,iBAAiB,GAGlB,MAAM,gBAAgB,CAAA;AAEvB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,iBAAiB;IAEjB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;YAChC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;YACvC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;YACpC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;YACpC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACzD,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAA;QAC7B,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;YACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;qBAC1C,sBAAsB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;YACtE,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,qBAAqB;IAErB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG;;;;;;CAMlB,CAAA;QACG,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,iCAAiC;IACzD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;CAelB,CAAA;QACG,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QAC9B,yDAAyD;QACzD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG;;;;;;CAMlB,CAAA;QACG,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QAC9B,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG;;;;;;;;;CASlB,CAAA;QACG,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QAC9B,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;QAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,qBAAqB;IAErB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QAClF,MAAM,KAAK,GAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QACjF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QAClF,MAAM,KAAK,GAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QACjF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QAClF,MAAM,KAAK,GAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QACjF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QAClF,MAAM,KAAK,GAAY,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QAChF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,OAAO,GAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;QACnF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,wBAAwB;IAExB,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,UAAU,GAAe;YAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAChF,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChF,CAAA;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,8BAA8B;IAE9B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAA;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,4CAA4C;IAE5C,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,eAAe,EAAE,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAA;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;QAC3C,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QACxC,MAAM,CAAC,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/C,MAAM,CAAC,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"} |
| export interface EliteSolution { | ||
| pattern: { | ||
| intent: string; | ||
| toolSequence: string[]; | ||
| keywords: string[]; | ||
| }; | ||
| /** Composite fitness score (0-1) */ | ||
| fitness: number; | ||
| /** [taskComplexity, responseStyle] grid coordinates */ | ||
| descriptors: [number, number]; | ||
| metadata: { | ||
| tokensCost: number; | ||
| toolCallCount: number; | ||
| retryCount: number; | ||
| created: string; | ||
| uses: number; | ||
| }; | ||
| } | ||
| export interface ArchiveStats { | ||
| totalElites: number; | ||
| avgFitness: number; | ||
| /** Fraction of cells occupied (0-1) */ | ||
| coverage: number; | ||
| /** Top elites sorted by fitness descending */ | ||
| topElites: EliteSolution[]; | ||
| } | ||
| /** | ||
| * Load the archive from disk. Creates an empty grid if the file is missing or corrupt. | ||
| * Call once at startup. | ||
| */ | ||
| export declare function initArchive(): void; | ||
| /** | ||
| * Classify a solution into grid coordinates [taskComplexity, responseStyle]. | ||
| * | ||
| * taskComplexity: based on tool count | ||
| * 0 = no tools (trivial) | ||
| * 1 = 1 tool (simple) | ||
| * 2 = 2-3 tools (moderate) | ||
| * 3 = 4-6 tools (complex) | ||
| * 4 = 7+ tools (expert) | ||
| * | ||
| * responseStyle: based on token cost | ||
| * 0 = < 200 tokens (concise) | ||
| * 1 = < 500 tokens (standard) | ||
| * 2 = < 1500 tokens (detailed) | ||
| * 3 = 1500+ tokens (comprehensive) | ||
| */ | ||
| export declare function computeDescriptors(_intent: string, toolSequence: string[], tokensCost: number): [number, number]; | ||
| /** | ||
| * Compute composite fitness for a solution. | ||
| * | ||
| * Weighted formula: | ||
| * 0.4 * quality (evalResult.overall) | ||
| * + 0.3 * reliability (successRate) | ||
| * + 0.3 * efficiency (penalize expensive solutions) | ||
| */ | ||
| export declare function computeFitness(evalResult: { | ||
| overall: number; | ||
| }, successRate: number, tokensCost: number): number; | ||
| /** | ||
| * Attempt to place a solution in the archive. | ||
| * Only replaces an existing cell if the new solution has higher fitness. | ||
| * Returns true if the solution was placed (new cell or fitness improvement). | ||
| */ | ||
| export declare function addToArchive(solution: EliteSolution): boolean; | ||
| /** | ||
| * Get the elite solution for a specific grid cell. | ||
| * Returns null if the cell is empty. | ||
| */ | ||
| export declare function getElite(taskComplexity: number, responseStyle: number): EliteSolution | null; | ||
| /** | ||
| * Suggest the best strategy for a new task. | ||
| * Computes descriptors from the task parameters and returns the elite in that cell. | ||
| */ | ||
| export declare function suggestStrategy(intent: string, toolSequence: string[]): EliteSolution | null; | ||
| /** | ||
| * Get archive statistics: how many cells are filled, average fitness, coverage, and top elites. | ||
| */ | ||
| export declare function getArchiveStats(): ArchiveStats; | ||
| /** | ||
| * ASCII visualization of the archive grid. | ||
| * Filled cells show a fitness indicator, empty cells show a dot. | ||
| * | ||
| * Example output: | ||
| * MAP-Elites Archive (5x4) | ||
| * concise standard detailed comprehensive | ||
| * trivial . ██(0.82) . . | ||
| * simple ██(0.71) . ██(0.90) . | ||
| * moderate . ██(0.65) . ██(0.78) | ||
| * complex . . . . | ||
| * expert . . . ██(0.95) | ||
| */ | ||
| export declare function getArchiveCoverage(): string; | ||
| /** | ||
| * Remove elites older than maxAge milliseconds that have 0 uses. | ||
| * Frees up cells for new exploration. | ||
| */ | ||
| export declare function pruneArchive(maxAge: number): number; | ||
| /** | ||
| * Called after each agent interaction to potentially update the archive. | ||
| * Computes descriptors and fitness, then attempts to place the solution. | ||
| */ | ||
| export declare function learnFromOutcome(intent: string, toolSequence: string[], evalResult: { | ||
| overall: number; | ||
| }, successRate: number, tokensCost: number, retryCount: number): void; | ||
| //# sourceMappingURL=quality-diversity.d.ts.map |
| {"version":3,"file":"quality-diversity.d.ts","sourceRoot":"","sources":["../src/quality-diversity.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAA;QACd,YAAY,EAAE,MAAM,EAAE,CAAA;QACtB,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;IACD,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAA;QAClB,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,SAAS,EAAE,aAAa,EAAE,CAAA;CAC3B;AAuDD;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAYlC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,EAAE,MAAM,GACjB,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBlB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC/B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAe7D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,aAAa,GAAG,IAAI,CAQtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,GACrB,aAAa,GAAG,IAAI,CAKtB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAqB9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CA6B3C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmBnD;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC/B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CA8BN"} |
| // K:BOT MAP-Elites Quality-Diversity Engine | ||
| // | ||
| // Implements the MAP-Elites algorithm adapted for an AI agent's learning engine. | ||
| // Maintains an archive of high-quality solutions indexed by behavioral descriptors, | ||
| // enabling exploration of diverse solution strategies. | ||
| // | ||
| // Grid dimensions: | ||
| // X: taskComplexity (0-4: trivial / simple / moderate / complex / expert) | ||
| // Y: responseStyle (0-3: concise / standard / detailed / comprehensive) | ||
| // Total cells: 5 x 4 = 20 | ||
| // | ||
| // Each cell holds the single highest-fitness solution found for that behavioral region. | ||
| // Solutions are placed or replaced only when a higher-fitness candidate arrives. | ||
| // | ||
| // Persists to ~/.kbot/memory/map-elites.json using debounced writes. | ||
| import { homedir } from 'node:os'; | ||
| import { join } from 'node:path'; | ||
| import { existsSync, readFileSync, writeFile, mkdirSync } from 'node:fs'; | ||
| const LEARN_DIR = join(homedir(), '.kbot', 'memory'); | ||
| const ARCHIVE_FILE = join(LEARN_DIR, 'map-elites.json'); | ||
| // ═══ GRID CONSTANTS ══════════════════════════════════════════════ | ||
| const COMPLEXITY_BINS = 5; // 0..4 | ||
| const STYLE_BINS = 4; // 0..3 | ||
| const TOTAL_CELLS = COMPLEXITY_BINS * STYLE_BINS; | ||
| // ═══ PERSISTENCE ═════════════════════════════════════════════════ | ||
| function ensureDir() { | ||
| if (!existsSync(LEARN_DIR)) | ||
| mkdirSync(LEARN_DIR, { recursive: true }); | ||
| } | ||
| function loadJSON(path, fallback) { | ||
| ensureDir(); | ||
| if (!existsSync(path)) | ||
| return fallback; | ||
| try { | ||
| return JSON.parse(readFileSync(path, 'utf-8')); | ||
| } | ||
| catch { | ||
| return fallback; | ||
| } | ||
| } | ||
| /** Debounced async file writer — batches rapid writes into one I/O */ | ||
| let pendingTimer = null; | ||
| const WRITE_DEBOUNCE_MS = 500; | ||
| function saveArchive() { | ||
| ensureDir(); | ||
| if (pendingTimer) | ||
| clearTimeout(pendingTimer); | ||
| pendingTimer = setTimeout(() => { | ||
| pendingTimer = null; | ||
| writeFile(ARCHIVE_FILE, JSON.stringify(archive, null, 2), () => { | ||
| // non-critical — archive data can be regenerated from future interactions | ||
| }); | ||
| }, WRITE_DEBOUNCE_MS); | ||
| } | ||
| function emptyGrid() { | ||
| const grid = []; | ||
| for (let c = 0; c < COMPLEXITY_BINS; c++) { | ||
| grid[c] = []; | ||
| for (let s = 0; s < STYLE_BINS; s++) { | ||
| grid[c][s] = null; | ||
| } | ||
| } | ||
| return grid; | ||
| } | ||
| let archive = emptyGrid(); | ||
| // ═══ PUBLIC API ══════════════════════════════════════════════════ | ||
| /** | ||
| * Load the archive from disk. Creates an empty grid if the file is missing or corrupt. | ||
| * Call once at startup. | ||
| */ | ||
| export function initArchive() { | ||
| const raw = loadJSON(ARCHIVE_FILE, null); | ||
| if (raw && | ||
| Array.isArray(raw) && | ||
| raw.length === COMPLEXITY_BINS && | ||
| raw.every(row => Array.isArray(row) && row.length === STYLE_BINS)) { | ||
| archive = raw; | ||
| } | ||
| else { | ||
| archive = emptyGrid(); | ||
| } | ||
| } | ||
| /** | ||
| * Classify a solution into grid coordinates [taskComplexity, responseStyle]. | ||
| * | ||
| * taskComplexity: based on tool count | ||
| * 0 = no tools (trivial) | ||
| * 1 = 1 tool (simple) | ||
| * 2 = 2-3 tools (moderate) | ||
| * 3 = 4-6 tools (complex) | ||
| * 4 = 7+ tools (expert) | ||
| * | ||
| * responseStyle: based on token cost | ||
| * 0 = < 200 tokens (concise) | ||
| * 1 = < 500 tokens (standard) | ||
| * 2 = < 1500 tokens (detailed) | ||
| * 3 = 1500+ tokens (comprehensive) | ||
| */ | ||
| export function computeDescriptors(_intent, toolSequence, tokensCost) { | ||
| // Task complexity from tool count | ||
| const toolCount = toolSequence.length; | ||
| let complexity; | ||
| if (toolCount === 0) | ||
| complexity = 0; | ||
| else if (toolCount === 1) | ||
| complexity = 1; | ||
| else if (toolCount <= 3) | ||
| complexity = 2; | ||
| else if (toolCount <= 6) | ||
| complexity = 3; | ||
| else | ||
| complexity = 4; | ||
| // Response style from token cost | ||
| let style; | ||
| if (tokensCost < 200) | ||
| style = 0; | ||
| else if (tokensCost < 500) | ||
| style = 1; | ||
| else if (tokensCost < 1500) | ||
| style = 2; | ||
| else | ||
| style = 3; | ||
| return [complexity, style]; | ||
| } | ||
| /** | ||
| * Compute composite fitness for a solution. | ||
| * | ||
| * Weighted formula: | ||
| * 0.4 * quality (evalResult.overall) | ||
| * + 0.3 * reliability (successRate) | ||
| * + 0.3 * efficiency (penalize expensive solutions) | ||
| */ | ||
| export function computeFitness(evalResult, successRate, tokensCost) { | ||
| const quality = Math.max(0, Math.min(1, evalResult.overall)); | ||
| const reliability = Math.max(0, Math.min(1, successRate)); | ||
| const efficiency = 1 - Math.min(tokensCost / 2000, 1); | ||
| return 0.4 * quality + 0.3 * reliability + 0.3 * efficiency; | ||
| } | ||
| /** | ||
| * Attempt to place a solution in the archive. | ||
| * Only replaces an existing cell if the new solution has higher fitness. | ||
| * Returns true if the solution was placed (new cell or fitness improvement). | ||
| */ | ||
| export function addToArchive(solution) { | ||
| const [c, s] = solution.descriptors; | ||
| // Bounds check | ||
| if (c < 0 || c >= COMPLEXITY_BINS || s < 0 || s >= STYLE_BINS) | ||
| return false; | ||
| const current = archive[c][s]; | ||
| if (!current || solution.fitness > current.fitness) { | ||
| archive[c][s] = solution; | ||
| saveArchive(); | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| /** | ||
| * Get the elite solution for a specific grid cell. | ||
| * Returns null if the cell is empty. | ||
| */ | ||
| export function getElite(taskComplexity, responseStyle) { | ||
| if (taskComplexity < 0 || taskComplexity >= COMPLEXITY_BINS || | ||
| responseStyle < 0 || responseStyle >= STYLE_BINS) { | ||
| return null; | ||
| } | ||
| return archive[taskComplexity][responseStyle] ?? null; | ||
| } | ||
| /** | ||
| * Suggest the best strategy for a new task. | ||
| * Computes descriptors from the task parameters and returns the elite in that cell. | ||
| */ | ||
| export function suggestStrategy(intent, toolSequence) { | ||
| // Estimate token cost from tool sequence length (heuristic: ~200 tokens per tool call) | ||
| const estimatedTokens = Math.max(100, toolSequence.length * 200); | ||
| const [c, s] = computeDescriptors(intent, toolSequence, estimatedTokens); | ||
| return getElite(c, s); | ||
| } | ||
| /** | ||
| * Get archive statistics: how many cells are filled, average fitness, coverage, and top elites. | ||
| */ | ||
| export function getArchiveStats() { | ||
| const elites = []; | ||
| for (let c = 0; c < COMPLEXITY_BINS; c++) { | ||
| for (let s = 0; s < STYLE_BINS; s++) { | ||
| const cell = archive[c][s]; | ||
| if (cell) | ||
| elites.push(cell); | ||
| } | ||
| } | ||
| const totalElites = elites.length; | ||
| const avgFitness = totalElites > 0 | ||
| ? elites.reduce((sum, e) => sum + e.fitness, 0) / totalElites | ||
| : 0; | ||
| const coverage = totalElites / TOTAL_CELLS; | ||
| const topElites = [...elites] | ||
| .sort((a, b) => b.fitness - a.fitness) | ||
| .slice(0, 5); | ||
| return { totalElites, avgFitness, coverage, topElites }; | ||
| } | ||
| /** | ||
| * ASCII visualization of the archive grid. | ||
| * Filled cells show a fitness indicator, empty cells show a dot. | ||
| * | ||
| * Example output: | ||
| * MAP-Elites Archive (5x4) | ||
| * concise standard detailed comprehensive | ||
| * trivial . ██(0.82) . . | ||
| * simple ██(0.71) . ██(0.90) . | ||
| * moderate . ██(0.65) . ██(0.78) | ||
| * complex . . . . | ||
| * expert . . . ██(0.95) | ||
| */ | ||
| export function getArchiveCoverage() { | ||
| const complexityLabels = ['trivial ', 'simple ', 'moderate ', 'complex ', 'expert ']; | ||
| const styleLabels = ['concise', 'standard', 'detailed', 'comprehensive']; | ||
| const lines = []; | ||
| lines.push('MAP-Elites Archive (5x4)'); | ||
| lines.push(` ${styleLabels.map(l => l.padEnd(14)).join('')}`); | ||
| for (let c = 0; c < COMPLEXITY_BINS; c++) { | ||
| const cells = []; | ||
| for (let s = 0; s < STYLE_BINS; s++) { | ||
| const cell = archive[c][s]; | ||
| if (cell) { | ||
| cells.push(`██(${cell.fitness.toFixed(2)})`.padEnd(14)); | ||
| } | ||
| else { | ||
| cells.push('.'.padEnd(14)); | ||
| } | ||
| } | ||
| lines.push(` ${complexityLabels[c]} ${cells.join('')}`); | ||
| } | ||
| const stats = getArchiveStats(); | ||
| lines.push(''); | ||
| lines.push(`Coverage: ${stats.totalElites}/${TOTAL_CELLS} cells (${(stats.coverage * 100).toFixed(0)}%)`); | ||
| if (stats.totalElites > 0) { | ||
| lines.push(`Avg fitness: ${stats.avgFitness.toFixed(3)}`); | ||
| } | ||
| return lines.join('\n'); | ||
| } | ||
| /** | ||
| * Remove elites older than maxAge milliseconds that have 0 uses. | ||
| * Frees up cells for new exploration. | ||
| */ | ||
| export function pruneArchive(maxAge) { | ||
| const cutoff = Date.now() - maxAge; | ||
| let pruned = 0; | ||
| for (let c = 0; c < COMPLEXITY_BINS; c++) { | ||
| for (let s = 0; s < STYLE_BINS; s++) { | ||
| const cell = archive[c][s]; | ||
| if (cell && cell.metadata.uses === 0) { | ||
| const created = new Date(cell.metadata.created).getTime(); | ||
| if (created < cutoff) { | ||
| archive[c][s] = null; | ||
| pruned++; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| if (pruned > 0) | ||
| saveArchive(); | ||
| return pruned; | ||
| } | ||
| // ═══ INTEGRATION HOOK ════════════════════════════════════════════ | ||
| /** | ||
| * Called after each agent interaction to potentially update the archive. | ||
| * Computes descriptors and fitness, then attempts to place the solution. | ||
| */ | ||
| export function learnFromOutcome(intent, toolSequence, evalResult, successRate, tokensCost, retryCount) { | ||
| const descriptors = computeDescriptors(intent, toolSequence, tokensCost); | ||
| const fitness = computeFitness(evalResult, successRate, tokensCost); | ||
| // Extract keywords from intent (simple extraction — mirrors learning.ts approach) | ||
| const keywords = intent | ||
| .toLowerCase() | ||
| .replace(/[^a-z0-9\s]/g, ' ') | ||
| .split(/\s+/) | ||
| .filter(w => w.length > 2) | ||
| .slice(0, 10); | ||
| const solution = { | ||
| pattern: { | ||
| intent, | ||
| toolSequence, | ||
| keywords, | ||
| }, | ||
| fitness, | ||
| descriptors, | ||
| metadata: { | ||
| tokensCost, | ||
| toolCallCount: toolSequence.length, | ||
| retryCount, | ||
| created: new Date().toISOString(), | ||
| uses: 0, | ||
| }, | ||
| }; | ||
| addToArchive(solution); | ||
| } | ||
| //# sourceMappingURL=quality-diversity.js.map |
| {"version":3,"file":"quality-diversity.js","sourceRoot":"","sources":["../src/quality-diversity.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,iFAAiF;AACjF,oFAAoF;AACpF,uDAAuD;AACvD,EAAE;AACF,mBAAmB;AACnB,6EAA6E;AAC7E,4EAA4E;AAC5E,4BAA4B;AAC5B,EAAE;AACF,wFAAwF;AACxF,iFAAiF;AACjF,EAAE;AACF,qEAAqE;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;AACpD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;AAgCvD,oEAAoE;AAEpE,MAAM,eAAe,GAAG,CAAC,CAAA,CAAE,OAAO;AAClC,MAAM,UAAU,GAAG,CAAC,CAAA,CAAO,OAAO;AAClC,MAAM,WAAW,GAAG,eAAe,GAAG,UAAU,CAAA;AAEhD,oEAAoE;AAEpE,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACvE,CAAC;AAED,SAAS,QAAQ,CAAI,IAAY,EAAE,QAAW;IAC5C,SAAS,EAAE,CAAA;IACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAA;IACtC,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,QAAQ,CAAA;IAAC,CAAC;AAClF,CAAC;AAED,sEAAsE;AACtE,IAAI,YAAY,GAA0B,IAAI,CAAA;AAC9C,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B,SAAS,WAAW;IAClB,SAAS,EAAE,CAAA;IACX,IAAI,YAAY;QAAE,YAAY,CAAC,YAAY,CAAC,CAAA;IAC5C,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;QAC7B,YAAY,GAAG,IAAI,CAAA;QACnB,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE;YAC7D,0EAA0E;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,iBAAiB,CAAC,CAAA;AACvB,CAAC;AAOD,SAAS,SAAS;IAChB,MAAM,IAAI,GAAgB,EAAE,CAAA;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,IAAI,OAAO,GAAgB,SAAS,EAAE,CAAA;AAEtC,oEAAoE;AAEpE;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,QAAQ,CAAqB,YAAY,EAAE,IAAI,CAAC,CAAA;IAC5D,IACE,GAAG;QACH,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAClB,GAAG,CAAC,MAAM,KAAK,eAAe;QAC9B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,EACjE,CAAC;QACD,OAAO,GAAG,GAAG,CAAA;IACf,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,SAAS,EAAE,CAAA;IACvB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,YAAsB,EACtB,UAAkB;IAElB,kCAAkC;IAClC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAA;IACrC,IAAI,UAAkB,CAAA;IACtB,IAAI,SAAS,KAAK,CAAC;QAAE,UAAU,GAAG,CAAC,CAAA;SAC9B,IAAI,SAAS,KAAK,CAAC;QAAE,UAAU,GAAG,CAAC,CAAA;SACnC,IAAI,SAAS,IAAI,CAAC;QAAE,UAAU,GAAG,CAAC,CAAA;SAClC,IAAI,SAAS,IAAI,CAAC;QAAE,UAAU,GAAG,CAAC,CAAA;;QAClC,UAAU,GAAG,CAAC,CAAA;IAEnB,iCAAiC;IACjC,IAAI,KAAa,CAAA;IACjB,IAAI,UAAU,GAAG,GAAG;QAAE,KAAK,GAAG,CAAC,CAAA;SAC1B,IAAI,UAAU,GAAG,GAAG;QAAE,KAAK,GAAG,CAAC,CAAA;SAC/B,IAAI,UAAU,GAAG,IAAI;QAAE,KAAK,GAAG,CAAC,CAAA;;QAChC,KAAK,GAAG,CAAC,CAAA;IAEd,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,UAA+B,EAC/B,WAAmB,EACnB,UAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;IACzD,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;IAErD,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,UAAU,CAAA;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,QAAuB;IAClD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAA;IAEnC,eAAe;IACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU;QAAE,OAAO,KAAK,CAAA;IAE3E,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7B,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;QACxB,WAAW,EAAE,CAAA;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,cAAsB,EACtB,aAAqB;IAErB,IACE,cAAc,GAAG,CAAC,IAAI,cAAc,IAAI,eAAe;QACvD,aAAa,GAAG,CAAC,IAAI,aAAa,IAAI,UAAU,EAChD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,CAAA;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,YAAsB;IAEtB,uFAAuF;IACvF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;IAChE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,CAAA;IACxE,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAoB,EAAE,CAAA;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAA;IACjC,MAAM,UAAU,GAAG,WAAW,GAAG,CAAC;QAChC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,WAAW;QAC7D,CAAC,CAAC,CAAC,CAAA;IACL,MAAM,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAA;IAE1C,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;SACrC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEd,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;IAC1F,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,CAAA;IAExE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACtC,KAAK,CAAC,IAAI,CAAC,gBAAgB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAEzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;YACzD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,WAAW,IAAI,WAAW,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACzG,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAA;IAClC,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAA;gBACzD,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC;oBACrB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;oBACpB,MAAM,EAAE,CAAA;gBACV,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,GAAG,CAAC;QAAE,WAAW,EAAE,CAAA;IAC7B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,oEAAoE;AAEpE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,YAAsB,EACtB,UAA+B,EAC/B,WAAmB,EACnB,UAAkB,EAClB,UAAkB;IAElB,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;IACxE,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;IAEnE,kFAAkF;IAClF,MAAM,QAAQ,GAAG,MAAM;SACpB,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACzB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEf,MAAM,QAAQ,GAAkB;QAC9B,OAAO,EAAE;YACP,MAAM;YACN,YAAY;YACZ,QAAQ;SACT;QACD,OAAO;QACP,WAAW;QACX,QAAQ,EAAE;YACR,UAAU;YACV,aAAa,EAAE,YAAY,CAAC,MAAM;YAClC,UAAU;YACV,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,IAAI,EAAE,CAAC;SACR;KACF,CAAA;IAED,YAAY,CAAC,QAAQ,CAAC,CAAA;AACxB,CAAC"} |
| export declare function registerComfyUITools(): void; | ||
| //# sourceMappingURL=comfyui-plugin.d.ts.map |
| {"version":3,"file":"comfyui-plugin.d.ts","sourceRoot":"","sources":["../../src/tools/comfyui-plugin.ts"],"names":[],"mappings":"AA+MA,wBAAgB,oBAAoB,IAAI,IAAI,CAuW3C"} |
| // K:BOT ComfyUI Plugin — Local AI image generation via ComfyUI | ||
| // Connects to a locally-running ComfyUI instance at http://127.0.0.1:8188 | ||
| // for txt2img, img2img, model listing, and queue management. | ||
| import { readFileSync } from 'node:fs'; | ||
| import { basename } from 'node:path'; | ||
| import { registerTool } from './index.js'; | ||
| const COMFYUI_BASE = 'http://127.0.0.1:8188'; | ||
| /** Build a minimal txt2img workflow for ComfyUI */ | ||
| function buildTxt2ImgWorkflow(opts) { | ||
| return { | ||
| '3': { | ||
| class_type: 'KSampler', | ||
| inputs: { | ||
| seed: opts.seed, | ||
| steps: opts.steps, | ||
| cfg: opts.cfg_scale, | ||
| sampler_name: 'euler', | ||
| scheduler: 'normal', | ||
| denoise: 1.0, | ||
| model: ['4', 0], | ||
| positive: ['6', 0], | ||
| negative: ['7', 0], | ||
| latent_image: ['5', 0], | ||
| }, | ||
| }, | ||
| '4': { | ||
| class_type: 'CheckpointLoaderSimple', | ||
| inputs: { | ||
| ckpt_name: opts.model, | ||
| }, | ||
| }, | ||
| '5': { | ||
| class_type: 'EmptyLatentImage', | ||
| inputs: { | ||
| width: opts.width, | ||
| height: opts.height, | ||
| batch_size: 1, | ||
| }, | ||
| }, | ||
| '6': { | ||
| class_type: 'CLIPTextEncode', | ||
| inputs: { | ||
| text: opts.prompt, | ||
| clip: ['4', 1], | ||
| }, | ||
| }, | ||
| '7': { | ||
| class_type: 'CLIPTextEncode', | ||
| inputs: { | ||
| text: opts.negative_prompt, | ||
| clip: ['4', 1], | ||
| }, | ||
| }, | ||
| '8': { | ||
| class_type: 'VAEDecode', | ||
| inputs: { | ||
| samples: ['3', 0], | ||
| vae: ['4', 2], | ||
| }, | ||
| }, | ||
| '9': { | ||
| class_type: 'SaveImage', | ||
| inputs: { | ||
| filename_prefix: 'kbot', | ||
| images: ['8', 0], | ||
| }, | ||
| }, | ||
| }; | ||
| } | ||
| /** Build an img2img workflow for ComfyUI */ | ||
| function buildImg2ImgWorkflow(opts) { | ||
| return { | ||
| '3': { | ||
| class_type: 'KSampler', | ||
| inputs: { | ||
| seed: opts.seed, | ||
| steps: opts.steps, | ||
| cfg: opts.cfg_scale, | ||
| sampler_name: 'euler', | ||
| scheduler: 'normal', | ||
| denoise: opts.denoise, | ||
| model: ['4', 0], | ||
| positive: ['6', 0], | ||
| negative: ['7', 0], | ||
| latent_image: ['10', 0], | ||
| }, | ||
| }, | ||
| '4': { | ||
| class_type: 'CheckpointLoaderSimple', | ||
| inputs: { | ||
| ckpt_name: opts.model, | ||
| }, | ||
| }, | ||
| '6': { | ||
| class_type: 'CLIPTextEncode', | ||
| inputs: { | ||
| text: opts.prompt, | ||
| clip: ['4', 1], | ||
| }, | ||
| }, | ||
| '7': { | ||
| class_type: 'CLIPTextEncode', | ||
| inputs: { | ||
| text: opts.negative_prompt, | ||
| clip: ['4', 1], | ||
| }, | ||
| }, | ||
| '8': { | ||
| class_type: 'VAEDecode', | ||
| inputs: { | ||
| samples: ['3', 0], | ||
| vae: ['4', 2], | ||
| }, | ||
| }, | ||
| '9': { | ||
| class_type: 'SaveImage', | ||
| inputs: { | ||
| filename_prefix: 'kbot', | ||
| images: ['8', 0], | ||
| }, | ||
| }, | ||
| '10': { | ||
| class_type: 'VAEEncode', | ||
| inputs: { | ||
| pixels: ['11', 0], | ||
| vae: ['4', 2], | ||
| }, | ||
| }, | ||
| '11': { | ||
| class_type: 'LoadImage', | ||
| inputs: { | ||
| image: opts.image_name, | ||
| upload: 'image', | ||
| }, | ||
| }, | ||
| }; | ||
| } | ||
| /** Poll ComfyUI history until a prompt completes or times out */ | ||
| async function pollForCompletion(promptId, timeoutMs = 120_000) { | ||
| const start = Date.now(); | ||
| while (Date.now() - start < timeoutMs) { | ||
| await new Promise(resolve => setTimeout(resolve, 1000)); | ||
| try { | ||
| const res = await fetch(`${COMFYUI_BASE}/history/${promptId}`, { | ||
| signal: AbortSignal.timeout(5000), | ||
| }); | ||
| if (!res.ok) | ||
| continue; | ||
| const history = await res.json(); | ||
| const entry = history[promptId]; | ||
| if (entry) { | ||
| return entry; | ||
| } | ||
| } | ||
| catch { | ||
| // Connection error or timeout — keep polling | ||
| } | ||
| } | ||
| throw new Error(`ComfyUI generation timed out after ${timeoutMs / 1000}s`); | ||
| } | ||
| /** Extract output filenames from a completed history entry */ | ||
| function extractOutputFiles(historyEntry) { | ||
| const filenames = []; | ||
| try { | ||
| const outputs = historyEntry.outputs; | ||
| for (const nodeId of Object.keys(outputs || {})) { | ||
| const nodeOutput = outputs[nodeId]; | ||
| if (nodeOutput?.images) { | ||
| for (const img of nodeOutput.images) { | ||
| if (img.filename) { | ||
| const subfolder = img.subfolder || ''; | ||
| const type = img.type || 'output'; | ||
| filenames.push(`${img.filename} (subfolder: ${subfolder}, type: ${type})`); | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| catch { | ||
| // Malformed output — return empty | ||
| } | ||
| return filenames; | ||
| } | ||
| export function registerComfyUITools() { | ||
| // 1. comfyui_status — Check if ComfyUI is running | ||
| registerTool({ | ||
| name: 'comfyui_status', | ||
| description: 'Check if a local ComfyUI instance is running and return system stats including GPU info and queue length. ComfyUI must be running at http://127.0.0.1:8188.', | ||
| parameters: {}, | ||
| tier: 'free', | ||
| async execute() { | ||
| try { | ||
| const res = await fetch(`${COMFYUI_BASE}/system_stats`, { | ||
| signal: AbortSignal.timeout(5000), | ||
| }); | ||
| if (!res.ok) { | ||
| return `Error: ComfyUI responded with HTTP ${res.status}`; | ||
| } | ||
| const stats = await res.json(); | ||
| const parts = ['**ComfyUI is running**\n']; | ||
| // System info | ||
| const system = stats.system; | ||
| if (system) { | ||
| parts.push(`**System**: OS=${system.os || 'unknown'}, Python=${system.python_version || 'unknown'}`); | ||
| if (system.embedded_python !== undefined) | ||
| parts.push(`Embedded Python: ${system.embedded_python}`); | ||
| } | ||
| // GPU/device info | ||
| const devices = stats.devices; | ||
| if (devices && devices.length > 0) { | ||
| parts.push('\n**Devices:**'); | ||
| for (const dev of devices) { | ||
| const name = dev.name || 'unknown'; | ||
| const type = dev.type || 'unknown'; | ||
| const vramTotal = typeof dev.vram_total === 'number' ? `${(dev.vram_total / (1024 * 1024 * 1024)).toFixed(1)}GB` : 'unknown'; | ||
| const vramFree = typeof dev.vram_free === 'number' ? `${(dev.vram_free / (1024 * 1024 * 1024)).toFixed(1)}GB` : 'unknown'; | ||
| parts.push(`- ${name} (${type}): VRAM ${vramFree} free / ${vramTotal} total`); | ||
| } | ||
| } | ||
| return parts.join('\n'); | ||
| } | ||
| catch (err) { | ||
| return `Error: ComfyUI is not reachable at ${COMFYUI_BASE}. Make sure ComfyUI is running locally.\n${err instanceof Error ? err.message : String(err)}`; | ||
| } | ||
| }, | ||
| }); | ||
| // 2. comfyui_generate — Text-to-image generation | ||
| registerTool({ | ||
| name: 'comfyui_generate', | ||
| description: 'Generate an image from a text prompt using ComfyUI (txt2img). Builds and queues a Stable Diffusion workflow, polls until completion, and returns the output filename. ComfyUI must be running locally.', | ||
| parameters: { | ||
| prompt: { type: 'string', description: 'The text prompt describing the image to generate', required: true }, | ||
| negative_prompt: { type: 'string', description: 'Things to exclude from the image (default: empty)' }, | ||
| width: { type: 'number', description: 'Image width in pixels (default: 512)' }, | ||
| height: { type: 'number', description: 'Image height in pixels (default: 512)' }, | ||
| steps: { type: 'number', description: 'Number of sampling steps (default: 20)' }, | ||
| cfg_scale: { type: 'number', description: 'CFG scale / guidance strength (default: 7)' }, | ||
| seed: { type: 'number', description: 'Random seed for reproducibility (default: random)' }, | ||
| model: { type: 'string', description: 'Checkpoint model name (default: v1-5-pruned-emaonly.safetensors)' }, | ||
| }, | ||
| tier: 'free', | ||
| timeout: 180_000, // 3 min for generation | ||
| async execute(args) { | ||
| const prompt = String(args.prompt || ''); | ||
| if (!prompt) | ||
| return 'Error: prompt is required'; | ||
| const negative_prompt = String(args.negative_prompt || ''); | ||
| const width = typeof args.width === 'number' ? args.width : 512; | ||
| const height = typeof args.height === 'number' ? args.height : 512; | ||
| const steps = typeof args.steps === 'number' ? args.steps : 20; | ||
| const cfg_scale = typeof args.cfg_scale === 'number' ? args.cfg_scale : 7; | ||
| const seed = typeof args.seed === 'number' ? args.seed : Math.floor(Math.random() * 2147483647); | ||
| const model = String(args.model || 'v1-5-pruned-emaonly.safetensors'); | ||
| const workflow = buildTxt2ImgWorkflow({ prompt, negative_prompt, width, height, steps, cfg_scale, seed, model }); | ||
| const clientId = crypto.randomUUID(); | ||
| // Queue the prompt | ||
| let promptId; | ||
| try { | ||
| const res = await fetch(`${COMFYUI_BASE}/prompt`, { | ||
| method: 'POST', | ||
| headers: { 'Content-Type': 'application/json' }, | ||
| body: JSON.stringify({ prompt: workflow, client_id: clientId }), | ||
| signal: AbortSignal.timeout(10000), | ||
| }); | ||
| if (!res.ok) { | ||
| const errorText = await res.text(); | ||
| return `Error: ComfyUI rejected the workflow (HTTP ${res.status}): ${errorText}`; | ||
| } | ||
| const data = await res.json(); | ||
| promptId = String(data.prompt_id || ''); | ||
| if (!promptId) | ||
| return 'Error: No prompt_id returned from ComfyUI'; | ||
| } | ||
| catch (err) { | ||
| return `Error: Could not connect to ComfyUI at ${COMFYUI_BASE}.\n${err instanceof Error ? err.message : String(err)}`; | ||
| } | ||
| // Poll for completion | ||
| try { | ||
| const historyEntry = await pollForCompletion(promptId); | ||
| const files = extractOutputFiles(historyEntry); | ||
| if (files.length === 0) { | ||
| return `Generation completed (prompt_id: ${promptId}) but no output images were found. Check ComfyUI logs for errors.`; | ||
| } | ||
| const parts = [ | ||
| '**Image generated successfully**\n', | ||
| `**Prompt ID**: ${promptId}`, | ||
| `**Seed**: ${seed}`, | ||
| `**Settings**: ${width}x${height}, ${steps} steps, CFG ${cfg_scale}`, | ||
| `**Model**: ${model}`, | ||
| `\n**Output files**:`, | ||
| ...files.map(f => `- ${f}`), | ||
| `\nView at: ${COMFYUI_BASE}/view?filename=<filename>&type=output`, | ||
| ]; | ||
| return parts.join('\n'); | ||
| } | ||
| catch (err) { | ||
| return `Error during generation: ${err instanceof Error ? err.message : String(err)}\nPrompt ID: ${promptId}`; | ||
| } | ||
| }, | ||
| }); | ||
| // 3. comfyui_img2img — Image-to-image generation | ||
| registerTool({ | ||
| name: 'comfyui_img2img', | ||
| description: 'Generate an image from an existing source image and text prompt using ComfyUI (img2img). Uploads the source image to ComfyUI, then runs a Stable Diffusion workflow. ComfyUI must be running locally.', | ||
| parameters: { | ||
| image_path: { type: 'string', description: 'Absolute path to the source image file', required: true }, | ||
| prompt: { type: 'string', description: 'The text prompt describing the desired output', required: true }, | ||
| negative_prompt: { type: 'string', description: 'Things to exclude from the image (default: empty)' }, | ||
| width: { type: 'number', description: 'Output image width in pixels (default: 512)' }, | ||
| height: { type: 'number', description: 'Output image height in pixels (default: 512)' }, | ||
| steps: { type: 'number', description: 'Number of sampling steps (default: 20)' }, | ||
| cfg_scale: { type: 'number', description: 'CFG scale / guidance strength (default: 7)' }, | ||
| denoise: { type: 'number', description: 'Denoise strength 0.0-1.0 — lower preserves more of original (default: 0.75)' }, | ||
| seed: { type: 'number', description: 'Random seed for reproducibility (default: random)' }, | ||
| model: { type: 'string', description: 'Checkpoint model name (default: v1-5-pruned-emaonly.safetensors)' }, | ||
| }, | ||
| tier: 'free', | ||
| timeout: 180_000, | ||
| async execute(args) { | ||
| const imagePath = String(args.image_path || ''); | ||
| const prompt = String(args.prompt || ''); | ||
| if (!imagePath) | ||
| return 'Error: image_path is required'; | ||
| if (!prompt) | ||
| return 'Error: prompt is required'; | ||
| const negative_prompt = String(args.negative_prompt || ''); | ||
| const width = typeof args.width === 'number' ? args.width : 512; | ||
| const height = typeof args.height === 'number' ? args.height : 512; | ||
| const steps = typeof args.steps === 'number' ? args.steps : 20; | ||
| const cfg_scale = typeof args.cfg_scale === 'number' ? args.cfg_scale : 7; | ||
| const denoise = typeof args.denoise === 'number' ? args.denoise : 0.75; | ||
| const seed = typeof args.seed === 'number' ? args.seed : Math.floor(Math.random() * 2147483647); | ||
| const model = String(args.model || 'v1-5-pruned-emaonly.safetensors'); | ||
| // Read and upload the source image | ||
| let imageData; | ||
| try { | ||
| imageData = readFileSync(imagePath); | ||
| } | ||
| catch (err) { | ||
| return `Error: Could not read image file: ${imagePath}\n${err instanceof Error ? err.message : String(err)}`; | ||
| } | ||
| const filename = basename(imagePath); | ||
| // Determine MIME type from extension | ||
| const ext = filename.split('.').pop()?.toLowerCase() || 'png'; | ||
| const mimeMap = { png: 'image/png', jpg: 'image/jpeg', jpeg: 'image/jpeg', webp: 'image/webp', bmp: 'image/bmp', gif: 'image/gif' }; | ||
| const mimeType = mimeMap[ext] || 'image/png'; | ||
| // Build multipart form body manually (no FormData dependency issues) | ||
| const boundary = `----KBotBoundary${Date.now()}`; | ||
| const header = [ | ||
| `--${boundary}`, | ||
| `Content-Disposition: form-data; name="image"; filename="${filename}"`, | ||
| `Content-Type: ${mimeType}`, | ||
| '', | ||
| '', | ||
| ].join('\r\n'); | ||
| const footer = `\r\n--${boundary}--\r\n`; | ||
| const headerBuf = Buffer.from(header, 'utf-8'); | ||
| const footerBuf = Buffer.from(footer, 'utf-8'); | ||
| const body = Buffer.concat([headerBuf, imageData, footerBuf]); | ||
| let uploadedName; | ||
| try { | ||
| const res = await fetch(`${COMFYUI_BASE}/upload/image`, { | ||
| method: 'POST', | ||
| headers: { | ||
| 'Content-Type': `multipart/form-data; boundary=${boundary}`, | ||
| }, | ||
| body, | ||
| signal: AbortSignal.timeout(30000), | ||
| }); | ||
| if (!res.ok) { | ||
| const errorText = await res.text(); | ||
| return `Error: Failed to upload image to ComfyUI (HTTP ${res.status}): ${errorText}`; | ||
| } | ||
| const data = await res.json(); | ||
| uploadedName = String(data.name || filename); | ||
| } | ||
| catch (err) { | ||
| return `Error: Could not connect to ComfyUI for image upload.\n${err instanceof Error ? err.message : String(err)}`; | ||
| } | ||
| // Build and queue the img2img workflow | ||
| const workflow = buildImg2ImgWorkflow({ | ||
| prompt, negative_prompt, width, height, steps, cfg_scale, seed, model, | ||
| image_name: uploadedName, | ||
| denoise, | ||
| }); | ||
| const clientId = crypto.randomUUID(); | ||
| let promptId; | ||
| try { | ||
| const res = await fetch(`${COMFYUI_BASE}/prompt`, { | ||
| method: 'POST', | ||
| headers: { 'Content-Type': 'application/json' }, | ||
| body: JSON.stringify({ prompt: workflow, client_id: clientId }), | ||
| signal: AbortSignal.timeout(10000), | ||
| }); | ||
| if (!res.ok) { | ||
| const errorText = await res.text(); | ||
| return `Error: ComfyUI rejected the img2img workflow (HTTP ${res.status}): ${errorText}`; | ||
| } | ||
| const data = await res.json(); | ||
| promptId = String(data.prompt_id || ''); | ||
| if (!promptId) | ||
| return 'Error: No prompt_id returned from ComfyUI'; | ||
| } | ||
| catch (err) { | ||
| return `Error: Could not connect to ComfyUI at ${COMFYUI_BASE}.\n${err instanceof Error ? err.message : String(err)}`; | ||
| } | ||
| // Poll for completion | ||
| try { | ||
| const historyEntry = await pollForCompletion(promptId); | ||
| const files = extractOutputFiles(historyEntry); | ||
| if (files.length === 0) { | ||
| return `Generation completed (prompt_id: ${promptId}) but no output images were found. Check ComfyUI logs.`; | ||
| } | ||
| const parts = [ | ||
| '**Img2Img generated successfully**\n', | ||
| `**Prompt ID**: ${promptId}`, | ||
| `**Source**: ${filename} (uploaded as ${uploadedName})`, | ||
| `**Seed**: ${seed}`, | ||
| `**Settings**: ${width}x${height}, ${steps} steps, CFG ${cfg_scale}, denoise ${denoise}`, | ||
| `**Model**: ${model}`, | ||
| `\n**Output files**:`, | ||
| ...files.map(f => `- ${f}`), | ||
| `\nView at: ${COMFYUI_BASE}/view?filename=<filename>&type=output`, | ||
| ]; | ||
| return parts.join('\n'); | ||
| } | ||
| catch (err) { | ||
| return `Error during img2img generation: ${err instanceof Error ? err.message : String(err)}\nPrompt ID: ${promptId}`; | ||
| } | ||
| }, | ||
| }); | ||
| // 4. comfyui_list_models — List available checkpoint models | ||
| registerTool({ | ||
| name: 'comfyui_list_models', | ||
| description: 'List all available Stable Diffusion checkpoint models installed in ComfyUI. Useful for choosing which model to use with comfyui_generate.', | ||
| parameters: {}, | ||
| tier: 'free', | ||
| async execute() { | ||
| try { | ||
| const res = await fetch(`${COMFYUI_BASE}/object_info/CheckpointLoaderSimple`, { | ||
| signal: AbortSignal.timeout(10000), | ||
| }); | ||
| if (!res.ok) { | ||
| return `Error: ComfyUI responded with HTTP ${res.status}`; | ||
| } | ||
| const data = await res.json(); | ||
| // Navigate: CheckpointLoaderSimple → input → required → ckpt_name → [0] (list of model names) | ||
| const node = data.CheckpointLoaderSimple; | ||
| const input = node?.input; | ||
| const required = input?.required; | ||
| const ckptNameDef = required?.ckpt_name; | ||
| const modelList = ckptNameDef?.[0]; | ||
| if (!modelList || modelList.length === 0) { | ||
| return 'No checkpoint models found. Make sure models are placed in ComfyUI\'s models/checkpoints/ directory.'; | ||
| } | ||
| const parts = [`**Available Checkpoint Models** (${modelList.length}):\n`]; | ||
| for (const m of modelList) { | ||
| parts.push(`- ${m}`); | ||
| } | ||
| return parts.join('\n'); | ||
| } | ||
| catch (err) { | ||
| return `Error: Could not connect to ComfyUI at ${COMFYUI_BASE}.\n${err instanceof Error ? err.message : String(err)}`; | ||
| } | ||
| }, | ||
| }); | ||
| // 5. comfyui_queue — Show current queue status | ||
| registerTool({ | ||
| name: 'comfyui_queue', | ||
| description: 'Show the current ComfyUI queue status — how many prompts are running and how many are pending.', | ||
| parameters: {}, | ||
| tier: 'free', | ||
| async execute() { | ||
| try { | ||
| const res = await fetch(`${COMFYUI_BASE}/queue`, { | ||
| signal: AbortSignal.timeout(5000), | ||
| }); | ||
| if (!res.ok) { | ||
| return `Error: ComfyUI responded with HTTP ${res.status}`; | ||
| } | ||
| const data = await res.json(); | ||
| const running = data.queue_running; | ||
| const pending = data.queue_pending; | ||
| const runningCount = running?.length ?? 0; | ||
| const pendingCount = pending?.length ?? 0; | ||
| const parts = [ | ||
| '**ComfyUI Queue Status**\n', | ||
| `**Running**: ${runningCount} prompt${runningCount !== 1 ? 's' : ''}`, | ||
| `**Pending**: ${pendingCount} prompt${pendingCount !== 1 ? 's' : ''}`, | ||
| ]; | ||
| if (runningCount === 0 && pendingCount === 0) { | ||
| parts.push('\nQueue is empty — ready for new generations.'); | ||
| } | ||
| // Show details for running prompts | ||
| if (running && running.length > 0) { | ||
| parts.push('\n**Currently running:**'); | ||
| for (const item of running) { | ||
| if (Array.isArray(item) && item.length >= 2) { | ||
| parts.push(`- Prompt ID: ${item[1]}`); | ||
| } | ||
| } | ||
| } | ||
| // Show details for pending prompts | ||
| if (pending && pending.length > 0) { | ||
| parts.push('\n**Pending:**'); | ||
| for (const item of pending.slice(0, 10)) { | ||
| if (Array.isArray(item) && item.length >= 2) { | ||
| parts.push(`- Prompt ID: ${item[1]}`); | ||
| } | ||
| } | ||
| if (pending.length > 10) { | ||
| parts.push(`- ... and ${pending.length - 10} more`); | ||
| } | ||
| } | ||
| return parts.join('\n'); | ||
| } | ||
| catch (err) { | ||
| return `Error: Could not connect to ComfyUI at ${COMFYUI_BASE}.\n${err instanceof Error ? err.message : String(err)}`; | ||
| } | ||
| }, | ||
| }); | ||
| } | ||
| //# sourceMappingURL=comfyui-plugin.js.map |
| {"version":3,"file":"comfyui-plugin.js","sourceRoot":"","sources":["../../src/tools/comfyui-plugin.ts"],"names":[],"mappings":"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"} |
| export {}; | ||
| //# sourceMappingURL=creative.test.d.ts.map |
| {"version":3,"file":"creative.test.d.ts","sourceRoot":"","sources":["../../src/tools/creative.test.ts"],"names":[],"mappings":""} |
| // K:BOT Creative Tools Tests | ||
| import { describe, it, expect, afterEach } from 'vitest'; | ||
| import { existsSync, readFileSync, rmSync, mkdirSync } from 'node:fs'; | ||
| import { join } from 'node:path'; | ||
| import { tmpdir } from 'node:os'; | ||
| // Import the tool registration (so we can test via executeTool) | ||
| import { executeTool, getTool } from './index.js'; | ||
| // We need to import and call registerCreativeTools to populate the registry | ||
| import { registerCreativeTools } from './creative.js'; | ||
| // Register once — idempotent in vitest | ||
| registerCreativeTools(); | ||
| // Temp directory for file output tests | ||
| const TEST_DIR = join(tmpdir(), 'kbot-creative-test-' + Date.now()); | ||
| mkdirSync(TEST_DIR, { recursive: true }); | ||
| afterEach(() => { | ||
| // Clean up is handled at the end | ||
| }); | ||
| // Clean up temp dir after all tests | ||
| import { afterAll } from 'vitest'; | ||
| afterAll(() => { | ||
| try { | ||
| rmSync(TEST_DIR, { recursive: true, force: true }); | ||
| } | ||
| catch { } | ||
| }); | ||
| describe('Creative Tools Registration', () => { | ||
| it('registers generate_art tool', () => { | ||
| const tool = getTool('generate_art'); | ||
| expect(tool).toBeTruthy(); | ||
| expect(tool.tier).toBe('free'); | ||
| expect(tool.parameters.description.required).toBe(true); | ||
| expect(tool.parameters.output_path.required).toBe(true); | ||
| }); | ||
| it('registers generate_shader tool', () => { | ||
| const tool = getTool('generate_shader'); | ||
| expect(tool).toBeTruthy(); | ||
| expect(tool.tier).toBe('free'); | ||
| expect(tool.parameters.description.required).toBe(true); | ||
| }); | ||
| it('registers generate_music_pattern tool', () => { | ||
| const tool = getTool('generate_music_pattern'); | ||
| expect(tool).toBeTruthy(); | ||
| expect(tool.tier).toBe('free'); | ||
| expect(tool.parameters.format.required).toBe(true); | ||
| }); | ||
| it('registers generate_svg tool', () => { | ||
| const tool = getTool('generate_svg'); | ||
| expect(tool).toBeTruthy(); | ||
| expect(tool.tier).toBe('free'); | ||
| }); | ||
| it('registers evolve_design tool', () => { | ||
| const tool = getTool('evolve_design'); | ||
| expect(tool).toBeTruthy(); | ||
| expect(tool.tier).toBe('free'); | ||
| expect(tool.parameters.source_path.required).toBe(true); | ||
| }); | ||
| }); | ||
| describe('generate_art', () => { | ||
| it('generates valid HTML with p5.js', async () => { | ||
| const outPath = join(TEST_DIR, 'art-test.html'); | ||
| const result = await executeTool({ | ||
| id: 'art-1', | ||
| name: 'generate_art', | ||
| arguments: { description: 'ocean waves', style: 'abstract', output_path: outPath }, | ||
| }); | ||
| expect(result.error).toBeUndefined(); | ||
| expect(result.result).toContain('Generated p5.js art'); | ||
| expect(existsSync(outPath)).toBe(true); | ||
| const html = readFileSync(outPath, 'utf-8'); | ||
| expect(html).toContain('<!DOCTYPE html>'); | ||
| expect(html).toContain('p5@1.11.3'); | ||
| expect(html).toContain('setup()'); | ||
| expect(html).toContain('ocean waves'); | ||
| }); | ||
| it('supports all 5 styles', async () => { | ||
| const styles = ['abstract', 'geometric', 'organic', 'fractal', 'noise']; | ||
| for (const style of styles) { | ||
| const outPath = join(TEST_DIR, `art-${style}.html`); | ||
| const result = await executeTool({ | ||
| id: `art-${style}`, | ||
| name: 'generate_art', | ||
| arguments: { description: 'test', style, output_path: outPath }, | ||
| }); | ||
| expect(result.error).toBeUndefined(); | ||
| expect(existsSync(outPath)).toBe(true); | ||
| } | ||
| }); | ||
| it('rejects invalid style', async () => { | ||
| const result = await executeTool({ | ||
| id: 'art-bad', | ||
| name: 'generate_art', | ||
| arguments: { description: 'test', style: 'cubism', output_path: join(TEST_DIR, 'bad.html') }, | ||
| }); | ||
| expect(result.result).toContain('Invalid style'); | ||
| }); | ||
| it('generates deterministic output for same description', async () => { | ||
| const path1 = join(TEST_DIR, 'det-1.html'); | ||
| const path2 = join(TEST_DIR, 'det-2.html'); | ||
| await executeTool({ | ||
| id: 'det-1', | ||
| name: 'generate_art', | ||
| arguments: { description: 'deterministic test', style: 'abstract', output_path: path1 }, | ||
| }); | ||
| await executeTool({ | ||
| id: 'det-2', | ||
| name: 'generate_art', | ||
| arguments: { description: 'deterministic test', style: 'abstract', output_path: path2 }, | ||
| }); | ||
| const a = readFileSync(path1, 'utf-8'); | ||
| const b = readFileSync(path2, 'utf-8'); | ||
| expect(a).toBe(b); | ||
| }); | ||
| }); | ||
| describe('generate_shader', () => { | ||
| it('generates valid GLSL code', async () => { | ||
| const outPath = join(TEST_DIR, 'shader-test.glsl'); | ||
| const result = await executeTool({ | ||
| id: 'shader-1', | ||
| name: 'generate_shader', | ||
| arguments: { description: 'molten lava', output_path: outPath }, | ||
| }); | ||
| expect(result.error).toBeUndefined(); | ||
| expect(result.result).toContain('Generated GLSL shader'); | ||
| const glsl = readFileSync(outPath, 'utf-8'); | ||
| expect(glsl).toContain('mainImage'); | ||
| expect(glsl).toContain('fragColor'); | ||
| expect(glsl).toContain('iResolution'); | ||
| expect(glsl).toContain('molten lava'); | ||
| }); | ||
| it('includes utility functions', async () => { | ||
| const outPath = join(TEST_DIR, 'shader-utils.glsl'); | ||
| await executeTool({ | ||
| id: 'shader-2', | ||
| name: 'generate_shader', | ||
| arguments: { description: 'test shader', output_path: outPath }, | ||
| }); | ||
| const glsl = readFileSync(outPath, 'utf-8'); | ||
| expect(glsl).toContain('fbm'); | ||
| expect(glsl).toContain('noise'); | ||
| expect(glsl).toContain('hash'); | ||
| }); | ||
| }); | ||
| describe('generate_music_pattern', () => { | ||
| it('generates Sonic Pi code', async () => { | ||
| const outPath = join(TEST_DIR, 'music-test.rb'); | ||
| const result = await executeTool({ | ||
| id: 'music-1', | ||
| name: 'generate_music_pattern', | ||
| arguments: { description: 'chill vibes', genre: 'ambient', format: 'sonic-pi', output_path: outPath }, | ||
| }); | ||
| expect(result.error).toBeUndefined(); | ||
| expect(result.result).toContain('Sonic Pi'); | ||
| const code = readFileSync(outPath, 'utf-8'); | ||
| expect(code).toContain('use_bpm'); | ||
| expect(code).toContain('live_loop'); | ||
| expect(code).toContain('use_synth'); | ||
| }); | ||
| it('generates JSON pattern', async () => { | ||
| const outPath = join(TEST_DIR, 'music-test.json'); | ||
| const result = await executeTool({ | ||
| id: 'music-2', | ||
| name: 'generate_music_pattern', | ||
| arguments: { description: 'jazz tune', genre: 'jazz', format: 'json', output_path: outPath }, | ||
| }); | ||
| expect(result.error).toBeUndefined(); | ||
| const data = JSON.parse(readFileSync(outPath, 'utf-8')); | ||
| expect(data.meta).toBeTruthy(); | ||
| expect(data.meta.genre).toBe('jazz'); | ||
| expect(data.meta.tempo).toBeGreaterThan(0); | ||
| expect(data.tracks).toBeInstanceOf(Array); | ||
| expect(data.tracks.length).toBe(3); // melody, bass, drums | ||
| expect(data.tracks[0].notes.length).toBeGreaterThan(0); | ||
| }); | ||
| it('supports all genres', async () => { | ||
| const genres = ['ambient', 'electronic', 'jazz', 'classical', 'hiphop']; | ||
| for (const genre of genres) { | ||
| const outPath = join(TEST_DIR, `music-${genre}.json`); | ||
| const result = await executeTool({ | ||
| id: `music-${genre}`, | ||
| name: 'generate_music_pattern', | ||
| arguments: { description: 'test', genre, format: 'json', output_path: outPath }, | ||
| }); | ||
| expect(result.error).toBeUndefined(); | ||
| const data = JSON.parse(readFileSync(outPath, 'utf-8')); | ||
| expect(data.meta.genre).toBe(genre); | ||
| } | ||
| }); | ||
| it('rejects invalid format', async () => { | ||
| const result = await executeTool({ | ||
| id: 'music-bad', | ||
| name: 'generate_music_pattern', | ||
| arguments: { description: 'test', format: 'midi', output_path: join(TEST_DIR, 'bad.mid') }, | ||
| }); | ||
| expect(result.result).toContain('Invalid format'); | ||
| }); | ||
| }); | ||
| describe('generate_svg', () => { | ||
| it('generates valid SVG', async () => { | ||
| const outPath = join(TEST_DIR, 'svg-test.svg'); | ||
| const result = await executeTool({ | ||
| id: 'svg-1', | ||
| name: 'generate_svg', | ||
| arguments: { description: 'flowing waves', output_path: outPath }, | ||
| }); | ||
| expect(result.error).toBeUndefined(); | ||
| expect(result.result).toContain('Generated SVG art'); | ||
| expect(result.result).toContain('800x800'); | ||
| const svg = readFileSync(outPath, 'utf-8'); | ||
| expect(svg).toContain('<?xml'); | ||
| expect(svg).toContain('<svg'); | ||
| expect(svg).toContain('xmlns="http://www.w3.org/2000/svg"'); | ||
| expect(svg).toContain('</svg>'); | ||
| }); | ||
| it('respects custom dimensions', async () => { | ||
| const outPath = join(TEST_DIR, 'svg-custom.svg'); | ||
| const result = await executeTool({ | ||
| id: 'svg-2', | ||
| name: 'generate_svg', | ||
| arguments: { description: 'custom size', width: 400, height: 300, output_path: outPath }, | ||
| }); | ||
| expect(result.error).toBeUndefined(); | ||
| expect(result.result).toContain('400x300'); | ||
| const svg = readFileSync(outPath, 'utf-8'); | ||
| expect(svg).toContain('width="400"'); | ||
| expect(svg).toContain('height="300"'); | ||
| }); | ||
| it('rejects invalid dimensions', async () => { | ||
| const result = await executeTool({ | ||
| id: 'svg-bad', | ||
| name: 'generate_svg', | ||
| arguments: { description: 'test', width: 5, height: 800, output_path: join(TEST_DIR, 'bad.svg') }, | ||
| }); | ||
| expect(result.result).toContain('between 10 and 10000'); | ||
| }); | ||
| }); | ||
| describe('evolve_design', () => { | ||
| it('generates mutations from a source file', async () => { | ||
| // Create a source file with some design content | ||
| const sourcePath = join(TEST_DIR, 'source.svg'); | ||
| const sourceContent = `<svg viewBox="0 0 100 100"> | ||
| <circle cx="50" cy="50" r="30" fill="#FF0000" opacity="0.8"/> | ||
| <rect x="10" y="10" width="80" height="80" fill="hsl(200, 50%, 50%)"/> | ||
| </svg>`; | ||
| const { writeFileSync } = await import('node:fs'); | ||
| writeFileSync(sourcePath, sourceContent); | ||
| const outDir = join(TEST_DIR, 'evolved'); | ||
| const result = await executeTool({ | ||
| id: 'evolve-1', | ||
| name: 'evolve_design', | ||
| arguments: { source_path: sourcePath, mutations: 3, output_dir: outDir }, | ||
| }); | ||
| expect(result.error).toBeUndefined(); | ||
| expect(result.result).toContain('Evolved 3 variants'); | ||
| // Check variants exist and are different | ||
| for (let i = 1; i <= 3; i++) { | ||
| const variantPath = join(outDir, `source_variant_${i}.svg`); | ||
| expect(existsSync(variantPath)).toBe(true); | ||
| } | ||
| }); | ||
| it('returns error for missing source file', async () => { | ||
| const result = await executeTool({ | ||
| id: 'evolve-bad', | ||
| name: 'evolve_design', | ||
| arguments: { source_path: '/nonexistent/file.svg', output_dir: TEST_DIR }, | ||
| }); | ||
| expect(result.result).toContain('not found'); | ||
| }); | ||
| it('caps mutations at 50', async () => { | ||
| const sourcePath = join(TEST_DIR, 'cap-source.html'); | ||
| const { writeFileSync } = await import('node:fs'); | ||
| writeFileSync(sourcePath, '<p>test 42</p>'); | ||
| const outDir = join(TEST_DIR, 'capped'); | ||
| const result = await executeTool({ | ||
| id: 'evolve-cap', | ||
| name: 'evolve_design', | ||
| arguments: { source_path: sourcePath, mutations: 100, output_dir: outDir }, | ||
| }); | ||
| expect(result.result).toContain('Evolved 50 variants'); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=creative.test.js.map |
| {"version":3,"file":"creative.test.js","sourceRoot":"","sources":["../../src/tools/creative.test.ts"],"names":[],"mappings":"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"} |
| export declare function registerMagentaTools(): void; | ||
| //# sourceMappingURL=magenta-plugin.d.ts.map |
| {"version":3,"file":"magenta-plugin.d.ts","sourceRoot":"","sources":["../../src/tools/magenta-plugin.ts"],"names":[],"mappings":"AAiUA,wBAAgB,oBAAoB,IAAI,IAAI,CA2K3C"} |
| // K:BOT Magenta.js Music Plugin | ||
| // | ||
| // Connect to a locally-running Magenta.js server for AI music generation. | ||
| // Since @magenta/music is browser-only, this plugin wraps a lightweight | ||
| // HTTP API that the user runs separately (or uses the kbot-served wrapper). | ||
| // | ||
| // Alternatively, this plugin can generate music using the existing | ||
| // generate_music_pattern tool's algorithmic approach and enhance it | ||
| // with AI-powered melody continuation via any configured LLM provider. | ||
| // | ||
| // Tools: | ||
| // magenta_continue — AI-powered melody continuation using LLM | ||
| // magenta_harmonize — Generate chord progressions for a melody | ||
| // magenta_drumify — Generate drum patterns for a given tempo/genre | ||
| // magenta_interpolate — Blend two musical ideas into a hybrid | ||
| import { registerTool } from './index.js'; | ||
| import { writeFileSync, mkdirSync } from 'node:fs'; | ||
| import { dirname } from 'node:path'; | ||
| // ── Helpers ── | ||
| function ensureDir(path) { | ||
| mkdirSync(dirname(path), { recursive: true }); | ||
| } | ||
| /** MIDI note number to note name */ | ||
| function midiToName(midi) { | ||
| const names = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']; | ||
| return `${names[midi % 12]}${Math.floor(midi / 12) - 1}`; | ||
| } | ||
| /** Note name to MIDI number */ | ||
| function nameToMidi(name) { | ||
| const map = { | ||
| 'C': 0, 'C#': 1, 'Db': 1, 'D': 2, 'D#': 3, 'Eb': 3, | ||
| 'E': 4, 'F': 5, 'F#': 6, 'Gb': 6, 'G': 7, 'G#': 8, | ||
| 'Ab': 8, 'A': 9, 'A#': 10, 'Bb': 10, 'B': 11, | ||
| }; | ||
| const match = name.match(/^([A-G][#b]?)(\d)$/); | ||
| if (!match) | ||
| return 60; // default to middle C | ||
| const note = map[match[1]] ?? 0; | ||
| const octave = parseInt(match[2], 10); | ||
| return (octave + 1) * 12 + note; | ||
| } | ||
| /** Scale intervals */ | ||
| const SCALES = { | ||
| major: [0, 2, 4, 5, 7, 9, 11], | ||
| minor: [0, 2, 3, 5, 7, 8, 10], | ||
| dorian: [0, 2, 3, 5, 7, 9, 10], | ||
| mixolydian: [0, 2, 4, 5, 7, 9, 10], | ||
| pentatonic: [0, 2, 4, 7, 9], | ||
| blues: [0, 3, 5, 6, 7, 10], | ||
| chromatic: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], | ||
| }; | ||
| /** Chord quality intervals */ | ||
| const CHORDS = { | ||
| major: [0, 4, 7], | ||
| minor: [0, 3, 7], | ||
| dim: [0, 3, 6], | ||
| aug: [0, 4, 8], | ||
| dom7: [0, 4, 7, 10], | ||
| maj7: [0, 4, 7, 11], | ||
| min7: [0, 3, 7, 10], | ||
| sus2: [0, 2, 7], | ||
| sus4: [0, 5, 7], | ||
| }; | ||
| /** Simple seeded PRNG */ | ||
| function hashSeed(s) { | ||
| let h = 0; | ||
| for (let i = 0; i < s.length; i++) { | ||
| h = ((h << 5) - h + s.charCodeAt(i)) | 0; | ||
| } | ||
| return Math.abs(h); | ||
| } | ||
| function seededRandom(seed, index) { | ||
| const x = Math.sin(seed + index * 9301 + 49297) * 233280; | ||
| return x - Math.floor(x); | ||
| } | ||
| /** Parse a melody string like "C4 D4 E4 F4 G4" into MIDI note numbers */ | ||
| function parseMelody(melody) { | ||
| return melody.trim().split(/[\s,]+/).map(n => nameToMidi(n)).filter(n => n > 0); | ||
| } | ||
| /** Quantize a note to the nearest scale degree */ | ||
| function quantizeToScale(midi, root, scale) { | ||
| const pc = ((midi - root) % 12 + 12) % 12; | ||
| let closest = scale[0]; | ||
| let minDist = 12; | ||
| for (const degree of scale) { | ||
| const dist = Math.abs(pc - degree); | ||
| if (dist < minDist) { | ||
| minDist = dist; | ||
| closest = degree; | ||
| } | ||
| } | ||
| return midi - pc + closest; | ||
| } | ||
| // ── AI Melody Continuation ── | ||
| function continueMelody(notes, length, scale, root, temperature) { | ||
| const scaleIntervals = SCALES[scale] || SCALES.major; | ||
| const continued = []; | ||
| const seed = hashSeed(notes.join(',')); | ||
| // Analyze input melody for patterns | ||
| const intervals = []; | ||
| for (let i = 1; i < notes.length; i++) { | ||
| intervals.push(notes[i] - notes[i - 1]); | ||
| } | ||
| // Markov-like continuation based on observed intervals | ||
| let current = notes[notes.length - 1]; | ||
| for (let i = 0; i < length; i++) { | ||
| // Weight: use observed intervals with some randomness based on temperature | ||
| let nextInterval; | ||
| if (intervals.length > 0 && seededRandom(seed, i) > temperature * 0.5) { | ||
| // Pick from observed intervals with slight perturbation | ||
| const idx = Math.floor(seededRandom(seed, i + 100) * intervals.length); | ||
| nextInterval = intervals[idx]; | ||
| // Add slight variation | ||
| if (seededRandom(seed, i + 200) > 0.7) { | ||
| nextInterval += Math.floor((seededRandom(seed, i + 300) - 0.5) * 4); | ||
| } | ||
| } | ||
| else { | ||
| // Random step within scale (-4 to +4 scale degrees) | ||
| const step = Math.floor((seededRandom(seed, i + 400) - 0.5) * 8); | ||
| nextInterval = step; | ||
| } | ||
| current = current + nextInterval; | ||
| // Keep in playable range | ||
| current = Math.max(48, Math.min(84, current)); | ||
| // Quantize to scale | ||
| current = quantizeToScale(current, root, scaleIntervals); | ||
| continued.push(current); | ||
| intervals.push(nextInterval); // Feed back for more context | ||
| } | ||
| return continued; | ||
| } | ||
| // ── Chord Progression Generator ── | ||
| function generateChordProgression(key, scale, bars, genre) { | ||
| const rootMidi = nameToMidi(key + '3'); | ||
| const scaleIntervals = SCALES[scale] || SCALES.major; | ||
| // Genre-specific chord progressions (scale degree patterns) | ||
| const progressions = { | ||
| pop: [[0, 4, 5, 3], [0, 5, 3, 4], [0, 3, 4, 4]], | ||
| jazz: [[0, 3, 6, 1], [1, 4, 0, 0], [0, 1, 2, 4]], | ||
| blues: [[0, 0, 0, 0, 3, 3, 0, 0, 4, 3, 0, 4]], | ||
| classical: [[0, 3, 4, 0], [0, 4, 5, 4], [0, 1, 4, 0]], | ||
| ambient: [[0, 2, 4, 6], [0, 5, 2, 4]], | ||
| default: [[0, 4, 5, 3]], | ||
| }; | ||
| // Chord qualities for each scale degree | ||
| const majorQualities = ['major', 'minor', 'minor', 'major', 'major', 'minor', 'dim']; | ||
| const minorQualities = ['minor', 'dim', 'major', 'minor', 'minor', 'major', 'major']; | ||
| const qualities = scale === 'minor' || scale === 'dorian' ? minorQualities : majorQualities; | ||
| const genreProgs = progressions[genre.toLowerCase()] || progressions.default; | ||
| const seed = hashSeed(key + scale + genre); | ||
| const prog = genreProgs[Math.floor(seededRandom(seed, 0) * genreProgs.length)]; | ||
| const chords = []; | ||
| for (let bar = 0; bar < bars; bar++) { | ||
| const degree = prog[bar % prog.length]; | ||
| const chordRoot = rootMidi + (scaleIntervals[degree % scaleIntervals.length] || 0); | ||
| const quality = qualities[degree % qualities.length]; | ||
| const chordIntervals = CHORDS[quality] || CHORDS.major; | ||
| const notes = chordIntervals.map(i => chordRoot + i); | ||
| chords.push({ | ||
| root: chordRoot, | ||
| quality, | ||
| name: `${midiToName(chordRoot).replace(/\d/, '')}${quality === 'major' ? '' : quality}`, | ||
| notes, | ||
| }); | ||
| } | ||
| return chords; | ||
| } | ||
| function generateDrumPattern(tempo, genre, bars) { | ||
| const seed = hashSeed(genre + String(tempo)); | ||
| const hits = []; | ||
| const beatDuration = 60 / tempo; // seconds per beat | ||
| const patterns = { | ||
| rock: [ | ||
| [1, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], | ||
| [0, 0, 1, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], | ||
| [1, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], | ||
| [0, 0, 1, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], | ||
| ], | ||
| hiphop: [ | ||
| [1, 0, 1, 0], [0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0], | ||
| [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0], | ||
| [1, 0, 1, 0], [0, 0, 0, 0], [0, 0, 1, 0], [1, 0, 0, 0], | ||
| [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0], | ||
| ], | ||
| electronic: [ | ||
| [1, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], | ||
| [0, 0, 1, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], | ||
| [1, 0, 1, 0], [0, 0, 1, 0], [1, 0, 1, 0], [0, 0, 1, 0], | ||
| [0, 0, 1, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0], | ||
| ], | ||
| jazz: [ | ||
| [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 0], | ||
| [0, 0, 0, 1], [0, 1, 0, 1], [0, 0, 0, 1], [0, 0, 0, 0], | ||
| [0, 0, 0, 1], [0, 0, 0, 1], [1, 0, 0, 1], [0, 0, 0, 0], | ||
| [0, 0, 0, 1], [0, 1, 0, 1], [0, 0, 0, 1], [0, 0, 0, 0], | ||
| ], | ||
| ambient: [ | ||
| [1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], | ||
| [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], | ||
| [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], | ||
| [0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], | ||
| ], | ||
| }; | ||
| const pattern = patterns[genre.toLowerCase()] || patterns.rock; | ||
| const sixteenthDuration = beatDuration / 4; | ||
| // GM drum mapping | ||
| const drums = [ | ||
| { instrument: 'kick', midi: 36 }, | ||
| { instrument: 'snare', midi: 38 }, | ||
| { instrument: 'hihat', midi: 42 }, | ||
| { instrument: 'ride', midi: 51 }, | ||
| ]; | ||
| for (let bar = 0; bar < bars; bar++) { | ||
| for (let step = 0; step < 16; step++) { | ||
| const grid = pattern[step % pattern.length]; | ||
| const time = bar * beatDuration * 4 + step * sixteenthDuration; | ||
| for (let d = 0; d < 4; d++) { | ||
| if (grid[d] > 0) { | ||
| // Add slight humanization | ||
| const velocityVariation = Math.floor((seededRandom(seed, bar * 16 + step + d * 100) - 0.5) * 20); | ||
| const timeVariation = (seededRandom(seed, bar * 16 + step + d * 200) - 0.5) * sixteenthDuration * 0.1; | ||
| hits.push({ | ||
| instrument: drums[d].instrument, | ||
| midi: drums[d].midi, | ||
| time: Math.max(0, time + timeVariation), | ||
| velocity: Math.max(40, Math.min(127, (d === 0 ? 100 : d === 1 ? 90 : 70) + velocityVariation)), | ||
| duration: sixteenthDuration * 0.8, | ||
| }); | ||
| } | ||
| } | ||
| } | ||
| } | ||
| return hits.sort((a, b) => a.time - b.time); | ||
| } | ||
| // ── Interpolation ── | ||
| function interpolateMelodies(melodyA, melodyB, blend, // 0 = all A, 1 = all B | ||
| scale, root) { | ||
| const scaleIntervals = SCALES[scale] || SCALES.major; | ||
| const maxLen = Math.max(melodyA.length, melodyB.length); | ||
| const result = []; | ||
| for (let i = 0; i < maxLen; i++) { | ||
| const a = melodyA[i % melodyA.length]; | ||
| const b = melodyB[i % melodyB.length]; | ||
| const interpolated = Math.round(a * (1 - blend) + b * blend); | ||
| result.push(quantizeToScale(interpolated, root, scaleIntervals)); | ||
| } | ||
| return result; | ||
| } | ||
| // ── Tool Registration ── | ||
| export function registerMagentaTools() { | ||
| registerTool({ | ||
| name: 'magenta_continue', | ||
| description: 'Continue a melody by analyzing its patterns and generating new notes that follow the same musical logic. Input a sequence of notes, get a natural continuation.', | ||
| parameters: { | ||
| melody: { type: 'string', description: 'Input melody as space-separated note names (e.g., "C4 E4 G4 C5 B4 G4")', required: true }, | ||
| length: { type: 'number', description: 'Number of notes to generate. Defaults to 8.' }, | ||
| scale: { type: 'string', description: 'Scale to quantize to: major, minor, dorian, mixolydian, pentatonic, blues. Defaults to "major".' }, | ||
| key: { type: 'string', description: 'Key/root note (e.g., "C", "F#"). Defaults to "C".' }, | ||
| temperature: { type: 'number', description: 'Randomness 0-1. Low = predictable, high = experimental. Defaults to 0.5.' }, | ||
| output_path: { type: 'string', description: 'File path to write the result as JSON', required: true }, | ||
| }, | ||
| tier: 'free', | ||
| async execute(args) { | ||
| const melodyStr = String(args.melody); | ||
| const notes = parseMelody(melodyStr); | ||
| if (notes.length < 2) | ||
| return 'Error: Need at least 2 notes in the melody (e.g., "C4 E4 G4")'; | ||
| const length = typeof args.length === 'number' ? Math.max(1, Math.min(64, args.length)) : 8; | ||
| const scale = String(args.scale || 'major'); | ||
| if (!SCALES[scale]) | ||
| return `Error: Unknown scale "${scale}". Options: ${Object.keys(SCALES).join(', ')}`; | ||
| const key = String(args.key || 'C'); | ||
| const root = nameToMidi(key + '0') % 12; | ||
| const temperature = typeof args.temperature === 'number' ? Math.max(0, Math.min(1, args.temperature)) : 0.5; | ||
| const outputPath = String(args.output_path); | ||
| const continued = continueMelody(notes, length, scale, root, temperature); | ||
| const allNotes = [...notes, ...continued]; | ||
| const result = { | ||
| input: notes.map(n => ({ midi: n, name: midiToName(n) })), | ||
| generated: continued.map(n => ({ midi: n, name: midiToName(n) })), | ||
| full: allNotes.map(n => ({ midi: n, name: midiToName(n) })), | ||
| params: { scale, key, temperature, length }, | ||
| }; | ||
| ensureDir(outputPath); | ||
| writeFileSync(outputPath, JSON.stringify(result, null, 2)); | ||
| const genNames = continued.map(n => midiToName(n)).join(' '); | ||
| return `Generated ${length} continuation notes: ${genNames}\nFull melody: ${allNotes.map(n => midiToName(n)).join(' ')}\nSaved to ${outputPath}`; | ||
| }, | ||
| }); | ||
| registerTool({ | ||
| name: 'magenta_harmonize', | ||
| description: 'Generate a chord progression for a given key, scale, and genre. Produces chord names, root notes, and constituent notes for each bar.', | ||
| parameters: { | ||
| key: { type: 'string', description: 'Musical key (e.g., "C", "G", "Bb"). Defaults to "C".', required: true }, | ||
| scale: { type: 'string', description: 'Scale: major, minor, dorian, mixolydian. Defaults to "major".' }, | ||
| bars: { type: 'number', description: 'Number of bars to generate. Defaults to 8.' }, | ||
| genre: { type: 'string', description: 'Genre for progression style: pop, jazz, blues, classical, ambient. Defaults to "pop".' }, | ||
| output_path: { type: 'string', description: 'File path to write the result as JSON', required: true }, | ||
| }, | ||
| tier: 'free', | ||
| async execute(args) { | ||
| const key = String(args.key || 'C'); | ||
| const scale = String(args.scale || 'major'); | ||
| if (!SCALES[scale]) | ||
| return `Error: Unknown scale "${scale}". Options: ${Object.keys(SCALES).join(', ')}`; | ||
| const bars = typeof args.bars === 'number' ? Math.max(1, Math.min(32, args.bars)) : 8; | ||
| const genre = String(args.genre || 'pop'); | ||
| const outputPath = String(args.output_path); | ||
| const chords = generateChordProgression(key, scale, bars, genre); | ||
| const result = { | ||
| key, | ||
| scale, | ||
| genre, | ||
| bars, | ||
| chords: chords.map(c => ({ | ||
| name: c.name, | ||
| quality: c.quality, | ||
| rootMidi: c.root, | ||
| rootName: midiToName(c.root), | ||
| notes: c.notes.map(n => ({ midi: n, name: midiToName(n) })), | ||
| })), | ||
| }; | ||
| ensureDir(outputPath); | ||
| writeFileSync(outputPath, JSON.stringify(result, null, 2)); | ||
| const chordNames = chords.map(c => c.name).join(' | '); | ||
| return `Generated ${bars}-bar ${genre} progression in ${key} ${scale}:\n${chordNames}\nSaved to ${outputPath}`; | ||
| }, | ||
| }); | ||
| registerTool({ | ||
| name: 'magenta_drumify', | ||
| description: 'Generate a drum pattern for a given tempo and genre. Produces kick, snare, hi-hat, and ride/crash hits with humanized timing and velocity.', | ||
| parameters: { | ||
| tempo: { type: 'number', description: 'BPM (beats per minute). Defaults to 120.', required: true }, | ||
| genre: { type: 'string', description: 'Genre: rock, hiphop, electronic, jazz, ambient. Defaults to "rock".' }, | ||
| bars: { type: 'number', description: 'Number of bars to generate. Defaults to 4.' }, | ||
| output_path: { type: 'string', description: 'File path to write the result as JSON', required: true }, | ||
| }, | ||
| tier: 'free', | ||
| async execute(args) { | ||
| const tempo = typeof args.tempo === 'number' ? Math.max(40, Math.min(300, args.tempo)) : 120; | ||
| const genre = String(args.genre || 'rock'); | ||
| const bars = typeof args.bars === 'number' ? Math.max(1, Math.min(16, args.bars)) : 4; | ||
| const outputPath = String(args.output_path); | ||
| const hits = generateDrumPattern(tempo, genre, bars); | ||
| const result = { | ||
| tempo, | ||
| genre, | ||
| bars, | ||
| totalHits: hits.length, | ||
| duration: bars * (60 / tempo) * 4, | ||
| hits, | ||
| summary: { | ||
| kicks: hits.filter(h => h.instrument === 'kick').length, | ||
| snares: hits.filter(h => h.instrument === 'snare').length, | ||
| hihats: hits.filter(h => h.instrument === 'hihat').length, | ||
| rides: hits.filter(h => h.instrument === 'ride').length, | ||
| }, | ||
| }; | ||
| ensureDir(outputPath); | ||
| writeFileSync(outputPath, JSON.stringify(result, null, 2)); | ||
| return `Generated ${bars}-bar ${genre} drum pattern at ${tempo} BPM:\n${result.summary.kicks} kicks, ${result.summary.snares} snares, ${result.summary.hihats} hi-hats, ${result.summary.rides} rides\nTotal: ${hits.length} hits over ${result.duration.toFixed(1)}s\nSaved to ${outputPath}`; | ||
| }, | ||
| }); | ||
| registerTool({ | ||
| name: 'magenta_interpolate', | ||
| description: 'Blend two melodies together to create a hybrid. Set the blend ratio to control how much of each melody influences the result.', | ||
| parameters: { | ||
| melody_a: { type: 'string', description: 'First melody as space-separated notes (e.g., "C4 E4 G4")', required: true }, | ||
| melody_b: { type: 'string', description: 'Second melody as space-separated notes (e.g., "D4 F#4 A4")', required: true }, | ||
| blend: { type: 'number', description: 'Blend ratio 0-1. 0 = all melody A, 1 = all melody B, 0.5 = equal mix. Defaults to 0.5.' }, | ||
| scale: { type: 'string', description: 'Scale to quantize result to. Defaults to "major".' }, | ||
| key: { type: 'string', description: 'Key/root note. Defaults to "C".' }, | ||
| output_path: { type: 'string', description: 'File path to write the result as JSON', required: true }, | ||
| }, | ||
| tier: 'free', | ||
| async execute(args) { | ||
| const notesA = parseMelody(String(args.melody_a)); | ||
| const notesB = parseMelody(String(args.melody_b)); | ||
| if (notesA.length < 2) | ||
| return 'Error: melody_a needs at least 2 notes'; | ||
| if (notesB.length < 2) | ||
| return 'Error: melody_b needs at least 2 notes'; | ||
| const blend = typeof args.blend === 'number' ? Math.max(0, Math.min(1, args.blend)) : 0.5; | ||
| const scale = String(args.scale || 'major'); | ||
| if (!SCALES[scale]) | ||
| return `Error: Unknown scale "${scale}". Options: ${Object.keys(SCALES).join(', ')}`; | ||
| const key = String(args.key || 'C'); | ||
| const root = nameToMidi(key + '0') % 12; | ||
| const outputPath = String(args.output_path); | ||
| const interpolated = interpolateMelodies(notesA, notesB, blend, scale, root); | ||
| const result = { | ||
| melody_a: notesA.map(n => ({ midi: n, name: midiToName(n) })), | ||
| melody_b: notesB.map(n => ({ midi: n, name: midiToName(n) })), | ||
| interpolated: interpolated.map(n => ({ midi: n, name: midiToName(n) })), | ||
| params: { blend, scale, key }, | ||
| }; | ||
| ensureDir(outputPath); | ||
| writeFileSync(outputPath, JSON.stringify(result, null, 2)); | ||
| const names = interpolated.map(n => midiToName(n)).join(' '); | ||
| return `Interpolated ${interpolated.length} notes (blend=${blend}):\n${names}\nSaved to ${outputPath}`; | ||
| }, | ||
| }); | ||
| } | ||
| //# sourceMappingURL=magenta-plugin.js.map |
| {"version":3,"file":"magenta-plugin.js","sourceRoot":"","sources":["../../src/tools/magenta-plugin.ts"],"names":[],"mappings":"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AC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;SAC3C;QACD,MAAM,EAAE;YACN,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;SAC3C;QACD,UAAU,EAAE;YACV,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;SAC3C;QACD,IAAI,EAAE;YACJ,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;SAC3C;QACD,OAAO,EAAE;YACP,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;SAC3C;KACF,CAAA;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAA;IAC9D,MAAM,iBAAiB,GAAG,YAAY,GAAG,CAAC,CAAA;IAE1C,kBAAkB;IAClB,MAAM,KAAK,GAAG;QACZ,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QAChC,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;KACjC,CAAA;IAED,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACpC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;YAC3C,MAAM,IAAI,GAAG,GAAG,GAAG,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,iBAAiB,CAAA;YAE9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChB,0BAA0B;oBAC1B,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;oBAChG,MAAM,aAAa,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAA;oBAErG,IAAI,CAAC,IAAI,CAAC;wBACR,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU;wBAC/B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;wBACnB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC;wBACvC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;wBAC9F,QAAQ,EAAE,iBAAiB,GAAG,GAAG;qBAClC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC;AAED,sBAAsB;AAEtB,SAAS,mBAAmB,CAC1B,OAAiB,EACjB,OAAiB,EACjB,KAAa,EAAE,uBAAuB;AACtC,KAAa,EACb,IAAY;IAEZ,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAA;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;QAC5D,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,0BAA0B;AAE1B,MAAM,UAAU,oBAAoB;IAClC,YAAY,CAAC;QACX,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,iKAAiK;QAC9K,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wEAAwE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACjI,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;YACtF,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iGAAiG,EAAE;YACzI,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;YACzF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0EAA0E,EAAE;YACxH,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,IAAI,EAAE;SACtG;QACD,IAAI,EAAE,MAAM;QACZ,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACrC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;YACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,+DAA+D,CAAA;YAE5F,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,CAAA;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,yBAAyB,KAAK,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;YAExG,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;YACnC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;YACvC,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;YAC3G,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAE3C,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;YACzE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC,CAAA;YAEzC,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzD,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACjE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3D,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE;aAC5C,CAAA;YAED,SAAS,CAAC,UAAU,CAAC,CAAA;YACrB,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAE1D,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5D,OAAO,aAAa,MAAM,wBAAwB,QAAQ,kBAAkB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,UAAU,EAAE,CAAA;QAClJ,CAAC;KACF,CAAC,CAAA;IAEF,YAAY,CAAC;QACX,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,uIAAuI;QACpJ,UAAU,EAAE;YACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC5G,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;YACvG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;YACnF,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uFAAuF,EAAE;YAC/H,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,IAAI,EAAE;SACtG;QACD,IAAI,EAAE,MAAM;QACZ,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,CAAA;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,yBAAyB,KAAK,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;YAExG,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACrF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAA;YACzC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAE3C,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YAEhE,MAAM,MAAM,GAAG;gBACb,GAAG;gBACH,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACvB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,QAAQ,EAAE,CAAC,CAAC,IAAI;oBAChB,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC5D,CAAC,CAAC;aACJ,CAAA;YAED,SAAS,CAAC,UAAU,CAAC,CAAA;YACrB,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAE1D,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACtD,OAAO,aAAa,IAAI,QAAQ,KAAK,mBAAmB,GAAG,IAAI,KAAK,MAAM,UAAU,cAAc,UAAU,EAAE,CAAA;QAChH,CAAC;KACF,CAAC,CAAA;IAEF,YAAY,CAAC;QACX,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,4IAA4I;QACzJ,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClG,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qEAAqE,EAAE;YAC7G,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;YACnF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,IAAI,EAAE;SACtG;QACD,IAAI,EAAE,MAAM;QACZ,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;YAC5F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACrF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAE3C,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;YAEpD,MAAM,MAAM,GAAG;gBACb,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,QAAQ,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC;gBACjC,IAAI;gBACJ,OAAO,EAAE;oBACP,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,MAAM;oBACvD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,MAAM;oBACzD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,MAAM;oBACzD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,MAAM;iBACxD;aACF,CAAA;YAED,SAAS,CAAC,UAAU,CAAC,CAAA;YACrB,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAE1D,OAAO,aAAa,IAAI,QAAQ,KAAK,oBAAoB,KAAK,UAAU,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,YAAY,MAAM,CAAC,OAAO,CAAC,MAAM,aAAa,MAAM,CAAC,OAAO,CAAC,KAAK,kBAAkB,IAAI,CAAC,MAAM,cAAc,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,UAAU,EAAE,CAAA;QAChS,CAAC;KACF,CAAC,CAAA;IAEF,YAAY,CAAC;QACX,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,+HAA+H;QAC5I,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0DAA0D,EAAE,QAAQ,EAAE,IAAI,EAAE;YACrH,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4DAA4D,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvH,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wFAAwF,EAAE;YAChI,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;YAC3F,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;YACvE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,IAAI,EAAE;SACtG;QACD,IAAI,EAAE,MAAM;QACZ,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;YACjD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;YACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,wCAAwC,CAAA;YACtE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,wCAAwC,CAAA;YAEtE,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;YACzF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,CAAA;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,yBAAyB,KAAK,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;YAExG,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;YACnC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA;YACvC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAE3C,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;YAE5E,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7D,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7D,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;aAC9B,CAAA;YAED,SAAS,CAAC,UAAU,CAAC,CAAA;YACrB,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAE1D,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5D,OAAO,gBAAgB,YAAY,CAAC,MAAM,iBAAiB,KAAK,OAAO,KAAK,cAAc,UAAU,EAAE,CAAA;QACxG,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAwBA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAc1E,OAAO,EAA8E,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA8DhI,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sDAAsD;IACtD,UAAU,CAAC,EAAE,aAAa,CAAA;IAC1B,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1E;AAqfD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAqZxB;AAGD,6CAA6C;AAC7C,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA2Df"} | ||
| {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAwBA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAc1E,OAAO,EAA8E,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA8DhI,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sDAAsD;IACtD,UAAU,CAAC,EAAE,aAAa,CAAA;IAC1B,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1E;AAqfD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAuaxB;AAGD,6CAA6C;AAC7C,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA2Df"} |
+11
-0
@@ -790,2 +790,13 @@ // K:BOT Agent Loop v2 — Autonomous Reasoning Engine | ||
| catch { /* non-critical */ } | ||
| // MAP-Elites quality-diversity archive update | ||
| import('./quality-diversity.js').then(({ initArchive, learnFromOutcome }) => { | ||
| try { | ||
| initArchive(); | ||
| // Use self-eval overall score (default 0.7 if not evaluated) | ||
| const evalScore = lastResponse.usage?.evalScore ?? 0.7; | ||
| const successRate = toolCallCount > 0 ? 1.0 : 0.8; | ||
| learnFromOutcome(originalMessage, toolSequenceLog, { overall: evalScore }, successRate, totalTokens, 0); | ||
| } | ||
| catch { /* quality-diversity is non-critical */ } | ||
| }).catch(() => { }); | ||
| // Auto self-training trigger | ||
@@ -792,0 +803,0 @@ if (shouldAutoTrain()) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"} |
@@ -14,4 +14,4 @@ // K:BOT ACP Server — Agent Client Protocol for JetBrains IDEs | ||
| name: 'K:BOT', | ||
| version: '2.11.0', | ||
| description: 'Open-source terminal AI agent — 39 specialists, 158 tools, 19 providers, local-first', | ||
| version: '2.12.0', | ||
| description: 'Open-source terminal AI agent — 39 specialists, 167 tools, 19 providers, local-first', | ||
| capabilities: ['chat', 'codeAction', 'diagnostics', 'tools'], | ||
@@ -18,0 +18,0 @@ }; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAC,CAAA;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3D,8DAA8D;IAC9D,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAA;IAC9C,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CACnB;AAgBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAEvD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEhE;AAED,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAM9D;AAED,iEAAiE;AACjE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC3F,CAAC,CAcD;AA+BD,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAM/D;AAED,qEAAqE;AACrE,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CA0CrE;AAED,0FAA0F;AAC1F,wBAAsB,gBAAgB,CAAC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GtF"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAC,CAAA;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3D,8DAA8D;IAC9D,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAA;IAC9C,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CACnB;AAgBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAEvD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEhE;AAED,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAM9D;AAED,iEAAiE;AACjE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC3F,CAAC,CAcD;AA+BD,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAM/D;AAED,qEAAqE;AACrE,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CA0CrE;AAED,0FAA0F;AAC1F,wBAAsB,gBAAgB,CAAC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoHtF"} |
@@ -137,3 +137,3 @@ // K:BOT Tool Registry v2 | ||
| // Parallel import all tool modules at once | ||
| const [{ registerFileTools }, { registerBashTools }, { registerGitTools }, { registerSearchTools }, { registerFetchTools }, { registerGitHubTools }, { registerMatrixTools }, { registerParallelTools }, { registerMcpClientTools }, { registerTaskTools }, { registerNotebookTools }, { registerBackgroundTools }, { registerSandboxTools }, { registerBuildMatrixTools }, { registerSubagentTools }, { registerWorktreeTools }, { registerOpenClawTools }, { registerQualityTools }, { registerMemoryTools }, { registerBrowserTools }, { registerE2bTools }, { registerLspTools }, { registerMcpPluginTools }, { registerGraphMemoryTools }, { registerConfidenceTools }, { registerAgentProtocolTools }, { registerTemporalTools }, { registerReasoningTools }, { registerIntentionalityTools }, { registerTestRunnerTools }, { registerCreativeTools },] = await Promise.all([ | ||
| const [{ registerFileTools }, { registerBashTools }, { registerGitTools }, { registerSearchTools }, { registerFetchTools }, { registerGitHubTools }, { registerMatrixTools }, { registerParallelTools }, { registerMcpClientTools }, { registerTaskTools }, { registerNotebookTools }, { registerBackgroundTools }, { registerSandboxTools }, { registerBuildMatrixTools }, { registerSubagentTools }, { registerWorktreeTools }, { registerOpenClawTools }, { registerQualityTools }, { registerMemoryTools }, { registerBrowserTools }, { registerE2bTools }, { registerLspTools }, { registerMcpPluginTools }, { registerGraphMemoryTools }, { registerConfidenceTools }, { registerAgentProtocolTools }, { registerTemporalTools }, { registerReasoningTools }, { registerIntentionalityTools }, { registerTestRunnerTools }, { registerCreativeTools }, { registerComfyUITools }, { registerMagentaTools },] = await Promise.all([ | ||
| import('./files.js'), | ||
@@ -170,2 +170,4 @@ import('./bash.js'), | ||
| import('./creative.js'), | ||
| import('./comfyui-plugin.js'), | ||
| import('./magenta-plugin.js'), | ||
| ]); | ||
@@ -204,2 +206,4 @@ // Register all tools (synchronous, fast) | ||
| registerCreativeTools(); | ||
| registerComfyUITools(); | ||
| registerMagentaTools(); | ||
| // Computer use tools — opt-in only via --computer-use flag | ||
@@ -206,0 +210,0 @@ if (opts?.computerUse) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"} |
+1
-1
@@ -257,3 +257,3 @@ // K:BOT Terminal UI — Modern 2026 CLI design | ||
| '', | ||
| ` ${DIM('39 specialist agents. 158 tools. Type anything to get started.')}`, | ||
| ` ${DIM('39 specialist agents. 167 tools. Type anything to get started.')}`, | ||
| '', | ||
@@ -260,0 +260,0 @@ ]; |
+2
-2
| { | ||
| "name": "@kernel.chat/kbot", | ||
| "version": "2.11.0", | ||
| "description": "K:BOT — Open-source terminal AI agent. 39 specialists, 158 tools, 19 providers, local-first.", | ||
| "version": "2.12.0", | ||
| "description": "K:BOT — Open-source terminal AI agent. 39 specialists, 167 tools, 19 providers, local-first.", | ||
| "type": "module", | ||
@@ -6,0 +6,0 @@ "repository": { |
+1
-1
| <p align="center"> | ||
| <strong>K:BOT</strong><br> | ||
| Open-source terminal AI agent. 39 specialists, 158 tools, 19 providers, local-first. | ||
| Open-source terminal AI agent. 39 specialists, 167 tools, 19 providers, local-first. | ||
| </p> | ||
@@ -5,0 +5,0 @@ |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
2516466
9.57%355
8.56%32681
9.09%43
2.38%57
16.33%