@burtson-labs/bandit-engine 2.0.76 → 2.0.78

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.
@@ -4,7 +4,7 @@ import {
4
4
  getHighlightTree,
5
5
  markdownSanitizeSchema,
6
6
  renderLowlightChildren
7
- } from "./chunk-6DY7W4NK.mjs";
7
+ } from "./chunk-57L7TXB6.mjs";
8
8
 
9
9
  // src/components/StreamingMarkdown.tsx
10
10
  import React, { useEffect, useMemo, useRef, useState } from "react";
@@ -495,4 +495,4 @@ var StreamingMarkdown_default = React.memo(StreamingMarkdown, arePropsEqual);
495
495
  export {
496
496
  StreamingMarkdown_default
497
497
  };
498
- //# sourceMappingURL=chunk-U633CJBV.mjs.map
498
+ //# sourceMappingURL=chunk-YYYEMVBV.mjs.map
package/dist/index.d.mts CHANGED
@@ -14,6 +14,18 @@ declare const Chat: () => react_jsx_runtime.JSX.Element | null;
14
14
 
15
15
  declare const Management: () => react_jsx_runtime.JSX.Element | null;
16
16
 
17
+ interface InterestsEditorProps {
18
+ title?: string | null;
19
+ description?: string | null;
20
+ }
21
+ /**
22
+ * Topic picker for the user's interests. Self-contained — hydrates the
23
+ * preferences store on mount so it works anywhere (e.g. the account profile
24
+ * page, outside the chat). Edits persist to the same store the home-screen
25
+ * conversation starters read from.
26
+ */
27
+ declare const InterestsEditor: ({ title, description, }: InterestsEditorProps) => react_jsx_runtime.JSX.Element;
28
+
17
29
  declare function defineCustomElement<Props extends Record<string, unknown>>(name: string, Component: React.ComponentType<Props>): void;
18
30
 
