@forsion/unit 2.13.2 → 2.13.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 (207) hide show
  1. package/main.mjs +25 -3
  2. package/package.json +1 -1
  3. package/release.json +5 -5
  4. package/web/assets/ArtificialView-DLh75dAI.js +1 -0
  5. package/web/assets/AutomationBuilder-DNWWGnFr.js +1 -0
  6. package/web/assets/CalendarConfigView-G7je7k9-.js +1 -0
  7. package/web/assets/{CalendarView-D7ZUE_dr.js → CalendarView-B2MtaOJk.js} +1 -1
  8. package/web/assets/{CapabilityMenu-CrsaTtDe.js → CapabilityMenu-DJaZ_Cyt.js} +1 -1
  9. package/web/assets/{CheckboxInput-DVO2-1J7.js → CheckboxInput-FYXLaZke.js} +1 -1
  10. package/web/assets/{Chrome-BvpbCvo1.js → Chrome-CFonajM4.js} +1 -1
  11. package/web/assets/{CodeView-CB4kG7Y6.js → CodeView-GZ0BAgoW.js} +3 -3
  12. package/web/assets/DashboardGridView-D9s9pez_.css +1 -0
  13. package/web/assets/DashboardGridView-Xgw4wa0_.js +17 -0
  14. package/web/assets/{EventCard-c6s4uGBu.js → EventCard-_39F_I5M.js} +1 -1
  15. package/web/assets/ExcalidrawCanvas-rXujil36.js +1 -0
  16. package/web/assets/{FloatingToc-ldOYWe2C.js → FloatingToc-DNqAkkI0.js} +1 -1
  17. package/web/assets/GitCloneDialog-Bj9G3o-n.css +1 -0
  18. package/web/assets/GitCloneDialog-CQx-O4j1.js +1 -0
  19. package/web/assets/HomepageView-DcWmTPQO.css +1 -0
  20. package/web/assets/HomepageView-MYEk3RCs.js +3 -0
  21. package/web/assets/{ImageStudioPanels-DgMYAsHj.js → ImageStudioPanels-4wnb2XF4.js} +2 -2
  22. package/web/assets/ImageStudioView-qrmW8pfx.js +1 -0
  23. package/web/assets/InlineAiPanel-B3kd1ob2.js +1 -0
  24. package/web/assets/InlineAiPanel-DZZijfif.css +1 -0
  25. package/web/assets/InlineFiles-Clnqh9jD.js +1 -0
  26. package/web/assets/MarkdownBlock-DQTuoen3.css +1 -0
  27. package/web/assets/MarkdownBlock-DT_wsaja.js +58 -0
  28. package/web/assets/ModelPill-JaIH3ffZ.js +2 -0
  29. package/web/assets/MuseLibraryView-16p1zsxz.css +1 -0
  30. package/web/assets/MuseLibraryView-DOJVVeU6.js +2 -0
  31. package/web/assets/{MuseView-3GL4Ltoj.js → MuseView-uxTmjVQa.js} +2 -2
  32. package/web/assets/{PageHistoryPanel-BMQC-V_l.js → PageHistoryPanel-Bn4-XmdK.js} +2 -2
  33. package/web/assets/{PdfAnnotator-CyAw8sgq.js → PdfAnnotator-Cq8cklTz.js} +1 -1
  34. package/web/assets/PenRow-COOYAaxx.js +1 -0
  35. package/web/assets/ProductView-DPTveulg.js +1 -0
  36. package/web/assets/RightPanel-BJUacrsf.js +4 -0
  37. package/web/assets/RightPanel-D0zk1g3I.css +1 -0
  38. package/web/assets/{SketchCard-DAD0jR0i.js → SketchCard-B_UU5sxV.js} +3 -3
  39. package/web/assets/{StudioGuestSurface-DlUKXBXv.js → StudioGuestSurface-yBa4QKfX.js} +1 -1
  40. package/web/assets/TargetHealthNotice-BLzDB-Xl.css +1 -0
  41. package/web/assets/TargetHealthNotice-CgkdTdhB.js +47 -0
  42. package/web/assets/{TodoListView-_yFkPUrw.js → TodoListView-CricdCfW.js} +1 -1
  43. package/web/assets/{Tooltip-DXuy9-1_.js → Tooltip-o8ZqIb3L.js} +1 -1
  44. package/web/assets/UnifiedPage-BWAyqj65.js +69 -0
  45. package/web/assets/ViewSelectionBar-35x8TiLA.js +2 -0
  46. package/web/assets/{amadeus-manual.en-DzRWr4BL.js → amadeus-manual.en-B8J-svqq.js} +1 -1
  47. package/web/assets/{amadeus-manual.zh-DW32DkL7.js → amadeus-manual.zh-CkCOFnrg.js} +1 -1
  48. package/web/assets/appStore-CI1_L5OS.js +3357 -0
  49. package/web/assets/appStore-DQc2marq.css +1 -0
  50. package/web/assets/{arrow-up-right-KPFbRA41.js → arrow-up-right-BDsMFoNQ.js} +1 -1
  51. package/web/assets/{astryxBridge-Bupzouso.js → astryxBridge-CH_c5xjo.js} +3 -3
  52. package/web/assets/automationListSource-CB6AWkL_.js +1 -0
  53. package/web/assets/{boardSurface-BHuMoQN-.js → boardSurface-CLvEUjbF.js} +1 -1
  54. package/web/assets/{book-open-CBeNsIpo.js → book-open-BLzEdGfu.js} +1 -1
  55. package/web/assets/{calendarNavStore-Duyhbmm_.js → calendarNavStore-BHUNxDx8.js} +1 -1
  56. package/web/assets/{canvasPrefs-CxfyDTMT.js → canvasPrefs-CvE7mgyq.js} +1 -1
  57. package/web/assets/{chatBoxSurface-OBzO1Z5E.js → chatBoxSurface-CuuHLzs5.js} +1 -1
  58. package/web/assets/{circle-question-mark-M8QUJJYk.js → circle-question-mark-BM4ZRxQS.js} +1 -1
  59. package/web/assets/{circle-x-Szwop5L_.js → circle-x-DTcNGZDT.js} +1 -1
  60. package/web/assets/{client-CPUljePZ.js → client-CaivGZFR.js} +5 -5
  61. package/web/assets/{code-xml-n9mgGgkv.js → code-xml-AE3mT4T5.js} +1 -1
  62. package/web/assets/{codeStudioStore-DXMQwRzG.js → codeStudioStore-DhyMazGT.js} +1 -1
  63. package/web/assets/codingNavigation-B0kVsy4x.js +53 -0
  64. package/web/assets/codingNavigation-DHCidM4N.css +1 -0
  65. package/web/assets/{create-C19zqt5N.js → create-1JI2I47p.js} +2 -2
  66. package/web/assets/dashboardSurface-CIE5HybN.js +1 -0
  67. package/web/assets/{deskCapture-B_LKZSPt.js → deskCapture-COW7aG5Y.js} +1 -1
  68. package/web/assets/{diff2html-DrCCWvpR.js → diff2html-Daje9Kkm.js} +1 -1
  69. package/web/assets/{docx-preview-Bi7wekSM.js → docx-preview-CABR7n30.js} +1 -1
  70. package/web/assets/emoji-DZ9CA_3l.css +1 -0
  71. package/web/assets/emoji-DphwSxPx.js +1 -0
  72. package/web/assets/{floatingTocSurface-rc1ZC7-I.js → floatingTocSurface-BOm2QYBK.js} +1 -1
  73. package/web/assets/{foldActions-BGocXE-o.js → foldActions-DNbJPlPl.js} +1 -1
  74. package/web/assets/{folder-CoOsfQ64.js → folder-DotgUhYD.js} +1 -1
  75. package/web/assets/{folder-plus-d5MwIMlf.js → folder-plus-aJgL9NeP.js} +1 -1
  76. package/web/assets/gestures-dqncPOwo.js +1 -0
  77. package/web/assets/git-branch-CwR2qic6.js +1 -0
  78. package/web/assets/{hand-fuehbnkI.js → hand-XNkzNiW2.js} +1 -1
  79. package/web/assets/{hard-drive-Bh1DmZg0.js → hard-drive-CfWKRoAE.js} +1 -1
  80. package/web/assets/i18n-CykmULlm.css +1 -0
  81. package/web/assets/i18n.generated-BwynSSMk.js +15 -0
  82. package/web/assets/{imageStudio-Dgl1wZNB.js → imageStudio-CWgLpC_d.js} +2 -2
  83. package/web/assets/imageStudio-DZ0qGU2s.css +1 -0
  84. package/web/assets/{index-2tD0kijW.js → index-B65ULikK.js} +1 -1
  85. package/web/assets/{index-BPqoEOV_.js → index-BGfvNj7R.js} +1 -1
  86. package/web/assets/{index-38xsQSS9.js → index-BIIeiIap.js} +1 -1
  87. package/web/assets/{index-B5UW6SaE.js → index-BOzsniE1.js} +89 -89
  88. package/web/assets/{index-YRWOePBS.js → index-BfrjVzia.js} +1 -1
  89. package/web/assets/{index-CnDAYLti.js → index-Bi9UtjVz.js} +1 -1
  90. package/web/assets/{index-fViJsYjM.js → index-C1uilc9i.js} +1 -1
  91. package/web/assets/{index-CPLtf9Vc.js → index-C3Dc3Ivz.js} +1 -1
  92. package/web/assets/{index-B8Co6KG3.js → index-CJF_Ld1Y.js} +1 -1
  93. package/web/assets/{index-lfow5R3O.js → index-CMARP4oV.js} +1 -1
  94. package/web/assets/{index-Dx9aIoyo.js → index-C_RsQVNm.js} +1 -1
  95. package/web/assets/{index-D4CSH-v1.js → index-ChyxZMm8.js} +1 -1
  96. package/web/assets/{index-7kdR1oL8.js → index-CoKcOaZg.js} +1 -1
  97. package/web/assets/{index-Ce1sNSS8.js → index-CuviSCbk.js} +1 -1
  98. package/web/assets/{index-Ch0FIsJX.js → index-Cw43kua8.js} +1 -1
  99. package/web/assets/{index-DvOrTnw2.js → index-D1fu6XQN.js} +1 -1
  100. package/web/assets/{index-QjVOA7QM.js → index-DG-hXb63.js} +1 -1
  101. package/web/assets/index-DjnTfJpN.js +1 -0
  102. package/web/assets/{index-DcRyQ3eU.js → index-Dtw0abst.js} +1 -1
  103. package/web/assets/{index-Dy07SBfH.js → index-O05r2Ty6.js} +1 -1
  104. package/web/assets/{index-BCG8Wnc4.js → index-W3ErfZiX.js} +1 -1
  105. package/web/assets/{index-e-MxdHFO.js → index-Yc56b3XX.js} +1 -1
  106. package/web/assets/{index-Dff-DL1v.js → index-d4jCdYJH.js} +1 -1
  107. package/web/assets/{index-Dc8iMctf.js → index-gt5JBIFf.js} +1 -1
  108. package/web/assets/{index-Df9jregv.js → index-siHtlYTM.js} +1 -1
  109. package/web/assets/{invitePage-Dgl3-c_m.js → invitePage-Bgveo6Hj.js} +1 -1
  110. package/web/assets/{ipc-CNlIRMtU.js → ipc-B6hkgxQL.js} +1 -1
  111. package/web/assets/{jszip.min-tyV0GaJg.js → jszip.min-eU-k-vEy.js} +1 -1
  112. package/web/assets/{layout-grid-DFmwM9NU.js → layout-grid-CraV7nhh.js} +1 -1
  113. package/web/assets/linkFollow-BpvDWzUx.js +8 -0
  114. package/web/assets/{list-tree-i07HsP3D.js → list-tree-cLJw-jYQ.js} +1 -1
  115. package/web/assets/{listFold-Aea6I0Sa.js → listFold-M8s5JYEC.js} +1 -1
  116. package/web/assets/{lock-TSDKuCod.js → lock-DBkXXwaI.js} +1 -1
  117. package/web/assets/lock-open-C-9-AWct.js +1 -0
  118. package/web/assets/{log-out-DK84lW5n.js → log-out-C8bDXj9P.js} +1 -1
  119. package/web/assets/main-CMk6twzA.js +20 -0
  120. package/web/assets/markdownEditorSurface-DgQ0TUWH.js +3 -0
  121. package/web/assets/{message-square-plus-3wFslIMY.js → message-square-plus-8pfimvem.js} +1 -1
  122. package/web/assets/{messages-DEAGRsC3.js → messages-CKtabOqy.js} +1 -1
  123. package/web/assets/minus-CfA9fAN3.js +1 -0
  124. package/web/assets/mobileEntry-NcMcK0LV.js +13 -0
  125. package/web/assets/{nativeDownload-B3JGkABw.js → nativeDownload-CNtwSCy0.js} +1 -1
  126. package/web/assets/pageChrome-BR4cfIaA.js +1 -0
  127. package/web/assets/pageChrome-BbUhILy0.css +1 -0
  128. package/web/assets/{pageTree-DZ7Eiro-.js → pageTree-BYYPgZm_.js} +4 -4
  129. package/web/assets/{pen-tool-ChGmX6g_.js → pen-tool-C5ftHCnm.js} +1 -1
  130. package/web/assets/{pencil-CJsJD7M_.js → pencil-ehhM9_9k.js} +1 -1
  131. package/web/assets/phoneList-B6gwUJZF.js +9 -0
  132. package/web/assets/phoneList-iRdfiKA8.css +1 -0
  133. package/web/assets/pluginChat-DTTWWiUS.js +2 -0
  134. package/web/assets/{redo-2-CI57sDFr.js → redo-2-DCEAgQlN.js} +1 -1
  135. package/web/assets/{rotate-ccw-xgT_0UN9.js → rotate-ccw-DdkrbRAB.js} +1 -1
  136. package/web/assets/selectionActions-BQD2kox1.js +2 -0
  137. package/web/assets/selectionBarSurface-CzUZmJDJ.js +1 -0
  138. package/web/assets/server-Ddu9f1k3.js +1 -0
  139. package/web/assets/sharePage-CNrm2xTC.js +2 -0
  140. package/web/assets/{shareViewer-DKPWhTJv.js → shareViewer-BiMqIBxP.js} +2 -2
  141. package/web/assets/{star-C9KTji9N.js → star-Dxv7XANS.js} +1 -1
  142. package/web/assets/tableSurface-Bly1iCXc.js +1 -0
  143. package/web/assets/{terminal-DPZazOQ2.js → terminal-CAmmC9cV.js} +1 -1
  144. package/web/assets/{terminalView-CsJmxE_m.js → terminalView-lbcBgG0c.js} +1 -1
  145. package/web/assets/theme-CUWFlazV.css +1 -0
  146. package/web/assets/{type-C5J875vb.js → type-Dz6rnTvG.js} +1 -1
  147. package/web/assets/{undo-2-BOUt5qks.js → undo-2-B7izWNb_.js} +1 -1
  148. package/web/assets/{unitAccount-BIAIxKNp.js → unitAccount-DGwGsmC3.js} +1 -1
  149. package/web/assets/{unitBridge-b2C6zb3a.js → unitBridge-CE2yAvm0.js} +1 -1
  150. package/web/assets/{unitCloudTransport-NGtDDKWo.js → unitCloudTransport-BGFwkaDM.js} +1 -1
  151. package/web/assets/{unitOwnerAccess-CwH9ApZT.js → unitOwnerAccess-D4nKS6Gg.js} +1 -1
  152. package/web/assets/{unitShim-CY8EVkKD.js → unitShim-2_2hhGxS.js} +3 -3
  153. package/web/assets/{upload-CrbEAW8C.js → upload-DqpRRAhG.js} +1 -1
  154. package/web/assets/userSpaces-VFu4s05v.js +1 -0
  155. package/web/assets/viewportLock-3AOdDmwi.js +631 -0
  156. package/web/assets/viewportLock-djvL8fUQ.css +1 -0
  157. package/web/assets/{zoom-in-BcuPvIYd.js → zoom-in-Bf-eKTnH.js} +1 -1
  158. package/web/index.html +2 -2
  159. package/web/assets/ArtificialView-Bs_6B211.js +0 -1
  160. package/web/assets/AutomationBuilder-C-IFaaBp.js +0 -1
  161. package/web/assets/CalendarConfigView-DEsNvVkD.js +0 -1
  162. package/web/assets/DashboardGridView-hpRmBr9B.css +0 -1
  163. package/web/assets/DashboardGridView-tgaj9-SM.js +0 -17
  164. package/web/assets/ExcalidrawCanvas-NdV86AR3.js +0 -1
  165. package/web/assets/HomepageView-4joJWYlg.js +0 -1
  166. package/web/assets/HomepageView-Cxf3AWBu.css +0 -1
  167. package/web/assets/ImageStudioView-_CYHoOoG.js +0 -1
  168. package/web/assets/InlineFiles-BIfsx3R-.js +0 -1
  169. package/web/assets/MarkdownBlock--__nPQGh.css +0 -1
  170. package/web/assets/MarkdownBlock-wYEaBBOr.js +0 -58
  171. package/web/assets/ModelPill-DveHcLqq.js +0 -2
  172. package/web/assets/MuseLibraryView-Do9RnKiq.js +0 -2
  173. package/web/assets/PenRow-BSB-h5Pb.js +0 -1
  174. package/web/assets/ProductView-B96OeHOP.js +0 -1
  175. package/web/assets/RightPanel-BgSeCLnw.js +0 -4
  176. package/web/assets/RunLocationPicker-CEmFio4n.css +0 -1
  177. package/web/assets/RunLocationPicker-M1UoJyjf.js +0 -38
  178. package/web/assets/UnifiedPage-EJNWKzxN.js +0 -68
  179. package/web/assets/appStore-CidPWYa0.js +0 -3254
  180. package/web/assets/appStore-DeaC1U32.css +0 -1
  181. package/web/assets/automationListSource-1aOVKBLw.js +0 -1
  182. package/web/assets/codingNavigation-CCjs1kon.js +0 -53
  183. package/web/assets/codingNavigation-yp19w6uu.css +0 -1
  184. package/web/assets/dashboardSurface-BwcH16Qc.js +0 -1
  185. package/web/assets/emoji-DczIG8SO.js +0 -1
  186. package/web/assets/gestures-CXFaEydn.js +0 -1
  187. package/web/assets/i18n-DjziAw8r.css +0 -1
  188. package/web/assets/i18n.generated-BiQFRL2U.js +0 -15
  189. package/web/assets/imageStudio--KF9gwHA.css +0 -1
  190. package/web/assets/index-BqGpbntz.js +0 -1
  191. package/web/assets/linkFollow-iP2zfbA3.js +0 -8
  192. package/web/assets/main-D7CEGndC.js +0 -20
  193. package/web/assets/markdownEditorSurface-DISu_twy.js +0 -3
  194. package/web/assets/minus-BBdfT_sc.js +0 -1
  195. package/web/assets/mobileEntry-5UaAITwY.js +0 -13
  196. package/web/assets/pageChrome-BDHHmRnt.css +0 -1
  197. package/web/assets/pageChrome-DFi9zs6F.js +0 -1
  198. package/web/assets/phoneList-DrxIwJxQ.js +0 -9
  199. package/web/assets/phoneList-DvpzD3zT.css +0 -1
  200. package/web/assets/pluginChat-0QI9a8Q1.js +0 -2
  201. package/web/assets/sharePage-C2Yqx0NQ.js +0 -2
  202. package/web/assets/tableSurface-cYs6dX6B.js +0 -1
  203. package/web/assets/theme-Dgqst5S9.css +0 -1
  204. package/web/assets/userSpaces-B_Njvel_.js +0 -1
  205. package/web/assets/viewportLock-Bi3orrUs.css +0 -1
  206. package/web/assets/viewportLock-DZ927PNz.js +0 -629
  207. package/web/assets/workflow-DY2Cnaei.js +0 -1
