@burtson-labs/bandit-engine 2.0.8 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +87 -27
  3. package/dist/chat-OLCX6TBK.mjs +15 -0
  4. package/dist/chat-provider.js +9413 -0
  5. package/dist/chat-provider.js.map +1 -0
  6. package/dist/chat-provider.mjs +17 -0
  7. package/dist/chunk-5E7S7DK3.mjs +231 -0
  8. package/dist/chunk-5E7S7DK3.mjs.map +1 -0
  9. package/dist/chunk-6IHJZCUH.mjs +5658 -0
  10. package/dist/chunk-6IHJZCUH.mjs.map +1 -0
  11. package/dist/chunk-6YRLBITU.mjs +9418 -0
  12. package/dist/chunk-6YRLBITU.mjs.map +1 -0
  13. package/dist/chunk-CVIOLFMX.mjs +259 -0
  14. package/dist/chunk-CVIOLFMX.mjs.map +1 -0
  15. package/dist/chunk-HHKXWNCG.mjs +2810 -0
  16. package/dist/chunk-HHKXWNCG.mjs.map +1 -0
  17. package/dist/chunk-JQ6UNJNW.mjs +8757 -0
  18. package/dist/chunk-JQ6UNJNW.mjs.map +1 -0
  19. package/dist/chunk-ONQMRE2G.mjs +26 -0
  20. package/dist/chunk-ONQMRE2G.mjs.map +1 -0
  21. package/dist/chunk-PXXVEH5M.mjs +8925 -0
  22. package/dist/chunk-PXXVEH5M.mjs.map +1 -0
  23. package/dist/{chunk-WYS5CZVG.mjs → chunk-QHLKGSMB.mjs} +2 -2
  24. package/dist/{chunk-WYS5CZVG.mjs.map → chunk-QHLKGSMB.mjs.map} +1 -1
  25. package/dist/chunk-VSHO7PF2.mjs +150 -0
  26. package/dist/chunk-VSHO7PF2.mjs.map +1 -0
  27. package/dist/cli/cli.js +11 -13
  28. package/dist/cli/cli.js.map +1 -1
  29. package/dist/gateway-BXVrH8B-.d.mts +312 -0
  30. package/dist/gateway-BXVrH8B-.d.ts +312 -0
  31. package/dist/index.d.mts +11 -309
  32. package/dist/index.d.ts +11 -309
  33. package/dist/index.js +118 -83
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.mjs +86 -11874
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/management/management.js +39335 -0
  38. package/dist/management/management.js.map +1 -0
  39. package/dist/management/management.mjs +16 -0
  40. package/dist/management/management.mjs.map +1 -0
  41. package/dist/{chunk-BIPELT57.mjs → modals/chat-modal/chat-modal.js} +16653 -20880
  42. package/dist/modals/chat-modal/chat-modal.js.map +1 -0
  43. package/dist/modals/chat-modal/chat-modal.mjs +19 -0
  44. package/dist/modals/chat-modal/chat-modal.mjs.map +1 -0
  45. package/dist/{modelStore-Y3LZWRQC.mjs → modelStore-CY6SECYD.mjs} +2 -2
  46. package/dist/modelStore-CY6SECYD.mjs.map +1 -0
  47. package/dist/public-types.d.mts +32 -0
  48. package/dist/public-types.d.ts +32 -0
  49. package/docs/04_local_dev.md +1 -1
  50. package/docs/api_reference/assets/navigation.js +1 -1
  51. package/docs/api_reference/assets/search.js +1 -1
  52. package/docs/api_reference/classes/DebugLogger.html +11 -11
  53. package/docs/api_reference/classes/FeatureFlagService.html +13 -13
  54. package/docs/api_reference/classes/NotificationService.html +10 -10
  55. package/docs/api_reference/classes/StreamingTTSClient.html +9 -9
  56. package/docs/api_reference/classes/VectorDatabaseService.html +24 -24
  57. package/docs/api_reference/classes/VectorMigrationService.html +8 -8
  58. package/docs/api_reference/classes/VoiceService.html +2 -2
  59. package/docs/api_reference/enums/TTSState.html +2 -2
  60. package/docs/api_reference/functions/Chat.html +1 -1
  61. package/docs/api_reference/functions/ChatModal.html +4 -4
  62. package/docs/api_reference/functions/ChatProvider.html +1 -1
  63. package/docs/api_reference/functions/FeatureFlagProvider.html +1 -1
  64. package/docs/api_reference/functions/FeedbackButton.html +1 -1
  65. package/docs/api_reference/functions/FeedbackModal.html +1 -1
  66. package/docs/api_reference/functions/Management.html +1 -1
  67. package/docs/api_reference/functions/NotificationProvider.html +1 -1
  68. package/docs/api_reference/functions/SubscriptionExpiredGuard.html +1 -1
  69. package/docs/api_reference/functions/SubscriptionExpiredModal.html +1 -1
  70. package/docs/api_reference/functions/defineCustomElement.html +1 -1
  71. package/docs/api_reference/functions/getCriticalConfig.html +1 -1
  72. package/docs/api_reference/functions/getFeatureMatrix.html +1 -1
  73. package/docs/api_reference/functions/getStreamingTTSClient.html +1 -1
  74. package/docs/api_reference/functions/getSystemConstants.html +1 -1
  75. package/docs/api_reference/functions/getTTSState.html +1 -1
  76. package/docs/api_reference/functions/handleHttpError.html +1 -1
  77. package/docs/api_reference/functions/handleSubscriptionUpgrade.html +1 -1
  78. package/docs/api_reference/functions/handleValidationError.html +1 -1
  79. package/docs/api_reference/functions/initializeCoreSystem.html +1 -1
  80. package/docs/api_reference/functions/pauseTTS.html +1 -1
  81. package/docs/api_reference/functions/previewTierUpgrade.html +1 -1
  82. package/docs/api_reference/functions/resumeTTS.html +1 -1
  83. package/docs/api_reference/functions/showInfoNotification.html +1 -1
  84. package/docs/api_reference/functions/showSuccessNotification.html +1 -1
  85. package/docs/api_reference/functions/speakWithStreaming.html +1 -1
  86. package/docs/api_reference/functions/stopTTS.html +1 -1
  87. package/docs/api_reference/functions/syncSubscriptionWithAPI.html +1 -1
  88. package/docs/api_reference/functions/updateSubscriptionTier.html +1 -1
  89. package/docs/api_reference/functions/useFeatureFlag.html +1 -1
  90. package/docs/api_reference/functions/useFeatureVisibility.html +1 -1
  91. package/docs/api_reference/functions/useFeatures.html +1 -1
  92. package/docs/api_reference/functions/useGatewayHealth.html +1 -1
  93. package/docs/api_reference/functions/useGatewayMemory.html +1 -1
  94. package/docs/api_reference/functions/useGatewayModels.html +1 -1
  95. package/docs/api_reference/functions/useGlobalTTS.html +1 -1
  96. package/docs/api_reference/functions/useNotification.html +1 -1
  97. package/docs/api_reference/functions/useNotificationService.html +1 -1
  98. package/docs/api_reference/functions/useTTS.html +1 -1
  99. package/docs/api_reference/functions/useVectorStore.html +1 -1
  100. package/docs/api_reference/functions/useVoiceStore.html +2 -2
  101. package/docs/api_reference/functions/useVoices.html +1 -1
  102. package/docs/api_reference/functions/validateEnvironment.html +1 -1
  103. package/docs/api_reference/functions/validateSystemIntegrity.html +1 -1
  104. package/docs/api_reference/index.html +97 -26
  105. package/docs/api_reference/interfaces/AIChatRequest.html +2 -2
  106. package/docs/api_reference/interfaces/AIChatResponse.html +2 -2
  107. package/docs/api_reference/interfaces/AIGenerateRequest.html +2 -2
  108. package/docs/api_reference/interfaces/AIGenerateResponse.html +2 -2
  109. package/docs/api_reference/interfaces/AIMessage.html +2 -2
  110. package/docs/api_reference/interfaces/AIModel.html +2 -2
  111. package/docs/api_reference/interfaces/AIProviderConfig.html +2 -2
  112. package/docs/api_reference/interfaces/ChatConfig.html +3 -3
  113. package/docs/api_reference/interfaces/ChatModalProps.html +7 -0
  114. package/docs/api_reference/interfaces/CreateMemoryOptions.html +2 -2
  115. package/docs/api_reference/interfaces/FeatureEvaluation.html +7 -7
  116. package/docs/api_reference/interfaces/FeatureFlagConfig.html +9 -9
  117. package/docs/api_reference/interfaces/FeatureFlagContextValue.html +8 -8
  118. package/docs/api_reference/interfaces/FeatureFlagProviderProps.html +2 -2
  119. package/docs/api_reference/interfaces/FeedbackButtonProps.html +10 -10
  120. package/docs/api_reference/interfaces/FeedbackCategories.html +2 -2
  121. package/docs/api_reference/interfaces/FeedbackModalProps.html +2 -2
  122. package/docs/api_reference/interfaces/FeedbackPriorities.html +2 -2
  123. package/docs/api_reference/interfaces/FeedbackRequest.html +2 -2
  124. package/docs/api_reference/interfaces/FeedbackResponse.html +2 -2
  125. package/docs/api_reference/interfaces/FileUploadResult.html +2 -2
  126. package/docs/api_reference/interfaces/GatewayChatRequest.html +2 -2
  127. package/docs/api_reference/interfaces/GatewayChatResponse.html +2 -2
  128. package/docs/api_reference/interfaces/GatewayContract.html +2 -2
  129. package/docs/api_reference/interfaces/GatewayGenerateRequest.html +2 -2
  130. package/docs/api_reference/interfaces/GatewayGenerateResponse.html +2 -2
  131. package/docs/api_reference/interfaces/GatewayHealthResponse.html +2 -2
  132. package/docs/api_reference/interfaces/GatewayMemoryRecord.html +2 -2
  133. package/docs/api_reference/interfaces/GatewayMemoryResponse.html +2 -2
  134. package/docs/api_reference/interfaces/GatewayMessage.html +2 -2
  135. package/docs/api_reference/interfaces/GatewayMessageContent.html +2 -2
  136. package/docs/api_reference/interfaces/GatewayModel.html +2 -2
  137. package/docs/api_reference/interfaces/GatewayModelsResponse.html +2 -2
  138. package/docs/api_reference/interfaces/MemorySearchFilters.html +2 -2
  139. package/docs/api_reference/interfaces/MigrationProgress.html +2 -2
  140. package/docs/api_reference/interfaces/MigrationStatus.html +2 -2
  141. package/docs/api_reference/interfaces/NotificationConfig.html +2 -2
  142. package/docs/api_reference/interfaces/NotificationContextType.html +2 -2
  143. package/docs/api_reference/interfaces/NotificationProviderProps.html +2 -2
  144. package/docs/api_reference/interfaces/PackageSettings.html +3 -3
  145. package/docs/api_reference/interfaces/SearchOptions.html +2 -2
  146. package/docs/api_reference/interfaces/SearchResult.html +2 -2
  147. package/docs/api_reference/interfaces/SubscriptionExpiredGuardProps.html +2 -2
  148. package/docs/api_reference/interfaces/SubscriptionExpiredModalProps.html +2 -2
  149. package/docs/api_reference/interfaces/TTSOptions.html +2 -2
  150. package/docs/api_reference/interfaces/TTSProgress.html +2 -2
  151. package/docs/api_reference/interfaces/TrialUsage.html +2 -2
  152. package/docs/api_reference/interfaces/UploadRequest.html +3 -3
  153. package/docs/api_reference/interfaces/UseTTSReturn.html +2 -2
  154. package/docs/api_reference/interfaces/VectorDocument.html +2 -2
  155. package/docs/api_reference/interfaces/VectorMemory.html +2 -2
  156. package/docs/api_reference/interfaces/VectorMemoryMetadata.html +2 -2
  157. package/docs/api_reference/interfaces/VectorStoreStatus.html +2 -2
  158. package/docs/api_reference/interfaces/VoiceModelsResponse.html +2 -2
  159. package/docs/api_reference/interfaces/VoiceState.html +2 -2
  160. package/docs/api_reference/media/LICENSE +2 -2
  161. package/docs/api_reference/media/PROTECTION-README.md +6 -8
  162. package/docs/api_reference/modules.html +1 -0
  163. package/docs/api_reference/types/FeatureKey.html +1 -1
  164. package/docs/api_reference/types/FeatureMatrix.html +1 -1
  165. package/docs/api_reference/types/GatewayQueryOptions.html +1 -1
  166. package/docs/api_reference/types/LogContext.html +1 -1
  167. package/docs/api_reference/types/SubscriptionTier.html +1 -1
  168. package/docs/api_reference/variables/DEFAULT_TIER_FEATURES.html +1 -1
  169. package/docs/api_reference/variables/FeatureFlagContext.html +1 -1
  170. package/docs/api_reference/variables/OSS_DEFAULT_FEATURES.html +1 -1
  171. package/docs/api_reference/variables/SYSTEM_FLAGS.html +1 -1
  172. package/docs/api_reference/variables/authenticationService.html +1 -1
  173. package/docs/api_reference/variables/debugLogger-1.html +1 -1
  174. package/docs/api_reference/variables/featureFlagService-1.html +1 -1
  175. package/docs/api_reference/variables/notificationService-1.html +1 -1
  176. package/docs/api_reference/variables/vectorDatabaseService-1.html +1 -1
  177. package/docs/api_reference/variables/vectorMigrationService-1.html +1 -1
  178. package/docs/api_reference/variables/voiceService-1.html +1 -1
  179. package/package.json +11 -13
  180. package/dist/chat-QXB526NZ.mjs +0 -11
  181. package/dist/chunk-BIPELT57.mjs.map +0 -1
  182. /package/dist/{chat-QXB526NZ.mjs.map → chat-OLCX6TBK.mjs.map} +0 -0
  183. /package/dist/{modelStore-Y3LZWRQC.mjs.map → chat-provider.mjs.map} +0 -0
