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
115 lines • 4.44 kB
JavaScript
import { exec } from 'child_process';
import { promisify } from 'util';
const execAsync = promisify(exec);
export const CLIS_METADATA = {
claude: {
name: 'Claude Code',
command: 'claude',
versionCmd: 'claude --version',
installCmd: 'npm install -g @anthropic-ai/claude-code',
url: 'https://www.npmjs.com/package/@anthropic-ai/claude-code',
},
kilo: {
name: 'Kilo Code',
command: 'kilo',
versionCmd: 'kilo --version',
installCmd: 'npm install -g kilo-auto',
url: 'https://github.com/Kilo-Org/kilocode',
requiredVersion: '7.2.14',
},
qwencli: {
name: 'Qwen Code CLI',
command: 'qwen',
versionCmd: 'qwen --version',
installCmd: 'npm install -g @qwen-code/qwen-code',
url: 'https://www.npmjs.com/package/@qwen-code/qwen-code',
},
hermes: {
name: 'Hermes Agent',
command: 'hermes',
versionCmd: 'hermes --version',
installCmd: process.platform === 'win32'
? 'powershell -Command "irm https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.ps1 | iex"'
: 'curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash',
url: 'https://github.com/NousResearch/hermes-agent',
},
gemini: {
name: 'Gemini CLI',
command: 'gemini',
versionCmd: 'gemini --version',
installCmd: 'npm install -g @google/gemini-cli',
url: 'https://github.com/google/gemini-cli',
},
openclaw: {
name: 'OpenClaw',
command: 'openclaw',
versionCmd: 'openclaw --version',
installCmd: 'npm install -g openclaw',
url: 'https://github.com/OpenClaw/OpenClaw',
},
cline: {
name: 'Cline CLI',
command: 'cline',
versionCmd: 'cline --version',
installCmd: 'npm install -g cline',
url: 'https://github.com/cline/cline',
},
opencode: {
name: 'OpenCode',
command: 'opencode',
versionCmd: 'opencode --version',
installCmd: 'npm install -g opencode',
url: 'https://github.com/OpenCode/OpenCode',
},
trae: {
name: 'Trae CLI',
command: 'trae',
versionCmd: 'trae --version',
installCmd: 'npm install -g @trae-ai/trae',
url: 'https://www.trae.ai/',
},
};
export async function verifyInstallation(runnerKey) {
const meta = CLIS_METADATA[runnerKey];
if (!meta)
return { ok: true }; // No meta, assume ok or handled elsewhere
try {
// Check if command exists
const checkCmd = process.platform === 'win32' ? `where ${meta.command}` : `which ${meta.command}`;
await execAsync(checkCmd);
// Check version if required
if (meta.requiredVersion && meta.versionCmd) {
try {
const { stdout } = await execAsync(meta.versionCmd);
const version = stdout.trim();
if (!version.includes(meta.requiredVersion) &&
!version.startsWith(meta.requiredVersion.split('.')[0])) {
return {
ok: false,
message: `⚠️ **Version Incorrecte pour ${meta.name}** : détectée ${version} (Attendu: ${meta.requiredVersion})\n\n` +
`Veuillez mettre à jour le CLI pour garantir la compatibilité :\n` +
`\`${meta.installCmd}\`\n\n` +
`Plus d'infos : ${meta.url}`,
};
}
}
catch (_verErr) {
// Version check failed but CLI exists, maybe just warn?
console.error(`[InstallHelper] Warning: Could not check version for ${meta.name}`);
}
}
return { ok: true };
}
catch (_err) {
return {
ok: false,
message: `❌ **${meta.name} n'est pas installé !**\n\n` +
`Le CLI demandé est introuvable sur votre système.\n\n` +
`**Comment l'installer :**\n` +
`1. Exécutez : \`${meta.installCmd}\`\n` +
`2. Ou téléchargez le kit ici : ${meta.url}\n\n` +
`Une fois installé, redémarrez votre terminal ou le serveur MCP.`,
};
}
}
//# sourceMappingURL=InstallHelper.js.map