local-operator-ui 0.10.4 → 0.10.5

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 (46) hide show
  1. package/out/main/index.jsc +0 -0
  2. package/out/preload/index.jsc +0 -0
  3. package/out/renderer/assets/{_basePickBy-HBztaYeO.js → _basePickBy-J6QOPIw6.js} +2 -2
  4. package/out/renderer/assets/{_baseUniq-Dz-_QJw-.js → _baseUniq-CjrpCuGP.js} +1 -1
  5. package/out/renderer/assets/{arc-BbFClCF-.js → arc-B9dHmVa3.js} +1 -1
  6. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-DzXvnk9f.js → architectureDiagram-IEHRJDOE-iZe3FGai.js} +7 -7
  7. package/out/renderer/assets/{blockDiagram-JOT3LUYC-boa_T8E1.js → blockDiagram-JOT3LUYC-Ct7Hjgdp.js} +5 -5
  8. package/out/renderer/assets/{c4Diagram-VJAJSXHY-CUWQVTBw.js → c4Diagram-VJAJSXHY-DPAI5Oul.js} +2 -2
  9. package/out/renderer/assets/{channel-BnLrRohu.js → channel-kBkjl2tX.js} +1 -1
  10. package/out/renderer/assets/{chunk-4BMEZGHF-C5nHFO1H.js → chunk-4BMEZGHF-BbIA2hPK.js} +1 -1
  11. package/out/renderer/assets/{chunk-A2AXSNBT-YCzWQkj3.js → chunk-A2AXSNBT-ChTSPi_g.js} +2 -2
  12. package/out/renderer/assets/{chunk-AEK57VVT-RSKL44QH.js → chunk-AEK57VVT-CbZX12yb.js} +2 -2
  13. package/out/renderer/assets/{chunk-D6G4REZN-y_oEq-tO.js → chunk-D6G4REZN-hnXFWy0U.js} +1 -1
  14. package/out/renderer/assets/{chunk-RZ5BOZE2-Bh5Vf1hk.js → chunk-RZ5BOZE2-DJGZKKsw.js} +1 -1
  15. package/out/renderer/assets/{chunk-XZIHB7SX-BEC6jdKb.js → chunk-XZIHB7SX-Ui8w9_LJ.js} +1 -1
  16. package/out/renderer/assets/{classDiagram-GIVACNV2-D_MSeJ_6.js → classDiagram-GIVACNV2-B-m9p15O.js} +3 -3
  17. package/out/renderer/assets/{classDiagram-v2-COTLJTTW-D_MSeJ_6.js → classDiagram-v2-COTLJTTW-B-m9p15O.js} +3 -3
  18. package/out/renderer/assets/{clone-DTo9NJBP.js → clone-D3nlta8f.js} +1 -1
  19. package/out/renderer/assets/{dagre-OKDRZEBW-BRmuP5ne.js → dagre-OKDRZEBW-CuBbVbAE.js} +6 -6
  20. package/out/renderer/assets/{diagram-SSKATNLV-lmqZ5zjv.js → diagram-SSKATNLV-Ddt-5-58.js} +6 -6
  21. package/out/renderer/assets/{diagram-VNBRO52H-Bxh5b-em.js → diagram-VNBRO52H-CptIzsnS.js} +6 -6
  22. package/out/renderer/assets/{erDiagram-Q7BY3M3F-B_3VyDfP.js → erDiagram-Q7BY3M3F-hAtjkKRt.js} +3 -3
  23. package/out/renderer/assets/{flowDiagram-4HSFHLVR-DO9xIDx0.js → flowDiagram-4HSFHLVR-COKwAFv7.js} +3 -3
  24. package/out/renderer/assets/{ganttDiagram-APWFNJXF-BK37zBtS.js → ganttDiagram-APWFNJXF-DzqtejzU.js} +1 -1
  25. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-Jz6QBGPa.js → gitGraphDiagram-7IBYFJ6S-CCkiOue7.js} +7 -7
  26. package/out/renderer/assets/{graph-DzxdEvr-.js → graph-D_O_nUCU.js} +2 -2
  27. package/out/renderer/assets/{index-BcAunMPD.js → index-BkfYRfhG.js} +1 -1
  28. package/out/renderer/assets/{index-DSUSTpnZ.js → index-C0xVwDO6.js} +1909 -245
  29. package/out/renderer/assets/{index-9ll8evaS.js → index-DyCWQ6pn.js} +1 -1
  30. package/out/renderer/assets/{infoDiagram-PH2N3AL5-BrTEa3Dg.js → infoDiagram-PH2N3AL5-D2pi_Avu.js} +5 -5
  31. package/out/renderer/assets/{journeyDiagram-U35MCT3I-cp-7j6JH.js → journeyDiagram-U35MCT3I-CYV7gt8_.js} +3 -3
  32. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-DT0Ds4_6.js → kanban-definition-NDS4AKOZ-z_jHtS3N.js} +1 -1
  33. package/out/renderer/assets/{layout-RVhCHjA1.js → layout-DgQHyz0Y.js} +4 -4
  34. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-B8ntf-YJ.js → mindmap-definition-ALO5MXBD-ByeOpUXU.js} +1 -1
  35. package/out/renderer/assets/{pieDiagram-IB7DONF6-D_aSId8t.js → pieDiagram-IB7DONF6-CzpV9GLV.js} +7 -7
  36. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-VtpoaDCW.js → quadrantDiagram-7GDLP6J5-TRIu05Kz.js} +1 -1
  37. package/out/renderer/assets/{radar-MK3ICKWK-Bvvn6bXt.js → radar-MK3ICKWK-DNJgoIIb.js} +4 -4
  38. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-DmQX7SmX.js → requirementDiagram-KVF5MWMF-DtZxlcxe.js} +2 -2
  39. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-DH2kTl35.js → sankeyDiagram-QLVOVGJD-CsDA2pgF.js} +1 -1
  40. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-Cy6jqgLY.js → sequenceDiagram-X6HHIX6F-DXZSfjCv.js} +3 -3
  41. package/out/renderer/assets/{stateDiagram-DGXRK772-B5sjzMc3.js → stateDiagram-DGXRK772-gJvvYfHT.js} +7 -7
  42. package/out/renderer/assets/{stateDiagram-v2-YXO3MK2T-CCntK586.js → stateDiagram-v2-YXO3MK2T-DUjC-b8t.js} +3 -3
  43. package/out/renderer/assets/{timeline-definition-BDJGKUSR-B24Z4NA2.js → timeline-definition-BDJGKUSR-DpFxQaCe.js} +2 -2
  44. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-gjn-8kXQ.js → xychartDiagram-VJFVF3MP-BWFbhKHp.js} +1 -1
  45. package/out/renderer/index.html +1 -1
  46. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-9ll8evaS.js","./fonts-Bb3Axuvj.js","./fonts-B9KBGB-g.css","./index-BcAunMPD.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js","./dagre-OKDRZEBW-BRmuP5ne.js","./graph-DzxdEvr-.js","./_baseUniq-Dz-_QJw-.js","./layout-RVhCHjA1.js","./_basePickBy-HBztaYeO.js","./clone-DTo9NJBP.js","./c4Diagram-VJAJSXHY-CUWQVTBw.js","./chunk-D6G4REZN-y_oEq-tO.js","./flowDiagram-4HSFHLVR-DO9xIDx0.js","./chunk-RZ5BOZE2-Bh5Vf1hk.js","./channel-BnLrRohu.js","./erDiagram-Q7BY3M3F-B_3VyDfP.js","./gitGraphDiagram-7IBYFJ6S-Jz6QBGPa.js","./chunk-4BMEZGHF-C5nHFO1H.js","./chunk-XZIHB7SX-BEC6jdKb.js","./radar-MK3ICKWK-Bvvn6bXt.js","./ganttDiagram-APWFNJXF-BK37zBtS.js","./infoDiagram-PH2N3AL5-BrTEa3Dg.js","./pieDiagram-IB7DONF6-D_aSId8t.js","./arc-BbFClCF-.js","./quadrantDiagram-7GDLP6J5-VtpoaDCW.js","./xychartDiagram-VJFVF3MP-gjn-8kXQ.js","./requirementDiagram-KVF5MWMF-DmQX7SmX.js","./sequenceDiagram-X6HHIX6F-Cy6jqgLY.js","./classDiagram-GIVACNV2-D_MSeJ_6.js","./chunk-A2AXSNBT-YCzWQkj3.js","./classDiagram-v2-COTLJTTW-D_MSeJ_6.js","./stateDiagram-DGXRK772-B5sjzMc3.js","./chunk-AEK57VVT-RSKL44QH.js","./stateDiagram-v2-YXO3MK2T-CCntK586.js","./journeyDiagram-U35MCT3I-cp-7j6JH.js","./timeline-definition-BDJGKUSR-B24Z4NA2.js","./mindmap-definition-ALO5MXBD-B8ntf-YJ.js","./cytoscape.esm-C0AOj4uS.js","./kanban-definition-NDS4AKOZ-DT0Ds4_6.js","./sankeyDiagram-QLVOVGJD-DH2kTl35.js","./diagram-VNBRO52H-Bxh5b-em.js","./diagram-SSKATNLV-lmqZ5zjv.js","./blockDiagram-JOT3LUYC-boa_T8E1.js","./architectureDiagram-IEHRJDOE-DzXvnk9f.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-DyCWQ6pn.js","./fonts-Bb3Axuvj.js","./fonts-B9KBGB-g.css","./index-BkfYRfhG.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js","./dagre-OKDRZEBW-CuBbVbAE.js","./graph-D_O_nUCU.js","./_baseUniq-CjrpCuGP.js","./layout-DgQHyz0Y.js","./_basePickBy-J6QOPIw6.js","./clone-D3nlta8f.js","./c4Diagram-VJAJSXHY-DPAI5Oul.js","./chunk-D6G4REZN-hnXFWy0U.js","./flowDiagram-4HSFHLVR-COKwAFv7.js","./chunk-RZ5BOZE2-DJGZKKsw.js","./channel-kBkjl2tX.js","./erDiagram-Q7BY3M3F-hAtjkKRt.js","./gitGraphDiagram-7IBYFJ6S-CCkiOue7.js","./chunk-4BMEZGHF-BbIA2hPK.js","./chunk-XZIHB7SX-Ui8w9_LJ.js","./radar-MK3ICKWK-DNJgoIIb.js","./ganttDiagram-APWFNJXF-DzqtejzU.js","./infoDiagram-PH2N3AL5-D2pi_Avu.js","./pieDiagram-IB7DONF6-CzpV9GLV.js","./arc-B9dHmVa3.js","./quadrantDiagram-7GDLP6J5-TRIu05Kz.js","./xychartDiagram-VJFVF3MP-BWFbhKHp.js","./requirementDiagram-KVF5MWMF-DtZxlcxe.js","./sequenceDiagram-X6HHIX6F-DXZSfjCv.js","./classDiagram-GIVACNV2-B-m9p15O.js","./chunk-A2AXSNBT-ChTSPi_g.js","./classDiagram-v2-COTLJTTW-B-m9p15O.js","./stateDiagram-DGXRK772-gJvvYfHT.js","./chunk-AEK57VVT-CbZX12yb.js","./stateDiagram-v2-YXO3MK2T-DUjC-b8t.js","./journeyDiagram-U35MCT3I-CYV7gt8_.js","./timeline-definition-BDJGKUSR-DpFxQaCe.js","./mindmap-definition-ALO5MXBD-ByeOpUXU.js","./cytoscape.esm-C0AOj4uS.js","./kanban-definition-NDS4AKOZ-z_jHtS3N.js","./sankeyDiagram-QLVOVGJD-CsDA2pgF.js","./diagram-VNBRO52H-CptIzsnS.js","./diagram-SSKATNLV-Ddt-5-58.js","./blockDiagram-JOT3LUYC-Ct7Hjgdp.js","./architectureDiagram-IEHRJDOE-iZe3FGai.js"])))=>i.map(i=>d[i]);
2
2
  import { i as createStyled, l as resolveProps, m as useTheme, n as useTheme$1, r as reactExports, o as React, p as useEnhancedEffect$1, q as clsx, t as useForkRef$1, v as extendSxProp, j as jsxRuntimeExports, w as handleBreakpoints, x as resolveBreakpointValues, y as createUnarySpacing, z as deepmerge, A as mergeBreakpointsInOrder, F as composeClasses$1, G as generateUtilityClass$1, I as createTheme$1, J as getValue$1, h as React$1, K as requireReactDom, g as getDefaultExportFromCjs, L as defaultTheme$2, M as THEME_ID, N as generateUtilityClasses$1, O as useDefaultProps, s as styled$1, P as capitalize$1, Q as memoTheme, _ as _inheritsLoose, S as _objectWithoutPropertiesLoose$k, U as TransitionGroupContext, V as _extends$w, W as duration, u as useTheme$2, X as useTimeout$1, Y as useId$1, Z as ButtonBase, b as alpha$1, $ as createSimplePaletteValueFilter, a0 as CircularProgress, a1 as Paper, a2 as darken$1, a3 as lighten$1, a4 as useEventCallback$1, a5 as useRtl, a6 as globalCss, a7 as formatMuiErrorMessage$1, a8 as rootShouldForwardProp, T as Typography, a9 as css$1, k as keyframes, aa as getPath$2, ab as isFocusVisible, ac as typographyClasses, ad as slotShouldForwardProp, ae as clamp, af as emphasize, ag as Timeout$1, c as createLucideIcon, a as Button, B as Box, ah as FontAwesomeIcon, ai as faExclamationTriangle, D as DEFAULT_THEME, aj as faChevronLeft, ak as faChevronRight, al as faRobot, am as faCheck, an as faTimes, ao as faEraser, ap as faPen, aq as faFileImport, ar as faUpload, as as GlobalStyles, at as requireReact, au as faComment, av as faSave, aw as faEdit, ax as faTrashAlt, ay as faInfoCircle, az as faGear, aA as faPlus, aB as faServer, aC as faStar, aD as faTag, aE as faIdCard, aF as faCalendarAlt, aG as faCodeBranch, aH as faShieldAlt, aI as faArrowLeft, aJ as faClock, C as Code, aK as faSliders, aL as faTrash, aM as faHome, aN as faDownload, aO as faFileAlt, aP as faDesktop, aQ as faImage, aR as faMusic, aS as faVideo, aT as faLaptop, aU as faUsers, aV as faDatabase, aW as faBoxOpen, aX as faBook, aY as faHdd, aZ as faBox, a_ as faArchive, a$ as faNetworkWired, b0 as faFolder, b1 as faFolderOpen, b2 as faFolderTree, b3 as faArrowDown, b4 as faPaperclip, b5 as faStop, b6 as faPaperPlane, b7 as faFile, b8 as faExclamationCircle, b9 as faChevronDown, ba as isDevelopmentMode, bb as faCommentSlash, bc as faArrowRight, bd as faBrain, be as faWandMagicSparkles, bf as faExternalLinkAlt, bg as faKey, bh as radientTheme, bi as faGlobe, bj as faSearch, bk as PropTypes, bl as shouldForwardProp, bm as TransitionGroup, bn as commonjsGlobal, bo as faLock, bp as faPuzzlePiece, H as HardDrive, bq as faSignOut, br as themes$1, bs as faMoon, bt as faSun, bu as faHexagonNodes, bv as faSkull, bw as faLeaf, bx as faCode, by as faMountain, bz as faFire, bA as faIcicles, bB as faBolt, bC as faAdjust, bD as faWaveSquare, bE as faUser, bF as faEnvelope, bG as faHistory, bH as faListAlt, bI as faCreditCard, bJ as faPlusCircle, bK as faChartLine, bL as faShield, bM as library$1, bN as icons$1, f as CssBaseline, e as ThemeProvider$1, d as getTheme, R as ReactDOM$1, E as ErrorBoundary } from "./fonts-Bb3Axuvj.js";
3
3
  const styled = createStyled();
4
4
  function getThemeProps(params) {
@@ -28688,6 +28688,140 @@ const AgentsApi = {
28688
28688
  throw new Error(errorDetail);
28689
28689
  }
28690
28690
  return response.json();
28691
+ },
28692
+ /**
28693
+ * List agent execution variables
28694
+ * Retrieve all execution variables for a specific agent.
28695
+ *
28696
+ * @param baseUrl - The base URL of the Local Operator API
28697
+ * @param agentId - ID of the agent
28698
+ * @returns Promise resolving to the execution variables list response
28699
+ */
28700
+ async listAgentExecutionVariables(baseUrl, agentId) {
28701
+ const response = await fetch(
28702
+ `${baseUrl}/v1/agents/${agentId}/execution-variables`,
28703
+ {
28704
+ method: "GET",
28705
+ headers: {
28706
+ Accept: "application/json"
28707
+ }
28708
+ }
28709
+ );
28710
+ if (!response.ok) {
28711
+ throw new Error(
28712
+ `List agent execution variables request failed: ${response.status} ${response.statusText}`
28713
+ );
28714
+ }
28715
+ return response.json();
28716
+ },
28717
+ /**
28718
+ * Create an agent execution variable
28719
+ * Create a new execution variable for a specific agent.
28720
+ *
28721
+ * @param baseUrl - The base URL of the Local Operator API
28722
+ * @param agentId - ID of the agent
28723
+ * @param variableData - The execution variable data to create
28724
+ * @returns Promise resolving to the created execution variable response
28725
+ */
28726
+ async createAgentExecutionVariable(baseUrl, agentId, variableData) {
28727
+ const response = await fetch(
28728
+ `${baseUrl}/v1/agents/${agentId}/execution-variables`,
28729
+ {
28730
+ method: "POST",
28731
+ headers: {
28732
+ "Content-Type": "application/json",
28733
+ Accept: "application/json"
28734
+ },
28735
+ body: JSON.stringify(variableData)
28736
+ }
28737
+ );
28738
+ if (!response.ok) {
28739
+ throw new Error(
28740
+ `Create agent execution variable request failed: ${response.status} ${response.statusText}`
28741
+ );
28742
+ }
28743
+ return response.json();
28744
+ },
28745
+ /**
28746
+ * Get an agent execution variable
28747
+ * Retrieve a specific execution variable for an agent by its key.
28748
+ *
28749
+ * @param baseUrl - The base URL of the Local Operator API
28750
+ * @param agentId - ID of the agent
28751
+ * @param variableKey - Key of the execution variable
28752
+ * @returns Promise resolving to the execution variable response
28753
+ */
28754
+ async getAgentExecutionVariable(baseUrl, agentId, variableKey) {
28755
+ const response = await fetch(
28756
+ `${baseUrl}/v1/agents/${agentId}/execution-variables/${variableKey}`,
28757
+ {
28758
+ method: "GET",
28759
+ headers: {
28760
+ Accept: "application/json"
28761
+ }
28762
+ }
28763
+ );
28764
+ if (!response.ok) {
28765
+ throw new Error(
28766
+ `Get agent execution variable request failed: ${response.status} ${response.statusText}`
28767
+ );
28768
+ }
28769
+ return response.json();
28770
+ },
28771
+ /**
28772
+ * Update an agent execution variable
28773
+ * Update an existing execution variable for a specific agent.
28774
+ *
28775
+ * @param baseUrl - The base URL of the Local Operator API
28776
+ * @param agentId - ID of the agent
28777
+ * @param variableKey - Key of the execution variable to update
28778
+ * @param variableData - The execution variable data to update
28779
+ * @returns Promise resolving to the updated execution variable response
28780
+ */
28781
+ async updateAgentExecutionVariable(baseUrl, agentId, variableKey, variableData) {
28782
+ const response = await fetch(
28783
+ `${baseUrl}/v1/agents/${agentId}/execution-variables/${variableKey}`,
28784
+ {
28785
+ method: "PATCH",
28786
+ headers: {
28787
+ "Content-Type": "application/json",
28788
+ Accept: "application/json"
28789
+ },
28790
+ body: JSON.stringify(variableData)
28791
+ }
28792
+ );
28793
+ if (!response.ok) {
28794
+ throw new Error(
28795
+ `Update agent execution variable request failed: ${response.status} ${response.statusText}`
28796
+ );
28797
+ }
28798
+ return response.json();
28799
+ },
28800
+ /**
28801
+ * Delete an agent execution variable
28802
+ * Delete an execution variable for a specific agent by its key.
28803
+ *
28804
+ * @param baseUrl - The base URL of the Local Operator API
28805
+ * @param agentId - ID of the agent
28806
+ * @param variableKey - Key of the execution variable to delete
28807
+ * @returns Promise resolving to the deletion response
28808
+ */
28809
+ async deleteAgentExecutionVariable(baseUrl, agentId, variableKey) {
28810
+ const response = await fetch(
28811
+ `${baseUrl}/v1/agents/${agentId}/execution-variables/${variableKey}`,
28812
+ {
28813
+ method: "DELETE",
28814
+ headers: {
28815
+ Accept: "application/json"
28816
+ }
28817
+ }
28818
+ );
28819
+ if (!response.ok) {
28820
+ throw new Error(
28821
+ `Delete agent execution variable request failed: ${response.status} ${response.statusText}`
28822
+ );
28823
+ }
28824
+ return response.json();
28691
28825
  }
28692
28826
  };
