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