@copilotkit/react-core 1.10.0-next.10 → 1.10.0-next.12

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 (96) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{chunk-LVWV62JZ.mjs → chunk-2PL3WCKM.mjs} +18 -17
  3. package/dist/chunk-2PL3WCKM.mjs.map +1 -0
  4. package/dist/chunk-3BASANUO.mjs +170 -0
  5. package/dist/chunk-3BASANUO.mjs.map +1 -0
  6. package/dist/{chunk-L6HQIJ74.mjs → chunk-7TFJCTYY.mjs} +8 -8
  7. package/dist/{chunk-2TSNHEIS.mjs → chunk-BVRWKRDI.mjs} +5 -5
  8. package/dist/{chunk-DLEXVOQE.mjs → chunk-GEKWHETN.mjs} +4 -4
  9. package/dist/{chunk-Q42NJFXR.mjs → chunk-IKWGQG5V.mjs} +4 -4
  10. package/dist/{chunk-JJDXTTEN.mjs → chunk-K4HXT453.mjs} +2 -2
  11. package/dist/{chunk-JBLMXZ3O.mjs → chunk-KH27ZS4Y.mjs} +6 -6
  12. package/dist/{chunk-QGE7U4NV.mjs → chunk-MO2BUFJD.mjs} +2 -2
  13. package/dist/{chunk-TWYUYC4F.mjs → chunk-MUDXTKXE.mjs} +6 -6
  14. package/dist/{chunk-COEUPDRL.mjs → chunk-OGXCE54J.mjs} +8 -8
  15. package/dist/{chunk-X2DNXTME.mjs → chunk-OPRDTF4S.mjs} +4 -4
  16. package/dist/chunk-PIF5KJYI.mjs +103 -0
  17. package/dist/chunk-PIF5KJYI.mjs.map +1 -0
  18. package/dist/{chunk-IHAZJF3V.mjs → chunk-PYPPRFZ6.mjs} +2 -2
  19. package/dist/{chunk-ADZDXHVC.mjs → chunk-Q573EMPD.mjs} +4 -4
  20. package/dist/chunk-WSXTUD36.mjs +759 -0
  21. package/dist/chunk-WSXTUD36.mjs.map +1 -0
  22. package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
  23. package/dist/components/copilot-provider/copilotkit.js +1034 -63
  24. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  25. package/dist/components/copilot-provider/copilotkit.mjs +11 -8
  26. package/dist/components/copilot-provider/index.js +1034 -63
  27. package/dist/components/copilot-provider/index.js.map +1 -1
  28. package/dist/components/copilot-provider/index.mjs +11 -8
  29. package/dist/components/dev-console/console-trigger.d.ts +8 -0
  30. package/dist/components/dev-console/console-trigger.js +1131 -0
  31. package/dist/components/dev-console/console-trigger.js.map +1 -0
  32. package/dist/components/dev-console/console-trigger.mjs +13 -0
  33. package/dist/components/dev-console/console-trigger.mjs.map +1 -0
  34. package/dist/components/dev-console/developer-console-modal.d.ts +10 -0
  35. package/dist/components/dev-console/developer-console-modal.js +977 -0
  36. package/dist/components/dev-console/developer-console-modal.js.map +1 -0
  37. package/dist/components/dev-console/developer-console-modal.mjs +12 -0
  38. package/dist/components/dev-console/developer-console-modal.mjs.map +1 -0
  39. package/dist/components/dev-console/icons.d.ts +9 -0
  40. package/dist/components/dev-console/icons.js +131 -0
  41. package/dist/components/dev-console/icons.js.map +1 -0
  42. package/dist/components/dev-console/icons.mjs +16 -0
  43. package/dist/components/dev-console/icons.mjs.map +1 -0
  44. package/dist/components/error-boundary/error-boundary.mjs +2 -2
  45. package/dist/components/index.js +1034 -63
  46. package/dist/components/index.js.map +1 -1
  47. package/dist/components/index.mjs +11 -8
  48. package/dist/context/index.mjs +4 -4
  49. package/dist/hooks/index.js.map +1 -1
  50. package/dist/hooks/index.mjs +32 -29
  51. package/dist/hooks/use-chat.mjs +4 -4
  52. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  53. package/dist/hooks/use-coagent.js.map +1 -1
  54. package/dist/hooks/use-coagent.mjs +16 -13
  55. package/dist/hooks/use-copilot-action.mjs +2 -2
  56. package/dist/hooks/use-copilot-authenticated-action.mjs +3 -3
  57. package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
  58. package/dist/hooks/use-copilot-chat-headless_c.mjs +16 -13
  59. package/dist/hooks/use-copilot-chat.js.map +1 -1
  60. package/dist/hooks/use-copilot-chat.mjs +16 -13
  61. package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
  62. package/dist/hooks/use-copilot-chat_internal.mjs +15 -12
  63. package/dist/hooks/use-langgraph-interrupt-render.mjs +1 -1
  64. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  65. package/dist/hooks/use-langgraph-interrupt.mjs +16 -13
  66. package/dist/index.js +1131 -169
  67. package/dist/index.js.map +1 -1
  68. package/dist/index.mjs +36 -33
  69. package/dist/lib/copilot-task.js.map +1 -1
  70. package/dist/lib/copilot-task.mjs +13 -10
  71. package/dist/lib/index.js.map +1 -1
  72. package/dist/lib/index.mjs +13 -10
  73. package/dist/utils/extract.js.map +1 -1
  74. package/dist/utils/extract.mjs +11 -8
  75. package/dist/utils/index.js.map +1 -1
  76. package/dist/utils/index.mjs +11 -8
  77. package/dist/utils/suggestions.js.map +1 -1
  78. package/dist/utils/suggestions.mjs +11 -8
  79. package/package.json +3 -3
  80. package/src/components/copilot-provider/copilotkit.tsx +5 -6
  81. package/src/components/dev-console/console-trigger.tsx +190 -0
  82. package/src/components/dev-console/developer-console-modal.tsx +866 -0
  83. package/src/components/dev-console/icons.tsx +101 -0
  84. package/dist/chunk-LVWV62JZ.mjs.map +0 -1
  85. /package/dist/{chunk-L6HQIJ74.mjs.map → chunk-7TFJCTYY.mjs.map} +0 -0
  86. /package/dist/{chunk-2TSNHEIS.mjs.map → chunk-BVRWKRDI.mjs.map} +0 -0
  87. /package/dist/{chunk-DLEXVOQE.mjs.map → chunk-GEKWHETN.mjs.map} +0 -0
  88. /package/dist/{chunk-Q42NJFXR.mjs.map → chunk-IKWGQG5V.mjs.map} +0 -0
  89. /package/dist/{chunk-JJDXTTEN.mjs.map → chunk-K4HXT453.mjs.map} +0 -0
  90. /package/dist/{chunk-JBLMXZ3O.mjs.map → chunk-KH27ZS4Y.mjs.map} +0 -0
  91. /package/dist/{chunk-QGE7U4NV.mjs.map → chunk-MO2BUFJD.mjs.map} +0 -0
  92. /package/dist/{chunk-TWYUYC4F.mjs.map → chunk-MUDXTKXE.mjs.map} +0 -0
  93. /package/dist/{chunk-COEUPDRL.mjs.map → chunk-OGXCE54J.mjs.map} +0 -0
  94. /package/dist/{chunk-X2DNXTME.mjs.map → chunk-OPRDTF4S.mjs.map} +0 -0
  95. /package/dist/{chunk-IHAZJF3V.mjs.map → chunk-PYPPRFZ6.mjs.map} +0 -0
  96. /package/dist/{chunk-ADZDXHVC.mjs.map → chunk-Q573EMPD.mjs.map} +0 -0
