@copilotkit/react-core 1.50.0-beta.8 → 1.50.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.
Files changed (77) hide show
  1. package/CHANGELOG.md +192 -0
  2. package/dist/{chunk-KYY2WZSR.mjs → chunk-5J7RRLRO.mjs} +2 -2
  3. package/dist/{chunk-ZU6ZBX4E.mjs → chunk-CO6V4G7P.mjs} +17 -9
  4. package/dist/chunk-CO6V4G7P.mjs.map +1 -0
  5. package/dist/{chunk-Y2L7KDVW.mjs → chunk-HQTDDA6V.mjs} +2 -2
  6. package/dist/chunk-LDEWO5XH.mjs +328 -0
  7. package/dist/chunk-LDEWO5XH.mjs.map +1 -0
  8. package/dist/chunk-XDFVCQD3.mjs +27 -0
  9. package/dist/chunk-XDFVCQD3.mjs.map +1 -0
  10. package/dist/{chunk-RQ6LWR6S.mjs → chunk-Z6JV2LRY.mjs} +1 -1
  11. package/dist/chunk-Z6JV2LRY.mjs.map +1 -0
  12. package/dist/{chunk-BLDHD6Q2.mjs → chunk-ZE4JVTEP.mjs} +2 -2
  13. package/dist/components/copilot-provider/copilotkit-props.d.ts +6 -0
  14. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  15. package/dist/components/copilot-provider/copilotkit.js +127 -1150
  16. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  17. package/dist/components/copilot-provider/copilotkit.mjs +3 -6
  18. package/dist/components/copilot-provider/index.js +127 -1150
  19. package/dist/components/copilot-provider/index.js.map +1 -1
  20. package/dist/components/copilot-provider/index.mjs +3 -6
  21. package/dist/components/dev-console/console-trigger.mjs +225 -5
  22. package/dist/components/dev-console/console-trigger.mjs.map +1 -1
  23. package/dist/components/index.js +127 -1150
  24. package/dist/components/index.js.map +1 -1
  25. package/dist/components/index.mjs +3 -6
  26. package/dist/hooks/index.d.ts +1 -1
  27. package/dist/hooks/index.js +124 -554
  28. package/dist/hooks/index.js.map +1 -1
  29. package/dist/hooks/index.mjs +19 -19
  30. package/dist/hooks/use-copilot-chat-headless_c.js +42 -487
  31. package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
  32. package/dist/hooks/use-copilot-chat-headless_c.mjs +2 -3
  33. package/dist/hooks/{use-configure-chat-suggestions.d.ts → use-copilot-chat-suggestions.d.ts} +2 -3
  34. package/dist/hooks/{use-configure-chat-suggestions.js → use-copilot-chat-suggestions.js} +10 -29
  35. package/dist/hooks/use-copilot-chat-suggestions.js.map +1 -0
  36. package/dist/hooks/use-copilot-chat-suggestions.mjs +8 -0
  37. package/dist/hooks/use-copilot-chat.js +40 -485
  38. package/dist/hooks/use-copilot-chat.js.map +1 -1
  39. package/dist/hooks/use-copilot-chat.mjs +2 -3
  40. package/dist/hooks/use-copilot-chat_internal.d.ts +17 -0
  41. package/dist/hooks/use-copilot-chat_internal.js +40 -485
  42. package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
  43. package/dist/hooks/use-copilot-chat_internal.mjs +1 -2
  44. package/dist/hooks/use-copilot-readable.d.ts +2 -3
  45. package/dist/hooks/use-copilot-readable.js.map +1 -1
  46. package/dist/hooks/use-copilot-readable.mjs +1 -1
  47. package/dist/index.d.ts +1 -1
  48. package/dist/index.js +300 -1746
  49. package/dist/index.js.map +1 -1
  50. package/dist/index.mjs +24 -27
  51. package/dist/lib/copilot-task.js.map +1 -1
  52. package/dist/lib/copilot-task.mjs +4 -7
  53. package/dist/lib/index.js.map +1 -1
  54. package/dist/lib/index.mjs +4 -7
  55. package/dist/types/index.mjs +1 -1
  56. package/package.json +8 -8
  57. package/src/components/copilot-provider/copilotkit-props.tsx +7 -0
  58. package/src/components/copilot-provider/copilotkit.tsx +13 -5
  59. package/src/hooks/index.ts +2 -2
  60. package/src/hooks/use-copilot-chat-suggestions.tsx +124 -0
  61. package/src/hooks/use-copilot-chat_internal.ts +29 -29
  62. package/src/hooks/use-copilot-readable.ts +2 -4
  63. package/dist/chunk-EKDPRKZT.mjs +0 -746
  64. package/dist/chunk-EKDPRKZT.mjs.map +0 -1
  65. package/dist/chunk-FBVI3LQ6.mjs +0 -48
  66. package/dist/chunk-FBVI3LQ6.mjs.map +0 -1
  67. package/dist/chunk-PMWUKW3Z.mjs +0 -231
  68. package/dist/chunk-PMWUKW3Z.mjs.map +0 -1
  69. package/dist/chunk-RQ6LWR6S.mjs.map +0 -1
  70. package/dist/chunk-ZU6ZBX4E.mjs.map +0 -1
  71. package/dist/hooks/use-configure-chat-suggestions.js.map +0 -1
  72. package/dist/hooks/use-configure-chat-suggestions.mjs +0 -8
  73. package/src/hooks/use-configure-chat-suggestions.tsx +0 -86
  74. /package/dist/{chunk-KYY2WZSR.mjs.map → chunk-5J7RRLRO.mjs.map} +0 -0
  75. /package/dist/{chunk-Y2L7KDVW.mjs.map → chunk-HQTDDA6V.mjs.map} +0 -0
  76. /package/dist/{chunk-BLDHD6Q2.mjs.map → chunk-ZE4JVTEP.mjs.map} +0 -0
  77. /package/dist/hooks/{use-configure-chat-suggestions.mjs.map → use-copilot-chat-suggestions.mjs.map} +0 -0
