local-operator-ui 0.10.3 → 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-EzHHlzQ2.js → _basePickBy-HBztaYeO.js} +2 -2
  4. package/out/renderer/assets/{_baseUniq-gsrujidQ.js → _baseUniq-Dz-_QJw-.js} +1 -1
  5. package/out/renderer/assets/{arc-BCv8Fw_K.js → arc-BbFClCF-.js} +1 -1
  6. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-Blezk2Ti.js → architectureDiagram-IEHRJDOE-DzXvnk9f.js} +8 -8
  7. package/out/renderer/assets/{blockDiagram-JOT3LUYC-C4WZB7AT.js → blockDiagram-JOT3LUYC-boa_T8E1.js} +6 -6
  8. package/out/renderer/assets/{c4Diagram-VJAJSXHY-BbjP-YS8.js → c4Diagram-VJAJSXHY-CUWQVTBw.js} +3 -3
  9. package/out/renderer/assets/{channel-D6yjNcJf.js → channel-BnLrRohu.js} +1 -1
  10. package/out/renderer/assets/{chunk-4BMEZGHF-CAYxbhII.js → chunk-4BMEZGHF-C5nHFO1H.js} +1 -1
  11. package/out/renderer/assets/{chunk-A2AXSNBT-CGDu1QLK.js → chunk-A2AXSNBT-YCzWQkj3.js} +2 -2
  12. package/out/renderer/assets/{chunk-AEK57VVT-BwLprdGO.js → chunk-AEK57VVT-RSKL44QH.js} +2 -2
  13. package/out/renderer/assets/{chunk-D6G4REZN-yKTyo2sO.js → chunk-D6G4REZN-y_oEq-tO.js} +1 -1
  14. package/out/renderer/assets/{chunk-RZ5BOZE2-CHk9wGn8.js → chunk-RZ5BOZE2-Bh5Vf1hk.js} +1 -1
  15. package/out/renderer/assets/{chunk-XZIHB7SX-myvP7KMy.js → chunk-XZIHB7SX-BEC6jdKb.js} +1 -1
  16. package/out/renderer/assets/{classDiagram-GIVACNV2-DI2nEo8v.js → classDiagram-GIVACNV2-D_MSeJ_6.js} +4 -4
  17. package/out/renderer/assets/{classDiagram-v2-COTLJTTW-DI2nEo8v.js → classDiagram-v2-COTLJTTW-D_MSeJ_6.js} +4 -4
  18. package/out/renderer/assets/{clone-NHzLXKtr.js → clone-DTo9NJBP.js} +1 -1
  19. package/out/renderer/assets/{dagre-OKDRZEBW-CvnmDUr0.js → dagre-OKDRZEBW-BRmuP5ne.js} +7 -7
  20. package/out/renderer/assets/{diagram-SSKATNLV-O49-awgq.js → diagram-SSKATNLV-lmqZ5zjv.js} +7 -7
  21. package/out/renderer/assets/{diagram-VNBRO52H-DeKLJIGp.js → diagram-VNBRO52H-Bxh5b-em.js} +7 -7
  22. package/out/renderer/assets/{erDiagram-Q7BY3M3F-DzP1awnz.js → erDiagram-Q7BY3M3F-B_3VyDfP.js} +4 -4
  23. package/out/renderer/assets/{flowDiagram-4HSFHLVR-CPmNwaPw.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-Dp3PblQc.js → ganttDiagram-APWFNJXF-BK37zBtS.js} +2 -2
  26. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-C1xsOObr.js → gitGraphDiagram-7IBYFJ6S-Jz6QBGPa.js} +8 -8
  27. package/out/renderer/assets/{graph-DD2O2F0I.js → graph-DzxdEvr-.js} +2 -2
  28. package/out/renderer/assets/{index-d3kL-g6p.js → index-9ll8evaS.js} +2 -2
  29. package/out/renderer/assets/{index-BENHuC7d.js → index-BcAunMPD.js} +2 -2
  30. package/out/renderer/assets/{index-B81dnBsp.js → index-DSUSTpnZ.js} +1902 -985
  31. package/out/renderer/assets/{infoDiagram-PH2N3AL5-BsZjZuz9.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-CIbQJUBG.js → journeyDiagram-U35MCT3I-cp-7j6JH.js} +4 -4
  34. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-Cy2XBRai.js → kanban-definition-NDS4AKOZ-DT0Ds4_6.js} +2 -2
  35. package/out/renderer/assets/{layout-C6pZQ3GW.js → layout-RVhCHjA1.js} +4 -4
  36. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-BDcXZ7s9.js → mindmap-definition-ALO5MXBD-B8ntf-YJ.js} +2 -2
  37. package/out/renderer/assets/{pieDiagram-IB7DONF6-BLIypjx1.js → pieDiagram-IB7DONF6-D_aSId8t.js} +8 -8
  38. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-Bhg4pj46.js → quadrantDiagram-7GDLP6J5-VtpoaDCW.js} +2 -2
  39. package/out/renderer/assets/{radar-MK3ICKWK-Bu7OdI64.js → radar-MK3ICKWK-Bvvn6bXt.js} +4 -4
  40. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-GsFjX0JT.js → requirementDiagram-KVF5MWMF-DmQX7SmX.js} +3 -3
  41. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-BbAeFKsA.js → sankeyDiagram-QLVOVGJD-DH2kTl35.js} +2 -2
  42. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-B3KEUS4U.js → sequenceDiagram-X6HHIX6F-Cy6jqgLY.js} +4 -4
  43. package/out/renderer/assets/{stateDiagram-DGXRK772-C1L3HV7N.js → stateDiagram-DGXRK772-B5sjzMc3.js} +8 -8
  44. package/out/renderer/assets/{stateDiagram-v2-YXO3MK2T-ADxTzXk9.js → stateDiagram-v2-YXO3MK2T-CCntK586.js} +4 -4
  45. package/out/renderer/assets/{timeline-definition-BDJGKUSR-CTEAWzHG.js → timeline-definition-BDJGKUSR-B24Z4NA2.js} +3 -3
  46. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-Uznmu3l-.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-d3kL-g6p.js","./fonts-DlbYGWfq.js","./fonts-B9KBGB-g.css","./index-BENHuC7d.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js","./dagre-OKDRZEBW-CvnmDUr0.js","./graph-DD2O2F0I.js","./_baseUniq-gsrujidQ.js","./layout-C6pZQ3GW.js","./_basePickBy-EzHHlzQ2.js","./clone-NHzLXKtr.js","./c4Diagram-VJAJSXHY-BbjP-YS8.js","./chunk-D6G4REZN-yKTyo2sO.js","./flowDiagram-4HSFHLVR-CPmNwaPw.js","./chunk-RZ5BOZE2-CHk9wGn8.js","./channel-D6yjNcJf.js","./erDiagram-Q7BY3M3F-DzP1awnz.js","./gitGraphDiagram-7IBYFJ6S-C1xsOObr.js","./chunk-4BMEZGHF-CAYxbhII.js","./chunk-XZIHB7SX-myvP7KMy.js","./radar-MK3ICKWK-Bu7OdI64.js","./ganttDiagram-APWFNJXF-Dp3PblQc.js","./infoDiagram-PH2N3AL5-BsZjZuz9.js","./pieDiagram-IB7DONF6-BLIypjx1.js","./arc-BCv8Fw_K.js","./quadrantDiagram-7GDLP6J5-Bhg4pj46.js","./xychartDiagram-VJFVF3MP-Uznmu3l-.js","./requirementDiagram-KVF5MWMF-GsFjX0JT.js","./sequenceDiagram-X6HHIX6F-B3KEUS4U.js","./classDiagram-GIVACNV2-DI2nEo8v.js","./chunk-A2AXSNBT-CGDu1QLK.js","./classDiagram-v2-COTLJTTW-DI2nEo8v.js","./stateDiagram-DGXRK772-C1L3HV7N.js","./chunk-AEK57VVT-BwLprdGO.js","./stateDiagram-v2-YXO3MK2T-ADxTzXk9.js","./journeyDiagram-U35MCT3I-CIbQJUBG.js","./timeline-definition-BDJGKUSR-CTEAWzHG.js","./mindmap-definition-ALO5MXBD-BDcXZ7s9.js","./cytoscape.esm-C0AOj4uS.js","./kanban-definition-NDS4AKOZ-Cy2XBRai.js","./sankeyDiagram-QLVOVGJD-BbAeFKsA.js","./diagram-VNBRO52H-DeKLJIGp.js","./diagram-SSKATNLV-O49-awgq.js","./blockDiagram-JOT3LUYC-C4WZB7AT.js","./architectureDiagram-IEHRJDOE-Blezk2Ti.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
  *
@@ -40511,6 +40718,7 @@ const useUpdateConfig = () => {
40511
40718
  }
40512
40719
  });
40513
40720
  };
40721
+ let isAnyBackendAuthInProgress = false;
40514
40722
  const radientClient = createRadientClient(
40515
40723
  apiConfig.radientBaseUrl,
40516
40724
  apiConfig.radientClientId
@@ -40531,6 +40739,13 @@ const useOidcAuth = (options) => {
40531
40739
  const { mutateAsync: updateConfig } = useUpdateConfig();
40532
40740
  const handleBackendAuth = reactExports.useCallback(
40533
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;
40534
40749
  setError(null);
40535
40750
  try {
40536
40751
  if (provider === "google") {
@@ -40648,6 +40863,8 @@ const useOidcAuth = (options) => {
40648
40863
  console.error("Error during backend authentication:", err);
40649
40864
  setError(msg || "Authentication failed during backend processing.");
40650
40865
  showErrorToast(msg || "Authentication failed");
40866
+ } finally {
40867
+ isAnyBackendAuthInProgress = false;
40651
40868
  }
40652
40869
  },
40653
40870
  [queryClient2, updateConfig, onSuccess, onAfterCredentialUpdate]
@@ -45604,38 +45821,66 @@ var libExports = requireLib();
45604
45821
  const HTMLReactParser = /* @__PURE__ */ getDefaultExportFromCjs(libExports);
45605
45822
  const parse$7 = HTMLReactParser.default || HTMLReactParser;
45606
45823
  const UpdateContainer = styled$1("div")(({ theme: theme2 }) => ({
45607
- padding: 24,
45824
+ padding: theme2.spacing(2.5),
45608
45825
  borderRadius: 8,
45609
45826
  backgroundColor: theme2.palette.background.paper,
45610
- 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)",
45611
45829
  position: "fixed",
45612
- top: 20,
45613
- right: 20,
45830
+ top: theme2.spacing(2.5),
45831
+ right: theme2.spacing(2.5),
45614
45832
  zIndex: 1300,
45615
- // Higher than most components but below modal dialogs
45616
- width: 560,
45617
- // 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
+ },
45618
45854
  "& a": {
45619
45855
  color: theme2.palette.primary.main,
45620
45856
  textDecoration: "none",
45857
+ fontWeight: 500,
45621
45858
  "&:hover": {
45622
45859
  textDecoration: "underline"
45623
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)
45624
45868
  }
45625
45869
  }));
45626
- const UpdateActions = styled$1("div")({
45870
+ const UpdateActions = styled$1("div")(({ theme: theme2 }) => ({
45627
45871
  display: "flex",
45628
45872
  justifyContent: "flex-end",
45629
- gap: 8,
45630
- marginTop: 24
45631
- });
45632
- const ProgressContainer = styled$1("div")({
45633
- marginTop: 16,
45634
- marginBottom: 8
45635
- });
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
+ }));
45636
45880
  const UpdateNotification = ({
45637
45881
  autoCheck = true
45638
45882
  }) => {
45883
+ const theme2 = useTheme$2();
45639
45884
  const [checking, setChecking] = reactExports.useState(false);
45640
45885
  const [updatingBackend, setUpdatingBackend] = reactExports.useState(false);
45641
45886
  const [updateAvailable, setUpdateAvailable] = reactExports.useState(false);
@@ -45815,10 +46060,25 @@ const UpdateNotification = ({
45815
46060
  const handleSnackbarClose = () => {
45816
46061
  setSnackbarOpen(false);
45817
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
+ };
45818
46078
  if (checking) {
45819
46079
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
45820
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: updatingBackend ? "Updating Server" : "Checking for Updates" }),
45821
- /* @__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..." }),
45822
46082
  /* @__PURE__ */ jsxRuntimeExports.jsx(ProgressContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(LinearProgress, {}) })
45823
46083
  ] });
