@burtson-labs/bandit-engine 2.0.52 → 2.0.54

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 (51) hide show
  1. package/README.md +23 -12
  2. package/dist/{aiProviderStore-3N3VE6D4.mjs → aiProviderStore-337QNQB3.mjs} +2 -2
  3. package/dist/{chat-YWYLVKXX.mjs → chat-IDE6Z4Q4.mjs} +6 -6
  4. package/dist/chat-provider.js +17 -9
  5. package/dist/chat-provider.js.map +1 -1
  6. package/dist/chat-provider.mjs +4 -4
  7. package/dist/{chunk-QX6CO7TJ.mjs → chunk-557E5VZ2.mjs} +3 -3
  8. package/dist/{chunk-MH7WFWCP.mjs → chunk-AVV7HDGR.mjs} +3 -3
  9. package/dist/{chunk-BENL3EF2.mjs → chunk-H3BYFEIE.mjs} +18 -10
  10. package/dist/chunk-H3BYFEIE.mjs.map +1 -0
  11. package/dist/{chunk-YZ2HJFPQ.mjs → chunk-KM7FUWCM.mjs} +4 -4
  12. package/dist/chunk-KM7FUWCM.mjs.map +1 -0
  13. package/dist/{chunk-M3BEAMCC.mjs → chunk-KNBWR4DS.mjs} +775 -488
  14. package/dist/chunk-KNBWR4DS.mjs.map +1 -0
  15. package/dist/{chunk-Y5N3NSTU.mjs → chunk-NP2OHTTX.mjs} +116 -152
  16. package/dist/chunk-NP2OHTTX.mjs.map +1 -0
  17. package/dist/{chunk-TSQCNHOX.mjs → chunk-TLY6A6XL.mjs} +123 -147
  18. package/dist/chunk-TLY6A6XL.mjs.map +1 -0
  19. package/dist/{chunk-37PEP5JK.mjs → chunk-UFSEYVRS.mjs} +3 -3
  20. package/dist/{chunk-RSSJADDD.mjs → chunk-WL7NV4WJ.mjs} +28 -32
  21. package/dist/chunk-WL7NV4WJ.mjs.map +1 -0
  22. package/dist/index.d.mts +5 -3
  23. package/dist/index.d.ts +5 -3
  24. package/dist/index.js +4097 -4045
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +11 -15
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/management/management.js +4068 -4016
  29. package/dist/management/management.js.map +1 -1
  30. package/dist/management/management.mjs +7 -7
  31. package/dist/modals/chat-modal/chat-modal.js +1401 -1279
  32. package/dist/modals/chat-modal/chat-modal.js.map +1 -1
  33. package/dist/modals/chat-modal/chat-modal.mjs +4 -4
  34. package/dist/{gateway-oScD5tvE.d.mts → public-BzsEWB08.d.mts} +11 -122
  35. package/dist/{gateway-oScD5tvE.d.ts → public-BzsEWB08.d.ts} +11 -122
  36. package/dist/public-types.d.mts +2 -32
  37. package/dist/public-types.d.ts +2 -32
  38. package/package.json +3 -11
  39. package/dist/chunk-BENL3EF2.mjs.map +0 -1
  40. package/dist/chunk-M3BEAMCC.mjs.map +0 -1
  41. package/dist/chunk-RSSJADDD.mjs.map +0 -1
  42. package/dist/chunk-TSQCNHOX.mjs.map +0 -1
  43. package/dist/chunk-Y5N3NSTU.mjs.map +0 -1
  44. package/dist/chunk-YZ2HJFPQ.mjs.map +0 -1
  45. package/dist/cli.js +0 -4084
  46. package/dist/cli.js.map +0 -1
  47. /package/dist/{aiProviderStore-3N3VE6D4.mjs.map → aiProviderStore-337QNQB3.mjs.map} +0 -0
  48. /package/dist/{chat-YWYLVKXX.mjs.map → chat-IDE6Z4Q4.mjs.map} +0 -0
  49. /package/dist/{chunk-QX6CO7TJ.mjs.map → chunk-557E5VZ2.mjs.map} +0 -0
  50. /package/dist/{chunk-MH7WFWCP.mjs.map → chunk-AVV7HDGR.mjs.map} +0 -0
  51. /package/dist/{chunk-37PEP5JK.mjs.map → chunk-UFSEYVRS.mjs.map} +0 -0
@@ -3,13 +3,36 @@ import {
3
3
  } from "./chunk-ONQMRE2G.mjs";
4
4
  import {
5
5
  StreamingMarkdown_default
6
- } from "./chunk-YZ2HJFPQ.mjs";
6
+ } from "./chunk-KM7FUWCM.mjs";
7
7
  import {
8
8
  useMCPToolsStore
9
9
  } from "./chunk-EHNWQ4T3.mjs";
10
10
  import {
11
+ AddIcon,
12
+ ArrowDownwardIcon,
13
+ ArrowUpwardIcon,
14
+ CheckIcon,
15
+ CloseIcon,
16
+ CloudDoneIcon,
17
+ CloudOffIcon,
18
+ ErrorOutlineIcon,
19
+ ExpandMoreIcon,
11
20
  FeedbackButton,
21
+ FeedbackIcon,
12
22
  FeedbackModal,
23
+ GraphicEqIcon,
24
+ HearingDisabledIcon,
25
+ HomeIcon,
26
+ MicIcon,
27
+ NotesIcon,
28
+ NotesIconOutlined,
29
+ PsychologyIcon,
30
+ RecordVoiceOverIcon,
31
+ SettingsIcon,
32
+ SignalWifi2BarIcon,
33
+ SyncIcon,
34
+ WifiIcon,
35
+ WifiOffIcon,
13
36
  ai_response_text_field_default,
14
37
  banditDarkTheme,
15
38
  memory_modal_default,
@@ -19,7 +42,7 @@ import {
19
42
  useNotificationService,
20
43
  useTTS,
21
44
  useVoiceStore
22
- } from "./chunk-M3BEAMCC.mjs";
45
+ } from "./chunk-KNBWR4DS.mjs";
23
46
  import {
24
47
  authenticationService,
25
48
  brandingService_default,
@@ -44,7 +67,7 @@ import {
44
67
  useMemoryStore,
45
68
  useProjectStore,
46
69
  useVectorStore
47
- } from "./chunk-QX6CO7TJ.mjs";
70
+ } from "./chunk-557E5VZ2.mjs";
48
71
  import {
49
72
  indexedDBService_default,
50
73
  useModelStore,
@@ -53,7 +76,7 @@ import {
53
76
  } from "./chunk-7ZDS33S2.mjs";
54
77
  import {
55
78
  useAIProviderStore
56
- } from "./chunk-BENL3EF2.mjs";
79
+ } from "./chunk-H3BYFEIE.mjs";
57
80
  import {
58
81
  debugLogger
59
82
  } from "./chunk-KCI46M23.mjs";
