function parseExternalCall()

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);
}