@@ -86,7 +86,7 @@ __export(components_exports, {
86
86
  module.exports = __toCommonJS(components_exports);
87
87
 
88
88
  // src/components/copilot-provider/copilotkit.tsx
89
- var import_react9 = require("react");
89
+ var import_react11 = require("react");
90
90
 
91
91
  // src/context/copilot-context.tsx
92
92
  var import_react = __toESM(require("react"));
@@ -315,7 +315,7 @@ function setsHaveIntersection(setA, setB) {
315
315
 
316
316
  // src/components/copilot-provider/copilotkit.tsx
317
317
  var import_react_dom = require("react-dom");
318
- var import_shared9 = require("@copilotkit/shared");
318
+ var import_shared10 = require("@copilotkit/shared");
319
319
 
320
320
  // src/hooks/use-flat-category-store.ts
321
321
  var import_react3 = require("react");
@@ -396,6 +396,15 @@ var emptyCopilotContext2 = {
396
396
  setSuggestions: () => []
397
397
  };
398
398
  var CopilotMessagesContext = import_react4.default.createContext(emptyCopilotContext2);
399
+ function useCopilotMessagesContext() {
400
+ const context = import_react4.default.useContext(CopilotMessagesContext);
401
+ if (context === emptyCopilotContext2) {
402
+ throw new Error(
403
+ "A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`"
404
+ );
405
+ }
406
+ return context;
407
+ }
399
408
 
400
409
  // src/components/copilot-provider/copilot-messages.tsx
401
410
  var import_runtime_client_gql = require("@copilotkit/runtime-client-gql");
@@ -1330,69 +1339,1028 @@ var CopilotErrorBoundary = class extends import_react8.default.Component {
1330
1339
  }
1331
1340
  };
1332
1341
 
1333
- // src/components/copilot-provider/copilotkit.tsx
1342
+ // src/components/dev-console/console-trigger.tsx
1343
+ var import_react10 = require("react");
1344
+
1345
+ // src/components/dev-console/icons.tsx
1334
1346
  var import_jsx_runtime5 = require("react/jsx-runtime");
1347
+ var ExclamationMarkTriangleIcon = () => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1348
+ "svg",
1349
+ {
1350
+ width: "13.3967723px",
1351
+ height: "12px",
1352
+ viewBox: "0 0 13.3967723 12",
1353
+ version: "1.1",
1354
+ xmlns: "http://www.w3.org/2000/svg",
1355
+ 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)(
1356
+ "path",
1357
+ {
1358
+ 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",
1359
+ id: "Shape"
1360
+ }
1361
+ ) }) })
1362
+ }
1363
+ );
1364
+ var CheckIcon = () => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1365
+ "svg",
1366
+ {
1367
+ width: "14px",
1368
+ height: "14px",
1369
+ viewBox: "0 0 14 14",
1370
+ version: "1.1",
1371
+ xmlns: "http://www.w3.org/2000/svg",
1372
+ 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)(
1373
+ "path",
1374
+ {
1375
+ 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",
1376
+ id: "Shape"
1377
+ }
1378
+ ) }) }) })
1379
+ }
1380
+ );
1381
+ var CopilotKitIcon = () => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1382
+ "svg",
1383
+ {
1384
+ width: "33px",
1385
+ height: "35px",
1386
+ viewBox: "0 0 33 35",
1387
+ version: "1.1",
1388
+ xmlns: "http://www.w3.org/2000/svg",
1389
+ children: [
1390
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("title", { children: "bd5c9079-929b-4d55-bdc9-16d1c8181b71" }),
1391
+ /* @__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)(
1392
+ "image",
1393
+ {
1394
+ x: "0",
1395
+ y: "0",
1396
+ width: "33",
1397
+ height: "35",
1398
+ xlinkHref: "data:image/png;base64,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"
1399
+ }
1400
+ ) })
1401
+ ]
1402
+ }
1403
+ );
1404
+
1405
+ // src/components/dev-console/developer-console-modal.tsx
1406
+ var import_shared9 = require("@copilotkit/shared");
1407
+ var import_react9 = require("react");
1408
+ var import_jsx_runtime6 = require("react/jsx-runtime");
1409
+ function DeveloperConsoleModal({ isOpen, onClose, hasApiKey }) {
1410
+ const context = useCopilotContext();
1411
+ const messagesContext = useCopilotMessagesContext();
1412
+ const [activeTab, setActiveTab] = (0, import_react9.useState)("actions");
1413
+ (0, import_react9.useEffect)(() => {
1414
+ const handleEscape = (e) => {
1415
+ if (e.key === "Escape") {
1416
+ onClose();
1417
+ }
1418
+ };
1419
+ if (isOpen) {
1420
+ document.addEventListener("keydown", handleEscape);
1421
+ document.body.style.overflow = "hidden";
1422
+ }
1423
+ return () => {
1424
+ document.removeEventListener("keydown", handleEscape);
1425
+ document.body.style.overflow = "unset";
1426
+ };
1427
+ }, [isOpen, onClose]);
1428
+ if (!isOpen)
1429
+ return null;
1430
+ const displayContext = hasApiKey ? context : {
1431
+ actions: {
1432
+ search_web: { name: "search_web", description: "Search the web for information" },
1433
+ send_email: { name: "send_email", description: "Send an email to a contact" },
1434
+ create_document: { name: "create_document", description: "Create a new document" },
1435
+ analyze_code: {
1436
+ name: "analyze_code",
1437
+ description: "Analyze code for issues and improvements"
1438
+ },
1439
+ generate_tests: {
1440
+ name: "generate_tests",
1441
+ description: "Generate unit tests for functions"
1442
+ }
1443
+ },
1444
+ getAllContext: () => [
1445
+ {
1446
+ content: "User preferences: dark mode enabled, TypeScript preferred",
1447
+ metadata: { source: "settings" }
1448
+ },
1449
+ {
1450
+ content: "Current project: Building a React application with CopilotKit",
1451
+ metadata: { source: "project" }
1452
+ },
1453
+ {
1454
+ content: "Recent activity: Implemented authentication system",
1455
+ metadata: { source: "activity" }
1456
+ },
1457
+ {
1458
+ content: "Development environment: VS Code, Node.js 18, React 18",
1459
+ metadata: { source: "environment" }
1460
+ }
1461
+ ],
1462
+ coagentStates: {
1463
+ "main-agent": { status: "active", lastUpdate: Date.now() },
1464
+ "code-assistant": { status: "active", lastUpdate: Date.now() - 15e3 },
1465
+ "search-agent": { status: "idle", lastUpdate: Date.now() - 6e4 }
1466
+ },
1467
+ getDocumentsContext: () => [
1468
+ {
1469
+ content: "README.md: Project setup and installation instructions",
1470
+ metadata: { type: "documentation" }
1471
+ },
1472
+ {
1473
+ content: "API Documentation: CopilotKit integration guide",
1474
+ metadata: { type: "documentation" }
1475
+ },
1476
+ {
1477
+ content: "package.json: Project dependencies and scripts",
1478
+ metadata: { type: "configuration" }
1479
+ }
1480
+ ]
1481
+ };
1482
+ const displayMessagesContext = hasApiKey ? messagesContext : {
1483
+ messages: [
1484
+ {
1485
+ id: "1",
1486
+ role: "user",
1487
+ content: "Help me implement a todo list with drag and drop functionality"
1488
+ },
1489
+ {
1490
+ id: "2",
1491
+ role: "assistant",
1492
+ 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."
1493
+ },
1494
+ { id: "3", role: "user", content: "Can you also add priority levels and due dates?" },
1495
+ {
1496
+ id: "4",
1497
+ role: "assistant",
1498
+ 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."
1499
+ },
1500
+ { id: "5", role: "user", content: "Perfect! How about adding categories or tags?" }
1501
+ ]
1502
+ };
1503
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1504
+ "div",
1505
+ {
1506
+ style: {
1507
+ position: "fixed",
1508
+ top: 0,
1509
+ left: 0,
1510
+ right: 0,
1511
+ bottom: 0,
1512
+ zIndex: 9999,
1513
+ backgroundColor: "rgba(0, 0, 0, 0.3)",
1514
+ display: "flex",
1515
+ alignItems: "center",
1516
+ justifyContent: "center",
1517
+ padding: "16px"
1518
+ },
1519
+ onClick: onClose,
1520
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1521
+ "div",
1522
+ {
1523
+ style: {
1524
+ width: "1152px",
1525
+ maxWidth: "95vw",
1526
+ height: "80vh",
1527
+ backgroundColor: "white",
1528
+ borderRadius: "12px",
1529
+ boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
1530
+ display: "flex",
1531
+ flexDirection: "column",
1532
+ overflow: "hidden",
1533
+ position: "relative"
1534
+ },
1535
+ onClick: (e) => e.stopPropagation(),
1536
+ children: [
1537
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1538
+ "div",
1539
+ {
1540
+ style: {
1541
+ display: "flex",
1542
+ alignItems: "center",
1543
+ justifyContent: "space-between",
1544
+ padding: "24px",
1545
+ borderBottom: "1px solid #e5e7eb",
1546
+ minHeight: "73px",
1547
+ flexShrink: 0,
1548
+ filter: !hasApiKey ? "blur(0.3px)" : "none",
1549
+ opacity: !hasApiKey ? 0.95 : 1
1550
+ },
1551
+ children: [
1552
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "12px" }, children: [
1553
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(CopilotKitIcon, {}),
1554
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1555
+ "h1",
1556
+ {
1557
+ style: {
1558
+ fontWeight: "bold",
1559
+ fontSize: "20px",
1560
+ color: "#1f2937",
1561
+ margin: 0
1562
+ },
1563
+ children: "Developer Console"
1564
+ }
1565
+ ),
1566
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1567
+ "span",
1568
+ {
1569
+ style: {
1570
+ fontSize: "14px",
1571
+ color: "#6b7280",
1572
+ backgroundColor: "#f3f4f6",
1573
+ padding: "4px 8px",
1574
+ borderRadius: "4px"
1575
+ },
1576
+ children: [
1577
+ "v",
1578
+ import_shared9.COPILOTKIT_VERSION
1579
+ ]
1580
+ }
1581
+ )
1582
+ ] }),
1583
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1584
+ "button",
1585
+ {
1586
+ onClick: onClose,
1587
+ style: {
1588
+ color: "#9ca3af",
1589
+ fontSize: "24px",
1590
+ fontWeight: "300",
1591
+ border: "none",
1592
+ background: "none",
1593
+ cursor: "pointer",
1594
+ padding: "4px"
1595
+ },
1596
+ onMouseEnter: (e) => e.currentTarget.style.color = "#4b5563",
1597
+ onMouseLeave: (e) => e.currentTarget.style.color = "#9ca3af",
1598
+ children: "\xD7"
1599
+ }
1600
+ )
1601
+ ]
1602
+ }
1603
+ ),
1604
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1605
+ "div",
1606
+ {
1607
+ style: {
1608
+ display: "flex",
1609
+ borderBottom: "1px solid #e5e7eb",
1610
+ backgroundColor: "#f9fafb",
1611
+ minHeight: "50px",
1612
+ flexShrink: 0,
1613
+ filter: !hasApiKey ? "blur(0.3px)" : "none",
1614
+ opacity: !hasApiKey ? 0.9 : 1
1615
+ },
1616
+ children: [
1617
+ { id: "actions", label: "Actions", count: Object.keys(displayContext.actions).length },
1618
+ { id: "readables", label: "Readables", count: displayContext.getAllContext().length },
1619
+ {
1620
+ id: "agent",
1621
+ label: "Agent Status",
1622
+ count: Object.keys(displayContext.coagentStates).length
1623
+ },
1624
+ { id: "messages", label: "Messages", count: displayMessagesContext.messages.length },
1625
+ {
1626
+ id: "context",
1627
+ label: "Context",
1628
+ count: displayContext.getDocumentsContext([]).length
1629
+ }
1630
+ ].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1631
+ "button",
1632
+ {
1633
+ onClick: () => setActiveTab(tab.id),
1634
+ style: {
1635
+ padding: "12px 24px",
1636
+ fontSize: "14px",
1637
+ fontWeight: "500",
1638
+ border: "none",
1639
+ cursor: "pointer",
1640
+ backgroundColor: activeTab === tab.id ? "white" : "transparent",
1641
+ color: activeTab === tab.id ? "#2563eb" : "#6b7280",
1642
+ borderBottom: activeTab === tab.id ? "2px solid #2563eb" : "none",
1643
+ transition: "all 0.2s"
1644
+ },
1645
+ onMouseEnter: (e) => {
1646
+ if (activeTab !== tab.id) {
1647
+ e.currentTarget.style.color = "#1f2937";
1648
+ e.currentTarget.style.backgroundColor = "#f3f4f6";
1649
+ }
1650
+ },
1651
+ onMouseLeave: (e) => {
1652
+ if (activeTab !== tab.id) {
1653
+ e.currentTarget.style.color = "#6b7280";
1654
+ e.currentTarget.style.backgroundColor = "transparent";
1655
+ }
1656
+ },
1657
+ children: [
1658
+ tab.label,
1659
+ tab.count > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1660
+ "span",
1661
+ {
1662
+ style: {
1663
+ marginLeft: "8px",
1664
+ backgroundColor: "#e5e7eb",
1665
+ color: "#374151",
1666
+ padding: "2px 8px",
1667
+ borderRadius: "9999px",
1668
+ fontSize: "12px"
1669
+ },
1670
+ children: tab.count
1671
+ }
1672
+ )
1673
+ ]
1674
+ },
1675
+ tab.id
1676
+ ))
1677
+ }
1678
+ ),
1679
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1680
+ "div",
1681
+ {
1682
+ style: {
1683
+ height: "calc(100% - 142px)",
1684
+ overflow: "auto",
1685
+ padding: "24px",
1686
+ backgroundColor: "#f9fafb",
1687
+ filter: !hasApiKey ? "blur(0.3px)" : "none",
1688
+ opacity: !hasApiKey ? 0.85 : 1
1689
+ },
1690
+ children: [
1691
+ activeTab === "actions" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ActionsTab, { context: displayContext }),
1692
+ activeTab === "readables" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ReadablesTab, { context: displayContext }),
1693
+ activeTab === "agent" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(AgentStatusTab, { context: displayContext }),
1694
+ activeTab === "messages" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(MessagesTab, { messagesContext: displayMessagesContext }),
1695
+ activeTab === "context" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ContextTab, { context: displayContext })
1696
+ ]
1697
+ }
1698
+ ),
1699
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1700
+ "div",
1701
+ {
1702
+ style: {
1703
+ padding: "16px 24px",
1704
+ borderTop: "1px solid #e5e7eb",
1705
+ backgroundColor: "white",
1706
+ display: "flex",
1707
+ justifyContent: "space-between",
1708
+ alignItems: "center",
1709
+ minHeight: "57px",
1710
+ flexShrink: 0,
1711
+ filter: !hasApiKey ? "blur(0.3px)" : "none",
1712
+ opacity: !hasApiKey ? 0.9 : 1
1713
+ },
1714
+ children: [
1715
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { fontSize: "14px", color: "#6b7280" }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1716
+ "a",
1717
+ {
1718
+ href: "https://github.com/CopilotKit/CopilotKit/issues",
1719
+ target: "_blank",
1720
+ rel: "noopener noreferrer",
1721
+ style: { color: "#2563eb", textDecoration: "none" },
1722
+ onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
1723
+ onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
1724
+ children: "Report an issue"
1725
+ }
1726
+ ) }),
1727
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { fontSize: "14px", color: "#6b7280" }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1728
+ "a",
1729
+ {
1730
+ href: "https://mcp.copilotkit.ai/",
1731
+ target: "_blank",
1732
+ rel: "noopener noreferrer",
1733
+ style: { color: "#2563eb", textDecoration: "none" },
1734
+ onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
1735
+ onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
1736
+ children: "Add MCP Server \u2192"
1737
+ }
1738
+ ) })
1739
+ ]
1740
+ }
1741
+ ),
1742
+ !hasApiKey && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1743
+ "div",
1744
+ {
1745
+ style: {
1746
+ position: "absolute",
1747
+ top: 0,
1748
+ left: 0,
1749
+ right: 0,
1750
+ bottom: 0,
1751
+ backgroundColor: "rgba(255, 255, 255, 0.2)",
1752
+ backdropFilter: "blur(2px)",
1753
+ WebkitBackdropFilter: "blur(2px)",
1754
+ display: "flex",
1755
+ alignItems: "center",
1756
+ justifyContent: "center",
1757
+ borderRadius: "12px",
1758
+ zIndex: 10
1759
+ },
1760
+ onClick: (e) => e.stopPropagation(),
1761
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1762
+ "button",
1763
+ {
1764
+ onClick: () => window.open("https://cloud.copilotkit.ai/sign-in", "_blank"),
1765
+ style: {
1766
+ // Following button system specifications
1767
+ height: "48px",
1768
+ padding: "12px 24px",
1769
+ backgroundColor: "#030507",
1770
+ // textPrimary token
1771
+ color: "#FFFFFF",
1772
+ borderRadius: "12px",
1773
+ // Medium radius token
1774
+ border: "none",
1775
+ cursor: "pointer",
1776
+ fontSize: "14px",
1777
+ // Medium Semi Bold typography
1778
+ fontWeight: "600",
1779
+ fontFamily: "'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif",
1780
+ lineHeight: "22px",
1781
+ boxShadow: "0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)",
1782
+ transition: "all 200ms ease",
1783
+ // 200ms ease as per specs
1784
+ display: "inline-flex",
1785
+ alignItems: "center",
1786
+ gap: "8px",
1787
+ textTransform: "uppercase",
1788
+ letterSpacing: "0.5px"
1789
+ },
1790
+ onMouseEnter: (e) => {
1791
+ e.currentTarget.style.backgroundColor = "#575758";
1792
+ e.currentTarget.style.transform = "translateY(-1px)";
1793
+ e.currentTarget.style.boxShadow = "0 6px 20px rgba(3, 5, 7, 0.25), 0 2px 4px rgba(3, 5, 7, 0.15)";
1794
+ },
1795
+ onMouseLeave: (e) => {
1796
+ e.currentTarget.style.backgroundColor = "#030507";
1797
+ e.currentTarget.style.transform = "translateY(0)";
1798
+ e.currentTarget.style.boxShadow = "0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)";
1799
+ },
1800
+ onMouseDown: (e) => {
1801
+ e.currentTarget.style.backgroundColor = "#858589";
1802
+ e.currentTarget.style.transform = "translateY(0)";
1803
+ },
1804
+ onMouseUp: (e) => {
1805
+ e.currentTarget.style.backgroundColor = "#575758";
1806
+ e.currentTarget.style.transform = "translateY(-1px)";
1807
+ },
1808
+ onFocus: (e) => {
1809
+ e.currentTarget.style.outline = "2px solid #BEC9FF";
1810
+ e.currentTarget.style.outlineOffset = "2px";
1811
+ },
1812
+ onBlur: (e) => {
1813
+ e.currentTarget.style.outline = "none";
1814
+ },
1815
+ children: [
1816
+ "Get API Key",
1817
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { fontSize: "16px", marginLeft: "-4px" }, children: "\u2192" })
1818
+ ]
1819
+ }
1820
+ )
1821
+ }
1822
+ )
1823
+ ]
1824
+ }
1825
+ )
1826
+ }
1827
+ );
1828
+ }
1829
+ function ActionsTab({ context }) {
1830
+ const actions = Object.values(context.actions);
1831
+ if (actions.length === 0) {
1832
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
1833
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No actions available" }),
1834
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Actions will appear here when registered" })
1835
+ ] });
1836
+ }
1837
+ 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)(
1838
+ "div",
1839
+ {
1840
+ style: {
1841
+ backgroundColor: "white",
1842
+ padding: "16px",
1843
+ borderRadius: "8px",
1844
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
1845
+ border: "1px solid #e5e7eb"
1846
+ },
1847
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1848
+ "div",
1849
+ {
1850
+ style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" },
1851
+ children: [
1852
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { flex: 1 }, children: [
1853
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 4px 0" }, children: action.name }),
1854
+ action.description && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", color: "#4b5563", margin: "0 0 12px 0" }, children: action.description }),
1855
+ action.parameters && action.parameters.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { marginTop: "12px" }, children: [
1856
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1857
+ "p",
1858
+ {
1859
+ style: {
1860
+ fontSize: "12px",
1861
+ fontWeight: "500",
1862
+ color: "#6b7280",
1863
+ textTransform: "uppercase",
1864
+ margin: "0 0 4px 0"
1865
+ },
1866
+ children: "Parameters:"
1867
+ }
1868
+ ),
1869
+ /* @__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: [
1870
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { fontFamily: "monospace", color: "#374151" }, children: param.name }),
1871
+ param.required && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { marginLeft: "4px", fontSize: "12px", color: "#ef4444" }, children: "*required" }),
1872
+ param.type && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { style: { marginLeft: "8px", fontSize: "12px", color: "#6b7280" }, children: [
1873
+ "(",
1874
+ param.type,
1875
+ ")"
1876
+ ] })
1877
+ ] }, pIndex)) })
1878
+ ] })
1879
+ ] }),
1880
+ /* @__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, {}) })
1881
+ ]
1882
+ }
1883
+ )
1884
+ },
1885
+ index
1886
+ )) });
1887
+ }
1888
+ function ReadablesTab({ context }) {
1889
+ const readables = context.getAllContext();
1890
+ if (readables.length === 0) {
1891
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
1892
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No readable context available" }),
1893
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Readable context will appear here when provided" })
1894
+ ] });
1895
+ }
1896
+ 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)(
1897
+ "div",
1898
+ {
1899
+ style: {
1900
+ backgroundColor: "white",
1901
+ padding: "16px",
1902
+ borderRadius: "8px",
1903
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
1904
+ border: "1px solid #e5e7eb"
1905
+ },
1906
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1907
+ "div",
1908
+ {
1909
+ style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" },
1910
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { flex: 1 }, children: [
1911
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 4px 0" }, children: readable.name || `Readable ${index + 1}` }),
1912
+ readable.description && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", color: "#4b5563", margin: "0 0 12px 0" }, children: readable.description }),
1913
+ readable.value && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1914
+ "pre",
1915
+ {
1916
+ style: {
1917
+ marginTop: "12px",
1918
+ padding: "8px",
1919
+ backgroundColor: "#f9fafb",
1920
+ borderRadius: "4px",
1921
+ fontSize: "12px",
1922
+ overflowX: "auto",
1923
+ margin: "12px 0 0 0"
1924
+ },
1925
+ children: JSON.stringify(readable.value, null, 2)
1926
+ }
1927
+ )
1928
+ ] })
1929
+ }
1930
+ )
1931
+ },
1932
+ index
1933
+ )) });
1934
+ }
1935
+ function AgentStatusTab({ context }) {
1936
+ const agentStates = context.coagentStates || {};
1937
+ const agentStateEntries = Object.entries(agentStates);
1938
+ if (agentStateEntries.length === 0) {
1939
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
1940
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No agent states available" }),
1941
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Agent states will appear here when agents are active" })
1942
+ ] });
1943
+ }
1944
+ 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)(
1945
+ "div",
1946
+ {
1947
+ style: {
1948
+ backgroundColor: "white",
1949
+ padding: "24px",
1950
+ borderRadius: "8px",
1951
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
1952
+ border: "1px solid #e5e7eb"
1953
+ },
1954
+ children: [
1955
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1956
+ "div",
1957
+ {
1958
+ style: {
1959
+ display: "flex",
1960
+ alignItems: "center",
1961
+ justifyContent: "space-between",
1962
+ marginBottom: "16px"
1963
+ },
1964
+ children: [
1965
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontWeight: "600", fontSize: "18px", color: "#1f2937", margin: 0 }, children: agentName }),
1966
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1967
+ "span",
1968
+ {
1969
+ style: {
1970
+ padding: "4px 12px",
1971
+ borderRadius: "9999px",
1972
+ fontSize: "12px",
1973
+ fontWeight: "500",
1974
+ backgroundColor: state.status === "running" ? "#dcfce7" : state.status === "complete" ? "#dbeafe" : "#f3f4f6",
1975
+ color: state.status === "running" ? "#166534" : state.status === "complete" ? "#1e40af" : "#1f2937"
1976
+ },
1977
+ children: state.status || "idle"
1978
+ }
1979
+ )
1980
+ ]
1981
+ }
1982
+ ),
1983
+ state.state && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { marginBottom: "12px" }, children: [
1984
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1985
+ "p",
1986
+ {
1987
+ style: {
1988
+ fontSize: "12px",
1989
+ fontWeight: "500",
1990
+ color: "#6b7280",
1991
+ textTransform: "uppercase",
1992
+ margin: "0 0 4px 0"
1993
+ },
1994
+ children: "Current State:"
1995
+ }
1996
+ ),
1997
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1998
+ "pre",
1999
+ {
2000
+ style: {
2001
+ padding: "12px",
2002
+ backgroundColor: "#f9fafb",
2003
+ borderRadius: "4px",
2004
+ fontSize: "12px",
2005
+ overflowX: "auto",
2006
+ margin: 0
2007
+ },
2008
+ children: JSON.stringify(state.state, null, 2)
2009
+ }
2010
+ )
2011
+ ] }),
2012
+ state.running && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
2013
+ "div",
2014
+ {
2015
+ style: {
2016
+ marginTop: "16px",
2017
+ display: "flex",
2018
+ alignItems: "center",
2019
+ fontSize: "14px",
2020
+ color: "#4b5563"
2021
+ },
2022
+ children: [
2023
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { marginRight: "8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
2024
+ "svg",
2025
+ {
2026
+ width: "16",
2027
+ height: "16",
2028
+ viewBox: "0 0 16 16",
2029
+ style: { animation: "spin 1s linear infinite" },
2030
+ children: [
2031
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("style", { children: `@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }` }),
2032
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
2033
+ "circle",
2034
+ {
2035
+ cx: "8",
2036
+ cy: "8",
2037
+ r: "6",
2038
+ fill: "none",
2039
+ stroke: "#4b5563",
2040
+ strokeWidth: "2",
2041
+ strokeDasharray: "9 3"
2042
+ }
2043
+ )
2044
+ ]
2045
+ }
2046
+ ) }),
2047
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: "Agent is currently running..." })
2048
+ ]
2049
+ }
2050
+ )
2051
+ ]
2052
+ },
2053
+ agentName
2054
+ )) });
2055
+ }
2056
+ function MessagesTab({ messagesContext }) {
2057
+ const messages = messagesContext.messages || [];
2058
+ if (messages.length === 0) {
2059
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
2060
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No messages yet" }),
2061
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Messages will appear here as the conversation progresses" })
2062
+ ] });
2063
+ }
2064
+ 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)(
2065
+ "div",
2066
+ {
2067
+ style: {
2068
+ padding: "16px",
2069
+ borderRadius: "8px",
2070
+ backgroundColor: message.role === "user" ? "#eff6ff" : message.role === "assistant" ? "#f9fafb" : "#fefce8",
2071
+ border: `1px solid ${message.role === "user" ? "#c7d2fe" : message.role === "assistant" ? "#e5e7eb" : "#fde047"}`,
2072
+ marginLeft: message.role === "user" ? "48px" : "0",
2073
+ marginRight: message.role === "assistant" ? "48px" : "0"
2074
+ },
2075
+ children: [
2076
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
2077
+ "div",
2078
+ {
2079
+ style: {
2080
+ display: "flex",
2081
+ alignItems: "flex-start",
2082
+ justifyContent: "space-between",
2083
+ marginBottom: "8px"
2084
+ },
2085
+ children: [
2086
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
2087
+ "span",
2088
+ {
2089
+ style: {
2090
+ fontWeight: "500",
2091
+ fontSize: "14px",
2092
+ color: "#374151",
2093
+ textTransform: "capitalize"
2094
+ },
2095
+ children: message.role || "system"
2096
+ }
2097
+ ),
2098
+ message.timestamp && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { style: { fontSize: "12px", color: "#6b7280" }, children: new Date(message.timestamp).toLocaleTimeString() })
2099
+ ]
2100
+ }
2101
+ ),
2102
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { fontSize: "14px", color: "#1f2937", whiteSpace: "pre-wrap" }, children: message.content || "" })
2103
+ ]
2104
+ },
2105
+ index
2106
+ )) });
2107
+ }
2108
+ function ContextTab({ context }) {
2109
+ const documents = context.getDocumentsContext([]);
2110
+ if (documents.length === 0) {
2111
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
2112
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No document context available" }),
2113
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Document context will appear here when provided" })
2114
+ ] });
2115
+ }
2116
+ 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)(
2117
+ "div",
2118
+ {
2119
+ style: {
2120
+ backgroundColor: "white",
2121
+ padding: "16px",
2122
+ borderRadius: "8px",
2123
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
2124
+ border: "1px solid #e5e7eb"
2125
+ },
2126
+ children: [
2127
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 8px 0" }, children: doc.name || `Document ${index + 1}` }),
2128
+ doc.content && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
2129
+ "pre",
2130
+ {
2131
+ style: {
2132
+ padding: "12px",
2133
+ backgroundColor: "#f9fafb",
2134
+ borderRadius: "4px",
2135
+ fontSize: "12px",
2136
+ overflowX: "auto",
2137
+ margin: 0
2138
+ },
2139
+ children: doc.content
2140
+ }
2141
+ )
2142
+ ]
2143
+ },
2144
+ index
2145
+ )) });
2146
+ }
2147
+
2148
+ // src/components/dev-console/console-trigger.tsx
2149
+ var import_jsx_runtime7 = require("react/jsx-runtime");
2150
+ function ConsoleTrigger({ position = "bottom-right" }) {
2151
+ const context = useCopilotContext();
2152
+ const hasApiKey = Boolean(context.copilotApiConfig.publicApiKey);
2153
+ const [isModalOpen, setIsModalOpen] = (0, import_react10.useState)(false);
2154
+ const [isHovered, setIsHovered] = (0, import_react10.useState)(false);
2155
+ const [isDragging, setIsDragging] = (0, import_react10.useState)(false);
2156
+ const [buttonPosition, setButtonPosition] = (0, import_react10.useState)(null);
2157
+ const [mounted, setMounted] = (0, import_react10.useState)(false);
2158
+ const dragRef = (0, import_react10.useRef)(null);
2159
+ const buttonRef = (0, import_react10.useRef)(null);
2160
+ (0, import_react10.useEffect)(() => {
2161
+ setMounted(true);
2162
+ if (typeof window !== "undefined" && !buttonPosition) {
2163
+ const buttonSize = 60;
2164
+ const margin = 24;
2165
+ const initialPosition = {
2166
+ x: margin,
2167
+ y: window.innerHeight - buttonSize - margin
2168
+ };
2169
+ setButtonPosition(initialPosition);
2170
+ }
2171
+ }, [position]);
2172
+ const handleMouseDown = (e) => {
2173
+ e.preventDefault();
2174
+ if (!buttonPosition)
2175
+ return;
2176
+ dragRef.current = {
2177
+ startX: e.clientX,
2178
+ startY: e.clientY,
2179
+ buttonX: buttonPosition.x,
2180
+ buttonY: buttonPosition.y
2181
+ };
2182
+ setIsDragging(true);
2183
+ };
2184
+ (0, import_react10.useEffect)(() => {
2185
+ if (!isDragging)
2186
+ return;
2187
+ const handleMouseMove = (e) => {
2188
+ e.preventDefault();
2189
+ e.stopPropagation();
2190
+ if (!dragRef.current)
2191
+ return;
2192
+ const deltaX = e.clientX - dragRef.current.startX;
2193
+ const deltaY = e.clientY - dragRef.current.startY;
2194
+ let newX = dragRef.current.buttonX + deltaX;
2195
+ let newY = dragRef.current.buttonY + deltaY;
2196
+ newX = Math.max(0, Math.min(newX, window.innerWidth - 60));
2197
+ newY = Math.max(0, Math.min(newY, window.innerHeight - 60));
2198
+ setButtonPosition({ x: newX, y: newY });
2199
+ };
2200
+ const handleMouseUp = (e) => {
2201
+ e.preventDefault();
2202
+ e.stopPropagation();
2203
+ setIsDragging(false);
2204
+ dragRef.current = null;
2205
+ };
2206
+ document.addEventListener("mousemove", handleMouseMove, { capture: true, passive: false });
2207
+ document.addEventListener("mouseup", handleMouseUp, { capture: true, passive: false });
2208
+ return () => {
2209
+ document.removeEventListener("mousemove", handleMouseMove, { capture: true });
2210
+ document.removeEventListener("mouseup", handleMouseUp, { capture: true });
2211
+ };
2212
+ }, [isDragging]);
2213
+ if (!mounted || !buttonPosition) {
2214
+ return null;
2215
+ }
2216
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
2217
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2218
+ "button",
2219
+ {
2220
+ ref: buttonRef,
2221
+ onClick: () => {
2222
+ if (!isDragging) {
2223
+ setIsModalOpen(true);
2224
+ }
2225
+ },
2226
+ onMouseDown: handleMouseDown,
2227
+ onMouseEnter: () => setIsHovered(true),
2228
+ onMouseLeave: () => setIsHovered(false),
2229
+ style: {
2230
+ position: "fixed",
2231
+ left: `${buttonPosition.x}px`,
2232
+ top: `${buttonPosition.y}px`,
2233
+ zIndex: 2147483647,
2234
+ width: "60px",
2235
+ height: "60px",
2236
+ background: isDragging ? "#000000" : isHovered ? "#111111" : "#000000",
2237
+ color: "white",
2238
+ borderRadius: "50%",
2239
+ 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)",
2240
+ transition: isDragging ? "none" : "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
2241
+ display: "flex",
2242
+ alignItems: "center",
2243
+ justifyContent: "center",
2244
+ border: "none",
2245
+ cursor: isDragging ? "grabbing" : "grab",
2246
+ opacity: 1,
2247
+ userSelect: "none",
2248
+ transform: isDragging ? "scale(1.05)" : isHovered ? "scale(1.1)" : "scale(1)",
2249
+ backdropFilter: "blur(10px)",
2250
+ pointerEvents: "auto",
2251
+ isolation: "isolate"
2252
+ },
2253
+ title: hasApiKey ? "Open Developer Console (Drag to move)" : "Developer Console (API Key Required, Drag to move)",
2254
+ children: [
2255
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2256
+ "div",
2257
+ {
2258
+ style: {
2259
+ width: "28px",
2260
+ height: "28px",
2261
+ display: "flex",
2262
+ alignItems: "center",
2263
+ justifyContent: "center",
2264
+ filter: "drop-shadow(0 2px 4px rgba(0,0,0,0.2))"
2265
+ },
2266
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopilotKitIcon, {})
2267
+ }
2268
+ ),
2269
+ !hasApiKey && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2270
+ "div",
2271
+ {
2272
+ style: {
2273
+ position: "absolute",
2274
+ top: "-2px",
2275
+ right: "-2px",
2276
+ width: "18px",
2277
+ height: "18px",
2278
+ background: "linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%)",
2279
+ borderRadius: "50%",
2280
+ display: "flex",
2281
+ alignItems: "center",
2282
+ justifyContent: "center",
2283
+ boxShadow: "0 2px 8px rgba(255, 107, 107, 0.4)",
2284
+ border: "2px solid white"
2285
+ },
2286
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { style: { fontSize: "10px", color: "white", fontWeight: "bold" }, children: "!" })
2287
+ }
2288
+ )
2289
+ ]
2290
+ }
2291
+ ),
2292
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2293
+ DeveloperConsoleModal,
2294
+ {
2295
+ isOpen: isModalOpen,
2296
+ onClose: () => setIsModalOpen(false),
2297
+ hasApiKey
2298
+ }
2299
+ )
2300
+ ] });
2301
+ }
2302
+
2303
+ // src/components/copilot-provider/copilotkit.tsx
2304
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1335
2305
  function CopilotKit(_a) {
1336
2306
  var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
1337
2307
  const enabled = shouldShowDevConsole(props.showDevConsole);
1338
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ToastProvider, { enabled, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CopilotErrorBoundary, { publicApiKey: props.publicApiKey, showUsageBanner: enabled, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CopilotKitInternal, __spreadProps(__spreadValues({}, props), { children })) }) });
2308
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ToastProvider, { enabled, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CopilotErrorBoundary, { publicApiKey: props.publicApiKey, showUsageBanner: enabled, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CopilotKitInternal, __spreadProps(__spreadValues({}, props), { children })) }) });
1339
2309
  }
1340
2310
  function CopilotKitInternal(cpkProps) {
1341
2311
  const _a = cpkProps, { children } = _a, props = __objRest(_a, ["children"]);
1342
2312
  validateProps(cpkProps);
1343
- const chatApiEndpoint = props.runtimeUrl || import_shared9.COPILOT_CLOUD_CHAT_URL;
1344
- const [actions, setActions] = (0, import_react9.useState)({});
1345
- const [coAgentStateRenders, setCoAgentStateRenders] = (0, import_react9.useState)({});
1346
- const chatComponentsCache = (0, import_react9.useRef)({
2313
+ const chatApiEndpoint = props.runtimeUrl || import_shared10.COPILOT_CLOUD_CHAT_URL;
2314
+ const [actions, setActions] = (0, import_react11.useState)({});
2315
+ const [coAgentStateRenders, setCoAgentStateRenders] = (0, import_react11.useState)({});
2316
+ const chatComponentsCache = (0, import_react11.useRef)({
1347
2317
  actions: {},
1348
2318
  coAgentStateRenders: {}
1349
2319
  });
1350
2320
  const { addElement, removeElement, printTree, getAllElements } = use_tree_default();
1351
- const [isLoading, setIsLoading] = (0, import_react9.useState)(false);
1352
- const [chatInstructions, setChatInstructions] = (0, import_react9.useState)("");
1353
- const [authStates, setAuthStates] = (0, import_react9.useState)({});
1354
- const [extensions, setExtensions] = (0, import_react9.useState)({});
1355
- const [additionalInstructions, setAdditionalInstructions] = (0, import_react9.useState)([]);
2321
+ const [isLoading, setIsLoading] = (0, import_react11.useState)(false);
2322
+ const [chatInstructions, setChatInstructions] = (0, import_react11.useState)("");
2323
+ const [authStates, setAuthStates] = (0, import_react11.useState)({});
2324
+ const [extensions, setExtensions] = (0, import_react11.useState)({});
2325
+ const [additionalInstructions, setAdditionalInstructions] = (0, import_react11.useState)([]);
1356
2326
  const {
1357
2327
  addElement: addDocument,
1358
2328
  removeElement: removeDocument,
1359
2329
  allElements: allDocuments
1360
2330
  } = use_flat_category_store_default();
1361
- const statusChecker2 = (0, import_react9.useMemo)(() => new StatusChecker(), []);
1362
- const [usageBannerStatus, setUsageBannerStatus] = (0, import_react9.useState)(null);
1363
- const setAction = (0, import_react9.useCallback)((id, action) => {
2331
+ const setAction = (0, import_react11.useCallback)((id, action) => {
1364
2332
  setActions((prevPoints) => {
1365
2333
  return __spreadProps(__spreadValues({}, prevPoints), {
1366
2334
  [id]: action
1367
2335
  });
1368
2336
  });
1369
2337
  }, []);
1370
- const removeAction = (0, import_react9.useCallback)((id) => {
2338
+ const removeAction = (0, import_react11.useCallback)((id) => {
1371
2339
  setActions((prevPoints) => {
1372
2340
  const newPoints = __spreadValues({}, prevPoints);
1373
2341
  delete newPoints[id];
1374
2342
  return newPoints;
1375
2343
  });
1376
2344
  }, []);
1377
- const setCoAgentStateRender = (0, import_react9.useCallback)((id, stateRender) => {
2345
+ const setCoAgentStateRender = (0, import_react11.useCallback)((id, stateRender) => {
1378
2346
  setCoAgentStateRenders((prevPoints) => {
1379
2347
  return __spreadProps(__spreadValues({}, prevPoints), {
1380
2348
  [id]: stateRender
1381
2349
  });
1382
2350
  });
1383
2351
  }, []);
1384
- const removeCoAgentStateRender = (0, import_react9.useCallback)((id) => {
2352
+ const removeCoAgentStateRender = (0, import_react11.useCallback)((id) => {
1385
2353
  setCoAgentStateRenders((prevPoints) => {
1386
2354
  const newPoints = __spreadValues({}, prevPoints);
1387
2355
  delete newPoints[id];
1388
2356
  return newPoints;
1389
2357
  });
1390
2358
  }, []);
1391
- const getContextString = (0, import_react9.useCallback)(
2359
+ const getContextString = (0, import_react11.useCallback)(
1392
2360
  (documents, categories) => {
1393
- const documentsString = documents.map((document) => {
1394
- return `${document.name} (${document.sourceApplication}):
1395
- ${document.getContents()}`;
2361
+ const documentsString = documents.map((document2) => {
2362
+ return `${document2.name} (${document2.sourceApplication}):
2363
+ ${document2.getContents()}`;
1396
2364
  }).join("\n\n");
1397
2365
  const nonDocumentStrings = printTree(categories);
1398
2366
  return `${documentsString}
@@ -1401,46 +2369,46 @@ ${nonDocumentStrings}`;
1401
2369
  },
1402
2370
  [printTree]
1403
2371
  );
1404
- const addContext = (0, import_react9.useCallback)(
2372
+ const addContext = (0, import_react11.useCallback)(
1405
2373
  (context, parentId, categories = defaultCopilotContextCategories) => {
1406
2374
  return addElement(context, categories, parentId);
1407
2375
  },
1408
2376
  [addElement]
1409
2377
  );
1410
- const removeContext = (0, import_react9.useCallback)(
2378
+ const removeContext = (0, import_react11.useCallback)(
1411
2379
  (id) => {
1412
2380
  removeElement(id);
1413
2381
  },
1414
2382
  [removeElement]
1415
2383
  );
1416
- const getAllContext = (0, import_react9.useCallback)(() => {
2384
+ const getAllContext = (0, import_react11.useCallback)(() => {
1417
2385
  return getAllElements();
1418
2386
  }, [getAllElements]);
1419
- const getFunctionCallHandler = (0, import_react9.useCallback)(
2387
+ const getFunctionCallHandler = (0, import_react11.useCallback)(
1420
2388
  (customEntryPoints) => {
1421
2389
  return entryPointsToFunctionCallHandler(Object.values(customEntryPoints || actions));
1422
2390
  },
1423
2391
  [actions]
1424
2392
  );
1425
- const getDocumentsContext = (0, import_react9.useCallback)(
2393
+ const getDocumentsContext = (0, import_react11.useCallback)(
1426
2394
  (categories) => {
1427
2395
  return allDocuments(categories);
1428
2396
  },
1429
2397
  [allDocuments]
1430
2398
  );
1431
- const addDocumentContext = (0, import_react9.useCallback)(
2399
+ const addDocumentContext = (0, import_react11.useCallback)(
1432
2400
  (documentPointer, categories = defaultCopilotContextCategories) => {
1433
2401
  return addDocument(documentPointer, categories);
1434
2402
  },
1435
2403
  [addDocument]
1436
2404
  );
1437
- const removeDocumentContext = (0, import_react9.useCallback)(
2405
+ const removeDocumentContext = (0, import_react11.useCallback)(
1438
2406
  (documentId) => {
1439
2407
  removeDocument(documentId);
1440
2408
  },
1441
2409
  [removeDocument]
1442
2410
  );
1443
- const copilotApiConfig = (0, import_react9.useMemo)(() => {
2411
+ const copilotApiConfig = (0, import_react11.useMemo)(() => {
1444
2412
  var _a2, _b;
1445
2413
  let cloud = void 0;
1446
2414
  if (props.publicApiKey) {
@@ -1476,7 +2444,7 @@ ${nonDocumentStrings}`;
1476
2444
  props.cloudRestrictToTopic,
1477
2445
  props.guardrails_c
1478
2446
  ]);
1479
- const headers = (0, import_react9.useMemo)(() => {
2447
+ const headers = (0, import_react11.useMemo)(() => {
1480
2448
  const authHeaders = Object.values(authStates || {}).reduce((acc, state) => {
1481
2449
  if (state.status === "authenticated" && state.authHeaders) {
1482
2450
  return __spreadValues(__spreadValues({}, acc), Object.entries(state.authHeaders).reduce(
@@ -1488,7 +2456,7 @@ ${nonDocumentStrings}`;
1488
2456
  }
1489
2457
  return acc;
1490
2458
  }, {});
1491
- return __spreadValues(__spreadValues(__spreadValues({}, copilotApiConfig.headers || {}), copilotApiConfig.publicApiKey ? { [import_shared9.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey } : {}), authHeaders);
2459
+ return __spreadValues(__spreadValues(__spreadValues({}, copilotApiConfig.headers || {}), copilotApiConfig.publicApiKey ? { [import_shared10.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey } : {}), authHeaders);
1492
2460
  }, [copilotApiConfig.headers, copilotApiConfig.publicApiKey, authStates]);
1493
2461
  const runtimeClient = useCopilotRuntimeClient({
1494
2462
  url: copilotApiConfig.chatApiEndpoint,
@@ -1498,14 +2466,14 @@ ${nonDocumentStrings}`;
1498
2466
  showDevConsole: shouldShowDevConsole(props.showDevConsole),
1499
2467
  onError: props.onError
1500
2468
  });
1501
- const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = (0, import_react9.useState)({});
1502
- const addChatSuggestionConfiguration = (0, import_react9.useCallback)(
2469
+ const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = (0, import_react11.useState)({});
2470
+ const addChatSuggestionConfiguration = (0, import_react11.useCallback)(
1503
2471
  (id, suggestion) => {
1504
2472
  setChatSuggestionConfiguration((prev) => __spreadProps(__spreadValues({}, prev), { [id]: suggestion }));
1505
2473
  },
1506
2474
  [setChatSuggestionConfiguration]
1507
2475
  );
1508
- const removeChatSuggestionConfiguration = (0, import_react9.useCallback)(
2476
+ const removeChatSuggestionConfiguration = (0, import_react11.useCallback)(
1509
2477
  (id) => {
1510
2478
  setChatSuggestionConfiguration((prev) => {
1511
2479
  const _a2 = prev, { [id]: _ } = _a2, rest = __objRest(_a2, [__restKey(id)]);
@@ -1514,10 +2482,10 @@ ${nonDocumentStrings}`;
1514
2482
  },
1515
2483
  [setChatSuggestionConfiguration]
1516
2484
  );
1517
- const [availableAgents, setAvailableAgents] = (0, import_react9.useState)([]);
1518
- const [coagentStates, setCoagentStates] = (0, import_react9.useState)({});
1519
- const coagentStatesRef = (0, import_react9.useRef)({});
1520
- const setCoagentStatesWithRef = (0, import_react9.useCallback)(
2485
+ const [availableAgents, setAvailableAgents] = (0, import_react11.useState)([]);
2486
+ const [coagentStates, setCoagentStates] = (0, import_react11.useState)({});
2487
+ const coagentStatesRef = (0, import_react11.useRef)({});
2488
+ const setCoagentStatesWithRef = (0, import_react11.useCallback)(
1521
2489
  (value) => {
1522
2490
  const newValue = typeof value === "function" ? value(coagentStatesRef.current) : value;
1523
2491
  coagentStatesRef.current = newValue;
@@ -1527,8 +2495,8 @@ ${nonDocumentStrings}`;
1527
2495
  },
1528
2496
  []
1529
2497
  );
1530
- const hasLoadedAgents = (0, import_react9.useRef)(false);
1531
- (0, import_react9.useEffect)(() => {
2498
+ const hasLoadedAgents = (0, import_react11.useRef)(false);
2499
+ (0, import_react11.useEffect)(() => {
1532
2500
  if (hasLoadedAgents.current)
1533
2501
  return;
1534
2502
  const fetchData = () => __async(this, null, function* () {
@@ -1547,8 +2515,8 @@ ${nonDocumentStrings}`;
1547
2515
  agentName: props.agent
1548
2516
  };
1549
2517
  }
1550
- const [agentSession, setAgentSession] = (0, import_react9.useState)(initialAgentSession);
1551
- (0, import_react9.useEffect)(() => {
2518
+ const [agentSession, setAgentSession] = (0, import_react11.useState)(initialAgentSession);
2519
+ (0, import_react11.useEffect)(() => {
1552
2520
  if (props.agent) {
1553
2521
  setAgentSession({
1554
2522
  agentName: props.agent
@@ -1557,8 +2525,8 @@ ${nonDocumentStrings}`;
1557
2525
  setAgentSession(null);
1558
2526
  }
1559
2527
  }, [props.agent]);
1560
- const [internalThreadId, setInternalThreadId] = (0, import_react9.useState)(props.threadId || (0, import_shared9.randomUUID)());
1561
- const setThreadId = (0, import_react9.useCallback)(
2528
+ const [internalThreadId, setInternalThreadId] = (0, import_react11.useState)(props.threadId || (0, import_shared10.randomUUID)());
2529
+ const setThreadId = (0, import_react11.useCallback)(
1562
2530
  (value) => {
1563
2531
  if (props.threadId) {
1564
2532
  throw new Error("Cannot call setThreadId() when threadId is provided via props.");
@@ -1567,16 +2535,16 @@ ${nonDocumentStrings}`;
1567
2535
  },
1568
2536
  [props.threadId]
1569
2537
  );
1570
- (0, import_react9.useEffect)(() => {
2538
+ (0, import_react11.useEffect)(() => {
1571
2539
  if (props.threadId !== void 0) {
1572
2540
  setInternalThreadId(props.threadId);
1573
2541
  }
1574
2542
  }, [props.threadId]);
1575
- const [runId, setRunId] = (0, import_react9.useState)(null);
1576
- const chatAbortControllerRef = (0, import_react9.useRef)(null);
2543
+ const [runId, setRunId] = (0, import_react11.useState)(null);
2544
+ const chatAbortControllerRef = (0, import_react11.useRef)(null);
1577
2545
  const showDevConsole = shouldShowDevConsole(props.showDevConsole);
1578
- const [langGraphInterruptAction, _setLangGraphInterruptAction] = (0, import_react9.useState)(null);
1579
- const setLangGraphInterruptAction = (0, import_react9.useCallback)((action) => {
2546
+ const [langGraphInterruptAction, _setLangGraphInterruptAction] = (0, import_react11.useState)(null);
2547
+ const setLangGraphInterruptAction = (0, import_react11.useCallback)((action) => {
1580
2548
  _setLangGraphInterruptAction((prev) => {
1581
2549
  if (prev == null)
1582
2550
  return action;
@@ -1589,23 +2557,23 @@ ${nonDocumentStrings}`;
1589
2557
  return __spreadProps(__spreadValues(__spreadValues({}, prev), action), { event });
1590
2558
  });
1591
2559
  }, []);
1592
- const removeLangGraphInterruptAction = (0, import_react9.useCallback)(() => {
2560
+ const removeLangGraphInterruptAction = (0, import_react11.useCallback)(() => {
1593
2561
  setLangGraphInterruptAction(null);
1594
2562
  }, []);
1595
- const memoizedChildren = (0, import_react9.useMemo)(() => children, [children]);
1596
- const [bannerError, setBannerError] = (0, import_react9.useState)(null);
1597
- const agentLock = (0, import_react9.useMemo)(() => {
2563
+ const memoizedChildren = (0, import_react11.useMemo)(() => children, [children]);
2564
+ const [bannerError, setBannerError] = (0, import_react11.useState)(null);
2565
+ const agentLock = (0, import_react11.useMemo)(() => {
1598
2566
  var _a2;
1599
2567
  return (_a2 = props.agent) != null ? _a2 : null;
1600
2568
  }, [props.agent]);
1601
- const forwardedParameters = (0, import_react9.useMemo)(
2569
+ const forwardedParameters = (0, import_react11.useMemo)(
1602
2570
  () => {
1603
2571
  var _a2;
1604
2572
  return (_a2 = props.forwardedParameters) != null ? _a2 : {};
1605
2573
  },
1606
2574
  [props.forwardedParameters]
1607
2575
  );
1608
- const updateExtensions = (0, import_react9.useCallback)(
2576
+ const updateExtensions = (0, import_react11.useCallback)(
1609
2577
  (newExtensions) => {
1610
2578
  setExtensions((prev) => {
1611
2579
  const resolved = typeof newExtensions === "function" ? newExtensions(prev) : newExtensions;
@@ -1617,7 +2585,7 @@ ${nonDocumentStrings}`;
1617
2585
  },
1618
2586
  [setExtensions]
1619
2587
  );
1620
- const updateAuthStates = (0, import_react9.useCallback)(
2588
+ const updateAuthStates = (0, import_react11.useCallback)(
1621
2589
  (newAuthStates) => {
1622
2590
  setAuthStates((prev) => {
1623
2591
  const resolved = typeof newAuthStates === "function" ? newAuthStates(prev) : newAuthStates;
@@ -1629,7 +2597,7 @@ ${nonDocumentStrings}`;
1629
2597
  },
1630
2598
  [setAuthStates]
1631
2599
  );
1632
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
2600
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1633
2601
  CopilotContext.Provider,
1634
2602
  {
1635
2603
  value: {
@@ -1687,8 +2655,11 @@ ${nonDocumentStrings}`;
1687
2655
  setBannerError
1688
2656
  },
1689
2657
  children: [
1690
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(MessagesTapProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CopilotMessages, { children: memoizedChildren }) }),
1691
- bannerError && showDevConsole && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2658
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(MessagesTapProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(CopilotMessages, { children: [
2659
+ memoizedChildren,
2660
+ showDevConsole && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ConsoleTrigger, {})
2661
+ ] }) }),
2662
+ bannerError && showDevConsole && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1692
2663
  UsageBanner,
1693
2664
  {
1694
2665
  severity: bannerError.severity,
@@ -1733,10 +2704,10 @@ function formatFeatureName(featureName) {
1733
2704
  function validateProps(props) {
1734
2705
  const cloudFeatures = Object.keys(props).filter((key) => key.endsWith("_c"));
1735
2706
  if (!props.runtimeUrl && !props.publicApiKey) {
1736
- throw new import_shared9.ConfigurationError("Missing required prop: 'runtimeUrl' or 'publicApiKey'");
2707
+ throw new import_shared10.ConfigurationError("Missing required prop: 'runtimeUrl' or 'publicApiKey'");
1737
2708
  }
1738
2709
  if (cloudFeatures.length > 0 && !props.publicApiKey) {
1739
- throw new import_shared9.MissingPublicApiKeyError(
2710
+ throw new import_shared10.MissingPublicApiKeyError(
1740
2711
  `Missing required prop: 'publicApiKey' to use cloud features: ${cloudFeatures.map(formatFeatureName).join(", ")}`
1741
2712
  );
1742
2713
  }