@burtson-labs/bandit-engine 2.0.9 → 2.0.11

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 (182) hide show
  1. package/README.md +74 -29
  2. package/dist/{aiProviderStore-YWJHSWFA.mjs → aiProviderStore-3YS2BZU3.mjs} +2 -2
  3. package/dist/chat-ZPJNWIXI.mjs +15 -0
  4. package/dist/chat-provider.js +211 -16
  5. package/dist/chat-provider.js.map +1 -1
  6. package/dist/chat-provider.mjs +6 -6
  7. package/dist/{chunk-CVIOLFMX.mjs → chunk-2ZNIQD26.mjs} +4 -4
  8. package/dist/{chunk-6YRLBITU.mjs → chunk-5UVULH77.mjs} +18 -9
  9. package/dist/chunk-5UVULH77.mjs.map +1 -0
  10. package/dist/{chunk-VSHO7PF2.mjs → chunk-CY227I4F.mjs} +23 -13
  11. package/dist/chunk-CY227I4F.mjs.map +1 -0
  12. package/dist/{chunk-JQ6UNJNW.mjs → chunk-IFN52MQL.mjs} +16 -10
  13. package/dist/{chunk-JQ6UNJNW.mjs.map → chunk-IFN52MQL.mjs.map} +1 -1
  14. package/dist/{chunk-AVC6IZJQ.mjs → chunk-IHJPVIGB.mjs} +179 -2
  15. package/dist/chunk-IHJPVIGB.mjs.map +1 -0
  16. package/dist/{chunk-HHKXWNCG.mjs → chunk-L7UOQ2Y2.mjs} +5 -5
  17. package/dist/{chunk-5E7S7DK3.mjs → chunk-RTQDQ6TC.mjs} +2 -2
  18. package/dist/{chunk-6IHJZCUH.mjs → chunk-UMPVXYVC.mjs} +4 -4
  19. package/dist/{chunk-PXXVEH5M.mjs → chunk-XEG45Q6V.mjs} +4 -4
  20. package/dist/{chunk-QHLKGSMB.mjs → chunk-XUBYA5I7.mjs} +2 -2
  21. package/dist/{chunk-QHLKGSMB.mjs.map → chunk-XUBYA5I7.mjs.map} +1 -1
  22. package/dist/cli/cli.js +14 -1
  23. package/dist/cli/cli.js.map +1 -1
  24. package/dist/{gateway-BXVrH8B-.d.mts → gateway-BiHRHJMM.d.mts} +3 -1
  25. package/dist/{gateway-BXVrH8B-.d.ts → gateway-BiHRHJMM.d.ts} +3 -1
  26. package/dist/index.d.mts +2 -2
  27. package/dist/index.d.ts +2 -2
  28. package/dist/index.js +282 -72
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.mjs +10 -10
  31. package/dist/management/management.js +262 -62
  32. package/dist/management/management.js.map +1 -1
  33. package/dist/management/management.mjs +8 -8
  34. package/dist/modals/chat-modal/chat-modal.js +202 -17
  35. package/dist/modals/chat-modal/chat-modal.js.map +1 -1
  36. package/dist/modals/chat-modal/chat-modal.mjs +5 -5
  37. package/dist/{modelStore-CY6SECYD.mjs → modelStore-UMJBDSEF.mjs} +2 -2
  38. package/dist/public-types.d.mts +1 -1
  39. package/dist/public-types.d.ts +1 -1
  40. package/docs/01_quickstart.md +9 -6
  41. package/docs/02_gateway_api.md +55 -12
  42. package/docs/api_reference/assets/search.js +1 -1
  43. package/docs/api_reference/classes/DebugLogger.html +11 -11
  44. package/docs/api_reference/classes/FeatureFlagService.html +13 -13
  45. package/docs/api_reference/classes/NotificationService.html +10 -10
  46. package/docs/api_reference/classes/StreamingTTSClient.html +9 -9
  47. package/docs/api_reference/classes/VectorDatabaseService.html +24 -24
  48. package/docs/api_reference/classes/VectorMigrationService.html +8 -8
  49. package/docs/api_reference/classes/VoiceService.html +2 -2
  50. package/docs/api_reference/enums/TTSState.html +2 -2
  51. package/docs/api_reference/functions/Chat.html +1 -1
  52. package/docs/api_reference/functions/ChatModal.html +1 -1
  53. package/docs/api_reference/functions/ChatProvider.html +1 -1
  54. package/docs/api_reference/functions/FeatureFlagProvider.html +1 -1
  55. package/docs/api_reference/functions/FeedbackButton.html +1 -1
  56. package/docs/api_reference/functions/FeedbackModal.html +1 -1
  57. package/docs/api_reference/functions/Management.html +1 -1
  58. package/docs/api_reference/functions/NotificationProvider.html +1 -1
  59. package/docs/api_reference/functions/SubscriptionExpiredGuard.html +1 -1
  60. package/docs/api_reference/functions/SubscriptionExpiredModal.html +1 -1
  61. package/docs/api_reference/functions/defineCustomElement.html +1 -1
  62. package/docs/api_reference/functions/getCriticalConfig.html +1 -1
  63. package/docs/api_reference/functions/getFeatureMatrix.html +1 -1
  64. package/docs/api_reference/functions/getStreamingTTSClient.html +1 -1
  65. package/docs/api_reference/functions/getSystemConstants.html +1 -1
  66. package/docs/api_reference/functions/getTTSState.html +1 -1
  67. package/docs/api_reference/functions/handleHttpError.html +1 -1
  68. package/docs/api_reference/functions/handleSubscriptionUpgrade.html +1 -1
  69. package/docs/api_reference/functions/handleValidationError.html +1 -1
  70. package/docs/api_reference/functions/initializeCoreSystem.html +1 -1
  71. package/docs/api_reference/functions/pauseTTS.html +1 -1
  72. package/docs/api_reference/functions/previewTierUpgrade.html +1 -1
  73. package/docs/api_reference/functions/resumeTTS.html +1 -1
  74. package/docs/api_reference/functions/showInfoNotification.html +1 -1
  75. package/docs/api_reference/functions/showSuccessNotification.html +1 -1
  76. package/docs/api_reference/functions/speakWithStreaming.html +1 -1
  77. package/docs/api_reference/functions/stopTTS.html +1 -1
  78. package/docs/api_reference/functions/syncSubscriptionWithAPI.html +1 -1
  79. package/docs/api_reference/functions/updateSubscriptionTier.html +1 -1
  80. package/docs/api_reference/functions/useFeatureFlag.html +1 -1
  81. package/docs/api_reference/functions/useFeatureVisibility.html +1 -1
  82. package/docs/api_reference/functions/useFeatures.html +1 -1
  83. package/docs/api_reference/functions/useGatewayHealth.html +1 -1
  84. package/docs/api_reference/functions/useGatewayMemory.html +1 -1
  85. package/docs/api_reference/functions/useGatewayModels.html +1 -1
  86. package/docs/api_reference/functions/useGlobalTTS.html +1 -1
  87. package/docs/api_reference/functions/useNotification.html +1 -1
  88. package/docs/api_reference/functions/useNotificationService.html +1 -1
  89. package/docs/api_reference/functions/useTTS.html +1 -1
  90. package/docs/api_reference/functions/useVectorStore.html +1 -1
  91. package/docs/api_reference/functions/useVoiceStore.html +2 -2
  92. package/docs/api_reference/functions/useVoices.html +1 -1
  93. package/docs/api_reference/functions/validateEnvironment.html +1 -1
  94. package/docs/api_reference/functions/validateSystemIntegrity.html +1 -1
  95. package/docs/api_reference/index.html +34 -15
  96. package/docs/api_reference/interfaces/AIChatRequest.html +2 -2
  97. package/docs/api_reference/interfaces/AIChatResponse.html +2 -2
  98. package/docs/api_reference/interfaces/AIGenerateRequest.html +2 -2
  99. package/docs/api_reference/interfaces/AIGenerateResponse.html +2 -2
  100. package/docs/api_reference/interfaces/AIMessage.html +2 -2
  101. package/docs/api_reference/interfaces/AIModel.html +2 -2
  102. package/docs/api_reference/interfaces/AIProviderConfig.html +2 -2
  103. package/docs/api_reference/interfaces/ChatConfig.html +3 -3
  104. package/docs/api_reference/interfaces/ChatModalProps.html +3 -3
  105. package/docs/api_reference/interfaces/CreateMemoryOptions.html +2 -2
  106. package/docs/api_reference/interfaces/FeatureEvaluation.html +7 -7
  107. package/docs/api_reference/interfaces/FeatureFlagConfig.html +9 -9
  108. package/docs/api_reference/interfaces/FeatureFlagContextValue.html +8 -8
  109. package/docs/api_reference/interfaces/FeatureFlagProviderProps.html +2 -2
  110. package/docs/api_reference/interfaces/FeedbackButtonProps.html +10 -10
  111. package/docs/api_reference/interfaces/FeedbackCategories.html +2 -2
  112. package/docs/api_reference/interfaces/FeedbackModalProps.html +2 -2
  113. package/docs/api_reference/interfaces/FeedbackPriorities.html +2 -2
  114. package/docs/api_reference/interfaces/FeedbackRequest.html +2 -2
  115. package/docs/api_reference/interfaces/FeedbackResponse.html +2 -2
  116. package/docs/api_reference/interfaces/FileUploadResult.html +2 -2
  117. package/docs/api_reference/interfaces/GatewayChatRequest.html +2 -2
  118. package/docs/api_reference/interfaces/GatewayChatResponse.html +2 -2
  119. package/docs/api_reference/interfaces/GatewayContract.html +2 -2
  120. package/docs/api_reference/interfaces/GatewayGenerateRequest.html +2 -2
  121. package/docs/api_reference/interfaces/GatewayGenerateResponse.html +2 -2
  122. package/docs/api_reference/interfaces/GatewayHealthResponse.html +2 -2
  123. package/docs/api_reference/interfaces/GatewayMemoryRecord.html +2 -2
  124. package/docs/api_reference/interfaces/GatewayMemoryResponse.html +2 -2
  125. package/docs/api_reference/interfaces/GatewayMessage.html +2 -2
  126. package/docs/api_reference/interfaces/GatewayMessageContent.html +2 -2
  127. package/docs/api_reference/interfaces/GatewayModel.html +2 -2
  128. package/docs/api_reference/interfaces/GatewayModelsResponse.html +2 -2
  129. package/docs/api_reference/interfaces/MemorySearchFilters.html +2 -2
  130. package/docs/api_reference/interfaces/MigrationProgress.html +2 -2
  131. package/docs/api_reference/interfaces/MigrationStatus.html +2 -2
  132. package/docs/api_reference/interfaces/NotificationConfig.html +2 -2
  133. package/docs/api_reference/interfaces/NotificationContextType.html +2 -2
  134. package/docs/api_reference/interfaces/NotificationProviderProps.html +2 -2
  135. package/docs/api_reference/interfaces/PackageSettings.html +4 -2
  136. package/docs/api_reference/interfaces/SearchOptions.html +2 -2
  137. package/docs/api_reference/interfaces/SearchResult.html +2 -2
  138. package/docs/api_reference/interfaces/SubscriptionExpiredGuardProps.html +2 -2
  139. package/docs/api_reference/interfaces/SubscriptionExpiredModalProps.html +2 -2
  140. package/docs/api_reference/interfaces/TTSOptions.html +2 -2
  141. package/docs/api_reference/interfaces/TTSProgress.html +2 -2
  142. package/docs/api_reference/interfaces/TrialUsage.html +2 -2
  143. package/docs/api_reference/interfaces/UploadRequest.html +3 -3
  144. package/docs/api_reference/interfaces/UseTTSReturn.html +2 -2
  145. package/docs/api_reference/interfaces/VectorDocument.html +2 -2
  146. package/docs/api_reference/interfaces/VectorMemory.html +2 -2
  147. package/docs/api_reference/interfaces/VectorMemoryMetadata.html +2 -2
  148. package/docs/api_reference/interfaces/VectorStoreStatus.html +2 -2
  149. package/docs/api_reference/interfaces/VoiceModelsResponse.html +2 -2
  150. package/docs/api_reference/interfaces/VoiceState.html +2 -2
  151. package/docs/api_reference/media/02_gateway_api.md +55 -12
  152. package/docs/api_reference/media/README.md +37 -9
  153. package/docs/api_reference/types/FeatureKey.html +1 -1
  154. package/docs/api_reference/types/FeatureMatrix.html +1 -1
  155. package/docs/api_reference/types/GatewayQueryOptions.html +1 -1
  156. package/docs/api_reference/types/LogContext.html +1 -1
  157. package/docs/api_reference/types/SubscriptionTier.html +1 -1
  158. package/docs/api_reference/variables/DEFAULT_TIER_FEATURES.html +1 -1
  159. package/docs/api_reference/variables/FeatureFlagContext.html +1 -1
  160. package/docs/api_reference/variables/OSS_DEFAULT_FEATURES.html +1 -1
  161. package/docs/api_reference/variables/SYSTEM_FLAGS.html +1 -1
  162. package/docs/api_reference/variables/authenticationService.html +1 -1
  163. package/docs/api_reference/variables/debugLogger-1.html +1 -1
  164. package/docs/api_reference/variables/featureFlagService-1.html +1 -1
  165. package/docs/api_reference/variables/notificationService-1.html +1 -1
  166. package/docs/api_reference/variables/vectorDatabaseService-1.html +1 -1
  167. package/docs/api_reference/variables/vectorMigrationService-1.html +1 -1
  168. package/docs/api_reference/variables/voiceService-1.html +1 -1
  169. package/package.json +14 -1
  170. package/dist/chat-OLCX6TBK.mjs +0 -15
  171. package/dist/chunk-6YRLBITU.mjs.map +0 -1
  172. package/dist/chunk-AVC6IZJQ.mjs.map +0 -1
  173. package/dist/chunk-VSHO7PF2.mjs.map +0 -1
  174. package/docs/api_reference/media/README-1.md +0 -23
  175. /package/dist/{aiProviderStore-YWJHSWFA.mjs.map → aiProviderStore-3YS2BZU3.mjs.map} +0 -0
  176. /package/dist/{chat-OLCX6TBK.mjs.map → chat-ZPJNWIXI.mjs.map} +0 -0
  177. /package/dist/{chunk-CVIOLFMX.mjs.map → chunk-2ZNIQD26.mjs.map} +0 -0
  178. /package/dist/{chunk-HHKXWNCG.mjs.map → chunk-L7UOQ2Y2.mjs.map} +0 -0
  179. /package/dist/{chunk-5E7S7DK3.mjs.map → chunk-RTQDQ6TC.mjs.map} +0 -0
  180. /package/dist/{chunk-6IHJZCUH.mjs.map → chunk-UMPVXYVC.mjs.map} +0 -0
  181. /package/dist/{chunk-PXXVEH5M.mjs.map → chunk-XEG45Q6V.mjs.map} +0 -0
  182. /package/dist/{modelStore-CY6SECYD.mjs.map → modelStore-UMJBDSEF.mjs.map} +0 -0
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>useVoiceStore | @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="useVoiceStore.html">useVoiceStore</a></li></ul><h1>Function useVoiceStore</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="useVoiceStore" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Voice<wbr/>Store</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a><a href="#useVoiceStore" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/store/voiceStore.ts#L41">packages/bandit-engine/src/store/voiceStore.ts:41</a></li></ul></aside></li><li class="tsd-signature tsd-anchor-link"><a id="useVoiceStore-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Voice<wbr/>Store</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">selector</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a><a href="#useVoiceStore-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span><a id="useVoiceStore-1.U" class="tsd-anchor"></a><span class="tsd-kind-type-parameter">U</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">selector</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a><span class="tsd-signature-symbol">)</span></span><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">state</span>: <a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a></h4></li></ul></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/store/voiceStore.ts#L41">packages/bandit-engine/src/store/voiceStore.ts:41</a></li></ul></aside></li><li class="tsd-signature tsd-anchor-link"><a id="useVoiceStore-2" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Voice<wbr/>Store</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">selector</span>, <span class="tsd-kind-parameter">equalityFn</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a><a href="#useVoiceStore-2" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span><a id="useVoiceStore-2.U-1" class="tsd-anchor"></a><span class="tsd-kind-type-parameter">U</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">selector</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a><span class="tsd-signature-symbol">)</span></span><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">state</span>: <a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></h4></li></ul></li></ul></li><li><span><span class="tsd-kind-parameter">equalityFn</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">a</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a>, <span class="tsd-kind-parameter">b</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span></span><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">a</span>, <span class="tsd-kind-parameter">b</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">a</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></span></li><li><span><span class="tsd-kind-parameter">b</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4></li></ul></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Deprecated"><h4 class="tsd-anchor-link"><a id="Deprecated" class="tsd-anchor"></a>Deprecated<a href="#Deprecated" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>Use <code>createWithEqualityFn</code> from 'zustand/traditional'</p>
2
- </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/store/voiceStore.ts#L41">packages/bandit-engine/src/store/voiceStore.ts:41</a></li></ul></aside></li></ul></section><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="useVoiceStore.html#destroy" class="tsd-index-link deprecated tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>destroy</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>useVoiceStore | @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="useVoiceStore.html">useVoiceStore</a></li></ul><h1>Function useVoiceStore</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="useVoiceStore" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Voice<wbr/>Store</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a><a href="#useVoiceStore" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/01c8108b418efc984f31ac1eef1f5b7969bc8bae/packages/bandit-engine/src/store/voiceStore.ts#L41">packages/bandit-engine/src/store/voiceStore.ts:41</a></li></ul></aside></li><li class="tsd-signature tsd-anchor-link"><a id="useVoiceStore-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Voice<wbr/>Store</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">selector</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a><a href="#useVoiceStore-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span><a id="useVoiceStore-1.U" class="tsd-anchor"></a><span class="tsd-kind-type-parameter">U</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">selector</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a><span class="tsd-signature-symbol">)</span></span><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">state</span>: <a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a></h4></li></ul></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-1.U">U</a></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/01c8108b418efc984f31ac1eef1f5b7969bc8bae/packages/bandit-engine/src/store/voiceStore.ts#L41">packages/bandit-engine/src/store/voiceStore.ts:41</a></li></ul></aside></li><li class="tsd-signature tsd-anchor-link"><a id="useVoiceStore-2" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Voice<wbr/>Store</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">selector</span>, <span class="tsd-kind-parameter">equalityFn</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a><a href="#useVoiceStore-2" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span><a id="useVoiceStore-2.U-1" class="tsd-anchor"></a><span class="tsd-kind-type-parameter">U</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">selector</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a><span class="tsd-signature-symbol">)</span></span><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">state</span>: <a href="../interfaces/VoiceState.html" class="tsd-signature-type tsd-kind-interface">VoiceState</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></h4></li></ul></li></ul></li><li><span><span class="tsd-kind-parameter">equalityFn</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">a</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a>, <span class="tsd-kind-parameter">b</span><span class="tsd-signature-symbol">: </span><a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span></span><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">a</span>, <span class="tsd-kind-parameter">b</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">a</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></span></li><li><span><span class="tsd-kind-parameter">b</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4></li></ul></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="useVoiceStore.html#useVoiceStore-2.U-1">U</a></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Deprecated"><h4 class="tsd-anchor-link"><a id="Deprecated" class="tsd-anchor"></a>Deprecated<a href="#Deprecated" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>Use <code>createWithEqualityFn</code> from 'zustand/traditional'</p>
2
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/01c8108b418efc984f31ac1eef1f5b7969bc8bae/packages/bandit-engine/src/store/voiceStore.ts#L41">packages/bandit-engine/src/store/voiceStore.ts:41</a></li></ul></aside></li></ul></section><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="useVoiceStore.html#destroy" class="tsd-index-link deprecated tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>destroy</span></a>
3
3
  <a href="useVoiceStore.html#getInitialState" class="tsd-index-link tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>get<wbr/>Initial<wbr/>State</span></a>
