@burtson-labs/bandit-engine 2.0.150 → 2.0.152
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/dist/{aiProviderStore-FTD277QP.mjs → aiProviderStore-ZQ5VVVKQ.mjs} +2 -2
- package/dist/chat-Y3WOTIKI.mjs +16 -0
- package/dist/chat-provider.js +5 -2
- package/dist/chat-provider.js.map +1 -1
- package/dist/chat-provider.mjs +5 -5
- package/dist/{chunk-7P7IS6UA.mjs → chunk-6STVJJSG.mjs} +2 -2
- package/dist/{chunk-YEPJ7DWZ.mjs → chunk-7ESJJN6D.mjs} +63 -21
- package/dist/chunk-7ESJJN6D.mjs.map +1 -0
- package/dist/{chunk-K2JGFKEB.mjs → chunk-CVFFNX7H.mjs} +2 -2
- package/dist/{chunk-43MLINPL.mjs → chunk-GWQRTUKF.mjs} +6 -3
- package/dist/chunk-GWQRTUKF.mjs.map +1 -0
- package/dist/{chunk-IJTDHBHP.mjs → chunk-LPSM62OE.mjs} +9 -9
- package/dist/{chunk-PU74BI6Y.mjs → chunk-QLATFSSO.mjs} +5 -5
- package/dist/{chunk-F7JXIW6T.mjs → chunk-RRCCSN3N.mjs} +2 -2
- package/dist/{chunk-FFVGZK5D.mjs → chunk-TYRYAAP2.mjs} +3 -3
- package/dist/{chunk-L37EUHMZ.mjs → chunk-U33KBX3Y.mjs} +4 -4
- package/dist/{chunk-NLBZZP3B.mjs → chunk-VLUXQE24.mjs} +3 -3
- package/dist/index.js +96 -51
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -10
- package/dist/management/management.js +90 -45
- package/dist/management/management.js.map +1 -1
- package/dist/management/management.mjs +8 -8
- package/dist/modals/chat-modal/chat-modal.js +5 -2
- package/dist/modals/chat-modal/chat-modal.js.map +1 -1
- package/dist/modals/chat-modal/chat-modal.mjs +4 -4
- package/package.json +1 -1
- package/dist/chat-YOT2RPWD.mjs +0 -16
- package/dist/chunk-43MLINPL.mjs.map +0 -1
- package/dist/chunk-YEPJ7DWZ.mjs.map +0 -1
- /package/dist/{aiProviderStore-FTD277QP.mjs.map → aiProviderStore-ZQ5VVVKQ.mjs.map} +0 -0
- /package/dist/{chat-YOT2RPWD.mjs.map → chat-Y3WOTIKI.mjs.map} +0 -0
- /package/dist/{chunk-7P7IS6UA.mjs.map → chunk-6STVJJSG.mjs.map} +0 -0
- /package/dist/{chunk-K2JGFKEB.mjs.map → chunk-CVFFNX7H.mjs.map} +0 -0
- /package/dist/{chunk-IJTDHBHP.mjs.map → chunk-LPSM62OE.mjs.map} +0 -0
- /package/dist/{chunk-PU74BI6Y.mjs.map → chunk-QLATFSSO.mjs.map} +0 -0
- /package/dist/{chunk-F7JXIW6T.mjs.map → chunk-RRCCSN3N.mjs.map} +0 -0
- /package/dist/{chunk-FFVGZK5D.mjs.map → chunk-TYRYAAP2.mjs.map} +0 -0
- /package/dist/{chunk-L37EUHMZ.mjs.map → chunk-U33KBX3Y.mjs.map} +0 -0
- /package/dist/{chunk-NLBZZP3B.mjs.map → chunk-VLUXQE24.mjs.map} +0 -0
package/dist/chat-provider.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ChatProvider,
|
|
3
3
|
chat_provider_default
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-QLATFSSO.mjs";
|
|
5
5
|
import "./chunk-ONQMRE2G.mjs";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-RRCCSN3N.mjs";
|
|
7
|
+
import "./chunk-CVFFNX7H.mjs";
|
|
8
|
+
import "./chunk-VLUXQE24.mjs";
|
|
9
9
|
import "./chunk-EORIRPPX.mjs";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-GWQRTUKF.mjs";
|
|
11
11
|
import "./chunk-KCI46M23.mjs";
|
|
12
12
|
import "./chunk-BJTO5JO5.mjs";
|
|
13
13
|
export {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
markdownSanitizeSchema,
|
|
6
6
|
maybeHandleFileLinkClick,
|
|
7
7
|
renderLowlightChildren
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-TYRYAAP2.mjs";
|
|
9
9
|
|
|
10
10
|
// src/components/StreamingMarkdown.tsx
|
|
11
11
|
import React, { useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -497,4 +497,4 @@ var StreamingMarkdown_default = React.memo(StreamingMarkdown, arePropsEqual);
|
|
|
497
497
|
export {
|
|
498
498
|
StreamingMarkdown_default
|
|
499
499
|
};
|
|
500
|
-
//# sourceMappingURL=chunk-
|
|
500
|
+
//# sourceMappingURL=chunk-6STVJJSG.mjs.map
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-ONQMRE2G.mjs";
|
|
4
4
|
import {
|
|
5
5
|
StreamingMarkdown_default
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6STVJJSG.mjs";
|
|
7
7
|
import {
|
|
8
8
|
useMCPToolsStore
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CVFFNX7H.mjs";
|
|
10
10
|
import {
|
|
11
11
|
AddIcon,
|
|
12
12
|
ArrowDownwardIcon,
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
useNotificationService,
|
|
37
37
|
useTTS,
|
|
38
38
|
useVoiceStore
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-TYRYAAP2.mjs";
|
|
40
40
|
import {
|
|
41
41
|
brandingService_default,
|
|
42
42
|
detectMessageMood,
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
59
59
|
useMemoryStore,
|
|
60
60
|
useProjectStore,
|
|
61
61
|
useVectorStore
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-VLUXQE24.mjs";
|
|
63
63
|
import {
|
|
64
64
|
indexedDBService_default,
|
|
65
65
|
useModelStore,
|
|
@@ -67,11 +67,11 @@ import {
|
|
|
67
67
|
usePreferencesStore
|
|
68
68
|
} from "./chunk-EORIRPPX.mjs";
|
|
69
69
|
import {
|
|
70
|
-
authenticationService,
|
|
70
|
+
authenticationService as authenticationService2,
|
|
71
71
|
readPersistedToken,
|
|
72
72
|
useAIProviderStore,
|
|
73
73
|
useAuthenticationStore
|
|
74
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-GWQRTUKF.mjs";
|
|
75
75
|
import {
|
|
76
76
|
debugLogger
|
|
77
77
|
} from "./chunk-KCI46M23.mjs";
|
|
@@ -933,7 +933,7 @@ var useEngineStore = create((set, get) => ({
|
|
|
933
933
|
}
|
|
934
934
|
try {
|
|
935
935
|
const headers = { "Content-Type": "application/json" };
|
|
936
|
-
const token =
|
|
936
|
+
const token = authenticationService2.getToken();
|
|
937
937
|
if (token) headers["Authorization"] = `Bearer ${token}`;
|
|
938
938
|
const res = await fetch(`${base}/models`, { headers });
|
|
939
939
|
const data = await res.json();
|
|
@@ -1221,7 +1221,7 @@ var STTClient = class {
|
|
|
1221
1221
|
filename,
|
|
1222
1222
|
url: `${gatewayUrl}/stt/transcribe`
|
|
1223
1223
|
});
|
|
1224
|
-
const token =
|
|
1224
|
+
const token = authenticationService2.getToken();
|
|
1225
1225
|
const response = await fetch(`${gatewayUrl}/stt/transcribe`, {
|
|
1226
1226
|
method: "POST",
|
|
1227
1227
|
headers: {
|
|
@@ -2757,7 +2757,7 @@ function syncTelemetry() {
|
|
|
2757
2757
|
const settings = usePackageSettingsStore.getState().settings;
|
|
2758
2758
|
const cfg = resolveTelemetryConfig({
|
|
2759
2759
|
telemetry: settings?.telemetry,
|
|
2760
|
-
banditApiKey:
|
|
2760
|
+
banditApiKey: authenticationService2.getToken() ?? void 0
|
|
2761
2761
|
});
|
|
2762
2762
|
active = cfg ? new TelemetryExporter(cfg) : null;
|
|
2763
2763
|
} catch {
|
|
@@ -3366,7 +3366,7 @@ var executeMCPTool = async (toolCall) => {
|
|
|
3366
3366
|
}
|
|
3367
3367
|
if (tool.mcpServerId) {
|
|
3368
3368
|
const base2 = settings.gatewayApiUrl.replace(/\/$/, "");
|
|
3369
|
-
const token2 =
|
|
3369
|
+
const token2 = authenticationService2.getToken();
|
|
3370
3370
|
const controller2 = new AbortController();
|
|
3371
3371
|
const timeoutId2 = setTimeout(() => controller2.abort(), 3e4);
|
|
3372
3372
|
try {
|
|
@@ -3413,7 +3413,7 @@ var executeMCPTool = async (toolCall) => {
|
|
|
3413
3413
|
"Content-Type": "application/json"
|
|
3414
3414
|
}
|
|
3415
3415
|
};
|
|
3416
|
-
const token =
|
|
3416
|
+
const token = authenticationService2.getToken();
|
|
3417
3417
|
if (token) {
|
|
3418
3418
|
requestOptions.headers = {
|
|
3419
3419
|
...requestOptions.headers,
|
|
@@ -4379,6 +4379,29 @@ ${protocol}`;
|
|
|
4379
4379
|
overrideComponentStatus("Idle");
|
|
4380
4380
|
setIsSubmitting(false);
|
|
4381
4381
|
setIsStreaming(false);
|
|
4382
|
+
if (/lifetime validation|token.*(expired|invalid)|unauthorized|\b401\b/i.test(err.message || "")) {
|
|
4383
|
+
const { replaceLastAnswer: replaceLastAnswer2 } = useConversationStore.getState();
|
|
4384
|
+
replaceLastAnswer2(
|
|
4385
|
+
"_Your session ended \u2014 sign back in to continue._",
|
|
4386
|
+
lastPartialRef.current.images,
|
|
4387
|
+
false,
|
|
4388
|
+
lastPartialRef.current.usedDocs,
|
|
4389
|
+
true
|
|
4390
|
+
);
|
|
4391
|
+
setResponse("");
|
|
4392
|
+
setStreamBuffer("");
|
|
4393
|
+
setIsThinking?.(false);
|
|
4394
|
+
setPendingMessage(null);
|
|
4395
|
+
try {
|
|
4396
|
+
authenticationService.clearToken();
|
|
4397
|
+
} catch {
|
|
4398
|
+
}
|
|
4399
|
+
window.dispatchEvent(
|
|
4400
|
+
new CustomEvent("auth:force-relogin", { detail: { code: "TOKEN_EXPIRED" } })
|
|
4401
|
+
);
|
|
4402
|
+
telemetryEndTurn({ error: "auth_expired" });
|
|
4403
|
+
return;
|
|
4404
|
+
}
|
|
4382
4405
|
const rateLimit = parseRateLimitError(err);
|
|
4383
4406
|
if (rateLimit) {
|
|
4384
4407
|
debugLogger.info("Chat hit usage limit (429) \u2014 showing upgrade prompt", {
|
|
@@ -7687,7 +7710,7 @@ var ConversationDrawer = ({ open, onClose }) => {
|
|
|
7687
7710
|
title: "Sign out",
|
|
7688
7711
|
onClick: (event) => {
|
|
7689
7712
|
event.stopPropagation();
|
|
7690
|
-
|
|
7713
|
+
authenticationService2.clearToken();
|
|
7691
7714
|
window.location.href = "/login";
|
|
7692
7715
|
},
|
|
7693
7716
|
sx: {
|
|
@@ -8805,7 +8828,7 @@ var EnhancedMobileConversationsModal = ({
|
|
|
8805
8828
|
title: "Sign out",
|
|
8806
8829
|
onClick: (event) => {
|
|
8807
8830
|
event.stopPropagation();
|
|
8808
|
-
|
|
8831
|
+
authenticationService2.clearToken();
|
|
8809
8832
|
window.location.href = "/login";
|
|
8810
8833
|
},
|
|
8811
8834
|
sx: {
|
|
@@ -9634,7 +9657,7 @@ var UnderReview = () => {
|
|
|
9634
9657
|
const theme = useTheme17();
|
|
9635
9658
|
const navigate = useNavigate3();
|
|
9636
9659
|
const handleResetSession = () => {
|
|
9637
|
-
|
|
9660
|
+
authenticationService2.clearToken();
|
|
9638
9661
|
navigate("/login");
|
|
9639
9662
|
};
|
|
9640
9663
|
return /* @__PURE__ */ jsxs16(
|
|
@@ -10235,8 +10258,8 @@ var ChatContent = () => {
|
|
|
10235
10258
|
const notificationService = useNotificationService();
|
|
10236
10259
|
const [selectedTheme, setSelectedTheme] = useState19(null);
|
|
10237
10260
|
const [themeLoading, setThemeLoading] = useState19(true);
|
|
10238
|
-
const token =
|
|
10239
|
-
const claims = token ?
|
|
10261
|
+
const token = authenticationService2.getToken();
|
|
10262
|
+
const claims = token ? authenticationService2.parseJwtClaims(token) : null;
|
|
10240
10263
|
const baseTheme = themeMap_default[selectedTheme ?? "bandit-dark"] || banditDarkTheme;
|
|
10241
10264
|
const banditTheme = useMemo4(() => {
|
|
10242
10265
|
return createTheme(baseTheme, {
|
|
@@ -10309,7 +10332,7 @@ var ChatContent = () => {
|
|
|
10309
10332
|
} = useTTS();
|
|
10310
10333
|
useEffect17(() => {
|
|
10311
10334
|
const timer = setTimeout(() => {
|
|
10312
|
-
const isAuthenticated =
|
|
10335
|
+
const isAuthenticated = authenticationService2.isAuthenticated();
|
|
10313
10336
|
if (!initialized || availableVoices.length === 0) {
|
|
10314
10337
|
if (token && isAuthenticated) {
|
|
10315
10338
|
debugLogger.debug("Chat: Voices not initialized or unavailable, attempting to load from API");
|
|
@@ -10322,7 +10345,7 @@ var ChatContent = () => {
|
|
|
10322
10345
|
return () => clearTimeout(timer);
|
|
10323
10346
|
}, [initialized, availableVoices.length, loadVoicesFromAPI, token]);
|
|
10324
10347
|
useEffect17(() => {
|
|
10325
|
-
const isAuthenticated =
|
|
10348
|
+
const isAuthenticated = authenticationService2.isAuthenticated();
|
|
10326
10349
|
if (packageSettings?.gatewayApiUrl && availableVoices.length === 0 && !initialized) {
|
|
10327
10350
|
if (token && isAuthenticated) {
|
|
10328
10351
|
debugLogger.debug("Chat: Gateway URL available and no voices loaded, attempting to load from API");
|
|
@@ -10344,6 +10367,7 @@ var ChatContent = () => {
|
|
|
10344
10367
|
const [isMobile, setIsMobile] = useState19(false);
|
|
10345
10368
|
const [drawerOpen, setDrawerOpen] = useState19(false);
|
|
10346
10369
|
const [mobileConversationsOpen, setMobileConversationsOpen] = useState19(false);
|
|
10370
|
+
const cardSwipeStartXRef = useRef15(null);
|
|
10347
10371
|
useEffect17(() => {
|
|
10348
10372
|
if (typeof document === "undefined") return;
|
|
10349
10373
|
const meta = document.querySelector('meta[name="theme-color"]');
|
|
@@ -11218,6 +11242,10 @@ var ChatContent = () => {
|
|
|
11218
11242
|
// reads as full physical height with the rounded corner visible
|
|
11219
11243
|
// where it overlaps the drawer.
|
|
11220
11244
|
transform: isMobile && mobileConversationsOpen ? "translateX(calc(min(calc(100vw - 56px), 360px) - 12px))" : "none",
|
|
11245
|
+
// Rounded card corner, positioned exactly where Claude's sits: at
|
|
11246
|
+
// the top of the webview, just below the OS status strip. The strip
|
|
11247
|
+
// itself is reserved by iOS in web-app mode — no web content can
|
|
11248
|
+
// draw there, so this IS the full available height.
|
|
11221
11249
|
borderRadius: isMobile && mobileConversationsOpen ? "44px" : 0,
|
|
11222
11250
|
zIndex: isMobile && mobileConversationsOpen ? theme.zIndex.modal + 1 : 0,
|
|
11223
11251
|
// Hairline border so the rounded card reads even when the backdrop
|
|
@@ -11231,6 +11259,20 @@ var ChatContent = () => {
|
|
|
11231
11259
|
setMobileConversationsOpen(false);
|
|
11232
11260
|
}
|
|
11233
11261
|
} : void 0,
|
|
11262
|
+
onTouchStart: isMobile && mobileConversationsOpen ? (e) => {
|
|
11263
|
+
if (e.currentTarget.contains(e.target)) {
|
|
11264
|
+
cardSwipeStartXRef.current = e.touches[0]?.clientX ?? null;
|
|
11265
|
+
}
|
|
11266
|
+
} : void 0,
|
|
11267
|
+
onTouchMove: isMobile && mobileConversationsOpen ? (e) => {
|
|
11268
|
+
const start = cardSwipeStartXRef.current;
|
|
11269
|
+
if (start === null) return;
|
|
11270
|
+
const dx = (e.touches[0]?.clientX ?? start) - start;
|
|
11271
|
+
if (Math.abs(dx) > 40) {
|
|
11272
|
+
cardSwipeStartXRef.current = null;
|
|
11273
|
+
setMobileConversationsOpen(false);
|
|
11274
|
+
}
|
|
11275
|
+
} : void 0,
|
|
11234
11276
|
children: [
|
|
11235
11277
|
/* @__PURE__ */ jsx23(
|
|
11236
11278
|
chat_app_bar_default,
|
|
@@ -11528,12 +11570,12 @@ var Chat = () => {
|
|
|
11528
11570
|
ossConfigured,
|
|
11529
11571
|
isOSSMode: isOSSMode(),
|
|
11530
11572
|
tier: featureFlag.getEvaluation()?.tier,
|
|
11531
|
-
hasToken:
|
|
11573
|
+
hasToken: authenticationService2.isAuthenticated(),
|
|
11532
11574
|
playgroundBypassAuth,
|
|
11533
11575
|
isPlaygroundRoute,
|
|
11534
11576
|
bypassAuth
|
|
11535
11577
|
});
|
|
11536
|
-
if (!allowUnauthenticated && !bypassAuth && !
|
|
11578
|
+
if (!allowUnauthenticated && !bypassAuth && !authenticationService2.isAuthenticated()) {
|
|
11537
11579
|
debugLogger.debug("User is not authenticated, redirecting to login");
|
|
11538
11580
|
return /* @__PURE__ */ jsx23(Navigate, { to: "/login", replace: true });
|
|
11539
11581
|
}
|
|
@@ -11544,4 +11586,4 @@ var chat_default = Chat;
|
|
|
11544
11586
|
export {
|
|
11545
11587
|
chat_default
|
|
11546
11588
|
};
|
|
11547
|
-
//# sourceMappingURL=chunk-
|
|
11589
|
+
//# sourceMappingURL=chunk-7ESJJN6D.mjs.map
|