55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import { LanguageModelV1FunctionTool } from '../language-model/v1/language-model-v1-function-tool';
|
|
import { getErrorMessage } from './get-error-message';
|
|
|
|
export class ToolCallParseError extends Error {
|
|
readonly cause: unknown;
|
|
readonly text: string;
|
|
readonly tools: LanguageModelV1FunctionTool[];
|
|
|
|
constructor({
|
|
cause,
|
|
text,
|
|
tools,
|
|
message = `Failed to parse tool calls: ${getErrorMessage(cause)}`,
|
|
}: {
|
|
cause: unknown;
|
|
text: string;
|
|
tools: LanguageModelV1FunctionTool[];
|
|
message?: string;
|
|
}) {
|
|
super(message);
|
|
|
|
this.name = 'AI_ToolCallParseError';
|
|
|
|
this.cause = cause;
|
|
this.text = text;
|
|
this.tools = tools;
|
|
}
|
|
|
|
static isToolCallParseError(error: unknown): error is ToolCallParseError {
|
|
return (
|
|
error instanceof Error &&
|
|
error.name === 'AI_ToolCallParseError' &&
|
|
'cause' in error &&
|
|
error.cause != undefined &&
|
|
'text' in error &&
|
|
error.text != undefined &&
|
|
typeof error.text === 'string' &&
|
|
'tools' in error &&
|
|
error.tools != undefined
|
|
);
|
|
}
|
|
|
|
toJSON() {
|
|
return {
|
|
name: this.name,
|
|
message: this.message,
|
|
stack: this.stack,
|
|
|
|
cause: this.cause,
|
|
text: this.text,
|
|
tools: this.tools,
|
|
};
|
|
}
|
|
}
|