veryfront 0.0.69 → 0.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/components.js +3 -3
- package/dist/ai/components.js.map +1 -1
- package/dist/ai/dev.js +3 -9
- package/dist/ai/dev.js.map +1 -1
- package/dist/ai/index.js +205 -149
- package/dist/ai/index.js.map +3 -3
- package/dist/ai/production.js +20 -14
- package/dist/ai/production.js.map +1 -1
- package/dist/ai/workflow.js +59 -37
- package/dist/ai/workflow.js.map +2 -2
- package/dist/cli.js +596 -1009
- package/dist/components.js +263 -4131
- package/dist/components.js.map +4 -4
- package/dist/config.js +1 -2
- package/dist/config.js.map +2 -2
- package/dist/data.js +27 -22
- package/dist/data.js.map +2 -2
- package/dist/index.js +294 -4165
- package/dist/index.js.map +4 -4
- package/dist/oauth/handlers.js +7 -6
- package/dist/oauth/handlers.js.map +1 -1
- package/dist/oauth/index.js +7 -6
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/providers.js +3 -0
- package/dist/oauth/providers.js.map +1 -1
- package/dist/oauth/token-store.js +4 -6
- package/dist/oauth/token-store.js.map +1 -1
- package/package.json +2 -2
package/dist/ai/components.js
CHANGED
|
@@ -1038,9 +1038,6 @@ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
|
1038
1038
|
var AIErrorBoundary = class extends React11.Component {
|
|
1039
1039
|
constructor(props) {
|
|
1040
1040
|
super(props);
|
|
1041
|
-
this.reset = () => {
|
|
1042
|
-
this.setState({ hasError: false, error: null });
|
|
1043
|
-
};
|
|
1044
1041
|
this.state = { hasError: false, error: null };
|
|
1045
1042
|
}
|
|
1046
1043
|
static getDerivedStateFromError(error) {
|
|
@@ -1052,6 +1049,9 @@ var AIErrorBoundary = class extends React11.Component {
|
|
|
1052
1049
|
this.props.onError(error, errorInfo);
|
|
1053
1050
|
}
|
|
1054
1051
|
}
|
|
1052
|
+
reset = () => {
|
|
1053
|
+
this.setState({ hasError: false, error: null });
|
|
1054
|
+
};
|
|
1055
1055
|
render() {
|
|
1056
1056
|
if (this.state.hasError && this.state.error) {
|
|
1057
1057
|
if (this.props.fallback) {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/_shims/deno-env.ts", "../../../src/ai/react/components/theme.ts", "../../../src/ai/react/components/chat.tsx", "../../../src/ai/react/primitives/chat-container.tsx", "../../../src/ai/react/primitives/message-list.tsx", "../../../src/ai/react/primitives/input-box.tsx", "../../../src/ai/react/primitives/agent-primitives.tsx", "../../../src/ai/react/primitives/tool-primitives.tsx", "../../../src/ai/react/hooks/use-voice-input.ts", "../../../src/ai/react/components/markdown.tsx", "../../../src/ai/react/components/agent-card.tsx", "../../../src/ai/react/components/message.tsx", "../../../src/ai/react/components/error-boundary.tsx"],
|
|
4
4
|
"sourcesContent": ["/**\n * Shim for Deno.env in Node.js environment\n * This file is injected by esbuild to provide Deno.env compatibility\n */\n\n// @ts-ignore - Global Deno shim for Node.js\nglobalThis.Deno = globalThis.Deno || {\n env: {\n get(key: string): string | undefined {\n return process.env[key];\n },\n set(key: string, value: string): void {\n process.env[key] = value;\n },\n delete(key: string): void {\n delete process.env[key];\n },\n has(key: string): boolean {\n return key in process.env;\n },\n toObject(): Record<string, string> {\n return { ...process.env } as Record<string, string>;\n },\n },\n};\n", "/**\n * Theme System for Styled Components\n *\n * Provides default theme and utilities for customization.\n */\n\nexport interface ChatTheme {\n /** Container styles */\n container?: string;\n\n /** Message styles by role */\n message?: {\n user?: string;\n assistant?: string;\n system?: string;\n tool?: string;\n };\n\n /** Input styles */\n input?: string;\n\n /** Button styles */\n button?: string;\n\n /** Loading indicator styles */\n loading?: string;\n}\n\n/**\n * Default theme using Tailwind CSS - Apple Messages inspired, clean & minimal\n */\nexport const defaultChatTheme: ChatTheme = {\n container: \"flex flex-col h-full overflow-hidden bg-white dark:bg-neutral-900\",\n message: {\n user: \"bg-blue-500 text-white rounded-[20px] rounded-br-[4px] px-4 py-2.5 max-w-[75%]\",\n assistant:\n \"bg-neutral-100 dark:bg-neutral-800 text-neutral-900 dark:text-neutral-100 rounded-[20px] rounded-bl-[4px] px-4 py-2.5 max-w-[75%]\",\n system:\n \"bg-neutral-100 dark:bg-neutral-800 text-neutral-500 dark:text-neutral-400 rounded-2xl px-4 py-2 text-sm mx-auto text-center\",\n tool:\n \"bg-neutral-50 dark:bg-neutral-800 text-neutral-600 dark:text-neutral-300 rounded-xl px-3 py-2 text-sm font-mono border border-neutral-200 dark:border-neutral-700\",\n },\n input:\n \"flex-1 px-4 py-2.5 bg-neutral-100 dark:bg-neutral-800 border-0 rounded-full focus:outline-none focus:ring-2 focus:ring-blue-500/30 dark:text-neutral-100 placeholder-neutral-400 dark:placeholder-neutral-500 text-[15px]\",\n button:\n \"w-9 h-9 flex items-center justify-center bg-blue-500 hover:bg-blue-600 active:scale-95 text-white rounded-full transition-all disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:bg-blue-500 disabled:active:scale-100\",\n loading: \"w-1.5 h-1.5 bg-neutral-400 rounded-full animate-bounce\",\n};\n\nexport interface AgentTheme {\n /** Container styles */\n container?: string;\n\n /** Status styles */\n status?: string;\n\n /** Thinking indicator styles */\n thinking?: string;\n\n /** Tool invocation styles */\n tool?: string;\n\n /** Tool result styles */\n toolResult?: string;\n}\n\n/**\n * Default agent theme - Apple-inspired, clean & minimal\n */\nexport const defaultAgentTheme: AgentTheme = {\n container:\n \"border border-neutral-200 dark:border-neutral-800 rounded-2xl p-6 space-y-4 bg-white dark:bg-neutral-900\",\n status: \"inline-flex items-center px-3 py-1.5 rounded-full text-sm font-medium\",\n thinking:\n \"bg-amber-50 dark:bg-amber-900/20 rounded-xl px-4 py-3 italic text-neutral-700 dark:text-neutral-300 border border-amber-200 dark:border-amber-800\",\n tool:\n \"rounded-xl px-4 py-3 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800\",\n toolResult:\n \"mt-2 p-3 bg-neutral-100 dark:bg-neutral-800 rounded-xl font-mono text-sm overflow-x-auto\",\n};\n\n/**\n * Merge themes (user theme overrides default)\n */\nexport function mergeThemes<T extends Record<string, any>>(\n defaultTheme: T,\n userTheme?: Partial<T>,\n): T {\n if (!userTheme) return defaultTheme;\n\n const merged = { ...defaultTheme };\n\n for (const key in userTheme) {\n const value = userTheme[key];\n\n if (value === undefined) {\n continue;\n }\n\n if (typeof value === \"object\" && !Array.isArray(value)) {\n // Merge nested objects\n merged[key] = { ...defaultTheme[key], ...value } as T[Extract<keyof T, string>];\n } else {\n merged[key] = value as T[Extract<keyof T, string>];\n }\n }\n\n return merged;\n}\n\n/**\n * Utility to combine class names\n * (Simple version - in production use 'clsx' or 'cn' from shadcn)\n */\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n", "/**\n * Chat Component - Layer 3 (Styled)\n *\n * Production-ready, fully styled chat component.\n * Built on Layer 2 primitives.\n */\n\nimport * as React from \"react\";\nimport {\n ChatContainer,\n InputBox,\n MessageItem,\n MessageList,\n SubmitButton,\n} from \"../primitives/index.ts\";\nimport { useVoiceInput } from \"../hooks/use-voice-input.ts\";\nimport type { ToolCall } from \"../../types/agent.ts\";\nimport type { UIMessage, UIMessagePart } from \"../hooks/use-chat.ts\";\nimport { type ChatTheme, cn, defaultChatTheme, mergeThemes } from \"./theme.ts\";\nimport { Markdown } from \"./markdown.tsx\";\n\n/**\n * Get text content from UIMessage parts\n */\nfunction getTextContent(message: UIMessage): string {\n return message.parts\n .filter((p): p is UIMessagePart & { type: \"text\" } => p.type === \"text\")\n .map((p) => p.text)\n .join(\"\");\n}\n\nexport interface ChatProps {\n /** Messages to display (AI SDK v5 format) */\n messages: UIMessage[];\n\n /** Current input value */\n input: string;\n\n /** Input change handler (alternative naming) */\n onChange?: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n\n /** Input change handler (from useChat) */\n handleInputChange?: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n\n /** Submit handler (alternative naming) */\n onSubmit?: (e: React.FormEvent) => void | Promise<void>;\n\n /** Submit handler (from useChat) */\n handleSubmit?: (e: React.FormEvent) => void | Promise<void>;\n\n /** Stop handler - called when stop button is clicked during loading */\n stop?: () => void;\n\n /** Enable built-in voice input (uses Web Speech API) */\n enableVoice?: boolean;\n\n /** Custom voice input handler - overrides built-in voice if provided */\n onVoice?: () => void;\n\n /** Setter for input value (required for voice input to work) */\n setInput?: (value: string) => void;\n\n /** Loading state */\n isLoading?: boolean;\n\n /** Error state */\n error?: Error | null;\n\n /** Placeholder text */\n placeholder?: string;\n\n /** Max height */\n maxHeight?: string;\n\n /** Additional class name */\n className?: string;\n\n /** Theme customization */\n theme?: Partial<ChatTheme>;\n\n /** Custom message renderer */\n renderMessage?: (message: UIMessage) => React.ReactNode;\n\n /** Custom tool renderer */\n renderTool?: (toolCall: ToolCall) => React.ReactNode;\n\n /** Enable multiline input */\n multiline?: boolean;\n}\n\n/**\n * Chat - Complete chat interface\n *\n * Production-ready chat component with sensible defaults.\n *\n * @example\n * ```tsx\n * import { Chat } from 'veryfront/ai/components';\n * import { useChat } from 'veryfront/ai/react';\n *\n * export default function ChatPage() {\n * const chat = useChat({ api: '/api/chat' });\n * return <Chat {...chat} />;\n * }\n * ```\n */\nexport const Chat = React.forwardRef<HTMLDivElement, ChatProps>(\n (\n {\n messages,\n input,\n onChange,\n handleInputChange,\n onSubmit,\n handleSubmit,\n stop,\n enableVoice = false,\n onVoice,\n setInput,\n isLoading,\n error,\n placeholder = \"Type a message...\",\n maxHeight = \"100%\",\n className,\n theme: userTheme,\n renderMessage,\n renderTool: _renderTool,\n multiline = false,\n },\n ref,\n ) => {\n const theme = mergeThemes(defaultChatTheme, userTheme);\n const messagesEndRef = React.useRef<HTMLDivElement>(null);\n\n // Support both naming conventions from useChat\n const inputChangeHandler = onChange || handleInputChange || (() => {});\n const submitHandler = onSubmit || handleSubmit;\n\n // Built-in voice input\n const voice = useVoiceInput({\n onTranscript: (transcript, isFinal) => {\n if (setInput && isFinal) {\n setInput(transcript);\n }\n },\n });\n\n // Determine voice handler - custom or built-in\n const voiceHandler = React.useMemo(() => {\n if (onVoice) return onVoice;\n if (enableVoice && voice.isSupported && setInput) {\n return voice.toggle;\n }\n return undefined;\n }, [onVoice, enableVoice, voice.isSupported, voice.toggle, setInput]);\n\n // Auto-scroll to bottom on new messages\n React.useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n return (\n <ChatContainer\n ref={ref}\n className={cn(theme.container, className)}\n style={{ maxHeight }}\n >\n {/* Message List - scrollable content area */}\n <MessageList className=\"flex-1 min-h-0 overflow-y-auto\">\n <div className=\"max-w-2xl mx-auto px-4 py-4 space-y-2\">\n {messages.map((msg) => {\n const content = getTextContent(msg);\n return renderMessage\n ? <React.Fragment key={msg.id}>{renderMessage(msg)}</React.Fragment>\n : (\n <MessageItem\n key={msg.id}\n role={msg.role}\n className={cn(\n \"flex\",\n msg.role === \"user\" ? \"justify-end\" : \"justify-start\",\n )}\n >\n <div className={theme.message?.[msg.role] || theme.message?.assistant}>\n {msg.role === \"user\"\n ? (\n <p className=\"whitespace-pre-wrap text-[15px] leading-relaxed\">\n {content}\n </p>\n )\n : (\n <Markdown className=\"text-[15px] leading-relaxed\">\n {content}\n </Markdown>\n )}\n </div>\n </MessageItem>\n );\n })}\n\n {/* Loading indicator */}\n {isLoading && (\n <div className=\"flex justify-start\">\n <div className=\"bg-neutral-100 dark:bg-neutral-800 rounded-[20px] rounded-bl-[4px] px-4 py-3\">\n <div className=\"flex gap-1.5 items-center\">\n <span className={cn(theme.loading)} />\n <span className={cn(theme.loading)} style={{ animationDelay: \"0.15s\" }} />\n <span className={cn(theme.loading)} style={{ animationDelay: \"0.3s\" }} />\n </div>\n </div>\n </div>\n )}\n\n {/* Auto-scroll anchor */}\n <div ref={messagesEndRef} />\n </div>\n </MessageList>\n\n {/* Error display */}\n {error && (\n <div className=\"mx-4 mb-2 px-4 py-3 bg-red-50 dark:bg-red-900/20 rounded-2xl text-red-600 dark:text-red-400 text-sm\">\n {error.message}\n </div>\n )}\n\n {/* Input area - fixed at bottom */}\n <div className=\"flex-shrink-0 bg-white dark:bg-neutral-900 border-t border-neutral-200 dark:border-neutral-800\">\n <form\n onSubmit={submitHandler}\n className=\"max-w-2xl mx-auto px-4 py-3\"\n >\n <div className=\"flex gap-2 items-center\">\n <InputBox\n value={voice.isListening ? voice.transcript || input : input}\n onChange={inputChangeHandler}\n placeholder={voice.isListening ? \"Listening...\" : placeholder}\n disabled={isLoading || voice.isListening}\n multiline={multiline}\n className={theme.input}\n />\n <SubmitButton\n isLoading={isLoading || voice.isListening}\n hasInput={!!input.trim()}\n onStop={voice.isListening ? voice.stop : stop}\n onVoice={voiceHandler}\n disabled={!input.trim()}\n className={theme.button}\n />\n </div>\n </form>\n </div>\n </ChatContainer>\n );\n },\n);\n\nChat.displayName = \"Chat\";\n\n// Composition API (for advanced usage)\nconst ChatHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"border-b border-gray-200 dark:border-gray-800 p-4 bg-gray-50 dark:bg-gray-900\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n});\nChatHeader.displayName = \"ChatHeader\";\n\nconst ChatMessages = MessageList;\nChatMessages.displayName = \"ChatMessages\";\n\nconst ChatInput = React.forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n React.ComponentProps<typeof InputBox>\n>(({ className, ...props }, ref) => {\n return (\n <div className=\"border-t border-gray-200 dark:border-gray-800 p-4\">\n <div className=\"flex gap-2\">\n <InputBox\n ref={ref}\n className={cn(defaultChatTheme.input, className)}\n {...props}\n />\n </div>\n </div>\n );\n});\nChatInput.displayName = \"ChatInput\";\n\nconst ChatFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"border-t border-gray-200 dark:border-gray-800 p-4 text-sm text-gray-500\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n});\nChatFooter.displayName = \"ChatFooter\";\n\n// Attach subcomponents for composition API\nexport const ChatComponents = Object.assign(Chat, {\n Header: ChatHeader,\n Messages: ChatMessages,\n Input: ChatInput,\n Footer: ChatFooter,\n});\n", "/**\n * ChatContainer Primitive - Layer 2 (Unstyled)\n *\n * Root container for chat interfaces.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\n\nexport interface ChatContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\n/**\n * ChatContainer - Root chat component\n *\n * Provides minimal structure. Bring your own styles.\n *\n * @example\n * ```tsx\n * <ChatContainer className=\"flex flex-col h-screen\">\n * <YourHeader />\n * <MessageList messages={messages} />\n * <YourInput />\n * </ChatContainer>\n * ```\n */\nexport const ChatContainer = React.forwardRef<HTMLDivElement, ChatContainerProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-chat-container=\"\"\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nChatContainer.displayName = \"ChatContainer\";\n", "/**\n * MessageList & MessageItem Primitives - Layer 2 (Unstyled)\n *\n * Message rendering primitives.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\nimport type { Message } from \"../../types/agent.ts\";\n\nexport interface MessageListProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\n/**\n * MessageList - Container for messages\n *\n * @example\n * ```tsx\n * <MessageList className=\"flex-1 overflow-y-auto space-y-4\">\n * {messages.map((msg) => (\n * <MessageItem key={msg.id} role={msg.role}>\n * {msg.content}\n * </MessageItem>\n * ))}\n * </MessageList>\n * ```\n */\nexport const MessageList = React.forwardRef<HTMLDivElement, MessageListProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-message-list=\"\"\n role=\"log\"\n aria-live=\"polite\"\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nMessageList.displayName = \"MessageList\";\n\nexport interface MessageItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Message role */\n role: Message[\"role\"];\n\n /** Message content (can be children or prop) */\n content?: string;\n\n children?: React.ReactNode;\n}\n\n/**\n * MessageItem - Individual message\n *\n * @example\n * ```tsx\n * <MessageItem role=\"user\" className=\"flex justify-end\">\n * <div className=\"bg-blue-500 text-white rounded-lg px-4 py-2\">\n * {message.content}\n * </div>\n * </MessageItem>\n * ```\n */\nexport const MessageItem = React.forwardRef<HTMLDivElement, MessageItemProps>(\n ({ className, role, content, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-message-item=\"\"\n data-role={role}\n {...props}\n >\n {children || content}\n </div>\n );\n },\n);\n\nMessageItem.displayName = \"MessageItem\";\n\nexport interface MessageRoleProps extends React.HTMLAttributes<HTMLSpanElement> {\n children: React.ReactNode;\n}\n\n/**\n * MessageRole - Role indicator\n *\n * @example\n * ```tsx\n * <MessageRole className=\"font-semibold text-sm\">\n * {message.role}\n * </MessageRole>\n * ```\n */\nexport const MessageRole = React.forwardRef<HTMLSpanElement, MessageRoleProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={className}\n data-message-role=\"\"\n {...props}\n >\n {children}\n </span>\n );\n },\n);\n\nMessageRole.displayName = \"MessageRole\";\n\nexport interface MessageContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\n/**\n * MessageContent - Message content wrapper\n *\n * @example\n * ```tsx\n * <MessageContent className=\"prose\">\n * {message.content}\n * </MessageContent>\n * ```\n */\nexport const MessageContent = React.forwardRef<\n HTMLDivElement,\n MessageContentProps\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-message-content=\"\"\n {...props}\n >\n {children}\n </div>\n );\n});\n\nMessageContent.displayName = \"MessageContent\";\n", "/**\n * InputBox & SubmitButton Primitives - Layer 2 (Unstyled)\n *\n * Input primitives for chat interfaces.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\n\nexport interface InputBoxProps extends\n Omit<\n React.InputHTMLAttributes<HTMLInputElement | HTMLTextAreaElement>,\n \"onChange\" | \"onSubmit\"\n > {\n /** Current value */\n value: string;\n\n /** Change handler */\n onChange: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n\n /** Submit handler */\n onSubmit?: () => void;\n\n /** Use textarea instead of input */\n multiline?: boolean;\n}\n\n/**\n * InputBox - Text input primitive\n *\n * @example\n * ```tsx\n * <InputBox\n * value={input}\n * onChange={(e) => setInput(e.target.value)}\n * onSubmit={handleSubmit}\n * placeholder=\"Type a message...\"\n * className=\"w-full px-4 py-2 border rounded-lg\"\n * />\n * ```\n */\nexport const InputBox = React.forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputBoxProps\n>(({ className, value, onChange, onSubmit, multiline, ...props }, ref) => {\n const handleKeyDown = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n if (e.key === \"Enter\" && !e.shiftKey && onSubmit) {\n e.preventDefault();\n onSubmit();\n }\n };\n\n if (multiline) {\n return (\n <textarea\n ref={ref as React.Ref<HTMLTextAreaElement>}\n className={className}\n value={value}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n data-input-box=\"\"\n data-multiline=\"true\"\n rows={3}\n {...(props as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n />\n );\n }\n\n return (\n <input\n ref={ref as React.Ref<HTMLInputElement>}\n type=\"text\"\n className={className}\n value={value}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n data-input-box=\"\"\n {...props}\n />\n );\n});\n\nInputBox.displayName = \"InputBox\";\n\nexport interface SubmitButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Loading/streaming state - shows stop button */\n isLoading?: boolean;\n\n /** Whether input has text - determines voice vs submit icon */\n hasInput?: boolean;\n\n /** Handler for stop action */\n onStop?: () => void;\n\n /** Handler for voice input */\n onVoice?: () => void;\n\n /** Custom icons */\n icons?: {\n submit?: React.ReactNode;\n stop?: React.ReactNode;\n voice?: React.ReactNode;\n };\n\n children?: React.ReactNode;\n}\n\n/** Default submit icon (paper plane) */\nconst SubmitIcon = () => (\n <svg className=\"w-4 h-4\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\n </svg>\n);\n\n/** Default stop icon (square) */\nconst StopIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" />\n </svg>\n);\n\n/** Default voice icon (microphone) */\nconst VoiceIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <line x1=\"12\" x2=\"12\" y1=\"19\" y2=\"22\" />\n </svg>\n);\n\n/**\n * SubmitButton - Smart submit button with three states\n *\n * States:\n * 1. **Voice** (no input): Shows microphone icon, triggers onVoice\n * 2. **Submit** (has input): Shows arrow icon, submits form\n * 3. **Stop** (loading): Shows stop icon, triggers onStop\n *\n * @example\n * ```tsx\n * <SubmitButton\n * hasInput={!!input.trim()}\n * isLoading={isLoading}\n * onStop={stop}\n * onVoice={() => console.log('Voice input')}\n * className=\"w-9 h-9 bg-blue-500 text-white rounded-full\"\n * />\n * ```\n */\nexport const SubmitButton = React.forwardRef<\n HTMLButtonElement,\n SubmitButtonProps\n>((\n { className, isLoading, hasInput, onStop, onVoice, icons, disabled, children, ...props },\n ref,\n) => {\n // Determine button state and behavior\n const showStop = isLoading;\n const showVoice = !isLoading && !hasInput && onVoice;\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (showStop && onStop) {\n e.preventDefault();\n onStop();\n } else if (showVoice && onVoice) {\n e.preventDefault();\n onVoice();\n }\n // For submit, let form handle it naturally\n };\n\n // Determine icon to show\n let icon: React.ReactNode;\n let ariaLabel: string;\n\n if (showStop) {\n icon = icons?.stop || <StopIcon />;\n ariaLabel = \"Stop generating\";\n } else if (showVoice) {\n icon = icons?.voice || <VoiceIcon />;\n ariaLabel = \"Voice input\";\n } else {\n icon = icons?.submit || <SubmitIcon />;\n ariaLabel = \"Send message\";\n }\n\n return (\n <button\n ref={ref}\n type={showStop || showVoice ? \"button\" : \"submit\"}\n className={className}\n disabled={disabled && !showStop}\n onClick={handleClick}\n data-submit-button=\"\"\n data-state={showStop ? \"stop\" : showVoice ? \"voice\" : \"submit\"}\n data-loading={isLoading}\n aria-label={ariaLabel}\n {...props}\n >\n {children || icon}\n </button>\n );\n});\n\nSubmitButton.displayName = \"SubmitButton\";\n\nexport interface LoadingIndicatorProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * LoadingIndicator - Loading spinner primitive\n *\n * @example\n * ```tsx\n * {isLoading && (\n * <LoadingIndicator className=\"animate-spin h-4 w-4\" />\n * )}\n * ```\n */\nexport const LoadingIndicator = React.forwardRef<\n HTMLDivElement,\n LoadingIndicatorProps\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-loading-indicator=\"\"\n role=\"status\"\n aria-label=\"Loading\"\n {...props}\n />\n );\n});\n\nLoadingIndicator.displayName = \"LoadingIndicator\";\n", "/**\n * Agent Primitives - Layer 2 (Unstyled)\n *\n * Primitives for displaying agent status and execution.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\nimport type { AgentStatus as AgentStatusType } from \"../../types/agent.ts\";\n\nexport interface AgentContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\n/**\n * AgentContainer - Root agent UI container\n *\n * @example\n * ```tsx\n * <AgentContainer className=\"border rounded-lg p-4\">\n * <AgentStatus status={agent.status} />\n * <AgentMessages messages={agent.messages} />\n * </AgentContainer>\n * ```\n */\nexport const AgentContainer = React.forwardRef<\n HTMLDivElement,\n AgentContainerProps\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-agent-container=\"\"\n {...props}\n >\n {children}\n </div>\n );\n});\n\nAgentContainer.displayName = \"AgentContainer\";\n\nexport interface AgentStatusProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current agent status */\n status: AgentStatusType;\n\n /** Custom label */\n label?: string;\n}\n\n/**\n * AgentStatus - Status indicator\n *\n * @example\n * ```tsx\n * <AgentStatus\n * status={agent.status}\n * className=\"text-sm font-medium\"\n * />\n * ```\n */\nexport const AgentStatus = React.forwardRef<HTMLDivElement, AgentStatusProps>(\n ({ className, status, label, ...props }, ref) => {\n const displayLabel = label || formatStatus(status);\n\n return (\n <div\n ref={ref}\n className={className}\n data-agent-status=\"\"\n data-status={status}\n role=\"status\"\n aria-label={`Agent status: ${displayLabel}`}\n {...props}\n >\n {displayLabel}\n </div>\n );\n },\n);\n\nAgentStatus.displayName = \"AgentStatus\";\n\nexport interface ThinkingIndicatorProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Thinking text */\n children?: React.ReactNode;\n}\n\n/**\n * ThinkingIndicator - Shows when agent is thinking\n *\n * @example\n * ```tsx\n * {agent.thinking && (\n * <ThinkingIndicator className=\"italic text-gray-600\">\n * {agent.thinking}\n * </ThinkingIndicator>\n * )}\n * ```\n */\nexport const ThinkingIndicator = React.forwardRef<\n HTMLDivElement,\n ThinkingIndicatorProps\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-thinking-indicator=\"\"\n role=\"status\"\n aria-live=\"polite\"\n {...props}\n >\n {children}\n </div>\n );\n});\n\nThinkingIndicator.displayName = \"ThinkingIndicator\";\n\n/**\n * Format status for display\n */\nfunction formatStatus(status: AgentStatusType): string {\n switch (status) {\n case \"idle\":\n return \"Idle\";\n case \"thinking\":\n return \"Thinking...\";\n case \"tool_execution\":\n return \"Using tools...\";\n case \"streaming\":\n return \"Responding...\";\n case \"completed\":\n return \"Completed\";\n case \"error\":\n return \"Error\";\n default:\n return String(status);\n }\n}\n", "/**\n * Tool Primitives - Layer 2 (Unstyled)\n *\n * Primitives for displaying tool invocations and results.\n * Built on Radix UI patterns (shadcn-compatible).\n */\n\nimport * as React from \"react\";\nimport type { ToolCall } from \"../../types/agent.ts\";\n\nexport interface ToolInvocationProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Tool name */\n name: string;\n\n /** Tool arguments */\n args?: Record<string, unknown>;\n\n /** Tool status */\n status?: ToolCall[\"status\"];\n\n children?: React.ReactNode;\n}\n\n/**\n * ToolInvocation - Tool call display\n *\n * @example\n * ```tsx\n * <ToolInvocation\n * name={tool.name}\n * args={tool.args}\n * status={tool.status}\n * className=\"border-l-4 border-blue-500 pl-4\"\n * >\n * <ToolResult result={tool.result} />\n * </ToolInvocation>\n * ```\n */\nexport const ToolInvocation = React.forwardRef<\n HTMLDivElement,\n ToolInvocationProps\n>(({ className, name, args, status, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-tool-invocation=\"\"\n data-tool-name={name}\n data-status={status}\n {...props}\n >\n <div data-tool-header=\"\">\n <span data-tool-name=\"\">{name}</span>\n {status && <span data-tool-status=\"\">({status})</span>}\n </div>\n\n {args && (\n <div data-tool-args=\"\">\n <pre>{JSON.stringify(args, null, 2)}</pre>\n </div>\n )}\n\n {children}\n </div>\n );\n});\n\nToolInvocation.displayName = \"ToolInvocation\";\n\nexport interface ToolResultProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Tool result data */\n result: unknown;\n\n /** Custom renderer */\n renderResult?: (result: unknown) => React.ReactNode;\n}\n\n/**\n * ToolResult - Tool result display\n *\n * @example\n * ```tsx\n * <ToolResult\n * result={tool.result}\n * className=\"mt-2 p-2 bg-gray-100 rounded\"\n * />\n * ```\n */\nexport const ToolResult = React.forwardRef<HTMLDivElement, ToolResultProps>(\n ({ className, result, renderResult, ...props }, ref) => {\n const content = renderResult ? renderResult(result) : JSON.stringify(result, null, 2);\n\n return (\n <div\n ref={ref}\n className={className}\n data-tool-result=\"\"\n {...props}\n >\n {typeof content === \"string\" ? <pre>{content}</pre> : content}\n </div>\n );\n },\n);\n\nToolResult.displayName = \"ToolResult\";\n\nexport interface ToolListProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Tool calls to display */\n toolCalls: ToolCall[];\n\n /** Render each tool */\n renderTool?: (toolCall: ToolCall) => React.ReactNode;\n}\n\n/**\n * ToolList - Display list of tool calls\n *\n * @example\n * ```tsx\n * <ToolList\n * toolCalls={agent.toolCalls}\n * className=\"space-y-2\"\n * renderTool={(tool) => (\n * <ToolInvocation {...tool}>\n * <ToolResult result={tool.result} />\n * </ToolInvocation>\n * )}\n * />\n * ```\n */\nexport const ToolList = React.forwardRef<HTMLDivElement, ToolListProps>(\n ({ className, toolCalls, renderTool, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={className}\n data-tool-list=\"\"\n {...props}\n >\n {toolCalls.map((tool) =>\n renderTool\n ? <React.Fragment key={tool.id}>{renderTool(tool)}</React.Fragment>\n : (\n <ToolInvocation\n key={tool.id}\n name={tool.name}\n args={tool.args}\n status={tool.status}\n >\n {tool.result !== undefined && <ToolResult result={tool.result} />}\n </ToolInvocation>\n )\n )}\n </div>\n );\n },\n);\n\nToolList.displayName = \"ToolList\";\n", "/**\n * useVoiceInput - Web Speech API hook for voice input\n *\n * Provides browser-based speech recognition for chat input.\n */\n\nimport * as React from \"react\";\n\nexport interface UseVoiceInputOptions {\n /** Language for speech recognition (default: browser default) */\n language?: string;\n\n /** Continuous listening mode (default: false) */\n continuous?: boolean;\n\n /** Show interim results while speaking (default: true) */\n interimResults?: boolean;\n\n /** Callback when transcript is received */\n onTranscript?: (transcript: string, isFinal: boolean) => void;\n\n /** Callback when an error occurs */\n onError?: (error: string) => void;\n\n /** Callback when listening starts */\n onStart?: () => void;\n\n /** Callback when listening ends */\n onEnd?: () => void;\n}\n\nexport interface UseVoiceInputResult {\n /** Whether voice input is supported in this browser */\n isSupported: boolean;\n\n /** Whether currently listening */\n isListening: boolean;\n\n /** Current transcript (interim or final) */\n transcript: string;\n\n /** Start listening */\n start: () => void;\n\n /** Stop listening */\n stop: () => void;\n\n /** Toggle listening on/off */\n toggle: () => void;\n\n /** Clear the transcript */\n clear: () => void;\n\n /** Last error message */\n error: string | null;\n}\n\n// Type for SpeechRecognition (not in all TypeScript libs)\ninterface SpeechRecognitionEvent extends Event {\n results: SpeechRecognitionResultList;\n resultIndex: number;\n}\n\ninterface SpeechRecognitionResultList {\n length: number;\n item(index: number): SpeechRecognitionResult;\n [index: number]: SpeechRecognitionResult;\n}\n\ninterface SpeechRecognitionResult {\n length: number;\n item(index: number): SpeechRecognitionAlternative;\n [index: number]: SpeechRecognitionAlternative;\n isFinal: boolean;\n}\n\ninterface SpeechRecognitionAlternative {\n transcript: string;\n confidence: number;\n}\n\ninterface SpeechRecognitionErrorEvent extends Event {\n error: string;\n message: string;\n}\n\ninterface SpeechRecognition extends EventTarget {\n continuous: boolean;\n interimResults: boolean;\n lang: string;\n onresult: ((event: SpeechRecognitionEvent) => void) | null;\n onerror: ((event: SpeechRecognitionErrorEvent) => void) | null;\n onstart: (() => void) | null;\n onend: (() => void) | null;\n start(): void;\n stop(): void;\n abort(): void;\n}\n\ndeclare global {\n interface Window {\n SpeechRecognition?: new () => SpeechRecognition;\n webkitSpeechRecognition?: new () => SpeechRecognition;\n }\n}\n\n/**\n * useVoiceInput - Voice input hook using Web Speech API\n *\n * @example\n * ```tsx\n * const { isListening, transcript, toggle, isSupported } = useVoiceInput({\n * onTranscript: (text, isFinal) => {\n * if (isFinal) setInput(text);\n * }\n * });\n *\n * if (!isSupported) return <span>Voice not supported</span>;\n *\n * return (\n * <button onClick={toggle}>\n * {isListening ? 'Stop' : 'Start'} Voice\n * </button>\n * );\n * ```\n */\nexport function useVoiceInput(\n options: UseVoiceInputOptions = {},\n): UseVoiceInputResult {\n const {\n language,\n continuous = false,\n interimResults = true,\n onTranscript,\n onError,\n onStart,\n onEnd,\n } = options;\n\n const [isListening, setIsListening] = React.useState(false);\n const [transcript, setTranscript] = React.useState(\"\");\n const [error, setError] = React.useState<string | null>(null);\n\n const recognitionRef = React.useRef<SpeechRecognition | null>(null);\n\n // Check browser support\n const isSupported = React.useMemo(() => {\n if (typeof globalThis === \"undefined\") return false;\n // deno-lint-ignore no-explicit-any\n const g = globalThis as any;\n return !!(g.SpeechRecognition || g.webkitSpeechRecognition);\n }, []);\n\n // Initialize recognition\n React.useEffect(() => {\n if (!isSupported) return;\n\n // deno-lint-ignore no-explicit-any\n const g = globalThis as any;\n const SpeechRecognitionAPI = g.SpeechRecognition || g.webkitSpeechRecognition;\n\n if (!SpeechRecognitionAPI) return;\n\n const recognition = new SpeechRecognitionAPI();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n\n if (language) {\n recognition.lang = language;\n }\n\n recognition.onresult = (event: SpeechRecognitionEvent) => {\n let finalTranscript = \"\";\n let interimTranscript = \"\";\n\n for (let i = event.resultIndex; i < event.results.length; i++) {\n const result = event.results[i];\n if (!result || !result[0]) continue;\n\n if (result.isFinal) {\n finalTranscript += result[0].transcript;\n } else {\n interimTranscript += result[0].transcript;\n }\n }\n\n const currentTranscript = finalTranscript || interimTranscript;\n setTranscript(currentTranscript);\n\n if (onTranscript) {\n onTranscript(currentTranscript, !!finalTranscript);\n }\n };\n\n recognition.onerror = (event: SpeechRecognitionErrorEvent) => {\n const errorMessage = getErrorMessage(event.error);\n setError(errorMessage);\n setIsListening(false);\n\n if (onError) {\n onError(errorMessage);\n }\n };\n\n recognition.onstart = () => {\n setIsListening(true);\n setError(null);\n\n if (onStart) {\n onStart();\n }\n };\n\n recognition.onend = () => {\n setIsListening(false);\n\n if (onEnd) {\n onEnd();\n }\n };\n\n recognitionRef.current = recognition;\n\n return () => {\n recognition.abort();\n };\n }, [isSupported, language, continuous, interimResults, onTranscript, onError, onStart, onEnd]);\n\n const start = React.useCallback(() => {\n if (!recognitionRef.current || isListening) return;\n\n setTranscript(\"\");\n setError(null);\n\n try {\n recognitionRef.current.start();\n } catch {\n // Already started\n console.warn(\"Speech recognition already started\");\n }\n }, [isListening]);\n\n const stop = React.useCallback(() => {\n if (!recognitionRef.current || !isListening) return;\n\n recognitionRef.current.stop();\n }, [isListening]);\n\n const toggle = React.useCallback(() => {\n if (isListening) {\n stop();\n } else {\n start();\n }\n }, [isListening, start, stop]);\n\n const clear = React.useCallback(() => {\n setTranscript(\"\");\n }, []);\n\n return {\n isSupported,\n isListening,\n transcript,\n start,\n stop,\n toggle,\n clear,\n error,\n };\n}\n\nfunction getErrorMessage(error: string): string {\n switch (error) {\n case \"no-speech\":\n return \"No speech detected. Please try again.\";\n case \"audio-capture\":\n return \"No microphone found. Please check your device.\";\n case \"not-allowed\":\n return \"Microphone permission denied. Please allow access.\";\n case \"network\":\n return \"Network error. Please check your connection.\";\n case \"aborted\":\n return \"Speech recognition was aborted.\";\n case \"language-not-supported\":\n return \"Language not supported.\";\n case \"service-not-allowed\":\n return \"Speech recognition service not allowed.\";\n default:\n return `Speech recognition error: ${error}`;\n }\n}\n", "/**\n * Markdown Component - Rich markdown renderer for chat messages\n *\n * Supports:\n * - GitHub Flavored Markdown (tables, strikethrough, etc.)\n * - Syntax highlighted code blocks\n * - Mermaid diagrams (lazy loaded, client-side only)\n *\n * Works in: Deno, Node.js, Bun (client-side React)\n */\n\nimport * as React from \"react\";\nimport { cn } from \"./theme.ts\";\n\nexport interface MarkdownProps {\n /** Markdown content to render */\n children: string;\n /** Additional class name */\n className?: string;\n /** Enable mermaid diagram rendering (default: true, client-side only) */\n enableMermaid?: boolean;\n /** Custom code block renderer */\n renderCodeBlock?: (props: CodeBlockProps) => React.ReactNode;\n}\n\nexport interface CodeBlockProps {\n language: string | undefined;\n code: string;\n inline?: boolean;\n}\n\n// Check if we're in a browser environment\nconst isBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n\n// esm.sh CDN URLs for browser-side dynamic imports\n// These URLs are stored in variables to prevent bundler transforms\nconst ESM_REACT_MARKDOWN = \"https://esm.sh/react-markdown@9?external=react\";\nconst ESM_REMARK_GFM = \"https://esm.sh/remark-gfm@4\";\nconst ESM_REHYPE_HIGHLIGHT = \"https://esm.sh/rehype-highlight@7\";\nconst ESM_MERMAID = \"https://esm.sh/mermaid@11\";\n\n// Lazy load heavy dependencies\n// deno-lint-ignore no-explicit-any\nlet ReactMarkdown: any = null;\n// deno-lint-ignore no-explicit-any\nlet remarkGfm: any = null;\n// deno-lint-ignore no-explicit-any\nlet rehypeHighlight: any = null;\n\n// Mermaid state (browser only)\n// deno-lint-ignore no-explicit-any\nlet mermaidPromise: Promise<any> | null = null;\n// deno-lint-ignore no-explicit-any\nlet mermaidModule: any = null;\n\nasync function loadMermaid() {\n if (!isBrowser) return null;\n if (mermaidModule) return mermaidModule;\n if (!mermaidPromise) {\n // Use Function constructor to prevent bundler from transforming the import\n const dynamicImport = new Function(\"url\", \"return import(url)\");\n mermaidPromise = dynamicImport(ESM_MERMAID);\n }\n mermaidModule = await mermaidPromise;\n mermaidModule.default.initialize({\n startOnLoad: false,\n theme: \"neutral\",\n securityLevel: \"loose\",\n });\n return mermaidModule;\n}\n\n/**\n * Mermaid diagram component with lazy loading (client-side only)\n */\nfunction MermaidDiagram({ code }: { code: string }) {\n const [svg, setSvg] = React.useState<string>(\"\");\n const [error, setError] = React.useState<string>(\"\");\n\n React.useEffect(() => {\n // Only render in browser\n if (!isBrowser) return;\n\n let cancelled = false;\n\n async function render() {\n try {\n const mermaid = await loadMermaid();\n if (!mermaid) return;\n\n const id = `mermaid-${Math.random().toString(36).slice(2, 9)}`;\n const { svg: renderedSvg } = await mermaid.default.render(id, code);\n if (!cancelled) {\n setSvg(renderedSvg);\n setError(\"\");\n }\n } catch (err) {\n if (!cancelled) {\n setError(err instanceof Error ? err.message : \"Failed to render diagram\");\n }\n }\n }\n\n render();\n return () => {\n cancelled = true;\n };\n }, [code]);\n\n // Server-side: show code block fallback\n if (!isBrowser) {\n return (\n <pre className=\"my-4 p-4 bg-neutral-100 dark:bg-neutral-800 rounded-lg overflow-auto\">\n <code>{code}</code>\n </pre>\n );\n }\n\n if (error) {\n return (\n <div className=\"my-4 p-4 bg-red-50 dark:bg-red-900/20 rounded-lg text-red-600 dark:text-red-400 text-sm\">\n <p className=\"font-medium\">Mermaid Error</p>\n <p>{error}</p>\n <pre className=\"mt-2 text-xs overflow-auto\">{code}</pre>\n </div>\n );\n }\n\n if (!svg) {\n return (\n <div className=\"my-4 p-4 bg-neutral-100 dark:bg-neutral-800 rounded-lg animate-pulse\">\n <div className=\"h-32 flex items-center justify-center text-neutral-400\">\n Loading diagram...\n </div>\n </div>\n );\n }\n\n return (\n <div\n className=\"my-4 flex justify-center overflow-auto\"\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n );\n}\n\n/**\n * Code block component with syntax highlighting and mermaid support\n */\nfunction CodeBlock({\n language,\n code,\n inline,\n enableMermaid,\n renderCodeBlock,\n}: CodeBlockProps & {\n enableMermaid: boolean;\n renderCodeBlock?: MarkdownProps[\"renderCodeBlock\"];\n}) {\n // Custom renderer takes priority\n if (renderCodeBlock) {\n return <>{renderCodeBlock({ language, code, inline })}</>;\n }\n\n // Inline code\n if (inline) {\n return (\n <code className=\"bg-neutral-100 dark:bg-neutral-800 px-1.5 py-0.5 rounded text-sm font-mono\">\n {code}\n </code>\n );\n }\n\n // Mermaid diagrams\n if (enableMermaid && language === \"mermaid\") {\n return <MermaidDiagram code={code} />;\n }\n\n // Regular code block (syntax highlighting handled by rehype-highlight)\n return (\n <pre className=\"my-4 p-4 bg-neutral-900 dark:bg-neutral-950 rounded-lg overflow-auto\">\n <code className={language ? `language-${language} hljs` : \"hljs\"}>\n {code}\n </code>\n </pre>\n );\n}\n\n/**\n * Rich Markdown renderer with GFM, syntax highlighting, and mermaid support\n */\nexport function Markdown({\n children,\n className,\n enableMermaid = true,\n renderCodeBlock,\n}: MarkdownProps): React.ReactElement {\n const [isLoaded, setIsLoaded] = React.useState(false);\n const [, forceUpdate] = React.useReducer((x) => x + 1, 0);\n\n // Lazy load react-markdown and plugins\n React.useEffect(() => {\n async function load() {\n if (!ReactMarkdown) {\n // Always use esm.sh URLs - the bundle runs in browser\n // Using Function constructor to prevent bundler from transforming the imports\n const dynamicImport = new Function(\"url\", \"return import(url)\");\n const [rmModule, gfmModule, highlightModule] = await Promise.all([\n dynamicImport(ESM_REACT_MARKDOWN),\n dynamicImport(ESM_REMARK_GFM),\n dynamicImport(ESM_REHYPE_HIGHLIGHT),\n ]);\n ReactMarkdown = rmModule.default;\n remarkGfm = gfmModule.default;\n rehypeHighlight = highlightModule.default;\n }\n setIsLoaded(true);\n forceUpdate();\n }\n load();\n }, []);\n\n // Fallback while loading\n if (!isLoaded || !ReactMarkdown) {\n return (\n <div className={cn(\"prose prose-sm dark:prose-invert max-w-none\", className)}>\n <p className=\"whitespace-pre-wrap\">{children}</p>\n </div>\n );\n }\n\n return (\n <div className={cn(\"prose prose-sm dark:prose-invert max-w-none\", className)}>\n <ReactMarkdown\n remarkPlugins={remarkGfm ? [remarkGfm] : []}\n rehypePlugins={rehypeHighlight ? [rehypeHighlight] : []}\n components={{\n // Custom code rendering\n // deno-lint-ignore no-explicit-any\n code(props: any) {\n const { className: codeClassName, children: codeChildren, node } = props;\n const match = /language-(\\w+)/.exec(codeClassName || \"\");\n const language = match ? match[1] : undefined;\n const code = String(codeChildren).replace(/\\n$/, \"\");\n const isInline = !node?.position?.start?.line;\n\n return (\n <CodeBlock\n language={language}\n code={code}\n inline={isInline}\n enableMermaid={enableMermaid}\n renderCodeBlock={renderCodeBlock}\n />\n );\n },\n // Style tables\n // deno-lint-ignore no-explicit-any\n table(props: any) {\n return (\n <div className=\"my-4 overflow-auto\">\n <table className=\"min-w-full divide-y divide-neutral-200 dark:divide-neutral-700\">\n {props.children}\n </table>\n </div>\n );\n },\n // Style links\n // deno-lint-ignore no-explicit-any\n a(props: any) {\n return (\n <a\n href={props.href}\n className=\"text-blue-600 dark:text-blue-400 hover:underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {props.children}\n </a>\n );\n },\n // Style blockquotes\n // deno-lint-ignore no-explicit-any\n blockquote(props: any) {\n return (\n <blockquote className=\"border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 my-4 text-neutral-600 dark:text-neutral-400 italic\">\n {props.children}\n </blockquote>\n );\n },\n }}\n >\n {children}\n </ReactMarkdown>\n </div>\n );\n}\n\nexport default Markdown;\n", "/**\n * AgentCard Component - Layer 3 (Styled)\n *\n * Production-ready agent status and tool visualization.\n * Built on Layer 2 primitives.\n */\n\nimport * as React from \"react\";\nimport {\n AgentContainer,\n AgentStatus as AgentStatusPrimitive,\n ThinkingIndicator,\n ToolInvocation,\n ToolList,\n ToolResult,\n} from \"../primitives/index.ts\";\nimport type { AgentStatus, Message, ToolCall } from \"../../types/agent.ts\";\nimport { type AgentTheme, cn, defaultAgentTheme, mergeThemes } from \"./theme.ts\";\n\nexport interface AgentCardProps {\n /** Agent messages */\n messages?: Message[];\n\n /** Tool calls */\n toolCalls?: ToolCall[];\n\n /** Agent status */\n status: AgentStatus;\n\n /** Thinking/reasoning text */\n thinking?: string;\n\n /** Additional class name */\n className?: string;\n\n /** Theme customization */\n theme?: Partial<AgentTheme>;\n\n /** Custom tool renderer */\n renderTool?: (toolCall: ToolCall) => React.ReactNode;\n}\n\n/**\n * AgentCard - Agent status and tool visualization\n *\n * @example\n * ```tsx\n * import { AgentCard } from 'veryfront/ai/components';\n * import { useAgent } from 'veryfront/ai/react';\n *\n * export default function AgentInterface() {\n * const agent = useAgent({ agent: 'support' });\n * return <AgentCard {...agent} />;\n * }\n * ```\n */\nexport const AgentCard = React.forwardRef<HTMLDivElement, AgentCardProps>(\n (\n {\n messages,\n toolCalls = [],\n status,\n thinking,\n className,\n theme: userTheme,\n renderTool,\n },\n ref,\n ) => {\n const theme = mergeThemes(defaultAgentTheme, userTheme);\n\n return (\n <AgentContainer ref={ref} className={cn(theme.container, className)}>\n {/* Status */}\n <AgentStatusPrimitive\n status={status}\n className={cn(theme.status, getStatusColor(status))}\n />\n\n {/* Thinking indicator */}\n {thinking && (\n <ThinkingIndicator className={theme.thinking}>\n <span className=\"font-semibold\">Thinking:</span>\n {thinking}\n </ThinkingIndicator>\n )}\n\n {/* Tool calls */}\n {toolCalls.length > 0 && (\n <div className=\"space-y-3\">\n <h3 className=\"text-sm font-semibold text-neutral-700 dark:text-neutral-300\">\n Tool Calls\n </h3>\n <ToolList\n toolCalls={toolCalls}\n className=\"space-y-3\"\n renderTool={renderTool ||\n ((tool) => (\n <ToolInvocation\n name={tool.name}\n args={tool.args}\n status={tool.status}\n className={theme.tool}\n >\n {tool.result !== undefined && (\n <ToolResult result={tool.result} className={theme.toolResult} />\n )}\n {tool.error && (\n <div className=\"mt-2 p-3 bg-red-50 dark:bg-red-900/20 text-red-900 dark:text-red-100 rounded-xl text-sm border border-red-200 dark:border-red-800\">\n Error: {tool.error}\n </div>\n )}\n </ToolInvocation>\n ))}\n />\n </div>\n )}\n\n {/* Messages (if provided) */}\n {messages && messages.length > 0 && (\n <div className=\"space-y-3\">\n <h3 className=\"text-sm font-semibold text-neutral-700 dark:text-neutral-300\">\n Messages\n </h3>\n <div className=\"space-y-2 max-h-96 overflow-y-auto\">\n {messages.map((msg) => (\n <div\n key={msg.id}\n className=\"text-sm p-3 rounded-xl bg-neutral-50 dark:bg-neutral-800\"\n >\n <span className=\"font-semibold capitalize text-neutral-900 dark:text-neutral-100\">\n {msg.role}:\n </span>\n <span className=\"text-neutral-600 dark:text-neutral-400 ml-1\">\n {msg.content.substring(0, 200)}...\n </span>\n </div>\n ))}\n </div>\n </div>\n )}\n </AgentContainer>\n );\n },\n);\n\nAgentCard.displayName = \"AgentCard\";\n\n/**\n * Get status color classes - Apple-inspired status colors\n */\nfunction getStatusColor(status: AgentStatus): string {\n switch (status) {\n case \"idle\":\n return \"bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300\";\n case \"thinking\":\n return \"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300\";\n case \"tool_execution\":\n return \"bg-violet-100 text-violet-700 dark:bg-violet-900/30 dark:text-violet-300\";\n case \"streaming\":\n return \"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300\";\n case \"completed\":\n return \"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300\";\n case \"error\":\n return \"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300\";\n default:\n return \"bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300\";\n }\n}\n", "/**\n * Message Component - Layer 3 (Styled)\n *\n * Production-ready message display.\n */\n\nimport * as React from \"react\";\nimport { MessageContent, MessageItem, MessageRole } from \"../primitives/index.ts\";\nimport type { Message as MessageType } from \"../../types/agent.ts\";\nimport { type ChatTheme, cn, defaultChatTheme, mergeThemes } from \"./theme.ts\";\n\nexport interface MessageProps {\n /** Message to display */\n message: MessageType;\n\n /** Additional class name */\n className?: string;\n\n /** Theme customization */\n theme?: Partial<ChatTheme>;\n\n /** Show role label */\n showRole?: boolean;\n\n /** Show timestamp */\n showTimestamp?: boolean;\n}\n\n/**\n * Message - Styled message component\n *\n * @example\n * ```tsx\n * import { Message } from 'veryfront/ai/components';\n *\n * <Message message={msg} showRole={true} />\n * ```\n */\nexport const Message = React.forwardRef<HTMLDivElement, MessageProps>(\n (\n { message, className, theme: userTheme, showRole = false, showTimestamp = false },\n ref,\n ) => {\n const theme = mergeThemes(defaultChatTheme, userTheme);\n\n return (\n <MessageItem\n ref={ref}\n role={message.role}\n className={cn(\n \"flex\",\n message.role === \"user\" ? \"justify-end\" : \"justify-start\",\n className,\n )}\n >\n <div className={theme.message?.[message.role] || theme.message?.assistant}>\n {showRole && (\n <MessageRole className=\"block text-xs font-semibold mb-1 opacity-75 uppercase\">\n {message.role}\n </MessageRole>\n )}\n\n <MessageContent>{message.content}</MessageContent>\n\n {showTimestamp && message.timestamp && (\n <div className=\"text-xs opacity-60 mt-1\">\n {new Date(message.timestamp).toLocaleTimeString()}\n </div>\n )}\n </div>\n </MessageItem>\n );\n },\n);\n\nMessage.displayName = \"Message\";\n\nexport interface StreamingMessageProps {\n /** Streaming content */\n content: string;\n\n /** Show typing cursor */\n showCursor?: boolean;\n\n /** Additional class name */\n className?: string;\n\n /** Theme customization */\n theme?: Partial<ChatTheme>;\n}\n\n/**\n * StreamingMessage - Display streaming text\n *\n * @example\n * ```tsx\n * import { StreamingMessage } from 'veryfront/ai/components';\n *\n * {streamingText && (\n * <StreamingMessage content={streamingText} showCursor={true} />\n * )}\n * ```\n */\nexport const StreamingMessage = React.forwardRef<\n HTMLDivElement,\n StreamingMessageProps\n>(({ content, showCursor = true, className, theme: userTheme }, ref) => {\n const theme = mergeThemes(defaultChatTheme, userTheme);\n\n return (\n <MessageItem\n ref={ref}\n role=\"assistant\"\n className={cn(\"flex justify-start\", className)}\n >\n <div className={theme.message?.assistant}>\n <MessageContent>\n {content}\n {showCursor && <span className=\"inline-block w-1 h-4 bg-current ml-1 animate-pulse\" />}\n </MessageContent>\n </div>\n </MessageItem>\n );\n});\n\nStreamingMessage.displayName = \"StreamingMessage\";\n", "/**\n * Error Boundary for AI Components\n *\n * React error boundary specifically designed for AI component errors.\n */\n\nimport * as React from \"react\";\n\nexport interface AIErrorBoundaryProps {\n /** Children to wrap */\n children: React.ReactNode;\n\n /** Fallback UI when error occurs */\n fallback?: React.ReactNode | ((error: Error, reset: () => void) => React.ReactNode);\n\n /** Callback when error occurs */\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n\n /** Custom error message */\n errorMessage?: string;\n}\n\ninterface AIErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\n/**\n * AIErrorBoundary - Error boundary for AI components\n *\n * @example\n * ```tsx\n * import { AIErrorBoundary } from 'veryfront/ai/components';\n *\n * <AIErrorBoundary\n * fallback={(error, reset) => (\n * <div>\n * <p>Error: {error.message}</p>\n * <button onClick={reset}>Try Again</button>\n * </div>\n * )}\n * >\n * <Chat {...chat} />\n * </AIErrorBoundary>\n * ```\n */\nexport class AIErrorBoundary extends React.Component<\n AIErrorBoundaryProps,\n AIErrorBoundaryState\n> {\n constructor(props: AIErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): AIErrorBoundaryState {\n return { hasError: true, error };\n }\n\n override componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n // Log error\n console.error(\"[AIErrorBoundary] Caught error:\", error, errorInfo);\n\n // Call error callback\n if (this.props.onError) {\n this.props.onError(error, errorInfo);\n }\n }\n\n reset = () => {\n this.setState({ hasError: false, error: null });\n };\n\n override render() {\n if (this.state.hasError && this.state.error) {\n // Custom fallback\n if (this.props.fallback) {\n if (typeof this.props.fallback === \"function\") {\n return this.props.fallback(this.state.error, this.reset);\n }\n return this.props.fallback;\n }\n\n // Default fallback UI - Apple-inspired design\n return (\n <div\n className=\"border border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-900/20 rounded-2xl p-6\"\n role=\"alert\"\n >\n <div className=\"flex items-start gap-4\">\n <div className=\"w-10 h-10 rounded-full bg-red-100 dark:bg-red-900/40 flex items-center justify-center flex-shrink-0\">\n <svg\n className=\"w-5 h-5 text-red-600 dark:text-red-400\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n </div>\n\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"text-base font-semibold text-red-900 dark:text-red-100\">\n {this.props.errorMessage || \"An error occurred in the AI component\"}\n </h3>\n\n <p className=\"mt-1.5 text-sm text-red-700 dark:text-red-300 leading-relaxed\">\n {this.state.error.message}\n </p>\n\n <button\n type=\"button\"\n onClick={this.reset}\n className=\"mt-4 px-5 py-2.5 text-sm font-medium text-white bg-red-500 hover:bg-red-600 active:scale-[0.98] rounded-full transition-all\"\n >\n Try Again\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n return this.props.children;\n }\n}\n\n/**\n * Hook version of error boundary\n */\nexport function useAIErrorHandler() {\n const [error, setError] = React.useState<Error | null>(null);\n\n const handleError = React.useCallback((error: Error) => {\n console.error(\"[useAIErrorHandler] Error:\", error);\n setError(error);\n }, []);\n\n const clearError = React.useCallback(() => {\n setError(null);\n }, []);\n\n return {\n error,\n handleError,\n clearError,\n hasError: error !== null,\n };\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["React", "React", "jsx", "React", "jsx", "React", "jsx", "React", "jsx", "jsxs", "React", "React", "Fragment", "jsx", "jsxs", "jsx", "jsxs", "React", "jsx", "jsxs", "React", "jsx", "jsxs", "React", "jsx", "jsxs", "error"]
|
|
7
7
|
}
|
package/dist/ai/dev.js
CHANGED
|
@@ -531,9 +531,7 @@ function toError(veryfrontError) {
|
|
|
531
531
|
|
|
532
532
|
// src/ai/utils/tool.ts
|
|
533
533
|
var ToolRegistryClass = class {
|
|
534
|
-
|
|
535
|
-
this.tools = /* @__PURE__ */ new Map();
|
|
536
|
-
}
|
|
534
|
+
tools = /* @__PURE__ */ new Map();
|
|
537
535
|
register(id, toolInstance) {
|
|
538
536
|
if (this.tools.has(id)) {
|
|
539
537
|
agentLogger.debug(`Tool "${id}" is already registered. Overwriting.`);
|
|
@@ -591,9 +589,7 @@ function toolToProviderDefinition(tool) {
|
|
|
591
589
|
|
|
592
590
|
// src/ai/mcp/resource.ts
|
|
593
591
|
var ResourceRegistryClass = class {
|
|
594
|
-
|
|
595
|
-
this.resources = /* @__PURE__ */ new Map();
|
|
596
|
-
}
|
|
592
|
+
resources = /* @__PURE__ */ new Map();
|
|
597
593
|
/**
|
|
598
594
|
* Register a resource
|
|
599
595
|
*/
|
|
@@ -660,9 +656,7 @@ var resourceRegistry = _globalResource[RESOURCE_REGISTRY_KEY] ||= new ResourceRe
|
|
|
660
656
|
|
|
661
657
|
// src/ai/mcp/prompt.ts
|
|
662
658
|
var PromptRegistryClass = class {
|
|
663
|
-
|
|
664
|
-
this.prompts = /* @__PURE__ */ new Map();
|
|
665
|
-
}
|
|
659
|
+
prompts = /* @__PURE__ */ new Map();
|
|
666
660
|
/**
|
|
667
661
|
* Register a prompt
|
|
668
662
|
*/
|
package/dist/ai/dev.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/_shims/deno-env.ts", "../../../src/ai/dev/testing/agent-tester.ts", "../../../src/ai/dev/testing/tool-tester.ts", "../../../src/ai/utils/zod-json-schema.ts", "../../../src/core/utils/runtime-guards.ts", "../../../src/core/utils/logger/env.ts", "../../../src/core/utils/logger/logger.ts", "../../../src/core/errors/veryfront-error.ts", "../../../src/ai/utils/tool.ts", "../../../src/ai/mcp/resource.ts", "../../../src/ai/mcp/prompt.ts", "../../../src/ai/mcp/registry.ts", "../../../src/ai/dev/debug/inspector.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Shim for Deno.env in Node.js environment\n * This file is injected by esbuild to provide Deno.env compatibility\n */\n\n// @ts-ignore - Global Deno shim for Node.js\nglobalThis.Deno = globalThis.Deno || {\n env: {\n get(key: string): string | undefined {\n return process.env[key];\n },\n set(key: string, value: string): void {\n process.env[key] = value;\n },\n delete(key: string): void {\n delete process.env[key];\n },\n has(key: string): boolean {\n return key in process.env;\n },\n toObject(): Record<string, string> {\n return { ...process.env } as Record<string, string>;\n },\n },\n};\n", "/**\n * Agent Testing Utilities\n *\n * Utilities for testing agents in development and CI/CD.\n */\n\nimport type { Agent, AgentResponse, Message } from \"../../types/agent.ts\";\n\nexport interface TestCase {\n /** Test name */\n name: string;\n\n /** Input to agent */\n input: string | Message[];\n\n /** Expected output pattern (regex or string) */\n expected?: RegExp | string;\n\n /** Expected tool calls */\n expectToolCalls?: string[];\n\n /** Maximum execution time (ms) */\n timeout?: number;\n\n /** Custom validator */\n validate?: (response: AgentResponse) => boolean | Promise<boolean>;\n}\n\nexport interface TestResult {\n /** Test case name */\n name: string;\n\n /** Pass/fail */\n passed: boolean;\n\n /** Response from agent */\n response?: AgentResponse;\n\n /** Error if test failed */\n error?: string;\n\n /** Execution time */\n executionTime: number;\n\n /** Tool calls made */\n toolCalls: string[];\n}\n\nexport interface TestSuite {\n /** Suite name */\n name: string;\n\n /** Test results */\n results: TestResult[];\n\n /** Overall pass/fail */\n passed: boolean;\n\n /** Total execution time */\n totalTime: number;\n}\n\n/**\n * Test an agent with multiple test cases\n *\n * @example\n * ```typescript\n * import { testAgent } from 'veryfront/ai/dev';\n *\n * const results = await testAgent(myAgent, [\n * {\n * name: 'Simple greeting',\n * input: 'Hello',\n * expected: /hello|hi|hey/i,\n * },\n * {\n * name: 'Tool usage',\n * input: 'Search for AI frameworks',\n * expectToolCalls: ['searchWeb'],\n * },\n * ]);\n *\n * console.log(`Passed: ${results.results.filter(r => r.passed).length}/${results.results.length}`);\n * ```\n */\nexport async function testAgent(\n agent: Agent,\n testCases: TestCase[],\n): Promise<TestSuite> {\n const suite: TestSuite = {\n name: agent.id,\n results: [],\n passed: true,\n totalTime: 0,\n };\n\n const suiteStartTime = Date.now();\n\n for (const testCase of testCases) {\n const result = await runTestCase(agent, testCase);\n suite.results.push(result);\n\n if (!result.passed) {\n suite.passed = false;\n }\n }\n\n suite.totalTime = Date.now() - suiteStartTime;\n\n return suite;\n}\n\n/**\n * Run a single test case\n */\nasync function runTestCase(agent: Agent, testCase: TestCase): Promise<TestResult> {\n const startTime = Date.now();\n\n try {\n // Set timeout\n const timeout = testCase.timeout || 30000;\n const timeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error(\"Test timeout\")), timeout);\n });\n\n // Execute agent\n const responsePromise = agent.generate({\n input: testCase.input,\n });\n\n const response = await Promise.race([responsePromise, timeoutPromise]);\n\n const executionTime = Date.now() - startTime;\n const toolCalls = response.toolCalls.map((tc) => tc.name);\n\n // Validate response\n let passed = true;\n let error: string | undefined;\n\n // Check expected output\n if (testCase.expected) {\n if (testCase.expected instanceof RegExp) {\n passed = testCase.expected.test(response.text);\n if (!passed) {\n error = `Output \"${response.text}\" does not match pattern ${testCase.expected}`;\n }\n } else {\n passed = response.text.includes(testCase.expected);\n if (!passed) {\n error = `Output does not contain expected text: \"${testCase.expected}\"`;\n }\n }\n }\n\n // Check expected tool calls\n if (passed && testCase.expectToolCalls) {\n const expectedTools = testCase.expectToolCalls;\n const missingTools = expectedTools.filter((t) => !toolCalls.includes(t));\n\n if (missingTools.length > 0) {\n passed = false;\n error = `Expected tool calls not found: ${missingTools.join(\", \")}`;\n }\n }\n\n // Custom validation\n if (passed && testCase.validate) {\n try {\n passed = await testCase.validate(response);\n if (!passed) {\n error = \"Custom validation failed\";\n }\n } catch (err) {\n passed = false;\n error = `Custom validation error: ${err instanceof Error ? err.message : String(err)}`;\n }\n }\n\n return {\n name: testCase.name,\n passed,\n response,\n error,\n executionTime,\n toolCalls,\n };\n } catch (err) {\n return {\n name: testCase.name,\n passed: false,\n error: err instanceof Error ? err.message : String(err),\n executionTime: Date.now() - startTime,\n toolCalls: [],\n };\n }\n}\n\n/**\n * Print test results in a readable format\n */\nexport function printTestResults(suite: TestSuite): void {\n console.log(`\\n=== Test Suite: ${suite.name} ===\\n`);\n\n const passed = suite.results.filter((r) => r.passed).length;\n const total = suite.results.length;\n\n suite.results.forEach((result, index) => {\n const icon = result.passed ? \"\u2705\" : \"\u274C\";\n console.log(`${icon} ${index + 1}. ${result.name}`);\n\n if (!result.passed && result.error) {\n console.log(` Error: ${result.error}`);\n }\n\n if (result.toolCalls.length > 0) {\n console.log(` Tools used: ${result.toolCalls.join(\", \")}`);\n }\n\n console.log(` Time: ${result.executionTime}ms\\n`);\n });\n\n console.log(`Results: ${passed}/${total} passed`);\n console.log(`Total time: ${suite.totalTime}ms`);\n console.log(`Status: ${suite.passed ? \"\u2705 PASSED\" : \"\u274C FAILED\"}\\n`);\n}\n\n/**\n * Assert that an agent response contains text\n */\nexport function assertContains(response: AgentResponse, text: string): boolean {\n return response.text.toLowerCase().includes(text.toLowerCase());\n}\n\n/**\n * Assert that an agent called a specific tool\n */\nexport function assertToolCalled(response: AgentResponse, toolName: string): boolean {\n return response.toolCalls.some((tc) => tc.name === toolName);\n}\n\n/**\n * Assert that an agent completed successfully\n */\nexport function assertCompleted(response: AgentResponse): boolean {\n return response.status === \"completed\";\n}\n", "/**\n * Tool Testing Utilities\n *\n * Utilities for testing individual tools.\n */\n\nimport type { Tool } from \"../../types/tool.ts\";\n\nexport interface ToolTestCase {\n /** Test name */\n name: string;\n\n /** Tool input */\n input: any;\n\n /** Expected output (partial match) */\n expectedOutput?: any;\n\n /** Custom validator */\n validate?: (result: any) => boolean | Promise<boolean>;\n\n /** Should throw error */\n shouldThrow?: boolean;\n\n /** Expected error message pattern */\n expectedError?: RegExp | string;\n}\n\nexport interface ToolTestResult {\n /** Test case name */\n name: string;\n\n /** Pass/fail */\n passed: boolean;\n\n /** Tool result */\n result?: any;\n\n /** Error if test failed */\n error?: string;\n\n /** Execution time */\n executionTime: number;\n}\n\n/**\n * Test a tool with multiple test cases\n *\n * @example\n * ```typescript\n * import { testTool } from 'veryfront/ai/dev';\n *\n * const results = await testTool(calculatorTool, [\n * {\n * name: 'Addition',\n * input: { operation: 'add', a: 2, b: 3 },\n * expectedOutput: { result: 5 },\n * },\n * {\n * name: 'Division by zero',\n * input: { operation: 'divide', a: 5, b: 0 },\n * shouldThrow: true,\n * expectedError: /cannot divide by zero/i,\n * },\n * ]);\n * ```\n */\nexport async function testTool(\n tool: Tool,\n testCases: ToolTestCase[],\n): Promise<ToolTestResult[]> {\n const results: ToolTestResult[] = [];\n\n for (const testCase of testCases) {\n const result = await runToolTest(tool, testCase);\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Run a single tool test\n */\nasync function runToolTest(\n tool: Tool,\n testCase: ToolTestCase,\n): Promise<ToolTestResult> {\n const startTime = Date.now();\n\n try {\n // Execute tool\n const result = await tool.execute(testCase.input);\n const executionTime = Date.now() - startTime;\n\n // If we expected an error but didn't get one\n if (testCase.shouldThrow) {\n return {\n name: testCase.name,\n passed: false,\n error: \"Expected tool to throw error but it succeeded\",\n executionTime,\n };\n }\n\n // Validate output\n let passed = true;\n let error: string | undefined;\n\n if (testCase.expectedOutput !== undefined) {\n passed = deepMatch(result, testCase.expectedOutput);\n if (!passed) {\n error = `Output mismatch. Expected: ${JSON.stringify(testCase.expectedOutput)}, Got: ${\n JSON.stringify(result)\n }`;\n }\n }\n\n if (passed && testCase.validate) {\n try {\n passed = await testCase.validate(result);\n if (!passed) {\n error = \"Custom validation failed\";\n }\n } catch (err) {\n passed = false;\n error = `Validation error: ${err instanceof Error ? err.message : String(err)}`;\n }\n }\n\n return {\n name: testCase.name,\n passed,\n result,\n error,\n executionTime,\n };\n } catch (err) {\n const executionTime = Date.now() - startTime;\n const errorMessage = err instanceof Error ? err.message : String(err);\n\n // If we expected an error\n if (testCase.shouldThrow) {\n let passed = true;\n let error: string | undefined;\n\n if (testCase.expectedError) {\n if (testCase.expectedError instanceof RegExp) {\n passed = testCase.expectedError.test(errorMessage);\n } else {\n passed = errorMessage.includes(testCase.expectedError);\n }\n\n if (!passed) {\n error =\n `Error message mismatch. Expected pattern: ${testCase.expectedError}, Got: ${errorMessage}`;\n }\n }\n\n return {\n name: testCase.name,\n passed,\n error,\n executionTime,\n };\n }\n\n // Unexpected error\n return {\n name: testCase.name,\n passed: false,\n error: `Unexpected error: ${errorMessage}`,\n executionTime,\n };\n }\n}\n\n/**\n * Deep match for partial object comparison\n */\nfunction deepMatch(actual: any, expected: any): boolean {\n if (expected === actual) return true;\n if (typeof expected !== \"object\" || expected === null) return false;\n if (typeof actual !== \"object\" || actual === null) return false;\n\n for (const key in expected) {\n if (!(key in actual)) return false;\n\n const expectedValue = expected[key];\n const actualValue = actual[key];\n\n if (typeof expectedValue === \"object\" && expectedValue !== null) {\n if (!deepMatch(actualValue, expectedValue)) return false;\n } else {\n if (actualValue !== expectedValue) return false;\n }\n }\n\n return true;\n}\n\n/**\n * Print tool test results\n */\nexport function printToolTestResults(\n toolId: string,\n results: ToolTestResult[],\n): void {\n console.log(`\\n=== Tool Tests: ${toolId} ===\\n`);\n\n const passed = results.filter((r) => r.passed).length;\n const total = results.length;\n\n results.forEach((result, index) => {\n const icon = result.passed ? \"\u2705\" : \"\u274C\";\n console.log(`${icon} ${index + 1}. ${result.name}`);\n\n if (!result.passed && result.error) {\n console.log(` Error: ${result.error}`);\n }\n\n if (result.result !== undefined) {\n console.log(` Result: ${JSON.stringify(result.result)}`);\n }\n\n console.log(` Time: ${result.executionTime}ms\\n`);\n });\n\n console.log(`Results: ${passed}/${total} passed`);\n console.log(`Status: ${passed === total ? \"\u2705 ALL PASSED\" : \"\u274C SOME FAILED\"}\\n`);\n}\n", "import type { z } from \"zod\";\nimport { ZodFirstPartyTypeKind } from \"zod\";\nimport type { JsonSchema } from \"../types/json-schema.ts\";\n\nexport function zodToJsonSchema(schema: z.ZodTypeAny): JsonSchema {\n // Guard against invalid schemas (can happen with different zod instances in npm bundle)\n if (!schema || typeof schema !== \"object\" || !(\"_def\" in schema)) {\n throw new Error(\"Invalid Zod schema: missing _def property\");\n }\n\n const details = unwrapSchema(schema);\n const json = convert(details.schema);\n if (details.nullable) {\n return { anyOf: [json, { type: \"null\" }] };\n }\n return json;\n}\n\nexport function isOptionalSchema(schema: z.ZodTypeAny): boolean {\n const { optional } = unwrapSchema(schema);\n return optional;\n}\n\nfunction convert(schema: z.ZodTypeAny): JsonSchema {\n switch (schema._def.typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return { type: \"string\" };\n case ZodFirstPartyTypeKind.ZodNumber:\n return { type: \"number\" };\n case ZodFirstPartyTypeKind.ZodBoolean:\n return { type: \"boolean\" };\n case ZodFirstPartyTypeKind.ZodBigInt:\n return { type: \"integer\" };\n case ZodFirstPartyTypeKind.ZodLiteral: {\n const literal = (schema as z.ZodLiteral<unknown>)._def.value;\n return {\n const: literal,\n type: typeof literal === \"string\"\n ? \"string\"\n : typeof literal === \"number\"\n ? \"number\"\n : typeof literal === \"boolean\"\n ? \"boolean\"\n : undefined,\n };\n }\n case ZodFirstPartyTypeKind.ZodEnum:\n return {\n type: \"string\",\n enum: (schema as z.ZodEnum<[string, ...string[]]>)._def.values,\n };\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return {\n enum: Object.values((schema as z.ZodNativeEnum<any>)._def.values).filter(\n (value) => typeof value !== \"number\",\n ),\n };\n case ZodFirstPartyTypeKind.ZodObject: {\n const obj = schema as z.ZodObject<any>;\n const properties: Record<string, JsonSchema> = {};\n const required: string[] = [];\n\n // Access shape - it might be a function (lazy getter) or an object\n const shape = typeof obj._def.shape === \"function\" ? obj._def.shape() : obj._def.shape;\n\n for (const [key, value] of Object.entries(shape || {})) {\n const zodSchema = value as z.ZodTypeAny;\n properties[key] = zodToJsonSchema(zodSchema);\n if (!isOptionalSchema(zodSchema)) {\n required.push(key);\n }\n }\n\n const json: JsonSchema = { type: \"object\", properties };\n if (required.length > 0) {\n json.required = required;\n }\n return json;\n }\n case ZodFirstPartyTypeKind.ZodArray: {\n const array = schema as z.ZodArray<z.ZodTypeAny>;\n return {\n type: \"array\",\n items: zodToJsonSchema(array._def.type),\n };\n }\n case ZodFirstPartyTypeKind.ZodTuple: {\n const tuple = schema as z.ZodTuple;\n return {\n type: \"array\",\n prefixItems: tuple._def.items.map((item) => zodToJsonSchema(item)),\n minItems: tuple._def.items.length,\n maxItems: tuple._def.items.length,\n };\n }\n case ZodFirstPartyTypeKind.ZodUnion: {\n const union = schema as z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>;\n return {\n anyOf: union._def.options.map((option) => zodToJsonSchema(option)),\n };\n }\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion: {\n const union = schema as z.ZodDiscriminatedUnion<string, z.ZodObject<any>[]>;\n return {\n anyOf: Array.from(union._def.options.values()).map((option) => zodToJsonSchema(option)),\n };\n }\n case ZodFirstPartyTypeKind.ZodRecord:\n return {\n type: \"object\",\n additionalProperties: zodToJsonSchema((schema as z.ZodRecord<any>)._def.valueType),\n };\n case ZodFirstPartyTypeKind.ZodDefault: {\n const def = schema as z.ZodDefault<z.ZodTypeAny>;\n const inner = zodToJsonSchema(def._def.innerType);\n const defaultValue = def._def.defaultValue();\n if (typeof inner === \"object\" && !(\"anyOf\" in inner)) {\n inner.default = defaultValue;\n }\n return inner;\n }\n case ZodFirstPartyTypeKind.ZodLazy:\n return convert((schema as z.ZodLazy<any>)._def.getter());\n case ZodFirstPartyTypeKind.ZodEffects:\n return convert((schema as z.ZodEffects<any>)._def.schema);\n default:\n return { type: \"object\" };\n }\n}\n\nfunction unwrapSchema(schema: z.ZodTypeAny) {\n let current: z.ZodTypeAny = schema;\n let nullable = false;\n let optional = false;\n\n while (true) {\n switch (current._def.typeName) {\n case ZodFirstPartyTypeKind.ZodNullable:\n nullable = true;\n current = (current as z.ZodNullable<z.ZodTypeAny>)._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodOptional:\n optional = true;\n current = (current as z.ZodOptional<z.ZodTypeAny>)._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodEffects:\n current = (current as z.ZodEffects<any>)._def.schema;\n continue;\n default:\n return { schema: current, nullable, optional };\n }\n }\n}\n", "export interface GlobalWithDeno {\n Deno?: {\n env: {\n get(key: string): string | undefined;\n };\n };\n}\n\nexport interface GlobalWithProcess {\n process?: {\n env: Record<string, string | undefined>;\n version?: string;\n versions?: Record<string, string>;\n };\n}\n\nexport interface GlobalWithBun {\n Bun?: {\n version: string;\n };\n}\n\nexport function hasDenoRuntime(global: unknown): global is GlobalWithDeno {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"Deno\" in global &&\n typeof (global as GlobalWithDeno).Deno?.env?.get === \"function\"\n );\n}\n\nexport function hasNodeProcess(global: unknown): global is GlobalWithProcess {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"process\" in global &&\n typeof (global as GlobalWithProcess).process?.env === \"object\"\n );\n}\n\nexport function hasBunRuntime(global: unknown): global is GlobalWithBun {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"Bun\" in global &&\n typeof (global as GlobalWithBun).Bun !== \"undefined\"\n );\n}\n", "import type { GlobalWithDeno, GlobalWithProcess } from \"../runtime-guards.ts\";\nimport { hasDenoRuntime, hasNodeProcess } from \"../runtime-guards.ts\";\n\nexport function getEnvironmentVariable(name: string): string | undefined {\n try {\n if (typeof Deno !== \"undefined\" && hasDenoRuntime(globalThis)) {\n const value = (globalThis as GlobalWithDeno).Deno?.env.get(name);\n return value === \"\" ? undefined : value;\n }\n if (hasNodeProcess(globalThis)) {\n const value = (globalThis as GlobalWithProcess).process?.env[name];\n return value === \"\" ? undefined : value;\n }\n } catch {\n return undefined;\n }\n return undefined;\n}\n\nexport function isTestEnvironment(): boolean {\n return getEnvironmentVariable(\"NODE_ENV\") === \"test\";\n}\n\nexport function isProductionEnvironment(): boolean {\n return getEnvironmentVariable(\"NODE_ENV\") === \"production\";\n}\n\nexport function isDevelopmentEnvironment(): boolean {\n const env = getEnvironmentVariable(\"NODE_ENV\");\n return env === \"development\" || env === undefined;\n}\n", "import { getEnvironmentVariable } from \"./env.ts\";\n\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n}\n\nexport interface Logger {\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n time<T>(label: string, fn: () => Promise<T>): Promise<T>;\n}\n\nconst originalConsole = {\n debug: console.debug,\n log: console.log,\n warn: console.warn,\n error: console.error,\n};\n\nlet cachedLogLevel: LogLevel | undefined;\n\nfunction resolveLogLevel(force = false): LogLevel {\n if (force || cachedLogLevel === undefined) {\n cachedLogLevel = getDefaultLevel();\n }\n return cachedLogLevel;\n}\n\nclass ConsoleLogger implements Logger {\n constructor(\n private prefix: string,\n private level: LogLevel = resolveLogLevel(),\n ) {}\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.DEBUG) {\n console.debug(`[${this.prefix}] DEBUG: ${message}`, ...args);\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.INFO) {\n console.log(`[${this.prefix}] ${message}`, ...args);\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.WARN) {\n console.warn(`[${this.prefix}] WARN: ${message}`, ...args);\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.ERROR) {\n console.error(`[${this.prefix}] ERROR: ${message}`, ...args);\n }\n }\n\n async time<T>(label: string, fn: () => Promise<T>): Promise<T> {\n const start = performance.now();\n try {\n const result = await fn();\n const end = performance.now();\n this.debug(`${label} completed in ${(end - start).toFixed(2)}ms`);\n return result;\n } catch (error) {\n const end = performance.now();\n this.error(`${label} failed after ${(end - start).toFixed(2)}ms`, error);\n throw error;\n }\n }\n}\n\nfunction parseLogLevel(levelString: string | undefined): LogLevel | undefined {\n if (!levelString) return undefined;\n const upper = levelString.toUpperCase();\n switch (upper) {\n case \"DEBUG\":\n return LogLevel.DEBUG;\n case \"WARN\":\n return LogLevel.WARN;\n case \"ERROR\":\n return LogLevel.ERROR;\n case \"INFO\":\n return LogLevel.INFO;\n default:\n return undefined;\n }\n}\n\nconst getDefaultLevel = (): LogLevel => {\n const envLevel = getEnvironmentVariable(\"LOG_LEVEL\");\n const parsedLevel = parseLogLevel(envLevel);\n if (parsedLevel !== undefined) return parsedLevel;\n\n const debugFlag = getEnvironmentVariable(\"VERYFRONT_DEBUG\");\n if (debugFlag === \"1\" || debugFlag === \"true\") return LogLevel.DEBUG;\n\n return LogLevel.INFO;\n};\n\nconst trackedLoggers = new Set<ConsoleLogger>();\n\nfunction createLogger(prefix: string): ConsoleLogger {\n const logger = new ConsoleLogger(prefix);\n trackedLoggers.add(logger);\n return logger;\n}\n\nexport const cliLogger = createLogger(\"CLI\");\nexport const serverLogger = createLogger(\"SERVER\");\nexport const rendererLogger = createLogger(\"RENDERER\");\nexport const bundlerLogger = createLogger(\"BUNDLER\");\nexport const agentLogger = createLogger(\"AGENT\");\n\nexport const logger = createLogger(\"VERYFRONT\");\n\ntype LoggerResetOptions = {\n restoreConsole?: boolean;\n};\n\nexport function __loggerResetForTests(options: LoggerResetOptions = {}): void {\n const updatedLevel = resolveLogLevel(true);\n for (const instance of trackedLoggers) {\n instance.setLevel(updatedLevel);\n }\n\n if (options.restoreConsole) {\n console.debug = originalConsole.debug;\n console.log = originalConsole.log;\n console.warn = originalConsole.warn;\n console.error = originalConsole.error;\n }\n}\n", "export interface BuildContext {\n file?: string;\n line?: number;\n column?: number;\n moduleId?: string;\n phase?: \"parse\" | \"transform\" | \"bundle\" | \"optimize\";\n}\n\nexport interface APIContext {\n endpoint?: string;\n method?: string;\n statusCode?: number;\n headers?: Record<string, string>;\n}\n\nexport interface RenderContext {\n component?: string;\n route?: string;\n phase?: \"server\" | \"client\" | \"hydration\";\n props?: unknown;\n}\n\nexport interface ConfigContext {\n configFile?: string;\n field?: string;\n value?: unknown;\n expected?: string;\n}\n\nexport interface AgentContext {\n agentId?: string;\n intent?: string;\n timeout?: number;\n}\n\nexport interface FileContext {\n path?: string;\n operation?: \"read\" | \"write\" | \"delete\" | \"mkdir\";\n permissions?: string;\n}\n\nexport interface NetworkContext {\n url?: string;\n timeout?: number;\n retryCount?: number;\n}\n\nexport type VeryfrontError =\n | { type: \"build\"; message: string; context?: BuildContext }\n | { type: \"api\"; message: string; context?: APIContext }\n | { type: \"render\"; message: string; context?: RenderContext }\n | { type: \"config\"; message: string; context?: ConfigContext }\n | { type: \"agent\"; message: string; context?: AgentContext }\n | { type: \"file\"; message: string; context?: FileContext }\n | { type: \"network\"; message: string; context?: NetworkContext }\n | { type: \"permission\"; message: string; context?: FileContext }\n | { type: \"not_supported\"; message: string; feature?: string };\n\nexport function createError(error: VeryfrontError): VeryfrontError {\n return error;\n}\n\nexport function isBuildError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"build\" }> {\n return error.type === \"build\";\n}\n\nexport function isAPIError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"api\" }> {\n return error.type === \"api\";\n}\n\nexport function isRenderError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"render\" }> {\n return error.type === \"render\";\n}\n\nexport function isConfigError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"config\" }> {\n return error.type === \"config\";\n}\n\nexport function isAgentError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"agent\" }> {\n return error.type === \"agent\";\n}\n\nexport function isFileError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"file\" }> {\n return error.type === \"file\";\n}\n\nexport function isNetworkError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"network\" }> {\n return error.type === \"network\";\n}\n\nexport function toError(veryfrontError: VeryfrontError): Error {\n const error = new Error(veryfrontError.message);\n error.name = `VeryfrontError[${veryfrontError.type}]`;\n Object.defineProperty(error, \"context\", {\n value: veryfrontError,\n enumerable: false,\n configurable: true,\n });\n return error;\n}\n\nexport function fromError(error: unknown): VeryfrontError | null {\n if (error && typeof error === \"object\" && \"context\" in error) {\n // Safe access after 'in' check\n const context = (error as Record<string, unknown>).context;\n if (\n context &&\n typeof context === \"object\" &&\n \"type\" in context &&\n \"message\" in context\n ) {\n return context as VeryfrontError;\n }\n }\n return null;\n}\n\nexport function logError(\n error: VeryfrontError,\n logger?: { error: (msg: string, ...args: unknown[]) => void },\n): void {\n const log = logger || console;\n const context = \"context\" in error ? error.context || {} : {};\n log.error(`[${error.type}] ${error.message}`, context);\n}\n", "import type { Tool, ToolConfig, ToolDefinition, ToolExecutionContext } from \"../types/tool.ts\";\nimport type { JsonSchema } from \"../types/json-schema.ts\";\nimport { zodToJsonSchema } from \"./zod-json-schema.ts\";\nimport { agentLogger } from \"../../core/utils/logger/logger.ts\";\nimport { createError, toError } from \"../../core/errors/veryfront-error.ts\";\n\n/**\n * Create a tool\n *\n * @example\n * ```typescript\n * import { tool } from 'veryfront/ai';\n * import { z } from 'zod';\n\n *\n * export default tool({\n * description: 'Search the web',\n * inputSchema: z.object({\n * query: z.string(),\n * }),\n * execute: async ({ query }) => {\n * const results = await searchWeb(query);\n * return results;\n * },\n * });\n * ```\n */\nexport function tool<TInput = any, TOutput = any>(\n config: ToolConfig<TInput, TOutput>,\n): Tool<TInput, TOutput> {\n const id = config.id || generateToolId();\n\n // Check if we have a valid zod schema (has _def property)\n const hasValidZodSchema = config.inputSchema &&\n typeof config.inputSchema === \"object\" &&\n \"_def\" in config.inputSchema &&\n (config.inputSchema as { _def?: { typeName?: string } })._def?.typeName;\n\n // Pre-convert Zod schema to JSON Schema immediately\n // This happens BEFORE any bundling, in a clean environment\n let inputSchemaJson: JsonSchema | undefined;\n if (hasValidZodSchema) {\n try {\n inputSchemaJson = zodToJsonSchema(config.inputSchema);\n agentLogger.info(\n `[TOOL] Pre-converted schema for \"${id}\": ${\n Object.keys(inputSchemaJson.properties || {}).length\n } properties`,\n );\n } catch (error) {\n agentLogger.warn(`[TOOL] Failed to pre-convert schema for \"${id}\":`, error);\n // Continue without pre-converted schema - will fall back to runtime conversion\n }\n } else {\n // Try to introspect the schema from external zod instance\n const externalSchema = config.inputSchema as {\n _def?: {\n typeName?: string;\n shape?: (() => Record<string, unknown>) | Record<string, unknown>;\n };\n };\n\n if (externalSchema?._def?.shape) {\n try {\n const shape = typeof externalSchema._def.shape === \"function\"\n ? externalSchema._def.shape()\n : externalSchema._def.shape;\n\n // Build JSON Schema from shape inspection\n const properties: Record<string, JsonSchema> = {};\n for (const key of Object.keys(shape || {})) {\n // Default to string type for unknown schemas\n properties[key] = { type: \"string\" as const };\n }\n inputSchemaJson = {\n type: \"object\" as const,\n properties,\n required: Object.keys(properties),\n };\n agentLogger.info(\n `[TOOL] Introspected schema for \"${id}\" from external zod: ${\n Object.keys(properties).length\n } properties`,\n );\n } catch {\n inputSchemaJson = { type: \"object\", properties: {} };\n agentLogger.warn(\n `[TOOL] Schema for \"${id}\" could not be introspected. Using empty schema.`,\n );\n }\n } else {\n agentLogger.warn(\n `[TOOL] Schema for \"${id}\" is not a valid Zod schema (different zod instance?). ` +\n `Skipping pre-conversion. Input validation may be limited.`,\n );\n // Create a basic schema from inspection if possible\n inputSchemaJson = { type: \"object\", properties: {} };\n }\n }\n\n return {\n id,\n description: config.description,\n inputSchema: config.inputSchema,\n inputSchemaJson, // Store pre-converted schema\n execute: async (input: TInput, context?: ToolExecutionContext) => {\n // Validate input if zod schema is available\n if (hasValidZodSchema) {\n try {\n config.inputSchema.parse(input);\n } catch (error) {\n throw toError(createError({\n type: \"agent\",\n message: `Tool \"${id}\" input validation failed: ${\n error instanceof Error ? error.message : String(error)\n }`,\n }));\n }\n } else if (\n config.inputSchema &&\n typeof config.inputSchema === \"object\" &&\n \"parse\" in config.inputSchema &&\n typeof (config.inputSchema as { parse?: unknown }).parse === \"function\"\n ) {\n // Try to use parse method if available (external zod instance)\n try {\n (config.inputSchema as { parse: (input: unknown) => void }).parse(input);\n } catch (error) {\n throw toError(createError({\n type: \"agent\",\n message: `Tool \"${id}\" input validation failed: ${\n error instanceof Error ? error.message : String(error)\n }`,\n }));\n }\n }\n\n // Execute tool\n return await config.execute(input, context);\n },\n mcp: config.mcp,\n };\n}\n\n/**\n * Generate a unique tool ID\n */\nlet toolIdCounter = 0;\nfunction generateToolId(): string {\n return `tool_${Date.now()}_${toolIdCounter++}`;\n}\n\n/**\n * Tool registry for managing tools\n */\nclass ToolRegistryClass {\n private tools = new Map<string, Tool>();\n\n register(id: string, toolInstance: Tool): void {\n if (this.tools.has(id)) {\n // Debug level - overwriting is expected during hot reload and re-discovery\n agentLogger.debug(`Tool \"${id}\" is already registered. Overwriting.`);\n }\n\n this.tools.set(id, toolInstance);\n }\n\n /**\n * Get a tool by ID\n */\n get(id: string): Tool | undefined {\n return this.tools.get(id);\n }\n\n /**\n * Check if a tool exists\n */\n has(id: string): boolean {\n return this.tools.has(id);\n }\n\n /**\n * Get all tool IDs\n */\n getAllIds(): string[] {\n return Array.from(this.tools.keys());\n }\n\n /**\n * Get all tools\n */\n getAll(): Map<string, Tool> {\n return new Map(this.tools);\n }\n\n /**\n * Clear all tools (for testing)\n */\n clear(): void {\n this.tools.clear();\n }\n\n getToolsForProvider(): ToolDefinition[] {\n return Array.from(this.tools.values()).map(toolToProviderDefinition);\n }\n}\n\n// Singleton instance using globalThis to share across module contexts\n// This is necessary for esbuild-bundled API routes to access the same registry\nconst TOOL_REGISTRY_KEY = \"__veryfront_tool_registry__\";\n// deno-lint-ignore no-explicit-any\nconst _globalTool = globalThis as any;\nexport const toolRegistry: ToolRegistryClass = _globalTool[TOOL_REGISTRY_KEY] ||=\n new ToolRegistryClass();\n\nexport function toolToProviderDefinition(tool: Tool): ToolDefinition {\n // Use pre-converted JSON Schema if available (preferred)\n // Fall back to runtime conversion if needed\n const jsonSchema = tool.inputSchemaJson || zodToJsonSchema(tool.inputSchema);\n\n agentLogger.info(\n `[TOOL] Using ${\n tool.inputSchemaJson ? \"pre-converted\" : \"runtime-converted\"\n } schema for \"${tool.id}\"`,\n );\n\n return {\n name: tool.id,\n description: tool.description,\n parameters: jsonSchema,\n };\n}\n\n/**\n * Execute a tool by ID\n */\nexport async function executeTool(\n toolId: string,\n input: unknown,\n context?: ToolExecutionContext,\n): Promise<unknown> {\n const tool = toolRegistry.get(toolId);\n\n if (!tool) {\n throw toError(createError({\n type: \"agent\",\n message: `Tool \"${toolId}\" not found`,\n }));\n }\n\n try {\n const result = await tool.execute(input, context);\n return result;\n } catch (error) {\n throw toError(createError({\n type: \"agent\",\n message: `Tool \"${toolId}\" execution failed: ${\n error instanceof Error ? error.message : String(error)\n }`,\n }));\n }\n}\n\nexport { zodToJsonSchema } from \"./zod-json-schema.ts\";\n", "/**\n * MCP Resource factory and utilities\n */\n\nimport type { Resource, ResourceConfig } from \"../types/mcp.ts\";\nimport { agentLogger } from \"../../core/utils/logger/logger.ts\";\nimport { createError, toError } from \"../../core/errors/veryfront-error.ts\";\n\n/**\n * Create an MCP resource\n *\n * @example\n * ```typescript\n * import { resource } from 'veryfront/ai';\n * import { z } from 'zod';\n\n *\n * export default resource({\n * description: 'Get user profile',\n * paramsSchema: z.object({\n * userId: z.string(),\n * }),\n * load: async ({ userId }) => {\n * return await db.users.findUnique({ where: { id: userId } });\n * },\n * });\n * ```\n */\nexport function resource<TParams = any, TData = any>(\n config: ResourceConfig<TParams, TData>,\n): Resource<TParams, TData> {\n // Generate pattern if not provided\n const pattern = config.pattern || generateResourcePattern();\n\n // Generate ID from pattern\n const id = patternToId(pattern);\n\n return {\n id,\n pattern,\n description: config.description,\n paramsSchema: config.paramsSchema,\n load: async (params: TParams) => {\n // Validate params\n try {\n config.paramsSchema.parse(params);\n } catch (error) {\n throw toError(createError({\n type: \"agent\",\n message: `Resource \"${id}\" params validation failed: ${\n error instanceof Error ? error.message : String(error)\n }`,\n }));\n }\n\n return await config.load(params);\n },\n subscribe: config.subscribe,\n mcp: config.mcp,\n };\n}\n\n/**\n * Generate resource pattern fallback\n * Note: In practice, resources should explicitly define their pattern.\n * Auto-discovery is handled by the discovery.ts module which scans\n * the filesystem and extracts patterns from resource definitions.\n */\nfunction generateResourcePattern(): string {\n return `/resource_${Date.now()}`;\n}\n\n/**\n * Convert path pattern to ID\n * Example: \"/users/:userId/profile\" -> \"users_userId_profile\"\n */\nfunction patternToId(pattern: string): string {\n return pattern\n .replace(/^\\//, \"\")\n .replace(/\\//g, \"_\")\n .replace(/:/g, \"\");\n}\n\n/**\n * Resource registry\n */\nclass ResourceRegistryClass {\n private resources = new Map<string, Resource>();\n\n /**\n * Register a resource\n */\n register(id: string, resourceInstance: Resource): void {\n if (this.resources.has(id)) {\n // Debug level - overwriting is expected during hot reload and re-discovery\n agentLogger.debug(`Resource \"${id}\" is already registered. Overwriting.`);\n }\n\n this.resources.set(id, resourceInstance);\n }\n\n /**\n * Get a resource by ID\n */\n get(id: string): Resource | undefined {\n return this.resources.get(id);\n }\n\n /**\n * Get resource by pattern matching\n */\n findByPattern(uri: string): Resource | undefined {\n for (const resource of this.resources.values()) {\n if (this.matchesPattern(uri, resource.pattern)) {\n return resource;\n }\n }\n return undefined;\n }\n\n /**\n * Check if URI matches pattern\n * Uses regex-based pattern matching with named capture groups.\n * Supports Express-style patterns like \"/users/:userId/profile\"\n */\n private matchesPattern(uri: string, pattern: string): boolean {\n const patternRegex = new RegExp(\n \"^\" + pattern.replace(/:(\\w+)/g, \"(?<$1>[^/]+)\") + \"$\",\n );\n return patternRegex.test(uri);\n }\n\n /**\n * Extract params from URI using pattern\n */\n extractParams(uri: string, pattern: string): Record<string, string> {\n const patternRegex = new RegExp(\n \"^\" + pattern.replace(/:(\\w+)/g, \"(?<$1>[^/]+)\") + \"$\",\n );\n const match = uri.match(patternRegex);\n\n return match?.groups || {};\n }\n\n /**\n * Get all resources\n */\n getAll(): Map<string, Resource> {\n return new Map(this.resources);\n }\n\n /**\n * Clear all resources\n */\n clear(): void {\n this.resources.clear();\n }\n}\n\n// Singleton instance using globalThis to share across module contexts\n// This is necessary for esbuild-bundled API routes to access the same registry\nconst RESOURCE_REGISTRY_KEY = \"__veryfront_resource_registry__\";\n// deno-lint-ignore no-explicit-any\nconst _globalResource = globalThis as any;\nexport const resourceRegistry: ResourceRegistryClass = _globalResource[RESOURCE_REGISTRY_KEY] ||=\n new ResourceRegistryClass();\n", "/**\n * MCP Prompt factory and utilities\n */\n\nimport type { Prompt, PromptConfig } from \"../types/mcp.ts\";\nimport { agentLogger } from \"../../core/utils/logger/logger.ts\";\nimport { createError, toError } from \"../../core/errors/veryfront-error.ts\";\n\n/**\n * Create an MCP prompt template\n *\n * @example\n * ```typescript\n * import { prompt } from 'veryfront/ai';\n\n *\n * export default prompt({\n * description: 'Customer support prompt',\n * content: 'You are a helpful customer support agent...',\n * });\n * ```\n */\nexport function prompt(config: PromptConfig): Prompt {\n const id = config.id || generatePromptId();\n\n return {\n id,\n description: config.description,\n\n async getContent(\n variables?: Record<string, unknown>,\n ): Promise<string> {\n // If static content\n if (config.content) {\n return interpolateVariables(config.content, variables || {});\n }\n\n // If dynamic generator\n if (config.generate) {\n return await config.generate(variables || {});\n }\n\n throw toError(createError({\n type: \"agent\",\n message: `Prompt \"${id}\" has no content or generator`,\n }));\n },\n };\n}\n\n/**\n * Generate a unique prompt ID\n */\nlet promptIdCounter = 0;\nfunction generatePromptId(): string {\n return `prompt_${Date.now()}_${promptIdCounter++}`;\n}\n\n/**\n * Interpolate variables in prompt template\n * Replaces {variableName} with actual values\n */\nfunction interpolateVariables(\n template: string,\n variables: Record<string, unknown>,\n): string {\n return template.replace(/\\{(\\w+)\\}/g, (match, key) => {\n const value = variables[key];\n return value !== undefined ? String(value) : match;\n });\n}\n\n/**\n * Prompt registry\n */\nclass PromptRegistryClass {\n private prompts = new Map<string, Prompt>();\n\n /**\n * Register a prompt\n */\n register(id: string, promptInstance: Prompt): void {\n if (this.prompts.has(id)) {\n // Debug level - overwriting is expected during hot reload and re-discovery\n agentLogger.debug(`Prompt \"${id}\" is already registered. Overwriting.`);\n }\n\n this.prompts.set(id, promptInstance);\n }\n\n /**\n * Get a prompt by ID\n */\n get(id: string): Prompt | undefined {\n return this.prompts.get(id);\n }\n\n /**\n * Get prompt content by ID\n */\n async getContent(\n id: string,\n variables?: Record<string, unknown>,\n ): Promise<string> {\n const promptInstance = this.get(id);\n\n if (!promptInstance) {\n throw toError(createError({\n type: \"agent\",\n message: `Prompt \"${id}\" not found`,\n }));\n }\n\n return await promptInstance.getContent(variables);\n }\n\n /**\n * Get all prompts\n */\n getAll(): Map<string, Prompt> {\n return new Map(this.prompts);\n }\n\n /**\n * Clear all prompts\n */\n clear(): void {\n this.prompts.clear();\n }\n}\n\n// Singleton instance using globalThis to share across module contexts\n// This is necessary for esbuild-bundled API routes to access the same registry\nconst PROMPT_REGISTRY_KEY = \"__veryfront_prompt_registry__\";\n// deno-lint-ignore no-explicit-any\nconst _globalPrompt = globalThis as any;\nexport const promptRegistry: PromptRegistryClass = _globalPrompt[PROMPT_REGISTRY_KEY] ||=\n new PromptRegistryClass();\n", "/**\n * MCP Registry - Central registry for all MCP resources\n */\n\nimport type { MCPRegistry } from \"../types/mcp.ts\";\nimport type { Tool } from \"../types/tool.ts\";\nimport type { Prompt, Resource } from \"../types/mcp.ts\";\nimport { toolRegistry } from \"../utils/tool.ts\";\nimport { resourceRegistry } from \"./resource.ts\";\nimport { promptRegistry } from \"./prompt.ts\";\n\n/**\n * Get the global MCP registry\n */\nexport function getMCPRegistry(): MCPRegistry {\n return {\n tools: toolRegistry.getAll(),\n resources: resourceRegistry.getAll(),\n prompts: promptRegistry.getAll(),\n };\n}\n\n/**\n * Register a tool in the MCP registry\n */\nexport function registerTool(id: string, tool: Tool): void {\n toolRegistry.register(id, tool);\n}\n\n/**\n * Register a resource in the MCP registry\n */\nexport function registerResource(id: string, resource: Resource): void {\n resourceRegistry.register(id, resource);\n}\n\n/**\n * Register a prompt in the MCP registry\n */\nexport function registerPrompt(id: string, promptInstance: Prompt): void {\n promptRegistry.register(id, promptInstance);\n}\n\n/**\n * Get MCP registry stats\n */\nexport function getMCPStats(): {\n tools: number;\n resources: number;\n prompts: number;\n total: number;\n} {\n const registry = getMCPRegistry();\n\n return {\n tools: registry.tools.size,\n resources: registry.resources.size,\n prompts: registry.prompts.size,\n total: registry.tools.size + registry.resources.size + registry.prompts.size,\n };\n}\n\n/**\n * Clear all MCP registries (for testing)\n */\nexport function clearMCPRegistry(): void {\n toolRegistry.clear();\n resourceRegistry.clear();\n promptRegistry.clear();\n}\n", "/**\n * Agent & Tool Inspector\n *\n * Debugging utilities for inspecting agent execution and tool calls.\n */\n\nimport type { Agent, Message } from \"../../types/agent.ts\";\nimport { getMCPRegistry, getMCPStats } from \"../../mcp/registry.ts\";\nimport { agentLogger } from \"@veryfront/utils/logger/logger.ts\";\n\nexport interface InspectionReport {\n /** Agent information */\n agent: {\n id: string;\n model: string;\n maxSteps: number;\n memoryType: string;\n };\n\n /** Execution details */\n execution: {\n input: string | Message[];\n output: string;\n status: string;\n steps: number;\n executionTime: number;\n };\n\n /** Tool usage */\n tools: {\n called: Array<{\n name: string;\n args: Record<string, unknown>;\n result: unknown;\n executionTime?: number;\n status: string;\n }>;\n available: string[];\n };\n\n /** Memory usage */\n memory: {\n messagesCount: number;\n estimatedTokens: number;\n };\n\n /** Token usage */\n usage?: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n}\n\n/**\n * Inspect an agent execution\n *\n * @example\n * ```typescript\n * import { inspectAgent } from 'veryfront/ai/dev';\n *\n * const report = await inspectAgent(myAgent, 'Test input');\n * console.log(report);\n * ```\n */\nexport async function inspectAgent(\n agent: Agent,\n input: string | Message[],\n): Promise<InspectionReport> {\n const startTime = Date.now();\n\n // Get memory stats before execution\n const _memoryStatsBefore = await agent.getMemoryStats();\n\n // Execute agent\n const response = await agent.generate({ input });\n\n const executionTime = Date.now() - startTime;\n\n // Get memory stats after execution\n const memoryStatsAfter = await agent.getMemoryStats();\n\n // Get available tools\n const availableTools = agent.config.tools ? Object.keys(agent.config.tools) : [];\n\n return {\n agent: {\n id: agent.id,\n model: agent.config.model,\n maxSteps: agent.config.maxSteps || 20,\n memoryType: agent.config.memory?.type || \"conversation\",\n },\n execution: {\n input,\n output: response.text,\n status: response.status,\n steps: response.toolCalls.length + 1, // Tool calls + final response\n executionTime,\n },\n tools: {\n called: response.toolCalls.map((tc) => ({\n name: tc.name,\n args: tc.args,\n result: tc.result,\n executionTime: tc.executionTime,\n status: tc.status,\n })),\n available: availableTools,\n },\n memory: {\n messagesCount: memoryStatsAfter.totalMessages,\n estimatedTokens: memoryStatsAfter.estimatedTokens,\n },\n usage: response.usage,\n };\n}\n\n/**\n * Print inspection report\n */\nexport function printInspectionReport(report: InspectionReport): void {\n agentLogger.info(\"\\n=== Agent Inspection Report ===\\n\");\n\n agentLogger.info(\"Agent:\");\n agentLogger.info(` ID: ${report.agent.id}`);\n agentLogger.info(` Model: ${report.agent.model}`);\n agentLogger.info(` Max Steps: ${report.agent.maxSteps}`);\n agentLogger.info(` Memory: ${report.agent.memoryType}\\n`);\n\n agentLogger.info(\"Execution:\");\n agentLogger.info(\n ` Input: ${\n typeof report.execution.input === \"string\"\n ? report.execution.input\n : `${(report.execution.input as Message[]).length} messages`\n }`,\n );\n agentLogger.info(` Output: ${report.execution.output.substring(0, 100)}...`);\n agentLogger.info(` Status: ${report.execution.status}`);\n agentLogger.info(` Steps: ${report.execution.steps}`);\n agentLogger.info(` Time: ${report.execution.executionTime}ms\\n`);\n\n agentLogger.info(\"Tools:\");\n agentLogger.info(\n ` Available: ${report.tools.available.length} (${report.tools.available.join(\", \")})`,\n );\n agentLogger.info(` Called: ${report.tools.called.length}`);\n\n if (report.tools.called.length > 0) {\n report.tools.called.forEach((tool, i) => {\n agentLogger.info(` ${i + 1}. ${tool.name}(${JSON.stringify(tool.args)})`);\n agentLogger.info(` Status: ${tool.status}`);\n agentLogger.info(` Time: ${tool.executionTime}ms`);\n agentLogger.info(` Result: ${JSON.stringify(tool.result).substring(0, 100)}...`);\n });\n }\n agentLogger.info(\"\");\n\n agentLogger.info(\"Memory:\");\n agentLogger.info(` Messages: ${report.memory.messagesCount}`);\n agentLogger.info(` Estimated Tokens: ${report.memory.estimatedTokens}\\n`);\n\n if (report.usage) {\n agentLogger.info(\"Token Usage:\");\n agentLogger.info(` Prompt: ${report.usage.promptTokens}`);\n agentLogger.info(` Completion: ${report.usage.completionTokens}`);\n agentLogger.info(` Total: ${report.usage.totalTokens}\\n`);\n }\n}\n\n/**\n * Get MCP registry overview\n */\nexport function getRegistryOverview(): {\n tools: Array<{ id: string; description: string }>;\n resources: Array<{ id: string; pattern: string; description: string }>;\n prompts: Array<{ id: string; description: string }>;\n stats: ReturnType<typeof getMCPStats>;\n} {\n const registry = getMCPRegistry();\n const stats = getMCPStats();\n\n return {\n tools: Array.from(registry.tools.values()).map((t) => ({\n id: t.id,\n description: t.description,\n })),\n resources: Array.from(registry.resources.values()).map((r) => ({\n id: r.id,\n pattern: r.pattern,\n description: r.description,\n })),\n prompts: Array.from(registry.prompts.values()).map((p) => ({\n id: p.id,\n description: p.description,\n })),\n stats,\n };\n}\n\n/**\n * Print registry overview\n */\nexport function printRegistryOverview(): void {\n const overview = getRegistryOverview();\n\n agentLogger.info(\"\\n=== MCP Registry Overview ===\\n\");\n agentLogger.info(`Total: ${overview.stats.total} items\\n`);\n\n agentLogger.info(`Tools (${overview.stats.tools}):`);\n overview.tools.forEach((t) => {\n agentLogger.info(` \u2022 ${t.id}: ${t.description}`);\n });\n agentLogger.info(\"\");\n\n agentLogger.info(`Resources (${overview.stats.resources}):`);\n overview.resources.forEach((r) => {\n agentLogger.info(` \u2022 ${r.id} (${r.pattern}): ${r.description}`);\n });\n agentLogger.info(\"\");\n\n agentLogger.info(`Prompts (${overview.stats.prompts}):`);\n overview.prompts.forEach((p) => {\n agentLogger.info(` \u2022 ${p.id}: ${p.description}`);\n });\n agentLogger.info(\"\");\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["logger"]
|
|
7
7
|
}
|