@burtson-labs/bandit-engine 2.0.125 → 2.0.127

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/index.js CHANGED
@@ -15742,7 +15742,7 @@ var init_source_chips = __esm({
15742
15742
  });
15743
15743
 
15744
15744
  // src/chat/chat-messages.tsx
15745
- var import_material12, import_jsx_runtime15, ChatMessages, chat_messages_default;
15745
+ var import_material12, import_jsx_runtime15, WORKING_TOKEN_RE, ToolWorkingChip, ChatMessages, chat_messages_default;
15746
15746
  var init_chat_messages = __esm({
15747
15747
  "src/chat/chat-messages.tsx"() {
15748
15748
  "use strict";
@@ -15752,6 +15752,38 @@ var init_chat_messages = __esm({
15752
15752
  init_source_chips();
15753
15753
  init_conversationStore();
15754
15754
  import_jsx_runtime15 = require("react/jsx-runtime");
15755
+ WORKING_TOKEN_RE = /\s*<<working:([^>]*)>>\s*$/;
15756
+ ToolWorkingChip = ({ label }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
15757
+ import_material12.Box,
15758
+ {
15759
+ sx: (theme) => ({
15760
+ display: "inline-flex",
15761
+ alignItems: "center",
15762
+ gap: 1.25,
15763
+ mt: 1.5,
15764
+ px: 1.75,
15765
+ py: 0.9,
15766
+ borderRadius: 999,
15767
+ bgcolor: theme.palette.action.hover,
15768
+ border: `1px solid ${theme.palette.divider}`
15769
+ }),
15770
+ children: [
15771
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "typing-only", children: [
15772
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "dot" }),
15773
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "dot" }),
15774
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "dot" })
15775
+ ] }),
15776
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
15777
+ import_material12.Box,
15778
+ {
15779
+ component: "span",
15780
+ sx: { fontSize: "0.85rem", fontWeight: 500, color: "text.secondary", userSelect: "none" },
15781
+ children: label || "Working on it"
15782
+ }
15783
+ )
15784
+ ]
15785
+ }
15786
+ );
15755
15787
  ChatMessages = ({
15756
15788
  pendingMessage,
15757
15789
  streamBuffer,
@@ -15777,7 +15809,9 @@ var init_chat_messages = __esm({
15777
15809
  const isPlaceholder = entry.answer === "...";
15778
15810
  const showLoader = isLast && isStreaming && streamBuffer.trim() === "";
15779
15811
  const showThinking = showLoader && isThinking;
15780
- const content = isLast ? isStreaming ? streamBuffer || "" : isPlaceholder ? "" : entry.answer : entry.answer;
15812
+ const rawContent = isLast ? isStreaming ? streamBuffer || "" : isPlaceholder ? "" : entry.answer : entry.answer;
15813
+ const workingMatch = isLast && isStreaming ? rawContent.match(WORKING_TOKEN_RE) : null;
15814
+ const content = workingMatch ? rawContent.replace(WORKING_TOKEN_RE, "") : rawContent;
15781
15815
  const rawSources = entry.sourceFiles;
15782
15816
  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;
15783
15817
  const responseNode = /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
@@ -15850,6 +15884,7 @@ var init_chat_messages = __esm({
15850
15884
  sources: sourceSummaries
15851
15885
  }
15852
15886
  ),
15887
+ workingMatch && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ToolWorkingChip, { label: workingMatch[1] }),
15853
15888
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(source_chips_default, { content })
15854
15889
  ]
15855
15890
  }
@@ -15862,7 +15897,7 @@ var init_chat_messages = __esm({
15862
15897
  {
15863
15898
  question: entry.question,
15864
15899
  response: responseNode,
15865
- responseText: isLast ? isStreaming ? streamBuffer || "" : isPlaceholder ? "" : entry.answer : entry.answer,
15900
+ responseText: content,
15866
15901
  backgroundColor: "#444",
15867
15902
  images: entry.images,
15868
15903
  memoryUpdated: entry.memoryUpdated && !isPlaceholder,
@@ -19388,23 +19423,24 @@ ${sanitize(
19388
19423
  bgcolor: inputBackground,
19389
19424
  borderRadius: "24px",
19390
19425
  boxShadow: isMobile ? `0 0 0 1px ${theme.palette.mode === "dark" ? "#444" : "#eee"}` : "0 4px 20px rgba(0, 0, 0, 0.4)",
19391
- px: isMobile ? compactMobile ? 1 : 1.5 : 3,
19392
- pt: isMobile ? compactMobile ? 0.6 : 1 : 1,
19393
- pb: isMobile ? compactMobile ? 0.9 : 1.5 : 1.5,
19426
+ px: isMobile ? compactMobile ? 1 : 1.5 : 2,
19427
+ pt: isMobile ? compactMobile ? 0.6 : 1 : 0.75,
19428
+ pb: isMobile ? compactMobile ? 0.9 : 1.5 : 0.75,
19394
19429
  display: "flex",
19395
19430
  flexDirection: "column",
19396
- gap: isMobile ? compactMobile ? 0.75 : 1 : 1
19431
+ gap: isMobile ? compactMobile ? 0.75 : 1 : 0.5
19397
19432
  },
19398
19433
  children: [
19399
19434
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
19400
19435
  import_material18.Box,
19401
19436
  {
19402
19437
  sx: {
19403
- display: "flex",
19438
+ display: fileInputs.length > 0 || pastedImages.length > 0 ? "flex" : "none",
19404
19439
  flexWrap: "wrap",
19405
19440
  gap: attachmentsGap,
19406
19441
  alignItems: "center",
19407
- flexDirection: "row"
19442
+ flexDirection: "row",
19443
+ pt: isMobile ? 0 : 0.5
19408
19444
  },
19409
19445
  children: [
19410
19446
  fileInputs.map((file, idx) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
@@ -19528,7 +19564,7 @@ ${sanitize(
19528
19564
  ]
19529
19565
  }
19530
19566
  ),
19531
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
19567
+ isMobile && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
19532
19568
  import_material18.Box,
19533
19569
  {
19534
19570
  sx: {
@@ -19541,7 +19577,7 @@ ${sanitize(
19541
19577
  {
19542
19578
  fullWidth: true,
19543
19579
  multiline: true,
19544
- maxRows: isMobile ? compactMobile ? 6 : 12 : 6,
19580
+ maxRows: compactMobile ? 6 : 12,
19545
19581
  placeholder: isIncognito ? "Incognito chat \u2014 not saved" : "What's on your mind?",
19546
19582
  value: inputValue,
19547
19583
  onChange: (e) => setInputValue(e.target.value),
@@ -19552,18 +19588,15 @@ ${sanitize(
19552
19588
  disableUnderline: true,
19553
19589
  sx: {
19554
19590
  flex: "1 1 auto",
19555
- maxHeight: isMobile ? compactMobile ? "120px" : "150px" : "none",
19591
+ maxHeight: compactMobile ? "120px" : "150px",
19556
19592
  overflowY: "auto",
19557
19593
  color: fileText,
19558
19594
  "& .MuiInputBase-inputMultiline": {
19559
- fontSize: isMobile ? compactMobile ? "0.95rem" : "1rem" : "1rem"
19595
+ fontSize: compactMobile ? "0.95rem" : "1rem"
19560
19596
  }
19561
19597
  }
19562
19598
  },
19563
- sx: {
19564
- flex: 1,
19565
- "& .MuiInputBase-root": {}
19566
- }
19599
+ sx: { flex: 1 }
19567
19600
  }
19568
19601
  )
19569
19602
  }
@@ -19574,9 +19607,9 @@ ${sanitize(
19574
19607
  sx: {
19575
19608
  display: "flex",
19576
19609
  justifyContent: "space-between",
19577
- alignItems: "center",
19610
+ alignItems: "flex-end",
19578
19611
  gap: isMobile ? 0.6 : 1,
19579
- mt: isMobile ? 0.5 : 1
19612
+ mt: isMobile ? 0.5 : 0
19580
19613
  },
19581
19614
  children: [
19582
19615
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
@@ -19663,6 +19696,30 @@ ${sanitize(
19663
19696
  ]
19664
19697
  }
19665
19698
  ),
19699
+ !isMobile && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
19700
+ import_material18.TextField,
19701
+ {
19702
+ fullWidth: true,
19703
+ multiline: true,
19704
+ maxRows: 6,
19705
+ placeholder: isIncognito ? "Incognito chat \u2014 not saved" : "What's on your mind?",
19706
+ value: inputValue,
19707
+ onChange: (e) => setInputValue(e.target.value),
19708
+ onKeyDown: handleKeyPress,
19709
+ inputRef,
19710
+ variant: "standard",
19711
+ InputProps: {
19712
+ disableUnderline: true,
19713
+ sx: {
19714
+ color: fileText,
19715
+ maxHeight: "160px",
19716
+ overflowY: "auto",
19717
+ "& .MuiInputBase-inputMultiline": { fontSize: "1rem" }
19718
+ }
19719
+ },
19720
+ sx: { flex: 1, alignSelf: "center", mx: 0.5 }
19721
+ }
19722
+ ),
19666
19723
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_material18.Box, { sx: { display: "flex", alignItems: "center", gap: isMobile ? 0.6 : 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_material18.Tooltip, { title: isStreaming ? "Stop response" : "Send message", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
19667
19724
  import_material18.IconButton,
19668
19725
  {
@@ -19834,13 +19891,14 @@ var init_askUserStore = __esm({
19834
19891
  });
19835
19892
 
19836
19893
  // src/chat/ask-user-card.tsx
19837
- var import_react24, import_material19, import_styles11, import_jsx_runtime21, AskUserCard, ask_user_card_default;
19894
+ var import_react24, import_material19, import_styles11, import_lucide_react7, import_jsx_runtime21, AskUserCard, ask_user_card_default;
19838
19895
  var init_ask_user_card = __esm({
19839
19896
  "src/chat/ask-user-card.tsx"() {
19840
19897
  "use strict";
19841
19898
  import_react24 = require("react");
19842
19899
  import_material19 = require("@mui/material");
19843
19900
  import_styles11 = require("@mui/material/styles");
19901
+ import_lucide_react7 = require("lucide-react");
19844
19902
  init_askUserStore();
19845
19903
  import_jsx_runtime21 = require("react/jsx-runtime");
19846
19904
  AskUserCard = () => {
@@ -19868,57 +19926,142 @@ var init_ask_user_card = __esm({
19868
19926
  });
19869
19927
  submit(final);
19870
19928
  };
19871
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Box, { sx: { width: "100%", display: "flex", justifyContent: "center", px: { xs: 1, sm: 2 }, mb: 1.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
19929
+ const isSingleQuestion = pending.questions.length === 1;
19930
+ const handleOptionTap = (qid, label) => {
19931
+ setFreeform((p) => ({ ...p, [qid]: "" }));
19932
+ if (isSingleQuestion) {
19933
+ submit({ [qid]: label });
19934
+ return;
19935
+ }
19936
+ setSelected((p) => ({ ...p, [qid]: label }));
19937
+ };
19938
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Grow, { in: true, timeout: 300, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Box, { sx: { width: "100%", display: "flex", justifyContent: "center", px: { xs: 1, sm: 2 }, mb: 1.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
19872
19939
  import_material19.Paper,
19873
19940
  {
19874
19941
  elevation: 0,
19875
19942
  sx: {
19876
19943
  width: "100%",
19877
19944
  maxWidth: 760,
19878
- p: { xs: 1.75, sm: 2.25 },
19879
- borderRadius: 2,
19880
- border: `1px solid ${(0, import_styles11.alpha)(theme.palette.primary.main, 0.45)}`,
19881
- bgcolor: (0, import_styles11.alpha)(theme.palette.primary.main, 0.06)
19945
+ p: { xs: 2, sm: 2.5 },
19946
+ borderRadius: 3,
19947
+ border: `1px solid ${theme.palette.divider}`,
19948
+ bgcolor: theme.palette.background.paper,
19949
+ boxShadow: `0 8px 32px ${(0, import_styles11.alpha)(theme.palette.common.black, theme.palette.mode === "dark" ? 0.35 : 0.1)}`
19882
19950
  },
19883
19951
  children: [
19884
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Typography, { variant: "caption", sx: { color: theme.palette.primary.main, fontWeight: 700, letterSpacing: 0.4 }, children: "BANDIT NEEDS A QUICK DECISION" }),
19885
- pending.questions.map((q) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_material19.Box, { sx: { mt: 1.5 }, children: [
19886
- q.header && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Chip, { label: q.header, size: "small", sx: { mb: 0.75, fontWeight: 600 }, color: "primary", variant: "outlined" }),
19887
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Typography, { sx: { fontWeight: 600, color: theme.palette.text.primary, mb: 1 }, children: q.question }),
19888
- q.options && q.options.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Stack, { spacing: 1, children: q.options.map((opt) => {
19889
- const isSel = selected[q.id] === opt.label && !freeform[q.id]?.trim();
19890
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
19891
- import_material19.Button,
19952
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_material19.Box, { sx: { display: "flex", alignItems: "center", gap: 1, mb: 0.5 }, children: [
19953
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
19954
+ import_material19.Box,
19955
+ {
19956
+ sx: {
19957
+ width: 26,
19958
+ height: 26,
19959
+ borderRadius: "50%",
19960
+ display: "flex",
19961
+ alignItems: "center",
19962
+ justifyContent: "center",
19963
+ bgcolor: (0, import_styles11.alpha)(theme.palette.primary.main, 0.12),
19964
+ color: theme.palette.primary.main,
19965
+ flexShrink: 0
19966
+ },
19967
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.CircleHelp, { size: 16 })
19968
+ }
19969
+ ),
19970
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Typography, { variant: "body2", sx: { color: theme.palette.text.secondary, fontWeight: 600 }, children: "Quick question before I continue" })
19971
+ ] }),
19972
+ pending.questions.map((q) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_material19.Box, { sx: { mt: 1.75 }, children: [
19973
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_material19.Box, { sx: { display: "flex", alignItems: "baseline", gap: 1, flexWrap: "wrap", mb: 1.25 }, children: [
19974
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Typography, { sx: { fontWeight: 600, fontSize: "1.02rem", color: theme.palette.text.primary }, children: q.question }),
19975
+ q.header && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
19976
+ import_material19.Chip,
19892
19977
  {
19893
- onClick: () => {
19894
- setSelected((p) => ({ ...p, [q.id]: opt.label }));
19895
- setFreeform((p) => ({ ...p, [q.id]: "" }));
19896
- },
19897
- variant: isSel ? "contained" : "outlined",
19898
- color: "primary",
19978
+ label: q.header,
19979
+ size: "small",
19899
19980
  sx: {
19900
- justifyContent: "flex-start",
19901
- textAlign: "left",
19902
- textTransform: "none",
19903
- py: 1,
19904
- px: 1.5,
19905
- borderColor: (0, import_styles11.alpha)(theme.palette.primary.main, 0.4)
19906
- },
19907
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_material19.Box, { children: [
19908
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Typography, { sx: { fontWeight: 600, lineHeight: 1.3 }, children: opt.label }),
19909
- opt.description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
19910
- import_material19.Typography,
19911
- {
19912
- variant: "caption",
19913
- sx: { color: isSel ? (0, import_styles11.alpha)("#fff", 0.85) : theme.palette.text.secondary, display: "block" },
19914
- children: opt.description
19915
- }
19916
- )
19917
- ] })
19981
+ height: 20,
19982
+ fontSize: "0.7rem",
19983
+ fontWeight: 600,
19984
+ color: theme.palette.text.secondary,
19985
+ bgcolor: (0, import_styles11.alpha)(theme.palette.text.primary, 0.06)
19986
+ }
19987
+ }
19988
+ )
19989
+ ] }),
19990
+ q.options && q.options.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
19991
+ import_material19.Box,
19992
+ {
19993
+ sx: {
19994
+ display: "grid",
19995
+ gridTemplateColumns: { xs: "1fr", sm: q.options.length > 1 ? "1fr 1fr" : "1fr" },
19996
+ gap: 1
19918
19997
  },
19919
- opt.label
19920
- );
19921
- }) }),
19998
+ children: q.options.map((opt) => {
19999
+ const isSel = selected[q.id] === opt.label && !freeform[q.id]?.trim();
20000
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
20001
+ import_material19.Box,
20002
+ {
20003
+ component: "button",
20004
+ type: "button",
20005
+ onClick: () => handleOptionTap(q.id, opt.label),
20006
+ sx: {
20007
+ font: "inherit",
20008
+ textAlign: "left",
20009
+ cursor: "pointer",
20010
+ display: "flex",
20011
+ alignItems: "flex-start",
20012
+ gap: 1,
20013
+ px: 1.5,
20014
+ py: 1.25,
20015
+ borderRadius: 2,
20016
+ border: `1.5px solid ${isSel ? theme.palette.primary.main : theme.palette.divider}`,
20017
+ bgcolor: isSel ? (0, import_styles11.alpha)(theme.palette.primary.main, 0.08) : "transparent",
20018
+ color: "inherit",
20019
+ transition: "border-color 0.15s ease, background-color 0.15s ease, transform 0.1s ease",
20020
+ "&:hover": {
20021
+ borderColor: theme.palette.primary.main,
20022
+ bgcolor: (0, import_styles11.alpha)(theme.palette.primary.main, 0.05)
20023
+ },
20024
+ "&:active": { transform: "scale(0.99)" }
20025
+ },
20026
+ children: [
20027
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
20028
+ import_material19.Box,
20029
+ {
20030
+ sx: {
20031
+ width: 18,
20032
+ height: 18,
20033
+ mt: "2px",
20034
+ borderRadius: "50%",
20035
+ flexShrink: 0,
20036
+ display: "flex",
20037
+ alignItems: "center",
20038
+ justifyContent: "center",
20039
+ border: `1.5px solid ${isSel ? theme.palette.primary.main : (0, import_styles11.alpha)(theme.palette.text.secondary, 0.5)}`,
20040
+ bgcolor: isSel ? theme.palette.primary.main : "transparent",
20041
+ color: theme.palette.getContrastText(theme.palette.primary.main),
20042
+ transition: "all 0.15s ease"
20043
+ },
20044
+ children: isSel && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Check, { size: 12, strokeWidth: 3 })
20045
+ }
20046
+ ),
20047
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_material19.Box, { sx: { minWidth: 0 }, children: [
20048
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Typography, { sx: { fontWeight: 600, lineHeight: 1.35, fontSize: "0.92rem" }, children: opt.label }),
20049
+ opt.description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
20050
+ import_material19.Typography,
20051
+ {
20052
+ variant: "caption",
20053
+ sx: { color: theme.palette.text.secondary, display: "block", mt: 0.25 },
20054
+ children: opt.description
20055
+ }
20056
+ )
20057
+ ] })
20058
+ ]
20059
+ },
20060
+ opt.label
20061
+ );
20062
+ })
20063
+ }
20064
+ ),
19922
20065
  q.allowFreeform !== false && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
19923
20066
  import_material19.TextField,
19924
20067
  {
@@ -19927,17 +20070,45 @@ var init_ask_user_card = __esm({
19927
20070
  placeholder: q.options && q.options.length ? "Or type your own answer\u2026" : "Type your answer\u2026",
19928
20071
  value: freeform[q.id] ?? "",
19929
20072
  onChange: (e) => setFreeform((p) => ({ ...p, [q.id]: e.target.value })),
19930
- sx: { mt: q.options && q.options.length ? 1.25 : 0 }
20073
+ onKeyDown: (e) => {
20074
+ if (e.key === "Enter" && !e.shiftKey && answerFor(q.id)) {
20075
+ e.preventDefault();
20076
+ if (allAnswered) handleSubmit();
20077
+ }
20078
+ },
20079
+ sx: {
20080
+ mt: q.options && q.options.length ? 1.25 : 0,
20081
+ "& .MuiOutlinedInput-root": { borderRadius: 2 }
20082
+ }
19931
20083
  }
19932
20084
  )
19933
20085
  ] }, q.id)),
19934
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_material19.Box, { sx: { display: "flex", justifyContent: "flex-end", gap: 1, mt: 2 }, children: [
19935
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Button, { onClick: cancel, color: "inherit", sx: { textTransform: "none", color: theme.palette.text.secondary }, children: "Skip" }),
19936
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_material19.Button, { onClick: handleSubmit, disabled: !allAnswered, variant: "contained", sx: { textTransform: "none" }, children: "Submit" })
20086
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_material19.Box, { sx: { display: "flex", alignItems: "center", justifyContent: "flex-end", gap: 1, mt: 2 }, children: [
20087
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
20088
+ import_material19.Button,
20089
+ {
20090
+ onClick: cancel,
20091
+ color: "inherit",
20092
+ size: "small",
20093
+ sx: { textTransform: "none", color: theme.palette.text.secondary },
20094
+ children: "Skip \u2014 use your best judgment"
20095
+ }
20096
+ ),
20097
+ (!isSingleQuestion || Object.values(freeform).some((v) => v.trim())) && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
20098
+ import_material19.Button,
20099
+ {
20100
+ onClick: handleSubmit,
20101
+ disabled: !allAnswered,
20102
+ variant: "contained",
20103
+ size: "small",
20104
+ sx: { textTransform: "none", borderRadius: 999, px: 2.5 },
20105
+ children: "Answer"
20106
+ }
20107
+ )
19937
20108
  ] })
19938
20109
  ]
19939
20110
  }
19940
- ) });
20111
+ ) }) });
19941
20112
  };
