/** * Multi-repo Orchestrator * * Manages concurrent spec execution across multiple repos with: * - Global agent pool with configurable limit * - Per-repo agent limits * - Per-repo merge queues (sequential merges to prevent conflicts) */ import type { Adapter, ServerEvent } from "../types.js"; import type { StateStore } from "../state/store.js"; import type { ServerHooks, ResolvedRepoConfig } from "../config/types.js"; export interface OrchestratorOptions { globalMaxConcurrentAgents: number; timeout: number; adapter: Adapter; store: StateStore; repos: Record; hooks?: ServerHooks; broadcast: (event: ServerEvent) => void; } export interface Orchestrator { start(): void; stop(): void; enqueue(repoId: string, specId: string): void; cancel(specId: string): boolean; getRunning(): string[]; getRunningByRepo(repoId: string): string[]; /** * Register a new repo dynamically (for auto-clone support). * Creates the GitHub client for this repo. */ registerRepo(repoId: string, config: ResolvedRepoConfig): void; /** * Check if a repo is registered (either static or dynamic). */ hasRepo(repoId: string): boolean; /** * Get repo config by ID. */ getRepoConfig(repoId: string): ResolvedRepoConfig | undefined; } export declare function createOrchestrator(options: OrchestratorOptions): Orchestrator; //# sourceMappingURL=orchestrator.d.ts.map