@carto/ps-react-ui 4.11.2 → 4.12.0

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.
Files changed (82) hide show
  1. package/dist/chat.js +962 -733
  2. package/dist/chat.js.map +1 -1
  3. package/dist/csv-item-hH_Gt7ur.js +32 -0
  4. package/dist/csv-item-hH_Gt7ur.js.map +1 -0
  5. package/dist/png-item-9dNbB37T.js +57 -0
  6. package/dist/png-item-9dNbB37T.js.map +1 -0
  7. package/dist/table-B3ZWWhJt.js +383 -0
  8. package/dist/table-B3ZWWhJt.js.map +1 -0
  9. package/dist/types/chat/containers/chat-footer.d.ts +1 -1
  10. package/dist/types/chat/containers/styles.d.ts +79 -12
  11. package/dist/types/chat/index.d.ts +1 -1
  12. package/dist/types/chat/types.d.ts +21 -0
  13. package/dist/types/chat/use-typewriter.d.ts +5 -3
  14. package/dist/types/widgets-v2/actions/download/constants.d.ts +12 -0
  15. package/dist/types/widgets-v2/actions/download/csv-item.d.ts +38 -0
  16. package/dist/types/widgets-v2/actions/download/icons.d.ts +6 -0
  17. package/dist/types/widgets-v2/actions/download/index.d.ts +3 -1
  18. package/dist/types/widgets-v2/actions/index.d.ts +1 -1
  19. package/dist/types/widgets-v2/wrapper/style.d.ts +5 -12
  20. package/dist/widgets-v2/actions.js +40 -36
  21. package/dist/widgets-v2/actions.js.map +1 -1
  22. package/dist/widgets-v2/bar.js +77 -84
  23. package/dist/widgets-v2/bar.js.map +1 -1
  24. package/dist/widgets-v2/category.js +50 -55
  25. package/dist/widgets-v2/category.js.map +1 -1
  26. package/dist/widgets-v2/formula.js +37 -43
  27. package/dist/widgets-v2/formula.js.map +1 -1
  28. package/dist/widgets-v2/histogram.js +138 -144
  29. package/dist/widgets-v2/histogram.js.map +1 -1
  30. package/dist/widgets-v2/markdown.js +18 -17
  31. package/dist/widgets-v2/markdown.js.map +1 -1
  32. package/dist/widgets-v2/pie.js +67 -73
  33. package/dist/widgets-v2/pie.js.map +1 -1
  34. package/dist/widgets-v2/scatterplot.js +75 -81
  35. package/dist/widgets-v2/scatterplot.js.map +1 -1
  36. package/dist/widgets-v2/spread.js +36 -41
  37. package/dist/widgets-v2/spread.js.map +1 -1
  38. package/dist/widgets-v2/table.js +46 -55
  39. package/dist/widgets-v2/table.js.map +1 -1
  40. package/dist/widgets-v2/timeseries.js +81 -87
  41. package/dist/widgets-v2/timeseries.js.map +1 -1
  42. package/dist/widgets-v2.js +247 -243
  43. package/dist/widgets-v2.js.map +1 -1
  44. package/package.json +3 -3
  45. package/src/chat/bubbles/styles.ts +5 -1
  46. package/src/chat/containers/chat-content.tsx +4 -1
  47. package/src/chat/containers/chat-footer.test.tsx +59 -0
  48. package/src/chat/containers/chat-footer.tsx +124 -36
  49. package/src/chat/containers/styles.ts +107 -16
  50. package/src/chat/feedback/styles.ts +11 -4
  51. package/src/chat/index.ts +1 -0
  52. package/src/chat/types.ts +22 -0
  53. package/src/chat/use-typewriter.ts +32 -24
  54. package/src/widgets-v2/actions/download/constants.ts +14 -0
  55. package/src/widgets-v2/actions/download/csv-item.test.tsx +77 -0
  56. package/src/widgets-v2/actions/download/csv-item.tsx +71 -0
  57. package/src/widgets-v2/actions/download/icons.tsx +10 -1
  58. package/src/widgets-v2/actions/download/index.ts +3 -1
  59. package/src/widgets-v2/actions/download/png-item.tsx +2 -1
  60. package/src/widgets-v2/actions/index.ts +5 -0
  61. package/src/widgets-v2/bar/download.tsx +16 -22
  62. package/src/widgets-v2/category/download.test.ts +9 -0
  63. package/src/widgets-v2/category/download.ts +16 -20
  64. package/src/widgets-v2/formula/download.tsx +23 -29
  65. package/src/widgets-v2/histogram/download.ts +22 -26
  66. package/src/widgets-v2/markdown/{download.ts → download.tsx} +5 -2
  67. package/src/widgets-v2/pie/download.ts +16 -20
  68. package/src/widgets-v2/scatterplot/download.ts +16 -20
  69. package/src/widgets-v2/spread/download.ts +23 -27
  70. package/src/widgets-v2/table/download.test.ts +10 -0
  71. package/src/widgets-v2/table/download.ts +11 -15
  72. package/src/widgets-v2/table/helpers.test.ts +19 -0
  73. package/src/widgets-v2/table/helpers.ts +7 -12
  74. package/src/widgets-v2/timeseries/download.ts +36 -40
  75. package/src/widgets-v2/wrapper/style.ts +13 -18
  76. package/src/widgets-v2/wrapper/widget-wrapper.test.tsx +66 -0
  77. package/src/widgets-v2/wrapper/widget-wrapper.tsx +7 -4
  78. package/dist/png-item-BE9uEqlD.js +0 -45
  79. package/dist/png-item-BE9uEqlD.js.map +0 -1
  80. package/dist/table-C9IMbTr0.js +0 -385
  81. package/dist/table-C9IMbTr0.js.map +0 -1
  82. package/dist/types/chat/feedback/styles.d.ts +0 -211
