@burtson-labs/bandit-engine 2.0.85 → 2.0.86

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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StreamingMarkdown_default
3
- } from "./chunk-OHDMP7FI.mjs";
3
+ } from "./chunk-7SQLHCBV.mjs";
4
4
  import {
5
5
  aiProviderInitService
6
6
  } from "./chunk-I4QUXTIM.mjs";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-WQLKBI3Y.mjs";
15
15
  import {
16
16
  chat_modal_default
17
- } from "./chunk-XHPSNERM.mjs";
17
+ } from "./chunk-AJSGL2XJ.mjs";
18
18
  import {
19
19
  AddIcon,
20
20
  ArchiveIcon,
@@ -86,7 +86,7 @@ import {
86
86
  predefinedThemes,
87
87
  useNotificationService,
88
88
  useVoiceStore
89
- } from "./chunk-GNTQR7L6.mjs";
89
+ } from "./chunk-C2L6ZSWR.mjs";
90
90
  import {
91
91
  TOPICS,
92
92
  authenticationService,
@@ -9741,7 +9741,7 @@ var MCPToolsTabV2_default = MCPToolsTabV2;
9741
9741
 
9742
9742
  // src/management/management.tsx
9743
9743
  import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
9744
- var preloadChatPage = () => import("./chat-ASHS5XCL.mjs");
9744
+ var preloadChatPage = () => import("./chat-QMGKUFBI.mjs");
9745
9745
  var buildCapabilitiesUrl = (gatewayApiUrl) => {
9746
9746
  const trimmed = gatewayApiUrl.replace(/\/$/, "");
9747
9747
  if (trimmed.endsWith("/api")) {
@@ -11107,4 +11107,4 @@ export {
11107
11107
  useGatewayMemory,
11108
11108
  management_default
11109
11109
  };
11110
- //# sourceMappingURL=chunk-R64BOUIU.mjs.map
11110
+ //# sourceMappingURL=chunk-OICDRDQZ.mjs.map
package/dist/index.js CHANGED
@@ -16401,7 +16401,7 @@ var init_memory_modal = __esm({
16401
16401
  fontSize: "0.8rem",
16402
16402
  fontWeight: 500,
16403
16403
  zIndex: 1
16404
- }, children: "Advanced Vector Memory Active \u2022 Memories synced to AI database for enhanced semantic search" })
16404
+ }, children: "Cloud memory \xB7 synced to your account" })
16405
16405
  ] }),