19942
20113
  ask_user_card_default = AskUserCard;
19943
20114
  }
@@ -21938,14 +22109,14 @@ TOOL USAGE PROTOCOL (conservative approach)
21938
22109
  * web_fetch() - to read the FULL contents of a specific URL you already have. Reach for this when the user wants to "tell me more", "go deeper", "read/open that article", or asks for details about a specific source, link, or article from an EARLIER answer: take that item's URL from the previous Sources list in this conversation and fetch it, then answer from the page's actual content (not just the prior summary)
21939
22110
  * image_generation() - ONLY when explicitly asked to create or generate an image
21940
22111
  * create_file({"content": "...", "filename": "report.docx", "format": "docx"}) - when the user asks for a downloadable FILE (a document, spreadsheet, slides, markdown, code, etc.) or to "export"/"download"/"save" something. Formats: md, txt, csv, json, html, xml, yaml, docx, pptx. PDF is NOT a supported format \u2014 if the user asks for a PDF, create a docx instead. For docx/pptx write well-structured Markdown (use "## " headings to start each slide for pptx). It returns a temporary download link \u2014 ALWAYS tell the user the file expires (~1 hour). If it is unclear whether they want it shown inline vs. as a downloadable file, use ask_user first.
21941
- * ask_user({"questions": [{"question": "...", "header": "Format", "options": [{"label": "Inline (Recommended)"}, {"label": "Download a file"}]}]}) - when you are genuinely BLOCKED on a decision that is the USER's to make and cannot resolve from the request, context, or sensible defaults (e.g. show content inline vs. let them download it, which format/option they want). Renders clickable options the user answers in one step \u2014 better than asking in prose and ending your turn. Give 1-4 questions, each with 2-4 options; if one is clearly best, list it first and append " (Recommended)". The user may also type their own answer; act on it directly.
22112
+ * ask_user({"questions": [{"question": "...", "header": "Format", "options": [{"label": "Inline (Recommended)"}, {"label": "Download a file"}]}]}) - when the request is AMBIGUOUS or missing a detail you need to do a good job (unclear scope, audience, format, tone, which of several interpretations they meant), or you are blocked on a decision that is the user's to make and cannot resolve from the request, context, or sensible defaults. Renders clickable options the user answers in one step \u2014 ALWAYS prefer this over asking a clarifying question in prose and ending your turn. Give 1-4 questions, each with 2-4 short options; if one is clearly best, list it first and append " (Recommended)". The user may also type their own answer; act on it directly. Don't overuse it \u2014 when a sensible default exists, take it and note the assumption instead.
21942
22113
  - For general questions about concepts, definitions, explanations, or how-to topics, use your built-in knowledge WITHOUT calling tools.
