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

105 lines • 5.07 kB
/** * HermesPoolClient — Thin wrapper over the native Hermes credential pool. * * ╔════════════════════════════════════════════════════════════════════════╗ * ║ WHY THIS EXISTS ║ * ║ ║ * ║ Hermes manages API keys centrally via `hermes auth add <provider>`. ║ * ║ Credentials are stored in a global pool with automatic rotation ║ * ║ (round_robin by default) and rate-limit aware failover. ║ * ║ ║ * ║ Overmind previously wrote `.env` files with hardcoded credentials per ║ * ║ profile. That defeated the pool — one key per profile, no rotation, ║ * ║ no failover. The right approach is to add credentials to the POOL ║ * ║ and let Hermes resolve them per profile. ║ * ║ ║ * ║ Providers in the pool (from `hermes auth list`): ║ * ║ - anthropic, copilot, deepseek, minimax, minimax-cn, ║ * ║ openai-api, qwen-oauth, xai, zai ║ * ║ ║ * ║ Per-profile: only config.yaml's `model.provider` is needed. ║ * ║ Hermes resolves the credentials + base_url from the pool automatically. ║ * ╚════════════════════════════════════════════════════════════════════════╝ */ export interface PoolCredential { /** Display label, e.g. "GLM coding 34" or "DeepSeek 7" */ label: string; /** Where the credential came from: env var, manual entry, OAuth file, etc. */ source: 'env' | 'manual' | 'oauth' | 'gh_cli' | 'unknown'; /** Currently active in the rotation (← marker) */ active: boolean; /** Raw suffix of the key for display, e.g. "sk-o...e25b" */ preview?: string; /** If rate-limited, e.g. "rate-limited rate_limit_error (429) (10m 10s left)" */ status?: string; } export interface PoolProvider { /** Canonical Hermes provider id, e.g. "zai", "minimax-cn", "deepseek" */ id: string; /** Total number of credentials in this provider's pool */ count: number; /** True if at least one credential is currently active (not rate-limited) */ hasActive: boolean; /** All credentials in the pool, in rotation order */ credentials: PoolCredential[]; } export declare class HermesPoolClient { /** * List all providers and their credentials from `hermes auth list`. * The output format is: * * <provider-id> (N credentials): * #1 <label> api_key <source> [<status>] [←] * #2 <label> api_key <source> * ... */ static list(): Promise<PoolProvider[]>; static parseAuthList(raw: string): PoolProvider[]; /** * Get a specific provider's pool info. Returns null if provider doesn't exist. */ static getProvider(providerId: string): Promise<PoolProvider | null>; /** * Add a credential to a provider's pool. * Wraps `hermes auth add <provider> --api-key <key> [--inference-url <url>]`. */ static addCredential(providerId: string, apiKey: string, opts?: { label?: string; inferenceUrl?: string; }): Promise<void>; /** * Remove a credential from a provider's pool by label. * Hermes auth remove uses positional <provider> <label>. */ static removeCredential(providerId: string, label: string): Promise<void>; /** * Sync a list of credentials into the pool, deduped by label. * Useful for bulk-importing from an Overmind workspace .env. */ static syncCredentials(providerId: string, credentials: Array<{ apiKey: string; label?: string; inferenceUrl?: string; }>): Promise<{ added: number; skipped: number; }>; /** * Check if a provider has at least one healthy credential available. */ static isProviderHealthy(providerId: string): Promise<boolean>; /** * List all healthy providers (at least one non-rate-limited credential). */ static listHealthyProviders(): Promise<string[]>; /** * Compute a short summary of the pool state — useful for status embeds / dashboards. */ static summary(): Promise<{ totalProviders: number; totalCredentials: number; healthyProviders: string[]; rateLimitedProviders: string[]; }>; } //# sourceMappingURL=HermesPoolClient.d.ts.map