@copilotkit/react-ui 1.8.4 → 1.8.5-next.1

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 (69) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/{chunk-6F2ZAK7T.mjs → chunk-4TWPMWD4.mjs} +2 -2
  3. package/dist/{chunk-7RIBDD4K.mjs → chunk-62QMTKMJ.mjs} +22 -7
  4. package/dist/chunk-62QMTKMJ.mjs.map +1 -0
  5. package/dist/{chunk-LGMQR7XG.mjs → chunk-6QV7AIIG.mjs} +2 -2
  6. package/dist/{chunk-7EDMOLGH.mjs → chunk-MYUOPOIL.mjs} +15 -14
  7. package/dist/chunk-MYUOPOIL.mjs.map +1 -0
  8. package/dist/{chunk-XB6QCUPB.mjs → chunk-NMNC4ROZ.mjs} +20 -8
  9. package/dist/chunk-NMNC4ROZ.mjs.map +1 -0
  10. package/dist/{chunk-UWWMAJ7R.mjs → chunk-Q2YY2NX3.mjs} +20 -8
  11. package/dist/chunk-Q2YY2NX3.mjs.map +1 -0
  12. package/dist/{chunk-QTD2KREC.mjs → chunk-U6ISBBRF.mjs} +2 -2
  13. package/dist/{chunk-WEYDZBT7.mjs → chunk-WNC6OCIB.mjs} +16 -4
  14. package/dist/chunk-WNC6OCIB.mjs.map +1 -0
  15. package/dist/components/chat/Chat.d.ts +8 -3
  16. package/dist/components/chat/Chat.js +327 -306
  17. package/dist/components/chat/Chat.js.map +1 -1
  18. package/dist/components/chat/Chat.mjs +5 -5
  19. package/dist/components/chat/Modal.js +327 -306
  20. package/dist/components/chat/Modal.js.map +1 -1
  21. package/dist/components/chat/Modal.mjs +6 -6
  22. package/dist/components/chat/Popup.js +327 -306
  23. package/dist/components/chat/Popup.js.map +1 -1
  24. package/dist/components/chat/Popup.mjs +7 -7
  25. package/dist/components/chat/Sidebar.js +327 -306
  26. package/dist/components/chat/Sidebar.js.map +1 -1
  27. package/dist/components/chat/Sidebar.mjs +7 -7
  28. package/dist/components/chat/index.js +327 -306
  29. package/dist/components/chat/index.js.map +1 -1
  30. package/dist/components/chat/index.mjs +8 -8
  31. package/dist/components/chat/messages/RenderActionExecutionMessage.d.ts +1 -1
  32. package/dist/components/chat/messages/RenderActionExecutionMessage.js +696 -15
  33. package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +1 -1
  34. package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +7 -1
  35. package/dist/components/chat/messages/RenderAgentStateMessage.d.ts +1 -1
  36. package/dist/components/chat/messages/RenderAgentStateMessage.js +693 -12
  37. package/dist/components/chat/messages/RenderAgentStateMessage.js.map +1 -1
  38. package/dist/components/chat/messages/RenderAgentStateMessage.mjs +7 -1
  39. package/dist/components/chat/messages/RenderResultMessage.d.ts +1 -1
  40. package/dist/components/chat/messages/RenderResultMessage.js +685 -4
  41. package/dist/components/chat/messages/RenderResultMessage.js.map +1 -1
  42. package/dist/components/chat/messages/RenderResultMessage.mjs +7 -1
  43. package/dist/components/chat/messages/RenderTextMessage.d.ts +1 -1
  44. package/dist/components/chat/messages/RenderTextMessage.js +695 -8
  45. package/dist/components/chat/messages/RenderTextMessage.js.map +1 -1
  46. package/dist/components/chat/messages/RenderTextMessage.mjs +8 -1
  47. package/dist/components/chat/props.d.ts +4 -4
  48. package/dist/components/chat/props.js.map +1 -1
  49. package/dist/components/index.js +327 -306
  50. package/dist/components/index.js.map +1 -1
  51. package/dist/components/index.mjs +8 -8
  52. package/dist/index.js +327 -306
  53. package/dist/index.js.map +1 -1
  54. package/dist/index.mjs +8 -8
  55. package/package.json +4 -4
  56. package/src/components/chat/Chat.tsx +13 -7
  57. package/src/components/chat/messages/RenderActionExecutionMessage.tsx +6 -2
  58. package/src/components/chat/messages/RenderAgentStateMessage.tsx +6 -2
  59. package/src/components/chat/messages/RenderResultMessage.tsx +6 -2
  60. package/src/components/chat/messages/RenderTextMessage.tsx +8 -4
  61. package/src/components/chat/props.ts +4 -4
  62. package/dist/chunk-7EDMOLGH.mjs.map +0 -1
  63. package/dist/chunk-7RIBDD4K.mjs.map +0 -1
  64. package/dist/chunk-UWWMAJ7R.mjs.map +0 -1
  65. package/dist/chunk-WEYDZBT7.mjs.map +0 -1
  66. package/dist/chunk-XB6QCUPB.mjs.map +0 -1
  67. /package/dist/{chunk-6F2ZAK7T.mjs.map → chunk-4TWPMWD4.mjs.map} +0 -0
  68. /package/dist/{chunk-LGMQR7XG.mjs.map → chunk-6QV7AIIG.mjs.map} +0 -0
  69. /package/dist/{chunk-QTD2KREC.mjs.map → chunk-U6ISBBRF.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # ui
2
2
 
3
+ ## 1.8.5-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - d0e8a1e: - fix: fix duplicate messages on regenerate
8
+ - Updated dependencies [d0e8a1e]
9
+ - @copilotkit/react-core@1.8.5-next.1
10
+ - @copilotkit/runtime-client-gql@1.8.5-next.1
11
+ - @copilotkit/shared@1.8.5-next.1
12
+
13
+ ## 1.8.5-next.0
14
+
15
+ ### Patch Changes
16
+
17
+ - ed5ace7: - fix: for every component that has default, make prop optional
18
+ - @copilotkit/react-core@1.8.5-next.0
19
+ - @copilotkit/runtime-client-gql@1.8.5-next.0
20
+ - @copilotkit/shared@1.8.5-next.0
21
+
3
22
  ## 1.8.4
4
23
 
5
24
  ### Patch Changes
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-YOEL33HG.mjs";
10
10
  import {
11
11
  CopilotChat
12
- } from "./chunk-7EDMOLGH.mjs";
12
+ } from "./chunk-MYUOPOIL.mjs";
13
13
  import {
14
14
  UserMessage
15
15
  } from "./chunk-HEIDCT7I.mjs";
