@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
@@ -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,21 +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 }
138
+ }
154
139
  };
155
140
  var CopilotContext = import_react.default.createContext(emptyCopilotContext);
156
141
  function useCopilotContext() {
@@ -183,160 +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
- }
177
+ var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
218
178
 
219
179
  // src/components/toast/toast-provider.tsx
220
- var import_react4 = require("react");
221
-
222
- // src/components/error-boundary/error-utils.tsx
223
180
  var import_react3 = require("react");
224
-
225
- // src/components/toast/exclamation-mark-icon.tsx
226
181
  var import_jsx_runtime = require("react/jsx-runtime");
227
- var ExclamationMarkIcon = ({
228
- className,
229
- style
230
- }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
231
- "svg",
232
- {
233
- xmlns: "http://www.w3.org/2000/svg",
234
- width: "24",
235
- height: "24",
236
- viewBox: "0 0 24 24",
237
- fill: "none",
238
- stroke: "currentColor",
239
- strokeWidth: "2",
240
- strokeLinecap: "round",
241
- strokeLinejoin: "round",
242
- className: `lucide lucide-circle-alert ${className ? className : ""}`,
243
- style,
244
- children: [
245
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
246
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", x2: "12", y1: "8", y2: "12" }),
247
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", x2: "12.01", y1: "16", y2: "16" })
248
- ]
249
- }
250
- );
251
-
252
- // src/components/error-boundary/error-utils.tsx
253
- var import_jsx_runtime2 = require("react/jsx-runtime");
254
- function ErrorToast({ errors }) {
255
- const errorsToRender = errors.map((error, idx) => {
256
- var _a, _b, _c;
257
- const message = "extensions" in error ? (_b = (_a = error.extensions) == null ? void 0 : _a.originalError) == null ? void 0 : _b.message : error.message;
258
- const code = "extensions" in error ? (_c = error.extensions) == null ? void 0 : _c.code : null;
259
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
260
- "div",
261
- {
262
- style: {
263
- marginTop: idx === 0 ? 0 : 10,
264
- marginBottom: 14
265
- },
266
- children: [
267
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ExclamationMarkIcon, { style: { marginBottom: 4 } }),
268
- code && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
269
- "div",
270
- {
271
- style: {
272
- fontWeight: "600",
273
- marginBottom: 4
274
- },
275
- children: [
276
- "Copilot Cloud Error:",
277
- " ",
278
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { fontFamily: "monospace", fontWeight: "normal" }, children: code })
279
- ]
280
- }
281
- ),
282
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { children: message })
283
- ]
284
- },
285
- idx
286
- );
287
- });
288
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
289
- "div",
290
- {
291
- style: {
292
- fontSize: "13px",
293
- maxWidth: "600px"
294
- },
295
- children: [
296
- errorsToRender,
297
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { fontSize: "11px", opacity: 0.75 }, children: "NOTE: This error only displays during local development." })
298
- ]
299
- }
300
- );
301
- }
302
- function useErrorToast() {
303
- const { addToast } = useToast();
304
- return (0, import_react3.useCallback)(
305
- (error) => {
306
- const errorId = error.map((err) => {
307
- var _a, _b;
308
- const message = "extensions" in err ? ((_b = (_a = err.extensions) == null ? void 0 : _a.originalError) == null ? void 0 : _b.message) || err.message : err.message;
309
- const stack = err.stack || "";
310
- return btoa(message + stack).slice(0, 32);
311
- }).join("|");
312
- addToast({
313
- type: "error",
314
- id: errorId,
315
- // Toast libraries typically dedupe by id
316
- message: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ErrorToast, { errors: error })
317
- });
318
- },
319
- [addToast]
320
- );
321
- }
322
- function useAsyncCallback(callback, deps) {
323
- const addErrorToast = useErrorToast();
324
- return (0, import_react3.useCallback)((...args) => __async(this, null, function* () {
325
- try {
326
- return yield callback(...args);
327
- } catch (error) {
328
- console.error("Error in async callback:", error);
329
- addErrorToast([error]);
330
- throw error;
331
- }
332
- }), deps);
333
- }
334
-
335
- // src/components/toast/toast-provider.tsx
336
- var import_jsx_runtime3 = require("react/jsx-runtime");
337
- var ToastContext = (0, import_react4.createContext)(void 0);
182
+ var ToastContext = (0, import_react3.createContext)(void 0);
338
183
  function useToast() {
339
- const context = (0, import_react4.useContext)(ToastContext);
184
+ const context = (0, import_react3.useContext)(ToastContext);
340
185
  if (!context) {
341
186
  throw new Error("useToast must be used within a ToastProvider");
342
187
  }
@@ -344,18 +189,15 @@ function useToast() {
344
189
  }
345
190
 
346
191
  // src/hooks/use-copilot-runtime-client.ts
347
- var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
348
- var import_react5 = require("react");
192
+ var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
193
+ var import_react4 = require("react");
349
194
  var useCopilotRuntimeClient = (options) => {
350
195
  const { addGraphQLErrorsToast } = useToast();
351
- const addErrorToast = useErrorToast();
352
- const runtimeClient = (0, import_react5.useMemo)(() => {
353
- 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), {
354
198
  handleGQLErrors: (error) => {
355
199
  if (error.graphQLErrors.length) {
356
200
  addGraphQLErrorsToast(error.graphQLErrors);
357
- } else {
358
- addErrorToast([error]);
359
201
  }
360
202
  }
361
203
  }));
@@ -376,309 +218,232 @@ function useChat(options) {
376
218
  actions,
377
219
  onFunctionCall,
378
220
  onCoAgentStateRender,
379
- setCoagentStatesWithRef,
380
- coagentStatesRef,
221
+ setCoagentStates,
222
+ coagentStates,
381
223
  agentSession,
382
- setAgentSession,
383
- threadId,
384
- setThreadId,
385
- runId,
386
- setRunId,
387
- chatAbortControllerRef
224
+ setAgentSession
388
225
  } = options;
226
+ const abortControllerRef = (0, import_react5.useRef)();
227
+ const threadIdRef = (0, import_react5.useRef)(null);
228
+ const runIdRef = (0, import_react5.useRef)(null);
389
229
  const { addGraphQLErrorsToast } = useToast();
390
- const runChatCompletionRef = (0, import_react6.useRef)();
391
- const agentSessionRef = (0, import_react6.useRef)(agentSession);
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);
392
234
  agentSessionRef.current = agentSession;