@@ -152,7 +175,6 @@ import { Navigate } from "react-router-dom";
152
175
 
153
176
  // src/chat/chat-scroll-to-bottom-button.tsx
154
177
  import { IconButton } from "@mui/material";
155
- import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward";
156
178
  import { jsx as jsx2 } from "react/jsx-runtime";
157
179
  var ChatScrollToBottomButton = ({
158
180
  inputHeight,
@@ -233,6 +255,7 @@ var ChatMessages = ({
233
255
  scrollTargetRef,
234
256
  responseStarted,
235
257
  isStreaming,
258
+ isThinking = false,
236
259
  isNetworkSlow = false,
237
260
  showInstantFeedback = true,
238
261
  selectedModel,
@@ -249,6 +272,7 @@ var ChatMessages = ({
249
272
  const isLast = index === lastIndex;
250
273
  const isPlaceholder = entry.answer === "...";
251
274
  const showLoader = isLast && isStreaming && streamBuffer.trim() === "";
275
+ const showThinking = showLoader && isThinking;
252
276
  const content = isLast ? isStreaming ? streamBuffer || "" : isPlaceholder ? "" : entry.answer : entry.answer;
253
277
  const rawSources = entry.sourceFiles;
254
278
  const sourceSummaries = rawSources ? rawSources.filter((doc) => doc && typeof doc.name === "string" && doc.name.trim()).map((doc) => ({ id: doc.id || doc.name, name: doc.name.trim() })) : void 0;
@@ -276,11 +300,27 @@ var ChatMessages = ({
276
300
  pointerEvents: showLoader ? "auto" : "none",
277
301
  zIndex: showLoader ? 1 : 0
278
302
  },
279
- children: /* @__PURE__ */ jsx4(Box2, { sx: { display: "flex", alignItems: "center", minHeight: "40px", pl: 2 }, children: /* @__PURE__ */ jsxs("div", { className: "typing-only", children: [
280
- /* @__PURE__ */ jsx4("span", { className: "dot" }),
281
- /* @__PURE__ */ jsx4("span", { className: "dot" }),
282
- /* @__PURE__ */ jsx4("span", { className: "dot" })
283
- ] }) })
303
+ children: /* @__PURE__ */ jsxs(Box2, { sx: { display: "flex", alignItems: "center", gap: 1, minHeight: "40px", pl: 2 }, children: [
304
+ /* @__PURE__ */ jsxs("div", { className: "typing-only", children: [
305
+ /* @__PURE__ */ jsx4("span", { className: "dot" }),
306
+ /* @__PURE__ */ jsx4("span", { className: "dot" }),
307
+ /* @__PURE__ */ jsx4("span", { className: "dot" })
308
+ ] }),
309
+ showThinking && /* @__PURE__ */ jsx4(
310
+ Box2,
311
+ {
312
+ component: "span",
313
+ sx: {
314
+ fontSize: "0.75rem",
315
+ color: "text.secondary",
316
+ opacity: 0.6,
317
+ fontStyle: "italic",
318
+ userSelect: "none"
319
+ },
320
+ children: "Thinking\u2026"
321
+ }
322
+ )
323
+ ] })
284
324
  }
285
325
  ),
286
326
  /* @__PURE__ */ jsx4(
@@ -333,19 +373,9 @@ var chat_messages_default = ChatMessages;
333
373
  // src/chat/chat-input.tsx
334
374
  import { useEffect as useEffect3, useRef as useRef2, useState as useState3 } from "react";
335
375
  import { Box as Box3, TextField, IconButton as IconButton3, Tooltip, Avatar as Avatar2, Typography, CircularProgress as CircularProgress2, Collapse } from "@mui/material";
336
- import CloseIcon2 from "@mui/icons-material/Close";
337
- import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward";
338
- import PsychologyIcon from "@mui/icons-material/Psychology";
339
- import FeedbackIcon from "@mui/icons-material/Feedback";
340
- import HearingDisabledIcon from "@mui/icons-material/HearingDisabled";
341
- import GraphicEqIcon from "@mui/icons-material/GraphicEq";
342
- import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
343
376
 
344
377
  // src/services/stt/transcriber.tsx
345
378
  import { useState as useState2, useRef } from "react";
346
- import MicIcon from "@mui/icons-material/Mic";
347
- import CheckIcon from "@mui/icons-material/Check";
348
- import CloseIcon from "@mui/icons-material/Close";
349
379
 
350
380
  // src/services/stt/sound-recorder.service.ts
351
381
  import { first, from, fromEvent, map, shareReplay, switchMap } from "rxjs";
@@ -1051,7 +1081,7 @@ ${sanitize(
1051
1081
  size: "small",
1052
1082
  onClick: () => setFileInputs((prev) => prev.filter((_, i) => i !== idx)),
1053
1083
  sx: { ml: 0.5, color: theme.palette.mode === "dark" ? "#aaa" : "#444" },
1054
- children: /* @__PURE__ */ jsx6(CloseIcon2, { sx: { fontSize: 14 } })
1084
+ children: /* @__PURE__ */ jsx6(CloseIcon, { sx: { fontSize: 14 } })
1055
1085
  }
1056
1086
  )
1057
1087
  ]
@@ -1089,7 +1119,7 @@ ${sanitize(
1089
1119
  }
1090
1120
  },
1091
1121
  children: /* @__PURE__ */ jsx6(
1092
- CloseIcon2,
1122
+ CloseIcon,
1093
1123
  {
1094
1124
  sx: {
1095
1125
  fontSize: 14,
@@ -1288,7 +1318,7 @@ ${sanitize(
1288
1318
  "&:hover": { bgcolor: sendButtonHover },
1289
1319
  "&.Mui-disabled": { opacity: 0.5 }
1290
1320
  },
1291
- children: isStreaming ? /* @__PURE__ */ jsx6(CloseIcon2, { fontSize: "small" }) : /* @__PURE__ */ jsx6(ArrowUpwardIcon, { fontSize: "small" })
1321
+ children: isStreaming ? /* @__PURE__ */ jsx6(CloseIcon, { fontSize: "small" }) : /* @__PURE__ */ jsx6(ArrowUpwardIcon, { fontSize: "small" })
1292
1322
  }
1293
1323
  ) }) }) })
1294
1324
  ]
