@burtson-labs/bandit-engine 2.0.168 → 2.1.0

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 (237) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/LICENSE +189 -31
  3. package/NOTICE +26 -0
  4. package/README.md +15 -59
  5. package/dist/aiProviderStore-DKQCCDWF.mjs +8 -0
  6. package/dist/aiProviderStore-DKQCCDWF.mjs.map +1 -0
  7. package/dist/chat-VYZFUECC.mjs +10 -0
  8. package/dist/chat-VYZFUECC.mjs.map +1 -0
  9. package/dist/{chunk-GRPTCHFN.mjs → chunk-BJT6KPUG.mjs} +309 -154
  10. package/dist/chunk-BJT6KPUG.mjs.map +1 -0
  11. package/dist/{chunk-SZJB5FLZ.mjs → chunk-FCQN3LKT.mjs} +251 -77
  12. package/dist/chunk-FCQN3LKT.mjs.map +1 -0
  13. package/dist/chunk-HD4PJNPH.mjs +29034 -0
  14. package/dist/chunk-HD4PJNPH.mjs.map +1 -0
  15. package/dist/{chunk-HNXPDIWC.mjs → chunk-NI7BKLC7.mjs} +1 -1
  16. package/dist/chunk-NI7BKLC7.mjs.map +1 -0
  17. package/dist/index.d.mts +63 -57
  18. package/dist/index.d.ts +63 -57
  19. package/dist/index.js +15415 -7570
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.mjs +16630 -142
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/{memoryUtils-HGCYEUCD.mjs → memoryUtils-UBZ33DNA.mjs} +8 -3
  24. package/dist/memoryUtils-UBZ33DNA.mjs.map +1 -0
  25. package/dist/modelStore-SEC34WRM.mjs +8 -0
  26. package/dist/modelStore-SEC34WRM.mjs.map +1 -0
  27. package/dist/{public-DJa4Db00.d.mts → public-CKQQDOoy.d.mts} +8 -8
  28. package/dist/{public-DJa4Db00.d.ts → public-CKQQDOoy.d.ts} +8 -8
  29. package/dist/public-types.d.mts +1 -1
  30. package/dist/public-types.d.ts +1 -1
  31. package/docs/00_intro.md +2 -2
  32. package/docs/05_contributing.md +2 -2
  33. package/docs/06_licensing.md +18 -0
  34. package/docs/07_custom_tools.md +233 -0
  35. package/docs/README.md +2 -1
  36. package/package.json +23 -20
  37. package/dist/aiProviderStore-HY5G4QAK.mjs +0 -8
  38. package/dist/aiProviderStore-HY5G4QAK.mjs.map +0 -1
  39. package/dist/chat-7LOFYEWE.mjs +0 -15
  40. package/dist/chat-7LOFYEWE.mjs.map +0 -1
  41. package/dist/chat-provider.js +0 -11080
  42. package/dist/chat-provider.js.map +0 -1
  43. package/dist/chat-provider.mjs +0 -16
  44. package/dist/chat-provider.mjs.map +0 -1
  45. package/dist/chunk-4SXXEGEK.mjs +0 -10690
  46. package/dist/chunk-4SXXEGEK.mjs.map +0 -1
  47. package/dist/chunk-62IYSU3I.mjs +0 -7324
  48. package/dist/chunk-62IYSU3I.mjs.map +0 -1
  49. package/dist/chunk-CABOLDNR.mjs +0 -216
  50. package/dist/chunk-CABOLDNR.mjs.map +0 -1
  51. package/dist/chunk-E5WMDLE3.mjs +0 -390
  52. package/dist/chunk-E5WMDLE3.mjs.map +0 -1
  53. package/dist/chunk-GRPTCHFN.mjs.map +0 -1
  54. package/dist/chunk-HNXPDIWC.mjs.map +0 -1
  55. package/dist/chunk-JD6C64CT.mjs +0 -516
  56. package/dist/chunk-JD6C64CT.mjs.map +0 -1
  57. package/dist/chunk-KAXUI5H7.mjs +0 -6009
  58. package/dist/chunk-KAXUI5H7.mjs.map +0 -1
  59. package/dist/chunk-ONQMRE2G.mjs +0 -26
  60. package/dist/chunk-ONQMRE2G.mjs.map +0 -1
  61. package/dist/chunk-P4C5IRM5.mjs +0 -39
  62. package/dist/chunk-P4C5IRM5.mjs.map +0 -1
  63. package/dist/chunk-QI67R5F6.mjs +0 -194
  64. package/dist/chunk-QI67R5F6.mjs.map +0 -1
  65. package/dist/chunk-R3NOM2DG.mjs +0 -2945
  66. package/dist/chunk-R3NOM2DG.mjs.map +0 -1
  67. package/dist/chunk-SZJB5FLZ.mjs.map +0 -1
  68. package/dist/chunk-YGOLNWXJ.mjs +0 -11906
  69. package/dist/chunk-YGOLNWXJ.mjs.map +0 -1
  70. package/dist/management/management.js +0 -44454
  71. package/dist/management/management.js.map +0 -1
  72. package/dist/management/management.mjs +0 -16
  73. package/dist/management/management.mjs.map +0 -1
  74. package/dist/memoryUtils-HGCYEUCD.mjs.map +0 -1
  75. package/dist/modals/chat-modal/chat-modal.js +0 -19730
  76. package/dist/modals/chat-modal/chat-modal.js.map +0 -1
  77. package/dist/modals/chat-modal/chat-modal.mjs +0 -18
  78. package/dist/modals/chat-modal/chat-modal.mjs.map +0 -1
  79. package/dist/modelStore-TFNX4GEC.mjs +0 -8
  80. package/dist/modelStore-TFNX4GEC.mjs.map +0 -1
  81. package/dist/shared/custom-element.js +0 -73
  82. package/dist/shared/custom-element.js.map +0 -1
  83. package/dist/shared/custom-element.mjs +0 -7
  84. package/dist/shared/custom-element.mjs.map +0 -1
  85. package/docs/06_busl_licensing.md +0 -25
  86. package/docs/api_reference/.nojekyll +0 -1
  87. package/docs/api_reference/assets/bandit-docs.js +0 -462
  88. package/docs/api_reference/assets/highlight.css +0 -141
  89. package/docs/api_reference/assets/icons.js +0 -18
  90. package/docs/api_reference/assets/icons.svg +0 -1
  91. package/docs/api_reference/assets/main.js +0 -61
  92. package/docs/api_reference/assets/navigation.js +0 -1
  93. package/docs/api_reference/assets/search.js +0 -1
  94. package/docs/api_reference/assets/style.css +0 -1664
  95. package/docs/api_reference/classes/DebugLogger.html +0 -29
  96. package/docs/api_reference/classes/FeatureFlagService.html +0 -28
  97. package/docs/api_reference/classes/NotificationService.html +0 -21
  98. package/docs/api_reference/classes/StreamingTTSClient.html +0 -19
  99. package/docs/api_reference/classes/VectorDatabaseService.html +0 -63
  100. package/docs/api_reference/classes/VectorMigrationService.html +0 -27
  101. package/docs/api_reference/classes/VoiceService.html +0 -4
  102. package/docs/api_reference/enums/TTSState.html +0 -6
  103. package/docs/api_reference/functions/Chat.html +0 -1
  104. package/docs/api_reference/functions/ChatModal.html +0 -29
  105. package/docs/api_reference/functions/ChatProvider.html +0 -29
  106. package/docs/api_reference/functions/FeatureFlagProvider.html +0 -30
  107. package/docs/api_reference/functions/FeedbackButton.html +0 -29
  108. package/docs/api_reference/functions/FeedbackModal.html +0 -29
  109. package/docs/api_reference/functions/InterestsEditor.html +0 -5
  110. package/docs/api_reference/functions/Management.html +0 -1
  111. package/docs/api_reference/functions/NotificationProvider.html +0 -29
  112. package/docs/api_reference/functions/SubscriptionExpiredGuard.html +0 -31
  113. package/docs/api_reference/functions/SubscriptionExpiredModal.html +0 -31
  114. package/docs/api_reference/functions/defineCustomElement.html +0 -1
  115. package/docs/api_reference/functions/getCriticalConfig.html +0 -2
  116. package/docs/api_reference/functions/getFeatureMatrix.html +0 -1
  117. package/docs/api_reference/functions/getStreamingTTSClient.html +0 -1
  118. package/docs/api_reference/functions/getSystemConstants.html +0 -2
  119. package/docs/api_reference/functions/getTTSState.html +0 -1
  120. package/docs/api_reference/functions/handleHttpError.html +0 -2
  121. package/docs/api_reference/functions/handleSubscriptionUpgrade.html +0 -1
  122. package/docs/api_reference/functions/handleValidationError.html +0 -2
  123. package/docs/api_reference/functions/initializeCoreSystem.html +0 -2
  124. package/docs/api_reference/functions/isWorkspaceAdminRole.html +0 -6
  125. package/docs/api_reference/functions/pauseTTS.html +0 -1
  126. package/docs/api_reference/functions/previewTierUpgrade.html +0 -1
  127. package/docs/api_reference/functions/resolveManagementSections.html +0 -2
  128. package/docs/api_reference/functions/resumeTTS.html +0 -1
  129. package/docs/api_reference/functions/showInfoNotification.html +0 -2
  130. package/docs/api_reference/functions/showSuccessNotification.html +0 -2
  131. package/docs/api_reference/functions/speakWithStreaming.html +0 -1
  132. package/docs/api_reference/functions/stopTTS.html +0 -1
  133. package/docs/api_reference/functions/syncSubscriptionWithAPI.html +0 -1
  134. package/docs/api_reference/functions/updateSubscriptionTier.html +0 -2
  135. package/docs/api_reference/functions/useFeatureFlag.html +0 -2
  136. package/docs/api_reference/functions/useFeatureVisibility.html +0 -2
  137. package/docs/api_reference/functions/useFeatures.html +0 -2
  138. package/docs/api_reference/functions/useGatewayHealth.html +0 -1
  139. package/docs/api_reference/functions/useGatewayMemory.html +0 -1
  140. package/docs/api_reference/functions/useGatewayModels.html +0 -1
  141. package/docs/api_reference/functions/useGlobalTTS.html +0 -2
  142. package/docs/api_reference/functions/useManagementAccess.html +0 -2
  143. package/docs/api_reference/functions/useNotification.html +0 -1
  144. package/docs/api_reference/functions/useNotificationService.html +0 -6
  145. package/docs/api_reference/functions/useTTS.html +0 -2
  146. package/docs/api_reference/functions/useVectorStore.html +0 -13
  147. package/docs/api_reference/functions/useVoiceStore.html +0 -8
  148. package/docs/api_reference/functions/useVoices.html +0 -3
  149. package/docs/api_reference/functions/validateEnvironment.html +0 -2
  150. package/docs/api_reference/functions/validateSystemIntegrity.html +0 -2
  151. package/docs/api_reference/index.html +0 -916
  152. package/docs/api_reference/interfaces/AIChatRequest.html +0 -8
  153. package/docs/api_reference/interfaces/AIChatResponse.html +0 -3
  154. package/docs/api_reference/interfaces/AIGenerateRequest.html +0 -5
  155. package/docs/api_reference/interfaces/AIGenerateResponse.html +0 -3
  156. package/docs/api_reference/interfaces/AIMessage.html +0 -4
  157. package/docs/api_reference/interfaces/AIModel.html +0 -6
  158. package/docs/api_reference/interfaces/AIProviderConfig.html +0 -12
  159. package/docs/api_reference/interfaces/ChatConfig.html +0 -5
  160. package/docs/api_reference/interfaces/ChatModalProps.html +0 -7
  161. package/docs/api_reference/interfaces/CreateMemoryOptions.html +0 -7
  162. package/docs/api_reference/interfaces/FeatureEvaluation.html +0 -14
  163. package/docs/api_reference/interfaces/FeatureFlagConfig.html +0 -18
  164. package/docs/api_reference/interfaces/FeatureFlagContextValue.html +0 -16
  165. package/docs/api_reference/interfaces/FeatureFlagProviderProps.html +0 -4
  166. package/docs/api_reference/interfaces/FeedbackButtonProps.html +0 -19
  167. package/docs/api_reference/interfaces/FeedbackCategories.html +0 -6
  168. package/docs/api_reference/interfaces/FeedbackModalProps.html +0 -4
  169. package/docs/api_reference/interfaces/FeedbackPriorities.html +0 -5
  170. package/docs/api_reference/interfaces/FeedbackRequest.html +0 -12
  171. package/docs/api_reference/interfaces/FeedbackResponse.html +0 -7
  172. package/docs/api_reference/interfaces/FileUploadResult.html +0 -4
  173. package/docs/api_reference/interfaces/GatewayChatRequest.html +0 -13
  174. package/docs/api_reference/interfaces/GatewayChatResponse.html +0 -7
  175. package/docs/api_reference/interfaces/GatewayContract.html +0 -4
  176. package/docs/api_reference/interfaces/GatewayGenerateRequest.html +0 -8
  177. package/docs/api_reference/interfaces/GatewayGenerateResponse.html +0 -12
  178. package/docs/api_reference/interfaces/GatewayHealthResponse.html +0 -5
  179. package/docs/api_reference/interfaces/GatewayMemoryRecord.html +0 -7
  180. package/docs/api_reference/interfaces/GatewayMemoryResponse.html +0 -4
  181. package/docs/api_reference/interfaces/GatewayMessage.html +0 -5
  182. package/docs/api_reference/interfaces/GatewayMessageContent.html +0 -4
  183. package/docs/api_reference/interfaces/GatewayModel.html +0 -9
  184. package/docs/api_reference/interfaces/GatewayModelsResponse.html +0 -2
  185. package/docs/api_reference/interfaces/ManagementAccess.html +0 -5
  186. package/docs/api_reference/interfaces/ManagementAccessInput.html +0 -5
  187. package/docs/api_reference/interfaces/ManagementLink.html +0 -7
  188. package/docs/api_reference/interfaces/ManagementProps.html +0 -22
  189. package/docs/api_reference/interfaces/ManagementSectionDef.html +0 -10
  190. package/docs/api_reference/interfaces/MemorySearchFilters.html +0 -5
  191. package/docs/api_reference/interfaces/MigrationProgress.html +0 -6
  192. package/docs/api_reference/interfaces/MigrationStatus.html +0 -7
  193. package/docs/api_reference/interfaces/NotificationConfig.html +0 -5
  194. package/docs/api_reference/interfaces/NotificationContextType.html +0 -6
  195. package/docs/api_reference/interfaces/NotificationProviderProps.html +0 -4
  196. package/docs/api_reference/interfaces/PackageSettings.html +0 -22
  197. package/docs/api_reference/interfaces/SearchOptions.html +0 -6
  198. package/docs/api_reference/interfaces/SearchResult.html +0 -5
  199. package/docs/api_reference/interfaces/SubscriptionExpiredGuardProps.html +0 -7
  200. package/docs/api_reference/interfaces/SubscriptionExpiredModalProps.html +0 -6
  201. package/docs/api_reference/interfaces/TTSOptions.html +0 -5
  202. package/docs/api_reference/interfaces/TTSProgress.html +0 -6
  203. package/docs/api_reference/interfaces/TrialUsage.html +0 -6
  204. package/docs/api_reference/interfaces/UploadRequest.html +0 -9
  205. package/docs/api_reference/interfaces/UseTTSReturn.html +0 -14
  206. package/docs/api_reference/interfaces/VectorDocument.html +0 -11
  207. package/docs/api_reference/interfaces/VectorMemory.html +0 -12
  208. package/docs/api_reference/interfaces/VectorMemoryMetadata.html +0 -7
  209. package/docs/api_reference/interfaces/VectorStoreStatus.html +0 -7
  210. package/docs/api_reference/interfaces/VoiceModelsResponse.html +0 -4
  211. package/docs/api_reference/interfaces/VoiceState.html +0 -12
  212. package/docs/api_reference/media/02_gateway_api.md +0 -123
  213. package/docs/api_reference/media/05_cli_quickstart.md +0 -87
  214. package/docs/api_reference/media/LICENSE +0 -43
  215. package/docs/api_reference/media/PRE-PUSH-CHECKLIST.md +0 -10
  216. package/docs/api_reference/media/PROTECTION-NOTICE.md +0 -11
  217. package/docs/api_reference/media/README.md +0 -58
  218. package/docs/api_reference/modules.html +0 -136
  219. package/docs/api_reference/types/FeatureKey.html +0 -2
  220. package/docs/api_reference/types/FeatureMatrix.html +0 -2
  221. package/docs/api_reference/types/GatewayQueryOptions.html +0 -1
  222. package/docs/api_reference/types/LogContext.html +0 -14
  223. package/docs/api_reference/types/ManagementRequest.html +0 -1
  224. package/docs/api_reference/types/ManagementSectionId.html +0 -2
  225. package/docs/api_reference/types/SubscriptionTier.html +0 -2
  226. package/docs/api_reference/variables/DEFAULT_TIER_FEATURES.html +0 -2
  227. package/docs/api_reference/variables/FeatureFlagContext.html +0 -1
  228. package/docs/api_reference/variables/MANAGEMENT_SECTIONS.html +0 -1
  229. package/docs/api_reference/variables/OSS_DEFAULT_FEATURES.html +0 -2
  230. package/docs/api_reference/variables/SYSTEM_FLAGS.html +0 -2
  231. package/docs/api_reference/variables/authenticationService.html +0 -1
  232. package/docs/api_reference/variables/debugLogger-1.html +0 -1
  233. package/docs/api_reference/variables/featureFlagService-1.html +0 -2
  234. package/docs/api_reference/variables/notificationService-1.html +0 -1
  235. package/docs/api_reference/variables/vectorDatabaseService-1.html +0 -1
  236. package/docs/api_reference/variables/vectorMigrationService-1.html +0 -1
  237. package/docs/api_reference/variables/voiceService-1.html +0 -1
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  debugLogger
3
- } from "./chunk-HNXPDIWC.mjs";
3
+ } from "./chunk-NI7BKLC7.mjs";
4
4
 
