local-operator-ui 0.10.2 → 0.10.4

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 (49) hide show
  1. package/out/main/index.jsc +0 -0
  2. package/out/preload/index.jsc +0 -0
  3. package/out/renderer/assets/{_basePickBy-C1pUk9It.js → _basePickBy-HBztaYeO.js} +2 -2
  4. package/out/renderer/assets/{_baseUniq-BhM_jJyj.js → _baseUniq-Dz-_QJw-.js} +1 -1
  5. package/out/renderer/assets/{arc-GsaK0m8I.js → arc-BbFClCF-.js} +1 -1
  6. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-DZu4O8mc.js → architectureDiagram-IEHRJDOE-DzXvnk9f.js} +8 -8
  7. package/out/renderer/assets/{blockDiagram-JOT3LUYC-YjWXho8z.js → blockDiagram-JOT3LUYC-boa_T8E1.js} +6 -6
  8. package/out/renderer/assets/{c4Diagram-VJAJSXHY-De0QKOfp.js → c4Diagram-VJAJSXHY-CUWQVTBw.js} +3 -3
  9. package/out/renderer/assets/{channel-BYEpM1hE.js → channel-BnLrRohu.js} +1 -1
  10. package/out/renderer/assets/{chunk-4BMEZGHF-D_9bHgmZ.js → chunk-4BMEZGHF-C5nHFO1H.js} +1 -1
  11. package/out/renderer/assets/{chunk-A2AXSNBT-5l5F3-rU.js → chunk-A2AXSNBT-YCzWQkj3.js} +2 -2
  12. package/out/renderer/assets/{chunk-AEK57VVT-CbLZCuOU.js → chunk-AEK57VVT-RSKL44QH.js} +2 -2
  13. package/out/renderer/assets/{chunk-D6G4REZN-DWyr2hm7.js → chunk-D6G4REZN-y_oEq-tO.js} +1 -1
  14. package/out/renderer/assets/{chunk-RZ5BOZE2-Bk83POAM.js → chunk-RZ5BOZE2-Bh5Vf1hk.js} +1 -1
  15. package/out/renderer/assets/{chunk-XZIHB7SX-gR6XMwdC.js → chunk-XZIHB7SX-BEC6jdKb.js} +1 -1
  16. package/out/renderer/assets/{classDiagram-GIVACNV2-OHQU5BtB.js → classDiagram-GIVACNV2-D_MSeJ_6.js} +4 -4
  17. package/out/renderer/assets/{classDiagram-v2-COTLJTTW-OHQU5BtB.js → classDiagram-v2-COTLJTTW-D_MSeJ_6.js} +4 -4
  18. package/out/renderer/assets/{clone-B7OBVcUT.js → clone-DTo9NJBP.js} +1 -1
  19. package/out/renderer/assets/{dagre-OKDRZEBW-BxuIa4zh.js → dagre-OKDRZEBW-BRmuP5ne.js} +7 -7
  20. package/out/renderer/assets/{diagram-SSKATNLV-DKenVGfy.js → diagram-SSKATNLV-lmqZ5zjv.js} +7 -7
  21. package/out/renderer/assets/{diagram-VNBRO52H-Dk2WOxg5.js → diagram-VNBRO52H-Bxh5b-em.js} +7 -7
  22. package/out/renderer/assets/{erDiagram-Q7BY3M3F-EjRTdPk0.js → erDiagram-Q7BY3M3F-B_3VyDfP.js} +4 -4
  23. package/out/renderer/assets/{flowDiagram-4HSFHLVR-b1Ugcxyi.js → flowDiagram-4HSFHLVR-DO9xIDx0.js} +4 -4
  24. package/out/renderer/assets/{fonts-DlbYGWfq.js → fonts-Bb3Axuvj.js} +81 -70
  25. package/out/renderer/assets/{ganttDiagram-APWFNJXF-BYm6m2kF.js → ganttDiagram-APWFNJXF-BK37zBtS.js} +2 -2
  26. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-BTKdzXBX.js → gitGraphDiagram-7IBYFJ6S-Jz6QBGPa.js} +8 -8
  27. package/out/renderer/assets/{graph-CWOikQzs.js → graph-DzxdEvr-.js} +2 -2
  28. package/out/renderer/assets/{index-DWmNhY0q.js → index-9ll8evaS.js} +2 -2
  29. package/out/renderer/assets/{index-DUscOlgJ.js → index-BcAunMPD.js} +2 -2
  30. package/out/renderer/assets/{index-a6JOvPtI.js → index-DSUSTpnZ.js} +2013 -1006
  31. package/out/renderer/assets/{infoDiagram-PH2N3AL5-CzKeKjqX.js → infoDiagram-PH2N3AL5-BrTEa3Dg.js} +6 -6
  32. package/out/renderer/assets/{installer-DiekTv0c.js → installer-2u6KIViI.js} +1 -12
  33. package/out/renderer/assets/{journeyDiagram-U35MCT3I-CoTNgbPQ.js → journeyDiagram-U35MCT3I-cp-7j6JH.js} +4 -4
  34. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-C99jAkvb.js → kanban-definition-NDS4AKOZ-DT0Ds4_6.js} +2 -2
  35. package/out/renderer/assets/{layout-CJybZnOl.js → layout-RVhCHjA1.js} +4 -4
  36. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-BahSAi8Q.js → mindmap-definition-ALO5MXBD-B8ntf-YJ.js} +2 -2
  37. package/out/renderer/assets/{pieDiagram-IB7DONF6-BNWxfAYp.js → pieDiagram-IB7DONF6-D_aSId8t.js} +8 -8
  38. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-D4CXSiul.js → quadrantDiagram-7GDLP6J5-VtpoaDCW.js} +2 -2
  39. package/out/renderer/assets/{radar-MK3ICKWK-CfV3aHGj.js → radar-MK3ICKWK-Bvvn6bXt.js} +4 -4
  40. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-B2P_I3bB.js → requirementDiagram-KVF5MWMF-DmQX7SmX.js} +3 -3
  41. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-B7s67NDQ.js → sankeyDiagram-QLVOVGJD-DH2kTl35.js} +2 -2
  42. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-BI1s6_9f.js → sequenceDiagram-X6HHIX6F-Cy6jqgLY.js} +4 -4
  43. package/out/renderer/assets/{stateDiagram-DGXRK772-CuGuCLow.js → stateDiagram-DGXRK772-B5sjzMc3.js} +8 -8
  44. package/out/renderer/assets/{stateDiagram-v2-YXO3MK2T-Cf9Nvzou.js → stateDiagram-v2-YXO3MK2T-CCntK586.js} +4 -4
  45. package/out/renderer/assets/{timeline-definition-BDJGKUSR-DF5bq-1Q.js → timeline-definition-BDJGKUSR-B24Z4NA2.js} +3 -3
  46. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-B28wS5w8.js → xychartDiagram-VJFVF3MP-gjn-8kXQ.js} +2 -2
  47. package/out/renderer/index.html +2 -2
  48. package/out/renderer/installer.html +2 -2
  49. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-DWmNhY0q.js","./fonts-DlbYGWfq.js","./fonts-B9KBGB-g.css","./index-DUscOlgJ.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js","./dagre-OKDRZEBW-BxuIa4zh.js","./graph-CWOikQzs.js","./_baseUniq-BhM_jJyj.js","./layout-CJybZnOl.js","./_basePickBy-C1pUk9It.js","./clone-B7OBVcUT.js","./c4Diagram-VJAJSXHY-De0QKOfp.js","./chunk-D6G4REZN-DWyr2hm7.js","./flowDiagram-4HSFHLVR-b1Ugcxyi.js","./chunk-RZ5BOZE2-Bk83POAM.js","./channel-BYEpM1hE.js","./erDiagram-Q7BY3M3F-EjRTdPk0.js","./gitGraphDiagram-7IBYFJ6S-BTKdzXBX.js","./chunk-4BMEZGHF-D_9bHgmZ.js","./chunk-XZIHB7SX-gR6XMwdC.js","./radar-MK3ICKWK-CfV3aHGj.js","./ganttDiagram-APWFNJXF-BYm6m2kF.js","./infoDiagram-PH2N3AL5-CzKeKjqX.js","./pieDiagram-IB7DONF6-BNWxfAYp.js","./arc-GsaK0m8I.js","./quadrantDiagram-7GDLP6J5-D4CXSiul.js","./xychartDiagram-VJFVF3MP-B28wS5w8.js","./requirementDiagram-KVF5MWMF-B2P_I3bB.js","./sequenceDiagram-X6HHIX6F-BI1s6_9f.js","./classDiagram-GIVACNV2-OHQU5BtB.js","./chunk-A2AXSNBT-5l5F3-rU.js","./classDiagram-v2-COTLJTTW-OHQU5BtB.js","./stateDiagram-DGXRK772-CuGuCLow.js","./chunk-AEK57VVT-CbLZCuOU.js","./stateDiagram-v2-YXO3MK2T-Cf9Nvzou.js","./journeyDiagram-U35MCT3I-CoTNgbPQ.js","./timeline-definition-BDJGKUSR-DF5bq-1Q.js","./mindmap-definition-ALO5MXBD-BahSAi8Q.js","./cytoscape.esm-C0AOj4uS.js","./kanban-definition-NDS4AKOZ-C99jAkvb.js","./sankeyDiagram-QLVOVGJD-B7s67NDQ.js","./diagram-VNBRO52H-Dk2WOxg5.js","./diagram-SSKATNLV-DKenVGfy.js","./blockDiagram-JOT3LUYC-YjWXho8z.js","./architectureDiagram-IEHRJDOE-DZu4O8mc.js"])))=>i.map(i=>d[i]);
2
- import { h as createStyled, i as resolveProps, l as useTheme, m as useTheme$1, r as reactExports, n as React, o as useEnhancedEffect$1, p as clsx, q as useForkRef$1, t as extendSxProp, j as jsxRuntimeExports, v as handleBreakpoints, w as resolveBreakpointValues, x as createUnarySpacing, y as deepmerge, z as mergeBreakpointsInOrder, A as composeClasses$1, F as generateUtilityClass$1, G as createTheme$1, I as getValue$1, f as React$1, J as requireReactDom, g as getDefaultExportFromCjs, K as defaultTheme$2, L as THEME_ID, M as generateUtilityClasses$1, N as useDefaultProps, s as styled$1, O as capitalize$1, P as memoTheme, _ as _inheritsLoose, Q as _objectWithoutPropertiesLoose$k, S as TransitionGroupContext, U as _extends$w, V as duration, u as useTheme$2, W as useTimeout$1, X as useId$1, Y as ButtonBase, b as alpha$1, Z as createSimplePaletteValueFilter, $ as CircularProgress, a0 as Paper, a1 as darken$1, a2 as lighten$1, a3 as useEventCallback$1, a4 as useRtl, a5 as globalCss, a6 as formatMuiErrorMessage$1, a7 as rootShouldForwardProp, T as Typography, a8 as css$1, k as keyframes, a9 as getPath$2, aa as isFocusVisible, ab as typographyClasses, ac as slotShouldForwardProp, ad as clamp, ae as emphasize, af as Timeout$1, c as createLucideIcon, a as Button, B as Box, ag as FontAwesomeIcon, ah as faExclamationTriangle, D as DEFAULT_THEME, ai as faChevronLeft, aj as faChevronRight, ak as faRobot, al as faCheck, am as faTimes, an as faEraser, ao as faPen, ap as faFileImport, aq as faUpload, ar as GlobalStyles, as as requireReact, at as faComment, au as faSave, av as faEdit, aw as faTrashAlt, ax as faComments, ay as faInfoCircle, az as faGear, aA as faPlus, aB as faServer, aC as faStar, aD as faTag, aE as faIdCard, aF as faCalendarAlt, aG as faCodeBranch, aH as faShieldAlt, aI as faArrowLeft, aJ as faClock, aK as faSliders, aL as faTrash, aM as faHome, aN as faDownload, aO as faFileAlt, aP as faDesktop, aQ as faImage, aR as faMusic, aS as faVideo, aT as faLaptop, aU as faUsers, aV as faDatabase, aW as faBoxOpen, aX as faBook, aY as faHdd, aZ as faBox, a_ as faArchive, a$ as faNetworkWired, b0 as faFolder, b1 as faFolderOpen, b2 as faFolderTree, b3 as faArrowDown, b4 as faPaperclip, b5 as faStop, b6 as faPaperPlane, b7 as faFile, b8 as faExclamationCircle, b9 as faChevronDown, ba as isDevelopmentMode, bb as faCommentSlash, bc as faArrowRight, bd as faBrain, be as faWandMagicSparkles, bf as faExternalLinkAlt, bg as faKey, bh as radientTheme, bi as faGlobe, bj as faSearch, bk as PropTypes, bl as shouldForwardProp, bm as TransitionGroup, bn as commonjsGlobal, bo as faLock, bp as faPuzzlePiece, H as HardDrive, bq as faSignOut, br as themes$1, bs as faMoon, bt as faSun, bu as faHexagonNodes, bv as faSkull, bw as faLeaf, bx as faCode, by as faMountain, bz as faFire, bA as faIcicles, bB as faBolt, bC as faAdjust, bD as faWaveSquare, bE as faUser, bF as faEnvelope, bG as faHistory, bH as faListAlt, bI as faCreditCard, bJ as faPlusCircle, bK as faChartLine, bL as faShield, bM as library$1, bN as icons$1, C as CssBaseline, e as ThemeProvider$1, d as getTheme, R as ReactDOM$1, E as ErrorBoundary } from "./fonts-DlbYGWfq.js";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-9ll8evaS.js","./fonts-Bb3Axuvj.js","./fonts-B9KBGB-g.css","./index-BcAunMPD.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js","./dagre-OKDRZEBW-BRmuP5ne.js","./graph-DzxdEvr-.js","./_baseUniq-Dz-_QJw-.js","./layout-RVhCHjA1.js","./_basePickBy-HBztaYeO.js","./clone-DTo9NJBP.js","./c4Diagram-VJAJSXHY-CUWQVTBw.js","./chunk-D6G4REZN-y_oEq-tO.js","./flowDiagram-4HSFHLVR-DO9xIDx0.js","./chunk-RZ5BOZE2-Bh5Vf1hk.js","./channel-BnLrRohu.js","./erDiagram-Q7BY3M3F-B_3VyDfP.js","./gitGraphDiagram-7IBYFJ6S-Jz6QBGPa.js","./chunk-4BMEZGHF-C5nHFO1H.js","./chunk-XZIHB7SX-BEC6jdKb.js","./radar-MK3ICKWK-Bvvn6bXt.js","./ganttDiagram-APWFNJXF-BK37zBtS.js","./infoDiagram-PH2N3AL5-BrTEa3Dg.js","./pieDiagram-IB7DONF6-D_aSId8t.js","./arc-BbFClCF-.js","./quadrantDiagram-7GDLP6J5-VtpoaDCW.js","./xychartDiagram-VJFVF3MP-gjn-8kXQ.js","./requirementDiagram-KVF5MWMF-DmQX7SmX.js","./sequenceDiagram-X6HHIX6F-Cy6jqgLY.js","./classDiagram-GIVACNV2-D_MSeJ_6.js","./chunk-A2AXSNBT-YCzWQkj3.js","./classDiagram-v2-COTLJTTW-D_MSeJ_6.js","./stateDiagram-DGXRK772-B5sjzMc3.js","./chunk-AEK57VVT-RSKL44QH.js","./stateDiagram-v2-YXO3MK2T-CCntK586.js","./journeyDiagram-U35MCT3I-cp-7j6JH.js","./timeline-definition-BDJGKUSR-B24Z4NA2.js","./mindmap-definition-ALO5MXBD-B8ntf-YJ.js","./cytoscape.esm-C0AOj4uS.js","./kanban-definition-NDS4AKOZ-DT0Ds4_6.js","./sankeyDiagram-QLVOVGJD-DH2kTl35.js","./diagram-VNBRO52H-Bxh5b-em.js","./diagram-SSKATNLV-lmqZ5zjv.js","./blockDiagram-JOT3LUYC-boa_T8E1.js","./architectureDiagram-IEHRJDOE-DzXvnk9f.js"])))=>i.map(i=>d[i]);
2
+ import { i as createStyled, l as resolveProps, m as useTheme, n as useTheme$1, r as reactExports, o as React, p as useEnhancedEffect$1, q as clsx, t as useForkRef$1, v as extendSxProp, j as jsxRuntimeExports, w as handleBreakpoints, x as resolveBreakpointValues, y as createUnarySpacing, z as deepmerge, A as mergeBreakpointsInOrder, F as composeClasses$1, G as generateUtilityClass$1, I as createTheme$1, J as getValue$1, h as React$1, K as requireReactDom, g as getDefaultExportFromCjs, L as defaultTheme$2, M as THEME_ID, N as generateUtilityClasses$1, O as useDefaultProps, s as styled$1, P as capitalize$1, Q as memoTheme, _ as _inheritsLoose, S as _objectWithoutPropertiesLoose$k, U as TransitionGroupContext, V as _extends$w, W as duration, u as useTheme$2, X as useTimeout$1, Y as useId$1, Z as ButtonBase, b as alpha$1, $ as createSimplePaletteValueFilter, a0 as CircularProgress, a1 as Paper, a2 as darken$1, a3 as lighten$1, a4 as useEventCallback$1, a5 as useRtl, a6 as globalCss, a7 as formatMuiErrorMessage$1, a8 as rootShouldForwardProp, T as Typography, a9 as css$1, k as keyframes, aa as getPath$2, ab as isFocusVisible, ac as typographyClasses, ad as slotShouldForwardProp, ae as clamp, af as emphasize, ag as Timeout$1, c as createLucideIcon, a as Button, B as Box, ah as FontAwesomeIcon, ai as faExclamationTriangle, D as DEFAULT_THEME, aj as faChevronLeft, ak as faChevronRight, al as faRobot, am as faCheck, an as faTimes, ao as faEraser, ap as faPen, aq as faFileImport, ar as faUpload, as as GlobalStyles, at as requireReact, au as faComment, av as faSave, aw as faEdit, ax as faTrashAlt, ay as faInfoCircle, az as faGear, aA as faPlus, aB as faServer, aC as faStar, aD as faTag, aE as faIdCard, aF as faCalendarAlt, aG as faCodeBranch, aH as faShieldAlt, aI as faArrowLeft, aJ as faClock, C as Code, aK as faSliders, aL as faTrash, aM as faHome, aN as faDownload, aO as faFileAlt, aP as faDesktop, aQ as faImage, aR as faMusic, aS as faVideo, aT as faLaptop, aU as faUsers, aV as faDatabase, aW as faBoxOpen, aX as faBook, aY as faHdd, aZ as faBox, a_ as faArchive, a$ as faNetworkWired, b0 as faFolder, b1 as faFolderOpen, b2 as faFolderTree, b3 as faArrowDown, b4 as faPaperclip, b5 as faStop, b6 as faPaperPlane, b7 as faFile, b8 as faExclamationCircle, b9 as faChevronDown, ba as isDevelopmentMode, bb as faCommentSlash, bc as faArrowRight, bd as faBrain, be as faWandMagicSparkles, bf as faExternalLinkAlt, bg as faKey, bh as radientTheme, bi as faGlobe, bj as faSearch, bk as PropTypes, bl as shouldForwardProp, bm as TransitionGroup, bn as commonjsGlobal, bo as faLock, bp as faPuzzlePiece, H as HardDrive, bq as faSignOut, br as themes$1, bs as faMoon, bt as faSun, bu as faHexagonNodes, bv as faSkull, bw as faLeaf, bx as faCode, by as faMountain, bz as faFire, bA as faIcicles, bB as faBolt, bC as faAdjust, bD as faWaveSquare, bE as faUser, bF as faEnvelope, bG as faHistory, bH as faListAlt, bI as faCreditCard, bJ as faPlusCircle, bK as faChartLine, bL as faShield, bM as library$1, bN as icons$1, f as CssBaseline, e as ThemeProvider$1, d as getTheme, R as ReactDOM$1, E as ErrorBoundary } from "./fonts-Bb3Axuvj.js";
3
3
  const styled = createStyled();
