Genkit JS API reference
    Preparing search index...

    Interface GenerateMiddlewareDef

    An instantiated implementation of a Generate Middleware. Provides optional hooks to intercept the high-level generate action, the underlying model execution, or individual tool calls, as well as tools to inject into the execution.

    interface GenerateMiddlewareDef {
        generate?: (
            envelope: {
                currentTurn: number;
                messageIndex: number;
                request: {
                    config?: any;
                    docs?: {
                        content: (
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text: string;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media: { contentType?: ...; url: ... };
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: (...) & (...);
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning: string;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource: { uri: ... };
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                        )[];
                        metadata?: Record<string, any>;
                    }[];
                    maxTurns?: number;
                    messages: {
                        content: (
                            | {
                                custom?: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<(...), (...)>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text: string;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<(...), (...)>;
                                data?: unknown;
                                media: { contentType?: (...) | (...); url: string };
                                metadata?: Record<(...), (...)>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<(...), (...)>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: {
                                    input?: unknown;
                                    name: string;
                                    partial?: (...) | (...) | (...);
                                    ref?: (...) | (...);
                                };
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<(...), (...)>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: { name: ...; output?: ...; ref?: ... } & {
                                    content?: ...;
                                };
                            }
                            | {
                                custom?: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<(...), (...)>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom: Record<string, any>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<(...), (...)>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<(...), (...)>;
                                reasoning: string;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<(...), (...)>;
                                reasoning?: undefined;
                                resource: { uri: string };
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    }[];
                    model?: string;
                    output?: {
                        constrained?: boolean;
                        contentType?: string;
                        format?: string;
                        instructions?: string
                        | boolean;
                        jsonSchema?: any;
                    };
                    resources?: string[];
                    resume?: {
                        metadata?: Record<string, any>;
                        respond?: {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: ...; output?: ...; ref?: ... } & {
                                content?: ...;
                            };
                        }[];
                        restart?: {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: (...) | (...) | (...);
                                ref?: (...) | (...);
                            };
                            toolResponse?: undefined;
                        }[];
                    };
                    returnToolRequests?: boolean;
                    stepName?: string;
                    toolChoice?: "required"
                    | "auto"
                    | "none";
                    tools?: string[];
                    use?: any[];
                };
            },
            ctx: ActionRunOptions<
                {
                    aggregated?: boolean;
                    content: (
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media: { contentType?: string; url: string };
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: boolean;
                                ref?: string;
                            };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: string; output?: unknown; ref?: string } & {
                                content?: (...)[];
                            };
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<string, any>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource: { uri: string };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    custom?: unknown;
                    index?: number;
                    role?: "user"
                    | "model"
                    | "tool"
                    | "system";
                },
            >,
            next: (
                envelope: {
                    currentTurn: number;
                    messageIndex: number;
                    request: {
                        config?: any;
                        docs?: {
                            content: (
                                | {
                                    custom?: ...;
                                    data?: ...;
                                    media?: ...;
                                    metadata?: ...;
                                    reasoning?: ...;
                                    resource?: ...;
                                    text: ...;
                                    toolRequest?: ...;
                                    toolResponse?: ...;
                                }
                                | {
                                    custom?: ...;
                                    data?: ...;
                                    media: ...;
                                    metadata?: ...;
                                    reasoning?: ...;
                                    resource?: ...;
                                    text?: ...;
                                    toolRequest?: ...;
                                    toolResponse?: ...;
                                }
                                | {
                                    custom?: ...;
                                    data?: ...;
                                    media?: ...;
                                    metadata?: ...;
                                    reasoning?: ...;
                                    resource?: ...;
                                    text?: ...;
                                    toolRequest: ...;
                                    toolResponse?: ...;
                                }
                                | {
                                    custom?: ...;
                                    data?: ...;
                                    media?: ...;
                                    metadata?: ...;
                                    reasoning?: ...;
                                    resource?: ...;
                                    text?: ...;
                                    toolRequest?: ...;
                                    toolResponse: ...;
                                }
                                | {
                                    custom?: ...;
                                    data?: ...;
                                    media?: ...;
                                    metadata?: ...;
                                    reasoning?: ...;
                                    resource?: ...;
                                    text?: ...;
                                    toolRequest?: ...;
                                    toolResponse?: ...;
                                }
                                | {
                                    custom: ...;
                                    data?: ...;
                                    media?: ...;
                                    metadata?: ...;
                                    reasoning?: ...;
                                    resource?: ...;
                                    text?: ...;
                                    toolRequest?: ...;
                                    toolResponse?: ...;
                                }
                                | {
                                    custom?: ...;
                                    data?: ...;
                                    media?: ...;
                                    metadata?: ...;
                                    reasoning: ...;
                                    resource?: ...;
                                    text?: ...;
                                    toolRequest?: ...;
                                    toolResponse?: ...;
                                }
                                | {
                                    custom?: ...;
                                    data?: ...;
                                    media?: ...;
                                    metadata?: ...;
                                    reasoning?: ...;
                                    resource: ...;
                                    text?: ...;
                                    toolRequest?: ...;
                                    toolResponse?: ...;
                                }
                            )[];
                            metadata?: Record<string, any>;
                        }[];
                        maxTurns?: number;
                        messages: {
                            content: (
                                | {
                                    custom?: (...)
                                    | (...);
                                    data?: unknown;
                                    media?: undefined;
                                    metadata?: (...) | (...);
                                    reasoning?: undefined;
                                    resource?: undefined;
                                    text: string;
                                    toolRequest?: undefined;
                                    toolResponse?: undefined;
                                }
                                | {
                                    custom?: (...)
                                    | (...);
                                    data?: unknown;
                                    media: { contentType?: ...; url: ... };
                                    metadata?: (...) | (...);
                                    reasoning?: undefined;
                                    resource?: undefined;
                                    text?: undefined;
                                    toolRequest?: undefined;
                                    toolResponse?: undefined;
                                }
                                | {
                                    custom?: (...)
                                    | (...);
                                    data?: unknown;
                                    media?: undefined;
                                    metadata?: (...) | (...);
                                    reasoning?: undefined;
                                    resource?: undefined;
                                    text?: undefined;
                                    toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                                    toolResponse?: undefined;
                                }
                                | {
                                    custom?: (...)
                                    | (...);
                                    data?: unknown;
                                    media?: undefined;
                                    metadata?: (...) | (...);
                                    reasoning?: undefined;
                                    resource?: undefined;
                                    text?: undefined;
                                    toolRequest?: undefined;
                                    toolResponse: (...) & (...);
                                }
                                | {
                                    custom?: (...)
                                    | (...);
                                    data?: unknown;
                                    media?: undefined;
                                    metadata?: (...) | (...);
                                    reasoning?: undefined;
                                    resource?: undefined;
                                    text?: undefined;
                                    toolRequest?: undefined;
                                    toolResponse?: undefined;
                                }
                                | {
                                    custom: Record<(...), (...)>;
                                    data?: unknown;
                                    media?: undefined;
                                    metadata?: (...) | (...);
                                    reasoning?: undefined;
                                    resource?: undefined;
                                    text?: undefined;
                                    toolRequest?: undefined;
                                    toolResponse?: undefined;
                                }
                                | {
                                    custom?: (...)
                                    | (...);
                                    data?: unknown;
                                    media?: undefined;
                                    metadata?: (...) | (...);
                                    reasoning: string;
                                    resource?: undefined;
                                    text?: undefined;
                                    toolRequest?: undefined;
                                    toolResponse?: undefined;
                                }
                                | {
                                    custom?: (...)
                                    | (...);
                                    data?: unknown;
                                    media?: undefined;
                                    metadata?: (...) | (...);
                                    reasoning?: undefined;
                                    resource: { uri: ... };
                                    text?: undefined;
                                    toolRequest?: undefined;
                                    toolResponse?: undefined;
                                }
                            )[];
                            metadata?: Record<string, unknown>;
                            role: "user" | "model" | "tool" | "system";
                        }[];
                        model?: string;
                        output?: {
                            constrained?: boolean;
                            contentType?: string;
                            format?: string;
                            instructions?: string
                            | boolean;
                            jsonSchema?: any;
                        };
                        resources?: string[];
                        resume?: {
                            metadata?: Record<string, any>;
                            respond?: {
                                custom?: (...) | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: (...) & (...);
                            }[];
                            restart?: {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                                toolResponse?: undefined;
                            }[];
                        };
                        returnToolRequests?: boolean;
                        stepName?: string;
                        toolChoice?: "required"
                        | "auto"
                        | "none";
                        tools?: string[];
                        use?: any[];
                    };
                },
                ctx: ActionRunOptions<
                    {
                        aggregated?: boolean;
                        content: (
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text: string;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media: { contentType?: string; url: string };
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: {
                                    input?: unknown;
                                    name: string;
                                    partial?: boolean;
                                    ref?: string;
                                };
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: { name: string; output?: unknown; ref?: (...) | (...) } & {
                                    content?: (...) | (...);
                                };
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom: Record<string, any>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning: string;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource: { uri: string };
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                        )[];
                        custom?: unknown;
                        index?: number;
                        role?: "user"
                        | "model"
                        | "tool"
                        | "system";
                    },
                >,
            ) => Promise<
                {
                    candidates?: {
                        custom?: unknown;
                        finishMessage?: string;
                        finishReason: | "length"
                        | "stop"
                        | "other"
                        | "unknown"
                        | "interrupted"
                        | "blocked"
                        | "aborted";
                        index: number;
                        message: {
                            content: (
                                (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                            )[];
                            metadata?: Record<(...), (...)>;
                            role: "user" | "model" | "tool" | "system";
                        };
                        usage?: {
                            cachedContentTokens?: (...)
                            | (...);
                            custom?: (...) | (...);
                            inputAudioFiles?: (...) | (...);
                            inputCharacters?: (...) | (...);
                            inputImages?: (...) | (...);
                            inputTokens?: (...) | (...);
                            inputVideos?: (...) | (...);
                            outputAudioFiles?: (...) | (...);
                            outputCharacters?: (...) | (...);
                            outputImages?: (...) | (...);
                            outputTokens?: (...) | (...);
                            outputVideos?: (...) | (...);
                            thoughtsTokens?: (...) | (...);
                            totalTokens?: (...) | (...);
                        };
                    }[];
                    custom?: unknown;
                    finishMessage?: string;
                    finishReason?: | "length"
                    | "stop"
                    | "other"
                    | "unknown"
                    | "interrupted"
                    | "blocked"
                    | "aborted";
                    latencyMs?: number;
                    message?: {
                        content: (
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text: string;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media: { contentType?: ...; url: ... };
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: (...) & (...);
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning: string;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource: { uri: ... };
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    };
                    operation?: {
                        action?: string;
                        done?: boolean;
                        error?: z.objectOutputType<
                            { message: z.ZodString },
                            z.ZodTypeAny,
                            "passthrough",
                        >;
                        id: string;
                        metadata?: Record<string, any>;
                        output?: any;
                    };
                    raw?: unknown;
                    request?: {
                        candidates?: number;
                        config?: any;
                        docs?: { content: (...)[]; metadata?: (...) | (...) }[];
                        messages: {
                            content: (
                                (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                            )[];
                            metadata?: Record<(...), (...)>;
                            role: "user" | "model" | "tool" | "system";
                        }[];
                        output?: {
                            constrained?: boolean;
                            contentType?: string;
                            format?: string;
                            schema?: Record<(...), (...)>;
                        };
                        toolChoice?: "required"
                        | "auto"
                        | "none";
                        tools?: {
                            description: string;
                            inputSchema?: (...) | (...) | (...);
                            metadata?: (...) | (...);
                            name: string;
                            outputSchema?: (...) | (...) | (...);
                        }[];
                    };
                    usage?: {
                        cachedContentTokens?: number;
                        custom?: Record<string, number>;
                        inputAudioFiles?: number;
                        inputCharacters?: number;
                        inputImages?: number;
                        inputTokens?: number;
                        inputVideos?: number;
                        outputAudioFiles?: number;
                        outputCharacters?: number;
                        outputImages?: number;
                        outputTokens?: number;
                        outputVideos?: number;
                        thoughtsTokens?: number;
                        totalTokens?: number;
                    };
                },
            >,
        ) => Promise<
            {
                candidates?: {
                    custom?: unknown;
                    finishMessage?: string;
                    finishReason: | "length"
                    | "stop"
                    | "other"
                    | "unknown"
                    | "interrupted"
                    | "blocked"
                    | "aborted";
                    index: number;
                    message: {
                        content: (
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    };
                    usage?: {
                        cachedContentTokens?: number;
                        custom?: Record<(...), (...)>;
                        inputAudioFiles?: number;
                        inputCharacters?: number;
                        inputImages?: number;
                        inputTokens?: number;
                        inputVideos?: number;
                        outputAudioFiles?: number;
                        outputCharacters?: number;
                        outputImages?: number;
                        outputTokens?: number;
                        outputVideos?: number;
                        thoughtsTokens?: number;
                        totalTokens?: number;
                    };
                }[];
                custom?: unknown;
                finishMessage?: string;
                finishReason?: | "length"
                | "stop"
                | "other"
                | "unknown"
                | "interrupted"
                | "blocked"
                | "aborted";
                latencyMs?: number;
                message?: {
                    content: (
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media: { contentType?: (...) | (...); url: string };
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: (...) | (...) | (...);
                                ref?: (...) | (...);
                            };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: ...; output?: ...; ref?: ... } & {
                                content?: ...;
                            };
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<string, any>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource: { uri: string };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                };
                operation?: {
                    action?: string;
                    done?: boolean;
                    error?: z.objectOutputType<
                        { message: z.ZodString },
                        z.ZodTypeAny,
                        "passthrough",
                    >;
                    id: string;
                    metadata?: Record<string, any>;
                    output?: any;
                };
                raw?: unknown;
                request?: {
                    candidates?: number;
                    config?: any;
                    docs?: {
                        content: (
                            (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                        )[];
                        metadata?: Record<(...), (...)>;
                    }[];
                    messages: {
                        content: (
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    }[];
                    output?: {
                        constrained?: boolean;
                        contentType?: string;
                        format?: string;
                        schema?: Record<string, any>;
                    };
                    toolChoice?: "required"
                    | "auto"
                    | "none";
                    tools?: {
                        description: string;
                        inputSchema?: Record<(...), (...)> | null;
                        metadata?: Record<(...), (...)>;
                        name: string;
                        outputSchema?: Record<(...), (...)> | null;
                    }[];
                };
                usage?: {
                    cachedContentTokens?: number;
                    custom?: Record<string, number>;
                    inputAudioFiles?: number;
                    inputCharacters?: number;
                    inputImages?: number;
                    inputTokens?: number;
                    inputVideos?: number;
                    outputAudioFiles?: number;
                    outputCharacters?: number;
                    outputImages?: number;
                    outputTokens?: number;
                    outputVideos?: number;
                    thoughtsTokens?: number;
                    totalTokens?: number;
                };
            },
        >;
        model?: (
            req: GenerateRequest<any>,
            ctx: ActionRunOptions<
                {
                    aggregated?: boolean;
                    content: (
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media: { contentType?: string; url: string };
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: boolean;
                                ref?: string;
                            };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: string; output?: unknown; ref?: string } & {
                                content?: (...)[];
                            };
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<string, any>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource: { uri: string };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    custom?: unknown;
                    index?: number;
                    role?: "user"
                    | "model"
                    | "tool"
                    | "system";
                },
            >,
            next: (
                req: GenerateRequest<any>,
                ctx: ActionRunOptions<
                    {
                        aggregated?: boolean;
                        content: (
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text: string;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media: { contentType?: string; url: string };
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: {
                                    input?: unknown;
                                    name: string;
                                    partial?: boolean;
                                    ref?: string;
                                };
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: { name: string; output?: unknown; ref?: (...) | (...) } & {
                                    content?: (...) | (...);
                                };
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom: Record<string, any>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning: string;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: Record<string, unknown>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: Record<string, unknown>;
                                reasoning?: undefined;
                                resource: { uri: string };
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                        )[];
                        custom?: unknown;
                        index?: number;
                        role?: "user"
                        | "model"
                        | "tool"
                        | "system";
                    },
                >,
            ) => Promise<
                {
                    candidates?: {
                        custom?: unknown;
                        finishMessage?: string;
                        finishReason: | "length"
                        | "stop"
                        | "other"
                        | "unknown"
                        | "interrupted"
                        | "blocked"
                        | "aborted";
                        index: number;
                        message: {
                            content: (
                                (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                            )[];
                            metadata?: Record<(...), (...)>;
                            role: "user" | "model" | "tool" | "system";
                        };
                        usage?: {
                            cachedContentTokens?: (...)
                            | (...);
                            custom?: (...) | (...);
                            inputAudioFiles?: (...) | (...);
                            inputCharacters?: (...) | (...);
                            inputImages?: (...) | (...);
                            inputTokens?: (...) | (...);
                            inputVideos?: (...) | (...);
                            outputAudioFiles?: (...) | (...);
                            outputCharacters?: (...) | (...);
                            outputImages?: (...) | (...);
                            outputTokens?: (...) | (...);
                            outputVideos?: (...) | (...);
                            thoughtsTokens?: (...) | (...);
                            totalTokens?: (...) | (...);
                        };
                    }[];
                    custom?: unknown;
                    finishMessage?: string;
                    finishReason?: | "length"
                    | "stop"
                    | "other"
                    | "unknown"
                    | "interrupted"
                    | "blocked"
                    | "aborted";
                    latencyMs?: number;
                    message?: {
                        content: (
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text: string;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media: { contentType?: ...; url: ... };
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: (...) & (...);
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning: string;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource: { uri: ... };
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    };
                    operation?: {
                        action?: string;
                        done?: boolean;
                        error?: z.objectOutputType<
                            { message: z.ZodString },
                            z.ZodTypeAny,
                            "passthrough",
                        >;
                        id: string;
                        metadata?: Record<string, any>;
                        output?: any;
                    };
                    raw?: unknown;
                    request?: {
                        candidates?: number;
                        config?: any;
                        docs?: { content: (...)[]; metadata?: (...) | (...) }[];
                        messages: {
                            content: (
                                (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                            )[];
                            metadata?: Record<(...), (...)>;
                            role: "user" | "model" | "tool" | "system";
                        }[];
                        output?: {
                            constrained?: boolean;
                            contentType?: string;
                            format?: string;
                            schema?: Record<(...), (...)>;
                        };
                        toolChoice?: "required"
                        | "auto"
                        | "none";
                        tools?: {
                            description: string;
                            inputSchema?: (...) | (...) | (...);
                            metadata?: (...) | (...);
                            name: string;
                            outputSchema?: (...) | (...) | (...);
                        }[];
                    };
                    usage?: {
                        cachedContentTokens?: number;
                        custom?: Record<string, number>;
                        inputAudioFiles?: number;
                        inputCharacters?: number;
                        inputImages?: number;
                        inputTokens?: number;
                        inputVideos?: number;
                        outputAudioFiles?: number;
                        outputCharacters?: number;
                        outputImages?: number;
                        outputTokens?: number;
                        outputVideos?: number;
                        thoughtsTokens?: number;
                        totalTokens?: number;
                    };
                },
            >,
        ) => Promise<
            {
                candidates?: {
                    custom?: unknown;
                    finishMessage?: string;
                    finishReason: | "length"
                    | "stop"
                    | "other"
                    | "unknown"
                    | "interrupted"
                    | "blocked"
                    | "aborted";
                    index: number;
                    message: {
                        content: (
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    };
                    usage?: {
                        cachedContentTokens?: number;
                        custom?: Record<(...), (...)>;
                        inputAudioFiles?: number;
                        inputCharacters?: number;
                        inputImages?: number;
                        inputTokens?: number;
                        inputVideos?: number;
                        outputAudioFiles?: number;
                        outputCharacters?: number;
                        outputImages?: number;
                        outputTokens?: number;
                        outputVideos?: number;
                        thoughtsTokens?: number;
                        totalTokens?: number;
                    };
                }[];
                custom?: unknown;
                finishMessage?: string;
                finishReason?: | "length"
                | "stop"
                | "other"
                | "unknown"
                | "interrupted"
                | "blocked"
                | "aborted";
                latencyMs?: number;
                message?: {
                    content: (
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media: { contentType?: (...) | (...); url: string };
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: (...) | (...) | (...);
                                ref?: (...) | (...);
                            };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: ...; output?: ...; ref?: ... } & {
                                content?: ...;
                            };
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<string, any>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource: { uri: string };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                };
                operation?: {
                    action?: string;
                    done?: boolean;
                    error?: z.objectOutputType<
                        { message: z.ZodString },
                        z.ZodTypeAny,
                        "passthrough",
                    >;
                    id: string;
                    metadata?: Record<string, any>;
                    output?: any;
                };
                raw?: unknown;
                request?: {
                    candidates?: number;
                    config?: any;
                    docs?: {
                        content: (
                            (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                        )[];
                        metadata?: Record<(...), (...)>;
                    }[];
                    messages: {
                        content: (
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    }[];
                    output?: {
                        constrained?: boolean;
                        contentType?: string;
                        format?: string;
                        schema?: Record<string, any>;
                    };
                    toolChoice?: "required"
                    | "auto"
                    | "none";
                    tools?: {
                        description: string;
                        inputSchema?: Record<(...), (...)> | null;
                        metadata?: Record<(...), (...)>;
                        name: string;
                        outputSchema?: Record<(...), (...)> | null;
                    }[];
                };
                usage?: {
                    cachedContentTokens?: number;
                    custom?: Record<string, number>;
                    inputAudioFiles?: number;
                    inputCharacters?: number;
                    inputImages?: number;
                    inputTokens?: number;
                    inputVideos?: number;
                    outputAudioFiles?: number;
                    outputCharacters?: number;
                    outputImages?: number;
                    outputTokens?: number;
                    outputVideos?: number;
                    thoughtsTokens?: number;
                    totalTokens?: number;
                };
            },
        >;
        tool?: (
            req: {
                custom?: Record<string, unknown>;
                data?: unknown;
                media?: undefined;
                metadata?: Record<string, unknown>;
                reasoning?: undefined;
                resource?: undefined;
                text?: undefined;
                toolRequest: {
                    input?: unknown;
                    name: string;
                    partial?: boolean;
                    ref?: string;
                };
                toolResponse?: undefined;
            },
            ctx: ActionRunOptions<any>,
            next: (
                req: {
                    custom?: Record<string, unknown>;
                    data?: unknown;
                    media?: undefined;
                    metadata?: Record<string, unknown>;
                    reasoning?: undefined;
                    resource?: undefined;
                    text?: undefined;
                    toolRequest: {
                        input?: unknown;
                        name: string;
                        partial?: boolean;
                        ref?: string;
                    };
                    toolResponse?: undefined;
                },
                ctx: ActionRunOptions<any>,
            ) => Promise<
                | {
                    custom?: Record<string, unknown>;
                    data?: unknown;
                    media?: undefined;
                    metadata?: Record<string, unknown>;
                    reasoning?: undefined;
                    resource?: undefined;
                    text?: undefined;
                    toolRequest?: undefined;
                    toolResponse: { name: string; output?: unknown; ref?: string } & {
                        content?: (
                            (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                        )[];
                    };
                }
                | undefined,
            >,
        ) => Promise<
            | {
                custom?: Record<string, unknown>;
                data?: unknown;
                media?: undefined;
                metadata?: Record<string, unknown>;
                reasoning?: undefined;
                resource?: undefined;
                text?: undefined;
                toolRequest?: undefined;
                toolResponse: { name: string; output?: unknown; ref?: string } & {
                    content?: (
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                    )[];
                };
            }
            | undefined,
        >;
        tools?: ToolAction<z.ZodTypeAny, z.ZodTypeAny>[];
    }
    Index

    Properties

    generate?: (
        envelope: {
            currentTurn: number;
            messageIndex: number;
            request: {
                config?: any;
                docs?: {
                    content: (
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media: { contentType?: ...; url: ... };
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: (...) & (...);
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource: { uri: ... };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    metadata?: Record<string, any>;
                }[];
                maxTurns?: number;
                messages: {
                    content: (
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media: { contentType?: (...) | (...); url: string };
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: (...) | (...) | (...);
                                ref?: (...) | (...);
                            };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: ...; output?: ...; ref?: ... } & {
                                content?: ...;
                            };
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<string, any>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<(...), (...)>;
                            reasoning?: undefined;
                            resource: { uri: string };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                }[];
                model?: string;
                output?: {
                    constrained?: boolean;
                    contentType?: string;
                    format?: string;
                    instructions?: string
                    | boolean;
                    jsonSchema?: any;
                };
                resources?: string[];
                resume?: {
                    metadata?: Record<string, any>;
                    respond?: {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse: { name: ...; output?: ...; ref?: ... } & {
                            content?: ...;
                        };
                    }[];
                    restart?: {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest: {
                            input?: unknown;
                            name: string;
                            partial?: (...) | (...) | (...);
                            ref?: (...) | (...);
                        };
                        toolResponse?: undefined;
                    }[];
                };
                returnToolRequests?: boolean;
                stepName?: string;
                toolChoice?: "required"
                | "auto"
                | "none";
                tools?: string[];
                use?: any[];
            };
        },
        ctx: ActionRunOptions<
            {
                aggregated?: boolean;
                content: (
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text: string;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media: { contentType?: string; url: string };
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest: {
                            input?: unknown;
                            name: string;
                            partial?: boolean;
                            ref?: string;
                        };
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse: { name: string; output?: unknown; ref?: string } & {
                            content?: (...)[];
                        };
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom: Record<string, any>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning: string;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource: { uri: string };
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                )[];
                custom?: unknown;
                index?: number;
                role?: "user"
                | "model"
                | "tool"
                | "system";
            },
        >,
        next: (
            envelope: {
                currentTurn: number;
                messageIndex: number;
                request: {
                    config?: any;
                    docs?: {
                        content: (
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning: ...;
                                resource?: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                            | {
                                custom?: ...;
                                data?: ...;
                                media?: ...;
                                metadata?: ...;
                                reasoning?: ...;
                                resource: ...;
                                text?: ...;
                                toolRequest?: ...;
                                toolResponse?: ...;
                            }
                        )[];
                        metadata?: Record<string, any>;
                    }[];
                    maxTurns?: number;
                    messages: {
                        content: (
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text: string;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media: { contentType?: ...; url: ... };
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse: (...) & (...);
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom: Record<(...), (...)>;
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning: string;
                                resource?: undefined;
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                            | {
                                custom?: (...)
                                | (...);
                                data?: unknown;
                                media?: undefined;
                                metadata?: (...) | (...);
                                reasoning?: undefined;
                                resource: { uri: ... };
                                text?: undefined;
                                toolRequest?: undefined;
                                toolResponse?: undefined;
                            }
                        )[];
                        metadata?: Record<string, unknown>;
                        role: "user" | "model" | "tool" | "system";
                    }[];
                    model?: string;
                    output?: {
                        constrained?: boolean;
                        contentType?: string;
                        format?: string;
                        instructions?: string
                        | boolean;
                        jsonSchema?: any;
                    };
                    resources?: string[];
                    resume?: {
                        metadata?: Record<string, any>;
                        respond?: {
                            custom?: (...) | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: (...) & (...);
                        }[];
                        restart?: {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                            toolResponse?: undefined;
                        }[];
                    };
                    returnToolRequests?: boolean;
                    stepName?: string;
                    toolChoice?: "required"
                    | "auto"
                    | "none";
                    tools?: string[];
                    use?: any[];
                };
            },
            ctx: ActionRunOptions<
                {
                    aggregated?: boolean;
                    content: (
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media: { contentType?: string; url: string };
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: boolean;
                                ref?: string;
                            };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: string; output?: unknown; ref?: (...) | (...) } & {
                                content?: (...) | (...);
                            };
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<string, any>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource: { uri: string };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    custom?: unknown;
                    index?: number;
                    role?: "user"
                    | "model"
                    | "tool"
                    | "system";
                },
            >,
        ) => Promise<
            {
                candidates?: {
                    custom?: unknown;
                    finishMessage?: string;
                    finishReason: | "length"
                    | "stop"
                    | "other"
                    | "unknown"
                    | "interrupted"
                    | "blocked"
                    | "aborted";
                    index: number;
                    message: {
                        content: (
                            (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                        )[];
                        metadata?: Record<(...), (...)>;
                        role: "user" | "model" | "tool" | "system";
                    };
                    usage?: {
                        cachedContentTokens?: (...)
                        | (...);
                        custom?: (...) | (...);
                        inputAudioFiles?: (...) | (...);
                        inputCharacters?: (...) | (...);
                        inputImages?: (...) | (...);
                        inputTokens?: (...) | (...);
                        inputVideos?: (...) | (...);
                        outputAudioFiles?: (...) | (...);
                        outputCharacters?: (...) | (...);
                        outputImages?: (...) | (...);
                        outputTokens?: (...) | (...);
                        outputVideos?: (...) | (...);
                        thoughtsTokens?: (...) | (...);
                        totalTokens?: (...) | (...);
                    };
                }[];
                custom?: unknown;
                finishMessage?: string;
                finishReason?: | "length"
                | "stop"
                | "other"
                | "unknown"
                | "interrupted"
                | "blocked"
                | "aborted";
                latencyMs?: number;
                message?: {
                    content: (
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media: { contentType?: ...; url: ... };
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: (...) & (...);
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource: { uri: ... };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                };
                operation?: {
                    action?: string;
                    done?: boolean;
                    error?: z.objectOutputType<
                        { message: z.ZodString },
                        z.ZodTypeAny,
                        "passthrough",
                    >;
                    id: string;
                    metadata?: Record<string, any>;
                    output?: any;
                };
                raw?: unknown;
                request?: {
                    candidates?: number;
                    config?: any;
                    docs?: { content: (...)[]; metadata?: (...) | (...) }[];
                    messages: {
                        content: (
                            (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                        )[];
                        metadata?: Record<(...), (...)>;
                        role: "user" | "model" | "tool" | "system";
                    }[];
                    output?: {
                        constrained?: boolean;
                        contentType?: string;
                        format?: string;
                        schema?: Record<(...), (...)>;
                    };
                    toolChoice?: "required"
                    | "auto"
                    | "none";
                    tools?: {
                        description: string;
                        inputSchema?: (...) | (...) | (...);
                        metadata?: (...) | (...);
                        name: string;
                        outputSchema?: (...) | (...) | (...);
                    }[];
                };
                usage?: {
                    cachedContentTokens?: number;
                    custom?: Record<string, number>;
                    inputAudioFiles?: number;
                    inputCharacters?: number;
                    inputImages?: number;
                    inputTokens?: number;
                    inputVideos?: number;
                    outputAudioFiles?: number;
                    outputCharacters?: number;
                    outputImages?: number;
                    outputTokens?: number;
                    outputVideos?: number;
                    thoughtsTokens?: number;
                    totalTokens?: number;
                };
            },
        >,
    ) => Promise<
        {
            candidates?: {
                custom?: unknown;
                finishMessage?: string;
                finishReason: | "length"
                | "stop"
                | "other"
                | "unknown"
                | "interrupted"
                | "blocked"
                | "aborted";
                index: number;
                message: {
                    content: (
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                };
                usage?: {
                    cachedContentTokens?: number;
                    custom?: Record<(...), (...)>;
                    inputAudioFiles?: number;
                    inputCharacters?: number;
                    inputImages?: number;
                    inputTokens?: number;
                    inputVideos?: number;
                    outputAudioFiles?: number;
                    outputCharacters?: number;
                    outputImages?: number;
                    outputTokens?: number;
                    outputVideos?: number;
                    thoughtsTokens?: number;
                    totalTokens?: number;
                };
            }[];
            custom?: unknown;
            finishMessage?: string;
            finishReason?: | "length"
            | "stop"
            | "other"
            | "unknown"
            | "interrupted"
            | "blocked"
            | "aborted";
            latencyMs?: number;
            message?: {
                content: (
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text: string;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media: { contentType?: (...) | (...); url: string };
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest: {
                            input?: unknown;
                            name: string;
                            partial?: (...) | (...) | (...);
                            ref?: (...) | (...);
                        };
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse: { name: ...; output?: ...; ref?: ... } & {
                            content?: ...;
                        };
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom: Record<string, any>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning: string;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource: { uri: string };
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                )[];
                metadata?: Record<string, unknown>;
                role: "user" | "model" | "tool" | "system";
            };
            operation?: {
                action?: string;
                done?: boolean;
                error?: z.objectOutputType<
                    { message: z.ZodString },
                    z.ZodTypeAny,
                    "passthrough",
                >;
                id: string;
                metadata?: Record<string, any>;
                output?: any;
            };
            raw?: unknown;
            request?: {
                candidates?: number;
                config?: any;
                docs?: {
                    content: (
                        (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                    )[];
                    metadata?: Record<(...), (...)>;
                }[];
                messages: {
                    content: (
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                }[];
                output?: {
                    constrained?: boolean;
                    contentType?: string;
                    format?: string;
                    schema?: Record<string, any>;
                };
                toolChoice?: "required"
                | "auto"
                | "none";
                tools?: {
                    description: string;
                    inputSchema?: Record<(...), (...)> | null;
                    metadata?: Record<(...), (...)>;
                    name: string;
                    outputSchema?: Record<(...), (...)> | null;
                }[];
            };
            usage?: {
                cachedContentTokens?: number;
                custom?: Record<string, number>;
                inputAudioFiles?: number;
                inputCharacters?: number;
                inputImages?: number;
                inputTokens?: number;
                inputVideos?: number;
                outputAudioFiles?: number;
                outputCharacters?: number;
                outputImages?: number;
                outputTokens?: number;
                outputVideos?: number;
                thoughtsTokens?: number;
                totalTokens?: number;
            };
        },
    >

    Hook for intercepting the top-level generate action. Can be used to inject request parameters, modify the response, or catch errors.

    model?: (
        req: GenerateRequest<any>,
        ctx: ActionRunOptions<
            {
                aggregated?: boolean;
                content: (
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text: string;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media: { contentType?: string; url: string };
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest: {
                            input?: unknown;
                            name: string;
                            partial?: boolean;
                            ref?: string;
                        };
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse: { name: string; output?: unknown; ref?: string } & {
                            content?: (...)[];
                        };
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom: Record<string, any>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning: string;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<string, unknown>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<string, unknown>;
                        reasoning?: undefined;
                        resource: { uri: string };
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                )[];
                custom?: unknown;
                index?: number;
                role?: "user"
                | "model"
                | "tool"
                | "system";
            },
        >,
        next: (
            req: GenerateRequest<any>,
            ctx: ActionRunOptions<
                {
                    aggregated?: boolean;
                    content: (
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media: { contentType?: string; url: string };
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: {
                                input?: unknown;
                                name: string;
                                partial?: boolean;
                                ref?: string;
                            };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: { name: string; output?: unknown; ref?: (...) | (...) } & {
                                content?: (...) | (...);
                            };
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<string, any>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: Record<string, unknown>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: Record<string, unknown>;
                            reasoning?: undefined;
                            resource: { uri: string };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    custom?: unknown;
                    index?: number;
                    role?: "user"
                    | "model"
                    | "tool"
                    | "system";
                },
            >,
        ) => Promise<
            {
                candidates?: {
                    custom?: unknown;
                    finishMessage?: string;
                    finishReason: | "length"
                    | "stop"
                    | "other"
                    | "unknown"
                    | "interrupted"
                    | "blocked"
                    | "aborted";
                    index: number;
                    message: {
                        content: (
                            (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                        )[];
                        metadata?: Record<(...), (...)>;
                        role: "user" | "model" | "tool" | "system";
                    };
                    usage?: {
                        cachedContentTokens?: (...)
                        | (...);
                        custom?: (...) | (...);
                        inputAudioFiles?: (...) | (...);
                        inputCharacters?: (...) | (...);
                        inputImages?: (...) | (...);
                        inputTokens?: (...) | (...);
                        inputVideos?: (...) | (...);
                        outputAudioFiles?: (...) | (...);
                        outputCharacters?: (...) | (...);
                        outputImages?: (...) | (...);
                        outputTokens?: (...) | (...);
                        outputVideos?: (...) | (...);
                        thoughtsTokens?: (...) | (...);
                        totalTokens?: (...) | (...);
                    };
                }[];
                custom?: unknown;
                finishMessage?: string;
                finishReason?: | "length"
                | "stop"
                | "other"
                | "unknown"
                | "interrupted"
                | "blocked"
                | "aborted";
                latencyMs?: number;
                message?: {
                    content: (
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text: string;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media: { contentType?: ...; url: ... };
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest: { input?: ...; name: ...; partial?: ...; ref?: ... };
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse: (...) & (...);
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom: Record<(...), (...)>;
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning: string;
                            resource?: undefined;
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                        | {
                            custom?: (...)
                            | (...);
                            data?: unknown;
                            media?: undefined;
                            metadata?: (...) | (...);
                            reasoning?: undefined;
                            resource: { uri: ... };
                            text?: undefined;
                            toolRequest?: undefined;
                            toolResponse?: undefined;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                };
                operation?: {
                    action?: string;
                    done?: boolean;
                    error?: z.objectOutputType<
                        { message: z.ZodString },
                        z.ZodTypeAny,
                        "passthrough",
                    >;
                    id: string;
                    metadata?: Record<string, any>;
                    output?: any;
                };
                raw?: unknown;
                request?: {
                    candidates?: number;
                    config?: any;
                    docs?: { content: (...)[]; metadata?: (...) | (...) }[];
                    messages: {
                        content: (
                            (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                            | (...)
                        )[];
                        metadata?: Record<(...), (...)>;
                        role: "user" | "model" | "tool" | "system";
                    }[];
                    output?: {
                        constrained?: boolean;
                        contentType?: string;
                        format?: string;
                        schema?: Record<(...), (...)>;
                    };
                    toolChoice?: "required"
                    | "auto"
                    | "none";
                    tools?: {
                        description: string;
                        inputSchema?: (...) | (...) | (...);
                        metadata?: (...) | (...);
                        name: string;
                        outputSchema?: (...) | (...) | (...);
                    }[];
                };
                usage?: {
                    cachedContentTokens?: number;
                    custom?: Record<string, number>;
                    inputAudioFiles?: number;
                    inputCharacters?: number;
                    inputImages?: number;
                    inputTokens?: number;
                    inputVideos?: number;
                    outputAudioFiles?: number;
                    outputCharacters?: number;
                    outputImages?: number;
                    outputTokens?: number;
                    outputVideos?: number;
                    thoughtsTokens?: number;
                    totalTokens?: number;
                };
            },
        >,
    ) => Promise<
        {
            candidates?: {
                custom?: unknown;
                finishMessage?: string;
                finishReason: | "length"
                | "stop"
                | "other"
                | "unknown"
                | "interrupted"
                | "blocked"
                | "aborted";
                index: number;
                message: {
                    content: (
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                };
                usage?: {
                    cachedContentTokens?: number;
                    custom?: Record<(...), (...)>;
                    inputAudioFiles?: number;
                    inputCharacters?: number;
                    inputImages?: number;
                    inputTokens?: number;
                    inputVideos?: number;
                    outputAudioFiles?: number;
                    outputCharacters?: number;
                    outputImages?: number;
                    outputTokens?: number;
                    outputVideos?: number;
                    thoughtsTokens?: number;
                    totalTokens?: number;
                };
            }[];
            custom?: unknown;
            finishMessage?: string;
            finishReason?: | "length"
            | "stop"
            | "other"
            | "unknown"
            | "interrupted"
            | "blocked"
            | "aborted";
            latencyMs?: number;
            message?: {
                content: (
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text: string;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media: { contentType?: (...) | (...); url: string };
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest: {
                            input?: unknown;
                            name: string;
                            partial?: (...) | (...) | (...);
                            ref?: (...) | (...);
                        };
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse: { name: ...; output?: ...; ref?: ... } & {
                            content?: ...;
                        };
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom: Record<string, any>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning: string;
                        resource?: undefined;
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                    | {
                        custom?: Record<(...), (...)>;
                        data?: unknown;
                        media?: undefined;
                        metadata?: Record<(...), (...)>;
                        reasoning?: undefined;
                        resource: { uri: string };
                        text?: undefined;
                        toolRequest?: undefined;
                        toolResponse?: undefined;
                    }
                )[];
                metadata?: Record<string, unknown>;
                role: "user" | "model" | "tool" | "system";
            };
            operation?: {
                action?: string;
                done?: boolean;
                error?: z.objectOutputType<
                    { message: z.ZodString },
                    z.ZodTypeAny,
                    "passthrough",
                >;
                id: string;
                metadata?: Record<string, any>;
                output?: any;
            };
            raw?: unknown;
            request?: {
                candidates?: number;
                config?: any;
                docs?: {
                    content: (
                        (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                    )[];
                    metadata?: Record<(...), (...)>;
                }[];
                messages: {
                    content: (
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning: ...;
                            resource?: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                        | {
                            custom?: ...;
                            data?: ...;
                            media?: ...;
                            metadata?: ...;
                            reasoning?: ...;
                            resource: ...;
                            text?: ...;
                            toolRequest?: ...;
                            toolResponse?: ...;
                        }
                    )[];
                    metadata?: Record<string, unknown>;
                    role: "user" | "model" | "tool" | "system";
                }[];
                output?: {
                    constrained?: boolean;
                    contentType?: string;
                    format?: string;
                    schema?: Record<string, any>;
                };
                toolChoice?: "required"
                | "auto"
                | "none";
                tools?: {
                    description: string;
                    inputSchema?: Record<(...), (...)> | null;
                    metadata?: Record<(...), (...)>;
                    name: string;
                    outputSchema?: Record<(...), (...)> | null;
                }[];
            };
            usage?: {
                cachedContentTokens?: number;
                custom?: Record<string, number>;
                inputAudioFiles?: number;
                inputCharacters?: number;
                inputImages?: number;
                inputTokens?: number;
                inputVideos?: number;
                outputAudioFiles?: number;
                outputCharacters?: number;
                outputImages?: number;
                outputTokens?: number;
                outputVideos?: number;
                thoughtsTokens?: number;
                totalTokens?: number;
            };
        },
    >

    Hook for intercepting the underlying model execution. Ideal for model-level caching, retry logic, or prompt/response parsing.

    tool?: (
        req: {
            custom?: Record<string, unknown>;
            data?: unknown;
            media?: undefined;
            metadata?: Record<string, unknown>;
            reasoning?: undefined;
            resource?: undefined;
            text?: undefined;
            toolRequest: {
                input?: unknown;
                name: string;
                partial?: boolean;
                ref?: string;
            };
            toolResponse?: undefined;
        },
        ctx: ActionRunOptions<any>,
        next: (
            req: {
                custom?: Record<string, unknown>;
                data?: unknown;
                media?: undefined;
                metadata?: Record<string, unknown>;
                reasoning?: undefined;
                resource?: undefined;
                text?: undefined;
                toolRequest: {
                    input?: unknown;
                    name: string;
                    partial?: boolean;
                    ref?: string;
                };
                toolResponse?: undefined;
            },
            ctx: ActionRunOptions<any>,
        ) => Promise<
            | {
                custom?: Record<string, unknown>;
                data?: unknown;
                media?: undefined;
                metadata?: Record<string, unknown>;
                reasoning?: undefined;
                resource?: undefined;
                text?: undefined;
                toolRequest?: undefined;
                toolResponse: { name: string; output?: unknown; ref?: string } & {
                    content?: (
                        (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...)
                    )[];
                };
            }
            | undefined,
        >,
    ) => Promise<
        | {
            custom?: Record<string, unknown>;
            data?: unknown;
            media?: undefined;
            metadata?: Record<string, unknown>;
            reasoning?: undefined;
            resource?: undefined;
            text?: undefined;
            toolRequest?: undefined;
            toolResponse: { name: string; output?: unknown; ref?: string } & {
                content?: (
                    | {
                        custom?: ...;
                        data?: ...;
                        media?: ...;
                        metadata?: ...;
                        reasoning?: ...;
                        resource?: ...;
                        text: ...;
                        toolRequest?: ...;
                        toolResponse?: ...;
                    }
                    | {
                        custom?: ...;
                        data?: ...;
                        media: ...;
                        metadata?: ...;
                        reasoning?: ...;
                        resource?: ...;
                        text?: ...;
                        toolRequest?: ...;
                        toolResponse?: ...;
                    }
                    | {
                        custom?: ...;
                        data?: ...;
                        media?: ...;
                        metadata?: ...;
                        reasoning?: ...;
                        resource?: ...;
                        text?: ...;
                        toolRequest: ...;
                        toolResponse?: ...;
                    }
                    | {
                        custom?: ...;
                        data?: ...;
                        media?: ...;
                        metadata?: ...;
                        reasoning?: ...;
                        resource?: ...;
                        text?: ...;
                        toolRequest?: ...;
                        toolResponse: ...;
                    }
                    | {
                        custom?: ...;
                        data?: ...;
                        media?: ...;
                        metadata?: ...;
                        reasoning?: ...;
                        resource?: ...;
                        text?: ...;
                        toolRequest?: ...;
                        toolResponse?: ...;
                    }
                    | {
                        custom: ...;
                        data?: ...;
                        media?: ...;
                        metadata?: ...;
                        reasoning?: ...;
                        resource?: ...;
                        text?: ...;
                        toolRequest?: ...;
                        toolResponse?: ...;
                    }
                    | {
                        custom?: ...;
                        data?: ...;
                        media?: ...;
                        metadata?: ...;
                        reasoning: ...;
                        resource?: ...;
                        text?: ...;
                        toolRequest?: ...;
                        toolResponse?: ...;
                    }
                    | {
                        custom?: ...;
                        data?: ...;
                        media?: ...;
                        metadata?: ...;
                        reasoning?: ...;
                        resource: ...;
                        text?: ...;
                        toolRequest?: ...;
                        toolResponse?: ...;
                    }
                )[];
            };
        }
        | undefined,
    >

    Hook for intercepting individual tool calls. Enables caching tool responses, validating inputs, or overriding tool execution.

    Tools to statically inject into the generation request whenever this middleware is active.