@copilotkit/react-ui 1.8.0-next.6 → 1.8.0-next.8

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 (121) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/{chunk-FBYETUFL.mjs → chunk-5M7ODWKH.mjs} +6 -12
  3. package/dist/chunk-5M7ODWKH.mjs.map +1 -0
  4. package/dist/{chunk-GBXUOB6L.mjs → chunk-7BXD65QV.mjs} +3 -3
  5. package/dist/{chunk-6H7IQRIU.mjs → chunk-DKYAA4DM.mjs} +2 -2
  6. package/dist/{chunk-DFHFPZQD.mjs → chunk-FGVMRZ5D.mjs} +9 -16
  7. package/dist/chunk-FGVMRZ5D.mjs.map +1 -0
  8. package/dist/{chunk-Z6YOBQUJ.mjs → chunk-HGA4N4ME.mjs} +8 -13
  9. package/dist/chunk-HGA4N4ME.mjs.map +1 -0
  10. package/dist/{chunk-FFNESJSG.mjs → chunk-N5QWMFFT.mjs} +2 -2
  11. package/dist/{chunk-YC4NBUGE.mjs → chunk-NRA3CFEE.mjs} +3 -3
  12. package/dist/chunk-NRA3CFEE.mjs.map +1 -0
  13. package/dist/{chunk-CGVOCLHN.mjs → chunk-P7S3E5UW.mjs} +2 -2
  14. package/dist/{chunk-OTPAZXVR.mjs → chunk-Q5V6S67N.mjs} +17 -6
  15. package/dist/chunk-Q5V6S67N.mjs.map +1 -0
  16. package/dist/{chunk-LYHZXHTJ.mjs → chunk-SNLHKLW3.mjs} +2 -2
  17. package/dist/{chunk-5JY5QJ2W.mjs → chunk-UN2E3HCK.mjs} +9 -3
  18. package/dist/chunk-UN2E3HCK.mjs.map +1 -0
  19. package/dist/{chunk-QS7UFQFD.mjs → chunk-Y5RNSFAD.mjs} +3 -3
  20. package/dist/{chunk-VC4NO5QZ.mjs → chunk-YOEL33HG.mjs} +2 -2
  21. package/dist/{chunk-GJME6MK4.mjs → chunk-ZY25LVYR.mjs} +2 -2
  22. package/dist/components/chat/Button.js.map +1 -1
  23. package/dist/components/chat/Button.mjs +2 -2
  24. package/dist/components/chat/Chat.d.ts +2 -11
  25. package/dist/components/chat/Chat.js +67 -76
  26. package/dist/components/chat/Chat.js.map +1 -1
  27. package/dist/components/chat/Chat.mjs +6 -7
  28. package/dist/components/chat/ChatContext.d.ts +15 -0
  29. package/dist/components/chat/ChatContext.js +67 -1
  30. package/dist/components/chat/ChatContext.js.map +1 -1
  31. package/dist/components/chat/ChatContext.mjs +1 -1
  32. package/dist/components/chat/Header.js +18 -7
  33. package/dist/components/chat/Header.js.map +1 -1
  34. package/dist/components/chat/Header.mjs +5 -5
  35. package/dist/components/chat/Input.js.map +1 -1
  36. package/dist/components/chat/Input.mjs +2 -2
  37. package/dist/components/chat/Messages.js.map +1 -1
  38. package/dist/components/chat/Messages.mjs +2 -2
  39. package/dist/components/chat/Modal.d.ts +1 -1
  40. package/dist/components/chat/Modal.js +92 -94
  41. package/dist/components/chat/Modal.js.map +1 -1
  42. package/dist/components/chat/Modal.mjs +13 -14
  43. package/dist/components/chat/Popup.js +94 -96
  44. package/dist/components/chat/Popup.js.map +1 -1
  45. package/dist/components/chat/Popup.mjs +14 -15
  46. package/dist/components/chat/Sidebar.js +94 -96
  47. package/dist/components/chat/Sidebar.js.map +1 -1
  48. package/dist/components/chat/Sidebar.mjs +14 -15
  49. package/dist/components/chat/Window.js.map +1 -1
  50. package/dist/components/chat/Window.mjs +2 -2
  51. package/dist/components/chat/index.d.ts +1 -1
  52. package/dist/components/chat/index.js +96 -98
  53. package/dist/components/chat/index.js.map +1 -1
  54. package/dist/components/chat/index.mjs +17 -18
  55. package/dist/components/chat/messages/AssistantMessage.js +4 -67
  56. package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
  57. package/dist/components/chat/messages/AssistantMessage.mjs +2 -2
  58. package/dist/components/chat/props.d.ts +1 -5
  59. package/dist/components/chat/props.js.map +1 -1
  60. package/dist/components/dev-console/console.js +18 -7
  61. package/dist/components/dev-console/console.js.map +1 -1
  62. package/dist/components/dev-console/console.mjs +3 -3
  63. package/dist/components/dev-console/icons.js +16 -5
  64. package/dist/components/dev-console/icons.js.map +1 -1
  65. package/dist/components/dev-console/icons.mjs +1 -1
  66. package/dist/components/dev-console/index.js +18 -7
  67. package/dist/components/dev-console/index.js.map +1 -1
  68. package/dist/components/dev-console/index.mjs +3 -3
  69. package/dist/components/help-modal/index.js +2 -2
  70. package/dist/components/help-modal/index.js.map +1 -1
  71. package/dist/components/help-modal/index.mjs +1 -1
  72. package/dist/components/help-modal/modal.js +2 -2
  73. package/dist/components/help-modal/modal.js.map +1 -1
  74. package/dist/components/help-modal/modal.mjs +1 -1
  75. package/dist/components/index.d.ts +1 -1
  76. package/dist/components/index.js +96 -98
  77. package/dist/components/index.js.map +1 -1
  78. package/dist/components/index.mjs +17 -18
  79. package/dist/index.css +39 -34
  80. package/dist/index.css.map +1 -1
  81. package/dist/index.d.ts +1 -1
  82. package/dist/index.js +96 -98
  83. package/dist/index.js.map +1 -1
  84. package/dist/index.mjs +18 -19
  85. package/dist/types/css.d.ts +2 -0
  86. package/dist/types/css.js.map +1 -1
  87. package/package.json +4 -4
  88. package/src/components/chat/Chat.tsx +0 -16
  89. package/src/components/chat/ChatContext.tsx +25 -0
  90. package/src/components/chat/Modal.tsx +0 -6
  91. package/src/components/chat/messages/AssistantMessage.tsx +4 -5
  92. package/src/components/chat/props.ts +0 -5
  93. package/src/components/dev-console/icons.tsx +9 -2
  94. package/src/components/help-modal/modal.tsx +2 -2
  95. package/src/css/colors.css +3 -0
  96. package/src/css/console.css +44 -9
  97. package/src/styles.css +0 -1
  98. package/src/types/css.ts +2 -0
  99. package/dist/chunk-5JY5QJ2W.mjs.map +0 -1
  100. package/dist/chunk-DFHFPZQD.mjs.map +0 -1
  101. package/dist/chunk-FBYETUFL.mjs.map +0 -1
  102. package/dist/chunk-OTPAZXVR.mjs.map +0 -1
  103. package/dist/chunk-UZTZXMYS.mjs +0 -18
  104. package/dist/chunk-UZTZXMYS.mjs.map +0 -1
  105. package/dist/chunk-YC4NBUGE.mjs.map +0 -1
  106. package/dist/chunk-Z6YOBQUJ.mjs.map +0 -1
  107. package/dist/components/chat/Response.d.ts +0 -7
  108. package/dist/components/chat/Response.js +0 -64
  109. package/dist/components/chat/Response.js.map +0 -1
  110. package/dist/components/chat/Response.mjs +0 -10
  111. package/dist/components/chat/Response.mjs.map +0 -1
  112. package/src/components/chat/Response.tsx +0 -12
  113. package/src/css/response.css +0 -26
  114. /package/dist/{chunk-GBXUOB6L.mjs.map → chunk-7BXD65QV.mjs.map} +0 -0
  115. /package/dist/{chunk-6H7IQRIU.mjs.map → chunk-DKYAA4DM.mjs.map} +0 -0
  116. /package/dist/{chunk-FFNESJSG.mjs.map → chunk-N5QWMFFT.mjs.map} +0 -0
  117. /package/dist/{chunk-CGVOCLHN.mjs.map → chunk-P7S3E5UW.mjs.map} +0 -0
  118. /package/dist/{chunk-LYHZXHTJ.mjs.map → chunk-SNLHKLW3.mjs.map} +0 -0
  119. /package/dist/{chunk-QS7UFQFD.mjs.map → chunk-Y5RNSFAD.mjs.map} +0 -0
  120. /package/dist/{chunk-VC4NO5QZ.mjs.map → chunk-YOEL33HG.mjs.map} +0 -0
  121. /package/dist/{chunk-GJME6MK4.mjs.map → chunk-ZY25LVYR.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/chat/Messages.tsx","../../../src/components/chat/ChatContext.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Message, ResultMessage, TextMessage, Role } from \"@copilotkit/runtime-client-gql\";\nimport { useLangGraphInterruptRender } from \"@copilotkit/react-core\";\n\nexport const Messages = ({\n messages,\n inProgress,\n children,\n RenderTextMessage,\n RenderActionExecutionMessage,\n RenderAgentStateMessage,\n RenderResultMessage,\n AssistantMessage,\n UserMessage,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n}: MessagesProps) => {\n const context = useChatContext();\n const initialMessages = useMemo(\n () => makeInitialMessages(context.labels.initial),\n [context.labels.initial],\n );\n\n messages = [...initialMessages, ...messages];\n\n const actionResults: Record<string, string> = {};\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i].isActionExecutionMessage()) {\n const id = messages[i].id;\n const resultMessage: ResultMessage | undefined = messages.find(\n (message) => message.isResultMessage() && message.actionExecutionId === id,\n ) as ResultMessage | undefined;\n\n if (resultMessage) {\n actionResults[id] = ResultMessage.decodeResult(resultMessage.result || \"\");\n }\n }\n }\n\n const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);\n\n const interrupt = useLangGraphInterruptRender();\n\n return (\n <div className=\"copilotKitMessages\" ref={messagesContainerRef}>\n <div className=\"copilotKitMessagesContainer\">\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n\n if (message.isTextMessage()) {\n return (\n <RenderTextMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n onRegenerate={onRegenerate}\n onCopy={onCopy}\n onThumbsUp={onThumbsUp}\n onThumbsDown={onThumbsDown}\n />\n );\n } else if (message.isActionExecutionMessage()) {\n return (\n <RenderActionExecutionMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n actionResult={actionResults[message.id]}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isAgentStateMessage()) {\n return (\n <RenderAgentStateMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isResultMessage()) {\n return (\n <RenderResultMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n }\n })}\n {interrupt}\n </div>\n <footer className=\"copilotKitMessagesFooter\" ref={messagesEndRef}>\n {children}\n </footer>\n </div>\n );\n};\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = [];\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial);\n } else {\n initialArray.push(initial);\n }\n }\n\n return initialArray.map(\n (message) =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n }),\n );\n}\nexport function useScrollToBottom(messages: any[]) {\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const messagesContainerRef = useRef<HTMLDivElement | null>(null);\n const isProgrammaticScrollRef = useRef(false);\n const isUserScrollUpRef = useRef(false);\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n isProgrammaticScrollRef.current = true;\n messagesEndRef.current.scrollIntoView({\n behavior: \"auto\",\n });\n }\n };\n\n const handleScroll = () => {\n if (isProgrammaticScrollRef.current) {\n isProgrammaticScrollRef.current = false;\n return;\n }\n\n if (messagesContainerRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;\n isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;\n }\n };\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (container) {\n container.addEventListener(\"scroll\", handleScroll);\n }\n return () => {\n if (container) {\n container.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (!container) {\n return;\n }\n\n const mutationObserver = new MutationObserver(() => {\n if (!isUserScrollUpRef.current) {\n scrollToBottom();\n }\n });\n\n mutationObserver.observe(container, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n return () => {\n mutationObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n isUserScrollUpRef.current = false;\n scrollToBottom();\n }, [messages.filter((m) => m.isTextMessage() && m.role === Role.User).length]);\n\n return { messagesEndRef, messagesContainerRef };\n}\n","import React, { useMemo, useState } from \"react\";\nimport * as DefaultIcons from \"./Icons\";\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode;\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode;\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode;\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode;\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode;\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode;\n\n /**\n * The icons to use for push to talk.\n * @default <PushToTalkIcon />\n */\n\n pushToTalkIcon?: React.ReactNode;\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[];\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string;\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string;\n\n /**\n * The message to display when an error occurs.\n * @default \"❌ An error occurred. Please try again.\"\n */\n error?: string;\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string;\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string;\n\n /**\n * The label for the copy button.\n * @default \"Copy to clipboard\"\n */\n copyToClipboard?: string;\n\n /**\n * The label for the thumbs up button.\n * @default \"Thumbs up\"\n */\n thumbsUp?: string;\n\n /**\n * The label for the thumbs down button.\n * @default \"Thumbs down\"\n */\n thumbsDown?: string;\n\n /**\n * The text to display when content is copied.\n * @default \"Copied!\"\n */\n copied?: string;\n}\n\ninterface ChatContext {\n labels: Required<CopilotChatLabels>;\n icons: Required<CopilotChatIcons>;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContext = React.createContext<ChatContext | undefined>(undefined);\n\nexport function useChatContext(): ChatContext {\n const context = React.useContext(ChatContext);\n if (context === undefined) {\n throw new Error(\n \"Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?\",\n );\n }\n return context;\n}\n\ninterface ChatContextProps {\n // temperature?: number;\n // instructions?: string;\n // maxFeedback?: number;\n labels?: CopilotChatLabels;\n icons?: CopilotChatIcons;\n children?: React.ReactNode;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContextProvider = ({\n // temperature,\n // instructions,\n // maxFeedback,\n labels,\n icons,\n children,\n open,\n setOpen,\n}: ChatContextProps) => {\n const memoizedLabels = useMemo(\n () => ({\n ...{\n initial: \"\",\n title: \"CopilotKit\",\n placeholder: \"Type a message...\",\n error: \"❌ An error occurred. Please try again.\",\n stopGenerating: \"Stop generating\",\n regenerateResponse: \"Regenerate response\",\n copyToClipboard: \"Copy to clipboard\",\n thumbsUp: \"Thumbs up\",\n thumbsDown: \"Thumbs down\",\n copied: \"Copied!\",\n },\n ...labels,\n }),\n [labels],\n );\n\n const memoizedIcons = useMemo(\n () => ({\n ...{\n openIcon: DefaultIcons.OpenIcon,\n closeIcon: DefaultIcons.CloseIcon,\n headerCloseIcon: DefaultIcons.HeaderCloseIcon,\n sendIcon: DefaultIcons.SendIcon,\n activityIcon: DefaultIcons.ActivityIcon,\n spinnerIcon: DefaultIcons.SpinnerIcon,\n stopIcon: DefaultIcons.StopIcon,\n regenerateIcon: DefaultIcons.RegenerateIcon,\n pushToTalkIcon: DefaultIcons.MicrophoneIcon,\n },\n ...icons,\n }),\n [icons],\n );\n\n const context = useMemo(\n () => ({\n labels: memoizedLabels,\n icons: memoizedIcons,\n open,\n setOpen,\n }),\n [memoizedLabels, memoizedIcons, open, setOpen],\n );\n\n return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n};\n"],"mappings":"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","names":["import_react","React","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../../src/components/chat/Messages.tsx","../../../src/components/chat/ChatContext.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Message, ResultMessage, TextMessage, Role } from \"@copilotkit/runtime-client-gql\";\nimport { useLangGraphInterruptRender } from \"@copilotkit/react-core\";\n\nexport const Messages = ({\n messages,\n inProgress,\n children,\n RenderTextMessage,\n RenderActionExecutionMessage,\n RenderAgentStateMessage,\n RenderResultMessage,\n AssistantMessage,\n UserMessage,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n}: MessagesProps) => {\n const context = useChatContext();\n const initialMessages = useMemo(\n () => makeInitialMessages(context.labels.initial),\n [context.labels.initial],\n );\n\n messages = [...initialMessages, ...messages];\n\n const actionResults: Record<string, string> = {};\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i].isActionExecutionMessage()) {\n const id = messages[i].id;\n const resultMessage: ResultMessage | undefined = messages.find(\n (message) => message.isResultMessage() && message.actionExecutionId === id,\n ) as ResultMessage | undefined;\n\n if (resultMessage) {\n actionResults[id] = ResultMessage.decodeResult(resultMessage.result || \"\");\n }\n }\n }\n\n const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);\n\n const interrupt = useLangGraphInterruptRender();\n\n return (\n <div className=\"copilotKitMessages\" ref={messagesContainerRef}>\n <div className=\"copilotKitMessagesContainer\">\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n\n if (message.isTextMessage()) {\n return (\n <RenderTextMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n onRegenerate={onRegenerate}\n onCopy={onCopy}\n onThumbsUp={onThumbsUp}\n onThumbsDown={onThumbsDown}\n />\n );\n } else if (message.isActionExecutionMessage()) {\n return (\n <RenderActionExecutionMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n actionResult={actionResults[message.id]}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isAgentStateMessage()) {\n return (\n <RenderAgentStateMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isResultMessage()) {\n return (\n <RenderResultMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n }\n })}\n {interrupt}\n </div>\n <footer className=\"copilotKitMessagesFooter\" ref={messagesEndRef}>\n {children}\n </footer>\n </div>\n );\n};\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = [];\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial);\n } else {\n initialArray.push(initial);\n }\n }\n\n return initialArray.map(\n (message) =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n }),\n );\n}\nexport function useScrollToBottom(messages: any[]) {\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const messagesContainerRef = useRef<HTMLDivElement | null>(null);\n const isProgrammaticScrollRef = useRef(false);\n const isUserScrollUpRef = useRef(false);\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n isProgrammaticScrollRef.current = true;\n messagesEndRef.current.scrollIntoView({\n behavior: \"auto\",\n });\n }\n };\n\n const handleScroll = () => {\n if (isProgrammaticScrollRef.current) {\n isProgrammaticScrollRef.current = false;\n return;\n }\n\n if (messagesContainerRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;\n isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;\n }\n };\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (container) {\n container.addEventListener(\"scroll\", handleScroll);\n }\n return () => {\n if (container) {\n container.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (!container) {\n return;\n }\n\n const mutationObserver = new MutationObserver(() => {\n if (!isUserScrollUpRef.current) {\n scrollToBottom();\n }\n });\n\n mutationObserver.observe(container, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n return () => {\n mutationObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n isUserScrollUpRef.current = false;\n scrollToBottom();\n }, [messages.filter((m) => m.isTextMessage() && m.role === Role.User).length]);\n\n return { messagesEndRef, messagesContainerRef };\n}\n","import React, { useMemo, useState } from \"react\";\nimport * as DefaultIcons from \"./Icons\";\nimport { ThumbsDownIcon, ThumbsUpIcon } from \"./Icons\";\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode;\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode;\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode;\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode;\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode;\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode;\n\n /**\n * The icons to use for push to talk.\n * @default <PushToTalkIcon />\n */\n\n pushToTalkIcon?: React.ReactNode;\n\n /**\n * The icons to use for copy assistant response\n * @default <CopyIcon />\n */\n\n copyIcon?: React.ReactNode;\n\n /**\n * The icon to use for thumbs up/response approval.\n * @default <ThumbsUpIcon />\n */\n\n thumbsUpIcon?: React.ReactNode;\n\n /**\n * The icon to use for thumbs down/response rejection.\n * @default <ThumbsDownIcon />\n */\n\n thumbsDownIcon?: React.ReactNode;\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[];\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string;\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string;\n\n /**\n * The message to display when an error occurs.\n * @default \"❌ An error occurred. Please try again.\"\n */\n error?: string;\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string;\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string;\n\n /**\n * The label for the copy button.\n * @default \"Copy to clipboard\"\n */\n copyToClipboard?: string;\n\n /**\n * The label for the thumbs up button.\n * @default \"Thumbs up\"\n */\n thumbsUp?: string;\n\n /**\n * The label for the thumbs down button.\n * @default \"Thumbs down\"\n */\n thumbsDown?: string;\n\n /**\n * The text to display when content is copied.\n * @default \"Copied!\"\n */\n copied?: string;\n}\n\ninterface ChatContext {\n labels: Required<CopilotChatLabels>;\n icons: Required<CopilotChatIcons>;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContext = React.createContext<ChatContext | undefined>(undefined);\n\nexport function useChatContext(): ChatContext {\n const context = React.useContext(ChatContext);\n if (context === undefined) {\n throw new Error(\n \"Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?\",\n );\n }\n return context;\n}\n\ninterface ChatContextProps {\n // temperature?: number;\n // instructions?: string;\n // maxFeedback?: number;\n labels?: CopilotChatLabels;\n icons?: CopilotChatIcons;\n children?: React.ReactNode;\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nexport const ChatContextProvider = ({\n // temperature,\n // instructions,\n // maxFeedback,\n labels,\n icons,\n children,\n open,\n setOpen,\n}: ChatContextProps) => {\n const memoizedLabels = useMemo(\n () => ({\n ...{\n initial: \"\",\n title: \"CopilotKit\",\n placeholder: \"Type a message...\",\n error: \"❌ An error occurred. Please try again.\",\n stopGenerating: \"Stop generating\",\n regenerateResponse: \"Regenerate response\",\n copyToClipboard: \"Copy to clipboard\",\n thumbsUp: \"Thumbs up\",\n thumbsDown: \"Thumbs down\",\n copied: \"Copied!\",\n },\n ...labels,\n }),\n [labels],\n );\n\n const memoizedIcons = useMemo(\n () => ({\n ...{\n openIcon: DefaultIcons.OpenIcon,\n closeIcon: DefaultIcons.CloseIcon,\n headerCloseIcon: DefaultIcons.HeaderCloseIcon,\n sendIcon: DefaultIcons.SendIcon,\n activityIcon: DefaultIcons.ActivityIcon,\n spinnerIcon: DefaultIcons.SpinnerIcon,\n stopIcon: DefaultIcons.StopIcon,\n regenerateIcon: DefaultIcons.RegenerateIcon,\n pushToTalkIcon: DefaultIcons.MicrophoneIcon,\n copyIcon: DefaultIcons.CopyIcon,\n thumbsUpIcon: DefaultIcons.ThumbsUpIcon,\n thumbsDownIcon: DefaultIcons.ThumbsDownIcon,\n },\n ...icons,\n }),\n [icons],\n );\n\n const context = useMemo(\n () => ({\n labels: memoizedLabels,\n icons: memoizedIcons,\n open,\n setOpen,\n }),\n [memoizedLabels, memoizedIcons, open, setOpen],\n );\n\n return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n};\n"],"mappings":"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","names":["import_react","React","import_jsx_runtime"]}
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Messages,
3
3
  useScrollToBottom
