summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/utils/server.ts
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-05-03 17:13:42 -0400
committerGitHub <[email protected]>2026-05-03 21:13:42 +0000
commitca6150d6f092cc8761d6072b0b07b6a7de8748cf (patch)
tree2e62b173530b8bb8f1d0d9583764217d3b7a888b /packages/app/src/utils/server.ts
parent825ab2e38d1f41074bb536b6ba5771f30594b197 (diff)
downloadopencode-ca6150d6f092cc8761d6072b0b07b6a7de8748cf.tar.gz
opencode-ca6150d6f092cc8761d6072b0b07b6a7de8748cf.zip
fix(app): preserve auth token credentials (#25636)
Diffstat (limited to 'packages/app/src/utils/server.ts')
-rw-r--r--packages/app/src/utils/server.ts18
1 files changed, 17 insertions, 1 deletions
diff --git a/packages/app/src/utils/server.ts b/packages/app/src/utils/server.ts
index ae849b71e..603784e4d 100644
--- a/packages/app/src/utils/server.ts
+++ b/packages/app/src/utils/server.ts
@@ -1,5 +1,21 @@
import { createOpencodeClient } from "@opencode-ai/sdk/v2/client"
import type { ServerConnection } from "@/context/server"
+import { decode64 } from "@/utils/base64"
+
+export function authTokenFromCredentials(input: { username?: string; password: string }) {
+ return btoa(`${input.username ?? "opencode"}:${input.password}`)
+}
+
+export function authFromToken(token: string | null) {
+ const decoded = decode64(token ?? undefined)
+ if (!decoded) return
+ const separator = decoded.indexOf(":")
+ if (separator === -1) return
+ return {
+ username: decoded.slice(0, separator) || "opencode",
+ password: decoded.slice(separator + 1),
+ }
+}
export function createSdkForServer({
server,
@@ -10,7 +26,7 @@ export function createSdkForServer({
const auth = (() => {
if (!server.password) return
return {
- Authorization: `Basic ${btoa(`${server.username ?? "opencode"}:${server.password}`)}`,
+ Authorization: `Basic ${authTokenFromCredentials({ username: server.username, password: server.password })}`,
}
})()