@@ -86,8 +86,8 @@ __export(copilot_provider_exports, {
86
86
  module.exports = __toCommonJS(copilot_provider_exports);
87
87
 
88
88
  // src/components/copilot-provider/copilotkit.tsx
89
- var import_react16 = require("react");
90
- var import_react17 = require("@copilotkitnext/react");
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 import_shared13 = require("@copilotkit/shared");
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 import_react10 = require("react");
2221
- var import_jsx_runtime8 = require("react/jsx-runtime");
2222
- var CoAgentStateRendersContext = (0, import_react10.createContext)(
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, import_react10.useState)({});
2227
- const setCoAgentStateRender = (0, import_react10.useCallback)((id, stateRender) => {
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, import_react10.useCallback)((id) => {
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, import_react10.useRef)({});
2240
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
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, import_react10.useContext)(CoAgentStateRendersContext);
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 import_react12 = require("@copilotkitnext/react");
2263
- var import_react13 = require("react");
1231
+ var import_react10 = require("@copilotkitnext/react");
1232
+ var import_react11 = require("react");
2264
1233
 
2265
1234
  // src/context/threads-context.tsx
2266
- var import_react11 = require("react");
2267
- var import_shared9 = require("@copilotkit/shared");
2268
- var import_jsx_runtime9 = require("react/jsx-runtime");
2269
- var ThreadsContext = (0, import_react11.createContext)(void 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, import_react11.useState)(explicitThreadId != null ? explicitThreadId : (0, import_shared9.randomUUID)());
1240
+ const [internalThreadId, setThreadId] = (0, import_react9.useState)(explicitThreadId != null ? explicitThreadId : (0, import_shared8.randomUUID)());
2272
1241
  const threadId = internalThreadId;
2273
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
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, import_react11.useContext)(ThreadsContext);
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 import_shared10 = require("@copilotkit/shared");
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, import_react12.useAgent)({ agentId });
2320
- const [nodeName, setNodeName] = (0, import_react13.useState)(void 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, import_react13.useEffect)(() => {
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, import_react13.useCallback)(
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, import_shared10.dataToUUID)(getStateWithoutConstantKeys(c.stateSnapshot)) === (0, import_shared10.dataToUUID)(getStateWithoutConstantKeys(renderSnapshot))
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, import_react13.useMemo)(() => {
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, import_shared10.parseJson)(stateSnapshot, stateSnapshot) : agent == null ? void 0 : agent.state;
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, import_shared10.parseJson)(stateSnapshot, stateSnapshot) : (_b = agent == null ? void 0 : agent.state) != null ? _b : {},
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 import_react14 = require("react");
2446
- var import_react15 = require("@copilotkitnext/react");
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, import_react14.useRef)([]);
2451
- const getSubscriber = (0, import_react14.useCallback)(
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, import_shared11.parseJson)(partialToolCallArgs, partialToolCallArgs) : partialToolCallArgs;
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, import_react14.useEffect)(() => {
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, import_react15.useCopilotKit)();
2483
- const existingConfig = (0, import_react15.useCopilotChatConfiguration)();
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, import_react15.useAgent)({ agentId: resolvedAgentId });
1455
+ const { agent } = (0, import_react13.useAgent)({ agentId: resolvedAgentId });
2487
1456
  usePredictStateSubscription(agent);