21943
22114
  - Examples of what NOT to use tools for: "who are you?", "what is React?", "explain machine learning", "how does X work?", general programming questions.
21944
22115
  - When a tool is truly needed, call exactly ONE tool that best matches the request.
21945
22116
  - Begin tool usage with a fenced code block: \`\`\`tool_code
21946
22117
  functionName({"param": "value"})
21947
22118
  \`\`\`
21948
- - If you cannot answer with your knowledge and context, and no suitable tool exists, ask a clarifying question.
22119
+ - If you cannot answer with your knowledge and context, and no suitable tool exists, use ask_user to ask a clarifying question with clickable options.
21949
22120
 
21950
22121
  Examples of appropriate tool usage:
21951
22122
 
@@ -22000,8 +22171,20 @@ ${protocol}`;
22000
22171
  return result.trimStart();
22001
22172
  };
22002
22173
  const stripToolBlocks = (text) => text.replace(/```(?:tool_code|TOOL_CODE)\s*\n[\s\S]*?\n```/gi, "").trim();
22174
+ const truncateAtToolApparatus = (text) => {
22175
+ let t = text;
22176
+ const fenceIdx = t.search(/```(?:tool_code|TOOL_CODE)/);
22177
+ if (fenceIdx !== -1) t = t.slice(0, fenceIdx);
22178
+ const callIdx = t.search(
22179
+ /\b(?:web_search|web_fetch|image_generation|create_file|ask_user)\s*\(/
22180
+ );
22181
+ if (callIdx !== -1) t = t.slice(0, callIdx);
22182
+ t = t.replace(/```[\w-]*\s*$/, "");
22183
+ const fenceCount = (t.match(/```/g) || []).length;
22184
+ if (fenceCount % 2 === 1) t = t.slice(0, t.lastIndexOf("```"));
22185
+ return t.trim();
22186
+ };
22003
22187
  let workingLabel = "Working on it";
22004
- let workingPreamble = "";
22005
22188
  const stopWorking = () => {
22006
22189
  if (workingTimer) {
22007
22190
  clearInterval(workingTimer);
@@ -22010,17 +22193,10 @@ ${protocol}`;
22010
22193
  };
22011
22194
  const startWorking = (label = "Working on it") => {
22012
22195
  workingLabel = label.replace(/[.…]+\s*$/, "").trim() || "Working on it";
22013
- workingPreamble = stripToolBlocks(stripThinking(fullMessage)).trim();
22014
- if (workingTimer) return;
22015
- let dots = 0;
22016
- const render = () => {
22017
- dots = (dots + 1) % 4;
22018
- setStreamBuffer(
22019
- `${workingPreamble}${workingPreamble ? "\n\n" : ""}_${workingLabel}${".".repeat(dots)}_`
22020
- );
22021
- };
22022
- render();
22023
- workingTimer = setInterval(render, 450);
22196
+ const preamble = truncateAtToolApparatus(stripToolBlocks(stripThinking(fullMessage)));
22197
+ setStreamBuffer(
22198
+ `${preamble}${preamble ? "\n\n" : ""}<<working:${workingLabel}>>`
22199
+ );
22024
22200
  };
22025
22201
  const flushNow = () => {
22026
22202
  clearFlushTimer();
@@ -22066,10 +22242,16 @@ ${protocol}`;
22066
22242
  const inThinkBlock = /<think>/.test(fullMessage) && !/<think>[\s\S]*<\/think>/.test(fullMessage);
22067
22243
  setIsThinking?.(inThinkBlock);
22068
22244
  const visibleMessage = stripThinking(fullMessage);
22069
- if (/```(?:tool_code|TOOL_CODE)/.test(visibleMessage) || /\b(?:web_search|web_fetch|image_generation|create_file|ask_user)\s*\(/.test(visibleMessage)) {
22245
+ const bareToolMatch = visibleMessage.match(
22246
+ /\b(web_search|web_fetch|image_generation|create_file|ask_user)\s*\(/
22247
+ );
22248
+ if (/```(?:tool_code|TOOL_CODE)/.test(visibleMessage) || bareToolMatch) {
22070
22249
  sawToolBlock = true;
22071
22250
  clearFlushTimer();
22072
- startWorking();
22251
+ const fn = bareToolMatch?.[1];
22252
+ startWorking(
22253
+ fn === "create_file" ? "Creating your file" : fn === "web_search" ? "Searching the web" : fn === "web_fetch" ? "Reading the page" : fn === "image_generation" ? "Generating the image" : "Working on it"
22254
+ );
22073
22255
  }
22074
22256
  latestDisplayMessage = visibleMessage;
22075
22257
  if (!sawToolBlock) {
@@ -22925,13 +23107,13 @@ var init_useNetworkStatus = __esm({
22925
23107
  });
22926
23108
 
22927
23109
  // src/chat/project-management-modal.tsx
22928
- var import_react30, import_material21, import_lucide_react7, import_styles12, import_jsx_runtime23, DEFAULT_COLORS2, ProjectManagementModal, project_management_modal_default;
23110
+ var import_react30, import_material21, import_lucide_react8, import_styles12, import_jsx_runtime23, DEFAULT_COLORS2, ProjectManagementModal, project_management_modal_default;
22929
23111
  var init_project_management_modal = __esm({
22930
23112
  "src/chat/project-management-modal.tsx"() {
22931
23113
  "use strict";
22932
23114
  import_react30 = require("react");
22933
23115
  import_material21 = require("@mui/material");
22934
- import_lucide_react7 = require("lucide-react");
23116
+ import_lucide_react8 = require("lucide-react");
22935
23117
  import_styles12 = require("@mui/material/styles");
22936
23118
  init_projectStore();
22937
23119
  init_conversationStore();
@@ -23160,7 +23342,7 @@ var init_project_management_modal = __esm({
23160
23342
  flex: 1
23161
23343
  },
23162
23344
  children: [
23163
- showCreateForm && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material21.IconButton, { onClick: resetForm, size: "small", sx: { mr: 0.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react7.ArrowLeft, { size: 16 }) }),
23345
+ showCreateForm && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material21.IconButton, { onClick: resetForm, size: "small", sx: { mr: 0.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.ArrowLeft, { size: 16 }) }),
23164
23346
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
23165
23347
  import_material21.Typography,
23166
23348
  {
@@ -23178,7 +23360,7 @@ var init_project_management_modal = __esm({
23178
23360
  ]
23179
23361
  }
23180
23362
  ),
23181
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material21.IconButton, { onClick: handleClose, size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react7.X, {}) })
23363
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material21.IconButton, { onClick: handleClose, size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.X, {}) })
23182
23364
  ]
23183
23365
  }
23184
23366
  ),
@@ -23265,7 +23447,7 @@ var init_project_management_modal = __esm({
23265
23447
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
23266
23448
  import_material21.Button,
23267
23449
  {
23268
- startIcon: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react7.Plus, {}),
23450
+ startIcon: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.Plus, {}),
23269
23451
  onClick: () => setShowCreateForm(true),
23270
23452
  variant: "contained",
23271
23453
  sx: {
@@ -23290,7 +23472,7 @@ var init_project_management_modal = __esm({
23290
23472
  backgroundColor: subtleSurface
23291
23473
  },
23292
23474
  children: [
23293
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react7.Folder, { size: 48, style: { marginBottom: 8, opacity: 0.5 } }),
23475
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.Folder, { size: 48, style: { marginBottom: 8, opacity: 0.5 } }),
23294
23476
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material21.Typography, { variant: "body1", sx: { fontWeight: 600 }, children: "No projects yet" }),
23295
23477
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material21.Typography, { variant: "body2", children: "Create your first project to organize conversations." })
23296
23478
  ]