4
4
  <a href="useVoiceStore.html#getState" class="tsd-index-link tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>get<wbr/>State</span></a>
5
5
  <a href="useVoiceStore.html#setState" class="tsd-index-link tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>set<wbr/>State</span></a>
@@ -1,3 +1,3 @@
1
1
  <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>useVoices | @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="useVoices.html">useVoices</a></li></ul><h1>Function useVoices</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Hook to initialize and manage voice models from the gateway API
2
2
  Automatically loads voices when gateway API URL is available</p>
3
- </div><div class="tsd-comment tsd-typography"></div></section><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="useVoices" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Voices</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span><br/><span>    </span><span class="tsd-kind-property">availableVoices</span><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><span class="tsd-kind-property">defaultVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">fallbackVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">hasVoices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isLoading</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isServiceAvailable</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isVoiceServiceConfigured</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">refreshVoices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">selectedVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">setSelectedVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span><a href="#useVoices" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">{ </span><br/><span>    </span><span class="tsd-kind-property">availableVoices</span><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><span class="tsd-kind-property">defaultVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">fallbackVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">hasVoices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isLoading</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isServiceAvailable</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isVoiceServiceConfigured</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">refreshVoices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">selectedVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">setSelectedVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></h4><ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-kind-property">available<wbr/>Voices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">default<wbr/>Voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">fallback<wbr/>Voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">has<wbr/>Voices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">is<wbr/>Loading</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">is<wbr/>Service<wbr/>Available</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">is<wbr/>Voice<wbr/>Service<wbr/>Configured</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">refresh<wbr/>Voices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span></h5><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature" id="useVoices.__type.refreshVoices.__type-1.__type-2"><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></li></ul></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">selected<wbr/>Voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">set<wbr/>Selected<wbr/>Voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span></h5><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature" id="useVoices.__type.setSelectedVoice.__type-3.__type-4"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">voice</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">voice</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></li></ul></li></ul><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/hooks/useVoices.ts#L30">packages/bandit-engine/src/hooks/useVoices.ts:30</a></li></ul></aside></li></ul></section></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></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>
3
+ </div><div class="tsd-comment tsd-typography"></div></section><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="useVoices" class="tsd-anchor"></a><span class="tsd-kind-call-signature">use<wbr/>Voices</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">{ </span><br/><span>    </span><span class="tsd-kind-property">availableVoices</span><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><span class="tsd-kind-property">defaultVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">fallbackVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">hasVoices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isLoading</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isServiceAvailable</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isVoiceServiceConfigured</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">refreshVoices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">selectedVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">setSelectedVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span><a href="#useVoices" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">{ </span><br/><span>    </span><span class="tsd-kind-property">availableVoices</span><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><span class="tsd-kind-property">defaultVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">fallbackVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">hasVoices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isLoading</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isServiceAvailable</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">isVoiceServiceConfigured</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">refreshVoices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">selectedVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><span class="tsd-kind-property">setSelectedVoice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></h4><ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-kind-property">available<wbr/>Voices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">default<wbr/>Voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">fallback<wbr/>Voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">has<wbr/>Voices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">is<wbr/>Loading</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">is<wbr/>Service<wbr/>Available</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">is<wbr/>Voice<wbr/>Service<wbr/>Configured</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">refresh<wbr/>Voices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span></h5><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature" id="useVoices.__type.refreshVoices.__type-1.__type-2"><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></li></ul></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">selected<wbr/>Voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5><span class="tsd-kind-property">set<wbr/>Selected<wbr/>Voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">voice</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span></h5><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature" id="useVoices.__type.setSelectedVoice.__type-3.__type-4"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">voice</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">voice</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></li></ul></li></ul><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/01c8108b418efc984f31ac1eef1f5b7969bc8bae/packages/bandit-engine/src/hooks/useVoices.ts#L30">packages/bandit-engine/src/hooks/useVoices.ts:30</a></li></ul></aside></li></ul></section></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></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>
@@ -1 +1 @@
1
- <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>validateEnvironment | @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="validateEnvironment.html">validateEnvironment</a></li></ul><h1>Function validateEnvironment</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="validateEnvironment" class="tsd-anchor"></a><span class="tsd-kind-call-signature">validate<wbr/>Environment</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#validateEnvironment" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/utils/critical-helpers.ts#L20">packages/bandit-engine/src/utils/critical-helpers.ts:20</a></li></ul></aside></li></ul></section></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></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>
1
+ <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>validateEnvironment | @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="validateEnvironment.html">validateEnvironment</a></li></ul><h1>Function validateEnvironment</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="validateEnvironment" class="tsd-anchor"></a><span class="tsd-kind-call-signature">validate<wbr/>Environment</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#validateEnvironment" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/01c8108b418efc984f31ac1eef1f5b7969bc8bae/packages/bandit-engine/src/utils/critical-helpers.ts#L20">packages/bandit-engine/src/utils/critical-helpers.ts:20</a></li></ul></aside></li></ul></section></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></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>
@@ -1 +1 @@
1
- <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>validateSystemIntegrity | @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="validateSystemIntegrity.html">validateSystemIntegrity</a></li></ul><h1>Function validateSystemIntegrity</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="validateSystemIntegrity" class="tsd-anchor"></a><span class="tsd-kind-call-signature">validate<wbr/>System<wbr/>Integrity</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#validateSystemIntegrity" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/2026e27b34278071c991a9d75678521759535f44/packages/bandit-engine/src/core/license-validator.ts#L28">packages/bandit-engine/src/core/license-validator.ts:28</a></li></ul></aside></li></ul></section></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></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>
1
+ <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>validateSystemIntegrity | @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="validateSystemIntegrity.html">validateSystemIntegrity</a></li></ul><h1>Function validateSystemIntegrity</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="validateSystemIntegrity" class="tsd-anchor"></a><span class="tsd-kind-call-signature">validate<wbr/>System<wbr/>Integrity</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#validateSystemIntegrity" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Burtson-Labs/bandit/blob/01c8108b418efc984f31ac1eef1f5b7969bc8bae/packages/bandit-engine/src/core/license-validator.ts#L28">packages/bandit-engine/src/core/license-validator.ts:28</a></li></ul></aside></li></ul></section></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></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>
@@ -5,16 +5,26 @@
5
5
  <img src="https://cdn.burtson.ai/logos/burtson-labs-logo.png" alt="Burtson Labs Logo" width="120" style="width: 120px !important; max-width: 120px !important; height: auto; display: inline-block;" />
