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
TypeScript
/**
* 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