@copilotkit/react-ui 1.3.16-pre.11 → 1.3.16-pre.12
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 +21 -5
- package/dist/{chunk-ORHE7FYT.mjs → chunk-2BAND4IT.mjs} +103 -7
- package/dist/chunk-2BAND4IT.mjs.map +1 -0
- package/dist/{chunk-M2NVAJQA.mjs → chunk-5XQEL3WQ.mjs} +2 -2
- package/dist/{chunk-PY7YBFPA.mjs → chunk-DXMPY4SG.mjs} +2 -2
- package/dist/{chunk-H5CXJBR5.mjs → chunk-OG2XHQQM.mjs} +6 -2
- package/dist/chunk-OG2XHQQM.mjs.map +1 -0
- package/dist/components/chat/Chat.d.ts +50 -5
- package/dist/components/chat/Chat.js +101 -6
- package/dist/components/chat/Chat.js.map +1 -1
- package/dist/components/chat/Chat.mjs +1 -1
- package/dist/components/chat/Modal.d.ts +1 -1
- package/dist/components/chat/Modal.js +105 -6
- package/dist/components/chat/Modal.js.map +1 -1
- package/dist/components/chat/Modal.mjs +2 -2
- package/dist/components/chat/Popup.js +105 -6
- package/dist/components/chat/Popup.js.map +1 -1
- package/dist/components/chat/Popup.mjs +3 -3
- package/dist/components/chat/Sidebar.js +105 -6
- package/dist/components/chat/Sidebar.js.map +1 -1
- package/dist/components/chat/Sidebar.mjs +3 -3
- package/dist/components/chat/index.js +105 -6
- package/dist/components/chat/index.js.map +1 -1
- package/dist/components/chat/index.mjs +4 -4
- package/dist/components/index.js +105 -6
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +4 -4
- package/dist/index.js +107 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/package.json +7 -7
- package/src/components/chat/Chat.tsx +166 -7
- package/src/components/chat/Modal.tsx +4 -0
- package/dist/chunk-H5CXJBR5.mjs.map +0 -1
- package/dist/chunk-ORHE7FYT.mjs.map +0 -1
- /package/dist/{chunk-M2NVAJQA.mjs.map → chunk-5XQEL3WQ.mjs.map} +0 -0
- /package/dist/{chunk-PY7YBFPA.mjs.map → chunk-DXMPY4SG.mjs.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
# ui
|
|
2
2
|
|
|
3
|
-
## 1.3.16-pre.
|
|
3
|
+
## 1.3.16-pre.12
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- Add latest change from main
|
|
8
8
|
- Updated dependencies
|
|
9
|
-
- @copilotkit/
|
|
10
|
-
- @copilotkit/
|
|
11
|
-
- @copilotkit/shared@1.3.16-pre.
|
|
9
|
+
- @copilotkit/runtime-client-gql@1.3.16-pre.12
|
|
10
|
+
- @copilotkit/react-core@1.3.16-pre.12
|
|
11
|
+
- @copilotkit/shared@1.3.16-pre.12
|
|
12
|
+
|
|
13
|
+
## 1.3.16-mme-reset-chat.11
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- 164ce73: Add reset and threadId to useCopilotChat
|
|
18
|
+
- f3ce10a: Add custom stop/reload
|
|
19
|
+
- Merge main
|
|
20
|
+
- c7df09a: Move threadId to context
|
|
21
|
+
- Updated dependencies [164ce73]
|
|
22
|
+
- Updated dependencies [f3ce10a]
|
|
23
|
+
- Updated dependencies
|
|
24
|
+
- Updated dependencies [c7df09a]
|
|
25
|
+
- @copilotkit/runtime-client-gql@1.3.16-mme-reset-chat.11
|
|
26
|
+
- @copilotkit/react-core@1.3.16-mme-reset-chat.11
|
|
27
|
+
- @copilotkit/shared@1.3.16-mme-reset-chat.11
|
|
12
28
|
|
|
13
29
|
## 1.3.16-mme-revert-rxjs-changes.10
|
|
14
30
|
|
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
} from "./chunk-CBBFRI3Q.mjs";
|
|
33
33
|
import {
|
|
34
34
|
__async,
|
|
35
|
+
__spreadProps,
|
|
35
36
|
__spreadValues
|
|
36
37
|
} from "./chunk-MRXNTQOX.mjs";
|
|
37
38
|
|
|
@@ -44,6 +45,7 @@ import {
|
|
|
44
45
|
} from "@copilotkit/react-core";
|
|
45
46
|
import { Role, TextMessage } from "@copilotkit/runtime-client-gql";
|
|
46
47
|
import { randomId } from "@copilotkit/shared";
|
|
48
|
+
import { runAgent, stopAgent } from "@copilotkit/react-core";
|
|
47
49
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
48
50
|
function CopilotChat({
|
|
49
51
|
instructions,
|
|
@@ -51,6 +53,8 @@ function CopilotChat({
|
|
|
51
53
|
makeSystemMessage,
|
|
52
54
|
showResponseButton = true,
|
|
53
55
|
onInProgress,
|
|
56
|
+
onStopGeneration,
|
|
57
|
+
onReloadMessages,
|
|
54
58
|
Messages: Messages2 = Messages,
|
|
55
59
|
RenderTextMessage: RenderTextMessage2 = RenderTextMessage,
|
|
56
60
|
RenderActionExecutionMessage: RenderActionExecutionMessage2 = RenderActionExecutionMessage,
|
|
@@ -73,7 +77,13 @@ function CopilotChat({
|
|
|
73
77
|
sendMessage,
|
|
74
78
|
stopGeneration,
|
|
75
79
|
reloadMessages
|
|
76
|
-
} = useCopilotChatLogic(
|
|
80
|
+
} = useCopilotChatLogic(
|
|
81
|
+
makeSystemMessage,
|
|
82
|
+
onInProgress,
|
|
83
|
+
onSubmitMessage,
|
|
84
|
+
onStopGeneration,
|
|
85
|
+
onReloadMessages
|
|
86
|
+
);
|
|
77
87
|
const chatContext = React.useContext(ChatContext);
|
|
78
88
|
const isVisible = chatContext ? chatContext.open : true;
|
|
79
89
|
return /* @__PURE__ */ jsxs(WrappedCopilotChat, { icons, labels, className, children: [
|
|
@@ -129,8 +139,15 @@ function WrappedCopilotChat({
|
|
|
129
139
|
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
130
140
|
}
|
|
131
141
|
var SUGGESTIONS_DEBOUNCE_TIMEOUT = 1e3;
|
|
132
|
-
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) => {
|
|
133
|
-
|
|
142
|
+
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
143
|
+
var _a;
|
|
144
|
+
const {
|
|
145
|
+
visibleMessages,
|
|
146
|
+
appendMessage,
|
|
147
|
+
reloadMessages: defaultReloadMessages,
|
|
148
|
+
stopGeneration: defaultStopGeneration,
|
|
149
|
+
isLoading
|
|
150
|
+
} = useCopilotChat({
|
|
134
151
|
id: randomId(),
|
|
135
152
|
makeSystemMessage
|
|
136
153
|
});
|
|
@@ -138,8 +155,8 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
|
|
|
138
155
|
const suggestionsAbortControllerRef = useRef(null);
|
|
139
156
|
const debounceTimerRef = useRef();
|
|
140
157
|
const abortSuggestions = () => {
|
|
141
|
-
var
|
|
142
|
-
(
|
|
158
|
+
var _a2;
|
|
159
|
+
(_a2 = suggestionsAbortControllerRef.current) == null ? void 0 : _a2.abort();
|
|
143
160
|
suggestionsAbortControllerRef.current = null;
|
|
144
161
|
};
|
|
145
162
|
const generalContext = useCopilotContext();
|
|
@@ -165,7 +182,13 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
|
|
|
165
182
|
return () => {
|
|
166
183
|
clearTimeout(debounceTimerRef.current);
|
|
167
184
|
};
|
|
168
|
-
}, [
|
|
185
|
+
}, [
|
|
186
|
+
isLoading,
|
|
187
|
+
context.chatSuggestionConfiguration,
|
|
188
|
+
// hackish way to trigger suggestions reload on reset, but better than moving suggestions to the
|
|
189
|
+
// global context
|
|
190
|
+
visibleMessages.length == 0
|
|
191
|
+
]);
|
|
169
192
|
const sendMessage = (messageContent) => __async(void 0, null, function* () {
|
|
170
193
|
abortSuggestions();
|
|
171
194
|
setCurrentSuggestions([]);
|
|
@@ -183,6 +206,79 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
|
|
|
183
206
|
appendMessage(message);
|
|
184
207
|
return message;
|
|
185
208
|
});
|
|
209
|
+
const messages = visibleMessages;
|
|
210
|
+
const { setMessages } = messagesContext;
|
|
211
|
+
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
212
|
+
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
213
|
+
if (generalContext.agentSession) {
|
|
214
|
+
generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
|
|
215
|
+
nodeName: void 0,
|
|
216
|
+
threadId: void 0
|
|
217
|
+
}));
|
|
218
|
+
generalContext.setCoagentStates((prevAgentStates) => {
|
|
219
|
+
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
220
|
+
[generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
|
|
221
|
+
threadId: void 0,
|
|
222
|
+
nodeName: void 0,
|
|
223
|
+
runId: void 0
|
|
224
|
+
})
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
230
|
+
if (generalContext.agentSession) {
|
|
231
|
+
yield runAgent(generalContext.agentSession.agentName, context, appendMessage, hint);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
const stopCurrentAgent = () => {
|
|
235
|
+
if (generalContext.agentSession) {
|
|
236
|
+
stopAgent(generalContext.agentSession.agentName, context);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
const setCurrentAgentState = (state) => {
|
|
240
|
+
if (generalContext.agentSession) {
|
|
241
|
+
generalContext.setCoagentStates((prevAgentStates) => {
|
|
242
|
+
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
243
|
+
[generalContext.agentSession.agentName]: {
|
|
244
|
+
state
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
function stopGeneration() {
|
|
251
|
+
if (onStopGeneration) {
|
|
252
|
+
onStopGeneration({
|
|
253
|
+
messages,
|
|
254
|
+
setMessages,
|
|
255
|
+
stopGeneration: defaultStopGeneration,
|
|
256
|
+
currentAgentName,
|
|
257
|
+
restartCurrentAgent,
|
|
258
|
+
stopCurrentAgent,
|
|
259
|
+
runCurrentAgent,
|
|
260
|
+
setCurrentAgentState
|
|
261
|
+
});
|
|
262
|
+
} else {
|
|
263
|
+
defaultStopGeneration();
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function reloadMessages() {
|
|
267
|
+
if (onReloadMessages) {
|
|
268
|
+
onReloadMessages({
|
|
269
|
+
messages,
|
|
270
|
+
setMessages,
|
|
271
|
+
stopGeneration: defaultStopGeneration,
|
|
272
|
+
currentAgentName,
|
|
273
|
+
restartCurrentAgent,
|
|
274
|
+
stopCurrentAgent,
|
|
275
|
+
runCurrentAgent,
|
|
276
|
+
setCurrentAgentState
|
|
277
|
+
});
|
|
278
|
+
} else {
|
|
279
|
+
defaultReloadMessages();
|
|
280
|
+
}
|
|
281
|
+
}
|
|
186
282
|
return {
|
|
187
283
|
visibleMessages,
|
|
188
284
|
isLoading,
|
|
@@ -198,4 +294,4 @@ export {
|
|
|
198
294
|
WrappedCopilotChat,
|
|
199
295
|
useCopilotChatLogic
|
|
200
296
|
};
|
|
201
|
-
//# sourceMappingURL=chunk-
|
|
297
|
+
//# sourceMappingURL=chunk-2BAND4IT.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat/Chat.tsx"],"sourcesContent":["/**\n * <br/>\n * <img src=\"/images/CopilotChat.gif\" width=\"500\" />\n *\n * A chatbot panel component for the CopilotKit framework. The component allows for a high degree\n * of customization through various props and custom CSS.\n *\n * ## Install Dependencies\n *\n * This component is part of the [@copilotkit/react-ui](https://npmjs.com/package/@copilotkit/react-ui) package.\n *\n * ```shell npm2yarn \\\"@copilotkit/react-ui\"\\\n * npm install @copilotkit/react-core @copilotkit/react-ui\n * ```\n *\n * ## Usage\n *\n * ```tsx\n * import { CopilotChat } from \"@copilotkit/react-ui\";\n * import \"@copilotkit/react-ui/styles.css\";\n *\n * <CopilotChat\n * labels={{\n * title: \"Your Assistant\",\n * initial: \"Hi! 👋 How can I assist you today?\",\n * }}\n * />\n * ```\n *\n * ### Look & Feel\n *\n * By default, CopilotKit components do not have any styles. You can import CopilotKit's stylesheet at the root of your project:\n * ```tsx title=\"YourRootComponent.tsx\"\n * ...\n * import \"@copilotkit/react-ui/styles.css\"; // [!code highlight]\n *\n * export function YourRootComponent() {\n * return (\n * <CopilotKit>\n * ...\n * </CopilotKit>\n * );\n * }\n * ```\n * For more information about how to customize the styles, check out the [Customize Look & Feel](/guides/custom-look-and-feel/customize-built-in-ui-components) guide.\n */\n\nimport {\n ChatContext,\n ChatContextProvider,\n CopilotChatIcons,\n CopilotChatLabels,\n} from \"./ChatContext\";\nimport { Messages as DefaultMessages } from \"./Messages\";\nimport { Input as DefaultInput } from \"./Input\";\nimport { ResponseButton as DefaultResponseButton } from \"./Response\";\nimport { RenderTextMessage as DefaultRenderTextMessage } from \"./messages/RenderTextMessage\";\nimport { RenderActionExecutionMessage as DefaultRenderActionExecutionMessage } from \"./messages/RenderActionExecutionMessage\";\nimport { RenderResultMessage as DefaultRenderResultMessage } from \"./messages/RenderResultMessage\";\nimport { RenderAgentStateMessage as DefaultRenderAgentStateMessage } from \"./messages/RenderAgentStateMessage\";\nimport { Suggestion } from \"./Suggestion\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport {\n SystemMessageFunction,\n useCopilotChat,\n useCopilotContext,\n useCopilotMessagesContext,\n} from \"@copilotkit/react-core\";\nimport { reloadSuggestions } from \"./Suggestion\";\nimport { CopilotChatSuggestion } from \"../../types/suggestions\";\nimport { Message, Role, TextMessage } from \"@copilotkit/runtime-client-gql\";\nimport { InputProps, MessagesProps, RenderMessageProps, ResponseButtonProps } from \"./props\";\nimport { randomId } from \"@copilotkit/shared\";\n\nimport { CopilotDevConsole } from \"../dev-console\";\nimport { HintFunction, runAgent, stopAgent } from \"@copilotkit/react-core\";\n\n/**\n * Props for CopilotChat component.\n */\nexport interface CopilotChatProps {\n /**\n * Custom instructions to be added to the system message. Use this property to\n * provide additional context or guidance to the language model, influencing\n * its responses. These instructions can include specific directions,\n * preferences, or criteria that the model should consider when generating\n * its output, thereby tailoring the conversation more precisely to the\n * user's needs or the application's requirements.\n */\n instructions?: string;\n\n /**\n * A callback that gets called when the in progress state changes.\n */\n onInProgress?: (inProgress: boolean) => void;\n\n /**\n * A callback that gets called when a new message it submitted.\n */\n onSubmitMessage?: (message: string) => void | Promise<void>;\n\n /**\n * A custom stop generation function.\n */\n onStopGeneration?: OnStopGeneration;\n\n /**\n * A custom reload messages function.\n */\n onReloadMessages?: OnReloadMessages;\n\n /**\n * Icons can be used to set custom icons for the chat window.\n */\n icons?: CopilotChatIcons;\n\n /**\n * Labels can be used to set custom labels for the chat window.\n */\n labels?: CopilotChatLabels;\n\n /**\n * A function that takes in context string and instructions and returns\n * the system message to include in the chat request.\n * Use this to completely override the system message, when providing\n * instructions is not enough.\n */\n makeSystemMessage?: SystemMessageFunction;\n\n /**\n * Whether to show the response button.\n * @default true\n */\n showResponseButton?: boolean;\n\n /**\n * A custom Messages component to use instead of the default.\n */\n Messages?: React.ComponentType<MessagesProps>;\n\n /**\n * A custom RenderTextMessage component to use instead of the default.\n */\n RenderTextMessage?: React.ComponentType<RenderMessageProps>;\n\n /**\n * A custom RenderActionExecutionMessage component to use instead of the default.\n */\n RenderActionExecutionMessage?: React.ComponentType<RenderMessageProps>;\n\n /**\n * A custom RenderAgentStateMessage component to use instead of the default.\n */\n RenderAgentStateMessage?: React.ComponentType<RenderMessageProps>;\n\n /**\n * A custom RenderResultMessage component to use instead of the default.\n */\n RenderResultMessage?: React.ComponentType<RenderMessageProps>;\n\n /**\n * A custom Input component to use instead of the default.\n */\n Input?: React.ComponentType<InputProps>;\n\n /**\n * A custom ResponseButton component to use instead of the default.\n */\n ResponseButton?: React.ComponentType<ResponseButtonProps>;\n\n /**\n * A class name to apply to the root element.\n */\n className?: string;\n\n /**\n * Children to render.\n */\n children?: React.ReactNode;\n}\n\ninterface OnStopGenerationArguments {\n /**\n * The name of the currently executing agent.\n */\n currentAgentName: string | undefined;\n\n /**\n * The messages in the chat.\n */\n messages: Message[];\n\n /**\n * Set the messages in the chat.\n */\n setMessages: (messages: Message[]) => void;\n\n /**\n * Stop chat generation.\n */\n stopGeneration: () => void;\n\n /**\n * Restart the currently executing agent.\n */\n restartCurrentAgent: () => void;\n\n /**\n * Stop the currently executing agent.\n */\n stopCurrentAgent: () => void;\n\n /**\n * Run the currently executing agent.\n */\n runCurrentAgent: (hint?: HintFunction) => Promise<void>;\n\n /**\n * Set the state of the currently executing agent.\n */\n setCurrentAgentState: (state: any) => void;\n}\n\nexport type OnReloadMessagesArguments = OnStopGenerationArguments;\n\nexport type OnStopGeneration = (args: OnStopGenerationArguments) => void;\n\nexport type OnReloadMessages = (args: OnReloadMessagesArguments) => void;\n\nexport function CopilotChat({\n instructions,\n onSubmitMessage,\n makeSystemMessage,\n showResponseButton = true,\n onInProgress,\n onStopGeneration,\n onReloadMessages,\n Messages = DefaultMessages,\n RenderTextMessage = DefaultRenderTextMessage,\n RenderActionExecutionMessage = DefaultRenderActionExecutionMessage,\n RenderAgentStateMessage = DefaultRenderAgentStateMessage,\n RenderResultMessage = DefaultRenderResultMessage,\n Input = DefaultInput,\n ResponseButton = DefaultResponseButton,\n className,\n icons,\n labels,\n}: CopilotChatProps) {\n const context = useCopilotContext();\n\n useEffect(() => {\n context.setChatInstructions(instructions || \"\");\n }, [instructions]);\n\n const {\n visibleMessages,\n isLoading,\n currentSuggestions,\n sendMessage,\n stopGeneration,\n reloadMessages,\n } = useCopilotChatLogic(\n makeSystemMessage,\n onInProgress,\n onSubmitMessage,\n onStopGeneration,\n onReloadMessages,\n );\n\n const chatContext = React.useContext(ChatContext);\n const isVisible = chatContext ? chatContext.open : true;\n\n return (\n <WrappedCopilotChat icons={icons} labels={labels} className={className}>\n <CopilotDevConsole />\n <Messages\n RenderTextMessage={RenderTextMessage}\n RenderActionExecutionMessage={RenderActionExecutionMessage}\n RenderAgentStateMessage={RenderAgentStateMessage}\n RenderResultMessage={RenderResultMessage}\n messages={visibleMessages}\n inProgress={isLoading}\n >\n {currentSuggestions.length > 0 && (\n <div>\n <h6>Suggested:</h6>\n <div className=\"suggestions\">\n {currentSuggestions.map((suggestion, index) => (\n <Suggestion\n key={index}\n title={suggestion.title}\n message={suggestion.message}\n partial={suggestion.partial}\n className={suggestion.className}\n onClick={(message) => sendMessage(message)}\n />\n ))}\n </div>\n </div>\n )}\n {showResponseButton && visibleMessages.length > 0 && (\n <ResponseButton\n onClick={isLoading ? stopGeneration : reloadMessages}\n inProgress={isLoading}\n />\n )}\n </Messages>\n <Input inProgress={isLoading} onSend={sendMessage} isVisible={isVisible} />\n </WrappedCopilotChat>\n );\n}\n\nexport function WrappedCopilotChat({\n children,\n icons,\n labels,\n className,\n}: {\n children: React.ReactNode;\n icons?: CopilotChatIcons;\n labels?: CopilotChatLabels;\n className?: string;\n}) {\n const chatContext = React.useContext(ChatContext);\n if (!chatContext) {\n return (\n <ChatContextProvider icons={icons} labels={labels} open={true} setOpen={() => {}}>\n <div className={`copilotKitChat ${className}`}>{children}</div>\n </ChatContextProvider>\n );\n }\n return <>{children}</>;\n}\n\nconst SUGGESTIONS_DEBOUNCE_TIMEOUT = 1000;\n\nexport const useCopilotChatLogic = (\n makeSystemMessage?: SystemMessageFunction,\n onInProgress?: (isLoading: boolean) => void,\n onSubmitMessage?: (messageContent: string) => Promise<void> | void,\n onStopGeneration?: OnStopGeneration,\n onReloadMessages?: OnReloadMessages,\n) => {\n const {\n visibleMessages,\n appendMessage,\n reloadMessages: defaultReloadMessages,\n stopGeneration: defaultStopGeneration,\n isLoading,\n } = useCopilotChat({\n id: randomId(),\n makeSystemMessage,\n });\n\n const [currentSuggestions, setCurrentSuggestions] = useState<CopilotChatSuggestion[]>([]);\n const suggestionsAbortControllerRef = useRef<AbortController | null>(null);\n const debounceTimerRef = useRef<any>();\n\n const abortSuggestions = () => {\n suggestionsAbortControllerRef.current?.abort();\n suggestionsAbortControllerRef.current = null;\n };\n\n const generalContext = useCopilotContext();\n const messagesContext = useCopilotMessagesContext();\n const context = { ...generalContext, ...messagesContext };\n\n useEffect(() => {\n onInProgress?.(isLoading);\n\n abortSuggestions();\n\n debounceTimerRef.current = setTimeout(\n () => {\n if (!isLoading && Object.keys(context.chatSuggestionConfiguration).length !== 0) {\n suggestionsAbortControllerRef.current = new AbortController();\n reloadSuggestions(\n context,\n context.chatSuggestionConfiguration,\n setCurrentSuggestions,\n suggestionsAbortControllerRef,\n );\n }\n },\n currentSuggestions.length == 0 ? 0 : SUGGESTIONS_DEBOUNCE_TIMEOUT,\n );\n\n return () => {\n clearTimeout(debounceTimerRef.current);\n };\n }, [\n isLoading,\n context.chatSuggestionConfiguration,\n // hackish way to trigger suggestions reload on reset, but better than moving suggestions to the\n // global context\n visibleMessages.length == 0,\n ]);\n\n const sendMessage = async (messageContent: string) => {\n abortSuggestions();\n setCurrentSuggestions([]);\n\n const message: Message = new TextMessage({\n content: messageContent,\n role: Role.User,\n });\n\n if (onSubmitMessage) {\n try {\n await onSubmitMessage(messageContent);\n } catch (error) {\n console.error(\"Error in onSubmitMessage:\", error);\n }\n }\n // this needs to happen after onSubmitMessage, because it will trigger submission\n // of the message to the endpoint. Some users depend on performing some actions\n // before the message is submitted.\n appendMessage(message);\n\n return message;\n };\n\n const messages = visibleMessages;\n const { setMessages } = messagesContext;\n const currentAgentName = generalContext.agentSession?.agentName;\n const restartCurrentAgent = async (hint?: HintFunction) => {\n if (generalContext.agentSession) {\n generalContext.setAgentSession({\n ...generalContext.agentSession,\n nodeName: undefined,\n threadId: undefined,\n });\n generalContext.setCoagentStates((prevAgentStates) => {\n return {\n ...prevAgentStates,\n [generalContext.agentSession!.agentName]: {\n ...prevAgentStates[generalContext.agentSession!.agentName],\n threadId: undefined,\n nodeName: undefined,\n runId: undefined,\n },\n };\n });\n }\n };\n const runCurrentAgent = async (hint?: HintFunction) => {\n if (generalContext.agentSession) {\n await runAgent(generalContext.agentSession.agentName, context, appendMessage, hint);\n }\n };\n const stopCurrentAgent = () => {\n if (generalContext.agentSession) {\n stopAgent(generalContext.agentSession.agentName, context);\n }\n };\n const setCurrentAgentState = (state: any) => {\n if (generalContext.agentSession) {\n generalContext.setCoagentStates((prevAgentStates) => {\n return {\n ...prevAgentStates,\n [generalContext.agentSession!.agentName]: {\n state,\n },\n } as any;\n });\n }\n };\n\n function stopGeneration() {\n if (onStopGeneration) {\n onStopGeneration({\n messages,\n setMessages,\n stopGeneration: defaultStopGeneration,\n currentAgentName,\n restartCurrentAgent,\n stopCurrentAgent,\n runCurrentAgent,\n setCurrentAgentState,\n });\n } else {\n defaultStopGeneration();\n }\n }\n function reloadMessages() {\n if (onReloadMessages) {\n onReloadMessages({\n messages,\n setMessages,\n stopGeneration: defaultStopGeneration,\n currentAgentName,\n restartCurrentAgent,\n stopCurrentAgent,\n runCurrentAgent,\n setCurrentAgentState,\n });\n } else {\n defaultReloadMessages();\n }\n }\n\n return {\n visibleMessages,\n isLoading,\n currentSuggestions,\n sendMessage,\n stopGeneration,\n reloadMessages,\n };\n};\n"],"mappings":"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","names":["Messages","RenderTextMessage","RenderActionExecutionMessage","RenderAgentStateMessage","RenderResultMessage","Input","ResponseButton","_a"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CopilotModal
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OG2XHQQM.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__spreadProps,
|
|
6
6
|
__spreadValues
|
|
@@ -27,4 +27,4 @@ function CopilotSidebar(props) {
|
|
|
27
27
|
export {
|
|
28
28
|
CopilotSidebar
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-5XQEL3WQ.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CopilotModal
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OG2XHQQM.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__spreadProps,
|
|
6
6
|
__spreadValues
|
|
@@ -18,4 +18,4 @@ function CopilotPopup(props) {
|
|
|
18
18
|
export {
|
|
19
19
|
CopilotPopup
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-DXMPY4SG.mjs.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-RQNJNK2W.mjs";
|
|
10
10
|
import {
|
|
11
11
|
CopilotChat
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-2BAND4IT.mjs";
|
|
13
13
|
import {
|
|
14
14
|
Input
|
|
15
15
|
} from "./chunk-4LUMV4YO.mjs";
|
|
@@ -33,6 +33,8 @@ var CopilotModal = ({
|
|
|
33
33
|
hitEscapeToClose = true,
|
|
34
34
|
onSetOpen,
|
|
35
35
|
onSubmitMessage,
|
|
36
|
+
onStopGeneration,
|
|
37
|
+
onReloadMessages,
|
|
36
38
|
shortcut = "/",
|
|
37
39
|
icons,
|
|
38
40
|
labels,
|
|
@@ -70,6 +72,8 @@ var CopilotModal = ({
|
|
|
70
72
|
{
|
|
71
73
|
instructions,
|
|
72
74
|
onSubmitMessage,
|
|
75
|
+
onStopGeneration,
|
|
76
|
+
onReloadMessages,
|
|
73
77
|
makeSystemMessage,
|
|
74
78
|
showResponseButton,
|
|
75
79
|
onInProgress,
|
|
@@ -88,4 +92,4 @@ var CopilotModal = ({
|
|
|
88
92
|
export {
|
|
89
93
|
CopilotModal
|
|
90
94
|
};
|
|
91
|
-
//# sourceMappingURL=chunk-
|
|
95
|
+
//# sourceMappingURL=chunk-OG2XHQQM.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/chat/Modal.tsx"],"sourcesContent":["import React from \"react\";\nimport { ChatContextProvider } from \"./ChatContext\";\nimport { ButtonProps, HeaderProps, WindowProps } from \"./props\";\nimport { Window as DefaultWindow } from \"./Window\";\nimport { Button as DefaultButton } from \"./Button\";\nimport { Header as DefaultHeader } from \"./Header\";\nimport { Messages as DefaultMessages } from \"./Messages\";\nimport { Input as DefaultInput } from \"./Input\";\nimport { ResponseButton as DefaultResponseButton } from \"./Response\";\nimport { CopilotChat, CopilotChatProps } from \"./Chat\";\n\nexport interface CopilotModalProps extends CopilotChatProps {\n /**\n * Whether the chat window should be open by default.\n * @default false\n */\n defaultOpen?: boolean;\n\n /**\n * If the chat window should close when the user clicks outside of it.\n * @default true\n */\n clickOutsideToClose?: boolean;\n\n /**\n * If the chat window should close when the user hits the Escape key.\n * @default true\n */\n hitEscapeToClose?: boolean;\n\n /**\n * The shortcut key to open the chat window.\n * Uses Command-[shortcut] on a Mac and Ctrl-[shortcut] on Windows.\n * @default '/'\n */\n shortcut?: string;\n\n /**\n * A callback that gets called when the chat window opens or closes.\n */\n onSetOpen?: (open: boolean) => void;\n\n /**\n * A custom Window component to use instead of the default.\n */\n Window?: React.ComponentType<WindowProps>;\n\n /**\n * A custom Button component to use instead of the default.\n */\n Button?: React.ComponentType<ButtonProps>;\n\n /**\n * A custom Header component to use instead of the default.\n */\n Header?: React.ComponentType<HeaderProps>;\n}\n\nexport const CopilotModal = ({\n instructions,\n defaultOpen = false,\n clickOutsideToClose = true,\n hitEscapeToClose = true,\n onSetOpen,\n onSubmitMessage,\n onStopGeneration,\n onReloadMessages,\n shortcut = \"/\",\n icons,\n labels,\n makeSystemMessage,\n showResponseButton = true,\n onInProgress,\n Window = DefaultWindow,\n Button = DefaultButton,\n Header = DefaultHeader,\n Messages = DefaultMessages,\n Input = DefaultInput,\n ResponseButton = DefaultResponseButton,\n className,\n children,\n}: CopilotModalProps) => {\n const [openState, setOpenState] = React.useState(defaultOpen);\n\n const setOpen = (open: boolean) => {\n onSetOpen?.(open);\n setOpenState(open);\n };\n\n return (\n <ChatContextProvider icons={icons} labels={labels} open={openState} setOpen={setOpen}>\n {children}\n <div className={className}>\n <Button></Button>\n <Window\n clickOutsideToClose={clickOutsideToClose}\n shortcut={shortcut}\n hitEscapeToClose={hitEscapeToClose}\n >\n <Header />\n <CopilotChat\n instructions={instructions}\n onSubmitMessage={onSubmitMessage}\n onStopGeneration={onStopGeneration}\n onReloadMessages={onReloadMessages}\n makeSystemMessage={makeSystemMessage}\n showResponseButton={showResponseButton}\n onInProgress={onInProgress}\n Messages={Messages}\n Input={Input}\n ResponseButton={ResponseButton}\n />\n </Window>\n </div>\n </ChatContextProvider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AA6FV,cACA,YADA;AAnCD,IAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA,cAAc;AAAA,EACd,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA,QAAAA,UAAS;AAAA,EACT,QAAAC,UAAS;AAAA,EACT,QAAAC,UAAS;AAAA,EACT,UAAAC,YAAW;AAAA,EACX,OAAAC,SAAQ;AAAA,EACR,gBAAAC,kBAAiB;AAAA,EACjB;AAAA,EACA;AACF,MAAyB;AACvB,QAAM,CAAC,WAAW,YAAY,IAAI,MAAM,SAAS,WAAW;AAE5D,QAAM,UAAU,CAAC,SAAkB;AACjC,2CAAY;AACZ,iBAAa,IAAI;AAAA,EACnB;AAEA,SACE,qBAAC,uBAAoB,OAAc,QAAgB,MAAM,WAAW,SACjE;AAAA;AAAA,IACD,qBAAC,SAAI,WACH;AAAA,0BAACJ,SAAA,EAAO;AAAA,MACR;AAAA,QAACD;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UAEA;AAAA,gCAACE,SAAA,EAAO;AAAA,YACR;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,UAAUC;AAAA,gBACV,OAAOC;AAAA,gBACP,gBAAgBC;AAAA;AAAA,YAClB;AAAA;AAAA;AAAA,MACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":["Window","Button","Header","Messages","Input","ResponseButton"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { CopilotChatIcons, CopilotChatLabels } from './ChatContext.js';
|
|
3
3
|
import React__default from 'react';
|
|
4
|
-
import { SystemMessageFunction } from '@copilotkit/react-core';
|
|
4
|
+
import { SystemMessageFunction, HintFunction } from '@copilotkit/react-core';
|
|
5
5
|
import { CopilotChatSuggestion } from '../../types/suggestions.js';
|
|
6
6
|
import { Message } from '@copilotkit/runtime-client-gql';
|
|
7
7
|
import { MessagesProps, RenderMessageProps, InputProps, ResponseButtonProps } from './props.js';
|
|
@@ -27,6 +27,14 @@ interface CopilotChatProps {
|
|
|
27
27
|
* A callback that gets called when a new message it submitted.
|
|
28
28
|
*/
|
|
29
29
|
onSubmitMessage?: (message: string) => void | Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* A custom stop generation function.
|
|
32
|
+
*/
|
|
33
|
+
onStopGeneration?: OnStopGeneration;
|
|
34
|
+
/**
|
|
35
|
+
* A custom reload messages function.
|
|
36
|
+
*/
|
|
37
|
+
onReloadMessages?: OnReloadMessages;
|
|
30
38
|
/**
|
|
31
39
|
* Icons can be used to set custom icons for the chat window.
|
|
32
40
|
*/
|
|
@@ -84,20 +92,57 @@ interface CopilotChatProps {
|
|
|
84
92
|
*/
|
|
85
93
|
children?: React__default.ReactNode;
|
|
86
94
|
}
|
|
87
|
-
|
|
95
|
+
interface OnStopGenerationArguments {
|
|
96
|
+
/**
|
|
97
|
+
* The name of the currently executing agent.
|
|
98
|
+
*/
|
|
99
|
+
currentAgentName: string | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* The messages in the chat.
|
|
102
|
+
*/
|
|
103
|
+
messages: Message[];
|
|
104
|
+
/**
|
|
105
|
+
* Set the messages in the chat.
|
|
106
|
+
*/
|
|
107
|
+
setMessages: (messages: Message[]) => void;
|
|
108
|
+
/**
|
|
109
|
+
* Stop chat generation.
|
|
110
|
+
*/
|
|
111
|
+
stopGeneration: () => void;
|
|
112
|
+
/**
|
|
113
|
+
* Restart the currently executing agent.
|
|
114
|
+
*/
|
|
115
|
+
restartCurrentAgent: () => void;
|
|
116
|
+
/**
|
|
117
|
+
* Stop the currently executing agent.
|
|
118
|
+
*/
|
|
119
|
+
stopCurrentAgent: () => void;
|
|
120
|
+
/**
|
|
121
|
+
* Run the currently executing agent.
|
|
122
|
+
*/
|
|
123
|
+
runCurrentAgent: (hint?: HintFunction) => Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Set the state of the currently executing agent.
|
|
126
|
+
*/
|
|
127
|
+
setCurrentAgentState: (state: any) => void;
|
|
128
|
+
}
|
|
129
|
+
type OnReloadMessagesArguments = OnStopGenerationArguments;
|
|
130
|
+
type OnStopGeneration = (args: OnStopGenerationArguments) => void;
|
|
131
|
+
type OnReloadMessages = (args: OnReloadMessagesArguments) => void;
|
|
132
|
+
declare function CopilotChat({ instructions, onSubmitMessage, makeSystemMessage, showResponseButton, onInProgress, onStopGeneration, onReloadMessages, Messages, RenderTextMessage, RenderActionExecutionMessage, RenderAgentStateMessage, RenderResultMessage, Input, ResponseButton, className, icons, labels, }: CopilotChatProps): react_jsx_runtime.JSX.Element;
|
|
88
133
|
declare function WrappedCopilotChat({ children, icons, labels, className, }: {
|
|
89
134
|
children: React__default.ReactNode;
|
|
90
135
|
icons?: CopilotChatIcons;
|
|
91
136
|
labels?: CopilotChatLabels;
|
|
92
137
|
className?: string;
|
|
93
138
|
}): react_jsx_runtime.JSX.Element;
|
|
94
|
-
declare const useCopilotChatLogic: (makeSystemMessage?: SystemMessageFunction, onInProgress?: (isLoading: boolean) => void, onSubmitMessage?: (messageContent: string) => Promise<void> | void) => {
|
|
139
|
+
declare const useCopilotChatLogic: (makeSystemMessage?: SystemMessageFunction, onInProgress?: (isLoading: boolean) => void, onSubmitMessage?: (messageContent: string) => Promise<void> | void, onStopGeneration?: OnStopGeneration, onReloadMessages?: OnReloadMessages) => {
|
|
95
140
|
visibleMessages: Message[];
|
|
96
141
|
isLoading: boolean;
|
|
97
142
|
currentSuggestions: CopilotChatSuggestion[];
|
|
98
143
|
sendMessage: (messageContent: string) => Promise<Message>;
|
|
99
144
|
stopGeneration: () => void;
|
|
100
|
-
reloadMessages: () =>
|
|
145
|
+
reloadMessages: () => void;
|
|
101
146
|
};
|
|
102
147
|
|
|
103
|
-
export { CopilotChat, CopilotChatProps, WrappedCopilotChat, useCopilotChatLogic };
|
|
148
|
+
export { CopilotChat, CopilotChatProps, OnReloadMessages, OnReloadMessagesArguments, OnStopGeneration, WrappedCopilotChat, useCopilotChatLogic };
|
|
@@ -1954,6 +1954,7 @@ function DebugMenuButton({
|
|
|
1954
1954
|
}
|
|
1955
1955
|
|
|
1956
1956
|
// src/components/chat/Chat.tsx
|
|
1957
|
+
var import_react_core9 = require("@copilotkit/react-core");
|
|
1957
1958
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1958
1959
|
function CopilotChat({
|
|
1959
1960
|
instructions,
|
|
@@ -1961,6 +1962,8 @@ function CopilotChat({
|
|
|
1961
1962
|
makeSystemMessage,
|
|
1962
1963
|
showResponseButton = true,
|
|
1963
1964
|
onInProgress,
|
|
1965
|
+
onStopGeneration,
|
|
1966
|
+
onReloadMessages,
|
|
1964
1967
|
Messages: Messages2 = Messages,
|
|
1965
1968
|
RenderTextMessage: RenderTextMessage2 = RenderTextMessage,
|
|
1966
1969
|
RenderActionExecutionMessage: RenderActionExecutionMessage2 = RenderActionExecutionMessage,
|
|
@@ -1983,7 +1986,13 @@ function CopilotChat({
|
|
|
1983
1986
|
sendMessage,
|
|
1984
1987
|
stopGeneration,
|
|
1985
1988
|
reloadMessages
|
|
1986
|
-
} = useCopilotChatLogic(
|
|
1989
|
+
} = useCopilotChatLogic(
|
|
1990
|
+
makeSystemMessage,
|
|
1991
|
+
onInProgress,
|
|
1992
|
+
onSubmitMessage,
|
|
1993
|
+
onStopGeneration,
|
|
1994
|
+
onReloadMessages
|
|
1995
|
+
);
|
|
1987
1996
|
const chatContext = import_react10.default.useContext(ChatContext);
|
|
1988
1997
|
const isVisible = chatContext ? chatContext.open : true;
|
|
1989
1998
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(WrappedCopilotChat, { icons, labels, className, children: [
|
|
@@ -2039,8 +2048,15 @@ function WrappedCopilotChat({
|
|
|
2039
2048
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, { children });
|
|
2040
2049
|
}
|
|
2041
2050
|
var SUGGESTIONS_DEBOUNCE_TIMEOUT = 1e3;
|
|
2042
|
-
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) => {
|
|
2043
|
-
|
|
2051
|
+
var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage, onStopGeneration, onReloadMessages) => {
|
|
2052
|
+
var _a;
|
|
2053
|
+
const {
|
|
2054
|
+
visibleMessages,
|
|
2055
|
+
appendMessage,
|
|
2056
|
+
reloadMessages: defaultReloadMessages,
|
|
2057
|
+
stopGeneration: defaultStopGeneration,
|
|
2058
|
+
isLoading
|
|
2059
|
+
} = (0, import_react_core8.useCopilotChat)({
|
|
2044
2060
|
id: (0, import_shared3.randomId)(),
|
|
2045
2061
|
makeSystemMessage
|
|
2046
2062
|
});
|
|
@@ -2048,8 +2064,8 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
|
|
|
2048
2064
|
const suggestionsAbortControllerRef = (0, import_react10.useRef)(null);
|
|
2049
2065
|
const debounceTimerRef = (0, import_react10.useRef)();
|
|
2050
2066
|
const abortSuggestions = () => {
|
|
2051
|
-
var
|
|
2052
|
-
(
|
|
2067
|
+
var _a2;
|
|
2068
|
+
(_a2 = suggestionsAbortControllerRef.current) == null ? void 0 : _a2.abort();
|
|
2053
2069
|
suggestionsAbortControllerRef.current = null;
|
|
2054
2070
|
};
|
|
2055
2071
|
const generalContext = (0, import_react_core8.useCopilotContext)();
|
|
@@ -2075,7 +2091,13 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
|
|
|
2075
2091
|
return () => {
|
|
2076
2092
|
clearTimeout(debounceTimerRef.current);
|
|
2077
2093
|
};
|
|
2078
|
-
}, [
|
|
2094
|
+
}, [
|
|
2095
|
+
isLoading,
|
|
2096
|
+
context.chatSuggestionConfiguration,
|
|
2097
|
+
// hackish way to trigger suggestions reload on reset, but better than moving suggestions to the
|
|
2098
|
+
// global context
|
|
2099
|
+
visibleMessages.length == 0
|
|
2100
|
+
]);
|
|
2079
2101
|
const sendMessage = (messageContent) => __async(void 0, null, function* () {
|
|
2080
2102
|
abortSuggestions();
|
|
2081
2103
|
setCurrentSuggestions([]);
|
|
@@ -2093,6 +2115,79 @@ var useCopilotChatLogic = (makeSystemMessage, onInProgress, onSubmitMessage) =>
|
|
|
2093
2115
|
appendMessage(message);
|
|
2094
2116
|
return message;
|
|
2095
2117
|
});
|
|
2118
|
+
const messages = visibleMessages;
|
|
2119
|
+
const { setMessages } = messagesContext;
|
|
2120
|
+
const currentAgentName = (_a = generalContext.agentSession) == null ? void 0 : _a.agentName;
|
|
2121
|
+
const restartCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2122
|
+
if (generalContext.agentSession) {
|
|
2123
|
+
generalContext.setAgentSession(__spreadProps(__spreadValues({}, generalContext.agentSession), {
|
|
2124
|
+
nodeName: void 0,
|
|
2125
|
+
threadId: void 0
|
|
2126
|
+
}));
|
|
2127
|
+
generalContext.setCoagentStates((prevAgentStates) => {
|
|
2128
|
+
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
2129
|
+
[generalContext.agentSession.agentName]: __spreadProps(__spreadValues({}, prevAgentStates[generalContext.agentSession.agentName]), {
|
|
2130
|
+
threadId: void 0,
|
|
2131
|
+
nodeName: void 0,
|
|
2132
|
+
runId: void 0
|
|
2133
|
+
})
|
|
2134
|
+
});
|
|
2135
|
+
});
|
|
2136
|
+
}
|
|
2137
|
+
});
|
|
2138
|
+
const runCurrentAgent = (hint) => __async(void 0, null, function* () {
|
|
2139
|
+
if (generalContext.agentSession) {
|
|
2140
|
+
yield (0, import_react_core9.runAgent)(generalContext.agentSession.agentName, context, appendMessage, hint);
|
|
2141
|
+
}
|
|
2142
|
+
});
|
|
2143
|
+
const stopCurrentAgent = () => {
|
|
2144
|
+
if (generalContext.agentSession) {
|
|
2145
|
+
(0, import_react_core9.stopAgent)(generalContext.agentSession.agentName, context);
|
|
2146
|
+
}
|
|
2147
|
+
};
|
|
2148
|
+
const setCurrentAgentState = (state) => {
|
|
2149
|
+
if (generalContext.agentSession) {
|
|
2150
|
+
generalContext.setCoagentStates((prevAgentStates) => {
|
|
2151
|
+
return __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
2152
|
+
[generalContext.agentSession.agentName]: {
|
|
2153
|
+
state
|
|
2154
|
+
}
|
|
2155
|
+
});
|
|
2156
|
+
});
|
|
2157
|
+
}
|
|
2158
|
+
};
|
|
2159
|
+
function stopGeneration() {
|
|
2160
|
+
if (onStopGeneration) {
|
|
2161
|
+
onStopGeneration({
|
|
2162
|
+
messages,
|
|
2163
|
+
setMessages,
|
|
2164
|
+
stopGeneration: defaultStopGeneration,
|
|
2165
|
+
currentAgentName,
|
|
2166
|
+
restartCurrentAgent,
|
|
2167
|
+
stopCurrentAgent,
|
|
2168
|
+
runCurrentAgent,
|
|
2169
|
+
setCurrentAgentState
|
|
2170
|
+
});
|
|
2171
|
+
} else {
|
|
2172
|
+
defaultStopGeneration();
|
|
2173
|
+
}
|
|
2174
|
+
}
|
|
2175
|
+
function reloadMessages() {
|
|
2176
|
+
if (onReloadMessages) {
|
|
2177
|
+
onReloadMessages({
|
|
2178
|
+
messages,
|
|
2179
|
+
setMessages,
|
|
2180
|
+
stopGeneration: defaultStopGeneration,
|
|
2181
|
+
currentAgentName,
|
|
2182
|
+
restartCurrentAgent,
|
|
2183
|
+
stopCurrentAgent,
|
|
2184
|
+
runCurrentAgent,
|
|
2185
|
+
setCurrentAgentState
|
|
2186
|
+
});
|
|
2187
|
+
} else {
|
|
2188
|
+
defaultReloadMessages();
|
|
2189
|
+
}
|
|
2190
|
+
}
|
|
2096
2191
|
return {
|
|
2097
2192
|
visibleMessages,
|
|
2098
2193
|
isLoading,
|