@@ -23325,7 +23507,7 @@ var init_project_management_modal = __esm({
23325
23507
  height: 36,
23326
23508
  fontSize: "1rem"
23327
23509
  },
23328
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react7.Folder, { size: 16 })
23510
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.Folder, { size: 16 })
23329
23511
  }
23330
23512
  ),
23331
23513
  /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_material21.Box, { sx: { flex: 1, minWidth: 0 }, children: [
@@ -23376,7 +23558,7 @@ var init_project_management_modal = __esm({
23376
23558
  mt: 0.25,
23377
23559
  zIndex: 1
23378
23560
  },
23379
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react7.MoreVertical, { size: 16 })
23561
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.MoreVertical, { size: 16 })
23380
23562
  }
23381
23563
  )
23382
23564
  ]
@@ -23452,7 +23634,7 @@ var init_project_management_modal = __esm({
23452
23634
  startEdit(selectedProject);
23453
23635
  },
23454
23636
  children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_material21.Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
23455
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react7.Pencil, { size: 16 }),
23637
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.Pencil, { size: 16 }),
23456
23638
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material21.Typography, { variant: "body2", color: "inherit", children: "Edit" })
23457
23639
  ] })
23458
23640
  }
@@ -23466,7 +23648,7 @@ var init_project_management_modal = __esm({
23466
23648
  },
23467
23649
  sx: { color: theme.palette.error.main },
23468
23650
  children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_material21.Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
23469
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react7.Trash2, { size: 16 }),
23651
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.Trash2, { size: 16 }),
23470
23652
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_material21.Typography, { variant: "body2", color: "inherit", children: "Delete" })
23471
23653
  ] })
