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

121 lines • 5.86 kB
/** * HermesProfileManager — Thin wrapper around `hermes profile` CLI. * * ╔════════════════════════════════════════════════════════════════════════╗ * ║ PURPOSE ║ * ║ ║ * ║ Replaces the old dual-layout (HERMES_HOME/agents/<name>/settings.json ║ * ║ vs .claude/settings_<name>.json) with the native Hermes profile system. ║ * ║ ║ * ║ Each Overmind Hermes agent = one Hermes profile: ║ * ║ ~/.hermes/profiles/<name>/ ║ * ║ ├── config.yaml (provider, model, mcp_servers) ║ * ║ ├── .env (credentials) ║ * ║ ├── SOUL.md (system prompt) ║ * ║ ├── memories/ (state.db — isolated) ║ * ║ ├── sessions/ (conversation history) ║ * ║ └── skills/ (procedural memory) ║ * ║ ║ * ║ All operations go through `hermes profile` CLI — no manual file ║ * ║ management, no HERMES_HOME guessing. ║ * ╚════════════════════════════════════════════════════════════════════════╝ */ export interface HermesProfileInfo { name: string; model: string; gateway: string; skills: number; active: boolean; } export interface CreateProfileOptions { name: string; prompt: string; model: string; provider?: string; credentials: Record<string, string>; mcpServers?: string[]; description?: string; } export declare class HermesProfileManager { /** * Check if a Hermes profile exists. */ static exists(name: string): boolean; /** * List all Hermes profiles. */ static list(): Promise<HermesProfileInfo[]>; /** * Parse `hermes profile list` output into structured data. * * Output format: * Profile Model Gateway Alias * ─────────────── ─────────────────────────── ─────────── ─────────── * ◆default MiniMax-M3 stopped — * testwrapper — stopped — */ static parseProfileList(rawOutput: string): HermesProfileInfo[]; /** * Create a new Hermes profile that uses the NATIVE Hermes credential pool. * * Steps: * 1. Validate provider is healthy in the Hermes pool (round_robin rotation) * 2. hermes profile create <name> --no-alias --description "<desc>" * 3. hermes -p <name> config set model.provider <provider> * 4. hermes -p <name> config set model.model <model> * 5. Write SOUL.md with system prompt * 6. Optionally set mcp_servers in config.yaml * 7. Generate profile.yaml/workspace.yaml/README * * NOTE: We do NOT write credentials to the profile's .env anymore — Hermes * resolves them from the global pool via `hermes auth list`. The profile's * .env stays empty (just the placeholder comment Hermes writes by default). * * If `opts.credentials` is provided, they are added to the GLOBAL POOL via * `hermes auth add` (deduped by label) rather than written to the profile. */ static create(opts: CreateProfileOptions): Promise<{ profilePath: string; soulPath: string; provider: string; }>; /** * Delete a Hermes profile permanently. */ static delete(name: string): Promise<void>; /** * Get the filesystem path for a profile. * * Queries `hermes profile show <name>` to get the real path from Hermes itself. * This is the ONLY reliable way — Hermes controls where profiles live, and the * location depends on HERMES_HOME (Windows: AppData\Local\hermes, Linux: ~/.hermes). * * Falls back to the canonical layout under the shared Hermes home if the CLI * call fails (e.g. profile doesn't exist yet). */ static getProfilePath(name: string): Promise<string | null>; /** * Set MCP servers in a profile's config.yaml. * * Reads the workspace .mcp.json to get the actual server configs (URL, command, etc.) * and writes them as proper YAML entries in the profile's config.yaml. */ static setMcpServers(profileName: string, servers: string[], profilePath: string): Promise<void>; /** Write profile.yaml (kanban description — OBLIGATOIRE) */ private static writeProfileYaml; /** Write workspace.yaml (kind: scratch|persistent|shared) */ private static writeWorkspaceYaml; /** Write README.md (role + contacts) */ private static writeReadme; /** * Update specific fields of an existing profile. */ static update(name: string, updates: { model?: string; provider?: string; credentials?: Record<string, string>; prompt?: string; mcpServers?: string[]; }): Promise<void>; } //# sourceMappingURL=HermesProfileManager.d.ts.map