local-operator-ui 0.10.9 → 0.11.1

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-r5hhhokw.js → _basePickBy-D7-oSnE5.js} +2 -2
  4. package/out/renderer/assets/{_baseUniq-BBOEV9y0.js → _baseUniq-X7Vro_wh.js} +1 -1
  5. package/out/renderer/assets/{arc-Clqwk4k6.js → arc-7P79Je3V.js} +1 -1
  6. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-Bx8X697l.js → architectureDiagram-IEHRJDOE-ff35K764.js} +8 -8
  7. package/out/renderer/assets/{blockDiagram-JOT3LUYC-B1Up6r6-.js → blockDiagram-JOT3LUYC-CULzoKmb.js} +6 -6
  8. package/out/renderer/assets/{c4Diagram-VJAJSXHY-C36lbIjS.js → c4Diagram-VJAJSXHY-Dx-AuScK.js} +3 -3
  9. package/out/renderer/assets/{channel-RymPaL1a.js → channel-DI0Un_qP.js} +1 -1
  10. package/out/renderer/assets/{chunk-4BMEZGHF-hetp-v-b.js → chunk-4BMEZGHF-DU1gGN2t.js} +1 -1
  11. package/out/renderer/assets/{chunk-A2AXSNBT-RJ03JkZb.js → chunk-A2AXSNBT-KLrIrrqO.js} +2 -2
  12. package/out/renderer/assets/{chunk-AEK57VVT-DC5ye4z8.js → chunk-AEK57VVT-F_Lp1sht.js} +2 -2
  13. package/out/renderer/assets/{chunk-D6G4REZN-D6XUL9LI.js → chunk-D6G4REZN-B3sTI3Jm.js} +1 -1
  14. package/out/renderer/assets/{chunk-RZ5BOZE2-D6JxF993.js → chunk-RZ5BOZE2-75TNXCaI.js} +1 -1
  15. package/out/renderer/assets/{chunk-XZIHB7SX--AwbJm2E.js → chunk-XZIHB7SX-w_rKBzke.js} +1 -1
  16. package/out/renderer/assets/{classDiagram-GIVACNV2-vtFcXgAr.js → classDiagram-GIVACNV2-Cnd4tPRq.js} +4 -4
  17. package/out/renderer/assets/{classDiagram-v2-COTLJTTW-vtFcXgAr.js → classDiagram-v2-COTLJTTW-Cnd4tPRq.js} +4 -4
  18. package/out/renderer/assets/{clone-BAOF7mPn.js → clone-BCPfPeR9.js} +1 -1
  19. package/out/renderer/assets/{dagre-OKDRZEBW-BsxbY4uX.js → dagre-OKDRZEBW-ibCOzp8h.js} +7 -7
  20. package/out/renderer/assets/{diagram-SSKATNLV-Cc6v1RBI.js → diagram-SSKATNLV-DZ_28qLH.js} +7 -7
  21. package/out/renderer/assets/{diagram-VNBRO52H-CU_0csUZ.js → diagram-VNBRO52H-C4EHouH3.js} +7 -7
  22. package/out/renderer/assets/{erDiagram-Q7BY3M3F-Ccs7n14X.js → erDiagram-Q7BY3M3F-CBixsMqH.js} +4 -4
  23. package/out/renderer/assets/{flowDiagram-4HSFHLVR-BTDwdXoq.js → flowDiagram-4HSFHLVR-DygsQ6re.js} +4 -4
  24. package/out/renderer/assets/{fonts-Bb3Axuvj.js → fonts-BuD2eBgu.js} +2 -2
  25. package/out/renderer/assets/{ganttDiagram-APWFNJXF-BsHcmVQL.js → ganttDiagram-APWFNJXF-DKBtpWjh.js} +2 -2
  26. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-BrsAP7d3.js → gitGraphDiagram-7IBYFJ6S-BOlHobgq.js} +8 -8
  27. package/out/renderer/assets/{graph-U8n0FRxu.js → graph-BrJ54X2m.js} +2 -2
  28. package/out/renderer/assets/{index-B1kgBLxO.js → index-B2mf6FAB.js} +2 -2
  29. package/out/renderer/assets/{index-JQ7XEBgh.js → index-Br4QkH4P.js} +2 -2
  30. package/out/renderer/assets/{index-DnSZJXOl.js → index-CrpWKqP4.js} +1462 -507
  31. package/out/renderer/assets/{infoDiagram-PH2N3AL5-CeBCRQ-r.js → infoDiagram-PH2N3AL5-D9LWZKUq.js} +6 -6
  32. package/out/renderer/assets/{installer-B8QYcS9K.js → installer-CEV9DxzX.js} +1 -1
  33. package/out/renderer/assets/{journeyDiagram-U35MCT3I-CFEflF1X.js → journeyDiagram-U35MCT3I-CIFZcgcz.js} +4 -4
  34. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-lJsLyjEH.js → kanban-definition-NDS4AKOZ-C3xzGEKO.js} +2 -2
  35. package/out/renderer/assets/{layout-B7mvVV0Q.js → layout-hum_lC_u.js} +4 -4
  36. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-DuRohiYz.js → mindmap-definition-ALO5MXBD-phUqi7B-.js} +2 -2
  37. package/out/renderer/assets/{pieDiagram-IB7DONF6-CwHy1pe3.js → pieDiagram-IB7DONF6-QgaDuIyL.js} +8 -8
  38. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-DteRiyWH.js → quadrantDiagram-7GDLP6J5-D4VYcpj4.js} +2 -2
  39. package/out/renderer/assets/{radar-MK3ICKWK-D4mwq75I.js → radar-MK3ICKWK-Dgp3NTDC.js} +4 -4
  40. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-Cjtft40u.js → requirementDiagram-KVF5MWMF-BCnRxDQW.js} +3 -3
  41. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-DQ_oTubV.js → sankeyDiagram-QLVOVGJD-Yu0_0k4N.js} +2 -2
  42. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-CMUs0WWj.js → sequenceDiagram-X6HHIX6F-Bc6U0Afr.js} +4 -4
  43. package/out/renderer/assets/{stateDiagram-DGXRK772-JkRRAJkE.js → stateDiagram-DGXRK772-DXpv_6Ah.js} +8 -8
  44. package/out/renderer/assets/{stateDiagram-v2-YXO3MK2T-DhB-86w-.js → stateDiagram-v2-YXO3MK2T-DAAuA7TF.js} +4 -4
  45. package/out/renderer/assets/{timeline-definition-BDJGKUSR-DmImWV1j.js → timeline-definition-BDJGKUSR-DmQu0qcd.js} +3 -3
  46. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-DjE9t7Qo.js → xychartDiagram-VJFVF3MP-C3unJ9Bl.js} +2 -2
  47. package/out/renderer/index.html +3 -3
  48. package/out/renderer/installer.html +2 -2
  49. package/package.json +3 -2
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-JQ7XEBgh.js","./fonts-Bb3Axuvj.js","./fonts-B9KBGB-g.css","./index-B1kgBLxO.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js","./dagre-OKDRZEBW-BsxbY4uX.js","./graph-U8n0FRxu.js","./_baseUniq-BBOEV9y0.js","./layout-B7mvVV0Q.js","./_basePickBy-r5hhhokw.js","./clone-BAOF7mPn.js","./c4Diagram-VJAJSXHY-C36lbIjS.js","./chunk-D6G4REZN-D6XUL9LI.js","./flowDiagram-4HSFHLVR-BTDwdXoq.js","./chunk-RZ5BOZE2-D6JxF993.js","./channel-RymPaL1a.js","./erDiagram-Q7BY3M3F-Ccs7n14X.js","./gitGraphDiagram-7IBYFJ6S-BrsAP7d3.js","./chunk-4BMEZGHF-hetp-v-b.js","./chunk-XZIHB7SX--AwbJm2E.js","./radar-MK3ICKWK-D4mwq75I.js","./ganttDiagram-APWFNJXF-BsHcmVQL.js","./infoDiagram-PH2N3AL5-CeBCRQ-r.js","./pieDiagram-IB7DONF6-CwHy1pe3.js","./arc-Clqwk4k6.js","./quadrantDiagram-7GDLP6J5-DteRiyWH.js","./xychartDiagram-VJFVF3MP-DjE9t7Qo.js","./requirementDiagram-KVF5MWMF-Cjtft40u.js","./sequenceDiagram-X6HHIX6F-CMUs0WWj.js","./classDiagram-GIVACNV2-vtFcXgAr.js","./chunk-A2AXSNBT-RJ03JkZb.js","./classDiagram-v2-COTLJTTW-vtFcXgAr.js","./stateDiagram-DGXRK772-JkRRAJkE.js","./chunk-AEK57VVT-DC5ye4z8.js","./stateDiagram-v2-YXO3MK2T-DhB-86w-.js","./journeyDiagram-U35MCT3I-CFEflF1X.js","./timeline-definition-BDJGKUSR-DmImWV1j.js","./mindmap-definition-ALO5MXBD-DuRohiYz.js","./cytoscape.esm-C0AOj4uS.js","./kanban-definition-NDS4AKOZ-lJsLyjEH.js","./sankeyDiagram-QLVOVGJD-DQ_oTubV.js","./diagram-VNBRO52H-CU_0csUZ.js","./diagram-SSKATNLV-Cc6v1RBI.js","./blockDiagram-JOT3LUYC-B1Up6r6-.js","./architectureDiagram-IEHRJDOE-Bx8X697l.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";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-Br4QkH4P.js","./fonts-BuD2eBgu.js","./fonts-B9KBGB-g.css","./index-B2mf6FAB.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js","./dagre-OKDRZEBW-ibCOzp8h.js","./graph-BrJ54X2m.js","./_baseUniq-X7Vro_wh.js","./layout-hum_lC_u.js","./_basePickBy-D7-oSnE5.js","./clone-BCPfPeR9.js","./c4Diagram-VJAJSXHY-Dx-AuScK.js","./chunk-D6G4REZN-B3sTI3Jm.js","./flowDiagram-4HSFHLVR-DygsQ6re.js","./chunk-RZ5BOZE2-75TNXCaI.js","./channel-DI0Un_qP.js","./erDiagram-Q7BY3M3F-CBixsMqH.js","./gitGraphDiagram-7IBYFJ6S-BOlHobgq.js","./chunk-4BMEZGHF-DU1gGN2t.js","./chunk-XZIHB7SX-w_rKBzke.js","./radar-MK3ICKWK-Dgp3NTDC.js","./ganttDiagram-APWFNJXF-DKBtpWjh.js","./infoDiagram-PH2N3AL5-D9LWZKUq.js","./pieDiagram-IB7DONF6-QgaDuIyL.js","./arc-7P79Je3V.js","./quadrantDiagram-7GDLP6J5-D4VYcpj4.js","./xychartDiagram-VJFVF3MP-C3unJ9Bl.js","./requirementDiagram-KVF5MWMF-BCnRxDQW.js","./sequenceDiagram-X6HHIX6F-Bc6U0Afr.js","./classDiagram-GIVACNV2-Cnd4tPRq.js","./chunk-A2AXSNBT-KLrIrrqO.js","./classDiagram-v2-COTLJTTW-Cnd4tPRq.js","./stateDiagram-DGXRK772-DXpv_6Ah.js","./chunk-AEK57VVT-F_Lp1sht.js","./stateDiagram-v2-YXO3MK2T-DAAuA7TF.js","./journeyDiagram-U35MCT3I-CIFZcgcz.js","./timeline-definition-BDJGKUSR-DmQu0qcd.js","./mindmap-definition-ALO5MXBD-phUqi7B-.js","./cytoscape.esm-C0AOj4uS.js","./kanban-definition-NDS4AKOZ-C3xzGEKO.js","./sankeyDiagram-QLVOVGJD-Yu0_0k4N.js","./diagram-VNBRO52H-C4EHouH3.js","./diagram-SSKATNLV-DZ_28qLH.js","./blockDiagram-JOT3LUYC-CULzoKmb.js","./architectureDiagram-IEHRJDOE-ff35K764.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 faExclamationCircle, b8 as faFile, 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-BuD2eBgu.js";
3
3
  const styled = createStyled();