393
- const threadIdRef = (0, import_react6.useRef)(threadId);
394
- threadIdRef.current = threadId;
395
- const runIdRef = (0, import_react6.useRef)(runId);
396
- runIdRef.current = runId;
397
235
  const publicApiKey = copilotConfig.publicApiKey;
398
- 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 } : {});
399
237
  const runtimeClient = useCopilotRuntimeClient({
400
238
  url: copilotConfig.chatApiEndpoint,
401
239
  publicApiKey: copilotConfig.publicApiKey,
402
240
  headers,
403
241
  credentials: copilotConfig.credentials
404
242
  });
405
- const runChatCompletion = useAsyncCallback(
406
- (previousMessages) => __async(this, null, function* () {
407
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
408
- setIsLoading(true);
409
- let newMessages = [
410
- new import_runtime_client_gql3.TextMessage({
411
- content: "",
412
- role: import_runtime_client_gql3.Role.Assistant
413
- })
414
- ];
415
- chatAbortControllerRef.current = new AbortController();
416
- setMessages([...previousMessages, ...newMessages]);
417
- const systemMessage = makeSystemMessageCallback();
418
- const messagesWithContext = [systemMessage, ...initialMessages || [], ...previousMessages];
419
- const isAgentRun = agentSessionRef.current !== null;
420
- const stream = runtimeClient.asStream(
421
- runtimeClient.generateCopilotResponse({
422
- data: __spreadProps(__spreadValues(__spreadProps(__spreadValues({
423
- frontend: {
424
- actions: processActionsForRuntimeRequest(actions),
425
- url: window.location.href
426
- },
427
- threadId: threadIdRef.current,
428
- runId: runIdRef.current,
429
- messages: (0, import_runtime_client_gql3.convertMessagesToGqlInput)((0, import_runtime_client_gql3.filterAgentStateMessages)(messagesWithContext))
430
- }, copilotConfig.cloud ? {
431
- cloud: __spreadValues({}, ((_c = (_b = (_a = copilotConfig.cloud.guardrails) == null ? void 0 : _a.input) == null ? void 0 : _b.restrictToTopic) == null ? void 0 : _c.enabled) ? {
432
- guardrails: {
433
- inputValidationRules: {
434
- allowList: copilotConfig.cloud.guardrails.input.restrictToTopic.validTopics,
435
- denyList: copilotConfig.cloud.guardrails.input.restrictToTopic.invalidTopics
436
- }
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
437
290
  }
438
- } : {})
439
- } : {}), {
440
- metadata: {
441
- requestType: import_runtime_client_gql3.CopilotRequestType.Chat
442
- }
443
- }), agentSessionRef.current ? {
444
- agentSession: agentSessionRef.current
445
- } : {}), {
446
- agentStates: Object.values(coagentStatesRef.current).map((state) => ({
447
- agentName: state.name,
448
- state: JSON.stringify(state.state)
449
- })),
450
- forwardedParameters: options.forwardedParameters || {}
451
- }),
452
- properties: copilotConfig.properties,
453
- signal: (_d = chatAbortControllerRef.current) == null ? void 0 : _d.signal
454
- })
455
- );
456
- const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
457
- const reader = stream.getReader();
458
- let executedCoAgentStateRenders = [];
459
- let followUp = void 0;
460
- let messages2 = [];
461
- let syncedMessages = [];
462
- try {
463
- while (true) {
464
- let done, value;
465
- try {
466
- const readResult = yield reader.read();
467
- done = readResult.done;
468
- value = readResult.value;
469
- } catch (readError) {
470
- break;
471
- }
472
- if (done) {
473
- if (chatAbortControllerRef.current.signal.aborted) {
474
- return [];
475
291
  }
476
- break;
477
- }
478
- if (!(value == null ? void 0 : value.generateCopilotResponse)) {
479
- continue;
292
+ } : {})
293
+ } : {}), {
294
+ metadata: {
295
+ requestType: import_runtime_client_gql2.CopilotRequestType.Chat
480
296
  }
481
- threadIdRef.current = value.generateCopilotResponse.threadId || null;
482
- runIdRef.current = value.generateCopilotResponse.runId || null;
483
- setThreadId(threadIdRef.current);
484
- setRunId(runIdRef.current);
485
- messages2 = (0, import_runtime_client_gql3.convertGqlOutputToMessages)(
486
- (0, import_runtime_client_gql3.filterAdjacentAgentStateMessages)(value.generateCopilotResponse.messages)
487
- );
488
- if (messages2.length === 0) {
489
- continue;
490
- }
491
- newMessages = [];
492
- if (((_h = value.generateCopilotResponse.status) == null ? void 0 : _h.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "GUARDRAILS_VALIDATION_FAILED") {
493
- newMessages = [
494
- new import_runtime_client_gql3.TextMessage({
495
- role: import_runtime_client_gql3.MessageRole.Assistant,
496
- content: ((_i = value.generateCopilotResponse.status.details) == null ? void 0 : _i.guardrailsReason) || ""
497
- })
498
- ];
499
- setMessages([...previousMessages, ...newMessages]);
500
- break;
501
- } else {
502
- newMessages = [...messages2];
503
- for (const message of messages2) {
504
- 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)) {
505
351
  if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
506
352
  break;
507
353
  }
508
- yield onCoAgentStateRender({
509
- name: message.agentName,
510
- nodeName: message.nodeName,
511
- state: message.state
512
- });
513
- executedCoAgentStateRenders.push(message.id);
514
- }
515
- }
516
- const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
517
- if (lastAgentStateMessage) {
518
- if (lastAgentStateMessage.state.messages && lastAgentStateMessage.state.messages.length > 0) {
519
- syncedMessages = (0, import_runtime_client_gql3.loadMessagesFromJsonRepresentation)(
520
- lastAgentStateMessage.state.messages
521
- );
522
- }
523
- setCoagentStatesWithRef((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
524
- [lastAgentStateMessage.agentName]: {
525
- name: lastAgentStateMessage.agentName,
526
- state: lastAgentStateMessage.state,
527
- running: lastAgentStateMessage.running,
528
- active: lastAgentStateMessage.active,
529
- threadId: lastAgentStateMessage.threadId,
530
- nodeName: lastAgentStateMessage.nodeName,
531
- runId: lastAgentStateMessage.runId
532
- }
533
- }));
534
- if (lastAgentStateMessage.running) {
535
- setAgentSession({
536
- threadId: lastAgentStateMessage.threadId,
537
- agentName: lastAgentStateMessage.agentName,
538
- nodeName: lastAgentStateMessage.nodeName
539
- });
540
- } else {
541
- setAgentSession(null);
542
- }
543
- }
544
- }
545
- if (newMessages.length > 0) {
546
- setMessages([...previousMessages, ...newMessages]);
547
- }
548
- }
549
- const finalMessages = constructFinalMessages(syncedMessages, previousMessages, newMessages);
550
- let didExecuteAction = false;
551
- if (onFunctionCall) {
552
- const lastMessages = [];
553
- for (let i = finalMessages.length - 1; i >= 0; i--) {
554
- const message = finalMessages[i];
555
- if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql3.MessageStatusCode.Pending) {
556
- lastMessages.unshift(message);
557
- } else {
558
- break;
559
- }
560
- }
561
- for (const message of lastMessages) {
562
- setMessages(finalMessages);
563
- const action = actions.find((action2) => action2.name === message.name);
564
- if (action) {
565
- followUp = action.followUp;
566
- let result;
567
- try {
568
- result = yield Promise.race([
569
- 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({
570
361
  messages: previousMessages,
571
362
  name: message.name,
572
363
  args: message.arguments
573
- }),
574
- new Promise(
575
- (resolve) => {
576
- var _a2;
577
- return (_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.addEventListener(
578
- "abort",
579
- () => resolve("Operation was aborted by the user")
580
- );
581
- }
582
- ),
583
- // if the user stopped generation, we also abort consecutive actions
584
- new Promise((resolve) => {
585
- var _a2;
586
- if ((_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.aborted) {
587
- resolve("Operation was aborted by the user");
588
- }
589
- })
590
- ]);
591
- } catch (e) {
592
- result = `Failed to execute action ${message.name}`;
593
- 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
+ }
594
370
  }
595
- didExecuteAction = true;
596
- const messageIndex = finalMessages.findIndex((msg) => msg.id === message.id);
597
- finalMessages.splice(
598
- messageIndex + 1,
599
- 0,
600
- new import_runtime_client_gql3.ResultMessage({
601
- id: "result-" + message.id,
602
- 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]),
603
374
  actionExecutionId: message.id,
604
375
  actionName: message.name
605
376
  })
606
377
  );
607
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
+ }
608
390
  }
