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