local-operator-ui 0.12.3 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/out/main/index.jsc +0 -0
  2. package/out/preload/index.jsc +0 -0
  3. package/out/renderer/assets/{_basePickBy-D_lB49Nw.js → _basePickBy-D-mTy0T7.js} +2 -2
  4. package/out/renderer/assets/{_baseUniq-DVHyzMWx.js → _baseUniq-CVF81xU9.js} +1 -1
  5. package/out/renderer/assets/{arc-Cz0FYAxj.js → arc-BcZxubla.js} +1 -1
  6. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-C4ktN37D.js → architectureDiagram-IEHRJDOE-0JBfW8n9.js} +7 -7
  7. package/out/renderer/assets/{blockDiagram-JOT3LUYC-CU6r8dcw.js → blockDiagram-JOT3LUYC-DIjqxpHX.js} +5 -5
  8. package/out/renderer/assets/{c4Diagram-VJAJSXHY-f9fZ76vg.js → c4Diagram-VJAJSXHY-B8ZTZ0n8.js} +2 -2
  9. package/out/renderer/assets/{channel-DDua3gpf.js → channel-BQBOXiqs.js} +1 -1
  10. package/out/renderer/assets/chat-input-CU-CA7Se.png +0 -0
  11. package/out/renderer/assets/{chunk-4BMEZGHF-BImCYdva.js → chunk-4BMEZGHF-BCTXK4C0.js} +1 -1
  12. package/out/renderer/assets/{chunk-A2AXSNBT-Duouqy8R.js → chunk-A2AXSNBT-Dt4gXQBd.js} +2 -2
  13. package/out/renderer/assets/{chunk-AEK57VVT-ug6WkgVp.js → chunk-AEK57VVT-CAAj-J2-.js} +2 -2
  14. package/out/renderer/assets/{chunk-D6G4REZN-B4s3i2fv.js → chunk-D6G4REZN-_hQRwF7v.js} +1 -1
  15. package/out/renderer/assets/{chunk-RZ5BOZE2-BtZxEqZj.js → chunk-RZ5BOZE2-Vl3-h4SG.js} +1 -1
  16. package/out/renderer/assets/{chunk-XZIHB7SX-mUnOuu-C.js → chunk-XZIHB7SX-C61iNqnQ.js} +1 -1
  17. package/out/renderer/assets/{classDiagram-GIVACNV2-BSvSEfYr.js → classDiagram-GIVACNV2-CNcNWb-o.js} +3 -3
  18. package/out/renderer/assets/{classDiagram-v2-COTLJTTW-BSvSEfYr.js → classDiagram-v2-COTLJTTW-CNcNWb-o.js} +3 -3
  19. package/out/renderer/assets/{clone-DwRww_yE.js → clone-D4Ah0_EU.js} +1 -1
  20. package/out/renderer/assets/{dagre-OKDRZEBW-BT5Skj91.js → dagre-OKDRZEBW-DZOFGtWs.js} +6 -6
  21. package/out/renderer/assets/{diagram-SSKATNLV-CARCGGp8.js → diagram-SSKATNLV-DGVbLzJc.js} +6 -6
  22. package/out/renderer/assets/{diagram-VNBRO52H-DYNE5bP-.js → diagram-VNBRO52H-DUz0a2Uz.js} +6 -6
  23. package/out/renderer/assets/{erDiagram-Q7BY3M3F-CbXbwJWU.js → erDiagram-Q7BY3M3F-CfYzgE98.js} +3 -3
  24. package/out/renderer/assets/{flowDiagram-4HSFHLVR-DCXlt-VL.js → flowDiagram-4HSFHLVR-tRJWBVYd.js} +3 -3
  25. package/out/renderer/assets/{ganttDiagram-APWFNJXF-ByRCNFDO.js → ganttDiagram-APWFNJXF-BWG5VLyZ.js} +1 -1
  26. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-05jpnuDv.js → gitGraphDiagram-7IBYFJ6S-Cd11pFbi.js} +7 -7
  27. package/out/renderer/assets/{graph-D872quDZ.js → graph-P5xyWsnt.js} +2 -2
  28. package/out/renderer/assets/{index-kCiyjU-8.js → index-B4xrtp2Z.js} +1 -1
  29. package/out/renderer/assets/{index-gGvrtoJX.js → index-C4NwO8de.js} +248 -249
  30. package/out/renderer/assets/{index-Bz9i7Cd8.js → index-CtrEBFNz.js} +1 -1
  31. package/out/renderer/assets/{infoDiagram-PH2N3AL5-BpYJVAYI.js → infoDiagram-PH2N3AL5-KjJg15gx.js} +5 -5
  32. package/out/renderer/assets/{journeyDiagram-U35MCT3I-CX7f5NLJ.js → journeyDiagram-U35MCT3I-Dp2FVK6h.js} +3 -3
  33. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-b906EDwu.js → kanban-definition-NDS4AKOZ-cttuutf_.js} +1 -1
  34. package/out/renderer/assets/{layout-e8Y1M0Nl.js → layout-Bep2Ed3s.js} +4 -4
  35. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-BiKEPoOD.js → mindmap-definition-ALO5MXBD-DiLxGufv.js} +1 -1
  36. package/out/renderer/assets/{pieDiagram-IB7DONF6-DaslafX0.js → pieDiagram-IB7DONF6-C7Crt4gw.js} +7 -7
  37. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-DSgptiHP.js → quadrantDiagram-7GDLP6J5-BMbHGD_6.js} +1 -1
  38. package/out/renderer/assets/{radar-MK3ICKWK-DDcxEZev.js → radar-MK3ICKWK-BIBBEO8S.js} +4 -4
  39. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-DK6InPeo.js → requirementDiagram-KVF5MWMF-BumPivJk.js} +2 -2
  40. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-DZTaN53O.js → sankeyDiagram-QLVOVGJD-D1LzUzj2.js} +1 -1
  41. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-BDt_f_hQ.js → sequenceDiagram-X6HHIX6F-CwnYTtil.js} +3 -3
  42. package/out/renderer/assets/{stateDiagram-DGXRK772-vXoCogWI.js → stateDiagram-DGXRK772-4yXBR_vP.js} +7 -7
  43. package/out/renderer/assets/{stateDiagram-v2-YXO3MK2T-OXX9BIpM.js → stateDiagram-v2-YXO3MK2T-6p7BdIAB.js} +3 -3
  44. package/out/renderer/assets/{timeline-definition-BDJGKUSR-Br6iVGoQ.js → timeline-definition-BDJGKUSR-CCdgMyc-.js} +2 -2
  45. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-BpNk-8_j.js → xychartDiagram-VJFVF3MP-DD0agc1N.js} +1 -1
  46. package/out/renderer/index.html +1 -1
  47. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-Bz9i7Cd8.js","./fonts-DqkQ6BY5.js","./fonts-CM-VN_uu.css","./index-kCiyjU-8.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js","./dagre-OKDRZEBW-BT5Skj91.js","./graph-D872quDZ.js","./_baseUniq-DVHyzMWx.js","./layout-e8Y1M0Nl.js","./_basePickBy-D_lB49Nw.js","./clone-DwRww_yE.js","./c4Diagram-VJAJSXHY-f9fZ76vg.js","./chunk-D6G4REZN-B4s3i2fv.js","./flowDiagram-4HSFHLVR-DCXlt-VL.js","./chunk-RZ5BOZE2-BtZxEqZj.js","./channel-DDua3gpf.js","./erDiagram-Q7BY3M3F-CbXbwJWU.js","./gitGraphDiagram-7IBYFJ6S-05jpnuDv.js","./chunk-4BMEZGHF-BImCYdva.js","./chunk-XZIHB7SX-mUnOuu-C.js","./radar-MK3ICKWK-DDcxEZev.js","./ganttDiagram-APWFNJXF-ByRCNFDO.js","./infoDiagram-PH2N3AL5-BpYJVAYI.js","./pieDiagram-IB7DONF6-DaslafX0.js","./arc-Cz0FYAxj.js","./quadrantDiagram-7GDLP6J5-DSgptiHP.js","./xychartDiagram-VJFVF3MP-BpNk-8_j.js","./requirementDiagram-KVF5MWMF-DK6InPeo.js","./sequenceDiagram-X6HHIX6F-BDt_f_hQ.js","./classDiagram-GIVACNV2-BSvSEfYr.js","./chunk-A2AXSNBT-Duouqy8R.js","./classDiagram-v2-COTLJTTW-BSvSEfYr.js","./stateDiagram-DGXRK772-vXoCogWI.js","./chunk-AEK57VVT-ug6WkgVp.js","./stateDiagram-v2-YXO3MK2T-OXX9BIpM.js","./journeyDiagram-U35MCT3I-CX7f5NLJ.js","./timeline-definition-BDJGKUSR-Br6iVGoQ.js","./mindmap-definition-ALO5MXBD-BiKEPoOD.js","./cytoscape.esm-C0AOj4uS.js","./kanban-definition-NDS4AKOZ-b906EDwu.js","./sankeyDiagram-QLVOVGJD-DZTaN53O.js","./diagram-VNBRO52H-DYNE5bP-.js","./diagram-SSKATNLV-CARCGGp8.js","./blockDiagram-JOT3LUYC-CU6r8dcw.js","./architectureDiagram-IEHRJDOE-C4ktN37D.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-CtrEBFNz.js","./fonts-DqkQ6BY5.js","./fonts-CM-VN_uu.css","./index-B4xrtp2Z.js","./pug-By0kVCfm.js","./javascript-C3MnDRiU.js","./dagre-OKDRZEBW-DZOFGtWs.js","./graph-P5xyWsnt.js","./_baseUniq-CVF81xU9.js","./layout-Bep2Ed3s.js","./_basePickBy-D-mTy0T7.js","./clone-D4Ah0_EU.js","./c4Diagram-VJAJSXHY-B8ZTZ0n8.js","./chunk-D6G4REZN-_hQRwF7v.js","./flowDiagram-4HSFHLVR-tRJWBVYd.js","./chunk-RZ5BOZE2-Vl3-h4SG.js","./channel-BQBOXiqs.js","./erDiagram-Q7BY3M3F-CfYzgE98.js","./gitGraphDiagram-7IBYFJ6S-Cd11pFbi.js","./chunk-4BMEZGHF-BCTXK4C0.js","./chunk-XZIHB7SX-C61iNqnQ.js","./radar-MK3ICKWK-BIBBEO8S.js","./ganttDiagram-APWFNJXF-BWG5VLyZ.js","./infoDiagram-PH2N3AL5-KjJg15gx.js","./pieDiagram-IB7DONF6-C7Crt4gw.js","./arc-BcZxubla.js","./quadrantDiagram-7GDLP6J5-BMbHGD_6.js","./xychartDiagram-VJFVF3MP-DD0agc1N.js","./requirementDiagram-KVF5MWMF-BumPivJk.js","./sequenceDiagram-X6HHIX6F-CwnYTtil.js","./classDiagram-GIVACNV2-CNcNWb-o.js","./chunk-A2AXSNBT-Dt4gXQBd.js","./classDiagram-v2-COTLJTTW-CNcNWb-o.js","./stateDiagram-DGXRK772-4yXBR_vP.js","./chunk-AEK57VVT-CAAj-J2-.js","./stateDiagram-v2-YXO3MK2T-6p7BdIAB.js","./journeyDiagram-U35MCT3I-Dp2FVK6h.js","./timeline-definition-BDJGKUSR-CCdgMyc-.js","./mindmap-definition-ALO5MXBD-DiLxGufv.js","./cytoscape.esm-C0AOj4uS.js","./kanban-definition-NDS4AKOZ-cttuutf_.js","./sankeyDiagram-QLVOVGJD-D1LzUzj2.js","./diagram-VNBRO52H-DUz0a2Uz.js","./diagram-SSKATNLV-DGVbLzJc.js","./blockDiagram-JOT3LUYC-DIjqxpHX.js","./architectureDiagram-IEHRJDOE-0JBfW8n9.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$1, 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 faHome, aL as faDownload, aM as faFileAlt, aN as faDesktop, aO as faImage, aP as faMusic, aQ as faVideo, aR as faLaptop, aS as faUsers, aT as faDatabase, aU as faBoxOpen, aV as faBook, aW as faHdd, aX as faBox, aY as faArchive, aZ as faNetworkWired, a_ as faFolder, a$ as faFolderOpen, b0 as faFolderTree, b1 as faFile, b2 as faCode, b3 as faSliders, b4 as faTrash, b5 as faArrowDown, b6 as faPaperclip, b7 as faPaperPlane, 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 faMountain, by as faFire, bz as faIcicles, bA as faBolt, bB as faAdjust, bC as faWaveSquare, bD as faUser, bE as faEnvelope, bF as faHistory, bG as faListAlt, bH as faCreditCard, bI as faPlusCircle, bJ as faChartLine, bK as faShield, bL as library$1, bM as icons$1, f as CssBaseline, e as ThemeProvider$1, d as getTheme, R as ReactDOM$1, E as ErrorBoundary } from "./fonts-DqkQ6BY5.js";