@@ -2317,6 +2347,7 @@ var useAIProvider = ({
2317
2347
  setIsSubmitting,
2318
2348
  setResponseStarted,
2319
2349
  setIsStreaming,
2350
+ setIsThinking,
2320
2351
  setResponse,
2321
2352
  setPastedImages,
2322
2353
  setPendingMessage,
@@ -2774,6 +2805,12 @@ ${protocol}`;
2774
2805
  let fullMessage = "";
2775
2806
  let latestDisplayMessage = "";
2776
2807
  let sawToolBlock = false;
2808
+ const stripThinking = (text) => {
2809
+ let result = text.replace(/<think>[\s\S]*?<\/think>/g, "");
2810
+ const openIdx = result.indexOf("<think>");
2811
+ if (openIdx !== -1) result = result.slice(0, openIdx);
2812
+ return result.trimStart();
2813
+ };
2777
2814
  const flushNow = () => {
2778
2815
  clearFlushTimer();
2779
2816
  if (!sawToolBlock) {
@@ -2801,13 +2838,16 @@ ${protocol}`;
2801
2838
  }
2802
2839
  const sub = stream.subscribe({
2803
2840
  next: (data) => {
2804
- if (!data?.message?.content) return;
2805
- fullMessage += data.message.content;
2806
- if (/```(?:tool_code|TOOL_CODE)/.test(fullMessage)) {
2841
+ if (!data?.message?.content && !data?.message?.tool_calls) return;
2842
+ if (data.message.content) fullMessage += data.message.content;
2843
+ const inThinkBlock = /<think>/.test(fullMessage) && !/<think>[\s\S]*<\/think>/.test(fullMessage);
2844
+ setIsThinking?.(inThinkBlock);
2845
+ const visibleMessage = stripThinking(fullMessage);
2846
+ if (/```(?:tool_code|TOOL_CODE)/.test(visibleMessage)) {
2807
2847
  sawToolBlock = true;
2808
2848
  clearFlushTimer();
2809
2849
  }
2810
- latestDisplayMessage = fullMessage;
2850
+ latestDisplayMessage = visibleMessage;
2811
2851
  if (!sawToolBlock) {
2812
2852
  scheduleFlush();
2813
2853
  }
@@ -2828,6 +2868,7 @@ ${protocol}`;
2828
2868
  setResponse(partial);
2829
2869
  }
2830
2870
  setStreamBuffer("");
2871
+ setIsThinking?.(false);
2831
2872
  setPendingMessage(null);
2832
2873
  setLogoVisible(false);
2833
2874
  if (onError) {
@@ -2836,7 +2877,8 @@ ${protocol}`;
2836
2877
  },
2837
2878
  complete: async () => {
2838
2879
  try {
2839
- latestDisplayMessage = fullMessage;
2880
+ setIsThinking?.(false);
2881
+ latestDisplayMessage = stripThinking(fullMessage);
2840
2882
  if (!sawToolBlock) {
2841
2883
  flushNow();
2842
2884
  }
@@ -3378,16 +3420,6 @@ import {
3378
3420
  Typography as Typography8,
3379
3421
  Button as Button6
3380
3422
  } from "@mui/material";
3381
- import HomeIcon from "@mui/icons-material/Home";
3382
- import RecordVoiceOverIcon from "@mui/icons-material/RecordVoiceOver";
3383
- import AddIcon5 from "@mui/icons-material/Add";
3384
- import SettingsIcon from "@mui/icons-material/Settings";
3385
- import NotesIcon from "@mui/icons-material/Notes";
3386
- import NotesIconOutlined from "@mui/icons-material/NotesOutlined";
3387
- import CloudDoneIcon from "@mui/icons-material/CloudDone";
3388
- import CloudOffIcon from "@mui/icons-material/CloudOff";
3389
- import SyncIcon from "@mui/icons-material/Sync";
3390
- import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline";
3391
3423
  import { useNavigate } from "react-router-dom";
3392
3424
 
3393
3425
  // src/chat/conversation-drawer.tsx
@@ -3415,16 +3447,7 @@ import {
3415
3447
  Avatar as Avatar6,
3416
3448
  alpha as alpha5
3417
3449
  } from "@mui/material";
3418
- import {
3419
- Close as CloseIcon5,
3420
- Clear as ClearIcon,
3421
- Search as SearchIcon,
3422
- Folder as FolderIcon4,
3423
- MoreVert as MoreVertIcon3,
3424
- DeleteSweep as DeleteSweepIcon,
3425
- Inbox as InboxIcon3
3426
- } from "@mui/icons-material";
3427
- import { Add as AddIcon3 } from "@mui/icons-material";
3450
+ import { X as CloseIcon4, X as ClearIcon, Search as SearchIcon, Folder as FolderIcon4, MoreVertical as MoreVertIcon3, Trash2 as DeleteSweepIcon, Inbox as InboxIcon3, Plus as AddIcon4 } from "lucide-react";
3428
3451
  import { useTheme as useTheme9 } from "@mui/material/styles";
3429
3452
 
3430
3453
  // src/chat/project-management-modal.tsx
@@ -3447,15 +3470,7 @@ import {
3447
3470
  SwipeableDrawer,
3448
3471
  useMediaQuery as useMediaQuery2
3449
3472
  } from "@mui/material";
3450
- import {
3451
- Add as AddIcon,
3452
- Edit as EditIcon,
3453
- Delete as DeleteIcon,
3454
- MoreVert as MoreVertIcon,
3455
- Folder as FolderIcon,
3456
- Close as CloseIcon3,
3457
- ArrowBack as ArrowBackIcon
3458
- } from "@mui/icons-material";
3473
+ import { Plus as AddIcon2, Pencil as EditIcon, Trash2 as DeleteIcon, MoreVertical as MoreVertIcon, Folder as FolderIcon, X as CloseIcon2, ArrowLeft as ArrowBackIcon } from "lucide-react";
3459
3474
  import { useTheme as useTheme5, alpha as alpha2 } from "@mui/material/styles";
3460
3475
  import { Fragment as Fragment4, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
3461
3476
  var DEFAULT_COLORS = [
@@ -3672,7 +3687,7 @@ var ProjectManagementModal = ({
3672
3687
  flex: 1
3673
3688
  },
3674
3689
  children: [
3675
- showCreateForm && /* @__PURE__ */ jsx7(IconButton4, { onClick: resetForm, size: "small", sx: { mr: 0.5 }, children: /* @__PURE__ */ jsx7(ArrowBackIcon, { fontSize: "small" }) }),
3690
+ showCreateForm && /* @__PURE__ */ jsx7(IconButton4, { onClick: resetForm, size: "small", sx: { mr: 0.5 }, children: /* @__PURE__ */ jsx7(ArrowBackIcon, { size: 16 }) }),
3676
3691
  /* @__PURE__ */ jsx7(
3677
3692
  Typography2,
3678
3693
  {
@@ -3690,7 +3705,7 @@ var ProjectManagementModal = ({
3690
3705
  ]
3691
3706
  }
3692
3707
  ),
3693
- /* @__PURE__ */ jsx7(IconButton4, { onClick: handleClose, size: "small", children: /* @__PURE__ */ jsx7(CloseIcon3, {}) })
3708
+ /* @__PURE__ */ jsx7(IconButton4, { onClick: handleClose, size: "small", children: /* @__PURE__ */ jsx7(CloseIcon2, {}) })
3694
3709
  ]
3695
3710
  }
3696
3711
  ),
@@ -3764,7 +3779,7 @@ var ProjectManagementModal = ({
3764
3779
  /* @__PURE__ */ jsx7(
3765
3780
  Button,
3766
3781
  {
3767
- startIcon: /* @__PURE__ */ jsx7(AddIcon, {}),
3782
+ startIcon: /* @__PURE__ */ jsx7(AddIcon2, {}),
3768
3783
  onClick: () => setShowCreateForm(true),
3769
3784
  variant: "contained",
3770
3785
  sx: {
@@ -3789,7 +3804,7 @@ var ProjectManagementModal = ({
3789
3804
  backgroundColor: subtleSurface
3790
3805
  },
3791
3806
  children: [
3792
- /* @__PURE__ */ jsx7(FolderIcon, { sx: { fontSize: 48, mb: 2, opacity: 0.5 } }),
3807
+ /* @__PURE__ */ jsx7(FolderIcon, { size: 48, style: { marginBottom: 8, opacity: 0.5 } }),
3793
3808
  /* @__PURE__ */ jsx7(Typography2, { variant: "body1", sx: { fontWeight: 600 }, children: "No projects yet" }),
3794
3809
  /* @__PURE__ */ jsx7(Typography2, { variant: "body2", children: "Create your first project to organize conversations." })
3795
3810
  ]
@@ -3824,7 +3839,7 @@ var ProjectManagementModal = ({
3824
3839
  height: 36,
3825
3840
  fontSize: "1rem"
3826
3841
  },
3827
- children: /* @__PURE__ */ jsx7(FolderIcon, { fontSize: "small" })
3842
+ children: /* @__PURE__ */ jsx7(FolderIcon, { size: 16 })
3828
3843
  }
3829
3844
  ),
3830
3845
  /* @__PURE__ */ jsxs4(Box4, { sx: { flex: 1, minWidth: 0 }, children: [
@@ -3875,7 +3890,7 @@ var ProjectManagementModal = ({
3875
3890
  mt: 0.25,
3876
3891
  zIndex: 1
3877
3892
  },
3878
- children: /* @__PURE__ */ jsx7(MoreVertIcon, { fontSize: "small" })
3893
+ children: /* @__PURE__ */ jsx7(MoreVertIcon, { size: 16 })
3879
3894
  }
3880
3895
  )
3881
3896
  ]
@@ -3951,7 +3966,7 @@ var ProjectManagementModal = ({
3951
3966
  startEdit(selectedProject);
3952
3967
  },
3953
3968
  children: /* @__PURE__ */ jsxs4(Box4, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
3954
- /* @__PURE__ */ jsx7(EditIcon, { fontSize: "small" }),
3969
+ /* @__PURE__ */ jsx7(EditIcon, { size: 16 }),
3955
3970
  /* @__PURE__ */ jsx7(Typography2, { variant: "body2", color: "inherit", children: "Edit" })
3956
3971
  ] })
3957
3972
  }
@@ -3965,7 +3980,7 @@ var ProjectManagementModal = ({
3965
3980
  },
3966
3981
  sx: { color: theme.palette.error.main },
3967
3982
  children: /* @__PURE__ */ jsxs4(Box4, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
3968
- /* @__PURE__ */ jsx7(DeleteIcon, { fontSize: "small" }),
3983
+ /* @__PURE__ */ jsx7(DeleteIcon, { size: 16 }),
3969
3984
  /* @__PURE__ */ jsx7(Typography2, { variant: "body2", color: "inherit", children: "Delete" })
3970
3985
  ] })
3971
3986
  }
@@ -4033,10 +4048,7 @@ import {
4033
4048
  Box as Box5,
4034
4049
  Divider
4035
4050
  } from "@mui/material";
4036
- import {
4037
- Folder as FolderIcon2,
4038
- Inbox as InboxIcon
4039
- } from "@mui/icons-material";
4051
+ import { Folder as FolderIcon2, Inbox as InboxIcon } from "lucide-react";
4040
4052
  import { useTheme as useTheme6 } from "@mui/material/styles";
4041
4053
  import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
4042
4054
  var MoveConversationModal = ({
@@ -4213,13 +4225,7 @@ import {
4213
4225
  DialogActions as DialogActions2,
4214
4226
  Button as Button3
4215
4227
  } from "@mui/material";
4216
- import {
4217
- MoreVert as MoreVertIcon2,
4218
- Edit as EditIcon2,
4219
- Delete as DeleteIcon2,
4220
- DragIndicator as DragIcon,
4221
- MoveToInbox as MoveIcon
4222
- } from "@mui/icons-material";
4228
+ import { MoreVertical as MoreVertIcon2, Pencil as EditIcon2, Trash2 as DeleteIcon2, GripVertical as DragIcon, MailOpen as MoveIcon } from "lucide-react";
4223
4229
  import { useTheme as useTheme7, alpha as alpha3 } from "@mui/material/styles";
4224
4230
  import { Fragment as Fragment5, jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
4225
4231
  var SimpleConversationItem = ({
@@ -4449,15 +4455,9 @@ var SimpleConversationItem = ({
4449
4455
  !isMobile && !isEditing && /* @__PURE__ */ jsx9(
4450
4456
  DragIcon,
4451
4457
  {
4452
- sx: {
4453
- color: theme.palette.text.disabled,
4454
- mr: 1,
4455
- cursor: "grab",
4456
- fontSize: "1rem",
4457
- "&:active": {
4458
- cursor: "grabbing"
4459
- }
4460
- }
4458
+ size: 16,
4459
+ color: theme.palette.text.disabled,
4460
+ style: { marginRight: 4, cursor: "grab" }
4461
4461
  }
4462
4462
  ),
4463
4463
  /* @__PURE__ */ jsxs6(Box6, { sx: { flex: 1, minWidth: 0 }, children: [
@@ -4547,7 +4547,7 @@ var SimpleConversationItem = ({
4547
4547
  }
4548
4548
  }
4549
4549
  },
4550
- children: /* @__PURE__ */ jsx9(MoreVertIcon2, { fontSize: "small" })
4550
+ children: /* @__PURE__ */ jsx9(MoreVertIcon2, { size: 16 })
4551
4551
  }
4552
4552
  ),
4553
4553
  /* @__PURE__ */ jsxs6(
@@ -4578,15 +4578,15 @@ var SimpleConversationItem = ({
4578
4578
  },
4579
4579
  children: [
4580
4580
  onRename && /* @__PURE__ */ jsxs6(MenuItem2, { onClick: handleEdit, children: [
4581
- /* @__PURE__ */ jsx9(ListItemIcon2, { children: /* @__PURE__ */ jsx9(EditIcon2, { fontSize: "small" }) }),
4581
+ /* @__PURE__ */ jsx9(ListItemIcon2, { children: /* @__PURE__ */ jsx9(EditIcon2, { size: 16 }) }),
4582
4582
  /* @__PURE__ */ jsx9(ListItemText2, { children: "Rename" })
4583
4583
  ] }),
4584
4584
  onMove && /* @__PURE__ */ jsxs6(MenuItem2, { onClick: handleMove, children: [
4585
- /* @__PURE__ */ jsx9(ListItemIcon2, { children: /* @__PURE__ */ jsx9(MoveIcon, { fontSize: "small" }) }),
4585
+ /* @__PURE__ */ jsx9(ListItemIcon2, { children: /* @__PURE__ */ jsx9(MoveIcon, { size: 16 }) }),
4586
4586
  /* @__PURE__ */ jsx9(ListItemText2, { children: "Move to Project" })
4587
4587
  ] }),
4588
4588
  /* @__PURE__ */ jsxs6(MenuItem2, { onClick: handleDelete, children: [
4589
- /* @__PURE__ */ jsx9(ListItemIcon2, { children: /* @__PURE__ */ jsx9(DeleteIcon2, { fontSize: "small" }) }),
4589
+ /* @__PURE__ */ jsx9(ListItemIcon2, { children: /* @__PURE__ */ jsx9(DeleteIcon2, { size: 16 }) }),
4590
4590
  /* @__PURE__ */ jsx9(ListItemText2, { children: "Delete" })
4591
4591
  ] })
4592
4592
  ]
@@ -4668,16 +4668,7 @@ import {
4668
4668
  TextField as TextField4,
4669
4669
  alpha as alpha4
4670
4670
  } from "@mui/material";
4671
- import {
4672
- ExpandMore as ExpandMoreIcon2,
4673
- ExpandLess as ExpandLessIcon,
4674
- Add as AddIcon2,
4675
- Folder as FolderIcon3,
4676
- FolderOpen as FolderOpenIcon,
4677
- Inbox as InboxIcon2,
4678
- Close as CloseIcon4,
4679
- Check as CheckIcon2
4680
- } from "@mui/icons-material";
4671
+ import { ChevronDown as ExpandMoreIcon2, ChevronUp as ExpandLessIcon, Plus as AddIcon3, Folder as FolderIcon3, FolderOpen as FolderOpenIcon, Inbox as InboxIcon2, X as CloseIcon3, Check as CheckIcon2 } from "lucide-react";
4681
4672
  import { useTheme as useTheme8 } from "@mui/material/styles";
4682
4673
  import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
4683
4674
  var ProjectHeader = ({
@@ -4784,13 +4775,11 @@ var ProjectHeader = ({
4784
4775
  children: isUngrouped ? /* @__PURE__ */ jsx10(
4785
4776
  InboxIcon2,
4786
4777
  {
4787
- fontSize: "small",
4788
- sx: {
4789
- color: theme.palette.text.disabled,
4790
- opacity: 0.7
4791
- }
4778
+ size: 16,
4779
+ color: theme.palette.text.disabled,
4780
+ style: { opacity: 0.7 }
4792
4781
  }
4793
- ) : /* @__PURE__ */ jsx10(Icon, { fontSize: "small" })
4782
+ ) : /* @__PURE__ */ jsx10(Icon, { size: 16 })
4794
4783
  }
4795
4784
  ),
4796
4785
  isRenaming && !isUngrouped ? /* @__PURE__ */ jsx10(
@@ -4900,7 +4889,7 @@ var ProjectHeader = ({
4900
4889
  onRenameCancelDelete ? onRenameCancelDelete() : cancelRename();
4901
4890
  },
4902
4891
  sx: { color: alpha4(theme.palette.error.main, 0.9) },
4903
- children: /* @__PURE__ */ jsx10(CloseIcon4, { fontSize: "small" })
4892
+ children: /* @__PURE__ */ jsx10(CloseIcon3, { size: 16 })
4904
4893
  }
4905
4894
  ) }),
4906
4895
  /* @__PURE__ */ jsx10(Tooltip2, { title: "Save", children: /* @__PURE__ */ jsx10(
@@ -4913,7 +4902,7 @@ var ProjectHeader = ({
4913
4902
  commitRename();
4914
4903
  },
4915
4904
  sx: { color: theme.palette.success.main },
4916
- children: /* @__PURE__ */ jsx10(CheckIcon2, { fontSize: "small" })
4905
+ children: /* @__PURE__ */ jsx10(CheckIcon2, { size: 16 })
4917
4906
  }
4918
4907
  ) })
4919
4908
  ] }),
@@ -4934,7 +4923,7 @@ var ProjectHeader = ({
4934
4923
  },
4935
4924
  transition: "all 0.2s ease"
4936
4925
  },
4937
- children: /* @__PURE__ */ jsx10(AddIcon2, { fontSize: "small" })
4926
+ children: /* @__PURE__ */ jsx10(AddIcon3, { size: 16 })
4938
4927
  }
4939
4928
  ) }),
4940
4929
  !isUngrouped && !isRenaming && /* @__PURE__ */ jsx10(
@@ -4945,7 +4934,7 @@ var ProjectHeader = ({
4945
4934
  color: theme.palette.text.secondary,
4946
4935
  transition: "transform 0.2s ease"
4947
4936
  },
4948
- children: isCollapsed ? /* @__PURE__ */ jsx10(ExpandMoreIcon2, { fontSize: "small" }) : /* @__PURE__ */ jsx10(ExpandLessIcon, { fontSize: "small" })
4937
+ children: isCollapsed ? /* @__PURE__ */ jsx10(ExpandMoreIcon2, { size: 16 }) : /* @__PURE__ */ jsx10(ExpandLessIcon, { size: 16 })
4949
4938
  }
4950
4939
  )
4951
4940
  ]
@@ -5292,7 +5281,7 @@ var ConversationDrawer = ({ open, onClose }) => {
5292
5281
  bgcolor: alpha5(theme.palette.error.main, 0.1)
5293
5282
  }
5294
5283
  },
5295
- children: /* @__PURE__ */ jsx11(CloseIcon5, {})
5284
+ children: /* @__PURE__ */ jsx11(CloseIcon4, {})
5296
5285
  }
5297
5286
  ) })
5298
5287
  ]
@@ -5308,7 +5297,7 @@ var ConversationDrawer = ({ open, onClose }) => {
5308
5297
  onChange: (e) => setSearchQuery(e.target.value),
5309
5298
  variant: "outlined",
5310
5299
  InputProps: {
5311
- startAdornment: /* @__PURE__ */ jsx11(InputAdornment, { position: "start", children: /* @__PURE__ */ jsx11(SearchIcon, { fontSize: "small", sx: { color: theme.palette.text.secondary } }) }),
5300
+ startAdornment: /* @__PURE__ */ jsx11(InputAdornment, { position: "start", children: /* @__PURE__ */ jsx11(SearchIcon, { size: 16, color: theme.palette.text.secondary }) }),
5312
5301
  endAdornment: searchQuery && /* @__PURE__ */ jsx11(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx11(Tooltip3, { title: tooltip("clearSearch"), children: /* @__PURE__ */ jsx11(
5313
5302
  IconButton7,
5314
5303
  {
@@ -5317,7 +5306,7 @@ var ConversationDrawer = ({ open, onClose }) => {
5317
5306
  edge: "end",
5318
5307
  "aria-label": tooltip("clearSearch"),
5319
5308
  sx: { color: theme.palette.text.secondary },
5320
- children: /* @__PURE__ */ jsx11(ClearIcon, { fontSize: "small" })
5309
+ children: /* @__PURE__ */ jsx11(ClearIcon, { size: 16 })
5321
5310
  }
5322
5311
  ) }) })
5323
5312
  },
@@ -5383,7 +5372,7 @@ var ConversationDrawer = ({ open, onClose }) => {
5383
5372
  justifyContent: "center",
5384
5373
  flexShrink: 0
5385
5374
  },
5386
- children: /* @__PURE__ */ jsx11(FolderIcon4, { fontSize: "small", sx: { color: theme.palette.success.main } })
5375
+ children: /* @__PURE__ */ jsx11(FolderIcon4, { size: 16, color: theme.palette.success.main })
5387
5376
  }
5388
5377
  ),
5389
5378
  /* @__PURE__ */ jsx11(
@@ -5400,7 +5389,7 @@ var ConversationDrawer = ({ open, onClose }) => {
5400
5389
  size: "small",
5401
5390
  "aria-label": tooltip("addProject"),
5402
5391
  sx: { color: theme.palette.success.main },
5403
- children: /* @__PURE__ */ jsx11(AddIcon3, { fontSize: "small" })
5392
+ children: /* @__PURE__ */ jsx11(AddIcon4, { size: 16 })
5404
5393
  }
5405
5394
  ) })
