From 7d3752c14ce8dd03cfaac03ee4062a877808a69c Mon Sep 17 00:00:00 2001 From: Dax Date: Tue, 20 Oct 2026 21:48:07 -0400 Subject: [PATCH] fix(core): send legacy console.opencode.ai credentials to opencode.ai/console (#57588) --- packages/core/src/plugin/provider/opencode.ts | 5 ++++- .../test/plugin/provider-opencode.test.ts | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/core/src/plugin/provider/opencode.ts b/packages/core/src/plugin/provider/opencode.ts index 4d5964cb0a1..0d2250346b8 100644 --- a/packages/core/src/plugin/provider/opencode.ts +++ b/packages/core/src/plugin/provider/opencode.ts @@ -601,7 +601,10 @@ function credentialHeaders(value: Credential.Key | Credential.OAuth): Record(body: Readonly> | undefined) { diff --git a/packages/core/test/plugin/provider-opencode.test.ts b/packages/core/test/plugin/provider-opencode.test.ts index c6481375ac1..dd93d600db7 100644 --- a/packages/core/test/plugin/provider-opencode.test.ts +++ b/packages/core/test/plugin/provider-opencode.test.ts @@ -1313,6 +1313,25 @@ describe("OpencodePlugin", () => { }), ) + it.effect("sends credentials saved with the retired console.opencode.ai host to the default Console", () => + Effect.gen(function* () { + const credentials = yield* Credential.Service + const requests: string[] = [] + const http = HttpClient.make((request) => { + requests.push(request.url) + return Effect.succeed(HttpClientResponse.fromWeb(request, new Response(null, { status: 404 }))) + }) + yield* credentials.create({ + integrationID: Integration.ID.make("opencode"), + value: Credential.Key.make({ type: "key", key: "secret", metadata: { server: "https://console.opencode.ai" } }), + }) + yield* addPlugin().pipe(Effect.provideService(HttpClient.HttpClient, http)) + yield* drain + + expect(requests).toEqual(["https://opencode.ai/console/api/v2/config"]) + }), + ) + it.effect("reports a rejected Console refresh token as signed out without removing the credential", () => Effect.acquireUseRelease( Effect.sync(() =>