@@ -103,4 +103,4 @@ var CopilotModal = ({
103
103
  export {
104
104
  CopilotModal
105
105
  };
106
- //# sourceMappingURL=chunk-6F2ZAK7T.mjs.map
106
+ //# sourceMappingURL=chunk-4TWPMWD4.mjs.map
@@ -1,13 +1,28 @@
1
+ import {
2
+ UserMessage
3
+ } from "./chunk-HEIDCT7I.mjs";
4
+ import {
5
+ AssistantMessage
6
+ } from "./chunk-5M7ODWKH.mjs";
7
+ import {
8
+ __objRest
9
+ } from "./chunk-MRXNTQOX.mjs";
10
+
1
11
  // src/components/chat/messages/RenderTextMessage.tsx
2
12
  import { jsx } from "react/jsx-runtime";
3
- function RenderTextMessage(props) {
13
+ function RenderTextMessage(_a) {
14
+ var _b = _a, {
15
+ UserMessage: UserMessage2 = UserMessage,
16
+ AssistantMessage: AssistantMessage2 = AssistantMessage
17
+ } = _b, props = __objRest(_b, [
18
+ "UserMessage",
19
+ "AssistantMessage"
20
+ ]);
4
21
  const {
5
22
  message,
6
23
  inProgress,
7
24
  index,
8
25
  isCurrentMessage,
9
- UserMessage,
10
- AssistantMessage,
11
26
  onRegenerate,
12
27
  onCopy,
13
28
  onThumbsUp,
@@ -16,7 +31,7 @@ function RenderTextMessage(props) {
16
31
  if (message.isTextMessage()) {
17
32
  if (message.role === "user") {
18
33
  return /* @__PURE__ */ jsx(
19
- UserMessage,
34
+ UserMessage2,
20
35
  {
21
36
  "data-message-role": "user",
22
37
  message: message.content,
@@ -26,7 +41,7 @@ function RenderTextMessage(props) {
26
41
  );
27
42
  } else if (message.role == "assistant") {
28
43
  return /* @__PURE__ */ jsx(
29
- AssistantMessage,
44
+ AssistantMessage2,
30
45
  {
31
46
  "data-message-role": "assistant",
32
47
  message: message.content,
@@ -34,7 +49,7 @@ function RenderTextMessage(props) {
34
49
  isLoading: inProgress && isCurrentMessage && !message.content,
35
50
  isGenerating: inProgress && isCurrentMessage && !!message.content,
36
51
  isCurrentMessage,
37
- onRegenerate,
52
+ onRegenerate: () => onRegenerate == null ? void 0 : onRegenerate(message.id),
38
53
  onCopy,
39
54
  onThumbsUp,
40
55
  onThumbsDown
@@ -48,4 +63,4 @@ function RenderTextMessage(props) {
48
63
  export {
49
64
  RenderTextMessage
50
65
  };
51
- //# sourceMappingURL=chunk-7RIBDD4K.mjs.map
66
+ //# sourceMappingURL=chunk-62QMTKMJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/messages/RenderTextMessage.tsx"],"sourcesContent":["import { RenderMessageProps } from \"../props\";\nimport { UserMessage as DefaultUserMessage } from \"./UserMessage\";\nimport { AssistantMessage as DefaultAssistantMessage } from \"./AssistantMessage\";\n\nexport function RenderTextMessage({\n UserMessage = DefaultUserMessage,\n AssistantMessage = DefaultAssistantMessage,\n ...props\n}: RenderMessageProps) {\n const {\n message,\n inProgress,\n index,\n isCurrentMessage,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n } = props;\n\n if (message.isTextMessage()) {\n if (message.role === \"user\") {\n return (\n <UserMessage\n key={index}\n data-message-role=\"user\"\n message={message.content}\n rawData={message}\n />\n );\n } else if (message.role == \"assistant\") {\n return (\n <AssistantMessage\n key={index}\n data-message-role=\"assistant\"\n message={message.content}\n rawData={message}\n isLoading={inProgress && isCurrentMessage && !message.content}\n isGenerating={inProgress && isCurrentMessage && !!message.content}\n isCurrentMessage={isCurrentMessage}\n onRegenerate={() => onRegenerate?.(message.id)}\n onCopy={onCopy}\n onThumbsUp={onThumbsUp}\n onThumbsDown={onThumbsDown}\n />\n );\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAuBQ;AAnBD,SAAS,kBAAkB,IAIX;AAJW,eAChC;AAAA,iBAAAA,eAAc;AAAA,IACd,kBAAAC,oBAAmB;AAAA,EANrB,IAIkC,IAG7B,kBAH6B,IAG7B;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,MAAI,QAAQ,cAAc,GAAG;AAC3B,QAAI,QAAQ,SAAS,QAAQ;AAC3B,aACE;AAAA,QAACD;AAAA,QAAA;AAAA,UAEC,qBAAkB;AAAA,UAClB,SAAS,QAAQ;AAAA,UACjB,SAAS;AAAA;AAAA,QAHJ;AAAA,MAIP;AAAA,IAEJ,WAAW,QAAQ,QAAQ,aAAa;AACtC,aACE;AAAA,QAACC;AAAA,QAAA;AAAA,UAEC,qBAAkB;AAAA,UAClB,SAAS,QAAQ;AAAA,UACjB,SAAS;AAAA,UACT,WAAW,cAAc,oBAAoB,CAAC,QAAQ;AAAA,UACtD,cAAc,cAAc,oBAAoB,CAAC,CAAC,QAAQ;AAAA,UAC1D;AAAA,UACA,cAAc,MAAM,6CAAe,QAAQ;AAAA,UAC3C;AAAA,UACA;AAAA,UACA;AAAA;AAAA,QAVK;AAAA,MAWP;AAAA,IAEJ;AAAA,EACF;AACF;","names":["UserMessage","AssistantMessage"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CopilotModal
3
- } from "./chunk-6F2ZAK7T.mjs";
3
+ } from "./chunk-4TWPMWD4.mjs";
4
4
  import {
5
5
  __spreadProps,
6
6
  __spreadValues
@@ -18,4 +18,4 @@ function CopilotPopup(props) {
18
18
  export {
19
19
  CopilotPopup
20
20
  };
21
- //# sourceMappingURL=chunk-LGMQR7XG.mjs.map
21
+ //# sourceMappingURL=chunk-6QV7AIIG.mjs.map
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  RenderResultMessage
3
- } from "./chunk-WEYDZBT7.mjs";
3
+ } from "./chunk-WNC6OCIB.mjs";
4
4
  import {
5
5
  RenderTextMessage
6
- } from "./chunk-7RIBDD4K.mjs";
6
+ } from "./chunk-62QMTKMJ.mjs";
7
7
  import {
8
8
  UserMessage
9
9
  } from "./chunk-HEIDCT7I.mjs";
10
- import {
11
- AssistantMessage
12
- } from "./chunk-5M7ODWKH.mjs";
13
10
  import {
14
11
  RenderActionExecutionMessage
15
- } from "./chunk-XB6QCUPB.mjs";
12
+ } from "./chunk-NMNC4ROZ.mjs";
16
13
  import {
17
14
  RenderAgentStateMessage
18
- } from "./chunk-UWWMAJ7R.mjs";
15
+ } from "./chunk-Q2YY2NX3.mjs";
16
+ import {
17
+ AssistantMessage
18
+ } from "./chunk-5M7ODWKH.mjs";
19
19
  import {
20
20
  Suggestion,
21
21
  reloadSuggestions
@@ -100,11 +100,11 @@ function CopilotChat({
100
100
  );
101
101
  const chatContext = React.useContext(ChatContext);
102
102
  const isVisible = chatContext ? chatContext.open : true;
103
- const handleRegenerate = () => {
103
+ const handleRegenerate = (messageId) => {
104
104
  if (onRegenerate) {
105
- onRegenerate();
105
+ onRegenerate(messageId);
106
106
  }
107
- reloadMessages();
107
+ reloadMessages(messageId);
108
108
  };
109
109
  const handleCopy = (message) => {
110
110
  if (onCopy) {
@@ -296,7 +296,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
296
296
  defaultStopGeneration();
297
297
  }
298
298
  }
299
- function reloadMessages() {
299
+ function reloadMessages(messageId) {
300
300
  if (onReloadMessages) {
301
301
  onReloadMessages({
302
302
  messages,
@@ -306,10 +306,11 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
306
306
  restartCurrentAgent,
307
307
  stopCurrentAgent,
308
308
  runCurrentAgent,
309
- setCurrentAgentState
309
+ setCurrentAgentState,
310
+ messageId
310
311
  });
311
312
  } else {
312
- defaultReloadMessages();
313
+ defaultReloadMessages(messageId);
313
314
  }
314
315
  }
315
316
  return {
@@ -327,4 +328,4 @@ export {
327
328
  WrappedCopilotChat,
328
329
  useCopilotChatLogic
329
330
  };
330
- //# sourceMappingURL=chunk-7EDMOLGH.mjs.map
331
+ //# sourceMappingURL=chunk-MYUOPOIL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Chat.tsx"],"sourcesContent":["/**\n * <br/>\n * <img src=\"/images/CopilotChat.gif\" width=\"500\" />\n *\n * A chatbot panel component for the CopilotKit framework. The component allows for a high degree\n * of customization through various props and custom CSS.\n *\n * ## Install Dependencies\n *\n * This component is part of the [@copilotkit/react-ui](https://npmjs.com/package/@copilotkit/react-ui) package.\n *\n * ```shell npm2yarn \\\"@copilotkit/react-ui\"\\\n * npm install @copilotkit/react-core @copilotkit/react-ui\n * ```\n *\n * ## Usage\n *\n * ```tsx\n * import { CopilotChat } from \"@copilotkit/react-ui\";\n * import \"@copilotkit/react-ui/styles.css\";\n *\n * <CopilotChat\n * labels={{\n * title: \"Your Assistant\",\n * initial: \"Hi! 👋 How can I assist you today?\",\n * }}\n * />\n * ```\n *\n * ### Look & Feel\n *\n * By default, CopilotKit components do not have any styles. You can import CopilotKit's stylesheet at the root of your project:\n * ```tsx title=\"YourRootComponent.tsx\"\n * ...\n * import \"@copilotkit/react-ui/styles.css\"; // [!code highlight]\n *\n * export function YourRootComponent() {\n * return (\n * <CopilotKit>\n * ...\n * </CopilotKit>\n * );\n * }\n * ```\n * For more information about how to customize the styles, check out the [Customize Look & Feel](/guides/custom-look-and-feel/customize-built-in-ui-components) guide.\n */\n\nimport {\n ChatContext,\n ChatContextProvider,\n CopilotChatIcons,\n CopilotChatLabels,\n} from \"./ChatContext\";\nimport { Messages as DefaultMessages } from \"./Messages\";\nimport { Input as DefaultInput } from \"./Input\";\nimport { RenderTextMessage as DefaultRenderTextMessage } from \"./messages/RenderTextMessage\";\nimport { RenderActionExecutionMessage as DefaultRenderActionExecutionMessage } from \"./messages/RenderActionExecutionMessage\";\nimport { RenderResultMessage as DefaultRenderResultMessage } from \"./messages/RenderResultMessage\";\nimport { RenderAgentStateMessage as DefaultRenderAgentStateMessage } from \"./messages/RenderAgentStateMessage\";\nimport { AssistantMessage as DefaultAssistantMessage } from \"./messages/AssistantMessage\";\nimport { UserMessage as DefaultUserMessage } from \"./messages/UserMessage\";\nimport { Suggestion } from \"./Suggestion\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport {\n SystemMessageFunction,\n useCopilotChat,\n useCopilotContext,\n useCopilotMessagesContext,\n} from \"@copilotkit/react-core\";\nimport { reloadSuggestions } from \"./Suggestion\";\nimport { CopilotChatSuggestion } from \"../../types/suggestions\";\nimport { Message, Role, TextMessage } from \"@copilotkit/runtime-client-gql\";\nimport { randomId } from \"@copilotkit/shared\";\nimport {\n AssistantMessageProps,\n InputProps,\n MessagesProps,\n RenderMessageProps,\n UserMessageProps,\n} from \"./props\";\n\nimport { HintFunction, runAgent, stopAgent } from \"@copilotkit/react-core\";\n\n/**\n * Props for CopilotChat component.\n */\nexport interface CopilotChatProps {\n /**\n * Custom instructions to be added to the system message. Use this property to\n * provide additional context or guidance to the language model, influencing\n * its responses. These instructions can include specific directions,\n * preferences, or criteria that the model should consider when generating\n * its output, thereby tailoring the conversation more precisely to the\n * user's needs or the application's requirements.\n */\n instructions?: string;\n\n /**\n * A callback that gets called when the in progress state changes.\n */\n onInProgress?: (inProgress: boolean) => void;\n\n /**\n * A callback that gets called when a new message it submitted.\n */\n onSubmitMessage?: (message: string) => void | Promise<void>;\n\n /**\n * A custom stop generation function.\n */\n onStopGeneration?: OnStopGeneration;\n\n /**\n * A custom reload messages function.\n */\n onReloadMessages?: OnReloadMessages;\n\n /**\n * A callback function to regenerate the assistant's response\n */\n onRegenerate?: (messageId: string) => void;\n\n /**\n * A callback function when the message is copied\n */\n onCopy?: (message: string) => void;\n\n /**\n * A callback function for thumbs up feedback\n */\n onThumbsUp?: (message: string) => void;\n\n /**\n * A callback function for thumbs down feedback\n */\n onThumbsDown?: (message: string) => void;\n\n /**\n * Icons can be used to set custom icons for the chat window.\n */\n icons?: CopilotChatIcons;\n\n /**\n * Labels can be used to set custom labels for the chat window.\n */\n labels?: CopilotChatLabels;\n\n /**\n * A function that takes in context string and instructions and returns\n * the system message to include in the chat request.\n * Use this to completely override the system message, when providing\n * instructions is not enough.\n */\n makeSystemMessage?: SystemMessageFunction;\n\n /**\n * A custom assistant message component to use instead of the default.\n */\n AssistantMessage?: React.ComponentType<AssistantMessageProps>;\n\n /**\n * A custom user message component to use instead of the default.\n */\n UserMessage?: React.ComponentType<UserMessageProps>;\n\n /**\n * A custom Messages component to use instead of the default.\n */\n Messages?: React.ComponentType<MessagesProps>;\n\n /**\n * A custom RenderTextMessage component to use instead of the default.\n */\n RenderTextMessage?: React.ComponentType<RenderMessageProps>;\n\n /**\n * A custom RenderActionExecutionMessage component to use instead of the default.\n */\n RenderActionExecutionMessage?: React.ComponentType<RenderMessageProps>;\n\n /**\n * A custom RenderAgentStateMessage component to use instead of the default.\n */\n RenderAgentStateMessage?: React.ComponentType<RenderMessageProps>;\n\n /**\n * A custom RenderResultMessage component to use instead of the default.\n */\n RenderResultMessage?: React.ComponentType<RenderMessageProps>;\n\n /**\n * A custom Input component to use instead of the default.\n */\n Input?: React.ComponentType<InputProps>;\n\n /**\n * A class name to apply to the root element.\n */\n className?: string;\n\n /**\n * Children to render.\n */\n children?: React.ReactNode;\n}\n\ninterface OnStopGenerationArguments {\n /**\n * The name of the currently executing agent.\n */\n currentAgentName: string | undefined;\n\n /**\n * The messages in the chat.\n */\n messages: Message[];\n\n /**\n * Set the messages in the chat.\n */\n setMessages: (messages: Message[]) => void;\n\n /**\n * Stop chat generation.\n */\n stopGeneration: () => void;\n\n /**\n * Restart the currently executing agent.\n */\n restartCurrentAgent: () => void;\n\n /**\n * Stop the currently executing agent.\n */\n stopCurrentAgent: () => void;\n\n /**\n * Run the currently executing agent.\n */\n runCurrentAgent: (hint?: HintFunction) => Promise<void>;\n\n /**\n * Set the state of the currently executing agent.\n */\n setCurrentAgentState: (state: any) => void;\n}\n\nexport type OnReloadMessagesArguments = OnStopGenerationArguments & {\n /**\n * The message on which \"regenerate\" was pressed\n */\n messageId: string;\n};\n\nexport type OnStopGeneration = (args: OnStopGenerationArguments) => void;\n\nexport type OnReloadMessages = (args: OnReloadMessagesArguments) => void;\n\nexport function CopilotChat({\n instructions,\n onSubmitMessage,\n makeSystemMessage,\n onInProgress,\n onStopGeneration,\n onReloadMessages,\n onRegenerate,\n onCopy,\n onThumbsUp,\n onThumbsDown,\n Messages = DefaultMessages,\n RenderTextMessage = DefaultRenderTextMessage,\n RenderActionExecutionMessage = DefaultRenderActionExecutionMessage,\n RenderAgentStateMessage = DefaultRenderAgentStateMessage,\n RenderResultMessage = DefaultRenderResultMessage,\n Input = DefaultInput,\n className,\n icons,\n labels,\n AssistantMessage = DefaultAssistantMessage,\n UserMessage = DefaultUserMessage,\n}: CopilotChatProps) {\n const { additionalInstructions, setChatInstructions } = useCopilotContext();\n\n useEffect(() => {\n if (!additionalInstructions?.length) {\n setChatInstructions(instructions || \"\");\n return;\n }\n\n /*\n Will result in a prompt like:\n\n You are a helpful assistant. \n Additionally, follow these instructions:\n - Do not answer questions about the weather.\n - Do not answer questions about the stock market.\"\n */\n const combinedAdditionalInstructions = [\n instructions,\n \"Additionally, follow these instructions:\",\n ...additionalInstructions.map((instruction) => `- ${instruction}`),\n ];\n\n console.log(\"combinedAdditionalInstructions\", combinedAdditionalInstructions);\n\n setChatInstructions(combinedAdditionalInstructions.join(\"\\n\") || \"\");\n }, [instructions, additionalInstructions]);\n\n const {\n visibleMessages,\n isLoading,\n currentSuggestions,\n sendMessage,\n stopGeneration,\n reloadMessages,\n } = useCopilotChatLogic(\n makeSystemMessage,\n onInProgress,\n onSubmitMessage,\n onStopGeneration,\n onReloadMessages,\n );\n\n const chatContext = React.useContext(ChatContext);\n const isVisible = chatContext ? chatContext.open : true;\n\n const handleRegenerate = (messageId: string) => {\n if (onRegenerate) {\n onRegenerate(messageId);\n }\n\n reloadMessages(messageId);\n };\n\n const handleCopy = (message: string) => {\n if (onCopy) {\n onCopy(message);\n }\n };\n\n return (\n <WrappedCopilotChat icons={icons} labels={labels} className={className}>\n <Messages\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n RenderTextMessage={RenderTextMessage}\n RenderActionExecutionMessage={RenderActionExecutionMessage}\n RenderAgentStateMessage={RenderAgentStateMessage}\n RenderResultMessage={RenderResultMessage}\n messages={visibleMessages}\n inProgress={isLoading}\n onRegenerate={handleRegenerate}\n onCopy={handleCopy}\n onThumbsUp={onThumbsUp}\n onThumbsDown={onThumbsDown}\n >\n {currentSuggestions.length > 0 && (\n <div className=\"suggestions\">\n {currentSuggestions.map((suggestion, index) => (\n <Suggestion\n key={index}\n title={suggestion.title}\n message={suggestion.message}\n partial={suggestion.partial}\n className={suggestion.className}\n onClick={(message) => sendMessage(message)}\n />\n ))}\n </div>\n )}\n </Messages>\n <Input\n inProgress={isLoading}\n onSend={sendMessage}\n isVisible={isVisible}\n onStop={stopGeneration}\n />\n </WrappedCopilotChat>\n );\n}\n\nexport function WrappedCopilotChat({\n children,\n icons,\n labels,\n className,\n}: {\n children: React.ReactNode;\n icons?: CopilotChatIcons;\n labels?: CopilotChatLabels;\n className?: string;\n}) {\n const chatContext = React.useContext(ChatContext);\n if (!chatContext) {\n return (\n <ChatContextProvider icons={icons} labels={labels} open={true} setOpen={() => {}}>\n <div className={`copilotKitChat ${className}`}>{children}</div>\n </ChatContextProvider>\n );\n }\n return <>{children}</>;\n}\n\nconst SUGGESTIONS_DEBOUNCE_TIMEOUT = 1000;\n\nexport const useCopilotChatLogic = (\n makeSystemMessage?: SystemMessageFunction,\n onInProgress?: (isLoading: boolean) => void,\n onSubmitMessage?: (messageContent: string) => Promise<void> | void,\n onStopGeneration?: OnStopGeneration,\n onReloadMessages?: OnReloadMessages,\n) => {\n const {\n visibleMessages,\n appendMessage,\n reloadMessages: defaultReloadMessages,\n stopGeneration: defaultStopGeneration,\n runChatCompletion,\n isLoading,\n } = useCopilotChat({\n id: randomId(),\n makeSystemMessage,\n });\n\n const [currentSuggestions, setCurrentSuggestions] = useState<CopilotChatSuggestion[]>([]);\n const suggestionsAbortControllerRef = useRef<AbortController | null>(null);\n const debounceTimerRef = useRef<any>();\n\n const abortSuggestions = () => {\n suggestionsAbortControllerRef.current?.abort();\n suggestionsAbortControllerRef.current = null;\n };\n\n const generalContext = useCopilotContext();\n const messagesContext = useCopilotMessagesContext();\n const context = { ...generalContext, ...messagesContext };\n\n useEffect(() => {\n onInProgress?.(isLoading);\n\n abortSuggestions();\n\n debounceTimerRef.current = setTimeout(\n () => {\n if (!isLoading && Object.keys(context.chatSuggestionConfiguration).length !== 0) {\n suggestionsAbortControllerRef.current = new AbortController();\n reloadSuggestions(\n context,\n context.chatSuggestionConfiguration,\n setCurrentSuggestions,\n suggestionsAbortControllerRef,\n );\n }\n },\n currentSuggestions.length == 0 ? 0 : SUGGESTIONS_DEBOUNCE_TIMEOUT,\n );\n\n return () => {\n clearTimeout(debounceTimerRef.current);\n };\n }, [\n isLoading,\n context.chatSuggestionConfiguration,\n // hackish way to trigger suggestions reload on reset, but better than moving suggestions to the\n // global context\n visibleMessages.length == 0,\n ]);\n\n const sendMessage = async (messageContent: string) => {\n abortSuggestions();\n setCurrentSuggestions([]);\n\n const message: Message = new TextMessage({\n content: messageContent,\n role: Role.User,\n });\n\n if (onSubmitMessage) {\n try {\n await onSubmitMessage(messageContent);\n } catch (error) {\n console.error(\"Error in onSubmitMessage:\", error);\n }\n }\n // this needs to happen after onSubmitMessage, because it will trigger submission\n // of the message to the endpoint. Some users depend on performing some actions\n // before the message is submitted.\n appendMessage(message);\n\n return message;\n };\n\n const messages = visibleMessages;\n const { setMessages } = messagesContext;\n const currentAgentName = generalContext.agentSession?.agentName;\n const restartCurrentAgent = async (hint?: HintFunction) => {\n if (generalContext.agentSession) {\n generalContext.setAgentSession({\n ...generalContext.agentSession,\n nodeName: undefined,\n threadId: undefined,\n });\n generalContext.setCoagentStates((prevAgentStates) => {\n return {\n ...prevAgentStates,\n [generalContext.agentSession!.agentName]: {\n ...prevAgentStates[generalContext.agentSession!.agentName],\n threadId: undefined,\n nodeName: undefined,\n runId: undefined,\n },\n };\n });\n }\n };\n const runCurrentAgent = async (hint?: HintFunction) => {\n if (generalContext.agentSession) {\n await runAgent(\n generalContext.agentSession.agentName,\n context,\n appendMessage,\n runChatCompletion,\n hint,\n );\n }\n };\n const stopCurrentAgent = () => {\n if (generalContext.agentSession) {\n stopAgent(generalContext.agentSession.agentName, context);\n }\n };\n const setCurrentAgentState = (state: any) => {\n if (generalContext.agentSession) {\n generalContext.setCoagentStates((prevAgentStates) => {\n return {\n ...prevAgentStates,\n [generalContext.agentSession!.agentName]: {\n state,\n },\n } as any;\n });\n }\n };\n\n function stopGeneration() {\n if (onStopGeneration) {\n onStopGeneration({\n messages,\n setMessages,\n stopGeneration: defaultStopGeneration,\n currentAgentName,\n restartCurrentAgent,\n stopCurrentAgent,\n runCurrentAgent,\n setCurrentAgentState,\n });\n } else {\n defaultStopGeneration();\n }\n }\n function reloadMessages(messageId: string) {\n if (onReloadMessages) {\n onReloadMessages({\n messages,\n setMessages,\n stopGeneration: defaultStopGeneration,\n currentAgentName,\n restartCurrentAgent,\n stopCurrentAgent,\n runCurrentAgent,\n setCurrentAgentState,\n messageId,\n });\n } else {\n defaultReloadMessages(messageId);\n }\n }\n\n return {\n visibleMessages,\n isLoading,\n currentSuggestions,\n sendMessage,\n stopGeneration,\n reloadMessages,\n };\n};\n"],"mappings":"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","names":["Messages","RenderTextMessage","RenderActionExecutionMessage","RenderAgentStateMessage","RenderResultMessage","Input","AssistantMessage","UserMessage","_a"]}
@@ -1,17 +1,29 @@
1
+ import {
2
+ AssistantMessage
3
+ } from "./chunk-5M7ODWKH.mjs";
4
+ import {
5
+ __objRest
6
+ } from "./chunk-MRXNTQOX.mjs";
7
+
1
8
  // src/components/chat/messages/RenderActionExecutionMessage.tsx
2
9
  import { MessageStatusCode } from "@copilotkit/runtime-client-gql";
3
10
  import { useCopilotContext } from "@copilotkit/react-core";
4
11
  import { jsx, jsxs } from "react/jsx-runtime";
5
- function RenderActionExecutionMessage(props) {
12
+ function RenderActionExecutionMessage(_a) {
13
+ var _b = _a, {
14
+ AssistantMessage: AssistantMessage2 = AssistantMessage
15
+ } = _b, props = __objRest(_b, [
16
+ "AssistantMessage"
17
+ ]);
6
18
  const { chatComponentsCache } = useCopilotContext();
7
- const { message, inProgress, index, isCurrentMessage, actionResult, AssistantMessage } = props;
19
+ const { message, inProgress, index, isCurrentMessage, actionResult } = props;
8
20
  if (message.isActionExecutionMessage()) {
9
21
  if (chatComponentsCache.current !== null && (chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"])) {
10
22
  const render = chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"];
11
23
  if (typeof render === "string") {
12
24
  if (isCurrentMessage && inProgress) {
13
25
  return /* @__PURE__ */ jsx(
14
- AssistantMessage,
26
+ AssistantMessage2,
15
27
  {
16
28
  rawData: message,
17
29
  "data-message-role": "assistant",
@@ -44,7 +56,7 @@ function RenderActionExecutionMessage(props) {
44
56
  }
45
57
  if (typeof toRender === "string") {
46
58
  return /* @__PURE__ */ jsx(
47
- AssistantMessage,
59
+ AssistantMessage2,
48
60
  {
49
61
  rawData: message,
50
62
  "data-message-role": "assistant",
@@ -56,7 +68,7 @@ function RenderActionExecutionMessage(props) {
56
68
  );
57
69
  } else {
58
70
  return /* @__PURE__ */ jsx(
59
- AssistantMessage,
71
+ AssistantMessage2,
60
72
  {
61
73
  rawData: message,
62
74
  "data-message-role": "action-render",
@@ -70,7 +82,7 @@ function RenderActionExecutionMessage(props) {
70
82
  } catch (e) {
71
83
  console.error(`Error executing render function for action ${message.name}: ${e}`);
72
84
  return /* @__PURE__ */ jsx(
73
- AssistantMessage,
85
+ AssistantMessage2,
74
86
  {
75
87
  rawData: message,
76
88
  "data-message-role": "assistant",
@@ -93,7 +105,7 @@ function RenderActionExecutionMessage(props) {
93
105
  return null;
94
106
  } else {
95
107
  return /* @__PURE__ */ jsx(
96
- AssistantMessage,
108
+ AssistantMessage2,
97
109
  {
98
110
  rawData: message,
99
111
  "data-message-role": "assistant",
@@ -109,4 +121,4 @@ function RenderActionExecutionMessage(props) {
109
121
  export {
110
122
  RenderActionExecutionMessage
111
123
  };
112
- //# sourceMappingURL=chunk-XB6QCUPB.mjs.map
124
+ //# sourceMappingURL=chunk-NMNC4ROZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/messages/RenderActionExecutionMessage.tsx"],"sourcesContent":["import { MessageStatusCode } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { RenderFunctionStatus, useCopilotContext } from \"@copilotkit/react-core\";\nimport { AssistantMessage as DefaultAssistantMessage } from \"./AssistantMessage\";\n\nexport function RenderActionExecutionMessage({\n AssistantMessage = DefaultAssistantMessage,\n ...props\n}: RenderMessageProps) {\n const { chatComponentsCache } = useCopilotContext();\n const { message, inProgress, index, isCurrentMessage, actionResult } = props;\n\n if (message.isActionExecutionMessage()) {\n if (\n chatComponentsCache.current !== null &&\n (chatComponentsCache.current.actions[message.name] ||\n chatComponentsCache.current.actions[\"*\"])\n ) {\n const render =\n chatComponentsCache.current.actions[message.name] ||\n chatComponentsCache.current.actions[\"*\"];\n // render a static string\n if (typeof render === \"string\") {\n // when render is static, we show it only when in progress\n if (isCurrentMessage && inProgress) {\n return (\n <AssistantMessage\n rawData={message}\n key={index}\n data-message-role=\"assistant\"\n isLoading={false}\n isGenerating={true}\n message={render}\n />\n );\n }\n // Done - silent by default to avoid a series of \"done\" messages\n else {\n return null;\n }\n }\n // render is a function\n else {\n const args = message.arguments;\n\n let status: RenderFunctionStatus = \"inProgress\";\n\n if (actionResult !== undefined) {\n status = \"complete\";\n } else if (message.status.code !== MessageStatusCode.Pending) {\n status = \"executing\";\n }\n\n try {\n const toRender = render({\n status: status as any,\n args,\n result: actionResult,\n name: message.name,\n });\n // No result and complete: stay silent\n if (!toRender && status === \"complete\") {\n return null;\n }\n if (typeof toRender === \"string\") {\n return (\n <AssistantMessage\n rawData={message}\n data-message-role=\"assistant\"\n key={index}\n isLoading={false}\n isGenerating={false}\n message={toRender}\n />\n );\n } else {\n return (\n <AssistantMessage\n rawData={message}\n data-message-role=\"action-render\"\n key={index}\n isLoading={false}\n isGenerating={false}\n subComponent={toRender}\n />\n );\n }\n } catch (e) {\n console.error(`Error executing render function for action ${message.name}: ${e}`);\n return (\n <AssistantMessage\n rawData={message}\n data-message-role=\"assistant\"\n key={index}\n isLoading={false}\n isGenerating={false}\n subComponent={\n <div className=\"copilotKitMessage copilotKitAssistantMessage\">\n <b>❌ Error executing render function for action {message.name}:</b>\n <pre>{e instanceof Error ? e.message : String(e)}</pre>\n </div>\n }\n />\n );\n }\n }\n }\n // No render function found- show the default message\n else if (!inProgress || !isCurrentMessage) {\n // Done - silent by default to avoid a series of \"done\" messages\n return null;\n } else {\n // In progress\n return (\n <AssistantMessage\n rawData={message}\n key={index}\n data-message-role=\"assistant\"\n isLoading={true}\n isGenerating={true}\n />\n );\n }\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,yBAAyB;AAElC,SAA+B,yBAAyB;AAwB5C,cAwEM,YAxEN;AArBL,SAAS,6BAA6B,IAGtB;AAHsB,eAC3C;AAAA,sBAAAA,oBAAmB;AAAA,EANrB,IAK6C,IAExC,kBAFwC,IAExC;AAAA,IADH;AAAA;AAGA,QAAM,EAAE,oBAAoB,IAAI,kBAAkB;AAClD,QAAM,EAAE,SAAS,YAAY,OAAO,kBAAkB,aAAa,IAAI;AAEvE,MAAI,QAAQ,yBAAyB,GAAG;AACtC,QACE,oBAAoB,YAAY,SAC/B,oBAAoB,QAAQ,QAAQ,QAAQ,IAAI,KAC/C,oBAAoB,QAAQ,QAAQ,GAAG,IACzC;AACA,YAAM,SACJ,oBAAoB,QAAQ,QAAQ,QAAQ,IAAI,KAChD,oBAAoB,QAAQ,QAAQ,GAAG;AAEzC,UAAI,OAAO,WAAW,UAAU;AAE9B,YAAI,oBAAoB,YAAY;AAClC,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cAET,qBAAkB;AAAA,cAClB,WAAW;AAAA,cACX,cAAc;AAAA,cACd,SAAS;AAAA;AAAA,YAJJ;AAAA,UAKP;AAAA,QAEJ,OAEK;AACH,iBAAO;AAAA,QACT;AAAA,MACF,OAEK;AACH,cAAM,OAAO,QAAQ;AAErB,YAAI,SAA+B;AAEnC,YAAI,iBAAiB,QAAW;AAC9B,mBAAS;AAAA,QACX,WAAW,QAAQ,OAAO,SAAS,kBAAkB,SAAS;AAC5D,mBAAS;AAAA,QACX;AAEA,YAAI;AACF,gBAAM,WAAW,OAAO;AAAA,YACtB;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,YACR,MAAM,QAAQ;AAAA,UAChB,CAAC;AAED,cAAI,CAAC,YAAY,WAAW,YAAY;AACtC,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,aAAa,UAAU;AAChC,mBACE;AAAA,cAACA;AAAA,cAAA;AAAA,gBACC,SAAS;AAAA,gBACT,qBAAkB;AAAA,gBAElB,WAAW;AAAA,gBACX,cAAc;AAAA,gBACd,SAAS;AAAA;AAAA,cAHJ;AAAA,YAIP;AAAA,UAEJ,OAAO;AACL,mBACE;AAAA,cAACA;AAAA,cAAA;AAAA,gBACC,SAAS;AAAA,gBACT,qBAAkB;AAAA,gBAElB,WAAW;AAAA,gBACX,cAAc;AAAA,gBACd,cAAc;AAAA;AAAA,cAHT;AAAA,YAIP;AAAA,UAEJ;AAAA,QACF,SAAS,GAAP;AACA,kBAAQ,MAAM,8CAA8C,QAAQ,SAAS,GAAG;AAChF,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,qBAAkB;AAAA,cAElB,WAAW;AAAA,cACX,cAAc;AAAA,cACd,cACE,qBAAC,SAAI,WAAU,gDACb;AAAA,qCAAC,OAAE;AAAA;AAAA,kBAA8C,QAAQ;AAAA,kBAAK;AAAA,mBAAC;AAAA,gBAC/D,oBAAC,SAAK,uBAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,GAAE;AAAA,iBACnD;AAAA;AAAA,YAPG;AAAA,UASP;AAAA,QAEJ;AAAA,MACF;AAAA,IACF,WAES,CAAC,cAAc,CAAC,kBAAkB;AAEzC,aAAO;AAAA,IACT,OAAO;AAEL,aACE;AAAA,QAACA;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,UAET,qBAAkB;AAAA,UAClB,WAAW;AAAA,UACX,cAAc;AAAA;AAAA,QAHT;AAAA,MAIP;AAAA,IAEJ;AAAA,EACF;AACF;","names":["AssistantMessage"]}
@@ -1,9 +1,21 @@
1
+ import {
2
+ AssistantMessage
3
+ } from "./chunk-5M7ODWKH.mjs";
4
+ import {
5
+ __objRest
6
+ } from "./chunk-MRXNTQOX.mjs";
7
+
1
8
  // src/components/chat/messages/RenderAgentStateMessage.tsx
2
9
  import { useCopilotContext } from "@copilotkit/react-core";
3
10
  import { jsx } from "react/jsx-runtime";
4
- function RenderAgentStateMessage(props) {
11
+ function RenderAgentStateMessage(_a) {
12
+ var _b = _a, {
13
+ AssistantMessage: AssistantMessage2 = AssistantMessage
14
+ } = _b, props = __objRest(_b, [
15
+ "AssistantMessage"
16
+ ]);
5
17
  const { chatComponentsCache } = useCopilotContext();
6
- const { message, inProgress, index, isCurrentMessage, AssistantMessage } = props;
18
+ const { message, inProgress, index, isCurrentMessage } = props;
7
19
  if (message.isAgentStateMessage()) {
8
20
  let render;
9
21
  if (chatComponentsCache.current !== null) {
@@ -13,7 +25,7 @@ function RenderAgentStateMessage(props) {
13
25
  if (typeof render === "string") {
14
26
  if (isCurrentMessage && inProgress) {
15
27
  return /* @__PURE__ */ jsx(
16
- AssistantMessage,
28
+ AssistantMessage2,
17
29
  {
18
30
  rawData: message,
19
31
  message: render,
@@ -39,7 +51,7 @@ function RenderAgentStateMessage(props) {
39
51
  }
40
52
  if (!toRender && isCurrentMessage && inProgress) {
41
53
  return /* @__PURE__ */ jsx(
42
- AssistantMessage,
54
+ AssistantMessage2,
43
55
  {
44
56
  "data-message-role": "assistant",
45
57
  rawData: message,
@@ -53,7 +65,7 @@ function RenderAgentStateMessage(props) {
53
65
  }
54
66
  if (typeof toRender === "string") {
55
67
  return /* @__PURE__ */ jsx(
56
- AssistantMessage,
68
+ AssistantMessage2,
57
69
  {
58
70
  rawData: message,
59
71
  message: toRender,
@@ -65,7 +77,7 @@ function RenderAgentStateMessage(props) {
65
77
  );
66
78
  } else {
67
79
  return /* @__PURE__ */ jsx(
68
- AssistantMessage,
80
+ AssistantMessage2,
69
81
  {
70
82
  rawData: message,
71
83
  "data-message-role": "agent-state-render",
@@ -81,7 +93,7 @@ function RenderAgentStateMessage(props) {
81
93
  return null;
82
94
  } else {
83
95
  return /* @__PURE__ */ jsx(
84
- AssistantMessage,
96
+ AssistantMessage2,
85
97
  {
86
98
  rawData: message,
87
99
  isLoading: true,
@@ -97,4 +109,4 @@ function RenderAgentStateMessage(props) {
97
109
  export {
98
110
  RenderAgentStateMessage
99
111
  };
100
- //# sourceMappingURL=chunk-UWWMAJ7R.mjs.map
112
+ //# sourceMappingURL=chunk-Q2YY2NX3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/messages/RenderAgentStateMessage.tsx"],"sourcesContent":["import { RenderMessageProps } from \"../props\";\nimport { CoagentInChatRenderFunction, useCopilotContext } from \"@copilotkit/react-core\";\nimport { AssistantMessage as DefaultAssistantMessage } from \"./AssistantMessage\";\n\nexport function RenderAgentStateMessage({\n AssistantMessage = DefaultAssistantMessage,\n ...props\n}: RenderMessageProps) {\n const { chatComponentsCache } = useCopilotContext();\n const { message, inProgress, index, isCurrentMessage } = props;\n\n if (message.isAgentStateMessage()) {\n let render: string | CoagentInChatRenderFunction | undefined;\n\n if (chatComponentsCache.current !== null) {\n render =\n chatComponentsCache.current.coAgentStateRenders[\n `${message.agentName}-${message.nodeName}`\n ] || chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-global`];\n }\n\n if (render) {\n // render a static string\n if (typeof render === \"string\") {\n // when render is static, we show it only when in progress\n if (isCurrentMessage && inProgress) {\n return (\n <AssistantMessage\n rawData={message}\n message={render}\n data-message-role=\"assistant\"\n key={index}\n isLoading={true}\n isGenerating={true}\n />\n );\n }\n // Done - silent by default to avoid a series of \"done\" messages\n else {\n return null;\n }\n }\n // render is a function\n else {\n const state = message.state;\n\n let status = message.active ? \"inProgress\" : \"complete\";\n\n const toRender = render({\n status: status as any,\n state,\n nodeName: message.nodeName,\n });\n\n // No result and complete: stay silent\n if (!toRender && status === \"complete\") {\n return null;\n }\n\n if (!toRender && isCurrentMessage && inProgress) {\n return (\n <AssistantMessage\n data-message-role=\"assistant\"\n key={index}\n rawData={message}\n isLoading={true}\n isGenerating={true}\n />\n );\n } else if (!toRender) {\n return null;\n }\n\n if (typeof toRender === \"string\") {\n return (\n <AssistantMessage\n rawData={message}\n message={toRender}\n isLoading={true}\n isGenerating={true}\n data-message-role=\"assistant\"\n key={index}\n />\n );\n } else {\n return (\n <AssistantMessage\n rawData={message}\n data-message-role=\"agent-state-render\"\n key={index}\n isLoading={false}\n isGenerating={false}\n subComponent={toRender}\n />\n );\n }\n }\n }\n // No render function found- show the default message\n else if (!inProgress || !isCurrentMessage) {\n // Done - silent by default to avoid a series of \"done\" messages\n return null;\n } else {\n // In progress\n return (\n <AssistantMessage\n rawData={message}\n isLoading={true}\n isGenerating={true}\n data-message-role=\"assistant\"\n key={index}\n />\n );\n }\n }\n}\n"],"mappings":";;;;;;;;AACA,SAAsC,yBAAyB;AA0BnD;AAvBL,SAAS,wBAAwB,IAGjB;AAHiB,eACtC;AAAA,sBAAAA,oBAAmB;AAAA,EALrB,IAIwC,IAEnC,kBAFmC,IAEnC;AAAA,IADH;AAAA;AAGA,QAAM,EAAE,oBAAoB,IAAI,kBAAkB;AAClD,QAAM,EAAE,SAAS,YAAY,OAAO,iBAAiB,IAAI;AAEzD,MAAI,QAAQ,oBAAoB,GAAG;AACjC,QAAI;AAEJ,QAAI,oBAAoB,YAAY,MAAM;AACxC,eACE,oBAAoB,QAAQ,oBAC1B,GAAG,QAAQ,aAAa,QAAQ,UAClC,KAAK,oBAAoB,QAAQ,oBAAoB,GAAG,QAAQ,kBAAkB;AAAA,IACtF;AAEA,QAAI,QAAQ;AAEV,UAAI,OAAO,WAAW,UAAU;AAE9B,YAAI,oBAAoB,YAAY;AAClC,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,SAAS;AAAA,cACT,qBAAkB;AAAA,cAElB,WAAW;AAAA,cACX,cAAc;AAAA;AAAA,YAFT;AAAA,UAGP;AAAA,QAEJ,OAEK;AACH,iBAAO;AAAA,QACT;AAAA,MACF,OAEK;AACH,cAAM,QAAQ,QAAQ;AAEtB,YAAI,SAAS,QAAQ,SAAS,eAAe;AAE7C,cAAM,WAAW,OAAO;AAAA,UACtB;AAAA,UACA;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB,CAAC;AAGD,YAAI,CAAC,YAAY,WAAW,YAAY;AACtC,iBAAO;AAAA,QACT;AAEA,YAAI,CAAC,YAAY,oBAAoB,YAAY;AAC/C,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,qBAAkB;AAAA,cAElB,SAAS;AAAA,cACT,WAAW;AAAA,cACX,cAAc;AAAA;AAAA,YAHT;AAAA,UAIP;AAAA,QAEJ,WAAW,CAAC,UAAU;AACpB,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,aAAa,UAAU;AAChC,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,SAAS;AAAA,cACT,WAAW;AAAA,cACX,cAAc;AAAA,cACd,qBAAkB;AAAA;AAAA,YACb;AAAA,UACP;AAAA,QAEJ,OAAO;AACL,iBACE;AAAA,YAACA;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,qBAAkB;AAAA,cAElB,WAAW;AAAA,cACX,cAAc;AAAA,cACd,cAAc;AAAA;AAAA,YAHT;AAAA,UAIP;AAAA,QAEJ;AAAA,MACF;AAAA,IACF,WAES,CAAC,cAAc,CAAC,kBAAkB;AAEzC,aAAO;AAAA,IACT,OAAO;AAEL,aACE;AAAA,QAACA;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACT,WAAW;AAAA,UACX,cAAc;AAAA,UACd,qBAAkB;AAAA;AAAA,QACb;AAAA,MACP;AAAA,IAEJ;AAAA,EACF;AACF;","names":["AssistantMessage"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CopilotModal
3
- } from "./chunk-6F2ZAK7T.mjs";
3
+ } from "./chunk-4TWPMWD4.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-QTD2KREC.mjs.map
30
+ //# sourceMappingURL=chunk-U6ISBBRF.mjs.map
@@ -1,10 +1,22 @@
1
+ import {
2
+ AssistantMessage
3
+ } from "./chunk-5M7ODWKH.mjs";
4
+ import {
5
+ __objRest
6
+ } from "./chunk-MRXNTQOX.mjs";
7
+
1
8
  // src/components/chat/messages/RenderResultMessage.tsx
2
9
  import { jsx } from "react/jsx-runtime";
3
- function RenderResultMessage(props) {
4
- const { message, inProgress, index, isCurrentMessage, AssistantMessage } = props;
10
+ function RenderResultMessage(_a) {
11
+ var _b = _a, {
12
+ AssistantMessage: AssistantMessage2 = AssistantMessage
13
+ } = _b, props = __objRest(_b, [
14
+ "AssistantMessage"
15
+ ]);
16
+ const { message, inProgress, index, isCurrentMessage } = props;
5
17
  if (message.isResultMessage() && inProgress && isCurrentMessage) {
6
18
  return /* @__PURE__ */ jsx(
7
- AssistantMessage,
19
+ AssistantMessage2,
8
20
  {
9
21
  "data-message-role": "assistant",
10
22
  rawData: message,
@@ -21,4 +33,4 @@ function RenderResultMessage(props) {
21
33
  export {
22
34
  RenderResultMessage
23
35
  };
24
- //# sourceMappingURL=chunk-WEYDZBT7.mjs.map
36
+ //# sourceMappingURL=chunk-WNC6OCIB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/messages/RenderResultMessage.tsx"],"sourcesContent":["import { RenderMessageProps } from \"../props\";\nimport { AssistantMessage as DefaultAssistantMessage } from \"./AssistantMessage\";\n\nexport function RenderResultMessage({\n AssistantMessage = DefaultAssistantMessage,\n ...props\n}: RenderMessageProps) {\n const { message, inProgress, index, isCurrentMessage } = props;\n\n if (message.isResultMessage() && inProgress && isCurrentMessage) {\n return (\n <AssistantMessage\n key={index}\n data-message-role=\"assistant\"\n rawData={message}\n isLoading={true}\n isGenerating={true}\n />\n );\n }\n\n // Avoid 'Nothing was returned from render' React error\n else {\n return null;\n }\n}\n"],"mappings":";;;;;;;;AAWM;AARC,SAAS,oBAAoB,IAGb;AAHa,eAClC;AAAA,sBAAAA,oBAAmB;AAAA,EAJrB,IAGoC,IAE/B,kBAF+B,IAE/B;AAAA,IADH;AAAA;AAGA,QAAM,EAAE,SAAS,YAAY,OAAO,iBAAiB,IAAI;AAEzD,MAAI,QAAQ,gBAAgB,KAAK,cAAc,kBAAkB;AAC/D,WACE;AAAA,MAACA;AAAA,MAAA;AAAA,QAEC,qBAAkB;AAAA,QAClB,SAAS;AAAA,QACT,WAAW;AAAA,QACX,cAAc;AAAA;AAAA,MAJT;AAAA,IAKP;AAAA,EAEJ,OAGK;AACH,WAAO;AAAA,EACT;AACF;","names":["AssistantMessage"]}
@@ -38,7 +38,7 @@ interface CopilotChatProps {
38
38
  /**
39
39
  * A callback function to regenerate the assistant's response
40
40
  */
41
- onRegenerate?: () => void;
41
+ onRegenerate?: (messageId: string) => void;
42
42
  /**
43
43
  * A callback function when the message is copied
44
44
  */
@@ -141,7 +141,12 @@ interface OnStopGenerationArguments {
141
141
  */
142
142
  setCurrentAgentState: (state: any) => void;
143
143
  }
144
- type OnReloadMessagesArguments = OnStopGenerationArguments;
144
+ type OnReloadMessagesArguments = OnStopGenerationArguments & {
145
+ /**
146
+ * The message on which "regenerate" was pressed
147
+ */
148
+ messageId: string;
149
+ };
145
150
  type OnStopGeneration = (args: OnStopGenerationArguments) => void;
146
151
  type OnReloadMessages = (args: OnReloadMessagesArguments) => void;
147
152
  declare function CopilotChat({ instructions, onSubmitMessage, makeSystemMessage, onInProgress, onStopGeneration, onReloadMessages, onRegenerate, onCopy, onThumbsUp, onThumbsDown, Messages, RenderTextMessage, RenderActionExecutionMessage, RenderAgentStateMessage, RenderResultMessage, Input, className, icons, labels, AssistantMessage, UserMessage, }: CopilotChatProps): react_jsx_runtime.JSX.Element;
@@ -157,7 +162,7 @@ declare const useCopilotChatLogic: (makeSystemMessage?: SystemMessageFunction, o
157
162
  currentSuggestions: CopilotChatSuggestion[];
158
163
  sendMessage: (messageContent: string) => Promise<Message>;
159
164
  stopGeneration: () => void;
160
- reloadMessages: () => void;
165
+ reloadMessages: (messageId: string) => void;
161
166
  };
162
167
 
163
168
  export { CopilotChat, CopilotChatProps, OnReloadMessages, OnReloadMessagesArguments, OnStopGeneration, WrappedCopilotChat, useCopilotChatLogic };