6
6
  </picture>
7
7
  </a>
8
- <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>
8
+ <a id="md:bandit-engine-⚡" class="tsd-anchor"></a><h1 class="tsd-anchor-link">Bandit Engine ⚡<a href="#md:bandit-engine-⚡" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1><p>An AI chat toolkit built for speed, design, and control. Power branded AI assistants with battle-tested React components and a secure gateway contract.</p>
9
+ <p><a href="https://www.npmjs.com/package/@burtson-labs/bandit-engine" target="_blank" class="external"><img src="https://img.shields.io/badge/npm-private-lightgrey?logo=npm" alt="npm private"></a>
10
+ <a href="https://banditailabs.com/npm-package" target="_blank" class="external"><img src="https://img.shields.io/badge/docs-banditailabs.com%2Fnpm--package-0C7BD4" alt="Docs"></a>
11
+ <a href="https://banditailabs.com/" target="_blank" class="external"><img src="https://img.shields.io/badge/live%20demo-banditailabs.com%2Fchat-7F56D9" alt="Live Demo"></a>
9
12
  <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>
10
13
  <a href="./LICENSE"><img src="https://img.shields.io/badge/License-BUSL--1.1-red" alt="License: BUSL-1.1"></a></p>
11
- <blockquote>
12
- <p><strong>Welcome to the Bandit Engine – an AI chat interface toolkit from Burtson Labs.</strong>
13
- Designed for devs who move fast, think sharp, and want full control over their AI chat UX. Plug it in, power it up, and bend AI to your brand's will.</p>
14
- </blockquote>
15
- <p>📚 Looking for docs? Start with the <a href="media/README.md">documentation index</a> or jump straight to the <a href="media/02_gateway_api.md">gateway contract</a>.</p>
16
- <p>🧪 Want to kick the tires? Clone the <a href="media/README-1.md">Node.js gateway example</a> for a ready-to-run backend.</p>
17
- <a id="md:⚡-cli-quick-start" class="tsd-anchor"></a><h2 class="tsd-anchor-link">⚡ CLI Quick Start<a href="#md:⚡-cli-quick-start" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Want a working playground instantly? Scaffold a Bandit app and gateway in one command:</p>
14
+ <a id="md:features" class="tsd-anchor"></a><h2 class="tsd-anchor-link">Features<a href="#md:features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
15
+ <li>🔌 Plug-and-play React chat, modal, and management surfaces</li>
16
+ <li>🧠 Memory, vector knowledge, and provider switching behind a secure gateway</li>
17
+ <li>🎨 Full MUI theming, dark mode, and branding controls out of the box</li>
18
+ <li>🌐 Multimodal support (voice, images, documents) with Ollama, OpenAI, Azure, Anthropic</li>
19
+ <li>🛠️ CLI scaffolding, sample gateway, and docs to launch in minutes</li>
20
+ </ul>
21
+ <a id="md:quick-links" class="tsd-anchor"></a><h2 class="tsd-anchor-link">Quick Links<a href="#md:quick-links" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul>
22
+ <li>📚 Full docs: <a href="https://banditailabs.com/npm-package" target="_blank" class="external">banditailabs.com/npm-package</a> (mirrors <code>/docs</code> in this repo)</li>
23
+ <li>🎯 Live demo with OAuth sign-in: <a href="https://banditailabs.com/" target="_blank" class="external">banditailabs.com</a></li>
24
+ <li>🧪 Playground (no auth required): <a href="https://banditailabs.com/playground" target="_blank" class="external">banditailabs.com/playground</a></li>
25
+ <li>🔁 Sample gateway: <a href="media/README.md"><code>examples/gateway-node</code></a></li>
26
+ </ul>
27
+ <a id="md:quick-start" class="tsd-anchor"></a><h2 class="tsd-anchor-link">Quick Start<a href="#md:quick-start" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="md:cli-scaffold" class="tsd-anchor"></a><h3 class="tsd-anchor-link">CLI Scaffold<a href="#md:cli-scaffold" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Want a working playground instantly? Scaffold a Bandit app and gateway in one command:</p>
18
28
  <pre><code class="bash"><span class="hl-0">npx</span><span class="hl-1"> </span><span class="hl-2">@burtson-labs/bandit-engine</span><span class="hl-1"> </span><span class="hl-2">create</span><span class="hl-1"> </span><span class="hl-2">my-bandit-app</span>
