@copilotkit/react-ui 1.3.7-fix-chat-interactions-rerenders.0 → 1.3.8-fix-memoize-chat-ui-context.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 (114) hide show
  1. package/CHANGELOG.md +15 -5
  2. package/dist/{chunk-LGS6B47Q.mjs → chunk-3KBQXU44.mjs} +10 -10
  3. package/dist/{chunk-XSUSSWDS.mjs → chunk-3XAXY2Z3.mjs} +2 -2
  4. package/dist/{chunk-FUCEBN2P.mjs → chunk-47OPG5FM.mjs} +9 -9
  5. package/dist/{chunk-CTPEKUNX.mjs → chunk-4FIGRRFS.mjs} +5 -7
  6. package/dist/chunk-4FIGRRFS.mjs.map +1 -0
  7. package/dist/{chunk-YH2STM73.mjs → chunk-6BL5C56L.mjs} +4 -4
  8. package/dist/chunk-6BL5C56L.mjs.map +1 -0
  9. package/dist/{chunk-GOTHQ665.mjs → chunk-6INMITFA.mjs} +3 -4
  10. package/dist/chunk-6INMITFA.mjs.map +1 -0
  11. package/dist/{chunk-BJPGMY3I.mjs → chunk-CBBFRI3Q.mjs} +19 -8
  12. package/dist/{chunk-BJPGMY3I.mjs.map → chunk-CBBFRI3Q.mjs.map} +1 -1
  13. package/dist/{chunk-GDNJRSD4.mjs → chunk-CPMIEVKK.mjs} +9 -11
  14. package/dist/chunk-CPMIEVKK.mjs.map +1 -0
  15. package/dist/{chunk-HBZPOT37.mjs → chunk-JTINVYPK.mjs} +3 -3
  16. package/dist/{chunk-CPWFYV3U.mjs → chunk-KCAVDFB6.mjs} +2 -2
  17. package/dist/{chunk-YOH25I6N.mjs → chunk-RQNJNK2W.mjs} +2 -2
  18. package/dist/{chunk-QI3OM75G.mjs → chunk-RS6UPR5N.mjs} +2 -2
  19. package/dist/{chunk-5DT3MDBZ.mjs → chunk-S5MBUNGN.mjs} +2 -3
  20. package/dist/{chunk-5DT3MDBZ.mjs.map → chunk-S5MBUNGN.mjs.map} +1 -1
  21. package/dist/{chunk-PJNNEX4L.mjs → chunk-SWADR6EH.mjs} +2 -2
  22. package/dist/{chunk-FLV3J3VX.mjs → chunk-VEC45H6Q.mjs} +2 -2
  23. package/dist/{chunk-MA5B5ELM.mjs → chunk-WYMTXCQU.mjs} +3 -4
  24. package/dist/chunk-WYMTXCQU.mjs.map +1 -0
  25. package/dist/{chunk-FO7Z5LAL.mjs → chunk-YAGE7RCE.mjs} +2 -2
  26. package/dist/{chunk-RF3KLUPD.mjs → chunk-ZABXREBH.mjs} +3 -4
  27. package/dist/chunk-ZABXREBH.mjs.map +1 -0
  28. package/dist/components/chat/Button.js.map +1 -1
  29. package/dist/components/chat/Button.mjs +2 -2
  30. package/dist/components/chat/Chat.js +39 -36
  31. package/dist/components/chat/Chat.js.map +1 -1
  32. package/dist/components/chat/Chat.mjs +12 -12
  33. package/dist/components/chat/ChatContext.js +17 -6
  34. package/dist/components/chat/ChatContext.js.map +1 -1
  35. package/dist/components/chat/ChatContext.mjs +1 -1
  36. package/dist/components/chat/Header.js.map +1 -1
  37. package/dist/components/chat/Header.mjs +2 -2
  38. package/dist/components/chat/Input.js +1 -2
  39. package/dist/components/chat/Input.js.map +1 -1
  40. package/dist/components/chat/Input.mjs +3 -3
  41. package/dist/components/chat/Messages.js +6 -6
  42. package/dist/components/chat/Messages.js.map +1 -1
  43. package/dist/components/chat/Messages.mjs +2 -2
  44. package/dist/components/chat/Modal.js +39 -36
  45. package/dist/components/chat/Modal.js.map +1 -1
  46. package/dist/components/chat/Modal.mjs +16 -16
  47. package/dist/components/chat/Popup.js +39 -36
  48. package/dist/components/chat/Popup.js.map +1 -1
  49. package/dist/components/chat/Popup.mjs +17 -17
  50. package/dist/components/chat/Response.js.map +1 -1
  51. package/dist/components/chat/Response.mjs +2 -2
  52. package/dist/components/chat/Sidebar.js +39 -36
  53. package/dist/components/chat/Sidebar.js.map +1 -1
  54. package/dist/components/chat/Sidebar.mjs +17 -17
  55. package/dist/components/chat/Window.js.map +1 -1
  56. package/dist/components/chat/Window.mjs +2 -2
  57. package/dist/components/chat/index.js +39 -36
  58. package/dist/components/chat/index.js.map +1 -1
  59. package/dist/components/chat/index.mjs +18 -18
  60. package/dist/components/chat/messages/RenderActionExecutionMessage.js +1 -1
  61. package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +1 -1
  62. package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +2 -2
  63. package/dist/components/chat/messages/RenderAgentStateMessage.js +1 -2
  64. package/dist/components/chat/messages/RenderAgentStateMessage.js.map +1 -1
  65. package/dist/components/chat/messages/RenderAgentStateMessage.mjs +2 -2
  66. package/dist/components/chat/messages/RenderResultMessage.js +1 -2
  67. package/dist/components/chat/messages/RenderResultMessage.js.map +1 -1
  68. package/dist/components/chat/messages/RenderResultMessage.mjs +2 -2
  69. package/dist/components/chat/messages/RenderTextMessage.js +1 -2
  70. package/dist/components/chat/messages/RenderTextMessage.js.map +1 -1
  71. package/dist/components/chat/messages/RenderTextMessage.mjs +2 -2
  72. package/dist/components/dev-console/console.js +4 -6
  73. package/dist/components/dev-console/console.js.map +1 -1
  74. package/dist/components/dev-console/console.mjs +2 -2
  75. package/dist/components/dev-console/index.js +4 -6
  76. package/dist/components/dev-console/index.js.map +1 -1
  77. package/dist/components/dev-console/index.mjs +2 -2
  78. package/dist/components/dev-console/utils.js +4 -6
  79. package/dist/components/dev-console/utils.js.map +1 -1
  80. package/dist/components/dev-console/utils.mjs +1 -1
  81. package/dist/components/index.js +39 -36
  82. package/dist/components/index.js.map +1 -1
  83. package/dist/components/index.mjs +18 -18
  84. package/dist/hooks/use-push-to-talk.js +1 -2
  85. package/dist/hooks/use-push-to-talk.js.map +1 -1
  86. package/dist/hooks/use-push-to-talk.mjs +1 -1
  87. package/dist/index.js +39 -36
  88. package/dist/index.js.map +1 -1
  89. package/dist/index.mjs +18 -18
  90. package/package.json +8 -8
  91. package/src/components/chat/ChatContext.tsx +21 -8
  92. package/src/components/chat/Messages.tsx +6 -6
  93. package/src/components/chat/messages/RenderActionExecutionMessage.tsx +1 -1
  94. package/src/components/chat/messages/RenderAgentStateMessage.tsx +1 -1
  95. package/src/components/chat/messages/RenderResultMessage.tsx +1 -1
  96. package/src/components/chat/messages/RenderTextMessage.tsx +1 -1
  97. package/src/components/dev-console/utils.ts +4 -4
  98. package/src/hooks/use-push-to-talk.tsx +1 -1
  99. package/dist/chunk-CTPEKUNX.mjs.map +0 -1
  100. package/dist/chunk-GDNJRSD4.mjs.map +0 -1
  101. package/dist/chunk-GOTHQ665.mjs.map +0 -1
  102. package/dist/chunk-MA5B5ELM.mjs.map +0 -1
  103. package/dist/chunk-RF3KLUPD.mjs.map +0 -1
  104. package/dist/chunk-YH2STM73.mjs.map +0 -1
  105. /package/dist/{chunk-LGS6B47Q.mjs.map → chunk-3KBQXU44.mjs.map} +0 -0
  106. /package/dist/{chunk-XSUSSWDS.mjs.map → chunk-3XAXY2Z3.mjs.map} +0 -0
  107. /package/dist/{chunk-FUCEBN2P.mjs.map → chunk-47OPG5FM.mjs.map} +0 -0
  108. /package/dist/{chunk-HBZPOT37.mjs.map → chunk-JTINVYPK.mjs.map} +0 -0
  109. /package/dist/{chunk-CPWFYV3U.mjs.map → chunk-KCAVDFB6.mjs.map} +0 -0
  110. /package/dist/{chunk-YOH25I6N.mjs.map → chunk-RQNJNK2W.mjs.map} +0 -0
  111. /package/dist/{chunk-QI3OM75G.mjs.map → chunk-RS6UPR5N.mjs.map} +0 -0
  112. /package/dist/{chunk-PJNNEX4L.mjs.map → chunk-SWADR6EH.mjs.map} +0 -0
  113. /package/dist/{chunk-FLV3J3VX.mjs.map → chunk-VEC45H6Q.mjs.map} +0 -0
  114. /package/dist/{chunk-FO7Z5LAL.mjs.map → chunk-YAGE7RCE.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/messages/RenderTextMessage.tsx"],"sourcesContent":["import { TextMessage } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { Markdown } from \"../Markdown\";\nimport { useChatContext } from \"../ChatContext\";\n\nexport function RenderTextMessage(props: RenderMessageProps) {\n const { message, inProgress, index, isCurrentMessage } = props;\n const { icons } = useChatContext();\n if (message.isTextMessage()) {\n if (message.role === \"user\") {\n return (\n <div key={index} className=\"copilotKitMessage copilotKitUserMessage\">\n {message.content}\n </div>\n );\n } else if (message.role == \"assistant\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && !message.content ? (\n icons.spinnerIcon\n ) : (\n <Markdown content={message.content} />\n )}\n </div>\n );\n }\n }\n}\n"],"mappings":";;;;;;;;AAWQ;AAND,SAAS,kBAAkB,OAA2B;AAC3D,QAAM,EAAE,SAAS,YAAY,OAAO,iBAAiB,IAAI;AACzD,QAAM,EAAE,MAAM,IAAI,eAAe;AACjC,MAAI,QAAQ,cAAc,GAAG;AAC3B,QAAI,QAAQ,SAAS,QAAQ;AAC3B,aACE,oBAAC,SAAgB,WAAU,2CACxB,kBAAQ,WADD,KAEV;AAAA,IAEJ,WAAW,QAAQ,QAAQ,aAAa;AACtC,aACE,oBAAC,SAAgB,WAAW,gDACzB,8BAAoB,cAAc,CAAC,QAAQ,UAC1C,MAAM,cAEN,oBAAC,YAAS,SAAS,QAAQ,SAAS,KAJ9B,KAMV;AAAA,IAEJ;AAAA,EACF;AACF;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useChatContext
