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