diff options
| author | Aiden Cline <[email protected]> | 2025-12-01 01:33:32 -0600 |
|---|---|---|
| committer | Aiden Cline <[email protected]> | 2025-12-01 01:33:32 -0600 |
| commit | b1b82977ec0691ac3943775a5efed1e7869d6a7e (patch) | |
| tree | 63d1f28fe42690be6c1ef0fd0437d2a983320ce5 | |
| parent | f6262460ff331c960c7e26202ffff17f16cb515a (diff) | |
| download | opencode-b1b82977ec0691ac3943775a5efed1e7869d6a7e.tar.gz opencode-b1b82977ec0691ac3943775a5efed1e7869d6a7e.zip | |
tweak: better err msgs
| -rw-r--r-- | packages/opencode/src/provider/transform.ts | 26 | ||||
| -rw-r--r-- | packages/opencode/src/session/message-v2.ts | 2 |
2 files changed, 23 insertions, 5 deletions
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 1cf53e5c6..dc640ef6b 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -1,4 +1,5 @@ -import type { ModelMessage } from "ai" +import type { APICallError, ModelMessage } from "ai" +import { STATUS_CODES } from "http" import { unique } from "remeda" import type { JSONSchema } from "zod/v4/core" @@ -308,11 +309,28 @@ export namespace ProviderTransform { return schema } - export function error(providerID: string, message: string) { + export function error(providerID: string, error: APICallError) { + let message = error.message if (providerID === "github-copilot" && message.includes("The requested model is not supported")) { - message += + return ( + message + "\n\nMake sure the model is enabled in your copilot settings: https://github.com/settings/copilot/features" + ) } - return message + + if (!error.responseBody || (error.statusCode && message !== STATUS_CODES[error.statusCode])) { + return message + } + + try { + const body = JSON.parse(error.responseBody) + // try to extract common error message fields + const errMsg = body.message || body.error + if (errMsg && typeof errMsg === "string") { + return `${message}: ${errMsg}` + } + } catch {} + + return `${message}: ${error.responseBody}` } } diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index 718e90921..f7b3ed479 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -739,7 +739,7 @@ export namespace MessageV2 { { cause: e }, ).toObject() case APICallError.isInstance(e): - const message = ProviderTransform.error(ctx.providerID, e.message) + const message = ProviderTransform.error(ctx.providerID, e) return new MessageV2.APIError( { message, |
