@copilotkit/react-ui 1.9.3-next.4 → 1.10.0-next.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 (178) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/{chunk-KENCH7RN.mjs → chunk-B5IFB5YJ.mjs} +1 -1
  3. package/dist/chunk-B5IFB5YJ.mjs.map +1 -0
  4. package/dist/chunk-DBKRAOH7.mjs +34 -0
  5. package/dist/chunk-DBKRAOH7.mjs.map +1 -0
  6. package/dist/{chunk-4HUXYD3B.mjs → chunk-DTRPPNSA.mjs} +2 -2
  7. package/dist/{chunk-YTXEWDNC.mjs → chunk-E6MQUIZW.mjs} +15 -4
  8. package/dist/chunk-E6MQUIZW.mjs.map +1 -0
  9. package/dist/{chunk-L3GZ7TXC.mjs → chunk-GCKKSSBU.mjs} +21 -24
  10. package/dist/chunk-GCKKSSBU.mjs.map +1 -0
  11. package/dist/{chunk-KN2GCKBE.mjs → chunk-GJ3MFNBX.mjs} +6 -6
  12. package/dist/{chunk-32MUWKL3.mjs → chunk-JHUTTP5C.mjs} +21 -17
  13. package/dist/chunk-JHUTTP5C.mjs.map +1 -0
  14. package/dist/{chunk-HKTWKCPS.mjs → chunk-LXCD3K7B.mjs} +127 -92
  15. package/dist/chunk-LXCD3K7B.mjs.map +1 -0
  16. package/dist/{chunk-S5MBUNGN.mjs → chunk-O72ZB5V3.mjs} +4 -4
  17. package/dist/chunk-O72ZB5V3.mjs.map +1 -0
  18. package/dist/{chunk-QGSPTXOV.mjs → chunk-O7KTFUAN.mjs} +2 -2
  19. package/dist/chunk-O7KTFUAN.mjs.map +1 -0
  20. package/dist/chunk-Q2467VHZ.mjs +30 -0
  21. package/dist/chunk-Q2467VHZ.mjs.map +1 -0
  22. package/dist/{chunk-H3EM63WS.mjs → chunk-VLNT34X3.mjs} +2 -2
  23. package/dist/chunk-VVL6JFCJ.mjs +16 -0
  24. package/dist/chunk-VVL6JFCJ.mjs.map +1 -0
  25. package/dist/chunk-WHDNKXMP.mjs +135 -0
  26. package/dist/chunk-WHDNKXMP.mjs.map +1 -0
  27. package/dist/{chunk-ALIBUJML.mjs → chunk-WPVTPQ7X.mjs} +2 -2
  28. package/dist/components/chat/Button.d.ts +1 -1
  29. package/dist/components/chat/Chat.d.ts +119 -28
  30. package/dist/components/chat/Chat.js +298 -658
  31. package/dist/components/chat/Chat.js.map +1 -1
  32. package/dist/components/chat/Chat.mjs +12 -15
  33. package/dist/components/chat/CodeBlock.js.map +1 -1
  34. package/dist/components/chat/CodeBlock.mjs +1 -1
  35. package/dist/components/chat/Header.d.ts +1 -1
  36. package/dist/components/chat/Input.d.ts +1 -1
  37. package/dist/components/chat/Input.js +3 -3
  38. package/dist/components/chat/Input.js.map +1 -1
  39. package/dist/components/chat/Input.mjs +2 -2
  40. package/dist/components/chat/Markdown.js +13 -2
  41. package/dist/components/chat/Markdown.js.map +1 -1
  42. package/dist/components/chat/Markdown.mjs +2 -2
  43. package/dist/components/chat/Messages.d.ts +3 -3
  44. package/dist/components/chat/Messages.js +40 -116
  45. package/dist/components/chat/Messages.js.map +1 -1
  46. package/dist/components/chat/Messages.mjs +1 -1
  47. package/dist/components/chat/Modal.d.ts +7 -2
  48. package/dist/components/chat/Modal.js +308 -668
  49. package/dist/components/chat/Modal.js.map +1 -1
  50. package/dist/components/chat/Modal.mjs +13 -16
  51. package/dist/components/chat/Popup.d.ts +7 -2
  52. package/dist/components/chat/Popup.js +310 -670
  53. package/dist/components/chat/Popup.js.map +1 -1
  54. package/dist/components/chat/Popup.mjs +14 -17
  55. package/dist/components/chat/Sidebar.d.ts +7 -2
  56. package/dist/components/chat/Sidebar.js +312 -672
  57. package/dist/components/chat/Sidebar.js.map +1 -1
  58. package/dist/components/chat/Sidebar.mjs +14 -17
  59. package/dist/components/chat/Suggestion.d.ts +2 -9
  60. package/dist/components/chat/Suggestion.js +6 -96
  61. package/dist/components/chat/Suggestion.js.map +1 -1
  62. package/dist/components/chat/Suggestion.mjs +3 -5
  63. package/dist/components/chat/Suggestions.d.ts +1 -1
  64. package/dist/components/chat/Suggestions.js +4 -3
  65. package/dist/components/chat/Suggestions.js.map +1 -1
  66. package/dist/components/chat/Suggestions.mjs +2 -2
  67. package/dist/components/chat/Window.d.ts +1 -1
  68. package/dist/components/chat/index.d.ts +8 -3
  69. package/dist/components/chat/index.js +316 -676
  70. package/dist/components/chat/index.js.map +1 -1
  71. package/dist/components/chat/index.mjs +18 -21
  72. package/dist/components/chat/messages/AssistantMessage.d.ts +1 -1
  73. package/dist/components/chat/messages/AssistantMessage.js +32 -24
  74. package/dist/components/chat/messages/AssistantMessage.js.map +1 -1
  75. package/dist/components/chat/messages/AssistantMessage.mjs +3 -3
  76. package/dist/components/chat/messages/ImageRenderer.d.ts +12 -0
  77. package/dist/components/chat/messages/ImageRenderer.js +58 -0
  78. package/dist/components/chat/messages/ImageRenderer.js.map +1 -0
  79. package/dist/components/chat/messages/ImageRenderer.mjs +8 -0
  80. package/dist/components/chat/messages/RenderMessage.d.ts +9 -0
  81. package/dist/components/chat/messages/{RenderTextMessage.js → RenderMessage.js} +92 -47
  82. package/dist/components/chat/messages/RenderMessage.js.map +1 -0
  83. package/dist/components/chat/messages/RenderMessage.mjs +16 -0
  84. package/dist/components/chat/messages/UserMessage.d.ts +1 -1
  85. package/dist/components/chat/messages/UserMessage.js +7 -1
  86. package/dist/components/chat/messages/UserMessage.js.map +1 -1
  87. package/dist/components/chat/messages/UserMessage.mjs +1 -1
  88. package/dist/components/chat/props.d.ts +32 -27
  89. package/dist/components/chat/props.js.map +1 -1
  90. package/dist/components/index.d.ts +8 -3
  91. package/dist/components/index.js +316 -676
  92. package/dist/components/index.js.map +1 -1
  93. package/dist/components/index.mjs +18 -21
  94. package/dist/hooks/use-push-to-talk.d.ts +1 -1
  95. package/dist/hooks/use-push-to-talk.js +3 -3
  96. package/dist/hooks/use-push-to-talk.js.map +1 -1
  97. package/dist/hooks/use-push-to-talk.mjs +1 -1
  98. package/dist/index.css +59 -3
  99. package/dist/index.css.map +1 -1
  100. package/dist/index.d.ts +8 -3
  101. package/dist/index.js +322 -682
  102. package/dist/index.js.map +1 -1
  103. package/dist/index.mjs +18 -21
  104. package/dist/types/css.d.ts +3 -0
  105. package/dist/types/css.js.map +1 -1
  106. package/package.json +4 -4
  107. package/src/components/chat/Chat.tsx +193 -105
  108. package/src/components/chat/CodeBlock.tsx +1 -1
  109. package/src/components/chat/Markdown.tsx +12 -2
  110. package/src/components/chat/Messages.tsx +43 -122
  111. package/src/components/chat/Suggestion.tsx +5 -108
  112. package/src/components/chat/Suggestions.tsx +0 -1
  113. package/src/components/chat/index.tsx +1 -1
  114. package/src/components/chat/messages/AssistantMessage.tsx +15 -23
  115. package/src/components/chat/messages/ImageRenderer.tsx +37 -0
  116. package/src/components/chat/messages/{RenderTextMessage.tsx → RenderMessage.tsx} +10 -9
  117. package/src/components/chat/messages/UserMessage.tsx +16 -5
  118. package/src/components/chat/props.ts +36 -28
  119. package/src/css/colors.css +10 -0
  120. package/src/css/markdown.css +8 -0
  121. package/src/css/messages.css +54 -5
  122. package/src/css/suggestions.css +1 -1
  123. package/src/hooks/use-push-to-talk.tsx +6 -5
  124. package/src/styles.css +1 -1
  125. package/src/types/css.ts +3 -0
  126. package/dist/chunk-2II3Q27P.mjs +0 -112
  127. package/dist/chunk-2II3Q27P.mjs.map +0 -1
  128. package/dist/chunk-32MUWKL3.mjs.map +0 -1
  129. package/dist/chunk-53CVDVS5.mjs +0 -127
  130. package/dist/chunk-53CVDVS5.mjs.map +0 -1
  131. package/dist/chunk-B3D7U7TJ.mjs +0 -211
  132. package/dist/chunk-B3D7U7TJ.mjs.map +0 -1
  133. package/dist/chunk-C7OB63U5.mjs +0 -36
  134. package/dist/chunk-C7OB63U5.mjs.map +0 -1
  135. package/dist/chunk-HKTWKCPS.mjs.map +0 -1
  136. package/dist/chunk-HWMFMBJC.mjs +0 -10
  137. package/dist/chunk-HWMFMBJC.mjs.map +0 -1
  138. package/dist/chunk-IMBPSLL4.mjs +0 -104
  139. package/dist/chunk-IMBPSLL4.mjs.map +0 -1
  140. package/dist/chunk-KENCH7RN.mjs.map +0 -1
  141. package/dist/chunk-L3GZ7TXC.mjs.map +0 -1
  142. package/dist/chunk-QGSPTXOV.mjs.map +0 -1
  143. package/dist/chunk-S5MBUNGN.mjs.map +0 -1
  144. package/dist/chunk-ULDQXCED.mjs +0 -78
  145. package/dist/chunk-ULDQXCED.mjs.map +0 -1
  146. package/dist/chunk-YTXEWDNC.mjs.map +0 -1
  147. package/dist/components/chat/messages/RenderActionExecutionMessage.d.ts +0 -9
  148. package/dist/components/chat/messages/RenderActionExecutionMessage.js +0 -869
  149. package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +0 -1
  150. package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +0 -14
  151. package/dist/components/chat/messages/RenderAgentStateMessage.d.ts +0 -9
  152. package/dist/components/chat/messages/RenderAgentStateMessage.js +0 -854
  153. package/dist/components/chat/messages/RenderAgentStateMessage.js.map +0 -1
  154. package/dist/components/chat/messages/RenderAgentStateMessage.mjs +0 -14
  155. package/dist/components/chat/messages/RenderImageMessage.d.ts +0 -9
  156. package/dist/components/chat/messages/RenderImageMessage.js +0 -823
  157. package/dist/components/chat/messages/RenderImageMessage.js.map +0 -1
  158. package/dist/components/chat/messages/RenderImageMessage.mjs +0 -15
  159. package/dist/components/chat/messages/RenderImageMessage.mjs.map +0 -1
  160. package/dist/components/chat/messages/RenderResultMessage.d.ts +0 -9
  161. package/dist/components/chat/messages/RenderResultMessage.js +0 -778
  162. package/dist/components/chat/messages/RenderResultMessage.js.map +0 -1
  163. package/dist/components/chat/messages/RenderResultMessage.mjs +0 -14
  164. package/dist/components/chat/messages/RenderResultMessage.mjs.map +0 -1
  165. package/dist/components/chat/messages/RenderTextMessage.d.ts +0 -9
  166. package/dist/components/chat/messages/RenderTextMessage.js.map +0 -1
  167. package/dist/components/chat/messages/RenderTextMessage.mjs +0 -15
  168. package/dist/components/chat/messages/RenderTextMessage.mjs.map +0 -1
  169. package/src/components/chat/messages/RenderActionExecutionMessage.tsx +0 -127
  170. package/src/components/chat/messages/RenderAgentStateMessage.tsx +0 -116
  171. package/src/components/chat/messages/RenderImageMessage.tsx +0 -64
  172. package/src/components/chat/messages/RenderResultMessage.tsx +0 -26
  173. /package/dist/{chunk-4HUXYD3B.mjs.map → chunk-DTRPPNSA.mjs.map} +0 -0
  174. /package/dist/{chunk-KN2GCKBE.mjs.map → chunk-GJ3MFNBX.mjs.map} +0 -0
  175. /package/dist/{chunk-H3EM63WS.mjs.map → chunk-VLNT34X3.mjs.map} +0 -0
  176. /package/dist/{chunk-ALIBUJML.mjs.map → chunk-WPVTPQ7X.mjs.map} +0 -0
  177. /package/dist/components/chat/messages/{RenderActionExecutionMessage.mjs.map → ImageRenderer.mjs.map} +0 -0
  178. /package/dist/components/chat/messages/{RenderAgentStateMessage.mjs.map → RenderMessage.mjs.map} +0 -0
