export type AgentErrorCode =
| "agent_aborted"
| "agent_max_turns_reached"
| "agent_model_error"
| "agent_model_capability_error"
| "agent_prompt_too_long"
| "agent_context_recovery_failed"
| "agent_tool_result_pairing_failed"
| "agent_transcript_error"
| "agent_invalid_state"
| "agent_unsupported_feature"
| "agent_tool_error_loop";
export type AgentError = {
code: AgentErrorCode;
message: string;
details?: unknown;
};
export class AgentRuntimeError extends Error {
readonly name = "AgentRuntimeError";
constructor(
readonly code: AgentErrorCode,
message: string,
readonly details?: unknown,
) {
super(message);
}
}
export function agentError(code: AgentErrorCode, message: string, details?: unknown): AgentError {
return { code, message, details };
}
export function normalizeAgentError(error: unknown): AgentError {
if (error instanceof AgentRuntimeError) {
return agentError(error.code, error.message, error.details);
}
if (error instanceof Error) {
return agentError("agent_invalid_state", error.message);
}
return agentError("agent_invalid_state", String(error));
}