3
3
  const styled = createStyled();
4
4
  function getThemeProps(params) {
@@ -89889,7 +89889,7 @@ const languages = [
89889
89889
  name: "Go",
89890
89890
  extensions: ["go"],
89891
89891
  load() {
89892
- return __vitePreload(() => import("./index-Bz9i7Cd8.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m2) => m2.go());
89892
+ return __vitePreload(() => import("./index-CtrEBFNz.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m2) => m2.go());
89893
89893
  }
89894
89894
  }),
89895
89895
  /* @__PURE__ */ LanguageDescription.of({
@@ -90066,7 +90066,7 @@ const languages = [
90066
90066
  alias: ["yml"],
90067
90067
  extensions: ["yaml", "yml"],
90068
90068
  load() {
90069
- return __vitePreload(() => import("./index-kCiyjU-8.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m2) => m2.yaml());
90069
+ return __vitePreload(() => import("./index-B4xrtp2Z.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m2) => m2.yaml());
90070
90070
  }
90071
90071
  }),
90072
90072
  // Legacy modes ported from CodeMirror 5
@@ -129102,7 +129102,7 @@ const ReviewHeader = styled$1(Box)(({ theme: theme2 }) => ({
129102
129102
  justifyContent: "space-between",
129103
129103
  padding: theme2.spacing(0.5, 2, 1, 1),
129104
129104
  gap: theme2.spacing(1),
129105
- height: "64px"
129105
+ minHeight: "64px"
129106
129106
  }));
129107
129107
  const ReviewPrompt = styled$1(Typography)(({ theme: theme2 }) => ({
129108
129108
  flexGrow: 1,
@@ -129135,7 +129135,6 @@ const InlineEdit = ({
129135
129135
  const mediaRecorderRef = reactExports.useRef(null);
129136
129136
  const audioChunksRef = reactExports.useRef([]);
129137
129137
  const [platform, setPlatform] = reactExports.useState("");
129138
- const fileInputRef = reactExports.useRef(null);
129139
129138
  const textareaRef = reactExports.useRef(null);
129140
129139
  const isCancelledRef = reactExports.useRef(false);
129141
129140
  const containerRef = reactExports.useRef(null);
@@ -129343,22 +129342,18 @@ const InlineEdit = ({
129343
129342
  !isLoading && !isRecording && !isTranscribing && canEnableRecordingFeature
129344
129343
  )
129345
129344
  );
129346
- const triggerFileInput = () => {
129347
- fileInputRef.current?.click();
129348
- };
129349
- const handleFileSelect = (e3) => {
129350
- if (e3.target.files && e3.target.files.length > 0) {
129351
- const newAttachments = Array.from(e3.target.files).map((file) => {
129352
- const filePath2 = file.name;
129353
- if (filePath2) {
129354
- return normalizePath(filePath2);
129355
- }
129356
- return URL.createObjectURL(file);
129357
- });
129358
- setAttachments((prev2) => [...prev2, ...newAttachments]);
129359
- if (fileInputRef.current) {
129360
- fileInputRef.current.value = "";
129345
+ const handleAttachFile = async () => {
129346
+ const result = await window.electron.ipcRenderer.invoke(
129347
+ "show-open-dialog",
129348
+ {
129349
+ properties: ["openFile", "multiSelections"]
129361
129350
  }
129351
+ );
129352
+ if (!result.canceled && result.filePaths.length > 0) {
129353
+ const newAttachments = result.filePaths.map(
129354
+ (path2) => normalizePath(path2)
129355
+ );
129356
+ setAttachments((prev2) => [...prev2, ...newAttachments]);
129362
129357
  }
129363
129358
  };
129364
129359
  const handleRemoveAttachment = (index2) => {
@@ -129575,27 +129570,14 @@ const InlineEdit = ({
129575
129570
  }
129576
129571
  ),
129577
129572
  /* @__PURE__ */ jsxRuntimeExports.jsxs(ButtonsRow$1, { children: [
129578
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", alignItems: "center", gap: 1, children: [
129579
- /* @__PURE__ */ jsxRuntimeExports.jsx(
129580
- "input",
129581
- {
129582
- type: "file",
129583
- ref: fileInputRef,
129584
- onChange: handleFileSelect,
129585
- style: { display: "none" },
129586
- disabled: isLoading || isRecording || isTranscribing,
129587
- multiple: true
129588
- }
129589
- ),
129590
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Add attachments", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
129591
- AttachmentButton$1,
129592
- {
129593
- onClick: triggerFileInput,
129594
- disabled: isLoading || isRecording || isTranscribing || !!reviewState,
129595
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Paperclip, { size: iconSize })
129596
- }
129597
- ) })
129598
- ] }),
129573
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Box, { display: "flex", alignItems: "center", gap: 1, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Add attachments", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
129574
+ AttachmentButton$1,
129575
+ {
129576
+ onClick: handleAttachFile,
129577
+ disabled: isLoading || isRecording || isTranscribing || !!reviewState,
129578
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Paperclip, { size: iconSize })
129579
+ }
129580
+ ) }) }),
129599
129581
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", alignItems: "center", gap: 1, children: [
129600
129582
  !isRecording && !isTranscribing && !isLoading && /* @__PURE__ */ jsxRuntimeExports.jsx(
129601
129583
  Tooltip$1,
@@ -227631,7 +227613,7 @@ const InsertImageDialog = ({
227631
227613
  onInsert
227632
227614
  }) => {
227633
227615
  const theme2 = useTheme$2();
227634
- const [url, setUrl] = reactExports.useState("");
227616
+ const [path2, setPath] = reactExports.useState("");
227635
227617
  const handleFile = reactExports.useCallback(
227636
227618
  (file) => {
227637
227619
  const reader = new FileReader();
@@ -227666,18 +227648,18 @@ const InsertImageDialog = ({
227666
227648
  handleFile(file);
227667
227649
  }
227668
227650
  };
227669
- const handleInsertFromUrl = () => {
227670
- if (url) {
227671
- onInsert(url);
227651
+ const handleInsertFromPath = () => {
227652
+ if (path2) {
227653
+ onInsert(path2);
227672
227654
  onClose();
227673
- setUrl("");
227655
+ setPath("");
227674
227656
  }
227675
227657
  };
227676
227658
  const handleKeyDown = (e3) => {
227677
227659
  if (e3.key === "Enter") {
227678
227660
  e3.preventDefault();
227679
- if (url.trim()) {
227680
- handleInsertFromUrl();
227661
+ if (path2.trim()) {
227662
+ handleInsertFromPath();
227681
227663
  }
227682
227664
  }
227683
227665
  };
@@ -227713,7 +227695,7 @@ const InsertImageDialog = ({
227713
227695
  fullWidth: true,
227714
227696
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { pt: 2 }, children: [
227715
227697
  /* @__PURE__ */ jsxRuntimeExports.jsxs(FieldContainer$1, { children: [
227716
- /* @__PURE__ */ jsxRuntimeExports.jsx(FieldLabel$7, { children: "Image URL" }),
227698
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FieldLabel$7, { children: "Image Path on Device" }),
227717
227699
  /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: { display: "flex", gap: 1, alignItems: "center" }, children: [
227718
227700
  /* @__PURE__ */ jsxRuntimeExports.jsx(
227719
227701
  StyledTextField$4,
@@ -227721,24 +227703,24 @@ const InsertImageDialog = ({
227721
227703
  autoFocus: true,
227722
227704
  fullWidth: true,
227723
227705
  variant: "outlined",
227724
- type: "url",
227725
- placeholder: "https://example.com/image.jpg",
227726
- value: url,
227727
- onChange: (e3) => setUrl(e3.target.value),
227706
+ type: "text",
227707
+ placeholder: "/Users/eren/Documents/image.png",
227708
+ value: path2,
227709
+ onChange: (e3) => setPath(e3.target.value),
227728
227710
  onKeyDown: handleKeyDown,
227729
227711
  InputProps: {
227730
- startAdornment: /* @__PURE__ */ jsxRuntimeExports.jsx(InputAdornment, { position: "start", sx: { paddingLeft: 1 }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Link, { size: 16 }) })
227712
+ startAdornment: /* @__PURE__ */ jsxRuntimeExports.jsx(InputAdornment, { position: "start", sx: { paddingLeft: 1 }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(File$1, { size: 16 }) })
227731
227713
  }
227732
227714
  }
227733
227715
  ),
227734
227716
  /* @__PURE__ */ jsxRuntimeExports.jsx(
227735
227717
  Button,
227736
227718
  {
227737
- onClick: handleInsertFromUrl,
227719
+ onClick: handleInsertFromPath,
227738
227720
  variant: "contained",
227739
227721
  color: "primary",
227740
227722
  size: "small",
227741
- disabled: !url.trim(),
227723
+ disabled: !path2.trim(),
227742
227724
  sx: {
227743
227725
  textTransform: "none",
227744
227726
  fontSize: "0.8125rem",
@@ -228251,7 +228233,8 @@ const EditorContainer = styled$1(Paper)(({ theme: theme2 }) => ({
228251
228233
  width: "100%",
228252
228234
  overflow: "hidden",
228253
228235
  backgroundColor: theme2.palette.background.paper,
228254
- border: `1px solid ${theme2.palette.divider}`
228236
+ borderRadius: "0px",
228237
+ border: "none"
228255
228238
  }));
228256
228239
  const EditorToolbar = styled$1(Toolbar)(({ theme: theme2 }) => ({
228257
228240
  minHeight: "48px !important",
@@ -228942,15 +228925,27 @@ const WysiwygMarkdownEditorComponent = ({
228942
228925
  [executeCommand, handleContentChange]
228943
228926
  );
228944
228927
  const insertImage = reactExports.useCallback(() => {
228928
+ const selection2 = window.getSelection();
228929
+ if (selection2?.rangeCount) {
228930
+ selectionRef.current = selection2.getRangeAt(0).cloneRange();
228931
+ }
228945
228932
  setIsImageDialogOpen(true);
228946
228933
  }, []);
228947
228934
  const handleInsertImage = reactExports.useCallback(
228948
228935
  (url) => {
228936
+ editorRef.current?.focus();
228937
+ const selection2 = window.getSelection();
228938
+ if (!selection2) return;
228939
+ if (selectionRef.current) {
228940
+ selection2.removeAllRanges();
228941
+ selection2.addRange(selectionRef.current);
228942
+ }
228949
228943
  if (url) {
228950
228944
  executeCommand("insertImage", url);
228951
228945
  }
228946
+ handleContentChange();
228952
228947
  },
228953
- [executeCommand]
228948
+ [executeCommand, handleContentChange]
228954
228949
  );
228955
228950
  const insertTable = reactExports.useCallback((event) => {
228956
228951
  const selection2 = window.getSelection();
@@ -232387,6 +232382,8 @@ const ChatHeader = ({
232387
232382
  }) => {
232388
232383
  const setCanvasOpen = useUiPreferencesStore((s2) => s2.setCanvasOpen);
232389
232384
  const isCanvasOpen = useUiPreferencesStore((s2) => s2.isCanvasOpen);
232385
+ const isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0;
232386
+ const shortcut = isMac ? "⌘+Shift+C" : "Ctrl+Shift+C";
232390
232387
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
232391
232388
  Box,
232392
232389
  {
@@ -232445,7 +232442,7 @@ const ChatHeader = ({
232445
232442
  }
232446
232443
  )
232447
232444
  ] }),
232448
- onOpenOptions && !isCanvasOpen && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Open Canvas", arrow: true, placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
232445
+ onOpenOptions && !isCanvasOpen && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: `Open Canvas (${shortcut})`, arrow: true, placement: "top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
232449
232446
  OptionsButton,
232450
232447
  {
232451
232448
  onClick: () => setCanvasOpen(true),
@@ -233445,7 +233442,6 @@ const MessageInput = reactExports.forwardRef(
233445
233442
  const mediaRecorderRef = reactExports.useRef(null);
233446
233443
  const audioChunksRef = reactExports.useRef([]);
233447
233444
  const [platform, setPlatform] = reactExports.useState("");
233448
- const fileInputRef = reactExports.useRef(null);
233449
233445
  const { data: credentialsData, isLoading: isLoadingCredentials } = useCredentials();
233450
233446
  const isRadientApiKeyConfigured = reactExports.useMemo(
233451
233447
  () => credentialsData?.keys?.includes("RADIENT_API_KEY"),
@@ -233647,32 +233643,28 @@ ${message2}`;
233647
233643
  if (!newMessage.trim() && attachments.length === 0) return;
233648
233644
  submitMessage();
233649
233645
  };
233650
- const handleFileSelect = (e3) => {
233651
- if (e3.target.files && e3.target.files.length > 0) {
233652
- const newAttachments = Array.from(e3.target.files).map((file) => {
233653
- const filePath = file.name;
233654
- if (filePath) {
233655
- return normalizePath(filePath);
233656
- }
233657
- return URL.createObjectURL(file);
233658
- });
233659
- if (conversationId) {
233660
- for (const path2 of newAttachments) {
233661
- addAttachment(conversationId, { id: v4(), path: path2 });
233662
- }
233663
- }
233664
- if (fileInputRef.current) {
233665
- fileInputRef.current.value = "";
233666
- }
233667
- }
233668
- };
233669
233646
  const handleRemoveAttachment = (id27) => {
233670
233647
  if (conversationId) {
233671
233648
  removeAttachment(conversationId, id27);
233672
233649
  }
233673
233650
  };
233674
- const triggerFileInput = () => {
233675
- fileInputRef.current?.click();
233651
+ const handleAttachFile = async () => {
233652
+ const result = await window.electron.ipcRenderer.invoke(
233653
+ "show-open-dialog",
233654
+ {
233655
+ properties: ["openFile", "multiSelections"]
233656
+ }
233657
+ );
233658
+ if (!result.canceled && result.filePaths.length > 0) {
233659
+ if (conversationId) {
233660
+ for (const path2 of result.filePaths) {
233661
+ addAttachment(conversationId, {
233662
+ id: v4(),
233663
+ path: normalizePath(path2)
233664
+ });
233665
+ }
233666
+ }
233667
+ }
233676
233668
  };
233677
233669
  const handlePaste = (event) => {
233678
233670
  const items = event.clipboardData?.items;
@@ -233720,157 +233712,150 @@ ${message2}`;
233720
233712
  };
233721
233713
  const iconSize = isSmallView ? 16 : 18;
233722
233714
  const inputContent = /* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, style: { width: "100%" }, children: [
233723
- /* @__PURE__ */ jsxRuntimeExports.jsxs(InputInnerContainer, { isSmallView, children: [
233724
- replies.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ReplyPreview, { replies, onRemoveReply: handleRemoveReply }),
233725
- attachments.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
233726
- AttachmentsPreview,
233727
- {
233728
- attachments: attachments.map((a2) => a2.path),
233729
- onRemoveAttachment: (index2) => handleRemoveAttachment(attachments[index2].id),
233730
- disabled: isInputDisabled || isRecording || isTranscribing
233731
- }
233732
- ),
233733
- isRecording ? /* @__PURE__ */ jsxRuntimeExports.jsx(AudioRecordingIndicator, { isRecording }) : isTranscribing ? /* @__PURE__ */ jsxRuntimeExports.jsxs(TranscriptionIndicator, { children: [
233734
- /* @__PURE__ */ jsxRuntimeExports.jsx(TranscriptionText, { variant: "body2", children: "Processing audio" }),
233735
- /* @__PURE__ */ jsxRuntimeExports.jsx(WaveformAnimation, {})
233736
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
233737
- StyledTextField$2,
233738
- {
233739
- fullWidth: true,
233740
- placeholder: isInputDisabled ? "Agent is busy" : "Ask me for help",
233741
- isSmallView,
233742
- value: newMessage,
233743
- onChange: (e3) => setNewMessage(e3.target.value),
233744
- onKeyDown: handleKeyDown,
233745
- onPaste: handlePaste,
233746
- multiline: true,
233747
- maxRows: 4,
233748
- variant: "outlined",
233749
- inputRef: textareaRef,
233750
- disabled: isInputDisabled,
233751
- inputProps: {
233752
- "data-tour-tag": "chat-input-textarea"
233753
- }
233754
- }
233755
- ),
233756
- /* @__PURE__ */ jsxRuntimeExports.jsxs(ButtonsRow, { children: [
233757
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", alignItems: "center", gap: 1, children: [
233758
- /* @__PURE__ */ jsxRuntimeExports.jsx(
233759
- "input",
233715
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
233716
+ InputInnerContainer,
233717
+ {
233718
+ isSmallView,
233719
+ "data-tour-tag": "chat-input-textarea",
233720
+ children: [
233721
+ replies.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ReplyPreview, { replies, onRemoveReply: handleRemoveReply }),
233722
+ attachments.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
233723
+ AttachmentsPreview,
233760
233724
  {
233761
- type: "file",
233762
- ref: fileInputRef,
233763
- onChange: handleFileSelect,
233764
- style: { display: "none" },
233765
- disabled: isInputDisabled || isRecording || isTranscribing,
233766
- multiple: true
233725
+ attachments: attachments.map((a2) => a2.path),
233726
+ onRemoveAttachment: (index2) => handleRemoveAttachment(attachments[index2].id),
233727
+ disabled: isInputDisabled || isRecording || isTranscribing
233767
233728
  }
233768
233729
  ),
233769
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Attach file", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233770
- AttachmentButton,
233730
+ isRecording ? /* @__PURE__ */ jsxRuntimeExports.jsx(AudioRecordingIndicator, { isRecording }) : isTranscribing ? /* @__PURE__ */ jsxRuntimeExports.jsxs(TranscriptionIndicator, { children: [
233731
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TranscriptionText, { variant: "body2", children: "Processing audio" }),
233732
+ /* @__PURE__ */ jsxRuntimeExports.jsx(WaveformAnimation, {})
233733
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
233734
+ StyledTextField$2,
233771
233735
  {
233772
- onClick: triggerFileInput,
233773
- color: "primary",
233774
- size: "small",
233775
- "aria-label": "Attach file",
233776
- "data-tour-tag": "chat-input-attach-file-button",
233777
- disabled: isInputDisabled || isRecording || isTranscribing,
233736
+ fullWidth: true,
233737
+ placeholder: isInputDisabled ? "Agent is busy" : "Ask me for help",
233778
233738
  isSmallView,
233779
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faPaperclip, fontSize: iconSize })
233780
- }
233781
- ) }) }),
233782
- conversationId && /* @__PURE__ */ jsxRuntimeExports.jsx(
233783
- DirectoryIndicator,
233784
- {
233785
- agentId: conversationId,
233786
- currentWorkingDirectory: agentData?.current_working_directory
233739
+ value: newMessage,
233740
+ onChange: (e3) => setNewMessage(e3.target.value),
233741
+ onKeyDown: handleKeyDown,
233742
+ onPaste: handlePaste,
233743
+ multiline: true,
233744
+ maxRows: 4,
233745
+ variant: "outlined",
233746
+ inputRef: textareaRef,
233747
+ disabled: isInputDisabled
233787
233748
  }
233788
- )
233789
- ] }),
233790
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", alignItems: "center", gap: 1, children: [
233791
- !isRecording && !isTranscribing && !(isLoading && currentJobId) && /* @__PURE__ */ jsxRuntimeExports.jsx(
233792
- Tooltip$1,
233793
- {
233794
- title: !canEnableRecordingFeature ? "Sign in to Radient in the settings page to enable audio recording" : `Start recording (${shortcutText} or hold Space)`,
233795
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233796
- IconButton,
233749
+ ),
233750
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(ButtonsRow, { children: [
233751
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", alignItems: "center", gap: 1, children: [
233752
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Attach file", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233753
+ AttachmentButton,
233797
233754
  {
233798
- onClick: handleStartRecording,
233755
+ onClick: handleAttachFile,
233799
233756
  color: "primary",
233800
233757
  size: "small",
233801
- "aria-label": "Start recording",
233802
- disabled: isLoading || !canEnableRecordingFeature,
233803
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233804
- Mic,
233758
+ "aria-label": "Attach file",
233759
+ "data-tour-tag": "chat-input-attach-file-button",
233760
+ disabled: isInputDisabled || isRecording || isTranscribing,
233761
+ isSmallView,
233762
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(FontAwesomeIcon, { icon: faPaperclip, fontSize: iconSize })
233763
+ }
233764
+ ) }) }),
233765
+ conversationId && /* @__PURE__ */ jsxRuntimeExports.jsx(
233766
+ DirectoryIndicator,
233767
+ {
233768
+ agentId: conversationId,
233769
+ currentWorkingDirectory: agentData?.current_working_directory
233770
+ }
233771
+ )
233772
+ ] }),
233773
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { display: "flex", alignItems: "center", gap: 1, children: [
233774
+ !isRecording && !isTranscribing && !(isLoading && currentJobId) && /* @__PURE__ */ jsxRuntimeExports.jsx(
233775
+ Tooltip$1,
233776
+ {
233777
+ title: !canEnableRecordingFeature ? "Sign in to Radient in the settings page to enable audio recording" : `Start recording (${shortcutText} or hold Space)`,
233778
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233779
+ IconButton,
233805
233780
  {
233806
- size: iconSize * 1.1,
233807
- style: {
233808
- width: iconSize * 1.4,
233809
- height: iconSize * 1.4,
233810
- padding: "2px"
233811
- }
233781
+ onClick: handleStartRecording,
233782
+ color: "primary",
233783
+ size: "small",
233784
+ "aria-label": "Start recording",
233785
+ disabled: isLoading || !canEnableRecordingFeature,
233786
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233787
+ Mic,
233788
+ {
233789
+ size: iconSize * 1.1,
233790
+ style: {
233791
+ width: iconSize * 1.4,
233792
+ height: iconSize * 1.4,
233793
+ padding: "2px"
233794
+ }
233795
+ }
233796
+ )
233812
233797
  }
233813
- )
233798
+ ) })
233814
233799
  }
233815
- ) })
233816
- }
233817
- ),
233818
- isRecording && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
233819
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Confirm recording (Enter)", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233820
- IconButton,
233821
- {
233822
- onClick: handleConfirmRecording,
233823
- color: "success",
233824
- size: "small",
233825
- "aria-label": "Confirm recording",
233826
- disabled: isLoading,
233827
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { size: iconSize })
233828
- }
233829
- ) }) }),
233830
- /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Cancel recording (Esc)", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233831
- IconButton,
233832
- {
233833
- onClick: handleCancelRecording,
233834
- color: "error",
233835
- size: "small",
233836
- "aria-label": "Cancel recording",
233837
- disabled: isLoading,
233838
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(X$2, { size: iconSize })
233839
- }
233840
- ) }) })
233841
- ] }),
233842
- isLoading && currentJobId ? /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Stop agent", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233843
- SendButton,
233844
- {
233845
- type: "button",
233846
- variant: "contained",
233847
- color: "error",
233848
- onClick: () => onCancelJob?.(currentJobId),
233849
- "aria-label": "Stop agent",
233850
- isSmallView,
233851
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Square, { size: iconSize })
233852
- }
233853
- ) }) }) : !isRecording && !isTranscribing && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Send message", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233854
- SendButton,
233855
- {
233856
- type: "submit",
233857
- variant: "contained",
233858
- color: "primary",
233859
- disabled: isLoading || !newMessage.trim() && attachments.length === 0,
233860
- "aria-label": "Send message",
233861
- isSmallView,
233862
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233863
- FontAwesomeIcon,
233800
+ ),
233801
+ isRecording && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
233802
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Confirm recording (Enter)", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233803
+ IconButton,
233804
+ {
233805
+ onClick: handleConfirmRecording,
233806
+ color: "success",
233807
+ size: "small",
233808
+ "aria-label": "Confirm recording",
233809
+ disabled: isLoading,
233810
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { size: iconSize })
233811
+ }
233812
+ ) }) }),
233813
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Cancel recording (Esc)", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233814
+ IconButton,
233815
+ {
233816
+ onClick: handleCancelRecording,
233817
+ color: "error",
233818
+ size: "small",
233819
+ "aria-label": "Cancel recording",
233820
+ disabled: isLoading,
233821
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(X$2, { size: iconSize })
233822
+ }
233823
+ ) }) })
233824
+ ] }),
233825
+ isLoading && currentJobId ? /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Stop agent", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233826
+ SendButton,
233864
233827
  {
233865
- icon: faPaperPlane,
233866
- fontSize: iconSize * 0.8
233828
+ type: "button",
233829
+ variant: "contained",
233830
+ color: "error",
233831
+ onClick: () => onCancelJob?.(currentJobId),
233832
+ "aria-label": "Stop agent",
233833
+ isSmallView,
233834
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Square, { size: iconSize })
233867
233835
  }
