@burtson-labs/bandit-engine 2.0.8 → 2.0.10

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 (193) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +161 -56
  3. package/dist/{aiProviderStore-YWJHSWFA.mjs → aiProviderStore-3YS2BZU3.mjs} +2 -2
  4. package/dist/chat-ZPJNWIXI.mjs +15 -0
  5. package/dist/chat-provider.js +9608 -0
  6. package/dist/chat-provider.js.map +1 -0
  7. package/dist/chat-provider.mjs +17 -0
  8. package/dist/chunk-2ZNIQD26.mjs +259 -0
  9. package/dist/chunk-2ZNIQD26.mjs.map +1 -0
  10. package/dist/chunk-5UVULH77.mjs +9427 -0
  11. package/dist/chunk-5UVULH77.mjs.map +1 -0
  12. package/dist/chunk-CY227I4F.mjs +160 -0
  13. package/dist/chunk-CY227I4F.mjs.map +1 -0
  14. package/dist/chunk-IFN52MQL.mjs +8763 -0
  15. package/dist/chunk-IFN52MQL.mjs.map +1 -0
  16. package/dist/{chunk-AVC6IZJQ.mjs → chunk-IHJPVIGB.mjs} +179 -2
  17. package/dist/chunk-IHJPVIGB.mjs.map +1 -0
  18. package/dist/chunk-L7UOQ2Y2.mjs +2810 -0
  19. package/dist/chunk-L7UOQ2Y2.mjs.map +1 -0
  20. package/dist/chunk-ONQMRE2G.mjs +26 -0
  21. package/dist/chunk-ONQMRE2G.mjs.map +1 -0
  22. package/dist/chunk-RTQDQ6TC.mjs +231 -0
  23. package/dist/chunk-RTQDQ6TC.mjs.map +1 -0
  24. package/dist/chunk-UMPVXYVC.mjs +5658 -0
  25. package/dist/chunk-UMPVXYVC.mjs.map +1 -0
  26. package/dist/chunk-XEG45Q6V.mjs +8925 -0
  27. package/dist/chunk-XEG45Q6V.mjs.map +1 -0
  28. package/dist/{chunk-WYS5CZVG.mjs → chunk-XUBYA5I7.mjs} +2 -2
  29. package/dist/{chunk-WYS5CZVG.mjs.map → chunk-XUBYA5I7.mjs.map} +1 -1
  30. package/dist/cli/cli.js +24 -13
  31. package/dist/cli/cli.js.map +1 -1
  32. package/dist/gateway-BiHRHJMM.d.mts +314 -0
  33. package/dist/gateway-BiHRHJMM.d.ts +314 -0
  34. package/dist/index.d.mts +11 -309
  35. package/dist/index.d.ts +11 -309
  36. package/dist/index.js +400 -155
  37. package/dist/index.js.map +1 -1
  38. package/dist/index.mjs +86 -11874
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/management/management.js +39535 -0
  41. package/dist/management/management.js.map +1 -0
  42. package/dist/management/management.mjs +16 -0
  43. package/dist/management/management.mjs.map +1 -0
  44. package/dist/{chunk-BIPELT57.mjs → modals/chat-modal/chat-modal.js} +16818 -20860
  45. package/dist/modals/chat-modal/chat-modal.js.map +1 -0
  46. package/dist/modals/chat-modal/chat-modal.mjs +19 -0
  47. package/dist/modals/chat-modal/chat-modal.mjs.map +1 -0
  48. package/dist/{modelStore-Y3LZWRQC.mjs → modelStore-UMJBDSEF.mjs} +2 -2
  49. package/dist/modelStore-UMJBDSEF.mjs.map +1 -0
  50. package/dist/public-types.d.mts +32 -0
  51. package/dist/public-types.d.ts +32 -0
  52. package/docs/01_quickstart.md +9 -6
  53. package/docs/02_gateway_api.md +55 -12
  54. package/docs/04_local_dev.md +1 -1
  55. package/docs/api_reference/assets/navigation.js +1 -1
  56. package/docs/api_reference/assets/search.js +1 -1
  57. package/docs/api_reference/classes/DebugLogger.html +11 -11
  58. package/docs/api_reference/classes/FeatureFlagService.html +13 -13
  59. package/docs/api_reference/classes/NotificationService.html +10 -10
  60. package/docs/api_reference/classes/StreamingTTSClient.html +9 -9
  61. package/docs/api_reference/classes/VectorDatabaseService.html +24 -24
  62. package/docs/api_reference/classes/VectorMigrationService.html +8 -8
  63. package/docs/api_reference/classes/VoiceService.html +2 -2
  64. package/docs/api_reference/enums/TTSState.html +2 -2
  65. package/docs/api_reference/functions/Chat.html +1 -1
  66. package/docs/api_reference/functions/ChatModal.html +4 -4
  67. package/docs/api_reference/functions/ChatProvider.html +1 -1
  68. package/docs/api_reference/functions/FeatureFlagProvider.html +1 -1
  69. package/docs/api_reference/functions/FeedbackButton.html +1 -1
  70. package/docs/api_reference/functions/FeedbackModal.html +1 -1
  71. package/docs/api_reference/functions/Management.html +1 -1
  72. package/docs/api_reference/functions/NotificationProvider.html +1 -1
  73. package/docs/api_reference/functions/SubscriptionExpiredGuard.html +1 -1
  74. package/docs/api_reference/functions/SubscriptionExpiredModal.html +1 -1
  75. package/docs/api_reference/functions/defineCustomElement.html +1 -1
  76. package/docs/api_reference/functions/getCriticalConfig.html +1 -1
  77. package/docs/api_reference/functions/getFeatureMatrix.html +1 -1
  78. package/docs/api_reference/functions/getStreamingTTSClient.html +1 -1
  79. package/docs/api_reference/functions/getSystemConstants.html +1 -1
  80. package/docs/api_reference/functions/getTTSState.html +1 -1
  81. package/docs/api_reference/functions/handleHttpError.html +1 -1
  82. package/docs/api_reference/functions/handleSubscriptionUpgrade.html +1 -1
  83. package/docs/api_reference/functions/handleValidationError.html +1 -1
  84. package/docs/api_reference/functions/initializeCoreSystem.html +1 -1
  85. package/docs/api_reference/functions/pauseTTS.html +1 -1
  86. package/docs/api_reference/functions/previewTierUpgrade.html +1 -1
  87. package/docs/api_reference/functions/resumeTTS.html +1 -1
  88. package/docs/api_reference/functions/showInfoNotification.html +1 -1
  89. package/docs/api_reference/functions/showSuccessNotification.html +1 -1
  90. package/docs/api_reference/functions/speakWithStreaming.html +1 -1
  91. package/docs/api_reference/functions/stopTTS.html +1 -1
  92. package/docs/api_reference/functions/syncSubscriptionWithAPI.html +1 -1
  93. package/docs/api_reference/functions/updateSubscriptionTier.html +1 -1
  94. package/docs/api_reference/functions/useFeatureFlag.html +1 -1
  95. package/docs/api_reference/functions/useFeatureVisibility.html +1 -1
  96. package/docs/api_reference/functions/useFeatures.html +1 -1
  97. package/docs/api_reference/functions/useGatewayHealth.html +1 -1
  98. package/docs/api_reference/functions/useGatewayMemory.html +1 -1
  99. package/docs/api_reference/functions/useGatewayModels.html +1 -1
  100. package/docs/api_reference/functions/useGlobalTTS.html +1 -1
  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 +1 -1
  108. package/docs/api_reference/functions/validateSystemIntegrity.html +1 -1
  109. package/docs/api_reference/index.html +130 -40
  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 +2 -2
  117. package/docs/api_reference/interfaces/ChatConfig.html +3 -3
  118. package/docs/api_reference/interfaces/ChatModalProps.html +7 -0
  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 +2 -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/MemorySearchFilters.html +2 -2
  144. package/docs/api_reference/interfaces/MigrationProgress.html +2 -2
  145. package/docs/api_reference/interfaces/MigrationStatus.html +2 -2
  146. package/docs/api_reference/interfaces/NotificationConfig.html +2 -2
  147. package/docs/api_reference/interfaces/NotificationContextType.html +2 -2
  148. package/docs/api_reference/interfaces/NotificationProviderProps.html +2 -2
  149. package/docs/api_reference/interfaces/PackageSettings.html +5 -3
  150. package/docs/api_reference/interfaces/SearchOptions.html +2 -2
  151. package/docs/api_reference/interfaces/SearchResult.html +2 -2
  152. package/docs/api_reference/interfaces/SubscriptionExpiredGuardProps.html +2 -2
  153. package/docs/api_reference/interfaces/SubscriptionExpiredModalProps.html +2 -2
  154. package/docs/api_reference/interfaces/TTSOptions.html +2 -2
  155. package/docs/api_reference/interfaces/TTSProgress.html +2 -2
  156. package/docs/api_reference/interfaces/TrialUsage.html +2 -2
  157. package/docs/api_reference/interfaces/UploadRequest.html +3 -3
  158. package/docs/api_reference/interfaces/UseTTSReturn.html +2 -2
  159. package/docs/api_reference/interfaces/VectorDocument.html +2 -2
  160. package/docs/api_reference/interfaces/VectorMemory.html +2 -2
  161. package/docs/api_reference/interfaces/VectorMemoryMetadata.html +2 -2
  162. package/docs/api_reference/interfaces/VectorStoreStatus.html +2 -2
  163. package/docs/api_reference/interfaces/VoiceModelsResponse.html +2 -2
  164. package/docs/api_reference/interfaces/VoiceState.html +2 -2
  165. package/docs/api_reference/media/02_gateway_api.md +55 -12
  166. package/docs/api_reference/media/LICENSE +2 -2
  167. package/docs/api_reference/media/PROTECTION-README.md +6 -8
  168. package/docs/api_reference/media/README.md +37 -9
  169. package/docs/api_reference/modules.html +1 -0
  170. package/docs/api_reference/types/FeatureKey.html +1 -1
  171. package/docs/api_reference/types/FeatureMatrix.html +1 -1
  172. package/docs/api_reference/types/GatewayQueryOptions.html +1 -1
  173. package/docs/api_reference/types/LogContext.html +1 -1
  174. package/docs/api_reference/types/SubscriptionTier.html +1 -1
  175. package/docs/api_reference/variables/DEFAULT_TIER_FEATURES.html +1 -1
  176. package/docs/api_reference/variables/FeatureFlagContext.html +1 -1
  177. package/docs/api_reference/variables/OSS_DEFAULT_FEATURES.html +1 -1
  178. package/docs/api_reference/variables/SYSTEM_FLAGS.html +1 -1
  179. package/docs/api_reference/variables/authenticationService.html +1 -1
  180. package/docs/api_reference/variables/debugLogger-1.html +1 -1
  181. package/docs/api_reference/variables/featureFlagService-1.html +1 -1
  182. package/docs/api_reference/variables/notificationService-1.html +1 -1
  183. package/docs/api_reference/variables/vectorDatabaseService-1.html +1 -1
  184. package/docs/api_reference/variables/vectorMigrationService-1.html +1 -1
  185. package/docs/api_reference/variables/voiceService-1.html +1 -1
  186. package/package.json +24 -13
  187. package/dist/chat-QXB526NZ.mjs +0 -11
  188. package/dist/chunk-AVC6IZJQ.mjs.map +0 -1
  189. package/dist/chunk-BIPELT57.mjs.map +0 -1
  190. package/docs/api_reference/media/README-1.md +0 -23
  191. /package/dist/{aiProviderStore-YWJHSWFA.mjs.map → aiProviderStore-3YS2BZU3.mjs.map} +0 -0
  192. /package/dist/{chat-QXB526NZ.mjs.map → chat-ZPJNWIXI.mjs.map} +0 -0
  193. /package/dist/{modelStore-Y3LZWRQC.mjs.map → chat-provider.mjs.map} +0 -0
