@burtson-labs/bandit-engine 2.0.63 → 2.0.65

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-SYBMWGMA.mjs";
3
+ } from "./chunk-7EPFQDJW.mjs";
4
4
  import {
5
5
  chat_provider_default
6
6
  } from "./chunk-D55E6ZDV.mjs";
@@ -10,8 +10,8 @@ import {
10
10
  useGatewayHealth,
11
11
  useGatewayMemory,
12
12
  useGatewayModels
13
- } from "./chunk-5NSOHUCR.mjs";
14
- import "./chunk-E4Q7BHBQ.mjs";
13
+ } from "./chunk-O44AP4XI.mjs";
14
+ import "./chunk-O7M4OPZU.mjs";
15
15
  import "./chunk-VTC6AIWY.mjs";
16
16
  import "./chunk-6QTTNYF2.mjs";
17
17
  import {
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-IXIM7BNO.mjs";
20
20
  import {
21
21
  chat_modal_default
22
- } from "./chunk-UQ4VQSWS.mjs";
22
+ } from "./chunk-HKQSZALO.mjs";
23
23
  import {
24
24
  FeedbackButton,
25
25
  FeedbackModal,
@@ -37,7 +37,7 @@ import {
37
37
  useTTS,
38
38
  useVoiceStore,
39
39
  voiceService
40
- } from "./chunk-NCMSNXB2.mjs";
40
+ } from "./chunk-FXFTA5PZ.mjs";
41
41
  import {
42
42
  DEFAULT_TIER_FEATURES,
43
43
  FeatureFlagContext,
@@ -13456,9 +13456,10 @@ ${sourcesMarkdownList.join("\n")}`;
13456
13456
  variant: "rounded",
13457
13457
  onClick: () => setOpenImage(img),
13458
13458
  sx: {
13459
- width: 64,
13460
- height: 64,
13459
+ width: 96,
13460
+ height: 96,
13461
13461
  borderRadius: 2,
13462
+ border: `1px solid ${(0, import_styles2.alpha)(theme.palette.text.primary, 0.25)}`,
13462
13463
  cursor: "pointer",
13463
13464
  "&:hover": { boxShadow: `0 0 0 2px ${theme.palette.primary.main}` }
13464
13465
  }
@@ -19076,7 +19077,7 @@ var init_themeMap = __esm({
19076
19077
  });
19077
19078
 
19078
19079
  // src/components/StreamingMarkdown.tsx
19079
- var import_react33, import_material25, import_react_markdown2, import_remark_gfm2, import_rehype_raw2, import_rehype_sanitize3, import_styles19, import_jsx_runtime24, StreamingMarkdown, StreamingMarkdown_default;
19080
+ var import_react33, import_material25, import_react_markdown2, import_remark_gfm2, import_rehype_raw2, import_rehype_sanitize3, import_styles19, import_jsx_runtime24, StreamingMarkdown, arePropsEqual, StreamingMarkdown_default;
19080
19081
  var init_StreamingMarkdown = __esm({
19081
19082
  "src/components/StreamingMarkdown.tsx"() {
19082
19083
  "use strict";
@@ -19510,8 +19511,8 @@ ${listMarkdown}`;
19510
19511
  {
19511
19512
  ref: containerRef,
19512
19513
  sx: {
19513
- // Base transition for minor layout changes
19514
- transition: "opacity 120ms ease-out, transform 120ms ease-out",
19514
+ // Settle the whole block to full color a beat after streaming ends.
19515
+ transition: "opacity 380ms ease-out, transform 220ms ease-out",
19515
19516
  "& .cursor": {
19516
19517
  display: showCursor ? "inline" : "none",
19517
19518
  animation: "blink 1s step-start infinite"
@@ -19519,16 +19520,18 @@ ${listMarkdown}`;
19519
19520
  "@keyframes blink": {
19520
19521
  "50%": { opacity: 0 }
19521
19522
  },
19523
+ // Each newly-written word focuses in — blur→sharp, a tiny rise, and fade —
19524
+ // like ink settling onto the page as the typewriter writes.
19522
19525
  "& .bl-fade-word": {
19523
19526
  opacity: 0,
19524
- animation: "bl-fade-in 420ms ease-out forwards"
19527
+ animation: "bl-fade-in 480ms cubic-bezier(0.22, 1, 0.36, 1) forwards"
19525
19528
  },
19526
19529
  "@keyframes bl-fade-in": {
19527
- from: { opacity: 0, transform: "translateY(1.5px)" },
19528
- to: { opacity: 1, transform: "translateY(0)" }
19530
+ from: { opacity: 0, filter: "blur(3px)", transform: "translateY(2px)" },
19531
+ to: { opacity: 1, filter: "blur(0)", transform: "translateY(0)" }
19529
19532
  },
19530
- // Subtle fade-in for each render while streaming to reduce choppiness perception
19531
- opacity: isStreaming ? 0.985 : 1,
19533
+ // Dimmed while streaming, then brightens to full color once the answer lands.
19534
+ opacity: isStreaming ? 0.86 : 1,
19532
19535
  transform: isStreaming ? "translateY(0.25px)" : "none",
19533
19536
  // Reduce layout jumpiness between updates
19534
19537
  "& p:last-child": { marginBottom: 0 },
@@ -19554,7 +19557,17 @@ ${listMarkdown}`;
19554
19557
  }
19555
19558
  );
19556
19559
  };
19557
- StreamingMarkdown_default = StreamingMarkdown;
19560
+ arePropsEqual = (prev, next) => {
19561
+ if (prev.content !== next.content || prev.isStreaming !== next.isStreaming) {
19562
+ return false;
19563
+ }
19564
+ const a = prev.sources;
19565
+ const b = next.sources;
19566
+ if (a === b) return true;
19567
+ if (!a || !b || a.length !== b.length) return false;
19568
+ return a.every((s, i) => s.id === b[i].id && s.name === b[i].name);
19569
+ };
19570
+ StreamingMarkdown_default = import_react33.default.memo(StreamingMarkdown, arePropsEqual);
19558
19571
  }
19559
19572
  });
19560
19573
 
@@ -19878,8 +19891,8 @@ var init_chat_scroll_to_bottom_button = __esm({
19878
19891
  drawerOpen = false,
19879
19892
  isMobile = false
19880
19893
  }) => {
19881
- const verticalBuffer = isMobile ? 28 : 48;
19882
- const bottomOffset = Math.max(inputHeight + verticalBuffer, verticalBuffer + 64);
19894
+ const verticalBuffer = isMobile ? 44 : 80;
19895
+ const bottomOffset = Math.max(inputHeight + verticalBuffer, verticalBuffer + 72);
19883
19896
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
19884
19897
  import_material32.IconButton,
19885
19898
  {