23472
23654
  }
@@ -23518,13 +23700,13 @@ var init_project_management_modal = __esm({
23518
23700
  });
23519
23701
 
23520
23702
  // src/chat/move-conversation-modal.tsx
23521
- var import_react31, import_material22, import_lucide_react8, import_styles13, import_jsx_runtime24, MoveConversationModal, move_conversation_modal_default;
23703
+ var import_react31, import_material22, import_lucide_react9, import_styles13, import_jsx_runtime24, MoveConversationModal, move_conversation_modal_default;
23522
23704
  var init_move_conversation_modal = __esm({
23523
23705
  "src/chat/move-conversation-modal.tsx"() {
23524
23706
  "use strict";
23525
23707
  import_react31 = require("react");
23526
23708
  import_material22 = require("@mui/material");
23527
- import_lucide_react8 = require("lucide-react");
23709
+ import_lucide_react9 = require("lucide-react");
23528
23710
  import_styles13 = require("@mui/material/styles");
23529
23711
  init_projectStore();
23530
23712
  init_conversationStore();
@@ -23609,7 +23791,7 @@ var init_move_conversation_modal = __esm({
23609
23791
  width: 32,
23610
23792
  height: 32
23611
23793
  },
23612
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react8.Inbox, {})
23794
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react9.Inbox, {})
23613
23795
  }
23614
23796
  ) }),
23615
23797
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
@@ -23645,7 +23827,7 @@ var init_move_conversation_modal = __esm({
23645
23827
  width: 32,
23646
23828
  height: 32
23647
23829
  },
23648
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react8.Folder, {})
23830
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react9.Folder, {})
23649
23831
  }
23650
23832
  ) }),
23651
23833
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
@@ -23689,13 +23871,13 @@ var init_move_conversation_modal = __esm({
23689
23871
  });
23690
23872
 
23691
23873
  // src/chat/simple-conversation-item.tsx
23692
- var import_react32, import_material23, import_lucide_react9, import_styles14, import_jsx_runtime25, SimpleConversationItem, simple_conversation_item_default;
23874
+ var import_react32, import_material23, import_lucide_react10, import_styles14, import_jsx_runtime25, SimpleConversationItem, simple_conversation_item_default;
23693
23875
  var init_simple_conversation_item = __esm({
23694
23876
  "src/chat/simple-conversation-item.tsx"() {
23695
23877
  "use strict";
23696
23878
  import_react32 = require("react");
23697
23879
  import_material23 = require("@mui/material");
23698
- import_lucide_react9 = require("lucide-react");
23880
+ import_lucide_react10 = require("lucide-react");
23699
23881
  import_styles14 = require("@mui/material/styles");
23700
23882
  import_jsx_runtime25 = require("react/jsx-runtime");
23701
23883
  SimpleConversationItem = ({
@@ -23923,7 +24105,7 @@ var init_simple_conversation_item = __esm({
23923
24105
  },
23924
24106
  children: [
23925
24107
  !isMobile && !isEditing && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
23926
- import_lucide_react9.GripVertical,
24108
+ import_lucide_react10.GripVertical,
23927
24109
  {
23928
24110
  size: 16,
23929
24111
  color: theme.palette.text.disabled,
@@ -24017,7 +24199,7 @@ var init_simple_conversation_item = __esm({
24017
24199
  }
24018
24200
  }
24019
24201
  },
24020
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react9.MoreVertical, { size: 16 })
24202
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.MoreVertical, { size: 16 })
24021
24203
  }
24022
24204
  ),
24023
24205
  /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
@@ -24048,15 +24230,15 @@ var init_simple_conversation_item = __esm({
24048
24230
  },
24049
24231
  children: [
24050
24232
  onRename && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_material23.MenuItem, { onClick: handleEdit, children: [
24051
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material23.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react9.Pencil, { size: 16 }) }),
24233
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material23.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.Pencil, { size: 16 }) }),
24052
24234
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material23.ListItemText, { children: "Rename" })
24053
24235
  ] }),
24054
24236
  onMove && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_material23.MenuItem, { onClick: handleMove, children: [
24055
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material23.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react9.MailOpen, { size: 16 }) }),
24237
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material23.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.MailOpen, { size: 16 }) }),
24056
24238
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material23.ListItemText, { children: "Move to Project" })
24057
24239
  ] }),
24058
24240
  /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_material23.MenuItem, { onClick: handleDelete, children: [
24059
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material23.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react9.Trash2, { size: 16 }) }),
24241
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material23.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.Trash2, { size: 16 }) }),
24060
24242
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_material23.ListItemText, { children: "Delete" })
24061
24243
  ] })
24062
24244
  ]
@@ -24129,13 +24311,13 @@ var init_simple_conversation_item = __esm({
24129
24311
  });
24130
24312
 
24131
24313
  // src/chat/project-header.tsx
24132
- var import_react33, import_material24, import_lucide_react10, import_styles15, import_jsx_runtime26, ProjectHeader, project_header_default;
24314
+ var import_react33, import_material24, import_lucide_react11, import_styles15, import_jsx_runtime26, ProjectHeader, project_header_default;
24133
24315
  var init_project_header = __esm({
24134
24316
  "src/chat/project-header.tsx"() {
24135
24317
  "use strict";
24136
24318
  import_react33 = require("react");
24137
24319
  import_material24 = require("@mui/material");
24138
- import_lucide_react10 = require("lucide-react");
24320
+ import_lucide_react11 = require("lucide-react");
24139
24321
  import_styles15 = require("@mui/material/styles");
24140
24322
  init_conversationStore();
24141
24323
  init_projectStore();
@@ -24162,7 +24344,7 @@ var init_project_header = __esm({
24162
24344
  const [renameDraft, setRenameDraft] = (0, import_react33.useState)(projectName);
24163
24345
  const renameActionRef = (0, import_react33.useRef)("none");
24164
24346
  const isUngrouped = projectId === null;
24165
- const Icon = isCollapsed ? import_lucide_react10.Folder : import_lucide_react10.FolderOpen;
24347
+ const Icon = isCollapsed ? import_lucide_react11.Folder : import_lucide_react11.FolderOpen;
24166
24348
  const handleAddConversation = (e) => {
24167
24349
  e.stopPropagation();
24168
24350
  createNewConversation(projectId || void 0);
@@ -24243,7 +24425,7 @@ var init_project_header = __esm({
24243
24425
  mr: 1.5
24244
24426
  },
24245
24427
  children: isUngrouped ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
24246
- import_lucide_react10.Inbox,
24428
+ import_lucide_react11.Inbox,
24247
24429
  {
24248
24430
  size: 16,
24249
24431
  color: theme.palette.text.disabled,
@@ -24359,7 +24541,7 @@ var init_project_header = __esm({
24359
24541
  onRenameCancelDelete ? onRenameCancelDelete() : cancelRename();
24360
24542
  },
24361
24543
  sx: { color: (0, import_material24.alpha)(theme.palette.error.main, 0.9) },
24362
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react10.X, { size: 16 })
24544
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.X, { size: 16 })
24363
24545
  }
24364
24546
  ) }),
24365
24547
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_material24.Tooltip, { title: "Save", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
@@ -24372,7 +24554,7 @@ var init_project_header = __esm({
24372
24554
  commitRename();
24373
24555
  },
24374
24556
  sx: { color: theme.palette.success.main },
24375
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react10.Check, { size: 16 })
24557
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.Check, { size: 16 })
24376
24558
  }
24377
24559
  ) })
