@burtson-labs/bandit-engine 2.0.55 → 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 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
- ## 🛠️ Getting Started – Plug & Play AI
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
- > 🚀 Within minutes, you'll have a fully functional chat interface that can read, speak, and reason – all brandable, themeable, and extensible.
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
- ### 🔄 Quick Provider Setup
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
- > **⚠️ Important:** The Bandit Engine automatically routes to provider-specific endpoints:
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
- ### 🎤 Voice Services (TTS/STT)
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
- ## 🧩 Consuming the Components
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
- ### 🛠️ Utility Functions & Hooks
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
- > ⚠️ **Important:** Each component (`<Chat />`, `<Management />`, `<ChatModal />`) **must** be wrapped in a `ChatProvider` to function correctly.
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
- ## 🎛️ Chat Control Center (ChatModal Feature)
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
- ### 🔧 Core Features
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
- ### 🎤 Voice Integration
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
- ### 🔄 Context Switching
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
- ### 💾 Memory Features
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
- ### 📧 Feedback System
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
- - 📱 **Responsive Design**: Automatic floating FAB on desktop, inline button on mobile
461
- - 🎨 **Category System**: Bug reports, feature requests, general feedback
462
- - 📊 **Priority Levels**: Low, medium, high, critical
463
- - 😤 **Annoyance Slider**: Measure user frustration (1-5 scale)
464
- - 📎 **Single Image Support**: Automatic clipboard integration
465
- - 📧 **Email Fallback**: Generates mailto URLs when API unavailable
466
- - ⚙️ **User Preferences**: Can be enabled/disabled in management UI
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
- ## ⚙️ Angular Integration (Experimental)
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
- ## ⚙️ Vue.js Integration (Experimental)
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
- > 🔄 Similar to Angular, when using `<Management />` or `<ChatModal />`, wrap each one with a `<bandit-chat-provider>` to ensure proper context injection.
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
- ## 📦 Custom Element Support
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
- > 🧠 **Note for Non-React Users:**
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
- ## 📸 Live Preview
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. **🌐 CDN-Based Config (Optional)**
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
- > ℹ️ 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.
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
- ## ⚙️ Configuration Options
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
- ## 🤖 AI Provider System
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
- - **🌟 Gateway Provider** (Recommended): Routes all requests through your secure backend
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
- - 🔒 **Control**: Your gateway owns credentials, routing, and policy enforcement
718
- - 📊 **Monitoring**: Request logging and usage analytics
719
- - 🚦 **Rate Limiting**: Built-in throttling and quotas
720
- - 🔄 **Provider Switching**: Change backends without frontend updates
721
- - 🛡️ **Authentication**: Unified auth and request validation across services
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
- - 🖼️ **Universal Image Input**: Drop, paste, or upload images directly in chat
769
- - 🔄 **Provider-Specific Formatting**: Automatic conversion to each provider's image format
770
- - 📱 **Multi-Image Support**: Send multiple images in a single message
771
- - 🎯 **Vision Models**: Seamless integration with multimodal AI models
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
- ## 🔧 Model Context Protocol (MCP) Integration
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
- ## 🎛️ Feature Flags & Subscription Tiers
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
- ## 🐛 Debug Logger
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
- ## 🔒 Security Best Practices
1126
+ ## <img src="https://api.iconify.design/lucide/lock.svg?color=%23888888" width="18" align="center" /> Security Best Practices
1127
1127
 
1128
- **⚠️ Important Security Notice:**
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
- ⚠️ **Legacy TTS/STT URLs are deprecated.** Use the unified `gatewayApiUrl` instead:
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
- ## 💡 Vision & Roadmap
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
- ## 📌 Migration Guide
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
- - **Unified API**: One endpoint for all services
1272
- - **Better Security**: Centralized authentication and rate limiting
1273
- - **Technology Flexibility**: Use any backend implementation
1274
- - **Automatic Discovery**: Real-time service availability detection
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
- ## 🛡️ License & Protection
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
- ### ⚖️ License Summary
1282
+ ### <img src="https://api.iconify.design/lucide/scale.svg?color=%23888888" width="18" align="center" /> License Summary
1283
1283
 
1284
- - **Development & Evaluation**: Free for internal development, testing, and evaluation
1285
- - **Non-Commercial Use**: Free for educational, research, and personal projects
1286
- - **Commercial Production**: Requires commercial license for production deployment
1287
- - **Competitive Use**: Cannot be used to create competing AI chat products
1288
- - **AI Training**: Cannot be used as training data for AI models
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
- ### 📋 Usage Rights
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
- ### 🔒 Protection Features
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
- **⚠️ Warning**: Removing, modifying, or bypassing these protection mechanisms constitutes a license violation and may result in immediate license termination.
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
- ### 💼 Commercial Licensing
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
- ### 👨‍💻 For Contributors & Developers
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
- ### 📝 License Compliance
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-TLY6A6XL.mjs";
3
+ } from "./chunk-N7GCS2BH.mjs";
4
4
  import "./chunk-ONQMRE2G.mjs";
5
5
  import "./chunk-KM7FUWCM.mjs";
6
- import "./chunk-EHNWQ4T3.mjs";
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-IDE6Z4Q4.mjs.map
16
+ //# sourceMappingURL=chat-MXC6O7M5.mjs.map
@@ -6568,94 +6568,47 @@ var healthCheckTool = {
6568
6568
  method: "GET",
6569
6569
  isBuiltIn: true
6570
6570
  };
6571
- var newsTool = {
6572
- id: "news",
6573
- name: "news",
6574
- description: "Get the latest news headlines and articles from various sources",
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: "news",
6579
- description: "Get news articles and headlines",
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
- topic: { type: "string", description: "Filter news by topic" },
6584
- count: { type: "number", description: "Number of articles to return (1-100)" },
6585
- headlines: { type: "boolean", description: "Return top headlines instead of searching" }
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/docs",
6590
+ endpoint: "/mcp/web-search",
6637
6591
  method: "GET",
6638
6592
  isBuiltIn: true
6639
6593
  };
6640
- var sportsTool = {
6641
- id: "sports",
6642
- name: "sports",
6643
- description: "Get sports scores and game information",
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: "sports",
6648
- description: "Get sports scores and game information",
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
- league: { type: "string", description: "Filter by specific league (e.g., nfl, nba)" },
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/sports",
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, newsTool, weatherTool, docsTool, sportsTool, imageGenerationTool];
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,