16406
16406
  /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_material13.Box, { sx: { flexShrink: 0 }, children: [
16407
16407
  /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_material13.Box, { sx: { px: isMobileView ? 1.5 : 2, py: isMobileView ? 1.25 : 1.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
@@ -16409,7 +16409,7 @@ var init_memory_modal = __esm({
16409
16409
  {
16410
16410
  variant: "body2",
16411
16411
  sx: { color: theme.palette.text.secondary, fontSize: "0.85rem", textAlign: isMobileView ? "left" : "center" },
16412
- children: shouldUseVectorForMemories ? "Semantic memory \u2014 searches meaning across your conversations." : "Private and local. You decide what's remembered."
16412
+ children: shouldUseVectorForMemories ? "Synced to your account for quick recall." : "Private and local. You decide what's remembered."
16413
16413
  }
16414
16414
  ) }),
16415
16415
  /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
@@ -24497,6 +24497,8 @@ var init_enhanced_mobile_conversations_modal = __esm({
24497
24497
  init_conversationStore();
24498
24498
  init_projectStore();
24499
24499
  init_authenticationStore();
24500
+ init_packageSettingsStore();
24501
+ init_memory_modal();
24500
24502
  init_brandingService();
24501
24503
  init_project_management_modal();
24502
24504
  init_move_conversation_modal();
@@ -24555,6 +24557,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
24555
24557
  deleteProject
24556
24558
  } = useProjectStore();
24557
24559
  const [projectManagementOpen, setProjectManagementOpen] = (0, import_react32.useState)(false);
24560
+ const [memoryModalOpen, setMemoryModalOpen] = (0, import_react32.useState)(false);
24558
24561
  const [collapsedProjects, setCollapsedProjects] = (0, import_react32.useState)(/* @__PURE__ */ new Set());
24559
24562
  const didInitCollapseRef = (0, import_react32.useRef)(false);
24560
24563
  const [searchQuery, setSearchQuery] = (0, import_react32.useState)("");
@@ -24599,21 +24602,49 @@ var init_enhanced_mobile_conversations_modal = __esm({
24599
24602
  return void 0;
24600
24603
  }, [user2, userDisplayName]);
24601
24604
  (0, import_react32.useEffect)(() => {
24602
- const fetchBranding = async () => {
24605
+ if (!open) return;
24606
+ const fresh = readPersistedToken();
24607
+ const authStore = useAuthenticationStore.getState();
24608
+ if (fresh && fresh !== authStore.token) authStore.setToken(fresh);
24609
+ let active2 = true;
24610
+ let objectUrl = null;
24611
+ const resolveAvatar2 = async () => {
24612
+ try {
24613
+ const avatarId = getCustomClaim("avatarUrl");
24614
+ const fileStorageApiUrl = usePackageSettingsStore.getState().settings?.fileStorageApiUrl;
24615
+ const token = useAuthenticationStore.getState().token;
24616
+ if (avatarId && fileStorageApiUrl && token) {
24617
+ const base = fileStorageApiUrl.replace(/\/$/, "");
24618
+ const res = await fetch(`${base}/app-asset/download/${encodeURIComponent(avatarId)}`, {
24619
+ headers: { Authorization: `Bearer ${token}` }
24620
+ });
24621
+ if (res.ok) {
24622
+ const blob = await res.blob();
24623
+ if (active2) {
24624
+ objectUrl = URL.createObjectURL(blob);
24625
+ setAvatarImage(objectUrl);
24626
+ }
24627
+ return;
24628
+ }
24629
+ }
24630
+ } catch {
24631
+ }
24603
24632
  try {
24604
24633
  const branding = await brandingService_default.getBranding();
24605
- setAvatarImage(branding?.logoBase64 || BANDIT_AVATAR2);
24634
+ if (active2) setAvatarImage(branding?.logoBase64 || BANDIT_AVATAR2);
24606
24635
  } catch (error) {
24607
24636
  debugLogger.error("Failed to load branding avatar", {
24608
24637
  error: error instanceof Error ? error.message : String(error)
24609
24638
  });
24610
- setAvatarImage(BANDIT_AVATAR2);
24639
+ if (active2) setAvatarImage(BANDIT_AVATAR2);
24611
24640
  }
24612
24641
  };
24613
- if (open) {
24614
- fetchBranding();
24615
- }
24616
- }, [open]);
24642
+ resolveAvatar2();
24643
+ return () => {
24644
+ active2 = false;
24645
+ if (objectUrl) URL.revokeObjectURL(objectUrl);
24646
+ };
24647
+ }, [open, getCustomClaim]);
24617
24648
  const avatarLabel = userDisplayName || user2?.email || "Bandit";
24618
24649
  const avatarInitials = (0, import_react32.useMemo)(() => deriveInitials2(avatarLabel), [avatarLabel]);
24619
24650
  const buildSnippet = (text, query, idx) => {
@@ -24857,6 +24888,15 @@ var init_enhanced_mobile_conversations_modal = __esm({
24857
24888
  }
24858
24889
  }
24859
24890
  ),
24891
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
24892
+ import_material23.IconButton,
24893
+ {
24894
+ onClick: () => setMemoryModalOpen(true),
24895
+ "aria-label": "Memory",
24896
+ sx: { color: theme.palette.text.secondary },
24897
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react9.Brain, {})
24898
+ }
24899
+ ),
24860
24900
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
24861
24901
  import_material23.IconButton,
24862
24902
  {
@@ -25266,6 +25306,9 @@ var init_enhanced_mobile_conversations_modal = __esm({
25266
25306
  /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
25267
25307
  import_material23.Box,
25268
25308
  {
25309
+ onClick: user2 ? () => {
25310
+ window.location.href = "/profile";
25311
+ } : void 0,
25269
25312
  sx: {
25270
25313
  mt: "auto",
25271
25314
  px: 2,
@@ -25273,10 +25316,9 @@ var init_enhanced_mobile_conversations_modal = __esm({
25273
25316
  borderTop: `1px solid ${(0, import_styles15.alpha)(theme.palette.divider, 0.6)}`,
25274
25317
  display: "flex",
25275
25318
  alignItems: "center",
25276
- justifyContent: "center",
25277
25319
  gap: 1.25,
25278
25320
  bgcolor: (0, import_styles15.alpha)(theme.palette.background.default, 0.88),
25279
- flexWrap: "wrap"
25321
+ cursor: user2 ? "pointer" : "default"
25280
25322
  },
25281
25323
  children: [
25282
25324
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
@@ -25294,7 +25336,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
25294
25336
  children: avatarInitials
25295
25337
  }
25296
25338
  ),
25297
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_material23.Box, { sx: { display: "flex", flexDirection: "column", alignItems: "center", gap: 0.5, minWidth: 0 }, children: [
25339
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_material23.Box, { sx: { display: "flex", flexDirection: "column", flex: 1, minWidth: 0, gap: 0.25 }, children: [
25298
25340
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
25299
25341
  import_material23.Typography,
25300
25342
  {
@@ -25304,16 +25346,33 @@ var init_enhanced_mobile_conversations_modal = __esm({
25304
25346
  children: user2 ? userDisplayName : "Not signed in"
25305
25347
  }
25306
25348
  ),
25307
- !user2 && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
25349
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
25308
25350
  import_material23.Typography,
25309
25351
  {
25310
25352
  variant: "caption",
25311
- sx: { color: theme.palette.text.secondary },
25312
25353
  noWrap: true,
25313
- children: "Connect your account to sync chats"
25354
+ sx: { color: theme.palette.text.secondary },
25355
+ children: user2 ? "View profile & settings" : "Connect your account to sync chats"
25314
25356
  }
25315
25357
  )
25316
- ] })
25358
+ ] }),
25359
+ user2 && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
25360
+ import_material23.Box,
25361
+ {
25362
+ sx: {
25363
+ flexShrink: 0,
25364
+ display: "flex",
25365
+ alignItems: "center",
25366
+ justifyContent: "center",
25367
+ width: 30,
25368
+ height: 30,
25369
+ borderRadius: "50%",
25370
+ border: `1px solid ${(0, import_styles15.alpha)(theme.palette.divider, 0.8)}`,
25371
+ color: theme.palette.text.secondary
25372
+ },
25373
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react9.Settings, { size: 16 })
25374
+ }
25375
+ )
25317
25376
  ]
25318
25377
  }
25319
25378
  )
@@ -25329,6 +25388,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
25329
25388
  onClose: () => setProjectManagementOpen(false)
25330
25389
  }
25331
25390
  ),
25391
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(memory_modal_default, { open: memoryModalOpen, onClose: () => setMemoryModalOpen(false) }),
25332
25392
  conversationToMove && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
25333
25393
  move_conversation_modal_default,
25334
25394
  {