609
- setMessages(finalMessages);
610
- }
611
- if (
612
- // if followUp is not explicitly false
613
- followUp !== false && // and we executed an action
614
- (didExecuteAction || // the last message is a server side result
615
- !isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
616
- !((_j = chatAbortControllerRef.current) == null ? void 0 : _j.signal.aborted)
617
- ) {
618
- yield new Promise((resolve) => setTimeout(resolve, 10));
619
- return yield runChatCompletionRef.current(finalMessages);
620
- } else if ((_k = chatAbortControllerRef.current) == null ? void 0 : _k.signal.aborted) {
621
- const repairedMessages = finalMessages.filter((message, actionExecutionIndex) => {
622
- if (message.isActionExecutionMessage()) {
623
- return finalMessages.find(
624
- (msg, resultIndex) => msg.isResultMessage() && msg.actionExecutionId === message.id && resultIndex === actionExecutionIndex + 1
625
- );
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);
626
412
  }
627
- return true;
628
- });
629
- const repairedMessageIds = repairedMessages.map((message) => message.id);
630
- setMessages(repairedMessages);
631
- if ((_l = agentSessionRef.current) == null ? void 0 : _l.nodeName) {
632
- setAgentSession({
633
- threadId: agentSessionRef.current.threadId,
634
- agentName: agentSessionRef.current.agentName,
635
- nodeName: "__end__"
636
- });
637
413
  }
638
- return newMessages.filter((message) => repairedMessageIds.includes(message.id));
639
- } else {
640
- return newMessages.slice();
641
414
  }
