@burtson-labs/bandit-engine 2.0.161 → 2.0.163

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 (213) hide show
  1. package/README.md +7 -22
  2. package/dist/aiProviderStore-PEGSX4PK.mjs +9 -0
  3. package/dist/chat-MRDQ2WRJ.mjs +16 -0
  4. package/dist/chat-provider.js +86 -31
  5. package/dist/chat-provider.js.map +1 -1
  6. package/dist/chat-provider.mjs +7 -7
  7. package/dist/{chunk-QXITTH2X.mjs → chunk-5KBTOCQZ.mjs} +4 -4
  8. package/dist/chunk-5KBTOCQZ.mjs.map +1 -0
  9. package/dist/{chunk-B3HAQC6F.mjs → chunk-CQJGUYRW.mjs} +69 -26
  10. package/dist/chunk-CQJGUYRW.mjs.map +1 -0
  11. package/dist/{chunk-TTAORNWI.mjs → chunk-F32P7Q5O.mjs} +122 -232
  12. package/dist/chunk-F32P7Q5O.mjs.map +1 -0
  13. package/dist/{chunk-XC7HDKFW.mjs → chunk-HSGQXL4N.mjs} +11 -11
  14. package/dist/chunk-HSGQXL4N.mjs.map +1 -0
  15. package/dist/{chunk-QPXG4A5C.mjs → chunk-IZX2J65Q.mjs} +2 -2
  16. package/dist/chunk-IZX2J65Q.mjs.map +1 -0
  17. package/dist/{chunk-MIDYEQOS.mjs → chunk-J6SWNO7Z.mjs} +20 -35
  18. package/dist/chunk-J6SWNO7Z.mjs.map +1 -0
  19. package/dist/{chunk-PFKKGJAQ.mjs → chunk-O6P37PFR.mjs} +4 -4
  20. package/dist/chunk-O6P37PFR.mjs.map +1 -0
  21. package/dist/{chunk-KCI46M23.mjs → chunk-OCVZVBQQ.mjs} +1 -1
  22. package/dist/chunk-OCVZVBQQ.mjs.map +1 -0
  23. package/dist/{chunk-IXIM7BNO.mjs → chunk-P4C5IRM5.mjs} +1 -1
  24. package/dist/chunk-P4C5IRM5.mjs.map +1 -0
  25. package/dist/{chunk-WQEBTH2R.mjs → chunk-TY5VL3SG.mjs} +3 -3
  26. package/dist/chunk-TY5VL3SG.mjs.map +1 -0
  27. package/dist/{chunk-X65A3NED.mjs → chunk-URZSIL7X.mjs} +7 -7
  28. package/dist/chunk-URZSIL7X.mjs.map +1 -0
  29. package/dist/{chunk-FSRMNQRN.mjs → chunk-VBHI4TJC.mjs} +6 -6
  30. package/dist/chunk-VBHI4TJC.mjs.map +1 -0
  31. package/dist/{chunk-EOMOOMUC.mjs → chunk-WLNZL6SP.mjs} +5 -16
  32. package/dist/chunk-WLNZL6SP.mjs.map +1 -0
  33. package/dist/index.d.mts +6 -0
  34. package/dist/index.d.ts +6 -0
  35. package/dist/index.js +660 -759
  36. package/dist/index.js.map +1 -1
  37. package/dist/index.mjs +15 -31
  38. package/dist/index.mjs.map +1 -1
  39. package/dist/management/management.js +300 -383
  40. package/dist/management/management.js.map +1 -1
  41. package/dist/management/management.mjs +10 -10
  42. package/dist/{memoryUtils-33TZKHSQ.mjs → memoryUtils-2FVXDSS6.mjs} +1 -1
  43. package/dist/memoryUtils-2FVXDSS6.mjs.map +1 -0
  44. package/dist/modals/chat-modal/chat-modal.js +86 -31
  45. package/dist/modals/chat-modal/chat-modal.js.map +1 -1
  46. package/dist/modals/chat-modal/chat-modal.mjs +6 -6
  47. package/dist/modelStore-7XYYDCNC.mjs +9 -0
  48. package/dist/shared/custom-element.js.map +1 -1
  49. package/dist/shared/custom-element.mjs +1 -1
  50. package/docs/05_contributing.md +1 -1
  51. package/docs/api_reference/assets/navigation.js +1 -1
  52. package/docs/api_reference/assets/search.js +1 -1
  53. package/docs/api_reference/classes/DebugLogger.html +11 -11
  54. package/docs/api_reference/classes/FeatureFlagService.html +13 -13
  55. package/docs/api_reference/classes/NotificationService.html +10 -10
  56. package/docs/api_reference/classes/StreamingTTSClient.html +9 -9
  57. package/docs/api_reference/classes/VectorDatabaseService.html +24 -24
  58. package/docs/api_reference/classes/VectorMigrationService.html +8 -8
  59. package/docs/api_reference/classes/VoiceService.html +2 -2
  60. package/docs/api_reference/enums/TTSState.html +2 -2
  61. package/docs/api_reference/functions/Chat.html +1 -1
  62. package/docs/api_reference/functions/ChatModal.html +1 -1
  63. package/docs/api_reference/functions/ChatProvider.html +1 -1
  64. package/docs/api_reference/functions/FeatureFlagProvider.html +1 -1
  65. package/docs/api_reference/functions/FeedbackButton.html +1 -1
  66. package/docs/api_reference/functions/FeedbackModal.html +1 -1
  67. package/docs/api_reference/functions/InterestsEditor.html +5 -0
  68. package/docs/api_reference/functions/Management.html +1 -1
  69. package/docs/api_reference/functions/NotificationProvider.html +1 -1
  70. package/docs/api_reference/functions/SubscriptionExpiredGuard.html +1 -1
  71. package/docs/api_reference/functions/SubscriptionExpiredModal.html +1 -1
  72. package/docs/api_reference/functions/defineCustomElement.html +1 -1
  73. package/docs/api_reference/functions/getCriticalConfig.html +2 -1
  74. package/docs/api_reference/functions/getFeatureMatrix.html +1 -1
  75. package/docs/api_reference/functions/getStreamingTTSClient.html +1 -1
  76. package/docs/api_reference/functions/getSystemConstants.html +2 -1
  77. package/docs/api_reference/functions/getTTSState.html +1 -1
  78. package/docs/api_reference/functions/handleHttpError.html +1 -1
  79. package/docs/api_reference/functions/handleSubscriptionUpgrade.html +1 -1
  80. package/docs/api_reference/functions/handleValidationError.html +1 -1
  81. package/docs/api_reference/functions/initializeCoreSystem.html +2 -1
  82. package/docs/api_reference/functions/isWorkspaceAdminRole.html +6 -0
  83. package/docs/api_reference/functions/pauseTTS.html +1 -1
  84. package/docs/api_reference/functions/previewTierUpgrade.html +1 -1
  85. package/docs/api_reference/functions/resolveManagementSections.html +2 -0
  86. package/docs/api_reference/functions/resumeTTS.html +1 -1
  87. package/docs/api_reference/functions/showInfoNotification.html +1 -1
  88. package/docs/api_reference/functions/showSuccessNotification.html +1 -1
  89. package/docs/api_reference/functions/speakWithStreaming.html +1 -1
  90. package/docs/api_reference/functions/stopTTS.html +1 -1
  91. package/docs/api_reference/functions/syncSubscriptionWithAPI.html +1 -1
  92. package/docs/api_reference/functions/updateSubscriptionTier.html +1 -1
  93. package/docs/api_reference/functions/useFeatureFlag.html +1 -1
  94. package/docs/api_reference/functions/useFeatureVisibility.html +1 -1
  95. package/docs/api_reference/functions/useFeatures.html +1 -1
  96. package/docs/api_reference/functions/useGatewayHealth.html +1 -1
  97. package/docs/api_reference/functions/useGatewayMemory.html +1 -1
  98. package/docs/api_reference/functions/useGatewayModels.html +1 -1
  99. package/docs/api_reference/functions/useGlobalTTS.html +1 -1
  100. package/docs/api_reference/functions/useManagementAccess.html +2 -0
  101. package/docs/api_reference/functions/useNotification.html +1 -1
  102. package/docs/api_reference/functions/useNotificationService.html +1 -1
  103. package/docs/api_reference/functions/useTTS.html +1 -1
  104. package/docs/api_reference/functions/useVectorStore.html +1 -1
  105. package/docs/api_reference/functions/useVoiceStore.html +2 -2
  106. package/docs/api_reference/functions/useVoices.html +1 -1
  107. package/docs/api_reference/functions/validateEnvironment.html +2 -1
  108. package/docs/api_reference/functions/validateSystemIntegrity.html +2 -1
  109. package/docs/api_reference/index.html +219 -155
  110. package/docs/api_reference/interfaces/AIChatRequest.html +2 -2
  111. package/docs/api_reference/interfaces/AIChatResponse.html +2 -2
  112. package/docs/api_reference/interfaces/AIGenerateRequest.html +2 -2
  113. package/docs/api_reference/interfaces/AIGenerateResponse.html +2 -2
  114. package/docs/api_reference/interfaces/AIMessage.html +2 -2
  115. package/docs/api_reference/interfaces/AIModel.html +2 -2
  116. package/docs/api_reference/interfaces/AIProviderConfig.html +5 -2
  117. package/docs/api_reference/interfaces/ChatConfig.html +3 -3
  118. package/docs/api_reference/interfaces/ChatModalProps.html +3 -3
  119. package/docs/api_reference/interfaces/CreateMemoryOptions.html +2 -2
  120. package/docs/api_reference/interfaces/FeatureEvaluation.html +7 -7
  121. package/docs/api_reference/interfaces/FeatureFlagConfig.html +9 -9
  122. package/docs/api_reference/interfaces/FeatureFlagContextValue.html +8 -8
  123. package/docs/api_reference/interfaces/FeatureFlagProviderProps.html +2 -2
  124. package/docs/api_reference/interfaces/FeedbackButtonProps.html +10 -10
  125. package/docs/api_reference/interfaces/FeedbackCategories.html +2 -2
  126. package/docs/api_reference/interfaces/FeedbackModalProps.html +2 -2
  127. package/docs/api_reference/interfaces/FeedbackPriorities.html +2 -2
  128. package/docs/api_reference/interfaces/FeedbackRequest.html +2 -2
  129. package/docs/api_reference/interfaces/FeedbackResponse.html +2 -2
  130. package/docs/api_reference/interfaces/FileUploadResult.html +2 -2
  131. package/docs/api_reference/interfaces/GatewayChatRequest.html +3 -2
  132. package/docs/api_reference/interfaces/GatewayChatResponse.html +2 -2
  133. package/docs/api_reference/interfaces/GatewayContract.html +2 -2
  134. package/docs/api_reference/interfaces/GatewayGenerateRequest.html +2 -2
  135. package/docs/api_reference/interfaces/GatewayGenerateResponse.html +2 -2
  136. package/docs/api_reference/interfaces/GatewayHealthResponse.html +2 -2
  137. package/docs/api_reference/interfaces/GatewayMemoryRecord.html +2 -2
  138. package/docs/api_reference/interfaces/GatewayMemoryResponse.html +2 -2
  139. package/docs/api_reference/interfaces/GatewayMessage.html +2 -2
  140. package/docs/api_reference/interfaces/GatewayMessageContent.html +2 -2
  141. package/docs/api_reference/interfaces/GatewayModel.html +2 -2
  142. package/docs/api_reference/interfaces/GatewayModelsResponse.html +2 -2
  143. package/docs/api_reference/interfaces/ManagementAccess.html +5 -0
  144. package/docs/api_reference/interfaces/ManagementAccessInput.html +5 -0
  145. package/docs/api_reference/interfaces/ManagementLink.html +7 -0
  146. package/docs/api_reference/interfaces/ManagementProps.html +22 -0
  147. package/docs/api_reference/interfaces/ManagementSectionDef.html +10 -0
  148. package/docs/api_reference/interfaces/MemorySearchFilters.html +2 -2
  149. package/docs/api_reference/interfaces/MigrationProgress.html +2 -2
  150. package/docs/api_reference/interfaces/MigrationStatus.html +2 -2
  151. package/docs/api_reference/interfaces/NotificationConfig.html +2 -2
  152. package/docs/api_reference/interfaces/NotificationContextType.html +2 -2
  153. package/docs/api_reference/interfaces/NotificationProviderProps.html +2 -2
  154. package/docs/api_reference/interfaces/PackageSettings.html +11 -2
  155. package/docs/api_reference/interfaces/SearchOptions.html +2 -2
  156. package/docs/api_reference/interfaces/SearchResult.html +2 -2
  157. package/docs/api_reference/interfaces/SubscriptionExpiredGuardProps.html +2 -2
  158. package/docs/api_reference/interfaces/SubscriptionExpiredModalProps.html +2 -2
  159. package/docs/api_reference/interfaces/TTSOptions.html +2 -2
  160. package/docs/api_reference/interfaces/TTSProgress.html +2 -2
  161. package/docs/api_reference/interfaces/TrialUsage.html +2 -2
  162. package/docs/api_reference/interfaces/UploadRequest.html +3 -3
  163. package/docs/api_reference/interfaces/UseTTSReturn.html +2 -2
  164. package/docs/api_reference/interfaces/VectorDocument.html +2 -2
  165. package/docs/api_reference/interfaces/VectorMemory.html +2 -2
  166. package/docs/api_reference/interfaces/VectorMemoryMetadata.html +2 -2
  167. package/docs/api_reference/interfaces/VectorStoreStatus.html +2 -2
  168. package/docs/api_reference/interfaces/VoiceModelsResponse.html +2 -2
  169. package/docs/api_reference/interfaces/VoiceState.html +2 -2
  170. package/docs/api_reference/media/PROTECTION-NOTICE.md +6 -55
  171. package/docs/api_reference/media/README.md +20 -1
  172. package/docs/api_reference/modules.html +18 -6
  173. package/docs/api_reference/types/FeatureKey.html +1 -1
  174. package/docs/api_reference/types/FeatureMatrix.html +1 -1
  175. package/docs/api_reference/types/GatewayQueryOptions.html +1 -1
  176. package/docs/api_reference/types/LogContext.html +1 -1
  177. package/docs/api_reference/types/ManagementRequest.html +1 -0
  178. package/docs/api_reference/types/ManagementSectionId.html +2 -0
  179. package/docs/api_reference/types/SubscriptionTier.html +1 -1
  180. package/docs/api_reference/variables/DEFAULT_TIER_FEATURES.html +1 -1
  181. package/docs/api_reference/variables/FeatureFlagContext.html +1 -1
  182. package/docs/api_reference/variables/MANAGEMENT_SECTIONS.html +1 -0
  183. package/docs/api_reference/variables/OSS_DEFAULT_FEATURES.html +1 -1
  184. package/docs/api_reference/variables/SYSTEM_FLAGS.html +2 -1
  185. package/docs/api_reference/variables/authenticationService.html +1 -1
  186. package/docs/api_reference/variables/debugLogger-1.html +1 -1
  187. package/docs/api_reference/variables/featureFlagService-1.html +1 -1
  188. package/docs/api_reference/variables/notificationService-1.html +1 -1
  189. package/docs/api_reference/variables/vectorDatabaseService-1.html +1 -1
  190. package/docs/api_reference/variables/vectorMigrationService-1.html +1 -1
  191. package/docs/api_reference/variables/voiceService-1.html +1 -1
  192. package/package.json +1 -1
  193. package/dist/aiProviderStore-BNZGM6QU.mjs +0 -9
  194. package/dist/chat-3JAV77HO.mjs +0 -16
  195. package/dist/chunk-B3HAQC6F.mjs.map +0 -1
  196. package/dist/chunk-EOMOOMUC.mjs.map +0 -1
  197. package/dist/chunk-FSRMNQRN.mjs.map +0 -1
  198. package/dist/chunk-IXIM7BNO.mjs.map +0 -1
  199. package/dist/chunk-KCI46M23.mjs.map +0 -1
  200. package/dist/chunk-MIDYEQOS.mjs.map +0 -1
  201. package/dist/chunk-PFKKGJAQ.mjs.map +0 -1
  202. package/dist/chunk-QPXG4A5C.mjs.map +0 -1
  203. package/dist/chunk-QXITTH2X.mjs.map +0 -1
  204. package/dist/chunk-TTAORNWI.mjs.map +0 -1
  205. package/dist/chunk-WQEBTH2R.mjs.map +0 -1
  206. package/dist/chunk-X65A3NED.mjs.map +0 -1
  207. package/dist/chunk-XC7HDKFW.mjs.map +0 -1
  208. package/dist/memoryUtils-33TZKHSQ.mjs.map +0 -1
  209. package/dist/modelStore-FGUGOWTL.mjs +0 -9
  210. package/docs/api_reference/media/PROTECTION-README.md +0 -39
  211. /package/dist/{aiProviderStore-BNZGM6QU.mjs.map → aiProviderStore-PEGSX4PK.mjs.map} +0 -0
  212. /package/dist/{chat-3JAV77HO.mjs.map → chat-MRDQ2WRJ.mjs.map} +0 -0
  213. /package/dist/{modelStore-FGUGOWTL.mjs.map → modelStore-7XYYDCNC.mjs.map} +0 -0