4
4
  function getThemeProps(params) {
5
5
  const {
@@ -9099,7 +9099,7 @@ function getSvgIconUtilityClass(slot) {
9099
9099
  return generateUtilityClass$1("MuiSvgIcon", slot);
9100
9100
  }
9101
9101
  generateUtilityClasses$1("MuiSvgIcon", ["root", "colorPrimary", "colorSecondary", "colorAction", "colorError", "colorDisabled", "fontSizeInherit", "fontSizeSmall", "fontSizeMedium", "fontSizeLarge"]);
9102
- const useUtilityClasses$1s = (ownerState) => {
9102
+ const useUtilityClasses$1t = (ownerState) => {
9103
9103
  const {
9104
9104
  color: color2,
9105
9105
  fontSize,
@@ -9238,7 +9238,7 @@ const SvgIcon = /* @__PURE__ */ reactExports.forwardRef(function SvgIcon2(inProp
9238
9238
  if (!inheritViewBox) {
9239
9239
  more.viewBox = viewBox;
9240
9240
  }
9241
- const classes = useUtilityClasses$1s(ownerState);
9241
+ const classes = useUtilityClasses$1t(ownerState);
9242
9242
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(SvgIconRoot, {
9243
9243
  as: component,
9244
9244
  className: clsx(classes.root, className),
@@ -9752,7 +9752,7 @@ function getCollapseUtilityClass(slot) {
9752
9752
  return generateUtilityClass$1("MuiCollapse", slot);
9753
9753
  }
9754
9754
  generateUtilityClasses$1("MuiCollapse", ["root", "horizontal", "vertical", "entered", "hidden", "wrapper", "wrapperInner"]);
9755
- const useUtilityClasses$1r = (ownerState) => {
9755
+ const useUtilityClasses$1s = (ownerState) => {
9756
9756
  const {
9757
9757
  orientation,
9758
9758
  classes
@@ -9880,7 +9880,7 @@ const Collapse = /* @__PURE__ */ reactExports.forwardRef(function Collapse2(inPr
9880
9880
  orientation,
9881
9881
  collapsedSize: collapsedSizeProp
9882
9882
  };
9883
- const classes = useUtilityClasses$1r(ownerState);
9883
+ const classes = useUtilityClasses$1s(ownerState);
9884
9884
  const theme2 = useTheme$2();
9885
9885
  const timer2 = useTimeout$1();
9886
9886
  const wrapperRef = reactExports.useRef(null);
@@ -10095,7 +10095,7 @@ function getIconButtonUtilityClass(slot) {
10095
10095
  return generateUtilityClass$1("MuiIconButton", slot);
10096
10096
  }
10097
10097
  const iconButtonClasses = generateUtilityClasses$1("MuiIconButton", ["root", "disabled", "colorInherit", "colorPrimary", "colorSecondary", "colorError", "colorInfo", "colorSuccess", "colorWarning", "edgeStart", "edgeEnd", "sizeSmall", "sizeMedium", "sizeLarge", "loading", "loadingIndicator", "loadingWrapper"]);
10098
- const useUtilityClasses$1q = (ownerState) => {
10098
+ const useUtilityClasses$1r = (ownerState) => {
10099
10099
  const {
10100
10100
  classes,
10101
10101
  disabled,
@@ -10281,7 +10281,7 @@ const IconButton = /* @__PURE__ */ reactExports.forwardRef(function IconButton2(
10281
10281
  loadingIndicator,
10282
10282
  size
10283
10283
  };
10284
- const classes = useUtilityClasses$1q(ownerState);
10284
+ const classes = useUtilityClasses$1r(ownerState);
10285
10285
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(IconButtonRoot, {
10286
10286
  id: loading ? loadingId : idProp,
10287
10287
  className: clsx(classes.root, className),
@@ -10320,7 +10320,7 @@ const InfoOutlinedIcon = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("pa
10320
10320
  const ClearIcon$1 = createSvgIcon(/* @__PURE__ */ jsxRuntimeExports.jsx("path", {
10321
10321
  d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
10322
10322
  }), "Close");
10323
- const useUtilityClasses$1p = (ownerState) => {
10323
+ const useUtilityClasses$1q = (ownerState) => {
10324
10324
  const {
10325
10325
  variant,
10326
10326
  color: color2,
@@ -10475,7 +10475,7 @@ const Alert = /* @__PURE__ */ reactExports.forwardRef(function Alert2(inProps, r
10475
10475
  variant,
10476
10476
  colorSeverity: color2 || severity
10477
10477
  };
10478
- const classes = useUtilityClasses$1p(ownerState);
10478
+ const classes = useUtilityClasses$1q(ownerState);
10479
10479
  const externalForwardedProps = {
10480
10480
  slots: {
10481
10481
  closeButton: components.CloseButton,
@@ -12828,7 +12828,7 @@ function resolveAnchorEl$1(anchorEl) {
12828
12828
  function isHTMLElement(element2) {
12829
12829
  return element2.nodeType !== void 0;
12830
12830
  }
12831
- const useUtilityClasses$1o = (ownerState) => {
12831
+ const useUtilityClasses$1p = (ownerState) => {
12832
12832
  const {
12833
12833
  classes
12834
12834
  } = ownerState;
@@ -12929,7 +12929,7 @@ const PopperTooltip = /* @__PURE__ */ reactExports.forwardRef(function PopperToo
12929
12929
  if (TransitionProps !== null) {
12930
12930
  childProps.TransitionProps = TransitionProps;
12931
12931
  }
12932
- const classes = useUtilityClasses$1o(props2);
12932
+ const classes = useUtilityClasses$1p(props2);
12933
12933
  const Root = slots.root ?? "div";
12934
12934
  const rootProps = useSlotProps$1({
12935
12935
  elementType: Root,
@@ -13077,7 +13077,7 @@ function getListSubheaderUtilityClass(slot) {
13077
13077
  return generateUtilityClass$1("MuiListSubheader", slot);
13078
13078
  }
13079
13079
  generateUtilityClasses$1("MuiListSubheader", ["root", "colorPrimary", "colorInherit", "gutters", "inset", "sticky"]);
13080
- const useUtilityClasses$1n = (ownerState) => {
13080
+ const useUtilityClasses$1o = (ownerState) => {
13081
13081
  const {
13082
13082
  classes,
13083
13083
  color: color2,
@@ -13172,7 +13172,7 @@ const ListSubheader = /* @__PURE__ */ reactExports.forwardRef(function ListSubhe
13172
13172
  disableSticky,
13173
13173
  inset
13174
13174
  };
13175
- const classes = useUtilityClasses$1n(ownerState);
13175
+ const classes = useUtilityClasses$1o(ownerState);
13176
13176
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ListSubheaderRoot, {
13177
13177
  as: component,
13178
13178
  className: clsx(classes.root, className),
@@ -13191,7 +13191,7 @@ function getChipUtilityClass(slot) {
13191
13191
  return generateUtilityClass$1("MuiChip", slot);
13192
13192
  }
13193
13193
  const chipClasses = generateUtilityClasses$1("MuiChip", ["root", "sizeSmall", "sizeMedium", "colorDefault", "colorError", "colorInfo", "colorPrimary", "colorSecondary", "colorSuccess", "colorWarning", "disabled", "clickable", "clickableColorPrimary", "clickableColorSecondary", "deletable", "deletableColorPrimary", "deletableColorSecondary", "outlined", "filled", "outlinedPrimary", "outlinedSecondary", "filledPrimary", "filledSecondary", "avatar", "avatarSmall", "avatarMedium", "avatarColorPrimary", "avatarColorSecondary", "icon", "iconSmall", "iconMedium", "iconColorPrimary", "iconColorSecondary", "label", "labelSmall", "labelMedium", "deleteIcon", "deleteIconSmall", "deleteIconMedium", "deleteIconColorPrimary", "deleteIconColorSecondary", "deleteIconOutlinedColorPrimary", "deleteIconOutlinedColorSecondary", "deleteIconFilledColorPrimary", "deleteIconFilledColorSecondary", "focusVisible"]);
13194
- const useUtilityClasses$1m = (ownerState) => {
13194
+ const useUtilityClasses$1n = (ownerState) => {
13195
13195
  const {
13196
13196
  classes,
13197
13197
  disabled,
@@ -13582,7 +13582,7 @@ const Chip = /* @__PURE__ */ reactExports.forwardRef(function Chip2(inProps, ref
13582
13582
  clickable,
13583
13583
  variant
13584
13584
  };
13585
- const classes = useUtilityClasses$1m(ownerState);
13585
+ const classes = useUtilityClasses$1n(ownerState);
13586
13586
  const moreProps = component === ButtonBase ? {
13587
13587
  component: ComponentProp || "div",
13588
13588
  focusVisibleClassName: classes.focusVisible,
@@ -13850,7 +13850,7 @@ const inputOverridesResolver = (props2, styles2) => {
13850
13850
  } = props2;
13851
13851
  return [styles2.input, ownerState.size === "small" && styles2.inputSizeSmall, ownerState.multiline && styles2.inputMultiline, ownerState.type === "search" && styles2.inputTypeSearch, ownerState.startAdornment && styles2.inputAdornedStart, ownerState.endAdornment && styles2.inputAdornedEnd, ownerState.hiddenLabel && styles2.inputHiddenLabel];
13852
13852
  };
13853
- const useUtilityClasses$1l = (ownerState) => {
13853
+ const useUtilityClasses$1m = (ownerState) => {
13854
13854
  const {
13855
13855
  classes,
13856
13856
  color: color2,
@@ -14236,7 +14236,7 @@ const InputBase = /* @__PURE__ */ reactExports.forwardRef(function InputBase2(in
14236
14236
  startAdornment,
14237
14237
  type: type2
14238
14238
  };
14239
- const classes = useUtilityClasses$1l(ownerState);
14239
+ const classes = useUtilityClasses$1m(ownerState);
14240
14240
  const Root = slots.root || components.Root || InputBaseRoot;
14241
14241
  const rootProps = slotProps.root || componentsProps.root || {};
14242
14242
  const Input3 = slots.input || components.Input || InputBaseInput;
@@ -14329,7 +14329,7 @@ function getAutocompleteUtilityClass(slot) {
14329
14329
  }
14330
14330
  const autocompleteClasses = generateUtilityClasses$1("MuiAutocomplete", ["root", "expanded", "fullWidth", "focused", "focusVisible", "tag", "tagSizeSmall", "tagSizeMedium", "hasPopupIcon", "hasClearIcon", "inputRoot", "input", "inputFocused", "endAdornment", "clearIndicator", "popupIndicator", "popupIndicatorOpen", "popper", "popperDisablePortal", "paper", "listbox", "loading", "noOptions", "option", "groupLabel", "groupUl"]);
14331
14331
  var _ClearIcon, _ArrowDropDownIcon;
14332
- const useUtilityClasses$1k = (ownerState) => {
14332
+ const useUtilityClasses$1l = (ownerState) => {
14333
14333
  const {
14334
14334
  classes,
14335
14335
  disablePortal,
@@ -14825,7 +14825,7 @@ const Autocomplete = /* @__PURE__ */ reactExports.forwardRef(function Autocomple
14825
14825
  popupOpen,
14826
14826
  size
14827
14827
  };
14828
- const classes = useUtilityClasses$1k(ownerState);
14828
+ const classes = useUtilityClasses$1l(ownerState);
14829
14829
  const externalForwardedProps = {
14830
14830
  slots: {
14831
14831
  paper: PaperComponentProp,
@@ -15040,7 +15040,7 @@ function getAvatarUtilityClass(slot) {
15040
15040
  return generateUtilityClass$1("MuiAvatar", slot);
15041
15041
  }
15042
15042
  generateUtilityClasses$1("MuiAvatar", ["root", "colorDefault", "circular", "rounded", "square", "img", "fallback"]);
15043
- const useUtilityClasses$1j = (ownerState) => {
15043
+ const useUtilityClasses$1k = (ownerState) => {
15044
15044
  const {
15045
15045
  classes,
15046
15046
  variant,
@@ -15205,7 +15205,7 @@ const Avatar = /* @__PURE__ */ reactExports.forwardRef(function Avatar2(inProps,
15205
15205
  const hasImgNotFailing = hasImg && loaded !== "error";
15206
15206
  ownerState.colorDefault = !hasImgNotFailing;
15207
15207
  delete ownerState.ownerState;
15208
- const classes = useUtilityClasses$1j(ownerState);
15208
+ const classes = useUtilityClasses$1k(ownerState);
15209
15209
  const [ImgSlot, imgSlotProps] = useSlot("img", {
15210
15210
  className: classes.img,
15211
15211
  elementType: AvatarImg,
@@ -15366,7 +15366,7 @@ function getBackdropUtilityClass(slot) {
15366
15366
  return generateUtilityClass$1("MuiBackdrop", slot);
15367
15367
  }
15368
15368
  generateUtilityClasses$1("MuiBackdrop", ["root", "invisible"]);
15369
- const useUtilityClasses$1i = (ownerState) => {
15369
+ const useUtilityClasses$1j = (ownerState) => {
15370
15370
  const {
15371
15371
  classes,
15372
15372
  invisible
@@ -15429,7 +15429,7 @@ const Backdrop = /* @__PURE__ */ reactExports.forwardRef(function Backdrop2(inPr
15429
15429
  component,
15430
15430
  invisible
15431
15431
  };
15432
- const classes = useUtilityClasses$1i(ownerState);
15432
+ const classes = useUtilityClasses$1j(ownerState);
15433
15433
  const backwardCompatibleSlots = {
15434
15434
  transition: TransitionComponentProp,
15435
15435
  root: components.Root,
@@ -15472,7 +15472,7 @@ function getCardUtilityClass(slot) {
15472
15472
  return generateUtilityClass$1("MuiCard", slot);
15473
15473
  }
15474
15474
  generateUtilityClasses$1("MuiCard", ["root"]);
15475
- const useUtilityClasses$1h = (ownerState) => {
15475
+ const useUtilityClasses$1i = (ownerState) => {
15476
15476
  const {
15477
15477
  classes
15478
15478
  } = ownerState;
@@ -15502,7 +15502,7 @@ const Card = /* @__PURE__ */ reactExports.forwardRef(function Card2(inProps, ref
15502
15502
  ...props2,
15503
15503
  raised
15504
15504
  };
15505
- const classes = useUtilityClasses$1h(ownerState);
15505
+ const classes = useUtilityClasses$1i(ownerState);
15506
15506
  return /* @__PURE__ */ jsxRuntimeExports.jsx(CardRoot, {
15507
15507
  className: clsx(classes.root, className),
15508
15508
  elevation: raised ? 8 : void 0,
@@ -15511,6 +15511,88 @@ const Card = /* @__PURE__ */ reactExports.forwardRef(function Card2(inProps, ref
15511
15511
  ...other2
15512
15512
  });
15513
15513
  });
15514
+ function getCardActionAreaUtilityClass(slot) {
15515
+ return generateUtilityClass$1("MuiCardActionArea", slot);
15516
+ }
15517
+ const cardActionAreaClasses = generateUtilityClasses$1("MuiCardActionArea", ["root", "focusVisible", "focusHighlight"]);
15518
+ const useUtilityClasses$1h = (ownerState) => {
15519
+ const {
15520
+ classes
15521
+ } = ownerState;
15522
+ const slots = {
15523
+ root: ["root"],
15524
+ focusHighlight: ["focusHighlight"]
15525
+ };
15526
+ return composeClasses$1(slots, getCardActionAreaUtilityClass, classes);
15527
+ };
15528
+ const CardActionAreaRoot = styled$1(ButtonBase, {
15529
+ name: "MuiCardActionArea",
15530
+ slot: "Root",
15531
+ overridesResolver: (props2, styles2) => styles2.root
15532
+ })(memoTheme(({
15533
+ theme: theme2
15534
+ }) => ({
15535
+ display: "block",
15536
+ textAlign: "inherit",
15537
+ borderRadius: "inherit",
15538
+ // for Safari to work https://github.com/mui/material-ui/issues/36285.
15539
+ width: "100%",
15540
+ [`&:hover .${cardActionAreaClasses.focusHighlight}`]: {
15541
+ opacity: (theme2.vars || theme2).palette.action.hoverOpacity,
15542
+ "@media (hover: none)": {
15543
+ opacity: 0
15544
+ }
15545
+ },
15546
+ [`&.${cardActionAreaClasses.focusVisible} .${cardActionAreaClasses.focusHighlight}`]: {
15547
+ opacity: (theme2.vars || theme2).palette.action.focusOpacity
15548
+ }
15549
+ })));
15550
+ const CardActionAreaFocusHighlight = styled$1("span", {
15551
+ name: "MuiCardActionArea",
15552
+ slot: "FocusHighlight",
15553
+ overridesResolver: (props2, styles2) => styles2.focusHighlight
15554
+ })(memoTheme(({
15555
+ theme: theme2
15556
+ }) => ({
15557
+ overflow: "hidden",
15558
+ pointerEvents: "none",
15559
+ position: "absolute",
15560
+ top: 0,
15561
+ right: 0,
15562
+ bottom: 0,
15563
+ left: 0,
15564
+ borderRadius: "inherit",
15565
+ opacity: 0,
15566
+ backgroundColor: "currentcolor",
15567
+ transition: theme2.transitions.create("opacity", {
15568
+ duration: theme2.transitions.duration.short
15569
+ })
15570
+ })));
15571
+ const CardActionArea = /* @__PURE__ */ reactExports.forwardRef(function CardActionArea2(inProps, ref) {
15572
+ const props2 = useDefaultProps({
15573
+ props: inProps,
15574
+ name: "MuiCardActionArea"
15575
+ });
15576
+ const {
15577
+ children: children2,
15578
+ className,
15579
+ focusVisibleClassName,
15580
+ ...other2
15581
+ } = props2;
15582
+ const ownerState = props2;
15583
+ const classes = useUtilityClasses$1h(ownerState);
15584
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(CardActionAreaRoot, {
15585
+ className: clsx(classes.root, className),
15586
+ focusVisibleClassName: clsx(focusVisibleClassName, classes.focusVisible),
15587
+ ref,
15588
+ ownerState,
15589
+ ...other2,
15590
+ children: [children2, /* @__PURE__ */ jsxRuntimeExports.jsx(CardActionAreaFocusHighlight, {
15591
+ className: classes.focusHighlight,
15592
+ ownerState
15593
+ })]
15594
+ });
15595
+ });
15514
15596
  function getCardActionsUtilityClass(slot) {
15515
15597
  return generateUtilityClass$1("MuiCardActions", slot);
15516
15598
  }
@@ -35740,18 +35822,45 @@ const useAgentSelectionStore = create$3()(
35740
35822
  * This source code is licensed under the ISC license.
35741
35823
  * See the LICENSE file in the root directory of this source tree.
35742
35824
  */
35743
- const __iconNode$17 = [
35825
+ const __iconNode$1g = [
35826
+ ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
35827
+ ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
35828
+ ["path", { d: "M10 12h4", key: "a56b0p" }]
35829
+ ];
35830
+ const Archive = createLucideIcon("archive", __iconNode$1g);
35831
+ /**
35832
+ * @license lucide-react v0.507.0 - ISC
35833
+ *
35834
+ * This source code is licensed under the ISC license.
35835
+ * See the LICENSE file in the root directory of this source tree.
35836
+ */
35837
+ const __iconNode$1f = [
35744
35838
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
35745
35839
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
35746
35840
  ];
35747
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$17);
35841
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1f);
35748
35842
  /**
35749
35843
  * @license lucide-react v0.507.0 - ISC
35750
35844
  *
35751
35845
  * This source code is licensed under the ISC license.
35752
35846
  * See the LICENSE file in the root directory of this source tree.
35753
35847
  */
35754
- const __iconNode$16 = [
35848
+ const __iconNode$1e = [
35849
+ ["path", { d: "M2 10v3", key: "1fnikh" }],
35850
+ ["path", { d: "M6 6v11", key: "11sgs0" }],
35851
+ ["path", { d: "M10 3v18", key: "yhl04a" }],
35852
+ ["path", { d: "M14 8v7", key: "3a1oy3" }],
35853
+ ["path", { d: "M18 5v13", key: "123xd1" }],
35854
+ ["path", { d: "M22 10v3", key: "154ddg" }]
35855
+ ];
35856
+ const AudioLines = createLucideIcon("audio-lines", __iconNode$1e);
35857
+ /**
35858
+ * @license lucide-react v0.507.0 - ISC
35859
+ *
35860
+ * This source code is licensed under the ISC license.
35861
+ * See the LICENSE file in the root directory of this source tree.
35862
+ */
35863
+ const __iconNode$1d = [
35755
35864
  [
35756
35865
  "path",
35757
35866
  {
@@ -35760,14 +35869,14 @@ const __iconNode$16 = [
35760
35869
  }
35761
35870
  ]
35762
35871
  ];
35763
- const Book = createLucideIcon("book", __iconNode$16);
35872
+ const Book = createLucideIcon("book", __iconNode$1d);
35764
35873
  /**
35765
35874
  * @license lucide-react v0.507.0 - ISC
35766
35875
  *
35767
35876
  * This source code is licensed under the ISC license.
35768
35877
  * See the LICENSE file in the root directory of this source tree.
35769
35878
  */
35770
- const __iconNode$15 = [
35879
+ const __iconNode$1c = [
35771
35880
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
35772
35881
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
35773
35882
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -35775,25 +35884,25 @@ const __iconNode$15 = [
35775
35884
  ["path", { d: "M15 13v2", key: "1xurst" }],
35776
35885
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
35777
35886
  ];
35778
- const Bot = createLucideIcon("bot", __iconNode$15);
35887
+ const Bot = createLucideIcon("bot", __iconNode$1c);
35779
35888
  /**
35780
35889
  * @license lucide-react v0.507.0 - ISC
35781
35890
  *
35782
35891
  * This source code is licensed under the ISC license.
35783
35892
  * See the LICENSE file in the root directory of this source tree.
35784
35893
  */
35785
- const __iconNode$14 = [
35894
+ const __iconNode$1b = [
35786
35895
  ["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
35787
35896
  ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
35788
35897
  ];
35789
- const Briefcase = createLucideIcon("briefcase", __iconNode$14);
35898
+ const Briefcase = createLucideIcon("briefcase", __iconNode$1b);
35790
35899
  /**
35791
35900
  * @license lucide-react v0.507.0 - ISC
35792
35901
  *
35793
35902
  * This source code is licensed under the ISC license.
35794
35903
  * See the LICENSE file in the root directory of this source tree.
35795
35904
  */
35796
- const __iconNode$13 = [
35905
+ const __iconNode$1a = [
35797
35906
  ["path", { d: "M8 2v4", key: "1cmpym" }],
35798
35907
  ["path", { d: "M16 2v4", key: "4m81vk" }],
35799
35908
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
@@ -35805,136 +35914,136 @@ const __iconNode$13 = [
35805
35914
  ["path", { d: "M12 18h.01", key: "mhygvu" }],
35806
35915
  ["path", { d: "M16 18h.01", key: "kzsmim" }]
35807
35916
  ];
35808
- const CalendarDays = createLucideIcon("calendar-days", __iconNode$13);
35917
+ const CalendarDays = createLucideIcon("calendar-days", __iconNode$1a);
35809
35918
  /**
35810
35919
  * @license lucide-react v0.507.0 - ISC
35811
35920
  *
35812
35921
  * This source code is licensed under the ISC license.
35813
35922
  * See the LICENSE file in the root directory of this source tree.
35814
35923
  */
35815
- const __iconNode$12 = [
35924
+ const __iconNode$19 = [
35816
35925
  ["line", { x1: "18", x2: "18", y1: "20", y2: "10", key: "1xfpm4" }],
35817
35926
  ["line", { x1: "12", x2: "12", y1: "20", y2: "4", key: "be30l9" }],
35818
35927
  ["line", { x1: "6", x2: "6", y1: "20", y2: "14", key: "1r4le6" }]
35819
35928
  ];
35820
- const ChartNoAxesColumn = createLucideIcon("chart-no-axes-column", __iconNode$12);
35929
+ const ChartNoAxesColumn = createLucideIcon("chart-no-axes-column", __iconNode$19);
35821
35930
  /**
35822
35931
  * @license lucide-react v0.507.0 - ISC
35823
35932
  *
35824
35933
  * This source code is licensed under the ISC license.
35825
35934
  * See the LICENSE file in the root directory of this source tree.
35826
35935
  */
35827
- const __iconNode$11 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
35828
- const Check = createLucideIcon("check", __iconNode$11);
35936
+ const __iconNode$18 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
35937
+ const Check = createLucideIcon("check", __iconNode$18);
35829
35938
  /**
35830
35939
  * @license lucide-react v0.507.0 - ISC
35831
35940
  *
35832
35941
  * This source code is licensed under the ISC license.
35833
35942
  * See the LICENSE file in the root directory of this source tree.
35834
35943
  */
35835
- const __iconNode$10 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
35836
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$10);
35944
+ const __iconNode$17 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
35945
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$17);
35837
35946
  /**
35838
35947
  * @license lucide-react v0.507.0 - ISC
35839
35948
  *
35840
35949
  * This source code is licensed under the ISC license.
35841
35950
  * See the LICENSE file in the root directory of this source tree.
35842
35951
  */
35843
- const __iconNode$$ = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
35844
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$$);
35952
+ const __iconNode$16 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
35953
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$16);
35845
35954
  /**
35846
35955
  * @license lucide-react v0.507.0 - ISC
35847
35956
  *
35848
35957
  * This source code is licensed under the ISC license.
35849
35958
  * See the LICENSE file in the root directory of this source tree.
35850
35959
  */
35851
- const __iconNode$_ = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
35852
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$_);
35960
+ const __iconNode$15 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
35961
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$15);
35853
35962
  /**
35854
35963
  * @license lucide-react v0.507.0 - ISC
35855
35964
  *
35856
35965
  * This source code is licensed under the ISC license.
35857
35966
  * See the LICENSE file in the root directory of this source tree.
35858
35967
  */
35859
- const __iconNode$Z = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
35860
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$Z);
35968
+ const __iconNode$14 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
35969
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$14);
35861
35970
  /**
35862
35971
  * @license lucide-react v0.507.0 - ISC
35863
35972
  *
35864
35973
  * This source code is licensed under the ISC license.
35865
35974
  * See the LICENSE file in the root directory of this source tree.
35866
35975
  */
35867
- const __iconNode$Y = [
35976
+ const __iconNode$13 = [
35868
35977
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
35869
35978
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
35870
35979
  ];
35871
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$Y);
35980
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$13);
35872
35981
  /**
35873
35982
  * @license lucide-react v0.507.0 - ISC
35874
35983
  *
35875
35984
  * This source code is licensed under the ISC license.
35876
35985
  * See the LICENSE file in the root directory of this source tree.
35877
35986
  */
35878
- const __iconNode$X = [
35987
+ const __iconNode$12 = [
35879
35988
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
35880
35989
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
35881
35990
  ];
35882
- const CircleCheck = createLucideIcon("circle-check", __iconNode$X);
35991
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$12);
35883
35992
  /**
35884
35993
  * @license lucide-react v0.507.0 - ISC
35885
35994
  *
35886
35995
  * This source code is licensed under the ISC license.
35887
35996
  * See the LICENSE file in the root directory of this source tree.
35888
35997
  */
35889
- const __iconNode$W = [
35998
+ const __iconNode$11 = [
35890
35999
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
35891
36000
  ["path", { d: "M17 12h.01", key: "1m0b6t" }],
35892
36001
  ["path", { d: "M12 12h.01", key: "1mp3jc" }],
35893
36002
  ["path", { d: "M7 12h.01", key: "eqddd0" }]
35894
36003
  ];
35895
- const CircleEllipsis = createLucideIcon("circle-ellipsis", __iconNode$W);
36004
+ const CircleEllipsis = createLucideIcon("circle-ellipsis", __iconNode$11);
35896
36005
  /**
35897
36006
  * @license lucide-react v0.507.0 - ISC
35898
36007
  *
35899
36008
  * This source code is licensed under the ISC license.
35900
36009
  * See the LICENSE file in the root directory of this source tree.
35901
36010
  */
35902
- const __iconNode$V = [
36011
+ const __iconNode$10 = [
35903
36012
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
35904
36013
  ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
35905
36014
  ["path", { d: "M12 17h.01", key: "p32p05" }]
35906
36015
  ];
35907
- const CircleHelp = createLucideIcon("circle-help", __iconNode$V);
36016
+ const CircleHelp = createLucideIcon("circle-help", __iconNode$10);
35908
36017
  /**
35909
36018
  * @license lucide-react v0.507.0 - ISC
35910
36019
  *
35911
36020
  * This source code is licensed under the ISC license.
35912
36021
  * See the LICENSE file in the root directory of this source tree.
35913
36022
  */
35914
- const __iconNode$U = [
36023
+ const __iconNode$$ = [
35915
36024
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
35916
36025
  ["polygon", { points: "10 8 16 12 10 16 10 8", key: "1cimsy" }]
35917
36026
  ];
35918
- const CirclePlay = createLucideIcon("circle-play", __iconNode$U);
36027
+ const CirclePlay = createLucideIcon("circle-play", __iconNode$$);
35919
36028
  /**
35920
36029
  * @license lucide-react v0.507.0 - ISC
35921
36030
  *
35922
36031
  * This source code is licensed under the ISC license.
35923
36032
  * See the LICENSE file in the root directory of this source tree.
35924
36033
  */
35925
- const __iconNode$T = [
36034
+ const __iconNode$_ = [
35926
36035
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
35927
36036
  ["path", { d: "M8 12h8", key: "1wcyev" }],
35928
36037
  ["path", { d: "M12 8v8", key: "napkw2" }]
35929
36038
  ];
35930
- const CirclePlus = createLucideIcon("circle-plus", __iconNode$T);
36039
+ const CirclePlus = createLucideIcon("circle-plus", __iconNode$_);
35931
36040
  /**
35932
36041
  * @license lucide-react v0.507.0 - ISC
35933
36042
  *
35934
36043
  * This source code is licensed under the ISC license.
35935
36044
  * See the LICENSE file in the root directory of this source tree.
35936
36045
  */
35937
- const __iconNode$S = [
36046
+ const __iconNode$Z = [
35938
36047
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
35939
36048
  [
35940
36049
  "path",
@@ -35948,72 +36057,72 @@ const __iconNode$S = [
35948
36057
  ["path", { d: "M8 11h.01", key: "1dfujw" }],
35949
36058
  ["path", { d: "M8 16h.01", key: "18s6g9" }]
35950
36059
  ];
35951
- const ClipboardList = createLucideIcon("clipboard-list", __iconNode$S);
36060
+ const ClipboardList = createLucideIcon("clipboard-list", __iconNode$Z);
35952
36061
  /**
35953
36062
  * @license lucide-react v0.507.0 - ISC
35954
36063
  *
35955
36064
  * This source code is licensed under the ISC license.
35956
36065
  * See the LICENSE file in the root directory of this source tree.
35957
36066
  */
35958
- const __iconNode$R = [
36067
+ const __iconNode$Y = [
35959
36068
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
35960
36069
  ["polyline", { points: "12 6 12 12 16 14", key: "68esgv" }]
35961
36070
  ];
35962
- const Clock$1 = createLucideIcon("clock", __iconNode$R);
36071
+ const Clock$1 = createLucideIcon("clock", __iconNode$Y);
35963
36072
  /**
35964
36073
  * @license lucide-react v0.507.0 - ISC
35965
36074
  *
35966
36075
  * This source code is licensed under the ISC license.
35967
36076
  * See the LICENSE file in the root directory of this source tree.
35968
36077
  */
35969
- const __iconNode$Q = [
36078
+ const __iconNode$X = [
35970
36079
  ["path", { d: "M12 13v8", key: "1l5pq0" }],
35971
36080
  ["path", { d: "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242", key: "1pljnt" }],
35972
36081
  ["path", { d: "m8 17 4-4 4 4", key: "1quai1" }]
35973
36082
  ];
35974
- const CloudUpload = createLucideIcon("cloud-upload", __iconNode$Q);
36083
+ const CloudUpload = createLucideIcon("cloud-upload", __iconNode$X);
35975
36084
  /**
35976
36085
  * @license lucide-react v0.507.0 - ISC
35977
36086
  *
35978
36087
  * This source code is licensed under the ISC license.
35979
36088
  * See the LICENSE file in the root directory of this source tree.
35980
36089
  */
35981
- const __iconNode$P = [
36090
+ const __iconNode$W = [
35982
36091
  ["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
35983
36092
  ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
35984
36093
  ["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
35985
36094
  ];
35986
- const CodeXml = createLucideIcon("code-xml", __iconNode$P);
36095
+ const CodeXml = createLucideIcon("code-xml", __iconNode$W);
35987
36096
  /**
35988
36097
  * @license lucide-react v0.507.0 - ISC
35989
36098
  *
35990
36099
  * This source code is licensed under the ISC license.
35991
36100
  * See the LICENSE file in the root directory of this source tree.
35992
36101
  */
35993
- const __iconNode$O = [
36102
+ const __iconNode$V = [
35994
36103
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
35995
36104
  ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
35996
36105
  ];
35997
- const Copy = createLucideIcon("copy", __iconNode$O);
36106
+ const Copy = createLucideIcon("copy", __iconNode$V);
35998
36107
  /**
35999
36108
  * @license lucide-react v0.507.0 - ISC
36000
36109
  *
36001
36110
  * This source code is licensed under the ISC license.
36002
36111
  * See the LICENSE file in the root directory of this source tree.
36003
36112
  */
36004
- const __iconNode$N = [
36113
+ const __iconNode$U = [
36005
36114
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
36006
36115
  ["polyline", { points: "7 10 12 15 17 10", key: "2ggqvy" }],
36007
36116
  ["line", { x1: "12", x2: "12", y1: "15", y2: "3", key: "1vk2je" }]
36008
36117
  ];
36009
- const Download = createLucideIcon("download", __iconNode$N);
36118
+ const Download = createLucideIcon("download", __iconNode$U);
36010
36119
  /**
36011
36120
  * @license lucide-react v0.507.0 - ISC
36012
36121
  *
36013
36122
  * This source code is licensed under the ISC license.
36014
36123
  * See the LICENSE file in the root directory of this source tree.
36015
36124
  */
36016
- const __iconNode$M = [
36125
+ const __iconNode$T = [
36017
36126
  ["path", { d: "M21.54 15H17a2 2 0 0 0-2 2v4.54", key: "1djwo0" }],
36018
36127
  [
36019
36128
  "path",
@@ -36025,26 +36134,26 @@ const __iconNode$M = [
36025
36134
  ["path", { d: "M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05", key: "14pb5j" }],
36026
36135
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
36027
36136
  ];
36028
- const Earth = createLucideIcon("earth", __iconNode$M);
36137
+ const Earth = createLucideIcon("earth", __iconNode$T);
36029
36138
  /**
36030
36139
  * @license lucide-react v0.507.0 - ISC
36031
36140
  *
36032
36141
  * This source code is licensed under the ISC license.
36033
36142
  * See the LICENSE file in the root directory of this source tree.
36034
36143
  */
36035
- const __iconNode$L = [
36144
+ const __iconNode$S = [
36036
36145
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
36037
36146
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
36038
36147
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
36039
36148
  ];
36040
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$L);
36149
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$S);
36041
36150
  /**
36042
36151
  * @license lucide-react v0.507.0 - ISC
36043
36152
  *
36044
36153
  * This source code is licensed under the ISC license.
36045
36154
  * See the LICENSE file in the root directory of this source tree.
36046
36155
  */
36047
- const __iconNode$K = [
36156
+ const __iconNode$R = [
36048
36157
  [
36049
36158
  "path",
36050
36159
  {
@@ -36055,79 +36164,130 @@ const __iconNode$K = [
36055
36164
  ["path", { d: "M22 21H7", key: "t4ddhn" }],
36056
36165
  ["path", { d: "m5 11 9 9", key: "1mo9qw" }]
36057
36166
  ];
36058
- const Eraser = createLucideIcon("eraser", __iconNode$K);
36167
+ const Eraser = createLucideIcon("eraser", __iconNode$R);
36059
36168
  /**
36060
36169
  * @license lucide-react v0.507.0 - ISC
36061
36170
  *
36062
36171
  * This source code is licensed under the ISC license.
36063
36172
  * See the LICENSE file in the root directory of this source tree.
36064
36173
  */
36065
- const __iconNode$J = [
36174
+ const __iconNode$Q = [
36066
36175
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
36067
36176
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
36068
36177
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
36069
36178
  ];
36070
- const ExternalLink = createLucideIcon("external-link", __iconNode$J);
36179
+ const ExternalLink = createLucideIcon("external-link", __iconNode$Q);
36071
36180
  /**
36072
36181
  * @license lucide-react v0.507.0 - ISC
36073
36182
  *
36074
36183
  * This source code is licensed under the ISC license.
36075
36184
  * See the LICENSE file in the root directory of this source tree.
36076
36185
  */
36077
- const __iconNode$I = [
36186
+ const __iconNode$P = [
36187
+ ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36188
+ ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36189
+ ["circle", { cx: "10", cy: "12", r: "2", key: "737tya" }],
36190
+ ["path", { d: "m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22", key: "wt3hpn" }]
36191
+ ];
36192
+ const FileImage = createLucideIcon("file-image", __iconNode$P);
36193
+ /**
36194
+ * @license lucide-react v0.507.0 - ISC
36195
+ *
36196
+ * This source code is licensed under the ISC license.
36197
+ * See the LICENSE file in the root directory of this source tree.
36198
+ */
36199
+ const __iconNode$O = [
36078
36200
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36079
36201
  ["path", { d: "M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2", key: "1vk7w2" }],
36080
36202
  ["path", { d: "M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6", key: "1jink5" }],
36081
36203
  ["path", { d: "m5 11-3 3", key: "1dgrs4" }],
36082
36204
  ["path", { d: "m5 17-3-3h10", key: "1mvvaf" }]
36083
36205
  ];
36084
- const FileOutput = createLucideIcon("file-output", __iconNode$I);
36206
+ const FileOutput = createLucideIcon("file-output", __iconNode$O);
36085
36207
  /**
36086
36208
  * @license lucide-react v0.507.0 - ISC
36087
36209
  *
36088
36210
  * This source code is licensed under the ISC license.
36089
36211
  * See the LICENSE file in the root directory of this source tree.
36090
36212
  */
36091
- const __iconNode$H = [
36213
+ const __iconNode$N = [
36092
36214
  ["path", { d: "M12 17h.01", key: "p32p05" }],
36093
36215
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }],
36094
36216
  ["path", { d: "M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3", key: "mhlwft" }]
36095
36217
  ];
36096
- const FileQuestion = createLucideIcon("file-question", __iconNode$H);
36218
+ const FileQuestion = createLucideIcon("file-question", __iconNode$N);
36097
36219
  /**
36098
36220
  * @license lucide-react v0.507.0 - ISC
36099
36221
  *
36100
36222
  * This source code is licensed under the ISC license.
36101
36223
  * See the LICENSE file in the root directory of this source tree.
36102
36224
  */
36103
- const __iconNode$G = [
36225
+ const __iconNode$M = [
36226
+ ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36227
+ ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36228
+ ["path", { d: "M8 13h2", key: "yr2amv" }],
36229
+ ["path", { d: "M14 13h2", key: "un5t4a" }],
36230
+ ["path", { d: "M8 17h2", key: "2yhykz" }],
36231
+ ["path", { d: "M14 17h2", key: "10kma7" }]
36232
+ ];
36233
+ const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$M);
36234
+ /**
36235
+ * @license lucide-react v0.507.0 - ISC
36236
+ *
36237
+ * This source code is licensed under the ISC license.
36238
+ * See the LICENSE file in the root directory of this source tree.
36239
+ */
36240
+ const __iconNode$L = [
36104
36241
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36105
36242
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36106
36243
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
36107
36244
  ["path", { d: "M16 13H8", key: "t4e002" }],
36108
36245
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
36109
36246
  ];
36110
- const FileText = createLucideIcon("file-text", __iconNode$G);
36247
+ const FileText = createLucideIcon("file-text", __iconNode$L);
36111
36248
  /**
36112
36249
  * @license lucide-react v0.507.0 - ISC
36113
36250
  *
36114
36251
  * This source code is licensed under the ISC license.
36115
36252
  * See the LICENSE file in the root directory of this source tree.
36116
36253
  */
36117
- const __iconNode$F = [
36254
+ const __iconNode$K = [
36118
36255
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36119
36256
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36120
36257
  ["path", { d: "M12 12v6", key: "3ahymv" }],
36121
36258
  ["path", { d: "m15 15-3-3-3 3", key: "15xj92" }]
36122
36259
  ];
36123
- const FileUp = createLucideIcon("file-up", __iconNode$F);
36260
+ const FileUp = createLucideIcon("file-up", __iconNode$K);
36124
36261
  /**
36125
36262
  * @license lucide-react v0.507.0 - ISC
36126
36263
  *
36127
36264
  * This source code is licensed under the ISC license.
36128
36265
  * See the LICENSE file in the root directory of this source tree.
36129
36266
  */
36130
- const __iconNode$E = [
36267
+ const __iconNode$J = [
36268
+ ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36269
+ ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36270
+ ["path", { d: "m10 11 5 3-5 3v-6Z", key: "7ntvm4" }]
36271
+ ];
36272
+ const FileVideo = createLucideIcon("file-video", __iconNode$J);
36273
+ /**
36274
+ * @license lucide-react v0.507.0 - ISC
36275
+ *
36276
+ * This source code is licensed under the ISC license.
36277
+ * See the LICENSE file in the root directory of this source tree.
36278
+ */
36279
+ const __iconNode$I = [
36280
+ ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36281
+ ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }]
36282
+ ];
36283
+ const File$1 = createLucideIcon("file", __iconNode$I);
36284
+ /**
36285
+ * @license lucide-react v0.507.0 - ISC
36286
+ *
36287
+ * This source code is licensed under the ISC license.
36288
+ * See the LICENSE file in the root directory of this source tree.
36289
+ */
36290
+ const __iconNode$H = [
36131
36291
  [
36132
36292
  "path",
36133
36293
  {
@@ -36138,14 +36298,30 @@ const __iconNode$E = [
36138
36298
  ["path", { d: "M6.453 15h11.094", key: "3shlmq" }],
36139
36299
  ["path", { d: "M8.5 2h7", key: "csnxdl" }]
36140
36300
  ];
36141
- const FlaskConical = createLucideIcon("flask-conical", __iconNode$E);
36301
+ const FlaskConical = createLucideIcon("flask-conical", __iconNode$H);
36142
36302
  /**
36143
36303
  * @license lucide-react v0.507.0 - ISC
36144
36304
  *
36145
36305
  * This source code is licensed under the ISC license.
36146
36306
  * See the LICENSE file in the root directory of this source tree.
36147
36307
  */
36148
- const __iconNode$D = [
36308
+ const __iconNode$G = [
36309
+ [
36310
+ "path",
36311
+ {
36312
+ d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",
36313
+ key: "usdka0"
36314
+ }
36315
+ ]
36316
+ ];
36317
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$G);
36318
+ /**
36319
+ * @license lucide-react v0.507.0 - ISC
36320
+ *
36321
+ * This source code is licensed under the ISC license.
36322
+ * See the LICENSE file in the root directory of this source tree.
36323
+ */
36324
+ const __iconNode$F = [
36149
36325
  [
36150
36326
  "path",
36151
36327
  {
@@ -36156,14 +36332,14 @@ const __iconNode$D = [
36156
36332
  ["path", { d: "M22 10v6", key: "1lu8f3" }],
36157
36333
  ["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
36158
36334
  ];
36159
- const GraduationCap = createLucideIcon("graduation-cap", __iconNode$D);
36335
+ const GraduationCap = createLucideIcon("graduation-cap", __iconNode$F);
36160
36336
  /**
36161
36337
  * @license lucide-react v0.507.0 - ISC
36162
36338
  *
36163
36339
  * This source code is licensed under the ISC license.
36164
36340
  * See the LICENSE file in the root directory of this source tree.
36165
36341
  */
36166
- const __iconNode$C = [
36342
+ const __iconNode$E = [
36167
36343
  [
36168
36344
  "path",
36169
36345
  {
@@ -36173,14 +36349,14 @@ const __iconNode$C = [
36173
36349
  ],
36174
36350
  ["path", { d: "M3.22 12H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27", key: "1uw2ng" }]
36175
36351
  ];
36176
- const HeartPulse = createLucideIcon("heart-pulse", __iconNode$C);
36352
+ const HeartPulse = createLucideIcon("heart-pulse", __iconNode$E);
36177
36353
  /**
36178
36354
  * @license lucide-react v0.507.0 - ISC
36179
36355
  *
36180
36356
  * This source code is licensed under the ISC license.
36181
36357
  * See the LICENSE file in the root directory of this source tree.
36182
36358
  */
36183
- const __iconNode$B = [
36359
+ const __iconNode$D = [
36184
36360
  [
36185
36361
  "path",
36186
36362
  {
@@ -36189,26 +36365,26 @@ const __iconNode$B = [
36189
36365
  }
36190
36366
  ]
36191
36367
  ];
36192
- const Heart = createLucideIcon("heart", __iconNode$B);
36368
+ const Heart = createLucideIcon("heart", __iconNode$D);
36193
36369
  /**
36194
36370
  * @license lucide-react v0.507.0 - ISC
36195
36371
  *
36196
36372
  * This source code is licensed under the ISC license.
36197
36373
  * See the LICENSE file in the root directory of this source tree.
36198
36374
  */
36199
- const __iconNode$A = [
36375
+ const __iconNode$C = [
36200
36376
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
36201
36377
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
36202
36378
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
36203
36379
  ];
36204
- const History = createLucideIcon("history", __iconNode$A);
36380
+ const History = createLucideIcon("history", __iconNode$C);
36205
36381
  /**
36206
36382
  * @license lucide-react v0.507.0 - ISC
36207
36383
  *
36208
36384
  * This source code is licensed under the ISC license.
36209
36385
  * See the LICENSE file in the root directory of this source tree.
36210
36386
  */
36211
- const __iconNode$z = [
36387
+ const __iconNode$B = [
36212
36388
  ["path", { d: "M12 3v12", key: "1x0j5s" }],
36213
36389
  ["path", { d: "m8 11 4 4 4-4", key: "1dohi6" }],
36214
36390
  [
@@ -36219,38 +36395,38 @@ const __iconNode$z = [
36219
36395
  }
36220
36396
  ]
36221
36397
  ];
36222
- const Import = createLucideIcon("import", __iconNode$z);
36398
+ const Import = createLucideIcon("import", __iconNode$B);
36223
36399
  /**
36224
36400
  * @license lucide-react v0.507.0 - ISC
36225
36401
  *
36226
36402
  * This source code is licensed under the ISC license.
36227
36403
  * See the LICENSE file in the root directory of this source tree.
36228
36404
  */
36229
- const __iconNode$y = [
36405
+ const __iconNode$A = [
36230
36406
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36231
36407
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
36232
36408
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
36233
36409
  ];
36234
- const Info$1 = createLucideIcon("info", __iconNode$y);
36410
+ const Info$1 = createLucideIcon("info", __iconNode$A);
36235
36411
  /**
36236
36412
  * @license lucide-react v0.507.0 - ISC
36237
36413
  *
36238
36414
  * This source code is licensed under the ISC license.
36239
36415
  * See the LICENSE file in the root directory of this source tree.
36240
36416
  */
36241
- const __iconNode$x = [
36417
+ const __iconNode$z = [
36242
36418
  ["path", { d: "m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4", key: "g0fldk" }],
36243
36419
  ["path", { d: "m21 2-9.6 9.6", key: "1j0ho8" }],
36244
36420
  ["circle", { cx: "7.5", cy: "15.5", r: "5.5", key: "yqb3hr" }]
36245
36421
  ];
36246
- const Key = createLucideIcon("key", __iconNode$x);
36422
+ const Key = createLucideIcon("key", __iconNode$z);
36247
36423
  /**
36248
36424
  * @license lucide-react v0.507.0 - ISC
36249
36425
  *
36250
36426
  * This source code is licensed under the ISC license.
36251
36427
  * See the LICENSE file in the root directory of this source tree.
36252
36428
  */
36253
- const __iconNode$w = [
36429
+ const __iconNode$y = [
36254
36430
  [
36255
36431
  "path",
36256
36432
  {
@@ -36273,14 +36449,14 @@ const __iconNode$w = [
36273
36449
  }
36274
36450
  ]
36275
36451
  ];
36276
- const Layers = createLucideIcon("layers", __iconNode$w);
36452
+ const Layers = createLucideIcon("layers", __iconNode$y);
36277
36453
  /**
36278
36454
  * @license lucide-react v0.507.0 - ISC
36279
36455
  *
36280
36456
  * This source code is licensed under the ISC license.
36281
36457
  * See the LICENSE file in the root directory of this source tree.
36282
36458
  */
36283
- const __iconNode$v = [
36459
+ const __iconNode$x = [
36284
36460
  [
36285
36461
  "path",
36286
36462
  {
@@ -36291,80 +36467,80 @@ const __iconNode$v = [
36291
36467
  ["path", { d: "M9 18h6", key: "x1upvd" }],
36292
36468
  ["path", { d: "M10 22h4", key: "ceow96" }]
36293
36469
  ];
36294
- const Lightbulb = createLucideIcon("lightbulb", __iconNode$v);
36470
+ const Lightbulb = createLucideIcon("lightbulb", __iconNode$x);
36295
36471
  /**
36296
36472
  * @license lucide-react v0.507.0 - ISC
36297
36473
  *
36298
36474
  * This source code is licensed under the ISC license.
36299
36475
  * See the LICENSE file in the root directory of this source tree.
36300
36476
  */
36301
- const __iconNode$u = [
36477
+ const __iconNode$w = [
36302
36478
  ["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }],
36303
36479
  ["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }]
36304
36480
  ];
36305
- const Link = createLucideIcon("link", __iconNode$u);
36481
+ const Link = createLucideIcon("link", __iconNode$w);
36306
36482
  /**
36307
36483
  * @license lucide-react v0.507.0 - ISC
36308
36484
  *
36309
36485
  * This source code is licensed under the ISC license.
36310
36486
  * See the LICENSE file in the root directory of this source tree.
36311
36487
  */
36312
- const __iconNode$t = [
36488
+ const __iconNode$v = [
36313
36489
  ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
36314
36490
  ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
36315
36491
  ];
36316
- const Mail = createLucideIcon("mail", __iconNode$t);
36492
+ const Mail = createLucideIcon("mail", __iconNode$v);
36317
36493
  /**
36318
36494
  * @license lucide-react v0.507.0 - ISC
36319
36495
  *
36320
36496
  * This source code is licensed under the ISC license.
36321
36497
  * See the LICENSE file in the root directory of this source tree.
36322
36498
  */
36323
- const __iconNode$s = [
36499
+ const __iconNode$u = [
36324
36500
  ["polyline", { points: "15 3 21 3 21 9", key: "mznyad" }],
36325
36501
  ["polyline", { points: "9 21 3 21 3 15", key: "1avn1i" }],
36326
36502
  ["line", { x1: "21", x2: "14", y1: "3", y2: "10", key: "ota7mn" }],
36327
36503
  ["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }]
36328
36504
  ];
36329
- const Maximize2 = createLucideIcon("maximize-2", __iconNode$s);
36505
+ const Maximize2 = createLucideIcon("maximize-2", __iconNode$u);
36330
36506
  /**
36331
36507
  * @license lucide-react v0.507.0 - ISC
36332
36508
  *
36333
36509
  * This source code is licensed under the ISC license.
36334
36510
  * See the LICENSE file in the root directory of this source tree.
36335
36511
  */
36336
- const __iconNode$r = [
36512
+ const __iconNode$t = [
36337
36513
  ["path", { d: "m3 11 18-5v12L3 14v-3z", key: "n962bs" }],
36338
36514
  ["path", { d: "M11.6 16.8a3 3 0 1 1-5.8-1.6", key: "1yl0tm" }]
36339
36515
  ];
36340
- const Megaphone = createLucideIcon("megaphone", __iconNode$r);
36516
+ const Megaphone = createLucideIcon("megaphone", __iconNode$t);
36341
36517
  /**
36342
36518
  * @license lucide-react v0.507.0 - ISC
36343
36519
  *
36344
36520
  * This source code is licensed under the ISC license.
36345
36521
  * See the LICENSE file in the root directory of this source tree.
36346
36522
  */
36347
- const __iconNode$q = [
36523
+ const __iconNode$s = [
36348
36524
  ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }]
36349
36525
  ];
36350
- const MessageCircle = createLucideIcon("message-circle", __iconNode$q);
36526
+ const MessageCircle = createLucideIcon("message-circle", __iconNode$s);
36351
36527
  /**
36352
36528
  * @license lucide-react v0.507.0 - ISC
36353
36529
  *
36354
36530
  * This source code is licensed under the ISC license.
36355
36531
  * See the LICENSE file in the root directory of this source tree.
36356
36532
  */
36357
- const __iconNode$p = [
36533
+ const __iconNode$r = [
36358
36534
  ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }]
36359
36535
  ];
36360
- const MessageSquare = createLucideIcon("message-square", __iconNode$p);
36536
+ const MessageSquare = createLucideIcon("message-square", __iconNode$r);
36361
36537
  /**
36362
36538
  * @license lucide-react v0.507.0 - ISC
36363
36539
  *
36364
36540
  * This source code is licensed under the ISC license.
36365
36541
  * See the LICENSE file in the root directory of this source tree.
36366
36542
  */
36367
- const __iconNode$o = [
36543
+ const __iconNode$q = [
36368
36544
  ["path", { d: "M12 2v20", key: "t6zp3m" }],
36369
36545
  ["path", { d: "m15 19-3 3-3-3", key: "11eu04" }],
36370
36546
  ["path", { d: "m19 9 3 3-3 3", key: "1mg7y2" }],
@@ -36372,14 +36548,14 @@ const __iconNode$o = [
36372
36548
  ["path", { d: "m5 9-3 3 3 3", key: "j64kie" }],
36373
36549
  ["path", { d: "m9 5 3-3 3 3", key: "l8vdw6" }]
36374
36550
  ];
36375
- const Move = createLucideIcon("move", __iconNode$o);
36551
+ const Move = createLucideIcon("move", __iconNode$q);
36376
36552
  /**
36377
36553
  * @license lucide-react v0.507.0 - ISC
36378
36554
  *
36379
36555
  * This source code is licensed under the ISC license.
36380
36556
  * See the LICENSE file in the root directory of this source tree.
36381
36557
  */
36382
- const __iconNode$n = [
36558
+ const __iconNode$p = [
36383
36559
  ["path", { d: "m14.622 17.897-10.68-2.913", key: "vj2p1u" }],
36384
36560
  [
36385
36561
  "path",
@@ -36396,14 +36572,14 @@ const __iconNode$n = [
36396
36572
  }
36397
36573
  ]
36398
36574
  ];
36399
- const Paintbrush = createLucideIcon("paintbrush", __iconNode$n);
36575
+ const Paintbrush = createLucideIcon("paintbrush", __iconNode$p);
36400
36576
  /**
36401
36577
  * @license lucide-react v0.507.0 - ISC
36402
36578
  *
36403
36579
  * This source code is licensed under the ISC license.
36404
36580
  * See the LICENSE file in the root directory of this source tree.
36405
36581
  */
36406
- const __iconNode$m = [
36582
+ const __iconNode$o = [
36407
36583
  ["path", { d: "M12 20h9", key: "t2du7b" }],
36408
36584
  [
36409
36585
  "path",
@@ -36414,14 +36590,14 @@ const __iconNode$m = [
36414
36590
  ],
36415
36591
  ["path", { d: "m15 5 3 3", key: "1w25hb" }]
36416
36592
  ];
36417
- const PencilLine = createLucideIcon("pencil-line", __iconNode$m);
36593
+ const PencilLine = createLucideIcon("pencil-line", __iconNode$o);
36418
36594
  /**
36419
36595
  * @license lucide-react v0.507.0 - ISC
36420
36596
  *
36421
36597
  * This source code is licensed under the ISC license.
36422
36598
  * See the LICENSE file in the root directory of this source tree.
36423
36599
  */
36424
- const __iconNode$l = [
36600
+ const __iconNode$n = [
36425
36601
  [
36426
36602
  "path",
36427
36603
  {
@@ -36431,25 +36607,37 @@ const __iconNode$l = [
36431
36607
  ],
36432
36608
  ["path", { d: "m15 5 4 4", key: "1mk7zo" }]
36433
36609
  ];
36434
- const Pencil = createLucideIcon("pencil", __iconNode$l);
36610
+ const Pencil = createLucideIcon("pencil", __iconNode$n);
36435
36611
  /**
36436
36612
  * @license lucide-react v0.507.0 - ISC
36437
36613
  *
36438
36614
  * This source code is licensed under the ISC license.
36439
36615
  * See the LICENSE file in the root directory of this source tree.
36440
36616
  */
36441
- const __iconNode$k = [
36617
+ const __iconNode$m = [
36442
36618
  ["path", { d: "M5 12h14", key: "1ays0h" }],
36443
36619
  ["path", { d: "M12 5v14", key: "s699le" }]
36444
36620
  ];
36445
- const Plus$1 = createLucideIcon("plus", __iconNode$k);
36621
+ const Plus$1 = createLucideIcon("plus", __iconNode$m);
36446
36622
  /**
36447
36623
  * @license lucide-react v0.507.0 - ISC
36448
36624
  *
36449
36625
  * This source code is licensed under the ISC license.
36450
36626
  * See the LICENSE file in the root directory of this source tree.
36451
36627
  */
36452
- const __iconNode$j = [
36628
+ const __iconNode$l = [
36629
+ ["path", { d: "M2 3h20", key: "91anmk" }],
36630
+ ["path", { d: "M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3", key: "2k9sn8" }],
36631
+ ["path", { d: "m7 21 5-5 5 5", key: "bip4we" }]
36632
+ ];
36633
+ const Presentation = createLucideIcon("presentation", __iconNode$l);
36634
+ /**
36635
+ * @license lucide-react v0.507.0 - ISC
36636
+ *
36637
+ * This source code is licensed under the ISC license.
36638
+ * See the LICENSE file in the root directory of this source tree.
36639
+ */
36640
+ const __iconNode$k = [
36453
36641
  [
36454
36642
  "path",
36455
36643
  {
@@ -36458,25 +36646,25 @@ const __iconNode$j = [
36458
36646
  }
36459
36647
  ]
36460
36648
  ];
36461
- const Puzzle = createLucideIcon("puzzle", __iconNode$j);
36649
+ const Puzzle = createLucideIcon("puzzle", __iconNode$k);
36462
36650
  /**
36463
36651
  * @license lucide-react v0.507.0 - ISC
36464
36652
  *
36465
36653
  * This source code is licensed under the ISC license.
36466
36654
  * See the LICENSE file in the root directory of this source tree.
36467
36655
  */
36468
- const __iconNode$i = [
36656
+ const __iconNode$j = [
36469
36657
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
36470
36658
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }]
36471
36659
  ];
36472
- const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$i);
36660
+ const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$j);
36473
36661
  /**
36474
36662
  * @license lucide-react v0.507.0 - ISC
36475
36663
  *
36476
36664
  * This source code is licensed under the ISC license.
36477
36665
  * See the LICENSE file in the root directory of this source tree.
36478
36666
  */
36479
- const __iconNode$h = [
36667
+ const __iconNode$i = [
36480
36668
  [
36481
36669
  "path",
36482
36670
  {
@@ -36487,21 +36675,40 @@ const __iconNode$h = [
36487
36675
  ["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
36488
36676
  ["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
36489
36677
  ];
36490
- const Save = createLucideIcon("save", __iconNode$h);
36678
+ const Save = createLucideIcon("save", __iconNode$i);
36491
36679
  /**
36492
36680
  * @license lucide-react v0.507.0 - ISC
36493
36681
  *
36494
36682
  * This source code is licensed under the ISC license.
36495
36683
  * See the LICENSE file in the root directory of this source tree.
36496
36684
  */
36497
- const __iconNode$g = [
36685
+ const __iconNode$h = [
36498
36686
  ["path", { d: "m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "7g6ntu" }],
36499
36687
  ["path", { d: "m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "ijws7r" }],
36500
36688
  ["path", { d: "M7 21h10", key: "1b0cd5" }],
36501
36689
  ["path", { d: "M12 3v18", key: "108xh3" }],
36502
36690
  ["path", { d: "M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2", key: "3gwbw2" }]
36503
36691
  ];
36504
- const Scale = createLucideIcon("scale", __iconNode$g);
36692
+ const Scale = createLucideIcon("scale", __iconNode$h);
36693
+ /**
36694
+ * @license lucide-react v0.507.0 - ISC
36695
+ *
36696
+ * This source code is licensed under the ISC license.
36697
+ * See the LICENSE file in the root directory of this source tree.
36698
+ */
36699
+ const __iconNode$g = [
36700
+ ["path", { d: "M15 12h-5", key: "r7krc0" }],
36701
+ ["path", { d: "M15 8h-5", key: "1khuty" }],
36702
+ ["path", { d: "M19 17V5a2 2 0 0 0-2-2H4", key: "zz82l3" }],
36703
+ [
36704
+ "path",
36705
+ {
36706
+ d: "M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",
36707
+ key: "1ph1d7"
36708
+ }
36709
+ ]
36710
+ ];
36711
+ const ScrollText = createLucideIcon("scroll-text", __iconNode$g);
36505
36712
  /**
36506
36713
  * @license lucide-react v0.507.0 - ISC
36507
36714
  *
@@ -38335,7 +38542,8 @@ const convertToMessage = (record, conversationId) => {
38335
38542
  file_path: record.file_path,
38336
38543
  replacements: record.replacements,
38337
38544
  agent: record.agent,
38338
- learnings: record.learnings
38545
+ learnings: record.learnings,
38546
+ thinking: record.thinking
38339
38547
  };
38340
38548
  };
38341
38549
  const useConversationMessages = (conversationId, pageSize2 = 20) => {
@@ -40510,6 +40718,7 @@ const useUpdateConfig = () => {
40510
40718
  }
40511
40719
  });
40512
40720
  };
40721
+ let isAnyBackendAuthInProgress = false;
40513
40722
  const radientClient = createRadientClient(
40514
40723
  apiConfig.radientBaseUrl,
40515
40724
  apiConfig.radientClientId
@@ -40530,6 +40739,13 @@ const useOidcAuth = (options) => {
40530
40739
  const { mutateAsync: updateConfig } = useUpdateConfig();
40531
40740
  const handleBackendAuth = reactExports.useCallback(
40532
40741
  async (provider, idToken, googleAccessToken, googleTokenExpiry, googleRefreshToken) => {
40742
+ if (isAnyBackendAuthInProgress) {
40743
+ console.warn(
40744
+ "Backend authentication is already in progress globally. Skipping duplicate call."
40745
+ );
40746
+ return;
40747
+ }
40748
+ isAnyBackendAuthInProgress = true;
40533
40749
  setError(null);
40534
40750
  try {
40535
40751
  if (provider === "google") {
@@ -40647,6 +40863,8 @@ const useOidcAuth = (options) => {
40647
40863
  console.error("Error during backend authentication:", err);
40648
40864
  setError(msg || "Authentication failed during backend processing.");
40649
40865
  showErrorToast(msg || "Authentication failed");
40866
+ } finally {
40867
+ isAnyBackendAuthInProgress = false;
40650
40868
  }
40651
40869
  },
40652
40870
  [queryClient2, updateConfig, onSuccess, onAfterCredentialUpdate]
@@ -40952,12 +41170,8 @@ const useScrollToBottom = (buttonThreshold = 50, externalContainerRef, contentKe
40952
41170
  const distanceFromBottom = Math.abs(scrollTop);
40953
41171
  const canScroll = scrollHeight > clientHeight;
40954
41172
  const shouldShow = canScroll && distanceFromBottom > buttonThreshold;
40955
- const now2 = Date.now();
40956
- if (shouldShow !== isFarFromBottom && now2 - lastUpdateTimeRef.current > 100) {
40957
- lastUpdateTimeRef.current = now2;
40958
- setIsFarFromBottom(shouldShow);
40959
- }
40960
- }, [buttonThreshold, containerRef, isFarFromBottom]);
41173
+ setIsFarFromBottom(shouldShow);
41174
+ }, [buttonThreshold, containerRef]);
40961
41175
  const scrollToBottom = reactExports.useCallback(() => {
40962
41176
  const container = containerRef.current;
40963
41177
  if (!container) return;
@@ -45607,38 +45821,66 @@ var libExports = requireLib();
45607
45821
  const HTMLReactParser = /* @__PURE__ */ getDefaultExportFromCjs(libExports);
45608
45822
  const parse$7 = HTMLReactParser.default || HTMLReactParser;
45609
45823
  const UpdateContainer = styled$1("div")(({ theme: theme2 }) => ({
45610
- padding: 24,
45824
+ padding: theme2.spacing(2.5),
45611
45825
  borderRadius: 8,
45612
45826
  backgroundColor: theme2.palette.background.paper,
45613
- boxShadow: "0 4px 20px rgba(0, 0, 0, 0.15)",
45827
+ border: `1px solid ${theme2.palette.divider}`,
45828
+ boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
45614
45829
  position: "fixed",
45615
- top: 20,
45616
- right: 20,
45830
+ top: theme2.spacing(2.5),
45831
+ right: theme2.spacing(2.5),
45617
45832
  zIndex: 1300,
45618
- // Higher than most components but below modal dialogs
45619
- width: 560,
45620
- // Responsive width with margins
45833
+ width: 400,
45834
+ maxWidth: "calc(100vw - 40px)",
45835
+ backgroundImage: "none",
45836
+ "& .update-title": {
45837
+ fontSize: "1.125rem",
45838
+ fontWeight: 600,
45839
+ lineHeight: 1.4,
45840
+ marginBottom: theme2.spacing(1.5),
45841
+ color: theme2.palette.text.primary
45842
+ },
45843
+ "& .update-description": {
45844
+ fontSize: "0.875rem",
45845
+ lineHeight: 1.5,
45846
+ color: theme2.palette.text.secondary,
45847
+ marginBottom: theme2.spacing(1)
45848
+ },
45849
+ "& .update-notes": {
45850
+ fontSize: "0.8125rem",
45851
+ lineHeight: 1.4,
45852
+ color: theme2.palette.text.secondary
45853
+ },
45621
45854
  "& a": {
45622
45855
  color: theme2.palette.primary.main,
45623
45856
  textDecoration: "none",
45857
+ fontWeight: 500,
45624
45858
  "&:hover": {
45625
45859
  textDecoration: "underline"
45626
45860
  }
45861
+ },
45862
+ [theme2.breakpoints.down("sm")]: {
45863
+ width: "calc(100vw - 32px)",
45864
+ left: theme2.spacing(2),
45865
+ right: theme2.spacing(2),
45866
+ top: theme2.spacing(2),
45867
+ padding: theme2.spacing(2)
45627
45868
  }
45628
45869
  }));
45629
- const UpdateActions = styled$1("div")({
45870
+ const UpdateActions = styled$1("div")(({ theme: theme2 }) => ({
45630
45871
  display: "flex",
45631
45872
  justifyContent: "flex-end",
45632
- gap: 8,
45633
- marginTop: 24
45634
- });
45635
- const ProgressContainer = styled$1("div")({
45636
- marginTop: 16,
45637
- marginBottom: 8
45638
- });
45873
+ gap: theme2.spacing(1.5),
45874
+ marginTop: theme2.spacing(3)
45875
+ }));
45876
+ const ProgressContainer = styled$1("div")(({ theme: theme2 }) => ({
45877
+ marginTop: theme2.spacing(2),
45878
+ marginBottom: theme2.spacing(1)
45879
+ }));
45639
45880
  const UpdateNotification = ({
45640
45881
  autoCheck = true
45641
45882
  }) => {
45883
+ const theme2 = useTheme$2();
45642
45884
  const [checking, setChecking] = reactExports.useState(false);
45643
45885
  const [updatingBackend, setUpdatingBackend] = reactExports.useState(false);
45644
45886
  const [updateAvailable, setUpdateAvailable] = reactExports.useState(false);
@@ -45818,10 +46060,25 @@ const UpdateNotification = ({
45818
46060
  const handleSnackbarClose = () => {
45819
46061
  setSnackbarOpen(false);
45820
46062
  };
46063
+ const buttonSx = {
46064
+ textTransform: "none",
46065
+ fontSize: "0.8125rem",
46066
+ padding: theme2.spacing(0.5, 1.5),
46067
+ borderRadius: theme2.shape.borderRadius * 0.75
46068
+ };
46069
+ const secondaryButtonSx = {
46070
+ ...buttonSx,
46071
+ borderColor: theme2.palette.divider,
46072
+ color: theme2.palette.text.secondary,
46073
+ "&:hover": {
46074
+ backgroundColor: theme2.palette.action.hover,
46075
+ borderColor: theme2.palette.divider
46076
+ }
46077
+ };
45821
46078
  if (checking) {
45822
46079
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
45823
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: updatingBackend ? "Updating Server" : "Checking for Updates" }),
45824
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", children: updatingBackend ? "Please wait while the server is being updated. The server will temporarily go offline while it restarts to apply the update." : "Please wait while we check for available updates..." }),
46080
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { className: "update-title", children: updatingBackend ? "Updating Server" : "Checking for Updates" }),
46081
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { className: "update-description", children: updatingBackend ? "Please wait while the server is being updated. The server will temporarily go offline while it restarts to apply the update." : "Please wait while we check for available updates..." }),
45825
46082
  /* @__PURE__ */ jsxRuntimeExports.jsx(ProgressContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(LinearProgress, {}) })
45826
46083
  ] });
45827
46084
  }
@@ -45840,15 +46097,15 @@ const UpdateNotification = ({
45840
46097
  if (updateAvailable && !updateDownloaded && updateInfo) {
45841
46098
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45842
46099
  /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
45843
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: "Update Available" }),
45844
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body1", children: [
46100
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { className: "update-title", children: "Update Available" }),
46101
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { className: "update-description", children: [
45845
46102
  "Version ",
45846
46103
  updateInfo.version,
45847
46104
  " is available. You are currently using version ",
45848
46105
  appVersion,
45849
46106
  "."
45850
46107
  ] }),
45851
- updateInfo.releaseNotes && /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", sx: { mt: 1 }, children: [
46108
+ updateInfo.releaseNotes && /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { className: "update-notes", sx: { mt: 1 }, children: [
45852
46109
  "Release Notes:",
45853
46110
  " ",
45854
46111
  typeof updateInfo.releaseNotes === "string" ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
@@ -45874,7 +46131,7 @@ const UpdateNotification = ({
45874
46131
  )
45875
46132
  ] }),
45876
46133
  downloading && downloadProgress && /* @__PURE__ */ jsxRuntimeExports.jsxs(ProgressContainer, { children: [
45877
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", children: [
46134
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", sx: { fontSize: "0.8125rem" }, children: [
45878
46135
  "Downloading: ",
45879
46136
  Math.round(downloadProgress.percent),
45880
46137
  "%"
@@ -45887,22 +46144,30 @@ const UpdateNotification = ({
45887
46144
  sx: { mt: 1 }
45888
46145
  }
45889
46146
  ),
45890
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "caption", sx: { mt: 0.5, display: "block" }, children: [
45891
- Math.round(downloadProgress.transferred / 1024),
45892
- " KB of",
45893
- " ",
45894
- Math.round(downloadProgress.total / 1024),
45895
- " KB"
45896
- ] })
46147
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
46148
+ Typography,
46149
+ {
46150
+ variant: "caption",
46151
+ sx: { mt: 0.5, display: "block", fontSize: "0.75rem" },
46152
+ children: [
46153
+ Math.round(downloadProgress.transferred / 1024),
46154
+ " KB of",
46155
+ " ",
46156
+ Math.round(downloadProgress.total / 1024),
46157
+ " KB"
46158
+ ]
46159
+ }
46160
+ )
45897
46161
  ] }),
45898
46162
  /* @__PURE__ */ jsxRuntimeExports.jsx(UpdateActions, { children: !downloading && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45899
46163
  /* @__PURE__ */ jsxRuntimeExports.jsx(
45900
46164
  Button,
45901
46165
  {
45902
46166
  variant: "contained",
45903
- color: "primary",
46167
+ size: "small",
45904
46168
  onClick: downloadUpdate,
45905
46169
  disabled: downloading,
46170
+ sx: buttonSx,
45906
46171
  children: "Download Update"
45907
46172
  }
45908
46173
  ),
@@ -45910,8 +46175,10 @@ const UpdateNotification = ({
45910
46175
  Button,
45911
46176
  {
45912
46177
  variant: "outlined",
46178
+ size: "small",
45913
46179
  onClick: handleDeferUpdate,
45914
46180
  disabled: downloading,
46181
+ sx: secondaryButtonSx,
45915
46182
  children: "Update Later"
45916
46183
  }
45917
46184
  )
@@ -45935,18 +46202,36 @@ const UpdateNotification = ({
45935
46202
  if (updateDownloaded && updateInfo) {
45936
46203
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45937
46204
  /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
45938
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: "Update Ready to Install" }),
45939
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body1", children: [
46205
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { className: "update-title", children: "Update Ready to Install" }),
46206
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { className: "update-description", children: [
45940
46207
  "Version ",
45941
46208
  updateInfo.version,
45942
46209
  " is available. You are currently using version ",
45943
46210
  appVersion,
45944
46211
  "."
45945
46212
  ] }),
45946
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", sx: { mt: 1 }, children: "The application will restart to apply the update." }),
46213
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { className: "update-notes", sx: { mt: 1 }, children: "The application will restart to apply the update." }),
45947
46214
  /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateActions, { children: [
45948
- /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "contained", color: "primary", onClick: installUpdate, children: "Install Now" }),
45949
- /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "outlined", onClick: handleDeferUpdate, children: "Update Later" })
46215
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
46216
+ Button,
46217
+ {
46218
+ variant: "contained",
46219
+ size: "small",
46220
+ onClick: installUpdate,
46221
+ sx: buttonSx,
46222
+ children: "Install Now"
46223
+ }
46224
+ ),
46225
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
46226
+ Button,
46227
+ {
46228
+ variant: "outlined",
46229
+ size: "small",
46230
+ onClick: handleDeferUpdate,
46231
+ sx: secondaryButtonSx,
46232
+ children: "Update Later"
46233
+ }
46234
+ )
45950
46235
  ] })
45951
46236
  ] }),
45952
46237
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -45964,23 +46249,24 @@ const UpdateNotification = ({
45964
46249
  if (backendUpdateAvailable && backendUpdateInfo) {
45965
46250
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45966
46251
  /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
45967
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: "Server Update Available" }),
45968
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body1", children: [
46252
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { className: "update-title", children: "Server Update Available" }),
46253
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { className: "update-description", children: [
45969
46254
  "Server version ",
45970
46255
  backendUpdateInfo.latestVersion,
45971
46256
  " is available. You are currently using version ",
45972
46257
  backendUpdateInfo.currentVersion,
45973
46258
  "."
45974
46259
  ] }),
45975
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", sx: { mt: 1 }, children: "Updating the server will improve AI functionality, improve security, and fix bugs." }),
46260
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { className: "update-notes", sx: { mt: 1 }, children: "Updating the server will improve AI functionality, improve security, and fix bugs." }),
45976
46261
  backendUpdateInfo.canManageUpdate ? /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateActions, { children: [
45977
46262
  /* @__PURE__ */ jsxRuntimeExports.jsx(
45978
46263
  Button,
45979
46264
  {
45980
46265
  variant: "contained",
45981
- color: "primary",
46266
+ size: "small",
45982
46267
  onClick: updateBackend,
45983
46268
  disabled: checking,
46269
+ sx: buttonSx,
45984
46270
  children: checking ? "Updating..." : "Update Server"
45985
46271
  }
45986
46272
  ),
@@ -45988,13 +46274,22 @@ const UpdateNotification = ({
45988
46274
  Button,
45989
46275
  {
45990
46276
  variant: "outlined",
46277
+ size: "small",
45991
46278
  onClick: handleDeferBackendUpdate,
45992
46279
  disabled: checking,
46280
+ sx: secondaryButtonSx,
45993
46281
  children: "Update Later"
45994
46282
  }
45995
46283
  )
45996
46284
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45997
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", sx: { mt: 2, color: "warning.main" }, children: "The backend server is running externally and cannot be updated automatically. Please update it manually using the following command:" }),
46285
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
46286
+ Typography,
46287
+ {
46288
+ variant: "body2",
46289
+ sx: { mt: 2, color: "warning.main", fontSize: "0.8125rem" },
46290
+ children: "The backend server is running externally and cannot be updated automatically. Please update it manually using the following command:"
46291
+ }
46292
+ ),
45998
46293
  /* @__PURE__ */ jsxRuntimeExports.jsx(
45999
46294
  Typography,
46000
46295
  {
@@ -46004,7 +46299,8 @@ const UpdateNotification = ({
46004
46299
  p: 1,
46005
46300
  backgroundColor: "background.default",
46006
46301
  borderRadius: 1,
46007
- fontFamily: "monospace"
46302
+ fontFamily: "monospace",
46303
+ fontSize: "0.8125rem"
46008
46304
  },
46009
46305
  children: backendUpdateInfo.updateCommand
46010
46306
  }
@@ -46013,8 +46309,10 @@ const UpdateNotification = ({
46013
46309
  Button,
46014
46310
  {
46015
46311
  variant: "outlined",
46312
+ size: "small",
46016
46313
  onClick: handleDeferBackendUpdate,
46017
46314
  disabled: checking,
46315
+ sx: secondaryButtonSx,
46018
46316
  children: "Dismiss"
46019
46317
  }
46020
46318
  ) })
@@ -46050,7 +46348,7 @@ const UpdateNotification = ({
46050
46348
  severity: "warning",
46051
46349
  sx: { width: "100%" },
46052
46350
  children: [
46053
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", children: manualUpdateInfo.message }),
46351
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", sx: { fontSize: "0.8125rem" }, children: manualUpdateInfo.message }),
46054
46352
  /* @__PURE__ */ jsxRuntimeExports.jsx(
46055
46353
  Typography,
46056
46354
  {
@@ -46060,7 +46358,8 @@ const UpdateNotification = ({
46060
46358
  p: 1,
46061
46359
  backgroundColor: "background.default",
46062
46360
  borderRadius: 1,
46063
- fontFamily: "monospace"
46361
+ fontFamily: "monospace",
46362
+ fontSize: "0.8125rem"
46064
46363
  },
46065
46364
  children: manualUpdateInfo.command
46066
46365
  }
@@ -54100,7 +54399,7 @@ const CountDisplay = styled$1("span")(({ theme: theme2 }) => ({
54100
54399
  minWidth: "20px",
54101
54400
  height: "1em"
54102
54401
  }));
54103
- const StyledCard$1 = styled$1(Card)(({ theme: theme2 }) => ({
54402
+ const StyledCard$2 = styled$1(Card)(({ theme: theme2 }) => ({
54104
54403
  display: "flex",
54105
54404
  flexDirection: "column",
54106
54405
  height: 410,
@@ -54234,7 +54533,7 @@ const AgentCard = ({
54234
54533
  const likeTooltip = isAuthenticated ? isLiked ? "Unlike agent" : "Like agent" : "Log in to Radient to like agents";
54235
54534
  const favouriteTooltip = isAuthenticated ? isFavourited ? "Unfavourite agent" : "Favourite agent" : "Log in to Radient to favourite agents";
54236
54535
  const downloadTooltip = "Download agent to your computer";
54237
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledCard$1, { onClick: handleCardClick, children: [
54536
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledCard$2, { onClick: handleCardClick, children: [
54238
54537
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
54239
54538
  Box,
54240
54539
  {
@@ -54791,7 +55090,7 @@ const SectionTitle$6 = styled$1(Typography)(({ theme: theme2 }) => ({
54791
55090
  alignItems: "center",
54792
55091
  color: theme2.palette.text.primary
54793
55092
  }));
54794
- const TitleIcon$4 = styled$1(FontAwesomeIcon)(({ theme: theme2 }) => ({
55093
+ const TitleIcon$3 = styled$1(FontAwesomeIcon)(({ theme: theme2 }) => ({
54795
55094
  marginRight: 10,
54796
55095
  color: theme2.palette.primary.main,
54797
55096
  padding: theme2.spacing(0.5),
@@ -54915,25 +55214,30 @@ const UnsetSliderSetting = ({
54915
55214
  };
54916
55215
  const SectionTitle$5 = styled$1(Typography)(({ theme: theme2 }) => ({
54917
55216
  fontWeight: 600,
54918
- marginBottom: theme2.spacing(2),
55217
+ // Adjusted marginBottom for better spacing with collapsible content
55218
+ marginBottom: theme2.spacing(1),
54919
55219
  display: "flex",
54920
55220
  alignItems: "center",
54921
- color: theme2.palette.text.primary
55221
+ color: theme2.palette.text.primary,
55222
+ padding: theme2.spacing(1, 0)
55223
+ // Add some vertical padding for better clickability
54922
55224
  }));
54923
- const TitleIcon$3 = styled$1(FontAwesomeIcon)(({ theme: theme2 }) => ({
54924
- marginRight: 10,
54925
- color: theme2.palette.primary.main,
54926
- padding: theme2.spacing(0.5),
54927
- borderRadius: 999,
54928
- width: 24,
54929
- height: 24,
54930
- backgroundColor: alpha$1(theme2.palette.primary.main, 0.1)
55225
+ const TitleIconContainer = styled$1(Box)(({ theme: theme2 }) => ({
55226
+ marginRight: theme2.spacing(1.5),
55227
+ // Standard spacing
55228
+ display: "flex",
55229
+ alignItems: "center",
55230
+ justifyContent: "center",
55231
+ color: theme2.palette.primary.main
55232
+ // Removed padding, border-radius, and background for a cleaner Lucide icon look
54931
55233
  }));
54932
55234
  const InfoButton$2 = styled$1(IconButton)(({ theme: theme2 }) => ({
54933
55235
  marginLeft: theme2.spacing(1),
54934
- color: theme2.palette.primary.main,
55236
+ color: theme2.palette.text.secondary,
55237
+ // Adjusted for a more subtle look
54935
55238
  "&:hover": {
54936
- backgroundColor: alpha$1(theme2.palette.primary.main, 0.08)
55239
+ backgroundColor: alpha$1(theme2.palette.action.hover, 0.08)
55240
+ // Consistent hover
54937
55241
  }
54938
55242
  }));
54939
55243
  const StyledButton$1 = styled$1(Button)(({ theme: theme2 }) => ({
@@ -54967,501 +55271,532 @@ const ChatSettings = ({
54967
55271
  reactExports.useEffect(() => {
54968
55272
  setLocalAgent(selectedAgent);
54969
55273
  }, [selectedAgent]);
55274
+ const [isExpanded, setIsExpanded] = reactExports.useState(false);
54970
55275
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { mt: 2, mb: 1 }, children: [
54971
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$5, { variant: "subtitle1", children: [
54972
- /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$3, { icon: faComments }),
54973
- "Chat Settings",
54974
- /* @__PURE__ */ jsxRuntimeExports.jsx(
54975
- Tooltip$1,
54976
- {
54977
- title: "Settings that control how the agent generates responses",
54978
- arrow: true,
54979
- placement: "top",
54980
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(InfoButton$2, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faInfoCircle, size: "xs" }) })
54981
- }
54982
- )
54983
- ] }),
54984
- /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { mb: 2 }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", color: "text.secondary", sx: { mb: 2 }, children: "You can set custom values for these settings by updating the options below. If not set, default values will be used that are optimized based on user testing." }) }),
54985
- localAgent.temperature === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
54986
- UnsetSliderSetting,
54987
- {
54988
- label: "Temperature",
54989
- description: "Controls randomness in responses (0.0-1.0). Higher values make output more random.",
54990
- defaultValue: 0.2,
54991
- onSetValue: async (value) => {
54992
- setSavingField("temperature");
54993
- try {
54994
- const update = { temperature: value };
54995
- await updateAgentMutation.mutateAsync({
54996
- agentId: selectedAgent.id,
54997
- update
54998
- });
54999
- setLocalAgent((prev2) => ({
55000
- ...prev2,
55001
- temperature: value
55002
- }));
55003
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55004
- await refetchAgent();
55005
- }
55006
- } catch (_error) {
55007
- } finally {
55008
- setSavingField(null);
55009
- }
55010
- }
55011
- }
55012
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55013
- SliderSetting,
55276
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
55277
+ SectionTitle$5,
55014
55278
  {
55015
- value: localAgent.temperature ?? 0.2,
55016
- label: "Temperature",
55017
- description: "Controls randomness in responses (0.0-1.0). Higher values make output more random.",
55018
- min: 0,
55019
- max: 1,
55020
- step: 0.01,
55021
- isSaving: savingField === "temperature",
55022
- onChange: async (value) => {
55023
- setSavingField("temperature");
55024
- try {
55025
- const update = { temperature: value };
55026
- await updateAgentMutation.mutateAsync({
55027
- agentId: selectedAgent.id,
55028
- update
55029
- });
55030
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55031
- await refetchAgent();
55279
+ variant: "subtitle1",
55280
+ onClick: () => setIsExpanded(!isExpanded),
55281
+ sx: { cursor: "pointer" },
55282
+ children: [
55283
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIconContainer, { children: isExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { size: 20 }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { size: 20 }) }),
55284
+ "Advanced Chat Settings",
55285
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
55286
+ Tooltip$1,
55287
+ {
55288
+ title: "Advanced settings to change how the agent generates responses",
55289
+ arrow: true,
55290
+ placement: "top",
55291
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(InfoButton$2, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faInfoCircle, size: "xs" }) })
55032
55292
  }
55033
- } catch (_error) {
55034
- } finally {
55035
- setSavingField(null);
55036
- }
55037
- }
55293
+ )
55294
+ ]
55038
55295
  }
55039
55296
  ),
55040
- localAgent.top_p === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55041
- UnsetSliderSetting,
55297
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: isExpanded, timeout: "auto", unmountOnExit: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
55298
+ Box,
55042
55299
  {
55043
- label: "Top P",
55044
- description: "Controls cumulative probability of tokens to sample from (0.0-1.0).",
55045
- defaultValue: 0.9,
55046
- onSetValue: async (value) => {
55047
- setSavingField("top_p");
55048
- try {
55049
- const update = { top_p: value };
55050
- await updateAgentMutation.mutateAsync({
55051
- agentId: selectedAgent.id,
55052
- update
55053
- });
55054
- setLocalAgent((prev2) => ({
55055
- ...prev2,
55056
- top_p: value
55057
- }));
55058
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55059
- await refetchAgent();
55300
+ sx: {
55301
+ pt: 1,
55302
+ pb: 2,
55303
+ pl: (theme2) => theme2.spacing(
55304
+ 1.5 + 1.5 + 0.5
55305
+ )
55306
+ },
55307
+ children: [
55308
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
55309
+ Typography,
55310
+ {
55311
+ variant: "caption",
55312
+ color: "text.secondary",
55313
+ sx: { mb: 2, display: "block" },
55314
+ children: "You can set custom values for these settings by updating the options below. If not set, default values will be used that are optimized based on user testing."
55060
55315
  }
55061
- } catch (_error) {
55062
- } finally {
55063
- setSavingField(null);
55064
- }
55065
- }
55066
- }
55067
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55068
- SliderSetting,
55069
- {
55070
- value: localAgent.top_p ?? 0.9,
55071
- label: "Top P",
55072
- description: "Controls cumulative probability of tokens to sample from (0.0-1.0).",
55073
- min: 0,
55074
- max: 1,
55075
- step: 0.01,
55076
- isSaving: savingField === "top_p",
55077
- onChange: async (value) => {
55078
- setSavingField("top_p");
55079
- try {
55080
- const update = { top_p: value };
55081
- await updateAgentMutation.mutateAsync({
55082
- agentId: selectedAgent.id,
55083
- update
55084
- });
55085
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55086
- await refetchAgent();
55316
+ ),
55317
+ localAgent.temperature === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55318
+ UnsetSliderSetting,
55319
+ {
55320
+ label: "Temperature",
55321
+ description: "Controls randomness in responses (0.0-1.0). Higher values make output more random.",
55322
+ defaultValue: 0.2,
55323
+ onSetValue: async (value) => {
55324
+ setSavingField("temperature");
55325
+ try {
55326
+ const update = { temperature: value };
55327
+ await updateAgentMutation.mutateAsync({
55328
+ agentId: selectedAgent.id,
55329
+ update
55330
+ });
55331
+ setLocalAgent((prev2) => ({
55332
+ ...prev2,
55333
+ temperature: value
55334
+ }));
55335
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55336
+ await refetchAgent();
55337
+ }
55338
+ } catch (_error) {
55339
+ } finally {
55340
+ setSavingField(null);
55341
+ }
55342
+ }
55087
55343
  }
55088
- } catch (_error) {
55089
- } finally {
55090
- setSavingField(null);
55091
- }
55092
- }
55093
- }
55094
- ),
55095
- localAgent.top_k === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55096
- UnsetSliderSetting,
55097
- {
55098
- label: "Top K",
55099
- description: "Limits tokens to sample from at each step.",
55100
- defaultValue: 40,
55101
- onSetValue: async (value) => {
55102
- setSavingField("top_k");
55103
- try {
55104
- const update = { top_k: value };
55105
- await updateAgentMutation.mutateAsync({
55106
- agentId: selectedAgent.id,
55107
- update
55108
- });
55109
- setLocalAgent((prev2) => ({
55110
- ...prev2,
55111
- top_k: value
55112
- }));
55113
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55114
- await refetchAgent();
55344
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55345
+ SliderSetting,
55346
+ {
55347
+ value: localAgent.temperature ?? 0.2,
55348
+ label: "Temperature",
55349
+ description: "Controls randomness in responses (0.0-1.0). Higher values make output more random.",
55350
+ min: 0,
55351
+ max: 1,
55352
+ step: 0.01,
55353
+ isSaving: savingField === "temperature",
55354
+ onChange: async (value) => {
55355
+ setSavingField("temperature");
55356
+ try {
55357
+ const update = { temperature: value };
55358
+ await updateAgentMutation.mutateAsync({
55359
+ agentId: selectedAgent.id,
55360
+ update
55361
+ });
55362
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55363
+ await refetchAgent();
55364
+ }
55365
+ } catch (_error) {
55366
+ } finally {
55367
+ setSavingField(null);
55368
+ }
55369
+ }
55115
55370
  }
55116
- } catch (_error) {
55117
- } finally {
55118
- setSavingField(null);
55119
- }
55120
- }
55121
- }
55122
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55123
- SliderSetting,
55124
- {
55125
- value: localAgent.top_k ?? 40,
55126
- label: "Top K",
55127
- description: "Limits tokens to sample from at each step.",
55128
- min: 1,
55129
- max: 100,
55130
- step: 1,
55131
- isSaving: savingField === "top_k",
55132
- onChange: async (value) => {
55133
- setSavingField("top_k");
55134
- try {
55135
- const update = { top_k: value };
55136
- await updateAgentMutation.mutateAsync({
55137
- agentId: selectedAgent.id,
55138
- update
55139
- });
55140
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55141
- await refetchAgent();
55371
+ ),
55372
+ localAgent.top_p === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55373
+ UnsetSliderSetting,
55374
+ {
55375
+ label: "Top P",
55376
+ description: "Controls cumulative probability of tokens to sample from (0.0-1.0).",
55377
+ defaultValue: 0.9,
55378
+ onSetValue: async (value) => {
55379
+ setSavingField("top_p");
55380
+ try {
55381
+ const update = { top_p: value };
55382
+ await updateAgentMutation.mutateAsync({
55383
+ agentId: selectedAgent.id,
55384
+ update
55385
+ });
55386
+ setLocalAgent((prev2) => ({
55387
+ ...prev2,
55388
+ top_p: value
55389
+ }));
55390
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55391
+ await refetchAgent();
55392
+ }
55393
+ } catch (_error) {
55394
+ } finally {
55395
+ setSavingField(null);
55396
+ }
55397
+ }
55142
55398
  }
55143
- } catch (_error) {
55144
- } finally {
55145
- setSavingField(null);
55146
- }
55147
- }
55148
- }
55149
- ),
55150
- localAgent.max_tokens === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55151
- UnsetSliderSetting,
55152
- {
55153
- label: "Max Tokens",
55154
- description: "Maximum tokens to generate in response.",
55155
- defaultValue: 4096,
55156
- onSetValue: async (value) => {
55157
- setSavingField("max_tokens");
55158
- try {
55159
- const update = { max_tokens: value };
55160
- await updateAgentMutation.mutateAsync({
55161
- agentId: selectedAgent.id,
55162
- update
55163
- });
55164
- setLocalAgent((prev2) => ({
55165
- ...prev2,
55166
- max_tokens: value
55167
- }));
55168
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55169
- await refetchAgent();
55399
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55400
+ SliderSetting,
55401
+ {
55402
+ value: localAgent.top_p ?? 0.9,
55403
+ label: "Top P",
55404
+ description: "Controls cumulative probability of tokens to sample from (0.0-1.0).",
55405
+ min: 0,
55406
+ max: 1,
55407
+ step: 0.01,
55408
+ isSaving: savingField === "top_p",
55409
+ onChange: async (value) => {
55410
+ setSavingField("top_p");
55411
+ try {
55412
+ const update = { top_p: value };
55413
+ await updateAgentMutation.mutateAsync({
55414
+ agentId: selectedAgent.id,
55415
+ update
55416
+ });
55417
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55418
+ await refetchAgent();
55419
+ }
55420
+ } catch (_error) {
55421
+ } finally {
55422
+ setSavingField(null);
55423
+ }
55424
+ }
55170
55425
  }
55171
- } catch (_error) {
55172
- } finally {
55173
- setSavingField(null);
55174
- }
55175
- }
55176
- }
55177
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55178
- SliderSetting,
55179
- {
55180
- value: localAgent.max_tokens ?? 4096,
55181
- label: "Max Tokens",
55182
- description: "Maximum tokens to generate in response.",
55183
- min: 1,
55184
- max: 8192,
55185
- step: 1,
55186
- isSaving: savingField === "max_tokens",
55187
- onChange: async (value) => {
55188
- setSavingField("max_tokens");
55189
- try {
55190
- const update = { max_tokens: value };
55191
- await updateAgentMutation.mutateAsync({
55192
- agentId: selectedAgent.id,
55193
- update
55194
- });
55195
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55196
- await refetchAgent();
55426
+ ),
55427
+ localAgent.top_k === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55428
+ UnsetSliderSetting,
55429
+ {
55430
+ label: "Top K",
55431
+ description: "Limits tokens to sample from at each step.",
55432
+ defaultValue: 40,
55433
+ onSetValue: async (value) => {
55434
+ setSavingField("top_k");
55435
+ try {
55436
+ const update = { top_k: value };
55437
+ await updateAgentMutation.mutateAsync({
55438
+ agentId: selectedAgent.id,
55439
+ update
55440
+ });
55441
+ setLocalAgent((prev2) => ({
55442
+ ...prev2,
55443
+ top_k: value
55444
+ }));
55445
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55446
+ await refetchAgent();
55447
+ }
55448
+ } catch (_error) {
55449
+ } finally {
55450
+ setSavingField(null);
55451
+ }
55452
+ }
55197
55453
  }
55198
- } catch (_error) {
55199
- } finally {
55200
- setSavingField(null);
55201
- }
55202
- }
55203
- }
55204
- ),
55205
- localAgent.stop === null ? /* @__PURE__ */ jsxRuntimeExports.jsxs(UnsetContainer, { elevation: 0, children: [
55206
- /* @__PURE__ */ jsxRuntimeExports.jsxs(LabelWrapper, { children: [
55207
- /* @__PURE__ */ jsxRuntimeExports.jsx(LabelText, { variant: "subtitle2", children: "Stop Sequences" }),
55208
- /* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionText$1, { variant: "body2", color: "text.secondary", children: "Sequences that will cause the model to stop generating text." })
55209
- ] }),
55210
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
55211
- Box,
55212
- {
55213
- sx: {
55214
- display: "flex",
55215
- alignItems: "center",
55216
- justifyContent: "space-between"
55217
- },
55218
- children: [
55219
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "caption", color: "text.disabled", children: "Not set yet" }),
55220
- /* @__PURE__ */ jsxRuntimeExports.jsx(
55221
- StyledButton$1,
55222
- {
55223
- onClick: async () => {
55224
- setSavingField("stop");
55225
- try {
55226
- const update = { stop: [] };
55227
- await updateAgentMutation.mutateAsync({
55228
- agentId: selectedAgent.id,
55229
- update
55230
- });
55231
- setLocalAgent((prev2) => ({
55232
- ...prev2,
55233
- stop: []
55234
- }));
55235
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55236
- await refetchAgent();
55237
- }
55238
- } catch (_error) {
55239
- } finally {
55240
- setSavingField(null);
55454
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55455
+ SliderSetting,
55456
+ {
55457
+ value: localAgent.top_k ?? 40,
55458
+ label: "Top K",
55459
+ description: "Limits tokens to sample from at each step.",
55460
+ min: 1,
55461
+ max: 100,
55462
+ step: 1,
55463
+ isSaving: savingField === "top_k",
55464
+ onChange: async (value) => {
55465
+ setSavingField("top_k");
55466
+ try {
55467
+ const update = { top_k: value };
55468
+ await updateAgentMutation.mutateAsync({
55469
+ agentId: selectedAgent.id,
55470
+ update
55471
+ });
55472
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55473
+ await refetchAgent();
55241
55474
  }
55475
+ } catch (_error) {
55476
+ } finally {
55477
+ setSavingField(null);
55478
+ }
55479
+ }
55480
+ }
55481
+ ),
55482
+ localAgent.max_tokens === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55483
+ UnsetSliderSetting,
55484
+ {
55485
+ label: "Max Tokens",
55486
+ description: "Maximum tokens to generate in response.",
55487
+ defaultValue: 4096,
55488
+ onSetValue: async (value) => {
55489
+ setSavingField("max_tokens");
55490
+ try {
55491
+ const update = { max_tokens: value };
55492
+ await updateAgentMutation.mutateAsync({
55493
+ agentId: selectedAgent.id,
55494
+ update
55495
+ });
55496
+ setLocalAgent((prev2) => ({
55497
+ ...prev2,
55498
+ max_tokens: value
55499
+ }));
55500
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55501
+ await refetchAgent();
55502
+ }
55503
+ } catch (_error) {
55504
+ } finally {
55505
+ setSavingField(null);
55506
+ }
55507
+ }
55508
+ }
55509
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55510
+ SliderSetting,
55511
+ {
55512
+ value: localAgent.max_tokens ?? 4096,
55513
+ label: "Max Tokens",
55514
+ description: "Maximum tokens to generate in response.",
55515
+ min: 1,
55516
+ max: 8192,
55517
+ step: 1,
55518
+ isSaving: savingField === "max_tokens",
55519
+ onChange: async (value) => {
55520
+ setSavingField("max_tokens");
55521
+ try {
55522
+ const update = { max_tokens: value };
55523
+ await updateAgentMutation.mutateAsync({
55524
+ agentId: selectedAgent.id,
55525
+ update
55526
+ });
55527
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55528
+ await refetchAgent();
55529
+ }
55530
+ } catch (_error) {
55531
+ } finally {
55532
+ setSavingField(null);
55533
+ }
55534
+ }
55535
+ }
55536
+ ),
55537
+ localAgent.stop === null ? /* @__PURE__ */ jsxRuntimeExports.jsxs(UnsetContainer, { elevation: 0, children: [
55538
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(LabelWrapper, { children: [
55539
+ /* @__PURE__ */ jsxRuntimeExports.jsx(LabelText, { variant: "subtitle2", children: "Stop Sequences" }),
55540
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionText$1, { variant: "body2", color: "text.secondary", children: "Sequences that will cause the model to stop generating text." })
55541
+ ] }),
55542
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
55543
+ Box,
55544
+ {
55545
+ sx: {
55546
+ display: "flex",
55547
+ alignItems: "center",
55548
+ justifyContent: "space-between"
55242
55549
  },
55243
- children: "Set to default (empty)"
55550
+ children: [
55551
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "caption", color: "text.disabled", children: "Not set yet" }),
55552
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
55553
+ StyledButton$1,
55554
+ {
55555
+ onClick: async () => {
55556
+ setSavingField("stop");
55557
+ try {
55558
+ const update = { stop: [] };
55559
+ await updateAgentMutation.mutateAsync({
55560
+ agentId: selectedAgent.id,
55561
+ update
55562
+ });
55563
+ setLocalAgent((prev2) => ({
55564
+ ...prev2,
55565
+ stop: []
55566
+ }));
55567
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55568
+ await refetchAgent();
55569
+ }
55570
+ } catch (_error) {
55571
+ } finally {
55572
+ setSavingField(null);
55573
+ }
55574
+ },
55575
+ children: "Set to default (empty)"
55576
+ }
55577
+ )
55578
+ ]
55244
55579
  }
55245
55580
  )
55246
- ]
55247
- }
55248
- )
55249
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55250
- EditableField,
55251
- {
55252
- value: localAgent.stop?.join("\n") || "",
55253
- label: "Stop Sequences",
55254
- placeholder: "Enter stop sequences (one per line)...",
55255
- icon: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faGear }),
55256
- multiline: true,
55257
- rows: 3,
55258
- isSaving: savingField === "stop",
55259
- onSave: async (value) => {
55260
- setSavingField("stop");
55261
- try {
55262
- const stopSequences = value.split("\n").map((line2) => line2.trim()).filter((line2) => line2.length > 0);
55263
- const update = {
55264
- stop: stopSequences.length > 0 ? stopSequences : void 0
55265
- };
55266
- await updateAgentMutation.mutateAsync({
55267
- agentId: selectedAgent.id,
55268
- update
55269
- });
55270
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55271
- await refetchAgent();
55581
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55582
+ EditableField,
55583
+ {
55584
+ value: localAgent.stop?.join("\n") || "",
55585
+ label: "Stop Sequences",
55586
+ placeholder: "Enter stop sequences (one per line)...",
55587
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faGear }),
55588
+ multiline: true,
55589
+ rows: 3,
55590
+ isSaving: savingField === "stop",
55591
+ onSave: async (value) => {
55592
+ setSavingField("stop");
55593
+ try {
55594
+ const stopSequences = value.split("\n").map((line2) => line2.trim()).filter((line2) => line2.length > 0);
55595
+ const update = {
55596
+ stop: stopSequences.length > 0 ? stopSequences : void 0
55597
+ };
55598
+ await updateAgentMutation.mutateAsync({
55599
+ agentId: selectedAgent.id,
55600
+ update
55601
+ });
55602
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55603
+ await refetchAgent();
55604
+ }
55605
+ } catch (_error) {
55606
+ } finally {
55607
+ setSavingField(null);
55608
+ }
55609
+ }
55272
55610
  }
55273
- } catch (_error) {
55274
- } finally {
55275
- setSavingField(null);
55276
- }
55277
- }
55278
- }
55279
- ),
55280
- localAgent.frequency_penalty === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55281
- UnsetSliderSetting,
55282
- {
55283
- label: "Frequency Penalty",
55284
- description: "Reduces repetition by lowering likelihood of repeated tokens (-2.0 to 2.0).",
55285
- defaultValue: 0,
55286
- onSetValue: async (value) => {
55287
- setSavingField("frequency_penalty");
55288
- try {
55289
- const update = { frequency_penalty: value };
55290
- await updateAgentMutation.mutateAsync({
55291
- agentId: selectedAgent.id,
55292
- update
55293
- });
55294
- setLocalAgent((prev2) => ({
55295
- ...prev2,
55296
- frequency_penalty: value
55297
- }));
55298
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55299
- await refetchAgent();
55611
+ ),
55612
+ localAgent.frequency_penalty === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55613
+ UnsetSliderSetting,
55614
+ {
55615
+ label: "Frequency Penalty",
55616
+ description: "Reduces repetition by lowering likelihood of repeated tokens (-2.0 to 2.0).",
55617
+ defaultValue: 0,
55618
+ onSetValue: async (value) => {
55619
+ setSavingField("frequency_penalty");
55620
+ try {
55621
+ const update = { frequency_penalty: value };
55622
+ await updateAgentMutation.mutateAsync({
55623
+ agentId: selectedAgent.id,
55624
+ update
55625
+ });
55626
+ setLocalAgent((prev2) => ({
55627
+ ...prev2,
55628
+ frequency_penalty: value
55629
+ }));
55630
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55631
+ await refetchAgent();
55632
+ }
55633
+ } catch (_error) {
55634
+ } finally {
55635
+ setSavingField(null);
55636
+ }
55637
+ }
55300
55638
  }
55301
- } catch (_error) {
55302
- } finally {
55303
- setSavingField(null);
55304
- }
55305
- }
55306
- }
55307
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55308
- SliderSetting,
55309
- {
55310
- value: localAgent.frequency_penalty ?? 0,
55311
- label: "Frequency Penalty",
55312
- description: "Reduces repetition by lowering likelihood of repeated tokens (-2.0 to 2.0).",
55313
- min: -2,
55314
- max: 2,
55315
- step: 0.01,
55316
- isSaving: savingField === "frequency_penalty",
55317
- onChange: async (value) => {
55318
- setSavingField("frequency_penalty");
55319
- try {
55320
- const update = { frequency_penalty: value };
55321
- await updateAgentMutation.mutateAsync({
55322
- agentId: selectedAgent.id,
55323
- update
55324
- });
55325
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55326
- await refetchAgent();
55639
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55640
+ SliderSetting,
55641
+ {
55642
+ value: localAgent.frequency_penalty ?? 0,
55643
+ label: "Frequency Penalty",
55644
+ description: "Reduces repetition by lowering likelihood of repeated tokens (-2.0 to 2.0).",
55645
+ min: -2,
55646
+ max: 2,
55647
+ step: 0.01,
55648
+ isSaving: savingField === "frequency_penalty",
55649
+ onChange: async (value) => {
55650
+ setSavingField("frequency_penalty");
55651
+ try {
55652
+ const update = { frequency_penalty: value };
55653
+ await updateAgentMutation.mutateAsync({
55654
+ agentId: selectedAgent.id,
55655
+ update
55656
+ });
55657
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55658
+ await refetchAgent();
55659
+ }
55660
+ } catch (_error) {
55661
+ } finally {
55662
+ setSavingField(null);
55663
+ }
55664
+ }
55327
55665
  }
55328
- } catch (_error) {
55329
- } finally {
55330
- setSavingField(null);
55331
- }
55332
- }
55333
- }
55334
- ),
55335
- localAgent.presence_penalty === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55336
- UnsetSliderSetting,
55337
- {
55338
- label: "Presence Penalty",
55339
- description: "Increases diversity by lowering likelihood of prompt tokens (-2.0 to 2.0).",
55340
- defaultValue: 0,
55341
- onSetValue: async (value) => {
55342
- setSavingField("presence_penalty");
55343
- try {
55344
- const update = { presence_penalty: value };
55345
- await updateAgentMutation.mutateAsync({
55346
- agentId: selectedAgent.id,
55347
- update
55348
- });
55349
- setLocalAgent((prev2) => ({
55350
- ...prev2,
55351
- presence_penalty: value
55352
- }));
55353
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55354
- await refetchAgent();
55666
+ ),
55667
+ localAgent.presence_penalty === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55668
+ UnsetSliderSetting,
55669
+ {
55670
+ label: "Presence Penalty",
55671
+ description: "Increases diversity by lowering likelihood of prompt tokens (-2.0 to 2.0).",
55672
+ defaultValue: 0,
55673
+ onSetValue: async (value) => {
55674
+ setSavingField("presence_penalty");
55675
+ try {
55676
+ const update = { presence_penalty: value };
55677
+ await updateAgentMutation.mutateAsync({
55678
+ agentId: selectedAgent.id,
55679
+ update
55680
+ });
55681
+ setLocalAgent((prev2) => ({
55682
+ ...prev2,
55683
+ presence_penalty: value
55684
+ }));
55685
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55686
+ await refetchAgent();
55687
+ }
55688
+ } catch (_error) {
55689
+ } finally {
55690
+ setSavingField(null);
55691
+ }
55692
+ }
55355
55693
  }
55356
- } catch (_error) {
55357
- } finally {
55358
- setSavingField(null);
55359
- }
55360
- }
55361
- }
55362
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55363
- SliderSetting,
55364
- {
55365
- value: localAgent.presence_penalty ?? 0,
55366
- label: "Presence Penalty",
55367
- description: "Increases diversity by lowering likelihood of prompt tokens (-2.0 to 2.0).",
55368
- min: -2,
55369
- max: 2,
55370
- step: 0.01,
55371
- isSaving: savingField === "presence_penalty",
55372
- onChange: async (value) => {
55373
- setSavingField("presence_penalty");
55374
- try {
55375
- const update = { presence_penalty: value };
55376
- await updateAgentMutation.mutateAsync({
55377
- agentId: selectedAgent.id,
55378
- update
55379
- });
55380
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55381
- await refetchAgent();
55694
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55695
+ SliderSetting,
55696
+ {
55697
+ value: localAgent.presence_penalty ?? 0,
55698
+ label: "Presence Penalty",
55699
+ description: "Increases diversity by lowering likelihood of prompt tokens (-2.0 to 2.0).",
55700
+ min: -2,
55701
+ max: 2,
55702
+ step: 0.01,
55703
+ isSaving: savingField === "presence_penalty",
55704
+ onChange: async (value) => {
55705
+ setSavingField("presence_penalty");
55706
+ try {
55707
+ const update = { presence_penalty: value };
55708
+ await updateAgentMutation.mutateAsync({
55709
+ agentId: selectedAgent.id,
55710
+ update
55711
+ });
55712
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55713
+ await refetchAgent();
55714
+ }
55715
+ } catch (_error) {
55716
+ } finally {
55717
+ setSavingField(null);
55718
+ }
55719
+ }
55382
55720
  }
55383
- } catch (_error) {
55384
- } finally {
55385
- setSavingField(null);
55386
- }
55387
- }
55388
- }
55389
- ),
55390
- localAgent.seed === null ? /* @__PURE__ */ jsxRuntimeExports.jsxs(UnsetContainer, { elevation: 0, children: [
55391
- /* @__PURE__ */ jsxRuntimeExports.jsxs(LabelWrapper, { children: [
55392
- /* @__PURE__ */ jsxRuntimeExports.jsx(LabelText, { variant: "subtitle2", children: "Seed" }),
55393
- /* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionText$1, { variant: "body2", color: "text.secondary", children: "Random number seed for deterministic generation." })
55394
- ] }),
55395
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
55396
- Box,
55397
- {
55398
- sx: {
55399
- display: "flex",
55400
- alignItems: "center",
55401
- justifyContent: "space-between"
55402
- },
55403
- children: [
55404
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "caption", color: "text.disabled", children: "Not set yet" }),
55405
- /* @__PURE__ */ jsxRuntimeExports.jsx(
55406
- StyledButton$1,
55721
+ ),
55722
+ localAgent.seed === null ? /* @__PURE__ */ jsxRuntimeExports.jsxs(UnsetContainer, { elevation: 0, children: [
55723
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(LabelWrapper, { children: [
55724
+ /* @__PURE__ */ jsxRuntimeExports.jsx(LabelText, { variant: "subtitle2", children: "Seed" }),
55725
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionText$1, { variant: "body2", color: "text.secondary", children: "Random number seed for deterministic generation." })
55726
+ ] }),
55727
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
55728
+ Box,
55407
55729
  {
55408
- onClick: async () => {
55409
- setSavingField("seed");
55410
- try {
55411
- const update = { seed: 42 };
55412
- await updateAgentMutation.mutateAsync({
55413
- agentId: selectedAgent.id,
55414
- update
55415
- });
55416
- setLocalAgent((prev2) => ({
55417
- ...prev2,
55418
- seed: 42
55419
- }));
55420
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55421
- await refetchAgent();
55422
- }
55423
- } catch (_error) {
55424
- } finally {
55425
- setSavingField(null);
55426
- }
55730
+ sx: {
55731
+ display: "flex",
55732
+ alignItems: "center",
55733
+ justifyContent: "space-between"
55427
55734
  },
55428
- children: "Set to default (42)"
55735
+ children: [
55736
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "caption", color: "text.disabled", children: "Not set yet" }),
55737
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
55738
+ StyledButton$1,
55739
+ {
55740
+ onClick: async () => {
55741
+ setSavingField("seed");
55742
+ try {
55743
+ const update = { seed: 42 };
55744
+ await updateAgentMutation.mutateAsync({
55745
+ agentId: selectedAgent.id,
55746
+ update
55747
+ });
55748
+ setLocalAgent((prev2) => ({
55749
+ ...prev2,
55750
+ seed: 42
55751
+ }));
55752
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55753
+ await refetchAgent();
55754
+ }
55755
+ } catch (_error) {
55756
+ } finally {
55757
+ setSavingField(null);
55758
+ }
55759
+ },
55760
+ children: "Set to default (42)"
55761
+ }
55762
+ )
55763
+ ]
55429
55764
  }
55430
55765
  )
55431
- ]
55432
- }
55433
- )
55434
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55435
- EditableField,
55436
- {
55437
- value: localAgent.seed?.toString() || "",
55438
- label: "Seed",
55439
- placeholder: "Random number seed for deterministic generation",
55440
- icon: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faGear }),
55441
- isSaving: savingField === "seed",
55442
- onSave: async (value) => {
55443
- setSavingField("seed");
55444
- try {
55445
- const seedValue = value.trim() ? Number.parseInt(value, 10) : void 0;
55446
- if (value.trim() && Number.isNaN(seedValue)) {
55447
- showErrorToast("Seed must be a valid number");
55448
- return;
55449
- }
55450
- const update = { seed: seedValue };
55451
- await updateAgentMutation.mutateAsync({
55452
- agentId: selectedAgent.id,
55453
- update
55454
- });
55455
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55456
- await refetchAgent();
55766
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55767
+ EditableField,
55768
+ {
55769
+ value: localAgent.seed?.toString() || "",
55770
+ label: "Seed",
55771
+ placeholder: "Random number seed for deterministic generation",
55772
+ icon: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faGear }),
55773
+ isSaving: savingField === "seed",
55774
+ onSave: async (value) => {
55775
+ setSavingField("seed");
55776
+ try {
55777
+ const seedValue = value.trim() ? Number.parseInt(value, 10) : void 0;
55778
+ if (value.trim() && Number.isNaN(seedValue)) {
55779
+ showErrorToast("Seed must be a valid number");
55780
+ return;
55781
+ }
55782
+ const update = { seed: seedValue };
55783
+ await updateAgentMutation.mutateAsync({
55784
+ agentId: selectedAgent.id,
55785
+ update
55786
+ });
55787
+ if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55788
+ await refetchAgent();
55789
+ }
55790
+ } catch (_error) {
55791
+ } finally {
55792
+ setSavingField(null);
55793
+ }
55794
+ }
55457
55795
  }
55458
- } catch (_error) {
55459
- } finally {
55460
- setSavingField(null);
55461
- }
55462
- }
55796
+ )
55797
+ ]
55463
55798
  }
55464
- )
55799
+ ) })
55465
55800
  ] });
55466
55801
  };
55467
55802
  const ALLOWED_AGENT_CATEGORIES = [
@@ -66244,9 +66579,15 @@ const GeneralSettings = ({
66244
66579
  refetchAgent,
66245
66580
  initialSelectedAgentId
66246
66581
  }) => {
66247
- const [currentHosting, setCurrentHosting] = reactExports.useState(
66248
- selectedAgent.hosting || ""
66249
- );
66582
+ const { data: config2, isLoading: isConfigLoading } = useConfig();
66583
+ const [currentHosting, setCurrentHosting] = reactExports.useState("");
66584
+ reactExports.useEffect(() => {
66585
+ if (!isConfigLoading && config2?.values) {
66586
+ setCurrentHosting(selectedAgent.hosting || config2.values.hosting || "");
66587
+ } else if (!isConfigLoading) {
66588
+ setCurrentHosting(selectedAgent.hosting || "");
66589
+ }
66590
+ }, [selectedAgent, config2, isConfigLoading]);
66250
66591
  const [tagsSaving, setTagsSaving] = reactExports.useState(false);
66251
66592
  const [categoriesSaving, setCategoriesSaving] = reactExports.useState(false);
66252
66593
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
@@ -66293,7 +66634,7 @@ const GeneralSettings = ({
66293
66634
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(
66294
66635
  HostingSelect,
66295
66636
  {
66296
- value: selectedAgent.hosting || "",
66637
+ value: selectedAgent.hosting || (config2?.values.hosting ?? ""),
66297
66638
  isSaving: savingField === "hosting",
66298
66639
  onSave: async (value) => {
66299
66640
  setSavingField("hosting");
@@ -66320,14 +66661,14 @@ const GeneralSettings = ({
66320
66661
  filterByCredentials: true,
66321
66662
  allowDefault: true
66322
66663
  },
66323
- `hosting-select-${selectedAgent.hosting || ""}`
66664
+ `hosting-select-${selectedAgent.id}-${selectedAgent.hosting || (config2?.values.hosting ?? "default")}`
66324
66665
  )
66325
66666
  }
66326
66667
  ),
66327
66668
  /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, md: 6, "data-tour-tag": "agent-settings-model-select", children: currentHosting ? /* @__PURE__ */ jsxRuntimeExports.jsx(
66328
66669
  ModelSelect,
66329
66670
  {
66330
- value: selectedAgent.model || "",
66671
+ value: selectedAgent.hosting ? selectedAgent.model || "" : selectedAgent.model || (config2?.values.model_name ?? ""),
66331
66672
  hostingId: currentHosting,
66332
66673
  isSaving: savingField === "model",
66333
66674
  allowDefault: true,
@@ -66348,7 +66689,7 @@ const GeneralSettings = ({
66348
66689
  }
66349
66690
  }
66350
66691
  },
66351
- `model-select-${currentHosting}`
66692
+ `model-select-${selectedAgent.id}-${currentHosting}-${selectedAgent.model || (!selectedAgent.hosting && config2?.values.model_name ? config2.values.model_name : "default")}`
66352
66693
  ) : /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldContainer, { children: [
66353
66694
  /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Select a hosting provider first, and then select the AI model that you want to use. Each model has different capabilities and costs. Recommended: Automatic", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$3, { children: [
66354
66695
  /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faRobot }) }),
@@ -66511,26 +66852,35 @@ const SecuritySettings = ({
66511
66852
  refetchAgent,
66512
66853
  initialSelectedAgentId
66513
66854
  }) => {
66514
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { "data-tour-tag": "agent-settings-security", children: [
66855
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { "data-tour-tag": "agent-settings-security", sx: { mt: 4 }, children: [
66515
66856
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$3, { variant: "subtitle1", children: [
66516
66857
  /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$1, { icon: faShieldAlt }),
66517
- "Security Prompt",
66858
+ "Security Instructions",
66518
66859
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66519
66860
  Tooltip$1,
66520
66861
  {
66521
- title: "Security instructions that guide the agent's behavior and limitations",
66862
+ title: `Security instructions that guide the agent's behavior and limitations. This is the "system prompt" for the security agent.`,
66522
66863
  arrow: true,
66523
66864
  placement: "top",
66524
66865
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(InfoButton$1, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faInfoCircle, size: "xs" }) })
66525
66866
  }
66526
66867
  )
66527
66868
  ] }),
66869
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
66870
+ Typography,
66871
+ {
66872
+ variant: "caption",
66873
+ color: "text.secondary",
66874
+ sx: { mb: 1, display: "block" },
66875
+ children: `This prompt is directed to the AI security reviewer. It helps the reviewer decide whether to block or allow actions based on safety. Write as if talking to another agent that is watching this agent (eg. "Allow all git operations", "Don't let the agent access drive files in the restricted folder"). Update this to allow the agent to perform actions if you are getting frequent security blocks.`
66876
+ }
66877
+ ),
66528
66878
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66529
66879
  EditableField,
66530
66880
  {
66531
66881
  value: selectedAgent.security_prompt || "",
66532
66882
  label: "",
66533
- placeholder: "Enter security prompt...",
66883
+ placeholder: "Enter instructions for the security agent...",
66534
66884
  multiline: true,
66535
66885
  rows: 6,
66536
66886
  isSaving: savingField === "security_prompt",
@@ -66594,26 +66944,35 @@ const SystemPromptSettings = ({
66594
66944
  setLocalSystemPrompt(systemPrompt);
66595
66945
  }
66596
66946
  }, [systemPrompt]);
66597
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { "data-tour-tag": "agent-settings-system-prompt", sx: { mt: 4 }, children: [
66947
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { "data-tour-tag": "agent-settings-system-prompt", sx: { mt: 0 }, children: [
66598
66948
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$2, { variant: "subtitle1", children: [
66599
66949
  /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon, { icon: faRobot }),
66600
- "System Prompt",
66950
+ "Agent Instructions",
66601
66951
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66602
66952
  Tooltip$1,
66603
66953
  {
66604
- title: "System instructions that define the agent's behavior and capabilities",
66954
+ title: `System instructions that define the agent's behavior and capabilities. This is the agent's "system prompt"`,
66605
66955
  arrow: true,
66606
66956
  placement: "top",
66607
66957
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(InfoButton, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faInfoCircle, size: "xs" }) })
66608
66958
  }
66609
66959
  )
66610
66960
  ] }),
66961
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
66962
+ Typography,
66963
+ {
66964
+ variant: "caption",
66965
+ color: "text.secondary",
66966
+ sx: { mb: 1, display: "block" },
66967
+ children: `Define the agent's role, personality, or provide context. Write as if talking to the agent (e.g., "You are an expert researcher") and/or about yourself (e.g., "My name is John").`
66968
+ }
66969
+ ),
66611
66970
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66612
66971
  EditableField,
66613
66972
  {
66614
66973
  value: localSystemPrompt,
66615
66974
  label: "",
66616
- placeholder: isLoading ? "Loading system prompt..." : "Enter system prompt...",
66975
+ placeholder: isLoading ? "Loading system prompt..." : "Enter instructions for the agent...",
66617
66976
  multiline: true,
66618
66977
  rows: 6,
66619
66978
  isSaving: savingField === "system_prompt",
@@ -66705,22 +67064,22 @@ const AgentSettings = ({
66705
67064
  }
66706
67065
  ),
66707
67066
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66708
- SecuritySettings,
67067
+ SystemPromptSettings,
66709
67068
  {
66710
67069
  selectedAgent,
66711
67070
  savingField,
66712
67071
  setSavingField,
66713
- updateAgentMutation,
66714
67072
  refetchAgent,
66715
67073
  initialSelectedAgentId
66716
67074
  }
66717
67075
  ),
66718
67076
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66719
- SystemPromptSettings,
67077
+ SecuritySettings,
66720
67078
  {
66721
67079
  selectedAgent,
66722
67080
  savingField,
66723
67081
  setSavingField,
67082
+ updateAgentMutation,
66724
67083
  refetchAgent,
66725
67084
  initialSelectedAgentId
66726
67085
  }
@@ -67745,9 +68104,14 @@ const defaultConversationCanvasState = {
67745
68104
  isOpen: false,
67746
68105
  openTabs: [],
67747
68106
  selectedTabId: null,
67748
- files: []
68107
+ files: [],
68108
+ mentionedFiles: [],
68109
+ viewMode: "documents"
68110
+ };
68111
+ const getConversationState = (conversations, conversationId) => {
68112
+ const existing = conversations[conversationId];
68113
+ return existing ? { ...defaultConversationCanvasState, ...existing } : { ...defaultConversationCanvasState };
67749
68114
  };
67750
- const getConversationState = (conversations, conversationId) => conversations[conversationId] ?? { ...defaultConversationCanvasState };
67751
68115
  const useCanvasStore = create$3()(
67752
68116
  persist(
67753
68117
  (set2, _2) => ({
@@ -67804,6 +68168,71 @@ const useCanvasStore = create$3()(
67804
68168
  };
67805
68169
  return { conversations: newConversations };
67806
68170
  });
68171
+ },
68172
+ setMentionedFiles: (conversationId, mentionedFiles) => {
68173
+ set2((state2) => ({
68174
+ conversations: {
68175
+ ...state2.conversations,
68176
+ [conversationId]: {
68177
+ ...getConversationState(state2.conversations, conversationId),
68178
+ mentionedFiles
68179
+ }
68180
+ }
68181
+ }));
68182
+ },
68183
+ addMentionedFile: (conversationId, file) => {
68184
+ set2((state2) => {
68185
+ const conv = getConversationState(
68186
+ state2.conversations,
68187
+ conversationId
68188
+ );
68189
+ const exists = conv.mentionedFiles.find((d2) => d2.id === file.id);
68190
+ const updated = exists ? conv.mentionedFiles : [...conv.mentionedFiles, file];
68191
+ return {
68192
+ conversations: {
68193
+ ...state2.conversations,
68194
+ [conversationId]: {
68195
+ ...conv,
68196
+ mentionedFiles: updated
68197
+ }
68198
+ }
68199
+ };
68200
+ });
68201
+ },
68202
+ addMentionedFilesBatch: (conversationId, filesToAdd) => {
68203
+ set2((state2) => {
68204
+ const conv = getConversationState(
68205
+ state2.conversations,
68206
+ conversationId
68207
+ );
68208
+ const existingFileIds = new Set(conv.mentionedFiles.map((f2) => f2.id));
68209
+ const newFiles = filesToAdd.filter(
68210
+ (file) => !existingFileIds.has(file.id)
68211
+ );
68212
+ if (newFiles.length === 0) {
68213
+ return state2;
68214
+ }
68215
+ return {
68216
+ conversations: {
68217
+ ...state2.conversations,
68218
+ [conversationId]: {
68219
+ ...conv,
68220
+ mentionedFiles: [...conv.mentionedFiles, ...newFiles]
68221
+ }
68222
+ }
68223
+ };
68224
+ });
68225
+ },
68226
+ setViewMode: (conversationId, viewMode) => {
68227
+ set2((state2) => ({
68228
+ conversations: {
68229
+ ...state2.conversations,
68230
+ [conversationId]: {
68231
+ ...getConversationState(state2.conversations, conversationId),
68232
+ viewMode
68233
+ }
68234
+ }
68235
+ }));
67807
68236
  }
67808
68237
  }),
67809
68238
  {
@@ -86305,7 +86734,7 @@ const languages = [
86305
86734
  name: "Go",
86306
86735
  extensions: ["go"],
86307
86736
  load() {
86308
- return __vitePreload(() => import("./index-DWmNhY0q.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m2) => m2.go());
86737
+ return __vitePreload(() => import("./index-9ll8evaS.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m2) => m2.go());
86309
86738
  }
86310
86739
  }),
86311
86740
  /* @__PURE__ */ LanguageDescription.of({
@@ -86482,7 +86911,7 @@ const languages = [
86482
86911
  alias: ["yml"],
86483
86912
  extensions: ["yaml", "yml"],
86484
86913
  load() {
86485
- return __vitePreload(() => import("./index-DUscOlgJ.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m2) => m2.yaml());
86914
+ return __vitePreload(() => import("./index-BcAunMPD.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m2) => m2.yaml());
86486
86915
  }
86487
86916
  }),
86488
86917
  // Legacy modes ported from CodeMirror 5
@@ -168921,7 +169350,7 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
168921
169350
  registerLayoutLoaders([
168922
169351
  {
168923
169352
  name: "dagre",
168924
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-OKDRZEBW-BxuIa4zh.js"), true ? __vite__mapDeps([6,7,8,9,10,11,1,2]) : void 0, import.meta.url), "loader")
169353
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-OKDRZEBW-BRmuP5ne.js"), true ? __vite__mapDeps([6,7,8,9,10,11,1,2]) : void 0, import.meta.url), "loader")
168925
169354
  }
168926
169355
  ]);
168927
169356
  }, "registerDefaultLayoutLoaders");
@@ -169511,7 +169940,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
169511
169940
  }, "detector");
169512
169941
  var loader = /* @__PURE__ */ __name(async () => {
169513
169942
  const { diagram: diagram2 } = await __vitePreload(async () => {
169514
- const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-De0QKOfp.js");
169943
+ const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-CUWQVTBw.js");
169515
169944
  return { diagram: diagram22 };
169516
169945
  }, true ? __vite__mapDeps([12,13,1,2]) : void 0, import.meta.url);
169517
169946
  return { id, diagram: diagram2 };
@@ -169531,7 +169960,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
169531
169960
  }, "detector");
169532
169961
  var loader2 = /* @__PURE__ */ __name(async () => {
169533
169962
  const { diagram: diagram2 } = await __vitePreload(async () => {
169534
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-b1Ugcxyi.js");
169963
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DO9xIDx0.js");
169535
169964
  return { diagram: diagram22 };
169536
169965
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
169537
169966
  return { id: id2, diagram: diagram2 };
@@ -169557,7 +169986,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
169557
169986
  }, "detector");
169558
169987
  var loader3 = /* @__PURE__ */ __name(async () => {
169559
169988
  const { diagram: diagram2 } = await __vitePreload(async () => {
169560
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-b1Ugcxyi.js");
169989
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DO9xIDx0.js");
169561
169990
  return { diagram: diagram22 };
169562
169991
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
169563
169992
  return { id: id3, diagram: diagram2 };
@@ -169574,7 +170003,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
169574
170003
  }, "detector");
169575
170004
  var loader4 = /* @__PURE__ */ __name(async () => {
169576
170005
  const { diagram: diagram2 } = await __vitePreload(async () => {
169577
- const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-EjRTdPk0.js");
170006
+ const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-B_3VyDfP.js");
169578
170007
  return { diagram: diagram22 };
169579
170008
  }, true ? __vite__mapDeps([17,15,16,1,2]) : void 0, import.meta.url);
169580
170009
  return { id: id4, diagram: diagram2 };
@@ -169591,7 +170020,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
169591
170020
  }, "detector");
169592
170021
  var loader5 = /* @__PURE__ */ __name(async () => {
169593
170022
  const { diagram: diagram2 } = await __vitePreload(async () => {
169594
- const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-BTKdzXBX.js");
170023
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-Jz6QBGPa.js");
169595
170024
  return { diagram: diagram22 };
169596
170025
  }, true ? __vite__mapDeps([18,19,20,21,8,10,11,1,2]) : void 0, import.meta.url);
169597
170026
  return { id: id5, diagram: diagram2 };
@@ -169608,7 +170037,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
169608
170037
  }, "detector");
169609
170038
  var loader6 = /* @__PURE__ */ __name(async () => {
169610
170039
  const { diagram: diagram2 } = await __vitePreload(async () => {
169611
- const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-BYm6m2kF.js");
170040
+ const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-BK37zBtS.js");
169612
170041
  return { diagram: diagram22 };
169613
170042
  }, true ? __vite__mapDeps([22,1,2]) : void 0, import.meta.url);
169614
170043
  return { id: id6, diagram: diagram2 };
@@ -169625,7 +170054,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
169625
170054
  }, "detector");
169626
170055
  var loader7 = /* @__PURE__ */ __name(async () => {
169627
170056
  const { diagram: diagram2 } = await __vitePreload(async () => {
169628
- const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-CzKeKjqX.js");
170057
+ const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-BrTEa3Dg.js");
169629
170058
  return { diagram: diagram22 };
169630
170059
  }, true ? __vite__mapDeps([23,21,8,10,11,1,2]) : void 0, import.meta.url);
169631
170060
  return { id: id7, diagram: diagram2 };
@@ -169641,7 +170070,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
169641
170070
  }, "detector");
169642
170071
  var loader8 = /* @__PURE__ */ __name(async () => {
169643
170072
  const { diagram: diagram2 } = await __vitePreload(async () => {
169644
- const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-BNWxfAYp.js");
170073
+ const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-D_aSId8t.js");
169645
170074
  return { diagram: diagram22 };
169646
170075
  }, true ? __vite__mapDeps([24,19,21,8,10,11,25,1,2]) : void 0, import.meta.url);
169647
170076
  return { id: id8, diagram: diagram2 };
@@ -169657,7 +170086,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
169657
170086
  }, "detector");
169658
170087
  var loader9 = /* @__PURE__ */ __name(async () => {
169659
170088
  const { diagram: diagram2 } = await __vitePreload(async () => {
169660
- const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-D4CXSiul.js");
170089
+ const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-VtpoaDCW.js");
169661
170090
  return { diagram: diagram22 };
169662
170091
  }, true ? __vite__mapDeps([26,1,2]) : void 0, import.meta.url);
169663
170092
  return { id: id9, diagram: diagram2 };
@@ -169674,7 +170103,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
169674
170103
  }, "detector");
169675
170104
  var loader10 = /* @__PURE__ */ __name(async () => {
169676
170105
  const { diagram: diagram2 } = await __vitePreload(async () => {
169677
- const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-B28wS5w8.js");
170106
+ const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-gjn-8kXQ.js");
169678
170107
  return { diagram: diagram22 };
169679
170108
  }, true ? __vite__mapDeps([27,1,2]) : void 0, import.meta.url);
169680
170109
  return { id: id10, diagram: diagram2 };
@@ -169691,7 +170120,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
169691
170120
  }, "detector");
169692
170121
  var loader11 = /* @__PURE__ */ __name(async () => {
169693
170122
  const { diagram: diagram2 } = await __vitePreload(async () => {
169694
- const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-B2P_I3bB.js");
170123
+ const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-DmQX7SmX.js");
169695
170124
  return { diagram: diagram22 };
169696
170125
  }, true ? __vite__mapDeps([28,15,1,2]) : void 0, import.meta.url);
169697
170126
  return { id: id11, diagram: diagram2 };
@@ -169708,7 +170137,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
169708
170137
  }, "detector");
169709
170138
  var loader12 = /* @__PURE__ */ __name(async () => {
169710
170139
  const { diagram: diagram2 } = await __vitePreload(async () => {
169711
- const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-BI1s6_9f.js");
170140
+ const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-Cy6jqgLY.js");
169712
170141
  return { diagram: diagram22 };
169713
170142
  }, true ? __vite__mapDeps([29,13,20,1,2]) : void 0, import.meta.url);
169714
170143
  return { id: id12, diagram: diagram2 };
@@ -169728,7 +170157,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
169728
170157
  }, "detector");
169729
170158
  var loader13 = /* @__PURE__ */ __name(async () => {
169730
170159
  const { diagram: diagram2 } = await __vitePreload(async () => {
169731
- const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-OHQU5BtB.js");
170160
+ const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-D_MSeJ_6.js");
169732
170161
  return { diagram: diagram22 };
169733
170162
  }, true ? __vite__mapDeps([30,31,15,1,2]) : void 0, import.meta.url);
169734
170163
  return { id: id13, diagram: diagram2 };
@@ -169748,7 +170177,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
169748
170177
  }, "detector");
169749
170178
  var loader14 = /* @__PURE__ */ __name(async () => {
169750
170179
  const { diagram: diagram2 } = await __vitePreload(async () => {
169751
- const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-OHQU5BtB.js");
170180
+ const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-D_MSeJ_6.js");
169752
170181
  return { diagram: diagram22 };
169753
170182
  }, true ? __vite__mapDeps([32,31,15,1,2]) : void 0, import.meta.url);
169754
170183
  return { id: id14, diagram: diagram2 };
@@ -169768,7 +170197,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
169768
170197
  }, "detector");
169769
170198
  var loader15 = /* @__PURE__ */ __name(async () => {
169770
170199
  const { diagram: diagram2 } = await __vitePreload(async () => {
169771
- const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-CuGuCLow.js");
170200
+ const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-B5sjzMc3.js");
169772
170201
  return { diagram: diagram22 };
169773
170202
  }, true ? __vite__mapDeps([33,34,15,7,8,9,10,1,2]) : void 0, import.meta.url);
169774
170203
  return { id: id15, diagram: diagram2 };
@@ -169791,7 +170220,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
169791
170220
  }, "detector");
169792
170221
  var loader16 = /* @__PURE__ */ __name(async () => {
169793
170222
  const { diagram: diagram2 } = await __vitePreload(async () => {
169794
- const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-Cf9Nvzou.js");
170223
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-CCntK586.js");
169795
170224
  return { diagram: diagram22 };
169796
170225
  }, true ? __vite__mapDeps([35,34,15,1,2]) : void 0, import.meta.url);
169797
170226
  return { id: id16, diagram: diagram2 };
@@ -169808,7 +170237,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
169808
170237
  }, "detector");
169809
170238
  var loader17 = /* @__PURE__ */ __name(async () => {
169810
170239
  const { diagram: diagram2 } = await __vitePreload(async () => {
169811
- const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-CoTNgbPQ.js");
170240
+ const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-cp-7j6JH.js");
169812
170241
  return { diagram: diagram22 };
169813
170242
  }, true ? __vite__mapDeps([36,13,25,1,2]) : void 0, import.meta.url);
169814
170243
  return { id: id17, diagram: diagram2 };
@@ -169878,7 +170307,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
169878
170307
  }, "detector");
169879
170308
  var loader18 = /* @__PURE__ */ __name(async () => {
169880
170309
  const { diagram: diagram2 } = await __vitePreload(async () => {
169881
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-b1Ugcxyi.js");
170310
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DO9xIDx0.js");
169882
170311
  return { diagram: diagram22 };
169883
170312
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
169884
170313
  return { id: id18, diagram: diagram2 };
@@ -169895,7 +170324,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
169895
170324
  }, "detector");
169896
170325
  var loader19 = /* @__PURE__ */ __name(async () => {
169897
170326
  const { diagram: diagram2 } = await __vitePreload(async () => {
169898
- const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-DF5bq-1Q.js");
170327
+ const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-B24Z4NA2.js");
169899
170328
  return { diagram: diagram22 };
169900
170329
  }, true ? __vite__mapDeps([37,25,1,2]) : void 0, import.meta.url);
169901
170330
  return { id: id19, diagram: diagram2 };
@@ -169912,7 +170341,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
169912
170341
  }, "detector");
169913
170342
  var loader20 = /* @__PURE__ */ __name(async () => {
169914
170343
  const { diagram: diagram2 } = await __vitePreload(async () => {
169915
- const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-BahSAi8Q.js");
170344
+ const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-B8ntf-YJ.js");
169916
170345
  return { diagram: diagram22 };
169917
170346
  }, true ? __vite__mapDeps([38,39,1,2]) : void 0, import.meta.url);
169918
170347
  return { id: id20, diagram: diagram2 };
@@ -169929,7 +170358,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
169929
170358
  }, "detector");
169930
170359
  var loader21 = /* @__PURE__ */ __name(async () => {
169931
170360
  const { diagram: diagram2 } = await __vitePreload(async () => {
169932
- const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-C99jAkvb.js");
170361
+ const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-DT0Ds4_6.js");
169933
170362
  return { diagram: diagram22 };
169934
170363
  }, true ? __vite__mapDeps([40,1,2]) : void 0, import.meta.url);
169935
170364
  return { id: id21, diagram: diagram2 };
@@ -169946,7 +170375,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
169946
170375
  }, "detector");
169947
170376
  var loader22 = /* @__PURE__ */ __name(async () => {
169948
170377
  const { diagram: diagram2 } = await __vitePreload(async () => {
169949
- const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-B7s67NDQ.js");
170378
+ const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-DH2kTl35.js");
169950
170379
  return { diagram: diagram22 };
169951
170380
  }, true ? __vite__mapDeps([41,1,2]) : void 0, import.meta.url);
169952
170381
  return { id: id22, diagram: diagram2 };
@@ -169963,7 +170392,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
169963
170392
  }, "detector");
169964
170393
  var loader23 = /* @__PURE__ */ __name(async () => {
169965
170394
  const { diagram: diagram2 } = await __vitePreload(async () => {
169966
- const { diagram: diagram22 } = await import("./diagram-VNBRO52H-Dk2WOxg5.js");
170395
+ const { diagram: diagram22 } = await import("./diagram-VNBRO52H-Bxh5b-em.js");
169967
170396
  return { diagram: diagram22 };
169968
170397
  }, true ? __vite__mapDeps([42,19,21,8,10,11,1,2]) : void 0, import.meta.url);
169969
170398
  return { id: id23, diagram: diagram2 };
@@ -169979,7 +170408,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
169979
170408
  }, "detector");
169980
170409
  var loader24 = /* @__PURE__ */ __name(async () => {
169981
170410
  const { diagram: diagram2 } = await __vitePreload(async () => {
169982
- const { diagram: diagram22 } = await import("./diagram-SSKATNLV-DKenVGfy.js");
170411
+ const { diagram: diagram22 } = await import("./diagram-SSKATNLV-lmqZ5zjv.js");
169983
170412
  return { diagram: diagram22 };
169984
170413
  }, true ? __vite__mapDeps([43,19,21,8,10,11,1,2]) : void 0, import.meta.url);
169985
170414
  return { id: id24, diagram: diagram2 };
@@ -169995,7 +170424,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
169995
170424
  }, "detector");
169996
170425
  var loader25 = /* @__PURE__ */ __name(async () => {
169997
170426
  const { diagram: diagram2 } = await __vitePreload(async () => {
169998
- const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-YjWXho8z.js");
170427
+ const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-boa_T8E1.js");
169999
170428
  return { diagram: diagram22 };
170000
170429
  }, true ? __vite__mapDeps([44,11,8,7,16,1,2]) : void 0, import.meta.url);
170001
170430
  return { id: id25, diagram: diagram2 };
@@ -170012,7 +170441,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
170012
170441
  }, "detector");
170013
170442
  var loader26 = /* @__PURE__ */ __name(async () => {
170014
170443
  const { diagram: diagram2 } = await __vitePreload(async () => {
170015
- const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-DZu4O8mc.js");
170444
+ const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-DzXvnk9f.js");
170016
170445
  return { diagram: diagram22 };
170017
170446
  }, true ? __vite__mapDeps([45,19,20,21,8,10,11,39,1,2]) : void 0, import.meta.url);
170018
170447
  return { id: id26, diagram: diagram2 };
@@ -171483,6 +171912,351 @@ const CanvasContentComponent = ({ document: document2 }) => {
171483
171912
  return /* @__PURE__ */ jsxRuntimeExports.jsx(CodeEditor, { document: document2 });
171484
171913
  };
171485
171914
  const CanvasContent = reactExports.memo(CanvasContentComponent);
171915
+ const RESOURCE_NAME_REGEX$2 = /name=([^;,]+)/;
171916
+ const PATH_SEPARATOR_REGEX$5 = /[/\\]/;
171917
+ const DATA_URI_REGEX = /^data:([^;,]+)/;
171918
+ const getFileName$4 = (path2) => {
171919
+ if (path2.startsWith("data:image/")) {
171920
+ const nameMatch = path2.match(RESOURCE_NAME_REGEX$2);
171921
+ if (nameMatch?.[1]) {
171922
+ try {
171923
+ return decodeURIComponent(nameMatch[1]);
171924
+ } catch (_2) {
171925
+ return "Pasted Image";
171926
+ }
171927
+ }
171928
+ return "Pasted Image";
171929
+ }
171930
+ if (path2.startsWith("data:")) {
171931
+ const nameMatch = path2.match(RESOURCE_NAME_REGEX$2);
171932
+ if (nameMatch?.[1]) {
171933
+ try {
171934
+ return decodeURIComponent(nameMatch[1]);
171935
+ } catch (_2) {
171936
+ return "Pasted File";
171937
+ }
171938
+ }
171939
+ const mimeTypeMatch = path2.match(DATA_URI_REGEX);
171940
+ if (mimeTypeMatch?.[1]) {
171941
+ const simpleType = mimeTypeMatch[1].split("/")[0];
171942
+ if (simpleType) {
171943
+ return `Pasted ${simpleType.charAt(0).toUpperCase() + simpleType.slice(1)} File`;
171944
+ }
171945
+ }
171946
+ return "Pasted File";
171947
+ }
171948
+ const parts = path2.split(PATH_SEPARATOR_REGEX$5);
171949
+ return parts[parts.length - 1];
171950
+ };
171951
+ const canvasSupportedExtensions = /* @__PURE__ */ new Set([
171952
+ ...Object.keys(langs),
171953
+ ...Object.keys(languageOverrideMap)
171954
+ ]);
171955
+ const isCanvasSupported = (fileName) => {
171956
+ const ext = fileName.toLowerCase().split("/").pop()?.split(".").pop() ?? "";
171957
+ return canvasSupportedExtensions.has(ext);
171958
+ };
171959
+ const defaultFiles = [];
171960
+ const StyledCard$1 = styled$1(Card)(({ theme: theme2 }) => ({
171961
+ display: "flex",
171962
+ flexDirection: "column",
171963
+ height: "100%",
171964
+ backgroundColor: alpha$1(theme2.palette.background.paper, 0.8),
171965
+ backgroundImage: "none",
171966
+ transition: "box-shadow 0.2s ease-in-out",
171967
+ "&:hover": {
171968
+ boxShadow: theme2.shadows[6]
171969
+ },
171970
+ borderRadius: 8
171971
+ }));
171972
+ const StyledImage = styled$1("img")({
171973
+ height: 140,
171974
+ width: "100%",
171975
+ objectFit: "contain",
171976
+ backgroundColor: alpha$1("#000", 0.1)
171977
+ });
171978
+ const StyledVideo = styled$1("video")({
171979
+ height: 140,
171980
+ width: "100%",
171981
+ objectFit: "contain",
171982
+ backgroundColor: alpha$1("#000", 0.1)
171983
+ });
171984
+ const IconBox = styled$1(Box)({
171985
+ height: 140,
171986
+ display: "flex",
171987
+ alignItems: "center",
171988
+ justifyContent: "center"
171989
+ });
171990
+ const FileNameTypography = styled$1(Typography)(({ theme: theme2 }) => ({
171991
+ fontWeight: 400,
171992
+ whiteSpace: "nowrap",
171993
+ overflow: "hidden",
171994
+ textOverflow: "ellipsis",
171995
+ fontSize: "0.7rem",
171996
+ padding: theme2.spacing(0, 0)
171997
+ }));
171998
+ const isImage$2 = (path2) => {
171999
+ const imageExtensions = [
172000
+ ".jpg",
172001
+ ".jpeg",
172002
+ ".png",
172003
+ ".gif",
172004
+ ".webp",
172005
+ ".bmp",
172006
+ ".svg",
172007
+ ".tiff",
172008
+ ".tif",
172009
+ ".ico",
172010
+ ".heic",
172011
+ ".heif",
172012
+ ".avif",
172013
+ ".jfif",
172014
+ ".pjpeg",
172015
+ ".pjp"
172016
+ ];
172017
+ const lowerPath = path2.toLowerCase();
172018
+ return imageExtensions.some((ext) => lowerPath.endsWith(ext));
172019
+ };
172020
+ const isVideo$2 = (path2) => {
172021
+ const videoExtensions = [
172022
+ ".mp4",
172023
+ ".webm",
172024
+ ".ogg",
172025
+ ".mov",
172026
+ ".avi",
172027
+ ".wmv",
172028
+ ".flv",
172029
+ ".mkv",
172030
+ ".m4v",
172031
+ ".3gp",
172032
+ ".3g2"
172033
+ ];
172034
+ const lowerPath = path2.toLowerCase();
172035
+ return videoExtensions.some((ext) => lowerPath.endsWith(ext));
172036
+ };
172037
+ const getAttachmentUrl$2 = (client, path2) => {
172038
+ if (path2.startsWith("http")) {
172039
+ return path2;
172040
+ }
172041
+ if (path2.startsWith("data:")) {
172042
+ return path2;
172043
+ }
172044
+ const normalizedPath = path2.startsWith("file://") ? path2 : `file://${path2}`;
172045
+ if (isImage$2(path2)) {
172046
+ return client.static.getImageUrl(normalizedPath);
172047
+ }
172048
+ if (isVideo$2(path2)) {
172049
+ return client.static.getVideoUrl(normalizedPath);
172050
+ }
172051
+ return path2;
172052
+ };
172053
+ const getIconForFileType = (type2) => {
172054
+ switch (type2) {
172055
+ case "image":
172056
+ return FileImage;
172057
+ case "video":
172058
+ return FileVideo;
172059
+ case "pdf":
172060
+ return ScrollText;
172061
+ case "markdown":
172062
+ case "text":
172063
+ return FileText;
172064
+ case "html":
172065
+ case "code":
172066
+ return Code;
172067
+ case "archive":
172068
+ return Archive;
172069
+ case "document":
172070
+ return FileText;
172071
+ case "spreadsheet":
172072
+ return FileSpreadsheet;
172073
+ case "presentation":
172074
+ return Presentation;
172075
+ case "audio":
172076
+ return AudioLines;
172077
+ default:
172078
+ return File$1;
172079
+ }
172080
+ };
172081
+ const CanvasFileViewer = ({
172082
+ conversationId,
172083
+ onSwitchToDocumentView
172084
+ }) => {
172085
+ const files = useCanvasStore((state2) => {
172086
+ const conv = state2.conversations[conversationId];
172087
+ return conv?.mentionedFiles ?? defaultFiles;
172088
+ });
172089
+ const setFiles = useCanvasStore((s2) => s2.setFiles);
172090
+ const setOpenTabs = useCanvasStore((s2) => s2.setOpenTabs);
172091
+ const setSelectedTab = useCanvasStore((s2) => s2.setSelectedTab);
172092
+ const memoizedFiles = reactExports.useMemo(() => files, [files]);
172093
+ const client = reactExports.useMemo(() => {
172094
+ return createLocalOperatorClient(apiConfig.baseUrl);
172095
+ }, []);
172096
+ const getUrl2 = reactExports.useCallback(
172097
+ (path2) => getAttachmentUrl$2(client, path2),
172098
+ [client]
172099
+ );
172100
+ const handleFileClick = reactExports.useCallback(
172101
+ async (fileDoc) => {
172102
+ const title = fileDoc.title;
172103
+ const fallbackAction = (err) => {
172104
+ if (err) console.error("Error processing file:", err);
172105
+ try {
172106
+ if (fileDoc.path.startsWith("data:")) {
172107
+ console.warn(
172108
+ "Opening data URI with OS default is not directly supported here.",
172109
+ `${fileDoc.path.substring(0, 50)}...`
172110
+ );
172111
+ } else {
172112
+ window.api.openFile(fileDoc.path);
172113
+ }
172114
+ } catch (error) {
172115
+ console.error("Error opening file natively:", error);
172116
+ }
172117
+ };
172118
+ if (fileDoc.path.startsWith("data:")) {
172119
+ if (isCanvasSupported(title)) {
172120
+ const docId = fileDoc.path;
172121
+ const newDoc = {
172122
+ id: docId,
172123
+ title,
172124
+ path: docId,
172125
+ // Store data URI as path for consistency if needed
172126
+ content: fileDoc.path
172127
+ // The content is the data URI itself
172128
+ };
172129
+ const state2 = useCanvasStore.getState();
172130
+ const conversationCanvasState = state2.conversations?.[conversationId];
172131
+ const filesInState = conversationCanvasState?.files ?? [];
172132
+ const openTabsInState = conversationCanvasState?.openTabs ?? [];
172133
+ const updatedFiles = (() => {
172134
+ const idx = filesInState.findIndex((d2) => d2.id === docId);
172135
+ if (idx !== -1) {
172136
+ return [
172137
+ ...filesInState.slice(0, idx),
172138
+ newDoc,
172139
+ ...filesInState.slice(idx + 1)
172140
+ ];
172141
+ }
172142
+ return [...filesInState, newDoc];
172143
+ })();
172144
+ setFiles(conversationId, updatedFiles);
172145
+ const existsTab = openTabsInState.some((t2) => t2.id === docId);
172146
+ const updatedTabs = existsTab ? openTabsInState : [...openTabsInState, { id: docId, title }];
172147
+ setOpenTabs(conversationId, updatedTabs);
172148
+ setSelectedTab(conversationId, docId);
172149
+ onSwitchToDocumentView(docId);
172150
+ } else {
172151
+ fallbackAction();
172152
+ }
172153
+ } else {
172154
+ const normalizedPath = fileDoc.path.startsWith("file://") ? fileDoc.path.substring(7) : fileDoc.path;
172155
+ try {
172156
+ const result = await window.api.readFile(normalizedPath);
172157
+ if (result.success && isCanvasSupported(title)) {
172158
+ const docId = normalizedPath;
172159
+ const newDoc = {
172160
+ id: docId,
172161
+ title,
172162
+ path: normalizedPath,
172163
+ content: result.data
172164
+ };
172165
+ const state2 = useCanvasStore.getState();
172166
+ const conversationCanvasState = state2.conversations?.[conversationId];
172167
+ const filesInState = conversationCanvasState?.files ?? [];
172168
+ const openTabsInState = conversationCanvasState?.openTabs ?? [];
172169
+ const updatedFiles = (() => {
172170
+ const idx = filesInState.findIndex((d2) => d2.id === docId);
172171
+ if (idx !== -1) {
172172
+ return [
172173
+ ...filesInState.slice(0, idx),
172174
+ newDoc,
172175
+ ...filesInState.slice(idx + 1)
172176
+ ];
172177
+ }
172178
+ return [...filesInState, newDoc];
172179
+ })();
172180
+ setFiles(conversationId, updatedFiles);
172181
+ const existsTab = openTabsInState.some((t2) => t2.id === docId);
172182
+ const updatedTabs = existsTab ? openTabsInState : [...openTabsInState, { id: docId, title }];
172183
+ setOpenTabs(conversationId, updatedTabs);
172184
+ setSelectedTab(conversationId, docId);
172185
+ onSwitchToDocumentView(docId);
172186
+ return;
172187
+ }
172188
+ const errorMessage = !result.success && result.error ? result.error instanceof Error ? result.error.message : String(result.error) : "Unknown error reading file";
172189
+ return fallbackAction(errorMessage);
172190
+ } catch (error) {
172191
+ const message2 = error instanceof Error ? error.message : String(error ?? "Unknown error reading file");
172192
+ return fallbackAction(message2);
172193
+ }
172194
+ }
172195
+ },
172196
+ [
172197
+ conversationId,
172198
+ setFiles,
172199
+ setOpenTabs,
172200
+ setSelectedTab,
172201
+ onSwitchToDocumentView
172202
+ ]
172203
+ );
172204
+ if (files.length === 0) {
172205
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
172206
+ Box,
172207
+ {
172208
+ sx: {
172209
+ display: "flex",
172210
+ flexDirection: "column",
172211
+ alignItems: "center",
172212
+ justifyContent: "center",
172213
+ height: "100%",
172214
+ p: 3,
172215
+ textAlign: "center"
172216
+ },
172217
+ children: [
172218
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", gutterBottom: true, children: "No Files in Conversation" }),
172219
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", color: "text.secondary", children: "Files attached to messages will appear here." })
172220
+ ]
172221
+ }
172222
+ );
172223
+ }
172224
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { p: 2, height: "100%", overflowY: "auto" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { container: true, spacing: 2, children: memoizedFiles.map((fileDoc) => {
172225
+ const IconComponent = getIconForFileType(fileDoc.type);
172226
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 6, sm: 4, md: 4, children: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledCard$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
172227
+ CardActionArea,
172228
+ {
172229
+ onClick: () => handleFileClick(fileDoc),
172230
+ sx: { display: "flex", flexDirection: "column", flexGrow: 1 },
172231
+ children: [
172232
+ fileDoc.type === "image" ? /* @__PURE__ */ jsxRuntimeExports.jsx(
172233
+ StyledImage,
172234
+ {
172235
+ src: getUrl2(fileDoc.path),
172236
+ alt: fileDoc.title,
172237
+ title: fileDoc.title
172238
+ }
172239
+ ) : fileDoc.type === "video" ? /* @__PURE__ */ jsxRuntimeExports.jsx(
172240
+ StyledVideo,
172241
+ {
172242
+ src: getUrl2(fileDoc.path),
172243
+ title: fileDoc.title,
172244
+ controls: true,
172245
+ preload: "metadata"
172246
+ }
172247
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(IconBox, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconComponent, { size: 48, strokeWidth: 1 }) }),
172248
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
172249
+ CardContent,
172250
+ {
172251
+ sx: { width: "100%", pt: 1, pb: "8px !important" },
172252
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: fileDoc.title, placement: "bottom", arrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FileNameTypography, { variant: "caption", children: getFileName$4(fileDoc.title) }) })
172253
+ }
172254
+ )
172255
+ ]
172256
+ }
172257
+ ) }) }, fileDoc.id);
172258
+ }) }) });
172259
+ };
171486
172260
  const StyledTabs = styled$1(Tabs)(({ theme: theme2 }) => ({
171487
172261
  borderBottom: `1px solid ${alpha$1(theme2.palette.divider, 0.05)}`,
171488
172262
  maxWidth: "100%",
@@ -171636,8 +172410,22 @@ const CanvasComponent = ({
171636
172410
  initialDocuments = [],
171637
172411
  onChangeActiveDocument: externalChangeActiveDocument,
171638
172412
  onClose,
171639
- onCloseDocument
172413
+ onCloseDocument,
172414
+ conversationId
171640
172415
  }) => {
172416
+ const { setViewMode } = useCanvasStore();
172417
+ const canvasState = useCanvasStore(
172418
+ (state2) => conversationId ? state2.conversations[conversationId] : void 0
172419
+ );
172420
+ const currentView = canvasState?.viewMode ?? "documents";
172421
+ const setCurrentView = reactExports.useCallback(
172422
+ (viewMode) => {
172423
+ if (conversationId) {
172424
+ setViewMode(conversationId, viewMode);
172425
+ }
172426
+ },
172427
+ [conversationId, setViewMode]
172428
+ );
171641
172429
  const documents = initialDocuments;
171642
172430
  const [internalActiveDocumentId, setInternalActiveDocumentId] = reactExports.useState(documents.length > 0 ? documents[0].id : null);
171643
172431
  const activeDocumentId = externalActiveDocumentId ?? internalActiveDocumentId;
@@ -171652,6 +172440,13 @@ const CanvasComponent = ({
171652
172440
  },
171653
172441
  [externalChangeActiveDocument]
171654
172442
  );
172443
+ const handleSwitchToDocumentView = reactExports.useCallback(
172444
+ (documentId) => {
172445
+ setCurrentView("documents");
172446
+ handleChangeActiveDocument(documentId);
172447
+ },
172448
+ [handleChangeActiveDocument, setCurrentView]
172449
+ );
171655
172450
  const handleCloseDocument = reactExports.useCallback(
171656
172451
  (documentId) => {
171657
172452
  onCloseDocument(documentId);
@@ -171676,29 +172471,103 @@ const CanvasComponent = ({
171676
172471
  /* @__PURE__ */ jsxRuntimeExports.jsxs(CanvasHeader, { children: [
171677
172472
  /* @__PURE__ */ jsxRuntimeExports.jsxs(HeaderTitle, { children: [
171678
172473
  /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", fontWeight: 600, children: "Canvas" }),
171679
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "caption", color: "text.secondary", children: "View and manage documents" })
172474
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "caption", color: "text.secondary", children: "Your visual workspace for files and documents" })
171680
172475
  ] }),
171681
- /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { display: "flex", alignItems: "center" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Close Canvas", arrow: true, placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
171682
- CloseButton,
172476
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { display: "flex", alignItems: "center", gap: 0.5 }, children: [
172477
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Documents View", arrow: true, placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
172478
+ IconButton,
172479
+ {
172480
+ onClick: () => setCurrentView("documents"),
172481
+ size: "large",
172482
+ sx: (theme2) => ({
172483
+ color: currentView === "documents" ? theme2.palette.primary.main : theme2.palette.text.secondary,
172484
+ backgroundColor: currentView === "documents" ? alpha$1(theme2.palette.primary.main, 0.08) : "transparent",
172485
+ "&:hover": {
172486
+ backgroundColor: alpha$1(theme2.palette.primary.main, 0.12)
172487
+ },
172488
+ width: 36,
172489
+ height: 36,
172490
+ padding: 0
172491
+ }),
172492
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(FileText, { size: 16 })
172493
+ }
172494
+ ) }),
172495
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Files View", arrow: true, placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
172496
+ IconButton,
172497
+ {
172498
+ onClick: () => setCurrentView("files"),
172499
+ size: "large",
172500
+ sx: (theme2) => ({
172501
+ color: currentView === "files" ? theme2.palette.primary.main : theme2.palette.text.secondary,
172502
+ backgroundColor: currentView === "files" ? alpha$1(theme2.palette.primary.main, 0.08) : "transparent",
172503
+ "&:hover": {
172504
+ backgroundColor: alpha$1(theme2.palette.primary.main, 0.12)
172505
+ },
172506
+ width: 36,
172507
+ height: 36,
172508
+ padding: 0
172509
+ }),
172510
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { size: 16 })
172511
+ }
172512
+ ) }),
172513
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
172514
+ Tooltip$1,
172515
+ {
172516
+ title: "Close Canvas",
172517
+ arrow: true,
172518
+ placement: "top",
172519
+ sx: { padding: 0 },
172520
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
172521
+ CloseButton,
172522
+ {
172523
+ onClick: onClose,
172524
+ size: "large",
172525
+ "data-tour-tag": "close-canvas-button",
172526
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(X$2, { size: 16 })
172527
+ }
172528
+ )
172529
+ }
172530
+ )
172531
+ ] })
172532
+ ] }),
172533
+ currentView === "documents" && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
172534
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
172535
+ CanvasTabs,
171683
172536
  {
171684
- onClick: onClose,
171685
- size: "large",
171686
- "data-tour-tag": "close-canvas-button",
171687
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faTimes, size: "xs" })
172537
+ documents,
172538
+ activeDocumentId,
172539
+ onChangeActiveDocument: handleChangeActiveDocument,
172540
+ onCloseDocument: handleCloseDocument
171688
172541
  }
171689
- ) }) })
172542
+ ),
172543
+ activeDocument && /* @__PURE__ */ jsxRuntimeExports.jsx(CanvasContent, { document: activeDocument }),
172544
+ !activeDocument && documents.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
172545
+ Box,
172546
+ {
172547
+ sx: {
172548
+ display: "flex",
172549
+ flexDirection: "column",
172550
+ alignItems: "center",
172551
+ justifyContent: "center",
172552
+ height: "100%",
172553
+ p: 3,
172554
+ textAlign: "center"
172555
+ },
172556
+ children: [
172557
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", gutterBottom: true, children: "No Documents Open" }),
172558
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", color: "text.secondary", children: "Click on a file in chat or use the files view to open a file." })
172559
+ ]
172560
+ }
172561
+ )
171690
172562
  ] }),
171691
- /* @__PURE__ */ jsxRuntimeExports.jsx(
171692
- CanvasTabs,
172563
+ currentView === "files" && conversationId && /* @__PURE__ */ jsxRuntimeExports.jsx(
172564
+ CanvasFileViewer,
171693
172565
  {
171694
- documents,
171695
- activeDocumentId,
171696
- onChangeActiveDocument: handleChangeActiveDocument,
171697
- onCloseDocument: handleCloseDocument
172566
+ conversationId,
172567
+ onSwitchToDocumentView: handleSwitchToDocumentView
171698
172568
  }
171699
172569
  ),
171700
- activeDocument && /* @__PURE__ */ jsxRuntimeExports.jsx(CanvasContent, { document: activeDocument }),
171701
- !activeDocument && /* @__PURE__ */ jsxRuntimeExports.jsxs(
172570
+ currentView === "files" && !conversationId && /* @__PURE__ */ jsxRuntimeExports.jsxs(
171702
172571
  Box,
171703
172572
  {
171704
172573
  sx: {
@@ -171711,8 +172580,8 @@ const CanvasComponent = ({
171711
172580
  textAlign: "center"
171712
172581
  },
171713
172582
  children: [
171714
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", gutterBottom: true, children: "No Documents Open" }),
171715
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", color: "text.secondary", children: "Click on a file in chat to open it here." })
172583
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", gutterBottom: true, children: "File Viewer" }),
172584
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", color: "text.secondary", children: "No active conversation context to display files." })
171716
172585
  ]
171717
172586
  }
171718
172587
  )
@@ -171892,7 +172761,7 @@ const GenerationSettingsSection = ({
171892
172761
  }) => {
171893
172762
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
171894
172763
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$6, { variant: "subtitle1", children: [
171895
- /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$4, { icon: faSliders }),
172764
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$3, { icon: faSliders }),
171896
172765
  "Generation Settings",
171897
172766
  /* @__PURE__ */ jsxRuntimeExports.jsx(
171898
172767
  Tooltip$1,
@@ -172253,7 +173122,7 @@ const ModelHostingSection = ({
172253
173122
  }) => {
172254
173123
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
172255
173124
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$6, { variant: "subtitle1", children: [
172256
- /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$4, { icon: faServer }),
173125
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$3, { icon: faServer }),
172257
173126
  "Model & Hosting",
172258
173127
  /* @__PURE__ */ jsxRuntimeExports.jsx(
172259
173128
  Tooltip$1,
@@ -173920,6 +174789,47 @@ const LoadingIndicator = reactExports.memo(({ status, currentExecution }) => {
173920
174789
  ] }) }) })
173921
174790
  ] });
173922
174791
  });
174792
+ const getFileTypeFromPath = (filePath) => {
174793
+ if (filePath.startsWith("data:image/")) return "image";
174794
+ if (filePath.startsWith("data:video/")) return "video";
174795
+ if (filePath.startsWith("data:application/pdf")) return "pdf";
174796
+ const extension2 = filePath.split(".").pop()?.toLowerCase();
174797
+ if (!extension2) return "other";
174798
+ if (["png", "jpg", "jpeg", "gif", "bmp", "webp", "svg"].includes(extension2))
174799
+ return "image";
174800
+ if (["mp4", "webm", "ogg", "mov", "avi", "mkv"].includes(extension2))
174801
+ return "video";
174802
+ if (["pdf"].includes(extension2)) return "pdf";
174803
+ if (["md", "markdown"].includes(extension2)) return "markdown";
174804
+ if (["html", "htm"].includes(extension2)) return "html";
174805
+ if (["zip", "tar", "gz", "rar", "7z"].includes(extension2)) return "archive";
174806
+ if (["txt", "log", "csv", "json", "xml", "yaml", "yml"].includes(extension2))
174807
+ return "text";
174808
+ if ([
174809
+ "js",
174810
+ "ts",
174811
+ "jsx",
174812
+ "tsx",
174813
+ "py",
174814
+ "java",
174815
+ "c",
174816
+ "cpp",
174817
+ "cs",
174818
+ "go",
174819
+ "rb",
174820
+ "php",
174821
+ "sh",
174822
+ "css",
174823
+ "scss",
174824
+ "less"
174825
+ ].includes(extension2))
174826
+ return "code";
174827
+ if (["doc", "docx", "odt"].includes(extension2)) return "document";
174828
+ if (["xls", "xlsx", "ods"].includes(extension2)) return "spreadsheet";
174829
+ if (["ppt", "pptx", "odp"].includes(extension2)) return "presentation";
174830
+ if (["mp3", "wav", "aac", "flac"].includes(extension2)) return "audio";
174831
+ return "other";
174832
+ };
173923
174833
  const FILE_EXTENSION_REGEX = /\.([a-zA-Z0-9]+)$/;
173924
174834
  const PATH_SLASH_REGEX = /[\\/]/;
173925
174835
  const getLanguageFromExtension = (filename) => {
@@ -211672,18 +212582,28 @@ const errorSuggestions = {
211672
212582
  "to update your API key."
211673
212583
  ] }),
211674
212584
  "404 models": /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoText, { children: [
211675
- "No models found. Please go to the",
212585
+ "The model you're trying to use is not available. Please go to the",
211676
212586
  " ",
211677
212587
  /* @__PURE__ */ jsxRuntimeExports.jsx(Link$1, { component: Link$2, to: "/settings", color: "inherit", children: "settings page" }),
211678
212588
  " ",
211679
212589
  "to select a different model, or try using Radient to get access to hundreds of models with no rate limits"
211680
212590
  ] }),
211681
212591
  "Call ListModels": /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoText, { children: [
211682
- "No models found. Please go to the",
212592
+ "The model you're trying to use is not available. Please go to the",
211683
212593
  " ",
211684
212594
  /* @__PURE__ */ jsxRuntimeExports.jsx(Link$1, { component: Link$2, to: "/settings", color: "inherit", children: "settings page" }),
211685
212595
  " ",
211686
212596
  "to select a different model, or try using Radient to get access to hundreds of models with no rate limits"
212597
+ ] }),
212598
+ "Failed to interpret action": /* @__PURE__ */ jsxRuntimeExports.jsxs(InfoText, { children: [
212599
+ "The model tried to perform an action but was unable to express its intent in the required schema. Typically this is because you're trying to use a model that might not be sophisticated enough to follow the complex instructions required for agentic AI.",
212600
+ /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
212601
+ /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
212602
+ "Change your model in the",
212603
+ " ",
212604
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Link$1, { component: Link$2, to: "/settings", color: "inherit", children: "settings page" }),
212605
+ " ",
212606
+ "to fix this. We recommend using Radient Automatic to have the best combo of cheap and smart picked for you based on your requests (typically cheaper than bringing your own key), or use one of the recommended models with a star icon."
211687
212607
  ] })
211688
212608
  };
211689
212609
  const ErrorBlock = ({ error, isUser }) => {
@@ -211718,14 +212638,6 @@ const ErrorBlock = ({ error, isUser }) => {
211718
212638
  ] })
211719
212639
  ] });
211720
212640
  };
211721
- const canvasSupportedExtensions = /* @__PURE__ */ new Set([
211722
- ...Object.keys(langs),
211723
- ...Object.keys(languageOverrideMap)
211724
- ]);
211725
- const isCanvasSupported = (fileName) => {
211726
- const ext = fileName.toLowerCase().split("/").pop()?.split(".").pop() ?? "";
211727
- return canvasSupportedExtensions.has(ext);
211728
- };
211729
212641
  const RESOURCE_NAME_REGEX = /name=([^;,]+)/;
211730
212642
  const FileAttachmentContainer = styled$1(Box)(({ theme: theme2 }) => ({
211731
212643
  display: "flex",
@@ -211799,68 +212711,28 @@ const getFileName$3 = (path2) => {
211799
212711
  const parts = path2.split(PATH_SEPARATOR_REGEX$3);
211800
212712
  return parts[parts.length - 1];
211801
212713
  };
211802
- const FileAttachment = ({
211803
- file,
211804
- onClick,
211805
- conversationId
211806
- }) => {
211807
- const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
211808
- const setFiles = useCanvasStore((s2) => s2.setFiles);
211809
- const setOpenTabs = useCanvasStore((s2) => s2.setOpenTabs);
211810
- const setSelectedTab = useCanvasStore((s2) => s2.setSelectedTab);
211811
- const isPastedImage = file.startsWith("data:image/");
211812
- const handleClick = reactExports.useCallback(async () => {
211813
- const title = getFileName$3(file);
211814
- const fallbackAction = (err) => {
211815
- if (err) console.error("Error processing file:", err);
211816
- onClick(file);
211817
- };
211818
- if (file.startsWith("data:")) {
211819
- if (isCanvasSupported(title)) {
211820
- const docId = file;
211821
- const newDoc = {
211822
- id: docId,
211823
- title,
211824
- path: docId,
211825
- // Store data URI as path for consistency if needed
211826
- content: file
211827
- // The content is the data URI itself
211828
- };
211829
- const state2 = useCanvasStore.getState();
211830
- const conversationCanvasState = state2.conversations?.[conversationId];
211831
- const filesInState = conversationCanvasState?.files ?? [];
211832
- const openTabsInState = conversationCanvasState?.openTabs ?? [];
211833
- const updatedFiles = (() => {
211834
- const idx = filesInState.findIndex((d2) => d2.id === docId);
211835
- if (idx !== -1) {
211836
- return [
211837
- ...filesInState.slice(0, idx),
211838
- newDoc,
211839
- ...filesInState.slice(idx + 1)
211840
- ];
211841
- }
211842
- return [...filesInState, newDoc];
211843
- })();
211844
- setFiles(conversationId, updatedFiles);
211845
- const existsTab = openTabsInState.some((t2) => t2.id === docId);
211846
- const updatedTabs = existsTab ? openTabsInState : [...openTabsInState, { id: docId, title }];
211847
- setOpenTabs(conversationId, updatedTabs);
211848
- setSelectedTab(conversationId, docId);
211849
- setCanvasOpen(true);
211850
- } else {
212714
+ const FileAttachment = reactExports.memo(
212715
+ ({ file, onClick, conversationId }) => {
212716
+ const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
212717
+ const handleClick = reactExports.useCallback(async () => {
212718
+ const title = getFileName$3(file);
212719
+ const fallbackAction = (err) => {
212720
+ if (err) console.error("Error processing file:", err);
211851
212721
  onClick(file);
211852
- }
211853
- } else {
211854
- const normalizedPath = file.startsWith("file://") ? file.substring(7) : file;
211855
- try {
211856
- const result = await window.api.readFile(normalizedPath);
211857
- if (result.success && isCanvasSupported(title)) {
211858
- const docId = normalizedPath;
212722
+ };
212723
+ const { setFiles, setOpenTabs, setSelectedTab } = useCanvasStore.getState();
212724
+ if (file.startsWith("data:")) {
212725
+ if (isCanvasSupported(title)) {
212726
+ const docId = file;
211859
212727
  const newDoc = {
211860
212728
  id: docId,
211861
212729
  title,
211862
- path: normalizedPath,
211863
- content: result.data
212730
+ path: docId,
212731
+ // Store data URI as path for consistency if needed
212732
+ content: file,
212733
+ // The content is the data URI itself
212734
+ type: getFileTypeFromPath(file)
212735
+ // Ensure type is included
211864
212736
  };
211865
212737
  const state2 = useCanvasStore.getState();
211866
212738
  const conversationCanvasState = state2.conversations?.[conversationId];
@@ -211883,60 +212755,93 @@ const FileAttachment = ({
211883
212755
  setOpenTabs(conversationId, updatedTabs);
211884
212756
  setSelectedTab(conversationId, docId);
211885
212757
  setCanvasOpen(true);
211886
- return;
212758
+ } else {
212759
+ onClick(file);
211887
212760
  }
211888
- const errorMessage = !result.success && result.error ? result.error instanceof Error ? result.error.message : String(result.error) : "Unknown error reading file";
211889
- return fallbackAction(errorMessage);
211890
- } catch (error) {
211891
- const message2 = error instanceof Error ? error.message : String(error ?? "Unknown error reading file");
211892
- return fallbackAction(message2);
211893
- }
211894
- }
211895
- }, [
211896
- file,
211897
- onClick,
211898
- setFiles,
211899
- setOpenTabs,
211900
- setSelectedTab,
211901
- setCanvasOpen,
211902
- conversationId
211903
- ]);
211904
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
211905
- FileAttachmentContainer,
211906
- {
211907
- onClick: handleClick,
211908
- title: `Click to open ${getFileName$3(file)}`,
211909
- sx: {
211910
- // Adjust padding if it's an image to give it more space, or remove padding
211911
- padding: isPastedImage ? 0 : "8px 12px",
211912
- // If it's an image, let it define its own aspect ratio, otherwise fix height for icon/text
211913
- height: isPastedImage ? "auto" : "auto",
211914
- // Keep auto or set specific for icon
211915
- maxWidth: isPastedImage ? "200px" : "100%"
211916
- // Allow images to be a bit wider if needed
211917
- },
211918
- children: isPastedImage ? /* @__PURE__ */ jsxRuntimeExports.jsx(
211919
- "img",
211920
- {
211921
- src: file,
211922
- alt: "Pasted content preview",
211923
- style: {
211924
- display: "block",
211925
- maxWidth: "100%",
211926
- maxHeight: "150px",
211927
- // Max height for the preview in message
211928
- borderRadius: "8px",
211929
- // Match container's border radius
211930
- objectFit: "contain"
212761
+ } else {
212762
+ const normalizedPath = file.startsWith("file://") ? file.substring(7) : file;
212763
+ try {
212764
+ const result = await window.api.readFile(normalizedPath);
212765
+ if (result.success && isCanvasSupported(title)) {
212766
+ const docId = normalizedPath;
212767
+ const newDoc = {
212768
+ id: docId,
212769
+ title,
212770
+ path: normalizedPath,
212771
+ content: result.data,
212772
+ type: getFileTypeFromPath(file)
212773
+ // Ensure type is included
212774
+ };
212775
+ const state2 = useCanvasStore.getState();
212776
+ const conversationCanvasState = state2.conversations?.[conversationId];
212777
+ const filesInState = conversationCanvasState?.files ?? [];
212778
+ const openTabsInState = conversationCanvasState?.openTabs ?? [];
212779
+ const updatedFiles = (() => {
212780
+ const idx = filesInState.findIndex((d2) => d2.id === docId);
212781
+ if (idx !== -1) {
212782
+ return [
212783
+ ...filesInState.slice(0, idx),
212784
+ newDoc,
212785
+ ...filesInState.slice(idx + 1)
212786
+ ];
212787
+ }
212788
+ return [...filesInState, newDoc];
212789
+ })();
212790
+ setFiles(conversationId, updatedFiles);
212791
+ const existsTab = openTabsInState.some((t2) => t2.id === docId);
212792
+ const updatedTabs = existsTab ? openTabsInState : [...openTabsInState, { id: docId, title }];
212793
+ setOpenTabs(conversationId, updatedTabs);
212794
+ setSelectedTab(conversationId, docId);
212795
+ setCanvasOpen(true);
212796
+ return;
211931
212797
  }
212798
+ const errorMessage = !result.success && result.error ? result.error instanceof Error ? result.error.message : String(result.error) : "Unknown error reading file";
212799
+ return fallbackAction(errorMessage);
212800
+ } catch (error) {
212801
+ const message2 = error instanceof Error ? error.message : String(error ?? "Unknown error reading file");
212802
+ return fallbackAction(message2);
211932
212803
  }
211933
- ) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
211934
- /* @__PURE__ */ jsxRuntimeExports.jsx(FileIcon, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faFile, size: "sm" }) }),
211935
- /* @__PURE__ */ jsxRuntimeExports.jsx(FileName, { variant: "body2", children: getFileName$3(file) })
211936
- ] })
211937
- }
211938
- );
211939
- };
212804
+ }
212805
+ }, [file, onClick, setCanvasOpen, conversationId]);
212806
+ const isPastedImage = file.startsWith("data:image/");
212807
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
212808
+ FileAttachmentContainer,
212809
+ {
212810
+ onClick: handleClick,
212811
+ title: `Click to open ${getFileName$3(file)}`,
212812
+ sx: {
212813
+ // Adjust padding if it's an image to give it more space, or remove padding
212814
+ padding: isPastedImage ? 0 : "8px 12px",
212815
+ // If it's an image, let it define its own aspect ratio, otherwise fix height for icon/text
212816
+ height: isPastedImage ? "auto" : "auto",
212817
+ // Keep auto or set specific for icon
212818
+ maxWidth: isPastedImage ? "200px" : "100%"
212819
+ // Allow images to be a bit wider if needed
212820
+ },
212821
+ children: isPastedImage ? /* @__PURE__ */ jsxRuntimeExports.jsx(
212822
+ "img",
212823
+ {
212824
+ src: file,
212825
+ alt: "Pasted content preview",
212826
+ style: {
212827
+ display: "block",
212828
+ maxWidth: "100%",
212829
+ maxHeight: "150px",
212830
+ // Max height for the preview in message
212831
+ borderRadius: "8px",
212832
+ // Match container's border radius
212833
+ objectFit: "contain"
212834
+ }
212835
+ }
212836
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
212837
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FileIcon, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faFile, size: "sm" }) }),
212838
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FileName, { variant: "body2", children: getFileName$3(file) })
212839
+ ] })
212840
+ }
212841
+ );
212842
+ }
212843
+ );
212844
+ FileAttachment.displayName = "FileAttachment";
211940
212845
  const InvalidAttachmentContainer = styled$1(Box)(({ theme: theme2 }) => ({
211941
212846
  display: "flex",
211942
212847
  alignItems: "center",
@@ -212002,32 +212907,31 @@ const getFileName$1 = (path2) => {
212002
212907
  const parts = path2.split(PATH_SEPARATOR_REGEX$1);
212003
212908
  return parts[parts.length - 1];
212004
212909
  };
212005
- const ImageAttachment = ({
212006
- file,
212007
- src,
212008
- onClick
212009
- }) => {
212010
- const [hasError, setHasError] = reactExports.useState(false);
212011
- const handleClick = () => {
212012
- onClick(file);
212013
- };
212014
- const handleError2 = () => {
212015
- setHasError(true);
212016
- };
212017
- if (hasError) {
212018
- return /* @__PURE__ */ jsxRuntimeExports.jsx(InvalidAttachment, { file });
212019
- }
212020
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
212021
- AttachmentImage,
212022
- {
212023
- src,
212024
- alt: getFileName$1(file),
212025
- onClick: handleClick,
212026
- onError: handleError2,
212027
- title: `Click to open ${getFileName$1(file)}`
212910
+ const ImageAttachment = reactExports.memo(
212911
+ ({ file, src, onClick }) => {
212912
+ const [hasError, setHasError] = reactExports.useState(false);
212913
+ const handleClick = () => {
212914
+ onClick(file);
212915
+ };
212916
+ const handleError2 = () => {
212917
+ setHasError(true);
212918
+ };
212919
+ if (hasError) {
212920
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(InvalidAttachment, { file });
212028
212921
  }
212029
- );
212030
- };
212922
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
212923
+ AttachmentImage,
212924
+ {
212925
+ src,
212926
+ alt: getFileName$1(file),
212927
+ onClick: handleClick,
212928
+ onError: handleError2,
212929
+ title: `Click to open ${getFileName$1(file)}`
212930
+ }
212931
+ );
212932
+ }
212933
+ );
212934
+ ImageAttachment.displayName = "ImageAttachment";
212031
212935
  const CodeContainer$1 = styled$1(Box)({
212032
212936
  marginBottom: 16,
212033
212937
  width: "100%"
@@ -212147,33 +213051,32 @@ const getFileName = (path2) => {
212147
213051
  const parts = path2.split(PATH_SEPARATOR_REGEX);
212148
213052
  return parts[parts.length - 1];
212149
213053
  };
212150
- const VideoAttachment = ({
212151
- file,
212152
- src,
212153
- onClick
212154
- }) => {
212155
- const [hasError, setHasError] = reactExports.useState(false);
212156
- const handleClick = () => {
212157
- onClick(file);
212158
- };
212159
- const handleError2 = () => {
212160
- setHasError(true);
212161
- };
212162
- if (hasError) {
212163
- return /* @__PURE__ */ jsxRuntimeExports.jsx(InvalidAttachment, { file });
212164
- }
212165
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
212166
- AttachmentVideo,
212167
- {
212168
- src,
212169
- controls: true,
212170
- preload: "metadata",
212171
- onClick: handleClick,
212172
- onError: handleError2,
212173
- title: `Click to open ${getFileName(file)}`
213054
+ const VideoAttachment = reactExports.memo(
213055
+ ({ file, src, onClick }) => {
213056
+ const [hasError, setHasError] = reactExports.useState(false);
213057
+ const handleClick = () => {
213058
+ onClick(file);
213059
+ };
213060
+ const handleError2 = () => {
213061
+ setHasError(true);
213062
+ };
213063
+ if (hasError) {
213064
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(InvalidAttachment, { file });
212174
213065
  }
212175
- );
212176
- };
213066
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
213067
+ AttachmentVideo,
213068
+ {
213069
+ src,
213070
+ controls: true,
213071
+ preload: "metadata",
213072
+ onClick: handleClick,
213073
+ onError: handleError2,
213074
+ title: `Click to open ${getFileName(file)}`
213075
+ }
213076
+ );
213077
+ }
213078
+ );
213079
+ VideoAttachment.displayName = "VideoAttachment";
212177
213080
  const isWebUrl$1 = (path2) => {
212178
213081
  return path2.startsWith("http://") || path2.startsWith("https://");
212179
213082
  };
@@ -212333,7 +213236,8 @@ const ActionBlock = ({
212333
213236
  {
212334
213237
  file,
212335
213238
  src: getUrl2(file),
212336
- onClick: handleFileClick
213239
+ onClick: handleFileClick,
213240
+ conversationId
212337
213241
  },
212338
213242
  `${file}`
212339
213243
  )) }),
@@ -212342,7 +213246,8 @@ const ActionBlock = ({
212342
213246
  {
212343
213247
  file,
212344
213248
  src: getUrl2(file),
212345
- onClick: handleFileClick
213249
+ onClick: handleFileClick,
213250
+ conversationId
212346
213251
  },
212347
213252
  `${file}`
212348
213253
  )) }),
@@ -212439,6 +213344,50 @@ const MessageContent = ({ content: content2 }) => {
212439
213344
  if (!content2) return null;
212440
213345
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ContentContainer$2, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(MarkdownRenderer, { content: content2 }) });
212441
213346
  };
213347
+ const ThinkingHeader = styled$1(Box)(({ theme: theme2 }) => ({
213348
+ display: "flex",
213349
+ alignItems: "center",
213350
+ cursor: "pointer",
213351
+ padding: theme2.spacing(0.5, 1),
213352
+ borderRadius: theme2.shape.borderRadius,
213353
+ "&:hover": {
213354
+ backgroundColor: theme2.palette.action.hover
213355
+ },
213356
+ marginBottom: theme2.spacing(1)
213357
+ }));
213358
+ const ThinkingTitle = styled$1(Typography)(({ theme: theme2 }) => ({
213359
+ fontWeight: "bold",
213360
+ marginLeft: theme2.spacing(1),
213361
+ color: theme2.palette.text.secondary
213362
+ }));
213363
+ const ExpandableThinkingContent = ({
213364
+ thinking,
213365
+ isExpanded,
213366
+ onExpand,
213367
+ onCollapse
213368
+ }) => {
213369
+ if (!thinking) {
213370
+ return null;
213371
+ }
213372
+ const handleToggle = (e3) => {
213373
+ if (isExpanded) {
213374
+ onCollapse(e3);
213375
+ } else {
213376
+ onExpand();
213377
+ }
213378
+ };
213379
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { width: "100%" }, children: [
213380
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(ThinkingHeader, { onClick: handleToggle, children: [
213381
+ /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", onClick: handleToggle, sx: { p: 0.5 }, children: isExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { size: 18 }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { size: 18 }) }),
213382
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ThinkingTitle, { variant: "caption", children: "Thinking" })
213383
+ ] }),
213384
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: isExpanded, timeout: "auto", unmountOnExit: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { pl: 4.5, pb: 1 }, children: [
213385
+ " ",
213386
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MarkdownRenderer, { content: thinking })
213387
+ ] }) })
213388
+ ] });
213389
+ };
213390
+ ExpandableThinkingContent.displayName = "ExpandableThinkingContent";
212442
213391
  const ControlsContainer = styled$1(Box, {
212443
213392
  shouldForwardProp: (prop) => prop !== "isUser"
212444
213393
  })(({ isUser }) => ({
@@ -212807,11 +213756,17 @@ const StreamingMessage = ({
212807
213756
  }
212808
213757
  );
212809
213758
  }, [error]);
212810
- const [isExpanded, setIsExpanded] = reactExports.useState(false);
212811
- const handleExpand = () => setIsExpanded(true);
212812
- const handleCollapse = (e3) => {
213759
+ const [isActionExpanded, setIsActionExpanded] = reactExports.useState(false);
213760
+ const [isThinkingExpanded, setIsThinkingExpanded] = reactExports.useState(false);
213761
+ const handleActionExpand = () => setIsActionExpanded(true);
213762
+ const handleActionCollapse = (e3) => {
212813
213763
  e3.stopPropagation();
212814
- setIsExpanded(false);
213764
+ setIsActionExpanded(false);
213765
+ };
213766
+ const handleThinkingExpand = () => setIsThinkingExpanded(true);
213767
+ const handleThinkingCollapse = (e3) => {
213768
+ e3.stopPropagation();
213769
+ setIsThinkingExpanded(false);
212815
213770
  };
212816
213771
  const hasCollapsibleContent = Boolean(
212817
213772
  message2?.execution_type === "action" && message2?.action
@@ -212827,6 +213782,15 @@ const StreamingMessage = ({
212827
213782
  statusIndicator,
212828
213783
  children2,
212829
213784
  loadingIndicator,
213785
+ message2?.thinking && /* @__PURE__ */ jsxRuntimeExports.jsx(
213786
+ ExpandableThinkingContent,
213787
+ {
213788
+ thinking: message2.thinking,
213789
+ isExpanded: isThinkingExpanded,
213790
+ onExpand: handleThinkingExpand,
213791
+ onCollapse: handleThinkingCollapse
213792
+ }
213793
+ ),
212830
213794
  messageContent,
212831
213795
  streamingLoader,
212832
213796
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -212835,9 +213799,9 @@ const StreamingMessage = ({
212835
213799
  executionType: message2?.execution_type || "action",
212836
213800
  action: message2?.action,
212837
213801
  isUser: false,
212838
- isExpanded,
212839
- onExpand: handleExpand,
212840
- onCollapse: handleCollapse,
213802
+ isExpanded: isActionExpanded,
213803
+ onExpand: handleActionExpand,
213804
+ onCollapse: handleActionCollapse,
212841
213805
  hasCollapsibleContent,
212842
213806
  isLoading: isActivelyStreaming,
212843
213807
  children: [
@@ -213010,10 +213974,42 @@ const MessagePaper = ({
213010
213974
  }
213011
213975
  );
213012
213976
  }, [isStreamable, message2, messageStyles, onMessageComplete, isJobRunning]);
213977
+ const [isThinkingExpanded, setIsThinkingExpanded] = reactExports.useState(false);
213978
+ const handleThinkingExpand = reactExports.useCallback(
213979
+ () => setIsThinkingExpanded(true),
213980
+ []
213981
+ );
213982
+ const handleThinkingCollapse = reactExports.useCallback((e3) => {
213983
+ e3.stopPropagation();
213984
+ setIsThinkingExpanded(false);
213985
+ }, []);
213013
213986
  const regularMessageComponents = reactExports.useMemo(() => {
213014
- if (isStreamable) return null;
213015
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: messageStyles, children: filteredChildren });
213016
- }, [isStreamable, messageStyles, filteredChildren]);
213987
+ if (isStreamable && isJobRunning || !message2) return null;
213988
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: messageStyles, children: [
213989
+ message2.thinking && !isUser && /* @__PURE__ */ jsxRuntimeExports.jsx(
213990
+ ExpandableThinkingContent,
213991
+ {
213992
+ thinking: message2.thinking,
213993
+ isExpanded: isThinkingExpanded,
213994
+ onExpand: handleThinkingExpand,
213995
+ onCollapse: handleThinkingCollapse
213996
+ }
213997
+ ),
213998
+ filteredChildren
213999
+ ] });
214000
+ }, [
214001
+ isStreamable,
214002
+ messageStyles,
214003
+ filteredChildren,
214004
+ message2,
214005
+ isUser,
214006
+ isJobRunning,
214007
+ isThinkingExpanded,
214008
+ handleThinkingExpand,
214009
+ // Added
214010
+ handleThinkingCollapse
214011
+ // Added
214012
+ ]);
213017
214013
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
213018
214014
  Box,
213019
214015
  {
@@ -213174,7 +214170,34 @@ const MessageItem = reactExports.memo(
213174
214170
  conversationId,
213175
214171
  currentExecution
213176
214172
  }) => {
213177
- const setFiles = useCanvasStore((s2) => s2.setFiles);
214173
+ const addMentionedFilesBatch = useCanvasStore(
214174
+ (s2) => s2.addMentionedFilesBatch
214175
+ );
214176
+ reactExports.useEffect(() => {
214177
+ if (message2.files && message2.files.length > 0 && conversationId) {
214178
+ const canvasDocuments = message2.files.map((fileString) => {
214179
+ if (fileString.startsWith("data:")) {
214180
+ return null;
214181
+ }
214182
+ const title = getFileName$4(fileString);
214183
+ const fileType = getFileTypeFromPath(fileString);
214184
+ const normalizedPath = fileString.startsWith("file://") ? fileString.substring(7) : fileString;
214185
+ const id27 = normalizedPath;
214186
+ return {
214187
+ id: id27,
214188
+ title,
214189
+ path: normalizedPath,
214190
+ content: normalizedPath,
214191
+ // Placeholder
214192
+ type: fileType
214193
+ // type is optional in CanvasDocument, but getFileTypeFromPath provides it
214194
+ };
214195
+ }).filter(Boolean);
214196
+ if (canvasDocuments.length > 0) {
214197
+ addMentionedFilesBatch(conversationId, canvasDocuments);
214198
+ }
214199
+ }
214200
+ }, [message2.files, conversationId, addMentionedFilesBatch]);
213178
214201
  const client = reactExports.useMemo(() => {
213179
214202
  return createLocalOperatorClient(apiConfig.baseUrl);
213180
214203
  }, []);
@@ -213197,47 +214220,8 @@ const MessageItem = reactExports.memo(
213197
214220
  );
213198
214221
  }
213199
214222
  }, []);
213200
- reactExports.useEffect(() => {
213201
- if (!message2.files || message2.files.length === 0) return;
213202
- const state2 = useCanvasStore.getState();
213203
- const conv = state2.conversations[conversationId];
213204
- if (!conv) return;
213205
- const { openTabs, files } = conv;
213206
- if (!openTabs || openTabs.length === 0) return;
213207
- (async () => {
213208
- let updatedFiles = files;
213209
- let didUpdate = false;
213210
- for (const filePath of message2.files ?? []) {
213211
- const normalizedPath = filePath.startsWith("file://") ? filePath.substring(7) : filePath;
213212
- const tabIsOpen = openTabs.some((tab2) => tab2.id === normalizedPath);
213213
- if (!tabIsOpen) continue;
213214
- const fileIdx = updatedFiles.findIndex(
213215
- (f2) => f2.id === normalizedPath
213216
- );
213217
- if (fileIdx === -1) continue;
213218
- try {
213219
- const result = await window.api.readFile(normalizedPath);
213220
- if (result.success) {
213221
- const currentDoc = updatedFiles[fileIdx];
213222
- if (currentDoc.content !== result.data) {
213223
- const updatedDoc = { ...currentDoc, content: result.data };
213224
- updatedFiles = [
213225
- ...updatedFiles.slice(0, fileIdx),
213226
- updatedDoc,
213227
- ...updatedFiles.slice(fileIdx + 1)
213228
- ];
213229
- didUpdate = true;
213230
- }
213231
- }
213232
- } catch (_2) {
213233
- }
213234
- }
213235
- if (didUpdate) {
213236
- setFiles(conversationId, updatedFiles);
213237
- }
213238
- })();
213239
- }, [message2.files, conversationId, setFiles]);
213240
- const shouldHide = (message2.action === "DONE" || message2.action === "ASK") && message2.execution_type === "action" && message2.task_classification === "conversation" || !message2.message && (!message2.files || message2.files.length === 0) && !message2.code && !message2.stdout && !message2.stderr && !message2.logging && message2.is_complete || message2.is_streamable && !message2.is_complete && !currentExecution;
214223
+ const isMessageContentEmpty = !message2.message && (!message2.files || message2.files.length === 0) && !message2.code && !message2.stdout && !message2.stderr && !message2.logging;
214224
+ const shouldHide = (message2.action === "DONE" || message2.action === "ASK") && message2.execution_type === "action" && message2.task_classification === "conversation" || isMessageContentEmpty && message2.is_complete || message2.is_streamable && !message2.is_complete && isMessageContentEmpty && !currentExecution;
213241
214225
  if (shouldHide) {
213242
214226
  return null;
213243
214227
  }
@@ -213297,7 +214281,8 @@ const MessageItem = reactExports.memo(
213297
214281
  {
213298
214282
  file,
213299
214283
  src: getUrl2(file),
213300
- onClick: handleFileClick
214284
+ onClick: handleFileClick,
214285
+ conversationId
213301
214286
  },
213302
214287
  `${message2.id}-${file}`
213303
214288
  )) }),
@@ -213306,7 +214291,8 @@ const MessageItem = reactExports.memo(
213306
214291
  {
213307
214292
  file,
213308
214293
  src: getUrl2(file),
213309
- onClick: handleFileClick
214294
+ onClick: handleFileClick,
214295
+ conversationId
213310
214296
  },
213311
214297
  `${message2.id}-${file}`
213312
214298
  )) }),
@@ -213358,7 +214344,8 @@ const MessageItem = reactExports.memo(
213358
214344
  {
213359
214345
  file,
213360
214346
  src: getUrl2(file),
213361
- onClick: handleFileClick
214347
+ onClick: handleFileClick,
214348
+ conversationId
213362
214349
  },
213363
214350
  `${message2.id}-${file}`
213364
214351
  )) }),
@@ -213367,7 +214354,8 @@ const MessageItem = reactExports.memo(
213367
214354
  {
213368
214355
  file,
213369
214356
  src: getUrl2(file),
213370
- onClick: handleFileClick
214357
+ onClick: handleFileClick,
214358
+ conversationId
213371
214359
  },
213372
214360
  `${message2.id}-${file}`
213373
214361
  )) }),
@@ -213796,6 +214784,7 @@ const ChatContent = ({
213796
214784
  {
213797
214785
  activeDocumentId: selectedTabId,
213798
214786
  initialDocuments: files,
214787
+ conversationId,
213799
214788
  onChangeActiveDocument: (documentId) => setSelectedTab(conversationId, documentId),
213800
214789
  onClose: () => useUiPreferencesStore.getState().setCanvasOpen(false),
213801
214790
  onCloseDocument: (docId) => {
@@ -214437,7 +215426,8 @@ const ChatPage = () => {
214437
215426
  });
214438
215427
  const { isFarFromBottom, scrollToBottom } = useScrollToBottom(
214439
215428
  50,
214440
- messagesContainerRef
215429
+ messagesContainerRef,
215430
+ messages.length
214441
215431
  );
214442
215432
  const messagesEndRef = reactExports.useRef(null);
214443
215433
  reactExports.useEffect(() => {
@@ -214781,12 +215771,12 @@ const OnboardingDialog = ({
214781
215771
  ...dialogProps,
214782
215772
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs(ContentContainer$1, { children: [
214783
215773
  title && /* @__PURE__ */ jsxRuntimeExports.jsx(StyledDialogTitle, { children: title }),
214784
- stepIndicators && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { px: 3, pt: 0, pb: 0, mb: 0 }, children: stepIndicators }),
215774
+ stepIndicators && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { px: 3, pt: 1, pb: 0, mb: 0 }, children: stepIndicators }),
214785
215775
  /* @__PURE__ */ jsxRuntimeExports.jsx(
214786
215776
  Box,
214787
215777
  {
214788
215778
  sx: {
214789
- padding: theme2.spacing(0, 3, 1),
215779
+ padding: theme2.spacing(2, 3, 1),
214790
215780
  flexGrow: 1,
214791
215781
  overflowY: "auto",
214792
215782
  "&::-webkit-scrollbar": {
@@ -216041,7 +217031,7 @@ const CardSubtitle = styled$1(Typography)(({ theme: theme2 }) => ({
216041
217031
  fontSize: "0.875rem",
216042
217032
  // Consistent small text size
216043
217033
  color: theme2.palette.text.secondary,
216044
- marginBottom: theme2.spacing(3),
217034
+ marginBottom: theme2.spacing(2),
216045
217035
  // Consistent margin
216046
217036
  lineHeight: 1.5
216047
217037
  }));
@@ -216070,13 +217060,6 @@ const RadientBoldTextSpan$1 = styled$1("span")(() => ({
216070
217060
  fontWeight: "bold",
216071
217061
  color: radientTheme.palette.primary.main
216072
217062
  }));
216073
- const FreeText = styled$1(Typography)(({ theme: theme2 }) => ({
216074
- fontSize: "1.25rem",
216075
- fontWeight: 600,
216076
- color: theme2.palette.text.primary,
216077
- // Standard text color
216078
- display: "inline"
216079
- }));
216080
217063
  const ChooseOption = styled$1(Typography)(({ theme: theme2 }) => ({
216081
217064
  position: "absolute",
216082
217065
  bottom: theme2.spacing(2),
@@ -216135,6 +217118,14 @@ const RadientChoiceStep = ({
216135
217118
  " ",
216136
217119
  /* @__PURE__ */ jsxRuntimeExports.jsx(RadientPassText, { children: "Radient Pass" })
216137
217120
  ] }),
217121
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
217122
+ CardSubtitle,
217123
+ {
217124
+ variant: "subtitle1",
217125
+ sx: { mb: 1, fontWeight: 600 },
217126
+ children: "Recommended for most users."
217127
+ }
217128
+ ),
216138
217129
  /* @__PURE__ */ jsxRuntimeExports.jsxs(CardSubtitle, { variant: "body2", children: [
216139
217130
  "Designed for",
216140
217131
  " ",
@@ -216149,7 +217140,7 @@ const RadientChoiceStep = ({
216149
217140
  ", no credit card required."
216150
217141
  ] })
216151
217142
  ] }),
216152
- /* @__PURE__ */ jsxRuntimeExports.jsxs(CardIcon, { sx: { width: 150, height: 150, mb: 3 }, children: [
217143
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(CardIcon, { sx: { width: 150, height: 150, mb: 1 }, children: [
216153
217144
  " ",
216154
217145
  /* @__PURE__ */ jsxRuntimeExports.jsx(
216155
217146
  "img",
@@ -216196,11 +217187,16 @@ const RadientChoiceStep = ({
216196
217187
  " ",
216197
217188
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { flex: 1, pr: 2 }, children: [
216198
217189
  " ",
216199
- /* @__PURE__ */ jsxRuntimeExports.jsxs(CardTitle$1, { variant: "h6", children: [
216200
- "Set up your own keys ",
216201
- /* @__PURE__ */ jsxRuntimeExports.jsx(FreeText, { children: "(Technical Setup)" })
216202
- ] }),
216203
- /* @__PURE__ */ jsxRuntimeExports.jsx(CardSubtitle, { variant: "body2", children: "Full flexibility for technical users. Bring your own API keys for providers like OpenRouter, OpenAI, Anthropic, Google, Tavily API, FAL, and manage billing with providers separately. Experiment manually to find the best models and providers for your needs." })
217190
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CardTitle$1, { variant: "h6", children: "Set up your own keys" }),
217191
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
217192
+ CardSubtitle,
217193
+ {
217194
+ variant: "subtitle1",
217195
+ sx: { mb: 1, fontWeight: 600 },
217196
+ children: "For advanced and technical users."
217197
+ }
217198
+ ),
217199
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CardSubtitle, { variant: "body2", sx: { mb: 0 }, children: "Bring your own API keys for providers like OpenRouter, OpenAI, Anthropic, Google, Tavily API, FAL, and manage billing with providers separately. Experiment manually to find the best models and providers for your needs." })
216204
217200
  ] }),
216205
217201
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
216206
217202
  Box,
@@ -216229,7 +217225,7 @@ const RadientChoiceStep = ({
216229
217225
  ] })
216230
217226
  ] })
216231
217227
  ] }) }),
216232
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$1, { sx: { mt: 3, textAlign: "center" }, children: [
217228
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$1, { sx: { mt: 2, textAlign: "center" }, children: [
216233
217229
  /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { component: "span", sx: { mr: 0.5 }, children: "💡" }),
216234
217230
  "You can always change your setup later in Settings."
216235
217231
  ] })
@@ -217063,33 +218059,44 @@ const OnboardingModal = ({ open: open2 }) => {
217063
218059
  ]
217064
218060
  }
217065
218061
  );
217066
- const stepIndicators = /* @__PURE__ */ jsxRuntimeExports.jsx(StepIndicatorContainer, { children: currentStep && steps.map((step) => {
217067
- const isActive = currentStep === step;
217068
- const isVisited = visitedSteps.has(step);
217069
- const canNavigate = isVisited && step !== currentStep;
217070
- const isNonNavigableRadientStep = step === OnboardingStep.RADIENT_CHOICE || step === OnboardingStep.RADIENT_SIGNIN;
217071
- return (
217072
- // @ts-ignore - Ignore potential TS issue with Tooltip wrapping custom component
217073
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: stepTitles[step], arrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
217074
- StepDot,
217075
- {
217076
- active: isActive,
217077
- visited: isVisited,
217078
- onClick: () => {
217079
- if (canNavigate && !isNonNavigableRadientStep) {
217080
- setCurrentStep(step);
218062
+ const stepIndicatorDotElements = reactExports.useMemo(() => {
218063
+ if (!currentStep || steps.length === 0) {
218064
+ return null;
218065
+ }
218066
+ return steps.map((step) => {
218067
+ const isActive = currentStep === step;
218068
+ const isVisited = visitedSteps.has(step);
218069
+ const canNavigate = isVisited && step !== currentStep;
218070
+ const isNonNavigableRadientStep = step === OnboardingStep.RADIENT_CHOICE || step === OnboardingStep.RADIENT_SIGNIN;
218071
+ return (
218072
+ // @ts-ignore - Ignore potential TS issue with Tooltip wrapping custom component
218073
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: stepTitles[step], arrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
218074
+ StepDot,
218075
+ {
218076
+ active: isActive,
218077
+ visited: isVisited,
218078
+ onClick: () => {
218079
+ if (canNavigate && !isNonNavigableRadientStep) {
218080
+ setCurrentStep(step);
218081
+ }
217081
218082
  }
217082
218083
  }
217083
- }
217084
- ) }, step)
217085
- );
217086
- }) });
218084
+ ) }, step)
218085
+ );
218086
+ });
218087
+ }, [currentStep, steps, visitedSteps, setCurrentStep]);
218088
+ const finalStepIndicatorsProp = reactExports.useMemo(() => {
218089
+ if (!stepIndicatorDotElements) {
218090
+ return null;
218091
+ }
218092
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(StepIndicatorContainer, { children: stepIndicatorDotElements });
218093
+ }, [stepIndicatorDotElements]);
217087
218094
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
217088
218095
  OnboardingDialog,
217089
218096
  {
217090
218097
  open: open2,
217091
218098
  title: dialogTitle,
217092
- stepIndicators,
218099
+ stepIndicators: finalStepIndicatorsProp,
217093
218100
  actions: dialogActions,
217094
218101
  dialogProps: {
217095
218102
  disableEscapeKeyDown: true