@@ -1,4 +1,10 @@
1
- <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>@burtson-labs/bandit-engine</title><meta name="description" content="Documentation for @burtson-labs/bandit-engine"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base="."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">@burtson-labs/bandit-engine</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h1>@burtson-labs/bandit-engine</h1></div><div class="tsd-panel tsd-typography"><p><a href="https://burtson.ai"><img src="https://cdn.burtson.ai/logos/burtson-labs-logo-alt.png" alt="Burtson Labs Logo" width="140" /></a></p>
1
+ <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>@burtson-labs/bandit-engine</title><meta name="description" content="Documentation for @burtson-labs/bandit-engine"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base="."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="index.html" class="title">@burtson-labs/bandit-engine</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h1>@burtson-labs/bandit-engine</h1></div><div class="tsd-panel tsd-typography"><a href="https://burtson.ai">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://cdn.burtson.ai/logos/burtson-labs-logo-alt.png" />
4
+ <source media="(prefers-color-scheme: light)" srcset="https://cdn.burtson.ai/logos/burtson-labs-logo.png" />
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
+ </picture>
7
+ </a>
2
8
  <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" alt="npm version"></a>
3
9
  <a href="https://www.typescriptlang.org/" target="_blank" class="external"><img src="https://img.shields.io/badge/TypeScript-5.x-3178c6?logo=typescript&amp;logoColor=white" alt="TypeScript"></a>
