@copilotkit/react-core 1.5.1-next.1 → 1.5.1-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/{chunk-SFPANIOY.mjs → chunk-2KCEHGSI.mjs} +49 -99
  3. package/dist/chunk-2KCEHGSI.mjs.map +1 -0
  4. package/dist/{chunk-YL6V3QTN.mjs → chunk-6OR25P32.mjs} +15 -42
  5. package/dist/chunk-6OR25P32.mjs.map +1 -0
  6. package/dist/{chunk-VQDGBYWQ.mjs → chunk-DDVXFNYA.mjs} +31 -55
  7. package/dist/chunk-DDVXFNYA.mjs.map +1 -0
  8. package/dist/{chunk-NYBGR2NK.mjs → chunk-FXHKK52V.mjs} +13 -14
  9. package/dist/chunk-FXHKK52V.mjs.map +1 -0
  10. package/dist/{chunk-VPTC36RZ.mjs → chunk-H4VZMKR6.mjs} +2 -2
  11. package/dist/{chunk-OAF4ASJH.mjs → chunk-H7LSKIDK.mjs} +23 -70
  12. package/dist/chunk-H7LSKIDK.mjs.map +1 -0
  13. package/dist/chunk-JDQCJCAQ.mjs +295 -0
  14. package/dist/chunk-JDQCJCAQ.mjs.map +1 -0
  15. package/dist/{chunk-STZUYPHJ.mjs → chunk-LODRWFMB.mjs} +2 -14
  16. package/dist/chunk-LODRWFMB.mjs.map +1 -0
  17. package/dist/{chunk-MKEQ2MJG.mjs → chunk-MWZO6TUR.mjs} +13 -29
  18. package/dist/chunk-MWZO6TUR.mjs.map +1 -0
  19. package/dist/{chunk-7LRDVJH5.mjs → chunk-ODN4H66E.mjs} +2 -6
  20. package/dist/chunk-ODN4H66E.mjs.map +1 -0
  21. package/dist/{chunk-6KHA5W5R.mjs → chunk-QDGDXRRJ.mjs} +2 -2
  22. package/dist/{chunk-ODAH4HNG.mjs → chunk-XINZBP3J.mjs} +2 -2
  23. package/dist/{chunk-ODAH4HNG.mjs.map → chunk-XINZBP3J.mjs.map} +1 -1
  24. package/dist/components/copilot-provider/copilot-messages.d.ts +0 -1
  25. package/dist/components/copilot-provider/copilotkit-props.d.ts +0 -5
  26. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  27. package/dist/components/copilot-provider/copilotkit.d.ts +0 -1
  28. package/dist/components/copilot-provider/copilotkit.js +91 -191
  29. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  30. package/dist/components/copilot-provider/copilotkit.mjs +7 -8
  31. package/dist/components/copilot-provider/index.d.ts +0 -1
  32. package/dist/components/copilot-provider/index.js +91 -191
  33. package/dist/components/copilot-provider/index.js.map +1 -1
  34. package/dist/components/copilot-provider/index.mjs +7 -8
  35. package/dist/components/index.d.ts +0 -1
  36. package/dist/components/index.js +91 -191
  37. package/dist/components/index.js.map +1 -1
  38. package/dist/components/index.mjs +7 -8
  39. package/dist/components/toast/toast-provider.d.ts +1 -2
  40. package/dist/components/toast/toast-provider.js +62 -76
  41. package/dist/components/toast/toast-provider.js.map +1 -1
  42. package/dist/components/toast/toast-provider.mjs +1 -1
  43. package/dist/context/copilot-context.d.ts +3 -15
  44. package/dist/context/copilot-context.js +1 -13
  45. package/dist/context/copilot-context.js.map +1 -1
  46. package/dist/context/copilot-context.mjs +1 -1
  47. package/dist/context/index.d.ts +1 -1
  48. package/dist/context/index.js +1 -13
  49. package/dist/context/index.js.map +1 -1
  50. package/dist/context/index.mjs +4 -4
  51. package/dist/hooks/index.d.ts +1 -2
  52. package/dist/hooks/index.js +293 -624
  53. package/dist/hooks/index.js.map +1 -1
  54. package/dist/hooks/index.mjs +22 -30
  55. package/dist/hooks/use-chat.d.ts +3 -31
  56. package/dist/hooks/use-chat.js +205 -443
  57. package/dist/hooks/use-chat.js.map +1 -1
  58. package/dist/hooks/use-chat.mjs +3 -4
  59. package/dist/hooks/use-coagent-state-render.d.ts +2 -2
  60. package/dist/hooks/use-coagent-state-render.js +1 -13
  61. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  62. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  63. package/dist/hooks/use-coagent.d.ts +1 -14
  64. package/dist/hooks/use-coagent.js +262 -580
  65. package/dist/hooks/use-coagent.js.map +1 -1
  66. package/dist/hooks/use-coagent.mjs +11 -19
  67. package/dist/hooks/use-copilot-action.d.ts +2 -12
  68. package/dist/hooks/use-copilot-action.js +17 -167
  69. package/dist/hooks/use-copilot-action.js.map +1 -1
  70. package/dist/hooks/use-copilot-action.mjs +2 -4
  71. package/dist/hooks/use-copilot-chat.d.ts +0 -2
  72. package/dist/hooks/use-copilot-chat.js +238 -532
  73. package/dist/hooks/use-copilot-chat.js.map +1 -1
  74. package/dist/hooks/use-copilot-chat.mjs +10 -12
  75. package/dist/hooks/use-copilot-readable.js +1 -13
  76. package/dist/hooks/use-copilot-readable.js.map +1 -1
  77. package/dist/hooks/use-copilot-readable.mjs +2 -2
  78. package/dist/hooks/use-copilot-runtime-client.js +4 -110
  79. package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
  80. package/dist/hooks/use-copilot-runtime-client.mjs +2 -2
  81. package/dist/hooks/use-make-copilot-document-readable.js +1 -13
  82. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  83. package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
  84. package/dist/index.d.ts +3 -3
  85. package/dist/index.js +391 -703
  86. package/dist/index.js.map +1 -1
  87. package/dist/index.mjs +30 -38
  88. package/dist/lib/copilot-task.d.ts +1 -6
  89. package/dist/lib/copilot-task.js +17 -55
  90. package/dist/lib/copilot-task.js.map +1 -1
  91. package/dist/lib/copilot-task.mjs +8 -10
  92. package/dist/lib/index.d.ts +1 -1
  93. package/dist/lib/index.js +17 -55
  94. package/dist/lib/index.js.map +1 -1
  95. package/dist/lib/index.mjs +8 -10
  96. package/dist/types/frontend-action.d.ts +2 -21
  97. package/dist/types/frontend-action.js +0 -34
  98. package/dist/types/frontend-action.js.map +1 -1
  99. package/dist/types/frontend-action.mjs +0 -7
  100. package/dist/types/index.d.ts +1 -2
  101. package/dist/types/index.js.map +1 -1
  102. package/dist/utils/extract.d.ts +2 -3
  103. package/dist/utils/extract.js +3 -21
  104. package/dist/utils/extract.js.map +1 -1
  105. package/dist/utils/extract.mjs +7 -8
  106. package/dist/utils/index.js +3 -21
  107. package/dist/utils/index.js.map +1 -1
  108. package/dist/utils/index.mjs +9 -10
  109. package/package.json +5 -5
  110. package/src/components/copilot-provider/copilotkit-props.tsx +10 -0
  111. package/src/components/copilot-provider/copilotkit.tsx +44 -7
  112. package/src/components/toast/toast-provider.tsx +1 -1
  113. package/src/context/copilot-context.tsx +28 -2
  114. package/src/hooks/index.ts +1 -0
  115. package/src/hooks/use-chat.ts +15 -5
  116. package/src/hooks/use-coagent-state-render.ts +11 -0
  117. package/src/hooks/use-coagent.ts +11 -1
  118. package/src/hooks/use-copilot-authenticated-action.ts +60 -0
  119. package/src/hooks/use-copilot-chat.ts +1 -0
  120. package/dist/chunk-7LRDVJH5.mjs.map +0 -1
  121. package/dist/chunk-M3SYKJ3W.mjs +0 -393
  122. package/dist/chunk-M3SYKJ3W.mjs.map +0 -1
  123. package/dist/chunk-MKEQ2MJG.mjs.map +0 -1
  124. package/dist/chunk-NYBGR2NK.mjs.map +0 -1
  125. package/dist/chunk-OAF4ASJH.mjs.map +0 -1
  126. package/dist/chunk-QCUP6HLK.mjs +0 -37
  127. package/dist/chunk-QCUP6HLK.mjs.map +0 -1
  128. package/dist/chunk-SFPANIOY.mjs.map +0 -1
  129. package/dist/chunk-STZUYPHJ.mjs.map +0 -1
  130. package/dist/chunk-VQDGBYWQ.mjs.map +0 -1
  131. package/dist/chunk-XERJQUHA.mjs +0 -31
  132. package/dist/chunk-XERJQUHA.mjs.map +0 -1
  133. package/dist/chunk-YL6V3QTN.mjs.map +0 -1
  134. package/dist/components/error-boundary/error-boundary.d.ts +0 -22
  135. package/dist/components/error-boundary/error-boundary.js +0 -183
  136. package/dist/components/error-boundary/error-boundary.js.map +0 -1
  137. package/dist/components/error-boundary/error-boundary.mjs +0 -12
  138. package/dist/components/error-boundary/error-boundary.mjs.map +0 -1
  139. package/dist/components/error-boundary/error-utils.d.ts +0 -11
  140. package/dist/components/error-boundary/error-utils.js +0 -177
  141. package/dist/components/error-boundary/error-utils.js.map +0 -1
  142. package/dist/components/error-boundary/error-utils.mjs +0 -13
  143. package/dist/components/error-boundary/error-utils.mjs.map +0 -1
  144. /package/dist/{chunk-VPTC36RZ.mjs.map → chunk-H4VZMKR6.mjs.map} +0 -0
  145. /package/dist/{chunk-6KHA5W5R.mjs.map → chunk-QDGDXRRJ.mjs.map} +0 -0