2488
- (0, import_react14.useEffect)(() => {
1457
+ (0, import_react12.useEffect)(() => {
2489
1458
  const subscriber = {
2490
1459
  onError: ({ error }) => {
2491
- setBannerError(new import_shared12.CopilotKitLowLevelError({ error, message: error.message }));
1460
+ setBannerError(new import_shared11.CopilotKitLowLevelError({ error, message: error.message }));
2492
1461
  }
2493
1462
  };
2494
1463
  const subscription = copilotkit.subscribe(subscriber);
@@ -2500,56 +1469,65 @@ function CopilotListeners() {
2500
1469
  }
2501
1470
 
2502
1471
  // src/components/copilot-provider/copilotkit.tsx
2503
- var import_jsx_runtime10 = require("react/jsx-runtime");
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);
1476
+ const showInspector = shouldShowDevConsole(props.enableInspector);
2507
1477
  const publicApiKey = props.publicApiKey || props.publicLicenseKey;
2508
- const renderArr = (0, import_react16.useMemo)(() => [{ render: CoAgentStateRenderBridge }], []);
2509
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ToastProvider, { enabled, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CopilotErrorBoundary, { publicApiKey, showUsageBanner: enabled, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ThreadsProvider, { threadId: props.threadId, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react17.CopilotKitProvider, __spreadProps(__spreadValues({}, props), { renderCustomMessages: renderArr, useSingleEndpoint: true, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CopilotKitInternal, __spreadProps(__spreadValues({}, props), { children })) })) }) }) });
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
+ ) }) }) });
2510
1488
  }
