openAIMessageToVercelAI: ZodEffects<
    ZodDiscriminatedUnion<
        "role",
        [
            ZodObject<
                {
                    content: ZodUnion<
                        [
                            ZodArray<
                                ZodObject<
                                    { text: ZodString; type: ZodLiteral<(...)> },
                                    "strip",
                                    ZodTypeAny,
                                    { text: string; type: "text" },
                                    { text: string; type: "text" },
                                >,
                                "many",
                            >,
                            ZodString,
                        ],
                    >;
                    name: ZodOptional<ZodString>;
                    role: ZodLiteral<"assistant">;
                    tool_call_id: ZodOptional<ZodString>;
                    tool_calls: ZodOptional<
                        ZodArray<
                            ZodObject<
                                {
                                    function: ZodObject<
                                        { arguments: ...; name: ... },
                                        "passthrough",
                                        ZodTypeAny,
                                        objectOutputType<(...), (...), (...)>,
                                        objectInputType<(...), (...), (...)>,
                                    >;
                                    id: ZodString;
                                    type: ZodEffects<ZodOptional<(...)>, "function", (...) | (...)>;
                                },
                                "strip",
                                ZodTypeAny,
                                {
                                    function: { arguments: ...; name: ... } & { [k: ...]: ... };
                                    id: string;
                                    type: "function";
                                },
                                {
                                    function: { arguments: ...; name: ... } & { [k: ...]: ... };
                                    id: string;
                                    type?: "function";
                                },
                            >,
                            "many",
                        >,
                    >;
                },
                "passthrough",
                ZodTypeAny,
                objectOutputType<
                    {
                        content: ZodUnion<
                            [
                                ZodArray<
                                    ZodObject<
                                        { text: ...; type: ... },
                                        "strip",
                                        ZodTypeAny,
                                        { text: ...; type: ... },
                                        { text: ...; type: ... },
                                    >,
                                    "many",
                                >,
                                ZodString,
                            ],
                        >;
                        name: ZodOptional<ZodString>;
                        role: ZodLiteral<"assistant">;
                        tool_call_id: ZodOptional<ZodString>;
                        tool_calls: ZodOptional<
                            ZodArray<
                                ZodObject<
                                    {
                                        function: ZodObject<(...), (...), (...), (...), (...)>;
                                        id: ZodString;
                                        type: ZodEffects<(...), (...), (...)>;
                                    },
                                    "strip",
                                    ZodTypeAny,
                                    { function: (...) & (...); id: string; type: "function" },
                                    { function: (...) & (...); id: string; type?: (...) | (...) },
                                >,
                                "many",
                            >,
                        >;
                    },
                    ZodTypeAny,
                    "passthrough",
                >,
                objectInputType<
                    {
                        content: ZodUnion<
                            [
                                ZodArray<
                                    ZodObject<
                                        { text: ...; type: ... },
                                        "strip",
                                        ZodTypeAny,
                                        { text: ...; type: ... },
                                        { text: ...; type: ... },
                                    >,
                                    "many",
                                >,
                                ZodString,
                            ],
                        >;
                        name: ZodOptional<ZodString>;
                        role: ZodLiteral<"assistant">;
                        tool_call_id: ZodOptional<ZodString>;
                        tool_calls: ZodOptional<
                            ZodArray<
                                ZodObject<
                                    {
                                        function: ZodObject<(...), (...), (...), (...), (...)>;
                                        id: ZodString;
                                        type: ZodEffects<(...), (...), (...)>;
                                    },
                                    "strip",
                                    ZodTypeAny,
                                    { function: (...) & (...); id: string; type: "function" },
                                    { function: (...) & (...); id: string; type?: (...) | (...) },
                                >,
                                "many",
                            >,
                        >;
                    },
                    ZodTypeAny,
                    "passthrough",
                >,
            >,
            ZodObject<
                {
                    content: ZodUnion<
                        [
                            ZodArray<
                                ZodObject<
                                    { text: ZodString; type: ZodLiteral<(...)> },
                                    "strip",
                                    ZodTypeAny,
                                    { text: string; type: "text" },
                                    { text: string; type: "text" },
                                >,
                                "many",
                            >,
                            ZodString,
                        ],
                    >;
                    role: ZodLiteral<"tool">;
                    tool_call_id: ZodString;
                },
                "passthrough",
                ZodTypeAny,
                objectOutputType<
                    {
                        content: ZodUnion<
                            [
                                ZodArray<
                                    ZodObject<
                                        { text: ...; type: ... },
                                        "strip",
                                        ZodTypeAny,
                                        { text: ...; type: ... },
                                        { text: ...; type: ... },
                                    >,
                                    "many",
                                >,
                                ZodString,
                            ],
                        >;
                        role: ZodLiteral<"tool">;
                        tool_call_id: ZodString;
                    },
                    ZodTypeAny,
                    "passthrough",
                >,
                objectInputType<
                    {
                        content: ZodUnion<
                            [
                                ZodArray<
                                    ZodObject<
                                        { text: ...; type: ... },
                                        "strip",
                                        ZodTypeAny,
                                        { text: ...; type: ... },
                                        { text: ...; type: ... },
                                    >,
                                    "many",
                                >,
                                ZodString,
                            ],
                        >;
                        role: ZodLiteral<"tool">;
                        tool_call_id: ZodString;
                    },
                    ZodTypeAny,
                    "passthrough",
                >,
            >,
            ZodObject<
                {
                    content: ZodNullable<ZodString>;
                    name: ZodString;
                    role: ZodLiteral<"function">;
                },
                "passthrough",
                ZodTypeAny,
                objectOutputType<
                    {
                        content: ZodNullable<ZodString>;
                        name: ZodString;
                        role: ZodLiteral<"function">;
                    },
                    ZodTypeAny,
                    "passthrough",
                >,
                objectInputType<
                    {
                        content: ZodNullable<ZodString>;
                        name: ZodString;
                        role: ZodLiteral<"function">;
                    },
                    ZodTypeAny,
                    "passthrough",
                >,
            >,
        ],
    >,
    | { content: string; role: "system" }
    | {
        content:
            | string
            | (
                | { text: string; type: "text" }
                | { image: string; mimeType?: string; type: "image" }
            )[];
        role: "user";
    }
    | {
        content: | string
        | (
            | { text: string; type: "text" }
            | {
                args: JSONLiteral;
                toolCallId: string;
                toolName: string;
                type: "tool-call";
            }
        )[];
        role: "assistant";
    }
    | {
        content: {
            result: JSONLiteral;
            toolCallId: string;
            toolName: string;
            type: "tool-result";
        }[];
        role: "tool";
    },
    | objectInputType<
        {
            content: ZodUnion<
                [
                    ZodArray<
                        ZodObject<
                            { text: ZodString; type: ZodLiteral<"text"> },
                            "strip",
                            ZodTypeAny,
                            { text: string; type: "text" },
                            { text: string; type: "text" },
                        >,
                        "many",
                    >,
                    ZodString,
                ],
            >;
            name: ZodOptional<ZodString>;
            role: ZodLiteral<"assistant">;
            tool_call_id: ZodOptional<ZodString>;
            tool_calls: ZodOptional<
                ZodArray<
                    ZodObject<
                        {
                            function: ZodObject<
                                { arguments: ZodString; name: ZodString },
                                "passthrough",
                                ZodTypeAny,
                                objectOutputType<
                                    { arguments: ...; name: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                                objectInputType<
                                    { arguments: ...; name: ... },
                                    ZodTypeAny,
                                    "passthrough",
                                >,
                            >;
                            id: ZodString;
                            type: ZodEffects<
                                ZodOptional<ZodLiteral<(...)>>,
                                "function",
                                undefined | "function",
                            >;
                        },
                        "strip",
                        ZodTypeAny,
                        {
                            function: { arguments: string; name: string } & {
                                [k: string]: unknown;
                            };
                            id: string;
                            type: "function";
                        },
                        {
                            function: { arguments: string; name: string } & {
                                [k: string]: unknown;
                            };
                            id: string;
                            type?: "function";
                        },
                    >,
                    "many",
                >,
            >;
        },
        ZodTypeAny,
        "passthrough",
    >
    | objectInputType<
        {
            content: ZodUnion<
                [
                    ZodArray<
                        ZodObject<
                            { text: ZodString; type: ZodLiteral<"text"> },
                            "strip",
                            ZodTypeAny,
                            { text: string; type: "text" },
                            { text: string; type: "text" },
                        >,
                        "many",
                    >,
                    ZodString,
                ],
            >;
            role: ZodLiteral<"tool">;
            tool_call_id: ZodString;
        },
        ZodTypeAny,
        "passthrough",
    >
    | objectInputType<
        {
            content: ZodNullable<ZodString>;
            name: ZodString;
            role: ZodLiteral<"function">;
        },
        ZodTypeAny,
        "passthrough",
    >
    | objectInputType<
        {
            content: ZodUnion<
                [
                    ZodArray<
                        ZodUnion<
                            [
                                ZodObject<
                                    { text: ...; type: ... },
                                    "strip",
                                    ZodTypeAny,
                                    { text: ...; type: ... },
                                    { text: ...; type: ... },
                                >,
                                ZodObject<
                                    { image_url: ...; type: ... },
                                    "strip",
                                    ZodTypeAny,
                                    { image_url: ...; type: ... },
                                    { image_url: ...; type: ... },
                                >,
                            ],
                        >,
                        "many",
                    >,
                    ZodString,
                ],
            >;
            name: ZodOptional<ZodString>;
            role: ZodLiteral<"user">;
        },
        ZodTypeAny,
        "passthrough",
    >
    | objectInputType<
        {
            content: ZodUnion<
                [
                    ZodArray<
                        ZodObject<
                            { text: ZodString; type: ZodLiteral<"text"> },
                            "strip",
                            ZodTypeAny,
                            { text: string; type: "text" },
                            { text: string; type: "text" },
                        >,
                        "many",
                    >,
                    ZodString,
                ],
            >;
            name: ZodOptional<ZodString>;
            role: ZodLiteral<"system">;
        },
        ZodTypeAny,
        "passthrough",
    >
    | objectInputType<
        {
            content: ZodUnion<
                [
                    ZodArray<
                        ZodObject<
                            { text: ZodString; type: ZodLiteral<"text"> },
                            "strip",
                            ZodTypeAny,
                            { text: string; type: "text" },
                            { text: string; type: "text" },
                        >,
                        "many",
                    >,
                    ZodString,
                ],
            >;
            name: ZodOptional<ZodString>;
            role: ZodLiteral<"developer">;
        },
        ZodTypeAny,
        "passthrough",
    >,
> = ...

Spoke → Hub: Convert a Prompt message to AI format