@@ -83,7 +83,7 @@ __export(use_copilot_chat_exports, {
83
83
  useCopilotChat: () => useCopilotChat
84
84
  });
85
85
  module.exports = __toCommonJS(use_copilot_chat_exports);
86
- var import_react8 = require("react");
86
+ var import_react7 = require("react");
87
87
 
88
88
  // src/context/copilot-context.tsx
89
89
  var import_react = __toESM(require("react"));
@@ -134,21 +134,9 @@ var emptyCopilotContext = {
134
134
  coagentStates: {},
135
135
  setCoagentStates: () => {
136
136
  },
137
- coagentStatesRef: { current: {} },
138
- setCoagentStatesWithRef: () => {
139
- },
140
137
  agentSession: null,
141
138
  setAgentSession: () => {
142
- },
143
- forwardedParameters: {},
144
- agentLock: null,
145
- threadId: null,
146
- setThreadId: () => {
147
- },
148
- runId: null,
149
- setRunId: () => {
150
- },
151
- chatAbortControllerRef: { current: null }
139
+ }
152
140
  };
153
141
  var CopilotContext = import_react.default.createContext(emptyCopilotContext);
154
142
  function useCopilotContext() {
@@ -164,159 +152,19 @@ function returnAndThrowInDebug(value) {
164
152
  }
165
153
 
166
154
  // src/hooks/use-copilot-chat.ts
167
- var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
168
-
169
- // src/hooks/use-chat.ts
170
- var import_react5 = require("react");
171
- var import_shared2 = require("@copilotkit/shared");
172
155
  var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
173
156
 
174
- // src/types/frontend-action.ts
175
- var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
157
+ // src/hooks/use-chat.ts
158
+ var import_react4 = require("react");
176
159
  var import_shared = require("@copilotkit/shared");
177
- function processActionsForRuntimeRequest(actions) {
178
- const filteredActions = actions.filter(
179
- (action) => action.available !== import_runtime_client_gql.ActionInputAvailability.Disabled && action.disabled !== true && action.name !== "*"
180
- ).map((action) => {
181
- let available = import_runtime_client_gql.ActionInputAvailability.Enabled;
182
- if (action.disabled) {
183
- available = import_runtime_client_gql.ActionInputAvailability.Disabled;
184
- } else if (action.available === "disabled") {
185
- available = import_runtime_client_gql.ActionInputAvailability.Disabled;
186
- } else if (action.available === "remote") {
187
- available = import_runtime_client_gql.ActionInputAvailability.Remote;
188
- }
189
- return {
190
- name: action.name,
191
- description: action.description || "",
192
- jsonSchema: JSON.stringify((0, import_shared.actionParametersToJsonSchema)(action.parameters || [])),
193
- available
194
- };
195
- });
196
- return filteredActions;
197
- }
160
+ var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
198
161
 
199
162
  // src/components/toast/toast-provider.tsx
200
- var import_react3 = require("react");
201
-
202
- // src/components/error-boundary/error-utils.tsx
203
163
  var import_react2 = require("react");
204
-
205
- // src/components/toast/exclamation-mark-icon.tsx
206
164
  var import_jsx_runtime = require("react/jsx-runtime");
207
- var ExclamationMarkIcon = ({
208
- className,
209
- style
210
- }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
211
- "svg",
212
- {
213
- xmlns: "http://www.w3.org/2000/svg",
214
- width: "24",
215
- height: "24",
216
- viewBox: "0 0 24 24",
217
- fill: "none",
218
- stroke: "currentColor",
219
- strokeWidth: "2",
220
- strokeLinecap: "round",
221
- strokeLinejoin: "round",
222
- className: `lucide lucide-circle-alert ${className ? className : ""}`,
223
- style,
224
- children: [
225
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
226
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", x2: "12", y1: "8", y2: "12" }),
227
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", x2: "12.01", y1: "16", y2: "16" })
228
- ]
229
- }
230
- );
231
-
232
- // src/components/error-boundary/error-utils.tsx
233
- var import_jsx_runtime2 = require("react/jsx-runtime");
234
- function ErrorToast({ errors }) {
235
- const errorsToRender = errors.map((error, idx) => {
236
- var _a, _b, _c;
237
- const message = "extensions" in error ? (_b = (_a = error.extensions) == null ? void 0 : _a.originalError) == null ? void 0 : _b.message : error.message;
238
- const code = "extensions" in error ? (_c = error.extensions) == null ? void 0 : _c.code : null;
239
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
240
- "div",
241
- {
242
- style: {
243
- marginTop: idx === 0 ? 0 : 10,
244
- marginBottom: 14
245
- },
246
- children: [
247
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ExclamationMarkIcon, { style: { marginBottom: 4 } }),
248
- code && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
249
- "div",
250
- {
251
- style: {
252
- fontWeight: "600",
253
- marginBottom: 4
254
- },
255
- children: [
256
- "Copilot Cloud Error:",
257
- " ",
258
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { fontFamily: "monospace", fontWeight: "normal" }, children: code })
259
- ]
260
- }
261
- ),
262
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { children: message })
263
- ]
264
- },
265
- idx
266
- );
267
- });
268
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
269
- "div",
270
- {
271
- style: {
272
- fontSize: "13px",
273
- maxWidth: "600px"
274
- },
275
- children: [
276
- errorsToRender,
277
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { fontSize: "11px", opacity: 0.75 }, children: "NOTE: This error only displays during local development." })
278
- ]
279
- }
280
- );
281
- }
282
- function useErrorToast() {
283
- const { addToast } = useToast();
284
- return (0, import_react2.useCallback)(
285
- (error) => {
286
- const errorId = error.map((err) => {
287
- var _a, _b;
288
- const message = "extensions" in err ? ((_b = (_a = err.extensions) == null ? void 0 : _a.originalError) == null ? void 0 : _b.message) || err.message : err.message;
289
- const stack = err.stack || "";
290
- return btoa(message + stack).slice(0, 32);
291
- }).join("|");
292
- addToast({
293
- type: "error",
294
- id: errorId,
295
- // Toast libraries typically dedupe by id
296
- message: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ErrorToast, { errors: error })
297
- });
298
- },
299
- [addToast]
300
- );
301
- }
302
- function useAsyncCallback(callback, deps) {
303
- const addErrorToast = useErrorToast();
304
- return (0, import_react2.useCallback)((...args) => __async(this, null, function* () {
305
- try {
306
- return yield callback(...args);
307
- } catch (error) {
308
- console.error("Error in async callback:", error);
309
- addErrorToast([error]);
310
- throw error;
311
- }
312
- }), deps);
313
- }
314
-
315
- // src/components/toast/toast-provider.tsx
316
- var import_jsx_runtime3 = require("react/jsx-runtime");
317
- var ToastContext = (0, import_react3.createContext)(void 0);
165
+ var ToastContext = (0, import_react2.createContext)(void 0);
318
166
  function useToast() {
319
- const context = (0, import_react3.useContext)(ToastContext);
167
+ const context = (0, import_react2.useContext)(ToastContext);
320
168
  if (!context) {
321
169
  throw new Error("useToast must be used within a ToastProvider");
322
170
  }
@@ -324,18 +172,15 @@ function useToast() {
324
172
  }
325
173
 
326
174
  // src/hooks/use-copilot-runtime-client.ts
327
- var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
328
- var import_react4 = require("react");
175
+ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
176
+ var import_react3 = require("react");
329
177
  var useCopilotRuntimeClient = (options) => {
330
178
  const { addGraphQLErrorsToast } = useToast();
331
- const addErrorToast = useErrorToast();
332
- const runtimeClient = (0, import_react4.useMemo)(() => {
333
- return new import_runtime_client_gql2.CopilotRuntimeClient(__spreadProps(__spreadValues({}, options), {
179
+ const runtimeClient = (0, import_react3.useMemo)(() => {
180
+ return new import_runtime_client_gql.CopilotRuntimeClient(__spreadProps(__spreadValues({}, options), {
334
181
  handleGQLErrors: (error) => {
335
182
  if (error.graphQLErrors.length) {
336
183
  addGraphQLErrorsToast(error.graphQLErrors);
337
- } else {
338
- addErrorToast([error]);
339
184
  }
340
185
  }
341
186
  }));
@@ -356,309 +201,232 @@ function useChat(options) {
356
201
  actions,
357
202
  onFunctionCall,
358
203
  onCoAgentStateRender,
359
- setCoagentStatesWithRef,
360
- coagentStatesRef,
204
+ setCoagentStates,
205
+ coagentStates,
361
206
  agentSession,
362
- setAgentSession,
363
- threadId,
364
- setThreadId,
365
- runId,
366
- setRunId,
367
- chatAbortControllerRef
207
+ setAgentSession
368
208
  } = options;
209
+ const abortControllerRef = (0, import_react4.useRef)();
210
+ const threadIdRef = (0, import_react4.useRef)(null);
211
+ const runIdRef = (0, import_react4.useRef)(null);
369
212
  const { addGraphQLErrorsToast } = useToast();
370
- const runChatCompletionRef = (0, import_react5.useRef)();
371
- const agentSessionRef = (0, import_react5.useRef)(agentSession);
213
+ const runChatCompletionRef = (0, import_react4.useRef)();
214
+ const coagentStatesRef = (0, import_react4.useRef)(coagentStates);
215
+ coagentStatesRef.current = coagentStates;
216
+ const agentSessionRef = (0, import_react4.useRef)(agentSession);
372
217
  agentSessionRef.current = agentSession;
373
- const threadIdRef = (0, import_react5.useRef)(threadId);
374
- threadIdRef.current = threadId;
375
- const runIdRef = (0, import_react5.useRef)(runId);
376
- runIdRef.current = runId;
377
218
  const publicApiKey = copilotConfig.publicApiKey;
378
- const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [import_shared2.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {});
219
+ const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [import_shared.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {});
379
220
  const runtimeClient = useCopilotRuntimeClient({
380
221
  url: copilotConfig.chatApiEndpoint,
381
222
  publicApiKey: copilotConfig.publicApiKey,
382
223
  headers,
383
224
  credentials: copilotConfig.credentials
384
225
  });
385
- const runChatCompletion = useAsyncCallback(
386
- (previousMessages) => __async(this, null, function* () {
387
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
388
- setIsLoading(true);
389
- let newMessages = [
390
- new import_runtime_client_gql3.TextMessage({
391
- content: "",
392
- role: import_runtime_client_gql3.Role.Assistant
393
- })
394
- ];
395
- chatAbortControllerRef.current = new AbortController();
396
- setMessages([...previousMessages, ...newMessages]);
397
- const systemMessage = makeSystemMessageCallback();
398
- const messagesWithContext = [systemMessage, ...initialMessages || [], ...previousMessages];
399
- const isAgentRun = agentSessionRef.current !== null;
400
- const stream = runtimeClient.asStream(
401
- runtimeClient.generateCopilotResponse({
402
- data: __spreadProps(__spreadValues(__spreadProps(__spreadValues({
403
- frontend: {
404
- actions: processActionsForRuntimeRequest(actions),
405
- url: window.location.href
406
- },
407
- threadId: threadIdRef.current,
408
- runId: runIdRef.current,
409
- messages: (0, import_runtime_client_gql3.convertMessagesToGqlInput)((0, import_runtime_client_gql3.filterAgentStateMessages)(messagesWithContext))
410
- }, copilotConfig.cloud ? {
411
- cloud: __spreadValues({}, ((_c = (_b = (_a = copilotConfig.cloud.guardrails) == null ? void 0 : _a.input) == null ? void 0 : _b.restrictToTopic) == null ? void 0 : _c.enabled) ? {
412
- guardrails: {
413
- inputValidationRules: {
414
- allowList: copilotConfig.cloud.guardrails.input.restrictToTopic.validTopics,
415
- denyList: copilotConfig.cloud.guardrails.input.restrictToTopic.invalidTopics
416
- }
226
+ const runChatCompletion = (previousMessages) => __async(this, null, function* () {
227
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
228
+ setIsLoading(true);
229
+ let newMessages = [
230
+ new import_runtime_client_gql2.TextMessage({
231
+ content: "",
232
+ role: import_runtime_client_gql2.Role.Assistant
233
+ })
234
+ ];
235
+ const abortController = new AbortController();
236
+ abortControllerRef.current = abortController;
237
+ setMessages([...previousMessages, ...newMessages]);
238
+ const systemMessage = makeSystemMessageCallback();
239
+ const messagesWithContext = [systemMessage, ...initialMessages || [], ...previousMessages];
240
+ const stream = runtimeClient.asStream(
241
+ runtimeClient.generateCopilotResponse({
242
+ data: __spreadProps(__spreadValues(__spreadProps(__spreadValues({
243
+ frontend: {
244
+ actions: actions.filter(
245
+ (action) => action.available !== import_runtime_client_gql2.ActionInputAvailability.Disabled || !action.disabled
246
+ ).map((action) => {
247
+ let available = import_runtime_client_gql2.ActionInputAvailability.Enabled;
248
+ if (action.disabled) {
249
+ available = import_runtime_client_gql2.ActionInputAvailability.Disabled;
250
+ } else if (action.available === "disabled") {
251
+ available = import_runtime_client_gql2.ActionInputAvailability.Disabled;
252
+ } else if (action.available === "remote") {
253
+ available = import_runtime_client_gql2.ActionInputAvailability.Remote;
254
+ }
255
+ return {
256
+ name: action.name,
257
+ description: action.description || "",
258
+ jsonSchema: JSON.stringify((0, import_shared.actionParametersToJsonSchema)(action.parameters || [])),
259
+ available
260
+ };
261
+ }),
262
+ url: window.location.href
263
+ },
264
+ threadId: threadIdRef.current,
265
+ runId: runIdRef.current,
266
+ messages: (0, import_runtime_client_gql2.convertMessagesToGqlInput)((0, import_runtime_client_gql2.filterAgentStateMessages)(messagesWithContext))
267
+ }, copilotConfig.cloud ? {
268
+ cloud: __spreadValues({}, ((_c = (_b = (_a = copilotConfig.cloud.guardrails) == null ? void 0 : _a.input) == null ? void 0 : _b.restrictToTopic) == null ? void 0 : _c.enabled) ? {
269
+ guardrails: {
270
+ inputValidationRules: {
271
+ allowList: copilotConfig.cloud.guardrails.input.restrictToTopic.validTopics,
272
+ denyList: copilotConfig.cloud.guardrails.input.restrictToTopic.invalidTopics
417
273
  }
418
- } : {})
419
- } : {}), {
420
- metadata: {
421
- requestType: import_runtime_client_gql3.CopilotRequestType.Chat
422
- }
423
- }), agentSessionRef.current ? {
424
- agentSession: agentSessionRef.current
425
- } : {}), {
426
- agentStates: Object.values(coagentStatesRef.current).map((state) => ({
427
- agentName: state.name,
428
- state: JSON.stringify(state.state)
429
- })),
430
- forwardedParameters: options.forwardedParameters || {}
431
- }),
432
- properties: copilotConfig.properties,
433
- signal: (_d = chatAbortControllerRef.current) == null ? void 0 : _d.signal
434
- })
435
- );
436
- const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
437
- const reader = stream.getReader();
438
- let executedCoAgentStateRenders = [];
439
- let followUp = void 0;
440
- let messages2 = [];
441
- let syncedMessages = [];
442
- try {
443
- while (true) {
444
- let done, value;
445
- try {
446
- const readResult = yield reader.read();
447
- done = readResult.done;
448
- value = readResult.value;
449
- } catch (readError) {
450
- break;
451
- }
452
- if (done) {
453
- if (chatAbortControllerRef.current.signal.aborted) {
454
- return [];
455
274
  }
456
- break;
457
- }
458
- if (!(value == null ? void 0 : value.generateCopilotResponse)) {
459
- continue;
275
+ } : {})
276
+ } : {}), {
277
+ metadata: {
278
+ requestType: import_runtime_client_gql2.CopilotRequestType.Chat
460
279
  }
461
- threadIdRef.current = value.generateCopilotResponse.threadId || null;
462
- runIdRef.current = value.generateCopilotResponse.runId || null;
463
- setThreadId(threadIdRef.current);
464
- setRunId(runIdRef.current);
465
- messages2 = (0, import_runtime_client_gql3.convertGqlOutputToMessages)(
466
- (0, import_runtime_client_gql3.filterAdjacentAgentStateMessages)(value.generateCopilotResponse.messages)
467
- );
468
- if (messages2.length === 0) {
469
- continue;
470
- }
471
- newMessages = [];
472
- if (((_h = value.generateCopilotResponse.status) == null ? void 0 : _h.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "GUARDRAILS_VALIDATION_FAILED") {
473
- newMessages = [
474
- new import_runtime_client_gql3.TextMessage({
475
- role: import_runtime_client_gql3.MessageRole.Assistant,
476
- content: ((_i = value.generateCopilotResponse.status.details) == null ? void 0 : _i.guardrailsReason) || ""
477
- })
478
- ];
479
- setMessages([...previousMessages, ...newMessages]);
480
- break;
481
- } else {
482
- newMessages = [...messages2];
483
- for (const message of messages2) {
484
- if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
280
+ }), agentSessionRef.current ? {
281
+ agentSession: agentSessionRef.current
282
+ } : {}), {
283
+ agentStates: Object.values(coagentStatesRef.current).map((state) => ({
284
+ agentName: state.name,
285
+ state: JSON.stringify(state.state)
286
+ }))
287
+ }),
288
+ properties: copilotConfig.properties,
289
+ signal: (_d = abortControllerRef.current) == null ? void 0 : _d.signal
290
+ })
291
+ );
292
+ const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
293
+ const reader = stream.getReader();
294
+ let actionResults = {};
295
+ let executedCoAgentStateRenders = [];
296
+ let followUp = void 0;
297
+ try {
298
+ while (true) {
299
+ let done, value;
300
+ try {
301
+ const readResult = yield reader.read();
302
+ done = readResult.done;
303
+ value = readResult.value;
304
+ } catch (readError) {
305
+ break;
306
+ }
307
+ if (done) {
308
+ break;
309
+ }
310
+ if (!(value == null ? void 0 : value.generateCopilotResponse)) {
311
+ continue;
312
+ }
313
+ threadIdRef.current = value.generateCopilotResponse.threadId || null;
314
+ runIdRef.current = value.generateCopilotResponse.runId || null;
315
+ const messages2 = (0, import_runtime_client_gql2.convertGqlOutputToMessages)(
316
+ (0, import_runtime_client_gql2.filterAdjacentAgentStateMessages)(value.generateCopilotResponse.messages)
317
+ );
318
+ if (messages2.length === 0) {
319
+ continue;
320
+ }
321
+ newMessages = [];
322
+ if (((_h = value.generateCopilotResponse.status) == null ? void 0 : _h.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "GUARDRAILS_VALIDATION_FAILED") {
323
+ newMessages = [
324
+ new import_runtime_client_gql2.TextMessage({
325
+ role: import_runtime_client_gql2.MessageRole.Assistant,
326
+ content: ((_i = value.generateCopilotResponse.status.details) == null ? void 0 : _i.guardrailsReason) || ""
327
+ })
328
+ ];
329
+ } else {
330
+ for (const message of messages2) {
331
+ newMessages.push(message);
332
+ if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql2.MessageStatusCode.Pending && message.scope === "client" && onFunctionCall) {
333
+ if (!(message.id in actionResults)) {
485
334
  if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
486
335
  break;
487
336
  }
488
- yield onCoAgentStateRender({
489
- name: message.agentName,
490
- nodeName: message.nodeName,
491
- state: message.state
492
- });
493
- executedCoAgentStateRenders.push(message.id);
494
- }
495
- }
496
- const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
497
- if (lastAgentStateMessage) {
498
- if (lastAgentStateMessage.state.messages && lastAgentStateMessage.state.messages.length > 0) {
499
- syncedMessages = (0, import_runtime_client_gql3.loadMessagesFromJsonRepresentation)(
500
- lastAgentStateMessage.state.messages
501
- );
502
- }
503
- setCoagentStatesWithRef((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
504
- [lastAgentStateMessage.agentName]: {
505
- name: lastAgentStateMessage.agentName,
506
- state: lastAgentStateMessage.state,
507
- running: lastAgentStateMessage.running,
508
- active: lastAgentStateMessage.active,
509
- threadId: lastAgentStateMessage.threadId,
510
- nodeName: lastAgentStateMessage.nodeName,
511
- runId: lastAgentStateMessage.runId
512
- }
513
- }));
514
- if (lastAgentStateMessage.running) {
515
- setAgentSession({
516
- threadId: lastAgentStateMessage.threadId,
517
- agentName: lastAgentStateMessage.agentName,
518
- nodeName: lastAgentStateMessage.nodeName
519
- });
520
- } else {
521
- setAgentSession(null);
522
- }
523
- }
524
- }
525
- if (newMessages.length > 0) {
526
- setMessages([...previousMessages, ...newMessages]);
527
- }
528
- }
529
- const finalMessages = constructFinalMessages(syncedMessages, previousMessages, newMessages);
530
- let didExecuteAction = false;
531
- if (onFunctionCall) {
532
- const lastMessages = [];
533
- for (let i = finalMessages.length - 1; i >= 0; i--) {
534
- const message = finalMessages[i];
535
- if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql3.MessageStatusCode.Pending) {
536
- lastMessages.unshift(message);
537
- } else {
538
- break;
539
- }
540
- }
541
- for (const message of lastMessages) {
542
- setMessages(finalMessages);
543
- const action = actions.find((action2) => action2.name === message.name);
544
- if (action) {
545
- followUp = action.followUp;
546
- let result;
547
- try {
548
- result = yield Promise.race([
549
- onFunctionCall({
337
+ try {
338
+ setMessages([...previousMessages, ...newMessages]);
339
+ const action = actions.find((action2) => action2.name === message.name);
340
+ if (action) {
341
+ followUp = action.followUp;
342
+ }
343
+ const result = yield onFunctionCall({
550
344
  messages: previousMessages,
551
345
  name: message.name,
552
346
  args: message.arguments
553
- }),
554
- new Promise(
555
- (resolve) => {
556
- var _a2;
557
- return (_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.addEventListener(
558
- "abort",
559
- () => resolve("Operation was aborted by the user")
560
- );
561
- }
562
- ),
563
- // if the user stopped generation, we also abort consecutive actions
564
- new Promise((resolve) => {
565
- var _a2;
566
- if ((_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.aborted) {
567
- resolve("Operation was aborted by the user");
568
- }
569
- })
570
- ]);
571
- } catch (e) {
572
- result = `Failed to execute action ${message.name}`;
573
- console.error(`Failed to execute action ${message.name}: ${e}`);
347
+ });
348
+ actionResults[message.id] = result;
349
+ } catch (e) {
350
+ actionResults[message.id] = `Failed to execute action ${message.name}`;
351
+ console.error(`Failed to execute action ${message.name}: ${e}`);
352
+ }
574
353
  }
575
- didExecuteAction = true;
576
- const messageIndex = finalMessages.findIndex((msg) => msg.id === message.id);
577
- finalMessages.splice(
578
- messageIndex + 1,
579
- 0,
580
- new import_runtime_client_gql3.ResultMessage({
581
- id: "result-" + message.id,
582
- result: import_runtime_client_gql3.ResultMessage.encodeResult(result),
354
+ newMessages.push(
355
+ new import_runtime_client_gql2.ResultMessage({
356
+ result: import_runtime_client_gql2.ResultMessage.encodeResult(actionResults[message.id]),
583
357
  actionExecutionId: message.id,
584
358
  actionName: message.name
585
359
  })
586
360
  );
587
361
  }
362
+ if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
363
+ if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
364
+ break;
365
+ }
366
+ yield onCoAgentStateRender({
367
+ name: message.agentName,
368
+ nodeName: message.nodeName,
369
+ state: message.state
370
+ });
371
+ executedCoAgentStateRenders.push(message.id);
372
+ }
588
373
  }
589
- setMessages(finalMessages);
590
- }
591
- if (
592
- // if followUp is not explicitly false
593
- followUp !== false && // and we executed an action
594
- (didExecuteAction || // the last message is a server side result
595
- !isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
596
- !((_j = chatAbortControllerRef.current) == null ? void 0 : _j.signal.aborted)
597
- ) {
598
- yield new Promise((resolve) => setTimeout(resolve, 10));
599
- return yield runChatCompletionRef.current(finalMessages);
600
- } else if ((_k = chatAbortControllerRef.current) == null ? void 0 : _k.signal.aborted) {
601
- const repairedMessages = finalMessages.filter((message, actionExecutionIndex) => {
602
- if (message.isActionExecutionMessage()) {
603
- return finalMessages.find(
604
- (msg, resultIndex) => msg.isResultMessage() && msg.actionExecutionId === message.id && resultIndex === actionExecutionIndex + 1
605
- );
374
+ const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
375
+ if (lastAgentStateMessage) {
376
+ setCoagentStates((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
377
+ [lastAgentStateMessage.agentName]: {
378
+ name: lastAgentStateMessage.agentName,
379
+ state: lastAgentStateMessage.state,
380
+ running: lastAgentStateMessage.running,
381
+ active: lastAgentStateMessage.active,
382
+ threadId: lastAgentStateMessage.threadId,
383
+ nodeName: lastAgentStateMessage.nodeName,
384
+ runId: lastAgentStateMessage.runId
385
+ }
386
+ }));
387
+ if (lastAgentStateMessage.running) {
388
+ setAgentSession({
389
+ threadId: lastAgentStateMessage.threadId,
390
+ agentName: lastAgentStateMessage.agentName,
391
+ nodeName: lastAgentStateMessage.nodeName
392
+ });
393
+ } else {
394
+ setAgentSession(null);
606
395
  }
607
- return true;
608
- });
609
- const repairedMessageIds = repairedMessages.map((message) => message.id);
610
- setMessages(repairedMessages);
611
- if ((_l = agentSessionRef.current) == null ? void 0 : _l.nodeName) {
612
- setAgentSession({
613
- threadId: agentSessionRef.current.threadId,
614
- agentName: agentSessionRef.current.agentName,
615
- nodeName: "__end__"
616
- });
617
396
  }
618
- return newMessages.filter((message) => repairedMessageIds.includes(message.id));
619
- } else {
620
- return newMessages.slice();
621
397
  }
622
- } finally {
623
- setIsLoading(false);
398
+ if (newMessages.length > 0) {
399
+ setMessages([...previousMessages, ...newMessages]);
400
+ }
624
401
  }
625
- }),
626
- [
627
- messages,
628
- setMessages,
629
- makeSystemMessageCallback,
630
- copilotConfig,
631
- setIsLoading,
632
- initialMessages,
633
- isLoading,
634
- actions,
635
- onFunctionCall,
636
- onCoAgentStateRender,
637
- setCoagentStatesWithRef,
638
- coagentStatesRef,
639
- agentSession,
640
- setAgentSession
641
- ]
642
- );
643
- runChatCompletionRef.current = runChatCompletion;
644
- const runChatCompletionAndHandleFunctionCall = useAsyncCallback(
645
- (messages2) => __async(this, null, function* () {
646
- yield runChatCompletionRef.current(messages2);
647
- }),
648
- [messages]
649
- );
650
- const append = useAsyncCallback(
651
- (message) => __async(this, null, function* () {
652
- if (isLoading) {
653
- return;
402
+ if (
403
+ // if followUp is not explicitly false
404
+ followUp !== false && // if we have client side results
405
+ (Object.values(actionResults).length || // or the last message we received is a result
406
+ newMessages.length && newMessages[newMessages.length - 1].isResultMessage())
407
+ ) {
408
+ yield new Promise((resolve) => setTimeout(resolve, 10));
409
+ return yield runChatCompletionRef.current([...previousMessages, ...newMessages]);
410
+ } else {
411
+ return newMessages.slice();
654
412
  }
655
- const newMessages = [...messages, message];
656
- setMessages(newMessages);
657
- return runChatCompletionAndHandleFunctionCall(newMessages);
658
- }),
659
- [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]
660
- );
661
- const reload = useAsyncCallback(() => __async(this, null, function* () {
413
+ } finally {
414
+ setIsLoading(false);
415
+ }
416
+ });
417
+ runChatCompletionRef.current = runChatCompletion;
418
+ const runChatCompletionAndHandleFunctionCall = (messages2) => __async(this, null, function* () {
419
+ yield runChatCompletionRef.current(messages2);
420
+ });
421
+ const append = (message) => __async(this, null, function* () {
422
+ if (isLoading) {
423
+ return;
424
+ }
425
+ const newMessages = [...messages, message];
426
+ setMessages(newMessages);
427
+ return runChatCompletionAndHandleFunctionCall(newMessages);
428
+ });
429
+ const reload = () => __async(this, null, function* () {
662
430
  if (isLoading || messages.length === 0) {
663
431
  return;
664
432
  }
@@ -669,50 +437,32 @@ function useChat(options) {
669
437
  }
670
438
  setMessages(newMessages);
671
439
  return runChatCompletionAndHandleFunctionCall(newMessages);
672
- }), [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]);
440
+ });
673
441
  const stop = () => {
674
442
  var _a;
675
- (_a = chatAbortControllerRef.current) == null ? void 0 : _a.abort("Stop was called");
443
+ (_a = abortControllerRef.current) == null ? void 0 : _a.abort();
676
444
  };
677
445
  return {
678
446
  append,
679
447
  reload,
680
- stop,
681
- runChatCompletion: () => runChatCompletionRef.current(messages)
448
+ stop
682
449
  };
683
450
  }
684
- function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
685
- const finalMessages = syncedMessages.length > 0 ? [...syncedMessages] : [...previousMessages, ...newMessages];
686
- if (syncedMessages.length > 0) {
687
- const messagesWithAgentState = [...previousMessages, ...newMessages];
688
- let previousMessageId = void 0;
689
- for (const message of messagesWithAgentState) {
690
- if (message.isAgentStateMessage()) {
691
- const index = finalMessages.findIndex((msg) => msg.id === previousMessageId);
692
- if (index !== -1) {
693
- finalMessages.splice(index + 1, 0, message);
694
- }
695
- }
696
- previousMessageId = message.id;
697
- }
698
- }
699
- return finalMessages;
700
- }
701
451
 
702
452
  // src/components/copilot-provider/copilotkit.tsx
703
- var import_react7 = require("react");
453
+ var import_react6 = require("react");
704
454
  var import_react_dom = require("react-dom");
705
- var import_shared3 = require("@copilotkit/shared");
455
+ var import_shared2 = require("@copilotkit/shared");
706
456
 
707
457
  // src/context/copilot-messages-context.tsx
708
- var import_react6 = __toESM(require("react"));
458
+ var import_react5 = __toESM(require("react"));
709
459
  var emptyCopilotContext2 = {
710
460
  messages: [],
711
461
  setMessages: () => []
712
462
  };
713
- var CopilotMessagesContext = import_react6.default.createContext(emptyCopilotContext2);
463
+ var CopilotMessagesContext = import_react5.default.createContext(emptyCopilotContext2);
714
464
  function useCopilotMessagesContext() {
715
- const context = import_react6.default.useContext(CopilotMessagesContext);
465
+ const context = import_react5.default.useContext(CopilotMessagesContext);
716
466
  if (context === emptyCopilotContext2) {
717
467
  throw new Error(
718
468
  "A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`"
@@ -722,7 +472,7 @@ function useCopilotMessagesContext() {
722
472
  }
723
473
 
724
474
  // src/components/copilot-provider/copilotkit.tsx
725
- var import_jsx_runtime4 = require("react/jsx-runtime");
475
+ var import_jsx_runtime2 = require("react/jsx-runtime");
726
476
  var defaultCopilotContextCategories = ["global"];
727
477
 
728
478
  // src/hooks/use-copilot-chat.ts
@@ -740,36 +490,29 @@ function useCopilotChat(_a = {}) {
740
490
  setIsLoading,
741
491
  chatInstructions,
742
492
  actions,
743
- coagentStatesRef,
744
- setCoagentStatesWithRef,
493
+ coagentStates,
494
+ setCoagentStates,
745
495
  coAgentStateRenders,
746
496
  agentSession,
747
- setAgentSession,
748
- forwardedParameters,
749
- agentLock,
750
- threadId,
751
- setThreadId,
752
- runId,
753
- setRunId,
754
- chatAbortControllerRef
497
+ setAgentSession
755
498
  } = useCopilotContext();
756
499
  const { messages, setMessages } = useCopilotMessagesContext();
757
500
  const latestGetContextString = useUpdatedRef(getContextString);
758
- const deleteMessage = (0, import_react8.useCallback)(
501
+ const deleteMessage = (0, import_react7.useCallback)(
759
502
  (messageId) => {
760
503
  setMessages((prev) => prev.filter((message) => message.id !== messageId));
761
504
  },
762
505
  [setMessages]
763
506
  );
764
- const makeSystemMessageCallback = (0, import_react8.useCallback)(() => {
507
+ const makeSystemMessageCallback = (0, import_react7.useCallback)(() => {
765
508
  const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
766
509
  const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
767
- return new import_runtime_client_gql4.TextMessage({
510
+ return new import_runtime_client_gql3.TextMessage({
768
511
  content: systemMessageMaker(contextString, chatInstructions),
769
- role: import_runtime_client_gql4.Role.System
512
+ role: import_runtime_client_gql3.Role.System
770
513
  });
771
514
  }, [getContextString, makeSystemMessage, chatInstructions]);
772
- const onCoAgentStateRender = useAsyncCallback(
515
+ const onCoAgentStateRender = (0, import_react7.useCallback)(
773
516
  (args) => __async(this, null, function* () {
774
517
  var _a2;
775
518
  const { name, nodeName, state } = args;
@@ -787,7 +530,7 @@ function useCopilotChat(_a = {}) {
787
530
  }),
788
531
  [coAgentStateRenders]
789
532
  );
790
- const { append, reload, stop, runChatCompletion } = useChat(__spreadProps(__spreadValues({}, options), {
533
+ const { append, reload, stop } = useChat(__spreadProps(__spreadValues({}, options), {
791
534
  actions: Object.values(actions),
792
535
  copilotConfig: copilotApiConfig,
793
536
  initialMessages: options.initialMessages || [],
@@ -798,90 +541,53 @@ function useCopilotChat(_a = {}) {
798
541
  makeSystemMessageCallback,
799
542
  isLoading,
800
543
  setIsLoading,
801
- coagentStatesRef,
802
- setCoagentStatesWithRef,
544
+ coagentStates,
545
+ setCoagentStates,
803
546
  agentSession,
804
- setAgentSession,
805
- forwardedParameters,
806
- threadId,
807
- setThreadId,
808
- runId,
809
- setRunId,
810
- chatAbortControllerRef
547
+ setAgentSession
811
548
  }));
812
549
  const latestAppend = useUpdatedRef(append);
813
- const latestAppendFunc = useAsyncCallback(
814
- (message) => __async(this, null, function* () {
815
- return yield latestAppend.current(message);
816
- }),
550
+ const latestAppendFunc = (0, import_react7.useCallback)(
551
+ (message) => {
552
+ return latestAppend.current(message);
553
+ },
817
554
  [latestAppend]
818
555
  );
819
556
  const latestReload = useUpdatedRef(reload);
820
- const latestReloadFunc = useAsyncCallback(() => __async(this, null, function* () {
821
- return yield latestReload.current();
822
- }), [latestReload]);
557
+ const latestReloadFunc = (0, import_react7.useCallback)(() => {
558
+ return latestReload.current();
559
+ }, [latestReload]);
823
560
  const latestStop = useUpdatedRef(stop);
824
- const latestStopFunc = (0, import_react8.useCallback)(() => {
561
+ const latestStopFunc = (0, import_react7.useCallback)(() => {
825
562
  return latestStop.current();
826
563
  }, [latestStop]);
827
564
  const latestDelete = useUpdatedRef(deleteMessage);
828
- const latestDeleteFunc = (0, import_react8.useCallback)(
565
+ const latestDeleteFunc = (0, import_react7.useCallback)(
829
566
  (messageId) => {
830
567
  return latestDelete.current(messageId);
831
568
  },
832
569
  [latestDelete]
833
570
  );
834
571
  const latestSetMessages = useUpdatedRef(setMessages);
835
- const latestSetMessagesFunc = (0, import_react8.useCallback)(
572
+ const latestSetMessagesFunc = (0, import_react7.useCallback)(
836
573
  (messages2) => {
837
574
  return latestSetMessages.current(messages2);
838
575
  },
839
576
  [latestSetMessages]
840
577
  );
841
- const latestRunChatCompletion = useUpdatedRef(runChatCompletion);
842
- const latestRunChatCompletionFunc = useAsyncCallback(() => __async(this, null, function* () {
843
- return yield latestRunChatCompletion.current();
844
- }), [latestRunChatCompletion]);
845
- const reset = (0, import_react8.useCallback)(() => {
846
- latestStopFunc();
847
- setMessages([]);
848
- setThreadId(null);
849
- setRunId(null);
850
- setCoagentStatesWithRef({});
851
- let initialAgentSession = null;
852
- if (agentLock) {
853
- initialAgentSession = {
854
- agentName: agentLock
855
- };
856
- }
857
- setAgentSession(initialAgentSession);
858
- }, [
859
- latestStopFunc,
860
- setMessages,
861
- setThreadId,
862
- setCoagentStatesWithRef,
863
- setAgentSession,
864
- agentLock
865
- ]);
866
- const latestReset = useUpdatedRef(reset);
867
- const latestResetFunc = (0, import_react8.useCallback)(() => {
868
- return latestReset.current();
869
- }, [latestReset]);
870
578
  return {
871
579
  visibleMessages: messages,
872
580
  appendMessage: latestAppendFunc,
873
581
  setMessages: latestSetMessagesFunc,
874
582
  reloadMessages: latestReloadFunc,
875
583
  stopGeneration: latestStopFunc,
876
- reset: latestResetFunc,
877
584
  deleteMessage: latestDeleteFunc,
878
- runChatCompletion: latestRunChatCompletionFunc,
879
585
  isLoading
880
586
  };
881
587
  }
882
588
  function useUpdatedRef(value) {
883
- const ref = (0, import_react8.useRef)(value);
884
- (0, import_react8.useEffect)(() => {
589
+ const ref = (0, import_react7.useRef)(value);
590
+ (0, import_react7.useEffect)(() => {
885
591
  ref.current = value;
886
592
  }, [value]);
887
593
  return ref;