parsed_arguments: isAutoParsableTool()

in lib/parser.ts [207:248]


      parsed_arguments: isAutoParsableTool(inputTool)
        ? inputTool.$parseRaw(toolCall.function.arguments)
        : inputTool?.function.strict
        ? JSON.parse(toolCall.function.arguments)
        : null,
    },
  };
}

export function shouldParseToolCall(
  params: ChatCompletionCreateParams | null | undefined,
  toolCall: ChatCompletionMessageToolCall,
): boolean {
  if (!params) {
    return false;
  }

  const inputTool = params.tools?.find((inputTool) =>
    inputTool.function?.name === toolCall.function.name
  );
  return isAutoParsableTool(inputTool) || inputTool?.function.strict || false;
}

export function hasAutoParseableInput(
  params: AnyChatCompletionCreateParams,
): boolean {
  if (isAutoParsableResponseFormat(params.response_format)) {
    return true;
  }

  return (
    params.tools?.some(
      (t) =>
        isAutoParsableTool(t) ||
        (t.type === "function" && t.function.strict === true),
    ) ?? false
  );
}

export function validateInputTools(tools: ChatCompletionTool[] | undefined) {
  for (const tool of tools ?? []) {
    if (tool.type !== "function") {