@burtson-labs/bandit-engine 2.0.99 → 2.0.100
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.
- package/dist/{aiProviderStore-337QNQB3.mjs → aiProviderStore-FTD277QP.mjs} +2 -2
- package/dist/chat-PMO3WTM4.mjs +16 -0
- package/dist/chat-provider.js +152 -111
- package/dist/chat-provider.js.map +1 -1
- package/dist/chat-provider.mjs +5 -5
- package/dist/{chunk-J2PMXOV2.mjs → chunk-37JLV5PU.mjs} +18 -143
- package/dist/chunk-37JLV5PU.mjs.map +1 -0
- package/dist/{chunk-H3BYFEIE.mjs → chunk-43MLINPL.mjs} +157 -7
- package/dist/chunk-43MLINPL.mjs.map +1 -0
- package/dist/{chunk-L2EKYO4F.mjs → chunk-BN3D45E2.mjs} +4 -4
- package/dist/{chunk-I7WBZVTR.mjs → chunk-GGSK5RVZ.mjs} +12 -12
- package/dist/{chunk-ZLXWNTFK.mjs → chunk-HAUDGBUS.mjs} +3 -5
- package/dist/{chunk-ZLXWNTFK.mjs.map → chunk-HAUDGBUS.mjs.map} +1 -1
- package/dist/{chunk-RUMVTVNM.mjs → chunk-KYC7CC6C.mjs} +2 -2
- package/dist/{chunk-C2SY64XM.mjs → chunk-R3HBSHLE.mjs} +92 -46
- package/dist/chunk-R3HBSHLE.mjs.map +1 -0
- package/dist/{chunk-AGT77Z3A.mjs → chunk-RN3AKXKI.mjs} +4 -4
- package/dist/{chunk-IVLVUNIB.mjs → chunk-VIKZPBVO.mjs} +5 -5
- package/dist/{chunk-OSSZ7Z2O.mjs → chunk-VTKRZNLI.mjs} +8 -6
- package/dist/{chunk-OSSZ7Z2O.mjs.map → chunk-VTKRZNLI.mjs.map} +1 -1
- package/dist/index.js +105 -35
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +13 -12
- package/dist/index.mjs.map +1 -1
- package/dist/management/management.js +251 -181
- package/dist/management/management.js.map +1 -1
- package/dist/management/management.mjs +8 -8
- package/dist/modals/chat-modal/chat-modal.js +161 -121
- package/dist/modals/chat-modal/chat-modal.js.map +1 -1
- package/dist/modals/chat-modal/chat-modal.mjs +4 -4
- package/package.json +1 -1
- package/dist/chat-IOBCRT5Y.mjs +0 -16
- package/dist/chunk-C2SY64XM.mjs.map +0 -1
- package/dist/chunk-H3BYFEIE.mjs.map +0 -1
- package/dist/chunk-J2PMXOV2.mjs.map +0 -1
- /package/dist/{aiProviderStore-337QNQB3.mjs.map → aiProviderStore-FTD277QP.mjs.map} +0 -0
- /package/dist/{chat-IOBCRT5Y.mjs.map → chat-PMO3WTM4.mjs.map} +0 -0
- /package/dist/{chunk-L2EKYO4F.mjs.map → chunk-BN3D45E2.mjs.map} +0 -0
- /package/dist/{chunk-I7WBZVTR.mjs.map → chunk-GGSK5RVZ.mjs.map} +0 -0
- /package/dist/{chunk-RUMVTVNM.mjs.map → chunk-KYC7CC6C.mjs.map} +0 -0
- /package/dist/{chunk-AGT77Z3A.mjs.map → chunk-RN3AKXKI.mjs.map} +0 -0
- /package/dist/{chunk-IVLVUNIB.mjs.map → chunk-VIKZPBVO.mjs.map} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StreamingMarkdown_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KYC7CC6C.mjs";
|
|
4
4
|
import {
|
|
5
5
|
aiProviderInitService
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HAUDGBUS.mjs";
|
|
7
7
|
import {
|
|
8
8
|
addMcpServer,
|
|
9
9
|
deleteMcpServer,
|
|
@@ -11,10 +11,10 @@ import {
|
|
|
11
11
|
listMcpServers,
|
|
12
12
|
updateMcpServer,
|
|
13
13
|
useMCPToolsStore
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-BN3D45E2.mjs";
|
|
15
15
|
import {
|
|
16
16
|
chat_modal_default
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RN3AKXKI.mjs";
|
|
18
18
|
import {
|
|
19
19
|
AddIcon,
|
|
20
20
|
ArchiveIcon,
|
|
@@ -86,21 +86,19 @@ import {
|
|
|
86
86
|
predefinedThemes,
|
|
87
87
|
useNotificationService,
|
|
88
88
|
useVoiceStore
|
|
89
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-VIKZPBVO.mjs";
|
|
90
90
|
import {
|
|
91
91
|
TOPICS,
|
|
92
|
-
authenticationService,
|
|
93
92
|
brandingService_default,
|
|
94
93
|
detectTransparency,
|
|
95
94
|
fetchAndConvertToBase64,
|
|
96
95
|
resolveAvatar,
|
|
97
|
-
useAuthenticationStore,
|
|
98
96
|
useConversationSyncStore,
|
|
99
97
|
useFeatureVisibility,
|
|
100
98
|
useFeatures,
|
|
101
99
|
useKnowledgeStore2 as useKnowledgeStore,
|
|
102
100
|
useVectorStore
|
|
103
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-37JLV5PU.mjs";
|
|
104
102
|
import {
|
|
105
103
|
indexedDBService_default,
|
|
106
104
|
models,
|
|
@@ -111,8 +109,10 @@ import {
|
|
|
111
109
|
import {
|
|
112
110
|
AIProviderFactory,
|
|
113
111
|
GatewayService,
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
authenticationService,
|
|
113
|
+
useAIProviderStore,
|
|
114
|
+
useAuthenticationStore
|
|
115
|
+
} from "./chunk-43MLINPL.mjs";
|
|
116
116
|
import {
|
|
117
117
|
debugLogger
|
|
118
118
|
} from "./chunk-KCI46M23.mjs";
|
|
@@ -9738,7 +9738,7 @@ var MCPToolsTabV2_default = MCPToolsTabV2;
|
|
|
9738
9738
|
|
|
9739
9739
|
// src/management/management.tsx
|
|
9740
9740
|
import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
9741
|
-
var preloadChatPage = () => import("./chat-
|
|
9741
|
+
var preloadChatPage = () => import("./chat-PMO3WTM4.mjs");
|
|
9742
9742
|
var buildCapabilitiesUrl = (gatewayApiUrl) => {
|
|
9743
9743
|
const trimmed = gatewayApiUrl.replace(/\/$/, "");
|
|
9744
9744
|
if (trimmed.endsWith("/api")) {
|
|
@@ -11104,4 +11104,4 @@ export {
|
|
|
11104
11104
|
useGatewayMemory,
|
|
11105
11105
|
management_default
|
|
11106
11106
|
};
|
|
11107
|
-
//# sourceMappingURL=chunk-
|
|
11107
|
+
//# sourceMappingURL=chunk-GGSK5RVZ.mjs.map
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
authenticationService
|
|
3
|
-
} from "./chunk-J2PMXOV2.mjs";
|
|
4
1
|
import {
|
|
5
2
|
indexedDBService_default,
|
|
6
3
|
usePackageSettingsStore
|
|
7
4
|
} from "./chunk-LWHSOEPR.mjs";
|
|
8
5
|
import {
|
|
6
|
+
authenticationService,
|
|
9
7
|
useAIProviderStore
|
|
10
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-43MLINPL.mjs";
|
|
11
9
|
import {
|
|
12
10
|
debugLogger
|
|
13
11
|
} from "./chunk-KCI46M23.mjs";
|
|
@@ -287,4 +285,4 @@ var aiProviderInitService = AIProviderInitService.getInstance();
|
|
|
287
285
|
export {
|
|
288
286
|
aiProviderInitService
|
|
289
287
|
};
|
|
290
|
-
//# sourceMappingURL=chunk-
|
|
288
|
+
//# sourceMappingURL=chunk-HAUDGBUS.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/services/ai-provider-init.service.ts"],"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-BFD5-C74863\nconst __banditFingerprint_services_aiproviderinitservicets = 'BL-FP-DDF978-53AF';\nconst __auditTrail_services_aiproviderinitservicets = 'BL-AU-MGOIKVVR-WP87';\n// File: ai-provider-init.service.ts | Path: src/services/ai-provider-init.service.ts | Hash: bfd553af\n\nimport { useAIProviderStore } from \"../store/aiProviderStore\";\nimport { usePackageSettingsStore } from \"../store/packageSettingsStore\";\nimport { AIProviderConfig, AIProviderType } from \"./ai-provider/types/common.types\";\nimport { authenticationService } from \"./auth/authenticationService\";\nimport { debugLogger } from \"./logging/debugLogger\";\nimport indexedDBService from \"./indexedDB/indexedDBService\";\n\ntype StoredAIProviderConfig = AIProviderConfig & { id?: string };\n\n/**\n * Service to initialize AI providers based on package settings\n */\nexport class AIProviderInitService {\n private static instance: AIProviderInitService;\n\n private constructor() {}\n\n static getInstance(): AIProviderInitService {\n if (!AIProviderInitService.instance) {\n AIProviderInitService.instance = new AIProviderInitService();\n }\n return AIProviderInitService.instance;\n }\n\n /**\n * Initialize AI provider from package settings\n * Provides backward compatibility with existing Ollama settings\n */\n async initializeFromSettings(): Promise<void> {\n const settings = usePackageSettingsStore.getState().settings;\n if (!settings) {\n debugLogger.warn(\"No package settings found, cannot initialize AI provider\");\n return;\n }\n\n let providerConfig: AIProviderConfig;\n\n debugLogger.info(\"AI Provider Init: Starting initialization\", { \n hasSettings: !!settings,\n hasAiProvider: !!settings.aiProvider,\n ollamaUrl: settings.ollamaUrl\n });\n\n const isPlaygroundEnvironment =\n settings.playgroundMode === true ||\n settings.aiProvider?.type === AIProviderType.PLAYGROUND ||\n (settings.gatewayApiUrl?.toLowerCase()?.startsWith(\"playground://\") ?? false) ||\n (typeof window !== \"undefined\" && window.location.pathname.includes(\"/playground\"));\n\n // First, try to load provider configuration from IndexedDB\n if (isPlaygroundEnvironment) {\n debugLogger.info(\"AI Provider Init: Playground environment detected, bypassing saved provider config\");\n } else {\n try {\n const savedConfig = await indexedDBService.get<StoredAIProviderConfig>(\n 'banditConfig', \n 1, \n 'config', \n 'aiProvider',\n [{ name: 'config', keyPath: 'id' }]\n );\n \n if (savedConfig) {\n debugLogger.info('AI Provider Init: Found saved config in IndexedDB', { type: savedConfig.type });\n \n // Filter out the 'id' property that was added for IndexedDB storage\n const { id: _id, ...configWithoutId } = savedConfig;\n providerConfig = { ...configWithoutId };\n if (providerConfig.type === AIProviderType.ANTHROPIC) {\n providerConfig = this.convertAnthropicConfig(providerConfig, settings?.gatewayApiUrl);\n }\n\n // Ensure tokenFactory is present for providers that need it\n providerConfig = this.ensureTokenFactory(providerConfig);\n \n // Initialize the provider with saved config\n try {\n const { createProvider } = useAIProviderStore.getState();\n createProvider(providerConfig);\n \n const provider = useAIProviderStore.getState().provider;\n if (provider) {\n try {\n await provider.validateServiceAvailability({ timeoutMs: 5000 });\n debugLogger.info(`AI Provider initialized and validated from IndexedDB: ${providerConfig.type}`);\n } catch (validationError) {\n debugLogger.warn(`AI Provider created but validation failed`, { error: validationError });\n }\n }\n return; // Successfully initialized from IndexedDB\n } catch (error) {\n debugLogger.error(\"Failed to initialize saved provider config, falling back to package settings\", { error });\n }\n }\n \n debugLogger.info('AI Provider Init: No saved config found, using package settings');\n } catch (error) {\n debugLogger.warn('AI Provider Init: Failed to load from IndexedDB, using package settings', { error });\n }\n }\n\n // Fallback to package settings if no saved config found\n if (settings.aiProvider) {\n providerConfig = { ...settings.aiProvider };\n if (providerConfig.type === AIProviderType.ANTHROPIC) {\n providerConfig = this.convertAnthropicConfig(providerConfig, settings.gatewayApiUrl);\n }\n \n providerConfig = this.ensureTokenFactory(providerConfig);\n \n debugLogger.info(\"Using explicit AI provider config\", providerConfig);\n } else {\n // Fall back to legacy Ollama settings for backward compatibility\n providerConfig = {\n type: AIProviderType.OLLAMA,\n baseUrl: settings.ollamaUrl,\n tokenFactory: () => {\n // Try multiple sources for the token\n let token = authenticationService.getToken();\n \n // If the bandit-engine's service doesn't have a token, try direct localStorage access\n if (!token) {\n token = localStorage.getItem(\"authToken\");\n }\n \n // Also try the authentication store if available\n if (!token) {\n try {\n const { useAuthenticationStore } = require(\"../../store/authenticationStore\");\n const authStore = useAuthenticationStore.getState();\n token = authStore.token;\n } catch (e) {\n // Store might not be available, that's ok\n }\n }\n \n debugLogger.info(\"AIProviderInit: Token factory called\", { \n hasToken: !!token,\n localStorage: !!localStorage.getItem(\"authToken\")\n });\n return token;\n }\n };\n debugLogger.info(\"Using legacy Ollama config\", providerConfig);\n }\n\n try {\n // First validate if the service is available\n const { createProvider } = useAIProviderStore.getState();\n \n // Try to create and validate the provider\n createProvider(providerConfig);\n \n // Test provider availability\n const provider = useAIProviderStore.getState().provider;\n if (provider) {\n try {\n await provider.validateServiceAvailability({ timeoutMs: 5000 });\n debugLogger.info(`AI Provider initialized and validated: ${providerConfig.type}`);\n } catch (validationError) {\n debugLogger.warn(`AI Provider created but validation failed:`, { error: validationError });\n // Provider is created but may not be fully available - this is ok for offline scenarios\n }\n }\n } catch (error) {\n debugLogger.error(\"Failed to initialize AI provider:\", { error });\n \n // Try to fall back to default Ollama if initial provider fails\n if (providerConfig.type !== AIProviderType.OLLAMA) {\n try {\n const fallbackConfig: AIProviderConfig = {\n type: AIProviderType.OLLAMA,\n baseUrl: settings.ollamaUrl || 'http://localhost:11434',\n tokenFactory: () => {\n // Try multiple sources for the token\n let token = authenticationService.getToken();\n \n // If the bandit-engine's service doesn't have a token, try direct localStorage access\n if (!token) {\n token = localStorage.getItem(\"authToken\");\n }\n \n // Also try the authentication store if available\n if (!token) {\n try {\n const { useAuthenticationStore } = require(\"../../store/authenticationStore\");\n const authStore = useAuthenticationStore.getState();\n token = authStore.token;\n } catch (e) {\n // Store might not be available, that's ok\n }\n }\n \n debugLogger.info(\"AIProviderInit: Fallback tokenFactory\", { \n hasToken: !!token,\n localStorage: !!localStorage.getItem(\"authToken\")\n });\n return token;\n }\n };\n const { createProvider } = useAIProviderStore.getState();\n createProvider(fallbackConfig);\n debugLogger.info(\"Fallback to Ollama provider successful\");\n } catch (fallbackError) {\n debugLogger.error(\"Failed to initialize fallback Ollama provider:\", { error: fallbackError });\n }\n } else {\n // If Ollama provider fails, try localhost as ultimate fallback\n try {\n const localFallbackConfig: AIProviderConfig = {\n type: AIProviderType.OLLAMA,\n baseUrl: 'http://localhost:11434',\n tokenFactory: () => {\n // Try multiple sources for the token\n let token = authenticationService.getToken();\n \n // If the bandit-engine's service doesn't have a token, try direct localStorage access\n if (!token) {\n token = localStorage.getItem(\"authToken\");\n }\n \n // Also try the authentication store if available\n if (!token) {\n try {\n const { useAuthenticationStore } = require(\"../../store/authenticationStore\");\n const authStore = useAuthenticationStore.getState();\n token = authStore.token;\n } catch (e) {\n // Store might not be available, that's ok\n }\n }\n \n debugLogger.info(\"AIProviderInit: Local fallback tokenFactory\", { \n hasToken: !!token,\n localStorage: !!localStorage.getItem(\"authToken\")\n });\n return token;\n }\n };\n const { createProvider } = useAIProviderStore.getState();\n createProvider(localFallbackConfig);\n debugLogger.info(\"Fallback to localhost Ollama provider successful\");\n } catch (localFallbackError) {\n debugLogger.error(\"All provider initialization attempts failed:\", { error: localFallbackError });\n }\n }\n }\n }\n\n /**\n * Switch to a different AI provider\n */\n switchProvider(config: AIProviderConfig): void {\n try {\n const normalizedConfig = this.ensureTokenFactory({ ...config });\n const { switchProvider } = useAIProviderStore.getState();\n switchProvider(normalizedConfig);\n debugLogger.info(`Switched to AI provider: ${normalizedConfig.type}`);\n } catch (error) {\n debugLogger.error(\"Failed to switch AI provider:\", { error });\n throw error;\n }\n }\n\n /**\n * Get the current provider type\n */\n getCurrentProviderType(): string | null {\n const provider = useAIProviderStore.getState().provider;\n return provider ? provider.getProviderType() : null;\n }\n\n /**\n * Check if a provider is initialized\n */\n isProviderInitialized(): boolean {\n return useAIProviderStore.getState().provider !== null;\n }\n\n private convertAnthropicConfig(config: AIProviderConfig, gatewayUrl?: string | null): AIProviderConfig {\n if (config.type !== AIProviderType.ANTHROPIC) {\n return config;\n }\n\n const defaultModel = typeof config.defaultModel === 'string' && config.defaultModel.trim()\n ? config.defaultModel.trim()\n : 'claude-3-5-sonnet-latest';\n\n const normalized: AIProviderConfig = {\n type: AIProviderType.GATEWAY,\n gatewayUrl: gatewayUrl || config.gatewayUrl || '',\n provider: 'anthropic',\n defaultModel,\n tokenFactory: config.tokenFactory\n };\n\n debugLogger.info('AI Provider Init: Converted direct Anthropic provider to gateway configuration');\n return normalized;\n }\n\n /**\n * Ensure providers that require auth have a token factory configured.\n * Handles both UI auth tokens and API key scenarios.\n */\n private ensureTokenFactory(config: AIProviderConfig): AIProviderConfig {\n if (config.type === AIProviderType.OLLAMA || config.type === AIProviderType.GATEWAY) {\n const existingFactory = config.tokenFactory;\n if (existingFactory) {\n return config;\n }\n\n // Prefer explicit API key if provided\n if (typeof config.apiKey === 'string' && config.apiKey.trim() !== '') {\n const key = config.apiKey.trim();\n config.tokenFactory = () => key;\n debugLogger.info(\"AIProviderInit: Using API key for token factory\", {\n type: config.type,\n hasKey: true\n });\n return config;\n }\n\n // Fallback to stored auth tokens (UI sessions)\n config.tokenFactory = () => {\n // Try multiple sources for the token\n let token = authenticationService.getToken();\n\n if (!token && typeof localStorage !== 'undefined') {\n try {\n token = localStorage.getItem(\"authToken\");\n } catch {\n // ignore storage errors\n }\n }\n\n if (!token) {\n try {\n const { useAuthenticationStore } = require(\"../../store/authenticationStore\");\n const authStore = useAuthenticationStore.getState();\n token = authStore.token;\n } catch {\n // Store might not be available, that's ok\n }\n }\n\n debugLogger.info(\"AIProviderInit: Token factory resolved auth token\", { \n hasToken: !!token,\n });\n return token;\n };\n }\n\n return config;\n }\n}\n\nexport const aiProviderInitService = AIProviderInitService.getInstance();\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/services/ai-provider-init.service.ts"],"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-BFD5-C74863\nconst __banditFingerprint_services_aiproviderinitservicets = 'BL-FP-DDF978-53AF';\nconst __auditTrail_services_aiproviderinitservicets = 'BL-AU-MGOIKVVR-WP87';\n// File: ai-provider-init.service.ts | Path: src/services/ai-provider-init.service.ts | Hash: bfd553af\n\nimport { useAIProviderStore } from \"../store/aiProviderStore\";\nimport { usePackageSettingsStore } from \"../store/packageSettingsStore\";\nimport { AIProviderConfig, AIProviderType } from \"./ai-provider/types/common.types\";\nimport { authenticationService } from \"./auth/authenticationService\";\nimport { debugLogger } from \"./logging/debugLogger\";\nimport indexedDBService from \"./indexedDB/indexedDBService\";\n\ntype StoredAIProviderConfig = AIProviderConfig & { id?: string };\n\n/**\n * Service to initialize AI providers based on package settings\n */\nexport class AIProviderInitService {\n private static instance: AIProviderInitService;\n\n private constructor() {}\n\n static getInstance(): AIProviderInitService {\n if (!AIProviderInitService.instance) {\n AIProviderInitService.instance = new AIProviderInitService();\n }\n return AIProviderInitService.instance;\n }\n\n /**\n * Initialize AI provider from package settings\n * Provides backward compatibility with existing Ollama settings\n */\n async initializeFromSettings(): Promise<void> {\n const settings = usePackageSettingsStore.getState().settings;\n if (!settings) {\n debugLogger.warn(\"No package settings found, cannot initialize AI provider\");\n return;\n }\n\n let providerConfig: AIProviderConfig;\n\n debugLogger.info(\"AI Provider Init: Starting initialization\", { \n hasSettings: !!settings,\n hasAiProvider: !!settings.aiProvider,\n ollamaUrl: settings.ollamaUrl\n });\n\n const isPlaygroundEnvironment =\n settings.playgroundMode === true ||\n settings.aiProvider?.type === AIProviderType.PLAYGROUND ||\n (settings.gatewayApiUrl?.toLowerCase()?.startsWith(\"playground://\") ?? false) ||\n (typeof window !== \"undefined\" && window.location.pathname.includes(\"/playground\"));\n\n // First, try to load provider configuration from IndexedDB\n if (isPlaygroundEnvironment) {\n debugLogger.info(\"AI Provider Init: Playground environment detected, bypassing saved provider config\");\n } else {\n try {\n const savedConfig = await indexedDBService.get<StoredAIProviderConfig>(\n 'banditConfig', \n 1, \n 'config', \n 'aiProvider',\n [{ name: 'config', keyPath: 'id' }]\n );\n \n if (savedConfig) {\n debugLogger.info('AI Provider Init: Found saved config in IndexedDB', { type: savedConfig.type });\n \n // Filter out the 'id' property that was added for IndexedDB storage\n const { id: _id, ...configWithoutId } = savedConfig;\n providerConfig = { ...configWithoutId };\n if (providerConfig.type === AIProviderType.ANTHROPIC) {\n providerConfig = this.convertAnthropicConfig(providerConfig, settings?.gatewayApiUrl);\n }\n\n // Ensure tokenFactory is present for providers that need it\n providerConfig = this.ensureTokenFactory(providerConfig);\n \n // Initialize the provider with saved config\n try {\n const { createProvider } = useAIProviderStore.getState();\n createProvider(providerConfig);\n \n const provider = useAIProviderStore.getState().provider;\n if (provider) {\n try {\n await provider.validateServiceAvailability({ timeoutMs: 5000 });\n debugLogger.info(`AI Provider initialized and validated from IndexedDB: ${providerConfig.type}`);\n } catch (validationError) {\n debugLogger.warn(`AI Provider created but validation failed`, { error: validationError });\n }\n }\n return; // Successfully initialized from IndexedDB\n } catch (error) {\n debugLogger.error(\"Failed to initialize saved provider config, falling back to package settings\", { error });\n }\n }\n \n debugLogger.info('AI Provider Init: No saved config found, using package settings');\n } catch (error) {\n debugLogger.warn('AI Provider Init: Failed to load from IndexedDB, using package settings', { error });\n }\n }\n\n // Fallback to package settings if no saved config found\n if (settings.aiProvider) {\n providerConfig = { ...settings.aiProvider };\n if (providerConfig.type === AIProviderType.ANTHROPIC) {\n providerConfig = this.convertAnthropicConfig(providerConfig, settings.gatewayApiUrl);\n }\n \n providerConfig = this.ensureTokenFactory(providerConfig);\n \n debugLogger.info(\"Using explicit AI provider config\", providerConfig);\n } else {\n // Fall back to legacy Ollama settings for backward compatibility\n providerConfig = {\n type: AIProviderType.OLLAMA,\n baseUrl: settings.ollamaUrl,\n tokenFactory: () => {\n // Try multiple sources for the token\n let token = authenticationService.getToken();\n \n // If the bandit-engine's service doesn't have a token, try direct localStorage access\n if (!token) {\n token = localStorage.getItem(\"authToken\");\n }\n \n // Also try the authentication store if available\n if (!token) {\n try {\n const { useAuthenticationStore } = require(\"../../store/authenticationStore\");\n const authStore = useAuthenticationStore.getState();\n token = authStore.token;\n } catch (e) {\n // Store might not be available, that's ok\n }\n }\n \n debugLogger.info(\"AIProviderInit: Token factory called\", { \n hasToken: !!token,\n localStorage: !!localStorage.getItem(\"authToken\")\n });\n return token;\n }\n };\n debugLogger.info(\"Using legacy Ollama config\", providerConfig);\n }\n\n try {\n // First validate if the service is available\n const { createProvider } = useAIProviderStore.getState();\n \n // Try to create and validate the provider\n createProvider(providerConfig);\n \n // Test provider availability\n const provider = useAIProviderStore.getState().provider;\n if (provider) {\n try {\n await provider.validateServiceAvailability({ timeoutMs: 5000 });\n debugLogger.info(`AI Provider initialized and validated: ${providerConfig.type}`);\n } catch (validationError) {\n debugLogger.warn(`AI Provider created but validation failed:`, { error: validationError });\n // Provider is created but may not be fully available - this is ok for offline scenarios\n }\n }\n } catch (error) {\n debugLogger.error(\"Failed to initialize AI provider:\", { error });\n \n // Try to fall back to default Ollama if initial provider fails\n if (providerConfig.type !== AIProviderType.OLLAMA) {\n try {\n const fallbackConfig: AIProviderConfig = {\n type: AIProviderType.OLLAMA,\n baseUrl: settings.ollamaUrl || 'http://localhost:11434',\n tokenFactory: () => {\n // Try multiple sources for the token\n let token = authenticationService.getToken();\n \n // If the bandit-engine's service doesn't have a token, try direct localStorage access\n if (!token) {\n token = localStorage.getItem(\"authToken\");\n }\n \n // Also try the authentication store if available\n if (!token) {\n try {\n const { useAuthenticationStore } = require(\"../../store/authenticationStore\");\n const authStore = useAuthenticationStore.getState();\n token = authStore.token;\n } catch (e) {\n // Store might not be available, that's ok\n }\n }\n \n debugLogger.info(\"AIProviderInit: Fallback tokenFactory\", { \n hasToken: !!token,\n localStorage: !!localStorage.getItem(\"authToken\")\n });\n return token;\n }\n };\n const { createProvider } = useAIProviderStore.getState();\n createProvider(fallbackConfig);\n debugLogger.info(\"Fallback to Ollama provider successful\");\n } catch (fallbackError) {\n debugLogger.error(\"Failed to initialize fallback Ollama provider:\", { error: fallbackError });\n }\n } else {\n // If Ollama provider fails, try localhost as ultimate fallback\n try {\n const localFallbackConfig: AIProviderConfig = {\n type: AIProviderType.OLLAMA,\n baseUrl: 'http://localhost:11434',\n tokenFactory: () => {\n // Try multiple sources for the token\n let token = authenticationService.getToken();\n \n // If the bandit-engine's service doesn't have a token, try direct localStorage access\n if (!token) {\n token = localStorage.getItem(\"authToken\");\n }\n \n // Also try the authentication store if available\n if (!token) {\n try {\n const { useAuthenticationStore } = require(\"../../store/authenticationStore\");\n const authStore = useAuthenticationStore.getState();\n token = authStore.token;\n } catch (e) {\n // Store might not be available, that's ok\n }\n }\n \n debugLogger.info(\"AIProviderInit: Local fallback tokenFactory\", { \n hasToken: !!token,\n localStorage: !!localStorage.getItem(\"authToken\")\n });\n return token;\n }\n };\n const { createProvider } = useAIProviderStore.getState();\n createProvider(localFallbackConfig);\n debugLogger.info(\"Fallback to localhost Ollama provider successful\");\n } catch (localFallbackError) {\n debugLogger.error(\"All provider initialization attempts failed:\", { error: localFallbackError });\n }\n }\n }\n }\n\n /**\n * Switch to a different AI provider\n */\n switchProvider(config: AIProviderConfig): void {\n try {\n const normalizedConfig = this.ensureTokenFactory({ ...config });\n const { switchProvider } = useAIProviderStore.getState();\n switchProvider(normalizedConfig);\n debugLogger.info(`Switched to AI provider: ${normalizedConfig.type}`);\n } catch (error) {\n debugLogger.error(\"Failed to switch AI provider:\", { error });\n throw error;\n }\n }\n\n /**\n * Get the current provider type\n */\n getCurrentProviderType(): string | null {\n const provider = useAIProviderStore.getState().provider;\n return provider ? provider.getProviderType() : null;\n }\n\n /**\n * Check if a provider is initialized\n */\n isProviderInitialized(): boolean {\n return useAIProviderStore.getState().provider !== null;\n }\n\n private convertAnthropicConfig(config: AIProviderConfig, gatewayUrl?: string | null): AIProviderConfig {\n if (config.type !== AIProviderType.ANTHROPIC) {\n return config;\n }\n\n const defaultModel = typeof config.defaultModel === 'string' && config.defaultModel.trim()\n ? config.defaultModel.trim()\n : 'claude-3-5-sonnet-latest';\n\n const normalized: AIProviderConfig = {\n type: AIProviderType.GATEWAY,\n gatewayUrl: gatewayUrl || config.gatewayUrl || '',\n provider: 'anthropic',\n defaultModel,\n tokenFactory: config.tokenFactory\n };\n\n debugLogger.info('AI Provider Init: Converted direct Anthropic provider to gateway configuration');\n return normalized;\n }\n\n /**\n * Ensure providers that require auth have a token factory configured.\n * Handles both UI auth tokens and API key scenarios.\n */\n private ensureTokenFactory(config: AIProviderConfig): AIProviderConfig {\n if (config.type === AIProviderType.OLLAMA || config.type === AIProviderType.GATEWAY) {\n const existingFactory = config.tokenFactory;\n if (existingFactory) {\n return config;\n }\n\n // Prefer explicit API key if provided\n if (typeof config.apiKey === 'string' && config.apiKey.trim() !== '') {\n const key = config.apiKey.trim();\n config.tokenFactory = () => key;\n debugLogger.info(\"AIProviderInit: Using API key for token factory\", {\n type: config.type,\n hasKey: true\n });\n return config;\n }\n\n // Fallback to stored auth tokens (UI sessions)\n config.tokenFactory = () => {\n // Try multiple sources for the token\n let token = authenticationService.getToken();\n\n if (!token && typeof localStorage !== 'undefined') {\n try {\n token = localStorage.getItem(\"authToken\");\n } catch {\n // ignore storage errors\n }\n }\n\n if (!token) {\n try {\n const { useAuthenticationStore } = require(\"../../store/authenticationStore\");\n const authStore = useAuthenticationStore.getState();\n token = authStore.token;\n } catch {\n // Store might not be available, that's ok\n }\n }\n\n debugLogger.info(\"AIProviderInit: Token factory resolved auth token\", { \n hasToken: !!token,\n });\n return token;\n };\n }\n\n return config;\n }\n}\n\nexport const aiProviderInitService = AIProviderInitService.getInstance();\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
getHighlightTree,
|
|
5
5
|
markdownSanitizeSchema,
|
|
6
6
|
renderLowlightChildren
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VIKZPBVO.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-
|
|
498
|
+
//# sourceMappingURL=chunk-KYC7CC6C.mjs.map
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-ONQMRE2G.mjs";
|
|
4
4
|
import {
|
|
5
5
|
StreamingMarkdown_default
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KYC7CC6C.mjs";
|
|
7
7
|
import {
|
|
8
8
|
useMCPToolsStore
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BN3D45E2.mjs";
|
|
10
10
|
import {
|
|
11
11
|
AddIcon,
|
|
12
12
|
ArrowDownwardIcon,
|
|
@@ -44,9 +44,8 @@ import {
|
|
|
44
44
|
useNotificationService,
|
|
45
45
|
useTTS,
|
|
46
46
|
useVoiceStore
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-VIKZPBVO.mjs";
|
|
48
48
|
import {
|
|
49
|
-
authenticationService,
|
|
50
49
|
brandingService_default,
|
|
51
50
|
detectMessageMood,
|
|
52
51
|
detectTransparency,
|
|
@@ -57,11 +56,9 @@ import {
|
|
|
57
56
|
getCurrentDateTimeContext,
|
|
58
57
|
getRandomTopicOfInterest,
|
|
59
58
|
pickDistinctRandomTopics,
|
|
60
|
-
readPersistedToken,
|
|
61
59
|
sanitizeConversationName,
|
|
62
60
|
toTitleCase,
|
|
63
61
|
useAIQueryStore,
|
|
64
|
-
useAuthenticationStore,
|
|
65
62
|
useConversationStore,
|
|
66
63
|
useConversationSyncStore,
|
|
67
64
|
useFeatureFlag,
|
|
@@ -71,7 +68,7 @@ import {
|
|
|
71
68
|
useMemoryStore,
|
|
72
69
|
useProjectStore,
|
|
73
70
|
useVectorStore
|
|
74
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-37JLV5PU.mjs";
|
|
75
72
|
import {
|
|
76
73
|
indexedDBService_default,
|
|
77
74
|
useModelStore,
|
|
@@ -79,8 +76,11 @@ import {
|
|
|
79
76
|
usePreferencesStore
|
|
80
77
|
} from "./chunk-LWHSOEPR.mjs";
|
|
81
78
|
import {
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
authenticationService,
|
|
80
|
+
readPersistedToken,
|
|
81
|
+
useAIProviderStore,
|
|
82
|
+
useAuthenticationStore
|
|
83
|
+
} from "./chunk-43MLINPL.mjs";
|
|
84
84
|
import {
|
|
85
85
|
debugLogger
|
|
86
86
|
} from "./chunk-KCI46M23.mjs";
|
|
@@ -4585,7 +4585,7 @@ import {
|
|
|
4585
4585
|
Avatar as Avatar6,
|
|
4586
4586
|
alpha as alpha6
|
|
4587
4587
|
} from "@mui/material";
|
|
4588
|
-
import { X as CloseIcon5, X as ClearIcon, Search as SearchIcon, Folder as FolderIcon4, MoreVertical as MoreVertIcon3, Trash2 as DeleteSweepIcon, Inbox as InboxIcon3, Plus as AddIcon4, Settings as SettingsIcon2, Brain as MemoryIcon } from "lucide-react";
|
|
4588
|
+
import { X as CloseIcon5, X as ClearIcon, Search as SearchIcon, Folder as FolderIcon4, MoreVertical as MoreVertIcon3, Trash2 as DeleteSweepIcon, Inbox as InboxIcon3, Plus as AddIcon4, Settings as SettingsIcon2, Brain as MemoryIcon, LogOut as LogOutIcon } from "lucide-react";
|
|
4589
4589
|
import { useTheme as useTheme10 } from "@mui/material/styles";
|
|
4590
4590
|
|
|
4591
4591
|
// src/chat/project-management-modal.tsx
|
|
@@ -6844,23 +6844,46 @@ var ConversationDrawer = ({ open, onClose }) => {
|
|
|
6844
6844
|
]
|
|
6845
6845
|
}
|
|
6846
6846
|
),
|
|
6847
|
-
user && /* @__PURE__ */
|
|
6848
|
-
|
|
6849
|
-
|
|
6850
|
-
|
|
6851
|
-
|
|
6852
|
-
|
|
6853
|
-
|
|
6854
|
-
|
|
6855
|
-
|
|
6856
|
-
|
|
6857
|
-
|
|
6858
|
-
|
|
6859
|
-
|
|
6860
|
-
|
|
6861
|
-
|
|
6862
|
-
|
|
6863
|
-
|
|
6847
|
+
user && /* @__PURE__ */ jsxs11(Fragment7, { children: [
|
|
6848
|
+
/* @__PURE__ */ jsx14(
|
|
6849
|
+
Box11,
|
|
6850
|
+
{
|
|
6851
|
+
sx: {
|
|
6852
|
+
flexShrink: 0,
|
|
6853
|
+
display: "flex",
|
|
6854
|
+
alignItems: "center",
|
|
6855
|
+
justifyContent: "center",
|
|
6856
|
+
width: 30,
|
|
6857
|
+
height: 30,
|
|
6858
|
+
borderRadius: "50%",
|
|
6859
|
+
border: `1px solid ${alpha6(theme.palette.divider, 0.8)}`,
|
|
6860
|
+
color: theme.palette.text.secondary
|
|
6861
|
+
},
|
|
6862
|
+
children: /* @__PURE__ */ jsx14(SettingsIcon2, { size: 16 })
|
|
6863
|
+
}
|
|
6864
|
+
),
|
|
6865
|
+
/* @__PURE__ */ jsx14(
|
|
6866
|
+
IconButton8,
|
|
6867
|
+
{
|
|
6868
|
+
"aria-label": "Sign out",
|
|
6869
|
+
title: "Sign out",
|
|
6870
|
+
onClick: (event) => {
|
|
6871
|
+
event.stopPropagation();
|
|
6872
|
+
authenticationService.clearToken();
|
|
6873
|
+
window.location.href = "/login";
|
|
6874
|
+
},
|
|
6875
|
+
sx: {
|
|
6876
|
+
flexShrink: 0,
|
|
6877
|
+
width: 30,
|
|
6878
|
+
height: 30,
|
|
6879
|
+
border: `1px solid ${alpha6(theme.palette.error.main, 0.4)}`,
|
|
6880
|
+
color: theme.palette.error.main,
|
|
6881
|
+
"&:hover": { bgcolor: alpha6(theme.palette.error.main, 0.1) }
|
|
6882
|
+
},
|
|
6883
|
+
children: /* @__PURE__ */ jsx14(LogOutIcon, { size: 16 })
|
|
6884
|
+
}
|
|
6885
|
+
)
|
|
6886
|
+
] })
|
|
6864
6887
|
]
|
|
6865
6888
|
}
|
|
6866
6889
|
)
|
|
@@ -6969,7 +6992,7 @@ import {
|
|
|
6969
6992
|
Avatar as Avatar7,
|
|
6970
6993
|
Chip as Chip4
|
|
6971
6994
|
} from "@mui/material";
|
|
6972
|
-
import { X as CloseIcon6, X as ClearIcon2, Search as SearchIcon2, Folder as FolderIcon5, MoreVertical as MoreVertIcon4, Trash2 as DeleteSweepIcon2, Inbox as InboxIcon4, Plus as AddIcon5, Settings as SettingsIcon3, Brain as MemoryIcon2 } from "lucide-react";
|
|
6995
|
+
import { X as CloseIcon6, X as ClearIcon2, Search as SearchIcon2, Folder as FolderIcon5, MoreVertical as MoreVertIcon4, Trash2 as DeleteSweepIcon2, Inbox as InboxIcon4, Plus as AddIcon5, Settings as SettingsIcon3, Brain as MemoryIcon2, LogOut as LogOutIcon2 } from "lucide-react";
|
|
6973
6996
|
import { useTheme as useTheme11, alpha as alpha7 } from "@mui/material/styles";
|
|
6974
6997
|
import { Fragment as Fragment8, jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
6975
6998
|
var BANDIT_AVATAR2 = "https://cdn.burtson.ai/images/bandit-head.png";
|
|
@@ -7822,23 +7845,46 @@ var EnhancedMobileConversationsModal = ({
|
|
|
7822
7845
|
}
|
|
7823
7846
|
)
|
|
7824
7847
|
] }),
|
|
7825
|
-
user && /* @__PURE__ */
|
|
7826
|
-
|
|
7827
|
-
|
|
7828
|
-
|
|
7829
|
-
|
|
7830
|
-
|
|
7831
|
-
|
|
7832
|
-
|
|
7833
|
-
|
|
7834
|
-
|
|
7835
|
-
|
|
7836
|
-
|
|
7837
|
-
|
|
7838
|
-
|
|
7839
|
-
|
|
7840
|
-
|
|
7841
|
-
|
|
7848
|
+
user && /* @__PURE__ */ jsxs12(Fragment8, { children: [
|
|
7849
|
+
/* @__PURE__ */ jsx15(
|
|
7850
|
+
Box12,
|
|
7851
|
+
{
|
|
7852
|
+
sx: {
|
|
7853
|
+
flexShrink: 0,
|
|
7854
|
+
display: "flex",
|
|
7855
|
+
alignItems: "center",
|
|
7856
|
+
justifyContent: "center",
|
|
7857
|
+
width: 30,
|
|
7858
|
+
height: 30,
|
|
7859
|
+
borderRadius: "50%",
|
|
7860
|
+
border: `1px solid ${alpha7(theme.palette.divider, 0.8)}`,
|
|
7861
|
+
color: theme.palette.text.secondary
|
|
7862
|
+
},
|
|
7863
|
+
children: /* @__PURE__ */ jsx15(SettingsIcon3, { size: 16 })
|
|
7864
|
+
}
|
|
7865
|
+
),
|
|
7866
|
+
/* @__PURE__ */ jsx15(
|
|
7867
|
+
IconButton9,
|
|
7868
|
+
{
|
|
7869
|
+
"aria-label": "Sign out",
|
|
7870
|
+
title: "Sign out",
|
|
7871
|
+
onClick: (event) => {
|
|
7872
|
+
event.stopPropagation();
|
|
7873
|
+
authenticationService.clearToken();
|
|
7874
|
+
window.location.href = "/login";
|
|
7875
|
+
},
|
|
7876
|
+
sx: {
|
|
7877
|
+
flexShrink: 0,
|
|
7878
|
+
width: 30,
|
|
7879
|
+
height: 30,
|
|
7880
|
+
border: `1px solid ${alpha7(theme.palette.error.main, 0.4)}`,
|
|
7881
|
+
color: theme.palette.error.main,
|
|
7882
|
+
"&:hover": { bgcolor: alpha7(theme.palette.error.main, 0.1) }
|
|
7883
|
+
},
|
|
7884
|
+
children: /* @__PURE__ */ jsx15(LogOutIcon2, { size: 16 })
|
|
7885
|
+
}
|
|
7886
|
+
)
|
|
7887
|
+
] })
|
|
7842
7888
|
]
|
|
7843
7889
|
}
|
|
7844
7890
|
)
|
|
@@ -10617,4 +10663,4 @@ var chat_default = Chat;
|
|
|
10617
10663
|
export {
|
|
10618
10664
|
chat_default
|
|
10619
10665
|
};
|
|
10620
|
-
//# sourceMappingURL=chunk-
|
|
10666
|
+
//# sourceMappingURL=chunk-R3HBSHLE.mjs.map
|