MCPcopy Create free account
hub / github.com/arctic-cli/interface / fromError

Function fromError

packages/arctic/src/session/message-v2.ts:609–669  ·  view source on GitHub ↗
(e: unknown, ctx: { providerID: string })

Source from the content-addressed store, hash-verified

607 }
608
609 export function fromError(e: unknown, ctx: { providerID: string }) {
610 switch (true) {
611 case e instanceof DOMException && e.name === "AbortError":
612 return new MessageV2.AbortedError(
613 { message: e.message },
614 {
615 cause: e,
616 },
617 ).toObject()
618 case MessageV2.OutputLengthError.isInstance(e):
619 return e
620 case LoadAPIKeyError.isInstance(e):
621 return new MessageV2.AuthError(
622 {
623 providerID: ctx.providerID,
624 message: e.message,
625 },
626 { cause: e },
627 ).toObject()
628 case APICallError.isInstance(e):
629 const message = iife(() => {
630 let msg = e.message
631 const transformed = ProviderTransform.error(ctx.providerID, e)
632 if (transformed !== msg) {
633 return transformed
634 }
635 if (!e.responseBody || (e.statusCode && msg !== STATUS_CODES[e.statusCode])) {
636 return msg
637 }
638
639 try {
640 const body = JSON.parse(e.responseBody)
641 // try to extract common error message fields
642 const errMsg =
643 (typeof body.error?.friendly_message === "string" && body.error.friendly_message) ||
644 (typeof body.error?.message === "string" && body.error.message) ||
645 (typeof body.message === "string" && body.message)
646 if (errMsg && typeof errMsg === "string") {
647 return `${msg}: ${errMsg}`
648 }
649 } catch {}
650
651 return `${msg}: ${e.responseBody}`
652 })
653
654 return new MessageV2.APIError(
655 {
656 message,
657 statusCode: e.statusCode,
658 isRetryable: e.isRetryable,
659 responseHeaders: e.responseHeaders,
660 responseBody: e.responseBody,
661 },
662 { cause: e },
663 ).toObject()
664 case e instanceof Error:
665 return new NamedError.Unknown({ message: e.toString() }, { cause: e }).toObject()
666 default:

Callers

nothing calls this directly

Calls 3

iifeFunction · 0.90
toObjectMethod · 0.80
isInstanceMethod · 0.80

Tested by

no test coverage detected