@copilotkit/react-core 1.50.0-beta.12 → 1.50.0-beta.13
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 +12 -0
- package/dist/{chunk-66TKKRF4.mjs → chunk-6MMP5LPV.mjs} +2 -2
- package/dist/{chunk-U2ZRVVKT.mjs → chunk-7VKOBXCY.mjs} +2 -2
- package/dist/{chunk-LHERIF3L.mjs → chunk-7X3E6GHT.mjs} +5 -5
- package/dist/{chunk-4TKK4322.mjs → chunk-EV2FIZFH.mjs} +2 -2
- package/dist/{chunk-4HRUQH6U.mjs → chunk-NX57QKMK.mjs} +2 -2
- package/dist/{chunk-2YI623SR.mjs → chunk-OJVWPLC4.mjs} +2 -2
- package/dist/{chunk-EG56H77V.mjs → chunk-PLXQ2PM6.mjs} +4 -4
- package/dist/{chunk-VSQWPEYV.mjs → chunk-QHAYENR3.mjs} +4 -4
- package/dist/{chunk-WEKQV2OD.mjs → chunk-UUMLIYAK.mjs} +23 -23
- package/dist/chunk-UUMLIYAK.mjs.map +1 -0
- package/dist/components/copilot-provider/copilotkit.js +126 -1153
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +7 -10
- package/dist/components/copilot-provider/index.js +126 -1153
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +7 -10
- package/dist/components/dev-console/console-trigger.mjs +225 -5
- package/dist/components/dev-console/console-trigger.mjs.map +1 -1
- package/dist/components/error-boundary/error-boundary.mjs +2 -2
- package/dist/components/index.js +126 -1153
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +7 -10
- package/dist/context/index.mjs +5 -5
- package/dist/hooks/index.mjs +28 -28
- package/dist/hooks/use-coagent-state-render-bridge.mjs +1 -1
- package/dist/hooks/use-copilot-action.mjs +2 -2
- package/dist/hooks/use-copilot-authenticated-action.mjs +3 -3
- package/dist/hooks/use-copilot-chat-headless_c.mjs +7 -7
- package/dist/hooks/use-copilot-chat.mjs +7 -7
- package/dist/hooks/use-copilot-chat_internal.mjs +6 -6
- package/dist/hooks/use-default-tool.mjs +3 -3
- package/dist/hooks/use-langgraph-interrupt-render.mjs +1 -1
- package/dist/index.js +273 -1291
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +52 -55
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +8 -11
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +8 -11
- package/package.json +5 -5
- package/src/components/copilot-provider/copilotkit.tsx +9 -9
- package/dist/chunk-PMWUKW3Z.mjs +0 -231
- package/dist/chunk-PMWUKW3Z.mjs.map +0 -1
- package/dist/chunk-WEKQV2OD.mjs.map +0 -1
- /package/dist/{chunk-66TKKRF4.mjs.map → chunk-6MMP5LPV.mjs.map} +0 -0
- /package/dist/{chunk-U2ZRVVKT.mjs.map → chunk-7VKOBXCY.mjs.map} +0 -0
- /package/dist/{chunk-LHERIF3L.mjs.map → chunk-7X3E6GHT.mjs.map} +0 -0
- /package/dist/{chunk-4TKK4322.mjs.map → chunk-EV2FIZFH.mjs.map} +0 -0
- /package/dist/{chunk-4HRUQH6U.mjs.map → chunk-NX57QKMK.mjs.map} +0 -0
- /package/dist/{chunk-2YI623SR.mjs.map → chunk-OJVWPLC4.mjs.map} +0 -0
- /package/dist/{chunk-EG56H77V.mjs.map → chunk-PLXQ2PM6.mjs.map} +0 -0
- /package/dist/{chunk-VSQWPEYV.mjs.map → chunk-QHAYENR3.mjs.map} +0 -0
package/dist/components/index.js
CHANGED
|
@@ -86,8 +86,8 @@ __export(components_exports, {
|
|
|
86
86
|
module.exports = __toCommonJS(components_exports);
|
|
87
87
|
|
|
88
88
|
// src/components/copilot-provider/copilotkit.tsx
|
|
89
|
-
var
|
|
90
|
-
var
|
|
89
|
+
var import_react14 = require("react");
|
|
90
|
+
var import_react15 = require("@copilotkitnext/react");
|
|
91
91
|
|
|
92
92
|
// src/context/copilot-context.tsx
|
|
93
93
|
var import_react = __toESM(require("react"));
|
|
@@ -326,7 +326,7 @@ function setsHaveIntersection(setA, setB) {
|
|
|
326
326
|
|
|
327
327
|
// src/components/copilot-provider/copilotkit.tsx
|
|
328
328
|
var import_react_dom = require("react-dom");
|
|
329
|
-
var
|
|
329
|
+
var import_shared12 = require("@copilotkit/shared");
|
|
330
330
|
|
|
331
331
|
// src/hooks/use-flat-category-store.ts
|
|
332
332
|
var import_react3 = require("react");
|
|
@@ -410,15 +410,6 @@ var emptyCopilotContext2 = {
|
|
|
410
410
|
setSuggestions: () => []
|
|
411
411
|
};
|
|
412
412
|
var CopilotMessagesContext = import_react4.default.createContext(emptyCopilotContext2);
|
|
413
|
-
function useCopilotMessagesContext() {
|
|
414
|
-
const context = import_react4.default.useContext(CopilotMessagesContext);
|
|
415
|
-
if (context === emptyCopilotContext2) {
|
|
416
|
-
throw new Error(
|
|
417
|
-
"A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`"
|
|
418
|
-
);
|
|
419
|
-
}
|
|
420
|
-
return context;
|
|
421
|
-
}
|
|
422
413
|
|
|
423
414
|
// src/components/toast/toast-provider.tsx
|
|
424
415
|
var import_react5 = require("react");
|
|
@@ -1194,1050 +1185,28 @@ var CopilotErrorBoundary = class extends import_react7.default.Component {
|
|
|
1194
1185
|
}
|
|
1195
1186
|
};
|
|
1196
1187
|
|
|
1197
|
-
// src/components/dev-console/console-trigger.tsx
|
|
1198
|
-
var import_react9 = require("react");
|
|
1199
|
-
|
|
1200
|
-
// src/components/dev-console/icons.tsx
|
|
1201
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1202
|
-
var ExclamationMarkTriangleIcon = () => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1203
|
-
"svg",
|
|
1204
|
-
{
|
|
1205
|
-
width: "13.3967723px",
|
|
1206
|
-
height: "12px",
|
|
1207
|
-
viewBox: "0 0 13.3967723 12",
|
|
1208
|
-
version: "1.1",
|
|
1209
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1210
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "exclamation-triangle", fill: "#CD2121", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1211
|
-
"path",
|
|
1212
|
-
{
|
|
1213
|
-
d: "M5.39935802,0.75 C5.97670802,-0.25 7.42007802,-0.25 7.99742802,0.75 L13.193588,9.75 C13.770888,10.75 13.049288,12 11.894588,12 L1.50223802,12 C0.34753802,12 -0.37414898,10.75 0.20319802,9.75 L5.39935802,0.75 Z M6.69838802,2.5 C7.11260802,2.5 7.44838802,2.83579 7.44838802,3.25 L7.44838802,6.25 C7.44838802,6.66421 7.11260802,7 6.69838802,7 C6.28417802,7 5.94838802,6.66421 5.94838802,6.25 L5.94838802,3.25 C5.94838802,2.83579 6.28417802,2.5 6.69838802,2.5 Z M6.69838802,10.5 C7.25067802,10.5 7.69838802,10.0523 7.69838802,9.5 C7.69838802,8.9477 7.25067802,8.5 6.69838802,8.5 C6.14610802,8.5 5.69838802,8.9477 5.69838802,9.5 C5.69838802,10.0523 6.14610802,10.5 6.69838802,10.5 Z",
|
|
1214
|
-
id: "Shape"
|
|
1215
|
-
}
|
|
1216
|
-
) }) })
|
|
1217
|
-
}
|
|
1218
|
-
);
|
|
1219
|
-
var CheckIcon = () => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1220
|
-
"svg",
|
|
1221
|
-
{
|
|
1222
|
-
width: "14px",
|
|
1223
|
-
height: "14px",
|
|
1224
|
-
viewBox: "0 0 14 14",
|
|
1225
|
-
version: "1.1",
|
|
1226
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1227
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Group-2", transform: "translate(-118, 0)", fill: "#1BC030", fillRule: "nonzero", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Group", transform: "translate(118, 0)", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1228
|
-
"path",
|
|
1229
|
-
{
|
|
1230
|
-
d: "M0,7 C0,3.13384615 3.13384615,0 7,0 C10.8661538,0 14,3.13384615 14,7 C14,10.8661538 10.8661538,14 7,14 C3.13384615,14 0,10.8661538 0,7 Z M9.59179487,5.69764103 C9.70905818,5.54139023 9.73249341,5.33388318 9.65303227,5.15541491 C9.57357113,4.97694665 9.40367989,4.85551619 9.20909814,4.83811118 C9.01451638,4.82070616 8.82577109,4.91005717 8.71589744,5.07158974 L6.39261538,8.32389744 L5.22666667,7.15794872 C5.01450582,6.96025518 4.68389046,6.9660885 4.47883563,7.17114332 C4.27378081,7.37619815 4.26794748,7.70681351 4.46564103,7.91897436 L6.08102564,9.53435897 C6.19289944,9.64614839 6.3482622,9.70310251 6.50588106,9.69010587 C6.66349993,9.67710922 6.80743532,9.59547613 6.89948718,9.46687179 L9.59179487,5.69764103 L9.59179487,5.69764103 Z",
|
|
1231
|
-
id: "Shape"
|
|
1232
|
-
}
|
|
1233
|
-
) }) }) })
|
|
1234
|
-
}
|
|
1235
|
-
);
|
|
1236
|
-
var CopilotKitIcon = () => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1237
|
-
"svg",
|
|
1238
|
-
{
|
|
1239
|
-
width: "33px",
|
|
1240
|
-
height: "35px",
|
|
1241
|
-
viewBox: "0 0 33 35",
|
|
1242
|
-
version: "1.1",
|
|
1243
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1244
|
-
children: [
|
|
1245
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("title", { children: "bd5c9079-929b-4d55-bdc9-16d1c8181b71" }),
|
|
1246
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1247
|
-
"image",
|
|
1248
|
-
{
|
|
1249
|
-
x: "0",
|
|
1250
|
-
y: "0",
|
|
1251
|
-
width: "33",
|
|
1252
|
-
height: "35",
|
|
1253
|
-
xlinkHref: "data:image/png;base64,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"
|
|
1254
|
-
}
|
|
1255
|
-
) })
|
|
1256
|
-
]
|
|
1257
|
-
}
|
|
1258
|
-
);
|
|
1259
|
-
|
|
1260
|
-
// src/components/dev-console/developer-console-modal.tsx
|
|
1261
|
-
var import_shared8 = require("@copilotkit/shared");
|
|
1262
|
-
var import_react8 = require("react");
|
|
1263
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1264
|
-
function DeveloperConsoleModal({ isOpen, onClose, hasApiKey }) {
|
|
1265
|
-
const context = useCopilotContext();
|
|
1266
|
-
const messagesContext = useCopilotMessagesContext();
|
|
1267
|
-
const [activeTab, setActiveTab] = (0, import_react8.useState)("actions");
|
|
1268
|
-
(0, import_react8.useEffect)(() => {
|
|
1269
|
-
const handleEscape = (e) => {
|
|
1270
|
-
if (e.key === "Escape") {
|
|
1271
|
-
onClose();
|
|
1272
|
-
}
|
|
1273
|
-
};
|
|
1274
|
-
if (isOpen) {
|
|
1275
|
-
document.addEventListener("keydown", handleEscape);
|
|
1276
|
-
document.body.style.overflow = "hidden";
|
|
1277
|
-
}
|
|
1278
|
-
return () => {
|
|
1279
|
-
document.removeEventListener("keydown", handleEscape);
|
|
1280
|
-
document.body.style.overflow = "unset";
|
|
1281
|
-
};
|
|
1282
|
-
}, [isOpen, onClose]);
|
|
1283
|
-
if (!isOpen)
|
|
1284
|
-
return null;
|
|
1285
|
-
const displayContext = hasApiKey ? context : {
|
|
1286
|
-
actions: {
|
|
1287
|
-
search_web: { name: "search_web", description: "Search the web for information" },
|
|
1288
|
-
send_email: { name: "send_email", description: "Send an email to a contact" },
|
|
1289
|
-
create_document: { name: "create_document", description: "Create a new document" },
|
|
1290
|
-
analyze_code: {
|
|
1291
|
-
name: "analyze_code",
|
|
1292
|
-
description: "Analyze code for issues and improvements"
|
|
1293
|
-
},
|
|
1294
|
-
generate_tests: {
|
|
1295
|
-
name: "generate_tests",
|
|
1296
|
-
description: "Generate unit tests for functions"
|
|
1297
|
-
}
|
|
1298
|
-
},
|
|
1299
|
-
getAllContext: () => [
|
|
1300
|
-
{
|
|
1301
|
-
content: "User preferences: dark mode enabled, TypeScript preferred",
|
|
1302
|
-
metadata: { source: "settings" }
|
|
1303
|
-
},
|
|
1304
|
-
{
|
|
1305
|
-
content: "Current project: Building a React application with CopilotKit",
|
|
1306
|
-
metadata: { source: "project" }
|
|
1307
|
-
},
|
|
1308
|
-
{
|
|
1309
|
-
content: "Recent activity: Implemented authentication system",
|
|
1310
|
-
metadata: { source: "activity" }
|
|
1311
|
-
},
|
|
1312
|
-
{
|
|
1313
|
-
content: "Development environment: VS Code, Node.js 18, React 18",
|
|
1314
|
-
metadata: { source: "environment" }
|
|
1315
|
-
}
|
|
1316
|
-
],
|
|
1317
|
-
coagentStates: {
|
|
1318
|
-
"main-agent": { status: "active", lastUpdate: Date.now() },
|
|
1319
|
-
"code-assistant": { status: "active", lastUpdate: Date.now() - 15e3 },
|
|
1320
|
-
"search-agent": { status: "idle", lastUpdate: Date.now() - 6e4 }
|
|
1321
|
-
},
|
|
1322
|
-
getDocumentsContext: () => [
|
|
1323
|
-
{
|
|
1324
|
-
content: "README.md: Project setup and installation instructions",
|
|
1325
|
-
metadata: { type: "documentation" }
|
|
1326
|
-
},
|
|
1327
|
-
{
|
|
1328
|
-
content: "API Documentation: CopilotKit integration guide",
|
|
1329
|
-
metadata: { type: "documentation" }
|
|
1330
|
-
},
|
|
1331
|
-
{
|
|
1332
|
-
content: "package.json: Project dependencies and scripts",
|
|
1333
|
-
metadata: { type: "configuration" }
|
|
1334
|
-
}
|
|
1335
|
-
]
|
|
1336
|
-
};
|
|
1337
|
-
const displayMessagesContext = hasApiKey ? messagesContext : {
|
|
1338
|
-
messages: [
|
|
1339
|
-
{
|
|
1340
|
-
id: "1",
|
|
1341
|
-
role: "user",
|
|
1342
|
-
content: "Help me implement a todo list with drag and drop functionality"
|
|
1343
|
-
},
|
|
1344
|
-
{
|
|
1345
|
-
id: "2",
|
|
1346
|
-
role: "assistant",
|
|
1347
|
-
content: "I'll help you create a todo list with drag and drop. Let me start by setting up the basic components and then add the drag and drop functionality using React DnD."
|
|
1348
|
-
},
|
|
1349
|
-
{ id: "3", role: "user", content: "Can you also add priority levels and due dates?" },
|
|
1350
|
-
{
|
|
1351
|
-
id: "4",
|
|
1352
|
-
role: "assistant",
|
|
1353
|
-
content: "Absolutely! I'll enhance the todo items with priority levels (high, medium, low) and due date functionality. This will make your todo list much more powerful for task management."
|
|
1354
|
-
},
|
|
1355
|
-
{ id: "5", role: "user", content: "Perfect! How about adding categories or tags?" }
|
|
1356
|
-
]
|
|
1357
|
-
};
|
|
1358
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1359
|
-
"div",
|
|
1360
|
-
{
|
|
1361
|
-
style: {
|
|
1362
|
-
position: "fixed",
|
|
1363
|
-
top: 0,
|
|
1364
|
-
left: 0,
|
|
1365
|
-
right: 0,
|
|
1366
|
-
bottom: 0,
|
|
1367
|
-
zIndex: 9999,
|
|
1368
|
-
backgroundColor: "rgba(0, 0, 0, 0.3)",
|
|
1369
|
-
display: "flex",
|
|
1370
|
-
alignItems: "center",
|
|
1371
|
-
justifyContent: "center",
|
|
1372
|
-
padding: "16px"
|
|
1373
|
-
},
|
|
1374
|
-
onClick: onClose,
|
|
1375
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1376
|
-
"div",
|
|
1377
|
-
{
|
|
1378
|
-
style: {
|
|
1379
|
-
width: "1152px",
|
|
1380
|
-
maxWidth: "95vw",
|
|
1381
|
-
height: "80vh",
|
|
1382
|
-
backgroundColor: "white",
|
|
1383
|
-
borderRadius: "12px",
|
|
1384
|
-
boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
|
|
1385
|
-
display: "flex",
|
|
1386
|
-
flexDirection: "column",
|
|
1387
|
-
overflow: "hidden",
|
|
1388
|
-
position: "relative"
|
|
1389
|
-
},
|
|
1390
|
-
onClick: (e) => e.stopPropagation(),
|
|
1391
|
-
children: [
|
|
1392
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1393
|
-
"div",
|
|
1394
|
-
{
|
|
1395
|
-
style: {
|
|
1396
|
-
display: "flex",
|
|
1397
|
-
alignItems: "center",
|
|
1398
|
-
justifyContent: "space-between",
|
|
1399
|
-
padding: "24px",
|
|
1400
|
-
borderBottom: "1px solid #e5e7eb",
|
|
1401
|
-
minHeight: "73px",
|
|
1402
|
-
flexShrink: 0,
|
|
1403
|
-
filter: !hasApiKey ? "blur(0.3px)" : "none",
|
|
1404
|
-
opacity: !hasApiKey ? 0.95 : 1
|
|
1405
|
-
},
|
|
1406
|
-
children: [
|
|
1407
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "12px" }, children: [
|
|
1408
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(CopilotKitIcon, {}),
|
|
1409
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1410
|
-
"h1",
|
|
1411
|
-
{
|
|
1412
|
-
style: {
|
|
1413
|
-
fontWeight: "bold",
|
|
1414
|
-
fontSize: "20px",
|
|
1415
|
-
color: "#1f2937",
|
|
1416
|
-
margin: 0
|
|
1417
|
-
},
|
|
1418
|
-
children: "Inspector"
|
|
1419
|
-
}
|
|
1420
|
-
),
|
|
1421
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1422
|
-
"span",
|
|
1423
|
-
{
|
|
1424
|
-
style: {
|
|
1425
|
-
fontSize: "14px",
|
|
1426
|
-
color: "#6b7280",
|
|
1427
|
-
backgroundColor: "#f3f4f6",
|
|
1428
|
-
padding: "4px 8px",
|
|
1429
|
-
borderRadius: "4px"
|
|
1430
|
-
},
|
|
1431
|
-
children: [
|
|
1432
|
-
"v",
|
|
1433
|
-
import_shared8.COPILOTKIT_VERSION
|
|
1434
|
-
]
|
|
1435
|
-
}
|
|
1436
|
-
)
|
|
1437
|
-
] }),
|
|
1438
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1439
|
-
"button",
|
|
1440
|
-
{
|
|
1441
|
-
onClick: onClose,
|
|
1442
|
-
style: {
|
|
1443
|
-
color: "#9ca3af",
|
|
1444
|
-
fontSize: "24px",
|
|
1445
|
-
fontWeight: "300",
|
|
1446
|
-
border: "none",
|
|
1447
|
-
background: "none",
|
|
1448
|
-
cursor: "pointer",
|
|
1449
|
-
padding: "4px"
|
|
1450
|
-
},
|
|
1451
|
-
onMouseEnter: (e) => e.currentTarget.style.color = "#4b5563",
|
|
1452
|
-
onMouseLeave: (e) => e.currentTarget.style.color = "#9ca3af",
|
|
1453
|
-
children: "\xD7"
|
|
1454
|
-
}
|
|
1455
|
-
)
|
|
1456
|
-
]
|
|
1457
|
-
}
|
|
1458
|
-
),
|
|
1459
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1460
|
-
"div",
|
|
1461
|
-
{
|
|
1462
|
-
style: {
|
|
1463
|
-
display: "flex",
|
|
1464
|
-
borderBottom: "1px solid #e5e7eb",
|
|
1465
|
-
backgroundColor: "#f9fafb",
|
|
1466
|
-
minHeight: "50px",
|
|
1467
|
-
flexShrink: 0,
|
|
1468
|
-
filter: !hasApiKey ? "blur(0.3px)" : "none",
|
|
1469
|
-
opacity: !hasApiKey ? 0.9 : 1
|
|
1470
|
-
},
|
|
1471
|
-
children: [
|
|
1472
|
-
{ id: "actions", label: "Actions", count: Object.keys(displayContext.actions).length },
|
|
1473
|
-
{ id: "readables", label: "Readables", count: displayContext.getAllContext().length },
|
|
1474
|
-
{
|
|
1475
|
-
id: "agent",
|
|
1476
|
-
label: "Agent Status",
|
|
1477
|
-
count: Object.keys(displayContext.coagentStates).length
|
|
1478
|
-
},
|
|
1479
|
-
{ id: "messages", label: "Messages", count: displayMessagesContext.messages.length },
|
|
1480
|
-
{
|
|
1481
|
-
id: "context",
|
|
1482
|
-
label: "Context",
|
|
1483
|
-
count: displayContext.getDocumentsContext([]).length
|
|
1484
|
-
}
|
|
1485
|
-
].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1486
|
-
"button",
|
|
1487
|
-
{
|
|
1488
|
-
onClick: () => setActiveTab(tab.id),
|
|
1489
|
-
style: {
|
|
1490
|
-
padding: "12px 24px",
|
|
1491
|
-
fontSize: "14px",
|
|
1492
|
-
fontWeight: "500",
|
|
1493
|
-
border: "none",
|
|
1494
|
-
cursor: "pointer",
|
|
1495
|
-
backgroundColor: activeTab === tab.id ? "white" : "transparent",
|
|
1496
|
-
color: activeTab === tab.id ? "#2563eb" : "#6b7280",
|
|
1497
|
-
borderBottom: activeTab === tab.id ? "2px solid #2563eb" : "none",
|
|
1498
|
-
transition: "all 0.2s"
|
|
1499
|
-
},
|
|
1500
|
-
onMouseEnter: (e) => {
|
|
1501
|
-
if (activeTab !== tab.id) {
|
|
1502
|
-
e.currentTarget.style.color = "#1f2937";
|
|
1503
|
-
e.currentTarget.style.backgroundColor = "#f3f4f6";
|
|
1504
|
-
}
|
|
1505
|
-
},
|
|
1506
|
-
onMouseLeave: (e) => {
|
|
1507
|
-
if (activeTab !== tab.id) {
|
|
1508
|
-
e.currentTarget.style.color = "#6b7280";
|
|
1509
|
-
e.currentTarget.style.backgroundColor = "transparent";
|
|
1510
|
-
}
|
|
1511
|
-
},
|
|
1512
|
-
children: [
|
|
1513
|
-
tab.label,
|
|
1514
|
-
tab.count > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1515
|
-
"span",
|
|
1516
|
-
{
|
|
1517
|
-
style: {
|
|
1518
|
-
marginLeft: "8px",
|
|
1519
|
-
backgroundColor: "#e5e7eb",
|
|
1520
|
-
color: "#374151",
|
|
1521
|
-
padding: "2px 8px",
|
|
1522
|
-
borderRadius: "9999px",
|
|
1523
|
-
fontSize: "12px"
|
|
1524
|
-
},
|
|
1525
|
-
children: tab.count
|
|
1526
|
-
}
|
|
1527
|
-
)
|
|
1528
|
-
]
|
|
1529
|
-
},
|
|
1530
|
-
tab.id
|
|
1531
|
-
))
|
|
1532
|
-
}
|
|
1533
|
-
),
|
|
1534
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1535
|
-
"div",
|
|
1536
|
-
{
|
|
1537
|
-
style: {
|
|
1538
|
-
height: "calc(100% - 142px)",
|
|
1539
|
-
overflow: "auto",
|
|
1540
|
-
padding: "24px",
|
|
1541
|
-
backgroundColor: "#f9fafb",
|
|
1542
|
-
filter: !hasApiKey ? "blur(0.3px)" : "none",
|
|
1543
|
-
opacity: !hasApiKey ? 0.85 : 1
|
|
1544
|
-
},
|
|
1545
|
-
children: [
|
|
1546
|
-
activeTab === "actions" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ActionsTab, { context: displayContext }),
|
|
1547
|
-
activeTab === "readables" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ReadablesTab, { context: displayContext }),
|
|
1548
|
-
activeTab === "agent" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(AgentStatusTab, { context: displayContext }),
|
|
1549
|
-
activeTab === "messages" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(MessagesTab, { messagesContext: displayMessagesContext }),
|
|
1550
|
-
activeTab === "context" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ContextTab, { context: displayContext })
|
|
1551
|
-
]
|
|
1552
|
-
}
|
|
1553
|
-
),
|
|
1554
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1555
|
-
"div",
|
|
1556
|
-
{
|
|
1557
|
-
style: {
|
|
1558
|
-
padding: "16px 24px",
|
|
1559
|
-
borderTop: "1px solid #e5e7eb",
|
|
1560
|
-
backgroundColor: "white",
|
|
1561
|
-
display: "flex",
|
|
1562
|
-
justifyContent: "space-between",
|
|
1563
|
-
alignItems: "center",
|
|
1564
|
-
minHeight: "57px",
|
|
1565
|
-
flexShrink: 0,
|
|
1566
|
-
filter: !hasApiKey ? "blur(0.3px)" : "none",
|
|
1567
|
-
opacity: !hasApiKey ? 0.9 : 1
|
|
1568
|
-
},
|
|
1569
|
-
children: [
|
|
1570
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { fontSize: "14px", color: "#6b7280" }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1571
|
-
"a",
|
|
1572
|
-
{
|
|
1573
|
-
href: "https://github.com/CopilotKit/CopilotKit/issues",
|
|
1574
|
-
target: "_blank",
|
|
1575
|
-
rel: "noopener noreferrer",
|
|
1576
|
-
style: { color: "#2563eb", textDecoration: "none" },
|
|
1577
|
-
onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
|
|
1578
|
-
onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
|
|
1579
|
-
children: "Report an issue"
|
|
1580
|
-
}
|
|
1581
|
-
) }),
|
|
1582
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { fontSize: "14px", color: "#6b7280" }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1583
|
-
"a",
|
|
1584
|
-
{
|
|
1585
|
-
href: "https://mcp.copilotkit.ai/",
|
|
1586
|
-
target: "_blank",
|
|
1587
|
-
rel: "noopener noreferrer",
|
|
1588
|
-
style: { color: "#2563eb", textDecoration: "none" },
|
|
1589
|
-
onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
|
|
1590
|
-
onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
|
|
1591
|
-
children: "Add MCP Server \u2192"
|
|
1592
|
-
}
|
|
1593
|
-
) })
|
|
1594
|
-
]
|
|
1595
|
-
}
|
|
1596
|
-
),
|
|
1597
|
-
!hasApiKey && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1598
|
-
"div",
|
|
1599
|
-
{
|
|
1600
|
-
style: {
|
|
1601
|
-
position: "absolute",
|
|
1602
|
-
top: 0,
|
|
1603
|
-
left: 0,
|
|
1604
|
-
right: 0,
|
|
1605
|
-
bottom: 0,
|
|
1606
|
-
backgroundColor: "rgba(255, 255, 255, 0.2)",
|
|
1607
|
-
backdropFilter: "blur(2px)",
|
|
1608
|
-
WebkitBackdropFilter: "blur(2px)",
|
|
1609
|
-
display: "flex",
|
|
1610
|
-
alignItems: "center",
|
|
1611
|
-
justifyContent: "center",
|
|
1612
|
-
borderRadius: "12px",
|
|
1613
|
-
zIndex: 10
|
|
1614
|
-
},
|
|
1615
|
-
onClick: (e) => e.stopPropagation(),
|
|
1616
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1617
|
-
"button",
|
|
1618
|
-
{
|
|
1619
|
-
onClick: () => window.open("https://cloud.copilotkit.ai/sign-in", "_blank"),
|
|
1620
|
-
style: {
|
|
1621
|
-
// Following button system specifications
|
|
1622
|
-
height: "48px",
|
|
1623
|
-
padding: "12px 24px",
|
|
1624
|
-
backgroundColor: "#030507",
|
|
1625
|
-
// textPrimary token
|
|
1626
|
-
color: "#FFFFFF",
|
|
1627
|
-
borderRadius: "12px",
|
|
1628
|
-
// Medium radius token
|
|
1629
|
-
border: "none",
|
|
1630
|
-
cursor: "pointer",
|
|
1631
|
-
fontSize: "14px",
|
|
1632
|
-
// Medium Semi Bold typography
|
|
1633
|
-
fontWeight: "600",
|
|
1634
|
-
fontFamily: "'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif",
|
|
1635
|
-
lineHeight: "22px",
|
|
1636
|
-
boxShadow: "0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)",
|
|
1637
|
-
transition: "all 200ms ease",
|
|
1638
|
-
// 200ms ease as per specs
|
|
1639
|
-
display: "inline-flex",
|
|
1640
|
-
alignItems: "center",
|
|
1641
|
-
gap: "8px",
|
|
1642
|
-
textTransform: "uppercase",
|
|
1643
|
-
letterSpacing: "0.5px"
|
|
1644
|
-
},
|
|
1645
|
-
onMouseEnter: (e) => {
|
|
1646
|
-
e.currentTarget.style.backgroundColor = "#575758";
|
|
1647
|
-
e.currentTarget.style.transform = "translateY(-1px)";
|
|
1648
|
-
e.currentTarget.style.boxShadow = "0 6px 20px rgba(3, 5, 7, 0.25), 0 2px 4px rgba(3, 5, 7, 0.15)";
|
|
1649
|
-
},
|
|
1650
|
-
onMouseLeave: (e) => {
|
|
1651
|
-
e.currentTarget.style.backgroundColor = "#030507";
|
|
1652
|
-
e.currentTarget.style.transform = "translateY(0)";
|
|
1653
|
-
e.currentTarget.style.boxShadow = "0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)";
|
|
1654
|
-
},
|
|
1655
|
-
onMouseDown: (e) => {
|
|
1656
|
-
e.currentTarget.style.backgroundColor = "#858589";
|
|
1657
|
-
e.currentTarget.style.transform = "translateY(0)";
|
|
1658
|
-
},
|
|
1659
|
-
onMouseUp: (e) => {
|
|
1660
|
-
e.currentTarget.style.backgroundColor = "#575758";
|
|
1661
|
-
e.currentTarget.style.transform = "translateY(-1px)";
|
|
1662
|
-
},
|
|
1663
|
-
onFocus: (e) => {
|
|
1664
|
-
e.currentTarget.style.outline = "2px solid #BEC9FF";
|
|
1665
|
-
e.currentTarget.style.outlineOffset = "2px";
|
|
1666
|
-
},
|
|
1667
|
-
onBlur: (e) => {
|
|
1668
|
-
e.currentTarget.style.outline = "none";
|
|
1669
|
-
},
|
|
1670
|
-
children: [
|
|
1671
|
-
"Get License Key",
|
|
1672
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { fontSize: "16px", marginLeft: "-4px" }, children: "\u2192" })
|
|
1673
|
-
]
|
|
1674
|
-
}
|
|
1675
|
-
)
|
|
1676
|
-
}
|
|
1677
|
-
)
|
|
1678
|
-
]
|
|
1679
|
-
}
|
|
1680
|
-
)
|
|
1681
|
-
}
|
|
1682
|
-
);
|
|
1683
|
-
}
|
|
1684
|
-
function ActionsTab({ context }) {
|
|
1685
|
-
const actions = Object.values(context.actions);
|
|
1686
|
-
if (actions.length === 0) {
|
|
1687
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
1688
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No actions available" }),
|
|
1689
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Actions will appear here when registered" })
|
|
1690
|
-
] });
|
|
1691
|
-
}
|
|
1692
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: actions.map((action, index) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1693
|
-
"div",
|
|
1694
|
-
{
|
|
1695
|
-
style: {
|
|
1696
|
-
backgroundColor: "white",
|
|
1697
|
-
padding: "16px",
|
|
1698
|
-
borderRadius: "8px",
|
|
1699
|
-
boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
|
|
1700
|
-
border: "1px solid #e5e7eb"
|
|
1701
|
-
},
|
|
1702
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1703
|
-
"div",
|
|
1704
|
-
{
|
|
1705
|
-
style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" },
|
|
1706
|
-
children: [
|
|
1707
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { flex: 1 }, children: [
|
|
1708
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 4px 0" }, children: action.name }),
|
|
1709
|
-
action.description && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", color: "#4b5563", margin: "0 0 12px 0" }, children: action.description }),
|
|
1710
|
-
action.parameters && action.parameters.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { marginTop: "12px" }, children: [
|
|
1711
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1712
|
-
"p",
|
|
1713
|
-
{
|
|
1714
|
-
style: {
|
|
1715
|
-
fontSize: "12px",
|
|
1716
|
-
fontWeight: "500",
|
|
1717
|
-
color: "#6b7280",
|
|
1718
|
-
textTransform: "uppercase",
|
|
1719
|
-
margin: "0 0 4px 0"
|
|
1720
|
-
},
|
|
1721
|
-
children: "Parameters:"
|
|
1722
|
-
}
|
|
1723
|
-
),
|
|
1724
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: action.parameters.map((param, pIndex) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { fontSize: "14px" }, children: [
|
|
1725
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { fontFamily: "monospace", color: "#374151" }, children: param.name }),
|
|
1726
|
-
param.required && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { marginLeft: "4px", fontSize: "12px", color: "#ef4444" }, children: "*required" }),
|
|
1727
|
-
param.type && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { style: { marginLeft: "8px", fontSize: "12px", color: "#6b7280" }, children: [
|
|
1728
|
-
"(",
|
|
1729
|
-
param.type,
|
|
1730
|
-
")"
|
|
1731
|
-
] })
|
|
1732
|
-
] }, pIndex)) })
|
|
1733
|
-
] })
|
|
1734
|
-
] }),
|
|
1735
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { marginLeft: "16px" }, children: action.status === "available" ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(CheckIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ExclamationMarkTriangleIcon, {}) })
|
|
1736
|
-
]
|
|
1737
|
-
}
|
|
1738
|
-
)
|
|
1739
|
-
},
|
|
1740
|
-
index
|
|
1741
|
-
)) });
|
|
1742
|
-
}
|
|
1743
|
-
function ReadablesTab({ context }) {
|
|
1744
|
-
const readables = context.getAllContext();
|
|
1745
|
-
if (readables.length === 0) {
|
|
1746
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
1747
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No readable context available" }),
|
|
1748
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Readable context will appear here when provided" })
|
|
1749
|
-
] });
|
|
1750
|
-
}
|
|
1751
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: readables.map((readable, index) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1752
|
-
"div",
|
|
1753
|
-
{
|
|
1754
|
-
style: {
|
|
1755
|
-
backgroundColor: "white",
|
|
1756
|
-
padding: "16px",
|
|
1757
|
-
borderRadius: "8px",
|
|
1758
|
-
boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
|
|
1759
|
-
border: "1px solid #e5e7eb"
|
|
1760
|
-
},
|
|
1761
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1762
|
-
"div",
|
|
1763
|
-
{
|
|
1764
|
-
style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" },
|
|
1765
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { flex: 1 }, children: [
|
|
1766
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 4px 0" }, children: readable.name || `Readable ${index + 1}` }),
|
|
1767
|
-
readable.description && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", color: "#4b5563", margin: "0 0 12px 0" }, children: readable.description }),
|
|
1768
|
-
readable.value && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1769
|
-
"pre",
|
|
1770
|
-
{
|
|
1771
|
-
style: {
|
|
1772
|
-
marginTop: "12px",
|
|
1773
|
-
padding: "8px",
|
|
1774
|
-
backgroundColor: "#f9fafb",
|
|
1775
|
-
borderRadius: "4px",
|
|
1776
|
-
fontSize: "12px",
|
|
1777
|
-
overflowX: "auto",
|
|
1778
|
-
margin: "12px 0 0 0"
|
|
1779
|
-
},
|
|
1780
|
-
children: JSON.stringify(readable.value, null, 2)
|
|
1781
|
-
}
|
|
1782
|
-
)
|
|
1783
|
-
] })
|
|
1784
|
-
}
|
|
1785
|
-
)
|
|
1786
|
-
},
|
|
1787
|
-
index
|
|
1788
|
-
)) });
|
|
1789
|
-
}
|
|
1790
|
-
function AgentStatusTab({ context }) {
|
|
1791
|
-
const agentStates = context.coagentStates || {};
|
|
1792
|
-
const agentStateEntries = Object.entries(agentStates);
|
|
1793
|
-
if (agentStateEntries.length === 0) {
|
|
1794
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
1795
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No agent states available" }),
|
|
1796
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Agent states will appear here when agents are active" })
|
|
1797
|
-
] });
|
|
1798
|
-
}
|
|
1799
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "24px" }, children: agentStateEntries.map(([agentName, state]) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1800
|
-
"div",
|
|
1801
|
-
{
|
|
1802
|
-
style: {
|
|
1803
|
-
backgroundColor: "white",
|
|
1804
|
-
padding: "24px",
|
|
1805
|
-
borderRadius: "8px",
|
|
1806
|
-
boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
|
|
1807
|
-
border: "1px solid #e5e7eb"
|
|
1808
|
-
},
|
|
1809
|
-
children: [
|
|
1810
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1811
|
-
"div",
|
|
1812
|
-
{
|
|
1813
|
-
style: {
|
|
1814
|
-
display: "flex",
|
|
1815
|
-
alignItems: "center",
|
|
1816
|
-
justifyContent: "space-between",
|
|
1817
|
-
marginBottom: "16px"
|
|
1818
|
-
},
|
|
1819
|
-
children: [
|
|
1820
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontWeight: "600", fontSize: "18px", color: "#1f2937", margin: 0 }, children: agentName }),
|
|
1821
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1822
|
-
"span",
|
|
1823
|
-
{
|
|
1824
|
-
style: {
|
|
1825
|
-
padding: "4px 12px",
|
|
1826
|
-
borderRadius: "9999px",
|
|
1827
|
-
fontSize: "12px",
|
|
1828
|
-
fontWeight: "500",
|
|
1829
|
-
backgroundColor: state.status === "running" ? "#dcfce7" : state.status === "complete" ? "#dbeafe" : "#f3f4f6",
|
|
1830
|
-
color: state.status === "running" ? "#166534" : state.status === "complete" ? "#1e40af" : "#1f2937"
|
|
1831
|
-
},
|
|
1832
|
-
children: state.status || "idle"
|
|
1833
|
-
}
|
|
1834
|
-
)
|
|
1835
|
-
]
|
|
1836
|
-
}
|
|
1837
|
-
),
|
|
1838
|
-
state.state && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { marginBottom: "12px" }, children: [
|
|
1839
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1840
|
-
"p",
|
|
1841
|
-
{
|
|
1842
|
-
style: {
|
|
1843
|
-
fontSize: "12px",
|
|
1844
|
-
fontWeight: "500",
|
|
1845
|
-
color: "#6b7280",
|
|
1846
|
-
textTransform: "uppercase",
|
|
1847
|
-
margin: "0 0 4px 0"
|
|
1848
|
-
},
|
|
1849
|
-
children: "Current State:"
|
|
1850
|
-
}
|
|
1851
|
-
),
|
|
1852
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1853
|
-
"pre",
|
|
1854
|
-
{
|
|
1855
|
-
style: {
|
|
1856
|
-
padding: "12px",
|
|
1857
|
-
backgroundColor: "#f9fafb",
|
|
1858
|
-
borderRadius: "4px",
|
|
1859
|
-
fontSize: "12px",
|
|
1860
|
-
overflowX: "auto",
|
|
1861
|
-
margin: 0
|
|
1862
|
-
},
|
|
1863
|
-
children: JSON.stringify(state.state, null, 2)
|
|
1864
|
-
}
|
|
1865
|
-
)
|
|
1866
|
-
] }),
|
|
1867
|
-
state.running && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1868
|
-
"div",
|
|
1869
|
-
{
|
|
1870
|
-
style: {
|
|
1871
|
-
marginTop: "16px",
|
|
1872
|
-
display: "flex",
|
|
1873
|
-
alignItems: "center",
|
|
1874
|
-
fontSize: "14px",
|
|
1875
|
-
color: "#4b5563"
|
|
1876
|
-
},
|
|
1877
|
-
children: [
|
|
1878
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { marginRight: "8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1879
|
-
"svg",
|
|
1880
|
-
{
|
|
1881
|
-
width: "16",
|
|
1882
|
-
height: "16",
|
|
1883
|
-
viewBox: "0 0 16 16",
|
|
1884
|
-
style: { animation: "spin 1s linear infinite" },
|
|
1885
|
-
children: [
|
|
1886
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("style", { children: `@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }` }),
|
|
1887
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1888
|
-
"circle",
|
|
1889
|
-
{
|
|
1890
|
-
cx: "8",
|
|
1891
|
-
cy: "8",
|
|
1892
|
-
r: "6",
|
|
1893
|
-
fill: "none",
|
|
1894
|
-
stroke: "#4b5563",
|
|
1895
|
-
strokeWidth: "2",
|
|
1896
|
-
strokeDasharray: "9 3"
|
|
1897
|
-
}
|
|
1898
|
-
)
|
|
1899
|
-
]
|
|
1900
|
-
}
|
|
1901
|
-
) }),
|
|
1902
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: "Agent is currently running..." })
|
|
1903
|
-
]
|
|
1904
|
-
}
|
|
1905
|
-
)
|
|
1906
|
-
]
|
|
1907
|
-
},
|
|
1908
|
-
agentName
|
|
1909
|
-
)) });
|
|
1910
|
-
}
|
|
1911
|
-
function MessagesTab({ messagesContext }) {
|
|
1912
|
-
const messages = messagesContext.messages || [];
|
|
1913
|
-
if (messages.length === 0) {
|
|
1914
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
1915
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No messages yet" }),
|
|
1916
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Messages will appear here as the conversation progresses" })
|
|
1917
|
-
] });
|
|
1918
|
-
}
|
|
1919
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: messages.map((message, index) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1920
|
-
"div",
|
|
1921
|
-
{
|
|
1922
|
-
style: {
|
|
1923
|
-
padding: "16px",
|
|
1924
|
-
borderRadius: "8px",
|
|
1925
|
-
backgroundColor: message.role === "user" ? "#eff6ff" : message.role === "assistant" ? "#f9fafb" : "#fefce8",
|
|
1926
|
-
border: `1px solid ${message.role === "user" ? "#c7d2fe" : message.role === "assistant" ? "#e5e7eb" : "#fde047"}`,
|
|
1927
|
-
marginLeft: message.role === "user" ? "48px" : "0",
|
|
1928
|
-
marginRight: message.role === "assistant" ? "48px" : "0"
|
|
1929
|
-
},
|
|
1930
|
-
children: [
|
|
1931
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1932
|
-
"div",
|
|
1933
|
-
{
|
|
1934
|
-
style: {
|
|
1935
|
-
display: "flex",
|
|
1936
|
-
alignItems: "flex-start",
|
|
1937
|
-
justifyContent: "space-between",
|
|
1938
|
-
marginBottom: "8px"
|
|
1939
|
-
},
|
|
1940
|
-
children: [
|
|
1941
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1942
|
-
"span",
|
|
1943
|
-
{
|
|
1944
|
-
style: {
|
|
1945
|
-
fontWeight: "500",
|
|
1946
|
-
fontSize: "14px",
|
|
1947
|
-
color: "#374151",
|
|
1948
|
-
textTransform: "capitalize"
|
|
1949
|
-
},
|
|
1950
|
-
children: message.role || "system"
|
|
1951
|
-
}
|
|
1952
|
-
),
|
|
1953
|
-
message.timestamp && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { fontSize: "12px", color: "#6b7280" }, children: new Date(message.timestamp).toLocaleTimeString() })
|
|
1954
|
-
]
|
|
1955
|
-
}
|
|
1956
|
-
),
|
|
1957
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { fontSize: "14px", color: "#1f2937", whiteSpace: "pre-wrap" }, children: message.content || "" })
|
|
1958
|
-
]
|
|
1959
|
-
},
|
|
1960
|
-
index
|
|
1961
|
-
)) });
|
|
1962
|
-
}
|
|
1963
|
-
function ContextTab({ context }) {
|
|
1964
|
-
const documents = context.getDocumentsContext([]);
|
|
1965
|
-
if (documents.length === 0) {
|
|
1966
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
1967
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No document context available" }),
|
|
1968
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Document context will appear here when provided" })
|
|
1969
|
-
] });
|
|
1970
|
-
}
|
|
1971
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: documents.map((doc, index) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1972
|
-
"div",
|
|
1973
|
-
{
|
|
1974
|
-
style: {
|
|
1975
|
-
backgroundColor: "white",
|
|
1976
|
-
padding: "16px",
|
|
1977
|
-
borderRadius: "8px",
|
|
1978
|
-
boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
|
|
1979
|
-
border: "1px solid #e5e7eb"
|
|
1980
|
-
},
|
|
1981
|
-
children: [
|
|
1982
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 8px 0" }, children: doc.name || `Document ${index + 1}` }),
|
|
1983
|
-
doc.content && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1984
|
-
"pre",
|
|
1985
|
-
{
|
|
1986
|
-
style: {
|
|
1987
|
-
padding: "12px",
|
|
1988
|
-
backgroundColor: "#f9fafb",
|
|
1989
|
-
borderRadius: "4px",
|
|
1990
|
-
fontSize: "12px",
|
|
1991
|
-
overflowX: "auto",
|
|
1992
|
-
margin: 0
|
|
1993
|
-
},
|
|
1994
|
-
children: doc.content
|
|
1995
|
-
}
|
|
1996
|
-
)
|
|
1997
|
-
]
|
|
1998
|
-
},
|
|
1999
|
-
index
|
|
2000
|
-
)) });
|
|
2001
|
-
}
|
|
2002
|
-
|
|
2003
|
-
// src/components/dev-console/console-trigger.tsx
|
|
2004
|
-
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
2005
|
-
var INSPECTOR_HIDE_KEY = "cpk:inspector:hidden";
|
|
2006
|
-
function ConsoleTrigger({ position = "bottom-right" }) {
|
|
2007
|
-
const context = useCopilotContext();
|
|
2008
|
-
const hasApiKey = Boolean(context.copilotApiConfig.publicApiKey);
|
|
2009
|
-
const [isModalOpen, setIsModalOpen] = (0, import_react9.useState)(false);
|
|
2010
|
-
const [isHovered, setIsHovered] = (0, import_react9.useState)(false);
|
|
2011
|
-
const [isDragging, setIsDragging] = (0, import_react9.useState)(false);
|
|
2012
|
-
const [buttonPosition, setButtonPosition] = (0, import_react9.useState)(null);
|
|
2013
|
-
const [mounted, setMounted] = (0, import_react9.useState)(false);
|
|
2014
|
-
const [isHidden, setIsHidden] = (0, import_react9.useState)(false);
|
|
2015
|
-
const dragRef = (0, import_react9.useRef)(null);
|
|
2016
|
-
const buttonRef = (0, import_react9.useRef)(null);
|
|
2017
|
-
(0, import_react9.useEffect)(() => {
|
|
2018
|
-
setMounted(true);
|
|
2019
|
-
try {
|
|
2020
|
-
const hidden = typeof window !== "undefined" ? localStorage.getItem(INSPECTOR_HIDE_KEY) : null;
|
|
2021
|
-
if (hidden === "1" || hidden === "true") {
|
|
2022
|
-
setIsHidden(true);
|
|
2023
|
-
}
|
|
2024
|
-
} catch (e) {
|
|
2025
|
-
}
|
|
2026
|
-
if (typeof window !== "undefined" && !buttonPosition) {
|
|
2027
|
-
const buttonSize = 60;
|
|
2028
|
-
const margin = 24;
|
|
2029
|
-
const initialPosition = {
|
|
2030
|
-
x: margin,
|
|
2031
|
-
y: window.innerHeight - buttonSize - margin
|
|
2032
|
-
};
|
|
2033
|
-
setButtonPosition(initialPosition);
|
|
2034
|
-
}
|
|
2035
|
-
}, [position]);
|
|
2036
|
-
const handleMouseDown = (e) => {
|
|
2037
|
-
e.preventDefault();
|
|
2038
|
-
if (!buttonPosition)
|
|
2039
|
-
return;
|
|
2040
|
-
dragRef.current = {
|
|
2041
|
-
startX: e.clientX,
|
|
2042
|
-
startY: e.clientY,
|
|
2043
|
-
buttonX: buttonPosition.x,
|
|
2044
|
-
buttonY: buttonPosition.y
|
|
2045
|
-
};
|
|
2046
|
-
setIsDragging(true);
|
|
2047
|
-
};
|
|
2048
|
-
(0, import_react9.useEffect)(() => {
|
|
2049
|
-
if (!isDragging)
|
|
2050
|
-
return;
|
|
2051
|
-
const handleMouseMove = (e) => {
|
|
2052
|
-
e.preventDefault();
|
|
2053
|
-
e.stopPropagation();
|
|
2054
|
-
if (!dragRef.current)
|
|
2055
|
-
return;
|
|
2056
|
-
const deltaX = e.clientX - dragRef.current.startX;
|
|
2057
|
-
const deltaY = e.clientY - dragRef.current.startY;
|
|
2058
|
-
let newX = dragRef.current.buttonX + deltaX;
|
|
2059
|
-
let newY = dragRef.current.buttonY + deltaY;
|
|
2060
|
-
newX = Math.max(0, Math.min(newX, window.innerWidth - 60));
|
|
2061
|
-
newY = Math.max(0, Math.min(newY, window.innerHeight - 60));
|
|
2062
|
-
setButtonPosition({ x: newX, y: newY });
|
|
2063
|
-
};
|
|
2064
|
-
const handleMouseUp = (e) => {
|
|
2065
|
-
e.preventDefault();
|
|
2066
|
-
e.stopPropagation();
|
|
2067
|
-
setIsDragging(false);
|
|
2068
|
-
dragRef.current = null;
|
|
2069
|
-
};
|
|
2070
|
-
document.addEventListener("mousemove", handleMouseMove, { capture: true, passive: false });
|
|
2071
|
-
document.addEventListener("mouseup", handleMouseUp, { capture: true, passive: false });
|
|
2072
|
-
return () => {
|
|
2073
|
-
document.removeEventListener("mousemove", handleMouseMove, { capture: true });
|
|
2074
|
-
document.removeEventListener("mouseup", handleMouseUp, { capture: true });
|
|
2075
|
-
};
|
|
2076
|
-
}, [isDragging]);
|
|
2077
|
-
if (!mounted || !buttonPosition || isHidden) {
|
|
2078
|
-
return null;
|
|
2079
|
-
}
|
|
2080
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
2081
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
2082
|
-
"button",
|
|
2083
|
-
{
|
|
2084
|
-
ref: buttonRef,
|
|
2085
|
-
onClick: (e) => {
|
|
2086
|
-
if (!isDragging) {
|
|
2087
|
-
if (e.metaKey || e.altKey) {
|
|
2088
|
-
try {
|
|
2089
|
-
localStorage.setItem(INSPECTOR_HIDE_KEY, "1");
|
|
2090
|
-
} catch (e2) {
|
|
2091
|
-
}
|
|
2092
|
-
setIsHidden(true);
|
|
2093
|
-
return;
|
|
2094
|
-
}
|
|
2095
|
-
setIsModalOpen(true);
|
|
2096
|
-
}
|
|
2097
|
-
},
|
|
2098
|
-
onContextMenu: (e) => {
|
|
2099
|
-
e.preventDefault();
|
|
2100
|
-
try {
|
|
2101
|
-
localStorage.setItem(INSPECTOR_HIDE_KEY, "1");
|
|
2102
|
-
} catch (e2) {
|
|
2103
|
-
}
|
|
2104
|
-
setIsHidden(true);
|
|
2105
|
-
},
|
|
2106
|
-
onMouseDown: handleMouseDown,
|
|
2107
|
-
onMouseEnter: () => setIsHovered(true),
|
|
2108
|
-
onMouseLeave: () => setIsHovered(false),
|
|
2109
|
-
style: {
|
|
2110
|
-
position: "fixed",
|
|
2111
|
-
left: `${buttonPosition.x}px`,
|
|
2112
|
-
top: `${buttonPosition.y}px`,
|
|
2113
|
-
zIndex: 2147483647,
|
|
2114
|
-
width: "60px",
|
|
2115
|
-
height: "60px",
|
|
2116
|
-
background: isDragging ? "#000000" : isHovered ? "#111111" : "#000000",
|
|
2117
|
-
color: "white",
|
|
2118
|
-
borderRadius: "50%",
|
|
2119
|
-
boxShadow: isDragging ? "0 8px 32px rgba(0, 0, 0, 0.6), 0 4px 16px rgba(0, 0, 0, 0.4)" : isHovered ? "0 12px 40px rgba(0, 0, 0, 0.7), 0 6px 20px rgba(0, 0, 0, 0.5)" : "0 6px 20px rgba(0, 0, 0, 0.5), 0 3px 10px rgba(0, 0, 0, 0.3)",
|
|
2120
|
-
transition: isDragging ? "none" : "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
2121
|
-
display: "flex",
|
|
2122
|
-
alignItems: "center",
|
|
2123
|
-
justifyContent: "center",
|
|
2124
|
-
border: "none",
|
|
2125
|
-
cursor: isDragging ? "grabbing" : "grab",
|
|
2126
|
-
opacity: 1,
|
|
2127
|
-
userSelect: "none",
|
|
2128
|
-
transform: isDragging ? "scale(1.05)" : isHovered ? "scale(1.1)" : "scale(1)",
|
|
2129
|
-
backdropFilter: "blur(10px)",
|
|
2130
|
-
pointerEvents: "auto",
|
|
2131
|
-
isolation: "isolate"
|
|
2132
|
-
},
|
|
2133
|
-
title: hasApiKey ? "Open Inspector (Drag to move)" : "Inspector (License Key Required, Drag to move)",
|
|
2134
|
-
children: [
|
|
2135
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2136
|
-
"div",
|
|
2137
|
-
{
|
|
2138
|
-
onClick: (e) => {
|
|
2139
|
-
e.preventDefault();
|
|
2140
|
-
e.stopPropagation();
|
|
2141
|
-
try {
|
|
2142
|
-
localStorage.setItem(INSPECTOR_HIDE_KEY, "1");
|
|
2143
|
-
} catch (e2) {
|
|
2144
|
-
}
|
|
2145
|
-
setIsHidden(true);
|
|
2146
|
-
},
|
|
2147
|
-
style: {
|
|
2148
|
-
position: "absolute",
|
|
2149
|
-
bottom: "2px",
|
|
2150
|
-
right: "2px",
|
|
2151
|
-
width: "20px",
|
|
2152
|
-
height: "20px",
|
|
2153
|
-
borderRadius: "50%",
|
|
2154
|
-
background: "#ffffff",
|
|
2155
|
-
color: "#ef4444",
|
|
2156
|
-
fontSize: "14px",
|
|
2157
|
-
lineHeight: "18px",
|
|
2158
|
-
textAlign: "center",
|
|
2159
|
-
boxShadow: "0 2px 6px rgba(0,0,0,0.35)",
|
|
2160
|
-
cursor: "pointer",
|
|
2161
|
-
border: "1px solid #e5e7eb",
|
|
2162
|
-
display: "flex",
|
|
2163
|
-
alignItems: "center",
|
|
2164
|
-
justifyContent: "center",
|
|
2165
|
-
zIndex: 1
|
|
2166
|
-
},
|
|
2167
|
-
title: "Hide Inspector",
|
|
2168
|
-
children: "\xD7"
|
|
2169
|
-
}
|
|
2170
|
-
),
|
|
2171
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2172
|
-
"div",
|
|
2173
|
-
{
|
|
2174
|
-
style: {
|
|
2175
|
-
width: "28px",
|
|
2176
|
-
height: "28px",
|
|
2177
|
-
display: "flex",
|
|
2178
|
-
alignItems: "center",
|
|
2179
|
-
justifyContent: "center",
|
|
2180
|
-
filter: "drop-shadow(0 2px 4px rgba(0,0,0,0.2))"
|
|
2181
|
-
},
|
|
2182
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopilotKitIcon, {})
|
|
2183
|
-
}
|
|
2184
|
-
),
|
|
2185
|
-
!hasApiKey && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2186
|
-
"div",
|
|
2187
|
-
{
|
|
2188
|
-
style: {
|
|
2189
|
-
position: "absolute",
|
|
2190
|
-
top: "-2px",
|
|
2191
|
-
right: "-2px",
|
|
2192
|
-
width: "18px",
|
|
2193
|
-
height: "18px",
|
|
2194
|
-
background: "linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%)",
|
|
2195
|
-
borderRadius: "50%",
|
|
2196
|
-
display: "flex",
|
|
2197
|
-
alignItems: "center",
|
|
2198
|
-
justifyContent: "center",
|
|
2199
|
-
boxShadow: "0 2px 8px rgba(255, 107, 107, 0.4)",
|
|
2200
|
-
border: "2px solid white"
|
|
2201
|
-
},
|
|
2202
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { style: { fontSize: "10px", color: "white", fontWeight: "bold" }, children: "!" })
|
|
2203
|
-
}
|
|
2204
|
-
)
|
|
2205
|
-
]
|
|
2206
|
-
}
|
|
2207
|
-
),
|
|
2208
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2209
|
-
DeveloperConsoleModal,
|
|
2210
|
-
{
|
|
2211
|
-
isOpen: isModalOpen,
|
|
2212
|
-
onClose: () => setIsModalOpen(false),
|
|
2213
|
-
hasApiKey
|
|
2214
|
-
}
|
|
2215
|
-
)
|
|
2216
|
-
] });
|
|
2217
|
-
}
|
|
2218
|
-
|
|
2219
1188
|
// src/context/coagent-state-renders-context.tsx
|
|
2220
|
-
var
|
|
2221
|
-
var
|
|
2222
|
-
var CoAgentStateRendersContext = (0,
|
|
1189
|
+
var import_react8 = require("react");
|
|
1190
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1191
|
+
var CoAgentStateRendersContext = (0, import_react8.createContext)(
|
|
2223
1192
|
void 0
|
|
2224
1193
|
);
|
|
2225
1194
|
function CoAgentStateRendersProvider({ children }) {
|
|
2226
|
-
const [coAgentStateRenders, setCoAgentStateRenders] = (0,
|
|
2227
|
-
const setCoAgentStateRender = (0,
|
|
1195
|
+
const [coAgentStateRenders, setCoAgentStateRenders] = (0, import_react8.useState)({});
|
|
1196
|
+
const setCoAgentStateRender = (0, import_react8.useCallback)((id, stateRender) => {
|
|
2228
1197
|
setCoAgentStateRenders((prevPoints) => __spreadProps(__spreadValues({}, prevPoints), {
|
|
2229
1198
|
[id]: stateRender
|
|
2230
1199
|
}));
|
|
2231
1200
|
}, []);
|
|
2232
|
-
const removeCoAgentStateRender = (0,
|
|
1201
|
+
const removeCoAgentStateRender = (0, import_react8.useCallback)((id) => {
|
|
2233
1202
|
setCoAgentStateRenders((prevPoints) => {
|
|
2234
1203
|
const newPoints = __spreadValues({}, prevPoints);
|
|
2235
1204
|
delete newPoints[id];
|
|
2236
1205
|
return newPoints;
|
|
2237
1206
|
});
|
|
2238
1207
|
}, []);
|
|
2239
|
-
const claimsRef = (0,
|
|
2240
|
-
return /* @__PURE__ */ (0,
|
|
1208
|
+
const claimsRef = (0, import_react8.useRef)({});
|
|
1209
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2241
1210
|
CoAgentStateRendersContext.Provider,
|
|
2242
1211
|
{
|
|
2243
1212
|
value: {
|
|
@@ -2251,7 +1220,7 @@ function CoAgentStateRendersProvider({ children }) {
|
|
|
2251
1220
|
);
|
|
2252
1221
|
}
|
|
2253
1222
|
function useCoAgentStateRenders() {
|
|
2254
|
-
const context = (0,
|
|
1223
|
+
const context = (0, import_react8.useContext)(CoAgentStateRendersContext);
|
|
2255
1224
|
if (!context) {
|
|
2256
1225
|
throw new Error("useCoAgentStateRenders must be used within CoAgentStateRendersProvider");
|
|
2257
1226
|
}
|
|
@@ -2259,18 +1228,18 @@ function useCoAgentStateRenders() {
|
|
|
2259
1228
|
}
|
|
2260
1229
|
|
|
2261
1230
|
// src/hooks/use-coagent-state-render-bridge.tsx
|
|
2262
|
-
var
|
|
2263
|
-
var
|
|
1231
|
+
var import_react10 = require("@copilotkitnext/react");
|
|
1232
|
+
var import_react11 = require("react");
|
|
2264
1233
|
|
|
2265
1234
|
// src/context/threads-context.tsx
|
|
2266
|
-
var
|
|
2267
|
-
var
|
|
2268
|
-
var
|
|
2269
|
-
var ThreadsContext = (0,
|
|
1235
|
+
var import_react9 = require("react");
|
|
1236
|
+
var import_shared8 = require("@copilotkit/shared");
|
|
1237
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1238
|
+
var ThreadsContext = (0, import_react9.createContext)(void 0);
|
|
2270
1239
|
function ThreadsProvider({ children, threadId: explicitThreadId }) {
|
|
2271
|
-
const [internalThreadId, setThreadId] = (0,
|
|
1240
|
+
const [internalThreadId, setThreadId] = (0, import_react9.useState)(explicitThreadId != null ? explicitThreadId : (0, import_shared8.randomUUID)());
|
|
2272
1241
|
const threadId = internalThreadId;
|
|
2273
|
-
return /* @__PURE__ */ (0,
|
|
1242
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2274
1243
|
ThreadsContext.Provider,
|
|
2275
1244
|
{
|
|
2276
1245
|
value: {
|
|
@@ -2282,7 +1251,7 @@ function ThreadsProvider({ children, threadId: explicitThreadId }) {
|
|
|
2282
1251
|
);
|
|
2283
1252
|
}
|
|
2284
1253
|
function useThreads() {
|
|
2285
|
-
const context = (0,
|
|
1254
|
+
const context = (0, import_react9.useContext)(ThreadsContext);
|
|
2286
1255
|
if (!context) {
|
|
2287
1256
|
throw new Error("useThreads must be used within ThreadsProvider");
|
|
2288
1257
|
}
|
|
@@ -2290,7 +1259,7 @@ function useThreads() {
|
|
|
2290
1259
|
}
|
|
2291
1260
|
|
|
2292
1261
|
// src/hooks/use-coagent-state-render-bridge.tsx
|
|
2293
|
-
var
|
|
1262
|
+
var import_shared9 = require("@copilotkit/shared");
|
|
2294
1263
|
function getStateWithoutConstantKeys(state) {
|
|
2295
1264
|
if (!state)
|
|
2296
1265
|
return {};
|
|
@@ -2316,11 +1285,11 @@ function useCoagentStateRenderBridge(agentId, props) {
|
|
|
2316
1285
|
var _a;
|
|
2317
1286
|
const { stateSnapshot, messageIndexInRun, message } = props;
|
|
2318
1287
|
const { coAgentStateRenders, claimsRef } = useCoAgentStateRenders();
|
|
2319
|
-
const { agent } = (0,
|
|
2320
|
-
const [nodeName, setNodeName] = (0,
|
|
1288
|
+
const { agent } = (0, import_react10.useAgent)({ agentId });
|
|
1289
|
+
const [nodeName, setNodeName] = (0, import_react11.useState)(void 0);
|
|
2321
1290
|
const runId = (_a = props.runId) != null ? _a : message.runId;
|
|
2322
1291
|
const effectiveRunId = runId || "pending";
|
|
2323
|
-
(0,
|
|
1292
|
+
(0, import_react11.useEffect)(() => {
|
|
2324
1293
|
if (!agent)
|
|
2325
1294
|
return;
|
|
2326
1295
|
const subscriber = {
|
|
@@ -2340,7 +1309,7 @@ function useCoagentStateRenderBridge(agentId, props) {
|
|
|
2340
1309
|
unsubscribe();
|
|
2341
1310
|
};
|
|
2342
1311
|
}, [agentId, nodeName]);
|
|
2343
|
-
const getStateRender = (0,
|
|
1312
|
+
const getStateRender = (0, import_react11.useCallback)(
|
|
2344
1313
|
(messageId) => {
|
|
2345
1314
|
return Object.entries(coAgentStateRenders).find(([stateRenderId, stateRender]) => {
|
|
2346
1315
|
if (claimsRef.current[messageId]) {
|
|
@@ -2367,7 +1336,7 @@ function useCoagentStateRenderBridge(agentId, props) {
|
|
|
2367
1336
|
return canRender;
|
|
2368
1337
|
}
|
|
2369
1338
|
const renderClaimedByOtherMessage = Object.values(claimsRef.current).find(
|
|
2370
|
-
(c) => c.stateRenderId === stateRenderId && (0,
|
|
1339
|
+
(c) => c.stateRenderId === stateRenderId && (0, import_shared9.dataToUUID)(getStateWithoutConstantKeys(c.stateSnapshot)) === (0, import_shared9.dataToUUID)(getStateWithoutConstantKeys(renderSnapshot))
|
|
2371
1340
|
);
|
|
2372
1341
|
if (renderClaimedByOtherMessage) {
|
|
2373
1342
|
if (renderSnapshot && renderClaimedByOtherMessage.stateSnapshot && !areStatesEquals(renderClaimedByOtherMessage.stateSnapshot, renderSnapshot)) {
|
|
@@ -2382,7 +1351,7 @@ function useCoagentStateRenderBridge(agentId, props) {
|
|
|
2382
1351
|
claimsRef.current[messageId] = { stateRenderId, runId: runId2 };
|
|
2383
1352
|
return true;
|
|
2384
1353
|
};
|
|
2385
|
-
return (0,
|
|
1354
|
+
return (0, import_react11.useMemo)(() => {
|
|
2386
1355
|
var _a2, _b, _c;
|
|
2387
1356
|
if (messageIndexInRun !== 0) {
|
|
2388
1357
|
return null;
|
|
@@ -2391,7 +1360,7 @@ function useCoagentStateRenderBridge(agentId, props) {
|
|
|
2391
1360
|
if (!stateRender || !stateRenderId) {
|
|
2392
1361
|
return null;
|
|
2393
1362
|
}
|
|
2394
|
-
const snapshot = stateSnapshot ? (0,
|
|
1363
|
+
const snapshot = stateSnapshot ? (0, import_shared9.parseJson)(stateSnapshot, stateSnapshot) : agent == null ? void 0 : agent.state;
|
|
2395
1364
|
const canRender = handleRenderRequest({
|
|
2396
1365
|
stateRenderId,
|
|
2397
1366
|
messageId: message.id,
|
|
@@ -2411,7 +1380,7 @@ function useCoagentStateRenderBridge(agentId, props) {
|
|
|
2411
1380
|
}
|
|
2412
1381
|
if (stateRender.handler) {
|
|
2413
1382
|
stateRender.handler({
|
|
2414
|
-
state: stateSnapshot ? (0,
|
|
1383
|
+
state: stateSnapshot ? (0, import_shared9.parseJson)(stateSnapshot, stateSnapshot) : (_b = agent == null ? void 0 : agent.state) != null ? _b : {},
|
|
2415
1384
|
nodeName: nodeName != null ? nodeName : ""
|
|
2416
1385
|
});
|
|
2417
1386
|
}
|
|
@@ -2442,13 +1411,13 @@ function CoAgentStateRenderBridge(props) {
|
|
|
2442
1411
|
}
|
|
2443
1412
|
|
|
2444
1413
|
// src/components/CopilotListeners.tsx
|
|
2445
|
-
var
|
|
2446
|
-
var
|
|
1414
|
+
var import_react12 = require("react");
|
|
1415
|
+
var import_react13 = require("@copilotkitnext/react");
|
|
1416
|
+
var import_shared10 = require("@copilotkit/shared");
|
|
2447
1417
|
var import_shared11 = require("@copilotkit/shared");
|
|
2448
|
-
var import_shared12 = require("@copilotkit/shared");
|
|
2449
1418
|
var usePredictStateSubscription = (agent) => {
|
|
2450
|
-
const predictStateToolsRef = (0,
|
|
2451
|
-
const getSubscriber = (0,
|
|
1419
|
+
const predictStateToolsRef = (0, import_react12.useRef)([]);
|
|
1420
|
+
const getSubscriber = (0, import_react12.useCallback)(
|
|
2452
1421
|
(agent2) => ({
|
|
2453
1422
|
onCustomEvent: ({ event }) => {
|
|
2454
1423
|
if (event.name === "PredictState") {
|
|
@@ -2459,7 +1428,7 @@ var usePredictStateSubscription = (agent) => {
|
|
|
2459
1428
|
predictStateToolsRef.current.forEach((t) => {
|
|
2460
1429
|
if ((t == null ? void 0 : t.tool) !== toolCallName)
|
|
2461
1430
|
return;
|
|
2462
|
-
const emittedState = typeof partialToolCallArgs === "string" ? (0,
|
|
1431
|
+
const emittedState = typeof partialToolCallArgs === "string" ? (0, import_shared10.parseJson)(partialToolCallArgs, partialToolCallArgs) : partialToolCallArgs;
|
|
2463
1432
|
agent2.setState({
|
|
2464
1433
|
[t.state_key]: emittedState[t.state_key]
|
|
2465
1434
|
});
|
|
@@ -2468,7 +1437,7 @@ var usePredictStateSubscription = (agent) => {
|
|
|
2468
1437
|
}),
|
|
2469
1438
|
[]
|
|
2470
1439
|
);
|
|
2471
|
-
(0,
|
|
1440
|
+
(0, import_react12.useEffect)(() => {
|
|
2472
1441
|
if (!agent)
|
|
2473
1442
|
return;
|
|
2474
1443
|
const subscriber = getSubscriber(agent);
|
|
@@ -2479,16 +1448,16 @@ var usePredictStateSubscription = (agent) => {
|
|
|
2479
1448
|
}, [agent, getSubscriber]);
|
|
2480
1449
|
};
|
|
2481
1450
|
function CopilotListeners() {
|
|
2482
|
-
const { copilotkit } = (0,
|
|
2483
|
-
const existingConfig = (0,
|
|
1451
|
+
const { copilotkit } = (0, import_react13.useCopilotKit)();
|
|
1452
|
+
const existingConfig = (0, import_react13.useCopilotChatConfiguration)();
|
|
2484
1453
|
const resolvedAgentId = existingConfig == null ? void 0 : existingConfig.agentId;
|
|
2485
1454
|
const { setBannerError } = useToast();
|
|
2486
|
-
const { agent } = (0,
|
|
1455
|
+
const { agent } = (0, import_react13.useAgent)({ agentId: resolvedAgentId });
|
|
2487
1456
|
usePredictStateSubscription(agent);
|
|
2488
|
-
(0,
|
|
1457
|
+
(0, import_react12.useEffect)(() => {
|
|
2489
1458
|
const subscriber = {
|
|
2490
1459
|
onError: ({ error }) => {
|
|
2491
|
-
setBannerError(new
|
|
1460
|
+
setBannerError(new import_shared11.CopilotKitLowLevelError({ error, message: error.message }));
|
|
2492
1461
|
}
|
|
2493
1462
|
};
|
|
2494
1463
|
const subscription = copilotkit.subscribe(subscriber);
|
|
@@ -2500,60 +1469,65 @@ function CopilotListeners() {
|
|
|
2500
1469
|
}
|
|
2501
1470
|
|
|
2502
1471
|
// src/components/copilot-provider/copilotkit.tsx
|
|
2503
|
-
var
|
|
1472
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
2504
1473
|
function CopilotKit(_a) {
|
|
2505
1474
|
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
|
2506
1475
|
const enabled = shouldShowDevConsole(props.showDevConsole);
|
|
2507
1476
|
const showInspector = shouldShowDevConsole(props.enableInspector);
|
|
2508
1477
|
const publicApiKey = props.publicApiKey || props.publicLicenseKey;
|
|
2509
|
-
const renderArr = (0,
|
|
2510
|
-
return /* @__PURE__ */ (0,
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
1478
|
+
const renderArr = (0, import_react14.useMemo)(() => [{ render: CoAgentStateRenderBridge }], []);
|
|
1479
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ToastProvider, { enabled, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopilotErrorBoundary, { publicApiKey, showUsageBanner: enabled, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ThreadsProvider, { threadId: props.threadId, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1480
|
+
import_react15.CopilotKitProvider,
|
|
1481
|
+
__spreadProps(__spreadValues({}, props), {
|
|
1482
|
+
showDevConsole: showInspector,
|
|
1483
|
+
renderCustomMessages: renderArr,
|
|
1484
|
+
useSingleEndpoint: true,
|
|
1485
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopilotKitInternal, __spreadProps(__spreadValues({}, props), { children }))
|
|
1486
|
+
})
|
|
1487
|
+
) }) }) });
|
|
2514
1488
|
}
|
|
2515
1489
|
function CopilotKitInternal(cpkProps) {
|
|
2516
1490
|
var _b;
|
|
2517
1491
|
const _a = cpkProps, { children } = _a, props = __objRest(_a, ["children"]);
|
|
2518
1492
|
validateProps(cpkProps);
|
|
2519
1493
|
const publicApiKey = props.publicLicenseKey || props.publicApiKey;
|
|
2520
|
-
const chatApiEndpoint = props.runtimeUrl ||
|
|
2521
|
-
const [actions, setActions] = (0,
|
|
2522
|
-
const [registeredActionConfigs, setRegisteredActionConfigs] = (0,
|
|
2523
|
-
const chatComponentsCache = (0,
|
|
1494
|
+
const chatApiEndpoint = props.runtimeUrl || import_shared12.COPILOT_CLOUD_CHAT_URL;
|
|
1495
|
+
const [actions, setActions] = (0, import_react14.useState)({});
|
|
1496
|
+
const [registeredActionConfigs, setRegisteredActionConfigs] = (0, import_react14.useState)(/* @__PURE__ */ new Map());
|
|
1497
|
+
const chatComponentsCache = (0, import_react14.useRef)({
|
|
2524
1498
|
actions: {},
|
|
2525
1499
|
coAgentStateRenders: {}
|
|
2526
1500
|
});
|
|
2527
1501
|
const { addElement, removeElement, printTree, getAllElements } = use_tree_default();
|
|
2528
|
-
const [isLoading, setIsLoading] = (0,
|
|
2529
|
-
const [chatInstructions, setChatInstructions] = (0,
|
|
2530
|
-
const [authStates, setAuthStates] = (0,
|
|
2531
|
-
const [extensions, setExtensions] = (0,
|
|
2532
|
-
const [additionalInstructions, setAdditionalInstructions] = (0,
|
|
1502
|
+
const [isLoading, setIsLoading] = (0, import_react14.useState)(false);
|
|
1503
|
+
const [chatInstructions, setChatInstructions] = (0, import_react14.useState)("");
|
|
1504
|
+
const [authStates, setAuthStates] = (0, import_react14.useState)({});
|
|
1505
|
+
const [extensions, setExtensions] = (0, import_react14.useState)({});
|
|
1506
|
+
const [additionalInstructions, setAdditionalInstructions] = (0, import_react14.useState)([]);
|
|
2533
1507
|
const {
|
|
2534
1508
|
addElement: addDocument,
|
|
2535
1509
|
removeElement: removeDocument,
|
|
2536
1510
|
allElements: allDocuments
|
|
2537
1511
|
} = use_flat_category_store_default();
|
|
2538
|
-
const setAction = (0,
|
|
1512
|
+
const setAction = (0, import_react14.useCallback)((id, action) => {
|
|
2539
1513
|
setActions((prevPoints) => {
|
|
2540
1514
|
return __spreadProps(__spreadValues({}, prevPoints), {
|
|
2541
1515
|
[id]: action
|
|
2542
1516
|
});
|
|
2543
1517
|
});
|
|
2544
1518
|
}, []);
|
|
2545
|
-
const removeAction = (0,
|
|
1519
|
+
const removeAction = (0, import_react14.useCallback)((id) => {
|
|
2546
1520
|
setActions((prevPoints) => {
|
|
2547
1521
|
const newPoints = __spreadValues({}, prevPoints);
|
|
2548
1522
|
delete newPoints[id];
|
|
2549
1523
|
return newPoints;
|
|
2550
1524
|
});
|
|
2551
1525
|
}, []);
|
|
2552
|
-
const getContextString = (0,
|
|
1526
|
+
const getContextString = (0, import_react14.useCallback)(
|
|
2553
1527
|
(documents, categories) => {
|
|
2554
|
-
const documentsString = documents.map((
|
|
2555
|
-
return `${
|
|
2556
|
-
${
|
|
1528
|
+
const documentsString = documents.map((document) => {
|
|
1529
|
+
return `${document.name} (${document.sourceApplication}):
|
|
1530
|
+
${document.getContents()}`;
|
|
2557
1531
|
}).join("\n\n");
|
|
2558
1532
|
const nonDocumentStrings = printTree(categories);
|
|
2559
1533
|
return `${documentsString}
|
|
@@ -2562,46 +1536,46 @@ ${nonDocumentStrings}`;
|
|
|
2562
1536
|
},
|
|
2563
1537
|
[printTree]
|
|
2564
1538
|
);
|
|
2565
|
-
const addContext = (0,
|
|
1539
|
+
const addContext = (0, import_react14.useCallback)(
|
|
2566
1540
|
(context, parentId, categories = defaultCopilotContextCategories) => {
|
|
2567
1541
|
return addElement(context, categories, parentId);
|
|
2568
1542
|
},
|
|
2569
1543
|
[addElement]
|
|
2570
1544
|
);
|
|
2571
|
-
const removeContext = (0,
|
|
1545
|
+
const removeContext = (0, import_react14.useCallback)(
|
|
2572
1546
|
(id) => {
|
|
2573
1547
|
removeElement(id);
|
|
2574
1548
|
},
|
|
2575
1549
|
[removeElement]
|
|
2576
1550
|
);
|
|
2577
|
-
const getAllContext = (0,
|
|
1551
|
+
const getAllContext = (0, import_react14.useCallback)(() => {
|
|
2578
1552
|
return getAllElements();
|
|
2579
1553
|
}, [getAllElements]);
|
|
2580
|
-
const getFunctionCallHandler = (0,
|
|
1554
|
+
const getFunctionCallHandler = (0, import_react14.useCallback)(
|
|
2581
1555
|
(customEntryPoints) => {
|
|
2582
1556
|
return entryPointsToFunctionCallHandler(Object.values(customEntryPoints || actions));
|
|
2583
1557
|
},
|
|
2584
1558
|
[actions]
|
|
2585
1559
|
);
|
|
2586
|
-
const getDocumentsContext = (0,
|
|
1560
|
+
const getDocumentsContext = (0, import_react14.useCallback)(
|
|
2587
1561
|
(categories) => {
|
|
2588
1562
|
return allDocuments(categories);
|
|
2589
1563
|
},
|
|
2590
1564
|
[allDocuments]
|
|
2591
1565
|
);
|
|
2592
|
-
const addDocumentContext = (0,
|
|
1566
|
+
const addDocumentContext = (0, import_react14.useCallback)(
|
|
2593
1567
|
(documentPointer, categories = defaultCopilotContextCategories) => {
|
|
2594
1568
|
return addDocument(documentPointer, categories);
|
|
2595
1569
|
},
|
|
2596
1570
|
[addDocument]
|
|
2597
1571
|
);
|
|
2598
|
-
const removeDocumentContext = (0,
|
|
1572
|
+
const removeDocumentContext = (0, import_react14.useCallback)(
|
|
2599
1573
|
(documentId) => {
|
|
2600
1574
|
removeDocument(documentId);
|
|
2601
1575
|
},
|
|
2602
1576
|
[removeDocument]
|
|
2603
1577
|
);
|
|
2604
|
-
const copilotApiConfig = (0,
|
|
1578
|
+
const copilotApiConfig = (0, import_react14.useMemo)(() => {
|
|
2605
1579
|
var _a2, _b2;
|
|
2606
1580
|
let cloud = void 0;
|
|
2607
1581
|
if (publicApiKey) {
|
|
@@ -2637,7 +1611,7 @@ ${nonDocumentStrings}`;
|
|
|
2637
1611
|
props.cloudRestrictToTopic,
|
|
2638
1612
|
props.guardrails_c
|
|
2639
1613
|
]);
|
|
2640
|
-
const headers = (0,
|
|
1614
|
+
const headers = (0, import_react14.useMemo)(() => {
|
|
2641
1615
|
const authHeaders = Object.values(authStates || {}).reduce((acc, state) => {
|
|
2642
1616
|
if (state.status === "authenticated" && state.authHeaders) {
|
|
2643
1617
|
return __spreadValues(__spreadValues({}, acc), Object.entries(state.authHeaders).reduce(
|
|
@@ -2649,27 +1623,27 @@ ${nonDocumentStrings}`;
|
|
|
2649
1623
|
}
|
|
2650
1624
|
return acc;
|
|
2651
1625
|
}, {});
|
|
2652
|
-
return __spreadValues(__spreadValues(__spreadValues({}, copilotApiConfig.headers || {}), copilotApiConfig.publicApiKey ? { [
|
|
1626
|
+
return __spreadValues(__spreadValues(__spreadValues({}, copilotApiConfig.headers || {}), copilotApiConfig.publicApiKey ? { [import_shared12.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey } : {}), authHeaders);
|
|
2653
1627
|
}, [copilotApiConfig.headers, copilotApiConfig.publicApiKey, authStates]);
|
|
2654
|
-
const [internalErrorHandlers, _setInternalErrorHandler] = (0,
|
|
2655
|
-
const setInternalErrorHandler = (0,
|
|
1628
|
+
const [internalErrorHandlers, _setInternalErrorHandler] = (0, import_react14.useState)({});
|
|
1629
|
+
const setInternalErrorHandler = (0, import_react14.useCallback)((handler) => {
|
|
2656
1630
|
_setInternalErrorHandler((prev) => __spreadValues(__spreadValues({}, prev), handler));
|
|
2657
1631
|
}, []);
|
|
2658
|
-
const removeInternalErrorHandler = (0,
|
|
1632
|
+
const removeInternalErrorHandler = (0, import_react14.useCallback)((key) => {
|
|
2659
1633
|
_setInternalErrorHandler((prev) => {
|
|
2660
1634
|
const _a2 = prev, { [key]: _removed } = _a2, rest = __objRest(_a2, [__restKey(key)]);
|
|
2661
1635
|
return rest;
|
|
2662
1636
|
});
|
|
2663
1637
|
}, []);
|
|
2664
|
-
const onErrorRef = (0,
|
|
2665
|
-
(0,
|
|
1638
|
+
const onErrorRef = (0, import_react14.useRef)(props.onError);
|
|
1639
|
+
(0, import_react14.useEffect)(() => {
|
|
2666
1640
|
onErrorRef.current = props.onError;
|
|
2667
1641
|
}, [props.onError]);
|
|
2668
|
-
const internalHandlersRef = (0,
|
|
2669
|
-
(0,
|
|
1642
|
+
const internalHandlersRef = (0, import_react14.useRef)({});
|
|
1643
|
+
(0, import_react14.useEffect)(() => {
|
|
2670
1644
|
internalHandlersRef.current = internalErrorHandlers;
|
|
2671
1645
|
}, [internalErrorHandlers]);
|
|
2672
|
-
const handleErrors = (0,
|
|
1646
|
+
const handleErrors = (0, import_react14.useCallback)(
|
|
2673
1647
|
(error) => __async(this, null, function* () {
|
|
2674
1648
|
if (copilotApiConfig.publicApiKey && onErrorRef.current) {
|
|
2675
1649
|
try {
|
|
@@ -2689,14 +1663,14 @@ ${nonDocumentStrings}`;
|
|
|
2689
1663
|
}),
|
|
2690
1664
|
[copilotApiConfig.publicApiKey]
|
|
2691
1665
|
);
|
|
2692
|
-
const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = (0,
|
|
2693
|
-
const addChatSuggestionConfiguration = (0,
|
|
1666
|
+
const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = (0, import_react14.useState)({});
|
|
1667
|
+
const addChatSuggestionConfiguration = (0, import_react14.useCallback)(
|
|
2694
1668
|
(id, suggestion) => {
|
|
2695
1669
|
setChatSuggestionConfiguration((prev) => __spreadProps(__spreadValues({}, prev), { [id]: suggestion }));
|
|
2696
1670
|
},
|
|
2697
1671
|
[setChatSuggestionConfiguration]
|
|
2698
1672
|
);
|
|
2699
|
-
const removeChatSuggestionConfiguration = (0,
|
|
1673
|
+
const removeChatSuggestionConfiguration = (0, import_react14.useCallback)(
|
|
2700
1674
|
(id) => {
|
|
2701
1675
|
setChatSuggestionConfiguration((prev) => {
|
|
2702
1676
|
const _a2 = prev, { [id]: _ } = _a2, rest = __objRest(_a2, [__restKey(id)]);
|
|
@@ -2705,10 +1679,10 @@ ${nonDocumentStrings}`;
|
|
|
2705
1679
|
},
|
|
2706
1680
|
[setChatSuggestionConfiguration]
|
|
2707
1681
|
);
|
|
2708
|
-
const [availableAgents, setAvailableAgents] = (0,
|
|
2709
|
-
const [coagentStates, setCoagentStates] = (0,
|
|
2710
|
-
const coagentStatesRef = (0,
|
|
2711
|
-
const setCoagentStatesWithRef = (0,
|
|
1682
|
+
const [availableAgents, setAvailableAgents] = (0, import_react14.useState)([]);
|
|
1683
|
+
const [coagentStates, setCoagentStates] = (0, import_react14.useState)({});
|
|
1684
|
+
const coagentStatesRef = (0, import_react14.useRef)({});
|
|
1685
|
+
const setCoagentStatesWithRef = (0, import_react14.useCallback)(
|
|
2712
1686
|
(value) => {
|
|
2713
1687
|
const newValue = typeof value === "function" ? value(coagentStatesRef.current) : value;
|
|
2714
1688
|
coagentStatesRef.current = newValue;
|
|
@@ -2724,8 +1698,8 @@ ${nonDocumentStrings}`;
|
|
|
2724
1698
|
agentName: props.agent
|
|
2725
1699
|
};
|
|
2726
1700
|
}
|
|
2727
|
-
const [agentSession, setAgentSession] = (0,
|
|
2728
|
-
(0,
|
|
1701
|
+
const [agentSession, setAgentSession] = (0, import_react14.useState)(initialAgentSession);
|
|
1702
|
+
(0, import_react14.useEffect)(() => {
|
|
2729
1703
|
if (props.agent) {
|
|
2730
1704
|
setAgentSession({
|
|
2731
1705
|
agentName: props.agent
|
|
@@ -2735,7 +1709,7 @@ ${nonDocumentStrings}`;
|
|
|
2735
1709
|
}
|
|
2736
1710
|
}, [props.agent]);
|
|
2737
1711
|
const { threadId, setThreadId: setInternalThreadId } = useThreads();
|
|
2738
|
-
const setThreadId = (0,
|
|
1712
|
+
const setThreadId = (0, import_react14.useCallback)(
|
|
2739
1713
|
(value) => {
|
|
2740
1714
|
if (props.threadId) {
|
|
2741
1715
|
throw new Error("Cannot call setThreadId() when threadId is provided via props.");
|
|
@@ -2744,11 +1718,11 @@ ${nonDocumentStrings}`;
|
|
|
2744
1718
|
},
|
|
2745
1719
|
[props.threadId]
|
|
2746
1720
|
);
|
|
2747
|
-
const [runId, setRunId] = (0,
|
|
2748
|
-
const chatAbortControllerRef = (0,
|
|
1721
|
+
const [runId, setRunId] = (0, import_react14.useState)(null);
|
|
1722
|
+
const chatAbortControllerRef = (0, import_react14.useRef)(null);
|
|
2749
1723
|
const showDevConsole = shouldShowDevConsole(props.showDevConsole);
|
|
2750
|
-
const [interruptActions, _setInterruptActions] = (0,
|
|
2751
|
-
const setInterruptAction = (0,
|
|
1724
|
+
const [interruptActions, _setInterruptActions] = (0, import_react14.useState)({});
|
|
1725
|
+
const setInterruptAction = (0, import_react14.useCallback)((action) => {
|
|
2752
1726
|
_setInterruptActions((prev) => {
|
|
2753
1727
|
var _a2;
|
|
2754
1728
|
if (action == null || !action.id) {
|
|
@@ -2759,14 +1733,14 @@ ${nonDocumentStrings}`;
|
|
|
2759
1733
|
});
|
|
2760
1734
|
});
|
|
2761
1735
|
}, []);
|
|
2762
|
-
const removeInterruptAction = (0,
|
|
1736
|
+
const removeInterruptAction = (0, import_react14.useCallback)((actionId) => {
|
|
2763
1737
|
_setInterruptActions((prev) => {
|
|
2764
1738
|
const _a2 = prev, { [actionId]: _ } = _a2, rest = __objRest(_a2, [__restKey(actionId)]);
|
|
2765
1739
|
return rest;
|
|
2766
1740
|
});
|
|
2767
1741
|
}, []);
|
|
2768
|
-
const [interruptEventQueue, setInterruptEventQueue] = (0,
|
|
2769
|
-
const addInterruptEvent = (0,
|
|
1742
|
+
const [interruptEventQueue, setInterruptEventQueue] = (0, import_react14.useState)({});
|
|
1743
|
+
const addInterruptEvent = (0, import_react14.useCallback)((queuedEvent) => {
|
|
2770
1744
|
setInterruptEventQueue((prev) => {
|
|
2771
1745
|
const threadQueue = prev[queuedEvent.threadId] || [];
|
|
2772
1746
|
return __spreadProps(__spreadValues({}, prev), {
|
|
@@ -2774,7 +1748,7 @@ ${nonDocumentStrings}`;
|
|
|
2774
1748
|
});
|
|
2775
1749
|
});
|
|
2776
1750
|
}, []);
|
|
2777
|
-
const resolveInterruptEvent = (0,
|
|
1751
|
+
const resolveInterruptEvent = (0, import_react14.useCallback)(
|
|
2778
1752
|
(threadId2, eventId, response) => {
|
|
2779
1753
|
setInterruptEventQueue((prev) => {
|
|
2780
1754
|
const threadQueue = prev[threadId2] || [];
|
|
@@ -2787,20 +1761,20 @@ ${nonDocumentStrings}`;
|
|
|
2787
1761
|
},
|
|
2788
1762
|
[]
|
|
2789
1763
|
);
|
|
2790
|
-
const memoizedChildren = (0,
|
|
2791
|
-
const [bannerError, setBannerError] = (0,
|
|
2792
|
-
const agentLock = (0,
|
|
1764
|
+
const memoizedChildren = (0, import_react14.useMemo)(() => children, [children]);
|
|
1765
|
+
const [bannerError, setBannerError] = (0, import_react14.useState)(null);
|
|
1766
|
+
const agentLock = (0, import_react14.useMemo)(() => {
|
|
2793
1767
|
var _a2;
|
|
2794
1768
|
return (_a2 = props.agent) != null ? _a2 : null;
|
|
2795
1769
|
}, [props.agent]);
|
|
2796
|
-
const forwardedParameters = (0,
|
|
1770
|
+
const forwardedParameters = (0, import_react14.useMemo)(
|
|
2797
1771
|
() => {
|
|
2798
1772
|
var _a2;
|
|
2799
1773
|
return (_a2 = props.forwardedParameters) != null ? _a2 : {};
|
|
2800
1774
|
},
|
|
2801
1775
|
[props.forwardedParameters]
|
|
2802
1776
|
);
|
|
2803
|
-
const updateExtensions = (0,
|
|
1777
|
+
const updateExtensions = (0, import_react14.useCallback)(
|
|
2804
1778
|
(newExtensions) => {
|
|
2805
1779
|
setExtensions((prev) => {
|
|
2806
1780
|
const resolved = typeof newExtensions === "function" ? newExtensions(prev) : newExtensions;
|
|
@@ -2812,7 +1786,7 @@ ${nonDocumentStrings}`;
|
|
|
2812
1786
|
},
|
|
2813
1787
|
[setExtensions]
|
|
2814
1788
|
);
|
|
2815
|
-
const updateAuthStates = (0,
|
|
1789
|
+
const updateAuthStates = (0, import_react14.useCallback)(
|
|
2816
1790
|
(newAuthStates) => {
|
|
2817
1791
|
setAuthStates((prev) => {
|
|
2818
1792
|
const resolved = typeof newAuthStates === "function" ? newAuthStates(prev) : newAuthStates;
|
|
@@ -2824,8 +1798,8 @@ ${nonDocumentStrings}`;
|
|
|
2824
1798
|
},
|
|
2825
1799
|
[setAuthStates]
|
|
2826
1800
|
);
|
|
2827
|
-
const handleSetRegisteredActions = (0,
|
|
2828
|
-
const key = actionConfig.action.name || (0,
|
|
1801
|
+
const handleSetRegisteredActions = (0, import_react14.useCallback)((actionConfig) => {
|
|
1802
|
+
const key = actionConfig.action.name || (0, import_shared12.randomUUID)();
|
|
2829
1803
|
setRegisteredActionConfigs((prev) => {
|
|
2830
1804
|
const newMap = new Map(prev);
|
|
2831
1805
|
newMap.set(key, actionConfig);
|
|
@@ -2833,25 +1807,25 @@ ${nonDocumentStrings}`;
|
|
|
2833
1807
|
});
|
|
2834
1808
|
return key;
|
|
2835
1809
|
}, []);
|
|
2836
|
-
const handleRemoveRegisteredAction = (0,
|
|
1810
|
+
const handleRemoveRegisteredAction = (0, import_react14.useCallback)((actionKey) => {
|
|
2837
1811
|
setRegisteredActionConfigs((prev) => {
|
|
2838
1812
|
const newMap = new Map(prev);
|
|
2839
1813
|
newMap.delete(actionKey);
|
|
2840
1814
|
return newMap;
|
|
2841
1815
|
});
|
|
2842
1816
|
}, []);
|
|
2843
|
-
const RegisteredActionsRenderer = (0,
|
|
2844
|
-
return () => /* @__PURE__ */ (0,
|
|
1817
|
+
const RegisteredActionsRenderer = (0, import_react14.useMemo)(() => {
|
|
1818
|
+
return () => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_jsx_runtime7.Fragment, { children: Array.from(registeredActionConfigs.entries()).map(([key, config]) => {
|
|
2845
1819
|
const Component = config.component;
|
|
2846
|
-
return /* @__PURE__ */ (0,
|
|
1820
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Component, { action: config.action }, key);
|
|
2847
1821
|
}) });
|
|
2848
1822
|
}, [registeredActionConfigs]);
|
|
2849
|
-
return /* @__PURE__ */ (0,
|
|
2850
|
-
|
|
1823
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1824
|
+
import_react15.CopilotChatConfigurationProvider,
|
|
2851
1825
|
{
|
|
2852
1826
|
agentId: (_b = props.agent) != null ? _b : "default",
|
|
2853
1827
|
threadId,
|
|
2854
|
-
children: /* @__PURE__ */ (0,
|
|
1828
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
2855
1829
|
CopilotContext.Provider,
|
|
2856
1830
|
{
|
|
2857
1831
|
value: {
|
|
@@ -2913,14 +1887,13 @@ ${nonDocumentStrings}`;
|
|
|
2913
1887
|
removeInternalErrorHandler
|
|
2914
1888
|
},
|
|
2915
1889
|
children: [
|
|
2916
|
-
/* @__PURE__ */ (0,
|
|
2917
|
-
/* @__PURE__ */ (0,
|
|
2918
|
-
/* @__PURE__ */ (0,
|
|
1890
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopilotListeners, {}),
|
|
1891
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CoAgentStateRendersProvider, { children: [
|
|
1892
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(MessagesTapProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CopilotMessages, { children: [
|
|
2919
1893
|
memoizedChildren,
|
|
2920
|
-
|
|
2921
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(RegisteredActionsRenderer, {})
|
|
1894
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RegisteredActionsRenderer, {})
|
|
2922
1895
|
] }) }),
|
|
2923
|
-
bannerError && showDevConsole && /* @__PURE__ */ (0,
|
|
1896
|
+
bannerError && showDevConsole && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2924
1897
|
UsageBanner,
|
|
2925
1898
|
{
|
|
2926
1899
|
severity: bannerError.severity,
|
|
@@ -2969,12 +1942,12 @@ function validateProps(props) {
|
|
|
2969
1942
|
const cloudFeatures = Object.keys(props).filter((key) => key.endsWith("_c"));
|
|
2970
1943
|
const hasApiKey = props.publicApiKey || props.publicLicenseKey;
|
|
2971
1944
|
if (!props.runtimeUrl && !hasApiKey) {
|
|
2972
|
-
throw new
|
|
1945
|
+
throw new import_shared12.ConfigurationError(
|
|
2973
1946
|
"Missing required prop: 'runtimeUrl' or 'publicApiKey' or 'publicLicenseKey'"
|
|
2974
1947
|
);
|
|
2975
1948
|
}
|
|
2976
1949
|
if (cloudFeatures.length > 0 && !hasApiKey) {
|
|
2977
|
-
throw new
|
|
1950
|
+
throw new import_shared12.MissingPublicApiKeyError(
|
|
2978
1951
|
`Missing required prop: 'publicApiKey' or 'publicLicenseKey' to use cloud features: ${cloudFeatures.map(formatFeatureName).join(", ")}`
|
|
2979
1952
|
);
|
|
2980
1953
|
}
|