@burtson-labs/bandit-engine 2.0.146 → 2.0.148

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -25954,47 +25954,27 @@ var init_enhanced_mobile_conversations_modal = __esm({
25954
25954
  }
25955
25955
  }
25956
25956
  ),
25957
- syncEnabled && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
25958
- import_material26.IconButton,
25957
+ syncEnabled && syncStatus === "syncing" && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
25958
+ import_material26.Box,
25959
25959
  {
25960
- onClick: () => {
25961
- if (syncStatus !== "syncing") void runSync({ force: true });
25962
- },
25963
- "aria-label": "Sync conversations",
25960
+ component: "span",
25964
25961
  sx: {
25965
- color: syncStatus === "error" ? theme.palette.error.main : theme.palette.text.secondary,
25966
- ...syncStatus === "syncing" && {
25967
- animation: "bandit-sync-spin 1s linear infinite",
25968
- "@keyframes bandit-sync-spin": {
25969
- "0%": { transform: "rotate(0deg)" },
25970
- "100%": { transform: "rotate(360deg)" }
25971
- }
25962
+ display: "inline-flex",
25963
+ mr: 0.5,
25964
+ animation: "bandit-sync-spin 1s linear infinite",
25965
+ "@keyframes bandit-sync-spin": {
25966
+ "0%": { transform: "rotate(0deg)" },
25967
+ "100%": { transform: "rotate(360deg)" }
25972
25968
  }
25973
25969
  },
25974
- children: syncStatus === "error" ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.CircleAlert, {}) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.RefreshCw, {})
25975
- }
25976
- ),
25977
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
25978
- import_material26.IconButton,
25979
- {
25980
- onClick: () => setMemoryModalOpen(true),
25981
- "aria-label": "Memory",
25982
- sx: { color: theme.palette.text.secondary },
25983
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Brain, {})
25984
- }
25985
- ),
25986
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
25987
- import_material26.IconButton,
25988
- {
25989
- onClick: () => setProjectManagementOpen(true),
25990
- sx: { color: theme.palette.text.secondary },
25991
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Folder, {})
25970
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.RefreshCw, { size: 18, color: theme.palette.text.secondary })
25992
25971
  }
25993
25972
  ),
25994
25973
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
25995
25974
  import_material26.IconButton,
25996
25975
  {
25997
25976
  onClick: handleMenuOpen,
25977
+ "aria-label": "Conversation options",
25998
25978
  sx: { color: theme.palette.text.secondary },
25999
25979
  children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.MoreVertical, {})
26000
25980
  }
@@ -26523,46 +26503,27 @@ var init_enhanced_mobile_conversations_modal = __esm({
26523
26503
  children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.SlidersHorizontal, { size: 16 })
26524
26504
  }
26525
26505
  ),
26526
- user2 && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
26527
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
26528
- import_material26.Box,
26529
- {
26530
- sx: {
26531
- flexShrink: 0,
26532
- display: "flex",
26533
- alignItems: "center",
26534
- justifyContent: "center",
26535
- width: 30,
26536
- height: 30,
26537
- borderRadius: "50%",
26538
- border: `1px solid ${(0, import_styles17.alpha)(theme.palette.divider, 0.8)}`,
26539
- color: theme.palette.text.secondary
26540
- },
26541
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Settings, { size: 16 })
26542
- }
26543
- ),
26544
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
26545
- import_material26.IconButton,
26546
- {
26547
- "aria-label": "Sign out",
26548
- title: "Sign out",
26549
- onClick: (event) => {
26550
- event.stopPropagation();
26551
- authenticationService.clearToken();
26552
- window.location.href = "/login";
26553
- },
26554
- sx: {
26555
- flexShrink: 0,
26556
- width: 30,
26557
- height: 30,
26558
- border: `1px solid ${(0, import_styles17.alpha)(theme.palette.error.main, 0.4)}`,
26559
- color: theme.palette.error.main,
26560
- "&:hover": { bgcolor: (0, import_styles17.alpha)(theme.palette.error.main, 0.1) }
26561
- },
26562
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.LogOut, { size: 16 })
26563
- }
26564
- )
26565
- ] })
26506
+ user2 && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jsx_runtime28.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
26507
+ import_material26.IconButton,
26508
+ {
26509
+ "aria-label": "Sign out",
26510
+ title: "Sign out",
26511
+ onClick: (event) => {
26512
+ event.stopPropagation();
26513
+ authenticationService.clearToken();
26514
+ window.location.href = "/login";
26515
+ },
26516
+ sx: {
26517
+ flexShrink: 0,
26518
+ width: 30,
26519
+ height: 30,
26520
+ border: `1px solid ${(0, import_styles17.alpha)(theme.palette.error.main, 0.4)}`,
26521
+ color: theme.palette.error.main,
26522
+ "&:hover": { bgcolor: (0, import_styles17.alpha)(theme.palette.error.main, 0.1) }
26523
+ },
26524
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.LogOut, { size: 16 })
26525
+ }
26526
+ ) })
26566
26527
  ]
