@copilotkit/react-core 1.5.1-next.2 → 1.5.1-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/{chunk-LNI2Z45S.mjs → chunk-2KCEHGSI.mjs} +50 -100
- package/dist/chunk-2KCEHGSI.mjs.map +1 -0
- package/dist/{chunk-2KT73RVG.mjs → chunk-6OR25P32.mjs} +19 -75
- package/dist/chunk-6OR25P32.mjs.map +1 -0
- package/dist/{chunk-3GQPEN4M.mjs → chunk-DDVXFNYA.mjs} +32 -66
- package/dist/chunk-DDVXFNYA.mjs.map +1 -0
- package/dist/{chunk-XOQMISG3.mjs → chunk-FXHKK52V.mjs} +13 -14
- package/dist/chunk-FXHKK52V.mjs.map +1 -0
- package/dist/{chunk-HIUT2NLX.mjs → chunk-H4VZMKR6.mjs} +2 -2
- package/dist/{chunk-X36DNILG.mjs → chunk-H7LSKIDK.mjs} +23 -71
- package/dist/chunk-H7LSKIDK.mjs.map +1 -0
- package/dist/chunk-JDQCJCAQ.mjs +295 -0
- package/dist/chunk-JDQCJCAQ.mjs.map +1 -0
- package/dist/chunk-L34MHAXR.mjs +1 -0
- package/dist/{chunk-WXREY7UP.mjs → chunk-LODRWFMB.mjs} +4 -16
- package/dist/chunk-LODRWFMB.mjs.map +1 -0
- package/dist/{chunk-EWKJMQOF.mjs → chunk-MWZO6TUR.mjs} +13 -29
- package/dist/chunk-MWZO6TUR.mjs.map +1 -0
- package/dist/{chunk-6BQVZFNO.mjs → chunk-ODN4H66E.mjs} +2 -6
- package/dist/chunk-ODN4H66E.mjs.map +1 -0
- package/dist/{chunk-FQ53HQYZ.mjs → chunk-QDGDXRRJ.mjs} +2 -2
- package/dist/{chunk-22XKTBPF.mjs → chunk-XINZBP3J.mjs} +3 -15
- package/dist/chunk-XINZBP3J.mjs.map +1 -0
- package/dist/components/copilot-provider/copilot-messages.d.ts +0 -9
- package/dist/components/copilot-provider/copilotkit-props.d.ts +0 -21
- package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.d.ts +0 -9
- package/dist/components/copilot-provider/copilotkit.js +95 -224
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +8 -9
- package/dist/components/copilot-provider/index.d.ts +0 -9
- package/dist/components/copilot-provider/index.js +95 -224
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +8 -9
- package/dist/components/index.d.ts +0 -9
- package/dist/components/index.js +95 -224
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +8 -9
- package/dist/components/toast/toast-provider.d.ts +1 -2
- package/dist/components/toast/toast-provider.js +63 -77
- package/dist/components/toast/toast-provider.js.map +1 -1
- package/dist/components/toast/toast-provider.mjs +1 -1
- package/dist/context/copilot-context.d.ts +4 -37
- package/dist/context/copilot-context.js +3 -15
- package/dist/context/copilot-context.js.map +1 -1
- package/dist/context/copilot-context.mjs +1 -1
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.js +3 -15
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +4 -4
- package/dist/hooks/index.d.ts +1 -3
- package/dist/hooks/index.js +297 -703
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +23 -35
- package/dist/hooks/use-chat.d.ts +3 -35
- package/dist/hooks/use-chat.js +205 -453
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +3 -4
- package/dist/hooks/use-coagent-state-render.d.ts +2 -2
- package/dist/hooks/use-coagent-state-render.js +8 -43
- package/dist/hooks/use-coagent-state-render.js.map +1 -1
- package/dist/hooks/use-coagent-state-render.mjs +2 -4
- package/dist/hooks/use-coagent.d.ts +1 -14
- package/dist/hooks/use-coagent.js +265 -603
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +12 -20
- package/dist/hooks/use-copilot-action.d.ts +2 -12
- package/dist/hooks/use-copilot-action.js +19 -169
- package/dist/hooks/use-copilot-action.js.map +1 -1
- package/dist/hooks/use-copilot-action.mjs +2 -4
- package/dist/hooks/use-copilot-chat.d.ts +0 -2
- package/dist/hooks/use-copilot-chat.js +240 -545
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +11 -13
- package/dist/hooks/use-copilot-readable.js +3 -15
- package/dist/hooks/use-copilot-readable.js.map +1 -1
- package/dist/hooks/use-copilot-readable.mjs +2 -2
- package/dist/hooks/use-copilot-runtime-client.js +4 -110
- package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
- package/dist/hooks/use-copilot-runtime-client.mjs +2 -2
- package/dist/hooks/use-make-copilot-document-readable.js +3 -15
- package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
- package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
- package/dist/index.d.ts +3 -4
- package/dist/index.js +398 -812
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +31 -43
- package/dist/lib/copilot-task.d.ts +1 -6
- package/dist/lib/copilot-task.js +17 -55
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +9 -11
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +17 -55
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +9 -11
- package/dist/types/frontend-action.d.ts +2 -21
- package/dist/types/frontend-action.js +0 -34
- package/dist/types/frontend-action.js.map +1 -1
- package/dist/types/frontend-action.mjs +0 -7
- package/dist/types/index.d.ts +1 -2
- package/dist/types/index.js.map +1 -1
- package/dist/utils/extract.d.ts +2 -3
- package/dist/utils/extract.js +3 -21
- package/dist/utils/extract.js.map +1 -1
- package/dist/utils/extract.mjs +8 -9
- package/dist/utils/index.js +3 -21
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +9 -10
- package/package.json +5 -5
- package/dist/chunk-22XKTBPF.mjs.map +0 -1
- package/dist/chunk-2KT73RVG.mjs.map +0 -1
- package/dist/chunk-3GQPEN4M.mjs.map +0 -1
- package/dist/chunk-6BQVZFNO.mjs.map +0 -1
- package/dist/chunk-EWKJMQOF.mjs.map +0 -1
- package/dist/chunk-LHKIIAUQ.mjs +0 -59
- package/dist/chunk-LHKIIAUQ.mjs.map +0 -1
- package/dist/chunk-LNI2Z45S.mjs.map +0 -1
- package/dist/chunk-NR2BTA6Z.mjs +0 -1
- package/dist/chunk-VGOFRULA.mjs +0 -401
- package/dist/chunk-VGOFRULA.mjs.map +0 -1
- package/dist/chunk-VNTDIJSG.mjs +0 -37
- package/dist/chunk-VNTDIJSG.mjs.map +0 -1
- package/dist/chunk-WXREY7UP.mjs.map +0 -1
- package/dist/chunk-X36DNILG.mjs.map +0 -1
- package/dist/chunk-XERJQUHA.mjs +0 -31
- package/dist/chunk-XERJQUHA.mjs.map +0 -1
- package/dist/chunk-XOQMISG3.mjs.map +0 -1
- package/dist/components/error-boundary/error-boundary.d.ts +0 -22
- package/dist/components/error-boundary/error-boundary.js +0 -183
- package/dist/components/error-boundary/error-boundary.js.map +0 -1
- package/dist/components/error-boundary/error-boundary.mjs +0 -12
- package/dist/components/error-boundary/error-boundary.mjs.map +0 -1
- package/dist/components/error-boundary/error-utils.d.ts +0 -11
- package/dist/components/error-boundary/error-utils.js +0 -177
- package/dist/components/error-boundary/error-utils.js.map +0 -1
- package/dist/components/error-boundary/error-utils.mjs +0 -13
- package/dist/components/error-boundary/error-utils.mjs.map +0 -1
- package/dist/hooks/use-copilot-authenticated-action.d.ts +0 -8
- package/dist/hooks/use-copilot-authenticated-action.js +0 -418
- package/dist/hooks/use-copilot-authenticated-action.js.map +0 -1
- package/dist/hooks/use-copilot-authenticated-action.mjs +0 -12
- package/dist/hooks/use-copilot-authenticated-action.mjs.map +0 -1
- /package/dist/{chunk-HIUT2NLX.mjs.map → chunk-H4VZMKR6.mjs.map} +0 -0
- /package/dist/{chunk-NR2BTA6Z.mjs.map → chunk-L34MHAXR.mjs.map} +0 -0
- /package/dist/{chunk-FQ53HQYZ.mjs.map → chunk-QDGDXRRJ.mjs.map} +0 -0
|
@@ -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,22 +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 },
|
|
152
|
-
availableAgents: []
|
|
139
|
+
}
|
|
153
140
|
};
|
|
154
141
|
var CopilotContext = import_react.default.createContext(emptyCopilotContext);
|
|
155
142
|
function useCopilotContext() {
|
|
@@ -159,167 +146,25 @@ function useCopilotContext() {
|
|
|
159
146
|
}
|
|
160
147
|
return context;
|
|
161
148
|
}
|
|
162
|
-
function returnAndThrowInDebug(
|
|
149
|
+
function returnAndThrowInDebug(value) {
|
|
163
150
|
throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
|
|
151
|
+
return 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
|
-
function processActionsForRuntimeRequest(actions) {
|
|
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
|
-
}
|
|
198
|
-
|
|
199
|
-
// src/hooks/use-copilot-runtime-client.ts
|
|
200
160
|
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
201
161
|
|
|
202
162
|
// src/components/toast/toast-provider.tsx
|
|
203
|
-
var import_react3 = require("react");
|
|
204
|
-
|
|
205
|
-
// src/components/error-boundary/error-utils.tsx
|
|
206
163
|
var import_react2 = require("react");
|
|
207
|
-
|
|
208
|
-
// src/components/toast/exclamation-mark-icon.tsx
|
|
209
164
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
210
|
-
var
|
|
211
|
-
className,
|
|
212
|
-
style
|
|
213
|
-
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
214
|
-
"svg",
|
|
215
|
-
{
|
|
216
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
217
|
-
width: "24",
|
|
218
|
-
height: "24",
|
|
219
|
-
viewBox: "0 0 24 24",
|
|
220
|
-
fill: "none",
|
|
221
|
-
stroke: "currentColor",
|
|
222
|
-
strokeWidth: "2",
|
|
223
|
-
strokeLinecap: "round",
|
|
224
|
-
strokeLinejoin: "round",
|
|
225
|
-
className: `lucide lucide-circle-alert ${className ? className : ""}`,
|
|
226
|
-
style,
|
|
227
|
-
children: [
|
|
228
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
229
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", x2: "12", y1: "8", y2: "12" }),
|
|
230
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", x2: "12.01", y1: "16", y2: "16" })
|
|
231
|
-
]
|
|
232
|
-
}
|
|
233
|
-
);
|
|
234
|
-
|
|
235
|
-
// src/components/error-boundary/error-utils.tsx
|
|
236
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
237
|
-
function ErrorToast({ errors }) {
|
|
238
|
-
const errorsToRender = errors.map((error, idx) => {
|
|
239
|
-
var _a, _b, _c;
|
|
240
|
-
const message = "extensions" in error ? (_b = (_a = error.extensions) == null ? void 0 : _a.originalError) == null ? void 0 : _b.message : error.message;
|
|
241
|
-
const code = "extensions" in error ? (_c = error.extensions) == null ? void 0 : _c.code : null;
|
|
242
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
243
|
-
"div",
|
|
244
|
-
{
|
|
245
|
-
style: {
|
|
246
|
-
marginTop: idx === 0 ? 0 : 10,
|
|
247
|
-
marginBottom: 14
|
|
248
|
-
},
|
|
249
|
-
children: [
|
|
250
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ExclamationMarkIcon, { style: { marginBottom: 4 } }),
|
|
251
|
-
code && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
252
|
-
"div",
|
|
253
|
-
{
|
|
254
|
-
style: {
|
|
255
|
-
fontWeight: "600",
|
|
256
|
-
marginBottom: 4
|
|
257
|
-
},
|
|
258
|
-
children: [
|
|
259
|
-
"Copilot Cloud Error:",
|
|
260
|
-
" ",
|
|
261
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { fontFamily: "monospace", fontWeight: "normal" }, children: code })
|
|
262
|
-
]
|
|
263
|
-
}
|
|
264
|
-
),
|
|
265
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { children: message })
|
|
266
|
-
]
|
|
267
|
-
},
|
|
268
|
-
idx
|
|
269
|
-
);
|
|
270
|
-
});
|
|
271
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
272
|
-
"div",
|
|
273
|
-
{
|
|
274
|
-
style: {
|
|
275
|
-
fontSize: "13px",
|
|
276
|
-
maxWidth: "600px"
|
|
277
|
-
},
|
|
278
|
-
children: [
|
|
279
|
-
errorsToRender,
|
|
280
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { fontSize: "11px", opacity: 0.75 }, children: "NOTE: This error only displays during local development." })
|
|
281
|
-
]
|
|
282
|
-
}
|
|
283
|
-
);
|
|
284
|
-
}
|
|
285
|
-
function useErrorToast() {
|
|
286
|
-
const { addToast } = useToast();
|
|
287
|
-
return (0, import_react2.useCallback)(
|
|
288
|
-
(error) => {
|
|
289
|
-
const errorId = error.map((err) => {
|
|
290
|
-
var _a, _b;
|
|
291
|
-
const message = "extensions" in err ? ((_b = (_a = err.extensions) == null ? void 0 : _a.originalError) == null ? void 0 : _b.message) || err.message : err.message;
|
|
292
|
-
const stack = err.stack || "";
|
|
293
|
-
return btoa(message + stack).slice(0, 32);
|
|
294
|
-
}).join("|");
|
|
295
|
-
addToast({
|
|
296
|
-
type: "error",
|
|
297
|
-
id: errorId,
|
|
298
|
-
// Toast libraries typically dedupe by id
|
|
299
|
-
message: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ErrorToast, { errors: error })
|
|
300
|
-
});
|
|
301
|
-
},
|
|
302
|
-
[addToast]
|
|
303
|
-
);
|
|
304
|
-
}
|
|
305
|
-
function useAsyncCallback(callback, deps) {
|
|
306
|
-
const addErrorToast = useErrorToast();
|
|
307
|
-
return (0, import_react2.useCallback)((...args) => __async(this, null, function* () {
|
|
308
|
-
try {
|
|
309
|
-
return yield callback(...args);
|
|
310
|
-
} catch (error) {
|
|
311
|
-
console.error("Error in async callback:", error);
|
|
312
|
-
addErrorToast([error]);
|
|
313
|
-
throw error;
|
|
314
|
-
}
|
|
315
|
-
}), deps);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
// src/components/toast/toast-provider.tsx
|
|
319
|
-
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
320
|
-
var ToastContext = (0, import_react3.createContext)(void 0);
|
|
165
|
+
var ToastContext = (0, import_react2.createContext)(void 0);
|
|
321
166
|
function useToast() {
|
|
322
|
-
const context = (0,
|
|
167
|
+
const context = (0, import_react2.useContext)(ToastContext);
|
|
323
168
|
if (!context) {
|
|
324
169
|
throw new Error("useToast must be used within a ToastProvider");
|
|
325
170
|
}
|
|
@@ -327,17 +172,15 @@ function useToast() {
|
|
|
327
172
|
}
|
|
328
173
|
|
|
329
174
|
// src/hooks/use-copilot-runtime-client.ts
|
|
330
|
-
var
|
|
175
|
+
var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
176
|
+
var import_react3 = require("react");
|
|
331
177
|
var useCopilotRuntimeClient = (options) => {
|
|
332
178
|
const { addGraphQLErrorsToast } = useToast();
|
|
333
|
-
const
|
|
334
|
-
|
|
335
|
-
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), {
|
|
336
181
|
handleGQLErrors: (error) => {
|
|
337
182
|
if (error.graphQLErrors.length) {
|
|
338
183
|
addGraphQLErrorsToast(error.graphQLErrors);
|
|
339
|
-
} else {
|
|
340
|
-
addErrorToast([error]);
|
|
341
184
|
}
|
|
342
185
|
}
|
|
343
186
|
}));
|
|
@@ -358,317 +201,232 @@ function useChat(options) {
|
|
|
358
201
|
actions,
|
|
359
202
|
onFunctionCall,
|
|
360
203
|
onCoAgentStateRender,
|
|
361
|
-
|
|
362
|
-
|
|
204
|
+
setCoagentStates,
|
|
205
|
+
coagentStates,
|
|
363
206
|
agentSession,
|
|
364
|
-
setAgentSession
|
|
365
|
-
threadId,
|
|
366
|
-
setThreadId,
|
|
367
|
-
runId,
|
|
368
|
-
setRunId,
|
|
369
|
-
chatAbortControllerRef,
|
|
370
|
-
agentLock
|
|
207
|
+
setAgentSession
|
|
371
208
|
} = options;
|
|
372
|
-
const
|
|
373
|
-
const
|
|
209
|
+
const abortControllerRef = (0, import_react4.useRef)();
|
|
210
|
+
const threadIdRef = (0, import_react4.useRef)(null);
|
|
211
|
+
const runIdRef = (0, import_react4.useRef)(null);
|
|
212
|
+
const { addGraphQLErrorsToast } = useToast();
|
|
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);
|
|
374
217
|
agentSessionRef.current = agentSession;
|
|
375
|
-
const threadIdRef = (0, import_react5.useRef)(threadId);
|
|
376
|
-
threadIdRef.current = threadId;
|
|
377
|
-
const runIdRef = (0, import_react5.useRef)(runId);
|
|
378
|
-
runIdRef.current = runId;
|
|
379
218
|
const publicApiKey = copilotConfig.publicApiKey;
|
|
380
|
-
const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [
|
|
219
|
+
const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [import_shared.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {});
|
|
381
220
|
const runtimeClient = useCopilotRuntimeClient({
|
|
382
221
|
url: copilotConfig.chatApiEndpoint,
|
|
383
222
|
publicApiKey: copilotConfig.publicApiKey,
|
|
384
223
|
headers,
|
|
385
224
|
credentials: copilotConfig.credentials
|
|
386
225
|
});
|
|
387
|
-
const runChatCompletion =
|
|
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
|
-
|
|
417
|
-
|
|
418
|
-
|
|
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
|
|
419
273
|
}
|
|
420
|
-
} : {})
|
|
421
|
-
} : {}), {
|
|
422
|
-
metadata: {
|
|
423
|
-
requestType: import_runtime_client_gql3.CopilotRequestType.Chat
|
|
424
|
-
}
|
|
425
|
-
}), agentSessionRef.current ? {
|
|
426
|
-
agentSession: agentSessionRef.current
|
|
427
|
-
} : {}), {
|
|
428
|
-
agentStates: Object.values(coagentStatesRef.current).map((state) => ({
|
|
429
|
-
agentName: state.name,
|
|
430
|
-
state: JSON.stringify(state.state)
|
|
431
|
-
})),
|
|
432
|
-
forwardedParameters: options.forwardedParameters || {}
|
|
433
|
-
}),
|
|
434
|
-
properties: copilotConfig.properties,
|
|
435
|
-
signal: (_d = chatAbortControllerRef.current) == null ? void 0 : _d.signal
|
|
436
|
-
})
|
|
437
|
-
);
|
|
438
|
-
const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
|
|
439
|
-
const reader = stream.getReader();
|
|
440
|
-
let executedCoAgentStateRenders = [];
|
|
441
|
-
let followUp = void 0;
|
|
442
|
-
let messages2 = [];
|
|
443
|
-
let syncedMessages = [];
|
|
444
|
-
try {
|
|
445
|
-
while (true) {
|
|
446
|
-
let done, value;
|
|
447
|
-
try {
|
|
448
|
-
const readResult = yield reader.read();
|
|
449
|
-
done = readResult.done;
|
|
450
|
-
value = readResult.value;
|
|
451
|
-
} catch (readError) {
|
|
452
|
-
break;
|
|
453
|
-
}
|
|
454
|
-
if (done) {
|
|
455
|
-
if (chatAbortControllerRef.current.signal.aborted) {
|
|
456
|
-
return [];
|
|
457
274
|
}
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
275
|
+
} : {})
|
|
276
|
+
} : {}), {
|
|
277
|
+
metadata: {
|
|
278
|
+
requestType: import_runtime_client_gql2.CopilotRequestType.Chat
|
|
462
279
|
}
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
)
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
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)) {
|
|
487
334
|
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
488
335
|
break;
|
|
489
336
|
}
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
}
|
|
498
|
-
const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
|
|
499
|
-
if (lastAgentStateMessage) {
|
|
500
|
-
if (lastAgentStateMessage.state.messages && lastAgentStateMessage.state.messages.length > 0) {
|
|
501
|
-
syncedMessages = (0, import_runtime_client_gql3.loadMessagesFromJsonRepresentation)(
|
|
502
|
-
lastAgentStateMessage.state.messages
|
|
503
|
-
);
|
|
504
|
-
}
|
|
505
|
-
setCoagentStatesWithRef((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
506
|
-
[lastAgentStateMessage.agentName]: {
|
|
507
|
-
name: lastAgentStateMessage.agentName,
|
|
508
|
-
state: lastAgentStateMessage.state,
|
|
509
|
-
running: lastAgentStateMessage.running,
|
|
510
|
-
active: lastAgentStateMessage.active,
|
|
511
|
-
threadId: lastAgentStateMessage.threadId,
|
|
512
|
-
nodeName: lastAgentStateMessage.nodeName,
|
|
513
|
-
runId: lastAgentStateMessage.runId
|
|
514
|
-
}
|
|
515
|
-
}));
|
|
516
|
-
if (lastAgentStateMessage.running) {
|
|
517
|
-
setAgentSession({
|
|
518
|
-
threadId: lastAgentStateMessage.threadId,
|
|
519
|
-
agentName: lastAgentStateMessage.agentName,
|
|
520
|
-
nodeName: lastAgentStateMessage.nodeName
|
|
521
|
-
});
|
|
522
|
-
} else {
|
|
523
|
-
if (agentLock) {
|
|
524
|
-
setAgentSession({
|
|
525
|
-
threadId: (0, import_shared2.randomId)(),
|
|
526
|
-
agentName: agentLock,
|
|
527
|
-
nodeName: void 0
|
|
528
|
-
});
|
|
529
|
-
} else {
|
|
530
|
-
setAgentSession(null);
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
if (newMessages.length > 0) {
|
|
536
|
-
setMessages([...previousMessages, ...newMessages]);
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
const finalMessages = constructFinalMessages(syncedMessages, previousMessages, newMessages);
|
|
540
|
-
let didExecuteAction = false;
|
|
541
|
-
if (onFunctionCall) {
|
|
542
|
-
const lastMessages = [];
|
|
543
|
-
for (let i = finalMessages.length - 1; i >= 0; i--) {
|
|
544
|
-
const message = finalMessages[i];
|
|
545
|
-
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql3.MessageStatusCode.Pending) {
|
|
546
|
-
lastMessages.unshift(message);
|
|
547
|
-
} else {
|
|
548
|
-
break;
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
for (const message of lastMessages) {
|
|
552
|
-
setMessages(finalMessages);
|
|
553
|
-
const action = actions.find((action2) => action2.name === message.name);
|
|
554
|
-
if (action) {
|
|
555
|
-
followUp = action.followUp;
|
|
556
|
-
let result;
|
|
557
|
-
try {
|
|
558
|
-
result = yield Promise.race([
|
|
559
|
-
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({
|
|
560
344
|
messages: previousMessages,
|
|
561
345
|
name: message.name,
|
|
562
346
|
args: message.arguments
|
|
563
|
-
})
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
() => resolve("Operation was aborted by the user")
|
|
570
|
-
);
|
|
571
|
-
}
|
|
572
|
-
),
|
|
573
|
-
// if the user stopped generation, we also abort consecutive actions
|
|
574
|
-
new Promise((resolve) => {
|
|
575
|
-
var _a2;
|
|
576
|
-
if ((_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.aborted) {
|
|
577
|
-
resolve("Operation was aborted by the user");
|
|
578
|
-
}
|
|
579
|
-
})
|
|
580
|
-
]);
|
|
581
|
-
} catch (e) {
|
|
582
|
-
result = `Failed to execute action ${message.name}`;
|
|
583
|
-
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
|
+
}
|
|
584
353
|
}
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
messageIndex + 1,
|
|
589
|
-
0,
|
|
590
|
-
new import_runtime_client_gql3.ResultMessage({
|
|
591
|
-
id: "result-" + message.id,
|
|
592
|
-
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]),
|
|
593
357
|
actionExecutionId: message.id,
|
|
594
358
|
actionName: message.name
|
|
595
359
|
})
|
|
596
360
|
);
|
|
597
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
|
+
}
|
|
598
373
|
}
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
if (
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
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);
|
|
616
395
|
}
|
|
617
|
-
return true;
|
|
618
|
-
});
|
|
619
|
-
const repairedMessageIds = repairedMessages.map((message) => message.id);
|
|
620
|
-
setMessages(repairedMessages);
|
|
621
|
-
if ((_l = agentSessionRef.current) == null ? void 0 : _l.nodeName) {
|
|
622
|
-
setAgentSession({
|
|
623
|
-
threadId: agentSessionRef.current.threadId,
|
|
624
|
-
agentName: agentSessionRef.current.agentName,
|
|
625
|
-
nodeName: "__end__"
|
|
626
|
-
});
|
|
627
396
|
}
|
|
628
|
-
return newMessages.filter((message) => repairedMessageIds.includes(message.id));
|
|
629
|
-
} else {
|
|
630
|
-
return newMessages.slice();
|
|
631
397
|
}
|
|
632
|
-
|
|
633
|
-
|
|
398
|
+
if (newMessages.length > 0) {
|
|
399
|
+
setMessages([...previousMessages, ...newMessages]);
|
|
400
|
+
}
|
|
634
401
|
}
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
onFunctionCall,
|
|
646
|
-
onCoAgentStateRender,
|
|
647
|
-
setCoagentStatesWithRef,
|
|
648
|
-
coagentStatesRef,
|
|
649
|
-
agentSession,
|
|
650
|
-
setAgentSession
|
|
651
|
-
]
|
|
652
|
-
);
|
|
653
|
-
runChatCompletionRef.current = runChatCompletion;
|
|
654
|
-
const runChatCompletionAndHandleFunctionCall = useAsyncCallback(
|
|
655
|
-
(messages2) => __async(this, null, function* () {
|
|
656
|
-
yield runChatCompletionRef.current(messages2);
|
|
657
|
-
}),
|
|
658
|
-
[messages]
|
|
659
|
-
);
|
|
660
|
-
const append = useAsyncCallback(
|
|
661
|
-
(message) => __async(this, null, function* () {
|
|
662
|
-
if (isLoading) {
|
|
663
|
-
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();
|
|
664
412
|
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
)
|
|
671
|
-
|
|
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* () {
|
|
672
430
|
if (isLoading || messages.length === 0) {
|
|
673
431
|
return;
|
|
674
432
|
}
|
|
@@ -679,50 +437,32 @@ function useChat(options) {
|
|
|
679
437
|
}
|
|
680
438
|
setMessages(newMessages);
|
|
681
439
|
return runChatCompletionAndHandleFunctionCall(newMessages);
|
|
682
|
-
})
|
|
440
|
+
});
|
|
683
441
|
const stop = () => {
|
|
684
442
|
var _a;
|
|
685
|
-
(_a =
|
|
443
|
+
(_a = abortControllerRef.current) == null ? void 0 : _a.abort();
|
|
686
444
|
};
|
|
687
445
|
return {
|
|
688
446
|
append,
|
|
689
447
|
reload,
|
|
690
|
-
stop
|
|
691
|
-
runChatCompletion: () => runChatCompletionRef.current(messages)
|
|
448
|
+
stop
|
|
692
449
|
};
|
|
693
450
|
}
|
|
694
|
-
function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
|
|
695
|
-
const finalMessages = syncedMessages.length > 0 ? [...syncedMessages] : [...previousMessages, ...newMessages];
|
|
696
|
-
if (syncedMessages.length > 0) {
|
|
697
|
-
const messagesWithAgentState = [...previousMessages, ...newMessages];
|
|
698
|
-
let previousMessageId = void 0;
|
|
699
|
-
for (const message of messagesWithAgentState) {
|
|
700
|
-
if (message.isAgentStateMessage()) {
|
|
701
|
-
const index = finalMessages.findIndex((msg) => msg.id === previousMessageId);
|
|
702
|
-
if (index !== -1) {
|
|
703
|
-
finalMessages.splice(index + 1, 0, message);
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
previousMessageId = message.id;
|
|
707
|
-
}
|
|
708
|
-
}
|
|
709
|
-
return finalMessages;
|
|
710
|
-
}
|
|
711
451
|
|
|
712
452
|
// src/components/copilot-provider/copilotkit.tsx
|
|
713
|
-
var
|
|
453
|
+
var import_react6 = require("react");
|
|
714
454
|
var import_react_dom = require("react-dom");
|
|
715
|
-
var
|
|
455
|
+
var import_shared2 = require("@copilotkit/shared");
|
|
716
456
|
|
|
717
457
|
// src/context/copilot-messages-context.tsx
|
|
718
|
-
var
|
|
458
|
+
var import_react5 = __toESM(require("react"));
|
|
719
459
|
var emptyCopilotContext2 = {
|
|
720
460
|
messages: [],
|
|
721
461
|
setMessages: () => []
|
|
722
462
|
};
|
|
723
|
-
var CopilotMessagesContext =
|
|
463
|
+
var CopilotMessagesContext = import_react5.default.createContext(emptyCopilotContext2);
|
|
724
464
|
function useCopilotMessagesContext() {
|
|
725
|
-
const context =
|
|
465
|
+
const context = import_react5.default.useContext(CopilotMessagesContext);
|
|
726
466
|
if (context === emptyCopilotContext2) {
|
|
727
467
|
throw new Error(
|
|
728
468
|
"A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`"
|
|
@@ -732,7 +472,7 @@ function useCopilotMessagesContext() {
|
|
|
732
472
|
}
|
|
733
473
|
|
|
734
474
|
// src/components/copilot-provider/copilotkit.tsx
|
|
735
|
-
var
|
|
475
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
736
476
|
var defaultCopilotContextCategories = ["global"];
|
|
737
477
|
|
|
738
478
|
// src/hooks/use-copilot-chat.ts
|
|
@@ -750,36 +490,29 @@ function useCopilotChat(_a = {}) {
|
|
|
750
490
|
setIsLoading,
|
|
751
491
|
chatInstructions,
|
|
752
492
|
actions,
|
|
753
|
-
|
|
754
|
-
|
|
493
|
+
coagentStates,
|
|
494
|
+
setCoagentStates,
|
|
755
495
|
coAgentStateRenders,
|
|
756
496
|
agentSession,
|
|
757
|
-
setAgentSession
|
|
758
|
-
forwardedParameters,
|
|
759
|
-
agentLock,
|
|
760
|
-
threadId,
|
|
761
|
-
setThreadId,
|
|
762
|
-
runId,
|
|
763
|
-
setRunId,
|
|
764
|
-
chatAbortControllerRef
|
|
497
|
+
setAgentSession
|
|
765
498
|
} = useCopilotContext();
|
|
766
499
|
const { messages, setMessages } = useCopilotMessagesContext();
|
|
767
500
|
const latestGetContextString = useUpdatedRef(getContextString);
|
|
768
|
-
const deleteMessage = (0,
|
|
501
|
+
const deleteMessage = (0, import_react7.useCallback)(
|
|
769
502
|
(messageId) => {
|
|
770
503
|
setMessages((prev) => prev.filter((message) => message.id !== messageId));
|
|
771
504
|
},
|
|
772
505
|
[setMessages]
|
|
773
506
|
);
|
|
774
|
-
const makeSystemMessageCallback = (0,
|
|
507
|
+
const makeSystemMessageCallback = (0, import_react7.useCallback)(() => {
|
|
775
508
|
const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
|
|
776
509
|
const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
|
|
777
|
-
return new
|
|
510
|
+
return new import_runtime_client_gql3.TextMessage({
|
|
778
511
|
content: systemMessageMaker(contextString, chatInstructions),
|
|
779
|
-
role:
|
|
512
|
+
role: import_runtime_client_gql3.Role.System
|
|
780
513
|
});
|
|
781
514
|
}, [getContextString, makeSystemMessage, chatInstructions]);
|
|
782
|
-
const onCoAgentStateRender =
|
|
515
|
+
const onCoAgentStateRender = (0, import_react7.useCallback)(
|
|
783
516
|
(args) => __async(this, null, function* () {
|
|
784
517
|
var _a2;
|
|
785
518
|
const { name, nodeName, state } = args;
|
|
@@ -797,7 +530,7 @@ function useCopilotChat(_a = {}) {
|
|
|
797
530
|
}),
|
|
798
531
|
[coAgentStateRenders]
|
|
799
532
|
);
|
|
800
|
-
const { append, reload, stop
|
|
533
|
+
const { append, reload, stop } = useChat(__spreadProps(__spreadValues({}, options), {
|
|
801
534
|
actions: Object.values(actions),
|
|
802
535
|
copilotConfig: copilotApiConfig,
|
|
803
536
|
initialMessages: options.initialMessages || [],
|
|
@@ -808,91 +541,53 @@ function useCopilotChat(_a = {}) {
|
|
|
808
541
|
makeSystemMessageCallback,
|
|
809
542
|
isLoading,
|
|
810
543
|
setIsLoading,
|
|
811
|
-
|
|
812
|
-
|
|
544
|
+
coagentStates,
|
|
545
|
+
setCoagentStates,
|
|
813
546
|
agentSession,
|
|
814
|
-
setAgentSession
|
|
815
|
-
forwardedParameters,
|
|
816
|
-
threadId,
|
|
817
|
-
setThreadId,
|
|
818
|
-
runId,
|
|
819
|
-
setRunId,
|
|
820
|
-
chatAbortControllerRef,
|
|
821
|
-
agentLock
|
|
547
|
+
setAgentSession
|
|
822
548
|
}));
|
|
823
549
|
const latestAppend = useUpdatedRef(append);
|
|
824
|
-
const latestAppendFunc =
|
|
825
|
-
(message) =>
|
|
826
|
-
return
|
|
827
|
-
}
|
|
550
|
+
const latestAppendFunc = (0, import_react7.useCallback)(
|
|
551
|
+
(message) => {
|
|
552
|
+
return latestAppend.current(message);
|
|
553
|
+
},
|
|
828
554
|
[latestAppend]
|
|
829
555
|
);
|
|
830
556
|
const latestReload = useUpdatedRef(reload);
|
|
831
|
-
const latestReloadFunc =
|
|
832
|
-
return
|
|
833
|
-
}
|
|
557
|
+
const latestReloadFunc = (0, import_react7.useCallback)(() => {
|
|
558
|
+
return latestReload.current();
|
|
559
|
+
}, [latestReload]);
|
|
834
560
|
const latestStop = useUpdatedRef(stop);
|
|
835
|
-
const latestStopFunc = (0,
|
|
561
|
+
const latestStopFunc = (0, import_react7.useCallback)(() => {
|
|
836
562
|
return latestStop.current();
|
|
837
563
|
}, [latestStop]);
|
|
838
564
|
const latestDelete = useUpdatedRef(deleteMessage);
|
|
839
|
-
const latestDeleteFunc = (0,
|
|
565
|
+
const latestDeleteFunc = (0, import_react7.useCallback)(
|
|
840
566
|
(messageId) => {
|
|
841
567
|
return latestDelete.current(messageId);
|
|
842
568
|
},
|
|
843
569
|
[latestDelete]
|
|
844
570
|
);
|
|
845
571
|
const latestSetMessages = useUpdatedRef(setMessages);
|
|
846
|
-
const latestSetMessagesFunc = (0,
|
|
572
|
+
const latestSetMessagesFunc = (0, import_react7.useCallback)(
|
|
847
573
|
(messages2) => {
|
|
848
574
|
return latestSetMessages.current(messages2);
|
|
849
575
|
},
|
|
850
576
|
[latestSetMessages]
|
|
851
577
|
);
|
|
852
|
-
const latestRunChatCompletion = useUpdatedRef(runChatCompletion);
|
|
853
|
-
const latestRunChatCompletionFunc = useAsyncCallback(() => __async(this, null, function* () {
|
|
854
|
-
return yield latestRunChatCompletion.current();
|
|
855
|
-
}), [latestRunChatCompletion]);
|
|
856
|
-
const reset = (0, import_react8.useCallback)(() => {
|
|
857
|
-
latestStopFunc();
|
|
858
|
-
setMessages([]);
|
|
859
|
-
setThreadId(null);
|
|
860
|
-
setRunId(null);
|
|
861
|
-
setCoagentStatesWithRef({});
|
|
862
|
-
let initialAgentSession = null;
|
|
863
|
-
if (agentLock) {
|
|
864
|
-
initialAgentSession = {
|
|
865
|
-
agentName: agentLock
|
|
866
|
-
};
|
|
867
|
-
}
|
|
868
|
-
setAgentSession(initialAgentSession);
|
|
869
|
-
}, [
|
|
870
|
-
latestStopFunc,
|
|
871
|
-
setMessages,
|
|
872
|
-
setThreadId,
|
|
873
|
-
setCoagentStatesWithRef,
|
|
874
|
-
setAgentSession,
|
|
875
|
-
agentLock
|
|
876
|
-
]);
|
|
877
|
-
const latestReset = useUpdatedRef(reset);
|
|
878
|
-
const latestResetFunc = (0, import_react8.useCallback)(() => {
|
|
879
|
-
return latestReset.current();
|
|
880
|
-
}, [latestReset]);
|
|
881
578
|
return {
|
|
882
579
|
visibleMessages: messages,
|
|
883
580
|
appendMessage: latestAppendFunc,
|
|
884
581
|
setMessages: latestSetMessagesFunc,
|
|
885
582
|
reloadMessages: latestReloadFunc,
|
|
886
583
|
stopGeneration: latestStopFunc,
|
|
887
|
-
reset: latestResetFunc,
|
|
888
584
|
deleteMessage: latestDeleteFunc,
|
|
889
|
-
runChatCompletion: latestRunChatCompletionFunc,
|
|
890
585
|
isLoading
|
|
891
586
|
};
|
|
892
587
|
}
|
|
893
588
|
function useUpdatedRef(value) {
|
|
894
|
-
const ref = (0,
|
|
895
|
-
(0,
|
|
589
|
+
const ref = (0, import_react7.useRef)(value);
|
|
590
|
+
(0, import_react7.useEffect)(() => {
|
|
896
591
|
ref.current = value;
|
|
897
592
|
}, [value]);
|
|
898
593
|
return ref;
|