233868
- )
233869
- }
233870
- ) }) })
233871
- ] })
233872
- ] })
233873
- ] }),
233836
+ ) }) }) : !isRecording && !isTranscribing && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip$1, { title: "Send message", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233837
+ SendButton,
233838
+ {
233839
+ type: "submit",
233840
+ variant: "contained",
233841
+ color: "primary",
233842
+ disabled: isLoading || !newMessage.trim() && attachments.length === 0,
233843
+ "aria-label": "Send message",
233844
+ isSmallView,
233845
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233846
+ FontAwesomeIcon,
233847
+ {
233848
+ icon: faPaperPlane,
233849
+ fontSize: iconSize * 0.8
233850
+ }
233851
+ )
233852
+ }
233853
+ ) }) })
233854
+ ] })
233855
+ ] })
233856
+ ]
233857
+ }
233858
+ ),
233874
233859
  messages.length === 0 && !isSmallView && /* @__PURE__ */ jsxRuntimeExports.jsx(SuggestionsContainer, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
233875
233860
  Box,
233876
233861
  {
@@ -273876,7 +273861,7 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
273876
273861
  registerLayoutLoaders([
273877
273862
  {
273878
273863
  name: "dagre",
273879
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-OKDRZEBW-BT5Skj91.js"), true ? __vite__mapDeps([6,7,8,9,10,11,1,2]) : void 0, import.meta.url), "loader")
273864
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-OKDRZEBW-DZOFGtWs.js"), true ? __vite__mapDeps([6,7,8,9,10,11,1,2]) : void 0, import.meta.url), "loader")
273880
273865
  }
273881
273866
  ]);
273882
273867
  }, "registerDefaultLayoutLoaders");
