@miiflow/assistant-ui 0.5.1 → 0.5.2

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.
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
3
  import { ReactNode } from 'react';
4
- import { C as ChatMessage, P as ParticipantRole } from '../message-BnGtSz1P.js';
5
- import { d as VisualizationActionEvent } from '../streaming-DrnCgnnh.js';
4
+ import { C as ChatMessage, P as ParticipantRole } from '../message-D3D59U_Q.js';
5
+ import { d as VisualizationActionEvent } from '../streaming-Q8hp5ev4.js';
6
6
 
7
7
  interface ChatContextValue {
8
8
  /** List of messages in the conversation */
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { RefObject, KeyboardEvent } from 'react';
3
- import { b as StreamingOptions, a as StreamChunk } from '../streaming-DrnCgnnh.js';
3
+ import { b as StreamingOptions, a as StreamChunk } from '../streaming-Q8hp5ev4.js';
4
4
  import { B as BrandingData } from '../branding-SzYU4ncD.js';
5
5
 
6
6
  interface UseAutoScrollOptions {
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export { A as Attachment, C as ChatMessage, M as MessageData, a as MessageError, b as Participant, P as ParticipantRole, R as ReasoningChunk, S as SourceReference, c as SourceTypeConfig, d as SuggestedAction, e as SuggestedActionType } from './message-BnGtSz1P.js';
2
- export { a as StreamChunk, b as StreamingOptions, c as StreamingState } from './streaming-DrnCgnnh.js';
1
+ export { A as Attachment, C as ChatMessage, a as MemoryFeedbackType, M as MessageData, b as MessageError, c as Participant, P as ParticipantRole, R as ReasoningChunk, S as SourceReference, d as SourceTypeConfig, e as SuggestedAction, f as SuggestedActionType, i as isMemoryCitation } from './message-D3D59U_Q.js';
2
+ export { a as StreamChunk, b as StreamingOptions, c as StreamingState } from './streaming-Q8hp5ev4.js';
3
3
  export { B as BrandingData } from './branding-SzYU4ncD.js';
4
4
  export { ChatContext, ChatContextValue, ChatProvider, ChatProviderProps, useChatContext } from './context/index.js';
5
5
  export { useAttachments, useAutoScroll, useBrandingCSSVars, useMessageComposer, useScrollLock, useStreaming } from './hooks/index.js';
6
- export { A as AvatarPrimitive, C as ComposerContext, a as ComposerInput, b as ComposerSubmit, M as MessageComposerPrimitive, c as MessageContentPrimitive, d as MessageContext, e as MessagePrimitive, f as MessageTimestampPrimitive, u as useComposer, g as useMessage } from './avatar-B6YLvJt3.js';
6
+ export { A as AvatarPrimitive, C as ComposerContext, a as ComposerInput, b as ComposerSubmit, M as MessageComposerPrimitive, c as MessageContentPrimitive, d as MessageContext, e as MessagePrimitive, f as MessageTimestampPrimitive, u as useComposer, g as useMessage } from './avatar-CAmTN1L7.js';
7
7
  export { ActionButton, MessageList as MessageListPrimitive, StreamingText as StreamingTextPrimitive, SuggestedActionsContext, SuggestedActions as SuggestedActionsPrimitive, TypingIndicator as TypingIndicatorPrimitive, useSuggestedActions } from './primitives/index.js';
8
- export { A as AttachmentPreview, a as Avatar, C as ChatContainer, b as ChatLayout, M as MarkdownContent, c as Message, d as MessageActionBar, e as MessageComposer, f as MessageList, S as ScrollToBottomButton, g as StreamingText, h as SuggestedActions, T as ToolStatusIndicator, i as TypingIndicator, W as WelcomeScreen } from './WelcomeScreen-88hzx0rD.js';
8
+ export { A as AttachmentPreview, a as Avatar, C as ChatContainer, b as ChatLayout, M as MarkdownContent, c as Message, d as MessageActionBar, e as MessageComposer, f as MessageList, S as ScrollToBottomButton, g as StreamingText, h as SuggestedActions, T as ToolStatusIndicator, i as TypingIndicator, W as WelcomeScreen } from './WelcomeScreen-D32Tsu6G.js';
9
9
  import { ClassValue } from 'clsx';
10
10
  import 'react/jsx-runtime';
11
11
  import 'react';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{b as AttachmentPreview,c as Avatar,d as ChatContainer,aa as ChatLayout,f as MarkdownContent,U as Message,k as MessageActionBar,V as MessageComposer,X as MessageList,W as ScrollToBottomButton,B as StreamingText,C as SuggestedActions,$ as ToolStatusIndicator,Z as TypingIndicator,ba as WelcomeScreen,a as cn,T as parseContentWithInlineMarkers}from'./chunk-RZNLGXIW.js';export{q as ActionButton,l as AvatarPrimitive,g as ComposerContext,j as ComposerInput,k as ComposerSubmit,i as MessageComposerPrimitive,d as MessageContentPrimitive,a as MessageContext,f as MessageListPrimitive,c as MessagePrimitive,e as MessageTimestampPrimitive,m as StreamingTextPrimitive,n as SuggestedActionsContext,p as SuggestedActionsPrimitive,r as TypingIndicatorPrimitive,h as useComposer,b as useMessage,o as useSuggestedActions}from'./chunk-6RN7SUWT.js';export{b as useAttachments,a as useStreaming}from'./chunk-WG77GQR3.js';export{a as useScrollLock}from'./chunk-D2PFIJNZ.js';export{a as useAutoScroll,b as useMessageComposer}from'./chunk-4WWJTYYA.js';export{a as ChatContext,b as ChatProvider,c as useChatContext}from'./chunk-OCKHJ4WO.js';export{a as getContrastTextColor,b as useBrandingCSSVars}from'./chunk-NSTK5EUQ.js';var i={hour:"numeric",minute:"2-digit",hour12:true},m={month:"short",day:"numeric"},re={...m,year:"numeric",...i};function p(t){let e=typeof t=="string"?new Date(t):t,r=new Date;return e.getDate()===r.getDate()&&e.getMonth()===r.getMonth()&&e.getFullYear()===r.getFullYear()?e.toLocaleTimeString("en-US",i):e.getFullYear()===r.getFullYear()?`${e.toLocaleDateString("en-US",m)}, ${e.toLocaleTimeString("en-US",i)}`:e.toLocaleDateString("en-US",re)}function ae(t){let e=typeof t=="string"?new Date(t):t,g=new Date().getTime()-e.getTime(),s=Math.floor(g/1e3),a=Math.floor(s/60),o=Math.floor(a/60),n=Math.floor(o/24);return s<60?"just now":a<60?`${a} minute${a===1?"":"s"} ago`:o<24?`${o} hour${o===1?"":"s"} ago`:n<7?`${n} day${n===1?"":"s"} ago`:p(e)}var oe={spacing:{messageBetween:"1rem",messagePx:"0.875rem",messagePy:"0.625rem",container:"1rem",composerPadding:"1rem"},typography:{message:{fontSize:"1rem",lineHeight:1.5,letterSpacing:"0px"},caption:{fontSize:"0.875rem",lineHeight:1.4},small:{fontSize:"0.8125rem",lineHeight:1.3}},borderRadius:{message:"0.5rem",input:"1rem",panel:"0.5rem",button:"0.5rem",chip:"0.25rem"},colors:{primary:"var(--chat-primary, #106997)",secondary:"var(--chat-secondary, #56C18A)",error:"var(--chat-error, #B1001B)",warning:"var(--chat-warning, #DD9652)",messageBg:"var(--chat-message-bg, rgba(0, 0, 0, 0.03))",userMessageBg:"var(--chat-user-message-bg, var(--chat-primary, #106997))",userMessageText:"var(--chat-user-message-text, #ffffff)",panelBg:"var(--chat-panel-bg, rgba(0, 0, 0, 0.02))",panelBorder:"var(--chat-panel-border, rgba(0, 0, 0, 0.06))",border:"var(--chat-border, rgba(0, 0, 0, 0.06))",borderHover:"var(--chat-border-hover, rgba(0, 0, 0, 0.12))",text:"var(--chat-text, #1D2033)",subtle:"var(--chat-text-subtle, rgba(0, 0, 0, 0.5))",placeholder:"var(--chat-placeholder, rgba(0, 0, 0, 0.4))",status:{pending:{main:"rgba(0, 0, 0, 0.3)",bg:"rgba(0, 0, 0, 0.05)"},running:{main:"rgb(99, 102, 241)",bg:"rgba(99, 102, 241, 0.08)"},completed:{main:"rgb(16, 185, 129)",bg:"rgba(16, 185, 129, 0.08)"},failed:{main:"rgb(239, 68, 68)",bg:"rgba(239, 68, 68, 0.08)"}}},shadows:{subtle:"0 1px 2px rgba(0, 0, 0, 0.04)",input:"0 2px 8px rgba(0, 0, 0, 0.08)",inputFocus:"0 4px 16px rgba(0, 0, 0, 0.12)",button:"0 1px 3px rgba(0, 0, 0, 0.08)",buttonHover:"0 2px 6px rgba(0, 0, 0, 0.12)",primary:"0 2px 6px rgba(16, 105, 151, 0.3)",primaryHover:"0 4px 12px rgba(16, 105, 151, 0.4)"},animations:{messageEntrance:{initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.3,ease:[.4,0,.2,1]}},fadeIn:{initial:{opacity:0},animate:{opacity:1},transition:{duration:.2}}}};export{oe as chatTokens,p as formatMessageTime,ae as formatRelativeTime};//# sourceMappingURL=index.js.map
1
+ export{c as AttachmentPreview,d as Avatar,e as ChatContainer,ba as ChatLayout,g as MarkdownContent,V as Message,l as MessageActionBar,W as MessageComposer,Y as MessageList,X as ScrollToBottomButton,C as StreamingText,D as SuggestedActions,aa as ToolStatusIndicator,_ as TypingIndicator,ca as WelcomeScreen,b as cn,a as isMemoryCitation,U as parseContentWithInlineMarkers}from'./chunk-VDFIXLNO.js';export{q as ActionButton,l as AvatarPrimitive,g as ComposerContext,j as ComposerInput,k as ComposerSubmit,i as MessageComposerPrimitive,d as MessageContentPrimitive,a as MessageContext,f as MessageListPrimitive,c as MessagePrimitive,e as MessageTimestampPrimitive,m as StreamingTextPrimitive,n as SuggestedActionsContext,p as SuggestedActionsPrimitive,r as TypingIndicatorPrimitive,h as useComposer,b as useMessage,o as useSuggestedActions}from'./chunk-6RN7SUWT.js';export{b as useAttachments,a as useStreaming}from'./chunk-WG77GQR3.js';export{a as useScrollLock}from'./chunk-D2PFIJNZ.js';export{a as useAutoScroll,b as useMessageComposer}from'./chunk-4WWJTYYA.js';export{a as ChatContext,b as ChatProvider,c as useChatContext}from'./chunk-OCKHJ4WO.js';export{a as getContrastTextColor,b as useBrandingCSSVars}from'./chunk-NSTK5EUQ.js';var i={hour:"numeric",minute:"2-digit",hour12:true},m={month:"short",day:"numeric"},ae={...m,year:"numeric",...i};function p(t){let e=typeof t=="string"?new Date(t):t,r=new Date;return e.getDate()===r.getDate()&&e.getMonth()===r.getMonth()&&e.getFullYear()===r.getFullYear()?e.toLocaleTimeString("en-US",i):e.getFullYear()===r.getFullYear()?`${e.toLocaleDateString("en-US",m)}, ${e.toLocaleTimeString("en-US",i)}`:e.toLocaleDateString("en-US",ae)}function oe(t){let e=typeof t=="string"?new Date(t):t,g=new Date().getTime()-e.getTime(),s=Math.floor(g/1e3),a=Math.floor(s/60),o=Math.floor(a/60),n=Math.floor(o/24);return s<60?"just now":a<60?`${a} minute${a===1?"":"s"} ago`:o<24?`${o} hour${o===1?"":"s"} ago`:n<7?`${n} day${n===1?"":"s"} ago`:p(e)}var se={spacing:{messageBetween:"1rem",messagePx:"0.875rem",messagePy:"0.625rem",container:"1rem",composerPadding:"1rem"},typography:{message:{fontSize:"1rem",lineHeight:1.5,letterSpacing:"0px"},caption:{fontSize:"0.875rem",lineHeight:1.4},small:{fontSize:"0.8125rem",lineHeight:1.3}},borderRadius:{message:"0.5rem",input:"1rem",panel:"0.5rem",button:"0.5rem",chip:"0.25rem"},colors:{primary:"var(--chat-primary, #106997)",secondary:"var(--chat-secondary, #56C18A)",error:"var(--chat-error, #B1001B)",warning:"var(--chat-warning, #DD9652)",messageBg:"var(--chat-message-bg, rgba(0, 0, 0, 0.03))",userMessageBg:"var(--chat-user-message-bg, var(--chat-primary, #106997))",userMessageText:"var(--chat-user-message-text, #ffffff)",panelBg:"var(--chat-panel-bg, rgba(0, 0, 0, 0.02))",panelBorder:"var(--chat-panel-border, rgba(0, 0, 0, 0.06))",border:"var(--chat-border, rgba(0, 0, 0, 0.06))",borderHover:"var(--chat-border-hover, rgba(0, 0, 0, 0.12))",text:"var(--chat-text, #1D2033)",subtle:"var(--chat-text-subtle, rgba(0, 0, 0, 0.5))",placeholder:"var(--chat-placeholder, rgba(0, 0, 0, 0.4))",status:{pending:{main:"rgba(0, 0, 0, 0.3)",bg:"rgba(0, 0, 0, 0.05)"},running:{main:"rgb(99, 102, 241)",bg:"rgba(99, 102, 241, 0.08)"},completed:{main:"rgb(16, 185, 129)",bg:"rgba(16, 185, 129, 0.08)"},failed:{main:"rgb(239, 68, 68)",bg:"rgba(239, 68, 68, 0.08)"}}},shadows:{subtle:"0 1px 2px rgba(0, 0, 0, 0.04)",input:"0 2px 8px rgba(0, 0, 0, 0.08)",inputFocus:"0 4px 16px rgba(0, 0, 0, 0.12)",button:"0 1px 3px rgba(0, 0, 0, 0.08)",buttonHover:"0 2px 6px rgba(0, 0, 0, 0.12)",primary:"0 2px 6px rgba(16, 105, 151, 0.3)",primaryHover:"0 4px 12px rgba(16, 105, 151, 0.4)"},animations:{messageEntrance:{initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{duration:.3,ease:[.4,0,.2,1]}},fadeIn:{initial:{opacity:0},animate:{opacity:1},transition:{duration:.2}}}};export{se as chatTokens,p as formatMessageTime,oe as formatRelativeTime};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/format-date.ts","../src/styles/tokens.ts"],"names":["TIME_FORMAT","DATE_FORMAT","FULL_FORMAT","formatMessageTime","date","d","now","formatRelativeTime","diffMs","diffSeconds","diffMinutes","diffHours","diffDays","chatTokens"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Format a date for display in chat messages.\n */\n\nconst TIME_FORMAT: Intl.DateTimeFormatOptions = {\n hour: \"numeric\",\n minute: \"2-digit\",\n hour12: true,\n};\n\nconst DATE_FORMAT: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n};\n\nconst FULL_FORMAT: Intl.DateTimeFormatOptions = {\n ...DATE_FORMAT,\n year: \"numeric\",\n ...TIME_FORMAT,\n};\n\n/**\n * Format a timestamp for display.\n * - Today: \"2:30 PM\"\n * - This year: \"Dec 15, 2:30 PM\"\n * - Other years: \"Dec 15, 2024, 2:30 PM\"\n */\nexport function formatMessageTime(date: Date | string): string {\n const d = typeof date === \"string\" ? new Date(date) : date;\n const now = new Date();\n\n const isToday =\n d.getDate() === now.getDate() &&\n d.getMonth() === now.getMonth() &&\n d.getFullYear() === now.getFullYear();\n\n if (isToday) {\n return d.toLocaleTimeString(\"en-US\", TIME_FORMAT);\n }\n\n const isThisYear = d.getFullYear() === now.getFullYear();\n\n if (isThisYear) {\n return `${d.toLocaleDateString(\"en-US\", DATE_FORMAT)}, ${d.toLocaleTimeString(\"en-US\", TIME_FORMAT)}`;\n }\n\n return d.toLocaleDateString(\"en-US\", FULL_FORMAT);\n}\n\n/**\n * Format a relative time (e.g., \"2 minutes ago\").\n */\nexport function formatRelativeTime(date: Date | string): string {\n const d = typeof date === \"string\" ? new Date(date) : date;\n const now = new Date();\n const diffMs = now.getTime() - d.getTime();\n const diffSeconds = Math.floor(diffMs / 1000);\n const diffMinutes = Math.floor(diffSeconds / 60);\n const diffHours = Math.floor(diffMinutes / 60);\n const diffDays = Math.floor(diffHours / 24);\n\n if (diffSeconds < 60) {\n return \"just now\";\n }\n\n if (diffMinutes < 60) {\n return `${diffMinutes} minute${diffMinutes === 1 ? \"\" : \"s\"} ago`;\n }\n\n if (diffHours < 24) {\n return `${diffHours} hour${diffHours === 1 ? \"\" : \"s\"} ago`;\n }\n\n if (diffDays < 7) {\n return `${diffDays} day${diffDays === 1 ? \"\" : \"s\"} ago`;\n }\n\n return formatMessageTime(d);\n}\n","/**\n * Design tokens for the chat UI.\n * These map to CSS custom properties for easy theming.\n */\n\nexport const chatTokens = {\n spacing: {\n /** Vertical spacing between messages (16px) */\n messageBetween: \"1rem\",\n /** Message bubble horizontal padding (14px) */\n messagePx: \"0.875rem\",\n /** Message bubble vertical padding (10px) */\n messagePy: \"0.625rem\",\n /** Container padding (16px) */\n container: \"1rem\",\n /** Composer padding (16px) */\n composerPadding: \"1rem\",\n },\n\n typography: {\n message: {\n fontSize: \"1rem\",\n lineHeight: 1.5,\n letterSpacing: \"0px\",\n },\n caption: {\n fontSize: \"0.875rem\",\n lineHeight: 1.4,\n },\n small: {\n fontSize: \"0.8125rem\",\n lineHeight: 1.3,\n },\n },\n\n borderRadius: {\n message: \"0.5rem\",\n input: \"1rem\",\n panel: \"0.5rem\",\n button: \"0.5rem\",\n chip: \"0.25rem\",\n },\n\n colors: {\n // CSS custom property references\n primary: \"var(--chat-primary, #106997)\",\n secondary: \"var(--chat-secondary, #56C18A)\",\n error: \"var(--chat-error, #B1001B)\",\n warning: \"var(--chat-warning, #DD9652)\",\n\n // Message backgrounds\n messageBg: \"var(--chat-message-bg, rgba(0, 0, 0, 0.03))\",\n userMessageBg: \"var(--chat-user-message-bg, var(--chat-primary, #106997))\",\n userMessageText: \"var(--chat-user-message-text, #ffffff)\",\n\n // Panel backgrounds\n panelBg: \"var(--chat-panel-bg, rgba(0, 0, 0, 0.02))\",\n panelBorder: \"var(--chat-panel-border, rgba(0, 0, 0, 0.06))\",\n\n // Borders\n border: \"var(--chat-border, rgba(0, 0, 0, 0.06))\",\n borderHover: \"var(--chat-border-hover, rgba(0, 0, 0, 0.12))\",\n\n // Text\n text: \"var(--chat-text, #1D2033)\",\n subtle: \"var(--chat-text-subtle, rgba(0, 0, 0, 0.5))\",\n placeholder: \"var(--chat-placeholder, rgba(0, 0, 0, 0.4))\",\n\n // Status colors\n status: {\n pending: {\n main: \"rgba(0, 0, 0, 0.3)\",\n bg: \"rgba(0, 0, 0, 0.05)\",\n },\n running: {\n main: \"rgb(99, 102, 241)\",\n bg: \"rgba(99, 102, 241, 0.08)\",\n },\n completed: {\n main: \"rgb(16, 185, 129)\",\n bg: \"rgba(16, 185, 129, 0.08)\",\n },\n failed: {\n main: \"rgb(239, 68, 68)\",\n bg: \"rgba(239, 68, 68, 0.08)\",\n },\n },\n },\n\n shadows: {\n subtle: \"0 1px 2px rgba(0, 0, 0, 0.04)\",\n input: \"0 2px 8px rgba(0, 0, 0, 0.08)\",\n inputFocus: \"0 4px 16px rgba(0, 0, 0, 0.12)\",\n button: \"0 1px 3px rgba(0, 0, 0, 0.08)\",\n buttonHover: \"0 2px 6px rgba(0, 0, 0, 0.12)\",\n primary: \"0 2px 6px rgba(16, 105, 151, 0.3)\",\n primaryHover: \"0 4px 12px rgba(16, 105, 151, 0.4)\",\n },\n\n animations: {\n messageEntrance: {\n initial: { opacity: 0, y: 8 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.3, ease: [0.4, 0, 0.2, 1] },\n },\n fadeIn: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.2 },\n },\n },\n} as const;\n\nexport type ChatTokens = typeof chatTokens;\n"]}
1
+ {"version":3,"sources":["../src/utils/format-date.ts","../src/styles/tokens.ts"],"names":["TIME_FORMAT","DATE_FORMAT","FULL_FORMAT","formatMessageTime","date","d","now","formatRelativeTime","diffMs","diffSeconds","diffMinutes","diffHours","diffDays","chatTokens"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Format a date for display in chat messages.\n */\n\nconst TIME_FORMAT: Intl.DateTimeFormatOptions = {\n hour: \"numeric\",\n minute: \"2-digit\",\n hour12: true,\n};\n\nconst DATE_FORMAT: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n};\n\nconst FULL_FORMAT: Intl.DateTimeFormatOptions = {\n ...DATE_FORMAT,\n year: \"numeric\",\n ...TIME_FORMAT,\n};\n\n/**\n * Format a timestamp for display.\n * - Today: \"2:30 PM\"\n * - This year: \"Dec 15, 2:30 PM\"\n * - Other years: \"Dec 15, 2024, 2:30 PM\"\n */\nexport function formatMessageTime(date: Date | string): string {\n const d = typeof date === \"string\" ? new Date(date) : date;\n const now = new Date();\n\n const isToday =\n d.getDate() === now.getDate() &&\n d.getMonth() === now.getMonth() &&\n d.getFullYear() === now.getFullYear();\n\n if (isToday) {\n return d.toLocaleTimeString(\"en-US\", TIME_FORMAT);\n }\n\n const isThisYear = d.getFullYear() === now.getFullYear();\n\n if (isThisYear) {\n return `${d.toLocaleDateString(\"en-US\", DATE_FORMAT)}, ${d.toLocaleTimeString(\"en-US\", TIME_FORMAT)}`;\n }\n\n return d.toLocaleDateString(\"en-US\", FULL_FORMAT);\n}\n\n/**\n * Format a relative time (e.g., \"2 minutes ago\").\n */\nexport function formatRelativeTime(date: Date | string): string {\n const d = typeof date === \"string\" ? new Date(date) : date;\n const now = new Date();\n const diffMs = now.getTime() - d.getTime();\n const diffSeconds = Math.floor(diffMs / 1000);\n const diffMinutes = Math.floor(diffSeconds / 60);\n const diffHours = Math.floor(diffMinutes / 60);\n const diffDays = Math.floor(diffHours / 24);\n\n if (diffSeconds < 60) {\n return \"just now\";\n }\n\n if (diffMinutes < 60) {\n return `${diffMinutes} minute${diffMinutes === 1 ? \"\" : \"s\"} ago`;\n }\n\n if (diffHours < 24) {\n return `${diffHours} hour${diffHours === 1 ? \"\" : \"s\"} ago`;\n }\n\n if (diffDays < 7) {\n return `${diffDays} day${diffDays === 1 ? \"\" : \"s\"} ago`;\n }\n\n return formatMessageTime(d);\n}\n","/**\n * Design tokens for the chat UI.\n * These map to CSS custom properties for easy theming.\n */\n\nexport const chatTokens = {\n spacing: {\n /** Vertical spacing between messages (16px) */\n messageBetween: \"1rem\",\n /** Message bubble horizontal padding (14px) */\n messagePx: \"0.875rem\",\n /** Message bubble vertical padding (10px) */\n messagePy: \"0.625rem\",\n /** Container padding (16px) */\n container: \"1rem\",\n /** Composer padding (16px) */\n composerPadding: \"1rem\",\n },\n\n typography: {\n message: {\n fontSize: \"1rem\",\n lineHeight: 1.5,\n letterSpacing: \"0px\",\n },\n caption: {\n fontSize: \"0.875rem\",\n lineHeight: 1.4,\n },\n small: {\n fontSize: \"0.8125rem\",\n lineHeight: 1.3,\n },\n },\n\n borderRadius: {\n message: \"0.5rem\",\n input: \"1rem\",\n panel: \"0.5rem\",\n button: \"0.5rem\",\n chip: \"0.25rem\",\n },\n\n colors: {\n // CSS custom property references\n primary: \"var(--chat-primary, #106997)\",\n secondary: \"var(--chat-secondary, #56C18A)\",\n error: \"var(--chat-error, #B1001B)\",\n warning: \"var(--chat-warning, #DD9652)\",\n\n // Message backgrounds\n messageBg: \"var(--chat-message-bg, rgba(0, 0, 0, 0.03))\",\n userMessageBg: \"var(--chat-user-message-bg, var(--chat-primary, #106997))\",\n userMessageText: \"var(--chat-user-message-text, #ffffff)\",\n\n // Panel backgrounds\n panelBg: \"var(--chat-panel-bg, rgba(0, 0, 0, 0.02))\",\n panelBorder: \"var(--chat-panel-border, rgba(0, 0, 0, 0.06))\",\n\n // Borders\n border: \"var(--chat-border, rgba(0, 0, 0, 0.06))\",\n borderHover: \"var(--chat-border-hover, rgba(0, 0, 0, 0.12))\",\n\n // Text\n text: \"var(--chat-text, #1D2033)\",\n subtle: \"var(--chat-text-subtle, rgba(0, 0, 0, 0.5))\",\n placeholder: \"var(--chat-placeholder, rgba(0, 0, 0, 0.4))\",\n\n // Status colors\n status: {\n pending: {\n main: \"rgba(0, 0, 0, 0.3)\",\n bg: \"rgba(0, 0, 0, 0.05)\",\n },\n running: {\n main: \"rgb(99, 102, 241)\",\n bg: \"rgba(99, 102, 241, 0.08)\",\n },\n completed: {\n main: \"rgb(16, 185, 129)\",\n bg: \"rgba(16, 185, 129, 0.08)\",\n },\n failed: {\n main: \"rgb(239, 68, 68)\",\n bg: \"rgba(239, 68, 68, 0.08)\",\n },\n },\n },\n\n shadows: {\n subtle: \"0 1px 2px rgba(0, 0, 0, 0.04)\",\n input: \"0 2px 8px rgba(0, 0, 0, 0.08)\",\n inputFocus: \"0 4px 16px rgba(0, 0, 0, 0.12)\",\n button: \"0 1px 3px rgba(0, 0, 0, 0.08)\",\n buttonHover: \"0 2px 6px rgba(0, 0, 0, 0.12)\",\n primary: \"0 2px 6px rgba(16, 105, 151, 0.3)\",\n primaryHover: \"0 4px 12px rgba(16, 105, 151, 0.4)\",\n },\n\n animations: {\n messageEntrance: {\n initial: { opacity: 0, y: 8 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.3, ease: [0.4, 0, 0.2, 1] },\n },\n fadeIn: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.2 },\n },\n },\n} as const;\n\nexport type ChatTokens = typeof chatTokens;\n"]}
@@ -1,4 +1,4 @@
1
- import { S as StreamingChunk, C as ClarificationData, M as MediaChunkData } from './streaming-DrnCgnnh.js';
1
+ import { S as StreamingChunk, C as ClarificationData, M as MediaChunkData } from './streaming-Q8hp5ev4.js';
2
2
 
3
3
  /**
4
4
  * Citation source types for AI-generated content.
@@ -22,6 +22,8 @@ interface SourceTypeConfig {
22
22
  label: string;
23
23
  color: string;
24
24
  }
25
+ type MemoryFeedbackType = "relevant" | "not_relevant";
26
+ declare function isMemoryCitation(source: SourceReference): boolean;
25
27
 
26
28
  type ParticipantRole = "user" | "assistant" | "system";
27
29
  interface Participant {
@@ -87,4 +89,4 @@ interface ReasoningChunk {
87
89
  timestamp: string | Date;
88
90
  }
89
91
 
90
- export type { Attachment as A, ChatMessage as C, MessageData as M, ParticipantRole as P, ReasoningChunk as R, SourceReference as S, MessageError as a, Participant as b, SourceTypeConfig as c, SuggestedAction as d, SuggestedActionType as e };
92
+ export { type Attachment as A, type ChatMessage as C, type MessageData as M, type ParticipantRole as P, type ReasoningChunk as R, type SourceReference as S, type MemoryFeedbackType as a, type MessageError as b, type Participant as c, type SourceTypeConfig as d, type SuggestedAction as e, type SuggestedActionType as f, isMemoryCitation as i };
@@ -1,8 +1,8 @@
1
- export { A as Avatar, h as AvatarProps, C as ComposerContext, a as ComposerInput, i as ComposerInputProps, b as ComposerSubmit, j as ComposerSubmitProps, e as Message, M as MessageComposer, k as MessageComposerProps, c as MessageContent, l as MessageContentProps, d as MessageContext, m as MessageProps, f as MessageTimestamp, n as MessageTimestampProps, u as useComposer, g as useMessage } from '../avatar-B6YLvJt3.js';
1
+ export { A as Avatar, h as AvatarProps, C as ComposerContext, a as ComposerInput, i as ComposerInputProps, b as ComposerSubmit, j as ComposerSubmitProps, e as Message, M as MessageComposer, k as MessageComposerProps, c as MessageContent, l as MessageContentProps, d as MessageContext, m as MessageProps, f as MessageTimestamp, n as MessageTimestampProps, u as useComposer, g as useMessage } from '../avatar-CAmTN1L7.js';
2
2
  import * as react from 'react';
3
3
  import { HTMLAttributes, ReactNode, ButtonHTMLAttributes } from 'react';
4
- import { d as SuggestedAction } from '../message-BnGtSz1P.js';
5
- import '../streaming-DrnCgnnh.js';
4
+ import { e as SuggestedAction } from '../message-D3D59U_Q.js';
5
+ import '../streaming-Q8hp5ev4.js';
6
6
 
7
7
  interface MessageListProps extends HTMLAttributes<HTMLDivElement> {
8
8
  /** Messages to render */
@@ -164,6 +164,7 @@ interface ClarificationData {
164
164
  subtaskDescription?: string;
165
165
  subagentName?: string;
166
166
  subagentRole?: string;
167
+ toolCallId?: string;
167
168
  }
168
169
  type VisualizationType = "chart" | "table" | "card" | "kpi" | "code_preview" | "form";
169
170
  type ChartDataType = "line" | "bar" | "pie" | "area" | "scatter" | "composed";
@@ -1,14 +1,14 @@
1
- export { A as AttachmentPreview, j as AttachmentPreviewProps, a as Avatar, k as AvatarProps, C as ChatContainer, l as ChatContainerProps, b as ChatLayout, m as ChatLayoutProps, M as MarkdownContent, n as MarkdownContentProps, c as Message, d as MessageActionBar, o as MessageActionBarProps, e as MessageComposer, p as MessageComposerProps, f as MessageList, q as MessageListProps, r as MessageProps, S as ScrollToBottomButton, s as ScrollToBottomButtonProps, g as StreamingText, t as StreamingTextProps, h as SuggestedActions, u as SuggestedActionsProps, v as ToolStatus, T as ToolStatusIndicator, w as ToolStatusIndicatorProps, i as TypingIndicator, x as TypingIndicatorProps, W as WelcomeScreen, y as WelcomeScreenProps } from '../WelcomeScreen-88hzx0rD.js';
1
+ export { A as AttachmentPreview, j as AttachmentPreviewProps, a as Avatar, k as AvatarProps, C as ChatContainer, l as ChatContainerProps, b as ChatLayout, m as ChatLayoutProps, M as MarkdownContent, n as MarkdownContentProps, c as Message, d as MessageActionBar, o as MessageActionBarProps, e as MessageComposer, p as MessageComposerProps, f as MessageList, q as MessageListProps, r as MessageProps, S as ScrollToBottomButton, s as ScrollToBottomButtonProps, g as StreamingText, t as StreamingTextProps, h as SuggestedActions, u as SuggestedActionsProps, v as ToolStatus, T as ToolStatusIndicator, w as ToolStatusIndicatorProps, i as TypingIndicator, x as TypingIndicatorProps, W as WelcomeScreen, y as WelcomeScreenProps } from '../WelcomeScreen-D32Tsu6G.js';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import react__default, { ReactNode } from 'react';
4
- import { A as Attachment, S as SourceReference } from '../message-BnGtSz1P.js';
5
- export { C as ChatMessage, M as MessageData, a as MessageError, b as Participant, P as ParticipantRole, c as SourceTypeConfig, d as SuggestedAction, e as SuggestedActionType } from '../message-BnGtSz1P.js';
6
- import { S as StreamingChunk, P as PlanData, C as ClarificationData, V as VisualizationChunkData, d as VisualizationActionEvent, e as ChartVisualizationData, f as VisualizationConfig, T as TableVisualizationData, g as CardVisualizationData, K as KpiVisualizationData, h as CodePreviewVisualizationData, F as FormVisualizationData, E as Event, i as EventStatus } from '../streaming-DrnCgnnh.js';
7
- export { j as ChunkType, k as ClaudeToolChunkData, l as EventType, m as FileOperationChunkData, n as FollowupAction, M as MediaChunkData, O as ObservationEvent, o as ParallelSubtaskData, p as PlanningEvent, q as ProgressData, r as SearchResultsChunkData, s as StreamingMessage, t as SubTaskData, u as SubagentChunkData, v as SubagentInfo, w as SubtaskEvent, x as TerminalChunkData, y as ThinkingEvent, z as ToolEvent, A as VisualizationType, W as WaveData, B as WebOperationChunkData } from '../streaming-DrnCgnnh.js';
4
+ import { A as Attachment, S as SourceReference, a as MemoryFeedbackType } from '../message-D3D59U_Q.js';
5
+ export { C as ChatMessage, M as MessageData, b as MessageError, c as Participant, P as ParticipantRole, d as SourceTypeConfig, e as SuggestedAction, f as SuggestedActionType } from '../message-D3D59U_Q.js';
6
+ import { S as StreamingChunk, P as PlanData, C as ClarificationData, V as VisualizationChunkData, d as VisualizationActionEvent, e as ChartVisualizationData, f as VisualizationConfig, T as TableVisualizationData, g as CardVisualizationData, K as KpiVisualizationData, h as CodePreviewVisualizationData, F as FormVisualizationData, E as Event, i as EventStatus } from '../streaming-Q8hp5ev4.js';
7
+ export { j as ChunkType, k as ClaudeToolChunkData, l as EventType, m as FileOperationChunkData, n as FollowupAction, M as MediaChunkData, O as ObservationEvent, o as ParallelSubtaskData, p as PlanningEvent, q as ProgressData, r as SearchResultsChunkData, s as StreamingMessage, t as SubTaskData, u as SubagentChunkData, v as SubagentInfo, w as SubtaskEvent, x as TerminalChunkData, y as ThinkingEvent, z as ToolEvent, A as VisualizationType, W as WaveData, B as WebOperationChunkData } from '../streaming-Q8hp5ev4.js';
8
8
  import { z, ZodSchema } from 'zod';
9
9
  export { ChatContextValue, ChatProvider, ChatProviderProps, useChatContext } from '../context/index.js';
10
10
  export { B as BrandingData } from '../branding-SzYU4ncD.js';
11
- export { u as useComposer, g as useMessage } from '../avatar-B6YLvJt3.js';
11
+ export { u as useComposer, g as useMessage } from '../avatar-CAmTN1L7.js';
12
12
 
13
13
  interface LoadingDotsProps {
14
14
  /** Size variant */
@@ -118,17 +118,23 @@ declare function ClarificationPanel({ clarification, onSubmit, onOptionSelect, d
118
118
  interface CitationSourcesProps {
119
119
  sources: SourceReference[];
120
120
  className?: string;
121
+ onMemoryFeedback?: (semanticAtomId: string, feedback: MemoryFeedbackType) => void;
122
+ memoryFeedbackState?: Record<string, MemoryFeedbackType>;
121
123
  }
122
124
  /**
123
125
  * Renders citation sources as a horizontal row of clickable chips.
124
126
  * Clicking a chip opens a modal showing full source content.
127
+ * Memory citations include feedback buttons (thumbs up/down).
125
128
  */
126
- declare function CitationSources({ sources, className }: CitationSourcesProps): react_jsx_runtime.JSX.Element | null;
129
+ declare function CitationSources({ sources, className, onMemoryFeedback, memoryFeedbackState, }: CitationSourcesProps): react_jsx_runtime.JSX.Element | null;
127
130
  interface SourceDetailModalProps {
128
131
  source: SourceReference | null;
129
132
  onClose: () => void;
133
+ onMemoryFeedback?: (semanticAtomId: string, feedback: MemoryFeedbackType) => void;
134
+ feedbackState?: Record<string, MemoryFeedbackType>;
135
+ onFeedbackChange?: (source: SourceReference, feedback: MemoryFeedbackType) => void;
130
136
  }
131
- declare function SourceDetailModal({ source, onClose, }: SourceDetailModalProps): react_jsx_runtime.JSX.Element | null;
137
+ declare function SourceDetailModal({ source, onClose, onMemoryFeedback, feedbackState, onFeedbackChange, }: SourceDetailModalProps): react_jsx_runtime.JSX.Element | null;
132
138
  /**
133
139
  * Inline citation badge - renders a small numbered badge like [1]
134
140
  * with optional tooltip on hover and click-to-open URL.
@@ -187,34 +193,34 @@ declare const chartVisualizationSchema: z.ZodObject<{
187
193
  name: z.ZodString;
188
194
  value: z.ZodNumber;
189
195
  }, z.core.$strip>]>>;
190
- color: z.ZodOptional<z.ZodString>;
196
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
191
197
  }, z.core.$strip>>;
192
- xAxis: z.ZodOptional<z.ZodObject<{
193
- label: z.ZodOptional<z.ZodString>;
194
- type: z.ZodOptional<z.ZodEnum<{
198
+ xAxis: z.ZodOptional<z.ZodNullable<z.ZodObject<{
199
+ label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
200
+ type: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
195
201
  number: "number";
196
202
  category: "category";
197
203
  time: "time";
198
- }>>;
199
- min: z.ZodOptional<z.ZodNumber>;
200
- max: z.ZodOptional<z.ZodNumber>;
201
- }, z.core.$strip>>;
202
- yAxis: z.ZodOptional<z.ZodObject<{
203
- label: z.ZodOptional<z.ZodString>;
204
- type: z.ZodOptional<z.ZodEnum<{
204
+ }>>>;
205
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
206
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
207
+ }, z.core.$strip>>>;
208
+ yAxis: z.ZodOptional<z.ZodNullable<z.ZodObject<{
209
+ label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
210
+ type: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
205
211
  number: "number";
206
212
  category: "category";
207
213
  time: "time";
208
- }>>;
209
- min: z.ZodOptional<z.ZodNumber>;
210
- max: z.ZodOptional<z.ZodNumber>;
211
- }, z.core.$strip>>;
214
+ }>>>;
215
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
216
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
217
+ }, z.core.$strip>>>;
212
218
  }, z.core.$strip>;
213
219
  declare const tableVisualizationSchema: z.ZodObject<{
214
220
  columns: z.ZodArray<z.ZodObject<{
215
221
  key: z.ZodString;
216
222
  label: z.ZodString;
217
- type: z.ZodOptional<z.ZodEnum<{
223
+ type: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
218
224
  string: "string";
219
225
  number: "number";
220
226
  boolean: "boolean";
@@ -223,63 +229,63 @@ declare const tableVisualizationSchema: z.ZodObject<{
223
229
  date: "date";
224
230
  badge: "badge";
225
231
  link: "link";
226
- }>>;
227
- align: z.ZodOptional<z.ZodEnum<{
232
+ }>>>;
233
+ align: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
228
234
  left: "left";
229
235
  center: "center";
230
236
  right: "right";
231
- }>>;
232
- width: z.ZodOptional<z.ZodString>;
237
+ }>>>;
238
+ width: z.ZodOptional<z.ZodNullable<z.ZodString>>;
233
239
  }, z.core.$strip>>;
234
240
  rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
235
241
  }, z.core.$strip>;
236
242
  declare const cardVisualizationSchema: z.ZodObject<{
237
- subtitle: z.ZodOptional<z.ZodString>;
238
- imageUrl: z.ZodOptional<z.ZodString>;
243
+ subtitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
244
+ imageUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
239
245
  sections: z.ZodArray<z.ZodObject<{
240
- title: z.ZodOptional<z.ZodString>;
241
- items: z.ZodOptional<z.ZodArray<z.ZodObject<{
246
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
247
+ items: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
242
248
  label: z.ZodString;
243
249
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
244
- }, z.core.$strip>>>;
245
- content: z.ZodOptional<z.ZodString>;
250
+ }, z.core.$strip>>>>;
251
+ content: z.ZodOptional<z.ZodNullable<z.ZodString>>;
246
252
  }, z.core.$strip>>;
247
- actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
253
+ actions: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
248
254
  label: z.ZodString;
249
255
  action: z.ZodString;
250
- variant: z.ZodOptional<z.ZodEnum<{
256
+ variant: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
251
257
  primary: "primary";
252
258
  secondary: "secondary";
253
259
  text: "text";
254
- }>>;
255
- }, z.core.$strip>>>;
260
+ }>>>;
261
+ }, z.core.$strip>>>>;
256
262
  }, z.core.$strip>;
257
263
  declare const kpiVisualizationSchema: z.ZodObject<{
258
264
  metrics: z.ZodArray<z.ZodObject<{
259
265
  label: z.ZodString;
260
266
  value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
261
- unit: z.ZodOptional<z.ZodString>;
262
- trend: z.ZodOptional<z.ZodEnum<{
267
+ unit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
268
+ trend: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
263
269
  up: "up";
264
270
  down: "down";
265
271
  neutral: "neutral";
266
- }>>;
267
- change: z.ZodOptional<z.ZodString>;
268
- changeLabel: z.ZodOptional<z.ZodString>;
269
- sparkline: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
270
- color: z.ZodOptional<z.ZodString>;
272
+ }>>>;
273
+ change: z.ZodOptional<z.ZodNullable<z.ZodString>>;
274
+ changeLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
275
+ sparkline: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodNumber>>>;
276
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
271
277
  }, z.core.$strip>>;
272
- layout: z.ZodOptional<z.ZodEnum<{
278
+ layout: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
273
279
  row: "row";
274
280
  grid: "grid";
275
- }>>;
281
+ }>>>;
276
282
  }, z.core.$strip>;
277
283
  declare const codePreviewVisualizationSchema: z.ZodObject<{
278
284
  code: z.ZodString;
279
285
  language: z.ZodString;
280
- lineNumbers: z.ZodOptional<z.ZodBoolean>;
281
- highlightLines: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
282
- startLine: z.ZodOptional<z.ZodNumber>;
286
+ lineNumbers: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
287
+ highlightLines: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodNumber>>>;
288
+ startLine: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
283
289
  }, z.core.$strip>;
284
290
  declare const formVisualizationSchema: z.ZodObject<{
285
291
  fields: z.ZodArray<z.ZodObject<{
@@ -297,21 +303,21 @@ declare const formVisualizationSchema: z.ZodObject<{
297
303
  datetime: "datetime";
298
304
  }>;
299
305
  label: z.ZodString;
300
- required: z.ZodOptional<z.ZodBoolean>;
301
- placeholder: z.ZodOptional<z.ZodString>;
302
- options: z.ZodOptional<z.ZodArray<z.ZodObject<{
306
+ required: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
307
+ placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
308
+ options: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
303
309
  value: z.ZodString;
304
310
  label: z.ZodString;
311
+ }, z.core.$strip>>>>;
312
+ defaultValue: z.ZodOptional<z.ZodNullable<z.ZodUnknown>>;
313
+ validation: z.ZodOptional<z.ZodNullable<z.ZodObject<{
314
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
315
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
316
+ pattern: z.ZodOptional<z.ZodNullable<z.ZodString>>;
317
+ message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
305
318
  }, z.core.$strip>>>;
306
- defaultValue: z.ZodOptional<z.ZodUnknown>;
307
- validation: z.ZodOptional<z.ZodObject<{
308
- min: z.ZodOptional<z.ZodNumber>;
309
- max: z.ZodOptional<z.ZodNumber>;
310
- pattern: z.ZodOptional<z.ZodString>;
311
- message: z.ZodOptional<z.ZodString>;
312
- }, z.core.$strip>>;
313
319
  }, z.core.$strip>>;
314
- submitAction: z.ZodOptional<z.ZodString>;
320
+ submitAction: z.ZodOptional<z.ZodNullable<z.ZodString>>;
315
321
  }, z.core.$strip>;
316
322
 
317
323
  interface VisualizationRendererProps {
@@ -1,2 +1,2 @@
1
- export{b as AttachmentPreview,c as Avatar,F as CardVisualization,D as ChartVisualization,d as ChatContainer,_ as ChatHeader,aa as ChatLayout,g as CitationSources,j as ClarificationPanel,u as ClaudeToolPreview,H as CodePreviewVisualization,p as EventContent,s as EventTimeline,w as FileOperationPreview,I as FormVisualization,i as InlineCitation,G as KpiVisualization,e as LoadingDots,f as MarkdownContent,U as Message,k as MessageActionBar,l as MessageAttachments,V as MessageComposer,X as MessageList,t as PlanTimeline,A as ReasoningPanel,W as ScrollToBottomButton,x as SearchResultsView,h as SourceDetailModal,m as StatusBadge,B as StreamingText,z as SubagentPanel,C as SuggestedActions,E as TableVisualization,v as TerminalOutput,Y as TimeMarker,n as Timeline,o as TimelineItem,$ as ToolStatusIndicator,Z as TypingIndicator,S as VisualizationRenderer,y as WebOperationPreview,ba as WelcomeScreen,O as cardVisualizationSchema,M as chartVisualizationSchema,Q as codePreviewVisualizationSchema,q as convertChunkToEvent,r as convertTimelineToEvents,R as formVisualizationSchema,L as getRegisteredTypes,K as getVisualization,P as kpiVisualizationSchema,J as registerVisualization,N as tableVisualizationSchema}from'../chunk-RZNLGXIW.js';export{h as useComposer,b as useMessage}from'../chunk-6RN7SUWT.js';import'../chunk-D2PFIJNZ.js';import'../chunk-4WWJTYYA.js';export{b as ChatProvider,c as useChatContext}from'../chunk-OCKHJ4WO.js';//# sourceMappingURL=index.js.map
1
+ export{c as AttachmentPreview,d as Avatar,G as CardVisualization,E as ChartVisualization,e as ChatContainer,$ as ChatHeader,ba as ChatLayout,h as CitationSources,k as ClarificationPanel,v as ClaudeToolPreview,I as CodePreviewVisualization,q as EventContent,t as EventTimeline,x as FileOperationPreview,J as FormVisualization,j as InlineCitation,H as KpiVisualization,f as LoadingDots,g as MarkdownContent,V as Message,l as MessageActionBar,m as MessageAttachments,W as MessageComposer,Y as MessageList,u as PlanTimeline,B as ReasoningPanel,X as ScrollToBottomButton,y as SearchResultsView,i as SourceDetailModal,n as StatusBadge,C as StreamingText,A as SubagentPanel,D as SuggestedActions,F as TableVisualization,w as TerminalOutput,Z as TimeMarker,o as Timeline,p as TimelineItem,aa as ToolStatusIndicator,_ as TypingIndicator,T as VisualizationRenderer,z as WebOperationPreview,ca as WelcomeScreen,P as cardVisualizationSchema,N as chartVisualizationSchema,R as codePreviewVisualizationSchema,r as convertChunkToEvent,s as convertTimelineToEvents,S as formVisualizationSchema,M as getRegisteredTypes,L as getVisualization,Q as kpiVisualizationSchema,K as registerVisualization,O as tableVisualizationSchema}from'../chunk-VDFIXLNO.js';export{h as useComposer,b as useMessage}from'../chunk-6RN7SUWT.js';import'../chunk-D2PFIJNZ.js';import'../chunk-4WWJTYYA.js';export{b as ChatProvider,c as useChatContext}from'../chunk-OCKHJ4WO.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map