diff options
| author | opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com> | 2025-11-06 19:07:27 -0600 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-06 19:07:27 -0600 |
| commit | 9f603e39a6ed863a4edaddeeb5444804fc0b8998 (patch) | |
| tree | 4d68d1ec2384609762285cc8c2dc5a0f0dcbf876 | |
| parent | da51c9dfac1f01907186b4e18c981ec45c870e23 (diff) | |
| download | opencode-9f603e39a6ed863a4edaddeeb5444804fc0b8998.tar.gz opencode-9f603e39a6ed863a4edaddeeb5444804fc0b8998.zip | |
Fixed ACP to respect user's default model config. (#4006)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <[email protected]>
Co-authored-by: GitHub Action <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>
| -rw-r--r-- | packages/opencode/src/acp/agent.ts | 38 | ||||
| -rw-r--r-- | packages/opencode/src/cli/cmd/acp.ts | 3 |
2 files changed, 31 insertions, 10 deletions
diff --git a/packages/opencode/src/acp/agent.ts b/packages/opencode/src/acp/agent.ts index 4eaf76cfe..046c8262d 100644 --- a/packages/opencode/src/acp/agent.ts +++ b/packages/opencode/src/acp/agent.ts @@ -32,7 +32,7 @@ import { Command } from "@/command" import { Agent as Agents } from "@/agent/agent" import { Permission } from "@/permission" import { SessionCompaction } from "@/session/compaction" -import type { Config } from "@/config/config" +import { Config } from "@/config/config" import { MCP } from "@/mcp" import { Todo } from "@/session/todo" import { z } from "zod" @@ -41,6 +41,18 @@ import { LoadAPIKeyError } from "ai" export namespace ACP { const log = Log.create({ service: "acp-agent" }) + export async function init() { + const model = await defaultModel({}) + return { + create: (connection: AgentSideConnection, config: ACPConfig) => { + if (!config.defaultModel) { + config.defaultModel = model + } + return new Agent(connection, config) + }, + } + } + export class Agent implements ACPAgent { private sessionManager = new ACPSessionManager() private connection: AgentSideConnection @@ -48,13 +60,6 @@ export namespace ACP { constructor(connection: AgentSideConnection, config: ACPConfig = {}) { this.connection = connection - if (!config.defaultModel) { - // default to big pickle - config.defaultModel = { - providerID: "opencode", - modelID: "big-pickle", - } - } this.config = config this.setupEventSubscriptions() } @@ -685,7 +690,22 @@ export namespace ACP { async function defaultModel(config: ACPConfig) { const configured = config.defaultModel if (configured) return configured - return Provider.defaultModel() + + const model = await Config.get() + .then((cfg) => { + if (!cfg.model) return undefined + const parsed = Provider.parseModel(cfg.model) + return { + providerID: parsed.providerID, + modelID: parsed.modelID, + } + }) + .catch((error) => { + log.error("failed to load user config for default model", { error }) + return undefined + }) + + return model ?? { providerID: "opencode", modelID: "big-pickle" } } function parseUri( diff --git a/packages/opencode/src/cli/cmd/acp.ts b/packages/opencode/src/cli/cmd/acp.ts index de461e170..77ef0c60c 100644 --- a/packages/opencode/src/cli/cmd/acp.ts +++ b/packages/opencode/src/cli/cmd/acp.ts @@ -50,9 +50,10 @@ export const AcpCommand = cmd({ }) const stream = ndJsonStream(input, output) + const agent = await ACP.init() new AgentSideConnection((conn) => { - return new ACP.Agent(conn) + return agent.create(conn, {}) }, stream) log.info("setup connection") |
