import type { DriverTarget } from "@skaile/workspaces/plugin-registry"; import type { Logger } from "@skaile/workspaces/types"; import type { ModelEntry } from "../models.js"; import type { AgentConfig, DriverInfo } from "../types.js"; import { SubprocessCliDriver } from "./_subprocess-cli.js"; /** * Agent driver for **OpenCode** (`opencode`), the model-agnostic open-source * coding agent. * * Spawns `opencode run "" --format json` per turn and maps OpenCode's * JSON event stream to the unified {@link AgentEvent} stream. Model-agnostic: * the model is passed as `provider/model` via `-m`, and provider API keys are * forwarded through the environment. * * @remarks * - The prompt is a **positional argument** — OpenCode's `-p` flag is a * basic-auth password, not the prompt. * - Session resume via `-s `; the session id is captured from the run's * session event and emitted as `session_info`. * - OpenCode's `run --format json` event field names are not fully pinned * upstream; {@link handleJson} reads them defensively. * * @see https://github.com/sst/opencode * @docLink packages/bridge/drivers#opencode-driver */ export declare class OpenCodeDriver extends SubprocessCliDriver { readonly driverInfo: DriverInfo; protected readonly log: Logger; protected readonly defaultBin = "opencode"; protected readonly productName = "OpenCode"; protected readonly envPrefix = "OPENCODE"; protected buildArgs(message: string, resumeId: string | undefined): string[]; protected buildEnv(): Record; protected installHint(): string; protected handleJson(json: any): void; listModels(): Promise; } /** * `DriverTarget` wrapper for the opencode driver. Registered into the plugin * registry by `registerBuiltinDrivers()`. */ export declare const opencodeDriverTarget: DriverTarget; //# sourceMappingURL=opencode.d.ts.map