4
- } from "../../chunk-GJME6MK4.mjs";
5
- import "../../chunk-5JY5QJ2W.mjs";
4
+ } from "../../chunk-ZY25LVYR.mjs";
5
+ import "../../chunk-UN2E3HCK.mjs";
6
6
  import "../../chunk-ORSMX3SE.mjs";
7
7
  import "../../chunk-MRXNTQOX.mjs";
8
8
  export {
@@ -46,6 +46,6 @@ interface CopilotModalProps extends CopilotChatProps {
46
46
  */
47
47
  Header?: React__default.ComponentType<HeaderProps>;
48
48
  }
49
- declare const CopilotModal: ({ instructions, defaultOpen, clickOutsideToClose, hitEscapeToClose, onSetOpen, onSubmitMessage, onStopGeneration, onReloadMessages, shortcut, icons, labels, makeSystemMessage, showResponseButton, onInProgress, Window, Button, Header, Messages, Input, ResponseButton, AssistantMessage, UserMessage, className, children, }: CopilotModalProps) => react_jsx_runtime.JSX.Element;
49
+ declare const CopilotModal: ({ instructions, defaultOpen, clickOutsideToClose, hitEscapeToClose, onSetOpen, onSubmitMessage, onStopGeneration, onReloadMessages, shortcut, icons, labels, makeSystemMessage, onInProgress, Window, Button, Header, Messages, Input, AssistantMessage, UserMessage, className, children, }: CopilotModalProps) => react_jsx_runtime.JSX.Element;
50
50
 
51
51
  export { CopilotModal, CopilotModalProps };
@@ -360,7 +360,10 @@ var ChatContextProvider = ({
360
360
  spinnerIcon: SpinnerIcon,
361
361
  stopIcon: StopIcon,
362
362
  regenerateIcon: RegenerateIcon,
363
- pushToTalkIcon: MicrophoneIcon
363
+ pushToTalkIcon: MicrophoneIcon,
364
+ copyIcon: CopyIcon,
365
+ thumbsUpIcon: ThumbsUpIcon,
366
+ thumbsDownIcon: ThumbsDownIcon
364
367
  }), icons),