@@ -274466,7 +274451,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
274466
274451
  }, "detector");
274467
274452
  var loader = /* @__PURE__ */ __name(async () => {
274468
274453
  const { diagram: diagram2 } = await __vitePreload(async () => {
274469
- const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-f9fZ76vg.js");
274454
+ const { diagram: diagram22 } = await import("./c4Diagram-VJAJSXHY-B8ZTZ0n8.js");
274470
274455
  return { diagram: diagram22 };
274471
274456
  }, true ? __vite__mapDeps([12,13,1,2]) : void 0, import.meta.url);
274472
274457
  return { id, diagram: diagram2 };
@@ -274486,7 +274471,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
274486
274471
  }, "detector");
274487
274472
  var loader2 = /* @__PURE__ */ __name(async () => {
274488
274473
  const { diagram: diagram2 } = await __vitePreload(async () => {
274489
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DCXlt-VL.js");
274474
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-tRJWBVYd.js");
274490
274475
  return { diagram: diagram22 };
274491
274476
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
274492
274477
  return { id: id2, diagram: diagram2 };
@@ -274512,7 +274497,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
274512
274497
  }, "detector");
274513
274498
  var loader3 = /* @__PURE__ */ __name(async () => {
274514
274499
  const { diagram: diagram2 } = await __vitePreload(async () => {
274515
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DCXlt-VL.js");
274500
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-tRJWBVYd.js");
274516
274501
  return { diagram: diagram22 };
274517
274502
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
274518
274503
  return { id: id3, diagram: diagram2 };
@@ -274529,7 +274514,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
274529
274514
  }, "detector");
274530
274515
  var loader4 = /* @__PURE__ */ __name(async () => {
274531
274516
  const { diagram: diagram2 } = await __vitePreload(async () => {
274532
- const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-CbXbwJWU.js");
274517
+ const { diagram: diagram22 } = await import("./erDiagram-Q7BY3M3F-CfYzgE98.js");
274533
274518
  return { diagram: diagram22 };
274534
274519
  }, true ? __vite__mapDeps([17,15,16,1,2]) : void 0, import.meta.url);
274535
274520
  return { id: id4, diagram: diagram2 };
@@ -274546,7 +274531,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
274546
274531
  }, "detector");
274547
274532
  var loader5 = /* @__PURE__ */ __name(async () => {
274548
274533
  const { diagram: diagram2 } = await __vitePreload(async () => {
274549
- const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-05jpnuDv.js");
274534
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-7IBYFJ6S-Cd11pFbi.js");
274550
274535
  return { diagram: diagram22 };
274551
274536
  }, true ? __vite__mapDeps([18,19,20,21,8,10,11,1,2]) : void 0, import.meta.url);
274552
274537
  return { id: id5, diagram: diagram2 };
@@ -274563,7 +274548,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
274563
274548
  }, "detector");
274564
274549
  var loader6 = /* @__PURE__ */ __name(async () => {
274565
274550
  const { diagram: diagram2 } = await __vitePreload(async () => {
274566
- const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-ByRCNFDO.js");
274551
+ const { diagram: diagram22 } = await import("./ganttDiagram-APWFNJXF-BWG5VLyZ.js");
274567
274552
  return { diagram: diagram22 };
274568
274553
  }, true ? __vite__mapDeps([22,1,2]) : void 0, import.meta.url);
274569
274554
  return { id: id6, diagram: diagram2 };
@@ -274580,7 +274565,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
274580
274565
  }, "detector");
274581
274566
  var loader7 = /* @__PURE__ */ __name(async () => {
274582
274567
  const { diagram: diagram2 } = await __vitePreload(async () => {
274583
- const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-BpYJVAYI.js");
274568
+ const { diagram: diagram22 } = await import("./infoDiagram-PH2N3AL5-KjJg15gx.js");
274584
274569
  return { diagram: diagram22 };
274585
274570
  }, true ? __vite__mapDeps([23,21,8,10,11,1,2]) : void 0, import.meta.url);
274586
274571
  return { id: id7, diagram: diagram2 };
@@ -274596,7 +274581,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
274596
274581
  }, "detector");
274597
274582
  var loader8 = /* @__PURE__ */ __name(async () => {
274598
274583
  const { diagram: diagram2 } = await __vitePreload(async () => {
274599
- const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-DaslafX0.js");
274584
+ const { diagram: diagram22 } = await import("./pieDiagram-IB7DONF6-C7Crt4gw.js");
274600
274585
  return { diagram: diagram22 };
274601
274586
  }, true ? __vite__mapDeps([24,19,21,8,10,11,25,1,2]) : void 0, import.meta.url);
274602
274587
  return { id: id8, diagram: diagram2 };
@@ -274612,7 +274597,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
274612
274597
  }, "detector");
274613
274598
  var loader9 = /* @__PURE__ */ __name(async () => {
274614
274599
  const { diagram: diagram2 } = await __vitePreload(async () => {
274615
- const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-DSgptiHP.js");
274600
+ const { diagram: diagram22 } = await import("./quadrantDiagram-7GDLP6J5-BMbHGD_6.js");
274616
274601
  return { diagram: diagram22 };
274617
274602
  }, true ? __vite__mapDeps([26,1,2]) : void 0, import.meta.url);
274618
274603
  return { id: id9, diagram: diagram2 };
@@ -274629,7 +274614,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
274629
274614
  }, "detector");
274630
274615
  var loader10 = /* @__PURE__ */ __name(async () => {
274631
274616
  const { diagram: diagram2 } = await __vitePreload(async () => {
274632
- const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-BpNk-8_j.js");
274617
+ const { diagram: diagram22 } = await import("./xychartDiagram-VJFVF3MP-DD0agc1N.js");
274633
274618
  return { diagram: diagram22 };
274634
274619
  }, true ? __vite__mapDeps([27,1,2]) : void 0, import.meta.url);
274635
274620
  return { id: id10, diagram: diagram2 };
@@ -274646,7 +274631,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
274646
274631
  }, "detector");
274647
274632
  var loader11 = /* @__PURE__ */ __name(async () => {
274648
274633
  const { diagram: diagram2 } = await __vitePreload(async () => {
274649
- const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-DK6InPeo.js");
274634
+ const { diagram: diagram22 } = await import("./requirementDiagram-KVF5MWMF-BumPivJk.js");
274650
274635
  return { diagram: diagram22 };
274651
274636
  }, true ? __vite__mapDeps([28,15,1,2]) : void 0, import.meta.url);
274652
274637
  return { id: id11, diagram: diagram2 };
@@ -274663,7 +274648,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
274663
274648
  }, "detector");
274664
274649
  var loader12 = /* @__PURE__ */ __name(async () => {
274665
274650
  const { diagram: diagram2 } = await __vitePreload(async () => {
274666
- const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-BDt_f_hQ.js");
274651
+ const { diagram: diagram22 } = await import("./sequenceDiagram-X6HHIX6F-CwnYTtil.js");
274667
274652
  return { diagram: diagram22 };
274668
274653
  }, true ? __vite__mapDeps([29,13,20,1,2]) : void 0, import.meta.url);
274669
274654
  return { id: id12, diagram: diagram2 };
@@ -274683,7 +274668,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
274683
274668
  }, "detector");
274684
274669
  var loader13 = /* @__PURE__ */ __name(async () => {
274685
274670
  const { diagram: diagram2 } = await __vitePreload(async () => {
274686
- const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-BSvSEfYr.js");
274671
+ const { diagram: diagram22 } = await import("./classDiagram-GIVACNV2-CNcNWb-o.js");
274687
274672
  return { diagram: diagram22 };
274688
274673
  }, true ? __vite__mapDeps([30,31,15,1,2]) : void 0, import.meta.url);
274689
274674
  return { id: id13, diagram: diagram2 };
@@ -274703,7 +274688,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
274703
274688
  }, "detector");
274704
274689
  var loader14 = /* @__PURE__ */ __name(async () => {
274705
274690
  const { diagram: diagram2 } = await __vitePreload(async () => {
274706
- const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-BSvSEfYr.js");
274691
+ const { diagram: diagram22 } = await import("./classDiagram-v2-COTLJTTW-CNcNWb-o.js");
274707
274692
  return { diagram: diagram22 };
274708
274693
  }, true ? __vite__mapDeps([32,31,15,1,2]) : void 0, import.meta.url);
274709
274694
  return { id: id14, diagram: diagram2 };
@@ -274723,7 +274708,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
274723
274708
  }, "detector");
274724
274709
  var loader15 = /* @__PURE__ */ __name(async () => {
274725
274710
  const { diagram: diagram2 } = await __vitePreload(async () => {
274726
- const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-vXoCogWI.js");
274711
+ const { diagram: diagram22 } = await import("./stateDiagram-DGXRK772-4yXBR_vP.js");
274727
274712
  return { diagram: diagram22 };
274728
274713
  }, true ? __vite__mapDeps([33,34,15,7,8,9,10,1,2]) : void 0, import.meta.url);
274729
274714
  return { id: id15, diagram: diagram2 };
@@ -274746,7 +274731,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
274746
274731
  }, "detector");
274747
274732
  var loader16 = /* @__PURE__ */ __name(async () => {
274748
274733
  const { diagram: diagram2 } = await __vitePreload(async () => {
274749
- const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-OXX9BIpM.js");
274734
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-YXO3MK2T-6p7BdIAB.js");
274750
274735
  return { diagram: diagram22 };
274751
274736
  }, true ? __vite__mapDeps([35,34,15,1,2]) : void 0, import.meta.url);
274752
274737
  return { id: id16, diagram: diagram2 };
@@ -274763,7 +274748,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
274763
274748
  }, "detector");
274764
274749
  var loader17 = /* @__PURE__ */ __name(async () => {
274765
274750
  const { diagram: diagram2 } = await __vitePreload(async () => {
274766
- const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-CX7f5NLJ.js");
274751
+ const { diagram: diagram22 } = await import("./journeyDiagram-U35MCT3I-Dp2FVK6h.js");
274767
274752
  return { diagram: diagram22 };
274768
274753
  }, true ? __vite__mapDeps([36,13,25,1,2]) : void 0, import.meta.url);
274769
274754
  return { id: id17, diagram: diagram2 };
@@ -274833,7 +274818,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
274833
274818
  }, "detector");
274834
274819
  var loader18 = /* @__PURE__ */ __name(async () => {
274835
274820
  const { diagram: diagram2 } = await __vitePreload(async () => {
274836
- const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-DCXlt-VL.js");
274821
+ const { diagram: diagram22 } = await import("./flowDiagram-4HSFHLVR-tRJWBVYd.js");
274837
274822
  return { diagram: diagram22 };
274838
274823
  }, true ? __vite__mapDeps([14,15,16,1,2]) : void 0, import.meta.url);
274839
274824
  return { id: id18, diagram: diagram2 };
@@ -274850,7 +274835,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
274850
274835
  }, "detector");
274851
274836
  var loader19 = /* @__PURE__ */ __name(async () => {
274852
274837
  const { diagram: diagram2 } = await __vitePreload(async () => {
274853
- const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-Br6iVGoQ.js");
274838
+ const { diagram: diagram22 } = await import("./timeline-definition-BDJGKUSR-CCdgMyc-.js");
274854
274839
  return { diagram: diagram22 };
274855
274840
  }, true ? __vite__mapDeps([37,25,1,2]) : void 0, import.meta.url);
274856
274841
  return { id: id19, diagram: diagram2 };
@@ -274867,7 +274852,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
274867
274852
  }, "detector");
274868
274853
  var loader20 = /* @__PURE__ */ __name(async () => {
274869
274854
  const { diagram: diagram2 } = await __vitePreload(async () => {
274870
- const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-BiKEPoOD.js");
274855
+ const { diagram: diagram22 } = await import("./mindmap-definition-ALO5MXBD-DiLxGufv.js");
274871
274856
  return { diagram: diagram22 };
274872
274857
  }, true ? __vite__mapDeps([38,39,1,2]) : void 0, import.meta.url);
274873
274858
  return { id: id20, diagram: diagram2 };
@@ -274884,7 +274869,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
274884
274869
  }, "detector");
274885
274870
  var loader21 = /* @__PURE__ */ __name(async () => {
274886
274871
  const { diagram: diagram2 } = await __vitePreload(async () => {
274887
- const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-b906EDwu.js");
274872
+ const { diagram: diagram22 } = await import("./kanban-definition-NDS4AKOZ-cttuutf_.js");
274888
274873
  return { diagram: diagram22 };
274889
274874
  }, true ? __vite__mapDeps([40,1,2]) : void 0, import.meta.url);
274890
274875
  return { id: id21, diagram: diagram2 };
@@ -274901,7 +274886,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
274901
274886
  }, "detector");
274902
274887
  var loader22 = /* @__PURE__ */ __name(async () => {
274903
274888
  const { diagram: diagram2 } = await __vitePreload(async () => {
274904
- const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-DZTaN53O.js");
274889
+ const { diagram: diagram22 } = await import("./sankeyDiagram-QLVOVGJD-D1LzUzj2.js");
274905
274890
  return { diagram: diagram22 };
274906
274891
  }, true ? __vite__mapDeps([41,1,2]) : void 0, import.meta.url);
274907
274892
  return { id: id22, diagram: diagram2 };
@@ -274918,7 +274903,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
274918
274903
  }, "detector");
274919
274904
  var loader23 = /* @__PURE__ */ __name(async () => {
274920
274905
  const { diagram: diagram2 } = await __vitePreload(async () => {
274921
- const { diagram: diagram22 } = await import("./diagram-VNBRO52H-DYNE5bP-.js");
274906
+ const { diagram: diagram22 } = await import("./diagram-VNBRO52H-DUz0a2Uz.js");
274922
274907
  return { diagram: diagram22 };
274923
274908
  }, true ? __vite__mapDeps([42,19,21,8,10,11,1,2]) : void 0, import.meta.url);
274924
274909
  return { id: id23, diagram: diagram2 };
@@ -274934,7 +274919,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
274934
274919
  }, "detector");
274935
274920
  var loader24 = /* @__PURE__ */ __name(async () => {
274936
274921
  const { diagram: diagram2 } = await __vitePreload(async () => {
274937
- const { diagram: diagram22 } = await import("./diagram-SSKATNLV-CARCGGp8.js");
274922
+ const { diagram: diagram22 } = await import("./diagram-SSKATNLV-DGVbLzJc.js");
274938
274923
  return { diagram: diagram22 };
274939
274924
  }, true ? __vite__mapDeps([43,19,21,8,10,11,1,2]) : void 0, import.meta.url);
274940
274925
  return { id: id24, diagram: diagram2 };
@@ -274950,7 +274935,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
274950
274935
  }, "detector");
274951
274936
  var loader25 = /* @__PURE__ */ __name(async () => {
274952
274937
  const { diagram: diagram2 } = await __vitePreload(async () => {
274953
- const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-CU6r8dcw.js");
274938
+ const { diagram: diagram22 } = await import("./blockDiagram-JOT3LUYC-DIjqxpHX.js");
274954
274939
  return { diagram: diagram22 };
274955
274940
  }, true ? __vite__mapDeps([44,11,8,7,16,1,2]) : void 0, import.meta.url);
274956
274941
  return { id: id25, diagram: diagram2 };
@@ -274967,7 +274952,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
274967
274952
  }, "detector");
274968
274953
  var loader26 = /* @__PURE__ */ __name(async () => {
274969
274954
  const { diagram: diagram2 } = await __vitePreload(async () => {
274970
- const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-C4ktN37D.js");
274955
+ const { diagram: diagram22 } = await import("./architectureDiagram-IEHRJDOE-0JBfW8n9.js");
274971
274956
  return { diagram: diagram22 };
274972
274957
  }, true ? __vite__mapDeps([45,19,20,21,8,10,11,39,1,2]) : void 0, import.meta.url);
274973
274958
  return { id: id26, diagram: diagram2 };
@@ -317557,6 +317542,19 @@ const ChatPage = () => {
317557
317542
  const { agentId, navigateToAgent } = useAgentRouteParam();
317558
317543
  const navigate = useNavigate();
317559
317544
  const queryClient2 = useQueryClient();
317545
+ const { isCanvasOpen, setCanvasOpen } = useUiPreferencesStore();
317546
+ reactExports.useEffect(() => {
317547
+ const handleKeyDown = (event) => {
317548
+ if (event.key === "c" && (event.metaKey || event.ctrlKey) && event.shiftKey) {
317549
+ event.preventDefault();
317550
+ setCanvasOpen(!isCanvasOpen);
317551
+ }
317552
+ };
317553
+ document.addEventListener("keydown", handleKeyDown);
317554
+ return () => {
317555
+ document.removeEventListener("keydown", handleKeyDown);
317556
+ };
317557
+ }, [isCanvasOpen, setCanvasOpen]);
317560
317558
  const { setLastChatAgentId, getLastAgentId } = useAgentSelectionStore();
317561
317559
  const effectiveAgentId = agentId || getLastAgentId("chat");
317562
317560
  const conversationId = effectiveAgentId || void 0;
@@ -324311,6 +324309,7 @@ const tourCanvasOverviewImage = "" + new URL("canvas-overview-CruGEIRC.png", imp
324311
324309
  const tourCanvasVariablesImage = "" + new URL("canvas-variables-view-DrA20zqs.png", import.meta.url).href;
324312
324310
  const tourChatAttachmentsImage = "" + new URL("chat-attachments-_3cRrONU.png", import.meta.url).href;
324313
324311
  const tourChatFullViewImage = "" + new URL("chat-full-view-e-eJPzrw.png", import.meta.url).href;
324312
+ const tourChatInputImage = "" + new URL("chat-input-CU-CA7Se.png", import.meta.url).href;
324314
324313
  const tourInlineEditCanvasImage = "" + new URL("inline-edit-canvas-O9conTkE.png", import.meta.url).href;
324315
324314
  const tourSteps = [
324316
324315
  {
@@ -324331,7 +324330,7 @@ const tourSteps = [
324331
324330
  id: "agent-list",
324332
324331
  attachTo: { element: '[data-tour-tag="agent-list-panel"]', on: "right" },
324333
324332
  title: "Your Agents",
324334
- text: "On the left, you'll see a list of your available AI agents. You can select an agent to start a conversation or manage its settings. Think of this as your WhatsApp chat list, but for AI agents! There are no limits to how many agents you can have, so create as many as you need to handle all your daily tasks.",
324333
+ text: "On the left, you'll see a list of your available AI agents. You can select an agent to start a conversation or manage its settings. Think of this as your messenger contacts list, but for AI agents! There are no limits to how many agents you can have, so create as many as you need to handle all your daily tasks.<br/><br/>Use the create agents button at the top of the toolbar to create a new agent at any time. You can also import agents from the Agent Hub, which we will cover later in this tour.",
324335
324334
  buttons: [
324336
324335
  {
324337
324336
  text: "Back",
@@ -324386,11 +324385,11 @@ const tourSteps = [
324386
324385
  {
324387
324386
  id: "chat-input",
324388
324387
  attachTo: {
324389
- element: 'textarea[data-tour-tag="chat-input-textarea"]',
324388
+ element: '[data-tour-tag="chat-input-textarea"]',
324390
324389
  on: "top"
324391
324390
  },
324392
324391
  title: "Ask Your Agent Anything",
324393
- text: `Type your request here. Agents can answer questions, perform tasks, search the web, and much more. When you create a new agent, you'll see suggested prompts for ideas!<br /><br />Some powerful requests that you can try:<br /><br /><ul><li>"Create a spreadsheet in my Documents folder with all the major cities in Canada."</li><li>"Search the web for the latest news on AI and make a thorough report."</li><li>Select an attachment and then "translate this document to French."</li></ul>`,
324392
+ text: `Type your request here. Agents can answer questions, perform tasks, search the web, and much more. When you create a new agent, you'll see suggested prompts for ideas!<br /><br />Some powerful requests that you can try:<br /><br /><ul><li>"Create a spreadsheet in my Documents folder with all the major cities in Canada."</li><li>"Search the web for the latest news on AI and make a thorough report."</li><li>Select an attachment and then "translate this document to French."</li></ul><br /><img src="${tourChatInputImage}" alt="Chat Input" style="width: 100%; height: 200px; object-fit: contain; border-radius: 8px;"/><br />You can also attach files to your message by clicking the paperclip button, which we will cover in the next step.`,
324394
324393
  buttons: [
324395
324394
  {
324396
324395
  text: "Back",
@@ -324574,7 +324573,7 @@ const tourSteps = [
324574
324573
  on: "top"
324575
324574
  },
324576
324575
  title: "Documents View",
324577
- 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.<br /><br />This is where you can get more precise around your agents' work.<br/><img src="${tourInlineEditCanvasImage}" alt="Inline Edit Canvas" style="width: 100%; height: 200px; object-fit: contain; border-radius: 8px;"/><br />In your documents, highlight any text that you want your agent to improve and press Cmd/Ctrl+K to bring up the inline AI editor.
324576
+ text: `The Documents view shows all your open notes, blog articles, code, and visualizations as tabs. You can switch between documents to edit them and see dynamic visualizations in HTML created by your agents. Use this view to work with your notes, reports, and agent-generated content.<br /><br />This is where you can get more precise around your agents' work.<br/><img src="${tourInlineEditCanvasImage}" alt="Inline Edit Canvas" style="width: 100%; height: 200px; object-fit: contain; border-radius: 8px;"/><br />In your documents, highlight any text that you want your agent to improve and press Cmd/Ctrl+K to bring up the inline AI editor.
324578
324577
  <br /><img src="${tourCanvasCodeInlineEditImage}" alt="Canvas Code Inline Edit" style="width: 100%; height: 200px; object-fit: cover; object-position: top; border-radius: 8px;"/><br />You can be as precise as you want and the agent will edit the document for you in place, using its memories and context so you don't have to re-explain things!`,
324579
324578
  buttons: [
324580
324579
  {