@forsion/unit 2.13.4 → 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.
Files changed (308) hide show
  1. package/main.mjs +112 -9
  2. package/package.json +1 -1
  3. package/release.json +5 -5
  4. package/web/assets/ArtificialView-BD1yHz1N.js +1 -0
  5. package/web/assets/AutomationBuilder-B09c-5Bi.js +1 -0
  6. package/web/assets/CalendarConfigView-Bd-ZDGPO.js +1 -0
  7. package/web/assets/CalendarSide-B0RVbOsg.js +1 -0
  8. package/web/assets/CalendarView-BHio-n_r.js +3 -0
  9. package/web/assets/CalendarView-t91KpUG7.css +1 -0
  10. package/web/assets/CapabilityMenu-DyHTEYLr.js +1 -0
  11. package/web/assets/Chrome-C7F6fdDp.js +1 -0
  12. package/web/assets/{CodeView-GZ0BAgoW.js → CodeView-BGOnrGhB.js} +3 -3
  13. package/web/assets/CtxMenuButtons-BYjrbUKS.js +1 -0
  14. package/web/assets/DashboardGridView-CR-R_qV8.js +25 -0
  15. package/web/assets/DashboardGridView-RoVFSkNO.css +1 -0
  16. package/web/assets/EventCard-QyYorE1_.js +1 -0
  17. package/web/assets/ExcalidrawCanvas-BgcFPMpU.css +1 -0
  18. package/web/assets/ExcalidrawCanvas-lwJCN6uB.js +1 -0
  19. package/web/assets/FloatingToc-DO7SH8Ku.js +1 -0
  20. package/web/assets/GitCloneDialog-CbW-RJak.js +1 -0
  21. package/web/assets/{GitCloneDialog-Bj9G3o-n.css → GitCloneDialog-DOxZk2K0.css} +1 -1
  22. package/web/assets/HomepageView-Bx8FbWlY.css +1 -0
  23. package/web/assets/HomepageView-CHJEhf9c.js +4 -0
  24. package/web/assets/ImageStudioPanels-CgVf0wiq.js +3 -0
  25. package/web/assets/ImageStudioView-4WcX0_V4.js +1 -0
  26. package/web/assets/InlineAiPanel-CdIPINsA.js +1 -0
  27. package/web/assets/InlineFiles-CAIyTk1n.js +1 -0
  28. package/web/assets/{MarkdownBlock-DQTuoen3.css → MarkdownBlock-Cqfk5DhC.css} +1 -1
  29. package/web/assets/MarkdownBlock-DSItkLhu.js +58 -0
  30. package/web/assets/ModelPill--CU3XTIQ.js +2 -0
  31. package/web/assets/{ModelPill-CzdNh7Mt.css → ModelPill-BiUsuhy3.css} +1 -1
  32. package/web/assets/MuseLibraryView-PlS7HAlV.js +2 -0
  33. package/web/assets/MuseView-CvsO62Fo.js +7 -0
  34. package/web/assets/{PageHistoryPanel-Bn4-XmdK.js → PageHistoryPanel-CDh7nm78.js} +2 -2
  35. package/web/assets/{PdfAnnotator-Cq8cklTz.js → PdfAnnotator-DafvjP3U.js} +3 -3
  36. package/web/assets/PenRow-CEy-s6SF.js +1 -0
  37. package/web/assets/PluginToolCard-BmTRr5JT.css +1 -0
  38. package/web/assets/PluginToolCard-DCzLhsCA.js +2 -0
  39. package/web/assets/ProductView-AUqnTwmQ.js +1 -0
  40. package/web/assets/SettingsPage-B9mmkWaM.js +3 -0
  41. package/web/assets/StudioGuestSurface-OOhRA8nt.js +1 -0
  42. package/web/assets/TodoListView-BkgMe44I.js +1 -0
  43. package/web/assets/Tooltip-DOYi44eY.js +1 -0
  44. package/web/assets/UnifiedPage-CTmQpf2T.css +1 -0
  45. package/web/assets/UnifiedPage-s7-tDSwG.js +712 -0
  46. package/web/assets/ViewSelectionBar-WmSWMFsR.js +2 -0
  47. package/web/assets/appStore-DDOkzWDA.js +456 -0
  48. package/web/assets/appStore-iy8_Tmac.css +1 -0
  49. package/web/assets/arrow-up-right-BptN64d-.js +1 -0
  50. package/web/assets/{artificial-BzLFkChP.css → artificial-BubVxExB.css} +1 -1
  51. package/web/assets/astryxBridge-BL56QfEv.js +69 -0
  52. package/web/assets/astryxBridge-djzCiy4v.css +1 -0
  53. package/web/assets/automationListSource-B1jz6q0t.js +1 -0
  54. package/web/assets/boardSurface-CP4HNmcm.js +1 -0
  55. package/web/assets/calendarNavStore-DCi7VBmM.js +1 -0
  56. package/web/assets/canvasPrefs-ArsX3NFO.js +1 -0
  57. package/web/assets/chatBoxSurface-DRsDr-MT.js +1 -0
  58. package/web/assets/chevron-up-ChXNh14u.js +1 -0
  59. package/web/assets/{client-CaivGZFR.js → client-fKy9CWk0.js} +5 -5
  60. package/web/assets/code-xml-DCCD9eCS.js +1 -0
  61. package/web/assets/{codeStudioStore-DhyMazGT.js → codeStudioStore-BgLfCDK2.js} +8 -8
  62. package/web/assets/codingNavigation-BrkLENBZ.css +1 -0
  63. package/web/assets/contextMenuSurface-BF593l2M.js +1 -0
  64. package/web/assets/copy-plus-ClKrSgM7.js +1 -0
  65. package/web/assets/create-DYmVT68X.js +14 -0
  66. package/web/assets/dashboardSurface-C6cbR3oG.js +1 -0
  67. package/web/assets/dbStore-BIG5Mfh2.js +1 -0
  68. package/web/assets/deskCapture-q-jRDIcc.js +1 -0
  69. package/web/assets/{diff2html-Daje9Kkm.js → diff2html-Di8qIz6O.js} +2 -2
  70. package/web/assets/{docx-preview-CABR7n30.js → docx-preview-B-URZXdP.js} +1 -1
  71. package/web/assets/draft-CBSW5tHx.js +2 -0
  72. package/web/assets/drawingStore-CGvTqqYW.js +7 -0
  73. package/web/assets/file-down-Z913cCyQ.js +1 -0
  74. package/web/assets/floatingTocSurface-DGwTiqvU.js +1 -0
  75. package/web/assets/foldActions-DGIPTmE1.js +1 -0
  76. package/web/assets/folder-1OJQeDI1.js +1 -0
  77. package/web/assets/folder-minus-D_j1SwHu.js +1 -0
  78. package/web/assets/folder-plus-DP9sFr26.js +1 -0
  79. package/web/assets/gestures-ZhFAENNZ.js +1 -0
  80. package/web/assets/git-branch-BMajF2cu.js +1 -0
  81. package/web/assets/homeCardStatus-5R7XkxFL.js +1 -0
  82. package/web/assets/i18n-CAf4PT1o.css +1 -0
  83. package/web/assets/i18n.generated-DW_l6CkR.js +15 -0
  84. package/web/assets/imageStudio-CwG21Bat.css +1 -0
  85. package/web/assets/imageStudio-DC_syDtx.js +4 -0
  86. package/web/assets/index-B8A3nKeL.js +1 -0
  87. package/web/assets/{index-BGfvNj7R.js → index-BDZIQnEx.js} +2 -2
  88. package/web/assets/index-BYKR7EVg.js +1 -0
  89. package/web/assets/index-BeW45J9J.js +7 -0
  90. package/web/assets/index-BnJguNqI.js +1 -0
  91. package/web/assets/index-BniT-A2n.js +1 -0
  92. package/web/assets/index-C--E96Ul.js +1 -0
  93. package/web/assets/index-CI2esW1X.js +1 -0
  94. package/web/assets/index-CIKPZc3Q.js +1 -0
  95. package/web/assets/index-COzdD7mZ.js +13 -0
  96. package/web/assets/index-CPfmhZ3Z.js +1 -0
  97. package/web/assets/index-CVLDDD5Z.js +1 -0
  98. package/web/assets/index-CWXpOSI2.js +1 -0
  99. package/web/assets/index-Cg1FWM_p.js +1 -0
  100. package/web/assets/index-CmsN2Zm2.js +1 -0
  101. package/web/assets/index-CtCYv9bF.js +1 -0
  102. package/web/assets/index-CtRdzpNh.js +1 -0
  103. package/web/assets/index-D-ClOPbg.js +1 -0
  104. package/web/assets/{index-gt5JBIFf.js → index-DfhEDV2T.js} +2 -2
  105. package/web/assets/index-Dr6YmrrT.js +1 -0
  106. package/web/assets/index-SpegRFQV.js +1 -0
  107. package/web/assets/index-bF04pF8q.js +3 -0
  108. package/web/assets/index-fDB1l4d-.js +3398 -0
  109. package/web/assets/index-jzlU5luC.js +1 -0
  110. package/web/assets/{index-O05r2Ty6.js → index-uhvJ8AiJ.js} +1 -1
  111. package/web/assets/{invitePage-Bgveo6Hj.js → invitePage-iOT1zBvp.js} +1 -1
  112. package/web/assets/{ipc-B6hkgxQL.js → ipc-SAPDwyQ4.js} +1 -1
  113. package/web/assets/{jszip.min-eU-k-vEy.js → jszip.min-B3n1FGCb.js} +1 -1
  114. package/web/assets/launchpad-C9U9hpWJ.css +1 -0
  115. package/web/assets/launchpad-CcmSwlJl.js +2 -0
  116. package/web/assets/layout-grid-oIyIGbc5.js +1 -0
  117. package/web/assets/linkFollow-uke1Xtit.js +8 -0
  118. package/web/assets/listFold-BeNv2v6M.js +1 -0
  119. package/web/assets/lock-open-D2nMg0ga.js +1 -0
  120. package/web/assets/log-out-D70NCXC4.js +1 -0
  121. package/web/assets/magnet-Cqmm97W8.js +1 -0
  122. package/web/assets/main-B9aT0WXG.js +15 -0
  123. package/web/assets/main-BlVApHpj.css +1 -0
  124. package/web/assets/markdownEditorSurface-BiDH0__r.css +1 -0
  125. package/web/assets/markdownEditorSurface-zUzFity2.js +3 -0
  126. package/web/assets/mediaPlayer-DB4KUvua.js +1 -0
  127. package/web/assets/message-square-plus-BvUfAAZm.js +1 -0
  128. package/web/assets/{messages-CKtabOqy.js → messages-GQUjmbwW.js} +1 -1
  129. package/web/assets/minimize-2-CMhzL6ZW.js +1 -0
  130. package/web/assets/mobileEntry-6u7TYC4s.css +1 -0
  131. package/web/assets/mobileEntry-BnHzrdoC.js +13 -0
  132. package/web/assets/modelPickerSurface-Dtz40Ae2.js +1 -0
  133. package/web/assets/nativeDownload-DsGyUSJ5.js +1 -0
  134. package/web/assets/nativeSheetMenu--iihXNVd.js +1 -0
  135. package/web/assets/pageStore-CyvNZEYX.js +13 -0
  136. package/web/assets/pageStore-ys8L4rjF.css +1 -0
  137. package/web/assets/{pageTree-BYYPgZm_.js → pageTree-Ci2qzrs1.js} +3 -3
  138. package/web/assets/pen-line-DC3lbEY1.js +1 -0
  139. package/web/assets/pen-tool-DD5_N4lZ.js +1 -0
  140. package/web/assets/pencil--sWwxHdP.js +1 -0
  141. package/web/assets/phoneList-BpLxxdq6.css +1 -0
  142. package/web/assets/phoneList-DKRMxQHf.js +1 -0
  143. package/web/assets/pluginChat-82zZt47Y.js +2 -0
  144. package/web/assets/react-b7FrqRQR.js +1 -0
  145. package/web/assets/recordSurface-vUX25Z8R.js +1 -0
  146. package/web/assets/redo-2-CqlqhWrI.js +1 -0
  147. package/web/assets/rotate-ccw-D8kni6Ni.js +1 -0
  148. package/web/assets/selectionActions-DIq0xDm8.js +2 -0
  149. package/web/assets/selectionBarSurface-B94e5JW_.js +1 -0
  150. package/web/assets/sessionTitle-Ctp4iNKu.js +1 -0
  151. package/web/assets/settingsPageSurface-C9TA3mJg.js +1 -0
  152. package/web/assets/sharePage-CY04XCAf.js +2 -0
  153. package/web/assets/{shareViewer-BiMqIBxP.js → shareViewer-DweNF8Ch.js} +2 -2
  154. package/web/assets/star-B0sZEmbj.js +1 -0
  155. package/web/assets/tableSurface-CSBYBw5P.js +1 -0
  156. package/web/assets/tanguProbe-B8Qv2vcm.js +6 -0
  157. package/web/assets/{terminalView-lbcBgG0c.js → terminalView-BLGdmdl7.js} +3 -3
  158. package/web/assets/type-Dt7RNB9g.js +1 -0
  159. package/web/assets/undo-2-QimgpLBn.js +1 -0
  160. package/web/assets/{unitAccount-DGwGsmC3.js → unitAccount-DL3jfd84.js} +1 -1
  161. package/web/assets/{unitBridge-CE2yAvm0.js → unitBridge-BSsCy1zP.js} +1 -1
  162. package/web/assets/{unitCloudTransport-BGFwkaDM.js → unitCloudTransport-CI_6H0TU.js} +1 -1
  163. package/web/assets/unitOwnerAccess-CiQ7nD7E.js +1 -0
  164. package/web/assets/unitShim-Dl2ksNp-.js +5 -0
  165. package/web/assets/upload-Dy7svciS.js +1 -0
  166. package/web/assets/userSpaces-oMHIWgYe.js +1 -0
  167. package/web/assets/viewportLock-B0l1GU_k.css +1 -0
  168. package/web/assets/viewportLock-BZq5PTeN.js +738 -0
  169. package/web/assets/zoom-in-DDEtY_Go.js +1 -0
  170. package/web/excalidraw/excalidraw.js +4 -2
  171. package/web/index.html +12 -13
  172. package/web/assets/ArtificialView-DLh75dAI.js +0 -1
  173. package/web/assets/AutomationBuilder-DNWWGnFr.js +0 -1
  174. package/web/assets/CalendarConfigView-G7je7k9-.js +0 -1
  175. package/web/assets/CalendarView-B2MtaOJk.js +0 -1
  176. package/web/assets/CapabilityMenu-DJaZ_Cyt.js +0 -1
  177. package/web/assets/CheckboxInput-FYXLaZke.js +0 -1
  178. package/web/assets/Chrome-CFonajM4.js +0 -1
  179. package/web/assets/DashboardGridView-D9s9pez_.css +0 -1
  180. package/web/assets/DashboardGridView-Xgw4wa0_.js +0 -17
  181. package/web/assets/EventCard-_39F_I5M.js +0 -1
  182. package/web/assets/ExcalidrawCanvas-4uYrLYin.css +0 -1
  183. package/web/assets/ExcalidrawCanvas-rXujil36.js +0 -1
  184. package/web/assets/FloatingToc-DNqAkkI0.js +0 -1
  185. package/web/assets/GitCloneDialog-CQx-O4j1.js +0 -1
  186. package/web/assets/HomepageView-DcWmTPQO.css +0 -1
  187. package/web/assets/HomepageView-MYEk3RCs.js +0 -3
  188. package/web/assets/ImageStudioPanels-4wnb2XF4.js +0 -3
  189. package/web/assets/ImageStudioView-qrmW8pfx.js +0 -1
  190. package/web/assets/InlineAiPanel-B3kd1ob2.js +0 -1
  191. package/web/assets/InlineFiles-Clnqh9jD.js +0 -1
  192. package/web/assets/MarkdownBlock-DT_wsaja.js +0 -58
  193. package/web/assets/ModelPill-JaIH3ffZ.js +0 -2
  194. package/web/assets/MuseLibraryView-DOJVVeU6.js +0 -2
  195. package/web/assets/MuseView-uxTmjVQa.js +0 -6
  196. package/web/assets/PenRow-COOYAaxx.js +0 -1
  197. package/web/assets/ProductView-DPTveulg.js +0 -1
  198. package/web/assets/RightPanel-BJUacrsf.js +0 -4
  199. package/web/assets/RightPanel-D0zk1g3I.css +0 -1
  200. package/web/assets/SketchCard-B_UU5sxV.js +0 -641
  201. package/web/assets/StudioGuestSurface-yBa4QKfX.js +0 -1
  202. package/web/assets/TargetHealthNotice-BLzDB-Xl.css +0 -1
  203. package/web/assets/TargetHealthNotice-CgkdTdhB.js +0 -47
  204. package/web/assets/TodoListView-CricdCfW.js +0 -1
  205. package/web/assets/Tooltip-o8ZqIb3L.js +0 -1
  206. package/web/assets/UnifiedPage-BWAyqj65.js +0 -69
  207. package/web/assets/UnifiedPage-CWXc_mo1.css +0 -1
  208. package/web/assets/ViewSelectionBar-35x8TiLA.js +0 -2
  209. package/web/assets/appStore-CI1_L5OS.js +0 -3357
  210. package/web/assets/appStore-DQc2marq.css +0 -1
  211. package/web/assets/approvalText-Cy2UAUAQ.js +0 -2
  212. package/web/assets/arrow-up-right-BDsMFoNQ.js +0 -1
  213. package/web/assets/astryxBridge-CF_hpqC2.css +0 -1
  214. package/web/assets/astryxBridge-CH_c5xjo.js +0 -70
  215. package/web/assets/automationListSource-CB6AWkL_.js +0 -1
  216. package/web/assets/boardSurface-CLvEUjbF.js +0 -1
  217. package/web/assets/book-open-BLzEdGfu.js +0 -1
  218. package/web/assets/calendarNavStore-BHUNxDx8.js +0 -1
  219. package/web/assets/canvasPrefs-CvE7mgyq.js +0 -1
  220. package/web/assets/chatBoxSurface-CuuHLzs5.js +0 -1
  221. package/web/assets/circle-question-mark-BM4ZRxQS.js +0 -1
  222. package/web/assets/circle-x-DTcNGZDT.js +0 -1
  223. package/web/assets/code-xml-AE3mT4T5.js +0 -1
  224. package/web/assets/codingNavigation-B0kVsy4x.js +0 -53
  225. package/web/assets/codingNavigation-DHCidM4N.css +0 -1
  226. package/web/assets/create-1JI2I47p.js +0 -14
  227. package/web/assets/dashboardSurface-CIE5HybN.js +0 -1
  228. package/web/assets/deskCapture-COW7aG5Y.js +0 -1
  229. package/web/assets/emoji-DZ9CA_3l.css +0 -1
  230. package/web/assets/emoji-DphwSxPx.js +0 -1
  231. package/web/assets/floatingTocSurface-BOm2QYBK.js +0 -1
  232. package/web/assets/foldActions-DNbJPlPl.js +0 -1
  233. package/web/assets/folder-DotgUhYD.js +0 -1
  234. package/web/assets/folder-plus-aJgL9NeP.js +0 -1
  235. package/web/assets/gestures-dqncPOwo.js +0 -1
  236. package/web/assets/git-branch-CwR2qic6.js +0 -1
  237. package/web/assets/hack2gate-dark-Dx2RtDRI.jpg +0 -0
  238. package/web/assets/hack2gate-light-DRKq9tyS.jpg +0 -0
  239. package/web/assets/hand-XNkzNiW2.js +0 -1
  240. package/web/assets/hard-drive-CfWKRoAE.js +0 -1
  241. package/web/assets/i18n-CykmULlm.css +0 -1
  242. package/web/assets/i18n.generated-BwynSSMk.js +0 -15
  243. package/web/assets/imageStudio-CWgLpC_d.js +0 -2
  244. package/web/assets/imageStudio-DZ0qGU2s.css +0 -1
  245. package/web/assets/index-B65ULikK.js +0 -1
  246. package/web/assets/index-BIIeiIap.js +0 -1
  247. package/web/assets/index-BOzsniE1.js +0 -297
  248. package/web/assets/index-BfrjVzia.js +0 -13
  249. package/web/assets/index-Bi9UtjVz.js +0 -1
  250. package/web/assets/index-C1uilc9i.js +0 -1
  251. package/web/assets/index-C3Dc3Ivz.js +0 -1
  252. package/web/assets/index-CJF_Ld1Y.js +0 -1
  253. package/web/assets/index-CMARP4oV.js +0 -1
  254. package/web/assets/index-C_RsQVNm.js +0 -7
  255. package/web/assets/index-ChyxZMm8.js +0 -1
  256. package/web/assets/index-CoKcOaZg.js +0 -1
  257. package/web/assets/index-CuviSCbk.js +0 -1
  258. package/web/assets/index-Cw43kua8.js +0 -1
  259. package/web/assets/index-D1fu6XQN.js +0 -3
  260. package/web/assets/index-DG-hXb63.js +0 -1
  261. package/web/assets/index-DjnTfJpN.js +0 -1
  262. package/web/assets/index-Dtw0abst.js +0 -1
  263. package/web/assets/index-W3ErfZiX.js +0 -1
  264. package/web/assets/index-Yc56b3XX.js +0 -1
  265. package/web/assets/index-d4jCdYJH.js +0 -1
  266. package/web/assets/index-siHtlYTM.js +0 -1
  267. package/web/assets/launchpad-C2c1MSVX.css +0 -1
  268. package/web/assets/layout-grid-CraV7nhh.js +0 -1
  269. package/web/assets/linkFollow-BpvDWzUx.js +0 -8
  270. package/web/assets/list-tree-cLJw-jYQ.js +0 -1
  271. package/web/assets/listFold-M8s5JYEC.js +0 -1
  272. package/web/assets/lock-DBkXXwaI.js +0 -1
  273. package/web/assets/lock-open-C-9-AWct.js +0 -1
  274. package/web/assets/log-out-C8bDXj9P.js +0 -1
  275. package/web/assets/main-BiS_5wrB.css +0 -1
  276. package/web/assets/main-CMk6twzA.js +0 -20
  277. package/web/assets/markdownEditorSurface-Bql20IAf.css +0 -1
  278. package/web/assets/markdownEditorSurface-DgQ0TUWH.js +0 -3
  279. package/web/assets/message-square-plus-8pfimvem.js +0 -1
  280. package/web/assets/minus-CfA9fAN3.js +0 -1
  281. package/web/assets/mobileEntry-DS1vohuL.css +0 -1
  282. package/web/assets/mobileEntry-NcMcK0LV.js +0 -13
  283. package/web/assets/nativeDownload-CNtwSCy0.js +0 -1
  284. package/web/assets/pageChrome-BR4cfIaA.js +0 -1
  285. package/web/assets/pageChrome-BbUhILy0.css +0 -1
  286. package/web/assets/pen-tool-C5ftHCnm.js +0 -1
  287. package/web/assets/pencil-ehhM9_9k.js +0 -1
  288. package/web/assets/phoneList-B6gwUJZF.js +0 -9
  289. package/web/assets/phoneList-iRdfiKA8.css +0 -1
  290. package/web/assets/pluginChat-DTTWWiUS.js +0 -2
  291. package/web/assets/redo-2-DCEAgQlN.js +0 -1
  292. package/web/assets/rotate-ccw-DdkrbRAB.js +0 -1
  293. package/web/assets/selectionActions-BQD2kox1.js +0 -2
  294. package/web/assets/selectionBarSurface-CzUZmJDJ.js +0 -1
  295. package/web/assets/server-Ddu9f1k3.js +0 -1
  296. package/web/assets/sharePage-CNrm2xTC.js +0 -2
  297. package/web/assets/star-Dxv7XANS.js +0 -1
  298. package/web/assets/tableSurface-Bly1iCXc.js +0 -1
  299. package/web/assets/terminal-CAmmC9cV.js +0 -1
  300. package/web/assets/type-Dz6rnTvG.js +0 -1
  301. package/web/assets/undo-2-B7izWNb_.js +0 -1
  302. package/web/assets/unitOwnerAccess-D4nKS6Gg.js +0 -1
  303. package/web/assets/unitShim-2_2hhGxS.js +0 -5
  304. package/web/assets/upload-DqpRRAhG.js +0 -1
  305. package/web/assets/userSpaces-VFu4s05v.js +0 -1
  306. package/web/assets/viewportLock-3AOdDmwi.js +0 -631
  307. package/web/assets/viewportLock-djvL8fUQ.css +0 -1
  308. package/web/assets/zoom-in-Bf-eKTnH.js +0 -1
