@burtson-labs/bandit-engine 2.0.42 → 2.0.49

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 (54) hide show
  1. package/README.md +7 -5
  2. package/dist/{aiProviderStore-UQI33C5E.mjs → aiProviderStore-3N3VE6D4.mjs} +2 -2
  3. package/dist/chat-647M6BRG.mjs +15 -0
  4. package/dist/chat-provider.js +45 -10
  5. package/dist/chat-provider.js.map +1 -1
  6. package/dist/chat-provider.mjs +6 -6
  7. package/dist/{chunk-UXE67LR7.mjs → chunk-6WZUQHZT.mjs} +11 -7
  8. package/dist/chunk-6WZUQHZT.mjs.map +1 -0
  9. package/dist/{chunk-EOEI74X4.mjs → chunk-7HXARU5R.mjs} +101 -37
  10. package/dist/chunk-7HXARU5R.mjs.map +1 -0
  11. package/dist/{chunk-XUBYA5I7.mjs → chunk-7ZDS33S2.mjs} +34 -6
  12. package/dist/chunk-7ZDS33S2.mjs.map +1 -0
  13. package/dist/{chunk-SBNENBUQ.mjs → chunk-AXFX2HUK.mjs} +12 -12
  14. package/dist/{chunk-SBNENBUQ.mjs.map → chunk-AXFX2HUK.mjs.map} +1 -1
  15. package/dist/{chunk-54ZQ3FSN.mjs → chunk-BENL3EF2.mjs} +7 -4
  16. package/dist/chunk-BENL3EF2.mjs.map +1 -0
  17. package/dist/{chunk-RTQDQ6TC.mjs → chunk-EHNWQ4T3.mjs} +2 -2
  18. package/dist/{chunk-KBKWVG7X.mjs → chunk-HKJTRBWC.mjs} +5 -5
  19. package/dist/{chunk-4RCAVVDN.mjs → chunk-JCLL7AGP.mjs} +63 -45
  20. package/dist/chunk-JCLL7AGP.mjs.map +1 -0
  21. package/dist/{chunk-ERV7GLY3.mjs → chunk-TVF45U7B.mjs} +5 -5
  22. package/dist/{chunk-H4PBQ5LJ.mjs → chunk-VL3CMSDO.mjs} +4 -4
  23. package/dist/cli.js +45 -45
  24. package/dist/cli.js.map +1 -1
  25. package/dist/{gateway-5yt_3QDP.d.mts → gateway-oScD5tvE.d.mts} +4 -3
  26. package/dist/{gateway-5yt_3QDP.d.ts → gateway-oScD5tvE.d.ts} +4 -3
  27. package/dist/index.d.mts +2 -2
  28. package/dist/index.d.ts +2 -2
  29. package/dist/index.js +199 -76
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.mjs +10 -10
  32. package/dist/management/management.js +199 -76
  33. package/dist/management/management.js.map +1 -1
  34. package/dist/management/management.mjs +8 -8
  35. package/dist/modals/chat-modal/chat-modal.js +53 -18
  36. package/dist/modals/chat-modal/chat-modal.js.map +1 -1
  37. package/dist/modals/chat-modal/chat-modal.mjs +5 -5
  38. package/dist/{modelStore-UMJBDSEF.mjs → modelStore-XWFHNTBT.mjs} +2 -2
  39. package/dist/public-types.d.mts +2 -1
  40. package/dist/public-types.d.ts +2 -1
  41. package/package.json +2 -2
  42. package/dist/chat-XDC4SNJF.mjs +0 -15
  43. package/dist/chunk-4RCAVVDN.mjs.map +0 -1
  44. package/dist/chunk-54ZQ3FSN.mjs.map +0 -1
  45. package/dist/chunk-EOEI74X4.mjs.map +0 -1
  46. package/dist/chunk-UXE67LR7.mjs.map +0 -1
  47. package/dist/chunk-XUBYA5I7.mjs.map +0 -1
  48. /package/dist/{aiProviderStore-UQI33C5E.mjs.map → aiProviderStore-3N3VE6D4.mjs.map} +0 -0
  49. /package/dist/{chat-XDC4SNJF.mjs.map → chat-647M6BRG.mjs.map} +0 -0
  50. /package/dist/{chunk-RTQDQ6TC.mjs.map → chunk-EHNWQ4T3.mjs.map} +0 -0
  51. /package/dist/{chunk-KBKWVG7X.mjs.map → chunk-HKJTRBWC.mjs.map} +0 -0
  52. /package/dist/{chunk-ERV7GLY3.mjs.map → chunk-TVF45U7B.mjs.map} +0 -0
  53. /package/dist/{chunk-H4PBQ5LJ.mjs.map → chunk-VL3CMSDO.mjs.map} +0 -0
  54. /package/dist/{modelStore-UMJBDSEF.mjs.map → modelStore-XWFHNTBT.mjs.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-ONQMRE2G.mjs";
4
4
  import {
5
5
  useMCPToolsStore
6
- } from "./chunk-RTQDQ6TC.mjs";
6
+ } from "./chunk-EHNWQ4T3.mjs";
7
7
  import {
8
8
  FeedbackButton,
9
9
  FeedbackModal,
@@ -19,11 +19,12 @@ import {
19
19
  useNotificationService,
20
20
  useTTS,
21
21
  useVoiceStore
22
- } from "./chunk-SBNENBUQ.mjs";
22
+ } from "./chunk-AXFX2HUK.mjs";
23
23
  import {
24
24
  authenticationService,
25
25
  brandingService_default,
26
26
  detectMessageMood,
27
+ detectTransparency,
27
28
  detectUserInterestAndExcitement,
28
29
  determineRelevantDocuments,
29
30
  embeddingService,
@@ -43,16 +44,16 @@ import {
43
44
  useMemoryStore,
44
45
  useProjectStore,
45
46
  useVectorStore
46
- } from "./chunk-UXE67LR7.mjs";
47
+ } from "./chunk-6WZUQHZT.mjs";
47
48
  import {
48
49
  indexedDBService_default,
49
50
  useModelStore,
50
51
  usePackageSettingsStore,
51
52
  usePreferencesStore
52
- } from "./chunk-XUBYA5I7.mjs";
53
+ } from "./chunk-7ZDS33S2.mjs";
53
54
  import {
54
55
  useAIProviderStore
55
- } from "./chunk-54ZQ3FSN.mjs";
56
+ } from "./chunk-BENL3EF2.mjs";
56
57
  import {
57
58
  debugLogger
58
59
  } from "./chunk-KCI46M23.mjs";
