UNPKG

overmind-mcp

Version:

Orchestrateur universel agents IA multi-modeles via MCP. Inclut le protocole 'Custom-Nickname' pour identifier vos agents avec des surnoms originaux (The Chaos Prophet, Shadow Sniper, etc.), l'isolation mémoire (Private Memory Context) et le support pour

77 lines • 2.93 kB
import { z } from 'zod'; import { getMemoryProvider } from '../memory/MemoryFactory.js'; export const memoryRunsSchema = z.object({ runner: z .string() .optional() .describe("Filtrer par runner (ex: 'claude', 'gemini', 'kilo', 'qwen'…). Vide = tous les runners."), limit: z .number() .int() .min(1) .max(100) .optional() .default(20) .describe('Nombre de runs à retourner'), stats: z .boolean() .optional() .default(false) .describe("Afficher les statistiques globales d'orchestration"), agent_name: z .string() .optional() .describe('Filtrer par agent (détecté automatiquement si exécuté via OverMind)'), }); export async function memoryRunsTool(args) { const provider = getMemoryProvider(); // Priorité à l'agent détecté (Privacy) const effectiveAgentName = process.env.OVERMIND_AGENT_NAME || args.agent_name; if (args.stats) { const s = await provider.getStats(effectiveAgentName); const rows = s.byRunner .map((r) => ` • **${r.runner}** : ${r.count} runs (${r.successes} ✅)`) .join('\n'); const scopeLabel = effectiveAgentName ? `pour l'agent **${effectiveAgentName}**` : 'globales'; return { content: [ { type: 'text', text: `📊 **OverMind Statistics (${scopeLabel})**\n\n- Runs totaux : **${s.totalRuns}**\n- Connaissances stockées : **${s.totalKnowledge}**\n\n**Par runner :**\n${rows || ' _(aucun run enregistré)_'}`, }, ], }; } const runs = await provider.getRecentRuns({ runner: args.runner, limit: args.limit, agentName: effectiveAgentName, }); if (runs.length === 0) { return { content: [ { type: 'text', text: `📭 Aucun run enregistré${args.runner ? ` pour le runner **${args.runner}**` : ''}.`, }, ], }; } const lines = runs.map((r) => { const date = new Date(r.created_at).toISOString().replace('T', ' ').slice(0, 19); const status = r.success ? '✅' : '❌'; const dur = r.duration_ms ? `${(r.duration_ms / 1000).toFixed(1)}s` : '?'; const preview = (r.result ?? r.error ?? '').slice(0, 120); const agentLabel = r.agent_name ? ` (${r.agent_name})` : ''; return `${status} **[${r.runner}${agentLabel}]** — ${date} — ${dur}\n> _${r.prompt.slice(0, 100)}_\n> ${preview}`; }); return { content: [ { type: 'text', text: `🕐 **${runs.length} run(s)${args.runner ? ` pour ${args.runner}` : ''}**\n\n${lines.join('\n\n')}`, }, ], }; } //# sourceMappingURL=memory_runs.js.map