cloudaxe-opencode/packages/opencode/src/cli/error.ts

28 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-10-30 15:56:30 +00:00
import { ConfigMarkdown } from "@/config/markdown"
2025-06-20 04:57:28 +00:00
import { Config } from "../config/config"
2025-06-23 01:10:05 +00:00
import { MCP } from "../mcp"
import { UI } from "./ui"
2025-06-20 04:57:28 +00:00
export function FormatError(input: unknown) {
2025-06-23 01:10:05 +00:00
if (MCP.Failed.isInstance(input))
return `MCP server "${input.data.name}" failed. Note, opencode does not support MCP authentication yet.`
if (Config.JsonError.isInstance(input)) {
return (
2025-11-08 01:59:02 +00:00
`Config file at ${input.data.path} is not valid JSON(C)` + (input.data.message ? `: ${input.data.message}` : "")
)
}
2025-10-17 19:34:37 +00:00
if (Config.ConfigDirectoryTypoError.isInstance(input)) {
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.`
2025-10-17 19:34:37 +00:00
}
2025-10-30 15:56:30 +00:00
if (ConfigMarkdown.FrontmatterError.isInstance(input)) {
return `Failed to parse frontmatter in ${input.data.path}:\n${input.data.message}`
}
2025-06-20 04:57:28 +00:00
if (Config.InvalidError.isInstance(input))
return [
2025-11-08 01:59:02 +00:00
`Config file at ${input.data.path} is invalid` + (input.data.message ? `: ${input.data.message}` : ""),
...(input.data.issues?.map((issue) => "↳ " + issue.message + " " + issue.path.join(".")) ?? []),
2025-06-20 04:57:28 +00:00
].join("\n")
if (UI.CancelledError.isInstance(input)) return ""
2025-06-20 04:57:28 +00:00
}