26567
26528
  }
26568
26529
  )
@@ -26588,7 +26549,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26588
26549
  currentProjectId: conversationToMove.projectId
26589
26550
  }
26590
26551
  ),
26591
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
26552
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
26592
26553
  import_material26.Menu,
26593
26554
  {
26594
26555
  anchorEl: menuAnchorEl,
@@ -26602,21 +26563,62 @@ var init_enhanced_mobile_conversations_modal = __esm({
26602
26563
  vertical: "bottom",
26603
26564
  horizontal: "right"
26604
26565
  },
26605
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
26606
- import_material26.MenuItem,
26607
- {
26608
- onClick: () => {
26609
- setClearConfirmOpen(true);
26610
- handleMenuClose();
26611
- },
26612
- disabled: visibleConversationCount === 0,
26613
- sx: { color: theme.palette.error.main },
26614
- children: [
26615
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Trash2, { size: 16, color: theme.palette.error.main }) }),
26616
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemText, { children: "Clear All Conversations" })
26617
- ]
26618
- }
26619
- )
26566
+ children: [
26567
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
26568
+ import_material26.MenuItem,
26569
+ {
26570
+ onClick: () => {
26571
+ setMemoryModalOpen(true);
26572
+ handleMenuClose();
26573
+ },
26574
+ children: [
26575
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Brain, { size: 16 }) }),
26576
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemText, { children: "Memories" })
26577
+ ]
26578
+ }
26579
+ ),
26580
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
26581
+ import_material26.MenuItem,
26582
+ {
26583
+ onClick: () => {
26584
+ setProjectManagementOpen(true);
26585
+ handleMenuClose();
26586
+ },
26587
+ children: [
26588
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Folder, { size: 16 }) }),
26589
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemText, { children: "Manage projects" })
26590
+ ]
26591
+ }
26592
+ ),
26593
+ syncEnabled && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
26594
+ import_material26.MenuItem,
26595
+ {
26596
+ onClick: () => {
26597
+ if (syncStatus !== "syncing") void runSync({ force: true });
26598
+ handleMenuClose();
26599
+ },
26600
+ children: [
26601
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.RefreshCw, { size: 16 }) }),
26602
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemText, { children: "Sync now" })
26603
+ ]
26604
+ }
26605
+ ),
26606
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
26607
+ import_material26.MenuItem,
26608
+ {
26609
+ onClick: () => {
26610
+ setClearConfirmOpen(true);
26611
+ handleMenuClose();
26612
+ },
26613
+ disabled: visibleConversationCount === 0,
26614
+ sx: { color: theme.palette.error.main },
26615
+ children: [
26616
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Trash2, { size: 16, color: theme.palette.error.main }) }),
26617
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemText, { children: "Clear All Conversations" })
26618
+ ]
26619
+ }
26620
+ )
26621
+ ]
26620
26622
  }
26621
26623
  ),
26622
26624
  /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
@@ -31526,12 +31528,14 @@ var init_chat2 = __esm({
31526
31528
  // status area, the bottom stays flush with the screen edge, and the
31527
31529
  // motion reads as the native sheet-behind effect instead of the
31528
31530
  // content lurching downward.
31529
- // Slides 12px OVER the drawer's edge (not edge-to-edge) and rides
31530
- // above it in z-order, so the card's shadow falls on the drawer —
31531
- // the overlapped-sheet look.
31532
- transform: isMobile && mobileConversationsOpen ? "translateX(calc(min(calc(100vw - 56px), 360px) - 12px)) scale(0.93)" : "none",
31533
- transformOrigin: "left bottom",
31534
- borderRadius: isMobile && mobileConversationsOpen ? "36px" : 0,
31531
+ // Full-height card sliding 12px OVER the drawer's edge, riding
31532
+ // above it in z-order so its shadow falls on the drawer. No scale:
31533
+ // the card runs flush top-to-bottom of the webview, and because
31534
+ // the OS status strip above is painted the same surface tone, it
31535
+ // reads as full physical height with the rounded corner visible
31536
+ // where it overlaps the drawer.
31537
+ transform: isMobile && mobileConversationsOpen ? "translateX(calc(min(calc(100vw - 56px), 360px) - 12px))" : "none",
31538
+ borderRadius: isMobile && mobileConversationsOpen ? "44px" : 0,
31535
31539
  zIndex: isMobile && mobileConversationsOpen ? theme.zIndex.modal + 1 : 0,
31536
31540
  // Hairline border so the rounded card reads even when the backdrop
31537
31541
  // is the same near-black as the shell.