@forsion/unit 2.13.3 → 2.13.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.
- package/main.mjs +135 -10
- package/package.json +1 -1
- package/release.json +5 -5
- package/web/assets/ArtificialView-BD1yHz1N.js +1 -0
- package/web/assets/AutomationBuilder-B09c-5Bi.js +1 -0
- package/web/assets/CalendarConfigView-Bd-ZDGPO.js +1 -0
- package/web/assets/CalendarSide-B0RVbOsg.js +1 -0
- package/web/assets/CalendarView-BHio-n_r.js +3 -0
- package/web/assets/CalendarView-t91KpUG7.css +1 -0
- package/web/assets/CapabilityMenu-DyHTEYLr.js +1 -0
- package/web/assets/Chrome-C7F6fdDp.js +1 -0
- package/web/assets/{CodeView-DRVh13k9.js → CodeView-BGOnrGhB.js} +3 -3
- package/web/assets/CtxMenuButtons-BYjrbUKS.js +1 -0
- package/web/assets/DashboardGridView-CR-R_qV8.js +25 -0
- package/web/assets/DashboardGridView-RoVFSkNO.css +1 -0
- package/web/assets/EventCard-QyYorE1_.js +1 -0
- package/web/assets/ExcalidrawCanvas-BgcFPMpU.css +1 -0
- package/web/assets/ExcalidrawCanvas-lwJCN6uB.js +1 -0
- package/web/assets/FloatingToc-DO7SH8Ku.js +1 -0
- package/web/assets/GitCloneDialog-CbW-RJak.js +1 -0
- package/web/assets/GitCloneDialog-DOxZk2K0.css +1 -0
- package/web/assets/HomepageView-Bx8FbWlY.css +1 -0
- package/web/assets/HomepageView-CHJEhf9c.js +4 -0
- package/web/assets/ImageStudioPanels-CgVf0wiq.js +3 -0
- package/web/assets/ImageStudioView-4WcX0_V4.js +1 -0
- package/web/assets/InlineAiPanel-CdIPINsA.js +1 -0
- package/web/assets/InlineAiPanel-DZZijfif.css +1 -0
- package/web/assets/InlineFiles-CAIyTk1n.js +1 -0
- package/web/assets/MarkdownBlock-Cqfk5DhC.css +1 -0
- package/web/assets/MarkdownBlock-DSItkLhu.js +58 -0
- package/web/assets/ModelPill--CU3XTIQ.js +2 -0
- package/web/assets/{ModelPill-CzdNh7Mt.css → ModelPill-BiUsuhy3.css} +1 -1
- package/web/assets/MuseLibraryView-16p1zsxz.css +1 -0
- package/web/assets/MuseLibraryView-PlS7HAlV.js +2 -0
- package/web/assets/MuseView-CvsO62Fo.js +7 -0
- package/web/assets/PageHistoryPanel-CDh7nm78.js +2 -0
- package/web/assets/{PdfAnnotator-CW0wPWRB.js → PdfAnnotator-DafvjP3U.js} +3 -3
- package/web/assets/PenRow-CEy-s6SF.js +1 -0
- package/web/assets/PluginToolCard-BmTRr5JT.css +1 -0
- package/web/assets/PluginToolCard-DCzLhsCA.js +2 -0
- package/web/assets/ProductView-AUqnTwmQ.js +1 -0
- package/web/assets/SettingsPage-B9mmkWaM.js +3 -0
- package/web/assets/StudioGuestSurface-OOhRA8nt.js +1 -0
- package/web/assets/TodoListView-BkgMe44I.js +1 -0
- package/web/assets/Tooltip-DOYi44eY.js +1 -0
- package/web/assets/UnifiedPage-CTmQpf2T.css +1 -0
- package/web/assets/UnifiedPage-s7-tDSwG.js +712 -0
- package/web/assets/ViewSelectionBar-WmSWMFsR.js +2 -0
- package/web/assets/appStore-DDOkzWDA.js +456 -0
- package/web/assets/appStore-iy8_Tmac.css +1 -0
- package/web/assets/arrow-up-right-BptN64d-.js +1 -0
- package/web/assets/{artificial-BzLFkChP.css → artificial-BubVxExB.css} +1 -1
- package/web/assets/astryxBridge-BL56QfEv.js +69 -0
- package/web/assets/astryxBridge-djzCiy4v.css +1 -0
- package/web/assets/automationListSource-B1jz6q0t.js +1 -0
- package/web/assets/boardSurface-CP4HNmcm.js +1 -0
- package/web/assets/calendarNavStore-DCi7VBmM.js +1 -0
- package/web/assets/canvasPrefs-ArsX3NFO.js +1 -0
- package/web/assets/chatBoxSurface-DRsDr-MT.js +1 -0
- package/web/assets/chevron-up-ChXNh14u.js +1 -0
- package/web/assets/{client-BqhpYbYL.js → client-fKy9CWk0.js} +1 -1
- package/web/assets/code-xml-DCCD9eCS.js +1 -0
- package/web/assets/{codeStudioStore-Dq5i8nbE.js → codeStudioStore-BgLfCDK2.js} +8 -8
- package/web/assets/codingNavigation-BrkLENBZ.css +1 -0
- package/web/assets/contextMenuSurface-BF593l2M.js +1 -0
- package/web/assets/copy-plus-ClKrSgM7.js +1 -0
- package/web/assets/create-DYmVT68X.js +14 -0
- package/web/assets/dashboardSurface-C6cbR3oG.js +1 -0
- package/web/assets/dbStore-BIG5Mfh2.js +1 -0
- package/web/assets/deskCapture-q-jRDIcc.js +1 -0
- package/web/assets/{diff2html-OoRdHZ_O.js → diff2html-Di8qIz6O.js} +2 -2
- package/web/assets/{docx-preview-B43XC8Cn.js → docx-preview-B-URZXdP.js} +1 -1
- package/web/assets/draft-CBSW5tHx.js +2 -0
- package/web/assets/drawingStore-CGvTqqYW.js +7 -0
- package/web/assets/file-down-Z913cCyQ.js +1 -0
- package/web/assets/floatingTocSurface-DGwTiqvU.js +1 -0
- package/web/assets/foldActions-DGIPTmE1.js +1 -0
- package/web/assets/folder-1OJQeDI1.js +1 -0
- package/web/assets/folder-minus-D_j1SwHu.js +1 -0
- package/web/assets/folder-plus-DP9sFr26.js +1 -0
- package/web/assets/gestures-ZhFAENNZ.js +1 -0
- package/web/assets/git-branch-BMajF2cu.js +1 -0
- package/web/assets/homeCardStatus-5R7XkxFL.js +1 -0
- package/web/assets/i18n-CAf4PT1o.css +1 -0
- package/web/assets/i18n.generated-DW_l6CkR.js +15 -0
- package/web/assets/imageStudio-CwG21Bat.css +1 -0
- package/web/assets/imageStudio-DC_syDtx.js +4 -0
- package/web/assets/index-B8A3nKeL.js +1 -0
- package/web/assets/{index-DDMXVG0h.js → index-BDZIQnEx.js} +2 -2
- package/web/assets/index-BYKR7EVg.js +1 -0
- package/web/assets/index-BeW45J9J.js +7 -0
- package/web/assets/index-BnJguNqI.js +1 -0
- package/web/assets/index-BniT-A2n.js +1 -0
- package/web/assets/index-C--E96Ul.js +1 -0
- package/web/assets/index-CI2esW1X.js +1 -0
- package/web/assets/index-CIKPZc3Q.js +1 -0
- package/web/assets/index-COzdD7mZ.js +13 -0
- package/web/assets/index-CPfmhZ3Z.js +1 -0
- package/web/assets/index-CVLDDD5Z.js +1 -0
- package/web/assets/index-CWXpOSI2.js +1 -0
- package/web/assets/index-Cg1FWM_p.js +1 -0
- package/web/assets/index-CmsN2Zm2.js +1 -0
- package/web/assets/index-CtCYv9bF.js +1 -0
- package/web/assets/index-CtRdzpNh.js +1 -0
- package/web/assets/index-D-ClOPbg.js +1 -0
- package/web/assets/{index-CobUnTcv.js → index-DfhEDV2T.js} +2 -2
- package/web/assets/index-Dr6YmrrT.js +1 -0
- package/web/assets/index-SpegRFQV.js +1 -0
- package/web/assets/index-bF04pF8q.js +3 -0
- package/web/assets/index-fDB1l4d-.js +3398 -0
- package/web/assets/index-jzlU5luC.js +1 -0
- package/web/assets/{index-D102FOuM.js → index-uhvJ8AiJ.js} +1 -1
- package/web/assets/{invitePage-BW0BH8Ac.js → invitePage-iOT1zBvp.js} +1 -1
- package/web/assets/{ipc-D7yENkjV.js → ipc-SAPDwyQ4.js} +1 -1
- package/web/assets/{jszip.min-UE5d5vPJ.js → jszip.min-B3n1FGCb.js} +1 -1
- package/web/assets/launchpad-C9U9hpWJ.css +1 -0
- package/web/assets/launchpad-CcmSwlJl.js +2 -0
- package/web/assets/layout-grid-oIyIGbc5.js +1 -0
- package/web/assets/linkFollow-uke1Xtit.js +8 -0
- package/web/assets/{listFold-CKxjyY5_.js → listFold-BeNv2v6M.js} +1 -1
- package/web/assets/lock-open-D2nMg0ga.js +1 -0
- package/web/assets/log-out-D70NCXC4.js +1 -0
- package/web/assets/magnet-Cqmm97W8.js +1 -0
- package/web/assets/main-B9aT0WXG.js +15 -0
- package/web/assets/main-BlVApHpj.css +1 -0
- package/web/assets/markdownEditorSurface-BiDH0__r.css +1 -0
- package/web/assets/markdownEditorSurface-zUzFity2.js +3 -0
- package/web/assets/mediaPlayer-DB4KUvua.js +1 -0
- package/web/assets/message-square-plus-BvUfAAZm.js +1 -0
- package/web/assets/{messages-4w1Khzm1.js → messages-GQUjmbwW.js} +1 -1
- package/web/assets/minimize-2-CMhzL6ZW.js +1 -0
- package/web/assets/mobileEntry-6u7TYC4s.css +1 -0
- package/web/assets/mobileEntry-BnHzrdoC.js +13 -0
- package/web/assets/modelPickerSurface-Dtz40Ae2.js +1 -0
- package/web/assets/nativeDownload-DsGyUSJ5.js +1 -0
- package/web/assets/nativeSheetMenu--iihXNVd.js +1 -0
- package/web/assets/pageStore-CyvNZEYX.js +13 -0
- package/web/assets/pageStore-ys8L4rjF.css +1 -0
- package/web/assets/{pageTree-CIXFRCLk.js → pageTree-Ci2qzrs1.js} +4 -4
- package/web/assets/pen-line-DC3lbEY1.js +1 -0
- package/web/assets/pen-tool-DD5_N4lZ.js +1 -0
- package/web/assets/pencil--sWwxHdP.js +1 -0
- package/web/assets/phoneList-BpLxxdq6.css +1 -0
- package/web/assets/phoneList-DKRMxQHf.js +1 -0
- package/web/assets/pluginChat-82zZt47Y.js +2 -0
- package/web/assets/react-b7FrqRQR.js +1 -0
- package/web/assets/recordSurface-vUX25Z8R.js +1 -0
- package/web/assets/redo-2-CqlqhWrI.js +1 -0
- package/web/assets/rotate-ccw-D8kni6Ni.js +1 -0
- package/web/assets/selectionActions-DIq0xDm8.js +2 -0
- package/web/assets/selectionBarSurface-B94e5JW_.js +1 -0
- package/web/assets/sessionTitle-Ctp4iNKu.js +1 -0
- package/web/assets/settingsPageSurface-C9TA3mJg.js +1 -0
- package/web/assets/sharePage-CY04XCAf.js +2 -0
- package/web/assets/{shareViewer-BzuSyJv_.js → shareViewer-DweNF8Ch.js} +2 -2
- package/web/assets/star-B0sZEmbj.js +1 -0
- package/web/assets/tableSurface-CSBYBw5P.js +1 -0
- package/web/assets/tanguProbe-B8Qv2vcm.js +6 -0
- package/web/assets/{terminalView-SAxITnRW.js → terminalView-BLGdmdl7.js} +3 -3
- package/web/assets/theme-CUWFlazV.css +1 -0
- package/web/assets/type-Dt7RNB9g.js +1 -0
- package/web/assets/undo-2-QimgpLBn.js +1 -0
- package/web/assets/{unitAccount-BPYRAa3m.js → unitAccount-DL3jfd84.js} +1 -1
- package/web/assets/{unitBridge-BNVzai6X.js → unitBridge-BSsCy1zP.js} +1 -1
- package/web/assets/{unitCloudTransport-iFweA1xk.js → unitCloudTransport-CI_6H0TU.js} +1 -1
- package/web/assets/unitOwnerAccess-CiQ7nD7E.js +1 -0
- package/web/assets/unitShim-Dl2ksNp-.js +5 -0
- package/web/assets/upload-Dy7svciS.js +1 -0
- package/web/assets/userSpaces-oMHIWgYe.js +1 -0
- package/web/assets/viewportLock-B0l1GU_k.css +1 -0
- package/web/assets/viewportLock-BZq5PTeN.js +738 -0
- package/web/assets/zoom-in-DDEtY_Go.js +1 -0
- package/web/excalidraw/excalidraw.js +4 -2
- package/web/index.html +12 -13
- package/web/assets/ArtificialView-DS97zlMg.js +0 -1
- package/web/assets/AutomationBuilder-BsJc8wuC.js +0 -1
- package/web/assets/CalendarConfigView-BN8mraSo.js +0 -1
- package/web/assets/CalendarView-D55PA1vn.js +0 -1
- package/web/assets/CapabilityMenu-BVrokPpT.js +0 -1
- package/web/assets/CheckboxInput-BuJ3HPm_.js +0 -1
- package/web/assets/Chrome-amTcZNE4.js +0 -1
- package/web/assets/DashboardGridView-D9s9pez_.css +0 -1
- package/web/assets/DashboardGridView-DlFyYfUh.js +0 -17
- package/web/assets/EventCard-DUrn2krw.js +0 -1
- package/web/assets/ExcalidrawCanvas-4uYrLYin.css +0 -1
- package/web/assets/ExcalidrawCanvas-TpbzBF-J.js +0 -1
- package/web/assets/FloatingToc-B1d4-5EL.js +0 -1
- package/web/assets/HomepageView-DnQ_5Obe.css +0 -1
- package/web/assets/HomepageView-nzKfbHM-.js +0 -1
- package/web/assets/ImageStudioPanels-B2PTq6Yb.js +0 -3
- package/web/assets/ImageStudioView-Cawr6pGW.js +0 -1
- package/web/assets/InlineFiles-DKPH5JHz.js +0 -1
- package/web/assets/MarkdownBlock--__nPQGh.css +0 -1
- package/web/assets/MarkdownBlock-BHpDy2qQ.js +0 -58
- package/web/assets/ModelPill-ChzAM3z1.js +0 -2
- package/web/assets/MuseLibraryView-DLuQ_jyV.js +0 -2
- package/web/assets/MuseView-CDDwV6SR.js +0 -6
- package/web/assets/PageHistoryPanel-BbdXpjJM.js +0 -2
- package/web/assets/PenRow-BY-MZLDQ.js +0 -1
- package/web/assets/ProductView-0ieVL3rY.js +0 -1
- package/web/assets/RightPanel-BRexwQ3W.js +0 -4
- package/web/assets/RunLocationPicker-BrDfOu8-.css +0 -1
- package/web/assets/RunLocationPicker-CadYiE7C.js +0 -43
- package/web/assets/SketchCard-BcXCdBAs.js +0 -641
- package/web/assets/StudioGuestSurface-ZJFKnNYF.js +0 -1
- package/web/assets/TodoListView-DuRdVFgB.js +0 -1
- package/web/assets/Tooltip-DtDUL18W.js +0 -1
- package/web/assets/UnifiedPage-CWXc_mo1.css +0 -1
- package/web/assets/UnifiedPage-D7JTfABH.js +0 -68
- package/web/assets/appStore-ClD7vq5L.css +0 -1
- package/web/assets/appStore-affnJoin.js +0 -3292
- package/web/assets/approvalText-Cy2UAUAQ.js +0 -2
- package/web/assets/arrow-up-right-R4P9Mmxz.js +0 -1
- package/web/assets/astryxBridge-CF_hpqC2.css +0 -1
- package/web/assets/astryxBridge-CT2wZJXs.js +0 -70
- package/web/assets/automationListSource-JVBMsMbC.js +0 -1
- package/web/assets/boardSurface-Ce0_vf9f.js +0 -1
- package/web/assets/book-open-CcXCToyx.js +0 -1
- package/web/assets/calendarNavStore-tQJRVpum.js +0 -1
- package/web/assets/canvasPrefs-CSuX9aLF.js +0 -1
- package/web/assets/chatBoxSurface-IG6Vu4Dz.js +0 -1
- package/web/assets/circle-question-mark-O8AhUz35.js +0 -1
- package/web/assets/circle-x-AV2ZWulM.js +0 -1
- package/web/assets/code-xml-DdR58F83.js +0 -1
- package/web/assets/codingNavigation-CxdCK78-.js +0 -53
- package/web/assets/codingNavigation-_tOR0ell.css +0 -1
- package/web/assets/create-BgJN5qsj.js +0 -14
- package/web/assets/dashboardSurface-BY-AFB-r.js +0 -1
- package/web/assets/deskCapture-BD2qD6NI.js +0 -1
- package/web/assets/emoji-BPdA62d7.js +0 -1
- package/web/assets/floatingTocSurface-BM2SYE_u.js +0 -1
- package/web/assets/foldActions-BcyvNVBs.js +0 -1
- package/web/assets/folder-CCZqnwRc.js +0 -1
- package/web/assets/folder-plus-BJKT1Pqg.js +0 -1
- package/web/assets/gestures-BwPbZDkU.js +0 -1
- package/web/assets/hack2gate-dark-Dx2RtDRI.jpg +0 -0
- package/web/assets/hack2gate-light-DRKq9tyS.jpg +0 -0
- package/web/assets/hand-DRu7IJdU.js +0 -1
- package/web/assets/hard-drive-CXNJUCXw.js +0 -1
- package/web/assets/i18n-BMo19xaR.css +0 -1
- package/web/assets/i18n.generated-DvY59Zq3.js +0 -15
- package/web/assets/imageStudio-Axwmd4GW.js +0 -2
- package/web/assets/imageStudio-DZ0qGU2s.css +0 -1
- package/web/assets/index-B1rE_NwA.js +0 -1
- package/web/assets/index-BFTY79aq.js +0 -1
- package/web/assets/index-BGEkZBs2.js +0 -1
- package/web/assets/index-BO2XJc36.js +0 -13
- package/web/assets/index-BYUntVIZ.js +0 -297
- package/web/assets/index-C65u4fXd.js +0 -1
- package/web/assets/index-C_Ohi-I3.js +0 -1
- package/web/assets/index-CkMhazev.js +0 -1
- package/web/assets/index-D3CYvMpl.js +0 -1
- package/web/assets/index-D78izbLA.js +0 -1
- package/web/assets/index-DY0M_dpd.js +0 -1
- package/web/assets/index-DcbZwhpE.js +0 -1
- package/web/assets/index-Dlkq7gkE.js +0 -1
- package/web/assets/index-HqmJW2np.js +0 -1
- package/web/assets/index-LxlyPm0_.js +0 -1
- package/web/assets/index-Uq4J2aoW.js +0 -1
- package/web/assets/index-WbVt2P8R.js +0 -3
- package/web/assets/index-XyjIhkPw.js +0 -1
- package/web/assets/index-Y2kzYlZq.js +0 -1
- package/web/assets/index-mB0EQkyZ.js +0 -1
- package/web/assets/index-pJh7JN7_.js +0 -1
- package/web/assets/index-taRxNsbp.js +0 -7
- package/web/assets/launchpad-C2c1MSVX.css +0 -1
- package/web/assets/layout-grid-Hs3eDA07.js +0 -1
- package/web/assets/linkFollow-Msu1XH9v.js +0 -8
- package/web/assets/list-tree-DmuRb-p9.js +0 -1
- package/web/assets/lock-kffGfeHt.js +0 -1
- package/web/assets/log-out-B5gEP0tF.js +0 -1
- package/web/assets/main-BiS_5wrB.css +0 -1
- package/web/assets/main-DIyFlyfK.js +0 -20
- package/web/assets/markdownEditorSurface-Bql20IAf.css +0 -1
- package/web/assets/markdownEditorSurface-Cx2rqFAY.js +0 -3
- package/web/assets/message-square-plus-DxBPIhPS.js +0 -1
- package/web/assets/minus-CfoZ4oxr.js +0 -1
- package/web/assets/mobileEntry-B8JwR53-.js +0 -13
- package/web/assets/mobileEntry-DS1vohuL.css +0 -1
- package/web/assets/nativeDownload-Udrv_tmU.js +0 -1
- package/web/assets/pageChrome-D-9npbUE.js +0 -1
- package/web/assets/pageChrome-eO9pb2fH.css +0 -1
- package/web/assets/pen-tool-D_Y9We9x.js +0 -1
- package/web/assets/pencil-DGiTRzW1.js +0 -1
- package/web/assets/phoneList-BQfCJwKF.css +0 -1
- package/web/assets/phoneList-DHUia6HT.js +0 -9
- package/web/assets/pluginChat-BXuJiMYi.js +0 -2
- package/web/assets/redo-2-QgiKEg9T.js +0 -1
- package/web/assets/rotate-ccw-BLoH5er1.js +0 -1
- package/web/assets/sharePage-DYYN5usb.js +0 -2
- package/web/assets/star-BmywYD3u.js +0 -1
- package/web/assets/tableSurface-21LDYY_G.js +0 -1
- package/web/assets/terminal-BlmA_Z1C.js +0 -1
- package/web/assets/theme-Dgqst5S9.css +0 -1
- package/web/assets/type-DmIL6FB-.js +0 -1
- package/web/assets/undo-2-yMeXc8Wi.js +0 -1
- package/web/assets/unitOwnerAccess-Bggl7bDP.js +0 -1
- package/web/assets/unitShim-BP2nBO_k.js +0 -5
- package/web/assets/upload-D20PZHXc.js +0 -1
- package/web/assets/userSpaces-CrLrKklx.js +0 -1
- package/web/assets/viewportLock-DO1lzA2N.css +0 -1
- package/web/assets/viewportLock-tlT6H_Hc.js +0 -629
- package/web/assets/workflow-Bd6xBHiT.js +0 -1
- package/web/assets/zoom-in-_TgFOpyv.js +0 -1
package/main.mjs
CHANGED
|
@@ -42,6 +42,15 @@ var init_nativeFeatures = __esm({
|
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
+
// desktop/shared/corePlugins.ts
|
|
46
|
+
var CORE_BUNDLE_IDS;
|
|
47
|
+
var init_corePlugins = __esm({
|
|
48
|
+
"desktop/shared/corePlugins.ts"() {
|
|
49
|
+
"use strict";
|
|
50
|
+
CORE_BUNDLE_IDS = ["forsion-extend", "tangu-computer-use"];
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
45
54
|
// unit/packages.ts
|
|
46
55
|
import { readFile as readFile2, readdir, realpath as realpath2, stat } from "node:fs/promises";
|
|
47
56
|
import { isAbsolute, resolve, sep as sep2 } from "node:path";
|
|
@@ -90,7 +99,10 @@ async function readPackage(dir, appVersion) {
|
|
|
90
99
|
descriptionEn: manifest.descriptionEn,
|
|
91
100
|
onboarding: manifest.onboarding,
|
|
92
101
|
fileExtensions: Array.isArray(manifest.fileExtensions) ? manifest.fileExtensions.filter(isSafePluginExt).map((v) => v.trim().toLowerCase()).slice(0, 8) : [],
|
|
93
|
-
code
|
|
102
|
+
code,
|
|
103
|
+
// 首方核心包(Forsion Extend):页面据 locked 才放出它的商店页、「Forsion 云端」子页与首方接缝(同桌面内置包)。
|
|
104
|
+
// ponytail: 只按 id 认 —— Unit 只装运营方用 CLI 拷进来的本地包(install.ts),没有商店安装;哪天 Unit 能从商店装插件,改成按桌面 builtinBundles 的固定公钥验 SIGNATURE 再标。
|
|
105
|
+
...CORE_BUNDLE_IDS.includes(manifest.id) ? { locked: true } : {}
|
|
94
106
|
};
|
|
95
107
|
}
|
|
96
108
|
if (manifest.runtime) {
|
|
@@ -130,6 +142,7 @@ var init_packages = __esm({
|
|
|
130
142
|
"use strict";
|
|
131
143
|
init_pluginFiles();
|
|
132
144
|
init_nativeFeatures();
|
|
145
|
+
init_corePlugins();
|
|
133
146
|
validId = (id) => typeof id === "string" && /^[a-z][a-z0-9-]*$/.test(id);
|
|
134
147
|
}
|
|
135
148
|
});
|
|
@@ -665,6 +678,7 @@ var ENGINE_ROUTES = [
|
|
|
665
678
|
{ method: "DELETE", path: "/agent/skills/user/:id", access: "deny-remote", src: "routes/assets.ts", why: "delete user skill" },
|
|
666
679
|
{ method: "GET", path: "/agent/tools", access: "allow", src: "routes/assets.ts", why: "tool list" },
|
|
667
680
|
{ method: "GET", path: "/agent/browser-extension", access: "deny-remote", src: "routes/browserExtension.ts", why: "browser extension pairing credentials" },
|
|
681
|
+
{ method: "POST", path: "/agent/browser-extension/reload-clients", access: "deny-remote", src: "routes/browserExtension.ts", why: "reloads the browser extension on the local machine" },
|
|
668
682
|
{ method: "POST", path: "/agent/browser-extension/reset-code", access: "deny-remote", src: "routes/browserExtension.ts", why: "rotates browser extension pairing credentials" },
|
|
669
683
|
{ method: "GET", path: "/agent/channels", access: "deny-remote", src: "routes/channels.ts", why: "channel config is local-only" },
|
|
670
684
|
{ method: "PUT", path: "/agent/channels/:kind/config", access: "deny-remote", src: "routes/channels.ts", why: "channel config is local-only" },
|
|
@@ -686,6 +700,9 @@ var ENGINE_ROUTES = [
|
|
|
686
700
|
{ method: "GET", path: "/agent/agents/:slug/human", access: "deny-remote", src: "routes/human.ts", why: "host collaboration configuration" },
|
|
687
701
|
{ method: "PUT", path: "/agent/agents/:slug/human", access: "deny-remote", src: "routes/human.ts", why: "host collaboration configuration write" },
|
|
688
702
|
{ method: "POST", path: "/agent/agents/:slug/human/undo", access: "deny-remote", src: "routes/human.ts", why: "host collaboration configuration undo" },
|
|
703
|
+
{ method: "GET", path: "/agent/human/:file", access: "deny-remote", src: "routes/human.ts", why: "host human folder (HUMAN / AGENT / SOUL / MEMORY)" },
|
|
704
|
+
{ method: "PUT", path: "/agent/human/:file", access: "deny-remote", src: "routes/human.ts", why: "host human folder write" },
|
|
705
|
+
{ method: "POST", path: "/agent/human/:file/undo", access: "deny-remote", src: "routes/human.ts", why: "host human folder undo" },
|
|
689
706
|
{ method: "GET", path: "/agent/project-context/human", access: "deny-remote", src: "routes/human.ts", why: "host collaboration configuration" },
|
|
690
707
|
{ method: "PUT", path: "/agent/project-context/human", access: "deny-remote", src: "routes/human.ts", why: "host collaboration configuration write" },
|
|
691
708
|
{ method: "POST", path: "/agent/project-context/human/undo", access: "deny-remote", src: "routes/human.ts", why: "host collaboration configuration undo" },
|
|
@@ -703,6 +720,8 @@ var ENGINE_ROUTES = [
|
|
|
703
720
|
{ method: "GET", path: "/agent/memory", access: "allow", src: "routes/memory.ts", why: "read memory" },
|
|
704
721
|
{ method: "POST", path: "/agent/memory", access: "deny-remote", src: "routes/memory.ts", why: "memory write" },
|
|
705
722
|
{ method: "POST", path: "/agent/sync", access: "deny-remote", src: "routes/memory.ts", why: "memory sync (design appendix C)" },
|
|
723
|
+
{ method: "GET", path: "/agent/sync/default", access: "allow", src: "routes/memory.ts", why: "account-level agent sync switch (read)" },
|
|
724
|
+
{ method: "PUT", path: "/agent/sync/default", access: "deny-remote", src: "routes/memory.ts", why: "account-level agent sync switch: only this computer decides what it uploads" },
|
|
706
725
|
{ method: "GET", path: "/agent/sync/status", access: "allow", src: "routes/memory.ts", why: "memory sync status" },
|
|
707
726
|
{ method: "DELETE", path: "/agent/agents/:slug/memory/dream", access: "deny-remote", src: "routes/memoryMaintenance.ts", why: "memory maintenance control" },
|
|
708
727
|
{ method: "GET", path: "/agent/agents/:slug/memory/dream", access: "allow", src: "routes/memoryMaintenance.ts", why: "read memory maintenance state" },
|
|
@@ -724,8 +743,11 @@ var ENGINE_ROUTES = [
|
|
|
724
743
|
{ method: "POST", path: "/agent/plugins/install", access: "deny-remote", src: "routes/plugins.ts", why: "installs code (design appendix C)" },
|
|
725
744
|
{ method: "POST", path: "/agent/plugins/rescan", access: "deny-remote", src: "routes/plugins.ts", why: "engine plugins are local-only" },
|
|
726
745
|
{ method: "POST", path: "/agent/reply-segments", access: "allow", src: "routes/plugins.ts", why: "chat bubble segmentation helper (read-only)" },
|
|
746
|
+
{ method: "GET", path: "/agent/git-accounts", access: "deny-remote", src: "routes/projectContext.ts", why: "host-only: the device owner's Git accounts and commit identity (Settings \u2192 Git is desktop-only)" },
|
|
727
747
|
{ method: "GET", path: "/agent/git-settings", access: "allow", src: "routes/projectContext.ts", why: "read Settings \u2192 Git" },
|
|
728
748
|
{ method: "PUT", path: "/agent/git-settings", access: "deny-remote", src: "routes/projectContext.ts", why: "engine config.json write" },
|
|
749
|
+
{ method: "POST", path: "/agent/git/clone", access: "deny-remote", src: "routes/projectContext.ts", why: "clones a repository onto the host disk with the signed-in account credentials" },
|
|
750
|
+
{ method: "GET", path: "/agent/git/repos", access: "deny-remote", src: "routes/projectContext.ts", why: "host-only: lists the device owner's repositories with the signed-in account credentials" },
|
|
729
751
|
{ method: "GET", path: "/agent/project-context", access: "allow", src: "routes/projectContext.ts", why: "read project context" },
|
|
730
752
|
{ method: "PUT", path: "/agent/project-context/doc", access: "deny-remote", src: "routes/projectContext.ts", why: "project instruction write (design appendix C)" },
|
|
731
753
|
{ method: "POST", path: "/agent/project-context/git/branch", access: "deny-remote", src: "routes/projectContext.ts", why: "git repository write" },
|
|
@@ -735,8 +757,11 @@ var ENGINE_ROUTES = [
|
|
|
735
757
|
{ method: "POST", path: "/agent/project-context/git/message", access: "deny-remote", src: "routes/projectContext.ts", why: "spends model quota; may run trusted repo filters" },
|
|
736
758
|
{ method: "POST", path: "/agent/project-context/git/pending", access: "deny-remote", src: "routes/projectContext.ts", why: "may run trusted repo filters (trust=true)" },
|
|
737
759
|
{ method: "POST", path: "/agent/project-context/git/publish", access: "deny-remote", src: "routes/projectContext.ts", why: "adds a remote and pushes with the signed-in account credentials" },
|
|
760
|
+
{ method: "POST", path: "/agent/project-context/git/publish-github", access: "deny-remote", src: "routes/projectContext.ts", why: "creates a GitHub repository with the linked account, adds a remote and pushes" },
|
|
738
761
|
{ method: "POST", path: "/agent/project-context/git/pull", access: "deny-remote", src: "routes/projectContext.ts", why: "git fetch + fast-forward with local credentials (runs repository hooks)" },
|
|
739
762
|
{ method: "POST", path: "/agent/project-context/git/push", access: "deny-remote", src: "routes/projectContext.ts", why: "git push with local credentials" },
|
|
763
|
+
{ method: "POST", path: "/agent/project-context/git/push-target", access: "deny-remote", src: "routes/projectContext.ts", why: "git repository config write (which remote the current branch pushes to)" },
|
|
764
|
+
{ method: "POST", path: "/agent/project-context/git/remote", access: "deny-remote", src: "routes/projectContext.ts", why: "writes the repo config and contacts the remote (may send the signed-in account credentials)" },
|
|
740
765
|
{ method: "POST", path: "/agent/project-context/git/trust", access: "deny-remote", src: "routes/projectContext.ts", why: "trusts repo-provided executable git config" },
|
|
741
766
|
{ method: "DELETE", path: "/agent/project-context/icon", access: "deny-remote", src: "routes/projectContext.ts", why: "project icon write" },
|
|
742
767
|
{ method: "GET", path: "/agent/project-context/icon", access: "allow", src: "routes/projectContext.ts", why: "project icon" },
|
|
@@ -772,10 +797,13 @@ var ENGINE_ROUTES = [
|
|
|
772
797
|
{ method: "DELETE", path: "/agent/sessions/:id", access: "deny-remote", src: "routes/sessions.ts", why: "irreversible hard delete of a local session (runs, messages, code checkpoints); remote uses archive (PATCH archived)" },
|
|
773
798
|
{ method: "PATCH", path: "/agent/sessions/:id", access: "allow", src: "routes/sessions.ts", why: "rename / archive / model / project of a session (a remote project_path never widens /unit/host* reads: only locally confirmed project roots count)" },
|
|
774
799
|
{ method: "POST", path: "/agent/sessions/:id/aside", access: "allow", src: "routes/sessions.ts", why: "btw aside (taint propagates, C5)" },
|
|
800
|
+
{ method: "GET", path: "/agent/sessions/:id/asides", access: "allow", src: "routes/sessions.ts", why: "saved btw asides of a session (read)" },
|
|
801
|
+
{ method: "DELETE", path: "/agent/sessions/:id/asides/:asideId", access: "deny-remote", src: "routes/sessions.ts", why: "irreversible delete of a saved btw aside; local only like session hard delete" },
|
|
775
802
|
{ method: "GET", path: "/agent/sessions/:id/background", access: "allow", src: "routes/sessions.ts", why: "background child sessions" },
|
|
776
803
|
{ method: "POST", path: "/agent/sessions/:id/branch", access: "allow", src: "routes/sessions.ts", why: "branch a session (remote taint propagates, C5)" },
|
|
777
804
|
{ method: "GET", path: "/agent/sessions/:id/checkpoints", access: "allow", src: "routes/sessions.ts", why: "list code checkpoints" },
|
|
778
805
|
{ method: "POST", path: "/agent/sessions/:id/checkpoints/restore", access: "deny-remote", src: "routes/sessions.ts", why: "restores host files from checkpoints (design appendix C)" },
|
|
806
|
+
{ method: "POST", path: "/agent/sessions/:id/children", access: "allow", src: "routes/sessions.ts", why: "task card starts a visible child session; remote taint is copied onto its first run and stored marker (C5)" },
|
|
779
807
|
{ method: "POST", path: "/agent/sessions/:id/compact", access: "allow", src: "routes/sessions.ts", why: "compact a session" },
|
|
780
808
|
{ method: "GET", path: "/agent/sessions/:id/config", access: "allow", src: "routes/sessions.ts", why: "read session config" },
|
|
781
809
|
{ method: "PATCH", path: "/agent/sessions/:id/config", access: "allow", src: "routes/sessions.ts", why: "session config patch (field subset + approval ceiling enforced engine-side, P0 \u2463 / C3)" },
|
|
@@ -783,11 +811,13 @@ var ENGINE_ROUTES = [
|
|
|
783
811
|
{ method: "GET", path: "/agent/sessions/:id/detail", access: "allow", src: "routes/sessions.ts", why: "session detail" },
|
|
784
812
|
{ method: "GET", path: "/agent/sessions/:id/messages", access: "allow", src: "routes/sessions.ts", why: "session messages" },
|
|
785
813
|
{ method: "POST", path: "/agent/sessions/:id/messages/delete", access: "deny-remote", src: "routes/sessions.ts", why: "irreversible deletion of local conversation history" },
|
|
814
|
+
{ method: "POST", path: "/agent/sessions/:id/read", access: "allow", src: "routes/sessions.ts", why: "mark a session read (only moves last_read_at)" },
|
|
786
815
|
{ method: "GET", path: "/agent/sessions/:id/status", access: "allow", src: "routes/sessions.ts", why: "live run status (context / tokens / steps)" },
|
|
787
816
|
{ method: "POST", path: "/agent/sessions/:id/suggest", access: "allow", src: "routes/sessions.ts", why: "next-message suggestion for the input box (reads a one-shot in-memory snapshot of the run that just ended; writes nothing)" },
|
|
788
817
|
{ method: "POST", path: "/agent/sessions/:id/team-members/:slug", access: "allow", src: "routes/sessions.ts", why: "open a team member child session (taint propagates, C5)" },
|
|
789
818
|
{ method: "GET", path: "/agent/sessions/:id/timeline", access: "allow", src: "routes/sessions.ts", why: "session timeline" },
|
|
790
819
|
{ method: "GET", path: "/agent/sessions/:id/usage", access: "allow", src: "routes/sessions.ts", why: "session usage" },
|
|
820
|
+
{ method: "GET", path: "/agent/sessions/attention", access: "allow", src: "routes/sessions.ts", why: "per-session unread / waiting flags for row status and the Tangu badge (ids and booleans only)" },
|
|
791
821
|
{ method: "GET", path: "/agent/sessions/search", access: "allow", src: "routes/sessions.ts", why: "session search" },
|
|
792
822
|
{ method: "POST", path: "/agent/solo/:kind/:id/open", access: "allow", src: "routes/solo.ts", why: "open the Agent direct-chat session" },
|
|
793
823
|
{ method: "POST", path: "/agent/solo/:kind/:id/rotate", access: "allow", src: "routes/solo.ts", why: "start a fresh Agent direct-chat session" },
|
|
@@ -1080,6 +1110,7 @@ var VAULT_RPC_LOCAL_ONLY = /* @__PURE__ */ new Set([IPC.emptyTrash, IPC.deleteTr
|
|
|
1080
1110
|
var UNIT_INTERNAL_HEADER = "x-unit-internal";
|
|
1081
1111
|
var UNIT_P2P_HEADER = "x-unit-p2p";
|
|
1082
1112
|
var LOCAL_ONLY_BODY = { code: "LOCAL_ONLY", detail: "This action is only available on the device itself" };
|
|
1113
|
+
var HOST_OFF_BODY = { code: "HOST_OFF", detail: "Device connection is turned off on this computer" };
|
|
1083
1114
|
var BAD_CALLER_BODY = { code: "BAD_CALLER_ASSERTION", detail: "Invalid caller assertion" };
|
|
1084
1115
|
var ENGINE_PATH_CHARS = /^(?:[A-Za-z0-9\-._~!$&'()*+,;=:@/]|%[0-9A-Fa-f]{2})*$/;
|
|
1085
1116
|
var ENGINE_QUERY_CHARS = /^[\x21-\x7e]*$/;
|
|
@@ -1118,6 +1149,8 @@ function engineRouteAccess(method, normPath) {
|
|
|
1118
1149
|
}
|
|
1119
1150
|
var decodeRpcArgs = (args2) => args2.map((a) => a && typeof a === "object" && typeof a.__u8 === "string" ? Buffer.from(a.__u8, "base64") : a);
|
|
1120
1151
|
var encodeRpcResult = (r) => r instanceof Uint8Array ? { __u8: Buffer.from(r).toString("base64") } : r;
|
|
1152
|
+
var newPairStore = () => ({ pending: /* @__PURE__ */ new Map(), byIp: /* @__PURE__ */ new Map() });
|
|
1153
|
+
var DOORBELL_PATHS = /* @__PURE__ */ new Set(["/unit/meta", "/unit/pair/request", "/unit/pair/poll", "/unit/browser-control"]);
|
|
1121
1154
|
var sha256 = (s) => createHash("sha256").update(s).digest("hex");
|
|
1122
1155
|
var PAIR_TTL_MS = 2 * 6e4;
|
|
1123
1156
|
var MIME = {
|
|
@@ -1193,8 +1226,7 @@ function startUnitWeb(deps, opts) {
|
|
|
1193
1226
|
const proxyCallerKey = randomBytes(32).toString("hex");
|
|
1194
1227
|
const seenCallerDispatch = /* @__PURE__ */ new Map();
|
|
1195
1228
|
const ownerProjection = deps.projection?.mode === "local";
|
|
1196
|
-
const pending
|
|
1197
|
-
const pendingByIp = /* @__PURE__ */ new Map();
|
|
1229
|
+
const { pending, byIp: pendingByIp } = opts.pairs ?? newPairStore();
|
|
1198
1230
|
const assetTokens = /* @__PURE__ */ new Map();
|
|
1199
1231
|
const ASSET_TTL_MS = 10 * 6e4;
|
|
1200
1232
|
const gc = () => {
|
|
@@ -1424,6 +1456,10 @@ function startUnitWeb(deps, opts) {
|
|
|
1424
1456
|
}
|
|
1425
1457
|
};
|
|
1426
1458
|
const handler = async (req, res) => {
|
|
1459
|
+
if (opts.doorbell && !DOORBELL_PATHS.has(plainPath(req))) {
|
|
1460
|
+
json2(res, 503, HOST_OFF_BODY);
|
|
1461
|
+
return;
|
|
1462
|
+
}
|
|
1427
1463
|
if (!ownerProjection && lockedNow()) {
|
|
1428
1464
|
const p = plainPath(req);
|
|
1429
1465
|
if (!(p === "/engine" || p.startsWith("/engine/")) && p !== "/vault/rpc" && !lockedRequestAllowed(req.method || "GET", p)) {
|
|
@@ -1489,6 +1525,10 @@ function startUnitWeb(deps, opts) {
|
|
|
1489
1525
|
return;
|
|
1490
1526
|
}
|
|
1491
1527
|
if (path === "/unit/pair/request" && req.method === "POST") {
|
|
1528
|
+
if (opts.doorbell && !opts.doorbell.origins.includes(String(req.headers.origin || ""))) {
|
|
1529
|
+
json2(res, 403, HOST_OFF_BODY);
|
|
1530
|
+
return;
|
|
1531
|
+
}
|
|
1492
1532
|
const prevId = pendingByIp.get(ip);
|
|
1493
1533
|
if (prevId && pending.get(prevId)?.status === "pending") {
|
|
1494
1534
|
json2(res, 429, { detail: "\u5DF2\u6709\u5F85\u786E\u8BA4\u7684\u914D\u5BF9\u8BF7\u6C42", code: "PAIR_PENDING" });
|
|
@@ -1510,7 +1550,7 @@ function startUnitWeb(deps, opts) {
|
|
|
1510
1550
|
pending.set(p.id, p);
|
|
1511
1551
|
pendingByIp.set(ip, p.id);
|
|
1512
1552
|
json2(res, 200, { requestId: p.id, code: p.code, ttlMs: PAIR_TTL_MS });
|
|
1513
|
-
void deps.confirmPair({ name: p.name, code: p.code, ip }).then(async (ok) => {
|
|
1553
|
+
void deps.confirmPair({ name: p.name, code: p.code, ip, expires: p.expires }).then(async (ok) => {
|
|
1514
1554
|
const live = pending.get(p.id);
|
|
1515
1555
|
if (!live || live.status !== "pending" || live.expires < Date.now()) return;
|
|
1516
1556
|
if (!ok) {
|
|
@@ -1542,6 +1582,24 @@ function startUnitWeb(deps, opts) {
|
|
|
1542
1582
|
json2(res, 200, { status: p.status });
|
|
1543
1583
|
return;
|
|
1544
1584
|
}
|
|
1585
|
+
if (path === "/unit/browser-control" && req.method === "GET") {
|
|
1586
|
+
const info = authInfo(req);
|
|
1587
|
+
if (!info.ok) {
|
|
1588
|
+
json2(res, 401, { detail: "Not paired", code: "UNPAIRED" });
|
|
1589
|
+
return;
|
|
1590
|
+
}
|
|
1591
|
+
if (info.via !== "lan" || !isLoopback(req.socket.remoteAddress)) {
|
|
1592
|
+
json2(res, 403, LOCAL_ONLY_BODY);
|
|
1593
|
+
return;
|
|
1594
|
+
}
|
|
1595
|
+
const code = deps.browserControlCode ? await deps.browserControlCode() : null;
|
|
1596
|
+
if (!code) {
|
|
1597
|
+
json2(res, 404, { detail: "Browser control is not available on this computer", code: "BROWSER_CONTROL_UNAVAILABLE" });
|
|
1598
|
+
return;
|
|
1599
|
+
}
|
|
1600
|
+
json2(res, 200, { code });
|
|
1601
|
+
return;
|
|
1602
|
+
}
|
|
1545
1603
|
if (path === "/unit/whoami" && req.method === "GET") {
|
|
1546
1604
|
if (!authed(req)) {
|
|
1547
1605
|
json2(res, 401, { detail: "\u672A\u914D\u5BF9", code: "UNPAIRED" });
|
|
@@ -1851,7 +1909,7 @@ function startUnitWeb(deps, opts) {
|
|
|
1851
1909
|
});
|
|
1852
1910
|
server.requestTimeout = 60 * 60 * 1e3;
|
|
1853
1911
|
return new Promise((resolve8, reject) => {
|
|
1854
|
-
if (deps.routeUpgrade) server.on("upgrade", (req, socket, head) => {
|
|
1912
|
+
if (deps.routeUpgrade && !opts.doorbell) server.on("upgrade", (req, socket, head) => {
|
|
1855
1913
|
if (!deps.routeUpgrade(req, socket, head)) socket.destroy();
|
|
1856
1914
|
});
|
|
1857
1915
|
const sockets = /* @__PURE__ */ new Set();
|
|
@@ -1860,7 +1918,7 @@ function startUnitWeb(deps, opts) {
|
|
|
1860
1918
|
socket.once("close", () => sockets.delete(socket));
|
|
1861
1919
|
});
|
|
1862
1920
|
server.once("error", reject);
|
|
1863
|
-
server.listen(opts.port, opts.bindHost ?? "0.0.0.0", () => {
|
|
1921
|
+
server.listen(opts.port, opts.doorbell ? "127.0.0.1" : opts.bindHost ?? "0.0.0.0", () => {
|
|
1864
1922
|
const { port } = server.address();
|
|
1865
1923
|
resolve8({
|
|
1866
1924
|
port,
|
|
@@ -2975,6 +3033,7 @@ async function startBasicUnit(config, managementOptions = {}) {
|
|
|
2975
3033
|
product.agentBackend = product.nativeFeatures.includes("tangu");
|
|
2976
3034
|
product.spaces = spaces.length ? [] : ["home"];
|
|
2977
3035
|
product.defaultSpace = spaces.includes(config.defaultSpace || "") ? config.defaultSpace : spaces[0] || "home";
|
|
3036
|
+
product.market = visible2.some((r) => !!r.package.ui?.locked);
|
|
2978
3037
|
};
|
|
2979
3038
|
let chain = Promise.resolve(), closing = false, started = false;
|
|
2980
3039
|
const syncRuntimes = async () => {
|
|
@@ -3270,7 +3329,7 @@ init_control();
|
|
|
3270
3329
|
// desktop/package.json
|
|
3271
3330
|
var package_default = {
|
|
3272
3331
|
name: "forsion-desktop",
|
|
3273
|
-
version: "2.13.
|
|
3332
|
+
version: "2.13.5",
|
|
3274
3333
|
description: "Forsion Desktop \u2014 AI \u9A71\u52A8\u7684\u5E94\u7528\u751F\u6001\u7CFB\u7EDF\u7684\u684C\u9762\u7AEF(Electron):Tangu Agent \u5F15\u64CE + LCL \u53EF\u505C\u9760\u5DE5\u4F5C\u533A\u6846\u67B6 + \u53EF\u63D2\u62D4\u529F\u80FD\u7A7A\u95F4(\u5BF9\u8BDD/\u7B14\u8BB0/\u65E5\u5386/\u6536\u4EF6\u7BB1/\u7F16\u7801),\u6309\u4EA7\u54C1\u6863\u6848\u88C1\u51FA\u5168\u5BB6\u6876\u4E0E\u5355\u54C1\u53D1\u884C\u7248",
|
|
3275
3334
|
author: "Forsion",
|
|
3276
3335
|
private: true,
|
|
@@ -3278,12 +3337,15 @@ var package_default = {
|
|
|
3278
3337
|
main: "out/main/main.js",
|
|
3279
3338
|
scripts: {
|
|
3280
3339
|
postinstall: "node build/link-lcl.cjs && node build/copy-excalidraw-assets.cjs && node build/gen-fonts.cjs && node build/fix-pty-helper.cjs",
|
|
3281
|
-
predev: "node scripts/dev-version.check.cjs",
|
|
3340
|
+
predev: "node scripts/dev-version.check.cjs && node build/copy-excalidraw-assets.cjs",
|
|
3282
3341
|
dev: "electron-vite dev --noSandbox",
|
|
3342
|
+
"check:marketplace-upgrade": "node scripts/marketplace-upgrade.e2e.cjs",
|
|
3283
3343
|
"check:visualize": "node scripts/visualize.check.cjs",
|
|
3284
3344
|
"check:intelligent-ui": "node scripts/intelligent-ui.e2e.cjs",
|
|
3285
3345
|
"e2e:intelligent-live": "cd ../tangu-agent && node scripts/live-harness.mjs --only intelligentusers --model codex/gpt-6-luna --timeout 1800000",
|
|
3286
3346
|
"demo:intelligent-ui": "node scripts/intelligent-ui.e2e.cjs --preview",
|
|
3347
|
+
"replay:intelligent-ui": "node scripts/intelligent-ui-replay.cjs",
|
|
3348
|
+
"check:intelligent-ui-setting": "node scripts/intelligent-ui-setting.check.cjs",
|
|
3287
3349
|
"demo:sketch": "node scripts/sketch-demo.record.cjs",
|
|
3288
3350
|
"check:version": "node scripts/dev-version.check.cjs",
|
|
3289
3351
|
build: "electron-vite build",
|
|
@@ -3301,6 +3363,7 @@ var package_default = {
|
|
|
3301
3363
|
"e2e:dnd": "node scripts/block-dnd.e2e.cjs",
|
|
3302
3364
|
"e2e:sidebardrop": "node scripts/sidebar-drop.e2e.cjs",
|
|
3303
3365
|
"e2e:notemove": "node scripts/note-move-assets.e2e.cjs",
|
|
3366
|
+
"e2e:filelink": "node scripts/file-wikilink.e2e.cjs",
|
|
3304
3367
|
"e2e:ribbon": "node scripts/ribbon-dnd.e2e.cjs",
|
|
3305
3368
|
"e2e:spacewindow": "node scripts/space-window.e2e.cjs",
|
|
3306
3369
|
"e2e:spacewindow-input": "node scripts/space-window-input.e2e.cjs",
|
|
@@ -3313,10 +3376,17 @@ var package_default = {
|
|
|
3313
3376
|
"check:listsrc": "node scripts/plugin-listsrc.check.cjs",
|
|
3314
3377
|
"e2e:latex": "node scripts/e2e-editor.cjs --script=latex-suite.e2e.cjs",
|
|
3315
3378
|
"e2e:activewindow": "node scripts/active-window.e2e.cjs",
|
|
3379
|
+
"check:plugindata": "node scripts/plugin-data.e2e.cjs",
|
|
3316
3380
|
"e2e:recall": "node scripts/recall-rewind.e2e.cjs",
|
|
3317
3381
|
"e2e:chatevents": "node scripts/chat-events.e2e.cjs",
|
|
3382
|
+
"e2e:nested": "node scripts/nested-sessions.e2e.cjs",
|
|
3383
|
+
"e2e:anchors": "node scripts/branch-anchors.e2e.cjs",
|
|
3384
|
+
"e2e:chatcanvas": "node scripts/chat-canvas.e2e.cjs",
|
|
3385
|
+
"e2e:musedm": "node scripts/muse-dm.e2e.cjs",
|
|
3318
3386
|
"e2e:computerhistory": "node scripts/computer-history.e2e.cjs",
|
|
3319
3387
|
"e2e:appdock": "node scripts/app-dock.e2e.cjs",
|
|
3388
|
+
"e2e:apprefs": "node scripts/app-refs.e2e.cjs",
|
|
3389
|
+
"check:apprefs-real": "APPREF_REAL=1 vitest run electron/appRefs.real.test.ts",
|
|
3320
3390
|
"e2e:remotesafety": "node scripts/remote-safety.e2e.cjs",
|
|
3321
3391
|
"e2e:chatshimmer": "node scripts/chat-shimmer.e2e.cjs",
|
|
3322
3392
|
"e2e:runstats": "node scripts/chat-runstats.e2e.cjs",
|
|
@@ -3325,6 +3395,11 @@ var package_default = {
|
|
|
3325
3395
|
"e2e:livewait": "node scripts/chat-livewait.e2e.cjs",
|
|
3326
3396
|
"e2e:queue": "node scripts/queued-commands.e2e.cjs",
|
|
3327
3397
|
"e2e:composerdraft": "node scripts/composer-draft.e2e.cjs",
|
|
3398
|
+
"e2e:projectbar": "node scripts/newchat-projectbar.e2e.cjs",
|
|
3399
|
+
"e2e:runlocation": "node scripts/run-location.e2e.cjs",
|
|
3400
|
+
"check:runlocpill": "node scripts/e2e-editor.cjs --check=run-location-pill",
|
|
3401
|
+
"e2e:chatlanding": "node scripts/amadeus-chat-landing.e2e.cjs",
|
|
3402
|
+
"e2e:websearch": "node scripts/websearch-settings.e2e.cjs",
|
|
3328
3403
|
"e2e:musespace": "node scripts/muse-space.e2e.cjs",
|
|
3329
3404
|
"e2e:coreplugins": "node scripts/core-plugins.e2e.cjs",
|
|
3330
3405
|
"e2e:restart-update": "node scripts/restart-update.e2e.cjs",
|
|
@@ -3332,9 +3407,13 @@ var package_default = {
|
|
|
3332
3407
|
"e2e:storepages": "node scripts/store-pages.e2e.cjs",
|
|
3333
3408
|
"e2e:market-auto-update": "node scripts/market-auto-update.e2e.cjs",
|
|
3334
3409
|
"e2e:market-open-settings": "node scripts/market-open-settings.e2e.cjs",
|
|
3410
|
+
"e2e:cloud-settings": "node scripts/cloud-settings-groups.e2e.cjs",
|
|
3335
3411
|
"e2e:account": "node scripts/account-center.shot.cjs",
|
|
3336
3412
|
"e2e:accountpopups": "node scripts/account-popups.shot.cjs",
|
|
3337
3413
|
"e2e:extend": "node scripts/extend-seam.e2e.cjs",
|
|
3414
|
+
"e2e:guide": "node scripts/guide-space.e2e.cjs",
|
|
3415
|
+
"check:guide-anchors": "node scripts/guide-space.e2e.cjs --anchors",
|
|
3416
|
+
"e2e:penzor": "node scripts/penzor-space.e2e.cjs",
|
|
3338
3417
|
"e2e:musesettings": "node scripts/muse-settings.e2e.cjs",
|
|
3339
3418
|
"e2e:modelcatalog": "node scripts/model-catalog.e2e.cjs",
|
|
3340
3419
|
"e2e:museagentspace": "node scripts/muse-agentspace.e2e.cjs",
|
|
@@ -3351,8 +3430,12 @@ var package_default = {
|
|
|
3351
3430
|
"check:feedback": "node scripts/feedback.check.cjs",
|
|
3352
3431
|
"check:floatingsession": "node scripts/floating-session.check.cjs",
|
|
3353
3432
|
"check:btw": "node scripts/btw.check.cjs",
|
|
3433
|
+
"check:selectionbar": "node scripts/selection-bar.check.cjs",
|
|
3354
3434
|
"check:promptsuggest": "node scripts/prompt-suggest.check.cjs",
|
|
3355
3435
|
"check:chatlayout": "node scripts/chat-layout.check.cjs",
|
|
3436
|
+
"check:chatscrollhold": "node scripts/chat-scroll-hold.check.cjs",
|
|
3437
|
+
"check:chatcanvasjump": "node scripts/chat-canvas-jump.check.cjs",
|
|
3438
|
+
"check:sendflight": "node scripts/send-flight.check.cjs",
|
|
3356
3439
|
"check:sessionemoji": "node scripts/session-emoji.check.cjs",
|
|
3357
3440
|
"check:messageactions": "node scripts/chat-message-actions.check.cjs",
|
|
3358
3441
|
"check:approval": "node scripts/approval-menu.check.cjs",
|
|
@@ -3360,12 +3443,16 @@ var package_default = {
|
|
|
3360
3443
|
"check:caret": "node scripts/smooth-caret.check.cjs",
|
|
3361
3444
|
"check:spacerestore": "node scripts/space-restore.check.cjs",
|
|
3362
3445
|
"check:spacerestart": "node scripts/space-restart.check.cjs",
|
|
3446
|
+
"check:spacemainpage": "node scripts/space-main-page.check.cjs",
|
|
3447
|
+
"check:rightrules": "node scripts/right-rules.check.cjs",
|
|
3448
|
+
"check:sidetoggle": "node scripts/side-toggle-drift.check.cjs",
|
|
3363
3449
|
"check:spacefallback": "node scripts/space-fallback-persist.check.cjs",
|
|
3364
3450
|
"check:bluebirdspace": "node scripts/bluebird-space.check.cjs",
|
|
3365
3451
|
"check:bluebirdtimestamps": "node scripts/bluebird-space.check.cjs --timestamps",
|
|
3366
3452
|
"check:splitregions": "node scripts/split-regions.check.cjs",
|
|
3367
3453
|
"check:br": "node scripts/e2e-editor.cjs --check=blank-line-br",
|
|
3368
3454
|
"check:computerhistory": "node scripts/e2e-editor.cjs --check=computer-history-settings",
|
|
3455
|
+
"check:onboardinghistory": "node scripts/onboarding-history.check.cjs",
|
|
3369
3456
|
"check:browserext": "node scripts/e2e-editor.cjs --check=browserext-settings",
|
|
3370
3457
|
"check:attention": "node scripts/e2e-editor.cjs --check=attention-save",
|
|
3371
3458
|
"check:rtcorpus": "node scripts/e2e-editor.cjs --check=rtcorpus",
|
|
@@ -3387,10 +3474,12 @@ var package_default = {
|
|
|
3387
3474
|
"check:editorai": "node scripts/e2e-editor.cjs --check=editor-ai",
|
|
3388
3475
|
"check:menus": "node scripts/e2e-editor.cjs --check=editor-menus",
|
|
3389
3476
|
"check:cloudgap": "node scripts/cloud-gap.check.cjs",
|
|
3477
|
+
"check:cloudvaults": "node scripts/cloud-vault-sections.check.cjs",
|
|
3390
3478
|
"check:amadeusinteractions": "node scripts/e2e-editor.cjs --check=amadeus-interactions",
|
|
3391
3479
|
"check:dashboard": "node scripts/e2e-editor.cjs --check=dashboard",
|
|
3392
3480
|
"check:embedinputs": "node scripts/e2e-editor.cjs --check=embed-inputs",
|
|
3393
3481
|
"check:embedkeep": "node scripts/e2e-editor.cjs --check=embed-keep",
|
|
3482
|
+
"check:embedsource": "node scripts/e2e-editor.cjs --check=embed-source",
|
|
3394
3483
|
"check:outlinereveal": "node scripts/e2e-editor.cjs --check=outline-reveal",
|
|
3395
3484
|
"check:coverrepo": "node scripts/e2e-editor.cjs --check=cover-reposition",
|
|
3396
3485
|
"check:pagestyle": "node scripts/e2e-editor.cjs --check=page-style",
|
|
@@ -3425,6 +3514,7 @@ var package_default = {
|
|
|
3425
3514
|
"e2e:pdfcite": "node scripts/pdf-citation.e2e.cjs",
|
|
3426
3515
|
"check:hlband": "node scripts/pdf-highlight-geometry.check.cjs",
|
|
3427
3516
|
"e2e:filecite": "node scripts/file-citation.e2e.cjs",
|
|
3517
|
+
"e2e:openfile": "node scripts/open-external-file.e2e.cjs",
|
|
3428
3518
|
"e2e:pathgonefiles": "node scripts/vault-pathgone-files.e2e.cjs",
|
|
3429
3519
|
"e2e:ftoverride": "node scripts/filetype-override.e2e.cjs",
|
|
3430
3520
|
"e2e:pathgoneunmounted": "node scripts/vault-pathgone-unmounted.e2e.cjs",
|
|
@@ -3444,21 +3534,34 @@ var package_default = {
|
|
|
3444
3534
|
"check:modelmenu": "node scripts/model-menu.check.cjs",
|
|
3445
3535
|
"check:menutap": "node scripts/menu-tap.check.cjs",
|
|
3446
3536
|
"check:settingsui": "node scripts/settings-ui.check.cjs",
|
|
3537
|
+
"check:settingsparts": "node scripts/settings-parts.shot.cjs",
|
|
3447
3538
|
"check:agentmemory": "node scripts/agent-memory.check.cjs",
|
|
3448
3539
|
"check:settingsmode": "node scripts/settings-mode.check.cjs",
|
|
3449
3540
|
"check:themecontrast": "node scripts/theme-contrast.check.cjs",
|
|
3450
3541
|
"check:themevisual": "node scripts/theme-visual.check.cjs",
|
|
3451
3542
|
"check:spaceappearance": "node scripts/space-appearance.e2e.cjs",
|
|
3452
3543
|
"check:fps": "node scripts/check-fps.cjs",
|
|
3544
|
+
"probe:longcontent": "node scripts/long-content.probe.cjs",
|
|
3453
3545
|
"check:themeapp": "node scripts/theme-app.check.cjs",
|
|
3454
3546
|
"check:marketui": "node scripts/market-ui.check.cjs",
|
|
3455
3547
|
"probe:marketdl": "node scripts/market-download.probe.cjs",
|
|
3456
3548
|
"check:uiscale": "node scripts/ui-scale.check.cjs",
|
|
3549
|
+
"check:attachfold": "node scripts/chat-attach-fold.check.cjs",
|
|
3550
|
+
"check:imageviewer": "node scripts/chat-image-viewer.check.cjs",
|
|
3551
|
+
"check:shortcuts": "node scripts/shortcut-conflicts.check.cjs",
|
|
3552
|
+
"e2e:cusettings": "node scripts/computer-use-settings.e2e.cjs",
|
|
3457
3553
|
"check:uifont": "node scripts/ui-font.check.cjs",
|
|
3458
3554
|
"check:topchrome": "node scripts/top-chrome.check.cjs",
|
|
3459
3555
|
"check:minicard": "node scripts/mini-card.check.cjs",
|
|
3556
|
+
"check:minidock": "node scripts/mini-dock.e2e.cjs",
|
|
3460
3557
|
"check:floatingpanel": "node scripts/floating-panel.check.cjs",
|
|
3461
3558
|
"check:quietfocus": "node scripts/quiet-focus.check.cjs",
|
|
3559
|
+
"check:windows-background": "node scripts/background-desktop.check.cjs",
|
|
3560
|
+
"check:windows-icons": "node scripts/windows-icons.check.cjs",
|
|
3561
|
+
"check:windows-updater": "node scripts/windows-updater.check.cjs",
|
|
3562
|
+
"check:windows-apprefs": "node scripts/windows-apprefs.check.cjs",
|
|
3563
|
+
"e2e:windows-clip": "node scripts/windows-clip.e2e.cjs",
|
|
3564
|
+
"e2e:windows-legacy": "node scripts/windows-legacy-state.e2e.cjs",
|
|
3462
3565
|
"check:persistignore": "node scripts/persist-ignore.check.cjs",
|
|
3463
3566
|
"check:spaceicon": "node scripts/space-icon.check.cjs",
|
|
3464
3567
|
"check:spacehidden": "node scripts/plugin-space-hidden.check.cjs",
|
|
@@ -3466,11 +3569,16 @@ var package_default = {
|
|
|
3466
3569
|
"check:plugindeps": "node scripts/plugin-deps.check.cjs",
|
|
3467
3570
|
"check:pluginsync": "node scripts/plugin-install-sync.check.cjs",
|
|
3468
3571
|
"check:first-run": "node scripts/onboarding.check.cjs",
|
|
3572
|
+
"stage:calendar": "node scripts/calendar.stage.cjs",
|
|
3573
|
+
"stage:first-run": "node scripts/onboarding.stage.cjs",
|
|
3469
3574
|
"check:miniauto": "node scripts/mini-auto.check.cjs",
|
|
3470
3575
|
"check:board": "node scripts/board-paper.check.cjs",
|
|
3471
3576
|
"check:boardlive": "node scripts/e2e-editor.cjs --check=board-live",
|
|
3577
|
+
"check:boardpen": "node scripts/e2e-editor.cjs --check=board-pen",
|
|
3578
|
+
"check:boardview": "node scripts/board-view.electron.cjs",
|
|
3472
3579
|
"check:scrollbar": "node scripts/scrollbar-overlay.check.cjs",
|
|
3473
3580
|
"check:callout": "node scripts/callout-fold.check.cjs",
|
|
3581
|
+
"check:typejitter": "node scripts/type-jitter.probe.cjs",
|
|
3474
3582
|
"check:toggle": "node scripts/e2e-editor.cjs --check=toggle-block",
|
|
3475
3583
|
"check:togglecaret": "node scripts/e2e-editor.cjs --check=toggle-caret",
|
|
3476
3584
|
"check:togglecontent": "node scripts/e2e-editor.cjs --check=toggle-content",
|
|
@@ -3499,6 +3607,7 @@ var package_default = {
|
|
|
3499
3607
|
"check:bottomiframe": "node scripts/bottom-toggle-iframe.electron.cjs",
|
|
3500
3608
|
"shot:bottompanel": "node scripts/bottom-panel.check.cjs --shot",
|
|
3501
3609
|
"check:remount": "node scripts/main-remount.check.cjs",
|
|
3610
|
+
"check:spacepeek": "node scripts/space-peek.check.cjs",
|
|
3502
3611
|
"check:nav": "node scripts/nav-history.check.cjs",
|
|
3503
3612
|
"check:builtins": "node scripts/builtins.check.cjs",
|
|
3504
3613
|
"check:runblock": "node scripts/runblock.check.cjs",
|
|
@@ -3510,12 +3619,18 @@ var package_default = {
|
|
|
3510
3619
|
"probe:startup-windows": "node scripts/startup-windows.probe.cjs",
|
|
3511
3620
|
"probe:startup-trace": "node scripts/startup-trace.probe.cjs",
|
|
3512
3621
|
"check:parity": "node scripts/platform-parity.check.cjs",
|
|
3622
|
+
"check:terms": "node scripts/terms-update.check.cjs",
|
|
3623
|
+
"check:tanguboundary": "node scripts/tangu-boundary.check.cjs --selftest && node scripts/tangu-boundary.check.cjs",
|
|
3624
|
+
"check:achcloud": "node scripts/achievements-cloud.check.cjs",
|
|
3625
|
+
"e2e:spaceswitch": "node scripts/space-switch.electron.cjs",
|
|
3513
3626
|
"check:vitecache": "node scripts/vite-cachedir.check.cjs",
|
|
3514
3627
|
"check:enginetarget": "node scripts/engine-target.check.cjs",
|
|
3515
3628
|
"check:remotechain": "node scripts/remote-chain.e2e.cjs",
|
|
3516
3629
|
"check:streamrenew": "node scripts/stream-renew.check.cjs",
|
|
3517
3630
|
"check:phonedist": "node scripts/lib/phone-dist-stamp.selftest.cjs",
|
|
3518
3631
|
"check:unitswitcher": "node scripts/unit-switcher.check.cjs",
|
|
3632
|
+
"e2e:unitsettings": "node scripts/unit-settings.e2e.cjs",
|
|
3633
|
+
"e2e:unitpublic": "npx tsx scripts/unit-public-extend.e2e.ts",
|
|
3519
3634
|
"check:secrets": "node scripts/device-secrets.e2e.cjs",
|
|
3520
3635
|
"gen:engineroutes": "node scripts/gen-engine-routes.mjs",
|
|
3521
3636
|
"test:ics-tz": 'for tz in Europe/London America/New_York Asia/Shanghai Australia/Lord_Howe UTC; do echo "== $tz"; TZ=$tz vitest run frontend/src/views/calendar/ics.test.ts || exit 1; done',
|
|
@@ -3543,11 +3658,13 @@ var package_default = {
|
|
|
3543
3658
|
"fix:zhpunct": "node scripts/zh-punct.codemod.cjs",
|
|
3544
3659
|
"shot:walk": "node scripts/uiux-walk.shot.cjs",
|
|
3545
3660
|
"check:agentprofile": "node scripts/agent-profile.check.cjs",
|
|
3661
|
+
"check:humanprofile": "node scripts/human-profile.check.cjs",
|
|
3546
3662
|
"check:projectdetails": "node scripts/project-details.check.cjs",
|
|
3547
3663
|
"check:creationcard": "node scripts/creation-card.check.cjs",
|
|
3548
3664
|
"check:teamoutputs": "node scripts/team-outputs.check.cjs",
|
|
3549
3665
|
"check:teamprofile": "node scripts/team-profile.check.cjs",
|
|
3550
3666
|
"check:teamdesk": "node scripts/team-desk.check.cjs",
|
|
3667
|
+
"check:musechat": "node scripts/muse-chat-desk.check.cjs",
|
|
3551
3668
|
"check:ultra": "node scripts/ultra-effort.check.cjs",
|
|
3552
3669
|
"check:canvas": "node scripts/e2e-editor.cjs --check=unified-canvas",
|
|
3553
3670
|
"check:tutorial": "node scripts/e2e-editor.cjs --check=tutorial-note",
|
|
@@ -3564,9 +3681,15 @@ var package_default = {
|
|
|
3564
3681
|
"check:shadowcontract": "node scripts/shadow-contract.check.cjs",
|
|
3565
3682
|
"check:shadowsurface": "node scripts/shadow-surface.check.cjs",
|
|
3566
3683
|
"check:calendarui": "node scripts/calendar-ui.check.cjs",
|
|
3684
|
+
"check:calendar-actions": "node scripts/calendar-actions.check.cjs",
|
|
3567
3685
|
"check:astryxscope": "node scripts/astryx-scope.check.cjs",
|
|
3686
|
+
"check:astryxhas": "node scripts/astryx-has.check.cjs",
|
|
3687
|
+
"check:restylescope": "node scripts/restyle-scope.check.cjs",
|
|
3568
3688
|
"check:todo": "node scripts/todo-view.check.cjs",
|
|
3689
|
+
"check:homeglyph": "node scripts/home-glyph.check.cjs",
|
|
3569
3690
|
"check:chattabs": "node scripts/chat-multitab.check.cjs",
|
|
3691
|
+
"check:openbeside": "node scripts/open-beside.check.cjs",
|
|
3692
|
+
"check:linkmenu": "node scripts/e2e-editor.cjs --check=link-menu",
|
|
3570
3693
|
"check:newtab": "node scripts/newtab-open.check.cjs",
|
|
3571
3694
|
"check:newnote": "node scripts/new-note-nav.check.cjs",
|
|
3572
3695
|
"check:calendarplugin": "node scripts/builtin-calendar.check.cjs",
|
|
@@ -3580,6 +3703,7 @@ var package_default = {
|
|
|
3580
3703
|
"e2e:canvaslive": "node scripts/canvas-live.e2e.cjs",
|
|
3581
3704
|
"e2e:attachment-clipboard": "node scripts/attachment-clipboard.e2e.cjs",
|
|
3582
3705
|
"e2e:seams": "node scripts/plugin-seams.e2e.cjs",
|
|
3706
|
+
"e2e:toolcard": "node scripts/tool-result-card.e2e.cjs",
|
|
3583
3707
|
"check:imgsel": "node scripts/image-select.check.cjs",
|
|
3584
3708
|
"check:coldrag": "node scripts/e2e-editor.cjs --check=columns-realdrag",
|
|
3585
3709
|
"check:topdrag": "node scripts/e2e-editor.cjs --check=toplevel-realdrag",
|
|
@@ -3608,8 +3732,8 @@ var package_default = {
|
|
|
3608
3732
|
"@dnd-kit/sortable": "^10.0.0",
|
|
3609
3733
|
"@dnd-kit/utilities": "^3.2.2",
|
|
3610
3734
|
"@excalidraw/excalidraw": "npm:@zsviczian/excalidraw@0.18.122",
|
|
3611
|
-
"@forsion/extend": "0.
|
|
3612
|
-
"@forsion/tangu-computer-use": "0.
|
|
3735
|
+
"@forsion/extend": "0.9.1",
|
|
3736
|
+
"@forsion/tangu-computer-use": "0.7.1",
|
|
3613
3737
|
"@milkdown/kit": "^7.21.2",
|
|
3614
3738
|
"@milkdown/plugin-math": "^7.5.9",
|
|
3615
3739
|
"@milkdown/react": "^7.21.2",
|
|
@@ -3666,6 +3790,7 @@ var package_default = {
|
|
|
3666
3790
|
"@fontsource-variable/jetbrains-mono": "^5.3.0",
|
|
3667
3791
|
"@fontsource/lxgw-wenkai": "^5.3.0",
|
|
3668
3792
|
"@fontsource/noto-sans-sc": "^5.3.0",
|
|
3793
|
+
"@forsion/clip": "2.1.1",
|
|
3669
3794
|
"@iarna/toml": "^2.2.5",
|
|
3670
3795
|
"@types/node": "^20.10.0",
|
|
3671
3796
|
"@types/qrcode": "^1.5.6",
|
package/package.json
CHANGED
package/release.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"desktopVersion": "2.13.
|
|
3
|
-
"desktopTag": "v2.13.
|
|
4
|
-
"desktopCommit": "
|
|
2
|
+
"desktopVersion": "2.13.5",
|
|
3
|
+
"desktopTag": "v2.13.5",
|
|
4
|
+
"desktopCommit": "8d9bff2af3a52313021c39f430a91e9066c27214",
|
|
5
5
|
"unitRevision": 0,
|
|
6
6
|
"prerelease": false,
|
|
7
|
-
"sourceCommit": "
|
|
7
|
+
"sourceCommit": "8d9bff2af3a52313021c39f430a91e9066c27214",
|
|
8
8
|
"sourceDirty": false,
|
|
9
|
-
"builtAt": "2026-10-
|
|
9
|
+
"builtAt": "2026-10-20T22:57:03.093Z",
|
|
10
10
|
"commercialServerIncluded": false
|
|
11
11
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as D,r as d,j as t}from"./index-fDB1l4d-.js";import{p as F,f as T,A as M,aO as R,s as y,a7 as W,l as V}from"./pageStore-CyvNZEYX.js";import"./client-fKy9CWk0.js";import{rp as q,ei as U,jQ as B,rq as N,ao as H,R as O,aW as _,dm as $,rr as K,f9 as Q,u as X}from"./appStore-DDOkzWDA.js";import{u as G}from"./codeStudioStore-BgLfCDK2.js";import{C as J}from"./CapabilityMenu-DyHTEYLr.js";import{c as Y}from"./react-b7FrqRQR.js";/* empty css */import{C as Z}from"./code-xml-DCCD9eCS.js";import{P as aa}from"./pencil--sWwxHdP.js";import{A as ta}from"./arrow-up-right-BptN64d-.js";import"./ipc-SAPDwyQ4.js";import"./nativeDownload-DsGyUSJ5.js";import"./dbStore-BIG5Mfh2.js";import"./drawingStore-CGvTqqYW.js";const ia=[["path",{d:"M12 13V7",key:"h0r20n"}],["path",{d:"m15 10-3 3-3-3",key:"lzhmyn"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]],ea=F("monitor-down",ia);let p=0;const f=Y((i,l)=>({items:[],status:"loading",async load(){const m=window.tangu?.productsList;if(!m){i({status:"error"});return}const n=++p;l().status!=="ready"&&i({status:"loading"});try{const r=await m();n===p&&i({items:r,status:"ready"})}catch{n===p&&l().status!=="ready"&&i({status:"error"})}}})),v=i=>i instanceof Error?i.message:String(i);function ga(){const{t:i,locale:l}=D(),m=f(a=>a.items),n=f(a=>a.status),r=f(a=>a.load),[k]=d.useState(()=>f.getState().status!=="ready"),[S,o]=d.useState(null),w=T(a=>a.spaces.some(e=>e.id==="coding"))&&!!M("code-studio"),[z,g]=d.useState(()=>Date.now());d.useEffect(()=>{r();const a=()=>{g(Date.now()),r()};return window.addEventListener("focus",a),()=>{window.removeEventListener("focus",a)}},[r]),d.useEffect(()=>{const a=setInterval(()=>{document.hidden||g(Date.now())},6e4);return()=>clearInterval(a)},[]);const u=(a,e,s=!1)=>X.getState().toast(i(a,e),s),L=a=>{V.getState().openView("product",{id:a.id},"main",{newTab:!0})},C=a=>{window.tangu?.openDetached?.([{type:"product",params:{id:a.id}}])},j=a=>{y("coding"),requestAnimationFrame(()=>{G.getState().openProject(a.root,a.name)})},E=async a=>{const e=window.tangu?.productsShortcut;if(e){o(a.id);try{const{key:s,error:c,vars:h}=K(await e(a.id,i("artificial.shortcut.fallbackName")));u(s,h,c)}catch(s){u("artificial.toast.shortcutFailed",{detail:v(s)},!0)}finally{o(null)}}},A=async a=>{const e=window.tangu?.productsUpdate;if(!e)return;const s=(await Q(i("artificial.rename.title"),a.name,{label:i("artificial.rename.label")}))?.trim();if(!(!s||s===a.name)){o(a.id);try{await e(a.id,{name:s}),await r()}catch(c){u("artificial.toast.renameFailed",{detail:v(c)},!0)}finally{o(null)}}},I=async a=>{const e=window.tangu?.productsTrash;if(!(!e||!window.confirm(i(a.external?"artificial.remove.confirm":"artificial.trash.confirm",{name:a.name})))){o(a.id);try{await e(a.id,{action:a.external?"unregister":"trash",dirId:a.dirId}),await r()}catch(s){u("artificial.toast.trashFailed",{detail:v(s)},!0)}finally{o(null)}}},P=a=>{const e=N(a.kind),s=e.icon,c=S===a.id,h=[...e.canLaunch&&window.tangu?.openDetached?[{id:"open-window",label:i("artificial.action.openWindow"),icon:t.jsx(H,{size:14}),onSelect:()=>C(a)}]:[],...w?[{id:"edit",label:i("artificial.action.edit"),icon:t.jsx(Z,{size:14}),onSelect:()=>j(a)}]:[],...e.canShortcut&&window.tangu?.productsShortcut?[{id:"shortcut",label:i("artificial.action.shortcut"),icon:t.jsx(ea,{size:14}),onSelect:()=>{E(a)}}]:[],...window.tangu?.revealHostPath?[{id:"reveal",label:i("artificial.action.reveal"),icon:t.jsx(O,{size:14}),onSelect:()=>{window.tangu?.revealHostPath?.(a.root)}}]:[],...window.tangu?.productsUpdate?[{id:"rename",label:i("artificial.action.rename"),icon:t.jsx(aa,{size:14}),onSelect:()=>{A(a)}}]:[],...window.tangu?.productsTrash?[{id:"trash",label:i(a.external?"artificial.action.remove":"artificial.action.trash"),icon:t.jsx(_,{size:14}),danger:!0,onSelect:()=>{I(a)}}]:[]],b=c||!e.canLaunch&&!w;return t.jsxs("div",{className:"newtab-card art-card","data-artificial-card":!0,"data-product-id":a.id,"data-kind":a.kind,children:[t.jsxs("button",{className:"art-card-main","data-action":"open",disabled:b,"aria-label":e.canLaunch?i("artificial.action.open",{name:a.name}):`${i("artificial.action.edit")} · ${a.name}`,onClick:()=>e.canLaunch?L(a):j(a),children:[t.jsx("span",{className:"newtab-card-ic",children:t.jsx(s,{size:18})}),t.jsx("span",{className:"art-card-name",title:a.name,children:a.name}),!b&&t.jsx(ta,{size:14,className:"art-card-go","aria-hidden":!0})]}),t.jsxs("div",{className:"art-card-foot",children:[t.jsxs("div",{className:"art-card-meta",children:[t.jsx("span",{children:$(a.updatedAt,{now:z,locale:l})}),a.published&&t.jsx("span",{className:"art-badge","data-badge":"published",children:i("artificial.badge.published")}),a.kind==="plugin"&&a.devLoad&&t.jsx("span",{className:"art-badge","data-badge":"devload",children:i("artificial.badge.devLoad")})]}),h.length>0&&t.jsx(J,{label:i("artificial.action.more",{name:a.name}),className:"icon-btn art-card-more",disabled:c,items:h,children:t.jsx(W,{size:14})})]})]},a.id)},x=q(m);return t.jsx("div",{className:"art-root","data-artificial-root":!0,children:t.jsxs("div",{className:"art-inner",children:[t.jsxs("div",{className:"art-head",children:[t.jsx(U,{size:18}),t.jsxs("div",{className:"art-titles",children:[t.jsx("div",{className:"art-title",children:i("view.artificial")}),t.jsx("div",{className:"art-sub",children:i("artificial.subtitle")})]}),t.jsx("button",{className:"icon-btn","data-action":"refresh",title:i("artificial.refresh"),"aria-label":i("artificial.refresh"),onClick:()=>{r()},children:t.jsx(B,{size:14})})]}),n==="loading"&&t.jsxs("div",{className:"art-loading","data-state":"loading",children:[t.jsx(R,{variant:"list"}),t.jsx("span",{className:"art-sr-only",role:"status",children:i("artificial.loading")})]}),n==="error"&&t.jsxs("div",{className:"art-state",role:"alert","data-state":"error",children:[t.jsx("div",{className:"art-state-title",children:i("artificial.loadFailed")}),t.jsx("button",{className:"btn sm","data-action":"retry",onClick:()=>{r()},children:i("common.retry")})]}),n==="ready"&&!x.length&&t.jsxs("div",{className:"art-state","data-state":"empty",children:[t.jsx("div",{className:"art-state-title",children:i("artificial.empty.title")}),t.jsx("p",{children:i("artificial.empty.body")}),w&&t.jsx("button",{className:"btn primary sm","data-action":"go-coding",onClick:()=>y("coding"),children:i("artificial.empty.cta")})]}),n==="ready"&&x.length>0&&t.jsx("div",{className:k?"sk-fade-in":void 0,children:x.map(a=>t.jsxs("div",{className:"newtab-sec","data-kind-group":a.kind,children:[t.jsx("div",{className:"newtab-sec-title",children:i(N(a.kind).labelKey)}),t.jsx("div",{className:"newtab-grid art-grid",children:a.items.map(P)})]},a.kind))})]})})}export{ga as ArtificialView};
|