365
368
  [icons]
366
369
  );
@@ -675,13 +678,24 @@ var ExclamationMarkIcon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
675
678
  ) }) })
676
679
  }
677
680
  );
678
- var ChevronDownIcon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { width: "7px", height: "4px", viewBox: "0 0 7 4", version: "1.1", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Group", fill: "#000000", fillRule: "nonzero", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
679
- "path",
681
+ var ChevronDownIcon = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
682
+ "svg",
680
683
  {
681
- d: "M3.71690723,3.90271086 C3.59268176,4.03242971 3.39143629,4.03242971 3.26721082,3.90271086 L0.0853966595,0.57605615 C-0.0314221035,0.444981627 -0.0279751448,0.240725043 0.0931934622,0.114040675 C0.214362069,-0.0126436935 0.409725445,-0.0162475626 0.535093061,0.105888951 L3.49205902,3.19746006 L6.44902499,0.105888951 C6.52834574,0.0168884389 6.64780588,-0.0197473458 6.7605411,0.0103538404 C6.87327633,0.0404550266 6.96130636,0.132492308 6.99009696,0.250359396 C7.01888756,0.368226483 6.98384687,0.493124608 6.89872139,0.57605615 L3.71690723,3.90271086 Z",
682
- id: "Path"
684
+ width: "7px",
685
+ height: "4px",
686
+ viewBox: "0 0 7 4",
687
+ version: "1.1",
688
+ xmlns: "http://www.w3.org/2000/svg",
689
+ fill: "currentColor",
690
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Group", fill: "currentColor", fillRule: "nonzero", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
691
+ "path",
692
+ {
693
+ d: "M3.71690723,3.90271086 C3.59268176,4.03242971 3.39143629,4.03242971 3.26721082,3.90271086 L0.0853966595,0.57605615 C-0.0314221035,0.444981627 -0.0279751448,0.240725043 0.0931934622,0.114040675 C0.214362069,-0.0126436935 0.409725445,-0.0162475626 0.535093061,0.105888951 L3.49205902,3.19746006 L6.44902499,0.105888951 C6.52834574,0.0168884389 6.64780588,-0.0197473458 6.7605411,0.0103538404 C6.87327633,0.0404550266 6.96130636,0.132492308 6.99009696,0.250359396 C7.01888756,0.368226483 6.98384687,0.493124608 6.89872139,0.57605615 L3.71690723,3.90271086 Z",
694
+ id: "Path"
695
+ }
696
+ ) }) })
683
697
  }
