import type { AgentSuggestion } from "@agent-native/agentkit/protocol"; import { z } from "zod"; import type { EngineMessage, EngineTool } from "./engine/types.js"; export declare const FOLLOW_UP_SUGGESTIONS_TOOL_NAME = "suggest-follow-ups"; export declare const FOLLOW_UP_SUGGESTIONS_MAX_OUTPUT_TOKENS = 1024; export declare const FOLLOW_UP_SUGGESTIONS_INSTRUCTION: string; export declare const FOLLOW_UP_SUGGESTIONS_COMPLETION_SYSTEM_PROMPT = "You write follow-up suggestions for a conversation between a user and an AI agent inside an app. You only record them by calling suggest-follow-ups."; export declare const FOLLOW_UP_SUGGESTIONS_COMPLETION_INSTRUCTION: string; /** * The completion call sends a different tools array than the turn did, so it * can never read the turn's prompt cache. It carries a bounded digest of the * turn instead of re-prefilling the whole conversation at full price. The * digest keeps the shape of a finished turn (request, reply, then the * instruction as the last user message) so role alternation is valid for every * provider and the instruction stays the message a prefix match finds. */ export declare function buildFollowUpCompletionMessages(input: { requestText?: string; replyText: string; toolNames: readonly string[]; }): EngineMessage[]; export type FollowUpSuggestionsFailure = "budget_exhausted" | "iteration_limit" | "interrupted" | "processor_error" | "provider_error" | "invalid_or_missing"; declare const followUpSuggestionsSchema: z.ZodObject<{ suggestions: z.ZodArray>; }, z.core.$strict>; export declare const followUpSuggestionsTool: EngineTool; export declare function parseFollowUpSuggestions(input: unknown): z.ZodSafeParseResult<{ suggestions: { label: string; prompt: string; }[]; }>; export declare function identifyFollowUpSuggestions(suggestions: z.infer["suggestions"], runId: string): AgentSuggestion[]; export {};