@@ -5,10 +5,10 @@ import {
5
5
  StreamingMarkdown_default,
6
6
  isNativeShell,
7
7
  isStandalonePwa
8
- } from "./chunk-QPXG4A5C.mjs";
8
+ } from "./chunk-IZX2J65Q.mjs";
9
9
  import {
10
10
  useMCPToolsStore
11
- } from "./chunk-PFKKGJAQ.mjs";
11
+ } from "./chunk-O6P37PFR.mjs";
12
12
  import {
13
13
  ArrowDown,
14
14
  ArrowUp,
@@ -43,12 +43,11 @@ import {
43
43
  registry_default,
44
44
  sanitizeForTTS,
45
45
  stopTTS,
46
- suggestionTokens,
47
46
  useCanvasStore,
48
47
  useNotificationService,
49
48
  useTTS,
50
49
  useVoiceStore
51
- } from "./chunk-EOMOOMUC.mjs";
50
+ } from "./chunk-WLNZL6SP.mjs";
52
51
  import {
53
52
  brandingService_default,
54
53
  detectMessageMood,
@@ -58,8 +57,6 @@ import {
58
57
  embeddingService,
59
58
  generateConversationStarters,
60
59
  getCurrentDateTimeContext,
61
- getRandomTopicOfInterest,
62
- pickDistinctRandomTopics,
63
60
  sanitizeConversationName,
64
61
  useAIQueryStore,
65
62
  useConversationStore,
@@ -71,22 +68,22 @@ import {
71
68
  useMemoryStore,
72
69
  useProjectStore,
73
70
  useVectorStore
74
- } from "./chunk-MIDYEQOS.mjs";
71
+ } from "./chunk-J6SWNO7Z.mjs";
75
72
  import {
76
73
  indexedDBService_default,
77
74
  useModelStore,
78
75
  usePackageSettingsStore,
79
76
  usePreferencesStore
80
- } from "./chunk-WQEBTH2R.mjs";
77
+ } from "./chunk-TY5VL3SG.mjs";
81
78
  import {
82
79
  authenticationService,
83
80
  readPersistedToken,
84
81
  useAIProviderStore,
85
82
  useAuthenticationStore
86
- } from "./chunk-B3HAQC6F.mjs";
83
+ } from "./chunk-CQJGUYRW.mjs";
87
84
  import {
88
85
  debugLogger
89
- } from "./chunk-KCI46M23.mjs";
86
+ } from "./chunk-OCVZVBQQ.mjs";
90
87
 
