@copilotkit/react-core 1.5.0-tyler-reset-chat.0 → 1.5.0
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 +158 -4
- package/README.md +2 -0
- package/dist/{chunk-3AYELZJS.mjs → chunk-35EN6BG4.mjs} +2 -2
- package/dist/{chunk-3AYELZJS.mjs.map → chunk-35EN6BG4.mjs.map} +1 -1
- package/dist/{chunk-SEPYQHH7.mjs → chunk-42N5VKIX.mjs} +34 -28
- package/dist/chunk-42N5VKIX.mjs.map +1 -0
- package/dist/{chunk-USL3EHJB.mjs → chunk-5FYKUKG3.mjs} +2 -2
- package/dist/{chunk-ODN4H66E.mjs → chunk-7LRDVJH5.mjs} +6 -2
- package/dist/chunk-7LRDVJH5.mjs.map +1 -0
- package/dist/{chunk-CZMEZR6F.mjs → chunk-BT6WK2JZ.mjs} +34 -19
- package/dist/chunk-BT6WK2JZ.mjs.map +1 -0
- package/dist/{chunk-3R4J2TPH.mjs → chunk-EUU6NNYU.mjs} +29 -13
- package/dist/chunk-EUU6NNYU.mjs.map +1 -0
- package/dist/chunk-QCUP6HLK.mjs +37 -0
- package/dist/chunk-QCUP6HLK.mjs.map +1 -0
- package/dist/chunk-QTDCEDOC.mjs +392 -0
- package/dist/chunk-QTDCEDOC.mjs.map +1 -0
- package/dist/{chunk-JR55I3FL.mjs → chunk-QX6V774L.mjs} +6 -8
- package/dist/chunk-QX6V774L.mjs.map +1 -0
- package/dist/{chunk-2KCEHGSI.mjs → chunk-SFPANIOY.mjs} +99 -49
- package/dist/chunk-SFPANIOY.mjs.map +1 -0
- package/dist/{chunk-2JP64U3A.mjs → chunk-TQN3EZWQ.mjs} +4 -1
- package/dist/chunk-TQN3EZWQ.mjs.map +1 -0
- package/dist/{chunk-XUPO37VH.mjs → chunk-V3PFWGIY.mjs} +2 -2
- package/dist/{chunk-6QKA3SNN.mjs → chunk-VMP6JWBB.mjs} +21 -5
- package/dist/chunk-VMP6JWBB.mjs.map +1 -0
- package/dist/chunk-XERJQUHA.mjs +31 -0
- package/dist/chunk-XERJQUHA.mjs.map +1 -0
- package/dist/components/copilot-provider/copilotkit.js +173 -92
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +5 -4
- package/dist/components/copilot-provider/index.js +173 -92
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +5 -4
- package/dist/components/error-boundary/error-boundary.d.ts +22 -0
- package/dist/components/error-boundary/error-boundary.js +183 -0
- package/dist/components/error-boundary/error-boundary.js.map +1 -0
- package/dist/components/error-boundary/error-boundary.mjs +12 -0
- package/dist/components/error-boundary/error-boundary.mjs.map +1 -0
- package/dist/components/error-boundary/error-utils.d.ts +11 -0
- package/dist/components/error-boundary/error-utils.js +177 -0
- package/dist/components/error-boundary/error-utils.js.map +1 -0
- package/dist/components/error-boundary/error-utils.mjs +13 -0
- package/dist/components/error-boundary/error-utils.mjs.map +1 -0
- package/dist/components/index.js +173 -92
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +5 -4
- package/dist/components/toast/toast-provider.d.ts +2 -1
- package/dist/components/toast/toast-provider.js +76 -62
- 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 -2
- package/dist/context/copilot-context.js +3 -0
- 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 -0
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +1 -1
- package/dist/hooks/index.js +554 -308
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +13 -11
- package/dist/hooks/use-chat.d.ts +6 -2
- package/dist/hooks/use-chat.js +434 -219
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +4 -3
- package/dist/hooks/use-coagent-state-render.d.ts +2 -2
- package/dist/hooks/use-coagent-state-render.js +3 -0
- 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 -1
- package/dist/hooks/use-coagent.js +510 -277
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +9 -7
- package/dist/hooks/use-copilot-action.d.ts +12 -2
- package/dist/hooks/use-copilot-action.js +157 -16
- package/dist/hooks/use-copilot-action.js.map +1 -1
- package/dist/hooks/use-copilot-action.mjs +4 -2
- package/dist/hooks/use-copilot-chat.d.ts +1 -0
- package/dist/hooks/use-copilot-chat.js +483 -253
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +8 -6
- package/dist/hooks/use-copilot-readable.js +3 -0
- 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 +110 -4
- 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 -0
- 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 +1 -1
- package/dist/index.js +616 -401
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -12
- package/dist/lib/copilot-task.d.ts +1 -1
- package/dist/lib/copilot-task.js +33 -13
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +7 -5
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +33 -13
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +7 -5
- package/dist/types/frontend-action.d.ts +21 -2
- package/dist/types/frontend-action.js +34 -0
- package/dist/types/frontend-action.js.map +1 -1
- package/dist/types/frontend-action.mjs +7 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/extract.js.map +1 -1
- package/dist/utils/extract.mjs +5 -4
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +5 -4
- package/package.json +5 -5
- package/src/components/copilot-provider/copilotkit.tsx +22 -1
- package/src/components/error-boundary/error-boundary.tsx +42 -0
- package/src/components/error-boundary/error-utils.tsx +95 -0
- package/src/components/toast/toast-provider.tsx +10 -49
- package/src/context/copilot-context.tsx +17 -2
- package/src/hooks/use-chat.ts +375 -279
- package/src/hooks/use-coagent-state-render.ts +2 -2
- package/src/hooks/use-coagent.ts +34 -28
- package/src/hooks/use-copilot-action.ts +50 -15
- package/src/hooks/use-copilot-chat.ts +28 -14
- package/src/hooks/use-copilot-runtime-client.ts +4 -0
- package/src/lib/copilot-task.ts +2 -8
- package/src/types/frontend-action.ts +55 -2
- package/src/types/index.ts +5 -1
- package/dist/chunk-2JP64U3A.mjs.map +0 -1
- package/dist/chunk-2KCEHGSI.mjs.map +0 -1
- package/dist/chunk-3R4J2TPH.mjs.map +0 -1
- package/dist/chunk-6EN7J4V2.mjs +0 -317
- package/dist/chunk-6EN7J4V2.mjs.map +0 -1
- package/dist/chunk-6QKA3SNN.mjs.map +0 -1
- package/dist/chunk-CZMEZR6F.mjs.map +0 -1
- package/dist/chunk-JR55I3FL.mjs.map +0 -1
- package/dist/chunk-ODN4H66E.mjs.map +0 -1
- package/dist/chunk-SEPYQHH7.mjs.map +0 -1
- /package/dist/{chunk-USL3EHJB.mjs.map → chunk-5FYKUKG3.mjs.map} +0 -0
- /package/dist/{chunk-XUPO37VH.mjs.map → chunk-V3PFWGIY.mjs.map} +0 -0
package/dist/hooks/index.js
CHANGED
|
@@ -93,7 +93,7 @@ __export(hooks_exports, {
|
|
|
93
93
|
module.exports = __toCommonJS(hooks_exports);
|
|
94
94
|
|
|
95
95
|
// src/hooks/use-copilot-chat.ts
|
|
96
|
-
var
|
|
96
|
+
var import_react8 = require("react");
|
|
97
97
|
|
|
98
98
|
// src/context/copilot-context.tsx
|
|
99
99
|
var import_react = __toESM(require("react"));
|
|
@@ -144,6 +144,9 @@ var emptyCopilotContext = {
|
|
|
144
144
|
coagentStates: {},
|
|
145
145
|
setCoagentStates: () => {
|
|
146
146
|
},
|
|
147
|
+
coagentStatesRef: { current: {} },
|
|
148
|
+
setCoagentStatesWithRef: () => {
|
|
149
|
+
},
|
|
147
150
|
agentSession: null,
|
|
148
151
|
setAgentSession: () => {
|
|
149
152
|
},
|
|
@@ -170,19 +173,159 @@ function returnAndThrowInDebug(value) {
|
|
|
170
173
|
}
|
|
171
174
|
|
|
172
175
|
// src/hooks/use-copilot-chat.ts
|
|
173
|
-
var
|
|
176
|
+
var import_runtime_client_gql4 = require("@copilotkit/runtime-client-gql");
|
|
174
177
|
|
|
175
178
|
// src/hooks/use-chat.ts
|
|
176
|
-
var
|
|
179
|
+
var import_react5 = require("react");
|
|
180
|
+
var import_shared2 = require("@copilotkit/shared");
|
|
181
|
+
var import_runtime_client_gql3 = require("@copilotkit/runtime-client-gql");
|
|
182
|
+
|
|
183
|
+
// src/types/frontend-action.ts
|
|
184
|
+
var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
|
|
177
185
|
var import_shared = require("@copilotkit/shared");
|
|
178
|
-
|
|
186
|
+
function processActionsForRuntimeRequest(actions) {
|
|
187
|
+
const filteredActions = actions.filter(
|
|
188
|
+
(action) => action.available !== import_runtime_client_gql.ActionInputAvailability.Disabled && action.disabled !== true && action.name !== "*"
|
|
189
|
+
).map((action) => {
|
|
190
|
+
let available = import_runtime_client_gql.ActionInputAvailability.Enabled;
|
|
191
|
+
if (action.disabled) {
|
|
192
|
+
available = import_runtime_client_gql.ActionInputAvailability.Disabled;
|
|
193
|
+
} else if (action.available === "disabled") {
|
|
194
|
+
available = import_runtime_client_gql.ActionInputAvailability.Disabled;
|
|
195
|
+
} else if (action.available === "remote") {
|
|
196
|
+
available = import_runtime_client_gql.ActionInputAvailability.Remote;
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
name: action.name,
|
|
200
|
+
description: action.description || "",
|
|
201
|
+
jsonSchema: JSON.stringify((0, import_shared.actionParametersToJsonSchema)(action.parameters || [])),
|
|
202
|
+
available
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
return filteredActions;
|
|
206
|
+
}
|
|
179
207
|
|
|
180
208
|
// src/components/toast/toast-provider.tsx
|
|
209
|
+
var import_react3 = require("react");
|
|
210
|
+
|
|
211
|
+
// src/components/error-boundary/error-utils.tsx
|
|
181
212
|
var import_react2 = require("react");
|
|
213
|
+
|
|
214
|
+
// src/components/toast/exclamation-mark-icon.tsx
|
|
182
215
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
183
|
-
var
|
|
216
|
+
var ExclamationMarkIcon = ({
|
|
217
|
+
className,
|
|
218
|
+
style
|
|
219
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
220
|
+
"svg",
|
|
221
|
+
{
|
|
222
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
223
|
+
width: "24",
|
|
224
|
+
height: "24",
|
|
225
|
+
viewBox: "0 0 24 24",
|
|
226
|
+
fill: "none",
|
|
227
|
+
stroke: "currentColor",
|
|
228
|
+
strokeWidth: "2",
|
|
229
|
+
strokeLinecap: "round",
|
|
230
|
+
strokeLinejoin: "round",
|
|
231
|
+
className: `lucide lucide-circle-alert ${className ? className : ""}`,
|
|
232
|
+
style,
|
|
233
|
+
children: [
|
|
234
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
235
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", x2: "12", y1: "8", y2: "12" }),
|
|
236
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", x2: "12.01", y1: "16", y2: "16" })
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
);
|
|
240
|
+
|
|
241
|
+
// src/components/error-boundary/error-utils.tsx
|
|
242
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
243
|
+
function ErrorToast({ errors }) {
|
|
244
|
+
const errorsToRender = errors.map((error, idx) => {
|
|
245
|
+
var _a, _b, _c;
|
|
246
|
+
const message = "extensions" in error ? (_b = (_a = error.extensions) == null ? void 0 : _a.originalError) == null ? void 0 : _b.message : error.message;
|
|
247
|
+
const code = "extensions" in error ? (_c = error.extensions) == null ? void 0 : _c.code : null;
|
|
248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
249
|
+
"div",
|
|
250
|
+
{
|
|
251
|
+
style: {
|
|
252
|
+
marginTop: idx === 0 ? 0 : 10,
|
|
253
|
+
marginBottom: 14
|
|
254
|
+
},
|
|
255
|
+
children: [
|
|
256
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ExclamationMarkIcon, { style: { marginBottom: 4 } }),
|
|
257
|
+
code && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
258
|
+
"div",
|
|
259
|
+
{
|
|
260
|
+
style: {
|
|
261
|
+
fontWeight: "600",
|
|
262
|
+
marginBottom: 4
|
|
263
|
+
},
|
|
264
|
+
children: [
|
|
265
|
+
"Copilot Cloud Error:",
|
|
266
|
+
" ",
|
|
267
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { fontFamily: "monospace", fontWeight: "normal" }, children: code })
|
|
268
|
+
]
|
|
269
|
+
}
|
|
270
|
+
),
|
|
271
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { children: message })
|
|
272
|
+
]
|
|
273
|
+
},
|
|
274
|
+
idx
|
|
275
|
+
);
|
|
276
|
+
});
|
|
277
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
278
|
+
"div",
|
|
279
|
+
{
|
|
280
|
+
style: {
|
|
281
|
+
fontSize: "13px",
|
|
282
|
+
maxWidth: "600px"
|
|
283
|
+
},
|
|
284
|
+
children: [
|
|
285
|
+
errorsToRender,
|
|
286
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { fontSize: "11px", opacity: 0.75 }, children: "NOTE: This error only displays during local development." })
|
|
287
|
+
]
|
|
288
|
+
}
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
function useErrorToast() {
|
|
292
|
+
const { addToast } = useToast();
|
|
293
|
+
return (0, import_react2.useCallback)(
|
|
294
|
+
(error) => {
|
|
295
|
+
const errorId = error.map((err) => {
|
|
296
|
+
var _a, _b;
|
|
297
|
+
const message = "extensions" in err ? ((_b = (_a = err.extensions) == null ? void 0 : _a.originalError) == null ? void 0 : _b.message) || err.message : err.message;
|
|
298
|
+
const stack = err.stack || "";
|
|
299
|
+
return btoa(message + stack).slice(0, 32);
|
|
300
|
+
}).join("|");
|
|
301
|
+
addToast({
|
|
302
|
+
type: "error",
|
|
303
|
+
id: errorId,
|
|
304
|
+
// Toast libraries typically dedupe by id
|
|
305
|
+
message: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ErrorToast, { errors: error })
|
|
306
|
+
});
|
|
307
|
+
},
|
|
308
|
+
[addToast]
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
function useAsyncCallback(callback, deps) {
|
|
312
|
+
const addErrorToast = useErrorToast();
|
|
313
|
+
return (0, import_react2.useCallback)((...args) => __async(this, null, function* () {
|
|
314
|
+
try {
|
|
315
|
+
return yield callback(...args);
|
|
316
|
+
} catch (error) {
|
|
317
|
+
console.error("Error in async callback:", error);
|
|
318
|
+
addErrorToast([error]);
|
|
319
|
+
throw error;
|
|
320
|
+
}
|
|
321
|
+
}), deps);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// src/components/toast/toast-provider.tsx
|
|
325
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
326
|
+
var ToastContext = (0, import_react3.createContext)(void 0);
|
|
184
327
|
function useToast() {
|
|
185
|
-
const context = (0,
|
|
328
|
+
const context = (0, import_react3.useContext)(ToastContext);
|
|
186
329
|
if (!context) {
|
|
187
330
|
throw new Error("useToast must be used within a ToastProvider");
|
|
188
331
|
}
|
|
@@ -190,15 +333,18 @@ function useToast() {
|
|
|
190
333
|
}
|
|
191
334
|
|
|
192
335
|
// src/hooks/use-copilot-runtime-client.ts
|
|
193
|
-
var
|
|
194
|
-
var
|
|
336
|
+
var import_runtime_client_gql2 = require("@copilotkit/runtime-client-gql");
|
|
337
|
+
var import_react4 = require("react");
|
|
195
338
|
var useCopilotRuntimeClient = (options) => {
|
|
196
339
|
const { addGraphQLErrorsToast } = useToast();
|
|
197
|
-
const
|
|
198
|
-
|
|
340
|
+
const addErrorToast = useErrorToast();
|
|
341
|
+
const runtimeClient = (0, import_react4.useMemo)(() => {
|
|
342
|
+
return new import_runtime_client_gql2.CopilotRuntimeClient(__spreadProps(__spreadValues({}, options), {
|
|
199
343
|
handleGQLErrors: (error) => {
|
|
200
344
|
if (error.graphQLErrors.length) {
|
|
201
345
|
addGraphQLErrorsToast(error.graphQLErrors);
|
|
346
|
+
} else {
|
|
347
|
+
addErrorToast([error]);
|
|
202
348
|
}
|
|
203
349
|
}
|
|
204
350
|
}));
|
|
@@ -219,8 +365,8 @@ function useChat(options) {
|
|
|
219
365
|
actions,
|
|
220
366
|
onFunctionCall,
|
|
221
367
|
onCoAgentStateRender,
|
|
222
|
-
|
|
223
|
-
|
|
368
|
+
setCoagentStatesWithRef,
|
|
369
|
+
coagentStatesRef,
|
|
224
370
|
agentSession,
|
|
225
371
|
setAgentSession,
|
|
226
372
|
threadId,
|
|
@@ -229,244 +375,298 @@ function useChat(options) {
|
|
|
229
375
|
setRunId,
|
|
230
376
|
chatAbortControllerRef
|
|
231
377
|
} = options;
|
|
232
|
-
const abortController = new AbortController();
|
|
233
|
-
chatAbortControllerRef.current = abortController;
|
|
234
378
|
const { addGraphQLErrorsToast } = useToast();
|
|
235
|
-
const runChatCompletionRef = (0,
|
|
236
|
-
const
|
|
237
|
-
coagentStatesRef.current = coagentStates;
|
|
238
|
-
const agentSessionRef = (0, import_react4.useRef)(agentSession);
|
|
379
|
+
const runChatCompletionRef = (0, import_react5.useRef)();
|
|
380
|
+
const agentSessionRef = (0, import_react5.useRef)(agentSession);
|
|
239
381
|
agentSessionRef.current = agentSession;
|
|
240
|
-
const threadIdRef = (0,
|
|
382
|
+
const threadIdRef = (0, import_react5.useRef)(threadId);
|
|
241
383
|
threadIdRef.current = threadId;
|
|
242
|
-
const runIdRef = (0,
|
|
384
|
+
const runIdRef = (0, import_react5.useRef)(runId);
|
|
243
385
|
runIdRef.current = runId;
|
|
244
386
|
const publicApiKey = copilotConfig.publicApiKey;
|
|
245
|
-
const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [
|
|
387
|
+
const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [import_shared2.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {});
|
|
246
388
|
const runtimeClient = useCopilotRuntimeClient({
|
|
247
389
|
url: copilotConfig.chatApiEndpoint,
|
|
248
390
|
publicApiKey: copilotConfig.publicApiKey,
|
|
249
391
|
headers,
|
|
250
392
|
credentials: copilotConfig.credentials
|
|
251
393
|
});
|
|
252
|
-
const runChatCompletion = (
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
available
|
|
285
|
-
};
|
|
286
|
-
}),
|
|
287
|
-
url: window.location.href
|
|
288
|
-
},
|
|
289
|
-
threadId: threadIdRef.current,
|
|
290
|
-
runId: runIdRef.current,
|
|
291
|
-
messages: (0, import_runtime_client_gql2.convertMessagesToGqlInput)((0, import_runtime_client_gql2.filterAgentStateMessages)(messagesWithContext))
|
|
292
|
-
}, copilotConfig.cloud ? {
|
|
293
|
-
cloud: __spreadValues({}, ((_c = (_b = (_a = copilotConfig.cloud.guardrails) == null ? void 0 : _a.input) == null ? void 0 : _b.restrictToTopic) == null ? void 0 : _c.enabled) ? {
|
|
294
|
-
guardrails: {
|
|
295
|
-
inputValidationRules: {
|
|
296
|
-
allowList: copilotConfig.cloud.guardrails.input.restrictToTopic.validTopics,
|
|
297
|
-
denyList: copilotConfig.cloud.guardrails.input.restrictToTopic.invalidTopics
|
|
394
|
+
const runChatCompletion = useAsyncCallback(
|
|
395
|
+
(previousMessages) => __async(this, null, function* () {
|
|
396
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
397
|
+
setIsLoading(true);
|
|
398
|
+
let newMessages = [
|
|
399
|
+
new import_runtime_client_gql3.TextMessage({
|
|
400
|
+
content: "",
|
|
401
|
+
role: import_runtime_client_gql3.Role.Assistant
|
|
402
|
+
})
|
|
403
|
+
];
|
|
404
|
+
chatAbortControllerRef.current = new AbortController();
|
|
405
|
+
setMessages([...previousMessages, ...newMessages]);
|
|
406
|
+
const systemMessage = makeSystemMessageCallback();
|
|
407
|
+
const messagesWithContext = [systemMessage, ...initialMessages || [], ...previousMessages];
|
|
408
|
+
const isAgentRun = agentSessionRef.current !== null;
|
|
409
|
+
const stream = runtimeClient.asStream(
|
|
410
|
+
runtimeClient.generateCopilotResponse({
|
|
411
|
+
data: __spreadProps(__spreadValues(__spreadProps(__spreadValues({
|
|
412
|
+
frontend: {
|
|
413
|
+
actions: processActionsForRuntimeRequest(actions),
|
|
414
|
+
url: window.location.href
|
|
415
|
+
},
|
|
416
|
+
threadId: threadIdRef.current,
|
|
417
|
+
runId: runIdRef.current,
|
|
418
|
+
messages: (0, import_runtime_client_gql3.convertMessagesToGqlInput)((0, import_runtime_client_gql3.filterAgentStateMessages)(messagesWithContext))
|
|
419
|
+
}, copilotConfig.cloud ? {
|
|
420
|
+
cloud: __spreadValues({}, ((_c = (_b = (_a = copilotConfig.cloud.guardrails) == null ? void 0 : _a.input) == null ? void 0 : _b.restrictToTopic) == null ? void 0 : _c.enabled) ? {
|
|
421
|
+
guardrails: {
|
|
422
|
+
inputValidationRules: {
|
|
423
|
+
allowList: copilotConfig.cloud.guardrails.input.restrictToTopic.validTopics,
|
|
424
|
+
denyList: copilotConfig.cloud.guardrails.input.restrictToTopic.invalidTopics
|
|
425
|
+
}
|
|
298
426
|
}
|
|
427
|
+
} : {})
|
|
428
|
+
} : {}), {
|
|
429
|
+
metadata: {
|
|
430
|
+
requestType: import_runtime_client_gql3.CopilotRequestType.Chat
|
|
299
431
|
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
432
|
+
}), agentSessionRef.current ? {
|
|
433
|
+
agentSession: agentSessionRef.current
|
|
434
|
+
} : {}), {
|
|
435
|
+
agentStates: Object.values(coagentStatesRef.current).map((state) => ({
|
|
436
|
+
agentName: state.name,
|
|
437
|
+
state: JSON.stringify(state.state)
|
|
438
|
+
}))
|
|
439
|
+
}),
|
|
440
|
+
properties: copilotConfig.properties,
|
|
441
|
+
signal: (_d = chatAbortControllerRef.current) == null ? void 0 : _d.signal
|
|
442
|
+
})
|
|
443
|
+
);
|
|
444
|
+
const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
|
|
445
|
+
const reader = stream.getReader();
|
|
446
|
+
let executedCoAgentStateRenders = [];
|
|
447
|
+
let followUp = void 0;
|
|
448
|
+
let messages2 = [];
|
|
449
|
+
let syncedMessages = [];
|
|
450
|
+
try {
|
|
451
|
+
while (true) {
|
|
452
|
+
let done, value;
|
|
453
|
+
try {
|
|
454
|
+
const readResult = yield reader.read();
|
|
455
|
+
done = readResult.done;
|
|
456
|
+
value = readResult.value;
|
|
457
|
+
} catch (readError) {
|
|
458
|
+
break;
|
|
304
459
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
state: JSON.stringify(state.state)
|
|
311
|
-
}))
|
|
312
|
-
}),
|
|
313
|
-
properties: copilotConfig.properties,
|
|
314
|
-
signal: (_d = chatAbortControllerRef.current) == null ? void 0 : _d.signal
|
|
315
|
-
})
|
|
316
|
-
);
|
|
317
|
-
const guardrailsEnabled = ((_g = (_f = (_e = copilotConfig.cloud) == null ? void 0 : _e.guardrails) == null ? void 0 : _f.input) == null ? void 0 : _g.restrictToTopic.enabled) || false;
|
|
318
|
-
const reader = stream.getReader();
|
|
319
|
-
let actionResults = {};
|
|
320
|
-
let executedCoAgentStateRenders = [];
|
|
321
|
-
let followUp = void 0;
|
|
322
|
-
try {
|
|
323
|
-
while (true) {
|
|
324
|
-
let done, value;
|
|
325
|
-
try {
|
|
326
|
-
const readResult = yield reader.read();
|
|
327
|
-
done = readResult.done;
|
|
328
|
-
value = readResult.value;
|
|
329
|
-
} catch (readError) {
|
|
330
|
-
break;
|
|
331
|
-
}
|
|
332
|
-
if (done) {
|
|
333
|
-
if (chatAbortControllerRef.current.signal.aborted) {
|
|
334
|
-
return newMessages.slice();
|
|
460
|
+
if (done) {
|
|
461
|
+
if (chatAbortControllerRef.current.signal.aborted) {
|
|
462
|
+
return [];
|
|
463
|
+
}
|
|
464
|
+
break;
|
|
335
465
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
if (!(message.id in actionResults)) {
|
|
466
|
+
if (!(value == null ? void 0 : value.generateCopilotResponse)) {
|
|
467
|
+
continue;
|
|
468
|
+
}
|
|
469
|
+
threadIdRef.current = value.generateCopilotResponse.threadId || null;
|
|
470
|
+
runIdRef.current = value.generateCopilotResponse.runId || null;
|
|
471
|
+
setThreadId(threadIdRef.current);
|
|
472
|
+
setRunId(runIdRef.current);
|
|
473
|
+
messages2 = (0, import_runtime_client_gql3.convertGqlOutputToMessages)(
|
|
474
|
+
(0, import_runtime_client_gql3.filterAdjacentAgentStateMessages)(value.generateCopilotResponse.messages)
|
|
475
|
+
);
|
|
476
|
+
if (messages2.length === 0) {
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
newMessages = [];
|
|
480
|
+
if (((_h = value.generateCopilotResponse.status) == null ? void 0 : _h.__typename) === "FailedResponseStatus" && value.generateCopilotResponse.status.reason === "GUARDRAILS_VALIDATION_FAILED") {
|
|
481
|
+
newMessages = [
|
|
482
|
+
new import_runtime_client_gql3.TextMessage({
|
|
483
|
+
role: import_runtime_client_gql3.MessageRole.Assistant,
|
|
484
|
+
content: ((_i = value.generateCopilotResponse.status.details) == null ? void 0 : _i.guardrailsReason) || ""
|
|
485
|
+
})
|
|
486
|
+
];
|
|
487
|
+
setMessages([...previousMessages, ...newMessages]);
|
|
488
|
+
break;
|
|
489
|
+
} else {
|
|
490
|
+
newMessages = [...messages2];
|
|
491
|
+
for (const message of messages2) {
|
|
492
|
+
if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
|
|
364
493
|
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
365
494
|
break;
|
|
366
495
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
console.error(`Failed to execute action ${message.name}: ${e}`);
|
|
496
|
+
yield onCoAgentStateRender({
|
|
497
|
+
name: message.agentName,
|
|
498
|
+
nodeName: message.nodeName,
|
|
499
|
+
state: message.state
|
|
500
|
+
});
|
|
501
|
+
executedCoAgentStateRenders.push(message.id);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
const lastAgentStateMessage = [...messages2].reverse().find((message) => message.isAgentStateMessage());
|
|
505
|
+
if (lastAgentStateMessage) {
|
|
506
|
+
if (lastAgentStateMessage.state.messages && lastAgentStateMessage.state.messages.length > 0) {
|
|
507
|
+
syncedMessages = (0, import_runtime_client_gql3.loadMessagesFromJsonRepresentation)(
|
|
508
|
+
lastAgentStateMessage.state.messages
|
|
509
|
+
);
|
|
510
|
+
}
|
|
511
|
+
setCoagentStatesWithRef((prevAgentStates) => __spreadProps(__spreadValues({}, prevAgentStates), {
|
|
512
|
+
[lastAgentStateMessage.agentName]: {
|
|
513
|
+
name: lastAgentStateMessage.agentName,
|
|
514
|
+
state: lastAgentStateMessage.state,
|
|
515
|
+
running: lastAgentStateMessage.running,
|
|
516
|
+
active: lastAgentStateMessage.active,
|
|
517
|
+
threadId: lastAgentStateMessage.threadId,
|
|
518
|
+
nodeName: lastAgentStateMessage.nodeName,
|
|
519
|
+
runId: lastAgentStateMessage.runId
|
|
392
520
|
}
|
|
521
|
+
}));
|
|
522
|
+
if (lastAgentStateMessage.running) {
|
|
523
|
+
setAgentSession({
|
|
524
|
+
threadId: lastAgentStateMessage.threadId,
|
|
525
|
+
agentName: lastAgentStateMessage.agentName,
|
|
526
|
+
nodeName: lastAgentStateMessage.nodeName
|
|
527
|
+
});
|
|
528
|
+
} else {
|
|
529
|
+
setAgentSession(null);
|
|
393
530
|
}
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
if (newMessages.length > 0) {
|
|
534
|
+
setMessages([...previousMessages, ...newMessages]);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
const finalMessages = constructFinalMessages(syncedMessages, previousMessages, newMessages);
|
|
538
|
+
let didExecuteAction = false;
|
|
539
|
+
if (onFunctionCall) {
|
|
540
|
+
const lastMessages = [];
|
|
541
|
+
for (let i = finalMessages.length - 1; i >= 0; i--) {
|
|
542
|
+
const message = finalMessages[i];
|
|
543
|
+
if (message.isActionExecutionMessage() && message.status.code !== import_runtime_client_gql3.MessageStatusCode.Pending) {
|
|
544
|
+
lastMessages.unshift(message);
|
|
545
|
+
} else {
|
|
546
|
+
break;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
for (const message of lastMessages) {
|
|
550
|
+
setMessages(finalMessages);
|
|
551
|
+
const action = actions.find((action2) => action2.name === message.name);
|
|
552
|
+
if (action) {
|
|
553
|
+
followUp = action.followUp;
|
|
554
|
+
let result;
|
|
555
|
+
try {
|
|
556
|
+
result = yield Promise.race([
|
|
557
|
+
onFunctionCall({
|
|
558
|
+
messages: previousMessages,
|
|
559
|
+
name: message.name,
|
|
560
|
+
args: message.arguments
|
|
561
|
+
}),
|
|
562
|
+
new Promise(
|
|
563
|
+
(resolve) => {
|
|
564
|
+
var _a2;
|
|
565
|
+
return (_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.addEventListener(
|
|
566
|
+
"abort",
|
|
567
|
+
() => resolve("Operation was aborted by the user")
|
|
568
|
+
);
|
|
569
|
+
}
|
|
570
|
+
),
|
|
571
|
+
// if the user stopped generation, we also abort consecutive actions
|
|
572
|
+
new Promise((resolve) => {
|
|
573
|
+
var _a2;
|
|
574
|
+
if ((_a2 = chatAbortControllerRef.current) == null ? void 0 : _a2.signal.aborted) {
|
|
575
|
+
resolve("Operation was aborted by the user");
|
|
576
|
+
}
|
|
577
|
+
})
|
|
578
|
+
]);
|
|
579
|
+
} catch (e) {
|
|
580
|
+
result = `Failed to execute action ${message.name}`;
|
|
581
|
+
console.error(`Failed to execute action ${message.name}: ${e}`);
|
|
582
|
+
}
|
|
583
|
+
didExecuteAction = true;
|
|
584
|
+
const messageIndex = finalMessages.findIndex((msg) => msg.id === message.id);
|
|
585
|
+
finalMessages.splice(
|
|
586
|
+
messageIndex + 1,
|
|
587
|
+
0,
|
|
588
|
+
new import_runtime_client_gql3.ResultMessage({
|
|
589
|
+
id: "result-" + message.id,
|
|
590
|
+
result: import_runtime_client_gql3.ResultMessage.encodeResult(result),
|
|
397
591
|
actionExecutionId: message.id,
|
|
398
592
|
actionName: message.name
|
|
399
593
|
})
|
|
400
594
|
);
|
|
401
595
|
}
|
|
402
|
-
if (message.isAgentStateMessage() && !message.active && !executedCoAgentStateRenders.includes(message.id) && onCoAgentStateRender) {
|
|
403
|
-
if (guardrailsEnabled && value.generateCopilotResponse.status === void 0) {
|
|
404
|
-
break;
|
|
405
|
-
}
|
|
406
|
-
yield onCoAgentStateRender({
|
|
407
|
-
name: message.agentName,
|
|
408
|
-
nodeName: message.nodeName,
|
|
409
|
-
state: message.state
|
|
410
|
-
});
|
|
411
|
-
executedCoAgentStateRenders.push(message.id);
|
|
412
|
-
}
|
|
413
596
|
}
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
if (
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
nodeName: lastAgentStateMessage.nodeName
|
|
432
|
-
});
|
|
433
|
-
} else {
|
|
434
|
-
setAgentSession(null);
|
|
597
|
+
setMessages(finalMessages);
|
|
598
|
+
}
|
|
599
|
+
if (
|
|
600
|
+
// if followUp is not explicitly false
|
|
601
|
+
followUp !== false && // and we executed an action
|
|
602
|
+
(didExecuteAction || // the last message is a server side result
|
|
603
|
+
!isAgentRun && finalMessages.length && finalMessages[finalMessages.length - 1].isResultMessage()) && // the user did not stop generation
|
|
604
|
+
!((_j = chatAbortControllerRef.current) == null ? void 0 : _j.signal.aborted)
|
|
605
|
+
) {
|
|
606
|
+
yield new Promise((resolve) => setTimeout(resolve, 10));
|
|
607
|
+
return yield runChatCompletionRef.current(finalMessages);
|
|
608
|
+
} else if ((_k = chatAbortControllerRef.current) == null ? void 0 : _k.signal.aborted) {
|
|
609
|
+
const repairedMessages = finalMessages.filter((message, actionExecutionIndex) => {
|
|
610
|
+
if (message.isActionExecutionMessage()) {
|
|
611
|
+
return finalMessages.find(
|
|
612
|
+
(msg, resultIndex) => msg.isResultMessage() && msg.actionExecutionId === message.id && resultIndex === actionExecutionIndex + 1
|
|
613
|
+
);
|
|
435
614
|
}
|
|
615
|
+
return true;
|
|
616
|
+
});
|
|
617
|
+
const repairedMessageIds = repairedMessages.map((message) => message.id);
|
|
618
|
+
setMessages(repairedMessages);
|
|
619
|
+
if ((_l = agentSessionRef.current) == null ? void 0 : _l.nodeName) {
|
|
620
|
+
setAgentSession({
|
|
621
|
+
threadId: agentSessionRef.current.threadId,
|
|
622
|
+
agentName: agentSessionRef.current.agentName,
|
|
623
|
+
nodeName: "__end__"
|
|
624
|
+
});
|
|
436
625
|
}
|
|
626
|
+
return newMessages.filter((message) => repairedMessageIds.includes(message.id));
|
|
627
|
+
} else {
|
|
628
|
+
return newMessages.slice();
|
|
437
629
|
}
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
if (
|
|
443
|
-
// if followUp is not explicitly false
|
|
444
|
-
followUp !== false && // if we have client side results
|
|
445
|
-
(Object.values(actionResults).length || // or the last message we received is a result
|
|
446
|
-
newMessages.length && newMessages[newMessages.length - 1].isResultMessage())
|
|
447
|
-
) {
|
|
448
|
-
yield new Promise((resolve) => setTimeout(resolve, 10));
|
|
449
|
-
return yield runChatCompletionRef.current([...previousMessages, ...newMessages]);
|
|
450
|
-
} else {
|
|
451
|
-
return newMessages.slice();
|
|
630
|
+
} finally {
|
|
631
|
+
setIsLoading(false);
|
|
452
632
|
}
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
633
|
+
}),
|
|
634
|
+
[
|
|
635
|
+
messages,
|
|
636
|
+
setMessages,
|
|
637
|
+
makeSystemMessageCallback,
|
|
638
|
+
copilotConfig,
|
|
639
|
+
setIsLoading,
|
|
640
|
+
initialMessages,
|
|
641
|
+
isLoading,
|
|
642
|
+
actions,
|
|
643
|
+
onFunctionCall,
|
|
644
|
+
onCoAgentStateRender,
|
|
645
|
+
setCoagentStatesWithRef,
|
|
646
|
+
coagentStatesRef,
|
|
647
|
+
agentSession,
|
|
648
|
+
setAgentSession
|
|
649
|
+
]
|
|
650
|
+
);
|
|
457
651
|
runChatCompletionRef.current = runChatCompletion;
|
|
458
|
-
const runChatCompletionAndHandleFunctionCall = (
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
652
|
+
const runChatCompletionAndHandleFunctionCall = useAsyncCallback(
|
|
653
|
+
(messages2) => __async(this, null, function* () {
|
|
654
|
+
yield runChatCompletionRef.current(messages2);
|
|
655
|
+
}),
|
|
656
|
+
[messages]
|
|
657
|
+
);
|
|
658
|
+
const append = useAsyncCallback(
|
|
659
|
+
(message) => __async(this, null, function* () {
|
|
660
|
+
if (isLoading) {
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
663
|
+
const newMessages = [...messages, message];
|
|
664
|
+
setMessages(newMessages);
|
|
665
|
+
return runChatCompletionAndHandleFunctionCall(newMessages);
|
|
666
|
+
}),
|
|
667
|
+
[isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]
|
|
668
|
+
);
|
|
669
|
+
const reload = useAsyncCallback(() => __async(this, null, function* () {
|
|
470
670
|
if (isLoading || messages.length === 0) {
|
|
471
671
|
return;
|
|
472
672
|
}
|
|
@@ -477,7 +677,7 @@ function useChat(options) {
|
|
|
477
677
|
}
|
|
478
678
|
setMessages(newMessages);
|
|
479
679
|
return runChatCompletionAndHandleFunctionCall(newMessages);
|
|
480
|
-
});
|
|
680
|
+
}), [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]);
|
|
481
681
|
const stop = () => {
|
|
482
682
|
var _a;
|
|
483
683
|
(_a = chatAbortControllerRef.current) == null ? void 0 : _a.abort("Stop was called");
|
|
@@ -485,24 +685,42 @@ function useChat(options) {
|
|
|
485
685
|
return {
|
|
486
686
|
append,
|
|
487
687
|
reload,
|
|
488
|
-
stop
|
|
688
|
+
stop,
|
|
689
|
+
runChatCompletion: () => runChatCompletionRef.current(messages)
|
|
489
690
|
};
|
|
490
691
|
}
|
|
692
|
+
function constructFinalMessages(syncedMessages, previousMessages, newMessages) {
|
|
693
|
+
const finalMessages = syncedMessages.length > 0 ? [...syncedMessages] : [...previousMessages, ...newMessages];
|
|
694
|
+
if (syncedMessages.length > 0) {
|
|
695
|
+
const messagesWithAgentState = [...previousMessages, ...newMessages];
|
|
696
|
+
let previousMessageId = void 0;
|
|
697
|
+
for (const message of messagesWithAgentState) {
|
|
698
|
+
if (message.isAgentStateMessage()) {
|
|
699
|
+
const index = finalMessages.findIndex((msg) => msg.id === previousMessageId);
|
|
700
|
+
if (index !== -1) {
|
|
701
|
+
finalMessages.splice(index + 1, 0, message);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
previousMessageId = message.id;
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
return finalMessages;
|
|
708
|
+
}
|
|
491
709
|
|
|
492
710
|
// src/components/copilot-provider/copilotkit.tsx
|
|
493
|
-
var
|
|
711
|
+
var import_react7 = require("react");
|
|
494
712
|
var import_react_dom = require("react-dom");
|
|
495
|
-
var
|
|
713
|
+
var import_shared3 = require("@copilotkit/shared");
|
|
496
714
|
|
|
497
715
|
// src/context/copilot-messages-context.tsx
|
|
498
|
-
var
|
|
716
|
+
var import_react6 = __toESM(require("react"));
|
|
499
717
|
var emptyCopilotContext2 = {
|
|
500
718
|
messages: [],
|
|
501
719
|
setMessages: () => []
|
|
502
720
|
};
|
|
503
|
-
var CopilotMessagesContext =
|
|
721
|
+
var CopilotMessagesContext = import_react6.default.createContext(emptyCopilotContext2);
|
|
504
722
|
function useCopilotMessagesContext() {
|
|
505
|
-
const context =
|
|
723
|
+
const context = import_react6.default.useContext(CopilotMessagesContext);
|
|
506
724
|
if (context === emptyCopilotContext2) {
|
|
507
725
|
throw new Error(
|
|
508
726
|
"A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`"
|
|
@@ -512,7 +730,7 @@ function useCopilotMessagesContext() {
|
|
|
512
730
|
}
|
|
513
731
|
|
|
514
732
|
// src/components/copilot-provider/copilotkit.tsx
|
|
515
|
-
var
|
|
733
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
516
734
|
var defaultCopilotContextCategories = ["global"];
|
|
517
735
|
|
|
518
736
|
// src/hooks/use-copilot-chat.ts
|
|
@@ -530,8 +748,8 @@ function useCopilotChat(_a = {}) {
|
|
|
530
748
|
setIsLoading,
|
|
531
749
|
chatInstructions,
|
|
532
750
|
actions,
|
|
533
|
-
|
|
534
|
-
|
|
751
|
+
coagentStatesRef,
|
|
752
|
+
setCoagentStatesWithRef,
|
|
535
753
|
coAgentStateRenders,
|
|
536
754
|
agentSession,
|
|
537
755
|
setAgentSession,
|
|
@@ -544,21 +762,21 @@ function useCopilotChat(_a = {}) {
|
|
|
544
762
|
} = useCopilotContext();
|
|
545
763
|
const { messages, setMessages } = useCopilotMessagesContext();
|
|
546
764
|
const latestGetContextString = useUpdatedRef(getContextString);
|
|
547
|
-
const deleteMessage = (0,
|
|
765
|
+
const deleteMessage = (0, import_react8.useCallback)(
|
|
548
766
|
(messageId) => {
|
|
549
767
|
setMessages((prev) => prev.filter((message) => message.id !== messageId));
|
|
550
768
|
},
|
|
551
769
|
[setMessages]
|
|
552
770
|
);
|
|
553
|
-
const makeSystemMessageCallback = (0,
|
|
771
|
+
const makeSystemMessageCallback = (0, import_react8.useCallback)(() => {
|
|
554
772
|
const systemMessageMaker = makeSystemMessage || defaultSystemMessage;
|
|
555
773
|
const contextString = latestGetContextString.current([], defaultCopilotContextCategories);
|
|
556
|
-
return new
|
|
774
|
+
return new import_runtime_client_gql4.TextMessage({
|
|
557
775
|
content: systemMessageMaker(contextString, chatInstructions),
|
|
558
|
-
role:
|
|
776
|
+
role: import_runtime_client_gql4.Role.System
|
|
559
777
|
});
|
|
560
778
|
}, [getContextString, makeSystemMessage, chatInstructions]);
|
|
561
|
-
const onCoAgentStateRender = (
|
|
779
|
+
const onCoAgentStateRender = useAsyncCallback(
|
|
562
780
|
(args) => __async(this, null, function* () {
|
|
563
781
|
var _a2;
|
|
564
782
|
const { name, nodeName, state } = args;
|
|
@@ -576,7 +794,7 @@ function useCopilotChat(_a = {}) {
|
|
|
576
794
|
}),
|
|
577
795
|
[coAgentStateRenders]
|
|
578
796
|
);
|
|
579
|
-
const { append, reload, stop } = useChat(__spreadProps(__spreadValues({}, options), {
|
|
797
|
+
const { append, reload, stop, runChatCompletion } = useChat(__spreadProps(__spreadValues({}, options), {
|
|
580
798
|
actions: Object.values(actions),
|
|
581
799
|
copilotConfig: copilotApiConfig,
|
|
582
800
|
initialMessages: options.initialMessages || [],
|
|
@@ -587,8 +805,8 @@ function useCopilotChat(_a = {}) {
|
|
|
587
805
|
makeSystemMessageCallback,
|
|
588
806
|
isLoading,
|
|
589
807
|
setIsLoading,
|
|
590
|
-
|
|
591
|
-
|
|
808
|
+
coagentStatesRef,
|
|
809
|
+
setCoagentStatesWithRef,
|
|
592
810
|
agentSession,
|
|
593
811
|
setAgentSession,
|
|
594
812
|
threadId,
|
|
@@ -598,40 +816,44 @@ function useCopilotChat(_a = {}) {
|
|
|
598
816
|
chatAbortControllerRef
|
|
599
817
|
}));
|
|
600
818
|
const latestAppend = useUpdatedRef(append);
|
|
601
|
-
const latestAppendFunc = (
|
|
602
|
-
(message) => {
|
|
603
|
-
return latestAppend.current(message);
|
|
604
|
-
},
|
|
819
|
+
const latestAppendFunc = useAsyncCallback(
|
|
820
|
+
(message) => __async(this, null, function* () {
|
|
821
|
+
return yield latestAppend.current(message);
|
|
822
|
+
}),
|
|
605
823
|
[latestAppend]
|
|
606
824
|
);
|
|
607
825
|
const latestReload = useUpdatedRef(reload);
|
|
608
|
-
const latestReloadFunc = (
|
|
609
|
-
return latestReload.current();
|
|
610
|
-
}, [latestReload]);
|
|
826
|
+
const latestReloadFunc = useAsyncCallback(() => __async(this, null, function* () {
|
|
827
|
+
return yield latestReload.current();
|
|
828
|
+
}), [latestReload]);
|
|
611
829
|
const latestStop = useUpdatedRef(stop);
|
|
612
|
-
const latestStopFunc = (0,
|
|
830
|
+
const latestStopFunc = (0, import_react8.useCallback)(() => {
|
|
613
831
|
return latestStop.current();
|
|
614
832
|
}, [latestStop]);
|
|
615
833
|
const latestDelete = useUpdatedRef(deleteMessage);
|
|
616
|
-
const latestDeleteFunc = (0,
|
|
834
|
+
const latestDeleteFunc = (0, import_react8.useCallback)(
|
|
617
835
|
(messageId) => {
|
|
618
836
|
return latestDelete.current(messageId);
|
|
619
837
|
},
|
|
620
838
|
[latestDelete]
|
|
621
839
|
);
|
|
622
840
|
const latestSetMessages = useUpdatedRef(setMessages);
|
|
623
|
-
const latestSetMessagesFunc = (0,
|
|
841
|
+
const latestSetMessagesFunc = (0, import_react8.useCallback)(
|
|
624
842
|
(messages2) => {
|
|
625
843
|
return latestSetMessages.current(messages2);
|
|
626
844
|
},
|
|
627
845
|
[latestSetMessages]
|
|
628
846
|
);
|
|
629
|
-
const
|
|
847
|
+
const latestRunChatCompletion = useUpdatedRef(runChatCompletion);
|
|
848
|
+
const latestRunChatCompletionFunc = useAsyncCallback(() => __async(this, null, function* () {
|
|
849
|
+
return yield latestRunChatCompletion.current();
|
|
850
|
+
}), [latestRunChatCompletion]);
|
|
851
|
+
const reset = (0, import_react8.useCallback)(() => {
|
|
630
852
|
latestStopFunc();
|
|
631
853
|
setMessages([]);
|
|
632
854
|
setThreadId(null);
|
|
633
855
|
setRunId(null);
|
|
634
|
-
|
|
856
|
+
setCoagentStatesWithRef({});
|
|
635
857
|
let initialAgentSession = null;
|
|
636
858
|
if (agentLock) {
|
|
637
859
|
initialAgentSession = {
|
|
@@ -639,9 +861,16 @@ function useCopilotChat(_a = {}) {
|
|
|
639
861
|
};
|
|
640
862
|
}
|
|
641
863
|
setAgentSession(initialAgentSession);
|
|
642
|
-
}, [
|
|
864
|
+
}, [
|
|
865
|
+
latestStopFunc,
|
|
866
|
+
setMessages,
|
|
867
|
+
setThreadId,
|
|
868
|
+
setCoagentStatesWithRef,
|
|
869
|
+
setAgentSession,
|
|
870
|
+
agentLock
|
|
871
|
+
]);
|
|
643
872
|
const latestReset = useUpdatedRef(reset);
|
|
644
|
-
const latestResetFunc = (0,
|
|
873
|
+
const latestResetFunc = (0, import_react8.useCallback)(() => {
|
|
645
874
|
return latestReset.current();
|
|
646
875
|
}, [latestReset]);
|
|
647
876
|
return {
|
|
@@ -652,12 +881,13 @@ function useCopilotChat(_a = {}) {
|
|
|
652
881
|
stopGeneration: latestStopFunc,
|
|
653
882
|
reset: latestResetFunc,
|
|
654
883
|
deleteMessage: latestDeleteFunc,
|
|
884
|
+
runChatCompletion: latestRunChatCompletionFunc,
|
|
655
885
|
isLoading
|
|
656
886
|
};
|
|
657
887
|
}
|
|
658
888
|
function useUpdatedRef(value) {
|
|
659
|
-
const ref = (0,
|
|
660
|
-
(0,
|
|
889
|
+
const ref = (0, import_react8.useRef)(value);
|
|
890
|
+
(0, import_react8.useEffect)(() => {
|
|
661
891
|
ref.current = value;
|
|
662
892
|
}, [value]);
|
|
663
893
|
return ref;
|
|
@@ -687,18 +917,22 @@ ${additionalInstructions}` : "");
|
|
|
687
917
|
}
|
|
688
918
|
|
|
689
919
|
// src/hooks/use-copilot-action.ts
|
|
690
|
-
var
|
|
691
|
-
var
|
|
920
|
+
var import_shared4 = require("@copilotkit/shared");
|
|
921
|
+
var import_react9 = require("react");
|
|
692
922
|
function useCopilotAction(action, dependencies) {
|
|
693
923
|
const { setAction, removeAction, actions, chatComponentsCache } = useCopilotContext();
|
|
694
|
-
const idRef = (0,
|
|
695
|
-
const renderAndWaitRef = (0,
|
|
924
|
+
const idRef = (0, import_react9.useRef)((0, import_shared4.randomId)());
|
|
925
|
+
const renderAndWaitRef = (0, import_react9.useRef)(null);
|
|
696
926
|
action = __spreadValues({}, action);
|
|
697
|
-
if (
|
|
927
|
+
if (
|
|
928
|
+
// renderAndWaitForResponse is not available for catch all actions
|
|
929
|
+
isFrontendAction(action) && // check if renderAndWaitForResponse is set
|
|
930
|
+
(action.renderAndWait || action.renderAndWaitForResponse)
|
|
931
|
+
) {
|
|
698
932
|
const renderAndWait = action.renderAndWait || action.renderAndWaitForResponse;
|
|
699
933
|
action.renderAndWait = void 0;
|
|
700
934
|
action.renderAndWaitForResponse = void 0;
|
|
701
|
-
action.handler = () => __async(this, null, function* () {
|
|
935
|
+
action.handler = useAsyncCallback(() => __async(this, null, function* () {
|
|
702
936
|
let resolve;
|
|
703
937
|
let reject;
|
|
704
938
|
const promise = new Promise((resolvePromise, rejectPromise) => {
|
|
@@ -707,14 +941,18 @@ function useCopilotAction(action, dependencies) {
|
|
|
707
941
|
});
|
|
708
942
|
renderAndWaitRef.current = { promise, resolve, reject };
|
|
709
943
|
return yield promise;
|
|
710
|
-
});
|
|
944
|
+
}), []);
|
|
711
945
|
action.render = (props) => {
|
|
946
|
+
let status = props.status;
|
|
947
|
+
if (props.status === "executing" && !renderAndWaitRef.current) {
|
|
948
|
+
status = "inProgress";
|
|
949
|
+
}
|
|
712
950
|
const waitProps = {
|
|
713
|
-
status
|
|
951
|
+
status,
|
|
714
952
|
args: props.args,
|
|
715
953
|
result: props.result,
|
|
716
|
-
handler:
|
|
717
|
-
respond:
|
|
954
|
+
handler: status === "executing" ? renderAndWaitRef.current.resolve : void 0,
|
|
955
|
+
respond: status === "executing" ? renderAndWaitRef.current.resolve : void 0
|
|
718
956
|
};
|
|
719
957
|
const isNoArgsRenderWait = (_fn) => {
|
|
720
958
|
var _a;
|
|
@@ -727,12 +965,14 @@ function useCopilotAction(action, dependencies) {
|
|
|
727
965
|
return renderAndWait(waitProps);
|
|
728
966
|
}
|
|
729
967
|
}
|
|
730
|
-
return (0,
|
|
968
|
+
return (0, import_react9.createElement)(import_react9.Fragment);
|
|
731
969
|
};
|
|
732
970
|
}
|
|
733
971
|
if (dependencies === void 0) {
|
|
734
972
|
if (actions[idRef.current]) {
|
|
735
|
-
|
|
973
|
+
if (isFrontendAction(action)) {
|
|
974
|
+
actions[idRef.current].handler = action.handler;
|
|
975
|
+
}
|
|
736
976
|
if (typeof action.render === "function") {
|
|
737
977
|
if (chatComponentsCache.current !== null) {
|
|
738
978
|
chatComponentsCache.current.actions[action.name] = action.render;
|
|
@@ -740,7 +980,7 @@ function useCopilotAction(action, dependencies) {
|
|
|
740
980
|
}
|
|
741
981
|
}
|
|
742
982
|
}
|
|
743
|
-
(0,
|
|
983
|
+
(0, import_react9.useEffect)(() => {
|
|
744
984
|
setAction(idRef.current, action);
|
|
745
985
|
if (chatComponentsCache.current !== null && action.render !== void 0) {
|
|
746
986
|
chatComponentsCache.current.actions[action.name] = action.render;
|
|
@@ -751,31 +991,34 @@ function useCopilotAction(action, dependencies) {
|
|
|
751
991
|
}, [
|
|
752
992
|
setAction,
|
|
753
993
|
removeAction,
|
|
754
|
-
action.description,
|
|
994
|
+
isFrontendAction(action) ? action.description : void 0,
|
|
755
995
|
action.name,
|
|
756
|
-
action.disabled,
|
|
757
|
-
action.available,
|
|
996
|
+
isFrontendAction(action) ? action.disabled : void 0,
|
|
997
|
+
isFrontendAction(action) ? action.available : void 0,
|
|
758
998
|
// This should be faster than deep equality checking
|
|
759
999
|
// In addition, all major JS engines guarantee the order of object keys
|
|
760
|
-
JSON.stringify(action.parameters),
|
|
1000
|
+
JSON.stringify(isFrontendAction(action) ? action.parameters : []),
|
|
761
1001
|
// include render only if it's a string
|
|
762
1002
|
typeof action.render === "string" ? action.render : void 0,
|
|
763
1003
|
// dependencies set by the developer
|
|
764
1004
|
...dependencies || []
|
|
765
1005
|
]);
|
|
766
1006
|
}
|
|
1007
|
+
function isFrontendAction(action) {
|
|
1008
|
+
return action.name !== "*";
|
|
1009
|
+
}
|
|
767
1010
|
|
|
768
1011
|
// src/hooks/use-coagent-state-render.ts
|
|
769
|
-
var
|
|
770
|
-
var
|
|
1012
|
+
var import_react10 = require("react");
|
|
1013
|
+
var import_shared5 = require("@copilotkit/shared");
|
|
771
1014
|
function useCoAgentStateRender(action, dependencies) {
|
|
772
1015
|
const {
|
|
773
1016
|
setCoAgentStateRender,
|
|
774
1017
|
removeCoAgentStateRender,
|
|
775
1018
|
coAgentStateRenders,
|
|
776
1019
|
chatComponentsCache
|
|
777
|
-
} = (0,
|
|
778
|
-
const idRef = (0,
|
|
1020
|
+
} = (0, import_react10.useContext)(CopilotContext);
|
|
1021
|
+
const idRef = (0, import_react10.useRef)((0, import_shared5.randomId)());
|
|
779
1022
|
const key = `${action.name}-${action.nodeName || "global"}`;
|
|
780
1023
|
if (dependencies === void 0) {
|
|
781
1024
|
if (coAgentStateRenders[idRef.current]) {
|
|
@@ -787,7 +1030,7 @@ function useCoAgentStateRender(action, dependencies) {
|
|
|
787
1030
|
}
|
|
788
1031
|
}
|
|
789
1032
|
}
|
|
790
|
-
(0,
|
|
1033
|
+
(0, import_react10.useEffect)(() => {
|
|
791
1034
|
setCoAgentStateRender(idRef.current, action);
|
|
792
1035
|
if (chatComponentsCache.current !== null && action.render !== void 0) {
|
|
793
1036
|
chatComponentsCache.current.coAgentStateRenders[key] = action.render;
|
|
@@ -807,11 +1050,11 @@ function useCoAgentStateRender(action, dependencies) {
|
|
|
807
1050
|
}
|
|
808
1051
|
|
|
809
1052
|
// src/hooks/use-make-copilot-document-readable.ts
|
|
810
|
-
var
|
|
1053
|
+
var import_react11 = require("react");
|
|
811
1054
|
function useMakeCopilotDocumentReadable(document, categories, dependencies = []) {
|
|
812
1055
|
const { addDocumentContext, removeDocumentContext } = useCopilotContext();
|
|
813
|
-
const idRef = (0,
|
|
814
|
-
(0,
|
|
1056
|
+
const idRef = (0, import_react11.useRef)();
|
|
1057
|
+
(0, import_react11.useEffect)(() => {
|
|
815
1058
|
const id = addDocumentContext(document, categories);
|
|
816
1059
|
idRef.current = id;
|
|
817
1060
|
return () => {
|
|
@@ -822,16 +1065,16 @@ function useMakeCopilotDocumentReadable(document, categories, dependencies = [])
|
|
|
822
1065
|
}
|
|
823
1066
|
|
|
824
1067
|
// src/hooks/use-copilot-readable.ts
|
|
825
|
-
var
|
|
1068
|
+
var import_react12 = require("react");
|
|
826
1069
|
function convertToJSON(description, value) {
|
|
827
1070
|
return `${description}: ${typeof value === "string" ? value : JSON.stringify(value)}`;
|
|
828
1071
|
}
|
|
829
1072
|
function useCopilotReadable({ description, value, parentId, categories, convert }, dependencies) {
|
|
830
1073
|
const { addContext, removeContext } = useCopilotContext();
|
|
831
|
-
const idRef = (0,
|
|
1074
|
+
const idRef = (0, import_react12.useRef)();
|
|
832
1075
|
convert = convert || convertToJSON;
|
|
833
1076
|
const information = convert(description, value);
|
|
834
|
-
(0,
|
|
1077
|
+
(0, import_react12.useEffect)(() => {
|
|
835
1078
|
const id = addContext(information, parentId, categories);
|
|
836
1079
|
idRef.current = id;
|
|
837
1080
|
return () => {
|
|
@@ -842,7 +1085,7 @@ function useCopilotReadable({ description, value, parentId, categories, convert
|
|
|
842
1085
|
}
|
|
843
1086
|
|
|
844
1087
|
// src/hooks/use-coagent.ts
|
|
845
|
-
var
|
|
1088
|
+
var import_react13 = require("react");
|
|
846
1089
|
function useCoAgent(options) {
|
|
847
1090
|
const isExternalStateManagement = (options2) => {
|
|
848
1091
|
return "state" in options2 && "setState" in options2;
|
|
@@ -854,8 +1097,8 @@ function useCoAgent(options) {
|
|
|
854
1097
|
const generalContext = useCopilotContext();
|
|
855
1098
|
const messagesContext = useCopilotMessagesContext();
|
|
856
1099
|
const context = __spreadValues(__spreadValues({}, generalContext), messagesContext);
|
|
857
|
-
const { coagentStates,
|
|
858
|
-
const { appendMessage } = useCopilotChat();
|
|
1100
|
+
const { coagentStates, coagentStatesRef, setCoagentStatesWithRef } = context;
|
|
1101
|
+
const { appendMessage, runChatCompletion } = useCopilotChat();
|
|
859
1102
|
const getCoagentState = (coagentStates2, name2) => {
|
|
860
1103
|
if (coagentStates2[name2]) {
|
|
861
1104
|
return coagentStates2[name2];
|
|
@@ -872,19 +1115,17 @@ function useCoAgent(options) {
|
|
|
872
1115
|
}
|
|
873
1116
|
};
|
|
874
1117
|
const setState = (newState) => {
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
});
|
|
883
|
-
});
|
|
1118
|
+
let coagentState2 = getCoagentState(coagentStatesRef.current || {}, name);
|
|
1119
|
+
const updatedState = typeof newState === "function" ? newState(coagentState2.state) : newState;
|
|
1120
|
+
setCoagentStatesWithRef(__spreadProps(__spreadValues({}, coagentStatesRef.current), {
|
|
1121
|
+
[name]: __spreadProps(__spreadValues({}, coagentState2), {
|
|
1122
|
+
state: updatedState
|
|
1123
|
+
})
|
|
1124
|
+
}));
|
|
884
1125
|
};
|
|
885
1126
|
const coagentState = getCoagentState(coagentStates, name);
|
|
886
1127
|
const state = isExternalStateManagement(options) ? options.state : coagentState.state;
|
|
887
|
-
(0,
|
|
1128
|
+
(0, import_react13.useEffect)(() => {
|
|
888
1129
|
if (isExternalStateManagement(options)) {
|
|
889
1130
|
setState(options.state);
|
|
890
1131
|
} else if (coagentStates[name] === void 0) {
|
|
@@ -893,23 +1134,24 @@ function useCoAgent(options) {
|
|
|
893
1134
|
}, [
|
|
894
1135
|
isExternalStateManagement(options) ? JSON.stringify(options.state) : void 0,
|
|
895
1136
|
// reset initialstate on reset
|
|
896
|
-
coagentStates === void 0
|
|
1137
|
+
coagentStates[name] === void 0
|
|
897
1138
|
]);
|
|
1139
|
+
const runAgentCallback = useAsyncCallback(
|
|
1140
|
+
(hint) => __async(this, null, function* () {
|
|
1141
|
+
yield runAgent(name, context, appendMessage, runChatCompletion, hint);
|
|
1142
|
+
}),
|
|
1143
|
+
[name, context, appendMessage, runChatCompletion]
|
|
1144
|
+
);
|
|
898
1145
|
return {
|
|
899
1146
|
name,
|
|
900
1147
|
nodeName: coagentState.nodeName,
|
|
901
|
-
|
|
902
|
-
setState,
|
|
1148
|
+
threadId: coagentState.threadId,
|
|
903
1149
|
running: coagentState.running,
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
stop: () =>
|
|
908
|
-
|
|
909
|
-
},
|
|
910
|
-
run: (hint) => {
|
|
911
|
-
return runAgent(name, context, appendMessage, hint);
|
|
912
|
-
}
|
|
1150
|
+
state: coagentState.state,
|
|
1151
|
+
setState: isExternalStateManagement(options) ? options.setState : setState,
|
|
1152
|
+
start: () => startAgent(name, context),
|
|
1153
|
+
stop: () => stopAgent(name, context),
|
|
1154
|
+
run: runAgentCallback
|
|
913
1155
|
};
|
|
914
1156
|
}
|
|
915
1157
|
function startAgent(name, context) {
|
|
@@ -937,7 +1179,7 @@ function stopAgent(name, context) {
|
|
|
937
1179
|
console.warn(`No agent session found for ${name}`);
|
|
938
1180
|
}
|
|
939
1181
|
}
|
|
940
|
-
function runAgent(name, context, appendMessage, hint) {
|
|
1182
|
+
function runAgent(name, context, appendMessage, runChatCompletion, hint) {
|
|
941
1183
|
return __async(this, null, function* () {
|
|
942
1184
|
var _a, _b;
|
|
943
1185
|
const { agentSession, setAgentSession } = context;
|
|
@@ -953,12 +1195,16 @@ function runAgent(name, context, appendMessage, hint) {
|
|
|
953
1195
|
previousState = message.state;
|
|
954
1196
|
}
|
|
955
1197
|
}
|
|
956
|
-
let state = ((_b = (_a = context.
|
|
1198
|
+
let state = ((_b = (_a = context.coagentStatesRef.current) == null ? void 0 : _a[name]) == null ? void 0 : _b.state) || {};
|
|
957
1199
|
if (hint) {
|
|
958
1200
|
const hintMessage = hint({ previousState, currentState: state });
|
|
959
1201
|
if (hintMessage) {
|
|
960
1202
|
yield appendMessage(hintMessage);
|
|
1203
|
+
} else {
|
|
1204
|
+
yield runChatCompletion();
|
|
961
1205
|
}
|
|
1206
|
+
} else {
|
|
1207
|
+
yield runChatCompletion();
|
|
962
1208
|
}
|
|
963
1209
|
});
|
|
964
1210
|
}
|