@@ -0,0 +1,160 @@
1
+ import {
2
+ styleInject
3
+ } from "./chunk-ONQMRE2G.mjs";
4
+ import {
5
+ aiProviderInitService
6
+ } from "./chunk-2ZNIQD26.mjs";
7
+ import {
8
+ useMCPToolsStore
9
+ } from "./chunk-RTQDQ6TC.mjs";
10
+ import {
11
+ FeatureFlagProvider,
12
+ NotificationProvider,
13
+ authenticationService,
14
+ brandingService_default,
15
+ embeddingService,
16
+ useAIQueryStore,
17
+ useConversationStore,
18
+ useConversationSyncStore,
19
+ useKnowledgeStore,
20
+ useKnowledgeStore2,
21
+ useMemoryStore,
22
+ useProjectStore
23
+ } from "./chunk-UMPVXYVC.mjs";
24
+ import {
25
+ indexedDBService_default,
26
+ useModelStore,
27
+ usePackageSettingsStore,
28
+ usePreferencesStore
29
+ } from "./chunk-XUBYA5I7.mjs";
30
+ import {
31
+ debugLogger
32
+ } from "./chunk-KCI46M23.mjs";
33
+
34
+ // src/chat-provider.tsx
35
+ import { useEffect, useState } from "react";
36
+
37
+ // src/chat-provider.css
38
+ styleInject("*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n:root {\n --vh: 1vh;\n --input-offset: 1.5rem;\n}\nhtml {\n height: 100%;\n overflow: hidden;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\nhtml::-webkit-scrollbar {\n display: none;\n}\nbody {\n height: 100%;\n overflow: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\nbody::-webkit-scrollbar {\n display: none;\n}\na {\n color: inherit;\n text-decoration: none;\n}\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 2rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.bandit-logo-container {\n display: flex;\n height: 50vh;\n margin: auto;\n}\n.bandit-logo {\n margin: auto;\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-items: center;\n width: 90vw;\n max-width: 640px;\n height: 55vh;\n background-size: cover;\n background-position: center center;\n background-repeat: no-repeat;\n transition: opacity 0.6s ease-in-out, transform 0.6s ease-in-out;\n}\n.bandit-logo-hidden {\n opacity: 0;\n transform: translateY(-10px);\n pointer-events: none;\n}\n.bandit-logo-visible {\n opacity: 1;\n transform: translateY(0);\n}\n");
39
+
40
+ // src/chat-provider.tsx
41
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
42
+ import { jsx } from "react/jsx-runtime";
43
+ var ChatProvider = (props) => {
44
+ const { loadDocuments } = useKnowledgeStore2();
45
+ const [queryClient] = useState(() => new QueryClient());
46
+ const featureFlagConfig = {
47
+ ...props.packageSettings.featureFlags,
48
+ ...props.featureFlags
49
+ };
50
+ useEffect(() => {
51
+ const initializeAsync = async () => {
52
+ usePackageSettingsStore.setState(() => ({
53
+ settings: props.packageSettings
54
+ }));
55
+ try {
56
+ await aiProviderInitService.initializeFromSettings();
57
+ } catch (error) {
58
+ debugLogger.error("Failed to initialize AI provider:", { error });
59
+ }
60
+ const token = authenticationService.getToken();
61
+ if (token && !authenticationService.isTokenExpired(token)) {
62
+ authenticationService.setToken(token);
63
+ } else {
64
+ authenticationService.clearToken();
65
+ }
66
+ useConversationStore.getState().hydrate();
67
+ useProjectStore.getState().hydrate();
68
+ useAIQueryStore.getState().hydrate();
69
+ useMemoryStore.getState().hydrate();
70
+ const isPlaygroundRoute = typeof window !== "undefined" && window.location.pathname.includes("/playground");
71
+ const isPlaygroundMode = isPlaygroundRoute || props.packageSettings.playgroundMode === true;
72
+ if (isPlaygroundMode) {
73
+ debugLogger.info("ChatProvider: Playground mode detected \u2014 skipping remote preference and sync initialization");
74
+ } else {
75
+ await usePreferencesStore.getState().loadPreferences();
76
+ await useKnowledgeStore.getState().loadDocs();
77
+ await useMCPToolsStore.getState().loadTools();
78
+ await useConversationSyncStore.getState().initialize();
79
+ }
80
+ debugLogger.info("ChatProvider about to call initModels - checking for existing branding first");
81
+ const storeConfigs = [{ name: "config", keyPath: "id" }];
82
+ let existingBranding = null;
83
+ try {
84
+ const config = await indexedDBService_default.get(
85
+ "banditConfig",
86
+ 1,
87
+ "config",
88
+ "main",
89
+ storeConfigs
90
+ );
91
+ if (config?.branding?.userSaved) {
92
+ existingBranding = config.branding;
93
+ debugLogger.info("Found user-saved branding to protect during initModels", {
94
+ hasText: !!existingBranding.brandingText,
95
+ hasLogo: !!existingBranding.logoBase64,
96
+ theme: existingBranding.theme
97
+ });
98
+ }
99
+ } catch (err) {
100
+ debugLogger.warn("Could not check existing branding before initModels", { error: err });
101
+ }
102
+ await useModelStore.getState().initModels().catch((err) => {
103
+ debugLogger.error("\u274C Failed to initialize models:", { error: err });
104
+ });
105
+ if (existingBranding) {
106
+ try {
107
+ const afterInitModels = await indexedDBService_default.get(
108
+ "banditConfig",
109
+ 1,
110
+ "config",
111
+ "main",
112
+ storeConfigs
113
+ );
114
+ if (JSON.stringify(afterInitModels?.branding) !== JSON.stringify(existingBranding)) {
115
+ debugLogger.warn("ChatProvider: initModels overwrote user branding! Restoring...");
116
+ await indexedDBService_default.put("banditConfig", 1, "config", {
117
+ ...afterInitModels,
118
+ id: "main",
119
+ branding: existingBranding
120
+ }, storeConfigs);
121
+ debugLogger.info("ChatProvider: User branding restored after initModels");
122
+ }
123
+ } catch (err) {
124
+ debugLogger.error("ChatProvider: Failed to restore branding after initModels", { error: err });
125
+ }
126
+ }
127
+ if (props.packageSettings.brandingConfigUrl) {
128
+ fetch(props.packageSettings.brandingConfigUrl).then((res) => {
129
+ if (!res.ok) {
130
+ throw new Error(`HTTP error ${res.status}`);
131
+ }
132
+ return res.json();
133
+ }).then((json) => {
134
+ if (json && typeof json === "object") {
135
+ brandingService_default.setBrandingFromConfig(json);
136
+ }
137
+ }).catch((err) => {
138
+ debugLogger.error("\u274C Failed to fetch or apply branding config:", { error: err });
139
+ });
140
+ }
141
+ if (!isPlaygroundMode) {
142
+ loadDocuments();
143
+ embeddingService.backfillMissingEmbeddings().catch((err) => {
144
+ debugLogger.error("\u274C Failed to backfill memory embeddings:", { error: err });
145
+ });
146
+ } else {
147
+ debugLogger.info("ChatProvider: Playground mode skipping knowledge backfill");
148
+ }
149
+ };
150
+ initializeAsync();
151
+ }, [props.packageSettings, loadDocuments]);
152
+ return /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx(FeatureFlagProvider, { config: featureFlagConfig, children: /* @__PURE__ */ jsx(NotificationProvider, { children: props.children }) }) });
153
+ };
154
+ var chat_provider_default = ChatProvider;
155
+
156
+ export {
157
+ ChatProvider,
158
+ chat_provider_default
159
+ };
160
+ //# sourceMappingURL=chunk-CY227I4F.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/chat-provider.tsx","../src/chat-provider.css"],"sourcesContent":["/*\n © 2025 Burtson Labs — Licensed under Business Source License 1.1\n https://burtson.ai/license\n\n This file is protected intellectual property.\n Do NOT use in commercial software, prompts, AI training data, or derivative works without a valid commercial license.\n\n 🚫 AI NOTICE: This file contains visible and invisible watermarks.\n ⚖️ VIOLATION NOTICE: Removing, modifying, or obscuring these watermarks is a license violation.\n 🔒 LICENSE TERMINATION: Upon license termination, ALL forks, copies, and derivatives must be permanently deleted.\n 📋 AUDIT TRAIL: File usage is logged and monitored for compliance verification.\n*/\n\n// Bandit Engine Watermark: BL-WM-9A05-FB9C98\nconst __banditFingerprint_chatprovidertsx = 'BL-FP-E60286-2996';\nconst __auditTrail_chatprovidertsx = 'BL-AU-MGOIKVV6-O6E4';\n// File: chat-provider.tsx | Path: src/chat-provider.tsx | Hash: 9a052996\n\nimport React, { useEffect, useState } from \"react\";\nimport { PackageSettings, usePackageSettingsStore } from \"./store/packageSettingsStore\";\nimport { authenticationService } from \"./services/auth/authenticationService\";\nimport { useConversationStore } from \"./store/conversationStore\";\nimport { useAIQueryStore } from \"./store/aiQueryStore\";\nimport { useMemoryStore } from \"./store/memoryStore\";\nimport { useModelStore } from \"./store/modelStore\";\nimport { usePreferencesStore } from \"./store/preferencesStore\";\nimport { useProjectStore } from \"./store/projectStore\";\nimport { useConversationSyncStore } from \"./store/conversationSyncStore\";\nimport { useKnowledgeStore } from \"./store/knowledgeStore\";\nimport { useMCPToolsStore } from \"./store/mcpToolsStore\";\nimport { useKnowledgeStore as useKnowledgeHook } from \"./chat/hooks/useKnowledgeStore\";\nimport { embeddingService } from \"./services/embedding/embeddingService\";\nimport { aiProviderInitService } from \"./services/ai-provider-init.service\";\nimport brandingService, { BrandingConfigPayload } from \"./services/branding/brandingService\";\nimport indexedDBService from \"./services/indexedDB/indexedDBService\";\nimport { debugLogger } from \"./services/logging/debugLogger\";\nimport { NotificationProvider } from \"./shared/components/NotificationProvider\";\nimport { FeatureFlagProvider } from \"./contexts/FeatureFlagContext\";\nimport { FeatureFlagConfig } from \"./types/featureFlags\";\nimport \"./chat-provider.css\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { StoredBanditConfigRecord } from \"./types/config\";\n\nexport interface ChatConfig {\n packageSettings: PackageSettings;\n /** Feature flag configuration - can override packageSettings.featureFlags */\n featureFlags?: FeatureFlagConfig;\n children?: React.ReactNode;\n}\n\nexport const ChatProvider: React.FC<ChatConfig> = (props) => {\n const { loadDocuments } = useKnowledgeHook();\n const [queryClient] = useState(() => new QueryClient());\n\n // Determine final feature flag configuration\n const featureFlagConfig: FeatureFlagConfig = {\n ...props.packageSettings.featureFlags,\n ...props.featureFlags\n };\n\n useEffect(() => {\n const initializeAsync = async () => {\n // Set package settings first\n usePackageSettingsStore.setState(() => ({\n settings: props.packageSettings,\n }));\n\n // Initialize the new AI provider system early\n try {\n await aiProviderInitService.initializeFromSettings();\n } catch (error) {\n debugLogger.error(\"Failed to initialize AI provider:\", { error });\n }\n\n const token = authenticationService.getToken();\n if (token && !authenticationService.isTokenExpired(token)) {\n authenticationService.setToken(token);\n } else {\n authenticationService.clearToken();\n }\n\n useConversationStore.getState().hydrate();\n useProjectStore.getState().hydrate();\n useAIQueryStore.getState().hydrate();\n useMemoryStore.getState().hydrate();\n \n const isPlaygroundRoute = typeof window !== \"undefined\" && window.location.pathname.includes(\"/playground\");\n const isPlaygroundMode = isPlaygroundRoute || props.packageSettings.playgroundMode === true;\n\n if (isPlaygroundMode) {\n debugLogger.info(\"ChatProvider: Playground mode detected — skipping remote preference and sync initialization\");\n } else {\n // Load preferences, knowledge docs, and MCP tools\n await usePreferencesStore.getState().loadPreferences();\n await useKnowledgeStore.getState().loadDocs();\n await useMCPToolsStore.getState().loadTools();\n await useConversationSyncStore.getState().initialize();\n }\n \n // Initialize models after AI provider is set up\n debugLogger.info(\"ChatProvider about to call initModels - checking for existing branding first\");\n \n // Get existing branding before initModels to protect user-saved branding\n const storeConfigs = [{ name: \"config\", keyPath: \"id\" }] as const;\n let existingBranding: StoredBanditConfigRecord[\"branding\"] | null = null;\n try {\n const config = await indexedDBService.get<StoredBanditConfigRecord>(\n \"banditConfig\",\n 1,\n \"config\",\n \"main\",\n storeConfigs\n );\n if (config?.branding?.userSaved) {\n existingBranding = config.branding;\n debugLogger.info(\"Found user-saved branding to protect during initModels\", {\n hasText: !!existingBranding.brandingText,\n hasLogo: !!existingBranding.logoBase64,\n theme: existingBranding.theme\n });\n }\n } catch (err) {\n debugLogger.warn(\"Could not check existing branding before initModels\", { error: err });\n }\n \n await useModelStore.getState().initModels().catch((err) => {\n debugLogger.error(\"❌ Failed to initialize models:\", { error: err });\n });\n \n // Restore user branding if it was overwritten\n if (existingBranding) {\n try {\n const afterInitModels = await indexedDBService.get<StoredBanditConfigRecord>(\n \"banditConfig\",\n 1,\n \"config\",\n \"main\",\n storeConfigs\n );\n if (JSON.stringify(afterInitModels?.branding) !== JSON.stringify(existingBranding)) {\n debugLogger.warn(\"ChatProvider: initModels overwrote user branding! Restoring...\");\n await indexedDBService.put<StoredBanditConfigRecord>(\"banditConfig\", 1, \"config\", {\n ...afterInitModels,\n id: \"main\",\n branding: existingBranding,\n }, storeConfigs);\n debugLogger.info(\"ChatProvider: User branding restored after initModels\");\n }\n } catch (err) {\n debugLogger.error(\"ChatProvider: Failed to restore branding after initModels\", { error: err });\n }\n }\n\n if (props.packageSettings.brandingConfigUrl) {\n fetch(props.packageSettings.brandingConfigUrl)\n .then((res) => {\n if (!res.ok) {\n throw new Error(`HTTP error ${res.status}`);\n }\n return res.json();\n })\n .then((json: unknown) => {\n if (json && typeof json === \"object\") {\n brandingService.setBrandingFromConfig(json as BrandingConfigPayload);\n }\n })\n .catch((err) => {\n debugLogger.error(\"❌ Failed to fetch or apply branding config:\", { error: err });\n });\n }\n\n if (!isPlaygroundMode) {\n loadDocuments();\n embeddingService.backfillMissingEmbeddings().catch((err: unknown) => {\n debugLogger.error(\"❌ Failed to backfill memory embeddings:\", { error: err });\n });\n } else {\n debugLogger.info(\"ChatProvider: Playground mode skipping knowledge backfill\");\n }\n };\n\n initializeAsync();\n }, [props.packageSettings, loadDocuments]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <FeatureFlagProvider config={featureFlagConfig}>\n <NotificationProvider>\n {props.children}\n </NotificationProvider>\n </FeatureFlagProvider>\n </QueryClientProvider>\n );\n};\n\nexport default ChatProvider;\n","import styleInject from '#style-inject';styleInject(\"*,\\n*::before,\\n*::after {\\n box-sizing: border-box;\\n margin: 0;\\n padding: 0;\\n}\\n:root {\\n --vh: 1vh;\\n --input-offset: 1.5rem;\\n}\\nhtml {\\n height: 100%;\\n overflow: hidden;\\n scrollbar-width: none;\\n -ms-overflow-style: none;\\n}\\nhtml::-webkit-scrollbar {\\n display: none;\\n}\\nbody {\\n height: 100%;\\n overflow: auto;\\n scrollbar-width: none;\\n -ms-overflow-style: none;\\n}\\nbody::-webkit-scrollbar {\\n display: none;\\n}\\na {\\n color: inherit;\\n text-decoration: none;\\n}\\n.container {\\n max-width: 1200px;\\n margin: 0 auto;\\n padding: 2rem;\\n}\\n.mt-2 {\\n margin-top: 0.5rem;\\n}\\n.mb-2 {\\n margin-bottom: 0.5rem;\\n}\\n.mx-auto {\\n margin-left: auto;\\n margin-right: auto;\\n}\\n.bandit-logo-container {\\n display: flex;\\n height: 50vh;\\n margin: auto;\\n}\\n.bandit-logo {\\n margin: auto;\\n display: flex;\\n flex: 1 1 auto;\\n flex-direction: column;\\n align-items: center;\\n width: 90vw;\\n max-width: 640px;\\n height: 55vh;\\n background-size: cover;\\n background-position: center center;\\n background-repeat: no-repeat;\\n transition: opacity 0.6s ease-in-out, transform 0.6s ease-in-out;\\n}\\n.bandit-logo-hidden {\\n opacity: 0;\\n transform: translateY(-10px);\\n pointer-events: none;\\n}\\n.bandit-logo-visible {\\n opacity: 1;\\n transform: translateY(0);\\n}\\n\")"],"mappings":"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","names":["useKnowledgeStore"]}