24378
24560
  ] }),
@@ -24393,7 +24575,7 @@ var init_project_header = __esm({
24393
24575
  },
24394
24576
  transition: "all 0.2s ease"
24395
24577
  },
24396
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react10.Plus, { size: 16 })
24578
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.Plus, { size: 16 })
24397
24579
  }
24398
24580
  ) }),
24399
24581
  !isUngrouped && !isRenaming && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
@@ -24404,7 +24586,7 @@ var init_project_header = __esm({
24404
24586
  color: theme.palette.text.secondary,
24405
24587
  transition: "transform 0.2s ease"
24406
24588
  },
24407
- children: isCollapsed ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react10.ChevronDown, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react10.ChevronUp, { size: 16 })
24589
+ children: isCollapsed ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.ChevronDown, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.ChevronUp, { size: 16 })
24408
24590
  }
24409
24591
  )
24410
24592
  ]
@@ -24434,13 +24616,13 @@ var init_tooltips = __esm({
24434
24616
  });
24435
24617
 
24436
24618
  // src/chat/conversation-drawer.tsx
24437
- var import_react34, import_material25, import_lucide_react11, import_styles16, import_jsx_runtime27, BANDIT_AVATAR, coerceOptionalString, deriveInitials, ConversationDrawer, conversation_drawer_default;
24619
+ var import_react34, import_material25, import_lucide_react12, import_styles16, import_jsx_runtime27, BANDIT_AVATAR, coerceOptionalString, deriveInitials, ConversationDrawer, conversation_drawer_default;
24438
24620
  var init_conversation_drawer = __esm({
24439
24621
  "src/chat/conversation-drawer.tsx"() {
24440
24622
  "use strict";
24441
24623
  import_react34 = require("react");
24442
24624
  import_material25 = require("@mui/material");
24443
- import_lucide_react11 = require("lucide-react");
24625
+ import_lucide_react12 = require("lucide-react");
24444
24626
  import_styles16 = require("@mui/material/styles");
24445
24627
  init_conversationStore();
24446
24628
  init_projectStore();
@@ -24813,7 +24995,7 @@ var init_conversation_drawer = __esm({
24813
24995
  bgcolor: (0, import_material25.alpha)(theme.palette.primary.main, 0.1)
24814
24996
  }
24815
24997
  },
24816
- children: syncStatus === "error" ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.CircleAlert, {}) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.RefreshCw, {})
24998
+ children: syncStatus === "error" ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.CircleAlert, {}) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.RefreshCw, {})
24817
24999
  }
24818
25000
  ) }),
24819
25001
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.Tooltip, { title: "Memories", arrow: true, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
@@ -24829,7 +25011,7 @@ var init_conversation_drawer = __esm({
24829
25011
  bgcolor: (0, import_material25.alpha)(theme.palette.primary.main, 0.1)
24830
25012
  }
24831
25013
  },
24832
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.Brain, {})
25014
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Brain, {})
24833
25015
  }
24834
25016
  ) }),
24835
25017
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.Tooltip, { title: tooltip("manageProjects"), arrow: true, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
@@ -24845,7 +25027,7 @@ var init_conversation_drawer = __esm({
24845
25027
  bgcolor: (0, import_material25.alpha)(theme.palette.primary.main, 0.1)
24846
25028
  }
24847
25029
  },
24848
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.Folder, {})
25030
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Folder, {})
24849
25031
  }
24850
25032
  ) }),
24851
25033
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.Tooltip, { title: tooltip("conversationOptions"), arrow: true, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
@@ -24861,7 +25043,7 @@ var init_conversation_drawer = __esm({
24861
25043
  bgcolor: (0, import_material25.alpha)(theme.palette.text.primary, 0.1)
24862
25044
  }
24863
25045
  },
24864
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.MoreVertical, {})
25046
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.MoreVertical, {})
24865
25047
  }
24866
25048
  ) }),
24867
25049
  isMobile && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.Tooltip, { title: tooltip("closeConversationsPanel"), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
@@ -24881,7 +25063,7 @@ var init_conversation_drawer = __esm({
24881
25063
  bgcolor: (0, import_material25.alpha)(theme.palette.error.main, 0.1)
24882
25064
  }
24883
25065
  },
24884
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.X, {})
25066
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.X, {})
24885
25067
  }
24886
25068
  ) })
24887
25069
  ]
@@ -24897,7 +25079,7 @@ var init_conversation_drawer = __esm({
24897
25079
  onChange: (e) => setSearchQuery(e.target.value),
24898
25080
  variant: "outlined",
24899
25081
  InputProps: {
24900
- startAdornment: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.InputAdornment, { position: "start", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.Search, { size: 16, color: theme.palette.text.secondary }) }),
25082
+ startAdornment: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.InputAdornment, { position: "start", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Search, { size: 16, color: theme.palette.text.secondary }) }),
24901
25083
  endAdornment: searchQuery && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.InputAdornment, { position: "end", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.Tooltip, { title: tooltip("clearSearch"), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
24902
25084
  import_material25.IconButton,
24903
25085
  {
@@ -24906,7 +25088,7 @@ var init_conversation_drawer = __esm({
24906
25088
  edge: "end",
24907
25089
  "aria-label": tooltip("clearSearch"),
24908
25090
  sx: { color: theme.palette.text.secondary },
24909
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.X, { size: 16 })
25091
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.X, { size: 16 })
24910
25092
  }
24911
25093
  ) }) })
24912
25094
  },
@@ -24972,7 +25154,7 @@ var init_conversation_drawer = __esm({
24972
25154
  justifyContent: "center",
24973
25155
  flexShrink: 0
24974
25156
  },
24975
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.Folder, { size: 16, color: theme.palette.success.main })
25157
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Folder, { size: 16, color: theme.palette.success.main })
24976
25158
  }
24977
25159
  ),
24978
25160
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
@@ -24989,7 +25171,7 @@ var init_conversation_drawer = __esm({
24989
25171
  size: "small",
24990
25172
  "aria-label": tooltip("addProject"),
24991
25173
  sx: { color: theme.palette.success.main },
24992
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.Plus, { size: 16 })
25174
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Plus, { size: 16 })
24993
25175
  }
24994
25176
  ) })
24995
25177
  ]
@@ -25011,7 +25193,7 @@ var init_conversation_drawer = __esm({
25011
25193
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.Divider, { sx: { flex: 1, opacity: 0.6 } }),
25012
25194
  /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_material25.Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
25013
25195
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
25014
- import_lucide_react11.Inbox,
25196
+ import_lucide_react12.Inbox,
25015
25197
  {
25016
25198
  size: 14,
25017
25199
  color: theme.palette.text.disabled,
@@ -25251,7 +25433,7 @@ var init_conversation_drawer = __esm({
25251
25433
  border: `1px solid ${(0, import_material25.alpha)(theme.palette.divider, 0.8)}`,
25252
25434
  color: theme.palette.text.secondary
25253
25435
  },
25254
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.House, { size: 16 })
25436
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.House, { size: 16 })
25255
25437
  }
25256
25438
  ),
25257
25439
  user2 && showLimitedAdminPanel() && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
