@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.
- package/CHANGELOG.md +21 -0
- package/dist/{chunk-SFPANIOY.mjs → chunk-2KCEHGSI.mjs} +49 -99
- package/dist/chunk-2KCEHGSI.mjs.map +1 -0
- package/dist/{chunk-YL6V3QTN.mjs → chunk-6OR25P32.mjs} +15 -42
- package/dist/chunk-6OR25P32.mjs.map +1 -0
- package/dist/{chunk-VQDGBYWQ.mjs → chunk-DDVXFNYA.mjs} +31 -55
- package/dist/chunk-DDVXFNYA.mjs.map +1 -0
- package/dist/{chunk-NYBGR2NK.mjs → chunk-FXHKK52V.mjs} +13 -14
- package/dist/chunk-FXHKK52V.mjs.map +1 -0
- package/dist/{chunk-VPTC36RZ.mjs → chunk-H4VZMKR6.mjs} +2 -2
- package/dist/{chunk-OAF4ASJH.mjs → chunk-H7LSKIDK.mjs} +23 -70
- 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-STZUYPHJ.mjs → chunk-LODRWFMB.mjs} +2 -14
- package/dist/chunk-LODRWFMB.mjs.map +1 -0
- package/dist/{chunk-MKEQ2MJG.mjs → chunk-MWZO6TUR.mjs} +13 -29
- package/dist/chunk-MWZO6TUR.mjs.map +1 -0
- package/dist/{chunk-7LRDVJH5.mjs → chunk-ODN4H66E.mjs} +2 -6
- package/dist/chunk-ODN4H66E.mjs.map +1 -0
- package/dist/{chunk-6KHA5W5R.mjs → chunk-QDGDXRRJ.mjs} +2 -2
- package/dist/{chunk-ODAH4HNG.mjs → chunk-XINZBP3J.mjs} +2 -2
- package/dist/{chunk-ODAH4HNG.mjs.map → chunk-XINZBP3J.mjs.map} +1 -1
- package/dist/components/copilot-provider/copilot-messages.d.ts +0 -1
- package/dist/components/copilot-provider/copilotkit-props.d.ts +0 -5
- package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.d.ts +0 -1
- package/dist/components/copilot-provider/copilotkit.js +91 -191
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +7 -8
- package/dist/components/copilot-provider/index.d.ts +0 -1
- package/dist/components/copilot-provider/index.js +91 -191
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +7 -8
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.js +91 -191
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +7 -8
- package/dist/components/toast/toast-provider.d.ts +1 -2
- package/dist/components/toast/toast-provider.js +62 -76
- 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 +3 -15
- package/dist/context/copilot-context.js +1 -13
- 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 +1 -13
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +4 -4
- package/dist/hooks/index.d.ts +1 -2
- package/dist/hooks/index.js +293 -624
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +22 -30
- package/dist/hooks/use-chat.d.ts +3 -31
- package/dist/hooks/use-chat.js +205 -443
- 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 +1 -13
- package/dist/hooks/use-coagent-state-render.js.map +1 -1
- package/dist/hooks/use-coagent-state-render.mjs +2 -2
- package/dist/hooks/use-coagent.d.ts +1 -14
- package/dist/hooks/use-coagent.js +262 -580
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +11 -19
- package/dist/hooks/use-copilot-action.d.ts +2 -12
- package/dist/hooks/use-copilot-action.js +17 -167
- 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 +238 -532
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +10 -12
- package/dist/hooks/use-copilot-readable.js +1 -13
- 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 +1 -13
- 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 -3
- package/dist/index.js +391 -703
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30 -38
- 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 +8 -10
- 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 +8 -10
- 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 +7 -8
- 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/src/components/copilot-provider/copilotkit-props.tsx +10 -0
- package/src/components/copilot-provider/copilotkit.tsx +44 -7
- package/src/components/toast/toast-provider.tsx +1 -1
- package/src/context/copilot-context.tsx +28 -2
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-chat.ts +15 -5
- package/src/hooks/use-coagent-state-render.ts +11 -0
- package/src/hooks/use-coagent.ts +11 -1
- package/src/hooks/use-copilot-authenticated-action.ts +60 -0
- package/src/hooks/use-copilot-chat.ts +1 -0
- package/dist/chunk-7LRDVJH5.mjs.map +0 -1
- package/dist/chunk-M3SYKJ3W.mjs +0 -393
- package/dist/chunk-M3SYKJ3W.mjs.map +0 -1
- package/dist/chunk-MKEQ2MJG.mjs.map +0 -1
- package/dist/chunk-NYBGR2NK.mjs.map +0 -1
- package/dist/chunk-OAF4ASJH.mjs.map +0 -1
- package/dist/chunk-QCUP6HLK.mjs +0 -37
- package/dist/chunk-QCUP6HLK.mjs.map +0 -1
- package/dist/chunk-SFPANIOY.mjs.map +0 -1
- package/dist/chunk-STZUYPHJ.mjs.map +0 -1
- package/dist/chunk-VQDGBYWQ.mjs.map +0 -1
- package/dist/chunk-XERJQUHA.mjs +0 -31
- package/dist/chunk-XERJQUHA.mjs.map +0 -1
- package/dist/chunk-YL6V3QTN.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/{chunk-VPTC36RZ.mjs.map → chunk-H4VZMKR6.mjs.map} +0 -0
- /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
|
|
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
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
|
348
|
-
var
|
|
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
|
|
352
|
-
|
|
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
|
-
|
|
380
|
-
|
|
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,
|
|
391
|
-
const
|
|
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 ? { [
|
|
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 =
|
|
406
|
-
|
|
407
|
-
|
|
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
|
-
|
|
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
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
292
|
+
} : {})
|
|
293
|
+
} : {}), {
|
|
294
|
+
metadata: {
|
|
295
|
+
requestType: import_runtime_client_gql2.CopilotRequestType.Chat
|
|
480
296
|
}
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
)
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
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
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
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
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
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
|
-
|
|
596
|
-
|
|
597
|
-
|
|
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
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
if (
|
|
623
|
-
|
|
624
|
-
|
|
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
|
-
|
|
643
|
-
|
|
415
|
+
if (newMessages.length > 0) {
|
|
416
|
+
setMessages([...previousMessages, ...newMessages]);
|
|
417
|
+
}
|
|
644
418
|
}
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
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
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
)
|
|
681
|
-
|
|
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
|
-
})
|
|
457
|
+
});
|
|
693
458
|
const stop = () => {
|
|
694
459
|
var _a;
|
|
695
|
-
(_a =
|
|
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
|
|
470
|
+
var import_react6 = require("react");
|
|
724
471
|
var import_react_dom = require("react-dom");
|
|
725
|
-
var
|
|
726
|
-
var
|
|
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
|
-
|
|
745
|
-
|
|
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,
|
|
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,
|
|
505
|
+
const makeSystemMessageCallback = (0, import_react7.useCallback)(() => {
|
|
766
506
|
const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
|
|
767
507
|
const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
|
|
768
|
-
return new
|
|
508
|
+
return new import_runtime_client_gql3.TextMessage({
|
|
769
509
|
content: systemMessageMaker(contextString, chatInstructions),
|
|
770
|
-
role:
|
|
510
|
+
role: import_runtime_client_gql3.Role.System
|
|
771
511
|
});
|
|
772
512
|
}, [getContextString, makeSystemMessage, chatInstructions]);
|
|
773
|
-
const onCoAgentStateRender =
|
|
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
|
|
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
|
-
|
|
803
|
-
|
|
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 =
|
|
815
|
-
(message) =>
|
|
816
|
-
return
|
|
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 =
|
|
822
|
-
return
|
|
823
|
-
}
|
|
555
|
+
const latestReloadFunc = (0, import_react7.useCallback)(() => {
|
|
556
|
+
return latestReload.current();
|
|
557
|
+
}, [latestReload]);
|
|
824
558
|
const latestStop = useUpdatedRef(stop);
|
|
825
|
-
const latestStopFunc = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
885
|
-
(0,
|
|
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,
|
|
927
|
-
const { appendMessage
|
|
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
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
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,
|
|
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
|
-
|
|
669
|
+
state,
|
|
670
|
+
setState,
|
|
975
671
|
running: coagentState.running,
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
stop: () =>
|
|
980
|
-
|
|
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,
|
|
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.
|
|
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
|