@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.
- package/CHANGELOG.md +9 -0
- package/dist/{chunk-LNI2Z45S.mjs → chunk-2KCEHGSI.mjs} +50 -100
- package/dist/chunk-2KCEHGSI.mjs.map +1 -0
- package/dist/{chunk-2KT73RVG.mjs → chunk-6OR25P32.mjs} +19 -75
- package/dist/chunk-6OR25P32.mjs.map +1 -0
- package/dist/{chunk-3GQPEN4M.mjs → chunk-DDVXFNYA.mjs} +32 -66
- package/dist/chunk-DDVXFNYA.mjs.map +1 -0
- package/dist/{chunk-XOQMISG3.mjs → chunk-FXHKK52V.mjs} +13 -14
- package/dist/chunk-FXHKK52V.mjs.map +1 -0
- package/dist/{chunk-HIUT2NLX.mjs → chunk-H4VZMKR6.mjs} +2 -2
- package/dist/{chunk-X36DNILG.mjs → chunk-H7LSKIDK.mjs} +23 -71
- package/dist/chunk-H7LSKIDK.mjs.map +1 -0
- package/dist/chunk-JDQCJCAQ.mjs +295 -0
- package/dist/chunk-JDQCJCAQ.mjs.map +1 -0
- package/dist/chunk-L34MHAXR.mjs +1 -0
- package/dist/{chunk-WXREY7UP.mjs → chunk-LODRWFMB.mjs} +4 -16
- package/dist/chunk-LODRWFMB.mjs.map +1 -0
- package/dist/{chunk-EWKJMQOF.mjs → chunk-MWZO6TUR.mjs} +13 -29
- package/dist/chunk-MWZO6TUR.mjs.map +1 -0
- package/dist/{chunk-6BQVZFNO.mjs → chunk-ODN4H66E.mjs} +2 -6
- package/dist/chunk-ODN4H66E.mjs.map +1 -0
- package/dist/{chunk-FQ53HQYZ.mjs → chunk-QDGDXRRJ.mjs} +2 -2
- package/dist/{chunk-22XKTBPF.mjs → chunk-XINZBP3J.mjs} +3 -15
- package/dist/chunk-XINZBP3J.mjs.map +1 -0
- package/dist/components/copilot-provider/copilot-messages.d.ts +0 -9
- package/dist/components/copilot-provider/copilotkit-props.d.ts +0 -21
- package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.d.ts +0 -9
- package/dist/components/copilot-provider/copilotkit.js +95 -224
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +8 -9
- package/dist/components/copilot-provider/index.d.ts +0 -9
- package/dist/components/copilot-provider/index.js +95 -224
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +8 -9
- package/dist/components/index.d.ts +0 -9
- package/dist/components/index.js +95 -224
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +8 -9
- package/dist/components/toast/toast-provider.d.ts +1 -2
- package/dist/components/toast/toast-provider.js +63 -77
- package/dist/components/toast/toast-provider.js.map +1 -1
- package/dist/components/toast/toast-provider.mjs +1 -1
- package/dist/context/copilot-context.d.ts +4 -37
- package/dist/context/copilot-context.js +3 -15
- package/dist/context/copilot-context.js.map +1 -1
- package/dist/context/copilot-context.mjs +1 -1
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.js +3 -15
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +4 -4
- package/dist/hooks/index.d.ts +1 -3
- package/dist/hooks/index.js +297 -703
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +23 -35
- package/dist/hooks/use-chat.d.ts +3 -35
- package/dist/hooks/use-chat.js +205 -453
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +3 -4
- package/dist/hooks/use-coagent-state-render.d.ts +2 -2
- package/dist/hooks/use-coagent-state-render.js +8 -43
- package/dist/hooks/use-coagent-state-render.js.map +1 -1
- package/dist/hooks/use-coagent-state-render.mjs +2 -4
- package/dist/hooks/use-coagent.d.ts +1 -14
- package/dist/hooks/use-coagent.js +265 -603
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +12 -20
- package/dist/hooks/use-copilot-action.d.ts +2 -12
- package/dist/hooks/use-copilot-action.js +19 -169
- package/dist/hooks/use-copilot-action.js.map +1 -1
- package/dist/hooks/use-copilot-action.mjs +2 -4
- package/dist/hooks/use-copilot-chat.d.ts +0 -2
- package/dist/hooks/use-copilot-chat.js +240 -545
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +11 -13
- package/dist/hooks/use-copilot-readable.js +3 -15
- package/dist/hooks/use-copilot-readable.js.map +1 -1
- package/dist/hooks/use-copilot-readable.mjs +2 -2
- package/dist/hooks/use-copilot-runtime-client.js +4 -110
- package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
- package/dist/hooks/use-copilot-runtime-client.mjs +2 -2
- package/dist/hooks/use-make-copilot-document-readable.js +3 -15
- package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
- package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
- package/dist/index.d.ts +3 -4
- package/dist/index.js +398 -812
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +31 -43
- package/dist/lib/copilot-task.d.ts +1 -6
- package/dist/lib/copilot-task.js +17 -55
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +9 -11
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +17 -55
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +9 -11
- package/dist/types/frontend-action.d.ts +2 -21
- package/dist/types/frontend-action.js +0 -34
- package/dist/types/frontend-action.js.map +1 -1
- package/dist/types/frontend-action.mjs +0 -7
- package/dist/types/index.d.ts +1 -2
- package/dist/types/index.js.map +1 -1
- package/dist/utils/extract.d.ts +2 -3
- package/dist/utils/extract.js +3 -21
- package/dist/utils/extract.js.map +1 -1
- package/dist/utils/extract.mjs +8 -9
- package/dist/utils/index.js +3 -21
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +9 -10
- package/package.json +5 -5
- package/dist/chunk-22XKTBPF.mjs.map +0 -1
- package/dist/chunk-2KT73RVG.mjs.map +0 -1
- package/dist/chunk-3GQPEN4M.mjs.map +0 -1
- package/dist/chunk-6BQVZFNO.mjs.map +0 -1
- package/dist/chunk-EWKJMQOF.mjs.map +0 -1
- package/dist/chunk-LHKIIAUQ.mjs +0 -59
- package/dist/chunk-LHKIIAUQ.mjs.map +0 -1
- package/dist/chunk-LNI2Z45S.mjs.map +0 -1
- package/dist/chunk-NR2BTA6Z.mjs +0 -1
- package/dist/chunk-VGOFRULA.mjs +0 -401
- package/dist/chunk-VGOFRULA.mjs.map +0 -1
- package/dist/chunk-VNTDIJSG.mjs +0 -37
- package/dist/chunk-VNTDIJSG.mjs.map +0 -1
- package/dist/chunk-WXREY7UP.mjs.map +0 -1
- package/dist/chunk-X36DNILG.mjs.map +0 -1
- package/dist/chunk-XERJQUHA.mjs +0 -31
- package/dist/chunk-XERJQUHA.mjs.map +0 -1
- package/dist/chunk-XOQMISG3.mjs.map +0 -1
- package/dist/components/error-boundary/error-boundary.d.ts +0 -22
- package/dist/components/error-boundary/error-boundary.js +0 -183
- package/dist/components/error-boundary/error-boundary.js.map +0 -1
- package/dist/components/error-boundary/error-boundary.mjs +0 -12
- package/dist/components/error-boundary/error-boundary.mjs.map +0 -1
- package/dist/components/error-boundary/error-utils.d.ts +0 -11
- package/dist/components/error-boundary/error-utils.js +0 -177
- package/dist/components/error-boundary/error-utils.js.map +0 -1
- package/dist/components/error-boundary/error-utils.mjs +0 -13
- package/dist/components/error-boundary/error-utils.mjs.map +0 -1
- package/dist/hooks/use-copilot-authenticated-action.d.ts +0 -8
- package/dist/hooks/use-copilot-authenticated-action.js +0 -418
- package/dist/hooks/use-copilot-authenticated-action.js.map +0 -1
- package/dist/hooks/use-copilot-authenticated-action.mjs +0 -12
- package/dist/hooks/use-copilot-authenticated-action.mjs.map +0 -1
- /package/dist/{chunk-HIUT2NLX.mjs.map → chunk-H4VZMKR6.mjs.map} +0 -0
- /package/dist/{chunk-NR2BTA6Z.mjs.map → chunk-L34MHAXR.mjs.map} +0 -0
- /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
|
|
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(
|
|
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
|
|
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/
|
|
195
|
-
var
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
354
|
-
|
|
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
|
-
|
|
382
|
-
|
|
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
|
|
393
|
-
const
|
|
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 ? { [
|
|
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 =
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
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
|
-
|
|
292
|
+
} : {})
|
|
293
|
+
} : {}), {
|
|
294
|
+
metadata: {
|
|
295
|
+
requestType: import_runtime_client_gql2.CopilotRequestType.Chat
|
|
479
296
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
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
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
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
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
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
|
-
|
|
606
|
-
|
|
607
|
-
|
|
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
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
if (
|
|
633
|
-
|
|
634
|
-
|
|
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
|
-
|
|
653
|
-
|
|
415
|
+
if (newMessages.length > 0) {
|
|
416
|
+
setMessages([...previousMessages, ...newMessages]);
|
|
417
|
+
}
|
|
654
418
|
}
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
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
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
)
|
|
691
|
-
|
|
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
|
-
})
|
|
457
|
+
});
|
|
703
458
|
const stop = () => {
|
|
704
459
|
var _a;
|
|
705
|
-
(_a =
|
|
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
|
|
470
|
+
var import_react6 = require("react");
|
|
734
471
|
var import_react_dom = require("react-dom");
|
|
735
|
-
var
|
|
736
|
-
var
|
|
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
|
-
|
|
755
|
-
|
|
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,
|
|
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,
|
|
505
|
+
const makeSystemMessageCallback = (0, import_react7.useCallback)(() => {
|
|
776
506
|
const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
|
|
777
507
|
const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
|
|
778
|
-
return new
|
|
508
|
+
return new import_runtime_client_gql3.TextMessage({
|
|
779
509
|
content: systemMessageMaker(contextString, chatInstructions),
|
|
780
|
-
role:
|
|
510
|
+
role: import_runtime_client_gql3.Role.System
|
|
781
511
|
});
|
|
782
512
|
}, [getContextString, makeSystemMessage, chatInstructions]);
|
|
783
|
-
const onCoAgentStateRender =
|
|
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
|
|
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
|
-
|
|
813
|
-
|
|
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 =
|
|
826
|
-
(message) =>
|
|
827
|
-
return
|
|
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 =
|
|
833
|
-
return
|
|
834
|
-
}
|
|
555
|
+
const latestReloadFunc = (0, import_react7.useCallback)(() => {
|
|
556
|
+
return latestReload.current();
|
|
557
|
+
}, [latestReload]);
|
|
835
558
|
const latestStop = useUpdatedRef(stop);
|
|
836
|
-
const latestStopFunc = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
896
|
-
(0,
|
|
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,
|
|
947
|
-
const { appendMessage
|
|
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
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
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,
|
|
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
|
-
|
|
669
|
+
state,
|
|
670
|
+
setState,
|
|
995
671
|
running: coagentState.running,
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
stop: () =>
|
|
1000
|
-
|
|
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,
|
|
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.
|
|
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
|