@forsion/unit 2.13.3 → 2.13.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/main.mjs +135 -10
  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-DRVh13k9.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-DOxZk2K0.css +1 -0
  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/InlineAiPanel-DZZijfif.css +1 -0
  28. package/web/assets/InlineFiles-CAIyTk1n.js +1 -0
  29. package/web/assets/MarkdownBlock-Cqfk5DhC.css +1 -0
  30. package/web/assets/MarkdownBlock-DSItkLhu.js +58 -0
  31. package/web/assets/ModelPill--CU3XTIQ.js +2 -0
  32. package/web/assets/{ModelPill-CzdNh7Mt.css → ModelPill-BiUsuhy3.css} +1 -1
  33. package/web/assets/MuseLibraryView-16p1zsxz.css +1 -0
  34. package/web/assets/MuseLibraryView-PlS7HAlV.js +2 -0
  35. package/web/assets/MuseView-CvsO62Fo.js +7 -0
  36. package/web/assets/PageHistoryPanel-CDh7nm78.js +2 -0
  37. package/web/assets/{PdfAnnotator-CW0wPWRB.js → PdfAnnotator-DafvjP3U.js} +3 -3
  38. package/web/assets/PenRow-CEy-s6SF.js +1 -0
  39. package/web/assets/PluginToolCard-BmTRr5JT.css +1 -0
  40. package/web/assets/PluginToolCard-DCzLhsCA.js +2 -0
  41. package/web/assets/ProductView-AUqnTwmQ.js +1 -0
  42. package/web/assets/SettingsPage-B9mmkWaM.js +3 -0
  43. package/web/assets/StudioGuestSurface-OOhRA8nt.js +1 -0
  44. package/web/assets/TodoListView-BkgMe44I.js +1 -0
  45. package/web/assets/Tooltip-DOYi44eY.js +1 -0
  46. package/web/assets/UnifiedPage-CTmQpf2T.css +1 -0
  47. package/web/assets/UnifiedPage-s7-tDSwG.js +712 -0
  48. package/web/assets/ViewSelectionBar-WmSWMFsR.js +2 -0
  49. package/web/assets/appStore-DDOkzWDA.js +456 -0
  50. package/web/assets/appStore-iy8_Tmac.css +1 -0
  51. package/web/assets/arrow-up-right-BptN64d-.js +1 -0
  52. package/web/assets/{artificial-BzLFkChP.css → artificial-BubVxExB.css} +1 -1
  53. package/web/assets/astryxBridge-BL56QfEv.js +69 -0
  54. package/web/assets/astryxBridge-djzCiy4v.css +1 -0
  55. package/web/assets/automationListSource-B1jz6q0t.js +1 -0
  56. package/web/assets/boardSurface-CP4HNmcm.js +1 -0
  57. package/web/assets/calendarNavStore-DCi7VBmM.js +1 -0
  58. package/web/assets/canvasPrefs-ArsX3NFO.js +1 -0
  59. package/web/assets/chatBoxSurface-DRsDr-MT.js +1 -0
  60. package/web/assets/chevron-up-ChXNh14u.js +1 -0
  61. package/web/assets/{client-BqhpYbYL.js → client-fKy9CWk0.js} +1 -1
  62. package/web/assets/code-xml-DCCD9eCS.js +1 -0
  63. package/web/assets/{codeStudioStore-Dq5i8nbE.js → codeStudioStore-BgLfCDK2.js} +8 -8
  64. package/web/assets/codingNavigation-BrkLENBZ.css +1 -0
  65. package/web/assets/contextMenuSurface-BF593l2M.js +1 -0
  66. package/web/assets/copy-plus-ClKrSgM7.js +1 -0
  67. package/web/assets/create-DYmVT68X.js +14 -0
  68. package/web/assets/dashboardSurface-C6cbR3oG.js +1 -0
  69. package/web/assets/dbStore-BIG5Mfh2.js +1 -0
  70. package/web/assets/deskCapture-q-jRDIcc.js +1 -0
  71. package/web/assets/{diff2html-OoRdHZ_O.js → diff2html-Di8qIz6O.js} +2 -2
  72. package/web/assets/{docx-preview-B43XC8Cn.js → docx-preview-B-URZXdP.js} +1 -1
  73. package/web/assets/draft-CBSW5tHx.js +2 -0
  74. package/web/assets/drawingStore-CGvTqqYW.js +7 -0
  75. package/web/assets/file-down-Z913cCyQ.js +1 -0
  76. package/web/assets/floatingTocSurface-DGwTiqvU.js +1 -0
  77. package/web/assets/foldActions-DGIPTmE1.js +1 -0
  78. package/web/assets/folder-1OJQeDI1.js +1 -0
  79. package/web/assets/folder-minus-D_j1SwHu.js +1 -0
  80. package/web/assets/folder-plus-DP9sFr26.js +1 -0
  81. package/web/assets/gestures-ZhFAENNZ.js +1 -0
  82. package/web/assets/git-branch-BMajF2cu.js +1 -0
  83. package/web/assets/homeCardStatus-5R7XkxFL.js +1 -0
  84. package/web/assets/i18n-CAf4PT1o.css +1 -0
  85. package/web/assets/i18n.generated-DW_l6CkR.js +15 -0
  86. package/web/assets/imageStudio-CwG21Bat.css +1 -0
  87. package/web/assets/imageStudio-DC_syDtx.js +4 -0
  88. package/web/assets/index-B8A3nKeL.js +1 -0
  89. package/web/assets/{index-DDMXVG0h.js → index-BDZIQnEx.js} +2 -2
  90. package/web/assets/index-BYKR7EVg.js +1 -0
  91. package/web/assets/index-BeW45J9J.js +7 -0
  92. package/web/assets/index-BnJguNqI.js +1 -0
  93. package/web/assets/index-BniT-A2n.js +1 -0
  94. package/web/assets/index-C--E96Ul.js +1 -0
  95. package/web/assets/index-CI2esW1X.js +1 -0
  96. package/web/assets/index-CIKPZc3Q.js +1 -0
  97. package/web/assets/index-COzdD7mZ.js +13 -0
  98. package/web/assets/index-CPfmhZ3Z.js +1 -0
  99. package/web/assets/index-CVLDDD5Z.js +1 -0
  100. package/web/assets/index-CWXpOSI2.js +1 -0
  101. package/web/assets/index-Cg1FWM_p.js +1 -0
  102. package/web/assets/index-CmsN2Zm2.js +1 -0
  103. package/web/assets/index-CtCYv9bF.js +1 -0
  104. package/web/assets/index-CtRdzpNh.js +1 -0
  105. package/web/assets/index-D-ClOPbg.js +1 -0
  106. package/web/assets/{index-CobUnTcv.js → index-DfhEDV2T.js} +2 -2
  107. package/web/assets/index-Dr6YmrrT.js +1 -0
  108. package/web/assets/index-SpegRFQV.js +1 -0
  109. package/web/assets/index-bF04pF8q.js +3 -0
  110. package/web/assets/index-fDB1l4d-.js +3398 -0
  111. package/web/assets/index-jzlU5luC.js +1 -0
  112. package/web/assets/{index-D102FOuM.js → index-uhvJ8AiJ.js} +1 -1
  113. package/web/assets/{invitePage-BW0BH8Ac.js → invitePage-iOT1zBvp.js} +1 -1
  114. package/web/assets/{ipc-D7yENkjV.js → ipc-SAPDwyQ4.js} +1 -1
  115. package/web/assets/{jszip.min-UE5d5vPJ.js → jszip.min-B3n1FGCb.js} +1 -1
  116. package/web/assets/launchpad-C9U9hpWJ.css +1 -0
  117. package/web/assets/launchpad-CcmSwlJl.js +2 -0
  118. package/web/assets/layout-grid-oIyIGbc5.js +1 -0
  119. package/web/assets/linkFollow-uke1Xtit.js +8 -0
  120. package/web/assets/{listFold-CKxjyY5_.js → listFold-BeNv2v6M.js} +1 -1
  121. package/web/assets/lock-open-D2nMg0ga.js +1 -0
  122. package/web/assets/log-out-D70NCXC4.js +1 -0
  123. package/web/assets/magnet-Cqmm97W8.js +1 -0
  124. package/web/assets/main-B9aT0WXG.js +15 -0
  125. package/web/assets/main-BlVApHpj.css +1 -0
  126. package/web/assets/markdownEditorSurface-BiDH0__r.css +1 -0
  127. package/web/assets/markdownEditorSurface-zUzFity2.js +3 -0
  128. package/web/assets/mediaPlayer-DB4KUvua.js +1 -0
  129. package/web/assets/message-square-plus-BvUfAAZm.js +1 -0
  130. package/web/assets/{messages-4w1Khzm1.js → messages-GQUjmbwW.js} +1 -1
  131. package/web/assets/minimize-2-CMhzL6ZW.js +1 -0
  132. package/web/assets/mobileEntry-6u7TYC4s.css +1 -0
  133. package/web/assets/mobileEntry-BnHzrdoC.js +13 -0
  134. package/web/assets/modelPickerSurface-Dtz40Ae2.js +1 -0
  135. package/web/assets/nativeDownload-DsGyUSJ5.js +1 -0
  136. package/web/assets/nativeSheetMenu--iihXNVd.js +1 -0
  137. package/web/assets/pageStore-CyvNZEYX.js +13 -0
  138. package/web/assets/pageStore-ys8L4rjF.css +1 -0
  139. package/web/assets/{pageTree-CIXFRCLk.js → pageTree-Ci2qzrs1.js} +4 -4
  140. package/web/assets/pen-line-DC3lbEY1.js +1 -0
  141. package/web/assets/pen-tool-DD5_N4lZ.js +1 -0
  142. package/web/assets/pencil--sWwxHdP.js +1 -0
  143. package/web/assets/phoneList-BpLxxdq6.css +1 -0
  144. package/web/assets/phoneList-DKRMxQHf.js +1 -0
  145. package/web/assets/pluginChat-82zZt47Y.js +2 -0
  146. package/web/assets/react-b7FrqRQR.js +1 -0
  147. package/web/assets/recordSurface-vUX25Z8R.js +1 -0
  148. package/web/assets/redo-2-CqlqhWrI.js +1 -0
  149. package/web/assets/rotate-ccw-D8kni6Ni.js +1 -0
  150. package/web/assets/selectionActions-DIq0xDm8.js +2 -0
  151. package/web/assets/selectionBarSurface-B94e5JW_.js +1 -0
  152. package/web/assets/sessionTitle-Ctp4iNKu.js +1 -0
  153. package/web/assets/settingsPageSurface-C9TA3mJg.js +1 -0
  154. package/web/assets/sharePage-CY04XCAf.js +2 -0
  155. package/web/assets/{shareViewer-BzuSyJv_.js → shareViewer-DweNF8Ch.js} +2 -2
  156. package/web/assets/star-B0sZEmbj.js +1 -0
  157. package/web/assets/tableSurface-CSBYBw5P.js +1 -0
  158. package/web/assets/tanguProbe-B8Qv2vcm.js +6 -0
  159. package/web/assets/{terminalView-SAxITnRW.js → terminalView-BLGdmdl7.js} +3 -3
  160. package/web/assets/theme-CUWFlazV.css +1 -0
  161. package/web/assets/type-Dt7RNB9g.js +1 -0
  162. package/web/assets/undo-2-QimgpLBn.js +1 -0
  163. package/web/assets/{unitAccount-BPYRAa3m.js → unitAccount-DL3jfd84.js} +1 -1
  164. package/web/assets/{unitBridge-BNVzai6X.js → unitBridge-BSsCy1zP.js} +1 -1
  165. package/web/assets/{unitCloudTransport-iFweA1xk.js → unitCloudTransport-CI_6H0TU.js} +1 -1
  166. package/web/assets/unitOwnerAccess-CiQ7nD7E.js +1 -0
  167. package/web/assets/unitShim-Dl2ksNp-.js +5 -0
  168. package/web/assets/upload-Dy7svciS.js +1 -0
  169. package/web/assets/userSpaces-oMHIWgYe.js +1 -0
  170. package/web/assets/viewportLock-B0l1GU_k.css +1 -0
  171. package/web/assets/viewportLock-BZq5PTeN.js +738 -0
  172. package/web/assets/zoom-in-DDEtY_Go.js +1 -0
  173. package/web/excalidraw/excalidraw.js +4 -2
  174. package/web/index.html +12 -13
  175. package/web/assets/ArtificialView-DS97zlMg.js +0 -1
  176. package/web/assets/AutomationBuilder-BsJc8wuC.js +0 -1
  177. package/web/assets/CalendarConfigView-BN8mraSo.js +0 -1
  178. package/web/assets/CalendarView-D55PA1vn.js +0 -1
  179. package/web/assets/CapabilityMenu-BVrokPpT.js +0 -1
  180. package/web/assets/CheckboxInput-BuJ3HPm_.js +0 -1
  181. package/web/assets/Chrome-amTcZNE4.js +0 -1
  182. package/web/assets/DashboardGridView-D9s9pez_.css +0 -1
  183. package/web/assets/DashboardGridView-DlFyYfUh.js +0 -17
  184. package/web/assets/EventCard-DUrn2krw.js +0 -1
  185. package/web/assets/ExcalidrawCanvas-4uYrLYin.css +0 -1
  186. package/web/assets/ExcalidrawCanvas-TpbzBF-J.js +0 -1
  187. package/web/assets/FloatingToc-B1d4-5EL.js +0 -1
  188. package/web/assets/HomepageView-DnQ_5Obe.css +0 -1
  189. package/web/assets/HomepageView-nzKfbHM-.js +0 -1
  190. package/web/assets/ImageStudioPanels-B2PTq6Yb.js +0 -3
  191. package/web/assets/ImageStudioView-Cawr6pGW.js +0 -1
  192. package/web/assets/InlineFiles-DKPH5JHz.js +0 -1
  193. package/web/assets/MarkdownBlock--__nPQGh.css +0 -1
  194. package/web/assets/MarkdownBlock-BHpDy2qQ.js +0 -58
  195. package/web/assets/ModelPill-ChzAM3z1.js +0 -2
  196. package/web/assets/MuseLibraryView-DLuQ_jyV.js +0 -2
  197. package/web/assets/MuseView-CDDwV6SR.js +0 -6
  198. package/web/assets/PageHistoryPanel-BbdXpjJM.js +0 -2
  199. package/web/assets/PenRow-BY-MZLDQ.js +0 -1
  200. package/web/assets/ProductView-0ieVL3rY.js +0 -1
  201. package/web/assets/RightPanel-BRexwQ3W.js +0 -4
  202. package/web/assets/RunLocationPicker-BrDfOu8-.css +0 -1
  203. package/web/assets/RunLocationPicker-CadYiE7C.js +0 -43
  204. package/web/assets/SketchCard-BcXCdBAs.js +0 -641
  205. package/web/assets/StudioGuestSurface-ZJFKnNYF.js +0 -1
  206. package/web/assets/TodoListView-DuRdVFgB.js +0 -1
  207. package/web/assets/Tooltip-DtDUL18W.js +0 -1
  208. package/web/assets/UnifiedPage-CWXc_mo1.css +0 -1
  209. package/web/assets/UnifiedPage-D7JTfABH.js +0 -68
  210. package/web/assets/appStore-ClD7vq5L.css +0 -1
  211. package/web/assets/appStore-affnJoin.js +0 -3292
  212. package/web/assets/approvalText-Cy2UAUAQ.js +0 -2
  213. package/web/assets/arrow-up-right-R4P9Mmxz.js +0 -1
  214. package/web/assets/astryxBridge-CF_hpqC2.css +0 -1
  215. package/web/assets/astryxBridge-CT2wZJXs.js +0 -70
  216. package/web/assets/automationListSource-JVBMsMbC.js +0 -1
  217. package/web/assets/boardSurface-Ce0_vf9f.js +0 -1
  218. package/web/assets/book-open-CcXCToyx.js +0 -1
  219. package/web/assets/calendarNavStore-tQJRVpum.js +0 -1
  220. package/web/assets/canvasPrefs-CSuX9aLF.js +0 -1
  221. package/web/assets/chatBoxSurface-IG6Vu4Dz.js +0 -1
  222. package/web/assets/circle-question-mark-O8AhUz35.js +0 -1
  223. package/web/assets/circle-x-AV2ZWulM.js +0 -1
  224. package/web/assets/code-xml-DdR58F83.js +0 -1
  225. package/web/assets/codingNavigation-CxdCK78-.js +0 -53
  226. package/web/assets/codingNavigation-_tOR0ell.css +0 -1
  227. package/web/assets/create-BgJN5qsj.js +0 -14
  228. package/web/assets/dashboardSurface-BY-AFB-r.js +0 -1
  229. package/web/assets/deskCapture-BD2qD6NI.js +0 -1
  230. package/web/assets/emoji-BPdA62d7.js +0 -1
  231. package/web/assets/floatingTocSurface-BM2SYE_u.js +0 -1
  232. package/web/assets/foldActions-BcyvNVBs.js +0 -1
  233. package/web/assets/folder-CCZqnwRc.js +0 -1
  234. package/web/assets/folder-plus-BJKT1Pqg.js +0 -1
  235. package/web/assets/gestures-BwPbZDkU.js +0 -1
  236. package/web/assets/hack2gate-dark-Dx2RtDRI.jpg +0 -0
  237. package/web/assets/hack2gate-light-DRKq9tyS.jpg +0 -0
  238. package/web/assets/hand-DRu7IJdU.js +0 -1
  239. package/web/assets/hard-drive-CXNJUCXw.js +0 -1
  240. package/web/assets/i18n-BMo19xaR.css +0 -1
  241. package/web/assets/i18n.generated-DvY59Zq3.js +0 -15
  242. package/web/assets/imageStudio-Axwmd4GW.js +0 -2
  243. package/web/assets/imageStudio-DZ0qGU2s.css +0 -1
  244. package/web/assets/index-B1rE_NwA.js +0 -1
  245. package/web/assets/index-BFTY79aq.js +0 -1
  246. package/web/assets/index-BGEkZBs2.js +0 -1
  247. package/web/assets/index-BO2XJc36.js +0 -13
  248. package/web/assets/index-BYUntVIZ.js +0 -297
  249. package/web/assets/index-C65u4fXd.js +0 -1
  250. package/web/assets/index-C_Ohi-I3.js +0 -1
  251. package/web/assets/index-CkMhazev.js +0 -1
  252. package/web/assets/index-D3CYvMpl.js +0 -1
  253. package/web/assets/index-D78izbLA.js +0 -1
  254. package/web/assets/index-DY0M_dpd.js +0 -1
  255. package/web/assets/index-DcbZwhpE.js +0 -1
  256. package/web/assets/index-Dlkq7gkE.js +0 -1
  257. package/web/assets/index-HqmJW2np.js +0 -1
  258. package/web/assets/index-LxlyPm0_.js +0 -1
  259. package/web/assets/index-Uq4J2aoW.js +0 -1
  260. package/web/assets/index-WbVt2P8R.js +0 -3
  261. package/web/assets/index-XyjIhkPw.js +0 -1
  262. package/web/assets/index-Y2kzYlZq.js +0 -1
  263. package/web/assets/index-mB0EQkyZ.js +0 -1
  264. package/web/assets/index-pJh7JN7_.js +0 -1
  265. package/web/assets/index-taRxNsbp.js +0 -7
  266. package/web/assets/launchpad-C2c1MSVX.css +0 -1
  267. package/web/assets/layout-grid-Hs3eDA07.js +0 -1
  268. package/web/assets/linkFollow-Msu1XH9v.js +0 -8
  269. package/web/assets/list-tree-DmuRb-p9.js +0 -1
  270. package/web/assets/lock-kffGfeHt.js +0 -1
  271. package/web/assets/log-out-B5gEP0tF.js +0 -1
  272. package/web/assets/main-BiS_5wrB.css +0 -1
  273. package/web/assets/main-DIyFlyfK.js +0 -20
  274. package/web/assets/markdownEditorSurface-Bql20IAf.css +0 -1
  275. package/web/assets/markdownEditorSurface-Cx2rqFAY.js +0 -3
  276. package/web/assets/message-square-plus-DxBPIhPS.js +0 -1
  277. package/web/assets/minus-CfoZ4oxr.js +0 -1
  278. package/web/assets/mobileEntry-B8JwR53-.js +0 -13
  279. package/web/assets/mobileEntry-DS1vohuL.css +0 -1
  280. package/web/assets/nativeDownload-Udrv_tmU.js +0 -1
  281. package/web/assets/pageChrome-D-9npbUE.js +0 -1
  282. package/web/assets/pageChrome-eO9pb2fH.css +0 -1
  283. package/web/assets/pen-tool-D_Y9We9x.js +0 -1
  284. package/web/assets/pencil-DGiTRzW1.js +0 -1
  285. package/web/assets/phoneList-BQfCJwKF.css +0 -1
  286. package/web/assets/phoneList-DHUia6HT.js +0 -9
  287. package/web/assets/pluginChat-BXuJiMYi.js +0 -2
  288. package/web/assets/redo-2-QgiKEg9T.js +0 -1
  289. package/web/assets/rotate-ccw-BLoH5er1.js +0 -1
  290. package/web/assets/sharePage-DYYN5usb.js +0 -2
  291. package/web/assets/star-BmywYD3u.js +0 -1
  292. package/web/assets/tableSurface-21LDYY_G.js +0 -1
  293. package/web/assets/terminal-BlmA_Z1C.js +0 -1
  294. package/web/assets/theme-Dgqst5S9.css +0 -1
  295. package/web/assets/type-DmIL6FB-.js +0 -1
  296. package/web/assets/undo-2-yMeXc8Wi.js +0 -1
  297. package/web/assets/unitOwnerAccess-Bggl7bDP.js +0 -1
  298. package/web/assets/unitShim-BP2nBO_k.js +0 -5
  299. package/web/assets/upload-D20PZHXc.js +0 -1
  300. package/web/assets/userSpaces-CrLrKklx.js +0 -1
  301. package/web/assets/viewportLock-DO1lzA2N.css +0 -1
  302. package/web/assets/viewportLock-tlT6H_Hc.js +0 -629
  303. package/web/assets/workflow-Bd6xBHiT.js +0 -1
  304. package/web/assets/zoom-in-_TgFOpyv.js +0 -1