@@ -25270,7 +25452,7 @@ var init_conversation_drawer = __esm({
25270
25452
  border: `1px solid ${(0, import_material25.alpha)(theme.palette.divider, 0.8)}`,
25271
25453
  color: theme.palette.text.secondary
25272
25454
  },
25273
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.SlidersHorizontal, { size: 16 })
25455
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.SlidersHorizontal, { size: 16 })
25274
25456
  }
25275
25457
  ),
25276
25458
  user2 && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
@@ -25288,7 +25470,7 @@ var init_conversation_drawer = __esm({
25288
25470
  border: `1px solid ${(0, import_material25.alpha)(theme.palette.divider, 0.8)}`,
25289
25471
  color: theme.palette.text.secondary
25290
25472
  },
25291
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.Settings, { size: 16 })
25473
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Settings, { size: 16 })
25292
25474
  }
25293
25475
  ),
25294
25476
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
@@ -25309,7 +25491,7 @@ var init_conversation_drawer = __esm({
25309
25491
  color: theme.palette.error.main,
25310
25492
  "&:hover": { bgcolor: (0, import_material25.alpha)(theme.palette.error.main, 0.1) }
25311
25493
  },
25312
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.LogOut, { size: 16 })
25494
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.LogOut, { size: 16 })
25313
25495
  }
25314
25496
  )
25315
25497
  ] })
@@ -25359,7 +25541,7 @@ var init_conversation_drawer = __esm({
25359
25541
  },
25360
25542
  sx: { color: theme.palette.error.main },
25361
25543
  children: [
25362
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.Trash2, { size: 16, color: theme.palette.error.main }) }),
25544
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Trash2, { size: 16, color: theme.palette.error.main }) }),
25363
25545
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_material25.ListItemText, { children: "Clear All Conversations" })
25364
25546
  ]
25365
25547
  }
@@ -25398,13 +25580,13 @@ var init_conversation_drawer = __esm({
25398
25580
  });
25399
25581
 
25400
25582
  // src/chat/enhanced-mobile-conversations-modal.tsx
25401
- var import_react35, import_material26, import_lucide_react12, import_styles17, import_jsx_runtime28, BANDIT_AVATAR2, coerceOptionalString2, deriveInitials2, EnhancedMobileConversationsModal, enhanced_mobile_conversations_modal_default;
25583
+ var import_react35, import_material26, import_lucide_react13, import_styles17, import_jsx_runtime28, BANDIT_AVATAR2, coerceOptionalString2, deriveInitials2, EnhancedMobileConversationsModal, enhanced_mobile_conversations_modal_default;
25402
25584
  var init_enhanced_mobile_conversations_modal = __esm({
25403
25585
  "src/chat/enhanced-mobile-conversations-modal.tsx"() {
25404
25586
  "use strict";
25405
25587
  import_react35 = require("react");
25406
25588
  import_material26 = require("@mui/material");
25407
- import_lucide_react12 = require("lucide-react");
25589
+ import_lucide_react13 = require("lucide-react");
25408
25590
  import_styles17 = require("@mui/material/styles");
25409
25591
  init_conversationStore();
25410
25592
  init_projectStore();
@@ -25847,7 +26029,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
25847
26029
  }
25848
26030
  }
25849
26031
  },
25850
- children: syncStatus === "error" ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.CircleAlert, {}) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.RefreshCw, {})
26032
+ children: syncStatus === "error" ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.CircleAlert, {}) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.RefreshCw, {})
25851
26033
  }
25852
26034
  ),
25853
26035
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -25856,7 +26038,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
25856
26038
  onClick: () => setMemoryModalOpen(true),
25857
26039
  "aria-label": "Memory",
25858
26040
  sx: { color: theme.palette.text.secondary },
25859
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Brain, {})
26041
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Brain, {})
25860
26042
  }
25861
26043
  ),
25862
26044
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -25864,7 +26046,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
25864
26046
  {
25865
26047
  onClick: () => setProjectManagementOpen(true),
25866
26048
  sx: { color: theme.palette.text.secondary },
25867
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Folder, {})
26049
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Folder, {})
25868
26050
  }
25869
26051
  ),
25870
26052
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -25872,7 +26054,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
25872
26054
  {
25873
26055
  onClick: handleMenuOpen,
25874
26056
  sx: { color: theme.palette.text.secondary },
25875
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.MoreVertical, {})
26057
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.MoreVertical, {})
25876
26058
  }
25877
26059
  ),
25878
26060
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -25880,7 +26062,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
25880
26062
  {
25881
26063
  onClick: onClose,
25882
26064
  sx: { color: theme.palette.text.secondary },
25883
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.X, {})
26065
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.X, {})
25884
26066
  }
25885
26067
  )
25886
26068
  ] })
@@ -25896,7 +26078,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
25896
26078
  onChange: (e) => setSearchQuery(e.target.value),
25897
26079
  variant: "outlined",
25898
26080
  InputProps: {
25899
- startAdornment: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.InputAdornment, { position: "start", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Search, { size: 16, color: theme.palette.text.secondary }) }),
26081
+ startAdornment: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.InputAdornment, { position: "start", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Search, { size: 16, color: theme.palette.text.secondary }) }),
25900
26082
  endAdornment: searchQuery && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.InputAdornment, { position: "end", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
25901
26083
  import_material26.IconButton,
25902
26084
  {
@@ -25904,7 +26086,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
25904
26086
  size: "small",
25905
26087
  edge: "end",
25906
26088
  sx: { color: theme.palette.text.secondary },
25907
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.X, { size: 16 })
26089
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.X, { size: 16 })
25908
26090
  }
25909
26091
  ) })
25910
26092
  }
@@ -26060,7 +26242,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26060
26242
  justifyContent: "center",
26061
26243
  flexShrink: 0
26062
26244
  },
26063
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Folder, { size: 16, color: theme.palette.success.main })
26245
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Folder, { size: 16, color: theme.palette.success.main })
26064
26246
  }
26065
26247
  ),
26066
26248
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -26071,7 +26253,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26071
26253
  children: "New Project"
26072
26254
  }
26073
26255
  ),
26074
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.IconButton, { size: "small", sx: { color: theme.palette.success.main }, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Plus, { size: 16 }) })
26256
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.IconButton, { size: "small", sx: { color: theme.palette.success.main }, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Plus, { size: 16 }) })
26075
26257
  ]
26076
26258
  }
26077
26259
  ),
@@ -26091,7 +26273,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26091
26273
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.Divider, { sx: { flex: 1, opacity: 0.6 } }),
26092
26274
  /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_material26.Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
26093
26275
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
26094
- import_lucide_react12.Inbox,
26276
+ import_lucide_react13.Inbox,
26095
26277
  {
26096
26278
  size: 14,
26097
26279
  color: theme.palette.text.disabled,
@@ -26286,7 +26468,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26286
26468
  createNewConversation();
26287
26469
  onClose();
26288
26470
  },
26289
- startIcon: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Plus, { size: 18 }),
26471
+ startIcon: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Plus, { size: 18 }),
26290
26472
  sx: {
26291
26473
  pointerEvents: "auto",
26292
26474
  textTransform: "none",
@@ -26377,7 +26559,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26377
26559
  border: `1px solid ${(0, import_styles17.alpha)(theme.palette.divider, 0.8)}`,
26378
26560
  color: theme.palette.text.secondary
26379
26561
  },
26380
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.House, { size: 16 })
26562
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.House, { size: 16 })
26381
26563
  }
26382
26564
  ),
26383
26565
  user2 && showLimitedAdminPanel() && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -26396,7 +26578,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26396
26578
  border: `1px solid ${(0, import_styles17.alpha)(theme.palette.divider, 0.8)}`,
26397
26579
  color: theme.palette.text.secondary
26398
26580
  },
26399
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.SlidersHorizontal, { size: 16 })
26581
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.SlidersHorizontal, { size: 16 })
26400
26582
  }
26401
26583
  ),
26402
26584
  user2 && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
@@ -26414,7 +26596,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26414
26596
  border: `1px solid ${(0, import_styles17.alpha)(theme.palette.divider, 0.8)}`,