4
4
  function getThemeProps(params) {
5
5
  const {
@@ -1434,18 +1434,18 @@ var QueryCache = class extends Subscribable {
1434
1434
  this.#queries = /* @__PURE__ */ new Map();
1435
1435
  }
1436
1436
  #queries;
1437
- build(client, options, state2) {
1437
+ build(client2, options, state2) {
1438
1438
  const queryKey = options.queryKey;
1439
1439
  const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);
1440
1440
  let query = this.get(queryHash);
1441
1441
  if (!query) {
1442
1442
  query = new Query({
1443
- client,
1443
+ client: client2,
1444
1444
  queryKey,
1445
1445
  queryHash,
1446
- options: client.defaultQueryOptions(options),
1446
+ options: client2.defaultQueryOptions(options),
1447
1447
  state: state2,
1448
- defaultOptions: client.getQueryDefaults(queryKey)
1448
+ defaultOptions: client2.getQueryDefaults(queryKey)
1449
1449
  });
1450
1450
  this.add(query);
1451
1451
  }
@@ -1752,11 +1752,11 @@ var MutationCache = class extends Subscribable {
1752
1752
  #mutations;
1753
1753
  #scopes;
1754
1754
  #mutationId;
1755
- build(client, options, state2) {
1755
+ build(client2, options, state2) {
1756
1756
  const mutation = new Mutation({
1757
1757
  mutationCache: this,
1758
1758
  mutationId: ++this.#mutationId,
1759
- options: client.defaultMutationOptions(options),
1759
+ options: client2.defaultMutationOptions(options),
1760
1760
  state: state2
1761
1761
  });
1762
1762
  this.add(mutation);
@@ -2254,10 +2254,10 @@ var QueryClient = class {
2254
2254
  }
2255
2255
  };
2256
2256
  var QueryObserver = class extends Subscribable {
2257
- constructor(client, options) {
2257
+ constructor(client2, options) {
2258
2258
  super();
2259
2259
  this.options = options;
2260
- this.#client = client;
2260
+ this.#client = client2;
2261
2261
  this.#selectError = null;
2262
2262
  this.#currentThenable = pendingThenable();
2263
2263
  if (!this.options.experimental_prefetchInRender) {
@@ -2703,8 +2703,8 @@ function shouldAssignObserverCurrentProperties(observer, optimisticResult) {
2703
2703
  return false;
2704
2704
  }
2705
2705
  var InfiniteQueryObserver = class extends QueryObserver {
2706
- constructor(client, options) {
2707
- super(client, options);
2706
+ constructor(client2, options) {
2707
+ super(client2, options);
2708
2708
  }
2709
2709
  bindMethods() {
2710
2710
  super.bindMethods();
@@ -2767,9 +2767,9 @@ var MutationObserver$1 = class MutationObserver2 extends Subscribable {
2767
2767
  #currentResult = void 0;
2768
2768
  #currentMutation;
2769
2769
  #mutateOptions;
2770
- constructor(client, options) {
2770
+ constructor(client2, options) {
2771
2771
  super();
2772
- this.#client = client;
2772
+ this.#client = client2;
2773
2773
  this.setOptions(options);
2774
2774
  this.bindMethods();
2775
2775
  this.#updateResult();
@@ -2859,23 +2859,23 @@ var QueryClientContext = reactExports.createContext(
2859
2859
  void 0
2860
2860
  );
2861
2861
  var useQueryClient = (queryClient2) => {
2862
- const client = reactExports.useContext(QueryClientContext);
2863
- if (!client) {
2862
+ const client2 = reactExports.useContext(QueryClientContext);
2863
+ if (!client2) {
2864
2864
  throw new Error("No QueryClient set, use QueryClientProvider to set one");
2865
2865
  }
2866
- return client;
2866
+ return client2;
2867
2867
  };
2868
2868
  var QueryClientProvider = ({
2869
- client,
2869
+ client: client2,
2870
2870
  children: children2
2871
2871
  }) => {
2872
2872
  reactExports.useEffect(() => {
2873
- client.mount();
2873
+ client2.mount();
2874
2874
  return () => {
2875
- client.unmount();
2875
+ client2.unmount();
2876
2876
  };
2877
- }, [client]);
2878
- return /* @__PURE__ */ jsxRuntimeExports.jsx(QueryClientContext.Provider, { value: client, children: children2 });
2877
+ }, [client2]);
2878
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(QueryClientContext.Provider, { value: client2, children: children2 });
2879
2879
  };
2880
2880
  var IsRestoringContext = reactExports.createContext(false);
2881
2881
  var useIsRestoring = () => reactExports.useContext(IsRestoringContext);
@@ -2940,21 +2940,21 @@ var fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observ
2940
2940
  errorResetBoundary.clearReset();
2941
2941
  });
2942
2942
  function useBaseQuery(options, Observer2, queryClient2) {
2943
- const client = useQueryClient();
2943
+ const client2 = useQueryClient();
2944
2944
  const isRestoring = useIsRestoring();
2945
2945
  const errorResetBoundary = useQueryErrorResetBoundary();
2946
- const defaultedOptions = client.defaultQueryOptions(options);
2947
- client.getDefaultOptions().queries?._experimental_beforeQuery?.(
2946
+ const defaultedOptions = client2.defaultQueryOptions(options);
2947
+ client2.getDefaultOptions().queries?._experimental_beforeQuery?.(
2948
2948
  defaultedOptions
2949
2949
  );
2950
2950
  defaultedOptions._optimisticResults = isRestoring ? "isRestoring" : "optimistic";
2951
2951
  ensureSuspenseTimers(defaultedOptions);
2952
2952
  ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);
2953
2953
  useClearResetErrorBoundary(errorResetBoundary);
2954
- const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);
2954
+ const isNewCacheEntry = !client2.getQueryCache().get(defaultedOptions.queryHash);
2955
2955
  const [observer] = reactExports.useState(
2956
2956
  () => new Observer2(
2957
- client,
2957
+ client2,
2958
2958
  defaultedOptions
2959
2959
  )
2960
2960
  );
@@ -2982,12 +2982,12 @@ function useBaseQuery(options, Observer2, queryClient2) {
2982
2982
  result,
2983
2983
  errorResetBoundary,
2984
2984
  throwOnError: defaultedOptions.throwOnError,
2985
- query: client.getQueryCache().get(defaultedOptions.queryHash),
2985
+ query: client2.getQueryCache().get(defaultedOptions.queryHash),
2986
2986
  suspense: defaultedOptions.suspense
2987
2987
  })) {
2988
2988
  throw result.error;
2989
2989
  }
2990
- client.getDefaultOptions().queries?._experimental_afterQuery?.(
2990
+ client2.getDefaultOptions().queries?._experimental_afterQuery?.(
2991
2991
  defaultedOptions,
2992
2992
  result
2993
2993
  );
@@ -2997,7 +2997,7 @@ function useBaseQuery(options, Observer2, queryClient2) {
2997
2997
  fetchOptimistic(defaultedOptions, observer, errorResetBoundary)
2998
2998
  ) : (
2999
2999
  // subscribe to the "cache promise" so that we can finalize the currentThenable once data comes in
3000
- client.getQueryCache().get(defaultedOptions.queryHash)?.promise
3000
+ client2.getQueryCache().get(defaultedOptions.queryHash)?.promise
3001
3001
  );
3002
3002
  promise?.catch(noop$5).finally(() => {
3003
3003
  observer.updateResult();
@@ -3009,10 +3009,10 @@ function useQuery(options, queryClient2) {
3009
3009
  return useBaseQuery(options, QueryObserver);
3010
3010
  }
3011
3011
  function useMutation(options, queryClient2) {
3012
- const client = useQueryClient();
3012
+ const client2 = useQueryClient();
3013
3013
  const [observer] = reactExports.useState(
3014
3014
  () => new MutationObserver$1(
3015
- client,
3015
+ client2,
3016
3016
  options
3017
3017
  )
3018
3018
  );
@@ -7495,26 +7495,26 @@ function isDeepEqual(obj1, obj2, visited) {
7495
7495
  return true;
7496
7496
  }
7497
7497
  function PostHogProvider(_a2) {
7498
- var children2 = _a2.children, client = _a2.client, apiKey = _a2.apiKey, options = _a2.options;
7498
+ var children2 = _a2.children, client2 = _a2.client, apiKey = _a2.apiKey, options = _a2.options;
7499
7499
  var previousInitializationRef = reactExports.useRef(null);
7500
7500
  var posthog = reactExports.useMemo(function() {
7501
- if (client) {
7501
+ if (client2) {
7502
7502
  if (apiKey) {
7503
7503
  console.warn("[PostHog.js] You have provided both `client` and `apiKey` to `PostHogProvider`. `apiKey` will be ignored in favour of `client`.");
7504
7504
  }
7505
7505
  if (options) {
7506
7506
  console.warn("[PostHog.js] You have provided both `client` and `options` to `PostHogProvider`. `options` will be ignored in favour of `client`.");
7507
7507
  }
7508
- return client;
7508
+ return client2;
7509
7509
  }
7510
7510
  if (apiKey) {
7511
7511
  return aa;
7512
7512
  }
7513
7513
  console.warn("[PostHog.js] No `apiKey` or `client` were provided to `PostHogProvider`. Using default global `window.posthog` instance. You must initialize it manually. This is not recommended behavior.");
7514
7514
  return aa;
7515
- }, [client, apiKey, JSON.stringify(options)]);
7515
+ }, [client2, apiKey, JSON.stringify(options)]);
7516
7516
  reactExports.useEffect(function() {
7517
- if (client) {
7517
+ if (client2) {
7518
7518
  return;
7519
7519
  }
7520
7520
  var previousInitialization = previousInitializationRef.current;
@@ -7539,23 +7539,23 @@ function PostHogProvider(_a2) {
7539
7539
  options: options !== null && options !== void 0 ? options : {}
7540
7540
  };
7541
7541
  }
7542
- }, [client, apiKey, JSON.stringify(options)]);
7542
+ }, [client2, apiKey, JSON.stringify(options)]);
7543
7543
  return React$1.createElement(PostHogContext.Provider, { value: { client: posthog } }, children2);
7544
7544
  }
7545
7545
  var usePostHog = function() {
7546
- var client = reactExports.useContext(PostHogContext).client;
7547
- return client;
7546
+ var client2 = reactExports.useContext(PostHogContext).client;
7547
+ return client2;
7548
7548
  };
7549
7549
  function useFeatureFlagEnabled(flag2) {
7550
- var client = usePostHog();
7550
+ var client2 = usePostHog();
7551
7551
  var _a2 = reactExports.useState(function() {
7552
- return client.isFeatureEnabled(flag2);
7552
+ return client2.isFeatureEnabled(flag2);
7553
7553
  }), featureEnabled = _a2[0], setFeatureEnabled = _a2[1];
7554
7554
  reactExports.useEffect(function() {
7555
- return client.onFeatureFlags(function() {
7556
- setFeatureEnabled(client.isFeatureEnabled(flag2));
7555
+ return client2.onFeatureFlags(function() {
7556
+ setFeatureEnabled(client2.isFeatureEnabled(flag2));
7557
7557
  });
7558
- }, [client, flag2]);
7558
+ }, [client2, flag2]);
7559
7559
  return featureEnabled;
7560
7560
  }
7561
7561
  var extendStatics = function(d2, b2) {
@@ -7605,8 +7605,8 @@ var __POSTHOG_ERROR_MESSAGES = {
7605
7605
  } else if (typeof additionalProperties === "object") {
7606
7606
  currentProperties = additionalProperties;
7607
7607
  }
7608
- var client = this.context.client;
7609
- client.captureException(error, currentProperties);
7608
+ var client2 = this.context.client;
7609
+ client2.captureException(error, currentProperties);
7610
7610
  };
7611
7611
  PostHogErrorBoundary.prototype.render = function() {
7612
7612
  var _a2 = this.props, children2 = _a2.children, fallback2 = _a2.fallback;
@@ -29397,6 +29397,53 @@ const SchedulesApi = {
29397
29397
  return response.json();
29398
29398
  }
29399
29399
  };
29400
+ const SpeechApi = {
29401
+ /**
29402
+ * Generates speech from text.
29403
+ * @param baseUrl - The base URL of the API.
29404
+ * @param request - The speech request details.
29405
+ * @returns A promise that resolves to the audio data as a Blob.
29406
+ */
29407
+ create: async (baseUrl, request) => {
29408
+ const response = await fetch(`${baseUrl}/v1/tools/speech`, {
29409
+ method: "POST",
29410
+ headers: {
29411
+ "Content-Type": "application/json"
29412
+ },
29413
+ body: JSON.stringify(request)
29414
+ });
29415
+ if (!response.ok) {
29416
+ const errorText = await response.text();
29417
+ throw new Error(
29418
+ `Failed to generate speech: ${response.status} ${errorText}`
29419
+ );
29420
+ }
29421
+ return response.blob();
29422
+ },
29423
+ /**
29424
+ * Generates speech from an agent's last message.
29425
+ * @param baseUrl - The base URL of the API.
29426
+ * @param agentId - The ID of the agent.
29427
+ * @param request - The speech request details.
29428
+ * @returns A promise that resolves to the audio data as a Blob.
29429
+ */
29430
+ createForAgent: async (baseUrl, agentId, request) => {
29431
+ const response = await fetch(`${baseUrl}/v1/agents/${agentId}/speech`, {
29432
+ method: "POST",
29433
+ headers: {
29434
+ "Content-Type": "application/json"
29435
+ },
29436
+ body: JSON.stringify(request)
29437
+ });
29438
+ if (!response.ok) {
29439
+ const errorText = await response.text();
29440
+ throw new Error(
29441
+ `Failed to generate speech: ${response.status} ${errorText}`
29442
+ );
29443
+ }
29444
+ return response.blob();
29445
+ }
29446
+ };
29400
29447
  const getImageUrl = (baseUrl, imagePath) => {
29401
29448
  const normalizedBaseUrl = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
29402
29449
  let normalizedPath = imagePath;
@@ -29415,6 +29462,15 @@ const getVideoUrl = (baseUrl, videoPath) => {
29415
29462
  const encodedPath = encodeURIComponent(normalizedPath);
29416
29463
  return `${normalizedBaseUrl}/v1/static/videos?path=${encodedPath}`;
29417
29464
  };
29465
+ const getAudioUrl = (baseUrl, audioPath) => {
29466
+ const normalizedBaseUrl = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
29467
+ let normalizedPath = audioPath;
29468
+ if (normalizedPath.startsWith("file://")) {
29469
+ normalizedPath = normalizedPath.substring(7);
29470
+ }
29471
+ const encodedPath = encodeURIComponent(normalizedPath);
29472
+ return `${normalizedBaseUrl}/v1/static/audio?path=${encodedPath}`;
29473
+ };
29418
29474
  const getHtmlUrl = (baseUrl, htmlPath) => {
29419
29475
  const normalizedBaseUrl = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
29420
29476
  let normalizedPath = htmlPath;
@@ -29427,6 +29483,7 @@ const getHtmlUrl = (baseUrl, htmlPath) => {
29427
29483
  const StaticApi = {
29428
29484
  getImageUrl,
29429
29485
  getVideoUrl,
29486
+ getAudioUrl,
29430
29487
  getHtmlUrl
29431
29488
  };
29432
29489
  const TranscriptionApi = {
@@ -30064,6 +30121,12 @@ class LocalOperatorClient {
30064
30121
  get transcription() {
30065
30122
  return this.bindBaseUrlToApi(TranscriptionApi);
30066
30123
  }
30124
+ /**
30125
+ * Get the Speech API client with methods bound to the base URL
30126
+ */
30127
+ get speech() {
30128
+ return this.bindBaseUrlToApi(SpeechApi);
30129
+ }
30067
30130
  /**
30068
30131
  * Bind the base URL to all methods of an API client
30069
30132
  *
@@ -35326,8 +35389,8 @@ const useConfig = () => {
35326
35389
  queryKey: configQueryKey,
35327
35390
  queryFn: async () => {
35328
35391
  try {
35329
- const client = createLocalOperatorClient(apiConfig.baseUrl);
35330
- const response = await client.config.getConfig();
35392
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
35393
+ const response = await client2.config.getConfig();
35331
35394
  if (response.status >= 400) {
35332
35395
  throw new Error(response.message || "Failed to fetch configuration");
35333
35396
  }
@@ -35539,8 +35602,8 @@ const useAgents = (page = 1, perPage = 50, refetchInterval = 0, name2, sort, dir
35539
35602
  queryKey: [...agentsQueryKey, page, perPage, name2, sort, direction],
35540
35603
  queryFn: async () => {
35541
35604
  try {
35542
- const client = createLocalOperatorClient(apiConfig.baseUrl);
35543
- const response = await client.agents.listAgents(
35605
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
35606
+ const response = await client2.agents.listAgents(
35544
35607
  page,
35545
35608
  perPage,
35546
35609
  name2,
@@ -35580,8 +35643,8 @@ const useAgent = (agentId) => {
35580
35643
  queryFn: async () => {
35581
35644
  if (!agentId) return null;
35582
35645
  try {
35583
- const client = createLocalOperatorClient(apiConfig.baseUrl);
35584
- const response = await client.agents.getAgent(agentId);
35646
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
35647
+ const response = await client2.agents.getAgent(agentId);
35585
35648
  if (response.status >= 400) {
35586
35649
  throw new Error(
35587
35650
  response.message || `Failed to fetch agent ${agentId}`
@@ -35601,11 +35664,11 @@ const useAgent = (agentId) => {
35601
35664
  };
35602
35665
  const useCreateAgent = () => {
35603
35666
  const queryClient2 = useQueryClient();
35604
- const client = createLocalOperatorClient(apiConfig.baseUrl);
35667
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
35605
35668
  return useMutation({
35606
35669
  mutationFn: async (newAgent) => {
35607
35670
  try {
35608
- const response = await client.agents.createAgent(newAgent);
35671
+ const response = await client2.agents.createAgent(newAgent);
35609
35672
  if (response.status >= 400) {
35610
35673
  throw new Error(response.message || "Failed to create agent");
35611
35674
  }
@@ -35627,11 +35690,11 @@ const useCreateAgent = () => {
35627
35690
  };
35628
35691
  const useUploadAgentToRadientMutation = () => {
35629
35692
  const queryClient2 = useQueryClient();
35630
- const client = createLocalOperatorClient(apiConfig.baseUrl);
35693
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
35631
35694
  return useMutation({
35632
35695
  mutationFn: async (agentId) => {
35633
35696
  try {
35634
- const response = await client.agents.uploadAgentToRadient(agentId);
35697
+ const response = await client2.agents.uploadAgentToRadient(agentId);
35635
35698
  if (response.status >= 400) {
35636
35699
  throw new Error(
35637
35700
  response.message || `Failed to upload agent ${agentId} to Radient`
@@ -35657,11 +35720,11 @@ const useUploadAgentToRadientMutation = () => {
35657
35720
  };
35658
35721
  const useDeleteAgent = () => {
35659
35722
  const queryClient2 = useQueryClient();
35660
- const client = createLocalOperatorClient(apiConfig.baseUrl);
35723
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
35661
35724
  return useMutation({
35662
35725
  mutationFn: async (agentId) => {
35663
35726
  try {
35664
- const response = await client.agents.deleteAgent(agentId);
35727
+ const response = await client2.agents.deleteAgent(agentId);
35665
35728
  if (response.status >= 400) {
35666
35729
  throw new Error(
35667
35730
  response.message || `Failed to delete agent ${agentId}`
@@ -35689,11 +35752,11 @@ const useDeleteAgent = () => {
35689
35752
  };
35690
35753
  const useImportAgent = () => {
35691
35754
  const queryClient2 = useQueryClient();
35692
- const client = createLocalOperatorClient(apiConfig.baseUrl);
35755
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
35693
35756
  return useMutation({
35694
35757
  mutationFn: async (file) => {
35695
35758
  try {
35696
- const response = await client.agents.importAgent(file);
35759
+ const response = await client2.agents.importAgent(file);
35697
35760
  if (response.status >= 400) {
35698
35761
  throw new Error(response.message || "Failed to import agent");
35699
35762
  }
@@ -35715,11 +35778,11 @@ const useImportAgent = () => {
35715
35778
  });
35716
35779
  };
35717
35780
  const useExportAgent = () => {
35718
- const client = createLocalOperatorClient(apiConfig.baseUrl);
35781
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
35719
35782
  return useMutation({
35720
35783
  mutationFn: async (agentId) => {
35721
35784
  try {
35722
- return await client.agents.exportAgent(agentId);
35785
+ return await client2.agents.exportAgent(agentId);
35723
35786
  } catch (error) {
35724
35787
  const errorMessage = error instanceof Error ? error.message : `An unknown error occurred while exporting agent ${agentId}`;
35725
35788
  showErrorToast(errorMessage);
@@ -36008,30 +36071,30 @@ const useAgentSelectionStore = create$3()(
36008
36071
  * This source code is licensed under the ISC license.
36009
36072
  * See the LICENSE file in the root directory of this source tree.
36010
36073
  */
36011
- const __iconNode$1q = [
36074
+ const __iconNode$1v = [
36012
36075
  ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
36013
36076
  ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
36014
36077
  ["path", { d: "M10 12h4", key: "a56b0p" }]
36015
36078
  ];
36016
- const Archive = createLucideIcon("archive", __iconNode$1q);
36079
+ const Archive = createLucideIcon("archive", __iconNode$1v);
36017
36080
  /**
36018
36081
  * @license lucide-react v0.507.0 - ISC
36019
36082
  *
36020
36083
  * This source code is licensed under the ISC license.
36021
36084
  * See the LICENSE file in the root directory of this source tree.
36022
36085
  */
36023
- const __iconNode$1p = [
36086
+ const __iconNode$1u = [
36024
36087
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
36025
36088
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
36026
36089
  ];
36027
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1p);
36090
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1u);
36028
36091
  /**
36029
36092
  * @license lucide-react v0.507.0 - ISC
36030
36093
  *
36031
36094
  * This source code is licensed under the ISC license.
36032
36095
  * See the LICENSE file in the root directory of this source tree.
36033
36096
  */
36034
- const __iconNode$1o = [
36097
+ const __iconNode$1t = [
36035
36098
  ["path", { d: "M2 10v3", key: "1fnikh" }],
36036
36099
  ["path", { d: "M6 6v11", key: "11sgs0" }],
36037
36100
  ["path", { d: "M10 3v18", key: "yhl04a" }],
@@ -36039,14 +36102,14 @@ const __iconNode$1o = [
36039
36102
  ["path", { d: "M18 5v13", key: "123xd1" }],
36040
36103
  ["path", { d: "M22 10v3", key: "154ddg" }]
36041
36104
  ];
36042
- const AudioLines = createLucideIcon("audio-lines", __iconNode$1o);
36105
+ const AudioLines = createLucideIcon("audio-lines", __iconNode$1t);
36043
36106
  /**
36044
36107
  * @license lucide-react v0.507.0 - ISC
36045
36108
  *
36046
36109
  * This source code is licensed under the ISC license.
36047
36110
  * See the LICENSE file in the root directory of this source tree.
36048
36111
  */
36049
- const __iconNode$1n = [
36112
+ const __iconNode$1s = [
36050
36113
  [
36051
36114
  "path",
36052
36115
  {
@@ -36055,14 +36118,14 @@ const __iconNode$1n = [
36055
36118
  }
36056
36119
  ]
36057
36120
  ];
36058
- const Book = createLucideIcon("book", __iconNode$1n);
36121
+ const Book = createLucideIcon("book", __iconNode$1s);
36059
36122
  /**
36060
36123
  * @license lucide-react v0.507.0 - ISC
36061
36124
  *
36062
36125
  * This source code is licensed under the ISC license.
36063
36126
  * See the LICENSE file in the root directory of this source tree.
36064
36127
  */
36065
- const __iconNode$1m = [
36128
+ const __iconNode$1r = [
36066
36129
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
36067
36130
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
36068
36131
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -36070,25 +36133,25 @@ const __iconNode$1m = [
36070
36133
  ["path", { d: "M15 13v2", key: "1xurst" }],
36071
36134
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
36072
36135
  ];
36073
- const Bot = createLucideIcon("bot", __iconNode$1m);
36136
+ const Bot = createLucideIcon("bot", __iconNode$1r);
36074
36137
  /**
36075
36138
  * @license lucide-react v0.507.0 - ISC
36076
36139
  *
36077
36140
  * This source code is licensed under the ISC license.
36078
36141
  * See the LICENSE file in the root directory of this source tree.
36079
36142
  */
36080
- const __iconNode$1l = [
36143
+ const __iconNode$1q = [
36081
36144
  ["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
36082
36145
  ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
36083
36146
  ];
36084
- const Briefcase = createLucideIcon("briefcase", __iconNode$1l);
36147
+ const Briefcase = createLucideIcon("briefcase", __iconNode$1q);
36085
36148
  /**
36086
36149
  * @license lucide-react v0.507.0 - ISC
36087
36150
  *
36088
36151
  * This source code is licensed under the ISC license.
36089
36152
  * See the LICENSE file in the root directory of this source tree.
36090
36153
  */
36091
- const __iconNode$1k = [
36154
+ const __iconNode$1p = [
36092
36155
  ["path", { d: "M8 2v4", key: "1cmpym" }],
36093
36156
  ["path", { d: "M16 2v4", key: "4m81vk" }],
36094
36157
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
@@ -36100,160 +36163,175 @@ const __iconNode$1k = [
36100
36163
  ["path", { d: "M12 18h.01", key: "mhygvu" }],
36101
36164
  ["path", { d: "M16 18h.01", key: "kzsmim" }]
36102
36165
  ];
36103
- const CalendarDays = createLucideIcon("calendar-days", __iconNode$1k);
36166
+ const CalendarDays = createLucideIcon("calendar-days", __iconNode$1p);
36104
36167
  /**
36105
36168
  * @license lucide-react v0.507.0 - ISC
36106
36169
  *
36107
36170
  * This source code is licensed under the ISC license.
36108
36171
  * See the LICENSE file in the root directory of this source tree.
36109
36172
  */
36110
- const __iconNode$1j = [
36173
+ const __iconNode$1o = [
36111
36174
  ["path", { d: "M8 2v4", key: "1cmpym" }],
36112
36175
  ["path", { d: "M16 2v4", key: "4m81vk" }],
36113
36176
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
36114
36177
  ["path", { d: "M3 10h18", key: "8toen8" }]
36115
36178
  ];
36116
- const Calendar = createLucideIcon("calendar", __iconNode$1j);
36179
+ const Calendar = createLucideIcon("calendar", __iconNode$1o);
36117
36180
  /**
36118
36181
  * @license lucide-react v0.507.0 - ISC
36119
36182
  *
36120
36183
  * This source code is licensed under the ISC license.
36121
36184
  * See the LICENSE file in the root directory of this source tree.
36122
36185
  */
36123
- const __iconNode$1i = [
36186
+ const __iconNode$1n = [
36124
36187
  ["line", { x1: "18", x2: "18", y1: "20", y2: "10", key: "1xfpm4" }],
36125
36188
  ["line", { x1: "12", x2: "12", y1: "20", y2: "4", key: "be30l9" }],
36126
36189
  ["line", { x1: "6", x2: "6", y1: "20", y2: "14", key: "1r4le6" }]
36127
36190
  ];
36128
- const ChartNoAxesColumn = createLucideIcon("chart-no-axes-column", __iconNode$1i);
36191
+ const ChartNoAxesColumn = createLucideIcon("chart-no-axes-column", __iconNode$1n);
36129
36192
  /**
36130
36193
  * @license lucide-react v0.507.0 - ISC
36131
36194
  *
36132
36195
  * This source code is licensed under the ISC license.
36133
36196
  * See the LICENSE file in the root directory of this source tree.
36134
36197
  */
36135
- const __iconNode$1h = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
36136
- const Check = createLucideIcon("check", __iconNode$1h);
36198
+ const __iconNode$1m = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
36199
+ const Check = createLucideIcon("check", __iconNode$1m);
36137
36200
  /**
36138
36201
  * @license lucide-react v0.507.0 - ISC
36139
36202
  *
36140
36203
  * This source code is licensed under the ISC license.
36141
36204
  * See the LICENSE file in the root directory of this source tree.
36142
36205
  */
36143
- const __iconNode$1g = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
36144
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$1g);
36206
+ const __iconNode$1l = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
36207
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1l);
36145
36208
  /**
36146
36209
  * @license lucide-react v0.507.0 - ISC
36147
36210
  *
36148
36211
  * This source code is licensed under the ISC license.
36149
36212
  * See the LICENSE file in the root directory of this source tree.
36150
36213
  */
36151
- const __iconNode$1f = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
36152
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1f);
36214
+ const __iconNode$1k = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
36215
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1k);
36153
36216
  /**
36154
36217
  * @license lucide-react v0.507.0 - ISC
36155
36218
  *
36156
36219
  * This source code is licensed under the ISC license.
36157
36220
  * See the LICENSE file in the root directory of this source tree.
36158
36221
  */
36159
- const __iconNode$1e = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
36160
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$1e);
36222
+ const __iconNode$1j = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
36223
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1j);
36161
36224
  /**
36162
36225
  * @license lucide-react v0.507.0 - ISC
36163
36226
  *
36164
36227
  * This source code is licensed under the ISC license.
36165
36228
  * See the LICENSE file in the root directory of this source tree.
36166
36229
  */
36167
- const __iconNode$1d = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
36168
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$1d);
36230
+ const __iconNode$1i = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
36231
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1i);
36169
36232
  /**
36170
36233
  * @license lucide-react v0.507.0 - ISC
36171
36234
  *
36172
36235
  * This source code is licensed under the ISC license.
36173
36236
  * See the LICENSE file in the root directory of this source tree.
36174
36237
  */
36175
- const __iconNode$1c = [
36238
+ const __iconNode$1h = [
36176
36239
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
36177
36240
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
36178
36241
  ];
36179
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1c);
36242
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1h);
36180
36243
  /**
36181
36244
  * @license lucide-react v0.507.0 - ISC
36182
36245
  *
36183
36246
  * This source code is licensed under the ISC license.
36184
36247
  * See the LICENSE file in the root directory of this source tree.
36185
36248
  */
36186
- const __iconNode$1b = [
36249
+ const __iconNode$1g = [
36187
36250
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36188
36251
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
36189
36252
  ];
36190
- const CircleCheck = createLucideIcon("circle-check", __iconNode$1b);
36253
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$1g);
36191
36254
  /**
36192
36255
  * @license lucide-react v0.507.0 - ISC
36193
36256
  *
36194
36257
  * This source code is licensed under the ISC license.
36195
36258
  * See the LICENSE file in the root directory of this source tree.
36196
36259
  */
36197
- const __iconNode$1a = [
36260
+ const __iconNode$1f = [
36198
36261
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36199
36262
  ["path", { d: "M17 12h.01", key: "1m0b6t" }],
36200
36263
  ["path", { d: "M12 12h.01", key: "1mp3jc" }],
36201
36264
  ["path", { d: "M7 12h.01", key: "eqddd0" }]
36202
36265
  ];
36203
- const CircleEllipsis = createLucideIcon("circle-ellipsis", __iconNode$1a);
36266
+ const CircleEllipsis = createLucideIcon("circle-ellipsis", __iconNode$1f);
36204
36267
  /**
36205
36268
  * @license lucide-react v0.507.0 - ISC
36206
36269
  *
36207
36270
  * This source code is licensed under the ISC license.
36208
36271
  * See the LICENSE file in the root directory of this source tree.
36209
36272
  */
36210
- const __iconNode$19 = [
36273
+ const __iconNode$1e = [
36211
36274
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36212
36275
  ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
36213
36276
  ["path", { d: "M12 17h.01", key: "p32p05" }]
36214
36277
  ];
36215
- const CircleHelp = createLucideIcon("circle-help", __iconNode$19);
36278
+ const CircleHelp = createLucideIcon("circle-help", __iconNode$1e);
36216
36279
  /**
36217
36280
  * @license lucide-react v0.507.0 - ISC
36218
36281
  *
36219
36282
  * This source code is licensed under the ISC license.
36220
36283
  * See the LICENSE file in the root directory of this source tree.
36221
36284
  */
36222
- const __iconNode$18 = [
36285
+ const __iconNode$1d = [
36286
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36287
+ ["line", { x1: "10", x2: "10", y1: "15", y2: "9", key: "c1nkhi" }],
36288
+ ["line", { x1: "14", x2: "14", y1: "15", y2: "9", key: "h65svq" }]
36289
+ ];
36290
+ const CirclePause = createLucideIcon("circle-pause", __iconNode$1d);
36291
+ /**
36292
+ * @license lucide-react v0.507.0 - ISC
36293
+ *
36294
+ * This source code is licensed under the ISC license.
36295
+ * See the LICENSE file in the root directory of this source tree.
36296
+ */
36297
+ const __iconNode$1c = [
36223
36298
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36224
36299
  ["polygon", { points: "10 8 16 12 10 16 10 8", key: "1cimsy" }]
36225
36300
  ];
36226
- const CirclePlay = createLucideIcon("circle-play", __iconNode$18);
36301
+ const CirclePlay = createLucideIcon("circle-play", __iconNode$1c);
36227
36302
  /**
36228
36303
  * @license lucide-react v0.507.0 - ISC
36229
36304
  *
36230
36305
  * This source code is licensed under the ISC license.
36231
36306
  * See the LICENSE file in the root directory of this source tree.
36232
36307
  */
36233
- const __iconNode$17 = [
36308
+ const __iconNode$1b = [
36234
36309
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36235
36310
  ["path", { d: "M8 12h8", key: "1wcyev" }],
36236
36311
  ["path", { d: "M12 8v8", key: "napkw2" }]
36237
36312
  ];
36238
- const CirclePlus = createLucideIcon("circle-plus", __iconNode$17);
36313
+ const CirclePlus = createLucideIcon("circle-plus", __iconNode$1b);
36239
36314
  /**
36240
36315
  * @license lucide-react v0.507.0 - ISC
36241
36316
  *
36242
36317
  * This source code is licensed under the ISC license.
36243
36318
  * See the LICENSE file in the root directory of this source tree.
36244
36319
  */
36245
- const __iconNode$16 = [
36246
- ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36247
- ["rect", { x: "9", y: "9", width: "6", height: "6", rx: "1", key: "1ssd4o" }]
36320
+ const __iconNode$1a = [
36321
+ ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
36322
+ ["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2", key: "4jdomd" }],
36323
+ ["path", { d: "M16 4h2a2 2 0 0 1 2 2v4", key: "3hqy98" }],
36324
+ ["path", { d: "M21 14H11", key: "1bme5i" }],
36325
+ ["path", { d: "m15 10-4 4 4 4", key: "5dvupr" }]
36248
36326
  ];
36249
- const CircleStop = createLucideIcon("circle-stop", __iconNode$16);
36327
+ const ClipboardCopy = createLucideIcon("clipboard-copy", __iconNode$1a);
36250
36328
  /**
36251
36329
  * @license lucide-react v0.507.0 - ISC
36252
36330
  *
36253
36331
  * This source code is licensed under the ISC license.
36254
36332
  * See the LICENSE file in the root directory of this source tree.
36255
36333
  */
36256
- const __iconNode$15 = [
36334
+ const __iconNode$19 = [
36257
36335
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
36258
36336
  [
36259
36337
  "path",
@@ -36267,72 +36345,72 @@ const __iconNode$15 = [
36267
36345
  ["path", { d: "M8 11h.01", key: "1dfujw" }],
36268
36346
  ["path", { d: "M8 16h.01", key: "18s6g9" }]
36269
36347
  ];
36270
- const ClipboardList = createLucideIcon("clipboard-list", __iconNode$15);
36348
+ const ClipboardList = createLucideIcon("clipboard-list", __iconNode$19);
36271
36349
  /**
36272
36350
  * @license lucide-react v0.507.0 - ISC
36273
36351
  *
36274
36352
  * This source code is licensed under the ISC license.
36275
36353
  * See the LICENSE file in the root directory of this source tree.
36276
36354
  */
36277
- const __iconNode$14 = [
36355
+ const __iconNode$18 = [
36278
36356
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36279
36357
  ["polyline", { points: "12 6 12 12 16 14", key: "68esgv" }]
36280
36358
  ];
36281
- const Clock$1 = createLucideIcon("clock", __iconNode$14);
36359
+ const Clock$1 = createLucideIcon("clock", __iconNode$18);
36282
36360
  /**
36283
36361
  * @license lucide-react v0.507.0 - ISC
36284
36362
  *
36285
36363
  * This source code is licensed under the ISC license.
36286
36364
  * See the LICENSE file in the root directory of this source tree.
36287
36365
  */
36288
- const __iconNode$13 = [
36366
+ const __iconNode$17 = [
36289
36367
  ["path", { d: "M12 13v8", key: "1l5pq0" }],
36290
36368
  ["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" }],
36291
36369
  ["path", { d: "m8 17 4-4 4 4", key: "1quai1" }]
36292
36370
  ];
36293
- const CloudUpload = createLucideIcon("cloud-upload", __iconNode$13);
36371
+ const CloudUpload = createLucideIcon("cloud-upload", __iconNode$17);
36294
36372
  /**
36295
36373
  * @license lucide-react v0.507.0 - ISC
36296
36374
  *
36297
36375
  * This source code is licensed under the ISC license.
36298
36376
  * See the LICENSE file in the root directory of this source tree.
36299
36377
  */
36300
- const __iconNode$12 = [
36378
+ const __iconNode$16 = [
36301
36379
  ["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
36302
36380
  ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
36303
36381
  ["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
36304
36382
  ];
36305
- const CodeXml = createLucideIcon("code-xml", __iconNode$12);
36383
+ const CodeXml = createLucideIcon("code-xml", __iconNode$16);
36306
36384
  /**
36307
36385
  * @license lucide-react v0.507.0 - ISC
36308
36386
  *
36309
36387
  * This source code is licensed under the ISC license.
36310
36388
  * See the LICENSE file in the root directory of this source tree.
36311
36389
  */
36312
- const __iconNode$11 = [
36390
+ const __iconNode$15 = [
36313
36391
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
36314
36392
  ["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" }]
36315
36393
  ];
36316
- const Copy = createLucideIcon("copy", __iconNode$11);
36394
+ const Copy = createLucideIcon("copy", __iconNode$15);
36317
36395
  /**
36318
36396
  * @license lucide-react v0.507.0 - ISC
36319
36397
  *
36320
36398
  * This source code is licensed under the ISC license.
36321
36399
  * See the LICENSE file in the root directory of this source tree.
36322
36400
  */
36323
- const __iconNode$10 = [
36401
+ const __iconNode$14 = [
36324
36402
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
36325
36403
  ["polyline", { points: "7 10 12 15 17 10", key: "2ggqvy" }],
36326
36404
  ["line", { x1: "12", x2: "12", y1: "15", y2: "3", key: "1vk2je" }]
36327
36405
  ];
36328
- const Download = createLucideIcon("download", __iconNode$10);
36406
+ const Download = createLucideIcon("download", __iconNode$14);
36329
36407
  /**
36330
36408
  * @license lucide-react v0.507.0 - ISC
36331
36409
  *
36332
36410
  * This source code is licensed under the ISC license.
36333
36411
  * See the LICENSE file in the root directory of this source tree.
36334
36412
  */
36335
- const __iconNode$$ = [
36413
+ const __iconNode$13 = [
36336
36414
  ["path", { d: "M21.54 15H17a2 2 0 0 0-2 2v4.54", key: "1djwo0" }],
36337
36415
  [
36338
36416
  "path",
@@ -36344,38 +36422,38 @@ const __iconNode$$ = [
36344
36422
  ["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" }],
36345
36423
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
36346
36424
  ];
36347
- const Earth = createLucideIcon("earth", __iconNode$$);
36425
+ const Earth = createLucideIcon("earth", __iconNode$13);
36348
36426
  /**
36349
36427
  * @license lucide-react v0.507.0 - ISC
36350
36428
  *
36351
36429
  * This source code is licensed under the ISC license.
36352
36430
  * See the LICENSE file in the root directory of this source tree.
36353
36431
  */
36354
- const __iconNode$_ = [
36432
+ const __iconNode$12 = [
36355
36433
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
36356
36434
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
36357
36435
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
36358
36436
  ];
36359
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$_);
36437
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$12);
36360
36438
  /**
36361
36439
  * @license lucide-react v0.507.0 - ISC
36362
36440
  *
36363
36441
  * This source code is licensed under the ISC license.
36364
36442
  * See the LICENSE file in the root directory of this source tree.
36365
36443
  */
36366
- const __iconNode$Z = [
36444
+ const __iconNode$11 = [
36367
36445
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
36368
36446
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
36369
36447
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
36370
36448
  ];
36371
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$Z);
36449
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$11);
36372
36450
  /**
36373
36451
  * @license lucide-react v0.507.0 - ISC
36374
36452
  *
36375
36453
  * This source code is licensed under the ISC license.
36376
36454
  * See the LICENSE file in the root directory of this source tree.
36377
36455
  */
36378
- const __iconNode$Y = [
36456
+ const __iconNode$10 = [
36379
36457
  [
36380
36458
  "path",
36381
36459
  {
@@ -36386,65 +36464,65 @@ const __iconNode$Y = [
36386
36464
  ["path", { d: "M22 21H7", key: "t4ddhn" }],
36387
36465
  ["path", { d: "m5 11 9 9", key: "1mo9qw" }]
36388
36466
  ];
36389
- const Eraser = createLucideIcon("eraser", __iconNode$Y);
36467
+ const Eraser = createLucideIcon("eraser", __iconNode$10);
36390
36468
  /**
36391
36469
  * @license lucide-react v0.507.0 - ISC
36392
36470
  *
36393
36471
  * This source code is licensed under the ISC license.
36394
36472
  * See the LICENSE file in the root directory of this source tree.
36395
36473
  */
36396
- const __iconNode$X = [
36474
+ const __iconNode$$ = [
36397
36475
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
36398
36476
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
36399
36477
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
36400
36478
  ];
36401
- const ExternalLink = createLucideIcon("external-link", __iconNode$X);
36479
+ const ExternalLink = createLucideIcon("external-link", __iconNode$$);
36402
36480
  /**
36403
36481
  * @license lucide-react v0.507.0 - ISC
36404
36482
  *
36405
36483
  * This source code is licensed under the ISC license.
36406
36484
  * See the LICENSE file in the root directory of this source tree.
36407
36485
  */
36408
- const __iconNode$W = [
36486
+ const __iconNode$_ = [
36409
36487
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36410
36488
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36411
36489
  ["circle", { cx: "10", cy: "12", r: "2", key: "737tya" }],
36412
36490
  ["path", { d: "m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22", key: "wt3hpn" }]
36413
36491
  ];
36414
- const FileImage = createLucideIcon("file-image", __iconNode$W);
36492
+ const FileImage = createLucideIcon("file-image", __iconNode$_);
36415
36493
  /**
36416
36494
  * @license lucide-react v0.507.0 - ISC
36417
36495
  *
36418
36496
  * This source code is licensed under the ISC license.
36419
36497
  * See the LICENSE file in the root directory of this source tree.
36420
36498
  */
36421
- const __iconNode$V = [
36499
+ const __iconNode$Z = [
36422
36500
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36423
36501
  ["path", { d: "M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2", key: "1vk7w2" }],
36424
36502
  ["path", { d: "M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6", key: "1jink5" }],
36425
36503
  ["path", { d: "m5 11-3 3", key: "1dgrs4" }],
36426
36504
  ["path", { d: "m5 17-3-3h10", key: "1mvvaf" }]
36427
36505
  ];
36428
- const FileOutput = createLucideIcon("file-output", __iconNode$V);
36506
+ const FileOutput = createLucideIcon("file-output", __iconNode$Z);
36429
36507
  /**
36430
36508
  * @license lucide-react v0.507.0 - ISC
36431
36509
  *
36432
36510
  * This source code is licensed under the ISC license.
36433
36511
  * See the LICENSE file in the root directory of this source tree.
36434
36512
  */
36435
- const __iconNode$U = [
36513
+ const __iconNode$Y = [
36436
36514
  ["path", { d: "M12 17h.01", key: "p32p05" }],
36437
36515
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }],
36438
36516
  ["path", { d: "M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3", key: "mhlwft" }]
36439
36517
  ];
36440
- const FileQuestion = createLucideIcon("file-question", __iconNode$U);
36518
+ const FileQuestion = createLucideIcon("file-question", __iconNode$Y);
36441
36519
  /**
36442
36520
  * @license lucide-react v0.507.0 - ISC
36443
36521
  *
36444
36522
  * This source code is licensed under the ISC license.
36445
36523
  * See the LICENSE file in the root directory of this source tree.
36446
36524
  */
36447
- const __iconNode$T = [
36525
+ const __iconNode$X = [
36448
36526
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36449
36527
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36450
36528
  ["path", { d: "M8 13h2", key: "yr2amv" }],
@@ -36452,64 +36530,64 @@ const __iconNode$T = [
36452
36530
  ["path", { d: "M8 17h2", key: "2yhykz" }],
36453
36531
  ["path", { d: "M14 17h2", key: "10kma7" }]
36454
36532
  ];
36455
- const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$T);
36533
+ const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$X);
36456
36534
  /**
36457
36535
  * @license lucide-react v0.507.0 - ISC
36458
36536
  *
36459
36537
  * This source code is licensed under the ISC license.
36460
36538
  * See the LICENSE file in the root directory of this source tree.
36461
36539
  */
36462
- const __iconNode$S = [
36540
+ const __iconNode$W = [
36463
36541
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36464
36542
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36465
36543
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
36466
36544
  ["path", { d: "M16 13H8", key: "t4e002" }],
36467
36545
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
36468
36546
  ];
36469
- const FileText = createLucideIcon("file-text", __iconNode$S);
36547
+ const FileText = createLucideIcon("file-text", __iconNode$W);
36470
36548
  /**
36471
36549
  * @license lucide-react v0.507.0 - ISC
36472
36550
  *
36473
36551
  * This source code is licensed under the ISC license.
36474
36552
  * See the LICENSE file in the root directory of this source tree.
36475
36553
  */
36476
- const __iconNode$R = [
36554
+ const __iconNode$V = [
36477
36555
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36478
36556
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36479
36557
  ["path", { d: "M12 12v6", key: "3ahymv" }],
36480
36558
  ["path", { d: "m15 15-3-3-3 3", key: "15xj92" }]
36481
36559
  ];
36482
- const FileUp = createLucideIcon("file-up", __iconNode$R);
36560
+ const FileUp = createLucideIcon("file-up", __iconNode$V);
36483
36561
  /**
36484
36562
  * @license lucide-react v0.507.0 - ISC
36485
36563
  *
36486
36564
  * This source code is licensed under the ISC license.
36487
36565
  * See the LICENSE file in the root directory of this source tree.
36488
36566
  */
36489
- const __iconNode$Q = [
36567
+ const __iconNode$U = [
36490
36568
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36491
36569
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36492
36570
  ["path", { d: "m10 11 5 3-5 3v-6Z", key: "7ntvm4" }]
36493
36571
  ];
36494
- const FileVideo = createLucideIcon("file-video", __iconNode$Q);
36572
+ const FileVideo = createLucideIcon("file-video", __iconNode$U);
36495
36573
  /**
36496
36574
  * @license lucide-react v0.507.0 - ISC
36497
36575
  *
36498
36576
  * This source code is licensed under the ISC license.
36499
36577
  * See the LICENSE file in the root directory of this source tree.
36500
36578
  */
36501
- const __iconNode$P = [
36579
+ const __iconNode$T = [
36502
36580
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36503
36581
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }]
36504
36582
  ];
36505
- const File$1 = createLucideIcon("file", __iconNode$P);
36583
+ const File$1 = createLucideIcon("file", __iconNode$T);
36506
36584
  /**
36507
36585
  * @license lucide-react v0.507.0 - ISC
36508
36586
  *
36509
36587
  * This source code is licensed under the ISC license.
36510
36588
  * See the LICENSE file in the root directory of this source tree.
36511
36589
  */
36512
- const __iconNode$O = [
36590
+ const __iconNode$S = [
36513
36591
  [
36514
36592
  "path",
36515
36593
  {
@@ -36520,14 +36598,14 @@ const __iconNode$O = [
36520
36598
  ["path", { d: "M6.453 15h11.094", key: "3shlmq" }],
36521
36599
  ["path", { d: "M8.5 2h7", key: "csnxdl" }]
36522
36600
  ];
36523
- const FlaskConical = createLucideIcon("flask-conical", __iconNode$O);
36601
+ const FlaskConical = createLucideIcon("flask-conical", __iconNode$S);
36524
36602
  /**
36525
36603
  * @license lucide-react v0.507.0 - ISC
36526
36604
  *
36527
36605
  * This source code is licensed under the ISC license.
36528
36606
  * See the LICENSE file in the root directory of this source tree.
36529
36607
  */
36530
- const __iconNode$N = [
36608
+ const __iconNode$R = [
36531
36609
  [
36532
36610
  "path",
36533
36611
  {
@@ -36536,14 +36614,14 @@ const __iconNode$N = [
36536
36614
  }
36537
36615
  ]
36538
36616
  ];
36539
- const FolderOpen = createLucideIcon("folder-open", __iconNode$N);
36617
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$R);
36540
36618
  /**
36541
36619
  * @license lucide-react v0.507.0 - ISC
36542
36620
  *
36543
36621
  * This source code is licensed under the ISC license.
36544
36622
  * See the LICENSE file in the root directory of this source tree.
36545
36623
  */
36546
- const __iconNode$M = [
36624
+ const __iconNode$Q = [
36547
36625
  [
36548
36626
  "path",
36549
36627
  {
@@ -36554,14 +36632,14 @@ const __iconNode$M = [
36554
36632
  ["path", { d: "M22 10v6", key: "1lu8f3" }],
36555
36633
  ["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
36556
36634
  ];
36557
- const GraduationCap = createLucideIcon("graduation-cap", __iconNode$M);
36635
+ const GraduationCap = createLucideIcon("graduation-cap", __iconNode$Q);
36558
36636
  /**
36559
36637
  * @license lucide-react v0.507.0 - ISC
36560
36638
  *
36561
36639
  * This source code is licensed under the ISC license.
36562
36640
  * See the LICENSE file in the root directory of this source tree.
36563
36641
  */
36564
- const __iconNode$L = [
36642
+ const __iconNode$P = [
36565
36643
  [
36566
36644
  "path",
36567
36645
  {
@@ -36571,14 +36649,14 @@ const __iconNode$L = [
36571
36649
  ],
36572
36650
  ["path", { d: "M3.22 12H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27", key: "1uw2ng" }]
36573
36651
  ];
36574
- const HeartPulse = createLucideIcon("heart-pulse", __iconNode$L);
36652
+ const HeartPulse = createLucideIcon("heart-pulse", __iconNode$P);
36575
36653
  /**
36576
36654
  * @license lucide-react v0.507.0 - ISC
36577
36655
  *
36578
36656
  * This source code is licensed under the ISC license.
36579
36657
  * See the LICENSE file in the root directory of this source tree.
36580
36658
  */
36581
- const __iconNode$K = [
36659
+ const __iconNode$O = [
36582
36660
  [
36583
36661
  "path",
36584
36662
  {
@@ -36587,26 +36665,26 @@ const __iconNode$K = [
36587
36665
  }
36588
36666
  ]
36589
36667
  ];
36590
- const Heart = createLucideIcon("heart", __iconNode$K);
36668
+ const Heart = createLucideIcon("heart", __iconNode$O);
36591
36669
  /**
36592
36670
  * @license lucide-react v0.507.0 - ISC
36593
36671
  *
36594
36672
  * This source code is licensed under the ISC license.
36595
36673
  * See the LICENSE file in the root directory of this source tree.
36596
36674
  */
36597
- const __iconNode$J = [
36675
+ const __iconNode$N = [
36598
36676
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
36599
36677
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
36600
36678
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
36601
36679
  ];
36602
- const History = createLucideIcon("history", __iconNode$J);
36680
+ const History = createLucideIcon("history", __iconNode$N);
36603
36681
  /**
36604
36682
  * @license lucide-react v0.507.0 - ISC
36605
36683
  *
36606
36684
  * This source code is licensed under the ISC license.
36607
36685
  * See the LICENSE file in the root directory of this source tree.
36608
36686
  */
36609
- const __iconNode$I = [
36687
+ const __iconNode$M = [
36610
36688
  ["path", { d: "M12 3v12", key: "1x0j5s" }],
36611
36689
  ["path", { d: "m8 11 4 4 4-4", key: "1dohi6" }],
36612
36690
  [
@@ -36617,38 +36695,38 @@ const __iconNode$I = [
36617
36695
  }
36618
36696
  ]
36619
36697
  ];
36620
- const Import = createLucideIcon("import", __iconNode$I);
36698
+ const Import = createLucideIcon("import", __iconNode$M);
36621
36699
  /**
36622
36700
  * @license lucide-react v0.507.0 - ISC
36623
36701
  *
36624
36702
  * This source code is licensed under the ISC license.
36625
36703
  * See the LICENSE file in the root directory of this source tree.
36626
36704
  */
36627
- const __iconNode$H = [
36705
+ const __iconNode$L = [
36628
36706
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36629
36707
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
36630
36708
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
36631
36709
  ];
36632
- const Info$1 = createLucideIcon("info", __iconNode$H);
36710
+ const Info$1 = createLucideIcon("info", __iconNode$L);
36633
36711
  /**
36634
36712
  * @license lucide-react v0.507.0 - ISC
36635
36713
  *
36636
36714
  * This source code is licensed under the ISC license.
36637
36715
  * See the LICENSE file in the root directory of this source tree.
36638
36716
  */
36639
- const __iconNode$G = [
36717
+ const __iconNode$K = [
36640
36718
  ["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" }],
36641
36719
  ["path", { d: "m21 2-9.6 9.6", key: "1j0ho8" }],
36642
36720
  ["circle", { cx: "7.5", cy: "15.5", r: "5.5", key: "yqb3hr" }]
36643
36721
  ];
36644
- const Key = createLucideIcon("key", __iconNode$G);
36722
+ const Key = createLucideIcon("key", __iconNode$K);
36645
36723
  /**
36646
36724
  * @license lucide-react v0.507.0 - ISC
36647
36725
  *
36648
36726
  * This source code is licensed under the ISC license.
36649
36727
  * See the LICENSE file in the root directory of this source tree.
36650
36728
  */
36651
- const __iconNode$F = [
36729
+ const __iconNode$J = [
36652
36730
  [
36653
36731
  "path",
36654
36732
  {
@@ -36671,27 +36749,27 @@ const __iconNode$F = [
36671
36749
  }
36672
36750
  ]
36673
36751
  ];
36674
- const Layers = createLucideIcon("layers", __iconNode$F);
36752
+ const Layers = createLucideIcon("layers", __iconNode$J);
36675
36753
  /**
36676
36754
  * @license lucide-react v0.507.0 - ISC
36677
36755
  *
36678
36756
  * This source code is licensed under the ISC license.
36679
36757
  * See the LICENSE file in the root directory of this source tree.
36680
36758
  */
36681
- const __iconNode$E = [
36759
+ const __iconNode$I = [
36682
36760
  ["rect", { width: "7", height: "7", x: "3", y: "3", rx: "1", key: "1g98yp" }],
36683
36761
  ["rect", { width: "7", height: "7", x: "14", y: "3", rx: "1", key: "6d4xhi" }],
36684
36762
  ["rect", { width: "7", height: "7", x: "14", y: "14", rx: "1", key: "nxv5o0" }],
36685
36763
  ["rect", { width: "7", height: "7", x: "3", y: "14", rx: "1", key: "1bb6yr" }]
36686
36764
  ];
36687
- const LayoutGrid = createLucideIcon("layout-grid", __iconNode$E);
36765
+ const LayoutGrid = createLucideIcon("layout-grid", __iconNode$I);
36688
36766
  /**
36689
36767
  * @license lucide-react v0.507.0 - ISC
36690
36768
  *
36691
36769
  * This source code is licensed under the ISC license.
36692
36770
  * See the LICENSE file in the root directory of this source tree.
36693
36771
  */
36694
- const __iconNode$D = [
36772
+ const __iconNode$H = [
36695
36773
  [
36696
36774
  "path",
36697
36775
  {
@@ -36702,114 +36780,114 @@ const __iconNode$D = [
36702
36780
  ["path", { d: "M9 18h6", key: "x1upvd" }],
36703
36781
  ["path", { d: "M10 22h4", key: "ceow96" }]
36704
36782
  ];
36705
- const Lightbulb = createLucideIcon("lightbulb", __iconNode$D);
36783
+ const Lightbulb = createLucideIcon("lightbulb", __iconNode$H);
36706
36784
  /**
36707
36785
  * @license lucide-react v0.507.0 - ISC
36708
36786
  *
36709
36787
  * This source code is licensed under the ISC license.
36710
36788
  * See the LICENSE file in the root directory of this source tree.
36711
36789
  */
36712
- const __iconNode$C = [
36790
+ const __iconNode$G = [
36713
36791
  ["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" }],
36714
36792
  ["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" }]
36715
36793
  ];
36716
- const Link = createLucideIcon("link", __iconNode$C);
36794
+ const Link = createLucideIcon("link", __iconNode$G);
36717
36795
  /**
36718
36796
  * @license lucide-react v0.507.0 - ISC
36719
36797
  *
36720
36798
  * This source code is licensed under the ISC license.
36721
36799
  * See the LICENSE file in the root directory of this source tree.
36722
36800
  */
36723
- const __iconNode$B = [
36801
+ const __iconNode$F = [
36724
36802
  ["path", { d: "M21 12h-8", key: "1bmf0i" }],
36725
36803
  ["path", { d: "M21 6H8", key: "1pqkrb" }],
36726
36804
  ["path", { d: "M21 18h-8", key: "1tm79t" }],
36727
36805
  ["path", { d: "M3 6v4c0 1.1.9 2 2 2h3", key: "1ywdgy" }],
36728
36806
  ["path", { d: "M3 10v6c0 1.1.9 2 2 2h3", key: "2wc746" }]
36729
36807
  ];
36730
- const ListTree = createLucideIcon("list-tree", __iconNode$B);
36808
+ const ListTree = createLucideIcon("list-tree", __iconNode$F);
36731
36809
  /**
36732
36810
  * @license lucide-react v0.507.0 - ISC
36733
36811
  *
36734
36812
  * This source code is licensed under the ISC license.
36735
36813
  * See the LICENSE file in the root directory of this source tree.
36736
36814
  */
36737
- const __iconNode$A = [
36815
+ const __iconNode$E = [
36738
36816
  ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
36739
36817
  ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
36740
36818
  ];
36741
- const Mail = createLucideIcon("mail", __iconNode$A);
36819
+ const Mail = createLucideIcon("mail", __iconNode$E);
36742
36820
  /**
36743
36821
  * @license lucide-react v0.507.0 - ISC
36744
36822
  *
36745
36823
  * This source code is licensed under the ISC license.
36746
36824
  * See the LICENSE file in the root directory of this source tree.
36747
36825
  */
36748
- const __iconNode$z = [
36826
+ const __iconNode$D = [
36749
36827
  ["polyline", { points: "15 3 21 3 21 9", key: "mznyad" }],
36750
36828
  ["polyline", { points: "9 21 3 21 3 15", key: "1avn1i" }],
36751
36829
  ["line", { x1: "21", x2: "14", y1: "3", y2: "10", key: "ota7mn" }],
36752
36830
  ["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }]
36753
36831
  ];
36754
- const Maximize2 = createLucideIcon("maximize-2", __iconNode$z);
36832
+ const Maximize2 = createLucideIcon("maximize-2", __iconNode$D);
36755
36833
  /**
36756
36834
  * @license lucide-react v0.507.0 - ISC
36757
36835
  *
36758
36836
  * This source code is licensed under the ISC license.
36759
36837
  * See the LICENSE file in the root directory of this source tree.
36760
36838
  */
36761
- const __iconNode$y = [
36839
+ const __iconNode$C = [
36762
36840
  ["path", { d: "m3 11 18-5v12L3 14v-3z", key: "n962bs" }],
36763
36841
  ["path", { d: "M11.6 16.8a3 3 0 1 1-5.8-1.6", key: "1yl0tm" }]
36764
36842
  ];
36765
- const Megaphone = createLucideIcon("megaphone", __iconNode$y);
36843
+ const Megaphone = createLucideIcon("megaphone", __iconNode$C);
36766
36844
  /**
36767
36845
  * @license lucide-react v0.507.0 - ISC
36768
36846
  *
36769
36847
  * This source code is licensed under the ISC license.
36770
36848
  * See the LICENSE file in the root directory of this source tree.
36771
36849
  */
36772
- const __iconNode$x = [
36850
+ const __iconNode$B = [
36773
36851
  ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }]
36774
36852
  ];
36775
- const MessageCircle = createLucideIcon("message-circle", __iconNode$x);
36853
+ const MessageCircle = createLucideIcon("message-circle", __iconNode$B);
36776
36854
  /**
36777
36855
  * @license lucide-react v0.507.0 - ISC
36778
36856
  *
36779
36857
  * This source code is licensed under the ISC license.
36780
36858
  * See the LICENSE file in the root directory of this source tree.
36781
36859
  */
36782
- const __iconNode$w = [
36860
+ const __iconNode$A = [
36783
36861
  ["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" }]
36784
36862
  ];
36785
- const MessageSquare = createLucideIcon("message-square", __iconNode$w);
36863
+ const MessageSquare = createLucideIcon("message-square", __iconNode$A);
36786
36864
  /**
36787
36865
  * @license lucide-react v0.507.0 - ISC
36788
36866
  *
36789
36867
  * This source code is licensed under the ISC license.
36790
36868
  * See the LICENSE file in the root directory of this source tree.
36791
36869
  */
36792
- const __iconNode$v = [
36870
+ const __iconNode$z = [
36793
36871
  ["path", { d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z", key: "131961" }],
36794
36872
  ["path", { d: "M19 10v2a7 7 0 0 1-14 0v-2", key: "1vc78b" }],
36795
36873
  ["line", { x1: "12", x2: "12", y1: "19", y2: "22", key: "x3vr5v" }]
36796
36874
  ];
36797
- const Mic = createLucideIcon("mic", __iconNode$v);
36875
+ const Mic = createLucideIcon("mic", __iconNode$z);
36798
36876
  /**
36799
36877
  * @license lucide-react v0.507.0 - ISC
36800
36878
  *
36801
36879
  * This source code is licensed under the ISC license.
36802
36880
  * See the LICENSE file in the root directory of this source tree.
36803
36881
  */
36804
- const __iconNode$u = [["path", { d: "M5 12h14", key: "1ays0h" }]];
36805
- const Minus$1 = createLucideIcon("minus", __iconNode$u);
36882
+ const __iconNode$y = [["path", { d: "M5 12h14", key: "1ays0h" }]];
36883
+ const Minus$1 = createLucideIcon("minus", __iconNode$y);
36806
36884
  /**
36807
36885
  * @license lucide-react v0.507.0 - ISC
36808
36886
  *
36809
36887
  * This source code is licensed under the ISC license.
36810
36888
  * See the LICENSE file in the root directory of this source tree.
36811
36889
  */
36812
- const __iconNode$t = [
36890
+ const __iconNode$x = [
36813
36891
  ["path", { d: "M12 2v20", key: "t6zp3m" }],
36814
36892
  ["path", { d: "m15 19-3 3-3-3", key: "11eu04" }],
36815
36893
  ["path", { d: "m19 9 3 3-3 3", key: "1mg7y2" }],
@@ -36817,14 +36895,14 @@ const __iconNode$t = [
36817
36895
  ["path", { d: "m5 9-3 3 3 3", key: "j64kie" }],
36818
36896
  ["path", { d: "m9 5 3-3 3 3", key: "l8vdw6" }]
36819
36897
  ];
36820
- const Move = createLucideIcon("move", __iconNode$t);
36898
+ const Move = createLucideIcon("move", __iconNode$x);
36821
36899
  /**
36822
36900
  * @license lucide-react v0.507.0 - ISC
36823
36901
  *
36824
36902
  * This source code is licensed under the ISC license.
36825
36903
  * See the LICENSE file in the root directory of this source tree.
36826
36904
  */
36827
- const __iconNode$s = [
36905
+ const __iconNode$w = [
36828
36906
  ["path", { d: "m14.622 17.897-10.68-2.913", key: "vj2p1u" }],
36829
36907
  [
36830
36908
  "path",
@@ -36841,38 +36919,38 @@ const __iconNode$s = [
36841
36919
  }
36842
36920
  ]
36843
36921
  ];
36844
- const Paintbrush = createLucideIcon("paintbrush", __iconNode$s);
36922
+ const Paintbrush = createLucideIcon("paintbrush", __iconNode$w);
36845
36923
  /**
36846
36924
  * @license lucide-react v0.507.0 - ISC
36847
36925
  *
36848
36926
  * This source code is licensed under the ISC license.
36849
36927
  * See the LICENSE file in the root directory of this source tree.
36850
36928
  */
36851
- const __iconNode$r = [
36929
+ const __iconNode$v = [
36852
36930
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
36853
36931
  ["path", { d: "M15 3v18", key: "14nvp0" }],
36854
36932
  ["path", { d: "m8 9 3 3-3 3", key: "12hl5m" }]
36855
36933
  ];
36856
- const PanelRightClose = createLucideIcon("panel-right-close", __iconNode$r);
36934
+ const PanelRightClose = createLucideIcon("panel-right-close", __iconNode$v);
36857
36935
  /**
36858
36936
  * @license lucide-react v0.507.0 - ISC
36859
36937
  *
36860
36938
  * This source code is licensed under the ISC license.
36861
36939
  * See the LICENSE file in the root directory of this source tree.
36862
36940
  */
36863
- const __iconNode$q = [
36941
+ const __iconNode$u = [
36864
36942
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
36865
36943
  ["path", { d: "M15 3v18", key: "14nvp0" }],
36866
36944
  ["path", { d: "m10 15-3-3 3-3", key: "1pgupc" }]
36867
36945
  ];
36868
- const PanelRightOpen = createLucideIcon("panel-right-open", __iconNode$q);
36946
+ const PanelRightOpen = createLucideIcon("panel-right-open", __iconNode$u);
36869
36947
  /**
36870
36948
  * @license lucide-react v0.507.0 - ISC
36871
36949
  *
36872
36950
  * This source code is licensed under the ISC license.
36873
36951
  * See the LICENSE file in the root directory of this source tree.
36874
36952
  */
36875
- const __iconNode$p = [
36953
+ const __iconNode$t = [
36876
36954
  ["path", { d: "M12 20h9", key: "t2du7b" }],
36877
36955
  [
36878
36956
  "path",
@@ -36883,14 +36961,14 @@ const __iconNode$p = [
36883
36961
  ],
36884
36962
  ["path", { d: "m15 5 3 3", key: "1w25hb" }]
36885
36963
  ];
36886
- const PencilLine = createLucideIcon("pencil-line", __iconNode$p);
36964
+ const PencilLine = createLucideIcon("pencil-line", __iconNode$t);
36887
36965
  /**
36888
36966
  * @license lucide-react v0.507.0 - ISC
36889
36967
  *
36890
36968
  * This source code is licensed under the ISC license.
36891
36969
  * See the LICENSE file in the root directory of this source tree.
36892
36970
  */
36893
- const __iconNode$o = [
36971
+ const __iconNode$s = [
36894
36972
  [
36895
36973
  "path",
36896
36974
  {
@@ -36899,14 +36977,14 @@ const __iconNode$o = [
36899
36977
  }
36900
36978
  ]
36901
36979
  ];
36902
- const Pen = createLucideIcon("pen", __iconNode$o);
36980
+ const Pen = createLucideIcon("pen", __iconNode$s);
36903
36981
  /**
36904
36982
  * @license lucide-react v0.507.0 - ISC
36905
36983
  *
36906
36984
  * This source code is licensed under the ISC license.
36907
36985
  * See the LICENSE file in the root directory of this source tree.
36908
36986
  */
36909
- const __iconNode$n = [
36987
+ const __iconNode$r = [
36910
36988
  [
36911
36989
  "path",
36912
36990
  {
@@ -36916,37 +36994,37 @@ const __iconNode$n = [
36916
36994
  ],
36917
36995
  ["path", { d: "m15 5 4 4", key: "1mk7zo" }]
36918
36996
  ];
36919
- const Pencil = createLucideIcon("pencil", __iconNode$n);
36997
+ const Pencil = createLucideIcon("pencil", __iconNode$r);
36920
36998
  /**
36921
36999
  * @license lucide-react v0.507.0 - ISC
36922
37000
  *
36923
37001
  * This source code is licensed under the ISC license.
36924
37002
  * See the LICENSE file in the root directory of this source tree.
36925
37003
  */
36926
- const __iconNode$m = [
37004
+ const __iconNode$q = [
36927
37005
  ["path", { d: "M5 12h14", key: "1ays0h" }],
36928
37006
  ["path", { d: "M12 5v14", key: "s699le" }]
36929
37007
  ];
36930
- const Plus$1 = createLucideIcon("plus", __iconNode$m);
37008
+ const Plus$1 = createLucideIcon("plus", __iconNode$q);
36931
37009
  /**
36932
37010
  * @license lucide-react v0.507.0 - ISC
36933
37011
  *
36934
37012
  * This source code is licensed under the ISC license.
36935
37013
  * See the LICENSE file in the root directory of this source tree.
36936
37014
  */
36937
- const __iconNode$l = [
37015
+ const __iconNode$p = [
36938
37016
  ["path", { d: "M2 3h20", key: "91anmk" }],
36939
37017
  ["path", { d: "M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3", key: "2k9sn8" }],
36940
37018
  ["path", { d: "m7 21 5-5 5 5", key: "bip4we" }]
36941
37019
  ];
36942
- const Presentation = createLucideIcon("presentation", __iconNode$l);
37020
+ const Presentation = createLucideIcon("presentation", __iconNode$p);
36943
37021
  /**
36944
37022
  * @license lucide-react v0.507.0 - ISC
36945
37023
  *
36946
37024
  * This source code is licensed under the ISC license.
36947
37025
  * See the LICENSE file in the root directory of this source tree.
36948
37026
  */
36949
- const __iconNode$k = [
37027
+ const __iconNode$o = [
36950
37028
  [
36951
37029
  "path",
36952
37030
  {
@@ -36955,25 +37033,25 @@ const __iconNode$k = [
36955
37033
  }
36956
37034
  ]
36957
37035
  ];
36958
- const Puzzle = createLucideIcon("puzzle", __iconNode$k);
37036
+ const Puzzle = createLucideIcon("puzzle", __iconNode$o);
36959
37037
  /**
36960
37038
  * @license lucide-react v0.507.0 - ISC
36961
37039
  *
36962
37040
  * This source code is licensed under the ISC license.
36963
37041
  * See the LICENSE file in the root directory of this source tree.
36964
37042
  */
36965
- const __iconNode$j = [
37043
+ const __iconNode$n = [
36966
37044
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
36967
37045
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }]
36968
37046
  ];
36969
- const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$j);
37047
+ const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$n);
36970
37048
  /**
36971
37049
  * @license lucide-react v0.507.0 - ISC
36972
37050
  *
36973
37051
  * This source code is licensed under the ISC license.
36974
37052
  * See the LICENSE file in the root directory of this source tree.
36975
37053
  */
36976
- const __iconNode$i = [
37054
+ const __iconNode$m = [
36977
37055
  [
36978
37056
  "path",
36979
37057
  {
@@ -36984,28 +37062,28 @@ const __iconNode$i = [
36984
37062
  ["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
36985
37063
  ["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
36986
37064
  ];
36987
- const Save = createLucideIcon("save", __iconNode$i);
37065
+ const Save = createLucideIcon("save", __iconNode$m);
36988
37066
  /**
36989
37067
  * @license lucide-react v0.507.0 - ISC
36990
37068
  *
36991
37069
  * This source code is licensed under the ISC license.
36992
37070
  * See the LICENSE file in the root directory of this source tree.
36993
37071
  */
36994
- const __iconNode$h = [
37072
+ const __iconNode$l = [
36995
37073
  ["path", { d: "m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "7g6ntu" }],
36996
37074
  ["path", { d: "m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z", key: "ijws7r" }],
36997
37075
  ["path", { d: "M7 21h10", key: "1b0cd5" }],
36998
37076
  ["path", { d: "M12 3v18", key: "108xh3" }],
36999
37077
  ["path", { d: "M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2", key: "3gwbw2" }]
37000
37078
  ];
37001
- const Scale = createLucideIcon("scale", __iconNode$h);
37079
+ const Scale = createLucideIcon("scale", __iconNode$l);
37002
37080
  /**
37003
37081
  * @license lucide-react v0.507.0 - ISC
37004
37082
  *
37005
37083
  * This source code is licensed under the ISC license.
37006
37084
  * See the LICENSE file in the root directory of this source tree.
37007
37085
  */
37008
- const __iconNode$g = [
37086
+ const __iconNode$k = [
37009
37087
  ["path", { d: "M15 12h-5", key: "r7krc0" }],
37010
37088
  ["path", { d: "M15 8h-5", key: "1khuty" }],
37011
37089
  ["path", { d: "M19 17V5a2 2 0 0 0-2-2H4", key: "zz82l3" }],
@@ -37017,25 +37095,25 @@ const __iconNode$g = [
37017
37095
  }
37018
37096
  ]
37019
37097
  ];
37020
- const ScrollText = createLucideIcon("scroll-text", __iconNode$g);
37098
+ const ScrollText = createLucideIcon("scroll-text", __iconNode$k);
37021
37099
  /**
37022
37100
  * @license lucide-react v0.507.0 - ISC
37023
37101
  *
37024
37102
  * This source code is licensed under the ISC license.
37025
37103
  * See the LICENSE file in the root directory of this source tree.
37026
37104
  */
37027
- const __iconNode$f = [
37105
+ const __iconNode$j = [
37028
37106
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
37029
37107
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
37030
37108
  ];
37031
- const Search = createLucideIcon("search", __iconNode$f);
37109
+ const Search = createLucideIcon("search", __iconNode$j);
37032
37110
  /**
37033
37111
  * @license lucide-react v0.507.0 - ISC
37034
37112
  *
37035
37113
  * This source code is licensed under the ISC license.
37036
37114
  * See the LICENSE file in the root directory of this source tree.
37037
37115
  */
37038
- const __iconNode$e = [
37116
+ const __iconNode$i = [
37039
37117
  [
37040
37118
  "path",
37041
37119
  {
@@ -37045,28 +37123,28 @@ const __iconNode$e = [
37045
37123
  ],
37046
37124
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
37047
37125
  ];
37048
- const Settings$1 = createLucideIcon("settings", __iconNode$e);
37126
+ const Settings$1 = createLucideIcon("settings", __iconNode$i);
37049
37127
  /**
37050
37128
  * @license lucide-react v0.507.0 - ISC
37051
37129
  *
37052
37130
  * This source code is licensed under the ISC license.
37053
37131
  * See the LICENSE file in the root directory of this source tree.
37054
37132
  */
37055
- const __iconNode$d = [
37133
+ const __iconNode$h = [
37056
37134
  ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }],
37057
37135
  ["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }],
37058
37136
  ["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }],
37059
37137
  ["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }],
37060
37138
  ["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }]
37061
37139
  ];
37062
- const Share2 = createLucideIcon("share-2", __iconNode$d);
37140
+ const Share2 = createLucideIcon("share-2", __iconNode$h);
37063
37141
  /**
37064
37142
  * @license lucide-react v0.507.0 - ISC
37065
37143
  *
37066
37144
  * This source code is licensed under the ISC license.
37067
37145
  * See the LICENSE file in the root directory of this source tree.
37068
37146
  */
37069
- const __iconNode$c = [
37147
+ const __iconNode$g = [
37070
37148
  [
37071
37149
  "path",
37072
37150
  {
@@ -37075,14 +37153,14 @@ const __iconNode$c = [
37075
37153
  }
37076
37154
  ]
37077
37155
  ];
37078
- const Shield = createLucideIcon("shield", __iconNode$c);
37156
+ const Shield = createLucideIcon("shield", __iconNode$g);
37079
37157
  /**
37080
37158
  * @license lucide-react v0.507.0 - ISC
37081
37159
  *
37082
37160
  * This source code is licensed under the ISC license.
37083
37161
  * See the LICENSE file in the root directory of this source tree.
37084
37162
  */
37085
- const __iconNode$b = [
37163
+ const __iconNode$f = [
37086
37164
  ["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }],
37087
37165
  ["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }],
37088
37166
  [
@@ -37093,14 +37171,14 @@ const __iconNode$b = [
37093
37171
  }
37094
37172
  ]
37095
37173
  ];
37096
- const ShoppingCart = createLucideIcon("shopping-cart", __iconNode$b);
37174
+ const ShoppingCart = createLucideIcon("shopping-cart", __iconNode$f);
37097
37175
  /**
37098
37176
  * @license lucide-react v0.507.0 - ISC
37099
37177
  *
37100
37178
  * This source code is licensed under the ISC license.
37101
37179
  * See the LICENSE file in the root directory of this source tree.
37102
37180
  */
37103
- const __iconNode$a = [
37181
+ const __iconNode$e = [
37104
37182
  ["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }],
37105
37183
  [
37106
37184
  "path",
@@ -37110,26 +37188,36 @@ const __iconNode$a = [
37110
37188
  }
37111
37189
  ]
37112
37190
  ];
37113
- const SquarePen = createLucideIcon("square-pen", __iconNode$a);
37191
+ const SquarePen = createLucideIcon("square-pen", __iconNode$e);
37114
37192
  /**
37115
37193
  * @license lucide-react v0.507.0 - ISC
37116
37194
  *
37117
37195
  * This source code is licensed under the ISC license.
37118
37196
  * See the LICENSE file in the root directory of this source tree.
37119
37197
  */
37120
- const __iconNode$9 = [
37198
+ const __iconNode$d = [
37121
37199
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
37122
37200
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
37123
37201
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
37124
37202
  ];
37125
- const SquareX = createLucideIcon("square-x", __iconNode$9);
37203
+ const SquareX = createLucideIcon("square-x", __iconNode$d);
37126
37204
  /**
37127
37205
  * @license lucide-react v0.507.0 - ISC
37128
37206
  *
37129
37207
  * This source code is licensed under the ISC license.
37130
37208
  * See the LICENSE file in the root directory of this source tree.
37131
37209
  */
37132
- const __iconNode$8 = [
37210
+ const __iconNode$c = [
37211
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
37212
+ ];
37213
+ const Square = createLucideIcon("square", __iconNode$c);
37214
+ /**
37215
+ * @license lucide-react v0.507.0 - ISC
37216
+ *
37217
+ * This source code is licensed under the ISC license.
37218
+ * See the LICENSE file in the root directory of this source tree.
37219
+ */
37220
+ const __iconNode$b = [
37133
37221
  [
37134
37222
  "path",
37135
37223
  {
@@ -37138,14 +37226,14 @@ const __iconNode$8 = [
37138
37226
  }
37139
37227
  ]
37140
37228
  ];
37141
- const Star = createLucideIcon("star", __iconNode$8);
37229
+ const Star = createLucideIcon("star", __iconNode$b);
37142
37230
  /**
37143
37231
  * @license lucide-react v0.507.0 - ISC
37144
37232
  *
37145
37233
  * This source code is licensed under the ISC license.
37146
37234
  * See the LICENSE file in the root directory of this source tree.
37147
37235
  */
37148
- const __iconNode$7 = [
37236
+ const __iconNode$a = [
37149
37237
  ["path", { d: "m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7", key: "ztvudi" }],
37150
37238
  ["path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8", key: "1b2hhj" }],
37151
37239
  ["path", { d: "M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4", key: "2ebpfo" }],
@@ -37158,14 +37246,14 @@ const __iconNode$7 = [
37158
37246
  }
37159
37247
  ]
37160
37248
  ];
37161
- const Store = createLucideIcon("store", __iconNode$7);
37249
+ const Store = createLucideIcon("store", __iconNode$a);
37162
37250
  /**
37163
37251
  * @license lucide-react v0.507.0 - ISC
37164
37252
  *
37165
37253
  * This source code is licensed under the ISC license.
37166
37254
  * See the LICENSE file in the root directory of this source tree.
37167
37255
  */
37168
- const __iconNode$6 = [
37256
+ const __iconNode$9 = [
37169
37257
  [
37170
37258
  "path",
37171
37259
  {
@@ -37175,45 +37263,98 @@ const __iconNode$6 = [
37175
37263
  ],
37176
37264
  ["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }]
37177
37265
  ];
37178
- const Tag$1 = createLucideIcon("tag", __iconNode$6);
37266
+ const Tag$1 = createLucideIcon("tag", __iconNode$9);
37179
37267
  /**
37180
37268
  * @license lucide-react v0.507.0 - ISC
37181
37269
  *
37182
37270
  * This source code is licensed under the ISC license.
37183
37271
  * See the LICENSE file in the root directory of this source tree.
37184
37272
  */
37185
- const __iconNode$5 = [
37273
+ const __iconNode$8 = [
37186
37274
  ["path", { d: "M3 6h18", key: "d0wm0j" }],
37187
37275
  ["path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", key: "4alrt4" }],
37188
37276
  ["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }],
37189
37277
  ["line", { x1: "10", x2: "10", y1: "11", y2: "17", key: "1uufr5" }],
37190
37278
  ["line", { x1: "14", x2: "14", y1: "11", y2: "17", key: "xtxkd" }]
37191
37279
  ];
37192
- const Trash2 = createLucideIcon("trash-2", __iconNode$5);
37280
+ const Trash2 = createLucideIcon("trash-2", __iconNode$8);
37193
37281
  /**
37194
37282
  * @license lucide-react v0.507.0 - ISC
37195
37283
  *
37196
37284
  * This source code is licensed under the ISC license.
37197
37285
  * See the LICENSE file in the root directory of this source tree.
37198
37286
  */
37199
- const __iconNode$4 = [
37287
+ const __iconNode$7 = [
37200
37288
  ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
37201
37289
  ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
37202
37290
  ];
37203
- const User = createLucideIcon("user", __iconNode$4);
37291
+ const User = createLucideIcon("user", __iconNode$7);
37204
37292
  /**
37205
37293
  * @license lucide-react v0.507.0 - ISC
37206
37294
  *
37207
37295
  * This source code is licensed under the ISC license.
37208
37296
  * See the LICENSE file in the root directory of this source tree.
37209
37297
  */
37210
- const __iconNode$3 = [
37298
+ const __iconNode$6 = [
37211
37299
  ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
37212
37300
  ["path", { d: "M16 3.128a4 4 0 0 1 0 7.744", key: "16gr8j" }],
37213
37301
  ["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
37214
37302
  ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
37215
37303
  ];
37216
- const Users = createLucideIcon("users", __iconNode$3);
37304
+ const Users = createLucideIcon("users", __iconNode$6);
37305
+ /**
37306
+ * @license lucide-react v0.507.0 - ISC
37307
+ *
37308
+ * This source code is licensed under the ISC license.
37309
+ * See the LICENSE file in the root directory of this source tree.
37310
+ */
37311
+ const __iconNode$5 = [
37312
+ [
37313
+ "path",
37314
+ {
37315
+ d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
37316
+ key: "uqj9uw"
37317
+ }
37318
+ ],
37319
+ ["path", { d: "M16 9a5 5 0 0 1 0 6", key: "1q6k2b" }]
37320
+ ];
37321
+ const Volume1 = createLucideIcon("volume-1", __iconNode$5);
37322
+ /**
37323
+ * @license lucide-react v0.507.0 - ISC
37324
+ *
37325
+ * This source code is licensed under the ISC license.
37326
+ * See the LICENSE file in the root directory of this source tree.
37327
+ */
37328
+ const __iconNode$4 = [
37329
+ [
37330
+ "path",
37331
+ {
37332
+ d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
37333
+ key: "uqj9uw"
37334
+ }
37335
+ ],
37336
+ ["path", { d: "M16 9a5 5 0 0 1 0 6", key: "1q6k2b" }],
37337
+ ["path", { d: "M19.364 18.364a9 9 0 0 0 0-12.728", key: "ijwkga" }]
37338
+ ];
37339
+ const Volume2 = createLucideIcon("volume-2", __iconNode$4);
37340
+ /**
37341
+ * @license lucide-react v0.507.0 - ISC
37342
+ *
37343
+ * This source code is licensed under the ISC license.
37344
+ * See the LICENSE file in the root directory of this source tree.
37345
+ */
37346
+ const __iconNode$3 = [
37347
+ [
37348
+ "path",
37349
+ {
37350
+ d: "M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",
37351
+ key: "uqj9uw"
37352
+ }
37353
+ ],
37354
+ ["line", { x1: "22", x2: "16", y1: "9", y2: "15", key: "1ewh16" }],
37355
+ ["line", { x1: "16", x2: "22", y1: "9", y2: "15", key: "5ykzw1" }]
37356
+ ];
37357
+ const VolumeX = createLucideIcon("volume-x", __iconNode$3);
37217
37358
  /**
37218
37359
  * @license lucide-react v0.507.0 - ISC
37219
37360
  *
@@ -37387,6 +37528,22 @@ const ConfirmationModal = ({
37387
37528
  onConfirm,
37388
37529
  onCancel
37389
37530
  }) => {
37531
+ reactExports.useEffect(() => {
37532
+ const handleKeyDown = (event) => {
37533
+ if (!open2) {
37534
+ return;
37535
+ }
37536
+ if (event.key === "Enter") {
37537
+ onConfirm();
37538
+ } else if (event.key === "Escape") {
37539
+ onCancel();
37540
+ }
37541
+ };
37542
+ document.addEventListener("keydown", handleKeyDown);
37543
+ return () => {
37544
+ document.removeEventListener("keydown", handleKeyDown);
37545
+ };
37546
+ }, [open2, onConfirm, onCancel]);
37390
37547
  const dialogTitle = isDangerous ? /* @__PURE__ */ jsxRuntimeExports.jsxs(TitleContainer, { children: [
37391
37548
  /* @__PURE__ */ jsxRuntimeExports.jsx(WarningIcon, { icon: faExclamationTriangle }),
37392
37549
  /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", component: "span", color: "error", children: title })
@@ -38424,8 +38581,8 @@ const useAgentSystemPrompt = (agentId) => {
38424
38581
  queryKey: agentSystemPromptQueryKey(agentId),
38425
38582
  queryFn: async () => {
38426
38583
  try {
38427
- const client = createLocalOperatorClient(apiConfig.baseUrl);
38428
- const response = await client.agents.getAgentSystemPrompt(agentId);
38584
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
38585
+ const response = await client2.agents.getAgentSystemPrompt(agentId);
38429
38586
  if (response.status >= 400) {
38430
38587
  throw new Error(
38431
38588
  response.message || "Failed to fetch agent system prompt"
@@ -38446,11 +38603,11 @@ const useAgentSystemPrompt = (agentId) => {
38446
38603
  };
38447
38604
  const useUpdateAgentSystemPrompt = (agentId) => {
38448
38605
  const queryClient2 = useQueryClient();
38449
- const client = createLocalOperatorClient(apiConfig.baseUrl);
38606
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
38450
38607
  return useMutation({
38451
38608
  mutationFn: async (systemPrompt) => {
38452
38609
  try {
38453
- const response = await client.agents.updateAgentSystemPrompt(
38610
+ const response = await client2.agents.updateAgentSystemPrompt(
38454
38611
  agentId,
38455
38612
  systemPrompt
38456
38613
  );
@@ -38565,8 +38722,8 @@ const useCredentials = () => {
38565
38722
  queryKey: credentialsQueryKey,
38566
38723
  queryFn: async () => {
38567
38724
  try {
38568
- const client = createLocalOperatorClient(apiConfig.baseUrl);
38569
- const response = await client.credentials.listCredentials();
38725
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
38726
+ const response = await client2.credentials.listCredentials();
38570
38727
  if (response.status >= 400) {
38571
38728
  throw new Error(response.message || "Failed to fetch credentials");
38572
38729
  }
@@ -38830,8 +38987,8 @@ const useClearAgentConversation = () => {
38830
38987
  );
38831
38988
  return useMutation({
38832
38989
  mutationFn: async ({ agentId }) => {
38833
- const client = createLocalOperatorClient(apiConfig.baseUrl);
38834
- return client.agents.clearAgentConversation(agentId);
38990
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
38991
+ return client2.agents.clearAgentConversation(agentId);
38835
38992
  },
38836
38993
  onSuccess: (_2, variables) => {
38837
38994
  queryClient2.invalidateQueries({
@@ -38934,8 +39091,8 @@ const useConversationMessages = (conversationId, pageSize2 = 20) => {
38934
39091
  };
38935
39092
  }
38936
39093
  const page = pageParam;
38937
- const client = createLocalOperatorClient(apiConfig.baseUrl);
38938
- const response = await client.agents.getAgentExecutionHistory(
39094
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
39095
+ const response = await client2.agents.getAgentExecutionHistory(
38939
39096
  conversationId,
38940
39097
  page,
38941
39098
  pageSize2
@@ -39125,10 +39282,10 @@ const useModelsStore = create$3()(
39125
39282
  }
39126
39283
  set2({ isLoading: true, error: null });
39127
39284
  try {
39128
- const client = createLocalOperatorClient(baseUrl);
39129
- const providersResponse = await client.models.listProviders();
39285
+ const client2 = createLocalOperatorClient(baseUrl);
39286
+ const providersResponse = await client2.models.listProviders();
39130
39287
  const providers = providersResponse.result?.providers || [];
39131
- const modelsResponse = await client.models.listModels(
39288
+ const modelsResponse = await client2.models.listModels(
39132
39289
  "",
39133
39290
  "recommended",
39134
39291
  "descending"
@@ -39310,7 +39467,7 @@ const useJobPolling = ({
39310
39467
  const queryClient2 = useQueryClient();
39311
39468
  const { getMessages, setMessages } = useChatStore();
39312
39469
  const lastProcessedJobDataRef = reactExports.useRef(null);
39313
- const client = createLocalOperatorClient(apiConfig.baseUrl);
39470
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
39314
39471
  const previousConversationIdRef = reactExports.useRef(conversationId);
39315
39472
  const { shouldEnableQuery, getConnectivityError } = useConnectivityGate();
39316
39473
  const checkForActiveJobs = reactExports.useCallback(
@@ -39327,8 +39484,8 @@ const useJobPolling = ({
39327
39484
  return false;
39328
39485
  }
39329
39486
  try {
39330
- const pendingResponse = await client.jobs.listJobs(agentId, "pending");
39331
- const processingResponse = await client.jobs.listJobs(
39487
+ const pendingResponse = await client2.jobs.listJobs(agentId, "pending");
39488
+ const processingResponse = await client2.jobs.listJobs(
39332
39489
  agentId,
39333
39490
  "processing"
39334
39491
  );
@@ -39354,7 +39511,7 @@ const useJobPolling = ({
39354
39511
  }
39355
39512
  },
39356
39513
  [
39357
- client.jobs,
39514
+ client2.jobs,
39358
39515
  currentJobId,
39359
39516
  shouldEnableQuery,
39360
39517
  getConnectivityError,
@@ -39378,11 +39535,11 @@ const useJobPolling = ({
39378
39535
  return;
39379
39536
  }
39380
39537
  try {
39381
- const pendingResponse = await client.jobs.listJobs(
39538
+ const pendingResponse = await client2.jobs.listJobs(
39382
39539
  conversationId,
39383
39540
  "pending"
39384
39541
  );
39385
- const processingResponse = await client.jobs.listJobs(
39542
+ const processingResponse = await client2.jobs.listJobs(
39386
39543
  conversationId,
39387
39544
  "processing"
39388
39545
  );
@@ -39408,7 +39565,7 @@ const useJobPolling = ({
39408
39565
  previousConversationIdRef.current = conversationId;
39409
39566
  }, [
39410
39567
  conversationId,
39411
- client.jobs,
39568
+ client2.jobs,
39412
39569
  shouldEnableQuery,
39413
39570
  getConnectivityError,
39414
39571
  setCurrentJobId
@@ -39427,8 +39584,8 @@ const useJobPolling = ({
39427
39584
  return false;
39428
39585
  }
39429
39586
  try {
39430
- const client2 = createLocalOperatorClient(apiConfig.baseUrl);
39431
- const response = await client2.agents.getAgentExecutionHistory(
39587
+ const client22 = createLocalOperatorClient(apiConfig.baseUrl);
39588
+ const response = await client22.agents.getAgentExecutionHistory(
39432
39589
  agentId,
39433
39590
  1,
39434
39591
  // First page
@@ -39513,9 +39670,9 @@ const useJobPolling = ({
39513
39670
  queryKey: ["job", currentJobId],
39514
39671
  queryFn: async () => {
39515
39672
  if (!currentJobId) return null;
39516
- const client2 = createLocalOperatorClient(apiConfig.baseUrl);
39673
+ const client22 = createLocalOperatorClient(apiConfig.baseUrl);
39517
39674
  try {
39518
- const response = await client2.jobs.getJobStatus(currentJobId);
39675
+ const response = await client22.jobs.getJobStatus(currentJobId);
39519
39676
  return response.result;
39520
39677
  } catch (err) {
39521
39678
  const errorObj = err;
@@ -41009,11 +41166,11 @@ const useRadientUserQuery = () => {
41009
41166
  };
41010
41167
  const useUpdateConfig = () => {
41011
41168
  const queryClient2 = useQueryClient();
41012
- const client = createLocalOperatorClient(apiConfig.baseUrl);
41169
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
41013
41170
  return useMutation({
41014
41171
  mutationFn: async (update) => {
41015
41172
  try {
41016
- const response = await client.config.updateConfig(update);
41173
+ const response = await client2.config.updateConfig(update);
41017
41174
  if (response.status >= 400) {
41018
41175
  throw new Error(response.message || "Failed to update configuration");
41019
41176
  }
@@ -41817,13 +41974,13 @@ const useStreamingMessage = ({
41817
41974
  }
41818
41975
  try {
41819
41976
  setIsRefetching(true);
41820
- const client = createLocalOperatorClient(baseUrl);
41977
+ const client2 = createLocalOperatorClient(baseUrl);
41821
41978
  const registryEntry = globalConnectionRegistry.get(messageId);
41822
41979
  const agentId = registryEntry?.conversationId || conversationId;
41823
41980
  if (!agentId) {
41824
41981
  return;
41825
41982
  }
41826
- const response = await client.agents.getAgentExecutionHistory(
41983
+ const response = await client2.agents.getAgentExecutionHistory(
41827
41984
  agentId,
41828
41985
  1,
41829
41986
  20
@@ -41898,11 +42055,11 @@ const useStreamingMessage = ({
41898
42055
  const doRefetch = async () => {
41899
42056
  try {
41900
42057
  setIsRefetching(true);
41901
- const client = createLocalOperatorClient(baseUrl);
42058
+ const client2 = createLocalOperatorClient(baseUrl);
41902
42059
  const entry = globalConnectionRegistry.get(messageId);
41903
42060
  const agentId = entry?.conversationId || conversationId;
41904
42061
  if (!agentId) return;
41905
- const response = await client.agents.getAgentExecutionHistory(
42062
+ const response = await client2.agents.getAgentExecutionHistory(
41906
42063
  agentId,
41907
42064
  1,
41908
42065
  20
@@ -42212,8 +42369,8 @@ const useSystemPrompt = () => {
42212
42369
  queryKey: systemPromptQueryKey,
42213
42370
  queryFn: async () => {
42214
42371
  try {
42215
- const client = createLocalOperatorClient(apiConfig.baseUrl);
42216
- const response = await client.config.getSystemPrompt();
42372
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
42373
+ const response = await client2.config.getSystemPrompt();
42217
42374
  if (response === null) {
42218
42375
  return null;
42219
42376
  }
@@ -42235,14 +42392,14 @@ const useSystemPrompt = () => {
42235
42392
  };
42236
42393
  const useUpdateAgent = () => {
42237
42394
  const queryClient2 = useQueryClient();
42238
- const client = createLocalOperatorClient(apiConfig.baseUrl);
42395
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
42239
42396
  return useMutation({
42240
42397
  mutationFn: async ({
42241
42398
  agentId,
42242
42399
  update
42243
42400
  }) => {
42244
42401
  try {
42245
- const response = await client.agents.updateAgent(agentId, update);
42402
+ const response = await client2.agents.updateAgent(agentId, update);
42246
42403
  if (response.status >= 400) {
42247
42404
  throw new Error(
42248
42405
  response.message || `Failed to update agent ${agentId}`
@@ -42285,11 +42442,11 @@ const useUpdateAgent = () => {
42285
42442
  };
42286
42443
  const useUpdateCredential = () => {
42287
42444
  const queryClient2 = useQueryClient();
42288
- const client = createLocalOperatorClient(apiConfig.baseUrl);
42445
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
42289
42446
  return useMutation({
42290
42447
  mutationFn: async (credentialUpdate) => {
42291
42448
  try {
42292
- const response = await client.credentials.updateCredential(credentialUpdate);
42449
+ const response = await client2.credentials.updateCredential(credentialUpdate);
42293
42450
  if (response.status >= 400) {
42294
42451
  throw new Error(response.message || "Failed to update credential");
42295
42452
  }
@@ -42333,11 +42490,11 @@ const useUpdateCredential = () => {
42333
42490
  };
42334
42491
  const useUpdateSystemPrompt = () => {
42335
42492
  const queryClient2 = useQueryClient();
42336
- const client = createLocalOperatorClient(apiConfig.baseUrl);
42493
+ const client2 = createLocalOperatorClient(apiConfig.baseUrl);
42337
42494
  return useMutation({
42338
42495
  mutationFn: async (update) => {
42339
42496
  try {
42340
- const response = await client.config.updateSystemPrompt(update);
42497
+ const response = await client2.config.updateSystemPrompt(update);
42341
42498
  if (response.status >= 400) {
42342
42499
  throw new Error(response.message || "Failed to update system prompt");
42343
42500
  }
@@ -87055,7 +87212,7 @@ const languages = [
87055
87212
  name: "Go",
87056
87213
  extensions: ["go"],
87057
87214
  load() {
87058
- return __vitePreload(() => import("./index-JQ7XEBgh.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m2) => m2.go());
87215
+ return __vitePreload(() => import("./index-Br4QkH4P.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m2) => m2.go());
87059
87216
  }
87060
87217
  }),
87061
87218
  /* @__PURE__ */ LanguageDescription.of({
@@ -87232,7 +87389,7 @@ const languages = [
87232
87389
  alias: ["yml"],
87233
87390
  extensions: ["yaml", "yml"],
87234
87391
  load() {
87235
- return __vitePreload(() => import("./index-B1kgBLxO.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m2) => m2.yaml());
87392
+ return __vitePreload(() => import("./index-B2mf6FAB.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m2) => m2.yaml());
87236
87393
  }
87237
87394
  }),
87238
87395
  // Legacy modes ported from CodeMirror 5
@@ -126616,13 +126773,14 @@ const CodeEditor = ({ document: document2 }) => {
126616
126773
  const [languageExtensions, setLanguageExtensions] = reactExports.useState([]);
126617
126774
  const theme2 = useTheme$2();
126618
126775
  reactExports.useEffect(() => {
126619
- if (document2.id !== value?.id) {
126776
+ if (document2.id !== value?.id || document2.content !== value?.content) {
126620
126777
  setValue(document2);
126621
126778
  const newLangExtension = loadLanguageExtensions(document2.title);
126622
- if (!newLangExtension) return;
126623
- setLanguageExtensions([newLangExtension]);
126779
+ if (newLangExtension) {
126780
+ setLanguageExtensions([newLangExtension]);
126781
+ }
126624
126782
  }
126625
- }, [document2, value?.id]);
126783
+ }, [document2, value?.id, value?.content]);
126626
126784
  const codeEditorTheme = theme2.palette.mode === "light" ? basicLight : basicDark;
126627
126785
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
126628
126786
  Box,
@@ -126677,7 +126835,8 @@ const HtmlPreview = ({ document: document2 }) => {
126677
126835
  src: htmlUrl,
126678
126836
  title: `HTML Preview: ${document2.title}`,
126679
126837
  sandbox: "allow-scripts allow-same-origin allow-forms"
126680
- }
126838
+ },
126839
+ document2.content
126681
126840
  ) });
126682
126841
  };
126683
126842
  const search = /[#.]/g;
@@ -169671,7 +169830,7 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
169671
169830
  registerLayoutLoaders([
169672
169831
  {
169673
169832
  name: "dagre",
169674
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-OKDRZEBW-BsxbY4uX.js"), true ? __vite__mapDeps([6,7,8,9,10,11,1,2]) : void 0, import.meta.url), "loader")
169833
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-OKDRZEBW-ibCOzp8h.js"), true ? __vite__mapDeps([6,7,8,9,10,11,1,2]) : void 0, import.meta.url), "loader")
169675
169834
  }
169676
169835
  ]);
169677
169836
  }, "registerDefaultLayoutLoaders");
@@ -170261,7 +170420,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
170261
170420
  }, "detector");
170262
170421
  var loader = /* @__PURE__ */ __name(async () => {
170263
170422
  const { diagram: diagram2 } = await __vitePreload(async () => {
170264
- const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-C36lbIjS.js");
170423
+ const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-Dx-AuScK.js");
170265
170424
  return { diagram: diagram22 };
170266
170425
  }, true ? __vite__mapDeps([12,13,1,2]) : void 0, import.meta.url);
170267
170426
  return { id, diagram: diagram2 };
@@ -170281,7 +170440,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
170281
170440
  }, "detector");
170282
170441
  var loader2 = /* @__PURE__ */ __name(async () => {
170283
170442
  const { diagram: diagram2 } = await __vitePreload(async () => {
170284
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-BTDwdXoq.js");
170443
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DygsQ6re.js");
170285
170444
  return { diagram: diagram22 };
170286
170445
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
170287
170446
  return { id: id2, diagram: diagram2 };
@@ -170307,7 +170466,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
170307
170466
  }, "detector");
170308
170467
  var loader3 = /* @__PURE__ */ __name(async () => {
170309
170468
  const { diagram: diagram2 } = await __vitePreload(async () => {
170310
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-BTDwdXoq.js");
170469
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DygsQ6re.js");
170311
170470
  return { diagram: diagram22 };
170312
170471
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
170313
170472
  return { id: id3, diagram: diagram2 };
@@ -170324,7 +170483,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
170324
170483
  }, "detector");
170325
170484
  var loader4 = /* @__PURE__ */ __name(async () => {
170326
170485
  const { diagram: diagram2 } = await __vitePreload(async () => {
170327
- const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-Ccs7n14X.js");
170486
+ const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-CBixsMqH.js");
170328
170487
  return { diagram: diagram22 };
170329
170488
  }, true ? __vite__mapDeps([17,15,16,1,2]) : void 0, import.meta.url);
170330
170489
  return { id: id4, diagram: diagram2 };
@@ -170341,7 +170500,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
170341
170500
  }, "detector");
170342
170501
  var loader5 = /* @__PURE__ */ __name(async () => {
170343
170502
  const { diagram: diagram2 } = await __vitePreload(async () => {
170344
- const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-BrsAP7d3.js");
170503
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-BOlHobgq.js");
170345
170504
  return { diagram: diagram22 };
170346
170505
  }, true ? __vite__mapDeps([18,19,20,21,8,10,11,1,2]) : void 0, import.meta.url);
170347
170506
  return { id: id5, diagram: diagram2 };
@@ -170358,7 +170517,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
170358
170517
  }, "detector");
170359
170518
  var loader6 = /* @__PURE__ */ __name(async () => {
170360
170519
  const { diagram: diagram2 } = await __vitePreload(async () => {
170361
- const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-BsHcmVQL.js");
170520
+ const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-DKBtpWjh.js");
170362
170521
  return { diagram: diagram22 };
170363
170522
  }, true ? __vite__mapDeps([22,1,2]) : void 0, import.meta.url);
170364
170523
  return { id: id6, diagram: diagram2 };
@@ -170375,7 +170534,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
170375
170534
  }, "detector");
170376
170535
  var loader7 = /* @__PURE__ */ __name(async () => {
170377
170536
  const { diagram: diagram2 } = await __vitePreload(async () => {
170378
- const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-CeBCRQ-r.js");
170537
+ const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-D9LWZKUq.js");
170379
170538
  return { diagram: diagram22 };
170380
170539
  }, true ? __vite__mapDeps([23,21,8,10,11,1,2]) : void 0, import.meta.url);
170381
170540
  return { id: id7, diagram: diagram2 };
@@ -170391,7 +170550,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
170391
170550
  }, "detector");
170392
170551
  var loader8 = /* @__PURE__ */ __name(async () => {
170393
170552
  const { diagram: diagram2 } = await __vitePreload(async () => {
170394
- const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-CwHy1pe3.js");
170553
+ const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-QgaDuIyL.js");
170395
170554
  return { diagram: diagram22 };
170396
170555
  }, true ? __vite__mapDeps([24,19,21,8,10,11,25,1,2]) : void 0, import.meta.url);
170397
170556
  return { id: id8, diagram: diagram2 };
@@ -170407,7 +170566,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
170407
170566
  }, "detector");
170408
170567
  var loader9 = /* @__PURE__ */ __name(async () => {
170409
170568
  const { diagram: diagram2 } = await __vitePreload(async () => {
170410
- const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-DteRiyWH.js");
170569
+ const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-D4VYcpj4.js");
170411
170570
  return { diagram: diagram22 };
170412
170571
  }, true ? __vite__mapDeps([26,1,2]) : void 0, import.meta.url);
170413
170572
  return { id: id9, diagram: diagram2 };
@@ -170424,7 +170583,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
170424
170583
  }, "detector");
170425
170584
  var loader10 = /* @__PURE__ */ __name(async () => {
170426
170585
  const { diagram: diagram2 } = await __vitePreload(async () => {
170427
- const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-DjE9t7Qo.js");
170586
+ const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-C3unJ9Bl.js");
170428
170587
  return { diagram: diagram22 };
170429
170588
  }, true ? __vite__mapDeps([27,1,2]) : void 0, import.meta.url);
170430
170589
  return { id: id10, diagram: diagram2 };
@@ -170441,7 +170600,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
170441
170600
  }, "detector");
170442
170601
  var loader11 = /* @__PURE__ */ __name(async () => {
170443
170602
  const { diagram: diagram2 } = await __vitePreload(async () => {
170444
- const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-Cjtft40u.js");
170603
+ const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-BCnRxDQW.js");
170445
170604
  return { diagram: diagram22 };
170446
170605
  }, true ? __vite__mapDeps([28,15,1,2]) : void 0, import.meta.url);
170447
170606
  return { id: id11, diagram: diagram2 };
@@ -170458,7 +170617,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
170458
170617
  }, "detector");
170459
170618
  var loader12 = /* @__PURE__ */ __name(async () => {
170460
170619
  const { diagram: diagram2 } = await __vitePreload(async () => {
170461
- const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-CMUs0WWj.js");
170620
+ const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-Bc6U0Afr.js");
170462
170621
  return { diagram: diagram22 };
170463
170622
  }, true ? __vite__mapDeps([29,13,20,1,2]) : void 0, import.meta.url);
170464
170623
  return { id: id12, diagram: diagram2 };
@@ -170478,7 +170637,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
170478
170637
  }, "detector");
170479
170638
  var loader13 = /* @__PURE__ */ __name(async () => {
170480
170639
  const { diagram: diagram2 } = await __vitePreload(async () => {
170481
- const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-vtFcXgAr.js");
170640
+ const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-Cnd4tPRq.js");
170482
170641
  return { diagram: diagram22 };
170483
170642
  }, true ? __vite__mapDeps([30,31,15,1,2]) : void 0, import.meta.url);
170484
170643
  return { id: id13, diagram: diagram2 };
@@ -170498,7 +170657,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
170498
170657
  }, "detector");
170499
170658
  var loader14 = /* @__PURE__ */ __name(async () => {
170500
170659
  const { diagram: diagram2 } = await __vitePreload(async () => {
170501
- const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-vtFcXgAr.js");
170660
+ const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-Cnd4tPRq.js");
170502
170661
  return { diagram: diagram22 };
170503
170662
  }, true ? __vite__mapDeps([32,31,15,1,2]) : void 0, import.meta.url);
170504
170663
  return { id: id14, diagram: diagram2 };
@@ -170518,7 +170677,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
170518
170677
  }, "detector");
170519
170678
  var loader15 = /* @__PURE__ */ __name(async () => {
170520
170679
  const { diagram: diagram2 } = await __vitePreload(async () => {
170521
- const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-JkRRAJkE.js");
170680
+ const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-DXpv_6Ah.js");
170522
170681
  return { diagram: diagram22 };
170523
170682
  }, true ? __vite__mapDeps([33,34,15,7,8,9,10,1,2]) : void 0, import.meta.url);
170524
170683
  return { id: id15, diagram: diagram2 };
@@ -170541,7 +170700,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
170541
170700
  }, "detector");
170542
170701
  var loader16 = /* @__PURE__ */ __name(async () => {
170543
170702
  const { diagram: diagram2 } = await __vitePreload(async () => {
170544
- const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-DhB-86w-.js");
170703
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-DAAuA7TF.js");
170545
170704
  return { diagram: diagram22 };
170546
170705
  }, true ? __vite__mapDeps([35,34,15,1,2]) : void 0, import.meta.url);
170547
170706
  return { id: id16, diagram: diagram2 };
@@ -170558,7 +170717,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
170558
170717
  }, "detector");
170559
170718
  var loader17 = /* @__PURE__ */ __name(async () => {
170560
170719
  const { diagram: diagram2 } = await __vitePreload(async () => {
170561
- const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-CFEflF1X.js");
170720
+ const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-CIFZcgcz.js");
170562
170721
  return { diagram: diagram22 };
170563
170722
  }, true ? __vite__mapDeps([36,13,25,1,2]) : void 0, import.meta.url);
170564
170723
  return { id: id17, diagram: diagram2 };
@@ -170628,7 +170787,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
170628
170787
  }, "detector");
170629
170788
  var loader18 = /* @__PURE__ */ __name(async () => {
170630
170789
  const { diagram: diagram2 } = await __vitePreload(async () => {
170631
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-BTDwdXoq.js");
170790
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DygsQ6re.js");
170632
170791
  return { diagram: diagram22 };
170633
170792
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
170634
170793
  return { id: id18, diagram: diagram2 };
@@ -170645,7 +170804,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
170645
170804
  }, "detector");
170646
170805
  var loader19 = /* @__PURE__ */ __name(async () => {
170647
170806
  const { diagram: diagram2 } = await __vitePreload(async () => {
170648
- const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-DmImWV1j.js");
170807
+ const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-DmQu0qcd.js");
170649
170808
  return { diagram: diagram22 };
170650
170809
  }, true ? __vite__mapDeps([37,25,1,2]) : void 0, import.meta.url);
170651
170810
  return { id: id19, diagram: diagram2 };
@@ -170662,7 +170821,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
170662
170821
  }, "detector");
170663
170822
  var loader20 = /* @__PURE__ */ __name(async () => {
170664
170823
  const { diagram: diagram2 } = await __vitePreload(async () => {
170665
- const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-DuRohiYz.js");
170824
+ const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-phUqi7B-.js");
170666
170825
  return { diagram: diagram22 };
170667
170826
  }, true ? __vite__mapDeps([38,39,1,2]) : void 0, import.meta.url);
170668
170827
  return { id: id20, diagram: diagram2 };
@@ -170679,7 +170838,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
170679
170838
  }, "detector");
170680
170839
  var loader21 = /* @__PURE__ */ __name(async () => {
170681
170840
  const { diagram: diagram2 } = await __vitePreload(async () => {
170682
- const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-lJsLyjEH.js");
170841
+ const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-C3xzGEKO.js");
170683
170842
  return { diagram: diagram22 };
170684
170843
  }, true ? __vite__mapDeps([40,1,2]) : void 0, import.meta.url);
170685
170844
  return { id: id21, diagram: diagram2 };
@@ -170696,7 +170855,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
170696
170855
  }, "detector");
170697
170856
  var loader22 = /* @__PURE__ */ __name(async () => {
170698
170857
  const { diagram: diagram2 } = await __vitePreload(async () => {
170699
- const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-DQ_oTubV.js");
170858
+ const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-Yu0_0k4N.js");
170700
170859
  return { diagram: diagram22 };
170701
170860
  }, true ? __vite__mapDeps([41,1,2]) : void 0, import.meta.url);
170702
170861
  return { id: id22, diagram: diagram2 };
@@ -170713,7 +170872,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
170713
170872
  }, "detector");
170714
170873
  var loader23 = /* @__PURE__ */ __name(async () => {
170715
170874
  const { diagram: diagram2 } = await __vitePreload(async () => {
170716
- const { diagram: diagram22 } = await import("./diagram-VNBRO52H-CU_0csUZ.js");
170875
+ const { diagram: diagram22 } = await import("./diagram-VNBRO52H-C4EHouH3.js");
170717
170876
  return { diagram: diagram22 };
170718
170877
  }, true ? __vite__mapDeps([42,19,21,8,10,11,1,2]) : void 0, import.meta.url);
170719
170878
  return { id: id23, diagram: diagram2 };
@@ -170729,7 +170888,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
170729
170888
  }, "detector");
170730
170889
  var loader24 = /* @__PURE__ */ __name(async () => {
170731
170890
  const { diagram: diagram2 } = await __vitePreload(async () => {
170732
- const { diagram: diagram22 } = await import("./diagram-SSKATNLV-Cc6v1RBI.js");
170891
+ const { diagram: diagram22 } = await import("./diagram-SSKATNLV-DZ_28qLH.js");
170733
170892
  return { diagram: diagram22 };
170734
170893
  }, true ? __vite__mapDeps([43,19,21,8,10,11,1,2]) : void 0, import.meta.url);
170735
170894
  return { id: id24, diagram: diagram2 };
@@ -170745,7 +170904,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
170745
170904
  }, "detector");
170746
170905
  var loader25 = /* @__PURE__ */ __name(async () => {
170747
170906
  const { diagram: diagram2 } = await __vitePreload(async () => {
170748
- const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-B1Up6r6-.js");
170907
+ const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-CULzoKmb.js");
170749
170908
  return { diagram: diagram22 };
170750
170909
  }, true ? __vite__mapDeps([44,11,8,7,16,1,2]) : void 0, import.meta.url);
170751
170910
  return { id: id25, diagram: diagram2 };
@@ -170762,7 +170921,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
170762
170921
  }, "detector");
170763
170922
  var loader26 = /* @__PURE__ */ __name(async () => {
170764
170923
  const { diagram: diagram2 } = await __vitePreload(async () => {
170765
- const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-Bx8X697l.js");
170924
+ const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-ff35K764.js");
170766
170925
  return { diagram: diagram22 };
170767
170926
  }, true ? __vite__mapDeps([45,19,20,21,8,10,11,39,1,2]) : void 0, import.meta.url);
170768
170927
  return { id: id26, diagram: diagram2 };
@@ -172233,10 +172392,51 @@ const CanvasContentComponent = ({ document: document2 }) => {
172233
172392
  return /* @__PURE__ */ jsxRuntimeExports.jsx(CodeEditor, { document: document2 });
172234
172393
  };
172235
172394
  const CanvasContent = reactExports.memo(CanvasContentComponent);
172395
+ const getFileTypeFromPath = (filePath) => {
172396
+ if (filePath.startsWith("data:image/")) return "image";
172397
+ if (filePath.startsWith("data:video/")) return "video";
172398
+ if (filePath.startsWith("data:application/pdf")) return "pdf";
172399
+ const extension2 = filePath.split(".").pop()?.toLowerCase();
172400
+ if (!extension2) return "other";
172401
+ if (["png", "jpg", "jpeg", "gif", "bmp", "webp", "svg"].includes(extension2))
172402
+ return "image";
172403
+ if (["mp4", "webm", "ogg", "mov", "avi", "mkv"].includes(extension2))
172404
+ return "video";
172405
+ if (["pdf"].includes(extension2)) return "pdf";
172406
+ if (["md", "markdown"].includes(extension2)) return "markdown";
172407
+ if (["html", "htm"].includes(extension2)) return "html";
172408
+ if (["zip", "tar", "gz", "rar", "7z"].includes(extension2)) return "archive";
172409
+ if (["txt", "log", "csv", "json", "xml", "yaml", "yml"].includes(extension2))
172410
+ return "text";
172411
+ if ([
172412
+ "js",
172413
+ "ts",
172414
+ "jsx",
172415
+ "tsx",
172416
+ "py",
172417
+ "java",
172418
+ "c",
172419
+ "cpp",
172420
+ "cs",
172421
+ "go",
172422
+ "rb",
172423
+ "php",
172424
+ "sh",
172425
+ "css",
172426
+ "scss",
172427
+ "less"
172428
+ ].includes(extension2))
172429
+ return "code";
172430
+ if (["doc", "docx", "odt"].includes(extension2)) return "document";
172431
+ if (["xls", "xlsx", "ods"].includes(extension2)) return "spreadsheet";
172432
+ if (["ppt", "pptx", "odp"].includes(extension2)) return "presentation";
172433
+ if (["mp3", "wav", "aac", "flac"].includes(extension2)) return "audio";
172434
+ return "other";
172435
+ };
172236
172436
  const RESOURCE_NAME_REGEX$2 = /name=([^;,]+)/;
172237
172437
  const PATH_SEPARATOR_REGEX$5 = /[/\\]/;
172238
172438
  const DATA_URI_REGEX = /^data:([^;,]+)/;
172239
- const getFileName$4 = (path2) => {
172439
+ const getFileName$3 = (path2) => {
172240
172440
  if (path2.startsWith("data:image/")) {
172241
172441
  const nameMatch = path2.match(RESOURCE_NAME_REGEX$2);
172242
172442
  if (nameMatch?.[1]) {
@@ -172348,6 +172548,18 @@ const FileActionsMenu = ({
172348
172548
  const handleCloseMenu = () => {
172349
172549
  setAnchorEl(null);
172350
172550
  };
172551
+ const handleCopyFilePath = async () => {
172552
+ handleCloseMenu();
172553
+ if (filePath) {
172554
+ try {
172555
+ await navigator.clipboard.writeText(filePath);
172556
+ showSuccessToast("File path copied to clipboard");
172557
+ } catch (err) {
172558
+ console.error("Failed to copy file path: ", err);
172559
+ showErrorToast("Failed to copy file path");
172560
+ }
172561
+ }
172562
+ };
172351
172563
  const handleOpenFile = () => {
172352
172564
  handleCloseMenu();
172353
172565
  if (filePath) {
@@ -172398,7 +172610,11 @@ const FileActionsMenu = ({
172398
172610
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Open Folder" })
172399
172611
  ]
172400
172612
  }
172401
- )
172613
+ ),
172614
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledMenuItem$2, { onClick: handleCopyFilePath, children: [
172615
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(ClipboardCopy, { "aria-label": "Copy File Path" }) }),
172616
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Copy File Path" })
172617
+ ] })
172402
172618
  ]
172403
172619
  }
172404
172620
  )
@@ -172482,7 +172698,7 @@ const isVideo$2 = (path2) => {
172482
172698
  const lowerPath = path2.toLowerCase();
172483
172699
  return videoExtensions.some((ext) => lowerPath.endsWith(ext));
172484
172700
  };
172485
- const getAttachmentUrl$2 = (client, path2) => {
172701
+ const getAttachmentUrl$2 = (client2, path2) => {
172486
172702
  if (path2.startsWith("http")) {
172487
172703
  return path2;
172488
172704
  }
@@ -172491,10 +172707,10 @@ const getAttachmentUrl$2 = (client, path2) => {
172491
172707
  }
172492
172708
  const normalizedPath = path2.startsWith("file://") ? path2 : `file://${path2}`;
172493
172709
  if (isImage$2(path2)) {
172494
- return client.static.getImageUrl(normalizedPath);
172710
+ return client2.static.getImageUrl(normalizedPath);
172495
172711
  }
172496
172712
  if (isVideo$2(path2)) {
172497
- return client.static.getVideoUrl(normalizedPath);
172713
+ return client2.static.getVideoUrl(normalizedPath);
172498
172714
  }
172499
172715
  return path2;
172500
172716
  };
@@ -172537,13 +172753,25 @@ const CanvasFileViewer = ({
172537
172753
  const setFiles = useCanvasStore((s2) => s2.setFiles);
172538
172754
  const setOpenTabs = useCanvasStore((s2) => s2.setOpenTabs);
172539
172755
  const setSelectedTab = useCanvasStore((s2) => s2.setSelectedTab);
172540
- const memoizedFiles = reactExports.useMemo(() => files, [files]);
172541
- const client = reactExports.useMemo(() => {
172756
+ const memoizedFiles = reactExports.useMemo(() => {
172757
+ const filesByBaseName = files.reduce(
172758
+ (acc, file) => {
172759
+ const name2 = getFileName$3(file.path);
172760
+ if (!acc[name2] || file.path.length > acc[name2].path.length) {
172761
+ acc[name2] = file;
172762
+ }
172763
+ return acc;
172764
+ },
172765
+ {}
172766
+ );
172767
+ return Object.values(filesByBaseName);
172768
+ }, [files]);
172769
+ const client2 = reactExports.useMemo(() => {
172542
172770
  return createLocalOperatorClient(apiConfig.baseUrl);
172543
172771
  }, []);
172544
172772
  const getUrl2 = reactExports.useCallback(
172545
- (path2) => getAttachmentUrl$2(client, path2),
172546
- [client]
172773
+ (path2) => getAttachmentUrl$2(client2, path2),
172774
+ [client2]
172547
172775
  );
172548
172776
  const handleFileClick = reactExports.useCallback(
172549
172777
  async (fileDoc) => {
@@ -172571,8 +172799,9 @@ const CanvasFileViewer = ({
172571
172799
  title,
172572
172800
  path: docId,
172573
172801
  // Store data URI as path for consistency if needed
172574
- content: fileDoc.path
172802
+ content: fileDoc.path,
172575
172803
  // The content is the data URI itself
172804
+ type: getFileTypeFromPath(title)
172576
172805
  };
172577
172806
  const state2 = useCanvasStore.getState();
172578
172807
  const conversationCanvasState = state2.conversations?.[conversationId];
@@ -172608,7 +172837,8 @@ const CanvasFileViewer = ({
172608
172837
  id: docId,
172609
172838
  title,
172610
172839
  path: normalizedPath,
172611
- content: result.data
172840
+ content: result.data,
172841
+ type: getFileTypeFromPath(title)
172612
172842
  };
172613
172843
  const state2 = useCanvasStore.getState();
172614
172844
  const conversationCanvasState = state2.conversations?.[conversationId];
@@ -172720,7 +172950,7 @@ const CanvasFileViewer = ({
172720
172950
  CardContent,
172721
172951
  {
172722
172952
  sx: { width: "100%", pt: 1, pb: "8px !important" },
172723
- 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) }) })
172953
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: fileDoc.title, placement: "bottom", arrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FileNameTypography, { variant: "caption", children: getFileName$3(fileDoc.title) }) })
172724
172954
  }
172725
172955
  )
172726
172956
  ]
@@ -172846,7 +173076,7 @@ const CanvasTabsComponent = ({
172846
173076
  };
172847
173077
  const CanvasTabs = reactExports.memo(CanvasTabsComponent);
172848
173078
  const useAgentExecutionVariables = (agentId) => {
172849
- const client = reactExports.useMemo(
173079
+ const client2 = reactExports.useMemo(
172850
173080
  () => createLocalOperatorClient(apiConfig.baseUrl),
172851
173081
  []
172852
173082
  );
@@ -172856,7 +173086,7 @@ const useAgentExecutionVariables = (agentId) => {
172856
173086
  if (!agentId) {
172857
173087
  throw new Error("Agent ID is required to fetch execution variables.");
172858
173088
  }
172859
- return client.agents.listAgentExecutionVariables(agentId);
173089
+ return client2.agents.listAgentExecutionVariables(agentId);
172860
173090
  },
172861
173091
  enabled: !!agentId
172862
173092
  // Only run the query if agentId is provided
@@ -172864,12 +173094,12 @@ const useAgentExecutionVariables = (agentId) => {
172864
173094
  };
172865
173095
  const useCreateAgentExecutionVariable = () => {
172866
173096
  const queryClient2 = useQueryClient();
172867
- const client = reactExports.useMemo(
173097
+ const client2 = reactExports.useMemo(
172868
173098
  () => createLocalOperatorClient(apiConfig.baseUrl),
172869
173099
  []
172870
173100
  );
172871
173101
  return useMutation({
172872
- mutationFn: async ({ agentId, variableData }) => client.agents.createAgentExecutionVariable(agentId, variableData),
173102
+ mutationFn: async ({ agentId, variableData }) => client2.agents.createAgentExecutionVariable(agentId, variableData),
172873
173103
  onSuccess: (_data, variables) => {
172874
173104
  queryClient2.invalidateQueries({
172875
173105
  queryKey: ["agentExecutionVariables", variables.agentId]
@@ -172883,12 +173113,12 @@ const useCreateAgentExecutionVariable = () => {
172883
173113
  };
172884
173114
  const useUpdateAgentExecutionVariable = () => {
172885
173115
  const queryClient2 = useQueryClient();
172886
- const client = reactExports.useMemo(
173116
+ const client2 = reactExports.useMemo(
172887
173117
  () => createLocalOperatorClient(apiConfig.baseUrl),
172888
173118
  []
172889
173119
  );
172890
173120
  return useMutation({
172891
- mutationFn: async ({ agentId, variableKey, variableData }) => client.agents.updateAgentExecutionVariable(
173121
+ mutationFn: async ({ agentId, variableKey, variableData }) => client2.agents.updateAgentExecutionVariable(
172892
173122
  agentId,
172893
173123
  variableKey,
172894
173124
  variableData
@@ -172906,12 +173136,12 @@ const useUpdateAgentExecutionVariable = () => {
172906
173136
  };
172907
173137
  const useDeleteAgentExecutionVariable = () => {
172908
173138
  const queryClient2 = useQueryClient();
172909
- const client = reactExports.useMemo(
173139
+ const client2 = reactExports.useMemo(
172910
173140
  () => createLocalOperatorClient(apiConfig.baseUrl),
172911
173141
  []
172912
173142
  );
172913
173143
  return useMutation({
172914
- mutationFn: async ({ agentId, variableKey }) => client.agents.deleteAgentExecutionVariable(agentId, variableKey),
173144
+ mutationFn: async ({ agentId, variableKey }) => client2.agents.deleteAgentExecutionVariable(agentId, variableKey),
172915
173145
  onSuccess: (_data, variables) => {
172916
173146
  queryClient2.invalidateQueries({
172917
173147
  queryKey: ["agentExecutionVariables", variables.agentId]
@@ -174816,7 +175046,7 @@ const AttachmentsPreview = ({
174816
175046
  onRemoveAttachment,
174817
175047
  disabled = false
174818
175048
  }) => {
174819
- const client = reactExports.useMemo(() => {
175049
+ const client2 = reactExports.useMemo(() => {
174820
175050
  return createLocalOperatorClient(apiConfig.baseUrl);
174821
175051
  }, []);
174822
175052
  const isImage2 = reactExports.useCallback((path2) => {
@@ -174886,14 +175116,14 @@ const AttachmentsPreview = ({
174886
175116
  }
174887
175117
  const normalizedPath = path2.startsWith("file://") ? path2 : `file://${path2}`;
174888
175118
  if (isImage2(path2)) {
174889
- return client.static.getImageUrl(normalizedPath);
175119
+ return client2.static.getImageUrl(normalizedPath);
174890
175120
  }
174891
175121
  if (isVideo2(path2)) {
174892
- return client.static.getVideoUrl(normalizedPath);
175122
+ return client2.static.getVideoUrl(normalizedPath);
174893
175123
  }
174894
175124
  return path2;
174895
175125
  },
174896
- [client, isImage2, isVideo2]
175126
+ [client2, isImage2, isVideo2]
174897
175127
  // isImage and isVideo are stable due to useCallback
174898
175128
  );
174899
175129
  const handleRemove = reactExports.useCallback(
@@ -175930,6 +176160,8 @@ const MessageInput = reactExports.forwardRef(
175930
176160
  const [isTranscribing, setIsTranscribing] = reactExports.useState(false);
175931
176161
  const mediaRecorderRef = reactExports.useRef(null);
175932
176162
  const audioChunksRef = reactExports.useRef([]);
176163
+ const spacebarTimerRef = reactExports.useRef(null);
176164
+ const [platform, setPlatform] = reactExports.useState("");
175933
176165
  const fileInputRef = reactExports.useRef(null);
175934
176166
  const { data: credentialsData, isLoading: isLoadingCredentials } = useCredentials();
175935
176167
  const isRadientApiKeyConfigured = reactExports.useMemo(
@@ -175982,7 +176214,15 @@ const MessageInput = reactExports.forwardRef(
175982
176214
  }
175983
176215
  }
175984
176216
  }, [isInputDisabled, isRecording, isTranscribing, textareaRef]);
176217
+ reactExports.useEffect(() => {
176218
+ window.electron.ipcRenderer.invoke("get-platform-info").then((info2) => {
176219
+ setPlatform(info2.platform);
176220
+ }).catch((err) => {
176221
+ console.error("Failed to get platform info:", err);
176222
+ });
176223
+ }, []);
175985
176224
  const handleStartRecording = reactExports.useCallback(async () => {
176225
+ if (!canEnableRecordingFeature) return;
175986
176226
  if (navigator?.mediaDevices?.getUserMedia) {
175987
176227
  try {
175988
176228
  const stream = await navigator.mediaDevices.getUserMedia({
@@ -176015,13 +176255,46 @@ const MessageInput = reactExports.forwardRef(
176015
176255
  console.error("getUserMedia not supported on your browser!");
176016
176256
  showErrorToast("Audio recording is not supported on your browser.");
176017
176257
  }
176018
- }, []);
176019
- const handleStopRecording = reactExports.useCallback(() => {
176258
+ }, [canEnableRecordingFeature]);
176259
+ const handleConfirmRecording = reactExports.useCallback(() => {
176020
176260
  if (mediaRecorderRef.current && isRecording) {
176021
176261
  mediaRecorderRef.current.stop();
176022
176262
  setIsRecording(false);
176023
176263
  }
176024
176264
  }, [isRecording]);
176265
+ const handleCancelRecording = reactExports.useCallback(() => {
176266
+ if (mediaRecorderRef.current && isRecording) {
176267
+ mediaRecorderRef.current.onstop = () => {
176268
+ if (mediaRecorderRef.current?.stream) {
176269
+ for (const track of mediaRecorderRef.current.stream.getTracks()) {
176270
+ track.stop();
176271
+ }
176272
+ }
176273
+ setAudioBlob(null);
176274
+ audioChunksRef.current = [];
176275
+ };
176276
+ mediaRecorderRef.current.stop();
176277
+ setIsRecording(false);
176278
+ }
176279
+ }, [isRecording]);
176280
+ reactExports.useEffect(() => {
176281
+ if (isRecording) {
176282
+ const handleKeyDown2 = (event) => {
176283
+ if (event.key === "Enter") {
176284
+ event.preventDefault();
176285
+ handleConfirmRecording();
176286
+ } else if (event.key === "Escape") {
176287
+ event.preventDefault();
176288
+ handleCancelRecording();
176289
+ }
176290
+ };
176291
+ window.addEventListener("keydown", handleKeyDown2);
176292
+ return () => {
176293
+ window.removeEventListener("keydown", handleKeyDown2);
176294
+ };
176295
+ }
176296
+ return void 0;
176297
+ }, [isRecording, handleConfirmRecording, handleCancelRecording]);
176025
176298
  const handleSendAudio = reactExports.useCallback(async () => {
176026
176299
  if (!audioBlob) return;
176027
176300
  try {
@@ -176051,6 +176324,74 @@ const MessageInput = reactExports.forwardRef(
176051
176324
  handleSendAudio();
176052
176325
  }
176053
176326
  }, [audioBlob, handleSendAudio]);
176327
+ reactExports.useEffect(() => {
176328
+ const handleStartSpeechToText = () => {
176329
+ if (!isLoading && !isRecording && !isTranscribing && canEnableRecordingFeature) {
176330
+ handleStartRecording();
176331
+ }
176332
+ };
176333
+ window.electron.ipcRenderer.on(
176334
+ "start-speech-to-text",
176335
+ handleStartSpeechToText
176336
+ );
176337
+ return () => {
176338
+ window.electron.ipcRenderer.removeListener(
176339
+ "start-speech-to-text",
176340
+ handleStartSpeechToText
176341
+ );
176342
+ };
176343
+ }, [
176344
+ canEnableRecordingFeature,
176345
+ handleStartRecording,
176346
+ isLoading,
176347
+ isRecording,
176348
+ isTranscribing
176349
+ ]);
176350
+ reactExports.useEffect(() => {
176351
+ const handleKeyDown2 = (event) => {
176352
+ if (event.code !== "Space" || spacebarTimerRef.current) {
176353
+ return;
176354
+ }
176355
+ const activeElement = document.activeElement;
176356
+ if (activeElement && (activeElement.tagName === "INPUT" || activeElement.tagName === "TEXTAREA" || activeElement.isContentEditable)) {
176357
+ return;
176358
+ }
176359
+ if (isRecording || isTranscribing || !canEnableRecordingFeature) {
176360
+ return;
176361
+ }
176362
+ event.preventDefault();
176363
+ spacebarTimerRef.current = setTimeout(() => {
176364
+ handleStartRecording();
176365
+ }, 1e3);
176366
+ };
176367
+ const handleKeyUp = (event) => {
176368
+ if (event.code !== "Space") {
176369
+ return;
176370
+ }
176371
+ if (spacebarTimerRef.current) {
176372
+ clearTimeout(spacebarTimerRef.current);
176373
+ spacebarTimerRef.current = null;
176374
+ }
176375
+ if (isRecording) {
176376
+ handleConfirmRecording();
176377
+ }
176378
+ };
176379
+ window.addEventListener("keydown", handleKeyDown2);
176380
+ window.addEventListener("keyup", handleKeyUp);
176381
+ return () => {
176382
+ window.removeEventListener("keydown", handleKeyDown2);
176383
+ window.removeEventListener("keyup", handleKeyUp);
176384
+ if (spacebarTimerRef.current) {
176385
+ clearTimeout(spacebarTimerRef.current);
176386
+ }
176387
+ };
176388
+ }, [
176389
+ isRecording,
176390
+ isTranscribing,
176391
+ canEnableRecordingFeature,
176392
+ handleStartRecording,
176393
+ handleConfirmRecording
176394
+ ]);
176054
176395
  const handleSubmit = (e3) => {
176055
176396
  e3.preventDefault();
176056
176397
  if (!newMessage.trim() && attachments.length === 0) return;
@@ -176112,6 +176453,12 @@ const MessageInput = reactExports.forwardRef(
176112
176453
  setAttachments([]);
176113
176454
  setNewMessage("");
176114
176455
  };
176456
+ const shortcutText = reactExports.useMemo(() => {
176457
+ if (platform === "darwin") {
176458
+ return "Cmd+Shift+S";
176459
+ }
176460
+ return "Ctrl+Shift+S";
176461
+ }, [platform]);
176115
176462
  const inputContent = /* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, style: { width: "100%" }, children: [
176116
176463
  /* @__PURE__ */ jsxRuntimeExports.jsxs(InputInnerContainer, { children: [
176117
176464
  attachments.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -176178,51 +176525,68 @@ const MessageInput = reactExports.forwardRef(
176178
176525
  )
176179
176526
  ] }),
176180
176527
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", alignItems: "center", gap: 1, children: [
176181
- !isLoading && !currentJobId && !isTranscribing && // @ts-ignore Tooltip type issue
176182
- /* @__PURE__ */ jsxRuntimeExports.jsx(
176528
+ !isRecording && !isTranscribing && !(isLoading && currentJobId) && /* @__PURE__ */ jsxRuntimeExports.jsx(
176183
176529
  Tooltip$1,
176184
176530
  {
176185
- title: !canEnableRecordingFeature ? "Sign in to Radient in the settings page to enable audio recording" : isRecording ? "Stop recording" : "Start recording",
176531
+ title: !canEnableRecordingFeature ? "Sign in to Radient in the settings page to enable audio recording" : `Start recording (${shortcutText} or hold Space)`,
176186
176532
  children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
176187
176533
  IconButton,
176188
176534
  {
176189
- onClick: isRecording ? handleStopRecording : handleStartRecording,
176190
- color: isRecording ? "error" : "primary",
176535
+ onClick: handleStartRecording,
176536
+ color: "primary",
176191
176537
  size: "small",
176192
- "aria-label": isRecording ? "Stop recording" : "Start recording",
176538
+ "aria-label": "Start recording",
176193
176539
  disabled: isLoading || !canEnableRecordingFeature,
176194
- children: isRecording ? /* @__PURE__ */ jsxRuntimeExports.jsx(CircleStop, { size: 24 }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Mic, { size: 24 })
176540
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Mic, { size: 22 })
176195
176541
  }
176196
176542
  ) })
176197
176543
  }
176198
176544
  ),
176199
- isLoading && currentJobId ? (
176200
- // @ts-ignore Tooltip type issue
176201
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Stop agent", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
176202
- SendButton,
176545
+ isRecording && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
176546
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Confirm recording (Enter)", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
176547
+ IconButton,
176203
176548
  {
176204
- type: "button",
176205
- variant: "contained",
176206
- color: "error",
176207
- onClick: () => onCancelJob?.(currentJobId),
176208
- "aria-label": "Stop agent",
176209
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faStop })
176549
+ onClick: handleConfirmRecording,
176550
+ color: "success",
176551
+ size: "small",
176552
+ "aria-label": "Confirm recording",
176553
+ disabled: isLoading,
176554
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { size: 18 })
176210
176555
  }
176211
- ) }) })
176212
- ) : (
176213
- // @ts-ignore Tooltip type issue
176214
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Send message", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
176215
- SendButton,
176556
+ ) }) }),
176557
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Cancel recording (Esc)", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
176558
+ IconButton,
176216
176559
  {
176217
- type: "submit",
176218
- variant: "contained",
176219
- color: "primary",
176220
- disabled: isLoading || isRecording || isTranscribing || !newMessage.trim() && attachments.length === 0,
176221
- "aria-label": "Send message",
176222
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faPaperPlane })
176560
+ onClick: handleCancelRecording,
176561
+ color: "error",
176562
+ size: "small",
176563
+ "aria-label": "Cancel recording",
176564
+ disabled: isLoading,
176565
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(X$2, { size: 18 })
176223
176566
  }
176224
176567
  ) }) })
176225
- )
176568
+ ] }),
176569
+ isLoading && currentJobId ? /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Stop agent", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
176570
+ SendButton,
176571
+ {
176572
+ type: "button",
176573
+ variant: "contained",
176574
+ color: "error",
176575
+ onClick: () => onCancelJob?.(currentJobId),
176576
+ "aria-label": "Stop agent",
176577
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faStop })
176578
+ }
176579
+ ) }) }) : !isRecording && !isTranscribing && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Send message", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
176580
+ SendButton,
176581
+ {
176582
+ type: "submit",
176583
+ variant: "contained",
176584
+ color: "primary",
176585
+ disabled: isLoading || !newMessage.trim() && attachments.length === 0,
176586
+ "aria-label": "Send message",
176587
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faPaperPlane })
176588
+ }
176589
+ ) }) })
176226
176590
  ] })
176227
176591
  ] })
176228
176592
  ] }),
@@ -176537,47 +176901,6 @@ const LoadingIndicator = reactExports.memo(({ status, currentExecution }) => {
176537
176901
  ] }) }) })
176538
176902
  ] });
176539
176903
  });
176540
- const getFileTypeFromPath = (filePath) => {
176541
- if (filePath.startsWith("data:image/")) return "image";
176542
- if (filePath.startsWith("data:video/")) return "video";
176543
- if (filePath.startsWith("data:application/pdf")) return "pdf";
176544
- const extension2 = filePath.split(".").pop()?.toLowerCase();
176545
- if (!extension2) return "other";
176546
- if (["png", "jpg", "jpeg", "gif", "bmp", "webp", "svg"].includes(extension2))
176547
- return "image";
176548
- if (["mp4", "webm", "ogg", "mov", "avi", "mkv"].includes(extension2))
176549
- return "video";
176550
- if (["pdf"].includes(extension2)) return "pdf";
176551
- if (["md", "markdown"].includes(extension2)) return "markdown";
176552
- if (["html", "htm"].includes(extension2)) return "html";
176553
- if (["zip", "tar", "gz", "rar", "7z"].includes(extension2)) return "archive";
176554
- if (["txt", "log", "csv", "json", "xml", "yaml", "yml"].includes(extension2))
176555
- return "text";
176556
- if ([
176557
- "js",
176558
- "ts",
176559
- "jsx",
176560
- "tsx",
176561
- "py",
176562
- "java",
176563
- "c",
176564
- "cpp",
176565
- "cs",
176566
- "go",
176567
- "rb",
176568
- "php",
176569
- "sh",
176570
- "css",
176571
- "scss",
176572
- "less"
176573
- ].includes(extension2))
176574
- return "code";
176575
- if (["doc", "docx", "odt"].includes(extension2)) return "document";
176576
- if (["xls", "xlsx", "ods"].includes(extension2)) return "spreadsheet";
176577
- if (["ppt", "pptx", "odp"].includes(extension2)) return "presentation";
176578
- if (["mp3", "wav", "aac", "flac"].includes(extension2)) return "audio";
176579
- return "other";
176580
- };
176581
176904
  const FILE_EXTENSION_REGEX = /\.([a-zA-Z0-9]+)$/;
176582
176905
  const PATH_SLASH_REGEX = /[\\/]/;
176583
176906
  const getLanguageFromExtension = (filename) => {
@@ -176851,6 +177174,301 @@ const ExpandableActionElement = ({
176851
177174
  ] }) })
176852
177175
  ] });
176853
177176
  };
177177
+ const InvalidAttachmentContainer = styled$1(Box)(({ theme: theme2 }) => ({
177178
+ display: "flex",
177179
+ alignItems: "center",
177180
+ padding: "8px 12px",
177181
+ marginTop: 8,
177182
+ backgroundColor: alpha$1(
177183
+ theme2.palette.mode === "dark" ? theme2.palette.warning.dark : theme2.palette.warning.light,
177184
+ theme2.palette.mode === "dark" ? 0.05 : 0.05
177185
+ ),
177186
+ borderRadius: 8,
177187
+ boxShadow: `0 1px 4px ${alpha$1(theme2.palette.common.black, theme2.palette.mode === "dark" ? 0.1 : 0.05)}`,
177188
+ width: "fit-content",
177189
+ maxWidth: "100%"
177190
+ }));
177191
+ const ErrorIcon = styled$1(Box)(({ theme: theme2 }) => ({
177192
+ marginRight: 8,
177193
+ color: theme2.palette.warning.main,
177194
+ display: "flex",
177195
+ alignItems: "center"
177196
+ }));
177197
+ const ErrorText = styled$1(Typography)({
177198
+ fontSize: "0.85rem",
177199
+ overflow: "hidden",
177200
+ textOverflow: "ellipsis",
177201
+ whiteSpace: "nowrap",
177202
+ maxWidth: "100%"
177203
+ });
177204
+ const PATH_SEPARATOR_REGEX$3 = /[/\\]/;
177205
+ const getFileName$2 = (path2) => {
177206
+ const parts = path2.split(PATH_SEPARATOR_REGEX$3);
177207
+ return parts[parts.length - 1];
177208
+ };
177209
+ const InvalidAttachment = ({ file }) => {
177210
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
177211
+ InvalidAttachmentContainer,
177212
+ {
177213
+ title: `File not viewable: ${getFileName$2(file)}`,
177214
+ children: [
177215
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorIcon, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faExclamationCircle, size: "sm" }) }),
177216
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(ErrorText, { variant: "body2", children: [
177217
+ getFileName$2(file),
177218
+ " is not viewable (file may be incomplete, deleted, or moved)"
177219
+ ] })
177220
+ ]
177221
+ }
177222
+ );
177223
+ };
177224
+ const AudioPlayerContainer = styled$1(Box)(({ theme: theme2 }) => ({
177225
+ display: "flex",
177226
+ alignItems: "center",
177227
+ gap: theme2.spacing(1.5),
177228
+ background: theme2.palette.background.paper,
177229
+ borderRadius: theme2.shape.borderRadius,
177230
+ padding: theme2.spacing(1, 2),
177231
+ width: "100%",
177232
+ maxWidth: "600px",
177233
+ border: `1px solid ${theme2.palette.sidebar.border}`
177234
+ }));
177235
+ const TimeDisplay = styled$1(Typography)(({ theme: theme2 }) => ({
177236
+ fontSize: "0.75rem",
177237
+ color: theme2.palette.text.secondary,
177238
+ minWidth: "40px",
177239
+ textAlign: "center"
177240
+ }));
177241
+ const CustomSlider = styled$1(Slider)(({ theme: theme2 }) => ({
177242
+ color: theme2.palette.primary.main,
177243
+ height: 4,
177244
+ "& .MuiSlider-thumb": {
177245
+ width: 12,
177246
+ height: 12,
177247
+ backgroundColor: theme2.palette.primary.main,
177248
+ border: `2px solid ${theme2.palette.background.paper}`,
177249
+ "&:hover, &.Mui-focusVisible": {
177250
+ boxShadow: `0 0 0 8px ${alpha$1(theme2.palette.primary.main, 0.16)}`
177251
+ },
177252
+ "&.Mui-active": {
177253
+ width: 16,
177254
+ height: 16
177255
+ }
177256
+ },
177257
+ "& .MuiSlider-rail": {
177258
+ opacity: 0.3,
177259
+ backgroundColor: theme2.palette.text.secondary
177260
+ },
177261
+ "& .MuiSlider-track": {
177262
+ border: "none"
177263
+ }
177264
+ }));
177265
+ const VolumeControlContainer = styled$1(Box)({
177266
+ display: "flex",
177267
+ alignItems: "center",
177268
+ gap: "8px"
177269
+ });
177270
+ const PlaybackRateButton = styled$1(Typography)(({ theme: theme2 }) => ({
177271
+ fontWeight: "bold",
177272
+ fontSize: "0.75rem",
177273
+ color: theme2.palette.text.secondary,
177274
+ cursor: "pointer",
177275
+ padding: theme2.spacing(0.5, 1),
177276
+ borderRadius: theme2.shape.borderRadius,
177277
+ "&:hover": {
177278
+ backgroundColor: theme2.palette.action.hover
177279
+ }
177280
+ }));
177281
+ const PATH_SEPARATOR_REGEX$2 = /[/\\]/;
177282
+ const getFileNameFromPath = (path2) => {
177283
+ try {
177284
+ const url = new URL(path2);
177285
+ if (url.searchParams.has("path")) {
177286
+ const filePath = url.searchParams.get("path") ?? "";
177287
+ return filePath.split(PATH_SEPARATOR_REGEX$2).pop() ?? "";
177288
+ }
177289
+ return url.pathname.split(PATH_SEPARATOR_REGEX$2).pop() ?? "";
177290
+ } catch {
177291
+ return path2.split(PATH_SEPARATOR_REGEX$2).pop() ?? "";
177292
+ }
177293
+ };
177294
+ const AudioAttachment = reactExports.memo(({ content: content2 }) => {
177295
+ const audioRef = reactExports.useRef(null);
177296
+ const [isPlaying, setIsPlaying] = reactExports.useState(false);
177297
+ const [duration2, setDuration] = reactExports.useState(0);
177298
+ const [currentTime, setCurrentTime] = reactExports.useState(0);
177299
+ const [volume, setVolume] = reactExports.useState(1);
177300
+ const [playbackRate, setPlaybackRate] = reactExports.useState(1);
177301
+ const [isLoading, setIsLoading] = reactExports.useState(true);
177302
+ const [hasError, setHasError] = reactExports.useState(false);
177303
+ const [anchorEl, setAnchorEl] = reactExports.useState(null);
177304
+ reactExports.useEffect(() => {
177305
+ const audioElement = new Audio(content2);
177306
+ audioRef.current = audioElement;
177307
+ setIsLoading(true);
177308
+ const handleLoadedMetadata = () => {
177309
+ if (audioRef.current) {
177310
+ setDuration(audioRef.current.duration);
177311
+ setIsLoading(false);
177312
+ }
177313
+ };
177314
+ const handleTimeUpdate = () => {
177315
+ if (audioRef.current) {
177316
+ setCurrentTime(audioRef.current.currentTime);
177317
+ }
177318
+ };
177319
+ const handleEnded = () => {
177320
+ setIsPlaying(false);
177321
+ setCurrentTime(0);
177322
+ };
177323
+ const handleError2 = () => {
177324
+ setHasError(true);
177325
+ setIsLoading(false);
177326
+ };
177327
+ audioElement.addEventListener("loadedmetadata", handleLoadedMetadata);
177328
+ audioElement.addEventListener("timeupdate", handleTimeUpdate);
177329
+ audioElement.addEventListener("ended", handleEnded);
177330
+ audioElement.addEventListener("error", handleError2);
177331
+ return () => {
177332
+ audioElement.removeEventListener("loadedmetadata", handleLoadedMetadata);
177333
+ audioElement.removeEventListener("timeupdate", handleTimeUpdate);
177334
+ audioElement.removeEventListener("ended", handleEnded);
177335
+ audioElement.removeEventListener("error", handleError2);
177336
+ };
177337
+ }, [content2]);
177338
+ const handlePlayPause = reactExports.useCallback(() => {
177339
+ if (audioRef.current) {
177340
+ if (isPlaying) {
177341
+ audioRef.current.pause();
177342
+ } else {
177343
+ audioRef.current.play().catch(console.error);
177344
+ }
177345
+ setIsPlaying(!isPlaying);
177346
+ }
177347
+ }, [isPlaying]);
177348
+ const handleSeek = reactExports.useCallback((_2, newValue) => {
177349
+ if (audioRef.current) {
177350
+ audioRef.current.currentTime = newValue;
177351
+ setCurrentTime(newValue);
177352
+ }
177353
+ }, []);
177354
+ const handleVolumeChange = reactExports.useCallback(
177355
+ (_2, newValue) => {
177356
+ if (audioRef.current) {
177357
+ const newVolume = newValue;
177358
+ audioRef.current.volume = newVolume;
177359
+ setVolume(newVolume);
177360
+ }
177361
+ },
177362
+ []
177363
+ );
177364
+ const toggleMute = reactExports.useCallback(() => {
177365
+ if (audioRef.current) {
177366
+ const newVolume = volume > 0 ? 0 : 1;
177367
+ audioRef.current.volume = newVolume;
177368
+ setVolume(newVolume);
177369
+ }
177370
+ }, [volume]);
177371
+ const handlePlaybackRateChange = reactExports.useCallback((rate) => {
177372
+ if (audioRef.current) {
177373
+ audioRef.current.playbackRate = rate;
177374
+ setPlaybackRate(rate);
177375
+ }
177376
+ setAnchorEl(null);
177377
+ }, []);
177378
+ const formatTime2 = (time2) => {
177379
+ if (Number.isNaN(time2) || time2 === 0) return "0:00";
177380
+ const minutes = Math.floor(time2 / 60);
177381
+ const seconds = Math.floor(time2 % 60);
177382
+ return `${minutes}:${seconds.toString().padStart(2, "0")}`;
177383
+ };
177384
+ const VolumeIcon = volume === 0 ? VolumeX : volume < 0.5 ? Volume1 : Volume2;
177385
+ if (hasError) {
177386
+ const fileName = getFileNameFromPath(content2);
177387
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(InvalidAttachment, { file: fileName });
177388
+ }
177389
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(AudioPlayerContainer, { children: [
177390
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
177391
+ IconButton,
177392
+ {
177393
+ onClick: handlePlayPause,
177394
+ disabled: isLoading || hasError,
177395
+ size: "small",
177396
+ children: isLoading ? /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 20 }) : isPlaying ? /* @__PURE__ */ jsxRuntimeExports.jsx(CirclePause, { size: 20 }) : /* @__PURE__ */ jsxRuntimeExports.jsx(CirclePlay, { size: 20 })
177397
+ }
177398
+ ),
177399
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TimeDisplay, { children: formatTime2(currentTime) }),
177400
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
177401
+ CustomSlider,
177402
+ {
177403
+ "aria-label": "time-indicator",
177404
+ size: "small",
177405
+ value: currentTime,
177406
+ min: 0,
177407
+ step: 1,
177408
+ max: duration2,
177409
+ onChange: handleSeek,
177410
+ disabled: isLoading || hasError
177411
+ }
177412
+ ),
177413
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TimeDisplay, { children: formatTime2(duration2) }),
177414
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(VolumeControlContainer, { children: [
177415
+ /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { onClick: toggleMute, size: "small", disabled: hasError, children: /* @__PURE__ */ jsxRuntimeExports.jsx(VolumeIcon, { size: 16 }) }),
177416
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
177417
+ CustomSlider,
177418
+ {
177419
+ "aria-label": "volume-control",
177420
+ size: "small",
177421
+ value: volume,
177422
+ min: 0,
177423
+ step: 0.1,
177424
+ max: 1,
177425
+ onChange: handleVolumeChange,
177426
+ sx: { width: 70 },
177427
+ disabled: hasError
177428
+ }
177429
+ )
177430
+ ] }),
177431
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
177432
+ IconButton,
177433
+ {
177434
+ onClick: (event) => setAnchorEl(event.currentTarget),
177435
+ size: "small",
177436
+ disabled: hasError,
177437
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(PlaybackRateButton, { children: [
177438
+ playbackRate,
177439
+ "x"
177440
+ ] })
177441
+ }
177442
+ ),
177443
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
177444
+ Menu,
177445
+ {
177446
+ anchorEl,
177447
+ open: Boolean(anchorEl),
177448
+ onClose: () => setAnchorEl(null),
177449
+ MenuListProps: {
177450
+ sx: {
177451
+ // @ts-ignore
177452
+ backgroundColor: (theme2) => theme2.palette.background.paper
177453
+ }
177454
+ },
177455
+ children: [0.5, 1, 1.5, 2].map((rate) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
177456
+ MenuItem,
177457
+ {
177458
+ onClick: () => handlePlaybackRateChange(rate),
177459
+ selected: playbackRate === rate,
177460
+ children: [
177461
+ rate,
177462
+ "x"
177463
+ ]
177464
+ },
177465
+ rate
177466
+ ))
177467
+ }
177468
+ )
177469
+ ] });
177470
+ });
177471
+ AudioAttachment.displayName = "AudioAttachment";
176854
177472
  function _objectWithoutProperties$i(e3, t2) {
176855
177473
  if (null == e3) return {};
176856
177474
  var o2, r2, i2 = _objectWithoutPropertiesLoose$k(e3, t2);
@@ -214443,8 +215061,8 @@ const FileActionsContainer$2 = styled$1(Box)({
214443
215061
  visibility: "hidden",
214444
215062
  transition: "opacity 0.2s ease, visibility 0.2s ease"
214445
215063
  });
214446
- const PATH_SEPARATOR_REGEX$3 = /[/\\]/;
214447
- const getFileName$3 = (path2) => {
215064
+ const PATH_SEPARATOR_REGEX$1 = /[/\\]/;
215065
+ const getFileName$1 = (path2) => {
214448
215066
  if (path2.startsWith("data:image/")) {
214449
215067
  const nameMatch = path2.match(RESOURCE_NAME_REGEX);
214450
215068
  if (nameMatch?.[1]) {
@@ -214467,15 +215085,69 @@ const getFileName$3 = (path2) => {
214467
215085
  }
214468
215086
  return "Pasted File";
214469
215087
  }
214470
- const parts = path2.split(PATH_SEPARATOR_REGEX$3);
215088
+ const parts = path2.split(PATH_SEPARATOR_REGEX$1);
214471
215089
  return parts[parts.length - 1];
214472
215090
  };
214473
215091
  const FileAttachment = reactExports.memo(
214474
215092
  ({ file, onClick, conversationId }) => {
214475
215093
  const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
214476
215094
  const { setViewMode } = useCanvasStore();
215095
+ reactExports.useEffect(() => {
215096
+ const autoUpdateOpenFile = async () => {
215097
+ const state2 = useCanvasStore.getState();
215098
+ const conversationCanvasState = state2.conversations?.[conversationId];
215099
+ if (!conversationCanvasState) return;
215100
+ const openTabs = conversationCanvasState.openTabs ?? [];
215101
+ const filesInState = conversationCanvasState.files ?? [];
215102
+ const title = getFileName$1(file);
215103
+ const normalizedPath2 = file.startsWith("file://") ? file.substring(7) : file;
215104
+ const docId = file.startsWith("data:") ? file : normalizedPath2;
215105
+ const isFileOpen = openTabs.some((tab2) => tab2.id === docId);
215106
+ if (!isFileOpen) return;
215107
+ if (file.startsWith("data:")) {
215108
+ const newDoc = {
215109
+ id: docId,
215110
+ title,
215111
+ path: docId,
215112
+ content: file,
215113
+ type: getFileTypeFromPath(file)
215114
+ };
215115
+ const fileIndex = filesInState.findIndex((f2) => f2.id === docId);
215116
+ if (fileIndex !== -1) {
215117
+ const updatedFiles = [...filesInState];
215118
+ updatedFiles[fileIndex] = newDoc;
215119
+ state2.setFiles(conversationId, updatedFiles);
215120
+ }
215121
+ } else {
215122
+ try {
215123
+ const result = await window.api.readFile(normalizedPath2);
215124
+ if (result.success) {
215125
+ const newDoc = {
215126
+ id: docId,
215127
+ title,
215128
+ path: normalizedPath2,
215129
+ content: result.data,
215130
+ type: getFileTypeFromPath(file)
215131
+ };
215132
+ const fileIndex = filesInState.findIndex((f2) => f2.id === docId);
215133
+ if (fileIndex !== -1) {
215134
+ const updatedFiles = [...filesInState];
215135
+ updatedFiles[fileIndex] = newDoc;
215136
+ state2.setFiles(conversationId, updatedFiles);
215137
+ }
215138
+ }
215139
+ } catch (error) {
215140
+ console.error(
215141
+ `Failed to auto-refresh file in canvas: ${normalizedPath2}`,
215142
+ error
215143
+ );
215144
+ }
215145
+ }
215146
+ };
215147
+ autoUpdateOpenFile();
215148
+ }, [file, conversationId]);
214477
215149
  const handleClick = reactExports.useCallback(async () => {
214478
- const title = getFileName$3(file);
215150
+ const title = getFileName$1(file);
214479
215151
  const fallbackAction = (err) => {
214480
215152
  if (err) console.error("Error processing file:", err);
214481
215153
  onClick(file);
@@ -214572,7 +215244,7 @@ const FileAttachment = reactExports.memo(
214572
215244
  FileAttachmentContainer,
214573
215245
  {
214574
215246
  onClick: handleClick,
214575
- title: `Click to open ${getFileName$3(file)}`,
215247
+ title: `Click to open ${getFileName$1(file)}`,
214576
215248
  sx: {
214577
215249
  padding: isPastedImage ? 0 : "8px 12px",
214578
215250
  height: isPastedImage ? "auto" : "auto",
@@ -214593,7 +215265,7 @@ const FileAttachment = reactExports.memo(
214593
215265
  }
214594
215266
  ) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
214595
215267
  /* @__PURE__ */ jsxRuntimeExports.jsx(FileIcon, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faFile, size: "sm" }) }),
214596
- /* @__PURE__ */ jsxRuntimeExports.jsx(FileName, { variant: "body2", children: getFileName$3(file) }),
215268
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FileName, { variant: "body2", children: getFileName$1(file) }),
214597
215269
  isLocalFile && /* @__PURE__ */ jsxRuntimeExports.jsx(
214598
215270
  FileActionsContainer$2,
214599
215271
  {
@@ -214618,53 +215290,6 @@ const FileAttachment = reactExports.memo(
214618
215290
  }
214619
215291
  );
214620
215292
  FileAttachment.displayName = "FileAttachment";
214621
- const InvalidAttachmentContainer = styled$1(Box)(({ theme: theme2 }) => ({
214622
- display: "flex",
214623
- alignItems: "center",
214624
- padding: "8px 12px",
214625
- marginTop: 8,
214626
- backgroundColor: alpha$1(
214627
- theme2.palette.mode === "dark" ? theme2.palette.warning.dark : theme2.palette.warning.light,
214628
- theme2.palette.mode === "dark" ? 0.05 : 0.05
214629
- ),
214630
- borderRadius: 8,
214631
- boxShadow: `0 1px 4px ${alpha$1(theme2.palette.common.black, theme2.palette.mode === "dark" ? 0.1 : 0.05)}`,
214632
- width: "fit-content",
214633
- maxWidth: "100%"
214634
- }));
214635
- const ErrorIcon = styled$1(Box)(({ theme: theme2 }) => ({
214636
- marginRight: 8,
214637
- color: theme2.palette.warning.main,
214638
- display: "flex",
214639
- alignItems: "center"
214640
- }));
214641
- const ErrorText = styled$1(Typography)({
214642
- fontSize: "0.85rem",
214643
- overflow: "hidden",
214644
- textOverflow: "ellipsis",
214645
- whiteSpace: "nowrap",
214646
- maxWidth: "100%"
214647
- });
214648
- const PATH_SEPARATOR_REGEX$2 = /[/\\]/;
214649
- const getFileName$2 = (path2) => {
214650
- const parts = path2.split(PATH_SEPARATOR_REGEX$2);
214651
- return parts[parts.length - 1];
214652
- };
214653
- const InvalidAttachment = ({ file }) => {
214654
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
214655
- InvalidAttachmentContainer,
214656
- {
214657
- title: `File not viewable: ${getFileName$2(file)}`,
214658
- children: [
214659
- /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorIcon, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faExclamationCircle, size: "sm" }) }),
214660
- /* @__PURE__ */ jsxRuntimeExports.jsxs(ErrorText, { variant: "body2", children: [
214661
- getFileName$2(file),
214662
- " is not viewable (file may be incomplete, deleted, or moved)"
214663
- ] })
214664
- ]
214665
- }
214666
- );
214667
- };
214668
215293
  const AttachmentImage = styled$1("img")(({ theme: theme2 }) => ({
214669
215294
  maxWidth: "100%",
214670
215295
  maxHeight: 200,
@@ -214695,9 +215320,9 @@ const AttachmentImageContainer = styled$1(Box)({
214695
215320
  visibility: "visible"
214696
215321
  }
214697
215322
  });
214698
- const PATH_SEPARATOR_REGEX$1 = /[/\\]/;
214699
- const getFileName$1 = (path2) => {
214700
- const parts = path2.split(PATH_SEPARATOR_REGEX$1);
215323
+ const PATH_SEPARATOR_REGEX = /[/\\]/;
215324
+ const getFileName = (path2) => {
215325
+ const parts = path2.split(PATH_SEPARATOR_REGEX);
214701
215326
  return parts[parts.length - 1];
214702
215327
  };
214703
215328
  const ImageAttachment = reactExports.memo(
@@ -214706,7 +215331,7 @@ const ImageAttachment = reactExports.memo(
214706
215331
  const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
214707
215332
  const { setViewMode } = useCanvasStore();
214708
215333
  const handleShowInCanvas = reactExports.useCallback(async () => {
214709
- const title = getFileName$1(file);
215334
+ const title = getFileName(file);
214710
215335
  const fallbackAction = (err) => {
214711
215336
  if (err) console.error("Error processing file:", err);
214712
215337
  onClick(file);
@@ -214809,10 +215434,10 @@ const ImageAttachment = reactExports.memo(
214809
215434
  AttachmentImage,
214810
215435
  {
214811
215436
  src,
214812
- alt: getFileName$1(file),
215437
+ alt: getFileName(file),
214813
215438
  onClick: handleClick,
214814
215439
  onError: handleError2,
214815
- title: `Click to open ${getFileName$1(file)}`
215440
+ title: `Click to open ${getFileName(file)}`
214816
215441
  }
214817
215442
  ),
214818
215443
  isLocalFile && /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -214968,18 +215593,13 @@ const AttachmentVideoContainer = styled$1(Box)({
214968
215593
  visibility: "visible"
214969
215594
  }
214970
215595
  });
214971
- const PATH_SEPARATOR_REGEX = /[/\\]/;
214972
- const getFileName = (path2) => {
214973
- const parts = path2.split(PATH_SEPARATOR_REGEX);
214974
- return parts[parts.length - 1];
214975
- };
214976
215596
  const VideoAttachment = reactExports.memo(
214977
215597
  ({ file, src, onClick, conversationId }) => {
214978
215598
  const [hasError, setHasError] = reactExports.useState(false);
214979
215599
  const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
214980
215600
  const { setViewMode } = useCanvasStore();
214981
215601
  const handleShowInCanvas = reactExports.useCallback(async () => {
214982
- const title = getFileName(file);
215602
+ const title = getFileName$3(file);
214983
215603
  const fallbackAction = (err) => {
214984
215604
  if (err) console.error("Error processing file:", err);
214985
215605
  onClick(file);
@@ -215085,7 +215705,7 @@ const VideoAttachment = reactExports.memo(
215085
215705
  preload: "metadata",
215086
215706
  onClick: handleClick,
215087
215707
  onError: handleError2,
215088
- title: `Click to open ${getFileName(file)}`
215708
+ title: `Click to open ${getFileName$3(file)}`
215089
215709
  }
215090
215710
  ),
215091
215711
  isLocalFile && /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -215152,16 +215772,32 @@ const isVideo$1 = (path2) => {
215152
215772
  const lowerPath = path2.toLowerCase();
215153
215773
  return videoExtensions.some((ext) => lowerPath.endsWith(ext));
215154
215774
  };
215155
- const getAttachmentUrl$1 = (client, path2) => {
215775
+ const isAudio$1 = (path2) => {
215776
+ const audioExtensions = [
215777
+ ".mp3",
215778
+ ".wav",
215779
+ ".ogg",
215780
+ ".aac",
215781
+ ".flac",
215782
+ ".m4a",
215783
+ ".aiff"
215784
+ ];
215785
+ const lowerPath = path2.toLowerCase();
215786
+ return audioExtensions.some((ext) => lowerPath.endsWith(ext));
215787
+ };
215788
+ const getAttachmentUrl$1 = (client2, path2) => {
215156
215789
  if (path2.startsWith("http")) {
215157
215790
  return path2;
215158
215791
  }
215159
215792
  const normalizedPath = path2.startsWith("file://") ? path2 : `file://${path2}`;
215160
215793
  if (isImage$1(path2)) {
215161
- return client.static.getImageUrl(normalizedPath);
215794
+ return client2.static.getImageUrl(normalizedPath);
215162
215795
  }
215163
215796
  if (isVideo$1(path2)) {
215164
- return client.static.getVideoUrl(normalizedPath);
215797
+ return client2.static.getVideoUrl(normalizedPath);
215798
+ }
215799
+ if (isAudio$1(path2)) {
215800
+ return client2.static.getAudioUrl(normalizedPath);
215165
215801
  }
215166
215802
  return path2;
215167
215803
  };
@@ -215189,12 +215825,12 @@ const ActionBlock = ({
215189
215825
  e3.stopPropagation();
215190
215826
  setIsExpanded(false);
215191
215827
  };
215192
- const client = reactExports.useMemo(() => {
215828
+ const client2 = reactExports.useMemo(() => {
215193
215829
  return createLocalOperatorClient(apiConfig.baseUrl);
215194
215830
  }, []);
215195
215831
  const getUrl2 = reactExports.useCallback(
215196
- (path2) => getAttachmentUrl$1(client, path2),
215197
- [client]
215832
+ (path2) => getAttachmentUrl$1(client2, path2),
215833
+ [client2]
215198
215834
  );
215199
215835
  const handleFileClick = reactExports.useCallback((filePath2) => {
215200
215836
  try {
@@ -215284,7 +215920,17 @@ const ActionBlock = ({
215284
215920
  },
215285
215921
  `${file}`
215286
215922
  )) }),
215287
- files && files.length > 0 && !isLoading && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { mt: 2 }, children: files.filter((file) => !isImage$1(file) && !isVideo$1(file)).map((file) => /* @__PURE__ */ jsxRuntimeExports.jsx(
215923
+ files && files.length > 0 && !isLoading && files.some((file) => isAudio$1(file)) && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { mb: 2 }, children: files.filter((file) => isAudio$1(file)).map((file) => /* @__PURE__ */ jsxRuntimeExports.jsx(
215924
+ AudioAttachment,
215925
+ {
215926
+ content: getUrl2(file),
215927
+ isUser
215928
+ },
215929
+ `${file}`
215930
+ )) }),
215931
+ files && files.length > 0 && !isLoading && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { mt: 2 }, children: files.filter(
215932
+ (file) => !isImage$1(file) && !isVideo$1(file) && !isAudio$1(file)
215933
+ ).map((file) => /* @__PURE__ */ jsxRuntimeExports.jsx(
215288
215934
  FileAttachment,
215289
215935
  {
215290
215936
  file,
@@ -215421,6 +216067,109 @@ const ExpandableThinkingContent = ({
215421
216067
  ] });
215422
216068
  };
215423
216069
  ExpandableThinkingContent.displayName = "ExpandableThinkingContent";
216070
+ const client = createLocalOperatorClient(apiConfig.baseUrl);
216071
+ const useSpeechStore = create$3(
216072
+ (set2, get2) => ({
216073
+ audioCache: /* @__PURE__ */ new Map(),
216074
+ loadingMessageId: null,
216075
+ playingMessageId: null,
216076
+ error: null,
216077
+ audioElement: null,
216078
+ playSpeech: async (messageId, agentId, inputText) => {
216079
+ const { audioCache, stopSpeech } = get2();
216080
+ stopSpeech();
216081
+ set2({ loadingMessageId: messageId, error: null });
216082
+ try {
216083
+ let audioBlob = audioCache.get(messageId);
216084
+ if (!audioBlob) {
216085
+ audioBlob = await client.speech.createForAgent(agentId, {
216086
+ input_text: inputText
216087
+ });
216088
+ if (audioBlob) {
216089
+ set2((state2) => ({
216090
+ audioCache: new Map(state2.audioCache).set(
216091
+ messageId,
216092
+ audioBlob
216093
+ )
216094
+ }));
216095
+ }
216096
+ }
216097
+ if (!audioBlob) {
216098
+ throw new Error("Speech generation failed, no audio data received.");
216099
+ }
216100
+ const audioUrl = URL.createObjectURL(audioBlob);
216101
+ const audioElement = new Audio(audioUrl);
216102
+ audioElement.onended = () => {
216103
+ set2({ playingMessageId: null, audioElement: null });
216104
+ URL.revokeObjectURL(audioUrl);
216105
+ };
216106
+ audioElement.onerror = () => {
216107
+ set2({
216108
+ error: "Error playing audio.",
216109
+ playingMessageId: null,
216110
+ audioElement: null
216111
+ });
216112
+ URL.revokeObjectURL(audioUrl);
216113
+ };
216114
+ await audioElement.play();
216115
+ set2({
216116
+ playingMessageId: messageId,
216117
+ loadingMessageId: null,
216118
+ audioElement
216119
+ });
216120
+ } catch (err) {
216121
+ const errorMessage = err instanceof Error ? err.message : "Failed to generate speech";
216122
+ set2({ error: errorMessage, loadingMessageId: null });
216123
+ }
216124
+ },
216125
+ stopSpeech: () => {
216126
+ const { audioElement, playingMessageId } = get2();
216127
+ if (audioElement) {
216128
+ audioElement.pause();
216129
+ audioElement.onended = null;
216130
+ audioElement.onerror = null;
216131
+ if (playingMessageId) {
216132
+ const audioBlob = get2().audioCache.get(playingMessageId);
216133
+ if (audioBlob) {
216134
+ const audioUrl = URL.createObjectURL(audioBlob);
216135
+ URL.revokeObjectURL(audioUrl);
216136
+ }
216137
+ }
216138
+ set2({ playingMessageId: null, audioElement: null });
216139
+ }
216140
+ },
216141
+ replaySpeech: async (messageId) => {
216142
+ const { audioCache, stopSpeech } = get2();
216143
+ const audioBlob = audioCache.get(messageId);
216144
+ stopSpeech();
216145
+ if (audioBlob) {
216146
+ try {
216147
+ const audioUrl = URL.createObjectURL(audioBlob);
216148
+ const audioElement = new Audio(audioUrl);
216149
+ audioElement.onended = () => {
216150
+ set2({ playingMessageId: null, audioElement: null });
216151
+ URL.revokeObjectURL(audioUrl);
216152
+ };
216153
+ audioElement.onerror = () => {
216154
+ set2({
216155
+ error: "Error playing audio.",
216156
+ playingMessageId: null,
216157
+ audioElement: null
216158
+ });
216159
+ URL.revokeObjectURL(audioUrl);
216160
+ };
216161
+ await audioElement.play();
216162
+ set2({ playingMessageId: messageId, audioElement });
216163
+ } catch (err) {
216164
+ const errorMessage = err instanceof Error ? err.message : "Failed to replay speech";
216165
+ set2({ error: errorMessage, playingMessageId: null });
216166
+ }
216167
+ } else {
216168
+ set2({ error: "No audio to replay for this message." });
216169
+ }
216170
+ }
216171
+ })
216172
+ );
215424
216173
  const ControlsContainer = styled$1(Box, {
215425
216174
  shouldForwardProp: (prop) => prop !== "isUser"
215426
216175
  })(({ isUser }) => ({
@@ -215435,11 +216184,11 @@ const ControlsContainer = styled$1(Box, {
215435
216184
  transition: "opacity 0.2s ease-in-out",
215436
216185
  zIndex: 1
215437
216186
  }));
215438
- const ControlsWrapper = styled$1(Box)(() => ({
216187
+ const ControlsWrapper$1 = styled$1(Box)(() => ({
215439
216188
  display: "flex",
215440
216189
  alignItems: "flex-start"
215441
216190
  }));
215442
- const StyledIconButton = styled$1(IconButton)(({ theme: theme2 }) => ({
216191
+ const StyledIconButton$1 = styled$1(IconButton)(({ theme: theme2 }) => ({
215443
216192
  color: theme2.palette.text.secondary,
215444
216193
  width: "34px",
215445
216194
  height: "34px",
@@ -215451,9 +216200,31 @@ const StyledIconButton = styled$1(IconButton)(({ theme: theme2 }) => ({
215451
216200
  const MessageControls = ({
215452
216201
  isUser,
215453
216202
  content: content2,
215454
- sx
216203
+ sx,
216204
+ messageId,
216205
+ agentId
215455
216206
  }) => {
215456
216207
  const [copied, setCopied] = reactExports.useState(false);
216208
+ const { data: credentialsData, isLoading: isLoadingCredentials } = useCredentials();
216209
+ const {
216210
+ playSpeech,
216211
+ stopSpeech,
216212
+ replaySpeech,
216213
+ loadingMessageId,
216214
+ playingMessageId,
216215
+ audioCache
216216
+ } = useSpeechStore();
216217
+ const isPlaying = playingMessageId === messageId;
216218
+ const isLoading = loadingMessageId === messageId;
216219
+ const hasAudio = audioCache.has(messageId);
216220
+ const isRadientApiKeyConfigured = reactExports.useMemo(
216221
+ () => credentialsData?.keys?.includes("RADIENT_API_KEY"),
216222
+ [credentialsData?.keys]
216223
+ );
216224
+ const canEnableSpeechFeature = reactExports.useMemo(
216225
+ () => isRadientApiKeyConfigured && !isLoadingCredentials,
216226
+ [isRadientApiKeyConfigured, isLoadingCredentials]
216227
+ );
215457
216228
  const showCopyButton = content2;
215458
216229
  const handleCopy = async () => {
215459
216230
  try {
@@ -215466,7 +216237,36 @@ const MessageControls = ({
215466
216237
  console.error("Failed to copy text:", error);
215467
216238
  }
215468
216239
  };
215469
- return /* @__PURE__ */ jsxRuntimeExports.jsx(ControlsContainer, { isUser, className: "message-controls", sx, children: showCopyButton && /* @__PURE__ */ jsxRuntimeExports.jsx(ControlsWrapper, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: copied ? "Copied!" : "Copy message", placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledIconButton, { size: "small", onClick: handleCopy, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { size: 16 }) }) }) }) });
216240
+ const handlePlay = () => {
216241
+ if (agentId && content2) {
216242
+ playSpeech(messageId, agentId, content2);
216243
+ }
216244
+ };
216245
+ const handleReplay = () => {
216246
+ replaySpeech(messageId);
216247
+ };
216248
+ const handleStop = () => {
216249
+ stopSpeech();
216250
+ };
216251
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ControlsContainer, { isUser, className: "message-controls", sx, children: showCopyButton && /* @__PURE__ */ jsxRuntimeExports.jsxs(ControlsWrapper$1, { children: [
216252
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: copied ? "Copied!" : "Copy message", placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledIconButton$1, { size: "small", onClick: handleCopy, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { size: 16 }) }) }),
216253
+ !isUser && (isPlaying ? /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Stop", placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledIconButton$1, { size: "small", onClick: handleStop, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Square, { size: 16 }) }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
216254
+ Tooltip$1,
216255
+ {
216256
+ title: !canEnableSpeechFeature ? "Sign in to Radient in the settings page to enable text to speech" : isLoading ? "Loading" : hasAudio ? "Replay Speech" : "Speak Aloud",
216257
+ placement: "top",
216258
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
216259
+ StyledIconButton$1,
216260
+ {
216261
+ size: "small",
216262
+ onClick: hasAudio ? handleReplay : handlePlay,
216263
+ disabled: isLoading || !canEnableSpeechFeature,
216264
+ children: isLoading ? /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 16 }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Volume2, { size: 16 })
216265
+ }
216266
+ ) })
216267
+ }
216268
+ ))
216269
+ ] }) });
215470
216270
  };
215471
216271
  const formatMessageDateTime = (dateTimeString) => {
215472
216272
  if (!dateTimeString) return "";
@@ -215879,6 +216679,113 @@ const StreamingMessage = ({
215879
216679
  );
215880
216680
  };
215881
216681
  StreamingMessage.displayName = "StreamingMessage";
216682
+ const ControlsWrapper = styled$1(Box)(({ theme: theme2 }) => ({
216683
+ position: "absolute",
216684
+ backgroundColor: theme2.palette.background.paper,
216685
+ borderRadius: "4px",
216686
+ boxShadow: theme2.shadows[3],
216687
+ zIndex: 10,
216688
+ padding: 4,
216689
+ border: `1px solid ${theme2.palette.divider}`
216690
+ }));
216691
+ const StyledIconButton = styled$1(IconButton)(({ theme: theme2 }) => ({
216692
+ color: theme2.palette.text.secondary,
216693
+ width: "34px",
216694
+ height: "34px",
216695
+ padding: 0,
216696
+ margin: 0,
216697
+ "&:hover": {
216698
+ color: theme2.palette.primary.main,
216699
+ backgroundColor: alpha$1(theme2.palette.primary.main, 0.1)
216700
+ }
216701
+ }));
216702
+ const TextSelectionControls = ({
216703
+ agentId,
216704
+ targetRef,
216705
+ isUser
216706
+ }) => {
216707
+ const [selection2, setSelection] = reactExports.useState({ text: "", rect: null });
216708
+ const { playSpeech, stopSpeech, loadingMessageId, playingMessageId } = useSpeechStore();
216709
+ const { data: credentialsData, isLoading: isLoadingCredentials } = useCredentials();
216710
+ const isRadientApiKeyConfigured = reactExports.useMemo(
216711
+ () => credentialsData?.keys?.includes("RADIENT_API_KEY"),
216712
+ [credentialsData?.keys]
216713
+ );
216714
+ const canEnableSpeechFeature = reactExports.useMemo(
216715
+ () => isRadientApiKeyConfigured && !isLoadingCredentials,
216716
+ [isRadientApiKeyConfigured, isLoadingCredentials]
216717
+ );
216718
+ const [currentSelectionId, setCurrentSelectionId] = reactExports.useState(
216719
+ null
216720
+ );
216721
+ const isPlaying = playingMessageId && playingMessageId === currentSelectionId;
216722
+ const isLoading = loadingMessageId && loadingMessageId === currentSelectionId;
216723
+ const handleMouseUp = reactExports.useCallback(() => {
216724
+ if (!targetRef.current) {
216725
+ setSelection({ text: "", rect: null });
216726
+ return;
216727
+ }
216728
+ const sel = window.getSelection();
216729
+ if (sel && sel.rangeCount > 0 && !sel.isCollapsed && targetRef.current.contains(sel.anchorNode)) {
216730
+ const range3 = sel.getRangeAt(0);
216731
+ const rect2 = range3.getBoundingClientRect();
216732
+ const text4 = sel.toString().trim();
216733
+ if (text4) {
216734
+ setSelection({ text: text4, rect: rect2 });
216735
+ } else {
216736
+ setSelection({ text: "", rect: null });
216737
+ }
216738
+ } else {
216739
+ setSelection({ text: "", rect: null });
216740
+ }
216741
+ }, [targetRef]);
216742
+ reactExports.useEffect(() => {
216743
+ const handleMouseUpEvent = () => {
216744
+ setTimeout(handleMouseUp, 0);
216745
+ };
216746
+ document.addEventListener("mouseup", handleMouseUpEvent);
216747
+ return () => {
216748
+ document.removeEventListener("mouseup", handleMouseUpEvent);
216749
+ };
216750
+ }, [handleMouseUp]);
216751
+ const handlePlay = () => {
216752
+ if (agentId && selection2.text) {
216753
+ const newSelectionId = v4();
216754
+ setCurrentSelectionId(newSelectionId);
216755
+ playSpeech(newSelectionId, agentId, selection2.text);
216756
+ }
216757
+ };
216758
+ const handleStop = () => {
216759
+ stopSpeech();
216760
+ };
216761
+ if (!selection2.rect || !selection2.text || isUser) {
216762
+ return null;
216763
+ }
216764
+ const containerRect = targetRef.current?.getBoundingClientRect();
216765
+ if (!containerRect) return null;
216766
+ const style2 = {
216767
+ top: selection2.rect.top - containerRect.top - 52,
216768
+ // Position above selection
216769
+ left: selection2.rect.left - containerRect.left
216770
+ // Align with the left of the selection
216771
+ };
216772
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ControlsWrapper, { style: style2, children: isPlaying ? /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Stop", placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledIconButton, { size: "small", onClick: handleStop, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Square, { size: 14 }) }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
216773
+ Tooltip$1,
216774
+ {
216775
+ title: isLoading ? "Loading" : !canEnableSpeechFeature ? "Sign in to Radient in the settings page to enable text to speech" : "Speak Aloud",
216776
+ placement: "top",
216777
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
216778
+ StyledIconButton,
216779
+ {
216780
+ size: "small",
216781
+ onClick: handlePlay,
216782
+ disabled: isLoading || !agentId || !canEnableSpeechFeature,
216783
+ children: isLoading ? /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 14 }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Volume2, { size: 14 })
216784
+ }
216785
+ ) })
216786
+ }
216787
+ ) });
216788
+ };
215882
216789
  const StyledPaper$1 = styled$1(Paper)(({ theme: theme2 }) => ({
215883
216790
  [theme2.breakpoints.down("sm")]: {
215884
216791
  maxWidth: "85%"
@@ -215905,9 +216812,11 @@ const MessagePaper = ({
215905
216812
  message: message2,
215906
216813
  onMessageComplete,
215907
216814
  isLastMessage,
215908
- isJobRunning
216815
+ isJobRunning,
216816
+ agentId
215909
216817
  }) => {
215910
216818
  const theme2 = useTheme$2();
216819
+ const messageContentRef = reactExports.useRef(null);
215911
216820
  if (isUser) {
215912
216821
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
215913
216822
  Box,
@@ -215932,10 +216841,18 @@ const MessagePaper = ({
215932
216841
  boxShadow: theme2.palette.userMessage.shadow,
215933
216842
  color: theme2.palette.text.primary
215934
216843
  },
215935
- children: children2
216844
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { ref: messageContentRef, sx: { position: "relative" }, children: children2 })
215936
216845
  }
215937
216846
  ),
215938
- /* @__PURE__ */ jsxRuntimeExports.jsx(MessageControls, { isUser, content: content2 })
216847
+ message2 && /* @__PURE__ */ jsxRuntimeExports.jsx(
216848
+ MessageControls,
216849
+ {
216850
+ isUser,
216851
+ content: content2,
216852
+ messageId: message2.id,
216853
+ agentId
216854
+ }
216855
+ )
215939
216856
  ]
215940
216857
  }
215941
216858
  );
@@ -216018,7 +216935,7 @@ const MessagePaper = ({
216018
216935
  }, []);
216019
216936
  const regularMessageComponents = reactExports.useMemo(() => {
216020
216937
  if (isStreamable && isJobRunning || !message2) return null;
216021
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: messageStyles, children: [
216938
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: messageStyles, ref: messageContentRef, children: [
216022
216939
  message2.thinking && !isUser && /* @__PURE__ */ jsxRuntimeExports.jsx(
216023
216940
  ExpandableThinkingContent,
216024
216941
  {
@@ -216028,7 +216945,16 @@ const MessagePaper = ({
216028
216945
  onCollapse: handleThinkingCollapse
216029
216946
  }
216030
216947
  ),
216031
- filteredChildren
216948
+ filteredChildren,
216949
+ message2 && /* @__PURE__ */ jsxRuntimeExports.jsx(
216950
+ TextSelectionControls,
216951
+ {
216952
+ messageId: message2.id,
216953
+ agentId,
216954
+ targetRef: messageContentRef,
216955
+ isUser
216956
+ }
216957
+ )
216032
216958
  ] });
216033
216959
  }, [
216034
216960
  isStreamable,
@@ -216040,8 +216966,9 @@ const MessagePaper = ({
216040
216966
  isThinkingExpanded,
216041
216967
  handleThinkingExpand,
216042
216968
  // Added
216043
- handleThinkingCollapse
216969
+ handleThinkingCollapse,
216044
216970
  // Added
216971
+ agentId
216045
216972
  ]);
216046
216973
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
216047
216974
  Box,
@@ -216072,11 +216999,13 @@ const MessagePaper = ({
216072
216999
  }
216073
217000
  }
216074
217001
  ),
216075
- /* @__PURE__ */ jsxRuntimeExports.jsx(
217002
+ message2 && /* @__PURE__ */ jsxRuntimeExports.jsx(
216076
217003
  MessageControls,
216077
217004
  {
216078
217005
  isUser,
216079
217006
  content: content2,
217007
+ messageId: message2.id,
217008
+ agentId,
216080
217009
  sx: {
216081
217010
  // When streaming, force opacity 0 and disable pointer events.
216082
217011
  // This inline style for opacity will override the parent's hover rule.
@@ -216182,16 +217111,32 @@ const isVideo = (path2) => {
216182
217111
  const lowerPath = path2.toLowerCase();
216183
217112
  return videoExtensions.some((ext) => lowerPath.endsWith(ext));
216184
217113
  };
216185
- const getAttachmentUrl = (client, path2) => {
217114
+ const isAudio = (path2) => {
217115
+ const audioExtensions = [
217116
+ ".mp3",
217117
+ ".wav",
217118
+ ".ogg",
217119
+ ".aac",
217120
+ ".flac",
217121
+ ".m4a",
217122
+ ".aiff"
217123
+ ];
217124
+ const lowerPath = path2.toLowerCase();
217125
+ return audioExtensions.some((ext) => lowerPath.endsWith(ext));
217126
+ };
217127
+ const getAttachmentUrl = (client2, path2) => {
216186
217128
  if (path2.startsWith("http")) {
216187
217129
  return path2;
216188
217130
  }
216189
217131
  const normalizedPath = path2.startsWith("file://") ? path2 : `file://${path2}`;
216190
217132
  if (isImage(path2)) {
216191
- return client.static.getImageUrl(normalizedPath);
217133
+ return client2.static.getImageUrl(normalizedPath);
216192
217134
  }
216193
217135
  if (isVideo(path2)) {
216194
- return client.static.getVideoUrl(normalizedPath);
217136
+ return client2.static.getVideoUrl(normalizedPath);
217137
+ }
217138
+ if (isAudio(path2)) {
217139
+ return client2.static.getAudioUrl(normalizedPath);
216195
217140
  }
216196
217141
  return path2;
216197
217142
  };
@@ -216212,7 +217157,7 @@ const MessageItem = reactExports.memo(
216212
217157
  if (fileString.startsWith("data:")) {
216213
217158
  return null;
216214
217159
  }
216215
- const title = getFileName$4(fileString);
217160
+ const title = getFileName$3(fileString);
216216
217161
  const fileType = getFileTypeFromPath(fileString);
216217
217162
  const normalizedPath = fileString.startsWith("file://") ? fileString.substring(7) : fileString;
216218
217163
  const id27 = normalizedPath;
@@ -216231,12 +217176,12 @@ const MessageItem = reactExports.memo(
216231
217176
  }
216232
217177
  }
216233
217178
  }, [message2.files, conversationId, addMentionedFilesBatch]);
216234
- const client = reactExports.useMemo(() => {
217179
+ const client2 = reactExports.useMemo(() => {
216235
217180
  return createLocalOperatorClient(apiConfig.baseUrl);
216236
217181
  }, []);
216237
217182
  const getUrl2 = reactExports.useCallback(
216238
- (path2) => getAttachmentUrl(client, path2),
216239
- [client]
217183
+ (path2) => getAttachmentUrl(client2, path2),
217184
+ [client2]
216240
217185
  );
216241
217186
  const handleFileClick = reactExports.useCallback(async (filePath) => {
216242
217187
  try {
@@ -216274,6 +217219,7 @@ const MessageItem = reactExports.memo(
216274
217219
  onMessageComplete,
216275
217220
  isLastMessage: isLastMessage ?? false,
216276
217221
  isJobRunning: !!currentExecution,
217222
+ agentId: conversationId,
216277
217223
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(
216278
217224
  ActionBlock,
216279
217225
  {
@@ -216308,6 +217254,7 @@ const MessageItem = reactExports.memo(
216308
217254
  onMessageComplete,
216309
217255
  isLastMessage: isLastMessage ?? false,
216310
217256
  isJobRunning: !!currentExecution,
217257
+ agentId: conversationId,
216311
217258
  children: [
216312
217259
  message2.files && message2.files.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { mb: 2 }, children: message2.files.filter((file) => isImage(file)).map((file) => /* @__PURE__ */ jsxRuntimeExports.jsx(
216313
217260
  ImageAttachment,
@@ -216371,6 +217318,7 @@ const MessageItem = reactExports.memo(
216371
217318
  onMessageComplete,
216372
217319
  isLastMessage: isLastMessage ?? false,
216373
217320
  isJobRunning: !!currentExecution,
217321
+ agentId: conversationId,
216374
217322
  children: [
216375
217323
  message2.files && message2.files.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { mb: 2 }, children: message2.files.filter((file) => isImage(file)).map((file) => /* @__PURE__ */ jsxRuntimeExports.jsx(
216376
217324
  ImageAttachment,
@@ -216392,6 +217340,14 @@ const MessageItem = reactExports.memo(
216392
217340
  },
216393
217341
  `${message2.id}-${file}`
216394
217342
  )) }),
217343
+ message2.files && message2.files.length > 0 && message2.files.some((file) => isAudio(file)) && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { mb: 2 }, children: message2.files.filter((file) => isAudio(file)).map((file) => /* @__PURE__ */ jsxRuntimeExports.jsx(
217344
+ AudioAttachment,
217345
+ {
217346
+ content: getUrl2(file),
217347
+ isUser
217348
+ },
217349
+ `${message2.id}-${file}`
217350
+ )) }),
216395
217351
  message2.message && !(message2.is_streamable && !message2.is_complete) && /* @__PURE__ */ jsxRuntimeExports.jsx(MessageContent, { content: message2.message, isUser }),
216396
217352
  (() => {
216397
217353
  const hasCollapsibleContent = isAction2 && (message2.code || message2.stdout || message2.stderr || message2.logging);
@@ -216413,7 +217369,9 @@ const MessageItem = reactExports.memo(
216413
217369
  }
216414
217370
  return contentBlocks;
216415
217371
  })(),
216416
- message2.files && message2.files.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { mt: 2 }, children: message2.files.filter((file) => !isImage(file) && !isVideo(file)).map((file) => /* @__PURE__ */ jsxRuntimeExports.jsx(
217372
+ message2.files && message2.files.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { mt: 2 }, children: message2.files.filter(
217373
+ (file) => !isImage(file) && !isVideo(file) && !isAudio(file)
217374
+ ).map((file) => /* @__PURE__ */ jsxRuntimeExports.jsx(
216417
217375
  FileAttachment,
216418
217376
  {
216419
217377
  file,
@@ -218060,20 +219018,17 @@ const CommandPalette = () => {
218060
219018
  isCanvasOpen,
218061
219019
  setCanvasOpen,
218062
219020
  isCreateAgentDialogOpen,
218063
- // Use global state
218064
219021
  openCreateAgentDialog,
218065
- // Use global action
218066
219022
  closeCreateAgentDialog
218067
- // Use global action
218068
219023
  } = useUiPreferencesStore();
218069
219024
  const { agentId: currentAgentIdFromRoute } = useAgentRouteParam();
218070
219025
  const { getLastAgentId } = useAgentSelectionStore();
218071
- const { data: agentsData } = useAgents(1, 20);
219026
+ const [localQuery, setLocalQuery] = reactExports.useState(commandPaletteQuery);
219027
+ const debouncedLocalQuery = useDebounce(localQuery, 200);
219028
+ const { data: agentsData } = useAgents(1, 10, 0, debouncedLocalQuery);
218072
219029
  const theme2 = useTheme$2();
218073
219030
  const clearConversationMutation = useClearAgentConversation();
218074
219031
  const [selectedIndex, setSelectedIndex] = reactExports.useState(0);
218075
- const [localQuery, setLocalQuery] = reactExports.useState(commandPaletteQuery);
218076
- const debouncedLocalQuery = useDebounce(localQuery, 200);
218077
219032
  const [isClearConfirmationOpen, setIsClearConfirmationOpen] = reactExports.useState(false);
218078
219033
  const effectiveAgentId = currentAgentIdFromRoute || getLastAgentId("chat");
218079
219034
  const isOnChatPage = location2.pathname.startsWith("/chat");