91
88
  // src/chat/chat.tsx
92
89
  import { useCallback as useCallback6, useEffect as useEffect17, useLayoutEffect, useRef as useRef16, useState as useState19 } from "react";
@@ -176,8 +173,8 @@ var Logo = ({ visible, atTop = false }) => {
176
173
  var custom_logo_default = Logo;
177
174
 
178
175
  // src/chat/chat.tsx
179
- import { Box as Box22, ThemeProvider, CssBaseline, Typography as Typography16, Button as Button11, IconButton as IconButton13 } from "@mui/material";
180
- import { alpha as alpha14 } from "@mui/material/styles";
176
+ import { Box as Box22, ThemeProvider, CssBaseline, Typography as Typography17, Button as Button12, IconButton as IconButton13 } from "@mui/material";
177
+ import { alpha as alpha13 } from "@mui/material/styles";
181
178
 
182
179
  // src/chat/chat-skeleton.tsx
183
180
  import { Box as Box2, Skeleton, Typography } from "@mui/material";
@@ -9769,204 +9766,87 @@ Respond with just the title and nothing else.
9769
9766
 
9770
9767
  // src/chat/query-suggestion-picker.tsx
9771
9768
  import { useEffect as useEffect14, useRef as useRef13, useState as useState17 } from "react";
9772
- import { Box as Box18, useMediaQuery as useMediaQuery7 } from "@mui/material";
9773
- import { useTheme as useTheme16, alpha as alpha12 } from "@mui/material/styles";
9774
- import ReactMarkdown from "react-markdown";
9775
- import remarkGfm from "remark-gfm";
9776
- import rehypeRaw from "rehype-raw";
9777
- import { Fragment as Fragment11, jsx as jsx20 } from "react/jsx-runtime";
9778
- var markdownComponents = {
9779
- p: ({ node, ...props }) => /* @__PURE__ */ jsx20("span", { ...props }),
9780
- mark: ({ node, children, ...props }) => /* @__PURE__ */ jsx20("mark", { ...props, children }),
9781
- code: ({ node, children, ...props }) => {
9782
- const { inline, ...rest } = props;
9783
- return inline ? /* @__PURE__ */ jsx20("code", { ...rest, children }) : /* @__PURE__ */ jsx20("code", { ...rest, children });
9784
- }
9785
- };
9786
- var QuerySuggestionPicker = ({
9787
- onSend,
9788
- inputHeight
9789
- }) => {
9790
- const hasGenerated = useRef13(false);
9791
- const [hasSentPrompt, setHasSentPrompt] = useState17(false);
9792
- const [examplePrompts, setExamplePrompts] = useState17([]);
9793
- const [visiblePrompts, setVisiblePrompts] = useState17([]);
9794
- const scrollRef = useRef13(null);
9795
- const theme = useTheme16();
9796
- const isMobile = useMediaQuery7((theme2) => theme2.breakpoints.down("sm"));
9797
- const { background, text, border, hoverBackground, hoverBorder } = suggestionTokens(theme);
9798
- const { getCurrentModel, isLoading } = useModelStore();
9769
+ import { Box as Box18, Button as Button11, Typography as Typography14 } from "@mui/material";
9770
+ import { ArrowRight, FileText, Refresh, ListChecks, PenLine } from "@burtson-labs/icons/react";
9771
+ import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
9772
+ var STARTERS = [
9773
+ { title: "Make sense of something", detail: "Find the important parts and the open questions.", icon: FileText, prompt: "Help me understand the material I share next. Summarize the key points, distinguish facts from assumptions, and call out what is missing." },
9774
+ { title: "Think through a decision", detail: "Compare options against what matters to you.", icon: ListChecks, prompt: "Help me work through a decision. Ask me for the options, constraints, and what matters most, then compare the tradeoffs." },
9775
+ { title: "Create a useful first draft", detail: "Turn a rough idea into something you can use.", icon: PenLine, prompt: "Help me turn an idea into a useful first draft. Ask me what I am making, who it is for, and what a good result looks like." }
9776
+ ];
9777
+ function QuerySuggestionPicker({ onSend, onSelect }) {
9778
+ const [ideas, setIdeas] = useState17([]);
9779
+ const [generating, setGenerating] = useState17(false);
9780
+ const [message, setMessage] = useState17("");
9781
+ const mounted = useRef13(false);
9782
+ const generatingRef = useRef13(false);
9799
9783
  useEffect14(() => {
9800
- if (hasGenerated.current || isLoading) return;
9801
- hasGenerated.current = true;
9802
- const currentModel = getCurrentModel();
9803
- const prefs = usePreferencesStore.getState().preferences;
9804
- const interests = (prefs.interests ?? []).filter((i) => i && i.trim());
9805
- const randomTopics = pickDistinctRandomTopics(interests.length ? 3 : 5);
9806
- const topicOfInterest = Array.from(/* @__PURE__ */ new Set([...interests, ...randomTopics])).join(", ") || getRandomTopicOfInterest();
9807
- const webSearchAvailable = useMCPToolsStore.getState().getEnabledTools().some((t) => t.name === "web_search");
9808
- const knowledgeTopics = prefs.useKnowledgeForStarters ? useKnowledgeStore.getState().docs.map((d) => d.name).filter((n) => n && n.trim()).slice(0, 12) : void 0;
9809
- const args = {
9810
- limit: 9,
9811
- topicOfInterest,
9812
- modelSystemPrompt: currentModel?.systemPrompt,
9813
- interests,
9814
- knowledgeTopics,
9815
- webSearchAvailable
9784
+ mounted.current = true;
9785
+ return () => {
9786
+ mounted.current = false;
9816
9787
  };
9817
- generateConversationStarters(args).then((prompts) => {
9818
- if (prompts.length > 0) {
9819
- setExamplePrompts(prompts);
9820
- setVisiblePrompts(prompts.slice(0, 3));
9821
- } else {
9822
- setExamplePrompts([]);
9823
- setVisiblePrompts([]);
9824
- hasGenerated.current = false;
9825
- }
9826
- }).catch((error) => {
9827
- setExamplePrompts([]);
9828
- setVisiblePrompts([]);
9829
- hasGenerated.current = false;
9788
+ }, []);
9789
+ const select = (prompt) => {
9790
+ if (onSelect) onSelect(prompt);
9791
+ else void Promise.resolve(onSend(prompt, [])).catch(() => {
9830
9792
  });
9831
- }, [getCurrentModel, isLoading]);
9832
- useEffect14(() => {
9833
- if (!isLoading) {
9834
- hasGenerated.current = false;
9835
- }
9836
- }, [isLoading]);
9837
- useEffect14(() => {
9838
- if (hasSentPrompt || examplePrompts.length === 0) return;
9839
- const interval = setInterval(() => {
9840
- setExamplePrompts((prev) => {
9841
- if (prev.length < 3) return prev;
9842
- const shuffled = [...prev].sort(() => 0.5 - Math.random());
9843
- setVisiblePrompts((current) => [shuffled[0], current[1], current[2]]);
9844
- setTimeout(() => {
9845
- setVisiblePrompts((current) => [shuffled[0], shuffled[1], current[2]]);
9846
- }, 400);
9847
- setTimeout(() => {
9848
- setVisiblePrompts(shuffled.slice(0, 3));
9849
- }, 800);
9850
- return shuffled;
9793
+ };
9794
+ const generateIdeas = async () => {
9795
+ if (generatingRef.current) return;
9796
+ generatingRef.current = true;
9797
+ setGenerating(true);
9798
+ setMessage("");
9799
+ try {
9800
+ const prefs = usePreferencesStore.getState().preferences;
9801
+ const interests = (prefs.interests ?? []).filter((value) => value?.trim());
9802
+ const prompts = await generateConversationStarters({
9803
+ limit: 3,
9804
+ topicOfInterest: interests.join(", ") || "practical writing, learning, and decisions",
9805
+ interests,
9806
+ modelSystemPrompt: useModelStore.getState().getCurrentModel()?.systemPrompt,
9807
+ knowledgeTopics: prefs.useKnowledgeForStarters ? useKnowledgeStore.getState().docs.map((doc) => doc.name).filter(Boolean).slice(0, 12) : void 0,
9808
+ webSearchAvailable: useMCPToolsStore.getState().getEnabledTools().some((tool) => tool.name === "web_search")
9851
9809
  });
9852
- }, 12e3);
9853
- return () => clearInterval(interval);
9854
- }, [hasSentPrompt, examplePrompts.length]);
9855
- const displayPrompts = isMobile ? visiblePrompts.slice(0, Math.min(visiblePrompts.length, 6)) : visiblePrompts;
9856
- return displayPrompts.length > 0 && /* @__PURE__ */ jsx20(Fragment11, { children: /* @__PURE__ */ jsx20(
9857
- Box18,
9858
- {
9859
- ref: scrollRef,
9860
- sx: {
9861
- zIndex: 1200,
9862
- width: "100%",
9863
- display: "flex",
9864
- flexDirection: "row",
9865
- gap: isMobile ? 0.8 : 1,
9866
- px: isMobile ? 1.5 : 2,
9867
- overflowX: isMobile ? "auto" : "visible",
9868
- scrollSnapType: isMobile ? "x mandatory" : "none",
9869
- WebkitOverflowScrolling: "touch",
9870
- pb: isMobile ? 0.4 : 0,
9871
- "&::-webkit-scrollbar": { display: "none" }
9872
- },
9873
- children: displayPrompts.map((prompt, i) => /* @__PURE__ */ jsx20(
9874
- Box18,
9875
- {
9876
- component: "button",
9877
- type: "button",
9878
- sx: {
9879
- appearance: "none",
9880
- font: "inherit",
9881
- textAlign: "inherit",
9882
- "&:focus-visible": { outline: `2px solid ${theme.palette.primary.main}`, outlineOffset: 2 },
9883
- px: isMobile ? 1.4 : 2,
9884
- py: isMobile ? 1.2 : 2,
9885
- flex: isMobile ? "0 0 85%" : 1,
9886
- minWidth: isMobile ? "85%" : "auto",
9887
- display: "flex",
9888
- alignItems: "flex-start",
9889
- gap: isMobile ? 0.9 : 1,
9890
- backgroundColor: background,
9891
- borderRadius: 2,
9892
- fontSize: isMobile ? "0.875rem" : "0.9rem",
9893
- color: text,
9894
- userSelect: "none",
9895
- cursor: "pointer",
9896
- border: `1px solid ${border || alpha12(text, 0.12)}`,
9897
- boxShadow: theme.palette.mode === "dark" ? "0 4px 18px rgba(0,0,0,0.25)" : "0 6px 20px rgba(15,23,42,0.12)",
9898
- scrollSnapAlign: isMobile ? "start" : "none",
9899
- transition: "transform 0.25s ease, box-shadow 0.25s ease, background-color 0.25s ease",
9900
- "&:hover": {
9901
- backgroundColor: hoverBackground,
9902
- borderColor: hoverBorder,
9903
- transform: "translateY(-2px)",
9904
- boxShadow: theme.palette.mode === "dark" ? "0 6px 22px rgba(0,0,0,0.28)" : "0 8px 24px rgba(15,23,42,0.14)"
9905
- },
9906
- "&:active": {
9907
- transform: "translateY(0) scale(0.98)"
9908
- }
9909
- },
9910
- onClick: () => {
9911
- void Promise.resolve(onSend(prompt, [])).catch(() => {
9912
- });
9913
- setHasSentPrompt(true);
9914
- },
9915
- children: /* @__PURE__ */ jsx20(
9916
- Box18,
9917
- {
9918
- sx: {
9919
- flex: 1,
9920
- lineHeight: 1.4,
9921
- fontWeight: isMobile ? 500 : 400,
9922
- textAlign: isMobile ? "left" : "center",
9923
- ...isMobile && { hyphens: "auto", wordBreak: "break-word" },
9924
- "& code": {
9925
- borderRadius: 4,
9926
- fontSize: "0.92em",
9927
- fontFamily: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
9928
- backgroundColor: theme.palette.mode === "dark" ? alpha12(theme.palette.common.white, 0.06) : alpha12(theme.palette.text.primary, 0.06),
9929
- border: `1px solid ${alpha12(theme.palette.text.primary, 0.15)}`,
9930
- padding: "0.15em 0.35em"
9931
- },
9932
- "& mark": {
9933
- display: "inline-block",
9934
- backgroundColor: theme.palette.mode === "dark" ? alpha12(theme.palette.common.white, 0.06) : alpha12(theme.palette.text.primary, 0.12),
9935
- color: theme.palette.mode === "dark" ? theme.palette.common.white : theme.palette.text.primary,
9936
- borderRadius: 4,
9937
- padding: "0.1em 0.25em"
9938
- }
9939
- },
9940
- children: /* @__PURE__ */ jsx20(
9941
- ReactMarkdown,
9942
- {
9943
- remarkPlugins: [remarkGfm],
9944
- rehypePlugins: [rehypeRaw],
9945
- components: markdownComponents,
9946
- children: prompt
9947
- }
9948
- )
9949
- }
9950
- )
9951
- },
9952
- `${i}-${prompt}`
9953
- ))
9810
+ if (!mounted.current) return;
9811
+ const next = prompts.filter((prompt) => typeof prompt === "string" && prompt.trim()).slice(0, 3);
9812
+ setIdeas(next);
9813
+ setMessage(next.length ? "New ideas are ready. Choose one to get started." : "Ideas are unavailable right now. You can still use a starter or write your own.");
9814
+ } catch {
9815
+ if (mounted.current) setMessage("Ideas are unavailable right now. You can still use a starter or write your own.");
9816
+ } finally {
9817
+ generatingRef.current = false;
9818
+ if (mounted.current) setGenerating(false);
9954
9819
  }
9955
- ) });
9956
- };
9820
+ };
9821
+ return /* @__PURE__ */ jsxs17(Box18, { component: "section", "aria-label": "Start with a task", sx: { width: "100%", px: { xs: 2, sm: 3 } }, children: [
9822
+ /* @__PURE__ */ jsxs17(Box18, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 1, mb: 1.5 }, children: [
9823
+ /* @__PURE__ */ jsx20(Typography14, { variant: "body2", sx: { fontWeight: 600 }, children: "What would move your work forward?" }),
9824
+ /* @__PURE__ */ jsx20(Button11, { size: "small", startIcon: /* @__PURE__ */ jsx20(Refresh, { size: 14 }), disabled: generating, onClick: () => void generateIdeas(), sx: { flexShrink: 0 }, children: generating ? "Finding ideas\u2026" : "Suggest ideas" })
9825
+ ] }),
9826
+ /* @__PURE__ */ jsx20(Box18, { sx: { display: "grid", gridTemplateColumns: { xs: "1fr", sm: "repeat(3, minmax(0, 1fr))" }, gap: 1 }, children: (ideas.length ? ideas.map((prompt) => ({ title: prompt, detail: "", icon: ArrowRight, prompt })) : STARTERS).map(({ title, detail, icon: Icon, prompt }) => /* @__PURE__ */ jsxs17(Button11, { variant: "outlined", onClick: () => select(prompt), sx: { display: "flex", alignItems: "flex-start", justifyContent: "flex-start", gap: 1.2, textAlign: "left", textTransform: "none", p: { xs: 1.5, sm: 2 }, height: "100%", color: "text.primary", borderColor: "divider" }, children: [
9827
+ /* @__PURE__ */ jsx20(Box18, { component: "span", sx: { display: "flex", color: "primary.main", mt: 0.25 }, children: /* @__PURE__ */ jsx20(Icon, { size: 18 }) }),
9828
+ /* @__PURE__ */ jsxs17(Box18, { component: "span", children: [
9829
+ /* @__PURE__ */ jsx20(Typography14, { component: "span", variant: "body2", sx: { display: "block", fontWeight: 550, lineHeight: 1.45 }, children: title }),
9830
+ detail && /* @__PURE__ */ jsx20(Typography14, { component: "span", variant: "caption", sx: { display: "block", color: "text.secondary", mt: 0.5, lineHeight: 1.5 }, children: detail })
9831
+ ] })
9832
+ ] }, title)) }),
9833
+ /* @__PURE__ */ jsx20(Typography14, { variant: "caption", sx: { display: "block", color: "text.secondary", mt: 1.25 }, children: onSelect ? "Choose a starting point, then make it your own before sending." : "Choose a starting point or write your own message." }),
9834
+ message && /* @__PURE__ */ jsx20(Typography14, { role: "status", variant: "caption", sx: { display: "block", color: "text.secondary", mt: 1 }, children: message })
9835
+ ] });
9836
+ }
9957
9837
 
9958
9838
  // src/components/UnderReview.tsx
9959
- import { Box as Box19, Typography as Typography14, useTheme as useTheme17 } from "@mui/material";
9839
+ import { Box as Box19, Typography as Typography15, useTheme as useTheme16 } from "@mui/material";
9960
9840
  import { useNavigate as useNavigate4 } from "react-router-dom";
9961
- import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
9841
+ import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
9962
9842
  var UnderReview = () => {
9963
- const theme = useTheme17();
9843
+ const theme = useTheme16();
9964
9844
  const navigate = useNavigate4();
9965
9845
  const handleResetSession = () => {
9966
9846
  authenticationService.clearToken();
9967
9847
  navigate("/login");
9968
9848
  };
9969
- return /* @__PURE__ */ jsxs17(
9849
+ return /* @__PURE__ */ jsxs18(
9970
9850
  Box19,
9971
9851
  {
9972
9852
  sx: {
@@ -10008,8 +9888,8 @@ var UnderReview = () => {
10008
9888
  title: "Reset session"
10009
9889
  }
10010
9890
  ),
10011
- /* @__PURE__ */ jsx21(Typography14, { variant: "h4", sx: { mb: 2, fontWeight: 700, color: theme.palette.error.main }, children: "Under Review" }),
10012
- /* @__PURE__ */ jsxs17(Typography14, { variant: "body1", sx: { mb: 2, color: theme.palette.text.secondary }, children: [
9891
+ /* @__PURE__ */ jsx21(Typography15, { variant: "h4", sx: { mb: 2, fontWeight: 700, color: theme.palette.error.main }, children: "Under Review" }),
9892
+ /* @__PURE__ */ jsxs18(Typography15, { variant: "body1", sx: { mb: 2, color: theme.palette.text.secondary }, children: [
10013
9893
  "Your request to use this deployment is currently being reviewed.",
10014
9894
  /* @__PURE__ */ jsx21("br", {}),
10015
9895
  "For more info, contact your deployment admin or",
@@ -10024,10 +9904,10 @@ var UnderReview_default = UnderReview;
10024
9904
 
10025
9905
  // src/components/feedback/FeedbackPulse.tsx
10026
9906
  import { useEffect as useEffect15, useRef as useRef14, useState as useState18 } from "react";
10027
- import { Box as Box20, IconButton as IconButton12, Paper as Paper2, Slide as Slide2, Typography as Typography15 } from "@mui/material";
10028
- import { useTheme as useTheme18, alpha as alpha13 } from "@mui/material/styles";
9907
+ import { Box as Box20, IconButton as IconButton12, Paper as Paper2, Slide as Slide2, Typography as Typography16 } from "@mui/material";
9908
+ import { useTheme as useTheme17, alpha as alpha12 } from "@mui/material/styles";
10029
9909
  import { X as CloseIcon7, Smile as SmileIcon, Meh as MehIcon, Frown as FrownIcon } from "@burtson-labs/icons/react";
10030
- import { Fragment as Fragment12, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
9910
+ import { Fragment as Fragment11, jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
10031
9911
  var STORAGE_KEY2 = "bandit-feedback-pulse-last";
10032
9912
  var COOLDOWN_DAYS = 14;
10033
9913
  var MIN_SESSION_MS = 5 * 60 * 1e3;
@@ -10048,7 +9928,7 @@ var recordInteraction = (outcome) => {
10048
9928
  debugLogger.info("FeedbackPulse: interaction recorded", { outcome });
10049
9929
  };
10050
9930
  var FeedbackPulse = ({ isMobile, feedbackEmail }) => {
10051
- const theme = useTheme18();
9931
+ const theme = useTheme17();
10052
9932
  const [visible, setVisible] = useState18(false);
10053
9933
  const [thanked, setThanked] = useState18(false);
10054
9934
  const [modalOpen, setModalOpen] = useState18(false);
@@ -10101,7 +9981,7 @@ var FeedbackPulse = ({ isMobile, feedbackEmail }) => {
10101
9981
  recordInteraction("dismissed");
10102
9982
  setVisible(false);
10103
9983
  };
10104
- const choice = (icon, label, outcome) => /* @__PURE__ */ jsxs18(
9984
+ const choice = (icon, label, outcome) => /* @__PURE__ */ jsxs19(
10105
9985
  Box20,
10106
9986
  {
10107
9987
  component: "button",
@@ -10122,18 +10002,18 @@ var FeedbackPulse = ({ isMobile, feedbackEmail }) => {
10122
10002
  color: theme.palette.text.secondary,
10123
10003
  transition: "background-color 0.15s ease, transform 0.1s ease",
10124
10004
  "&:hover": {
10125
- bgcolor: alpha13(theme.palette.text.primary, 0.06),
10005
+ bgcolor: alpha12(theme.palette.text.primary, 0.06),
10126
10006
  color: theme.palette.text.primary
10127
10007
  },
10128
10008
  "&:active": { transform: "scale(0.96)" }
10129
10009
  },
10130
10010
  children: [
10131
10011
  /* @__PURE__ */ jsx22(Box20, { component: "span", sx: { display: "inline-flex", lineHeight: 1 }, children: icon }),
10132
- /* @__PURE__ */ jsx22(Typography15, { variant: "caption", sx: { fontWeight: 600 }, children: label })
10012
+ /* @__PURE__ */ jsx22(Typography16, { variant: "caption", sx: { fontWeight: 600 }, children: label })
10133
10013
  ]
10134
10014
  }
10135
10015
  );
10136
- return /* @__PURE__ */ jsxs18(Fragment12, { children: [
10016
+ return /* @__PURE__ */ jsxs19(Fragment11, { children: [
10137
10017
  /* @__PURE__ */ jsx22(Slide2, { direction: isMobile ? "down" : "up", in: visible, mountOnEnter: true, unmountOnExit: true, children: /* @__PURE__ */ jsx22(
10138
10018
  Paper2,
10139
10019
  {
@@ -10151,14 +10031,14 @@ var FeedbackPulse = ({ isMobile, feedbackEmail }) => {
10151
10031
  borderRadius: 3,
10152
10032
  border: `1px solid ${theme.palette.divider}`,
10153
10033
  bgcolor: theme.palette.background.paper,
10154
- boxShadow: `0 12px 40px ${alpha13(theme.palette.common.black, theme.palette.mode === "dark" ? 0.5 : 0.18)}`
10034
+ boxShadow: `0 12px 40px ${alpha12(theme.palette.common.black, theme.palette.mode === "dark" ? 0.5 : 0.18)}`
10155
10035
  },
10156
- children: thanked ? /* @__PURE__ */ jsx22(Typography15, { sx: { textAlign: "center", py: 1.5, fontWeight: 600 }, children: "Thanks for the feedback!" }) : /* @__PURE__ */ jsxs18(Fragment12, { children: [
10157
- /* @__PURE__ */ jsxs18(Box20, { sx: { display: "flex", alignItems: "center", mb: 0.5 }, children: [
10158
- /* @__PURE__ */ jsx22(Typography15, { variant: "body2", sx: { fontWeight: 600, flex: 1 }, children: "How's Bandit doing?" }),
10036
+ children: thanked ? /* @__PURE__ */ jsx22(Typography16, { sx: { textAlign: "center", py: 1.5, fontWeight: 600 }, children: "Thanks for the feedback!" }) : /* @__PURE__ */ jsxs19(Fragment11, { children: [
10037
+ /* @__PURE__ */ jsxs19(Box20, { sx: { display: "flex", alignItems: "center", mb: 0.5 }, children: [
10038
+ /* @__PURE__ */ jsx22(Typography16, { variant: "body2", sx: { fontWeight: 600, flex: 1 }, children: "How's Bandit doing?" }),
10159
10039
  /* @__PURE__ */ jsx22(IconButton12, { size: "small", onClick: dismiss, "aria-label": "Dismiss feedback prompt", children: /* @__PURE__ */ jsx22(CloseIcon7, { size: 16 }) })
10160
10040
  ] }),
10161
- /* @__PURE__ */ jsxs18(Box20, { sx: { display: "flex", justifyContent: "space-evenly" }, children: [
10041
+ /* @__PURE__ */ jsxs19(Box20, { sx: { display: "flex", justifyContent: "space-evenly" }, children: [
10162
10042
  choice(/* @__PURE__ */ jsx22(SmileIcon, { size: 22, color: theme.palette.success.main }), "Good", "good"),
10163
10043
  choice(/* @__PURE__ */ jsx22(MehIcon, { size: 22, color: theme.palette.warning.main }), "Fine", "fine"),
10164
10044
  choice(/* @__PURE__ */ jsx22(FrownIcon, { size: 22, color: theme.palette.error.main }), "Bad", "bad")
@@ -10179,13 +10059,13 @@ var FeedbackPulse = ({ isMobile, feedbackEmail }) => {
10179
10059
  var FeedbackPulse_default = FeedbackPulse;
10180
10060
 
10181
10061
  // src/components/ConnectionStatus.tsx
10182
- import { Box as Box21, Chip as Chip5, useTheme as useTheme19 } from "@mui/material";
10062
+ import { Box as Box21, Chip as Chip5, useTheme as useTheme18 } from "@mui/material";
10183
10063
  import { jsx as jsx23 } from "react/jsx-runtime";
10184
10064
  var ConnectionStatus = ({
10185
10065
  showWhenGood = false,
10186
10066
  position = "top"
10187
10067
  }) => {
10188
- const theme = useTheme19();
10068
+ const theme = useTheme18();
10189
10069
  const { isOnline, connectionQuality, isSlowConnection } = useNetworkStatus();
10190
10070
  if (connectionQuality === "fast" && !showWhenGood) {
10191
10071
  return null;
@@ -10553,7 +10433,7 @@ var useVoiceMode = (config) => {
10553
10433
 
10554
10434
  // src/chat/chat.tsx
10555
10435
  import { Ghost as TempChatGhostIcon } from "@burtson-labs/icons/react";
10556
- import { Fragment as Fragment13, jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
10436
+ import { Fragment as Fragment12, jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
10557
10437
  var ChatContent = () => {
10558
10438
  const packageSettings = usePackageSettingsStore((state) => state.settings);
10559
10439
  const UnderReviewView = packageSettings?.components?.UnderReview ?? UnderReview_default;
@@ -11579,21 +11459,21 @@ var ChatContent = () => {
11579
11459
  }
11580
11460
  };
11581
11461
  if (!hydrated || brandingLoading || themeLoading) {
11582
- return /* @__PURE__ */ jsxs19(ThemeProvider, { theme: banditTheme, children: [
11462
+ return /* @__PURE__ */ jsxs20(ThemeProvider, { theme: banditTheme, children: [
11583
11463
  /* @__PURE__ */ jsx24(CssBaseline, {}),
11584
11464
  /* @__PURE__ */ jsx24(ChatStartupSkeleton, {})
11585
11465
  ] });
11586
11466
  }
11587
11467
  const userHasAccess = playgroundBypassAccess || ossMode || claims?.roles?.includes("super-user") || claims?.roles?.includes("admin");
11588
11468
  if (!userHasAccess) {
11589
- return /* @__PURE__ */ jsxs19(ThemeProvider, { theme: banditTheme, children: [
11469
+ return /* @__PURE__ */ jsxs20(ThemeProvider, { theme: banditTheme, children: [
11590
11470
  /* @__PURE__ */ jsx24(CssBaseline, {}),
11591
11471
  /* @__PURE__ */ jsx24(UnderReviewView, {})
11592
11472
  ] });
11593
11473
  }
11594
- return /* @__PURE__ */ jsxs19(ThemeProvider, { theme: banditTheme, children: [
11474
+ return /* @__PURE__ */ jsxs20(ThemeProvider, { theme: banditTheme, children: [
11595
11475
  /* @__PURE__ */ jsx24(CssBaseline, {}),
11596
- /* @__PURE__ */ jsxs19(
11476
+ /* @__PURE__ */ jsxs20(
11597
11477
  Box22,
11598
11478
  {
11599
11479
  sx: (theme) => ({
@@ -11676,7 +11556,7 @@ var ChatContent = () => {
11676
11556
  } : void 0
11677
11557
  }
11678
11558
  ),
11679
- isTemporaryChat && /* @__PURE__ */ jsxs19(Fragment13, { children: [
11559
+ isTemporaryChat && /* @__PURE__ */ jsxs20(Fragment12, { children: [
11680
11560
  !isMobile && /* @__PURE__ */ jsx24(
11681
11561
  Box22,
11682
11562
  {
@@ -11692,7 +11572,7 @@ var ChatContent = () => {
11692
11572
  })
11693
11573
  }
11694
11574
  ),
11695
- /* @__PURE__ */ jsxs19(
11575
+ /* @__PURE__ */ jsxs20(
11696
11576
  Box22,
11697
11577
  {
11698
11578
  sx: (theme) => ({
@@ -11750,7 +11630,7 @@ var ChatContent = () => {
11750
11630
  "@media (pointer: coarse)": { "&::after": { content: '""', position: "absolute", inset: -11 } },
11751
11631
  "&:hover": {
11752
11632
  opacity: 1,
11753
- bgcolor: alpha14(theme.palette.getContrastText(theme.palette.text.primary), 0.16)
11633
+ bgcolor: alpha13(theme.palette.getContrastText(theme.palette.text.primary), 0.16)
11754
11634
  }
11755
11635
  }),
11756
11636
  children: /* @__PURE__ */ jsx24(X, { fontSize: "inherit", "aria-hidden": true })
@@ -11784,7 +11664,7 @@ var ChatContent = () => {
11784
11664
  msOverflowStyle: "none",
11785
11665
  "&::-webkit-scrollbar": { display: "none" }
11786
11666
  },
11787
- children: /* @__PURE__ */ jsxs19(
11667
+ children: /* @__PURE__ */ jsxs20(
11788
11668
  Box22,
11789
11669
  {
11790
11670
  sx: {
@@ -11810,7 +11690,7 @@ var ChatContent = () => {
11810
11690
  transition: "opacity 0.5s ease",
11811
11691
  color: theme.palette.text.primary
11812
11692
  }),
11813
- children: /* @__PURE__ */ jsx24(Typography16, { sx: { fontWeight: 500, fontSize: { xs: "1.5rem", md: "1.9rem" }, lineHeight: 1.2 }, children: "What can I help with?" })
11693
+ children: /* @__PURE__ */ jsx24(Typography17, { sx: { fontWeight: 500, fontSize: { xs: "1.5rem", md: "1.9rem" }, lineHeight: 1.2 }, children: "What can I help with?" })
11814
11694
  }
11815
11695
  );
11816
11696
  }
@@ -11827,13 +11707,13 @@ var ChatContent = () => {
11827
11707
  transition: "opacity 0.5s ease",
11828
11708
  color: theme.palette.text.primary
11829
11709
  }),
11830
- children: /* @__PURE__ */ jsx24(Typography16, { sx: { fontWeight: 600, fontSize: { xs: "1.6rem", md: "2.1rem" }, lineHeight: 1.2 }, children: branding?.brandingText?.trim() || "Bandit AI" })
11710
+ children: /* @__PURE__ */ jsx24(Typography17, { sx: { fontWeight: 600, fontSize: { xs: "1.6rem", md: "2.1rem" }, lineHeight: 1.2 }, children: branding?.brandingText?.trim() || "Bandit AI" })
11831
11711
  }
11832
11712
  );
11833
11713
  }
11834
11714
  return branding?.logoBase64 ? /* @__PURE__ */ jsx24(custom_logo_default, { visible: logoVisible, atTop: true }) : /* @__PURE__ */ jsx24(bandit_chat_logo_default, { visible: logoVisible, atTop: true });
11835
11715
  })(),
11836
- showKnowledgeNudge && /* @__PURE__ */ jsxs19(
11716
+ showKnowledgeNudge && /* @__PURE__ */ jsxs20(
11837
11717
  Box22,
11838
11718
  {
11839
11719
  sx: (theme) => ({
@@ -11853,12 +11733,12 @@ var ChatContent = () => {
11853
11733
  transition: "opacity 0.5s ease"
11854
11734
  }),
11855
11735
  children: [
11856
- /* @__PURE__ */ jsxs19(Box22, { sx: { flex: 1, minWidth: 0 }, children: [
11857
- /* @__PURE__ */ jsx24(Typography16, { variant: "body2", sx: { fontWeight: 600 }, children: "Add your documents" }),
11858
- /* @__PURE__ */ jsx24(Typography16, { variant: "caption", color: "text.secondary", children: "Upload your policies, handbooks or notes and Bandit answers from them, with sources." })
11736
+ /* @__PURE__ */ jsxs20(Box22, { sx: { flex: 1, minWidth: 0 }, children: [
11737
+ /* @__PURE__ */ jsx24(Typography17, { variant: "body2", sx: { fontWeight: 600 }, children: "Add your documents" }),
11738
+ /* @__PURE__ */ jsx24(Typography17, { variant: "caption", color: "text.secondary", children: "Upload your policies, handbooks or notes and Bandit answers from them, with sources." })
11859
11739
  ] }),
11860
11740
  /* @__PURE__ */ jsx24(
11861
- Button11,
11741
+ Button12,
11862
11742
  {
11863
11743
  size: "small",
11864
11744
  variant: "outlined",
@@ -11923,7 +11803,7 @@ var ChatContent = () => {
11923
11803
  onClick: handleScrollToBottomClick
11924
11804
  }
11925
11805
  ),
11926
- /* @__PURE__ */ jsxs19(
11806
+ /* @__PURE__ */ jsxs20(
11927
11807
  Box22,
11928
11808
  {
11929
11809
  sx: {
@@ -11936,7 +11816,17 @@ var ChatContent = () => {
11936
11816
  },
11937
11817
  children: [
11938
11818
  /* @__PURE__ */ jsx24(Box22, { sx: { flex: "1 1 auto" } }),
11939
- history.length === 0 && componentStatus !== "Loading" && !pendingMessage && preferences.chatSuggestionsEnabled && /* @__PURE__ */ jsx24(Box22, { sx: { marginBottom: "20px" }, children: /* @__PURE__ */ jsx24(QuerySuggestionPicker, { onSend: handleSend, inputHeight }) }),
11819
+ history.length === 0 && componentStatus !== "Loading" && !pendingMessage && preferences.chatSuggestionsEnabled && /* @__PURE__ */ jsx24(Box22, { sx: { marginBottom: "20px", width: "100%" }, children: /* @__PURE__ */ jsx24(
11820
+ QuerySuggestionPicker,
11821
+ {
11822
+ onSend: handleSend,
11823
+ onSelect: (prompt) => {
11824
+ setInputValue(prompt);
11825
+ inputRef.current?.focus();
11826
+ },
11827
+ inputHeight
11828
+ }
11829
+ ) }),
11940
11830
  /* @__PURE__ */ jsx24(rate_limit_prompt_default, {}),
11941
11831
  /* @__PURE__ */ jsx24(ask_user_card_default, {}),
11942
11832
  /* @__PURE__ */ jsx24(
@@ -12007,4 +11897,4 @@ export {
12007
11897
  IS_STORE_BUILD,
12008
11898
  chat_default
12009
11899
  };
12010
- //# sourceMappingURL=chunk-TTAORNWI.mjs.map
11900
+ //# sourceMappingURL=chunk-F32P7Q5O.mjs.map