@@ -0,0 +1,135 @@
1
+ import {
2
+ useChatContext
3
+ } from "./chunk-IEMQ2SQW.mjs";
4
+
5
+ // src/components/chat/Messages.tsx
6
+ import { useEffect, useMemo, useRef } from "react";
7
+ import { useCopilotChat } from "@copilotkit/react-core";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ var Messages = ({
10
+ inProgress,
11
+ children,
12
+ RenderMessage,
13
+ AssistantMessage,
14
+ UserMessage,
15
+ onRegenerate,
16
+ onCopy,
17
+ onThumbsUp,
18
+ onThumbsDown,
19
+ markdownTagRenderers
20
+ }) => {
21
+ const { labels } = useChatContext();
22
+ const { visibleMessages, interrupt } = useCopilotChat();
23
+ const initialMessages = useMemo(() => makeInitialMessages(labels.initial), [labels.initial]);
24
+ const messages = [...initialMessages, ...visibleMessages];
25
+ const { messagesContainerRef, messagesEndRef } = useScrollToBottom(messages);
26
+ return /* @__PURE__ */ jsxs("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
27
+ /* @__PURE__ */ jsxs("div", { className: "copilotKitMessagesContainer", children: [
28
+ messages.map((message, index) => {
29
+ const isCurrentMessage = index === messages.length - 1;
30
+ return /* @__PURE__ */ jsx(
31
+ RenderMessage,
32
+ {
33
+ message,
34
+ inProgress,
35
+ index,
36
+ isCurrentMessage,
37
+ AssistantMessage,
38
+ UserMessage,
39
+ onRegenerate,
40
+ onCopy,
41
+ onThumbsUp,
42
+ onThumbsDown,
43
+ markdownTagRenderers
44
+ },
45
+ index
46
+ );
47
+ }),
48
+ interrupt
49
+ ] }),
50
+ /* @__PURE__ */ jsx("footer", { className: "copilotKitMessagesFooter", ref: messagesEndRef, children })
51
+ ] });
52
+ };
53
+ function makeInitialMessages(initial) {
54
+ if (!initial)
55
+ return [];
56
+ if (Array.isArray(initial)) {
57
+ return initial.map((message) => {
58
+ return {
59
+ id: message,
60
+ role: "assistant",
61
+ content: message
62
+ };
63
+ });
64
+ }
65
+ return [
66
+ {
67
+ id: initial,
68
+ role: "system",
69
+ content: initial
70
+ }
71
+ ];
72
+ }
73
+ function useScrollToBottom(messages) {
74
+ const messagesEndRef = useRef(null);
75
+ const messagesContainerRef = useRef(null);
76
+ const isProgrammaticScrollRef = useRef(false);
77
+ const isUserScrollUpRef = useRef(false);
78
+ const scrollToBottom = () => {
79
+ if (messagesContainerRef.current && messagesEndRef.current) {
80
+ isProgrammaticScrollRef.current = true;
81
+ messagesContainerRef.current.scrollTop = messagesContainerRef.current.scrollHeight;
82
+ }
83
+ };
84
+ const handleScroll = () => {
85
+ if (isProgrammaticScrollRef.current) {
86
+ isProgrammaticScrollRef.current = false;
87
+ return;
88
+ }
89
+ if (messagesContainerRef.current) {
90
+ const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;
91
+ isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;
92
+ }
93
+ };
94
+ useEffect(() => {
95
+ const container = messagesContainerRef.current;
96
+ if (container) {
97
+ container.addEventListener("scroll", handleScroll);
98
+ }
99
+ return () => {
100
+ if (container) {
101
+ container.removeEventListener("scroll", handleScroll);
102
+ }
103
+ };
104
+ }, []);
105
+ useEffect(() => {
106
+ const container = messagesContainerRef.current;
107
+ if (!container) {
108
+ return;
109
+ }
110
+ const mutationObserver = new MutationObserver(() => {
111
+ if (!isUserScrollUpRef.current) {
112
+ scrollToBottom();
113
+ }
114
+ });
115
+ mutationObserver.observe(container, {
116
+ childList: true,
117
+ subtree: true,
118
+ characterData: true
119
+ });
120
+ return () => {
121
+ mutationObserver.disconnect();
122
+ };
123
+ }, []);
124
+ useEffect(() => {
125
+ isUserScrollUpRef.current = false;
126
+ scrollToBottom();
127
+ }, [messages.filter((m) => m.role === "user").length]);
128
+ return { messagesEndRef, messagesContainerRef };
129
+ }
130
+
131
+ export {
132
+ Messages,
133
+ useScrollToBottom
134
+ };
135
+ //# sourceMappingURL=chunk-WHDNKXMP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Messages.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Message, Role } from \"@copilotkit/shared\";\nimport { useCopilotChat } from \"@copilotkit/react-core\";\n\nexport const Messages = ({\n inProgress,\n children,\n RenderMessage,\n AssistantMessage,\n UserMessage,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n markdownTagRenderers,\n}: MessagesProps) => {\n const { labels } = useChatContext();\n const { visibleMessages, interrupt } = useCopilotChat();\n const initialMessages = useMemo(() => makeInitialMessages(labels.initial), [labels.initial]);\n const messages = [...initialMessages, ...visibleMessages];\n const { messagesContainerRef, messagesEndRef } = useScrollToBottom(messages);\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 return (\n <RenderMessage\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 markdownTagRenderers={markdownTagRenderers}\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[] | undefined): Message[] {\n if (!initial) return [];\n\n if (Array.isArray(initial)) {\n return initial.map((message) => {\n return {\n id: message,\n role: \"assistant\",\n content: message,\n };\n });\n }\n\n return [\n {\n id: initial,\n role: \"system\",\n content: initial,\n },\n ];\n}\n\nexport function useScrollToBottom(messages: Message[]) {\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 (messagesContainerRef.current && messagesEndRef.current) {\n isProgrammaticScrollRef.current = true;\n messagesContainerRef.current.scrollTop = messagesContainerRef.current.scrollHeight;\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.role === \"user\").length]);\n\n return { messagesEndRef, messagesContainerRef };\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CopilotModal
3
- } from "./chunk-KN2GCKBE.mjs";
3
+ } from "./chunk-GJ3MFNBX.mjs";
4
4
  import {
5
5
  __spreadProps,
6
6
  __spreadValues
@@ -27,4 +27,4 @@ function CopilotSidebar(props) {
27
27
  export {
28
28
  CopilotSidebar
29
29
  };
30
- //# sourceMappingURL=chunk-ALIBUJML.mjs.map
30
+ //# sourceMappingURL=chunk-WPVTPQ7X.mjs.map
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ButtonProps } from './props.js';
3
- import '@copilotkit/runtime-client-gql';
3
+ import '@copilotkit/shared';
4
4
  import '../../types/suggestions.js';
5
5
  import 'react';
6
6
 
@@ -1,11 +1,26 @@
1
+ import * as _copilotkit_react_core_dist_types_coagent_state from '@copilotkit/react-core/dist/types/coagent-state';
2
+ import * as _copilotkit_react_core_dist_hooks_use_tree from '@copilotkit/react-core/dist/hooks/use-tree';
3
+ import * as _copilotkit_shared from '@copilotkit/shared';
4
+ import { Message } from '@copilotkit/shared';
5
+ import * as _copilotkit_react_core_dist_copilot_context_bd88d30d from '@copilotkit/react-core/dist/copilot-context-bd88d30d';
6
+ import * as _copilotkit_react_core_dist_types_coagent_action from '@copilotkit/react-core/dist/types/coagent-action';
7
+ import * as _copilotkit_react_core from '@copilotkit/react-core';
8
+ import { SuggestionItem, SystemMessageFunction, HintFunction } from '@copilotkit/react-core';
9
+ import * as _copilotkit_runtime_client_gql from '@copilotkit/runtime-client-gql';
1
10
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
11
  import { CopilotChatIcons, CopilotChatLabels } from './ChatContext.js';
3
12
  import React__default from 'react';
4
- import { SystemMessageFunction, HintFunction } from '@copilotkit/react-core';
5
- import { CopilotChatSuggestion } from '../../types/suggestions.js';
6
- import { TextMessage, Message } from '@copilotkit/runtime-client-gql';
7
- import { ComponentsMap, AssistantMessageProps, UserMessageProps, MessagesProps, RenderMessageProps, RenderSuggestionsListProps, InputProps } from './props.js';
13
+ import { ComponentsMap, AssistantMessageProps, UserMessageProps, MessagesProps, RenderMessageProps, RenderSuggestionsListProps, InputProps, ImageRendererProps } from './props.js';
14
+ import '../../types/suggestions.js';
8
15
 
16
+ /**
17
+ * The type of suggestions to use in the chat.
18
+ *
19
+ * `auto` - Suggestions are generated automatically.
20
+ * `manual` - Suggestions are controlled programmatically.
21
+ * `SuggestionItem[]` - Static suggestions array.
22
+ */
23
+ type ChatSuggestions = "auto" | "manual" | SuggestionItem[];
9
24
  /**
10
25
  * Props for CopilotChat component.
11
26
  */
@@ -19,6 +34,24 @@ interface CopilotChatProps {
19
34
  * user's needs or the application's requirements.
20
35
  */
21
36
  instructions?: string;
37
+ /**
38
+ * Controls the behavior of suggestions in the chat interface.
39
+ *
40
+ * `auto` (default) - Suggestions are generated automatically:
41
+ * - When the chat is first opened (empty state)
42
+ * - After each message exchange completes
43
+ * - Uses configuration from `useCopilotChatSuggestions` hooks
44
+ *
45
+ * `manual` - Suggestions are controlled programmatically:
46
+ * - Use `setSuggestions()` to set custom suggestions
47
+ * - Use `generateSuggestions()` to trigger AI generation
48
+ * - Access via `useCopilotChat` hook
49
+ *
50
+ * `SuggestionItem[]` - Static suggestions array:
51
+ * - Always shows the same suggestions
52
+ * - No AI generation involved
53
+ */
54
+ suggestions?: ChatSuggestions;
22
55
  /**
23
56
  * A callback that gets called when the in progress state changes.
24
57
  */
@@ -46,11 +79,11 @@ interface CopilotChatProps {
46
79
  /**
47
80
  * A callback function for thumbs up feedback
48
81
  */
49
- onThumbsUp?: (message: TextMessage) => void;
82
+ onThumbsUp?: (message: Message) => void;
50
83
  /**
51
84
  * A callback function for thumbs down feedback
52
85
  */
53
- onThumbsDown?: (message: TextMessage) => void;
86
+ onThumbsDown?: (message: Message) => void;
54
87
  /**
55
88
  * A list of markdown components to render in assistant message.
56
89
  * Useful when you want to render custom elements in the message (e.g a reference tag element)
@@ -93,25 +126,14 @@ interface CopilotChatProps {
93
126
  */
94
127
  Messages?: React__default.ComponentType<MessagesProps>;
95
128
  /**
96
- * A custom RenderTextMessage component to use instead of the default.
97
- */
98
- RenderTextMessage?: React__default.ComponentType<RenderMessageProps>;
99
- /**
100
- * A custom RenderActionExecutionMessage component to use instead of the default.
101
- */
102
- RenderActionExecutionMessage?: React__default.ComponentType<RenderMessageProps>;
103
- /**
104
- * A custom RenderAgentStateMessage component to use instead of the default.
129
+ * A custom RenderMessage component to use instead of the default.
130
+ *
131
+ * **Warning**: This is a break-glass solution to allow for custom
132
+ * rendering of messages. You are most likely looking to swap out
133
+ * the AssistantMessage and UserMessage components instead which
134
+ * are also props.
105
135
  */
106
- RenderAgentStateMessage?: React__default.ComponentType<RenderMessageProps>;
107
- /**
108
- * A custom RenderResultMessage component to use instead of the default.
109
- */
110
- RenderResultMessage?: React__default.ComponentType<RenderMessageProps>;
111
- /**
112
- * A custom RenderImageMessage component to use instead of the default.
113
- */
114
- RenderImageMessage?: React__default.ComponentType<RenderMessageProps>;
136
+ RenderMessage?: React__default.ComponentType<RenderMessageProps>;
115
137
  /**
116
138
  * A custom suggestions list component to use instead of the default.
117
139
  */
@@ -120,6 +142,10 @@ interface CopilotChatProps {
120
142
  * A custom Input component to use instead of the default.
121
143
  */
122
144
  Input?: React__default.ComponentType<InputProps>;
145
+ /**
146
+ * A custom image rendering component to use instead of the default.
147
+ */
148
+ ImageRenderer?: React__default.ComponentType<ImageRendererProps>;
123
149
  /**
124
150
  * A class name to apply to the root element.
125
151
  */
@@ -176,23 +202,88 @@ type ImageUpload = {
176
202
  contentType: string;
177
203
  bytes: string;
178
204
  };
179
- declare function CopilotChat({ instructions, onSubmitMessage, makeSystemMessage, onInProgress, onStopGeneration, onReloadMessages, onRegenerate, onCopy, onThumbsUp, onThumbsDown, markdownTagRenderers, Messages, RenderTextMessage, RenderActionExecutionMessage, RenderAgentStateMessage, RenderResultMessage, RenderImageMessage, RenderSuggestionsList, Input, className, icons, labels, AssistantMessage, UserMessage, imageUploadsEnabled, inputFileAccept, hideStopButton, }: CopilotChatProps): react_jsx_runtime.JSX.Element;
205
+ declare function CopilotChat({ instructions, suggestions, onSubmitMessage, makeSystemMessage, onInProgress, onStopGeneration, onReloadMessages, onRegenerate, onCopy, onThumbsUp, onThumbsDown, markdownTagRenderers, Messages, RenderMessage, RenderSuggestionsList, Input, className, icons, labels, AssistantMessage, UserMessage, ImageRenderer, imageUploadsEnabled, inputFileAccept, hideStopButton, }: CopilotChatProps): react_jsx_runtime.JSX.Element;
180
206
  declare function WrappedCopilotChat({ children, icons, labels, className, }: {
181
207
  children: React__default.ReactNode;
182
208
  icons?: CopilotChatIcons;
183
209
  labels?: CopilotChatLabels;
184
210
  className?: string;
185
211
  }): react_jsx_runtime.JSX.Element;
186
- declare const useCopilotChatLogic: (makeSystemMessage?: SystemMessageFunction, onInProgress?: (isLoading: boolean) => void, onSubmitMessage?: (messageContent: string) => Promise<void> | void, onStopGeneration?: OnStopGeneration, onReloadMessages?: OnReloadMessages) => {
212
+ declare const useCopilotChatLogic: (chatSuggestions: ChatSuggestions, makeSystemMessage?: SystemMessageFunction, onInProgress?: (isLoading: boolean) => void, onSubmitMessage?: (messageContent: string) => Promise<void> | void, onStopGeneration?: OnStopGeneration, onReloadMessages?: OnReloadMessages) => {
213
+ messages: Message[];
187
214
  visibleMessages: Message[];
188
215
  isLoading: boolean;
189
- currentSuggestions: CopilotChatSuggestion[];
216
+ suggestions: SuggestionItem[];
190
217
  sendMessage: (messageContent: string, imagesToUse?: Array<{
191
218
  contentType: string;
192
219
  bytes: string;
193
220
  }>) => Promise<Message>;
194
221
  stopGeneration: () => void;
195
222
  reloadMessages: (messageId: string) => void;
223
+ resetSuggestions: () => void;
224
+ context: {
225
+ messages: _copilotkit_runtime_client_gql.Message[];
226
+ setMessages: React__default.Dispatch<React__default.SetStateAction<_copilotkit_runtime_client_gql.Message[]>>;
227
+ actions: Record<string, _copilotkit_react_core.FrontendAction<any>>;
228
+ setAction: (id: string, action: _copilotkit_react_core.FrontendAction<any>) => void;
229
+ removeAction: (id: string) => void;
230
+ coAgentStateRenders: Record<string, _copilotkit_react_core_dist_types_coagent_action.CoAgentStateRender<any>>;
231
+ setCoAgentStateRender: (id: string, stateRender: _copilotkit_react_core_dist_types_coagent_action.CoAgentStateRender<any>) => void;
232
+ removeCoAgentStateRender: (id: string) => void;
233
+ chatComponentsCache: React__default.RefObject<_copilotkit_react_core_dist_copilot_context_bd88d30d.j>;
234
+ getFunctionCallHandler: (customEntryPoints?: Record<string, _copilotkit_react_core.FrontendAction<any>>) => _copilotkit_shared.FunctionCallHandler;
235
+ addContext: (context: string, parentId?: string, categories?: string[]) => _copilotkit_react_core_dist_hooks_use_tree.TreeNodeId;
236
+ removeContext: (id: _copilotkit_react_core_dist_hooks_use_tree.TreeNodeId) => void;
237
+ getAllContext: () => _copilotkit_react_core.Tree;
238
+ getContextString: (documents: _copilotkit_react_core.DocumentPointer[], categories: string[]) => string;
239
+ addDocumentContext: (documentPointer: _copilotkit_react_core.DocumentPointer, categories?: string[]) => _copilotkit_react_core_dist_hooks_use_tree.TreeNodeId;
240
+ removeDocumentContext: (documentId: string) => void;
241
+ getDocumentsContext: (categories: string[]) => _copilotkit_react_core.DocumentPointer[];
242
+ isLoading: boolean;
243
+ setIsLoading: React__default.Dispatch<React__default.SetStateAction<boolean>>;
244
+ chatSuggestionConfiguration: {
245
+ [key: string]: _copilotkit_react_core.CopilotChatSuggestionConfiguration;
246
+ };
247
+ addChatSuggestionConfiguration: (id: string, suggestion: _copilotkit_react_core.CopilotChatSuggestionConfiguration) => void;
248
+ removeChatSuggestionConfiguration: (id: string) => void;
249
+ chatInstructions: string;
250
+ setChatInstructions: React__default.Dispatch<React__default.SetStateAction<string>>;
251
+ additionalInstructions?: string[];
252
+ setAdditionalInstructions: React__default.Dispatch<React__default.SetStateAction<string[]>>;
253
+ copilotApiConfig: _copilotkit_react_core.CopilotApiConfig;
254
+ showDevConsole: boolean;
255
+ coagentStates: Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>;
256
+ setCoagentStates: React__default.Dispatch<React__default.SetStateAction<Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>>>;
257
+ coagentStatesRef: React__default.RefObject<Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>>;
258
+ setCoagentStatesWithRef: (value: Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState> | ((prev: Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>) => Record<string, _copilotkit_react_core_dist_types_coagent_state.CoagentState>)) => void;
259
+ agentSession: _copilotkit_react_core_dist_copilot_context_bd88d30d.A | null;
260
+ setAgentSession: React__default.Dispatch<React__default.SetStateAction<_copilotkit_react_core_dist_copilot_context_bd88d30d.A | null>>;
261
+ agentLock: string | null;
262
+ threadId: string;
263
+ setThreadId: React__default.Dispatch<React__default.SetStateAction<string>>;
264
+ runId: string | null;
265
+ setRunId: React__default.Dispatch<React__default.SetStateAction<string | null>>;
266
+ chatAbortControllerRef: React__default.MutableRefObject<AbortController | null>;
267
+ runtimeClient: _copilotkit_runtime_client_gql.CopilotRuntimeClient;
268
+ forwardedParameters?: Partial<Pick<_copilotkit_runtime_client_gql.ForwardedParametersInput, "temperature">>;
269
+ availableAgents: _copilotkit_runtime_client_gql.Agent[];
270
+ authStates_c?: Record<_copilotkit_react_core_dist_copilot_context_bd88d30d.k, _copilotkit_react_core_dist_copilot_context_bd88d30d.f>;
271
+ setAuthStates_c?: React__default.Dispatch<React__default.SetStateAction<Record<_copilotkit_react_core_dist_copilot_context_bd88d30d.k, _copilotkit_react_core_dist_copilot_context_bd88d30d.f>>>;
272
+ authConfig_c?: {
273
+ SignInComponent: React__default.ComponentType<{
274
+ onSignInComplete: (authState: _copilotkit_react_core_dist_copilot_context_bd88d30d.f) => void;
275
+ }>;
276
+ };
277
+ extensions: _copilotkit_runtime_client_gql.ExtensionsInput;
278
+ setExtensions: React__default.Dispatch<React__default.SetStateAction<_copilotkit_runtime_client_gql.ExtensionsInput>>;
279
+ langGraphInterruptAction: _copilotkit_react_core_dist_copilot_context_bd88d30d.L | null;
280
+ setLangGraphInterruptAction: _copilotkit_react_core_dist_copilot_context_bd88d30d.d;
281
+ removeLangGraphInterruptAction: () => void;
282
+ onError?: _copilotkit_shared.CopilotErrorHandler;
283
+ suggestions: SuggestionItem[];
284
+ setSuggestions: React__default.Dispatch<React__default.SetStateAction<SuggestionItem[]>>;
285
+ };
286
+ actions: Record<string, _copilotkit_react_core.FrontendAction<any>>;
196
287
  };
197
288
 
198
- export { CopilotChat, CopilotChatProps, ImageUpload, OnReloadMessages, OnReloadMessagesArguments, OnStopGeneration, WrappedCopilotChat, useCopilotChatLogic };
289
+ export { ChatSuggestions, CopilotChat, CopilotChatProps, ImageUpload, OnReloadMessages, OnReloadMessagesArguments, OnStopGeneration, WrappedCopilotChat, useCopilotChatLogic };