642
- } finally {
643
- setIsLoading(false);
415
+ if (newMessages.length > 0) {
416
+ setMessages([...previousMessages, ...newMessages]);
417
+ }
644
418
  }
645
- }),
646
- [
647
- messages,
648
- setMessages,
649
- makeSystemMessageCallback,
650
- copilotConfig,
651
- setIsLoading,
652
- initialMessages,
653
- isLoading,
654
- actions,
655
- onFunctionCall,
656
- onCoAgentStateRender,
657
- setCoagentStatesWithRef,
658
- coagentStatesRef,
659
- agentSession,
660
- setAgentSession
661
- ]
662
- );
663
- runChatCompletionRef.current = runChatCompletion;
664
- const runChatCompletionAndHandleFunctionCall = useAsyncCallback(
665
- (messages2) => __async(this, null, function* () {
666
- yield runChatCompletionRef.current(messages2);
667
- }),
668
- [messages]
669
- );
670
- const append = useAsyncCallback(
671
- (message) => __async(this, null, function* () {
672
- if (isLoading) {
673
- 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();
674
429
  }
675
- const newMessages = [...messages, message];
676
- setMessages(newMessages);
677
- return runChatCompletionAndHandleFunctionCall(newMessages);
678
- }),
679
- [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]
680
- );
681
- 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* () {
682
447
  if (isLoading || messages.length === 0) {
683
448
  return;
684
449
  }
@@ -689,41 +454,23 @@ function useChat(options) {
689
454
  }
690
455
  setMessages(newMessages);
691
456
  return runChatCompletionAndHandleFunctionCall(newMessages);
692
- }), [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]);
457
+ });
693
458
  const stop = () => {
694
459
  var _a;
695
- (_a = chatAbortControllerRef.current) == null ? void 0 : _a.abort("Stop was called");
460
+ (_a = abortControllerRef.current) == null ? void 0 : _a.abort();
696
461
  };