684
- ) }) }) });
698
+ );
685
699
  var CheckIcon2 = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
686
700
  "svg",
687
701
  {
@@ -764,11 +778,11 @@ function CopilotKitHelpModal() {
764
778
  right: "-120px",
765
779
  width: "380px"
766
780
  },
767
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "bg-white rounded-lg shadow-xl w-full p-4 flex-col relative", children: [
781
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "copilotKitHelpModal rounded-lg shadow-xl w-full p-4 flex-col relative", children: [
768
782
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
769
783
  "button",
770
784
  {
771
- className: "absolute text-gray-400 hover:text-gray-600 focus:outline-none",
785
+ className: "copilotKitHelpModalCloseButton absolute text-gray-400 hover:text-gray-600 focus:outline-none",
772
786
  style: { top: "10px", right: "10px" },
773
787
  onClick: () => setShowHelpModal(false),
774
788
  "aria-label": "Close",
@@ -1427,18 +1441,8 @@ var Input = ({ inProgress, onSend, isVisible = false, onStop }) => {
1427
1441
  ] }) });
1428
1442
  };
1429
1443
 
1430
- // src/components/chat/Response.tsx
1431
- var import_jsx_runtime13 = require("react/jsx-runtime");
1432
- var ResponseButton = ({ onClick, inProgress }) => {
1433
- const context = useChatContext();
1434
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { onClick, className: "copilotKitResponseButton", children: [
1435
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: inProgress ? context.icons.stopIcon : context.icons.regenerateIcon }),
1436
- inProgress ? context.labels.stopGenerating : context.labels.regenerateResponse
1437
- ] });
1438
- };
1439
-
1440
1444
  // src/components/chat/messages/RenderTextMessage.tsx
