summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-12-01 01:33:32 -0600
committerAiden Cline <[email protected]>2025-12-01 01:33:32 -0600
commitb1b82977ec0691ac3943775a5efed1e7869d6a7e (patch)
tree63d1f28fe42690be6c1ef0fd0437d2a983320ce5
parentf6262460ff331c960c7e26202ffff17f16cb515a (diff)
downloadopencode-b1b82977ec0691ac3943775a5efed1e7869d6a7e.tar.gz
opencode-b1b82977ec0691ac3943775a5efed1e7869d6a7e.zip
tweak: better err msgs
-rw-r--r--packages/opencode/src/provider/transform.ts26
-rw-r--r--packages/opencode/src/session/message-v2.ts2
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,