@burtson-labs/bandit-engine 2.0.35 → 2.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/{aiProviderStore-3YS2BZU3.mjs → aiProviderStore-UJRDUYOF.mjs} +2 -2
- package/dist/{chat-2LYIZNWZ.mjs → chat-SZK3EBDO.mjs} +5 -5
- package/dist/chat-provider.js +227 -11
- package/dist/chat-provider.js.map +1 -1
- package/dist/chat-provider.mjs +4 -4
- package/dist/{chunk-6PQRG6W4.mjs → chunk-2ZZA2IFL.mjs} +3 -3
- package/dist/{chunk-GBANNFRD.mjs → chunk-ED5NNDKO.mjs} +3 -3
- package/dist/{chunk-XD5VJCFN.mjs → chunk-FJO5ZWYU.mjs} +3 -3
- package/dist/{chunk-XXMCI2WK.mjs → chunk-G4OXOTNJ.mjs} +41 -8
- package/dist/{chunk-XXMCI2WK.mjs.map → chunk-G4OXOTNJ.mjs.map} +1 -1
- package/dist/{chunk-LG2JCTOE.mjs → chunk-PLNFTIGX.mjs} +4 -4
- package/dist/{chunk-7RLN6ZGT.mjs → chunk-S635Q6OQ.mjs} +3 -3
- package/dist/{chunk-IGD4KGB5.mjs → chunk-ZAVV2AT5.mjs} +4 -4
- package/dist/{chunk-IHJPVIGB.mjs → chunk-ZNNOTDRD.mjs} +208 -1
- package/dist/chunk-ZNNOTDRD.mjs.map +1 -0
- package/dist/cli/cli.js +1078 -62
- package/dist/cli/cli.js.map +1 -1
- package/dist/{gateway-BiHRHJMM.d.ts → gateway-Ckf_KusF.d.mts} +4 -4
- package/dist/{gateway-BiHRHJMM.d.mts → gateway-Ckf_KusF.d.ts} +4 -4
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +318 -69
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -8
- package/dist/management/management.js +316 -67
- package/dist/management/management.js.map +1 -1
- package/dist/management/management.mjs +6 -6
- package/dist/modals/chat-modal/chat-modal.js +236 -20
- package/dist/modals/chat-modal/chat-modal.js.map +1 -1
- package/dist/modals/chat-modal/chat-modal.mjs +4 -4
- package/dist/public-types.d.mts +1 -1
- package/dist/public-types.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunk-IHJPVIGB.mjs.map +0 -1
- /package/dist/{aiProviderStore-3YS2BZU3.mjs.map → aiProviderStore-UJRDUYOF.mjs.map} +0 -0
- /package/dist/{chat-2LYIZNWZ.mjs.map → chat-SZK3EBDO.mjs.map} +0 -0
- /package/dist/{chunk-6PQRG6W4.mjs.map → chunk-2ZZA2IFL.mjs.map} +0 -0
- /package/dist/{chunk-GBANNFRD.mjs.map → chunk-ED5NNDKO.mjs.map} +0 -0
- /package/dist/{chunk-XD5VJCFN.mjs.map → chunk-FJO5ZWYU.mjs.map} +0 -0
- /package/dist/{chunk-LG2JCTOE.mjs.map → chunk-PLNFTIGX.mjs.map} +0 -0
- /package/dist/{chunk-7RLN6ZGT.mjs.map → chunk-S635Q6OQ.mjs.map} +0 -0
- /package/dist/{chunk-IGD4KGB5.mjs.map → chunk-ZAVV2AT5.mjs.map} +0 -0
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ An AI chat toolkit built for speed, design, and control. Power branded AI assist
|
|
|
20
20
|
- 🔌 Plug-and-play React chat, modal, and management surfaces
|
|
21
21
|
- 🧠 Memory, vector knowledge, and provider switching behind a secure gateway
|
|
22
22
|
- 🎨 Full MUI theming, dark mode, and branding controls out of the box
|
|
23
|
-
- 🌐 Multimodal support (voice, images, documents) with Ollama, OpenAI, Azure OpenAI, and
|
|
23
|
+
- 🌐 Multimodal support (voice, images, documents) with Ollama, OpenAI, Azure OpenAI, Anthropic, and xAI today — tell us which providers you need next so we can prioritize them
|
|
24
24
|
- 🛠️ CLI scaffolding, sample gateway, and docs to launch in minutes
|
|
25
25
|
|
|
26
26
|
## Quick Links
|
|
@@ -44,7 +44,8 @@ npx @burtson-labs/bandit-engine create my-bandit-app
|
|
|
44
44
|
What you get out of the box:
|
|
45
45
|
|
|
46
46
|
- Vite + React project wired with `Chat`, `ChatModal`, and `ChatProvider`
|
|
47
|
-
- Express gateway that proxies OpenAI or Ollama behind `/api`
|
|
47
|
+
- Express gateway that proxies OpenAI, Azure OpenAI, Anthropic, xAI, or Ollama behind `/api`
|
|
48
|
+
- Next.js App Router gateway scaffold (in `server/next-app/`) ready to copy into a Next project
|
|
48
49
|
- Branding + persona config in `public/config.json`, ready for your logo or prompts
|
|
49
50
|
|
|
50
51
|
Customize the output with options such as:
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useAIProviderStore
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZNNOTDRD.mjs";
|
|
4
4
|
import "./chunk-KCI46M23.mjs";
|
|
5
5
|
import "./chunk-BJTO5JO5.mjs";
|
|
6
6
|
export {
|
|
7
7
|
useAIProviderStore
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=aiProviderStore-
|
|
9
|
+
//# sourceMappingURL=aiProviderStore-UJRDUYOF.mjs.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
chat_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZAVV2AT5.mjs";
|
|
4
4
|
import "./chunk-ONQMRE2G.mjs";
|
|
5
5
|
import "./chunk-RTQDQ6TC.mjs";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-ED5NNDKO.mjs";
|
|
7
|
+
import "./chunk-FJO5ZWYU.mjs";
|
|
8
8
|
import "./chunk-XUBYA5I7.mjs";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-ZNNOTDRD.mjs";
|
|
10
10
|
import "./chunk-KCI46M23.mjs";
|
|
11
11
|
import "./chunk-BJTO5JO5.mjs";
|
|
12
12
|
export {
|
|
13
13
|
chat_default as default
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=chat-
|
|
15
|
+
//# sourceMappingURL=chat-SZK3EBDO.mjs.map
|
package/dist/chat-provider.js
CHANGED
|
@@ -12,11 +12,11 @@ var __export = (target, all) => {
|
|
|
12
12
|
for (var name in all)
|
|
13
13
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
14
|
};
|
|
15
|
-
var __copyProps = (to,
|
|
16
|
-
if (
|
|
17
|
-
for (let key of __getOwnPropNames(
|
|
15
|
+
var __copyProps = (to, from7, except, desc) => {
|
|
16
|
+
if (from7 && typeof from7 === "object" || typeof from7 === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from7))
|
|
18
18
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
-
__defProp(to, key, { get: () =>
|
|
19
|
+
__defProp(to, key, { get: () => from7[key], enumerable: !(desc = __getOwnPropDesc(from7, key)) || desc.enumerable });
|
|
20
20
|
}
|
|
21
21
|
return to;
|
|
22
22
|
};
|
|
@@ -3363,6 +3363,216 @@ var init_playground_provider = __esm({
|
|
|
3363
3363
|
}
|
|
3364
3364
|
});
|
|
3365
3365
|
|
|
3366
|
+
// src/services/ai-provider/providers/xai.provider.ts
|
|
3367
|
+
var import_rxjs9, XAIProvider;
|
|
3368
|
+
var init_xai_provider = __esm({
|
|
3369
|
+
"src/services/ai-provider/providers/xai.provider.ts"() {
|
|
3370
|
+
"use strict";
|
|
3371
|
+
import_rxjs9 = require("rxjs");
|
|
3372
|
+
init_common_types();
|
|
3373
|
+
init_debugLogger();
|
|
3374
|
+
XAIProvider = class {
|
|
3375
|
+
config;
|
|
3376
|
+
baseUrl;
|
|
3377
|
+
constructor(config) {
|
|
3378
|
+
this.config = config;
|
|
3379
|
+
this.baseUrl = config.baseUrl || "https://api.x.ai/v1";
|
|
3380
|
+
}
|
|
3381
|
+
chat(request) {
|
|
3382
|
+
const url = `${this.baseUrl}/chat/completions`;
|
|
3383
|
+
const payload = {
|
|
3384
|
+
model: request.model,
|
|
3385
|
+
messages: request.messages,
|
|
3386
|
+
stream: Boolean(request.stream),
|
|
3387
|
+
temperature: request.temperature,
|
|
3388
|
+
max_tokens: request.maxTokens
|
|
3389
|
+
};
|
|
3390
|
+
if (request.stream) {
|
|
3391
|
+
return this.streamChatRequest(url, payload);
|
|
3392
|
+
} else {
|
|
3393
|
+
return this.nonStreamChatRequest(url, payload);
|
|
3394
|
+
}
|
|
3395
|
+
}
|
|
3396
|
+
generate(request) {
|
|
3397
|
+
const chatRequest = {
|
|
3398
|
+
model: request.model,
|
|
3399
|
+
messages: [{ role: "user", content: request.prompt }],
|
|
3400
|
+
stream: request.stream,
|
|
3401
|
+
options: request.options
|
|
3402
|
+
};
|
|
3403
|
+
return this.chat(chatRequest).pipe(
|
|
3404
|
+
(0, import_rxjs9.map)((response) => ({
|
|
3405
|
+
response: response.message.content,
|
|
3406
|
+
done: response.done
|
|
3407
|
+
}))
|
|
3408
|
+
);
|
|
3409
|
+
}
|
|
3410
|
+
listModels() {
|
|
3411
|
+
const url = `${this.baseUrl}/models`;
|
|
3412
|
+
return (0, import_rxjs9.from)(fetch(url, {
|
|
3413
|
+
headers: this.getHeaders()
|
|
3414
|
+
})).pipe(
|
|
3415
|
+
(0, import_rxjs9.switchMap)((response) => {
|
|
3416
|
+
if (!response.ok) {
|
|
3417
|
+
return (0, import_rxjs9.throwError)(() => new Error(`Failed to list models: ${response.status}`));
|
|
3418
|
+
}
|
|
3419
|
+
return (0, import_rxjs9.from)(response.json());
|
|
3420
|
+
}),
|
|
3421
|
+
(0, import_rxjs9.map)(
|
|
3422
|
+
(data) => data.data.map((model) => ({
|
|
3423
|
+
name: model.id,
|
|
3424
|
+
details: {
|
|
3425
|
+
format: "xai",
|
|
3426
|
+
family: model.object
|
|
3427
|
+
}
|
|
3428
|
+
}))
|
|
3429
|
+
)
|
|
3430
|
+
);
|
|
3431
|
+
}
|
|
3432
|
+
async validateServiceAvailability(args) {
|
|
3433
|
+
try {
|
|
3434
|
+
const controller = new AbortController();
|
|
3435
|
+
const timeoutId = setTimeout(() => controller.abort(), args.timeoutMs);
|
|
3436
|
+
const response = await fetch(`${this.baseUrl}/models`, {
|
|
3437
|
+
headers: this.getHeaders(),
|
|
3438
|
+
signal: controller.signal
|
|
3439
|
+
});
|
|
3440
|
+
clearTimeout(timeoutId);
|
|
3441
|
+
return {
|
|
3442
|
+
url: this.baseUrl,
|
|
3443
|
+
isAvailable: response.ok
|
|
3444
|
+
};
|
|
3445
|
+
} catch (error) {
|
|
3446
|
+
if (args.fallbackUrl) {
|
|
3447
|
+
try {
|
|
3448
|
+
const controller = new AbortController();
|
|
3449
|
+
const timeoutId = setTimeout(() => controller.abort(), args.timeoutMs);
|
|
3450
|
+
const response = await fetch(`${args.fallbackUrl}/models`, {
|
|
3451
|
+
headers: this.getHeaders(),
|
|
3452
|
+
signal: controller.signal
|
|
3453
|
+
});
|
|
3454
|
+
clearTimeout(timeoutId);
|
|
3455
|
+
if (response.ok) {
|
|
3456
|
+
this.baseUrl = args.fallbackUrl;
|
|
3457
|
+
return {
|
|
3458
|
+
url: args.fallbackUrl,
|
|
3459
|
+
isAvailable: true
|
|
3460
|
+
};
|
|
3461
|
+
}
|
|
3462
|
+
} catch (fallbackError) {
|
|
3463
|
+
debugLogger.warn("xAI fallback validation failed", { error: fallbackError });
|
|
3464
|
+
}
|
|
3465
|
+
}
|
|
3466
|
+
return {
|
|
3467
|
+
url: this.baseUrl,
|
|
3468
|
+
isAvailable: false
|
|
3469
|
+
};
|
|
3470
|
+
}
|
|
3471
|
+
}
|
|
3472
|
+
getProviderType() {
|
|
3473
|
+
return "xai" /* XAI */;
|
|
3474
|
+
}
|
|
3475
|
+
getConfig() {
|
|
3476
|
+
return this.config;
|
|
3477
|
+
}
|
|
3478
|
+
streamChatRequest(url, payload) {
|
|
3479
|
+
return new import_rxjs9.Observable((observer) => {
|
|
3480
|
+
const task = fetch(url, {
|
|
3481
|
+
method: "POST",
|
|
3482
|
+
headers: {
|
|
3483
|
+
...this.getHeaders(),
|
|
3484
|
+
"Content-Type": "application/json"
|
|
3485
|
+
},
|
|
3486
|
+
body: JSON.stringify(payload)
|
|
3487
|
+
});
|
|
3488
|
+
task.then((response) => {
|
|
3489
|
+
if (!response.ok) {
|
|
3490
|
+
observer.error(new Error(`xAI request failed: ${response.status}`));
|
|
3491
|
+
return;
|
|
3492
|
+
}
|
|
3493
|
+
const reader = response.body?.getReader();
|
|
3494
|
+
const decoder = new TextDecoder();
|
|
3495
|
+
let buffer = "";
|
|
3496
|
+
const read = () => {
|
|
3497
|
+
reader?.read().then(({ done, value }) => {
|
|
3498
|
+
if (done) {
|
|
3499
|
+
observer.next({
|
|
3500
|
+
message: { content: "", role: "assistant" },
|
|
3501
|
+
done: true
|
|
3502
|
+
});
|
|
3503
|
+
observer.complete();
|
|
3504
|
+
return;
|
|
3505
|
+
}
|
|
3506
|
+
buffer += decoder.decode(value, { stream: true });
|
|
3507
|
+
const lines = buffer.split("\n");
|
|
3508
|
+
buffer = lines.pop() ?? "";
|
|
3509
|
+
for (const line of lines) {
|
|
3510
|
+
if (line.trim() && line.startsWith("data: ")) {
|
|
3511
|
+
const data = line.slice(6).trim();
|
|
3512
|
+
if (data === "[DONE]") {
|
|
3513
|
+
observer.next({
|
|
3514
|
+
message: { content: "", role: "assistant" },
|
|
3515
|
+
done: true
|
|
3516
|
+
});
|
|
3517
|
+
observer.complete();
|
|
3518
|
+
return;
|
|
3519
|
+
}
|
|
3520
|
+
try {
|
|
3521
|
+
const parsed = JSON.parse(data);
|
|
3522
|
+
const content = parsed.choices?.[0]?.delta?.content ?? "";
|
|
3523
|
+
if (content) {
|
|
3524
|
+
observer.next({
|
|
3525
|
+
message: { content, role: "assistant" },
|
|
3526
|
+
done: false
|
|
3527
|
+
});
|
|
3528
|
+
}
|
|
3529
|
+
} catch (err) {
|
|
3530
|
+
debugLogger.error("Error parsing xAI stream data:", { data, error: err });
|
|
3531
|
+
}
|
|
3532
|
+
}
|
|
3533
|
+
}
|
|
3534
|
+
read();
|
|
3535
|
+
}).catch((err) => observer.error(err));
|
|
3536
|
+
};
|
|
3537
|
+
read();
|
|
3538
|
+
}).catch((err) => observer.error(err));
|
|
3539
|
+
});
|
|
3540
|
+
}
|
|
3541
|
+
nonStreamChatRequest(url, payload) {
|
|
3542
|
+
return (0, import_rxjs9.from)(fetch(url, {
|
|
3543
|
+
method: "POST",
|
|
3544
|
+
headers: {
|
|
3545
|
+
...this.getHeaders(),
|
|
3546
|
+
"Content-Type": "application/json"
|
|
3547
|
+
},
|
|
3548
|
+
body: JSON.stringify(payload)
|
|
3549
|
+
})).pipe(
|
|
3550
|
+
(0, import_rxjs9.switchMap)((response) => {
|
|
3551
|
+
if (!response.ok) {
|
|
3552
|
+
return (0, import_rxjs9.throwError)(() => new Error(`xAI request failed: ${response.status}`));
|
|
3553
|
+
}
|
|
3554
|
+
return (0, import_rxjs9.from)(response.json());
|
|
3555
|
+
}),
|
|
3556
|
+
(0, import_rxjs9.map)((data) => ({
|
|
3557
|
+
message: {
|
|
3558
|
+
content: data.choices?.[0]?.message?.content ?? "",
|
|
3559
|
+
role: "assistant"
|
|
3560
|
+
},
|
|
3561
|
+
done: true
|
|
3562
|
+
}))
|
|
3563
|
+
);
|
|
3564
|
+
}
|
|
3565
|
+
getHeaders() {
|
|
3566
|
+
const headers = {};
|
|
3567
|
+
if (this.config.apiKey) {
|
|
3568
|
+
headers["Authorization"] = `Bearer ${this.config.apiKey}`;
|
|
3569
|
+
}
|
|
3570
|
+
return headers;
|
|
3571
|
+
}
|
|
3572
|
+
};
|
|
3573
|
+
}
|
|
3574
|
+
});
|
|
3575
|
+
|
|
3366
3576
|
// src/services/ai-provider/ai-provider.factory.ts
|
|
3367
3577
|
var AIProviderFactory;
|
|
3368
3578
|
var init_ai_provider_factory = __esm({
|
|
@@ -3375,6 +3585,7 @@ var init_ai_provider_factory = __esm({
|
|
|
3375
3585
|
init_anthropic_provider();
|
|
3376
3586
|
init_gateway_provider();
|
|
3377
3587
|
init_playground_provider();
|
|
3588
|
+
init_xai_provider();
|
|
3378
3589
|
AIProviderFactory = class {
|
|
3379
3590
|
static createProvider(config) {
|
|
3380
3591
|
switch (config.type) {
|
|
@@ -3386,6 +3597,8 @@ var init_ai_provider_factory = __esm({
|
|
|
3386
3597
|
return new AzureOpenAIProvider(config);
|
|
3387
3598
|
case "anthropic" /* ANTHROPIC */:
|
|
3388
3599
|
return new AnthropicProvider(config);
|
|
3600
|
+
case "xai" /* XAI */:
|
|
3601
|
+
return new XAIProvider(config);
|
|
3389
3602
|
case "gateway" /* GATEWAY */:
|
|
3390
3603
|
return new GatewayProvider(config);
|
|
3391
3604
|
case "playground" /* PLAYGROUND */:
|
|
@@ -3400,6 +3613,7 @@ var init_ai_provider_factory = __esm({
|
|
|
3400
3613
|
"openai" /* OPENAI */,
|
|
3401
3614
|
"azure-openai" /* AZURE_OPENAI */,
|
|
3402
3615
|
"anthropic" /* ANTHROPIC */,
|
|
3616
|
+
"xai" /* XAI */,
|
|
3403
3617
|
"gateway" /* GATEWAY */,
|
|
3404
3618
|
"playground" /* PLAYGROUND */
|
|
3405
3619
|
];
|
|
@@ -3415,6 +3629,8 @@ var init_ai_provider_factory = __esm({
|
|
|
3415
3629
|
return !!(config.baseUrl && config.apiKey && config.apiVersion && config.deploymentName);
|
|
3416
3630
|
case "anthropic" /* ANTHROPIC */:
|
|
3417
3631
|
return !!config.apiKey;
|
|
3632
|
+
case "xai" /* XAI */:
|
|
3633
|
+
return !!config.apiKey;
|
|
3418
3634
|
case "gateway" /* GATEWAY */:
|
|
3419
3635
|
return !!(config.gatewayUrl && config.provider);
|
|
3420
3636
|
case "playground" /* PLAYGROUND */:
|
|
@@ -5865,7 +6081,7 @@ var import_mammoth = __toESM(require("mammoth"));
|
|
|
5865
6081
|
var pdfjsLib = __toESM(require("pdfjs-dist/legacy/build/pdf"));
|
|
5866
6082
|
|
|
5867
6083
|
// src/services/prompts/conversationStarters.ts
|
|
5868
|
-
var
|
|
6084
|
+
var import_rxjs10 = require("rxjs");
|
|
5869
6085
|
init_aiProviderStore();
|
|
5870
6086
|
init_packageSettingsStore();
|
|
5871
6087
|
|
|
@@ -6023,19 +6239,19 @@ var NotificationService = class {
|
|
|
6023
6239
|
var notificationService = new NotificationService();
|
|
6024
6240
|
|
|
6025
6241
|
// src/services/prompts/moodDetection.ts
|
|
6026
|
-
var
|
|
6242
|
+
var import_rxjs11 = require("rxjs");
|
|
6027
6243
|
init_aiProviderStore();
|
|
6028
6244
|
init_packageSettingsStore();
|
|
6029
6245
|
init_debugLogger();
|
|
6030
6246
|
|
|
6031
6247
|
// src/services/prompts/detectUserInterestAndExcitement.ts
|
|
6032
|
-
var
|
|
6248
|
+
var import_rxjs12 = require("rxjs");
|
|
6033
6249
|
init_aiProviderStore();
|
|
6034
6250
|
init_packageSettingsStore();
|
|
6035
6251
|
init_debugLogger();
|
|
6036
6252
|
|
|
6037
6253
|
// src/services/prompts/documentSummarization.ts
|
|
6038
|
-
var
|
|
6254
|
+
var import_rxjs13 = require("rxjs");
|
|
6039
6255
|
init_aiProviderStore();
|
|
6040
6256
|
init_packageSettingsStore();
|
|
6041
6257
|
init_debugLogger();
|
|
@@ -6063,8 +6279,8 @@ ${content.slice(0, 4e3)}
|
|
|
6063
6279
|
stream: false,
|
|
6064
6280
|
options: { temperature: 0.3, num_predict: 100 }
|
|
6065
6281
|
});
|
|
6066
|
-
const summary$ = data$.pipe((0,
|
|
6067
|
-
const summary = await (0,
|
|
6282
|
+
const summary$ = data$.pipe((0, import_rxjs13.map)((d) => d.response.trim()));
|
|
6283
|
+
const summary = await (0, import_rxjs13.lastValueFrom)(summary$);
|
|
6068
6284
|
debugLogger.ragDebug("summarizeDocument result", { name, summary });
|
|
6069
6285
|
return summary || `Document summary for ${name}`;
|
|
6070
6286
|
} catch (error) {
|
|
@@ -6074,7 +6290,7 @@ ${content.slice(0, 4e3)}
|
|
|
6074
6290
|
};
|
|
6075
6291
|
|
|
6076
6292
|
// src/services/prompts/documentRelevance.ts
|
|
6077
|
-
var
|
|
6293
|
+
var import_rxjs14 = require("rxjs");
|
|
6078
6294
|
init_aiProviderStore();
|
|
6079
6295
|
init_packageSettingsStore();
|
|
6080
6296
|
init_debugLogger();
|