1441
- var import_jsx_runtime14 = require("react/jsx-runtime");
1445
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1442
1446
  function RenderTextMessage(props) {
1443
1447
  const {
1444
1448
  message,
@@ -1454,7 +1458,7 @@ function RenderTextMessage(props) {
1454
1458
  } = props;
1455
1459
  if (message.isTextMessage()) {
1456
1460
  if (message.role === "user") {
1457
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1461
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1458
1462
  UserMessage2,
1459
1463
  {
1460
1464
  "data-message-role": "user",
@@ -1464,7 +1468,7 @@ function RenderTextMessage(props) {
1464
1468
  index
1465
1469
  );
1466
1470
  } else if (message.role == "assistant") {
1467
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1471
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1468
1472
  AssistantMessage2,
1469
1473
  {
1470
1474
  "data-message-role": "assistant",
@@ -1487,7 +1491,7 @@ function RenderTextMessage(props) {
1487
1491
  // src/components/chat/messages/RenderActionExecutionMessage.tsx
1488
1492
  var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
1489
1493
  var import_react_core6 = require("@copilotkit/react-core");
1490
- var import_jsx_runtime15 = require("react/jsx-runtime");
1494
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1491
1495
  function RenderActionExecutionMessage(props) {
1492
1496
  const { chatComponentsCache } = (0, import_react_core6.useCopilotContext)();
1493
1497
  const { message, inProgress, index, isCurrentMessage, actionResult, AssistantMessage: AssistantMessage2 } = props;
@@ -1496,7 +1500,7 @@ function RenderActionExecutionMessage(props) {
1496
1500
  const render = chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"];
1497
1501
  if (typeof render === "string") {
1498
1502
  if (isCurrentMessage && inProgress) {
1499
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1503
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1500
1504
  AssistantMessage2,
1501
1505
  {
1502
1506
  rawData: message,
@@ -1529,7 +1533,7 @@ function RenderActionExecutionMessage(props) {
1529
1533
  return null;
1530
1534
  }
1531
1535
  if (typeof toRender === "string") {
1532
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1536
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1533
1537
  AssistantMessage2,
1534
1538
  {
1535
1539
  rawData: message,
@@ -1541,7 +1545,7 @@ function RenderActionExecutionMessage(props) {
1541
1545
  index
1542
1546
  );
1543
1547
  } else {
1544
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1548
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1545
1549
  AssistantMessage2,
1546
1550
  {
1547
1551
  rawData: message,
@@ -1555,20 +1559,20 @@ function RenderActionExecutionMessage(props) {
1555
1559
  }
1556
1560
  } catch (e) {
1557
1561
  console.error(`Error executing render function for action ${message.name}: ${e}`);
1558
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1562
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1559
1563
  AssistantMessage2,
1560
1564
  {
1561
1565
  rawData: message,
1562
1566
  "data-message-role": "assistant",
1563
1567
  isLoading: false,
1564
1568
  isGenerating: false,
1565
- subComponent: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
1566
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("b", { children: [
1569
+ subComponent: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
1570
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("b", { children: [
1567
1571
  "\u274C Error executing render function for action ",
1568
1572
  message.name,
1569
1573
  ":"
1570
1574
  ] }),
1571
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("pre", { children: e instanceof Error ? e.message : String(e) })
1575
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("pre", { children: e instanceof Error ? e.message : String(e) })
1572
1576
  ] })
1573
1577
  },
1574
1578
  index
@@ -1578,7 +1582,7 @@ function RenderActionExecutionMessage(props) {
1578
1582
  } else if (!inProgress || !isCurrentMessage) {
1579
1583
  return null;
1580
1584
  } else {
1581
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1585
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1582
1586
  AssistantMessage2,
1583
1587
  {
1584
1588
  rawData: message,
@@ -1593,11 +1597,11 @@ function RenderActionExecutionMessage(props) {
1593
1597
  }
1594
1598
 
1595
1599
  // src/components/chat/messages/RenderResultMessage.tsx
1596
- var import_jsx_runtime16 = require("react/jsx-runtime");
1600
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1597
1601
  function RenderResultMessage(props) {
1598
1602
  const { message, inProgress, index, isCurrentMessage, AssistantMessage: AssistantMessage2 } = props;
1599
1603
  if (message.isResultMessage() && inProgress && isCurrentMessage) {
1600
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1604
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1601
1605
  AssistantMessage2,
1602
1606
  {
1603
1607
  "data-message-role": "assistant",
@@ -1614,7 +1618,7 @@ function RenderResultMessage(props) {
1614
1618
 
1615
1619
  // src/components/chat/messages/RenderAgentStateMessage.tsx
1616
1620
  var import_react_core7 = require("@copilotkit/react-core");
1617
- var import_jsx_runtime17 = require("react/jsx-runtime");
1621
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1618
1622
  function RenderAgentStateMessage(props) {
1619
1623
  const { chatComponentsCache } = (0, import_react_core7.useCopilotContext)();
1620
1624
  const { message, inProgress, index, isCurrentMessage, AssistantMessage: AssistantMessage2 } = props;
@@ -1626,7 +1630,7 @@ function RenderAgentStateMessage(props) {
1626
1630
  if (render) {
1627
1631
  if (typeof render === "string") {
1628
1632
  if (isCurrentMessage && inProgress) {
1629
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1633
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1630
1634
  AssistantMessage2,
1631
1635
  {
1632
1636
  rawData: message,
@@ -1652,7 +1656,7 @@ function RenderAgentStateMessage(props) {
1652
1656
  return null;
1653
1657
  }
1654
1658
  if (!toRender && isCurrentMessage && inProgress) {
1655
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1659
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1656
1660
  AssistantMessage2,
1657
1661
  {
1658
1662
  "data-message-role": "assistant",
@@ -1666,7 +1670,7 @@ function RenderAgentStateMessage(props) {
1666
1670
  return null;
1667
1671
  }
1668
1672
  if (typeof toRender === "string") {
1669
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1673
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1670
1674
  AssistantMessage2,
1671
1675
  {
1672
1676
  rawData: message,
@@ -1678,7 +1682,7 @@ function RenderAgentStateMessage(props) {
1678
1682
  index
1679
1683
  );
1680
1684
  } else {
1681
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1685
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1682
1686
  AssistantMessage2,
1683
1687
  {
1684
1688
  rawData: message,
@@ -1694,7 +1698,7 @@ function RenderAgentStateMessage(props) {
1694
1698
  } else if (!inProgress || !isCurrentMessage) {
1695
1699
  return null;
1696
1700
  } else {
1697
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1701
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1698
1702
  AssistantMessage2,
1699
1703
  {
1700
1704
  rawData: message,
@@ -1739,7 +1743,7 @@ function useCopyToClipboard({ timeout = 2e3 }) {
1739
1743
  }
1740
1744
 
1741
1745
  // src/components/chat/CodeBlock.tsx
1742
- var import_jsx_runtime18 = require("react/jsx-runtime");
1746
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1743
1747
  var programmingLanguages = {
1744
1748
  javascript: ".js",
1745
1749
  python: ".py",
@@ -1802,15 +1806,15 @@ var CodeBlock = (0, import_react10.memo)(({ language, value }) => {
1802
1806
  return;
1803
1807
  copyToClipboard(value);
1804
1808
  };
1805
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "copilotKitCodeBlock", children: [
1806
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "copilotKitCodeBlockToolbar", children: [
1807
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "copilotKitCodeBlockToolbarLanguage", children: language }),
1808
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "copilotKitCodeBlockToolbarButtons", children: [
1809
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: downloadAsFile, children: DownloadIcon }),
1810
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: onCopy, children: isCopied ? CheckIcon : CopyIcon })
1809
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlock", children: [
1810
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlockToolbar", children: [
1811
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "copilotKitCodeBlockToolbarLanguage", children: language }),
1812
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "copilotKitCodeBlockToolbarButtons", children: [
1813
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: downloadAsFile, children: DownloadIcon }),
1814
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { className: "copilotKitCodeBlockToolbarButton", onClick: onCopy, children: isCopied ? CheckIcon : CopyIcon })
1811
1815
  ] })
1812
1816
  ] }),
1813
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1817
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1814
1818
  import_react_syntax_highlighter.Prism,
1815
1819
  {
1816
1820
  language,
@@ -2113,18 +2117,18 @@ var highlightStyle = {
2113
2117
  // src/components/chat/Markdown.tsx
2114
2118
  var import_remark_gfm = __toESM(require("remark-gfm"));
2115
2119
  var import_remark_math = __toESM(require("remark-math"));
2116
- var import_jsx_runtime19 = require("react/jsx-runtime");
2120
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2117
2121
  var MemoizedReactMarkdown = (0, import_react11.memo)(
2118
2122
  import_react_markdown.default,
2119
2123
  (prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className
2120
2124
  );
2121
2125
  var Markdown = ({ content }) => {
2122
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(MemoizedReactMarkdown, { components, remarkPlugins: [import_remark_gfm.default, import_remark_math.default], children: content }) });
2126
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(MemoizedReactMarkdown, { components, remarkPlugins: [import_remark_gfm.default, import_remark_math.default], children: content }) });
2123
2127
  };
2124
2128
  var components = {
2125
2129
  a(_a) {
2126
2130
  var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
2127
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2131
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2128
2132
  "a",
2129
2133
  __spreadProps(__spreadValues({
2130
2134
  style: { color: "blue", textDecoration: "underline" }
@@ -2139,7 +2143,7 @@ var components = {
2139
2143
  var _d = _c, { children, className, inline } = _d, props = __objRest(_d, ["children", "className", "inline"]);
2140
2144
  if (children.length) {
2141
2145
  if (children[0] == "\u258D") {
2142
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2146
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2143
2147
  "span",
2144
2148
  {
2145
2149
  style: {
@@ -2154,9 +2158,9 @@ var components = {
2154
2158
  }
2155
2159
  const match = /language-(\w+)/.exec(className || "");
2156
2160
  if (inline) {
2157
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("code", __spreadProps(__spreadValues({ className }, props), { children }));
2161
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", __spreadProps(__spreadValues({ className }, props), { children }));
2158
2162
  }
2159
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2163
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2160
2164
  CodeBlock,
2161
2165
  __spreadValues({
2162
2166
  language: match && match[1] || "",
@@ -2169,7 +2173,7 @@ var components = {
2169
2173
 
2170
2174
  // src/components/chat/messages/AssistantMessage.tsx
2171
2175
  var import_react12 = require("react");
2172
- var import_jsx_runtime20 = require("react/jsx-runtime");
2176
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2173
2177
  var AssistantMessage = (props) => {
2174
2178
  const { icons, labels } = useChatContext();
2175
2179
  const {
@@ -2210,77 +2214,77 @@ var AssistantMessage = (props) => {
2210
2214
  onThumbsDown(message);
2211
2215
  }
2212
2216
  };
2213
- const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { children: icons.activityIcon });
2214
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
2215
- (message || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
2216
- message && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Markdown, { content: message || "" }),
2217
- isLoading && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(LoadingIcon, {}),
2218
- message && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
2217
+ const LoadingIcon = () => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: icons.activityIcon });
2218
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
2219
+ (message || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "copilotKitMessage copilotKitAssistantMessage", children: [
2220
+ message && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Markdown, { content: message || "" }),
2221
+ isLoading && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(LoadingIcon, {}),
2222
+ message && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2219
2223
  "div",
2220
2224
  {
2221
2225
  className: `copilotKitMessageControls ${isCurrentMessage ? "currentMessage" : ""}`,
2222
2226
  children: [
2223
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2227
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2224
2228
  "button",
2225
2229
  {
2226
2230
  className: "copilotKitMessageControlButton",
2227
2231
  onClick: handleRegenerate,
2228
2232
  "aria-label": labels.regenerateResponse,
2229
2233
  title: labels.regenerateResponse,
2230
- children: RegenerateIcon
2234
+ children: icons.regenerateIcon
2231
2235
  }
2232
2236
  ),
2233
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2237
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2234
2238
  "button",
2235
2239
  {
2236
2240
  className: "copilotKitMessageControlButton",
2237
2241
  onClick: handleCopy,
2238
2242
  "aria-label": labels.copyToClipboard,
2239
2243
  title: labels.copyToClipboard,
2240
- children: copied ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { style: { fontSize: "10px", fontWeight: "bold" }, children: "\u2713" }) : CopyIcon
2244
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { style: { fontSize: "10px", fontWeight: "bold" }, children: "\u2713" }) : icons.copyIcon
2241
2245
  }
2242
2246
  ),
2243
- onThumbsUp && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2247
+ onThumbsUp && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2244
2248
  "button",
2245
2249
  {
2246
2250
  className: "copilotKitMessageControlButton",
2247
2251
  onClick: handleThumbsUp,
2248
2252
  "aria-label": labels.thumbsUp,
2249
2253
  title: labels.thumbsUp,
2250
- children: ThumbsUpIcon
2254
+ children: icons.thumbsUpIcon
2251
2255
  }
2252
2256
  ),
2253
- onThumbsDown && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2257
+ onThumbsDown && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2254
2258
  "button",
2255
2259
  {
2256
2260
  className: "copilotKitMessageControlButton",
2257
2261
  onClick: handleThumbsDown,
2258
2262
  "aria-label": labels.thumbsDown,
2259
2263
  title: labels.thumbsDown,
2260
- children: ThumbsDownIcon
2264
+ children: icons.thumbsDownIcon
2261
2265
  }
2262
2266
  )
2263
2267
  ]
2264
2268
  }
2265
2269
  )
2266
2270
  ] }),
2267
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent })
2271
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { style: { marginBottom: "0.5rem" }, children: subComponent })
2268
2272
  ] });
2269
2273
  };
2270
2274
 
2271
2275
  // src/components/chat/messages/UserMessage.tsx
2272
- var import_jsx_runtime21 = require("react/jsx-runtime");
2276
+ var import_jsx_runtime20 = require("react/jsx-runtime");
2273
2277
  var UserMessage = (props) => {
2274
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: props.message });
2278
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: props.message });
2275
2279
  };
2276
2280
 
2277
2281
  // src/components/chat/Suggestion.tsx
2278
2282
  var import_react_core8 = require("@copilotkit/react-core");
2279
2283
  var import_shared2 = require("@copilotkit/shared");
2280
2284
  var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
2281
- var import_jsx_runtime22 = require("react/jsx-runtime");
2285
+ var import_jsx_runtime21 = require("react/jsx-runtime");
2282
2286
  function Suggestion({ title, message, onClick, partial, className }) {
2283
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2287
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2284
2288
  "button",
2285
2289
  {
2286
2290
  disabled: partial,
@@ -2290,7 +2294,7 @@ function Suggestion({ title, message, onClick, partial, className }) {
2290
2294
  },
2291
2295
  className: className || (partial ? "suggestion loading" : "suggestion"),
2292
2296
  "data-test-id": "suggestion",
2293
- children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: title })
2297
+ children: partial ? SmallSpinnerIcon : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: title })
2294
2298
  }
2295
2299
  );
2296
2300
  }
@@ -2370,12 +2374,11 @@ var import_react_core9 = require("@copilotkit/react-core");
2370
2374
  var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
2371
2375
  var import_shared3 = require("@copilotkit/shared");
2372
2376
  var import_react_core10 = require("@copilotkit/react-core");
2373
- var import_jsx_runtime23 = require("react/jsx-runtime");
2377
+ var import_jsx_runtime22 = require("react/jsx-runtime");
2374
2378
  function CopilotChat({
2375
2379
  instructions,
2376
2380
  onSubmitMessage,
2377
2381
  makeSystemMessage,
2378
- showResponseButton = true,
2379
2382
  onInProgress,
2380
2383
  onStopGeneration,
2381
2384
  onReloadMessages,
@@ -2389,7 +2392,6 @@ function CopilotChat({
2389
2392
  RenderAgentStateMessage: RenderAgentStateMessage2 = RenderAgentStateMessage,
2390
2393
  RenderResultMessage: RenderResultMessage2 = RenderResultMessage,
2391
2394
  Input: Input2 = Input,
2392
- ResponseButton: ResponseButton2 = ResponseButton,
2393
2395
  className,
2394
2396
  icons,
2395
2397
  labels,
@@ -2437,8 +2439,8 @@ function CopilotChat({
2437
2439
  onCopy(message);
2438
2440
  }
2439
2441
  };
2440
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
2441
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2442
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
2443
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2442
2444
  Messages2,
2443
2445
  {
2444
2446
  AssistantMessage: AssistantMessage2,
@@ -2453,7 +2455,7 @@ function CopilotChat({
2453
2455
  onCopy: handleCopy,
2454
2456
  onThumbsUp,
2455
2457
  onThumbsDown,
2456
- children: currentSuggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "suggestions", children: currentSuggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2458
+ children: currentSuggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "suggestions", children: currentSuggestions.map((suggestion, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2457
2459
  Suggestion,
2458
2460
  {
2459
2461
  title: suggestion.title,
@@ -2466,7 +2468,7 @@ function CopilotChat({
2466
2468
  )) })
2467
2469
  }
2468
2470
  ),
2469
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2471
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2470
2472
  Input2,
2471
2473
  {
2472
2474
  inProgress: isLoading,
@@ -2485,10 +2487,10 @@ function WrappedCopilotChat({
2485
2487
  }) {
2486
2488
  const chatContext = import_react13.default.useContext(ChatContext);
2487
2489
  if (!chatContext) {
2488
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ChatContextProvider, { icons, labels, open: true, setOpen: () => {
2489
- }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `copilotKitChat ${className}`, children }) });
2490
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChatContextProvider, { icons, labels, open: true, setOpen: () => {
2491
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `copilotKitChat ${className}`, children }) });
2490
2492
  }
2491
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children });
2493
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jsx_runtime22.Fragment, { children });
2492
2494
  }
2493
2495
  var SUGGESTIONS_DEBOUNCE_TIMEOUT = 1e3;
2494
2496
  var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
@@ -2649,7 +2651,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
2649
2651
  };
2650
2652
 
2651
2653
  // src/components/chat/Modal.tsx
2652
- var import_jsx_runtime24 = require("react/jsx-runtime");
2654
+ var import_jsx_runtime23 = require("react/jsx-runtime");
2653
2655
  var CopilotModal = ({
2654
2656
  instructions,
2655
2657
  defaultOpen = false,
@@ -2663,14 +2665,12 @@ var CopilotModal = ({
2663
2665
  icons,
2664
2666
  labels,
2665
2667
  makeSystemMessage,
2666
- showResponseButton = true,
2667
2668
  onInProgress,
2668
2669
  Window: Window2 = Window,
2669
2670
  Button: Button2 = Button,
2670
2671
  Header: Header2 = Header,
2671
2672
  Messages: Messages2 = Messages,
2672
2673
  Input: Input2 = Input,
2673
- ResponseButton: ResponseButton2 = ResponseButton,
2674
2674
  AssistantMessage: AssistantMessage2 = AssistantMessage,
2675
2675
  UserMessage: UserMessage2 = UserMessage,
2676
2676
  className,
@@ -2681,19 +2681,19 @@ var CopilotModal = ({
2681
2681
  onSetOpen == null ? void 0 : onSetOpen(open);
2682
2682
  setOpenState(open);
2683
2683
  };
2684
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(ChatContextProvider, { icons, labels, open: openState, setOpen, children: [
2684
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(ChatContextProvider, { icons, labels, open: openState, setOpen, children: [
2685
2685
  children,
2686
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className, children: [
2687
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button2, {}),
2688
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2686
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className, children: [
2687
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button2, {}),
2688
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2689
2689
  Window2,
2690
2690
  {
2691
2691
  clickOutsideToClose,
2692
2692
  shortcut,
2693
2693
  hitEscapeToClose,
2694
2694
  children: [
2695
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Header2, {}),
2696
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2695
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Header2, {}),
2696
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2697
2697
  CopilotChat,
2698
2698
  {
2699
2699
  instructions,
@@ -2701,11 +2701,9 @@ var CopilotModal = ({
2701
2701
  onStopGeneration,
2702
2702
  onReloadMessages,
2703
2703
  makeSystemMessage,
2704
- showResponseButton,
2705
2704
  onInProgress,
2706
2705
  Messages: Messages2,
2707
2706
  Input: Input2,
2708
- ResponseButton: ResponseButton2,
2709
2707
  AssistantMessage: AssistantMessage2,
2710
2708
  UserMessage: UserMessage2
2711
2709
  }