19
31
  /**
@@ -1337,4 +1349,4 @@ declare const useVectorStore: () => {
1337
1349
  initializeVectorService: () => Promise<void>;
1338
1350
  };
1339
1351
 
1340
- export { Chat, type CreateMemoryOptions, DebugLogger, FeatureEvaluation, FeatureFlagConfig, FeatureFlagContext, type FeatureFlagContextValue, FeatureFlagProvider, type FeatureFlagProviderProps, FeatureFlagService, FeatureKey, FeedbackButton, type FeedbackButtonProps, type FeedbackCategories, FeedbackModal, type FeedbackModalProps, type FeedbackPriorities, type FeedbackRequest, type FeedbackResponse, type FileUploadResult, type GatewayQueryOptions, type LogContext, Management, type MemorySearchFilters, type MigrationProgress, type MigrationStatus, type NotificationConfig, type NotificationContextType, NotificationProvider, type NotificationProviderProps, NotificationService, SYSTEM_FLAGS, type SearchOptions, type SearchResult, StreamingTTSClient, SubscriptionExpiredGuard, type SubscriptionExpiredGuardProps, SubscriptionExpiredModal, type SubscriptionExpiredModalProps, SubscriptionTier, type TTSOptions, type TTSProgress, TTSState, TrialUsage, type UploadRequest, type UseTTSReturn, VectorDatabaseService, type VectorDocument, type VectorMemory, type VectorMemoryMetadata, VectorMigrationService, type VectorStoreStatus, type VoiceState, authenticationService, debugLogger, defineCustomElement, featureFlagService, getCriticalConfig, getFeatureMatrix, getStreamingTTSClient, getSystemConstants, getTTSState, handleHttpError, handleSubscriptionUpgrade, handleValidationError, initializeCoreSystem, notificationService, pauseTTS, previewTierUpgrade, resumeTTS, showInfoNotification, showSuccessNotification, speakStream as speakWithStreaming, stopTTS, syncSubscriptionWithAPI, updateSubscriptionTier, useFeatureFlag, useFeatureVisibility, useFeatures, useGatewayHealth, useGatewayMemory, useGatewayModels, useGlobalTTS, useNotification, useNotificationService, useTTS, useVectorStore, useVoiceStore, useVoices, validateEnvironment, validateSystemIntegrity, vectorDatabaseService, vectorMigrationService };
1352
+ export { Chat, type CreateMemoryOptions, DebugLogger, FeatureEvaluation, FeatureFlagConfig, FeatureFlagContext, type FeatureFlagContextValue, FeatureFlagProvider, type FeatureFlagProviderProps, FeatureFlagService, FeatureKey, FeedbackButton, type FeedbackButtonProps, type FeedbackCategories, FeedbackModal, type FeedbackModalProps, type FeedbackPriorities, type FeedbackRequest, type FeedbackResponse, type FileUploadResult, type GatewayQueryOptions, InterestsEditor, type LogContext, Management, type MemorySearchFilters, type MigrationProgress, type MigrationStatus, type NotificationConfig, type NotificationContextType, NotificationProvider, type NotificationProviderProps, NotificationService, SYSTEM_FLAGS, type SearchOptions, type SearchResult, StreamingTTSClient, SubscriptionExpiredGuard, type SubscriptionExpiredGuardProps, SubscriptionExpiredModal, type SubscriptionExpiredModalProps, SubscriptionTier, type TTSOptions, type TTSProgress, TTSState, TrialUsage, type UploadRequest, type UseTTSReturn, VectorDatabaseService, type VectorDocument, type VectorMemory, type VectorMemoryMetadata, VectorMigrationService, type VectorStoreStatus, type VoiceState, authenticationService, debugLogger, defineCustomElement, featureFlagService, getCriticalConfig, getFeatureMatrix, getStreamingTTSClient, getSystemConstants, getTTSState, handleHttpError, handleSubscriptionUpgrade, handleValidationError, initializeCoreSystem, notificationService, pauseTTS, previewTierUpgrade, resumeTTS, showInfoNotification, showSuccessNotification, speakStream as speakWithStreaming, stopTTS, syncSubscriptionWithAPI, updateSubscriptionTier, useFeatureFlag, useFeatureVisibility, useFeatures, useGatewayHealth, useGatewayMemory, useGatewayModels, useGlobalTTS, useNotification, useNotificationService, useTTS, useVectorStore, useVoiceStore, useVoices, validateEnvironment, validateSystemIntegrity, vectorDatabaseService, vectorMigrationService };
package/dist/index.d.ts CHANGED
@@ -14,6 +14,18 @@ declare const Chat: () => react_jsx_runtime.JSX.Element | null;
14
14
 
15
15
  declare const Management: () => react_jsx_runtime.JSX.Element | null;
16
16
 
17
+ interface InterestsEditorProps {
18
+ title?: string | null;
19
+ description?: string | null;
20
+ }
21
+ /**
22
+ * Topic picker for the user's interests. Self-contained — hydrates the
23
+ * preferences store on mount so it works anywhere (e.g. the account profile
24
+ * page, outside the chat). Edits persist to the same store the home-screen
25
+ * conversation starters read from.
26
+ */
27
+ declare const InterestsEditor: ({ title, description, }: InterestsEditorProps) => react_jsx_runtime.JSX.Element;
28
+
17
29
  declare function defineCustomElement<Props extends Record<string, unknown>>(name: string, Component: React.ComponentType<Props>): void;
18
30
 
