fix: show API error messages in remaining CLI and TUI paths (#50783)

This commit is contained in:
Aiden Cline
2026-09-22 20:16:45 -05:00
committed by GitHub
parent 2e4abeb25d
commit 740072694d
5 changed files with 17 additions and 18 deletions
+2 -1
View File
@@ -2,6 +2,7 @@ import type { Endpoint } from "@opencode/client/effect/service"
import { Effect } from "effect"
import path from "node:path"
import { Standalone } from "../services/standalone"
import { errorMessage } from "../util/error"
import { reportRunError, runNonInteractiveWithOptions, type RunCommandInput } from "./run"
export type V1RunCommandInput = {
@@ -53,7 +54,7 @@ export function runV1Bridge(input: V1RunCommandInput) {
)
}),
),
).catch((error) => reportRunError(input, error instanceof Error ? error.message : String(error)))
).catch((error) => reportRunError(input, errorMessage(error)))
}
function nativeInput(input: V1RunCommandInput, endpoint: Endpoint): RunCommandInput {
+6 -11
View File
@@ -1,5 +1,6 @@
import type { LocationGetOutput, ModelRef, OpenCodeClient, SessionInfo } from "@opencode/client/promise"
import { Model } from "@opencode/schema/model"
import { errorMessage } from "./util/error"
const SESSION_PAGE_LIMIT = 50
@@ -24,7 +25,7 @@ export class SessionTargetMutationError extends Error {
override readonly name = "SessionTargetMutationError"
constructor(cause: unknown) {
super(cause instanceof Error ? cause.message : "Session target mutation failed", { cause })
super(errorMessage(cause), { cause })
}
}
@@ -125,11 +126,9 @@ async function selectSession(input: {
if (!selected) return { session: undefined, location }
return {
session: input.fork
? await input.client.session
.fork({ sessionID: selected.id }, ...requestOptions(input.signal))
.catch((error) => {
throw new SessionTargetMutationError(error)
})
? await input.client.session.fork({ sessionID: selected.id }, ...requestOptions(input.signal)).catch((error) => {
throw new SessionTargetMutationError(error)
})
: selected,
}
}
@@ -156,11 +155,7 @@ async function latestSession(
return latestSession(client, location, page.cursor.next, signal)
}
function resolveLocation(
client: OpenCodeClient,
location?: { directory?: string },
signal?: AbortSignal,
) {
function resolveLocation(client: OpenCodeClient, location?: { directory?: string }, signal?: AbortSignal) {
if (!location && !signal) return client.location.get()
if (!location) return client.location.get(undefined, { signal })
return client.location.get({ location }, ...requestOptions(signal))