@copilotkit/react-ui 1.3.7-fix-chat-interactions-rerenders.0 → 1.3.7
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 +5 -5
- package/dist/{chunk-CTPEKUNX.mjs → chunk-4FIGRRFS.mjs} +5 -7
- package/dist/chunk-4FIGRRFS.mjs.map +1 -0
- package/dist/{chunk-FUCEBN2P.mjs → chunk-6VYMULPK.mjs} +4 -4
- package/dist/{chunk-LGS6B47Q.mjs → chunk-7YQICPBC.mjs} +8 -8
- package/dist/{chunk-RF3KLUPD.mjs → chunk-AAY3WWWC.mjs} +2 -3
- package/dist/chunk-AAY3WWWC.mjs.map +1 -0
- package/dist/{chunk-HBZPOT37.mjs → chunk-BNCTYKEP.mjs} +2 -2
- package/dist/{chunk-GOTHQ665.mjs → chunk-DP5YVGNX.mjs} +2 -3
- package/dist/chunk-DP5YVGNX.mjs.map +1 -0
- package/dist/{chunk-PJNNEX4L.mjs → chunk-JQOSF44H.mjs} +2 -2
- package/dist/{chunk-QI3OM75G.mjs → chunk-RS6UPR5N.mjs} +2 -2
- package/dist/{chunk-YH2STM73.mjs → chunk-RWT7WRG2.mjs} +3 -3
- package/dist/chunk-RWT7WRG2.mjs.map +1 -0
- 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-GDNJRSD4.mjs → chunk-SHTMRY45.mjs} +8 -10
- package/dist/chunk-SHTMRY45.mjs.map +1 -0
- package/dist/{chunk-CPWFYV3U.mjs → chunk-TYYJR3LE.mjs} +2 -2
- package/dist/{chunk-MA5B5ELM.mjs → chunk-WHSD7DBC.mjs} +2 -3
- package/dist/chunk-WHSD7DBC.mjs.map +1 -0
- package/dist/components/chat/Chat.js +22 -30
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +10 -10
- package/dist/components/chat/Input.js +1 -2
- package/dist/components/chat/Input.js.map +1 -1
- package/dist/components/chat/Input.mjs +2 -2
- package/dist/components/chat/Messages.js +6 -6
- package/dist/components/chat/Messages.js.map +1 -1
- package/dist/components/chat/Messages.mjs +1 -1
- package/dist/components/chat/Modal.js +22 -30
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +11 -11
- package/dist/components/chat/Popup.js +22 -30
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +12 -12
- package/dist/components/chat/Sidebar.js +22 -30
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +12 -12
- package/dist/components/chat/index.js +22 -30
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +13 -13
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +22 -30
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +13 -13
- 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 +22 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +13 -13
- package/package.json +8 -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-FUCEBN2P.mjs.map → chunk-6VYMULPK.mjs.map} +0 -0
- /package/dist/{chunk-LGS6B47Q.mjs.map → chunk-7YQICPBC.mjs.map} +0 -0
- /package/dist/{chunk-HBZPOT37.mjs.map → chunk-BNCTYKEP.mjs.map} +0 -0
- /package/dist/{chunk-PJNNEX4L.mjs.map → chunk-JQOSF44H.mjs.map} +0 -0
- /package/dist/{chunk-QI3OM75G.mjs.map → chunk-RS6UPR5N.mjs.map} +0 -0
- /package/dist/{chunk-CPWFYV3U.mjs.map → chunk-TYYJR3LE.mjs.map} +0 -0
|
@@ -2,31 +2,31 @@ import "../chunk-JD7BAH7U.mjs";
|
|
|
2
2
|
import "../chunk-MRFF7GSQ.mjs";
|
|
3
3
|
import {
|
|
4
4
|
CopilotSidebar
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-TYYJR3LE.mjs";
|
|
6
6
|
import "../chunk-WB3YULQ4.mjs";
|
|
7
7
|
import {
|
|
8
8
|
CopilotPopup
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-JQOSF44H.mjs";
|
|
10
|
+
import "../chunk-6VYMULPK.mjs";
|
|
11
11
|
import "../chunk-FO7Z5LAL.mjs";
|
|
12
12
|
import "../chunk-FLV3J3VX.mjs";
|
|
13
13
|
import "../chunk-YOH25I6N.mjs";
|
|
14
14
|
import {
|
|
15
15
|
CopilotChat
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-7YQICPBC.mjs";
|
|
17
17
|
import "../chunk-V7W6IM2V.mjs";
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-RWT7WRG2.mjs";
|
|
19
|
+
import "../chunk-AAY3WWWC.mjs";
|
|
20
|
+
import "../chunk-DP5YVGNX.mjs";
|
|
21
|
+
import "../chunk-WHSD7DBC.mjs";
|
|
22
22
|
import "../chunk-KFQYJ5R5.mjs";
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-RS6UPR5N.mjs";
|
|
24
|
+
import "../chunk-4FIGRRFS.mjs";
|
|
25
25
|
import "../chunk-OTPAZXVR.mjs";
|
|
26
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-BNCTYKEP.mjs";
|
|
27
27
|
import "../chunk-YQFVRDNC.mjs";
|
|
28
28
|
import "../chunk-YQ3D5IQV.mjs";
|
|
29
|
-
import "../chunk-
|
|
29
|
+
import "../chunk-SHTMRY45.mjs";
|
|
30
30
|
import "../chunk-XSUSSWDS.mjs";
|
|
31
31
|
import {
|
|
32
32
|
useChatContext
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
import "../chunk-UPTB2MVO.mjs";
|
|
35
35
|
import "../chunk-FZC7X5PK.mjs";
|
|
36
36
|
import "../chunk-54JAUBUJ.mjs";
|
|
37
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-S5MBUNGN.mjs";
|
|
38
38
|
import "../chunk-MRXNTQOX.mjs";
|
|
39
39
|
export {
|
|
40
40
|
CopilotChat,
|
|
@@ -60,7 +60,6 @@ __export(use_push_to_talk_exports, {
|
|
|
60
60
|
});
|
|
61
61
|
module.exports = __toCommonJS(use_push_to_talk_exports);
|
|
62
62
|
var import_react_core = require("@copilotkit/react-core");
|
|
63
|
-
var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
64
63
|
var import_react = require("react");
|
|
65
64
|
var checkMicrophonePermission = () => __async(void 0, null, function* () {
|
|
66
65
|
try {
|
|
@@ -178,7 +177,7 @@ var usePushToTalk = ({
|
|
|
178
177
|
(message) => message.id === startReadingFromMessageId
|
|
179
178
|
);
|
|
180
179
|
const messagesAfterLast = context.messages.slice(lastMessageIndex + 1).filter(
|
|
181
|
-
(message) => message
|
|
180
|
+
(message) => message.isTextMessage() && message.role === "assistant"
|
|
182
181
|
);
|
|
183
182
|
const text = messagesAfterLast.map((message) => message.content).join("\n");
|
|
184
183
|
playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl, audioContextRef.current);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/use-push-to-talk.tsx"],"sourcesContent":["import { useCopilotContext, useCopilotMessagesContext } from \"@copilotkit/react-core\";\nimport { Message, TextMessage } from \"@copilotkit/runtime-client-gql\";\nimport { MutableRefObject, useEffect, useRef, useState } from \"react\";\n\nexport const checkMicrophonePermission = async () => {\n try {\n const permissionStatus = await navigator.permissions.query({\n name: \"microphone\" as PermissionName,\n });\n if (permissionStatus.state === \"granted\") {\n return true;\n } else {\n return false;\n }\n } catch (err) {\n console.error(\"Error checking microphone permission\", err);\n }\n};\n\nexport const requestMicAndPlaybackPermission = async () => {\n try {\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n const audioContext = new window.AudioContext();\n await audioContext.resume();\n return { stream, audioContext };\n } catch (err) {\n console.error(\"Error requesting microphone and playback permissions\", err);\n return null;\n }\n};\n\nconst startRecording = async (\n mediaStreamRef: MutableRefObject<MediaStream | null>,\n mediaRecorderRef: MutableRefObject<MediaRecorder | null>,\n audioContextRef: MutableRefObject<AudioContext | null>,\n recordedChunks: Blob[],\n onStop: () => void,\n) => {\n if (!mediaStreamRef.current || !audioContextRef.current) {\n mediaStreamRef.current = await navigator.mediaDevices.getUserMedia({ audio: true });\n audioContextRef.current = new window.AudioContext();\n await audioContextRef.current.resume();\n }\n\n mediaRecorderRef.current = new MediaRecorder(mediaStreamRef.current!);\n mediaRecorderRef.current.start(1000);\n mediaRecorderRef.current.ondataavailable = (event) => {\n recordedChunks.push(event.data);\n };\n mediaRecorderRef.current.onstop = onStop;\n};\n\nconst stopRecording = (mediaRecorderRef: MutableRefObject<MediaRecorder | null>) => {\n if (mediaRecorderRef.current && mediaRecorderRef.current.state !== \"inactive\") {\n mediaRecorderRef.current.stop();\n }\n};\n\nconst transcribeAudio = async (recordedChunks: Blob[], transcribeAudioUrl: string) => {\n const completeBlob = new Blob(recordedChunks, { type: \"audio/mp4\" });\n const formData = new FormData();\n formData.append(\"file\", completeBlob, \"recording.mp4\");\n\n const response = await fetch(transcribeAudioUrl, {\n method: \"POST\",\n body: formData,\n });\n\n if (!response.ok) {\n throw new Error(`Error: ${response.statusText}`);\n }\n\n const transcription = await response.json();\n return transcription.text;\n};\n\nconst playAudioResponse = (text: string, textToSpeechUrl: string, audioContext: AudioContext) => {\n const encodedText = encodeURIComponent(text);\n const url = `${textToSpeechUrl}?text=${encodedText}`;\n\n fetch(url)\n .then((response) => response.arrayBuffer())\n .then((arrayBuffer) => audioContext.decodeAudioData(arrayBuffer))\n .then((audioBuffer) => {\n const source = audioContext.createBufferSource();\n source.buffer = audioBuffer;\n source.connect(audioContext.destination);\n source.start(0);\n })\n .catch((error) => {\n console.error(\"Error with decoding audio data\", error);\n });\n};\n\nexport type PushToTalkState = \"idle\" | \"recording\" | \"transcribing\";\n\nexport type SendFunction = (text: string) => Promise<Message>;\n\nexport const usePushToTalk = ({\n sendFunction,\n inProgress,\n}: {\n sendFunction: SendFunction;\n inProgress: boolean;\n}) => {\n const [pushToTalkState, setPushToTalkState] = useState<PushToTalkState>(\"idle\");\n const mediaStreamRef = useRef<MediaStream | null>(null);\n const audioContextRef = useRef<AudioContext | null>(null);\n const mediaRecorderRef = useRef<MediaRecorder | null>(null);\n const recordedChunks = useRef<Blob[]>([]);\n const generalContext = useCopilotContext();\n const messagesContext = useCopilotMessagesContext();\n const context = { ...generalContext, ...messagesContext };\n const [startReadingFromMessageId, setStartReadingFromMessageId] = useState<string | null>(null);\n\n useEffect(() => {\n if (pushToTalkState === \"recording\") {\n startRecording(\n mediaStreamRef,\n mediaRecorderRef,\n audioContextRef,\n recordedChunks.current,\n () => {\n setPushToTalkState(\"transcribing\");\n },\n );\n } else {\n stopRecording(mediaRecorderRef);\n if (pushToTalkState === \"transcribing\") {\n transcribeAudio(recordedChunks.current, context.copilotApiConfig.transcribeAudioUrl!).then(\n async (transcription) => {\n recordedChunks.current = [];\n setPushToTalkState(\"idle\");\n const message = await sendFunction(transcription);\n setStartReadingFromMessageId(message.id);\n },\n );\n }\n }\n\n return () => {\n stopRecording(mediaRecorderRef);\n };\n }, [pushToTalkState]);\n\n useEffect(() => {\n if (inProgress === false && startReadingFromMessageId) {\n const lastMessageIndex = context.messages.findIndex(\n (message) => message.id === startReadingFromMessageId,\n );\n\n const messagesAfterLast = context.messages\n .slice(lastMessageIndex + 1)\n .filter(\n (message) => message
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/use-push-to-talk.tsx"],"sourcesContent":["import { useCopilotContext, useCopilotMessagesContext } from \"@copilotkit/react-core\";\nimport { Message, TextMessage } from \"@copilotkit/runtime-client-gql\";\nimport { MutableRefObject, useEffect, useRef, useState } from \"react\";\n\nexport const checkMicrophonePermission = async () => {\n try {\n const permissionStatus = await navigator.permissions.query({\n name: \"microphone\" as PermissionName,\n });\n if (permissionStatus.state === \"granted\") {\n return true;\n } else {\n return false;\n }\n } catch (err) {\n console.error(\"Error checking microphone permission\", err);\n }\n};\n\nexport const requestMicAndPlaybackPermission = async () => {\n try {\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n const audioContext = new window.AudioContext();\n await audioContext.resume();\n return { stream, audioContext };\n } catch (err) {\n console.error(\"Error requesting microphone and playback permissions\", err);\n return null;\n }\n};\n\nconst startRecording = async (\n mediaStreamRef: MutableRefObject<MediaStream | null>,\n mediaRecorderRef: MutableRefObject<MediaRecorder | null>,\n audioContextRef: MutableRefObject<AudioContext | null>,\n recordedChunks: Blob[],\n onStop: () => void,\n) => {\n if (!mediaStreamRef.current || !audioContextRef.current) {\n mediaStreamRef.current = await navigator.mediaDevices.getUserMedia({ audio: true });\n audioContextRef.current = new window.AudioContext();\n await audioContextRef.current.resume();\n }\n\n mediaRecorderRef.current = new MediaRecorder(mediaStreamRef.current!);\n mediaRecorderRef.current.start(1000);\n mediaRecorderRef.current.ondataavailable = (event) => {\n recordedChunks.push(event.data);\n };\n mediaRecorderRef.current.onstop = onStop;\n};\n\nconst stopRecording = (mediaRecorderRef: MutableRefObject<MediaRecorder | null>) => {\n if (mediaRecorderRef.current && mediaRecorderRef.current.state !== \"inactive\") {\n mediaRecorderRef.current.stop();\n }\n};\n\nconst transcribeAudio = async (recordedChunks: Blob[], transcribeAudioUrl: string) => {\n const completeBlob = new Blob(recordedChunks, { type: \"audio/mp4\" });\n const formData = new FormData();\n formData.append(\"file\", completeBlob, \"recording.mp4\");\n\n const response = await fetch(transcribeAudioUrl, {\n method: \"POST\",\n body: formData,\n });\n\n if (!response.ok) {\n throw new Error(`Error: ${response.statusText}`);\n }\n\n const transcription = await response.json();\n return transcription.text;\n};\n\nconst playAudioResponse = (text: string, textToSpeechUrl: string, audioContext: AudioContext) => {\n const encodedText = encodeURIComponent(text);\n const url = `${textToSpeechUrl}?text=${encodedText}`;\n\n fetch(url)\n .then((response) => response.arrayBuffer())\n .then((arrayBuffer) => audioContext.decodeAudioData(arrayBuffer))\n .then((audioBuffer) => {\n const source = audioContext.createBufferSource();\n source.buffer = audioBuffer;\n source.connect(audioContext.destination);\n source.start(0);\n })\n .catch((error) => {\n console.error(\"Error with decoding audio data\", error);\n });\n};\n\nexport type PushToTalkState = \"idle\" | \"recording\" | \"transcribing\";\n\nexport type SendFunction = (text: string) => Promise<Message>;\n\nexport const usePushToTalk = ({\n sendFunction,\n inProgress,\n}: {\n sendFunction: SendFunction;\n inProgress: boolean;\n}) => {\n const [pushToTalkState, setPushToTalkState] = useState<PushToTalkState>(\"idle\");\n const mediaStreamRef = useRef<MediaStream | null>(null);\n const audioContextRef = useRef<AudioContext | null>(null);\n const mediaRecorderRef = useRef<MediaRecorder | null>(null);\n const recordedChunks = useRef<Blob[]>([]);\n const generalContext = useCopilotContext();\n const messagesContext = useCopilotMessagesContext();\n const context = { ...generalContext, ...messagesContext };\n const [startReadingFromMessageId, setStartReadingFromMessageId] = useState<string | null>(null);\n\n useEffect(() => {\n if (pushToTalkState === \"recording\") {\n startRecording(\n mediaStreamRef,\n mediaRecorderRef,\n audioContextRef,\n recordedChunks.current,\n () => {\n setPushToTalkState(\"transcribing\");\n },\n );\n } else {\n stopRecording(mediaRecorderRef);\n if (pushToTalkState === \"transcribing\") {\n transcribeAudio(recordedChunks.current, context.copilotApiConfig.transcribeAudioUrl!).then(\n async (transcription) => {\n recordedChunks.current = [];\n setPushToTalkState(\"idle\");\n const message = await sendFunction(transcription);\n setStartReadingFromMessageId(message.id);\n },\n );\n }\n }\n\n return () => {\n stopRecording(mediaRecorderRef);\n };\n }, [pushToTalkState]);\n\n useEffect(() => {\n if (inProgress === false && startReadingFromMessageId) {\n const lastMessageIndex = context.messages.findIndex(\n (message) => message.id === startReadingFromMessageId,\n );\n\n const messagesAfterLast = context.messages\n .slice(lastMessageIndex + 1)\n .filter(\n (message) => message.isTextMessage() && message.role === \"assistant\",\n ) as TextMessage[];\n\n const text = messagesAfterLast.map((message) => message.content).join(\"\\n\");\n playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl!, audioContextRef.current!);\n\n setStartReadingFromMessageId(null);\n }\n }, [startReadingFromMessageId, inProgress]);\n\n return { pushToTalkState, setPushToTalkState };\n};\n"],"mappings":"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","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -540,10 +540,10 @@ var Messages = ({
|
|
|
540
540
|
messages = [...initialMessages, ...messages];
|
|
541
541
|
const actionResults = {};
|
|
542
542
|
for (let i = 0; i < messages.length; i++) {
|
|
543
|
-
if (messages[i]
|
|
543
|
+
if (messages[i].isActionExecutionMessage()) {
|
|
544
544
|
const id = messages[i].id;
|
|
545
545
|
const resultMessage = messages.find(
|
|
546
|
-
(message) => message
|
|
546
|
+
(message) => message.isResultMessage() && message.actionExecutionId === id
|
|
547
547
|
);
|
|
548
548
|
if (resultMessage) {
|
|
549
549
|
actionResults[id] = import_runtime_client_gql.ResultMessage.decodeResult(resultMessage.result || "");
|
|
@@ -564,7 +564,7 @@ var Messages = ({
|
|
|
564
564
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "copilotKitMessages", children: [
|
|
565
565
|
messages.map((message, index) => {
|
|
566
566
|
const isCurrentMessage = index === messages.length - 1;
|
|
567
|
-
if (message
|
|
567
|
+
if (message.isTextMessage()) {
|
|
568
568
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
569
569
|
RenderTextMessage2,
|
|
570
570
|
{
|
|
@@ -575,7 +575,7 @@ var Messages = ({
|
|
|
575
575
|
},
|
|
576
576
|
index
|
|
577
577
|
);
|
|
578
|
-
} else if (message
|
|
578
|
+
} else if (message.isActionExecutionMessage()) {
|
|
579
579
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
580
580
|
RenderActionExecutionMessage2,
|
|
581
581
|
{
|
|
@@ -587,7 +587,7 @@ var Messages = ({
|
|
|
587
587
|
},
|
|
588
588
|
index
|
|
589
589
|
);
|
|
590
|
-
} else if (message
|
|
590
|
+
} else if (message.isAgentStateMessage()) {
|
|
591
591
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
592
592
|
RenderAgentStateMessage2,
|
|
593
593
|
{
|
|
@@ -598,7 +598,7 @@ var Messages = ({
|
|
|
598
598
|
},
|
|
599
599
|
index
|
|
600
600
|
);
|
|
601
|
-
} else if (message
|
|
601
|
+
} else if (message.isResultMessage()) {
|
|
602
602
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
603
603
|
RenderResultMessage2,
|
|
604
604
|
{
|
|
@@ -685,7 +685,6 @@ var Textarea_default = AutoResizingTextarea;
|
|
|
685
685
|
|
|
686
686
|
// src/hooks/use-push-to-talk.tsx
|
|
687
687
|
var import_react_core = require("@copilotkit/react-core");
|
|
688
|
-
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
689
688
|
var import_react5 = require("react");
|
|
690
689
|
var startRecording = (mediaStreamRef, mediaRecorderRef, audioContextRef, recordedChunks, onStop) => __async(void 0, null, function* () {
|
|
691
690
|
if (!mediaStreamRef.current || !audioContextRef.current) {
|
|
@@ -778,7 +777,7 @@ var usePushToTalk = ({
|
|
|
778
777
|
(message) => message.id === startReadingFromMessageId
|
|
779
778
|
);
|
|
780
779
|
const messagesAfterLast = context.messages.slice(lastMessageIndex + 1).filter(
|
|
781
|
-
(message) => message
|
|
780
|
+
(message) => message.isTextMessage() && message.role === "assistant"
|
|
782
781
|
);
|
|
783
782
|
const text = messagesAfterLast.map((message) => message.content).join("\n");
|
|
784
783
|
playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl, audioContextRef.current);
|
|
@@ -866,9 +865,6 @@ var ResponseButton = ({ onClick, inProgress }) => {
|
|
|
866
865
|
] });
|
|
867
866
|
};
|
|
868
867
|
|
|
869
|
-
// src/components/chat/messages/RenderTextMessage.tsx
|
|
870
|
-
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
871
|
-
|
|
872
868
|
// src/components/chat/Markdown.tsx
|
|
873
869
|
var import_react8 = require("react");
|
|
874
870
|
var import_react_markdown = __toESM(require("react-markdown"));
|
|
@@ -1342,7 +1338,7 @@ var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
|
1342
1338
|
function RenderTextMessage(props) {
|
|
1343
1339
|
const { message, inProgress, index, isCurrentMessage } = props;
|
|
1344
1340
|
const { icons } = useChatContext();
|
|
1345
|
-
if (message
|
|
1341
|
+
if (message.isTextMessage()) {
|
|
1346
1342
|
if (message.role === "user") {
|
|
1347
1343
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message.content }, index);
|
|
1348
1344
|
} else if (message.role == "assistant") {
|
|
@@ -1352,14 +1348,14 @@ function RenderTextMessage(props) {
|
|
|
1352
1348
|
}
|
|
1353
1349
|
|
|
1354
1350
|
// src/components/chat/messages/RenderActionExecutionMessage.tsx
|
|
1355
|
-
var
|
|
1351
|
+
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
1356
1352
|
var import_react_core3 = require("@copilotkit/react-core");
|
|
1357
1353
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1358
1354
|
function RenderActionExecutionMessage(props) {
|
|
1359
1355
|
const { message, inProgress, index, isCurrentMessage, actionResult } = props;
|
|
1360
1356
|
const { chatComponentsCache } = (0, import_react_core3.useCopilotContext)();
|
|
1361
1357
|
const { icons } = useChatContext();
|
|
1362
|
-
if (message
|
|
1358
|
+
if (message.isActionExecutionMessage()) {
|
|
1363
1359
|
if (chatComponentsCache.current !== null && chatComponentsCache.current.actions[message.name]) {
|
|
1364
1360
|
const render = chatComponentsCache.current.actions[message.name];
|
|
1365
1361
|
if (typeof render === "string") {
|
|
@@ -1377,7 +1373,7 @@ function RenderActionExecutionMessage(props) {
|
|
|
1377
1373
|
let status = "inProgress";
|
|
1378
1374
|
if (actionResult !== void 0) {
|
|
1379
1375
|
status = "complete";
|
|
1380
|
-
} else if (message.status.code !==
|
|
1376
|
+
} else if (message.status.code !== import_runtime_client_gql2.MessageStatusCode.Pending) {
|
|
1381
1377
|
status = "executing";
|
|
1382
1378
|
}
|
|
1383
1379
|
try {
|
|
@@ -1420,25 +1416,23 @@ function RenderActionExecutionMessage(props) {
|
|
|
1420
1416
|
}
|
|
1421
1417
|
|
|
1422
1418
|
// src/components/chat/messages/RenderResultMessage.tsx
|
|
1423
|
-
var import_runtime_client_gql5 = require("@copilotkit/runtime-client-gql");
|
|
1424
1419
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1425
1420
|
function RenderResultMessage(props) {
|
|
1426
1421
|
const { message, inProgress, index, isCurrentMessage } = props;
|
|
1427
1422
|
const { icons } = useChatContext();
|
|
1428
|
-
if (message
|
|
1423
|
+
if (message.isResultMessage() && inProgress && isCurrentMessage) {
|
|
1429
1424
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: icons.spinnerIcon }, index);
|
|
1430
1425
|
}
|
|
1431
1426
|
}
|
|
1432
1427
|
|
|
1433
1428
|
// src/components/chat/messages/RenderAgentStateMessage.tsx
|
|
1434
|
-
var import_runtime_client_gql6 = require("@copilotkit/runtime-client-gql");
|
|
1435
1429
|
var import_react_core4 = require("@copilotkit/react-core");
|
|
1436
1430
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1437
1431
|
function RenderAgentStateMessage(props) {
|
|
1438
1432
|
const { message, inProgress, index, isCurrentMessage } = props;
|
|
1439
1433
|
const { chatComponentsCache } = (0, import_react_core4.useCopilotContext)();
|
|
1440
1434
|
const { icons } = useChatContext();
|
|
1441
|
-
if (message
|
|
1435
|
+
if (message.isAgentStateMessage()) {
|
|
1442
1436
|
let render;
|
|
1443
1437
|
if (chatComponentsCache.current !== null) {
|
|
1444
1438
|
render = chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-${message.nodeName}`] || chatComponentsCache.current.coAgentStateRenders[`${message.agentName}-global`];
|
|
@@ -1491,7 +1485,7 @@ function RenderAgentStateMessage(props) {
|
|
|
1491
1485
|
// src/components/chat/Suggestion.tsx
|
|
1492
1486
|
var import_react_core5 = require("@copilotkit/react-core");
|
|
1493
1487
|
var import_shared = require("@copilotkit/shared");
|
|
1494
|
-
var
|
|
1488
|
+
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
1495
1489
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1496
1490
|
function Suggestion({ title, message, onClick, partial, className }) {
|
|
1497
1491
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
@@ -1527,7 +1521,7 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
|
|
|
1527
1521
|
context,
|
|
1528
1522
|
instructions: "Suggest what the user could say next. Provide clear, highly relevant suggestions. Do not literally suggest function calls. " + config.instructions + "\n\n" + numOfSuggestionsInstructions,
|
|
1529
1523
|
data: "Available tools: " + tools + "\n\n",
|
|
1530
|
-
requestType:
|
|
1524
|
+
requestType: import_runtime_client_gql3.CopilotRequestType.Task,
|
|
1531
1525
|
parameters: [
|
|
1532
1526
|
{
|
|
1533
1527
|
name: "suggestions",
|
|
@@ -1583,13 +1577,11 @@ var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggest
|
|
|
1583
1577
|
// src/components/chat/Chat.tsx
|
|
1584
1578
|
var import_react11 = __toESM(require("react"));
|
|
1585
1579
|
var import_react_core8 = require("@copilotkit/react-core");
|
|
1586
|
-
var
|
|
1580
|
+
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
1587
1581
|
var import_shared3 = require("@copilotkit/shared");
|
|
1588
1582
|
|
|
1589
1583
|
// src/components/dev-console/utils.ts
|
|
1590
1584
|
var import_react_core6 = require("@copilotkit/react-core");
|
|
1591
|
-
var import_runtime_client_gql8 = require("@copilotkit/runtime-client-gql");
|
|
1592
|
-
var import_runtime_client_gql9 = require("@copilotkit/runtime-client-gql");
|
|
1593
1585
|
function shouldShowDevConsole(showDevConsole) {
|
|
1594
1586
|
if (typeof showDevConsole === "boolean") {
|
|
1595
1587
|
return showDevConsole;
|
|
@@ -1679,7 +1671,7 @@ function logMessages(context) {
|
|
|
1679
1671
|
return;
|
|
1680
1672
|
}
|
|
1681
1673
|
const tableData = context.messages.map((message) => {
|
|
1682
|
-
if (message
|
|
1674
|
+
if (message.isTextMessage()) {
|
|
1683
1675
|
return {
|
|
1684
1676
|
id: message.id,
|
|
1685
1677
|
type: "TextMessage",
|
|
@@ -1688,7 +1680,7 @@ function logMessages(context) {
|
|
|
1688
1680
|
scope: void 0,
|
|
1689
1681
|
content: message.content
|
|
1690
1682
|
};
|
|
1691
|
-
} else if (message
|
|
1683
|
+
} else if (message.isActionExecutionMessage()) {
|
|
1692
1684
|
return {
|
|
1693
1685
|
id: message.id,
|
|
1694
1686
|
type: "ActionExecutionMessage",
|
|
@@ -1697,7 +1689,7 @@ function logMessages(context) {
|
|
|
1697
1689
|
scope: message.scope,
|
|
1698
1690
|
content: message.arguments
|
|
1699
1691
|
};
|
|
1700
|
-
} else if (message
|
|
1692
|
+
} else if (message.isResultMessage()) {
|
|
1701
1693
|
return {
|
|
1702
1694
|
id: message.id,
|
|
1703
1695
|
type: "ResultMessage",
|
|
@@ -1706,7 +1698,7 @@ function logMessages(context) {
|
|
|
1706
1698
|
scope: message.actionExecutionId,
|
|
1707
1699
|
content: message.result
|
|
1708
1700
|
};
|
|
1709
|
-
} else if (message
|
|
1701
|
+
} else if (message.isAgentStateMessage()) {
|
|
1710
1702
|
return {
|
|
1711
1703
|
id: message.id,
|
|
1712
1704
|
type: `AgentStateMessage (running: ${message.running})`,
|
|
@@ -2137,9 +2129,9 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
|
|
|
2137
2129
|
const sendMessage = (messageContent) => __async(void 0, null, function* () {
|
|
2138
2130
|
abortSuggestions();
|
|
2139
2131
|
setCurrentSuggestions([]);
|
|
2140
|
-
const message = new
|
|
2132
|
+
const message = new import_runtime_client_gql4.TextMessage({
|
|
2141
2133
|
content: messageContent,
|
|
2142
|
-
role:
|
|
2134
|
+
role: import_runtime_client_gql4.Role.User
|
|
2143
2135
|
});
|
|
2144
2136
|
if (onSubmitMessage) {
|
|
2145
2137
|
try {
|