28693
28827
  const ChatApi = {
@@ -35822,30 +35956,30 @@ const useAgentSelectionStore = create$3()(
35822
35956
  * This source code is licensed under the ISC license.
35823
35957
  * See the LICENSE file in the root directory of this source tree.
35824
35958
  */
35825
- const __iconNode$1g = [
35959
+ const __iconNode$1l = [
35826
35960
  ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
35827
35961
  ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
35828
35962
  ["path", { d: "M10 12h4", key: "a56b0p" }]
35829
35963
  ];
35830
- const Archive = createLucideIcon("archive", __iconNode$1g);
35964
+ const Archive = createLucideIcon("archive", __iconNode$1l);
35831
35965
  /**
35832
35966
  * @license lucide-react v0.507.0 - ISC
35833
35967
  *
35834
35968
  * This source code is licensed under the ISC license.
35835
35969
  * See the LICENSE file in the root directory of this source tree.
35836
35970
  */
35837
- const __iconNode$1f = [
35971
+ const __iconNode$1k = [
35838
35972
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
35839
35973
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
35840
35974
  ];
35841
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1f);
35975
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1k);
35842
35976
  /**
35843
35977
  * @license lucide-react v0.507.0 - ISC
35844
35978
  *
35845
35979
  * This source code is licensed under the ISC license.
35846
35980
  * See the LICENSE file in the root directory of this source tree.
35847
35981
  */
35848
- const __iconNode$1e = [
35982
+ const __iconNode$1j = [
35849
35983
  ["path", { d: "M2 10v3", key: "1fnikh" }],
35850
35984
  ["path", { d: "M6 6v11", key: "11sgs0" }],
35851
35985
  ["path", { d: "M10 3v18", key: "yhl04a" }],
@@ -35853,14 +35987,14 @@ const __iconNode$1e = [
35853
35987
  ["path", { d: "M18 5v13", key: "123xd1" }],
35854
35988
  ["path", { d: "M22 10v3", key: "154ddg" }]
35855
35989
  ];
35856
- const AudioLines = createLucideIcon("audio-lines", __iconNode$1e);
35990
+ const AudioLines = createLucideIcon("audio-lines", __iconNode$1j);
35857
35991
  /**
35858
35992
  * @license lucide-react v0.507.0 - ISC
35859
35993
  *
35860
35994
  * This source code is licensed under the ISC license.
35861
35995
  * See the LICENSE file in the root directory of this source tree.
35862
35996
  */
35863
- const __iconNode$1d = [
35997
+ const __iconNode$1i = [
35864
35998
  [
35865
35999
  "path",
35866
36000
  {
@@ -35869,14 +36003,14 @@ const __iconNode$1d = [
35869
36003
  }
35870
36004
  ]
35871
36005
  ];
35872
- const Book = createLucideIcon("book", __iconNode$1d);
36006
+ const Book = createLucideIcon("book", __iconNode$1i);
35873
36007
  /**
35874
36008
  * @license lucide-react v0.507.0 - ISC
35875
36009
  *
35876
36010
  * This source code is licensed under the ISC license.
35877
36011
  * See the LICENSE file in the root directory of this source tree.
35878
36012
  */
35879
- const __iconNode$1c = [
36013
+ const __iconNode$1h = [
35880
36014
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
35881
36015
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
35882
36016
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -35884,25 +36018,25 @@ const __iconNode$1c = [
35884
36018
  ["path", { d: "M15 13v2", key: "1xurst" }],
35885
36019
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
35886
36020
  ];
35887
- const Bot = createLucideIcon("bot", __iconNode$1c);
36021
+ const Bot = createLucideIcon("bot", __iconNode$1h);
35888
36022
  /**
35889
36023
  * @license lucide-react v0.507.0 - ISC
35890
36024
  *
35891
36025
  * This source code is licensed under the ISC license.
35892
36026
  * See the LICENSE file in the root directory of this source tree.
35893
36027
  */
35894
- const __iconNode$1b = [
36028
+ const __iconNode$1g = [
35895
36029
  ["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
35896
36030
  ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
35897
36031
  ];
35898
- const Briefcase = createLucideIcon("briefcase", __iconNode$1b);
36032
+ const Briefcase = createLucideIcon("briefcase", __iconNode$1g);
35899
36033
  /**
35900
36034
  * @license lucide-react v0.507.0 - ISC
35901
36035
  *
35902
36036
  * This source code is licensed under the ISC license.
35903
36037
  * See the LICENSE file in the root directory of this source tree.
35904
36038
  */
35905
- const __iconNode$1a = [
36039
+ const __iconNode$1f = [
35906
36040
  ["path", { d: "M8 2v4", key: "1cmpym" }],
35907
36041
  ["path", { d: "M16 2v4", key: "4m81vk" }],
35908
36042
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
@@ -35914,136 +36048,136 @@ const __iconNode$1a = [
35914
36048
  ["path", { d: "M12 18h.01", key: "mhygvu" }],
35915
36049
  ["path", { d: "M16 18h.01", key: "kzsmim" }]
35916
36050
  ];
35917
- const CalendarDays = createLucideIcon("calendar-days", __iconNode$1a);
36051
+ const CalendarDays = createLucideIcon("calendar-days", __iconNode$1f);
35918
36052
  /**
35919
36053
  * @license lucide-react v0.507.0 - ISC
35920
36054
  *
35921
36055
  * This source code is licensed under the ISC license.
35922
36056
  * See the LICENSE file in the root directory of this source tree.
35923
36057
  */
35924
- const __iconNode$19 = [
36058
+ const __iconNode$1e = [
35925
36059
  ["line", { x1: "18", x2: "18", y1: "20", y2: "10", key: "1xfpm4" }],
35926
36060
  ["line", { x1: "12", x2: "12", y1: "20", y2: "4", key: "be30l9" }],
35927
36061
  ["line", { x1: "6", x2: "6", y1: "20", y2: "14", key: "1r4le6" }]
35928
36062
  ];
35929
- const ChartNoAxesColumn = createLucideIcon("chart-no-axes-column", __iconNode$19);
36063
+ const ChartNoAxesColumn = createLucideIcon("chart-no-axes-column", __iconNode$1e);
35930
36064
  /**
35931
36065
  * @license lucide-react v0.507.0 - ISC
35932
36066
  *
35933
36067
  * This source code is licensed under the ISC license.
35934
36068
  * See the LICENSE file in the root directory of this source tree.
35935
36069
  */
35936
- const __iconNode$18 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
35937
- const Check = createLucideIcon("check", __iconNode$18);
36070
+ const __iconNode$1d = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
36071
+ const Check = createLucideIcon("check", __iconNode$1d);
35938
36072
  /**
35939
36073
  * @license lucide-react v0.507.0 - ISC
35940
36074
  *
35941
36075
  * This source code is licensed under the ISC license.
35942
36076
  * See the LICENSE file in the root directory of this source tree.
35943
36077
  */
35944
- const __iconNode$17 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
35945
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$17);
36078
+ const __iconNode$1c = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
36079
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1c);
35946
36080
  /**
35947
36081
  * @license lucide-react v0.507.0 - ISC
35948
36082
  *
35949
36083
  * This source code is licensed under the ISC license.
35950
36084
  * See the LICENSE file in the root directory of this source tree.
35951
36085
  */
35952
- const __iconNode$16 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
35953
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$16);
36086
+ const __iconNode$1b = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
36087
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1b);
35954
36088
  /**
35955
36089
  * @license lucide-react v0.507.0 - ISC
35956
36090
  *
35957
36091
  * This source code is licensed under the ISC license.
35958
36092
  * See the LICENSE file in the root directory of this source tree.
35959
36093
  */
35960
- const __iconNode$15 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
35961
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$15);
36094
+ const __iconNode$1a = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
36095
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1a);
35962
36096
  /**
35963
36097
  * @license lucide-react v0.507.0 - ISC
35964
36098
  *
35965
36099
  * This source code is licensed under the ISC license.
35966
36100
  * See the LICENSE file in the root directory of this source tree.
35967
36101
  */
35968
- const __iconNode$14 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
35969
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$14);
36102
+ const __iconNode$19 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
36103
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$19);
35970
36104
  /**
35971
36105
  * @license lucide-react v0.507.0 - ISC
35972
36106
  *
35973
36107
  * This source code is licensed under the ISC license.
35974
36108
  * See the LICENSE file in the root directory of this source tree.
35975
36109
  */
35976
- const __iconNode$13 = [
36110
+ const __iconNode$18 = [
35977
36111
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
35978
36112
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
35979
36113
  ];
35980
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$13);
36114
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$18);
35981
36115
  /**
35982
36116
  * @license lucide-react v0.507.0 - ISC
35983
36117
  *
35984
36118
  * This source code is licensed under the ISC license.
35985
36119
  * See the LICENSE file in the root directory of this source tree.
35986
36120
  */
35987
- const __iconNode$12 = [
36121
+ const __iconNode$17 = [
35988
36122
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
35989
36123
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
35990
36124
  ];
35991
- const CircleCheck = createLucideIcon("circle-check", __iconNode$12);
36125
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$17);
35992
36126
  /**
35993
36127
  * @license lucide-react v0.507.0 - ISC
35994
36128
  *
35995
36129
  * This source code is licensed under the ISC license.
35996
36130
  * See the LICENSE file in the root directory of this source tree.
35997
36131
  */
35998
- const __iconNode$11 = [
36132
+ const __iconNode$16 = [
35999
36133
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36000
36134
  ["path", { d: "M17 12h.01", key: "1m0b6t" }],
36001
36135
  ["path", { d: "M12 12h.01", key: "1mp3jc" }],
36002
36136
  ["path", { d: "M7 12h.01", key: "eqddd0" }]
36003
36137
  ];
36004
- const CircleEllipsis = createLucideIcon("circle-ellipsis", __iconNode$11);
36138
+ const CircleEllipsis = createLucideIcon("circle-ellipsis", __iconNode$16);
36005
36139
  /**
36006
36140
  * @license lucide-react v0.507.0 - ISC
36007
36141
  *
36008
36142
  * This source code is licensed under the ISC license.
36009
36143
  * See the LICENSE file in the root directory of this source tree.
36010
36144
  */
36011
- const __iconNode$10 = [
36145
+ const __iconNode$15 = [
36012
36146
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36013
36147
  ["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
36014
36148
  ["path", { d: "M12 17h.01", key: "p32p05" }]
36015
36149
  ];
36016
- const CircleHelp = createLucideIcon("circle-help", __iconNode$10);
36150
+ const CircleHelp = createLucideIcon("circle-help", __iconNode$15);
36017
36151
  /**
36018
36152
  * @license lucide-react v0.507.0 - ISC
36019
36153
  *
36020
36154
  * This source code is licensed under the ISC license.
36021
36155
  * See the LICENSE file in the root directory of this source tree.
36022
36156
  */
36023
- const __iconNode$$ = [
36157
+ const __iconNode$14 = [
36024
36158
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36025
36159
  ["polygon", { points: "10 8 16 12 10 16 10 8", key: "1cimsy" }]
36026
36160
  ];
36027
- const CirclePlay = createLucideIcon("circle-play", __iconNode$$);
36161
+ const CirclePlay = createLucideIcon("circle-play", __iconNode$14);
36028
36162
  /**
36029
36163
  * @license lucide-react v0.507.0 - ISC
36030
36164
  *
36031
36165
  * This source code is licensed under the ISC license.
36032
36166
  * See the LICENSE file in the root directory of this source tree.
36033
36167
  */
36034
- const __iconNode$_ = [
36168
+ const __iconNode$13 = [
36035
36169
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36036
36170
  ["path", { d: "M8 12h8", key: "1wcyev" }],
36037
36171
  ["path", { d: "M12 8v8", key: "napkw2" }]
36038
36172
  ];
36039
- const CirclePlus = createLucideIcon("circle-plus", __iconNode$_);
36173
+ const CirclePlus = createLucideIcon("circle-plus", __iconNode$13);
36040
36174
  /**
36041
36175
  * @license lucide-react v0.507.0 - ISC
36042
36176
  *
36043
36177
  * This source code is licensed under the ISC license.
36044
36178
  * See the LICENSE file in the root directory of this source tree.
36045
36179
  */
36046
- const __iconNode$Z = [
36180
+ const __iconNode$12 = [
36047
36181
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
36048
36182
  [
36049
36183
  "path",
@@ -36057,72 +36191,72 @@ const __iconNode$Z = [
36057
36191
  ["path", { d: "M8 11h.01", key: "1dfujw" }],
36058
36192
  ["path", { d: "M8 16h.01", key: "18s6g9" }]
36059
36193
  ];
36060
- const ClipboardList = createLucideIcon("clipboard-list", __iconNode$Z);
36194
+ const ClipboardList = createLucideIcon("clipboard-list", __iconNode$12);
36061
36195
  /**
36062
36196
  * @license lucide-react v0.507.0 - ISC
36063
36197
  *
36064
36198
  * This source code is licensed under the ISC license.
36065
36199
  * See the LICENSE file in the root directory of this source tree.
36066
36200
  */
36067
- const __iconNode$Y = [
36201
+ const __iconNode$11 = [
36068
36202
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36069
36203
  ["polyline", { points: "12 6 12 12 16 14", key: "68esgv" }]
36070
36204
  ];
36071
- const Clock$1 = createLucideIcon("clock", __iconNode$Y);
36205
+ const Clock$1 = createLucideIcon("clock", __iconNode$11);
36072
36206
  /**
36073
36207
  * @license lucide-react v0.507.0 - ISC
36074
36208
  *
36075
36209
  * This source code is licensed under the ISC license.
36076
36210
  * See the LICENSE file in the root directory of this source tree.
36077
36211
  */
36078
- const __iconNode$X = [
36212
+ const __iconNode$10 = [
36079
36213
  ["path", { d: "M12 13v8", key: "1l5pq0" }],
36080
36214
  ["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" }],
36081
36215
  ["path", { d: "m8 17 4-4 4 4", key: "1quai1" }]
36082
36216
  ];
36083
- const CloudUpload = createLucideIcon("cloud-upload", __iconNode$X);
36217
+ const CloudUpload = createLucideIcon("cloud-upload", __iconNode$10);
36084
36218
  /**
36085
36219
  * @license lucide-react v0.507.0 - ISC
36086
36220
  *
36087
36221
  * This source code is licensed under the ISC license.
36088
36222
  * See the LICENSE file in the root directory of this source tree.
36089
36223
  */
36090
- const __iconNode$W = [
36224
+ const __iconNode$$ = [
36091
36225
  ["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
36092
36226
  ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
36093
36227
  ["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
36094
36228
  ];
36095
- const CodeXml = createLucideIcon("code-xml", __iconNode$W);
36229
+ const CodeXml = createLucideIcon("code-xml", __iconNode$$);
36096
36230
  /**
36097
36231
  * @license lucide-react v0.507.0 - ISC
36098
36232
  *
36099
36233
  * This source code is licensed under the ISC license.
36100
36234
  * See the LICENSE file in the root directory of this source tree.
36101
36235
  */
36102
- const __iconNode$V = [
36236
+ const __iconNode$_ = [
36103
36237
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
36104
36238
  ["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" }]
36105
36239
  ];
36106
- const Copy = createLucideIcon("copy", __iconNode$V);
36240
+ const Copy = createLucideIcon("copy", __iconNode$_);
36107
36241
  /**
36108
36242
  * @license lucide-react v0.507.0 - ISC
36109
36243
  *
36110
36244
  * This source code is licensed under the ISC license.
36111
36245
  * See the LICENSE file in the root directory of this source tree.
36112
36246
  */
36113
- const __iconNode$U = [
36247
+ const __iconNode$Z = [
36114
36248
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
36115
36249
  ["polyline", { points: "7 10 12 15 17 10", key: "2ggqvy" }],
36116
36250
  ["line", { x1: "12", x2: "12", y1: "15", y2: "3", key: "1vk2je" }]
36117
36251
  ];
36118
- const Download = createLucideIcon("download", __iconNode$U);
36252
+ const Download = createLucideIcon("download", __iconNode$Z);
36119
36253
  /**
36120
36254
  * @license lucide-react v0.507.0 - ISC
36121
36255
  *
36122
36256
  * This source code is licensed under the ISC license.
36123
36257
  * See the LICENSE file in the root directory of this source tree.
36124
36258
  */
36125
- const __iconNode$T = [
36259
+ const __iconNode$Y = [
36126
36260
  ["path", { d: "M21.54 15H17a2 2 0 0 0-2 2v4.54", key: "1djwo0" }],
36127
36261
  [
36128
36262
  "path",
@@ -36134,26 +36268,38 @@ const __iconNode$T = [
36134
36268
  ["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" }],
36135
36269
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
36136
36270
  ];
36137
- const Earth = createLucideIcon("earth", __iconNode$T);
36271
+ const Earth = createLucideIcon("earth", __iconNode$Y);
36138
36272
  /**
36139
36273
  * @license lucide-react v0.507.0 - ISC
36140
36274
  *
36141
36275
  * This source code is licensed under the ISC license.
36142
36276
  * See the LICENSE file in the root directory of this source tree.
36143
36277
  */
36144
- const __iconNode$S = [
36278
+ const __iconNode$X = [
36145
36279
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
36146
36280
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
36147
36281
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
36148
36282
  ];
36149
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$S);
36283
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$X);
36150
36284
  /**
36151
36285
  * @license lucide-react v0.507.0 - ISC
36152
36286
  *
36153
36287
  * This source code is licensed under the ISC license.
36154
36288
  * See the LICENSE file in the root directory of this source tree.
36155
36289
  */
36156
- const __iconNode$R = [
36290
+ const __iconNode$W = [
36291
+ ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
36292
+ ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
36293
+ ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
36294
+ ];
36295
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$W);
36296
+ /**
36297
+ * @license lucide-react v0.507.0 - ISC
36298
+ *
36299
+ * This source code is licensed under the ISC license.
36300
+ * See the LICENSE file in the root directory of this source tree.
36301
+ */
36302
+ const __iconNode$V = [
36157
36303
  [
36158
36304
  "path",
36159
36305
  {
@@ -36164,65 +36310,65 @@ const __iconNode$R = [
36164
36310
  ["path", { d: "M22 21H7", key: "t4ddhn" }],
36165
36311
  ["path", { d: "m5 11 9 9", key: "1mo9qw" }]
36166
36312
  ];
36167
- const Eraser = createLucideIcon("eraser", __iconNode$R);
36313
+ const Eraser = createLucideIcon("eraser", __iconNode$V);
36168
36314
  /**
36169
36315
  * @license lucide-react v0.507.0 - ISC
36170
36316
  *
36171
36317
  * This source code is licensed under the ISC license.
36172
36318
  * See the LICENSE file in the root directory of this source tree.
36173
36319
  */
36174
- const __iconNode$Q = [
36320
+ const __iconNode$U = [
36175
36321
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
36176
36322
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
36177
36323
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
36178
36324
  ];
36179
- const ExternalLink = createLucideIcon("external-link", __iconNode$Q);
36325
+ const ExternalLink = createLucideIcon("external-link", __iconNode$U);
36180
36326
  /**
36181
36327
  * @license lucide-react v0.507.0 - ISC
36182
36328
  *
36183
36329
  * This source code is licensed under the ISC license.
36184
36330
  * See the LICENSE file in the root directory of this source tree.
36185
36331
  */
36186
- const __iconNode$P = [
36332
+ const __iconNode$T = [
36187
36333
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36188
36334
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36189
36335
  ["circle", { cx: "10", cy: "12", r: "2", key: "737tya" }],
36190
36336
  ["path", { d: "m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22", key: "wt3hpn" }]
36191
36337
  ];
36192
- const FileImage = createLucideIcon("file-image", __iconNode$P);
36338
+ const FileImage = createLucideIcon("file-image", __iconNode$T);
36193
36339
  /**
36194
36340
  * @license lucide-react v0.507.0 - ISC
36195
36341
  *
36196
36342
  * This source code is licensed under the ISC license.
36197
36343
  * See the LICENSE file in the root directory of this source tree.
36198
36344
  */
36199
- const __iconNode$O = [
36345
+ const __iconNode$S = [
36200
36346
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36201
36347
  ["path", { d: "M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2", key: "1vk7w2" }],
36202
36348
  ["path", { d: "M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6", key: "1jink5" }],
36203
36349
  ["path", { d: "m5 11-3 3", key: "1dgrs4" }],
36204
36350
  ["path", { d: "m5 17-3-3h10", key: "1mvvaf" }]
36205
36351
  ];
36206
- const FileOutput = createLucideIcon("file-output", __iconNode$O);
36352
+ const FileOutput = createLucideIcon("file-output", __iconNode$S);
36207
36353
  /**
36208
36354
  * @license lucide-react v0.507.0 - ISC
36209
36355
  *
36210
36356
  * This source code is licensed under the ISC license.
36211
36357
  * See the LICENSE file in the root directory of this source tree.
36212
36358
  */
36213
- const __iconNode$N = [
36359
+ const __iconNode$R = [
36214
36360
  ["path", { d: "M12 17h.01", key: "p32p05" }],
36215
36361
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }],
36216
36362
  ["path", { d: "M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3", key: "mhlwft" }]
36217
36363
  ];
36218
- const FileQuestion = createLucideIcon("file-question", __iconNode$N);
36364
+ const FileQuestion = createLucideIcon("file-question", __iconNode$R);
36219
36365
  /**
36220
36366
  * @license lucide-react v0.507.0 - ISC
36221
36367
  *
36222
36368
  * This source code is licensed under the ISC license.
36223
36369
  * See the LICENSE file in the root directory of this source tree.
36224
36370
  */
36225
- const __iconNode$M = [
36371
+ const __iconNode$Q = [
36226
36372
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36227
36373
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36228
36374
  ["path", { d: "M8 13h2", key: "yr2amv" }],
@@ -36230,64 +36376,64 @@ const __iconNode$M = [
36230
36376
  ["path", { d: "M8 17h2", key: "2yhykz" }],
36231
36377
  ["path", { d: "M14 17h2", key: "10kma7" }]
36232
36378
  ];
36233
- const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$M);
36379
+ const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$Q);
36234
36380
  /**
36235
36381
  * @license lucide-react v0.507.0 - ISC
36236
36382
  *
36237
36383
  * This source code is licensed under the ISC license.
36238
36384
  * See the LICENSE file in the root directory of this source tree.
36239
36385
  */
36240
- const __iconNode$L = [
36386
+ const __iconNode$P = [
36241
36387
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36242
36388
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36243
36389
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
36244
36390
  ["path", { d: "M16 13H8", key: "t4e002" }],
36245
36391
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
36246
36392
  ];
36247
- const FileText = createLucideIcon("file-text", __iconNode$L);
36393
+ const FileText = createLucideIcon("file-text", __iconNode$P);
36248
36394
  /**
36249
36395
  * @license lucide-react v0.507.0 - ISC
36250
36396
  *
36251
36397
  * This source code is licensed under the ISC license.
36252
36398
  * See the LICENSE file in the root directory of this source tree.
36253
36399
  */
36254
- const __iconNode$K = [
36400
+ const __iconNode$O = [
36255
36401
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36256
36402
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36257
36403
  ["path", { d: "M12 12v6", key: "3ahymv" }],
36258
36404
  ["path", { d: "m15 15-3-3-3 3", key: "15xj92" }]
36259
36405
  ];
36260
- const FileUp = createLucideIcon("file-up", __iconNode$K);
36406
+ const FileUp = createLucideIcon("file-up", __iconNode$O);
36261
36407
  /**
36262
36408
  * @license lucide-react v0.507.0 - ISC
36263
36409
  *
36264
36410
  * This source code is licensed under the ISC license.
36265
36411
  * See the LICENSE file in the root directory of this source tree.
36266
36412
  */
36267
- const __iconNode$J = [
36413
+ const __iconNode$N = [
36268
36414
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36269
36415
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
36270
36416
  ["path", { d: "m10 11 5 3-5 3v-6Z", key: "7ntvm4" }]
36271
36417
  ];
36272
- const FileVideo = createLucideIcon("file-video", __iconNode$J);
36418
+ const FileVideo = createLucideIcon("file-video", __iconNode$N);
36273
36419
  /**
36274
36420
  * @license lucide-react v0.507.0 - ISC
36275
36421
  *
36276
36422
  * This source code is licensed under the ISC license.
36277
36423
  * See the LICENSE file in the root directory of this source tree.
36278
36424
  */
36279
- const __iconNode$I = [
36425
+ const __iconNode$M = [
36280
36426
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
36281
36427
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }]
36282
36428
  ];
36283
- const File$1 = createLucideIcon("file", __iconNode$I);
36429
+ const File$1 = createLucideIcon("file", __iconNode$M);
36284
36430
  /**
36285
36431
  * @license lucide-react v0.507.0 - ISC
36286
36432
  *
36287
36433
  * This source code is licensed under the ISC license.
36288
36434
  * See the LICENSE file in the root directory of this source tree.
36289
36435
  */
36290
- const __iconNode$H = [
36436
+ const __iconNode$L = [
36291
36437
  [
36292
36438
  "path",
36293
36439
  {
@@ -36298,14 +36444,14 @@ const __iconNode$H = [
36298
36444
  ["path", { d: "M6.453 15h11.094", key: "3shlmq" }],
36299
36445
  ["path", { d: "M8.5 2h7", key: "csnxdl" }]
36300
36446
  ];
36301
- const FlaskConical = createLucideIcon("flask-conical", __iconNode$H);
36447
+ const FlaskConical = createLucideIcon("flask-conical", __iconNode$L);
36302
36448
  /**
36303
36449
  * @license lucide-react v0.507.0 - ISC
36304
36450
  *
36305
36451
  * This source code is licensed under the ISC license.
36306
36452
  * See the LICENSE file in the root directory of this source tree.
36307
36453
  */
36308
- const __iconNode$G = [
36454
+ const __iconNode$K = [
36309
36455
  [
36310
36456
  "path",
36311
36457
  {
@@ -36314,14 +36460,14 @@ const __iconNode$G = [
36314
36460
  }
36315
36461
  ]
36316
36462
  ];
36317
- const FolderOpen = createLucideIcon("folder-open", __iconNode$G);
36463
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$K);
36318
36464
  /**
36319
36465
  * @license lucide-react v0.507.0 - ISC
36320
36466
  *
36321
36467
  * This source code is licensed under the ISC license.
36322
36468
  * See the LICENSE file in the root directory of this source tree.
36323
36469
  */
36324
- const __iconNode$F = [
36470
+ const __iconNode$J = [
36325
36471
  [
36326
36472
  "path",
36327
36473
  {
@@ -36332,14 +36478,14 @@ const __iconNode$F = [
36332
36478
  ["path", { d: "M22 10v6", key: "1lu8f3" }],
36333
36479
  ["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
36334
36480
  ];
36335
- const GraduationCap = createLucideIcon("graduation-cap", __iconNode$F);
36481
+ const GraduationCap = createLucideIcon("graduation-cap", __iconNode$J);
36336
36482
  /**
36337
36483
  * @license lucide-react v0.507.0 - ISC
36338
36484
  *
36339
36485
  * This source code is licensed under the ISC license.
36340
36486
  * See the LICENSE file in the root directory of this source tree.
36341
36487
  */
36342
- const __iconNode$E = [
36488
+ const __iconNode$I = [
36343
36489
  [
36344
36490
  "path",
36345
36491
  {
@@ -36349,14 +36495,14 @@ const __iconNode$E = [
36349
36495
  ],
36350
36496
  ["path", { d: "M3.22 12H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27", key: "1uw2ng" }]
36351
36497
  ];
36352
- const HeartPulse = createLucideIcon("heart-pulse", __iconNode$E);
36498
+ const HeartPulse = createLucideIcon("heart-pulse", __iconNode$I);
36353
36499
  /**
36354
36500
  * @license lucide-react v0.507.0 - ISC
36355
36501
  *
36356
36502
  * This source code is licensed under the ISC license.
36357
36503
  * See the LICENSE file in the root directory of this source tree.
36358
36504
  */
36359
- const __iconNode$D = [
36505
+ const __iconNode$H = [
36360
36506
  [
36361
36507
  "path",
36362
36508
  {
@@ -36365,26 +36511,26 @@ const __iconNode$D = [
36365
36511
  }
36366
36512
  ]
36367
36513
  ];
36368
- const Heart = createLucideIcon("heart", __iconNode$D);
36514
+ const Heart = createLucideIcon("heart", __iconNode$H);
36369
36515
  /**
36370
36516
  * @license lucide-react v0.507.0 - ISC
36371
36517
  *
36372
36518
  * This source code is licensed under the ISC license.
36373
36519
  * See the LICENSE file in the root directory of this source tree.
36374
36520
  */
36375
- const __iconNode$C = [
36521
+ const __iconNode$G = [
36376
36522
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
36377
36523
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
36378
36524
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
36379
36525
  ];
36380
- const History = createLucideIcon("history", __iconNode$C);
36526
+ const History = createLucideIcon("history", __iconNode$G);
36381
36527
  /**
36382
36528
  * @license lucide-react v0.507.0 - ISC
36383
36529
  *
36384
36530
  * This source code is licensed under the ISC license.
36385
36531
  * See the LICENSE file in the root directory of this source tree.
36386
36532
  */
36387
- const __iconNode$B = [
36533
+ const __iconNode$F = [
36388
36534
  ["path", { d: "M12 3v12", key: "1x0j5s" }],
36389
36535
  ["path", { d: "m8 11 4 4 4-4", key: "1dohi6" }],
36390
36536
  [
@@ -36395,38 +36541,38 @@ const __iconNode$B = [
36395
36541
  }
36396
36542
  ]
36397
36543
  ];
36398
- const Import = createLucideIcon("import", __iconNode$B);
36544
+ const Import = createLucideIcon("import", __iconNode$F);
36399
36545
  /**
36400
36546
  * @license lucide-react v0.507.0 - ISC
36401
36547
  *
36402
36548
  * This source code is licensed under the ISC license.
36403
36549
  * See the LICENSE file in the root directory of this source tree.
36404
36550
  */
36405
- const __iconNode$A = [
36551
+ const __iconNode$E = [
36406
36552
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
36407
36553
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
36408
36554
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
36409
36555
  ];
36410
- const Info$1 = createLucideIcon("info", __iconNode$A);
36556
+ const Info$1 = createLucideIcon("info", __iconNode$E);
36411
36557
  /**
36412
36558
  * @license lucide-react v0.507.0 - ISC
36413
36559
  *
36414
36560
  * This source code is licensed under the ISC license.
36415
36561
  * See the LICENSE file in the root directory of this source tree.
36416
36562
  */
36417
- const __iconNode$z = [
36563
+ const __iconNode$D = [
36418
36564
  ["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" }],
36419
36565
  ["path", { d: "m21 2-9.6 9.6", key: "1j0ho8" }],
36420
36566
  ["circle", { cx: "7.5", cy: "15.5", r: "5.5", key: "yqb3hr" }]
36421
36567
  ];
36422
- const Key = createLucideIcon("key", __iconNode$z);
36568
+ const Key = createLucideIcon("key", __iconNode$D);
36423
36569
  /**
36424
36570
  * @license lucide-react v0.507.0 - ISC
36425
36571
  *
36426
36572
  * This source code is licensed under the ISC license.
36427
36573
  * See the LICENSE file in the root directory of this source tree.
36428
36574
  */
36429
- const __iconNode$y = [
36575
+ const __iconNode$C = [
36430
36576
  [
36431
36577
  "path",
36432
36578
  {
@@ -36449,14 +36595,27 @@ const __iconNode$y = [
36449
36595
  }
36450
36596
  ]
36451
36597
  ];
36452
- const Layers = createLucideIcon("layers", __iconNode$y);
36598
+ const Layers = createLucideIcon("layers", __iconNode$C);
36453
36599
  /**
36454
36600
  * @license lucide-react v0.507.0 - ISC
36455
36601
  *
36456
36602
  * This source code is licensed under the ISC license.
36457
36603
  * See the LICENSE file in the root directory of this source tree.
36458
36604
  */
36459
- const __iconNode$x = [
36605
+ const __iconNode$B = [
36606
+ ["rect", { width: "7", height: "7", x: "3", y: "3", rx: "1", key: "1g98yp" }],
36607
+ ["rect", { width: "7", height: "7", x: "14", y: "3", rx: "1", key: "6d4xhi" }],
36608
+ ["rect", { width: "7", height: "7", x: "14", y: "14", rx: "1", key: "nxv5o0" }],
36609
+ ["rect", { width: "7", height: "7", x: "3", y: "14", rx: "1", key: "1bb6yr" }]
36610
+ ];
36611
+ const LayoutGrid = createLucideIcon("layout-grid", __iconNode$B);
36612
+ /**
36613
+ * @license lucide-react v0.507.0 - ISC
36614
+ *
36615
+ * This source code is licensed under the ISC license.
36616
+ * See the LICENSE file in the root directory of this source tree.
36617
+ */
36618
+ const __iconNode$A = [
36460
36619
  [
36461
36620
  "path",
36462
36621
  {
@@ -36467,80 +36626,102 @@ const __iconNode$x = [
36467
36626
  ["path", { d: "M9 18h6", key: "x1upvd" }],
36468
36627
  ["path", { d: "M10 22h4", key: "ceow96" }]
36469
36628
  ];
36470
- const Lightbulb = createLucideIcon("lightbulb", __iconNode$x);
36629
+ const Lightbulb = createLucideIcon("lightbulb", __iconNode$A);
36471
36630
  /**
36472
36631
  * @license lucide-react v0.507.0 - ISC
36473
36632
  *
36474
36633
  * This source code is licensed under the ISC license.
36475
36634
  * See the LICENSE file in the root directory of this source tree.
36476
36635
  */
36477
- const __iconNode$w = [
36636
+ const __iconNode$z = [
36478
36637
  ["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" }],
36479
36638
  ["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" }]
36480
36639
  ];
36481
- const Link = createLucideIcon("link", __iconNode$w);
36640
+ const Link = createLucideIcon("link", __iconNode$z);
36482
36641
  /**
36483
36642
  * @license lucide-react v0.507.0 - ISC
36484
36643
  *
36485
36644
  * This source code is licensed under the ISC license.
36486
36645
  * See the LICENSE file in the root directory of this source tree.
36487
36646
  */
36488
- const __iconNode$v = [
36647
+ const __iconNode$y = [
36648
+ ["path", { d: "M21 12h-8", key: "1bmf0i" }],
36649
+ ["path", { d: "M21 6H8", key: "1pqkrb" }],
36650
+ ["path", { d: "M21 18h-8", key: "1tm79t" }],
36651
+ ["path", { d: "M3 6v4c0 1.1.9 2 2 2h3", key: "1ywdgy" }],
36652
+ ["path", { d: "M3 10v6c0 1.1.9 2 2 2h3", key: "2wc746" }]
36653
+ ];
36654
+ const ListTree = createLucideIcon("list-tree", __iconNode$y);
36655
+ /**
36656
+ * @license lucide-react v0.507.0 - ISC
36657
+ *
36658
+ * This source code is licensed under the ISC license.
36659
+ * See the LICENSE file in the root directory of this source tree.
36660
+ */
36661
+ const __iconNode$x = [
36489
36662
  ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
36490
36663
  ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
36491
36664
  ];
36492
- const Mail = createLucideIcon("mail", __iconNode$v);
36665
+ const Mail = createLucideIcon("mail", __iconNode$x);
36493
36666
  /**
36494
36667
  * @license lucide-react v0.507.0 - ISC
36495
36668
  *
36496
36669
  * This source code is licensed under the ISC license.
36497
36670
  * See the LICENSE file in the root directory of this source tree.
36498
36671
  */
36499
- const __iconNode$u = [
36672
+ const __iconNode$w = [
36500
36673
  ["polyline", { points: "15 3 21 3 21 9", key: "mznyad" }],
36501
36674
  ["polyline", { points: "9 21 3 21 3 15", key: "1avn1i" }],
36502
36675
  ["line", { x1: "21", x2: "14", y1: "3", y2: "10", key: "ota7mn" }],
36503
36676
  ["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }]
36504
36677
  ];
36505
- const Maximize2 = createLucideIcon("maximize-2", __iconNode$u);
36678
+ const Maximize2 = createLucideIcon("maximize-2", __iconNode$w);
36506
36679
  /**
36507
36680
  * @license lucide-react v0.507.0 - ISC
36508
36681
  *
36509
36682
  * This source code is licensed under the ISC license.
36510
36683
  * See the LICENSE file in the root directory of this source tree.
36511
36684
  */
36512
- const __iconNode$t = [
36685
+ const __iconNode$v = [
36513
36686
  ["path", { d: "m3 11 18-5v12L3 14v-3z", key: "n962bs" }],
36514
36687
  ["path", { d: "M11.6 16.8a3 3 0 1 1-5.8-1.6", key: "1yl0tm" }]
36515
36688
  ];
36516
- const Megaphone = createLucideIcon("megaphone", __iconNode$t);
36689
+ const Megaphone = createLucideIcon("megaphone", __iconNode$v);
36517
36690
  /**
36518
36691
  * @license lucide-react v0.507.0 - ISC
36519
36692
  *
36520
36693
  * This source code is licensed under the ISC license.
36521
36694
  * See the LICENSE file in the root directory of this source tree.
36522
36695
  */
36523
- const __iconNode$s = [
36696
+ const __iconNode$u = [
36524
36697
  ["path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" }]
36525
36698
  ];
36526
- const MessageCircle = createLucideIcon("message-circle", __iconNode$s);
36699
+ const MessageCircle = createLucideIcon("message-circle", __iconNode$u);
36527
36700
  /**
36528
36701
  * @license lucide-react v0.507.0 - ISC
36529
36702
  *
36530
36703
  * This source code is licensed under the ISC license.
36531
36704
  * See the LICENSE file in the root directory of this source tree.
36532
36705
  */
36533
- const __iconNode$r = [
36706
+ const __iconNode$t = [
36534
36707
  ["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" }]
36535
36708
  ];
36536
- const MessageSquare = createLucideIcon("message-square", __iconNode$r);
36709
+ const MessageSquare = createLucideIcon("message-square", __iconNode$t);
36537
36710
  /**
36538
36711
  * @license lucide-react v0.507.0 - ISC
36539
36712
  *
36540
36713
  * This source code is licensed under the ISC license.
36541
36714
  * See the LICENSE file in the root directory of this source tree.
36542
36715
  */
36543
- const __iconNode$q = [
36716
+ const __iconNode$s = [["path", { d: "M5 12h14", key: "1ays0h" }]];
36717
+ const Minus$1 = createLucideIcon("minus", __iconNode$s);
36718
+ /**
36719
+ * @license lucide-react v0.507.0 - ISC
36720
+ *
36721
+ * This source code is licensed under the ISC license.
36722
+ * See the LICENSE file in the root directory of this source tree.
36723
+ */
36724
+ const __iconNode$r = [
36544
36725
  ["path", { d: "M12 2v20", key: "t6zp3m" }],
36545
36726
  ["path", { d: "m15 19-3 3-3-3", key: "11eu04" }],
36546
36727
  ["path", { d: "m19 9 3 3-3 3", key: "1mg7y2" }],
@@ -36548,14 +36729,14 @@ const __iconNode$q = [
36548
36729
  ["path", { d: "m5 9-3 3 3 3", key: "j64kie" }],
36549
36730
  ["path", { d: "m9 5 3-3 3 3", key: "l8vdw6" }]
36550
36731
  ];
36551
- const Move = createLucideIcon("move", __iconNode$q);
36732
+ const Move = createLucideIcon("move", __iconNode$r);
36552
36733
  /**
36553
36734
  * @license lucide-react v0.507.0 - ISC
36554
36735
  *
36555
36736
  * This source code is licensed under the ISC license.
36556
36737
  * See the LICENSE file in the root directory of this source tree.
36557
36738
  */
36558
- const __iconNode$p = [
36739
+ const __iconNode$q = [
36559
36740
  ["path", { d: "m14.622 17.897-10.68-2.913", key: "vj2p1u" }],
36560
36741
  [
36561
36742
  "path",
@@ -36572,14 +36753,14 @@ const __iconNode$p = [
36572
36753
  }
36573
36754
  ]
36574
36755
  ];
36575
- const Paintbrush = createLucideIcon("paintbrush", __iconNode$p);
36756
+ const Paintbrush = createLucideIcon("paintbrush", __iconNode$q);
36576
36757
  /**
36577
36758
  * @license lucide-react v0.507.0 - ISC
36578
36759
  *
36579
36760
  * This source code is licensed under the ISC license.
36580
36761
  * See the LICENSE file in the root directory of this source tree.
36581
36762
  */
36582
- const __iconNode$o = [
36763
+ const __iconNode$p = [
36583
36764
  ["path", { d: "M12 20h9", key: "t2du7b" }],
36584
36765
  [
36585
36766
  "path",
@@ -36590,7 +36771,23 @@ const __iconNode$o = [
36590
36771
  ],
36591
36772
  ["path", { d: "m15 5 3 3", key: "1w25hb" }]
36592
36773
  ];
36593
- const PencilLine = createLucideIcon("pencil-line", __iconNode$o);
36774
+ const PencilLine = createLucideIcon("pencil-line", __iconNode$p);
36775
+ /**
36776
+ * @license lucide-react v0.507.0 - ISC
36777
+ *
36778
+ * This source code is licensed under the ISC license.
36779
+ * See the LICENSE file in the root directory of this source tree.
36780
+ */
36781
+ const __iconNode$o = [
36782
+ [
36783
+ "path",
36784
+ {
36785
+ d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
36786
+ key: "1a8usu"
36787
+ }
36788
+ ]
36789
+ ];
36790
+ const Pen = createLucideIcon("pen", __iconNode$o);
36594
36791
  /**
36595
36792
  * @license lucide-react v0.507.0 - ISC
36596
36793
  *
@@ -37128,7 +37325,7 @@ const OptionsMenu = styled$1(Menu)(({ theme: theme2 }) => ({
37128
37325
  background: theme2.palette.background.paper
37129
37326
  }
37130
37327
  }));
37131
- const StyledMenuItem$1 = styled$1(MenuItem)(({ theme: theme2 }) => ({
37328
+ const StyledMenuItem$3 = styled$1(MenuItem)(({ theme: theme2 }) => ({
37132
37329
  borderRadius: "0.375rem",
37133
37330
  // rounded-md
37134
37331
  padding: "0.5rem 0.75rem",
@@ -37168,7 +37365,7 @@ const DeleteMenuItem = styled$1(MenuItem)(({ theme: theme2 }) => ({
37168
37365
  backgroundColor: alpha$1(theme2.palette.error.main, 0.08)
37169
37366
  }
37170
37367
  }));
37171
- const MenuItemIcon$1 = styled$1(ListItemIcon)(
37368
+ const MenuItemIcon$2 = styled$1(ListItemIcon)(
37172
37369
  ({ theme: theme2, color: color2 }) => ({
37173
37370
  color: color2 === "error" ? theme2.palette.error.main : color2 === "warning" ? theme2.palette.warning.main : theme2.palette.text.primary,
37174
37371
  minWidth: 0,
@@ -37271,20 +37468,20 @@ const AgentOptionsMenu = ({
37271
37468
  },
37272
37469
  children: [
37273
37470
  isAgentsPage && onChatWithAgent && /* @__PURE__ */ jsxRuntimeExports.jsxs(
37274
- StyledMenuItem$1,
37471
+ StyledMenuItem$3,
37275
37472
  {
37276
37473
  onClick: () => {
37277
37474
  onChatWithAgent();
37278
37475
  handleCloseMenu();
37279
37476
  },
37280
37477
  children: [
37281
- /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { "aria-label": "Chat with Agent" }) }),
37478
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$2, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageCircle, { "aria-label": "Chat with Agent" }) }),
37282
37479
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Chat with Agent" })
37283
37480
  ]
37284
37481
  }
37285
37482
  ),
37286
37483
  !isAgentsPage && onViewAgentSettings && /* @__PURE__ */ jsxRuntimeExports.jsxs(
37287
- StyledMenuItem$1,
37484
+ StyledMenuItem$3,
37288
37485
  {
37289
37486
  "data-tour-tag": "view-agent-settings-menu-item",
37290
37487
  onClick: () => {
@@ -37292,26 +37489,26 @@ const AgentOptionsMenu = ({
37292
37489
  handleCloseMenu();
37293
37490
  },
37294
37491
  children: [
37295
- /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Settings$1, { "aria-label": "View Agent Settings" }) }),
37492
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$2, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Settings$1, { "aria-label": "View Agent Settings" }) }),
37296
37493
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "View Agent Settings" })
37297
37494
  ]
37298
37495
  }
37299
37496
  ),
37300
37497
  onExportAgent && /* @__PURE__ */ jsxRuntimeExports.jsxs(
37301
- StyledMenuItem$1,
37498
+ StyledMenuItem$3,
37302
37499
  {
37303
37500
  onClick: () => {
37304
37501
  onExportAgent();
37305
37502
  handleCloseMenu();
37306
37503
  },
37307
37504
  children: [
37308
- /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FileOutput, { "aria-label": "Export Agent" }) }),
37505
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$2, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FileOutput, { "aria-label": "Export Agent" }) }),
37309
37506
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Export Agent" })
37310
37507
  ]
37311
37508
  }
37312
37509
  ),
37313
37510
  onUploadAgentToHub && /* @__PURE__ */ jsxRuntimeExports.jsxs(
37314
- StyledMenuItem$1,
37511
+ StyledMenuItem$3,
37315
37512
  {
37316
37513
  "data-tour-tag": "upload-to-hub-menu-item",
37317
37514
  onClick: () => {
@@ -37319,17 +37516,17 @@ const AgentOptionsMenu = ({
37319
37516
  handleCloseMenu();
37320
37517
  },
37321
37518
  children: [
37322
- /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(CloudUpload, { "aria-label": "Upload to Hub" }) }),
37519
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$2, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(CloudUpload, { "aria-label": "Upload to Hub" }) }),
37323
37520
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Upload to Hub" })
37324
37521
  ]
37325
37522
  }
37326
37523
  ),
37327
37524
  onClearConversation && /* @__PURE__ */ jsxRuntimeExports.jsxs(WarningMenuItem, { onClick: handleOpenClearConfirmation, children: [
37328
- /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { color: "warning", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Eraser, { "aria-label": "Clear Conversation" }) }),
37525
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$2, { color: "warning", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Eraser, { "aria-label": "Clear Conversation" }) }),
37329
37526
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Clear Conversation" })
37330
37527
  ] }),
37331
37528
  /* @__PURE__ */ jsxRuntimeExports.jsxs(DeleteMenuItem, { onClick: handleOpenDeleteConfirmation, children: [
37332
- /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { color: "error", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { "aria-label": "Delete Agent" }) }),
37529
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$2, { color: "error", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { "aria-label": "Delete Agent" }) }),
37333
37530
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Delete Agent" })
37334
37531
  ] })
37335
37532
  ]
@@ -42223,7 +42420,7 @@ const FieldContainer$5 = styled$1(Box)({
42223
42420
  marginBottom: 16
42224
42421
  // Reduced margin
42225
42422
  });
42226
- const FieldLabel$8 = styled$1("label")(({ theme: theme2 }) => ({
42423
+ const FieldLabel$9 = styled$1("label")(({ theme: theme2 }) => ({
42227
42424
  display: "flex",
42228
42425
  alignItems: "center",
42229
42426
  marginBottom: 6,
@@ -42541,7 +42738,7 @@ const EditableField = ({
42541
42738
  const hasChanged = editValue !== originalValue;
42542
42739
  const showClearButton = !readOnly2 && !isSaving && originalValue !== "";
42543
42740
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldContainer$5, { children: [
42544
- /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$8, { children: [
42741
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$9, { children: [
42545
42742
  icon2 && /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$7, { children: icon2 }),
42546
42743
  label
42547
42744
  ] }),
@@ -46109,7 +46306,7 @@ const UpdateNotification = ({
46109
46306
  "Release Notes:",
46110
46307
  " ",
46111
46308
  typeof updateInfo.releaseNotes === "string" ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
46112
- parse$7(truncateText(updateInfo.releaseNotes, 400)),
46309
+ parse$7(truncateText$1(updateInfo.releaseNotes, 400)),
46113
46310
  updateInfo.releaseNotes.length > 400 && /* @__PURE__ */ jsxRuntimeExports.jsx(
46114
46311
  Link$1,
46115
46312
  {
@@ -46391,7 +46588,7 @@ const UpdateNotification = ({
46391
46588
  }
46392
46589
  return null;
46393
46590
  };
46394
- const truncateText = (text4, maxLength) => {
46591
+ const truncateText$1 = (text4, maxLength) => {
46395
46592
  if (text4.length <= maxLength) return text4;
46396
46593
  return `${text4.substring(0, maxLength)}...`;
46397
46594
  };
@@ -55826,7 +56023,7 @@ const CATEGORY_LABELS = Object.fromEntries(
55826
56023
  const FieldContainer$4 = styled$1(Box)({
55827
56024
  marginBottom: 16
55828
56025
  });
55829
- const FieldLabel$7 = styled$1("label")(({ theme: theme2 }) => ({
56026
+ const FieldLabel$8 = styled$1("label")(({ theme: theme2 }) => ({
55830
56027
  display: "flex",
55831
56028
  alignItems: "center",
55832
56029
  marginBottom: 6,
@@ -55882,7 +56079,7 @@ const CategoriesInputChips = ({
55882
56079
  onChange(value.filter((c2) => c2 !== cat));
55883
56080
  };
55884
56081
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldContainer$4, { children: [
55885
- /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$7, { children: [
56082
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$8, { children: [
55886
56083
  icon2 && /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$5, { children: icon2 }),
55887
56084
  label
55888
56085
  ] }),
@@ -56039,7 +56236,7 @@ const CategoriesInputChips = ({
56039
56236
  const FieldContainer$3 = styled$1(Box)({
56040
56237
  marginBottom: 16
56041
56238
  });
56042
- const FieldLabel$6 = styled$1("label")(({ theme: theme2 }) => ({
56239
+ const FieldLabel$7 = styled$1("label")(({ theme: theme2 }) => ({
56043
56240
  display: "flex",
56044
56241
  alignItems: "center",
56045
56242
  marginBottom: 6,
@@ -56119,7 +56316,7 @@ const TagsInputChips = ({
56119
56316
  onChange(value.filter((t2) => t2 !== tag2));
56120
56317
  };
56121
56318
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldContainer$3, { children: [
56122
- /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$6, { children: [
56319
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$7, { children: [
56123
56320
  icon2 && /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$4, { children: icon2 }),
56124
56321
  label
56125
56322
  ] }),
@@ -56269,7 +56466,7 @@ const FieldContainer$2 = styled$1(Box)({
56269
56466
  // Reduced margin
56270
56467
  position: "relative"
56271
56468
  });
56272
- const FieldLabel$5 = styled$1(Typography)(({ theme: theme2 }) => ({
56469
+ const FieldLabel$6 = styled$1(Typography)(({ theme: theme2 }) => ({
56273
56470
  marginBottom: 6,
56274
56471
  // Reduced margin
56275
56472
  display: "flex",
@@ -56561,7 +56758,7 @@ const HostingSelect = ({
56561
56758
  }
56562
56759
  };
56563
56760
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldContainer$2, { children: [
56564
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Select the AI provider that you want to use. Each provider has different models available. Recommended: Radient", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$5, { variant: "subtitle2", children: [
56761
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Select the AI provider that you want to use. Each provider has different models available. Recommended: Radient", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$6, { variant: "subtitle2", children: [
56565
56762
  /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$3, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faServer }) }),
56566
56763
  "Hosting Provider"
56567
56764
  ] }) }),
@@ -66049,7 +66246,7 @@ const FieldContainer$1 = styled$1(Box)({
66049
66246
  marginBottom: 16,
66050
66247
  position: "relative"
66051
66248
  });
66052
- const FieldLabel$4 = styled$1(Typography)(({ theme: theme2 }) => ({
66249
+ const FieldLabel$5 = styled$1(Typography)(({ theme: theme2 }) => ({
66053
66250
  marginBottom: 6,
66054
66251
  display: "flex",
66055
66252
  alignItems: "center",
@@ -66354,7 +66551,7 @@ const ModelSelect = ({
66354
66551
  return "";
66355
66552
  };
66356
66553
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldContainer$1, { children: [
66357
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Select the AI model that you want to use. Each model has different capabilities and costs. Recommended: Automatic", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$4, { variant: "subtitle2", children: [
66554
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Select the AI model that you want to use. Each model has different capabilities and costs. Recommended: Automatic", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$5, { variant: "subtitle2", children: [
66358
66555
  /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$2, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faRobot }) }),
66359
66556
  "Model"
66360
66557
  ] }) }),
@@ -66478,7 +66675,7 @@ const FieldContainer = styled$1(Box)({
66478
66675
  position: "relative",
66479
66676
  marginBottom: 16
66480
66677
  });
66481
- const FieldLabel$3 = styled$1("div")(({ theme: theme2 }) => ({
66678
+ const FieldLabel$4 = styled$1("div")(({ theme: theme2 }) => ({
66482
66679
  fontFamily: theme2.typography.fontFamily,
66483
66680
  fontSize: "0.875rem",
66484
66681
  // Small text size
@@ -66691,7 +66888,7 @@ const GeneralSettings = ({
66691
66888
  },
66692
66889
  `model-select-${selectedAgent.id}-${currentHosting}-${selectedAgent.model || (!selectedAgent.hosting && config2?.values.model_name ? config2.values.model_name : "default")}`
66693
66890
  ) : /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldContainer, { children: [
66694
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Select a hosting provider first, and then select the AI model that you want to use. Each model has different capabilities and costs. Recommended: Automatic", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$3, { children: [
66891
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Select a hosting provider first, and then select the AI model that you want to use. Each model has different capabilities and costs. Recommended: Automatic", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$4, { children: [
66695
66892
  /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faRobot }) }),
66696
66893
  "Model"
66697
66894
  ] }) }),
@@ -66793,14 +66990,14 @@ const GeneralSettings = ({
66793
66990
  ),
66794
66991
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { container: true, spacing: 3, children: [
66795
66992
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { item: true, xs: 12, sm: 6, children: [
66796
- /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$3, { children: [
66993
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$4, { children: [
66797
66994
  /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faIdCard, size: "xs" }) }),
66798
66995
  "ID"
66799
66996
  ] }),
66800
66997
  /* @__PURE__ */ jsxRuntimeExports.jsx(InfoCard, { title: selectedAgent.id, children: /* @__PURE__ */ jsxRuntimeExports.jsx(MonospaceValueText, { children: selectedAgent.id }) })
66801
66998
  ] }),
66802
66999
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { item: true, xs: 12, sm: 6, children: [
66803
- /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$3, { children: [
67000
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$4, { children: [
66804
67001
  /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faCalendarAlt, size: "xs" }) }),
66805
67002
  "Created"
66806
67003
  ] }),
@@ -66813,7 +67010,7 @@ const GeneralSettings = ({
66813
67010
  )
66814
67011
  ] }),
66815
67012
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { item: true, xs: 12, sm: 6, children: [
66816
- /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$3, { children: [
67013
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$4, { children: [
66817
67014
  /* @__PURE__ */ jsxRuntimeExports.jsx(LabelIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faCodeBranch, size: "xs" }) }),
66818
67015
  "Version"
66819
67016
  ] }),
@@ -68107,6 +68304,7 @@ const defaultConversationCanvasState = {
68107
68304
  files: [],
68108
68305
  mentionedFiles: [],
68109
68306
  viewMode: "documents"
68307
+ // Default to documents view
68110
68308
  };
68111
68309
  const getConversationState = (conversations, conversationId) => {
68112
68310
  const existing = conversations[conversationId];
@@ -86734,7 +86932,7 @@ const languages = [
86734
86932
  name: "Go",
86735
86933
  extensions: ["go"],
86736
86934
  load() {
86737
- return __vitePreload(() => import("./index-9ll8evaS.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m2) => m2.go());
86935
+ return __vitePreload(() => import("./index-DyCWQ6pn.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m2) => m2.go());
86738
86936
  }
86739
86937
  }),
86740
86938
  /* @__PURE__ */ LanguageDescription.of({
@@ -86911,7 +87109,7 @@ const languages = [
86911
87109
  alias: ["yml"],
86912
87110
  extensions: ["yaml", "yml"],
86913
87111
  load() {
86914
- return __vitePreload(() => import("./index-BcAunMPD.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m2) => m2.yaml());
87112
+ return __vitePreload(() => import("./index-BkfYRfhG.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m2) => m2.yaml());
86915
87113
  }
86916
87114
  }),
86917
87115
  // Legacy modes ported from CodeMirror 5
@@ -93596,7 +93794,7 @@ function configureNesting$1(tags2 = [], attributes2 = []) {
93596
93794
  return null;
93597
93795
  });
93598
93796
  }
93599
- const descendantOp$2 = 101, Unit$3 = 1, callee$1 = 102, identifier$7 = 103, VariableName$1 = 2;
93797
+ const descendantOp$2 = 101, Unit$3 = 1, callee$1 = 102, identifier$7 = 103, VariableName$2 = 2;
93600
93798
  const space$6 = [
93601
93799
  9,
93602
93800
  10,
@@ -93644,7 +93842,7 @@ const identifiers$a = new ExternalTokenizer((input, stack) => {
93644
93842
  inside2 = true;
93645
93843
  } else {
93646
93844
  if (inside2)
93647
- input.acceptToken(next2 == parenL$2 ? callee$1 : dashes == 2 && stack.canShift(VariableName$1) ? VariableName$1 : identifier$7);
93845
+ input.acceptToken(next2 == parenL$2 ? callee$1 : dashes == 2 && stack.canShift(VariableName$2) ? VariableName$2 : identifier$7);
93648
93846
  break;
93649
93847
  }
93650
93848
  }
@@ -96490,7 +96688,7 @@ const index$d = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
96490
96688
  lessCompletionSource,
96491
96689
  lessLanguage
96492
96690
  }, Symbol.toStringTag, { value: "Module" }));
96493
- const indent$5 = 154, dedent$4 = 155, descendantOp = 156, InterpolationEnd = 1, InterpolationContinue = 2, Unit$1 = 3, callee = 157, identifier$4 = 158, VariableName = 4, InterpolationStart = 5, newline$4 = 159, blankLineStart$1 = 160, eof$2 = 161, whitespace$4 = 162, LineComment$1 = 6, Comment = 7, IndentedMixin = 8, IndentedInclude = 9, Dialect_indented = 0;
96691
+ const indent$5 = 154, dedent$4 = 155, descendantOp = 156, InterpolationEnd = 1, InterpolationContinue = 2, Unit$1 = 3, callee = 157, identifier$4 = 158, VariableName$1 = 4, InterpolationStart = 5, newline$4 = 159, blankLineStart$1 = 160, eof$2 = 161, whitespace$4 = 162, LineComment$1 = 6, Comment = 7, IndentedMixin = 8, IndentedInclude = 9, Dialect_indented = 0;
96494
96692
  const space$3 = [
96495
96693
  9,
96496
96694
  10,
@@ -96652,7 +96850,7 @@ const identifiers$9 = new ExternalTokenizer((input, stack) => {
96652
96850
  break;
96653
96851
  } else {
96654
96852
  if (inside2)
96655
- input.acceptToken(next2 == parenL$1 ? callee : dashes == 2 && stack.canShift(VariableName) ? VariableName : identifier$4);
96853
+ input.acceptToken(next2 == parenL$1 ? callee : dashes == 2 && stack.canShift(VariableName$1) ? VariableName$1 : identifier$4);
96656
96854
  break;
96657
96855
  }
96658
96856
  }
@@ -169350,7 +169548,7 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
169350
169548
  registerLayoutLoaders([
169351
169549
  {
169352
169550
  name: "dagre",
169353
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-OKDRZEBW-BRmuP5ne.js"), true ? __vite__mapDeps([6,7,8,9,10,11,1,2]) : void 0, import.meta.url), "loader")
169551
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-OKDRZEBW-CuBbVbAE.js"), true ? __vite__mapDeps([6,7,8,9,10,11,1,2]) : void 0, import.meta.url), "loader")
169354
169552
  }
169355
169553
  ]);
169356
169554
  }, "registerDefaultLayoutLoaders");
@@ -169940,7 +170138,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
169940
170138
  }, "detector");
169941
170139
  var loader = /* @__PURE__ */ __name(async () => {
169942
170140
  const { diagram: diagram2 } = await __vitePreload(async () => {
169943
- const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-CUWQVTBw.js");
170141
+ const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-DPAI5Oul.js");
169944
170142
  return { diagram: diagram22 };
169945
170143
  }, true ? __vite__mapDeps([12,13,1,2]) : void 0, import.meta.url);
169946
170144
  return { id, diagram: diagram2 };
@@ -169960,7 +170158,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
169960
170158
  }, "detector");
169961
170159
  var loader2 = /* @__PURE__ */ __name(async () => {
169962
170160
  const { diagram: diagram2 } = await __vitePreload(async () => {
169963
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DO9xIDx0.js");
170161
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-COKwAFv7.js");
169964
170162
  return { diagram: diagram22 };
169965
170163
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
169966
170164
  return { id: id2, diagram: diagram2 };
@@ -169986,7 +170184,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
169986
170184
  }, "detector");
169987
170185
  var loader3 = /* @__PURE__ */ __name(async () => {
169988
170186
  const { diagram: diagram2 } = await __vitePreload(async () => {
169989
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DO9xIDx0.js");
170187
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-COKwAFv7.js");
169990
170188
  return { diagram: diagram22 };
169991
170189
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
169992
170190
  return { id: id3, diagram: diagram2 };
@@ -170003,7 +170201,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
170003
170201
  }, "detector");
170004
170202
  var loader4 = /* @__PURE__ */ __name(async () => {
170005
170203
  const { diagram: diagram2 } = await __vitePreload(async () => {
170006
- const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-B_3VyDfP.js");
170204
+ const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-hAtjkKRt.js");
170007
170205
  return { diagram: diagram22 };
170008
170206
  }, true ? __vite__mapDeps([17,15,16,1,2]) : void 0, import.meta.url);
170009
170207
  return { id: id4, diagram: diagram2 };
@@ -170020,7 +170218,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
170020
170218
  }, "detector");
170021
170219
  var loader5 = /* @__PURE__ */ __name(async () => {
170022
170220
  const { diagram: diagram2 } = await __vitePreload(async () => {
170023
- const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-Jz6QBGPa.js");
170221
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-CCkiOue7.js");
170024
170222
  return { diagram: diagram22 };
170025
170223
  }, true ? __vite__mapDeps([18,19,20,21,8,10,11,1,2]) : void 0, import.meta.url);
170026
170224
  return { id: id5, diagram: diagram2 };
@@ -170037,7 +170235,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
170037
170235
  }, "detector");
170038
170236
  var loader6 = /* @__PURE__ */ __name(async () => {
170039
170237
  const { diagram: diagram2 } = await __vitePreload(async () => {
170040
- const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-BK37zBtS.js");
170238
+ const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-DzqtejzU.js");
170041
170239
  return { diagram: diagram22 };
170042
170240
  }, true ? __vite__mapDeps([22,1,2]) : void 0, import.meta.url);
170043
170241
  return { id: id6, diagram: diagram2 };
@@ -170054,7 +170252,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
170054
170252
  }, "detector");
170055
170253
  var loader7 = /* @__PURE__ */ __name(async () => {
170056
170254
  const { diagram: diagram2 } = await __vitePreload(async () => {
170057
- const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-BrTEa3Dg.js");
170255
+ const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-D2pi_Avu.js");
170058
170256
  return { diagram: diagram22 };
170059
170257
  }, true ? __vite__mapDeps([23,21,8,10,11,1,2]) : void 0, import.meta.url);
170060
170258
  return { id: id7, diagram: diagram2 };
@@ -170070,7 +170268,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
170070
170268
  }, "detector");
170071
170269
  var loader8 = /* @__PURE__ */ __name(async () => {
170072
170270
  const { diagram: diagram2 } = await __vitePreload(async () => {
170073
- const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-D_aSId8t.js");
170271
+ const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-CzpV9GLV.js");
170074
170272
  return { diagram: diagram22 };
170075
170273
  }, true ? __vite__mapDeps([24,19,21,8,10,11,25,1,2]) : void 0, import.meta.url);
170076
170274
  return { id: id8, diagram: diagram2 };
@@ -170086,7 +170284,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
170086
170284
  }, "detector");
170087
170285
  var loader9 = /* @__PURE__ */ __name(async () => {
170088
170286
  const { diagram: diagram2 } = await __vitePreload(async () => {
170089
- const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-VtpoaDCW.js");
170287
+ const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-TRIu05Kz.js");
170090
170288
  return { diagram: diagram22 };
170091
170289
  }, true ? __vite__mapDeps([26,1,2]) : void 0, import.meta.url);
170092
170290
  return { id: id9, diagram: diagram2 };
@@ -170103,7 +170301,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
170103
170301
  }, "detector");
170104
170302
  var loader10 = /* @__PURE__ */ __name(async () => {
170105
170303
  const { diagram: diagram2 } = await __vitePreload(async () => {
170106
- const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-gjn-8kXQ.js");
170304
+ const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-BWFbhKHp.js");
170107
170305
  return { diagram: diagram22 };
170108
170306
  }, true ? __vite__mapDeps([27,1,2]) : void 0, import.meta.url);
170109
170307
  return { id: id10, diagram: diagram2 };
@@ -170120,7 +170318,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
170120
170318
  }, "detector");
170121
170319
  var loader11 = /* @__PURE__ */ __name(async () => {
170122
170320
  const { diagram: diagram2 } = await __vitePreload(async () => {
170123
- const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-DmQX7SmX.js");
170321
+ const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-DtZxlcxe.js");
170124
170322
  return { diagram: diagram22 };
170125
170323
  }, true ? __vite__mapDeps([28,15,1,2]) : void 0, import.meta.url);
170126
170324
  return { id: id11, diagram: diagram2 };
@@ -170137,7 +170335,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
170137
170335
  }, "detector");
170138
170336
  var loader12 = /* @__PURE__ */ __name(async () => {
170139
170337
  const { diagram: diagram2 } = await __vitePreload(async () => {
170140
- const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-Cy6jqgLY.js");
170338
+ const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-DXZSfjCv.js");
170141
170339
  return { diagram: diagram22 };
170142
170340
  }, true ? __vite__mapDeps([29,13,20,1,2]) : void 0, import.meta.url);
170143
170341
  return { id: id12, diagram: diagram2 };
@@ -170157,7 +170355,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
170157
170355
  }, "detector");
170158
170356
  var loader13 = /* @__PURE__ */ __name(async () => {
170159
170357
  const { diagram: diagram2 } = await __vitePreload(async () => {
170160
- const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-D_MSeJ_6.js");
170358
+ const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-B-m9p15O.js");
170161
170359
  return { diagram: diagram22 };
170162
170360
  }, true ? __vite__mapDeps([30,31,15,1,2]) : void 0, import.meta.url);
170163
170361
  return { id: id13, diagram: diagram2 };
@@ -170177,7 +170375,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
170177
170375
  }, "detector");
170178
170376
  var loader14 = /* @__PURE__ */ __name(async () => {
170179
170377
  const { diagram: diagram2 } = await __vitePreload(async () => {
170180
- const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-D_MSeJ_6.js");
170378
+ const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-B-m9p15O.js");
170181
170379
  return { diagram: diagram22 };
170182
170380
  }, true ? __vite__mapDeps([32,31,15,1,2]) : void 0, import.meta.url);
170183
170381
  return { id: id14, diagram: diagram2 };
@@ -170197,7 +170395,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
170197
170395
  }, "detector");
170198
170396
  var loader15 = /* @__PURE__ */ __name(async () => {
170199
170397
  const { diagram: diagram2 } = await __vitePreload(async () => {
170200
- const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-B5sjzMc3.js");
170398
+ const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-gJvvYfHT.js");
170201
170399
  return { diagram: diagram22 };
170202
170400
  }, true ? __vite__mapDeps([33,34,15,7,8,9,10,1,2]) : void 0, import.meta.url);
170203
170401
  return { id: id15, diagram: diagram2 };
@@ -170220,7 +170418,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
170220
170418
  }, "detector");
170221
170419
  var loader16 = /* @__PURE__ */ __name(async () => {
170222
170420
  const { diagram: diagram2 } = await __vitePreload(async () => {
170223
- const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-CCntK586.js");
170421
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-DUjC-b8t.js");
170224
170422
  return { diagram: diagram22 };
170225
170423
  }, true ? __vite__mapDeps([35,34,15,1,2]) : void 0, import.meta.url);
170226
170424
  return { id: id16, diagram: diagram2 };
@@ -170237,7 +170435,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
170237
170435
  }, "detector");
170238
170436
  var loader17 = /* @__PURE__ */ __name(async () => {
170239
170437
  const { diagram: diagram2 } = await __vitePreload(async () => {
170240
- const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-cp-7j6JH.js");
170438
+ const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-CYV7gt8_.js");
170241
170439
  return { diagram: diagram22 };
170242
170440
  }, true ? __vite__mapDeps([36,13,25,1,2]) : void 0, import.meta.url);
170243
170441
  return { id: id17, diagram: diagram2 };
@@ -170307,7 +170505,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
170307
170505
  }, "detector");
170308
170506
  var loader18 = /* @__PURE__ */ __name(async () => {
170309
170507
  const { diagram: diagram2 } = await __vitePreload(async () => {
170310
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DO9xIDx0.js");
170508
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-COKwAFv7.js");
170311
170509
  return { diagram: diagram22 };
170312
170510
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
170313
170511
  return { id: id18, diagram: diagram2 };
@@ -170324,7 +170522,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
170324
170522
  }, "detector");
170325
170523
  var loader19 = /* @__PURE__ */ __name(async () => {
170326
170524
  const { diagram: diagram2 } = await __vitePreload(async () => {
170327
- const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-B24Z4NA2.js");
170525
+ const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-DpFxQaCe.js");
170328
170526
  return { diagram: diagram22 };
170329
170527
  }, true ? __vite__mapDeps([37,25,1,2]) : void 0, import.meta.url);
170330
170528
  return { id: id19, diagram: diagram2 };
@@ -170341,7 +170539,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
170341
170539
  }, "detector");
170342
170540
  var loader20 = /* @__PURE__ */ __name(async () => {
170343
170541
  const { diagram: diagram2 } = await __vitePreload(async () => {
170344
- const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-B8ntf-YJ.js");
170542
+ const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-ByeOpUXU.js");
170345
170543
  return { diagram: diagram22 };
170346
170544
  }, true ? __vite__mapDeps([38,39,1,2]) : void 0, import.meta.url);
170347
170545
  return { id: id20, diagram: diagram2 };
@@ -170358,7 +170556,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
170358
170556
  }, "detector");
170359
170557
  var loader21 = /* @__PURE__ */ __name(async () => {
170360
170558
  const { diagram: diagram2 } = await __vitePreload(async () => {
170361
- const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-DT0Ds4_6.js");
170559
+ const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-z_jHtS3N.js");
170362
170560
  return { diagram: diagram22 };
170363
170561
  }, true ? __vite__mapDeps([40,1,2]) : void 0, import.meta.url);
170364
170562
  return { id: id21, diagram: diagram2 };
@@ -170375,7 +170573,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
170375
170573
  }, "detector");
170376
170574
  var loader22 = /* @__PURE__ */ __name(async () => {
170377
170575
  const { diagram: diagram2 } = await __vitePreload(async () => {
170378
- const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-DH2kTl35.js");
170576
+ const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-CsDA2pgF.js");
170379
170577
  return { diagram: diagram22 };
170380
170578
  }, true ? __vite__mapDeps([41,1,2]) : void 0, import.meta.url);
170381
170579
  return { id: id22, diagram: diagram2 };
@@ -170392,7 +170590,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
170392
170590
  }, "detector");
170393
170591
  var loader23 = /* @__PURE__ */ __name(async () => {
170394
170592
  const { diagram: diagram2 } = await __vitePreload(async () => {
170395
- const { diagram: diagram22 } = await import("./diagram-VNBRO52H-Bxh5b-em.js");
170593
+ const { diagram: diagram22 } = await import("./diagram-VNBRO52H-CptIzsnS.js");
170396
170594
  return { diagram: diagram22 };
170397
170595
  }, true ? __vite__mapDeps([42,19,21,8,10,11,1,2]) : void 0, import.meta.url);
170398
170596
  return { id: id23, diagram: diagram2 };
@@ -170408,7 +170606,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
170408
170606
  }, "detector");
170409
170607
  var loader24 = /* @__PURE__ */ __name(async () => {
170410
170608
  const { diagram: diagram2 } = await __vitePreload(async () => {
170411
- const { diagram: diagram22 } = await import("./diagram-SSKATNLV-lmqZ5zjv.js");
170609
+ const { diagram: diagram22 } = await import("./diagram-SSKATNLV-Ddt-5-58.js");
170412
170610
  return { diagram: diagram22 };
170413
170611
  }, true ? __vite__mapDeps([43,19,21,8,10,11,1,2]) : void 0, import.meta.url);
170414
170612
  return { id: id24, diagram: diagram2 };
@@ -170424,7 +170622,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
170424
170622
  }, "detector");
170425
170623
  var loader25 = /* @__PURE__ */ __name(async () => {
170426
170624
  const { diagram: diagram2 } = await __vitePreload(async () => {
170427
- const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-boa_T8E1.js");
170625
+ const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-Ct7Hjgdp.js");
170428
170626
  return { diagram: diagram22 };
170429
170627
  }, true ? __vite__mapDeps([44,11,8,7,16,1,2]) : void 0, import.meta.url);
170430
170628
  return { id: id25, diagram: diagram2 };
@@ -170441,7 +170639,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
170441
170639
  }, "detector");
170442
170640
  var loader26 = /* @__PURE__ */ __name(async () => {
170443
170641
  const { diagram: diagram2 } = await __vitePreload(async () => {
170444
- const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-DzXvnk9f.js");
170642
+ const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-iZe3FGai.js");
170445
170643
  return { diagram: diagram22 };
170446
170644
  }, true ? __vite__mapDeps([45,19,20,21,8,10,11,39,1,2]) : void 0, import.meta.url);
170447
170645
  return { id: id26, diagram: diagram2 };
@@ -171956,6 +172154,133 @@ const isCanvasSupported = (fileName) => {
171956
172154
  const ext = fileName.toLowerCase().split("/").pop()?.split(".").pop() ?? "";
171957
172155
  return canvasSupportedExtensions.has(ext);
171958
172156
  };
172157
+ const FileActionsIconButton = styled$1(IconButton)(({ theme: theme2 }) => ({
172158
+ borderRadius: "0.375rem",
172159
+ // rounded-md
172160
+ padding: theme2.spacing(0.5),
172161
+ left: theme2.spacing(1),
172162
+ display: "flex",
172163
+ alignItems: "center",
172164
+ justifyContent: "center",
172165
+ transition: "background-color 0.2s",
172166
+ background: "transparent",
172167
+ "&:hover": {
172168
+ backgroundColor: theme2.palette.mode === "dark" ? alpha$1(theme2.palette.common.white, 0.08) : alpha$1(theme2.palette.common.black, 0.08)
172169
+ }
172170
+ }));
172171
+ const StyledFileActionsMenu = styled$1(Menu)(({ theme: theme2 }) => ({
172172
+ "& .MuiPaper-root": {
172173
+ minWidth: 180,
172174
+ // shadcn menus are wider
172175
+ boxShadow: theme2.palette.mode === "dark" ? "0px 8px 32px 0px rgba(0,0,0,0.45)" : "0px 8px 32px 0px rgba(0,0,0,0.15)",
172176
+ borderRadius: "0.75rem",
172177
+ // rounded-xl
172178
+ padding: "0.25rem",
172179
+ // p-1
172180
+ background: theme2.palette.background.paper
172181
+ }
172182
+ }));
172183
+ const StyledMenuItem$2 = styled$1(MenuItem)(({ theme: theme2 }) => ({
172184
+ borderRadius: "0.375rem",
172185
+ // rounded-md
172186
+ padding: "0.5rem 0.75rem",
172187
+ // py-2 px-3
172188
+ fontSize: "0.875rem",
172189
+ // text-sm
172190
+ fontWeight: 500,
172191
+ gap: "0.75rem",
172192
+ // gap-3
172193
+ minHeight: "2.25rem",
172194
+ // h-9
172195
+ "&:hover": {
172196
+ backgroundColor: theme2.palette.mode === "dark" ? alpha$1(theme2.palette.primary.main, 0.1) : alpha$1(theme2.palette.primary.main, 0.08)
172197
+ }
172198
+ }));
172199
+ const MenuItemIcon$1 = styled$1(ListItemIcon)(({ theme: theme2 }) => ({
172200
+ color: theme2.palette.text.primary,
172201
+ minWidth: 0,
172202
+ marginRight: "0.75rem",
172203
+ // gap-3
172204
+ display: "flex",
172205
+ alignItems: "center",
172206
+ justifyContent: "center",
172207
+ "& svg": {
172208
+ width: "1.125rem",
172209
+ // w-4.5
172210
+ height: "1.125rem",
172211
+ strokeWidth: 1.8
172212
+ }
172213
+ }));
172214
+ const FileActionsMenu = ({
172215
+ filePath,
172216
+ tooltip = "File actions",
172217
+ icon: icon2,
172218
+ "aria-label": ariaLabel = "File actions",
172219
+ onShowInCanvas
172220
+ }) => {
172221
+ const [anchorEl, setAnchorEl] = reactExports.useState(null);
172222
+ const handleOpenMenu = (event) => {
172223
+ setAnchorEl(event.currentTarget);
172224
+ };
172225
+ const handleCloseMenu = () => {
172226
+ setAnchorEl(null);
172227
+ };
172228
+ const handleOpenFile = () => {
172229
+ handleCloseMenu();
172230
+ if (filePath) {
172231
+ window.api.openFile(filePath);
172232
+ }
172233
+ };
172234
+ const handleShowInCanvas = () => {
172235
+ handleCloseMenu();
172236
+ if (onShowInCanvas) {
172237
+ onShowInCanvas();
172238
+ }
172239
+ };
172240
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
172241
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: tooltip, arrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FileActionsIconButton, { "aria-label": ariaLabel, onClick: handleOpenMenu, children: icon2 ?? /* @__PURE__ */ jsxRuntimeExports.jsx(Ellipsis, { style: { width: "1.125rem", height: "1.125rem" } }) }) }),
172242
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
172243
+ StyledFileActionsMenu,
172244
+ {
172245
+ anchorEl,
172246
+ open: Boolean(anchorEl),
172247
+ onClose: handleCloseMenu,
172248
+ onClick: (e3) => e3.stopPropagation(),
172249
+ anchorOrigin: {
172250
+ vertical: "bottom",
172251
+ horizontal: "right"
172252
+ },
172253
+ transformOrigin: {
172254
+ vertical: "top",
172255
+ horizontal: "right"
172256
+ },
172257
+ children: [
172258
+ onShowInCanvas && /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledMenuItem$2, { onClick: handleShowInCanvas, children: [
172259
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(LayoutGrid, { "aria-label": "Show in Canvas" }) }),
172260
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Show in Canvas" })
172261
+ ] }),
172262
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledMenuItem$2, { onClick: handleOpenFile, children: [
172263
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(File$1, { "aria-label": "Open File" }) }),
172264
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Open File" })
172265
+ ] }),
172266
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
172267
+ StyledMenuItem$2,
172268
+ {
172269
+ onClick: () => {
172270
+ handleCloseMenu();
172271
+ window.api.showItemInFolder(filePath);
172272
+ },
172273
+ children: [
172274
+ /* @__PURE__ */ jsxRuntimeExports.jsx(MenuItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { "aria-label": "Open Folder" }) }),
172275
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Open Folder" })
172276
+ ]
172277
+ }
172278
+ )
172279
+ ]
172280
+ }
172281
+ )
172282
+ ] });
172283
+ };
171959
172284
  const defaultFiles = [];
171960
172285
  const StyledCard$1 = styled$1(Card)(({ theme: theme2 }) => ({
171961
172286
  display: "flex",
@@ -172221,40 +172546,64 @@ const CanvasFileViewer = ({
172221
172546
  }
172222
172547
  );
172223
172548
  }
172224
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { p: 2, height: "100%", overflowY: "auto" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { container: true, spacing: 2, children: memoizedFiles.map((fileDoc) => {
172549
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: { p: 3, height: "100%", overflowY: "auto" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { container: true, spacing: 2, children: memoizedFiles.map((fileDoc) => {
172225
172550
  const IconComponent = getIconForFileType(fileDoc.type);
172226
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 6, sm: 4, md: 4, children: /* @__PURE__ */ jsxRuntimeExports.jsx(StyledCard$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
172227
- CardActionArea,
172228
- {
172229
- onClick: () => handleFileClick(fileDoc),
172230
- sx: { display: "flex", flexDirection: "column", flexGrow: 1 },
172231
- children: [
172232
- fileDoc.type === "image" ? /* @__PURE__ */ jsxRuntimeExports.jsx(
172233
- StyledImage,
172234
- {
172235
- src: getUrl2(fileDoc.path),
172236
- alt: fileDoc.title,
172237
- title: fileDoc.title
172238
- }
172239
- ) : fileDoc.type === "video" ? /* @__PURE__ */ jsxRuntimeExports.jsx(
172240
- StyledVideo,
172241
- {
172242
- src: getUrl2(fileDoc.path),
172243
- title: fileDoc.title,
172244
- controls: true,
172245
- preload: "metadata"
172246
- }
172247
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(IconBox, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconComponent, { size: 48, strokeWidth: 1 }) }),
172248
- /* @__PURE__ */ jsxRuntimeExports.jsx(
172249
- CardContent,
172551
+ const isLocalFile = !fileDoc.path.startsWith("data:") && !fileDoc.path.startsWith("http");
172552
+ const normalizedPath = fileDoc.path.startsWith("file://") ? fileDoc.path.substring(7) : fileDoc.path;
172553
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Grid, { item: true, xs: 6, sm: 4, md: 4, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledCard$1, { sx: { position: "relative" }, children: [
172554
+ isLocalFile && /* @__PURE__ */ jsxRuntimeExports.jsx(
172555
+ Box,
172556
+ {
172557
+ sx: {
172558
+ position: "absolute",
172559
+ top: 4,
172560
+ right: 4,
172561
+ zIndex: 2
172562
+ },
172563
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
172564
+ FileActionsMenu,
172250
172565
  {
172251
- sx: { width: "100%", pt: 1, pb: "8px !important" },
172252
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: fileDoc.title, placement: "bottom", arrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FileNameTypography, { variant: "caption", children: getFileName$4(fileDoc.title) }) })
172566
+ filePath: normalizedPath,
172567
+ tooltip: "File actions",
172568
+ "aria-label": "File actions",
172569
+ onShowInCanvas: () => handleFileClick(fileDoc)
172253
172570
  }
172254
172571
  )
172255
- ]
172256
- }
172257
- ) }) }, fileDoc.id);
172572
+ }
172573
+ ),
172574
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
172575
+ CardActionArea,
172576
+ {
172577
+ onClick: () => handleFileClick(fileDoc),
172578
+ sx: { display: "flex", flexDirection: "column", flexGrow: 1 },
172579
+ children: [
172580
+ fileDoc.type === "image" ? /* @__PURE__ */ jsxRuntimeExports.jsx(
172581
+ StyledImage,
172582
+ {
172583
+ src: getUrl2(fileDoc.path),
172584
+ alt: fileDoc.title,
172585
+ title: fileDoc.title
172586
+ }
172587
+ ) : fileDoc.type === "video" ? /* @__PURE__ */ jsxRuntimeExports.jsx(
172588
+ StyledVideo,
172589
+ {
172590
+ src: getUrl2(fileDoc.path),
172591
+ title: fileDoc.title,
172592
+ controls: true,
172593
+ preload: "metadata"
172594
+ }
172595
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(IconBox, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconComponent, { size: 48, strokeWidth: 1 }) }),
172596
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
172597
+ CardContent,
172598
+ {
172599
+ sx: { width: "100%", pt: 1, pb: "8px !important" },
172600
+ 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) }) })
172601
+ }
172602
+ )
172603
+ ]
172604
+ }
172605
+ )
172606
+ ] }) }, fileDoc.id);
172258
172607
  }) }) });
172259
172608
  };
172260
172609
  const StyledTabs = styled$1(Tabs)(({ theme: theme2 }) => ({
@@ -172373,6 +172722,897 @@ const CanvasTabsComponent = ({
172373
172722
  ) });
172374
172723
  };
172375
172724
  const CanvasTabs = reactExports.memo(CanvasTabsComponent);
172725
+ const useAgentExecutionVariables = (agentId) => {
172726
+ const client = reactExports.useMemo(
172727
+ () => createLocalOperatorClient(apiConfig.baseUrl),
172728
+ []
172729
+ );
172730
+ return useQuery({
172731
+ queryKey: ["agentExecutionVariables", agentId],
172732
+ queryFn: async () => {
172733
+ if (!agentId) {
172734
+ throw new Error("Agent ID is required to fetch execution variables.");
172735
+ }
172736
+ return client.agents.listAgentExecutionVariables(agentId);
172737
+ },
172738
+ enabled: !!agentId
172739
+ // Only run the query if agentId is provided
172740
+ });
172741
+ };
172742
+ const useCreateAgentExecutionVariable = () => {
172743
+ const queryClient2 = useQueryClient();
172744
+ const client = reactExports.useMemo(
172745
+ () => createLocalOperatorClient(apiConfig.baseUrl),
172746
+ []
172747
+ );
172748
+ return useMutation({
172749
+ mutationFn: async ({ agentId, variableData }) => client.agents.createAgentExecutionVariable(agentId, variableData),
172750
+ onSuccess: (_data, variables) => {
172751
+ queryClient2.invalidateQueries({
172752
+ queryKey: ["agentExecutionVariables", variables.agentId]
172753
+ });
172754
+ showSuccessToast("Variable created successfully.");
172755
+ },
172756
+ onError: (error) => {
172757
+ showErrorToast(`Failed to create variable: ${error.message}`);
172758
+ }
172759
+ });
172760
+ };
172761
+ const useUpdateAgentExecutionVariable = () => {
172762
+ const queryClient2 = useQueryClient();
172763
+ const client = reactExports.useMemo(
172764
+ () => createLocalOperatorClient(apiConfig.baseUrl),
172765
+ []
172766
+ );
172767
+ return useMutation({
172768
+ mutationFn: async ({ agentId, variableKey, variableData }) => client.agents.updateAgentExecutionVariable(
172769
+ agentId,
172770
+ variableKey,
172771
+ variableData
172772
+ ),
172773
+ onSuccess: (_data, variables) => {
172774
+ queryClient2.invalidateQueries({
172775
+ queryKey: ["agentExecutionVariables", variables.agentId]
172776
+ });
172777
+ showSuccessToast("Variable updated successfully.");
172778
+ },
172779
+ onError: (error) => {
172780
+ showErrorToast(`Failed to update variable: ${error.message}`);
172781
+ }
172782
+ });
172783
+ };
172784
+ const useDeleteAgentExecutionVariable = () => {
172785
+ const queryClient2 = useQueryClient();
172786
+ const client = reactExports.useMemo(
172787
+ () => createLocalOperatorClient(apiConfig.baseUrl),
172788
+ []
172789
+ );
172790
+ return useMutation({
172791
+ mutationFn: async ({ agentId, variableKey }) => client.agents.deleteAgentExecutionVariable(agentId, variableKey),
172792
+ onSuccess: (_data, variables) => {
172793
+ queryClient2.invalidateQueries({
172794
+ queryKey: ["agentExecutionVariables", variables.agentId]
172795
+ });
172796
+ showSuccessToast("Variable deleted successfully.");
172797
+ },
172798
+ onError: (error) => {
172799
+ showErrorToast(`Failed to delete variable: ${error.message}`);
172800
+ }
172801
+ });
172802
+ };
172803
+ const StyledFormGrid$1 = styled$1(Grid)(({ theme: theme2 }) => ({
172804
+ paddingTop: theme2.spacing(1)
172805
+ }));
172806
+ const FieldLabel$3 = styled$1("label")(({ theme: theme2 }) => ({
172807
+ display: "block",
172808
+ marginBottom: theme2.spacing(0.75),
172809
+ color: theme2.palette.text.secondary,
172810
+ fontWeight: 500,
172811
+ fontSize: "0.875rem",
172812
+ lineHeight: 1.5
172813
+ }));
172814
+ const FullWidthTextField$1 = styled$1(TextField)(({ theme: theme2 }) => ({
172815
+ width: "100%",
172816
+ "& .MuiOutlinedInput-root": {
172817
+ borderRadius: 6,
172818
+ border: `1px solid ${theme2.palette.divider}`,
172819
+ backgroundColor: theme2.palette.background.paper,
172820
+ minHeight: "36px",
172821
+ // height: "36px", // Allow dynamic height for multiline
172822
+ padding: 0,
172823
+ transition: "border-color 0.2s ease, box-shadow 0.2s ease",
172824
+ "&:hover": {
172825
+ borderColor: theme2.palette.text.secondary
172826
+ },
172827
+ "&.Mui-focused": {
172828
+ borderColor: theme2.palette.primary.main,
172829
+ boxShadow: `0 0 0 2px ${alpha$1(theme2.palette.primary.main, 0.2)}`
172830
+ },
172831
+ "& .MuiOutlinedInput-notchedOutline": {
172832
+ border: "none"
172833
+ },
172834
+ "&:not(.MuiInputBase-multiline) .MuiInputBase-input": {
172835
+ height: "calc(36px - 16px)",
172836
+ padding: "8px 12px"
172837
+ },
172838
+ "&.MuiInputBase-multiline": {
172839
+ minHeight: "36px",
172840
+ height: "auto",
172841
+ padding: "8px 12px"
172842
+ // Ensure padding for multiline input area
172843
+ }
172844
+ },
172845
+ "& .MuiInputBase-input": {
172846
+ fontSize: "0.875rem",
172847
+ lineHeight: 1.5,
172848
+ boxSizing: "border-box",
172849
+ "&.MuiInputBase-inputMultiline": {
172850
+ padding: "0px",
172851
+ // Padding is handled by the root's multiline style
172852
+ height: "auto"
172853
+ }
172854
+ }
172855
+ }));
172856
+ const FullWidthFormControl$1 = styled$1(FormControl)(({ theme: theme2 }) => ({
172857
+ width: "100%",
172858
+ "& .MuiOutlinedInput-root": {
172859
+ borderRadius: 6,
172860
+ border: `1px solid ${theme2.palette.divider}`,
172861
+ backgroundColor: theme2.palette.background.paper,
172862
+ minHeight: "36px",
172863
+ height: "36px",
172864
+ padding: "0 !important",
172865
+ transition: "border-color 0.2s ease, box-shadow 0.2s ease",
172866
+ "&:hover": {
172867
+ borderColor: theme2.palette.text.secondary
172868
+ },
172869
+ "&.Mui-focused": {
172870
+ borderColor: theme2.palette.primary.main,
172871
+ boxShadow: `0 0 0 2px ${alpha$1(theme2.palette.primary.main, 0.2)}`
172872
+ },
172873
+ "& .MuiOutlinedInput-notchedOutline": {
172874
+ border: "none"
172875
+ }
172876
+ },
172877
+ "& .MuiSelect-select": {
172878
+ padding: "8px 12px !important",
172879
+ fontSize: "0.875rem",
172880
+ lineHeight: 1.5,
172881
+ height: "calc(36px - 16px) !important",
172882
+ boxSizing: "border-box",
172883
+ display: "flex",
172884
+ alignItems: "center"
172885
+ }
172886
+ }));
172887
+ const StyledMenuItem$1 = styled$1(MenuItem)(({ theme: theme2 }) => ({
172888
+ fontSize: "0.875rem",
172889
+ paddingTop: theme2.spacing(1),
172890
+ paddingBottom: theme2.spacing(1),
172891
+ "&:hover": {
172892
+ backgroundColor: alpha$1(theme2.palette.action.hover, 0.08)
172893
+ },
172894
+ "&.Mui-selected": {
172895
+ backgroundColor: alpha$1(theme2.palette.primary.main, 0.12),
172896
+ "&:hover": {
172897
+ backgroundColor: alpha$1(theme2.palette.primary.main, 0.16)
172898
+ }
172899
+ }
172900
+ }));
172901
+ const VARIABLE_TYPES = [
172902
+ "string",
172903
+ "int",
172904
+ "float",
172905
+ "bool",
172906
+ "dict",
172907
+ "list"
172908
+ ];
172909
+ const getDefaultFormState = (initialData) => {
172910
+ if (initialData) {
172911
+ let valueString;
172912
+ if (initialData.type === "object" || initialData.type === "array") {
172913
+ try {
172914
+ valueString = JSON.stringify(initialData.value, null, 2);
172915
+ } catch (_2) {
172916
+ valueString = String(initialData.value);
172917
+ }
172918
+ } else if (initialData.type === "boolean") {
172919
+ valueString = String(initialData.value);
172920
+ } else {
172921
+ valueString = String(initialData.value);
172922
+ }
172923
+ return {
172924
+ key: initialData.key,
172925
+ type: initialData.type,
172926
+ value: valueString
172927
+ };
172928
+ }
172929
+ return {
172930
+ key: "",
172931
+ type: "string",
172932
+ value: ""
172933
+ };
172934
+ };
172935
+ const VariableFormDialog = ({
172936
+ open: open2,
172937
+ onClose,
172938
+ onSubmit,
172939
+ initialData
172940
+ }) => {
172941
+ const [formData, setFormData] = reactExports.useState(
172942
+ getDefaultFormState(initialData)
172943
+ );
172944
+ const [isSubmitting, setIsSubmitting] = reactExports.useState(false);
172945
+ const isEditMode = !!initialData;
172946
+ reactExports.useEffect(() => {
172947
+ if (open2) {
172948
+ setFormData(getDefaultFormState(initialData));
172949
+ }
172950
+ }, [open2, initialData]);
172951
+ const handleChange = (event) => {
172952
+ const { name: name2, value } = event.target;
172953
+ setFormData((prev2) => ({
172954
+ ...prev2,
172955
+ [name2]: value
172956
+ }));
172957
+ };
172958
+ const handleSubmit = async () => {
172959
+ setIsSubmitting(true);
172960
+ try {
172961
+ const variableToSubmit = {
172962
+ key: formData.key,
172963
+ type: formData.type,
172964
+ value: formData.value
172965
+ };
172966
+ await onSubmit(variableToSubmit);
172967
+ onClose();
172968
+ } catch (error) {
172969
+ console.error("Failed to submit variable:", error);
172970
+ showErrorToast(
172971
+ `Failed to save variable: ${error instanceof Error ? error.message : "Unknown error"}`
172972
+ );
172973
+ } finally {
172974
+ setIsSubmitting(false);
172975
+ }
172976
+ };
172977
+ const dialogTitle = isEditMode ? "Edit Execution Variable" : "Create Execution Variable";
172978
+ const dialogActions = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
172979
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
172980
+ SecondaryButton$1,
172981
+ {
172982
+ onClick: onClose,
172983
+ disabled: isSubmitting,
172984
+ startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(SquareX, { size: 18 }),
172985
+ children: "Cancel"
172986
+ }
172987
+ ),
172988
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
172989
+ PrimaryButton$1,
172990
+ {
172991
+ onClick: handleSubmit,
172992
+ disabled: isSubmitting || !formData.key.trim(),
172993
+ startIcon: isSubmitting ? /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 18, color: "inherit" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Save, { size: 18 }),
172994
+ children: isSubmitting ? "Saving..." : isEditMode ? "Save Changes" : "Create Variable"
172995
+ }
172996
+ )
172997
+ ] });
172998
+ const valueFieldLabel = reactExports.useMemo(() => {
172999
+ switch (formData.type) {
173000
+ case "object":
173001
+ return "Value (JSON Object)";
173002
+ case "array":
173003
+ return "Value (JSON Array)";
173004
+ case "boolean":
173005
+ return "Value (true/false)";
173006
+ default:
173007
+ return "Value";
173008
+ }
173009
+ }, [formData.type]);
173010
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
173011
+ BaseDialog,
173012
+ {
173013
+ open: open2,
173014
+ onClose,
173015
+ title: dialogTitle,
173016
+ actions: dialogActions,
173017
+ maxWidth: "sm",
173018
+ fullWidth: true,
173019
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledFormGrid$1, { container: true, spacing: 2.5, children: [
173020
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { item: true, xs: 12, children: [
173021
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$3, { htmlFor: "variable-key", children: [
173022
+ "Name (Key)",
173023
+ " ",
173024
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { component: "span", color: "error.main", sx: { ml: 0.5 }, children: "*" }),
173025
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173026
+ Tooltip$1,
173027
+ {
173028
+ title: "The unique identifier for the variable (e.g., 'api_key', 'user_preference'). Cannot be changed after creation.",
173029
+ placement: "top-start",
173030
+ arrow: true,
173031
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", sx: { color: "info.main", ml: 0.5 }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Info$1, { size: 14 }) })
173032
+ }
173033
+ )
173034
+ ] }),
173035
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173036
+ FullWidthTextField$1,
173037
+ {
173038
+ id: "variable-key",
173039
+ name: "key",
173040
+ value: formData.key,
173041
+ onChange: handleChange,
173042
+ required: true,
173043
+ disabled: isSubmitting || isEditMode,
173044
+ placeholder: "e.g., my_variable_name"
173045
+ }
173046
+ )
173047
+ ] }),
173048
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { item: true, xs: 12, children: [
173049
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$3, { htmlFor: "variable-type-select", children: [
173050
+ "Type",
173051
+ " ",
173052
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { component: "span", color: "error.main", sx: { ml: 0.5 }, children: "*" })
173053
+ ] }),
173054
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173055
+ FullWidthFormControl$1,
173056
+ {
173057
+ required: true,
173058
+ disabled: isSubmitting,
173059
+ id: "variable-type-select-formcontrol",
173060
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
173061
+ Select,
173062
+ {
173063
+ id: "variable-type-select",
173064
+ name: "type",
173065
+ value: formData.type,
173066
+ onChange: handleChange,
173067
+ children: VARIABLE_TYPES.map((type2) => /* @__PURE__ */ jsxRuntimeExports.jsx(StyledMenuItem$1, { value: type2, children: type2.charAt(0).toUpperCase() + type2.slice(1) }, type2))
173068
+ }
173069
+ )
173070
+ }
173071
+ )
173072
+ ] }),
173073
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Grid, { item: true, xs: 12, children: [
173074
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldLabel$3, { htmlFor: "variable-value", children: [
173075
+ valueFieldLabel,
173076
+ " ",
173077
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { component: "span", color: "error.main", sx: { ml: 0.5 }, children: "*" })
173078
+ ] }),
173079
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173080
+ FullWidthTextField$1,
173081
+ {
173082
+ id: "variable-value",
173083
+ name: "value",
173084
+ value: formData.value,
173085
+ onChange: handleChange,
173086
+ required: true,
173087
+ disabled: isSubmitting,
173088
+ multiline: true,
173089
+ rows: formData.type === "object" || formData.type === "array" ? 5 : 2,
173090
+ placeholder: formData.type === "object" ? `{ "example_key": "example_value" }` : formData.type === "array" ? `[ "item1", "item2" ]` : formData.type === "boolean" ? "true or false" : "Enter variable value"
173091
+ }
173092
+ ),
173093
+ (formData.type === "object" || formData.type === "array") && /* @__PURE__ */ jsxRuntimeExports.jsx(
173094
+ Typography,
173095
+ {
173096
+ variant: "caption",
173097
+ color: "text.secondary",
173098
+ sx: { mt: 0.5, display: "block" },
173099
+ children: "Enter a valid JSON structure."
173100
+ }
173101
+ )
173102
+ ] })
173103
+ ] })
173104
+ }
173105
+ );
173106
+ };
173107
+ const VariableListContainer = styled$1(Box)(({ theme: theme2 }) => ({
173108
+ border: `1px solid ${theme2.palette.divider}`,
173109
+ borderRadius: theme2.shape.borderRadius,
173110
+ backgroundColor: theme2.palette.mode === "dark" ? alpha$1(theme2.palette.background.paper, 0.3) : alpha$1(theme2.palette.grey[50], 0.7),
173111
+ overflow: "auto",
173112
+ maxHeight: "100%",
173113
+ "&::-webkit-scrollbar": {
173114
+ width: "8px"
173115
+ },
173116
+ "&::-webkit-scrollbar-thumb": {
173117
+ backgroundColor: theme2.palette.mode === "dark" ? "rgba(255, 255, 255, 0.1)" : "rgba(0, 0, 0, 0.2)",
173118
+ borderRadius: "4px"
173119
+ },
173120
+ scrollbarWidth: "thin",
173121
+ scrollbarColor: theme2.palette.mode === "dark" ? "rgba(255,255,255,0.1) transparent" : "rgba(0,0,0,0.2) transparent",
173122
+ flex: 1
173123
+ }));
173124
+ const VariableItem = styled$1(Box)(({ theme: theme2 }) => ({
173125
+ display: "flex",
173126
+ alignItems: "center",
173127
+ padding: theme2.spacing(0.75, 1),
173128
+ borderBottom: `1px solid ${theme2.palette.divider}`,
173129
+ "&:last-child": {
173130
+ borderBottom: "none"
173131
+ },
173132
+ fontSize: "0.8rem"
173133
+ }));
173134
+ const VariableName = styled$1(Typography)(({ theme: theme2 }) => ({
173135
+ marginLeft: theme2.spacing(0.5),
173136
+ fontWeight: 500,
173137
+ color: theme2.palette.text.primary,
173138
+ marginRight: theme2.spacing(1),
173139
+ fontFamily: "monospace",
173140
+ // PyCharm uses monospace for variables
173141
+ fontSize: "0.8rem"
173142
+ }));
173143
+ const VariableType = styled$1(Typography)(({ theme: theme2 }) => ({
173144
+ color: theme2.palette.text.secondary,
173145
+ fontStyle: "italic",
173146
+ marginRight: theme2.spacing(1),
173147
+ fontFamily: "monospace",
173148
+ fontSize: "0.8rem"
173149
+ }));
173150
+ const VariableValue = styled$1(Typography)(({ theme: theme2 }) => ({
173151
+ color: theme2.palette.text.secondary,
173152
+ flexGrow: 1,
173153
+ whiteSpace: "nowrap",
173154
+ overflow: "hidden",
173155
+ textOverflow: "ellipsis",
173156
+ fontFamily: "monospace",
173157
+ maxWidth: "100%",
173158
+ fontSize: "0.8rem"
173159
+ }));
173160
+ const VariableActions = styled$1(Box)(({ theme: theme2 }) => ({
173161
+ display: "flex",
173162
+ alignItems: "center",
173163
+ marginLeft: theme2.spacing(1)
173164
+ }));
173165
+ const CenteredBox = styled$1(Box)(({ theme: theme2 }) => ({
173166
+ display: "flex",
173167
+ flexDirection: "column",
173168
+ alignItems: "center",
173169
+ justifyContent: "center",
173170
+ height: "100%",
173171
+ padding: theme2.spacing(2),
173172
+ textAlign: "center"
173173
+ }));
173174
+ const ExpandButton = styled$1(IconButton)(({ theme: theme2 }) => ({
173175
+ width: 20,
173176
+ height: 20,
173177
+ marginRight: theme2.spacing(0.5),
173178
+ border: `1px solid ${theme2.palette.divider}`,
173179
+ borderRadius: 2,
173180
+ padding: 0,
173181
+ "&:hover": {
173182
+ backgroundColor: alpha$1(theme2.palette.action.hover, 0.08)
173183
+ }
173184
+ }));
173185
+ const truncateText = (text4, maxLength) => {
173186
+ if (text4.length <= maxLength) return text4;
173187
+ return `${text4.substring(0, maxLength)}...`;
173188
+ };
173189
+ const EDITABLE_TYPES = /* @__PURE__ */ new Set(["str", "int", "float", "list", "dict", "bool"]);
173190
+ const VariableRow = reactExports.memo(
173191
+ ({ variable: variable2, onEdit, onDelete }) => {
173192
+ const theme2 = useTheme$2();
173193
+ const [expanded, setExpanded] = reactExports.useState(false);
173194
+ const [copied, setCopied] = reactExports.useState(false);
173195
+ const isEditable = reactExports.useMemo(
173196
+ () => EDITABLE_TYPES.has(variable2.type),
173197
+ [variable2.type]
173198
+ );
173199
+ const stringValue = reactExports.useMemo(() => String(variable2.value), [variable2.value]);
173200
+ const truncatedValue = reactExports.useMemo(
173201
+ () => truncateText(stringValue, 200),
173202
+ [stringValue]
173203
+ );
173204
+ const tooltipValue = reactExports.useMemo(
173205
+ () => truncateText(stringValue, 1e3),
173206
+ [stringValue]
173207
+ );
173208
+ const typeDisplay = reactExports.useMemo(() => `{${variable2.type}}`, [variable2.type]);
173209
+ const itemStyles = reactExports.useMemo(
173210
+ () => ({
173211
+ cursor: "pointer",
173212
+ "&:hover": {
173213
+ backgroundColor: alpha$1(theme2.palette.action.hover, 0.08)
173214
+ }
173215
+ }),
173216
+ [theme2.palette.action.hover]
173217
+ );
173218
+ const expandedContentStyles = reactExports.useMemo(
173219
+ () => ({
173220
+ pl: 4,
173221
+ py: 1,
173222
+ backgroundColor: alpha$1(theme2.palette.background.default, 0.05),
173223
+ borderBottom: `1px solid ${theme2.palette.divider}`,
173224
+ fontFamily: "monospace",
173225
+ fontSize: "0.8rem",
173226
+ whiteSpace: "pre-wrap",
173227
+ wordBreak: "break-word",
173228
+ maxHeight: "300px",
173229
+ overflow: "auto",
173230
+ "&::-webkit-scrollbar": {
173231
+ width: "8px"
173232
+ },
173233
+ "&::-webkit-scrollbar-thumb": {
173234
+ backgroundColor: theme2.palette.mode === "dark" ? "rgba(255, 255, 255, 0.1)" : "rgba(0, 0, 0, 0.2)",
173235
+ borderRadius: "4px"
173236
+ },
173237
+ scrollbarWidth: "thin",
173238
+ scrollbarColor: theme2.palette.mode === "dark" ? "rgba(255,255,255,0.1) transparent" : "rgba(0,0,0,0.2) transparent"
173239
+ }),
173240
+ [
173241
+ theme2.palette.background.default,
173242
+ theme2.palette.divider,
173243
+ theme2.palette.mode
173244
+ ]
173245
+ );
173246
+ const handleToggleExpand = reactExports.useCallback(() => {
173247
+ setExpanded((prev2) => !prev2);
173248
+ }, []);
173249
+ const handleEdit = reactExports.useCallback(
173250
+ (e3) => {
173251
+ e3.stopPropagation();
173252
+ onEdit(variable2);
173253
+ },
173254
+ [onEdit, variable2]
173255
+ );
173256
+ const handleDelete2 = reactExports.useCallback(
173257
+ (e3) => {
173258
+ e3.stopPropagation();
173259
+ onDelete(variable2.key);
173260
+ },
173261
+ [onDelete, variable2.key]
173262
+ );
173263
+ const handleCopy = reactExports.useCallback(
173264
+ async (e3) => {
173265
+ e3.stopPropagation();
173266
+ try {
173267
+ await navigator.clipboard.writeText(stringValue);
173268
+ setCopied(true);
173269
+ setTimeout(() => setCopied(false), 2e3);
173270
+ } catch (error) {
173271
+ console.error("Failed to copy to clipboard:", error);
173272
+ }
173273
+ },
173274
+ [stringValue]
173275
+ );
173276
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
173277
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(VariableItem, { sx: itemStyles, onClick: handleToggleExpand, children: [
173278
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandButton, { size: "small", children: expanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(Minus$1, { size: 12 }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Plus$1, { size: 12 }) }),
173279
+ /* @__PURE__ */ jsxRuntimeExports.jsx(VariableName, { variant: "body2", children: variable2.key }),
173280
+ /* @__PURE__ */ jsxRuntimeExports.jsx(VariableType, { variant: "caption", children: typeDisplay }),
173281
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: tooltipValue, placement: "top-start", arrow: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(VariableValue, { variant: "body2", children: truncatedValue }) }),
173282
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(VariableActions, { children: [
173283
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: copied ? "Copied!" : "Copy Value", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
173284
+ IconButton,
173285
+ {
173286
+ onClick: handleCopy,
173287
+ size: "small",
173288
+ sx: { mr: 0.25, padding: theme2.spacing(0.5) },
173289
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { size: 14 })
173290
+ }
173291
+ ) }),
173292
+ isEditable ? /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Edit Variable", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
173293
+ IconButton,
173294
+ {
173295
+ onClick: handleEdit,
173296
+ size: "small",
173297
+ sx: { mr: 0.25, padding: theme2.spacing(0.5) },
173298
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Pen, { size: 14 })
173299
+ }
173300
+ ) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "This variable can't be edited because its type is not yet supported for editing.", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
173301
+ IconButton,
173302
+ {
173303
+ size: "small",
173304
+ sx: {
173305
+ mr: 0.25,
173306
+ padding: theme2.spacing(0.5),
173307
+ opacity: 0.4,
173308
+ cursor: "not-allowed"
173309
+ },
173310
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Pen, { size: 14 })
173311
+ }
173312
+ ) }),
173313
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Delete Variable", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
173314
+ IconButton,
173315
+ {
173316
+ onClick: handleDelete2,
173317
+ size: "small",
173318
+ color: "error",
173319
+ sx: { padding: theme2.spacing(0.5) },
173320
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { size: 14 })
173321
+ }
173322
+ ) })
173323
+ ] })
173324
+ ] }),
173325
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: expanded, timeout: "auto", unmountOnExit: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { sx: expandedContentStyles, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
173326
+ Typography,
173327
+ {
173328
+ variant: "caption",
173329
+ color: "text.secondary",
173330
+ sx: { fontFamily: "monospace", fontSize: "0.8rem" },
173331
+ children: stringValue
173332
+ }
173333
+ ) }) })
173334
+ ] });
173335
+ }
173336
+ );
173337
+ VariableRow.displayName = "VariableRow";
173338
+ const CanvasVariablesViewer = reactExports.memo(
173339
+ ({ conversationId }) => {
173340
+ const agentId = conversationId;
173341
+ const theme2 = useTheme$2();
173342
+ const [isFormOpen, setIsFormOpen] = reactExports.useState(false);
173343
+ const [editingVariable, setEditingVariable] = reactExports.useState(null);
173344
+ const [isDeleteConfirmOpen, setIsDeleteConfirmOpen] = reactExports.useState(false);
173345
+ const [variableToDeleteKey, setVariableToDeleteKey] = reactExports.useState(null);
173346
+ const {
173347
+ data: variablesResponse,
173348
+ isLoading,
173349
+ error,
173350
+ isError
173351
+ // refetch: refetchVariables, // Not directly used, relying on query invalidation
173352
+ } = useAgentExecutionVariables(agentId);
173353
+ const createVariableMutation = useCreateAgentExecutionVariable();
173354
+ const updateVariableMutation = useUpdateAgentExecutionVariable();
173355
+ const deleteVariableMutation = useDeleteAgentExecutionVariable();
173356
+ const variables = reactExports.useMemo(
173357
+ () => variablesResponse?.result?.execution_variables ?? [],
173358
+ [variablesResponse?.result?.execution_variables]
173359
+ );
173360
+ const handleOpenCreateForm = reactExports.useCallback(() => {
173361
+ setEditingVariable(null);
173362
+ setIsFormOpen(true);
173363
+ }, []);
173364
+ const handleOpenEditForm = reactExports.useCallback((variable2) => {
173365
+ setEditingVariable(variable2);
173366
+ setIsFormOpen(true);
173367
+ }, []);
173368
+ const handleCloseForm = reactExports.useCallback(() => {
173369
+ setIsFormOpen(false);
173370
+ setEditingVariable(null);
173371
+ }, []);
173372
+ const handleSubmitVariableForm = reactExports.useCallback(
173373
+ async (data2) => {
173374
+ if (!agentId) {
173375
+ showErrorToast("Agent ID is missing.");
173376
+ return;
173377
+ }
173378
+ try {
173379
+ if (editingVariable) {
173380
+ await updateVariableMutation.mutateAsync({
173381
+ agentId,
173382
+ variableKey: editingVariable.key,
173383
+ // Key cannot be changed
173384
+ variableData: { ...data2, key: editingVariable.key }
173385
+ });
173386
+ } else {
173387
+ await createVariableMutation.mutateAsync({
173388
+ agentId,
173389
+ variableData: data2
173390
+ });
173391
+ }
173392
+ } catch (e3) {
173393
+ console.error("Submission failed in component:", e3);
173394
+ }
173395
+ },
173396
+ [
173397
+ agentId,
173398
+ editingVariable,
173399
+ createVariableMutation,
173400
+ updateVariableMutation
173401
+ ]
173402
+ );
173403
+ const handleDeleteVariable = reactExports.useCallback(
173404
+ async (variableKey) => {
173405
+ if (!agentId) {
173406
+ showErrorToast("Agent ID is missing.");
173407
+ return;
173408
+ }
173409
+ setVariableToDeleteKey(variableKey);
173410
+ setIsDeleteConfirmOpen(true);
173411
+ },
173412
+ [agentId]
173413
+ // deleteVariableMutation will be a dependency of confirmDeleteVariable
173414
+ );
173415
+ const confirmDeleteVariable = reactExports.useCallback(async () => {
173416
+ if (!agentId || !variableToDeleteKey) {
173417
+ showErrorToast("Agent ID or variable key is missing for deletion.");
173418
+ setIsDeleteConfirmOpen(false);
173419
+ setVariableToDeleteKey(null);
173420
+ return;
173421
+ }
173422
+ try {
173423
+ await deleteVariableMutation.mutateAsync({
173424
+ agentId,
173425
+ variableKey: variableToDeleteKey
173426
+ });
173427
+ } catch (e3) {
173428
+ console.error("Deletion failed during confirmation:", e3);
173429
+ } finally {
173430
+ setIsDeleteConfirmOpen(false);
173431
+ setVariableToDeleteKey(null);
173432
+ }
173433
+ }, [agentId, variableToDeleteKey, deleteVariableMutation]);
173434
+ const containerStyles = reactExports.useMemo(
173435
+ () => ({
173436
+ p: 3,
173437
+ height: "100%",
173438
+ display: "flex",
173439
+ flexDirection: "column",
173440
+ minHeight: 0
173441
+ // Important for flex children to shrink
173442
+ }),
173443
+ []
173444
+ );
173445
+ const headerStyles = reactExports.useMemo(
173446
+ () => ({
173447
+ display: "flex",
173448
+ flexDirection: "column",
173449
+ mb: 1,
173450
+ px: 0.5,
173451
+ flexShrink: 0
173452
+ // Prevent header from shrinking
173453
+ }),
173454
+ []
173455
+ );
173456
+ const titleRowStyles = reactExports.useMemo(
173457
+ () => ({
173458
+ display: "flex",
173459
+ justifyContent: "space-between",
173460
+ alignItems: "center",
173461
+ mb: 0.5
173462
+ }),
173463
+ []
173464
+ );
173465
+ const titleStyles = reactExports.useMemo(
173466
+ () => ({
173467
+ fontSize: "0.875rem"
173468
+ }),
173469
+ []
173470
+ );
173471
+ const subtitleStyles = reactExports.useMemo(
173472
+ () => ({
173473
+ fontSize: "0.75rem",
173474
+ color: "text.secondary",
173475
+ fontStyle: "italic"
173476
+ }),
173477
+ []
173478
+ );
173479
+ const createButtonStyles = reactExports.useMemo(
173480
+ () => ({
173481
+ textTransform: "none",
173482
+ fontSize: "0.8125rem",
173483
+ padding: theme2.spacing(0.5, 1.5)
173484
+ }),
173485
+ [theme2]
173486
+ );
173487
+ const loadingTextStyles = reactExports.useMemo(
173488
+ () => ({
173489
+ mt: 1.5
173490
+ }),
173491
+ []
173492
+ );
173493
+ const emptyStateTextStyles = reactExports.useMemo(
173494
+ () => ({
173495
+ mb: 1.5
173496
+ }),
173497
+ []
173498
+ );
173499
+ reactExports.useEffect(() => {
173500
+ if (isError && error) {
173501
+ showErrorToast(
173502
+ `Error loading variables: ${error.message || "An unknown error occurred."}`
173503
+ );
173504
+ }
173505
+ }, [isError, error]);
173506
+ if (isLoading) {
173507
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(CenteredBox, { children: [
173508
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircularProgress, { size: 24 }),
173509
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173510
+ Typography,
173511
+ {
173512
+ variant: "body2",
173513
+ sx: loadingTextStyles,
173514
+ color: "text.secondary",
173515
+ children: "Loading variables..."
173516
+ }
173517
+ )
173518
+ ] });
173519
+ }
173520
+ if (isError) {
173521
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(CenteredBox, { children: [
173522
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "subtitle1", color: "text.secondary", gutterBottom: true, children: "Could not load variables." }),
173523
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "caption", color: "text.secondary", children: "Please check notifications or try again." })
173524
+ ] });
173525
+ }
173526
+ if (variables.length === 0) {
173527
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(CenteredBox, { children: [
173528
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "subtitle1", gutterBottom: true, color: "text.primary", children: "No Execution Variables" }),
173529
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173530
+ Typography,
173531
+ {
173532
+ variant: "body2",
173533
+ color: "text.secondary",
173534
+ sx: emptyStateTextStyles,
173535
+ children: "This agent currently has no execution variables set. When your agent does work for you, it will store things that it runs with code in its memory, and those elements will show up here."
173536
+ }
173537
+ ),
173538
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173539
+ Button,
173540
+ {
173541
+ variant: "outlined",
173542
+ size: "small",
173543
+ startIcon: /* @__PURE__ */ jsxRuntimeExports.jsx(CirclePlus, { size: 16 }),
173544
+ onClick: handleOpenCreateForm,
173545
+ sx: createButtonStyles,
173546
+ children: "Create Variable"
173547
+ }
173548
+ )
173549
+ ] });
173550
+ }
173551
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: containerStyles, children: [
173552
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: headerStyles, children: [
173553
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "body1", fontWeight: 500, sx: titleStyles, children: "Agent Execution Variables" }),
173554
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: titleRowStyles, children: [
173555
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173556
+ Typography,
173557
+ {
173558
+ variant: "body2",
173559
+ color: "text.secondary",
173560
+ sx: subtitleStyles,
173561
+ children: "This is code memory that the agent uses to store information."
173562
+ }
173563
+ ),
173564
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Create New Variable", children: /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { onClick: handleOpenCreateForm, size: "small", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CirclePlus, { size: 18 }) }) })
173565
+ ] })
173566
+ ] }),
173567
+ /* @__PURE__ */ jsxRuntimeExports.jsx(VariableListContainer, { children: variables.map((variable2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
173568
+ VariableRow,
173569
+ {
173570
+ variable: variable2,
173571
+ onEdit: handleOpenEditForm,
173572
+ onDelete: handleDeleteVariable
173573
+ },
173574
+ variable2.key
173575
+ )) }),
173576
+ agentId && // Ensure agentId is present before rendering dialog
173577
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173578
+ VariableFormDialog,
173579
+ {
173580
+ open: isFormOpen,
173581
+ onClose: handleCloseForm,
173582
+ onSubmit: handleSubmitVariableForm,
173583
+ initialData: editingVariable
173584
+ }
173585
+ ),
173586
+ variableToDeleteKey && // Render modal only if there's a key to delete
173587
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
173588
+ ConfirmationModal,
173589
+ {
173590
+ open: isDeleteConfirmOpen,
173591
+ title: "Delete Variable",
173592
+ message: /* @__PURE__ */ jsxRuntimeExports.jsxs(Typography, { children: [
173593
+ "Are you sure you want to delete the variable",
173594
+ " ",
173595
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("strong", { children: [
173596
+ '"',
173597
+ variableToDeleteKey,
173598
+ '"'
173599
+ ] }),
173600
+ "? This action cannot be undone."
173601
+ ] }),
173602
+ confirmText: "Delete",
173603
+ cancelText: "Cancel",
173604
+ isDangerous: true,
173605
+ onConfirm: confirmDeleteVariable,
173606
+ onCancel: () => {
173607
+ setIsDeleteConfirmOpen(false);
173608
+ setVariableToDeleteKey(null);
173609
+ }
173610
+ }
173611
+ )
173612
+ ] });
173613
+ }
173614
+ );
173615
+ CanvasVariablesViewer.displayName = "CanvasVariablesViewer";
172376
173616
  const CanvasContainer = styled$1(Box)(({ theme: theme2 }) => ({
172377
173617
  height: "100%",
172378
173618
  display: "flex",
@@ -172479,6 +173719,7 @@ const CanvasComponent = ({
172479
173719
  {
172480
173720
  onClick: () => setCurrentView("documents"),
172481
173721
  size: "large",
173722
+ "data-tour-tag": "canvas-documents-view-button",
172482
173723
  sx: (theme2) => ({
172483
173724
  color: currentView === "documents" ? theme2.palette.primary.main : theme2.palette.text.secondary,
172484
173725
  backgroundColor: currentView === "documents" ? alpha$1(theme2.palette.primary.main, 0.08) : "transparent",
@@ -172497,6 +173738,7 @@ const CanvasComponent = ({
172497
173738
  {
172498
173739
  onClick: () => setCurrentView("files"),
172499
173740
  size: "large",
173741
+ "data-tour-tag": "canvas-files-view-button",
172500
173742
  sx: (theme2) => ({
172501
173743
  color: currentView === "files" ? theme2.palette.primary.main : theme2.palette.text.secondary,
172502
173744
  backgroundColor: currentView === "files" ? alpha$1(theme2.palette.primary.main, 0.08) : "transparent",
@@ -172510,6 +173752,25 @@ const CanvasComponent = ({
172510
173752
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { size: 16 })
172511
173753
  }
172512
173754
  ) }),
173755
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Variables View", arrow: true, placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
173756
+ IconButton,
173757
+ {
173758
+ onClick: () => setCurrentView("variables"),
173759
+ size: "large",
173760
+ "data-tour-tag": "canvas-variables-view-button",
173761
+ sx: (theme2) => ({
173762
+ color: currentView === "variables" ? theme2.palette.primary.main : theme2.palette.text.secondary,
173763
+ backgroundColor: currentView === "variables" ? alpha$1(theme2.palette.primary.main, 0.08) : "transparent",
173764
+ "&:hover": {
173765
+ backgroundColor: alpha$1(theme2.palette.primary.main, 0.12)
173766
+ },
173767
+ width: 36,
173768
+ height: 36,
173769
+ padding: 0
173770
+ }),
173771
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ListTree, { size: 16 })
173772
+ }
173773
+ ) }),
172513
173774
  /* @__PURE__ */ jsxRuntimeExports.jsx(
172514
173775
  Tooltip$1,
172515
173776
  {
@@ -172567,7 +173828,8 @@ const CanvasComponent = ({
172567
173828
  onSwitchToDocumentView: handleSwitchToDocumentView
172568
173829
  }
172569
173830
  ),
172570
- currentView === "files" && !conversationId && /* @__PURE__ */ jsxRuntimeExports.jsxs(
173831
+ currentView === "variables" && conversationId && /* @__PURE__ */ jsxRuntimeExports.jsx(CanvasVariablesViewer, { conversationId }),
173832
+ (currentView === "files" || currentView === "variables") && !conversationId && /* @__PURE__ */ jsxRuntimeExports.jsxs(
172571
173833
  Box,
172572
173834
  {
172573
173835
  sx: {
@@ -174097,6 +175359,8 @@ const InputOuterContainer = styled$1(Box)(({ theme: theme2 }) => ({
174097
175359
  alignItems: "center",
174098
175360
  justifyContent: "center",
174099
175361
  padding: theme2.spacing(1),
175362
+ paddingLeft: theme2.spacing(2),
175363
+ paddingRight: theme2.spacing(2),
174100
175364
  paddingBottom: theme2.spacing(2),
174101
175365
  backgroundColor: theme2.palette.messagesView.background
174102
175366
  }));
@@ -212654,13 +213918,18 @@ const FileAttachmentContainer = styled$1(Box)(({ theme: theme2 }) => ({
212654
213918
  maxWidth: "100%",
212655
213919
  cursor: "pointer",
212656
213920
  transition: "all 0.2s ease",
213921
+ position: "relative",
212657
213922
  "&:hover": {
212658
213923
  backgroundColor: alpha$1(
212659
213924
  theme2.palette.mode === "dark" ? theme2.palette.common.black : theme2.palette.grey[300],
212660
213925
  theme2.palette.mode === "dark" ? 0.15 : 0.5
212661
213926
  ),
212662
213927
  transform: "translateY(-1px)",
212663
- boxShadow: `0 2px 5px ${alpha$1(theme2.palette.common.black, theme2.palette.mode === "dark" ? 0.15 : 0.1)}`
213928
+ boxShadow: `0 2px 5px ${alpha$1(theme2.palette.common.black, theme2.palette.mode === "dark" ? 0.15 : 0.1)}`,
213929
+ "& .file-actions-menu": {
213930
+ opacity: 1,
213931
+ visibility: "visible"
213932
+ }
212664
213933
  },
212665
213934
  "&:active": {
212666
213935
  transform: "translateY(0)",
@@ -212684,6 +213953,12 @@ const FileName = styled$1(Typography)({
212684
213953
  textDecoration: "underline"
212685
213954
  }
212686
213955
  });
213956
+ const FileActionsContainer$2 = styled$1(Box)({
213957
+ marginLeft: 8,
213958
+ opacity: 0,
213959
+ visibility: "hidden",
213960
+ transition: "opacity 0.2s ease, visibility 0.2s ease"
213961
+ });
212687
213962
  const PATH_SEPARATOR_REGEX$3 = /[/\\]/;
212688
213963
  const getFileName$3 = (path2) => {
212689
213964
  if (path2.startsWith("data:image/")) {
@@ -212714,6 +213989,7 @@ const getFileName$3 = (path2) => {
212714
213989
  const FileAttachment = reactExports.memo(
212715
213990
  ({ file, onClick, conversationId }) => {
212716
213991
  const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
213992
+ const { setViewMode } = useCanvasStore();
212717
213993
  const handleClick = reactExports.useCallback(async () => {
212718
213994
  const title = getFileName$3(file);
212719
213995
  const fallbackAction = (err) => {
@@ -212755,19 +214031,20 @@ const FileAttachment = reactExports.memo(
212755
214031
  setOpenTabs(conversationId, updatedTabs);
212756
214032
  setSelectedTab(conversationId, docId);
212757
214033
  setCanvasOpen(true);
214034
+ setViewMode(conversationId, "documents");
212758
214035
  } else {
212759
214036
  onClick(file);
212760
214037
  }
212761
214038
  } else {
212762
- const normalizedPath = file.startsWith("file://") ? file.substring(7) : file;
214039
+ const normalizedPath2 = file.startsWith("file://") ? file.substring(7) : file;
212763
214040
  try {
212764
- const result = await window.api.readFile(normalizedPath);
214041
+ const result = await window.api.readFile(normalizedPath2);
212765
214042
  if (result.success && isCanvasSupported(title)) {
212766
- const docId = normalizedPath;
214043
+ const docId = normalizedPath2;
212767
214044
  const newDoc = {
212768
214045
  id: docId,
212769
214046
  title,
212770
- path: normalizedPath,
214047
+ path: normalizedPath2,
212771
214048
  content: result.data,
212772
214049
  type: getFileTypeFromPath(file)
212773
214050
  // Ensure type is included
@@ -212793,6 +214070,7 @@ const FileAttachment = reactExports.memo(
212793
214070
  setOpenTabs(conversationId, updatedTabs);
212794
214071
  setSelectedTab(conversationId, docId);
212795
214072
  setCanvasOpen(true);
214073
+ setViewMode(conversationId, "documents");
212796
214074
  return;
212797
214075
  }
212798
214076
  const errorMessage = !result.success && result.error ? result.error instanceof Error ? result.error.message : String(result.error) : "Unknown error reading file";
@@ -212802,21 +214080,19 @@ const FileAttachment = reactExports.memo(
212802
214080
  return fallbackAction(message2);
212803
214081
  }
212804
214082
  }
212805
- }, [file, onClick, setCanvasOpen, conversationId]);
214083
+ }, [file, onClick, setCanvasOpen, setViewMode, conversationId]);
212806
214084
  const isPastedImage = file.startsWith("data:image/");
214085
+ const isLocalFile = !file.startsWith("data:") && !file.startsWith("http");
214086
+ const normalizedPath = file.startsWith("file://") ? file.substring(7) : file;
212807
214087
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
212808
214088
  FileAttachmentContainer,
212809
214089
  {
212810
214090
  onClick: handleClick,
212811
214091
  title: `Click to open ${getFileName$3(file)}`,
212812
214092
  sx: {
212813
- // Adjust padding if it's an image to give it more space, or remove padding
212814
214093
  padding: isPastedImage ? 0 : "8px 12px",
212815
- // If it's an image, let it define its own aspect ratio, otherwise fix height for icon/text
212816
214094
  height: isPastedImage ? "auto" : "auto",
212817
- // Keep auto or set specific for icon
212818
214095
  maxWidth: isPastedImage ? "200px" : "100%"
212819
- // Allow images to be a bit wider if needed
212820
214096
  },
212821
214097
  children: isPastedImage ? /* @__PURE__ */ jsxRuntimeExports.jsx(
212822
214098
  "img",
@@ -212827,15 +214103,31 @@ const FileAttachment = reactExports.memo(
212827
214103
  display: "block",
212828
214104
  maxWidth: "100%",
212829
214105
  maxHeight: "150px",
212830
- // Max height for the preview in message
212831
214106
  borderRadius: "8px",
212832
- // Match container's border radius
212833
214107
  objectFit: "contain"
212834
214108
  }
212835
214109
  }
212836
214110
  ) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
212837
214111
  /* @__PURE__ */ jsxRuntimeExports.jsx(FileIcon, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faFile, size: "sm" }) }),
212838
- /* @__PURE__ */ jsxRuntimeExports.jsx(FileName, { variant: "body2", children: getFileName$3(file) })
214112
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FileName, { variant: "body2", children: getFileName$3(file) }),
214113
+ isLocalFile && /* @__PURE__ */ jsxRuntimeExports.jsx(
214114
+ FileActionsContainer$2,
214115
+ {
214116
+ className: "file-actions-menu",
214117
+ onClick: (e3) => {
214118
+ e3.stopPropagation();
214119
+ },
214120
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
214121
+ FileActionsMenu,
214122
+ {
214123
+ filePath: normalizedPath,
214124
+ tooltip: "File actions",
214125
+ "aria-label": "File actions",
214126
+ onShowInCanvas: handleClick
214127
+ }
214128
+ )
214129
+ }
214130
+ )
212839
214131
  ] })
212840
214132
  }
212841
214133
  );
@@ -212902,33 +214194,162 @@ const AttachmentImage = styled$1("img")(({ theme: theme2 }) => ({
212902
214194
  boxShadow: `0 4px 12px ${alpha$1(theme2.palette.common.black, theme2.palette.mode === "dark" ? 0.25 : 0.15)}`
212903
214195
  }
212904
214196
  }));
214197
+ const FileActionsContainer$1 = styled$1(Box)({
214198
+ position: "absolute",
214199
+ top: 4,
214200
+ right: 4,
214201
+ zIndex: 2,
214202
+ opacity: 0,
214203
+ visibility: "hidden",
214204
+ transition: "opacity 0.2s ease, visibility 0.2s ease"
214205
+ });
214206
+ const AttachmentImageContainer = styled$1(Box)({
214207
+ position: "relative",
214208
+ display: "inline-block",
214209
+ "&:hover .file-actions-menu": {
214210
+ opacity: 1,
214211
+ visibility: "visible"
214212
+ }
214213
+ });
212905
214214
  const PATH_SEPARATOR_REGEX$1 = /[/\\]/;
212906
214215
  const getFileName$1 = (path2) => {
212907
214216
  const parts = path2.split(PATH_SEPARATOR_REGEX$1);
212908
214217
  return parts[parts.length - 1];
212909
214218
  };
212910
214219
  const ImageAttachment = reactExports.memo(
212911
- ({ file, src, onClick }) => {
214220
+ ({ file, src, onClick, conversationId }) => {
212912
214221
  const [hasError, setHasError] = reactExports.useState(false);
214222
+ const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
214223
+ const { setViewMode } = useCanvasStore();
214224
+ const handleShowInCanvas = reactExports.useCallback(async () => {
214225
+ const title = getFileName$1(file);
214226
+ const fallbackAction = (err) => {
214227
+ if (err) console.error("Error processing file:", err);
214228
+ onClick(file);
214229
+ };
214230
+ const { setFiles, setOpenTabs, setSelectedTab } = useCanvasStore.getState();
214231
+ if (file.startsWith("data:")) {
214232
+ if (isCanvasSupported(title)) {
214233
+ const docId = file;
214234
+ const newDoc = {
214235
+ id: docId,
214236
+ title,
214237
+ path: docId,
214238
+ content: file,
214239
+ type: getFileTypeFromPath(file)
214240
+ };
214241
+ const state2 = useCanvasStore.getState();
214242
+ const conversationCanvasState = state2.conversations?.[conversationId];
214243
+ const filesInState = conversationCanvasState?.files ?? [];
214244
+ const openTabsInState = conversationCanvasState?.openTabs ?? [];
214245
+ const updatedFiles = (() => {
214246
+ const idx = filesInState.findIndex((d2) => d2.id === docId);
214247
+ if (idx !== -1) {
214248
+ return [
214249
+ ...filesInState.slice(0, idx),
214250
+ newDoc,
214251
+ ...filesInState.slice(idx + 1)
214252
+ ];
214253
+ }
214254
+ return [...filesInState, newDoc];
214255
+ })();
214256
+ setFiles(conversationId, updatedFiles);
214257
+ const existsTab = openTabsInState.some((t2) => t2.id === docId);
214258
+ const updatedTabs = existsTab ? openTabsInState : [...openTabsInState, { id: docId, title }];
214259
+ setOpenTabs(conversationId, updatedTabs);
214260
+ setSelectedTab(conversationId, docId);
214261
+ setCanvasOpen(true);
214262
+ setViewMode(conversationId, "documents");
214263
+ } else {
214264
+ setCanvasOpen(true);
214265
+ setViewMode(conversationId, "files");
214266
+ }
214267
+ } else {
214268
+ const normalizedPath2 = file.startsWith("file://") ? file.substring(7) : file;
214269
+ try {
214270
+ const result = await window.api.readFile(normalizedPath2);
214271
+ if (result.success && isCanvasSupported(title)) {
214272
+ const docId = normalizedPath2;
214273
+ const newDoc = {
214274
+ id: docId,
214275
+ title,
214276
+ path: normalizedPath2,
214277
+ content: result.data,
214278
+ type: getFileTypeFromPath(file)
214279
+ };
214280
+ const state2 = useCanvasStore.getState();
214281
+ const conversationCanvasState = state2.conversations?.[conversationId];
214282
+ const filesInState = conversationCanvasState?.files ?? [];
214283
+ const openTabsInState = conversationCanvasState?.openTabs ?? [];
214284
+ const updatedFiles = (() => {
214285
+ const idx = filesInState.findIndex((d2) => d2.id === docId);
214286
+ if (idx !== -1) {
214287
+ return [
214288
+ ...filesInState.slice(0, idx),
214289
+ newDoc,
214290
+ ...filesInState.slice(idx + 1)
214291
+ ];
214292
+ }
214293
+ return [...filesInState, newDoc];
214294
+ })();
214295
+ setFiles(conversationId, updatedFiles);
214296
+ const existsTab = openTabsInState.some((t2) => t2.id === docId);
214297
+ const updatedTabs = existsTab ? openTabsInState : [...openTabsInState, { id: docId, title }];
214298
+ setOpenTabs(conversationId, updatedTabs);
214299
+ setSelectedTab(conversationId, docId);
214300
+ setCanvasOpen(true);
214301
+ setViewMode(conversationId, "documents");
214302
+ return;
214303
+ }
214304
+ setCanvasOpen(true);
214305
+ setViewMode(conversationId, "files");
214306
+ } catch (error) {
214307
+ const message2 = error instanceof Error ? error.message : String(error ?? "Unknown error reading file");
214308
+ return fallbackAction(message2);
214309
+ }
214310
+ }
214311
+ }, [file, onClick, setCanvasOpen, setViewMode, conversationId]);
212913
214312
  const handleClick = () => {
212914
214313
  onClick(file);
212915
214314
  };
212916
214315
  const handleError2 = () => {
212917
214316
  setHasError(true);
212918
214317
  };
214318
+ const isLocalFile = !file.startsWith("data:") && !file.startsWith("http");
214319
+ const normalizedPath = file.startsWith("file://") ? file.substring(7) : file;
212919
214320
  if (hasError) {
212920
214321
  return /* @__PURE__ */ jsxRuntimeExports.jsx(InvalidAttachment, { file });
212921
214322
  }
212922
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
212923
- AttachmentImage,
212924
- {
212925
- src,
212926
- alt: getFileName$1(file),
212927
- onClick: handleClick,
212928
- onError: handleError2,
212929
- title: `Click to open ${getFileName$1(file)}`
212930
- }
212931
- );
214323
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(AttachmentImageContainer, { children: [
214324
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
214325
+ AttachmentImage,
214326
+ {
214327
+ src,
214328
+ alt: getFileName$1(file),
214329
+ onClick: handleClick,
214330
+ onError: handleError2,
214331
+ title: `Click to open ${getFileName$1(file)}`
214332
+ }
214333
+ ),
214334
+ isLocalFile && /* @__PURE__ */ jsxRuntimeExports.jsx(
214335
+ FileActionsContainer$1,
214336
+ {
214337
+ className: "file-actions-menu",
214338
+ onClick: (e3) => {
214339
+ e3.stopPropagation();
214340
+ },
214341
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
214342
+ FileActionsMenu,
214343
+ {
214344
+ filePath: normalizedPath,
214345
+ tooltip: "File actions",
214346
+ "aria-label": "File actions",
214347
+ onShowInCanvas: handleShowInCanvas
214348
+ }
214349
+ )
214350
+ }
214351
+ )
214352
+ ] });
212932
214353
  }
212933
214354
  );
212934
214355
  ImageAttachment.displayName = "ImageAttachment";
@@ -213046,34 +214467,162 @@ const AttachmentVideo = styled$1("video")(({ theme: theme2 }) => ({
213046
214467
  boxShadow: `0 4px 12px ${alpha$1(theme2.palette.common.black, theme2.palette.mode === "dark" ? 0.25 : 0.15)}`
213047
214468
  }
213048
214469
  }));
214470
+ const FileActionsContainer = styled$1(Box)({
214471
+ position: "absolute",
214472
+ top: 4,
214473
+ right: 4,
214474
+ zIndex: 2,
214475
+ opacity: 0,
214476
+ visibility: "hidden",
214477
+ transition: "opacity 0.2s ease, visibility 0.2s ease"
214478
+ });
214479
+ const AttachmentVideoContainer = styled$1(Box)({
214480
+ position: "relative",
214481
+ display: "inline-block",
214482
+ "&:hover .file-actions-menu": {
214483
+ opacity: 1,
214484
+ visibility: "visible"
214485
+ }
214486
+ });
213049
214487
  const PATH_SEPARATOR_REGEX = /[/\\]/;
213050
214488
  const getFileName = (path2) => {
213051
214489
  const parts = path2.split(PATH_SEPARATOR_REGEX);
213052
214490
  return parts[parts.length - 1];
213053
214491
  };
213054
214492
  const VideoAttachment = reactExports.memo(
213055
- ({ file, src, onClick }) => {
214493
+ ({ file, src, onClick, conversationId }) => {
213056
214494
  const [hasError, setHasError] = reactExports.useState(false);
214495
+ const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
214496
+ const { setViewMode } = useCanvasStore();
214497
+ const handleShowInCanvas = reactExports.useCallback(async () => {
214498
+ const title = getFileName(file);
214499
+ const fallbackAction = (err) => {
214500
+ if (err) console.error("Error processing file:", err);
214501
+ onClick(file);
214502
+ };
214503
+ const { setFiles, setOpenTabs, setSelectedTab } = useCanvasStore.getState();
214504
+ if (file.startsWith("data:")) {
214505
+ if (isCanvasSupported(title)) {
214506
+ const docId = file;
214507
+ const newDoc = {
214508
+ id: docId,
214509
+ title,
214510
+ path: docId,
214511
+ content: file,
214512
+ type: getFileTypeFromPath(file)
214513
+ };
214514
+ const state2 = useCanvasStore.getState();
214515
+ const conversationCanvasState = state2.conversations?.[conversationId];
214516
+ const filesInState = conversationCanvasState?.files ?? [];
214517
+ const openTabsInState = conversationCanvasState?.openTabs ?? [];
214518
+ const updatedFiles = (() => {
214519
+ const idx = filesInState.findIndex((d2) => d2.id === docId);
214520
+ if (idx !== -1) {
214521
+ return [
214522
+ ...filesInState.slice(0, idx),
214523
+ newDoc,
214524
+ ...filesInState.slice(idx + 1)
214525
+ ];
214526
+ }
214527
+ return [...filesInState, newDoc];
214528
+ })();
214529
+ setFiles(conversationId, updatedFiles);
214530
+ const existsTab = openTabsInState.some((t2) => t2.id === docId);
214531
+ const updatedTabs = existsTab ? openTabsInState : [...openTabsInState, { id: docId, title }];
214532
+ setOpenTabs(conversationId, updatedTabs);
214533
+ setSelectedTab(conversationId, docId);
214534
+ setCanvasOpen(true);
214535
+ setViewMode(conversationId, "documents");
214536
+ } else {
214537
+ onClick(file);
214538
+ }
214539
+ } else {
214540
+ const normalizedPath2 = file.startsWith("file://") ? file.substring(7) : file;
214541
+ try {
214542
+ const result = await window.api.readFile(normalizedPath2);
214543
+ if (result.success && isCanvasSupported(title)) {
214544
+ const docId = normalizedPath2;
214545
+ const newDoc = {
214546
+ id: docId,
214547
+ title,
214548
+ path: normalizedPath2,
214549
+ content: result.data,
214550
+ type: getFileTypeFromPath(file)
214551
+ };
214552
+ const state2 = useCanvasStore.getState();
214553
+ const conversationCanvasState = state2.conversations?.[conversationId];
214554
+ const filesInState = conversationCanvasState?.files ?? [];
214555
+ const openTabsInState = conversationCanvasState?.openTabs ?? [];
214556
+ const updatedFiles = (() => {
214557
+ const idx = filesInState.findIndex((d2) => d2.id === docId);
214558
+ if (idx !== -1) {
214559
+ return [
214560
+ ...filesInState.slice(0, idx),
214561
+ newDoc,
214562
+ ...filesInState.slice(idx + 1)
214563
+ ];
214564
+ }
214565
+ return [...filesInState, newDoc];
214566
+ })();
214567
+ setFiles(conversationId, updatedFiles);
214568
+ const existsTab = openTabsInState.some((t2) => t2.id === docId);
214569
+ const updatedTabs = existsTab ? openTabsInState : [...openTabsInState, { id: docId, title }];
214570
+ setOpenTabs(conversationId, updatedTabs);
214571
+ setSelectedTab(conversationId, docId);
214572
+ setCanvasOpen(true);
214573
+ setViewMode(conversationId, "documents");
214574
+ return;
214575
+ }
214576
+ setCanvasOpen(true);
214577
+ setViewMode(conversationId, "files");
214578
+ } catch (error) {
214579
+ const message2 = error instanceof Error ? error.message : String(error ?? "Unknown error reading file");
214580
+ return fallbackAction(message2);
214581
+ }
214582
+ }
214583
+ }, [file, onClick, setCanvasOpen, setViewMode, conversationId]);
213057
214584
  const handleClick = () => {
213058
214585
  onClick(file);
213059
214586
  };
213060
214587
  const handleError2 = () => {
213061
214588
  setHasError(true);
213062
214589
  };
214590
+ const isLocalFile = !file.startsWith("data:") && !file.startsWith("http");
214591
+ const normalizedPath = file.startsWith("file://") ? file.substring(7) : file;
213063
214592
  if (hasError) {
213064
214593
  return /* @__PURE__ */ jsxRuntimeExports.jsx(InvalidAttachment, { file });
213065
214594
  }
213066
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
213067
- AttachmentVideo,
213068
- {
213069
- src,
213070
- controls: true,
213071
- preload: "metadata",
213072
- onClick: handleClick,
213073
- onError: handleError2,
213074
- title: `Click to open ${getFileName(file)}`
213075
- }
213076
- );
214595
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(AttachmentVideoContainer, { children: [
214596
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
214597
+ AttachmentVideo,
214598
+ {
214599
+ src,
214600
+ controls: true,
214601
+ preload: "metadata",
214602
+ onClick: handleClick,
214603
+ onError: handleError2,
214604
+ title: `Click to open ${getFileName(file)}`
214605
+ }
214606
+ ),
214607
+ isLocalFile && /* @__PURE__ */ jsxRuntimeExports.jsx(
214608
+ FileActionsContainer,
214609
+ {
214610
+ className: "file-actions-menu",
214611
+ onClick: (e3) => {
214612
+ e3.stopPropagation();
214613
+ },
214614
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
214615
+ FileActionsMenu,
214616
+ {
214617
+ filePath: normalizedPath,
214618
+ tooltip: "File actions",
214619
+ "aria-label": "File actions",
214620
+ onShowInCanvas: handleShowInCanvas
214621
+ }
214622
+ )
214623
+ }
214624
+ )
214625
+ ] });
213077
214626
  }
213078
214627
  );
213079
214628
  VideoAttachment.displayName = "VideoAttachment";
@@ -221655,7 +223204,7 @@ const tourSteps = [
221655
223204
  classes: "shepherd-button-primary",
221656
223205
  action: function() {
221657
223206
  const button = document.querySelector(
221658
- 'button[data-tour-tag="close-canvas-button"]'
223207
+ 'button[data-tour-tag="canvas-documents-view-button"]'
221659
223208
  );
221660
223209
  if (button) {
221661
223210
  button.click();
@@ -221667,6 +223216,121 @@ const tourSteps = [
221667
223216
  }
221668
223217
  ]
221669
223218
  },
223219
+ {
223220
+ id: "canvas-documents-view",
223221
+ attachTo: {
223222
+ element: 'button[data-tour-tag="canvas-documents-view-button"]',
223223
+ on: "top"
223224
+ },
223225
+ title: "Documents View",
223226
+ text: "The Documents view shows all your open markdown, code, and HTML documents as tabs. You can switch between documents and see dynamic visualizations in HTML created by your agents. Use this view to work with your notes, reports, and agent-generated content.",
223227
+ buttons: [
223228
+ {
223229
+ text: "Back",
223230
+ classes: "shepherd-button-secondary",
223231
+ action: function() {
223232
+ this.back();
223233
+ }
223234
+ },
223235
+ {
223236
+ text: "Next",
223237
+ classes: "shepherd-button-primary",
223238
+ action: function() {
223239
+ const button = document.querySelector(
223240
+ 'button[data-tour-tag="canvas-files-view-button"]'
223241
+ );
223242
+ if (button) {
223243
+ button.click();
223244
+ }
223245
+ setTimeout(() => {
223246
+ this.next();
223247
+ }, 500);
223248
+ }
223249
+ }
223250
+ ]
223251
+ },
223252
+ {
223253
+ id: "canvas-files-view",
223254
+ attachTo: {
223255
+ element: 'button[data-tour-tag="canvas-files-view-button"]',
223256
+ on: "top"
223257
+ },
223258
+ title: "Files View",
223259
+ text: "The Files view lets you browse and open files that your agents have created or that are relevant to your current conversation. Use this to quickly access, preview, and open files in the Canvas workspace.",
223260
+ buttons: [
223261
+ {
223262
+ text: "Back",
223263
+ classes: "shepherd-button-secondary",
223264
+ action: function() {
223265
+ const button = document.querySelector(
223266
+ 'button[data-tour-tag="canvas-documents-view-button"]'
223267
+ );
223268
+ if (button) {
223269
+ button.click();
223270
+ }
223271
+ setTimeout(() => {
223272
+ this.back();
223273
+ }, 500);
223274
+ }
223275
+ },
223276
+ {
223277
+ text: "Next",
223278
+ classes: "shepherd-button-primary",
223279
+ action: function() {
223280
+ const button = document.querySelector(
223281
+ 'button[data-tour-tag="canvas-variables-view-button"]'
223282
+ );
223283
+ if (button) {
223284
+ button.click();
223285
+ }
223286
+ setTimeout(() => {
223287
+ this.next();
223288
+ }, 500);
223289
+ }
223290
+ }
223291
+ ]
223292
+ },
223293
+ {
223294
+ id: "canvas-variables-view",
223295
+ attachTo: {
223296
+ element: 'button[data-tour-tag="canvas-variables-view-button"]',
223297
+ on: "top"
223298
+ },
223299
+ title: "Variables View",
223300
+ text: 'The Variables view displays the "code memory" that agents have stored during their work. These are technical variables that include results, intermediate values, and other data that agents use to perform tasks. You can inspect and manage these variables here.<br /><br />This section will be most helpful for more technical users who want to understand how agents are working and what they are doing.',
223301
+ buttons: [
223302
+ {
223303
+ text: "Back",
223304
+ classes: "shepherd-button-secondary",
223305
+ action: function() {
223306
+ const button = document.querySelector(
223307
+ 'button[data-tour-tag="canvas-files-view-button"]'
223308
+ );
223309
+ if (button) {
223310
+ button.click();
223311
+ }
223312
+ setTimeout(() => {
223313
+ this.back();
223314
+ }, 500);
223315
+ }
223316
+ },
223317
+ {
223318
+ text: "Next",
223319
+ classes: "shepherd-button-primary",
223320
+ action: function() {
223321
+ const closeButton = document.querySelector(
223322
+ 'button[data-tour-tag="close-canvas-button"]'
223323
+ );
223324
+ if (closeButton) {
223325
+ closeButton.click();
223326
+ }
223327
+ setTimeout(() => {
223328
+ this.next();
223329
+ }, 500);
223330
+ }
223331
+ }
223332
+ ]
223333
+ },
221670
223334
  {
221671
223335
  id: "agent-options",
221672
223336
  attachTo: {