diff --git a/nodejs/src/protocols/acp/acp-adapter.ts b/nodejs/src/protocols/acp/acp-adapter.ts index 6a28eff59..1bf7057fe 100644 --- a/nodejs/src/protocols/acp/acp-adapter.ts +++ b/nodejs/src/protocols/acp/acp-adapter.ts @@ -313,9 +313,10 @@ class AcpConnection implements ProtocolConnection { if (config.model) { const id = ++this.requestId; - await this.transport.sendRequest(id, "session/set_model", { + await this.transport.sendRequest(id, "session/set_config_option", { sessionId, - modelId: config.model, + configId: "model", + value: config.model, }); } } diff --git a/nodejs/src/protocols/acp/acp-types.ts b/nodejs/src/protocols/acp/acp-types.ts index 9c62ac29f..acc5aaa11 100644 --- a/nodejs/src/protocols/acp/acp-types.ts +++ b/nodejs/src/protocols/acp/acp-types.ts @@ -87,31 +87,23 @@ export interface AcpServerCapabilities { // ============================================================================ /** - * ACP session/set_model request params + * ACP session/set_config_option request params + * @see https://agentclientprotocol.com/protocol/session-config-options */ -export interface AcpSetModelParams { +export interface AcpSetConfigOptionParams { sessionId: string; - modelId: string; + configId: string; + value: string; } /** - * ACP session/set_model response + * ACP session/set_config_option response + * Returns the complete configuration state after the change. */ -export interface AcpSetModelResult {} - -/** - * ACP session/set_mode request params - */ -export interface AcpSetModeParams { - sessionId: string; - modeId: string; +export interface AcpSetConfigOptionResult { + [configId: string]: string; } -/** - * ACP session/set_mode response - */ -export interface AcpSetModeResult {} - // ============================================================================ // ACP Session Types // ============================================================================ diff --git a/nodejs/test/protocols/acp/acp-adapter.test.ts b/nodejs/test/protocols/acp/acp-adapter.test.ts index fba2f224d..fe27ab58e 100644 --- a/nodejs/test/protocols/acp/acp-adapter.test.ts +++ b/nodejs/test/protocols/acp/acp-adapter.test.ts @@ -158,11 +158,16 @@ describe("AcpProtocolAdapter", () => { }; mockProcess.stdout.write(JSON.stringify(response) + "\n"); - // session.create with model triggers session/set_model + // session.create with model triggers session/set_config_option await new Promise((resolve) => setImmediate(resolve)); const sentData2 = mockProcess.stdin.read(); const sentMessage2 = JSON.parse(sentData2.toString().trim()); - expect(sentMessage2.method).toBe("session/set_model"); + expect(sentMessage2.method).toBe("session/set_config_option"); + expect(sentMessage2.params).toEqual({ + sessionId: "acp-session-123", + configId: "model", + value: "gemini-pro", + }); const response2 = { jsonrpc: "2.0", @@ -175,7 +180,7 @@ describe("AcpProtocolAdapter", () => { expect(result).toEqual({ sessionId: "acp-session-123" }); }); - it("should call session/set_model after session.create when model is provided", async () => { + it("should call session/set_config_option after session.create when model is provided", async () => { adapter.start(); await new Promise((resolve) => setImmediate(resolve)); @@ -203,16 +208,17 @@ describe("AcpProtocolAdapter", () => { // Wait for the set_model request to be sent await new Promise((resolve) => setImmediate(resolve)); - // Read the session/set_model request + // Read the session/set_config_option request const sentData2 = mockProcess.stdin.read(); const sentMessage2 = JSON.parse(sentData2.toString().trim()); - expect(sentMessage2.method).toBe("session/set_model"); + expect(sentMessage2.method).toBe("session/set_config_option"); expect(sentMessage2.params).toEqual({ sessionId: "acp-session-456", - modelId: "claude-sonnet-4-5-20250929", + configId: "model", + value: "claude-sonnet-4-5-20250929", }); - // Respond to session/set_model + // Respond to session/set_config_option const response2 = { jsonrpc: "2.0", id: sentMessage2.id, @@ -224,7 +230,7 @@ describe("AcpProtocolAdapter", () => { expect(result).toEqual({ sessionId: "acp-session-456" }); }); - it("should not call session/set_model when model is not provided", async () => { + it("should not call session/set_config_option when model is not provided", async () => { adapter.start(); await new Promise((resolve) => setImmediate(resolve)); @@ -251,7 +257,7 @@ describe("AcpProtocolAdapter", () => { const result = await createPromise; expect(result).toEqual({ sessionId: "acp-session-789" }); - // Verify no additional request was sent (no session/set_model) + // Verify no additional request was sent (no session/set_config_option) await new Promise((resolve) => setImmediate(resolve)); const extraData = mockProcess.stdin.read(); expect(extraData).toBeNull();