2511
1489
  function CopilotKitInternal(cpkProps) {
2512
1490
  var _b;
2513
1491
  const _a = cpkProps, { children } = _a, props = __objRest(_a, ["children"]);
2514
1492
  validateProps(cpkProps);
2515
1493
  const publicApiKey = props.publicLicenseKey || props.publicApiKey;
2516
- const chatApiEndpoint = props.runtimeUrl || import_shared13.COPILOT_CLOUD_CHAT_URL;
2517
- const [actions, setActions] = (0, import_react16.useState)({});
2518
- const [registeredActionConfigs, setRegisteredActionConfigs] = (0, import_react16.useState)(/* @__PURE__ */ new Map());
2519
- const chatComponentsCache = (0, import_react16.useRef)({
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)({
2520
1498
  actions: {},
2521
1499
  coAgentStateRenders: {}
2522
1500
  });
2523
1501
  const { addElement, removeElement, printTree, getAllElements } = use_tree_default();
2524
- const [isLoading, setIsLoading] = (0, import_react16.useState)(false);
2525
- const [chatInstructions, setChatInstructions] = (0, import_react16.useState)("");
2526
- const [authStates, setAuthStates] = (0, import_react16.useState)({});
2527
- const [extensions, setExtensions] = (0, import_react16.useState)({});
2528
- const [additionalInstructions, setAdditionalInstructions] = (0, import_react16.useState)([]);
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)([]);
2529
1507
  const {
2530
1508
  addElement: addDocument,
2531
1509
  removeElement: removeDocument,
2532
1510
  allElements: allDocuments
2533
1511
  } = use_flat_category_store_default();
2534
- const setAction = (0, import_react16.useCallback)((id, action) => {
1512
+ const setAction = (0, import_react14.useCallback)((id, action) => {
2535
1513
  setActions((prevPoints) => {
2536
1514
  return __spreadProps(__spreadValues({}, prevPoints), {
2537
1515
  [id]: action
2538
1516
  });
2539
1517
  });
2540
1518
  }, []);
2541
- const removeAction = (0, import_react16.useCallback)((id) => {
1519
+ const removeAction = (0, import_react14.useCallback)((id) => {
2542
1520
  setActions((prevPoints) => {
2543
1521
  const newPoints = __spreadValues({}, prevPoints);
2544
1522
  delete newPoints[id];
2545
1523
  return newPoints;
2546
1524
  });
2547
1525
  }, []);
2548
- const getContextString = (0, import_react16.useCallback)(
1526
+ const getContextString = (0, import_react14.useCallback)(
2549
1527
  (documents, categories) => {
2550
- const documentsString = documents.map((document2) => {
2551
- return `${document2.name} (${document2.sourceApplication}):
2552
- ${document2.getContents()}`;
1528
+ const documentsString = documents.map((document) => {
1529
+ return `${document.name} (${document.sourceApplication}):
1530
+ ${document.getContents()}`;
2553
1531
  }).join("\n\n");
2554
1532
  const nonDocumentStrings = printTree(categories);
2555
1533
  return `${documentsString}
@@ -2558,46 +1536,46 @@ ${nonDocumentStrings}`;
2558
1536
  },
2559
1537
  [printTree]
2560
1538
  );
2561
- const addContext = (0, import_react16.useCallback)(
1539
+ const addContext = (0, import_react14.useCallback)(
2562
1540
  (context, parentId, categories = defaultCopilotContextCategories) => {
2563
1541
  return addElement(context, categories, parentId);
2564
1542
  },
2565
1543
  [addElement]
2566
1544
  );
2567
- const removeContext = (0, import_react16.useCallback)(
1545
+ const removeContext = (0, import_react14.useCallback)(
2568
1546
  (id) => {
2569
1547
  removeElement(id);
2570
1548
  },
2571
1549
  [removeElement]
2572
1550
  );
2573
- const getAllContext = (0, import_react16.useCallback)(() => {
1551
+ const getAllContext = (0, import_react14.useCallback)(() => {
2574
1552
  return getAllElements();
2575
1553
  }, [getAllElements]);
2576
- const getFunctionCallHandler = (0, import_react16.useCallback)(
1554
+ const getFunctionCallHandler = (0, import_react14.useCallback)(
2577
1555
  (customEntryPoints) => {
2578
1556
  return entryPointsToFunctionCallHandler(Object.values(customEntryPoints || actions));
2579
1557
  },
2580
1558
  [actions]
2581
1559
  );
2582
- const getDocumentsContext = (0, import_react16.useCallback)(
1560
+ const getDocumentsContext = (0, import_react14.useCallback)(
2583
1561
  (categories) => {
2584
1562
  return allDocuments(categories);
2585
1563
  },
2586
1564
  [allDocuments]
2587
1565
  );
2588
- const addDocumentContext = (0, import_react16.useCallback)(
1566
+ const addDocumentContext = (0, import_react14.useCallback)(
2589
1567
  (documentPointer, categories = defaultCopilotContextCategories) => {
2590
1568
  return addDocument(documentPointer, categories);
2591
1569
  },
2592
1570
  [addDocument]
2593
1571
  );
2594
- const removeDocumentContext = (0, import_react16.useCallback)(
1572
+ const removeDocumentContext = (0, import_react14.useCallback)(
2595
1573
  (documentId) => {
2596
1574
  removeDocument(documentId);
2597
1575
  },
2598
1576
  [removeDocument]
2599
1577
  );
2600
- const copilotApiConfig = (0, import_react16.useMemo)(() => {
1578
+ const copilotApiConfig = (0, import_react14.useMemo)(() => {
2601
1579
  var _a2, _b2;
2602
1580
  let cloud = void 0;
2603
1581
  if (publicApiKey) {
@@ -2633,7 +1611,7 @@ ${nonDocumentStrings}`;
2633
1611
  props.cloudRestrictToTopic,
2634
1612
  props.guardrails_c
2635
1613
  ]);
2636
- const headers = (0, import_react16.useMemo)(() => {
1614
+ const headers = (0, import_react14.useMemo)(() => {
2637
1615
  const authHeaders = Object.values(authStates || {}).reduce((acc, state) => {
2638
1616
  if (state.status === "authenticated" && state.authHeaders) {
2639
1617
  return __spreadValues(__spreadValues({}, acc), Object.entries(state.authHeaders).reduce(
@@ -2645,27 +1623,27 @@ ${nonDocumentStrings}`;
2645
1623
  }
2646
1624
  return acc;
2647
1625
  }, {});
2648
- return __spreadValues(__spreadValues(__spreadValues({}, copilotApiConfig.headers || {}), copilotApiConfig.publicApiKey ? { [import_shared13.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey } : {}), authHeaders);
1626
+ return __spreadValues(__spreadValues(__spreadValues({}, copilotApiConfig.headers || {}), copilotApiConfig.publicApiKey ? { [import_shared12.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey } : {}), authHeaders);
2649
1627
  }, [copilotApiConfig.headers, copilotApiConfig.publicApiKey, authStates]);
2650
- const [internalErrorHandlers, _setInternalErrorHandler] = (0, import_react16.useState)({});
2651
- const setInternalErrorHandler = (0, import_react16.useCallback)((handler) => {
1628
+ const [internalErrorHandlers, _setInternalErrorHandler] = (0, import_react14.useState)({});
1629
+ const setInternalErrorHandler = (0, import_react14.useCallback)((handler) => {
2652
1630
  _setInternalErrorHandler((prev) => __spreadValues(__spreadValues({}, prev), handler));
2653
1631
  }, []);
2654
- const removeInternalErrorHandler = (0, import_react16.useCallback)((key) => {
1632
+ const removeInternalErrorHandler = (0, import_react14.useCallback)((key) => {
2655
1633
  _setInternalErrorHandler((prev) => {
2656
1634
  const _a2 = prev, { [key]: _removed } = _a2, rest = __objRest(_a2, [__restKey(key)]);
2657
1635
  return rest;
2658
1636
  });
2659
1637
  }, []);
2660
- const onErrorRef = (0, import_react16.useRef)(props.onError);
2661
- (0, import_react16.useEffect)(() => {
1638
+ const onErrorRef = (0, import_react14.useRef)(props.onError);
1639
+ (0, import_react14.useEffect)(() => {
2662
1640
  onErrorRef.current = props.onError;
2663
1641
  }, [props.onError]);
2664
- const internalHandlersRef = (0, import_react16.useRef)({});
2665
- (0, import_react16.useEffect)(() => {
1642
+ const internalHandlersRef = (0, import_react14.useRef)({});
1643
+ (0, import_react14.useEffect)(() => {
2666
1644
  internalHandlersRef.current = internalErrorHandlers;
2667
1645
  }, [internalErrorHandlers]);
2668
- const handleErrors = (0, import_react16.useCallback)(
1646
+ const handleErrors = (0, import_react14.useCallback)(
2669
1647
  (error) => __async(this, null, function* () {
2670
1648
  if (copilotApiConfig.publicApiKey && onErrorRef.current) {
2671
1649
  try {
@@ -2685,14 +1663,14 @@ ${nonDocumentStrings}`;
2685
1663
  }),
2686
1664
  [copilotApiConfig.publicApiKey]
2687
1665
  );
2688
- const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = (0, import_react16.useState)({});
2689
- const addChatSuggestionConfiguration = (0, import_react16.useCallback)(
1666
+ const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = (0, import_react14.useState)({});
1667
+ const addChatSuggestionConfiguration = (0, import_react14.useCallback)(
2690
1668
  (id, suggestion) => {
2691
1669
  setChatSuggestionConfiguration((prev) => __spreadProps(__spreadValues({}, prev), { [id]: suggestion }));
2692
1670
  },
2693
1671
  [setChatSuggestionConfiguration]
2694
1672
  );
2695
- const removeChatSuggestionConfiguration = (0, import_react16.useCallback)(
1673
+ const removeChatSuggestionConfiguration = (0, import_react14.useCallback)(
2696
1674
  (id) => {
2697
1675
  setChatSuggestionConfiguration((prev) => {
2698
1676
  const _a2 = prev, { [id]: _ } = _a2, rest = __objRest(_a2, [__restKey(id)]);
@@ -2701,10 +1679,10 @@ ${nonDocumentStrings}`;
2701
1679
  },
2702
1680
  [setChatSuggestionConfiguration]
2703
1681
  );
2704
- const [availableAgents, setAvailableAgents] = (0, import_react16.useState)([]);
2705
- const [coagentStates, setCoagentStates] = (0, import_react16.useState)({});
2706
- const coagentStatesRef = (0, import_react16.useRef)({});
2707
- const setCoagentStatesWithRef = (0, import_react16.useCallback)(
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)(
2708
1686
  (value) => {
2709
1687
  const newValue = typeof value === "function" ? value(coagentStatesRef.current) : value;
2710
1688
  coagentStatesRef.current = newValue;
@@ -2720,8 +1698,8 @@ ${nonDocumentStrings}`;
2720
1698
  agentName: props.agent
2721
1699
  };
2722
1700
  }
2723
- const [agentSession, setAgentSession] = (0, import_react16.useState)(initialAgentSession);
2724
- (0, import_react16.useEffect)(() => {
1701
+ const [agentSession, setAgentSession] = (0, import_react14.useState)(initialAgentSession);
1702
+ (0, import_react14.useEffect)(() => {
2725
1703
  if (props.agent) {
2726
1704
  setAgentSession({
2727
1705
  agentName: props.agent
@@ -2731,7 +1709,7 @@ ${nonDocumentStrings}`;
2731
1709
  }
2732
1710
  }, [props.agent]);
2733
1711
  const { threadId, setThreadId: setInternalThreadId } = useThreads();
2734
- const setThreadId = (0, import_react16.useCallback)(
1712
+ const setThreadId = (0, import_react14.useCallback)(
2735
1713
  (value) => {
2736
1714
  if (props.threadId) {
2737
1715
  throw new Error("Cannot call setThreadId() when threadId is provided via props.");
@@ -2740,11 +1718,11 @@ ${nonDocumentStrings}`;
2740
1718
  },
2741
1719
  [props.threadId]
2742
1720
  );
2743
- const [runId, setRunId] = (0, import_react16.useState)(null);
2744
- const chatAbortControllerRef = (0, import_react16.useRef)(null);
1721
+ const [runId, setRunId] = (0, import_react14.useState)(null);
1722
+ const chatAbortControllerRef = (0, import_react14.useRef)(null);
2745
1723
  const showDevConsole = shouldShowDevConsole(props.showDevConsole);
2746
- const [interruptActions, _setInterruptActions] = (0, import_react16.useState)({});
2747
- const setInterruptAction = (0, import_react16.useCallback)((action) => {
1724
+ const [interruptActions, _setInterruptActions] = (0, import_react14.useState)({});
1725
+ const setInterruptAction = (0, import_react14.useCallback)((action) => {
2748
1726
  _setInterruptActions((prev) => {
2749
1727
  var _a2;
2750
1728
  if (action == null || !action.id) {
@@ -2755,14 +1733,14 @@ ${nonDocumentStrings}`;
2755
1733
  });
2756
1734
  });
2757
1735
  }, []);
2758
- const removeInterruptAction = (0, import_react16.useCallback)((actionId) => {
1736
+ const removeInterruptAction = (0, import_react14.useCallback)((actionId) => {
2759
1737
  _setInterruptActions((prev) => {
2760
1738
  const _a2 = prev, { [actionId]: _ } = _a2, rest = __objRest(_a2, [__restKey(actionId)]);
2761
1739
  return rest;
2762
1740
  });
2763
1741
  }, []);
2764
- const [interruptEventQueue, setInterruptEventQueue] = (0, import_react16.useState)({});
2765
- const addInterruptEvent = (0, import_react16.useCallback)((queuedEvent) => {
1742
+ const [interruptEventQueue, setInterruptEventQueue] = (0, import_react14.useState)({});
1743
+ const addInterruptEvent = (0, import_react14.useCallback)((queuedEvent) => {
2766
1744
  setInterruptEventQueue((prev) => {
2767
1745
  const threadQueue = prev[queuedEvent.threadId] || [];
2768
1746
  return __spreadProps(__spreadValues({}, prev), {
@@ -2770,7 +1748,7 @@ ${nonDocumentStrings}`;
2770
1748
  });
2771
1749
  });
2772
1750
  }, []);
2773
- const resolveInterruptEvent = (0, import_react16.useCallback)(
1751
+ const resolveInterruptEvent = (0, import_react14.useCallback)(
2774
1752
  (threadId2, eventId, response) => {
2775
1753
  setInterruptEventQueue((prev) => {
2776
1754
  const threadQueue = prev[threadId2] || [];
@@ -2783,20 +1761,20 @@ ${nonDocumentStrings}`;
2783
1761
  },
2784
1762
  []
2785
1763
  );
2786
- const memoizedChildren = (0, import_react16.useMemo)(() => children, [children]);
2787
- const [bannerError, setBannerError] = (0, import_react16.useState)(null);
2788
- const agentLock = (0, import_react16.useMemo)(() => {
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)(() => {
2789
1767
  var _a2;
2790
1768
  return (_a2 = props.agent) != null ? _a2 : null;
2791
1769
  }, [props.agent]);
2792
- const forwardedParameters = (0, import_react16.useMemo)(
1770
+ const forwardedParameters = (0, import_react14.useMemo)(
2793
1771
  () => {
2794
1772
  var _a2;
2795
1773
  return (_a2 = props.forwardedParameters) != null ? _a2 : {};
2796
1774
  },
2797
1775
  [props.forwardedParameters]
2798
1776
  );
2799
- const updateExtensions = (0, import_react16.useCallback)(
1777
+ const updateExtensions = (0, import_react14.useCallback)(
2800
1778
  (newExtensions) => {
2801
1779
  setExtensions((prev) => {
2802
1780
  const resolved = typeof newExtensions === "function" ? newExtensions(prev) : newExtensions;
@@ -2808,7 +1786,7 @@ ${nonDocumentStrings}`;
2808
1786
  },
2809
1787
  [setExtensions]
2810
1788
  );
2811
- const updateAuthStates = (0, import_react16.useCallback)(
1789
+ const updateAuthStates = (0, import_react14.useCallback)(
2812
1790
  (newAuthStates) => {
2813
1791
  setAuthStates((prev) => {
2814
1792
  const resolved = typeof newAuthStates === "function" ? newAuthStates(prev) : newAuthStates;
@@ -2820,8 +1798,8 @@ ${nonDocumentStrings}`;
2820
1798
  },
2821
1799
  [setAuthStates]
2822
1800
  );
2823
- const handleSetRegisteredActions = (0, import_react16.useCallback)((actionConfig) => {
2824
- const key = actionConfig.action.name || (0, import_shared13.randomUUID)();
1801
+ const handleSetRegisteredActions = (0, import_react14.useCallback)((actionConfig) => {
1802
+ const key = actionConfig.action.name || (0, import_shared12.randomUUID)();
2825
1803
  setRegisteredActionConfigs((prev) => {
2826
1804
  const newMap = new Map(prev);
2827
1805
  newMap.set(key, actionConfig);
@@ -2829,25 +1807,25 @@ ${nonDocumentStrings}`;
2829
1807
  });
2830
1808
  return key;
2831
1809
  }, []);
2832
- const handleRemoveRegisteredAction = (0, import_react16.useCallback)((actionKey) => {
1810
+ const handleRemoveRegisteredAction = (0, import_react14.useCallback)((actionKey) => {
2833
1811
  setRegisteredActionConfigs((prev) => {
2834
1812
  const newMap = new Map(prev);
2835
1813
  newMap.delete(actionKey);
2836
1814
  return newMap;
2837
1815
  });
2838
1816
  }, []);
2839
- const RegisteredActionsRenderer = (0, import_react16.useMemo)(() => {
2840
- return () => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: Array.from(registeredActionConfigs.entries()).map(([key, config]) => {
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]) => {
2841
1819
  const Component = config.component;
2842
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Component, { action: config.action }, key);
1820
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Component, { action: config.action }, key);
2843
1821
  }) });
2844
1822
  }, [registeredActionConfigs]);
2845
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2846
- import_react17.CopilotChatConfigurationProvider,
1823
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1824
+ import_react15.CopilotChatConfigurationProvider,
2847
1825
  {
2848
1826
  agentId: (_b = props.agent) != null ? _b : "default",
2849
1827
  threadId,
2850
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1828
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2851
1829
  CopilotContext.Provider,
2852
1830
  {
2853
1831
  value: {
@@ -2909,14 +1887,13 @@ ${nonDocumentStrings}`;
2909
1887
  removeInternalErrorHandler
2910
1888
  },
2911
1889
  children: [
2912
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CopilotListeners, {}),
2913
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(CoAgentStateRendersProvider, { children: [
2914
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MessagesTapProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(CopilotMessages, { children: [
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: [
2915
1893
  memoizedChildren,
2916
- showDevConsole && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ConsoleTrigger, {}),
2917
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(RegisteredActionsRenderer, {})
1894
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RegisteredActionsRenderer, {})
2918
1895
  ] }) }),
2919
- bannerError && showDevConsole && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1896
+ bannerError && showDevConsole && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2920
1897
  UsageBanner,
2921
1898
  {
2922
1899
  severity: bannerError.severity,
@@ -2965,12 +1942,12 @@ function validateProps(props) {
2965
1942
  const cloudFeatures = Object.keys(props).filter((key) => key.endsWith("_c"));
2966
1943
  const hasApiKey = props.publicApiKey || props.publicLicenseKey;
2967
1944
  if (!props.runtimeUrl && !hasApiKey) {
2968
- throw new import_shared13.ConfigurationError(
1945
+ throw new import_shared12.ConfigurationError(
2969
1946
  "Missing required prop: 'runtimeUrl' or 'publicApiKey' or 'publicLicenseKey'"
2970
1947
  );
2971
1948
  }
2972
1949
  if (cloudFeatures.length > 0 && !hasApiKey) {
2973
- throw new import_shared13.MissingPublicApiKeyError(
1950
+ throw new import_shared12.MissingPublicApiKeyError(
2974
1951
  `Missing required prop: 'publicApiKey' or 'publicLicenseKey' to use cloud features: ${cloudFeatures.map(formatFeatureName).join(", ")}`
2975
1952
  );
2976
1953
  }