4
10
  <a href="./LICENSE"><img src="https://img.shields.io/badge/License-BUSL--1.1-red" alt="License: BUSL-1.1"></a></p>
@@ -30,6 +36,9 @@ Designed for devs who move fast, think sharp, and want full control over their A
30
36
  <blockquote>
31
37
  <p>🗝️ The generated project includes an <code>.npmrc</code> that targets <code>https://npm.pkg.github.com/</code> and expects a <code>GITHUB_NPM_TOKEN</code> environment variable. Run <code>npm login --registry=https://npm.pkg.github.com --scope=@burtson-labs</code> (or export <code>GITHUB_NPM_TOKEN</code>) before installing dependencies.</p>
32
38
  </blockquote>
39
+ <blockquote>
40
+ <p>⚠️ The scaffolded gateway focuses on OpenAI/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>
41
+ </blockquote>
33
42
  <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>
34
43
  <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>
35
44
  <thead>
@@ -68,7 +77,8 @@ Designed for devs who move fast, think sharp, and want full control over their A
68
77
  </tbody>
69
78
  </table>
70
79
  <p>The CLI prints next steps (install, copy <code>.env</code>, run dev server) once scaffolding completes, so you can copy-paste and ship immediately.</p>
71
- <a id="md:🛠️-getting-started--plug--play-ai" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🛠️ Getting Started – Plug &amp; 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><ol>
80
+ <a id="md:🛠️-getting-started--plug--play-ai" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🛠️ Getting Started – Plug &amp; 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>
81
+ <ol>
72
82
  <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>
73
83
  </ol>
74
84
  <p><em>Host it locally in <code>/public</code> or serve it from a CDN and reference it via <code>brandingConfigUrl</code>.</em></p>
@@ -79,7 +89,7 @@ Designed for devs who move fast, think sharp, and want full control over their A
79
89
  <ol start="2">
80
90
  <li><strong>Wrap your entire app with <code>ChatProvider</code> to enable Bandit features globally:</strong></li>
81
91
  </ol>
82
- <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">&quot;react&quot;</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">&quot;react-dom/client&quot;</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">&quot;./App&quot;</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">&quot;@mui/material&quot;</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">&quot;./theme/banditTheme&quot;</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">&quot;./app-initializer&quot;</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">&quot;@burtson-labs/bandit-engine&quot;</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">&quot;gateway&quot;</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">&quot;openai&quot;</span><span class="hl-1"> </span><span class="hl-8">// Backend: openai, azure-openai, anthropic, ollama</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-8">// Legacy Ollama Configuration (Still Supported)</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">&quot;/config.json&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-8">// s3ApiUrl: import.meta.env.VITE_S3_API_URL,</span><br/><span class="hl-1"> </span><span class="hl-8">// homeUrl: &quot;https://yourapp.com&quot;,</span><br/><span class="hl-1"> </span><span class="hl-8">// feedbackEmail: &quot;feedback@yourapp.com&quot;,</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">&quot;root&quot;</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">&lt;</span><span class="hl-10">React.StrictMode</span><span class="hl-9">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</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">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</span><span class="hl-10">CssBaseline</span><span class="hl-1"> </span><span class="hl-9">/&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</span><span class="hl-10">AppInitializer</span><span class="hl-1"> </span><span class="hl-9">/&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</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">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</span><span class="hl-10">App</span><span class="hl-1"> </span><span class="hl-9">/&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;/</span><span class="hl-10">ChatProvider</span><span class="hl-9">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;/</span><span class="hl-10">ThemeProvider</span><span class="hl-9">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;/</span><span class="hl-10">React.StrictMode</span><span class="hl-9">&gt;</span><br/><span class="hl-1">);</span>
92
+ <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">&quot;react&quot;</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">&quot;react-dom/client&quot;</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">&quot;./App&quot;</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">&quot;@mui/material&quot;</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">&quot;./theme/banditTheme&quot;</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">&quot;./app-initializer&quot;</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">&quot;@burtson-labs/bandit-engine&quot;</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">&quot;gateway&quot;</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">&quot;openai&quot;</span><span class="hl-1"> </span><span class="hl-8">// Backend: openai, azure-openai, anthropic, 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">&quot;/config.json&quot;</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: &quot;https://yourapp.com&quot;,</span><br/><span class="hl-1"> </span><span class="hl-8">// feedbackEmail: &quot;feedback@yourapp.com&quot;,</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">&quot;root&quot;</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">&lt;</span><span class="hl-10">React.StrictMode</span><span class="hl-9">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</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">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</span><span class="hl-10">CssBaseline</span><span class="hl-1"> </span><span class="hl-9">/&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</span><span class="hl-10">AppInitializer</span><span class="hl-1"> </span><span class="hl-9">/&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</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">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;</span><span class="hl-10">App</span><span class="hl-1"> </span><span class="hl-9">/&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;/</span><span class="hl-10">ChatProvider</span><span class="hl-9">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;/</span><span class="hl-10">ThemeProvider</span><span class="hl-9">&gt;</span><br/><span class="hl-1"> </span><span class="hl-9">&lt;/</span><span class="hl-10">React.StrictMode</span><span class="hl-9">&gt;</span><br/><span class="hl-1">);</span>
83
93
  </code><button type="button">Copy</button></pre>
