import { SystemMessageFunction } from '../types/system-message.js'; import { Message as Message$1 } from '@vn-sdk/runtime-client-gql'; import { Message } from '@vn-sdk/shared'; import { AppendMessageOptions } from './use-chat.js'; import { S as SuggestionItem } from '../index-35503105.js'; import 'react'; import '../ai-context-2768aadc.js'; import '../types/frontend-action.js'; import './use-tree.js'; import '../types/document-pointer.js'; import '../types/chat-suggestion-configuration.js'; import '../types/ai-agent-action.js'; import '../types/ai-agent-state.js'; interface UseAiChatOptions { /** * A unique identifier for the chat. If not provided, a random one will be * generated. When provided, the `useChat` hook with the same `id` will * have shared states across components. */ id?: string; /** * HTTP headers to be sent with the API request. */ headers?: Record | Headers; /** * Initial messages to populate the chat with. */ initialMessages?: Message[]; /** * A function to generate the system message. Defaults to `defaultSystemMessage`. */ makeSystemMessage?: SystemMessageFunction; /** * Disables inclusion of VN SDK’s default system message. When true, no system message is sent (this also suppresses any custom message from makeSystemMessage). */ disableSystemMessage?: boolean; } interface MCPServerConfig { endpoint: string; apiKey?: string; } interface UseAiChatReturn { /** * @deprecated use `messages` instead, this is an old non ag-ui version of the messages * Array of messages currently visible in the chat interface * * This is the visible messages, not the raw messages from the runtime client. */ visibleMessages: Message$1[]; /** * The messages that are currently in the chat in AG-UI format. */ messages: Message[]; /** @deprecated use `sendMessage` instead */ appendMessage: (message: Message$1, options?: AppendMessageOptions) => Promise; /** * Send a new message to the chat * * ```tsx * await sendMessage({ * id: "123", * role: "user", * content: "Hello, process this request", * }); * ``` */ sendMessage: (message: Message, options?: AppendMessageOptions) => Promise; /** * Replace all messages in the chat * * ```tsx * setMessages([ * { id: "123", role: "user", content: "Hello, process this request" }, * { id: "456", role: "assistant", content: "Hello, I'm the assistant" }, * ]); * ``` * * **Deprecated** non-ag-ui version: * * ```tsx * setMessages([ * new TextMessage({ * content: "Hello, process this request", * role: gqlRole.User, * }), * new TextMessage({ * content: "Hello, I'm the assistant", * role: gqlRole.Assistant, * ]); * ``` * */ setMessages: (messages: Message[] | Message$1[]) => void; /** * Remove a specific message by ID * * ```tsx * deleteMessage("123"); * ``` */ deleteMessage: (messageId: string) => void; /** * Regenerate the response for a specific message * * ```tsx * reloadMessages("123"); * ``` */ reloadMessages: (messageId: string) => Promise; /** * Stop the current message generation * * ```tsx * if (isLoading) { * stopGeneration(); * } * ``` */ stopGeneration: () => void; /** * Clear all messages and reset chat state * * ```tsx * reset(); * console.log(messages); // [] * ``` */ reset: () => void; /** * Whether the chat is currently generating a response * * ```tsx * if (isLoading) { * console.log("Loading..."); * } else { * console.log("Not loading"); * } */ isLoading: boolean; /** Manually trigger chat completion (advanced usage) */ runChatCompletion: () => Promise; /** MCP (Model Context Protocol) server configurations */ mcpServers: MCPServerConfig[]; /** Update MCP server configurations */ setMcpServers: (mcpServers: MCPServerConfig[]) => void; /** * Current suggestions array * Use this to read the current suggestions or in conjunction with setSuggestions for manual control */ suggestions: SuggestionItem[]; /** * Manually set suggestions * Useful for manual mode or custom suggestion workflows */ setSuggestions: (suggestions: SuggestionItem[]) => void; /** * Trigger AI-powered suggestion generation * Uses configurations from useAiChatSuggestions hooks * Respects global debouncing - only one generation can run at a time * * ```tsx * generateSuggestions(); * console.log(suggestions); // [suggestion1, suggestion2, suggestion3] * ``` */ generateSuggestions: () => Promise; /** * Clear all current suggestions * Also resets suggestion generation state */ resetSuggestions: () => void; /** Whether suggestions are currently being generated */ isLoadingSuggestions: boolean; /** Interrupt content for human-in-the-loop workflows */ interrupt: string | React.ReactElement | null; } declare function useAiChat(options?: UseAiChatOptions): UseAiChatReturn; declare function defaultSystemMessage(contextString: string, additionalInstructions?: string): string; export { MCPServerConfig, UseAiChatOptions, UseAiChatReturn, defaultSystemMessage, useAiChat };