summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoropencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>2025-11-06 19:07:27 -0600
committerGitHub <[email protected]>2025-11-06 19:07:27 -0600
commit9f603e39a6ed863a4edaddeeb5444804fc0b8998 (patch)
tree4d68d1ec2384609762285cc8c2dc5a0f0dcbf876
parentda51c9dfac1f01907186b4e18c981ec45c870e23 (diff)
downloadopencode-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.ts38
-rw-r--r--packages/opencode/src/cli/cmd/acp.ts3
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")