@@ -82,7 +83,20 @@ var Logo = ({ visible, atTop = false }) => {
82
83
  const brandingData = await brandingService_default.getBranding();
83
84
  if (brandingData) {
84
85
  setLogoBase64(brandingData.logoBase64 || null);
85
- setHasTransparentLogo(brandingData.hasTransparentLogo ?? true);
86
+ if (brandingData.logoBase64) {
87
+ try {
88
+ const detected = await detectTransparency(brandingData.logoBase64);
89
+ const isPng = brandingData.logoBase64.startsWith("data:image/png");
90
+ const finalTransparent = detected || isPng || brandingData.hasTransparentLogo === true;
91
+ setHasTransparentLogo(finalTransparent);
92
+ } catch {
93
+ const isPng = brandingData.logoBase64.startsWith("data:image/png");
94
+ const finalTransparent = brandingData.hasTransparentLogo === true || isPng;
95
+ setHasTransparentLogo(finalTransparent);
96
+ }
97
+ } else {
98
+ setHasTransparentLogo(brandingData.hasTransparentLogo ?? true);
99
+ }
86
100
  }
87
101
  } catch (e) {
88
102
  debugLogger.error("Failed to load branding from service", { error: e });
@@ -92,7 +106,7 @@ var Logo = ({ visible, atTop = false }) => {
92
106
  };
93
107
  loadBranding();
94
108
  }, []);