3
- } from "./chunk-BJPGMY3I.mjs";
3
+ } from "./chunk-CBBFRI3Q.mjs";
4
4
 
5
5
  // src/components/chat/Window.tsx
6
6
  import React, { useCallback, useEffect } from "react";
@@ -115,4 +115,4 @@ function isMacOS() {
115
115
  export {
116
116
  Window
117
117
  };
118
- //# sourceMappingURL=chunk-FO7Z5LAL.mjs.map
118
+ //# sourceMappingURL=chunk-YAGE7RCE.mjs.map
@@ -1,16 +1,15 @@
1
1
  import {
2
2
  useChatContext
3
- } from "./chunk-BJPGMY3I.mjs";
3
+ } from "./chunk-CBBFRI3Q.mjs";
4
4
 
5
5
  // src/components/chat/messages/RenderAgentStateMessage.tsx
6
- import { AgentStateMessage } from "@copilotkit/runtime-client-gql";
7
6
  import { useCopilotContext } from "@copilotkit/react-core";
8
7
  import { jsx, jsxs } from "react/jsx-runtime";
9
8
  function RenderAgentStateMessage(props) {
10
9
  const { message, inProgress, index, isCurrentMessage } = props;
11
10
  const { chatComponentsCache } = useCopilotContext();
12
11
  const { icons } = useChatContext();
13
- if (message instanceof AgentStateMessage) {
12
+ if (message.isAgentStateMessage()) {
14
13
  let render;
15
14
  if (chatComponentsCache.current !== null) {
16
15
  render = chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-${message.nodeName}`] || chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-global`];
@@ -63,4 +62,4 @@ function RenderAgentStateMessage(props) {
63
62
  export {
64
63
  RenderAgentStateMessage
65
64
  };
66
- //# sourceMappingURL=chunk-RF3KLUPD.mjs.map
65
+ //# sourceMappingURL=chunk-ZABXREBH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/messages/RenderAgentStateMessage.tsx"],"sourcesContent":["import { AgentStateMessage } from \"@copilotkit/runtime-client-gql\";\nimport { RenderMessageProps } from \"../props\";\nimport { useChatContext } from \"../ChatContext\";\nimport { CoagentInChatRenderFunction, useCopilotContext } from \"@copilotkit/react-core\";\n\nexport function RenderAgentStateMessage(props: RenderMessageProps) {\n const { message, inProgress, index, isCurrentMessage } = props;\n const { chatComponentsCache } = useCopilotContext();\n const { icons } = useChatContext();\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 <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {icons.spinnerIcon} <span className=\"inProgressLabel\">{render}</span>\n </div>\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 <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {icons.spinnerIcon}\n </div>\n );\n } else if (!toRender) {\n return null;\n }\n\n if (typeof toRender === \"string\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && icons.spinnerIcon} {toRender}\n </div>\n );\n } else {\n return (\n <div key={index} className=\"copilotKitCustomAssistantMessage\">\n {toRender}\n </div>\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 <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {icons.spinnerIcon}\n </div>\n );\n }\n }\n}\n"],"mappings":";;;;;AAGA,SAAsC,yBAAyB;AAuBnD,SACsB,KADtB;AArBL,SAAS,wBAAwB,OAA2B;AACjE,QAAM,EAAE,SAAS,YAAY,OAAO,iBAAiB,IAAI;AACzD,QAAM,EAAE,oBAAoB,IAAI,kBAAkB;AAClD,QAAM,EAAE,MAAM,IAAI,eAAe;AAEjC,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,qBAAC,SAAgB,WAAW,gDACzB;AAAA,kBAAM;AAAA,YAAY;AAAA,YAAC,oBAAC,UAAK,WAAU,mBAAmB,kBAAO;AAAA,eADtD,KAEV;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,oBAAC,SAAgB,WAAW,gDACzB,gBAAM,eADC,KAEV;AAAA,QAEJ,WAAW,CAAC,UAAU;AACpB,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,aAAa,UAAU;AAChC,iBACE,qBAAC,SAAgB,WAAW,gDACzB;AAAA,gCAAoB,cAAc,MAAM;AAAA,YAAY;AAAA,YAAE;AAAA,eAD/C,KAEV;AAAA,QAEJ,OAAO;AACL,iBACE,oBAAC,SAAgB,WAAU,oCACxB,sBADO,KAEV;AAAA,QAEJ;AAAA,MACF;AAAA,IACF,WAES,CAAC,cAAc,CAAC,kBAAkB;AAEzC,aAAO;AAAA,IACT,OAAO;AAEL,aACE,oBAAC,SAAgB,WAAW,gDACzB,gBAAM,eADC,KAEV;AAAA,IAEJ;AAAA,EACF;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/chat/Button.tsx","../../../src/components/chat/ChatContext.tsx"],"sourcesContent":["import { ButtonProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\n\nexport const Button = ({}: ButtonProps) => {\n const { open, setOpen, icons } = useChatContext();\n\n return (\n <div onClick={() => setOpen(!open)}>\n <button\n className={`copilotKitButton ${open ? \"open\" : \"\"}`}\n aria-label={open ? \"Close Chat\" : \"Open Chat\"}\n >\n <div className=\"copilotKitButtonIcon copilotKitButtonIconOpen\">{icons.openIcon}</div>\n <div className=\"copilotKitButtonIcon copilotKitButtonIconClose\">{icons.closeIcon}</div>\n </button>\n </div>\n );\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\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 context = {\n labels: {\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 },\n ...labels,\n },\n\n icons: {\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.PushToTalkIcon,\n },\n ...icons,\n },\n open,\n setOpen,\n };\n return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAyC;AA6KhC;AA/DF,IAAM,cAAc,aAAAA,QAAM,cAAuC,MAAS;AAE1E,SAAS,iBAA8B;AAC5C,QAAM,UAAU,aAAAA,QAAM,WAAW,WAAW;AAC5C,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;ADhHM,IAAAC,sBAAA;AALC,IAAM,SAAS,CAAC,CAAC,MAAmB;AACzC,QAAM,EAAE,MAAM,SAAS,MAAM,IAAI,eAAe;AAEhD,SACE,6CAAC,SAAI,SAAS,MAAM,QAAQ,CAAC,IAAI,GAC/B;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,oBAAoB,OAAO,SAAS;AAAA,MAC/C,cAAY,OAAO,eAAe;AAAA,MAElC;AAAA,qDAAC,SAAI,WAAU,iDAAiD,gBAAM,UAAS;AAAA,QAC/E,6CAAC,SAAI,WAAU,kDAAkD,gBAAM,WAAU;AAAA;AAAA;AAAA,EACnF,GACF;AAEJ;","names":["React","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../../src/components/chat/Button.tsx","../../../src/components/chat/ChatContext.tsx"],"sourcesContent":["import { ButtonProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\n\nexport const Button = ({}: ButtonProps) => {\n const { open, setOpen, icons } = useChatContext();\n\n return (\n <div onClick={() => setOpen(!open)}>\n <button\n className={`copilotKitButton ${open ? \"open\" : \"\"}`}\n aria-label={open ? \"Close Chat\" : \"Open Chat\"}\n >\n <div className=\"copilotKitButtonIcon copilotKitButtonIconOpen\">{icons.openIcon}</div>\n <div className=\"copilotKitButtonIcon copilotKitButtonIconClose\">{icons.closeIcon}</div>\n </button>\n </div>\n );\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\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 },\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.PushToTalkIcon,\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAyC;AA0LhC;AA5EF,IAAM,cAAc,aAAAA,QAAM,cAAuC,MAAS;AAE1E,SAAS,iBAA8B;AAC5C,QAAM,UAAU,aAAAA,QAAM,WAAW,WAAW;AAC5C,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;ADhHM,IAAAC,sBAAA;AALC,IAAM,SAAS,CAAC,CAAC,MAAmB;AACzC,QAAM,EAAE,MAAM,SAAS,MAAM,IAAI,eAAe;AAEhD,SACE,6CAAC,SAAI,SAAS,MAAM,QAAQ,CAAC,IAAI,GAC/B;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,oBAAoB,OAAO,SAAS;AAAA,MAC/C,cAAY,OAAO,eAAe;AAAA,MAElC;AAAA,qDAAC,SAAI,WAAU,iDAAiD,gBAAM,UAAS;AAAA,QAC/E,6CAAC,SAAI,WAAU,kDAAkD,gBAAM,WAAU;AAAA;AAAA;AAAA,EACnF,GACF;AAEJ;","names":["React","import_jsx_runtime"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Button
3
- } from "../../chunk-YOH25I6N.mjs";
4
- import "../../chunk-BJPGMY3I.mjs";
3
+ } from "../../chunk-RQNJNK2W.mjs";
4
+ import "../../chunk-CBBFRI3Q.mjs";
5
5
  import "../../chunk-FZC7X5PK.mjs";
6
6
  import "../../chunk-MRXNTQOX.mjs";
7
7
  export {
@@ -350,8 +350,8 @@ var ChatContextProvider = ({
350
350
  open,
351
351
  setOpen
352
352
  }) => {
353
- const context = {
354
- labels: __spreadValues(__spreadValues({}, {
353
+ const memoizedLabels = (0, import_react.useMemo)(
354
+ () => __spreadValues(__spreadValues({}, {
355
355
  initial: "",
356
356
  title: "CopilotKit",
357
357
  placeholder: "Type a message...",
@@ -359,7 +359,10 @@ var ChatContextProvider = ({
359
359
  stopGenerating: "Stop generating",
360
360
  regenerateResponse: "Regenerate response"
361
361
  }), labels),
362
- icons: __spreadValues(__spreadValues({}, {
362
+ [labels]
363
+ );
364
+ const memoizedIcons = (0, import_react.useMemo)(
365
+ () => __spreadValues(__spreadValues({}, {
363
366
  openIcon: OpenIcon,
364
367
  closeIcon: CloseIcon,
365
368
  headerCloseIcon: HeaderCloseIcon,
@@ -370,9 +373,17 @@ var ChatContextProvider = ({
370
373
  regenerateIcon: RegenerateIcon,
371
374
  pushToTalkIcon: PushToTalkIcon
372
375
  }), icons),
373
- open,
374
- setOpen
375
- };
376
+ [icons]
377
+ );
378
+ const context = (0, import_react.useMemo)(
379
+ () => ({
380
+ labels: memoizedLabels,
381
+ icons: memoizedIcons,
382
+ open,
383
+ setOpen
384
+ }),
385
+ [memoizedLabels, memoizedIcons, open, setOpen]
386
+ );
376
387
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ChatContext.Provider, { value: context, children });
377
388
  };
378
389
 
@@ -397,10 +408,10 @@ var Messages = ({
397
408
  messages = [...initialMessages, ...messages];
398
409
  const actionResults = {};
399
410
  for (let i = 0; i < messages.length; i++) {
400
- if (messages[i] instanceof import_runtime_client_gql.ActionExecutionMessage) {
411
+ if (messages[i].isActionExecutionMessage()) {
401
412
  const id = messages[i].id;
402
413
  const resultMessage = messages.find(
403
- (message) => message instanceof import_runtime_client_gql.ResultMessage && message.actionExecutionId === id
414
+ (message) => message.isResultMessage() && message.actionExecutionId === id
404
415
  );
405
416
  if (resultMessage) {
406
417
  actionResults[id] = import_runtime_client_gql.ResultMessage.decodeResult(resultMessage.result || "");
@@ -421,7 +432,7 @@ var Messages = ({
421
432
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "copilotKitMessages", children: [
422
433
  messages.map((message, index) => {
423
434
  const isCurrentMessage = index === messages.length - 1;
424
- if (message instanceof import_runtime_client_gql.TextMessage) {
435
+ if (message.isTextMessage()) {
425
436
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
426
437
  RenderTextMessage2,
427
438
  {
@@ -432,7 +443,7 @@ var Messages = ({
432
443
  },
433
444
  index
434
445
  );
435
- } else if (message instanceof import_runtime_client_gql.ActionExecutionMessage) {
446
+ } else if (message.isActionExecutionMessage()) {
436
447
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
437
448
  RenderActionExecutionMessage2,
438
449
  {
@@ -444,7 +455,7 @@ var Messages = ({
444
455
  },
445
456
  index
446
457
  );
447
- } else if (message instanceof import_runtime_client_gql.AgentStateMessage) {
458
+ } else if (message.isAgentStateMessage()) {
448
459
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
449
460
  RenderAgentStateMessage2,
450
461
  {
@@ -455,7 +466,7 @@ var Messages = ({
455
466
  },
456
467
  index
457
468
  );
458
- } else if (message instanceof import_runtime_client_gql.ResultMessage) {
469
+ } else if (message.isResultMessage()) {
459
470
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
460
471
  RenderResultMessage2,
461
472
  {
@@ -542,7 +553,6 @@ var Textarea_default = AutoResizingTextarea;
542
553
 
543
554
  // src/hooks/use-push-to-talk.tsx
544
555
  var import_react_core = require("@copilotkit/react-core");
545
- var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
546
556
  var import_react4 = require("react");
547
557
  var startRecording = (mediaStreamRef, mediaRecorderRef, audioContextRef, recordedChunks, onStop) => __async(void 0, null, function* () {
548
558
  if (!mediaStreamRef.current || !audioContextRef.current) {
@@ -635,7 +645,7 @@ var usePushToTalk = ({
635
645
  (message) => message.id === startReadingFromMessageId
636
646
  );
637
647
  const messagesAfterLast = context.messages.slice(lastMessageIndex + 1).filter(
638
- (message) => message instanceof import_runtime_client_gql2.TextMessage && message.role === "assistant"
648
+ (message) => message.isTextMessage() && message.role === "assistant"
639
649
  );
640
650
  const text = messagesAfterLast.map((message) => message.content).join("\n");
641
651
  playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl, audioContextRef.current);
@@ -723,9 +733,6 @@ var ResponseButton = ({ onClick, inProgress }) => {
723
733
  ] });
724
734
  };
725
735
 
726
- // src/components/chat/messages/RenderTextMessage.tsx
727
- var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
728
-
729
736
  // src/components/chat/Markdown.tsx
730
737
  var import_react7 = require("react");
731
738
  var import_react_markdown = __toESM(require("react-markdown"));
@@ -1199,7 +1206,7 @@ var import_jsx_runtime9 = require("react/jsx-runtime");
1199
1206
  function RenderTextMessage(props) {
1200
1207
  const { message, inProgress, index, isCurrentMessage } = props;
1201
1208
  const { icons } = useChatContext();
1202
- if (message instanceof import_runtime_client_gql3.TextMessage) {
1209
+ if (message.isTextMessage()) {
1203
1210
  if (message.role === "user") {
1204
1211
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message.content }, index);
1205
1212
  } else if (message.role == "assistant") {
@@ -1209,14 +1216,14 @@ function RenderTextMessage(props) {
1209
1216
  }
1210
1217
 
1211
1218
  // src/components/chat/messages/RenderActionExecutionMessage.tsx
1212
- var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
1219
+ var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
1213
1220
  var import_react_core3 = require("@copilotkit/react-core");
1214
1221
  var import_jsx_runtime10 = require("react/jsx-runtime");
1215
1222
  function RenderActionExecutionMessage(props) {
1216
1223
  const { message, inProgress, index, isCurrentMessage, actionResult } = props;
1217
1224
  const { chatComponentsCache } = (0, import_react_core3.useCopilotContext)();
1218
1225
  const { icons } = useChatContext();
1219
- if (message instanceof import_runtime_client_gql4.ActionExecutionMessage) {
1226
+ if (message.isActionExecutionMessage()) {
1220
1227
  if (chatComponentsCache.current !== null && chatComponentsCache.current.actions[message.name]) {
1221
1228
  const render = chatComponentsCache.current.actions[message.name];
1222
1229
  if (typeof render === "string") {
@@ -1234,7 +1241,7 @@ function RenderActionExecutionMessage(props) {
1234
1241
  let status = "inProgress";
1235
1242
  if (actionResult !== void 0) {
1236
1243
  status = "complete";
1237
- } else if (message.status.code !== import_runtime_client_gql4.MessageStatusCode.Pending) {
1244
+ } else if (message.status.code !== import_runtime_client_gql2.MessageStatusCode.Pending) {
1238
1245
  status = "executing";
1239
1246
  }
1240
1247
  try {
@@ -1277,25 +1284,23 @@ function RenderActionExecutionMessage(props) {
1277
1284
  }
1278
1285
 
1279
1286
  // src/components/chat/messages/RenderResultMessage.tsx
1280
- var import_runtime_client_gql5 = require("@copilotkit/runtime-client-gql");
1281
1287
  var import_jsx_runtime11 = require("react/jsx-runtime");
1282
1288
  function RenderResultMessage(props) {
1283
1289
  const { message, inProgress, index, isCurrentMessage } = props;
1284
1290
  const { icons } = useChatContext();
1285
- if (message instanceof import_runtime_client_gql5.ResultMessage && inProgress && isCurrentMessage) {
1291
+ if (message.isResultMessage() && inProgress && isCurrentMessage) {
1286
1292
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: icons.spinnerIcon }, index);
1287
1293
  }
1288
1294
  }
1289
1295
 
1290
1296
  // src/components/chat/messages/RenderAgentStateMessage.tsx
1291
- var import_runtime_client_gql6 = require("@copilotkit/runtime-client-gql");
1292
1297
  var import_react_core4 = require("@copilotkit/react-core");
1293
1298
  var import_jsx_runtime12 = require("react/jsx-runtime");
1294
1299
  function RenderAgentStateMessage(props) {
1295
1300
  const { message, inProgress, index, isCurrentMessage } = props;
1296
1301
  const { chatComponentsCache } = (0, import_react_core4.useCopilotContext)();
1297
1302
  const { icons } = useChatContext();
1298
- if (message instanceof import_runtime_client_gql6.AgentStateMessage) {
1303
+ if (message.isAgentStateMessage()) {
1299
1304
  let render;
1300
1305
  if (chatComponentsCache.current !== null) {
1301
1306
  render = chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-${message.nodeName}`] || chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-global`];
@@ -1348,7 +1353,7 @@ function RenderAgentStateMessage(props) {
1348
1353
  // src/components/chat/Suggestion.tsx
1349
1354
  var import_react_core5 = require("@copilotkit/react-core");
1350
1355
  var import_shared = require("@copilotkit/shared");
1351
- var import_runtime_client_gql7 = require("@copilotkit/runtime-client-gql");
1356
+ var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
1352
1357
  var import_jsx_runtime13 = require("react/jsx-runtime");
1353
1358
  function Suggestion({ title, message, onClick, partial, className }) {
1354
1359
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
@@ -1384,7 +1389,7 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
1384
1389
  context,
1385
1390
  instructions: "Suggest what the user could say next. Provide clear, highly relevant suggestions. Do not literally suggest function calls. " + config.instructions + "\n\n" + numOfSuggestionsInstructions,
1386
1391
  data: "Available tools: " + tools + "\n\n",
1387
- requestType: import_runtime_client_gql7.CopilotRequestType.Task,
1392
+ requestType: import_runtime_client_gql3.CopilotRequestType.Task,
1388
1393
  parameters: [
1389
1394
  {
1390
1395
  name: "suggestions",
@@ -1440,13 +1445,11 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
1440
1445
  // src/components/chat/Chat.tsx
1441
1446
  var import_react10 = __toESM(require("react"));
1442
1447
  var import_react_core8 = require("@copilotkit/react-core");
1443
- var import_runtime_client_gql10 = require("@copilotkit/runtime-client-gql");
1448
+ var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
1444
1449
  var import_shared3 = require("@copilotkit/shared");
1445
1450
 
1446
1451
  // src/components/dev-console/utils.ts
1447
1452
  var import_react_core6 = require("@copilotkit/react-core");
1448
- var import_runtime_client_gql8 = require("@copilotkit/runtime-client-gql");
1449
- var import_runtime_client_gql9 = require("@copilotkit/runtime-client-gql");
1450
1453
  function shouldShowDevConsole(showDevConsole) {
1451
1454
  if (typeof showDevConsole === "boolean") {
1452
1455
  return showDevConsole;
@@ -1536,7 +1539,7 @@ function logMessages(context) {
1536
1539
  return;
1537
1540
  }
1538
1541
  const tableData = context.messages.map((message) => {
1539
- if (message instanceof import_runtime_client_gql8.TextMessage) {
1542
+ if (message.isTextMessage()) {
1540
1543
  return {
1541
1544
  id: message.id,
1542
1545
  type: "TextMessage",
@@ -1545,7 +1548,7 @@ function logMessages(context) {
1545
1548
  scope: void 0,
1546
1549
  content: message.content
1547
1550
  };
1548
- } else if (message instanceof import_runtime_client_gql8.ActionExecutionMessage) {
1551
+ } else if (message.isActionExecutionMessage()) {
1549
1552
  return {
1550
1553
  id: message.id,
1551
1554
  type: "ActionExecutionMessage",
@@ -1554,7 +1557,7 @@ function logMessages(context) {
1554
1557
  scope: message.scope,
1555
1558
  content: message.arguments
1556
1559
  };
1557
- } else if (message instanceof import_runtime_client_gql8.ResultMessage) {
1560
+ } else if (message.isResultMessage()) {
1558
1561
  return {
1559
1562
  id: message.id,
1560
1563
  type: "ResultMessage",
@@ -1563,7 +1566,7 @@ function logMessages(context) {
1563
1566
  scope: message.actionExecutionId,
1564
1567
  content: message.result
1565
1568
  };
1566
- } else if (message instanceof import_runtime_client_gql9.AgentStateMessage) {
1569
+ } else if (message.isAgentStateMessage()) {
1567
1570
  return {
1568
1571
  id: message.id,
1569
1572
  type: `AgentStateMessage (running: ${message.running})`,
@@ -1994,9 +1997,9 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
1994
1997
  const sendMessage = (messageContent) => __async(void 0, null, function* () {
1995
1998
  abortSuggestions();
1996
1999
  setCurrentSuggestions([]);
1997
- const message = new import_runtime_client_gql10.TextMessage({
2000
+ const message = new import_runtime_client_gql4.TextMessage({
1998
2001
  content: messageContent,
1999
- role: import_runtime_client_gql10.Role.User
2002
+ role: import_runtime_client_gql4.Role.User
2000
2003
  });
2001
2004
  if (onSubmitMessage) {
2002
2005
  try {