(input: unknown)
| 5 | import { UI } from "./ui" |
| 6 | |
| 7 | export function FormatError(input: unknown) { |
| 8 | if (MCP.Failed.isInstance(input)) |
| 9 | return `MCP server "${input.data.name}" failed. Check your configuration and try running \`arctic mcp auth\` if it requires authentication.` |
| 10 | if (Provider.ModelNotFoundError.isInstance(input)) { |
| 11 | const { providerID, modelID, suggestions } = input.data |
| 12 | return [ |
| 13 | `Model not found: ${providerID}/${modelID}`, |
| 14 | ...(Array.isArray(suggestions) && suggestions.length ? ["Did you mean: " + suggestions.join(", ")] : []), |
| 15 | `Try: \`arctic models\` to list available models`, |
| 16 | `Or check your config (arctic.json) provider/model names`, |
| 17 | ].join("\n") |
| 18 | } |
| 19 | if (Provider.InitError.isInstance(input)) { |
| 20 | return `Failed to initialize provider "${input.data.providerID}". Check credentials and configuration.` |
| 21 | } |
| 22 | if (Config.JsonError.isInstance(input)) { |
| 23 | return ( |
| 24 | `Config file at ${input.data.path} is not valid JSON(C)` + (input.data.message ? `: ${input.data.message}` : "") |
| 25 | ) |
| 26 | } |
| 27 | if (Config.ConfigDirectoryTypoError.isInstance(input)) { |
| 28 | return `Directory "${input.data.dir}" in ${input.data.path} is not valid. Rename the directory to "${input.data.suggestion}" or remove it. This is a common typo.` |
| 29 | } |
| 30 | if (ConfigMarkdown.FrontmatterError.isInstance(input)) { |
| 31 | return `Failed to parse frontmatter in ${input.data.path}:\n${input.data.message}` |
| 32 | } |
| 33 | if (Config.InvalidError.isInstance(input)) |
| 34 | return [ |
| 35 | `Config file at ${input.data.path} is invalid` + (input.data.message ? `: ${input.data.message}` : ""), |
| 36 | ...(input.data.issues?.map((issue) => "↳ " + issue.message + " " + issue.path.join(".")) ?? []), |
| 37 | ].join("\n") |
| 38 | |
| 39 | if (UI.CancelledError.isInstance(input)) return "" |
| 40 | } |
| 41 | |
| 42 | export function FormatUnknownError(input: unknown): string { |
| 43 | if (input instanceof Error) { |
no test coverage detected