in src/lib/server/textGeneration/tools.ts [289:332]
function parseExternalCall(callObj: Record<string, unknown>) {
let toolCall = callObj;
if (
isValidCallObject(callObj) &&
"function" in callObj &&
isValidCallObject(callObj.function) &&
"_name" in callObj.function
) {
toolCall = {
tool_name: callObj["function"]["_name"],
parameters: {
...callObj["function"],
_name: undefined,
},
};
}
const nameFields = ["tool_name", "name"] as const;
const parametersFields = ["parameters", "arguments", "parameter_definitions"] as const;
const groupedCall = {
tool_name: "" as string,
parameters: undefined as Record<string, string> | undefined,
};
for (const name of nameFields) {
if (toolCall[name]) {
groupedCall.tool_name = toolCall[name] as string;
}
}
for (const name of parametersFields) {
if (toolCall[name]) {
groupedCall.parameters = toolCall[name] as Record<string, string>;
}
}
return z
.object({
tool_name: z.string(),
parameters: z.record(z.any()),
})
.parse(groupedCall);
}