5406
5395
  ]
@@ -5424,11 +5413,9 @@ var ConversationDrawer = ({ open, onClose }) => {
5424
5413
  /* @__PURE__ */ jsx11(
5425
5414
  InboxIcon3,
5426
5415
  {
5427
- sx: {
5428
- color: theme.palette.text.disabled,
5429
- fontSize: "0.9rem",
5430
- opacity: 0.7
5431
- }
5416
+ size: 14,
5417
+ color: theme.palette.text.disabled,
5418
+ style: { opacity: 0.7 }
5432
5419
  }
5433
5420
  ),
5434
5421
  /* @__PURE__ */ jsx11(
@@ -5685,7 +5672,7 @@ var ConversationDrawer = ({ open, onClose }) => {
5685
5672
  },
5686
5673
  sx: { color: theme.palette.error.main },
5687
5674
  children: [
5688
- /* @__PURE__ */ jsx11(ListItemIcon3, { children: /* @__PURE__ */ jsx11(DeleteSweepIcon, { fontSize: "small", sx: { color: theme.palette.error.main } }) }),
5675
+ /* @__PURE__ */ jsx11(ListItemIcon3, { children: /* @__PURE__ */ jsx11(DeleteSweepIcon, { size: 16, color: theme.palette.error.main }) }),
5689
5676
  /* @__PURE__ */ jsx11(ListItemText3, { children: "Clear All Conversations" })
5690
5677
  ]
5691
5678
  }
@@ -5747,16 +5734,7 @@ import {
5747
5734
  Avatar as Avatar7,
5748
5735
  Chip as Chip3
5749
5736
  } from "@mui/material";
5750
- import {
5751
- Close as CloseIcon6,
5752
- Clear as ClearIcon2,
5753
- Search as SearchIcon2,
5754
- Folder as FolderIcon5,
5755
- MoreVert as MoreVertIcon4,
5756
- DeleteSweep as DeleteSweepIcon2,
5757
- Inbox as InboxIcon4
5758
- } from "@mui/icons-material";
5759
- import { Add as AddIcon4 } from "@mui/icons-material";
5737
+ import { X as CloseIcon5, X as ClearIcon2, Search as SearchIcon2, Folder as FolderIcon5, MoreVertical as MoreVertIcon4, Trash2 as DeleteSweepIcon2, Inbox as InboxIcon4, Plus as AddIcon5 } from "lucide-react";
5760
5738
  import { useTheme as useTheme10, alpha as alpha6 } from "@mui/material/styles";
5761
5739
  import { Fragment as Fragment7, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
5762
5740
  var BANDIT_AVATAR2 = "https://cdn.burtson.ai/images/bandit-head.png";
@@ -6133,7 +6111,7 @@ var EnhancedMobileConversationsModal = ({
6133
6111
  {
6134
6112
  onClick: onClose,
6135
6113
  sx: { color: theme.palette.text.secondary },
6136
- children: /* @__PURE__ */ jsx12(CloseIcon6, {})
6114
+ children: /* @__PURE__ */ jsx12(CloseIcon5, {})
6137
6115
  }
6138
6116
  )
6139
6117
  ] })