@@ -0,0 +1 @@
1
+ .agents-space{display:flex;width:100%;height:100%;min-height:0;color:var(--text);container-type:inline-size}.agents-roster{width:216px;flex-shrink:0;display:flex;flex-direction:column;padding:22px 12px;gap:18px;background:var(--overlay-light)}.agents-roster-heading{display:flex;justify-content:space-between;padding-inline:8px;color:var(--text-muted);font-size:var(--ui-font-meta, 12px)}.agents-roster-heading>span{display:inline-flex;align-items:baseline;gap:6px}.agents-roster-heading small{font-size:var(--ui-font-caption, 11px);color:var(--text-faint)}.agents-roster-heading>button{display:grid;place-items:center;width:24px;height:24px;margin:-4px 0;border:0;border-radius:var(--radius-sm, 8px);background:transparent;color:var(--text-muted);cursor:pointer}.agents-roster-heading>button:hover{background:var(--overlay-medium);color:var(--text)}.agents-search,.profile-search{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:var(--radius-sm, 8px);background:var(--overlay-light);color:var(--text-muted)}.agents-search input,.profile-search input{width:100%;min-width:0;border:0;background:transparent;outline:none;padding:0;box-shadow:none;font-size:var(--ui-font-meta, 12px);color:var(--text)}.profile-search:focus-within{outline:var(--focus-ring) solid var(--signal-line);outline-offset:-2px}.agents-roster-list{overflow:auto;flex:1;min-height:0}.agents-roster-row{position:relative}.agents-roster-row.dragging{opacity:.5}.agents-roster-item{width:100%;display:flex;gap:10px;align-items:center;border:0;background:transparent;padding:12px 8px;text-align:left;border-radius:var(--radius-sm, 8px);color:var(--text);cursor:pointer}.agents-roster-item:hover,.agents-roster-item.selected{background:var(--overlay-medium)}.agents-roster-item>span:last-child{min-width:0;display:grid;gap:4px;padding-right:16px}.agents-roster-item strong{font-size:var(--ui-font-body, 13px);font-weight:600}.agents-roster-item strong svg{display:inline;margin-left:5px;vertical-align:-1px;color:var(--accent-ink)}.agents-roster-item small{color:var(--text-muted);font-size:var(--ui-font-caption, 11px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agents-roster-more{position:absolute;right:3px;top:16px;display:grid;place-items:center;width:26px;height:26px;padding:0;border:0;border-radius:var(--radius-sm, 8px);background:transparent;color:var(--text-muted);cursor:pointer;opacity:0}.agents-roster-row:hover .agents-roster-more,.agents-roster-more:focus-visible,.agents-roster-more[aria-expanded=true]{opacity:1}.agents-roster-more:hover{background:var(--overlay-medium);color:var(--text)}.agents-roster-actions{display:flex;flex-wrap:wrap;gap:2px 8px;margin:2px 4px 8px;padding:7px;border-radius:var(--radius-sm, 8px);background:var(--overlay-medium)}.agents-roster-actions>span{display:inline-flex;align-items:center;gap:4px;width:100%;color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.agents-roster-actions>button{display:inline-flex;align-items:center;gap:5px;padding:5px;border:0;border-radius:var(--radius-sm, 8px);background:transparent;color:var(--text);font-size:var(--ui-font-caption, 11px);cursor:pointer}.agents-roster-actions>button:hover{background:var(--overlay-strong)}.agents-roster-actions>button.danger{color:var(--danger)}.agents-roster-actions>button:disabled{opacity:.45;cursor:default}.agents-roster-create{justify-content:flex-start;gap:8px;padding-inline:8px;margin-top:0}.agents-character{flex:1;min-width:0;min-height:0;overflow:hidden}.agent-create-form{display:grid;align-content:start;gap:20px;width:min(100% - 48px,590px);height:100%;overflow:auto;margin:0 auto;padding:48px 0}.agent-create-form>header{display:flex;align-items:flex-start;gap:14px}.agent-create-form>header>svg{color:var(--accent-ink);margin-top:5px}.agent-create-form h2{margin:0 0 5px;color:var(--text);font-size:var(--ui-font-title, 16px)}.agent-create-form p{margin:0;color:var(--text-muted);font-size:var(--ui-font-meta, 12px);line-height:1.6}.agent-create-form>div:last-child{display:flex;justify-content:flex-end;gap:8px}.agent-profile{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;width:100%;height:100%;min-height:0;max-width:1000px;margin:0 auto;padding:0 32px;color:var(--text)}.agent-profile [hidden]{display:none!important}.agent-character-hero{display:flex;align-items:center;gap:22px;padding:24px 0;min-width:0}.agent-portrait{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:96px;height:104px;color:var(--accent-ink);border-radius:var(--radius-lg, 20px);background:var(--overlay-light);overflow:hidden}.agent-portrait img{width:100%;height:100%;object-fit:cover}.agent-portrait.small{width:36px;height:40px;border-radius:var(--radius-sm, 8px)}.agent-character-id{display:block;width:calc(100% + 7px);min-width:0;margin-left:-7px;padding:1px 6px;font-size:var(--ui-font-caption, 11px);color:var(--text-muted);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm, 8px);text-overflow:ellipsis;transition:background .16s ease,border-color .16s ease}.agent-character-id:not([readonly]):hover{background:var(--overlay-light)}.agent-character-id:not([readonly]):focus{color:var(--text);background:var(--bg-card);border-color:var(--accent-ink)}.agent-character-id[readonly]{cursor:default}.agent-character-identity{min-width:0;flex:1}.agent-portrait-slot{position:relative;flex-shrink:0}.agent-portrait-edit{position:relative;cursor:pointer}.agent-portrait-edit input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.agent-portrait-edit:has(input:focus-visible){outline:var(--focus-ring) solid var(--signal-line);outline-offset:2px}.agent-portrait-badge,.agent-portrait-remove{position:absolute;display:grid;place-items:center;padding:0;color:var(--text);background:var(--bg-card);border:1px solid var(--border);border-radius:50%;opacity:0;transition:opacity .16s ease}.agent-portrait-badge{right:5px;bottom:5px;width:24px;height:24px;pointer-events:none}.agent-portrait-remove{top:-6px;right:-6px;width:20px;height:20px;color:var(--text-muted);cursor:pointer}.agent-portrait-remove:hover{color:var(--text)}.agent-portrait-slot:hover .agent-portrait-badge,.agent-portrait-slot:hover .agent-portrait-remove,.agent-portrait-edit:has(input:focus-visible) .agent-portrait-badge,.agent-portrait-edit[aria-busy=true] .agent-portrait-badge,.agent-portrait-remove:focus-visible{opacity:1}@media(hover:none){.agent-portrait-badge,.agent-portrait-remove{opacity:1}}.agent-character-name,.agent-character-desc{display:block;width:calc(100% + 7px);min-width:0;margin-left:-7px;padding:1px 6px;color:var(--text);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm, 8px);transition:background .16s ease,border-color .16s ease}.agent-character-name:hover,.agent-character-desc:hover{background:var(--overlay-light)}.agent-character-name:focus,.agent-character-desc:focus{color:var(--text);background:var(--bg-card);border-color:var(--accent-ink)}.agent-character-name{margin-block:3px 4px;font-size:var(--ui-font-display, 20px);font-weight:600;line-height:1.25;letter-spacing:-.025em;text-overflow:ellipsis}.agent-character-desc{max-width:547px;margin-block:0 6px;font-size:var(--ui-font-meta, 12px);line-height:1.6;color:var(--text-muted);resize:none;field-sizing:content;min-height:calc(1.6em + 4px);max-height:calc(4.8em + 4px)}.agent-state{display:inline-flex;align-items:center;gap:6px;font-size:var(--ui-font-caption, 11px);color:var(--text-muted)}.agent-state i{width:5px;height:5px;border-radius:50%;background:var(--text-muted)}.agent-state.working{color:var(--accent-ink)}.agent-state.working i{background:var(--signal-mark)}.profile-expand{flex-shrink:0;align-self:flex-start;display:grid;place-items:center;width:30px;height:30px;padding:0;background:transparent;border:0;border-radius:var(--radius-sm, 8px);color:var(--text-muted);cursor:pointer}.profile-expand:hover{background:var(--overlay-medium);color:var(--text)}.agent-section-nav{--profile-nav-gap: 4px;--profile-nav-padding: 5px;position:relative;isolation:isolate;display:flex;gap:var(--profile-nav-gap);padding:var(--profile-nav-padding);background:var(--overlay-light);border-radius:var(--radius-md, 12px);min-width:0}.agent-section-nav:before{content:"";position:absolute;z-index:-1;pointer-events:none;inset-block:var(--profile-nav-padding);left:var(--profile-nav-padding);width:calc((100% - 2 * var(--profile-nav-padding) - (var(--profile-tab-count, 5) - 1) * var(--profile-nav-gap)) / var(--profile-tab-count, 5));border-radius:var(--radius-sm, 8px);background:var(--bg);box-shadow:var(--btn-shadow);transform:translate(calc(var(--profile-tab-index, 0) * (100% + var(--profile-nav-gap))));transition:transform .2s cubic-bezier(.2,.8,.2,1)}.agent-section-nav button{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:8px 10px;border:0;background:transparent;color:var(--text-muted);border-radius:var(--radius-sm, 8px);cursor:pointer;white-space:nowrap;font-size:var(--ui-font-meta, 12px);transition:background .16s ease,color .16s ease}.agent-section-nav button svg{flex-shrink:0}.agent-section-nav button span{overflow:hidden;text-overflow:ellipsis}.agent-section-nav button:hover{color:var(--text);background:var(--overlay-medium)}.agent-section-nav button.selected{color:var(--accent-ink);background:transparent}.agent-profile-content{min-height:0;overflow:auto;overscroll-behavior:contain;padding:24px 2px;scrollbar-width:thin}.agent-profile-content:focus{outline:none}.agent-profile-content:focus-visible{outline:var(--focus-ring) solid var(--signal-line);outline-offset:-2px}.profile-edit-fields{border:0;margin:0;padding:0;min-width:0}.profile-edit-fields:disabled{opacity:.7}.agent-profile-content h3{font-size:var(--ui-font-meta, 12px);color:var(--text-muted);font-weight:500;margin:24px 0 12px}.agent-current-session{display:grid;gap:8px;margin-bottom:24px;padding:16px;background:var(--overlay-light);border-radius:var(--radius-md, 12px);overflow-wrap:anywhere}.agent-current-session small,.agent-current-session>span{font-size:var(--ui-font-caption, 11px);line-height:1.6;color:var(--text-muted)}.agent-current-session>strong{font-size:var(--ui-font-body, 13px);font-weight:600}.agent-current-session .profile-model-field{margin-top:6px}.agent-profile-link{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;margin-top:16px;min-height:36px;padding:8px 0;color:var(--text-muted);font-size:var(--ui-font-meta, 12px);background:transparent;border:0;cursor:pointer;text-align:left}.agent-profile-link:hover{color:var(--accent-ink)}.agent-profile-link svg{flex-shrink:0}.agent-profile-muted{color:var(--text-muted);font-size:var(--ui-font-meta, 12px);line-height:1.65;overflow-wrap:anywhere}.agent-profile-error{color:var(--danger);font-size:var(--ui-font-meta, 12px);line-height:1.6;overflow-wrap:anywhere;margin:0}.profile-config-group{margin-bottom:26px}.profile-config-group>h2{font-size:var(--ui-font-body, 13px);font-weight:600;margin:0 0 10px}.profile-config-group>p{margin:0 0 16px}.agent-config-fields{display:grid;gap:18px}.agent-field{display:grid;gap:8px;color:var(--text-muted);font-size:var(--ui-font-meta, 12px);min-width:0}.agent-field input,.agent-field select,.agent-field textarea{width:100%;min-width:0;color:var(--text);font-size:var(--ui-font-body, 13px)}.agent-field input:not([type=checkbox]),.agent-field select{min-height:36px}.agent-field textarea{resize:vertical;line-height:1.65}.agent-avatar-actions{display:flex;align-items:center;flex-wrap:wrap;gap:7px;min-width:0}.agent-avatar-actions label,.agent-avatar-actions button{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.agent-avatar-actions label[aria-disabled=true]{opacity:.55;cursor:default}.agent-avatar-actions input[type=file]{display:none}.agent-avatar-actions small{flex-basis:100%;color:var(--text-muted);font-size:10px;line-height:1.5}.profile-list-toolbar{display:grid;gap:6px}.profile-list-controls{display:flex;gap:8px;min-width:0}.profile-list-controls>.profile-search{flex:1 1 0;min-width:0}.profile-list-controls>select{flex:0 1 auto;min-width:0;max-width:46%;min-height:36px;font-size:var(--ui-font-meta, 12px);color:var(--text)}.profile-list-summary{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:0 12px;color:var(--text-muted);font-size:var(--ui-font-caption, 11px);line-height:1.6}.profile-list-actions{display:flex;flex-wrap:wrap;gap:0 12px}.agent-skills-panel{display:grid;gap:8px;min-width:0}.agent-skills-panel .profile-save-notice{overflow-wrap:anywhere}.agent-skills-panel .profile-list-toolbar{margin-bottom:4px}.agent-skills-policy-hint{margin:0;color:var(--text-muted);font-size:var(--ui-font-caption, 11px);line-height:1.55}.agent-skill-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:20px;min-width:0}.agent-skill-section-head:first-of-type{margin-top:8px}.agent-skill-section-head>div{min-width:0}.agent-skill-section-head h3{margin:0 0 3px;color:var(--text);font-size:var(--ui-font-body, 13px);font-weight:600}.agent-skill-section-head p{margin:0;color:var(--text-muted);font-size:var(--ui-font-caption, 11px);line-height:1.5}.agent-skill-section-head .btn{flex-shrink:0;display:inline-flex;align-items:center;gap:5px}.agent-skill-list{display:grid;gap:4px;min-width:0}.agent-skill-row{display:flex;align-items:flex-start;gap:9px;min-width:0;padding:10px 11px;border-radius:var(--radius-sm, 8px);background:var(--overlay-light)}.agent-skill-row.enabled{background:var(--overlay-medium)}.agent-skill-row>label{display:grid;place-items:center;width:20px;height:22px;flex-shrink:0;cursor:pointer}.agent-skill-row input{accent-color:var(--signal-mark)}.agent-skill-row>svg{flex-shrink:0;align-self:center;color:var(--text-muted);transition:transform .16s ease}.agent-skill-row>svg.open{transform:rotate(90deg)}.agent-skill-summary{display:grid;gap:2px;flex:1;min-width:0;padding:0;border:0;background:transparent;color:var(--text);text-align:left;cursor:pointer}.agent-skill-summary strong{font-size:var(--ui-font-body, 13px);font-weight:500;overflow-wrap:anywhere}.agent-skill-summary span{color:var(--text-muted);font-size:var(--ui-font-meta, 12px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-skill-summary small{color:var(--text-faint, var(--text-muted));font-size:var(--ui-font-caption, 11px)}.agent-skill-summary:hover strong{color:var(--accent-ink)}.agent-skill-editor{display:grid;gap:10px;min-width:0;padding:14px;border-radius:var(--radius-md, 12px);background:var(--overlay-light)}.agent-skill-editor>label{display:grid;gap:5px;color:var(--text-muted);font-size:var(--ui-font-meta, 12px)}.agent-skill-editor input,.agent-skill-editor textarea{width:100%;min-width:0;color:var(--text);font-size:var(--ui-font-body, 13px)}.agent-skill-editor textarea{line-height:1.6;resize:vertical}.agent-skill-editor>div{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:7px}.agent-skill-detail{display:grid;gap:10px;min-width:0;margin-top:12px;padding:14px;border-radius:var(--radius-md, 12px);background:var(--overlay-light)}.agent-skill-detail-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.agent-skill-detail-head strong{font-size:var(--ui-font-body, 13px)}.agent-skill-detail>p{margin:0;font-size:var(--ui-font-meta, 12px);line-height:1.6;color:var(--text-muted)}.agent-skill-detail>small{font-size:var(--ui-font-caption, 11px);line-height:1.5;color:var(--text-faint, var(--text-muted));overflow-wrap:anywhere}.agent-skill-content{min-width:0;max-height:320px;overflow:auto;padding:12px;border-radius:var(--radius-sm, 8px);background:var(--bg);overflow-wrap:anywhere}.agent-skill-detail details{color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.agent-skill-detail details>summary{cursor:pointer}.agent-skill-detail ul{margin:8px 0 0;padding-left:20px;overflow-wrap:anywhere}.agent-skill-detail-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.agent-skill-detail-actions .btn{display:inline-flex;align-items:center;gap:5px}.agent-skill-detail-actions .danger{color:var(--danger)}.profile-text-action{color:var(--text-muted);font-size:var(--ui-font-caption, 11px);background:transparent;border:0;padding:6px 0;cursor:pointer}.profile-text-action:hover,.profile-text-action[aria-pressed=true]{color:var(--accent-ink)}.profile-text-action[aria-pressed=true]{text-decoration:underline;text-underline-offset:4px}.profile-text-action:disabled{opacity:.45;cursor:default}.agent-equipment-list{margin-top:10px;display:grid;gap:3px}.agent-equipment-item{display:flex;gap:10px;align-items:flex-start;padding:12px 10px;border-radius:var(--radius-sm, 8px);font-size:var(--ui-font-meta, 12px);line-height:1.6;cursor:pointer;transition:background .16s ease}.agent-equipment-item:hover,.agent-equipment-item.enabled{background:var(--overlay-light)}.agent-equipment-item:has(input:focus-visible){outline:var(--focus-ring) solid var(--signal-line);outline-offset:-2px}.agent-equipment-item input{flex-shrink:0;margin-top:3px;accent-color:var(--signal-mark)}.agent-equipment-item strong{font-size:var(--ui-font-body, 13px);font-weight:500;overflow-wrap:anywhere}div.agent-equipment-item{display:grid;gap:1px;padding:7px 10px;cursor:default}div.agent-equipment-item>label{display:flex;align-items:flex-start;gap:10px;min-width:0;cursor:pointer}.equipment-desc{display:block;width:calc(100% - 23px);min-width:0;margin-left:23px;padding:0;text-align:left;font-size:var(--ui-font-meta, 12px);line-height:1.6;color:var(--text-muted);background:transparent;border:0;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.equipment-desc:hover{color:var(--text)}.equipment-desc:focus-visible{outline:var(--focus-ring) solid var(--signal-line);outline-offset:1px;border-radius:4px}.equipment-desc[aria-expanded=true]{white-space:normal;overflow-wrap:anywhere}.equipment-group{margin-top:10px;border-radius:var(--radius-sm, 8px);background:var(--overlay-light)}.equipment-group>summary{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:10px 12px;font-size:var(--ui-font-meta, 12px);font-weight:500;cursor:pointer;border-radius:var(--radius-sm, 8px)}.equipment-group>summary:hover{background:var(--overlay-light)}.equipment-group>summary:before{content:"";flex-shrink:0;align-self:center;width:0;height:0;border-block:4px solid transparent;border-left:6px solid currentColor;opacity:.7;transition:transform .16s ease}.equipment-group[open]>summary:before{transform:rotate(90deg)}.equipment-group>summary::-webkit-details-marker{display:none}.equipment-group>summary>span{flex:1;min-width:0}.equipment-group>summary>small{font-size:var(--ui-font-caption, 11px);font-weight:400;color:var(--text-muted);white-space:nowrap}.equipment-group>.agent-equipment-list{margin-top:0;padding:0 4px 6px}.equipment-group .agent-equipment-item.enabled{background:transparent}.equipment-group .agent-equipment-item:hover{background:var(--overlay-light)}.profile-empty{padding:26px 12px;text-align:center;font-size:var(--ui-font-meta, 12px);color:var(--text-muted)}.agent-profile-save{flex-shrink:0;padding:12px 0;border-top:1px solid var(--border);display:grid;gap:8px;min-width:0}.agent-profile-save:empty{display:none}.agent-profile-save small{color:var(--text-muted);font-size:var(--ui-font-caption, 11px);line-height:1.6;overflow-wrap:anywhere}.agent-profile-save.is-dirty>small{color:var(--accent-ink)}.agent-profile-save>div{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.agent-profile-save button{display:inline-flex;justify-content:center;align-items:center;gap:6px;min-height:34px;font-size:var(--ui-font-meta, 12px)}.profile-save-notice{margin:0;display:flex;align-items:center;gap:7px;font-size:var(--ui-font-caption, 11px);color:var(--accent-ink);line-height:1.6}.profile-save-notice svg{flex-shrink:0}.agent-profile-panel{height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden;color:var(--text)}.agent-profile-panel-title{padding:12px 16px 0;font-size:var(--ui-font-caption, 11px);color:var(--text-muted);flex-shrink:0}.agent-profile-panel-title:has(>button){display:flex;align-items:baseline;justify-content:space-between;gap:8px}.agent-profile-panel>.agent-profile{flex:1;height:auto}.agent-profile.compact{padding:0 16px}.compact .agent-character-hero{gap:12px;padding:16px 0;align-items:center}.compact .agent-portrait{width:48px;height:54px;border-radius:var(--radius-md, 12px)}.compact .agent-character-name{font-size:var(--ui-font-title, 16px);margin-block:2px 3px}.compact .agent-character-desc{font-size:var(--ui-font-caption, 11px);margin-bottom:4px}.compact .agent-portrait-badge{right:3px;bottom:3px;width:18px;height:18px}.compact .agent-portrait-remove{top:-5px;right:-5px;width:17px;height:17px}.compact .agent-section-nav{--profile-nav-gap: 2px;--profile-nav-padding: 4px}.compact .agent-section-nav button{flex-direction:column;gap:5px;font-size:var(--ui-font-caption, 11px);padding:7px 2px}.compact .agent-profile-content{padding-block:18px}.compact .agent-current-session{padding:12px}.agent-profile-team{padding:12px 18px}.agent-profile-team h3{display:flex;align-items:center;gap:8px;font-size:var(--ui-font-body, 13px)}.profile-model-trigger{display:flex;align-items:center;gap:10px;width:100%;min-width:0;min-height:38px;padding:9px 11px;text-align:left;border:1px solid var(--border);border-radius:var(--radius-sm, 8px);background:var(--bg);color:var(--text);cursor:pointer}.profile-model-trigger>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-model-trigger svg{flex-shrink:0;transition:transform .16s ease}.profile-model-trigger[aria-expanded=true] svg{transform:rotate(180deg)}.profile-model-options{padding:8px;background:var(--overlay-light);border-radius:var(--radius-sm, 8px);animation:profile-enter .16s ease both}.profile-model-results{max-height:220px;overflow:auto;margin-top:6px}.profile-model-results button{display:flex;align-items:center;gap:8px;width:100%;min-height:36px;padding:9px 8px;color:var(--text);background:transparent;border:0;border-radius:var(--radius-sm, 8px);text-align:left;cursor:pointer;font-size:var(--ui-font-meta, 12px);overflow-wrap:anywhere}.profile-model-results button:hover,.profile-model-results button[aria-pressed=true]{background:var(--overlay-medium)}.profile-model-results button>span{flex:1;min-width:0;display:grid;gap:3px}.profile-model-results strong{font-size:var(--ui-font-meta, 12px);font-weight:500}.profile-model-results small{color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.profile-model-results svg{flex-shrink:0;color:var(--accent-ink)}.profile-text-editor{display:grid;gap:8px;min-width:0}.profile-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:var(--ui-font-meta, 12px);color:var(--text-muted)}.profile-text-editor>textarea{width:100%;min-width:0;min-height:150px;padding:12px;resize:vertical;font-size:var(--ui-font-body, 13px);line-height:1.75;tab-size:2}.profile-text-preview{min-height:150px;padding:12px;background:var(--overlay-light);border-radius:var(--radius-sm, 8px);overflow-wrap:anywhere}.profile-editor-hint{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:var(--ui-font-caption, 11px);line-height:1.6;color:var(--text-muted)}.profile-editor-hint>span{margin-left:auto;font-variant-numeric:tabular-nums}.profile-disclosure{margin-bottom:16px;padding:12px;background:var(--overlay-light);border-radius:var(--radius-sm, 8px)}.profile-disclosure>summary{cursor:pointer;padding-block:3px;color:var(--text);font-size:var(--ui-font-meta, 12px);font-weight:500}.profile-disclosure[open]>summary{margin-bottom:14px}.profile-memory{font-size:var(--ui-font-body, 13px);line-height:1.7}.profile-memory [hidden]{display:none!important}.profile-memory textarea{width:100%;min-width:0;padding:10px;font-size:var(--ui-font-body, 13px);line-height:1.75;resize:vertical}.profile-memory summary{cursor:pointer;padding-block:6px;font-size:var(--ui-font-meta, 12px)}.profile-memory li{padding-bottom:12px}.profile-memory,.memory-list,.profile-growth-memory{display:grid;gap:10px;min-width:0}.profile-growth-memory>.agent-profile-link{margin-top:0}.profile-log{display:grid;gap:2px;min-width:0}.profile-log>.harness-summary{margin-bottom:8px}.profile-log .agentmem-log-body{padding:0 8px 10px 26px;font-size:var(--ui-font-body, 13px);line-height:1.7}.profile-log .agentmem-log-body h3{margin:8px 0 0;font-size:var(--ui-font-caption, 11px);font-weight:500;line-height:1.6;color:var(--text-muted);font-variant-numeric:tabular-nums}.profile-log .agentmem-log-body p{margin:0}.profile-log .agentmem-log-edit.field{padding-left:26px}.profile-log .agentmem-log-edit textarea{font-size:var(--ui-font-body, 13px);line-height:1.7}.profile-growth-memory .profile-disclosure,.agent-schedule .profile-disclosure{margin-bottom:0;padding:8px 12px}.profile-growth-memory .profile-disclosure[open]>summary,.agent-schedule .profile-disclosure[open]>summary{margin-bottom:10px}.profile-disclosure>summary>small{float:right;margin-left:10px;font-size:var(--ui-font-caption, 11px);font-weight:400;color:var(--text-muted)}.memory-add>summary{display:inline-flex;align-items:center;gap:6px;padding-block:2px;font-size:var(--ui-font-meta, 12px);color:var(--accent-ink);list-style:none}.memory-add>summary::-webkit-details-marker{display:none}.memory-add>summary:hover{text-decoration:underline;text-underline-offset:3px}.memory-entry>p{margin:0;font-size:var(--ui-font-body, 13px);line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.memory-entry-meta{display:flex;align-items:flex-start;gap:2px;min-width:0;margin-bottom:-4px}.memory-entry-meta>details{flex:1;min-width:0;font-size:var(--ui-font-caption, 11px);line-height:1.6;color:var(--text-muted);overflow-wrap:anywhere}.memory-entry-meta>details>summary{padding-block:3px;font-size:var(--ui-font-caption, 11px)}.memory-entry-meta>.harness-undo{margin:0}.memory-footnote{margin:0;font-size:var(--ui-font-caption, 11px);line-height:1.6;color:var(--text-faint, var(--text-muted))}.profile-segment{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:16px}.profile-segment>button{display:grid;gap:2px;min-width:0;padding:10px 12px;text-align:left;color:var(--text-muted);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm, 8px);cursor:pointer;transition:background .16s ease,color .16s ease}.profile-segment>button:hover{background:var(--overlay-light);color:var(--text)}.profile-segment>button[aria-pressed=true]{color:var(--accent-ink);background:var(--overlay-medium)}.profile-segment strong{display:flex;align-items:center;gap:6px;min-width:0;font-size:var(--ui-font-body, 13px);font-weight:600;overflow-wrap:anywhere}.profile-segment small{font-size:var(--ui-font-caption, 11px);line-height:1.5;color:var(--text-muted);overflow-wrap:anywhere;text-wrap:balance}.profile-segment .profile-tab-badge{position:static;margin-left:auto}.schedule-entry,.schedule-rule{display:grid;gap:6px;min-width:0;padding:12px;border-radius:var(--radius-sm, 8px);background:var(--overlay-light)}.schedule-entry.is-past,.schedule-rule.is-past{opacity:.62}.schedule-entry>p{margin:0;font-size:var(--ui-font-meta, 12px);line-height:1.6;color:var(--text-muted);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.schedule-when{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;font-size:var(--ui-font-meta, 12px);line-height:1.6;color:var(--text-muted);font-variant-numeric:tabular-nums}.schedule-when>.harness-kind{margin-right:0}.schedule-when>time{color:var(--text)}.schedule-rule{grid-template-columns:auto minmax(0,1fr);column-gap:10px;align-items:start}.schedule-rule>svg{margin-top:3px;color:var(--text-muted)}.schedule-rule>span{display:grid;gap:2px;min-width:0}.schedule-rule strong{font-size:var(--ui-font-body, 13px);font-weight:500;overflow-wrap:anywhere}.schedule-rule small{font-size:var(--ui-font-caption, 11px);line-height:1.6;color:var(--text-muted);overflow-wrap:anywhere}.schedule-rules>h3{margin:10px 0 8px;font-size:var(--ui-font-meta, 12px);font-weight:500;color:var(--text-muted)}.schedule-past{margin-bottom:0}.schedule-past>.harness-entries{margin-top:0}.agent-schedule .harness-summary .profile-text-action,.profile-memory .harness-summary .profile-text-action{color:var(--text-muted)}.agent-schedule .harness-summary .profile-text-action:hover,.profile-memory .harness-summary .profile-text-action:hover{color:var(--accent-ink)}.agent-harness{display:grid;gap:14px;min-width:0}.agent-harness>p{margin:0}.harness-summary{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;font-size:var(--ui-font-meta, 12px);line-height:1.6;color:var(--text-muted)}.harness-summary time{white-space:nowrap}.harness-summary .profile-text-action{display:inline-flex;align-items:center;gap:6px;padding:0;color:var(--accent-ink)}.harness-summary .profile-text-action:hover:not(:disabled){text-decoration:underline;text-underline-offset:3px}.harness-entries{list-style:none;margin:0;padding:0;display:grid;gap:6px}.harness-entry{display:grid;gap:6px;min-width:0;padding:12px;border-radius:var(--radius-sm, 8px);background:var(--overlay-light)}.harness-entry-head{display:flex;align-items:flex-start;gap:8px;min-width:0}.harness-entry-head strong{flex:1;min-width:0;font-size:var(--ui-font-body, 13px);font-weight:600;line-height:1.5;overflow-wrap:anywhere}.harness-kind{display:inline-block;margin-right:8px;padding:0 7px;vertical-align:1px;font-size:var(--ui-font-caption, 11px);font-weight:500;line-height:17px;white-space:nowrap;color:var(--text-muted);border:1px solid var(--overlay-strong);border-radius:var(--radius-pill, 999px)}.harness-kind.recipe{color:var(--accent-ink)}.harness-undo{flex-shrink:0;display:grid;place-items:center;width:24px;height:24px;margin:-2px -4px 0 0;padding:0;color:var(--text-muted);background:transparent;border:0;border-radius:var(--radius-sm, 8px);cursor:pointer}.harness-undo:hover{color:var(--text);background:var(--overlay-medium)}.harness-undo:disabled{opacity:.45;cursor:default}.harness-entry>p{margin:0;font-size:var(--ui-font-meta, 12px);line-height:1.65;overflow-wrap:anywhere;white-space:pre-wrap}.harness-evidence,.harness-meta{font-size:var(--ui-font-caption, 11px);line-height:1.6;color:var(--text-muted);overflow-wrap:anywhere}.harness-meta{color:var(--text-faint, var(--text-muted));font-variant-numeric:tabular-nums}.harness-empty{display:grid;justify-items:center;gap:10px;padding:32px 16px;text-align:center;color:var(--text-muted);background:var(--overlay-light);border-radius:var(--radius-md, 12px)}.harness-empty>svg{color:var(--accent-ink)}.harness-empty>p{max-width:34em;margin:0;font-size:var(--ui-font-meta, 12px);line-height:1.65}.harness-empty>.btn{display:inline-flex;align-items:center;gap:6px}.harness-candidates>h3{margin:10px 0 8px;font-size:var(--ui-font-meta, 12px);font-weight:500;color:var(--accent-ink)}.harness-candidates>ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.harness-candidate{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;padding:8px 12px;font-size:var(--ui-font-meta, 12px);line-height:1.6;border-radius:var(--radius-sm, 8px);background:var(--overlay-light);overflow-wrap:anywhere}.harness-candidate>time{color:var(--text-faint, var(--text-muted));font-variant-numeric:tabular-nums;white-space:nowrap}.harness-candidate-actions{grid-column:2;display:flex;gap:14px}.harness-candidate-actions .profile-text-action{padding:2px 0}.harness-candidate-actions .profile-text-action.adopt{color:var(--accent-ink)}.harness-candidate-actions .profile-text-action:hover:not(:disabled){text-decoration:underline;text-underline-offset:3px}.harness-candidates>small{display:block;margin-top:8px;font-size:var(--ui-font-caption, 11px);line-height:1.6;color:var(--text-muted)}.agent-section-nav button{position:relative}.profile-tab-badge{position:absolute;top:2px;right:2px;display:inline-grid;place-items:center;min-width:14px;height:14px;padding:0 3px;font-size:var(--ui-font-caption, 11px);font-style:normal;font-weight:600;line-height:1;color:var(--accent-ink);background:var(--overlay-medium);border-radius:var(--radius-pill, 999px)}.harness-history>h3{margin:10px 0 12px;font-size:var(--ui-font-meta, 12px);font-weight:500;color:var(--text-muted)}.harness-history>ol{list-style:none;display:grid;gap:12px;margin:0 0 0 4px;padding:0 0 0 14px;border-left:1px solid var(--border)}.harness-event{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;font-size:var(--ui-font-meta, 12px);line-height:1.5}.harness-event:before{content:"";position:absolute;left:-18px;top:6px;width:7px;height:7px;border-radius:50%;background:var(--text-muted)}.harness-event.upsert:before{background:var(--accent)}.harness-event>span{min-width:0;overflow-wrap:anywhere}.harness-event b{margin-right:6px;font-weight:500;color:var(--text-muted)}.harness-event>.profile-text-action{grid-column:2;grid-row:1 / span 2;align-self:center;padding:0}.harness-event>time{grid-column:1;font-size:var(--ui-font-caption, 11px);color:var(--text-faint, var(--text-muted));font-variant-numeric:tabular-nums}.harness-history>.profile-text-action{margin-top:8px}.profile-section-enter{animation:profile-enter .18s ease both}@keyframes profile-enter{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media(hover:none){.agents-roster-more{opacity:1}}@media(prefers-reduced-motion:reduce){.profile-section-enter,.profile-model-options{animation:none}.agent-section-nav:before,.agent-section-nav button,.agent-equipment-item,.profile-segment>button,.equipment-group>summary:before,.profile-model-trigger svg,.agent-portrait-badge,.agent-portrait-remove,.agent-character-name,.agent-character-desc{transition:none}}.agents-roster{width:100%;height:100%;min-width:0;min-height:0;padding:16px 12px 10px;gap:12px;background:transparent}.agents-roster-heading{align-items:center;min-height:24px}.agents-roster-item{padding-block:10px;transition:background .14s ease}.agents-roster-item strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agents-roster-item>span:last-child{flex:1}.agents-roster-more{right:3px;top:15px}.agents-roster-create{flex-shrink:0}.agents-character,.agent-profile-panel{container:agent-detail / inline-size}.agent-profile{max-width:760px;padding-inline:28px}.agent-character-hero{gap:18px;padding-block:22px}.agent-portrait{width:68px;height:76px;border-radius:var(--radius-md)}.agent-profile-content{padding-block:20px}.agent-profile .agent-field>input:not([type=checkbox]),.agent-profile .agent-field>select{max-width:460px}.agent-skill-summary,.agent-skill-row,.profile-model-trigger{transition:background .14s ease,color .14s ease}.agent-skill-detail,.agent-skill-editor{animation:profile-enter .16s ease}@container agent-detail (max-width: 540px){.agent-profile{padding-inline:16px}.agent-character-hero{gap:12px;padding-block:16px}.agent-portrait{width:48px;height:54px}.agent-character-name{font-size:var(--ui-font-title)}.agent-section-nav{--profile-nav-gap: 2px;--profile-nav-padding: 4px}.agent-section-nav button{flex-direction:column;gap:5px;padding:7px 2px;font-size:var(--ui-font-meta)}.agent-profile-content{padding-block:18px}}@container agent-detail (max-width: 380px){.profile-segment>button{position:relative;padding:8px}.profile-segment strong>svg{display:none}.profile-segment .profile-tab-badge{position:absolute;top:7px;right:7px;min-width:6px;width:6px;height:6px;margin-left:0;padding:0;font-size:0;background:var(--accent-ink)}}@container agent-detail (max-width: 260px){.profile-segment{grid-template-columns:minmax(0,1fr)}}@media(prefers-reduced-motion:reduce){.agent-skill-detail,.agent-skill-editor{animation:none}.agents-roster-item,.agent-skill-summary,.agent-skill-row,.profile-model-trigger{transition:none}}.profile-list-controls>.capability-menu-trigger{flex:0 1 auto;max-width:46%;font-size:var(--ui-font-meta)}.profile-model-results button{font-size:var(--menu-text-size);line-height:var(--menu-line-height)}.agents-roster .agents-roster-create{justify-content:flex-start}.agent-profile .profile-model-field{max-width:460px}.agent-skill-extend{padding:14px 16px 20px}.agent-skill-extend>.agent-skill-detail{margin:0;padding:0;border-radius:0;background:none}.agent-skill-extend .agent-skill-content{max-height:none}.agent-skill-row.current{box-shadow:inset 0 0 0 1px var(--accent),0 0 0 .5px var(--accent)}.agent-skill-row.current>svg{color:var(--accent-ink)}.compact .agent-section-nav button span{max-width:100%;min-width:0}@keyframes record-flash{25%,60%{background:var(--overlay-strong)}}[data-record-flash]{animation:record-flash 1.8s ease}.csl-launchpad{height:100%;min-height:0;overflow:auto;color:var(--text);font-family:var(--font-ui);container-type:inline-size}.csl-inner{max-width:1160px;margin:0 auto;padding:28px 30px 40px}.csl-main{min-width:0}.csl-brief{padding:20px;border:1px solid transparent;border-radius:var(--radius-lg);background:var(--overlay-subtle);animation:csl-enter var(--duration-slow) var(--ease-out) 35ms both}.csl-idea-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.csl-idea-label{min-width:0;display:block;font-size:var(--ui-font-heading, 14px);font-weight:550;line-height:1.45;letter-spacing:-.025em}.csl-template-status{min-width:0;max-width:45%;display:flex;align-items:center;gap:5px;color:var(--accent-ink);font-size:var(--ui-font-caption, 11px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;animation:csl-enter var(--duration-fast) var(--ease-out) both}.csl-template-status>svg{flex-shrink:0}.csl-launchpad input,.csl-launchpad textarea{font-family:inherit;font-size:var(--ui-font-meta, 12px);color:var(--text);outline:none;transition:border-color var(--duration-fast),background var(--duration-fast)}.csl-launchpad input::placeholder,.csl-launchpad textarea::placeholder{color:var(--text-faint);opacity:1}.csl-launchpad .csl-idea{display:block;width:100%;min-height:126px;padding:13px 14px;border:1px solid var(--border);border-radius:var(--radius-md);resize:vertical;background:var(--bg-card);font-size:var(--ui-font-body, 13px);line-height:1.75}.csl-launchpad input:focus,.csl-launchpad textarea:focus{border-color:var(--accent-ink)}.csl-launchpad button{font-family:inherit;cursor:pointer}.csl-launchpad button:disabled{cursor:default;opacity:.45}.csl-launchpad button:focus-visible,.csl-launchpad summary:focus-visible{outline:var(--focus-ring) solid var(--signal-line);outline-offset:3px}.csl-details{margin-top:11px;interpolate-size:allow-keywords}.csl-details summary{display:flex;align-items:center;gap:7px;width:fit-content;min-height:28px;color:var(--text-muted);cursor:pointer;list-style:none;font-size:var(--ui-font-caption, 11px);transition:color var(--duration-fast)}.csl-details summary:hover{color:var(--text)}.csl-launchpad summary::-webkit-details-marker{display:none}.csl-details summary>svg{transition:transform var(--duration-slow) var(--ease-spring);transform:rotate(-90deg)}.csl-details[open] summary>svg{transform:rotate(0)}.csl-details summary>span,.csl-capabilities legend>span{font-size:var(--ui-font-caption, 11px);font-weight:400;color:var(--text-faint);margin-left:5px}.csl-details::details-content,.csl-save-location::details-content{block-size:0;overflow:hidden;transition:block-size var(--duration-slow) var(--ease-spring),content-visibility var(--duration-slow) allow-discrete}.csl-details[open]::details-content,.csl-save-location[open]::details-content{block-size:auto}.csl-details-body{display:grid;gap:7px;padding-top:10px;padding-bottom:2px}.csl-details-body label,.csl-name-field label{font-size:var(--ui-font-caption, 11px);color:var(--text-muted)}.csl-details-body input,.csl-details-body textarea,.csl-name-field input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);padding:8px 10px;width:100%;min-width:0;line-height:1.5}.csl-details-body textarea{resize:vertical}.csl-details-body label:not(:first-child){margin-top:5px}.csl-capabilities{padding:0;margin:13px 0 0;border:0;min-width:0}.csl-capabilities legend{font-size:var(--ui-font-caption, 11px);color:var(--text-muted);padding:0;margin-bottom:8px}.csl-capability-list{display:flex;gap:6px;flex-wrap:wrap}.csl-capability{display:flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:var(--ui-font-caption, 11px);transition:background var(--duration-fast),border-color var(--duration-fast),color var(--duration-fast),transform var(--duration-fast) var(--ease-spring)}.csl-capability:not(:disabled):hover{background:var(--overlay-light)}.csl-capability:not(:disabled):active{transform:scale(.97)}.csl-capability[aria-pressed=true]{background:var(--sel-fill);color:var(--accent-ink);border-color:var(--sel-line)}.csl-capability[aria-pressed=true]>svg:last-child{animation:csl-check var(--duration-slow) var(--ease-spring)}.csl-capability-hint{margin:8px 0 0;color:var(--text-faint);font-size:var(--ui-font-caption, 11px);line-height:1.6;animation:csl-enter var(--duration-fast) var(--ease-out)}.csl-create-row{display:flex;gap:10px;align-items:flex-end;margin-top:20px}.csl-name-field{flex:1;min-width:0;display:grid;gap:6px}.csl-name-field input[aria-invalid=true]{border-color:var(--danger)}.csl-create{min-height:36px;display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 13px;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--on-action);background:var(--action-fill);font-size:var(--ui-font-meta, 12px);font-weight:550;white-space:nowrap;box-shadow:var(--btn-shadow);transition:background var(--duration-fast),transform var(--duration-fast) var(--ease-spring),opacity var(--duration-fast)}.csl-create>svg{transition:transform var(--duration-fast) var(--ease-spring)}.csl-create:not(:disabled):hover{background:var(--action-fill-hover)}.csl-create:not(:disabled):hover>svg{transform:translate(2px)}.csl-create:not(:disabled):active{transform:scale(.97)}.csl-draft-hint,.csl-host-hint{color:var(--text-muted);margin:10px 0 0;font-size:var(--ui-font-caption, 11px);line-height:1.6}.csl-save-location{margin-top:5px;interpolate-size:allow-keywords}.csl-save-location summary{width:fit-content;display:flex;align-items:center;gap:5px;min-height:24px;font-size:var(--ui-font-caption, 11px);color:var(--text-faint);cursor:pointer;list-style:none}.csl-save-location summary:hover{color:var(--text-muted)}.csl-save-location summary>svg:last-child{transform:rotate(-90deg);transition:transform var(--duration-slow) var(--ease-spring)}.csl-save-location[open] summary>svg:last-child{transform:rotate(0)}.csl-location{margin:3px 0 1px;overflow-wrap:anywhere;color:var(--text-faint);font-size:var(--ui-font-caption, 11px);line-height:1.6}.csl-error{margin:10px 0 0;color:var(--danger);font-size:var(--ui-font-caption, 11px);line-height:1.6}.csl-templates{margin-top:25px;animation:csl-enter var(--duration-slow) var(--ease-out) 75ms both}.csl-section-heading{margin-bottom:11px}.csl-section-heading h2{margin:0;font-size:var(--ui-font-meta, 12px);font-weight:600}.csl-section-heading p{margin:5px 0 0;font-size:var(--ui-font-caption, 11px);color:var(--text-muted);line-height:1.5}.csl-template-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.csl-template{min-width:0;display:flex;align-items:center;gap:10px;text-align:left;padding:11px 9px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-muted);transition:background var(--duration-fast),border-color var(--duration-fast),color var(--duration-fast),transform var(--duration-fast) var(--ease-spring)}.csl-template:not(:disabled):hover{background:var(--overlay-light)}.csl-template:not(:disabled):active{transform:scale(.98)}.csl-template>svg{flex-shrink:0}.csl-template>span{flex:1;min-width:0}.csl-template strong{display:block;color:var(--text);font-size:var(--ui-font-caption, 11px);font-weight:550;line-height:1.5}.csl-template small{display:block;margin-top:3px;color:var(--text-muted);font-size:var(--ui-font-caption, 11px);line-height:1.5}.csl-template[aria-pressed=true]{background:var(--sel-fill);border-color:var(--sel-line);color:var(--accent-ink)}.csl-template[aria-pressed=true]>svg:last-child{animation:csl-check var(--duration-slow) var(--ease-spring)}.csl-template-arrow{opacity:0;transform:translate(-3px);transition:opacity var(--duration-fast),transform var(--duration-fast) var(--ease-spring)}.csl-template:hover .csl-template-arrow,.csl-template:focus-visible .csl-template-arrow{opacity:1;transform:translate(0)}.csl-icon-button{width:26px;height:26px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.csl-icon-button:not(:disabled):hover{background:var(--overlay-medium)}.csl-import{display:flex;flex-shrink:0;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text);padding:9px 11px;min-height:35px;font-size:var(--ui-font-caption, 11px);transition:background var(--duration-fast),transform var(--duration-fast) var(--ease-spring)}.csl-import:not(:disabled):hover{background:var(--overlay-light)}.csl-import:not(:disabled):active{transform:scale(.98)}.csl-search{display:flex;align-items:center;gap:7px;color:var(--text-faint)}.csl-search input{width:100%;min-width:0;border:0;background:transparent}.csl-status{display:flex;align-items:center;gap:8px;margin-top:18px;color:var(--text-muted);font-size:var(--ui-font-caption, 11px);line-height:1.6}.csl-empty{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:18px 3px;color:var(--text-faint)}.csl-empty strong{font-size:var(--ui-font-caption, 11px);font-weight:500;line-height:1.6;color:var(--text-muted)}.csl-empty p{font-size:var(--ui-font-caption, 11px);line-height:1.7;margin:0}.csl-spin{animation:csl-rotate 1s linear infinite}@keyframes csl-enter{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@keyframes csl-check{0%{opacity:0;transform:scale(.65)}to{opacity:1;transform:scale(1)}}@keyframes csl-rotate{to{transform:rotate(360deg)}}@container (min-width: 1080px){.csl-template-list{grid-template-columns:repeat(3,minmax(0,1fr))}}@container (max-width: 840px){.csl-inner{padding-inline:24px;padding-top:24px}.csl-empty{padding-block:10px}}@container (max-width: 520px){.csl-inner{padding-inline:16px;padding-top:20px}.csl-template-status{max-width:40%;font-size:var(--ui-font-caption, 11px)}.csl-capability{padding-inline:7px}.csl-template{gap:8px;padding-inline:6px}.csl-template small,.csl-template-arrow{display:none}}@container (max-width: 380px){.csl-inner{padding-inline:12px}.csl-create-row{align-items:stretch;flex-direction:column;gap:11px}.csl-create{min-height:37px}.csl-template-list{grid-template-columns:minmax(0,1fr)}.csl-template{padding-block:9px}.csl-template small{display:block}.csl-template-status{display:none}}@media(prefers-reduced-motion:reduce){.csl-launchpad *,.csl-launchpad *:before,.csl-launchpad *:after,.csl-details::details-content,.csl-save-location::details-content{animation:none;transition:none}}.csl-plugin-note{margin:13px 0 0;color:var(--text-faint);font-size:var(--ui-font-caption, 11px);line-height:1.6;animation:csl-enter var(--duration-fast) var(--ease-out)}@media(prefers-reduced-motion:reduce){.csl-plugin-note{animation:none}}.csl-catalog{min-width:0}.csl-catalog-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:10px 0 30px}.csl-catalog-header h1,.csl-create-header h1{margin:7px 0 0;font-size:var(--ui-font-title);line-height:var(--ui-line-title);font-weight:600;letter-spacing:-.025em}.csl-catalog-header h1{font-size:var(--ui-font-display);line-height:var(--ui-line-display)}.csl-catalog-header p,.csl-create-header p{margin:7px 0 0;color:var(--text-muted);font-size:var(--ui-font-meta);line-height:var(--ui-line-meta)}.csl-catalog-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.csl-new{min-height:35px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 13px;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--action-fill);color:var(--on-action);font-size:var(--ui-font-meta);font-weight:550;box-shadow:var(--btn-shadow)}.csl-new:not(:disabled):hover{background:var(--action-fill-hover)}.csl-catalog-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:11px;margin-bottom:17px}.csl-catalog-toolbar .csl-search{flex:1;max-width:300px;min-width:120px;margin-left:auto;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card)}.csl-catalog-toolbar .csl-search input{padding:9px 0;font-size:var(--ui-font-meta)}.csl-catalog-toolbar .csl-search input:focus{border:0}.csl-catalog-toolbar .csl-search:focus-within{border-color:var(--accent-ink)}.csl-refresh{width:35px;height:35px;border-color:var(--border)}.csl-project-list{display:block;margin-top:0}.csl-list-head,.csl-project{display:grid;grid-template-columns:42px minmax(0,1fr) minmax(130px,180px) 22px;align-items:center;column-gap:15px}.csl-list-head{min-height:34px;padding:0 12px 7px;border-bottom:1px solid var(--border);color:var(--text-faint);font-size:var(--ui-font-meta)}.csl-list-head span:first-child{grid-column:2}.csl-list-head span:last-child{grid-column:3}.csl-project{width:100%;min-height:75px;padding:12px;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;color:var(--text);text-align:left;transition:background var(--duration-fast)}.csl-project:not(:disabled):hover,.csl-project:focus-visible{background:var(--overlay-light)}.csl-project:not(:disabled):active{transform:none}.csl-project .csl-project-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-sm);background:var(--sel-fill);color:var(--accent-ink)}.csl-project .csl-project-icon--plugin{background:var(--overlay-medium);color:var(--text)}.csl-project .csl-project-info,.csl-project .csl-project-meta{display:flex;min-width:0;flex-direction:column;gap:4px}.csl-project .csl-project-info strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-body);line-height:var(--ui-line-body);font-weight:550}.csl-project .csl-project-info small,.csl-project .csl-project-meta small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:var(--ui-font-caption);line-height:var(--ui-line-caption);font-weight:400}.csl-project .csl-project-meta{align-items:flex-start;font-size:var(--ui-font-meta);font-variant-numeric:tabular-nums}.csl-project .csl-project-arrow{opacity:0;color:var(--text-muted);transform:translate(-3px);transition:opacity var(--duration-fast),transform var(--duration-fast)}.csl-project:hover .csl-project-arrow,.csl-project:focus-visible .csl-project-arrow{opacity:1;transform:translate(0)}.csl-catalog .csl-empty{align-items:center;justify-content:center;min-height:300px;padding:35px;text-align:center}.csl-catalog .csl-empty strong{color:var(--text);font-size:var(--ui-font-heading);font-weight:550}.csl-catalog .csl-empty p{max-width:320px}.csl-gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.csl-gallery-card{display:flex;flex-direction:column;align-items:flex-start;min-width:0;min-height:184px;padding:17px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-card);box-shadow:var(--card-shadow);color:var(--text);text-align:left;transition:border-color var(--duration-fast),background var(--duration-fast)}.csl-gallery-card:hover{border-color:var(--sel-line);background:var(--overlay-light)}.csl-gallery-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-bottom:18px;border-radius:var(--radius-sm);background:var(--sel-fill);color:var(--accent-ink)}.csl-gallery-card strong{font-size:var(--ui-font-body);font-weight:550;line-height:var(--ui-line-body)}.csl-gallery-card small{margin-top:5px;color:var(--text-muted);font-size:var(--ui-font-caption);line-height:var(--ui-line-caption)}.csl-gallery-action{display:inline-flex;align-items:center;gap:5px;margin-top:auto;padding-top:18px;color:var(--accent-ink);font-size:var(--ui-font-caption);font-weight:550}.csl-create-page{max-width:860px;margin:0 auto}.csl-back{display:inline-flex;align-items:center;gap:7px;margin:0 0 24px;padding:6px 0;border:0;background:transparent;color:var(--text-muted);font-size:var(--ui-font-meta)}.csl-back:hover{color:var(--text)}.csl-create-header{margin:18px 0 27px;text-align:center}.csl-create-header h1{font-size:var(--ui-font-display);line-height:var(--ui-line-display)}.csl-create-page .csl-brief{padding:0;border-color:transparent;background:transparent;box-shadow:none}.csl-chatbox{padding:18px 20px}.csl-chatbox .t2c-row{margin-top:20px;gap:10px}.csl-chatbox .csl-create{width:auto;height:auto;min-height:34px;border-radius:var(--radius-sm)}.csl-project-options{margin-top:8px}.csl-create-page .csl-idea-label{font-size:var(--ui-font-body)}.csl-create-page .csl-idea{min-height:100px;border:0;background:transparent;padding:7px 0;resize:none;font-size:var(--ui-font-body)}.csl-create-page .csl-idea:focus{border-color:transparent}.csl-create-page .csl-template-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.csl-create-page .csl-template{padding:12px;border-color:var(--border);background:var(--bg-card)}@container (max-width: 760px){.csl-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.csl-catalog-header{align-items:flex-start;flex-direction:column;gap:18px}.csl-catalog-toolbar{flex-wrap:wrap}.csl-catalog-toolbar .csl-search{max-width:none;flex-basis:100%;order:2;margin-left:0}.csl-refresh{margin-left:auto}.csl-list-head,.csl-project{grid-template-columns:42px minmax(0,1fr) minmax(100px,132px) 18px;gap:10px}.csl-create-page .csl-template-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (max-width: 490px){.csl-gallery-grid{grid-template-columns:minmax(0,1fr)}.csl-catalog-actions{width:100%}.csl-catalog-actions .csl-new{flex:1}.csl-list-head span:last-child,.csl-project .csl-project-meta{display:none}.csl-list-head,.csl-project{grid-template-columns:40px minmax(0,1fr) 18px}.csl-project .csl-project-arrow{grid-column:3}.csl-create-page .csl-template-list{grid-template-columns:minmax(0,1fr)}.csl-create-page .csl-template small{display:block}.csl-create-header{margin-top:6px}}@media(prefers-reduced-motion:reduce){.csl-project,.csl-project .csl-project-arrow,.csl-gallery-card{transition:none}}@container (max-width: 490px){.csl-chatbox{padding:14px}.csl-chatbox .t2c-row{flex-wrap:wrap}.csl-chatbox .csl-create{flex-shrink:0;width:auto}}
@@ -0,0 +1,2 @@
1
+ import{p as ie,a8 as G,aA as J,aj as ce,r as Ce,B as ze,dB as Fe,T as Le,X as Ee,M as Ae,ah as Me,I as de,F as ue,n as Te}from"./pageStore-CyvNZEYX.js";import{a as Pe,j as e,u as I,r as l,R as Re,cj as He}from"./index-fDB1l4d-.js";import{b3 as Oe,pk as pe,l as O,pl as se,Y as $,_ as Z,aC as V,pm as $e,X as Ie,fB as Be,pn as _e,bw as W,R as We,nn as Ke,bO as qe,V as ae,fN as me,hY as Ue,po as Ve,pp as Ye,aT as he,aW as ge,pq as Xe,hZ as re,h_ as Ge,h$ as fe,Z as Je,pr as Ze,i3 as Qe}from"./appStore-DDOkzWDA.js";import{P as xe}from"./pencil--sWwxHdP.js";import"./client-fKy9CWk0.js";import{F as et}from"./folder-plus-DP9sFr26.js";import{F as oe}from"./folder-1OJQeDI1.js";import{U as tt}from"./upload-Dy7svciS.js";const nt=[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]],St=ie("check-check",nt);const st=[["path",{d:"M14 9 9 4 4 9",key:"1af5af"}],["path",{d:"M20 20h-7a4 4 0 0 1-4-4V4",key:"1blwi3"}]],at=ie("corner-left-up",st);Pe({"agentLog.days":{zh:"{count} 天有记录",en:"{count} days on record"},"agentLog.older":{zh:"更早的 {count} 天",en:"{count} earlier days"},"agentLog.today":{zh:"今天",en:"Today"},"agentLog.editDay":{zh:"编辑 {date} 的日志",en:"Edit the log for {date}"},"agentLog.rawHint":{zh:"这是这一天的原文。每条以「### 09:30」这样的时间行开头;「@」后面那一串是写入设备的标记,不用改。",en:'This is the raw file for the day. Each entry starts with a time line like "### 09:30"; the code after "@" marks the device that wrote it and can stay as it is.'},"agentLog.error":{zh:"日志操作失败",en:"The log could not be updated"},"agentLog.changed":{zh:"这一天的日志已有新版本,这次没有保存。",en:"This day’s log has a newer version, so nothing was saved."},"agentLog.discardAndReload":{zh:"放弃草稿并载入当前版本",en:"Discard draft and load the current version"}});const le=7,rt=()=>{const n=new Date;return`${n.getFullYear()}-${String(n.getMonth()+1).padStart(2,"0")}-${String(n.getDate()).padStart(2,"0")}`},ve=n=>n.replace(/^# \d{4}-\d{2}-\d{2}[ \t]*\n+/,"").replace(/^(### \d{2}:\d{2}\n)@[0-9a-f]{8} /gm,"$1"),Dt=n=>e.jsx(ot,{...n},JSON.stringify([Oe(n.cfg),n.slug])),ot=({slug:n,active:s=!0})=>{const{t:r}=I(),[i,p]=l.useState(null),[a,y]=l.useState(null),[o,m]=l.useState(null),[u,h]=l.useState(null),[g,d]=l.useState(!1),[f,w]=l.useState(!1),[T,j]=l.useState(""),[F,L]=l.useState(!1),[c,k]=l.useState(0),[b,M]=l.useState(!1),C=l.useRef(0),E=l.useRef(!1),q=l.useRef(!0),B=l.useRef(s),z=u!==null;l.useEffect(()=>{let N=!0;return pe(O(),n).then(D=>{if(!N)return;const P=D.slice().sort((Y,X)=>X.localeCompare(Y));p(P),q.current&&(q.current=!1,y(P[0]??null))}).catch(D=>{N&&(p(P=>P??[]),j(D?.message||r("agentLog.error")))}),()=>{N=!1}},[n,c]),l.useEffect(()=>{const N=++C.current;if(m(null),w(!1),j(""),L(!1),!a){d(!1);return}return d(!0),se(O(),n,a).then(D=>{N===C.current&&m({content:D.content,version:D.version})}).catch(D=>{N===C.current&&j(D?.message||r("agentLog.error"))}).finally(()=>{N===C.current&&d(!1)}),()=>{++C.current}},[a,n,c]),l.useEffect(()=>{s&&!B.current&&!z&&k(N=>N+1),B.current=s},[s]);const H=async()=>{if(!a||!o||u===null||g||E.current)return;E.current=!0;const N=C.current;d(!0),w(!1),j(""),L(!1);try{await $e(O(),n,a,u,o.version);const D=await se(O(),n,a);N===C.current&&(m({content:D.content,version:D.version}),h(null),w(!0))}catch(D){N===C.current&&(D?.status===409?L(!0):j(D?.message||r("agentLog.error")))}finally{E.current=!1,N===C.current&&d(!1)}};if(i===null)return e.jsx("p",{className:"profile-empty","data-testid":"agent-log-panel",children:e.jsx($,{size:14,className:"spin"})});const K=rt(),A=i.slice(le),R=b||a!==null&&A.includes(a),U=N=>{const D=a===N;return e.jsxs("div",{className:"agentmem-log","data-log-date":N,children:[e.jsxs("div",{className:"agentmem-log-row",children:[e.jsxs("button",{type:"button",className:"agentmem-log-head","aria-expanded":D,disabled:z,onClick:()=>y(D?null:N),children:[D?e.jsx(G,{size:12}):e.jsx(J,{size:12}),e.jsx("span",{children:N}),N===K&&e.jsx("small",{children:r("agentLog.today")}),D&&f&&e.jsxs("small",{className:"agentmem-log-saved",children:[e.jsx(ce,{size:11}),r("settings.agents.memSaved")]})]}),D&&o&&!z&&e.jsx("button",{type:"button",className:"harness-undo",title:r("common.edit"),"aria-label":r("agentLog.editDay",{date:N}),onClick:()=>{h(o.content),w(!1)},children:e.jsx(xe,{size:13})})]}),D&&(z?e.jsxs("div",{className:"field agentmem-log-edit",children:[e.jsx("textarea",{"aria-label":r("agentLog.editDay",{date:N}),rows:12,value:u,disabled:g,onChange:P=>h(P.target.value)}),e.jsx("p",{className:"hint",children:r("agentLog.rawHint")}),F&&e.jsxs("p",{role:"alert",className:"agentmem-log-error",children:[r("agentLog.changed")," ",e.jsx("button",{type:"button",className:"profile-text-action",onClick:()=>{h(null),k(P=>P+1)},children:r("agentLog.discardAndReload")})]}),e.jsxs("div",{className:"agentmem-log-actions",children:[e.jsxs("button",{type:"button",className:"btn primary sm",disabled:g,onClick:()=>{H()},children:[g?e.jsx($,{size:13,className:"spin"}):null," ",r("common.save")]}),e.jsx("button",{type:"button",className:"btn sm",disabled:g,onClick:()=>{h(null),j(""),L(!1)},children:r("common.cancel")})]})]}):o&&e.jsx("div",{className:"agentmem-log-body msg-content",children:e.jsx(V,{content:ve(o.content)})}))]},N)};return e.jsxs("div",{className:"profile-log","data-testid":"agent-log-panel","data-agent-slug":n,children:[e.jsxs("div",{className:"harness-summary",children:[e.jsx("span",{children:r("agentLog.days",{count:i.length})}),e.jsxs("button",{type:"button",className:"profile-text-action",disabled:g||z,onClick:()=>k(N=>N+1),children:[e.jsx(Z,{size:12}),r("common.refresh")]})]}),T&&e.jsx("p",{role:"alert",className:"agentmem-log-error",children:T}),i.length?e.jsxs(e.Fragment,{children:[i.slice(0,le).map(U),A.length>0&&e.jsx("div",{className:"agentmem-log agentmem-log-more",children:e.jsx("div",{className:"agentmem-log-row",children:e.jsxs("button",{type:"button",className:"agentmem-log-head","aria-expanded":R,disabled:z,onClick:()=>{R&&a&&A.includes(a)&&y(null),M(!R)},children:[R?e.jsx(G,{size:12}):e.jsx(J,{size:12}),e.jsx("span",{children:r("agentLog.older",{count:A.length})})]})})}),R&&A.map(U)]}):!T&&e.jsx("p",{className:"profile-empty",children:r("settings.agents.noLog")})]})},lt=({containerRef:n,scanTrigger:s})=>{const{t:r}=I(),[i,p]=l.useState([]),[a,y]=l.useState(null),o=l.useCallback(()=>{const u=n.current;if(!u){p(d=>d.length?[]:d);return}const h=u.querySelectorAll('[data-toc-msg-role="user"], [data-toc-level]'),g=[];h.forEach(d=>{if(d.id){if(d.dataset.tocMsgRole==="user"){const f=(d.dataset.tocTitle||d.textContent||"").trim();f&&g.push({id:d.id,level:0,kind:"user",text:f})}else if(d.dataset.tocLevel){const f=(d.textContent||"").trim();f&&g.push({id:d.id,level:Number(d.dataset.tocLevel)||1,kind:"heading",text:f})}}}),p(d=>d.length===g.length&&d.every((f,w)=>f.id===g[w].id&&f.text===g[w].text)?d:g)},[n]);l.useEffect(()=>{o();const u=n.current;if(!u)return;let h=0;const g=new MutationObserver(()=>{cancelAnimationFrame(h),h=requestAnimationFrame(o)});return g.observe(u,{childList:!0,subtree:!0,characterData:!0}),()=>{cancelAnimationFrame(h),g.disconnect()}},[o,n,s]),l.useEffect(()=>{const u=n.current;if(!u||i.length===0)return;const h=new Set,g=new IntersectionObserver(d=>{for(const w of d)w.isIntersecting?h.add(w.target.id):h.delete(w.target.id);const f=i.find(w=>h.has(w.id));f&&y(f.id)},{root:u,rootMargin:"0px 0px -65% 0px",threshold:0});for(const d of i)try{const f=u.querySelector(`#${CSS.escape(d.id)}`);f&&g.observe(f)}catch{}return()=>g.disconnect()},[i,n]);const m=l.useCallback(u=>{const h=n.current;if(!h)return;let g=null;try{g=h.querySelector(`#${CSS.escape(u)}`)}catch{return}if(!g)return;const d=g.getBoundingClientRect().top-h.getBoundingClientRect().top+h.scrollTop;h.scrollTo({top:Math.max(0,d-16),behavior:"smooth"}),y(u)},[n]);return i.length===0?e.jsx("div",{className:"panel-note",children:r("toc.emptyNote")}):e.jsx("div",{className:"toc-list",children:i.map(u=>e.jsxs("button",{type:"button",className:`toc-item${u.kind==="user"?" user":""}${a===u.id?" active":""}`,style:{paddingLeft:6+u.level*14},title:u.text,onClick:()=>m(u.id),children:[u.kind==="user"?e.jsx(Ie,{size:12,className:"toc-ico"}):e.jsx(Be,{size:11,className:"toc-ico"}),e.jsx("span",{className:"toc-text",children:u.text})]},u.id))})};function it(n){if(n==="__host__")return"#b8860b";let s=0;for(let r=0;r<n.length;r++)s=s*31+n.charCodeAt(r)>>>0;return`hsl(${s%360} 62% 45%)`}const ye=({segs:n})=>e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:8},children:n.map((s,r)=>s.t==="tool"?e.jsxs("div",{className:"panel-note",style:{fontSize:"var(--ui-font-caption, 11px)",opacity:s.error?.95:.7},children:["🔧 ",e.jsx("b",{children:s.name}),s.preview?` — ${s.preview.slice(0,200)}`:""]},r):s.t==="vote"?e.jsxs("div",{className:"panel-note",style:{fontSize:"var(--ui-font-caption, 11px)"},children:["🗳 ",s.text]},r):e.jsxs("div",{children:[s.speaker&&e.jsxs("div",{className:"msg-role-with-avatar",style:{color:s.color,fontSize:12,fontWeight:600,marginBottom:2,display:"flex",alignItems:"center",gap:4},children:[e.jsx("span",{className:"msg-avatar fallback",style:{background:s.color,width:16,height:16,fontSize:10},children:s.speaker.slice(0,1)}),e.jsx("span",{children:s.speaker})]}),e.jsx("div",{className:"msg-content",style:{fontSize:"var(--ui-font-meta, 12px)"},children:e.jsx(V,{content:s.text||""})})]},r))}),ct=({sessionId:n,runId:s})=>{const{t:r}=I(),[i,p]=l.useState([]),[a,y]=l.useState(!0),o=l.useRef(null);return l.useEffect(()=>{const m=new AbortController;p([]),y(!0);let u="",h="";const g=d=>p(f=>{const w=f[f.length-1];return w&&w.t==="text"?[...f.slice(0,-1),{...w,text:w.text+d}]:[...f,{t:"text",speaker:u,color:h,text:d}]});return _e(W(n),s,d=>{const f=d.payload||{};switch(d.type){case"group_speaker":f.phase==="start"&&(u=f.name||f.slug||"",h=it(String(f.slug||"")),p(w=>[...w,{t:"text",speaker:u,color:h,text:""}]));break;case"token":f.delta&&g(String(f.delta));break;case"tool_call":p(w=>[...w,{t:"tool",name:String(f.name||"")}]);break;case"group_vote":p(w=>[...w,{t:"vote",text:`${f.endCount}/${f.total} ${r("panel.subchats.voteEnd")}`}]);break;case"group_ended":case"done":case"error":y(!1);break}},m.signal).catch(()=>y(!1)),()=>m.abort()},[n,s,r]),l.useEffect(()=>{o.current?.scrollIntoView({block:"end"})},[i]),e.jsxs("div",{children:[i.length===0&&a&&e.jsxs("div",{className:"panel-note",style:{fontSize:11.5},children:[e.jsx($,{size:12,className:"spin"})," ",r("panel.subchats.connecting")]}),e.jsx(ye,{segs:i}),a&&i.length>0&&e.jsxs("div",{className:"panel-note",style:{fontSize:11.5,marginTop:6},children:[e.jsx($,{size:12,className:"spin"})," ",r("panel.subchats.live")]}),e.jsx("div",{ref:o})]})},dt=({sessionId:n,subChats:s})=>{const{t:r}=I(),i=s||[],[p,a]=l.useState(null),y=i.find(o=>o.id===p)||i[i.length-1]||null;return i.length?e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:2,maxHeight:140,overflowY:"auto"},children:i.map(o=>e.jsxs("div",{role:"button",tabIndex:0,className:`file-row${y?.id===o.id?" selected":""}`,onClick:()=>a(o.id),children:[o.kind==="discussion"?e.jsx(Ce,{size:13}):e.jsx(ze,{size:13}),e.jsx("span",{className:"file-name",title:o.title,children:o.title||o.id.slice(0,8)}),o.streaming&&e.jsx($,{size:12,className:"spin",style:{opacity:.6}})]},o.id))}),e.jsx("div",{style:{height:1,background:"var(--border)"}}),y&&e.jsx("div",{style:{padding:"0 4px"},children:y.kind==="discussion"&&y.runId?e.jsx(ct,{sessionId:n,runId:y.runId}):e.jsxs(e.Fragment,{children:[e.jsx(ye,{segs:y.segs}),y.segs.length===0&&e.jsx("div",{className:"panel-note",style:{fontSize:"var(--ui-font-caption, 11px)"},children:r("panel.subchats.starting")}),y.streaming&&y.segs.length>0&&e.jsxs("div",{className:"panel-note",style:{fontSize:11.5,marginTop:6},children:[e.jsx($,{size:12,className:"spin"})," ",r("panel.subchats.live")]})]})})]}):e.jsx("div",{className:"panel-note",children:r("panel.subchats.empty")})},ut="application/x-tangu-paths",Ct=n=>{const{t:s}=I(),[r,i]=l.useState("workspace"),p=n.view??r,a=e.jsxs(e.Fragment,{children:[p==="workspace"&&e.jsx(pt,{...n}),p==="toc"&&e.jsx(lt,{containerRef:n.chatScrollRef,scanTrigger:n.messages.length}),p==="memory"&&e.jsx(gt,{...n}),p==="subchats"&&e.jsx(dt,{sessionId:n.sessionId,subChats:n.subChats})]});return n.view?e.jsx("div",{className:"right-panel-body",children:a}):e.jsxs("aside",{className:"right-panel",children:[e.jsxs("div",{className:"right-panel-tabs",children:[e.jsxs("button",{className:r==="workspace"?"active":"",onClick:()=>i("workspace"),children:[e.jsx(We,{size:13})," ",s("panel.tab.workspace")]}),e.jsxs("button",{className:r==="toc"?"active":"",onClick:()=>i("toc"),children:[e.jsx(Ke,{size:13})," ",s("panel.tab.toc")]}),e.jsxs("button",{className:r==="memory"?"active":"",onClick:()=>i("memory"),children:[e.jsx(qe,{size:13})," ",s("panel.tab.memory")]}),e.jsxs("button",{className:r==="subchats"?"active":"",onClick:()=>i("subchats"),children:[e.jsx(Ae,{size:13})," ",s("panel.tab.subchats"),n.subChats&&n.subChats.length>0&&e.jsx("span",{style:{marginLeft:3,fontSize:"var(--ui-font-caption, 11px)",fontWeight:700,background:"var(--action-fill)",color:"var(--on-action)",borderRadius:"var(--radius-sm, 6px)",padding:"0 4px",lineHeight:"14px"},children:n.subChats.length})]})]}),e.jsx("div",{className:"right-panel-body",children:a})]})};function we(n){const[s,r]=l.useState(new Set),i=l.useRef(null),p=n.join(`
2
+ `);l.useEffect(()=>{r(m=>{const u=new Set([...m].filter(h=>n.includes(h)));return u.size===m.size?m:u})},[p]);const a=m=>{r(new Set([m])),i.current=m};return{selected:s,onClick:(m,u)=>{if(u.metaKey||u.ctrlKey)r(h=>{const g=new Set(h);return g.has(m)?g.delete(m):g.add(m),g}),i.current=m;else if(u.shiftKey&&i.current){const h=n.indexOf(i.current),g=n.indexOf(m);if(h>=0&&g>=0){const[d,f]=h<g?[h,g]:[g,h];r(new Set(n.slice(d,f+1)))}else a(m)}else a(m)},only:a,clear:()=>{r(new Set),i.current=null}}}const je=({menu:n,onClose:s,autoFocus:r=!1})=>{const[i,p]=l.useState(()=>!Te()),a=l.useRef({menu:n,onClose:s});a.current={menu:n,onClose:s},l.useEffect(()=>{if(i)return;const o=new AbortController;return Fe(a.current.menu.items,{signal:o.signal}).then(m=>{if(!o.signal.aborted){if(!m.handled){p(!0);return}a.current.onClose(),m.value?.run()}}),()=>o.abort()},[i,n.x,n.y]);const y=l.useRef(null);return l.useEffect(()=>{i&&r&&y.current?.focus({preventScroll:!0})},[i,r,n.x,n.y]),l.useEffect(()=>{if(!i)return;const o=performance.now(),m=h=>{h.timeStamp>=o&&s()},u=h=>{h.key==="Escape"&&s()};return window.addEventListener("pointerdown",m),window.addEventListener("contextmenu",m),window.addEventListener("keydown",u),window.addEventListener("blur",m),()=>{window.removeEventListener("pointerdown",m),window.removeEventListener("contextmenu",m),window.removeEventListener("keydown",u),window.removeEventListener("blur",m)}},[s,i]),i?Le.createPortal(e.jsx(Ee,{className:"ctx-menu",role:"menu",x:n.x,y:n.y,onPointerDown:o=>o.stopPropagation(),onContextMenu:o=>{o.preventDefault(),o.stopPropagation()},onKeyDown:o=>{if(o.key==="Escape"||o.key==="Tab"){o.preventDefault(),o.stopPropagation(),s();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(o.key))return;o.preventDefault(),o.stopPropagation();const m=Array.from(o.currentTarget.querySelectorAll("button:not(:disabled)")),u=m.indexOf(document.activeElement),h=o.key==="Home"?0:o.key==="End"?m.length-1:(u+(o.key==="ArrowDown"?1:-1)+m.length)%m.length;m[h]?.focus()},children:n.items.map((o,m)=>e.jsxs(Re.Fragment,{children:[o.separatorBefore&&e.jsx("div",{className:"ctx-separator",role:"separator"}),e.jsxs("button",{ref:m===n.items.findIndex(u=>!u.disabled)?y:void 0,role:"menuitem","aria-label":o.label,disabled:o.disabled,className:`ctx-item${o.danger?" danger":""}`,onClick:()=>{s(),o.run()},children:[o.icon,e.jsx("span",{children:o.label}),o.shortcut&&e.jsx("kbd",{className:"ctx-shortcut","aria-hidden":"true",children:o.shortcut})]})]},m))}),document.body):null},be=(n,s)=>({x:n.clientX,y:n.clientY}),pt=n=>n.sessionConfig?.execMode==="host"&&n.sessionConfig.cwd&&window.tangu?.listDir?e.jsx(mt,{cwd:n.sessionConfig.cwd,running:n.running,onToast:n.onToast,onOpenPreview:n.onOpenPreview}):e.jsx(ht,{...n}),mt=({cwd:n,running:s,onToast:r,onOpenPreview:i})=>{const{t:p}=I(),[a,y]=l.useState(n),[o,m]=l.useState([]),[u,h]=l.useState(!1),[g,d]=l.useState(null),[f,w]=l.useState(""),[T,j]=l.useState(!1),[F,L]=l.useState(""),[c,k]=l.useState(null),[b,M]=l.useState(null),[C,E]=l.useState(null),[q,B]=l.useState(!1),z=we(o.map(t=>t.path)),H=!!window.tangu?.mkdirHost,K=!!window.tangu?.revealHostPath;l.useEffect(()=>{y(n),d(null),j(!1)},[n]);const A=l.useCallback(async()=>{if(window.tangu?.listDir){h(!0);try{m(await window.tangu.listDir(a))}catch(t){r(p("panel.toast.listDirFail",{err:t?.message||t}),!0)}finally{h(!1)}}},[a,r]);l.useEffect(()=>{A()},[A,s]);const R=t=>{const x=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return x>0?t.slice(0,x):t},U=a===n,N=a.startsWith(n)?a.slice(n.length).replace(/^[/\\]+/,""):a,D=t=>{t.isDir||!window.tangu?.readHostFile||i({name:t.name,path:t.path,load:async()=>{const x=await window.tangu.readHostFile(t.path);return x.tooLarge?{tooLarge:!0,size:x.size}:{mimeType:x.mimeType,bytes:fe(x.content),size:x.size,mtimeMs:x.mtimeMs}},download:K?()=>{window.tangu?.revealHostPath?.(t.path)}:void 0})},P=t=>{t.isDir?y(t.path):D(t)},Y=t=>{d(t.path),w(t.name)},X=async t=>{const x=f.trim();if(d(null),!(!x||x===t.name||!window.tangu?.renameHostPath))try{await window.tangu.renameHostPath(t.path,x),A()}catch(S){r(p("panel.toast.renameFail",{err:S?.message||S}),!0)}},Q=async()=>{const t=F.trim();if(j(!1),L(""),!(!t||!window.tangu?.mkdirHost))try{await window.tangu.mkdirHost(a,t),A()}catch(x){r(p("panel.toast.mkdirFail",{err:x?.message||x}),!0)}},ke=async t=>{if(!(!t.length||!window.tangu?.trashHostPath||!window.confirm(t.length===1?p("panel.confirm.trash",{name:t[0].split(/[/\\]/).pop()||""}):p("panel.confirm.trashN",{n:String(t.length)}))))try{for(const S of t)await window.tangu.trashHostPath(S);z.clear(),A()}catch(S){r(p("panel.toast.deleteFail",{err:S?.message||S}),!0)}},Ne=async(t,x)=>{const S=x.filter(v=>v!==t);if(!(!S.length||!window.tangu?.moveHostPath))try{for(const v of S)await window.tangu.moveHostPath(v,t);z.clear(),A()}catch(v){r(p("panel.toast.moveFail",{err:v?.message||v}),!0)}},ee=async(t,x)=>{if(!window.tangu?.copyHostFiles||!window.tangu?.getPathForFile)return;const S=Array.from(t).map(v=>{try{return window.tangu.getPathForFile(v)}catch{return""}}).filter(Boolean);if(S.length)try{const v=await window.tangu.copyHostFiles(S,x);r(p("panel.toast.copied",{n:String(v.copied)})),A()}catch(v){r(p("panel.toast.copyFail",{err:v?.message||v}),!0)}},Se=(t,x)=>{t.preventDefault(),t.stopPropagation();const S=z.selected.has(x.path)?[...z.selected]:[x.path];z.selected.has(x.path)||z.only(x.path);const v=S.length>1,_=[];!v&&!x.isDir&&_.push({label:p("panel.action.preview"),icon:e.jsx(he,{size:13}),run:()=>D(x)}),!v&&H&&_.push({label:p("panel.action.rename"),icon:e.jsx(xe,{size:13}),run:()=>Y(x)}),!v&&K&&_.push({label:p("panel.action.revealInFileManager"),icon:e.jsx(ae,{size:13}),run:()=>window.tangu?.revealHostPath?.(x.path)}),H&&_.push({label:v?p("panel.action.deleteN",{n:String(S.length)}):p("panel.action.moveToTrash"),icon:e.jsx(ge,{size:13}),danger:!0,run:()=>{ke(S)}}),_.length&&k({...be(t,_.length),items:_})},De=(t,x)=>{if(t.altKey&&window.tangu?.startHostDrag){t.preventDefault(),window.tangu.startHostDrag(x.path);return}const S=z.selected.has(x.path)?[...z.selected]:[x.path];M(S),t.dataTransfer.setData(ut,JSON.stringify(S)),t.dataTransfer.effectAllowed="copyMove"},te=(t,x)=>{const S=H&&t.dataTransfer.types.includes("Files");!b&&!S||b?.includes(x)||(t.preventDefault(),t.stopPropagation(),E(x),B(!1))},ne=(t,x)=>{t.preventDefault(),t.stopPropagation();const S=t.dataTransfer.files,v=b;E(null),M(null),S?.length?ee(S,x):v?.length&&Ne(x,v)};return e.jsxs("div",{className:q?"wsfiles dragover":"wsfiles",onClick:t=>{t.target===t.currentTarget&&z.clear()},onDragOver:t=>{H&&t.dataTransfer.types.includes("Files")&&!b&&(t.preventDefault(),B(!0))},onDragLeave:t=>{t.currentTarget.contains(t.relatedTarget)||B(!1)},onDrop:t=>{t.preventDefault(),B(!1),E(null),t.dataTransfer.files?.length&&!b&&ee(t.dataTransfer.files,a)},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:6},children:[e.jsx("span",{className:"panel-section-title",style:{flex:1,padding:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:a,children:N?`…/${N}`:n.split(/[/\\]/).filter(Boolean).pop()||n}),H&&e.jsx("button",{className:"icon-btn",style:{width:24,height:24},onClick:()=>{j(!0),L("")},title:p("panel.action.newFolder"),children:e.jsx(et,{size:13})}),K&&e.jsx("button",{className:"icon-btn",style:{width:24,height:24},onClick:()=>window.tangu?.revealHostPath?.(a),title:p("panel.action.openCurDirInFileManager"),children:e.jsx(ae,{size:13})}),e.jsx("button",{className:"icon-btn",style:{width:24,height:24},onClick:()=>{A()},title:p("panel.action.refresh"),children:u?e.jsx($,{size:13,className:"spin"}):e.jsx(Z,{size:13})})]}),T&&e.jsxs("div",{className:"file-row",style:{cursor:"default"},children:[e.jsx(oe,{size:13,style:{color:"var(--accent-ink)"}}),e.jsx("input",{autoFocus:!0,className:"file-rename-input",value:F,placeholder:p("panel.placeholder.newFolderName"),onChange:t=>L(t.target.value),onKeyDown:t=>{t.key==="Enter"?Q():t.key==="Escape"&&(j(!1),L(""))},onBlur:()=>{j(!1),L("")}}),e.jsxs("span",{className:"file-act",style:{opacity:1},children:[e.jsx("button",{className:"icon-btn",style:{width:22,height:22},title:p("panel.action.create"),onMouseDown:t=>{t.preventDefault(),Q()},children:e.jsx(ce,{size:12})}),e.jsx("button",{className:"icon-btn",style:{width:22,height:22},title:p("panel.action.cancel"),onMouseDown:t=>{t.preventDefault(),j(!1),L("")},children:e.jsx(Me,{size:12})})]})]}),!U&&e.jsxs("div",{className:`file-row${C===R(a)?" drop-target":""}`,role:"button",tabIndex:0,onClick:()=>y(R(a)),onDragOver:t=>te(t,R(a)),onDragLeave:()=>E(null),onDrop:t=>ne(t,R(a)),children:[e.jsx(at,{size:13}),e.jsx("span",{className:"file-name",children:p("panel.parentDir")})]}),o.length===0&&!u&&!T&&e.jsx("div",{className:"panel-note",children:p("panel.emptyDir")}),o.map(t=>{const x=z.selected.has(t.path),S=t.isDir&&C===t.path;return e.jsxs("div",{className:`file-row${x?" selected":""}${S?" drop-target":""}`,role:"button",tabIndex:0,draggable:H&&g!==t.path,onDragStart:v=>De(v,t),onDragEnd:()=>{M(null),E(null)},onDragOver:t.isDir?v=>te(v,t.path):void 0,onDragLeave:t.isDir?()=>E(null):void 0,onDrop:t.isDir?v=>ne(v,t.path):void 0,onClick:v=>{g!==t.path&&z.onClick(t.path,v)},onDoubleClick:()=>{g!==t.path&&P(t)},onContextMenu:v=>Se(v,t),onKeyDown:v=>{g!==t.path&&v.key==="Enter"&&(v.preventDefault(),P(t))},children:[t.isDir?e.jsx(oe,{size:13,style:{color:"var(--accent-ink)"}}):/\.(png|jpe?g|gif|webp|svg|bmp)$/i.test(t.name)?e.jsx(de,{size:13}):e.jsx(ue,{size:13}),g===t.path?e.jsx("input",{autoFocus:!0,className:"file-rename-input",value:f,onClick:v=>v.stopPropagation(),onChange:v=>w(v.target.value),onKeyDown:v=>{v.stopPropagation(),v.key==="Enter"?X(t):v.key==="Escape"&&d(null)},onBlur:()=>d(null)}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"file-name",children:t.name}),!t.isDir&&e.jsx("span",{className:"file-size",children:me(t.size)})]})]},t.path)}),c&&e.jsx(je,{menu:c,onClose:()=>k(null)})]})},ht=({cfg:n,sessionId:s,running:r,onToast:i,onOpenPreview:p})=>{const{t:a}=I(),[y,o]=l.useState([]),[m,u]=l.useState(!1),[h,g]=l.useState(null),d=we(y.map(c=>c.path)),f=l.useCallback(async()=>{u(!0);try{o(await Ue(W(s),s))}catch(c){i(a("panel.toast.workspaceLoadFail",{err:c?.message||c}),!0)}finally{u(!1)}},[n,s,i]);l.useEffect(()=>{f()},[f,r]);const w=c=>{p({name:c.path,load:async()=>{const k=await Ge(W(s),s,c.path);return{mimeType:k.mimeType,bytes:fe(k.content),size:k.size}},download:()=>{re(W(s),s,c.path).catch(k=>i(k.message,!0))}})},T=c=>{re(W(s),s,c).catch(k=>i(k.message,!0))},j=async c=>{if(!(!c.length||!window.confirm(c.length===1?a("panel.confirm.delete",{name:c[0].replace(/^\//,"")}):a("panel.confirm.deleteN",{n:String(c.length)}))))try{for(const b of c)await Qe(W(s),s,b);d.clear(),f()}catch(b){i(b.message,!0)}},F=async c=>{if(!c?.length)return;const k=await Promise.all(Array.from(c).map(async b=>{const M=new Uint8Array(await b.arrayBuffer());let C="";for(let E=0;E<M.length;E+=32768)C+=String.fromCharCode(...M.subarray(E,E+32768));return{path:b.name,content:btoa(C),encoding:"base64",mimeType:b.type}}));try{const b=await Xe(W(s),s,k);i(a("panel.toast.uploaded",{saved:b.saved,total:b.total})),f()}catch(b){i(a("panel.toast.uploadFail",{err:b?.message||b}),!0)}},L=(c,k)=>{c.preventDefault(),c.stopPropagation();const b=d.selected.has(k.path)?[...d.selected]:[k.path];d.selected.has(k.path)||d.only(k.path);const M=b.length>1,C=[];M||C.push({label:a("panel.action.preview"),icon:e.jsx(he,{size:13}),run:()=>w(k)}),M||C.push({label:a("panel.action.download"),icon:e.jsx(Je,{size:13}),run:()=>T(k.path)}),C.push({label:M?a("panel.action.deleteN",{n:String(b.length)}):a("panel.action.delete"),icon:e.jsx(ge,{size:13}),danger:!0,run:()=>{j(b)}}),g({...be(c,C.length),items:C})};return e.jsxs("div",{onClick:c=>{c.target===c.currentTarget&&d.clear()},onDragOver:c=>c.preventDefault(),onDrop:c=>{c.preventDefault(),F(c.dataTransfer.files)},children:[e.jsxs("div",{style:{display:"flex",gap:4,marginBottom:6},children:[e.jsx("span",{className:"panel-section-title",style:{flex:1,padding:0},children:a("panel.sessionFiles")}),e.jsxs("label",{className:"icon-btn",style:{width:24,height:24},title:a("panel.action.uploadFile"),children:[e.jsx(tt,{size:13}),e.jsx("input",{type:"file",multiple:!0,hidden:!0,onChange:c=>{F(c.target.files),c.target.value=""}})]}),e.jsx("button",{className:"icon-btn",style:{width:24,height:24},onClick:()=>{f()},title:a("panel.action.refresh"),children:m?e.jsx($,{size:13,className:"spin"}):e.jsx(Z,{size:13})})]}),y.length===0&&e.jsx("div",{className:"panel-note",children:a("panel.noFilesYet")}),y.map(c=>{const k=d.selected.has(c.path);return e.jsxs("div",{className:`file-row${k?" selected":""}`,role:"button",tabIndex:0,onClick:b=>d.onClick(c.path,b),onDoubleClick:()=>w(c),onContextMenu:b=>L(b,c),onKeyDown:b=>{b.key==="Enter"&&(b.preventDefault(),w(c))},children:[c.mimeType.startsWith("image/")?e.jsx(de,{size:13}):e.jsx(ue,{size:13}),e.jsx("span",{className:"file-name",children:c.path.replace(/^\//,"")}),e.jsx("span",{className:"file-size",children:me(c.size)})]},c.path)}),h&&e.jsx(je,{menu:h,onClose:()=>g(null)})]})},gt=({cfg:n,sessionConfig:s,onToast:r})=>{const i=s?.groupChat&&s.groupAgents?.length?Array.from(new Set(s.groupAgents)):[s?.agentSlug||He];return e.jsx("div",{children:i.map(p=>e.jsx(ft,{cfg:n,slug:p,onToast:r,showName:i.length>1,canAppend:i.length===1},p))})},ft=({cfg:n,slug:s,onToast:r,showName:i,canAppend:p})=>{const{t:a}=I(),[y,o]=l.useState(null),[m,u]=l.useState([]),[h,g]=l.useState(null),[d,f]=l.useState(""),w=l.useCallback(async()=>{try{o(await Ve(O(),s))}catch(j){o(null),r(a("panel.toast.memoryLoadFail",{err:j?.message||j}),!0)}try{const j=(await pe(O(),s)).slice().sort((c,k)=>k.localeCompare(c)).slice(0,3),L=(await Promise.all(j.map(async c=>({date:c,content:await Ye(O(),s,c)})))).filter(c=>c.content.trim());u(L)}catch{u([])}},[n,s,r,a]);l.useEffect(()=>{w()},[w]);const T=async()=>{const j=d.trim();if(j)try{const F=await Ze(O(),j,s);r(F.appended?a("panel.toast.memorySaved"):a("panel.toast.memoryNotWritten")),f(""),w()}catch(F){r(a("panel.toast.appendFail",{err:F?.message||F}),!0)}};return e.jsxs("div",{className:"agentmem",children:[i&&e.jsx("div",{className:"agentmem-agent",children:s}),e.jsx("div",{className:"panel-section-title",children:a("panel.memory.currentAgent")}),y===null&&e.jsx("div",{className:"panel-note",children:a("panel.memory.notConnected")}),y!==null&&(y.trim()?e.jsx("div",{style:{fontSize:"var(--ui-font-meta, 12px)",padding:"0 8px"},className:"msg-content",children:e.jsx(V,{content:y})}):e.jsx("div",{className:"panel-note",children:a("panel.memory.empty")})),p&&e.jsxs("div",{style:{display:"flex",gap:6,padding:"8px 8px 0"},children:[e.jsx("input",{type:"text",value:d,placeholder:a("panel.memory.appendPlaceholder"),onChange:j=>f(j.target.value),onKeyDown:j=>j.key==="Enter"&&void T(),style:{flex:1,fontSize:"var(--ui-font-meta, 12px)",padding:"5px 8px",background:"var(--bg-card)",border:"var(--border-width) solid var(--border)",borderRadius:"var(--radius-sm)",outline:"none"}}),e.jsx("button",{className:"btn ghost sm",onClick:()=>{T()},children:a("panel.memory.append")})]}),e.jsx("div",{className:"panel-section-title",style:{marginTop:14},children:a("panel.memory.recentLogs")}),m.length===0&&e.jsx("div",{className:"panel-note",children:a("panel.log.none")}),m.map(j=>{const F=h===j.date;return e.jsxs("div",{className:"agentmem-log",children:[e.jsxs("button",{className:"agentmem-log-head",onClick:()=>g(F?null:j.date),children:[F?e.jsx(G,{size:12}):e.jsx(J,{size:12}),e.jsx("span",{children:j.date})]}),F&&e.jsx("div",{className:"agentmem-log-body msg-content",children:e.jsx(V,{content:ve(j.content)})})]},j.date)})]})};export{Dt as A,St as C,Ct as R,je as a,be as m};
@@ -0,0 +1 @@
1
+ import{p as t}from"./pageStore-CyvNZEYX.js";const e=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],i=t("layout-grid",e);export{i as L};
@@ -0,0 +1,8 @@
1
+ import{a as gt,t as B,aI as v,h as rt,e as at,s as kt,l as bt,q as vt,r as ft,H as Pt,k as Ct,i as Nt}from"./index-fDB1l4d-.js";import{bj as xt,cI as zt,aD as Dt,a9 as Kt}from"./pageStore-CyvNZEYX.js";import{c as Ot}from"./client-fKy9CWk0.js";import{mE as F,mL as it,mB as G,mU as $,mR as j,ps as Rt,mM as z,mV as _t,oe as Bt,pt as jt,pu as Wt}from"./appStore-DDOkzWDA.js";import{$ as X,a as qt}from"./index-CmsN2Zm2.js";gt({"srctoggle.viewSource":{zh:"查看源码",en:"View source"}});function ct(t,e){const n=Math.min(e+1,t.state.doc.content.size);t.dispatch(t.state.tr.setSelection(F.create(t.state.doc,n))),t.focus()}function yt(t,e,n,r=!1){if(!e.editable)return;const s=document.createElement("button");s.type="button",s.className=`amx-src-btn${r?" amx-src-btn--inline":""}`,s.title=B("srctoggle.viewSource"),s.setAttribute("aria-label",B("srctoggle.viewSource")),s.contentEditable="false",s.textContent="</>",s.addEventListener("mousedown",o=>{o.preventDefault(),o.stopPropagation()}),s.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),typeof n=="function"?n():ct(e,n)}),t.classList.add("amx-has-src-btn"),t.appendChild(s)}const T=new it("amx-editor-focus"),D=t=>T.getState(t)??!1;function we(){return X(()=>new G({key:T,state:{init:()=>!1,apply:(t,e)=>{const n=t.getMeta(T);return typeof n=="boolean"?n:e}},view:t=>(queueMicrotask(()=>{!t.isDestroyed&&t.hasFocus()&&!D(t.state)&&t.dispatch(t.state.tr.setMeta(T,!0))}),{}),props:{handleDOMEvents:{focus:t=>(t.dispatch(t.state.tr.setMeta(T,!0)),!1),blur:t=>(D(t.state)&&t.dispatch(t.state.tr.setMeta(T,!1)),!1)}}}))}gt({"mathlive.renderFailedTitle":{zh:"LaTeX 无法渲染",en:"LaTeX could not be rendered"},"mathlive.renderFailedBadge":{zh:"公式无法渲染",en:"Formula could not be rendered"}});function Et(t){const e=[],n=t.length,r=o=>o===" "||o===" "||o===`
2
+ `||o===void 0;let s=0;for(;s<n;){if(t[s]==="$"){if(t[s+1]==="$"){if(t[s+2]!=="$"){const o=t.indexOf("$$",s+2);if(o>s+1){const a=t.slice(s+2,o).trim();if(a){e.push({from:s,to:o+2,latex:a,display:!0}),s=o+2;continue}}}s+=2;continue}if(!r(t[s+1])){let o=s+1,a=-1;for(;o<n;){const i=t[o];if(i===`
3
+ `)break;if(i==="$"){!r(t[o-1])&&!/[A-Za-z0-9]/.test(t[o+1]??"")&&(a=o);break}o++}if(a>s+1){e.push({from:s,to:a+1,latex:t.slice(s+1,a),display:!1}),s=a+1;continue}}}s++}return e}const Ht=new Set(["hardbreak","hard_break","break"]);function U(t){let e="";return t.forEach(n=>{if(n.isText){const r=n.marks.some(a=>a.type.name==="code"||a.type.name==="inlineCode"),s=n.text??"",o=!r&&n.marks.some(a=>a.type.name==="amadeusEscaped");e+=r?" ".repeat(s.length):o?s.replace(/[[\]$=%#]/g,""):s}else Ht.has(n.type.name)?e+=`
4
+ `:e+="".repeat(n.nodeSize)}),e}function pt(t,e,n){try{Rt.render(e,t,{throwOnError:!1,displayMode:n,errorColor:"#e5484d"});const r=t.querySelector(".katex-error");if(r){const s=r.getAttribute("title")||B("mathlive.renderFailedTitle");t.replaceChildren();const o=document.createElement("span");o.className="math-error",o.title=s,o.textContent=n?`⚠ ${B("mathlive.renderFailedBadge")}`:"⚠",t.appendChild(o)}}catch{t.textContent=n?`$$${e}$$`:`$${e}$`}}function mt(t,e,n,r,s=!1){if(s){const a=document.createElement(n?"div":"span");a.className=n?"math-preview math-preview--block":"math-preview math-preview--inline",a.contentEditable="false";const i=document.createElement(n?"div":"span");return i.className="math-preview-inner",pt(i,e,n),a.appendChild(i),a}const o=document.createElement(n?"div":"span");return o.className=n?"math-rendered math-rendered--block":"math-rendered",o.contentEditable="false",pt(o,e,n),yt(o,t,()=>{const a=r();a!=null&&ct(t,a)},!n),o.addEventListener("mousedown",a=>{if(!t.editable)return;a.preventDefault();const i=r();if(i==null)return;const u=Math.min(i+1,t.state.doc.content.size);t.dispatch(t.state.tr.setSelection(F.create(t.state.doc,u)).setMeta(T,!0)),t.focus()}),o}const Vt=/(^```[\s\S]*?^```[^\n]*$)/m;function wt(t){if(t.indexOf("$")===-1)return[];const e=[];let n=0;return t.split(Vt).forEach((r,s)=>{if(s%2===0&&r.indexOf("$")!==-1)for(const o of Et(r))e.push({...o,from:o.from+n,to:o.to+n});n+=r.length}),e}function Se(t){const e=wt(t);if(!e.length)return t;let n="",r=0;for(const s of e)n+=t.slice(r,s.from)+t.slice(s.from,s.to).replace(/\\([!-/:-@[-`{-~])/g,"$1"),r=s.to;return n+t.slice(r)}const _="amadeusEscapes",Gt="amadeusLiteralEscapes",Xt={exit:{characterEscapeValue(t){const e=this.stack.pop();((e.data||={})[_]||=[]).push([e.value.length,t.start.offset]),e.value+=this.sliceSerialize(t),e.position.end={line:t.end.line,column:t.end.column,offset:t.end.offset}}}};function Ut(t,e){const n=[],r=l=>{l?.type==="text"&&l.data?.[_]&&n.push(l);for(const d of l?.children??[])r(d)};if(r(t),!n.length)return;const s=e.charCodeAt(0)===65279?1:0,o=n.map(l=>{const d=[];for(const[c,g]of l.data[_]){const x=g+s;e[x-1]==="\\"&&e[x]===l.value[c]&&d.push([c,x])}return delete l.data[_],d}),a=new Set;for(const l of o)for(const[,d]of l)e[d]==="$"&&a.add(d);let i=e,u=l=>l;if(a.size){const l=[];let d="";for(let c=0;c<e.length;c++)a.has(c+1)||(d+=e[c],l.push(c));l.push(e.length),i=d,u=c=>l[c]}const m=[];for(const l of wt(i)){const d=l.display?2:1,c=[];for(let g=0;g<d;g++)c.push(u(l.from+g),u(l.to-1-g));c.some(g=>a.has(g))||m.push([u(l.from+d-1)+1,u(l.to-d)])}n.forEach((l,d)=>{const c=[],g=[];for(const[p,w]of o[d])m.some(([h,E])=>w-1>=h&&w<E)?c.push(p):g.push(p);let x=l.value;for(const p of[...c].sort((w,h)=>h-w))x=x.slice(0,p)+"\\"+x.slice(p);l.value=x,g.length&&((l.data||={})[Gt]=g.map(p=>p+c.filter(w=>w<p).length))})}function Yt(){const t=this.data();return(t.fromMarkdownExtensions||=[]).push(Xt),(e,n)=>Ut(e,String(n?.value??""))}const Me=qt("amadeusMathEscapes",()=>Yt),Zt=new it("amadeus-math-live-preview");function Jt(t){const e=D(t),n=[],r=t.selection.from,s=t.selection.to;return t.doc.descendants((o,a)=>{if(!o.isTextblock)return!0;if(o.type.spec.code)return!1;const i=a+1,u=U(o);if(u.indexOf("$")===-1)return!1;const m=Et(u);if(!m.length)return!1;let l=-1,d=-1;if(e&&r<=i+o.content.size&&s>=i){const c=Math.max(0,Math.min(u.length,r-i)),g=Math.max(0,Math.min(u.length,s-i));l=u.lastIndexOf(`
5
+ `,c-1)+1;const x=u.indexOf(`
6
+ `,g);d=x===-1?u.length:x}for(const c of m){if(l!==-1&&c.from<d&&c.to>l){const E=c.display?i+c.to:i+c.from;n.push($.widget(E,(S,M)=>mt(S,c.latex,c.display,M,!0),{side:c.display?1:-1,ignoreSelection:!0,key:`p:${c.display?"b":"i"}:${c.latex}`}));continue}const x=i+c.from,p=i+c.to,{latex:w,display:h}=c;n.push($.inline(x,p,{class:"math-src-hidden"})),n.push($.widget(x,(E,S)=>mt(E,w,h,S),{side:-1,ignoreSelection:!0,key:`m:${h?"b":"i"}:${w}`}))}return!1}),n.length?j.create(t.doc,n):j.empty}function $e(){return X(()=>new G({key:Zt,props:{decorations:t=>Jt(t)}}))}const Qt=new WeakSet;function te(t){if(t.tagName!=="P")return t;const e=t.querySelector(":scope > img:not(.ProseMirror-separator), :scope > .wiki-inline-img-wrap, :scope > .unified-embed");if(!e)return t;const n=[...t.children].some(s=>s!==e&&!s.matches(".ProseMirror-separator, .ProseMirror-trailingBreak, .wikilink-src-hidden")),r=[...t.childNodes].some(s=>s.nodeType===Node.TEXT_NODE&&!!s.textContent?.trim());return n||r?t:e}function St(t){const e=t.parentElement;return e&&te(e)===t?e:null}const Mt=".amx-img-resize, .amx-src-btn, .amx-img-srcline";function ee(t,e,n,r){if(n.button!==0||n.detail>1||!t.editable||!Qt.has(t)||n.target?.closest?.(Mt)||!St(e))return!1;e.draggable=!0;const s=new AbortController,o={signal:s.signal,once:!0},a=()=>{e.removeAttribute("draggable"),s.abort()};return e.addEventListener("click",()=>{a(),r()},o),window.addEventListener("mouseup",()=>setTimeout(a,0),{...o,capture:!0}),e.addEventListener("dragend",a,o),window.addEventListener("blur",a,o),!0}function Le(t){const e=t,n=e?.closest?.(".wiki-inline-img-wrap");return!n||e.closest(Mt)?null:St(n)}const $t=/\.(png|jpe?g|gif|webp|svg|avif|bmp)$/i,ne={pdf:'<path d="M12 7v14"/><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"/>',draw:'<path d="M8.3 10a.7.7 0 0 1-.63-1.08L11.4 3a.7.7 0 0 1 1.2-.04L16.3 8.9a.7.7 0 0 1-.57 1.1z"/><rect x="3" y="14" width="7" height="7" rx="1"/><circle cx="17.5" cy="17.5" r="3.5"/>',db:'<rect width="18" height="18" x="3" y="3" rx="2"/><path d="M3 9h18M3 15h18M9 3v18"/>',media:'<rect width="18" height="18" x="3" y="3" rx="2"/><path d="m10 8 6 4-6 4z"/>',image:'<rect width="18" height="18" x="3" y="3" rx="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.09-3.09a2 2 0 0 0-2.82 0L6 21"/>',file:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/>'};function se(t,e){return rt(t)||/\.pdf$/i.test(e)?"pdf":at(t)?"media":Nt(e)?"draw":zt(e)?/\.db$/i.test(e)?"db":$t.test(e)?"image":"file":null}function oe(t){const e=document.createElementNS("http://www.w3.org/2000/svg","svg");return e.setAttribute("class","wikilink-ic"),e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("aria-hidden","true"),e.innerHTML=ne[t],e}const W=typeof navigator<"u"&&/Mac|iP(hone|[oa]d)/.test(navigator.platform);function Lt(t,e){if(!e)return null;const[n,r]=t.split("|"),s=n.trim();if(!$t.test(s))return null;const o=r?.trim();return{url:vt(s),width:o&&/^\d+$/.test(o)?Number(o):void 0,name:s}}function At(t){if(rt(t)||at(t))return t;const e=kt(t);return e?.subpath?`${e.target}#${e.subpath}`:bt(t)}function re(t,e){const n=U(t);if(n.indexOf("[[")===-1)return null;let r=null;v.lastIndex=0;let s;for(;s=v.exec(n);){const o=s.index,a=s.index+s[0].length;if(!(e<o||e>a)&&!Lt(s[1],o>0&&n[o-1]==="!")){if(e>o&&e<a)return s[1];r??=s[1]}}return r}const q=new it("amadeus-wikilink-live");function ae(t,e){const n=t.indexOf("|");if(n!==-1){const s=t.slice(n+1).trim();if(s)return s}if(e){const s=Ct(e.subpath)?e.subpath:e.subpath.split("#").map(o=>o.trim()).filter(Boolean).join(" › ");return e.target?`${e.target} › ${s}`:s}return(n===-1?t:t.slice(n+1)).trim()||t.trim()}const ot=new WeakMap;function ie(t,e,n){const r=document.createElement("span");r.className="wikilink amx-app-ref",H(r,e,n);const s=document.createElement("span");s.className="app-ref";const o=document.createElement("span");o.className="app-ref-ico",s.append(o,t.name),r.appendChild(s),r.addEventListener("mousedown",i=>{(i.button!==0||!(i.shiftKey||i.altKey)||W&&i.ctrlKey)&&i.preventDefault()}),r.addEventListener("click",i=>{(i.shiftKey||i.altKey||W&&i.ctrlKey)&&i.stopPropagation()},!0),r.addEventListener("contextmenu",i=>i.stopPropagation());const a=Ot.createRoot(r);return a.render(ft.createElement(Pt,null,ft.createElement(jt,{appRef:t}))),ot.set(r,a),r}function ce(t){const e=ot.get(t);e&&(ot.delete(t),queueMicrotask(()=>e.unmount()))}function le(t,e,n,r){const s=D(t),o=q.getState(t)?.sourceFrom??null,a=[],i=t.selection.from,u=t.selection.to;return t.doc.descendants((m,l)=>{if(!m.isTextblock)return!0;if(m.type.spec.code)return!1;const d=l+1,c=U(m);if(c.indexOf("[[")===-1)return!1;let g=-1,x=-1;if(s&&i>=d&&u<=d+m.content.size){const w=Math.max(0,Math.min(c.length,i-d)),h=Math.max(0,Math.min(c.length,u-d));g=c.lastIndexOf(`
7
+ `,w-1)+1;const E=c.indexOf(`
8
+ `,h);x=E===-1?c.length:E}v.lastIndex=0;let p;for(;p=v.exec(c);){const w=p.index>0&&c[p.index-1]==="!",h=Lt(p[1],w),E=h?p.index-1:p.index,S=p.index+p[0].length,M=d+E,K=d+S,Y=!!h&&E===0&&S===c.length;h&&s&&(i===M&&u===K||Y&&t.selection instanceof z&&i===l&&l+m.nodeSize);const lt=g!==-1&&E<x&&S>g;if(!h&&lt||h&&lt&&o===M)continue;if(h){const L=S-E;a.push($.inline(M,K,{class:"wikilink-src-hidden"})),a.push($.widget(M,(k,y)=>{const f=document.createElement("span");f.className="wiki-inline-img-wrap",f.contentEditable="false",H(f,y,L);const C=()=>{const b=y();return b==null?null:{from:b,to:b+L}},A=document.createElement("img");A.className="wiki-inline-img",A.src=h.url,A.alt=h.name,h.width&&(A.style.width=`${h.width}px`),f.appendChild(A),Bt(f,A,()=>h.name);const N=()=>{const b=C();if(!b)return;const R=Y?k.state.tr.setSelection(z.create(k.state.doc,b.from-1)):k.state.tr.setSelection(F.create(k.state.doc,b.from,b.to));k.dispatch(R),k.focus()};return f.addEventListener("mousedown",b=>{b.button!==0||b.target.closest(".amx-img-resize, .amx-src-btn")||(b.stopPropagation(),!ee(k,f,b,N)&&(b.preventDefault(),N()))}),yt(f,k,()=>{const b=C();if(!b)return;const R=k.state.tr.setSelection(F.create(k.state.doc,Math.min(b.from+1,k.state.doc.content.size)));R.setMeta(q,{sourceFrom:b.from}),k.dispatch(R),k.focus()}),f},{side:-1,ignoreSelection:!0,key:`i:${Y?1:0}:${p[0]}`}));continue}const ut=xt(p[1]);if(ut){const L=S-E;a.push($.inline(M,K,{class:"wikilink-src-hidden"})),a.push($.widget(M,(k,y)=>ie(ut,y,L),{side:-1,ignoreSelection:!0,key:`a:${p[0]}`,stopEvent:k=>k.type.startsWith("key"),destroy:ce}));continue}const P=bt(p[1]),Z=rt(p[1])||!!at(p[1])?null:kt(p[1]),J=Z?.subpath?{target:Z.target,subpath:Z.subpath}:null,Q=ae(p[1],J),O=J&&!J.target?!0:n(P),tt=O&&P?r?.(P):void 0,dt=O?se(p[1],P):null,et=At(p[1]);a.push($.inline(M,K,{class:"wikilink-src-hidden"})),a.push($.widget(M,(L,k)=>{const y=document.createElement("span");if(y.className=O?"wikilink":"wikilink wikilink-unresolved",y.setAttribute("role","link"),y.setAttribute("data-wiki",P),H(y,k,S-E),tt){const f=document.createElement("span");f.className="wikilink-emoji",f.textContent=tt,y.append(f,Q)}else dt?y.append(oe(dt),Q):y.textContent=Q;return y.addEventListener("mousedown",f=>{if(f.button===2||W&&f.button===0&&f.ctrlKey){f.preventDefault();return}if(f.button===1){f.preventDefault(),e(et,{newTab:!0});return}f.button!==0||f.shiftKey||f.altKey||(f.preventDefault(),e(et,(W?f.metaKey:f.ctrlKey)?{newTab:!0}:void 0))}),y.addEventListener("contextmenu",f=>{f.stopPropagation();const C=L.editable?()=>{const N=k();N!=null&&ct(L,N+1)}:void 0;!y.dispatchEvent(new CustomEvent("amadeus:wikilink-menu",{bubbles:!0,cancelable:!0,detail:{inner:et,x:f.clientX,y:f.clientY,edit:C}}))&&f.preventDefault()}),y},{side:-1,ignoreSelection:!0,key:`w:${p[0]}:${O?1:0}:${tt??""}`}))}return!1}),a.length?j.create(t.doc,a):j.empty}const nt=new WeakMap,st=new WeakMap,Tt=new WeakMap;function H(t,e,n){Tt.set(t,{getPos:e,len:n});const r=e();r!=null&&(t.dataset.srcFrom=String(r),t.dataset.srcTo=String(r+n))}function ue(t){const{from:e,to:n}=t.state.selection,r=D(t.state);for(const u of t.dom.querySelectorAll(".wikilink[data-src-from], .wiki-inline-img-wrap[data-src-from]")){const m=Tt.get(u);m&&H(u,m.getPos,m.len);const l=Number(u.dataset.srcFrom),d=Number(u.dataset.srcTo);e!==n&&e<d&&n>l?u.dataset.rangeSelected="":delete u.dataset.rangeSelected}const s=st.get(t)??null;let o=e,a=n;t.state.selection instanceof z&&t.state.selection.node.type.name==="paragraph"&&(o=e+1,a=n-1);const i=r&&o!==a?t.dom.querySelector(`.wiki-inline-img-wrap[data-src-from="${o}"][data-src-to="${a}"]`):null;if(s!==i){if(s&&(delete s.dataset.selected,nt.get(s)?.(),nt.delete(s)),i){i.dataset.selected="";const u=i.querySelector("img");u&&t.editable&&nt.set(i,_t(i,u,m=>{const l=(t.state.doc.textBetween(o,a).match(/^!\[\[([^\]\n|]+)/)??[])[1];if(!l)return;const d=`![[${l}|${m}]]`,c=t.state.tr.insertText(d,o,a);t.state.selection instanceof z?c.setSelection(z.create(c.doc,e)):c.setSelection(F.create(c.doc,o,o+d.length)),t.dispatch(c)}))}i?st.set(t,i):st.delete(t)}}function de(t,e){const n=t.state.selection;if(!(n instanceof F)||!n.empty||!n.$head.parent.isTextblock)return null;try{const a=t.coordsAtPos(n.head),i=t.coordsAtPos(e==="up"?n.$head.start():n.$head.end());if(Math.abs(a.top-i.top)>Math.max(2,a.bottom-a.top))return null}catch{if(e==="up"?n.$head.parentOffset!==0:n.$head.parentOffset!==n.$head.parent.content.size)return null}const r=[];t.state.doc.descendants((a,i)=>{if(!a.isTextblock)return!0;const u=U(a);let m=null;v.lastIndex=0;const l=v.exec(u);return l&&l.index===0&&l[0].length===u.length&&(m=i+1),r.push({pos:i,size:a.nodeSize,sourceFrom:m}),!1});const s=r.findIndex(a=>n.head>a.pos&&n.head<a.pos+a.size),o=r[s+(e==="up"?-1:1)];return o?.sourceFrom==null?null:o.sourceFrom+2}function Ae(t,e=()=>!0,n){return X(()=>new G({key:q,view:()=>({update:ue}),state:{init:()=>({sourceFrom:null}),apply:(r,s)=>{const o=r.getMeta(q);let a=s.sourceFrom;if(a!=null&&r.docChanged&&(a=r.mapping.map(a)),o&&typeof o.sourceFrom=="number")a=o.sourceFrom;else if(a!=null&&r.selectionSet){const i=r.doc.nodeAt(Math.max(0,a-1)),u=Math.max(0,a-1);(!i||r.selection.to<=u||r.selection.from>=u+i.nodeSize)&&(a=null)}return a===s.sourceFrom?s:{sourceFrom:a}}},props:{handleKeyDown:(r,s)=>{if(s.key!=="ArrowUp"&&s.key!=="ArrowDown"||s.metaKey||s.ctrlKey||s.altKey||s.shiftKey)return!1;const o=de(r,s.key==="ArrowUp"?"up":"down");return o==null?!1:(r.dispatch(r.state.tr.setSelection(F.create(r.state.doc,o)).scrollIntoView()),!0)},decorations:r=>le(r,t,e,n)}}))}function Ft(t){const e=t.selection.$head;if(!e.parent.isTextblock||e.parent.type.spec.code)return null;const n=re(e.parent,e.parentOffset),r=n===null?null:xt(n);if(r)return{kind:"app",ref:r};const s=n===null?"":At(n);if(s)return{kind:"wiki",arg:s};const o=t.schema.marks.link;if(!o)return null;const i=(o.isInSet(e.nodeAfter?.marks??[])??o.isInSet(e.nodeBefore?.marks??[]))?.attrs.href;return typeof i=="string"&&i?{kind:"href",href:i}:null}const V=new Map;let I=null;function fe(t){return X(()=>new G({view:e=>(V.set(e,t),{destroy:()=>{V.delete(e),I===e&&(I=null)}}),props:{handleDOMEvents:{focus:e=>(I=e,!1)}}}))}function pe(){const t=typeof document<"u"?document.activeElement:null;if(t){for(const e of V.keys())if(e.dom.contains(t))return e}return I&&I.dom.isConnected?I:null}function It(t,e){const n=Ft(t.state),r=V.get(t);return!n||!r?!1:(r(n,e),!0)}function me(t){const e=pe();e&&It(e,t==="followNewTab")}function ht(t){const e=t.toLowerCase().split("+").map(r=>r.trim()),n=e.pop()??"";return[...e.sort(),n].join("+")}function he(t){if(t.isComposing)return null;const e=Dt(t);if(!e)return null;const n=ht(e);for(const r of Wt){const s=Kt(r);if(s&&ht(s)===n)return r.kind}return null}const Te=Object.freeze(Object.defineProperty({__proto__:null,followLinkAt:It,linkAtCursor:Ft,linkFollowPlugin:fe,linkKindOfEvent:he,runLinkCommand:me},Symbol.toStringTag,{value:"Module"}));export{W as I,Gt as L,yt as a,U as b,Qt as c,T as d,D as e,ee as f,we as g,$e as h,Le as i,he as j,Ft as k,fe as l,Me as m,Te as n,Et as s,Se as u,te as v,Ae as w};
@@ -0,0 +1 @@
1
+ import{a as z,E as C,t as F}from"./index-fDB1l4d-.js";import{$ as L}from"./index-CmsN2Zm2.js";import{mL as M,mB as $,mR as x,mF as S,mU as h}from"./appStore-DDOkzWDA.js";z({"headfold.expandSection":{zh:"展开小节",en:"Expand section"}});const u=new M("AMX_HEADING_FOLD");function p(e,o){if(!Number.isInteger(o)||o<0||o>e.content.size)return null;let t;try{t=e.resolve(o)}catch{return null}const n=t.nodeAfter;return!n||n.type.name!=="heading"?null:{parent:t.parent,index:t.index(),base:t.start()}}function y(e){const o=[];let t=e.base;return e.parent.forEach(n=>{o.push(t),t+=n.nodeSize}),o}function b(e,o){const t=e.child(o),n=Number(t.attrs.level)||1;let l=o;for(let i=o+1;i<e.childCount;i++){const d=e.child(i);if(d.type.name==="heading"&&(Number(d.attrs.level)||1)<=n)break;l=i}return l===o?null:l}function D(e,o){const t=[];for(const n of o){const l=p(e,n);if(!l)continue;const i=b(l.parent,l.index);if(i==null)continue;const d=y(l);t.push(h.node(n,n+l.parent.child(l.index).nodeSize,{class:"amx-heading-folded"}));for(let s=l.index+1;s<=i;s++)t.push(h.node(d[s],d[s]+l.parent.child(s).nodeSize,{class:"amx-fold-hidden"}));t.push(h.widget(n+1,(s,c)=>{const r=document.createElement("button");r.type="button",r.className="amx-fold-caret",r.textContent="▸",r.contentEditable="false";const a=()=>{r.title=F("headfold.expandSection"),r.setAttribute("aria-label",r.title)};return a(),r.setAttribute("aria-expanded","false"),r.__off=C(a),r.addEventListener("mousedown",_=>{_.preventDefault(),_.stopPropagation();const A=c();if(A==null)return;const E=s.state.doc.resolve(A);H(s,E.before(E.depth))}),r},{side:-1,ignoreSelection:!0,key:`amxfold:${n}`,destroy:s=>{s.__off?.()}}))}return x.create(e,t)}function K(e){const o=[];return e.descendants((t,n)=>{if(t.type.name!=="heading")return!0;const l=p(e,n);return l&&b(l.parent,l.index)!=null&&o.push(n),!1}),o}function H(e,o){e.dispatch(e.state.tr.setMeta(u,{toggle:o}))}function O(e,o){const t=u.getState(e.state),n=p(e.state.doc,o);return!n||b(n.parent,n.index)==null?null:t?.folded.includes(o)?"folded":"foldable"}function g(e,o){const t=[];for(const n of o){const l=p(e,n);if(!l)continue;const i=b(l.parent,l.index);if(i==null)continue;const d=y(l);t.push({start:d[l.index+1],after:d[i]+l.parent.child(i).nodeSize})}return t}function T(e,o){const t=p(e,o);if(!t)return null;const n=b(t.parent,t.index)??t.index;return y(t)[n]+t.parent.child(n).nodeSize}function X(e,o){if(!u.getState(e)?.folded.includes(o))return null;const n=g(e.doc,[o])[0];return n?n.after:null}function j(e,o){const t=u.getState(e);if(!t?.folded.length)return null;for(const n of t.folded)for(const l of g(e.doc,[n]))if(o>l.start&&o<l.after)return n;return null}const B=[L(()=>new $({key:u,state:{init:()=>({folded:[],decos:x.empty}),apply:(e,o,t)=>{let n=o.folded;if(e.docChanged&&(n=n.map(d=>e.mapping.mapResult(d)).filter(d=>!d.deleted||p(e.doc,d.pos)!=null).map(d=>d.pos)),e.docChanged&&e.getMeta("uiEvent")==="drop"){const d=[];e.mapping.maps[e.mapping.maps.length-1].forEach((s,c,r,a)=>{a>r&&d.push([r,a])}),n=n.filter(s=>!g(e.doc,[s]).some(c=>d.some(([r,a])=>r<c.after&&a>c.start)))}let l=[];if(e.docChanged&&e.selection.empty&&n.length){const d=t.selection,s=d.empty&&g(t.doc,o.folded).some(r=>d.from>r.start&&d.from<r.after),c=e.selection.from;s||(l=n.filter(r=>g(e.doc,[r]).some(a=>c>a.start&&c<a.after)))}const i=e.getMeta(u);if(i?.set&&(n=i.set.slice()),i?.toggle!=null){const d=i.toggle;n=n.includes(d)?n.filter(s=>s!==d):[...n,d]}return l.length&&(n=n.filter(d=>d===i?.toggle||!l.includes(d))),n=[...new Set(n)].filter(d=>{const s=p(e.doc,d);return s!=null&&b(s.parent,s.index)!=null}),!e.docChanged&&!i&&n===o.folded?o:{folded:n,decos:D(e.doc,n)}}},appendTransaction:(e,o,t)=>{const n=u.getState(t);if(!n?.folded.length||!t.selection.empty)return null;const l=t.selection.from;for(const i of g(t.doc,n.folded)){if(l<=i.start||l>=i.after)continue;const d=l>=o.selection.from?1:-1;let s=S.near(t.doc.resolve(d===1?Math.min(i.after,t.doc.content.size):i.start),d);return s.from>i.start&&s.from<i.after&&(s=S.near(t.doc.resolve(i.start),-1)),t.tr.setSelection(s)}return null},props:{decorations(e){return u.getState(e)?.decos??null}}}))].flat();z({"listfold.expandChildren":{zh:"展开子项",en:"Expand children"}});const f=new M("AMX_LIST_FOLD");function m(e,o){if(o<0||o>=e.content.size)return null;const t=e.nodeAt(o);if(!t||t.type.name!=="list_item"||t.childCount<2)return null;const n=t.child(1);if(!/_list$/.test(n.type.name))return null;const l=o+1+t.child(0).nodeSize;return{item:t,from:l,to:l+n.nodeSize}}function k(e,o){const t=[];for(const n of o){const l=m(e,n);l&&(t.push(h.node(n,n+l.item.nodeSize,{class:"amx-listitem-folded"})),t.push(h.node(l.from,l.to,{class:"amx-fold-hidden"})),t.push(h.widget(n+2,(i,d)=>{const s=document.createElement("button");s.type="button",s.className="amx-fold-caret",s.textContent="▸",s.contentEditable="false";const c=()=>{s.title=F("listfold.expandChildren"),s.setAttribute("aria-label",s.title)};return c(),s.setAttribute("aria-expanded","false"),s.__off=C(c),s.addEventListener("mousedown",r=>{r.preventDefault(),r.stopPropagation();const a=d();a!=null&&N(i,i.state.doc.resolve(a).before(i.state.doc.resolve(a).depth-1))}),s},{side:-1,ignoreSelection:!0,key:`amxlfold:${n}`,destroy:i=>{i.__off?.()}})))}return x.create(e,t)}function G(e){const o=[];return e.descendants((t,n)=>(t.type.name==="list_item"&&m(e,n)&&o.push(n),!0)),o}function N(e,o){e.dispatch(e.state.tr.setMeta(f,{toggle:o}))}function U(e,o){return m(e.state.doc,o)?f.getState(e.state)?.folded.includes(o)?"folded":"foldable":null}function P(e){const o=f.getState(e);return o?.folded.length?R(e.doc,o.folded):[]}function R(e,o){const t=[];for(const n of o){const l=m(e,n);l&&t.push({start:l.from,after:l.to})}return t}function q(e,o){const t=f.getState(e);return t?.folded.length?t.folded.filter(n=>{const l=m(e.doc,n);return!!l&&o>l.from&&o<l.to}):[]}function J(e,o){return!!f.getState(e)?.folded.includes(o)}const Q=[L(()=>new $({key:f,state:{init:()=>({folded:[],decos:x.empty}),apply:(e,o)=>{let t=o.folded;e.docChanged&&(t=t.map(l=>e.mapping.mapResult(l)).filter(l=>!l.deleted||m(e.doc,l.pos)!=null).map(l=>l.pos));const n=e.getMeta(f);if(n?.set&&(t=n.set.slice()),n?.toggle!=null){const l=n.toggle;t=t.includes(l)?t.filter(i=>i!==l):[...t,l]}return t=[...new Set(t)].filter(l=>m(e.doc,l)!=null),!e.docChanged&&!n&&t===o.folded?o:{folded:t,decos:k(e.doc,t)}}},appendTransaction:(e,o,t)=>{if(!f.getState(t)?.folded.length||!t.selection.empty)return null;const l=t.selection.from;for(const i of P(t)){if(l<=i.start||l>=i.after)continue;const d=l>=o.selection.from?1:-1;let s=S.near(t.doc.resolve(d===1?Math.min(i.after,t.doc.content.size):i.start),d);return s.from>i.start&&s.from<i.after&&(s=S.near(t.doc.resolve(i.start),-1)),t.tr.setSelection(s)}return null},props:{decorations(e){return f.getState(e)?.decos??null}}}))].flat();export{g as a,j as b,P as c,O as d,U as e,X as f,N as g,u as h,J as i,B as j,Q as k,f as l,q as m,K as n,G as o,R as p,T as s,H as t};
@@ -0,0 +1 @@
1
+ import{p as e}from"./pageStore-CyvNZEYX.js";const o=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]],t=e("lock-open",o);export{t as L};
@@ -0,0 +1 @@
1
+ import{p as o}from"./pageStore-CyvNZEYX.js";const t=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],e=o("log-out",t);export{e as L};
@@ -0,0 +1 @@
1
+ import{p as a}from"./pageStore-CyvNZEYX.js";const e=[["path",{d:"m12 15 4 4",key:"lnac28"}],["path",{d:"M2.352 10.648a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.029-6.029a1 1 0 1 1 3 3l-6.029 6.029a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.365-6.367A1 1 0 0 0 8.716 4.282z",key:"nlhkjb"}],["path",{d:"m5 8 4 4",key:"j6kj7e"}]],n=a("magnet",e);export{n as M};
@@ -0,0 +1,15 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./pageStore-CyvNZEYX.js","./index-fDB1l4d-.js","./react-b7FrqRQR.js","./client-fKy9CWk0.js","./pageStore-ys8L4rjF.css","./dbStore-BIG5Mfh2.js","./drawingStore-CGvTqqYW.js"])))=>i.map(i=>d[i]);
2
+ import{r as c,j as t,a as mt,u as be,t as es,_ as Be,b as Us,L as Ks}from"./index-fDB1l4d-.js";import{c as Xs}from"./client-fKy9CWk0.js";import{n as qs,p as Gs,L as ts,q as Zs,C as Ln,t as Qs,v as Ct,w as Js,u as eo,x as to,c as no,y as so,z as oo,D as Mn,e as io,h as ns,F as ao,A as ss,G as $e,S as os,M as is,j as as,B as ro,W as co,T as lo,P as rs,k as uo,N as mo,H as po,I as fo,l as ho,m as go,E as bo}from"./viewportLock-BZq5PTeN.js";import{M as wo,I as vo,F as ko,S as yo,U as xo,C as So,D as jo,G as Eo,E as Co,W as No,J as Io,P as To,K as Lo,L as Mo,N as zo,R as Po,T as fe,V as Do,u as N,X as zn,Y as Pn,Z as Ro,_ as At,$ as Oo,a0 as Ye,a1 as Ao,a2 as Fo,a3 as _o,a4 as Ft,a5 as Bo,a6 as Dn,a7 as $o,a8 as Vo,a9 as Ho,aa as Wo,ab as Yo,ac as cs,ad as Uo,ae as _t,l as Bt,af as Ko,j as pt,k as Xo,ag as ls,ah as qo,ai as Rn,s as Go,aj as ds,h as Zo,ak as Qo,Q as Jo,al as ei,O as ti,am as On,an as ni,i as $t,ao as si,ap as oi,aq as ii,ar as ai,as as ri,r as ci,t as li,v as di,w as ui,at as mi,y as pi,z as fi,A as hi,B as gi,au as bi}from"./appStore-DDOkzWDA.js";import{p as Ue,B as us,D as wi,L as vi,P as ki,q as yi,r as xi,M as Si,C as ji,I as Ei,F as Pt,t as Ci,Z as ms,k as ae,v as Ni,f as K,w as Ii,x as Ti,y as ps,l as W,z as Ee,A as ge,U as An,E as Li,G as Mi,H as Fn,J as _n,K as zi,O as Pi,Q as Nt,R as ct,T as Di,V as Ri,W as Oi,X as Bn,Y as Ai,_ as $n,$ as Fi,a0 as it,a1 as Vn,a2 as _i,a3 as je,a4 as Bi,a5 as $i,a6 as Dt,a7 as Vi,a8 as Rt,a9 as Hi,aa as Wi,ab as Yi,ac as Ui,ad as fs,S as Ki,ae as ft,af as Ve,ag as Xi,ah as Vt,ai as hs,s as Ke,aj as gs,ak as ut,al as Ht,am as qi,an as Gi,ao as Zi,ap as Qi,aq as Hn,ar as Ji,as as ea,at as ta,au as na,av as sa,aw as oa,ax as ia}from"./pageStore-CyvNZEYX.js";import{P as aa}from"./pen-tool-DD5_N4lZ.js";import{T as ra,R as ca,V as la,M as da,C as ua,a as ma,H as pa,f as fa}from"./userSpaces-oMHIWgYe.js";import{M as ha}from"./Chrome-C7F6fdDp.js";import{P as ga,W as ba,H as wa,A as Se}from"./DashboardGridView-CR-R_qV8.js";import{S as va}from"./star-B0sZEmbj.js";import{F as bs}from"./folder-1OJQeDI1.js";import{C as ka}from"./chevron-up-ChXNh14u.js";import{F as ws}from"./UnifiedPage-s7-tDSwG.js";import{n as Wn}from"./nativeDownload-DsGyUSJ5.js";import{q as ya,a as xa}from"./PluginToolCard-DCzLhsCA.js";import"./i18n.generated-DW_l6CkR.js";import{n as Sa}from"./codeStudioStore-BgLfCDK2.js";import"./ModelPill--CU3XTIQ.js";import"./nativeSheetMenu--iihXNVd.js";import"./upload-Dy7svciS.js";import"./MuseView-CvsO62Fo.js";import"./automationListSource-B1jz6q0t.js";import"./messages-GQUjmbwW.js";import"./message-square-plus-BvUfAAZm.js";import"./rotate-ccw-D8kni6Ni.js";import"./undo-2-QimgpLBn.js";import"./git-branch-BMajF2cu.js";import"./selectionActions-DIq0xDm8.js";import"./mediaPlayer-DB4KUvua.js";import"./react-b7FrqRQR.js";import"./arrow-up-right-BptN64d-.js";import"./CapabilityMenu-DyHTEYLr.js";import"./folder-plus-DP9sFr26.js";import"./layout-grid-oIyIGbc5.js";import"./SettingsPage-B9mmkWaM.js";import"./ipc-SAPDwyQ4.js";import"./lock-open-D2nMg0ga.js";import"./MarkdownBlock-DSItkLhu.js";import"./index-CmsN2Zm2.js";import"./linkFollow-uke1Xtit.js";import"./listFold-BeNv2v6M.js";import"./FloatingToc-DO7SH8Ku.js";import"./canvasPrefs-ArsX3NFO.js";import"./type-Dt7RNB9g.js";import"./file-down-Z913cCyQ.js";import"./AutomationBuilder-B09c-5Bi.js";import"./dbStore-BIG5Mfh2.js";import"./gestures-ZhFAENNZ.js";import"./pencil--sWwxHdP.js";import"./tanguProbe-B8Qv2vcm.js";import"./sessionTitle-Ctp4iNKu.js";import"./index-CIKPZc3Q.js";import"./create-DYmVT68X.js";import"./launchpad-CcmSwlJl.js";import"./CtxMenuButtons-BYjrbUKS.js";import"./phoneList-DKRMxQHf.js";import"./pdf.worker.min-CGb3BKV9.js";import"./code-xml-DCCD9eCS.js";import"./zoom-in-DDEtY_Go.js";import"./minimize-2-CMhzL6ZW.js";import"./InlineFiles-CAIyTk1n.js";import"./pen-line-DC3lbEY1.js";import"./ViewSelectionBar-WmSWMFsR.js";import"./InlineAiPanel-CdIPINsA.js";import"./GitCloneDialog-CbW-RJak.js";import"./log-out-D70NCXC4.js";import"./StudioGuestSurface-OOhRA8nt.js";/* empty css */import"./drawingStore-CGvTqqYW.js";import"./magnet-Cqmm97W8.js";import"./pageTree-Ci2qzrs1.js";import"./pluginExt-Byb64tQO.js";import"./folder-minus-D_j1SwHu.js";import"./redo-2-CqlqhWrI.js";import"./foldActions-DGIPTmE1.js";const ja=[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]],Ea=Ue("box",ja);const Ca=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],Na=Ue("calendar",Ca);const Ia=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],Ta=Ue("chevrons-left",Ia);const La=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],Ma=Ue("chevrons-right",La);const za=[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]],Pa=Ue("tag",za),vs={folder:bs,"folder-open":Po,star:va,heart:pa,home:zo,zap:ms,bookmark:Ci,bell:Mo,tag:Pa,flag:Lo,pin:ga,box:Ea,package:To,settings:Io,wrench:No,terminal:ma,code:ua,"file-text":Pt,image:Ei,music:da,video:la,camera:Co,globe:Eo,compass:ji,map:ha,calendar:Na,clock:jo,mail:So,"message-circle":Si,users:xi,user:xo,search:yo,filter:ko,sparkles:yi,rocket:ca,target:ra,trophy:Zs,lightbulb:ts,coffee:Gs,palette:ki,layers:vi,database:wi,"pen-tool":aa,inbox:vo,bot:us,command:qs,moon:wo},Da=Object.keys(vs),It=n=>n?vs[n]:void 0;function Ra(n,i,o){const d=n.target.closest("button")??i;let a=!1,v=!1,p,g;const w=parseFloat(getComputedStyle(document.body).zoom)||1,m=n.clientX,k=n.clientY;d.setPointerCapture(n.pointerId);const f=(j=!1)=>{if(v=!0,window.removeEventListener("pointermove",I,!0),window.removeEventListener("pointerup",C,!0),window.removeEventListener("pointercancel",b,!0),window.removeEventListener("keydown",h,!0),window.removeEventListener("blur",b),d.removeEventListener("lostpointercapture",b),d.hasPointerCapture(n.pointerId)&&d.releasePointerCapture(n.pointerId),document.documentElement.classList.remove("rb-pointer-dragging"),p?.remove(),g?.remove(),a){const A=y=>{y.preventDefault(),y.stopImmediatePropagation(),_()},L=()=>{clearTimeout(X),X=window.setTimeout(_,0)},_=()=>{window.removeEventListener("click",A,!0),window.removeEventListener("pointerup",L,!0),clearTimeout(X)};window.addEventListener("click",A,!0),j||window.addEventListener("pointerup",L,{capture:!0,once:!0});let X=window.setTimeout(_,j?0:1e4)}},b=()=>{v||(f(),a&&o.cancel())},h=j=>{j.key==="Escape"&&(j.preventDefault(),j.stopImmediatePropagation(),b())},I=j=>{if(!(j.pointerId!==n.pointerId||v)){if(!(j.buttons&1)){b();return}if(!(!a&&Math.hypot(j.clientX-m,j.clientY-k)<6)){a||(a=!0,document.documentElement.classList.add("rb-pointer-dragging"),g=document.createElement("div"),g.className="rb-pointer-shield",g.style.width=`${window.innerWidth/w}px`,g.style.height=`${window.innerHeight/w}px`,g.setAttribute("aria-hidden","true"),document.body.appendChild(g),p=i.cloneNode(!0),p.removeAttribute("data-id"),p.querySelectorAll("[id]").forEach(A=>A.removeAttribute("id")),p.className="rb-pointer-ghost",p.setAttribute("aria-hidden","true"),p.style.width=`${i.getBoundingClientRect().width/w}px`,document.body.appendChild(p),o.start()),j.preventDefault(),p.style.left=`${(j.clientX+12)/w}px`,p.style.top=`${(j.clientY+12)/w}px`,g.style.pointerEvents="none";try{o.move(j)}finally{g.style.pointerEvents=""}}}},C=j=>{j.pointerId!==n.pointerId||j.button!==0||v||(f(!0),a&&(j.preventDefault(),o.drop(j)))};return window.addEventListener("pointermove",I,!0),window.addEventListener("pointerup",C,!0),window.addEventListener("pointercancel",b,!0),window.addEventListener("keydown",h,!0),window.addEventListener("blur",b),d.addEventListener("lostpointercapture",b),b}const Oa=300,Aa=150;function Fa(n){const i=d=>n.known(d.type),o=n.active?n.stash.filter(i):[];return o.length?o:n.defaults.filter(i)}function _a(n){return n.zone==="shell"&&n.buttons===0&&!n.typing}const Tt=4,Yn=5,Un=5,Ba=1e3,$a=100;function Kn(n){if(n>=9)return"";const i=Hi({id:`space-slot-${n+1}`,hotkey:`mod+${n+1}`});return i?Wi(i,Yi()):""}function He({item:n,expanded:i,dot:o}){if(n.component){const v=n.component;return t.jsx(v,{expanded:i})}const d=n.icon,a=n.tooltip?je(n.tooltip):"";return t.jsxs("button",{className:"rb-btn","aria-label":a||void 0,"data-rb-tip":i?void 0:a||void 0,onClick:n.onClick,children:[d&&t.jsx(d,{size:18}),o&&t.jsx("span",{className:"rb-badge rb-dot","aria-hidden":"true"}),i&&t.jsx("span",{className:"rb-label",children:a})]})}function Va({cmd:n,expanded:i,overrideIcon:o}){const[,d]=c.useReducer(g=>g+1,0),a=o??n.icon??ms,v=je(n.title);let p;if(n.checked)try{p=!!n.checked()}catch{p=void 0}return t.jsxs("button",{className:`rb-btn${p?" is-on":""}`,"aria-pressed":p,"aria-label":v,"data-rb-tip":i?void 0:v,onMouseEnter:n.checked?d:void 0,onMouseLeave:n.checked?d:void 0,onClick:()=>{const g=n.run();n.checked&&(d(),g&&typeof g.then=="function"&&g.then(d,d))},children:[t.jsx(a,{size:18}),i&&t.jsx("span",{className:"rb-label",children:v})]})}const at=24,We=n=>n.startsWith("space:")?n.slice(6):null,Ha=600;function Wa(){const n=ae(e=>e.items),i=Ni(n),o=ae(e=>e.expanded),d=ae(e=>e.order),a=ae(e=>e.bottomOrder),v=ae(e=>e.folders),p=ae(e=>e.commandItems),g=ae(e=>e.commandIcons),w=ae(e=>e.recentCount),m=K(e=>e.recent),k=Ii(e=>e.commands);Ti(e=>e.overrides);const{t:f}=ps(),b=()=>ae.getState(),[h,I]=c.useState(null),C=c.useRef(void 0);c.useEffect(()=>()=>C.current?.(),[]);const[j,A]=c.useState(null),[L,_]=c.useState(null),[X,y]=c.useState(null),[z,M]=c.useState(null),[V,B]=c.useState(null),[$,G]=c.useState(null),[q,Ce]=c.useState(99),P=c.useRef(null),le=c.useRef(null),Ne=c.useRef(null),re=c.useRef(null),D=c.useRef(null),de=c.useRef(null),se=c.useRef(void 0),we=c.useRef(null),[Q,Ie]=c.useState({top:0,bottom:0}),[Y,qe]=c.useState(null),[Te,S]=c.useState({}),F=c.useRef({}),oe=c.useRef({});c.useEffect(()=>()=>{for(const e of Object.values(F.current))window.clearTimeout(e?.timer)},[]);const[Z,ve]=c.useState(!1),ue=c.useRef(void 0);c.useEffect(()=>()=>window.clearTimeout(ue.current),[]);const Le=e=>{for(const r of["top","bottom"]){const u=F.current[r];if(!u)continue;window.clearTimeout(u.timer);const l=oe.current[r];l&&(l.style.transform=u.from?`translateY(${-u.from*H}px)`:""),delete F.current[r]}S({}),window.clearTimeout(ue.current);const s=!window.matchMedia("(prefers-reduced-motion: reduce)").matches;ve(s),s&&(ue.current=window.setTimeout(()=>ve(!1),240)),qe(e)},[Me,Wt]=c.useState(null),ze=c.useRef(null),ht=c.useRef(void 0),Ge=c.useRef(!1),Yt=c.useRef(0),Pe=()=>{window.clearTimeout(ht.current),ze.current=null,Ge.current&&(Ge.current=!1,Yt.current=Date.now()),Wt(null)},Ts=!W(e=>e.leftVisible),[U,Ut]=c.useState(null),Kt=K(e=>U?e.spaces.find(s=>s.id===U.spaceId):void 0),gt=c.useRef(null),Ze=c.useRef(null),ke=c.useRef(void 0),De=c.useRef(void 0),Xt=c.useRef(null),[,Qe]=c.useReducer(e=>e+1,0),Je=()=>{window.clearTimeout(De.current),De.current=void 0},me=()=>{window.clearTimeout(ke.current),Je(),Ut(null)},bt=!!h||!!V||!!$||!!z,Ls=e=>W.getState().leftVisible&&e===K.getState().activeSpaceId,qt=K(e=>!!U&&e.activeSpaceId===U.spaceId)&&!Ts;c.useEffect(()=>{(bt||qt)&&me()},[bt,qt]),c.useEffect(()=>U?Ee(()=>{U.views.some(e=>!ge(e.type))&&me()}):void 0,[U]),c.useEffect(()=>()=>{window.clearTimeout(ke.current),window.clearTimeout(De.current)},[]);const Gt=e=>{if(Ls(e)){me();return}const{spaces:s,activeSpaceId:r}=K.getState(),u=s.find(R=>R.id===e),l=W.getState(),x=e===r,E=u?Fa({active:x,stash:l.stash.left,defaults:x?l.sidebarDefaults.left:u.sidebarDefaults.left,known:R=>!!ge(R)}):[];Je(),Ut(E.length?{spaceId:e,views:E}:null)},Ms=e=>{const s=e.target.closest("[data-space-id]")?.dataset.spaceId??null;s!==Ze.current&&(window.clearTimeout(ke.current),Ze.current=s,s&&(bt||(U?.spaceId===s?Je():U?Gt(s):ke.current=window.setTimeout(()=>{Ze.current===s&&Gt(s)},Oa))))},Zt=!!U;c.useEffect(()=>{if(!Zt)return;const e=T=>{const O=T instanceof Element?T:null;return O?gt.current?.contains(O)?"card":P.current?.contains(O)&&O.closest("[data-space-id]")?"trigger":O.closest(".shell")?"shell":"overlay":"overlay"},s=()=>{const T=document.activeElement;return!!T&&!!gt.current?.contains(T)&&T.matches('input, textarea, select, [contenteditable]:not([contenteditable="false"])')};let r=null;const u=(T,O)=>{const te=e(T);_a({zone:te,buttons:O,typing:te==="shell"&&s()})?De.current===void 0&&(De.current=window.setTimeout(me,Aa)):Je()},l=T=>{r=T.target,u(T.target,T.buttons)},x=()=>{window.setTimeout(()=>u(r,0),0)},E=T=>{const O=e(T.target);(O==="shell"||O==="trigger")&&me()},R=T=>{T.key==="Escape"&&!s()&&me()};return document.addEventListener("mousemove",l),document.addEventListener("mouseover",l),document.addEventListener("mouseup",l),document.addEventListener("focusout",x),document.addEventListener("mousedown",E,!0),window.addEventListener("keydown",R),window.addEventListener("resize",Qe),window.addEventListener(An,Qe),()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseover",l),document.removeEventListener("mouseup",l),document.removeEventListener("focusout",x),document.removeEventListener("mousedown",E,!0),window.removeEventListener("keydown",R),window.removeEventListener("resize",Qe),window.removeEventListener(An,Qe)}},[Zt]);const zs=()=>{const e=P.current,s=ct(e),r=e?.getBoundingClientRect(),u=e?.parentElement?.querySelector(".shell-work"),l=u?.getBoundingClientRect(),E=(u?.querySelector(".dv-prefix--edge")?.closest(".dv-tabs-and-actions-container")?.getBoundingClientRect()?.bottom??l?.top??0)+4,R=(l?.bottom??window.innerHeight)-8,T=W.getState(),O=Bi((l?.width??1200)/s,"left",{free:T.sideFree.left,saved:T.sideWidths.left,scale:T.sideScale.left}),te=T.leftVisible?T.api?.panels.find(Fe=>Fe.params?.__loc==="left")?.group.element.getBoundingClientRect():void 0;return te?.height?{left:te.left/s,top:te.top/s,height:te.height/s,width:O,"--rb-peek-lights":"26px"}:{left:((r?.right??44)+4)/s,top:E/s,height:Math.max(160,R-E)/s,width:O}},wt=!!h||!!V||!!$||!!z||!!U;c.useEffect(()=>{(wt||o)&&Pe()},[wt,o]),c.useEffect(()=>()=>window.clearTimeout(ht.current),[]);const Ps=e=>{const s=e.target.closest("[data-rb-tip]");if(s===ze.current)return;const r=Ge.current||Date.now()-Yt.current<=$a;if(Pe(),!s||wt||o)return;ze.current=s;const u=()=>{if(ze.current!==s||!s.isConnected||!s.dataset.rbTip)return;const l=s.getBoundingClientRect();Ge.current=!0,Wt({text:s.dataset.rbTip,mid:l.top+l.height/2})};r?u():ht.current=window.setTimeout(u,Ba)},Ds=new Set(v.flatMap(e=>e.items)),et=new Map,Qt=e=>{const s=[];for(const u of n)(u.side??"top")===e&&!u.pinned&&s.push({kind:"item",id:u.id,item:u});if(e==="bottom")for(const u of p){const l=k.find(x=>x.id===u);l&&s.push({kind:"cmd",id:`cmd:${u}`,cmd:l})}for(const u of v)u.zone===e&&s.push({kind:"folder",id:u.id,folder:u});for(const u of s)et.set(u.id,u);return Ai(s.map(u=>u.id),e==="top"?d:a).map(u=>et.get(u)).filter(u=>!Ds.has(u.id))},J=Qt("top"),ee=Qt("bottom"),Jt=e=>e.items.reduce((s,r)=>s+(et.has(r)?1:0),0),Rs=n.filter(e=>e.side==="bottom"&&e.pinned),Os=n.filter(e=>e.side==="head"),en=n.filter(e=>e.side==="home");c.useEffect(()=>{const e=[...en.map(s=>s.id),...[...J,...ee].flatMap(s=>s.kind==="folder"?s.folder.items:[s.id])];Li(e.filter(s=>s.startsWith("space:")).map(s=>s.slice(6)))});const H=(o?34:32)+Tt;c.useLayoutEffect(()=>{const e=P.current;if(!e)return;const s=()=>{const u=getComputedStyle(e),l=(le.current?.offsetHeight??0)+(re.current?.offsetHeight??0),x=e.clientHeight-parseFloat(u.paddingTop)-parseFloat(u.paddingBottom)-l-(Ne.current?.offsetHeight??0)-2*H-48;Ce(Math.max(2,Math.floor(x/H)))};s();const r=new ResizeObserver(s);return r.observe(e),re.current&&r.observe(re.current),()=>r.disconnect()},[o,H,n.length,v.length,p.length,Y]);const tn=(e,s)=>e<=s?e:s+1,nn=tn(J.length,Yn),vt=tn(ee.length,Un);let ce=nn,pe=vt;if(Y)Y==="top"?ce=q:pe=q;else if(ce+pe>q)if(J.length===0)ce=0,pe=q;else if(ee.length===0)ce=q,pe=0;else{const e=Math.floor(q/2);ce=Math.max(1,Math.min(nn,Math.max(e,q-vt))),pe=Math.max(1,Math.min(vt,q-ce))}const sn=(e,s,r,u,l)=>{if(e.length<=s&&e.length<=l)return{shown:e,tail:[],start:0,max:0};const x=Math.max(0,s-1),E=e.length-x,R=Math.min(Math.max(0,u),E),T=r?e.length-x-R:R;return{shown:e.slice(T,T+x),tail:[...e.slice(0,T),...e.slice(T+x)],start:T,max:E}},Re=sn(J,ce,!1,Q.top,Y==="top"?1/0:Yn),Oe=sn(ee,pe,!0,Q.bottom,Y==="bottom"?1/0:Un),on=m.map(e=>n.find(s=>s.id===`space:${e}`)).filter(e=>!!e).slice(0,Mi(w,q,ce,pe,!!Y)),As=(e,s)=>r=>{const u=oe.current[e];if(!s.max||h||!r.deltaY||!u)return;window.clearTimeout(se.current);let l=F.current[e];l||(l=F.current[e]={px:s.start*H,from:s.start,timer:0},S(E=>({...E,[e]:!0}))),window.clearTimeout(l.timer);const x=r.deltaMode?Math.sign(r.deltaY)*H:Math.max(-H,Math.min(H,r.deltaY));l.px=Math.max(0,Math.min(s.max*H,l.px+x)),u.style.transform=`translateY(${-l.px}px)`,l.timer=window.setTimeout(()=>Fs(e,s),120)},Fs=(e,s)=>{const r=F.current[e],u=oe.current[e];if(!r||!u)return;const l=r.at??r.from,x=r.px-l*H;let E=Math.round(r.px/H);E===l&&x&&(E+=Math.sign(x)),an(e,s,Math.max(0,Math.min(s.max,E)))},an=(e,s,r)=>{const u=oe.current[e];if(!u)return;let l=F.current[e];l||(l=F.current[e]={px:s.start*H,from:s.start,timer:0},S(x=>({...x,[e]:!0}))),window.clearTimeout(l.timer),l.px=r*H,l.at=r,u.style.transform=r?`translateY(${-r*H}px)`:"",l.timer=window.setTimeout(()=>{delete F.current[e],S(x=>({...x,[e]:!1})),Ie(x=>({...x,[e]:e==="top"?r:s.max-r}))},240)};c.useEffect(()=>()=>window.clearTimeout(se.current),[]);const rn=c.useRef(()=>{});rn.current=()=>{if(!h)for(const[e,s]of[["top",Re],["bottom",Oe]])Q[e]&&(s.max&&oe.current[e]?an(e,s,e==="top"?0:s.max):Ie(r=>({...r,[e]:0})))};const cn=!!(Q.top||Q.bottom||Te.top||Te.bottom);c.useEffect(()=>{if(!cn)return;const e=()=>{$n()&&(window.clearTimeout(se.current),se.current=window.setTimeout(()=>{$n()&&rn.current()},Ha))},s=r=>{const u=r.target;r.button!==0||u?.closest?.(".rb-menu, .rb-iconpick, [data-rb-overlay]")||u&&(P.current?.contains(u)||u.closest(".rb-fly"))&&!u.closest(".rb-btn:not(.rb-more, .rb-plus, .rb-toggle, .rb-folder)")||e()};return window.addEventListener("click",s,!0),window.addEventListener("blur",e),()=>{window.removeEventListener("click",s,!0),window.removeEventListener("blur",e)}},[cn]);const ie=z?.folderId?v.find(e=>e.id===z.folderId):void 0,tt=()=>{de.current&&(window.clearTimeout(de.current),de.current=null)},ln=()=>{tt(),de.current=window.setTimeout(()=>{h||M(null)},150)},kt=(e,s,r,u)=>{tt(),M({key:e,zone:s,folderId:u,top:r.getBoundingClientRect().top})};c.useLayoutEffect(()=>{const e=D.current;if(!e||!z)return;const s=e.getBoundingClientRect().bottom-(window.innerHeight-8);s>0&&M({...z,top:Math.max(8,z.top-s)})},[z?.key,ie?.items.length]);const dn=!!z;c.useEffect(()=>{if(!dn)return;const e=r=>{r.key==="Escape"&&M(null)},s=r=>{const u=r.target;!D.current?.contains(u)&&!P.current?.contains(u)&&M(null)};return window.addEventListener("keydown",e),window.addEventListener("mousedown",s),()=>{window.removeEventListener("keydown",e),window.removeEventListener("mousedown",s)}},[dn]),c.useEffect(()=>{if(!Y)return;const e=()=>Le(null),s=u=>{if(u.button!==0)return;const l=u.target;l?.closest?.(".rb-menu, .rb-iconpick, .rb-fly, [data-rb-overlay]")||l&&P.current?.contains(l)&&l.closest("button")||e()},r=u=>{u.key==="Escape"&&e()};return window.addEventListener("pointerdown",s,!0),window.addEventListener("keydown",r),window.addEventListener("blur",e),()=>{window.removeEventListener("pointerdown",s,!0),window.removeEventListener("keydown",r),window.removeEventListener("blur",e)}},[Y,H]);const yt=c.useRef(new Map),un=c.useRef(()=>{});c.useEffect(()=>{un.current=e=>{const s=J[e];if(s){if(s.kind==="folder"){const r=yt.current.get(s.id)??P.current;r&&kt(s.id,"top",r,s.id);return}M(null),s.kind==="cmd"?s.cmd.run():s.id.startsWith("space:")?Fn(s.id.slice(6)):s.item.onClick?.()}}});const mn=Math.min(9,J.length);c.useEffect(()=>{for(let e=1;e<=9;e++){if(e>mn){_n(`space-slot-${e}`);continue}zi({id:`space-slot-${e}`,title:()=>Pi("lcl.ribbon.switchSpace",{n:e}),keywords:`space switch ${e} 切换 空间`,hotkey:`mod+${e}`,run:()=>un.current(e-1)})}return()=>{for(let e=1;e<=9;e++)_n(`space-slot-${e}`)}},[mn]);const pn=(e,s,r,u)=>{e.dataTransfer.effectAllowed="move";const l=e.currentTarget.getBoundingClientRect();e.dataTransfer.setDragImage(e.currentTarget,e.clientX-l.left,e.clientY-l.top),I({id:s,zone:r,from:u})},ye=()=>{we.current=null,I(null),A(null),_(null),y(null)},Ae=h&&fe()?.openSpace?We(h.id):null,fn=c.useRef({dropped:!1,gone:!1}),xt=(e,s)=>{const r=P.current?.getBoundingClientRect();if(!r)return!0;const u=x=>e>=x.left-at&&e<=x.right+at&&s>=x.top-at&&s<=x.bottom+at,l=D.current?.getBoundingClientRect();return u(r)||!!l&&u(l)},hn=e=>{const s=e.target;return!!s&&(!!P.current?.contains(s)||!!D.current?.contains(s))};c.useLayoutEffect(()=>{if(!Ae)return;const e={dropped:!1,gone:!1};fn.current=e;const s=l=>{e.gone=!1,!hn(l)&&(l.preventDefault(),l.stopPropagation(),l.dataTransfer&&(l.dataTransfer.dropEffect="move"),_(x=>x&&null),y(x=>x&&null))},r=l=>{e.dropped=!0,!hn(l)&&(l.preventDefault(),l.stopPropagation(),xt(l.clientX,l.clientY)||fe()?.openSpace?.(Ae,{screenX:l.screenX,screenY:l.screenY}))},u=l=>{(l.clientX<=0||l.clientY<=0||l.clientX>=window.innerWidth||l.clientY>=window.innerHeight)&&(e.gone=!0)};return window.addEventListener("dragover",s,!0),window.addEventListener("drop",r,!0),window.addEventListener("dragleave",u,!0),()=>{window.removeEventListener("dragover",s,!0),window.removeEventListener("drop",r,!0),window.removeEventListener("dragleave",u,!0)}},[Ae]);const gn=e=>{const s=fn.current;if(Ae&&!s.dropped){const{clientX:r,clientY:u}=e,l=r<0||u<0||r>window.innerWidth||u>window.innerHeight,x=!l&&/^(IFRAME|WEBVIEW)$/.test(document.elementFromPoint(r,u)?.tagName??"");(l||!xt(r,u)&&(s.gone||x))&&fe()?.openSpace?.(Ae,e.screenX||e.screenY?{screenX:e.screenX,screenY:e.screenY}:void 0)}ye()},xe=(e,s,r)=>{s&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move",r?.())},bn=(e,s)=>{const r=e.querySelectorAll(".rb-slot"),u=r[0]?.getBoundingClientRect().top??0,l=r.length>1?r[1].getBoundingClientRect().top-u:0;return{top:u,pitch:l,grabDy:s??l/2}},wn=(e,s,r)=>_i(s,r,we.current??bn(e)),vn=(e,s)=>{const r=e.parentElement;r&&(we.current=bn(r,s-e.getBoundingClientRect().top))},nt=(e,s,r=h)=>{const u=r;if(ye(),!u||u.zone!==e||u.id===s)return;u.from&&b().moveOutOfFolder(u.id);const l=e==="top"?b().order:b().bottomOrder,x=Fi(l,(e==="top"?J:ee).map(R=>R.id)),E=s?x.indexOf(s):-1;b().setZoneOrder(e,it(x,u.id,E>=0?E:x.length))},st=(e,s,r=h)=>{const u=r;if(ye(),!(!u||u.zone!==e.zone||u.id.startsWith("folder:"))){if(u.from===e.id)b().setFolderItems(e.id,it(e.items,u.id,s??e.items.length));else if(b().moveIntoFolder(e.id,u.id),u.from||b().setZoneOrder(e.zone,Vn(e.zone==="top"?b().order:b().bottomOrder,(e.zone==="top"?J:ee).map(l=>l.id),u.id)),s!==void 0){const l=b().folders.find(x=>x.id===e.id);l&&b().setFolderItems(e.id,it(l.items,u.id,s))}}},St=c.useRef(null);St.current={target:(e,s)=>{const r=document.elementFromPoint(e.clientX,e.clientY),u=!!r&&(!!P.current?.contains(r)||!!D.current?.contains(r));if(u){const x=r.closest("[data-rb-folder]")?.dataset.rbFolder,E=v.find(O=>O.id===x);if(E&&E.zone===s.zone){const O=r.closest("[data-rb-folder-index]");return _(null),y(E.id),A(O?.dataset.id??null),O||kt(E.id,E.zone,r.closest("[data-rb-folder]"),E.id),{kind:"folder",folder:E,at:O?Number(O.dataset.rbFolderIndex):void 0}}const R=r.closest("[data-rb-more]")?.dataset.rbMore;if(R===s.zone)return _(null),y(`more:${R}`),{kind:"bar",zone:s.zone,id:s.zone==="bottom"?ee[0]?.id??null:null};const T=r.closest(".rb-top, .rb-bottom");if(T){const O=T.classList.contains("rb-top")?"top":"bottom";if(O!==s.zone)return{kind:"cancel"};const te=(O==="top"?Re:Oe).shown.map(_e=>_e.id),Fe=wn(T,e.clientY,te.length);return y(null),A(null),_(_e=>_e?.zone===O&&_e.index===Fe?_e:{zone:O,index:Fe}),{kind:"bar",zone:O,id:te[Fe]??null}}}return _(null),y(null),A(null),{kind:e.clientX<0||e.clientY<0||e.clientX>=window.innerWidth||e.clientY>=window.innerHeight||!u&&!xt(e.clientX,e.clientY)?"tear":"cancel"}},drop:(e,s,r)=>{if(r.kind==="bar")nt(r.zone,r.id,s);else if(r.kind==="folder")st(r.folder,r.at,s);else if(ye(),r.kind==="tear"){const u=fe(),l=We(s.id);l&&u?.openSpace?.(l,u.cursorScreenPoint?.()??{screenX:e.screenX,screenY:e.screenY})}}};const kn=(e,s,r,u)=>{if(!fe()?.ribbonPointerDrag||!We(s)||e.button!==0||!e.isPrimary)return;e.stopPropagation(),C.current?.();const l=e.currentTarget,x={id:s,zone:r,from:u};u||vn(l,e.clientY);let E={kind:"cancel"};C.current=Ra(e.nativeEvent,l,{start:()=>{Pe(),tt(),I(x)},move:R=>{E=St.current.target(R,x)},drop:R=>{St.current.drop(R,x,E)},cancel:ye})},yn=e=>!(fe()?.ribbonPointerDrag&&We(e)),xn=Nt.prompt??((e,s)=>Promise.resolve(window.prompt(e,s))),_s=e=>{xn(f("lcl.ribbon.newFolder"),f("lcl.ribbon.folderDefaultName")).then(s=>{const r=s?.trim();r&&b().addFolder(e,r)})},ot=e=>[...e==="top"&&Nt.newSpace?[{label:f("lcl.ribbon.newSpace"),onClick:Nt.newSpace}]:[],...e==="bottom"?[{label:f("lcl.ribbon.addCommand"),onClick:()=>$i(s=>b().addCommandItem(s))}]:[],{label:f(e==="top"?"lcl.ribbon.newFolderSpaces":"lcl.ribbon.newFolderCommands"),onClick:()=>_s(e)}],Bs=e=>s=>{s.defaultPrevented||(s.preventDefault(),B({x:s.clientX,y:s.clientY,entries:ot(e)}))},$s=e=>{e.defaultPrevented||e.nativeEvent===Xt.current||(e.preventDefault(),B({x:e.clientX,y:e.clientY,entries:[...ot("top"),...ot("bottom")]}))},Sn=(e,s,r,u)=>{B(null),G({x:e,y:s,current:r,apply:u})},Vs=e=>s=>{s.preventDefault(),s.stopPropagation();const r=s.clientX,u=s.clientY;B({x:r,y:u,entries:[{label:f("lcl.ribbon.changeIcon"),onClick:()=>Sn(r,u,e.icon,l=>b().setFolderIcon(e.id,l))},{label:f("lcl.ribbon.rename"),onClick:()=>{xn(f("lcl.ribbon.renameFolder"),e.name).then(l=>{const x=l?.trim();x&&b().renameFolder(e.id,x)})}},{label:f("lcl.ribbon.dissolveFolder"),onClick:()=>b().removeFolder(e.id)}]})},jn=e=>{const s=We(e.id),r=fe()?.openSpace;return[...s&&r?[{label:f("lcl.ribbon.openInNewWindow"),onClick:()=>r(s)}]:[],...e.menu?.()??[]]},En=e=>s=>{if(s.defaultPrevented)return;const r=jn(e);r.length&&(s.preventDefault(),s.stopPropagation(),B({x:s.clientX,y:s.clientY,entries:r}))},Cn=e=>s=>{s.preventDefault(),s.stopPropagation();const r=s.clientX,u=s.clientY;B({x:r,y:u,entries:[{label:f("lcl.ribbon.setIcon"),onClick:()=>Sn(r,u,b().commandIcons[e],l=>b().setCommandIcon(e,l))},{label:f("lcl.ribbon.removeCommand"),onClick:()=>b().removeCommandItem(e)}]})},Hs=e=>{const s=It(e.icon)??bs;return t.jsxs("button",{ref:r=>{r?yt.current.set(e.id,r):yt.current.delete(e.id)},className:`rb-btn rb-folder${X===e.id?" drag-into":""}`,"data-rb-folder":e.id,"aria-label":`${e.name} (${Jt(e)})`,onMouseEnter:r=>kt(e.id,e.zone,r.currentTarget,e.id),onMouseLeave:ln,onContextMenu:Vs(e),onDragOver:r=>xe(r,!!h&&h.zone===e.zone&&!h.id.startsWith("folder:"),()=>{_(null),y(e.id)}),onDragLeave:()=>{X===e.id&&y(null)},onDrop:r=>{!h||h.id.startsWith("folder:")||(r.preventDefault(),r.stopPropagation(),st(e))},children:[t.jsx(s,{size:18}),e.items.some(r=>i.has(r))&&t.jsx("span",{className:"rb-badge rb-dot","aria-hidden":"true"}),o&&t.jsx("span",{className:"rb-label",children:e.name})]})},Nn=e=>{const s=Y===e,r=f(s?"lcl.ribbon.less":"lcl.ribbon.more"),u=s?e==="top"?ka:Rt:Vi;return t.jsxs("button",{className:`rb-btn rb-more${s?" is-open":""}${X===`more:${e}`?" drag-into":""}`,"data-rb-more":e,"aria-label":r,"aria-expanded":s,"data-rb-tip":o?void 0:r,onClick:()=>Le(s?null:e),onDragOver:l=>xe(l,!!h&&h.zone===e,()=>{_(null),y(`more:${e}`)}),onDragLeave:()=>{X===`more:${e}`&&y(null)},onDrop:l=>{l.preventDefault(),l.stopPropagation(),nt(e,e==="bottom"?ee[0]?.id??null:null)},children:[t.jsx(u,{size:18}),!s&&(e==="top"?Re:Oe).tail.some(l=>l.kind==="item"?i.has(l.id):l.kind==="folder"&&l.folder.items.some(x=>i.has(x)))&&t.jsx("span",{className:"rb-badge rb-dot","aria-hidden":"true"}),o&&t.jsx("span",{className:"rb-label",children:r})]})},jt=(e,s)=>{const r=s??o;return e.kind==="item"?t.jsx(He,{item:e.item,expanded:r,dot:i.has(e.id)}):e.kind==="cmd"?t.jsx(Va,{cmd:e.cmd,expanded:r,overrideIcon:It(g[e.cmd.id])}):Hs(e.folder)},Ws=(e,s,r,u,l,x)=>{const E=u?u.indexOf(e.id):r;return t.jsxs("div",{"data-id":e.id,className:`rb-slot${h?.id===e.id?" dragging":""}${l?" drag-over":""}`,style:E!==r?{transform:`translateY(${(E-r)*H}px)`}:void 0,draggable:yn(e.id),onPointerDown:R=>kn(R,e.id,s,null),onDragStart:R=>{vn(R.currentTarget,R.clientY),pn(R,e.id,s,null)},onDragEnd:gn,onContextMenu:e.kind==="cmd"?Cn(e.cmd.id):e.kind==="item"?En(e.item):void 0,children:[jt(e),s==="top"&&o&&Kn(x)&&t.jsx("span",{className:"rb-key",children:Kn(x)})]},e.id)},Et=e=>f(e==="top"?"lcl.ribbon.addSpaceOrFolder":"lcl.ribbon.addCommand"),In=e=>t.jsxs("button",{className:"rb-btn rb-plus","aria-label":Et(e),"data-rb-tip":o?void 0:Et(e),onClick:s=>{const r=s.currentTarget.getBoundingClientRect();B({x:r.right+6,y:r.top,entries:ot(e)})},children:[t.jsx(Dt,{size:16}),o&&t.jsx("span",{className:"rb-label",children:Et(e)})]}),Tn=(e,s)=>{const r=s.shown.map(l=>l.id),u=h&&L?.zone===e&&r.includes(h.id)?it(r,h.id,L.index):null;return t.jsxs("div",{className:`rb-group rb-${e}`,onContextMenu:Bs(e),onWheel:As(e,s),onDragOver:l=>{const x=wn(l.currentTarget,l.clientY,r.length);xe(l,!!h&&h.zone===e,()=>{y(null),_(E=>E?.zone===e&&E.index===x?E:{zone:e,index:x})})},onDrop:l=>{l.preventDefault(),l.stopPropagation(),nt(e,(L?.zone===e?r[L.index]:null)??null)},children:[e==="bottom"&&t.jsxs(t.Fragment,{children:[In(e),(s.tail.length>0||Y===e)&&Nn(e)]}),t.jsx("div",{className:"rb-strip","data-guide-anchor":e==="top"?"ribbon-spaces":void 0,style:{height:Math.max(0,s.shown.length*H-Tt)},children:t.jsx("div",{ref:l=>{oe.current[e]=l},className:"rb-strip-in",style:s.start?{transform:`translateY(${-s.start*H}px)`}:void 0,children:(e==="top"?J:ee).map((l,x)=>{const E=x-s.start;return E>=0&&E<s.shown.length?Ws(l,e,E,u,!u&&L?.zone===e&&L.index===E,x):t.jsx("div",{className:"rb-cell","aria-hidden":!0,inert:!0,style:{height:H-Tt},children:(Te[e]||Z)&&jt(l)},l.id)})})}),e==="top"&&t.jsxs(t.Fragment,{children:[(s.tail.length>0||Y===e)&&Nn(e),In(e)]})]})},Ys=(e,s,r,u)=>t.jsx("div",{"data-id":e.id,className:`rb-fly-row${h?.id===e.id?" dragging":""}${j===e.id&&h?.id!==e.id?` drag-over${h&&u.indexOf(h.id)>=0&&u.indexOf(h.id)<r?" below":""}`:""}`,"data-rb-folder":s.id,"data-rb-folder-index":r,draggable:yn(e.id),onPointerDown:l=>kn(l,e.id,s.zone,s.id),onDragStart:l=>{l.stopPropagation(),pn(l,e.id,s.zone,s.id)},onDragOver:l=>xe(l,!!h&&h.zone===s.zone&&h.id!==e.id&&!h.id.startsWith("folder:"),()=>A(e.id)),onDragLeave:()=>{j===e.id&&A(null)},onDrop:l=>{l.preventDefault(),l.stopPropagation(),st(s,r)},onDragEnd:gn,onContextMenu:e.kind==="cmd"?Cn(e.cmd.id):l=>{l.preventDefault(),l.stopPropagation(),B({x:l.clientX,y:l.clientY,entries:[...e.kind==="item"?jn(e.item):[],{label:f("lcl.ribbon.moveOut"),onClick:()=>{b().moveOutOfFolder(e.id);const x=s.zone==="top"?b().order:b().bottomOrder;b().setZoneOrder(s.zone,[...Vn(x,(s.zone==="top"?J:ee).map(E=>E.id),e.id),e.id])}}]})},children:jt(e,!0)},e.id);return t.jsxs("div",{ref:P,className:`rb${o?" rb-expanded":""}${h?" rb-dragging":""}${Y?` rb-open-${Y}`:""}`,onContextMenu:$s,onMouseOver:e=>{Ps(e),Ms(e)},onMouseLeave:()=>{Pe(),window.clearTimeout(ke.current),Ze.current=null},onMouseDownCapture:e=>{Pe(),window.clearTimeout(ke.current),ze.current=e.target.closest("[data-rb-tip]")},onDragOver:e=>xe(e,!!h),onDrop:e=>{if(!h)return;e.preventDefault();const s=h.zone,r=L?.zone===s?(s==="top"?Re:Oe).shown[L.index]?.id:void 0;if(r===void 0){ye();return}nt(s,r)},children:[t.jsxs("div",{ref:le,className:"rb-head",children:[t.jsxs("button",{className:"rb-btn rb-toggle","aria-label":f(o?"lcl.ribbon.iconsOnly":"lcl.ribbon.showLabels"),"aria-expanded":o,"data-rb-tip":o?void 0:f("lcl.ribbon.showLabels"),onClick:()=>b().toggleExpanded(),children:[o?t.jsx(Ta,{size:18}):t.jsx(Ma,{size:18}),o&&t.jsx("span",{className:"rb-label",children:f("lcl.ribbon.iconsOnly")})]}),Os.map(e=>t.jsx(He,{item:e,expanded:o},e.id))]}),t.jsx("div",{ref:Ne,className:"rb-group rb-home",children:en.map(e=>t.jsx(He,{item:e,expanded:o},e.id))}),Y!=="bottom"&&Tn("top",Re),on.length>0&&t.jsx("div",{className:"rb-group rb-recent",role:"group","aria-label":f("lcl.ribbon.recentSpaces"),children:on.map(e=>t.jsx("div",{className:"rb-recent-slot","data-recent-id":e.id,onContextMenu:En(e),children:t.jsx(He,{item:e,expanded:o})},e.id))}),Y!=="top"&&Tn("bottom",Oe),t.jsx("div",{ref:re,className:"rb-group rb-pinned",children:Rs.map(e=>t.jsx(He,{item:e,expanded:o},e.id))}),z&&ie&&t.jsxs("div",{ref:D,className:"rb-fly","data-rb-folder":ie.id,style:(()=>{const e=ct(P.current);return{left:((P.current?.getBoundingClientRect().right??44)+4)/e,top:z.top/e}})(),onMouseEnter:tt,onMouseLeave:ln,onDragOver:e=>xe(e,!!h&&h.zone===z.zone&&!h.id.startsWith("folder:")&&e.target===e.currentTarget),onDrop:e=>{e.target===e.currentTarget&&(e.preventDefault(),st(ie))},children:[t.jsx("div",{className:"rb-fly-head",children:ie.name}),Jt(ie)===0&&t.jsx("div",{className:"rb-fly-empty",children:f("lcl.ribbon.folderEmpty")}),ie.items.map((e,s)=>{const r=et.get(e);return r?Ys(r,ie,s,ie.items):null})]}),U&&Kt&&P.current?.parentElement&&Di.createPortal(t.jsx(Ri,{ref:gt,space:Kt,views:U.views,style:zs(),onContextMenuCapture:e=>{Xt.current=e.nativeEvent},onBeforeClick:()=>{U.spaceId!==K.getState().activeSpaceId&&Oi()},onEnter:U.spaceId===K.getState().activeSpaceId?void 0:()=>{me(),Fn(U.spaceId)}}),P.current.parentElement),Me&&!o&&t.jsx("div",{className:"rb-tip",role:"tooltip",style:(()=>{const e=ct(P.current);return{left:((P.current?.getBoundingClientRect().right??44)+6)/e,top:Me.mid/e}})(),children:Me.text}),V&&t.jsx("div",{className:"rb-menu-backdrop",onMouseDown:()=>B(null),onContextMenu:e=>{e.preventDefault(),B(null)},children:t.jsx(Bn,{className:"rb-menu",x:V.x,y:V.y,onMouseDown:e=>e.stopPropagation(),children:V.entries.map((e,s)=>t.jsx("button",{onClick:()=>{B(null),e.onClick()},children:e.label},s))})}),$&&t.jsx("div",{className:"rb-menu-backdrop",onMouseDown:()=>G(null),onContextMenu:e=>{e.preventDefault(),G(null)},children:t.jsxs(Bn,{className:"rb-iconpick",x:$.x,y:$.y,onMouseDown:e=>e.stopPropagation(),children:[t.jsx("button",{className:"rb-iconpick-reset",onClick:()=>{const e=$.apply;G(null),e("")},children:f("lcl.ribbon.defaultIcon")}),t.jsx("div",{className:"rb-iconpick-grid",children:Da.map(e=>{const s=It(e);return t.jsx("button",{className:`rb-iconpick-btn${$.current===e?" on":""}`,title:e,onClick:()=>{const r=$.apply;G(null),r(e)},children:t.jsx(s,{size:17})},e)})})]})})]})}const Xn=8,Ya=n=>n.dataset.lclShift==="end"?Xn:n.dataset.lclShift==="start"?-Xn:0;function Ua(){const n=Array.from(document.querySelectorAll(".dv-groupview")).map(o=>({r:o.getBoundingClientRect(),papery:!o.querySelector(".wb-tab--icon")})).filter(o=>o.r.width>0&&o.r.height>0),i=3;for(const o of document.querySelectorAll(".dv-sash")){const d=!!o.closest(".dv-split-view-container.dv-horizontal"),a=o.getBoundingClientRect();if(!a.width&&!a.height)continue;const v=d?a.left+a.width/2:a.top+a.height/2,[p,g]=d?[a.top,a.bottom]:[a.left,a.right];let w=null,m=null;for(const f of n){const[b,h,I,C]=d?[f.r.left,f.r.right,f.r.top,f.r.bottom]:[f.r.top,f.r.bottom,f.r.left,f.r.right];C<=p||I>=g||(w===null&&Math.abs(h-v)<=i&&(w=f.papery),m===null&&Math.abs(b-v)<=i&&(m=f.papery))}const k=w===!1&&m===!0?"end":w===!0&&m===!1?"start":"";k?o.dataset.lclShift=k:delete o.dataset.lclShift}}function Ka(){const n=document.createElement("div");n.className="lcl-sash-tick",document.body.appendChild(n);let i=null,o=0;const d=(b,h)=>{const I=!!b.closest(".dv-split-view-container.dv-horizontal"),C=b.getBoundingClientRect(),j=Ya(b);cancelAnimationFrame(o),o=requestAnimationFrame(()=>{n.classList.add("show"),n.classList.toggle("h",!I);const A=ct(n);I?(n.style.left=`${(C.left+C.width/2+j)/A}px`,n.style.top=`${Math.min(Math.max(h.clientY,C.top),C.bottom)/A}px`):(n.style.left=`${Math.min(Math.max(h.clientX,C.left),C.right)/A}px`,n.style.top=`${(C.top+C.height/2+j)/A}px`)})},a=b=>b instanceof Element?b.closest(".dv-sash"):null,v=b=>{const h=i instanceof HTMLElement?i:a(b.target);h?d(h,b):n.classList.contains("show")&&(cancelAnimationFrame(o),n.classList.remove("show"))},p=b=>{i=a(b.target)},g=b=>{i&&(i=null,a(b.target)||(cancelAnimationFrame(o),n.classList.remove("show")))};let w=0;const m=()=>{window.clearTimeout(w),w=window.setTimeout(Ua,120)},k=b=>b instanceof Element&&(b.matches(".dv-sash, .dv-view, .dv-groupview")||!!b.querySelector(".dv-sash, .dv-groupview")),f=new MutationObserver(b=>{for(const h of b)for(const I of[...h.addedNodes,...h.removedNodes])if(k(I)){m();return}});return f.observe(document.body,{childList:!0,subtree:!0}),m(),document.addEventListener("pointermove",v,{passive:!0}),document.addEventListener("pointerdown",p,{passive:!0}),document.addEventListener("pointerup",g,{passive:!0}),()=>{f.disconnect(),window.clearTimeout(w),cancelAnimationFrame(o),document.removeEventListener("pointermove",v),document.removeEventListener("pointerdown",p),document.removeEventListener("pointerup",g),n.remove()}}const ks=({dark:n,soft:i,buildDefault:o,header:d,noRibbon:a,footer:v})=>(c.useEffect(()=>Ui(),[]),c.useEffect(()=>Ka(),[]),fs==="mobile"?t.jsxs(t.Fragment,{children:[t.jsx(Ki,{dark:n,soft:i,buildDefault:o}),t.jsx(Ln,{})]}):t.jsxs("div",{className:`shell${a?" shell--noribbon":""}`,children:[d,t.jsxs("div",{className:"shell-top",children:[!a&&t.jsx(Wa,{}),t.jsxs("div",{className:"shell-work",children:[t.jsx(ba,{dark:n,soft:i,buildDefault:o}),v]})]}),t.jsx(Ln,{})]})),Xa=["n","s","e","w","ne","nw","se","sw"],Lt=n=>{const i=n.currentTarget,o=i.dataset.edge,d={x:n.screenX,y:n.screenY};if(n.type==="pointerdown"){if(n.button!==0)return;i.setPointerCapture(n.pointerId),window.tangu?.miniResize?.(o,!0,d)}else n.type==="pointermove"?i.hasPointerCapture(n.pointerId)&&window.tangu?.miniResize?.(o,!1,d):(n.type==="pointerup"&&i.hasPointerCapture(n.pointerId)&&window.tangu?.miniResize?.(o,!1,d),window.tangu?.miniResize?.(null))},ys=({buildDefault:n,direct:i,resizable:o})=>{const d=K(y=>y.spaces),a=K(y=>y.activeSpaceId),[,v]=c.useReducer(y=>y+1,0);c.useEffect(()=>Ee(v),[]);const p=d.filter(ft),g=p.find(y=>y.id===a),w=Ve(y=>y.mainLeaves.find(z=>z.id===y.activeMainId)),[m,k]=c.useState(null),f=Qs();c.useEffect(()=>k(null),[w?.id,w?.type]);const b=m==="picker"&&!f?null:m,{t:h}=ps(),I=g?.icon,C=i?ge(i.view.type):void 0,j=c.useRef(!1);C&&(j.current=!0),c.useEffect(()=>{i&&j.current&&!C&&window.tangu?.closeSelf?.()},[i,C]);const A=i?.title||(C?je(C.displayName):g?je(g.mini?.name??g.name):"Mini Panel");c.useEffect(()=>{const y=Ve.getState();if(y.setDefaultBuilder(n),!i)if(g)y.getActiveLeaf()?.type!==g.mini.view.type&&y.resetLayout();else{const z=p.find(M=>M.id==="tangu")??p[0];z&&Xi(z.id),y.resetLayout()}},[d,a,g,n,i]),c.useEffect(()=>{const y=z=>{z.key==="Escape"&&k(null)};return window.addEventListener("keydown",y),()=>window.removeEventListener("keydown",y)},[]);const L=w&&(i?w.type===i.view.type:g&&w.type===g.mini.view.type)?Ve.getState().getActiveLeaf():null,_=L?ge(L.type):null,X=()=>{if(i){ut({type:i.mainView.type,params:{...i.mainView.params,...Ve.getState().getActiveLeaf()?.params}});return}const y=Ht();y?.mini&&ut({spaceId:y.id,type:y.mini.mainView.type,params:{...y.mini.mainView.params,...Ve.getState().getActiveLeaf()?.params}})};return t.jsxs("div",{className:"mini-card-shell mini-card-floating","data-space":i?"direct":g?.id,children:[t.jsxs("header",{className:"mini-card-chrome",children:[t.jsxs("div",{className:"mini-card-cap",children:[t.jsxs("button",{className:"mini-card-space","aria-label":h("lcl.mini.switchSpace"),"aria-expanded":b==="space",disabled:!!i||p.length<2,onClick:()=>k(b==="space"?null:"space"),children:[!i&&I&&t.jsx(I,{size:15}),(i||!f)&&t.jsx("span",{children:A}),!i&&p.length>1&&t.jsx(Rt,{size:12})]}),f&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mini-card-cap-div"}),t.jsxs("button",{className:"mini-card-picker","aria-label":f.label,"aria-expanded":b==="picker",onClick:()=>k(b==="picker"?null:"picker"),children:[t.jsx("span",{children:f.items.find(y=>y.id===f.value)?.label||f.placeholder}),t.jsx(Rt,{size:12})]})]})]}),t.jsx("div",{className:"mini-card-drag-title"}),t.jsxs("div",{className:"mini-card-cap",children:[f?.create&&t.jsx("button",{className:"mini-card-action","aria-label":f.create.label,title:f.create.label,disabled:f.create.disabled,onClick:()=>Ct()?.create?.onCreate(),children:t.jsx(Dt,{size:15})}),t.jsx("button",{className:"mini-card-action","aria-label":h("lcl.mini.showMain"),title:h("lcl.mini.showMain"),disabled:!i&&!g,onClick:X,children:t.jsx(Do,{size:15})}),t.jsx("button",{className:"mini-card-action mini-card-close","aria-label":h("lcl.mini.close"),onClick:()=>window.tangu?.closeSelf?.(),children:t.jsx(Vt,{size:15})})]})]}),t.jsx("main",{className:"mini-card-main",children:L&&_?t.jsx("div",{className:"mini-panel-view","data-view":L.type,children:t.jsx(hs,{children:t.jsx(c.Suspense,{fallback:null,children:_.factory({leaf:L,params:L.params})})})},`${L.id}:${L.type}`):t.jsx("div",{className:"mini-panel-empty",children:h("lcl.mini.empty")})}),b&&t.jsxs(t.Fragment,{children:[t.jsx("button",{className:"mini-card-dismiss","aria-label":h("lcl.mini.closeMenu"),onClick:()=>k(null)}),b==="space"&&t.jsx("section",{className:"mini-card-popover","aria-label":h("lcl.mini.switchSpace"),children:t.jsx("div",{className:"mini-card-popover-list",children:p.map(y=>{const z=y.icon;return t.jsxs("button",{className:`mini-card-row${y.id===a?" active":""}`,onClick:()=>{Ke(y.id),k(null)},children:[z&&t.jsx(z,{size:15}),t.jsx("span",{className:"mini-card-row-label",children:je(y.mini.name??y.name)})]},y.id)})})}),b==="picker"&&f&&t.jsxs("section",{className:"mini-card-popover mini-card-popover--picker","aria-label":f.label,children:[t.jsx("div",{className:"mini-card-popover-title",children:f.label}),t.jsxs("div",{className:"mini-card-popover-list",children:[f.create&&t.jsxs("button",{className:"mini-card-row mini-card-row-new",disabled:f.create.disabled,onClick:()=>{k(null),Ct()?.create?.onCreate()},children:[t.jsx(Dt,{size:15}),t.jsx("span",{className:"mini-card-row-label",children:f.create.label})]}),f.items.map(y=>t.jsxs("button",{className:`mini-card-row${y.id===f.value?" active":""}`,onClick:()=>{k(null),Ct()?.onSelect(y.id)},children:[t.jsx("span",{className:"mini-card-row-label",children:y.label}),y.id===f.value&&t.jsx(gs,{size:14})]},y.id))]})]})]}),o&&Xa.map(y=>t.jsx("div",{className:"mini-card-edge","data-edge":y,onPointerDown:Lt,onPointerMove:Lt,onLostPointerCapture:Lt},y))]})};function qa(){return t.jsx("div",{className:"mac-titlebar"})}const Mt=9e3,lt=5*1024*1024;function Ot(n){return typeof n=="string"?n.replace(/\bBearer\s+[A-Za-z0-9._~+\/-]+=*/gi,"Bearer [redacted]").replace(/\b(sk-[a-zA-Z0-9_-]{12,})\b/g,"[redacted]").replace(/((?:["']?)(?:api[_-]?key|access[_-]?token|refresh[_-]?token|token|password|secret|authorization|cookie)(?:["']?)\s*[:=]\s*["']?)([^\s,"';&}]+)/gi,"$1[redacted]"):Array.isArray(n)?n.map(Ot):n&&typeof n=="object"?Object.fromEntries(Object.entries(n).map(([i,o])=>[i,/^(?:token|.*api[_-]?key|access[_-]?token|refresh[_-]?token|password|secret|authorization|cookie|set-cookie)$/i.test(i)?"[redacted]":Ot(o)])):n}async function Ga(n,i,o){const d=await Js(n,i,{...o,maxBytes:lt});let a=Ot({...d,feedbackSelection:o});const v=w=>{const m=JSON.stringify(w,null,2);return{json:m,bytes:new TextEncoder().encode(m).byteLength}};let p=v(a);const g=a.messages||[];if(p.bytes>lt&&g.length){const w=f=>({...a,messageCount:f,messagesTruncated:!0,messages:g.slice(g.length-f)});let m=0,k=g.length-1;for(;m<k;){const f=Math.ceil((m+k)/2);v(w(f)).bytes<=lt?m=f:k=f-1}a=w(m),p=v(a)}return{...p,filename:`tangu-feedback-${i?.id.slice(0,8)||"app"}-${new Date().toISOString().slice(0,10)}.json`,missing:Object.entries(d.sources).filter(([,w])=>w!=="included").map(([w])=>w),truncated:!!a.messagesTruncated||!!a.activityLogTruncated}}mt({"feedback.subtitle":{zh:"告诉我们哪里可以做得更好。",en:"Tell us what could work better."},"feedback.kind":{zh:"反馈类型",en:"Feedback type"},"feedback.bug":{zh:"遇到问题",en:"Report a problem"},"feedback.idea":{zh:"功能建议",en:"Suggest a feature"},"feedback.other":{zh:"其他反馈",en:"Something else"},"feedback.description":{zh:"具体发生了什么?",en:"What happened?"},"feedback.bugPlaceholder":{zh:`你当时在做什么?预期的结果是什么,实际又发生了什么?
3
+ 如果可以,请写下重现步骤。`,en:`What were you doing? What did you expect, and what happened instead?
4
+ Include steps to reproduce it if you can.`},"feedback.ideaPlaceholder":{zh:"你想完成什么?哪项改进会对你有帮助?",en:"What are you trying to do? What change would help?"},"feedback.otherPlaceholder":{zh:"分享你的使用体验或想法……",en:"Share your experience or thoughts…"},"feedback.context":{zh:"附带诊断信息",en:"Include diagnostic information"},"feedback.diagnostics":{zh:"应用与运行日志",en:"App and runtime logs"},"feedback.diagnosticsHint":{zh:"版本、界面状态、错误、运行时间线与用量;进程日志可能涉及其他会话。",en:"Version, interface state, errors, run timeline and usage. Process logs may include other sessions."},"feedback.conversation":{zh:"当前会话内容",en:"Current conversation"},"feedback.conversationHint":{zh:"整段对话,包含工具输入与输出;附件超过 5 MB 时保留最新的部分。",en:"The whole conversation, including tool inputs and outputs. If the attachment exceeds 5 MB, the most recent part is kept."},"feedback.activity":{zh:"近期活动记录",en:"Recent activity"},"feedback.activityHint":{zh:"近 2 天内最新 500 行,可能包含文件名与操作路径。",en:"The latest 500 lines from the last 2 days; may contain file names and paths."},"feedback.sessionContext":{zh:"关联会话:{name}",en:"Linked conversation: {name}"},"feedback.withoutSession":{zh:"未关联会话,仍可提交应用问题。",en:"No linked conversation. You can still report an app issue."},"feedback.privacy":{zh:"已过滤常见凭据字段。日志仍可能包含路径或内容片段,请按需选择并预览。",en:"Common credential fields are filtered. Logs may still contain paths or content excerpts; choose what to include and review the preview."},"feedback.preview":{zh:"预览附件",en:"Preview attachment"},"feedback.export":{zh:"导出日志文件",en:"Export log file"},"feedback.backToForm":{zh:"返回反馈",en:"Back to feedback"},"feedback.preparing":{zh:"正在准备诊断信息…",en:"Preparing diagnostics…"},"feedback.sending":{zh:"正在提交…",en:"Sending…"},"feedback.ready":{zh:"诊断附件已就绪 · {size}",en:"Diagnostics ready · {size}"},"feedback.textOnly":{zh:"仅提交反馈文字",en:"Only your feedback text will be sent"},"feedback.partial":{zh:"部分诊断来源不可用:{sources}。将提交已获取的内容。",en:"Some diagnostic sources are unavailable: {sources}. Available information will be sent."},"feedback.source.appVersion":{zh:"应用版本",en:"app version"},"feedback.source.messages":{zh:"会话内容",en:"conversation"},"feedback.source.agentConfig":{zh:"会话设置",en:"session settings"},"feedback.source.backendLogs":{zh:"运行输出",en:"runtime output"},"feedback.source.connection":{zh:"连接信息",en:"connection details"},"feedback.source.backendStatus":{zh:"引擎状态",en:"engine status"},"feedback.source.usage":{zh:"用量",en:"usage"},"feedback.source.timeline":{zh:"运行时间线",en:"run timeline"},"feedback.source.activityLog":{zh:"活动记录",en:"activity"},"feedback.truncated":{zh:"较早的部分记录因达到上限未附带,附件内已标记。",en:"Some older records were left out because of collection limits; this is marked in the attachment."},"feedback.tooLarge":{zh:"附件超过 5 MB,请减少勾选的内容后再提交。",en:"The attachment exceeds 5 MB. Deselect some information before sending."},"feedback.prepareFailed":{zh:"诊断信息准备失败。请重试,或取消勾选后仅提交文字。",en:"Could not prepare diagnostics. Retry, or deselect the options to send text only."},"feedback.refresh":{zh:"重新收集",en:"Collect again"},"feedback.successTitle":{zh:"反馈已收到",en:"Feedback received"},"feedback.successHint":{zh:"感谢你帮助我们改进 Tangu。你可以在账户中心查看回复。",en:"Thanks for helping improve Tangu. You can view replies in your account center."},"feedback.ticket":{zh:"反馈编号:{id}",en:"Reference: {id}"},"feedback.viewFeedback":{zh:"查看我的反馈",en:"View my feedback"},"feedback.done":{zh:"完成",en:"Done"},"feedback.limit":{zh:"反馈内容不能超过 {max} 字。",en:"Feedback cannot exceed {max} characters."},"feedback.retry":{zh:"重试提交",en:"Try again"},"feedback.diagnosePrompt":{zh:`我在使用 Tangu 时遇到一个问题,想请你帮我诊断:
5
+
6
+ {description}
7
+
8
+ 请结合当前会话的上下文分析可能的原因,并给出排查步骤。`,en:`I ran into a problem while using Tangu and would like your help diagnosing it:
9
+
10
+ {description}
11
+
12
+ Using the context of this session, analyze the likely causes and suggest troubleshooting steps.`}});function xs(n){N.getState().setPendingDraft(n),W.getState().openView("chat",{followActive:!0,reuseKey:"primary"},"main")}const Ss=({cfg:n,activeSession:i,onClose:o,surface:d="modal"})=>{const{t:a}=be(),[v]=c.useState(()=>({cfg:n,session:i})),p=N(S=>S.feedbackDraft),[g,w]=c.useState("bug"),[m,k]=c.useState(!0),[f,b]=c.useState(!1),[h,I]=c.useState(!1),[C,j]=c.useState(0),[A,L]=c.useState(null),[_,X]=c.useState(!1),[y,z]=c.useState(!1),[M,V]=c.useState(null),[B,$]=c.useState(""),G=c.useRef(null),q=c.useRef(!1),Ce=c.useRef(o);Ce.current=o;const P=m||f||h,le=`${m}:${f}:${h}:${C}`,Ne=A?.key===le?A:null,re=P&&!Ne,D=P?Ne?.report:void 0,de=!!D&&D.bytes>lt,se=p.trim().length>Mt,we=!!p.trim()&&!se&&!y&&!M&&!re&&!de&&(!P||!!D),Q=()=>{q.current||Ce.current()};c.useEffect(()=>{if(!P)return;let S=!0;return Ga(v.cfg,v.session,{diagnostics:m,conversation:f,activity:h}).then(F=>{S&&L({key:le,report:F})}).catch(()=>{S&&L({key:le,failed:!0})}),()=>{S=!1}},[v,m,f,h,C,le,P]),c.useEffect(()=>{const S=document.activeElement,F=requestAnimationFrame(()=>G.current?.querySelector("textarea")?.focus()),oe=Z=>{if(Z.key==="Escape"&&(Z.preventDefault(),Z.stopImmediatePropagation(),q.current||Ce.current()),Z.key==="Tab"){const ve=Array.from(G.current?.querySelectorAll('button:not(:disabled), textarea:not(:disabled), input:not(:disabled), [tabindex="0"]')||[]).filter(Me=>Me.getClientRects().length>0),ue=ve[0],Le=ve[ve.length-1];if(!ue){Z.preventDefault(),G.current?.focus();return}Z.shiftKey&&(document.activeElement===ue||!G.current?.contains(document.activeElement))?(Z.preventDefault(),Le.focus()):!Z.shiftKey&&(document.activeElement===Le||!G.current?.contains(document.activeElement))&&(Z.preventDefault(),ue.focus())}};return document.addEventListener("keydown",oe,!0),()=>{cancelAnimationFrame(F),document.removeEventListener("keydown",oe,!0),S?.focus()}},[]);const Ie=async()=>{if(!(!we||q.current)){if(!window.tangu?.submitFeedback){$(a("feedback.errUnavailable"));return}q.current=!0,z(!0),$("");try{const S=await window.tangu.submitFeedback({description:`[Tangu · ${a(`feedback.${g}`)}]
13
+
14
+ ${p.trim()}`,...D?{sessionLogJson:D.json,sessionLogName:D.filename}:{}});S.ok?(V(S),N.setState({feedbackDraft:""})):$(S.error==="attachment-too-large"?a("feedback.tooLarge"):a("feedback.errFail",{err:S.error==="not-logged-in"?a("feedback.errNotLoggedIn"):S.error||"Unknown error"}))}catch(S){$(a("feedback.errFail",{err:String(S?.message||S)}))}finally{q.current=!1,z(!1)}}},Y=()=>{if(!p.trim()||y)return;const S=a("feedback.diagnosePrompt",{description:p.trim()});window.tangu?.requestMainAction?window.tangu.requestMainAction("chat-draft",S):xs(S),Q()},qe=D?`${(D.bytes/1024).toFixed(1)} KB`:"",Te=()=>{if(!D)return;const S=URL.createObjectURL(new Blob([D.json],{type:"application/json;charset=utf-8"})),F=document.createElement("a");F.href=S,F.download=D.filename,F.click(),setTimeout(()=>URL.revokeObjectURL(S),1e4)};return t.jsx("div",{className:d==="panel"?"feedback-panel-surface":"memv-modal feedback-overlay",onClick:S=>{d==="modal"&&S.target===S.currentTarget&&Q()},children:t.jsxs("div",{ref:G,className:"modal feedback-modal",role:"dialog","aria-modal":"true","aria-labelledby":"feedback-title",tabIndex:-1,onKeyDown:S=>{(S.metaKey||S.ctrlKey)&&S.key==="Enter"&&!S.nativeEvent.isComposing&&(S.preventDefault(),Ie())},children:[t.jsxs("div",{className:"modal-head feedback-head",children:[t.jsxs("div",{className:"feedback-heading",children:[t.jsx(zn,{size:19}),t.jsxs("div",{children:[t.jsx("h2",{id:"feedback-title",children:a("feedback.title")}),t.jsx("p",{children:a("feedback.subtitle")})]})]}),t.jsx("button",{className:"icon-btn",onClick:Q,disabled:y,"aria-label":a("settings.btn.cancel"),children:t.jsx(Vt,{size:18})})]}),M?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"modal-body feedback-success",role:"status",children:[t.jsx("span",{className:"feedback-success-icon",children:t.jsx(gs,{size:28})}),t.jsx("h3",{children:a("feedback.successTitle")}),t.jsx("p",{children:a("feedback.successHint")}),M.id&&t.jsx("code",{children:a("feedback.ticket",{id:M.id})}),M.attachmentSkipped&&t.jsx("p",{className:"feedback-warning",children:a("feedback.okNoLog")}),B&&t.jsx("p",{className:"feedback-warning",role:"alert",children:B})]}),t.jsxs("div",{className:"feedback-footer",children:[window.tangu?.openAccountCenter&&t.jsx("button",{className:"btn ghost",onClick:()=>{$(""),window.tangu.openAccountCenter("feedback").catch(()=>$(a("feedback.errUnavailable")))},children:a("feedback.viewFeedback")}),t.jsx("span",{className:"grow"}),t.jsx("button",{autoFocus:!0,className:"btn primary",onClick:Q,children:a("feedback.done")})]})]}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"modal-body feedback-body",children:[_?t.jsxs(t.Fragment,{children:[t.jsxs("button",{className:"btn ghost sm feedback-back",onClick:()=>X(!1),children:[t.jsx(qi,{size:14}),a("feedback.backToForm")]}),t.jsxs("div",{className:"feedback-file",children:[t.jsx(Pt,{size:15}),t.jsx("span",{children:D?.filename}),t.jsx("span",{children:qe})]}),t.jsx("pre",{className:"feedback-preview",tabIndex:0,children:D?.json})]}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"feedback-kinds",role:"group","aria-label":a("feedback.kind"),children:[{id:"bug",Icon:Gi},{id:"idea",Icon:ts},{id:"other",Icon:zn}].map(({id:S,Icon:F})=>t.jsxs("button",{className:"btn ghost","aria-pressed":g===S,disabled:y,onClick:()=>w(S),children:[t.jsx(F,{size:15}),a(`feedback.${S}`)]},S))}),t.jsxs("div",{className:"feedback-description",children:[t.jsx("label",{htmlFor:"feedback-description",children:a(g==="bug"?"feedback.description":"feedback.label")}),t.jsx("textarea",{id:"feedback-description",value:p,onChange:S=>{N.setState({feedbackDraft:S.target.value}),$("")},placeholder:a(`feedback.${g}Placeholder`),disabled:y,"aria-invalid":se,"aria-describedby":"feedback-count"}),t.jsxs("span",{id:"feedback-count",className:se?"feedback-warning":"feedback-count",children:[p.trim().length.toLocaleString()," / ",Mt.toLocaleString()]})]}),t.jsxs("section",{className:"feedback-context","aria-labelledby":"feedback-context-title",children:[t.jsxs("div",{className:"feedback-section-heading",children:[t.jsx("h3",{id:"feedback-context-title",children:a("feedback.context")}),t.jsx("code",{children:"/feedback"})]}),t.jsx("p",{className:"feedback-session",children:v.session?a("feedback.sessionContext",{name:v.session.title||v.session.id.slice(0,8)}):a("feedback.withoutSession")}),[{id:"diagnostics",checked:m,change:k,unavailable:!1},{id:"conversation",checked:f,change:b,unavailable:!v.session},{id:"activity",checked:h,change:I,unavailable:!window.tangu?.exportActivity}].map(S=>t.jsxs("label",{className:"feedback-option","data-disabled":S.unavailable||void 0,children:[t.jsx("input",{type:"checkbox",checked:S.checked,onChange:F=>S.change(F.target.checked),disabled:y||S.unavailable}),t.jsxs("span",{children:[t.jsx("strong",{children:a(`feedback.${S.id}`)}),t.jsx("small",{children:a(`feedback.${S.id}Hint`)})]})]},S.id))]}),t.jsxs("div",{className:"feedback-report-status",role:"status",children:[t.jsx("span",{children:re?t.jsxs(t.Fragment,{children:[t.jsx(Pn,{size:13,className:"spin"}),a("feedback.preparing")]}):D?t.jsxs(t.Fragment,{children:[t.jsx(Pt,{size:13}),a("feedback.ready",{size:qe})]}):a(P?"feedback.prepareFailed":"feedback.textOnly")}),t.jsxs("div",{children:[D&&t.jsx("button",{className:"btn ghost sm",onClick:()=>X(!0),disabled:y,children:a("feedback.preview")}),D&&t.jsxs("button",{className:"btn ghost sm",onClick:Te,disabled:y,children:[t.jsx(Ro,{size:13}),a("feedback.export")]}),P&&t.jsx("button",{className:"icon-btn",onClick:()=>j(S=>S+1),disabled:y||re,"aria-label":a("feedback.refresh"),title:a("feedback.refresh"),children:t.jsx(At,{size:13})})]})]}),!!D?.missing.length&&t.jsx("p",{className:"feedback-warning",children:a("feedback.partial",{sources:D.missing.map(S=>a(`feedback.source.${S}`)).join(", ")})}),D?.truncated&&t.jsx("p",{className:"feedback-note",children:a("feedback.truncated")}),P&&t.jsx("p",{className:"feedback-note",children:a("feedback.privacy")})]}),de&&t.jsx("p",{className:"feedback-warning",role:"alert",children:a("feedback.tooLarge")}),se&&t.jsx("p",{className:"feedback-warning",role:"alert",children:a("feedback.limit",{max:Mt})}),B&&t.jsx("p",{className:"feedback-warning",role:"alert",children:B})]}),t.jsxs("div",{className:"feedback-footer",children:[t.jsxs("button",{className:"btn ghost feedback-diagnose",onClick:Y,disabled:y||!p.trim(),title:a("feedback.diagnoseViaChatHint"),children:[t.jsx(Zi,{size:15}),a("feedback.diagnoseViaChat")]}),t.jsx("span",{className:"grow"}),t.jsxs("button",{className:"btn primary",onClick:()=>{Ie()},disabled:!we,children:[y&&t.jsx(Pn,{size:14,className:"spin"}),a(y?"feedback.sending":B?"feedback.retry":"feedback.submit")]})]})]})]})})};mt({"syncSetup.title":{zh:"把这台电脑同步到蓬洲云",en:"Sync this computer to Penzor Cloud"},"syncSetup.lead":{zh:"已登录「{name}」。勾着的会和你的其他设备保持一致,以后随时可以在蓬洲云 › 同步里关。",en:"Signed in as {name}. Checked items stay in sync with your other devices. You can turn them off anytime in Penzor Cloud › Sync."},"syncSetup.notes":{zh:"智库「{name}」",en:'Notes vault "{name}"'},"syncSetup.notesAny":{zh:"这台电脑的智库",en:"Notes vault on this computer"},"syncSetup.notesSize":{zh:"{size} · 用掉设备同步 {max} 里的 {pct}%",en:"{size} · {pct}% of your {max} device sync storage"},"syncSetup.notesOver":{zh:"{size},超过设备同步的 {max}:放不下的先留在这台电脑,不会删除",en:"{size}, more than your {max} device sync storage. What doesn't fit stays on this computer. Nothing is deleted."},"syncSetup.notesHint":{zh:"整个本机智库,和你的其他电脑保持一致",en:"Your whole local vault, kept the same on your other computers"},"syncSetup.agents":{zh:"Agents 与记忆",en:"Agents & memory"},"syncSetup.agentsHint":{zh:"Agents 的记忆、日志、技能和协作说明",en:"Your agents' memory, logs, skills and collaboration notes"},"syncSetup.plugins":{zh:"插件数据",en:"Plugin data"},"syncSetup.pluginsHint":{zh:"插件自己存的设置和数据",en:"Settings and data your plugins save"},"syncSetup.footHint":{zh:"另一台电脑登录同一账号,就会自动出现",en:"Sign in on another computer and it appears there too"},"syncSetup.later":{zh:"稍后",en:"Later"},"syncSetup.start":{zh:"开始同步",en:"Start syncing"},"syncSetup.progress":{zh:"正在同步到蓬洲云 · 智库 {done} / {total} 个文件",en:"Syncing to Penzor Cloud · notes {done} / {total} files"},"syncSetup.view":{zh:"查看",en:"View"},"syncSetup.decide":{zh:"云端已经有一份智库,去蓬洲云 › 同步里选怎么合并。",en:"Penzor Cloud already has a notes vault. Choose how to combine them in Penzor Cloud › Sync."},"syncSetup.failed":{zh:"有一项没开成:{error}",en:"One item couldn't be turned on: {error}"}});const qn="forsion-penzor",zt=1024**3,rt=n=>n>=zt?`${(n/zt).toFixed(n>=10*zt?0:1)} GB`:n>=1024**2?`${Math.round(n/1024**2)} MB`:`${Math.max(1,Math.round(n/1024))} KB`,Za=()=>c.useSyncExternalStore(Yo,cs);function Qa(){K.getState().spaces.some(n=>n.id===qn)&&Ke(qn)}function Ja(){const{t:n}=be(),[i,o]=c.useState("");c.useEffect(()=>Oo(o),[]);const d=Za(),[a,v]=c.useState(!1),[p,g]=c.useState(!1),[w,m]=c.useState({notes:!0,agents:!0,plugins:!0}),[k,f]=c.useState(!1),b=Ye()==="main",h=Ao("syncSetup",a,Fo.syncSetup);c.useEffect(()=>{b&&window.remoteSync&&_o()},[b]);let I=!1;try{I=localStorage.getItem(Ft)==="1"}catch{}const C=b&&Bo(d,I),j=C&&!a,A=b&&!!d&&d.signedIn&&!d.decided&&I&&d.notes.available&&!j&&!a;c.useEffect(()=>{A&&Dn()},[A]),c.useEffect(()=>{if(!j)return;const M=setTimeout(()=>v(!0),2500);return()=>clearTimeout(M)},[j]),c.useEffect(()=>{a&&!C&&!p&&v(!1)},[a,C,p]);const L=d?.notes.progress;if(c.useEffect(()=>{if(k&&d&&!d.notes.running&&d.notes.last){const M=setTimeout(()=>f(!1),1500);return()=>clearTimeout(M)}},[k,d]),!b||!d)return null;const _=async()=>{g(!0);const M=await Uo(w);g(!1),v(!1);const V=M.find($=>!$.ok);V&&Wn({text:n("syncSetup.failed",{error:V.error??""}),level:"warning"}),cs()?.notes.pending?(Wn({text:n("syncSetup.decide"),level:"info"}),Qa()):w.notes&&f(!0)},X=()=>{Dn(),v(!1)},y=(()=>{const{localBytes:M,maxBytes:V}=d.notes;return M==null||!V?n("syncSetup.notesHint"):M>V?n("syncSetup.notesOver",{size:rt(M),max:rt(V)}):n("syncSetup.notesSize",{size:rt(M),max:rt(V),pct:String(Math.max(1,Math.round(M/V*100)))})})(),z=[["notes",t.jsx($o,{size:15}),d.notes.rootName?n("syncSetup.notes",{name:d.notes.rootName}):n("syncSetup.notesAny"),y],["agents",t.jsx(us,{size:15}),n("syncSetup.agents"),n("syncSetup.agentsHint")],["plugins",t.jsx(Vo,{size:15}),n("syncSetup.plugins"),n("syncSetup.pluginsHint")]];return t.jsxs(t.Fragment,{children:[h&&t.jsx("div",{className:"u-backdrop sync-setup-backdrop",children:t.jsxs("div",{className:"modal modal-sm sync-setup",role:"dialog","aria-modal":"true","aria-label":n("syncSetup.title"),children:[t.jsxs("div",{className:"modal-head",children:[t.jsx(Ho,{size:16}),t.jsx("span",{className:"sync-setup-title",children:n("syncSetup.title")})]}),t.jsxs("div",{className:"sync-setup-body",children:[t.jsx("p",{className:"sync-setup-lead",children:n("syncSetup.lead",{name:i})}),z.map(([M,V,B,$])=>t.jsxs("label",{className:"sync-setup-row",children:[t.jsx("input",{type:"checkbox",checked:w[M],disabled:p,onChange:G=>m({...w,[M]:G.target.checked})}),t.jsx("span",{className:"sync-setup-tile",children:V}),t.jsxs("span",{className:"sync-setup-copy",children:[t.jsx("b",{children:B}),t.jsx("small",{children:$})]})]},M))]}),t.jsxs("div",{className:"sync-setup-foot",children:[t.jsx("span",{className:"sync-setup-hint",children:n("syncSetup.footHint")}),t.jsxs("span",{className:"sync-setup-acts",children:[t.jsx("button",{className:"btn",disabled:p,onClick:X,children:n("syncSetup.later")}),t.jsx("button",{className:"btn primary",disabled:p,onClick:()=>{_()},children:n("syncSetup.start")})]})]})]})}),k&&d.notes.running&&L&&L.total>0&&t.jsxs("div",{className:"sync-setup-progress",role:"status",children:[t.jsx(At,{size:14,className:"spin"}),t.jsx("span",{children:n("syncSetup.progress",{done:String(L.done),total:String(L.total)})}),t.jsx("span",{className:"sync-setup-bar",children:t.jsx("i",{style:{width:`${Math.round(L.done/L.total*100)}%`}})}),t.jsx("button",{type:"button",className:"sync-setup-link",onClick:Wo,children:n("syncSetup.view")})]})]})}function Gn(n){return Array.from(n.dataTransfer?.types??[]).includes("Files")}function Xe(){const n=o=>{!Gn(o)||o.defaultPrevented||(o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect="none"))},i=o=>{Gn(o)&&!o.defaultPrevented&&o.preventDefault()};return document.addEventListener("dragover",n),document.addEventListener("drop",i),()=>{document.removeEventListener("dragover",n),document.removeEventListener("drop",i)}}function js({target:n,onUnavailable:i}){const[,o]=c.useReducer(m=>m+1,0),[d,a]=c.useState(()=>({...n.params??{}})),v=c.useRef(d);v.current=d;const p=c.useRef(!1);c.useEffect(()=>Ee(o),[]),c.useEffect(()=>a({...n.params??{}}),[n]);const g=ge(n.type);g&&(p.current=!0),c.useEffect(()=>{p.current&&!g&&i?.()},[g,i]);const w=c.useMemo(()=>({id:`floating:${n.type}`,type:n.type,loc:"main",get params(){return v.current},setTitle:m=>{document.title=m},setParams:m=>a({...m}),close:()=>i?.()}),[n.type,i]);return g?t.jsx("div",{className:"floating-plugin-view","data-view":n.type,children:t.jsx(hs,{children:t.jsx(c.Suspense,{fallback:null,children:g.factory({leaf:w,params:d})})})}):t.jsx("div",{className:"floating-panel-empty",children:"Loading panel…"})}const er=[[390,"iPhone"],[414,"Max"],[768,"iPad"]];function tr({children:n}){const[i,o]=c.useState(390);return fs!=="mobile"?t.jsx(t.Fragment,{children:n}):window.innerWidth<=820?t.jsx(t.Fragment,{children:n}):t.jsxs("div",{className:"sc-frame",children:[t.jsx("div",{className:"sc-bar",children:er.map(([d,a])=>t.jsxs("button",{className:`sc-size${i===d?" on":""}`,onClick:()=>o(d),children:[a," · ",d]},d))}),t.jsx("div",{className:"sc-device",style:{width:i},children:n})]})}function nr(){eo(),c.useEffect(()=>Xe(),[]),c.useEffect(()=>{to(),no()},[]),c.useEffect(()=>window.tangu?.onMainAction?.((m,k)=>{m==="onboarding"&&N.getState().setOnboarding(!0),m==="dev-commands"&&so(),m==="test-notification"&&oo(),m==="reset-layout"&&W.getState().resetLayout({undoable:!0}),m==="achievement-toast"&&Qi(),m==="space-removed"&&k&&fa(k),m==="chat-draft"&&k&&xs(k),m==="chat-quote"&&k&&ya(k),m==="agents-changed"&&(N.getState().refreshAgents(),window.dispatchEvent(new Event("forsion:agents-changed"))),m==="skills-changed"&&(_t(Bt()).then(f=>N.setState({skillsList:f})).catch(()=>{}),window.dispatchEvent(new Event("forsion:skills-changed"))),m==="open-agents"&&Mn(N.getState().defaultAgentSlug||""),m==="open-agent"&&k&&/^[a-z0-9][a-z0-9-]{0,63}$/.test(k)&&Mn(k),m==="unit-route"&&k&&Ko(k),m==="open-space"&&k&&K.getState().spaces.some(f=>f.id===k)&&Ke(k)}),[]);const n=pt(),i=Xo();io();const o=N(ls(m=>({sessions:m.sessions,archivedSessions:m.archivedSessions,activeId:m.activeId,settingsOpen:m.settingsOpen,settingsTab:m.settingsTab,settingsSkillKey:m.settingsSkillKey,settingsNonce:m.settingsNonce,onboarding:m.onboarding,feedbackOpen:m.feedbackOpen,marketOpen:m.marketOpen,marketTarget:m.marketTarget,closeMarket:m.closeMarket,achievementsOpen:m.achievementsOpen,cfg:m.cfg,tr:m.tr,openSettings:m.openSettings,closeSettings:m.closeSettings,patchConfig:m.patchConfig,connect:m.connect,setOnboarding:m.setOnboarding,closeFeedback:m.closeFeedback}))),d=o.sessions.find(m=>m.id===o.activeId)||o.archivedSessions.find(m=>m.id===o.activeId)||null,a=c.useSyncExternalStore(qo,Rn,Rn),[v,p]=c.useState(!1),g=c.useRef(o.onboarding);c.useEffect(()=>{const m=g.current;if(g.current=o.onboarding,m&&!o.onboarding){p(!0);const k=setTimeout(()=>p(!1),650);return()=>clearTimeout(k)}},[o.onboarding]),c.useEffect(()=>Go(!!o.onboarding),[o.onboarding]);const w=o.settingsOpen||o.marketOpen||o.achievementsOpen||o.feedbackOpen||!!a||o.onboarding;return t.jsxs(tr,{children:[t.jsx("div",{className:`shell-host${v?" main-enter":""}`,style:o.onboarding?{visibility:"hidden"}:void 0,children:t.jsx(ks,{dark:i.mode==="dark",soft:!!ds(i.lang)?.manifest.panelGap,buildDefault:ns,header:t.jsx(qa,{}),footer:t.jsx(ao,{})})}),Zo()&&t.jsx(ss,{}),t.jsx(Qo,{}),t.jsx(Jo,{}),t.jsx(ws,{}),t.jsx(wa,{}),t.jsx(Se,{children:o.settingsOpen&&t.jsx($e,{title:o.tr("settings.title"),onClose:()=>o.closeSettings(),children:t.jsx(os,{open:!0,initialTab:o.settingsTab??void 0,initialSkillKey:o.settingsSkillKey??void 0,cfg:o.cfg,activeSession:d,themeLang:n.lang,themeSkin:n.skin,themeMode:n.mode,themeModePref:n.modePref,flatOn:n.flat,glassOn:n.glass,themeSeed:n.seed,onClose:()=>o.closeSettings(),onConfigChange:o.patchConfig,onThemeChange:(m,k,f)=>n.setTheme(m,k,n.bg,f),onFlatChange:n.setFlat,onGlassChange:m=>n.setGlass(m),onSeedChange:m=>n.setSeedValue(m),onReloadThemes:()=>n.reloadThemes(),onReconnect:m=>{o.connect({...o.cfg,...m||{}})},onRelaunchOnboarding:()=>{o.closeSettings();try{localStorage.removeItem(Ft)}catch{}o.setOnboarding(!0)}},o.settingsNonce)},"settings")}),t.jsx(Se,{children:o.onboarding&&t.jsx(ei.div,{style:{position:"fixed",inset:0,zIndex:60,background:"var(--bg)"},initial:{opacity:0},animate:{opacity:1},exit:{opacity:0,scale:1.06},transition:{duration:.45,ease:[.2,.8,.2,1]},children:t.jsx(ti,{themeLang:n.lang,themeSkin:n.skin,themeMode:n.mode,themeModePref:n.modePref,themeSeed:n.seed,onThemeChange:(m,k,f)=>n.setTheme(m,k,n.bg,f),onSeedChange:m=>n.setSeedValue(m),onReconnect:()=>{window.tangu?.getConfig().then(m=>{const k={backendUrl:m.backendUrl,token:m.token,modelId:m.modelId};N.setState({cfg:k,desktopMode:"managed"}),N.getState().connect(k)})},onFinish:()=>{o.setOnboarding(!1),window.tangu?.getConfig().then(m=>{const k={backendUrl:m.backendUrl,token:m.token,modelId:m.modelId};N.setState({cfg:k,homeDir:m.homeDir,defaultWsDir:m.defaultWorkspaceDir||""}),N.getState().connect(k)})}})},"onboarding")}),t.jsx(Se,{children:o.marketOpen&&t.jsx($e,{title:o.tr("market.title"),onClose:()=>o.closeMarket(),children:t.jsx(is,{initialQuery:o.marketTarget?.q,initialItemId:o.marketTarget?.itemId,initialDetailTab:o.marketTarget?.detailTab,onClose:()=>o.closeMarket()},o.marketTarget?.nonce)},"market")}),t.jsx(Se,{children:o.achievementsOpen&&t.jsx($e,{title:o.tr("achievements.title"),onClose:()=>N.getState().closeAchievements(),children:t.jsx(as,{onClose:()=>N.getState().closeAchievements()})},"achievements")}),t.jsx(Se,{children:o.feedbackOpen&&t.jsx($e,{compact:!0,title:o.tr("feedback.title"),onClose:()=>o.closeFeedback(),children:t.jsx(Ss,{surface:"panel",cfg:o.cfg,activeSession:d,onClose:()=>o.closeFeedback()})},"feedback")}),t.jsx(ro,{}),t.jsx(co,{}),t.jsx(lo,{}),t.jsx(Ja,{}),t.jsx(Se,{children:a?.view&&t.jsx($e,{title:a.title,onClose:On,children:t.jsx(js,{target:a.view,onUnavailable:On})},a.id)}),!w&&t.jsx(rs,{}),!w&&t.jsx(uo,{onOpen:()=>N.getState().openAchievements()}),!o.onboarding&&t.jsx(mo,{})]})}function sr(){W.getState().openView("home",{},"main")}mt({"spaceWindow.stuck":{zh:"这个 Space 还没准备好。它所属的插件可能还在加载,或已被停用、卸载。准备好后这里会自动打开,也可以直接关掉这扇窗。",en:"This Space is not ready yet. Its plugin may still be loading, or may have been disabled or removed. It will open here once it is ready, or you can close this window."}});const Zn=6e3;function or(){const[n,i]=c.useState(Hn?"wait":"plain");return c.useEffect(()=>{const o=Hn;if(!o)return;const d=Date.now();let a=null,v=!1;const p=()=>{const k=K.getState().spaces.find(b=>b.id===o);if(a){k!==a&&!v&&(v=!0,location.reload());return}if(!k||!Ji()&&Date.now()-d<Zn)return;a=k;const f=W.getState();f.setSidebarDefaults(k.sidebarDefaults),f.setSideProfile(k.id,k.resizableSides??{},k.sideDefaultScale,k.bottomSpan),f.setPinned(k.pinned),document.title=je(k.name),i("ready")};p();const g=K.subscribe(p),w=Ee(p),m=window.setTimeout(()=>{p(),a||i("stuck")},Zn+50);return()=>{g(),w(),window.clearTimeout(m)}},[]),n}function ir(){const{t:n}=be(),i=pt(),o=or();c.useEffect(()=>{N.getState().setTr((a,v)=>n(a,v))},[n]),c.useEffect(()=>{N.getState().boot()},[]),c.useEffect(()=>Xe(),[]),c.useEffect(()=>window.tangu?.onMainAction?.(a=>{a==="agents-changed"&&(N.getState().refreshAgents(),window.dispatchEvent(new Event("forsion:agents-changed"))),a==="skills-changed"&&(_t(Bt()).then(v=>N.setState({skillsList:v})).catch(()=>{}),window.dispatchEvent(new Event("forsion:skills-changed")))}),[]),c.useEffect(()=>{window.tangu?.detachedReady?.(ni()).then(a=>{if(!a?.length)return;const v=W.getState();for(const p of a)v.openView(p.type,p.params??{},"main")})},[]);const d=(()=>{try{return window.tangu?.platform==="darwin"}catch{return!1}})();return o==="wait"||o==="stuck"?t.jsxs("div",{className:"shell-host",style:{display:"flex",flexDirection:"column"},children:[d&&t.jsx("div",{style:{height:38,flex:"0 0 auto",WebkitAppRegion:"drag"}}),o==="stuck"&&t.jsx("div",{className:"space-window-wait",role:"status",style:{flex:1,display:"grid",placeItems:"center",padding:32,textAlign:"center",color:"var(--text-muted)",fontSize:"var(--ui-font-body, 13px)",lineHeight:1.6},children:t.jsx("span",{style:{maxWidth:420},children:n("spaceWindow.stuck")})})]}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"shell-host",children:t.jsx(ks,{noRibbon:!0,dark:i.mode==="dark",soft:!!ds(i.lang)?.manifest.panelGap,buildDefault:o==="ready"?ns:sr})}),window.amadeus&&t.jsx(ss,{}),t.jsx(ws,{})]})}mt({"dock.pickTitle":{zh:"贴到哪个窗口旁边",en:"Dock beside a window"},"dock.pickHint":{zh:"选一个窗口,对话面板会贴在它旁边,一起移动和缩放。",en:"Pick a window. The chat panel docks beside it and moves and resizes with it."},"dock.loading":{zh:"正在查找窗口…",en:"Looking for windows…"},"dock.empty":{zh:"屏幕上没有可以贴靠的窗口。",en:"No windows on screen to dock beside."},"dock.refresh":{zh:"刷新",en:"Refresh"},"dock.close":{zh:"关闭",en:"Close"},"dock.selectedIn":{zh:"在 {app} 里选中的:",en:"Selected in {app}:"},"dock.err.helper_not_installed":{zh:"还没装好「电脑操作」的本机 helper。让 Agent 用一次电脑操作,它会自动装好。",en:"The Computer Use helper is not installed yet. Ask the agent to use Computer Use once and it installs itself."},"dock.err.helper_not_running":{zh:"「电脑操作」的本机 helper 没有启动。",en:"The Computer Use helper is not running."},"dock.err.unsupported_helper":{zh:"本机的「电脑操作」helper 是旧版,不支持侧边拼接。让 Agent 用一次电脑操作,它会自动更新。",en:"The Computer Use helper is out of date and cannot dock. Ask the agent to use Computer Use once and it updates itself."},"dock.err.window_gone":{zh:"这个窗口已经关了。",en:"That window has been closed."},"dock.err.generic":{zh:"没能贴过去({code})。",en:"Could not dock ({code})."}});const ar=new Set(["helper_not_installed","helper_not_running","unsupported_helper","window_gone"]);function rr(n,i,o){return n?.text?n.text:n?.items?.length?[o("dock.selectedIn",{app:i}),...n.items.map(d=>`- ${d}`)].join(`
15
+ `):""}function cr(){const{t:n}=be(),[i,o]=c.useState(!1),[d,a]=c.useState(null);c.useEffect(()=>{N.getState().setTr((p,g)=>n(p,g))},[n]),c.useEffect(()=>{N.getState().boot().finally(()=>{N.setState({sessionMode:"work"}),o(!0)});const p=window.tangu?.onAppDockState?.(g=>a(g.target));return window.tangu?.appDockReady?.().then(g=>a(g.target)),()=>p?.()},[]),c.useEffect(()=>{window.amadeus&&$t()},[]),c.useEffect(()=>Xe(),[]),c.useEffect(()=>{if(!i||!d)return;const p={type:"chat",params:{miniSurface:!0,appRef:d}};ur({view:p,mainView:{type:"chat"}}),N.getState().setActiveId(null),W.getState().openView("chat",p.params,"main")},[i,d?.pid,d?.windowId]);const v=c.useRef(n);return v.current=n,c.useEffect(()=>{if(!d)return;let p="";const g=async()=>{const w=rr(await window.tangu?.appDockSelection?.(),d.app,v.current);!w||w===p||(p=w,N.getState().setPendingChatQuote("chat",w))};return window.addEventListener("focus",g),()=>window.removeEventListener("focus",g)},[d?.pid,d?.windowId]),d?t.jsx(ys,{buildDefault:()=>{},direct:{title:d.app,view:{type:"chat",params:{miniSurface:!0,appRef:d}},mainView:{type:"chat"}}}):t.jsx(lr,{})}function lr(){const{t:n}=be(),[i,o]=c.useState(null),[d,a]=c.useState(""),v=async()=>{o(null),a("");const w=await window.tangu?.appDockCandidates?.();o(w?.windows??[]),w?.error&&a(w.error)};c.useEffect(()=>{v()},[]);const p=async w=>{a("");const m=await window.tangu?.appDockAttach?.({pid:w.pid,windowId:w.windowId,app:w.app,bundleId:w.bundleId,title:w.title});m&&!m.ok&&m.error!=="superseded"&&a(m.error||"unavailable")},g=d?ar.has(d)?n(`dock.err.${d}`):n("dock.err.generic",{code:d}):"";return t.jsxs("div",{className:"mini-card-shell","data-space":"dock",children:[t.jsxs("header",{className:"mini-card-chrome",children:[t.jsx("div",{className:"mini-card-drag-title dock-picker-title",children:n("dock.pickTitle")}),t.jsx("button",{className:"mini-card-action","aria-label":n("dock.refresh"),title:n("dock.refresh"),onClick:()=>{v()},children:t.jsx(At,{size:15})}),t.jsx("button",{className:"mini-card-action mini-card-close","aria-label":n("dock.close"),onClick:()=>window.tangu?.closeSelf?.(),children:t.jsx(Vt,{size:15})})]}),t.jsxs("main",{className:"mini-card-main dock-picker",children:[t.jsx("p",{className:"dock-picker-hint",children:n("dock.pickHint")}),g&&t.jsx("p",{className:"dock-picker-error",role:"alert",children:g}),i===null?t.jsx("div",{className:"mini-panel-empty",children:n("dock.loading")}):i.length===0?!g&&t.jsx("div",{className:"mini-panel-empty",children:n("dock.empty")}):t.jsx("div",{className:"dock-picker-list",children:i.map(w=>t.jsxs("button",{className:"mini-card-row dock-picker-row","data-window-id":w.windowId,onClick:()=>{p(w)},children:[t.jsx(si,{size:15}),t.jsxs("span",{className:"mini-card-row-label",children:[t.jsx("span",{className:"dock-picker-app",children:w.app}),w.title&&t.jsx("span",{className:"dock-picker-window",children:w.title})]})]},`${w.pid}:${w.windowId}`))})]})]})}function dr(){let n,i=0;const o=window.tangu?.onMiniDockMotion?.(d=>{const a=document.querySelector(".mini-card-shell");if(!a)return;i=d.id;const v=getComputedStyle(a).transform;n?.cancel();const p=d.x||d.y?`translate3d(calc(${d.x}px / var(--uiz, 1)), calc(${d.y}px / var(--uiz, 1)), 0)`:"none";a.style.transform=p;const g=()=>{i===d.id&&(n?.cancel(),n=void 0,p==="none"&&a.style.removeProperty("transform"),window.tangu?.miniDockMotionDone?.(d.id))};if(!d.animate||matchMedia("(prefers-reduced-motion: reduce)").matches){g();return}n=a.animate([{transform:v},{transform:p}],{duration:220,easing:"cubic-bezier(.22, .8, .25, 1)"}),n.finished.then(g,()=>{})});return()=>{i++,n?.cancel(),o?.()}}let ne=null;function ur(n){ne=n}Ye()==="mini"&&(ta(async n=>{n.type==="amadeus-editor"&&await sa();const i={...n.params};delete i.miniSurface,n.type==="chat"&&(i.sessionId||=N.getState().activeId||void 0,i.followActive=!i.sessionId),window.tangu?.showMainPanel?.({...n,params:i})}),na(n=>{if(ne?.view)return n.type===ne.view.type?n:n.type===(ne.mainView?.type||ne.view.type)?{type:ne.view.type,params:{...ne.view.params,...n.params}}:(ut({...n}),null);const i=Ht();if(!i||!ft(i))return null;const o=i.mini;return n.type===o.view.type?n:n.type===o.mainView.type?{type:o.view.type,params:{...o.view.params,...n.params}}:(ut({...n}),null)}));function mr(){const n=Ht();n&&ft(n)&&W.getState().openView(n.mini.view.type,n.mini.view.params??{},"main")}function pr(){return oi()?t.jsx(cr,{}):t.jsx(fr,{})}function fr(){const{t:n}=be();c.useEffect(dr,[]);const[i,o]=c.useState(null);return c.useEffect(()=>{N.getState().setTr((d,a)=>n(d,a))},[n]),c.useEffect(()=>{let d=!1,a=!1;const v=new URLSearchParams(location.search);let p=v.get("sessionId")?{sessionId:v.get("sessionId")}:null;const g=()=>{if(!d||!p)return;if(p.view){const C=p.view;if(!ge(C.type)){a&&window.tangu?.closeSelf?.();return}a=!0;const j=p;p=null,ne=j,o(j),W.getState().openView(C.type,{...C.params,...j.params},"main");return}const f=p.spaceId||(p.sessionId?"tangu":void 0),b=K.getState().spaces.find(C=>C.id===f);if(!b||!ft(b))return;const h=p;p=null,ne=null,o(null),Ke(b.id);const I={...b.mini.view.params,...h.params,...h.sessionId?{sessionId:h.sessionId,followActive:!1}:{}};W.getState().openView(b.mini.view.type,I,"main"),h.sessionId&&N.getState().setActiveId(h.sessionId)},w=window.tangu?.onMiniTarget?.(f=>{p=f,g()});window.tangu?.miniReady?.();const m=K.subscribe(g),k=Ee(g);return N.getState().boot().finally(()=>{d=!0,g()}),()=>{w?.(),m(),k(),d=!1,ne=null}},[]),c.useEffect(()=>{window.amadeus&&$t()},[]),c.useEffect(()=>Xe(),[]),c.useEffect(()=>{new URLSearchParams(location.search).has("transient")||ea("mini.open")},[]),t.jsx(ys,{buildDefault:mr,resizable:!!window.tangu?.miniResize&&!new URLSearchParams(location.search).has("transient"),direct:i?.view?{title:i.title,view:i.view,mainView:i.mainView??i.view}:null})}const hr={settings:"settings.title",market:"market.title",achievements:"achievements.title",feedback:"feedback.title",btw:"btw.title"};function gr(n,i){return n.builtin?i(hr[n.builtin]):n.title}function br(){const{t:n}=be(),i=pt(),[o,d]=c.useState(null),a=N(ls(h=>({cfg:h.cfg,cfgLoaded:h.cfgLoaded,closeSettings:h.closeSettings,closeMarket:h.closeMarket,closeAchievements:h.closeAchievements,closeFeedback:h.closeFeedback,patchConfig:h.patchConfig,connect:h.connect}))),v=o?.params?.session?.id?o.params.session:null,p=()=>window.tangu?.closeSelf?.(),g=o?.builtin==="btw"?xa(o.params):null,w=o?gr(o,n):"";if(c.useEffect(()=>{o?.builtin&&w&&(document.title=w)},[o?.builtin,w]),c.useEffect(()=>{N.getState().setTr((h,I)=>n(h,I))},[n]),c.useEffect(()=>{N.getState().boot()},[]),c.useEffect(()=>{window.amadeus&&$t()},[]),c.useEffect(()=>Xe(),[]),c.useEffect(()=>window.tangu?.onMainAction?.(h=>{h==="agents-changed"&&(N.getState().refreshAgents(),window.dispatchEvent(new Event("forsion:agents-changed"))),h==="skills-changed"&&(_t(Bt()).then(I=>N.setState({skillsList:I})).catch(()=>{}),window.dispatchEvent(new Event("forsion:skills-changed")))}),[]),c.useEffect(()=>{const h=ii(),I=window.tangu?.onFloatingTarget?.(d);return window.tangu?.floatingReady?.(h).then(C=>{C&&d(C)}),()=>I?.()},[]),c.useEffect(()=>{o?.builtin==="feedback"&&typeof o.params?.description=="string"&&N.setState({feedbackDraft:o.params.description})},[o]),!o)return t.jsx("div",{className:"floating-native-root"});const m=()=>{a.closeSettings(),p()},k=()=>{a.closeMarket(),p()},f=()=>{a.closeAchievements(),p()},b=()=>{a.closeFeedback(),p()};return t.jsxs("div",{className:"floating-native-root",children:[window.tangu?.platform==="darwin"&&t.jsx("header",{className:"floating-native-chrome",children:t.jsx("span",{title:w,children:w})}),t.jsxs("main",{className:"floating-native-content",children:[o.builtin==="settings"&&t.jsx(os,{open:!0,initialTab:typeof o.params?.tab=="string"?o.params.tab:void 0,initialSkillKey:typeof o.params?.skillKey=="string"?o.params.skillKey:void 0,cfg:a.cfg,activeSession:v,themeLang:i.lang,themeSkin:i.skin,themeMode:i.mode,themeModePref:i.modePref,flatOn:i.flat,glassOn:i.glass,themeSeed:i.seed,onClose:m,onConfigChange:a.patchConfig,onThemeChange:(h,I,C)=>i.setTheme(h,I,i.bg,C),onFlatChange:i.setFlat,onGlassChange:i.setGlass,onSeedChange:i.setSeedValue,onReloadThemes:i.reloadThemes,onReconnect:h=>{a.connect({...a.cfg,...h||{}})},onRelaunchOnboarding:()=>{try{localStorage.removeItem(Ft)}catch{}window.tangu?.requestMainAction?.("onboarding"),p()}},JSON.stringify(o.params??{})),o.builtin==="market"&&t.jsx(is,{initialItemId:typeof o.params?.itemId=="string"?o.params.itemId:void 0,initialDetailTab:typeof o.params?.detailTab=="string"?o.params.detailTab:void 0,initialQuery:typeof o.params?.q=="string"?o.params.q:void 0,onClose:k},String(o.params?.nonce??o.params?.itemId??o.params?.q??"")),o.builtin==="achievements"&&t.jsx(as,{onClose:f}),o.builtin==="feedback"&&a.cfgLoaded&&t.jsx(Ss,{surface:"panel",cfg:a.cfg,activeSession:v,onClose:b},v?.id||""),o.builtin==="btw"&&a.cfgLoaded&&g&&t.jsx(po,{seed:g,onClose:p}),o.view&&t.jsx(js,{target:o.view,onUnavailable:p})]}),(o.builtin==="settings"||o.builtin==="market")&&t.jsx(rs,{}),o.builtin==="settings"&&t.jsx(ai,{})]})}let he=null;function Qn(n){if(!n){he&&(he.style.display="none");return}he||(he=document.createElement("div"),Object.assign(he.style,{position:"fixed",inset:"0",pointerEvents:"none",zIndex:"99998",boxSizing:"border-box",border:"3px solid var(--accent, #4d8794)",background:"color-mix(in srgb, var(--accent, #4d8794) 8%, transparent)"}),document.body.appendChild(he)),he.style.display="block"}function wr(){const n=window.tangu;if(n?.openDetached){if(Ye()==="main"){let i="";const o=()=>{const p=N.getState(),g=p.activeId,w={sessionId:g,runId:g?p.runningBySession[g]??null:null},m=JSON.stringify(w);m!==i&&(i=m,n.reportMiniSession?.(w))};N.subscribe(o),o();let d=null;const a=()=>{if(!W.getState().api||!d||!ge(d.type))return;const g=d;d=null,g.spaceId&&Ke(g.spaceId);const w=W.getState().openView(g.type,g.params??{},"main");w&&g.params&&w.setParams({...w.params,...g.params})};n.onMainPanelTarget?.(p=>{d=p,a()}),Ee(a);let v=!1;W.subscribe(p=>{p.api&&(v||(v=!0,n.mainPanelReady?.()),a())})}ri({ribbonPointerDrag:n.platform==="win32",cursorScreenPoint:n.cursorScreenPoint,detach:(i,o)=>{n.openDetached?.(i,o)},openSpace:(i,o)=>{Ye()==="main"&&oa()===i&&K.getState().activeSpaceId===i&&W.getState().saveNamed(ia(i)),n.openDetached?.([],o,{space:i})},dragUpdate:(i,o,d)=>n.dragUpdate?.(i,o,d),drop:async(i,o,d)=>(await n.dropView?.(i,o,d))?.routed??!1}),n.onAcceptView?.(i=>{Qn(null),W.getState().openView(i.type,i.params??{},"main")}),n.onDragPreview?.(i=>Qn(i))}}function vr(){const n=window.tangu;if(!n?.reportRunningSessions)return;const i=o=>n.reportRunningSessions(Object.keys(o).length);i(N.getState().runningBySession),N.subscribe((o,d)=>{o.runningBySession!==d.runningBySession&&i(o.runningBySession)})}const Jn=n=>Sa(n).toLowerCase(),Es=(n,i)=>n.configBySession[i]?.cwd||n.sessions.find(o=>o.id===i)?.project_path||"",Cs=(n,i)=>Object.keys(n.runningBySession).some(o=>Jn(Es(n,o))===Jn(i));function kr(){const n=window.tangu;if(!(!n?.codeStudioGitCommit||!n.codeStudioGitStatus||!n.productsIsCreation))return N.subscribe((i,o)=>{if(i.runningBySession!==o.runningBySession)for(const d of Object.keys(o.runningBySession)){if(i.runningBySession[d])continue;const a=Es(i,d);!a||Cs(i,a)||yr(a,d)}})}async function yr(n,i){try{if(!await window.tangu.productsIsCreation(n))return;const o=await window.tangu.codeStudioGitStatus(n);if(!(o?.auto??o?.writable)||Cs(N.getState(),n))return;const d=fo(N.getState().messagesBySession[i]||[]);await window.tangu.codeStudioGitCommit(n,{name:d,auto:!0,untitled:es("studio.history.untitled")})}catch(o){console.warn("[creations] 自动存版本失败",o)}}function xr(){if(!window.tangu?.onAuthWillChange)return()=>{};let n=!1,i=null,o=!1,d=0,a=Promise.resolve(),v=!1;const p=()=>{i&&(i.inert=o),i=null},g=window.tangu.onAuthWillChange(async()=>{const m=++d;i||(i=document.body,o=i?.inert??!1,i&&(i.inert=!0));try{if(await a,m!==d||v||!window.amadeus)return;const[{flushAllScopes:k,resetAllScopeDocs:f,usePageStore:b},{useDbStore:h},{useDrawStore:I},C]=await Promise.all([Be(()=>import("./pageStore-CyvNZEYX.js").then(j=>j.dI),__vite__mapDeps([0,1,2,3,4]),import.meta.url),Be(()=>import("./dbStore-BIG5Mfh2.js").then(j=>j.d),__vite__mapDeps([5,0,1,2,3,4]),import.meta.url),Be(()=>import("./drawingStore-CGvTqqYW.js").then(j=>j.m),__vite__mapDeps([6,1,0,2,3,4]),import.meta.url),Be(()=>import("./index-fDB1l4d-.js").then(j=>j.cw),[],import.meta.url)]);if(await Promise.all([k(!0),h.getState().flushAll(!0),I.getState().flushAll(!0)]),m!==d)return;n=b.getState().vaultSide==="cloud",n&&(C.retireAllUnifiedScopes(),f(),b.setState({vaultRoot:null,pages:[],folders:[],files:[],icons:{}}))}catch(k){throw m===d&&p(),k}}),w=window.tangu.onAuthChanged?.(()=>{const m=++d;if(!n){a.finally(()=>{m===d&&p()});return}n=!1,a=a.then(async()=>{const{usePageStore:k}=await Be(async()=>{const{usePageStore:f}=await import("./pageStore-CyvNZEYX.js").then(b=>b.dI);return{usePageStore:f}},__vite__mapDeps([0,1,2,3,4]),import.meta.url);v||(await k.getState().restoreVault(),await k.getState().initVaultSide())}).catch(k=>console.error("[auth] Cannot restore vault after account change:",k)).finally(()=>{m===d&&p()})});return()=>{v=!0,++d,g(),w?.(),p()}}xr();window.addEventListener("error",n=>{console.error("[tangu] window error:",n.error||n.message)});window.addEventListener("unhandledrejection",n=>{console.error("[tangu] unhandledrejection:",n.reason)});const Sr=(()=>{try{return location.hash==="#preview"}catch{return!1}})(),dt=Ye();try{document.documentElement.dataset.window=dt}catch{}try{document.documentElement.lang=Us()==="zh"?"zh-CN":"en"}catch{}try{window.tangu?.platform==="darwin"&&(document.documentElement.dataset.platform="mac")}catch{}let Ns,Is=null;try{Ns=localStorage.getItem("forsion_theme_seed")||void 0}catch{}try{Is=localStorage.getItem("forsion_theme_lang")}catch{}try{ci(li(),di(),ui(),mi(),{customColor:Ns}),pi(),document.documentElement.style.removeProperty("background"),pt.getState().initThemes(Is),N.getState().setTr(es),ho(),wr(),vr(),kr(),fi(),go(),hi()}catch(n){console.error("[tangu] init failed, continue to mount:",n),gi("init",n)}function jr(){const n=bi()?.Preview;return n?t.jsx(n,{}):null}Xs.createRoot(document.getElementById("root")).render(t.jsx(Ks,{children:t.jsx(bo,{children:Sr?t.jsx(jr,{}):dt==="mini"?t.jsx(pr,{}):dt==="floating"?t.jsx(br,{}):dt==="detached"?t.jsx(ir,{}):t.jsx(nr,{})})}));