45824
46084
  }
@@ -45837,15 +46097,15 @@ const UpdateNotification = ({
45837
46097
  if (updateAvailable && !updateDownloaded && updateInfo) {
45838
46098
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45839
46099
  /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
45840
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: "Update Available" }),
45841
- /* @__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: [
45842
46102
  "Version ",
45843
46103
  updateInfo.version,
45844
46104
  " is available. You are currently using version ",
45845
46105
  appVersion,
45846
46106
  "."
45847
46107
  ] }),
45848
- 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: [
45849
46109
  "Release Notes:",
45850
46110
  " ",
45851
46111
  typeof updateInfo.releaseNotes === "string" ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
@@ -45871,7 +46131,7 @@ const UpdateNotification = ({
45871
46131
  )
45872
46132
  ] }),
45873
46133
  downloading && downloadProgress && /* @__PURE__ */ jsxRuntimeExports.jsxs(ProgressContainer, { children: [
45874
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", children: [
46134
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "body2", sx: { fontSize: "0.8125rem" }, children: [
45875
46135
  "Downloading: ",
45876
46136
  Math.round(downloadProgress.percent),
45877
46137
  "%"
@@ -45884,22 +46144,30 @@ const UpdateNotification = ({
45884
46144
  sx: { mt: 1 }
45885
46145
  }
45886
46146
  ),
45887
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { variant: "caption", sx: { mt: 0.5, display: "block" }, children: [
45888
- Math.round(downloadProgress.transferred / 1024),
45889
- " KB of",
45890
- " ",
45891
- Math.round(downloadProgress.total / 1024),
45892
- " KB"
45893
- ] })
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
+ )
45894
46161
  ] }),