19
29
  </code><button type="button">Copy</button></pre>
20
30
 
@@ -77,6 +87,13 @@ Designed for devs who move fast, think sharp, and want full control over their A
77
87
  </tbody>
78
88
  </table>
79
89
  <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>
90
+ <a id="md:playground-password-free-preview" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Playground (Password-Free Preview)<a href="#md:playground-password-free-preview" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Want to feel the UX without wiring a gateway or signing in? Visit the hosted playground:</p>
91
+ <ul>
92
+ <li><strong>URL:</strong> <a href="https://banditailabs.com/playground" target="_blank" class="external"><code>https://banditailabs.com/playground</code></a></li>
93
+ <li><strong>What you get:</strong> Mock streaming answers, conversation starters, and theming preview powered by the built-in <code>PlaygroundProvider</code>.</li>
94
+ <li><strong>What’s simulated:</strong> Responses come from canned scripts – no external API keys, tokens, or backend required.</li>
95
+ </ul>
96
+ <p>The playground is ideal for product demos, initial stakeholder reviews, or QA before you connect real providers. When you’re ready to go live, swap the provider back to your gateway for production traffic.</p>
80
97
  <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
98
  <ol>
82
99
  <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>
@@ -456,12 +473,14 @@ When using Bandit components as custom elements (e.g., in Angular, Vue, or stati
456
473
  <li>🔄 <strong>Provider Switching</strong>: Change backends without frontend updates</li>
457
474
  <li>🛡️ <strong>Authentication</strong>: Unified auth across all AI services</li>
458
475
  </ul>
459
- <p><strong>Gateway Requirements:</strong>
476
+ <p><strong>Gateway Requirements:</strong><br>
460
477
  Your gateway API can be built with any technology (Node.js, Python, .NET, Java, etc.) as long as it implements:</p>
461
478
  <ul>
462
- <li><code>GET /api/health</code> - Health check endpoint</li>
463
- <li><code>POST /api/chat/completions</code> - Chat completions with provider in request body</li>
464
- <li><code>POST /api/generate</code> - Text generation with provider in request body</li>
479
+ <li><code>GET /api/health</code> Health check endpoint that lists available providers.</li>
480
+ <li><code>GET /api/models</code> and <code>GET /api/models/{provider}</code> Model discovery for the management UI.</li>
481
+ <li><code>POST /api/chat/completions</code> and <code>POST /api/generate</code> — Default OpenAI-style routes when no provider override is present.</li>
482
+ <li><code>POST /api/{provider}/chat/completions</code> and <code>POST /api/{provider}/generate</code> — Provider-specific routing for <code>openai</code>, <code>azure-openai</code>, and <code>anthropic</code>.</li>
483
+ <li><code>POST /api/ollama/chat</code> and <code>POST /api/ollama/generate</code> — Native Ollama routes (no <code>/chat/completions</code> suffix).</li>
465
484
  </ul>
466
485
  <a id="md:legacy-direct-providers" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Legacy Direct Providers<a href="#md:legacy-direct-providers" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Direct providers are still supported but marked as deprecated for production use:</p>
467
486
  <pre><code class="tsx"><span class="hl-8">// ⚠️ Deprecated: Direct OpenAI (exposes API keys)</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;openai&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-12">apiKey</span><span class="hl-1">: </span><span class="hl-2">&quot;sk-...&quot;</span><span class="hl-1">, </span><span class="hl-8">// Exposed in frontend</span><br/><span class="hl-1"> </span><span class="hl-12">baseUrl</span><span class="hl-1">: </span><span class="hl-2">&quot;https://api.openai.com/v1&quot;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">// ⚠️ Deprecated: Direct Ollama (no auth/monitoring) </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>
@@ -494,7 +513,7 @@ Your gateway API can be built with any technology (Node.js, Python, .NET, Java,
494
513
 
495
514
  <p><strong>Backend Requirements:</strong>
496
515
  Your gateway API should accept images in the standardized format sent by the Bandit Engine and forward them appropriately to each provider. No transformation needed - the frontend handles provider-specific formatting.</p>
497
- <pre><code class="javascript"><span class="hl-8">// Example: Gateway forwards images as-is to each provider</span><br/><span class="hl-5">app</span><span class="hl-1">.</span><span class="hl-0">post</span><span class="hl-1">(</span><span class="hl-2">&#39;/api/chat/completions&#39;</span><span class="hl-1">, </span><span class="hl-6">async</span><span class="hl-1"> (</span><span class="hl-5">req</span><span class="hl-1">, </span><span class="hl-5">res</span><span class="hl-1">) </span><span class="hl-6">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">provider</span><span class="hl-1">, </span><span class="hl-7">messages</span><span class="hl-1">, ...</span><span class="hl-7">options</span><span class="hl-1"> } = </span><span class="hl-5">req</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-8">// Messages already contain properly formatted images</span><br/><span class="hl-1"> </span><span class="hl-8">// Forward directly to the target provider API</span><br/><span class="hl-1"> </span><span class="hl-4">switch</span><span class="hl-1"> (</span><span class="hl-5">provider</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-4">case</span><span class="hl-1"> </span><span class="hl-2">&#39;ollama&#39;</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-8">// messages[].images format (base64 arrays)</span><br/><span class="hl-1"> </span><span class="hl-4">return</span><span class="hl-1"> </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">ollamaClient</span><span class="hl-1">.</span><span class="hl-0">chat</span><span class="hl-1">({ </span><span class="hl-5">messages</span><span class="hl-1">, ...</span><span class="hl-5">options</span><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-4">case</span><span class="hl-1"> </span><span class="hl-2">&#39;openai&#39;</span><span class="hl-1">: </span><br/><span class="hl-1"> </span><span class="hl-8">// messages[].content[].image_url format (structured)</span><br/><span class="hl-1"> </span><span class="hl-4">return</span><span class="hl-1"> </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">openaiClient</span><span class="hl-1">.</span><span class="hl-5">chat</span><span class="hl-1">.</span><span class="hl-5">completions</span><span class="hl-1">.</span><span class="hl-0">create</span><span class="hl-1">({ </span><span class="hl-5">messages</span><span class="hl-1">, ...</span><span class="hl-5">options</span><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-4">default</span><span class="hl-1">:</span><br/><span class="hl-1"> </span><span class="hl-4">throw</span><span class="hl-1"> </span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">Error</span><span class="hl-1">(</span><span class="hl-2">`Unsupported provider: </span><span class="hl-6">${</span><span class="hl-5">provider</span><span class="hl-6">}</span><span class="hl-2">`</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
516
+ <pre><code class="javascript"><span class="hl-8">// Example: Gateway forwards images as-is using provider-specific routes</span><br/><span class="hl-5">app</span><span class="hl-1">.</span><span class="hl-0">post</span><span class="hl-1">(</span><span class="hl-2">&#39;/api/openai/chat/completions&#39;</span><span class="hl-1">, </span><span class="hl-6">async</span><span class="hl-1"> (</span><span class="hl-5">req</span><span class="hl-1">, </span><span class="hl-5">res</span><span class="hl-1">) </span><span class="hl-6">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">messages</span><span class="hl-1">, ...</span><span class="hl-7">options</span><span class="hl-1"> } = </span><span class="hl-5">req</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">response</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-0">fetch</span><span class="hl-1">(</span><span class="hl-2">&#39;https://api.openai.com/v1/chat/completions&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-5">method:</span><span class="hl-1"> </span><span class="hl-2">&#39;POST&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">headers:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;Content-Type&#39;</span><span class="hl-5">:</span><span class="hl-1"> </span><span class="hl-2">&#39;application/json&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">Authorization:</span><span class="hl-1"> </span><span class="hl-2">`Bearer </span><span class="hl-6">${</span><span class="hl-5">process</span><span class="hl-14">.</span><span class="hl-5">env</span><span class="hl-14">.</span><span class="hl-7">OPENAI_API_KEY</span><span class="hl-6">}</span><span class="hl-2">`</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">body:</span><span class="hl-1"> </span><span class="hl-7">JSON</span><span class="hl-1">.</span><span class="hl-0">stringify</span><span class="hl-1">({ </span><span class="hl-5">messages</span><span class="hl-1">, ...</span><span class="hl-5">options</span><span class="hl-1"> })</span><br/><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">.</span><span class="hl-0">status</span><span class="hl-1">(</span><span class="hl-5">response</span><span class="hl-1">.</span><span class="hl-5">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-5">response</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">?.</span><span class="hl-0">pipe</span><span class="hl-1">(</span><span class="hl-5">res</span><span class="hl-1">);</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">app</span><span class="hl-1">.</span><span class="hl-0">post</span><span class="hl-1">(</span><span class="hl-2">&#39;/api/ollama/chat&#39;</span><span class="hl-1">, </span><span class="hl-6">async</span><span class="hl-1"> (</span><span class="hl-5">req</span><span class="hl-1">, </span><span class="hl-5">res</span><span class="hl-1">) </span><span class="hl-6">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">messages</span><span class="hl-1">, ...</span><span class="hl-7">options</span><span class="hl-1"> } = </span><span class="hl-5">req</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">response</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-0">fetch</span><span class="hl-1">(</span><span class="hl-2">`</span><span class="hl-6">${</span><span class="hl-5">process</span><span class="hl-14">.</span><span class="hl-5">env</span><span class="hl-14">.</span><span class="hl-7">OLLAMA_URL</span><span class="hl-6">}</span><span class="hl-2">/api/chat`</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-5">method:</span><span class="hl-1"> </span><span class="hl-2">&#39;POST&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">headers:</span><span class="hl-1"> { </span><span class="hl-2">&#39;Content-Type&#39;</span><span class="hl-5">:</span><span class="hl-1"> </span><span class="hl-2">&#39;application/json&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">body:</span><span class="hl-1"> </span><span class="hl-7">JSON</span><span class="hl-1">.</span><span class="hl-0">stringify</span><span class="hl-1">({ </span><span class="hl-5">messages</span><span class="hl-1">, ...</span><span class="hl-5">options</span><span class="hl-1"> })</span><br/><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">.</span><span class="hl-0">status</span><span class="hl-1">(</span><span class="hl-5">response</span><span class="hl-1">.</span><span class="hl-5">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-5">response</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">?.</span><span class="hl-0">pipe</span><span class="hl-1">(</span><span class="hl-5">res</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
498
517
  </code><button type="button">Copy</button></pre>
499
518
 
500
519
  <a id="md:using-the-ai-provider" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Using the AI Provider<a href="#md:using-the-ai-provider" 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>All chat interactions use the unified provider system regardless of backend:</p>
@@ -645,7 +664,7 @@ Your gateway API should accept images in the standardized format sent by the Ban
645
664
  </code><button type="button">Copy</button></pre>
646
665
 
647
666
  <a id="md:backend-integration" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Backend Integration<a href="#md:backend-integration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Your gateway API should validate subscription tiers and return appropriate feature access:</p>
648
- <pre><code class="javascript"><span class="hl-8">// Example: Gateway API subscription validation</span><br/><span class="hl-5">app</span><span class="hl-1">.</span><span class="hl-0">post</span><span class="hl-1">(</span><span class="hl-2">&#39;/api/chat/completions&#39;</span><span class="hl-1">, </span><span class="hl-5">authenticateJWT</span><span class="hl-1">, </span><span class="hl-6">async</span><span class="hl-1"> (</span><span class="hl-5">req</span><span class="hl-1">, </span><span class="hl-5">res</span><span class="hl-1">) </span><span class="hl-6">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">subscriptionType</span><span class="hl-1">, </span><span class="hl-7">isSubscribed</span><span class="hl-1"> } = </span><span class="hl-5">req</span><span class="hl-1">.</span><span class="hl-5">user</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-8">// Validate tier access for requested features</span><br/><span class="hl-1"> </span><span class="hl-4">if</span><span class="hl-1"> (</span><span class="hl-5">req</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">.</span><span class="hl-5">tts</span><span class="hl-1"> &amp;&amp; !</span><span class="hl-0">hasFeature</span><span class="hl-1">(</span><span class="hl-5">subscriptionType</span><span class="hl-1">, </span><span class="hl-2">&#39;tts&#39;</span><span class="hl-1">)) {</span><br/><span class="hl-1"> </span><span class="hl-4">return</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">.</span><span class="hl-0">status</span><span class="hl-1">(</span><span class="hl-15">403</span><span class="hl-1">).</span><span class="hl-0">json</span><span class="hl-1">({ </span><br/><span class="hl-1"> </span><span class="hl-5">error:</span><span class="hl-1"> </span><span class="hl-2">&#39;TTS requires Premium subscription or higher&#39;</span><span class="hl-1"> </span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-8">// Proceed with AI request</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">response</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-0">processAIRequest</span><span class="hl-1">(</span><span class="hl-5">req</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">.</span><span class="hl-0">json</span><span class="hl-1">(</span><span class="hl-5">response</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
667
+ <pre><code class="javascript"><span class="hl-8">// Example: Gateway API subscription validation</span><br/><span class="hl-5">app</span><span class="hl-1">.</span><span class="hl-0">post</span><span class="hl-1">(</span><span class="hl-2">&#39;/api/openai/chat/completions&#39;</span><span class="hl-1">, </span><span class="hl-5">authenticateJWT</span><span class="hl-1">, </span><span class="hl-6">async</span><span class="hl-1"> (</span><span class="hl-5">req</span><span class="hl-1">, </span><span class="hl-5">res</span><span class="hl-1">) </span><span class="hl-6">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">subscriptionType</span><span class="hl-1">, </span><span class="hl-7">isSubscribed</span><span class="hl-1"> } = </span><span class="hl-5">req</span><span class="hl-1">.</span><span class="hl-5">user</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-8">// Validate tier access for requested features</span><br/><span class="hl-1"> </span><span class="hl-4">if</span><span class="hl-1"> (</span><span class="hl-5">req</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">.</span><span class="hl-5">tts</span><span class="hl-1"> &amp;&amp; !</span><span class="hl-0">hasFeature</span><span class="hl-1">(</span><span class="hl-5">subscriptionType</span><span class="hl-1">, </span><span class="hl-2">&#39;tts&#39;</span><span class="hl-1">)) {</span><br/><span class="hl-1"> </span><span class="hl-4">return</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">.</span><span class="hl-0">status</span><span class="hl-1">(</span><span class="hl-15">403</span><span class="hl-1">).</span><span class="hl-0">json</span><span class="hl-1">({ </span><br/><span class="hl-1"> </span><span class="hl-5">error:</span><span class="hl-1"> </span><span class="hl-2">&#39;TTS requires Premium subscription or higher&#39;</span><span class="hl-1"> </span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><br/><span class="hl-1"> </span><span class="hl-8">// Proceed with AI request</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">response</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-0">fetch</span><span class="hl-1">(</span><span class="hl-2">&#39;https://api.openai.com/v1/chat/completions&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-5">method:</span><span class="hl-1"> </span><span class="hl-2">&#39;POST&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">headers:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;Content-Type&#39;</span><span class="hl-5">:</span><span class="hl-1"> </span><span class="hl-2">&#39;application/json&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">Authorization:</span><span class="hl-1"> </span><span class="hl-2">`Bearer </span><span class="hl-6">${</span><span class="hl-5">process</span><span class="hl-14">.</span><span class="hl-5">env</span><span class="hl-14">.</span><span class="hl-7">OPENAI_API_KEY</span><span class="hl-6">}</span><span class="hl-2">`</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">body:</span><span class="hl-1"> </span><span class="hl-7">JSON</span><span class="hl-1">.</span><span class="hl-0">stringify</span><span class="hl-1">(</span><span class="hl-5">req</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">)</span><br/><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">.</span><span class="hl-0">status</span><span class="hl-1">(</span><span class="hl-5">response</span><span class="hl-1">.</span><span class="hl-5">status</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-5">response</span><span class="hl-1">.</span><span class="hl-5">body</span><span class="hl-1">?.</span><span class="hl-0">pipe</span><span class="hl-1">(</span><span class="hl-5">res</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
649
668
  </code><button type="button">Copy</button></pre>
650
669
 
651
670
  <p>This feature flag system enables you to build sophisticated subscription-based AI products with fine-grained access control and seamless upgrade flows.</p>
@@ -824,4 +843,4 @@ Your gateway API should accept images in the standardized format sent by the Ban
824
843
 
825
844
  <hr>
826
845
  <p><strong>© 2025 Burtson Labs LLC. All rights reserved.</strong></p>
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>
846
+ </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#md:bandit-engine-⚡"><span>Bandit <wbr/>Engine ⚡</span></a><ul><li><a href="#md:features"><span>Features</span></a></li><li><a href="#md:quick-links"><span>Quick <wbr/>Links</span></a></li><li><a href="#md:quick-start"><span>Quick <wbr/>Start</span></a></li><li><ul><li><a href="#md:cli-scaffold"><span>CLI <wbr/>Scaffold</span></a></li><li><a href="#md:cli-options"><span>CLI <wbr/>Options</span></a></li><li><a href="#md:playground-password-free-preview"><span>Playground (<wbr/>Password-<wbr/>Free <wbr/>Preview)</span></a></li></ul></li><li><a href="#md:🛠️-getting-started--plug--play-ai"><span>🛠️ <wbr/>Getting <wbr/>Started – <wbr/>Plug &amp; <wbr/>Play AI</span></a></li><li><ul><li><a href="#md:🔄-quick-provider-setup"><span>🔄 <wbr/>Quick <wbr/>Provider <wbr/>Setup</span></a></li><li><a href="#md:ollama-env-setup"><span>Ollama .env <wbr/>Setup</span></a></li><li><a href="#md:🎤-voice-services-ttsstt"><span>🎤 <wbr/>Voice <wbr/>Services (TTS/STT)</span></a></li></ul></li><li><a href="#md:🧩-consuming-the-components"><span>🧩 <wbr/>Consuming the <wbr/>Components</span></a></li><li><ul><li><a href="#md:🛠️-utility-functions--hooks"><span>🛠️ <wbr/>Utility <wbr/>Functions &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></li><li><a href="#md:🎛️-chat-control-center-chatmodal-feature"><span>🎛️ <wbr/>Chat <wbr/>Control <wbr/>Center (<wbr/>Chat<wbr/>Modal <wbr/>Feature)</span></a></li><li><ul><li><a href="#md:🔧-core-features"><span>🔧 <wbr/>Core <wbr/>Features</span></a></li><li><a href="#md:🎤-voice-integration"><span>🎤 <wbr/>Voice <wbr/>Integration</span></a></li><li><a href="#md:🔄-context-switching"><span>🔄 <wbr/>Context <wbr/>Switching</span></a></li><li><a href="#md:💾-memory-features"><span>💾 <wbr/>Memory <wbr/>Features</span></a></li><li><a href="#md:📧-feedback-system"><span>📧 <wbr/>Feedback <wbr/>System</span></a></li></ul></li><li><a href="#md:⚙️-angular-integration-experimental"><span>⚙️ <wbr/>Angular <wbr/>Integration (<wbr/>Experimental)</span></a></li><li><a href="#md:⚙️-vuejs-integration-experimental"><span>⚙️ <wbr/>Vue.js <wbr/>Integration (<wbr/>Experimental)</span></a></li><li><a href="#md:📦-custom-element-support"><span>📦 <wbr/>Custom <wbr/>Element <wbr/>Support</span></a></li><li><a href="#md:📸-live-preview"><span>📸 <wbr/>Live <wbr/>Preview</span></a></li><li><a href="#md:⚙️-configuration-options"><span>⚙️ <wbr/>Configuration <wbr/>Options</span></a></li><li><ul><li><a href="#md:file-storage-api-contract"><span>File <wbr/>Storage API <wbr/>Contract</span></a></li></ul></li><li><a href="#md:🤖-ai-provider-system"><span>🤖 AI <wbr/>Provider <wbr/>System</span></a></li><li><ul><li><a href="#md:supported-providers"><span>Supported <wbr/>Providers</span></a></li><li><a href="#md:gateway-provider-recommended"><span>Gateway <wbr/>Provider (<wbr/>Recommended)</span></a></li><li><a href="#md:legacy-direct-providers"><span>Legacy <wbr/>Direct <wbr/>Providers</span></a></li><li><a href="#md:migration-to-gateway"><span>Migration to <wbr/>Gateway</span></a></li><li><a href="#md:imagemultimodal-support"><span>Image/<wbr/>Multimodal <wbr/>Support</span></a></li><li><a href="#md:using-the-ai-provider"><span>Using the AI <wbr/>Provider</span></a></li></ul></li><li><a href="#md:🔧-model-context-protocol-mcp-integration"><span>🔧 <wbr/>Model <wbr/>Context <wbr/>Protocol (MCP) <wbr/>Integration</span></a></li><li><ul><li><a href="#md:mcp-features"><span>MCP <wbr/>Features</span></a></li><li><a href="#md:using-mcp-tools"><span>Using MCP <wbr/>Tools</span></a></li><li><a href="#md:mcp-tool-configuration"><span>MCP <wbr/>Tool <wbr/>Configuration</span></a></li><li><a href="#md:mcp-service-api"><span>MCP <wbr/>Service API</span></a></li></ul></li><li><a href="#md:🎛️-feature-flags--subscription-tiers"><span>🎛️ <wbr/>Feature <wbr/>Flags &amp; <wbr/>Subscription <wbr/>Tiers</span></a></li><li><ul><li><a href="#md:subscription-tiers"><span>Subscription <wbr/>Tiers</span></a></li><li><a href="#md:feature-flag-configuration"><span>Feature <wbr/>Flag <wbr/>Configuration</span></a></li><li><a href="#md:tier-based-feature-matrix"><span>Tier-<wbr/>Based <wbr/>Feature <wbr/>Matrix</span></a></li><li><a href="#md:jwt-based-authentication"><span>JWT-<wbr/>Based <wbr/>Authentication</span></a></li><li><a href="#md:using-feature-flags-in-components"><span>Using <wbr/>Feature <wbr/>Flags in <wbr/>Components</span></a></li><li><a href="#md:subscription-state-management"><span>Subscription <wbr/>State <wbr/>Management</span></a></li><li><a href="#md:feature-restrictions--upgrade-prompts"><span>Feature <wbr/>Restrictions &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></li><li><a href="#md:🐛-debug-logger"><span>🐛 <wbr/>Debug <wbr/>Logger</span></a></li><li><a href="#md:🔒-security-best-practices"><span>🔒 <wbr/>Security <wbr/>Best <wbr/>Practices</span></a></li><li><ul><li><a href="#md:recommended-architecture"><span>Recommended <wbr/>Architecture</span></a></li><li><a href="#md:gateway-setup"><span>Gateway <wbr/>Setup</span></a></li><li><a href="#md:legacy-configuration-deprecated"><span>Legacy <wbr/>Configuration (<wbr/>Deprecated)</span></a></li><li><a href="#md:development-vs-production"><span>Development vs <wbr/>Production</span></a></li></ul></li><li><a href="#md:requirements"><span>Requirements</span></a></li><li><ul><li><a href="#md:gateway-api-services"><span>Gateway API <wbr/>Services</span></a></li><li><a href="#md:technology-agnostic-implementation"><span>Technology-<wbr/>Agnostic <wbr/>Implementation</span></a></li><li><a href="#md:additional-resources"><span>Additional <wbr/>Resources</span></a></li></ul></li><li><a href="#md:💡-vision--roadmap"><span>💡 <wbr/>Vision &amp; <wbr/>Roadmap</span></a></li><li><a href="#md:📌-migration-guide"><span>📌 <wbr/>Migration <wbr/>Guide</span></a></li><li><ul><li><a href="#md:from-legacy-ttsstt-urls-to-gateway-api"><span>From <wbr/>Legacy TTS/STT URLs to <wbr/>Gateway API</span></a></li></ul></li><li><a href="#md:🛡️-license--protection"><span>🛡️ <wbr/>License &amp; <wbr/>Protection</span></a></li><li><ul><li><a href="#md:⚖️-license-summary"><span>⚖️ <wbr/>License <wbr/>Summary</span></a></li><li><a href="#md:📋-usage-rights"><span>📋 <wbr/>Usage <wbr/>Rights</span></a></li><li><a href="#md:🔒-protection-features"><span>🔒 <wbr/>Protection <wbr/>Features</span></a></li><li><a href="#md:💼-commercial-licensing"><span>💼 <wbr/>Commercial <wbr/>Licensing</span></a></li><li><a href="#md:👨💻-for-contributors--developers"><span>👨‍💻 <wbr/>For <wbr/>Contributors &amp; <wbr/>Developers</span></a></li><li><a href="#md:📝-license-compliance"><span>📝 <wbr/>License <wbr/>Compliance</span></a></li></ul></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html" class="current"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="assets/icons.svg#icon-1"></use></svg><span>@burtson-labs/bandit-engine</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base="."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>