697
462
  return {
698
463
  append,
699
464
  reload,
700
- stop,
701
- runChatCompletion: () => runChatCompletionRef.current(messages)
465
+ stop
702
466
  };
703
467
  }
704
- function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
705
- const finalMessages = syncedMessages.length > 0 ? [...syncedMessages] : [...previousMessages, ...newMessages];
706
- if (syncedMessages.length > 0) {
707
- const messagesWithAgentState = [...previousMessages, ...newMessages];
708
- let previousMessageId = void 0;
709
- for (const message of messagesWithAgentState) {
710
- if (message.isAgentStateMessage()) {
711
- const index = finalMessages.findIndex((msg) => msg.id === previousMessageId);
712
- if (index !== -1) {
713
- finalMessages.splice(index + 1, 0, message);
714
- }
715
- }
716
- previousMessageId = message.id;
717
- }
718
- }
719
- return finalMessages;
720
- }
721
468
 
722
469
  // src/components/copilot-provider/copilotkit.tsx
723
- var import_react7 = require("react");
470
+ var import_react6 = require("react");
724
471
  var import_react_dom = require("react-dom");
725
- var import_shared3 = require("@copilotkit/shared");
726
- var import_jsx_runtime4 = require("react/jsx-runtime");
472
+ var import_shared2 = require("@copilotkit/shared");
473
+ var import_jsx_runtime2 = require("react/jsx-runtime");
727
474
  var defaultCopilotContextCategories = ["global"];
