fix(TUI): make tui work when OPENCODE_SERVER_PASSWORD is set (#8179)
This commit is contained in:
@@ -9,6 +9,7 @@ import { Config } from "@/config/config"
|
|||||||
import { GlobalBus } from "@/bus/global"
|
import { GlobalBus } from "@/bus/global"
|
||||||
import { createOpencodeClient, type Event } from "@opencode-ai/sdk/v2"
|
import { createOpencodeClient, type Event } from "@opencode-ai/sdk/v2"
|
||||||
import type { BunWebSocketData } from "hono/bun"
|
import type { BunWebSocketData } from "hono/bun"
|
||||||
|
import { Flag } from "@/flag/flag"
|
||||||
|
|
||||||
await Log.init({
|
await Log.init({
|
||||||
print: process.argv.includes("--print-logs"),
|
print: process.argv.includes("--print-logs"),
|
||||||
@@ -50,6 +51,8 @@ const startEventStream = (directory: string) => {
|
|||||||
|
|
||||||
const fetchFn = (async (input: RequestInfo | URL, init?: RequestInit) => {
|
const fetchFn = (async (input: RequestInfo | URL, init?: RequestInit) => {
|
||||||
const request = new Request(input, init)
|
const request = new Request(input, init)
|
||||||
|
const auth = getAuthorizationHeader()
|
||||||
|
if (auth) request.headers.set("Authorization", auth)
|
||||||
return Server.App().fetch(request)
|
return Server.App().fetch(request)
|
||||||
}) as typeof globalThis.fetch
|
}) as typeof globalThis.fetch
|
||||||
|
|
||||||
@@ -95,9 +98,14 @@ startEventStream(process.cwd())
|
|||||||
|
|
||||||
export const rpc = {
|
export const rpc = {
|
||||||
async fetch(input: { url: string; method: string; headers: Record<string, string>; body?: string }) {
|
async fetch(input: { url: string; method: string; headers: Record<string, string>; body?: string }) {
|
||||||
|
const headers = { ...input.headers }
|
||||||
|
const auth = getAuthorizationHeader()
|
||||||
|
if (auth && !headers["authorization"] && !headers["Authorization"]) {
|
||||||
|
headers["Authorization"] = auth
|
||||||
|
}
|
||||||
const request = new Request(input.url, {
|
const request = new Request(input.url, {
|
||||||
method: input.method,
|
method: input.method,
|
||||||
headers: input.headers,
|
headers,
|
||||||
body: input.body,
|
body: input.body,
|
||||||
})
|
})
|
||||||
const response = await Server.App().fetch(request)
|
const response = await Server.App().fetch(request)
|
||||||
@@ -135,3 +143,10 @@ export const rpc = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Rpc.listen(rpc)
|
Rpc.listen(rpc)
|
||||||
|
|
||||||
|
function getAuthorizationHeader(): string | undefined {
|
||||||
|
const password = Flag.OPENCODE_SERVER_PASSWORD
|
||||||
|
if (!password) return undefined
|
||||||
|
const username = Flag.OPENCODE_SERVER_USERNAME ?? "opencode"
|
||||||
|
return `Basic ${btoa(`${username}:${password}`)}`
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user