@@ -6149,7 +6127,7 @@ var EnhancedMobileConversationsModal = ({
6149
6127
  onChange: (e) => setSearchQuery(e.target.value),
6150
6128
  variant: "outlined",
6151
6129
  InputProps: {
6152
- startAdornment: /* @__PURE__ */ jsx12(InputAdornment2, { position: "start", children: /* @__PURE__ */ jsx12(SearchIcon2, { fontSize: "small", sx: { color: theme.palette.text.secondary } }) }),
6130
+ startAdornment: /* @__PURE__ */ jsx12(InputAdornment2, { position: "start", children: /* @__PURE__ */ jsx12(SearchIcon2, { size: 16, color: theme.palette.text.secondary }) }),
6153
6131
  endAdornment: searchQuery && /* @__PURE__ */ jsx12(InputAdornment2, { position: "end", children: /* @__PURE__ */ jsx12(
6154
6132
  IconButton8,
6155
6133
  {
@@ -6157,7 +6135,7 @@ var EnhancedMobileConversationsModal = ({
6157
6135
  size: "small",
6158
6136
  edge: "end",
6159
6137
  sx: { color: theme.palette.text.secondary },
6160
- children: /* @__PURE__ */ jsx12(ClearIcon2, { fontSize: "small" })
6138
+ children: /* @__PURE__ */ jsx12(ClearIcon2, { size: 16 })
6161
6139
  }
6162
6140
  ) })
6163
6141
  }
@@ -6312,7 +6290,7 @@ var EnhancedMobileConversationsModal = ({
6312
6290
  justifyContent: "center",
6313
6291
  flexShrink: 0
6314
6292
  },
6315
- children: /* @__PURE__ */ jsx12(FolderIcon5, { fontSize: "small", sx: { color: theme.palette.success.main } })
6293
+ children: /* @__PURE__ */ jsx12(FolderIcon5, { size: 16, color: theme.palette.success.main })
6316
6294
  }
6317
6295
  ),
6318
6296
  /* @__PURE__ */ jsx12(
@@ -6323,7 +6301,7 @@ var EnhancedMobileConversationsModal = ({
6323
6301
  children: "New Project"
6324
6302
  }
6325
6303
  ),
6326
- /* @__PURE__ */ jsx12(IconButton8, { size: "small", sx: { color: theme.palette.success.main }, children: /* @__PURE__ */ jsx12(AddIcon4, { fontSize: "small" }) })
6304
+ /* @__PURE__ */ jsx12(IconButton8, { size: "small", sx: { color: theme.palette.success.main }, children: /* @__PURE__ */ jsx12(AddIcon5, { size: 16 }) })
6327
6305
  ]
6328
6306
  }
6329
6307
  ),
@@ -6345,11 +6323,9 @@ var EnhancedMobileConversationsModal = ({
6345
6323
  /* @__PURE__ */ jsx12(
6346
6324
  InboxIcon4,
6347
6325
  {
6348
- sx: {
6349
- color: theme.palette.text.disabled,
6350
- fontSize: "0.9rem",
6351
- opacity: 0.7
6352
- }
6326
+ size: 14,
6327
+ color: theme.palette.text.disabled,
6328
+ style: { opacity: 0.7 }
6353
6329
  }
6354
6330
  ),
6355
6331
  /* @__PURE__ */ jsx12(
@@ -6619,7 +6595,7 @@ var EnhancedMobileConversationsModal = ({
6619
6595
  disabled: visibleConversationCount === 0,
6620
6596
  sx: { color: theme.palette.error.main },
6621
6597
  children: [
6622
- /* @__PURE__ */ jsx12(ListItemIcon4, { children: /* @__PURE__ */ jsx12(DeleteSweepIcon2, { fontSize: "small", sx: { color: theme.palette.error.main } }) }),
6598
+ /* @__PURE__ */ jsx12(ListItemIcon4, { children: /* @__PURE__ */ jsx12(DeleteSweepIcon2, { size: 16, color: theme.palette.error.main }) }),
6623
6599
  /* @__PURE__ */ jsx12(ListItemText4, { children: "Clear All Conversations" })
6624
6600
  ]
6625
6601
  }
@@ -7021,7 +6997,7 @@ var ChatAppBar = ({
7021
6997
  }
7022
6998
  },
7023
6999
  "aria-label": "Create new conversation",
7024
- children: /* @__PURE__ */ jsx13(AddIcon5, {})
7000
+ children: /* @__PURE__ */ jsx13(AddIcon, {})
7025
7001
  }
7026
7002
  ) })
7027
7003
  ]