26415
26597
  color: theme.palette.text.secondary
26416
26598
  },
26417
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Settings, { size: 16 })
26599
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Settings, { size: 16 })
26418
26600
  }
26419
26601
  ),
26420
26602
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -26435,7 +26617,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26435
26617
  color: theme.palette.error.main,
26436
26618
  "&:hover": { bgcolor: (0, import_styles17.alpha)(theme.palette.error.main, 0.1) }
26437
26619
  },
26438
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.LogOut, { size: 16 })
26620
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.LogOut, { size: 16 })
26439
26621
  }
26440
26622
  )
26441
26623
  ] })
@@ -26488,7 +26670,7 @@ var init_enhanced_mobile_conversations_modal = __esm({
26488
26670
  disabled: visibleConversationCount === 0,
26489
26671
  sx: { color: theme.palette.error.main },
26490
26672
  children: [
26491
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.Trash2, { size: 16, color: theme.palette.error.main }) }),
26673
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Trash2, { size: 16, color: theme.palette.error.main }) }),
26492
26674
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_material26.ListItemText, { children: "Clear All Conversations" })
26493
26675
  ]
26494
26676
  }
@@ -30155,13 +30337,13 @@ var init_feedback = __esm({
30155
30337
  });
30156
30338
 
30157
30339
  // src/components/feedback/FeedbackButton.tsx
30158
- var import_react38, import_material31, import_lucide_react13, import_jsx_runtime32, FeedbackButton;
30340
+ var import_react38, import_material31, import_lucide_react14, import_jsx_runtime32, FeedbackButton;
30159
30341
  var init_FeedbackButton = __esm({
30160
30342
  "src/components/feedback/FeedbackButton.tsx"() {
30161
30343
  "use strict";
30162
30344
  import_react38 = require("react");
30163
30345
  import_material31 = require("@mui/material");
30164
- import_lucide_react13 = require("lucide-react");
30346
+ import_lucide_react14 = require("lucide-react");
30165
30347
  init_feedback();
30166
30348
  import_jsx_runtime32 = require("react/jsx-runtime");
30167
30349
  FeedbackButton = ({
@@ -30185,7 +30367,7 @@ var init_FeedbackButton = __esm({
30185
30367
  import_material31.Button,
30186
30368
  {
30187
30369
  variant: "outlined",
30188
- startIcon: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react13.MessageCircle, {}),
30370
+ startIcon: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react14.MessageCircle, {}),
30189
30371
  onClick: handleOpen,
30190
30372
  className,
30191
30373
  size,
@@ -30214,7 +30396,7 @@ var init_FeedbackButton = __esm({
30214
30396
  transform: "translateY(-1px)"
30215
30397
  }
30216
30398
  },
30217
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react13.MessageCircle, {})
30399
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react14.MessageCircle, {})
30218
30400
  }
30219
30401
  ) }),
30220
30402
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
@@ -30273,7 +30455,7 @@ var init_FeedbackButton = __esm({
30273
30455
  }
30274
30456
  }
30275
30457
  },
30276
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react13.MessageCircle, {})
30458
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react14.MessageCircle, {})
30277
30459
  }
30278
30460
  )
30279
30461
  }
@@ -39281,7 +39463,7 @@ init_useFeatures();
39281
39463
  // src/components/shared/ProcessingOverlay.tsx
39282
39464
  var import_react55 = require("react");
39283
39465
  var import_material46 = require("@mui/material");
39284
- var import_lucide_react14 = require("lucide-react");
39466
+ var import_lucide_react15 = require("lucide-react");
39285
39467
  var import_jsx_runtime46 = require("react/jsx-runtime");
39286
39468
  var ninjaFloat = import_material46.keyframes`
39287
39469
  0%, 100% { transform: translateY(0px) rotate(0deg); }
@@ -39306,28 +39488,28 @@ var defaultSteps = [
39306
39488
  id: "upload",
39307
39489
  title: "Uploading to Cloud",
39308
39490
  description: "Our digital ninjas are securely transferring your file...",
39309
- icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react14.CloudUpload, {}),
39491
+ icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react15.CloudUpload, {}),
39310
39492
  duration: 5
39311
39493
  },
39312
39494
  {
39313
39495
  id: "analyze",
39314
39496
  title: "AI Analysis",
39315
39497
  description: "Advanced AI robots are reading and understanding your content...",
39316
- icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react14.Brain, {}),
39498
+ icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react15.Brain, {}),
39317
39499
  duration: 15
39318
39500
  },
39319
39501
  {
39320
39502
  id: "embed",
39321
39503
  title: "Making It Searchable",
39322
39504
  description: "We turn the content into a private, searchable index...",
39323
- icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react14.Cpu, {}),
39505
+ icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react15.Cpu, {}),
39324
39506
  duration: 10
39325
39507
  },
39326
39508
  {
39327
39509
  id: "optimize",
39328
39510
  title: "Optimizing Search",
39329
39511
  description: "Organizing everything for quick, reliable answers...",
39330
- icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react14.Sparkles, {}),
39512
+ icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react15.Sparkles, {}),
39331
39513
  duration: 8
39332
39514
  }
39333
39515
  ];
@@ -39473,7 +39655,7 @@ var ProcessingOverlay = ({
39473
39655
  animation: `${pulse} 3s ease-in-out infinite`,
39474
39656
  color: theme.palette.secondary.main
39475
39657
  },
39476
- children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react14.Bot, {})
39658
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react15.Bot, {})
39477
39659
  }
39478
39660
  ),
39479
39661
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
@@ -39487,7 +39669,7 @@ var ProcessingOverlay = ({
39487
39669
  color: theme.palette.primary.main,
39488
39670
  animationDelay: "1s"
39489
39671
  },
39490
- children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react14.Zap, {})
39672
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react15.Zap, {})
39491
39673
  }
39492
39674
  )
39493
39675
  ] }),
@@ -46472,7 +46654,7 @@ init_streaming_tts();
46472
46654
 
46473
46655
  // src/modals/SubscriptionExpiredModal.tsx
46474
46656
  var import_material56 = require("@mui/material");
46475
- var import_lucide_react15 = require("lucide-react");
46657
+ var import_lucide_react16 = require("lucide-react");
46476
46658
  var import_jsx_runtime56 = require("react/jsx-runtime");
46477
46659
  var SubscriptionExpiredModal = ({
46478
46660
  open,
@@ -46511,7 +46693,7 @@ var SubscriptionExpiredModal = ({
46511
46693
  },
46512
46694
  children: [
46513
46695
  /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_material56.DialogTitle, { sx: { textAlign: "center", pb: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_material56.Box, { sx: { display: "flex", alignItems: "center", justifyContent: "center", gap: 1, mb: 1 }, children: [
46514
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react15.AlertTriangle, { size: 32, color: "warning" }),
46696
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react16.AlertTriangle, { size: 32, color: "warning" }),
46515
46697
  /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_material56.Typography, { variant: "h5", component: "span", fontWeight: "bold", children: "Subscription Expired" })
46516
46698
  ] }) }),
46517
46699
  /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_material56.DialogContent, { sx: { pt: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_material56.Stack, { spacing: 2, children: [
@@ -46539,7 +46721,7 @@ var SubscriptionExpiredModal = ({
46539
46721
  {
46540
46722
  onClick: handleNavigateHome,
46541
46723
  variant: "outlined",
46542
- startIcon: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react15.Home, {}),
46724
+ startIcon: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react16.Home, {}),
46543
46725
  size: "large",
46544
46726
  sx: { minWidth: 140 },
46545
46727
  children: "Go Home"
@@ -46550,7 +46732,7 @@ var SubscriptionExpiredModal = ({
46550
46732
  {
46551
46733
  onClick: handleManageSubscription,
46552
46734
  variant: "contained",
46553
- startIcon: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react15.CreditCard, {}),
46735
+ startIcon: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react16.CreditCard, {}),
46554
46736
  size: "large",
46555
46737
  color: "primary",
46556
46738
  sx: { minWidth: 140 },