19
31
  /**
@@ -1337,4 +1349,4 @@ declare const useVectorStore: () => {
1337
1349
  initializeVectorService: () => Promise<void>;
1338
1350
  };
1339
1351
 
1340
- export { Chat, type CreateMemoryOptions, DebugLogger, FeatureEvaluation, FeatureFlagConfig, FeatureFlagContext, type FeatureFlagContextValue, FeatureFlagProvider, type FeatureFlagProviderProps, FeatureFlagService, FeatureKey, FeedbackButton, type FeedbackButtonProps, type FeedbackCategories, FeedbackModal, type FeedbackModalProps, type FeedbackPriorities, type FeedbackRequest, type FeedbackResponse, type FileUploadResult, type GatewayQueryOptions, type LogContext, Management, type MemorySearchFilters, type MigrationProgress, type MigrationStatus, type NotificationConfig, type NotificationContextType, NotificationProvider, type NotificationProviderProps, NotificationService, SYSTEM_FLAGS, type SearchOptions, type SearchResult, StreamingTTSClient, SubscriptionExpiredGuard, type SubscriptionExpiredGuardProps, SubscriptionExpiredModal, type SubscriptionExpiredModalProps, SubscriptionTier, type TTSOptions, type TTSProgress, TTSState, TrialUsage, type UploadRequest, type UseTTSReturn, VectorDatabaseService, type VectorDocument, type VectorMemory, type VectorMemoryMetadata, VectorMigrationService, type VectorStoreStatus, type VoiceState, authenticationService, debugLogger, defineCustomElement, featureFlagService, getCriticalConfig, getFeatureMatrix, getStreamingTTSClient, getSystemConstants, getTTSState, handleHttpError, handleSubscriptionUpgrade, handleValidationError, initializeCoreSystem, notificationService, pauseTTS, previewTierUpgrade, resumeTTS, showInfoNotification, showSuccessNotification, speakStream as speakWithStreaming, stopTTS, syncSubscriptionWithAPI, updateSubscriptionTier, useFeatureFlag, useFeatureVisibility, useFeatures, useGatewayHealth, useGatewayMemory, useGatewayModels, useGlobalTTS, useNotification, useNotificationService, useTTS, useVectorStore, useVoiceStore, useVoices, validateEnvironment, validateSystemIntegrity, vectorDatabaseService, vectorMigrationService };
1352
+ export { Chat, type CreateMemoryOptions, DebugLogger, FeatureEvaluation, FeatureFlagConfig, FeatureFlagContext, type FeatureFlagContextValue, FeatureFlagProvider, type FeatureFlagProviderProps, FeatureFlagService, FeatureKey, FeedbackButton, type FeedbackButtonProps, type FeedbackCategories, FeedbackModal, type FeedbackModalProps, type FeedbackPriorities, type FeedbackRequest, type FeedbackResponse, type FileUploadResult, type GatewayQueryOptions, InterestsEditor, type LogContext, Management, type MemorySearchFilters, type MigrationProgress, type MigrationStatus, type NotificationConfig, type NotificationContextType, NotificationProvider, type NotificationProviderProps, NotificationService, SYSTEM_FLAGS, type SearchOptions, type SearchResult, StreamingTTSClient, SubscriptionExpiredGuard, type SubscriptionExpiredGuardProps, SubscriptionExpiredModal, type SubscriptionExpiredModalProps, SubscriptionTier, type TTSOptions, type TTSProgress, TTSState, TrialUsage, type UploadRequest, type UseTTSReturn, VectorDatabaseService, type VectorDocument, type VectorMemory, type VectorMemoryMetadata, VectorMigrationService, type VectorStoreStatus, type VoiceState, authenticationService, debugLogger, defineCustomElement, featureFlagService, getCriticalConfig, getFeatureMatrix, getStreamingTTSClient, getSystemConstants, getTTSState, handleHttpError, handleSubscriptionUpgrade, handleValidationError, initializeCoreSystem, notificationService, pauseTTS, previewTierUpgrade, resumeTTS, showInfoNotification, showSuccessNotification, speakStream as speakWithStreaming, stopTTS, syncSubscriptionWithAPI, updateSubscriptionTier, useFeatureFlag, useFeatureVisibility, useFeatures, useGatewayHealth, useGatewayMemory, useGatewayModels, useGlobalTTS, useNotification, useNotificationService, useTTS, useVectorStore, useVoiceStore, useVoices, validateEnvironment, validateSystemIntegrity, vectorDatabaseService, vectorMigrationService };
package/dist/index.js CHANGED
@@ -16262,7 +16262,7 @@ var init_memory_modal = __esm({
16262
16262
  {
16263
16263
  variant: "body2",
16264
16264
  sx: { color: theme.palette.text.secondary, fontSize: "0.85rem", textAlign: isMobileView ? "left" : "center" },
16265
- children: shouldUseVectorForMemories ? "\u{1F680} AI-Powered Vector Memory. Semantic search across your conversations." : "\u{1F9E0} Private. Local. Yours. You control your memories."
16265
+ children: shouldUseVectorForMemories ? "Semantic memory \u2014 searches meaning across your conversations." : "Private and local. You decide what's remembered."
16266
16266
  }
16267
16267
  ) }),
16268
16268
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
@@ -16495,7 +16495,7 @@ var init_memory_modal = __esm({
16495
16495
  fontStyle: "italic",
16496
16496
  mt: 0.5,
16497
16497
  display: "block"
16498
- }, children: "\u{1F4CC} Pinned" })
16498
+ }, children: "Pinned" })
16499
16499
  ] })
16500
16500
  ]
16501
16501
  }
@@ -18617,7 +18617,7 @@ ${sanitize(
18617
18617
  };
18618
18618
  const memory = localStorage.getItem("bandit-memory");
18619
18619
  const hasAttachmentAction = !isPlaygroundMode3 && fileInputs.length < 3 && isDocumentUploadEnabled;
18620
- const hasMemoryAction = isMemoryEnabled;
18620
+ const hasMemoryAction = false;
18621
18621
  const hasFeedbackAction = isFeedbackEnabled && isMobile;
18622
18622
  const hasSttAction = isSTTAvailable && !isVoiceModeEnabled;
18623
18623
  const hasSecondaryActions = isMobile && (hasAttachmentAction || hasMemoryAction || hasFeedbackAction || hasSttAction);
@@ -30613,6 +30613,7 @@ __export(index_exports, {
30613
30613
  FeatureFlagService: () => FeatureFlagService,
30614
30614
  FeedbackButton: () => FeedbackButton,
30615
30615
  FeedbackModal: () => FeedbackModal,
30616
+ InterestsEditor: () => InterestsEditor_default,
30616
30617
  Management: () => management_default,
30617
30618
  NotificationProvider: () => NotificationProvider,
30618
30619
  NotificationService: () => NotificationService,
@@ -34646,7 +34647,7 @@ var PersonalitiesTab = ({
34646
34647
  import_material38.Card,
34647
34648
  {
34648
34649
  sx: {
34649
- mb: { xs: 2, md: 4 },
34650
+ mb: { xs: 2, md: 2.5 },
34650
34651
  background: "linear-gradient(135deg, #1976d2 0%, #42a5f5 100%)",
34651
34652
  border: "2px solid transparent",
34652
34653
  borderRadius: { xs: 2.25, sm: 3 },
@@ -34683,24 +34684,24 @@ var PersonalitiesTab = ({
34683
34684
  setPersonalityTabIndex(1);
34684
34685
  },
34685
34686
  children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_material38.CardContent, { sx: {
34686
- p: { xs: 1.75, sm: 4 },
34687
+ p: { xs: 1.75, sm: 2.5 },
34687
34688
  color: "white",
34688
- textAlign: { xs: "left", sm: "center" },
34689
+ textAlign: "left",
34689
34690
  position: "relative",
34690
34691
  zIndex: 1,
34691
34692
  display: "flex",
34692
- flexDirection: { xs: "row", sm: "column" },
34693
- alignItems: { xs: "center", sm: "center" },
34694
- gap: { xs: 1.25, sm: 0 }
34693
+ flexDirection: "row",
34694
+ alignItems: "center",
34695
+ gap: { xs: 1.25, sm: 2 }
34695
34696
  }, children: [
34696
34697
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material38.Box, { sx: {
34697
34698
  display: "flex",
34698
34699
  alignItems: "center",
34699
34700
  justifyContent: "center",
34700
34701
  fontSize: 0,
34701
- mb: { xs: 0, sm: 2 },
34702
+ mb: 0,
34702
34703
  flexShrink: 0
34703
- }, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(AutoAwesomeIcon, { sx: { fontSize: { xs: 28, sm: 44 }, color: "common.white", filter: "drop-shadow(0 4px 12px rgba(0,0,0,0.25))" } }) }),
34704
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(AutoAwesomeIcon, { sx: { fontSize: { xs: 28, sm: 34 }, color: "common.white", filter: "drop-shadow(0 4px 12px rgba(0,0,0,0.25))" } }) }),
34704
34705
  /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_material38.Box, { sx: { flex: 1, minWidth: 0 }, children: [
34705
34706
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
34706
34707
  import_material38.Typography,
@@ -34708,9 +34709,9 @@ var PersonalitiesTab = ({
34708
34709
  variant: "h5",
34709
34710
  sx: {
34710
34711
  fontWeight: 700,
34711
- mb: { xs: 0.25, sm: 1 },
34712
+ mb: 0.25,
34712
34713
  textShadow: "0 2px 4px rgba(0,0,0,0.2)",
34713
- fontSize: { xs: "1.1rem", sm: "1.75rem" }
34714
+ fontSize: { xs: "1.1rem", sm: "1.25rem" }
34714
34715
  },
34715
34716
  children: "Create from Scratch"
34716
34717
  }
@@ -35846,6 +35847,7 @@ var PersonalitiesTab_default = PersonalitiesTab;
35846
35847
 
35847
35848
  // src/management/components/PreferencesTab.tsx
35848
35849
  var import_react48 = require("react");
35850
+ init_memory_modal();
35849
35851
  var import_material39 = require("@mui/material");
35850
35852
  init_preferencesStore();
35851
35853
  init_getStableQuestionPrompt();
@@ -35942,6 +35944,7 @@ var PreferencesTab = ({
35942
35944
  const [syncToggleLoading, setSyncToggleLoading] = (0, import_react48.useState)(false);
35943
35945
  const [manualSyncLoading, setManualSyncLoading] = (0, import_react48.useState)(false);
35944
35946
  const [advancedVectorToggleLoading, setAdvancedVectorToggleLoading] = (0, import_react48.useState)(false);
35947
+ const [memoryModalOpen, setMemoryModalOpen] = (0, import_react48.useState)(false);
35945
35948
  const timeoutRef = (0, import_react48.useRef)(null);
35946
35949
  const fileInputRef = (0, import_react48.useRef)(null);
35947
35950
  const { exportPreferences, importPreferences, resetToDefaults } = usePreferencesStore();
@@ -36501,6 +36504,10 @@ var PreferencesTab = ({
36501
36504
  ] })
36502
36505
  }
36503
36506
  ),
36507
+ preferences.memoryEnabled && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_material39.Box, { sx: { pl: { xs: 0, sm: 6 }, mt: -0.5, mb: 0.5 }, children: [
36508
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_material39.Button, { size: "small", variant: "outlined", onClick: () => setMemoryModalOpen(true), children: "Manage memories" }),
36509
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(memory_modal_default, { open: memoryModalOpen, onClose: () => setMemoryModalOpen(false) })
36510
+ ] }),
36504
36511
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
36505
36512
  import_material39.FormControlLabel,
36506
36513
  {
@@ -44101,6 +44108,14 @@ var Management = () => {
44101
44108
  const currentTheme = (0, import_react60.useMemo)(() => {
44102
44109
  const baseTheme = predefinedThemes[theme] || banditDarkTheme;
44103
44110
  return (0, import_styles32.createTheme)(baseTheme, {
44111
+ // Management-scoped density: condenses every settings tab at once. This
44112
+ // theme only wraps the admin console, so the chat UI is unaffected.
44113
+ typography: {
44114
+ h3: { fontSize: "1.7rem" },
44115
+ h4: { fontSize: "1.35rem" },
44116
+ h5: { fontSize: "1.15rem" },
44117
+ h6: { fontSize: "1rem" }
44118
+ },
44104
44119
  components: {
44105
44120
  MuiInputBase: {
44106
44121
  styleOverrides: {
@@ -44121,6 +44136,19 @@ var Management = () => {
44121
44136
  }
44122
44137
  }
44123
44138
  }
44139
+ },
44140
+ MuiCardContent: {
44141
+ styleOverrides: {
44142
+ root: {
44143
+ padding: 16,
44144
+ "&:last-child": { paddingBottom: 16 }
44145
+ }
44146
+ }
44147
+ },
44148
+ MuiCard: {
44149
+ styleOverrides: {
44150
+ root: { borderRadius: 12 }
44151
+ }
44124
44152
  }
44125
44153
  }
44126
44154
  });
@@ -44570,7 +44598,7 @@ var Management = () => {
44570
44598
  {
44571
44599
  sx: {
44572
44600
  flex: 1,
44573
- p: { xs: 1, sm: 3, md: 4 },
44601
+ p: { xs: 1.5, sm: 2.5, md: 3 },
44574
44602
  overflowY: "auto",
44575
44603
  overflowX: "hidden",
44576
44604
  maxWidth: "100vw",
@@ -44696,8 +44724,53 @@ var Management = () => {
44696
44724
  };
44697
44725
  var management_default = Management;
44698
44726
 
44727
+ // src/management/components/InterestsEditor.tsx
44728
+ var import_react61 = require("react");
44729
+ var import_material51 = require("@mui/material");
44730
+ init_preferencesStore();
44731
+ init_getStableQuestionPrompt();
44732
+ var import_jsx_runtime51 = require("react/jsx-runtime");
44733
+ var InterestsEditor = ({
44734
+ title = "Your interests",
44735
+ description = "Pick the topics you care about \u2014 your home-screen conversation starters lean toward them."
44736
+ }) => {
44737
+ const preferences = usePreferencesStore((s) => s.preferences);
44738
+ const updatePreference = usePreferencesStore((s) => s.updatePreference);
44739
+ const loadPreferences = usePreferencesStore((s) => s.loadPreferences);
44740
+ const isLoaded = usePreferencesStore((s) => s.isLoaded);
44741
+ (0, import_react61.useEffect)(() => {
44742
+ if (!isLoaded) {
44743
+ void loadPreferences();
44744
+ }
44745
+ }, [isLoaded, loadPreferences]);
44746
+ const interests = preferences?.interests ?? [];
44747
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_material51.Box, { children: [
44748
+ title && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.Typography, { variant: "h6", sx: { fontWeight: 600, color: "text.primary" }, children: title }),
44749
+ description && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.Typography, { variant: "body2", color: "text.secondary", sx: { mb: 1.5 }, children: description }),
44750
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.Box, { sx: { display: "flex", flexWrap: "wrap", gap: 1 }, children: TOPICS.map((topic) => {
44751
+ const selected = interests.includes(topic);
44752
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
44753
+ import_material51.Chip,
44754
+ {
44755
+ label: topic,
44756
+ size: "small",
44757
+ color: selected ? "primary" : "default",
44758
+ variant: selected ? "filled" : "outlined",
44759
+ onClick: () => {
44760
+ const next = selected ? interests.filter((t) => t !== topic) : [...interests, topic];
44761
+ updatePreference("interests", next);
44762
+ },
44763
+ sx: { textTransform: "capitalize" }
44764
+ },
44765
+ topic
44766
+ );
44767
+ }) })
44768
+ ] });
44769
+ };
44770
+ var InterestsEditor_default = InterestsEditor;
44771
+
44699
44772
  // src/shared/custom-element.ts
44700
- var import_react61 = __toESM(require("react"));
44773
+ var import_react62 = __toESM(require("react"));
44701
44774
  var import_client = __toESM(require("react-dom/client"));
44702
44775
  function defineCustomElement(name, Component) {
44703
44776
  if (customElements.get(name)) return;
@@ -44725,7 +44798,7 @@ function defineCustomElement(name, Component) {
44725
44798
  if (!this.root) {
44726
44799
  this.root = import_client.default.createRoot(this.mountPoint);
44727
44800
  }
44728
- this.root.render(import_react61.default.createElement(Component, props));
44801
+ this.root.render(import_react62.default.createElement(Component, props));
44729
44802
  }
44730
44803
  }
44731
44804
  customElements.define(name, ReactElement);
@@ -44934,7 +45007,7 @@ var getFeatureMatrix = () => featureFlagService.generateFeatureMatrix();
44934
45007
  init_featureFlags();
44935
45008
 
44936
45009
  // src/hooks/useVoices.ts
44937
- var import_react62 = require("react");
45010
+ var import_react63 = require("react");
44938
45011
  init_voiceStore();
44939
45012
  init_packageSettingsStore();
44940
45013
  init_authenticationStore();
@@ -44954,7 +45027,7 @@ var useVoices = () => {
44954
45027
  } = useVoiceStore();
44955
45028
  const gatewayApiUrl = usePackageSettingsStore((state) => state.settings?.gatewayApiUrl);
44956
45029
  const { token } = useAuthenticationStore();
44957
- (0, import_react62.useEffect)(() => {
45030
+ (0, import_react63.useEffect)(() => {
44958
45031
  const isAuthenticated = authenticationService.isAuthenticated();
44959
45032
  if (gatewayApiUrl && token && isAuthenticated && !isServiceAvailable) {
44960
45033
  debugLogger.debug("Gateway API URL and JWT token available, loading voice models...");
@@ -44989,9 +45062,9 @@ init_useTTS();
44989
45062
  init_streaming_tts();
44990
45063
 
44991
45064
  // src/modals/SubscriptionExpiredModal.tsx
44992
- var import_material51 = require("@mui/material");
45065
+ var import_material52 = require("@mui/material");
44993
45066
  var import_lucide_react12 = require("lucide-react");
44994
- var import_jsx_runtime51 = require("react/jsx-runtime");
45067
+ var import_jsx_runtime52 = require("react/jsx-runtime");
44995
45068
  var SubscriptionExpiredModal = ({
44996
45069
  open,
44997
45070
  onNavigateHome,
@@ -45013,8 +45086,8 @@ var SubscriptionExpiredModal = ({
45013
45086
  window.location.href = "/manage-subscription";
45014
45087
  }
45015
45088
  };
45016
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
45017
- import_material51.Dialog,
45089
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
45090
+ import_material52.Dialog,
45018
45091
  {
45019
45092
  open,
45020
45093
  onClose,
@@ -45028,47 +45101,47 @@ var SubscriptionExpiredModal = ({
45028
45101
  }
45029
45102
  },
45030
45103
  children: [
45031
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.DialogTitle, { sx: { textAlign: "center", pb: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_material51.Box, { sx: { display: "flex", alignItems: "center", justifyContent: "center", gap: 1, mb: 1 }, children: [
45032
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react12.AlertTriangle, { size: 32, color: "warning" }),
45033
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.Typography, { variant: "h5", component: "span", fontWeight: "bold", children: "Subscription Expired" })
45104
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_material52.DialogTitle, { sx: { textAlign: "center", pb: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_material52.Box, { sx: { display: "flex", alignItems: "center", justifyContent: "center", gap: 1, mb: 1 }, children: [
45105
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react12.AlertTriangle, { size: 32, color: "warning" }),
45106
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_material52.Typography, { variant: "h5", component: "span", fontWeight: "bold", children: "Subscription Expired" })
45034
45107
  ] }) }),
45035
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.DialogContent, { sx: { pt: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_material51.Stack, { spacing: 2, children: [
45036
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.Alert, { severity: "warning", sx: { mb: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.Typography, { variant: "body2", children: "Your subscription has expired and access to features has been restricted." }) }),
45037
- userEmail && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_material51.Typography, { variant: "body2", color: "text.secondary", sx: { textAlign: "center" }, children: [
45108
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_material52.DialogContent, { sx: { pt: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_material52.Stack, { spacing: 2, children: [
45109
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_material52.Alert, { severity: "warning", sx: { mb: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_material52.Typography, { variant: "body2", children: "Your subscription has expired and access to features has been restricted." }) }),
45110
+ userEmail && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_material52.Typography, { variant: "body2", color: "text.secondary", sx: { textAlign: "center" }, children: [
45038
45111
  "Account: ",
45039
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("strong", { children: userEmail })
45112
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("strong", { children: userEmail })
45040
45113
  ] }),
45041
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.Typography, { variant: "body1", sx: { textAlign: "center", color: "text.secondary" }, children: "To continue using all features, please renew your subscription or return to the main application." }),
45042
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_material51.Box, { sx: {
45114
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_material52.Typography, { variant: "body1", sx: { textAlign: "center", color: "text.secondary" }, children: "To continue using all features, please renew your subscription or return to the main application." }),
45115
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_material52.Box, { sx: {
45043
45116
  bgcolor: "background.paper",
45044
45117
  border: 1,
45045
45118
  borderColor: "divider",
45046
45119
  borderRadius: 1,
45047
45120
  p: 2,
45048
45121
  mt: 2
45049
- }, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_material51.Typography, { variant: "caption", color: "text.secondary", sx: { fontStyle: "italic" }, children: [
45050
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("strong", { children: "What's affected:" }),
45122
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_material52.Typography, { variant: "caption", color: "text.secondary", sx: { fontStyle: "italic" }, children: [
45123
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("strong", { children: "What's affected:" }),
45051
45124
  " All premium features including document upload, voice controls, advanced search, and admin dashboard access have been disabled until your subscription is renewed."
45052
45125
  ] }) })
45053
45126
  ] }) }),
45054
- /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_material51.DialogActions, { sx: { px: 3, pb: 3, gap: 1, justifyContent: "center" }, children: [
45055
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
45056
- import_material51.Button,
45127
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_material52.DialogActions, { sx: { px: 3, pb: 3, gap: 1, justifyContent: "center" }, children: [
45128
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
45129
+ import_material52.Button,
45057
45130
  {
45058
45131
  onClick: handleNavigateHome,
45059
45132
  variant: "outlined",
45060
- startIcon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react12.Home, {}),
45133
+ startIcon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react12.Home, {}),
45061
45134
  size: "large",
45062
45135
  sx: { minWidth: 140 },
45063
45136
  children: "Go Home"
45064
45137
  }
45065
45138
  ),
45066
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
45067
- import_material51.Button,
45139
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
45140
+ import_material52.Button,
45068
45141
  {
45069
45142
  onClick: handleManageSubscription,
45070
45143
  variant: "contained",
45071
- startIcon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react12.CreditCard, {}),
45144
+ startIcon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react12.CreditCard, {}),
45072
45145
  size: "large",
45073
45146
  color: "primary",
45074
45147
  sx: { minWidth: 140 },
@@ -45082,9 +45155,9 @@ var SubscriptionExpiredModal = ({
45082
45155
  };
45083
45156
 
45084
45157
  // src/guards/SubscriptionExpiredGuard.tsx
45085
- var import_react63 = require("react");
45158
+ var import_react64 = require("react");
45086
45159
  init_useFeatures();
45087
- var import_jsx_runtime52 = require("react/jsx-runtime");
45160
+ var import_jsx_runtime53 = require("react/jsx-runtime");
45088
45161
  var SubscriptionExpiredGuard = ({
45089
45162
  children,
45090
45163
  onNavigateHome,
@@ -45093,9 +45166,9 @@ var SubscriptionExpiredGuard = ({
45093
45166
  allowContinue = false
45094
45167
  }) => {
45095
45168
  const { isExpiredTier, getFullEvaluation } = useFeatures();
45096
- const [showModal, setShowModal] = (0, import_react63.useState)(false);
45097
- const [userDismissed, setUserDismissed] = (0, import_react63.useState)(false);
45098
- (0, import_react63.useEffect)(() => {
45169
+ const [showModal, setShowModal] = (0, import_react64.useState)(false);
45170
+ const [userDismissed, setUserDismissed] = (0, import_react64.useState)(false);
45171
+ (0, import_react64.useEffect)(() => {
45099
45172
  if (isExpiredTier() && !userDismissed) {
45100
45173
  setShowModal(true);
45101
45174
  } else {
@@ -45121,9 +45194,9 @@ var SubscriptionExpiredGuard = ({
45121
45194
  }
45122
45195
  return void 0;
45123
45196
  })() : void 0;
45124
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
45197
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
45125
45198
  children,
45126
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
45199
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
45127
45200
  SubscriptionExpiredModal,
45128
45201
  {
45129
45202
  open: showModal,
@@ -45324,6 +45397,7 @@ init_useVectorStore();
45324
45397
  FeatureFlagService,
45325
45398
  FeedbackButton,
45326
45399
  FeedbackModal,
45400
+ InterestsEditor,
45327
45401
  Management,
45328
45402
  NotificationProvider,
45329
45403
  NotificationService,