@@ -7102,7 +7078,7 @@ var ChatAppBar = ({
7102
7078
  }
7103
7079
  },
7104
7080
  "aria-label": "Create new conversation",
7105
- children: /* @__PURE__ */ jsx13(AddIcon5, { fontSize: "small" })
7081
+ children: /* @__PURE__ */ jsx13(AddIcon, { fontSize: "small" })
7106
7082
  }
7107
7083
  ) }),
7108
7084
  /* @__PURE__ */ jsx13(Tooltip4, { title: `Current AI: ${selectedModel.replace("Bandit-", "")}`, arrow: true, children: /* @__PURE__ */ jsx13(
@@ -7719,9 +7695,6 @@ var under_review_default = UnderReview;
7719
7695
 
7720
7696
  // src/components/ConnectionStatus.tsx
7721
7697
  import { Box as Box13, Chip as Chip4, useTheme as useTheme14 } from "@mui/material";
7722
- import WifiIcon from "@mui/icons-material/Wifi";
7723
- import WifiOffIcon from "@mui/icons-material/WifiOff";
7724
- import SignalWifi2BarIcon from "@mui/icons-material/SignalWifi2Bar";
7725
7698
  import { jsx as jsx16 } from "react/jsx-runtime";
7726
7699
  var ConnectionStatus = ({
7727
7700
  showWhenGood = false,
@@ -8173,6 +8146,7 @@ var ChatContent = () => {
8173
8146
  const [streamBuffer, setStreamBuffer] = useState14("");
8174
8147
  const [responseStarted, setResponseStarted] = useState14(false);
8175
8148
  const [isStreaming, setIsStreaming] = useState14(false);
8149
+ const [isThinking, setIsThinking] = useState14(false);
8176
8150
  const initialLogoState = history.length === 0;
8177
8151
  const [logoVisible, setLogoVisible] = useState14(initialLogoState);
8178
8152
  const [logoShouldRender, setLogoShouldRender] = useState14(initialLogoState);
@@ -8656,6 +8630,7 @@ var ChatContent = () => {
8656
8630
  overrideComponentStatus: setComponentStatus,
8657
8631
  setIsSubmitting,
8658
8632
  setIsStreaming,
8633
+ setIsThinking,
8659
8634
  setResponseStarted,
8660
8635
  setResponse,
8661
8636
  setStreamBuffer,
@@ -9062,6 +9037,7 @@ var ChatContent = () => {
9062
9037
  chat_messages_default,
9063
9038
  {
9064
9039
  isStreaming,
9040
+ isThinking,
9065
9041
  history,
9066
9042
  pendingMessage,
9067
9043
  streamBuffer,
@@ -9201,4 +9177,4 @@ var chat_default = Chat;
9201
9177
  export {
9202
9178
  chat_default
9203
9179
  };
9204
- //# sourceMappingURL=chunk-TSQCNHOX.mjs.map
9180
+ //# sourceMappingURL=chunk-TLY6A6XL.mjs.map