@burtson-labs/bandit-engine 2.0.162 → 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.
- package/README.md +7 -22
- package/dist/aiProviderStore-PEGSX4PK.mjs +9 -0
- package/dist/chat-MRDQ2WRJ.mjs +16 -0
- package/dist/chat-provider.js.map +1 -1
- package/dist/chat-provider.mjs +7 -7
- package/dist/{chunk-ZNK3ELTZ.mjs → chunk-5KBTOCQZ.mjs} +4 -4
- package/dist/chunk-5KBTOCQZ.mjs.map +1 -0
- package/dist/{chunk-Q6LXVYTC.mjs → chunk-CQJGUYRW.mjs} +2 -2
- package/dist/chunk-CQJGUYRW.mjs.map +1 -0
- package/dist/{chunk-3ACT5BTW.mjs → chunk-F32P7Q5O.mjs} +122 -232
- package/dist/chunk-F32P7Q5O.mjs.map +1 -0
- package/dist/{chunk-RUXYVMW2.mjs → chunk-HSGQXL4N.mjs} +11 -11
- package/dist/chunk-HSGQXL4N.mjs.map +1 -0
- package/dist/{chunk-47MOBOP3.mjs → chunk-IZX2J65Q.mjs} +2 -2
- package/dist/chunk-IZX2J65Q.mjs.map +1 -0
- package/dist/{chunk-ODGVCSKV.mjs → chunk-J6SWNO7Z.mjs} +6 -27
- package/dist/chunk-J6SWNO7Z.mjs.map +1 -0
- package/dist/{chunk-G5POQT2R.mjs → chunk-O6P37PFR.mjs} +4 -4
- package/dist/chunk-O6P37PFR.mjs.map +1 -0
- package/dist/{chunk-KCI46M23.mjs → chunk-OCVZVBQQ.mjs} +1 -1
- package/dist/chunk-OCVZVBQQ.mjs.map +1 -0
- package/dist/{chunk-IXIM7BNO.mjs → chunk-P4C5IRM5.mjs} +1 -1
- package/dist/chunk-P4C5IRM5.mjs.map +1 -0
- package/dist/{chunk-WQEBTH2R.mjs → chunk-TY5VL3SG.mjs} +3 -3
- package/dist/chunk-TY5VL3SG.mjs.map +1 -0
- package/dist/{chunk-YHSYHU5P.mjs → chunk-URZSIL7X.mjs} +7 -7
- package/dist/chunk-URZSIL7X.mjs.map +1 -0
- package/dist/{chunk-OGMXL7BF.mjs → chunk-VBHI4TJC.mjs} +6 -6
- package/dist/chunk-VBHI4TJC.mjs.map +1 -0
- package/dist/{chunk-R6HMLYKQ.mjs → chunk-WLNZL6SP.mjs} +5 -16
- package/dist/chunk-WLNZL6SP.mjs.map +1 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +574 -728
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +15 -31
- package/dist/index.mjs.map +1 -1
- package/dist/management/management.js +214 -352
- package/dist/management/management.js.map +1 -1
- package/dist/management/management.mjs +10 -10
- package/dist/{memoryUtils-33TZKHSQ.mjs → memoryUtils-2FVXDSS6.mjs} +1 -1
- package/dist/memoryUtils-2FVXDSS6.mjs.map +1 -0
- package/dist/modals/chat-modal/chat-modal.js.map +1 -1
- package/dist/modals/chat-modal/chat-modal.mjs +6 -6
- package/dist/modelStore-7XYYDCNC.mjs +9 -0
- package/dist/shared/custom-element.js.map +1 -1
- package/dist/shared/custom-element.mjs +1 -1
- package/docs/05_contributing.md +1 -1
- package/docs/api_reference/assets/navigation.js +1 -1
- package/docs/api_reference/assets/search.js +1 -1
- package/docs/api_reference/classes/DebugLogger.html +11 -11
- package/docs/api_reference/classes/FeatureFlagService.html +13 -13
- package/docs/api_reference/classes/NotificationService.html +10 -10
- package/docs/api_reference/classes/StreamingTTSClient.html +9 -9
- package/docs/api_reference/classes/VectorDatabaseService.html +24 -24
- package/docs/api_reference/classes/VectorMigrationService.html +8 -8
- package/docs/api_reference/classes/VoiceService.html +2 -2
- package/docs/api_reference/enums/TTSState.html +2 -2
- package/docs/api_reference/functions/Chat.html +1 -1
- package/docs/api_reference/functions/ChatModal.html +1 -1
- package/docs/api_reference/functions/ChatProvider.html +1 -1
- package/docs/api_reference/functions/FeatureFlagProvider.html +1 -1
- package/docs/api_reference/functions/FeedbackButton.html +1 -1
- package/docs/api_reference/functions/FeedbackModal.html +1 -1
- package/docs/api_reference/functions/InterestsEditor.html +5 -0
- package/docs/api_reference/functions/Management.html +1 -1
- package/docs/api_reference/functions/NotificationProvider.html +1 -1
- package/docs/api_reference/functions/SubscriptionExpiredGuard.html +1 -1
- package/docs/api_reference/functions/SubscriptionExpiredModal.html +1 -1
- package/docs/api_reference/functions/defineCustomElement.html +1 -1
- package/docs/api_reference/functions/getCriticalConfig.html +2 -1
- package/docs/api_reference/functions/getFeatureMatrix.html +1 -1
- package/docs/api_reference/functions/getStreamingTTSClient.html +1 -1
- package/docs/api_reference/functions/getSystemConstants.html +2 -1
- package/docs/api_reference/functions/getTTSState.html +1 -1
- package/docs/api_reference/functions/handleHttpError.html +1 -1
- package/docs/api_reference/functions/handleSubscriptionUpgrade.html +1 -1
- package/docs/api_reference/functions/handleValidationError.html +1 -1
- package/docs/api_reference/functions/initializeCoreSystem.html +2 -1
- package/docs/api_reference/functions/isWorkspaceAdminRole.html +6 -0
- package/docs/api_reference/functions/pauseTTS.html +1 -1
- package/docs/api_reference/functions/previewTierUpgrade.html +1 -1
- package/docs/api_reference/functions/resolveManagementSections.html +2 -0
- package/docs/api_reference/functions/resumeTTS.html +1 -1
- package/docs/api_reference/functions/showInfoNotification.html +1 -1
- package/docs/api_reference/functions/showSuccessNotification.html +1 -1
- package/docs/api_reference/functions/speakWithStreaming.html +1 -1
- package/docs/api_reference/functions/stopTTS.html +1 -1
- package/docs/api_reference/functions/syncSubscriptionWithAPI.html +1 -1
- package/docs/api_reference/functions/updateSubscriptionTier.html +1 -1
- package/docs/api_reference/functions/useFeatureFlag.html +1 -1
- package/docs/api_reference/functions/useFeatureVisibility.html +1 -1
- package/docs/api_reference/functions/useFeatures.html +1 -1
- package/docs/api_reference/functions/useGatewayHealth.html +1 -1
- package/docs/api_reference/functions/useGatewayMemory.html +1 -1
- package/docs/api_reference/functions/useGatewayModels.html +1 -1
- package/docs/api_reference/functions/useGlobalTTS.html +1 -1
- package/docs/api_reference/functions/useManagementAccess.html +2 -0
- package/docs/api_reference/functions/useNotification.html +1 -1
- package/docs/api_reference/functions/useNotificationService.html +1 -1
- package/docs/api_reference/functions/useTTS.html +1 -1
- package/docs/api_reference/functions/useVectorStore.html +1 -1
- package/docs/api_reference/functions/useVoiceStore.html +2 -2
- package/docs/api_reference/functions/useVoices.html +1 -1
- package/docs/api_reference/functions/validateEnvironment.html +2 -1
- package/docs/api_reference/functions/validateSystemIntegrity.html +2 -1
- package/docs/api_reference/index.html +219 -155
- package/docs/api_reference/interfaces/AIChatRequest.html +2 -2
- package/docs/api_reference/interfaces/AIChatResponse.html +2 -2
- package/docs/api_reference/interfaces/AIGenerateRequest.html +2 -2
- package/docs/api_reference/interfaces/AIGenerateResponse.html +2 -2
- package/docs/api_reference/interfaces/AIMessage.html +2 -2
- package/docs/api_reference/interfaces/AIModel.html +2 -2
- package/docs/api_reference/interfaces/AIProviderConfig.html +5 -2
- package/docs/api_reference/interfaces/ChatConfig.html +3 -3
- package/docs/api_reference/interfaces/ChatModalProps.html +3 -3
- package/docs/api_reference/interfaces/CreateMemoryOptions.html +2 -2
- package/docs/api_reference/interfaces/FeatureEvaluation.html +7 -7
- package/docs/api_reference/interfaces/FeatureFlagConfig.html +9 -9
- package/docs/api_reference/interfaces/FeatureFlagContextValue.html +8 -8
- package/docs/api_reference/interfaces/FeatureFlagProviderProps.html +2 -2
- package/docs/api_reference/interfaces/FeedbackButtonProps.html +10 -10
- package/docs/api_reference/interfaces/FeedbackCategories.html +2 -2
- package/docs/api_reference/interfaces/FeedbackModalProps.html +2 -2
- package/docs/api_reference/interfaces/FeedbackPriorities.html +2 -2
- package/docs/api_reference/interfaces/FeedbackRequest.html +2 -2
- package/docs/api_reference/interfaces/FeedbackResponse.html +2 -2
- package/docs/api_reference/interfaces/FileUploadResult.html +2 -2
- package/docs/api_reference/interfaces/GatewayChatRequest.html +3 -2
- package/docs/api_reference/interfaces/GatewayChatResponse.html +2 -2
- package/docs/api_reference/interfaces/GatewayContract.html +2 -2
- package/docs/api_reference/interfaces/GatewayGenerateRequest.html +2 -2
- package/docs/api_reference/interfaces/GatewayGenerateResponse.html +2 -2
- package/docs/api_reference/interfaces/GatewayHealthResponse.html +2 -2
- package/docs/api_reference/interfaces/GatewayMemoryRecord.html +2 -2
- package/docs/api_reference/interfaces/GatewayMemoryResponse.html +2 -2
- package/docs/api_reference/interfaces/GatewayMessage.html +2 -2
- package/docs/api_reference/interfaces/GatewayMessageContent.html +2 -2
- package/docs/api_reference/interfaces/GatewayModel.html +2 -2
- package/docs/api_reference/interfaces/GatewayModelsResponse.html +2 -2
- package/docs/api_reference/interfaces/ManagementAccess.html +5 -0
- package/docs/api_reference/interfaces/ManagementAccessInput.html +5 -0
- package/docs/api_reference/interfaces/ManagementLink.html +7 -0
- package/docs/api_reference/interfaces/ManagementProps.html +22 -0
- package/docs/api_reference/interfaces/ManagementSectionDef.html +10 -0
- package/docs/api_reference/interfaces/MemorySearchFilters.html +2 -2
- package/docs/api_reference/interfaces/MigrationProgress.html +2 -2
- package/docs/api_reference/interfaces/MigrationStatus.html +2 -2
- package/docs/api_reference/interfaces/NotificationConfig.html +2 -2
- package/docs/api_reference/interfaces/NotificationContextType.html +2 -2
- package/docs/api_reference/interfaces/NotificationProviderProps.html +2 -2
- package/docs/api_reference/interfaces/PackageSettings.html +11 -2
- package/docs/api_reference/interfaces/SearchOptions.html +2 -2
- package/docs/api_reference/interfaces/SearchResult.html +2 -2
- package/docs/api_reference/interfaces/SubscriptionExpiredGuardProps.html +2 -2
- package/docs/api_reference/interfaces/SubscriptionExpiredModalProps.html +2 -2
- package/docs/api_reference/interfaces/TTSOptions.html +2 -2
- package/docs/api_reference/interfaces/TTSProgress.html +2 -2
- package/docs/api_reference/interfaces/TrialUsage.html +2 -2
- package/docs/api_reference/interfaces/UploadRequest.html +3 -3
- package/docs/api_reference/interfaces/UseTTSReturn.html +2 -2
- package/docs/api_reference/interfaces/VectorDocument.html +2 -2
- package/docs/api_reference/interfaces/VectorMemory.html +2 -2
- package/docs/api_reference/interfaces/VectorMemoryMetadata.html +2 -2
- package/docs/api_reference/interfaces/VectorStoreStatus.html +2 -2
- package/docs/api_reference/interfaces/VoiceModelsResponse.html +2 -2
- package/docs/api_reference/interfaces/VoiceState.html +2 -2
- package/docs/api_reference/media/PROTECTION-NOTICE.md +6 -55
- package/docs/api_reference/media/README.md +20 -1
- package/docs/api_reference/modules.html +18 -6
- package/docs/api_reference/types/FeatureKey.html +1 -1
- package/docs/api_reference/types/FeatureMatrix.html +1 -1
- package/docs/api_reference/types/GatewayQueryOptions.html +1 -1
- package/docs/api_reference/types/LogContext.html +1 -1
- package/docs/api_reference/types/ManagementRequest.html +1 -0
- package/docs/api_reference/types/ManagementSectionId.html +2 -0
- package/docs/api_reference/types/SubscriptionTier.html +1 -1
- package/docs/api_reference/variables/DEFAULT_TIER_FEATURES.html +1 -1
- package/docs/api_reference/variables/FeatureFlagContext.html +1 -1
- package/docs/api_reference/variables/MANAGEMENT_SECTIONS.html +1 -0
- package/docs/api_reference/variables/OSS_DEFAULT_FEATURES.html +1 -1
- package/docs/api_reference/variables/SYSTEM_FLAGS.html +2 -1
- package/docs/api_reference/variables/authenticationService.html +1 -1
- package/docs/api_reference/variables/debugLogger-1.html +1 -1
- package/docs/api_reference/variables/featureFlagService-1.html +1 -1
- package/docs/api_reference/variables/notificationService-1.html +1 -1
- package/docs/api_reference/variables/vectorDatabaseService-1.html +1 -1
- package/docs/api_reference/variables/vectorMigrationService-1.html +1 -1
- package/docs/api_reference/variables/voiceService-1.html +1 -1
- package/package.json +1 -1
- package/dist/aiProviderStore-JOB2H4LP.mjs +0 -9
- package/dist/chat-LB6UEEEW.mjs +0 -16
- package/dist/chunk-3ACT5BTW.mjs.map +0 -1
- package/dist/chunk-47MOBOP3.mjs.map +0 -1
- package/dist/chunk-G5POQT2R.mjs.map +0 -1
- package/dist/chunk-IXIM7BNO.mjs.map +0 -1
- package/dist/chunk-KCI46M23.mjs.map +0 -1
- package/dist/chunk-ODGVCSKV.mjs.map +0 -1
- package/dist/chunk-OGMXL7BF.mjs.map +0 -1
- package/dist/chunk-Q6LXVYTC.mjs.map +0 -1
- package/dist/chunk-R6HMLYKQ.mjs.map +0 -1
- package/dist/chunk-RUXYVMW2.mjs.map +0 -1
- package/dist/chunk-WQEBTH2R.mjs.map +0 -1
- package/dist/chunk-YHSYHU5P.mjs.map +0 -1
- package/dist/chunk-ZNK3ELTZ.mjs.map +0 -1
- package/dist/memoryUtils-33TZKHSQ.mjs.map +0 -1
- package/dist/modelStore-FGUGOWTL.mjs +0 -9
- package/docs/api_reference/media/PROTECTION-README.md +0 -39
- /package/dist/{aiProviderStore-JOB2H4LP.mjs.map → aiProviderStore-PEGSX4PK.mjs.map} +0 -0
- /package/dist/{chat-LB6UEEEW.mjs.map → chat-MRDQ2WRJ.mjs.map} +0 -0
- /package/dist/{modelStore-FGUGOWTL.mjs.map → modelStore-7XYYDCNC.mjs.map} +0 -0
|
@@ -5,34 +5,68 @@
|
|
|
5
5
|
<img src="https://cdn.burtson.ai/logos/burtson-labs-logo.png" alt="Burtson Labs Logo" width="120" style="width: 120px !important; max-width: 120px !important; height: auto; display: inline-block;" />
|
|
6
6
|
</picture>
|
|
7
7
|
</a>
|
|
8
|
-
<a id="md:bandit-engine
|
|
8
|
+
<a id="md:bandit-engine-" class="tsd-anchor"></a><h1 class="tsd-anchor-link">Bandit Engine <img src="https://icons.burtson.ai/svg-accent/zap.svg" width="18" align="center" alt="" /><a href="#md:bandit-engine-" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1><p>An AI chat toolkit built for speed, design, and control. Power branded AI assistants with battle-tested React components and a secure gateway contract.</p>
|
|
9
9
|
<p><a href="https://www.npmjs.com/package/@burtson-labs/bandit-engine" target="_blank" class="external"><img src="https://img.shields.io/npm/v/%40burtson-labs%2Fbandit-engine?logo=npm&color=cb3837" alt="npm"></a>
|
|
10
10
|
<a href="https://banditailabs.com/npm-package" target="_blank" class="external"><img src="https://img.shields.io/badge/docs-banditailabs.com%2Fnpm--package-0C7BD4" alt="Docs"></a>
|
|
11
11
|
<a href="https://banditailabs.com/" target="_blank" class="external"><img src="https://img.shields.io/badge/live%20demo-banditailabs.com%2Fchat-7F56D9" alt="Live Demo"></a>
|
|
12
12
|
<a href="https://www.typescriptlang.org/" target="_blank" class="external"><img src="https://img.shields.io/badge/TypeScript-5.x-3178c6?logo=typescript&logoColor=white" alt="TypeScript"></a>
|
|
13
13
|
<a href="./LICENSE"><img src="https://img.shields.io/badge/License-BUSL--1.1-red" alt="License: BUSL-1.1"></a></p>
|
|
14
14
|
<a id="md:features" class="tsd-anchor"></a><h2 class="tsd-anchor-link">Features<a href="#md:features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
|
|
15
|
-
<li
|
|
16
|
-
<li
|
|
17
|
-
<li
|
|
18
|
-
<li
|
|
19
|
-
<li
|
|
20
|
-
</ul>
|
|
15
|
+
<li>Plug-and-play React chat, modal, and management surfaces</li>
|
|
16
|
+
<li>Memory, searchable knowledge, and provider switching behind a secure gateway</li>
|
|
17
|
+
<li>Full MUI theming, dark mode, and branding controls out of the box</li>
|
|
18
|
+
<li>Multimodal support (voice, images, documents) with Bandit AI, Ollama, OpenAI, Azure OpenAI, Anthropic, and xAI today — tell us which providers you need next so we can prioritize them</li>
|
|
19
|
+
<li>CLI scaffolding, sample gateway, and docs to launch in minutes</li>
|
|
20
|
+
</ul>
|
|
21
|
+
<p>Bandit keeps confidentiality, integrity, and availability front and center: data stays within your routes, answers stay auditable, and the UI falls back gracefully when a provider is unavailable.</p>
|
|
22
|
+
<a id="md:bandit-package-ecosystem" class="tsd-anchor"></a><h2 class="tsd-anchor-link">Bandit package ecosystem<a href="#md:bandit-package-ecosystem" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>This package is the core React engine. Related packages:</p>
|
|
23
|
+
<table>
|
|
24
|
+
<thead>
|
|
25
|
+
<tr>
|
|
26
|
+
<th>Package</th>
|
|
27
|
+
<th>Purpose</th>
|
|
28
|
+
<th>Install weight</th>
|
|
29
|
+
</tr>
|
|
30
|
+
</thead>
|
|
31
|
+
<tbody>
|
|
32
|
+
<tr>
|
|
33
|
+
<td><code>@burtson-labs/bandit-engine</code></td>
|
|
34
|
+
<td>React chat, modal, and management UI — this package</td>
|
|
35
|
+
<td>Full</td>
|
|
36
|
+
</tr>
|
|
37
|
+
<tr>
|
|
38
|
+
<td><a href="https://banditailabs.com/npm-package" target="_blank" class="external"><code>@burtson-labs/bandit-cli</code></a></td>
|
|
39
|
+
<td>Quickstart scaffolding CLI — <code>npx @burtson-labs/bandit-cli create</code></td>
|
|
40
|
+
<td>Minimal (Node.js only)</td>
|
|
41
|
+
</tr>
|
|
42
|
+
<tr>
|
|
43
|
+
<td><a href="https://banditailabs.com/npm-package" target="_blank" class="external"><code>@burtson-labs/bandit-themes</code></a></td>
|
|
44
|
+
<td>MUI theme pack — use Bandit design tokens without the engine</td>
|
|
45
|
+
<td>MUI only</td>
|
|
46
|
+
</tr>
|
|
47
|
+
<tr>
|
|
48
|
+
<td><a href="https://banditailabs.com/npm-package" target="_blank" class="external"><code>@burtson-labs/bandit-types</code></a></td>
|
|
49
|
+
<td>Gateway contract type definitions — type your own gateway or server</td>
|
|
50
|
+
<td>Zero runtime deps</td>
|
|
51
|
+
</tr>
|
|
52
|
+
</tbody>
|
|
53
|
+
</table>
|
|
21
54
|
<a id="md:quick-links" class="tsd-anchor"></a><h2 class="tsd-anchor-link">Quick Links<a href="#md:quick-links" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
|
|
22
|
-
<li
|
|
23
|
-
<li
|
|
24
|
-
<li
|
|
25
|
-
<li
|
|
55
|
+
<li>Full docs: <a href="https://banditailabs.com/npm-package" target="_blank" class="external">banditailabs.com/npm-package</a> (mirrors <code>/docs</code> in this repo)</li>
|
|
56
|
+
<li>Live demo with OAuth sign-in: <a href="https://banditailabs.com/" target="_blank" class="external">banditailabs.com</a></li>
|
|
57
|
+
<li>Playground (no auth required): <a href="https://banditailabs.com/playground" target="_blank" class="external">banditailabs.com/playground</a></li>
|
|
58
|
+
<li>Sample gateway: <a href="media/README.md"><code>examples/gateway-node</code></a></li>
|
|
26
59
|
</ul>
|
|
27
60
|
<a id="md:quick-start" class="tsd-anchor"></a><h2 class="tsd-anchor-link">Quick Start<a href="#md:quick-start" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="md:cli-scaffold" class="tsd-anchor"></a><h3 class="tsd-anchor-link">CLI Scaffold<a href="#md:cli-scaffold" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Want a working playground instantly? Scaffold a Bandit app and gateway in one command:</p>
|
|
28
|
-
<pre><code class="bash"><span class="hl-0">npx</span><span class="hl-1"> </span><span class="hl-2">@burtson-labs/bandit-
|
|
61
|
+
<pre><code class="bash"><span class="hl-0">npx</span><span class="hl-1"> </span><span class="hl-2">@burtson-labs/bandit-cli</span><span class="hl-1"> </span><span class="hl-2">create</span><span class="hl-1"> </span><span class="hl-2">my-bandit-app</span>
|
|
29
62
|
</code><button type="button">Copy</button></pre>
|
|
30
63
|
|
|
31
64
|
<p><img src="https://cdn.burtson.ai/images/cli-quickstart.jpg" alt="Bandit CLI quickstart walkthrough"></p>
|
|
32
65
|
<p>What you get out of the box:</p>
|
|
33
66
|
<ul>
|
|
34
67
|
<li>Vite + React project wired with <code>Chat</code>, <code>ChatModal</code>, and <code>ChatProvider</code></li>
|
|
35
|
-
<li>Express gateway that proxies OpenAI or Ollama behind <code>/api</code></li>
|
|
68
|
+
<li>Express gateway that proxies Bandit AI, OpenAI, Azure OpenAI, Anthropic, xAI, or Ollama behind <code>/api</code></li>
|
|
69
|
+
<li>Next.js App Router gateway scaffold (in <code>server/next-app/</code>) ready to copy into a Next project</li>
|
|
36
70
|
<li>Branding + persona config in <code>public/config.json</code>, ready for your logo or prompts</li>
|
|
37
71
|
</ul>
|
|
38
72
|
<p>Customize the output with options such as:</p>
|
|
@@ -44,10 +78,10 @@
|
|
|
44
78
|
<li><code>--force</code> to overwrite a non-empty directory</li>
|
|
45
79
|
</ul>
|
|
46
80
|
<blockquote>
|
|
47
|
-
<p
|
|
81
|
+
<p>The generated project installs directly from <code>https://registry.npmjs.org/</code> — no GitHub npm token is required once the package is public.</p>
|
|
48
82
|
</blockquote>
|
|
49
83
|
<blockquote>
|
|
50
|
-
<p
|
|
84
|
+
<p>The scaffolded gateway focuses on Bandit AI/OpenAI/xAI/Ollama chat and model discovery. All advanced routes (file storage uploads, vector embedding, voice, MCP, etc.) are generated as <code>501</code> placeholders so you can wire them to your own infrastructure. Implement the contracts below before turning on those features in production.</p>
|
|
51
85
|
</blockquote>
|
|
52
86
|
<p>Check out the <a href="media/05_cli_quickstart.md">CLI quick start guide</a> for the full walkthrough, option matrix, and project anatomy.</p>
|
|
53
87
|
<a id="md:cli-options" class="tsd-anchor"></a><h3 class="tsd-anchor-link">CLI Options<a href="#md:cli-options" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><table>
|
|
@@ -94,7 +128,7 @@
|
|
|
94
128
|
<li><strong>What’s simulated:</strong> Responses come from canned scripts – no external API keys, tokens, or backend required.</li>
|
|
95
129
|
</ul>
|
|
96
130
|
<p>The playground is ideal for product demos, initial stakeholder reviews, or QA before you connect real providers. When you’re ready to go live, swap the provider back to your gateway for production traffic.</p>
|
|
97
|
-
<a id="md
|
|
131
|
+
<a id="md:-getting-started--plug--play-ai" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/wrench.svg" width="18" align="center" alt="" /> Getting Started – Plug & Play AI<a href="#md:-getting-started--plug--play-ai" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Bandit ships with responsive layouts baked in — the chat surface, management console, and modal all collapse gracefully on phones and tablets. Install it inside a Vite project and you can ship a polished PWA: the package works offline when cached, supports mobile nav patterns, and plays nicely with add-to-home-screen flows.</p>
|
|
98
132
|
<ol>
|
|
99
133
|
<li><strong>Add a config.json</strong> to your public folder (or host it on a CDN) and point <code>brandingConfigUrl</code> at it:</li>
|
|
100
134
|
</ol>
|
|
@@ -106,14 +140,14 @@
|
|
|
106
140
|
<ol start="2">
|
|
107
141
|
<li><strong>Wrap your entire app with <code>ChatProvider</code> to enable Bandit features globally:</strong></li>
|
|
108
142
|
</ol>
|
|
109
|
-
<pre><code class="tsx"><span class="hl-4">import</span><span class="hl-1"> </span><span class="hl-5">React</span><span class="hl-1"> </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"react"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> </span><span class="hl-5">ReactDOM</span><span class="hl-1"> </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"react-dom/client"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> </span><span class="hl-5">App</span><span class="hl-1"> </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"./App"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">CssBaseline</span><span class="hl-1">, </span><span class="hl-5">ThemeProvider</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"@mui/material"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">banditDarkTheme</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"./theme/banditTheme"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">AppInitializer</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"./app-initializer"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">ChatProvider</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"@burtson-labs/bandit-engine"</span><span class="hl-1">;</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">chatPackageSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-8">// New Gateway Provider Configuration (Recommended)</span><br/><span class="hl-1"> </span><span class="hl-5">aiProvider:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">type:</span><span class="hl-1"> </span><span class="hl-2">"gateway"</span><span class="hl-1"> </span><span class="hl-4">as</span><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-4">import</span><span class="hl-1">.</span><span class="hl-5">meta</span><span class="hl-1">.</span><span class="hl-5">env</span><span class="hl-1">.</span><span class="hl-7">VITE_GATEWAY_API_URL</span><span class="hl-1">!,</span><br/><span class="hl-1"> </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">"
|
|
143
|
+
<pre><code class="tsx"><span class="hl-4">import</span><span class="hl-1"> </span><span class="hl-5">React</span><span class="hl-1"> </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"react"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> </span><span class="hl-5">ReactDOM</span><span class="hl-1"> </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"react-dom/client"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> </span><span class="hl-5">App</span><span class="hl-1"> </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"./App"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">CssBaseline</span><span class="hl-1">, </span><span class="hl-5">ThemeProvider</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"@mui/material"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">banditDarkTheme</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"./theme/banditTheme"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">AppInitializer</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"./app-initializer"</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">ChatProvider</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">"@burtson-labs/bandit-engine"</span><span class="hl-1">;</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">chatPackageSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-8">// New Gateway Provider Configuration (Recommended)</span><br/><span class="hl-1"> </span><span class="hl-5">aiProvider:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">type:</span><span class="hl-1"> </span><span class="hl-2">"gateway"</span><span class="hl-1"> </span><span class="hl-4">as</span><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-4">import</span><span class="hl-1">.</span><span class="hl-5">meta</span><span class="hl-1">.</span><span class="hl-5">env</span><span class="hl-1">.</span><span class="hl-7">VITE_GATEWAY_API_URL</span><span class="hl-1">!,</span><br/><span class="hl-1"> </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">"bandit"</span><span class="hl-1"> </span><span class="hl-8">// Backend: bandit, openai, azure-openai, anthropic, xai, ollama</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-8">// Direct Ollama configuration (development only)</span><br/><span class="hl-1"> </span><span class="hl-8">// ollamaUrl: import.meta.env.VITE_OLLAMA_URL!,</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-8">// Model Configuration</span><br/><span class="hl-1"> </span><span class="hl-5">defaultModel:</span><span class="hl-1"> </span><span class="hl-4">import</span><span class="hl-1">.</span><span class="hl-5">meta</span><span class="hl-1">.</span><span class="hl-5">env</span><span class="hl-1">.</span><span class="hl-7">VITE_DEFAULT_MODEL</span><span class="hl-1">!,</span><br/><span class="hl-1"> </span><span class="hl-5">fallbackModel:</span><span class="hl-1"> </span><span class="hl-4">import</span><span class="hl-1">.</span><span class="hl-5">meta</span><span class="hl-1">.</span><span class="hl-5">env</span><span class="hl-1">.</span><span class="hl-7">VITE_FALLBACK_MODEL</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-5">gatewayApiUrl:</span><span class="hl-1"> </span><span class="hl-4">import</span><span class="hl-1">.</span><span class="hl-5">meta</span><span class="hl-1">.</span><span class="hl-5">env</span><span class="hl-1">.</span><span class="hl-7">VITE_GATEWAY_API_URL</span><span class="hl-1">!,</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-8">// Branding and optional overrides</span><br/><span class="hl-1"> </span><span class="hl-5">brandingConfigUrl:</span><span class="hl-1"> </span><span class="hl-2">"/config.json"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-8">// fileStorageApiUrl: import.meta.env.VITE_FILE_STORAGE_API_URL,</span><br/><span class="hl-1"> </span><span class="hl-8">// homeUrl: "https://yourapp.com",</span><br/><span class="hl-1"> </span><span class="hl-8">// feedbackEmail: "feedback@yourapp.com",</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-5">ReactDOM</span><span class="hl-1">.</span><span class="hl-0">createRoot</span><span class="hl-1">(</span><span class="hl-5">document</span><span class="hl-1">.</span><span class="hl-0">getElementById</span><span class="hl-1">(</span><span class="hl-2">"root"</span><span class="hl-1">)!).</span><span class="hl-0">render</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-10">React.StrictMode</span><span class="hl-9">></span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-10">ThemeProvider</span><span class="hl-1"> </span><span class="hl-11">theme</span><span class="hl-1">=</span><span class="hl-6">{</span><span class="hl-5">banditDarkTheme</span><span class="hl-6">}</span><span class="hl-9">></span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-10">CssBaseline</span><span class="hl-1"> </span><span class="hl-9">/></span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-10">AppInitializer</span><span class="hl-1"> </span><span class="hl-9">/></span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-10">ChatProvider</span><span class="hl-1"> </span><span class="hl-11">packageSettings</span><span class="hl-1">=</span><span class="hl-6">{</span><span class="hl-5">chatPackageSettings</span><span class="hl-6">}</span><span class="hl-9">></span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-10">App</span><span class="hl-1"> </span><span class="hl-9">/></span><br/><span class="hl-1"> </span><span class="hl-9"></</span><span class="hl-10">ChatProvider</span><span class="hl-9">></span><br/><span class="hl-1"> </span><span class="hl-9"></</span><span class="hl-10">ThemeProvider</span><span class="hl-9">></span><br/><span class="hl-1"> </span><span class="hl-9"></</span><span class="hl-10">React.StrictMode</span><span class="hl-9">></span><br/><span class="hl-1">);</span>
|
|
110
144
|
</code><button type="button">Copy</button></pre>
|
|
111
145
|
|
|
112
146
|
<blockquote>
|
|
113
|
-
<p
|
|
147
|
+
<p><img src="https://icons.burtson.ai/svg-accent/rocket.svg" width="18" align="center" alt="" /> Within minutes, you'll have a fully functional chat interface that can read, speak, and reason – all brandable, themeable, and extensible.</p>
|
|
114
148
|
</blockquote>
|
|
115
|
-
<a id="md
|
|
116
|
-
<pre><code class="tsx"><span class="hl-8">// Most
|
|
149
|
+
<a id="md:-quick-provider-setup" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/refresh.svg" width="18" align="center" alt="" /> Quick Provider Setup<a href="#md:-quick-provider-setup" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p><strong>Option 1: Gateway Provider (Recommended)</strong></p>
|
|
150
|
+
<pre><code class="tsx"><span class="hl-8">// Most controlled - all traffic flows through your gateway</span><br/><span class="hl-8">// Your gateway can be built in ANY language: Node.js, Python, .NET, Java, PHP, Go, etc.</span><br/><span class="hl-12">aiProvider</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-12">type</span><span class="hl-1">: </span><span class="hl-2">"gateway"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-12">gatewayUrl</span><span class="hl-1">: </span><span class="hl-2">"https://your-api-gateway.com"</span><span class="hl-1">, </span><span class="hl-8">// Your backend API</span><br/><span class="hl-1"> </span><span class="hl-12">provider</span><span class="hl-1">: </span><span class="hl-2">"bandit"</span><span class="hl-1"> </span><span class="hl-8">// Specify which AI provider to use (bandit, openai, azure-openai, anthropic, xai, ollama)</span><br/><span class="hl-1">}</span>
|
|
117
151
|
</code><button type="button">Copy</button></pre>
|
|
118
152
|
|
|
119
153
|
<p><strong>Option 2: Direct Provider (Development)</strong></p>
|
|
@@ -132,10 +166,10 @@
|
|
|
132
166
|
<li><strong>Chat & text generation</strong>
|
|
133
167
|
<ul>
|
|
134
168
|
<li><code>POST /api/chat/completions</code> — default provider routing</li>
|
|
135
|
-
<li><code>POST /api/{provider}/chat/completions</code> — provider-specific routing (e.g. <code>openai</code>, <code>azure-openai</code>, <code>anthropic</code>)</li>
|
|
169
|
+
<li><code>POST /api/{provider}/chat/completions</code> — provider-specific routing (e.g. <code>bandit</code>, <code>openai</code>, <code>azure-openai</code>, <code>anthropic</code>, <code>xai</code>)</li>
|
|
136
170
|
<li><code>POST /api/ollama/chat</code> — native Ollama chat format</li>
|
|
137
171
|
<li><code>POST /api/generate</code> — non-chat generation (conversation starters, summaries, etc.)</li>
|
|
138
|
-
<li><code>POST /api/{provider}/generate</code> — same contract, but scoped per provider (required for conversation starters to respect OpenAI
|
|
172
|
+
<li><code>POST /api/{provider}/generate</code> — same contract, but scoped per provider (required for conversation starters to respect Bandit/OpenAI/Azure routing)</li>
|
|
139
173
|
</ul>
|
|
140
174
|
</li>
|
|
141
175
|
<li><strong>Knowledge & vector search</strong> (required for memories, knowledge management, and MCP document tools)
|
|
@@ -165,10 +199,11 @@
|
|
|
165
199
|
</li>
|
|
166
200
|
</ul>
|
|
167
201
|
<blockquote>
|
|
168
|
-
<p><strong
|
|
202
|
+
<p><strong><img src="https://icons.burtson.ai/svg-accent/alert-triangle.svg" width="16" align="center" alt="" /> Important:</strong> The Bandit Engine automatically routes to provider-specific endpoints:</p>
|
|
169
203
|
<ul>
|
|
204
|
+
<li><strong>Bandit AI</strong> → <code>/api/bandit/chat/completions</code> (OpenAI format, token or API key)</li>
|
|
170
205
|
<li><strong>Ollama</strong> → <code>/api/ollama/chat</code> (native Ollama format)</li>
|
|
171
|
-
<li><strong>OpenAI/Azure/Anthropic</strong> → <code>/api/{provider}/chat/completions</code> (OpenAI format)</li>
|
|
206
|
+
<li><strong>OpenAI/Azure/xAI/Anthropic</strong> → <code>/api/{provider}/chat/completions</code> (OpenAI format)</li>
|
|
172
207
|
<li><strong>TTS/STT</strong> → Technology-agnostic endpoints that work with any backend implementation</li>
|
|
173
208
|
</ul>
|
|
174
209
|
</blockquote>
|
|
@@ -197,7 +232,7 @@ OLLAMA_URL=http://localhost:11434 # or the remote daemon address
|
|
|
197
232
|
<p><strong>Gateway tip</strong><br>
|
|
198
233
|
Set <code>VITE_DEFAULT_MODEL</code> / <code>VITE_FALLBACK_MODEL</code> to the exact Ollama model tags you have available (<code>gemma</code>, <code>llava</code>, <code>moondream</code>, or your own custom builds). Bandit automatically detects multimodal Ollama models, so using <code>llava</code>, <code>moondream</code>, or other vision-capable variants enables image understanding with no extra code.</p>
|
|
199
234
|
</blockquote>
|
|
200
|
-
<a id="md
|
|
235
|
+
<a id="md:-voice-services-ttsstt" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/mic.svg" width="18" align="center" alt="" /> Voice Services (TTS/STT)<a href="#md:-voice-services-ttsstt" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The Bandit Engine supports Text-to-Speech (TTS) and Speech-to-Text (STT) through your gateway API. These services are <strong>technology-agnostic</strong> - you can implement them using any backend technology:</p>
|
|
201
236
|
<p><strong>TTS Endpoint (<code>POST /api/tts</code>)</strong></p>
|
|
202
237
|
<ul>
|
|
203
238
|
<li><strong>Input</strong>: <code>{ text: string, voice?: string, speed?: number }</code></li>
|
|
@@ -228,7 +263,46 @@ Set <code>VITE_DEFAULT_MODEL</code> / <code>VITE_FALLBACK_MODEL</code> to the ex
|
|
|
228
263
|
<li>Build with <code>tsup</code>.</li>
|
|
229
264
|
</ul>
|
|
230
265
|
<hr>
|
|
231
|
-
<a id="md
|
|
266
|
+
<a id="md:-compatibility" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/badge-check.svg" width="18" align="center" alt="" /> Compatibility<a href="#md:-compatibility" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>What each release is tested against. <code>scripts/check-consumer.sh</code> packs the build and loads it in a fresh app with these versions.</p>
|
|
267
|
+
<table>
|
|
268
|
+
<thead>
|
|
269
|
+
<tr>
|
|
270
|
+
<th>Host</th>
|
|
271
|
+
<th>Supported</th>
|
|
272
|
+
<th>Notes</th>
|
|
273
|
+
</tr>
|
|
274
|
+
</thead>
|
|
275
|
+
<tbody>
|
|
276
|
+
<tr>
|
|
277
|
+
<td>React</td>
|
|
278
|
+
<td>19.x</td>
|
|
279
|
+
<td>The engine ships its own React for custom-element hosts. A React app must be on 19 so both share one copy; on 18 the engine's hooks fail.</td>
|
|
280
|
+
</tr>
|
|
281
|
+
<tr>
|
|
282
|
+
<td>MUI (<code>@mui/material</code>)</td>
|
|
283
|
+
<td>7.x</td>
|
|
284
|
+
<td>Earlier versions are not tested.</td>
|
|
285
|
+
</tr>
|
|
286
|
+
<tr>
|
|
287
|
+
<td>Module formats</td>
|
|
288
|
+
<td>ESM and CommonJS</td>
|
|
289
|
+
<td>Both entry points are loaded by the consumer check.</td>
|
|
290
|
+
</tr>
|
|
291
|
+
<tr>
|
|
292
|
+
<td>Icons</td>
|
|
293
|
+
<td><a href="https://icons.burtson.ai" target="_blank" class="external"><code>@burtson-labs/icons</code></a> 0.5</td>
|
|
294
|
+
<td>A dependency, not a peer: the engine's icons are Burtson Icons through its MUI entry (<code>@burtson-labs/icons/mui/<name></code>), so nothing extra is installed and no other icon library is bundled.</td>
|
|
295
|
+
</tr>
|
|
296
|
+
<tr>
|
|
297
|
+
<td>Angular / Vue</td>
|
|
298
|
+
<td>Experimental</td>
|
|
299
|
+
<td>Through <code>defineCustomElement</code>. Not covered by the consumer check.</td>
|
|
300
|
+
</tr>
|
|
301
|
+
</tbody>
|
|
302
|
+
</table>
|
|
303
|
+
<p>Earlier releases declared <code>react >=18</code> and <code>@mui/material >=5</code>. Those ranges were never tested; the declarations now match what is.</p>
|
|
304
|
+
<a id="md:sending-and-attachments" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Sending and attachments<a href="#md:sending-and-attachments" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>In <code><Chat /></code>, a message that fails before the model starts answering goes back into the composer with its attachments, and the thread shows that nothing came back. Enter that confirms an IME candidate doesn't send, and a second Enter while a send is in flight is ignored. Attached documents keep their text as written (accents, CJK, emoji, code blocks); a file that can't be read, or has no text, stops the send with a message instead of being dropped.</p>
|
|
305
|
+
<a id="md:-consuming-the-components" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/extension-slot.svg" width="18" align="center" alt="" /> Consuming the Components<a href="#md:-consuming-the-components" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Once you've wrapped your app with <code>ChatProvider</code>, you can selectively integrate Bandit's components as needed:</p>
|
|
232
306
|
<ul>
|
|
233
307
|
<li><code><Chat /></code>: The main chat interface, designed to be used on a dedicated page or embedded into your product.</li>
|
|
234
308
|
<li><code><Management /></code>: A full-featured admin and model configuration UI. This should not be on the same page as <code><Chat /></code>. Use this to allow authenticated users to manage themes, models, and embedded knowledge.</li>
|
|
@@ -245,7 +319,7 @@ Set <code>VITE_DEFAULT_MODEL</code> / <code>VITE_FALLBACK_MODEL</code> to the ex
|
|
|
245
319
|
<pre><code class="tsx"><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">Chat</span><span class="hl-1">, </span><span class="hl-5">Management</span><span class="hl-1">, </span><span class="hl-5">ChatModal</span><span class="hl-1">, </span><span class="hl-5">ChatProvider</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">'@burtson-labs/bandit-engine'</span><span class="hl-1">;</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">useState</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">'react'</span><span class="hl-1">;</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">YourPage</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> [</span><span class="hl-7">isModalOpen</span><span class="hl-1">, </span><span class="hl-7">setIsModalOpen</span><span class="hl-1">] = </span><span class="hl-0">useState</span><span class="hl-1">(</span><span class="hl-6">false</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-4">return</span><span class="hl-1"> (</span><br/><span class="hl-1"> </span><span class="hl-9"><></span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-10">Chat</span><span class="hl-1"> </span><span class="hl-9">/></span><br/><span class="hl-1"> </span><span class="hl-6">{</span><span class="hl-8">/* Use <Management /> on a separate admin route with access controls */</span><span class="hl-6">}</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-6">{</span><span class="hl-8">/* Trigger the AI modal anywhere in your app */</span><span class="hl-6">}</span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-13">button</span><span class="hl-1"> </span><span class="hl-11">onClick</span><span class="hl-1">=</span><span class="hl-6">{</span><span class="hl-14">() </span><span class="hl-6">=></span><span class="hl-14"> </span><span class="hl-0">setIsModalOpen</span><span class="hl-14">(</span><span class="hl-6">true</span><span class="hl-14">)</span><span class="hl-6">}</span><span class="hl-9">></span><br/><span class="hl-1"> Ask AI</span><br/><span class="hl-1"> </span><span class="hl-9"></</span><span class="hl-13">button</span><span class="hl-9">></span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-10">ChatModal</span><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-11">open</span><span class="hl-1">=</span><span class="hl-6">{</span><span class="hl-5">isModalOpen</span><span class="hl-6">}</span><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-11">onClose</span><span class="hl-1">=</span><span class="hl-6">{</span><span class="hl-14">() </span><span class="hl-6">=></span><span class="hl-14"> </span><span class="hl-0">setIsModalOpen</span><span class="hl-14">(</span><span class="hl-6">false</span><span class="hl-14">)</span><span class="hl-6">}</span><br/><span class="hl-1"> </span><span class="hl-9">/></span><br/><span class="hl-1"> </span><span class="hl-9"></></span><br/><span class="hl-1"> );</span><br/><span class="hl-1">}</span>
|
|
246
320
|
</code><button type="button">Copy</button></pre>
|
|
247
321
|
|
|
248
|
-
<a id="md
|
|
322
|
+
<a id="md:-utility-functions--hooks" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/wrench.svg" width="18" align="center" alt="" /> Utility Functions & Hooks<a href="#md:-utility-functions--hooks" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Bandit Engine exports several utility functions for advanced use cases:</p>
|
|
249
323
|
<a id="md:debug-logger" class="tsd-anchor"></a><h4 class="tsd-anchor-link">Debug Logger<a href="#md:debug-logger" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p>Replace console statements with structured logging:</p>
|
|
250
324
|
<pre><code class="tsx"><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">debugLogger</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">'@burtson-labs/bandit-engine'</span><span class="hl-1">;</span><br/><br/><span class="hl-5">debugLogger</span><span class="hl-1">.</span><span class="hl-0">info</span><span class="hl-1">(</span><span class="hl-2">'Chat session started'</span><span class="hl-1">);</span><br/><span class="hl-5">debugLogger</span><span class="hl-1">.</span><span class="hl-0">warn</span><span class="hl-1">(</span><span class="hl-2">'Fallback model selected'</span><span class="hl-1">);</span><br/><span class="hl-5">debugLogger</span><span class="hl-1">.</span><span class="hl-0">error</span><span class="hl-1">(</span><span class="hl-2">'Connection failed'</span><span class="hl-1">, { </span><span class="hl-5">error:</span><span class="hl-1"> </span><span class="hl-5">details</span><span class="hl-1"> });</span>
|
|
251
325
|
</code><button type="button">Copy</button></pre>
|
|
@@ -256,32 +330,32 @@ Set <code>VITE_DEFAULT_MODEL</code> / <code>VITE_FALLBACK_MODEL</code> to the ex
|
|
|
256
330
|
|
|
257
331
|
<a id="md:datetime-context" class="tsd-anchor"></a><h4 class="tsd-anchor-link">Date/Time Context<a href="#md:datetime-context" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h4><p>All AI interactions automatically include current date/time context to improve relevance and accuracy of responses.</p>
|
|
258
332
|
<blockquote>
|
|
259
|
-
<p
|
|
333
|
+
<p><img src="https://icons.burtson.ai/svg-accent/alert-triangle.svg" width="16" align="center" alt="" /> <strong>Important:</strong> Each component (<code><Chat /></code>, <code><Management /></code>, <code><ChatModal /></code>) <strong>must</strong> be wrapped in a <code>ChatProvider</code> to function correctly.<br>
|
|
260
334
|
In React, you can wrap your app once at the root.<br>
|
|
261
335
|
In Angular or Vue, you may need to wrap each usage with a <code><bandit-chat-provider></code> tag and pass settings each time until full reactive context is supported.</p>
|
|
262
336
|
</blockquote>
|
|
263
337
|
<hr>
|
|
264
|
-
<a id="md
|
|
265
|
-
<a id="md
|
|
338
|
+
<a id="md:-chat-control-center-chatmodal-feature" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/sliders.svg" width="18" align="center" alt="" /> Chat Control Center (ChatModal Feature)<a href="#md:-chat-control-center-chatmodal-feature" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>The <code><ChatModal /></code> includes a comprehensive Chat Control Center that provides advanced session management:</p>
|
|
339
|
+
<a id="md:-core-features" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/wrench.svg" width="18" align="center" alt="" /> Core Features<a href="#md:-core-features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul>
|
|
266
340
|
<li><strong>Session vs. Conversation Context</strong>: Toggle between local modal session and persistent conversation history</li>
|
|
267
341
|
<li><strong>Voice Model Selection</strong>: Real-time voice switching with preview greetings (requires TTS gateway configuration)</li>
|
|
268
342
|
<li><strong>Memory Management</strong>: View and manage AI personal memory entries</li>
|
|
269
343
|
<li><strong>Conversation Navigation</strong>: Seamless transition from modal to full chat interface</li>
|
|
270
344
|
<li><strong>Manual Refresh</strong>: Force reload of conversations and voice models for troubleshooting</li>
|
|
271
345
|
</ul>
|
|
272
|
-
<a id="md
|
|
346
|
+
<a id="md:-voice-integration" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/mic.svg" width="18" align="center" alt="" /> Voice Integration<a href="#md:-voice-integration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>When your gateway API includes TTS endpoints, the Chat Control Center provides:</p>
|
|
273
347
|
<ul>
|
|
274
348
|
<li><strong>Voice Selection Dropdown</strong>: Choose from available voice models (e.g., Mark, Amy, Kathleen, Lessac, Ryan)</li>
|
|
275
349
|
<li><strong>Real-time Preview</strong>: Hear voice greetings when switching models</li>
|
|
276
350
|
<li><strong>Consistent Formatting</strong>: Voice names display as proper titles (e.g., "Mark" instead of "en_US-mark-premium")</li>
|
|
277
351
|
<li><strong>Availability Detection</strong>: Automatic detection and fallback when voice services are unavailable</li>
|
|
278
352
|
</ul>
|
|
279
|
-
<a id="md
|
|
353
|
+
<a id="md:-context-switching" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/refresh.svg" width="18" align="center" alt="" /> Context Switching<a href="#md:-context-switching" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul>
|
|
280
354
|
<li><strong>Local Session</strong>: Quick interactions within the modal scope</li>
|
|
281
355
|
<li><strong>Main Conversation</strong>: Access full conversation history with automatic navigation to <code>/chat</code> route</li>
|
|
282
356
|
<li><strong>Smart Conversation Selection</strong>: Automatically loads most recent conversation when switching contexts</li>
|
|
283
357
|
</ul>
|
|
284
|
-
<a id="md
|
|
358
|
+
<a id="md:-memory-features" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/save.svg" width="18" align="center" alt="" /> Memory Features<a href="#md:-memory-features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul>
|
|
285
359
|
<li><strong>Personal Memory Display</strong>: View AI's stored personal information about the user</li>
|
|
286
360
|
<li><strong>Memory Entry Count</strong>: Real-time count of stored memory entries</li>
|
|
287
361
|
<li><strong>Memory Management Modal</strong>: Full CRUD operations for memory entries</li>
|
|
@@ -290,7 +364,7 @@ In Angular or Vue, you may need to wrap each usage with a <code><bandit-chat-
|
|
|
290
364
|
<pre><code class="tsx"><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">ChatModal</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">'@burtson-labs/bandit-engine'</span><span class="hl-1">;</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">App</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> [</span><span class="hl-7">modalOpen</span><span class="hl-1">, </span><span class="hl-7">setModalOpen</span><span class="hl-1">] = </span><span class="hl-0">useState</span><span class="hl-1">(</span><span class="hl-6">false</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-4">return</span><span class="hl-1"> (</span><br/><span class="hl-1"> </span><span class="hl-9"><></span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-13">button</span><span class="hl-1"> </span><span class="hl-11">onClick</span><span class="hl-1">=</span><span class="hl-6">{</span><span class="hl-14">() </span><span class="hl-6">=></span><span class="hl-14"> </span><span class="hl-0">setModalOpen</span><span class="hl-14">(</span><span class="hl-6">true</span><span class="hl-14">)</span><span class="hl-6">}</span><span class="hl-9">></span><br/><span class="hl-1"> Open AI Assistant</span><br/><span class="hl-1"> </span><span class="hl-9"></</span><span class="hl-13">button</span><span class="hl-9">></span><br/><span class="hl-1"> </span><span class="hl-9"><</span><span class="hl-10">ChatModal</span><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-11">open</span><span class="hl-1">=</span><span class="hl-6">{</span><span class="hl-5">modalOpen</span><span class="hl-6">}</span><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-11">onClose</span><span class="hl-1">=</span><span class="hl-6">{</span><span class="hl-14">() </span><span class="hl-6">=></span><span class="hl-14"> </span><span class="hl-0">setModalOpen</span><span class="hl-14">(</span><span class="hl-6">false</span><span class="hl-14">)</span><span class="hl-6">}</span><br/><span class="hl-1"> </span><span class="hl-8">// Chat Control Center is automatically included</span><br/><span class="hl-1"> </span><span class="hl-9">/></span><br/><span class="hl-1"> </span><span class="hl-9"></></span><br/><span class="hl-1"> );</span><br/><span class="hl-1">}</span>
|
|
291
365
|
</code><button type="button">Copy</button></pre>
|
|
292
366
|
|
|
293
|
-
<a id="md
|
|
367
|
+
<a id="md:-feedback-system" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/mail.svg" width="18" align="center" alt="" /> Feedback System<a href="#md:-feedback-system" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The Bandit Engine includes a comprehensive feedback system that can be configured and customized for your application.</p>
|
|
294
368
|
<p><strong>Configuration:</strong></p>
|
|
295
369
|
<pre><code class="tsx"><span class="hl-8">// Package Settings - Configure feedback email</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">chatPackageSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-8">// ... other settings</span><br/><span class="hl-1"> </span><span class="hl-5">feedbackEmail:</span><span class="hl-1"> </span><span class="hl-2">"feedback@yourcompany.com"</span><span class="hl-1">, </span><span class="hl-8">// Optional: custom feedback email</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-8">// Preferences - Enable/disable feedback in management UI</span><br/><span class="hl-8">// Users can toggle feedback button on/off in preferences</span>
|
|
296
370
|
</code><button type="button">Copy</button></pre>
|
|
@@ -301,13 +375,13 @@ In Angular or Vue, you may need to wrap each usage with a <code><bandit-chat-
|
|
|
301
375
|
|
|
302
376
|
<p><strong>Features:</strong></p>
|
|
303
377
|
<ul>
|
|
304
|
-
<li
|
|
305
|
-
<li
|
|
306
|
-
<li
|
|
307
|
-
<li
|
|
308
|
-
<li
|
|
309
|
-
<li
|
|
310
|
-
<li
|
|
378
|
+
<li><img src="https://icons.burtson.ai/svg-accent/smartphone.svg" width="18" align="center" alt="" /> <strong>Responsive Design</strong>: Automatic floating FAB on desktop, inline button on mobile</li>
|
|
379
|
+
<li><img src="https://icons.burtson.ai/svg-accent/palette.svg" width="18" align="center" alt="" /> <strong>Category System</strong>: Bug reports, feature requests, general feedback</li>
|
|
380
|
+
<li><img src="https://icons.burtson.ai/svg-accent/chart-bar.svg" width="18" align="center" alt="" /> <strong>Priority Levels</strong>: Low, medium, high, critical</li>
|
|
381
|
+
<li><img src="https://icons.burtson.ai/svg-accent/frown.svg" width="18" align="center" alt="" /> <strong>Annoyance Slider</strong>: Measure user frustration (1-5 scale)</li>
|
|
382
|
+
<li><img src="https://icons.burtson.ai/svg-accent/paperclip.svg" width="18" align="center" alt="" /> <strong>Single Image Support</strong>: Automatic clipboard integration</li>
|
|
383
|
+
<li><img src="https://icons.burtson.ai/svg-accent/mail.svg" width="18" align="center" alt="" /> <strong>Email Fallback</strong>: Generates mailto URLs when API unavailable</li>
|
|
384
|
+
<li><img src="https://icons.burtson.ai/svg-accent/settings.svg" width="18" align="center" alt="" /> <strong>User Preferences</strong>: Can be enabled/disabled in management UI</li>
|
|
311
385
|
</ul>
|
|
312
386
|
<p><strong>Auto-Integration:</strong></p>
|
|
313
387
|
<ul>
|
|
@@ -316,7 +390,7 @@ In Angular or Vue, you may need to wrap each usage with a <code><bandit-chat-
|
|
|
316
390
|
<li>Preferences: Toggle available in management interface</li>
|
|
317
391
|
</ul>
|
|
318
392
|
<hr>
|
|
319
|
-
<a id="md
|
|
393
|
+
<a id="md:-angular-integration-experimental" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/settings.svg" width="18" align="center" alt="" /> Angular Integration (Experimental)<a href="#md:-angular-integration-experimental" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>To use Bandit Engine in an Angular project:</p>
|
|
320
394
|
<ol>
|
|
321
395
|
<li>Install the package:</li>
|
|
322
396
|
</ol>
|
|
@@ -336,7 +410,7 @@ In Angular or Vue, you may need to wrap each usage with a <code><bandit-chat-
|
|
|
336
410
|
|
|
337
411
|
<p>Note: You only need to define the elements you intend to use. Don't mount all components on the same page. Use <code><bandit-management></code> for secure admin routes and <code><bandit-modal></code> for contextual triggers.</p>
|
|
338
412
|
<hr>
|
|
339
|
-
<a id="md
|
|
413
|
+
<a id="md:-vuejs-integration-experimental" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/settings.svg" width="18" align="center" alt="" /> Vue.js Integration (Experimental)<a href="#md:-vuejs-integration-experimental" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>To use Bandit Engine in a Vue 3 project:</p>
|
|
340
414
|
<ol>
|
|
341
415
|
<li>Install the package:</li>
|
|
342
416
|
</ol>
|
|
@@ -359,7 +433,7 @@ In Angular or Vue, you may need to wrap each usage with a <code><bandit-chat-
|
|
|
359
433
|
<p><code>defineCustomElement</code> allows usage in Vue and Angular apps via native Web Components, making Bandit fully framework-agnostic.</p>
|
|
360
434
|
</blockquote>
|
|
361
435
|
<blockquote>
|
|
362
|
-
<p
|
|
436
|
+
<p><img src="https://icons.burtson.ai/svg-accent/refresh.svg" width="18" align="center" alt="" /> Similar to Angular, when using <code><Management /></code> or <code><ChatModal /></code>, wrap each one with a <code><bandit-chat-provider></code> to ensure proper context injection.</p>
|
|
363
437
|
</blockquote>
|
|
364
438
|
<blockquote>
|
|
365
439
|
<p>Make sure <code>packageSettings</code> is passed as a serialized JSON string when using with HTML-based custom elements.</p>
|
|
@@ -368,13 +442,13 @@ In Angular or Vue, you may need to wrap each usage with a <code><bandit-chat-
|
|
|
368
442
|
<p>Note: Ensure React and ReactDOM are correctly bundled and available to your Vue project. You may need additional tooling or wrappers to handle lifecycle and rendering behavior between frameworks. Full Vue support is on our roadmap.</p>
|
|
369
443
|
</blockquote>
|
|
370
444
|
<hr>
|
|
371
|
-
<a id="md
|
|
445
|
+
<a id="md:-custom-element-support" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/package-build.svg" width="18" align="center" alt="" /> Custom Element Support<a href="#md:-custom-element-support" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>To use Bandit components (<code>Chat</code>, <code>Management</code>, <code>ChatModal</code>) in any modern JS framework (Angular, Vue, Svelte, etc.), you can register them as native custom elements:</p>
|
|
372
446
|
<pre><code class="ts"><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">defineCustomElement</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">'@burtson-labs/bandit-engine'</span><span class="hl-1">;</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">BanditModal</span><span class="hl-1"> = </span><span class="hl-0">defineCustomElement</span><span class="hl-1">(</span><span class="hl-2">'ChatModal'</span><span class="hl-1">);</span><br/><span class="hl-5">customElements</span><span class="hl-1">.</span><span class="hl-0">define</span><span class="hl-1">(</span><span class="hl-2">'bandit-modal'</span><span class="hl-1">, </span><span class="hl-5">BanditModal</span><span class="hl-1">);</span>
|
|
373
447
|
</code><button type="button">Copy</button></pre>
|
|
374
448
|
|
|
375
449
|
<p>Wrap it in <code><bandit-chat-provider></code> and you’re ready to go. Ideal for environments where React isn’t used directly.</p>
|
|
376
450
|
<blockquote>
|
|
377
|
-
<p
|
|
451
|
+
<p><img src="https://icons.burtson.ai/svg-accent/memory-layers.svg" width="18" align="center" alt="" /> <strong>Note for Non-React Users:</strong><br>
|
|
378
452
|
When using Bandit components as custom elements (e.g., in Angular, Vue, or static HTML), make sure the compiled custom elements script is loaded before usage. You can do this by importing or referencing it in your HTML or entry file. This ensures the custom elements are defined before being rendered.</p>
|
|
379
453
|
</blockquote>
|
|
380
454
|
<p>To create custom elements, you must import the React components and pass them to <code>defineCustomElement</code>. For example:</p>
|
|
@@ -382,7 +456,7 @@ When using Bandit components as custom elements (e.g., in Angular, Vue, or stati
|
|
|
382
456
|
</code><button type="button">Copy</button></pre>
|
|
383
457
|
|
|
384
458
|
<hr>
|
|
385
|
-
<a id="md
|
|
459
|
+
<a id="md:-live-preview" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/camera.svg" width="18" align="center" alt="" /> Live Preview<a href="#md:-live-preview" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Here are some screenshots of Bandit Chat in action:</p>
|
|
386
460
|
<p><strong>Chat Demo – Your AI-powered UI</strong></p>
|
|
387
461
|
<p align="center">
|
|
388
462
|
<a href="https://cdn.burtson.ai/images/chat-demo.jpg" target="_blank" rel="noopener">
|
|
@@ -420,7 +494,7 @@ When using Bandit components as custom elements (e.g., in Angular, Vue, or stati
|
|
|
420
494
|
</a>
|
|
421
495
|
</p>
|
|
422
496
|
<ol start="4">
|
|
423
|
-
<li><strong
|
|
497
|
+
<li><strong><img src="https://icons.burtson.ai/svg-accent/globe.svg" width="18" align="center" alt="" /> CDN-Based Config (Optional)</strong></li>
|
|
424
498
|
</ol>
|
|
425
499
|
<p>To streamline configuration, you can host your <code>config.json</code> (and related assets like model presets or branding) via your own CDN or edge cache.</p>
|
|
426
500
|
<p>Update the <code>brandingConfigUrl</code> like this:</p>
|
|
@@ -429,10 +503,10 @@ When using Bandit components as custom elements (e.g., in Angular, Vue, or stati
|
|
|
429
503
|
|
|
430
504
|
<p>This enables remote control of Bandit appearance, available models, and more — without redeploying your frontend.</p>
|
|
431
505
|
<blockquote>
|
|
432
|
-
<p
|
|
506
|
+
<p><img src="https://icons.burtson.ai/svg-accent/info.svg" width="16" align="center" alt="" /> Note: All CDN assets such as logos, avatars, config, and workers are available at <code>https://cdn.burtson.ai/</code>. You may override these by hosting your own versions and pointing <code>packageSettings</code> to the appropriate URLs.</p>
|
|
433
507
|
</blockquote>
|
|
434
508
|
<hr>
|
|
435
|
-
<a id="md
|
|
509
|
+
<a id="md:-configuration-options" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/settings.svg" width="18" align="center" alt="" /> Configuration Options<a href="#md:-configuration-options" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
|
|
436
510
|
<li><code>defaultModel</code>: Primary chat model (string; required)</li>
|
|
437
511
|
<li><code>fallbackModel</code>: Optional fallback model if the default is unavailable</li>
|
|
438
512
|
<li><code>gatewayApiUrl</code>: Gateway API base URL for AI, TTS, STT, and MCP</li>
|
|
@@ -456,28 +530,30 @@ When using Bandit components as custom elements (e.g., in Angular, Vue, or stati
|
|
|
456
530
|
<blockquote>
|
|
457
531
|
<p>Quickstart note: the bundled Express gateway does not implement these upload/download routes; they currently return <code>501</code> until you connect real storage.</p>
|
|
458
532
|
</blockquote>
|
|
459
|
-
<a id="md
|
|
533
|
+
<a id="md:-ai-provider-system" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/agent.svg" width="18" align="center" alt="" /> AI Provider System<a href="#md:-ai-provider-system" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Bandit Engine features a unified, gateway-based AI provider architecture that supports multiple AI services through a secure backend:</p>
|
|
460
534
|
<a id="md:supported-providers" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Supported Providers<a href="#md:supported-providers" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul>
|
|
461
|
-
<li><strong
|
|
535
|
+
<li><strong><img src="https://icons.burtson.ai/svg-accent/star.svg" width="18" align="center" alt="" /> Gateway Provider</strong> (Recommended): Routes all requests through your secure backend</li>
|
|
536
|
+
<li><strong>Bandit AI</strong>: Bandit Core models served through the secure gateway</li>
|
|
462
537
|
<li><strong>Ollama</strong>: Self-hosted models and Ollama-compatible endpoints</li>
|
|
463
538
|
<li><strong>OpenAI</strong>: GPT models via OpenAI API</li>
|
|
464
539
|
<li><strong>Azure OpenAI</strong>: Azure-hosted OpenAI models</li>
|
|
465
540
|
<li><strong>Anthropic</strong>: Claude models via Anthropic API</li>
|
|
541
|
+
<li><strong>xAI</strong>: Grok models via xAI API</li>
|
|
466
542
|
</ul>
|
|
467
543
|
<blockquote>
|
|
468
544
|
<p>We do not support every AI provider yet. Let us know which services you rely on—community interest directly shapes the integration roadmap.</p>
|
|
469
545
|
</blockquote>
|
|
470
546
|
<a id="md:gateway-provider-recommended" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Gateway Provider (Recommended)<a href="#md:gateway-provider-recommended" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The gateway provider offers the most secure and scalable approach by routing all requests through your backend API:</p>
|
|
471
|
-
<pre><code class="tsx"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">chatPackageSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-8">// Gateway provider configuration</span><br/><span class="hl-1"> </span><span class="hl-5">aiProvider:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">type:</span><span class="hl-1"> </span><span class="hl-2">"gateway"</span><span class="hl-1"> </span><span class="hl-4">as</span><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-gateway-api.example.com"</span><span class="hl-1">, </span><br/><span class="hl-1"> </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">"
|
|
547
|
+
<pre><code class="tsx"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">chatPackageSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-8">// Gateway provider configuration</span><br/><span class="hl-1"> </span><span class="hl-5">aiProvider:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">type:</span><span class="hl-1"> </span><span class="hl-2">"gateway"</span><span class="hl-1"> </span><span class="hl-4">as</span><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-gateway-api.example.com"</span><span class="hl-1">, </span><br/><span class="hl-1"> </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">"bandit"</span><span class="hl-1"> </span><span class="hl-8">// Backend provider: bandit, openai, azure-openai, anthropic, xai, ollama</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-8">// ... other settings</span><br/><span class="hl-1">};</span>
|
|
472
548
|
</code><button type="button">Copy</button></pre>
|
|
473
549
|
|
|
474
550
|
<p><strong>Benefits:</strong></p>
|
|
475
551
|
<ul>
|
|
476
|
-
<li
|
|
477
|
-
<li
|
|
478
|
-
<li
|
|
479
|
-
<li
|
|
480
|
-
<li
|
|
552
|
+
<li><img src="https://icons.burtson.ai/svg-accent/lock.svg" width="18" align="center" alt="" /> <strong>Control</strong>: Your gateway owns credentials, routing, and policy enforcement</li>
|
|
553
|
+
<li><img src="https://icons.burtson.ai/svg-accent/chart-bar.svg" width="18" align="center" alt="" /> <strong>Monitoring</strong>: Request logging and usage analytics</li>
|
|
554
|
+
<li><img src="https://icons.burtson.ai/svg-accent/gauge.svg" width="18" align="center" alt="" /> <strong>Rate Limiting</strong>: Built-in throttling and quotas</li>
|
|
555
|
+
<li><img src="https://icons.burtson.ai/svg-accent/refresh.svg" width="18" align="center" alt="" /> <strong>Provider Switching</strong>: Change backends without frontend updates</li>
|
|
556
|
+
<li><img src="https://icons.burtson.ai/svg-accent/shield.svg" width="18" align="center" alt="" /> <strong>Authentication</strong>: Unified auth and request validation across services</li>
|
|
481
557
|
</ul>
|
|
482
558
|
<p><strong>Gateway Requirements:</strong><br>
|
|
483
559
|
Your gateway API can be built with any technology (Node.js, Python, .NET, Java, etc.) as long as it implements:</p>
|
|
@@ -485,7 +561,7 @@ Your gateway API can be built with any technology (Node.js, Python, .NET, Java,
|
|
|
485
561
|
<li><code>GET /api/health</code> — Health check endpoint that lists available providers.</li>
|
|
486
562
|
<li><code>GET /api/models</code> and <code>GET /api/models/{provider}</code> — Model discovery for the management UI.</li>
|
|
487
563
|
<li><code>POST /api/chat/completions</code> and <code>POST /api/generate</code> — Default OpenAI-style routes when no provider override is present.</li>
|
|
488
|
-
<li><code>POST /api/{provider}/chat/completions</code> and <code>POST /api/{provider}/generate</code> — Provider-specific routing for <code>openai</code>, <code>azure-openai</code>, and <code>
|
|
564
|
+
<li><code>POST /api/{provider}/chat/completions</code> and <code>POST /api/{provider}/generate</code> — Provider-specific routing for <code>bandit</code>, <code>openai</code>, <code>azure-openai</code>, <code>anthropic</code>, and <code>xai</code>.</li>
|
|
489
565
|
<li><code>POST /api/ollama/chat</code> and <code>POST /api/ollama/generate</code> — Native Ollama routes (no <code>/chat/completions</code> suffix).</li>
|
|
490
566
|
</ul>
|
|
491
567
|
<a id="md:legacy-direct-providers" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Legacy Direct Providers<a href="#md:legacy-direct-providers" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Direct providers are still supported but marked as deprecated for production use:</p>
|
|
@@ -508,13 +584,13 @@ Your gateway API can be built with any technology (Node.js, Python, .NET, Java,
|
|
|
508
584
|
</ul>
|
|
509
585
|
<p><strong>Key Features:</strong></p>
|
|
510
586
|
<ul>
|
|
511
|
-
<li
|
|
512
|
-
<li
|
|
513
|
-
<li
|
|
514
|
-
<li
|
|
587
|
+
<li><img src="https://icons.burtson.ai/svg-accent/image.svg" width="18" align="center" alt="" /> <strong>Universal Image Input</strong>: Drop, paste, or upload images directly in chat</li>
|
|
588
|
+
<li><img src="https://icons.burtson.ai/svg-accent/refresh.svg" width="18" align="center" alt="" /> <strong>Provider-Specific Formatting</strong>: Automatic conversion to each provider's image format</li>
|
|
589
|
+
<li><img src="https://icons.burtson.ai/svg-accent/smartphone.svg" width="18" align="center" alt="" /> <strong>Multi-Image Support</strong>: Send multiple images in a single message</li>
|
|
590
|
+
<li><img src="https://icons.burtson.ai/svg-accent/crosshair.svg" width="18" align="center" alt="" /> <strong>Vision Models</strong>: Seamless integration with multimodal AI models</li>
|
|
515
591
|
</ul>
|
|
516
592
|
<p><strong>Usage Example:</strong></p>
|
|
517
|
-
<pre><code class="tsx"><span class="hl-8">// Images are automatically handled by the chat interface</span><br/><span class="hl-8">// Users can:</span><br/><span class="hl-8">// 1. Drag & drop images into the chat input</span><br/><span class="hl-8">// 2. Paste images from clipboard (Ctrl+V / Cmd+V) </span><br/><span class="hl-8">// 3. Use the attach button to select image files</span><br/><span class="hl-8">// 4. Ask questions about the images naturally</span><br/><br/><span class="hl-8">// The gateway provider automatically formats images correctly:</span><br/><span class="hl-8">// - Ollama: base64 arrays in message.images</span><br/><span class="hl-8">// - OpenAI/Azure/Anthropic: structured content with image_url objects</span>
|
|
593
|
+
<pre><code class="tsx"><span class="hl-8">// Images are automatically handled by the chat interface</span><br/><span class="hl-8">// Users can:</span><br/><span class="hl-8">// 1. Drag & drop images into the chat input</span><br/><span class="hl-8">// 2. Paste images from clipboard (Ctrl+V / Cmd+V) </span><br/><span class="hl-8">// 3. Use the attach button to select image files</span><br/><span class="hl-8">// 4. Ask questions about the images naturally</span><br/><br/><span class="hl-8">// The gateway provider automatically formats images correctly:</span><br/><span class="hl-8">// - Ollama: base64 arrays in message.images</span><br/><span class="hl-8">// - OpenAI/Azure/xAI/Anthropic: structured content with image_url objects</span>
|
|
518
594
|
</code><button type="button">Copy</button></pre>
|
|
519
595
|
|
|
520
596
|
<p><strong>Backend Requirements:</strong>
|
|
@@ -526,7 +602,7 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
526
602
|
<pre><code class="tsx"><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">useAIProvider</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">'@burtson-labs/bandit-engine'</span><span class="hl-1">;</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">MyComponent</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">generateResponse</span><span class="hl-1">, </span><span class="hl-7">isLoading</span><span class="hl-1"> } = </span><span class="hl-0">useAIProvider</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-0">handleChat</span><span class="hl-1"> = </span><span class="hl-6">async</span><span class="hl-1"> (</span><span class="hl-5">message</span><span class="hl-1">: </span><span class="hl-10">string</span><span class="hl-1">) </span><span class="hl-6">=></span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">response</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-0">generateResponse</span><span class="hl-1">(</span><span class="hl-5">message</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-5">response</span><span class="hl-1">);</span><br/><span class="hl-1"> };</span><br/><span class="hl-1">}</span>
|
|
527
603
|
</code><button type="button">Copy</button></pre>
|
|
528
604
|
|
|
529
|
-
<a id="md
|
|
605
|
+
<a id="md:-model-context-protocol-mcp-integration" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/wrench.svg" width="18" align="center" alt="" /> Model Context Protocol (MCP) Integration<a href="#md:-model-context-protocol-mcp-integration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Bandit Engine now supports <strong>Model Context Protocol (MCP)</strong> for extending AI capabilities with external tools and services:</p>
|
|
530
606
|
<a id="md:mcp-features" class="tsd-anchor"></a><h3 class="tsd-anchor-link">MCP Features<a href="#md:mcp-features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul>
|
|
531
607
|
<li><strong>Tool Integration</strong>: Connect external APIs and services to your AI conversations</li>
|
|
532
608
|
<li><strong>Dynamic Tool Discovery</strong>: Automatically detect and configure available MCP tools</li>
|
|
@@ -546,7 +622,7 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
546
622
|
</code><button type="button">Copy</button></pre>
|
|
547
623
|
|
|
548
624
|
<hr>
|
|
549
|
-
<a id="md
|
|
625
|
+
<a id="md:-feature-flags--subscription-tiers" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/sliders.svg" width="18" align="center" alt="" /> Feature Flags & Subscription Tiers<a href="#md:-feature-flags--subscription-tiers" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Bandit Engine includes a comprehensive <strong>tier-based feature flag system</strong> that enables subscription-based access control and feature gating:</p>
|
|
550
626
|
<a id="md:subscription-tiers" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Subscription Tiers<a href="#md:subscription-tiers" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The engine supports multiple subscription tiers with different feature access levels:</p>
|
|
551
627
|
<ul>
|
|
552
628
|
<li><strong>Basic</strong>: Core chat functionality with limitations</li>
|
|
@@ -575,75 +651,75 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
575
651
|
<tbody>
|
|
576
652
|
<tr>
|
|
577
653
|
<td><strong>Core Chat</strong></td>
|
|
578
|
-
<td
|
|
579
|
-
<td
|
|
580
|
-
<td
|
|
581
|
-
<td
|
|
582
|
-
<td
|
|
654
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
655
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
656
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
657
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
658
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
583
659
|
</tr>
|
|
584
660
|
<tr>
|
|
585
661
|
<td><strong>Text-to-Speech</strong></td>
|
|
586
|
-
<td
|
|
587
|
-
<td
|
|
588
|
-
<td
|
|
589
|
-
<td
|
|
590
|
-
<td
|
|
662
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
663
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
664
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
665
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
666
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
591
667
|
</tr>
|
|
592
668
|
<tr>
|
|
593
669
|
<td><strong>Speech-to-Text</strong></td>
|
|
594
|
-
<td
|
|
595
|
-
<td
|
|
596
|
-
<td
|
|
597
|
-
<td
|
|
598
|
-
<td
|
|
670
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
671
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
672
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
673
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
674
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
599
675
|
</tr>
|
|
600
676
|
<tr>
|
|
601
677
|
<td><strong>Document Upload</strong></td>
|
|
602
|
-
<td
|
|
603
|
-
<td
|
|
604
|
-
<td
|
|
605
|
-
<td
|
|
606
|
-
<td
|
|
678
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
679
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
680
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
681
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
682
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
607
683
|
</tr>
|
|
608
684
|
<tr>
|
|
609
685
|
<td><strong>Model Management</strong></td>
|
|
610
|
-
<td
|
|
611
|
-
<td
|
|
612
|
-
<td
|
|
613
|
-
<td
|
|
614
|
-
<td
|
|
686
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
687
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
688
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
689
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
690
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
615
691
|
</tr>
|
|
616
692
|
<tr>
|
|
617
693
|
<td><strong>Admin Dashboard</strong></td>
|
|
618
|
-
<td
|
|
619
|
-
<td
|
|
620
|
-
<td
|
|
621
|
-
<td
|
|
622
|
-
<td
|
|
694
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
695
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
696
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
697
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
698
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
623
699
|
</tr>
|
|
624
700
|
<tr>
|
|
625
701
|
<td><strong>API Access</strong></td>
|
|
626
|
-
<td
|
|
627
|
-
<td
|
|
628
|
-
<td
|
|
629
|
-
<td
|
|
630
|
-
<td
|
|
702
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
703
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
704
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
705
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
706
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
631
707
|
</tr>
|
|
632
708
|
<tr>
|
|
633
709
|
<td><strong>Team Collaboration</strong></td>
|
|
634
|
-
<td
|
|
635
|
-
<td
|
|
636
|
-
<td
|
|
637
|
-
<td
|
|
638
|
-
<td
|
|
710
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
711
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
712
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
713
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
714
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
639
715
|
</tr>
|
|
640
716
|
<tr>
|
|
641
717
|
<td><strong>Custom Branding</strong></td>
|
|
642
|
-
<td
|
|
643
|
-
<td
|
|
644
|
-
<td
|
|
645
|
-
<td
|
|
646
|
-
<td
|
|
718
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
719
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
720
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
721
|
+
<td><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /></td>
|
|
722
|
+
<td><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /></td>
|
|
647
723
|
</tr>
|
|
648
724
|
</tbody>
|
|
649
725
|
</table>
|
|
@@ -675,16 +751,16 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
675
751
|
|
|
676
752
|
<p>This feature flag system enables you to build sophisticated subscription-based AI products with fine-grained access control and seamless upgrade flows.</p>
|
|
677
753
|
<hr>
|
|
678
|
-
<a id="md
|
|
754
|
+
<a id="md:-debug-logger" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/bug.svg" width="18" align="center" alt="" /> Debug Logger<a href="#md:-debug-logger" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Bandit Engine exports a debug logger for consistent logging across your application:</p>
|
|
679
755
|
<pre><code class="tsx"><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">debugLogger</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">'@burtson-labs/bandit-engine'</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// Use instead of console.log/warn/error</span><br/><span class="hl-5">debugLogger</span><span class="hl-1">.</span><span class="hl-0">info</span><span class="hl-1">(</span><span class="hl-2">'Chat message sent'</span><span class="hl-1">);</span><br/><span class="hl-5">debugLogger</span><span class="hl-1">.</span><span class="hl-0">warn</span><span class="hl-1">(</span><span class="hl-2">'Fallback model used'</span><span class="hl-1">);</span><br/><span class="hl-5">debugLogger</span><span class="hl-1">.</span><span class="hl-0">error</span><span class="hl-1">(</span><span class="hl-2">'Failed to connect to AI service'</span><span class="hl-1">);</span>
|
|
680
756
|
</code><button type="button">Copy</button></pre>
|
|
681
757
|
|
|
682
|
-
<a id="md
|
|
758
|
+
<a id="md:-security-best-practices" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/lock.svg" width="18" align="center" alt="" /> Security Best Practices<a href="#md:-security-best-practices" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p><strong><img src="https://icons.burtson.ai/svg-accent/alert-triangle.svg" width="16" align="center" alt="" /> Important Security Notice:</strong></p>
|
|
683
759
|
<p>While Bandit Engine supports direct API key configuration for development and testing, <strong>we strongly recommend against using API keys directly in frontend applications</strong> for production environments.</p>
|
|
684
760
|
<a id="md:recommended-architecture" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Recommended Architecture<a href="#md:recommended-architecture" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ol>
|
|
685
761
|
<li><strong>Use an API Gateway/Wrapper</strong>: Deploy the OllamaGateway (soon to be renamed AiGateway) or similar backend service</li>
|
|
686
762
|
<li><strong>Proxy AI Requests</strong>: Route all AI requests through your secure backend</li>
|
|
687
|
-
<li><strong>Environment Isolation</strong>: Keep
|
|
763
|
+
<li><strong>Environment Isolation</strong>: Keep credentials and sensitive configuration in backend services (not the browser bundle)</li>
|
|
688
764
|
<li><strong>Authentication</strong>: Implement proper user authentication and request validation</li>
|
|
689
765
|
</ol>
|
|
690
766
|
<a id="md:gateway-setup" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Gateway Setup<a href="#md:gateway-setup" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The recommended approach is to use a gateway service that:</p>
|
|
@@ -695,11 +771,11 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
695
771
|
<li>Manages provider switching and fallback logic</li>
|
|
696
772
|
<li><strong>Technology-agnostic</strong>: Works with any backend implementation</li>
|
|
697
773
|
</ul>
|
|
698
|
-
<pre><code class="tsx"><span class="hl-8">// Recommended: Use gateway with unified API</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">chatPackageSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">aiProvider:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">type:</span><span class="hl-1"> </span><span class="hl-2">"gateway"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-api-gateway.com"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">"
|
|
774
|
+
<pre><code class="tsx"><span class="hl-8">// Recommended: Use gateway with unified API</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">chatPackageSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">aiProvider:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">type:</span><span class="hl-1"> </span><span class="hl-2">"gateway"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-api-gateway.com"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">"bandit"</span><span class="hl-1"> </span><span class="hl-8">// or "openai", "anthropic", "azure-openai", "xai", "ollama"</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">gatewayApiUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-api-gateway.com"</span><span class="hl-1">, </span><span class="hl-8">// Same URL for TTS/STT services</span><br/><span class="hl-1"> </span><span class="hl-8">// No API keys in frontend code</span><br/><span class="hl-1"> </span><span class="hl-8">// ... other settings</span><br/><span class="hl-1">};</span>
|
|
699
775
|
</code><button type="button">Copy</button></pre>
|
|
700
776
|
|
|
701
|
-
<a id="md:legacy-configuration-deprecated" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Legacy Configuration (Deprecated)<a href="#md:legacy-configuration-deprecated" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p
|
|
702
|
-
<pre><code class="tsx"><span class="hl-8">// ❌ Deprecated (still works but not recommended)</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">oldSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">ttsUrl:</span><span class="hl-1"> </span><span class="hl-2">"/api/tts"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">sttUrl:</span><span class="hl-1"> </span><span class="hl-2">"/api/stt/transcribe"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">ollamaUrl:</span><span class="hl-1"> </span><span class="hl-2">"http://localhost:11434"</span><span class="hl-1">,</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-8">// ✅ Recommended (unified gateway approach)</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">newSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">aiProvider:</span><span class="hl-1"> { </span><span class="hl-5">type:</span><span class="hl-1"> </span><span class="hl-2">"gateway"</span><span class="hl-1">, </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-gateway.com"</span><span class="hl-1">, </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">"
|
|
777
|
+
<a id="md:legacy-configuration-deprecated" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Legacy Configuration (Deprecated)<a href="#md:legacy-configuration-deprecated" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p><img src="https://icons.burtson.ai/svg-accent/alert-triangle.svg" width="16" align="center" alt="" /> <strong>Legacy TTS/STT URLs are deprecated.</strong> Use the unified <code>gatewayApiUrl</code> instead:</p>
|
|
778
|
+
<pre><code class="tsx"><span class="hl-8">// ❌ Deprecated (still works but not recommended)</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">oldSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">ttsUrl:</span><span class="hl-1"> </span><span class="hl-2">"/api/tts"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">sttUrl:</span><span class="hl-1"> </span><span class="hl-2">"/api/stt/transcribe"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">ollamaUrl:</span><span class="hl-1"> </span><span class="hl-2">"http://localhost:11434"</span><span class="hl-1">,</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-8">// ✅ Recommended (unified gateway approach)</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">newSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">aiProvider:</span><span class="hl-1"> { </span><span class="hl-5">type:</span><span class="hl-1"> </span><span class="hl-2">"gateway"</span><span class="hl-1">, </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-gateway.com"</span><span class="hl-1">, </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">"bandit"</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">gatewayApiUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-gateway.com"</span><span class="hl-1">, </span><span class="hl-8">// Handles TTS, STT, and MCP</span><br/><span class="hl-1">};</span>
|
|
703
779
|
</code><button type="button">Copy</button></pre>
|
|
704
780
|
|
|
705
781
|
<a id="md:development-vs-production" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Development vs Production<a href="#md:development-vs-production" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul>
|
|
@@ -755,7 +831,7 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
755
831
|
<li><strong>PDF Worker</strong>: For document embedding features, the engine uses the PDF parsing worker from <code>https://cdn.burtson.ai/scripts/pdf.worker.js</code></li>
|
|
756
832
|
<li><strong>CDN Resources</strong>: Default avatars, logos, and configurations load from <code>https://cdn.burtson.ai/</code> if not overridden locally</li>
|
|
757
833
|
</ul>
|
|
758
|
-
<a id="md
|
|
834
|
+
<a id="md:-vision--roadmap" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/lightbulb.svg" width="18" align="center" alt="" /> Vision & Roadmap<a href="#md:-vision--roadmap" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Bandit Engine isn't just a component – it's a foundation. Coming soon:</p>
|
|
759
835
|
<ul>
|
|
760
836
|
<li>Multi-modal input: image, voice, document uploads</li>
|
|
761
837
|
<li>Agentic flow support with visualized cards and suggestions</li>
|
|
@@ -765,7 +841,7 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
765
841
|
</ul>
|
|
766
842
|
<p>We’re building this to be the interface layer of your AI-first products. Own the UX. Own the brand. Own the experience.</p>
|
|
767
843
|
<hr>
|
|
768
|
-
<a id="md
|
|
844
|
+
<a id="md:-migration-guide" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/pin.svg" width="18" align="center" alt="" /> Migration Guide<a href="#md:-migration-guide" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="md:from-legacy-ttsstt-urls-to-gateway-api" class="tsd-anchor"></a><h3 class="tsd-anchor-link">From Legacy TTS/STT URLs to Gateway API<a href="#md:from-legacy-ttsstt-urls-to-gateway-api" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>If you're currently using separate <code>ttsUrl</code> and <code>sttUrl</code> settings, migrate to the unified gateway approach:</p>
|
|
769
845
|
<p><strong>Before (Deprecated):</strong></p>
|
|
770
846
|
<pre><code class="tsx"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">settings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">ttsUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-tts-service.com/api/tts"</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">sttUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-stt-service.com/api/stt/transcribe"</span><span class="hl-1">, </span><br/><span class="hl-1"> </span><span class="hl-5">ollamaUrl:</span><span class="hl-1"> </span><span class="hl-2">"https://your-ollama.com"</span><span class="hl-1">,</span><br/><span class="hl-1">};</span>
|
|
771
847
|
</code><button type="button">Copy</button></pre>
|
|
@@ -776,21 +852,21 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
776
852
|
|
|
777
853
|
<p>The new approach provides:</p>
|
|
778
854
|
<ul>
|
|
779
|
-
<li
|
|
780
|
-
<li
|
|
781
|
-
<li
|
|
782
|
-
<li
|
|
855
|
+
<li><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /> <strong>Unified API</strong>: One endpoint for all services</li>
|
|
856
|
+
<li><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /> <strong>Better Security</strong>: Centralized authentication and rate limiting</li>
|
|
857
|
+
<li><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /> <strong>Technology Flexibility</strong>: Use any backend implementation</li>
|
|
858
|
+
<li><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /> <strong>Automatic Discovery</strong>: Real-time service availability detection</li>
|
|
783
859
|
</ul>
|
|
784
860
|
<hr>
|
|
785
|
-
<a id="md
|
|
786
|
-
<a id="md
|
|
787
|
-
<li
|
|
788
|
-
<li
|
|
789
|
-
<li
|
|
790
|
-
<li
|
|
791
|
-
<li
|
|
861
|
+
<a id="md:-license--protection" class="tsd-anchor"></a><h2 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/shield.svg" width="18" align="center" alt="" /> License & Protection<a href="#md:-license--protection" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>This software is protected under the <strong>Business Source License (BUSL) 1.1</strong> by Burtson Labs LLC.</p>
|
|
862
|
+
<a id="md:-license-summary" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/scale.svg" width="18" align="center" alt="" /> License Summary<a href="#md:-license-summary" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul>
|
|
863
|
+
<li><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /> <strong>Development & Evaluation</strong>: Free for internal development, testing, and evaluation</li>
|
|
864
|
+
<li><img src="https://icons.burtson.ai/svg-accent/check-circle.svg" width="16" align="center" alt="" /> <strong>Non-Commercial Use</strong>: Free for educational, research, and personal projects</li>
|
|
865
|
+
<li><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /> <strong>Commercial Production</strong>: Requires commercial license for production deployment</li>
|
|
866
|
+
<li><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /> <strong>Competitive Use</strong>: Cannot be used to create competing AI chat products</li>
|
|
867
|
+
<li><img src="https://icons.burtson.ai/svg-accent/x-circle.svg" width="16" align="center" alt="" /> <strong>AI Training</strong>: Cannot be used as training data for AI models</li>
|
|
792
868
|
</ul>
|
|
793
|
-
<a id="md
|
|
869
|
+
<a id="md:-usage-rights" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/clipboard-list.svg" width="18" align="center" alt="" /> Usage Rights<a href="#md:-usage-rights" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p><strong>Permitted:</strong></p>
|
|
794
870
|
<ul>
|
|
795
871
|
<li>Internal development and testing</li>
|
|
796
872
|
<li>Educational and research purposes</li>
|
|
@@ -804,15 +880,15 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
804
880
|
<li>Using as training data for AI/ML models</li>
|
|
805
881
|
<li>Removing or modifying license notices and watermarks</li>
|
|
806
882
|
</ul>
|
|
807
|
-
<a id="md
|
|
883
|
+
<a id="md:-protection-features" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/lock.svg" width="18" align="center" alt="" /> Protection Features<a href="#md:-protection-features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>This codebase includes multiple protection layers:</p>
|
|
808
884
|
<ul>
|
|
809
885
|
<li><strong>Embedded Watermarks</strong>: Visible and stealth fingerprints in all source files</li>
|
|
810
886
|
<li><strong>Audit Trails</strong>: Usage tracking and compliance monitoring</li>
|
|
811
887
|
<li><strong>License Validation</strong>: Runtime checks for compliance</li>
|
|
812
888
|
<li><strong>Honey Pot Files</strong>: Trap files that trigger license violations when accessed</li>
|
|
813
889
|
</ul>
|
|
814
|
-
<p><strong
|
|
815
|
-
<a id="md
|
|
890
|
+
<p><strong><img src="https://icons.burtson.ai/svg-accent/alert-triangle.svg" width="16" align="center" alt="" /> Warning</strong>: Removing, modifying, or bypassing these protection mechanisms constitutes a license violation and may result in immediate license termination.</p>
|
|
891
|
+
<a id="md:-commercial-licensing" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/briefcase.svg" width="18" align="center" alt="" /> Commercial Licensing<a href="#md:-commercial-licensing" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p><strong>Production License</strong>: Required for commercial deployment</p>
|
|
816
892
|
<ul>
|
|
817
893
|
<li>Full production rights</li>
|
|
818
894
|
<li>Priority support and maintenance</li>
|
|
@@ -825,28 +901,16 @@ Your gateway API should accept images in the standardized format sent by the Ban
|
|
|
825
901
|
<li><strong>Website</strong>: <a href="https://burtson.ai/license" target="_blank" class="external">https://burtson.ai/license</a></li>
|
|
826
902
|
<li><strong>Sales</strong>: <a href="mailto:sales@burtson.ai">sales@burtson.ai</a></li>
|
|
827
903
|
</ul>
|
|
828
|
-
<a id="md
|
|
829
|
-
<pre><code class="bash"><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">lint</span><span class="hl-1"> </span><span class="hl-8"># Static analysis for the src tree</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">test</span><span class="hl-1"> </span><span class="hl-8"># Vitest suite</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">build</span><span class="hl-1"> </span><span class="hl-8"># Generate the dist bundle with tsup</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">validate-protection</span><span class="hl-1"> </span><span class="hl-8">#
|
|
904
|
+
<a id="md:-for-contributors--developers" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><img src="https://icons.burtson.ai/svg-accent/code.svg" width="18" align="center" alt="" /> For Contributors & Developers<a href="#md:-for-contributors--developers" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Before contributing or publishing a new Pull Request, run the available validation scripts:</p>
|
|
905
|
+
<pre><code class="bash"><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">lint</span><span class="hl-1"> </span><span class="hl-8"># Static analysis for the src tree</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">test</span><span class="hl-1"> </span><span class="hl-8"># Vitest suite</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">build</span><span class="hl-1"> </span><span class="hl-8"># Generate the dist bundle with tsup</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">validate-protection</span><span class="hl-1"> </span><span class="hl-8"># Check source notice presence</span>
|
|
830
906
|
</code><button type="button">Copy</button></pre>
|
|
831
907
|
|
|
832
|
-
<p><strong>Developer
|
|
908
|
+
<p><strong>Developer resources:</strong></p>
|
|
833
909
|
<ul>
|
|
834
|
-
<li><
|
|
835
|
-
<li><
|
|
836
|
-
<li><
|
|
837
|
-
<li><strong><a href="media/LICENSE">LICENSE</a></strong> - Full BUSL 1.1 license text</li>
|
|
910
|
+
<li><a href="media/PRE-PUSH-CHECKLIST.md">PRE-PUSH-CHECKLIST.md</a> — build, test, and package checks.</li>
|
|
911
|
+
<li><a href="media/PROTECTION-NOTICE.md">PROTECTION-NOTICE.md</a> — source notices and deprecated compatibility helpers.</li>
|
|
912
|
+
<li><a href="media/LICENSE">LICENSE</a> — the repository's current license terms.</li>
|
|
838
913
|
</ul>
|
|
839
|
-
<
|
|
840
|
-
<
|
|
841
|
-
<li>Adds license headers to new files</li>
|
|
842
|
-
<li>Validates compliance on every build</li>
|
|
843
|
-
<li>Tracks usage and modifications</li>
|
|
844
|
-
<li>Prevents unauthorized distribution</li>
|
|
845
|
-
</ul>
|
|
846
|
-
<p><strong>Quick Commands:</strong></p>
|
|
847
|
-
<pre><code class="bash"><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">protect</span><span class="hl-1"> </span><span class="hl-8"># Apply protection to new files</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">run</span><span class="hl-1"> </span><span class="hl-2">validate-protection</span><span class="hl-1"> </span><span class="hl-8"># Check for license violations </span>
|
|
848
|
-
</code><button type="button">Copy</button></pre>
|
|
849
|
-
|
|
850
|
-
<hr>
|
|
851
|
-
<p><strong>© 2025 Burtson Labs LLC. All rights reserved.</strong></p>
|
|
852
|
-
</div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#md:bandit-engine-⚡"><span>Bandit <wbr/>Engine ⚡</span></a><ul><li><a href="#md:features"><span>Features</span></a></li><li><a href="#md:quick-links"><span>Quick <wbr/>Links</span></a></li><li><a href="#md:quick-start"><span>Quick <wbr/>Start</span></a></li><li><ul><li><a href="#md:cli-scaffold"><span>CLI <wbr/>Scaffold</span></a></li><li><a href="#md:cli-options"><span>CLI <wbr/>Options</span></a></li><li><a href="#md:playground-password-free-preview"><span>Playground (<wbr/>Password-<wbr/>Free <wbr/>Preview)</span></a></li></ul></li><li><a href="#md:🛠️-getting-started--plug--play-ai"><span>🛠️ <wbr/>Getting <wbr/>Started – <wbr/>Plug & <wbr/>Play AI</span></a></li><li><ul><li><a href="#md:🔄-quick-provider-setup"><span>🔄 <wbr/>Quick <wbr/>Provider <wbr/>Setup</span></a></li><li><a href="#md:ollama-env-setup"><span>Ollama .env <wbr/>Setup</span></a></li><li><a href="#md:🎤-voice-services-ttsstt"><span>🎤 <wbr/>Voice <wbr/>Services (TTS/STT)</span></a></li></ul></li><li><a href="#md:🧩-consuming-the-components"><span>🧩 <wbr/>Consuming the <wbr/>Components</span></a></li><li><ul><li><a href="#md:🛠️-utility-functions--hooks"><span>🛠️ <wbr/>Utility <wbr/>Functions & <wbr/>Hooks</span></a></li><li><ul><li><a href="#md:debug-logger"><span>Debug <wbr/>Logger</span></a></li><li><a href="#md:ai-prompt-utilities"><span>AI <wbr/>Prompt <wbr/>Utilities</span></a></li><li><a href="#md:datetime-context"><span>Date/<wbr/>Time <wbr/>Context</span></a></li></ul></li></ul></li><li><a href="#md:🎛️-chat-control-center-chatmodal-feature"><span>🎛️ <wbr/>Chat <wbr/>Control <wbr/>Center (<wbr/>Chat<wbr/>Modal <wbr/>Feature)</span></a></li><li><ul><li><a href="#md:🔧-core-features"><span>🔧 <wbr/>Core <wbr/>Features</span></a></li><li><a href="#md:🎤-voice-integration"><span>🎤 <wbr/>Voice <wbr/>Integration</span></a></li><li><a href="#md:🔄-context-switching"><span>🔄 <wbr/>Context <wbr/>Switching</span></a></li><li><a href="#md:💾-memory-features"><span>💾 <wbr/>Memory <wbr/>Features</span></a></li><li><a href="#md:📧-feedback-system"><span>📧 <wbr/>Feedback <wbr/>System</span></a></li></ul></li><li><a href="#md:⚙️-angular-integration-experimental"><span>⚙️ <wbr/>Angular <wbr/>Integration (<wbr/>Experimental)</span></a></li><li><a href="#md:⚙️-vuejs-integration-experimental"><span>⚙️ <wbr/>Vue.js <wbr/>Integration (<wbr/>Experimental)</span></a></li><li><a href="#md:📦-custom-element-support"><span>📦 <wbr/>Custom <wbr/>Element <wbr/>Support</span></a></li><li><a href="#md:📸-live-preview"><span>📸 <wbr/>Live <wbr/>Preview</span></a></li><li><a href="#md:⚙️-configuration-options"><span>⚙️ <wbr/>Configuration <wbr/>Options</span></a></li><li><ul><li><a href="#md:file-storage-api-contract"><span>File <wbr/>Storage API <wbr/>Contract</span></a></li></ul></li><li><a href="#md:🤖-ai-provider-system"><span>🤖 AI <wbr/>Provider <wbr/>System</span></a></li><li><ul><li><a href="#md:supported-providers"><span>Supported <wbr/>Providers</span></a></li><li><a href="#md:gateway-provider-recommended"><span>Gateway <wbr/>Provider (<wbr/>Recommended)</span></a></li><li><a href="#md:legacy-direct-providers"><span>Legacy <wbr/>Direct <wbr/>Providers</span></a></li><li><a href="#md:migration-to-gateway"><span>Migration to <wbr/>Gateway</span></a></li><li><a href="#md:imagemultimodal-support"><span>Image/<wbr/>Multimodal <wbr/>Support</span></a></li><li><a href="#md:using-the-ai-provider"><span>Using the AI <wbr/>Provider</span></a></li></ul></li><li><a href="#md:🔧-model-context-protocol-mcp-integration"><span>🔧 <wbr/>Model <wbr/>Context <wbr/>Protocol (MCP) <wbr/>Integration</span></a></li><li><ul><li><a href="#md:mcp-features"><span>MCP <wbr/>Features</span></a></li><li><a href="#md:using-mcp-tools"><span>Using MCP <wbr/>Tools</span></a></li><li><a href="#md:mcp-tool-configuration"><span>MCP <wbr/>Tool <wbr/>Configuration</span></a></li><li><a href="#md:mcp-service-api"><span>MCP <wbr/>Service API</span></a></li></ul></li><li><a href="#md:🎛️-feature-flags--subscription-tiers"><span>🎛️ <wbr/>Feature <wbr/>Flags & <wbr/>Subscription <wbr/>Tiers</span></a></li><li><ul><li><a href="#md:subscription-tiers"><span>Subscription <wbr/>Tiers</span></a></li><li><a href="#md:feature-flag-configuration"><span>Feature <wbr/>Flag <wbr/>Configuration</span></a></li><li><a href="#md:tier-based-feature-matrix"><span>Tier-<wbr/>Based <wbr/>Feature <wbr/>Matrix</span></a></li><li><a href="#md:jwt-based-authentication"><span>JWT-<wbr/>Based <wbr/>Authentication</span></a></li><li><a href="#md:using-feature-flags-in-components"><span>Using <wbr/>Feature <wbr/>Flags in <wbr/>Components</span></a></li><li><a href="#md:subscription-state-management"><span>Subscription <wbr/>State <wbr/>Management</span></a></li><li><a href="#md:feature-restrictions--upgrade-prompts"><span>Feature <wbr/>Restrictions & <wbr/>Upgrade <wbr/>Prompts</span></a></li><li><a href="#md:development--testing"><span>Development & <wbr/>Testing</span></a></li><li><a href="#md:backend-integration"><span>Backend <wbr/>Integration</span></a></li></ul></li><li><a href="#md:🐛-debug-logger"><span>🐛 <wbr/>Debug <wbr/>Logger</span></a></li><li><a href="#md:🔒-security-best-practices"><span>🔒 <wbr/>Security <wbr/>Best <wbr/>Practices</span></a></li><li><ul><li><a href="#md:recommended-architecture"><span>Recommended <wbr/>Architecture</span></a></li><li><a href="#md:gateway-setup"><span>Gateway <wbr/>Setup</span></a></li><li><a href="#md:legacy-configuration-deprecated"><span>Legacy <wbr/>Configuration (<wbr/>Deprecated)</span></a></li><li><a href="#md:development-vs-production"><span>Development vs <wbr/>Production</span></a></li></ul></li><li><a href="#md:requirements"><span>Requirements</span></a></li><li><ul><li><a href="#md:gateway-api-services"><span>Gateway API <wbr/>Services</span></a></li><li><a href="#md:technology-agnostic-implementation"><span>Technology-<wbr/>Agnostic <wbr/>Implementation</span></a></li><li><a href="#md:additional-resources"><span>Additional <wbr/>Resources</span></a></li></ul></li><li><a href="#md:💡-vision--roadmap"><span>💡 <wbr/>Vision & <wbr/>Roadmap</span></a></li><li><a href="#md:📌-migration-guide"><span>📌 <wbr/>Migration <wbr/>Guide</span></a></li><li><ul><li><a href="#md:from-legacy-ttsstt-urls-to-gateway-api"><span>From <wbr/>Legacy TTS/STT URLs to <wbr/>Gateway API</span></a></li></ul></li><li><a href="#md:🛡️-license--protection"><span>🛡️ <wbr/>License & <wbr/>Protection</span></a></li><li><ul><li><a href="#md:⚖️-license-summary"><span>⚖️ <wbr/>License <wbr/>Summary</span></a></li><li><a href="#md:📋-usage-rights"><span>📋 <wbr/>Usage <wbr/>Rights</span></a></li><li><a href="#md:🔒-protection-features"><span>🔒 <wbr/>Protection <wbr/>Features</span></a></li><li><a href="#md:💼-commercial-licensing"><span>💼 <wbr/>Commercial <wbr/>Licensing</span></a></li><li><a href="#md:👨💻-for-contributors--developers"><span>👨💻 <wbr/>For <wbr/>Contributors & <wbr/>Developers</span></a></li><li><a href="#md:📝-license-compliance"><span>📝 <wbr/>License <wbr/>Compliance</span></a></li></ul></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html" class="current"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-1"></use></svg><span>@burtson-labs/bandit-engine</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base="."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
|
914
|
+
<p>Source notices are attribution, not telemetry or enforcement. They do not track usage or prevent distribution. The legacy helpers with integrity and validation names are deprecated and must not be used as security controls.</p>
|
|
915
|
+
<p>© 2025 Burtson Labs LLC.</p>
|
|
916
|
+
</div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#md:bandit-engine-"><span>Bandit <wbr/>Engine <img src="https://icons.burtson.ai/svg-<wbr/>accent/zap.svg" width="18" align="center" alt="" /></span></a><ul><li><a href="#md:features"><span>Features</span></a></li><li><a href="#md:bandit-package-ecosystem"><span>Bandit package ecosystem</span></a></li><li><a href="#md:quick-links"><span>Quick <wbr/>Links</span></a></li><li><a href="#md:quick-start"><span>Quick <wbr/>Start</span></a></li><li><ul><li><a href="#md:cli-scaffold"><span>CLI <wbr/>Scaffold</span></a></li><li><a href="#md:cli-options"><span>CLI <wbr/>Options</span></a></li><li><a href="#md:playground-password-free-preview"><span>Playground (<wbr/>Password-<wbr/>Free <wbr/>Preview)</span></a></li></ul></li><li><a href="#md:-getting-started--plug--play-ai"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/wrench.svg" width="18" align="center" alt="" /> <wbr/>Getting <wbr/>Started – <wbr/>Plug & <wbr/>Play AI</span></a></li><li><ul><li><a href="#md:-quick-provider-setup"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/refresh.svg" width="18" align="center" alt="" /> <wbr/>Quick <wbr/>Provider <wbr/>Setup</span></a></li><li><a href="#md:ollama-env-setup"><span>Ollama .env <wbr/>Setup</span></a></li><li><a href="#md:-voice-services-ttsstt"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/mic.svg" width="18" align="center" alt="" /> <wbr/>Voice <wbr/>Services (TTS/STT)</span></a></li></ul></li><li><a href="#md:-compatibility"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/badge-<wbr/>check.svg" width="18" align="center" alt="" /> <wbr/>Compatibility</span></a></li><li><ul><li><a href="#md:sending-and-attachments"><span>Sending and attachments</span></a></li></ul></li><li><a href="#md:-consuming-the-components"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/extension-<wbr/>slot.svg" width="18" align="center" alt="" /> <wbr/>Consuming the <wbr/>Components</span></a></li><li><ul><li><a href="#md:-utility-functions--hooks"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/wrench.svg" width="18" align="center" alt="" /> <wbr/>Utility <wbr/>Functions & <wbr/>Hooks</span></a></li><li><ul><li><a href="#md:debug-logger"><span>Debug <wbr/>Logger</span></a></li><li><a href="#md:ai-prompt-utilities"><span>AI <wbr/>Prompt <wbr/>Utilities</span></a></li><li><a href="#md:datetime-context"><span>Date/<wbr/>Time <wbr/>Context</span></a></li></ul></li></ul></li><li><a href="#md:-chat-control-center-chatmodal-feature"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/sliders.svg" width="18" align="center" alt="" /> <wbr/>Chat <wbr/>Control <wbr/>Center (<wbr/>Chat<wbr/>Modal <wbr/>Feature)</span></a></li><li><ul><li><a href="#md:-core-features"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/wrench.svg" width="18" align="center" alt="" /> <wbr/>Core <wbr/>Features</span></a></li><li><a href="#md:-voice-integration"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/mic.svg" width="18" align="center" alt="" /> <wbr/>Voice <wbr/>Integration</span></a></li><li><a href="#md:-context-switching"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/refresh.svg" width="18" align="center" alt="" /> <wbr/>Context <wbr/>Switching</span></a></li><li><a href="#md:-memory-features"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/save.svg" width="18" align="center" alt="" /> <wbr/>Memory <wbr/>Features</span></a></li><li><a href="#md:-feedback-system"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/mail.svg" width="18" align="center" alt="" /> <wbr/>Feedback <wbr/>System</span></a></li></ul></li><li><a href="#md:-angular-integration-experimental"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/settings.svg" width="18" align="center" alt="" /> <wbr/>Angular <wbr/>Integration (<wbr/>Experimental)</span></a></li><li><a href="#md:-vuejs-integration-experimental"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/settings.svg" width="18" align="center" alt="" /> <wbr/>Vue.js <wbr/>Integration (<wbr/>Experimental)</span></a></li><li><a href="#md:-custom-element-support"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/package-<wbr/>build.svg" width="18" align="center" alt="" /> <wbr/>Custom <wbr/>Element <wbr/>Support</span></a></li><li><a href="#md:-live-preview"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/camera.svg" width="18" align="center" alt="" /> <wbr/>Live <wbr/>Preview</span></a></li><li><a href="#md:-configuration-options"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/settings.svg" width="18" align="center" alt="" /> <wbr/>Configuration <wbr/>Options</span></a></li><li><ul><li><a href="#md:file-storage-api-contract"><span>File <wbr/>Storage API <wbr/>Contract</span></a></li></ul></li><li><a href="#md:-ai-provider-system"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/agent.svg" width="18" align="center" alt="" /> AI <wbr/>Provider <wbr/>System</span></a></li><li><ul><li><a href="#md:supported-providers"><span>Supported <wbr/>Providers</span></a></li><li><a href="#md:gateway-provider-recommended"><span>Gateway <wbr/>Provider (<wbr/>Recommended)</span></a></li><li><a href="#md:legacy-direct-providers"><span>Legacy <wbr/>Direct <wbr/>Providers</span></a></li><li><a href="#md:migration-to-gateway"><span>Migration to <wbr/>Gateway</span></a></li><li><a href="#md:imagemultimodal-support"><span>Image/<wbr/>Multimodal <wbr/>Support</span></a></li><li><a href="#md:using-the-ai-provider"><span>Using the AI <wbr/>Provider</span></a></li></ul></li><li><a href="#md:-model-context-protocol-mcp-integration"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/wrench.svg" width="18" align="center" alt="" /> <wbr/>Model <wbr/>Context <wbr/>Protocol (MCP) <wbr/>Integration</span></a></li><li><ul><li><a href="#md:mcp-features"><span>MCP <wbr/>Features</span></a></li><li><a href="#md:using-mcp-tools"><span>Using MCP <wbr/>Tools</span></a></li><li><a href="#md:mcp-tool-configuration"><span>MCP <wbr/>Tool <wbr/>Configuration</span></a></li><li><a href="#md:mcp-service-api"><span>MCP <wbr/>Service API</span></a></li></ul></li><li><a href="#md:-feature-flags--subscription-tiers"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/sliders.svg" width="18" align="center" alt="" /> <wbr/>Feature <wbr/>Flags & <wbr/>Subscription <wbr/>Tiers</span></a></li><li><ul><li><a href="#md:subscription-tiers"><span>Subscription <wbr/>Tiers</span></a></li><li><a href="#md:feature-flag-configuration"><span>Feature <wbr/>Flag <wbr/>Configuration</span></a></li><li><a href="#md:tier-based-feature-matrix"><span>Tier-<wbr/>Based <wbr/>Feature <wbr/>Matrix</span></a></li><li><a href="#md:jwt-based-authentication"><span>JWT-<wbr/>Based <wbr/>Authentication</span></a></li><li><a href="#md:using-feature-flags-in-components"><span>Using <wbr/>Feature <wbr/>Flags in <wbr/>Components</span></a></li><li><a href="#md:subscription-state-management"><span>Subscription <wbr/>State <wbr/>Management</span></a></li><li><a href="#md:feature-restrictions--upgrade-prompts"><span>Feature <wbr/>Restrictions & <wbr/>Upgrade <wbr/>Prompts</span></a></li><li><a href="#md:development--testing"><span>Development & <wbr/>Testing</span></a></li><li><a href="#md:backend-integration"><span>Backend <wbr/>Integration</span></a></li></ul></li><li><a href="#md:-debug-logger"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/bug.svg" width="18" align="center" alt="" /> <wbr/>Debug <wbr/>Logger</span></a></li><li><a href="#md:-security-best-practices"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/lock.svg" width="18" align="center" alt="" /> <wbr/>Security <wbr/>Best <wbr/>Practices</span></a></li><li><ul><li><a href="#md:recommended-architecture"><span>Recommended <wbr/>Architecture</span></a></li><li><a href="#md:gateway-setup"><span>Gateway <wbr/>Setup</span></a></li><li><a href="#md:legacy-configuration-deprecated"><span>Legacy <wbr/>Configuration (<wbr/>Deprecated)</span></a></li><li><a href="#md:development-vs-production"><span>Development vs <wbr/>Production</span></a></li></ul></li><li><a href="#md:requirements"><span>Requirements</span></a></li><li><ul><li><a href="#md:gateway-api-services"><span>Gateway API <wbr/>Services</span></a></li><li><a href="#md:technology-agnostic-implementation"><span>Technology-<wbr/>Agnostic <wbr/>Implementation</span></a></li><li><a href="#md:additional-resources"><span>Additional <wbr/>Resources</span></a></li></ul></li><li><a href="#md:-vision--roadmap"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/lightbulb.svg" width="18" align="center" alt="" /> <wbr/>Vision & <wbr/>Roadmap</span></a></li><li><a href="#md:-migration-guide"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/pin.svg" width="18" align="center" alt="" /> <wbr/>Migration <wbr/>Guide</span></a></li><li><ul><li><a href="#md:from-legacy-ttsstt-urls-to-gateway-api"><span>From <wbr/>Legacy TTS/STT URLs to <wbr/>Gateway API</span></a></li></ul></li><li><a href="#md:-license--protection"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/shield.svg" width="18" align="center" alt="" /> <wbr/>License & <wbr/>Protection</span></a></li><li><ul><li><a href="#md:-license-summary"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/scale.svg" width="18" align="center" alt="" /> <wbr/>License <wbr/>Summary</span></a></li><li><a href="#md:-usage-rights"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/clipboard-<wbr/>list.svg" width="18" align="center" alt="" /> <wbr/>Usage <wbr/>Rights</span></a></li><li><a href="#md:-protection-features"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/lock.svg" width="18" align="center" alt="" /> <wbr/>Protection <wbr/>Features</span></a></li><li><a href="#md:-commercial-licensing"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/briefcase.svg" width="18" align="center" alt="" /> <wbr/>Commercial <wbr/>Licensing</span></a></li><li><a href="#md:-for-contributors--developers"><span><img src="https://icons.burtson.ai/svg-<wbr/>accent/code.svg" width="18" align="center" alt="" /> <wbr/>For <wbr/>Contributors & <wbr/>Developers</span></a></li></ul></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html" class="current"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-1"></use></svg><span>@burtson-labs/bandit-engine</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base="."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|