@burtson-labs/bandit-engine 2.0.54 → 2.0.57
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 +76 -76
- package/dist/{chat-IDE6Z4Q4.mjs → chat-MXC6O7M5.mjs} +3 -3
- package/dist/chat-provider.js +20 -67
- package/dist/chat-provider.js.map +1 -1
- package/dist/chat-provider.mjs +2 -2
- package/dist/{chunk-TLY6A6XL.mjs → chunk-N7GCS2BH.mjs} +156 -113
- package/dist/chunk-N7GCS2BH.mjs.map +1 -0
- package/dist/{chunk-AVV7HDGR.mjs → chunk-POTQI33D.mjs} +2 -2
- package/dist/{chunk-EHNWQ4T3.mjs → chunk-QPBG6JQE.mjs} +21 -68
- package/dist/chunk-QPBG6JQE.mjs.map +1 -0
- package/dist/{chunk-NP2OHTTX.mjs → chunk-VU5N57QZ.mjs} +3 -3
- package/dist/index.js +176 -180
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/management/management.js +176 -180
- package/dist/management/management.js.map +1 -1
- package/dist/management/management.mjs +2 -2
- package/package.json +2 -2
- package/dist/chunk-EHNWQ4T3.mjs.map +0 -1
- package/dist/chunk-TLY6A6XL.mjs.map +0 -1
- /package/dist/{chat-IDE6Z4Q4.mjs.map → chat-MXC6O7M5.mjs.map} +0 -0
- /package/dist/{chunk-AVV7HDGR.mjs.map → chunk-POTQI33D.mjs.map} +0 -0
- /package/dist/{chunk-NP2OHTTX.mjs.map → chunk-VU5N57QZ.mjs.map} +0 -0
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
</picture>
|
|
7
7
|
</a>
|
|
8
8
|
|
|
9
|
-
# Bandit Engine
|
|
9
|
+
# Bandit Engine <img src="https://api.iconify.design/lucide/zap.svg?color=%23888888" width="18" align="center" />
|
|
10
10
|
|
|
11
11
|
An AI chat toolkit built for speed, design, and control. Power branded AI assistants with battle-tested React components and a secure gateway contract.
|
|
12
12
|
|
|
@@ -97,7 +97,7 @@ Want to feel the UX without wiring a gateway or signing in? Visit the hosted pla
|
|
|
97
97
|
|
|
98
98
|
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.
|
|
99
99
|
|
|
100
|
-
##
|
|
100
|
+
## <img src="https://api.iconify.design/lucide/hammer.svg?color=%23888888" width="18" align="center" /> Getting Started – Plug & Play AI
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
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.
|
|
@@ -170,9 +170,9 @@ ReactDOM.createRoot(document.getElementById("root")!).render(
|
|
|
170
170
|
);
|
|
171
171
|
```
|
|
172
172
|
|
|
173
|
-
>
|
|
173
|
+
> <img src="https://api.iconify.design/lucide/rocket.svg?color=%23888888" width="18" align="center" /> Within minutes, you'll have a fully functional chat interface that can read, speak, and reason – all brandable, themeable, and extensible.
|
|
174
174
|
|
|
175
|
-
###
|
|
175
|
+
### <img src="https://api.iconify.design/lucide/refresh-cw.svg?color=%23888888" width="18" align="center" /> Quick Provider Setup
|
|
176
176
|
|
|
177
177
|
**Option 1: Gateway Provider (Recommended)**
|
|
178
178
|
```tsx
|
|
@@ -223,7 +223,7 @@ aiProvider: {
|
|
|
223
223
|
- `POST /api/feedback` — submit in-app feedback
|
|
224
224
|
- `GET /subscription/{userId}` and `PUT /subscription/{userId}` — synchronize subscription tiers used by the feature-flag system
|
|
225
225
|
|
|
226
|
-
>
|
|
226
|
+
> **<img src="https://api.iconify.design/lucide/triangle-alert.svg?color=%23d29922" width="16" align="center" /> Important:** The Bandit Engine automatically routes to provider-specific endpoints:
|
|
227
227
|
> - **Bandit AI** → `/api/bandit/chat/completions` (OpenAI format, token or API key)
|
|
228
228
|
> - **Ollama** → `/api/ollama/chat` (native Ollama format)
|
|
229
229
|
> - **OpenAI/Azure/xAI/Anthropic** → `/api/{provider}/chat/completions` (OpenAI format)
|
|
@@ -255,7 +255,7 @@ To run the quickstart purely against an Ollama daemon:
|
|
|
255
255
|
> **Gateway tip**
|
|
256
256
|
> Set `VITE_DEFAULT_MODEL` / `VITE_FALLBACK_MODEL` to the exact Ollama model tags you have available (`gemma`, `llava`, `moondream`, or your own custom builds). Bandit automatically detects multimodal Ollama models, so using `llava`, `moondream`, or other vision-capable variants enables image understanding with no extra code.
|
|
257
257
|
|
|
258
|
-
###
|
|
258
|
+
### <img src="https://api.iconify.design/lucide/mic.svg?color=%23888888" width="18" align="center" /> Voice Services (TTS/STT)
|
|
259
259
|
|
|
260
260
|
The Bandit Engine supports Text-to-Speech (TTS) and Speech-to-Text (STT) through your gateway API. These services are **technology-agnostic** - you can implement them using any backend technology:
|
|
261
261
|
|
|
@@ -286,7 +286,7 @@ Use the Management interface to switch providers anytime or migrate from direct
|
|
|
286
286
|
|
|
287
287
|
---
|
|
288
288
|
|
|
289
|
-
##
|
|
289
|
+
## <img src="https://api.iconify.design/lucide/puzzle.svg?color=%23888888" width="18" align="center" /> Consuming the Components
|
|
290
290
|
|
|
291
291
|
Once you've wrapped your app with `ChatProvider`, you can selectively integrate Bandit's components as needed:
|
|
292
292
|
|
|
@@ -324,7 +324,7 @@ function YourPage() {
|
|
|
324
324
|
}
|
|
325
325
|
```
|
|
326
326
|
|
|
327
|
-
###
|
|
327
|
+
### <img src="https://api.iconify.design/lucide/hammer.svg?color=%23888888" width="18" align="center" /> Utility Functions & Hooks
|
|
328
328
|
|
|
329
329
|
Bandit Engine exports several utility functions for advanced use cases:
|
|
330
330
|
|
|
@@ -365,36 +365,36 @@ const mood = await detectMessageMood("I'm so excited about this project!");
|
|
|
365
365
|
#### Date/Time Context
|
|
366
366
|
All AI interactions automatically include current date/time context to improve relevance and accuracy of responses.
|
|
367
367
|
|
|
368
|
-
>
|
|
368
|
+
> <img src="https://api.iconify.design/lucide/triangle-alert.svg?color=%23d29922" width="16" align="center" /> **Important:** Each component (`<Chat />`, `<Management />`, `<ChatModal />`) **must** be wrapped in a `ChatProvider` to function correctly.
|
|
369
369
|
> In React, you can wrap your app once at the root.
|
|
370
370
|
> In Angular or Vue, you may need to wrap each usage with a `<bandit-chat-provider>` tag and pass settings each time until full reactive context is supported.
|
|
371
371
|
|
|
372
372
|
---
|
|
373
373
|
|
|
374
|
-
##
|
|
374
|
+
## <img src="https://api.iconify.design/lucide/sliders-horizontal.svg?color=%23888888" width="18" align="center" /> Chat Control Center (ChatModal Feature)
|
|
375
375
|
|
|
376
376
|
The `<ChatModal />` includes a comprehensive Chat Control Center that provides advanced session management:
|
|
377
377
|
|
|
378
|
-
###
|
|
378
|
+
### <img src="https://api.iconify.design/lucide/wrench.svg?color=%23888888" width="18" align="center" /> Core Features
|
|
379
379
|
- **Session vs. Conversation Context**: Toggle between local modal session and persistent conversation history
|
|
380
380
|
- **Voice Model Selection**: Real-time voice switching with preview greetings (requires TTS gateway configuration)
|
|
381
381
|
- **Memory Management**: View and manage AI personal memory entries
|
|
382
382
|
- **Conversation Navigation**: Seamless transition from modal to full chat interface
|
|
383
383
|
- **Manual Refresh**: Force reload of conversations and voice models for troubleshooting
|
|
384
384
|
|
|
385
|
-
###
|
|
385
|
+
### <img src="https://api.iconify.design/lucide/mic.svg?color=%23888888" width="18" align="center" /> Voice Integration
|
|
386
386
|
When your gateway API includes TTS endpoints, the Chat Control Center provides:
|
|
387
387
|
- **Voice Selection Dropdown**: Choose from available voice models (e.g., Mark, Amy, Kathleen, Lessac, Ryan)
|
|
388
388
|
- **Real-time Preview**: Hear voice greetings when switching models
|
|
389
389
|
- **Consistent Formatting**: Voice names display as proper titles (e.g., "Mark" instead of "en_US-mark-premium")
|
|
390
390
|
- **Availability Detection**: Automatic detection and fallback when voice services are unavailable
|
|
391
391
|
|
|
392
|
-
###
|
|
392
|
+
### <img src="https://api.iconify.design/lucide/refresh-cw.svg?color=%23888888" width="18" align="center" /> Context Switching
|
|
393
393
|
- **Local Session**: Quick interactions within the modal scope
|
|
394
394
|
- **Main Conversation**: Access full conversation history with automatic navigation to `/chat` route
|
|
395
395
|
- **Smart Conversation Selection**: Automatically loads most recent conversation when switching contexts
|
|
396
396
|
|
|
397
|
-
###
|
|
397
|
+
### <img src="https://api.iconify.design/lucide/save.svg?color=%23888888" width="18" align="center" /> Memory Features
|
|
398
398
|
- **Personal Memory Display**: View AI's stored personal information about the user
|
|
399
399
|
- **Memory Entry Count**: Real-time count of stored memory entries
|
|
400
400
|
- **Memory Management Modal**: Full CRUD operations for memory entries
|
|
@@ -421,7 +421,7 @@ function App() {
|
|
|
421
421
|
}
|
|
422
422
|
```
|
|
423
423
|
|
|
424
|
-
###
|
|
424
|
+
### <img src="https://api.iconify.design/lucide/mail.svg?color=%23888888" width="18" align="center" /> Feedback System
|
|
425
425
|
|
|
426
426
|
The Bandit Engine includes a comprehensive feedback system that can be configured and customized for your application.
|
|
427
427
|
|
|
@@ -457,13 +457,13 @@ import { FeedbackButton } from '@burtson-labs/bandit-engine';
|
|
|
457
457
|
```
|
|
458
458
|
|
|
459
459
|
**Features:**
|
|
460
|
-
-
|
|
461
|
-
-
|
|
462
|
-
-
|
|
463
|
-
-
|
|
464
|
-
-
|
|
465
|
-
-
|
|
466
|
-
-
|
|
460
|
+
- <img src="https://api.iconify.design/lucide/smartphone.svg?color=%23888888" width="18" align="center" /> **Responsive Design**: Automatic floating FAB on desktop, inline button on mobile
|
|
461
|
+
- <img src="https://api.iconify.design/lucide/palette.svg?color=%23888888" width="18" align="center" /> **Category System**: Bug reports, feature requests, general feedback
|
|
462
|
+
- <img src="https://api.iconify.design/lucide/bar-chart-3.svg?color=%23888888" width="18" align="center" /> **Priority Levels**: Low, medium, high, critical
|
|
463
|
+
- <img src="https://api.iconify.design/lucide/angry.svg?color=%23888888" width="18" align="center" /> **Annoyance Slider**: Measure user frustration (1-5 scale)
|
|
464
|
+
- <img src="https://api.iconify.design/lucide/paperclip.svg?color=%23888888" width="18" align="center" /> **Single Image Support**: Automatic clipboard integration
|
|
465
|
+
- <img src="https://api.iconify.design/lucide/mail.svg?color=%23888888" width="18" align="center" /> **Email Fallback**: Generates mailto URLs when API unavailable
|
|
466
|
+
- <img src="https://api.iconify.design/lucide/settings.svg?color=%23888888" width="18" align="center" /> **User Preferences**: Can be enabled/disabled in management UI
|
|
467
467
|
|
|
468
468
|
**Auto-Integration:**
|
|
469
469
|
- Desktop: Floating feedback button (when `preferences.feedbackEnabled` is true)
|
|
@@ -472,7 +472,7 @@ import { FeedbackButton } from '@burtson-labs/bandit-engine';
|
|
|
472
472
|
|
|
473
473
|
---
|
|
474
474
|
|
|
475
|
-
##
|
|
475
|
+
## <img src="https://api.iconify.design/lucide/settings.svg?color=%23888888" width="18" align="center" /> Angular Integration (Experimental)
|
|
476
476
|
|
|
477
477
|
To use Bandit Engine in an Angular project:
|
|
478
478
|
|
|
@@ -511,7 +511,7 @@ Note: You only need to define the elements you intend to use. Don't mount all co
|
|
|
511
511
|
|
|
512
512
|
---
|
|
513
513
|
|
|
514
|
-
##
|
|
514
|
+
## <img src="https://api.iconify.design/lucide/settings.svg?color=%23888888" width="18" align="center" /> Vue.js Integration (Experimental)
|
|
515
515
|
|
|
516
516
|
To use Bandit Engine in a Vue 3 project:
|
|
517
517
|
|
|
@@ -550,7 +550,7 @@ Note: You only need to define the elements you intend to use. Don't mount all co
|
|
|
550
550
|
|
|
551
551
|
> `defineCustomElement` allows usage in Vue and Angular apps via native Web Components, making Bandit fully framework-agnostic.
|
|
552
552
|
|
|
553
|
-
>
|
|
553
|
+
> <img src="https://api.iconify.design/lucide/refresh-cw.svg?color=%23888888" width="18" align="center" /> Similar to Angular, when using `<Management />` or `<ChatModal />`, wrap each one with a `<bandit-chat-provider>` to ensure proper context injection.
|
|
554
554
|
|
|
555
555
|
> Make sure `packageSettings` is passed as a serialized JSON string when using with HTML-based custom elements.
|
|
556
556
|
|
|
@@ -558,7 +558,7 @@ Note: You only need to define the elements you intend to use. Don't mount all co
|
|
|
558
558
|
|
|
559
559
|
---
|
|
560
560
|
|
|
561
|
-
##
|
|
561
|
+
## <img src="https://api.iconify.design/lucide/package.svg?color=%23888888" width="18" align="center" /> Custom Element Support
|
|
562
562
|
|
|
563
563
|
To use Bandit components (`Chat`, `Management`, `ChatModal`) in any modern JS framework (Angular, Vue, Svelte, etc.), you can register them as native custom elements:
|
|
564
564
|
|
|
@@ -571,7 +571,7 @@ customElements.define('bandit-modal', BanditModal);
|
|
|
571
571
|
|
|
572
572
|
Wrap it in `<bandit-chat-provider>` and you’re ready to go. Ideal for environments where React isn’t used directly.
|
|
573
573
|
|
|
574
|
-
>
|
|
574
|
+
> <img src="https://api.iconify.design/lucide/brain.svg?color=%23888888" width="18" align="center" /> **Note for Non-React Users:**
|
|
575
575
|
> 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.
|
|
576
576
|
|
|
577
577
|
To create custom elements, you must import the React components and pass them to `defineCustomElement`. For example:
|
|
@@ -584,7 +584,7 @@ customElements.define('bandit-modal', defineCustomElement(ChatModal));
|
|
|
584
584
|
|
|
585
585
|
---
|
|
586
586
|
|
|
587
|
-
##
|
|
587
|
+
## <img src="https://api.iconify.design/lucide/camera.svg?color=%23888888" width="18" align="center" /> Live Preview
|
|
588
588
|
|
|
589
589
|
Here are some screenshots of Bandit Chat in action:
|
|
590
590
|
|
|
@@ -631,7 +631,7 @@ Here are some screenshots of Bandit Chat in action:
|
|
|
631
631
|
</p>
|
|
632
632
|
|
|
633
633
|
|
|
634
|
-
4.
|
|
634
|
+
4. **<img src="https://api.iconify.design/lucide/globe.svg?color=%23888888" width="18" align="center" /> CDN-Based Config (Optional)**
|
|
635
635
|
|
|
636
636
|
To streamline configuration, you can host your `config.json` (and related assets like model presets or branding) via your own CDN or edge cache.
|
|
637
637
|
|
|
@@ -650,11 +650,11 @@ Update the `brandingConfigUrl` like this:
|
|
|
650
650
|
|
|
651
651
|
This enables remote control of Bandit appearance, available models, and more — without redeploying your frontend.
|
|
652
652
|
|
|
653
|
-
>
|
|
653
|
+
> <img src="https://api.iconify.design/lucide/info.svg?color=%2358a6ff" width="16" align="center" /> Note: All CDN assets such as logos, avatars, config, and workers are available at `https://cdn.burtson.ai/`. You may override these by hosting your own versions and pointing `packageSettings` to the appropriate URLs.
|
|
654
654
|
|
|
655
655
|
---
|
|
656
656
|
|
|
657
|
-
##
|
|
657
|
+
## <img src="https://api.iconify.design/lucide/settings.svg?color=%23888888" width="18" align="center" /> Configuration Options
|
|
658
658
|
- `defaultModel`: Primary chat model (string; required)
|
|
659
659
|
- `fallbackModel`: Optional fallback model if the default is unavailable
|
|
660
660
|
- `gatewayApiUrl`: Gateway API base URL for AI, TTS, STT, and MCP
|
|
@@ -681,13 +681,13 @@ These file operations are invoked in tandem with the `/api/embedding/*` endpoint
|
|
|
681
681
|
|
|
682
682
|
> Quickstart note: the bundled Express gateway does not implement these upload/download routes; they currently return `501` until you connect real storage.
|
|
683
683
|
|
|
684
|
-
##
|
|
684
|
+
## <img src="https://api.iconify.design/lucide/bot.svg?color=%23888888" width="18" align="center" /> AI Provider System
|
|
685
685
|
|
|
686
686
|
Bandit Engine features a unified, gateway-based AI provider architecture that supports multiple AI services through a secure backend:
|
|
687
687
|
|
|
688
688
|
### Supported Providers
|
|
689
689
|
|
|
690
|
-
-
|
|
690
|
+
- **<img src="https://api.iconify.design/lucide/star.svg?color=%23888888" width="18" align="center" /> Gateway Provider** (Recommended): Routes all requests through your secure backend
|
|
691
691
|
- **Bandit AI**: Bandit Core models served through the secure gateway
|
|
692
692
|
- **Ollama**: Self-hosted models and Ollama-compatible endpoints
|
|
693
693
|
- **OpenAI**: GPT models via OpenAI API
|
|
@@ -714,11 +714,11 @@ const chatPackageSettings = {
|
|
|
714
714
|
```
|
|
715
715
|
|
|
716
716
|
**Benefits:**
|
|
717
|
-
-
|
|
718
|
-
-
|
|
719
|
-
-
|
|
720
|
-
-
|
|
721
|
-
-
|
|
717
|
+
- <img src="https://api.iconify.design/lucide/lock.svg?color=%23888888" width="18" align="center" /> **Control**: Your gateway owns credentials, routing, and policy enforcement
|
|
718
|
+
- <img src="https://api.iconify.design/lucide/bar-chart-3.svg?color=%23888888" width="18" align="center" /> **Monitoring**: Request logging and usage analytics
|
|
719
|
+
- <img src="https://api.iconify.design/lucide/gauge.svg?color=%23888888" width="18" align="center" /> **Rate Limiting**: Built-in throttling and quotas
|
|
720
|
+
- <img src="https://api.iconify.design/lucide/refresh-cw.svg?color=%23888888" width="18" align="center" /> **Provider Switching**: Change backends without frontend updates
|
|
721
|
+
- <img src="https://api.iconify.design/lucide/shield.svg?color=%23888888" width="18" align="center" /> **Authentication**: Unified auth and request validation across services
|
|
722
722
|
|
|
723
723
|
**Gateway Requirements:**
|
|
724
724
|
Your gateway API can be built with any technology (Node.js, Python, .NET, Java, etc.) as long as it implements:
|
|
@@ -765,10 +765,10 @@ The Bandit Engine provides comprehensive image support across all AI providers t
|
|
|
765
765
|
- **Anthropic**: `claude-3-opus`, `claude-3-sonnet`, `claude-3-haiku`
|
|
766
766
|
|
|
767
767
|
**Key Features:**
|
|
768
|
-
-
|
|
769
|
-
-
|
|
770
|
-
-
|
|
771
|
-
-
|
|
768
|
+
- <img src="https://api.iconify.design/lucide/image.svg?color=%23888888" width="18" align="center" /> **Universal Image Input**: Drop, paste, or upload images directly in chat
|
|
769
|
+
- <img src="https://api.iconify.design/lucide/refresh-cw.svg?color=%23888888" width="18" align="center" /> **Provider-Specific Formatting**: Automatic conversion to each provider's image format
|
|
770
|
+
- <img src="https://api.iconify.design/lucide/smartphone.svg?color=%23888888" width="18" align="center" /> **Multi-Image Support**: Send multiple images in a single message
|
|
771
|
+
- <img src="https://api.iconify.design/lucide/target.svg?color=%23888888" width="18" align="center" /> **Vision Models**: Seamless integration with multimodal AI models
|
|
772
772
|
|
|
773
773
|
**Usage Example:**
|
|
774
774
|
```tsx
|
|
@@ -834,7 +834,7 @@ function MyComponent() {
|
|
|
834
834
|
}
|
|
835
835
|
```
|
|
836
836
|
|
|
837
|
-
##
|
|
837
|
+
## <img src="https://api.iconify.design/lucide/wrench.svg?color=%23888888" width="18" align="center" /> Model Context Protocol (MCP) Integration
|
|
838
838
|
|
|
839
839
|
Bandit Engine now supports **Model Context Protocol (MCP)** for extending AI capabilities with external tools and services:
|
|
840
840
|
|
|
@@ -913,7 +913,7 @@ if (isMCPAvailable()) {
|
|
|
913
913
|
|
|
914
914
|
---
|
|
915
915
|
|
|
916
|
-
##
|
|
916
|
+
## <img src="https://api.iconify.design/lucide/sliders-horizontal.svg?color=%23888888" width="18" align="center" /> Feature Flags & Subscription Tiers
|
|
917
917
|
|
|
918
918
|
Bandit Engine includes a comprehensive **tier-based feature flag system** that enables subscription-based access control and feature gating:
|
|
919
919
|
|
|
@@ -965,15 +965,15 @@ Different subscription tiers have access to different features:
|
|
|
965
965
|
|
|
966
966
|
| Feature | Basic | Premium | Pro | Team | Trial |
|
|
967
967
|
|---------|-------|---------|-----|------|-------|
|
|
968
|
-
| **Core Chat** |
|
|
969
|
-
| **Text-to-Speech** |
|
|
970
|
-
| **Speech-to-Text** |
|
|
971
|
-
| **Document Upload** |
|
|
972
|
-
| **Model Management** |
|
|
973
|
-
| **Admin Dashboard** |
|
|
974
|
-
| **API Access** |
|
|
975
|
-
| **Team Collaboration** |
|
|
976
|
-
| **Custom Branding** |
|
|
968
|
+
| **Core Chat** | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> |
|
|
969
|
+
| **Text-to-Speech** | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> |
|
|
970
|
+
| **Speech-to-Text** | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> |
|
|
971
|
+
| **Document Upload** | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> |
|
|
972
|
+
| **Model Management** | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> |
|
|
973
|
+
| **Admin Dashboard** | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> |
|
|
974
|
+
| **API Access** | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> |
|
|
975
|
+
| **Team Collaboration** | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> |
|
|
976
|
+
| **Custom Branding** | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> | <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> |
|
|
977
977
|
|
|
978
978
|
### JWT-Based Authentication
|
|
979
979
|
|
|
@@ -1110,7 +1110,7 @@ This feature flag system enables you to build sophisticated subscription-based A
|
|
|
1110
1110
|
|
|
1111
1111
|
---
|
|
1112
1112
|
|
|
1113
|
-
##
|
|
1113
|
+
## <img src="https://api.iconify.design/lucide/bug.svg?color=%23888888" width="18" align="center" /> Debug Logger
|
|
1114
1114
|
|
|
1115
1115
|
Bandit Engine exports a debug logger for consistent logging across your application:
|
|
1116
1116
|
|
|
@@ -1123,9 +1123,9 @@ debugLogger.warn('Fallback model used');
|
|
|
1123
1123
|
debugLogger.error('Failed to connect to AI service');
|
|
1124
1124
|
```
|
|
1125
1125
|
|
|
1126
|
-
##
|
|
1126
|
+
## <img src="https://api.iconify.design/lucide/lock.svg?color=%23888888" width="18" align="center" /> Security Best Practices
|
|
1127
1127
|
|
|
1128
|
-
|
|
1128
|
+
**<img src="https://api.iconify.design/lucide/triangle-alert.svg?color=%23d29922" width="16" align="center" /> Important Security Notice:**
|
|
1129
1129
|
|
|
1130
1130
|
While Bandit Engine supports direct API key configuration for development and testing, **we strongly recommend against using API keys directly in frontend applications** for production environments.
|
|
1131
1131
|
|
|
@@ -1161,7 +1161,7 @@ const chatPackageSettings = {
|
|
|
1161
1161
|
|
|
1162
1162
|
### Legacy Configuration (Deprecated)
|
|
1163
1163
|
|
|
1164
|
-
|
|
1164
|
+
<img src="https://api.iconify.design/lucide/triangle-alert.svg?color=%23d29922" width="16" align="center" /> **Legacy TTS/STT URLs are deprecated.** Use the unified `gatewayApiUrl` instead:
|
|
1165
1165
|
|
|
1166
1166
|
```tsx
|
|
1167
1167
|
// ❌ Deprecated (still works but not recommended)
|
|
@@ -1227,7 +1227,7 @@ The Bandit Engine only requires that your endpoints follow the expected input/ou
|
|
|
1227
1227
|
- **PDF Worker**: For document embedding features, the engine uses the PDF parsing worker from `https://cdn.burtson.ai/scripts/pdf.worker.js`
|
|
1228
1228
|
- **CDN Resources**: Default avatars, logos, and configurations load from `https://cdn.burtson.ai/` if not overridden locally
|
|
1229
1229
|
|
|
1230
|
-
##
|
|
1230
|
+
## <img src="https://api.iconify.design/lucide/lightbulb.svg?color=%23888888" width="18" align="center" /> Vision & Roadmap
|
|
1231
1231
|
|
|
1232
1232
|
Bandit Engine isn't just a component – it's a foundation. Coming soon:
|
|
1233
1233
|
- Multi-modal input: image, voice, document uploads
|
|
@@ -1240,7 +1240,7 @@ We’re building this to be the interface layer of your AI-first products. Own t
|
|
|
1240
1240
|
|
|
1241
1241
|
---
|
|
1242
1242
|
|
|
1243
|
-
##
|
|
1243
|
+
## <img src="https://api.iconify.design/lucide/pin.svg?color=%23888888" width="18" align="center" /> Migration Guide
|
|
1244
1244
|
|
|
1245
1245
|
### From Legacy TTS/STT URLs to Gateway API
|
|
1246
1246
|
|
|
@@ -1268,26 +1268,26 @@ const settings = {
|
|
|
1268
1268
|
```
|
|
1269
1269
|
|
|
1270
1270
|
The new approach provides:
|
|
1271
|
-
-
|
|
1272
|
-
-
|
|
1273
|
-
-
|
|
1274
|
-
-
|
|
1271
|
+
- <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> **Unified API**: One endpoint for all services
|
|
1272
|
+
- <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> **Better Security**: Centralized authentication and rate limiting
|
|
1273
|
+
- <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> **Technology Flexibility**: Use any backend implementation
|
|
1274
|
+
- <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> **Automatic Discovery**: Real-time service availability detection
|
|
1275
1275
|
|
|
1276
1276
|
---
|
|
1277
1277
|
|
|
1278
|
-
##
|
|
1278
|
+
## <img src="https://api.iconify.design/lucide/shield.svg?color=%23888888" width="18" align="center" /> License & Protection
|
|
1279
1279
|
|
|
1280
1280
|
This software is protected under the **Business Source License (BUSL) 1.1** by Burtson Labs LLC.
|
|
1281
1281
|
|
|
1282
|
-
###
|
|
1282
|
+
### <img src="https://api.iconify.design/lucide/scale.svg?color=%23888888" width="18" align="center" /> License Summary
|
|
1283
1283
|
|
|
1284
|
-
-
|
|
1285
|
-
-
|
|
1286
|
-
-
|
|
1287
|
-
-
|
|
1288
|
-
-
|
|
1284
|
+
- <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> **Development & Evaluation**: Free for internal development, testing, and evaluation
|
|
1285
|
+
- <img src="https://api.iconify.design/lucide/circle-check.svg?color=%233fb950" width="16" align="center" /> **Non-Commercial Use**: Free for educational, research, and personal projects
|
|
1286
|
+
- <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> **Commercial Production**: Requires commercial license for production deployment
|
|
1287
|
+
- <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> **Competitive Use**: Cannot be used to create competing AI chat products
|
|
1288
|
+
- <img src="https://api.iconify.design/lucide/circle-x.svg?color=%23f85149" width="16" align="center" /> **AI Training**: Cannot be used as training data for AI models
|
|
1289
1289
|
|
|
1290
|
-
###
|
|
1290
|
+
### <img src="https://api.iconify.design/lucide/clipboard-list.svg?color=%23888888" width="18" align="center" /> Usage Rights
|
|
1291
1291
|
|
|
1292
1292
|
**Permitted:**
|
|
1293
1293
|
- Internal development and testing
|
|
@@ -1301,7 +1301,7 @@ This software is protected under the **Business Source License (BUSL) 1.1** by B
|
|
|
1301
1301
|
- Using as training data for AI/ML models
|
|
1302
1302
|
- Removing or modifying license notices and watermarks
|
|
1303
1303
|
|
|
1304
|
-
###
|
|
1304
|
+
### <img src="https://api.iconify.design/lucide/lock.svg?color=%23888888" width="18" align="center" /> Protection Features
|
|
1305
1305
|
|
|
1306
1306
|
This codebase includes multiple protection layers:
|
|
1307
1307
|
- **Embedded Watermarks**: Visible and stealth fingerprints in all source files
|
|
@@ -1309,9 +1309,9 @@ This codebase includes multiple protection layers:
|
|
|
1309
1309
|
- **License Validation**: Runtime checks for compliance
|
|
1310
1310
|
- **Honey Pot Files**: Trap files that trigger license violations when accessed
|
|
1311
1311
|
|
|
1312
|
-
|
|
1312
|
+
**<img src="https://api.iconify.design/lucide/triangle-alert.svg?color=%23d29922" width="16" align="center" /> Warning**: Removing, modifying, or bypassing these protection mechanisms constitutes a license violation and may result in immediate license termination.
|
|
1313
1313
|
|
|
1314
|
-
###
|
|
1314
|
+
### <img src="https://api.iconify.design/lucide/briefcase.svg?color=%23888888" width="18" align="center" /> Commercial Licensing
|
|
1315
1315
|
|
|
1316
1316
|
**Production License**: Required for commercial deployment
|
|
1317
1317
|
- Full production rights
|
|
@@ -1324,7 +1324,7 @@ This codebase includes multiple protection layers:
|
|
|
1324
1324
|
- **Website**: https://burtson.ai/license
|
|
1325
1325
|
- **Sales**: sales@burtson.ai
|
|
1326
1326
|
|
|
1327
|
-
###
|
|
1327
|
+
### <img src="https://api.iconify.design/lucide/code.svg?color=%23888888" width="18" align="center" /> For Contributors & Developers
|
|
1328
1328
|
|
|
1329
1329
|
Before contributing or publishing a new Pull Request, run the available validation scripts:
|
|
1330
1330
|
|
|
@@ -1341,7 +1341,7 @@ npm run validate-protection # Ensure license headers and fingerprints are intact
|
|
|
1341
1341
|
- **[PROTECTION-NOTICE.md](./PROTECTION-NOTICE.md)** - Legal notices and compliance requirements
|
|
1342
1342
|
- **[LICENSE](./LICENSE)** - Full BUSL 1.1 license text
|
|
1343
1343
|
|
|
1344
|
-
###
|
|
1344
|
+
### <img src="https://api.iconify.design/lucide/pencil.svg?color=%23888888" width="18" align="center" /> License Compliance
|
|
1345
1345
|
|
|
1346
1346
|
All source files must include proper license headers and watermarks. The protection system automatically:
|
|
1347
1347
|
- Adds license headers to new files
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
chat_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-N7GCS2BH.mjs";
|
|
4
4
|
import "./chunk-ONQMRE2G.mjs";
|
|
5
5
|
import "./chunk-KM7FUWCM.mjs";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-QPBG6JQE.mjs";
|
|
7
7
|
import "./chunk-KNBWR4DS.mjs";
|
|
8
8
|
import "./chunk-557E5VZ2.mjs";
|
|
9
9
|
import "./chunk-7ZDS33S2.mjs";
|
|
@@ -13,4 +13,4 @@ import "./chunk-BJTO5JO5.mjs";
|
|
|
13
13
|
export {
|
|
14
14
|
chat_default as default
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=chat-
|
|
16
|
+
//# sourceMappingURL=chat-MXC6O7M5.mjs.map
|
package/dist/chat-provider.js
CHANGED
|
@@ -6568,94 +6568,47 @@ var healthCheckTool = {
|
|
|
6568
6568
|
method: "GET",
|
|
6569
6569
|
isBuiltIn: true
|
|
6570
6570
|
};
|
|
6571
|
-
var
|
|
6572
|
-
id: "
|
|
6573
|
-
name: "
|
|
6574
|
-
description: "
|
|
6571
|
+
var webSearchTool = {
|
|
6572
|
+
id: "web-search",
|
|
6573
|
+
name: "web_search",
|
|
6574
|
+
description: "Search the web for current information, documentation, and facts",
|
|
6575
6575
|
enabled: true,
|
|
6576
6576
|
type: "function",
|
|
6577
6577
|
function: {
|
|
6578
|
-
name: "
|
|
6579
|
-
description: "
|
|
6578
|
+
name: "web_search",
|
|
6579
|
+
description: "Search the web and return ranked results with snippets (and an optional summarized answer). Use for current events, documentation, libraries, error messages, and factual lookups.",
|
|
6580
6580
|
parameters: {
|
|
6581
6581
|
type: "object",
|
|
6582
6582
|
properties: {
|
|
6583
|
-
|
|
6584
|
-
count: { type: "number", description: "Number of
|
|
6585
|
-
|
|
6586
|
-
},
|
|
6587
|
-
required: []
|
|
6588
|
-
}
|
|
6589
|
-
},
|
|
6590
|
-
endpoint: "/mcp/news",
|
|
6591
|
-
method: "GET",
|
|
6592
|
-
isBuiltIn: true
|
|
6593
|
-
};
|
|
6594
|
-
var weatherTool = {
|
|
6595
|
-
id: "weather",
|
|
6596
|
-
name: "weather",
|
|
6597
|
-
description: "Get current weather conditions and forecasts by location",
|
|
6598
|
-
enabled: true,
|
|
6599
|
-
type: "function",
|
|
6600
|
-
function: {
|
|
6601
|
-
name: "weather",
|
|
6602
|
-
description: "Get weather information by location",
|
|
6603
|
-
parameters: {
|
|
6604
|
-
type: "object",
|
|
6605
|
-
properties: {
|
|
6606
|
-
zip: { type: "string", description: "US zip code" },
|
|
6607
|
-
latitude: { type: "number", description: "Latitude" },
|
|
6608
|
-
longitude: { type: "number", description: "Longitude" }
|
|
6609
|
-
},
|
|
6610
|
-
required: []
|
|
6611
|
-
}
|
|
6612
|
-
},
|
|
6613
|
-
endpoint: "/mcp/weather",
|
|
6614
|
-
method: "GET",
|
|
6615
|
-
isBuiltIn: true
|
|
6616
|
-
};
|
|
6617
|
-
var docsTool = {
|
|
6618
|
-
id: "docs",
|
|
6619
|
-
name: "docs",
|
|
6620
|
-
description: "Search framework documentation",
|
|
6621
|
-
enabled: true,
|
|
6622
|
-
type: "function",
|
|
6623
|
-
function: {
|
|
6624
|
-
name: "docs",
|
|
6625
|
-
description: "Search framework documentation",
|
|
6626
|
-
parameters: {
|
|
6627
|
-
type: "object",
|
|
6628
|
-
properties: {
|
|
6629
|
-
query: { type: "string", description: "Search query" },
|
|
6630
|
-
framework: { type: "string", description: "Specific framework to search" },
|
|
6631
|
-
count: { type: "number", description: "Number of results (1-50)" }
|
|
6583
|
+
query: { type: "string", description: "The search query \u2014 natural language or keywords" },
|
|
6584
|
+
count: { type: "number", description: "Number of results to return (1-10, default 5)" },
|
|
6585
|
+
include_answer: { type: "boolean", description: "Include a short summarized answer when available" }
|
|
6632
6586
|
},
|
|
6633
6587
|
required: ["query"]
|
|
6634
6588
|
}
|
|
6635
6589
|
},
|
|
6636
|
-
endpoint: "/mcp/
|
|
6590
|
+
endpoint: "/mcp/web-search",
|
|
6637
6591
|
method: "GET",
|
|
6638
6592
|
isBuiltIn: true
|
|
6639
6593
|
};
|
|
6640
|
-
var
|
|
6641
|
-
id: "
|
|
6642
|
-
name: "
|
|
6643
|
-
description: "
|
|
6594
|
+
var webFetchTool = {
|
|
6595
|
+
id: "web-fetch",
|
|
6596
|
+
name: "web_fetch",
|
|
6597
|
+
description: "Fetch the text content of a specific URL",
|
|
6644
6598
|
enabled: true,
|
|
6645
6599
|
type: "function",
|
|
6646
6600
|
function: {
|
|
6647
|
-
name: "
|
|
6648
|
-
description: "
|
|
6601
|
+
name: "web_fetch",
|
|
6602
|
+
description: "Fetch a single public URL and return its trimmed text content. Use when you already have a specific link you need to read.",
|
|
6649
6603
|
parameters: {
|
|
6650
6604
|
type: "object",
|
|
6651
6605
|
properties: {
|
|
6652
|
-
|
|
6653
|
-
date: { type: "string", description: "Date in YYYY-MM-DD format" }
|
|
6606
|
+
url: { type: "string", description: "Absolute http(s) URL to fetch" }
|
|
6654
6607
|
},
|
|
6655
|
-
required: []
|
|
6608
|
+
required: ["url"]
|
|
6656
6609
|
}
|
|
6657
6610
|
},
|
|
6658
|
-
endpoint: "/mcp/
|
|
6611
|
+
endpoint: "/mcp/web-fetch",
|
|
6659
6612
|
method: "GET",
|
|
6660
6613
|
isBuiltIn: true
|
|
6661
6614
|
};
|
|
@@ -6683,7 +6636,7 @@ var imageGenerationTool = {
|
|
|
6683
6636
|
method: "POST",
|
|
6684
6637
|
isBuiltIn: true
|
|
6685
6638
|
};
|
|
6686
|
-
var defaultTools = [healthCheckTool,
|
|
6639
|
+
var defaultTools = [healthCheckTool, webSearchTool, webFetchTool, imageGenerationTool];
|
|
6687
6640
|
var useMCPToolsStore = (0, import_zustand11.create)((set, get) => ({
|
|
6688
6641
|
tools: defaultTools,
|
|
6689
6642
|
isLoaded: false,
|