84
94
 
85
95
  <blockquote>
@@ -93,14 +103,49 @@ Designed for devs who move fast, think sharp, and want full control over their A
93
103
  <pre><code class="tsx"><span class="hl-8">// Quick start - API keys in frontend (not for production)</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">&quot;ollama&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-12">baseUrl</span><span class="hl-1">: </span><span class="hl-2">&quot;http://localhost:11434&quot;</span><br/><span class="hl-1">}</span>
94
104
  </code><button type="button">Copy</button></pre>
95
105
 
96
- <p><strong>Gateway Requirements:</strong> Your backend needs to implement these endpoints:</p>
106
+ <p><strong>Gateway Requirements:</strong> Implement the endpoints that match the features you turn on:</p>
97
107
  <ul>
98
- <li><code>GET /api/health</code> - Health check</li>
99
- <li><code>POST /api/chat/completions</code> - Chat completions</li>
100
- <li><code>POST /api/generate</code> - Text generation</li>
101
- <li><code>POST /api/tts</code> - Text-to-Speech (optional, for voice features)</li>
102
- <li><code>GET /api/tts/available-models</code> - TTS model listing (optional)</li>
103
- <li><code>POST /api/stt</code> - Speech-to-Text (optional, for voice input)</li>
108
+ <li><strong>Core status &amp; discovery</strong>
109
+ <ul>
110
+ <li><code>GET /api/health</code> system health and provider availability</li>
111
+ <li><code>GET /api/models</code> and <code>GET /api/models/{provider}</code> model inventory</li>
112
+ <li><code>GET /api/memory</code> hydrate personal memory when the feature is enabled</li>
113
+ </ul>
114
+ </li>
115
+ <li><strong>Chat &amp; text generation</strong>
116
+ <ul>
117
+ <li><code>POST /api/chat/completions</code> — default provider routing</li>
118
+ <li><code>POST /api/{provider}/chat/completions</code> — provider-specific routing (e.g. <code>openai</code>, <code>azure-openai</code>, <code>anthropic</code>)</li>
119
+ <li><code>POST /api/ollama/chat</code> — native Ollama chat format</li>
120
+ <li><code>POST /api/generate</code> — non-chat generation (conversation starters, summaries, etc.)</li>
121
+ <li><code>POST /api/{provider}/generate</code> — same contract, but scoped per provider (required for conversation starters to respect OpenAI vs. Ollama routing)</li>
122
+ </ul>
123
+ </li>
124
+ <li><strong>Knowledge &amp; vector search</strong> (required for memories, knowledge management, and MCP document tools)
125
+ <ul>
126
+ <li><code>POST /api/embedding/embed-memory</code></li>
127
+ <li><code>POST /api/embedding/batch-embed-memories</code></li>
128
+ <li><code>POST /api/embedding/embed-document</code></li>
129
+ <li><code>POST /api/embedding/search</code> and <code>POST /api/embedding/search-memories</code></li>
130
+ <li><code>GET /api/embedding/my-memories</code> (with <code>skip</code>/<code>limit</code>)</li>
131
+ <li><code>DELETE /api/embedding/memory/{memoryId}</code> and <code>PUT /api/embedding/memory/{memoryId}/pin</code></li>
132
+ <li><code>GET /api/embedding/available-files</code> and <code>GET /api/embedding/files</code></li>
133
+ <li>See <a href="#md:file-storage-api-contract">File Storage API Contract</a> for the companion <code>/file/*</code> routes used to upload and download source documents.</li>
134
+ </ul>
135
+ </li>
136
+ <li><strong>Voice &amp; transcription</strong>
137
+ <ul>
138
+ <li><code>POST /api/tts</code> — synthesize speech</li>
139
+ <li><code>GET /api/tts/available-models</code> — advertise available voices</li>
140
+ <li><code>POST /api/stt/transcribe</code> — speech-to-text ingestion</li>
141
+ </ul>
142
+ </li>
143
+ <li><strong>Feedback &amp; subscriptions</strong> (optional but recommended)
144
+ <ul>
145
+ <li><code>POST /api/feedback</code> — submit in-app feedback</li>
146
+ <li><code>GET /subscription/{userId}</code> and <code>PUT /subscription/{userId}</code> — synchronize subscription tiers used by the feature-flag system</li>
147
+ </ul>
148
+ </li>
104
149
  </ul>
105
150
  <blockquote>
106
151
  <p><strong>⚠️ Important:</strong> The Bandit Engine automatically routes to provider-specific endpoints:</p>
@@ -139,7 +184,7 @@ OLLAMA_URL=http://localhost:11434 # or the remote daemon address
139
184
  <li><strong>Output</strong>: Audio file (MP3, WAV, etc.) or streaming audio</li>
140
185
  <li><strong>Compatible with</strong>: OpenAI TTS, Azure Speech, Google Cloud TTS, AWS Polly, local TTS servers, or custom implementations</li>
141
186
  </ul>
142
- <p><strong>STT Endpoint (<code>POST /api/stt</code>)</strong></p>
187
+ <p><strong>STT Endpoint (<code>POST /api/stt/transcribe</code>)</strong></p>
143
188
  <ul>
144
189
  <li><strong>Input</strong>: Audio file upload (multipart/form-data)</li>
145
190
  <li><strong>Output</strong>: <code>{ text: string }</code> or <code>{ transcription: string }</code></li>
@@ -150,6 +195,9 @@ OLLAMA_URL=http://localhost:11434 # or the remote daemon address
150
195
  <li><strong>Output</strong>: <code>{ models: string[], defaultModel: string, fallbackModel: string }</code></li>
151
196
  <li>Used for automatic service availability detection and voice model selection</li>
152
197
  </ul>
198
+ <blockquote>
199
+ <p>Quickstart note: the generated Express gateway ships these TTS/STT routes as <code>501</code> placeholders so you can connect your own provider. Voice features remain disabled until you implement them server-side.</p>
200
+ </blockquote>
153
201
  <p>See the <a href="media/02_gateway_api.md">Gateway API Contract</a> for complete implementation examples in multiple languages.</p>
154
202
  <p>Use the Management interface to switch providers anytime or migrate from direct to gateway setup.</p>
155
203
  <ol start="3">
@@ -317,27 +365,39 @@ When using Bandit components as custom elements (e.g., in Angular, Vue, or stati
317
365
  <a id="md:📸-live-preview" class="tsd-anchor"></a><h2 class="tsd-anchor-link">📸 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>
318
366
  <p><strong>Chat Demo – Your AI-powered UI</strong></p>
319
367
  <p align="center">
320
- <img src="./public/images/chat-demo.jpg" alt="Bandit chat session showing multi-turn conversation with inline actions" width="600" />
368
+ <a href="https://cdn.burtson.ai/images/chat-demo.jpg" target="_blank" rel="noopener">
369
+ <img src="https://cdn.burtson.ai/images/chat-demo.jpg" alt="Bandit chat session showing multi-turn conversation with multi-device layout" width="600" style="width: 100%; max-width: 600px; height: auto;" />
370
+ </a>
321
371
  </p>
322
372
  <p><strong>Conversation Drawer &amp; Project Context</strong></p>
323
373
  <p align="center">
324
- <img src="./public/images/chat-demo-2.jpg" alt="Chat drawer open with projects list and answered question" width="600" />
374
+ <a href="https://cdn.burtson.ai/images/chat-demo-2.jpg" target="_blank" rel="noopener">
375
+ <img src="https://cdn.burtson.ai/images/chat-demo-2.jpg" alt="Chat drawer open with projects list and answered question" width="600" style="width: 100%; max-width: 600px; height: auto;" />
376
+ </a>
325
377
  </p>
326
378
  <p><strong>Chat Modal – Quick Assist Anywhere</strong></p>
327
379
  <p align="center">
328
- <img src="./public/images/chat-modal.jpg" alt="Chat modal with control center options and message composer" width="600" />
380
+ <a href="https://cdn.burtson.ai/images/chat-modal.jpg" target="_blank" rel="noopener">
381
+ <img src="https://cdn.burtson.ai/images/chat-modal.jpg" alt="Chat modal with control center options and message composer" width="600" style="width: 100%; max-width: 600px; height: auto;" />
382
+ </a>
329
383
  </p>
330
384
  <p><strong>Management – Branding Controls</strong></p>
331
385
  <p align="center">
332
- <img src="./public/images/mgmt-branding.jpg" alt="Management interface branding tab showing logo and color options" width="600" />
386
+ <a href="https://cdn.burtson.ai/images/mgmt-branding.jpg" target="_blank" rel="noopener">
387
+ <img src="https://cdn.burtson.ai/images/mgmt-branding.jpg" alt="Management interface branding tab showing logo and color options" width="600" style="width: 100%; max-width: 600px; height: auto;" />
388
+ </a>
333
389
  </p>
334
390
  <p><strong>Management – Personas</strong></p>
335
391
  <p align="center">
336
- <img src="./public/images/mgmt-personalities.jpg" alt="Management interface personas tab with configurable AI personalities" width="600" />
392
+ <a href="https://cdn.burtson.ai/images/mgmt-personalities.jpg" target="_blank" rel="noopener">
393
+ <img src="https://cdn.burtson.ai/images/mgmt-personalities.jpg" alt="Management interface personas tab with configurable AI personalities" width="600" style="width: 100%; max-width: 600px; height: auto;" />
394
+ </a>
337
395
  </p>
338
396
  <p><strong>Management – Preferences</strong></p>
339
397
  <p align="center">
340
- <img src="./public/images/mgmt-preferences.jpg" alt="Management interface preferences tab with feature toggles" width="600" />
398
+ <a href="https://cdn.burtson.ai/images/mgmt-preferences.jpg" target="_blank" rel="noopener">
399
+ <img src="https://cdn.burtson.ai/images/mgmt-preferences.jpg" alt="Management interface preferences tab with feature toggles" width="600" style="width: 100%; max-width: 600px; height: auto;" />
400
+ </a>
341
401
  </p>
342
402
  <ol start="4">
343
403
  <li><strong>🌐 CDN-Based Config (Optional)</strong></li>
@@ -358,12 +418,24 @@ When using Bandit components as custom elements (e.g., in Angular, Vue, or stati
358
418
  <li><code>gatewayApiUrl</code>: Gateway API base URL for AI, TTS, STT, and MCP</li>
359
419
  <li><code>aiProvider</code>: Provider configuration object (recommended for new installs)</li>
360
420
  <li><code>ollamaUrl</code>: Legacy Ollama base URL (deprecated, prefer <code>aiProvider</code>)</li>
361
- <li><code>s3ApiUrl</code>: Optional file storage API base URL (defaults to <code>gatewayApiUrl</code>)</li>
421
+ <li><code>fileStorageApiUrl</code>: Optional file storage API base URL (defaults to <code>gatewayApiUrl</code>)</li>
362
422
  <li><code>brandingConfigUrl</code>: Hosted branding JSON used to hydrate UI theming</li>
363
423
  <li><code>homeUrl</code>: Optional URL for the home button in management UI</li>
364
424
  <li><code>feedbackEmail</code>: Optional email address for feedback submissions</li>
365
425
  <li><code>featureFlags</code>: Optional feature flag configuration (see examples below)</li>
426
+ <li><code>types</code>: Official TypeScript entry point is available at <code>@burtson-labs/bandit-engine/types</code>. Importing from that path gives you rich IntelliSense for <code>ChatProviderProps</code>, <code>PackageSettings</code>, <code>ChatModalProps</code>, gateway contracts, and more.</li>
427
+ </ul>
428
+ <a id="md:file-storage-api-contract" class="tsd-anchor"></a><h3 class="tsd-anchor-link">File Storage API Contract<a href="#md:file-storage-api-contract" 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>Enabling <code>fileStorageApiUrl</code> activates document uploads for vector memories, but the CLI quickstart intentionally leaves the backend stubbed. When you point the frontend at a file storage service, Bandit expects these authenticated endpoints:</p>
429
+ <ul>
430
+ <li><code>POST /file/upload</code> — <code>multipart/form-data</code> body with <code>file</code> and optional <code>shareWithTeam</code>; returns <code>{ fileId, message? }</code></li>
431
+ <li><code>GET /file/files?skip=0&amp;limit=50</code> — lists previously uploaded files and metadata (<code>id</code>, <code>filename</code>, <code>size</code>, <code>contentType</code>, <code>updatedAt</code>)</li>
432
+ <li><code>GET /file/download/{fileId}</code> — streams the file associated with the supplied identifier</li>
366
433
  </ul>
434
+ <p>All requests include a Bearer token issued by your gateway. Implementers can back these routes with S3, MinIO, or any storage provider — the frontend only requires the contract above.</p>
435
+ <p>These file operations are invoked in tandem with the <code>/api/embedding/*</code> endpoints described earlier to keep the vector index in sync.</p>
436
+ <blockquote>
437
+ <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>
438
+ </blockquote>
367
439
  <a id="md:🤖-ai-provider-system" class="tsd-anchor"></a><h2 class="tsd-anchor-link">🤖 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>
368
440
  <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>
369
441
  <li><strong>🌟 Gateway Provider</strong> (Recommended): Routes all requests through your secure .NET 9 backend</li>
@@ -401,7 +473,6 @@ Your gateway API can be built with any technology (Node.js, Python, .NET, Java,
401
473
  <li><strong>Test Connection</strong>: Use the Management interface to validate</li>
402
474
  <li><strong>Update API Keys</strong>: Move keys from frontend to backend config</li>
403
475
  </ol>
404
- <p>See <code>GATEWAY_MIGRATION_GUIDE.md</code> for detailed migration steps.</p>
405
476
  <a id="md:imagemultimodal-support" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Image/Multimodal Support<a href="#md:imagemultimodal-support" 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 provides comprehensive image support across all AI providers through the gateway architecture:</p>
406
477
  <p><strong>Supported Providers &amp; Models:</strong></p>
407
478
  <ul>
@@ -603,7 +674,7 @@ Your gateway API should accept images in the standardized format sent by the Ban
603
674
  </code><button type="button">Copy</button></pre>
604
675
 
605
676
  <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>⚠️ <strong>Legacy TTS/STT URLs are deprecated.</strong> Use the unified <code>gatewayApiUrl</code> instead:</p>
606
- <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">&quot;/api/tts&quot;</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">&quot;/api/stt&quot;</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">&quot;http://localhost:11434&quot;</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">&quot;gateway&quot;</span><span class="hl-1">, </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-2">&quot;https://your-gateway.com&quot;</span><span class="hl-1">, </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">&quot;openai&quot;</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">&quot;https://your-gateway.com&quot;</span><span class="hl-1">, </span><span class="hl-8">// Handles TTS, STT, and MCP</span><br/><span class="hl-1">};</span>
677
+ <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">&quot;/api/tts&quot;</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">&quot;/api/stt/transcribe&quot;</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">&quot;http://localhost:11434&quot;</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">&quot;gateway&quot;</span><span class="hl-1">, </span><span class="hl-5">gatewayUrl:</span><span class="hl-1"> </span><span class="hl-2">&quot;https://your-gateway.com&quot;</span><span class="hl-1">, </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">&quot;openai&quot;</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">&quot;https://your-gateway.com&quot;</span><span class="hl-1">, </span><span class="hl-8">// Handles TTS, STT, and MCP</span><br/><span class="hl-1">};</span>
607
678
  </code><button type="button">Copy</button></pre>
608
679
 
609
680
  <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>
@@ -629,7 +700,7 @@ Your gateway API should accept images in the standardized format sent by the Ban
629
700
  </ul>
630
701
  </li>
631
702
  <li>
632
- <p><code>POST /api/stt</code> - Speech-to-Text transcription</p>
703
+ <p><code>POST /api/stt/transcribe</code> - Speech-to-Text transcription</p>
633
704
  <ul>
634
705
  <li>Input: Audio file upload (multipart/form-data)</li>
635
706
  <li>Output: <code>{ text: string }</code> or <code>{ transcription: string }</code></li>
@@ -671,7 +742,7 @@ Your gateway API should accept images in the standardized format sent by the Ban
671
742
  <hr>
672
743
  <a id="md:📌-migration-guide" class="tsd-anchor"></a><h2 class="tsd-anchor-link">📌 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>
673
744
  <p><strong>Before (Deprecated):</strong></p>
674
- <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">&quot;https://your-tts-service.com/api/tts&quot;</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">&quot;https://your-stt-service.com/api/stt&quot;</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">&quot;https://your-ollama.com&quot;</span><span class="hl-1">,</span><br/><span class="hl-1">};</span>
745
+ <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">&quot;https://your-tts-service.com/api/tts&quot;</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">&quot;https://your-stt-service.com/api/stt/transcribe&quot;</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">&quot;https://your-ollama.com&quot;</span><span class="hl-1">,</span><br/><span class="hl-1">};</span>
675
746
  </code><button type="button">Copy</button></pre>
676
747
 
677
748
  <p><strong>After (Recommended):</strong></p>
@@ -729,8 +800,8 @@ Your gateway API should accept images in the standardized format sent by the Ban
729
800
  <li><strong>Website</strong>: <a href="https://burtson.ai/license" target="_blank" class="external">https://burtson.ai/license</a></li>
730
801
  <li><strong>Sales</strong>: <a href="mailto:sales@burtson.ai">sales@burtson.ai</a></li>
731
802
  </ul>
732
- <a id="md:👨💻-for-contributors--developers" class="tsd-anchor"></a><h3 class="tsd-anchor-link">👨‍💻 For Contributors &amp; 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 making changes to this codebase:</p>
733
- <pre><code class="bash"><span class="hl-8"># Essential pre-push workflow - run before every commit</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">pre-push</span>
803
+ <a id="md:👨💻-for-contributors--developers" class="tsd-anchor"></a><h3 class="tsd-anchor-link">👨‍💻 For Contributors &amp; 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>
804
+ <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"># Ensure license headers and fingerprints are intact</span>
734
805
  </code><button type="button">Copy</button></pre>
735
806
 
736
807
  <p><strong>Developer Resources:</strong></p>
@@ -748,9 +819,9 @@ Your gateway API should accept images in the standardized format sent by the Ban
748
819
  <li>Prevents unauthorized distribution</li>
749
820
  </ul>
750
821
  <p><strong>Quick Commands:</strong></p>
751
- <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><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">pre-push</span><span class="hl-1"> </span><span class="hl-8"># Complete pre-push validation</span>
822
+ <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>
752
823
  </code><button type="button">Copy</button></pre>
753
824
 
754
825
  <hr>
755
826
  <p><strong>© 2025 Burtson Labs LLC. All rights reserved.</strong></p>
756
- </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:⚡-cli-quick-start"><span>⚡ CLI <wbr/>Quick <wbr/>Start</span></a><ul><li><a href="#md:cli-options"><span>CLI <wbr/>Options</span></a></li></ul><a href="#md:🛠️-getting-started--plug--play-ai"><span>🛠️ <wbr/>Getting <wbr/>Started – <wbr/>Plug &amp; <wbr/>Play AI</span></a><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><a href="#md:🧩-consuming-the-components"><span>🧩 <wbr/>Consuming the <wbr/>Components</span></a><ul><li><a href="#md:🛠️-utility-functions--hooks"><span>🛠️ <wbr/>Utility <wbr/>Functions &amp; <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><a href="#md:🎛️-chat-control-center-chatmodal-feature"><span>🎛️ <wbr/>Chat <wbr/>Control <wbr/>Center (<wbr/>Chat<wbr/>Modal <wbr/>Feature)</span></a><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><a href="#md:⚙️-angular-integration-experimental"><span>⚙️ <wbr/>Angular <wbr/>Integration (<wbr/>Experimental)</span></a><a href="#md:⚙️-vuejs-integration-experimental"><span>⚙️ <wbr/>Vue.js <wbr/>Integration (<wbr/>Experimental)</span></a><a href="#md:📦-custom-element-support"><span>📦 <wbr/>Custom <wbr/>Element <wbr/>Support</span></a><a href="#md:📸-live-preview"><span>📸 <wbr/>Live <wbr/>Preview</span></a><a href="#md:⚙️-configuration-options"><span>⚙️ <wbr/>Configuration <wbr/>Options</span></a><a href="#md:🤖-ai-provider-system"><span>🤖 AI <wbr/>Provider <wbr/>System</span></a><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><a href="#md:🔧-model-context-protocol-mcp-integration"><span>🔧 <wbr/>Model <wbr/>Context <wbr/>Protocol (MCP) <wbr/>Integration</span></a><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><a href="#md:🎛️-feature-flags--subscription-tiers"><span>🎛️ <wbr/>Feature <wbr/>Flags &amp; <wbr/>Subscription <wbr/>Tiers</span></a><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 &amp; <wbr/>Upgrade <wbr/>Prompts</span></a></li><li><a href="#md:development--testing"><span>Development &amp; <wbr/>Testing</span></a></li><li><a href="#md:backend-integration"><span>Backend <wbr/>Integration</span></a></li></ul><a href="#md:🐛-debug-logger"><span>🐛 <wbr/>Debug <wbr/>Logger</span></a><a href="#md:🔒-security-best-practices"><span>🔒 <wbr/>Security <wbr/>Best <wbr/>Practices</span></a><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><a href="#md:requirements"><span>Requirements</span></a><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><a href="#md:💡-vision--roadmap"><span>💡 <wbr/>Vision &amp; <wbr/>Roadmap</span></a><a href="#md:📌-migration-guide"><span>📌 <wbr/>Migration <wbr/>Guide</span></a><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><a href="#md:🛡️-license--protection"><span>🛡️ <wbr/>License &amp; <wbr/>Protection</span></a><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 &amp; <wbr/>Developers</span></a></li><li><a href="#md:📝-license-compliance"><span>📝 <wbr/>License <wbr/>Compliance</span></a></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>
827
+ </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:⚡-cli-quick-start"><span>⚡ CLI <wbr/>Quick <wbr/>Start</span></a><ul><li><a href="#md:cli-options"><span>CLI <wbr/>Options</span></a></li></ul><a href="#md:🛠️-getting-started--plug--play-ai"><span>🛠️ <wbr/>Getting <wbr/>Started – <wbr/>Plug &amp; <wbr/>Play AI</span></a><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><a href="#md:🧩-consuming-the-components"><span>🧩 <wbr/>Consuming the <wbr/>Components</span></a><ul><li><a href="#md:🛠️-utility-functions--hooks"><span>🛠️ <wbr/>Utility <wbr/>Functions &amp; <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><a href="#md:🎛️-chat-control-center-chatmodal-feature"><span>🎛️ <wbr/>Chat <wbr/>Control <wbr/>Center (<wbr/>Chat<wbr/>Modal <wbr/>Feature)</span></a><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><a href="#md:⚙️-angular-integration-experimental"><span>⚙️ <wbr/>Angular <wbr/>Integration (<wbr/>Experimental)</span></a><a href="#md:⚙️-vuejs-integration-experimental"><span>⚙️ <wbr/>Vue.js <wbr/>Integration (<wbr/>Experimental)</span></a><a href="#md:📦-custom-element-support"><span>📦 <wbr/>Custom <wbr/>Element <wbr/>Support</span></a><a href="#md:📸-live-preview"><span>📸 <wbr/>Live <wbr/>Preview</span></a><a href="#md:⚙️-configuration-options"><span>⚙️ <wbr/>Configuration <wbr/>Options</span></a><ul><li><a href="#md:file-storage-api-contract"><span>File <wbr/>Storage API <wbr/>Contract</span></a></li></ul><a href="#md:🤖-ai-provider-system"><span>🤖 AI <wbr/>Provider <wbr/>System</span></a><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><a href="#md:🔧-model-context-protocol-mcp-integration"><span>🔧 <wbr/>Model <wbr/>Context <wbr/>Protocol (MCP) <wbr/>Integration</span></a><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><a href="#md:🎛️-feature-flags--subscription-tiers"><span>🎛️ <wbr/>Feature <wbr/>Flags &amp; <wbr/>Subscription <wbr/>Tiers</span></a><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 &amp; <wbr/>Upgrade <wbr/>Prompts</span></a></li><li><a href="#md:development--testing"><span>Development &amp; <wbr/>Testing</span></a></li><li><a href="#md:backend-integration"><span>Backend <wbr/>Integration</span></a></li></ul><a href="#md:🐛-debug-logger"><span>🐛 <wbr/>Debug <wbr/>Logger</span></a><a href="#md:🔒-security-best-practices"><span>🔒 <wbr/>Security <wbr/>Best <wbr/>Practices</span></a><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><a href="#md:requirements"><span>Requirements</span></a><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><a href="#md:💡-vision--roadmap"><span>💡 <wbr/>Vision &amp; <wbr/>Roadmap</span></a><a href="#md:📌-migration-guide"><span>📌 <wbr/>Migration <wbr/>Guide</span></a><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><a href="#md:🛡️-license--protection"><span>🛡️ <wbr/>License &amp; <wbr/>Protection</span></a><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 &amp; <wbr/>Developers</span></a></li><li><a href="#md:📝-license-compliance"><span>📝 <wbr/>License <wbr/>Compliance</span></a></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>
@@ -1,8 +1,8 @@
1
- <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>AIChatRequest | @burtson-labs/bandit-engine</title><meta name="description" content="Documentation for @burtson-labs/bandit-engine"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@burtson-labs/bandit-engine</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">@burtson-labs/bandit-engine</a></li><li><a href="AIChatRequest.html">AIChatRequest</a></li></ul><h1>Interface AIChatRequest</h1></div><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">AIChatRequest</span> <span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#images">images</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#maxTokens">maxTokens</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#messages">messages</a><span class="tsd-signature-symbol">: </span><a href="AIMessage.html" class="tsd-signature-type tsd-kind-interface">AIMessage</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#model">model</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#options">options</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#stream">stream</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#temperature">temperature</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/32fb833168530285448be3061b05dc43e4a8f3d2/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L28">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:28</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="AIChatRequest.html#images" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>images?</span></a>
1
+ <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>AIChatRequest | @burtson-labs/bandit-engine</title><meta name="description" content="Documentation for @burtson-labs/bandit-engine"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@burtson-labs/bandit-engine</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">@burtson-labs/bandit-engine</a></li><li><a href="AIChatRequest.html">AIChatRequest</a></li></ul><h1>Interface AIChatRequest</h1></div><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">AIChatRequest</span> <span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#images">images</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#maxTokens">maxTokens</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#messages">messages</a><span class="tsd-signature-symbol">: </span><a href="AIMessage.html" class="tsd-signature-type tsd-kind-interface">AIMessage</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#model">model</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#options">options</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#stream">stream</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="AIChatRequest.html#temperature">temperature</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L28">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:28</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="AIChatRequest.html#images" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>images?</span></a>
2
2
  <a href="AIChatRequest.html#maxTokens" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>max<wbr/>Tokens?</span></a>
3
3
  <a href="AIChatRequest.html#messages" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>messages</span></a>
4
4
  <a href="AIChatRequest.html#model" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>model</span></a>
5
5
  <a href="AIChatRequest.html#options" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>options?</span></a>
6
6
  <a href="AIChatRequest.html#stream" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>stream?</span></a>
7
7
  <a href="AIChatRequest.html#temperature" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>temperature?</span></a>
8
- </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="images" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>images</span><a href="#images" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">images</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/32fb833168530285448be3061b05dc43e4a8f3d2/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L34">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:34</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="maxTokens" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>max<wbr/>Tokens</span><a href="#maxTokens" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">max<wbr/>Tokens</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/32fb833168530285448be3061b05dc43e4a8f3d2/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L33">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:33</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="messages" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>messages</span><a href="#messages" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">messages</span><span class="tsd-signature-symbol">:</span> <a href="AIMessage.html" class="tsd-signature-type tsd-kind-interface">AIMessage</a><span class="tsd-signature-symbol">[]</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/32fb833168530285448be3061b05dc43e4a8f3d2/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L30">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:30</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="model" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>model</span><a href="#model" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">model</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/32fb833168530285448be3061b05dc43e4a8f3d2/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L29">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:29</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="options" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>options</span><a href="#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><div class="tsd-signature"><span class="tsd-kind-property">options</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">&gt;</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/32fb833168530285448be3061b05dc43e4a8f3d2/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L35">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:35</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="stream" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>stream</span><a href="#stream" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">stream</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/32fb833168530285448be3061b05dc43e4a8f3d2/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L31">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:31</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="temperature" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>temperature</span><a href="#temperature" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">temperature</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/32fb833168530285448be3061b05dc43e4a8f3d2/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L32">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:32</a></li></ul></aside></section></section></details></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"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#images" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>images</span></a><a href="#maxTokens" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>max<wbr/>Tokens</span></a><a href="#messages" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>messages</span></a><a href="#model" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>model</span></a><a href="#options" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>options</span></a><a href="#stream" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>stream</span></a><a href="#temperature" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>temperature</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html"><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>
8
+ </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="images" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>images</span><a href="#images" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">images</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L34">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:34</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="maxTokens" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>max<wbr/>Tokens</span><a href="#maxTokens" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">max<wbr/>Tokens</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L33">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:33</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="messages" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>messages</span><a href="#messages" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">messages</span><span class="tsd-signature-symbol">:</span> <a href="AIMessage.html" class="tsd-signature-type tsd-kind-interface">AIMessage</a><span class="tsd-signature-symbol">[]</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L30">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:30</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="model" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>model</span><a href="#model" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">model</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L29">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:29</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="options" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>options</span><a href="#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><div class="tsd-signature"><span class="tsd-kind-property">options</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">&gt;</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L35">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:35</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="stream" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>stream</span><a href="#stream" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">stream</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L31">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:31</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="temperature" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>temperature</span><a href="#temperature" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">temperature</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/services/ai-provider/types/common.types.ts#L32">packages/bandit-engine/src/services/ai-provider/types/common.types.ts:32</a></li></ul></aside></section></section></details></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"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#images" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>images</span></a><a href="#maxTokens" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>max<wbr/>Tokens</span></a><a href="#messages" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>messages</span></a><a href="#model" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>model</span></a><a href="#options" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>options</span></a><a href="#stream" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>stream</span></a><a href="#temperature" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>temperature</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html"><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>