@copilotkit/react-ui 1.5.15-next.3 → 1.5.15-next.4
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 +12 -0
- package/dist/{chunk-34FREWVK.mjs → chunk-6FTRYYR5.mjs} +4 -1
- package/dist/chunk-6FTRYYR5.mjs.map +1 -0
- package/dist/{chunk-6ZBXFJHS.mjs → chunk-7D6TIVZ6.mjs} +3 -3
- package/dist/{chunk-I37TTM3T.mjs → chunk-NCM42YQL.mjs} +2 -2
- package/dist/{chunk-R5ZETDHL.mjs → chunk-PGXWPTAW.mjs} +2 -2
- package/dist/{chunk-HBUJWEWY.mjs → chunk-Q77YGF2I.mjs} +2 -2
- package/dist/components/chat/Chat.js +28 -25
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +2 -2
- package/dist/components/chat/Messages.js +3 -0
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +1 -1
- package/dist/components/chat/Modal.js +28 -25
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +3 -3
- package/dist/components/chat/Popup.js +28 -25
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +4 -4
- package/dist/components/chat/Sidebar.js +28 -25
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +4 -4
- package/dist/components/chat/index.js +28 -25
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +5 -5
- package/dist/components/index.js +28 -25
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +5 -5
- package/dist/index.js +30 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/package.json +6 -6
- package/src/components/chat/Messages.tsx +6 -1
- package/dist/chunk-34FREWVK.mjs.map +0 -1
- /package/dist/{chunk-6ZBXFJHS.mjs.map → chunk-7D6TIVZ6.mjs.map} +0 -0
- /package/dist/{chunk-I37TTM3T.mjs.map → chunk-NCM42YQL.mjs.map} +0 -0
- /package/dist/{chunk-R5ZETDHL.mjs.map → chunk-PGXWPTAW.mjs.map} +0 -0
- /package/dist/{chunk-HBUJWEWY.mjs.map → chunk-Q77YGF2I.mjs.map} +0 -0
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
CopilotChat,
|
|
3
3
|
WrappedCopilotChat,
|
|
4
4
|
useCopilotChatLogic
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-Q77YGF2I.mjs";
|
|
6
6
|
import "../../chunk-UWWMAJ7R.mjs";
|
|
7
7
|
import "../../chunk-F7VWGY77.mjs";
|
|
8
8
|
import "../../chunk-OFYI4UU4.mjs";
|
|
@@ -20,7 +20,7 @@ import "../../chunk-OTPAZXVR.mjs";
|
|
|
20
20
|
import "../../chunk-EMQEEXUB.mjs";
|
|
21
21
|
import "../../chunk-YQFVRDNC.mjs";
|
|
22
22
|
import "../../chunk-YQ3D5IQV.mjs";
|
|
23
|
-
import "../../chunk-
|
|
23
|
+
import "../../chunk-6FTRYYR5.mjs";
|
|
24
24
|
import "../../chunk-3XAXY2Z3.mjs";
|
|
25
25
|
import "../../chunk-CBBFRI3Q.mjs";
|
|
26
26
|
import "../../chunk-UPTB2MVO.mjs";
|
|
@@ -52,6 +52,7 @@ function useChatContext() {
|
|
|
52
52
|
|
|
53
53
|
// src/components/chat/Messages.tsx
|
|
54
54
|
var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
55
|
+
var import_react_core = require("@copilotkit/react-core");
|
|
55
56
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
56
57
|
var Messages = ({
|
|
57
58
|
messages,
|
|
@@ -83,6 +84,7 @@ var Messages = ({
|
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
86
|
const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);
|
|
87
|
+
const interrupt = (0, import_react_core.useLangGraphInterruptRender)();
|
|
86
88
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
87
89
|
messages.map((message, index) => {
|
|
88
90
|
const isCurrentMessage = index === messages.length - 1;
|
|
@@ -141,6 +143,7 @@ var Messages = ({
|
|
|
141
143
|
);
|
|
142
144
|
}
|
|
143
145
|
}),
|
|
146
|
+
interrupt,
|
|
144
147
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("footer", { ref: messagesEndRef, children })
|
|
145
148
|
] });
|
|
146
149
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/chat/Messages.tsx","../../../src/components/chat/ChatContext.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Message, ResultMessage, TextMessage, Role } from \"@copilotkit/runtime-client-gql\";\n\nexport const Messages = ({\n messages,\n inProgress,\n children,\n RenderTextMessage,\n RenderActionExecutionMessage,\n RenderAgentStateMessage,\n RenderResultMessage,\n AssistantMessage,\n UserMessage,\n}: MessagesProps) => {\n const context = useChatContext();\n const initialMessages = useMemo(\n () => makeInitialMessages(context.labels.initial),\n [context.labels.initial],\n );\n messages = [...initialMessages, ...messages];\n\n const actionResults: Record<string, string> = {};\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i].isActionExecutionMessage()) {\n const id = messages[i].id;\n const resultMessage: ResultMessage | undefined = messages.find(\n (message) => message.isResultMessage() && message.actionExecutionId === id,\n ) as ResultMessage | undefined;\n\n if (resultMessage) {\n actionResults[id] = ResultMessage.decodeResult(resultMessage.result || \"\");\n }\n }\n }\n\n const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);\n\n return (\n <div className=\"copilotKitMessages\" ref={messagesContainerRef}>\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n\n if (message.isTextMessage()) {\n return (\n <RenderTextMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isActionExecutionMessage()) {\n return (\n <RenderActionExecutionMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n actionResult={actionResults[message.id]}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isAgentStateMessage()) {\n return (\n <RenderAgentStateMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isResultMessage()) {\n return (\n <RenderResultMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n }\n })}\n <footer ref={messagesEndRef}>{children}</footer>\n </div>\n );\n};\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = [];\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial);\n } else {\n initialArray.push(initial);\n }\n }\n\n return initialArray.map(\n (message) =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n }),\n );\n}\nexport function useScrollToBottom(messages: any[]) {\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const messagesContainerRef = useRef<HTMLDivElement | null>(null);\n const isProgrammaticScrollRef = useRef(false);\n const isUserScrollUpRef = useRef(false);\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n isProgrammaticScrollRef.current = true;\n messagesEndRef.current.scrollIntoView({\n behavior: \"auto\",\n });\n }\n };\n\n const handleScroll = () => {\n if (isProgrammaticScrollRef.current) {\n isProgrammaticScrollRef.current = false;\n return;\n }\n\n if (messagesContainerRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;\n isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;\n }\n };\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (container) {\n container.addEventListener(\"scroll\", handleScroll);\n }\n return () => {\n if (container) {\n container.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (!container) {\n return;\n }\n\n const mutationObserver = new MutationObserver(() => {\n if (!isUserScrollUpRef.current) {\n scrollToBottom();\n }\n });\n\n mutationObserver.observe(container, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n return () => {\n mutationObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n isUserScrollUpRef.current = false;\n scrollToBottom();\n }, [messages.filter((m) => m.isTextMessage() && m.role === Role.User).length]);\n\n return { messagesEndRef, messagesContainerRef };\n}\n","import React, { useMemo, useState } from \"react\";\nimport * as DefaultIcons from \"./Icons\";\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode;\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode;\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode;\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode;\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode;\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode;\n\n /**\n * The icons to use for push to talk.\n * @default <PushToTalkIcon />\n */\n\n pushToTalkIcon?: React.ReactNode;\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[];\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string;\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string;\n\n /**\n * The message to display when an error occurs.\n * @default \"❌ An error occurred. Please try again.\"\n */\n error?: string;\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string;\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string;\n}\n\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":"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","names":["import_react","React","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/chat/Messages.tsx","../../../src/components/chat/ChatContext.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { Message, ResultMessage, TextMessage, Role } from \"@copilotkit/runtime-client-gql\";\nimport { useLangGraphInterruptRender } from \"@copilotkit/react-core\";\n\nexport const Messages = ({\n messages,\n inProgress,\n children,\n RenderTextMessage,\n RenderActionExecutionMessage,\n RenderAgentStateMessage,\n RenderResultMessage,\n AssistantMessage,\n UserMessage,\n}: MessagesProps) => {\n const context = useChatContext();\n const initialMessages = useMemo(\n () => makeInitialMessages(context.labels.initial),\n [context.labels.initial],\n );\n\n messages = [...initialMessages, ...messages];\n\n const actionResults: Record<string, string> = {};\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i].isActionExecutionMessage()) {\n const id = messages[i].id;\n const resultMessage: ResultMessage | undefined = messages.find(\n (message) => message.isResultMessage() && message.actionExecutionId === id,\n ) as ResultMessage | undefined;\n\n if (resultMessage) {\n actionResults[id] = ResultMessage.decodeResult(resultMessage.result || \"\");\n }\n }\n }\n\n const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);\n\n const interrupt = useLangGraphInterruptRender();\n\n return (\n <div className=\"copilotKitMessages\" ref={messagesContainerRef}>\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n\n if (message.isTextMessage()) {\n return (\n <RenderTextMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isActionExecutionMessage()) {\n return (\n <RenderActionExecutionMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n actionResult={actionResults[message.id]}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isAgentStateMessage()) {\n return (\n <RenderAgentStateMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n } else if (message.isResultMessage()) {\n return (\n <RenderResultMessage\n key={index}\n message={message}\n inProgress={inProgress}\n index={index}\n isCurrentMessage={isCurrentMessage}\n AssistantMessage={AssistantMessage}\n UserMessage={UserMessage}\n />\n );\n }\n })}\n {interrupt}\n <footer ref={messagesEndRef}>{children}</footer>\n </div>\n );\n};\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = [];\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial);\n } else {\n initialArray.push(initial);\n }\n }\n\n return initialArray.map(\n (message) =>\n new TextMessage({\n role: Role.Assistant,\n content: message,\n }),\n );\n}\nexport function useScrollToBottom(messages: any[]) {\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const messagesContainerRef = useRef<HTMLDivElement | null>(null);\n const isProgrammaticScrollRef = useRef(false);\n const isUserScrollUpRef = useRef(false);\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n isProgrammaticScrollRef.current = true;\n messagesEndRef.current.scrollIntoView({\n behavior: \"auto\",\n });\n }\n };\n\n const handleScroll = () => {\n if (isProgrammaticScrollRef.current) {\n isProgrammaticScrollRef.current = false;\n return;\n }\n\n if (messagesContainerRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = messagesContainerRef.current;\n isUserScrollUpRef.current = scrollTop + clientHeight < scrollHeight;\n }\n };\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (container) {\n container.addEventListener(\"scroll\", handleScroll);\n }\n return () => {\n if (container) {\n container.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, []);\n\n useEffect(() => {\n const container = messagesContainerRef.current;\n if (!container) {\n return;\n }\n\n const mutationObserver = new MutationObserver(() => {\n if (!isUserScrollUpRef.current) {\n scrollToBottom();\n }\n });\n\n mutationObserver.observe(container, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n return () => {\n mutationObserver.disconnect();\n };\n }, []);\n\n useEffect(() => {\n isUserScrollUpRef.current = false;\n scrollToBottom();\n }, [messages.filter((m) => m.isTextMessage() && m.role === Role.User).length]);\n\n return { messagesEndRef, messagesContainerRef };\n}\n","import React, { useMemo, useState } from \"react\";\nimport * as DefaultIcons from \"./Icons\";\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode;\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode;\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode;\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode;\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode;\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode;\n\n /**\n * The icons to use for push to talk.\n * @default <PushToTalkIcon />\n */\n\n pushToTalkIcon?: React.ReactNode;\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[];\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string;\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string;\n\n /**\n * The message to display when an error occurs.\n * @default \"❌ An error occurred. Please try again.\"\n */\n error?: string;\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string;\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string;\n}\n\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":"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","names":["import_react","React","import_jsx_runtime"]}
|
|
@@ -526,6 +526,7 @@ var Header = ({}) => {
|
|
|
526
526
|
// src/components/chat/Messages.tsx
|
|
527
527
|
var import_react3 = require("react");
|
|
528
528
|
var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
529
|
+
var import_react_core = require("@copilotkit/react-core");
|
|
529
530
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
530
531
|
var Messages = ({
|
|
531
532
|
messages,
|
|
@@ -557,6 +558,7 @@ var Messages = ({
|
|
|
557
558
|
}
|
|
558
559
|
}
|
|
559
560
|
const { messagesEndRef, messagesContainerRef } = useScrollToBottom(messages);
|
|
561
|
+
const interrupt = (0, import_react_core.useLangGraphInterruptRender)();
|
|
560
562
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "copilotKitMessages", ref: messagesContainerRef, children: [
|
|
561
563
|
messages.map((message, index) => {
|
|
562
564
|
const isCurrentMessage = index === messages.length - 1;
|
|
@@ -615,6 +617,7 @@ var Messages = ({
|
|
|
615
617
|
);
|
|
616
618
|
}
|
|
617
619
|
}),
|
|
620
|
+
interrupt,
|
|
618
621
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("footer", { ref: messagesEndRef, children })
|
|
619
622
|
] });
|
|
620
623
|
};
|
|
@@ -747,7 +750,7 @@ var AutoResizingTextarea = (0, import_react4.forwardRef)(
|
|
|
747
750
|
var Textarea_default = AutoResizingTextarea;
|
|
748
751
|
|
|
749
752
|
// src/hooks/use-push-to-talk.tsx
|
|
750
|
-
var
|
|
753
|
+
var import_react_core2 = require("@copilotkit/react-core");
|
|
751
754
|
var import_react5 = require("react");
|
|
752
755
|
var startRecording = (mediaStreamRef, mediaRecorderRef, audioContextRef, recordedChunks, onStop) => __async(void 0, null, function* () {
|
|
753
756
|
if (!mediaStreamRef.current || !audioContextRef.current) {
|
|
@@ -802,8 +805,8 @@ var usePushToTalk = ({
|
|
|
802
805
|
const audioContextRef = (0, import_react5.useRef)(null);
|
|
803
806
|
const mediaRecorderRef = (0, import_react5.useRef)(null);
|
|
804
807
|
const recordedChunks = (0, import_react5.useRef)([]);
|
|
805
|
-
const generalContext = (0,
|
|
806
|
-
const messagesContext = (0,
|
|
808
|
+
const generalContext = (0, import_react_core2.useCopilotContext)();
|
|
809
|
+
const messagesContext = (0, import_react_core2.useCopilotMessagesContext)();
|
|
807
810
|
const context = __spreadValues(__spreadValues({}, generalContext), messagesContext);
|
|
808
811
|
const [startReadingFromMessageId, setStartReadingFromMessageId] = (0, import_react5.useState)(null);
|
|
809
812
|
(0, import_react5.useEffect)(() => {
|
|
@@ -851,11 +854,11 @@ var usePushToTalk = ({
|
|
|
851
854
|
};
|
|
852
855
|
|
|
853
856
|
// src/components/chat/Input.tsx
|
|
854
|
-
var
|
|
857
|
+
var import_react_core3 = require("@copilotkit/react-core");
|
|
855
858
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
856
859
|
var Input = ({ inProgress, onSend, isVisible = false }) => {
|
|
857
860
|
const context = useChatContext();
|
|
858
|
-
const copilotContext = (0,
|
|
861
|
+
const copilotContext = (0, import_react_core3.useCopilotContext)();
|
|
859
862
|
const pushToTalkConfigured = copilotContext.copilotApiConfig.textToSpeechUrl !== void 0 && copilotContext.copilotApiConfig.transcribeAudioUrl !== void 0;
|
|
860
863
|
const textareaRef = (0, import_react6.useRef)(null);
|
|
861
864
|
const handleDivClick = (event) => {
|
|
@@ -975,10 +978,10 @@ function RenderTextMessage(props) {
|
|
|
975
978
|
|
|
976
979
|
// src/components/chat/messages/RenderActionExecutionMessage.tsx
|
|
977
980
|
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
978
|
-
var
|
|
981
|
+
var import_react_core4 = require("@copilotkit/react-core");
|
|
979
982
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
980
983
|
function RenderActionExecutionMessage(props) {
|
|
981
|
-
const { chatComponentsCache } = (0,
|
|
984
|
+
const { chatComponentsCache } = (0, import_react_core4.useCopilotContext)();
|
|
982
985
|
const { message, inProgress, index, isCurrentMessage, actionResult, AssistantMessage: AssistantMessage2 } = props;
|
|
983
986
|
if (message.isActionExecutionMessage()) {
|
|
984
987
|
if (chatComponentsCache.current !== null && (chatComponentsCache.current.actions[message.name] || chatComponentsCache.current.actions["*"])) {
|
|
@@ -1100,10 +1103,10 @@ function RenderResultMessage(props) {
|
|
|
1100
1103
|
}
|
|
1101
1104
|
|
|
1102
1105
|
// src/components/chat/messages/RenderAgentStateMessage.tsx
|
|
1103
|
-
var
|
|
1106
|
+
var import_react_core5 = require("@copilotkit/react-core");
|
|
1104
1107
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1105
1108
|
function RenderAgentStateMessage(props) {
|
|
1106
|
-
const { chatComponentsCache } = (0,
|
|
1109
|
+
const { chatComponentsCache } = (0, import_react_core5.useCopilotContext)();
|
|
1107
1110
|
const { message, inProgress, index, isCurrentMessage, AssistantMessage: AssistantMessage2 } = props;
|
|
1108
1111
|
if (message.isAgentStateMessage()) {
|
|
1109
1112
|
let render;
|
|
@@ -1684,7 +1687,7 @@ var UserMessage = (props) => {
|
|
|
1684
1687
|
};
|
|
1685
1688
|
|
|
1686
1689
|
// src/components/chat/Suggestion.tsx
|
|
1687
|
-
var
|
|
1690
|
+
var import_react_core6 = require("@copilotkit/react-core");
|
|
1688
1691
|
var import_shared = require("@copilotkit/shared");
|
|
1689
1692
|
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
1690
1693
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
@@ -1719,7 +1722,7 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
|
|
|
1719
1722
|
for (const config of Object.values(chatSuggestionConfiguration)) {
|
|
1720
1723
|
try {
|
|
1721
1724
|
const numOfSuggestionsInstructions = config.minSuggestions === 0 ? `Produce up to ${config.maxSuggestions} suggestions. If there are no highly relevant suggestions you can think of, provide an empty array.` : `Produce between ${config.minSuggestions} and ${config.maxSuggestions} suggestions.`;
|
|
1722
|
-
const result = yield (0,
|
|
1725
|
+
const result = yield (0, import_react_core6.extract)({
|
|
1723
1726
|
context,
|
|
1724
1727
|
instructions: "Suggest what the user could say next. Provide clear, highly relevant suggestions. Do not literally suggest function calls. ",
|
|
1725
1728
|
data: config.instructions + "\n\n" + numOfSuggestionsInstructions + "\n\nAvailable tools: " + tools + "\n\n",
|
|
@@ -1778,12 +1781,12 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
|
|
|
1778
1781
|
|
|
1779
1782
|
// src/components/chat/Chat.tsx
|
|
1780
1783
|
var import_react12 = __toESM(require("react"));
|
|
1781
|
-
var
|
|
1784
|
+
var import_react_core9 = require("@copilotkit/react-core");
|
|
1782
1785
|
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
1783
1786
|
var import_shared3 = require("@copilotkit/shared");
|
|
1784
1787
|
|
|
1785
1788
|
// src/components/dev-console/utils.ts
|
|
1786
|
-
var
|
|
1789
|
+
var import_react_core7 = require("@copilotkit/react-core");
|
|
1787
1790
|
function shouldShowDevConsole(showDevConsole) {
|
|
1788
1791
|
if (typeof showDevConsole === "boolean") {
|
|
1789
1792
|
return showDevConsole;
|
|
@@ -1845,7 +1848,7 @@ function getPublishedCopilotKitVersion(current, forceCheck = false) {
|
|
|
1845
1848
|
}
|
|
1846
1849
|
function logReadables(context) {
|
|
1847
1850
|
console.log("%cCurrent Readables:", "font-size: 16px; font-weight: bold;");
|
|
1848
|
-
const readables = context.getContextString([],
|
|
1851
|
+
const readables = context.getContextString([], import_react_core7.defaultCopilotContextCategories).trim();
|
|
1849
1852
|
if (readables.length === 0) {
|
|
1850
1853
|
console.log("No readables found");
|
|
1851
1854
|
return;
|
|
@@ -1915,7 +1918,7 @@ function logMessages(context) {
|
|
|
1915
1918
|
}
|
|
1916
1919
|
|
|
1917
1920
|
// src/components/dev-console/console.tsx
|
|
1918
|
-
var
|
|
1921
|
+
var import_react_core8 = require("@copilotkit/react-core");
|
|
1919
1922
|
var import_react10 = require("react");
|
|
1920
1923
|
|
|
1921
1924
|
// src/components/dev-console/icons.tsx
|
|
@@ -2215,7 +2218,7 @@ function CopilotKitHelpModal() {
|
|
|
2215
2218
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2216
2219
|
function CopilotDevConsole() {
|
|
2217
2220
|
const currentVersion = import_shared2.COPILOTKIT_VERSION;
|
|
2218
|
-
const context = (0,
|
|
2221
|
+
const context = (0, import_react_core8.useCopilotContext)();
|
|
2219
2222
|
const [showDevConsole, setShowDevConsole] = (0, import_react10.useState)(false);
|
|
2220
2223
|
(0, import_react10.useEffect)(() => {
|
|
2221
2224
|
setShowDevConsole(shouldShowDevConsole(context.showDevConsole));
|
|
@@ -2379,8 +2382,8 @@ function DebugMenuButton({
|
|
|
2379
2382
|
checkForUpdates,
|
|
2380
2383
|
mode
|
|
2381
2384
|
}) {
|
|
2382
|
-
const context = (0,
|
|
2383
|
-
const messagesContext = (0,
|
|
2385
|
+
const context = (0, import_react_core8.useCopilotContext)();
|
|
2386
|
+
const messagesContext = (0, import_react_core8.useCopilotMessagesContext)();
|
|
2384
2387
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "bg-black top-24 w-52 text-right", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react11.Menu, { children: [
|
|
2385
2388
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react11.MenuButton, { className: `copilotKitDebugMenuButton ${mode === "compact" ? "compact" : ""}`, children: mode == "compact" ? "Debug" : /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
|
|
2386
2389
|
"Debug ",
|
|
@@ -2414,7 +2417,7 @@ function DebugMenuButton({
|
|
|
2414
2417
|
}
|
|
2415
2418
|
|
|
2416
2419
|
// src/components/chat/Chat.tsx
|
|
2417
|
-
var
|
|
2420
|
+
var import_react_core10 = require("@copilotkit/react-core");
|
|
2418
2421
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2419
2422
|
function CopilotChat({
|
|
2420
2423
|
instructions,
|
|
@@ -2437,7 +2440,7 @@ function CopilotChat({
|
|
|
2437
2440
|
AssistantMessage: AssistantMessage2 = AssistantMessage,
|
|
2438
2441
|
UserMessage: UserMessage2 = UserMessage
|
|
2439
2442
|
}) {
|
|
2440
|
-
const context = (0,
|
|
2443
|
+
const context = (0, import_react_core9.useCopilotContext)();
|
|
2441
2444
|
(0, import_react12.useEffect)(() => {
|
|
2442
2445
|
context.setChatInstructions(instructions || "");
|
|
2443
2446
|
}, [instructions]);
|
|
@@ -2521,7 +2524,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
2521
2524
|
stopGeneration: defaultStopGeneration,
|
|
2522
2525
|
runChatCompletion,
|
|
2523
2526
|
isLoading
|
|
2524
|
-
} = (0,
|
|
2527
|
+
} = (0, import_react_core9.useCopilotChat)({
|
|
2525
2528
|
id: (0, import_shared3.randomId)(),
|
|
2526
2529
|
makeSystemMessage
|
|
2527
2530
|
});
|
|
@@ -2533,8 +2536,8 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
2533
2536
|
(_a2 = suggestionsAbortControllerRef.current) == null ? void 0 : _a2.abort();
|
|
2534
2537
|
suggestionsAbortControllerRef.current = null;
|
|
2535
2538
|
};
|
|
2536
|
-
const generalContext = (0,
|
|
2537
|
-
const messagesContext = (0,
|
|
2539
|
+
const generalContext = (0, import_react_core9.useCopilotContext)();
|
|
2540
|
+
const messagesContext = (0, import_react_core9.useCopilotMessagesContext)();
|
|
2538
2541
|
const context = __spreadValues(__spreadValues({}, generalContext), messagesContext);
|
|
2539
2542
|
(0, import_react12.useEffect)(() => {
|
|
2540
2543
|
onInProgress == null ? void 0 : onInProgress(isLoading);
|
|
@@ -2602,7 +2605,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
2602
2605
|
});
|
|
2603
2606
|
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2604
2607
|
if (generalContext.agentSession) {
|
|
2605
|
-
yield (0,
|
|
2608
|
+
yield (0, import_react_core10.runAgent)(
|
|
2606
2609
|
generalContext.agentSession.agentName,
|
|
2607
2610
|
context,
|
|
2608
2611
|
appendMessage,
|
|
@@ -2613,7 +2616,7 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onS
|
|
|
2613
2616
|
});
|
|
2614
2617
|
const stopCurrentAgent = () => {
|
|
2615
2618
|
if (generalContext.agentSession) {
|
|
2616
|
-
(0,
|
|
2619
|
+
(0, import_react_core10.stopAgent)(generalContext.agentSession.agentName, context);
|
|
2617
2620
|
}
|
|
2618
2621
|
};
|
|
2619
2622
|
const setCurrentAgentState = (state) => {
|