package/dist/chat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sources":["../src/chat/const.ts","../src/chat/use-typewriter.ts","../src/chat/bubbles/styles.ts","../src/chat/bubbles/chat-user-message.tsx","../src/chat/bubbles/chat-agent-message.tsx","../src/chat/bubbles/chat-error-message.tsx","../src/chat/bubbles/chat-suggestion-button.tsx","../src/chat/feedback/styles.ts","../src/chat/feedback/chat-thinking.tsx","../src/chat/feedback/chat-loader.tsx","../src/chat/containers/styles.ts","../src/chat/containers/chat-content.tsx","../src/chat/containers/chat-header.tsx","../src/chat/containers/chat-footer.tsx","../src/chat/containers/chat-starter.tsx","../src/chat/feedback/chat-actions-container.tsx","../src/chat/feedback/chat-rating-action.tsx","../src/chat/feedback/chat-tool-full-view-dialog.tsx","../src/chat/feedback/chat-tool-code-area.tsx","../src/chat/feedback/get-tool-label.ts","../src/chat/feedback/chat-tool-trace.tsx","../src/chat/feedback/chat-tool-group.tsx"],"sourcesContent":["export const CHAT_MAX_WIDTH = 768\nexport const CHAT_SCROLL_DELAY = 300\nexport const CHAT_DIVIDER_DELAY = 100\nexport const CHAT_TOOL_CODE_AREA_MAX_HEIGHT = 126\n","import { useEffect, useRef, useState } from 'react'\n\ninterface UseTypewriterOptions {\n /** Characters revealed per second (default: `500`). */\n speed?: number\n /** When true on mount, skip the animation and reveal the full text immediately. */\n skipAnimation?: boolean\n}\n\ninterface UseTypewriterResult {\n /** The portion of `fullText` revealed so far. */\n displayedText: string\n /** `true` while characters are still being revealed. */\n isTyping: boolean\n}\n\n/**\n * Reveals a string character-by-character at a steady rate via\n * `requestAnimationFrame`. Useful for smoothing out bursty WebSocket-streamed\n * agent message text — pair it with `ChatAgentMessage`.\n *\n * @example\n * ```tsx\n * const { displayedText, isTyping } = useTypewriter(message)\n * return (\n * <ChatAgentMessage>\n * <Markdown>{displayedText}</Markdown>\n * {isTyping ? <Cursor /> : null}\n * </ChatAgentMessage>\n * )\n * ```\n */\nexport function useTypewriter(\n fullText: string,\n options: UseTypewriterOptions = {},\n): UseTypewriterResult {\n const { speed = 500, skipAnimation = false } = options\n\n const skipRef = useRef(skipAnimation)\n\n const [charIndex, setCharIndex] = useState(() =>\n skipRef.current ? fullText.length : 0,\n )\n\n useEffect(() => {\n if (skipRef.current) {\n setCharIndex(fullText.length)\n return\n }\n\n if (charIndex >= fullText.length) {\n return\n }\n\n const msPerChar = 1000 / speed\n let rafId: number\n let lastTime: number | null = null\n\n function tick(timestamp: number) {\n lastTime ??= timestamp\n\n const elapsed = timestamp - lastTime\n const charsToAdd = Math.floor(elapsed / msPerChar)\n\n if (charsToAdd > 0) {\n lastTime = timestamp\n setCharIndex((prev) => Math.min(prev + charsToAdd, fullText.length))\n }\n\n rafId = requestAnimationFrame(tick)\n }\n\n rafId = requestAnimationFrame(tick)\n\n return () => cancelAnimationFrame(rafId)\n }, [fullText, charIndex, speed])\n\n return {\n displayedText: fullText.slice(0, charIndex),\n isTyping: charIndex < fullText.length,\n }\n}\n","import { styled, Typography, type SxProps, type Theme } from '@mui/material'\n\nexport const ChatMessageOverflow = styled(Typography)(() => ({\n whiteSpace: 'pre-wrap',\n overflowX: 'clip',\n overflowWrap: 'break-word',\n maxWidth: '100%',\n}))\nChatMessageOverflow.displayName = 'ChatMessageOverflow'\n\nexport const styles = {\n agentMessageContainer: (theme: Theme) => ({\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n paddingRight: theme.spacing(4),\n '& + .PsChat--agent-message': {\n marginTop: theme.spacing(1),\n },\n '& + .PsChat--user-message': {\n marginTop: theme.spacing(3),\n },\n '& > p:first-of-type': {\n marginTop: 0,\n },\n '& table': {\n alignSelf: 'stretch',\n display: 'block',\n overflowX: 'auto',\n maxWidth: '100%',\n borderCollapse: 'collapse',\n margin: theme.spacing(1, 0),\n fontSize: '0.875em',\n },\n '& th, & td': {\n border: `1px solid ${theme.palette.divider}`,\n padding: theme.spacing(0.5, 1),\n textAlign: 'left',\n },\n '& th': {\n backgroundColor: theme.palette.action.hover,\n fontWeight: 600,\n },\n '& tr:nth-of-type(even) td': {\n backgroundColor: theme.palette.action.hover,\n },\n '& ul.contains-task-list': {\n listStyle: 'none',\n paddingLeft: 0,\n },\n '& .task-list-item input[type=\"checkbox\"]': {\n marginRight: theme.spacing(0.5),\n },\n '& del': {\n textDecoration: 'line-through',\n opacity: 0.7,\n },\n '& > ul, & > ol': {\n margin: theme.spacing(1, 0),\n paddingLeft: theme.spacing(3),\n '& > li + li': {\n marginTop: theme.spacing(1),\n },\n },\n }),\n userMessageContainer: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n paddingLeft: ({ spacing }) => spacing(4),\n '&:has(+ .PsChat--user-message) > .PsChat--user-message-inner': {\n borderRadius: ({ spacing }) => spacing(2),\n },\n '& + .PsChat--user-message': {\n marginTop: ({ spacing }) => spacing(0.5),\n },\n '& + .PsChat--agent-message': {\n marginTop: ({ spacing }) => spacing(3),\n },\n },\n userMessage: {\n padding: ({ spacing }) => spacing(0.75, 1.5),\n borderRadius: ({ spacing }) => spacing(2, 2, 0.25, 2),\n border: ({ palette }) => `1px solid ${palette.divider}`,\n backgroundColor: ({ palette }) => palette.background.default,\n color: ({ palette }) => palette.text.primary,\n width: 'fit-content',\n },\n muted: {\n color: ({ palette }) => palette.text.disabled,\n },\n userMessageTop: {\n textAlign: 'right',\n marginBottom: ({ spacing }) => spacing(0.5),\n },\n errorMessage: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: ({ spacing }) => spacing(1),\n },\n errorActions: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.5),\n },\n errorAction: {\n color: ({ palette }) => palette.text.primary,\n },\n errorActionSeparator: {\n mr: 0.5,\n color: ({ palette }) => palette.black[25],\n fontWeight: 600,\n },\n suggestionButton: {\n transition: 'border-color 0.2s',\n width: '100%',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n textAlign: 'left',\n gap: ({ spacing }) => spacing(1),\n padding: ({ spacing }) => spacing(0.75, 1.5),\n borderRadius: ({ spacing }) => spacing(2),\n border: ({ palette }) => `1px solid ${palette.divider}`,\n '& .MuiSvgIcon-root': {\n transition: 'color 0.2s',\n color: 'inherit',\n fontSize: ({ spacing }) => spacing(1.5),\n width: ({ spacing }) => spacing(1.5),\n minWidth: ({ spacing }) => spacing(1.5),\n height: ({ spacing }) => spacing(2.5),\n },\n '&:not(.Mui-disabled) .MuiSvgIcon-root': {\n color: ({ palette }) => palette.text.secondary,\n },\n '&:hover': {\n borderColor: ({ palette }) => palette.text.hint,\n '& .MuiSvgIcon-root': {\n color: ({ palette }) => palette.text.primary,\n },\n },\n '&.Mui-disabled': {\n color: ({ palette }) => palette.text.disabled,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport type { ChatUserMessageProps } from '../types'\nimport { ChatMessageOverflow, styles } from './styles'\n\nexport function ChatUserMessage({\n children,\n muted = false,\n topContext,\n sx,\n}: ChatUserMessageProps) {\n return (\n <Box className='PsChat--user-message' sx={styles.userMessageContainer}>\n {topContext && <Box sx={styles.userMessageTop}>{topContext}</Box>}\n <ChatMessageOverflow\n className='PsChat--user-message-inner'\n variant='body2'\n sx={{\n ...styles.userMessage,\n ...(muted ? styles.muted : undefined),\n ...sx,\n }}\n >\n {children}\n </ChatMessageOverflow>\n </Box>\n )\n}\n","import { Box, styled, type BoxProps } from '@mui/material'\nimport { styles } from './styles'\n\nconst InnerBox = ({ className, ...props }: BoxProps) => (\n <Box className={`PsChat--agent-message ${className ?? ''}`} {...props} />\n)\n\nexport const ChatAgentMessage = styled(InnerBox)(({ theme }) =>\n styles.agentMessageContainer(theme),\n)\nChatAgentMessage.displayName = 'ChatAgentMessage'\n","import { Box, Link, Typography } from '@mui/material'\nimport { ErrorOutline } from '@mui/icons-material'\nimport type { ChatErrorMessageProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatErrorMessage({\n errors,\n icon,\n actions,\n sx,\n}: ChatErrorMessageProps) {\n return (\n <Box sx={{ ...styles.errorMessage, ...sx }}>\n {icon ?? <ErrorOutline fontSize='medium' color='error' />}\n {errors.map((error, index) => (\n <Typography key={index} variant='subtitle2' color='error.relatedDark'>\n {error}\n </Typography>\n ))}\n {actions?.length ? (\n <Box sx={styles.errorActions}>\n {(actions ?? []).map((action, index) => (\n <span key={index}>\n {index > 0 && (\n <Typography\n component='span'\n variant='body2'\n sx={styles.errorActionSeparator}\n >\n &middot;\n </Typography>\n )}\n <Link\n component='button'\n variant='body2'\n onClick={action.onClick}\n sx={styles.errorAction}\n >\n {action.label}\n </Link>\n </span>\n ))}\n </Box>\n ) : null}\n </Box>\n )\n}\n","import { ButtonBase, Typography } from '@mui/material'\nimport { ArrowUpward } from '@mui/icons-material'\nimport type { ChatSuggestionButtonProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatSuggestionButton({\n label,\n color,\n sx,\n ...props\n}: ChatSuggestionButtonProps) {\n return (\n <ButtonBase\n sx={{\n ...styles.suggestionButton,\n ...(color ? { backgroundColor: color } : undefined),\n ...sx,\n }}\n {...props}\n >\n <Typography color='inherit' variant='body2'>\n {label}\n </Typography>\n <ArrowUpward />\n </ButtonBase>\n )\n}\n","import { type SxProps, type Theme } from '@mui/material'\nimport { keyframes } from '@mui/material/styles'\n\nconst shimmer = keyframes`\n 0% {\n background-position: 150% 0;\n }\n 100% {\n background-position: -50% 0;\n }\n`\n\nconst breatheOuter = keyframes`\n 0% { transform: scale(0.68); opacity: 0.7; }\n 40% { transform: scale(1); opacity: 1; }\n 80% { transform: scale(0.6); opacity: 0.65; }\n 100% { transform: scale(0.68); opacity: 0.7; }\n`\n\nconst breatheInner = keyframes`\n 0% { transform: scale(1); }\n 40% { transform: scale(0.75); }\n 80% { transform: scale(1.125); }\n 100% { transform: scale(1); }\n`\n\nexport const styles = {\n thinking: {\n display: 'flex',\n alignItems: 'center',\n minHeight: ({ spacing }) => spacing(3),\n background: ({ palette }) => `linear-gradient(\n 90deg,\n ${palette.text.disabled} 25%,\n ${palette.text.secondary} 50%,\n ${palette.text.disabled} 75%\n )`,\n backgroundSize: '200% 100%',\n backgroundClip: 'text',\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n animation: `${shimmer} 2s ease-in-out infinite`,\n animationDuration: '2s',\n },\n loader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n p: 1,\n },\n loaderOuterCircle: {\n position: 'absolute',\n inset: 0,\n margin: 'auto',\n borderRadius: '50%',\n backgroundColor: ({ palette }) => palette.action.disabled,\n animation: `${breatheOuter} 1s ease-in-out infinite`,\n },\n loaderInnerCircle: {\n position: 'absolute',\n inset: 0,\n margin: 'auto',\n borderRadius: '50%',\n backgroundColor: ({ palette }) => palette.text.primary,\n animation: `${breatheInner} 1s ease-in-out infinite`,\n },\n // --- Tool Trace styles ---\n traceHeader: {\n display: 'flex',\n alignItems: 'center',\n padding: 0,\n paddingLeft: ({ spacing }) => spacing(0.5),\n borderRadius: ({ spacing }) => spacing(0.5),\n width: 'fit-content',\n color: ({ palette }) => palette.text.secondary,\n '&:hover': {\n backgroundColor: ({ palette }) => palette.action.hover,\n },\n },\n traceChevron: {\n color: ({ palette }) => palette.text.secondary,\n transition: 'transform 0.2s',\n },\n traceDetailsWrapper: {\n marginTop: ({ spacing }) => spacing(0.5),\n padding: ({ spacing }) => spacing(1.5),\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: ({ spacing }) => spacing(1),\n },\n traceField: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: ({ spacing }) => spacing(1),\n },\n traceFieldLabel: {\n flexShrink: 0,\n },\n traceReference: {\n display: 'flex',\n borderRadius: ({ spacing }) => spacing(0.25),\n padding: ({ spacing }) => spacing(0, 0.5),\n gap: ({ spacing }) => spacing(0.5),\n backgroundColor: ({ palette }) => palette.success.relatedLight,\n color: ({ palette }) => palette.success.dark,\n },\n traceStatusSuccess: {\n color: ({ palette }) => palette.success.main,\n },\n traceStatusError: {\n color: ({ palette }) => palette.error.main,\n },\n // --- Code Area styles ---\n codeArea: {\n position: 'relative',\n width: '100%',\n },\n codeAreaPre: {\n margin: 0,\n padding: ({ spacing }) => spacing(1),\n borderRadius: ({ spacing }) => spacing(0.5),\n backgroundColor: ({ palette }) => palette.background.default,\n fontSize: '0.75rem',\n fontFamily: 'monospace',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n overflowY: 'auto',\n },\n codeAreaPreError: {\n borderLeft: ({ palette }) => `3px solid ${palette.error.main}`,\n backgroundColor: ({ palette }) => `${palette.error.main}08`,\n },\n codeAreaFullViewButton: {\n position: 'absolute',\n top: ({ spacing }) => spacing(0.5),\n right: ({ spacing }) => spacing(0.5),\n },\n // --- Full View Dialog styles ---\n fullViewDialog: {\n margin: ({ spacing }) => spacing(5),\n },\n fullViewPaper: {\n borderRadius: 1,\n },\n fullViewTitle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: ({ spacing }) => spacing(2),\n borderBottom: '1px solid',\n borderBottomColor: 'divider',\n },\n fullViewDialogContent: {\n padding: 0,\n '&:first-of-type': { paddingTop: 0 },\n },\n fullViewPre: {\n margin: 0,\n padding: ({ spacing }) => spacing(1),\n background: ({ palette, spacing }) =>\n `linear-gradient(to right, ${palette.action.hover} calc(${spacing(1)} + 3em), ${palette.background.default} calc(${spacing(1)} + 3em))`,\n fontFamily: 'monospace',\n fontSize: '0.8125rem',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n lineHeight: 1.6,\n counterReset: 'line',\n },\n fullViewLine: {\n display: 'block',\n '&::before': {\n counterIncrement: 'line',\n content: 'counter(line)',\n display: 'inline-block',\n width: '2em',\n marginRight: '2em',\n textAlign: 'right',\n color: ({ palette }) => palette.text.secondary,\n userSelect: 'none',\n },\n },\n groupHeader: {\n textAlign: 'left',\n display: 'flex',\n alignItems: 'center',\n borderRadius: 0,\n gap: ({ spacing }) => spacing(0.5),\n },\n errorBadge: {\n color: ({ palette }) => palette.error.main,\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.25),\n },\n // --- Syntax highlighting token styles ---\n syntaxToken_key: {\n color: '#881280',\n },\n syntaxToken_string: {\n color: '#c41a16',\n },\n syntaxToken_number: {\n color: '#1c00cf',\n },\n syntaxToken_boolean: {\n color: '#1c00cf',\n },\n syntaxToken_null: {\n color: '#808080',\n },\n syntaxToken_punctuation: {\n color: ({ palette }) => palette.text.primary,\n },\n groupListItem: {\n borderBottom: '1px solid',\n borderColor: 'divider',\n '&:first-of-type .MuiButton-root': {\n borderRadius: ({ spacing }) => spacing(1, 1, 0, 0),\n },\n '&:last-of-type:not([aria-expanded=true]) .MuiButton-root': {\n borderRadius: ({ spacing }) => spacing(0, 0, 1, 1),\n },\n '&:last-of-type': {\n borderBottomWidth: 0,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Typography } from '@mui/material'\nimport type { ChatThinkingProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatThinking({\n children = 'Thinking...',\n duration = 2000,\n sx,\n}: ChatThinkingProps) {\n const durSeconds = `${duration / 1000}s`\n return (\n <Typography\n variant='body2'\n sx={{\n ...styles.thinking,\n animationDuration: durSeconds,\n ...sx,\n }}\n >\n {children}\n </Typography>\n )\n}\n","import { Box } from '@mui/material'\nimport type { ChatLoaderProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatLoader({ size = 24, labels = {}, sx }: ChatLoaderProps) {\n return (\n <Box\n role='status'\n aria-busy={true}\n aria-label={labels.loading ?? 'Loading'}\n sx={{ ...styles.loader, width: size, height: size, ...sx }}\n >\n <Box\n component='span'\n sx={{\n ...styles.loaderOuterCircle,\n width: size * 0.75,\n height: size * 0.75,\n }}\n />\n <Box\n component='span'\n sx={{\n ...styles.loaderInnerCircle,\n width: size * 0.32,\n height: size * 0.32,\n }}\n />\n </Box>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { CHAT_MAX_WIDTH } from '../const'\n\nexport const styles = {\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: ({ spacing }) => spacing(1),\n },\n headerTitle: {\n flexGrow: 1,\n px: ({ spacing }) => spacing(0.5),\n },\n headerActions: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: ({ spacing }) => spacing(2),\n gap: ({ spacing }) => spacing(0.5),\n },\n footerWrapper: {\n padding: ({ spacing }) => spacing(1),\n position: 'relative',\n },\n footerCorner: {\n position: 'absolute',\n bottom: '38px',\n right: `max(16px, calc(50% - ${CHAT_MAX_WIDTH / 2}px + 6px))`,\n margin: '0 auto',\n },\n footer: {\n maxWidth: CHAT_MAX_WIDTH,\n margin: '0 auto',\n '&.MuiFilledInput-root.MuiInputBase-multiline.MuiInputBase-sizeSmall textarea':\n {\n resize: 'none',\n maxHeight: '10em',\n overflowY: 'auto !important',\n paddingRight: ({ spacing }) => spacing(5),\n },\n },\n footerCaption: {\n textAlign: 'center',\n },\n content: {\n overflowY: 'auto',\n flex: 1,\n position: 'relative',\n mx: 'auto',\n maxWidth: CHAT_MAX_WIDTH,\n width: '100%',\n maxHeight: '100%',\n pt: 1,\n pb: 2,\n px: 2,\n display: 'flex',\n flexDirection: 'column',\n borderTopWidth: '1px',\n borderTopStyle: 'solid',\n borderBottomWidth: '1px',\n borderBottomStyle: 'solid',\n },\n sentinel: {\n height: '1px',\n flexShrink: 0,\n },\n jumpToLatestWrapper: {\n position: 'sticky',\n bottom: ({ spacing }) => spacing(3),\n height: 0,\n display: 'flex',\n justifyContent: 'center',\n zIndex: 1,\n },\n jumpToLatest: {\n transition: 'opacity 0.2s',\n },\n starter: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: ({ spacing }) => spacing(3),\n textAlign: 'center',\n maxWidth: CHAT_MAX_WIDTH,\n margin: '0 auto',\n },\n starterItems: {\n display: 'grid',\n width: '100%',\n marginTop: ({ spacing }) => spacing(2),\n },\n starterItemsTwoCol: {\n gridTemplateColumns: 'repeat(2, 1fr)',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Box, Fab } from '@mui/material'\nimport { KeyboardArrowDown } from '@mui/icons-material'\nimport type { ChatContentProps, ChatContentRef } from '../types'\nimport { styles } from './styles'\n\n/** Slack in px for treating the user as \"at the bottom\" when content grows. */\nconst AUTO_SCROLL_THRESHOLD = 32\n\nexport const ChatContent = forwardRef<ChatContentRef, ChatContentProps>(\n function ChatContent({ children, autoScroll = true, labels = {}, sx }, ref) {\n const scrollRef = useRef<HTMLDivElement>(null)\n const topSentinelRef = useRef<HTMLDivElement>(null)\n const bottomSentinelRef = useRef<HTMLDivElement>(null)\n\n const [isAtTop, setIsAtTop] = useState(true)\n const [isAtBottom, setIsAtBottom] = useState(true)\n\n const scrollToBottom = () => {\n scrollRef.current?.scrollTo({\n top: scrollRef.current.scrollHeight,\n behavior: 'smooth',\n })\n }\n\n const scrollToTop = () => {\n scrollRef.current?.scrollTo({ top: 0, behavior: 'smooth' })\n }\n\n useImperativeHandle(\n ref,\n () => ({ scrollToBottom, scrollToTop, isAtBottom, isAtTop }),\n [isAtBottom, isAtTop],\n )\n\n useEffect(() => {\n const root = scrollRef.current\n const topEl = topSentinelRef.current\n const bottomEl = bottomSentinelRef.current\n if (!root || !topEl || !bottomEl) return\n\n const topObserver = new IntersectionObserver(\n ([entry]) => setIsAtTop(entry?.isIntersecting ?? true),\n { root },\n )\n const bottomObserver = new IntersectionObserver(\n ([entry]) => setIsAtBottom(entry?.isIntersecting ?? true),\n { root },\n )\n topObserver.observe(topEl)\n bottomObserver.observe(bottomEl)\n return () => {\n topObserver.disconnect()\n bottomObserver.disconnect()\n }\n }, [])\n\n useEffect(() => {\n if (!autoScroll) return\n const root = scrollRef.current\n if (!root) return\n\n // We can't watch `children` to detect new content: tool traces and\n // `useTypewriter` live inside child components and update via local\n // state, so they mutate the DOM without re-rendering `ChatContent`.\n // MutationObserver picks up every DOM change regardless of source.\n let prevScrollHeight = root.scrollHeight\n let rafId: number | null = null\n\n const check = () => {\n rafId = null\n const newScrollHeight = root.scrollHeight\n if (newScrollHeight > prevScrollHeight) {\n const growth = newScrollHeight - prevScrollHeight\n // If the distance from the bottom doesn't exceed the amount the\n // content just grew (plus a small slack), the user was at the\n // bottom *before* the growth — scroll them to the new bottom.\n // Otherwise they've scrolled up to read history and we leave them\n // alone.\n const distanceFromBottom =\n newScrollHeight - root.scrollTop - root.clientHeight\n if (distanceFromBottom <= growth + AUTO_SCROLL_THRESHOLD) {\n root.scrollTo({ top: newScrollHeight, behavior: 'smooth' })\n }\n }\n prevScrollHeight = newScrollHeight\n }\n\n const mo = new MutationObserver(() => {\n rafId ??= requestAnimationFrame(check)\n })\n mo.observe(root, {\n childList: true,\n subtree: true,\n characterData: true,\n })\n return () => {\n mo.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [autoScroll])\n\n return (\n <Box\n ref={scrollRef}\n sx={{\n ...styles.content,\n borderTopColor: ({ palette }) =>\n isAtTop ? 'transparent' : palette.divider,\n borderBottomColor: ({ palette }) =>\n isAtBottom ? 'transparent' : palette.divider,\n ...sx,\n }}\n >\n <Box ref={topSentinelRef} sx={styles.sentinel} aria-hidden />\n {children}\n <Box ref={bottomSentinelRef} sx={styles.sentinel} aria-hidden />\n <Box sx={styles.jumpToLatestWrapper}>\n <Fab\n size='small'\n onClick={scrollToBottom}\n aria-label={labels.jumpToLatest ?? 'Jump to latest'}\n sx={{\n ...styles.jumpToLatest,\n opacity: isAtBottom ? 0 : 1,\n pointerEvents: isAtBottom ? 'none' : 'auto',\n }}\n >\n <KeyboardArrowDown />\n </Fab>\n </Box>\n </Box>\n )\n },\n)\nChatContent.displayName = 'ChatContent'\n","import { Box, IconButton, Typography } from '@mui/material'\nimport { Close } from '@mui/icons-material'\nimport type { ChatHeaderProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatHeader({\n leftSlot,\n title,\n rightSlot,\n onClose,\n sx,\n}: ChatHeaderProps) {\n return (\n <Box sx={{ ...styles.header, ...sx }}>\n {leftSlot}\n <Typography variant='subtitle2' sx={styles.headerTitle}>\n {title}\n </Typography>\n <Box sx={styles.headerActions}>\n {rightSlot}\n {onClose && (\n <IconButton size='medium' onClick={onClose} aria-label='Close'>\n <Close />\n </IconButton>\n )}\n </Box>\n </Box>\n )\n}\n","import {\n Box,\n FilledInput,\n FormControl,\n FormHelperText,\n IconButton,\n} from '@mui/material'\nimport { ArrowUpwardOutlined, StopCircleOutlined } from '@mui/icons-material'\nimport type { ChatFooterProps } from '../types'\nimport { styles } from './styles'\n\nconst DEFAULT_CAPTION =\n 'Responses are AI generated. Please verify key information.'\n\nexport function ChatFooter({\n value,\n onChange,\n onSend,\n onStop,\n isGenerating = false,\n disabled = false,\n placeholder = 'Type a message...',\n labels = {},\n caption = DEFAULT_CAPTION,\n sx,\n}: ChatFooterProps) {\n const canSend = value.trim() && !disabled && !isGenerating\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n if (canSend) {\n onSend()\n }\n }\n }\n\n return (\n <FormControl fullWidth sx={{ ...styles.footerWrapper, ...sx }}>\n <FilledInput\n multiline\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled || isGenerating}\n sx={styles.footer}\n style={{ minHeight: 0 }}\n fullWidth\n size='small'\n />\n <Box sx={styles.footerCorner}>\n {isGenerating && onStop ? (\n <IconButton\n size='small'\n onClick={onStop}\n disabled={disabled}\n aria-label={labels.stop ?? 'Stop'}\n >\n <StopCircleOutlined />\n </IconButton>\n ) : (\n <IconButton\n size='small'\n variant='contained'\n onClick={onSend}\n disabled={!canSend}\n aria-label={labels.send ?? 'Send'}\n >\n <ArrowUpwardOutlined />\n </IconButton>\n )}\n </Box>\n {caption ? (\n <FormHelperText sx={styles.footerCaption}>{caption}</FormHelperText>\n ) : null}\n </FormControl>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport type { ChatStarterProps } from '../types'\nimport { ChatSuggestionButton } from '../bubbles/chat-suggestion-button'\nimport { styles } from './styles'\n\nconst DEFAULT_PALETTE = [\n '#C9DB7440', // pastel green\n '#FE88B140', // pastel red\n '#9EB9F340', // pastel blue\n '#F6CF7140', // pastel yellow\n]\n\nexport function ChatStarter({\n icon,\n title,\n description,\n items,\n size = 'small',\n onSelect,\n sx,\n}: ChatStarterProps) {\n const fullItems = items.map((item, index) => {\n if (typeof item === 'string') {\n return {\n label: item,\n color: DEFAULT_PALETTE[index],\n }\n } else {\n return {\n label: item.label,\n color: item.color ?? DEFAULT_PALETTE[index],\n }\n }\n })\n return (\n <Box\n sx={{\n ...styles.starter,\n gap: size === 'small' ? 1 : 2,\n ...sx,\n }}\n >\n {icon}\n {title && (\n <Typography variant={size === 'small' ? 'h6' : 'h5'}>\n {title}\n </Typography>\n )}\n {description && (\n <Typography\n variant={size === 'small' ? 'body2' : 'body1'}\n color='text.secondary'\n >\n {description}\n </Typography>\n )}\n <Box\n sx={{\n ...styles.starterItems,\n gap: size === 'small' ? 1 : 2,\n ...(items.length > 2 ? styles.starterItemsTwoCol : undefined),\n }}\n >\n {fullItems.map((item, i) => (\n <ChatSuggestionButton\n key={i}\n label={item.label}\n onClick={() => onSelect?.(item.label)}\n color={item.color}\n />\n ))}\n </Box>\n </Box>\n )\n}\n","import { Box, styled } from '@mui/material'\n\nexport const ChatActionsContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n}))\n","import { IconButton } from '@mui/material'\nimport {\n ThumbUpOutlined,\n ThumbDownOutlined,\n ThumbUp,\n ThumbDown,\n} from '@mui/icons-material'\nimport type { ChatRatingActionProps } from '../types'\n\nexport function ChatRatingAction({\n rating,\n onRatingChange,\n labels = {},\n}: ChatRatingActionProps) {\n return (\n <>\n <IconButton\n size='small'\n onClick={() => onRatingChange?.(rating === 'up' ? null : 'up')}\n aria-label={labels.thumbUp ?? 'Thumbs up'}\n color={rating === 'up' ? 'primary' : undefined}\n >\n {rating === 'up' ? (\n <ThumbUp fontSize='small' />\n ) : (\n <ThumbUpOutlined fontSize='small' />\n )}\n </IconButton>\n <IconButton\n size='small'\n onClick={() => onRatingChange?.(rating === 'down' ? null : 'down')}\n aria-label={labels.thumbDown ?? 'Thumbs down'}\n color={rating === 'down' ? 'primary' : undefined}\n >\n {rating === 'down' ? (\n <ThumbDown fontSize='small' />\n ) : (\n <ThumbDownOutlined fontSize='small' />\n )}\n </IconButton>\n </>\n )\n}\n","import { useMemo } from 'react'\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n IconButton,\n Box,\n} from '@mui/material'\nimport { Close } from '@mui/icons-material'\nimport { CopyButton } from '../../components/copy-button/copy-button'\nimport type { ChatToolFullViewDialogProps } from '../types'\nimport { styles } from './styles'\n\ninterface Token {\n type: 'key' | 'string' | 'number' | 'boolean' | 'null' | 'punctuation'\n value: string\n}\n\nconst NUMBER_START_REGEX = /^-?\\d/\n\nfunction tokenizeLine(line: string): (Token | string)[] {\n const tokens: (Token | string)[] = []\n let lastIndex = 0\n let match: RegExpExecArray | null\n\n // First, find all key positions by looking for \"...\": patterns\n const keyPositions = new Set<number>()\n const keyRegex = /(\"(?:[^\"\\\\]|\\\\.)*\")\\s*:/g\n let keyMatch: RegExpExecArray | null\n while ((keyMatch = keyRegex.exec(line)) !== null) {\n keyPositions.add(keyMatch.index)\n }\n\n const tokenRegex = // eslint-disable-next-line no-useless-escape\n /\"(?:[^\"\\\\]|\\\\.)*\"|\\b(?:true|false)\\b|\\bnull\\b|-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?|[{}\\[\\]:,]/g\n\n while ((match = tokenRegex.exec(line)) !== null) {\n if (match.index > lastIndex) {\n tokens.push(line.slice(lastIndex, match.index))\n }\n const value = match[0]\n if (value.startsWith('\"')) {\n if (keyPositions.has(match.index)) {\n tokens.push({ type: 'key', value })\n } else {\n tokens.push({ type: 'string', value })\n }\n } else if (NUMBER_START_REGEX.test(value)) {\n tokens.push({ type: 'number', value })\n } else if (value === 'true' || value === 'false') {\n tokens.push({ type: 'boolean', value })\n } else if (value === 'null') {\n tokens.push({ type: 'null', value })\n } else {\n tokens.push({ type: 'punctuation', value })\n }\n lastIndex = match.index + value.length\n }\n\n if (lastIndex < line.length) {\n tokens.push(line.slice(lastIndex))\n }\n\n return tokens\n}\n\nexport function ChatToolFullViewDialog({\n open,\n onClose,\n title,\n content,\n}: ChatToolFullViewDialogProps) {\n const tokenizedLines = useMemo(\n () => content.split('\\n').map((line) => tokenizeLine(line)),\n [content],\n )\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n sx={styles.fullViewDialog}\n PaperProps={{ sx: styles.fullViewPaper }}\n fullScreen\n >\n <DialogTitle sx={styles.fullViewTitle}>\n {title}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <CopyButton copyText={content} aria-label='Copy content' />\n <IconButton onClick={onClose} aria-label='close'>\n <Close />\n </IconButton>\n </Box>\n </DialogTitle>\n <DialogContent sx={styles.fullViewDialogContent}>\n <Box component='pre' sx={styles.fullViewPre}>\n {tokenizedLines.map((tokens, i) => (\n <Box component='span' key={i} sx={styles.fullViewLine}>\n {tokens.map((token, j) =>\n typeof token === 'string' ? (\n token\n ) : (\n <Box\n component='span'\n key={j}\n sx={\n styles[`syntaxToken_${token.type}` as keyof typeof styles]\n }\n >\n {token.value}\n </Box>\n ),\n )}\n {'\\n'}\n </Box>\n ))}\n </Box>\n </DialogContent>\n </Dialog>\n )\n}\n","import { useRef, useState, useEffect, useCallback } from 'react'\nimport { Box, IconButton, Tooltip } from '@mui/material'\nimport type { ChatToolCodeAreaProps } from '../types'\nimport { CHAT_TOOL_CODE_AREA_MAX_HEIGHT } from '../const'\nimport { ChatToolFullViewDialog } from './chat-tool-full-view-dialog'\nimport { styles } from './styles'\nimport { OpenDiagonallyRight } from '@carto/meridian-ds/custom-icons'\n\nexport function ChatToolCodeArea({\n content,\n title = '',\n isError = false,\n labels = {},\n sx,\n}: ChatToolCodeAreaProps) {\n const preRef = useRef<HTMLPreElement>(null)\n const [isOverflowing, setIsOverflowing] = useState(false)\n const [dialogOpen, setDialogOpen] = useState(false)\n\n const checkOverflow = useCallback(() => {\n const el = preRef.current\n if (el) {\n setIsOverflowing(el.scrollHeight > el.clientHeight)\n }\n }, [])\n\n useEffect(() => {\n checkOverflow()\n const el = preRef.current\n if (!el) return\n\n const observer = new ResizeObserver(checkOverflow)\n observer.observe(el)\n return () => observer.disconnect()\n }, [checkOverflow, content])\n\n const fullViewLabel = labels.fullView ?? 'Full view'\n\n return (\n <Box sx={{ ...styles.codeArea, ...sx }}>\n <Box\n component='pre'\n ref={preRef}\n sx={{\n ...styles.codeAreaPre,\n maxHeight: CHAT_TOOL_CODE_AREA_MAX_HEIGHT,\n ...(isError ? styles.codeAreaPreError : {}),\n }}\n >\n {content}\n </Box>\n {isOverflowing && (\n <Tooltip title={fullViewLabel}>\n <IconButton\n size='small'\n onClick={() => setDialogOpen(true)}\n sx={styles.codeAreaFullViewButton}\n >\n <OpenDiagonallyRight />\n </IconButton>\n </Tooltip>\n )}\n <ChatToolFullViewDialog\n open={dialogOpen}\n onClose={() => setDialogOpen(false)}\n title={title}\n content={content}\n />\n </Box>\n )\n}\n","import type { ChatToolItem } from '../types'\n\nfunction capitalize(str: string): string {\n const spaced = str.replace(/_/g, ' ')\n return spaced.charAt(0).toUpperCase() + spaced.slice(1)\n}\n\nexport function getToolLabel(tool: ChatToolItem): string {\n if (tool.status === 'running') {\n return tool.runningLabel ?? capitalize(tool.name)\n }\n return tool.label ?? capitalize(tool.name)\n}\n","import {\n Box,\n CircularProgress,\n Typography,\n Collapse,\n Button,\n} from '@mui/material'\nimport { ArrowRight, CheckCircle, Error } from '@mui/icons-material'\nimport type { ChatToolTraceProps } from '../types'\nimport { ChatToolCodeArea } from './chat-tool-code-area'\nimport { styles } from './styles'\nimport { ChatThinking } from './chat-thinking'\nimport { getToolLabel } from './get-tool-label'\nimport { McpTool } from '@carto/meridian-ds/custom-icons'\n\nfunction TraceStatusIndicator({\n status,\n labels,\n}: {\n status: string\n labels: ChatToolTraceProps['labels']\n}) {\n switch (status) {\n case 'complete':\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <CheckCircle sx={{ fontSize: 12 }} color='success' />\n <Typography variant='caption'>\n {labels?.success ?? 'Success'}\n </Typography>\n </Box>\n )\n case 'error':\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Error sx={{ fontSize: 12 }} color='error' />\n <Typography variant='code3'>{labels?.error ?? 'Error'}</Typography>\n </Box>\n )\n case 'running':\n return <CircularProgress size={14} />\n default:\n return null\n }\n}\n\nexport function ChatToolTraceDetails({\n tool,\n labels = {},\n}: Pick<ChatToolTraceProps, 'tool' | 'labels'>) {\n const isError = tool.status === 'error'\n const toolExecutedLabel = labels.toolExecuted ?? 'Tool executed'\n const referenceLabel = labels.reference ?? 'Reference:'\n const durationLabel = labels.duration ?? 'Duration:'\n const statusLabel = labels.status ?? 'Status:'\n const inputArgumentsLabel = labels.inputArguments ?? 'Input arguments:'\n const outputLabel = labels.output ?? 'Output:'\n\n return (\n <Box>\n {tool.reference && (\n <Box sx={styles.traceField}>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceFieldLabel}\n >\n {referenceLabel}\n </Typography>\n <Box sx={styles.traceReference}>\n <McpTool color='success' />\n <Typography variant='code3' fontWeight={600}>\n {tool.reference}\n </Typography>\n </Box>\n </Box>\n )}\n\n {tool.duration != null && (\n <Box sx={styles.traceField}>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceFieldLabel}\n >\n {durationLabel}\n </Typography>\n <Typography variant='code3'>{tool.duration}s</Typography>\n </Box>\n )}\n\n <Box sx={styles.traceField}>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceFieldLabel}\n >\n {statusLabel}\n </Typography>\n <TraceStatusIndicator status={tool.status} labels={labels} />\n </Box>\n\n {tool.inputArguments && (\n <Box>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceField}\n >\n {inputArgumentsLabel}\n </Typography>\n <ChatToolCodeArea\n sx={{ mt: 0.5, mb: tool.output ? 1.5 : 0 }}\n content={tool.inputArguments}\n title={`${toolExecutedLabel}: ${inputArgumentsLabel}`}\n isError={isError}\n />\n </Box>\n )}\n\n {tool.output && (\n <Box>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceField}\n >\n {outputLabel}\n </Typography>\n <ChatToolCodeArea\n sx={{ mt: 0.5 }}\n content={tool.output}\n title={`${toolExecutedLabel}: ${outputLabel}`}\n isError={isError}\n />\n </Box>\n )}\n </Box>\n )\n}\n\nexport function ChatToolTrace({\n tool,\n expanded,\n onExpandedChange,\n labels = {},\n sx,\n}: ChatToolTraceProps) {\n const isRunning = tool.status === 'running'\n const toolExecutedLabel = labels.toolExecuted ?? 'Tool executed'\n\n if (isRunning) {\n return <ChatThinking>{getToolLabel(tool)}</ChatThinking>\n }\n\n return (\n <Box\n width='100%'\n sx={sx}\n data-tool={tool.name}\n className={`PsChat--tool-trace`}\n >\n <Button\n size='small'\n variant='text'\n onClick={() => onExpandedChange?.(!expanded)}\n aria-expanded={expanded}\n sx={styles.traceHeader}\n >\n <Typography variant='caption' fontWeight={600} color='text.secondary'>\n {toolExecutedLabel}\n </Typography>\n <ArrowRight\n sx={{\n ...styles.traceChevron,\n transform: expanded ? 'rotate(90deg)' : 'rotate(0deg)',\n }}\n />\n </Button>\n <Collapse in={expanded} unmountOnExit>\n <Box sx={styles.traceDetailsWrapper}>\n <ChatToolTraceDetails tool={tool} labels={labels} />\n </Box>\n </Collapse>\n </Box>\n )\n}\n","import { Box, Button, Collapse, Typography } from '@mui/material'\nimport { ArrowRight, ChevronRight, ErrorOutline } from '@mui/icons-material'\nimport type { ChatToolGroupProps } from '../types'\nimport { ChatToolTrace, ChatToolTraceDetails } from './chat-tool-trace'\nimport { styles } from './styles'\nimport { getToolLabel } from './get-tool-label'\nimport { useState } from 'react'\n\nfunction useController<T>(value: T, setter?: (value: T) => void) {\n const [_value, _setter] = useState<T>(value)\n if (setter) {\n return [value, setter] as const\n } else {\n return [_value, _setter] as const\n }\n}\n\nexport function ChatToolGroup({\n tools,\n expanded: _expanded = false,\n onExpandedChange: _setExpanded,\n expandedTools: _expandedTools = {},\n onToolExpandedChange: _setExpandedTools,\n labels = {},\n sx,\n}: ChatToolGroupProps) {\n const [expanded, setExpanded] = useController(_expanded, _setExpanded)\n const [expandedTools, setExpandedTools] = useController(\n _expandedTools,\n _setExpandedTools,\n )\n\n const numErrors = tools.filter((t) => t.status === 'error').length\n const runningTools = tools.filter((t) => t.status === 'running')\n const nonRunningTools = tools.filter((t) => t.status !== 'running')\n const toolsUsedLabel = labels.toolsUsed ?? 'tools used'\n const errorLabel = labels.error ?? 'Error'\n\n if (tools.length === 1) {\n return (\n <ChatToolTrace\n tool={tools[0]!}\n expanded={expanded}\n onExpandedChange={setExpanded}\n labels={labels}\n sx={sx}\n />\n )\n }\n\n return (\n <Box width='100%' sx={sx} className='PsChat--tool-group'>\n <Button\n size='small'\n variant='text'\n onClick={() => setExpanded(!expanded)}\n aria-expanded={expanded}\n sx={{\n ...styles.traceHeader,\n pr: numErrors > 0 ? 0.5 : 0,\n }}\n >\n <Typography variant='caption' fontWeight={600} color='text.secondary'>\n {tools.length} {toolsUsedLabel}\n </Typography>\n <ArrowRight\n sx={{\n ...styles.traceChevron,\n transform: expanded ? 'rotate(90deg)' : 'rotate(0deg)',\n }}\n />\n {numErrors > 0 && (\n <Typography variant='code3' sx={styles.errorBadge}>\n {numErrors}\n <ErrorOutline sx={{ fontSize: 12 }} color='error' />\n </Typography>\n )}\n </Button>\n <Collapse in={expanded} unmountOnExit>\n <Box\n component='ul'\n sx={{\n ...styles.traceDetailsWrapper,\n p: 0,\n listStyle: 'none',\n }}\n >\n {nonRunningTools.map((tool) => {\n const isExpanded = expandedTools[tool.id] ?? false\n return (\n <Box\n key={tool.id}\n component='li'\n sx={styles.groupListItem}\n aria-expanded={isExpanded}\n >\n <Button\n variant='text'\n color='inherit'\n fullWidth\n onClick={() =>\n setExpandedTools({\n ...expandedTools,\n [tool.id]: !isExpanded,\n })\n }\n aria-expanded={isExpanded}\n sx={styles.groupHeader}\n >\n <Typography\n flexGrow={1}\n flexShrink={0}\n variant='caption'\n color='text.secondary'\n >\n {getToolLabel(tool)}\n </Typography>\n {tool.status === 'error' && (\n <Typography variant='code3' color='error.main'>\n {errorLabel}\n </Typography>\n )}\n <ChevronRight\n sx={{\n ...styles.traceChevron,\n transform: isExpanded ? 'rotate(90deg)' : 'rotate(0deg)',\n }}\n />\n </Button>\n <Collapse in={isExpanded} unmountOnExit>\n <Box px={1.5} py={1}>\n <ChatToolTraceDetails tool={tool} labels={labels} />\n </Box>\n </Collapse>\n </Box>\n )\n })}\n </Box>\n </Collapse>\n {runningTools.map((tool) => (\n <ChatToolTrace\n key={tool.id}\n tool={tool}\n labels={labels}\n expanded={expandedTools[tool.id]}\n onExpandedChange={() =>\n setExpandedTools({\n ...expandedTools,\n [tool.id]: !expandedTools[tool.id],\n })\n }\n />\n ))}\n </Box>\n )\n}\n"],"names":["CHAT_MAX_WIDTH","CHAT_SCROLL_DELAY","CHAT_DIVIDER_DELAY","CHAT_TOOL_CODE_AREA_MAX_HEIGHT","useTypewriter","fullText","options","speed","skipAnimation","skipRef","useRef","charIndex","setCharIndex","useState","current","length","useEffect","msPerChar","rafId","lastTime","tick","timestamp","elapsed","charsToAdd","Math","floor","prev","min","requestAnimationFrame","cancelAnimationFrame","displayedText","slice","isTyping","ChatMessageOverflow","styled","Typography","whiteSpace","overflowX","overflowWrap","maxWidth","displayName","styles","agentMessageContainer","theme","width","display","flexDirection","alignItems","paddingRight","spacing","marginTop","alignSelf","borderCollapse","margin","fontSize","border","palette","divider","padding","textAlign","backgroundColor","action","hover","fontWeight","listStyle","paddingLeft","marginRight","textDecoration","opacity","userMessageContainer","borderRadius","userMessage","background","default","color","text","primary","muted","disabled","userMessageTop","marginBottom","errorMessage","flexWrap","gap","errorActions","errorAction","errorActionSeparator","mr","black","suggestionButton","transition","justifyContent","minWidth","height","secondary","borderColor","hint","ChatUserMessage","t0","$","_c","children","t1","topContext","sx","undefined","t2","jsx","Box","t3","t4","t5","t6","InnerBox","className","props","ChatAgentMessage","ChatErrorMessage","errors","icon","actions","ErrorOutline","map","_temp","_temp2","jsxs","index_0","index","Link","onClick","label","error","ChatSuggestionButton","Symbol","for","ArrowUpward","ButtonBase","shimmer","keyframes","breatheOuter","breatheInner","thinking","minHeight","backgroundSize","backgroundClip","WebkitBackgroundClip","WebkitTextFillColor","animation","animationDuration","loader","position","p","loaderOuterCircle","inset","loaderInnerCircle","traceHeader","traceChevron","traceDetailsWrapper","traceField","traceFieldLabel","flexShrink","traceReference","success","relatedLight","dark","traceStatusSuccess","main","traceStatusError","codeArea","codeAreaPre","fontFamily","wordBreak","overflowY","codeAreaPreError","borderLeft","codeAreaFullViewButton","top","right","fullViewDialog","fullViewPaper","fullViewTitle","borderBottom","borderBottomColor","fullViewDialogContent","paddingTop","fullViewPre","lineHeight","counterReset","fullViewLine","counterIncrement","content","userSelect","groupHeader","errorBadge","syntaxToken_key","syntaxToken_string","syntaxToken_number","syntaxToken_boolean","syntaxToken_null","syntaxToken_punctuation","groupListItem","borderBottomWidth","ChatThinking","duration","durSeconds","ChatLoader","size","labels","loading","t7","t8","t9","t10","t11","t12","header","headerTitle","flexGrow","px","headerActions","marginLeft","footerWrapper","footerCorner","bottom","footer","resize","maxHeight","footerCaption","flex","mx","pt","pb","borderTopWidth","borderTopStyle","borderBottomStyle","sentinel","jumpToLatestWrapper","zIndex","jumpToLatest","starter","starterItems","starterItemsTwoCol","gridTemplateColumns","AUTO_SCROLL_THRESHOLD","ChatContent","forwardRef","autoScroll","ref","scrollRef","topSentinelRef","bottomSentinelRef","isAtTop","setIsAtTop","isAtBottom","setIsAtBottom","scrollToBottom","scrollTo","scrollHeight","behavior","scrollToTop","useImperativeHandle","root","topEl","bottomEl","topObserver","IntersectionObserver","entry","isIntersecting","bottomObserver","observe","disconnect","prevScrollHeight","check","newScrollHeight","growth","scrollTop","clientHeight","mo","MutationObserver","childList","subtree","characterData","borderTopColor","Fab","pointerEvents","KeyboardArrowDown","ChatHeader","leftSlot","title","rightSlot","onClose","IconButton","Close","DEFAULT_CAPTION","ChatFooter","value","onChange","onSend","onStop","isGenerating","placeholder","caption","trim","canSend","e","key","shiftKey","preventDefault","handleKeyDown","e_0","target","t13","FilledInput","t14","send","stop","StopCircleOutlined","ArrowUpwardOutlined","t15","FormHelperText","t16","FormControl","DEFAULT_PALETTE","ChatStarter","description","items","onSelect","T0","T1","fullItems","item_0","i","item","ChatActionsContainer","ChatRatingAction","rating","onRatingChange","thumbUp","ThumbUp","ThumbUpOutlined","thumbDown","ThumbDown","ThumbDownOutlined","NUMBER_START_REGEX","tokenizeLine","line","tokens","lastIndex","match","keyPositions","Set","keyRegex","keyMatch","exec","add","tokenRegex","push","startsWith","has","type","test","ChatToolFullViewDialog","open","split","tokenizedLines","CopyButton","DialogTitle","_temp3","DialogContent","Dialog","token","j","ChatToolCodeArea","isError","preRef","isOverflowing","setIsOverflowing","dialogOpen","setDialogOpen","el","checkOverflow","el_0","observer","ResizeObserver","fullViewLabel","fullView","Tooltip","OpenDiagonallyRight","capitalize","str","spaced","replace","charAt","toUpperCase","getToolLabel","tool","status","runningLabel","name","TraceStatusIndicator","CheckCircle","Error","CircularProgress","ChatToolTraceDetails","toolExecutedLabel","toolExecuted","referenceLabel","reference","durationLabel","statusLabel","inputArgumentsLabel","inputArguments","outputLabel","output","McpTool","mt","mb","ChatToolTrace","expanded","onExpandedChange","isRunning","ArrowRight","transform","Button","Collapse","useController","setter","_value","_setter","ChatToolGroup","tools","_setExpanded","expandedTools","onToolExpandedChange","_setExpandedTools","_expanded","_expandedTools","setExpanded","setExpandedTools","filter","numErrors","bb0","runningTools","nonRunningTools","toolsUsedLabel","toolsUsed","errorLabel","pr","t18","t19","t20","t21","isExpanded","id","ChevronRight","t22","t23","t24","t17","t25","tool_0","t_1","t","t_0"],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sources":["../src/chat/const.ts","../src/chat/use-typewriter.ts","../src/chat/bubbles/styles.ts","../src/chat/bubbles/chat-user-message.tsx","../src/chat/bubbles/chat-agent-message.tsx","../src/chat/bubbles/chat-error-message.tsx","../src/chat/bubbles/chat-suggestion-button.tsx","../src/chat/feedback/styles.ts","../src/chat/feedback/chat-thinking.tsx","../src/chat/feedback/chat-loader.tsx","../src/chat/containers/styles.ts","../src/chat/containers/chat-content.tsx","../src/chat/containers/chat-header.tsx","../src/chat/containers/chat-footer.tsx","../src/chat/containers/chat-starter.tsx","../src/chat/feedback/chat-actions-container.tsx","../src/chat/feedback/chat-rating-action.tsx","../src/chat/feedback/chat-tool-full-view-dialog.tsx","../src/chat/feedback/chat-tool-code-area.tsx","../src/chat/feedback/get-tool-label.ts","../src/chat/feedback/chat-tool-trace.tsx","../src/chat/feedback/chat-tool-group.tsx"],"sourcesContent":["export const CHAT_MAX_WIDTH = 768\nexport const CHAT_SCROLL_DELAY = 300\nexport const CHAT_DIVIDER_DELAY = 100\nexport const CHAT_TOOL_CODE_AREA_MAX_HEIGHT = 126\n","import { useEffect, useRef, useState } from 'react'\n\ninterface UseTypewriterOptions {\n /** Characters revealed per second (default: `500`). */\n speed?: number\n /** When true, reveal the full text immediately (and snap to it if it grows). */\n skipAnimation?: boolean\n}\n\ninterface UseTypewriterResult {\n /** The portion of `fullText` revealed so far. */\n displayedText: string\n /** `true` while characters are still being revealed. */\n isTyping: boolean\n}\n\n/**\n * Reveals a string character-by-character at a steady rate via\n * `requestAnimationFrame`. Designed for bursty, streamed agent text: as\n * `fullText` grows the reveal keeps chasing the new end, and flipping\n * `skipAnimation` to `true` (e.g. once generation finishes) snaps to the full\n * text. Pair it with `ChatAgentMessage`.\n *\n * @example\n * ```tsx\n * const { displayedText, isTyping } = useTypewriter(message)\n * return (\n * <ChatAgentMessage>\n * <Markdown>{displayedText}</Markdown>\n * {isTyping ? <Cursor /> : null}\n * </ChatAgentMessage>\n * )\n * ```\n */\nexport function useTypewriter(\n fullText: string,\n options: UseTypewriterOptions = {},\n): UseTypewriterResult {\n const { speed = 500, skipAnimation = false } = options\n\n const [charIndex, setCharIndex] = useState(() =>\n skipAnimation ? fullText.length : 0,\n )\n\n // Mirror of the revealed count, read/written ONLY inside the rAF loop (never\n // during render). This lets the animation effect omit `charIndex` from its\n // deps: were it a dep, the loop would tear down and restart on every revealed\n // frame — resetting its frame timer — and never accumulate the elapsed time\n // needed to advance, which stalls completely while `fullText` is also growing\n // (the streaming case).\n const charRef = useRef(charIndex)\n\n useEffect(() => {\n // When `skipAnimation` is set there's nothing to animate — the full text is\n // shown directly via the derived `displayedText` below (no setState here, so\n // a streamed message snaps to its full text the moment generation finishes,\n // without an extra render or a `set-state-in-effect` cascade).\n if (skipAnimation) return\n\n // Already fully revealed (e.g. text hasn't grown since the last frame).\n if (charRef.current >= fullText.length) return\n\n const msPerChar = 1000 / speed\n let rafId: number\n let lastTime: number | null = null\n\n function tick(timestamp: number) {\n // Plain `?? =` not `??=`: the React Compiler can't lower logical-assignment\n // operators and would bail this hook out of optimization.\n lastTime = lastTime ?? timestamp\n const charsToAdd = Math.floor((timestamp - lastTime) / msPerChar)\n if (charsToAdd > 0) {\n lastTime = timestamp\n const next = Math.min(charRef.current + charsToAdd, fullText.length)\n charRef.current = next\n setCharIndex(next)\n if (next >= fullText.length) return // fully revealed — stop the loop\n }\n rafId = requestAnimationFrame(tick)\n }\n\n rafId = requestAnimationFrame(tick)\n return () => cancelAnimationFrame(rafId)\n }, [fullText, speed, skipAnimation])\n\n return {\n displayedText: skipAnimation ? fullText : fullText.slice(0, charIndex),\n isTyping: !skipAnimation && charIndex < fullText.length,\n }\n}\n","import { styled, Typography, type SxProps, type Theme } from '@mui/material'\n\nexport const ChatMessageOverflow = styled(Typography)(() => ({\n whiteSpace: 'pre-wrap',\n overflowX: 'clip',\n overflowWrap: 'break-word',\n maxWidth: '100%',\n}))\nChatMessageOverflow.displayName = 'ChatMessageOverflow'\n\nexport const styles = {\n agentMessageContainer: (theme: Theme) => ({\n ...theme.typography.body2,\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n // Separate the stacked turn blocks (tools → answer text → actions) per the\n // Figma \"Chat Turn\" spec (gap-8).\n gap: theme.spacing(1),\n paddingRight: theme.spacing(4),\n '& + .PsChat--agent-message': {\n marginTop: theme.spacing(1),\n },\n '& + .PsChat--user-message': {\n marginTop: theme.spacing(3),\n },\n '& > p:first-of-type': {\n marginTop: 0,\n },\n '& table': {\n alignSelf: 'stretch',\n display: 'block',\n overflowX: 'auto',\n maxWidth: '100%',\n borderCollapse: 'collapse',\n margin: theme.spacing(1, 0),\n fontSize: '0.875em',\n },\n '& th, & td': {\n border: `1px solid ${theme.palette.divider}`,\n padding: theme.spacing(0.5, 1),\n textAlign: 'left',\n },\n '& th': {\n backgroundColor: theme.palette.action.hover,\n fontWeight: 600,\n },\n '& tr:nth-of-type(even) td': {\n backgroundColor: theme.palette.action.hover,\n },\n '& ul.contains-task-list': {\n listStyle: 'none',\n paddingLeft: 0,\n },\n '& .task-list-item input[type=\"checkbox\"]': {\n marginRight: theme.spacing(0.5),\n },\n '& del': {\n textDecoration: 'line-through',\n opacity: 0.7,\n },\n '& > ul, & > ol': {\n margin: theme.spacing(1, 0),\n paddingLeft: theme.spacing(3),\n '& > li + li': {\n marginTop: theme.spacing(1),\n },\n },\n }),\n userMessageContainer: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n paddingLeft: ({ spacing }) => spacing(4),\n '&:has(+ .PsChat--user-message) > .PsChat--user-message-inner': {\n borderRadius: ({ spacing }) => spacing(2),\n },\n '& + .PsChat--user-message': {\n marginTop: ({ spacing }) => spacing(0.5),\n },\n '& + .PsChat--agent-message': {\n marginTop: ({ spacing }) => spacing(3),\n },\n },\n userMessage: {\n padding: ({ spacing }) => spacing(0.75, 1.5),\n borderRadius: ({ spacing }) => spacing(2, 2, 0.25, 2),\n border: ({ palette }) => `1px solid ${palette.divider}`,\n backgroundColor: ({ palette }) => palette.background.paper,\n color: ({ palette }) => palette.text.primary,\n width: 'fit-content',\n },\n muted: {\n color: ({ palette }) => palette.text.disabled,\n },\n userMessageTop: {\n textAlign: 'right',\n marginBottom: ({ spacing }) => spacing(0.5),\n },\n errorMessage: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: ({ spacing }) => spacing(1),\n },\n errorActions: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.5),\n },\n errorAction: {\n color: ({ palette }) => palette.text.primary,\n },\n errorActionSeparator: {\n mr: 0.5,\n color: ({ palette }) => palette.black[25],\n fontWeight: 600,\n },\n suggestionButton: {\n transition: 'border-color 0.2s',\n width: '100%',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n textAlign: 'left',\n gap: ({ spacing }) => spacing(1),\n padding: ({ spacing }) => spacing(0.75, 1.5),\n borderRadius: ({ spacing }) => spacing(2),\n border: ({ palette }) => `1px solid ${palette.divider}`,\n '& .MuiSvgIcon-root': {\n transition: 'color 0.2s',\n color: 'inherit',\n fontSize: ({ spacing }) => spacing(1.5),\n width: ({ spacing }) => spacing(1.5),\n minWidth: ({ spacing }) => spacing(1.5),\n height: ({ spacing }) => spacing(2.5),\n },\n '&:not(.Mui-disabled) .MuiSvgIcon-root': {\n color: ({ palette }) => palette.text.secondary,\n },\n '&:hover': {\n borderColor: ({ palette }) => palette.text.hint,\n '& .MuiSvgIcon-root': {\n color: ({ palette }) => palette.text.primary,\n },\n },\n '&.Mui-disabled': {\n color: ({ palette }) => palette.text.disabled,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport type { ChatUserMessageProps } from '../types'\nimport { ChatMessageOverflow, styles } from './styles'\n\nexport function ChatUserMessage({\n children,\n muted = false,\n topContext,\n sx,\n}: ChatUserMessageProps) {\n return (\n <Box className='PsChat--user-message' sx={styles.userMessageContainer}>\n {topContext && <Box sx={styles.userMessageTop}>{topContext}</Box>}\n <ChatMessageOverflow\n className='PsChat--user-message-inner'\n variant='body2'\n sx={{\n ...styles.userMessage,\n ...(muted ? styles.muted : undefined),\n ...sx,\n }}\n >\n {children}\n </ChatMessageOverflow>\n </Box>\n )\n}\n","import { Box, styled, type BoxProps } from '@mui/material'\nimport { styles } from './styles'\n\nconst InnerBox = ({ className, ...props }: BoxProps) => (\n <Box className={`PsChat--agent-message ${className ?? ''}`} {...props} />\n)\n\nexport const ChatAgentMessage = styled(InnerBox)(({ theme }) =>\n styles.agentMessageContainer(theme),\n)\nChatAgentMessage.displayName = 'ChatAgentMessage'\n","import { Box, Link, Typography } from '@mui/material'\nimport { ErrorOutline } from '@mui/icons-material'\nimport type { ChatErrorMessageProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatErrorMessage({\n errors,\n icon,\n actions,\n sx,\n}: ChatErrorMessageProps) {\n return (\n <Box sx={{ ...styles.errorMessage, ...sx }}>\n {icon ?? <ErrorOutline fontSize='medium' color='error' />}\n {errors.map((error, index) => (\n <Typography key={index} variant='subtitle2' color='error.relatedDark'>\n {error}\n </Typography>\n ))}\n {actions?.length ? (\n <Box sx={styles.errorActions}>\n {(actions ?? []).map((action, index) => (\n <span key={index}>\n {index > 0 && (\n <Typography\n component='span'\n variant='body2'\n sx={styles.errorActionSeparator}\n >\n &middot;\n </Typography>\n )}\n <Link\n component='button'\n variant='body2'\n onClick={action.onClick}\n sx={styles.errorAction}\n >\n {action.label}\n </Link>\n </span>\n ))}\n </Box>\n ) : null}\n </Box>\n )\n}\n","import { ButtonBase, Typography } from '@mui/material'\nimport { ArrowUpward } from '@mui/icons-material'\nimport type { ChatSuggestionButtonProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatSuggestionButton({\n label,\n color,\n sx,\n ...props\n}: ChatSuggestionButtonProps) {\n return (\n <ButtonBase\n sx={{\n ...styles.suggestionButton,\n ...(color ? { backgroundColor: color } : undefined),\n ...sx,\n }}\n {...props}\n >\n <Typography color='inherit' variant='body2'>\n {label}\n </Typography>\n <ArrowUpward />\n </ButtonBase>\n )\n}\n","import { type SxProps, type Theme } from '@mui/material'\nimport { keyframes } from '@mui/material/styles'\n\nconst shimmer = keyframes`\n 0% {\n background-position: 150% 0;\n }\n 100% {\n background-position: -50% 0;\n }\n`\n\nconst breatheOuter = keyframes`\n 0% { transform: scale(0.68); opacity: 0.7; }\n 40% { transform: scale(1); opacity: 1; }\n 80% { transform: scale(0.6); opacity: 0.65; }\n 100% { transform: scale(0.68); opacity: 0.7; }\n`\n\nconst breatheInner = keyframes`\n 0% { transform: scale(1); }\n 40% { transform: scale(0.75); }\n 80% { transform: scale(1.125); }\n 100% { transform: scale(1); }\n`\n\nexport const styles = {\n thinking: {\n display: 'flex',\n alignItems: 'center',\n minHeight: ({ spacing }) => spacing(3),\n background: ({ palette }) => `linear-gradient(\n 90deg,\n ${palette.text.disabled} 25%,\n ${palette.text.secondary} 50%,\n ${palette.text.disabled} 75%\n )`,\n backgroundSize: '200% 100%',\n backgroundClip: 'text',\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n animation: `${shimmer} 2s ease-in-out infinite`,\n animationDuration: '2s',\n },\n loader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n p: 1,\n },\n loaderOuterCircle: {\n position: 'absolute',\n inset: 0,\n margin: 'auto',\n borderRadius: '50%',\n backgroundColor: ({ palette }) => palette.action.disabled,\n animation: `${breatheOuter} 1s ease-in-out infinite`,\n },\n loaderInnerCircle: {\n position: 'absolute',\n inset: 0,\n margin: 'auto',\n borderRadius: '50%',\n backgroundColor: ({ palette }) => palette.text.primary,\n animation: `${breatheInner} 1s ease-in-out infinite`,\n },\n // --- Tool Trace styles ---\n traceHeader: {\n display: 'flex',\n alignItems: 'center',\n padding: 0,\n paddingLeft: ({ spacing }) => spacing(0.5),\n borderRadius: ({ spacing }) => spacing(0.5),\n width: 'fit-content',\n color: ({ palette }) => palette.text.secondary,\n '&:hover': {\n backgroundColor: ({ palette }) => palette.action.hover,\n },\n },\n traceChevron: {\n color: ({ palette }) => palette.text.secondary,\n transition: 'transform 0.2s',\n },\n traceDetailsWrapper: {\n marginTop: ({ spacing }) => spacing(0.5),\n padding: ({ spacing }) => spacing(1.5),\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: ({ spacing }) => spacing(1),\n },\n traceField: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: ({ spacing }) => spacing(1),\n },\n traceFieldLabel: {\n flexShrink: 0,\n },\n traceReference: {\n display: 'flex',\n borderRadius: ({ spacing }) => spacing(0.25),\n padding: ({ spacing }) => spacing(0, 0.5),\n gap: ({ spacing }) => spacing(0.5),\n backgroundColor: ({ palette }) => palette.success.relatedLight,\n color: ({ palette }) => palette.success.dark,\n },\n traceStatusSuccess: {\n color: ({ palette }) => palette.success.main,\n },\n traceStatusError: {\n color: ({ palette }) => palette.error.main,\n },\n // --- Code Area styles ---\n codeArea: {\n position: 'relative',\n width: '100%',\n },\n codeAreaPre: {\n margin: 0,\n padding: ({ spacing }) => spacing(1),\n borderRadius: ({ spacing }) => spacing(0.5),\n backgroundColor: ({ palette }) => palette.background.default,\n fontFamily: ({ typography }) =>\n typography.code3?.fontFamily ??\n typography.code1?.fontFamily ??\n 'monospace',\n fontSize: ({ typography }) => typography.code3?.fontSize ?? '0.75rem',\n lineHeight: ({ typography }) => typography.code3?.lineHeight ?? 1.333,\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n overflowY: 'auto',\n },\n codeAreaPreError: {\n borderLeft: ({ palette }) => `3px solid ${palette.error.main}`,\n backgroundColor: ({ palette }) => `${palette.error.main}08`,\n },\n codeAreaFullViewButton: {\n position: 'absolute',\n top: ({ spacing }) => spacing(0.5),\n right: ({ spacing }) => spacing(0.5),\n },\n // --- Full View Dialog styles ---\n fullViewDialog: {\n margin: ({ spacing }) => spacing(5),\n },\n fullViewPaper: {\n borderRadius: 1,\n },\n fullViewTitle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: ({ spacing }) => spacing(2),\n borderBottom: '1px solid',\n borderBottomColor: 'divider',\n },\n fullViewDialogContent: {\n padding: 0,\n '&:first-of-type': { paddingTop: 0 },\n },\n fullViewPre: {\n margin: 0,\n padding: ({ spacing }) => spacing(1),\n background: ({ palette, spacing }) =>\n `linear-gradient(to right, ${palette.action.hover} calc(${spacing(1)} + 3em), ${palette.background.default} calc(${spacing(1)} + 3em))`,\n fontFamily: ({ typography }) =>\n typography.code3?.fontFamily ??\n typography.code1?.fontFamily ??\n 'monospace',\n fontSize: ({ typography }) => typography.code3?.fontSize ?? '0.75rem',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n lineHeight: 1.6,\n counterReset: 'line',\n },\n fullViewLine: {\n display: 'block',\n '&::before': {\n counterIncrement: 'line',\n content: 'counter(line)',\n display: 'inline-block',\n width: '2em',\n marginRight: '2em',\n textAlign: 'right',\n color: ({ palette }) => palette.text.secondary,\n userSelect: 'none',\n },\n },\n groupHeader: {\n textAlign: 'left',\n display: 'flex',\n alignItems: 'center',\n borderRadius: 0,\n gap: ({ spacing }) => spacing(0.5),\n },\n errorBadge: {\n color: ({ palette }) => palette.error.main,\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.25),\n },\n // --- Syntax highlighting token styles ---\n syntaxToken_key: {\n color: '#881280',\n },\n syntaxToken_string: {\n color: '#c41a16',\n },\n syntaxToken_number: {\n color: '#1c00cf',\n },\n syntaxToken_boolean: {\n color: '#1c00cf',\n },\n syntaxToken_null: {\n color: '#808080',\n },\n syntaxToken_punctuation: {\n color: ({ palette }) => palette.text.primary,\n },\n groupListItem: {\n borderBottom: '1px solid',\n borderColor: 'divider',\n '&:first-of-type .MuiButton-root': {\n borderRadius: ({ spacing }) => spacing(1, 1, 0, 0),\n },\n '&:last-of-type:not([aria-expanded=true]) .MuiButton-root': {\n borderRadius: ({ spacing }) => spacing(0, 0, 1, 1),\n },\n '&:last-of-type': {\n borderBottomWidth: 0,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Typography } from '@mui/material'\nimport type { ChatThinkingProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatThinking({\n children = 'Thinking...',\n duration = 2000,\n sx,\n}: ChatThinkingProps) {\n const durSeconds = `${duration / 1000}s`\n return (\n <Typography\n variant='body2'\n sx={{\n ...styles.thinking,\n animationDuration: durSeconds,\n ...sx,\n }}\n >\n {children}\n </Typography>\n )\n}\n","import { Box } from '@mui/material'\nimport type { ChatLoaderProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatLoader({ size = 24, labels = {}, sx }: ChatLoaderProps) {\n return (\n <Box\n role='status'\n aria-busy={true}\n aria-label={labels.loading ?? 'Loading'}\n sx={{ ...styles.loader, width: size, height: size, ...sx }}\n >\n <Box\n component='span'\n sx={{\n ...styles.loaderOuterCircle,\n width: size * 0.75,\n height: size * 0.75,\n }}\n />\n <Box\n component='span'\n sx={{\n ...styles.loaderInnerCircle,\n width: size * 0.32,\n height: size * 0.32,\n }}\n />\n </Box>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { CHAT_MAX_WIDTH } from '../const'\n\nexport const styles = {\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: ({ spacing }) => spacing(1),\n },\n headerTitle: {\n flexGrow: 1,\n px: ({ spacing }) => spacing(0.5),\n },\n headerActions: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: ({ spacing }) => spacing(2),\n gap: ({ spacing }) => spacing(0.5),\n },\n footerWrapper: {\n padding: ({ spacing }) => spacing(1),\n },\n /**\n * Rounded input box, matching the reference ChatFooter. A two-column grid:\n * main column (input + optional slots) | send button, bottom-aligned so it\n * stays at the end as the input grows. NO vertical padding — the textarea's own\n * padding sets the ~32px single-line height, so the box hugs the input.\n */\n footerBox: {\n maxWidth: CHAT_MAX_WIDTH,\n width: '100%',\n margin: '0 auto',\n display: 'grid',\n gridTemplateColumns: '1fr auto',\n alignItems: 'end',\n columnGap: ({ spacing }) => spacing(0.5),\n backgroundColor: ({ palette }) =>\n palette.default?.background ?? 'rgba(44, 48, 50, 0.04)',\n borderRadius: ({ spacing }) => spacing(0.5),\n paddingInline: ({ spacing }) => spacing(0.5),\n },\n /** Main grid area: input stacked above the (optional) slots row. */\n footerMain: {\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(0.5),\n },\n /**\n * Send-button grid area, bottom-aligned (matches the reference flex-end row) so\n * the button stays at the bottom as the input grows. The small bottom padding\n * keeps it off the box edge — in the single-line state it reads as vertically\n * centered (4px top / 4px bottom around the 24px button in the 32px row).\n */\n footerSend: {\n alignSelf: 'end',\n paddingBottom: ({ spacing }) => spacing(0.5),\n '& .MuiIconButton-root': {\n padding: ({ spacing }) => spacing(0.5),\n },\n },\n /** The chrome-less multiline input (no underline / no filled affordance). */\n footerInput: {\n width: '100%',\n typography: 'body2',\n // The Meridian theme styles multiline InputBase as a tall \"comment field\"\n // (min-height: 96px on the root, 12px/14px textarea padding). Override both to\n // get the compact chat field: kill the root min-height and use the reference's\n // 6px/10px padding — both need !important to beat the theme override. Height\n // then comes from MUI's TextareaAutosize (minRows=1/maxRows=8): one line\n // (~32px) → grows → scrolls.\n //\n // TextareaAutosize renders a hidden shadow <textarea> (it carries\n // `aria-hidden=\"true\"`, the same class, and an inline `padding: 0`) to measure\n // the content height; MUI then applies that height to the visible input. Getting\n // the compact ~32px single line right needs the two rules below split apart:\n //\n // • Font metrics (size/line-height/letter-spacing) go on BOTH textareas. The\n // shadow measures with its own CSS, so if it isn't pinned to body2 it\n // measures at the default ~24px line-height and the box ends up too tall.\n // • Padding goes on the VISIBLE input ONLY (`:not([aria-hidden])`). A\n // `!important` padding that also hit the shadow would clobber its measurement\n // `padding: 0`, double-counting the padding (~44px instead of 32px).\n //\n // `!important` is required on both to beat the Meridian theme's tall\n // \"comment field\" multiline overrides (12px/14px padding, larger metrics); the\n // root `min-height: 0` kills that theme's 96px min-height.\n minHeight: '0 !important',\n '& textarea': {\n fontSize: ({ typography }) => `${typography.body2.fontSize} !important`,\n lineHeight: ({ typography }) =>\n `${typography.body2.lineHeight} !important`,\n letterSpacing: ({ typography }) =>\n `${typography.body2.letterSpacing} !important`,\n },\n '& textarea:not([aria-hidden])': {\n resize: 'none',\n padding: ({ spacing }) => `${spacing(0.75, 1.25)} !important`,\n },\n },\n /**\n * Slots row under the input: start slot + model selector + end slot. The left\n * padding lines the row's content up with the input text above it: the input\n * text is inset ~12px from the box edge (InputBase root padding + the textarea's\n * 10px left padding) while the model-selector text button only insets ~8px, so a\n * 4px indent here makes the slot label share the placeholder's left edge instead\n * of sitting further out.\n */\n footerSlots: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.5),\n minWidth: 0,\n flexWrap: 'wrap',\n paddingLeft: ({ spacing }) => spacing(0.5),\n paddingBottom: ({ spacing }) => spacing(0.5),\n },\n modelSelector: {\n textTransform: 'none',\n color: ({ palette }) => palette.text.secondary,\n maxWidth: '100%',\n minWidth: 0,\n '& .MuiButton-endIcon': {\n marginLeft: ({ spacing }) => spacing(0.25),\n },\n },\n modelSelectorLabel: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n footerCaption: {\n textAlign: 'center',\n },\n content: {\n overflowY: 'auto',\n flex: 1,\n position: 'relative',\n mx: 'auto',\n maxWidth: CHAT_MAX_WIDTH,\n width: '100%',\n maxHeight: '100%',\n pt: 1,\n pb: 3,\n px: 2,\n display: 'flex',\n flexDirection: 'column',\n borderTopWidth: '1px',\n borderTopStyle: 'solid',\n borderBottomWidth: '1px',\n borderBottomStyle: 'solid',\n },\n sentinel: {\n height: '1px',\n flexShrink: 0,\n },\n jumpToLatestWrapper: {\n position: 'sticky',\n bottom: ({ spacing }) => spacing(3),\n height: 0,\n display: 'flex',\n justifyContent: 'center',\n zIndex: 1,\n },\n jumpToLatest: {\n transition: 'opacity 0.2s',\n },\n starter: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: ({ spacing }) => spacing(3),\n textAlign: 'center',\n maxWidth: CHAT_MAX_WIDTH,\n margin: '0 auto',\n },\n starterItems: {\n display: 'grid',\n width: '100%',\n marginTop: ({ spacing }) => spacing(2),\n },\n starterItemsTwoCol: {\n gridTemplateColumns: 'repeat(2, 1fr)',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { Box, Fab } from '@mui/material'\nimport { KeyboardArrowDown } from '@mui/icons-material'\nimport type { ChatContentProps, ChatContentRef } from '../types'\nimport { styles } from './styles'\n\n/** Slack in px for treating the user as \"at the bottom\" when content grows. */\nconst AUTO_SCROLL_THRESHOLD = 32\n\nexport const ChatContent = forwardRef<ChatContentRef, ChatContentProps>(\n function ChatContent({ children, autoScroll = true, labels = {}, sx }, ref) {\n const scrollRef = useRef<HTMLDivElement>(null)\n const topSentinelRef = useRef<HTMLDivElement>(null)\n const bottomSentinelRef = useRef<HTMLDivElement>(null)\n\n const [isAtTop, setIsAtTop] = useState(true)\n const [isAtBottom, setIsAtBottom] = useState(true)\n\n const scrollToBottom = () => {\n scrollRef.current?.scrollTo({\n top: scrollRef.current.scrollHeight,\n behavior: 'smooth',\n })\n }\n\n const scrollToTop = () => {\n scrollRef.current?.scrollTo({ top: 0, behavior: 'smooth' })\n }\n\n useImperativeHandle(\n ref,\n () => ({ scrollToBottom, scrollToTop, isAtBottom, isAtTop }),\n [isAtBottom, isAtTop],\n )\n\n useEffect(() => {\n const root = scrollRef.current\n const topEl = topSentinelRef.current\n const bottomEl = bottomSentinelRef.current\n if (!root || !topEl || !bottomEl) return\n\n const topObserver = new IntersectionObserver(\n ([entry]) => setIsAtTop(entry?.isIntersecting ?? true),\n { root },\n )\n const bottomObserver = new IntersectionObserver(\n ([entry]) => setIsAtBottom(entry?.isIntersecting ?? true),\n { root },\n )\n topObserver.observe(topEl)\n bottomObserver.observe(bottomEl)\n return () => {\n topObserver.disconnect()\n bottomObserver.disconnect()\n }\n }, [])\n\n useEffect(() => {\n if (!autoScroll) return\n const root = scrollRef.current\n if (!root) return\n\n // We can't watch `children` to detect new content: tool traces and\n // `useTypewriter` live inside child components and update via local\n // state, so they mutate the DOM without re-rendering `ChatContent`.\n // MutationObserver picks up every DOM change regardless of source.\n let prevScrollHeight = root.scrollHeight\n let rafId: number | null = null\n\n const check = () => {\n rafId = null\n const newScrollHeight = root.scrollHeight\n if (newScrollHeight > prevScrollHeight) {\n const growth = newScrollHeight - prevScrollHeight\n // If the distance from the bottom doesn't exceed the amount the\n // content just grew (plus a small slack), the user was at the\n // bottom *before* the growth — scroll them to the new bottom.\n // Otherwise they've scrolled up to read history and we leave them\n // alone.\n const distanceFromBottom =\n newScrollHeight - root.scrollTop - root.clientHeight\n if (distanceFromBottom <= growth + AUTO_SCROLL_THRESHOLD) {\n root.scrollTo({ top: newScrollHeight, behavior: 'smooth' })\n }\n }\n prevScrollHeight = newScrollHeight\n }\n\n const mo = new MutationObserver(() => {\n // Plain `?? =` rather than `??=`: the React Compiler can't yet lower\n // logical-assignment operators, and bailing out would drop memoization\n // for this scroll container (which re-renders on every message).\n rafId = rafId ?? requestAnimationFrame(check)\n })\n mo.observe(root, {\n childList: true,\n subtree: true,\n characterData: true,\n })\n return () => {\n mo.disconnect()\n if (rafId !== null) cancelAnimationFrame(rafId)\n }\n }, [autoScroll])\n\n return (\n <Box\n ref={scrollRef}\n sx={{\n ...styles.content,\n borderTopColor: ({ palette }) =>\n isAtTop ? 'transparent' : palette.divider,\n borderBottomColor: ({ palette }) =>\n isAtBottom ? 'transparent' : palette.divider,\n ...sx,\n }}\n >\n <Box ref={topSentinelRef} sx={styles.sentinel} aria-hidden />\n {children}\n <Box ref={bottomSentinelRef} sx={styles.sentinel} aria-hidden />\n <Box sx={styles.jumpToLatestWrapper}>\n <Fab\n size='small'\n onClick={scrollToBottom}\n aria-label={labels.jumpToLatest ?? 'Jump to latest'}\n sx={{\n ...styles.jumpToLatest,\n opacity: isAtBottom ? 0 : 1,\n pointerEvents: isAtBottom ? 'none' : 'auto',\n }}\n >\n <KeyboardArrowDown />\n </Fab>\n </Box>\n </Box>\n )\n },\n)\nChatContent.displayName = 'ChatContent'\n","import { Box, IconButton, Typography } from '@mui/material'\nimport { Close } from '@mui/icons-material'\nimport type { ChatHeaderProps } from '../types'\nimport { styles } from './styles'\n\nexport function ChatHeader({\n leftSlot,\n title,\n rightSlot,\n onClose,\n sx,\n}: ChatHeaderProps) {\n return (\n <Box sx={{ ...styles.header, ...sx }}>\n {leftSlot}\n <Typography variant='subtitle2' sx={styles.headerTitle}>\n {title}\n </Typography>\n <Box sx={styles.headerActions}>\n {rightSlot}\n {onClose && (\n <IconButton size='medium' onClick={onClose} aria-label='Close'>\n <Close />\n </IconButton>\n )}\n </Box>\n </Box>\n )\n}\n","import { useState } from 'react'\nimport {\n Box,\n Button,\n FormControl,\n FormHelperText,\n IconButton,\n InputBase,\n Menu,\n MenuItem,\n Typography,\n} from '@mui/material'\nimport {\n ArrowUpwardOutlined,\n StopCircleOutlined,\n KeyboardArrowDown,\n} from '@mui/icons-material'\nimport type { ChatFooterProps } from '../types'\nimport { styles } from './styles'\n\nconst DEFAULT_CAPTION =\n 'Responses are AI-generated. Please verify key information.'\n\nexport function ChatFooter({\n value,\n onChange,\n onSend,\n onStop,\n isGenerating = false,\n disabled = false,\n placeholder = 'Type a message...',\n labels = {},\n caption = DEFAULT_CAPTION,\n models,\n selectedModel,\n onModelChange,\n startToolbarSlot,\n endToolbarSlot,\n sx,\n}: ChatFooterProps) {\n const [modelAnchor, setModelAnchor] = useState<HTMLElement | null>(null)\n const canSend = value.trim() && !disabled && !isGenerating\n // Only worth showing when there's an actual choice — a single option is dead UI.\n const showModelSelector = (models?.length ?? 0) > 1\n const modelLabel = labels.model ?? 'Select model'\n // Visible trigger text: the matched option's label, the raw value as a\n // fallback, or the placeholder when nothing is selected yet.\n const selectedLabel =\n models?.find((m) => m.value === selectedModel)?.label ??\n (selectedModel && selectedModel.length > 0 ? selectedModel : modelLabel)\n\n // The slots row (start slot + model selector + end slot) renders under the input\n // only when there's something to show; otherwise the grid is just input | send.\n const hasSlots =\n showModelSelector || Boolean(startToolbarSlot) || Boolean(endToolbarSlot)\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n if (canSend) {\n onSend()\n }\n }\n }\n\n const sendButton =\n isGenerating && onStop ? (\n <IconButton\n size='small'\n onClick={onStop}\n disabled={disabled}\n aria-label={labels.stop ?? 'Stop'}\n >\n <StopCircleOutlined />\n </IconButton>\n ) : (\n <IconButton\n size='small'\n variant='contained'\n color='primary'\n onClick={onSend}\n disabled={!canSend}\n aria-label={labels.send ?? 'Send'}\n >\n <ArrowUpwardOutlined />\n </IconButton>\n )\n\n return (\n <FormControl fullWidth sx={{ ...styles.footerWrapper, ...sx }}>\n {/* Two grid areas: [input + slots] | [send button, aligned to the end]. */}\n <Box sx={styles.footerBox}>\n <Box sx={styles.footerMain}>\n <InputBase\n multiline\n minRows={1}\n maxRows={8}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled || isGenerating}\n sx={styles.footerInput}\n />\n {hasSlots && (\n <Box sx={styles.footerSlots}>\n {startToolbarSlot}\n {showModelSelector && (\n <>\n <Button\n size='small'\n variant='text'\n color='inherit'\n disabled={disabled || isGenerating}\n onClick={(e) => setModelAnchor(e.currentTarget)}\n aria-label={modelLabel}\n aria-haspopup='menu'\n aria-expanded={modelAnchor ? 'true' : undefined}\n endIcon={<KeyboardArrowDown />}\n sx={styles.modelSelector}\n >\n <Typography\n variant='caption'\n component='span'\n color='inherit'\n sx={styles.modelSelectorLabel}\n >\n {selectedLabel}\n </Typography>\n </Button>\n <Menu\n anchorEl={modelAnchor}\n open={Boolean(modelAnchor)}\n onClose={() => setModelAnchor(null)}\n variant='menu'\n elevation={8}\n anchorOrigin={{ vertical: 'top', horizontal: 'left' }}\n transformOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n >\n {models?.map((m) => (\n <MenuItem\n key={m.value}\n selected={m.value === selectedModel}\n onClick={() => {\n onModelChange?.(m.value)\n setModelAnchor(null)\n }}\n >\n {m.label}\n </MenuItem>\n ))}\n </Menu>\n </>\n )}\n {endToolbarSlot}\n </Box>\n )}\n </Box>\n <Box sx={styles.footerSend}>{sendButton}</Box>\n </Box>\n {caption ? (\n <FormHelperText sx={styles.footerCaption}>{caption}</FormHelperText>\n ) : null}\n </FormControl>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport type { ChatStarterProps } from '../types'\nimport { ChatSuggestionButton } from '../bubbles/chat-suggestion-button'\nimport { styles } from './styles'\n\nconst DEFAULT_PALETTE = [\n '#C9DB7440', // pastel green\n '#FE88B140', // pastel red\n '#9EB9F340', // pastel blue\n '#F6CF7140', // pastel yellow\n]\n\nexport function ChatStarter({\n icon,\n title,\n description,\n items,\n size = 'small',\n onSelect,\n sx,\n}: ChatStarterProps) {\n const fullItems = items.map((item, index) => {\n if (typeof item === 'string') {\n return {\n label: item,\n color: DEFAULT_PALETTE[index],\n }\n } else {\n return {\n label: item.label,\n color: item.color ?? DEFAULT_PALETTE[index],\n }\n }\n })\n return (\n <Box\n sx={{\n ...styles.starter,\n gap: size === 'small' ? 1 : 2,\n ...sx,\n }}\n >\n {icon}\n {title && (\n <Typography variant={size === 'small' ? 'h6' : 'h5'}>\n {title}\n </Typography>\n )}\n {description && (\n <Typography\n variant={size === 'small' ? 'body2' : 'body1'}\n color='text.secondary'\n >\n {description}\n </Typography>\n )}\n <Box\n sx={{\n ...styles.starterItems,\n gap: size === 'small' ? 1 : 2,\n ...(items.length > 2 ? styles.starterItemsTwoCol : undefined),\n }}\n >\n {fullItems.map((item, i) => (\n <ChatSuggestionButton\n key={i}\n label={item.label}\n onClick={() => onSelect?.(item.label)}\n color={item.color}\n />\n ))}\n </Box>\n </Box>\n )\n}\n","import { Box, styled } from '@mui/material'\n\nexport const ChatActionsContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n}))\n","import { IconButton } from '@mui/material'\nimport {\n ThumbUpOutlined,\n ThumbDownOutlined,\n ThumbUp,\n ThumbDown,\n} from '@mui/icons-material'\nimport type { ChatRatingActionProps } from '../types'\n\nexport function ChatRatingAction({\n rating,\n onRatingChange,\n labels = {},\n}: ChatRatingActionProps) {\n return (\n <>\n <IconButton\n size='small'\n onClick={() => onRatingChange?.(rating === 'up' ? null : 'up')}\n aria-label={labels.thumbUp ?? 'Thumbs up'}\n color={rating === 'up' ? 'primary' : undefined}\n >\n {rating === 'up' ? (\n <ThumbUp fontSize='small' />\n ) : (\n <ThumbUpOutlined fontSize='small' />\n )}\n </IconButton>\n <IconButton\n size='small'\n onClick={() => onRatingChange?.(rating === 'down' ? null : 'down')}\n aria-label={labels.thumbDown ?? 'Thumbs down'}\n color={rating === 'down' ? 'primary' : undefined}\n >\n {rating === 'down' ? (\n <ThumbDown fontSize='small' />\n ) : (\n <ThumbDownOutlined fontSize='small' />\n )}\n </IconButton>\n </>\n )\n}\n","import { useMemo } from 'react'\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n IconButton,\n Box,\n} from '@mui/material'\nimport { Close } from '@mui/icons-material'\nimport { CopyButton } from '../../components/copy-button/copy-button'\nimport type { ChatToolFullViewDialogProps } from '../types'\nimport { styles } from './styles'\n\ninterface Token {\n type: 'key' | 'string' | 'number' | 'boolean' | 'null' | 'punctuation'\n value: string\n}\n\nconst NUMBER_START_REGEX = /^-?\\d/\n\nfunction tokenizeLine(line: string): (Token | string)[] {\n const tokens: (Token | string)[] = []\n let lastIndex = 0\n let match: RegExpExecArray | null\n\n // First, find all key positions by looking for \"...\": patterns\n const keyPositions = new Set<number>()\n const keyRegex = /(\"(?:[^\"\\\\]|\\\\.)*\")\\s*:/g\n let keyMatch: RegExpExecArray | null\n while ((keyMatch = keyRegex.exec(line)) !== null) {\n keyPositions.add(keyMatch.index)\n }\n\n const tokenRegex = // eslint-disable-next-line no-useless-escape\n /\"(?:[^\"\\\\]|\\\\.)*\"|\\b(?:true|false)\\b|\\bnull\\b|-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?|[{}\\[\\]:,]/g\n\n while ((match = tokenRegex.exec(line)) !== null) {\n if (match.index > lastIndex) {\n tokens.push(line.slice(lastIndex, match.index))\n }\n const value = match[0]\n if (value.startsWith('\"')) {\n if (keyPositions.has(match.index)) {\n tokens.push({ type: 'key', value })\n } else {\n tokens.push({ type: 'string', value })\n }\n } else if (NUMBER_START_REGEX.test(value)) {\n tokens.push({ type: 'number', value })\n } else if (value === 'true' || value === 'false') {\n tokens.push({ type: 'boolean', value })\n } else if (value === 'null') {\n tokens.push({ type: 'null', value })\n } else {\n tokens.push({ type: 'punctuation', value })\n }\n lastIndex = match.index + value.length\n }\n\n if (lastIndex < line.length) {\n tokens.push(line.slice(lastIndex))\n }\n\n return tokens\n}\n\nexport function ChatToolFullViewDialog({\n open,\n onClose,\n title,\n content,\n}: ChatToolFullViewDialogProps) {\n const tokenizedLines = useMemo(\n () => content.split('\\n').map((line) => tokenizeLine(line)),\n [content],\n )\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n sx={styles.fullViewDialog}\n PaperProps={{ sx: styles.fullViewPaper }}\n fullScreen\n >\n <DialogTitle sx={styles.fullViewTitle}>\n {title}\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <CopyButton copyText={content} aria-label='Copy content' />\n <IconButton onClick={onClose} aria-label='close'>\n <Close />\n </IconButton>\n </Box>\n </DialogTitle>\n <DialogContent sx={styles.fullViewDialogContent}>\n <Box component='pre' sx={styles.fullViewPre}>\n {tokenizedLines.map((tokens, i) => (\n <Box component='span' key={i} sx={styles.fullViewLine}>\n {tokens.map((token, j) =>\n typeof token === 'string' ? (\n token\n ) : (\n <Box\n component='span'\n key={j}\n sx={\n styles[`syntaxToken_${token.type}` as keyof typeof styles]\n }\n >\n {token.value}\n </Box>\n ),\n )}\n {'\\n'}\n </Box>\n ))}\n </Box>\n </DialogContent>\n </Dialog>\n )\n}\n","import { useRef, useState, useEffect, useCallback } from 'react'\nimport { Box, IconButton, Tooltip } from '@mui/material'\nimport type { ChatToolCodeAreaProps } from '../types'\nimport { CHAT_TOOL_CODE_AREA_MAX_HEIGHT } from '../const'\nimport { ChatToolFullViewDialog } from './chat-tool-full-view-dialog'\nimport { styles } from './styles'\nimport { OpenDiagonallyRight } from '@carto/meridian-ds/custom-icons'\n\nexport function ChatToolCodeArea({\n content,\n title = '',\n isError = false,\n labels = {},\n sx,\n}: ChatToolCodeAreaProps) {\n const preRef = useRef<HTMLPreElement>(null)\n const [isOverflowing, setIsOverflowing] = useState(false)\n const [dialogOpen, setDialogOpen] = useState(false)\n\n const checkOverflow = useCallback(() => {\n const el = preRef.current\n if (el) {\n setIsOverflowing(el.scrollHeight > el.clientHeight)\n }\n }, [])\n\n useEffect(() => {\n checkOverflow()\n const el = preRef.current\n if (!el) return\n\n const observer = new ResizeObserver(checkOverflow)\n observer.observe(el)\n return () => observer.disconnect()\n }, [checkOverflow, content])\n\n const fullViewLabel = labels.fullView ?? 'Full view'\n\n return (\n <Box sx={{ ...styles.codeArea, ...sx }}>\n <Box\n component='pre'\n ref={preRef}\n sx={{\n ...styles.codeAreaPre,\n maxHeight: CHAT_TOOL_CODE_AREA_MAX_HEIGHT,\n ...(isError ? styles.codeAreaPreError : {}),\n }}\n >\n {content}\n </Box>\n {isOverflowing && (\n <Tooltip title={fullViewLabel}>\n <IconButton\n size='small'\n onClick={() => setDialogOpen(true)}\n sx={styles.codeAreaFullViewButton}\n >\n <OpenDiagonallyRight />\n </IconButton>\n </Tooltip>\n )}\n <ChatToolFullViewDialog\n open={dialogOpen}\n onClose={() => setDialogOpen(false)}\n title={title}\n content={content}\n />\n </Box>\n )\n}\n","import type { ChatToolItem } from '../types'\n\nfunction capitalize(str: string): string {\n const spaced = str.replace(/_/g, ' ')\n return spaced.charAt(0).toUpperCase() + spaced.slice(1)\n}\n\nexport function getToolLabel(tool: ChatToolItem): string {\n if (tool.status === 'running') {\n return tool.runningLabel ?? capitalize(tool.name)\n }\n return tool.label ?? capitalize(tool.name)\n}\n","import {\n Box,\n CircularProgress,\n Typography,\n Collapse,\n Button,\n} from '@mui/material'\nimport { ArrowRight, CheckCircle, Error } from '@mui/icons-material'\nimport type { ChatToolTraceProps } from '../types'\nimport { ChatToolCodeArea } from './chat-tool-code-area'\nimport { styles } from './styles'\nimport { ChatThinking } from './chat-thinking'\nimport { getToolLabel } from './get-tool-label'\nimport { McpTool } from '@carto/meridian-ds/custom-icons'\n\nfunction TraceStatusIndicator({\n status,\n labels,\n}: {\n status: string\n labels: ChatToolTraceProps['labels']\n}) {\n switch (status) {\n case 'complete':\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <CheckCircle sx={{ fontSize: 12 }} color='success' />\n <Typography variant='caption'>\n {labels?.success ?? 'Success'}\n </Typography>\n </Box>\n )\n case 'error':\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Error sx={{ fontSize: 12 }} color='error' />\n <Typography variant='code3'>{labels?.error ?? 'Error'}</Typography>\n </Box>\n )\n case 'running':\n return <CircularProgress size={14} />\n default:\n return null\n }\n}\n\nexport function ChatToolTraceDetails({\n tool,\n labels = {},\n}: Pick<ChatToolTraceProps, 'tool' | 'labels'>) {\n const isError = tool.status === 'error'\n const toolExecutedLabel = labels.toolExecuted ?? 'Tool executed'\n const referenceLabel = labels.reference ?? 'Reference:'\n const durationLabel = labels.duration ?? 'Duration:'\n const statusLabel = labels.status ?? 'Status:'\n const inputArgumentsLabel = labels.inputArguments ?? 'Input arguments:'\n const outputLabel = labels.output ?? 'Output:'\n\n return (\n <Box>\n {tool.reference && (\n <Box sx={styles.traceField}>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceFieldLabel}\n >\n {referenceLabel}\n </Typography>\n <Box sx={styles.traceReference}>\n <McpTool color='success' />\n <Typography variant='code3' fontWeight={600}>\n {tool.reference}\n </Typography>\n </Box>\n </Box>\n )}\n\n {tool.duration != null && (\n <Box sx={styles.traceField}>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceFieldLabel}\n >\n {durationLabel}\n </Typography>\n <Typography variant='code3'>{tool.duration}s</Typography>\n </Box>\n )}\n\n <Box sx={styles.traceField}>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceFieldLabel}\n >\n {statusLabel}\n </Typography>\n <TraceStatusIndicator status={tool.status} labels={labels} />\n </Box>\n\n {tool.inputArguments && (\n <Box>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceField}\n >\n {inputArgumentsLabel}\n </Typography>\n <ChatToolCodeArea\n sx={{ mt: 0.5, mb: tool.output ? 1.5 : 0 }}\n content={tool.inputArguments}\n title={`${toolExecutedLabel}: ${inputArgumentsLabel}`}\n isError={isError}\n />\n </Box>\n )}\n\n {tool.output && (\n <Box>\n <Typography\n variant='code3'\n fontWeight={600}\n color='text.secondary'\n sx={styles.traceField}\n >\n {outputLabel}\n </Typography>\n <ChatToolCodeArea\n sx={{ mt: 0.5 }}\n content={tool.output}\n title={`${toolExecutedLabel}: ${outputLabel}`}\n isError={isError}\n />\n </Box>\n )}\n </Box>\n )\n}\n\nexport function ChatToolTrace({\n tool,\n expanded,\n onExpandedChange,\n labels = {},\n sx,\n}: ChatToolTraceProps) {\n const isRunning = tool.status === 'running'\n const toolExecutedLabel = labels.toolExecuted ?? 'Tool executed'\n\n if (isRunning) {\n return <ChatThinking>{getToolLabel(tool)}</ChatThinking>\n }\n\n return (\n <Box\n width='100%'\n sx={sx}\n data-tool={tool.name}\n className={`PsChat--tool-trace`}\n >\n <Button\n size='small'\n variant='text'\n onClick={() => onExpandedChange?.(!expanded)}\n aria-expanded={expanded}\n sx={styles.traceHeader}\n >\n <Typography variant='caption' fontWeight={600} color='text.secondary'>\n {toolExecutedLabel}\n </Typography>\n <ArrowRight\n sx={{\n ...styles.traceChevron,\n transform: expanded ? 'rotate(90deg)' : 'rotate(0deg)',\n }}\n />\n </Button>\n <Collapse in={expanded} unmountOnExit>\n <Box sx={styles.traceDetailsWrapper}>\n <ChatToolTraceDetails tool={tool} labels={labels} />\n </Box>\n </Collapse>\n </Box>\n )\n}\n","import { Box, Button, Collapse, Typography } from '@mui/material'\nimport { ArrowRight, ChevronRight, ErrorOutline } from '@mui/icons-material'\nimport type { ChatToolGroupProps } from '../types'\nimport { ChatToolTrace, ChatToolTraceDetails } from './chat-tool-trace'\nimport { styles } from './styles'\nimport { getToolLabel } from './get-tool-label'\nimport { useState } from 'react'\n\nfunction useController<T>(value: T, setter?: (value: T) => void) {\n const [_value, _setter] = useState<T>(value)\n if (setter) {\n return [value, setter] as const\n } else {\n return [_value, _setter] as const\n }\n}\n\nexport function ChatToolGroup({\n tools,\n expanded: _expanded = false,\n onExpandedChange: _setExpanded,\n expandedTools: _expandedTools = {},\n onToolExpandedChange: _setExpandedTools,\n labels = {},\n sx,\n}: ChatToolGroupProps) {\n const [expanded, setExpanded] = useController(_expanded, _setExpanded)\n const [expandedTools, setExpandedTools] = useController(\n _expandedTools,\n _setExpandedTools,\n )\n\n const numErrors = tools.filter((t) => t.status === 'error').length\n const runningTools = tools.filter((t) => t.status === 'running')\n const nonRunningTools = tools.filter((t) => t.status !== 'running')\n const toolsUsedLabel = labels.toolsUsed ?? 'tools used'\n const errorLabel = labels.error ?? 'Error'\n\n if (tools.length === 1) {\n return (\n <ChatToolTrace\n tool={tools[0]!}\n expanded={expanded}\n onExpandedChange={setExpanded}\n labels={labels}\n sx={sx}\n />\n )\n }\n\n return (\n <Box width='100%' sx={sx} className='PsChat--tool-group'>\n <Button\n size='small'\n variant='text'\n onClick={() => setExpanded(!expanded)}\n aria-expanded={expanded}\n sx={{\n ...styles.traceHeader,\n pr: numErrors > 0 ? 0.5 : 0,\n }}\n >\n <Typography variant='caption' fontWeight={600} color='text.secondary'>\n {tools.length} {toolsUsedLabel}\n </Typography>\n <ArrowRight\n sx={{\n ...styles.traceChevron,\n transform: expanded ? 'rotate(90deg)' : 'rotate(0deg)',\n }}\n />\n {numErrors > 0 && (\n <Typography variant='code3' sx={styles.errorBadge}>\n {numErrors}\n <ErrorOutline sx={{ fontSize: 12 }} color='error' />\n </Typography>\n )}\n </Button>\n <Collapse in={expanded} unmountOnExit>\n <Box\n component='ul'\n sx={{\n ...styles.traceDetailsWrapper,\n p: 0,\n listStyle: 'none',\n }}\n >\n {nonRunningTools.map((tool) => {\n const isExpanded = expandedTools[tool.id] ?? false\n return (\n <Box\n key={tool.id}\n component='li'\n sx={styles.groupListItem}\n aria-expanded={isExpanded}\n >\n <Button\n variant='text'\n color='inherit'\n fullWidth\n onClick={() =>\n setExpandedTools({\n ...expandedTools,\n [tool.id]: !isExpanded,\n })\n }\n aria-expanded={isExpanded}\n sx={styles.groupHeader}\n >\n <Typography\n flexGrow={1}\n flexShrink={0}\n variant='caption'\n color='text.secondary'\n >\n {getToolLabel(tool)}\n </Typography>\n {tool.status === 'error' && (\n <Typography variant='code3' color='error.main'>\n {errorLabel}\n </Typography>\n )}\n <ChevronRight\n sx={{\n ...styles.traceChevron,\n transform: isExpanded ? 'rotate(90deg)' : 'rotate(0deg)',\n }}\n />\n </Button>\n <Collapse in={isExpanded} unmountOnExit>\n <Box px={1.5} py={1}>\n <ChatToolTraceDetails tool={tool} labels={labels} />\n </Box>\n </Collapse>\n </Box>\n )\n })}\n </Box>\n </Collapse>\n {runningTools.map((tool) => (\n <ChatToolTrace\n key={tool.id}\n tool={tool}\n labels={labels}\n expanded={expandedTools[tool.id]}\n onExpandedChange={() =>\n setExpandedTools({\n ...expandedTools,\n [tool.id]: !expandedTools[tool.id],\n })\n }\n />\n ))}\n </Box>\n )\n}\n"],"names":["CHAT_MAX_WIDTH","CHAT_SCROLL_DELAY","CHAT_DIVIDER_DELAY","CHAT_TOOL_CODE_AREA_MAX_HEIGHT","useTypewriter","fullText","t0","$","_c","t1","undefined","options","speed","t2","skipAnimation","t3","t4","length","charIndex","setCharIndex","useState","charRef","useRef","t5","t6","current","msPerChar","rafId","lastTime","tick","timestamp","charsToAdd","Math","floor","next","min","requestAnimationFrame","cancelAnimationFrame","useEffect","t7","slice","t8","t9","displayedText","isTyping","ChatMessageOverflow","styled","Typography","whiteSpace","overflowX","overflowWrap","maxWidth","displayName","styles","agentMessageContainer","theme","typography","body2","width","display","flexDirection","alignItems","gap","spacing","paddingRight","marginTop","alignSelf","borderCollapse","margin","fontSize","border","palette","divider","padding","textAlign","backgroundColor","action","hover","fontWeight","listStyle","paddingLeft","marginRight","textDecoration","opacity","userMessageContainer","borderRadius","userMessage","background","paper","color","text","primary","muted","disabled","userMessageTop","marginBottom","errorMessage","flexWrap","errorActions","errorAction","errorActionSeparator","mr","black","suggestionButton","transition","justifyContent","minWidth","height","secondary","borderColor","hint","ChatUserMessage","children","topContext","sx","jsx","Box","InnerBox","className","props","ChatAgentMessage","ChatErrorMessage","errors","icon","actions","ErrorOutline","map","_temp","_temp2","jsxs","index_0","index","Link","onClick","label","error","ChatSuggestionButton","Symbol","for","ArrowUpward","ButtonBase","shimmer","keyframes","breatheOuter","breatheInner","thinking","minHeight","backgroundSize","backgroundClip","WebkitBackgroundClip","WebkitTextFillColor","animation","animationDuration","loader","position","p","loaderOuterCircle","inset","loaderInnerCircle","traceHeader","traceChevron","traceDetailsWrapper","traceField","traceFieldLabel","flexShrink","traceReference","success","relatedLight","dark","traceStatusSuccess","main","traceStatusError","codeArea","codeAreaPre","default","fontFamily","code3","code1","lineHeight","wordBreak","overflowY","codeAreaPreError","borderLeft","codeAreaFullViewButton","top","right","fullViewDialog","fullViewPaper","fullViewTitle","borderBottom","borderBottomColor","fullViewDialogContent","paddingTop","fullViewPre","counterReset","fullViewLine","counterIncrement","content","userSelect","groupHeader","errorBadge","syntaxToken_key","syntaxToken_string","syntaxToken_number","syntaxToken_boolean","syntaxToken_null","syntaxToken_punctuation","groupListItem","borderBottomWidth","ChatThinking","duration","durSeconds","ChatLoader","size","labels","loading","t10","t11","t12","header","headerTitle","flexGrow","px","headerActions","marginLeft","footerWrapper","footerBox","gridTemplateColumns","columnGap","paddingInline","footerMain","footerSend","paddingBottom","footerInput","letterSpacing","resize","footerSlots","modelSelector","textTransform","modelSelectorLabel","overflow","textOverflow","footerCaption","flex","mx","maxHeight","pt","pb","borderTopWidth","borderTopStyle","borderBottomStyle","sentinel","jumpToLatestWrapper","bottom","zIndex","jumpToLatest","starter","starterItems","starterItemsTwoCol","AUTO_SCROLL_THRESHOLD","ChatContent","forwardRef","ref","autoScroll","scrollRef","topSentinelRef","bottomSentinelRef","isAtTop","setIsAtTop","isAtBottom","setIsAtBottom","scrollTo","scrollHeight","behavior","scrollToBottom","scrollToTop","useImperativeHandle","root","topEl","bottomEl","topObserver","IntersectionObserver","entry","isIntersecting","bottomObserver","entry_0","observe","disconnect","root_0","prevScrollHeight","check","newScrollHeight","growth","scrollTop","clientHeight","mo","MutationObserver","childList","subtree","characterData","t13","t14","palette_0","borderTopColor","t15","t16","t17","t18","t19","t20","pointerEvents","t21","KeyboardArrowDown","t22","Fab","t23","ChatHeader","leftSlot","title","rightSlot","onClose","IconButton","Close","DEFAULT_CAPTION","ChatFooter","value","onChange","onSend","onStop","isGenerating","placeholder","caption","models","selectedModel","onModelChange","startToolbarSlot","endToolbarSlot","modelAnchor","setModelAnchor","trim","canSend","showModelSelector","modelLabel","model","find","m","selectedLabel","hasSlots","Boolean","e","key","shiftKey","preventDefault","handleKeyDown","send","stop","StopCircleOutlined","ArrowUpwardOutlined","sendButton","e_0","target","InputBase","Fragment","Button","e_1","currentTarget","Menu","vertical","horizontal","m_0","MenuItem","FormHelperText","FormControl","DEFAULT_PALETTE","ChatStarter","description","items","onSelect","T0","T1","fullItems","item_0","i","item","ChatActionsContainer","ChatRatingAction","rating","onRatingChange","thumbUp","ThumbUp","ThumbUpOutlined","thumbDown","ThumbDown","ThumbDownOutlined","NUMBER_START_REGEX","tokenizeLine","line","tokens","lastIndex","match","keyPositions","Set","keyRegex","keyMatch","exec","add","tokenRegex","push","startsWith","has","type","test","ChatToolFullViewDialog","open","split","tokenizedLines","CopyButton","DialogTitle","_temp3","DialogContent","Dialog","token","j","ChatToolCodeArea","isError","preRef","isOverflowing","setIsOverflowing","dialogOpen","setDialogOpen","el","checkOverflow","el_0","observer","ResizeObserver","fullViewLabel","fullView","Tooltip","OpenDiagonallyRight","capitalize","str","spaced","replace","charAt","toUpperCase","getToolLabel","tool","status","runningLabel","name","TraceStatusIndicator","CheckCircle","Error","CircularProgress","ChatToolTraceDetails","toolExecutedLabel","toolExecuted","referenceLabel","reference","durationLabel","statusLabel","inputArgumentsLabel","inputArguments","outputLabel","output","McpTool","mt","mb","ChatToolTrace","expanded","onExpandedChange","isRunning","ArrowRight","transform","Collapse","useController","setter","_value","_setter","ChatToolGroup","tools","_setExpanded","expandedTools","onToolExpandedChange","_setExpandedTools","_expanded","_expandedTools","setExpanded","setExpandedTools","filter","numErrors","bb0","runningTools","nonRunningTools","toolsUsedLabel","toolsUsed","errorLabel","pr","isExpanded","id","ChevronRight","t24","t25","tool_0","t_1","t","t_0"],"mappings":"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"}