Download packages/app/src/utils/server.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.83 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/src/utils/server.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/app/src/utils/server.ts
-
curl -L -o server.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/src/utils/server.ts
1.83 kB
| import { createOpencodeClient } from "@opencode-ai/sdk/v2/client" | |
| import { OpenCode, type OpenCodeClient } from "@opencode-ai/client/promise" | |
| 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, | |
| ...config | |
| }: Omit<NonNullable<Parameters<typeof createOpencodeClient>[0]>, "baseUrl"> & { | |
| server: ServerConnection.HttpBase | |
| }) { | |
| const auth = (() => { | |
| if (!server.password) return | |
| return { | |
| Authorization: `Basic ${authTokenFromCredentials({ username: server.username, password: server.password })}`, | |
| } | |
| })() | |
| return createOpencodeClient({ | |
| ...config, | |
| headers: { | |
| ...(config.headers instanceof Headers ? Object.fromEntries(config.headers.entries()) : config.headers), | |
| ...auth, | |
| }, | |
| baseUrl: server.url, | |
| }) | |
| } | |
| export function createApiForServer(input: { | |
| server: ServerConnection.HttpBase | |
| fetch?: typeof globalThis.fetch | |
| }): OpenCodeClient { | |
| return OpenCode.make({ | |
| baseUrl: input.server.url, | |
| fetch: input.fetch, | |
| headers: input.server.password | |
| ? { | |
| Authorization: `Basic ${authTokenFromCredentials({ | |
| username: input.server.username, | |
| password: input.server.password, | |
| })}`, | |
| } | |
| : undefined, | |
| }) | |
| } | |
| export type ServerApi = OpenCodeClient | |