45895
46162
  /* @__PURE__ */ jsxRuntimeExports.jsx(UpdateActions, { children: !downloading && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45896
46163
  /* @__PURE__ */ jsxRuntimeExports.jsx(
45897
46164
  Button,
45898
46165
  {
45899
46166
  variant: "contained",
45900
- color: "primary",
46167
+ size: "small",
45901
46168
  onClick: downloadUpdate,
45902
46169
  disabled: downloading,
46170
+ sx: buttonSx,
45903
46171
  children: "Download Update"
45904
46172
  }
45905
46173
  ),
@@ -45907,8 +46175,10 @@ const UpdateNotification = ({
45907
46175
  Button,
45908
46176
  {
45909
46177
  variant: "outlined",
46178
+ size: "small",
45910
46179
  onClick: handleDeferUpdate,
45911
46180
  disabled: downloading,
46181
+ sx: secondaryButtonSx,
45912
46182
  children: "Update Later"
45913
46183
  }
45914
46184
  )
@@ -45932,18 +46202,36 @@ const UpdateNotification = ({
45932
46202
  if (updateDownloaded && updateInfo) {
45933
46203
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45934
46204
  /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
45935
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: "Update Ready to Install" }),
45936
- /* @__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: [
45937
46207
  "Version ",
45938
46208
  updateInfo.version,
45939
46209
  " is available. You are currently using version ",
45940
46210
  appVersion,
45941
46211
  "."
45942
46212
  ] }),
45943
- /* @__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." }),
45944
46214
  /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateActions, { children: [
45945
- /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "contained", color: "primary", onClick: installUpdate, children: "Install Now" }),
45946
- /* @__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
+ )
45947
46235
  ] })
45948
46236
  ] }),
45949
46237
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -45961,23 +46249,24 @@ const UpdateNotification = ({
45961
46249
  if (backendUpdateAvailable && backendUpdateInfo) {
45962
46250
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45963
46251
  /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateContainer, { children: [
45964
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: "Server Update Available" }),
45965
- /* @__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: [
45966
46254
  "Server version ",
45967
46255
  backendUpdateInfo.latestVersion,
45968
46256
  " is available. You are currently using version ",
45969
46257
  backendUpdateInfo.currentVersion,
45970
46258
  "."
45971
46259
  ] }),
45972
- /* @__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." }),
45973
46261
  backendUpdateInfo.canManageUpdate ? /* @__PURE__ */ jsxRuntimeExports.jsxs(UpdateActions, { children: [
45974
46262
  /* @__PURE__ */ jsxRuntimeExports.jsx(
45975
46263
  Button,
45976
46264
  {
45977
46265
  variant: "contained",
45978
- color: "primary",
46266
+ size: "small",
45979
46267
  onClick: updateBackend,
45980
46268
  disabled: checking,
46269
+ sx: buttonSx,
45981
46270
  children: checking ? "Updating..." : "Update Server"
45982
46271
  }
45983
46272
  ),
@@ -45985,13 +46274,22 @@ const UpdateNotification = ({
45985
46274
  Button,
45986
46275
  {
45987
46276
  variant: "outlined",
46277
+ size: "small",
45988
46278
  onClick: handleDeferBackendUpdate,
45989
46279
  disabled: checking,
46280
+ sx: secondaryButtonSx,
45990
46281
  children: "Update Later"
45991
46282
  }
45992
46283
  )
45993
46284
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
45994
- /* @__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
+ ),
45995
46293
  /* @__PURE__ */ jsxRuntimeExports.jsx(
45996
46294
  Typography,
45997
46295
  {
@@ -46001,7 +46299,8 @@ const UpdateNotification = ({
46001
46299
  p: 1,
46002
46300
  backgroundColor: "background.default",
46003
46301
  borderRadius: 1,
46004
- fontFamily: "monospace"
46302
+ fontFamily: "monospace",
46303
+ fontSize: "0.8125rem"
46005
46304
  },
46006
46305
  children: backendUpdateInfo.updateCommand
46007
46306
  }
@@ -46010,8 +46309,10 @@ const UpdateNotification = ({
46010
46309
  Button,
46011
46310
  {
46012
46311
  variant: "outlined",
46312
+ size: "small",
46013
46313
  onClick: handleDeferBackendUpdate,
46014
46314
  disabled: checking,
46315
+ sx: secondaryButtonSx,
46015
46316
  children: "Dismiss"
46016
46317
  }
46017
46318
  ) })
@@ -46047,7 +46348,7 @@ const UpdateNotification = ({
46047
46348
  severity: "warning",
46048
46349
  sx: { width: "100%" },
46049
46350
  children: [
46050
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", children: manualUpdateInfo.message }),
46351
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body2", sx: { fontSize: "0.8125rem" }, children: manualUpdateInfo.message }),
46051
46352
  /* @__PURE__ */ jsxRuntimeExports.jsx(
46052
46353
  Typography,
46053
46354
  {
@@ -46057,7 +46358,8 @@ const UpdateNotification = ({
46057
46358
  p: 1,
46058
46359
  backgroundColor: "background.default",
46059
46360
  borderRadius: 1,
46060
- fontFamily: "monospace"
46361
+ fontFamily: "monospace",
46362
+ fontSize: "0.8125rem"
46061
46363
  },
46062
46364
  children: manualUpdateInfo.command
46063
46365
  }
@@ -54097,7 +54399,7 @@ const CountDisplay = styled$1("span")(({ theme: theme2 }) => ({
54097
54399
  minWidth: "20px",
54098
54400
  height: "1em"
54099
54401
  }));
54100
- const StyledCard$1 = styled$1(Card)(({ theme: theme2 }) => ({
54402
+ const StyledCard$2 = styled$1(Card)(({ theme: theme2 }) => ({
54101
54403
  display: "flex",
54102
54404
  flexDirection: "column",
54103
54405
  height: 410,
@@ -54231,7 +54533,7 @@ const AgentCard = ({
54231
54533
  const likeTooltip = isAuthenticated ? isLiked ? "Unlike agent" : "Like agent" : "Log in to Radient to like agents";
54232
54534
  const favouriteTooltip = isAuthenticated ? isFavourited ? "Unfavourite agent" : "Favourite agent" : "Log in to Radient to favourite agents";
54233
54535
  const downloadTooltip = "Download agent to your computer";
54234
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledCard$1, { onClick: handleCardClick, children: [
54536
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledCard$2, { onClick: handleCardClick, children: [
54235
54537
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
54236
54538
  Box,
54237
54539
  {
@@ -54788,7 +55090,7 @@ const SectionTitle$6 = styled$1(Typography)(({ theme: theme2 }) => ({
54788
55090
  alignItems: "center",
54789
55091
  color: theme2.palette.text.primary
54790
55092
  }));
54791
- const TitleIcon$4 = styled$1(FontAwesomeIcon)(({ theme: theme2 }) => ({
55093
+ const TitleIcon$3 = styled$1(FontAwesomeIcon)(({ theme: theme2 }) => ({
54792
55094
  marginRight: 10,
54793
55095
  color: theme2.palette.primary.main,
54794
55096
  padding: theme2.spacing(0.5),
@@ -54912,25 +55214,30 @@ const UnsetSliderSetting = ({
54912
55214
  };
54913
55215
  const SectionTitle$5 = styled$1(Typography)(({ theme: theme2 }) => ({
54914
55216
  fontWeight: 600,
54915
- marginBottom: theme2.spacing(2),
55217
+ // Adjusted marginBottom for better spacing with collapsible content
55218
+ marginBottom: theme2.spacing(1),
54916
55219
  display: "flex",
54917
55220
  alignItems: "center",
54918
- 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
54919
55224
  }));
54920
- const TitleIcon$3 = styled$1(FontAwesomeIcon)(({ theme: theme2 }) => ({
54921
- marginRight: 10,
54922
- color: theme2.palette.primary.main,
54923
- padding: theme2.spacing(0.5),
54924
- borderRadius: 999,
54925
- width: 24,
54926
- height: 24,
54927
- 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
54928
55233
  }));
54929
55234
  const InfoButton$2 = styled$1(IconButton)(({ theme: theme2 }) => ({
54930
55235
  marginLeft: theme2.spacing(1),
54931
- color: theme2.palette.primary.main,
55236
+ color: theme2.palette.text.secondary,
55237
+ // Adjusted for a more subtle look
54932
55238
  "&:hover": {
54933
- backgroundColor: alpha$1(theme2.palette.primary.main, 0.08)
55239
+ backgroundColor: alpha$1(theme2.palette.action.hover, 0.08)
55240
+ // Consistent hover
54934
55241
  }
54935
55242
  }));
54936
55243
  const StyledButton$1 = styled$1(Button)(({ theme: theme2 }) => ({
@@ -54964,501 +55271,532 @@ const ChatSettings = ({
54964
55271
  reactExports.useEffect(() => {
54965
55272
  setLocalAgent(selectedAgent);
54966
55273
  }, [selectedAgent]);
55274
+ const [isExpanded, setIsExpanded] = reactExports.useState(false);
54967
55275
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { mt: 2, mb: 1 }, children: [
54968
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$5, { variant: "subtitle1", children: [
54969
- /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$3, { icon: faComments }),
54970
- "Chat Settings",
54971
- /* @__PURE__ */ jsxRuntimeExports.jsx(
54972
- Tooltip$1,
54973
- {
54974
- title: "Settings that control how the agent generates responses",
54975
- arrow: true,
54976
- placement: "top",
54977
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(InfoButton$2, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faInfoCircle, size: "xs" }) })
54978
- }
54979
- )
54980
- ] }),
54981
- /* @__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." }) }),
54982
- localAgent.temperature === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
54983
- UnsetSliderSetting,
54984
- {
54985
- label: "Temperature",
54986
- description: "Controls randomness in responses (0.0-1.0). Higher values make output more random.",
54987
- defaultValue: 0.2,
54988
- onSetValue: async (value) => {
54989
- setSavingField("temperature");
54990
- try {
54991
- const update = { temperature: value };
54992
- await updateAgentMutation.mutateAsync({
54993
- agentId: selectedAgent.id,
54994
- update
54995
- });
54996
- setLocalAgent((prev2) => ({
54997
- ...prev2,
54998
- temperature: value
54999
- }));
55000
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55001
- await refetchAgent();
55002
- }
55003
- } catch (_error) {
55004
- } finally {
55005
- setSavingField(null);
55006
- }
55007
- }
55008
- }
55009
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55010
- SliderSetting,
55276
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
55277
+ SectionTitle$5,
55011
55278
  {
55012
- value: localAgent.temperature ?? 0.2,
55013
- label: "Temperature",
55014
- description: "Controls randomness in responses (0.0-1.0). Higher values make output more random.",
55015
- min: 0,
55016
- max: 1,
55017
- step: 0.01,
55018
- isSaving: savingField === "temperature",
55019
- onChange: async (value) => {
55020
- setSavingField("temperature");
55021
- try {
55022
- const update = { temperature: value };
55023
- await updateAgentMutation.mutateAsync({
55024
- agentId: selectedAgent.id,
55025
- update
55026
- });
55027
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55028
- 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" }) })
55029
55292
  }
55030
- } catch (_error) {
55031
- } finally {
55032
- setSavingField(null);
55033
- }
55034
- }
55293
+ )
55294
+ ]
55035
55295
  }
55036
55296
  ),
55037
- localAgent.top_p === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55038
- UnsetSliderSetting,
55297
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: isExpanded, timeout: "auto", unmountOnExit: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
55298
+ Box,
55039
55299
  {
55040
- label: "Top P",
55041
- description: "Controls cumulative probability of tokens to sample from (0.0-1.0).",
55042
- defaultValue: 0.9,
55043
- onSetValue: async (value) => {
55044
- setSavingField("top_p");
55045
- try {
55046
- const update = { top_p: value };
55047
- await updateAgentMutation.mutateAsync({
55048
- agentId: selectedAgent.id,
55049
- update
55050
- });
55051
- setLocalAgent((prev2) => ({
55052
- ...prev2,
55053
- top_p: value
55054
- }));
55055
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55056
- 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."
55057
55315
  }
55058
- } catch (_error) {
55059
- } finally {
55060
- setSavingField(null);
55061
- }
55062
- }
55063
- }
55064
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55065
- SliderSetting,
55066
- {
55067
- value: localAgent.top_p ?? 0.9,
55068
- label: "Top P",
55069
- description: "Controls cumulative probability of tokens to sample from (0.0-1.0).",
55070
- min: 0,
55071
- max: 1,
55072
- step: 0.01,
55073
- isSaving: savingField === "top_p",
55074
- onChange: async (value) => {
55075
- setSavingField("top_p");
55076
- try {
55077
- const update = { top_p: value };
55078
- await updateAgentMutation.mutateAsync({
55079
- agentId: selectedAgent.id,
55080
- update
55081
- });
55082
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55083
- 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
+ }
55084
55343
  }
55085
- } catch (_error) {
55086
- } finally {
55087
- setSavingField(null);
55088
- }
55089
- }
55090
- }
55091
- ),
55092
- localAgent.top_k === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55093
- UnsetSliderSetting,
55094
- {
55095
- label: "Top K",
55096
- description: "Limits tokens to sample from at each step.",
55097
- defaultValue: 40,
55098
- onSetValue: async (value) => {
55099
- setSavingField("top_k");
55100
- try {
55101
- const update = { top_k: value };
55102
- await updateAgentMutation.mutateAsync({
55103
- agentId: selectedAgent.id,
55104
- update
55105
- });
55106
- setLocalAgent((prev2) => ({
55107
- ...prev2,
55108
- top_k: value
55109
- }));
55110
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55111
- 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
+ }
55112
55370
  }
55113
- } catch (_error) {
55114
- } finally {
55115
- setSavingField(null);
55116
- }
55117
- }
55118
- }
55119
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55120
- SliderSetting,
55121
- {
55122
- value: localAgent.top_k ?? 40,
55123
- label: "Top K",
55124
- description: "Limits tokens to sample from at each step.",
55125
- min: 1,
55126
- max: 100,
55127
- step: 1,
55128
- isSaving: savingField === "top_k",
55129
- onChange: async (value) => {
55130
- setSavingField("top_k");
55131
- try {
55132
- const update = { top_k: value };
55133
- await updateAgentMutation.mutateAsync({
55134
- agentId: selectedAgent.id,
55135
- update
55136
- });
55137
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55138
- 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
+ }
55139
55398
  }
55140
- } catch (_error) {
55141
- } finally {
55142
- setSavingField(null);
55143
- }
55144
- }
55145
- }
55146
- ),
55147
- localAgent.max_tokens === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55148
- UnsetSliderSetting,
55149
- {
55150
- label: "Max Tokens",
55151
- description: "Maximum tokens to generate in response.",
55152
- defaultValue: 4096,
55153
- onSetValue: async (value) => {
55154
- setSavingField("max_tokens");
55155
- try {
55156
- const update = { max_tokens: value };
55157
- await updateAgentMutation.mutateAsync({
55158
- agentId: selectedAgent.id,
55159
- update
55160
- });
55161
- setLocalAgent((prev2) => ({
55162
- ...prev2,
55163
- max_tokens: value
55164
- }));
55165
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55166
- 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
+ }
55167
55425
  }
55168
- } catch (_error) {
55169
- } finally {
55170
- setSavingField(null);
55171
- }
55172
- }
55173
- }
55174
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55175
- SliderSetting,
55176
- {
55177
- value: localAgent.max_tokens ?? 4096,
55178
- label: "Max Tokens",
55179
- description: "Maximum tokens to generate in response.",
55180
- min: 1,
55181
- max: 8192,
55182
- step: 1,
55183
- isSaving: savingField === "max_tokens",
55184
- onChange: async (value) => {
55185
- setSavingField("max_tokens");
55186
- try {
55187
- const update = { max_tokens: value };
55188
- await updateAgentMutation.mutateAsync({
55189
- agentId: selectedAgent.id,
55190
- update
55191
- });
55192
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55193
- 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
+ }
55194
55453
  }
55195
- } catch (_error) {
55196
- } finally {
55197
- setSavingField(null);
55198
- }
55199
- }
55200
- }
55201
- ),
55202
- localAgent.stop === null ? /* @__PURE__ */ jsxRuntimeExports.jsxs(UnsetContainer, { elevation: 0, children: [
55203
- /* @__PURE__ */ jsxRuntimeExports.jsxs(LabelWrapper, { children: [
55204
- /* @__PURE__ */ jsxRuntimeExports.jsx(LabelText, { variant: "subtitle2", children: "Stop Sequences" }),
55205
- /* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionText$1, { variant: "body2", color: "text.secondary", children: "Sequences that will cause the model to stop generating text." })
55206
- ] }),
55207
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
55208
- Box,
55209
- {
55210
- sx: {
55211
- display: "flex",
55212
- alignItems: "center",
55213
- justifyContent: "space-between"
55214
- },
55215
- children: [
55216
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "caption", color: "text.disabled", children: "Not set yet" }),
55217
- /* @__PURE__ */ jsxRuntimeExports.jsx(
55218
- StyledButton$1,
55219
- {
55220
- onClick: async () => {
55221
- setSavingField("stop");
55222
- try {
55223
- const update = { stop: [] };
55224
- await updateAgentMutation.mutateAsync({
55225
- agentId: selectedAgent.id,
55226
- update
55227
- });
55228
- setLocalAgent((prev2) => ({
55229
- ...prev2,
55230
- stop: []
55231
- }));
55232
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55233
- await refetchAgent();
55234
- }
55235
- } catch (_error) {
55236
- } finally {
55237
- 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();
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();
55238
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"
55239
55549
  },
55240
- 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
+ ]
55241
55579
  }
55242
55580
  )
55243
- ]
55244
- }
55245
- )
55246
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55247
- EditableField,
55248
- {
55249
- value: localAgent.stop?.join("\n") || "",
55250
- label: "Stop Sequences",
55251
- placeholder: "Enter stop sequences (one per line)...",
55252
- icon: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faGear }),
55253
- multiline: true,
55254
- rows: 3,
55255
- isSaving: savingField === "stop",
55256
- onSave: async (value) => {
55257
- setSavingField("stop");
55258
- try {
55259
- const stopSequences = value.split("\n").map((line2) => line2.trim()).filter((line2) => line2.length > 0);
55260
- const update = {
55261
- stop: stopSequences.length > 0 ? stopSequences : void 0
55262
- };
55263
- await updateAgentMutation.mutateAsync({
55264
- agentId: selectedAgent.id,
55265
- update
55266
- });
55267
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55268
- 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
+ }
55269
55610
  }
55270
- } catch (_error) {
55271
- } finally {
55272
- setSavingField(null);
55273
- }
55274
- }
55275
- }
55276
- ),
55277
- localAgent.frequency_penalty === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55278
- UnsetSliderSetting,
55279
- {
55280
- label: "Frequency Penalty",
55281
- description: "Reduces repetition by lowering likelihood of repeated tokens (-2.0 to 2.0).",
55282
- defaultValue: 0,
55283
- onSetValue: async (value) => {
55284
- setSavingField("frequency_penalty");
55285
- try {
55286
- const update = { frequency_penalty: value };
55287
- await updateAgentMutation.mutateAsync({
55288
- agentId: selectedAgent.id,
55289
- update
55290
- });
55291
- setLocalAgent((prev2) => ({
55292
- ...prev2,
55293
- frequency_penalty: value
55294
- }));
55295
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55296
- 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
+ }
55297
55638
  }
55298
- } catch (_error) {
55299
- } finally {
55300
- setSavingField(null);
55301
- }
55302
- }
55303
- }
55304
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55305
- SliderSetting,
55306
- {
55307
- value: localAgent.frequency_penalty ?? 0,
55308
- label: "Frequency Penalty",
55309
- description: "Reduces repetition by lowering likelihood of repeated tokens (-2.0 to 2.0).",
55310
- min: -2,
55311
- max: 2,
55312
- step: 0.01,
55313
- isSaving: savingField === "frequency_penalty",
55314
- onChange: async (value) => {
55315
- setSavingField("frequency_penalty");
55316
- try {
55317
- const update = { frequency_penalty: value };
55318
- await updateAgentMutation.mutateAsync({
55319
- agentId: selectedAgent.id,
55320
- update
55321
- });
55322
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55323
- 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
+ }
55324
55665
  }
55325
- } catch (_error) {
55326
- } finally {
55327
- setSavingField(null);
55328
- }
55329
- }
55330
- }
55331
- ),
55332
- localAgent.presence_penalty === null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
55333
- UnsetSliderSetting,
55334
- {
55335
- label: "Presence Penalty",
55336
- description: "Increases diversity by lowering likelihood of prompt tokens (-2.0 to 2.0).",
55337
- defaultValue: 0,
55338
- onSetValue: async (value) => {
55339
- setSavingField("presence_penalty");
55340
- try {
55341
- const update = { presence_penalty: value };
55342
- await updateAgentMutation.mutateAsync({
55343
- agentId: selectedAgent.id,
55344
- update
55345
- });
55346
- setLocalAgent((prev2) => ({
55347
- ...prev2,
55348
- presence_penalty: value
55349
- }));
55350
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55351
- 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
+ }
55352
55693
  }
55353
- } catch (_error) {
55354
- } finally {
55355
- setSavingField(null);
55356
- }
55357
- }
55358
- }
55359
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55360
- SliderSetting,
55361
- {
55362
- value: localAgent.presence_penalty ?? 0,
55363
- label: "Presence Penalty",
55364
- description: "Increases diversity by lowering likelihood of prompt tokens (-2.0 to 2.0).",
55365
- min: -2,
55366
- max: 2,
55367
- step: 0.01,
55368
- isSaving: savingField === "presence_penalty",
55369
- onChange: async (value) => {
55370
- setSavingField("presence_penalty");
55371
- try {
55372
- const update = { presence_penalty: value };
55373
- await updateAgentMutation.mutateAsync({
55374
- agentId: selectedAgent.id,
55375
- update
55376
- });
55377
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55378
- 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
+ }
55379
55720
  }
55380
- } catch (_error) {
55381
- } finally {
55382
- setSavingField(null);
55383
- }
55384
- }
55385
- }
55386
- ),
55387
- localAgent.seed === null ? /* @__PURE__ */ jsxRuntimeExports.jsxs(UnsetContainer, { elevation: 0, children: [
55388
- /* @__PURE__ */ jsxRuntimeExports.jsxs(LabelWrapper, { children: [
55389
- /* @__PURE__ */ jsxRuntimeExports.jsx(LabelText, { variant: "subtitle2", children: "Seed" }),
55390
- /* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionText$1, { variant: "body2", color: "text.secondary", children: "Random number seed for deterministic generation." })
55391
- ] }),
55392
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
55393
- Box,
55394
- {
55395
- sx: {
55396
- display: "flex",
55397
- alignItems: "center",
55398
- justifyContent: "space-between"
55399
- },
55400
- children: [
55401
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "caption", color: "text.disabled", children: "Not set yet" }),
55402
- /* @__PURE__ */ jsxRuntimeExports.jsx(
55403
- 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,
55404
55729
  {
55405
- onClick: async () => {
55406
- setSavingField("seed");
55407
- try {
55408
- const update = { seed: 42 };
55409
- await updateAgentMutation.mutateAsync({
55410
- agentId: selectedAgent.id,
55411
- update
55412
- });
55413
- setLocalAgent((prev2) => ({
55414
- ...prev2,
55415
- seed: 42
55416
- }));
55417
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55418
- await refetchAgent();
55419
- }
55420
- } catch (_error) {
55421
- } finally {
55422
- setSavingField(null);
55423
- }
55730
+ sx: {
55731
+ display: "flex",
55732
+ alignItems: "center",
55733
+ justifyContent: "space-between"
55424
55734
  },
55425
- 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
+ ]
55426
55764
  }
55427
55765
  )
55428
- ]
55429
- }
55430
- )
55431
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
55432
- EditableField,
55433
- {
55434
- value: localAgent.seed?.toString() || "",
55435
- label: "Seed",
55436
- placeholder: "Random number seed for deterministic generation",
55437
- icon: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faGear }),
55438
- isSaving: savingField === "seed",
55439
- onSave: async (value) => {
55440
- setSavingField("seed");
55441
- try {
55442
- const seedValue = value.trim() ? Number.parseInt(value, 10) : void 0;
55443
- if (value.trim() && Number.isNaN(seedValue)) {
55444
- showErrorToast("Seed must be a valid number");
55445
- return;
55446
- }
55447
- const update = { seed: seedValue };
55448
- await updateAgentMutation.mutateAsync({
55449
- agentId: selectedAgent.id,
55450
- update
55451
- });
55452
- if (selectedAgent.id === initialSelectedAgentId && refetchAgent) {
55453
- 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
+ }
55454
55795
  }
55455
- } catch (_error) {
55456
- } finally {
55457
- setSavingField(null);
55458
- }
55459
- }
55796
+ )
55797
+ ]
55460
55798
  }
55461
- )
55799
+ ) })
55462
55800
  ] });
55463
55801
  };
55464
55802
  const ALLOWED_AGENT_CATEGORIES = [
@@ -66241,9 +66579,15 @@ const GeneralSettings = ({
66241
66579
  refetchAgent,
66242
66580
  initialSelectedAgentId
66243
66581
  }) => {
66244
- const [currentHosting, setCurrentHosting] = reactExports.useState(
66245
- selectedAgent.hosting || ""
66246
- );
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]);
66247
66591
  const [tagsSaving, setTagsSaving] = reactExports.useState(false);
66248
66592
  const [categoriesSaving, setCategoriesSaving] = reactExports.useState(false);
66249
66593
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
@@ -66290,7 +66634,7 @@ const GeneralSettings = ({
66290
66634
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(
66291
66635
  HostingSelect,
66292
66636
  {
66293
- value: selectedAgent.hosting || "",
66637
+ value: selectedAgent.hosting || (config2?.values.hosting ?? ""),
66294
66638
  isSaving: savingField === "hosting",
66295
66639
  onSave: async (value) => {
66296
66640
  setSavingField("hosting");
@@ -66317,14 +66661,14 @@ const GeneralSettings = ({
66317
66661
  filterByCredentials: true,
66318
66662
  allowDefault: true
66319
66663
  },
66320
- `hosting-select-${selectedAgent.hosting || ""}`
66664
+ `hosting-select-${selectedAgent.id}-${selectedAgent.hosting || (config2?.values.hosting ?? "default")}`
66321
66665
  )
66322
66666
  }
66323
66667
  ),
66324
66668
  /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 12, md: 6, "data-tour-tag": "agent-settings-model-select", children: currentHosting ? /* @__PURE__ */ jsxRuntimeExports.jsx(
66325
66669
  ModelSelect,
66326
66670
  {
66327
- value: selectedAgent.model || "",
66671
+ value: selectedAgent.hosting ? selectedAgent.model || "" : selectedAgent.model || (config2?.values.model_name ?? ""),
66328
66672
  hostingId: currentHosting,
66329
66673
  isSaving: savingField === "model",
66330
66674
  allowDefault: true,
@@ -66345,7 +66689,7 @@ const GeneralSettings = ({
66345
66689
  }
66346
66690
  }
66347
66691
  },
66348
- `model-select-${currentHosting}`
66692
+ `model-select-${selectedAgent.id}-${currentHosting}-${selectedAgent.model || (!selectedAgent.hosting && config2?.values.model_name ? config2.values.model_name : "default")}`
66349
66693
  ) : /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldContainer, { children: [
66350
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: [
66351
66695
  /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faRobot }) }),
@@ -66508,26 +66852,35 @@ const SecuritySettings = ({
66508
66852
  refetchAgent,
66509
66853
  initialSelectedAgentId
66510
66854
  }) => {
66511
- 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: [
66512
66856
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$3, { variant: "subtitle1", children: [
66513
66857
  /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$1, { icon: faShieldAlt }),
66514
- "Security Prompt",
66858
+ "Security Instructions",
66515
66859
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66516
66860
  Tooltip$1,
66517
66861
  {
66518
- 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.`,
66519
66863
  arrow: true,
66520
66864
  placement: "top",
66521
66865
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(InfoButton$1, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faInfoCircle, size: "xs" }) })
66522
66866
  }
66523
66867
  )
66524
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
+ ),
66525
66878
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66526
66879
  EditableField,
66527
66880
  {
66528
66881
  value: selectedAgent.security_prompt || "",
66529
66882
  label: "",
66530
- placeholder: "Enter security prompt...",
66883
+ placeholder: "Enter instructions for the security agent...",
66531
66884
  multiline: true,
66532
66885
  rows: 6,
66533
66886
  isSaving: savingField === "security_prompt",
@@ -66591,26 +66944,35 @@ const SystemPromptSettings = ({
66591
66944
  setLocalSystemPrompt(systemPrompt);
66592
66945
  }
66593
66946
  }, [systemPrompt]);
66594
- 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: [
66595
66948
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$2, { variant: "subtitle1", children: [
66596
66949
  /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon, { icon: faRobot }),
66597
- "System Prompt",
66950
+ "Agent Instructions",
66598
66951
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66599
66952
  Tooltip$1,
66600
66953
  {
66601
- 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"`,
66602
66955
  arrow: true,
66603
66956
  placement: "top",
66604
66957
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(InfoButton, { size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faInfoCircle, size: "xs" }) })
66605
66958
  }
66606
66959
  )
66607
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
+ ),
66608
66970
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66609
66971
  EditableField,
66610
66972
  {
66611
66973
  value: localSystemPrompt,
66612
66974
  label: "",
66613
- placeholder: isLoading ? "Loading system prompt..." : "Enter system prompt...",
66975
+ placeholder: isLoading ? "Loading system prompt..." : "Enter instructions for the agent...",
66614
66976
  multiline: true,
66615
66977
  rows: 6,
66616
66978
  isSaving: savingField === "system_prompt",
@@ -66702,22 +67064,22 @@ const AgentSettings = ({
66702
67064
  }
66703
67065
  ),
66704
67066
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66705
- SecuritySettings,
67067
+ SystemPromptSettings,
66706
67068
  {
66707
67069
  selectedAgent,
66708
67070
  savingField,
66709
67071
  setSavingField,
66710
- updateAgentMutation,
66711
67072
  refetchAgent,
66712
67073
  initialSelectedAgentId
66713
67074
  }
66714
67075
  ),
66715
67076
  /* @__PURE__ */ jsxRuntimeExports.jsx(
66716
- SystemPromptSettings,
67077
+ SecuritySettings,
66717
67078
  {
66718
67079
  selectedAgent,
66719
67080
  savingField,
66720
67081
  setSavingField,
67082
+ updateAgentMutation,
66721
67083
  refetchAgent,
66722
67084
  initialSelectedAgentId
66723
67085
  }
@@ -67742,9 +68104,14 @@ const defaultConversationCanvasState = {
67742
68104
  isOpen: false,
67743
68105
  openTabs: [],
67744
68106
  selectedTabId: null,
67745
- 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 };
67746
68114
  };
67747
- const getConversationState = (conversations, conversationId) => conversations[conversationId] ?? { ...defaultConversationCanvasState };
67748
68115
  const useCanvasStore = create$3()(
67749
68116
  persist(
67750
68117
  (set2, _2) => ({
@@ -67801,6 +68168,71 @@ const useCanvasStore = create$3()(
67801
68168
  };
67802
68169
  return { conversations: newConversations };
67803
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
+ }));
67804
68236
  }
67805
68237
  }),
67806
68238
  {
@@ -86302,7 +86734,7 @@ const languages = [
86302
86734
  name: "Go",
86303
86735
  extensions: ["go"],
86304
86736
  load() {
86305
- return __vitePreload(() => import("./index-d3kL-g6p.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());
86306
86738
  }
86307
86739
  }),
86308
86740
  /* @__PURE__ */ LanguageDescription.of({
@@ -86479,7 +86911,7 @@ const languages = [
86479
86911
  alias: ["yml"],
86480
86912
  extensions: ["yaml", "yml"],
86481
86913
  load() {
86482
- return __vitePreload(() => import("./index-BENHuC7d.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());
86483
86915
  }
86484
86916
  }),
86485
86917
  // Legacy modes ported from CodeMirror 5
@@ -168918,7 +169350,7 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
168918
169350
  registerLayoutLoaders([
168919
169351
  {
168920
169352
  name: "dagre",
168921
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-OKDRZEBW-CvnmDUr0.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")
168922
169354
  }
168923
169355
  ]);
168924
169356
  }, "registerDefaultLayoutLoaders");
@@ -169508,7 +169940,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
169508
169940
  }, "detector");
169509
169941
  var loader = /* @__PURE__ */ __name(async () => {
169510
169942
  const { diagram: diagram2 } = await __vitePreload(async () => {
169511
- const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-BbjP-YS8.js");
169943
+ const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-CUWQVTBw.js");
169512
169944
  return { diagram: diagram22 };
169513
169945
  }, true ? __vite__mapDeps([12,13,1,2]) : void 0, import.meta.url);
169514
169946
  return { id, diagram: diagram2 };
@@ -169528,7 +169960,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
169528
169960
  }, "detector");
169529
169961
  var loader2 = /* @__PURE__ */ __name(async () => {
169530
169962
  const { diagram: diagram2 } = await __vitePreload(async () => {
169531
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-CPmNwaPw.js");
169963
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DO9xIDx0.js");
169532
169964
  return { diagram: diagram22 };
169533
169965
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
169534
169966
  return { id: id2, diagram: diagram2 };
@@ -169554,7 +169986,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
169554
169986
  }, "detector");
169555
169987
  var loader3 = /* @__PURE__ */ __name(async () => {
169556
169988
  const { diagram: diagram2 } = await __vitePreload(async () => {
169557
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-CPmNwaPw.js");
169989
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DO9xIDx0.js");
169558
169990
  return { diagram: diagram22 };
169559
169991
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
169560
169992
  return { id: id3, diagram: diagram2 };
@@ -169571,7 +170003,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
169571
170003
  }, "detector");
169572
170004
  var loader4 = /* @__PURE__ */ __name(async () => {
169573
170005
  const { diagram: diagram2 } = await __vitePreload(async () => {
169574
- const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-DzP1awnz.js");
170006
+ const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-B_3VyDfP.js");
169575
170007
  return { diagram: diagram22 };
169576
170008
  }, true ? __vite__mapDeps([17,15,16,1,2]) : void 0, import.meta.url);
169577
170009
  return { id: id4, diagram: diagram2 };
@@ -169588,7 +170020,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
169588
170020
  }, "detector");
169589
170021
  var loader5 = /* @__PURE__ */ __name(async () => {
169590
170022
  const { diagram: diagram2 } = await __vitePreload(async () => {
169591
- const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-C1xsOObr.js");
170023
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-Jz6QBGPa.js");
169592
170024
  return { diagram: diagram22 };
169593
170025
  }, true ? __vite__mapDeps([18,19,20,21,8,10,11,1,2]) : void 0, import.meta.url);
169594
170026
  return { id: id5, diagram: diagram2 };
@@ -169605,7 +170037,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
169605
170037
  }, "detector");
169606
170038
  var loader6 = /* @__PURE__ */ __name(async () => {
169607
170039
  const { diagram: diagram2 } = await __vitePreload(async () => {
169608
- const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-Dp3PblQc.js");
170040
+ const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-BK37zBtS.js");
169609
170041
  return { diagram: diagram22 };
169610
170042
  }, true ? __vite__mapDeps([22,1,2]) : void 0, import.meta.url);
169611
170043
  return { id: id6, diagram: diagram2 };
@@ -169622,7 +170054,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
169622
170054
  }, "detector");
169623
170055
  var loader7 = /* @__PURE__ */ __name(async () => {
169624
170056
  const { diagram: diagram2 } = await __vitePreload(async () => {
169625
- const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-BsZjZuz9.js");
170057
+ const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-BrTEa3Dg.js");
169626
170058
  return { diagram: diagram22 };
169627
170059
  }, true ? __vite__mapDeps([23,21,8,10,11,1,2]) : void 0, import.meta.url);
169628
170060
  return { id: id7, diagram: diagram2 };
@@ -169638,7 +170070,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
169638
170070
  }, "detector");
169639
170071
  var loader8 = /* @__PURE__ */ __name(async () => {
169640
170072
  const { diagram: diagram2 } = await __vitePreload(async () => {
169641
- const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-BLIypjx1.js");
170073
+ const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-D_aSId8t.js");
169642
170074
  return { diagram: diagram22 };
169643
170075
  }, true ? __vite__mapDeps([24,19,21,8,10,11,25,1,2]) : void 0, import.meta.url);
169644
170076
  return { id: id8, diagram: diagram2 };
@@ -169654,7 +170086,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
169654
170086
  }, "detector");
169655
170087
  var loader9 = /* @__PURE__ */ __name(async () => {
169656
170088
  const { diagram: diagram2 } = await __vitePreload(async () => {
169657
- const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-Bhg4pj46.js");
170089
+ const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-VtpoaDCW.js");
169658
170090
  return { diagram: diagram22 };
169659
170091
  }, true ? __vite__mapDeps([26,1,2]) : void 0, import.meta.url);
169660
170092
  return { id: id9, diagram: diagram2 };
@@ -169671,7 +170103,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
169671
170103
  }, "detector");
169672
170104
  var loader10 = /* @__PURE__ */ __name(async () => {
169673
170105
  const { diagram: diagram2 } = await __vitePreload(async () => {
169674
- const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-Uznmu3l-.js");
170106
+ const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-gjn-8kXQ.js");
169675
170107
  return { diagram: diagram22 };
169676
170108
  }, true ? __vite__mapDeps([27,1,2]) : void 0, import.meta.url);
169677
170109
  return { id: id10, diagram: diagram2 };
@@ -169688,7 +170120,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
169688
170120
  }, "detector");
169689
170121
  var loader11 = /* @__PURE__ */ __name(async () => {
169690
170122
  const { diagram: diagram2 } = await __vitePreload(async () => {
169691
- const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-GsFjX0JT.js");
170123
+ const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-DmQX7SmX.js");
169692
170124
  return { diagram: diagram22 };
169693
170125
  }, true ? __vite__mapDeps([28,15,1,2]) : void 0, import.meta.url);
169694
170126
  return { id: id11, diagram: diagram2 };
@@ -169705,7 +170137,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
169705
170137
  }, "detector");
169706
170138
  var loader12 = /* @__PURE__ */ __name(async () => {
169707
170139
  const { diagram: diagram2 } = await __vitePreload(async () => {
169708
- const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-B3KEUS4U.js");
170140
+ const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-Cy6jqgLY.js");
169709
170141
  return { diagram: diagram22 };
169710
170142
  }, true ? __vite__mapDeps([29,13,20,1,2]) : void 0, import.meta.url);
169711
170143
  return { id: id12, diagram: diagram2 };
@@ -169725,7 +170157,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
169725
170157
  }, "detector");
169726
170158
  var loader13 = /* @__PURE__ */ __name(async () => {
169727
170159
  const { diagram: diagram2 } = await __vitePreload(async () => {
169728
- const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-DI2nEo8v.js");
170160
+ const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-D_MSeJ_6.js");
169729
170161
  return { diagram: diagram22 };
169730
170162
  }, true ? __vite__mapDeps([30,31,15,1,2]) : void 0, import.meta.url);
169731
170163
  return { id: id13, diagram: diagram2 };
@@ -169745,7 +170177,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
169745
170177
  }, "detector");
169746
170178
  var loader14 = /* @__PURE__ */ __name(async () => {
169747
170179
  const { diagram: diagram2 } = await __vitePreload(async () => {
169748
- const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-DI2nEo8v.js");
170180
+ const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-D_MSeJ_6.js");
169749
170181
  return { diagram: diagram22 };
169750
170182
  }, true ? __vite__mapDeps([32,31,15,1,2]) : void 0, import.meta.url);
169751
170183
  return { id: id14, diagram: diagram2 };
@@ -169765,7 +170197,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
169765
170197
  }, "detector");
169766
170198
  var loader15 = /* @__PURE__ */ __name(async () => {
169767
170199
  const { diagram: diagram2 } = await __vitePreload(async () => {
169768
- const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-C1L3HV7N.js");
170200
+ const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-B5sjzMc3.js");
169769
170201
  return { diagram: diagram22 };
169770
170202
  }, true ? __vite__mapDeps([33,34,15,7,8,9,10,1,2]) : void 0, import.meta.url);
169771
170203
  return { id: id15, diagram: diagram2 };
@@ -169788,7 +170220,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
169788
170220
  }, "detector");
169789
170221
  var loader16 = /* @__PURE__ */ __name(async () => {
169790
170222
  const { diagram: diagram2 } = await __vitePreload(async () => {
169791
- const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-ADxTzXk9.js");
170223
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-CCntK586.js");
169792
170224
  return { diagram: diagram22 };
169793
170225
  }, true ? __vite__mapDeps([35,34,15,1,2]) : void 0, import.meta.url);
169794
170226
  return { id: id16, diagram: diagram2 };
@@ -169805,7 +170237,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
169805
170237
  }, "detector");
169806
170238
  var loader17 = /* @__PURE__ */ __name(async () => {
169807
170239
  const { diagram: diagram2 } = await __vitePreload(async () => {
169808
- const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-CIbQJUBG.js");
170240
+ const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-cp-7j6JH.js");
169809
170241
  return { diagram: diagram22 };
169810
170242
  }, true ? __vite__mapDeps([36,13,25,1,2]) : void 0, import.meta.url);
169811
170243
  return { id: id17, diagram: diagram2 };
@@ -169875,7 +170307,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
169875
170307
  }, "detector");
169876
170308
  var loader18 = /* @__PURE__ */ __name(async () => {
169877
170309
  const { diagram: diagram2 } = await __vitePreload(async () => {
169878
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-CPmNwaPw.js");
170310
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DO9xIDx0.js");
169879
170311
  return { diagram: diagram22 };
169880
170312
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
169881
170313
  return { id: id18, diagram: diagram2 };
@@ -169892,7 +170324,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
169892
170324
  }, "detector");
169893
170325
  var loader19 = /* @__PURE__ */ __name(async () => {
169894
170326
  const { diagram: diagram2 } = await __vitePreload(async () => {
169895
- const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-CTEAWzHG.js");
170327
+ const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-B24Z4NA2.js");
169896
170328
  return { diagram: diagram22 };
169897
170329
  }, true ? __vite__mapDeps([37,25,1,2]) : void 0, import.meta.url);
169898
170330
  return { id: id19, diagram: diagram2 };
@@ -169909,7 +170341,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
169909
170341
  }, "detector");
169910
170342
  var loader20 = /* @__PURE__ */ __name(async () => {
169911
170343
  const { diagram: diagram2 } = await __vitePreload(async () => {
169912
- const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-BDcXZ7s9.js");
170344
+ const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-B8ntf-YJ.js");
169913
170345
  return { diagram: diagram22 };
169914
170346
  }, true ? __vite__mapDeps([38,39,1,2]) : void 0, import.meta.url);
169915
170347
  return { id: id20, diagram: diagram2 };
@@ -169926,7 +170358,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
169926
170358
  }, "detector");
169927
170359
  var loader21 = /* @__PURE__ */ __name(async () => {
169928
170360
  const { diagram: diagram2 } = await __vitePreload(async () => {
169929
- const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-Cy2XBRai.js");
170361
+ const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-DT0Ds4_6.js");
169930
170362
  return { diagram: diagram22 };
169931
170363
  }, true ? __vite__mapDeps([40,1,2]) : void 0, import.meta.url);
169932
170364
  return { id: id21, diagram: diagram2 };
@@ -169943,7 +170375,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
169943
170375
  }, "detector");
169944
170376
  var loader22 = /* @__PURE__ */ __name(async () => {
169945
170377
  const { diagram: diagram2 } = await __vitePreload(async () => {
169946
- const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-BbAeFKsA.js");
170378
+ const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-DH2kTl35.js");
169947
170379
  return { diagram: diagram22 };
169948
170380
  }, true ? __vite__mapDeps([41,1,2]) : void 0, import.meta.url);
169949
170381
  return { id: id22, diagram: diagram2 };
@@ -169960,7 +170392,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
169960
170392
  }, "detector");
169961
170393
  var loader23 = /* @__PURE__ */ __name(async () => {
169962
170394
  const { diagram: diagram2 } = await __vitePreload(async () => {
169963
- const { diagram: diagram22 } = await import("./diagram-VNBRO52H-DeKLJIGp.js");
170395
+ const { diagram: diagram22 } = await import("./diagram-VNBRO52H-Bxh5b-em.js");
169964
170396
  return { diagram: diagram22 };
169965
170397
  }, true ? __vite__mapDeps([42,19,21,8,10,11,1,2]) : void 0, import.meta.url);
169966
170398
  return { id: id23, diagram: diagram2 };
@@ -169976,7 +170408,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
169976
170408
  }, "detector");
169977
170409
  var loader24 = /* @__PURE__ */ __name(async () => {
169978
170410
  const { diagram: diagram2 } = await __vitePreload(async () => {
169979
- const { diagram: diagram22 } = await import("./diagram-SSKATNLV-O49-awgq.js");
170411
+ const { diagram: diagram22 } = await import("./diagram-SSKATNLV-lmqZ5zjv.js");
169980
170412
  return { diagram: diagram22 };
169981
170413
  }, true ? __vite__mapDeps([43,19,21,8,10,11,1,2]) : void 0, import.meta.url);
169982
170414
  return { id: id24, diagram: diagram2 };
@@ -169992,7 +170424,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
169992
170424
  }, "detector");
169993
170425
  var loader25 = /* @__PURE__ */ __name(async () => {
169994
170426
  const { diagram: diagram2 } = await __vitePreload(async () => {
169995
- const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-C4WZB7AT.js");
170427
+ const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-boa_T8E1.js");
169996
170428
  return { diagram: diagram22 };
169997
170429
  }, true ? __vite__mapDeps([44,11,8,7,16,1,2]) : void 0, import.meta.url);
169998
170430
  return { id: id25, diagram: diagram2 };
@@ -170009,7 +170441,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
170009
170441
  }, "detector");
170010
170442
  var loader26 = /* @__PURE__ */ __name(async () => {
170011
170443
  const { diagram: diagram2 } = await __vitePreload(async () => {
170012
- const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-Blezk2Ti.js");
170444
+ const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-DzXvnk9f.js");
170013
170445
  return { diagram: diagram22 };
170014
170446
  }, true ? __vite__mapDeps([45,19,20,21,8,10,11,39,1,2]) : void 0, import.meta.url);
170015
170447
  return { id: id26, diagram: diagram2 };
@@ -171480,6 +171912,351 @@ const CanvasContentComponent = ({ document: document2 }) => {
171480
171912
  return /* @__PURE__ */ jsxRuntimeExports.jsx(CodeEditor, { document: document2 });
171481
171913
  };
171482
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
+ };
171483
172260
  const StyledTabs = styled$1(Tabs)(({ theme: theme2 }) => ({
171484
172261
  borderBottom: `1px solid ${alpha$1(theme2.palette.divider, 0.05)}`,
171485
172262
  maxWidth: "100%",
@@ -171633,8 +172410,22 @@ const CanvasComponent = ({
171633
172410
  initialDocuments = [],
171634
172411
  onChangeActiveDocument: externalChangeActiveDocument,
171635
172412
  onClose,
171636
- onCloseDocument
172413
+ onCloseDocument,
172414
+ conversationId
171637
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
+ );
171638
172429
  const documents = initialDocuments;
171639
172430
  const [internalActiveDocumentId, setInternalActiveDocumentId] = reactExports.useState(documents.length > 0 ? documents[0].id : null);
171640
172431
  const activeDocumentId = externalActiveDocumentId ?? internalActiveDocumentId;
@@ -171649,6 +172440,13 @@ const CanvasComponent = ({
171649
172440
  },
171650
172441
  [externalChangeActiveDocument]
171651
172442
  );
172443
+ const handleSwitchToDocumentView = reactExports.useCallback(
172444
+ (documentId) => {
172445
+ setCurrentView("documents");
172446
+ handleChangeActiveDocument(documentId);
172447
+ },
172448
+ [handleChangeActiveDocument, setCurrentView]
172449
+ );
171652
172450
  const handleCloseDocument = reactExports.useCallback(
171653
172451
  (documentId) => {
171654
172452
  onCloseDocument(documentId);
@@ -171673,29 +172471,103 @@ const CanvasComponent = ({
171673
172471
  /* @__PURE__ */ jsxRuntimeExports.jsxs(CanvasHeader, { children: [
171674
172472
  /* @__PURE__ */ jsxRuntimeExports.jsxs(HeaderTitle, { children: [
171675
172473
  /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", fontWeight: 600, children: "Canvas" }),
171676
- /* @__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" })
171677
172475
  ] }),
171678
- /* @__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(
171679
- 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,
171680
172536
  {
171681
- onClick: onClose,
171682
- size: "large",
171683
- "data-tour-tag": "close-canvas-button",
171684
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faTimes, size: "xs" })
172537
+ documents,
172538
+ activeDocumentId,
172539
+ onChangeActiveDocument: handleChangeActiveDocument,
172540
+ onCloseDocument: handleCloseDocument
171685
172541
  }
171686
- ) }) })
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
+ )
171687
172562
  ] }),
171688
- /* @__PURE__ */ jsxRuntimeExports.jsx(
171689
- CanvasTabs,
172563
+ currentView === "files" && conversationId && /* @__PURE__ */ jsxRuntimeExports.jsx(
172564
+ CanvasFileViewer,
171690
172565
  {
171691
- documents,
171692
- activeDocumentId,
171693
- onChangeActiveDocument: handleChangeActiveDocument,
171694
- onCloseDocument: handleCloseDocument
172566
+ conversationId,
172567
+ onSwitchToDocumentView: handleSwitchToDocumentView
171695
172568
  }
171696
172569
  ),
171697
- activeDocument && /* @__PURE__ */ jsxRuntimeExports.jsx(CanvasContent, { document: activeDocument }),
171698
- !activeDocument && /* @__PURE__ */ jsxRuntimeExports.jsxs(
172570
+ currentView === "files" && !conversationId && /* @__PURE__ */ jsxRuntimeExports.jsxs(
171699
172571
  Box,
171700
172572
  {
171701
172573
  sx: {
@@ -171708,8 +172580,8 @@ const CanvasComponent = ({
171708
172580
  textAlign: "center"
171709
172581
  },
171710
172582
  children: [
171711
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", gutterBottom: true, children: "No Documents Open" }),
171712
- /* @__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." })
171713
172585
  ]
171714
172586
  }
171715
172587
  )
@@ -171889,7 +172761,7 @@ const GenerationSettingsSection = ({
171889
172761
  }) => {
171890
172762
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
171891
172763
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$6, { variant: "subtitle1", children: [
171892
- /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$4, { icon: faSliders }),
172764
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$3, { icon: faSliders }),
171893
172765
  "Generation Settings",
171894
172766
  /* @__PURE__ */ jsxRuntimeExports.jsx(
171895
172767
  Tooltip$1,
@@ -172250,7 +173122,7 @@ const ModelHostingSection = ({
172250
173122
  }) => {
172251
173123
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
172252
173124
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionTitle$6, { variant: "subtitle1", children: [
172253
- /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$4, { icon: faServer }),
173125
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TitleIcon$3, { icon: faServer }),
172254
173126
  "Model & Hosting",
172255
173127
  /* @__PURE__ */ jsxRuntimeExports.jsx(
172256
173128
  Tooltip$1,
@@ -173917,6 +174789,47 @@ const LoadingIndicator = reactExports.memo(({ status, currentExecution }) => {
173917
174789
  ] }) }) })
173918
174790
  ] });
173919
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
+ };
173920
174833
  const FILE_EXTENSION_REGEX = /\.([a-zA-Z0-9]+)$/;
173921
174834
  const PATH_SLASH_REGEX = /[\\/]/;
173922
174835
  const getLanguageFromExtension = (filename) => {
@@ -211681,6 +212594,16 @@ const errorSuggestions = {
211681
212594
  /* @__PURE__ */ jsxRuntimeExports.jsx(Link$1, { component: Link$2, to: "/settings", color: "inherit", children: "settings page" }),
211682
212595
  " ",
211683
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."
211684
212607
  ] })
211685
212608
  };
211686
212609
  const ErrorBlock = ({ error, isUser }) => {
@@ -211715,14 +212638,6 @@ const ErrorBlock = ({ error, isUser }) => {
211715
212638
  ] })
211716
212639
  ] });
211717
212640
  };
211718
- const canvasSupportedExtensions = /* @__PURE__ */ new Set([
211719
- ...Object.keys(langs),
211720
- ...Object.keys(languageOverrideMap)
211721
- ]);
211722
- const isCanvasSupported = (fileName) => {
211723
- const ext = fileName.toLowerCase().split("/").pop()?.split(".").pop() ?? "";
211724
- return canvasSupportedExtensions.has(ext);
211725
- };
211726
212641
  const RESOURCE_NAME_REGEX = /name=([^;,]+)/;
211727
212642
  const FileAttachmentContainer = styled$1(Box)(({ theme: theme2 }) => ({
211728
212643
  display: "flex",
@@ -211796,68 +212711,28 @@ const getFileName$3 = (path2) => {
211796
212711
  const parts = path2.split(PATH_SEPARATOR_REGEX$3);
211797
212712
  return parts[parts.length - 1];
211798
212713
  };
211799
- const FileAttachment = ({
211800
- file,
211801
- onClick,
211802
- conversationId
211803
- }) => {
211804
- const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
211805
- const setFiles = useCanvasStore((s2) => s2.setFiles);
211806
- const setOpenTabs = useCanvasStore((s2) => s2.setOpenTabs);
211807
- const setSelectedTab = useCanvasStore((s2) => s2.setSelectedTab);
211808
- const isPastedImage = file.startsWith("data:image/");
211809
- const handleClick = reactExports.useCallback(async () => {
211810
- const title = getFileName$3(file);
211811
- const fallbackAction = (err) => {
211812
- if (err) console.error("Error processing file:", err);
211813
- onClick(file);
211814
- };
211815
- if (file.startsWith("data:")) {
211816
- if (isCanvasSupported(title)) {
211817
- const docId = file;
211818
- const newDoc = {
211819
- id: docId,
211820
- title,
211821
- path: docId,
211822
- // Store data URI as path for consistency if needed
211823
- content: file
211824
- // The content is the data URI itself
211825
- };
211826
- const state2 = useCanvasStore.getState();
211827
- const conversationCanvasState = state2.conversations?.[conversationId];
211828
- const filesInState = conversationCanvasState?.files ?? [];
211829
- const openTabsInState = conversationCanvasState?.openTabs ?? [];
211830
- const updatedFiles = (() => {
211831
- const idx = filesInState.findIndex((d2) => d2.id === docId);
211832
- if (idx !== -1) {
211833
- return [
211834
- ...filesInState.slice(0, idx),
211835
- newDoc,
211836
- ...filesInState.slice(idx + 1)
211837
- ];
211838
- }
211839
- return [...filesInState, newDoc];
211840
- })();
211841
- setFiles(conversationId, updatedFiles);
211842
- const existsTab = openTabsInState.some((t2) => t2.id === docId);
211843
- const updatedTabs = existsTab ? openTabsInState : [...openTabsInState, { id: docId, title }];
211844
- setOpenTabs(conversationId, updatedTabs);
211845
- setSelectedTab(conversationId, docId);
211846
- setCanvasOpen(true);
211847
- } 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);
211848
212721
  onClick(file);
211849
- }
211850
- } else {
211851
- const normalizedPath = file.startsWith("file://") ? file.substring(7) : file;
211852
- try {
211853
- const result = await window.api.readFile(normalizedPath);
211854
- if (result.success && isCanvasSupported(title)) {
211855
- const docId = normalizedPath;
212722
+ };
212723
+ const { setFiles, setOpenTabs, setSelectedTab } = useCanvasStore.getState();
212724
+ if (file.startsWith("data:")) {
212725
+ if (isCanvasSupported(title)) {
212726
+ const docId = file;
211856
212727
  const newDoc = {
211857
212728
  id: docId,
211858
212729
  title,
211859
- path: normalizedPath,
211860
- 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
211861
212736
  };
211862
212737
  const state2 = useCanvasStore.getState();
211863
212738
  const conversationCanvasState = state2.conversations?.[conversationId];
@@ -211880,60 +212755,93 @@ const FileAttachment = ({
211880
212755
  setOpenTabs(conversationId, updatedTabs);
211881
212756
  setSelectedTab(conversationId, docId);
211882
212757
  setCanvasOpen(true);
211883
- return;
212758
+ } else {
212759
+ onClick(file);
211884
212760
  }
211885
- const errorMessage = !result.success && result.error ? result.error instanceof Error ? result.error.message : String(result.error) : "Unknown error reading file";
211886
- return fallbackAction(errorMessage);
211887
- } catch (error) {
211888
- const message2 = error instanceof Error ? error.message : String(error ?? "Unknown error reading file");
211889
- return fallbackAction(message2);
211890
- }
211891
- }
211892
- }, [
211893
- file,
211894
- onClick,
211895
- setFiles,
211896
- setOpenTabs,
211897
- setSelectedTab,
211898
- setCanvasOpen,
211899
- conversationId
211900
- ]);
211901
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
211902
- FileAttachmentContainer,
211903
- {
211904
- onClick: handleClick,
211905
- title: `Click to open ${getFileName$3(file)}`,
211906
- sx: {
211907
- // Adjust padding if it's an image to give it more space, or remove padding
211908
- padding: isPastedImage ? 0 : "8px 12px",
211909
- // If it's an image, let it define its own aspect ratio, otherwise fix height for icon/text
211910
- height: isPastedImage ? "auto" : "auto",
211911
- // Keep auto or set specific for icon
211912
- maxWidth: isPastedImage ? "200px" : "100%"
211913
- // Allow images to be a bit wider if needed
211914
- },
211915
- children: isPastedImage ? /* @__PURE__ */ jsxRuntimeExports.jsx(
211916
- "img",
211917
- {
211918
- src: file,
211919
- alt: "Pasted content preview",
211920
- style: {
211921
- display: "block",
211922
- maxWidth: "100%",
211923
- maxHeight: "150px",
211924
- // Max height for the preview in message
211925
- borderRadius: "8px",
211926
- // Match container's border radius
211927
- 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;
211928
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);
211929
212803
  }
211930
- ) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
211931
- /* @__PURE__ */ jsxRuntimeExports.jsx(FileIcon, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faFile, size: "sm" }) }),
211932
- /* @__PURE__ */ jsxRuntimeExports.jsx(FileName, { variant: "body2", children: getFileName$3(file) })
211933
- ] })
211934
- }
211935
- );
211936
- };
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";
211937
212845
  const InvalidAttachmentContainer = styled$1(Box)(({ theme: theme2 }) => ({
211938
212846
  display: "flex",
211939
212847
  alignItems: "center",
@@ -211999,32 +212907,31 @@ const getFileName$1 = (path2) => {
211999
212907
  const parts = path2.split(PATH_SEPARATOR_REGEX$1);
212000
212908
  return parts[parts.length - 1];
212001
212909
  };
212002
- const ImageAttachment = ({
212003
- file,
212004
- src,
212005
- onClick
212006
- }) => {
212007
- const [hasError, setHasError] = reactExports.useState(false);
212008
- const handleClick = () => {
212009
- onClick(file);
212010
- };
212011
- const handleError2 = () => {
212012
- setHasError(true);
212013
- };
212014
- if (hasError) {
212015
- return /* @__PURE__ */ jsxRuntimeExports.jsx(InvalidAttachment, { file });
212016
- }
212017
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
212018
- AttachmentImage,
212019
- {
212020
- src,
212021
- alt: getFileName$1(file),
212022
- onClick: handleClick,
212023
- onError: handleError2,
212024
- 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 });
212025
212921
  }
212026
- );
212027
- };
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";
212028
212935
  const CodeContainer$1 = styled$1(Box)({
212029
212936
  marginBottom: 16,
212030
212937
  width: "100%"
@@ -212144,33 +213051,32 @@ const getFileName = (path2) => {
212144
213051
  const parts = path2.split(PATH_SEPARATOR_REGEX);
212145
213052
  return parts[parts.length - 1];
212146
213053
  };
212147
- const VideoAttachment = ({
212148
- file,
212149
- src,
212150
- onClick
212151
- }) => {
212152
- const [hasError, setHasError] = reactExports.useState(false);
212153
- const handleClick = () => {
212154
- onClick(file);
212155
- };
212156
- const handleError2 = () => {
212157
- setHasError(true);
212158
- };
212159
- if (hasError) {
212160
- return /* @__PURE__ */ jsxRuntimeExports.jsx(InvalidAttachment, { file });
212161
- }
212162
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
212163
- AttachmentVideo,
212164
- {
212165
- src,
212166
- controls: true,
212167
- preload: "metadata",
212168
- onClick: handleClick,
212169
- onError: handleError2,
212170
- 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 });
212171
213065
  }
212172
- );
212173
- };
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";
212174
213080
  const isWebUrl$1 = (path2) => {
212175
213081
  return path2.startsWith("http://") || path2.startsWith("https://");
212176
213082
  };
@@ -212330,7 +213236,8 @@ const ActionBlock = ({
212330
213236
  {
212331
213237
  file,
212332
213238
  src: getUrl2(file),
212333
- onClick: handleFileClick
213239
+ onClick: handleFileClick,
213240
+ conversationId
212334
213241
  },
212335
213242
  `${file}`
212336
213243
  )) }),
@@ -212339,7 +213246,8 @@ const ActionBlock = ({
212339
213246
  {
212340
213247
  file,
212341
213248
  src: getUrl2(file),
212342
- onClick: handleFileClick
213249
+ onClick: handleFileClick,
213250
+ conversationId
212343
213251
  },
212344
213252
  `${file}`
212345
213253
  )) }),
@@ -213262,7 +214170,34 @@ const MessageItem = reactExports.memo(
213262
214170
  conversationId,
213263
214171
  currentExecution
213264
214172
  }) => {
213265
- 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]);
213266
214201
  const client = reactExports.useMemo(() => {
213267
214202
  return createLocalOperatorClient(apiConfig.baseUrl);
213268
214203
  }, []);
@@ -213285,46 +214220,6 @@ const MessageItem = reactExports.memo(
213285
214220
  );
213286
214221
  }
213287
214222
  }, []);
213288
- reactExports.useEffect(() => {
213289
- if (!message2.files || message2.files.length === 0) return;
213290
- const state2 = useCanvasStore.getState();
213291
- const conv = state2.conversations[conversationId];
213292
- if (!conv) return;
213293
- const { openTabs, files } = conv;
213294
- if (!openTabs || openTabs.length === 0) return;
213295
- (async () => {
213296
- let updatedFiles = files;
213297
- let didUpdate = false;
213298
- for (const filePath of message2.files ?? []) {
213299
- const normalizedPath = filePath.startsWith("file://") ? filePath.substring(7) : filePath;
213300
- const tabIsOpen = openTabs.some((tab2) => tab2.id === normalizedPath);
213301
- if (!tabIsOpen) continue;
213302
- const fileIdx = updatedFiles.findIndex(
213303
- (f2) => f2.id === normalizedPath
213304
- );
213305
- if (fileIdx === -1) continue;
213306
- try {
213307
- const result = await window.api.readFile(normalizedPath);
213308
- if (result.success) {
213309
- const currentDoc = updatedFiles[fileIdx];
213310
- if (currentDoc.content !== result.data) {
213311
- const updatedDoc = { ...currentDoc, content: result.data };
213312
- updatedFiles = [
213313
- ...updatedFiles.slice(0, fileIdx),
213314
- updatedDoc,
213315
- ...updatedFiles.slice(fileIdx + 1)
213316
- ];
213317
- didUpdate = true;
213318
- }
213319
- }
213320
- } catch (_2) {
213321
- }
213322
- }
213323
- if (didUpdate) {
213324
- setFiles(conversationId, updatedFiles);
213325
- }
213326
- })();
213327
- }, [message2.files, conversationId, setFiles]);
213328
214223
  const isMessageContentEmpty = !message2.message && (!message2.files || message2.files.length === 0) && !message2.code && !message2.stdout && !message2.stderr && !message2.logging;
213329
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;
213330
214225
  if (shouldHide) {
@@ -213386,7 +214281,8 @@ const MessageItem = reactExports.memo(
213386
214281
  {
213387
214282
  file,
213388
214283
  src: getUrl2(file),
213389
- onClick: handleFileClick
214284
+ onClick: handleFileClick,
214285
+ conversationId
213390
214286
  },
213391
214287
  `${message2.id}-${file}`
213392
214288
  )) }),
@@ -213395,7 +214291,8 @@ const MessageItem = reactExports.memo(
213395
214291
  {
213396
214292
  file,
213397
214293
  src: getUrl2(file),
213398
- onClick: handleFileClick
214294
+ onClick: handleFileClick,
214295
+ conversationId
213399
214296
  },
213400
214297
  `${message2.id}-${file}`
213401
214298
  )) }),
@@ -213447,7 +214344,8 @@ const MessageItem = reactExports.memo(
213447
214344
  {
213448
214345
  file,
213449
214346
  src: getUrl2(file),
213450
- onClick: handleFileClick
214347
+ onClick: handleFileClick,
214348
+ conversationId
213451
214349
  },
213452
214350
  `${message2.id}-${file}`
213453
214351
  )) }),
@@ -213456,7 +214354,8 @@ const MessageItem = reactExports.memo(
213456
214354
  {
213457
214355
  file,
213458
214356
  src: getUrl2(file),
213459
- onClick: handleFileClick
214357
+ onClick: handleFileClick,
214358
+ conversationId
213460
214359
  },
213461
214360
  `${message2.id}-${file}`
213462
214361
  )) }),
@@ -213885,6 +214784,7 @@ const ChatContent = ({
213885
214784
  {
213886
214785
  activeDocumentId: selectedTabId,
213887
214786
  initialDocuments: files,
214787
+ conversationId,
213888
214788
  onChangeActiveDocument: (documentId) => setSelectedTab(conversationId, documentId),
213889
214789
  onClose: () => useUiPreferencesStore.getState().setCanvasOpen(false),
213890
214790
  onCloseDocument: (docId) => {
@@ -214871,12 +215771,12 @@ const OnboardingDialog = ({
214871
215771
  ...dialogProps,
214872
215772
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs(ContentContainer$1, { children: [
214873
215773
  title && /* @__PURE__ */ jsxRuntimeExports.jsx(StyledDialogTitle, { children: title }),
214874
- 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 }),
214875
215775
  /* @__PURE__ */ jsxRuntimeExports.jsx(
214876
215776
  Box,
214877
215777
  {
214878
215778
  sx: {
214879
- padding: theme2.spacing(0, 3, 1),
215779
+ padding: theme2.spacing(2, 3, 1),
214880
215780
  flexGrow: 1,
214881
215781
  overflowY: "auto",
214882
215782
  "&::-webkit-scrollbar": {
@@ -216131,7 +217031,7 @@ const CardSubtitle = styled$1(Typography)(({ theme: theme2 }) => ({
216131
217031
  fontSize: "0.875rem",
216132
217032
  // Consistent small text size
216133
217033
  color: theme2.palette.text.secondary,
216134
- marginBottom: theme2.spacing(3),
217034
+ marginBottom: theme2.spacing(2),
216135
217035
  // Consistent margin
216136
217036
  lineHeight: 1.5
216137
217037
  }));
@@ -216160,13 +217060,6 @@ const RadientBoldTextSpan$1 = styled$1("span")(() => ({
216160
217060
  fontWeight: "bold",
216161
217061
  color: radientTheme.palette.primary.main
216162
217062
  }));
216163
- const FreeText = styled$1(Typography)(({ theme: theme2 }) => ({
216164
- fontSize: "1.25rem",
216165
- fontWeight: 600,
216166
- color: theme2.palette.text.primary,
216167
- // Standard text color
216168
- display: "inline"
216169
- }));
216170
217063
  const ChooseOption = styled$1(Typography)(({ theme: theme2 }) => ({
216171
217064
  position: "absolute",
216172
217065
  bottom: theme2.spacing(2),
@@ -216225,6 +217118,14 @@ const RadientChoiceStep = ({
216225
217118
  " ",
216226
217119
  /* @__PURE__ */ jsxRuntimeExports.jsx(RadientPassText, { children: "Radient Pass" })
216227
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
+ ),
216228
217129
  /* @__PURE__ */ jsxRuntimeExports.jsxs(CardSubtitle, { variant: "body2", children: [
216229
217130
  "Designed for",
216230
217131
  " ",
@@ -216239,7 +217140,7 @@ const RadientChoiceStep = ({
216239
217140
  ", no credit card required."
216240
217141
  ] })
216241
217142
  ] }),
216242
- /* @__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: [
216243
217144
  " ",
216244
217145
  /* @__PURE__ */ jsxRuntimeExports.jsx(
216245
217146
  "img",
@@ -216286,11 +217187,16 @@ const RadientChoiceStep = ({
216286
217187
  " ",
216287
217188
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { flex: 1, pr: 2 }, children: [
216288
217189
  " ",
216289
- /* @__PURE__ */ jsxRuntimeExports.jsxs(CardTitle$1, { variant: "h6", children: [
216290
- "Set up your own keys ",
216291
- /* @__PURE__ */ jsxRuntimeExports.jsx(FreeText, { children: "(Technical Setup)" })
216292
- ] }),
216293
- /* @__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." })
216294
217200
  ] }),
216295
217201
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
216296
217202
  Box,
@@ -216319,7 +217225,7 @@ const RadientChoiceStep = ({
216319
217225
  ] })
216320
217226
  ] })
216321
217227
  ] }) }),
216322
- /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$1, { sx: { mt: 3, textAlign: "center" }, children: [
217228
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(SectionDescription$1, { sx: { mt: 2, textAlign: "center" }, children: [
216323
217229
  /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { component: "span", sx: { mr: 0.5 }, children: "💡" }),
216324
217230
  "You can always change your setup later in Settings."
216325
217231
  ] })
@@ -217153,33 +218059,44 @@ const OnboardingModal = ({ open: open2 }) => {
217153
218059
  ]
217154
218060
  }
217155
218061
  );
217156
- const stepIndicators = /* @__PURE__ */ jsxRuntimeExports.jsx(StepIndicatorContainer, { children: currentStep && steps.map((step) => {
217157
- const isActive = currentStep === step;
217158
- const isVisited = visitedSteps.has(step);
217159
- const canNavigate = isVisited && step !== currentStep;
217160
- const isNonNavigableRadientStep = step === OnboardingStep.RADIENT_CHOICE || step === OnboardingStep.RADIENT_SIGNIN;
217161
- return (
217162
- // @ts-ignore - Ignore potential TS issue with Tooltip wrapping custom component
217163
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: stepTitles[step], arrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
217164
- StepDot,
217165
- {
217166
- active: isActive,
217167
- visited: isVisited,
217168
- onClick: () => {
217169
- if (canNavigate && !isNonNavigableRadientStep) {
217170
- 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
+ }
217171
218082
  }
217172
218083
  }
217173
- }
217174
- ) }, step)
217175
- );
217176
- }) });
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]);
217177
218094
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
217178
218095
  OnboardingDialog,
217179
218096
  {
217180
218097
  open: open2,
217181
218098
  title: dialogTitle,
217182
- stepIndicators,
218099
+ stepIndicators: finalStepIndicatorsProp,
217183
218100
  actions: dialogActions,
217184
218101
  dialogProps: {
217185
218102
  disableEscapeKeyDown: true