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