728
475
 
729
476
  // src/hooks/use-copilot-chat.ts
@@ -741,36 +488,29 @@ function useCopilotChat(_a = {}) {
741
488
  setIsLoading,
742
489
  chatInstructions,
743
490
  actions,
744
- coagentStatesRef,
745
- setCoagentStatesWithRef,
491
+ coagentStates,
492
+ setCoagentStates,
746
493
  coAgentStateRenders,
747
494
  agentSession,
748
- setAgentSession,
749
- forwardedParameters,
750
- agentLock,
751
- threadId,
752
- setThreadId,
753
- runId,
754
- setRunId,
755
- chatAbortControllerRef
495
+ setAgentSession
756
496
  } = useCopilotContext();
757
497
  const { messages, setMessages } = useCopilotMessagesContext();
758
498
  const latestGetContextString = useUpdatedRef(getContextString);
759
- const deleteMessage = (0, import_react8.useCallback)(
499
+ const deleteMessage = (0, import_react7.useCallback)(
760
500
  (messageId) => {
761
501
  setMessages((prev) => prev.filter((message) => message.id !== messageId));
762
502
  },
763
503
  [setMessages]
764
504
  );
765
- const makeSystemMessageCallback = (0, import_react8.useCallback)(() => {
505
+ const makeSystemMessageCallback = (0, import_react7.useCallback)(() => {
766
506
  const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
767
507
  const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
768
- return new import_runtime_client_gql4.TextMessage({
508
+ return new import_runtime_client_gql3.TextMessage({
769
509
  content: systemMessageMaker(contextString, chatInstructions),
770
- role: import_runtime_client_gql4.Role.System
510
+ role: import_runtime_client_gql3.Role.System
771
511
  });
772
512
  }, [getContextString, makeSystemMessage, chatInstructions]);
773
- const onCoAgentStateRender = useAsyncCallback(
513
+ const onCoAgentStateRender = (0, import_react7.useCallback)(
774
514
  (args) => __async(this, null, function* () {
775
515
  var _a2;
776
516
  const { name, nodeName, state } = args;
@@ -788,7 +528,7 @@ function useCopilotChat(_a = {}) {
788
528
  }),
789
529
  [coAgentStateRenders]
790
530
  );
791
- const { append, reload, stop, runChatCompletion } = useChat(__spreadProps(__spreadValues({}, options), {
531
+ const { append, reload, stop } = useChat(__spreadProps(__spreadValues({}, options), {
792
532
  actions: Object.values(actions),
793
533
  copilotConfig: copilotApiConfig,
794
534
  initialMessages: options.initialMessages || [],
@@ -799,90 +539,53 @@ function useCopilotChat(_a = {}) {
799
539
  makeSystemMessageCallback,
800
540
  isLoading,
801
541
  setIsLoading,
802
- coagentStatesRef,
803
- setCoagentStatesWithRef,
542
+ coagentStates,
543
+ setCoagentStates,
804
544
  agentSession,
805
- setAgentSession,
806
- forwardedParameters,
807
- threadId,
808
- setThreadId,
809
- runId,
810
- setRunId,
811
- chatAbortControllerRef
545
+ setAgentSession
812
546
  }));
813
547
  const latestAppend = useUpdatedRef(append);
814
- const latestAppendFunc = useAsyncCallback(
815
- (message) => __async(this, null, function* () {
816
- return yield latestAppend.current(message);
817
- }),
548
+ const latestAppendFunc = (0, import_react7.useCallback)(
549
+ (message) => {
550
+ return latestAppend.current(message);
551
+ },
818
552
  [latestAppend]
819
553
  );
820
554
  const latestReload = useUpdatedRef(reload);
821
- const latestReloadFunc = useAsyncCallback(() => __async(this, null, function* () {
822
- return yield latestReload.current();
823
- }), [latestReload]);
555
+ const latestReloadFunc = (0, import_react7.useCallback)(() => {
556
+ return latestReload.current();
557
+ }, [latestReload]);
824
558
  const latestStop = useUpdatedRef(stop);
825
- const latestStopFunc = (0, import_react8.useCallback)(() => {
559
+ const latestStopFunc = (0, import_react7.useCallback)(() => {
826
560
  return latestStop.current();
827
561
  }, [latestStop]);
828
562
  const latestDelete = useUpdatedRef(deleteMessage);
829
- const latestDeleteFunc = (0, import_react8.useCallback)(
563
+ const latestDeleteFunc = (0, import_react7.useCallback)(
830
564
  (messageId) => {
831
565
  return latestDelete.current(messageId);
832
566
  },
833
567
  [latestDelete]
834
568
  );
835
569
  const latestSetMessages = useUpdatedRef(setMessages);
836
- const latestSetMessagesFunc = (0, import_react8.useCallback)(
570
+ const latestSetMessagesFunc = (0, import_react7.useCallback)(
837
571
  (messages2) => {
838
572
  return latestSetMessages.current(messages2);
839
573
  },
840
574
  [latestSetMessages]
841
575
  );
842
- const latestRunChatCompletion = useUpdatedRef(runChatCompletion);
843
- const latestRunChatCompletionFunc = useAsyncCallback(() => __async(this, null, function* () {
844
- return yield latestRunChatCompletion.current();
845
- }), [latestRunChatCompletion]);
846
- const reset = (0, import_react8.useCallback)(() => {
847
- latestStopFunc();
848
- setMessages([]);
849
- setThreadId(null);
850
- setRunId(null);
851
- setCoagentStatesWithRef({});
852
- let initialAgentSession = null;
853
- if (agentLock) {
854
- initialAgentSession = {
855
- agentName: agentLock
856
- };
857
- }
858
- setAgentSession(initialAgentSession);
859
- }, [
860
- latestStopFunc,
861
- setMessages,
862
- setThreadId,
863
- setCoagentStatesWithRef,
864
- setAgentSession,
865
- agentLock
866
- ]);
867
- const latestReset = useUpdatedRef(reset);
868
- const latestResetFunc = (0, import_react8.useCallback)(() => {
869
- return latestReset.current();
870
- }, [latestReset]);
871
576
  return {
872
577
  visibleMessages: messages,
873
578
  appendMessage: latestAppendFunc,
874
579
  setMessages: latestSetMessagesFunc,
875
580
  reloadMessages: latestReloadFunc,
876
581
  stopGeneration: latestStopFunc,
877
- reset: latestResetFunc,
878
582
  deleteMessage: latestDeleteFunc,
879
- runChatCompletion: latestRunChatCompletionFunc,
880
583
  isLoading
881
584
  };
882
585
  }
883
586
  function useUpdatedRef(value) {
884
- const ref = (0, import_react8.useRef)(value);
885
- (0, import_react8.useEffect)(() => {
587
+ const ref = (0, import_react7.useRef)(value);
588
+ (0, import_react7.useEffect)(() => {
886
589
  ref.current = value;
887
590
  }, [value]);
888
591
  return ref;
@@ -923,8 +626,8 @@ function useCoAgent(options) {
923
626
  const generalContext = useCopilotContext();
924
627
  const messagesContext = useCopilotMessagesContext();
925
628
  const context = __spreadValues(__spreadValues({}, generalContext), messagesContext);
926
- const { coagentStates, coagentStatesRef, setCoagentStatesWithRef } = context;
927
- const { appendMessage, runChatCompletion } = useCopilotChat();
629
+ const { coagentStates, setCoagentStates } = context;
630
+ const { appendMessage } = useCopilotChat();
928
631
  const getCoagentState = (coagentStates2, name2) => {
929
632
  if (coagentStates2[name2]) {
930
633
  return coagentStates2[name2];
@@ -941,43 +644,40 @@ function useCoAgent(options) {
941
644
  }
942
645
  };
943
646
  const setState = (newState) => {
944
- let coagentState2 = getCoagentState(coagentStatesRef.current || {}, name);
945
- const updatedState = typeof newState === "function" ? newState(coagentState2.state) : newState;
946
- setCoagentStatesWithRef(__spreadProps(__spreadValues({}, coagentStatesRef.current), {
947
- [name]: __spreadProps(__spreadValues({}, coagentState2), {
948
- state: updatedState
949
- })
950
- }));
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
+ });
951
656
  };
952
657
  const coagentState = getCoagentState(coagentStates, name);
953
658
  const state = isExternalStateManagement(options) ? options.state : coagentState.state;
954
- (0, import_react9.useEffect)(() => {
659
+ (0, import_react8.useEffect)(() => {
955
660
  if (isExternalStateManagement(options)) {
956
661
  setState(options.state);
957
662
  } else if (coagentStates[name] === void 0) {
958
663
  setState(options.initialState === void 0 ? {} : options.initialState);
959
664
  }
960
- }, [
961
- isExternalStateManagement(options) ? JSON.stringify(options.state) : void 0,
962
- // reset initialstate on reset
963
- coagentStates[name] === void 0
964
- ]);
965
- const runAgentCallback = useAsyncCallback(
966
- (hint) => __async(this, null, function* () {
967
- yield runAgent(name, context, appendMessage, runChatCompletion, hint);
968
- }),
969
- [name, context, appendMessage, runChatCompletion]
970
- );
665
+ }, [isExternalStateManagement(options) ? JSON.stringify(options.state) : void 0]);
971
666
  return {
972
667
  name,
973
668
  nodeName: coagentState.nodeName,
974
- threadId: coagentState.threadId,
669
+ state,
670
+ setState,
975
671
  running: coagentState.running,
976
- state: coagentState.state,
977
- setState: isExternalStateManagement(options) ? options.setState : setState,
978
- start: () => startAgent(name, context),
979
- stop: () => stopAgent(name, context),
980
- 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
+ }
981
681
  };
982
682
  }
983
683
  function startAgent(name, context) {
@@ -990,22 +690,11 @@ function stopAgent(name, context) {
990
690
  const { agentSession, setAgentSession } = context;
991
691
  if (agentSession && agentSession.agentName === name) {
992
692
  setAgentSession(null);
993
- context.setCoagentStates((prevAgentStates) => {
994
- return __spreadProps(__spreadValues({}, prevAgentStates), {
995
- [name]: __spreadProps(__spreadValues({}, prevAgentStates[name]), {
996
- running: false,
997
- active: false,
998
- threadId: void 0,
999
- nodeName: void 0,
1000
- runId: void 0
1001
- })
1002
- });
1003
- });
1004
693
  } else {
1005
694
  console.warn(`No agent session found for ${name}`);
1006
695
  }
1007
696
  }
1008
- function runAgent(name, context, appendMessage, runChatCompletion, hint) {
697
+ function runAgent(name, context, appendMessage, hint) {
1009
698
  return __async(this, null, function* () {
1010
699
  var _a, _b;
1011
700
  const { agentSession, setAgentSession } = context;
@@ -1021,24 +710,17 @@ function runAgent(name, context, appendMessage, runChatCompletion, hint) {
1021
710
  previousState = message.state;
1022
711
  }
1023
712
  }
1024
- 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) || {};
1025
714
  if (hint) {
1026
715
  const hintMessage = hint({ previousState, currentState: state });
1027
716
  if (hintMessage) {
1028
717
  yield appendMessage(hintMessage);
1029
- } else {
1030
- yield runChatCompletion();
1031
718
  }
1032
- } else {
1033
- yield runChatCompletion();
1034
719
  }
1035
720
  });
1036
721
  }
1037
722
  // Annotate the CommonJS export names for ESM import in node:
1038
723
  0 && (module.exports = {
1039
- runAgent,
1040
- startAgent,
1041
- stopAgent,
1042
724
  useCoAgent
1043
725
  });
1044
726
  //# sourceMappingURL=use-coagent.js.map