@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.
- package/CHANGELOG.md +15 -5
- package/dist/{chunk-LGS6B47Q.mjs → chunk-3KBQXU44.mjs} +10 -10
- package/dist/{chunk-XSUSSWDS.mjs → chunk-3XAXY2Z3.mjs} +2 -2
- package/dist/{chunk-FUCEBN2P.mjs → chunk-47OPG5FM.mjs} +9 -9
- package/dist/{chunk-CTPEKUNX.mjs → chunk-4FIGRRFS.mjs} +5 -7
- package/dist/chunk-4FIGRRFS.mjs.map +1 -0
- package/dist/{chunk-YH2STM73.mjs → chunk-6BL5C56L.mjs} +4 -4
- package/dist/chunk-6BL5C56L.mjs.map +1 -0
- package/dist/{chunk-GOTHQ665.mjs → chunk-6INMITFA.mjs} +3 -4
- package/dist/chunk-6INMITFA.mjs.map +1 -0
- package/dist/{chunk-BJPGMY3I.mjs → chunk-CBBFRI3Q.mjs} +19 -8
- package/dist/{chunk-BJPGMY3I.mjs.map → chunk-CBBFRI3Q.mjs.map} +1 -1
- package/dist/{chunk-GDNJRSD4.mjs → chunk-CPMIEVKK.mjs} +9 -11
- package/dist/chunk-CPMIEVKK.mjs.map +1 -0
- package/dist/{chunk-HBZPOT37.mjs → chunk-JTINVYPK.mjs} +3 -3
- package/dist/{chunk-CPWFYV3U.mjs → chunk-KCAVDFB6.mjs} +2 -2
- package/dist/{chunk-YOH25I6N.mjs → chunk-RQNJNK2W.mjs} +2 -2
- package/dist/{chunk-QI3OM75G.mjs → chunk-RS6UPR5N.mjs} +2 -2
- package/dist/{chunk-5DT3MDBZ.mjs → chunk-S5MBUNGN.mjs} +2 -3
- package/dist/{chunk-5DT3MDBZ.mjs.map → chunk-S5MBUNGN.mjs.map} +1 -1
- package/dist/{chunk-PJNNEX4L.mjs → chunk-SWADR6EH.mjs} +2 -2
- package/dist/{chunk-FLV3J3VX.mjs → chunk-VEC45H6Q.mjs} +2 -2
- package/dist/{chunk-MA5B5ELM.mjs → chunk-WYMTXCQU.mjs} +3 -4
- package/dist/chunk-WYMTXCQU.mjs.map +1 -0
- package/dist/{chunk-FO7Z5LAL.mjs → chunk-YAGE7RCE.mjs} +2 -2
- package/dist/{chunk-RF3KLUPD.mjs → chunk-ZABXREBH.mjs} +3 -4
- package/dist/chunk-ZABXREBH.mjs.map +1 -0
- package/dist/components/chat/Button.js.map +1 -1
- package/dist/components/chat/Button.mjs +2 -2
- package/dist/components/chat/Chat.js +39 -36
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +12 -12
- package/dist/components/chat/ChatContext.js +17 -6
- package/dist/components/chat/ChatContext.js.map +1 -1
- package/dist/components/chat/ChatContext.mjs +1 -1
- package/dist/components/chat/Header.js.map +1 -1
- package/dist/components/chat/Header.mjs +2 -2
- package/dist/components/chat/Input.js +1 -2
- package/dist/components/chat/Input.js.map +1 -1
- package/dist/components/chat/Input.mjs +3 -3
- package/dist/components/chat/Messages.js +6 -6
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +2 -2
- package/dist/components/chat/Modal.js +39 -36
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +16 -16
- package/dist/components/chat/Popup.js +39 -36
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +17 -17
- package/dist/components/chat/Response.js.map +1 -1
- package/dist/components/chat/Response.mjs +2 -2
- package/dist/components/chat/Sidebar.js +39 -36
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +17 -17
- package/dist/components/chat/Window.js.map +1 -1
- package/dist/components/chat/Window.mjs +2 -2
- package/dist/components/chat/index.js +39 -36
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +18 -18
- package/dist/components/chat/messages/RenderActionExecutionMessage.js +1 -1
- package/dist/components/chat/messages/RenderActionExecutionMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderActionExecutionMessage.mjs +2 -2
- package/dist/components/chat/messages/RenderAgentStateMessage.js +1 -2
- package/dist/components/chat/messages/RenderAgentStateMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderAgentStateMessage.mjs +2 -2
- package/dist/components/chat/messages/RenderResultMessage.js +1 -2
- package/dist/components/chat/messages/RenderResultMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderResultMessage.mjs +2 -2
- package/dist/components/chat/messages/RenderTextMessage.js +1 -2
- package/dist/components/chat/messages/RenderTextMessage.js.map +1 -1
- package/dist/components/chat/messages/RenderTextMessage.mjs +2 -2
- package/dist/components/dev-console/console.js +4 -6
- package/dist/components/dev-console/console.js.map +1 -1
- package/dist/components/dev-console/console.mjs +2 -2
- package/dist/components/dev-console/index.js +4 -6
- package/dist/components/dev-console/index.js.map +1 -1
- package/dist/components/dev-console/index.mjs +2 -2
- package/dist/components/dev-console/utils.js +4 -6
- package/dist/components/dev-console/utils.js.map +1 -1
- package/dist/components/dev-console/utils.mjs +1 -1
- package/dist/components/index.js +39 -36
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +18 -18
- package/dist/hooks/use-push-to-talk.js +1 -2
- package/dist/hooks/use-push-to-talk.js.map +1 -1
- package/dist/hooks/use-push-to-talk.mjs +1 -1
- package/dist/index.js +39 -36
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -18
- package/package.json +8 -8
- package/src/components/chat/ChatContext.tsx +21 -8
- package/src/components/chat/Messages.tsx +6 -6
- package/src/components/chat/messages/RenderActionExecutionMessage.tsx +1 -1
- package/src/components/chat/messages/RenderAgentStateMessage.tsx +1 -1
- package/src/components/chat/messages/RenderResultMessage.tsx +1 -1
- package/src/components/chat/messages/RenderTextMessage.tsx +1 -1
- package/src/components/dev-console/utils.ts +4 -4
- package/src/hooks/use-push-to-talk.tsx +1 -1
- package/dist/chunk-CTPEKUNX.mjs.map +0 -1
- package/dist/chunk-GDNJRSD4.mjs.map +0 -1
- package/dist/chunk-GOTHQ665.mjs.map +0 -1
- package/dist/chunk-MA5B5ELM.mjs.map +0 -1
- package/dist/chunk-RF3KLUPD.mjs.map +0 -1
- package/dist/chunk-YH2STM73.mjs.map +0 -1
- /package/dist/{chunk-LGS6B47Q.mjs.map → chunk-3KBQXU44.mjs.map} +0 -0
- /package/dist/{chunk-XSUSSWDS.mjs.map → chunk-3XAXY2Z3.mjs.map} +0 -0
- /package/dist/{chunk-FUCEBN2P.mjs.map → chunk-47OPG5FM.mjs.map} +0 -0
- /package/dist/{chunk-HBZPOT37.mjs.map → chunk-JTINVYPK.mjs.map} +0 -0
- /package/dist/{chunk-CPWFYV3U.mjs.map → chunk-KCAVDFB6.mjs.map} +0 -0
- /package/dist/{chunk-YOH25I6N.mjs.map → chunk-RQNJNK2W.mjs.map} +0 -0
- /package/dist/{chunk-QI3OM75G.mjs.map → chunk-RS6UPR5N.mjs.map} +0 -0
- /package/dist/{chunk-PJNNEX4L.mjs.map → chunk-SWADR6EH.mjs.map} +0 -0
- /package/dist/{chunk-FLV3J3VX.mjs.map → chunk-VEC45H6Q.mjs.map} +0 -0
- /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-
|
|
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-
|
|
118
|
+
//# sourceMappingURL=chunk-YAGE7RCE.mjs.map
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useChatContext
|
|
3
|
-
} from "./chunk-
|
|
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
|
|
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-
|
|
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
|
|
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"]}
|
|
@@ -350,8 +350,8 @@ var ChatContextProvider = ({
|
|
|
350
350
|
open,
|
|
351
351
|
setOpen
|
|
352
352
|
}) => {
|
|
353
|
-
const
|
|
354
|
-
|
|
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
|
-
|
|
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
|
-
|
|
374
|
-
|
|
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]
|
|
411
|
+
if (messages[i].isActionExecutionMessage()) {
|
|
401
412
|
const id = messages[i].id;
|
|
402
413
|
const resultMessage = messages.find(
|
|
403
|
-
(message) => message
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 !==
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2000
|
+
const message = new import_runtime_client_gql4.TextMessage({
|
|
1998
2001
|
content: messageContent,
|
|
1999
|
-
role:
|
|
2002
|
+
role: import_runtime_client_gql4.Role.User
|
|
2000
2003
|
});
|
|
2001
2004
|
if (onSubmitMessage) {
|
|
2002
2005
|
try {
|