5
5
  // src/store/aiProviderStore.ts
6
6
  import { create as create2 } from "zustand";
@@ -9,7 +9,18 @@ import { create as create2 } from "zustand";
9
9
  import { map as map2 } from "rxjs";
10
10
 
11
11
  // src/services/ollama/ollama.service.ts
12
- import { catchError, from, lastValueFrom, map, Observable, of, shareReplay, switchMap, throwError, timeout } from "rxjs";
12
+ import {
13
+ catchError,
14
+ from,
15
+ lastValueFrom,
16
+ map,
17
+ Observable,
18
+ of,
19
+ shareReplay,
20
+ switchMap,
21
+ throwError,
22
+ timeout
23
+ } from "rxjs";
13
24
 
14
25
  // src/services/stream/streamLineParser.ts
15
26
  var SKIP = { kind: "skip" };
@@ -42,7 +53,9 @@ var StreamLineParser = class {
42
53
  // src/services/ollama/ollama.service.ts
43
54
  var handleError = () => (obs) => obs.pipe(
44
55
  switchMap(
45
- (response) => response.ok ? of(response) : throwError(() => new Error(`Request failed: ${response.status} ${response.statusText}`))
56
+ (response) => response.ok ? of(response) : throwError(
57
+ () => new Error(`Request failed: ${response.status} ${response.statusText}`)
58
+ )
46
59
  )
47
60
  );
48
61
  var parseResponseBody = async (response, responseType) => {
@@ -97,7 +110,9 @@ var OllamaService = class {
97
110
  }
98
111
  return availablility;
99
112
  } catch (e) {
100
- debugLogger.warn(`Service not available at ${this._baseUrl}, trying fallback URL: ${fallbackUrl}`);
113
+ debugLogger.warn(
114
+ `Service not available at ${this._baseUrl}, trying fallback URL: ${fallbackUrl}`
115
+ );
101
116
  try {
102
117
  availablility.url = fallbackUrl;
103
118
  availablility.isAvailable = await lastValueFrom(
@@ -124,7 +139,10 @@ var OllamaService = class {
124
139
  const task = fetch(url, {
125
140
  method: "POST",
126
141
  headers: this._getHeaders(),
127
- body: JSON.stringify({ ...request, stream: request.stream === false ? false : true })
142
+ body: JSON.stringify({
143
+ ...request,
144
+ stream: request.stream === false ? false : true
145
+ })
128
146
  });
129
147
  task.then((response) => {
130
148
  this._throwErrorIfNotOk(url, response);
@@ -141,7 +159,9 @@ var OllamaService = class {
141
159
  observer.next(JSON.parse(tail.text));
142
160
  } catch (err) {
143
161
  observer.error(err);
144
- debugLogger.error("Final chunk parsing error (generate):", { buffer });
162
+ debugLogger.error("Final chunk parsing error (generate):", {
163
+ buffer
164
+ });
145
165
  }
146
166
  }
147
167
  observer.complete();
@@ -238,18 +258,24 @@ var OllamaService = class {
238
258
  };
239
259
  const response = from(fetch(url, requestInit));
240
260
  const handleFetchError = response.pipe(handleError());
241
- const data = handleFetchError.pipe(switchMap((res) => from(parseResponseBody(res, responseType))));
261
+ const data = handleFetchError.pipe(
262
+ switchMap((res) => from(parseResponseBody(res, responseType)))
263
+ );
242
264
  const result = data.pipe(shareReplay(1));
243
265
  return result;
244
266
  }
245
267
  _post(url, body) {
246
- const response = from(fetch(url, {
247
- method: "POST",
248
- headers: this._getHeaders(),
249
- body: JSON.stringify(body)
250
- }));
268
+ const response = from(
269
+ fetch(url, {
270
+ method: "POST",
271
+ headers: this._getHeaders(),
272
+ body: JSON.stringify(body)
273
+ })
274
+ );
251
275
  const handleFetchError = response.pipe(handleError());
252
- const json = handleFetchError.pipe(switchMap((res) => from(parseResponseBody(res, "json"))));
276
+ const json = handleFetchError.pipe(
277
+ switchMap((res) => from(parseResponseBody(res, "json")))
278
+ );
253
279
  const result = json.pipe(shareReplay(1));
254
280
  return result;
255
281
  }
@@ -261,27 +287,37 @@ var OllamaService = class {
261
287
  _getHeaders() {
262
288
  const token = this._tokenFactory();
263
289
  if (!token) {
264
- debugLogger.warn("OllamaService: No token found, using empty string for Authorization header");
290
+ debugLogger.warn(
291
+ "OllamaService: No token found, using empty string for Authorization header"
292
+ );
265
293
  }
266
294
  return {
267
295
  "Content-Type": "application/json",
268
- "Authorization": `Bearer ${token || ""}`
296
+ Authorization: `Bearer ${token || ""}`
269
297
  };
270
298
  }
271
299
  };
272
300
 
273
301
  // src/services/ai-provider/providers/deprecated.ts
274
302
  function deprecatedOpenAIProvider() {
275
- debugLogger.warn('\u26A0\uFE0F DEPRECATION WARNING: Direct OpenAI provider is deprecated. Please migrate to GatewayProvider with provider: "openai". See GATEWAY_MIGRATION_GUIDE.md for details.');
303
+ debugLogger.warn(
304
+ '\u26A0\uFE0F DEPRECATION WARNING: Direct OpenAI provider is deprecated. Please migrate to GatewayProvider with provider: "openai". See GATEWAY_MIGRATION_GUIDE.md for details.'
305
+ );
276
306
  }
277
307
  function deprecatedAzureOpenAIProvider() {
278
- debugLogger.warn('\u26A0\uFE0F DEPRECATION WARNING: Direct Azure OpenAI provider is deprecated. Please migrate to GatewayProvider with provider: "azure-openai". See GATEWAY_MIGRATION_GUIDE.md for details.');
308
+ debugLogger.warn(
309
+ '\u26A0\uFE0F DEPRECATION WARNING: Direct Azure OpenAI provider is deprecated. Please migrate to GatewayProvider with provider: "azure-openai". See GATEWAY_MIGRATION_GUIDE.md for details.'
310
+ );
279
311
  }
280
312
  function deprecatedAnthropicProvider() {
281
- debugLogger.warn('\u26A0\uFE0F DEPRECATION WARNING: Direct Anthropic provider is deprecated. Please migrate to GatewayProvider with provider: "anthropic". See GATEWAY_MIGRATION_GUIDE.md for details.');
313
+ debugLogger.warn(
314
+ '\u26A0\uFE0F DEPRECATION WARNING: Direct Anthropic provider is deprecated. Please migrate to GatewayProvider with provider: "anthropic". See GATEWAY_MIGRATION_GUIDE.md for details.'
315
+ );
282
316
  }
283
317
  function deprecatedOllamaProvider() {
284
- debugLogger.info('\u2139\uFE0F INFO: Direct Ollama provider is available for local development. For production environments, consider using GatewayProvider with provider: "ollama" for enhanced management. See GATEWAY_MIGRATION_GUIDE.md for details.');
318
+ debugLogger.info(
319
+ '\u2139\uFE0F INFO: Direct Ollama provider is available for local development. For production environments, consider using GatewayProvider with provider: "ollama" for enhanced management. See GATEWAY_MIGRATION_GUIDE.md for details.'
320
+ );
285
321
  }
286
322
 
287
323
  // src/services/ai-provider/providers/ollama.provider.ts
@@ -297,10 +333,7 @@ var OllamaProvider = class {
297
333
  finalBaseUrl: baseUrl,
298
334
  hasTokenFactory: !!config.tokenFactory
299
335
  });
300
- this.ollamaService = new OllamaService(
301
- baseUrl,
302
- config.tokenFactory || (() => null)
303
- );
336
+ this.ollamaService = new OllamaService(baseUrl, config.tokenFactory || (() => null));
304
337
  }
305
338
  chat(request) {
306
339
  const ollamaRequest = {
@@ -339,13 +372,15 @@ var OllamaProvider = class {
339
372
  }
340
373
  listModels() {
341
374
  return this.ollamaService.listModels().pipe(
342
- map2((models) => models.map((model) => ({
343
- name: model.name,
344
- size: model.size,
345
- details: model.details,
346
- digest: model.digest,
347
- modified_at: model.modified_at
348
- })))
375
+ map2(
376
+ (models) => models.map((model) => ({
377
+ name: model.name,
378
+ size: model.size,
379
+ details: model.details,
380
+ digest: model.digest,
381
+ modified_at: model.modified_at
382
+ }))
383
+ )
349
384
  );
350
385
  }
351
386
  async validateServiceAvailability(args) {
@@ -403,9 +438,11 @@ var OpenAIProvider = class {
403
438
  }
404
439
  listModels() {
405
440
  const url = `${this.baseUrl}/models`;
406
- return from2(fetch(url, {
407
- headers: this.getHeaders()
408
- })).pipe(
441
+ return from2(
442
+ fetch(url, {
443
+ headers: this.getHeaders()
444
+ })
445
+ ).pipe(
409
446
  switchMap2((response) => {
410
447
  if (!response.ok) {
411
448
  return throwError2(() => new Error(`Failed to list models: ${response.status}`));
@@ -520,7 +557,10 @@ var OpenAIProvider = class {
520
557
  });
521
558
  }
522
559
  } catch (err) {
523
- debugLogger.error("Error parsing OpenAI stream data:", { data, error: err });
560
+ debugLogger.error("Error parsing OpenAI stream data:", {
561
+ data,
562
+ error: err
563
+ });
524
564
  }
525
565
  }
526
566
  }
@@ -532,14 +572,16 @@ var OpenAIProvider = class {
532
572
  });
533
573
  }
534
574
  nonStreamChatRequest(url, payload) {
535
- return from2(fetch(url, {
536
- method: "POST",
537
- headers: {
538
- ...this.getHeaders(),
539
- "Content-Type": "application/json"
540
- },
541
- body: JSON.stringify(payload)
542
- })).pipe(
575
+ return from2(
576
+ fetch(url, {
577
+ method: "POST",
578
+ headers: {
579
+ ...this.getHeaders(),
580
+ "Content-Type": "application/json"
581
+ },
582
+ body: JSON.stringify(payload)
583
+ })
584
+ ).pipe(
543
585
  switchMap2((response) => {
544
586
  if (!response.ok) {
545
587
  return throwError2(() => new Error(`OpenAI request failed: ${response.status}`));
@@ -728,7 +770,10 @@ var AzureOpenAIProvider = class {
728
770
  });
729
771
  }
730
772
  } catch (err) {
731
- debugLogger.error("Error parsing Azure OpenAI stream data:", { data, error: err });
773
+ debugLogger.error("Error parsing Azure OpenAI stream data:", {
774
+ data,
775
+ error: err
776
+ });
732
777
  }
733
778
  }
734
779
  }
@@ -740,17 +785,21 @@ var AzureOpenAIProvider = class {
740
785
  });
741
786
  }
742
787
  nonStreamChatRequest(url, payload) {
743
- return from3(fetch(url, {
744
- method: "POST",
745
- headers: {
746
- ...this.getHeaders(),
747
- "Content-Type": "application/json"
748
- },
749
- body: JSON.stringify(payload)
750
- })).pipe(
788
+ return from3(
789
+ fetch(url, {
790
+ method: "POST",
791
+ headers: {
792
+ ...this.getHeaders(),
793
+ "Content-Type": "application/json"
794
+ },
795
+ body: JSON.stringify(payload)
796
+ })
797
+ ).pipe(
751
798
  switchMap3((response) => {
752
799
  if (!response.ok) {
753
- return throwError3(() => new Error(`Azure OpenAI request failed: ${response.status}`));
800
+ return throwError3(
801
+ () => new Error(`Azure OpenAI request failed: ${response.status}`)
802
+ );
754
803
  }
755
804
  return from3(response.json());
756
805
  }),
@@ -979,7 +1028,10 @@ var AnthropicProvider = class {
979
1028
  });
980
1029
  }
981
1030
  } catch (err) {
982
- debugLogger.error("Error parsing Anthropic stream data:", { data, error: err });
1031
+ debugLogger.error("Error parsing Anthropic stream data:", {
1032
+ data,
1033
+ error: err
1034
+ });
983
1035
  }
984
1036
  }
985
1037
  }
@@ -991,17 +1043,21 @@ var AnthropicProvider = class {
991
1043
  });
992
1044
  }
