aps-agent/server/provider-sdk/errors.ts

26 lines
1019 B
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Provider 错误分类(实施设计 5:统一映射为六类)。
*
* Provider 抛出的错误会被 Core 归一化成这六种之一;界面按 kind 决定提示与是否可重试,
* 不用话术圆场(实施设计 2.5「失败显式」)。
*/
export const ERROR_KINDS = ['invalid_argument', 'forbidden', 'conflict', 'rate_limited', 'unavailable', 'unknown_result'] as const;
export type ErrorKind = (typeof ERROR_KINDS)[number];
export function isErrorKind(value: unknown): value is ErrorKind {
return typeof value === 'string' && (ERROR_KINDS as readonly string[]).includes(value);
}
/** Provider 应抛这个错误,而不是裸 Error——裸 Error 会被 Core 归为 unknown_result */
export class ProviderError extends Error {
readonly kind: ErrorKind;
readonly detail?: unknown;
constructor(kind: ErrorKind, message: string, detail?: unknown) {
super(message);
this.name = 'ProviderError';
this.kind = kind;
if (detail !== undefined) this.detail = detail;
}
}