tui: remove excessive debug logging from workspace creation flow to reduce terminal output noise

This commit is contained in:
Dax Raad
2026-04-26 19:33:40 -04:00
parent c68907ece2
commit e9071b0a80
2 changed files with 7 additions and 96 deletions
@@ -6,8 +6,7 @@ import { useSync } from "@tui/context/sync"
import { useProject } from "@tui/context/project" import { useProject } from "@tui/context/project"
import { createMemo, createSignal, onMount } from "solid-js" import { createMemo, createSignal, onMount } from "solid-js"
import { setTimeout as sleep } from "node:timers/promises" import { setTimeout as sleep } from "node:timers/promises"
import { errorData, errorMessage } from "@/util/error" import { errorMessage } from "@/util/error"
import * as Log from "@opencode-ai/core/util/log"
import { useSDK } from "../context/sdk" import { useSDK } from "../context/sdk"
import { useToast } from "../ui/toast" import { useToast } from "../ui/toast"
@@ -17,8 +16,6 @@ type Adaptor = {
description: string description: string
} }
const log = Log.Default.clone().tag("service", "tui-workspace")
function scoped(sdk: ReturnType<typeof useSDK>, sync: ReturnType<typeof useSync>, workspaceID: string) { function scoped(sdk: ReturnType<typeof useSDK>, sync: ReturnType<typeof useSync>, workspaceID: string) {
return createOpencodeClient({ return createOpencodeClient({
baseUrl: sdk.url, baseUrl: sdk.url,
@@ -37,18 +34,9 @@ export async function openWorkspaceSession(input: {
workspaceID: string workspaceID: string
}) { }) {
const client = scoped(input.sdk, input.sync, input.workspaceID) const client = scoped(input.sdk, input.sync, input.workspaceID)
log.info("workspace session create requested", {
workspaceID: input.workspaceID,
})
while (true) { while (true) {
const result = await client.session.create({ workspace: input.workspaceID }).catch((err) => { const result = await client.session.create({ workspace: input.workspaceID }).catch(() => undefined)
log.error("workspace session create request failed", {
workspaceID: input.workspaceID,
error: errorData(err),
})
return undefined
})
if (!result) { if (!result) {
input.toast.show({ input.toast.show({
message: "Failed to create workspace session", message: "Failed to create workspace session",
@@ -56,24 +44,11 @@ export async function openWorkspaceSession(input: {
}) })
return return
} }
log.info("workspace session create response", {
workspaceID: input.workspaceID,
status: result.response?.status,
sessionID: result.data?.id,
})
if (result.response?.status && result.response.status >= 500 && result.response.status < 600) { if (result.response?.status && result.response.status >= 500 && result.response.status < 600) {
log.warn("workspace session create retrying after server error", {
workspaceID: input.workspaceID,
status: result.response.status,
})
await sleep(1000) await sleep(1000)
continue continue
} }
if (!result.data) { if (!result.data) {
log.error("workspace session create returned no data", {
workspaceID: input.workspaceID,
status: result.response?.status,
})
input.toast.show({ input.toast.show({
message: "Failed to create workspace session", message: "Failed to create workspace session",
variant: "error", variant: "error",
@@ -85,10 +60,6 @@ export async function openWorkspaceSession(input: {
type: "session", type: "session",
sessionID: result.data.id, sessionID: result.data.id,
}) })
log.info("workspace session create complete", {
workspaceID: input.workspaceID,
sessionID: result.data.id,
})
input.dialog.clear() input.dialog.clear()
return return
} }
@@ -104,27 +75,10 @@ export async function restoreWorkspaceSession(input: {
sessionID: string sessionID: string
done?: () => void done?: () => void
}) { }) {
log.info("session restore requested", {
workspaceID: input.workspaceID,
sessionID: input.sessionID,
})
const result = await input.sdk.client.experimental.workspace const result = await input.sdk.client.experimental.workspace
.sessionRestore({ id: input.workspaceID, sessionID: input.sessionID }) .sessionRestore({ id: input.workspaceID, sessionID: input.sessionID })
.catch((err) => { .catch(() => undefined)
log.error("session restore request failed", {
workspaceID: input.workspaceID,
sessionID: input.sessionID,
error: errorData(err),
})
return undefined
})
if (!result?.data) { if (!result?.data) {
log.error("session restore failed", {
workspaceID: input.workspaceID,
sessionID: input.sessionID,
status: result?.response?.status,
error: result?.error ? errorData(result.error) : undefined,
})
input.toast.show({ input.toast.show({
message: `Failed to restore session: ${errorMessage(result?.error ?? "no response")}`, message: `Failed to restore session: ${errorMessage(result?.error ?? "no response")}`,
variant: "error", variant: "error",
@@ -132,33 +86,11 @@ export async function restoreWorkspaceSession(input: {
return return
} }
log.info("session restore response", {
workspaceID: input.workspaceID,
sessionID: input.sessionID,
status: result.response?.status,
total: result.data.total,
})
input.project.workspace.set(input.workspaceID) input.project.workspace.set(input.workspaceID)
try { await input.sync.bootstrap({ fatal: false }).catch(() => undefined)
await input.sync.bootstrap({ fatal: false })
} catch (e) {}
await Promise.all([input.project.workspace.sync(), input.sync.session.sync(input.sessionID)]).catch((err) => { await Promise.all([input.project.workspace.sync(), input.sync.session.sync(input.sessionID)])
log.error("session restore refresh failed", {
workspaceID: input.workspaceID,
sessionID: input.sessionID,
error: errorData(err),
})
throw err
})
log.info("session restore complete", {
workspaceID: input.workspaceID,
sessionID: input.sessionID,
total: result.data.total,
})
input.toast.show({ input.toast.show({
message: "Session restored into the new workspace", message: "Session restored into the new workspace",
@@ -230,47 +162,26 @@ export function DialogWorkspaceCreate(props: { onSelect: (workspaceID: string) =
const create = async (type: string) => { const create = async (type: string) => {
if (creating()) return if (creating()) return
setCreating(type) setCreating(type)
log.info("workspace create requested", {
type,
})
const result = await sdk.client.experimental.workspace.create({ type, branch: null }).catch((err) => { const result = await sdk.client.experimental.workspace.create({ type, branch: null }).catch(() => {
toast.show({ toast.show({
message: "Creating workspace failed", message: "Creating workspace failed",
variant: "error", variant: "error",
}) })
log.error("workspace create request failed", {
type,
error: errorData(err),
})
return undefined return undefined
}) })
const workspace = result?.data const workspace = result?.data
if (!workspace) { if (!workspace) {
setCreating(undefined) setCreating(undefined)
log.error("workspace create failed", {
type,
status: result?.response.status,
error: result?.error ? errorData(result.error) : undefined,
})
toast.show({ toast.show({
message: `Failed to create workspace: ${errorMessage(result?.error ?? "no response")}`, message: `Failed to create workspace: ${errorMessage(result?.error ?? "no response")}`,
variant: "error", variant: "error",
}) })
return return
} }
log.info("workspace create response", {
type,
workspaceID: workspace.id,
status: result.response?.status,
})
await project.workspace.sync() await project.workspace.sync()
log.info("workspace create synced", {
type,
workspaceID: workspace.id,
})
await props.onSelect(workspace.id) await props.onSelect(workspace.id)
setCreating(undefined) setCreating(undefined)
} }
+1 -1
View File
@@ -101,7 +101,7 @@ const app = (upgrade: UpgradeWebSocket) =>
}), }),
) )
const log = Log.Default.clone().tag("service", "server-proxy") const log = Log.create({ service: "server-proxy" })
export async function http(url: string | URL, extra: HeadersInit | undefined, req: Request, workspaceID: WorkspaceID) { export async function http(url: string | URL, extra: HeadersInit | undefined, req: Request, workspaceID: WorkspaceID) {
if (!Workspace.isSyncing(workspaceID)) { if (!Workspace.isSyncing(workspaceID)) {