993
1045
  nonStreamChatRequest(url, payload) {
994
- return from4(fetch(url, {
995
- method: "POST",
996
- headers: {
997
- ...this.getHeaders(),
998
- "Content-Type": "application/json"
999
- },
1000
- body: JSON.stringify(payload)
1001
- })).pipe(
1046
+ return from4(
1047
+ fetch(url, {
1048
+ method: "POST",
1049
+ headers: {
1050
+ ...this.getHeaders(),
1051
+ "Content-Type": "application/json"
1052
+ },
1053
+ body: JSON.stringify(payload)
1054
+ })
1055
+ ).pipe(
1002
1056
  switchMap4((response) => {
1003
1057
  if (!response.ok) {
1004
- return throwError4(() => new Error(`Anthropic request failed: ${response.status}`));
1058
+ return throwError4(
1059
+ () => new Error(`Anthropic request failed: ${response.status}`)
1060
+ );
1005
1061
  }
1006
1062
  return from4(response.json());
1007
1063
  }),
@@ -1055,7 +1111,16 @@ import { map as map12 } from "rxjs";
1055
1111
 
1056
1112
  // src/services/gateway/gateway.service.ts
1057
1113
  import axios, { AxiosHeaders } from "axios";
1058
- import { catchError as catchError2, from as from5, lastValueFrom as lastValueFrom2, map as map6, Observable as Observable6, of as of2, shareReplay as shareReplay2, timeout as timeout2 } from "rxjs";
1114
+ import {
1115
+ catchError as catchError2,
1116
+ from as from5,
1117
+ lastValueFrom as lastValueFrom2,
1118
+ map as map6,
1119
+ Observable as Observable6,
1120
+ of as of2,
1121
+ shareReplay as shareReplay2,
1122
+ timeout as timeout2
1123
+ } from "rxjs";
1059
1124
 
1060
1125
  // src/store/authenticationStore.ts
1061
1126
  import { create } from "zustand";
@@ -1122,9 +1187,11 @@ function emitAuthTokenChanged(token) {
1122
1187
  if (typeof window === "undefined") {
1123
1188
  return;
1124
1189
  }
1125
- window.dispatchEvent(new CustomEvent(AUTH_TOKEN_CHANGED_EVENT, {
1126
- detail: { token }
1127
- }));
1190
+ window.dispatchEvent(
1191
+ new CustomEvent(AUTH_TOKEN_CHANGED_EVENT, {
1192
+ detail: { token }
1193
+ })
1194
+ );
1128
1195
  }
1129
1196
  var readLocalStorage = () => {
1130
1197
  try {
@@ -1238,8 +1305,10 @@ var AuthenticationService = class {
1238
1305
  }
1239
1306
  }
1240
1307
  parseJwtClaims(token) {
1308
+ const parts = token ? token.split(".") : [];
1309
+ if (parts.length !== 3) return null;
1241
1310
  try {
1242
- const base64Url = token.split(".")[1];
1311
+ const base64Url = parts[1];
1243
1312
  const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
1244
1313
  const jsonPayload = decodeURIComponent(
1245
1314
  atob(base64).split("").map((c) => {
@@ -1323,7 +1392,8 @@ var GatewayService = class {
1323
1392
  */
1324
1393
  async _retryAfterRefresh(instance, error) {
1325
1394
  const config = error.config;
1326
- if (!config || config._banditAuthRetried || error.response?.status !== 401) return null;
1395
+ if (!config || config._banditAuthRetried || error.response?.status !== 401)
1396
+ return null;
1327
1397
  if (!authenticationService.canRefresh()) return null;
1328
1398
  const data = error.response?.data;
1329
1399
  if (data?.code && data.code !== "TOKEN_EXPIRED") return null;
@@ -1418,7 +1488,9 @@ var GatewayService = class {
1418
1488
  return availability;
1419
1489
  } catch (e) {
1420
1490
  if (fallbackUrl) {
1421
- debugLogger.warn(`Gateway service not available at ${this._baseUrl}, trying fallback URL: ${fallbackUrl}`);
1491
+ debugLogger.warn(
1492
+ `Gateway service not available at ${this._baseUrl}, trying fallback URL: ${fallbackUrl}`
1493
+ );
1422
1494
  try {
1423
1495
  availability.url = fallbackUrl.replace(/\/$/, "");
1424
1496
  availability.isAvailable = await lastValueFrom2(
@@ -1434,7 +1506,9 @@ var GatewayService = class {
1434
1506
  this._setBaseUrl(availability.url);
1435
1507
  return availability;
1436
1508
  } catch (e2) {
1437
- debugLogger.error(`Gateway service not available at fallback URL: ${fallbackUrl}`);
1509
+ debugLogger.error(
1510
+ `Gateway service not available at fallback URL: ${fallbackUrl}`
1511
+ );
1438
1512
  throw e2;
1439
1513
  }
1440
1514
  } else {
@@ -1460,7 +1534,11 @@ var GatewayService = class {
1460
1534
  const trimmed = (request.model ?? "").replace(/^bandit:/, "").trim();
1461
1535
  return trimmed !== "" ? trimmed : "bandit-core-1";
1462
1536
  })() : request.model;
1463
- const requestBody = { ...request, model: normalizedModel, stream: request.stream !== false };
1537
+ const requestBody = {
1538
+ ...request,
1539
+ model: normalizedModel,
1540
+ stream: request.stream !== false
1541
+ };
1464
1542
  return new Observable6((observer) => {
1465
1543
  const controller = new AbortController();
1466
1544
  const handleStreamingResponse = async (response) => {
@@ -1477,7 +1555,10 @@ var GatewayService = class {
1477
1555
  const finalResponse = JSON.parse(tail.text);
1478
1556
  observer.next(finalResponse);
1479
1557
  } catch (err) {
1480
- debugLogger.error("GatewayService chat final chunk parsing error", { buffer, error: err });
1558
+ debugLogger.error("GatewayService chat final chunk parsing error", {
1559
+ buffer,
1560
+ error: err
1561
+ });
1481
1562
  observer.error(err);
1482
1563
  }
1483
1564
  }
@@ -1502,17 +1583,21 @@ var GatewayService = class {
1502
1583
  const transformed = {
1503
1584
  id: `chatcmpl-${Date.now()}`,
1504
1585
  object: "chat.completion.chunk",
1505
- created: Math.floor(new Date(parsed.created_at || Date.now()).getTime() / 1e3),
1586
+ created: Math.floor(
1587
+ new Date(parsed.created_at || Date.now()).getTime() / 1e3
1588
+ ),
1506
1589
  model: parsed.model,
1507
- choices: [{
1508
- index: 0,
1509
- delta: {
1510
- role: parsed.message.role,
1511
- content: parsed.message.content,
1512
- tool_calls: parsed.message.tool_calls
1513
- },
1514
- finish_reason: parsed.done ? parsed.done_reason || "stop" : null
1515
- }]
1590
+ choices: [
1591
+ {
1592
+ index: 0,
1593
+ delta: {
1594
+ role: parsed.message.role,
1595
+ content: parsed.message.content,
1596
+ tool_calls: parsed.message.tool_calls
1597
+ },
1598
+ finish_reason: parsed.done ? parsed.done_reason || "stop" : null
1599
+ }
1600
+ ]
1516
1601
  };
1517
1602
  if (parsed.done && parsed.total_duration) {
1518
1603
  transformed.usage = {
@@ -1542,25 +1627,33 @@ var GatewayService = class {
1542
1627
  };
1543
1628
  const sendRequest = (targetEndpoint, allowFallback) => {
1544
1629
  const url = `${this._baseUrl}${targetEndpoint}`;
1545
- debugLogger.debug(`Gateway chat request to ${url} with provider: ${request.provider || "default"}`, {
1546
- model: normalizedModel,
1547
- messageCount: request.messages.length,
1548
- hasImages: !!(request.images && request.images.length > 0),
1549
- imageCount: request.images?.length || 0
1550
- });
1630
+ debugLogger.debug(
1631
+ `Gateway chat request to ${url} with provider: ${request.provider || "default"}`,
1632
+ {
1633
+ model: normalizedModel,
1634
+ messageCount: request.messages.length,
1635
+ hasImages: !!(request.images && request.images.length > 0),
1636
+ imageCount: request.images?.length || 0
1637
+ }
1638
+ );
1551
1639
  fetch(url, {
1552
1640
  method: "POST",
1553
1641
  headers: this._getHeaders(),
1554
1642
  body: JSON.stringify(requestBody),
1555
1643
  signal: controller.signal
1556
1644
  }).then(async (response) => {
1557
- debugLogger.debug(`Gateway chat response status: ${response.status} for provider: ${request.provider || "default"}`);
1645
+ debugLogger.debug(
1646
+ `Gateway chat response status: ${response.status} for provider: ${request.provider || "default"}`
1647
+ );
1558
1648
  if (response.status === 404 && allowFallback && fallbackEndpoint) {
1559
- debugLogger.warn("GatewayService chat endpoint returned 404, attempting fallback route", {
1560
- provider: request.provider,
1561
- attemptedEndpoint: targetEndpoint,
1562
- fallbackEndpoint
1563
- });
1649
+ debugLogger.warn(
1650
+ "GatewayService chat endpoint returned 404, attempting fallback route",
1651
+ {
1652
+ provider: request.provider,
1653
+ attemptedEndpoint: targetEndpoint,
1654
+ fallbackEndpoint
1655
+ }
1656
+ );
1564
1657
  sendRequest(fallbackEndpoint, false);
1565
1658
  return;
1566
1659
  }
@@ -1576,7 +1669,10 @@ var GatewayService = class {
1576
1669
  body: errorText
1577
1670
  });
1578
1671
  } catch (readError) {
1579
- debugLogger.error("GatewayService chat failed to read error response body", { error: readError });
1672
+ debugLogger.error(
1673
+ "GatewayService chat failed to read error response body",
1674
+ { error: readError }
1675
+ );
1580
1676
  errorText = `Request failed with status ${response.status}`;
1581
1677
  }
1582
1678
  try {
@@ -1626,14 +1722,21 @@ var GatewayService = class {
1626
1722
  const trimmed = (request.model ?? "").replace(/^bandit:/, "").trim();
1627
1723
  return trimmed !== "" ? trimmed : "bandit-core-1";
1628
1724
  })() : request.model;
1629
- debugLogger.debug(`Gateway generate request to ${url} with provider: ${request.provider || "default"}`, {
1630
- model: normalizedModel
1631
- });
1725
+ debugLogger.debug(
1726
+ `Gateway generate request to ${url} with provider: ${request.provider || "default"}`,
1727
+ {
1728
+ model: normalizedModel
1729
+ }
1730
+ );
1632
1731
  return new Observable6((observer) => {
1633
1732
  const task = fetch(url, {
1634
1733
  method: "POST",
1635
1734
  headers: this._getHeaders(),
1636
- body: JSON.stringify({ ...request, model: normalizedModel, stream: request.stream !== false })
1735
+ body: JSON.stringify({
1736
+ ...request,
1737
+ model: normalizedModel,
1738
+ stream: request.stream !== false
1739
+ })
1637
1740
  });
1638
1741
  task.then(async (response) => {
1639
1742
  if (!response.ok) {
@@ -1673,7 +1776,9 @@ var GatewayService = class {
1673
1776
  observer.next(JSON.parse(tail.text));
1674
1777
  } catch (err) {
1675
1778
  observer.error(err);
1676
- debugLogger.error("Final chunk parsing error (gateway generate):", { buffer });
1779
+ debugLogger.error("Final chunk parsing error (gateway generate):", {
1780
+ buffer
1781
+ });
1677
1782
  }
1678
1783
  }
1679
1784
  observer.complete();
@@ -1693,7 +1798,9 @@ var GatewayService = class {
1693
1798
  observer.next(JSON.parse(classified.text));
1694
1799
  } catch (err) {
1695
1800
  observer.error(err);
1696
- debugLogger.error("Error parsing JSON line (gateway generate):", { line });
1801
+ debugLogger.error("Error parsing JSON line (gateway generate):", {
1802
+ line
1803
+ });
1697
1804
  }
1698
1805
  }
1699
1806
  }
@@ -1817,7 +1924,9 @@ var GatewayService = class {
1817
1924
  * Generate a mailto URL as fallback for feedback submission
1818
1925
  */
1819
1926
  _generateMailtoUrl(feedback) {
1820
- const subject = encodeURIComponent(`[${feedback.category.toUpperCase()}] ${feedback.title}`);
1927
+ const subject = encodeURIComponent(
1928
+ `[${feedback.category.toUpperCase()}] ${feedback.title}`
1929
+ );
1821
1930
  let body = `Category: ${feedback.category}
1822
1931
  `;
1823
1932
  body += `Priority: ${feedback.priority}
@@ -2341,7 +2450,9 @@ var GatewayProvider = class {
2341
2450
  throw new Error("Gateway provider requires gatewayUrl in config");
2342
2451
  }
2343
2452
  if (!config.provider) {
2344
- throw new Error("Gateway provider requires provider field to specify backend (openai, azure-openai, anthropic, ollama)");
2453
+ throw new Error(
2454
+ "Gateway provider requires provider field to specify backend (openai, azure-openai, anthropic, ollama)"
2455
+ );
2345
2456
  }
2346
2457
  const tokenFactory = config.tokenFactory || (() => null);
2347
2458
  this.gatewayService = new GatewayService(config.gatewayUrl, tokenFactory);
@@ -2358,7 +2469,9 @@ var GatewayProvider = class {
2358
2469
  break;
2359
2470
  case "azure-openai":
2360
2471
  if (!this.config.deploymentName || !this.config.apiVersion) {
2361
- throw new Error("Azure OpenAI gateway provider requires deploymentName and apiVersion");
2472
+ throw new Error(
2473
+ "Azure OpenAI gateway provider requires deploymentName and apiVersion"
2474
+ );
2362
2475
  }
2363
2476
  this.providerSpecificService = new AzureOpenAIGatewayService(
2364
2477
  gatewayUrl,
@@ -2370,10 +2483,16 @@ var GatewayProvider = class {
2370
2483
  );
2371
2484
  break;
2372
2485
  case "anthropic":
2373
- this.providerSpecificService = new AnthropicGatewayService(gatewayUrl, tokenFactory);
2486
+ this.providerSpecificService = new AnthropicGatewayService(
2487
+ gatewayUrl,
2488
+ tokenFactory
2489
+ );
2374
2490
  break;
2375
2491
  case "bandit":
2376
- this.providerSpecificService = new BanditAIGatewayService(gatewayUrl, tokenFactory);
2492
+ this.providerSpecificService = new BanditAIGatewayService(
2493
+ gatewayUrl,
2494
+ tokenFactory
2495
+ );
2377
2496
  break;
2378
2497
  case "ollama":
2379
2498
  this.providerSpecificService = new OllamaGatewayService(gatewayUrl, tokenFactory);
@@ -2411,7 +2530,9 @@ var GatewayProvider = class {
2411
2530
  images: request.images
2412
2531
  };
2413
2532
  }
2414
- } else if (["openai", "azure-openai", "anthropic", "bandit", "playground"].includes(this.config.provider || "")) {
2533
+ } else if (["openai", "azure-openai", "anthropic", "bandit", "playground"].includes(
2534
+ this.config.provider || ""
2535
+ )) {
2415
2536
  if (lastUserMessageIndex !== -1) {
2416
2537
  const currentMessage = messages[lastUserMessageIndex];
2417
2538
  const contentArray = [
@@ -2460,7 +2581,9 @@ var GatewayProvider = class {
2460
2581
  stream: request.stream,
2461
2582
  hasImages: !!(request.images && request.images.length > 0),
2462
2583
  imageCount: request.images?.length || 0,
2463
- imageStrategy: this.config.provider === "ollama" ? "message-level-array" : ["openai", "azure-openai", "anthropic", "playground"].includes(this.config.provider || "") ? "structured-content" : "top-level-fallback",
2584
+ imageStrategy: this.config.provider === "ollama" ? "message-level-array" : ["openai", "azure-openai", "anthropic", "playground"].includes(
2585
+ this.config.provider || ""
2586
+ ) ? "structured-content" : "top-level-fallback",
2464
2587
  finalMessages: messages.map((m) => ({
2465
2588
  role: m.role,
2466
2589
  hasImages: Array.isArray(m.images) && m.images.length > 0,
@@ -2503,26 +2626,32 @@ var GatewayProvider = class {
2503
2626
  );
2504
2627
  }
2505
2628
  listModels() {
2506
- debugLogger.debug("Gateway provider listing models", { provider: this.config.provider });
2629
+ debugLogger.debug("Gateway provider listing models", {
2630
+ provider: this.config.provider
2631
+ });
2507
2632
  if (this.config.provider) {
2508
2633
  return this.gatewayService.listModelsByProvider(this.config.provider).pipe(
2509
- map12((models) => models.map((model) => ({
2510
- name: model.id || model.name,
2511
- size: model.size,
2512
- details: model.details,
2513
- digest: model.digest,
2514
- modified_at: model.modified_at
2515
- })))
2634
+ map12(
2635
+ (models) => models.map((model) => ({
2636
+ name: model.id || model.name,
2637
+ size: model.size,
2638
+ details: model.details,
2639
+ digest: model.digest,
2640
+ modified_at: model.modified_at
2641
+ }))
2642
+ )
2516
2643
  );
2517
2644
  } else {
2518
2645
  return this.gatewayService.listModels().pipe(
2519
- map12((models) => models.map((model) => ({
2520
- name: model.id || model.name,
2521
- size: model.size,
2522
- details: model.details,
2523
- digest: model.digest,
2524
- modified_at: model.modified_at
2525
- })))
2646
+ map12(
2647
+ (models) => models.map((model) => ({
2648
+ name: model.id || model.name,
2649
+ size: model.size,
2650
+ details: model.details,
2651
+ digest: model.digest,
2652
+ modified_at: model.modified_at
2653
+ }))
2654
+ )
2526
2655
  );
2527
2656
  }
2528
2657
  }
@@ -2663,9 +2792,7 @@ var PlaygroundProvider = class {
2663
2792
  }
2664
2793
  chat(request) {
2665
2794
  const lastUserMessage = [...request.messages].reverse().find((m) => m.role === "user")?.content ?? "";
2666
- const script = PLAYGROUND_SCRIPTS.find(
2667
- (scenario) => scenario.match(lastUserMessage)
2668
- );
2795
+ const script = PLAYGROUND_SCRIPTS.find((scenario) => scenario.match(lastUserMessage));
2669
2796
  const responseText = script?.response ?? FALLBACK_RESPONSE;
2670
2797
  const chunks = this.splitIntoChunks(responseText);
2671
2798
  return new Observable8((observer) => {
@@ -2774,9 +2901,11 @@ var XAIProvider = class {
2774
2901
  }
2775
2902
  listModels() {
2776
2903
  const url = `${this.baseUrl}/models`;
2777
- return from6(fetch(url, {
2778
- headers: this.getHeaders()
2779
- })).pipe(
2904
+ return from6(
2905
+ fetch(url, {
2906
+ headers: this.getHeaders()
2907
+ })
2908
+ ).pipe(
2780
2909
  switchMap5((response) => {
2781
2910
  if (!response.ok) {
2782
2911
  return throwError5(() => new Error(`Failed to list models: ${response.status}`));
@@ -2892,7 +3021,10 @@ var XAIProvider = class {
2892
3021
  });
2893
3022
  }
2894
3023
  } catch (err) {
2895
- debugLogger.error("Error parsing xAI stream data:", { data, error: err });
3024
+ debugLogger.error("Error parsing xAI stream data:", {
3025
+ data,
3026
+ error: err
3027
+ });
2896
3028
  }
2897
3029
  }
2898
3030
  }
@@ -2904,14 +3036,16 @@ var XAIProvider = class {
2904
3036
  });
2905
3037
  }
2906
3038
  nonStreamChatRequest(url, payload) {
2907
- return from6(fetch(url, {
2908
- method: "POST",
2909
- headers: {
2910
- ...this.getHeaders(),
2911
- "Content-Type": "application/json"
2912
- },
2913
- body: JSON.stringify(payload)
2914
- })).pipe(
3039
+ return from6(
3040
+ fetch(url, {
3041
+ method: "POST",
3042
+ headers: {
3043
+ ...this.getHeaders(),
3044
+ "Content-Type": "application/json"
3045
+ },
3046
+ body: JSON.stringify(payload)
3047
+ })
3048
+ ).pipe(
2915
3049
  switchMap5((response) => {
2916
3050
  if (!response.ok) {
2917
3051
  return throwError5(() => new Error(`xAI request failed: ${response.status}`));
@@ -3026,8 +3160,13 @@ var BanditAIProvider = class {
3026
3160
  return from7(fetch(url, { headers: this.getHeaders() })).pipe(
3027
3161
  switchMap6((response) => {
3028
3162
  if (!response.ok) {
3029
- debugLogger.error("BanditAI listModels failed", { status: response.status, url });
3030
- return throwError6(() => new Error(`Failed to list Bandit models: ${response.status}`));
3163
+ debugLogger.error("BanditAI listModels failed", {
3164
+ status: response.status,
3165
+ url
3166
+ });
3167
+ return throwError6(
3168
+ () => new Error(`Failed to list Bandit models: ${response.status}`)
3169
+ );
3031
3170
  }
3032
3171
  return from7(response.json());
3033
3172
  }),
@@ -3098,7 +3237,10 @@ var BanditAIProvider = class {
3098
3237
  const read = () => {
3099
3238
  reader?.read().then(({ done, value }) => {
3100
3239
  if (done) {
3101
- observer.next({ message: { content: "", role: "assistant" }, done: true });
3240
+ observer.next({
3241
+ message: { content: "", role: "assistant" },
3242
+ done: true
3243
+ });
3102
3244
  observer.complete();
3103
3245
  return;
3104
3246
  }
@@ -3112,7 +3254,10 @@ var BanditAIProvider = class {
3112
3254
  }
3113
3255
  const data = line.slice(6).trim();
3114
3256
  if (data === "[DONE]") {
3115
- observer.next({ message: { content: "", role: "assistant" }, done: true });
3257
+ observer.next({
3258
+ message: { content: "", role: "assistant" },
3259
+ done: true
3260
+ });
3116
3261
  observer.complete();
3117
3262
  return;
3118
3263
  }
@@ -3120,10 +3265,16 @@ var BanditAIProvider = class {
3120
3265
  const parsed = JSON.parse(data);
3121
3266
  const content = parsed.choices?.[0]?.delta?.content ?? "";
3122
3267
  if (content) {
3123
- observer.next({ message: { content, role: "assistant" }, done: false });
3268
+ observer.next({
3269
+ message: { content, role: "assistant" },
3270
+ done: false
3271
+ });
3124
3272
  }
3125
3273
  } catch (error) {
3126
- debugLogger.error("BanditAI stream chunk parse failure", { data, error });
3274
+ debugLogger.error("BanditAI stream chunk parse failure", {
3275
+ data,
3276
+ error
3277
+ });
3127
3278
  }
3128
3279
  }
3129
3280
  read();
@@ -3134,17 +3285,21 @@ var BanditAIProvider = class {
3134
3285
  });
3135
3286
  }
3136
3287
  nonStreamChatRequest(url, payload) {
3137
- return from7(fetch(url, {
3138
- method: "POST",
3139
- headers: {
3140
- ...this.getHeaders(),
3141
- "Content-Type": "application/json"
3142
- },
3143
- body: JSON.stringify(payload)
3144
- })).pipe(
3288
+ return from7(
3289
+ fetch(url, {
3290
+ method: "POST",
3291
+ headers: {
3292
+ ...this.getHeaders(),
3293
+ "Content-Type": "application/json"
3294
+ },
3295
+ body: JSON.stringify(payload)
3296
+ })
3297
+ ).pipe(
3145
3298
  switchMap6((response) => {
3146
3299
  if (!response.ok) {
3147
- return throwError6(() => new Error(`BanditAI request failed: ${response.status}`));
3300
+ return throwError6(
3301
+ () => new Error(`BanditAI request failed: ${response.status}`)
3302
+ );
3148
3303
  }
3149
3304
  return from7(response.json());
3150
3305
  }),
@@ -3262,4 +3417,4 @@ export {
3262
3417
  AIProviderFactory,
3263
3418
  useAIProviderStore
3264
3419
  };
3265
- //# sourceMappingURL=chunk-GRPTCHFN.mjs.map
3420
+ //# sourceMappingURL=chunk-BJT6KPUG.mjs.map