@@ -1,2 +0,0 @@
1
- import{j as e,u as ot,d as l,T,R as ct,r as it}from"./index-BYUntVIZ.js";import{bH as Ie,bG as ut,fD as De,ej as Z,I as Oe,at as dt,c6 as Q,T as mt,ah as ft,ml as pt,mm as xt,bq as ht,ai as vt}from"./appStore-affnJoin.js";import"./client-BqhpYbYL.js";function wt({model:n}){return n.source!=="forsion"?null:e.jsxs(e.Fragment,{children:[!!n.tags?.length&&e.jsx("span",{className:"model-tags",children:n.tags.map((a,u)=>e.jsx("span",{className:"model-tag","data-color":a.color,title:a.text,children:a.text},u))}),n.multiplier!=null&&Number.isFinite(n.multiplier)&&n.multiplier>=0&&e.jsxs("span",{className:"model-multiplier",children:[n.multiplier.toFixed(2),"x"]})]})}const Pt=Ie,jt=n=>`input.thinkingShort.${n}`;function bt(n,a){return a(jt(n))}it({"pill.rowAdvanced":{zh:"高级",en:"Advanced"},"pill.nativeDone":{zh:"完成",en:"Done"},"pill.nativeSearch":{zh:"搜索模型",en:"Search models"},"pill.nativeBack":{zh:"返回",en:"Back"},"pill.rowModel":{zh:"模型",en:"Model"},"pill.rowEffort":{zh:"思考档位",en:"Thinking effort"},"pill.reasoningStrength":{zh:"思考档位",en:"Thinking effort"},"pill.defaultAuxModel":{zh:"默认辅助模型",en:"Default auxiliary model"},"pill.defaultImageModel":{zh:"生图模型",en:"Image generation model"},"pill.defaultVisionModel":{zh:"识图辅助模型",en:"Vision auxiliary model"},"pill.followCloudDefault":{zh:"跟随云端默认",en:"Follow cloud default"},"pill.noModels":{zh:"暂无可用模型",en:"No available models"},"pill.faster":{zh:"更快",en:"Faster"},"pill.smarter":{zh:"更智能",en:"Smarter"},"pill.rowContext":{zh:"上下文上限",en:"Context limit"},"pill.ctxDefault":{zh:"默认 · {n}",en:"Default · {n}"},"pill.ctxMax":{zh:"最大 · {n}",en:"Maximum · {n}"},"pill.ctxHint":{zh:"对本机这个模型的所有会话生效。超过 {n} 后每轮都要重发更多上下文,额度消耗随之上升。",en:"Applies to every conversation with this model on this device. Past {n}, each turn resends more context, so usage rises with it."},"pill.ctxUltra":{zh:"Ultra 下自动用满 {n};关掉 Ultra 后按这里的设置。",en:"Ultra uses the full {n} automatically. This setting applies again once Ultra is off."},"pill.ultra":{zh:"Ultra",en:"Ultra"},"pill.ultraNote":{zh:"思考拉满,主动并行派子代理",en:"Max thinking + parallel subagents"},"pill.ultraTitle":{zh:"Ultra:思考拉满 + 主动并行派子代理(额度消耗会成倍增加)",en:"Ultra: max thinking plus proactive parallel subagents (uses several times the quota)"}});const gt=150,Nt=n=>`input.thinking.${n}`,qe=(n,a)=>bt(n,a),I=n=>n>=1e6?`${Math.floor(n/1e5)/10}M`:`${Math.floor(n/100)/10}k`;function Ue(n){if(n?.contextWindow)return n.contextWindowSource==="override"?n.contextWindow:Math.max(n.contextWindow,n.maxContextWindow??0)}function At(n){const a=n.ultra&&!!n.engineUncapped,u=!!n.ctxInfo&&!n.running&&!!n.ctxInfo.ultra!==a;return!u&&(n.ctxInfo||!a)?{window:n.contextWindow,stale:u}:{window:(a?Ue(n.model):n.model?.contextWindow)||n.contextWindow,stale:u}}function yt(n,a,u=!1){const c=n?.maxContextWindow;if(!n?.contextWindow||!c||!a)return null;const f=n.contextWindowSource==="override";return c<=a&&!f?null:{current:u&&Ue(n)||n.contextWindow,defaultTokens:Math.min(c,a),...c>a?{maxTokens:c}:{},selected:f?c>a&&n.contextWindow===c?"max":null:"default"}}function Mt(n){return T[Math.max(0,Math.min(T.length-1,Math.round(n)))]}function kt(n,a){const u=Math.round(n);return a&&u>=T.length?{level:"max",ultra:!0}:{level:Mt(u),...a?{ultra:!1}:{}}}function $t(n,a){if(a==="imageModelId")return n.filter(c=>c.modelType==="image_gen");const u=n.filter(c=>(c.modelType||"llm")==="llm");return a==="visionModelId"?u.filter(c=>c.supportsVision!==!1):u}const Et=1200;function zt(n,a,u){const c=l.useRef(0),f=l.useRef(null);l.useEffect(()=>{const p=n.current;if(!p)return;f.current!==p&&(f.current=p,c.current=0);const g=()=>p.getAnimations?.({subtree:!0})??[],d=c.current,N=a?1:0,E=Et*Math.abs(N-d);g().forEach(L=>{L.playbackRate=d}),a&&(p.dataset.on="");const k=performance.now();let h=0;const w=L=>{const R=E?Math.min(1,(L-k)/E):1,$=d+(N-d)*R*R*(3-2*R),P=g();c.current=$,P.forEach(b=>{b.playbackRate=$}),p.style.opacity=String(Math.min(1,$*2)),R<1?h=requestAnimationFrame(w):a||delete p.dataset.on};return h=requestAnimationFrame(w),()=>cancelAnimationFrame(h)},[n,a,u])}const ne=({text:n})=>{const a=l.useRef(null),[u,c]=l.useState(0);return l.useLayoutEffect(()=>{const f=a.current;if(!f)return;const p=()=>c(Math.max(0,f.scrollWidth-f.clientWidth));if(typeof ResizeObserver>"u"){p();return}const g=new ResizeObserver(p);return g.observe(f),()=>g.disconnect()},[n]),e.jsx("span",{ref:a,className:`pill-marquee${u>2?" is-over":""}`,style:{"--marquee-shift":`${u}px`},children:e.jsx("span",{className:"pill-marquee__inner",children:n})})};function St({portal:n,anchorRef:a,innerRef:u,style:c,children:f}){const[p,g]=l.useState({x:0,y:0,top:0});return l.useLayoutEffect(()=>{if(!n)return;const d=()=>{const E=a.current;if(!E)return;const k=E.getBoundingClientRect(),h={x:k.left,y:k.bottom+8,top:k.top-8};g(w=>w.x===h.x&&w.y===h.y&&w.top===h.top?w:h)};d(),window.addEventListener("resize",d),window.addEventListener(Z,d),document.addEventListener("scroll",d,!0);const N=new ResizeObserver(d);return a.current&&N.observe(a.current),()=>{window.removeEventListener("resize",d),window.removeEventListener(Z,d),document.removeEventListener("scroll",d,!0),N.disconnect()}},[n,a]),n?ht.createPortal(e.jsx("div",{className:"ui-popover-backdrop",style:{pointerEvents:"none"},"data-cmenu":!0,children:e.jsx(vt,{x:p.x,y:p.y,anchorTop:p.top,prefer:"above",innerRef:u,className:"composer-menu composer-menu--model composer-menu--portal",children:f})}),document.body):e.jsx("div",{ref:u,className:"composer-menu composer-menu--model",style:c,children:f})}const Wt=({className:n,scopeKey:a,onSelectionChange:u,menuPortal:c=!1,open:f,onOpenChange:p,disabled:g,modelId:d,groups:N,onSelect:E,thinkingLevel:k,onThinkingChange:h,allowUltra:w=!1,ultra:L,running:R=!1,supportedThinking:$,effectiveThinking:P,modelsResponse:b,defaultModelIds:se,onDefaultModelChange:ae,onContextWindowChange:re,emptyLabel:le,footnote:oe,title:ce,icon:U,hub:Ct})=>{const{t:r}=ot(),_e=ut(),[ie,J]=l.useState(""),[Be,He]=l.useState(!1),v=f??Be,A=t=>{!t&&B.current?.contains(document.activeElement)&&_.current?.querySelector("button")?.focus({preventScroll:!0}),f===void 0&&He(t),p?.(t)},[W,ue]=l.useState(!1),[m,F]=l.useState(null),[de,Ve]=l.useState("right"),[Ke,Ge]=l.useState(0),_=l.useRef(null),B=l.useRef(null),z=l.useRef(null),[X,me]=l.useState(!1),Qe=N.flatMap(t=>t.options.map(s=>s.id)).join(`
2
- `);l.useEffect(()=>()=>{z.current?.abort(),z.current=null},[]),l.useLayoutEffect(()=>{z.current&&(z.current.abort(),z.current=null,me(!1),A(!1))},[a,g,d,k,L,Qe]),l.useEffect(()=>{v||(z.current?.abort(),z.current=null,me(!1))},[v]);const fe=l.useRef(null),pe=l.useRef(0),S=()=>window.clearTimeout(pe.current),xe=De(v&&!c,{boundary:".t2-chat-view"}),he=De(m?`${m}:${de}`:"",{boundary:".t2-chat-view"});l.useEffect(()=>{if(!v){S(),F(null),ue(!1),J("");return}const t=j=>!!j?.closest?.("[data-keep-menus]"),s=j=>{!t(j.target)&&!_.current?.contains(j.target)&&!B.current?.contains(j.target)&&A(!1)},o=j=>{j.key==="Escape"&&!document.querySelector("[data-keep-menus]")&&A(!1)};return document.addEventListener("mousedown",s),document.addEventListener("keydown",o),()=>{document.removeEventListener("mousedown",s),document.removeEventListener("keydown",o)}},[v]),l.useLayoutEffect(()=>{const t=B.current,s=fe.current;if(!m||!t||!s)return;const o=()=>{const G=t.getBoundingClientRect(),Re=(t.closest(".t2c-card")||t.closest(".t2-chat-view"))?.getBoundingClientRect(),Te=t.closest(".t2-chat-view")?.getBoundingClientRect(),Pe=t.querySelector(`[data-pane-trigger="${m}"]`)?.getBoundingClientRect(),Ae=ft(s),We=pt(G.left,G.right,s.offsetWidth,Re?.left??0,Re?.right??window.innerWidth,Ae);if(Ve(q=>q===We?q:We),Pe){const q=xt(Pe.top,s.offsetHeight,G.top,G.bottom,Te?.top??0,Te?.bottom??window.innerHeight,Ae);Ge(Fe=>Math.abs(Fe-q)<.5?Fe:q)}};o(),window.addEventListener("resize",o),window.addEventListener(Z,o);const j=new ResizeObserver(o);j.observe(t),j.observe(s);const Le=t.closest(".t2c-card")||t.closest(".t2-chat-view");return Le&&j.observe(Le),()=>{window.removeEventListener("resize",o),window.removeEventListener(Z,o),j.disconnect()}},[m]);const ve=N.flatMap(t=>t.options),Ze=ve.length>0,Je=ve.find(t=>t.id===d)||b?.models.find(t=>t.id===d),Xe=!h&&!Ze&&!!le,H=Je?.name||le||r("input.selectModel"),i=w&&!!L,y=i?"max":k||"medium",D=i?r("pill.ultra"):qe(y,r),Ye=y!=="off"?` · ${D}`:"",O=T.length-(w?0:1),V=i?O:Math.max(0,T.indexOf(y)),we=`${V/O*100}%`,et=`calc(${we} + ${(.5-V/O)*25}px)`,je=P&&P!==y?` → ${qe(P,r)}`:"",be=y==="max",Y=`${be?" is-max":""}${i?" is-ultra":""}`,ge=l.useRef(null);zt(ge,R,i);const[Ne,ee]=l.useState(0),ye=l.useRef(i);l.useEffect(()=>{i&&!ye.current&&v&&ee(t=>t+1),ye.current=i},[i,v]),l.useEffect(()=>{v||ee(0)},[v]);const Me=l.useId(),x=re&&d&&b?.modelOverridesWritable?yt(b.models.find(t=>t.id===d),b.contextWindowCap,i&&!!b.ultraUncapped):null,ke=t=>{S(),F(null),d&&re?.(d,t)},tt=t=>Ie(t,_e).map(s=>({key:s.key,source:s.source,label:s.provider,options:s.models.map(o=>({...o,description:`${o.provider} · ${o.id}`}))})),nt=t=>$t(b?.models||[],t),st=t=>b?.[t],$e=t=>t?b?.models.find(s=>s.id===t)?.name||t:"",Ee=t=>{const s=se?.[t];if(s)return $e(s);const o=st(t);return o?`${r("pill.followCloudDefault")} · ${$e(o)}`:r("pill.followCloudDefault")},at=[{slot:"backgroundModelId",label:r("pill.defaultAuxModel")},{slot:"imageModelId",label:r("pill.defaultImageModel")},{slot:"visionModelId",label:r("pill.defaultVisionModel")}],M=m&&m!=="model"&&m!=="context"?m:null,ze=m==="model"?N:M?tt(nt(M)):[],rt=ie.trim().toLowerCase(),te=ze.map(t=>({...t,options:t.options.filter(s=>`${t.label} ${s.name} ${s.id} ${s.tags?.map(o=>o.text).join(" ")||""}`.toLowerCase().includes(rt))})).filter(t=>t.options.length),K=m==="model"?d:M&&se?.[M]||"",Se=(t,s)=>{ae?.(t,s),S(),F(null)},C=t=>()=>{S(),m!==t&&J(""),F(t)},Ce=t=>()=>{S(),pe.current=window.setTimeout(C(t),gt)},lt=async()=>{{A(!v);return}};return Xe?e.jsxs("span",{className:`composer-chip composer-chip--readonly${n?` ${n}`:""}`,title:ce,children:[U===void 0?e.jsx(Oe,{size:13}):U,e.jsx(ne,{text:H})]}):e.jsxs("span",{ref:_,className:`model-pill-wrap${v&&!X?" is-open":""}${n?` ${n}`:""}`,"data-cmenu":!0,children:[e.jsxs("button",{type:"button",className:`composer-chip model-pill-btn${v&&!X?" is-open":""}${Y}`,title:ce||r("input.modelChipTitle"),disabled:g,"aria-expanded":v,onClick:()=>{lt()},children:[i&&e.jsx("span",{ref:ge,className:"pill-ultra-streaks","aria-hidden":"true",children:[0,1,2,3].map(t=>e.jsx("i",{},t))}),U===void 0?e.jsx(Oe,{size:13}):U,i?e.jsxs("span",{className:"pill-ultra-label",children:[e.jsx(ne,{text:H}),e.jsx("span",{className:"pill-ultra-tag",children:D})]}):e.jsx(ne,{text:H+Ye}),e.jsx(dt,{size:10})]}),v&&!X&&e.jsxs(St,{portal:c,anchorRef:_,innerRef:t=>{B.current=t,xe.ref.current=t},style:xe.style,children:[h&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`cm-advanced-reveal${W?" is-open":""}`,"aria-hidden":!W,children:e.jsx("div",{className:"cm-advanced-reveal-inner",children:e.jsxs("div",{className:"cm-advanced-list",children:[e.jsxs("div",{className:"cm-row cm-row--static",children:[e.jsx("span",{className:"cm-row-k",children:r("pill.reasoningStrength")}),e.jsxs("span",{className:`cm-row-v${Y}`,children:[D,je]})]}),ae&&at.map(({slot:t,label:s})=>e.jsxs("button",{type:"button",className:`cm-row${m===t?" is-open":""}`,"data-pane-trigger":t,tabIndex:W?0:-1,onFocus:C(t),onClick:C(t),children:[e.jsx("span",{className:"cm-row-k",children:s}),e.jsx("span",{className:"cm-row-v",children:Ee(t)}),e.jsx(Q,{size:13})]},t))]})})}),e.jsxs("button",{type:"button",className:`cm-row cm-advanced-toggle${W?" is-open":""}`,"aria-expanded":W,onClick:()=>{ue(t=>!t),F(null)},children:[e.jsx("span",{className:"cm-row-k",children:r("pill.rowAdvanced")}),e.jsx("span",{className:"cm-row-v"}),e.jsx(Q,{size:13})]})]}),x&&e.jsxs("button",{type:"button",className:`cm-row${m==="context"?" is-open":""}`,"data-pane-trigger":"context",onMouseEnter:Ce("context"),onMouseLeave:S,onFocus:C("context"),onClick:C("context"),children:[e.jsx("span",{className:"cm-row-k",children:r("pill.rowContext")}),e.jsx("span",{className:"cm-row-v",children:I(x.current)}),e.jsx(Q,{size:13})]}),e.jsxs("button",{type:"button",className:`cm-row cm-model-row${m==="model"?" is-open":""}`,"data-pane-trigger":"model",onMouseEnter:Ce("model"),onMouseLeave:S,onFocus:C("model"),onClick:C("model"),children:[e.jsx("span",{className:"cm-row-k",children:r("pill.rowModel")}),e.jsx("span",{className:"cm-row-v",children:H}),e.jsx(Q,{size:13})]}),h&&e.jsxs("div",{className:`cm-effort${Y}`,"data-effort":i?"ultra":y,children:[e.jsxs("div",{className:"cm-effort-head",children:[e.jsx("span",{children:r("pill.rowEffort")}),e.jsxs("span",{className:"cm-effort-value",children:[D,je]},i?"ultra":y)]}),e.jsxs("div",{className:"cm-effort-ends",children:[e.jsx("span",{children:r("pill.faster")}),e.jsx("span",{children:r("pill.smarter")})]}),e.jsxs("div",{className:"cm-effort-slider-wrap",children:[e.jsxs("span",{className:"cm-effort-track","aria-hidden":"true",children:[e.jsx("span",{className:"cm-effort-range",style:{width:we}}),be&&!i&&e.jsx("span",{className:"cm-effort-sparkles",children:Array.from({length:10},(t,s)=>e.jsx("i",{},s))}),i&&e.jsx("span",{className:"cm-effort-streaks",children:Array.from({length:4},(t,s)=>e.jsx("i",{},s))}),e.jsxs("span",{className:"cm-effort-ticks",children:[T.map((t,s)=>e.jsx("i",{className:`${s<=V?" is-on":""}${$&&!$.includes(t)?" is-unsupported":""}`,style:{left:`${s/O*100}%`}},t)),w&&e.jsx("i",{className:`is-ultra-stop${i?" is-on":""}`,style:{left:"100%"}},"ultra")]})]}),e.jsx("span",{className:"cm-effort-thumb",style:{left:et},"aria-hidden":"true",children:Ne>0&&i&&e.jsx("i",{className:"cm-effort-burst",onAnimationEnd:()=>ee(0)},Ne)}),e.jsx("input",{className:"cm-effort-input",type:"range",min:0,max:O,step:1,value:V,"aria-label":r("pill.reasoningStrength"),"aria-valuetext":i?r("pill.ultraTitle"):`${D}${$&&!$.includes(y)?` ${r("pill.thinkUnsupported")}`:""}`,"aria-describedby":i?Me:void 0,title:r(i?"pill.ultraTitle":Nt(y)),onChange:t=>{const s=kt(Number(t.currentTarget.value),w);w?h(s.level,s.ultra):h(s.level)}})]}),i&&e.jsx("div",{id:Me,className:"cm-effort-note",children:r("pill.ultraNote")})]}),oe&&e.jsx("div",{className:"menu-section cm-foot",children:oe}),m&&(m!=="context"||x)&&e.jsx("div",{ref:t=>{fe.current=t,he.ref.current=t},className:`cm-sub ${de}`,"data-pane":m,style:{...he.style,"--cm-sub-top":`${Ke}px`},children:m==="context"&&x?e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",className:`menu-item${x.selected==="default"?" active":""}`,onClick:()=>ke(null),children:[e.jsx("span",{className:"grow",children:r("pill.ctxDefault",{n:I(x.defaultTokens)})}),e.jsx("span",{className:"mi-check",children:x.selected==="default"?"✓":""})]}),x.maxTokens&&e.jsxs("button",{type:"button",className:`menu-item${x.selected==="max"?" active":""}`,onClick:()=>ke(x.maxTokens),children:[e.jsx("span",{className:"grow",children:r("pill.ctxMax",{n:I(x.maxTokens)})}),e.jsx("span",{className:"mi-check",children:x.selected==="max"?"✓":""})]}),e.jsxs("div",{className:"menu-section cm-foot",children:[i&&b?.ultraUncapped&&x.selected==="default"&&x.maxTokens?e.jsx("div",{children:r("pill.ctxUltra",{n:I(x.maxTokens)})}):null,r("pill.ctxHint",{n:I(x.defaultTokens)})]})]}):e.jsxs(e.Fragment,{children:[ze.reduce((t,s)=>t+s.options.length,0)>=8&&e.jsxs("label",{className:"model-picker-search",children:[e.jsx(mt,{size:12}),e.jsx("input",{"aria-label":r("model.searchPlaceholder"),placeholder:r("model.searchPlaceholder"),value:ie,onChange:t=>J(t.target.value)})]}),M&&e.jsxs("button",{type:"button",className:`menu-item${K?"":" active"}`,onClick:()=>Se(M,""),children:[e.jsx("span",{className:"grow",children:Ee(M)}),e.jsx("span",{className:"mi-check",children:K?"":"✓"})]}),te.map((t,s)=>e.jsxs(ct.Fragment,{children:[t.source&&te[s-1]?.source!==t.source&&e.jsx("div",{className:"menu-source",children:r(t.source==="forsion"?"model.group.forsion":"model.group.direct")}),t.label&&e.jsx("div",{className:"menu-section",children:t.label}),t.options.map(o=>e.jsxs("button",{type:"button",className:`menu-item${o.id===K?" active":""}`,title:o.description,onClick:()=>{m==="model"?(E(o.id),A(!1)):M&&Se(M,o.id)},children:[e.jsx("span",{className:"grow",children:o.name}),o.source&&e.jsx(wt,{model:{source:o.source,tags:o.tags,multiplier:o.multiplier}}),e.jsx("span",{className:"mi-check",children:o.id===K?"✓":""})]},o.id))]},t.key||t.label)),!te.length&&e.jsx("div",{className:"menu-section",children:r("pill.noModels")})]})})]})]})};export{wt as M,Wt as a,At as c,Pt as g,bt as t};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./UnifiedPage-D7JTfABH.js","./index-BYUntVIZ.js","./MarkdownBlock-BHpDy2qQ.js","./appStore-affnJoin.js","./nativeDownload-Udrv_tmU.js","./ipc-D7yENkjV.js","./client-BqhpYbYL.js","./appStore-ClD7vq5L.css","./index-Y2kzYlZq.js","./linkFollow-Msu1XH9v.js","./emoji-BPdA62d7.js","./listFold-CKxjyY5_.js","./book-open-CcXCToyx.js","./MarkdownBlock--__nPQGh.css","./pageChrome-D-9npbUE.js","./upload-D20PZHXc.js","./pageChrome-eO9pb2fH.css","./SketchCard-BcXCdBAs.js","./arrow-up-right-R4P9Mmxz.js","./Chrome-amTcZNE4.js","./minus-CfoZ4oxr.js","./canvasPrefs-CSuX9aLF.js","./hand-DRu7IJdU.js","./type-DmIL6FB-.js","./foldActions-BcyvNVBs.js","./lock-kffGfeHt.js","./undo-2-yMeXc8Wi.js","./code-xml-DdR58F83.js","./message-square-plus-DxBPIhPS.js","./UnifiedPage-CWXc_mo1.css"])))=>i.map(i=>d[i]);
2
- import{u as k,d as l,j as t,_ as T}from"./index-BYUntVIZ.js";import{u as N,N as L,aP as C,_ as I,a5 as M,aE as A,cC as P,il as W,t as F,q as H,gl as O}from"./appStore-affnJoin.js";import"./client-BqhpYbYL.js";import"./nativeDownload-Udrv_tmU.js";import"./ipc-D7yENkjV.js";const D=O(()=>T(()=>import("./UnifiedPage-D7JTfABH.js").then(a=>a.j),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]),import.meta.url).then(a=>({default:a.UnifiedPage}))),U=/\.(md|markdown|txt|json|yaml|yml|toml|csv|log)$/i,J=5e3,V=/!\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g;function R(a){const p=a.filter(i=>!i.dir),s=i=>i.startsWith("Journal/");return p.sort((i,u)=>s(i.path)!==s(u.path)?s(i.path)?-1:1:s(i.path)?u.path.localeCompare(i.path):i.path.localeCompare(u.path))}function B(a){try{const p=atob(a),s=Uint8Array.from(p,i=>i.charCodeAt(0));return new TextDecoder("utf-8").decode(s)}catch{return""}}function X(a){return a.replace(V,(p,s,i)=>`[image${s?`: ${s}`:""} — ${i}]`)}const Z=()=>{const{t:a}=k(),p=N(e=>e.cfg),[s,i]=l.useState(""),[u,E]=l.useState([]),[r,y]=l.useState(""),[b,m]=l.useState(""),[h,x]=l.useState(""),f=l.useRef(""),g=l.useRef(null),j=l.useRef(0),S=l.useMemo(()=>R(u),[u]),w=async(e,n)=>{const c=++j.current;if(!U.test(n.path)){m(""),g.current={path:n.path,mtime:n.mtime};return}const d=window.tangu?.readHostFile;if(!d){m("");return}try{const o=await d(`${e}/${n.path}`);if(c!==j.current)return;m(o.tooLarge?`(${o.size} bytes)`:B(String(o.content||""))),x(""),g.current={path:n.path,mtime:n.mtime}}catch(o){c===j.current&&x(o?.message||String(o))}},$=async()=>{try{const e=await W(F()),n=Array.isArray(e?.files)?e.files:[];i(e?.root||""),E(n),x("");const c=R(n),d=c.find(o=>o.path===f.current);if(d){const o=g.current;(!o||o.path!==d.path||o.mtime!==d.mtime)&&await w(e.root,d)}else c.length?(f.current=c[0].path,y(c[0].path),await w(e.root,c[0])):(f.current="",y(""),m(""),g.current=null)}catch(e){x(e?.message||String(e))}};l.useEffect(()=>{let e=!0,n=null;const c=async()=>{e&&(await $(),e&&(n=setTimeout(()=>{c()},J)))};return c(),()=>{e=!1,n&&clearTimeout(n)}},[p]);const _=e=>{f.current=e.path,y(e.path),w(s,e)},z=()=>{!s||!r||H.getState().openView("wsfile",{path:`${s}/${r}`,name:r.split(/[\\/]/).pop()||r},"main",{newTab:!0})},v=l.useMemo(()=>X(b),[b]);return t.jsxs("div",{style:{display:"flex",height:"100%",minHeight:0,minWidth:0},children:[t.jsxs("div",{style:{width:240,flex:"none",borderRight:"var(--border-width, 1px) solid var(--border)",display:"flex",flexDirection:"column",minHeight:0},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"10px 12px",fontWeight:600,fontSize:"var(--ui-font-body, 13px)"},children:[t.jsx(L,{size:14})," ",a("view.museLibrary"),t.jsx("span",{style:{flex:1}}),t.jsx("button",{className:"icon-btn",title:a("muse.lib.refresh"),onClick:()=>{$()},children:t.jsx(C,{size:13})})]}),t.jsxs("div",{style:{overflowY:"auto",flex:1,padding:"0 6px 8px"},children:[S.length===0&&t.jsx("div",{className:"hint",style:{padding:"4px 6px"},children:h||a("muse.lib.empty")}),S.map(e=>t.jsxs("div",{className:"file-row",onClick:()=>_(e),style:{alignItems:"center",background:e.path===r?"var(--overlay-light, rgba(127,127,127,.1))":void 0,borderRadius:"var(--radius-sm)"},children:[e.path.startsWith("Journal/")?t.jsx(I,{size:13}):t.jsx(M,{size:13}),t.jsx("span",{className:"file-name",style:{flex:1,fontSize:"var(--ui-font-meta, 12px)"},children:e.path})]},e.path))]})]}),t.jsxs("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",minHeight:0},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 14px",borderBottom:"var(--border-width, 1px) solid var(--border)",fontSize:"var(--ui-font-meta, 12px)",color:"var(--text-muted)"},children:[t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:r?`${s}/${r}`:"",children:r}),r&&t.jsxs("button",{className:"btn ghost sm",onClick:z,children:[t.jsx(A,{size:12})," ",a("muse.lib.openEditor")]})]}),t.jsxs("div",{style:{overflowY:"auto",flex:1,padding:"14px 24px 40px"},children:[h&&t.jsx("div",{className:"hint",style:{color:"var(--danger)"},children:h}),r&&v&&(/\.md$/i.test(r)?t.jsx("div",{className:"am-app tangu-lovable amx-pane amx-editor","data-muse-lib-preview":"amadeus",children:t.jsx(l.Suspense,{fallback:t.jsx("div",{className:"hint",children:r}),children:t.jsx(D,{path:`${s}/${r}`,initial:v,readOnly:!0},`${s}/${r}`)})}):t.jsx(P,{content:v})),r&&!v&&!h&&t.jsx("div",{className:"hint",children:r})]})]})]})};export{Z as MuseLibraryView,X as neutralizeRemoteImages,R as orderFiles};
@@ -1,6 +0,0 @@
1
- import{u as ie,d as r,j as s,r as ae}from"./index-BYUntVIZ.js";import{G as k,hV as ne,N as le,a5 as ce,q as re,aP as oe,e0 as H,kq as de,jG as pe,cq as R,bK as q,u as b,ab as me,aK as ue,c8 as he,ip as xe,t as c,kr as ge,io as fe,gU as ve,ks as ye,gT as je,kt as Se,cj as be,iE as ke,im as P,ku as we,hE as Ne,kv as ze,kw as Te,gW as Ce}from"./appStore-affnJoin.js";import"./client-BqhpYbYL.js";import{i as U,d as L}from"./automationListSource-JVBMsMbC.js";import{p as Me}from"./approvalText-Cy2UAUAQ.js";import{C as Ae}from"./circle-x-AV2ZWulM.js";import{M as Ie}from"./message-square-plus-DxBPIhPS.js";const $e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]],_e=k("crosshair",$e);const Fe=[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]],We=k("repeat",Fe);const De=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]],Ee=k("shield-x",De);ae({"special.muse.sleeping":{zh:"休眠至 {time}",en:"Sleeping until {time}"},"special.muse.sleepingTitle":{zh:"Muse 判断暂时没事可做,跳过心跳到这个时刻;你一有动作、规则命中或日程到期都会提前叫醒它。理由:{reason}",en:"Muse found nothing to do and skips its heartbeat until then; your activity, a rule or a due schedule wakes it earlier. Reason: {reason}"}});const He=m=>{const f=new Date(m);return`${String(f.getHours()).padStart(2,"0")}:${String(f.getMinutes()).padStart(2,"0")}`},x=m=>Array.isArray(m)?m:[],Re=({cfg:m,sessions:f,onInjected:w})=>{const{t}=ie(),[l,V]=r.useState(null),[u,N]=r.useState([]),[O,z]=r.useState([]),[v,T]=r.useState([]),[B,C]=r.useState([]),[G,S]=r.useState(""),[p,h]=r.useState(new Set),[g,K]=r.useState(""),[M,o]=r.useState(""),[A,I]=r.useState("");ne(e=>e.refreshNonce);const $=O.filter(e=>!e.actions?.length&&(!e.agentSlug||e.agentSlug==="muse")&&!U({kind:"trigger",triggerId:e.id})),_=B.filter(e=>!U({kind:"schedule",slug:"muse",rowId:e.id})),F=async()=>{const e=await xe(c()).catch(()=>null);V(e),ge(m,"muse",e?.spaceStamp);const n=x(await fe(c(),"pending").catch(()=>[]));if(N(n),h(i=>new Set([...i].filter(a=>n.some(d=>d.id===a)))),z(x(await ve(c()).catch(()=>[]))),T(x(await ye(c(),"pending").catch(()=>[]))),C(await je(c()).then(i=>x(x(i).find(a=>a.slug==="muse")?.entries).filter(a=>a.auto)).catch(()=>[])),e?.sessionId){const a=[...x(await Se(be(e.sessionId),e.sessionId,6).catch(()=>[]))].reverse().find(d=>d.role==="assistant"||d.role==="model");a?.content?S(String(a.content).slice(0,4e3)):e.running||S("")}else S("")};r.useEffect(()=>{let e=!0,n=null;const i=async()=>{e&&(await F(),e&&(n=setTimeout(()=>{i()},4e3)))};return i(),()=>{e=!1,n&&clearTimeout(n)}},[m]);const X=e=>h(n=>{const i=new Set(n);return i.has(e)?i.delete(e):i.add(e),i}),Y=async()=>{if(!(!g||!p.size))try{await we(c(),[...p],g),o(t("special.muse.injected",{n:p.size})),h(new Set),w(g)}catch(e){o(t("special.muse.injectFail",{e:e?.message||e}))}},J=async()=>{if(!p.size)return;const e=u.filter(i=>p.has(i.id));if(!e.length)return;const n=`${t("special.muse.injectPrefix")}
2
-
3
- `+e.map((i,a)=>`${a+1}. ${i.title}${i.detail?`
4
- ${i.detail}`:""}`).join(`
5
-
6
- `);try{if(Ne(),!await b.getState().send(n,[],void 0,void 0,void 0,null))return;for(const d of e)await P(c(),d.id,"injected").catch(()=>{});ze(c(),`todos run in a new session by user: ${e.map(d=>`"${d.title}"`).join("; ")}`).catch(()=>{}),o(t("special.muse.injected",{n:e.length})),h(new Set);const a=b.getState().activeId;a&&w(a)}catch(i){o(t("special.muse.injectFail",{e:i?.message||i}))}},Q=e=>o(t("special.muse.actionFail",{e:e?.message||e})),W=async(e,n)=>{try{await P(c(),e,n),N(i=>i.filter(a=>a.id!==e)),h(i=>{const a=new Set(i);return a.delete(e),a})}catch(i){Q(i)}},Z=(e,n)=>L({kind:"trigger",triggerId:e},n,()=>Te(c(),e),()=>{z(i=>i.filter(a=>a.id!==e)),o("")}),ee=(e,n)=>L({kind:"schedule",slug:"muse",rowId:e},n,()=>Ce(c(),"muse",e),()=>{C(i=>i.filter(a=>a.id!==e)),o("")}),D=async(e,n)=>{I(e.id);try{const i=await ke(c(),e.id,n);i.status==="failed"?o(t("special.muse.execFailed",{e:String(i.result||"").slice(0,200)})):o(""),T(a=>a.filter(d=>d.id!==e.id))}catch(i){o(t("special.muse.approveFail",{e:i?.message||i}))}finally{I("")}},se=e=>e.cond.type==="file_chars_gte"?t("special.muse.trigFile",{path:e.cond.path.split(/[\\/]/).pop()||e.cond.path,n:e.cond.n}):e.cond.type==="event_seen"?t("special.muse.trigEvent",{match:e.cond.match}):e.cond.type==="daily_at"?t("special.muse.trigDaily",{time:e.cond.time}):e.cond.type==="at"?e.cond.datetime.replace("T"," "):e.cond.type==="every"?`every ${e.cond.interval}`:"—",te=e=>t(e==="auto"?"settings.special.m.modeAuto":e==="agent"?"settings.special.m.modeAgent":"settings.special.m.modeAsk"),y=!!l?.running,j=!y&&l?.sleepUntil&&l.sleepUntil>Date.now()?l.sleepUntil:0,E=v.length||l?.pendingApprovals||0;return s.jsxs("div",{style:{display:"flex",flexDirection:"column",minWidth:0},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:10,fontWeight:600,flexWrap:"wrap"},children:[s.jsx(le,{size:16})," ",t("special.muse.title"),s.jsx("span",{style:{flex:1}}),l?.enabled&&l.mode&&s.jsx("span",{className:"conn-pill",style:{fontSize:"var(--ui-font-meta, 12px)",fontWeight:400},title:t("special.muse.modeLabel"),children:te(l.mode).split(/[((]/)[0]}),E>0&&s.jsx("span",{className:"conn-pill",style:{fontSize:"var(--ui-font-meta, 12px)",fontWeight:400,color:"var(--accent-ink)"},children:t("special.muse.pending",{n:E})}),s.jsxs("span",{className:"conn-pill","data-state":l?.enabled?y?"running":j?"sleeping":"idle":"disabled",style:{fontSize:"var(--ui-font-meta, 12px)"},title:l?.enabled&&j?t("special.muse.sleepingTitle",{reason:l.sleepReason||"—"}):void 0,children:[s.jsx("span",{className:"dot",style:{background:y?"var(--accent-ink)":"var(--text-muted)"}}),l?.enabled?y?t("special.muse.running"):j?t("special.muse.sleeping",{time:He(j)}):t("special.muse.idle"):t("special.muse.disabled")]}),s.jsx("button",{className:"icon-btn",title:t("muse.openLibrary"),onClick:()=>re.getState().openView("muse-files",{},"main",{newTab:!0}),children:s.jsx(ce,{size:13})}),s.jsx("button",{className:"icon-btn",onClick:()=>{F()},children:s.jsx(oe,{size:13})})]}),(v.length>0||!!l?.pendingApprovals)&&s.jsxs("div",{className:"field",children:[s.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6},children:[s.jsx(H,{size:13})," ",t("special.muse.approvals")]}),v.length===0&&s.jsx("div",{className:"hint",children:t("special.muse.approvalsEmpty")}),v.map(e=>s.jsxs("div",{className:"file-row",style:{cursor:"default",alignItems:"flex-start"},children:[s.jsxs("span",{className:"file-name",style:{flex:1,whiteSpace:"normal"},children:[s.jsx("b",{style:{display:"block",fontFamily:"var(--font-mono, monospace)",fontSize:"var(--ui-font-meta, 12px)",whiteSpace:"pre-wrap",overflowWrap:"anywhere",maxHeight:240,overflow:"auto"},children:e.preview}),Me(e.preview)&&s.jsx("div",{className:"hint",children:t("approval.previewScrollHint")}),s.jsxs("div",{style:{color:"var(--text-muted)",fontSize:"var(--ui-font-meta, 12px)",marginTop:2},children:[e.tool,e.cwd?` · ${e.cwd}`:""," · ",String(e.created_at).replace("T"," ").slice(5,16),e.note&&s.jsx("div",{children:t("special.muse.approvalNote",{note:e.note})})]})]}),s.jsxs("button",{className:"btn primary sm",disabled:A===e.id,title:t("special.muse.approve"),onClick:()=>{D(e,"approve")},children:[s.jsx(H,{size:12})," ",t("special.muse.approve")]}),s.jsx("button",{className:"icon-btn",disabled:A===e.id,title:t("special.muse.reject"),onClick:()=>{D(e,"reject")},children:s.jsx(Ee,{size:13})})]},e.id))]}),l?.enabled&&s.jsxs("div",{className:"field",children:[s.jsx("label",{children:t("special.muse.thinking")}),s.jsx("div",{style:{fontSize:"var(--ui-font-body, 13px)",lineHeight:1.6,whiteSpace:"pre-wrap",maxHeight:220,overflowY:"auto",background:"var(--bg-card)",border:"var(--border-width) solid var(--border)",borderRadius:"var(--radius-sm)",padding:10},children:G||s.jsx("span",{className:"hint",children:l?.enabled?"…":t("special.muse.disabled")})})]}),s.jsxs("div",{className:"field",children:[s.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6},children:[s.jsx(We,{size:13})," ",t("special.muse.tracks")]}),_.length===0&&s.jsx("div",{className:"hint",children:t("special.muse.tracksEmpty")}),_.map(e=>s.jsxs("div",{className:"file-row",style:{cursor:"default",alignItems:"flex-start"},children:[s.jsxs("span",{className:"file-name",style:{flex:1,whiteSpace:"normal"},children:[s.jsx("b",{children:e.name}),s.jsxs("div",{style:{color:"var(--text-muted)",fontSize:"var(--ui-font-meta, 12px)",marginTop:2},children:[de(pe(e.date))||e.date,e.repeat?` · ${t("automation.schedule.every",{ivl:e.repeat})}`:"",e.lastRun?` · ${t("special.muse.trigFired",{t:R(e.lastRun)})}`:"",e.description&&s.jsx("div",{children:e.description})]})]}),s.jsx("button",{className:"icon-btn",title:t("special.muse.trackDelete"),onClick:()=>ee(e.id,e.name),children:s.jsx(q,{size:13})})]},e.id))]}),s.jsxs("div",{className:"field",children:[s.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6},children:[s.jsx(_e,{size:13})," ",t("special.muse.watches"),s.jsx("span",{style:{flex:1}}),s.jsx("a",{style:{cursor:"pointer",fontSize:"var(--ui-font-caption, 11px)",fontWeight:400,color:"var(--accent-ink, var(--accent))"},onClick:()=>{b.getState().closeSettings(),me("automation")},children:t("special.muse.watchesAll")})]}),$.length===0&&s.jsx("div",{className:"hint",children:t("special.muse.watchesHint")}),$.map(e=>s.jsxs("div",{className:"file-row",style:{cursor:"default",alignItems:"flex-start"},children:[s.jsxs("span",{className:"file-name",style:{flex:1,whiteSpace:"normal"},children:[s.jsx("b",{children:e.desc}),s.jsxs("div",{style:{color:"var(--text-muted)",fontSize:"var(--ui-font-meta, 12px)",marginTop:2},children:[se(e),e.lastFiredAt?` · ${t("special.muse.trigFired",{t:R(e.lastFiredAt)})}`:""]})]}),s.jsx("button",{className:"icon-btn",title:t("special.muse.watchDelete"),onClick:()=>Z(e.id,e.desc),children:s.jsx(q,{size:13})})]},e.id))]}),s.jsxs("div",{className:"field",children:[s.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8},children:[t("special.muse.todos"),s.jsx("span",{style:{flex:1}}),u.length>0&&s.jsx("button",{className:"btn ghost sm",onClick:()=>h(p.size===u.length?new Set:new Set(u.map(e=>e.id))),children:t("special.muse.selectAll")})]}),u.length===0&&s.jsx("div",{className:"hint",children:t("special.muse.todosEmpty")}),u.map(e=>s.jsxs("div",{className:"file-row",style:{cursor:"default",alignItems:"flex-start"},children:[s.jsx("input",{type:"checkbox",checked:p.has(e.id),onChange:()=>X(e.id),style:{marginTop:3}}),s.jsxs("span",{className:"file-name",style:{flex:1,whiteSpace:"normal"},children:[s.jsx("b",{children:e.title}),e.detail&&s.jsx("div",{style:{color:"var(--text-muted)",fontSize:"var(--ui-font-meta, 12px)",marginTop:2},children:e.detail})]}),s.jsx("button",{className:"icon-btn",title:t("special.muse.markDone"),onClick:()=>{W(e.id,"done")},children:s.jsx(ue,{size:13})}),s.jsx("button",{className:"icon-btn",title:t("special.muse.dismiss"),onClick:()=>{W(e.id,"dismissed")},children:s.jsx(Ae,{size:13})})]},e.id))]}),u.length>0&&s.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[s.jsxs("select",{value:g,onChange:e=>K(e.target.value),style:{maxWidth:240},children:[s.jsx("option",{value:"",children:t("special.muse.pickSession")}),f.map(e=>s.jsx("option",{value:e.id,children:e.title||e.id.slice(0,8)},e.id))]}),s.jsxs("button",{className:"btn primary sm",disabled:!g||!p.size,onClick:()=>{Y()},children:[s.jsx(he,{size:12})," ",t("special.muse.inject")]}),s.jsxs("button",{className:"btn ghost sm",disabled:!p.size,onClick:()=>{J()},children:[s.jsx(Ie,{size:12})," ",t("special.muse.runNew")]}),M&&s.jsx("span",{style:{fontSize:"var(--ui-font-meta, 12px)",color:"var(--text-muted)"},children:M})]})]})},Ge=Object.freeze(Object.defineProperty({__proto__:null,MuseView:Re},Symbol.toStringTag,{value:"Module"}));export{Re as M,Ee as S,Ge as a};
@@ -1,2 +0,0 @@
1
- import{u as A,d as i,bO as q,j as e}from"./index-BYUntVIZ.js";import{dm as g,bq as z,aF as U,gE as V,cq as S,l3 as K,fo as X}from"./appStore-affnJoin.js";import{c as _,D as $}from"./create-BgJN5qsj.js";import{r as B}from"./DashboardGridView-DlFyYfUh.js";import{e as O}from"./UnifiedPage-D7JTfABH.js";import"./nativeDownload-Udrv_tmU.js";import"./ipc-D7yENkjV.js";import"./client-BqhpYbYL.js";import"./FloatingToc-B1d4-5EL.js";import"./MarkdownBlock-BHpDy2qQ.js";import"./index-Y2kzYlZq.js";import"./linkFollow-Msu1XH9v.js";import"./emoji-BPdA62d7.js";import"./listFold-CKxjyY5_.js";import"./book-open-CcXCToyx.js";import"./pageChrome-D-9npbUE.js";import"./upload-D20PZHXc.js";import"./pageTree-CIXFRCLk.js";import"./pluginExt-Byb64tQO.js";import"./phoneList-DHUia6HT.js";import"./list-tree-DmuRb-p9.js";import"./pen-tool-D_Y9We9x.js";import"./pencil-DGiTRzW1.js";import"./star-BmywYD3u.js";import"./folder-plus-BJKT1Pqg.js";import"./type-DmIL6FB-.js";import"./undo-2-yMeXc8Wi.js";import"./redo-2-QgiKEg9T.js";import"./code-xml-DdR58F83.js";import"./lock-kffGfeHt.js";import"./folder-CCZqnwRc.js";import"./layout-grid-Hs3eDA07.js";import"./SketchCard-BcXCdBAs.js";import"./arrow-up-right-R4P9Mmxz.js";import"./Chrome-amTcZNE4.js";import"./minus-CfoZ4oxr.js";import"./canvasPrefs-CSuX9aLF.js";import"./hand-DRu7IJdU.js";import"./foldActions-BcyvNVBs.js";import"./message-square-plus-DxBPIhPS.js";const W=2e5,v=r=>r.replace(/\r\n?/g,`
2
- `),G=r=>(r.split("/").pop()??r).replace(/\.md$/i,"");function Ht({path:r,locked:b,onClose:m}){const{t:s}=A(),y=i.useId(),[n,F]=i.useState(null),[j,I]=i.useState(null),[p,M]=i.useState(null),[o,u]=i.useState(null),[f,R]=i.useState({}),[d,L]=i.useState("content"),[N,w]=i.useState(!1),[k,E]=i.useState(!1),D=i.useRef(!1);D.current=N;const P=i.useRef(null);i.useEffect(()=>{let t=!0;return(async()=>{await q(r).catch(()=>{});try{const[a,c]=await Promise.all([g.listPageHistory?.(r)??[],g.readTextFile(r).catch(()=>null)]);if(!t)return;F(a),M(c),u(a[0]?.id??null)}catch(a){t&&I(O(a))}})(),()=>{t=!1}},[r]),i.useEffect(()=>{if(!o||o in f)return;let t=!0;return(g.readPageHistory?.(r,o)??Promise.resolve(null)).catch(()=>null).then(a=>{t&&R(c=>({...c,[o]:a}))}),()=>{t=!1}},[r,o,f]),i.useEffect(()=>{const t=a=>{a.key==="Escape"&&!D.current&&m()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[m]);const h=n?.find(t=>t.id===o)??null,l=o?f[o]:void 0,x=i.useMemo(()=>{if(d!=="diff"||typeof l!="string"||p==null)return null;const t=v(p),a=v(l);return t===a?{kind:"same"}:t.length+a.length>W?{kind:"large"}:{kind:"patch",patch:_(s("pghist.diff.current"),s("pghist.diff.version"),t,a,"","",{context:3})}},[d,l,p,s]),T=t=>{if(!n?.length)return;const a=Math.max(0,n.findIndex(H=>H.id===o)),c=n[Math.min(n.length-1,Math.max(0,a+t))];u(c.id),P.current?.querySelector(`[data-hist-id="${c.id}"]`)?.scrollIntoView({block:"nearest"})},C=async()=>{if(!h||k)return;E(!0);const t=await B(r,h);E(!1),t&&m()};return z.createPortal(e.jsxs("div",{className:"am-app tangu-lovable",style:{display:"contents"},children:[e.jsx("div",{className:"dialog-overlay",onMouseDown:m,children:e.jsxs("div",{className:"dialog amx-hist",role:"dialog","aria-modal":"true","aria-labelledby":y,"data-testid":"page-history",onMouseDown:t=>t.stopPropagation(),children:[e.jsxs("div",{className:"amx-hist-head",children:[e.jsxs("div",{className:"dialog-title",id:y,children:[s("pghist.menu"),e.jsx("span",{className:"amx-hist-note",children:G(r)})]}),e.jsx("button",{type:"button",className:"amx-hist-close",onClick:m,title:s("pghist.close"),"aria-label":s("pghist.close"),children:e.jsx(U,{size:15})})]}),e.jsx("div",{className:"amx-hist-body",children:j!=null?e.jsx("div",{className:"amx-hist-state",children:s("pghist.loadFailed",{reason:j})}):n==null?e.jsx("div",{className:"amx-hist-state",children:s("pghist.loading")}):n.length===0?e.jsx("div",{className:"amx-hist-state","data-hist-empty":!0,children:s("pghist.empty")}):e.jsxs(e.Fragment,{children:[e.jsx("div",{ref:P,className:"amx-hist-list",role:"listbox","aria-label":s("pghist.listLabel"),tabIndex:0,onKeyDown:t=>{(t.key==="ArrowDown"||t.key==="ArrowUp")&&(t.preventDefault(),T(t.key==="ArrowDown"?1:-1))},children:n.map(t=>e.jsxs("div",{className:"amx-hist-row",role:"option","aria-selected":t.id===o,"data-hist-id":t.id,onClick:()=>u(t.id),children:[e.jsx("span",{className:"amx-hist-rel",children:V(t.at)}),e.jsxs("span",{className:"amx-hist-meta",children:[S(t.at)," · ",K(t.size)]})]},t.id))}),e.jsxs("div",{className:"amx-hist-preview",children:[e.jsx("div",{className:"amx-hist-tabs",role:"tablist",children:["content","diff"].map(t=>e.jsx("button",{type:"button",role:"tab",className:"amx-hist-tab","aria-selected":d===t,"data-hist-tab":t,onClick:()=>L(t),children:s(t==="content"?"pghist.tab.content":"pghist.tab.diff")},t))}),e.jsx("div",{className:"amx-hist-view","data-hist-view":d,children:l===void 0?e.jsx("div",{className:"amx-hist-state",children:s("pghist.loading")}):l===null?e.jsx("div",{className:"amx-hist-state",children:s("pghist.previewFailed")}):d==="content"?e.jsx("pre",{className:"amx-hist-text",children:v(l)}):x?.kind==="patch"?e.jsx($,{text:x.patch,side:!1}):e.jsx("div",{className:"amx-hist-state",children:s(x?.kind==="large"?"pghist.tooLarge":"pghist.same")})})]})]})}),e.jsxs("div",{className:"amx-hist-foot",children:[e.jsx("span",{className:"amx-hist-hint",children:s(b?"pghist.lockedHint":"pghist.restoreHint")}),e.jsx("button",{type:"button",className:"dialog-btn","data-primary":!0,"data-hist-restore":!0,disabled:b||k||!h||typeof l!="string",onClick:()=>w(!0),children:s("pghist.restore")})]})]})}),N&&h&&e.jsx(X,{title:s("pghist.confirm.title",{time:S(h.at)}),message:s("pghist.confirm.msg"),confirmLabel:s("pghist.confirm.ok"),danger:!1,onConfirm:()=>{C()},onClose:()=>w(!1)})]}),document.body)}export{Ht as default};
@@ -1 +0,0 @@
1
- import{r as w,R as W,co as L,t as o,j as g,d as R}from"./index-BYUntVIZ.js";import{G as l,s0 as v}from"./appStore-affnJoin.js";import{R as F}from"./client-BqhpYbYL.js";import{P as T}from"./pen-tool-D_Y9We9x.js";import{P as z}from"./pencil-DGiTRzW1.js";const A=[["path",{d:"m11 10 3 3",key:"fzmg1i"}],["path",{d:"M6.5 21A3.5 3.5 0 1 0 3 17.5a2.62 2.62 0 0 1-.708 1.792A1 1 0 0 0 3 21z",key:"p4q2r7"}],["path",{d:"M9.969 17.031 21.378 5.624a1 1 0 0 0-3.002-3.002L6.967 14.031",key:"wy6l02"}]],N=l("brush",A);const _=[["path",{d:"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",key:"18jl4k"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.5 15H9",key:"1oz8nu"}]],D=l("feather",_);const U=[["path",{d:"m9 11-6 6v3h9l3-3",key:"1a3l36"}],["path",{d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4",key:"14a9rk"}]],B=l("highlighter",U);const j=[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],V=l("pen-line",j);const H=[["path",{d:"M22 2 2 22",key:"y4kqgn"}]],K=l("slash",H),m="amx.boardUiMode",u=new Set,$=["full","compact"];let h=null;const y=()=>{if(h)return h;try{const e=localStorage.getItem(m);if(e&&$.includes(e))return e;if(localStorage.getItem("amx.boardCompact")==="1")return"compact"}catch{}return"compact"},ie=e=>{h=e;try{localStorage.setItem(m,e)}catch{}for(const n of u)n()},ae=e=>(u.add(e),()=>u.delete(e));typeof window<"u"&&window.addEventListener("storage",e=>{if(e.key===m){h=null;for(const n of u)n()}});w({"boardengine.assetLoadFailed":{zh:"画板引擎资源加载失败:{url}(自托管副本缺失?重跑 npm run postinstall)",en:"Whiteboard engine assets failed to load: {url} (self-hosted copy missing? Re-run npm run postinstall)"},"boardengine.libMissing":{zh:"画板引擎已加载但没挂上 ExcalidrawLib",en:"Whiteboard engine loaded but did not expose ExcalidrawLib"}});const C={getPreferredUIMode:y,settings:{get desktopUIMode(){return y()},tabletUIMode:"compact",phoneUIMode:"mobile",disableContextMenu:!1,disableDoubleClickTextEditing:!1,penModeCrosshairVisible:!0,penModeDoubleTapEraser:!0,penModeSingleFingerPanning:!0,syncElementLinkWithText:!1,zoomMax:30,zoomMin:.1,zoomStep:.05,zoomToFitMaxLevel:2},excalidrawConfig:{areaLimit:16777216,widthHeightLimit:32767},getObsidianDevice:()=>{const e=navigator.userAgent,n=/Android/i.test(e),t=/iPad|iPhone|iPod/.test(e)||/Mac/.test(e)&&"ontouchend"in document,r=n||t,i=r&&Math.min(screen.width,screen.height)<600;return{isDesktop:!r,isPhone:i,isTablet:r&&!i,isMobile:r,isMacOS:/Mac/.test(e)&&!t,isWindows:/Win/.test(e),isLinux:/Linux/.test(e)&&!n,isIOS:t,isAndroid:n}},getHighlightColor:()=>{},getMermaid:async()=>null,loadFontFromFile:async()=>null,activeExcalidrawView:null,attachInlineLinkSuggester:()=>({destroy:()=>{}}),runAction:()=>{},getLabel:e=>e},s=globalThis;s.React=W;s.ReactDOM=Object.assign({},v,F);s.ReactJSXRuntime=L;const b=s.app;b?.plugins?.plugins?b.plugins.plugins["obsidian-excalidraw-plugin"]=C:s.app={plugins:{plugins:{"obsidian-excalidraw-plugin":C}}};const O=new URL("excalidraw/",document.baseURI).href,I=(e,n)=>new Promise((t,r)=>{e.onload=()=>t(),e.onerror=()=>r(new Error(o("boardengine.assetLoadFailed",{url:n}))),document.head.appendChild(e)}),d=document.createElement("link");d.rel="stylesheet";d.href=`${O}excalidraw.css`;const p=document.createElement("script");p.src=`${O}excalidraw.js`;await Promise.all([I(d,d.href),I(p,p.src)]);const P=s.ExcalidrawLib;if(!P)throw new Error(o("boardengine.libMissing"));const{Excalidraw:oe,MainMenu:se,serializeAsJSON:le,restoreElements:ce,newElementWith:ue,CaptureUpdateAction:f,exportToSvg:he,getCommonBounds:de}=P,q=["default","finetip","fountain","marker","highlighter","thick-thin","thin-thick-thin"];w({"excalipen.default":{zh:"默认",en:"Default"},"excalipen.finetip":{zh:"细尖笔",en:"Fine tip"},"excalipen.fountain":{zh:"钢笔",en:"Fountain pen"},"excalipen.marker":{zh:"马克笔",en:"Marker"},"excalipen.highlighter":{zh:"荧光笔",en:"Highlighter"},"excalipen.thickThin":{zh:"粗到细",en:"Thick to thin"},"excalipen.thinThickThin":{zh:"两头细",en:"Tapered ends"}});const x={get default(){return o("excalipen.default")},get finetip(){return o("excalipen.finetip")},get fountain(){return o("excalipen.fountain")},get marker(){return o("excalipen.marker")},get highlighter(){return o("excalipen.highlighter")},get"thick-thin"(){return o("excalipen.thickThin")},get"thin-thick-thin"(){return o("excalipen.thinThickThin")}},E={default:{type:"default",freedrawOnly:!1,strokeColor:"#000000",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:0,roughness:0,penOptions:{highlighter:!1,constantPressure:!1,hasOutline:!1,outlineWidth:1,options:{thinning:.6,smoothing:.5,streamline:.5,easing:"easeOutSine",start:{cap:!0,taper:0,easing:"linear"},end:{cap:!0,taper:0,easing:"linear"}}}},highlighter:{type:"highlighter",freedrawOnly:!0,strokeColor:"#FFC47C",backgroundColor:"#FFC47C",fillStyle:"solid",strokeWidth:4,roughness:null,penOptions:{highlighter:!0,constantPressure:!0,hasOutline:!1,outlineWidth:1,options:{thinning:0,smoothing:.5,streamline:.5,easing:"linear",start:{taper:0,cap:!1,easing:"linear"},end:{taper:0,cap:!1,easing:"linear"}}}},finetip:{type:"finetip",freedrawOnly:!1,strokeColor:"#3E6F8D",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:.5,roughness:0,penOptions:{highlighter:!1,hasOutline:!1,outlineWidth:1,constantPressure:!0,options:{smoothing:.4,thinning:-.5,streamline:.4,easing:"linear",start:{taper:5,cap:!1,easing:"linear"},end:{taper:5,cap:!1,easing:"linear"}}}},fountain:{type:"fountain",freedrawOnly:!1,strokeColor:"#000000",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:2,roughness:0,penOptions:{highlighter:!1,constantPressure:!1,hasOutline:!1,outlineWidth:1,options:{smoothing:.2,thinning:.6,streamline:.2,easing:"easeInOutSine",start:{taper:150,cap:!0,easing:"linear"},end:{taper:1,cap:!0,easing:"linear"}}}},marker:{type:"marker",freedrawOnly:!0,strokeColor:"#B83E3E",backgroundColor:"#FF7C7C",fillStyle:"dashed",strokeWidth:2,roughness:3,penOptions:{highlighter:!1,constantPressure:!0,hasOutline:!0,outlineWidth:4,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{taper:0,cap:!0,easing:"linear"},end:{taper:0,cap:!0,easing:"linear"}}}},"thick-thin":{type:"thick-thin",freedrawOnly:!0,strokeColor:"#CECDCC",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:0,roughness:null,penOptions:{highlighter:!0,constantPressure:!0,hasOutline:!1,outlineWidth:1,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{taper:0,cap:!0,easing:"linear"},end:{cap:!0,taper:!0,easing:"linear"}}}},"thin-thick-thin":{type:"thin-thick-thin",freedrawOnly:!0,strokeColor:"#CECDCC",backgroundColor:"transparent",fillStyle:"hachure",strokeWidth:0,roughness:null,penOptions:{highlighter:!0,constantPressure:!0,hasOutline:!1,outlineWidth:1,options:{thinning:1,smoothing:.5,streamline:.5,easing:"linear",start:{cap:!0,taper:!0,easing:"linear"},end:{cap:!0,taper:!0,easing:"linear"}}}}},J={default:z,finetip:V,fountain:D,marker:N,highlighter:B,"thick-thin":T,"thin-thick-thin":K},X={.25:"extraThin",.5:"thin",1:"medium",2:"bold",4:"extraBold"},Y=e=>{const n=X[e];return n?{currentItemStrokeWidthKey:n,currentItemStrokeWidth:null}:{currentItemStrokeWidthKey:null,currentItemStrokeWidth:e}},G={topPicks:{elementStroke:["#1e1e1e","#e03131","#2f9e44","#1971c2","#ffd43b"]}};function M(e,n){const t=n.getAppState();n.updateScene({appState:{currentStrokeOptions:{...e.penOptions,options:{...e.penOptions.options}},colorPalette:e.type==="highlighter"?G:void 0,...e.strokeWidth?Y(e.strokeWidth):null,currentItemStrokeVariability:e.penOptions?.constantPressure?"constant":"variable",...e.backgroundColor?{currentItemBackgroundColor:e.backgroundColor}:null,...e.strokeColor?{currentItemStrokeColor:e.strokeColor}:null,...e.fillStyle?{currentItemFillStyle:e.fillStyle}:null,...e.roughness!==null?{currentItemRoughness:e.roughness}:null,...t.resetCustomPen?null:{resetCustomPen:{currentItemStrokeWidthKey:t.currentItemStrokeWidthKey??null,currentItemStrokeWidth:t.currentItemStrokeWidth??null,currentItemStrokeVariability:t.currentItemStrokeVariability??null,currentItemBackgroundColor:t.currentItemBackgroundColor??null,currentItemStrokeColor:t.currentItemStrokeColor??null,currentItemFillStyle:t.currentItemFillStyle??null,currentItemRoughness:t.currentItemRoughness??null}}},captureUpdate:f.NEVER})}function k(e,n,t){n.updateScene({appState:{...e?{currentItemStrokeWidthKey:e.currentItemStrokeWidthKey??null,currentItemStrokeWidth:e.currentItemStrokeWidth??null,currentItemStrokeVariability:e.currentItemStrokeVariability??null,currentItemBackgroundColor:e.currentItemBackgroundColor??null,currentItemStrokeColor:e.currentItemStrokeColor??null,currentItemFillStyle:e.currentItemFillStyle??null,currentItemRoughness:e.currentItemRoughness??null}:null,resetCustomPen:null,...t?{currentStrokeOptions:null,colorPalette:void 0}:null},captureUpdate:f.NEVER})}const ge=()=>({active:null,pending:!1});function Q(e,n,t){const r=n.current,i=e.getAppState();if(r.active===t&&i.activeTool.type==="freedraw"){r.active=null,r.pending=!1,k(i.resetCustomPen,e,!0);return}r.active=t,r.pending=!0,M(E[t],e),e.setActiveTool({type:"freedraw"})}function pe(e,n){const t=e.getAppState().currentStrokeOptions;t?.options&&e.updateScene({appState:{currentStrokeOptions:{...t,options:{...t.options,thinning:0,start:{...t.options.start,cap:n,taper:0},end:{...t.options.end,cap:n,taper:0}}}},captureUpdate:f.NEVER})}function me(e,n){const t=n.current;t.active&&(t.active=null,t.pending=!1,k(e.getAppState().resetCustomPen,e,!0))}function fe(e,n,t,r){const i=r.current;i.pending&&n==="freedraw"&&(i.pending=!1),R.useEffect(()=>{const a=i.active;if(!e||!a||i.pending)return;const c=E[a];c.freedrawOnly&&(n!=="freedraw"&&t?k(t,e,!1):n==="freedraw"&&!t&&M(c,e))},[e,i,n,t])}function ke({api:e,ui:n,state:t}){const r=t.current,i=n.tool;return e?g.jsx("div",{className:"amx-penrow buttonList",children:q.map(a=>{const c=J[a],S=r.active===a&&i==="freedraw";return g.jsx("label",{className:S?"active":"",title:x[a],"data-on":S||void 0,onClick:()=>Q(e,t,a),children:g.jsx(c,{size:16,"aria-label":x[a]})},a)})}):null}export{f as C,oe as E,B as H,se as M,E as P,q as a,M as b,me as c,ke as d,he as e,ae as f,de as g,y as h,ue as i,ie as j,le as k,ge as n,Q as p,ce as r,pe as s,fe as u,Y as w};
@@ -1 +0,0 @@
1
- import{u as C,d as e,j as t}from"./index-BYUntVIZ.js";import{n7 as k,a6 as E,aC as y,n8 as R,q as P,ab as I,hx as q,aE as z,aN as A,iM as F,iN as L}from"./appStore-affnJoin.js";import"./client-BqhpYbYL.js";import{S as O}from"./StudioGuestSurface-ZJFKnNYF.js";import{u as T}from"./codeStudioStore-Dq5i8nbE.js";/* empty css */import{C as W}from"./code-xml-DdR58F83.js";import"./nativeDownload-Udrv_tmU.js";import"./ipc-D7yENkjV.js";function J({leaf:d,params:N}){const{t:a}=C(),r=k(N),[i,u]=e.useState("loading"),[p,S]=e.useState(""),[c,f]=e.useState(null),x=e.useRef(null),v=e.useRef(null),l=e.useRef(0),b=E(s=>s.spaces.some(o=>o.id==="coding"))&&!!y("code-studio"),h=e.useCallback(async s=>{const o=window.tangu?.productsGet;if(!(!r||!o))try{const n=await o(r);s===l.current&&n&&f(n)}catch{}},[r]),m=e.useCallback(async()=>{const s=window.tangu?.productsServe;if(!r||!s){u("gone");return}const o=++l.current;u("loading");try{const n=await s(r);if(o!==l.current)return;S(n.url),f(n.product),u("ready")}catch(n){if(o!==l.current)return;const g=R(n);u(g),g==="unservable"&&h(o)}},[r,h]);e.useEffect(()=>(m(),()=>{l.current++}),[m]),e.useEffect(()=>{c&&d.setTitle(c.name)},[d,c]);const w=e.useCallback(()=>P.getState().activateLeaf(d.id),[d.id]),j=e.useCallback(s=>{I("coding"),requestAnimationFrame(()=>{T.getState().openProject(s.root,s.name)})},[]);return t.jsxs("div",{className:"art-product","data-product-view":!0,"data-product-id":r??"","data-status":i,children:[t.jsxs("div",{className:"art-bar",children:[t.jsx("span",{className:"art-bar-name",children:c?.name??a("view.product")}),t.jsx("button",{className:"btn ghost sm","data-action":"reload",title:a("artificial.product.reload"),"aria-label":a("artificial.product.reload"),disabled:i==="unservable",onClick:()=>i==="ready"?v.current?.reload():void m(),children:t.jsx(q,{size:14})}),t.jsx("button",{className:"btn ghost sm","data-action":"external",title:a("artificial.product.openExternal"),"aria-label":a("artificial.product.openExternal"),disabled:!p,onClick:()=>{window.tangu?.openExternal?.(p)},children:t.jsx(z,{size:14})}),b&&c&&t.jsx("button",{className:"btn ghost sm","data-action":"edit",title:a("artificial.action.edit"),"aria-label":a("artificial.action.edit"),onClick:()=>j(c),children:t.jsx(W,{size:14})})]}),i==="loading"&&t.jsxs("div",{className:"art-state",role:"status","data-state":"loading",children:[t.jsx(A,{size:16,className:"spin"})," ",a("artificial.product.loading")]}),i==="gone"&&t.jsx("div",{className:"art-state",role:"alert","data-state":"gone",children:t.jsx("div",{className:"art-state-title",children:a("artificial.product.gone")})}),i==="unservable"&&t.jsxs("div",{className:"art-state",role:"alert","data-state":"unservable",children:[t.jsx("div",{className:"art-state-title",children:a("artificial.product.unservable")}),t.jsx("p",{children:a("artificial.product.unservableBody")}),b&&c&&t.jsx("button",{className:"btn sm","data-action":"edit-instead",onClick:()=>j(c),children:a("artificial.action.edit")})]}),i==="error"&&t.jsxs("div",{className:"art-state",role:"alert","data-state":"error",children:[t.jsx("div",{className:"art-state-title",children:a("artificial.product.failed")}),t.jsx("button",{className:"btn sm","data-action":"retry",onClick:()=>{m()},children:a("common.retry")})]}),i==="ready"&&t.jsxs(t.Fragment,{children:[t.jsx("div",{ref:x,className:"art-anchor"}),t.jsx(O,{anchorRef:x,onActivate:w,children:t.jsx("div",{className:"art-guest",children:t.jsx(F,{ref:s=>{v.current=s},className:"art-frame","data-product-id":r??"",src:p,partition:L,allowpopups:"true"})})})]})]})}export{J as ProductView};
@@ -1,4 +0,0 @@
1
- import{G as pe,aJ as Pe,gr as Le,U as $e,I as Oe,aN as $,mZ as _e,cj as T,cC as X,m_ as Re,bq as Be,ai as He,a5 as Ue,m$ as We,V as Ge,aE as ie,aP as he,aK as qe,aF as Ke,Z as me,_ as fe,l3 as ge,lx as Ve,n0 as Ye,t as U,gI as Xe,n1 as Je,at as Ze,c6 as Qe,ct as xe,bK as ye,n2 as et,ly as le,lz as tt,lA as ve,aO as nt,n3 as st,lD as at}from"./appStore-affnJoin.js";import{c as rt}from"./nativeDownload-Udrv_tmU.js";import{u as P,d as g,j as r,R as ot,Q as it}from"./index-BYUntVIZ.js";import"./client-BqhpYbYL.js";import{B as lt}from"./book-open-CcXCToyx.js";import{F as ct}from"./folder-plus-BJKT1Pqg.js";import{F as ce}from"./folder-CCZqnwRc.js";import{U as dt}from"./upload-D20PZHXc.js";import{P as ut}from"./pencil-DGiTRzW1.js";const pt=[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]],Vt=pe("check-check",pt);const ht=[["path",{d:"M14 9 9 4 4 9",key:"1af5af"}],["path",{d:"M20 20h-7a4 4 0 0 1-4-4V4",key:"1blwi3"}]],mt=pe("corner-left-up",ht),we=new Set(["image/png","image/jpeg","image/webp","image/gif"]),ft=20*1024*1024;function gt(e){return{version:2,id:crypto.randomUUID(),name:e,updatedAt:Date.now(),sessionId:null,images:[],elements:[],order:[],collected:[]}}function Yt(e,n){return e.images.filter(t=>!t.hidden).sort((t,a)=>t.x-a.x||t.y-a.y).slice(0,n)}function Xt(e,n,t){const a=Math.min(1,360/Math.max(e,n));return{x:t.length?Math.max(...t.map(s=>s.x+s.w))+32:0,y:0,w:e*a,h:n*a}}function Jt(e){const n=new Map;let t="";for(const a of e){a.role==="user"&&(t=a.content);for(const[s,o]of(a.displayFiles||[]).entries()){if(!we.has(o.mime||"")&&!/\.(png|jpe?g|webp|gif)$/i.test(o.name)||!o.path&&!o.dataUrl)continue;const c=o.path?`${o.sourceSessionId||""}:${o.path}`:`${a.id}:${s}:${o.name}`;n.set(c,{key:c,file:o,prompt:t})}}return[...n.values()]}function Zt(e){const n=Math.max(1,Math.ceil(Math.sqrt(e.length)));return e.map((t,a)=>{const s=G(t),o=300/Math.max(s.w,s.h);return{...t,x:a%n*340,y:Math.floor(a/n)*360,w:s.w*o,h:s.h*o}})}function Qt(e){return`brightness(${e.brightness}%) contrast(${e.contrast}%) saturate(${e.saturation}%)`}function xt(e){const n=e;if(!n||n.version!==1&&n.version!==2||typeof n.id!="string"||typeof n.name!="string"||!((n.sessionId===null||typeof n.sessionId=="string")&&Number.isFinite(n.updatedAt)&&Array.isArray(n.collected)&&n.collected.every(s=>typeof s=="string")&&Array.isArray(n.images)&&n.images.every(s=>be(s)&&s.blob instanceof Blob&&we.has(s.blob.type)&&s.blob.size<=ft&&[s.x,s.y,s.w,s.h,s.width,s.height,s.brightness,s.contrast,s.saturation].every(Number.isFinite)&&s.w>0&&s.h>0&&s.width>0&&s.height>0&&[s.brightness,s.contrast,s.saturation].every(o=>o>=0&&o<=200)&&(s.crop===void 0||yt(s.crop,s.width,s.height))&&(s.rotation===void 0||Number.isFinite(s.rotation)&&s.rotation>=0&&s.rotation<360)&&(s.parentId===void 0||typeof s.parentId=="string")&&[s.flipX,s.flipY].every(o=>o===void 0||typeof o=="boolean"))&&(n.elements===void 0||Array.isArray(n.elements)&&n.elements.every(vt))&&(n.order===void 0||Array.isArray(n.order)&&n.order.every(s=>typeof s=="string"))))return!1;const a=[...n.images,...n.elements||[]].map(s=>s.id);return new Set(a).size===a.length}const J=e=>"blob"in e&&e.blob instanceof Blob,W=e=>!J(e)&&e.kind==="frame",be=e=>!!e&&typeof e.id=="string"&&typeof e.name=="string"&&[e.x,e.y,e.w,e.h].every(n=>Number.isFinite(n)&&Math.abs(n)<=1e6)&&e.w>0&&e.h>0&&[e.locked,e.hidden].every(n=>n===void 0||typeof n=="boolean"),yt=(e,n,t)=>!!e&&[e.x,e.y,e.w,e.h].every(Number.isFinite)&&e.x>=0&&e.y>=0&&e.w>=1&&e.h>=1&&e.x+e.w<=n&&e.y+e.h<=t;function vt(e){return be(e)&&!("blob"in e)&&["text","rectangle","ellipse","frame"].includes(e.kind)&&[e.fill,e.stroke].every(n=>typeof n=="string"&&/^(#[\da-f]{6}|transparent)$/i.test(n))&&[e.strokeWidth,e.radius,e.fontSize].every(Number.isFinite)&&e.strokeWidth>=0&&e.strokeWidth<=100&&e.radius>=0&&e.radius<=1e3&&e.fontSize>=6&&e.fontSize<=500&&typeof e.text=="string"&&e.text.length<=1e4&&["sans-serif","serif","monospace"].includes(e.fontFamily)&&typeof e.bold=="boolean"&&["left","center","right"].includes(e.align)}function G(e){const n=e.crop||{w:e.width,h:e.height},t=(e.rotation||0)*Math.PI/180;return{w:Math.round((Math.abs(n.w*Math.cos(t))+Math.abs(n.h*Math.sin(t)))*1e8)/1e8,h:Math.round((Math.abs(n.w*Math.sin(t))+Math.abs(n.h*Math.cos(t)))*1e8)/1e8}}function en(e,n){const t={...e,...n},a=G(t),s=G(e),o=e.w/s.w,c=a.w*o,l=a.h*o;return{...t,x:e.x+(e.w-c)/2,y:e.y+(e.h-l)/2,w:c,h:l}}function q(e){const n=[...e.images,...e.elements||[]],t=new Map((e.order||[]).map((a,s)=>[a,s]));return n.sort((a,s)=>Number(W(s))-Number(W(a))||(t.get(a.id)??1e9)-(t.get(s.id)??1e9))}function Z(e,n){return{...e,version:2,images:n.filter(J),elements:n.filter(t=>!J(t)),order:n.map(t=>t.id)}}function wt(e,n){return Z(e,q(e).map(n))}const bt=(e,n)=>n.x>=e.x&&n.y>=e.y&&n.x+n.w<=e.x+e.w+.01&&n.y+n.h<=e.y+e.h+.01;function tn(e,n){const t=q(e),a=new Map(n);for(const s of t.filter(W)){const o=n.get(s.id);if(!(!o||s.locked||o.x===s.x&&o.y===s.y))for(const c of t)!W(c)&&!c.locked&&!a.has(c.id)&&bt(s,c)&&a.set(c.id,{...c,x:c.x+o.x-s.x,y:c.y+o.y-s.y})}return wt(e,s=>s.locked||!a.has(s.id)?s:{...s,...a.get(s.id)})}function nn(e,n,t=0,a=0){return{id:crypto.randomUUID(),kind:e,name:n,x:t,y:a,w:e==="frame"?1080:320,h:e==="frame"?1080:e==="text"?120:240,fill:e==="frame"?"#ffffff":e==="text"?"#242424":"#c9c4b8",stroke:"#242424",strokeWidth:0,radius:0,text:e==="text"?n:"",fontSize:40,fontFamily:"sans-serif",bold:!1,align:"left"}}function sn(e,n=32,t=32){return e.map(a=>({...a,id:crypto.randomUUID(),locked:!1,x:a.x+n,y:a.y+t}))}function an(e,n,t){const a=q(e),s=new Set(n);if(t==="front"||t==="back"){const c=a.filter(u=>s.has(u.id)),l=a.filter(u=>!s.has(u.id));return Z(e,t==="front"?[...l,...c]:[...c,...l])}const o=t==="up"?1:-1;for(let c=o===1?a.length-2:1;c>=0&&c<a.length;c-=o)s.has(a[c].id)&&a[c+o]&&!s.has(a[c+o].id)&&([a[c],a[c+o]]=[a[c+o],a[c]]);return Z(e,a)}const jt=["1:1","4:5","5:4","2:3","3:2","16:9","9:16"],kt=["1:1","2:3","3:2","16:9","9:16"],R=e=>{const[n,t]=e.split(":").map(Number);return n>0&&t>0?n/t:1};function St(e,n){const t=e>0&&n>0?e/n:1,a=jt.find(s=>Math.abs(Math.log(R(s)/t))<.012);return a||(t>=1?`${Number(t.toFixed(2))}:1`:`1:${Number((1/t).toFixed(2))}`)}function rn(e,n){const t=G(e),a=St(t.w,t.h),s=n==="original"?a:n,o=n==="original"?t.w/t.h:R(s),c=kt.reduce((l,u)=>Math.abs(Math.log(R(u)/o))<Math.abs(Math.log(R(l)/o))?u:l);return{aspect:o,requested:s,engine:c,originalLabel:a}}function on(e,n,t){if(!(e>0&&n>0&&t>0))return;const a=e/n;if(Math.abs(Math.log(a/t))<.001)return;if(a>t){const o=n*t;return{x:(e-o)/2,y:0,w:o,h:n}}const s=e/t;return{x:0,y:(n-s)/2,w:e,h:s}}function Nt(e,n,t=[]){const a=new Set(n.sourceIds||[]),s=e.images.filter(d=>a.has(d.id)),o=[...q(e),...t],c=s.length?Math.min(360,Math.max(s[0].w,s[0].h)):320,l=Math.max(.2,Math.min(5,n.aspect||1)),u=l>=1?c:c*l,p=l>=1?c/l:c,m=s.length?Math.max(...s.map(d=>d.x+d.w)):o.length?Math.max(...o.map(d=>d.x+d.w)):-32,h=s.length?Math.min(...s.map(d=>d.y)):0;return Array.from({length:Math.max(1,Math.min(4,Math.round(n.count)||1))},(d,x)=>({x:m+32+x*(u+32),y:h,w:u,h:p}))}function ln(e,n){if(e!=="generate_image"&&e!=="edit_image")return null;let t={};try{t=n?JSON.parse(n):{}}catch{}const a=typeof t.size=="string"&&/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/.test(t.size)?t.size:"1:1",s=Number.isInteger(t.n)?Number(t.n):1;return{count:Math.max(1,Math.min(4,s)),aspect:R(a),ratio:a,kind:e==="edit_image"?"edit":"generate"}}let V;function je(){return V??=new Promise((e,n)=>{const t=indexedDB.open("forsion-image-studio",1);t.onupgradeneeded=()=>t.result.createObjectStore("boards",{keyPath:"id"}),t.onsuccess=()=>e(t.result),t.onerror=()=>{V=void 0,n(t.error)},t.onblocked=()=>{V=void 0,n(new Error("Image Studio storage is blocked by another window"))}})}async function Dt(){const e=await je();return new Promise((n,t)=>{const a=e.transaction("boards").objectStore("boards").getAll();a.onsuccess=()=>{if(!a.result.every(xt)){t(new Error("Image Studio contains an unreadable project"));return}n(a.result)},a.onerror=()=>t(a.error)})}async function Mt(e){const n=await je();return new Promise((t,a)=>{const s=n.transaction("boards","readwrite");s.objectStore("boards").put(e),s.oncomplete=()=>t(),s.onerror=()=>a(s.error),s.onabort=()=>a(s.error||new Error("Image Studio save was interrupted"))})}let de,Q,zt=0;const _=new Set;let O;function Y(e){_.add(e),ue.setState({saving:!0}),clearTimeout(Q),Q=setTimeout(()=>{ue.getState().flush()},250)}const ue=rt((e,n)=>({boards:{},activeId:null,ready:!1,error:"",saving:!1,selection:[],past:{},future:{},placeholders:{},generationTools:{},pending:null,hydrate:()=>de??=(async()=>{try{const t=await Dt();let a=null;try{a=localStorage.getItem("image-studio.active")}catch{}e({boards:Object.fromEntries(t.map(s=>[s.id,s])),activeId:t.find(s=>s.id===a)?.id||null,ready:!0,error:""})}catch(t){e({error:String(t),ready:!1}),de=void 0}})(),create:t=>{if(!n().ready)return"";const a=gt(t);return e(s=>({boards:{...s.boards,[a.id]:a}})),n().open(a.id),Y(a.id),a.id},open:t=>{if(n().boards[t]){e({activeId:t,selection:[],pending:null});try{localStorage.setItem("image-studio.active",t)}catch{}}},close:()=>{if(n().activeId){e({activeId:null,selection:[],pending:null});try{localStorage.removeItem("image-studio.active")}catch{}}},update:(t,a,s=!0)=>{const o=n().boards[t];if(!o)return;const c=a(o);c!==o&&(e(l=>({boards:{...l.boards,[t]:{...c,updatedAt:Date.now()}},...s?{past:{...l.past,[t]:[...(l.past[t]||[]).slice(-29),o]},future:{...l.future,[t]:[]}}:{}})),Y(t))},undo:(t,a=!1)=>{const s=a?"future":"past",o=a?"past":"future",c=n()[s][t]||[],l=n().boards[t],u=c.at(-1);!l||!u||(e(p=>({boards:{...p.boards,[t]:{...u,sessionId:l.sessionId,collected:l.collected,updatedAt:Date.now()}},[s]:{...p[s],[t]:c.slice(0,-1)},[o]:{...p[o],[t]:[...p[o][t]||[],l]},selection:[]})),Y(t))},flush:async()=>{if(clearTimeout(Q),O)return O;O=(async()=>{try{for(;_.size;){const t=_.values().next().value,a=n().boards[t];_.delete(t);try{a&&await Mt(a)}catch(s){throw _.add(t),s}}e({saving:!1,error:""})}catch(t){e({saving:!1,error:String(t)})}})();try{await O}finally{O=void 0}},queue:(t,a,s=[])=>e(o=>({pending:{sessionId:t,text:o.pending?.sessionId===t?`${o.pending.text}
2
-
3
- ${a}`:a,attachments:[...o.pending?.sessionId===t?o.pending.attachments:[],...s],seq:++zt}})),consume:t=>n().pending?.seq!==t?!1:(e({pending:null}),!0),beginGeneration:(t,a,s)=>{const o=n().boards[t];if(!o)return[];const c=n().placeholders[t]||[],l=Nt(o,s,c),u=crypto.randomUUID(),p=Date.now(),m=l.map((h,d)=>({...h,id:crypto.randomUUID(),generationId:u,boardId:t,sessionId:a,sourceIds:s.sourceIds||[],kind:s.kind,status:"preparing",aspect:s.aspect,ratio:s.ratio,index:d,count:l.length,createdAt:p}));return e(h=>({placeholders:{...h.placeholders,[t]:[...h.placeholders[t]||[],...m]}})),m.map(h=>h.id)},activateGeneration:t=>{const a=new Set(t);e(s=>({placeholders:Object.fromEntries(Object.entries(s.placeholders).map(([o,c])=>[o,c.map(l=>a.has(l.id)&&l.status==="preparing"?{...l,status:"running"}:l)]))}))},bindGenerationTool:(t,a,s,o)=>{if((n().generationTools[t]||[]).includes(s))return;e(m=>({generationTools:{...m.generationTools,[t]:[...(m.generationTools[t]||[]).slice(-199),s]}}));const l=(n().placeholders[t]||[]).find(m=>m.sessionId===a&&!m.toolId&&m.status!=="failed");if(l){e(m=>({placeholders:{...m.placeholders,[t]:(m.placeholders[t]||[]).map(h=>h.generationId===l.generationId?{...h,toolId:s,status:"running"}:h)}}));return}const u=n().beginGeneration(t,a,o),p=new Set(u);e(m=>({placeholders:{...m.placeholders,[t]:(m.placeholders[t]||[]).map(h=>p.has(h.id)?{...h,toolId:s,status:"running"}:h)}}))},failGeneration:(t,a)=>{const s=a.ids?new Set(a.ids):null;e(o=>({placeholders:{...o.placeholders,[t]:(o.placeholders[t]||[]).map(c=>(!s||s.has(c.id))&&(!a.sessionId||c.sessionId===a.sessionId)&&(!a.toolId||c.toolId===a.toolId)?{...c,status:"failed"}:c)}}))},takeGeneration:(t,a)=>{const o=(n().placeholders[t]||[]).filter(c=>c.sessionId===a&&c.status!=="failed").sort((c,l)=>c.createdAt-l.createdAt||c.index-l.index)[0];if(o)return e(c=>({placeholders:{...c.placeholders,[t]:(c.placeholders[t]||[]).filter(l=>l.id!==o.id)}})),o},removeGeneration:(t,a)=>e(s=>({placeholders:{...s.placeholders,[t]:(s.placeholders[t]||[]).filter(o=>o.id!==a)}}))})),Ft=({containerRef:e,scanTrigger:n})=>{const{t}=P(),[a,s]=g.useState([]),[o,c]=g.useState(null),l=g.useCallback(()=>{const p=e.current;if(!p){s(d=>d.length?[]:d);return}const m=p.querySelectorAll('[data-toc-msg-role="user"], [data-toc-level]'),h=[];m.forEach(d=>{if(d.id){if(d.dataset.tocMsgRole==="user"){const x=(d.dataset.tocTitle||d.textContent||"").trim();x&&h.push({id:d.id,level:0,kind:"user",text:x})}else if(d.dataset.tocLevel){const x=(d.textContent||"").trim();x&&h.push({id:d.id,level:Number(d.dataset.tocLevel)||1,kind:"heading",text:x})}}}),s(d=>d.length===h.length&&d.every((x,w)=>x.id===h[w].id&&x.text===h[w].text)?d:h)},[e]);g.useEffect(()=>{l();const p=e.current;if(!p)return;let m=0;const h=new MutationObserver(()=>{cancelAnimationFrame(m),m=requestAnimationFrame(l)});return h.observe(p,{childList:!0,subtree:!0,characterData:!0}),()=>{cancelAnimationFrame(m),h.disconnect()}},[l,e,n]),g.useEffect(()=>{const p=e.current;if(!p||a.length===0)return;const m=new Set,h=new IntersectionObserver(d=>{for(const w of d)w.isIntersecting?m.add(w.target.id):m.delete(w.target.id);const x=a.find(w=>m.has(w.id));x&&c(x.id)},{root:p,rootMargin:"0px 0px -65% 0px",threshold:0});for(const d of a)try{const x=p.querySelector(`#${CSS.escape(d.id)}`);x&&h.observe(x)}catch{}return()=>h.disconnect()},[a,e]);const u=g.useCallback(p=>{const m=e.current;if(!m)return;let h=null;try{h=m.querySelector(`#${CSS.escape(p)}`)}catch{return}if(!h)return;const d=h.getBoundingClientRect().top-m.getBoundingClientRect().top+m.scrollTop;m.scrollTo({top:Math.max(0,d-16),behavior:"smooth"}),c(p)},[e]);return a.length===0?r.jsx("div",{className:"panel-note",children:t("toc.emptyNote")}):r.jsx("div",{className:"toc-list",children:a.map(p=>r.jsxs("button",{type:"button",className:`toc-item${p.kind==="user"?" user":""}${o===p.id?" active":""}`,style:{paddingLeft:6+p.level*14},title:p.text,onClick:()=>u(p.id),children:[p.kind==="user"?r.jsx(Pe,{size:12,className:"toc-ico"}):r.jsx(Le,{size:11,className:"toc-ico"}),r.jsx("span",{className:"toc-text",children:p.text})]},p.id))})};function Ct(e){if(e==="__host__")return"#b8860b";let n=0;for(let t=0;t<e.length;t++)n=n*31+e.charCodeAt(t)>>>0;return`hsl(${n%360} 62% 45%)`}const ke=({segs:e})=>r.jsx("div",{style:{display:"flex",flexDirection:"column",gap:8},children:e.map((n,t)=>n.t==="tool"?r.jsxs("div",{className:"panel-note",style:{fontSize:"var(--ui-font-caption, 11px)",opacity:n.error?.95:.7},children:["🔧 ",r.jsx("b",{children:n.name}),n.preview?` — ${n.preview.slice(0,200)}`:""]},t):n.t==="vote"?r.jsxs("div",{className:"panel-note",style:{fontSize:"var(--ui-font-caption, 11px)"},children:["🗳 ",n.text]},t):r.jsxs("div",{children:[n.speaker&&r.jsxs("div",{className:"msg-role-with-avatar",style:{color:n.color,fontSize:12,fontWeight:600,marginBottom:2,display:"flex",alignItems:"center",gap:4},children:[r.jsx("span",{className:"msg-avatar fallback",style:{background:n.color,width:16,height:16,fontSize:10},children:n.speaker.slice(0,1)}),r.jsx("span",{children:n.speaker})]}),r.jsx("div",{className:"msg-content",style:{fontSize:"var(--ui-font-meta, 12px)"},children:r.jsx(X,{content:n.text||""})})]},t))}),It=({sessionId:e,runId:n})=>{const{t}=P(),[a,s]=g.useState([]),[o,c]=g.useState(!0),l=g.useRef(null);return g.useEffect(()=>{const u=new AbortController;s([]),c(!0);let p="",m="";const h=d=>s(x=>{const w=x[x.length-1];return w&&w.t==="text"?[...x.slice(0,-1),{...w,text:w.text+d}]:[...x,{t:"text",speaker:p,color:m,text:d}]});return _e(T(e),n,d=>{const x=d.payload||{};switch(d.type){case"group_speaker":x.phase==="start"&&(p=x.name||x.slug||"",m=Ct(String(x.slug||"")),s(w=>[...w,{t:"text",speaker:p,color:m,text:""}]));break;case"token":x.delta&&h(String(x.delta));break;case"tool_call":s(w=>[...w,{t:"tool",name:String(x.name||"")}]);break;case"group_vote":s(w=>[...w,{t:"vote",text:`${x.endCount}/${x.total} ${t("panel.subchats.voteEnd")}`}]);break;case"group_ended":case"done":case"error":c(!1);break}},u.signal).catch(()=>c(!1)),()=>u.abort()},[e,n,t]),g.useEffect(()=>{l.current?.scrollIntoView({block:"end"})},[a]),r.jsxs("div",{children:[a.length===0&&o&&r.jsxs("div",{className:"panel-note",style:{fontSize:11.5},children:[r.jsx($,{size:12,className:"spin"})," ",t("panel.subchats.connecting")]}),r.jsx(ke,{segs:a}),o&&a.length>0&&r.jsxs("div",{className:"panel-note",style:{fontSize:11.5,marginTop:6},children:[r.jsx($,{size:12,className:"spin"})," ",t("panel.subchats.live")]}),r.jsx("div",{ref:l})]})},Et=({sessionId:e,subChats:n})=>{const{t}=P(),a=n||[],[s,o]=g.useState(null),c=a.find(l=>l.id===s)||a[a.length-1]||null;return a.length?r.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[r.jsx("div",{style:{display:"flex",flexDirection:"column",gap:2,maxHeight:140,overflowY:"auto"},children:a.map(l=>r.jsxs("div",{role:"button",tabIndex:0,className:`file-row${c?.id===l.id?" selected":""}`,onClick:()=>o(l.id),children:[l.kind==="discussion"?r.jsx($e,{size:13}):r.jsx(Oe,{size:13}),r.jsx("span",{className:"file-name",title:l.title,children:l.title||l.id.slice(0,8)}),l.streaming&&r.jsx($,{size:12,className:"spin",style:{opacity:.6}})]},l.id))}),r.jsx("div",{style:{height:1,background:"var(--border)"}}),c&&r.jsx("div",{style:{padding:"0 4px"},children:c.kind==="discussion"&&c.runId?r.jsx(It,{sessionId:e,runId:c.runId}):r.jsxs(r.Fragment,{children:[r.jsx(ke,{segs:c.segs}),c.segs.length===0&&r.jsx("div",{className:"panel-note",style:{fontSize:"var(--ui-font-caption, 11px)"},children:t("panel.subchats.starting")}),c.streaming&&c.segs.length>0&&r.jsxs("div",{className:"panel-note",style:{fontSize:11.5,marginTop:6},children:[r.jsx($,{size:12,className:"spin"})," ",t("panel.subchats.live")]})]})})]}):r.jsx("div",{className:"panel-note",children:t("panel.subchats.empty")})},At="application/x-tangu-paths",cn=e=>{const{t:n}=P(),[t,a]=g.useState("workspace"),s=e.view??t,o=r.jsxs(r.Fragment,{children:[s==="workspace"&&r.jsx(Tt,{...e}),s==="toc"&&r.jsx(Ft,{containerRef:e.chatScrollRef,scanTrigger:e.messages.length}),s==="memory"&&r.jsx($t,{...e}),s==="subchats"&&r.jsx(Et,{sessionId:e.sessionId,subChats:e.subChats})]});return e.view?r.jsx("div",{className:"right-panel-body",children:o}):r.jsxs("aside",{className:"right-panel",children:[r.jsxs("div",{className:"right-panel-tabs",children:[r.jsxs("button",{className:t==="workspace"?"active":"",onClick:()=>a("workspace"),children:[r.jsx(Ue,{size:13})," ",n("panel.tab.workspace")]}),r.jsxs("button",{className:t==="toc"?"active":"",onClick:()=>a("toc"),children:[r.jsx(We,{size:13})," ",n("panel.tab.toc")]}),r.jsxs("button",{className:t==="memory"?"active":"",onClick:()=>a("memory"),children:[r.jsx(lt,{size:13})," ",n("panel.tab.memory")]}),r.jsxs("button",{className:t==="subchats"?"active":"",onClick:()=>a("subchats"),children:[r.jsx(Ge,{size:13})," ",n("panel.tab.subchats"),e.subChats&&e.subChats.length>0&&r.jsx("span",{style:{marginLeft:3,fontSize:"var(--ui-font-caption, 11px)",fontWeight:700,background:"var(--accent)",color:"var(--on-accent)",borderRadius:"var(--radius-sm, 6px)",padding:"0 4px",lineHeight:"14px"},children:e.subChats.length})]})]}),r.jsx("div",{className:"right-panel-body",children:o})]})};function Se(e){const[n,t]=g.useState(new Set),a=g.useRef(null),s=e.join(`
4
- `);g.useEffect(()=>{t(u=>{const p=new Set([...u].filter(m=>e.includes(m)));return p.size===u.size?u:p})},[s]);const o=u=>{t(new Set([u])),a.current=u};return{selected:n,onClick:(u,p)=>{if(p.metaKey||p.ctrlKey)t(m=>{const h=new Set(m);return h.has(u)?h.delete(u):h.add(u),h}),a.current=u;else if(p.shiftKey&&a.current){const m=e.indexOf(a.current),h=e.indexOf(u);if(m>=0&&h>=0){const[d,x]=m<h?[m,h]:[h,m];t(new Set(e.slice(d,x+1)))}else o(u)}else o(u)},only:o,clear:()=>{t(new Set),a.current=null}}}const Ne=({menu:e,onClose:n,autoFocus:t=!1})=>{const[a,s]=g.useState(()=>!0),o=g.useRef({menu:e,onClose:n});o.current={menu:e,onClose:n},g.useEffect(()=>{if(a)return;const l=new AbortController;return Re(o.current.menu.items,{signal:l.signal}).then(u=>{if(!l.signal.aborted){if(!u.handled){s(!0);return}o.current.onClose(),u.value?.run()}}),()=>l.abort()},[a,e.x,e.y]);const c=g.useRef(null);return g.useEffect(()=>{a&&t&&c.current?.focus({preventScroll:!0})},[a,t,e.x,e.y]),g.useEffect(()=>{if(!a)return;const l=()=>n(),u=p=>{p.key==="Escape"&&n()};return window.addEventListener("pointerdown",l),window.addEventListener("contextmenu",l),window.addEventListener("keydown",u),window.addEventListener("blur",l),()=>{window.removeEventListener("pointerdown",l),window.removeEventListener("contextmenu",l),window.removeEventListener("keydown",u),window.removeEventListener("blur",l)}},[n,a]),a?Be.createPortal(r.jsx(He,{className:"ctx-menu",role:"menu",x:e.x,y:e.y,onPointerDown:l=>l.stopPropagation(),onContextMenu:l=>{l.preventDefault(),l.stopPropagation()},onKeyDown:l=>{if(l.key==="Escape"||l.key==="Tab"){l.preventDefault(),l.stopPropagation(),n();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(l.key))return;l.preventDefault(),l.stopPropagation();const u=Array.from(l.currentTarget.querySelectorAll("button:not(:disabled)")),p=u.indexOf(document.activeElement),m=l.key==="Home"?0:l.key==="End"?u.length-1:(p+(l.key==="ArrowDown"?1:-1)+u.length)%u.length;u[m]?.focus()},children:e.items.map((l,u)=>r.jsxs(ot.Fragment,{children:[l.separatorBefore&&r.jsx("div",{className:"ctx-separator",role:"separator"}),r.jsxs("button",{ref:u===e.items.findIndex(p=>!p.disabled)?c:void 0,role:"menuitem","aria-label":l.label,disabled:l.disabled,className:`ctx-item${l.danger?" danger":""}`,onClick:()=>{n(),l.run()},children:[l.icon,r.jsx("span",{children:l.label}),l.shortcut&&r.jsx("kbd",{className:"ctx-shortcut","aria-hidden":"true",children:l.shortcut})]})]},u))}),document.body):null},De=(e,n)=>({x:e.clientX,y:e.clientY}),Tt=e=>e.sessionConfig?.execMode==="host"&&e.sessionConfig.cwd&&window.tangu?.listDir?r.jsx(Pt,{cwd:e.sessionConfig.cwd,running:e.running,onToast:e.onToast,onOpenPreview:e.onOpenPreview}):r.jsx(Lt,{...e}),Pt=({cwd:e,running:n,onToast:t,onOpenPreview:a})=>{const{t:s}=P(),[o,c]=g.useState(e),[l,u]=g.useState([]),[p,m]=g.useState(!1),[h,d]=g.useState(null),[x,w]=g.useState(""),[E,k]=g.useState(!1),[N,D]=g.useState(""),[f,S]=g.useState(null),[b,C]=g.useState(null),[M,z]=g.useState(null),[Me,B]=g.useState(!1),F=Se(l.map(i=>i.path)),L=!!window.tangu?.mkdirHost,K=!!window.tangu?.revealHostPath;g.useEffect(()=>{c(e),d(null),k(!1)},[e]);const I=g.useCallback(async()=>{if(window.tangu?.listDir){m(!0);try{u(await window.tangu.listDir(o))}catch(i){t(s("panel.toast.listDirFail",{err:i?.message||i}),!0)}finally{m(!1)}}},[o,t]);g.useEffect(()=>{I()},[I,n]);const H=i=>{const y=Math.max(i.lastIndexOf("/"),i.lastIndexOf("\\"));return y>0?i.slice(0,y):i},ze=o===e,ee=o.startsWith(e)?o.slice(e.length).replace(/^[/\\]+/,""):o,te=i=>{i.isDir||!window.tangu?.readHostFile||a({name:i.name,path:i.path,load:async()=>{const y=await window.tangu.readHostFile(i.path);return y.tooLarge?{tooLarge:!0,size:y.size}:{mimeType:y.mimeType,bytes:ve(y.content),size:y.size,mtimeMs:y.mtimeMs}},download:K?()=>{window.tangu?.revealHostPath?.(i.path)}:void 0})},ne=i=>{i.isDir?c(i.path):te(i)},Fe=i=>{d(i.path),w(i.name)},Ce=async i=>{const y=x.trim();if(d(null),!(!y||y===i.name||!window.tangu?.renameHostPath))try{await window.tangu.renameHostPath(i.path,y),I()}catch(j){t(s("panel.toast.renameFail",{err:j?.message||j}),!0)}},se=async()=>{const i=N.trim();if(k(!1),D(""),!(!i||!window.tangu?.mkdirHost))try{await window.tangu.mkdirHost(o,i),I()}catch(y){t(s("panel.toast.mkdirFail",{err:y?.message||y}),!0)}},Ie=async i=>{if(!(!i.length||!window.tangu?.trashHostPath||!window.confirm(i.length===1?s("panel.confirm.trash",{name:i[0].split(/[/\\]/).pop()||""}):s("panel.confirm.trashN",{n:String(i.length)}))))try{for(const j of i)await window.tangu.trashHostPath(j);F.clear(),I()}catch(j){t(s("panel.toast.deleteFail",{err:j?.message||j}),!0)}},Ee=async(i,y)=>{const j=y.filter(v=>v!==i);if(!(!j.length||!window.tangu?.moveHostPath))try{for(const v of j)await window.tangu.moveHostPath(v,i);F.clear(),I()}catch(v){t(s("panel.toast.moveFail",{err:v?.message||v}),!0)}},ae=async(i,y)=>{if(!window.tangu?.copyHostFiles||!window.tangu?.getPathForFile)return;const j=Array.from(i).map(v=>{try{return window.tangu.getPathForFile(v)}catch{return""}}).filter(Boolean);if(j.length)try{const v=await window.tangu.copyHostFiles(j,y);t(s("panel.toast.copied",{n:String(v.copied)})),I()}catch(v){t(s("panel.toast.copyFail",{err:v?.message||v}),!0)}},Ae=(i,y)=>{i.preventDefault(),i.stopPropagation();const j=F.selected.has(y.path)?[...F.selected]:[y.path];F.selected.has(y.path)||F.only(y.path);const v=j.length>1,A=[];!v&&!y.isDir&&A.push({label:s("panel.action.preview"),icon:r.jsx(xe,{size:13}),run:()=>te(y)}),!v&&L&&A.push({label:s("panel.action.rename"),icon:r.jsx(ut,{size:13}),run:()=>Fe(y)}),!v&&K&&A.push({label:s("panel.action.revealInFileManager"),icon:r.jsx(ie,{size:13}),run:()=>window.tangu?.revealHostPath?.(y.path)}),L&&A.push({label:v?s("panel.action.deleteN",{n:String(j.length)}):s("panel.action.moveToTrash"),icon:r.jsx(ye,{size:13}),danger:!0,run:()=>{Ie(j)}}),A.length&&S({...De(i,A.length),items:A})},Te=(i,y)=>{if(i.altKey&&window.tangu?.startHostDrag){i.preventDefault(),window.tangu.startHostDrag(y.path);return}const j=F.selected.has(y.path)?[...F.selected]:[y.path];C(j),i.dataTransfer.setData(At,JSON.stringify(j)),i.dataTransfer.effectAllowed="copyMove"},re=(i,y)=>{const j=L&&i.dataTransfer.types.includes("Files");!b&&!j||b?.includes(y)||(i.preventDefault(),i.stopPropagation(),z(y),B(!1))},oe=(i,y)=>{i.preventDefault(),i.stopPropagation();const j=i.dataTransfer.files,v=b;z(null),C(null),j?.length?ae(j,y):v?.length&&Ee(y,v)};return r.jsxs("div",{className:Me?"wsfiles dragover":"wsfiles",onClick:i=>{i.target===i.currentTarget&&F.clear()},onDragOver:i=>{L&&i.dataTransfer.types.includes("Files")&&!b&&(i.preventDefault(),B(!0))},onDragLeave:i=>{i.currentTarget.contains(i.relatedTarget)||B(!1)},onDrop:i=>{i.preventDefault(),B(!1),z(null),i.dataTransfer.files?.length&&!b&&ae(i.dataTransfer.files,o)},children:[r.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:6},children:[r.jsx("span",{className:"panel-section-title",style:{flex:1,padding:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:o,children:ee?`…/${ee}`:e.split(/[/\\]/).filter(Boolean).pop()||e}),L&&r.jsx("button",{className:"icon-btn",style:{width:24,height:24},onClick:()=>{k(!0),D("")},title:s("panel.action.newFolder"),children:r.jsx(ct,{size:13})}),K&&r.jsx("button",{className:"icon-btn",style:{width:24,height:24},onClick:()=>window.tangu?.revealHostPath?.(o),title:s("panel.action.openCurDirInFileManager"),children:r.jsx(ie,{size:13})}),r.jsx("button",{className:"icon-btn",style:{width:24,height:24},onClick:()=>{I()},title:s("panel.action.refresh"),children:p?r.jsx($,{size:13,className:"spin"}):r.jsx(he,{size:13})})]}),E&&r.jsxs("div",{className:"file-row",style:{cursor:"default"},children:[r.jsx(ce,{size:13,style:{color:"var(--accent-ink)"}}),r.jsx("input",{autoFocus:!0,className:"file-rename-input",value:N,placeholder:s("panel.placeholder.newFolderName"),onChange:i=>D(i.target.value),onKeyDown:i=>{i.key==="Enter"?se():i.key==="Escape"&&(k(!1),D(""))},onBlur:()=>{k(!1),D("")}}),r.jsxs("span",{className:"file-act",style:{opacity:1},children:[r.jsx("button",{className:"icon-btn",style:{width:22,height:22},title:s("panel.action.create"),onMouseDown:i=>{i.preventDefault(),se()},children:r.jsx(qe,{size:12})}),r.jsx("button",{className:"icon-btn",style:{width:22,height:22},title:s("panel.action.cancel"),onMouseDown:i=>{i.preventDefault(),k(!1),D("")},children:r.jsx(Ke,{size:12})})]})]}),!ze&&r.jsxs("div",{className:`file-row${M===H(o)?" drop-target":""}`,role:"button",tabIndex:0,onClick:()=>c(H(o)),onDragOver:i=>re(i,H(o)),onDragLeave:()=>z(null),onDrop:i=>oe(i,H(o)),children:[r.jsx(mt,{size:13}),r.jsx("span",{className:"file-name",children:s("panel.parentDir")})]}),l.length===0&&!p&&!E&&r.jsx("div",{className:"panel-note",children:s("panel.emptyDir")}),l.map(i=>{const y=F.selected.has(i.path),j=i.isDir&&M===i.path;return r.jsxs("div",{className:`file-row${y?" selected":""}${j?" drop-target":""}`,role:"button",tabIndex:0,draggable:L&&h!==i.path,onDragStart:v=>Te(v,i),onDragEnd:()=>{C(null),z(null)},onDragOver:i.isDir?v=>re(v,i.path):void 0,onDragLeave:i.isDir?()=>z(null):void 0,onDrop:i.isDir?v=>oe(v,i.path):void 0,onClick:v=>{h!==i.path&&F.onClick(i.path,v)},onDoubleClick:()=>{h!==i.path&&ne(i)},onContextMenu:v=>Ae(v,i),onKeyDown:v=>{h!==i.path&&v.key==="Enter"&&(v.preventDefault(),ne(i))},children:[i.isDir?r.jsx(ce,{size:13,style:{color:"var(--accent-ink)"}}):/\.(png|jpe?g|gif|webp|svg|bmp)$/i.test(i.name)?r.jsx(me,{size:13}):r.jsx(fe,{size:13}),h===i.path?r.jsx("input",{autoFocus:!0,className:"file-rename-input",value:x,onClick:v=>v.stopPropagation(),onChange:v=>w(v.target.value),onKeyDown:v=>{v.stopPropagation(),v.key==="Enter"?Ce(i):v.key==="Escape"&&d(null)},onBlur:()=>d(null)}):r.jsxs(r.Fragment,{children:[r.jsx("span",{className:"file-name",children:i.name}),!i.isDir&&r.jsx("span",{className:"file-size",children:ge(i.size)})]})]},i.path)}),f&&r.jsx(Ne,{menu:f,onClose:()=>S(null)})]})},Lt=({cfg:e,sessionId:n,running:t,onToast:a,onOpenPreview:s})=>{const{t:o}=P(),[c,l]=g.useState([]),[u,p]=g.useState(!1),[m,h]=g.useState(null),d=Se(c.map(f=>f.path)),x=g.useCallback(async()=>{p(!0);try{l(await Ve(T(n),n))}catch(f){a(o("panel.toast.workspaceLoadFail",{err:f?.message||f}),!0)}finally{p(!1)}},[e,n,a]);g.useEffect(()=>{x()},[x,t]);const w=f=>{s({name:f.path,load:async()=>{const S=await tt(T(n),n,f.path);return{mimeType:S.mimeType,bytes:ve(S.content),size:S.size}},download:()=>{le(T(n),n,f.path).catch(S=>a(S.message,!0))}})},E=f=>{le(T(n),n,f).catch(S=>a(S.message,!0))},k=async f=>{if(!(!f.length||!window.confirm(f.length===1?o("panel.confirm.delete",{name:f[0].replace(/^\//,"")}):o("panel.confirm.deleteN",{n:String(f.length)}))))try{for(const b of f)await at(T(n),n,b);d.clear(),x()}catch(b){a(b.message,!0)}},N=async f=>{if(!f?.length)return;const S=await Promise.all(Array.from(f).map(async b=>{const C=new Uint8Array(await b.arrayBuffer());let M="";for(let z=0;z<C.length;z+=32768)M+=String.fromCharCode(...C.subarray(z,z+32768));return{path:b.name,content:btoa(M),encoding:"base64",mimeType:b.type}}));try{const b=await et(T(n),n,S);a(o("panel.toast.uploaded",{saved:b.saved,total:b.total})),x()}catch(b){a(o("panel.toast.uploadFail",{err:b?.message||b}),!0)}},D=(f,S)=>{f.preventDefault(),f.stopPropagation();const b=d.selected.has(S.path)?[...d.selected]:[S.path];d.selected.has(S.path)||d.only(S.path);const C=b.length>1,M=[];C||M.push({label:o("panel.action.preview"),icon:r.jsx(xe,{size:13}),run:()=>w(S)}),C||M.push({label:o("panel.action.download"),icon:r.jsx(nt,{size:13}),run:()=>E(S.path)}),M.push({label:C?o("panel.action.deleteN",{n:String(b.length)}):o("panel.action.delete"),icon:r.jsx(ye,{size:13}),danger:!0,run:()=>{k(b)}}),h({...De(f,M.length),items:M})};return r.jsxs("div",{onClick:f=>{f.target===f.currentTarget&&d.clear()},onDragOver:f=>f.preventDefault(),onDrop:f=>{f.preventDefault(),N(f.dataTransfer.files)},children:[r.jsxs("div",{style:{display:"flex",gap:4,marginBottom:6},children:[r.jsx("span",{className:"panel-section-title",style:{flex:1,padding:0},children:o("panel.sessionFiles")}),r.jsxs("label",{className:"icon-btn",style:{width:24,height:24},title:o("panel.action.uploadFile"),children:[r.jsx(dt,{size:13}),r.jsx("input",{type:"file",multiple:!0,hidden:!0,onChange:f=>{N(f.target.files),f.target.value=""}})]}),r.jsx("button",{className:"icon-btn",style:{width:24,height:24},onClick:()=>{x()},title:o("panel.action.refresh"),children:u?r.jsx($,{size:13,className:"spin"}):r.jsx(he,{size:13})})]}),c.length===0&&r.jsx("div",{className:"panel-note",children:o("panel.noFilesYet")}),c.map(f=>{const S=d.selected.has(f.path);return r.jsxs("div",{className:`file-row${S?" selected":""}`,role:"button",tabIndex:0,onClick:b=>d.onClick(f.path,b),onDoubleClick:()=>w(f),onContextMenu:b=>D(b,f),onKeyDown:b=>{b.key==="Enter"&&(b.preventDefault(),w(f))},children:[f.mimeType.startsWith("image/")?r.jsx(me,{size:13}):r.jsx(fe,{size:13}),r.jsx("span",{className:"file-name",children:f.path.replace(/^\//,"")}),r.jsx("span",{className:"file-size",children:ge(f.size)})]},f.path)}),m&&r.jsx(Ne,{menu:m,onClose:()=>h(null)})]})},$t=({cfg:e,sessionConfig:n,onToast:t})=>{const a=n?.groupChat&&n.groupAgents?.length?Array.from(new Set(n.groupAgents)):[n?.agentSlug||it];return r.jsx("div",{children:a.map(s=>r.jsx(Ot,{cfg:e,slug:s,onToast:t,showName:a.length>1,canAppend:a.length===1},s))})},Ot=({cfg:e,slug:n,onToast:t,showName:a,canAppend:s})=>{const{t:o}=P(),[c,l]=g.useState(null),[u,p]=g.useState([]),[m,h]=g.useState(null),[d,x]=g.useState(""),w=g.useCallback(async()=>{try{l(await Ye(U(),n))}catch(k){l(null),t(o("panel.toast.memoryLoadFail",{err:k?.message||k}),!0)}try{const k=(await Xe(U(),n)).slice().sort((f,S)=>S.localeCompare(f)).slice(0,3),D=(await Promise.all(k.map(async f=>({date:f,content:await Je(U(),n,f)})))).filter(f=>f.content.trim());p(D),h(f=>f??D[0]?.date??null)}catch{p([])}},[e,n,t,o]);g.useEffect(()=>{w()},[w]);const E=async()=>{const k=d.trim();if(k)try{const N=await st(U(),k,n);t(N.appended?o("panel.toast.memorySaved"):o("panel.toast.memoryNotWritten")),x(""),w()}catch(N){t(o("panel.toast.appendFail",{err:N?.message||N}),!0)}};return r.jsxs("div",{className:"agentmem",children:[a&&r.jsx("div",{className:"agentmem-agent",children:n}),r.jsx("div",{className:"panel-section-title",children:o("panel.memory.currentAgent")}),c===null&&r.jsx("div",{className:"panel-note",children:o("panel.memory.notConnected")}),c!==null&&(c.trim()?r.jsx("div",{style:{fontSize:"var(--ui-font-meta, 12px)",padding:"0 8px"},className:"msg-content",children:r.jsx(X,{content:c})}):r.jsx("div",{className:"panel-note",children:o("panel.memory.empty")})),s&&r.jsxs("div",{style:{display:"flex",gap:6,padding:"8px 8px 0"},children:[r.jsx("input",{type:"text",value:d,placeholder:o("panel.memory.appendPlaceholder"),onChange:k=>x(k.target.value),onKeyDown:k=>k.key==="Enter"&&void E(),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"}}),r.jsx("button",{className:"btn ghost sm",onClick:()=>{E()},children:o("panel.memory.append")})]}),r.jsx("div",{className:"panel-section-title",style:{marginTop:14},children:o("panel.memory.recentLogs")}),u.length===0&&r.jsx("div",{className:"panel-note",children:o("panel.log.none")}),u.map(k=>{const N=m===k.date;return r.jsxs("div",{className:"agentmem-log",children:[r.jsxs("button",{className:"agentmem-log-head",onClick:()=>h(N?null:k.date),children:[N?r.jsx(Ze,{size:12}):r.jsx(Qe,{size:12}),r.jsx("span",{children:k.date})]}),N&&r.jsx("div",{className:"agentmem-log-body msg-content",children:r.jsx(X,{content:k.content})})]},k.date)})]})};export{Ne as C,jt as E,we as I,ft as M,cn as R,Vt as a,q as b,Yt as c,G as d,Z as e,tn as f,Zt as g,Xt as h,J as i,De as j,W as k,gt as l,wt as m,nn as n,rn as o,xt as p,Qt as q,an as r,ln as s,en as t,ue as u,yt as v,Jt as w,on as x,sn as y,bt as z};
@@ -1 +0,0 @@
1
- .agent-avatar-initial{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-weight:600;line-height:1;-webkit-user-select:none;user-select:none}.agent-avatar-glyph{display:block}.agent-avatar-fill{width:100%;height:100%;container-type:size;color:var(--text-muted)}.agent-avatar-fill .agent-avatar-glyph{font-size:42cqmin;font-weight:500}.agent-avatar-initial.agent-avatar-mini,img.agent-avatar-mini{display:inline-flex;flex:0 0 auto;width:16px;height:16px;border-radius:var(--radius-sm, 6px);object-fit:cover}.agent-avatar-initial.agent-avatar-mini{background:var(--overlay-medium);color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.t2c{position:relative;width:100%}.dv-groupview:has(.wb-tab--icon) .t2-chat-view{--t2c-card-surface: var(--sidebar-card-bg, var(--bg))}.t2c-inner{max-width:880px;margin:0 auto;width:100%;box-sizing:border-box;padding:8px 28px 16px;display:flex;flex-direction:column;gap:8px}.t2c-iconbtn{width:28px;height:28px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-muted);border-radius:var(--radius-pill, 999px);cursor:pointer;transition:background var(--duration-fast, .15s),color var(--duration-fast, .15s)}.t2c-iconbtn:hover:not(:disabled){background:var(--overlay-light, rgba(127, 127, 127, .1));color:var(--text)}.t2c-iconbtn:disabled{opacity:.4;cursor:default}.t2c-stop{display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 12px;flex-shrink:0;border:none;border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--danger, #e0564b) 14%,transparent);color:var(--danger, #e0564b);font-size:var(--ui-font-caption, 11px);font-family:var(--font-ui);cursor:pointer}.t2c-stop:hover{background:color-mix(in srgb,var(--danger, #e0564b) 22%,transparent)}.t2c-quotes{display:flex;flex-direction:column;gap:6px;margin-bottom:8px;max-height:172px;overflow-y:auto}.t2c-quote{display:flex;gap:8px;align-items:flex-start;flex:none;padding:8px 8px 8px 10px;background:var(--overlay-light, rgba(127, 127, 127, .08));border-radius:var(--radius-md, 10px)}.t2c-quote-mark{flex:none;margin-top:2px;color:var(--accent-ink)}.t2c-quote-text{flex:1;min-width:0;font-size:var(--ui-font-meta, 12px);line-height:var(--ui-line-meta, 1.5);color:var(--text-muted);white-space:pre-wrap;overflow-wrap:anywhere;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.t2c-quote-x{flex:none;display:grid;place-items:center;width:20px;height:20px;background:none;border:none;border-radius:var(--radius-sm, 6px);cursor:pointer;color:var(--text-faint, var(--text-muted));padding:0;transition:background var(--duration-fast),color var(--duration-fast)}.t2c-quote-x:hover{background:var(--overlay-medium, rgba(127, 127, 127, .16));color:var(--text)}.t2c-hint{font-size:var(--ui-font-caption, 11px);color:var(--danger, #e0564b);margin-bottom:6px}.t2c-chiprow{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.t2c-refrow{align-items:center}.t2c-reflabel{font-size:var(--ui-font-meta, 12px);color:var(--text-faint);flex-shrink:0}.t2c-menu{position:absolute;bottom:100%;left:0;right:0;margin-bottom:6px;background:var(--bg-card, var(--bg));border:var(--border-width, 1px) solid var(--border);border-radius:var(--radius-md, 12px);max-height:260px;overflow-y:auto;z-index:30;box-shadow:var(--card-shadow, 0 8px 28px rgba(0, 0, 0, .18));padding:6px}.t2c-menu-item{width:100%;min-height:var(--menu-item-min-height);display:flex;align-items:center;justify-content:space-between;gap:10px;padding:var(--menu-item-pad-block) var(--menu-item-pad-inline);font-size:var(--menu-text-size);border:none;background:transparent;color:var(--text);text-align:left;border-radius:var(--radius-sm, 8px);cursor:pointer}.t2c-menu-item[data-active]{background:var(--menu-hover, rgba(127, 127, 127, .12))}.t2c-menu-cmd{font-size:var(--ui-font-caption, 11px);font-weight:600;white-space:nowrap}.t2c-menu-desc{font-size:var(--ui-font-caption, 11px);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.t2c-menu-sec{padding:5px 10px 3px;font-size:var(--ui-font-caption, 11px);color:var(--text-faint, var(--text-muted))}.t2c-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border:none;border-radius:var(--radius-pill, 999px);background:var(--overlay-light, rgba(127, 127, 127, .1));color:var(--text);font-size:var(--t2c-font-control, 12px);font-family:var(--font-ui);cursor:pointer;transition:background var(--duration-fast, .15s)}.t2c-row .composer-chip{font-size:var(--t2c-font-control, 12px)}.t2c-pill:hover{background:var(--overlay-medium, rgba(127, 127, 127, .18))}.t2c-pill.active{background:color-mix(in srgb,var(--accent-ink) 16%,transparent);color:var(--accent-ink)}.t2c-pill-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mode-pill-wrap{position:relative;display:inline-flex}.t2c-pill.mode-pill-btn{min-width:0;interpolate-size:allow-keywords;width:fit-content;transition:background var(--duration-fast, .15s),width .18s var(--ease-spring)}.t2c-pill.mode-pill-btn.is-open{display:grid;grid-template-columns:16px minmax(0,1fr) 16px;width:224px;background:var(--overlay-medium, rgba(127, 127, 127, .18))}.mode-pill-wrap.is-open{width:224px;flex-shrink:0}.mode-pill-btn.is-open>svg{justify-self:center}.mode-pill-btn.is-open .t2c-pill-label{width:100%;max-width:none;text-align:center}.add-pill-wrap{position:relative;display:inline-flex}.t2c-pill.add-pill-btn{box-sizing:border-box;display:grid;grid-template-columns:16px minmax(0,0fr) 0;justify-content:center;gap:0;width:28px;height:28px;min-width:0;padding:0;overflow:hidden;color:var(--text-muted);transition:background var(--duration-fast, .15s),color var(--duration-fast, .15s),width .18s var(--ease-spring),grid-template-columns .18s var(--ease-spring),gap .18s var(--ease-spring),padding .18s var(--ease-spring)}.t2c-pill.add-pill-btn.is-open{grid-template-columns:16px minmax(0,1fr) 16px;justify-content:stretch;gap:4px;width:224px;padding:4px 9px;color:var(--text);background:var(--overlay-medium, rgba(127, 127, 127, .18))}.add-pill-plus{justify-self:center;transition:transform .2s var(--ease-spring)}.add-pill-btn.is-open .add-pill-plus{transform:rotate(45deg)}.add-pill-label{min-width:0;overflow:hidden;color:var(--text);text-align:center;white-space:nowrap;opacity:0;transition:opacity .12s ease}.add-pill-btn.is-open .add-pill-label{opacity:1;transition-delay:.04s}.add-pill-chevron{justify-self:center;opacity:0;transition:opacity .12s ease}.add-pill-btn.is-open .add-pill-chevron{opacity:1;transition-delay:.04s}.composer-menu--add{left:0;width:224px;min-width:0;max-width:none;max-height:none;overflow:visible}.composer-menu--add .menu-item{font-size:var(--t2c-font-control, 12px)}.composer-menu--add .menu-item .grow{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-menu--add .add-menu-parent>svg:last-child{flex:none;color:var(--text-faint)}.add-menu-sub{position:absolute;bottom:100%;left:calc(100% + 6px);width:min(268px,calc(100cqw - 16px));min-width:0;max-width:calc(100cqw - 16px);padding:5px;background:var(--bg-card, var(--bg));border:var(--border-width, 1px) solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);animation:pop .16s var(--ease-spring)}.add-menu-sub.left{left:auto;right:calc(100% + 6px)}.add-menu-sub.stacked{left:0;right:auto}.add-menu-search{display:flex;align-items:center;gap:7px;margin:1px 1px 4px;padding:7px 8px;border-radius:var(--radius-md);background:var(--overlay-light, rgba(127, 127, 127, .08));color:var(--text-faint)}.add-menu-search:focus-within{box-shadow:0 0 0 var(--focus-ring) var(--sel-line)}.add-menu-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--text);font:inherit;font-size:var(--t2c-font-control, 12px)}.add-menu-search input::placeholder{color:var(--text-faint)}.add-menu-sub-scroll{max-height:286px;overflow-y:auto;overscroll-behavior:contain}.add-menu-result{align-items:flex-start!important}.add-menu-result>svg{flex:none;margin-top:1px;color:var(--text-muted)}.add-menu-result-main{display:flex;min-width:0;flex-direction:column;gap:1px}.add-menu-result-title,.add-menu-result-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-menu-result-title{color:inherit}.add-menu-result-meta{color:var(--text-faint);font-size:var(--t2c-font-meta, 11px)}.add-menu-empty{padding:10px 9px;color:var(--text-faint);font-size:var(--t2c-font-meta, 11px)}.add-menu-section-gap{margin-top:4px;border-top:var(--border-width, 1px) solid var(--border)}.composer-menu--mode .mode-normal-row{display:flex;align-items:center;gap:2px}.composer-menu--mode .mode-normal-row>.menu-item{width:auto;flex:1 1 auto;min-width:0}.composer-menu--mode .mode-normal-row>.mode-agent-trigger{flex:0 1 auto;max-width:50%;gap:3px;color:var(--text-faint)}.composer-menu--mode .mode-normal-row>.mode-agent-trigger[aria-expanded=true]{background:var(--menu-hover);color:var(--text)}.mode-agent-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.t2c-row [data-cmenu],.t2c-row .t2c-pill,.t2c-row .composer-chip,.t2c-pill-label,.t2c-row .composer-chip .pill-marquee{min-width:0}.t2c-pill svg{flex-shrink:0}@container (max-width: 480px){.t2c-pill-label,.t2c-row .composer-chip .pill-marquee,.t2c-row .composer-chip .pill-ultra-tag{display:none}.mode-pill-btn.is-open .t2c-pill-label,.model-pill-btn.is-open .pill-marquee{display:block}.model-pill-btn.is-open .pill-ultra-tag{display:inline}}.t2c-row .composer-chip.model-pill-btn--native .pill-marquee{display:inline-block;max-width:128px;text-overflow:ellipsis}.t2c-row .composer-chip.model-pill-btn--native .pill-ultra-tag{display:inline}@container (max-width: 600px){.t2c-row:has(>.add-pill-wrap.is-open)>.t2c-capsule-peer:not(.add-pill-wrap),.t2c-row:has(>.mode-pill-wrap.is-open)>.t2c-capsule-peer:not(.mode-pill-wrap),.t2c-row:has(>.model-pill-wrap.is-open)>.t2c-capsule-peer:not(.model-pill-wrap),.t2c-row:has(>.add-pill-wrap.is-open)>.t2c-collapse-on-capsule-open,.t2c-row:has(>.mode-pill-wrap.is-open)>.t2c-collapse-on-capsule-open,.t2c-row:has(>.model-pill-wrap.is-open)>.t2c-collapse-on-capsule-open{display:none}}@media(prefers-reduced-motion:reduce){.t2c-pill.mode-pill-btn,.t2c-pill.add-pill-btn{transition:background var(--duration-fast, .15s)}.add-pill-plus,.add-pill-label,.add-pill-chevron{transition:none}.add-menu-sub{animation:none}}.t2c-ctxring{position:relative;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.t2c-ctxring-btn{display:inline-flex;padding:0;border:none;background:none;color:inherit;cursor:pointer}.t2c-ctxring svg{transform:rotate(-90deg)}.t2c-ctxring-track{fill:none;stroke:var(--overlay-light, rgba(127, 127, 127, .2));stroke-width:3}.t2c-ctxring-fill{fill:none;stroke:var(--accent-ink);stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset .35s var(--ease-out, ease)}.t2c-ctxring[data-warn] .t2c-ctxring-fill{stroke:var(--danger, #e0564b)}.t2c-ctxring-pop span[data-warn]{color:var(--danger, #e0564b)}.t2c-ctxring-pop{position:absolute;bottom:calc(100% + 8px);left:0;z-index:30;display:none;flex-direction:column;gap:7px;padding:11px 12px;width:300px;max-width:calc(100vw - 32px);box-sizing:border-box;background:var(--bg-card, var(--bg));border:var(--border-width, 1px) solid var(--border);border-radius:var(--radius-md, 12px);box-shadow:var(--card-shadow, 0 8px 28px rgba(0, 0, 0, .18));font-size:var(--ui-font-meta, 12px);font-family:var(--font-ui);color:var(--text-muted);text-align:left}.t2c-ctxring.is-open .t2c-ctxring-pop{display:flex}.t2c-cu-head{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;width:100%;padding:0;border:none;background:none;font:inherit;color:var(--text-muted);cursor:pointer}.t2c-cu-title{color:var(--text-muted)}.t2c-cu-num{margin-left:auto;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}.t2c-ctxring .t2c-cu-chev{flex-shrink:0;color:var(--text-faint);transform:none;transition:transform .15s var(--ease-out, ease)}.t2c-cu-head[aria-expanded=true] .t2c-cu-chev{transform:rotate(90deg)}.t2c-cu-bar{display:flex;height:6px;border-radius:var(--radius-pill, 999px);overflow:hidden;background:var(--overlay-light, rgba(127, 127, 127, .16))}.t2c-cu-bar>span{flex-shrink:0;height:100%}.t2c-cu-bar>span+span:not(.t2c-cu-buffer){margin-left:1px}.t2c-cu-bar>.t2c-cu-buffer{margin-left:auto}.t2c-cu-buffer{background:repeating-linear-gradient(-45deg,var(--overlay-medium, rgba(127, 127, 127, .3)) 0 2px,transparent 2px 4px)}.t2c-cu-detail{display:flex;flex-direction:column;gap:6px}.t2c-cu-legend{max-height:clamp(140px,calc(100vh - 420px),360px);overflow-y:auto}.t2c-ctxring-pop .t2c-ctxinfo-files{max-height:120px;overflow-y:auto}.t2c-cu-legend{display:flex;flex-direction:column;gap:3px}.t2c-cu-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto 44px;align-items:center;gap:7px}.t2c-cu-row>i{width:9px;height:9px;border-radius:2px}.t2c-cu-row>i.is-free{border:var(--border-width, 1px) solid var(--border);box-sizing:border-box}.t2c-cu-row>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.t2c-cu-row>span:nth-child(n+3){text-align:right;font-variant-numeric:tabular-nums;color:var(--text-faint);white-space:nowrap}.t2c-cu-row.is-sub{font-size:var(--ui-font-caption, 11px)}.t2c-cu-row.is-sub>span:nth-child(2){padding-left:8px;color:var(--text-faint)}.t2c-cu-foot{display:flex;align-items:center;gap:8px}.t2c-cu-foot>.t2c-ctxring-compact{margin-left:auto}.t2c-ctxinfo-src{color:var(--text-faint);font-size:var(--ui-font-caption, 11px)}.t2c-ctxinfo-files{display:flex;flex-direction:column;gap:2px;padding-top:6px;border-top:var(--border-width, 1px) solid var(--border);font-size:var(--ui-font-caption, 11px)}.t2c-ctxinfo-label{color:var(--text-faint)}.t2c-ctxinfo-file{font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.t2c-ctxinfo-file.dim{font-family:inherit;opacity:.6}.t2c-ctxring-compact{flex-shrink:0;padding:3px 9px;border:none;border-radius:var(--radius-pill, 999px);background:var(--overlay-light, rgba(127, 127, 127, .12));color:var(--text);font-size:var(--ui-font-caption, 11px);font-family:var(--font-ui);cursor:pointer}.t2c-ctxring-compact:hover{background:var(--overlay-medium, rgba(127, 127, 127, .2))}.t2c-cu-limits{display:flex;flex-direction:column;gap:8px;padding-top:9px;border-top:var(--border-width, 1px) solid var(--border)}.t2c-cu-limits-title{display:flex;align-items:center;gap:6px;color:var(--text-faint)}.t2c-cu-limit{display:flex;flex-direction:column;gap:5px}.t2c-cu-limit-line{display:flex;align-items:baseline;gap:8px;white-space:nowrap;font-variant-numeric:tabular-nums}.t2c-cu-limit-line>:nth-child(2){margin-left:auto}.t2c-cu-limit-name{color:var(--text)}.t2c-cu-limit-reset{color:var(--text-faint);overflow:hidden;text-overflow:ellipsis}.t2c-cu-limit .t2c-cu-bar{height:5px}.t2c-cu-limit .t2c-cu-bar>span{background:var(--model-tag-blue)}.t2c-cu-limit .t2c-cu-bar[data-warn]>span{background:var(--danger, #e0564b)}.t2c-iconbtn.recording{color:var(--danger, #e5484d);animation:t2c-mic-pulse 1s ease-in-out infinite}@keyframes t2c-mic-pulse{0%,to{opacity:1}50%{opacity:.45}}.t2c-voicebar{display:flex;align-items:center;gap:8px;flex:1;min-width:0;animation:t2c-voicebar-in .22s var(--ease-out, ease)}@keyframes t2c-voicebar-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:none}}.t2c-voicewave{flex:1;min-width:0;height:30px;display:block}.t2c-voicelabel{flex-shrink:0;font-size:var(--ui-font-meta, 12px);color:var(--text-muted);font-family:var(--font-ui)}.t2c-voicetime{flex-shrink:0;min-width:34px;text-align:right;font-size:var(--ui-font-caption, 11px);color:var(--text-muted);font-variant-numeric:tabular-nums}.t2c-voicestop{flex-shrink:0;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-pill, 999px);background:var(--overlay-light, rgba(127, 127, 127, .1));color:var(--text);cursor:pointer;transition:background var(--duration-fast, .15s)}.t2c-voicestop:hover{background:var(--overlay-medium, rgba(127, 127, 127, .2))}.t2c-steer{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border-radius:var(--radius-md, 12px);background:var(--overlay-light, rgba(127, 127, 127, .07));border:1px solid transparent;animation:t2c-steer-in .18s var(--ease-out, ease)}@keyframes t2c-steer-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.t2c-steer{animation:none}}.t2c-steer-item{display:flex;align-items:center;gap:7px;min-width:0;padding:2px 0}.t2c-steer-ic{flex-shrink:0;color:var(--text-faint, var(--text-muted))}.t2c-steer-text{flex:1;min-width:0;font-size:var(--ui-font-meta, 12px);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t2c-steer-x{flex-shrink:0;background:none;border:none;cursor:pointer;color:var(--text-faint, var(--text-muted));padding:2px;line-height:0;border-radius:var(--radius-pill, 999px)}.t2c-steer-x:hover{color:var(--text);background:var(--overlay-light, rgba(127, 127, 127, .1))}.t2c-steer-foot{display:flex;align-items:center;gap:8px;margin-top:2px}.t2c-steer-hint{flex:1;min-width:0;font-size:var(--ui-font-caption, 11px);color:var(--text-faint, var(--text-muted));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t2c-steer-now{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border:none;border-radius:var(--radius-pill, 999px);cursor:pointer;background:var(--overlay-light, rgba(127, 127, 127, .12));color:var(--text);font-size:var(--ui-font-caption, 11px);font-family:var(--font-ui);transition:background var(--duration-fast, .15s)}.t2c-steer-now:hover{background:var(--overlay-medium, rgba(127, 127, 127, .2))}@container (max-width: 360px){.t2c-refrow{margin-bottom:6px}.t2c-reflabel{display:none}.t2c-refrow .attach-chip{min-width:0;max-width:min(100%,240px)}.t2c-stop{width:32px;padding-inline:0;justify-content:center}.t2c-stop-label{display:none}}.t2c-pill.mode-pill-btn[data-danger]{color:var(--danger);background:var(--danger-light)}.t2c-pill.mode-pill-btn[data-danger]:hover,.t2c-pill.mode-pill-btn[data-danger].is-open{background:color-mix(in srgb,var(--danger) 16%,transparent)}.t2c-apv{position:relative;display:flex;flex-direction:column;padding:4px 12px 10px;background:var(--t2c-card-surface, var(--bg-card, var(--bg)));border:var(--border-width, 1px) solid var(--border);border-radius:var(--radius-md, 12px);box-shadow:var(--card-shadow, 0 6px 22px rgba(0, 0, 0, .08));animation:t2c-steer-in .18s var(--ease-out, ease)}@media(prefers-reduced-motion:reduce){.t2c-apv{animation:none}}.t2c-apv-head{display:flex;align-items:center;gap:6px;width:100%;padding:6px 0;border:none;background:none;cursor:pointer;text-align:left;color:var(--text-muted);font-family:var(--font-ui);font-size:var(--ui-font-meta, 12px)}.t2c-apv-ic{flex-shrink:0;color:var(--accent-ink)}.t2c-apv-title{flex:1;min-width:0;font-weight:600;color:var(--text)}.t2c-apv-chev{flex-shrink:0;transition:transform var(--duration-fast, .15s)}.t2c-apv-chev.is-collapsed{transform:rotate(-90deg)}.t2c-apv-head:has(.is-collapsed){padding-bottom:0}.t2c-apv-body{max-height:min(40vh,400px);overflow-y:auto}.t2c-apv .t2c-apv-body>.approval-card,.t2c-apv .t2c-apv-body>.inquiry-card,.t2c-apv .t2c-apv-body>.plan-decision{border-color:transparent;box-shadow:none;background:transparent;padding:0;opacity:1}.t2c-apv .approval-card .approval-title{margin-bottom:6px}.t2c-apv .approval-diff{max-height:min(24vh,220px)}.t2c-apv .approval-actions{position:sticky;bottom:0;z-index:1;padding:8px 0 2px;margin-top:-2px;background:var(--t2c-card-surface, var(--bg-card, var(--bg)));transition:opacity var(--duration-fast, .15s)}.t2c-apv-body:is(.is-arming,.is-sent) :is(.approval-actions,.inquiry-opts,.inquiry-input){pointer-events:none;opacity:.55}.t2c-apv .inquiry-opts,.t2c-apv .inquiry-input{transition:opacity var(--duration-fast, .15s)}.t2c-apv .plan-decision-title{display:flex;align-items:center;gap:7px;margin-bottom:8px;font-size:var(--ui-font-body, 13px);font-weight:600;color:var(--text)}.t2c-apv .plan-decision-title svg{flex-shrink:0;color:var(--accent-ink)}.t2c-apv textarea.plan-edit{display:block;width:100%;box-sizing:border-box;min-height:140px;max-height:30vh;margin-bottom:8px;padding:8px 10px;font-family:var(--font-mono);font-size:var(--ui-font-meta, 12px);color:var(--text);background:var(--bg-card);border:var(--border-width, 1px) solid var(--border);border-radius:var(--radius-sm, 8px);resize:vertical;outline:none}.t2c-apv textarea.plan-edit:focus{border-color:var(--accent-ink)}.t2c-apv .plan-decision .inquiry-input{margin-top:8px}.t2c-apv-from{font-size:var(--ui-font-caption, 11px);color:var(--text-faint, var(--text-muted));margin-bottom:2px}.t2c-apv-rest{display:flex;flex-direction:column;gap:1px;max-height:108px;overflow-y:auto;margin:0 -6px 8px;padding-bottom:6px;border-bottom:var(--border-width, 1px) solid var(--overlay-medium, rgba(127, 127, 127, .16))}.t2c-apv-row{display:flex;align-items:center;gap:8px;min-width:0;width:100%;padding:4px 6px;border:none;border-radius:var(--radius-sm, 8px);background:none;cursor:pointer;text-align:left;font-family:var(--font-ui);font-size:var(--ui-font-meta, 12px);color:var(--text-muted)}.t2c-apv-row:hover{background:var(--overlay-light, rgba(127, 127, 127, .1));color:var(--text)}.t2c-apv-row-from{flex-shrink:0;color:var(--text-faint, var(--text-muted))}.t2c-apv-row-name{flex-shrink:0;font-weight:600;color:var(--text)}.t2c-apv-row-preview{flex:1;min-width:0;font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t2c-apv-row-ic{flex-shrink:0;color:var(--accent-ink)}.t2c-apv-row-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t2c-field{display:flex;align-items:flex-end;gap:8px}.t2c-field>.t2c-ta{flex:1 1 auto;min-width:0;align-self:center}.t2c-card--phone .t2c-row{margin-top:6px}.t2c-card--phone .t2c-send{width:42px;height:42px}.t2c-card--phone .t2c-send svg{width:21px;height:21px}.t2c-card--phone .t2c-stop{width:42px;height:42px;padding-inline:0;justify-content:center}.t2c-card--phone .t2c-stop svg{width:14px;height:14px}.t2c-card--phone .t2c-stop-label{display:none}.t2c-card--phone .t2c-iconbtn{position:relative;width:38px;height:38px}.t2c-card--phone .t2c-iconbtn svg{width:19px;height:19px}.t2c-card--phone .add-pill-wrap{flex:0 0 auto}.t2c-card--phone .t2c-pill.add-pill-btn:not(.is-open){position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;overflow:visible}.t2c-card--phone .add-pill-btn:not(.is-open) .add-pill-plus{width:20px;height:20px}.t2c-card--phone .add-pill-btn:not(.is-open) :is(.add-pill-label,.add-pill-chevron){display:none}.t2c-card--phone :is(.t2c-iconbtn,.add-pill-btn:not(.is-open)):after{content:"";position:absolute;inset:-2px}.t2c-card--phone .t2c-ctxring-btn:after{content:"";position:absolute;inset:-9px -3px}.t2c-card--phone .model-pill-wrap{flex:0 1 auto;min-width:0}.t2c-card--phone .t2c-row .model-pill-wrap .composer-chip.model-pill-btn,.t2c-card--phone .t2c-pill.mode-pill-btn{box-sizing:border-box;height:42px;margin-block:-2px;max-width:100%;padding-inline:11px;border-block:3.5px solid transparent;background-clip:padding-box}.t2c-card--phone .t2c-row .composer-chip.model-pill-btn .pill-marquee{display:inline-block;max-width:none;text-overflow:ellipsis}.t2c-card--phone .t2c-row .composer-chip.model-pill-btn .pill-ultra-tag{display:inline}.t2c-card--phone .model-pill-wrap.is-plan .composer-chip.model-pill-btn:not(.is-max){color:var(--accent-ink);background-color:color-mix(in srgb,var(--accent-ink) 16%,transparent)}.t2c-card--phone .model-pill-wrap.is-danger .composer-chip.model-pill-btn{color:var(--danger);background-color:var(--danger-light)}.compact-chat-picker{display:none}@container (max-width: 520px){.t2-chat-col .newchat-pickers{flex-direction:row;align-items:stretch;gap:8px;padding-inline:12px}.newchat-pickers>.engine-picker{flex:1 1 0;min-width:0;animation:none}.newchat-pickers>.engine-picker>.engine-picker-bar,.newchat-pickers>.engine-picker>.engine-picker-hint{display:none}.newchat-pickers .compact-chat-picker{position:relative;display:flex;align-items:center;gap:7px;width:100%;min-width:0;min-height:38px;padding:8px 10px;box-sizing:border-box;border-radius:var(--radius-md, 12px);background:var(--bg-card);color:var(--text);font-size:var(--ui-font-body, 13px);line-height:1.4;cursor:pointer}.compact-chat-picker:hover{background:var(--overlay-medium)}.compact-chat-picker:focus-within{outline:var(--focus-ring) solid var(--accent-ink);outline-offset:2px}.compact-chat-picker-kind{flex:none;color:var(--text-muted);font-size:var(--ui-font-meta, 12px)}.compact-chat-picker-icon{display:inline-flex;flex:none}.compact-chat-picker-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.compact-chat-picker>svg{flex:none;color:var(--text-muted)}.compact-chat-picker select{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}}@container (max-width: 360px){.t2-chat-col .newchat-pickers{flex-direction:column;gap:6px}}.agent-select-strip .agent-pill-index{display:inline-flex;align-items:center;justify-content:center;flex:none;min-width:14px;height:14px;margin-right:4px;padding:0 3px;border-radius:var(--radius-pill, 999px);background:var(--overlay-medium);color:var(--text-muted);font-size:var(--ui-font-caption, 11px);font-weight:600;line-height:1}.agent-select-strip .agent-select-sep{flex:none;width:1px;height:20px;margin:0 4px;background:var(--border)}.t2d-sections{display:flex;flex-direction:column;margin-top:4.5px}.t2d-toggle{gap:6px}.t2d-name{flex:0 1 auto}.t2d-status{flex:0 1 auto;min-width:0;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-caption, 11px);font-weight:400;letter-spacing:0;text-transform:none;color:var(--text-faint, var(--text-muted))}.t2d-status[data-tone=warn]{color:var(--warning, var(--text-muted))}.t2d-emoji{display:inline-flex;width:1em;justify-content:center;font-size:var(--ui-font-body, 13px);line-height:1}.t2d-empty{padding:4.5px 6px 6px 30px;color:var(--text-faint, var(--text-muted));font-size:var(--ui-font-meta, 12px)}@media(pointer:coarse){.t2d-section .t2s-srow-menu{opacity:.7}}.runloc-pill:disabled{cursor:default;opacity:1}.runloc-status{flex:none;font-size:var(--ui-font-caption, 11px);color:var(--text-faint, var(--text-muted));white-space:nowrap}.runloc-status[data-tone=warn]{color:var(--warning, var(--text-muted))}.newchat-projectbar-inner:has(>.runloc),.hp-projectbar:has(>.runloc){flex-wrap:wrap;gap:6px}