@burtson-labs/bandit-engine 2.0.137 → 2.0.139

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.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  chat_default
3
- } from "./chunk-YPIUO3IS.mjs";
3
+ } from "./chunk-E2SS643X.mjs";
4
4
  import {
5
5
  chat_provider_default
6
6
  } from "./chunk-PU74BI6Y.mjs";
@@ -10,7 +10,7 @@ import {
10
10
  useGatewayHealth,
11
11
  useGatewayMemory,
12
12
  useGatewayModels
13
- } from "./chunk-2L5DC4OI.mjs";
13
+ } from "./chunk-S7W2AAFG.mjs";
14
14
  import "./chunk-BVYSGIWG.mjs";
15
15
  import "./chunk-F7JXIW6T.mjs";
16
16
  import "./chunk-K2JGFKEB.mjs";
@@ -28133,8 +28133,10 @@ var init_enhanced_mobile_conversations_modal = __esm({
28133
28133
  // Keep in sync with MOBILE_CONVERSATIONS_DRAWER_WIDTH in chat.tsx
28134
28134
  // (the chat shell translates by the same amount).
28135
28135
  width: "min(calc(100vw - 56px), 360px)",
28136
- // top/bottom stretch instead of 100dvh — iOS standalone
28137
- // under-reports dvh, leaving a dead band above the home bar.
28136
+ // Explicit 100lvh overflows iOS standalone's under-reported
28137
+ // viewport downward — bottom-anchoring alone stops short.
28138
+ height: "100dvh",
28139
+ "@supports (height: 100lvh)": { height: "100lvh" },
28138
28140
  bgcolor: theme.palette.background.paper,
28139
28141
  display: "flex",
28140
28142
  flexDirection: "column",
@@ -31230,18 +31232,20 @@ var init_chat2 = __esm({
31230
31232
  sx: (theme) => ({
31231
31233
  display: "flex",
31232
31234
  flexDirection: "column",
31233
- // Stretch via top/bottom instead of 100dvh — the iOS standalone
31234
- // webview under-reports dvh and left a dead band above the home
31235
- // indicator; inset-stretched fixed elements get the real viewport.
31235
+ // iOS standalone under-reports both dvh AND the fixed-position
31236
+ // containing block, stranding a dead band above the home bar.
31237
+ // An explicit 100lvh height can overflow that short viewport
31238
+ // downward, which bottom-anchoring cannot.
31236
31239
  overflow: "hidden",
31237
31240
  bgcolor: theme.palette.chat.shell,
31238
31241
  color: theme.palette.text.primary,
31239
31242
  position: "fixed",
31240
31243
  top: 0,
31241
31244
  bottom: 0,
31245
+ height: "100dvh",
31246
+ "@supports (height: 100lvh)": { height: "100lvh" },
31242
31247
  left: drawerOpen && !isMobile ? "340px" : 0,
31243
31248
  width: !isMobile && canvasOpen ? `calc(100vw - ${drawerOpen ? "340px" : "0px"} - ${CANVAS_WIDTH})` : drawerOpen && !isMobile ? "calc(100vw - 340px)" : "100vw",
31244
- zIndex: 0,
31245
31249
  // Claude-style push (mobile only; desktop stays flush): the chat
31246
31250
  // shell slides right as a full-height rounded card — exactly like
31247
31251
  // Claude iOS, where the card runs edge-to-edge vertically and the
@@ -31252,15 +31256,20 @@ var init_chat2 = __esm({
31252
31256
  // status area, the bottom stays flush with the screen edge, and the
31253
31257
  // motion reads as the native sheet-behind effect instead of the
31254
31258
  // content lurching downward.
31255
- transform: isMobile && mobileConversationsOpen ? "translateX(min(calc(100vw - 56px), 360px)) scale(0.93)" : "none",
31259
+ // Slides 12px OVER the drawer's edge (not edge-to-edge) and rides
31260
+ // above it in z-order, so the card's shadow falls on the drawer —
31261
+ // the overlapped-sheet look.
31262
+ transform: isMobile && mobileConversationsOpen ? "translateX(calc(min(calc(100vw - 56px), 360px) - 12px)) scale(0.93)" : "none",
31256
31263
  transformOrigin: "left bottom",
31257
31264
  borderRadius: isMobile && mobileConversationsOpen ? "36px" : 0,
31265
+ zIndex: isMobile && mobileConversationsOpen ? theme.zIndex.modal + 1 : 0,
31258
31266
  // Hairline border so the rounded card reads even when the backdrop
31259
31267
  // is the same near-black as the shell.
31260
31268
  border: isMobile && mobileConversationsOpen ? `1px solid ${theme.palette.mode === "dark" ? "rgba(255,255,255,0.14)" : "rgba(0,0,0,0.12)"}` : "none",
31261
31269
  boxShadow: isMobile && mobileConversationsOpen ? `0 12px 40px ${theme.palette.mode === "dark" ? "rgba(0,0,0,0.55)" : "rgba(0,0,0,0.25)"}` : "none",
31262
31270
  transition: "left 0.3s ease-in-out, width 0.3s ease-in-out, transform 0.3s ease-in-out, border-radius 0.3s ease-in-out"
31263
31271
  }),
31272
+ onClick: isMobile && mobileConversationsOpen ? () => setMobileConversationsOpen(false) : void 0,
31264
31273
  children: [
31265
31274
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
31266
31275
  chat_app_bar_default,
@@ -31277,14 +31286,14 @@ var init_chat2 = __esm({
31277
31286
  }
31278
31287
  ),
31279
31288
  isTemporaryChat && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
31280
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
31289
+ !isMobile && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
31281
31290
  import_material54.Box,
31282
31291
  {
31283
31292
  sx: (theme) => ({
31284
31293
  position: "absolute",
31285
- inset: isMobile ? "3px" : 0,
31294
+ inset: 0,
31286
31295
  border: `3px solid ${theme.palette.mode === "dark" ? "rgba(255,255,255,0.55)" : "rgba(0,0,0,0.45)"}`,
31287
- borderRadius: isMobile ? "28px" : "inherit",
31296
+ borderRadius: "inherit",
31288
31297
  zIndex: 1400,
31289
31298
  pointerEvents: "none"
31290
31299
  })
@@ -31295,7 +31304,9 @@ var init_chat2 = __esm({
31295
31304
  {
31296
31305
  sx: (theme) => ({
31297
31306
  position: "absolute",
31298
- top: `calc(${theme.spacing(8)} + env(safe-area-inset-top, 0px))`,
31307
+ // Mobile: centered in the top-bar row between the two pills
31308
+ // (Claude's "Incognito chat" placement); desktop: below the bar.
31309
+ top: isMobile ? "calc(env(safe-area-inset-top, 0px) + 14px)" : `calc(${theme.spacing(8)} + env(safe-area-inset-top, 0px))`,
31299
31310
  left: "50%",
31300
31311
  transform: "translateX(-50%)",
31301
31312
  zIndex: 1401,
@@ -31304,14 +31315,15 @@ var init_chat2 = __esm({
31304
31315
  gap: 0.75,
31305
31316
  pl: 1.5,
31306
31317
  pr: 0.75,
31307
- py: 0.4,
31318
+ py: 0.6,
31308
31319
  borderRadius: 999,
31309
- fontSize: "0.78rem",
31310
- fontWeight: 600,
31311
- color: theme.palette.text.primary,
31312
- bgcolor: theme.palette.mode === "dark" ? "rgba(255,255,255,0.12)" : "rgba(0,0,0,0.08)",
31313
- border: `1px solid ${theme.palette.divider}`,
31314
- backdropFilter: "blur(8px)",
31320
+ fontSize: "0.82rem",
31321
+ fontWeight: 700,
31322
+ // Inverted, high-contrast — same treatment as the active
31323
+ // ghost toggle, so the mode is unmissable without a frame.
31324
+ color: theme.palette.getContrastText(theme.palette.text.primary),
31325
+ bgcolor: theme.palette.text.primary,
31326
+ boxShadow: `0 4px 16px ${theme.palette.mode === "dark" ? "rgba(0,0,0,0.5)" : "rgba(0,0,0,0.25)"}`,
31315
31327
  whiteSpace: "nowrap"
31316
31328
  }),
31317
31329
  children: [
@@ -31328,21 +31340,22 @@ var init_chat2 = __esm({
31328
31340
  display: "inline-flex",
31329
31341
  alignItems: "center",
31330
31342
  justifyContent: "center",
31331
- width: 20,
31332
- height: 20,
31343
+ width: 22,
31344
+ height: 22,
31333
31345
  ml: 0.25,
31334
31346
  p: 0,
31335
31347
  border: "none",
31336
31348
  borderRadius: "50%",
31337
31349
  cursor: "pointer",
31338
- color: theme.palette.text.secondary,
31350
+ color: "inherit",
31339
31351
  bgcolor: "transparent",
31340
31352
  font: "inherit",
31341
- fontSize: "0.85rem",
31353
+ fontSize: "0.9rem",
31342
31354
  lineHeight: 1,
31355
+ opacity: 0.75,
31343
31356
  "&:hover": {
31344
- bgcolor: theme.palette.mode === "dark" ? "rgba(255,255,255,0.15)" : "rgba(0,0,0,0.1)",
31345
- color: theme.palette.text.primary
31357
+ opacity: 1,
31358
+ bgcolor: theme.palette.mode === "dark" ? "rgba(0,0,0,0.12)" : "rgba(255,255,255,0.2)"
31346
31359
  }
31347
31360
  }),
31348
31361
  children: "\u2715"
@@ -31365,7 +31378,10 @@ var init_chat2 = __esm({
31365
31378
  px: isMobile ? 1 : 2,
31366
31379
  // Reduce padding on mobile for better width utilization
31367
31380
  pb: logoOnly ? 0 : `${inputHeight + 24}px`,
31368
- maxHeight: isMobile ? "calc(var(--vh, 1vh) * 100)" : "100%",
31381
+ // The flex column already bounds this; the old --vh cap (from
31382
+ // window.innerHeight) under-measured in iOS standalone and let
31383
+ // the composer's auto margins float it above the bottom.
31384
+ maxHeight: "100%",
31369
31385
  WebkitOverflowScrolling: "touch",
31370
31386
  overscrollBehavior: "contain",
31371
31387
  position: "relative",
@@ -31491,7 +31507,7 @@ var init_chat2 = __esm({
31491
31507
  display: "flex",
31492
31508
  flexDirection: "column",
31493
31509
  alignItems: "center",
31494
- margin: "auto",
31510
+ margin: "0 auto",
31495
31511
  width: "100vw",
31496
31512
  maxWidth: "768px"
31497
31513
  },