package/main.mjs CHANGED
@@ -724,8 +724,11 @@ var ENGINE_ROUTES = [
724
724
  { method: "POST", path: "/agent/plugins/install", access: "deny-remote", src: "routes/plugins.ts", why: "installs code (design appendix C)" },
725
725
  { method: "POST", path: "/agent/plugins/rescan", access: "deny-remote", src: "routes/plugins.ts", why: "engine plugins are local-only" },
726
726
  { method: "POST", path: "/agent/reply-segments", access: "allow", src: "routes/plugins.ts", why: "chat bubble segmentation helper (read-only)" },
727
+ { 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
728
  { method: "GET", path: "/agent/git-settings", access: "allow", src: "routes/projectContext.ts", why: "read Settings \u2192 Git" },
728
729
  { method: "PUT", path: "/agent/git-settings", access: "deny-remote", src: "routes/projectContext.ts", why: "engine config.json write" },
730
+ { 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" },
731
+ { 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
732
  { method: "GET", path: "/agent/project-context", access: "allow", src: "routes/projectContext.ts", why: "read project context" },
730
733
  { method: "PUT", path: "/agent/project-context/doc", access: "deny-remote", src: "routes/projectContext.ts", why: "project instruction write (design appendix C)" },
731
734
  { method: "POST", path: "/agent/project-context/git/branch", access: "deny-remote", src: "routes/projectContext.ts", why: "git repository write" },
@@ -735,8 +738,10 @@ var ENGINE_ROUTES = [
735
738
  { 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
739
  { method: "POST", path: "/agent/project-context/git/pending", access: "deny-remote", src: "routes/projectContext.ts", why: "may run trusted repo filters (trust=true)" },
737
740
  { 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" },
741
+ { 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
742
  { 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
743
  { method: "POST", path: "/agent/project-context/git/push", access: "deny-remote", src: "routes/projectContext.ts", why: "git push with local credentials" },
744
+ { 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
745
  { method: "POST", path: "/agent/project-context/git/trust", access: "deny-remote", src: "routes/projectContext.ts", why: "trusts repo-provided executable git config" },
741
746
  { method: "DELETE", path: "/agent/project-context/icon", access: "deny-remote", src: "routes/projectContext.ts", why: "project icon write" },
742
747
  { method: "GET", path: "/agent/project-context/icon", access: "allow", src: "routes/projectContext.ts", why: "project icon" },
@@ -3270,7 +3275,7 @@ init_control();
3270
3275
  // desktop/package.json
3271
3276
  var package_default = {
3272
3277
  name: "forsion-desktop",
3273
- version: "2.13.2",
3278
+ version: "2.13.4",
3274
3279
  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
3280
  author: "Forsion",
3276
3281
  private: true,
@@ -3284,6 +3289,8 @@ var package_default = {
3284
3289
  "check:intelligent-ui": "node scripts/intelligent-ui.e2e.cjs",
3285
3290
  "e2e:intelligent-live": "cd ../tangu-agent && node scripts/live-harness.mjs --only intelligentusers --model codex/gpt-6-luna --timeout 1800000",
3286
3291
  "demo:intelligent-ui": "node scripts/intelligent-ui.e2e.cjs --preview",
3292
+ "replay:intelligent-ui": "node scripts/intelligent-ui-replay.cjs",
3293
+ "check:intelligent-ui-setting": "node scripts/intelligent-ui-setting.check.cjs",
3287
3294
  "demo:sketch": "node scripts/sketch-demo.record.cjs",
3288
3295
  "check:version": "node scripts/dev-version.check.cjs",
3289
3296
  build: "electron-vite build",
@@ -3301,6 +3308,7 @@ var package_default = {
3301
3308
  "e2e:dnd": "node scripts/block-dnd.e2e.cjs",
3302
3309
  "e2e:sidebardrop": "node scripts/sidebar-drop.e2e.cjs",
3303
3310
  "e2e:notemove": "node scripts/note-move-assets.e2e.cjs",
3311
+ "e2e:filelink": "node scripts/file-wikilink.e2e.cjs",
3304
3312
  "e2e:ribbon": "node scripts/ribbon-dnd.e2e.cjs",
3305
3313
  "e2e:spacewindow": "node scripts/space-window.e2e.cjs",
3306
3314
  "e2e:spacewindow-input": "node scripts/space-window-input.e2e.cjs",
@@ -3317,6 +3325,8 @@ var package_default = {
3317
3325
  "e2e:chatevents": "node scripts/chat-events.e2e.cjs",
3318
3326
  "e2e:computerhistory": "node scripts/computer-history.e2e.cjs",
3319
3327
  "e2e:appdock": "node scripts/app-dock.e2e.cjs",
3328
+ "e2e:apprefs": "node scripts/app-refs.e2e.cjs",
3329
+ "check:apprefs-real": "APPREF_REAL=1 vitest run electron/appRefs.real.test.ts",
3320
3330
  "e2e:remotesafety": "node scripts/remote-safety.e2e.cjs",
3321
3331
  "e2e:chatshimmer": "node scripts/chat-shimmer.e2e.cjs",
3322
3332
  "e2e:runstats": "node scripts/chat-runstats.e2e.cjs",
@@ -3325,6 +3335,10 @@ var package_default = {
3325
3335
  "e2e:livewait": "node scripts/chat-livewait.e2e.cjs",
3326
3336
  "e2e:queue": "node scripts/queued-commands.e2e.cjs",
3327
3337
  "e2e:composerdraft": "node scripts/composer-draft.e2e.cjs",
3338
+ "e2e:projectbar": "node scripts/newchat-projectbar.e2e.cjs",
3339
+ "e2e:runlocation": "node scripts/run-location.e2e.cjs",
3340
+ "check:runlocpill": "node scripts/e2e-editor.cjs --check=run-location-pill",
3341
+ "e2e:chatlanding": "node scripts/amadeus-chat-landing.e2e.cjs",
3328
3342
  "e2e:musespace": "node scripts/muse-space.e2e.cjs",
3329
3343
  "e2e:coreplugins": "node scripts/core-plugins.e2e.cjs",
3330
3344
  "e2e:restart-update": "node scripts/restart-update.e2e.cjs",
@@ -3351,6 +3365,7 @@ var package_default = {
3351
3365
  "check:feedback": "node scripts/feedback.check.cjs",
3352
3366
  "check:floatingsession": "node scripts/floating-session.check.cjs",
3353
3367
  "check:btw": "node scripts/btw.check.cjs",
3368
+ "check:selectionbar": "node scripts/selection-bar.check.cjs",
3354
3369
  "check:promptsuggest": "node scripts/prompt-suggest.check.cjs",
3355
3370
  "check:chatlayout": "node scripts/chat-layout.check.cjs",
3356
3371
  "check:sessionemoji": "node scripts/session-emoji.check.cjs",
@@ -3366,6 +3381,7 @@ var package_default = {
3366
3381
  "check:splitregions": "node scripts/split-regions.check.cjs",
3367
3382
  "check:br": "node scripts/e2e-editor.cjs --check=blank-line-br",
3368
3383
  "check:computerhistory": "node scripts/e2e-editor.cjs --check=computer-history-settings",
3384
+ "check:onboardinghistory": "node scripts/onboarding-history.check.cjs",
3369
3385
  "check:browserext": "node scripts/e2e-editor.cjs --check=browserext-settings",
3370
3386
  "check:attention": "node scripts/e2e-editor.cjs --check=attention-save",
3371
3387
  "check:rtcorpus": "node scripts/e2e-editor.cjs --check=rtcorpus",
@@ -3391,6 +3407,7 @@ var package_default = {
3391
3407
  "check:dashboard": "node scripts/e2e-editor.cjs --check=dashboard",
3392
3408
  "check:embedinputs": "node scripts/e2e-editor.cjs --check=embed-inputs",
3393
3409
  "check:embedkeep": "node scripts/e2e-editor.cjs --check=embed-keep",
3410
+ "check:embedsource": "node scripts/e2e-editor.cjs --check=embed-source",
3394
3411
  "check:outlinereveal": "node scripts/e2e-editor.cjs --check=outline-reveal",
3395
3412
  "check:coverrepo": "node scripts/e2e-editor.cjs --check=cover-reposition",
3396
3413
  "check:pagestyle": "node scripts/e2e-editor.cjs --check=page-style",
@@ -3466,6 +3483,7 @@ var package_default = {
3466
3483
  "check:plugindeps": "node scripts/plugin-deps.check.cjs",
3467
3484
  "check:pluginsync": "node scripts/plugin-install-sync.check.cjs",
3468
3485
  "check:first-run": "node scripts/onboarding.check.cjs",
3486
+ "stage:first-run": "node scripts/onboarding.stage.cjs",
3469
3487
  "check:miniauto": "node scripts/mini-auto.check.cjs",
3470
3488
  "check:board": "node scripts/board-paper.check.cjs",
3471
3489
  "check:boardlive": "node scripts/e2e-editor.cjs --check=board-live",
@@ -3499,6 +3517,7 @@ var package_default = {
3499
3517
  "check:bottomiframe": "node scripts/bottom-toggle-iframe.electron.cjs",
3500
3518
  "shot:bottompanel": "node scripts/bottom-panel.check.cjs --shot",
3501
3519
  "check:remount": "node scripts/main-remount.check.cjs",
3520
+ "check:spacepeek": "node scripts/space-peek.check.cjs",
3502
3521
  "check:nav": "node scripts/nav-history.check.cjs",
3503
3522
  "check:builtins": "node scripts/builtins.check.cjs",
3504
3523
  "check:runblock": "node scripts/runblock.check.cjs",
@@ -3548,6 +3567,7 @@ var package_default = {
3548
3567
  "check:teamoutputs": "node scripts/team-outputs.check.cjs",
3549
3568
  "check:teamprofile": "node scripts/team-profile.check.cjs",
3550
3569
  "check:teamdesk": "node scripts/team-desk.check.cjs",
3570
+ "check:musechat": "node scripts/muse-chat-desk.check.cjs",
3551
3571
  "check:ultra": "node scripts/ultra-effort.check.cjs",
3552
3572
  "check:canvas": "node scripts/e2e-editor.cjs --check=unified-canvas",
3553
3573
  "check:tutorial": "node scripts/e2e-editor.cjs --check=tutorial-note",
@@ -3567,6 +3587,8 @@ var package_default = {
3567
3587
  "check:astryxscope": "node scripts/astryx-scope.check.cjs",
3568
3588
  "check:todo": "node scripts/todo-view.check.cjs",
3569
3589
  "check:chattabs": "node scripts/chat-multitab.check.cjs",
3590
+ "check:openbeside": "node scripts/open-beside.check.cjs",
3591
+ "check:linkmenu": "node scripts/e2e-editor.cjs --check=link-menu",
3570
3592
  "check:newtab": "node scripts/newtab-open.check.cjs",
3571
3593
  "check:newnote": "node scripts/new-note-nav.check.cjs",
3572
3594
  "check:calendarplugin": "node scripts/builtin-calendar.check.cjs",
@@ -3608,8 +3630,8 @@ var package_default = {
3608
3630
  "@dnd-kit/sortable": "^10.0.0",
3609
3631
  "@dnd-kit/utilities": "^3.2.2",
3610
3632
  "@excalidraw/excalidraw": "npm:@zsviczian/excalidraw@0.18.122",
3611
- "@forsion/extend": "0.8.1",
3612
- "@forsion/tangu-computer-use": "0.6.2",
3633
+ "@forsion/extend": "0.8.3",
3634
+ "@forsion/tangu-computer-use": "0.7.1",
3613
3635
  "@milkdown/kit": "^7.21.2",
3614
3636
  "@milkdown/plugin-math": "^7.5.9",
3615
3637
  "@milkdown/react": "^7.21.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forsion/unit",
3
- "version": "2.13.2",
3
+ "version": "2.13.4",
4
4
  "type": "module",
5
5
  "description": "Forsion Unit: the independently runnable Forsion framework (plugin host and Web UI), prebuilt.",
6
6
  "license": "SEE LICENSE IN LICENSE",
package/release.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
- "desktopVersion": "2.13.2",
3
- "desktopTag": "v2.13.2",
4
- "desktopCommit": "7872b6a2ace971410307577f30cabe125121e7b5",
2
+ "desktopVersion": "2.13.4",
3
+ "desktopTag": "v2.13.4",
4
+ "desktopCommit": "b2dacea5efed7a30efefff5c942b745b377ce350",
5
5
  "unitRevision": 0,
6
6
  "prerelease": false,
7
- "sourceCommit": "7872b6a2ace971410307577f30cabe125121e7b5",
7
+ "sourceCommit": "b2dacea5efed7a30efefff5c942b745b377ce350",
8
8
  "sourceDirty": false,
9
- "builtAt": "2026-10-10T23:37:25.751Z",
9
+ "builtAt": "2026-10-14T14:21:58.098Z",
10
10
  "commercialServerIncluded": false
11
11
  }
@@ -0,0 +1 @@
1
+ import{u as D,d,j as t}from"./index-BOzsniE1.js";import{J as F,x as T,ae as M,nS as R,f7 as U,hS as V,fe as W,y,nT as N,b9 as B,a9 as q,bw as H,ea as _,aB as $,nU as J,ge as K,t as O,u as X}from"./appStore-CI1_L5OS.js";import"./client-CaivGZFR.js";import{u as G}from"./codeStudioStore-DhyMazGT.js";import{C as Q}from"./CapabilityMenu-DJaZ_Cyt.js";import{c as Y}from"./nativeDownload-CNtwSCy0.js";/* empty css */import{C as Z}from"./code-xml-AE3mT4T5.js";import{P as aa}from"./pencil-ehhM9_9k.js";import{A as ta}from"./arrow-up-right-BDsMFoNQ.js";import"./ipc-B6hkgxQL.js";const ea=[["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"}]],ia=F("monitor-down",ea);let v=0;const f=Y((e,l)=>({items:[],status:"loading",async load(){const m=window.tangu?.productsList;if(!m){e({status:"error"});return}const r=++v;l().status!=="ready"&&e({status:"loading"});try{const n=await m();r===v&&e({items:n,status:"ready"})}catch{r===v&&l().status!=="ready"&&e({status:"error"})}}})),g=e=>e instanceof Error?e.message:String(e);function wa(){const{t:e,locale:l}=D(),m=f(a=>a.items),r=f(a=>a.status),n=f(a=>a.load),[k]=d.useState(()=>f.getState().status!=="ready"),[S,c]=d.useState(null),w=T(a=>a.spaces.some(i=>i.id==="coding"))&&!!M("code-studio"),[z,b]=d.useState(()=>Date.now());d.useEffect(()=>{n();const a=()=>{b(Date.now()),n()};return window.addEventListener("focus",a),()=>{window.removeEventListener("focus",a)}},[n]),d.useEffect(()=>{const a=setInterval(()=>{document.hidden||b(Date.now())},6e4);return()=>clearInterval(a)},[]);const u=(a,i,s=!1)=>X.getState().toast(e(a,i),s),L=a=>{O.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 i=window.tangu?.productsShortcut;if(i){c(a.id);try{const{key:s,error:o,vars:h}=J(await i(a.id,e("artificial.shortcut.fallbackName")));u(s,h,o)}catch(s){u("artificial.toast.shortcutFailed",{detail:g(s)},!0)}finally{c(null)}}},A=async a=>{const i=window.tangu?.productsUpdate;if(!i)return;const s=(await K(e("artificial.rename.title"),a.name,{label:e("artificial.rename.label")}))?.trim();if(!(!s||s===a.name)){c(a.id);try{await i(a.id,{name:s}),await n()}catch(o){u("artificial.toast.renameFailed",{detail:g(o)},!0)}finally{c(null)}}},I=async a=>{const i=window.tangu?.productsTrash;if(!(!i||!window.confirm(e(a.external?"artificial.remove.confirm":"artificial.trash.confirm",{name:a.name})))){c(a.id);try{await i(a.id,{action:a.external?"unregister":"trash",dirId:a.dirId}),await n()}catch(s){u("artificial.toast.trashFailed",{detail:g(s)},!0)}finally{c(null)}}},P=a=>{const i=N(a.kind),s=i.icon,o=S===a.id,h=[...i.canLaunch&&window.tangu?.openDetached?[{id:"open-window",label:e("artificial.action.openWindow"),icon:t.jsx(B,{size:14}),onSelect:()=>C(a)}]:[],...w?[{id:"edit",label:e("artificial.action.edit"),icon:t.jsx(Z,{size:14}),onSelect:()=>j(a)}]:[],...i.canShortcut&&window.tangu?.productsShortcut?[{id:"shortcut",label:e("artificial.action.shortcut"),icon:t.jsx(ia,{size:14}),onSelect:()=>{E(a)}}]:[],...window.tangu?.revealHostPath?[{id:"reveal",label:e("artificial.action.reveal"),icon:t.jsx(q,{size:14}),onSelect:()=>{window.tangu?.revealHostPath?.(a.root)}}]:[],...window.tangu?.productsUpdate?[{id:"rename",label:e("artificial.action.rename"),icon:t.jsx(aa,{size:14}),onSelect:()=>{A(a)}}]:[],...window.tangu?.productsTrash?[{id:"trash",label:e(a.external?"artificial.action.remove":"artificial.action.trash"),icon:t.jsx(H,{size:14}),danger:!0,onSelect:()=>{I(a)}}]:[]],p=o||!i.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:p,"aria-label":i.canLaunch?e("artificial.action.open",{name:a.name}):`${e("artificial.action.edit")} · ${a.name}`,onClick:()=>i.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}),!p&&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:e("artificial.badge.published")}),a.kind==="plugin"&&a.devLoad&&t.jsx("span",{className:"art-badge","data-badge":"devload",children:e("artificial.badge.devLoad")})]}),h.length>0&&t.jsx(Q,{label:e("artificial.action.more",{name:a.name}),className:"icon-btn art-card-more",disabled:o,items:h,children:t.jsx($,{size:14})})]})]},a.id)},x=R(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:e("view.artificial")}),t.jsx("div",{className:"art-sub",children:e("artificial.subtitle")})]}),t.jsx("button",{className:"icon-btn","data-action":"refresh",title:e("artificial.refresh"),"aria-label":e("artificial.refresh"),onClick:()=>{n()},children:t.jsx(V,{size:14})})]}),r==="loading"&&t.jsxs("div",{className:"art-loading","data-state":"loading",children:[t.jsx(W,{variant:"list"}),t.jsx("span",{className:"art-sr-only",role:"status",children:e("artificial.loading")})]}),r==="error"&&t.jsxs("div",{className:"art-state",role:"alert","data-state":"error",children:[t.jsx("div",{className:"art-state-title",children:e("artificial.loadFailed")}),t.jsx("button",{className:"btn sm","data-action":"retry",onClick:()=>{n()},children:e("common.retry")})]}),r==="ready"&&!x.length&&t.jsxs("div",{className:"art-state","data-state":"empty",children:[t.jsx("div",{className:"art-state-title",children:e("artificial.empty.title")}),t.jsx("p",{children:e("artificial.empty.body")}),w&&t.jsx("button",{className:"btn primary sm","data-action":"go-coding",onClick:()=>y("coding"),children:e("artificial.empty.cta")})]}),r==="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:e(N(a.kind).labelKey)}),t.jsx("div",{className:"newtab-grid art-grid",children:a.items.map(P)})]},a.kind))})]})})}export{wa as ArtificialView};
@@ -0,0 +1 @@
1
+ import{d as o,j as e,u as pe}from"./index-BOzsniE1.js";import{J as Ye,an as Qe,sG as se,g2 as Ze,lo as et,aR as tt,dy as at,gg as nt,gc as it,it as st,io as lt,hd as ot,iw as rt,sH as dt,h as ut,b as ct,fR as ie,a_ as mt,sI as ht,sJ as $e,sK as Me,eb as Re,sL as Fe,a7 as De,T as Te,iq as be,aA as bt,aS as xt,sM as pt,bw as xe,sN as vt,sO as gt,bu as jt,bv as ft,K as yt,N as Nt,a2 as _t,h7 as Ct,sP as kt,sQ as wt,q as St,sR as Et,sS as Pt,u as $t}from"./appStore-CI1_L5OS.js";import{C as Rt}from"./CapabilityMenu-DJaZ_Cyt.js";import{u as Ft}from"./gestures-dqncPOwo.js";import{a as Dt,C as Tt}from"./Chrome-CFonajM4.js";import{d as zt,e as At,f as Mt,g as It}from"./canvasPrefs-CvE7mgyq.js";import{R as Ht}from"./rotate-ccw-DdkrbRAB.js";import"./messages-CKtabOqy.js";import{C as qt}from"./circle-question-mark-BM4ZRxQS.js";const Lt=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],Vt=Ye("bell",Lt);function Ot({controller:i,open:c,title:b,onClose:C,children:h}){const[g]=o.useState(()=>document.createElement("div"));g.className="auto-extension";const a=o.useRef(null),k=o.useRef(C);k.current=C;const v=o.useRef(b);return v.current=b,o.useEffect(()=>{if(!(!i||!c)){try{a.current=i.open({id:"automation-context",title:()=>v.current,mount:f=>(f.appendChild(g),()=>g.remove()),onClose:()=>k.current()})}catch{k.current()}return()=>{a.current?.close(),a.current=null}}},[i,c,g]),c?i?Qe.createPortal(h,g):e.jsx("div",{className:"auto-extension auto-extension-inline",children:h}):null}const sa=["reminder","briefing","table","button"];function Wt(i,c){return i?i==="briefing"||i==="button"?[{...se("agent_run"),prompt:c(`automation.ux.${i}.prompt`)}]:[{...se("notify"),title:c(`automation.ux.${i}.name`),body:c(`automation.ux.${i}.body`)}]:[se("notify")]}function ze(i,c,b){if(i.type==="notify")return i.title.trim()?null:"notify";if(i.type==="agent_run")return i.agentSlug?i.prompt.trim()?null:"prompt":"agent";if(i.type==="db_row_add"||i.type==="db_row_edit"){if(!/\.db$/i.test(i.dbPath.trim()))return"table";if(!i.cells.some(h=>h.k.trim()))return"cells";if(i.type==="db_row_edit"){if(c!=="db_changed"&&(!i.rowId.trim()&&!i.matchColumn.trim()||i.rowFrom.trim()))return"row";if(i.matchColumn.trim()&&!i.matchValue.trim())return"match"}return null}const C=b.find(h=>h.name===i.tool);if(!C)return"tool";if((C.parameters.required||[]).some(h=>!(i.argValues[h]||"").trim()))return"args";for(const[h,g]of Object.entries(i.argValues)){if(!g.trim())continue;const a=C.parameters.properties?.[h];if(a?.type==="number"&&!Number.isFinite(Number(g)))return"args";if(a?.type==="object"||a?.type==="array")try{const k=JSON.parse(g);if(a.type==="array"?!Array.isArray(k):!k||typeof k!="object"||Array.isArray(k))return"json"}catch{return"json"}}return null}function Bt(i){return(i||[]).map(c=>({value:`{{row.${c.id}}}`,label:c.name}))}const Ut=i=>({x:0,y:i*132,w:244,h:84}),Kt=({nodes:i,selected:c,onSelect:b,children:C})=>{const{t:h}=pe(),g=o.useId().replace(/:/g,""),a=o.useRef(null),[k,v]=o.useState({}),[f,$]=o.useState(zt),[M,R]=o.useState(At),x=Ze(a),m=new Map(i.map((n,l)=>[n.id,k[n.id]||Ut(l)])),P=i.map(n=>n.id).join(","),p=Ft(a,x,{boxes:()=>m,identity:()=>P,commit:n=>v(l=>({...l,...Object.fromEntries(n)})),hitKey:n=>n.closest("[data-flow-node]")?.dataset.flowNode||null,onEnterEdit:b,onDoubleClick:n=>{n&&b(n)},minW:244,minH:84,repel:!0},f);o.useEffect(()=>p.bind(a.current),[p.bind]),o.useEffect(()=>x.bindWheel(a.current),[x.bindWheel]);const D=o.useRef(()=>x.fitTo([...m.values()],64));D.current=()=>x.fitTo([...m.values()],64),o.useEffect(()=>{v({});const n=requestAnimationFrame(()=>D.current());return()=>cancelAnimationFrame(n)},[P]),o.useEffect(()=>{const n=new ResizeObserver(()=>D.current());return a.current&&n.observe(a.current),()=>n.disconnect()},[]);const I=n=>p.live?.get(n)||m.get(n);return e.jsx("div",{className:"auto-canvas-shell am-app",children:e.jsxs("div",{className:"auto-canvas amx-stage",ref:a,tabIndex:0,"aria-label":h("automation.ux.flow"),onPointerUpCapture:n=>{if(p.busy)return;const l=document.elementFromPoint(n.clientX,n.clientY)?.closest("[data-flow-node]");l&&a.current?.contains(l)&&b(l.dataset.flowNode)},children:[e.jsx("div",{className:"amx-stage-grid",style:et(x.vp)}),e.jsxs("div",{className:"auto-canvas-world",style:{transform:`translate(${x.vp.x}px, ${x.vp.y}px) scale(${x.vp.z})`},children:[e.jsxs("svg",{className:"auto-canvas-edges","aria-hidden":"true",children:[e.jsx("defs",{children:e.jsx("marker",{id:g,markerWidth:"8",markerHeight:"8",refX:"6",refY:"3",orient:"auto",children:e.jsx("path",{d:"M0,0 L6,3 L0,6",fill:"none",stroke:"currentColor"})})}),i.slice(1).map((n,l)=>{const y=I(i[l].id),w=I(n.id),H=y.x+y.w/2,q=y.y+y.h,X=w.x+w.w/2,V=w.y;return e.jsx("path",{d:`M${H},${q} C${H},${q+28} ${X},${V-28} ${X},${V}`,markerEnd:`url(#${g})`},n.id)})]}),i.map(n=>{const l=I(n.id);return e.jsxs("div",{"data-flow-node":n.id,role:"button",tabIndex:0,"aria-pressed":c===n.id,className:`auto-flow-node ${c===n.id?"selected":""}`,style:{left:l.x,top:l.y,width:l.w,height:l.h},onClick:()=>b(n.id),onKeyDown:y=>{y.key==="Enter"&&(y.preventDefault(),b(n.id))},children:[e.jsx("span",{className:"auto-flow-icon",children:n.icon}),e.jsx("strong",{children:n.title}),e.jsx("span",{className:"auto-flow-status",title:h(n.ready?"automation.ux.ready":"automation.ux.incomplete"),children:n.ready?e.jsx(tt,{size:13}):e.jsx(at,{size:13})}),e.jsx("span",{className:"auto-flow-subtitle",children:n.subtitle})]},n.id)}),p.marquee&&e.jsx("div",{className:"amx-stage-marquee",style:{left:p.marquee.x,top:p.marquee.y,width:p.marquee.w,height:p.marquee.h}})]}),C&&e.jsx("div",{className:"amx-stage-tools auto-canvas-tools",children:C}),e.jsx(Dt,{zoom:x.vp.z,onZoomBy:n=>{const{w:l,h:y}=nt(a.current);x.setVp(it(x.vp,x.vp.z*n,l/2,y/2))},onFit:()=>D.current(),snap:f,onSnap:n=>{$(n),It(n)},mini:M,onMini:n=>{R(n),Mt(n)},extra:e.jsx("button",{type:"button",title:h("automation.ux.arrange"),onClick:()=>{v({}),requestAnimationFrame(()=>D.current())},children:e.jsx(Ht,{size:12})})}),M&&e.jsx(Tt,{hostRef:a,vp:x.vp,items:i.map(n=>({key:n.id,kind:"card",box:I(n.id)})),onCenter:x.centerOn})]})})},Ae=({label:i,value:c,onChange:b,multiline:C,maxLength:h=4e3,placeholder:g,columns:a,hasRow:k})=>{const{t:v}=pe(),f=o.useId(),$=o.useRef(null),M=o.useRef({start:c.length,end:c.length}),R=m=>{if(!m)return;const{start:P,end:p}=M.current;c.length-(p-P)+m.length>h||(b(c.slice(0,P)+m+c.slice(p)),requestAnimationFrame(()=>{$.current?.focus(),$.current?.setSelectionRange(P+m.length,P+m.length)}))},x={id:f,ref:$,value:c,maxLength:h,placeholder:g,onChange:m=>b(m.target.value),onSelect:m=>{M.current={start:m.currentTarget.selectionStart??c.length,end:m.currentTarget.selectionEnd??c.length}}};return e.jsxs("div",{className:"field auto-template-field",children:[e.jsxs("div",{className:"auto-field-heading",children:[e.jsx("label",{htmlFor:f,children:i}),e.jsxs("select",{"aria-label":v("automation.ux.insertVariable",{field:i}),value:"",onChange:m=>R(m.target.value),children:[e.jsx("option",{value:"",children:v("automation.ux.variables")}),e.jsx("option",{value:"{{today}}",children:v("automation.ux.today")}),e.jsx("option",{value:"{{now}}",children:v("automation.ux.now")}),k&&e.jsxs("optgroup",{label:v("automation.ux.triggerRow"),children:[e.jsx("option",{value:"{{row.id}}",children:v("automation.ux.rowId")}),Bt(a).map(m=>e.jsx("option",{value:m.value,children:m.label},m.value))]})]})]}),C?e.jsx("textarea",{...x}):e.jsx("input",{type:"text",...x})]})};function Gt(){const i=new Date(Date.now()+36e5);i.setMinutes(0,0,0);const c=b=>String(b).padStart(2,"0");return`${i.getFullYear()}-${c(i.getMonth()+1)}-${c(i.getDate())}T${c(i.getHours())}:00`}const Jt=({editing:i,starter:c,fixedManual:b,onSaved:C,onCancel:h,extendView:g})=>{const{t:a}=pe(),k=st(),v=lt(),f=v.actionsCatalog,[$,M]=o.useState(i?.desc||(c?a(`automation.ux.${c}.name`):"")),[R,x]=o.useState("trigger"),[m,P]=o.useState(!1),p=t=>{x(t),P(!0)},[D,I]=o.useState(i?.enabled??!!b),n=i?.cond,[l,y]=o.useState(n?n.type==="event_seen"?"event_seen":n.type==="file_chars_gte"?"file_chars_gte":n.type==="manual"?"manual":n.type==="db_changed"?"db_changed":"timer":b||c==="button"?"manual":c==="table"?"db_changed":"timer"),[w,H]=o.useState(n?.type==="at"?"at":n?.type==="every"?"every":"daily_at"),[q,X]=o.useState(n?.type==="daily_at"?n.time:"09:00"),V=!!i&&ot(i),[Y,Ie]=o.useState(n?.type==="at"&&!V?n.datetime.replace(" ","T"):Gt()),Q=n?.type==="every"?/^(\d+)([mhd])$/.exec(n.interval):null,[Z,He]=o.useState(Q?Q[1]:"1"),[ve,qe]=o.useState(Q?Q[2]:"h"),[le,Le]=o.useState(n?.type==="event_seen"?n.match:""),[oe,Ve]=o.useState(n?.type==="file_chars_gte"?n.path:""),[re,Oe]=o.useState(n?.type==="file_chars_gte"?String(n.n):"100"),[F,We]=o.useState(n?.type==="db_changed"?n.path:""),[z,ge]=o.useState(n?.type==="db_changed"?n.event:"row_added"),[L,je]=o.useState(()=>rt(n)),fe=(t,u)=>je(r=>u?r.includes(t)?r:[...r,t]:r.filter(s=>s!==t)),[de,Be]=o.useState(n?.type==="db_changed"&&n.equals||""),[O,ue]=o.useState(()=>dt(n)),ce=(t,u)=>ue(r=>r.map((s,d)=>d===t?{...s,...u}:s));o.useEffect(()=>{ut()},[]);const ye=ct(t=>t.files),W=o.useMemo(()=>ye.filter(t=>/\.db$/i.test(t)),[ye]);o.useEffect(()=>{for(const t of W)ie.getState().load(t,t)},[W]);const Ne=ie(mt(t=>W.filter(u=>t.entries[u]?.data?.source!==void 0))),ee=o.useMemo(()=>W.filter(t=>!Ne.includes(t)),[W,Ne]),B=ie(t=>l==="db_changed"&&F?t.entries[F]?.data?.columns:void 0),U=o.useMemo(()=>B?.filter(t=>t.type!=="formula"&&t.type!=="lookup"),[B]),[S,te]=o.useState(()=>i?ht(i):Wt(c,a)),[me,Ue]=o.useState(i&&!i.actions?.length&&!i.agentSlug&&i.prompt||""),[K,_e]=o.useState(()=>$e(i,l)),Ce=o.useRef(!1);o.useEffect(()=>{!i&&!Ce.current&&_e($e(null,l))},[l,i]);const[G,ke]=o.useState(!1),[we,ae]=o.useState(""),Ke=t=>{if(S.length>=24)return;const u=se(t);te(r=>[...r,u]),p(String(u.key))},Se=S.some(t=>t.type==="agent_run"),j=(t,u)=>te(r=>r.map(s=>s.key===t?{...s,...u}:s)),Ee=(t,u)=>te(r=>{const s=t+u;if(s<0||s>=r.length)return r;const d=[...r];return[d[t],d[s]]=[d[s],d[t]],d});if(Me(i))return e.jsxs("div",{className:"auto-builder",children:[e.jsxs("div",{className:"auto-builder-title",children:[e.jsx(Re,{size:17})," ",a("automation.builder.editTitle")]}),e.jsx("div",{className:"auto-node",children:e.jsx("div",{className:"auto-hint",children:a("automation.builder.unsupported")})}),e.jsx("div",{className:"auto-builder-actions",children:e.jsx("button",{className:"btn ghost",onClick:()=>h?h():v.closeBuilder(),children:a("common.cancel")})})]});const Pe=!(l==="timer"&&(w==="daily_at"&&!/^\d{1,2}:\d{2}$/.test(q)||w==="at"&&!Y||w==="every"&&(!Number.isInteger(Number(Z))||Number(Z)<1))||l==="event_seen"&&!le.trim()||l==="file_chars_gte"&&(!oe.trim()||!(Number(re)>0))||l==="db_changed"&&(!/\.db$/i.test(F.trim())||z==="cell_changed"&&!L.length||O.length>Fe||O.some(t=>t.column.trim()&&(t.op==="eq"||t.op==="ne")&&!t.value.trim()))),E=[];$.trim()||E.push({node:"trigger",text:a("automation.ux.issue.name")}),Pe||E.push({node:"trigger",text:a("automation.ux.issue.trigger")}),!S.length&&(!i||l==="manual")&&E.push({node:"review",text:a("automation.ux.issue.steps")}),S.forEach((t,u)=>{const r=ze(t,l,f);r&&E.push({node:String(t.key),text:`${u+1}. ${a(`automation.ux.issue.${r}`)}`})}),l!=="timer"&&l!=="manual"&&(!K.trim()||!Number.isFinite(Number(K))||Number(K)<0)&&E.push({node:"review",text:a("automation.ux.issue.cooldown")});const ne=E.length===0,Ge=async()=>{if(!ne||G)return;const t=l==="timer"?w:l;if(t==="at"&&(Ct(Y)?.getTime()??0)<Date.now()-5*6e4){ae(a("automation.builder.atPast"));return}const u=d=>ie.getState().entries[d]?.data?.source!==void 0;if([...t==="db_changed"?[F.trim()]:[],...S.filter(d=>d.type==="db_row_add"||d.type==="db_row_edit").map(d=>d.dbPath.trim())].filter(Boolean).some(u)){ae(a("automation.builder.dbNoteView"));return}ke(!0),ae("");const s=kt(S,f);try{const d=await wt(St(),{id:i?.id,actor:"user",desc:$.trim(),cond_type:t,time:t==="daily_at"?q:void 0,datetime:t==="at"?Y:void 0,interval:t==="every"?`${Math.floor(Number(Z))}${ve}`:void 0,match:t==="event_seen"?le.trim():void 0,path:t==="file_chars_gte"?oe.trim():t==="db_changed"?F.trim():void 0,n:t==="file_chars_gte"?Number(re):void 0,event:t==="db_changed"?z:void 0,column_id:t==="db_changed"&&z==="cell_changed"?L[0]:void 0,column_ids:t==="db_changed"&&z==="cell_changed"&&L.length>1?L:void 0,equals:t==="db_changed"&&z==="cell_changed"&&de.trim()?de.trim():void 0,where:t==="db_changed"?Pt(O):void 0,vault:t==="db_changed"&&i?.cond.type==="db_changed"?i.cond.vault:void 0,prompt:S.length?void 0:me.trim()||void 0,cooldown_hours:Et(l,K),actions:S.length?s:null,enabled:D});if(C){v.bump(),C(d);return}v.acceptSaved(d),$t.getState().toast(a("automation.ux.saved"))}catch(d){ae(String(d?.message||d))}finally{ke(!1)}},he=t=>t==="notify"?e.jsx(Vt,{size:14}):t==="agent_run"?e.jsx(yt,{size:14}):t==="db_row_add"||t==="db_row_edit"?e.jsx(Nt,{size:14}):e.jsx(_t,{size:14}),Je=[{id:"trigger",title:a("automation.builder.trigger"),subtitle:a(`automation.builder.${l==="timer"?"condTimer":l==="manual"?"condManual":l==="db_changed"?"condDb":l==="event_seen"?"condEvent":"condFile"}`),icon:e.jsx(De,{size:17}),ready:Pe&&!!$.trim()},...S.map((t,u)=>({id:String(t.key),title:`${u+1}. ${a(`automation.step.${t.type}`)}`,subtitle:t.title||t.prompt||t.dbPath||t.tool||a("automation.ux.setupHint"),icon:he(t.type),ready:!ze(t,l,f)})),...!S.length&&i&&l!=="manual"?[{id:"muse",title:a("automation.builder.museFallback"),subtitle:me||a("automation.builder.museFallbackHint"),icon:e.jsx(Te,{size:17}),ready:!0}]:[],{id:"review",title:a("automation.ux.finish"),subtitle:a(ne?"automation.ux.allReady":"automation.ux.finishHint"),icon:e.jsx(be,{size:17}),ready:ne}],Xe=e.jsxs(e.Fragment,{children:[e.jsxs(Rt,{label:a("automation.ux.addStep"),className:"btn ghost sm",disabled:G||S.length>=24,items:["notify","agent_run","db_row_add","db_row_edit","tool_call"].map(t=>({id:t,label:a(`automation.step.${t}`),icon:he(t),disabled:t==="tool_call"&&!f.length,onSelect:()=>Ke(t)})),children:[e.jsx(bt,{size:14}),a("automation.ux.addStep")]}),e.jsx("button",{className:"icon-btn",title:a("automation.ux.help"),onClick:()=>p("help"),children:e.jsx(qt,{size:15})})]});return e.jsxs("div",{className:`auto-builder auto-workflow-builder ${b?"auto-builder-embedded":""}`,children:[e.jsxs("div",{className:"auto-builder-title",children:[e.jsx(Re,{size:17}),e.jsx("span",{children:a(i?"automation.builder.editTitle":"automation.builder.title")}),e.jsx("button",{className:"btn ghost sm",disabled:G,onClick:()=>h?h():v.closeBuilder(),children:a("common.cancel")})]}),e.jsx("div",{className:"auto-builder-workspace",hidden:!g&&m,children:e.jsx(Kt,{nodes:Je,selected:m?R:"",onSelect:p,children:Xe})}),e.jsxs(Ot,{controller:g,open:m,title:a("automation.ux.setup"),onClose:()=>P(!1),children:[!g&&e.jsxs("button",{className:"btn ghost sm auto-inline-back",onClick:()=>P(!1),children:[e.jsx(xt,{size:14}),a("automation.ux.flow")]}),e.jsxs("div",{className:"auto-inspector","aria-label":a("automation.ux.setup"),children:[e.jsxs("div",{className:"auto-node",hidden:R!=="trigger",children:[e.jsxs("div",{className:"auto-node-head",children:[e.jsx("span",{className:"auto-ic",children:e.jsx(De,{size:14})}),a("automation.builder.trigger")]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.desc")}),e.jsx("input",{"aria-label":a("automation.builder.desc"),type:"text",value:$,maxLength:200,placeholder:a("automation.builder.descPh"),onChange:t=>M(t.target.value)})]}),!b&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.condType")}),e.jsxs("div",{className:"auto-seg",children:[e.jsx("button",{className:l==="timer"?"active":"",onClick:()=>y("timer"),children:a("automation.builder.condTimer")}),e.jsx("button",{className:l==="event_seen"?"active":"",onClick:()=>y("event_seen"),children:a("automation.builder.condEvent")}),e.jsx("button",{className:l==="file_chars_gte"?"active":"",onClick:()=>y("file_chars_gte"),children:a("automation.builder.condFile")}),e.jsx("button",{className:l==="db_changed"?"active":"",onClick:()=>y("db_changed"),children:a("automation.builder.condDb")}),e.jsx("button",{className:l==="manual"?"active":"",onClick:()=>y("manual"),children:a("automation.builder.condManual")})]})]}),l==="db_changed"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbPath")}),e.jsxs("select",{value:F,onChange:t=>{We(t.target.value),je([])},children:[e.jsx("option",{value:"",children:a("automation.builder.dbPickDb")}),ee.map(t=>e.jsx("option",{value:t,children:t},t)),F&&!ee.includes(F)&&e.jsx("option",{value:F,children:F})]})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbEvent")}),e.jsxs("div",{className:"auto-seg",children:[e.jsx("button",{className:z==="row_added"?"active":"",onClick:()=>ge("row_added"),children:a("automation.builder.dbEventRow")}),e.jsx("button",{className:z==="cell_changed"?"active":"",onClick:()=>ge("cell_changed"),children:a("automation.builder.dbEventCell")})]})]}),z==="cell_changed"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbColumn")}),e.jsxs("div",{className:"auto-checks",children:[(U??[]).map(t=>e.jsxs("label",{className:"auto-check",children:[e.jsx("input",{type:"checkbox",checked:L.includes(t.id),onChange:u=>fe(t.id,u.target.checked)}),t.name]},t.id)),L.filter(t=>!(U??[]).some(u=>u.id===t)).map(t=>e.jsxs("label",{className:"auto-check",children:[e.jsx("input",{type:"checkbox",checked:!0,onChange:()=>fe(t,!1)}),"(",t,")"]},t)),!U&&e.jsx("span",{className:"auto-hint",children:a("automation.builder.dbColsLoading")})]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbColumnsHint")})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbEquals")}),e.jsx("input",{type:"text",value:de,maxLength:200,placeholder:a("automation.builder.dbEqualsPh"),onChange:t=>Be(t.target.value)})]})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbWhere")}),O.map((t,u)=>e.jsxs("div",{className:"auto-inline",children:[e.jsxs("select",{value:t.column,onChange:r=>ce(u,{column:r.target.value}),children:[e.jsx("option",{value:"",children:a(B?"automation.builder.dbPickCol":"automation.builder.dbColsLoading")}),(B??[]).map(r=>e.jsx("option",{value:r.id,children:r.name},r.id)),t.column&&!(B??[]).some(r=>r.id===t.column)&&e.jsxs("option",{value:t.column,children:["(",t.column,")"]})]}),e.jsx("select",{value:t.op,onChange:r=>ce(u,{op:r.target.value}),children:pt.map(r=>e.jsx("option",{value:r,children:a(r==="eq"?"automation.builder.dbWhereOpEq":r==="ne"?"automation.builder.dbWhereOpNe":r==="empty"?"automation.builder.dbWhereOpEmpty":"automation.builder.dbWhereOpNotEmpty")},r))}),e.jsx("input",{type:"text",value:t.value,maxLength:200,disabled:t.op==="empty"||t.op==="notempty",placeholder:a("automation.builder.dbWhereValPh"),onChange:r=>ce(u,{value:r.target.value})}),e.jsx("button",{className:"icon-btn",title:a("common.delete"),onClick:()=>ue(r=>r.filter((s,d)=>d!==u)),children:e.jsx(xe,{size:12})})]},u)),e.jsx("button",{className:"icon-btn",title:a("automation.builder.dbWhereAdd"),disabled:O.length>=Fe,onClick:()=>ue(t=>[...t,{column:"",op:"eq",value:""}]),children:"+"}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbWhereHint")})]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbHint")})]}),l==="manual"&&e.jsx("div",{className:"auto-hint",children:a("automation.builder.manualHint")}),l==="timer"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.timerMode")}),e.jsxs("div",{className:"auto-seg",children:[e.jsx("button",{className:w==="daily_at"?"active":"",onClick:()=>H("daily_at"),children:a("automation.builder.timerDaily")}),e.jsx("button",{className:w==="at"?"active":"",onClick:()=>H("at"),children:a("automation.builder.timerOnce")}),e.jsx("button",{className:w==="every"?"active":"",onClick:()=>H("every"),children:a("automation.builder.timerEvery")})]})]}),w==="daily_at"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.time")}),e.jsx("input",{type:"time",value:q,onChange:t=>X(t.target.value)})]}),w==="at"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.datetime")}),e.jsx("input",{type:"datetime-local",value:Y,onChange:t=>Ie(t.target.value)}),e.jsx("div",{className:"auto-hint",children:a(V?"automation.builder.expiredReset":"automation.builder.onceHint")})]}),w==="every"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.interval")}),e.jsxs("div",{className:"auto-inline",children:[e.jsx("input",{type:"number",value:Z,min:1,style:{width:90},onChange:t=>He(t.target.value)}),e.jsxs("select",{value:ve,onChange:t=>qe(t.target.value),children:[e.jsx("option",{value:"m",children:a("automation.builder.unitM")}),e.jsx("option",{value:"h",children:a("automation.builder.unitH")}),e.jsx("option",{value:"d",children:a("automation.builder.unitD")})]})]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.everyHint")})]})]}),l==="event_seen"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.match")}),e.jsx("input",{type:"text",list:"auto-event-catalog",value:le,maxLength:120,placeholder:a("automation.builder.matchPh"),onChange:t=>Le(t.target.value)}),e.jsxs("datalist",{id:"auto-event-catalog",children:[vt.map(t=>e.jsx("option",{value:t},t)),gt().map(t=>e.jsx("option",{value:t.name,label:t.label},t.name))]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.matchHint")})]}),l==="file_chars_gte"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.path")}),e.jsx("input",{type:"text",value:oe,placeholder:"~/Forsion/Notes/xxx.md",onChange:t=>Ve(t.target.value)})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.chars")}),e.jsx("input",{type:"number",value:re,min:1,onChange:t=>Oe(t.target.value)})]})]})]}),S.map((t,u)=>{const r=t.type==="tool_call"?f.find(s=>s.name===t.tool):void 0;return e.jsxs("div",{className:"auto-node",hidden:R!==String(t.key),children:[e.jsxs("div",{className:"auto-node-head",children:[e.jsx("span",{className:"auto-ic",children:he(t.type)}),a("automation.builder.stepN",{n:String(u+1)})," · ",a(`automation.step.${t.type}`),e.jsxs("span",{className:"auto-step-tools",children:[e.jsx("button",{className:"icon-btn",disabled:u===0,title:a("automation.builder.moveUp"),onClick:()=>Ee(u,-1),children:e.jsx(jt,{size:12})}),e.jsx("button",{className:"icon-btn",disabled:u===S.length-1,title:a("automation.builder.moveDown"),onClick:()=>Ee(u,1),children:e.jsx(ft,{size:12})}),e.jsx("button",{className:"icon-btn",title:a("common.delete"),onClick:()=>{te(s=>s.filter(d=>d.key!==t.key)),p("trigger")},children:e.jsx(xe,{size:12})})]})]}),t.type==="notify"&&e.jsxs(e.Fragment,{children:[e.jsx(Ae,{label:a("automation.builder.notifyTitle"),value:t.title,maxLength:200,placeholder:a("automation.builder.notifyTitlePh"),onChange:s=>j(t.key,{title:s}),columns:U,hasRow:l==="db_changed"}),e.jsx(Ae,{label:a("automation.builder.notifyBody"),value:t.body,multiline:!0,onChange:s=>j(t.key,{body:s}),columns:U,hasRow:l==="db_changed"}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.notifyHint")})]}),t.type==="agent_run"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.runner")}),e.jsxs("select",{value:t.agentSlug,onChange:s=>j(t.key,{agentSlug:s.target.value}),children:[e.jsx("option",{value:"",children:a("automation.builder.runnerPick")}),k.filter(s=>s.slug!=="muse").map(s=>e.jsx("option",{value:s.slug,children:s.name},s.slug))]})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.prompt")}),e.jsx("textarea",{value:t.prompt,maxLength:500,placeholder:a("automation.builder.promptPh"),onChange:s=>j(t.key,{prompt:s.target.value})})]})]}),(t.type==="db_row_add"||t.type==="db_row_edit")&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbPath")}),e.jsxs("select",{value:t.dbPath,onChange:s=>j(t.key,{dbPath:s.target.value}),children:[e.jsx("option",{value:"",children:a("automation.builder.dbPickDb")}),ee.map(s=>e.jsx("option",{value:s,children:s},s)),t.dbPath&&!ee.includes(t.dbPath)&&e.jsx("option",{value:t.dbPath,children:t.dbPath})]})]}),t.type==="db_row_edit"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbRowId")}),e.jsx("input",{type:"text",value:t.rowId,placeholder:a(l==="db_changed"?"automation.builder.dbRowIdPh":"automation.builder.dbRowIdRequired"),onChange:s=>j(t.key,{rowId:s.target.value})})]}),t.type==="db_row_edit"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbRowFrom")}),e.jsx("input",{type:"text",value:t.rowFrom,maxLength:200,placeholder:a("automation.builder.dbRowFromPh"),onChange:s=>j(t.key,{rowFrom:s.target.value})})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbMatch")}),e.jsxs("div",{className:"auto-inline",children:[e.jsx("input",{type:"text",value:t.matchColumn,maxLength:200,placeholder:a("automation.builder.dbCellKey"),style:{width:120},onChange:s=>j(t.key,{matchColumn:s.target.value})}),e.jsx("input",{type:"text",value:t.matchValue,maxLength:2e3,placeholder:a("automation.builder.dbMatchValPh"),onChange:s=>j(t.key,{matchValue:s.target.value})})]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbTargetHint")})]})]}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbCells")}),t.cells.map((s,d)=>e.jsxs("div",{className:"auto-inline",children:[e.jsx("input",{type:"text",value:s.k,placeholder:a("automation.builder.dbCellKey"),style:{width:120},onChange:A=>j(t.key,{cells:t.cells.map((N,T)=>T===d?{...N,k:A.target.value}:N)})}),e.jsx("input",{type:"text",value:s.v,placeholder:a(d===0?"automation.builder.dbCellValPh":"automation.builder.dbCellVal"),onChange:A=>j(t.key,{cells:t.cells.map((N,T)=>T===d?{...N,v:A.target.value}:N)})}),e.jsx("button",{className:"icon-btn",title:a("common.delete"),disabled:t.cells.length<=1,onClick:()=>j(t.key,{cells:t.cells.filter((A,N)=>N!==d)}),children:e.jsx(xe,{size:12})})]},d)),e.jsx("button",{className:"icon-btn",title:a("automation.builder.dbCellAdd"),onClick:()=>j(t.key,{cells:[...t.cells,{k:"",v:""}]}),children:"+"}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.dbCellsHint")})]}),t.type==="db_row_add"&&e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.dbSkipIfEmpty")}),e.jsx("input",{type:"text",value:t.skipIfEmpty,maxLength:200,placeholder:a("automation.builder.dbSkipIfEmptyPh"),onChange:s=>j(t.key,{skipIfEmpty:s.target.value})})]})]}),t.type==="tool_call"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.tool")}),e.jsxs("select",{value:t.tool,onChange:s=>{const d=f.find(N=>N.name===s.target.value),A=Object.fromEntries((d?.parameters.required||[]).filter(N=>d?.parameters.properties?.[N]?.type==="boolean").map(N=>[N,"false"]));j(t.key,{tool:s.target.value,argValues:A})},children:[e.jsx("option",{value:"",children:a("automation.builder.toolPick")}),f.map(s=>e.jsxs("option",{value:s.name,children:[s.name,s.dangerous?" ⚠":""]},s.name))]}),r&&e.jsxs("div",{className:"auto-hint",children:[r.description,r.dangerous?` · ${a("automation.builder.dangerous")}`:""]})]}),r&&Object.entries(r.parameters.properties||{}).map(([s,d])=>{const A=(r.parameters.required||[]).includes(s),N=`${s}${A?" *":""}`,T=t.argValues[s]||"",J=_=>j(t.key,{argValues:{...t.argValues,[s]:_}});return e.jsxs("div",{className:"field",children:[e.jsx("label",{title:d.description||"",children:N}),d.enum?.length?e.jsxs("select",{value:T,onChange:_=>J(_.target.value),children:[e.jsx("option",{value:""}),d.enum.map(_=>e.jsx("option",{value:_,children:_},_))]}):d.type==="boolean"?e.jsxs("label",{className:"auto-check",children:[e.jsx("input",{type:"checkbox",checked:T==="true",onChange:_=>J(_.target.checked?"true":"false")})," ",d.description||""]}):d.type==="number"?e.jsx("input",{type:"number",value:T,onChange:_=>J(_.target.value)}):d.type==="string"?e.jsx("textarea",{rows:2,value:T,placeholder:d.description||"",onChange:_=>J(_.target.value)}):e.jsx("textarea",{rows:2,value:T,placeholder:`JSON — ${d.description||""}`,onChange:_=>J(_.target.value)})]},s)})]})]},t.key)}),S.length===0&&i&&l!=="manual"&&e.jsxs("div",{className:"auto-node auto-node-muse",hidden:R!=="muse",children:[e.jsxs("div",{className:"auto-node-head",children:[e.jsx("span",{className:"auto-ic",children:e.jsx(Te,{size:14})}),a("automation.builder.museFallback")]}),e.jsx("div",{className:"auto-hint",children:a("automation.builder.museFallbackHint")}),e.jsxs("div",{className:"field",children:[e.jsx("label",{children:a("automation.builder.prompt")}),e.jsx("textarea",{value:me,maxLength:500,placeholder:a("automation.builder.promptPh"),onChange:t=>Ue(t.target.value)})]})]}),e.jsxs("div",{className:"auto-node auto-review",hidden:R!=="review",children:[e.jsxs("div",{className:"auto-node-head",children:[e.jsx(be,{size:16}),a("automation.ux.review")]}),e.jsx("p",{className:"auto-hint",children:a("automation.ux.enableHint")}),e.jsxs("label",{className:"auto-check",children:[e.jsx("input",{type:"checkbox",checked:D,onChange:t=>I(t.target.checked)}),a("automation.ux.enabledLabel")]}),E.length?e.jsxs("div",{className:"auto-validation",role:"status",children:[e.jsx("strong",{children:a("automation.ux.checklist")}),E.map((t,u)=>e.jsx("button",{onClick:()=>p(t.node),children:t.text},u))]}):e.jsxs("p",{className:"auto-ready",children:[e.jsx(be,{size:14}),a("automation.ux.allReady")]}),l!=="timer"&&l!=="manual"&&e.jsxs("div",{className:"auto-guard",children:[e.jsx("label",{children:a("automation.builder.cooldown")}),e.jsx("input",{type:"number",value:K,min:Se?1:l==="db_changed"?0:.25,step:"1",onChange:t=>{Ce.current=!0,_e(t.target.value)}}),e.jsx("span",{className:"auto-hint",children:a(Se?"automation.builder.cooldownAgentHint":l==="db_changed"?"automation.builder.cooldownDbHint":"automation.builder.cooldownHint")})]})]}),e.jsxs("div",{className:"auto-node",hidden:R!=="help",children:[e.jsx("h3",{children:a("automation.ux.flow")}),e.jsx("p",{className:"auto-hint",children:a("automation.ux.canvasOrder")}),e.jsx("p",{className:"auto-hint",children:a("automation.ux.nativeHint")})]})]})]}),e.jsxs("div",{className:"auto-builder-actions auto-builder-footer",children:[e.jsx("div",{className:"auto-save-status","aria-live":"polite",children:we?e.jsx("span",{role:"alert",children:we}):E.length?e.jsxs("button",{onClick:()=>p(E[0].node),children:[E[0].text,E.length>1?` (+${E.length-1})`:""]}):e.jsx("span",{children:a("automation.ux.allReady")})}),e.jsx("button",{className:"btn ghost sm",onClick:()=>p("review"),children:a("automation.ux.review")}),e.jsx("button",{className:"btn sm",disabled:!ne||G,onClick:()=>{Ge()},children:G?"…":a(D?"automation.ux.saveEnabled":"automation.ux.savePaused")})]})]})},la=Object.freeze(Object.defineProperty({__proto__:null,AutomationBuilder:Jt,hasUnsupportedParts:Me},Symbol.toStringTag,{value:"Module"}));export{Ot as A,Vt as B,sa as S,Jt as a,la as b};
@@ -0,0 +1 @@
1
+ import{j as a,u as F,d,r as la}from"./index-BOzsniE1.js";import{t as oa,dz as ra,j$ as ia,jW as Y,k1 as ma,k3 as da,jP as ua,kN as fa,k8 as q,ki as ha,k4 as pa,b as J,jQ as ga,jR as xa,jS as ba,jT as ja,kO as j,jV as w,kc as va,ka as Ca,k9 as Na,K as ka,_ as Q,N as W,aA as wa,aC as aa,aq as K,ge as O,fD as Da,kP as ea,kQ as Sa,kR as X,kS as Z,kT as za,fR as Ma,kU as ya,kV as Aa,V as Pa,kW as qa}from"./appStore-CI1_L5OS.js";import"./client-CaivGZFR.js";import{A as Fa}from"./astryxBridge-CH_c5xjo.js";import{u as H}from"./calendarNavStore-BHUNxDx8.js";import{C as Ea}from"./CapabilityMenu-DJaZ_Cyt.js";import{H as Ia}from"./hard-drive-CfWKRoAE.js";import{S as Ta}from"./star-Dxv7XANS.js";import{C as Ra}from"./CheckboxInput-FYXLaZke.js";import{U as La}from"./upload-DqpRRAhG.js";import"./nativeDownload-CNtwSCy0.js";import"./ipc-B6hkgxQL.js";import"./Tooltip-o8ZqIb3L.js";la({"calcfg.prevMonth":{zh:"上个月",en:"Previous month"},"calcfg.nextMonth":{zh:"下个月",en:"Next month"},"calcfg.jumpToDay":{zh:"跳转到这一天",en:"Jump to this day"},"calcfg.cloud":{zh:"云端",en:"Cloud"},"calcfg.title":{zh:"日历",en:"Calendars"},"calcfg.empty":{zh:"还没有加入日历的多维表。",en:"No databases added to the calendar yet."},"calcfg.eventColor":{zh:"事件颜色",en:"Event color"},"calcfg.fetchFailed":{zh:"拉取失败",en:"Fetch failed"},"calcfg.isDefaultAria":{zh:"{name} 是新建默认日历",en:"{name} is the default calendar for new events"},"calcfg.setDefaultAria":{zh:"将 {name} 设为新建默认日历",en:"Make {name} the default calendar for new events"},"calcfg.defaultCalendar":{zh:"新建默认日历",en:"Default calendar for new events"},"calcfg.setAsDefault":{zh:"设为新建默认日历",en:"Set as default for new events"},"calcfg.showInCalendar":{zh:"在日历中显示",en:"Show in calendar"},"calcfg.more":{zh:"更多",en:"More"},"calcfg.addCalendar":{zh:"添加日历",en:"Add calendar"},"calcfg.addDatabase":{zh:"添加多维表",en:"Add database"},"calcfg.subscribeExternal":{zh:"订阅外部日历",en:"Subscribe to external calendar"},"calcfg.subscribeHint":{zh:"粘贴 .ics 订阅地址(Google / Outlook / Apple 日历「密钥地址」都行)",en:"Paste an .ics subscription URL (Google, Outlook, or Apple Calendar's private address all work)"},"calcfg.importIcs":{zh:"导入 .ics 文件",en:"Import .ics file"},"calcfg.fileTooLarge":{zh:"文件过大(> {mb}MB)",en:"File too large (over {mb} MB)"},"calcfg.notIcs":{zh:"这不是一个 .ics 日历文件",en:"That isn't an .ics calendar file"},"calcfg.readFailed":{zh:"读取失败:{msg}",en:"Failed to read: {msg}"},"calcfg.renameCalendar":{zh:"重命名日历",en:"Rename calendar"},"calcfg.renameSub":{zh:"重命名订阅",en:"Rename subscription"},"calcfg.rename":{zh:"重命名",en:"Rename"},"calcfg.refreshNow":{zh:"立即刷新",en:"Refresh now"},"calcfg.unsubscribe":{zh:"取消订阅",en:"Unsubscribe"},"calcfg.setDefaultDb":{zh:"设为默认库",en:"Set as default"},"calcfg.openInNewTab":{zh:"在新标签打开",en:"Open in new tab"},"calcfg.columnMapping":{zh:"日历设置(列映射)",en:"Calendar settings (column mapping)"},"calcfg.removeFromCalendar":{zh:"从日历移除",en:"Remove from calendar"},"calcfg.searchDbPlaceholder":{zh:"搜索要加入日历的多维表…",en:"Search databases to add to the calendar…"},"calcfg.noCandidates":{zh:"没有含日期属性的可添加多维表",en:"No databases with a date property available to add"},"calcfg.footHint":{zh:"只有含「日期」属性的多维表会出现在这里",en:"Only databases with a Date property appear here"},"calcfg.weekStart":{zh:"一周开始于",en:"Week starts on"},"calcfg.weekStart.auto":{zh:"跟随语言({day})",en:"Default ({day})"},"calcfg.weekStart.sun":{zh:"周日",en:"Sunday"},"calcfg.weekStart.mon":{zh:"周一",en:"Monday"}});function Oa(){const{t:s}=F(),n=X(c=>c.pref),p=X(c=>c.setPref),i=c=>s(c===1?"calcfg.weekStart.mon":"calcfg.weekStart.sun"),u=[{value:"auto",label:s("calcfg.weekStart.auto",{day:i(qa())})},{value:0,label:i(0)},{value:1,label:i(1)}],f=u.find(c=>c.value===n)??u[0];return a.jsxs("div",{className:"amx-calcfg-weekstart","data-week-start":n,children:[a.jsx("span",{className:"amx-calcfg-weekstart-label",children:s("calcfg.weekStart")}),a.jsxs(Ea,{label:`${s("calcfg.weekStart")} · ${f.label}`,className:"capability-menu-trigger amx-calcfg-weekstart-btn",selection:!0,items:u.map(c=>({id:`week-start:${c.value}`,label:c.label,selected:c.value===n,onSelect:()=>p(c.value)})),children:[a.jsx("span",{children:f.label}),a.jsx(aa,{size:13})]})]})}function se(){return a.jsx(Fa,{children:a.jsxs("div",{className:"amx-calside",children:[a.jsx(Ha,{}),a.jsx($a,{})]})})}const $=s=>new Date(s.getFullYear(),s.getMonth(),1);function Ha(){const{t:s}=F(),n=oa(t=>(t.mainTabs,((t.api?ra(t.api):null)?.params??{}).__type==="calendar")),p=H(t=>t.visibleStart),i=H(t=>t.visibleEnd),u=H(t=>t.requestJump),f=d.useMemo(()=>ia(new Date),[]),[c,h]=d.useState(()=>$(f));d.useEffect(()=>{if(n&&p&&i){const t=Y(p),b=ma(t,Math.floor(da(Y(i),t)/2));h($(b))}},[n,p,i]);const v=ua(),x=d.useMemo(()=>fa(c),[c,v]),C=q(f,!0),o=t=>{if(!n||!p||!i)return!1;const b=q(t,!0);return b>=p&&b<=i},N=t=>{h($(t)),n&&u(q(t,!0))};return a.jsxs("div",{className:"amx-mini",children:[a.jsxs("div",{className:"amx-mini-head",children:[a.jsx("button",{className:"amx-mini-nav",onClick:()=>h(new Date(c.getFullYear(),c.getMonth()-1,1)),"aria-label":s("calcfg.prevMonth"),children:"‹"}),a.jsx("span",{className:"amx-mini-title",children:ha(c)}),a.jsx("button",{className:"amx-mini-nav",onClick:()=>h(new Date(c.getFullYear(),c.getMonth()+1,1)),"aria-label":s("calcfg.nextMonth"),children:"›"})]}),a.jsx("div",{className:"amx-mini-dow",children:pa().map(t=>a.jsx("span",{children:t},t))}),a.jsx("div",{className:"amx-mini-grid",children:x.map(t=>{const b=t.getMonth()!==c.getMonth(),E=q(t,!0)===C;return a.jsx("button",{className:`amx-mini-day${b?" out":""}${E?" today":""}${o(t)?" band":""}`,onClick:()=>N(t),title:n?s("calcfg.jumpToDay"):void 0,children:t.getDate()},+t)})})]})}function $a(){const{t:s}=F(),n=J(e=>e.vaultRoot)??"",i=J(e=>e.vaultSide)==="cloud"?s("calcfg.cloud"):n.split(/[\\/]/).pop()||n,u=ga(),f=xa(),c=ba(),h=ja(),v=j(e=>e.errors),x=w(e=>e.byVault),C=w(e=>e.setColor),o=w(e=>e.toggleHidden),N=w(e=>e.setDefault),t=w(e=>e.addMember),b=w(e=>e.removeMember),[E,I]=d.useState(!1),[T,D]=d.useState(null),[B,M]=d.useState(null),[m,g]=d.useState(null),[S,y]=d.useState(null),sa=d.useMemo(()=>new Set(u.map(e=>e.db.path)),[u]),V=[...u.map(e=>({db:e.db})),...f.map(e=>({db:e,readonly:!0,kind:"agent"})),...c.map(e=>({db:e,readonly:!0,kind:"other"})),...h.map(e=>({db:e,readonly:!0,kind:"ics"}))],U=va(n,x),ta=e=>{g(null),O(s("calcfg.renameCalendar"),e.name).then(r=>{const l=r?.trim();l&&l!==e.name&&Ma.getState().mutate(e.path,A=>({...A,name:l}))})},z=e=>e.slice(6),_=e=>v[z(e)],na=()=>{O(s("calcfg.subscribeExternal"),"",{label:s("calcfg.subscribeHint")}).then(e=>{const r=e?.trim();r&&j.getState().add(r)})},ca=()=>{const e=document.createElement("input");e.type="file",e.accept=".ics,text/calendar",e.onchange=()=>{const r=e.files?.[0];if(r){if(r.size>Z){M(s("calcfg.fileTooLarge",{mb:Z/1024/1024}));return}M(null),r.text().then(l=>{j.getState().importText(za(l)||r.name.replace(/\.ics$/i,""),l)||M(s("calcfg.notIcs"))}).catch(l=>M(s("calcfg.readFailed",{msg:l?.message||String(l)})))}},e.click()};return a.jsxs("div",{className:"amx-calcfg",children:[a.jsx("div",{className:"amx-calcfg-head",children:s("calcfg.title")}),V.length===0&&a.jsx("div",{className:"amx-calcfg-empty",children:s("calcfg.empty")}),a.jsx("div",{className:"amx-calcfg-list",children:V.map(({db:e,readonly:r,kind:l},A)=>{const R=Ca(n,x,e.path,A),L=!Na(n,x,e.path),P=U?U===e.path:A===0;return a.jsxs("div",{className:"amx-calcfg-row",children:[a.jsx("span",{className:"amx-calcfg-type","aria-hidden":"true",children:l==="agent"?a.jsx(ka,{size:14}):l==="ics"?a.jsx(Q,{size:14}):l==="other"?a.jsx(Ia,{size:14}):a.jsx(W,{size:14})}),a.jsx("span",{className:"amx-calcfg-swatch",style:{background:L?R:"transparent",borderColor:R},children:a.jsx("input",{type:"color",value:R,onChange:k=>C(n,e.path,k.target.value),title:s("calcfg.eventColor")})}),a.jsxs("span",{className:`amx-calcfg-name${L?"":" off"}`,title:_(e.path)||e.name,children:[e.name,l==="ics"&&_(e.path)&&a.jsxs("span",{className:"amx-cal-vault",children:[" · ",s("calcfg.fetchFailed")]}),(()=>{const k=l==="agent"?"":l==="other"?e.vaultLabel||"":i;return k?a.jsxs("span",{className:"amx-cal-vault",children:[" · ",k]}):null})()]}),!r&&a.jsx("button",{className:`amx-calcfg-def${P?" on":""}`,"aria-label":P?s("calcfg.isDefaultAria",{name:e.name}):s("calcfg.setDefaultAria",{name:e.name}),title:s(P?"calcfg.defaultCalendar":"calcfg.setAsDefault"),onClick:()=>N(n,e.path),children:a.jsx(Ta,{size:13,fill:P?"currentColor":"none"})}),a.jsx(Ra,{label:s("calcfg.showInCalendar"),isLabelHidden:!0,size:"sm",value:L,onChange:()=>o(n,e.path)}),(!r||l==="ics")&&a.jsx("button",{className:"amx-calcfg-more",title:s("calcfg.more"),onClick:k=>{const G=k.currentTarget.getBoundingClientRect();g({db:e,ics:l==="ics",x:Math.min(G.left,window.innerWidth-180),y:G.bottom+4})},children:"⋯"})]},e.path)})}),a.jsxs("button",{className:"amx-calcfg-add amx-calcfg-add-main",onClick:e=>{const r=e.currentTarget.getBoundingClientRect();D({x:Math.max(12,r.left),y:r.bottom+4})},children:[a.jsx(wa,{size:14})," ",s("calcfg.addCalendar")," ",a.jsx(aa,{size:13})]}),B&&a.jsx("div",{className:"amx-calcfg-hint",style:{color:"var(--danger)"},children:B}),a.jsx(Oa,{}),T&&a.jsx("div",{className:"amx-db-popwrap",onMouseDown:()=>D(null),children:a.jsxs(K,{className:"amx-db-pop amx-calcfg-addmenu",x:T.x,y:T.y,onMouseDown:e=>e.stopPropagation(),children:[a.jsxs("button",{className:"amx-db-opt",onClick:()=>{D(null),I(!0)},children:[a.jsx(W,{size:14})," ",s("calcfg.addDatabase")]}),a.jsxs("button",{className:"amx-db-opt",onClick:()=>{D(null),na()},children:[a.jsx(Q,{size:14})," ",s("calcfg.subscribeExternal")]}),a.jsxs("button",{className:"amx-db-opt",onClick:()=>{D(null),ca()},children:[a.jsx(La,{size:14})," ",s("calcfg.importIcs")]})]})}),m&&a.jsx("div",{className:"amx-db-popwrap",onMouseDown:()=>g(null),children:a.jsx(K,{className:"amx-db-pop amx-calcfg-menu",x:m.x,y:m.y,onMouseDown:e=>e.stopPropagation(),children:m.ics?a.jsxs(a.Fragment,{children:[!!j.getState().subs.find(e=>e.id===z(m.db.path))?.url&&a.jsx("button",{className:"amx-db-opt",onClick:()=>{j.getState().refresh(z(m.db.path)),g(null)},children:s("calcfg.refreshNow")}),a.jsx("button",{className:"amx-db-opt",onClick:()=>{const e=z(m.db.path),r=m.db.name;g(null),O(s("calcfg.renameSub"),r).then(l=>{l?.trim()&&j.getState().rename(e,l.trim())})},children:s("calcfg.rename")}),a.jsx("button",{className:"amx-db-opt amx-db-opt-danger",onClick:()=>{j.getState().remove(z(m.db.path)),g(null)},children:s("calcfg.unsubscribe")})]}):a.jsxs(a.Fragment,{children:[a.jsx("button",{className:"amx-db-opt",onClick:()=>ta(m.db),children:s("calcfg.rename")}),a.jsx("button",{className:"amx-db-opt",onClick:()=>{N(n,m.db.path),g(null)},children:s("calcfg.setDefaultDb")}),a.jsx("button",{className:"amx-db-opt",onClick:()=>{Da(m.db.path),g(null)},children:s("calcfg.openInNewTab")}),a.jsx("button",{className:"amx-db-opt",onClick:()=>{y(m.db),g(null)},children:s("calcfg.columnMapping")}),a.jsx("button",{className:"amx-db-opt amx-db-opt-danger",onClick:()=>{b(n,m.db.path),g(null)},children:s("calcfg.removeFromCalendar")})]})})}),E&&a.jsx(Wa,{memberPaths:sa,onClose:()=>I(!1),onAdd:(e,r,l)=>{t(n,e.path,r,l),I(!1)}}),S&&a.jsx("div",{className:"amx-db-popwrap",onMouseDown:()=>y(null),children:a.jsx("div",{className:"amx-db-pop amx-calpick-pop",onMouseDown:e=>e.stopPropagation(),children:a.jsx(ea,{dbName:S.name,columns:S.columns,initial:Sa(n,x,S.path),onCancel:()=>y(null),onConfirm:(e,r)=>{t(n,S.path,e,r),y(null)}})})})]})}function Wa({memberPaths:s,onClose:n,onAdd:p}){const{t:i}=F(),u=ya(),[f,c]=d.useState(""),[h,v]=d.useState(null),x=d.useMemo(()=>u.filter(o=>!s.has(o.path)&&o.columns.some(Aa)),[u,s]),C=f?x.filter(o=>o.name.toLowerCase().includes(f.toLowerCase())):x;return a.jsx("div",{className:"amx-qf-scrim",onMouseDown:n,children:h?a.jsx("div",{className:"amx-qf-card",onMouseDown:o=>o.stopPropagation(),children:a.jsx(ea,{dbName:h.name,columns:h.columns,onCancel:()=>v(null),onConfirm:(o,N)=>p(h,o,N)})}):a.jsxs("div",{className:"amx-qf",onMouseDown:o=>o.stopPropagation(),children:[a.jsxs("div",{className:"amx-qf-head",children:[a.jsx(Pa,{size:16,className:"amx-qf-searchicon"}),a.jsx("input",{autoFocus:!0,className:"amx-qf-input",placeholder:i("calcfg.searchDbPlaceholder"),value:f,onChange:o=>c(o.target.value)})]}),a.jsxs("div",{className:"amx-qf-list",children:[C.map(o=>a.jsxs("button",{className:"amx-qf-row",onClick:()=>v(o),children:[a.jsx("span",{className:"amx-qf-icon",children:a.jsx(W,{size:15})}),a.jsx("span",{className:"amx-qf-title",children:o.name||o.path}),a.jsx("span",{className:"amx-qf-sub",children:o.path.replace(/\\/g,"/").split("/").slice(0,-1).join("/")||"/"})]},o.path)),C.length===0&&a.jsx("div",{className:"amx-qf-empty",children:i("calcfg.noCandidates")})]}),a.jsx("div",{className:"amx-qf-foot",children:i("calcfg.footHint")})]})})}export{se as CalendarConfigView};