95
- return logoBase64 && /* @__PURE__ */ jsx(Fragment, { children: loading ? null : hasTransparentLogo ? /* @__PURE__ */ jsx(
109
+ return logoBase64 && /* @__PURE__ */ jsx(Fragment, { children: loading ? null : hasTransparentLogo !== false ? /* @__PURE__ */ jsx(
96
110
  Box,
97
111
  {
98
112
  component: "img",
@@ -104,7 +118,8 @@ var Logo = ({ visible, atTop = false }) => {
104
118
  maxWidth: 600,
105
119
  aspectRatio: "1 / 1",
106
120
  margin: "0 auto",
107
- mt: atTop ? 2 : 6
121
+ mt: atTop ? 2 : 6,
122
+ display: "block"
108
123
  }
109
124
  }
110
125
  ) : /* @__PURE__ */ jsx(
@@ -144,8 +159,8 @@ var ChatScrollToBottomButton = ({
144
159
  drawerOpen = false,
145
160
  isMobile = false
146
161
  }) => {
147
- const verticalBuffer = isMobile ? 36 : 56;
148
- const bottomOffset = Math.max(inputHeight + verticalBuffer, verticalBuffer + 72);
162
+ const verticalBuffer = isMobile ? 28 : 48;
163
+ const bottomOffset = Math.max(inputHeight + verticalBuffer, verticalBuffer + 64);
149
164
  return /* @__PURE__ */ jsx2(
150
165
  IconButton,
151
166
  {
@@ -161,9 +176,12 @@ var ChatScrollToBottomButton = ({
161
176
  borderColor: (theme) => theme.palette.divider,
162
177
  zIndex: (theme) => Math.max(theme.zIndex.modal + 1, 1400),
163
178
  boxShadow: 3,
164
- transition: "bottom 0.3s ease, left 0.3s ease-in-out",
179
+ transition: "bottom 0.25s ease, left 0.3s ease-in-out, transform 0.2s ease",
165
180
  "&:hover": {
166
181
  bgcolor: (theme) => theme.palette.action.hover
182
+ },
183
+ "&:active": {
184
+ transform: "translateX(-50%) translateY(1px)"
167
185
  }
168
186
  },
169
187
  children: /* @__PURE__ */ jsx2(ArrowDownwardIcon, { sx: { color: "inherit" } })
@@ -3823,7 +3841,7 @@ import {
3823
3841
  IconButton as IconButton10,
3824
3842
  Menu as Menu5,
3825
3843
  MenuItem as MenuItem5,
3826
- Tooltip as Tooltip4,
3844
+ Tooltip as Tooltip5,
3827
3845
  useMediaQuery as useMediaQuery5,
3828
3846
  useTheme as useTheme12,
3829
3847
  Dialog as Dialog5,
@@ -3852,6 +3870,7 @@ import {
3852
3870
  Box as Box9,
3853
3871
  Typography as Typography6,
3854
3872
  IconButton as IconButton8,
3873
+ Tooltip as Tooltip4,
3855
3874
  TextField as TextField5,
3856
3875
  InputAdornment,
3857
3876
  useMediaQuery as useMediaQuery4,
@@ -5408,6 +5427,18 @@ var ProjectHeader = ({
5408
5427
  };
5409
5428
  var project_header_default = ProjectHeader;
5410
5429
 
5430
+ // src/config/tooltips.ts
5431
+ var TOOLTIP_COPY = {
5432
+ openNavigation: "Open navigation",
5433
+ closeNavigation: "Close navigation",
5434
+ manageProjects: "Manage projects",
5435
+ conversationOptions: "Open conversation options",
5436
+ closeConversationsPanel: "Close conversations panel",
5437
+ clearSearch: "Clear search",
5438
+ addProject: "Add new project"
5439
+ };
5440
+ var tooltip = (key) => TOOLTIP_COPY[key];
5441
+
5411
5442
  // src/chat/conversation-drawer.tsx
5412
5443
  import { Fragment as Fragment6, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
5413
5444
  var BANDIT_AVATAR = "https://cdn.burtson.ai/images/bandit-head.png";
@@ -5685,11 +5716,12 @@ var ConversationDrawer = ({ open, onClose }) => {
5685
5716
  gap: 1
5686
5717
  },
5687
5718
  children: [
5688
- /* @__PURE__ */ jsx12(
5719
+ /* @__PURE__ */ jsx12(Tooltip4, { title: tooltip("manageProjects"), arrow: true, children: /* @__PURE__ */ jsx12(
5689
5720
  IconButton8,
5690
5721
  {
5691
5722
  onClick: () => setProjectManagementOpen(true),
5692
5723
  size: "small",
5724
+ "aria-label": tooltip("manageProjects"),
5693
5725
  sx: {
5694
5726
  color: theme.palette.text.secondary,
5695
5727
  "&:hover": {
@@ -5699,12 +5731,13 @@ var ConversationDrawer = ({ open, onClose }) => {
5699
5731
  },
5700
5732
  children: /* @__PURE__ */ jsx12(FolderIcon4, {})
5701
5733
  }
5702
- ),
5703
- /* @__PURE__ */ jsx12(
5734
+ ) }),
5735
+ /* @__PURE__ */ jsx12(Tooltip4, { title: tooltip("conversationOptions"), arrow: true, children: /* @__PURE__ */ jsx12(
5704
5736
  IconButton8,
5705
5737
  {
5706
5738
  onClick: handleMenuOpen,
5707
5739
  size: "small",
5740
+ "aria-label": tooltip("conversationOptions"),
5708
5741
  sx: {
5709
5742
  color: theme.palette.text.secondary,
5710
5743
  "&:hover": {
@@ -5714,8 +5747,8 @@ var ConversationDrawer = ({ open, onClose }) => {
5714
5747
  },
5715
5748
  children: /* @__PURE__ */ jsx12(MoreVertIcon3, {})
5716
5749
  }
5717
- ),
5718
- isMobile && /* @__PURE__ */ jsx12(
5750
+ ) }),
5751
+ isMobile && /* @__PURE__ */ jsx12(Tooltip4, { title: tooltip("closeConversationsPanel"), children: /* @__PURE__ */ jsx12(
5719
5752
  IconButton8,
5720
5753
  {
5721
5754
  onClick: (e) => {
@@ -5724,6 +5757,7 @@ var ConversationDrawer = ({ open, onClose }) => {
5724
5757
  onClose();
5725
5758
  },
5726
5759
  size: "small",
5760
+ "aria-label": tooltip("closeConversationsPanel"),
5727
5761
  sx: {
5728
5762
  color: theme.palette.text.secondary,
5729
5763
  "&:hover": {
@@ -5733,7 +5767,7 @@ var ConversationDrawer = ({ open, onClose }) => {
5733
5767
  },
5734
5768
  children: /* @__PURE__ */ jsx12(CloseIcon5, {})
5735
5769
  }
5736
- )
5770
+ ) })
5737
5771
  ]
5738
5772
  }
5739
5773
  ),
@@ -5748,16 +5782,17 @@ var ConversationDrawer = ({ open, onClose }) => {
5748
5782
  variant: "outlined",
5749
5783
  InputProps: {
5750
5784
  startAdornment: /* @__PURE__ */ jsx12(InputAdornment, { position: "start", children: /* @__PURE__ */ jsx12(SearchIcon, { fontSize: "small", sx: { color: theme.palette.text.secondary } }) }),
5751
- endAdornment: searchQuery && /* @__PURE__ */ jsx12(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx12(
5785
+ endAdornment: searchQuery && /* @__PURE__ */ jsx12(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx12(Tooltip4, { title: tooltip("clearSearch"), children: /* @__PURE__ */ jsx12(
5752
5786
  IconButton8,
5753
5787
  {
5754
5788
  onClick: handleSearchClear,
5755
5789
  size: "small",
5756
5790
  edge: "end",
5791
+ "aria-label": tooltip("clearSearch"),
5757
5792
  sx: { color: theme.palette.text.secondary },
5758
5793
  children: /* @__PURE__ */ jsx12(ClearIcon, { fontSize: "small" })
5759
5794
  }
5760
- ) })
5795
+ ) }) })
5761
5796
  },
5762
5797
  sx: {
5763
5798
  "& .MuiOutlinedInput-root": {
@@ -5832,7 +5867,15 @@ var ConversationDrawer = ({ open, onClose }) => {
5832
5867
  children: "New Project"
5833
5868
  }
5834
5869
  ),
5835
- /* @__PURE__ */ jsx12(IconButton8, { size: "small", sx: { color: theme.palette.success.main }, children: /* @__PURE__ */ jsx12(AddIcon3, { fontSize: "small" }) })
5870
+ /* @__PURE__ */ jsx12(Tooltip4, { title: tooltip("addProject"), arrow: true, children: /* @__PURE__ */ jsx12(
5871
+ IconButton8,
5872
+ {
5873
+ size: "small",
5874
+ "aria-label": tooltip("addProject"),
5875
+ sx: { color: theme.palette.success.main },
5876
+ children: /* @__PURE__ */ jsx12(AddIcon3, { fontSize: "small" })
5877
+ }
5878
+ ) })
5836
5879
  ]
5837
5880
  }
5838
5881
  ),
@@ -7256,9 +7299,18 @@ var ChatAppBar = ({
7256
7299
  const currentModel = useModelStore((s) => s.availableModels.find((m) => m.name === selectedModel));
7257
7300
  const currentAvatar = currentModel?.avatarBase64 || modelAvatars[selectedModel] || banditHead;
7258
7301
  const pendingModelAvatar = useModelStore.getState().availableModels.find((m) => m.name === pendingModel)?.avatarBase64 || modelAvatars[pendingModel || ""] || banditHead;
7302
+ const resolvedHomeUrl = preferences.homeUrl?.trim() || packageSettings?.homeUrl?.trim() || "";
7303
+ const homeTooltip = (() => {
7304
+ if (!resolvedHomeUrl) return "Home";
7305
+ try {
7306
+ return `Home (${new URL(resolvedHomeUrl).hostname})`;
7307
+ } catch {
7308
+ return "Home";
7309
+ }
7310
+ })();
7259
7311
  function goToHome() {
7260
- if (preferences.homeUrl && preferences.homeUrl.trim()) {
7261
- window.location.href = preferences.homeUrl;
7312
+ if (resolvedHomeUrl) {
7313
+ window.location.href = resolvedHomeUrl;
7262
7314
  return;
7263
7315
  }
7264
7316
  if (typeof window !== "undefined") {
@@ -7321,7 +7373,7 @@ var ChatAppBar = ({
7321
7373
  }
7322
7374
  },
7323
7375
  children: [
7324
- /* @__PURE__ */ jsx14(Tooltip4, { title: preferences.homeUrl && preferences.homeUrl.trim() ? `Home (${new URL(preferences.homeUrl).hostname})` : "Home", arrow: true, children: /* @__PURE__ */ jsx14(
7376
+ /* @__PURE__ */ jsx14(Tooltip5, { title: homeTooltip, arrow: true, children: /* @__PURE__ */ jsx14(
7325
7377
  IconButton10,
7326
7378
  {
7327
7379
  onClick: goToHome,
@@ -7330,7 +7382,7 @@ var ChatAppBar = ({
7330
7382
  children: /* @__PURE__ */ jsx14(HomeIcon, {})
7331
7383
  }
7332
7384
  ) }),
7333
- showLimitedAdminPanel() && /* @__PURE__ */ jsx14(Tooltip4, { title: "Management & Settings", arrow: true, children: /* @__PURE__ */ jsx14(
7385
+ showLimitedAdminPanel() && /* @__PURE__ */ jsx14(Tooltip5, { title: "Management & Settings", arrow: true, children: /* @__PURE__ */ jsx14(
7334
7386
  IconButton10,
7335
7387
  {
7336
7388
  onClick: () => safeNavigate(managementPath),
@@ -7345,7 +7397,7 @@ var ChatAppBar = ({
7345
7397
  children: /* @__PURE__ */ jsx14(SettingsIcon, {})
7346
7398
  }
7347
7399
  ) }),
7348
- /* @__PURE__ */ jsx14(Tooltip4, { title: syncTooltip, arrow: true, children: /* @__PURE__ */ jsxs11(
7400
+ /* @__PURE__ */ jsx14(Tooltip5, { title: syncTooltip, arrow: true, children: /* @__PURE__ */ jsxs11(
7349
7401
  IconButton10,
7350
7402
  {
7351
7403
  onClick: handleSyncBadgeClick,
@@ -7387,7 +7439,7 @@ var ChatAppBar = ({
7387
7439
  ]
7388
7440
  }
7389
7441
  ) }),
7390
- !isMobile && /* @__PURE__ */ jsx14(Tooltip4, { title: `${drawerOpen ? "Close" : "Open"} Conversations`, arrow: true, children: /* @__PURE__ */ jsxs11(
7442
+ !isMobile && /* @__PURE__ */ jsx14(Tooltip5, { title: `${drawerOpen ? "Close" : "Open"} Conversations`, arrow: true, children: /* @__PURE__ */ jsxs11(
7391
7443
  IconButton10,
7392
7444
  {
7393
7445
  onClick: () => setDrawerOpen(!drawerOpen),
@@ -7428,7 +7480,7 @@ var ChatAppBar = ({
7428
7480
  ]
7429
7481
  }
7430
7482
  ) }),
7431
- !isMobile && canShowNewConversationButton && /* @__PURE__ */ jsx14(Tooltip4, { title: "Start New Conversation", arrow: true, children: /* @__PURE__ */ jsx14(
7483
+ !isMobile && canShowNewConversationButton && /* @__PURE__ */ jsx14(Tooltip5, { title: "Start New Conversation", arrow: true, children: /* @__PURE__ */ jsx14(
7432
7484
  IconButton10,
7433
7485
  {
7434
7486
  onClick: () => createNewConversation(),
@@ -7469,7 +7521,7 @@ var ChatAppBar = ({
7469
7521
  }
7470
7522
  },
7471
7523
  children: [
7472
- isMobile && /* @__PURE__ */ jsx14(Tooltip4, { title: `Conversations (${conversations.length})`, arrow: true, children: /* @__PURE__ */ jsxs11(
7524
+ isMobile && /* @__PURE__ */ jsx14(Tooltip5, { title: `Conversations (${conversations.length})`, arrow: true, children: /* @__PURE__ */ jsxs11(
7473
7525
  IconButton10,
7474
7526
  {
7475
7527
  onClick: () => setModalOpen(true),
@@ -7506,7 +7558,7 @@ var ChatAppBar = ({
7506
7558
  ]
7507
7559
  }
7508
7560
  ) }),
7509
- isMobile && canShowNewConversationButton && /* @__PURE__ */ jsx14(Tooltip4, { title: "Start New Conversation", arrow: true, children: /* @__PURE__ */ jsx14(
7561
+ isMobile && canShowNewConversationButton && /* @__PURE__ */ jsx14(Tooltip5, { title: "Start New Conversation", arrow: true, children: /* @__PURE__ */ jsx14(
7510
7562
  IconButton10,
7511
7563
  {
7512
7564
  onClick: () => {
@@ -7526,7 +7578,7 @@ var ChatAppBar = ({
7526
7578
  children: /* @__PURE__ */ jsx14(AddIcon5, { fontSize: "small" })
7527
7579
  }
7528
7580
  ) }),
7529
- /* @__PURE__ */ jsx14(Tooltip4, { title: `Current AI: ${selectedModel.replace("Bandit-", "")}`, arrow: true, children: /* @__PURE__ */ jsx14(
7581
+ /* @__PURE__ */ jsx14(Tooltip5, { title: `Current AI: ${selectedModel.replace("Bandit-", "")}`, arrow: true, children: /* @__PURE__ */ jsx14(
7530
7582
  IconButton10,
7531
7583
  {
7532
7584
  onClick: (e) => setModelAnchorEl(e.currentTarget),
@@ -7605,9 +7657,15 @@ var ChatAppBar = ({
7605
7657
  (async () => {
7606
7658
  try {
7607
7659
  const storeConfigs = [{ name: "config", keyPath: "id" }];
7608
- const current = await indexedDBService_default.get("banditConfig", 1, "config", "main", storeConfigs);
7660
+ const current = await indexedDBService_default.get(
7661
+ "banditConfig",
7662
+ 1,
7663
+ "config",
7664
+ "main",
7665
+ storeConfigs
7666
+ );
7609
7667
  const updated = {
7610
- ...current,
7668
+ ...current ?? {},
7611
7669
  id: "main",
7612
7670
  model: {
7613
7671
  ...current?.model || {},
@@ -7670,7 +7728,7 @@ var ChatAppBar = ({
7670
7728
  }
7671
7729
  ),
7672
7730
  isTTSAvailable && /* @__PURE__ */ jsxs11(Fragment8, { children: [
7673
- /* @__PURE__ */ jsx14(Tooltip4, { title: `Voice: ${selectedVoice ? toTitleCase(selectedVoice.split("-")[1]) : "Default"}`, arrow: true, children: /* @__PURE__ */ jsx14(
7731
+ /* @__PURE__ */ jsx14(Tooltip5, { title: `Voice: ${selectedVoice ? toTitleCase(selectedVoice.split("-")[1]) : "Default"}`, arrow: true, children: /* @__PURE__ */ jsx14(
7674
7732
  IconButton10,
7675
7733
  {
7676
7734
  onClick: (e) => setVoiceAnchorEl(e.currentTarget),
@@ -7799,9 +7857,15 @@ var ChatAppBar = ({
7799
7857
  (async () => {
7800
7858
  try {
7801
7859
  const storeConfigs = [{ name: "config", keyPath: "id" }];
7802
- const current = await indexedDBService_default.get("banditConfig", 1, "config", "main", storeConfigs);
7860
+ const current = await indexedDBService_default.get(
7861
+ "banditConfig",
7862
+ 1,
7863
+ "config",
7864
+ "main",
7865
+ storeConfigs
7866
+ );
7803
7867
  const updated = {
7804
- ...current,
7868
+ ...current ?? {},
7805
7869
  id: "main",
7806
7870
  model: {
7807
7871
  ...current?.model || {},
@@ -9545,4 +9609,4 @@ var chat_default = Chat;
9545
9609
  export {
9546
9610
  chat_default
9547
9611
  };
9548
- //# sourceMappingURL=chunk-EOEI74X4.mjs.map
9612
+ //# sourceMappingURL=chunk-7HXARU5R.mjs.map