pisper 0.6.14 → 0.6.15

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 (197) hide show
  1. package/bin/pisper.mjs +5 -1
  2. package/lib/executor-node.mjs +590 -0
  3. package/lib/npm-update.mjs +2 -0
  4. package/package.json +5 -5
  5. package/web/.vite/manifest.json +852 -856
  6. package/web/assets/{AppDialog-DrhCZm1r.js → AppDialog-CgJEhcYw.js} +1 -1
  7. package/web/assets/{AppOverlays-CxgReqGn.js → AppOverlays-BBlYyb_U.js} +1 -1
  8. package/web/assets/{AppSelect-BGVBQRP1.js → AppSelect-BD6RAaJ5.js} +1 -1
  9. package/web/assets/{AssetsPage-CKK-byQY.js → AssetsPage-D3F4T0_j.js} +1 -1
  10. package/web/assets/BoardPage-CO7nU2Mw.js +3 -0
  11. package/web/assets/BotAvatar-CNL-APwP.js +1 -0
  12. package/web/assets/ChannelsPage-CsRbj9St.js +1 -0
  13. package/web/assets/{ChatAppearancePage-BhqRLf-2.js → ChatAppearancePage-Sc1V75I3.js} +1 -1
  14. package/web/assets/{ChatHistoryPage-DBsNyGYj.js → ChatHistoryPage-BT0mIaDN.js} +1 -1
  15. package/web/assets/ChatPage-C-hswZf9.js +553 -0
  16. package/web/assets/ConfigPage-DH2d8YGn.js +5 -0
  17. package/web/assets/{DesktopWindowControls-DCtIkpTs.js → DesktopWindowControls-Bo5vvIFH.js} +1 -1
  18. package/web/assets/{FeaturePage-Bkt1wWVg.js → FeaturePage-B3wCvGpC.js} +1 -1
  19. package/web/assets/{FileAttachmentPreview-Cnmi_2U-.js → FileAttachmentPreview-D8YqjbeC.js} +1 -1
  20. package/web/assets/{FloatingWidgets-BIJSFz34.js → FloatingWidgets-Dz_T7XWC.js} +1 -1
  21. package/web/assets/FocusRuntimeControls-hYDoXwg7.js +1 -0
  22. package/web/assets/{GitDiffViewer-rjt5_KOt.js → GitDiffViewer-CBju_Sj4.js} +3 -3
  23. package/web/assets/ManageProjectsDialog-Dtb2K7BK.js +1 -0
  24. package/web/assets/{MarkdownMessage-yl-PSRAz.js → MarkdownMessage-BDztlYIy.js} +1 -1
  25. package/web/assets/{McpPage-D6GyZCpt.js → McpPage-DQ6AILOH.js} +1 -1
  26. package/web/assets/MemoryPage-CK4evs_P.js +1 -0
  27. package/web/assets/{MobileNavigation-DcBH2I9Y.js → MobileNavigation-BICCops3.js} +1 -1
  28. package/web/assets/MobileViewportStabilizer-uKI4Zp7f.js +1 -0
  29. package/web/assets/{MorePage-BBfiQbiP.js → MorePage-DuML7bhr.js} +1 -1
  30. package/web/assets/NewBotDialog--2DSe9Sy.js +1 -0
  31. package/web/assets/{NewFolderDialog-BinpbTs8.js → NewFolderDialog-S-Qzjzfu.js} +1 -1
  32. package/web/assets/{PageHeader-D_J-19ni.js → PageHeader-B78dHJed.js} +1 -1
  33. package/web/assets/{PhoneDrawer-CwxDkWZQ.js → PhoneDrawer-DHRBi4XA.js} +1 -1
  34. package/web/assets/PhoneMenuButton-BjDV-dPl.js +1 -0
  35. package/web/assets/PhoneTopBar-BuyzXL4Z.js +1 -0
  36. package/web/assets/PluginsPage-Cd9bu2AS.js +1 -0
  37. package/web/assets/{SafeModePrompt-CLyt-z14.js → SafeModePrompt-BnoccbWI.js} +1 -1
  38. package/web/assets/SchedulesPage-DUhUUQP5.js +1 -0
  39. package/web/assets/SessionBrowserPane-B3weAiaB.js +2 -0
  40. package/web/assets/SessionContextPanel-BtxUlk9m.js +2 -0
  41. package/web/assets/SessionHome-ByiFmH18.js +1 -0
  42. package/web/assets/SessionInspector-VKOz4Rxs.js +1 -0
  43. package/web/assets/SessionShell-BsDAwWHd.js +1 -0
  44. package/web/assets/{SettingsSidebar-IqsOv5h1.js → SettingsSidebar-B-COw6Uw.js} +1 -1
  45. package/web/assets/{ShortcutHelpDialog-DKDAF94g.js → ShortcutHelpDialog-DquhK-Uh.js} +1 -1
  46. package/web/assets/{ShortcutKeys-DQFnMnX1.js → ShortcutKeys-BgwCWvNY.js} +1 -1
  47. package/web/assets/{SidebarUpdateStatus-Cbwy5ii9.js → SidebarUpdateStatus-Ci0ugb91.js} +1 -1
  48. package/web/assets/{SkillsPage-DTOzYSaS.js → SkillsPage-B46uoO_g.js} +1 -1
  49. package/web/assets/{TaskProcessesPane-DRFmGkE3.js → TaskProcessesPane-CI_5lWbf.js} +1 -1
  50. package/web/assets/{TaskTerminalView-DWNACXyI.js → TaskTerminalView-C2acHnAH.js} +1 -1
  51. package/web/assets/{TerminalPanel-QEt-SRiM.js → TerminalPanel-BAQ2VwKg.js} +1 -1
  52. package/web/assets/{WebDesktopPet-4CDch3gC.js → WebDesktopPet-D3bdxKPz.js} +1 -1
  53. package/web/assets/{WorkflowsPage-AMKQBlPo.js → WorkflowsPage-Dp1PRKQb.js} +1 -1
  54. package/web/assets/WorkspacePicker-BJhBGRH0.js +1 -0
  55. package/web/assets/accordion-CiJMkjqX.js +1 -0
  56. package/web/assets/{api-BO7LAPSQ.js → api-CKJOip3Q.js} +1 -1
  57. package/web/assets/{app-update-DKWPHTUY.js → app-update-yPQVXuw5.js} +1 -1
  58. package/web/assets/{approval-confirm-ByiI22Wo.js → approval-confirm-Cv754IjO.js} +1 -1
  59. package/web/assets/board-messages-CIYKjAla.js +1 -0
  60. package/web/assets/board-projects-wd79Rqt5.js +2 -0
  61. package/web/assets/channels-messages-KabR1HOR.js +1 -0
  62. package/web/assets/chat-api-Bvirerdj.js +1 -0
  63. package/web/assets/{client-store-6GNC8uyK.js → client-store-BaTctJrB.js} +1 -1
  64. package/web/assets/collapsible-Dcoy-qnz.js +1 -0
  65. package/web/assets/config-search-KYVClDpx.js +1 -0
  66. package/web/assets/{dialog-CUhFgsVd.js → dialog-Cb_sjjQV.js} +1 -1
  67. package/web/assets/{collapsible-DMaUQRX4.js → dist-DUSSw9eQ.js} +1 -1
  68. package/web/assets/events-CZTn9wa-.js +1 -0
  69. package/web/assets/file-diff-GxOMJkLj.js +1 -0
  70. package/web/assets/folder-paths--euvEC5U.js +1 -0
  71. package/web/assets/{hosts-1yQREdMi.js → hosts-BRPznOHU.js} +1 -1
  72. package/web/assets/i18n-DEs6BBob.js +1 -0
  73. package/web/assets/{index-CsE52ydO.js → index-C5aKcTGw.js} +2 -2
  74. package/web/assets/index-DD2H2OOC.css +2 -0
  75. package/web/assets/message-circle-question-mark-D7ehy_mi.js +1 -0
  76. package/web/assets/{mobile-remote-fallback-NJCTBu85.js → mobile-remote-fallback-DG_urwIg.js} +1 -1
  77. package/web/assets/mount-app-BdXRP9D-.js +9 -0
  78. package/web/assets/navigation-DkcKi1_5.js +1 -0
  79. package/web/assets/new-task-uLEgjs2Z.js +1 -0
  80. package/web/assets/{palette-navigation-ByC1_QS5.js → palette-navigation-HbVGltCo.js} +1 -1
  81. package/web/assets/{permission-rules-api-BoJ_1W-m.js → permission-rules-api-C9oRUm6Z.js} +1 -1
  82. package/web/assets/{pick-system-directory-B_RJmP26.js → pick-system-directory-B__qKy-X.js} +1 -1
  83. package/web/assets/placements-Bn0vPyEI.js +2 -0
  84. package/web/assets/{popover--UmYQ9yB.js → popover-CiVxYUEU.js} +1 -1
  85. package/web/assets/public-9meoHs0K.js +4 -0
  86. package/web/assets/public-D6X148yH.js +2 -0
  87. package/web/assets/public-DenVz3gW.js +2 -0
  88. package/web/assets/{public-components-DYGekkA7.js → public-components-BfHcj0Pn.js} +1 -1
  89. package/web/assets/public-diff-BqcNo4lt.js +1 -0
  90. package/web/assets/public-events-DCyxz5zX.js +1 -0
  91. package/web/assets/public-flags-BOI2nkm4.js +1 -0
  92. package/web/assets/public-launch-D0t4Hqf5.js +1 -0
  93. package/web/assets/public-sidebar-CdxAohEH.js +1 -0
  94. package/web/assets/react-bits-BsPlLi8F.css +1 -0
  95. package/web/assets/routes-DIeaqWVc.js +1 -0
  96. package/web/assets/runtime-capabilities-CHYOF_hE.js +1 -0
  97. package/web/assets/{runtime-capabilities-store-C2Qv7uDP.js → runtime-capabilities-store-D2d_9z0D.js} +1 -1
  98. package/web/assets/{safe-mode-instance-BiAPYJ2-.js → safe-mode-instance-hnF1BJYr.js} +1 -1
  99. package/web/assets/safe-mode-sentinel-CPmhLLXT.js +1 -0
  100. package/web/assets/{session-change-summary-api-DgRT32uh.js → session-change-summary-api-DmmNGbP7.js} +1 -1
  101. package/web/assets/{session-home-BktP6sGF.js → session-home-BAFT2Fk1.js} +1 -1
  102. package/web/assets/{session-organization-api-DFu3Chto.js → session-organization-api-Bs8DdxU1.js} +1 -1
  103. package/web/assets/{session-scope-DQPNgQMm.js → session-scope-XRVRtwow.js} +1 -1
  104. package/web/assets/{session-tree-actions-DfO8QHBO.js → session-tree-actions-Dzj7hrvM.js} +1 -1
  105. package/web/assets/{session-tree-summary-BwYRdui2.js → session-tree-summary-BXVKYODc.js} +1 -1
  106. package/web/assets/settings-navigation-DiP_AM1C.js +1 -0
  107. package/web/assets/{shortcuts-Cvp9WD9O.js → shortcuts-IA6Uq_O6.js} +1 -1
  108. package/web/assets/side-chat-context-CZ4IqNxt.js +7 -0
  109. package/web/assets/sidebar-Do_8-Hyh.js +2 -0
  110. package/web/assets/sidebar-store-DuRlD5qg.js +1 -0
  111. package/web/assets/{speech-session-DK_09Wky.js → speech-session-D_W5Ulli.js} +1 -1
  112. package/web/assets/{startup-queries-6Oztqpto.js → startup-queries-DeNu46nT.js} +1 -1
  113. package/web/assets/storage-DH3bQdy6.js +1 -0
  114. package/web/assets/tool-labels-ghvpPFmc.js +1 -0
  115. package/web/assets/{use-i18n-B5p-Kzvz.js → use-i18n-CUS2_EGy.js} +1 -1
  116. package/web/assets/use-mobile-C2tPBAza.js +1 -0
  117. package/web/assets/use-studio-actions-CYnwfaOn.js +3 -0
  118. package/web/assets/useNewProjectPicker-CacWA0IS.js +1 -0
  119. package/web/assets/usePhoneShell-cYrS53S8.js +1 -0
  120. package/web/assets/useSessionRowActions-DtunSg_Q.js +1 -0
  121. package/web/assets/useSidebarModel-6sqN4VA5.js +1 -0
  122. package/web/assets/web-preview-Dgng80ZD.js +1 -0
  123. package/web/assets/{web-preview-events-DQchQHt3.js → web-preview-events-JGegs4uF.js} +1 -1
  124. package/web/assets/workflow-messages-Cj35aJZc.js +1 -0
  125. package/web/assets/workspace-order-store-BuPmheRT.js +1 -0
  126. package/web/index.html +2 -2
  127. package/web/assets/BoardPage-vwv5vTDm.js +0 -3
  128. package/web/assets/ChannelsPage-L-wcVDSN.js +0 -1
  129. package/web/assets/ChatPage-DS0euFxR.js +0 -553
  130. package/web/assets/ConfigPage-pOzONr8e.js +0 -5
  131. package/web/assets/DispatchOverlay-n-qbkOP-.js +0 -1
  132. package/web/assets/FocusRuntimeControls-C7NIdpV4.js +0 -1
  133. package/web/assets/LaunchConsole-DtxzpXJo.js +0 -3
  134. package/web/assets/ManageProjectsDialog-RiFg3h1p.js +0 -1
  135. package/web/assets/MemoryPage-Dsx_6JpI.js +0 -1
  136. package/web/assets/MobileViewportStabilizer-OtwVmIPm.js +0 -1
  137. package/web/assets/PhoneMenuButton-B0AwvqEo.js +0 -1
  138. package/web/assets/PhoneTopBar-Dw0mIaWC.js +0 -1
  139. package/web/assets/PluginsPage-BzxPAX26.js +0 -1
  140. package/web/assets/QuickPromptIdeas-Cd3SwBqS.js +0 -1
  141. package/web/assets/SchedulesPage-Cbgl5v_8.js +0 -1
  142. package/web/assets/SessionBrowserPane-CB7jn-MS.js +0 -2
  143. package/web/assets/SessionContextPanel-CNmAp0ed.js +0 -2
  144. package/web/assets/SessionHome-Ck_daJT0.js +0 -1
  145. package/web/assets/SessionInspector-cSzwsc4b.js +0 -1
  146. package/web/assets/SessionShell-BOZ7h0yz.js +0 -1
  147. package/web/assets/WorkspacePicker-B9vYtfab.js +0 -1
  148. package/web/assets/board-launch-BmmPYZe8.js +0 -1
  149. package/web/assets/board-messages-BOWWyhz_.js +0 -1
  150. package/web/assets/board-projects-BU9fZB1q.js +0 -1
  151. package/web/assets/channels-messages-DazltGVm.js +0 -1
  152. package/web/assets/chat-api-DkdyVQY9.js +0 -1
  153. package/web/assets/config-search-HBKDuym0.js +0 -1
  154. package/web/assets/events-DrAPv0se.js +0 -1
  155. package/web/assets/file-text-N9JICX6E.js +0 -1
  156. package/web/assets/folder-paths-DQTpuGh9.js +0 -1
  157. package/web/assets/i18n-CHmr7GzM.js +0 -1
  158. package/web/assets/index-CfTBR7Rs.css +0 -2
  159. package/web/assets/list-checks-B5Jl4aiO.js +0 -1
  160. package/web/assets/mount-app-DfSFF0xv.js +0 -9
  161. package/web/assets/navigation-EoDz3gT8.js +0 -1
  162. package/web/assets/new-task-C3wuHTor.js +0 -1
  163. package/web/assets/placements-CqwqXPTp.js +0 -2
  164. package/web/assets/public-diff-DK-VNIar.js +0 -1
  165. package/web/assets/public-fqyTjQ0F.js +0 -2
  166. package/web/assets/public-jQjEc6OO.js +0 -1
  167. package/web/assets/public-launch-CT_m9KWo.js +0 -1
  168. package/web/assets/react-bits-DQli9s7O.css +0 -1
  169. package/web/assets/routes-Da0OHSy6.js +0 -1
  170. package/web/assets/runtime-capabilities-4_ZwLBqF.js +0 -1
  171. package/web/assets/safe-mode-sentinel-Ccu3Vmta.js +0 -1
  172. package/web/assets/session-workspaces-BWTBYaGT.js +0 -1
  173. package/web/assets/settings-navigation-_yUm71Uk.js +0 -1
  174. package/web/assets/shield-B1ruzHd0.js +0 -1
  175. package/web/assets/side-chat-context-BfOm4dFp.js +0 -7
  176. package/web/assets/sidebar-BLeRyb55.js +0 -2
  177. package/web/assets/sidebar-commands-ZA1UOA_F.js +0 -1
  178. package/web/assets/sidebar-store-1-aNPlDu.js +0 -1
  179. package/web/assets/storage-BY6wEHPw.js +0 -1
  180. package/web/assets/tool-labels-BUEvdohv.js +0 -1
  181. package/web/assets/use-mobile-DauOEda6.js +0 -1
  182. package/web/assets/use-studio-actions-D6c_pSJK.js +0 -3
  183. package/web/assets/useBoardItems-CzEbgTLJ.js +0 -1
  184. package/web/assets/useFleetSystemInfo-Bd8zJIFa.js +0 -1
  185. package/web/assets/useNewProjectPicker-DQY1X_ua.js +0 -1
  186. package/web/assets/useNow-Bxn4_OW9.js +0 -1
  187. package/web/assets/usePagePrimaryAction-CWPC0C_f.js +0 -1
  188. package/web/assets/usePhoneShell-Bvb7m-m4.js +0 -1
  189. package/web/assets/useSessionListQuery-D44XZfGr.js +0 -2
  190. package/web/assets/useSessionRowActions-Cr6SUAeE.js +0 -1
  191. package/web/assets/useSidebarModel-CWED0rsw.js +0 -1
  192. package/web/assets/wand-sparkles-CvEBNUFz.js +0 -1
  193. package/web/assets/web-preview-CqwSe9Zn.js +0 -1
  194. package/web/assets/workflow-messages-CMCQrs5q.js +0 -1
  195. package/web/assets/workspace-order-store-RYWvGOeR.js +0 -1
  196. /package/web/assets/{AnimatedList-D8fxDNGr.js → AnimatedList-DB5vqafO.js} +0 -0
  197. /package/web/assets/{ClickSpark-DmnEAJNI.js → ClickSpark-B1Rn7ZwL.js} +0 -0
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-i18n-B5p-Kzvz.js";import{t as i}from"./x-07u4-129.js";import{t as a}from"./label-CVWjEcfV.js";import{t as o}from"./button-CCcCN8tE.js";import{a as s,i as c,l,n as u,t as d}from"./dialog-CUhFgsVd.js";import{t as f}from"./input-CPw-zkYh.js";var p=e(t(),1),m=n();function h({dialog:e,onClose:t,onFinish:n,busy:h=!1}){let{t:g}=r(),[_,v]=(0,p.useState)(e?.value||``),y=(0,p.useRef)(null),[b,x]=(0,p.useState)(!1),[S,C]=(0,p.useState)(``),w=(0,p.useRef)(null),T=(0,p.useRef)(e);T.current=e;let E=h||b;(0,p.useEffect)(()=>()=>{T.current=null},[]),(0,p.useEffect)(()=>{v(e?.value||``),C(``),x(!1),w.current=null},[e]);let D=async r=>{if(r.preventDefault(),!e||E||w.current===e||e.type===`prompt`&&!_.trim())return;let i=e;w.current=e,x(!0),C(``);try{let r=n(e.type!==`prompt`||_.trim());r&&(await r,T.current===i&&t())}catch{T.current===i&&C(g(`common:ui.actionFailed`))}finally{w.current===i&&(w.current=null),T.current===i&&x(!1)}};return(0,m.jsx)(d,{open:!!e,busy:E,onOpenChange:e=>!e&&t(),children:e&&(0,m.jsx)(c,{showCloseButton:!1,size:`compact`,surface:`confirmation`,scrollMode:`body`,className:`gap-0 p-6`,onOpenAutoFocus:t=>{e.type===`prompt`&&(t.preventDefault(),y.current?.focus(),y.current?.select())},children:(0,m.jsxs)(`form`,{className:`flex min-h-0 flex-col`,onSubmit:e=>void D(e),children:[(0,m.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-3`,children:[(0,m.jsx)(`div`,{className:`min-w-0`,children:(0,m.jsx)(l,{className:`text-[15px] leading-6 font-semibold tracking-[-.01em]`,children:e.title})}),(0,m.jsx)(o,{type:`button`,variant:`ghost`,size:`toolbar`,"aria-label":g(`common:ui.closeDialog`),title:g(`common:ui.closeDialog`),className:`size-7 shrink-0 px-0 text-content-muted`,disabled:E,onClick:t,children:(0,m.jsx)(i,{className:`size-4`})})]}),(0,m.jsxs)(u,{children:[(0,m.jsx)(s,{className:e.message?`mt-1.5 text-[13px] leading-5 whitespace-pre-line text-content-muted`:`sr-only`,children:e.message||e.title}),e.type===`prompt`&&(0,m.jsxs)(a,{className:`mt-4 block text-[13px] leading-5 font-medium text-content`,children:[e.inputLabel||g(`common:ui.name`),(0,m.jsx)(f,{ref:y,className:`mt-2 h-[34px] px-2.5 text-[13px]`,disabled:E,value:_,placeholder:e.placeholder,maxLength:e.maxLength||120,onChange:e=>v(e.target.value)})]}),S&&(0,m.jsx)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:S})]}),(0,m.jsxs)(`div`,{className:`mt-6 flex shrink-0 justify-end gap-2`,children:[(0,m.jsx)(o,{type:`button`,variant:`secondary`,size:`dialogAction`,disabled:E,onClick:t,children:g(`common:ui.cancel`)}),(0,m.jsx)(o,{type:`submit`,size:`dialogAction`,loading:E,variant:e.tone===`danger`?`destructive`:`default`,disabled:e.type===`prompt`&&!_.trim(),children:e.confirmLabel||g(`common:ui.confirm`)})]})]})})})}export{h as AppDialog};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-i18n-CUS2_EGy.js";import{t as i}from"./x-07u4-129.js";import{t as a}from"./label-CVWjEcfV.js";import{t as o}from"./button-CCcCN8tE.js";import{a as s,i as c,l,n as u,t as d}from"./dialog-Cb_sjjQV.js";import{t as f}from"./input-CPw-zkYh.js";var p=e(t(),1),m=n();function h({dialog:e,onClose:t,onFinish:n,busy:h=!1}){let{t:g}=r(),[_,v]=(0,p.useState)(e?.value||``),y=(0,p.useRef)(null),[b,x]=(0,p.useState)(!1),[S,C]=(0,p.useState)(``),w=(0,p.useRef)(null),T=(0,p.useRef)(e);T.current=e;let E=h||b;(0,p.useEffect)(()=>()=>{T.current=null},[]),(0,p.useEffect)(()=>{v(e?.value||``),C(``),x(!1),w.current=null},[e]);let D=async r=>{if(r.preventDefault(),!e||E||w.current===e||e.type===`prompt`&&!_.trim())return;let i=e;w.current=e,x(!0),C(``);try{let r=n(e.type!==`prompt`||_.trim());r&&(await r,T.current===i&&t())}catch{T.current===i&&C(g(`common:ui.actionFailed`))}finally{w.current===i&&(w.current=null),T.current===i&&x(!1)}};return(0,m.jsx)(d,{open:!!e,busy:E,onOpenChange:e=>!e&&t(),children:e&&(0,m.jsx)(c,{showCloseButton:!1,size:`compact`,surface:`confirmation`,scrollMode:`body`,className:`gap-0 p-6`,onOpenAutoFocus:t=>{e.type===`prompt`&&(t.preventDefault(),y.current?.focus(),y.current?.select())},children:(0,m.jsxs)(`form`,{className:`flex min-h-0 flex-col`,onSubmit:e=>void D(e),children:[(0,m.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-3`,children:[(0,m.jsx)(`div`,{className:`min-w-0`,children:(0,m.jsx)(l,{className:`text-[15px] leading-6 font-semibold tracking-[-.01em]`,children:e.title})}),(0,m.jsx)(o,{type:`button`,variant:`ghost`,size:`toolbar`,"aria-label":g(`common:ui.closeDialog`),title:g(`common:ui.closeDialog`),className:`size-7 shrink-0 px-0 text-content-muted`,disabled:E,onClick:t,children:(0,m.jsx)(i,{className:`size-4`})})]}),(0,m.jsxs)(u,{children:[(0,m.jsx)(s,{className:e.message?`mt-1.5 text-[13px] leading-5 whitespace-pre-line text-content-muted`:`sr-only`,children:e.message||e.title}),e.type===`prompt`&&(0,m.jsxs)(a,{className:`mt-4 block text-[13px] leading-5 font-medium text-content`,children:[e.inputLabel||g(`common:ui.name`),(0,m.jsx)(f,{ref:y,className:`mt-2 h-[34px] px-2.5 text-[13px]`,disabled:E,value:_,placeholder:e.placeholder,maxLength:e.maxLength||120,onChange:e=>v(e.target.value)})]}),S&&(0,m.jsx)(`p`,{role:`alert`,className:`mt-3 text-sm text-danger`,children:S})]}),(0,m.jsxs)(`div`,{className:`mt-6 flex shrink-0 justify-end gap-2`,children:[(0,m.jsx)(o,{type:`button`,variant:`secondary`,size:`dialogAction`,disabled:E,onClick:t,children:g(`common:ui.cancel`)}),(0,m.jsx)(o,{type:`submit`,size:`dialogAction`,loading:E,variant:e.tone===`danger`?`destructive`:`default`,disabled:e.type===`prompt`&&!_.trim(),children:e.confirmLabel||g(`common:ui.confirm`)})]})]})})})}export{h as AppDialog};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-i18n-B5p-Kzvz.js";import{t as i}from"./useQuery-DdcpUQhO.js";import{o as a}from"./startup-queries-6Oztqpto.js";import{i as o}from"./runtime-capabilities-4_ZwLBqF.js";import{t as s}from"./runtime-capabilities-store-C2Qv7uDP.js";import{t as c}from"./createLucideIcon-Cd-3GVxJ.js";import{t as l}from"./circle-alert-DCChabnT.js";import{t as u}from"./loader-circle-BOwQzHB-.js";import{t as ee}from"./message-square-SKjZyY3v.js";import{t as te}from"./plus-fQbSqB1n.js";import{t as d}from"./search-D0mqDaf_.js";import{t as ne}from"./square-terminal-BVG6cUT1.js";import{t as re}from"./tag-CqkeJlBf.js";import{t as ie}from"./utils-C8uzG5AZ.js";import{t as ae}from"./kbd-CAufZTkl.js";import{C as oe}from"./events-DrAPv0se.js";import{s as f}from"./shortcuts-Cvp9WD9O.js";import{t as se}from"./chat-api-DkdyVQY9.js";import{a as ce}from"./format-DMJQzoZ7.js";import{a as le,i as ue,l as de,t as fe}from"./dialog-CUhFgsVd.js";import{t as pe}from"./useOverlayFocusReturn-NkxBSSjb.js";var me=c(`sun-moon`,[[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715`,key:`xlf6rm`}],[`path`,{d:`M16 12a4 4 0 0 0-4-4`,key:`6vsxu`}],[`path`,{d:`m19 5-1.256 1.256`,key:`1yg6a6`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}]]),p=e(t(),1),m=n(),h=[`sessions`,`labels`,`actions`,`pages`];function he(e){let t=(e||``).replace(/[\\/]+$/,``);return t.slice(Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`))+1)}function g({navigation:e,onClose:t,onNavigate:n,onOpenSession:c,onNewChat:g,onToggleTheme:_}){let{t:v,language:y}=r(),b=f(`primaryAction`),x=f(`toggleTerminal`),S=(0,p.useId)(),ge=pe(!0),C=(0,p.useRef)(null),w=(0,p.useRef)(null),T=(0,p.useRef)(!1),E=(0,p.useRef)(!1),D=(0,p.useRef)({x:-1,y:-1}),[O,_e]=(0,p.useState)(oe),k=O.trim(),ve=s(e=>e.capabilities),A=!!window.pisperDesktop?.terminalProfiles&&o(ve,`terminal`),j=i(a(`sessions`)),{isError:M,refetch:N}=j,P=(0,p.useMemo)(()=>j.data?.sessions||[],[j.data]),[F,I]=(0,p.useState)([]),[L,R]=(0,p.useState)(!1),[z,B]=(0,p.useState)(!1),[ye,be]=(0,p.useState)(0),[V,H]=(0,p.useState)(null),[U,W]=(0,p.useState)(``),[G,K]=(0,p.useState)(``),[q,J]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(B(!1),I([]),!k){R(!1);return}let e=new AbortController;R(!0);let t=window.setTimeout(()=>{se.searchSessionTreeLabels(k,12,e.signal).then(t=>{e.signal.aborted||(I(t.labels||[]),R(!1))},()=>{e.signal.aborted||(B(!0),R(!1))})},250);return()=>{e.abort(),window.clearTimeout(t)}},[k,ye]);let Y={actions:v(`navigation:appOverlays.actions`),pages:v(`navigation:appOverlays.pages`),labels:v(`navigation:appOverlays.labels`),sessions:v(`navigation:appOverlays.agentsAndSessions`)},xe=(0,p.useMemo)(()=>{let t=k.toLocaleLowerCase(y),r=(...e)=>!t||e.some(e=>String(e||``).toLocaleLowerCase(y).includes(t)),i=[],a=v(`navigation:appOverlays.newTask`);r(a,v(`navigation:appOverlays.newChat`),v(`navigation:appOverlays.actions`))&&i.push({id:`action:new-chat`,group:`actions`,Icon:te,label:a,hint:v(`navigation:appOverlays.actions`),shortcut:b,run:g});let o=v(`navigation:appOverlays.toggleTheme`);_&&r(o,v(`navigation:appOverlays.actions`),`theme`)&&i.push({id:`action:toggle-theme`,group:`actions`,Icon:me,label:o,hint:v(`navigation:appOverlays.actions`),run:_});let s=v(`navigation:pageHeader.toggleTerminal`);A&&r(s,v(`navigation:appOverlays.actions`),`terminal`)&&i.push({id:`action:toggle-terminal`,group:`actions`,Icon:ne,label:s,hint:v(`navigation:appOverlays.actions`),shortcut:x,run:()=>{window.dispatchEvent(new Event(`pisper:toggle-terminal`))}});for(let[t,a]of e)for(let[e,o,s]of a)r(o,t,e)&&i.push({id:`page:${e}`,group:`pages`,Icon:s,label:o,hint:t,run:()=>n(e)});let u=e=>{let t=Date.parse(e);return Number.isFinite(t)?new Intl.DateTimeFormat(y,{dateStyle:`medium`,timeStyle:`short`}).format(t):v(`navigation:appOverlays.unknownTime`)};for(let e of F){let t=u(e.sessionCreated||e.sessionModified),n=u(e.nodeTimestamp);i.push({id:`label:${e.sessionId}:${e.entryId}`,group:`labels`,Icon:re,label:e.label,hint:e.sessionName||v(`navigation:appOverlays.untitledChat`),meta:v(`navigation:appOverlays.labelResultTimes`,{sessionTime:t,nodeTime:n}),title:e.summary||e.label,run:()=>c(e.sessionId,e.entryId,e.active)})}z&&i.push({id:`retry:labels`,group:`labels`,Icon:l,label:v(`navigation:appOverlays.searchLabelsFailed`),hint:v(`common:pageTemplate.retry`),run:()=>be(e=>e+1),keepOpen:!0});let d=0;for(let e of[...P].sort((e,t)=>Date.parse(t.modified)-Date.parse(e.modified)))if(r(e.name,e.firstMessage)&&(i.push({id:`session:${e.id}`,group:`sessions`,Icon:ee,label:e.name||v(`navigation:appOverlays.untitledChat`),tag:!e.projectless&&he(e.cwd)||void 0,title:e.cwd||void 0,hint:ce(e.modified,y),run:()=>c(e.id)}),++d>=8))break;return M&&i.push({id:`retry:sessions`,group:`sessions`,Icon:l,label:v(`navigation:appOverlays.loadChatsFailed`),hint:v(`common:pageTemplate.retry`),run:()=>N(),keepOpen:!0}),h.flatMap(e=>i.filter(t=>t.group===e))},[k,y,F,z,e,n,g,c,_,P,M,N,v,A,x,b]),X=q?.query===O?q.entries:xe,Z=Math.max(0,X.findIndex(e=>e.id===V)),Q=X[Z];(0,p.useEffect)(()=>{w.current?.querySelector(`[aria-selected="true"]`)?.scrollIntoView({block:`nearest`})},[V]);let Se=async e=>{if(!(!e||E.current)){E.current=!0,J(null),W(e.id),K(``);try{await e.run(),e.keepOpen||t()}catch{K(e.group===`labels`?v(`navigation:appOverlays.openLabeledTurnFailed`):v(`navigation:appOverlays.openResultFailed`))}finally{E.current=!1,W(``),C.current?.focus()}}},Ce=e=>{if(e.nativeEvent.isComposing||T.current||e.keyCode===229)return;if(E.current){e.preventDefault();return}let t=e=>{J(null),H(X[e]?.id??null)};if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let n=e.key===`ArrowDown`?1:-1;t(X.length?(Z+n+X.length)%X.length:0)}else if(e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey){let n=X.flatMap((e,t)=>t===0||e.group!==X[t-1].group?[t]:[]);if(n.length<2)return;e.preventDefault(),t(n[(n.findIndex(e=>X[e].group===Q?.group)+(e.shiftKey?-1:1)+n.length)%n.length])}else e.key===`Enter`&&(e.preventDefault(),Se(Q))},we=e=>{let t=k?e.toLocaleLowerCase(y).indexOf(k.toLocaleLowerCase(y)):-1;return t<0?e:(0,m.jsxs)(m.Fragment,{children:[e.slice(0,t),(0,m.jsx)(`mark`,{className:`bg-transparent font-semibold text-foreground`,children:e.slice(t,t+k.length)}),e.slice(t+k.length)]})},$=L||j.isPending;return(0,m.jsx)(fe,{open:!0,onOpenChange:e=>!e&&!E.current&&t(),children:(0,m.jsxs)(ue,{showCloseButton:!1,"aria-busy":!!U,"data-command-palette":!0,onCloseAutoFocus:ge,onEscapeKeyDown:e=>{(T.current||E.current)&&e.preventDefault()},onPointerDownOutside:e=>{E.current&&e.preventDefault()},className:`command-palette top-[max(16px,min(11vh,calc((100dvh-min(560px,90dvh))/2)))]! flex w-[min(620px,calc(100vw-32px))]! max-w-none! translate-y-0! flex-col gap-0 overflow-hidden rounded-[var(--r-lg)] border border-stroke bg-solid p-0 text-sm shadow-float ring-0 max-[650px]:w-[calc(100vw-16px)]!`,children:[(0,m.jsx)(de,{className:`sr-only`,children:v(`navigation:appOverlays.commandPalette`)}),(0,m.jsx)(le,{className:`sr-only`,children:v(`navigation:appOverlays.searchPagesChatsOrActions`)}),(0,m.jsxs)(`label`,{className:`flex min-h-[52px] shrink-0 items-center gap-2.5 border-b border-stroke-soft px-4 text-content-muted`,children:[(0,m.jsx)(d,{className:`size-[18px] shrink-0`,strokeWidth:1.75,"aria-hidden":`true`}),(0,m.jsx)(`input`,{ref:C,autoFocus:!0,role:`combobox`,"aria-label":v(`navigation:appOverlays.searchPagesChatsOrActions`),"aria-autocomplete":`list`,"aria-expanded":`true`,"aria-controls":S,"aria-activedescendant":Q?`${S}-${Z}`:void 0,className:`h-[52px] min-w-0 flex-1 border-0 bg-transparent text-base text-content caret-focus outline-none placeholder:text-content-muted`,value:O,readOnly:!!U,onChange:e=>{_e(e.target.value),H(null),J(null),K(``)},onCompositionStart:()=>{T.current=!0},onCompositionEnd:()=>{T.current=!1},onKeyDown:Ce,placeholder:v(`navigation:appOverlays.searchPagesChatsOrActions`)}),U&&(0,m.jsx)(u,{className:`size-4 animate-spin`,"aria-hidden":`true`})]}),U&&(0,m.jsx)(`span`,{role:`status`,className:`sr-only`,children:U.startsWith(`label:`)?v(`navigation:appOverlays.locatingLabel`):v(`common:pageTemplate.loading`)}),G&&(0,m.jsx)(`div`,{role:`alert`,className:`border-b border-stroke-soft px-4 py-2 text-sm text-content`,children:G}),(0,m.jsxs)(`div`,{id:S,ref:w,className:`max-h-[min(440px,max(120px,calc(90dvh-104px)))] overflow-y-auto overscroll-contain px-2 pb-2`,role:`listbox`,"aria-busy":$,"aria-label":v(`navigation:appOverlays.commandPalette`),onPointerMove:e=>{let t=D.current;D.current={x:e.clientX,y:e.clientY},e.pointerType!==`touch`&&X.length&&(e.clientX!==t.x||e.clientY!==t.y)&&q?.query!==O&&J({query:O,entries:X})},onPointerLeave:()=>{D.current={x:-1,y:-1},J(null)},onPointerCancel:()=>J(null),children:[h.map(e=>{let t=X.filter(t=>t.group===e);return t.length?(0,m.jsxs)(`div`,{role:`group`,"aria-label":Y[e],className:`-mx-2 px-2 [&+&]:border-t [&+&]:border-stroke-soft`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2 px-2.5 pt-2.5 pb-1 text-xs text-content-muted`,children:[Y[e],e===`labels`&&L&&(0,m.jsx)(u,{className:`size-3 animate-spin`,"aria-hidden":`true`})]}),t.map(e=>{let t=X.indexOf(e);return(0,m.jsxs)(`button`,{id:`${S}-${t}`,type:`button`,tabIndex:-1,role:`option`,"aria-selected":t===Z,"aria-disabled":!!U,"aria-busy":U===e.id,title:e.title,className:ie(`palette-item flex min-h-9 w-full items-center gap-2.5 rounded-[var(--r-md)] px-2.5 py-1.5 text-left text-sm text-content outline-none hover:bg-surface-hover focus-visible:bg-surface-hover aria-disabled:opacity-40 max-[650px]:min-h-11 pointer-coarse:min-h-11 [&_svg]:text-content-muted`,t===Z&&`bg-surface-hover`),onPointerMove:()=>{E.current||H(e.id)},onMouseDown:e=>e.preventDefault(),onClick:()=>void Se(e),children:[U===e.id?(0,m.jsx)(u,{className:`size-4 shrink-0 animate-spin`,"aria-hidden":`true`}):(0,m.jsx)(e.Icon,{className:`size-4 shrink-0`,strokeWidth:1.75,"aria-hidden":`true`}),(0,m.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,m.jsxs)(`span`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,m.jsx)(`span`,{className:`min-w-0 truncate`,children:we(e.label)}),e.tag&&(0,m.jsx)(`span`,{className:`min-w-0 shrink-[2] truncate font-mono text-xs text-content-muted`,children:e.tag})]}),e.meta&&(0,m.jsx)(`span`,{className:`block truncate text-xs text-content-muted`,children:e.meta})]}),e.shortcut?(0,m.jsx)(ae,{"aria-hidden":`true`,className:`shrink-0 border-transparent bg-transparent text-content-muted shadow-none pointer-coarse:hidden`,children:e.shortcut}):(0,m.jsx)(`span`,{className:`max-w-28 shrink-0 truncate text-right text-xs text-content-muted tabular-nums`,children:e.hint})]},e.id)})]},e):null}),$&&(0,m.jsx)(`div`,{role:`status`,className:`px-2.5 py-2 text-sm text-content-muted`,children:v(`navigation:appOverlays.searchingLabels`)}),!X.length&&!$&&(0,m.jsx)(`div`,{role:`status`,className:`px-3 py-6 text-center text-sm text-content-muted`,children:v(`navigation:appOverlays.noMatchingResults`)})]}),(0,m.jsxs)(`div`,{"aria-hidden":`true`,"data-palette-hints":!0,className:`flex h-9 flex-none items-center gap-3 border-t border-stroke-soft px-4 text-xs text-content-muted pointer-coarse:hidden max-[650px]:hidden`,children:[(0,m.jsxs)(`span`,{children:[`↑↓ `,v(`navigation:appOverlays.hintSelect`)]}),(0,m.jsxs)(`span`,{children:[`↵ `,v(`navigation:appOverlays.hintOpen`)]}),(0,m.jsxs)(`span`,{children:[`Tab `,v(`navigation:appOverlays.hintGroups`)]}),(0,m.jsxs)(`span`,{className:`ml-auto`,children:[`Esc `,v(`navigation:appOverlays.hintClose`)]})]})]})})}export{g as CommandPalette};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-i18n-CUS2_EGy.js";import{t as i}from"./useQuery-DdcpUQhO.js";import{o as a}from"./startup-queries-DeNu46nT.js";import{i as o}from"./runtime-capabilities-CHYOF_hE.js";import{t as s}from"./runtime-capabilities-store-D2d_9z0D.js";import{t as c}from"./createLucideIcon-Cd-3GVxJ.js";import{t as l}from"./circle-alert-DCChabnT.js";import{t as u}from"./loader-circle-BOwQzHB-.js";import{t as ee}from"./message-square-SKjZyY3v.js";import{t as te}from"./plus-fQbSqB1n.js";import{t as d}from"./search-D0mqDaf_.js";import{t as ne}from"./square-terminal-BVG6cUT1.js";import{t as re}from"./tag-CqkeJlBf.js";import{t as ie}from"./utils-C8uzG5AZ.js";import{t as ae}from"./kbd-CAufZTkl.js";import{w as oe}from"./events-CZTn9wa-.js";import{s as f}from"./shortcuts-IA6Uq_O6.js";import{t as se}from"./chat-api-Bvirerdj.js";import{a as ce}from"./format-DMJQzoZ7.js";import{a as le,i as ue,l as de,t as fe}from"./dialog-Cb_sjjQV.js";import{t as pe}from"./useOverlayFocusReturn-NkxBSSjb.js";var me=c(`sun-moon`,[[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715`,key:`xlf6rm`}],[`path`,{d:`M16 12a4 4 0 0 0-4-4`,key:`6vsxu`}],[`path`,{d:`m19 5-1.256 1.256`,key:`1yg6a6`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}]]),p=e(t(),1),m=n(),h=[`sessions`,`labels`,`actions`,`pages`];function he(e){let t=(e||``).replace(/[\\/]+$/,``);return t.slice(Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`))+1)}function g({navigation:e,onClose:t,onNavigate:n,onOpenSession:c,onNewChat:g,onToggleTheme:_}){let{t:v,language:y}=r(),b=f(`primaryAction`),x=f(`toggleTerminal`),S=(0,p.useId)(),ge=pe(!0),C=(0,p.useRef)(null),w=(0,p.useRef)(null),T=(0,p.useRef)(!1),E=(0,p.useRef)(!1),D=(0,p.useRef)({x:-1,y:-1}),[O,_e]=(0,p.useState)(oe),k=O.trim(),ve=s(e=>e.capabilities),A=!!window.pisperDesktop?.terminalProfiles&&o(ve,`terminal`),j=i(a(`sessions`)),{isError:M,refetch:N}=j,P=(0,p.useMemo)(()=>j.data?.sessions||[],[j.data]),[F,I]=(0,p.useState)([]),[L,R]=(0,p.useState)(!1),[z,B]=(0,p.useState)(!1),[ye,be]=(0,p.useState)(0),[V,H]=(0,p.useState)(null),[U,W]=(0,p.useState)(``),[G,K]=(0,p.useState)(``),[q,J]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(B(!1),I([]),!k){R(!1);return}let e=new AbortController;R(!0);let t=window.setTimeout(()=>{se.searchSessionTreeLabels(k,12,e.signal).then(t=>{e.signal.aborted||(I(t.labels||[]),R(!1))},()=>{e.signal.aborted||(B(!0),R(!1))})},250);return()=>{e.abort(),window.clearTimeout(t)}},[k,ye]);let Y={actions:v(`navigation:appOverlays.actions`),pages:v(`navigation:appOverlays.pages`),labels:v(`navigation:appOverlays.labels`),sessions:v(`navigation:appOverlays.agentsAndSessions`)},xe=(0,p.useMemo)(()=>{let t=k.toLocaleLowerCase(y),r=(...e)=>!t||e.some(e=>String(e||``).toLocaleLowerCase(y).includes(t)),i=[],a=v(`navigation:appOverlays.newTask`);r(a,v(`navigation:appOverlays.newChat`),v(`navigation:appOverlays.actions`))&&i.push({id:`action:new-chat`,group:`actions`,Icon:te,label:a,hint:v(`navigation:appOverlays.actions`),shortcut:b,run:g});let o=v(`navigation:appOverlays.toggleTheme`);_&&r(o,v(`navigation:appOverlays.actions`),`theme`)&&i.push({id:`action:toggle-theme`,group:`actions`,Icon:me,label:o,hint:v(`navigation:appOverlays.actions`),run:_});let s=v(`navigation:pageHeader.toggleTerminal`);A&&r(s,v(`navigation:appOverlays.actions`),`terminal`)&&i.push({id:`action:toggle-terminal`,group:`actions`,Icon:ne,label:s,hint:v(`navigation:appOverlays.actions`),shortcut:x,run:()=>{window.dispatchEvent(new Event(`pisper:toggle-terminal`))}});for(let[t,a]of e)for(let[e,o,s]of a)r(o,t,e)&&i.push({id:`page:${e}`,group:`pages`,Icon:s,label:o,hint:t,run:()=>n(e)});let u=e=>{let t=Date.parse(e);return Number.isFinite(t)?new Intl.DateTimeFormat(y,{dateStyle:`medium`,timeStyle:`short`}).format(t):v(`navigation:appOverlays.unknownTime`)};for(let e of F){let t=u(e.sessionCreated||e.sessionModified),n=u(e.nodeTimestamp);i.push({id:`label:${e.sessionId}:${e.entryId}`,group:`labels`,Icon:re,label:e.label,hint:e.sessionName||v(`navigation:appOverlays.untitledChat`),meta:v(`navigation:appOverlays.labelResultTimes`,{sessionTime:t,nodeTime:n}),title:e.summary||e.label,run:()=>c(e.sessionId,e.entryId,e.active)})}z&&i.push({id:`retry:labels`,group:`labels`,Icon:l,label:v(`navigation:appOverlays.searchLabelsFailed`),hint:v(`common:pageTemplate.retry`),run:()=>be(e=>e+1),keepOpen:!0});let d=0;for(let e of[...P].sort((e,t)=>Date.parse(t.modified)-Date.parse(e.modified)))if(r(e.name,e.firstMessage)&&(i.push({id:`session:${e.id}`,group:`sessions`,Icon:ee,label:e.name||v(`navigation:appOverlays.untitledChat`),tag:!e.projectless&&he(e.cwd)||void 0,title:e.cwd||void 0,hint:ce(e.modified,y),run:()=>c(e.id)}),++d>=8))break;return M&&i.push({id:`retry:sessions`,group:`sessions`,Icon:l,label:v(`navigation:appOverlays.loadChatsFailed`),hint:v(`common:pageTemplate.retry`),run:()=>N(),keepOpen:!0}),h.flatMap(e=>i.filter(t=>t.group===e))},[k,y,F,z,e,n,g,c,_,P,M,N,v,A,x,b]),X=q?.query===O?q.entries:xe,Z=Math.max(0,X.findIndex(e=>e.id===V)),Q=X[Z];(0,p.useEffect)(()=>{w.current?.querySelector(`[aria-selected="true"]`)?.scrollIntoView({block:`nearest`})},[V]);let Se=async e=>{if(!(!e||E.current)){E.current=!0,J(null),W(e.id),K(``);try{await e.run(),e.keepOpen||t()}catch{K(e.group===`labels`?v(`navigation:appOverlays.openLabeledTurnFailed`):v(`navigation:appOverlays.openResultFailed`))}finally{E.current=!1,W(``),C.current?.focus()}}},Ce=e=>{if(e.nativeEvent.isComposing||T.current||e.keyCode===229)return;if(E.current){e.preventDefault();return}let t=e=>{J(null),H(X[e]?.id??null)};if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let n=e.key===`ArrowDown`?1:-1;t(X.length?(Z+n+X.length)%X.length:0)}else if(e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey){let n=X.flatMap((e,t)=>t===0||e.group!==X[t-1].group?[t]:[]);if(n.length<2)return;e.preventDefault(),t(n[(n.findIndex(e=>X[e].group===Q?.group)+(e.shiftKey?-1:1)+n.length)%n.length])}else e.key===`Enter`&&(e.preventDefault(),Se(Q))},we=e=>{let t=k?e.toLocaleLowerCase(y).indexOf(k.toLocaleLowerCase(y)):-1;return t<0?e:(0,m.jsxs)(m.Fragment,{children:[e.slice(0,t),(0,m.jsx)(`mark`,{className:`bg-transparent font-semibold text-foreground`,children:e.slice(t,t+k.length)}),e.slice(t+k.length)]})},$=L||j.isPending;return(0,m.jsx)(fe,{open:!0,onOpenChange:e=>!e&&!E.current&&t(),children:(0,m.jsxs)(ue,{showCloseButton:!1,"aria-busy":!!U,"data-command-palette":!0,onCloseAutoFocus:ge,onEscapeKeyDown:e=>{(T.current||E.current)&&e.preventDefault()},onPointerDownOutside:e=>{E.current&&e.preventDefault()},className:`command-palette top-[max(16px,min(11vh,calc((100dvh-min(560px,90dvh))/2)))]! flex w-[min(620px,calc(100vw-32px))]! max-w-none! translate-y-0! flex-col gap-0 overflow-hidden rounded-[var(--r-lg)] border border-stroke bg-solid p-0 text-sm shadow-float ring-0 max-[650px]:w-[calc(100vw-16px)]!`,children:[(0,m.jsx)(de,{className:`sr-only`,children:v(`navigation:appOverlays.commandPalette`)}),(0,m.jsx)(le,{className:`sr-only`,children:v(`navigation:appOverlays.searchPagesChatsOrActions`)}),(0,m.jsxs)(`label`,{className:`flex min-h-[52px] shrink-0 items-center gap-2.5 border-b border-stroke-soft px-4 text-content-muted`,children:[(0,m.jsx)(d,{className:`size-[18px] shrink-0`,strokeWidth:1.75,"aria-hidden":`true`}),(0,m.jsx)(`input`,{ref:C,autoFocus:!0,role:`combobox`,"aria-label":v(`navigation:appOverlays.searchPagesChatsOrActions`),"aria-autocomplete":`list`,"aria-expanded":`true`,"aria-controls":S,"aria-activedescendant":Q?`${S}-${Z}`:void 0,className:`h-[52px] min-w-0 flex-1 border-0 bg-transparent text-base text-content caret-focus outline-none placeholder:text-content-muted`,value:O,readOnly:!!U,onChange:e=>{_e(e.target.value),H(null),J(null),K(``)},onCompositionStart:()=>{T.current=!0},onCompositionEnd:()=>{T.current=!1},onKeyDown:Ce,placeholder:v(`navigation:appOverlays.searchPagesChatsOrActions`)}),U&&(0,m.jsx)(u,{className:`size-4 animate-spin`,"aria-hidden":`true`})]}),U&&(0,m.jsx)(`span`,{role:`status`,className:`sr-only`,children:U.startsWith(`label:`)?v(`navigation:appOverlays.locatingLabel`):v(`common:pageTemplate.loading`)}),G&&(0,m.jsx)(`div`,{role:`alert`,className:`border-b border-stroke-soft px-4 py-2 text-sm text-content`,children:G}),(0,m.jsxs)(`div`,{id:S,ref:w,className:`max-h-[min(440px,max(120px,calc(90dvh-104px)))] overflow-y-auto overscroll-contain px-2 pb-2`,role:`listbox`,"aria-busy":$,"aria-label":v(`navigation:appOverlays.commandPalette`),onPointerMove:e=>{let t=D.current;D.current={x:e.clientX,y:e.clientY},e.pointerType!==`touch`&&X.length&&(e.clientX!==t.x||e.clientY!==t.y)&&q?.query!==O&&J({query:O,entries:X})},onPointerLeave:()=>{D.current={x:-1,y:-1},J(null)},onPointerCancel:()=>J(null),children:[h.map(e=>{let t=X.filter(t=>t.group===e);return t.length?(0,m.jsxs)(`div`,{role:`group`,"aria-label":Y[e],className:`-mx-2 px-2 [&+&]:border-t [&+&]:border-stroke-soft`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2 px-2.5 pt-2.5 pb-1 text-xs text-content-muted`,children:[Y[e],e===`labels`&&L&&(0,m.jsx)(u,{className:`size-3 animate-spin`,"aria-hidden":`true`})]}),t.map(e=>{let t=X.indexOf(e);return(0,m.jsxs)(`button`,{id:`${S}-${t}`,type:`button`,tabIndex:-1,role:`option`,"aria-selected":t===Z,"aria-disabled":!!U,"aria-busy":U===e.id,title:e.title,className:ie(`palette-item flex min-h-9 w-full items-center gap-2.5 rounded-[var(--r-md)] px-2.5 py-1.5 text-left text-sm text-content outline-none hover:bg-surface-hover focus-visible:bg-surface-hover aria-disabled:opacity-40 max-[650px]:min-h-11 pointer-coarse:min-h-11 [&_svg]:text-content-muted`,t===Z&&`bg-surface-hover`),onPointerMove:()=>{E.current||H(e.id)},onMouseDown:e=>e.preventDefault(),onClick:()=>void Se(e),children:[U===e.id?(0,m.jsx)(u,{className:`size-4 shrink-0 animate-spin`,"aria-hidden":`true`}):(0,m.jsx)(e.Icon,{className:`size-4 shrink-0`,strokeWidth:1.75,"aria-hidden":`true`}),(0,m.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,m.jsxs)(`span`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,m.jsx)(`span`,{className:`min-w-0 truncate`,children:we(e.label)}),e.tag&&(0,m.jsx)(`span`,{className:`min-w-0 shrink-[2] truncate font-mono text-xs text-content-muted`,children:e.tag})]}),e.meta&&(0,m.jsx)(`span`,{className:`block truncate text-xs text-content-muted`,children:e.meta})]}),e.shortcut?(0,m.jsx)(ae,{"aria-hidden":`true`,className:`shrink-0 border-transparent bg-transparent text-content-muted shadow-none pointer-coarse:hidden`,children:e.shortcut}):(0,m.jsx)(`span`,{className:`max-w-28 shrink-0 truncate text-right text-xs text-content-muted tabular-nums`,children:e.hint})]},e.id)})]},e):null}),$&&(0,m.jsx)(`div`,{role:`status`,className:`px-2.5 py-2 text-sm text-content-muted`,children:v(`navigation:appOverlays.searchingLabels`)}),!X.length&&!$&&(0,m.jsx)(`div`,{role:`status`,className:`px-3 py-6 text-center text-sm text-content-muted`,children:v(`navigation:appOverlays.noMatchingResults`)})]}),(0,m.jsxs)(`div`,{"aria-hidden":`true`,"data-palette-hints":!0,className:`flex h-9 flex-none items-center gap-3 border-t border-stroke-soft px-4 text-xs text-content-muted pointer-coarse:hidden max-[650px]:hidden`,children:[(0,m.jsxs)(`span`,{children:[`↑↓ `,v(`navigation:appOverlays.hintSelect`)]}),(0,m.jsxs)(`span`,{children:[`↵ `,v(`navigation:appOverlays.hintOpen`)]}),(0,m.jsxs)(`span`,{children:[`Tab `,v(`navigation:appOverlays.hintGroups`)]}),(0,m.jsxs)(`span`,{className:`ml-auto`,children:[`Esc `,v(`navigation:appOverlays.hintClose`)]})]})]})})}export{g as CommandPalette};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-mobile-DauOEda6.js";import{a as i,i as a,n as o,r as s,t as c}from"./select-DD_WO-gs.js";import{t as l}from"./utils-C8uzG5AZ.js";var u=e(t(),1),d=n(),f=`__pisper_empty_value__`;function p({children:e,className:t,disabled:n,onChange:p,value:m,...h}){let g=u.Children.toArray(e).filter(u.isValidElement).map(e=>{let t=e.props.value??e.props.children??``;return{disabled:e.props.disabled,label:e.props.children,value:String(t)||f}}),_=String(m??``)||f;return r()?(0,d.jsxs)(`select`,{"data-slot":`select-trigger`,className:l(`h-11 w-full rounded-sm border border-input bg-panel px-2.5 py-0 text-[14px] font-normal text-foreground shadow-none outline-none focus-visible:border-focus focus-visible:ring-3 focus-visible:ring-focus-ring`,t),value:_,disabled:n,onChange:p,...h,children:[!g.some(e=>e.value===_)&&(0,d.jsx)(`option`,{value:_,hidden:!0}),g.map(e=>(0,d.jsx)(`option`,{value:e.value,disabled:e.disabled,children:e.label},e.value))]}):(0,d.jsxs)(c,{value:_,disabled:n,onValueChange:e=>{p?.({target:{value:e===f?``:e}})},children:[(0,d.jsx)(a,{className:l(`w-full`,t),...h,children:(0,d.jsx)(i,{})}),(0,d.jsx)(o,{className:`min-w-(--radix-select-trigger-width)`,children:g.map(e=>(0,d.jsx)(s,{value:e.value,disabled:e.disabled,children:e.label},e.value))})]})}export{p as t};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-mobile-C2tPBAza.js";import{a as i,i as a,n as o,r as s,t as c}from"./select-DD_WO-gs.js";import{t as l}from"./utils-C8uzG5AZ.js";var u=e(t(),1),d=n(),f=`__pisper_empty_value__`;function p({children:e,className:t,disabled:n,onChange:p,value:m,...h}){let g=u.Children.toArray(e).filter(u.isValidElement).map(e=>{let t=e.props.value??e.props.children??``;return{disabled:e.props.disabled,label:e.props.children,value:String(t)||f}}),_=String(m??``)||f;return r()?(0,d.jsxs)(`select`,{"data-slot":`select-trigger`,className:l(`h-11 w-full rounded-sm border border-input bg-panel px-2.5 py-0 text-[14px] font-normal text-foreground shadow-none outline-none focus-visible:border-focus focus-visible:ring-3 focus-visible:ring-focus-ring`,t),value:_,disabled:n,onChange:p,...h,children:[!g.some(e=>e.value===_)&&(0,d.jsx)(`option`,{value:_,hidden:!0}),g.map(e=>(0,d.jsx)(`option`,{value:e.value,disabled:e.disabled,children:e.label},e.value))]}):(0,d.jsxs)(c,{value:_,disabled:n,onValueChange:e=>{p?.({target:{value:e===f?``:e}})},children:[(0,d.jsx)(a,{className:l(`w-full`,t),...h,children:(0,d.jsx)(i,{})}),(0,d.jsx)(o,{className:`min-w-(--radix-select-trigger-width)`,children:g.map(e=>(0,d.jsx)(s,{value:e.value,disabled:e.disabled,children:e.label},e.value))})]})}export{p as t};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{d as r}from"./i18n-CHmr7GzM.js";import{t as i}from"./use-i18n-B5p-Kzvz.js";import{r as a,t as o}from"./useQuery-DdcpUQhO.js";import{t as s}from"./queryOptions-Dfvzj6n2.js";import{a as c,l,u}from"./api-BO7LAPSQ.js";import{t as d}from"./createLucideIcon-Cd-3GVxJ.js";import{t as f}from"./download-BCfIiuaL.js";import{t as p}from"./external-link-CEQqPcqc.js";import{t as m}from"./file-Bllajneu.js";import{t as h}from"./link-2-mgasYn21.js";import{t as g}from"./paperclip-BCXrwYpb.js";import{t as _}from"./plus-fQbSqB1n.js";import{t as v}from"./refresh-cw-TbWxTY4K.js";import{t as y}from"./trash-2-CNrPOoPR.js";import{t as b}from"./triangle-alert-CE1q54ci.js";import{t as x}from"./x-07u4-129.js";import{t as S}from"./more-pages-D_PnxLN0.js";import{a as ee,c as te,n as ne,o as re,p as ie,r as ae,s as oe,t as se}from"./dropdown-menu-CFIFNaKO.js";import{n as ce,t as C}from"./button-CCcCN8tE.js";import{s as le}from"./shortcuts-Cvp9WD9O.js";import{n as w}from"./format-DMJQzoZ7.js";import{n as T}from"./PageState-Cz6vFMXv.js";import{a as E,i as D,l as O,n as k,o as A,s as j,t as M}from"./dialog-CUhFgsVd.js";import{t as N}from"./input-CPw-zkYh.js";import{a as ue,i as P,n as de,o as fe,r as pe,s as me,t as F}from"./FeaturePage-Bkt1wWVg.js";import{n as I}from"./mobile-runtime-recovery-tbTyacip.js";import{n as L}from"./field-DoLEb0np.js";import{t as R}from"./MarkdownMessage-yl-PSRAz.js";var z=d(`file-image`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`10`,cy:`12`,r:`2`,key:`737tya`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`,key:`wt3hpn`}]]),B=d(`file-play`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z`,key:`1tzo1f`}]]),he=d(`list-filter`,[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]),V=e(t(),1),H=134217728;function ge(e){let t=document.createElement(`a`);t.href=`/api/assets/${encodeURIComponent(e.id)}/download`,t.download=e.name,t.hidden=!0,document.body.append(t),t.click(),t.remove()}function U(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error||Error(`读取资产失败。`)),r.onload=()=>{let e=typeof r.result==`string`?r.result:``,i=e.indexOf(`,`);i<0?n(Error(`资产编码失败。`)):t(e.slice(i+1))},r.readAsDataURL(e)})}function W(){if(typeof window>`u`)return!1;let e=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return!!(window.pisperDesktop?.openAsset||window.__PISPER_MOBILE_APP__&&e)}async function _e(e){let t=window.pisperDesktop?.openAsset,n=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;if(!t&&!(window.__PISPER_MOBILE_APP__&&n))return ge(e),`download`;await I();let r=await fetch(`/api/assets/${encodeURIComponent(e.id)}/download`);if(!r.ok)throw Error(`资产下载失败 (${r.status})`);if((Number(r.headers.get(`content-length`))||0)>H)throw Error(`资产超过 128 MB 原生打开限制。`);let i=await r.blob();if(!i.size||i.size>H)throw Error(`资产内容为空或超过 128 MB 原生打开限制。`);let a=await U(i);return t?await t({name:e.name,data:a}):await n?.(`mobile_open_asset`,{input:{name:e.name,mimeType:e.mimeType||i.type||`application/octet-stream`,data:a}}),`application`}function G(e){if(!e||typeof e!=`object`||Array.isArray(e))throw l();return Object.fromEntries(Object.entries(e))}function K(e,t=!1){if(!(e===void 0&&!t)){if(typeof e!=`string`||t&&!e)throw l();return e}}function ve(e){if(typeof e==`string`)try{let t=new URL(e);return[`http:`,`https:`].includes(t.protocol)?t.href:void 0}catch{return}}function q(e){let t=G(e),n=K(t.id,!0),r=K(t.name,!0),i=K(t.kind,!0);if(t.size!==void 0&&(typeof t.size!=`number`||!Number.isFinite(t.size)||t.size<0))throw l();let a=t.url===void 0?void 0:ve(t.url);if(t.url!==void 0&&!a||i===`link`&&!a)throw l();return{id:n,name:r,kind:i,size:t.size,url:a,mimeType:K(t.mimeType),source:K(t.source),sessionName:K(t.sessionName)}}function ye(e,t){let n=G(e),r=q(n);if(![`text`,`image`,`document`,`file`].includes(r.kind)||r.kind===`text`&&typeof n.text!=`string`||!t&&[`image`,`document`].includes(r.kind)&&typeof n.data!=`string`||n.truncated!==void 0&&typeof n.truncated!=`boolean`)throw l();return{...r,text:K(n.text),data:K(n.data),extension:K(n.extension),truncated:n.truncated}}function be(e={}){return{query:(e.query||``).trim(),kind:e.kind||`all`,sessionId:e.sessionId||``}}var J=e=>`/api/assets/${encodeURIComponent(e)}`,Y=e=>`${J(e)}/download?inline=1`,X={async list(e={},t){let{query:n,kind:r,sessionId:i}=be(e),a=new URLSearchParams;return n&&a.set(`query`,n),r!==`all`&&a.set(`kind`,r===`video`?`file`:r),i&&a.set(`sessionId`,i),c(`/api/assets?${a}`,{signal:t,parse(e){let t=G(e);if(!Array.isArray(t.assets))throw l();let n=t.assets.map(q);return r===`video`?n.filter(e=>e.mimeType?.startsWith(`video/`)):n}})},preview:(e,t)=>c(`${J(e)}/content?preview=1`,{signal:t,parse:e=>ye(e,!0)}),content:(e,t)=>c(`${J(e)}/content`,{signal:t,parse:e=>ye(e,!1)}),async createLink(e){let t=ve(e.url.trim());if(!t)throw new u(r(`assets:assetsPage.invalidLink`),{kind:`protocol`,data:{code:`INVALID_ASSET_URL`}});return c(`/api/assets`,{method:`POST`,body:{kind:`link`,name:e.name,url:t,source:`upload`},parse:q})},remove:e=>c(J(e),{method:`DELETE`,parse(e){if(G(e).deleted!==!0)throw l();return!0}})},Z=n();function xe({onClose:e,onCreated:t}){let{t:n}=i(),[r,a]=(0,V.useState)(``),[o,s]=(0,V.useState)(``),[c,l]=(0,V.useState)(!1),[u,d]=(0,V.useState)(``),f=(0,V.useRef)(!1),p=(0,V.useRef)(!0);return(0,V.useEffect)(()=>(p.current=!0,()=>{p.current=!1}),[]),(0,Z.jsx)(M,{open:!0,busy:c,onOpenChange:t=>{!t&&!f.current&&e()},children:(0,Z.jsx)(D,{size:`compact`,scrollMode:`body`,children:(0,Z.jsxs)(`form`,{className:`flex min-h-0 flex-col gap-4`,onSubmit:async e=>{if(e.preventDefault(),f.current)return;f.current=!0,l(!0),d(``);let n=!1;try{await X.createLink({name:r,url:o}),n=!0}catch(e){p.current&&d(e instanceof Error?e.message:String(e))}finally{f.current=!1,p.current&&l(!1)}n&&t()},"aria-busy":c||void 0,children:[(0,Z.jsxs)(j,{className:`pr-8`,children:[(0,Z.jsx)(O,{children:n(`assets:assetsPage.addLinkAsset`)}),(0,Z.jsx)(E,{children:n(`assets:assetsPage.linksCanBeArchivedOpenedOrAddedToAChatAsContext`)})]}),(0,Z.jsxs)(k,{className:`flex flex-col gap-4`,children:[(0,Z.jsxs)(L,{variant:`control`,children:[n(`assets:assetsPage.name`),(0,Z.jsx)(N,{value:r,disabled:c,onChange:e=>a(e.target.value),placeholder:n(`assets:assetsPage.forExampleOpenAIAPIDocs`)})]}),(0,Z.jsxs)(L,{variant:`control`,children:[`URL`,(0,Z.jsx)(N,{className:`font-mono`,value:o,disabled:c,onChange:e=>s(e.target.value),placeholder:`https://example.com/docs`})]}),u&&(0,Z.jsx)(`p`,{role:`alert`,className:`break-words text-sm text-danger`,children:u})]}),(0,Z.jsxs)(A,{children:[(0,Z.jsx)(C,{variant:`secondary`,size:`dialogAction`,disabled:c,onClick:e,children:n(`assets:assetsPage.cancel`)}),(0,Z.jsxs)(C,{type:`submit`,size:`dialogAction`,loading:c,disabled:c||!o.trim(),children:[(0,Z.jsx)(_,{}),n(c?`assets:assetsPage.adding`:`assets:assetsPage.addLink`)]})]})]})})})}var Q=[`assets`,`list`];function Se(e={}){let t=be(e);return s({queryKey:[...Q,t],queryFn:({signal:e})=>X.list(t,e),staleTime:0,retry:!1})}function Ce(e,t){return s({queryKey:[`assets`,`preview`,e,t],queryFn:({signal:t})=>X.preview(e,t),staleTime:0,gcTime:0,retry:!1})}async function we(e){await e.cancelQueries({queryKey:Q}),await e.invalidateQueries({queryKey:Q})}function Te({asset:e,generation:t,trigger:n,fallback:r,onClose:a,onUse:s,onOpen:c,busy:l,actionError:u}){let{t:d}=i(),h=e.mimeType?.startsWith(`video/`),_=e.kind===`image`||h,v=o({...Ce(e.id,t),enabled:!_&&e.kind!==`link`}),[y,x]=(0,V.useState)(!1),[S,ee]=(0,V.useState)(0),te=/\.md$/i.test(e.name)||e.mimeType===`text/markdown`;return(0,Z.jsx)(M,{open:!0,onOpenChange:e=>{e||a()},children:(0,Z.jsxs)(D,{size:`wide`,scrollMode:`body`,className:`w-[min(96vw,1200px)] max-w-[min(96vw,1200px)]`,onCloseAutoFocus:e=>{e.preventDefault();let t=e=>e?.isConnected&&e.getClientRects().length&&getComputedStyle(e).visibility!==`hidden`,i=t(n)?n:r();t(i)&&i?.focus({preventScroll:!0})},children:[(0,Z.jsxs)(j,{className:`pr-8`,children:[(0,Z.jsx)(O,{className:`break-words leading-6`,children:e.name}),(0,Z.jsx)(E,{className:`font-mono break-words tabular-nums`,children:e.kind===`link`?e.url:`${e.mimeType||``} · ${w(e.size)}`})]}),(0,Z.jsxs)(k,{className:`min-h-[min(240px,30dvh)] rounded-md border border-stroke bg-surface-subtle p-3`,children:[_?y?(0,Z.jsxs)(`div`,{role:`alert`,className:`flex flex-col items-center gap-3 p-4 text-sm`,children:[(0,Z.jsx)(b,{className:`size-5 text-danger`}),(0,Z.jsx)(`p`,{children:d(`assets:assetsPage.mediaFailed`)}),(0,Z.jsx)(C,{variant:`secondary`,onClick:()=>{x(!1),ee(e=>e+1)},children:d(`assets:assetsPage.retry`)})]}):h?(0,Z.jsx)(`video`,{controls:!0,playsInline:!0,preload:`metadata`,className:`mx-auto max-h-[65dvh] w-full object-contain`,src:Y(e.id),onError:()=>x(!0)},S):(0,Z.jsx)(`img`,{className:`mx-auto max-h-[65dvh] max-w-full object-contain`,src:Y(e.id),alt:e.name,onError:()=>x(!0)},S):e.kind===`link`?(0,Z.jsxs)(`a`,{className:`flex items-center gap-2 font-mono text-sm break-all text-content underline underline-offset-4`,href:e.url,target:`_blank`,rel:`noreferrer`,children:[(0,Z.jsx)(p,{className:`shrink-0`}),e.url]}):v.isPending?(0,Z.jsxs)(`div`,{role:`status`,className:`flex items-center justify-center gap-2 p-8 text-sm text-content-muted`,children:[(0,Z.jsx)(ce,{}),d(`assets:assetsPage.loadingPreview`)]}):v.isError?(0,Z.jsxs)(`div`,{role:`alert`,className:`flex flex-wrap items-center gap-2 p-4 text-sm text-danger`,children:[(0,Z.jsx)(b,{className:`size-4 shrink-0`}),(0,Z.jsx)(`span`,{className:`min-w-0 break-words`,children:v.error.message}),(0,Z.jsx)(C,{variant:`secondary`,onClick:()=>{v.refetch()},children:d(`assets:assetsPage.retry`)})]}):v.data?.kind===`text`?te?(0,Z.jsx)(`div`,{className:`mx-auto max-w-3xl text-left`,children:(0,Z.jsx)(R,{children:v.data.text||``})}):(0,Z.jsx)(`div`,{className:`mx-auto max-w-3xl whitespace-pre-wrap font-sans text-base leading-7 [overflow-wrap:anywhere]`,"data-asset-plain":!0,children:v.data.text}):(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-2 p-6 text-center text-sm`,children:[(0,Z.jsx)(m,{className:`size-8 text-content-faint`,strokeWidth:1.5}),(0,Z.jsx)(`strong`,{className:`font-medium break-words`,children:e.name}),(0,Z.jsx)(`p`,{className:`max-w-md text-xs text-content-muted`,children:d(`assets:assetsPage.thisFileTypeCanBeDownloadedSupportedDocumentsCanAlsoBeAddedToAChatForAnalysis`)})]}),v.data?.truncated&&(0,Z.jsx)(`p`,{className:`mt-3 text-xs text-content-muted`,children:d(`assets:assetsPage.previewTruncated`)})]}),u&&(0,Z.jsx)(`p`,{role:`alert`,className:`break-words text-sm text-danger`,children:u}),(0,Z.jsxs)(A,{children:[e.kind!==`link`&&(0,Z.jsxs)(C,{variant:`secondary`,size:`dialogAction`,disabled:!!l,loading:l===`open`,onClick:c,children:[W()?(0,Z.jsx)(p,{}):(0,Z.jsx)(f,{}),W()?d(`assets:assetsPage.openInApplication`):d(`assets:assetsPage.download`)]}),(0,Z.jsxs)(C,{size:`dialogAction`,disabled:!!l,loading:l===`use`,onClick:s,children:[(0,Z.jsx)(g,{}),d(`assets:assetsPage.useInChat`)]})]})]})})}var Ee=[`all`,`image`,`video`,`file`,`link`];function $(e,t){return t(e===`image`?`assets:assetsPage.images`:e===`video`?`assets:assetsPage.videos`:e===`file`?`assets:assetsPage.files`:e===`link`?`assets:assetsPage.links`:`assets:assetsPage.all`)}function De({activeSessionId:e,onBack:t,notify:n,onUse:r,requestConfirm:s}){let{t:c}=i(),l=a(),u=le(`focusSearch`),[d,f]=(0,V.useState)(``),[p,m]=(0,V.useState)(`all`),[g,_]=(0,V.useState)(!1),[y,b]=(0,V.useState)(!1),[w,E]=(0,V.useState)(null),D=(0,V.useRef)(0),O=(0,V.useRef)(null),k=(0,V.useRef)(!0),A=(0,V.useRef)(e);A.current=e;let j=(0,V.useRef)(new Map),[M,N]=(0,V.useState)({}),[P,I]=(0,V.useState)({}),L=g&&!e,R=o({...Se({query:d,kind:p,sessionId:g?e:``}),enabled:!L}),z=L?[]:R.data;(0,V.useEffect)(()=>{k.current=!0;let e=j.current;return()=>{k.current=!1;for(let t of e.values())t.controller?.abort()}},[]),(0,V.useEffect)(()=>{let e=j.current;return()=>{for(let t of e.values())t.controller?.abort()}},[e]);let B=async(t,i)=>{if(j.current.has(t.id))return;let a=i===`use`?new AbortController:void 0,o=e;j.current.set(t.id,{action:i,controller:a}),N(e=>({...e,[t.id]:i})),I(e=>({...e,[t.id]:``}));try{if(i===`delete`){if(!await s({title:c(`assets:assetsPage.deleteAsset`),message:c(`assets:assetsPage.deleteAssetName`,{name:t.name}),confirmLabel:c(`assets:assetsPage.delete`)})||!k.current)return;await l.cancelQueries({queryKey:Q}),await X.remove(t.id),l.setQueriesData({queryKey:Q},e=>e?.filter(e=>e.id!==t.id)),k.current&&n(c(`assets:assetsPage.assetDeleted`)),await we(l)}else if(i===`use`){let e=await X.content(t.id,a?.signal);if(!k.current||a?.signal.aborted||A.current!==o)return;r(e),n(c(`assets:assetsPage.nameAddedToChat`,{name:t.name}))}else{let e=await _e(t);k.current&&n(c(e===`application`?`assets:assetsPage.openedInApplication`:`assets:assetsPage.downloadStarted`))}}catch(e){k.current&&!a?.signal.aborted&&I(n=>({...n,[t.id]:e instanceof Error?e.message:String(e)}))}finally{j.current.delete(t.id),k.current&&N(e=>({...e,[t.id]:void 0}))}},H=!!(d.trim()||p!==`all`),ge=c(g?`assets:assetsPage.noCurrentAssets`:H?`assets:assetsPage.noMatchingAssets`:`assets:assetsPage.nothingHasGatheredHereYet`),U=`border-star-border bg-star-soft text-star-strong hover:bg-star-soft hover:text-star-strong max-[650px]:h-11`,W=c(`navigation:navigation.assets`),G=(0,Z.jsx)(C,{variant:`secondary`,size:`sm`,className:`max-[650px]:h-11`,onClick:()=>{R.refetch()},children:c(`assets:assetsPage.retry`)});return(0,Z.jsxs)(pe,{title:W,description:c(`assets:assetsPage.conversationAttachmentsAndAgentOutputsGatherHereAutomatically`),back:t&&{label:c(`navigation:sidebar.features`),ariaLabel:c(`navigation:shell.backToFeaturesLabel`),onBack:t},toolbar:(0,Z.jsx)(me,{search:(0,Z.jsx)(ue,{id:S,value:d,onValueChange:f,placeholder:c(`navigation:pageHeader.searchPage`,{page:W}),shortcut:u,clearLabel:c(`navigation:more.clearSearch`)}),actions:(0,Z.jsxs)(C,{type:`button`,className:`h-9`,onClick:()=>b(!0),children:[(0,Z.jsx)(h,{}),c(`assets:assetsPage.addLink`)]}),filters:(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsxs)(se,{children:[(0,Z.jsx)(ie,{asChild:!0,children:(0,Z.jsxs)(C,{ref:O,variant:`secondary`,size:`sm`,className:`max-[650px]:h-11`,children:[(0,Z.jsx)(he,{}),c(`assets:assetsPage.filters`)]})}),(0,Z.jsxs)(ae,{align:`start`,children:[(0,Z.jsx)(ee,{children:c(`assets:assetsPage.assetType`)}),(0,Z.jsx)(re,{value:p,onValueChange:e=>{Ee.includes(e)&&m(e)},children:Ee.map(e=>(0,Z.jsx)(oe,{value:e,className:`max-[650px]:min-h-11`,onSelect:e=>e.preventDefault(),children:$(e,c)},e))}),(0,Z.jsx)(te,{}),(0,Z.jsx)(ne,{checked:g,className:`max-[650px]:min-h-11`,onCheckedChange:e=>_(e===!0),children:c(`assets:assetsPage.fromCurrentChat`)})]})]}),p!==`all`&&(0,Z.jsxs)(C,{variant:`outline`,size:`sm`,className:U,onClick:()=>m(`all`),"aria-label":c(`assets:assetsPage.removeFilter`,{filter:$(p,c)}),children:[$(p,c),(0,Z.jsx)(x,{})]}),g&&(0,Z.jsxs)(C,{variant:`outline`,size:`sm`,className:U,onClick:()=>_(!1),"aria-label":c(`assets:assetsPage.removeFilter`,{filter:c(`assets:assetsPage.fromCurrentChat`)}),children:[c(`assets:assetsPage.fromCurrentChat`),(0,Z.jsx)(x,{})]}),(0,Z.jsx)(C,{variant:`ghost`,size:`icon-sm`,className:`ml-auto text-content-muted max-[650px]:size-11 pointer-coarse:size-11`,loading:R.isFetching&&!L,disabled:L||R.isFetching,"aria-label":c(`assets:assetsPage.refreshAssets`),title:c(`assets:assetsPage.refreshAssets`),onClick:()=>{R.refetch()},children:(0,Z.jsx)(v,{})})]})}),children:[L?(0,Z.jsx)(T,{kind:`empty`,title:c(`assets:assetsPage.noActiveSession`)}):R.isPending&&!R.isError?(0,Z.jsx)(T,{kind:`loading`,title:c(`assets:assetsPage.loadingAssets`)}):z?(0,Z.jsxs)(fe,{"data-assets-results":!0,title:$(p,c),count:z.length,meta:R.isFetching&&(0,Z.jsxs)(`span`,{role:`status`,className:`inline-flex items-center gap-1.5`,children:[(0,Z.jsx)(ce,{className:`size-3.5`}),c(`assets:assetsPage.refreshingAssets`)]}),children:[R.isError&&(0,Z.jsx)(F,{className:`mt-0 mb-2`,children:(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`min-w-0 flex-1`,children:R.error.message}),G]})}),z.length?(0,Z.jsx)(de,{children:z.map(e=>(0,Z.jsx)(Oe,{asset:e,busy:M[e.id],error:P[e.id],onPreview:t=>E({asset:e,trigger:t,generation:++D.current}),onAction:t=>{B(e,t)}},e.id))}):!R.isError&&(0,Z.jsx)(T,{kind:`empty`,title:ge,description:c(g||H?`assets:assetsPage.tryOtherFilters`:`assets:assetsPage.bringInALinkOrAttachAFileInAConversationPisperWillGatherTheOutputsCreatedAlongTheWay`)})]}):(0,Z.jsx)(T,{kind:`error`,title:c(`assets:assetsPage.loadFailed`),description:R.error?.message,action:G}),w&&(0,Z.jsx)(Te,{...w,fallback:()=>O.current,onClose:()=>E(null),onUse:()=>{B(w.asset,`use`)},onOpen:()=>{B(w.asset,`open`)},busy:M[w.asset.id],actionError:P[w.asset.id]},w.generation),y&&(0,Z.jsx)(xe,{onClose:()=>b(!1),onCreated:()=>{k.current&&(b(!1),n(c(`assets:assetsPage.linkAssetAdded`))),we(l)}})]})}function Oe({asset:e,busy:t,error:n,onPreview:r,onAction:a}){let{t:o}=i(),[s,c]=(0,V.useState)(!1),l=e.mimeType?.startsWith(`video/`),u=e.kind===`image`?z:l?B:e.kind===`link`?h:m,d=e.kind===`link`?e.url&&new URL(e.url).hostname:/\.([a-z0-9]{1,6})$/i.exec(e.name)?.[1],_=!s&&e.kind===`image`?(0,Z.jsx)(`img`,{className:`size-full rounded-[inherit] object-cover`,src:Y(e.id),alt:``,loading:`lazy`,onError:()=>c(!0)}):!s&&l?(0,Z.jsx)(`video`,{className:`size-full rounded-[inherit] object-cover`,src:Y(e.id),muted:!0,preload:`metadata`,onError:()=>c(!0)}):(0,Z.jsx)(u,{});return(0,Z.jsx)(P,{className:`asset-row`,"data-asset-id":e.id,icon:_,onOpen:e=>r(e.currentTarget),openLabel:`${o(`assets:assetsPage.preview`)}: ${e.name}`,name:(0,Z.jsx)(`span`,{title:e.name,children:e.name}),nameMeta:d||void 0,description:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:e.kind===`link`?`font-mono`:`tabular-nums`,title:e.kind===`link`?e.url:void 0,children:e.kind===`link`?e.url:w(e.size)}),(0,Z.jsx)(`span`,{"aria-hidden":`true`,children:` · `}),e.source===`agent`?o(`assets:assetsPage.agentOutputs`):e.source===`attachment`?o(`assets:assetsPage.chatAttachments`):o(`assets:assetsPage.manualUploads`)]}),meta:(e.sessionName||s)&&(0,Z.jsxs)(Z.Fragment,{children:[e.sessionName&&(0,Z.jsx)(`span`,{className:`min-w-0 truncate`,title:e.sessionName,children:o(`assets:assetsPage.fromName`,{name:e.sessionName})}),e.sessionName&&s&&(0,Z.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),s&&(0,Z.jsx)(`span`,{className:`shrink-0`,children:o(`assets:assetsPage.mediaFailed`)})]}),actions:(0,Z.jsxs)(`div`,{className:`asset-row-actions flex items-center gap-1`,children:[(0,Z.jsxs)(C,{variant:`secondary`,size:`sm`,className:`max-[650px]:size-11 max-[650px]:px-0`,disabled:!!t,loading:t===`use`,onClick:()=>a(`use`),children:[(0,Z.jsx)(g,{}),(0,Z.jsx)(`span`,{className:`max-[650px]:sr-only`,children:o(`assets:assetsPage.useInChat`)})]}),e.kind===`link`?(0,Z.jsx)(C,{asChild:!0,variant:`ghost`,size:`sm`,className:`max-[650px]:size-11 max-[650px]:px-0`,children:(0,Z.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,children:[(0,Z.jsx)(p,{}),(0,Z.jsx)(`span`,{className:`max-[650px]:sr-only`,children:o(`assets:assetsPage.open`)})]})}):(0,Z.jsxs)(C,{variant:`ghost`,size:`sm`,className:`max-[650px]:size-11 max-[650px]:px-0`,disabled:!!t,loading:t===`open`,onClick:()=>a(`open`),children:[W()?(0,Z.jsx)(p,{}):(0,Z.jsx)(f,{}),(0,Z.jsx)(`span`,{className:`max-[650px]:sr-only`,children:W()?o(`assets:assetsPage.openInApplication`):o(`assets:assetsPage.download`)})]}),(0,Z.jsx)(C,{variant:`ghost`,size:`icon-sm`,className:`text-content-muted hover:bg-danger-soft hover:text-danger max-[650px]:size-11`,disabled:!!t,loading:t===`delete`,"aria-label":`${o(`assets:assetsPage.deleteAsset`)}: ${e.name}`,onClick:()=>a(`delete`),children:(0,Z.jsx)(y,{})})]}),detail:n?(0,Z.jsx)(F,{className:`mt-0`,children:n}):void 0})}export{De as AssetsPage};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{d as r}from"./i18n-DEs6BBob.js";import{t as i}from"./use-i18n-CUS2_EGy.js";import{r as a,t as o}from"./useQuery-DdcpUQhO.js";import{t as s}from"./queryOptions-Dfvzj6n2.js";import{a as c,l,u}from"./api-CKJOip3Q.js";import{t as d}from"./createLucideIcon-Cd-3GVxJ.js";import{t as f}from"./download-BCfIiuaL.js";import{t as p}from"./external-link-CEQqPcqc.js";import{t as m}from"./file-Bllajneu.js";import{t as h}from"./link-2-mgasYn21.js";import{t as g}from"./paperclip-BCXrwYpb.js";import{t as _}from"./plus-fQbSqB1n.js";import{t as v}from"./refresh-cw-TbWxTY4K.js";import{t as y}from"./trash-2-CNrPOoPR.js";import{t as b}from"./triangle-alert-CE1q54ci.js";import{t as x}from"./x-07u4-129.js";import{t as S}from"./more-pages-D_PnxLN0.js";import{a as ee,c as te,n as ne,o as re,p as ie,r as ae,s as oe,t as se}from"./dropdown-menu-CFIFNaKO.js";import{n as ce,t as C}from"./button-CCcCN8tE.js";import{s as le}from"./shortcuts-IA6Uq_O6.js";import{n as w}from"./format-DMJQzoZ7.js";import{a as T,i as E,l as D,n as O,o as k,s as A,t as j}from"./dialog-Cb_sjjQV.js";import{t as M}from"./input-CPw-zkYh.js";import{n as N}from"./PageState-Cz6vFMXv.js";import{a as ue,i as P,n as de,o as fe,r as pe,s as me,t as F}from"./FeaturePage-B3wCvGpC.js";import{n as I}from"./mobile-runtime-recovery-tbTyacip.js";import{n as L}from"./field-DoLEb0np.js";import{t as R}from"./MarkdownMessage-BDztlYIy.js";var z=d(`file-image`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`10`,cy:`12`,r:`2`,key:`737tya`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`,key:`wt3hpn`}]]),B=d(`file-play`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z`,key:`1tzo1f`}]]),he=d(`list-filter`,[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]),V=e(t(),1),H=134217728;function ge(e){let t=document.createElement(`a`);t.href=`/api/assets/${encodeURIComponent(e.id)}/download`,t.download=e.name,t.hidden=!0,document.body.append(t),t.click(),t.remove()}function U(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error||Error(`读取资产失败。`)),r.onload=()=>{let e=typeof r.result==`string`?r.result:``,i=e.indexOf(`,`);i<0?n(Error(`资产编码失败。`)):t(e.slice(i+1))},r.readAsDataURL(e)})}function W(){if(typeof window>`u`)return!1;let e=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return!!(window.pisperDesktop?.openAsset||window.__PISPER_MOBILE_APP__&&e)}async function _e(e){let t=window.pisperDesktop?.openAsset,n=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;if(!t&&!(window.__PISPER_MOBILE_APP__&&n))return ge(e),`download`;await I();let r=await fetch(`/api/assets/${encodeURIComponent(e.id)}/download`);if(!r.ok)throw Error(`资产下载失败 (${r.status})`);if((Number(r.headers.get(`content-length`))||0)>H)throw Error(`资产超过 128 MB 原生打开限制。`);let i=await r.blob();if(!i.size||i.size>H)throw Error(`资产内容为空或超过 128 MB 原生打开限制。`);let a=await U(i);return t?await t({name:e.name,data:a}):await n?.(`mobile_open_asset`,{input:{name:e.name,mimeType:e.mimeType||i.type||`application/octet-stream`,data:a}}),`application`}function G(e){if(!e||typeof e!=`object`||Array.isArray(e))throw l();return Object.fromEntries(Object.entries(e))}function K(e,t=!1){if(!(e===void 0&&!t)){if(typeof e!=`string`||t&&!e)throw l();return e}}function ve(e){if(typeof e==`string`)try{let t=new URL(e);return[`http:`,`https:`].includes(t.protocol)?t.href:void 0}catch{return}}function q(e){let t=G(e),n=K(t.id,!0),r=K(t.name,!0),i=K(t.kind,!0);if(t.size!==void 0&&(typeof t.size!=`number`||!Number.isFinite(t.size)||t.size<0))throw l();let a=t.url===void 0?void 0:ve(t.url);if(t.url!==void 0&&!a||i===`link`&&!a)throw l();return{id:n,name:r,kind:i,size:t.size,url:a,mimeType:K(t.mimeType),source:K(t.source),sessionName:K(t.sessionName)}}function ye(e,t){let n=G(e),r=q(n);if(![`text`,`image`,`document`,`file`].includes(r.kind)||r.kind===`text`&&typeof n.text!=`string`||!t&&[`image`,`document`].includes(r.kind)&&typeof n.data!=`string`||n.truncated!==void 0&&typeof n.truncated!=`boolean`)throw l();return{...r,text:K(n.text),data:K(n.data),extension:K(n.extension),truncated:n.truncated}}function be(e={}){return{query:(e.query||``).trim(),kind:e.kind||`all`,sessionId:e.sessionId||``}}var J=e=>`/api/assets/${encodeURIComponent(e)}`,Y=e=>`${J(e)}/download?inline=1`,X={async list(e={},t){let{query:n,kind:r,sessionId:i}=be(e),a=new URLSearchParams;return n&&a.set(`query`,n),r!==`all`&&a.set(`kind`,r===`video`?`file`:r),i&&a.set(`sessionId`,i),c(`/api/assets?${a}`,{signal:t,parse(e){let t=G(e);if(!Array.isArray(t.assets))throw l();let n=t.assets.map(q);return r===`video`?n.filter(e=>e.mimeType?.startsWith(`video/`)):n}})},preview:(e,t)=>c(`${J(e)}/content?preview=1`,{signal:t,parse:e=>ye(e,!0)}),content:(e,t)=>c(`${J(e)}/content`,{signal:t,parse:e=>ye(e,!1)}),async createLink(e){let t=ve(e.url.trim());if(!t)throw new u(r(`assets:assetsPage.invalidLink`),{kind:`protocol`,data:{code:`INVALID_ASSET_URL`}});return c(`/api/assets`,{method:`POST`,body:{kind:`link`,name:e.name,url:t,source:`upload`},parse:q})},remove:e=>c(J(e),{method:`DELETE`,parse(e){if(G(e).deleted!==!0)throw l();return!0}})},Z=n();function xe({onClose:e,onCreated:t}){let{t:n}=i(),[r,a]=(0,V.useState)(``),[o,s]=(0,V.useState)(``),[c,l]=(0,V.useState)(!1),[u,d]=(0,V.useState)(``),f=(0,V.useRef)(!1),p=(0,V.useRef)(!0);return(0,V.useEffect)(()=>(p.current=!0,()=>{p.current=!1}),[]),(0,Z.jsx)(j,{open:!0,busy:c,onOpenChange:t=>{!t&&!f.current&&e()},children:(0,Z.jsx)(E,{size:`compact`,scrollMode:`body`,children:(0,Z.jsxs)(`form`,{className:`flex min-h-0 flex-col gap-4`,onSubmit:async e=>{if(e.preventDefault(),f.current)return;f.current=!0,l(!0),d(``);let n=!1;try{await X.createLink({name:r,url:o}),n=!0}catch(e){p.current&&d(e instanceof Error?e.message:String(e))}finally{f.current=!1,p.current&&l(!1)}n&&t()},"aria-busy":c||void 0,children:[(0,Z.jsxs)(A,{className:`pr-8`,children:[(0,Z.jsx)(D,{children:n(`assets:assetsPage.addLinkAsset`)}),(0,Z.jsx)(T,{children:n(`assets:assetsPage.linksCanBeArchivedOpenedOrAddedToAChatAsContext`)})]}),(0,Z.jsxs)(O,{className:`flex flex-col gap-4`,children:[(0,Z.jsxs)(L,{variant:`control`,children:[n(`assets:assetsPage.name`),(0,Z.jsx)(M,{value:r,disabled:c,onChange:e=>a(e.target.value),placeholder:n(`assets:assetsPage.forExampleOpenAIAPIDocs`)})]}),(0,Z.jsxs)(L,{variant:`control`,children:[`URL`,(0,Z.jsx)(M,{className:`font-mono`,value:o,disabled:c,onChange:e=>s(e.target.value),placeholder:`https://example.com/docs`})]}),u&&(0,Z.jsx)(`p`,{role:`alert`,className:`break-words text-sm text-danger`,children:u})]}),(0,Z.jsxs)(k,{children:[(0,Z.jsx)(C,{variant:`secondary`,size:`dialogAction`,disabled:c,onClick:e,children:n(`assets:assetsPage.cancel`)}),(0,Z.jsxs)(C,{type:`submit`,size:`dialogAction`,loading:c,disabled:c||!o.trim(),children:[(0,Z.jsx)(_,{}),n(c?`assets:assetsPage.adding`:`assets:assetsPage.addLink`)]})]})]})})})}var Q=[`assets`,`list`];function Se(e={}){let t=be(e);return s({queryKey:[...Q,t],queryFn:({signal:e})=>X.list(t,e),staleTime:0,retry:!1})}function Ce(e,t){return s({queryKey:[`assets`,`preview`,e,t],queryFn:({signal:t})=>X.preview(e,t),staleTime:0,gcTime:0,retry:!1})}async function we(e){await e.cancelQueries({queryKey:Q}),await e.invalidateQueries({queryKey:Q})}function Te({asset:e,generation:t,trigger:n,fallback:r,onClose:a,onUse:s,onOpen:c,busy:l,actionError:u}){let{t:d}=i(),h=e.mimeType?.startsWith(`video/`),_=e.kind===`image`||h,v=o({...Ce(e.id,t),enabled:!_&&e.kind!==`link`}),[y,x]=(0,V.useState)(!1),[S,ee]=(0,V.useState)(0),te=/\.md$/i.test(e.name)||e.mimeType===`text/markdown`;return(0,Z.jsx)(j,{open:!0,onOpenChange:e=>{e||a()},children:(0,Z.jsxs)(E,{size:`wide`,scrollMode:`body`,className:`w-[min(96vw,1200px)] max-w-[min(96vw,1200px)]`,onCloseAutoFocus:e=>{e.preventDefault();let t=e=>e?.isConnected&&e.getClientRects().length&&getComputedStyle(e).visibility!==`hidden`,i=t(n)?n:r();t(i)&&i?.focus({preventScroll:!0})},children:[(0,Z.jsxs)(A,{className:`pr-8`,children:[(0,Z.jsx)(D,{className:`break-words leading-6`,children:e.name}),(0,Z.jsx)(T,{className:`font-mono break-words tabular-nums`,children:e.kind===`link`?e.url:`${e.mimeType||``} · ${w(e.size)}`})]}),(0,Z.jsxs)(O,{className:`min-h-[min(240px,30dvh)] rounded-md border border-stroke bg-surface-subtle p-3`,children:[_?y?(0,Z.jsxs)(`div`,{role:`alert`,className:`flex flex-col items-center gap-3 p-4 text-sm`,children:[(0,Z.jsx)(b,{className:`size-5 text-danger`}),(0,Z.jsx)(`p`,{children:d(`assets:assetsPage.mediaFailed`)}),(0,Z.jsx)(C,{variant:`secondary`,onClick:()=>{x(!1),ee(e=>e+1)},children:d(`assets:assetsPage.retry`)})]}):h?(0,Z.jsx)(`video`,{controls:!0,playsInline:!0,preload:`metadata`,className:`mx-auto max-h-[65dvh] w-full object-contain`,src:Y(e.id),onError:()=>x(!0)},S):(0,Z.jsx)(`img`,{className:`mx-auto max-h-[65dvh] max-w-full object-contain`,src:Y(e.id),alt:e.name,onError:()=>x(!0)},S):e.kind===`link`?(0,Z.jsxs)(`a`,{className:`flex items-center gap-2 font-mono text-sm break-all text-content underline underline-offset-4`,href:e.url,target:`_blank`,rel:`noreferrer`,children:[(0,Z.jsx)(p,{className:`shrink-0`}),e.url]}):v.isPending?(0,Z.jsxs)(`div`,{role:`status`,className:`flex items-center justify-center gap-2 p-8 text-sm text-content-muted`,children:[(0,Z.jsx)(ce,{}),d(`assets:assetsPage.loadingPreview`)]}):v.isError?(0,Z.jsxs)(`div`,{role:`alert`,className:`flex flex-wrap items-center gap-2 p-4 text-sm text-danger`,children:[(0,Z.jsx)(b,{className:`size-4 shrink-0`}),(0,Z.jsx)(`span`,{className:`min-w-0 break-words`,children:v.error.message}),(0,Z.jsx)(C,{variant:`secondary`,onClick:()=>{v.refetch()},children:d(`assets:assetsPage.retry`)})]}):v.data?.kind===`text`?te?(0,Z.jsx)(`div`,{className:`mx-auto max-w-3xl text-left`,children:(0,Z.jsx)(R,{children:v.data.text||``})}):(0,Z.jsx)(`div`,{className:`mx-auto max-w-3xl whitespace-pre-wrap font-sans text-base leading-7 [overflow-wrap:anywhere]`,"data-asset-plain":!0,children:v.data.text}):(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-2 p-6 text-center text-sm`,children:[(0,Z.jsx)(m,{className:`size-8 text-content-faint`,strokeWidth:1.5}),(0,Z.jsx)(`strong`,{className:`font-medium break-words`,children:e.name}),(0,Z.jsx)(`p`,{className:`max-w-md text-xs text-content-muted`,children:d(`assets:assetsPage.thisFileTypeCanBeDownloadedSupportedDocumentsCanAlsoBeAddedToAChatForAnalysis`)})]}),v.data?.truncated&&(0,Z.jsx)(`p`,{className:`mt-3 text-xs text-content-muted`,children:d(`assets:assetsPage.previewTruncated`)})]}),u&&(0,Z.jsx)(`p`,{role:`alert`,className:`break-words text-sm text-danger`,children:u}),(0,Z.jsxs)(k,{children:[e.kind!==`link`&&(0,Z.jsxs)(C,{variant:`secondary`,size:`dialogAction`,disabled:!!l,loading:l===`open`,onClick:c,children:[W()?(0,Z.jsx)(p,{}):(0,Z.jsx)(f,{}),W()?d(`assets:assetsPage.openInApplication`):d(`assets:assetsPage.download`)]}),(0,Z.jsxs)(C,{size:`dialogAction`,disabled:!!l,loading:l===`use`,onClick:s,children:[(0,Z.jsx)(g,{}),d(`assets:assetsPage.useInChat`)]})]})]})})}var Ee=[`all`,`image`,`video`,`file`,`link`];function $(e,t){return t(e===`image`?`assets:assetsPage.images`:e===`video`?`assets:assetsPage.videos`:e===`file`?`assets:assetsPage.files`:e===`link`?`assets:assetsPage.links`:`assets:assetsPage.all`)}function De({activeSessionId:e,onBack:t,notify:n,onUse:r,requestConfirm:s}){let{t:c}=i(),l=a(),u=le(`focusSearch`),[d,f]=(0,V.useState)(``),[p,m]=(0,V.useState)(`all`),[g,_]=(0,V.useState)(!1),[y,b]=(0,V.useState)(!1),[w,T]=(0,V.useState)(null),E=(0,V.useRef)(0),D=(0,V.useRef)(null),O=(0,V.useRef)(!0),k=(0,V.useRef)(e);k.current=e;let A=(0,V.useRef)(new Map),[j,M]=(0,V.useState)({}),[P,I]=(0,V.useState)({}),L=g&&!e,R=o({...Se({query:d,kind:p,sessionId:g?e:``}),enabled:!L}),z=L?[]:R.data;(0,V.useEffect)(()=>{O.current=!0;let e=A.current;return()=>{O.current=!1;for(let t of e.values())t.controller?.abort()}},[]),(0,V.useEffect)(()=>{let e=A.current;return()=>{for(let t of e.values())t.controller?.abort()}},[e]);let B=async(t,i)=>{if(A.current.has(t.id))return;let a=i===`use`?new AbortController:void 0,o=e;A.current.set(t.id,{action:i,controller:a}),M(e=>({...e,[t.id]:i})),I(e=>({...e,[t.id]:``}));try{if(i===`delete`){if(!await s({title:c(`assets:assetsPage.deleteAsset`),message:c(`assets:assetsPage.deleteAssetName`,{name:t.name}),confirmLabel:c(`assets:assetsPage.delete`)})||!O.current)return;await l.cancelQueries({queryKey:Q}),await X.remove(t.id),l.setQueriesData({queryKey:Q},e=>e?.filter(e=>e.id!==t.id)),O.current&&n(c(`assets:assetsPage.assetDeleted`)),await we(l)}else if(i===`use`){let e=await X.content(t.id,a?.signal);if(!O.current||a?.signal.aborted||k.current!==o)return;r(e),n(c(`assets:assetsPage.nameAddedToChat`,{name:t.name}))}else{let e=await _e(t);O.current&&n(c(e===`application`?`assets:assetsPage.openedInApplication`:`assets:assetsPage.downloadStarted`))}}catch(e){O.current&&!a?.signal.aborted&&I(n=>({...n,[t.id]:e instanceof Error?e.message:String(e)}))}finally{A.current.delete(t.id),O.current&&M(e=>({...e,[t.id]:void 0}))}},H=!!(d.trim()||p!==`all`),ge=c(g?`assets:assetsPage.noCurrentAssets`:H?`assets:assetsPage.noMatchingAssets`:`assets:assetsPage.nothingHasGatheredHereYet`),U=`border-star-border bg-star-soft text-star-strong hover:bg-star-soft hover:text-star-strong max-[650px]:h-11`,W=c(`navigation:navigation.assets`),G=(0,Z.jsx)(C,{variant:`secondary`,size:`sm`,className:`max-[650px]:h-11`,onClick:()=>{R.refetch()},children:c(`assets:assetsPage.retry`)});return(0,Z.jsxs)(pe,{title:W,description:c(`assets:assetsPage.conversationAttachmentsAndAgentOutputsGatherHereAutomatically`),back:t&&{label:c(`navigation:sidebar.features`),ariaLabel:c(`navigation:shell.backToFeaturesLabel`),onBack:t},toolbar:(0,Z.jsx)(me,{search:(0,Z.jsx)(ue,{id:S,value:d,onValueChange:f,placeholder:c(`navigation:pageHeader.searchPage`,{page:W}),shortcut:u,clearLabel:c(`navigation:more.clearSearch`)}),actions:(0,Z.jsxs)(C,{type:`button`,className:`h-9`,onClick:()=>b(!0),children:[(0,Z.jsx)(h,{}),c(`assets:assetsPage.addLink`)]}),filters:(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsxs)(se,{children:[(0,Z.jsx)(ie,{asChild:!0,children:(0,Z.jsxs)(C,{ref:D,variant:`secondary`,size:`sm`,className:`max-[650px]:h-11`,children:[(0,Z.jsx)(he,{}),c(`assets:assetsPage.filters`)]})}),(0,Z.jsxs)(ae,{align:`start`,children:[(0,Z.jsx)(ee,{children:c(`assets:assetsPage.assetType`)}),(0,Z.jsx)(re,{value:p,onValueChange:e=>{Ee.includes(e)&&m(e)},children:Ee.map(e=>(0,Z.jsx)(oe,{value:e,className:`max-[650px]:min-h-11`,onSelect:e=>e.preventDefault(),children:$(e,c)},e))}),(0,Z.jsx)(te,{}),(0,Z.jsx)(ne,{checked:g,className:`max-[650px]:min-h-11`,onCheckedChange:e=>_(e===!0),children:c(`assets:assetsPage.fromCurrentChat`)})]})]}),p!==`all`&&(0,Z.jsxs)(C,{variant:`outline`,size:`sm`,className:U,onClick:()=>m(`all`),"aria-label":c(`assets:assetsPage.removeFilter`,{filter:$(p,c)}),children:[$(p,c),(0,Z.jsx)(x,{})]}),g&&(0,Z.jsxs)(C,{variant:`outline`,size:`sm`,className:U,onClick:()=>_(!1),"aria-label":c(`assets:assetsPage.removeFilter`,{filter:c(`assets:assetsPage.fromCurrentChat`)}),children:[c(`assets:assetsPage.fromCurrentChat`),(0,Z.jsx)(x,{})]}),(0,Z.jsx)(C,{variant:`ghost`,size:`icon-sm`,className:`ml-auto text-content-muted max-[650px]:size-11 pointer-coarse:size-11`,loading:R.isFetching&&!L,disabled:L||R.isFetching,"aria-label":c(`assets:assetsPage.refreshAssets`),title:c(`assets:assetsPage.refreshAssets`),onClick:()=>{R.refetch()},children:(0,Z.jsx)(v,{})})]})}),children:[L?(0,Z.jsx)(N,{kind:`empty`,title:c(`assets:assetsPage.noActiveSession`)}):R.isPending&&!R.isError?(0,Z.jsx)(N,{kind:`loading`,title:c(`assets:assetsPage.loadingAssets`)}):z?(0,Z.jsxs)(fe,{"data-assets-results":!0,title:$(p,c),count:z.length,meta:R.isFetching&&(0,Z.jsxs)(`span`,{role:`status`,className:`inline-flex items-center gap-1.5`,children:[(0,Z.jsx)(ce,{className:`size-3.5`}),c(`assets:assetsPage.refreshingAssets`)]}),children:[R.isError&&(0,Z.jsx)(F,{className:`mt-0 mb-2`,children:(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`min-w-0 flex-1`,children:R.error.message}),G]})}),z.length?(0,Z.jsx)(de,{children:z.map(e=>(0,Z.jsx)(Oe,{asset:e,busy:j[e.id],error:P[e.id],onPreview:t=>T({asset:e,trigger:t,generation:++E.current}),onAction:t=>{B(e,t)}},e.id))}):!R.isError&&(0,Z.jsx)(N,{kind:`empty`,title:ge,description:c(g||H?`assets:assetsPage.tryOtherFilters`:`assets:assetsPage.bringInALinkOrAttachAFileInAConversationPisperWillGatherTheOutputsCreatedAlongTheWay`)})]}):(0,Z.jsx)(N,{kind:`error`,title:c(`assets:assetsPage.loadFailed`),description:R.error?.message,action:G}),w&&(0,Z.jsx)(Te,{...w,fallback:()=>D.current,onClose:()=>T(null),onUse:()=>{B(w.asset,`use`)},onOpen:()=>{B(w.asset,`open`)},busy:j[w.asset.id],actionError:P[w.asset.id]},w.generation),y&&(0,Z.jsx)(xe,{onClose:()=>b(!1),onCreated:()=>{O.current&&(b(!1),n(c(`assets:assetsPage.linkAssetAdded`))),we(l)}})]})}function Oe({asset:e,busy:t,error:n,onPreview:r,onAction:a}){let{t:o}=i(),[s,c]=(0,V.useState)(!1),l=e.mimeType?.startsWith(`video/`),u=e.kind===`image`?z:l?B:e.kind===`link`?h:m,d=e.kind===`link`?e.url&&new URL(e.url).hostname:/\.([a-z0-9]{1,6})$/i.exec(e.name)?.[1],_=!s&&e.kind===`image`?(0,Z.jsx)(`img`,{className:`size-full rounded-[inherit] object-cover`,src:Y(e.id),alt:``,loading:`lazy`,onError:()=>c(!0)}):!s&&l?(0,Z.jsx)(`video`,{className:`size-full rounded-[inherit] object-cover`,src:Y(e.id),muted:!0,preload:`metadata`,onError:()=>c(!0)}):(0,Z.jsx)(u,{});return(0,Z.jsx)(P,{className:`asset-row`,"data-asset-id":e.id,icon:_,onOpen:e=>r(e.currentTarget),openLabel:`${o(`assets:assetsPage.preview`)}: ${e.name}`,name:(0,Z.jsx)(`span`,{title:e.name,children:e.name}),nameMeta:d||void 0,description:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:e.kind===`link`?`font-mono`:`tabular-nums`,title:e.kind===`link`?e.url:void 0,children:e.kind===`link`?e.url:w(e.size)}),(0,Z.jsx)(`span`,{"aria-hidden":`true`,children:` · `}),e.source===`agent`?o(`assets:assetsPage.agentOutputs`):e.source===`attachment`?o(`assets:assetsPage.chatAttachments`):o(`assets:assetsPage.manualUploads`)]}),meta:(e.sessionName||s)&&(0,Z.jsxs)(Z.Fragment,{children:[e.sessionName&&(0,Z.jsx)(`span`,{className:`min-w-0 truncate`,title:e.sessionName,children:o(`assets:assetsPage.fromName`,{name:e.sessionName})}),e.sessionName&&s&&(0,Z.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),s&&(0,Z.jsx)(`span`,{className:`shrink-0`,children:o(`assets:assetsPage.mediaFailed`)})]}),actions:(0,Z.jsxs)(`div`,{className:`asset-row-actions flex items-center gap-1`,children:[(0,Z.jsxs)(C,{variant:`secondary`,size:`sm`,className:`max-[650px]:size-11 max-[650px]:px-0`,disabled:!!t,loading:t===`use`,onClick:()=>a(`use`),children:[(0,Z.jsx)(g,{}),(0,Z.jsx)(`span`,{className:`max-[650px]:sr-only`,children:o(`assets:assetsPage.useInChat`)})]}),e.kind===`link`?(0,Z.jsx)(C,{asChild:!0,variant:`ghost`,size:`sm`,className:`max-[650px]:size-11 max-[650px]:px-0`,children:(0,Z.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,children:[(0,Z.jsx)(p,{}),(0,Z.jsx)(`span`,{className:`max-[650px]:sr-only`,children:o(`assets:assetsPage.open`)})]})}):(0,Z.jsxs)(C,{variant:`ghost`,size:`sm`,className:`max-[650px]:size-11 max-[650px]:px-0`,disabled:!!t,loading:t===`open`,onClick:()=>a(`open`),children:[W()?(0,Z.jsx)(p,{}):(0,Z.jsx)(f,{}),(0,Z.jsx)(`span`,{className:`max-[650px]:sr-only`,children:W()?o(`assets:assetsPage.openInApplication`):o(`assets:assetsPage.download`)})]}),(0,Z.jsx)(C,{variant:`ghost`,size:`icon-sm`,className:`text-content-muted hover:bg-danger-soft hover:text-danger max-[650px]:size-11`,disabled:!!t,loading:t===`delete`,"aria-label":`${o(`assets:assetsPage.deleteAsset`)}: ${e.name}`,onClick:()=>a(`delete`),children:(0,Z.jsx)(y,{})})]}),detail:n?(0,Z.jsx)(F,{className:`mt-0`,children:n}):void 0})}export{De as AssetsPage};
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/WorkspacePicker-BJhBGRH0.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-CUS2_EGy.js","assets/i18n-DEs6BBob.js","assets/vendor-router-CSN_DGvx.js","assets/index-C5aKcTGw.js","assets/index-DD2H2OOC.css","assets/storage-DH3bQdy6.js","assets/vendor-state-GkUciC5H.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/check-2vYc6QaP.js","assets/triangle-alert-CE1q54ci.js","assets/button-CCcCN8tE.js","assets/vendor-ui-DvrYggeS.js","assets/dist-41X0pdUs.js","assets/utils-C8uzG5AZ.js","assets/dialog-Cb_sjjQV.js","assets/x-07u4-129.js","assets/dist-BHkR6BLP.js","assets/dist-BsRXXcSL.js","assets/es2015-DTZdOI9P.js","assets/input-CPw-zkYh.js","assets/alert-firawb0H.js","assets/ManageProjectsDialog-Dtb2K7BK.js","assets/arrow-down-CDGua-ue.js","assets/arrow-up-DST6-qVQ.js","assets/folder-plus-OPHZsJho.js","assets/pencil-U08v_vV9.js","assets/rotate-ccw-C0v8V77_.js","assets/trash-2-CNrPOoPR.js","assets/board-projects-wd79Rqt5.js","assets/query-Bj-DUNYq.js","assets/useQuery-DdcpUQhO.js","assets/startup-queries-DeNu46nT.js","assets/mutation-CEbxdVYy.js","assets/api-CKJOip3Q.js","assets/abort-signal-f4JsiYKX.js","assets/component-changes-Q9Bf64Ob.js","assets/runtime-capabilities-store-D2d_9z0D.js","assets/runtime-capabilities-CHYOF_hE.js","assets/session-board-status-D2lpFPiI.js","assets/chat-api-Bvirerdj.js","assets/session-organization-api-Bs8DdxU1.js","assets/events-CZTn9wa-.js","assets/workspace-order-store-BuPmheRT.js","assets/session-questions-Cf-1g85h.js","assets/card-presentation-1oph2b8P.js"])))=>i.map(i=>d[i]);
2
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{h as t}from"./vendor-router-CSN_DGvx.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{t as i}from"./use-i18n-CUS2_EGy.js";import{t as a}from"./useQuery-DdcpUQhO.js";import{r as o,u as s}from"./placements-Bn0vPyEI.js";import{i as c}from"./use-mobile-C2tPBAza.js";import{t as l}from"./usePhoneShell-cYrS53S8.js";import{t as u}from"./createLucideIcon-Cd-3GVxJ.js";import{t as d}from"./arrow-down-CDGua-ue.js";import{t as f}from"./arrow-right-DqLOhpA2.js";import{t as p}from"./arrow-up-DST6-qVQ.js";import{t as m}from"./chevron-down-CxtxIjiP.js";import{t as h}from"./chevron-right-C3t2Rckj.js";import{t as g}from"./corner-down-right--hxi-Ihy.js";import{t as _}from"./ellipsis-CfGKfbq6.js";import{_ as v,c as y,d as b,f as x,h as S,i as C,l as w,m as T,n as ee,o as E,r as D,t as O,u as k}from"./useSessionRowActions-DtunSg_Q.js";import{a as A,f as j,i as M,l as N,m as P,p as F,r as I,u as L}from"./useNewProjectPicker-CacWA0IS.js";import{t as R}from"./pin-CU0FG0lI.js";import{t as z}from"./plus-fQbSqB1n.js";import{t as te}from"./rotate-ccw-C0v8V77_.js";import{t as ne}from"./square-pen-hYbjKh6A.js";import{t as re}from"./trash-2-CNrPOoPR.js";import{t as B}from"./x-07u4-129.js";import{t as ie}from"./brand-DIEc3fK8.js";import{c as V,i as H,p as U,r as ae,t as W}from"./dropdown-menu-CFIFNaKO.js";import{t as oe}from"./segmented-control-BlM_GKV6.js";import{i as se,n as ce,r as le,t as ue}from"./tooltip-D4MFbqcG.js";import{t as G}from"./utils-C8uzG5AZ.js";import{t as K}from"./button-CCcCN8tE.js";import{t as de}from"./kbd-CAufZTkl.js";import{a as fe,c as pe,g as q,n as me,t as J}from"./shortcuts-IA6Uq_O6.js";import{t as he}from"./sidebar-store-DuRlD5qg.js";import{t as ge}from"./workspace-order-store-BuPmheRT.js";import{r as _e}from"./session-questions-Cf-1g85h.js";import{n as ve,t as ye}from"./public-launch-D0t4Hqf5.js";import{c as be,i as xe,l as Se,n as Ce,r as we,t as Te}from"./card-presentation-1oph2b8P.js";import{n as Y,r as Ee}from"./format-DMJQzoZ7.js";import{t as X}from"./StatusGlyph-1KgitlUg.js";import{t as De}from"./session-change-summary-api-DmmNGbP7.js";import{n as Oe}from"./PageState-Cz6vFMXv.js";import{n as ke,t as Ae}from"./esm-DCV8yILT.js";import{n as Z}from"./BotAvatar-CNL-APwP.js";var je=u(`folder-pen`,[[`path`,{d:`M2 11.5V5a2 2 0 0 1 2-2h3.9c.7 0 1.3.3 1.7.9l.8 1.2c.4.6 1 .9 1.7.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-9.5`,key:`a8xqs0`}],[`path`,{d:`M11.378 13.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z`,key:`1saktj`}]]),Q=e(n(),1);function Me(){let{t:e}=i();return{name:{attention:e(`board:lane.attention`),running:e(`board:lane.running`),queued:e(`board:lane.queued`),done:e(`board:lane.done`)},order:{attention:e(`board:lane.orderAttention`),running:e(`board:lane.orderRunning`),queued:e(`board:lane.orderQueued`),done:e(`board:lane.orderDone`)}}}var $=r();function Ne({files:e,added:t,removed:n}){let{t:r}=i();return(0,$.jsxs)(`span`,{"data-change-stats":!0,className:`flex min-w-0 items-center gap-1.5 text-xs whitespace-nowrap text-content-secondary`,children:[(0,$.jsx)(`span`,{children:r(`board:card.files`,{count:e})}),(0,$.jsxs)(`span`,{className:`font-mono text-success tabular-nums`,children:[`+`,t]}),(0,$.jsxs)(`span`,{className:`font-mono text-danger tabular-nums`,children:[`−`,n]})]})}function Pe({sessionId:e,completedAt:t}){let n=(0,Q.useRef)(null),[r,i]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{let e=n.current;if(!e||r)return;if(typeof IntersectionObserver>`u`){i(!0);return}let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(i(!0),t.disconnect())},{rootMargin:`120px`});return t.observe(e),()=>t.disconnect()},[r]);let{data:o}=a({queryKey:[`session-change-summary`,e,t],queryFn:()=>De(e),enabled:r,staleTime:6e4,retry:0});return o?.status!==`known`||!o.changedFiles?(0,$.jsx)(`span`,{ref:n}):(0,$.jsx)(`span`,{ref:n,className:`contents`,children:(0,$.jsx)(Ne,{files:o.changedFiles,added:o.added||0,removed:o.removed||0})})}function Fe({text:e,prefix:t,phone:n=!1,args:r=!1,variant:a=`well`,tabIndex:o,lead:s}){let{t:c}=i(),l=(0,Q.useRef)(null),[u,d]=(0,Q.useState)(!1),[f,p]=(0,Q.useState)(!1);(0,Q.useLayoutEffect)(()=>{let e=l.current;if(!e||f)return;let t=()=>d(e.scrollHeight>e.clientHeight+1);if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[f,e]);let m=a===`plain`,h=(0,Q.useMemo)(()=>e.split(/(\s+)/).filter(Boolean),[e]),g=(u||f)&&(0,$.jsx)(`button`,{type:`button`,"data-card-stop":!0,tabIndex:o,className:G(`text-left text-xs text-content-secondary hover:text-content focus-visible:outline-2 focus-visible:outline-focus pointer-coarse:min-h-11`,m?`mt-0.5 rounded-xs underline underline-offset-2`:`w-full border-t border-well-stroke px-2.5 py-1`),"aria-expanded":f,onClick:()=>p(e=>!e),children:c(f?`board:card.collapse`:r?`board:card.expandArgs`:`board:card.expand`)}),_=(0,$.jsxs)(`pre`,{ref:l,"data-command-text":!0,"aria-label":r?c(`board:confirm.fullArgs`):void 0,className:G(`min-w-0 font-mono text-xs leading-5 whitespace-pre-wrap`,m?`text-content-secondary`:`text-well-text`,!f&&`line-clamp-3 max-h-15`,n&&`text-sm`),children:[s&&(0,$.jsx)(`span`,{className:`font-sans select-none`,children:s}),t&&(0,$.jsxs)(`span`,{className:G(`select-none`,m?`text-content-muted`:`text-well-muted`),children:[t,` `]}),h.map((e,t)=>/^\s+$/.test(e)?e:(0,$.jsx)(`span`,{"data-command-token":!0,className:`inline-block max-w-full align-top break-all`,children:e},t))]});return m?(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col items-start`,children:[_,g]}):(0,$.jsxs)(`div`,{className:`min-w-0 rounded-sm border border-well-stroke bg-well`,children:[(0,$.jsx)(`div`,{className:`px-2.5 py-1.5`,children:_}),g]})}function Ie(e){return e instanceof Element&&!!e.closest(`button, a, input, textarea, [role="menuitem"], [data-card-stop]`)}function Le({binding:e}){let t=e&&/^Key[A-Z]$/.test(e)?e.slice(3):``;return t?(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`font-normal opacity-60 pointer-coarse:hidden`,children:t}):null}function Re(e){return e.split(`
3
+ `).map(e=>e.trim()).find(Boolean)??``}function ze({item:e,now:t,project:n,active:r,dimmed:a,phase:o,bindings:s,handlers:c,menu:l,onStartNow:u,card:d=!1}){let{t:f}=i(),p=(0,Q.useRef)(null),m=r?0:-1,h=e.lane===`attention`,_=e.approvals[0]??null,v=_?.severity===`critical`,x=N(e),S=e.title||f(`navigation:shell.untitledSession`),C=()=>c.onOpen(e.id),T=`${e.lane}:${e.status}`,ee=(0,Q.useRef)(T);(0,Q.useLayoutEffect)(()=>{ee.current!==T&&(ee.current=T,p.current?.getAnimations?.().forEach(e=>e.cancel()))},[T]);let D=(0,Q.useRef)(!1),O=e=>{let t=D.current;D.current=!1,!(t||Ie(e.target))&&C()},A=e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),C())},j=``;j=h?k(f,L(e)):e.status===`failed`?f(`board:status.failedHandled`):e.status===`stopped`?f(`board:status.stopped`):e.lane===`running`?f(`board:status.running`):e.lane===`queued`?f(`board:status.queued`):e.unread?f(`board:overview.doneUnread`):f(`board:status.done`);let M=e.status===`approval`&&e.approvalsState===`ready`&&_?_.toolName||`—`:``,P=``,F=``;if(h&&e.since!==null)P=w(t-e.since),F=f(`board:overview.waited`,{wait:P});else if(e.lane===`running`){let n=e.startedAt??e.since;P=E(n===null?null:t-n),F=P?f(`board:overview.ran`,{time:P}):``}else e.lane===`done`&&(P=y(e.since),F=P?f(`board:overview.finishedAt`,{time:P}):``);let I=null,z=null,te=(0,$.jsxs)(K,{size:`sm`,tabIndex:m,onClick:C,children:[f(`board:overview.openToHandle`),!d&&(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`font-normal opacity-60 pointer-coarse:hidden`,children:`↵`})]});if(e.status===`approval`){if(e.approvalsState!==`ready`||!_)I=(0,$.jsx)(`p`,{role:`status`,className:`text-xs leading-5 text-content-muted`,children:e.approvalsState===`error`?f(`board:card.approvalUnavailable`):f(`board:card.approvalLoading`)});else{let t=xe(_.reason),n=v&&t?we(_.reason):``,r=_.toolName===`bash`&&_.command,i=_.command||_.path,a=i?``:Te(_),o=!i&&_.reason&&!t?_.reason:``,s=e.approvals.length-1,c=e.approvals.slice(1).some(e=>e.severity===`critical`),l=v?(0,$.jsxs)(`span`,{"data-severity":`critical`,className:`font-medium text-warning-strong`,children:[n?f(`board:card.criticalWithReason`,{reason:n}):f(`board:card.critical`),(0,$.jsx)(`span`,{"aria-hidden":`true`,children:` · `})]}):null;I=(0,$.jsxs)(`div`,{className:`grid min-w-0 gap-0.5`,children:[i?(0,$.jsx)(Fe,{text:i,prefix:r?`$`:``,variant:`plain`,tabIndex:m,lead:l}):a?(0,$.jsx)(Fe,{text:a,prefix:``,variant:`plain`,args:!0,tabIndex:m,lead:l}):l&&(0,$.jsx)(`p`,{className:`min-w-0 truncate text-xs leading-5`,children:l}),o&&(0,$.jsx)(`p`,{className:`min-w-0 text-xs break-words text-content-secondary`,children:o}),s>0&&(0,$.jsx)(`p`,{className:`text-xs leading-5 text-content-muted`,children:f(c?`board:card.moreApprovalsCritical`:`board:card.moreApprovals`,{count:s})})]})}if(x.kind===`decide`&&_){let t=c.isPending(`approve`,e.id,_.id),n=c.isPending(`deny`,e.id,_.id);z=(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(K,{variant:`outline`,size:`sm`,tabIndex:m,disabled:t||n,loading:n,"aria-label":f(`board:sidebar.denyNamed`,{title:S}),"aria-keyshortcuts":J(s.deny)||void 0,onClick:()=>c.onDeny(e,_),children:[f(`board:card.deny`),(0,$.jsx)(Le,{binding:s.deny})]}),(0,$.jsxs)(K,{size:`sm`,tabIndex:m,disabled:t||n,loading:t,"aria-label":f(`board:sidebar.approveNamed`,{title:S}),"aria-keyshortcuts":J(s.approve)||void 0,onClick:()=>c.onApprove(e,_),children:[f(`board:card.approve`),(0,$.jsx)(Le,{binding:s.approve})]})]})}else z=te}else if(e.status===`question`){let t=e.question,n=_e(t),r=t?c.isPending(`answer`,e.id,t.id):!1,i=t?.questions[0];I=t?(0,$.jsxs)(`div`,{className:`grid min-w-0 gap-1.5`,children:[(0,$.jsxs)(`p`,{"data-row-question":!0,className:`min-w-0 text-[13px] leading-5 break-words text-content`,children:[i?.header&&(0,$.jsxs)(`span`,{className:`text-content-muted`,children:[i.header,` · `]}),i?.question,t.questions.length>1&&(0,$.jsxs)(`span`,{className:`text-content-muted`,children:[` `,`· `,f(`board:sidebar.reason.questions`,{count:t.questions.length})]})]}),n&&(0,$.jsxs)(`div`,{"data-question-pills":!0,role:`group`,"aria-label":i?.question,className:`flex min-w-0 flex-wrap gap-1.5`,children:[n.map((t,n)=>(0,$.jsxs)(K,{variant:`outline`,size:`sm`,tabIndex:m,disabled:r,"data-question-pill":t,"aria-label":f(`board:question.answerNamed`,{title:S,option:t}),"aria-keyshortcuts":String(n+1),className:G(`h-auto min-h-7 max-w-full whitespace-normal`,d&&`min-h-11`),onClick:()=>c.onAnswer(e,t),children:[!d&&(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`font-mono text-[11px] opacity-60 pointer-coarse:hidden`,children:n+1}),(0,$.jsx)(`span`,{className:`break-words text-left`,children:t})]},t)),(0,$.jsx)(K,{variant:`ghost`,size:`sm`,tabIndex:m,className:G(`h-auto min-h-7`,d&&`min-h-11`),onClick:C,children:f(`board:question.other`)})]})]}):null,z=n?null:te}else if(e.status===`failed`&&h){let t=Re(e.error)||[...e.tail].reverse().find(be)?.trim()||``,n=c.isPending(`retry`,e.id);I=t?(0,$.jsx)(`p`,{"data-card-error":!0,className:`min-w-0 truncate font-mono text-xs leading-5 text-content-secondary`,children:t}):null,z=(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(K,{variant:`outline`,size:`sm`,tabIndex:m,onClick:C,children:f(`board:overview.log`)}),(0,$.jsxs)(K,{size:`sm`,tabIndex:m,loading:n,disabled:n,"aria-label":f(`board:overview.retryNamed`,{title:S}),"aria-keyshortcuts":J(s.retry)||void 0,onClick:()=>c.onRetry(e),children:[f(`board:card.retry`),(0,$.jsx)(Le,{binding:s.retry})]})]})}else if(e.lane===`running`){let n=e.activity,r=e.agents,i=null;if(n?.type===`tool`){let e=n.startedAt?Date.parse(n.startedAt):NaN,r=[n.name,n.summary].filter(Boolean).join(` · `),a=Number.isFinite(e)?w(Math.max(0,t-e)):``;i=(0,$.jsxs)(`span`,{className:`min-w-0 truncate`,children:[r,a&&(0,$.jsxs)(`span`,{className:`text-content-muted`,children:[` · `,a]})]})}else if(e.tail.length)i=(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:e.tail.at(-1)});else if(n?.type===`model`){let e={starting:f(`board:activity.starting`),thinking:f(`board:activity.thinking`),responding:f(`board:activity.responding`),compacting:f(`board:activity.compacting`)}[n.stage]||f(`board:activity.working`);i=(0,$.jsx)(`span`,{className:`min-w-0 truncate font-sans`,children:e})}(i||r&&r.total>0)&&(I=(0,$.jsxs)(`p`,{"data-card-activity":!0,className:`flex min-w-0 items-center gap-2 font-mono text-xs leading-5 text-content-secondary`,children:[i,r&&r.total>0&&(0,$.jsxs)(`span`,{"data-card-agents":!0,className:`flex flex-none items-center gap-1 font-sans text-content-muted`,title:f(`board:card.subAgentProgress`,r),children:[(0,$.jsx)(g,{className:`size-3`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{"aria-hidden":`true`,children:f(`board:overview.subAgents`,{running:r.running,total:r.total})}),(0,$.jsx)(`span`,{className:`sr-only`,children:f(`board:card.subAgentProgress`,r)})]})]}))}else if(e.lane===`queued`){let t=e.queue?.startAfterTitle?f(`board:overview.queuedAfter`,{title:e.queue.startAfterTitle}):f(`board:overview.queuedAfterUnknown`);I=(0,$.jsx)(`p`,{"data-queue-detail":!0,className:`min-w-0 truncate text-xs leading-5 text-content-secondary`,children:e.queuePosition?`${t} · ${f(`board:overview.queuePosition`,{n:e.queuePosition})}`:t}),u&&(z=(0,$.jsx)(K,{variant:`outline`,size:`sm`,tabIndex:m,disabled:c.isPending(`start`,e.id),"data-start-now":e.id,onClick:()=>u(e),children:f(`board:overview.startNow`)}))}else if(e.lane===`done`){let t=Re(e.preview);I=t?(0,$.jsx)(`p`,{"data-card-preview":!0,className:`min-w-0 truncate text-xs leading-5 text-content-secondary`,children:t}):null;let n=Se(e);z=n?(0,$.jsx)(Ne,{...n}):e.changeStats?null:(0,$.jsx)(Pe,{sessionId:e.id,completedAt:typeof e.session.lastCompletedAt==`string`?e.session.lastCompletedAt:null})}return d&&h?(0,$.jsxs)(`article`,{ref:p,"data-board-card":e.id,"data-overview-row":!0,"data-overview-card":!0,"data-lane":e.lane,"data-status":e.status,"data-severity":e.severity??void 0,tabIndex:m,"aria-label":f(`board:card.label`,{title:S,status:j}),"aria-keyshortcuts":`Enter`,onFocus:t=>{(t.target===t.currentTarget||t.currentTarget.contains(t.target))&&c.onFocusCard(e.id)},onPointerDownCapture:e=>{D.current=Ie(e.target)},onClick:O,onKeyDown:A,className:G(`relative flex min-w-0 cursor-pointer flex-col gap-2 rounded-[14px] border border-st-attn-border bg-panel p-3.5 shadow-edge transition-opacity duration-(--d-fast) focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus`,a&&`opacity-50`),children:[(0,$.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[16px_minmax(0,1fr)_auto] items-start gap-x-2.5`,children:[(0,$.jsx)(`span`,{className:`mt-0.5 grid size-4 place-items-center`,children:(0,$.jsx)(X,{status:Ce(e),phase:o})}),(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,$.jsxs)(`p`,{className:`flex min-w-0 items-center gap-1.5 text-base leading-5 font-medium text-content`,children:[e.bot&&(0,$.jsx)(Z,{character:e.bot.character,color:e.bot.color,size:18}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:S})]}),(0,$.jsxs)(`p`,{className:`flex min-w-0 items-baseline gap-1 text-xs leading-5`,children:[(0,$.jsxs)(`span`,{"data-row-status":!0,className:`flex-none text-warning-strong`,children:[j,M&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,children:` · `}),(0,$.jsx)(`b`,{"data-row-tool":!0,className:`font-mono font-medium`,children:M})]})]}),n&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`text-content-faint`,children:`·`}),(0,$.jsx)(`span`,{"data-row-project":!0,className:`min-w-0 truncate font-mono text-content-muted`,title:e.cwd||void 0,children:n})]})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[P&&(0,$.jsxs)(`span`,{"data-row-time":!0,className:`text-xs text-content-muted tabular-nums`,children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,children:P}),(0,$.jsx)(`span`,{className:`sr-only`,children:F})]}),(0,$.jsx)(b,{row:{id:e.id,title:S,pinned:e.pinned},actions:l,canMarkHandled:e.status===`failed`,align:`end`,tabIndex:m,className:`size-11`})]})]}),I&&(0,$.jsx)(`div`,{className:`min-w-0 pl-[26px]`,children:I}),z&&(0,$.jsx)(`div`,{"data-card-actions":!0,className:`grid grid-cols-2 gap-2 [&>button]:h-11 [&>button]:w-full [&>button]:text-sm [&>button:only-child]:col-span-2`,children:z})]}):(0,$.jsxs)(`article`,{ref:p,"data-board-card":e.id,"data-overview-row":!0,"data-lane":e.lane,"data-status":e.status,"data-severity":e.severity??void 0,tabIndex:m,"aria-label":f(`board:card.label`,{title:S,status:j}),"aria-keyshortcuts":`Enter`,onFocus:t=>{(t.target===t.currentTarget||t.currentTarget.contains(t.target))&&c.onFocusCard(e.id)},onPointerDownCapture:e=>{D.current=Ie(e.target)},onClick:O,onKeyDown:A,className:G(`group/row relative grid min-h-[52px] min-w-0 cursor-pointer grid-cols-[16px_minmax(0,1fr)_auto] items-start gap-x-3 rounded-[var(--r-md)] px-3 py-[11px] transition-[opacity,background-color] duration-(--d-fast) hover:bg-surface-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus`,a&&`opacity-50`),children:[(0,$.jsx)(`span`,{className:`mt-0.5 grid size-4 place-items-center`,children:(0,$.jsx)(X,{status:Ce(e),phase:o})}),(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,$.jsxs)(`p`,{className:`flex min-w-0 items-baseline gap-2.5 leading-5`,children:[e.bot&&(0,$.jsx)(Z,{character:e.bot.character,color:e.bot.color,size:18,className:`self-center`}),(0,$.jsx)(`span`,{className:G(`min-w-0 truncate text-base font-medium`,e.lane===`done`?`text-content-secondary`:`text-content`),children:S}),(0,$.jsxs)(`span`,{"data-row-status":!0,className:G(`flex-none text-xs`,h?`text-warning-strong`:`text-content-muted`),children:[j,M&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,children:` · `}),(0,$.jsx)(`b`,{"data-row-tool":!0,className:`font-mono font-medium`,children:M})]})]}),n&&(0,$.jsx)(`span`,{"data-row-project":!0,className:`min-w-0 shrink truncate font-mono text-xs text-content-muted`,title:e.cwd||void 0,children:n}),e.bot?.branch&&(0,$.jsx)(`span`,{"data-row-bot-branch":!0,className:`min-w-0 shrink truncate font-mono text-xs text-content-muted`,children:e.bot.changedFiles?f(`board:card.botBranchFiles`,{branch:e.bot.branch,count:e.bot.changedFiles}):e.bot.branch}),e.pinned&&(0,$.jsx)(R,{className:`size-3 flex-none self-center text-content-muted`,strokeWidth:1.75,role:`img`,"aria-label":f(`board:card.pinned`)})]}),I]}),(0,$.jsxs)(`div`,{className:`flex min-h-[30px] items-center gap-2 self-start`,children:[z&&(0,$.jsx)(`div`,{className:`flex items-center gap-1.5`,children:z}),(0,$.jsxs)(`div`,{className:G(`relative flex min-h-[30px] items-center justify-end pointer-coarse:gap-2`,!P&&`min-w-[26px]`),children:[P&&(0,$.jsxs)(`span`,{"data-row-time":!0,className:G(`min-w-[44px] text-right text-xs text-content-muted tabular-nums transition-opacity duration-(--d-fast) group-focus-within/row:opacity-0 group-hover/row:opacity-0 group-has-[[data-state=open]]/row:opacity-0 pointer-coarse:opacity-100`,e.lane===`running`&&`font-mono text-content-secondary`),children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,children:P}),(0,$.jsx)(`span`,{className:`sr-only`,children:F})]}),(0,$.jsx)(b,{row:{id:e.id,title:S,pinned:e.pinned},actions:l,canMarkHandled:h&&e.status===`failed`,align:`end`,tabIndex:m,className:`absolute top-1/2 right-0 -translate-y-1/2 opacity-0 group-focus-within/row:opacity-100 group-hover/row:opacity-100 data-[state=open]:opacity-100 pointer-coarse:static pointer-coarse:translate-y-0 pointer-coarse:opacity-100`})]})]})]})}var Be=(0,Q.memo)(ze);function Ve({project:e,first:t,last:n,deleting:r,actions:a}){let{t:o}=i(),s=(0,Q.useRef)(null),c=!!e.cwd;return(0,$.jsxs)(W,{children:[(0,$.jsx)(U,{asChild:!0,children:(0,$.jsx)(K,{variant:`ghost`,size:`icon-sm`,className:`flex-none`,"aria-label":o(`board:project.actionsFor`,{project:e.label}),title:o(`board:project.actionsFor`,{project:e.label}),children:(0,$.jsx)(_,{"aria-hidden":`true`})})}),(0,$.jsxs)(ae,{align:`end`,className:`w-52`,onCloseAutoFocus:e=>{let t=s.current;t&&(s.current=null,e.preventDefault(),t())},children:[c&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(H,{onSelect:()=>s.current=()=>a.onNewTask(e),children:[(0,$.jsx)(z,{"aria-hidden":`true`}),o(`board:project.newTaskHere`)]}),(0,$.jsxs)(H,{onSelect:()=>a.onRename(e),children:[(0,$.jsx)(je,{"aria-hidden":`true`}),o(`board:project.rename`)]}),e.custom&&(0,$.jsxs)(H,{onSelect:()=>a.onResetName(e),children:[(0,$.jsx)(te,{"aria-hidden":`true`}),o(`board:project.resetName`)]})]}),(0,$.jsxs)(H,{disabled:t,onSelect:()=>a.onMove(e,-1),children:[(0,$.jsx)(p,{"aria-hidden":`true`}),o(`board:project.moveUpShort`)]}),(0,$.jsxs)(H,{disabled:n,onSelect:()=>a.onMove(e,1),children:[(0,$.jsx)(d,{"aria-hidden":`true`}),o(`board:project.moveDownShort`)]}),(0,$.jsxs)(H,{onSelect:()=>s.current=a.onManage,children:[(0,$.jsx)(v,{"aria-hidden":`true`}),o(`board:project.manage`)]}),(0,$.jsx)(V,{}),(0,$.jsxs)(H,{variant:`destructive`,disabled:r,onSelect:()=>a.onDelete(e),children:[(0,$.jsx)(re,{"aria-hidden":`true`}),o(`board:project.delete`)]})]})]})}var He=1200;function Ue({items:e,laneName:t,template:n,separator:r,skipAttention:i}){let a=(0,Q.useRef)(null),o=(0,Q.useRef)([]),s=(0,Q.useRef)(null),[c,l]=(0,Q.useState)(``),u=(0,Q.useCallback)(e=>{o.current.push(e),!s.current&&(s.current=setTimeout(()=>{s.current=null,l(o.current.splice(0).join(r))},He))},[r]);return(0,Q.useEffect)(()=>()=>{s.current&&clearTimeout(s.current)},[]),(0,Q.useLayoutEffect)(()=>{let r=a.current;if(a.current=new Map(e.map(e=>[e.id,e.lane])),r)for(let a of e){let e=r.get(a.id);e!==void 0&&e!==a.lane&&(i&&a.lane===`attention`||u(n(a.title,t[a.lane])))}},[u,e,t,i,n]),c}var We=null;function Ge(e){We=e}function Ke(){return We}function qe(){We=null}var Je=1600,Ye=`[data-overview-scroller]`;function Xe(e,t){return e?.querySelector(`[data-board-card="${CSS.escape(t)}"]`)??null}function Ze(e){return e.dataset.overviewScroller===void 0?`other`:`overview`}function Qe(e){let t=N(e);return t.kind===`decide`?e.approvals.find(e=>e.id===t.approvalId)??null:null}function $e(){return new Promise(e=>requestAnimationFrame(()=>e()))}function et({rootRef:e,order:t,attention:n,attentionAll:r,onRevealAttention:a,reveal:o,ready:s,notify:c,sessionHref:l,onOpenSession:u,onToggleGrouping:d}){let{t:f}=i(),p=F(),m=pe(e=>e.boardBindings),[h,g]=(0,Q.useState)(``),[_,v]=(0,Q.useState)(null),y=(0,Q.useRef)(p);y.current=p;let b=(0,Q.useRef)(t);b.current=t;let x=(0,Q.useRef)(n);x.current=n;let S=(0,Q.useRef)(r);S.current=r;let w=(0,Q.useRef)(o);w.current=o;let[T,ee]=(0,Q.useState)(!1),E=(0,Q.useMemo)(()=>t.map(e=>e.id),[t]),D=E.includes(h)?h:E[0]??``,O=(0,Q.useCallback)(async t=>{if(!t)return;g(t),await $e();let n=(w.current?await w.current(t):null)??Xe(e.current,t);n?.scrollIntoView({block:`nearest`}),n?.focus({preventScroll:!0})},[e]),k=(0,Q.useCallback)(e=>{let t=x.current,n=t.findIndex(t=>t.id===e);return n<0?t[0]?.id??``:t[n+1]?.id??t[n-1]?.id??``},[]),A=(0,Q.useCallback)(t=>{let n={};e.current?.querySelectorAll(Ye).forEach(e=>{n[Ze(e)]=e.scrollTop}),Ge({focusId:t,scroll:n}),u(t)},[u,e]),j=(0,Q.useCallback)(e=>{e.ok||e.reason===`pending`||c(f(`board:action.failed`),`error`)},[c,f]),M=(0,Q.useCallback)(t=>C(Xe(e.current,t),{duration:180,scale:.9}),[e]),N=(0,Q.useCallback)(t=>Xe(e.current,t)?.getAnimations().forEach(e=>e.cancel()),[e]),P=(0,Q.useCallback)(async(e,t)=>{let n=k(e.id),r=e.approvals.length<=1;r&&await M(e.id);let i=await y.current.approve(e.id,t.id,{confirmCritical:!1});return i.ok?(r&&n&&O(n),i):(N(e.id),i)},[M,O,k,N]),I=(0,Q.useMemo)(()=>({onFocusCard:g,onOpen:A,onApprove:(e,t)=>{if(t.severity===`critical`){A(e.id);return}P(e,t).then(t=>{!t.ok&&t.reason===`confirmation-required`?A(e.id):j(t)})},onDeny:(e,t)=>{let n=k(e.id),r=e.approvals.length<=1;(async()=>{r&&await M(e.id);let i=await y.current.deny(e.id,t.id);i.ok||N(e.id),j(i),i.ok&&r&&n&&O(n)})()},onRetry:e=>{let t=k(e.id);(async()=>{await M(e.id);let n=await y.current.retry(e.id);n.ok||N(e.id),j(n),n.ok&&t&&O(t)})()},onAnswer:(e,t)=>{let n=e.question;if(!n||!_e(n)?.includes(t)){A(e.id);return}let r=k(e.id);(async()=>{await M(e.id);let i=await y.current.answer(e.id,n.id,t);i.ok||N(e.id),j(i),i.ok&&r&&O(r)})()},onStartNow:e=>void y.current.startNow(e.id).then(j),onMarkHandled:e=>void y.current.markHandled(e.id).then(j),onPin:e=>void y.current.pin(e.id,!e.pinned).then(j),onArchive:e=>void y.current.archive(e.id,!0).then(t=>{t.ok?c(f(`board:action.archived`,{title:e.title})):j(t)}),onCopyLink:e=>{let t=l(e.id),n=typeof navigator<`u`?navigator.clipboard:void 0;if(!n){c(f(`board:action.copyFailed`),`error`);return}n.writeText(t).then(()=>c(f(`board:action.copied`)),()=>c(f(`board:action.copyFailed`),`error`))},isPending:(e,t,n)=>p.isPending(e,t,n)}),[p,P,M,O,k,c,A,j,N,l,f]),L=(0,Q.useCallback)(()=>{if(S.current.length-x.current.length>0&&a){ee(!0),a();return}let e=x.current[0];if(!e){c(f(`board:triage.nothing`));return}v({total:x.current.length,finished:!1}),O(e.id)},[O,c,a,f]);(0,Q.useEffect)(()=>{!T||n.length<r.length||(ee(!1),L())},[n.length,r.length,L,T]);let R=(0,Q.useCallback)(()=>v(null),[]);(0,Q.useEffect)(()=>{if(!_||_.finished)return;if(n.length===0){v({..._,finished:!0});return}let e=_.total-Math.min(_.total,n.length);e+n.length>_.total&&v({..._,total:e+n.length})},[n.length,_]),(0,Q.useEffect)(()=>{if(!_?.finished)return;let e=setTimeout(()=>v(null),Je);return()=>clearTimeout(e)},[_?.finished]);let z=(0,Q.useCallback)(e=>{let t=_?x.current:b.current;if(!t.length)return;let n=t.findIndex(e=>e.id===D),r=n<0?0:Math.max(0,Math.min(t.length-1,n+e));O(t[r].id)},[D,O,_]);(0,Q.useEffect)(()=>{let t=t=>{if(fe(t)||me(t.target))return;let n=e.current,r=t.target instanceof HTMLElement?t.target:null,i=!!r?.closest(`[data-board-card]`);if(!(r&&n?.contains(r)||r===document.body))return;let a=!t.ctrlKey&&!t.metaKey&&!t.altKey&&!t.shiftKey,o=i||!!_,s=b.current.find(e=>e.id===D),c=o&&a&&/^[1-4]$/.test(t.key)&&s?.status===`question`?_e(s.question)?.[Number(t.key)-1]:void 0,l=!0;if(t.key===`Escape`&&_)R();else if(q(t,m.boardNext)||i&&a&&t.key===`ArrowDown`)z(1);else if(q(t,m.boardPrevious)||i&&a&&t.key===`ArrowUp`)z(-1);else if(q(t,m.boardToggleGrouping))d();else if(q(t,m.boardTriage))_?R():L();else if(o&&q(t,m.boardApprove)&&s?.status===`approval`){let e=Qe(s);e&&I.onApprove(s,e)}else if(o&&q(t,m.boardDeny)&&s?.status===`approval`){let e=Qe(s);e&&I.onDeny(s,e)}else o&&q(t,m.boardRetry)&&s?.status===`failed`&&s.lane===`attention`?I.onRetry(s):s&&c?I.onAnswer(s,c):t.key===`Enter`&&a&&!i&&s&&_?A(s.id):l=!1;l&&t.preventDefault()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[m,D,R,I,z,d,A,e,L,_]),(0,Q.useLayoutEffect)(()=>{let t=e.current;return()=>{if(!t||Ke())return;let e=document.activeElement,n=e instanceof HTMLElement&&t.contains(e)?e.closest(`[data-board-card]`):null,r={};t.querySelectorAll(Ye).forEach(e=>{r[Ze(e)]=e.scrollTop}),Ge({focusId:n?.dataset.boardCard??``,scroll:r})}},[e]),(0,Q.useLayoutEffect)(()=>{let t=Ke();!t||!s||!E.length||(qe(),e.current?.querySelectorAll(Ye).forEach(e=>{let n=Ze(e);n in t.scroll&&(e.scrollTop=t.scroll[n])}),E.includes(t.focusId)&&(g(t.focusId),requestAnimationFrame(()=>{(async()=>{((w.current?await w.current(t.focusId):null)??Xe(e.current,t.focusId))?.focus({preventScroll:!0})})()})))},[E,s,e]);let te=_?Math.min(_.total,_.total-Math.min(_.total,n.length)+1):0;return{actions:p,handlers:I,activeId:D,focusCard:O,triage:_?{..._,index:te}:null,startTriage:L,exitTriage:R,bindings:m}}var tt=Object.freeze({approve:null,deny:null,retry:null}),nt=(0,Q.lazy)(()=>t(()=>import(`./WorkspacePicker-BJhBGRH0.js`).then(e=>e.n).then(e=>({default:e.WorkspacePicker})),__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]))),rt=(0,Q.lazy)(()=>t(()=>import(`./ManageProjectsDialog-Dtb2K7BK.js`).then(e=>({default:e.ManageProjectsDialog})),__vite__mapDeps([24,1,2,3,4,5,6,7,8,9,10,25,26,27,28,29,30,16,14,13,15,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,17,18,19,20,21]))),it=`(min-width: 1280px)`;function at(e){let t=l(),{t:n}=i();return(0,Q.useEffect)(()=>(document.title=`${n(`board:page.title`)} · ${ie}`,()=>{document.title=ie}),[n]),(0,$.jsx)(ot,{...e,phone:t},t?`phone`:`desktop`)}function ot({activeSessionId:e,onOpenSession:t,onOpenHistory:n,sessionHref:r,notify:a,requestConfirm:l,requestText:u,onNewTask:d,phone:f}){let{t:p}=i(),m=s(`overview-card`).placed,h=c(it),g=m.length?f?`phone`:h?`column`:`popover`:null,_=n=>(0,$.jsx)(Q.Suspense,{fallback:null,children:(0,$.jsx)(o,{placed:m,layout:n,activeSessionId:e,notify:a,onOpenSession:t})}),v=ve({doneWindow:`today`}),y=j(),b=he(e=>e.collapsed),C=Me(),w=(0,Q.useRef)(null),E=(0,Q.useRef)(null),k=M(),N=D(v.projects),P=y.collapsedLanes.includes(`done`),F=f?y.groupBy:`lane`,L=(0,Q.useMemo)(()=>x(v.all,{now:k,groupBy:F,capabilities:v.capabilities,lanes:y.lanes,projects:y.projects,projectOrder:N,doneCollapsed:P}),[v.all,v.capabilities,P,k,N,F,y.lanes,y.projects]),R=(0,Q.useMemo)(()=>new Map(N.map(e=>[e.key,e])),[N]),z=L.counts.attention+L.counts.running>0,te=A(z),re=!v.isLoading&&!(v.error&&v.total===0),B=(0,Q.useMemo)(()=>{let e=[];for(let t of L.sections){let n=t.kind===`status`?`status:${t.id}`:`project:${t.key}`;if(e.push({kind:`header`,key:n,section:t}),t.kind===`status`&&t.id===`done`&&P)continue;!t.items.length&&t.kind===`status`&&e.push({kind:`empty`,key:`${n}:empty`,lane:t.id});let r=0;for(let n of t.items)e.push({kind:`row`,key:n.id,item:n,phase:n.lane===`running`?r++*.381966%1:0})}return e},[P,L.sections]),ie=L.order.length,V=T(ie),H=(0,Q.useRef)(-1),U=Ae({count:V?B.length:0,getScrollElement:()=>E.current,estimateSize:e=>B[e]?.kind===`row`?64:40,overscan:8,getItemKey:e=>B[e]?.key??e,rangeExtractor:e=>{let t=ke(e),n=H.current;return n<0||n>=e.count||t.includes(n)?t:[...t,n].sort((e,t)=>e-t)}}),ae=(0,Q.useCallback)(async e=>{let t=()=>w.current?.querySelector(`[data-board-card="${CSS.escape(e)}"]`)??null;if(!V||t())return t();let n=B.findIndex(t=>t.kind===`row`&&t.key===e);if(n<0)return null;U.scrollToIndex(n,{align:`auto`});for(let e=0;e<3&&!t();e+=1)await new Promise(e=>requestAnimationFrame(()=>e()));return t()},[B,V,U]),W=et({rootRef:w,order:L.order,attention:L.attention,attentionAll:L.attentionAll,onRevealAttention:y.clearFilters,reveal:ae,ready:!v.isLoading,notify:a,sessionHref:r,onOpenSession:t,onToggleGrouping:()=>{f&&y.setGroupBy(y.groupBy===`lane`?`project`:`lane`)}});H.current=V?B.findIndex(e=>e.kind===`row`&&e.key===W.activeId):-1;let se=O({notify:a,requestText:u,onOpenSession:W.handlers.onOpen}),[ce,le]=(0,Q.useState)(``),ue=W.focusCard,de=(0,Q.useRef)(L.order);de.current=L.order;let fe=(0,Q.useRef)(L.attentionAll);fe.current=L.attentionAll,(0,Q.useEffect)(()=>{let e=e=>{let t=e.detail?.sessionId;if(t){if(de.current.some(e=>e.id===t)){ue(t);return}fe.current.some(e=>e.id===t)&&(le(t),j.getState().clearFilters())}};return window.addEventListener(S,e),()=>window.removeEventListener(S,e)},[ue]),(0,Q.useEffect)(()=>{!ce||!L.order.some(e=>e.id===ce)||(le(``),ue(ce))},[ue,L.order,ce]);let pe=Ue({items:v.all,laneName:C.name,template:(0,Q.useCallback)((e,t)=>p(`board:announce.moved`,{title:e,lane:t}),[p]),separator:p(`board:sidebar.announceSeparator`),skipAttention:!0}),q=ee({notify:a,requestConfirm:l,requestText:u,onProjectChosen:d,announceChoice:!0}),[me,_e]=(0,Q.useState)(!1),[ye,be]=(0,Q.useState)(!1),xe=ge(e=>e.moveWorkspace),Se=(0,Q.useMemo)(()=>L.sections.flatMap(e=>e.kind===`project`&&R.has(e.key)?[e.key]:[]),[L.sections,R]),Ce=(0,Q.useMemo)(()=>({onNewTask:e=>{I.getState().rememberLaunch({cwd:e.cwd}),d()},onRename:e=>void q.rename(e),onResetName:e=>q.resetName(e),onMove:(e,t)=>xe(e.key,t,Se),onManage:()=>{_e(!0),be(!0)},onDelete:e=>void q.remove(e)}),[q,xe,d,Se]),{mounted:we,...Te}=q.picker,Y=W.bindings,Ee=(0,Q.useMemo)(()=>({approve:Y.boardApprove,deny:Y.boardDeny,retry:Y.boardRetry}),[Y.boardApprove,Y.boardDeny,Y.boardRetry]),X=W.triage,De=F===`lane`,Z=e=>{let t=B[0]!==e;if(e.kind===`header`)return e.section.kind===`status`?(0,$.jsx)(ut,{spaced:t,lane:e.section.id,count:e.section.items.length,collapsed:e.section.id===`done`&&P,dimmed:!!X&&e.section.id!==`attention`,onToggle:e.section.id===`done`?()=>y.setLaneCollapsed(`done`,!P):void 0}):(0,$.jsx)(dt,{spaced:t,section:e.section,project:R.get(e.section.key),first:Se[0]===e.section.key,last:Se.at(-1)===e.section.key,actions:Ce,deleting:!!q.busyKey});if(e.kind===`empty`)return(0,$.jsx)(`p`,{className:G(`py-2 pr-3 pl-[40px] text-xs leading-5 text-content-muted`,X&&e.lane!==`attention`&&`opacity-50`),children:e.lane===`attention`?p(`board:sidebar.emptyAttention`):p(`board:sidebar.emptyRunning`)});let n=e.item,r=f&&n.lane===`attention`,i=(0,$.jsx)(Be,{item:n,now:te,project:De?R.get(n.workspaceKey)?.label??``:``,active:n.id===W.activeId,dimmed:!!X&&n.lane!==`attention`,phase:e.phase,bindings:f?tt:Ee,handlers:W.handlers,menu:se,card:r,onStartNow:W.handlers.onStartNow});return r?(0,$.jsx)(`div`,{className:`py-1`,children:i}):i},je;je=v.isLoading?(0,$.jsx)(Oe,{kind:`loading`,title:p(`board:page.loading`)}):v.error&&v.total===0?(0,$.jsx)(Oe,{kind:`error`,title:p(`board:page.error`),description:p(`board:page.errorHint`),action:(0,$.jsx)(K,{variant:`secondary`,onClick:()=>void v.refresh(),children:p(`board:page.retry`)})}):L.total===0?(0,$.jsxs)(`div`,{"data-overview-empty":!0,className:`flex flex-col items-center gap-3 py-24 text-center`,children:[(0,$.jsx)(`p`,{className:`text-base text-content-secondary`,children:p(`board:overview.empty`)}),(0,$.jsxs)(K,{variant:`outline`,onClick:d,children:[(0,$.jsx)(ne,{"aria-hidden":`true`}),p(`board:overview.newTask`)]}),!v.catalogEmpty&&(0,$.jsx)(st,{onClick:n})]}):L.filteredEmpty?(0,$.jsx)(Oe,{kind:`empty`,title:p(`board:filter.emptyTitle`),description:p(`board:filter.emptyHint`),action:(0,$.jsx)(K,{variant:`secondary`,onClick:y.clearFilters,children:p(`board:filter.clear`)})}):V?(0,$.jsx)(`div`,{"data-overview-list":!0,"data-virtual":!0,className:`relative w-full`,style:{height:U.getTotalSize()},children:U.getVirtualItems().map(e=>{let t=B[e.index];return t?(0,$.jsx)(`div`,{ref:U.measureElement,"data-index":e.index,className:`absolute inset-x-0 top-0`,style:{transform:`translateY(${e.start}px)`},children:Z(t)},e.key):null})}):(0,$.jsx)(`div`,{"data-overview-list":!0,className:`flex flex-col`,children:L.sections.map(e=>{let t=e.kind===`status`?`status:${e.id}`:`project:${e.key}`,[n,...r]=B.filter(n=>n.key===t||n.key===`${t}:empty`||n.kind===`row`&&e.items.includes(n.item)),i=r.filter(e=>e.kind===`row`),a=r.find(e=>e.kind===`empty`);return(0,$.jsxs)(`section`,{"aria-labelledby":`overview-${t}`,"data-overview-section":e.kind===`status`?e.id:e.key,children:[n&&Z(n),a&&Z(a),i.length>0&&(0,$.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:i.map(e=>(0,$.jsx)(`li`,{"data-card":f&&e.item.lane===`attention`||void 0,className:`relative [&+&]:before:absolute [&+&]:before:top-0 [&+&]:before:right-3 [&+&]:before:left-10 [&+&]:before:h-px [&+&]:before:bg-stroke data-[card]:before:hidden [[data-card]+&]:before:hidden`,children:Z(e)},e.key))})]},t)})});let Ne=y.lanes.length>0||y.projects.length>0;return(0,$.jsxs)(`div`,{ref:w,"data-board-root":!0,"data-overview":!0,className:`relative flex h-full min-h-0 w-full min-w-0 flex-col bg-background`,children:[!f&&(0,$.jsx)(`div`,{"data-window-drag-region":!0,"aria-hidden":`true`,className:`h-[52px] flex-none`}),(0,$.jsx)(`div`,{ref:E,"data-overview-scroller":!0,className:`min-h-0 flex-1 overflow-y-auto overscroll-contain pb-20`,children:(0,$.jsxs)(`div`,{className:G(`mx-auto flex w-full gap-10 px-6 max-[650px]:px-4`,g===`column`?`max-w-[1280px]`:`max-w-[928px]`),children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[f&&(0,$.jsx)(`h1`,{className:`sr-only`,children:p(`board:page.title`)}),f?re&&L.total>0&&(0,$.jsx)(`div`,{className:`sticky top-0 z-[1] -mx-4 mb-2 bg-background px-4 pt-1 pb-2`,children:(0,$.jsx)(oe,{size:`default`,"aria-label":p(`board:group.label`),value:y.groupBy,onValueChange:y.setGroupBy,className:`grid h-11 w-full grid-cols-2 [&>button]:h-full`,options:[{value:`lane`,label:p(`board:group.lane`)},{value:`project`,label:p(`board:group.project`)}]})}):(0,$.jsxs)(`header`,{"data-focus-region":`header`,className:`mb-5 flex min-w-0 flex-wrap items-end gap-x-4 gap-y-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`h1`,{className:`text-2xl leading-8 font-semibold tracking-[-.01em] text-content`,children:p(`board:page.title`)}),re&&L.total>0&&(0,$.jsx)(ct,{agents:L.total,projects:L.projectCount,running:L.running})]}),g===`popover`&&_(`popover`),re&&L.total>0&&(0,$.jsxs)(K,{variant:`outline`,onClick:d,children:[(0,$.jsx)(ne,{"aria-hidden":`true`}),p(`board:overview.newTask`)]})]}),re&&Ne&&(b||f)&&L.total>0&&(0,$.jsx)(lt,{lanes:y.lanes,projects:y.projects.map(e=>R.get(e)?.label??``).filter(Boolean),laneName:C.name,onClear:y.clearFilters}),je,re&&L.total>0&&!L.filteredEmpty&&(0,$.jsx)(`div`,{className:G(`mt-3 pl-1`,X&&`opacity-50`),children:(0,$.jsx)(st,{onClick:n})}),g===`phone`&&(0,$.jsx)(`section`,{"aria-label":p(`board:overview.widgets`),"data-overview-widgets":`phone`,children:_(`phone`)})]}),g===`column`&&(0,$.jsx)(`aside`,{"data-overview-widgets":`column`,"aria-label":p(`board:overview.widgets`),className:G(`w-80 flex-none`,X&&`opacity-50`),children:_(`column`)})]})}),X&&(0,$.jsx)(ft,{index:X.index,total:X.total,finished:X.finished,answers:v.capabilities.askUser,keys:{approve:J(Y.boardApprove),deny:J(Y.boardDeny),retry:J(Y.boardRetry)},onExit:W.exitTriage}),(0,$.jsx)(`p`,{"aria-live":`polite`,role:`status`,className:`sr-only`,children:pe}),we&&(0,$.jsx)(Q.Suspense,{fallback:null,children:(0,$.jsx)(nt,{...Te})}),me&&(0,$.jsx)(Q.Suspense,{fallback:null,children:(0,$.jsx)(rt,{open:ye,onOpenChange:be,commands:q})})]})}function st({onClick:e}){let{t}=i();return(0,$.jsxs)(`button`,{type:`button`,"data-overview-history":!0,className:`inline-flex h-8 items-center gap-1 rounded-[var(--r-sm)] px-2 text-[13px] text-content-muted transition-colors duration-(--d-fast) hover:bg-surface-hover hover:text-content-secondary focus-visible:outline-2 focus-visible:outline-focus pointer-coarse:h-11`,onClick:e,children:[t(`board:lane.history`),(0,$.jsx)(f,{className:`size-3.5`,"aria-hidden":`true`})]})}function ct({agents:e,projects:t,running:n}){let{t:r}=i(),[a,o]=(0,Q.useState)(!1),s=ye(a),c=s.data?[s.data.subAgents?r(`board:overview.subAgentSlots`,{running:s.data.subAgents.running,max:s.data.subAgents.max}):``,s.data.todayTokens===null?``:r(`board:overview.todayTokens`,{tokens:Ee(s.data.todayTokens)}),s.data.memoryBytes===null?``:r(`board:overview.memory`,{memory:Y(s.data.memoryBytes)})].filter(Boolean):[],l=s.isPending?r(`board:overview.systemLoading`):c.length?c.join(` · `):r(`board:overview.systemUnavailable`);return(0,$.jsx)(le,{children:(0,$.jsxs)(ue,{open:a,onOpenChange:o,children:[(0,$.jsx)(se,{asChild:!0,children:(0,$.jsx)(`p`,{tabIndex:0,"data-overview-summary":!0,className:`mt-1 w-fit max-w-full truncate rounded-xs text-sm text-content-muted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus`,children:r(`board:page.summary`,{agents:e,projects:t,running:n})})}),(0,$.jsx)(ce,{side:`bottom`,align:`start`,sideOffset:6,"data-overview-system":!0,children:l})]})})}function lt({lanes:e,projects:t,laneName:n,onClear:r}){let{t:a}=i(),o=a(`board:filter.listSeparator`),s=[e.length?a(`board:filter.statusTitle`,{statuses:e.map(e=>n[e]).join(o)}):``,t.length?a(`board:filter.projectsTitle`,{projects:t.join(o)}):``].filter(Boolean);return(0,$.jsxs)(`div`,{"data-overview-filter":!0,className:`mb-3 flex min-w-0 items-center gap-2 rounded-[var(--r-md)] bg-surface-subtle py-1 pr-1 pl-3 text-xs text-content-secondary`,children:[(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:s.join(` · `)}),(0,$.jsxs)(K,{variant:`ghost`,size:`xs`,onClick:r,children:[(0,$.jsx)(B,{"aria-hidden":`true`}),a(`board:filter.clear`)]})]})}function ut({spaced:e,lane:t,count:n,collapsed:r,dimmed:a,onToggle:o}){let{t:s}=i(),c=s(t===`attention`?`board:sidebar.group.attention`:t===`running`?`board:sidebar.group.running`:t===`queued`?`board:sidebar.group.queued`:`board:sidebar.group.done`),l=t===`attention`&&n>0,u=`overview-status:${t}`,d=(0,$.jsxs)($.Fragment,{children:[c,(0,$.jsx)(`span`,{"data-overview-count":!0,className:G(`tabular-nums`,l?`inline-grid h-[18px] min-w-[18px] place-items-center rounded-full bg-warning-soft px-1.5 text-[11.5px] font-semibold ring-1 ring-st-attn-border ring-inset`:`text-content-muted`),children:n}),o&&(r?(0,$.jsx)(h,{className:`size-3.5`,"aria-hidden":`true`}):(0,$.jsx)(m,{className:`size-3.5`,"aria-hidden":`true`}))]}),f=G(`flex h-8 items-center gap-2 px-3 text-[13px] font-medium`,l?`text-warning-strong`:`text-content-secondary`);return(0,$.jsx)(`h2`,{id:u,"data-overview-heading":t,className:G(`m-0 transition-opacity duration-(--d-fast)`,e&&`mt-5`,a&&`opacity-50`),children:o?(0,$.jsx)(`button`,{type:`button`,"aria-expanded":!r,className:G(f,`rounded-[var(--r-md)] hover:text-content focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus pointer-coarse:h-11`),onClick:o,children:d}):(0,$.jsx)(`span`,{className:f,children:d})})}function dt({spaced:e,section:t,project:n,first:r,last:a,actions:o,deleting:s}){let{t:c}=i(),l=n?.label||c(`board:filter.noProject`),u=t.counts,d=[u.running?c(`board:overview.projectRunning`,{count:u.running}):``,u.queued?c(`board:overview.projectQueued`,{count:u.queued}):``,u.done?c(`board:overview.projectDone`,{count:u.done}):``].filter(Boolean);return(0,$.jsxs)(`div`,{"data-overview-heading":t.key,className:G(`flex h-9 min-w-0 items-center gap-2.5 pr-1 pl-3`,e&&`mt-6`),children:[(0,$.jsx)(P,{className:`size-3.5 flex-none text-content-muted`,strokeWidth:1.75,"aria-hidden":`true`}),(0,$.jsx)(`h2`,{id:`overview-project:${t.key}`,className:`m-0 min-w-0 truncate font-mono text-[13.5px] font-semibold text-content`,title:t.cwd||void 0,children:l}),(0,$.jsxs)(`p`,{className:`min-w-0 flex-1 truncate text-xs text-content-muted`,children:[u.attention>0&&(0,$.jsx)(`b`,{className:`font-medium text-warning-strong`,children:c(`board:overview.projectAttention`,{count:u.attention})}),u.attention>0&&d.length>0&&(0,$.jsx)(`span`,{"aria-hidden":`true`,children:` · `}),d.join(` · `)]}),n&&(0,$.jsx)(Ve,{project:n,first:r,last:a,deleting:s,actions:o})]})}function ft({index:e,total:t,finished:n,answers:r,keys:a,onExit:o}){let{t:s}=i(),c=(e,t)=>e?(0,$.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(de,{children:e}),t]}):null;return(0,$.jsx)(`div`,{role:`status`,"aria-live":`polite`,"data-triage-bar":!0,className:`absolute bottom-5 left-1/2 z-20 flex h-10 max-w-[calc(100%-32px)] -translate-x-1/2 items-center gap-3 overflow-hidden rounded-[var(--r-lg)] border border-stroke bg-solid px-3.5 text-[12.5px] whitespace-nowrap text-content-secondary shadow-float`,children:n?(0,$.jsx)(`b`,{className:`font-medium text-content`,children:s(`board:triage.finished`)}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`b`,{className:`font-medium text-content tabular-nums`,children:s(`board:triage.progress`,{index:e,total:t})}),c(a.approve,s(`board:triage.approve`)),c(a.deny,s(`board:triage.deny`)),c(a.retry,s(`board:triage.retry`)),r&&c(`1–4`,s(`board:triage.answer`)),c(`↵`,s(`board:triage.open`)),(0,$.jsxs)(K,{variant:`ghost`,size:`xs`,className:`-mr-1.5`,onClick:o,children:[(0,$.jsx)(de,{children:`Esc`}),s(`board:triage.exit`)]})]})})}export{at as BoardPage};
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./utils-C8uzG5AZ.js";import{t as i}from"./motion-DTR4ZVle.js";var a=e(t(),1),o=[`blob`,`bean`,`robot`,`cat`,`owl`,`ghost`,`cloud`,`octo`,`bunny`,`bear`,`fox`,`star`],s=[`blue`,`green`,`orange`,`purple`,`teal`,`pink`],c={blue:{body:`#8fb4ff`,shade:`#5b86e5`,tile:`#e9f0ff`},green:{body:`#8ed9a8`,shade:`#4fb27a`,tile:`#e6f6ec`},orange:{body:`#ffc287`,shade:`#f0954a`,tile:`#fff0e2`},purple:{body:`#c7a6ff`,shade:`#9a73e6`,tile:`#f2ebff`},teal:{body:`#85d6d6`,shade:`#43a9ab`,tile:`#e3f5f5`},pink:{body:`#ffaccd`,shade:`#ea7aa8`,tile:`#ffe9f2`}},l=`#1f2430`,u=`#ff7a9c`;function d(e,t,n,r=``,i=`0s`){return`<animate attributeName="${e}" values="${t}" dur="${n}" begin="${i}" repeatCount="indefinite"${r?` keyTimes="${r}"`:``}/>`}function f(e,t,n,r=``,i=`0s`){return`<animateTransform attributeName="transform" type="${e}" values="${t}" dur="${n}" begin="${i}" repeatCount="indefinite"${r?` keyTimes="${r}"`:``}/>`}function p(){let e=[];for(let t=0;t<10;t+=1){let n=t%2?11.5:24,r=Math.PI/5*t-Math.PI/2;e.push(`${(32+n*Math.cos(r)).toFixed(1)},${(35+n*Math.sin(r)).toFixed(1)}`)}return e.join(` `)}var m={blob:{face:[32,34,1],body:()=>`<path d="M32 11c13 0 22 9.5 22 22.5S45 55 32 55 10 46.5 10 33.5 19 11 32 11z" fill="B"/>`},bean:{face:[32,31,1],body:()=>`<rect x="15" y="10" width="34" height="46" rx="17" fill="B"/><rect x="21" y="44" width="22" height="6" rx="3" fill="S" opacity=".35"/>`},robot:{face:[32,36,1],body:({state:e,animate:t})=>`<line x1="32" y1="18" x2="32" y2="10" stroke="S" stroke-width="3" stroke-linecap="round"/><circle cx="32" cy="8.5" r="3.6" fill="S">${t&&e===`running`?d(`opacity`,`1;.35;1`,`1s`):``}</circle><rect x="8" y="30" width="6" height="11" rx="3" fill="S"/><rect x="50" y="30" width="6" height="11" rx="3" fill="S"/><rect x="12" y="18" width="40" height="36" rx="13" fill="B"/>`},cat:{face:[32,37,1],body:()=>`<path d="M15 26 17 9 29 19z M49 26 47 9 35 19z" fill="B" stroke="B" stroke-width="5" stroke-linejoin="round"/><path d="M18.5 21 19.5 14 25 18.5z M45.5 21 44.5 14 39 18.5z" fill="S" opacity=".55"/><ellipse cx="32" cy="37" rx="21" ry="18" fill="B"/><path d="M12 40h7M12 44l7-2M52 40h-7M52 44l-7-2" stroke="S" stroke-width="1.4" stroke-linecap="round" opacity=".7"/>`},owl:{face:[32,32,1.15],owl:!0,body:()=>`<path d="M16 22 15 11 24 17z M48 22 49 11 40 17z" fill="S" stroke="S" stroke-width="3" stroke-linejoin="round"/><ellipse cx="32" cy="35" rx="20" ry="21" fill="B"/><ellipse cx="32" cy="45" rx="11" ry="9" fill="#fff" opacity=".45"/><path d="M30 39h4l-2 3z" fill="S"/>`},ghost:{face:[32,30,1],float:2.6,body:()=>`<path d="M13 31a19 19 0 0 1 38 0v21l-6.3-4-6.3 4-6.4-4-6.3 4-6.4-4-6.3 4z" fill="B"/>`},cloud:{face:[32,37,1],body:()=>`<circle cx="22" cy="36" r="12" fill="B"/><circle cx="34" cy="29" r="15" fill="B"/><circle cx="45" cy="37" r="11" fill="B"/><rect x="12" y="36" width="42" height="14" rx="7" fill="B"/>`},octo:{face:[32,29,1],body:({animate:e})=>`<g>${e?f(`translate`,`0 0;1 0;0 0;-1 0;0 0`,`1.8s`):``}<circle cx="15" cy="45" r="5" fill="S"/><circle cx="23" cy="50" r="5" fill="S"/><circle cx="32" cy="51.5" r="5" fill="S"/><circle cx="41" cy="50" r="5" fill="S"/><circle cx="49" cy="45" r="5" fill="S"/></g><circle cx="32" cy="29" r="19" fill="B"/>`},bunny:{face:[32,39,1],body:({animate:e})=>`<g>${e?f(`rotate`,`0 25 27;0 25 27;-12 25 27;0 25 27`,`5.2s`,`0;.82;.88;1`):``}<ellipse cx="25" cy="15" rx="5.5" ry="13" fill="B"/><ellipse cx="25" cy="15" rx="2.5" ry="8.5" fill="S" opacity=".45"/></g><ellipse cx="40" cy="15" rx="5.5" ry="13" fill="B"/><ellipse cx="40" cy="15" rx="2.5" ry="8.5" fill="S" opacity=".45"/><ellipse cx="32" cy="39" rx="19" ry="16" fill="B"/>`},bear:{face:[32,35,1],nose:!0,body:()=>`<circle cx="16" cy="20" r="7.5" fill="B"/><circle cx="48" cy="20" r="7.5" fill="B"/><circle cx="16" cy="20" r="3.6" fill="S" opacity=".55"/><circle cx="48" cy="20" r="3.6" fill="S" opacity=".55"/><circle cx="32" cy="36" r="20" fill="B"/><ellipse cx="32" cy="42.5" rx="7.5" ry="5.5" fill="#fff" opacity=".5"/>`},fox:{face:[32,36,1],nose:!0,body:()=>`<path d="M13 30 15 8 28 20z M51 30 49 8 36 20z" fill="S" stroke="S" stroke-width="4" stroke-linejoin="round"/><path d="M17 22 18 13 24 19z M47 22 46 13 40 19z" fill="#fff" opacity=".7"/><ellipse cx="32" cy="36" rx="21" ry="17" fill="B"/><path d="M14 38q9 13 18 13t18-13q-9 4-18 4t-18-4z" fill="#fff" opacity=".55"/>`},star:{face:[32,35,.85],body:()=>`<polygon points="${p()}" fill="B" stroke="B" stroke-width="7" stroke-linejoin="round"/>`}};function h(e){let t=0;for(let n of e)t=(t*31+n.charCodeAt(0))%997;return`${t%23/10}s`}function g(e,t,n,r){let[i,a,o]=e.face,s=e=>r?d(`ry`,`${e};${e};.35;${e};${e}`,`4.6s`,`0;.9;.94;.98;1`,h(t)):``,c=t=>e.owl?`<circle cx="${t}" cy="0" r="7.5" fill="#fff"/><ellipse cx="${t}" cy="0" rx="3.2" ry="3.6" fill="${l}">${s(3.6)}</ellipse><circle cx="${t+1.2}" cy="-1.3" r="1.1" fill="#fff"/>`:`<ellipse cx="${t}" cy="0" rx="2.6" ry="3.3" fill="${l}">${s(3.3)}</ellipse><circle cx="${t+.9}" cy="-1.2" r=".9" fill="#fff"/>`,p=r&&n===`running`?f(`translate`,`0 0;-1.6 0;-1.6 0;1.6 0;1.6 0;0 0`,`3s`,`0;.2;.4;.6;.8;1`):``,m=e.owl?9:6,g=n===`need`?`<ellipse cx="0" cy="${m+.5}" rx="2.2" ry="2.6" fill="${l}"/>`:`<path d="M-3 ${m}q3 2.6 6 0" fill="none" stroke="${l}" stroke-width="1.6" stroke-linecap="round"/>`,_=e.nose?`<ellipse cx="0" cy="4" rx="2" ry="1.4" fill="${l}"/>`:``;return`<g transform="translate(${i} ${a}) scale(${o})"><ellipse cx="-13" cy="5" rx="3.6" ry="2.2" fill="${u}" opacity=".42"/><ellipse cx="13" cy="5" rx="3.6" ry="2.2" fill="${u}" opacity=".42"/><g>${p}${c(-8)}${c(8)}</g>${_}${e.nose?`<g transform="translate(0 2)">${g}</g>`:g}</g>`}function _(e,t){return`<g transform="translate(52 12)"><path d="M0-6 1.6-1.6 6 0 1.6 1.6 0 6-1.6 1.6-6 0-1.6-1.6z" fill="${e.shade}">${t?f(`rotate`,`0;90;180`,`1.6s`)+d(`opacity`,`1;.4;1`,`1.6s`):``}</path></g>`}function v({character:e,color:t},{state:n=`idle`,animate:r=!0}={}){let i=m[e]??m.blob,a=c[t]??c.blue,o=i.body({state:n,animate:r}).replaceAll(`"B"`,`"${a.body}"`).replaceAll(`"S"`,`"${a.shade}"`),s=r?n===`need`?f(`translate`,`0 0;0 -4.5;0 0;0 -2;0 0;0 0`,`1.3s`,`0;.22;.42;.56;.7;1`):f(`translate`,`0 0;0 -${i.float??1.2};0 0`,i.float?`2.6s`:`3.4s`):``;return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><rect width="64" height="64" rx="18" fill="${a.tile}"/><g transform="translate(32 33) scale(1.12) translate(-32 -33)"><g>${s}${o}${g(i,e,n,r)}</g></g>${n===`running`?_(a,r):``}</svg>`}function y(e,t){return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(v(e,t))}`}function b(e){return o.includes(e)}function x(e){return s.includes(e)}function S(){return{character:o[Math.floor(Math.random()*o.length)],color:s[Math.floor(Math.random()*s.length)]}}var C=n();function w({avatar:e,state:t=`idle`,size:n=30,animate:o=!0,className:s}){let c=(0,a.useMemo)(()=>y(e,{state:t,animate:o&&!i()}),[e,t,o]);return(0,C.jsx)(`img`,{src:c,alt:``,"aria-hidden":`true`,width:n,height:n,draggable:!1,className:r(`flex-none rounded-[28%] select-none`,s)})}function T({character:e,color:t,size:n=16,className:r}){let i=(0,a.useMemo)(()=>({character:b(e)?e:`blob`,color:x(t)?t:`blue`}),[e,t]);return(0,C.jsx)(w,{avatar:i,size:n,animate:!1,className:r})}export{b as a,s as i,T as n,x as o,o as r,S as s,w as t};
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{t as r}from"./use-i18n-CUS2_EGy.js";import{t as i}from"./api-CKJOip3Q.js";import{t as a}from"./createLucideIcon-Cd-3GVxJ.js";import{t as o}from"./bot-B3TaBp_T.js";import{t as s}from"./external-link-CEQqPcqc.js";import{t as c}from"./folder-open-FIShC5Qk.js";import{n as l,t as u}from"./send-QxBfLFo-.js";import{t as d}from"./message-square-SKjZyY3v.js";import{t as f}from"./plus-fQbSqB1n.js";import{t as p}from"./refresh-cw-TbWxTY4K.js";import{t as m}from"./shield-check-Gvek4RJ7.js";import{t as h}from"./trash-2-CNrPOoPR.js";import{t as g}from"./triangle-alert-CE1q54ci.js";import{t as ee}from"./x-07u4-129.js";import"./brand-DIEc3fK8.js";import{t as _}from"./more-pages-D_PnxLN0.js";import{t as v}from"./utils-C8uzG5AZ.js";import{n as y,t as b}from"./button-CCcCN8tE.js";import{s as x}from"./shortcuts-IA6Uq_O6.js";import{a as S}from"./format-DMJQzoZ7.js";import{t as C}from"./StatusGlyph-1KgitlUg.js";import{t as w}from"./input-CPw-zkYh.js";import{i as T,n as E,t as D}from"./input-group-h8z63MzW.js";import{n as O,t as k}from"./PageState-Cz6vFMXv.js";import{a as A,i as j,n as te,o as ne,r as M,s as re,t as ie}from"./FeaturePage-B3wCvGpC.js";import{n as N}from"./field-DoLEb0np.js";import{t as P}from"./AppSelect-BD6RAaJ5.js";import{a as F,n as I,s as L}from"./app-primitives-Drz_SjnR.js";var R=a(`unplug`,[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]),z=e(t(),1),B=n(),V=Object.entries({feishu:{Icon:o},weixin:{Icon:l},qq:{Icon:l},telegram:{Icon:u}}),H=`flex min-h-[34px] min-w-0 items-center justify-between gap-4 border-t border-stroke-soft py-1.5 text-sm first:border-t-0 [&>dt]:shrink-0 [&>dt]:text-content-muted [&>dd]:min-w-0 [&>dd]:truncate [&>dd]:text-right [&>dd]:text-content`,U=`grid min-w-0 gap-1.5 border-t border-stroke-soft py-3 @min-[600px]/page:grid-cols-[168px_minmax(0,1fr)] @min-[600px]/page:items-center @min-[600px]/page:gap-4`,W=`text-sm font-medium text-content`,G=`modal-backdrop fixed inset-0 z-[70] grid place-items-center overflow-y-auto overscroll-contain bg-[var(--modal-overlay)] p-5 max-[650px]:p-2`,K=`modal max-h-[calc(100dvh_-_40px)] w-[min(470px,100%)] overflow-y-auto overscroll-contain rounded-dialog bg-popover p-5 shadow-float max-[650px]:max-h-[calc(100dvh_-_16px)]`,q=`border border-stroke-soft bg-surface-subtle text-content-secondary [&_strong]:text-content [&>svg]:mt-0.5 [&>svg]:shrink-0`;function J(e,t){return t(e===`feishu`?`channels:channelsPage.feishu`:e===`weixin`?`channels:channelsPage.weChat`:e===`qq`?`channels:channelsPage.qq`:`channels:channelsPage.telegram`)}function ae(e,t){return t(e===`feishu`?`channels:channelsPage.feishuAppBot`:e===`weixin`?`channels:channelsPage.weChat`:e===`qq`?`channels:channelsPage.qqBot`:`channels:channelsPage.telegramBot`)}function oe(e,t){return t(e===`feishu`?`channels:channelsPage.webSocketPersistentConnection`:e===`weixin`?`channels:channelsPage.tencentILinkPersistentConnection`:e===`qq`?`channels:channelsPage.qqPersistentConnection`:`channels:channelsPage.telegramPersistentConnection`)}function Y(e,t){return t(e===`feishu`?`channels:channelsPage.feishuCapabilities`:e===`weixin`?`channels:channelsPage.weChatCapabilities`:e===`qq`?`channels:channelsPage.qqCapabilities`:`channels:channelsPage.telegramCapabilities`)}function X(e){return e===`telegram`}function se(e,t,n){return t?n(`channels:channelsPage.reconnectName`,{name:J(e,n)}):X(e)?n(`channels:channelsPage.configureName`,{name:J(e,n)}):n(`channels:channelsPage.connectNameByQRCode`,{name:J(e,n)})}function Z(e,t){return t(e===`connecting`?`channels:channelsPage.connecting`:e===`connected`?`channels:channelsPage.online`:e===`reconnecting`?`channels:channelsPage.reconnecting`:e===`failed`?`channels:channelsPage.connectionFailed`:`channels:channelsPage.notConnected`)}function ce(e,t){return t(e===`starting`?`channels:channelsPage.requestingLoginQrCode`:e===`waiting`?`channels:channelsPage.scanAndConfirmConnection`:e===`scanned`?`channels:channelsPage.scannedWaitingForConfirmation`:e===`verification_required`?`channels:channelsPage.enterPairingCode`:e===`authorizing`?`channels:channelsPage.confirmingAuthorization`:e===`connecting`?`channels:channelsPage.authorizationSucceededConnecting`:e===`completed`?`channels:channelsPage.channelConnected`:e===`failed`?`channels:channelsPage.connectionFailed`:`channels:channelsPage.cancelled`)}function le(e,t=`zh-CN`){let n=Math.max(0,Math.ceil((new Date(e).getTime()-Date.now())/1e3));return t===`en-US`?n>=60?`in ${Math.ceil(n/60)} min`:`in ${n} sec`:n>=60?`${Math.ceil(n/60)} 分钟后`:`${n} 秒后`}function Q(e){return e instanceof Error?e.message:String(e)}function ue({notify:e,onBack:t,requestConfirm:n}){let{t:a,language:o}=r(),[s,c]=(0,z.useState)({providers:[],connections:{feishu:null,weixin:null,qq:null,telegram:null},scopes:[],models:[]}),[m,g]=(0,z.useState)(!0),[ee,_]=(0,z.useState)(!1),[v,y]=(0,z.useState)(``),[x,C]=(0,z.useState)(``),[w,T]=(0,z.useState)(``),[E,D]=(0,z.useState)(null),[A,M]=(0,z.useState)(``),[re,N]=(0,z.useState)(!1),[P,F]=(0,z.useState)(``),I=(0,z.useCallback)(async()=>{try{y(``);let e=await i(`/api/channels`);c(e),_(!0),x&&F(e.connections?.[x]?.defaultCwd||``)}catch(e){y(Q(e))}finally{g(!1)}},[x]);(0,z.useEffect)(()=>{I()},[I]),(0,z.useEffect)(()=>{if(!E?.id||[`completed`,`failed`,`cancelled`].includes(E.status))return;let t=E.id,n=window.setInterval(async()=>{try{let r=E.platform,o=await i(`/api/channels/${r}/onboarding/${encodeURIComponent(t)}`);D({...o,platform:r}),o.status===`completed`&&(window.clearInterval(n),e(a(`channels:channelsPage.nameTwoWayConnectionEstablished`,{name:J(r,a)})),await I(),window.setTimeout(()=>D(null),900))}catch(e){D(t=>t&&{...t,status:`failed`,error:Q(e)})}},1500);return()=>window.clearInterval(n)},[E?.id,E?.platform,E?.status,I,e,a]);let L=async e=>{if(!(s.connections?.[e]&&!await n({title:a(`channels:channelsPage.reconnectName`,{name:J(e,a)}),message:X(e)?a(`channels:channelsPage.configuringAgainWillReplaceTheCurrentNameConnectionContinue`,{name:J(e,a)}):a(`channels:channelsPage.scanningAgainWillReplaceTheCurrentNameConnectionContinue`,{name:J(e,a)}),confirmLabel:X(e)?a(`channels:channelsPage.continueConfiguration`):a(`channels:channelsPage.continueScanning`),tone:`primary`}))){M(e),D({platform:e,status:`starting`});try{let t=await i(`/api/channels/${e}/onboarding`,{method:`POST`,body:`{}`});`mode`in t&&t.mode===`manual`?D({...t,platform:e,status:`starting`,manual:!0}):D({...t,platform:e})}catch(t){D({platform:e,status:`failed`,error:Q(t)})}finally{M(``)}}},R=async()=>{E?.id&&![`completed`,`failed`,`cancelled`].includes(E.status)&&await i(`/api/channels/${E.platform}/onboarding/${encodeURIComponent(E.id)}`,{method:`DELETE`}).catch(()=>{}),D(null)},H=async(t,n,r)=>{N(!0);try{let a=await i(`/api/channels/${t}`,{method:`PATCH`,body:JSON.stringify(n)});c(a),F(a.connections?.[t]?.defaultCwd||``),e(r)}catch(t){e(Q(t),`error`)}finally{N(!1)}},U=async t=>{N(!0);try{c(await i(`/api/channels/${t}/reconnect`,{method:`POST`,body:`{}`})),e(a(`channels:channelsPage.nameReconnected`,{name:J(t,a)}))}catch(t){e(Q(t),`error`),I()}finally{N(!1)}},W=async t=>{if(await n({title:a(`channels:channelsPage.disconnectName`,{name:J(t,a)}),message:a(`channels:channelsPage.localCredentialsAndChatMappingsWillBeDeleted`),confirmLabel:a(`channels:channelsPage.disconnect`)}))try{await i(`/api/channels/${t}`,{method:`DELETE`}),await I(),e(a(`channels:channelsPage.nameDisconnected`,{name:J(t,a)}))}catch(t){e(Q(t),`error`)}},G=async t=>{if(await n({title:a(`channels:channelsPage.resetChannelChat`),message:a(`channels:channelsPage.resetTheAppChatLinkedToScope`,{scope:t.title,app:`Pisper`}),confirmLabel:a(`channels:channelsPage.reset`)}))try{await i(`/api/channels/scopes/${encodeURIComponent(t.key)}`,{method:`DELETE`}),await I(),e(a(`channels:channelsPage.channelChatReset`))}catch(t){e(Q(t),`error`)}};if(m)return(0,B.jsx)($,{onBack:t,query:w,onQueryChange:T,children:(0,B.jsx)(O,{kind:`loading`,title:a(`channels:channelsPage.loadingChannels`)})});if(v&&!ee)return(0,B.jsx)($,{onBack:t,query:w,onQueryChange:T,children:(0,B.jsx)(O,{kind:`error`,title:a(`channels:channelsPage.loadFailed`),description:v,action:(0,B.jsx)(b,{variant:`secondary`,className:`max-[650px]:h-11`,onClick:()=>{g(!0),I()},children:a(`common:pageTemplate.retry`)})})});let K=w.trim().toLocaleLowerCase(),q=V.filter(([e])=>`${ae(e,a)} ${J(e,a)}`.toLocaleLowerCase().includes(K)),Y=K?s.scopes.filter(e=>`${e.title} ${e.lastMessage||``} ${J(e.platform,a)}`.toLocaleLowerCase().includes(K)):s.scopes,Z=V.filter(([e])=>de(s.connections?.[e])===`disconnected`).length;return(0,B.jsxs)($,{onBack:t,query:w,onQueryChange:T,children:[v&&(0,B.jsx)(ie,{children:v}),(0,B.jsx)(ne,{title:a(`channels:channelsPage.platforms`),count:V.length,meta:Z?(0,B.jsx)(`span`,{"data-channels-disconnected":!0,className:`font-medium text-st-attn`,children:a(`channels:channelsPage.disconnectedCount`,{count:Z})}):void 0,children:q.length?(0,B.jsx)(te,{children:q.map(([e,t])=>{let n=s.connections?.[e],r=x===e,i=t.Icon;return(0,B.jsx)(j,{"data-channel-platform":e,className:`channel-platform-card`,icon:(0,B.jsx)(i,{}),name:ae(e,a),description:oe(e,a),status:(0,B.jsx)(fe,{connection:n}),actions:(0,B.jsxs)(b,{variant:`secondary`,size:`sm`,className:`max-[650px]:min-w-11`,loading:A===e,disabled:A===e,title:se(e,!!n,a),onClick:()=>void L(e),children:[n?(0,B.jsx)(p,{}):(0,B.jsx)(f,{}),(0,B.jsx)(`span`,{className:`max-[650px]:sr-only`,children:se(e,!!n,a)})]}),expanded:r,onExpandedChange:t=>{C(t?e:``),t&&F(n?.defaultCwd||``)},toggleLabel:a(`channels:channelsPage.togglePlatformDetails`,{name:J(e,a)}),detail:r?(0,B.jsx)(pe,{platform:e,connection:n,models:s.models,cwd:P,saving:re,onCwdChange:F,onUpdate:H,onReconnect:U,onRemove:W}):null},e)})}):(0,B.jsx)(k,{compact:!0,title:a(`channels:channelsPage.noMatchingChannels`)})}),(0,B.jsx)(ne,{title:a(`channels:channelsPage.channelChats`),count:s.scopes.length,description:a(`channels:channelsPage.onceConnectedMessagesFromSupportedChannelsWillArriveHereInPisper`),children:Y.length?(0,B.jsx)(te,{children:Y.map(e=>(0,B.jsx)(j,{"data-channel-scope":e.key,className:`route-row`,icon:e.platform===`feishu`?(0,B.jsx)(d,{}):e.platform===`telegram`?(0,B.jsx)(u,{}):(0,B.jsx)(l,{}),name:e.title,nameMeta:J(e.platform,a),description:e.lastMessage||a(`channels:channelsPage.noMessages`),meta:(0,B.jsxs)(`span`,{className:`truncate font-mono`,children:[e.model||a(`channels:channelsPage.defaultModel`),` · `,e.cwd]}),status:S(e.updatedAt,o),actions:(0,B.jsx)(b,{variant:`ghost`,size:`icon-sm`,className:`text-content-muted hover:bg-danger-soft hover:text-danger max-[650px]:size-11`,title:a(`channels:channelsPage.resetChat`),"aria-label":`${a(`channels:channelsPage.resetChat`)}: ${e.title}`,onClick:()=>void G(e),children:(0,B.jsx)(h,{})})},e.key))}):(0,B.jsx)(k,{title:s.scopes.length?a(`channels:channelsPage.noMatchingChats`):a(`channels:channelsPage.waitingForTheFirstReplyFromAfar`)})}),E&&(0,B.jsx)(me,{job:E,onClose:R,onRetry:()=>L(E.platform),onSubmitCredentials:async t=>{try{let n=await i(`/api/channels/${E.platform}/onboarding`,{method:`POST`,body:JSON.stringify(t)});`connections`in n?(c(n),D(null),e(a(`channels:channelsPage.nameTwoWayConnectionEstablished`,{name:J(E.platform,a)})),await I()):`mode`in n&&n.mode===`manual`?D({...n,platform:E.platform,status:`starting`,manual:!0}):D({...n,platform:E.platform,manual:n.mode===`manual`})}catch(e){D(t=>t&&{...t,status:`failed`,error:Q(e)})}},notify:e})]})}function $({onBack:e,query:t,onQueryChange:n,children:i}){let{t:a}=r(),o=x(`focusSearch`),s=a(`navigation:navigation.channels`);return(0,B.jsx)(M,{title:s,description:a(`channels:channelsPage.lede`),back:e&&{label:a(`navigation:sidebar.features`),ariaLabel:a(`navigation:shell.backToFeaturesLabel`),onBack:e},toolbar:(0,B.jsx)(re,{search:(0,B.jsx)(A,{id:_,value:t,onValueChange:n,placeholder:a(`channels:channelsPage.searchPlaceholder`),shortcut:o,clearLabel:a(`navigation:more.clearSearch`)})}),children:i})}function de(e){return e?e.enabled===!1?`paused`:e.status===`connected`?`live`:e.status===`connecting`||e.status===`reconnecting`?`busy`:`disconnected`:`none`}function fe({connection:e}){let{t}=r(),n=de(e),i=n===`none`?t(`channels:channelsPage.notConnected`):n===`paused`?t(`channels:channelsPage.paused`):n===`disconnected`?e?.status===`failed`?t(`channels:channelsPage.connectionFailed`):t(`channels:channelsPage.disconnected`):Z(e?.status||`idle`,t);return(0,B.jsxs)(`span`,{"data-channel-state":n,className:v(`inline-flex min-w-0 items-center gap-1.5 whitespace-nowrap`,n===`disconnected`?`font-medium text-st-attn`:`text-content-secondary`),children:[n===`disconnected`?(0,B.jsx)(C,{status:`attention`,className:`size-3.5`}):n===`busy`?(0,B.jsx)(C,{status:`run`,className:`size-3.5`}):n===`live`?(0,B.jsx)(C,{status:`done`,className:`size-3.5`}):null,i]})}function pe({platform:e,connection:t,models:n,cwd:i,saving:a,onCwdChange:o,onUpdate:s,onReconnect:l,onRemove:u}){let{t:d,language:f}=r();return(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3`,children:[(0,B.jsxs)(`dl`,{className:`rounded-[var(--r-md)] border border-stroke px-3 py-0.5`,children:[(0,B.jsxs)(`div`,{className:H,children:[(0,B.jsx)(`dt`,{children:d(`channels:channelsPage.twoWayCapability`)}),(0,B.jsx)(`dd`,{children:Y(e,d)})]}),(0,B.jsxs)(`div`,{className:H,children:[(0,B.jsx)(`dt`,{children:d(`channels:channelsPage.replyModel`)}),(0,B.jsx)(`dd`,{className:t?.replyModel?`font-mono`:void 0,children:t?.replyModel?`${t.replyModel.provider}/${t.replyModel.model}`:d(`channels:channelsPage.useApplicationDefaultModel`)})]})]}),t?(0,B.jsxs)(`section`,{className:`test-panel min-w-0`,"aria-label":d(`channels:channelsPage.nameSettings`,{name:J(e,d)}),children:[(0,B.jsxs)(`div`,{className:v(`channel-live-status flex min-w-0 items-center gap-2.5 py-2`,t.status),children:[(0,B.jsx)(fe,{connection:t}),(0,B.jsx)(`small`,{className:v(`min-w-0 truncate text-xs tabular-nums`,t.lastError?`text-content-secondary`:`text-content-muted`),children:t.lastError||(t.status===`connected`?d(`channels:channelsPage.connectedTime`,{time:S(t.connectedAt,f)}):d(`channels:channelsPage.establishingPersistentConnection`))})]}),(0,B.jsxs)(`div`,{className:`modal-toggle-row flex min-w-0 items-center justify-between gap-4 border-t border-stroke-soft py-3`,children:[(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,B.jsx)(`strong`,{className:`text-sm font-medium text-content`,children:d(`channels:channelsPage.enableThisChannel`)}),(0,B.jsx)(`small`,{className:`text-xs text-content-muted`,children:d(`channels:channelsPage.turnOffToDisconnectWhileKeepingSignInCredentials`)})]}),(0,B.jsx)(L,{value:t.enabled,disabled:a,ariaLabel:d(`channels:channelsPage.enableThisChannel`),onChange:t=>s(e,{enabled:t},d(t?`channels:channelsPage.channelEnabled`:`channels:channelsPage.channelPaused`))})]}),(0,B.jsxs)(`label`,{className:U,children:[(0,B.jsx)(`span`,{className:W,children:d(`channels:channelsPage.replyModel`)}),(0,B.jsxs)(P,{value:t.replyModel?`${t.replyModel.provider}/${t.replyModel.model}`:``,onChange:t=>{let[n,...r]=t.target.value.split(`/`);s(e,{replyModel:t.target.value?{provider:n,model:r.join(`/`)}:null},d(`channels:channelsPage.channelReplyModelUpdated`))},children:[(0,B.jsx)(`option`,{value:``,children:d(`channels:channelsPage.useApplicationDefaultModel`)}),n.map(e=>(0,B.jsx)(`option`,{value:`${e.provider}/${e.model}`,children:e.label},`${e.provider}/${e.model}`))]})]}),(0,B.jsxs)(`label`,{className:U,children:[(0,B.jsx)(`span`,{className:W,children:d(`channels:channelsPage.approvalMode`)}),(0,B.jsxs)(P,{value:t.executionMode,onChange:t=>s(e,{executionMode:t.target.value},d(`channels:channelsPage.approvalModeUpdated`)),children:[(0,B.jsx)(`option`,{value:`approval-required`,children:d(`channels:channelsPage.approvalRequired`)}),(0,B.jsx)(`option`,{value:`workspace-write`,children:d(`channels:channelsPage.workspaceWrite`)}),(0,B.jsx)(`option`,{value:`full-access`,children:d(`channels:channelsPage.fullAccess`)})]})]}),(0,B.jsxs)(`label`,{className:U,children:[(0,B.jsx)(`span`,{className:W,children:d(`channels:channelsPage.executionMode`)}),(0,B.jsxs)(P,{value:t.runMode,onChange:t=>s(e,{runMode:t.target.value},d(`channels:channelsPage.executionModeUpdated`)),children:[(0,B.jsx)(`option`,{value:`plan`,children:d(`channels:channelsPage.planMode`)}),(0,B.jsx)(`option`,{value:`goal`,children:d(`channels:channelsPage.goalMode`)}),(0,B.jsx)(`option`,{value:`team`,children:d(`channels:channelsPage.teamMode`)})]})]}),(0,B.jsxs)(`label`,{className:U,children:[(0,B.jsx)(`span`,{className:W,children:d(`channels:channelsPage.accessScope`)}),(0,B.jsxs)(P,{value:t.accessMode,onChange:t=>s(e,{accessMode:t.target.value===`all`?`all`:`owner`},d(`channels:channelsPage.accessScopeUpdated`)),children:[(0,B.jsx)(`option`,{value:`owner`,disabled:!t.ownerConfigured,children:d(`channels:channelsPage.qrCodeOwnerOnly`)}),(0,B.jsx)(`option`,{value:`all`,children:d(e===`feishu`?`channels:channelsPage.allMembersInTheCurrentTenant`:e===`weixin`?`channels:channelsPage.allWeChatUsersWhoMessageTheBot`:`channels:channelsPage.allUsersWhoMessageTheBot`)})]})]}),(0,B.jsxs)(`label`,{className:U,children:[(0,B.jsx)(`span`,{className:W,children:d(`channels:channelsPage.defaultWorkingDirectoryForNewChats`)}),(0,B.jsxs)(D,{className:`channel-setting-input max-[650px]:h-11`,children:[(0,B.jsx)(E,{children:(0,B.jsx)(c,{"aria-hidden":`true`})}),(0,B.jsx)(T,{className:`font-mono text-xs`,value:i,onChange:e=>o(e.target.value)}),(0,B.jsx)(E,{align:`inline-end`,children:(0,B.jsx)(b,{variant:`secondary`,size:`sm`,className:`max-[650px]:h-9`,disabled:a||i===t.defaultCwd,onClick:()=>s(e,{defaultCwd:i},d(`channels:channelsPage.defaultWorkingDirectorySaved`)),children:d(`channels:channelsPage.save`)})})]})]}),(0,B.jsxs)(F,{className:v(`mt-1`,q),children:[(0,B.jsx)(m,{size:15}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:d(`channels:channelsPage.localSecurityBoundary`)}),(0,B.jsx)(`small`,{children:d(`channels:channelsPage.ownerOnlyAccessRespectsToolPermissionsAndExecutionMode`)})]})]}),(0,B.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center justify-end gap-2 max-[650px]:[&>button]:h-11`,children:[(0,B.jsxs)(b,{variant:`ghost`,size:`sm`,className:`text-danger hover:bg-danger-soft hover:text-danger`,onClick:()=>u(e),children:[(0,B.jsx)(R,{}),d(`channels:channelsPage.disconnect`)]}),(0,B.jsxs)(b,{variant:`secondary`,size:`sm`,onClick:()=>l(e),disabled:a,children:[(0,B.jsx)(p,{}),d(`channels:channelsPage.reconnect`)]})]})]}):(0,B.jsx)(`p`,{className:`text-xs leading-relaxed text-content-muted`,children:d(`channels:channelsPage.notConnectedHint`)})]})}function me({job:e,onClose:t,onRetry:n,onSubmitCredentials:a,notify:o}){let{t:c,language:l}=r(),[u,d]=(0,z.useState)(``),[h,_]=(0,z.useState)(``),[x,S]=(0,z.useState)(``),[C,T]=(0,z.useState)(``),[E,D]=(0,z.useState)(!1),O=[`completed`,`failed`,`cancelled`].includes(e.status),k=e.manual||X(e.platform)&&e.mode!==`qr`,A=e.platform===`qq`?!!(h.trim()&&(x.trim()||C.trim())):!!C.trim(),j=async()=>{if(A){D(!0);try{await a({...h.trim()?{appId:h.trim()}:{},...x.trim()?{appSecret:x.trim()}:{},...C.trim()?{token:C.trim()}:{}})}finally{D(!1)}}};return(0,B.jsx)(`div`,{className:G,onMouseDown:e=>e.target===e.currentTarget&&t(),children:(0,B.jsxs)(`section`,{className:v(K,`feishu-onboard-modal`),children:[(0,B.jsxs)(I,{className:`[&_h2]:text-[15px] [&_h2]:font-medium`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{children:c(k?`channels:channelsPage.configureName`:`channels:channelsPage.connectNameByQRCode`,{name:J(e.platform,c)})}),(0,B.jsx)(`p`,{children:e.platform===`feishu`?c(`channels:channelsPage.createTheBotAppThroughTheOfficialFeishuAuthorizationPage`):e.platform===`weixin`?c(`channels:channelsPage.signInToPersonalWeChatThroughTencentILinkBot`):e.platform===`qq`?c(`channels:channelsPage.scanWithQQToCreateOfficialBot`):c(`channels:channelsPage.enterBotCredentialsForName`,{name:J(e.platform,c)})})]}),(0,B.jsx)(b,{variant:`ghost`,size:`icon`,className:`-mt-1 -mr-1 max-[650px]:size-11`,"aria-label":c(`channels:channelsPage.closeDialog`),onClick:t,children:(0,B.jsx)(ee,{})})]}),k&&!e.id&&!O&&(0,B.jsxs)(`div`,{className:`mt-3.5 grid gap-2.5`,children:[e.platform===`qq`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(N,{variant:`control`,children:[c(`channels:channelsPage.qqAppId`),(0,B.jsx)(w,{value:h,onChange:e=>_(e.target.value)})]}),(0,B.jsxs)(N,{variant:`control`,children:[c(`channels:channelsPage.qqAppSecret`),(0,B.jsx)(w,{type:`password`,value:x,onChange:e=>S(e.target.value)})]}),(0,B.jsx)(`small`,{className:`text-xs text-content-muted`,children:c(`channels:channelsPage.qqCredentialsOrToken`)})]}),(0,B.jsxs)(N,{variant:`control`,children:[c(`channels:channelsPage.botToken`),(0,B.jsx)(w,{type:`password`,value:C,onChange:e=>T(e.target.value)})]}),e.setupUrl&&(0,B.jsxs)(F,{className:v(q,`[&_a]:inline-flex [&_a]:items-center [&_a]:gap-1 [&_a]:text-xs [&_a]:text-content [&_a]:underline [&_a]:underline-offset-4`),children:[e.qrDataUrl&&(0,B.jsx)(`img`,{src:e.qrDataUrl,alt:c(`channels:channelsPage.openOfficialSetupQRCode`),className:`size-[120px] rounded-sm bg-[var(--lightbox-action-bg)] p-1`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:c(`channels:channelsPage.officialSetupRequired`)}),(0,B.jsx)(`small`,{children:c(`channels:channelsPage.officialSetupInstructions`)}),(0,B.jsxs)(`a`,{href:e.setupUrl,target:`_blank`,rel:`noreferrer`,children:[c(`channels:channelsPage.openOfficialSetup`),(0,B.jsx)(s,{size:12})]})]})]}),(0,B.jsxs)(b,{className:`max-[650px]:h-11`,loading:E,disabled:!A||E,onClick:()=>void j(),children:[(0,B.jsx)(f,{}),c(`channels:channelsPage.connect`)]})]}),(!k||e.id||O)&&(0,B.jsxs)(`div`,{className:v(`feishu-qr-stage mt-3.5 flex min-h-[min(330px,52dvh)] flex-col items-center justify-center gap-2.5 rounded-md border border-stroke bg-surface-subtle p-4 text-center [&_img]:w-[248px] [&_img]:max-w-[86%] [&_img]:rounded-md [&_img]:border [&_img]:border-stroke [&_img]:bg-[var(--lightbox-action-bg)] [&_img]:p-2 [&_p]:max-w-[330px] [&_p]:text-xs [&_p]:leading-normal [&_p]:text-content-secondary [&_small]:text-xs [&_small]:text-content-muted [&_small]:tabular-nums [&_strong]:text-sm [&_strong]:font-medium [&.completed]:text-success [&.failed]:text-content-secondary`,e.status),children:[e.qrDataUrl?(0,B.jsx)(`img`,{src:e.qrDataUrl,alt:c(`channels:channelsPage.nameConnectionQRCode`,{name:J(e.platform,c)})}):e.status===`failed`?(0,B.jsx)(g,{className:`size-8`,strokeWidth:1.5}):(0,B.jsx)(y,{className:`size-7`}),(0,B.jsx)(`strong`,{children:k&&!e.id?c(`channels:channelsPage.enterBotCredentialsForName`,{name:J(e.platform,c)}):ce(e.status,c)}),e.error&&(0,B.jsx)(`p`,{children:e.error}),e.expireAt&&!O&&(0,B.jsx)(`small`,{children:c(`channels:channelsPage.qrCodeExpiresTime`,{time:le(e.expireAt,l)})})]}),e.needsVerifyCode&&(0,B.jsxs)(`div`,{className:`weixin-verify-code mt-2.5 grid grid-cols-[minmax(0,1fr)_auto] gap-2`,children:[(0,B.jsx)(w,{className:`font-mono tracking-[.08em] tabular-nums`,inputMode:`numeric`,value:u,onChange:e=>d(e.target.value.replace(/\D/g,``).slice(0,8)),placeholder:c(`channels:channelsPage.enterTheNumberShownOnYourPhone`)}),(0,B.jsx)(b,{className:`max-[650px]:h-11`,disabled:!u,onClick:async()=>{try{await i(`/api/channels/${e.platform}/onboarding/${encodeURIComponent(e.id||``)}/verify`,{method:`POST`,body:JSON.stringify({code:u})}),o(c(`channels:channelsPage.pairingCodeSubmitted`))}catch(e){o(Q(e),`error`)}},children:c(`channels:channelsPage.submitPairingCode`)})]}),e.qrUrl&&!O&&(0,B.jsx)(b,{asChild:!0,variant:`secondary`,className:`mt-2.5 w-full no-underline max-[650px]:h-11`,children:(0,B.jsxs)(`a`,{href:e.qrUrl,target:`_blank`,rel:`noreferrer`,children:[(0,B.jsx)(s,{}),c(`channels:channelsPage.cannotScanOpenTheSignInLink`)]})}),(0,B.jsxs)(F,{className:q,children:[(0,B.jsx)(m,{size:15}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:c(`channels:channelsPage.persistentTwoWayConnection`)}),(0,B.jsx)(`small`,{children:e.platform===`feishu`?c(`channels:channelsPage.webSocketReceivesDirectMessagesAndGroupMentions`):e.platform===`weixin`?c(`channels:channelsPage.tencentILinkContinuouslyPollsDirectMessagesAndSupportsTextAndMediaReplies`):Y(e.platform,c)})]})]}),(0,B.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,B.jsx)(b,{variant:`secondary`,className:`max-[650px]:h-11`,onClick:t,children:c(O?`channels:channelsPage.off`:`channels:channelsPage.cancel`)}),e.status===`failed`&&(0,B.jsxs)(b,{className:`max-[650px]:h-11`,onClick:n,children:[(0,B.jsx)(p,{}),c(k?`channels:channelsPage.retry`:`channels:channelsPage.generateANewQRCode`)]})]})]})})}export{ue as ChannelsPage};
@@ -1 +1 @@
1
- import{m as e,n as t,r as n}from"./vendor-router-CSN_DGvx.js";import{r}from"./vendor-react-DwNgTV1j.js";import{r as i}from"./routes-Da0OHSy6.js";import{t as a}from"./use-i18n-B5p-Kzvz.js";var o=r();function s({appearance:r}){let{t:s}=a(),[c]=e(),l=c.get(`view`);return l===`layout`||l===`widgets`?(0,o.jsx)(n,{to:i.components,replace:!0}):(0,o.jsxs)(`div`,{className:`flex min-h-full min-w-0 flex-col gap-4`,children:[(0,o.jsxs)(t,{to:i.components,"data-components-moved":!0,className:`group flex min-h-11 w-fit max-w-full items-center gap-x-2 gap-y-0.5 rounded-md border border-stroke bg-solid px-3 py-2 text-sm text-content-secondary transition-colors duration-(--d-fast) hover:border-stroke-strong hover:text-content focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus max-[650px]:w-full max-[650px]:flex-wrap`,children:[(0,o.jsx)(`span`,{className:`font-medium text-content`,children:s(`custom-ui:moved.title`)}),(0,o.jsx)(`span`,{className:`text-xs text-content-muted`,children:s(`custom-ui:moved.hint`)})]}),r]})}export{s as ChatAppearancePage};
1
+ import{m as e,n as t,r as n}from"./vendor-router-CSN_DGvx.js";import{r}from"./vendor-react-DwNgTV1j.js";import{r as i}from"./routes-DIeaqWVc.js";import{t as a}from"./use-i18n-CUS2_EGy.js";var o=r();function s({appearance:r}){let{t:s}=a(),[c]=e(),l=c.get(`view`);return l===`layout`||l===`widgets`?(0,o.jsx)(n,{to:i.components,replace:!0}):(0,o.jsxs)(`div`,{className:`flex min-h-full min-w-0 flex-col gap-4`,children:[(0,o.jsxs)(t,{to:i.components,"data-components-moved":!0,className:`group flex min-h-11 w-fit max-w-full items-center gap-x-2 gap-y-0.5 rounded-md border border-stroke bg-solid px-3 py-2 text-sm text-content-secondary transition-colors duration-(--d-fast) hover:border-stroke-strong hover:text-content focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus max-[650px]:w-full max-[650px]:flex-wrap`,children:[(0,o.jsx)(`span`,{className:`font-medium text-content`,children:s(`custom-ui:moved.title`)}),(0,o.jsx)(`span`,{className:`text-xs text-content-muted`,children:s(`custom-ui:moved.hint`)})]}),r]})}export{s as ChatAppearancePage};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./index-CsE52ydO.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{t as i}from"./use-i18n-B5p-Kzvz.js";import{t as a}from"./storage-BY6wEHPw.js";import{t as o}from"./useQuery-DdcpUQhO.js";import{a as s,n as c,o as l,t as u}from"./startup-queries-6Oztqpto.js";import{t as d}from"./api-BO7LAPSQ.js";import{t as ee}from"./usePhoneShell-Bvb7m-m4.js";import{t as f}from"./createLucideIcon-Cd-3GVxJ.js";import{a as p,c as te,t as ne}from"./session-list-BeyOEzyU.js";import{t as re}from"./ellipsis-CfGKfbq6.js";import{t as ie}from"./pencil-U08v_vV9.js";import{t as m}from"./pin-CU0FG0lI.js";import{t as ae}from"./refresh-cw-TbWxTY4K.js";import{t as oe}from"./square-pen-hYbjKh6A.js";import{t as se}from"./trash-2-CNrPOoPR.js";import{t as h}from"./brand-DIEc3fK8.js";import{t as ce}from"./more-pages-D_PnxLN0.js";import{c as le,i as g,p as ue,r as de,t as fe}from"./dropdown-menu-CFIFNaKO.js";import{t as _}from"./utils-C8uzG5AZ.js";import{n as pe,t as v}from"./button-CCcCN8tE.js";import{c as me,t as y,u as b,v as he}from"./events-DrAPv0se.js";import{s as ge}from"./shortcuts-Cvp9WD9O.js";import{n as _e,t as ve}from"./session-organization-api-DFu3Chto.js";import{a as ye,o as be}from"./format-DMJQzoZ7.js";import{n as x}from"./PageState-Cz6vFMXv.js";import{t as S}from"./session-change-summary-api-DgRT32uh.js";import{a as xe,i as Se,n as Ce,o as we,r as Te,s as Ee,t as De}from"./FeaturePage-Bkt1wWVg.js";import{t as C}from"./StatusGlyph-1KgitlUg.js";import{t as Oe}from"./badge-CWB3lj2H.js";var ke=f(`archive-restore`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h2`,key:`tvwodi`}],[`path`,{d:`M20 8v11a2 2 0 0 1-2 2h-2`,key:`1gkqxj`}],[`path`,{d:`m9 15 3-3 3 3`,key:`1pd0qc`}],[`path`,{d:`M12 12v9`,key:`192myk`}]]),Ae=f(`folder-closed`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}],[`path`,{d:`M2 10h20`,key:`1ir3d8`}]]),je=f(`pin-off`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]),w=e(n(),1),T=864e5;function E(e,t=Date.now()){if(e.pinned)return`pinned`;let n=Date.parse(e.modified||``);if(!Number.isFinite(n))return`earlier`;let r=new Date(t);return r.setHours(0,0,0,0),n>=r.getTime()?`today`:n>=r.getTime()-6*T?`week`:`earlier`}function D(e,t,n=Date.now()){let r=new Map;return e.forEach((e,i)=>{let a=E(e,n),o=r.get(a)??{key:a,count:0,items:[]};o.count+=1,i<t&&o.items.push(e),r.set(a,o)}),[...r.values()].filter(e=>e.items.length>0)}function Me(e,t,n,r=`active`,i=Date.now()){let a=t.trim().toLowerCase(),o=a?e.filter(e=>`${e.name||``} ${e.firstMessage||``} ${e.cwd||``} ${e.model||``}`.toLowerCase().includes(a)):e.filter(e=>!!e.archived==(r===`archived`)),s=p(o),c=s.slice(0,Math.max(0,n));return{total:o.length,items:c,groups:D(s,c.length,i)}}var O=r();function k({sessionId:e,lastCompletedAt:t,streaming:n}){let{t:r}=i(),a=(0,w.useRef)(null),[s,c]=(0,w.useState)(!1);(0,w.useEffect)(()=>{let e=a.current;if(!e||s)return;if(!(`IntersectionObserver`in window)){c(!0);return}let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(c(!0),t.disconnect())},{rootMargin:`120px`});return t.observe(e),()=>t.disconnect()},[s]);let{data:l}=o({queryKey:[`session-change-summary`,e,t],queryFn:()=>S(e),enabled:s,staleTime:6e4,retry:0,refetchInterval:n&&s?2e4:!1});return l?.status!==`known`||!l.changedFiles?(0,O.jsx)(`span`,{ref:a}):(0,O.jsx)(`span`,{ref:a,className:`ml-1 inline-flex items-center gap-1 tabular-nums before:mr-1 before:content-['·']`,children:r(`chat:chatHistoryPage.changeSummary`,{count:l.changedFiles,added:l.added||0,removed:l.removed||0})})}function A(e){s.setQueryData(u,t=>t&&{...t,sessions:e(t.sessions||[])})}function j({navigate:e,onBack:n,onNewTask:r,notify:s,requestConfirm:u,requestText:f}){let{t:S,language:T}=i(),E=ee(),D=ge(`focusSearch`),[j,Ne]=(0,w.useState)(``),M=o(l(`sessions`)),N=(0,w.useMemo)(()=>p(M.data?.sessions||[]),[M.data]),[P,Pe]=(0,w.useState)(`active`),F=`${P}\0${j}`,[I,L]=(0,w.useState)({filterKey:F,count:50}),R=(0,w.useRef)(!1),z=(0,w.useRef)(null),[B,V]=(0,w.useState)(()=>t.getItem(a.activeSession)||``),[Fe,H]=(0,w.useState)(!1),[U,W]=(0,w.useState)(``),G=M.isPending||Fe,K=M.error&&!M.data?M.error instanceof Error?M.error.message:String(M.error):``;(0,w.useEffect)(()=>{L(e=>e.filterKey===F&&e.count===50?e:{filterKey:F,count:50})},[F]);let q=(0,w.useCallback)(async()=>{H(!0),W(``);try{await c(`sessions`,!0)}catch(e){W(e instanceof Error?e.message:String(e))}finally{H(!1)}},[]);(0,w.useEffect)(()=>(document.title=`${S(`chat:chatHistoryPage.chatHistory`)} · ${h}`,()=>{document.title=h}),[S]),(0,w.useEffect)(()=>{let e=e=>V(e.detail?.id||t.getItem(a.activeSession)||``);return window.addEventListener(y,e),()=>window.removeEventListener(y,e)},[]);let J=I.filterKey===F?I.count:50,Y=(0,w.useMemo)(()=>Me(N,j,J,P),[P,j,N,J]),X=N.filter(e=>e.archived).length,Z={active:N.length-X,archived:X},Ie={pinned:S(`chat:chatHistoryPage.groupPinned`),today:S(`chat:chatHistoryPage.groupToday`),week:S(`chat:chatHistoryPage.groupWeek`),earlier:S(`chat:chatHistoryPage.groupEarlier`)};(0,w.useEffect)(()=>{R.current&&(R.current=!1,z.current?.focus())},[Y.items.length,Y.total]);let Le=t=>{he(t),e(`chat`)},Re=async e=>{let t=await f({title:S(`chat:chatHistoryPage.renameChat`),inputLabel:S(`chat:chatHistoryPage.chatTitle`),value:e.name,confirmLabel:S(`chat:chatHistoryPage.save`)});if(t!==null&&t!==e.name)try{let n=await d(`/api/sessions/${encodeURIComponent(e.id)}`,{method:`PATCH`,body:JSON.stringify({name:t})});A(t=>t.map(t=>t.id===e.id?{...t,name:n.name}:t)),b({id:e.id,name:n.name}),s(S(`chat:chatHistoryPage.chatTitleUpdated`))}catch(e){W(e instanceof Error?e.message:String(e))}},Q=async(e,t,n)=>{try{let r=await _e(e.id,t);A(e=>ne(e,r)),s(n)}catch(e){W(e instanceof ve?S(`chat:chatHistoryPage.sessionUpdateFailed`):e instanceof Error?e.message:String(e))}},ze=async e=>{if(await u({title:S(`chat:chatHistoryPage.deleteChat`),message:S(`chat:chatHistoryPage.deleteChatNameThisAlsoRemovesLocalChatHistory`,{name:e.name}),confirmLabel:S(`chat:chatHistoryPage.delete`)}))try{await d(`/api/sessions/${encodeURIComponent(e.id)}`,{method:`DELETE`});let n=N.filter(t=>t.id!==e.id);if(A(t=>t.filter(t=>t.id!==e.id)),B===e.id){let e=n[0]?.id||``;V(e),e?t.setItem(a.activeSession,e):t.removeItem(a.activeSession),me(e)}b({deletedIds:[e.id]}),s(S(`chat:chatHistoryPage.chatDeleted`))}catch(e){W(e instanceof Error?e.message:String(e))}},Be=e=>e.streaming?(0,O.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 text-content-secondary`,children:[(0,O.jsx)(C,{status:`run`,className:`size-3.5`}),S(`chat:chatHistoryPage.statusRunning`)]}):e.needsAttention?(0,O.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 font-medium text-warning-strong`,children:[(0,O.jsx)(C,{status:`attention`,className:`size-3.5`}),e.attentionReason===`failure`?S(`chat:chatHistoryPage.statusFailed`):e.attentionReason===`approval`?S(`chat:chatHistoryPage.statusApproval`):S(`chat:chatHistoryPage.needsAttention`)]}):null,$=S(`chat:chatHistoryPage.chatHistory`),Ve=j?S(`chat:chatHistoryPage.noMatchingConversations`):P===`archived`?S(`chat:chatHistoryPage.noArchivedChats`):N.length?S(`chat:chatHistoryPage.noActiveChats`):S(`chat:chatHistoryPage.noConversationsHaveLeftAnEchoYet`),He=j?S(`chat:chatHistoryPage.tryADifferentSearch`):P===`archived`?S(`chat:chatHistoryPage.archivedChatsAppearHere`):N.length?S(`chat:chatHistoryPage.restoreArchivedChats`):S(`chat:chatHistoryPage.onceAConversationBeginsItWillBeQuietlyGatheredHere`);return(0,O.jsx)(Te,{title:$,description:S(`chat:chatHistoryPage.lede`),back:n&&{label:S(`navigation:sidebar.features`),ariaLabel:S(`navigation:shell.backToFeaturesLabel`),onBack:n},toolbar:(0,O.jsx)(Ee,{search:(0,O.jsx)(xe,{id:ce,value:j,onValueChange:Ne,placeholder:S(`navigation:pageHeader.searchPage`,{page:$}),shortcut:D,clearLabel:S(`navigation:more.clearSearch`)}),actions:r&&!E&&(0,O.jsxs)(v,{type:`button`,className:`h-9`,onClick:r,children:[(0,O.jsx)(oe,{}),S(`navigation:shell.newTask`)]}),filters:(0,O.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-4 gap-y-2`,children:[(0,O.jsx)(`div`,{role:`group`,"aria-label":S(`chat:chatHistoryPage.historySections`),className:`inline-grid h-8 grid-cols-2 rounded-md border border-stroke bg-chrome p-[3px] max-[650px]:h-auto max-[650px]:flex-1 max-[650px]:rounded-[10px] pointer-coarse:h-auto`,children:[`active`,`archived`].map(e=>(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":P===e,"aria-label":e===`active`?S(`chat:chatHistoryPage.activeChatsCount`,{count:Z.active}):S(`chat:chatHistoryPage.archivedChats`,{count:Z.archived}),className:_(`inline-flex min-w-0 items-center justify-center gap-1.5 rounded-sm border border-transparent px-3 text-sm text-content-secondary transition-colors duration-(--d-fast) hover:text-content max-[650px]:h-11 max-[650px]:text-base pointer-coarse:h-11`,P===e&&`border-key-border bg-key font-medium text-content shadow-key`),onClick:()=>Pe(e),children:[S(e===`active`?`chat:chatHistoryPage.activeChats`:`chat:chatHistoryPage.archived`),(0,O.jsx)(`span`,{className:_(`text-xs font-normal tabular-nums`,P===e?`text-content-secondary`:`text-content-muted`),children:Z[e]})]},e))}),(0,O.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1 text-xs text-content-muted tabular-nums`,children:[(0,O.jsxs)(`span`,{className:_(`truncate`,!j&&`max-[650px]:hidden`),children:[S(`chat:chatHistoryPage.countChatHistoryItems`,{count:N.length}),` · `,j?S(`chat:chatHistoryPage.countCurrentlyFiltered`,{count:Y.total}):S(`chat:chatHistoryPage.sortedByMostRecentlyUpdated`)]}),(0,O.jsx)(v,{variant:`ghost`,size:`icon-sm`,className:`text-content-muted max-[650px]:size-11 pointer-coarse:size-11`,"aria-label":S(`chat:chatHistoryPage.refresh`),title:S(`chat:chatHistoryPage.refresh`),onClick:()=>void q(),disabled:G,children:G?(0,O.jsx)(pe,{className:`text-current`}):(0,O.jsx)(ae,{size:14})})]})]})}),children:G&&!N.length?(0,O.jsx)(x,{kind:`loading`,title:S(`chat:chatHistoryPage.loadingChatHistory`)}):K&&!N.length?(0,O.jsx)(x,{kind:`error`,title:S(`chat:chatHistoryPage.loadFailed`),description:K,action:(0,O.jsx)(v,{variant:`secondary`,className:`max-[650px]:h-11`,loading:G,disabled:G,onClick:()=>void q(),children:S(`common:pageTemplate.retry`)})}):(0,O.jsxs)(O.Fragment,{children:[(U||K)&&(0,O.jsx)(De,{children:U||K}),Y.total?(0,O.jsxs)(`div`,{className:`chat-history-list`,children:[Y.groups.map(e=>(0,O.jsx)(we,{title:Ie[e.key],count:e.count,children:(0,O.jsx)(Ce,{children:e.items.map(e=>{let t=e.name||S(`chat:chatHistoryPage.untitledChat`),n=e.model&&!/(^|\/)unknown$/i.test(String(e.model))?String(e.model).split(`/`).at(-1):``,r=e.id===B;return(0,O.jsx)(Se,{"data-history-session":e.id,"data-current":r||void 0,className:_(`chat-history-row relative`,r&&`after:absolute after:top-3.5 after:bottom-3.5 after:-left-3 after:w-[3px] after:rounded-r-[3px] after:bg-star max-[650px]:after:-left-2.5`),onOpen:()=>Le(e.id),openLabel:S(`chat:chatHistoryPage.openChatNamed`,{name:t}),name:(0,O.jsxs)(`span`,{className:`chat-history-copy inline-flex max-w-full min-w-0 items-center gap-2`,children:[e.unread&&(0,O.jsx)(`span`,{role:`img`,"aria-label":S(`chat:chatHistoryPage.unread`),className:`size-1.5 shrink-0 rounded-full bg-ink`}),e.pinned&&(0,O.jsx)(m,{className:`size-3.5 shrink-0 text-content-muted`,"aria-hidden":`true`}),(0,O.jsx)(`strong`,{"data-history-name":!0,className:`min-w-0 truncate font-medium`,title:t,children:t})]}),description:(0,O.jsx)(`span`,{className:_(`line-clamp-1`,e.firstMessage?`text-content-secondary`:void 0),children:e.firstMessage||S(`chat:chatHistoryPage.noMessageSummary`)}),meta:(0,O.jsxs)(O.Fragment,{children:[Be(e),e.archived&&j.trim()&&(0,O.jsx)(Oe,{children:S(`chat:chatHistoryPage.archived`)}),(0,O.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1 font-mono`,children:[(0,O.jsx)(Ae,{className:`size-3.5 shrink-0`,"aria-hidden":`true`}),(0,O.jsx)(`span`,{className:`truncate`,children:be(e.projectless?``:e.cwd,T)})]}),(0,O.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,O.jsx)(`span`,{className:`shrink-0 tabular-nums`,children:S(`chat:chatHistoryPage.countMessages`,{count:e.messageCount||0})}),n&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{"aria-hidden":`true`,className:`max-[650px]:hidden`,children:`·`}),(0,O.jsx)(`span`,{className:`min-w-0 truncate font-mono max-[650px]:hidden`,children:n})]}),(0,O.jsx)(k,{sessionId:e.id,lastCompletedAt:e.lastCompletedAt,streaming:e.streaming})]}),status:(0,O.jsx)(`time`,{dateTime:e.modified,children:ye(e.modified,T)}),actions:(0,O.jsxs)(fe,{children:[(0,O.jsx)(ue,{asChild:!0,children:(0,O.jsx)(v,{type:`button`,variant:`ghost`,size:`icon`,className:`size-8 shrink-0 text-content-muted max-[650px]:size-11 pointer-coarse:size-11`,"aria-label":S(`chat:chatHistoryPage.moreActionsForChat`,{name:t}),children:(0,O.jsx)(re,{size:16})})}),(0,O.jsxs)(de,{align:`end`,className:`min-w-48`,children:[(0,O.jsxs)(g,{className:`min-h-11`,onSelect:()=>void Re(e),children:[(0,O.jsx)(ie,{}),S(`chat:chatHistoryPage.renameChat`)]}),(0,O.jsxs)(g,{className:`min-h-11`,onSelect:()=>void Q(e,{pinned:!e.pinned},e.pinned?S(`chat:chatHistoryPage.unpinned`):S(`chat:chatHistoryPage.pinned`)),children:[e.pinned?(0,O.jsx)(je,{}):(0,O.jsx)(m,{}),e.pinned?S(`chat:chatHistoryPage.unpin`):S(`chat:chatHistoryPage.pin`)]}),(0,O.jsxs)(g,{className:`min-h-11`,onSelect:()=>void Q(e,{archived:!e.archived},e.archived?S(`chat:chatHistoryPage.restored`):S(`chat:chatHistoryPage.movedToArchive`)),children:[e.archived?(0,O.jsx)(ke,{}):(0,O.jsx)(te,{}),e.archived?S(`chat:chatHistoryPage.restore`):S(`chat:chatHistoryPage.archive`)]}),e.unread&&(0,O.jsx)(g,{className:`min-h-11`,onSelect:()=>void Q(e,{read:!0},S(`chat:chatHistoryPage.markedRead`)),children:S(`chat:chatHistoryPage.markRead`)}),(0,O.jsx)(le,{}),(0,O.jsxs)(g,{variant:`destructive`,className:`min-h-11`,onSelect:()=>void ze(e),children:[(0,O.jsx)(se,{}),S(`chat:chatHistoryPage.deleteChat`)]})]})]})},e.id)})})},e.key)),Y.total>50&&(0,O.jsx)(`div`,{className:`flex justify-center pt-4`,children:Y.total>Y.items.length?(0,O.jsx)(v,{type:`button`,variant:`secondary`,className:`tabular-nums max-[650px]:min-h-11 pointer-coarse:min-h-11`,onClick:()=>{let e=J+50;R.current=e>=Y.total,L({filterKey:F,count:e})},children:S(`chat:chatHistoryPage.loadMoreChats`,{shown:Y.items.length,total:Y.total})}):(0,O.jsx)(`p`,{ref:z,tabIndex:-1,role:`status`,className:`py-2 text-xs text-content-muted tabular-nums`,children:S(`chat:chatHistoryPage.allChatsShown`,{count:Y.total})})})]}):(0,O.jsx)(x,{kind:`empty`,title:Ve,description:He})]})})}export{j as ChatHistoryPage};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./index-C5aKcTGw.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{t as i}from"./use-i18n-CUS2_EGy.js";import{t as a}from"./storage-DH3bQdy6.js";import{t as o}from"./useQuery-DdcpUQhO.js";import{a as s,n as c,o as l,t as u}from"./startup-queries-DeNu46nT.js";import{t as d}from"./api-CKJOip3Q.js";import{t as ee}from"./usePhoneShell-cYrS53S8.js";import{t as f}from"./createLucideIcon-Cd-3GVxJ.js";import{a as p,c as te,t as ne}from"./session-list-BeyOEzyU.js";import{t as re}from"./ellipsis-CfGKfbq6.js";import{t as ie}from"./pencil-U08v_vV9.js";import{t as m}from"./pin-CU0FG0lI.js";import{t as ae}from"./refresh-cw-TbWxTY4K.js";import{t as oe}from"./square-pen-hYbjKh6A.js";import{t as se}from"./trash-2-CNrPOoPR.js";import{t as h}from"./brand-DIEc3fK8.js";import{t as ce}from"./more-pages-D_PnxLN0.js";import{c as le,i as g,p as ue,r as de,t as fe}from"./dropdown-menu-CFIFNaKO.js";import{t as _}from"./utils-C8uzG5AZ.js";import{n as pe,t as v}from"./button-CCcCN8tE.js";import{c as me,t as y,u as b,y as he}from"./events-CZTn9wa-.js";import{s as ge}from"./shortcuts-IA6Uq_O6.js";import{n as _e,t as ve}from"./session-organization-api-Bs8DdxU1.js";import{a as ye,o as be}from"./format-DMJQzoZ7.js";import{t as x}from"./StatusGlyph-1KgitlUg.js";import{t as S}from"./session-change-summary-api-DmmNGbP7.js";import{n as C}from"./PageState-Cz6vFMXv.js";import{a as xe,i as Se,n as Ce,o as we,r as Te,s as Ee,t as De}from"./FeaturePage-B3wCvGpC.js";import{t as Oe}from"./badge-CWB3lj2H.js";var ke=f(`archive-restore`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h2`,key:`tvwodi`}],[`path`,{d:`M20 8v11a2 2 0 0 1-2 2h-2`,key:`1gkqxj`}],[`path`,{d:`m9 15 3-3 3 3`,key:`1pd0qc`}],[`path`,{d:`M12 12v9`,key:`192myk`}]]),Ae=f(`folder-closed`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}],[`path`,{d:`M2 10h20`,key:`1ir3d8`}]]),je=f(`pin-off`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]),w=e(n(),1),T=864e5;function E(e,t=Date.now()){if(e.pinned)return`pinned`;let n=Date.parse(e.modified||``);if(!Number.isFinite(n))return`earlier`;let r=new Date(t);return r.setHours(0,0,0,0),n>=r.getTime()?`today`:n>=r.getTime()-6*T?`week`:`earlier`}function D(e,t,n=Date.now()){let r=new Map;return e.forEach((e,i)=>{let a=E(e,n),o=r.get(a)??{key:a,count:0,items:[]};o.count+=1,i<t&&o.items.push(e),r.set(a,o)}),[...r.values()].filter(e=>e.items.length>0)}function Me(e,t,n,r=`active`,i=Date.now()){let a=t.trim().toLowerCase(),o=a?e.filter(e=>`${e.name||``} ${e.firstMessage||``} ${e.cwd||``} ${e.model||``}`.toLowerCase().includes(a)):e.filter(e=>!!e.archived==(r===`archived`)),s=p(o),c=s.slice(0,Math.max(0,n));return{total:o.length,items:c,groups:D(s,c.length,i)}}var O=r();function k({sessionId:e,lastCompletedAt:t,streaming:n}){let{t:r}=i(),a=(0,w.useRef)(null),[s,c]=(0,w.useState)(!1);(0,w.useEffect)(()=>{let e=a.current;if(!e||s)return;if(!(`IntersectionObserver`in window)){c(!0);return}let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(c(!0),t.disconnect())},{rootMargin:`120px`});return t.observe(e),()=>t.disconnect()},[s]);let{data:l}=o({queryKey:[`session-change-summary`,e,t],queryFn:()=>S(e),enabled:s,staleTime:6e4,retry:0,refetchInterval:n&&s?2e4:!1});return l?.status!==`known`||!l.changedFiles?(0,O.jsx)(`span`,{ref:a}):(0,O.jsx)(`span`,{ref:a,className:`ml-1 inline-flex items-center gap-1 tabular-nums before:mr-1 before:content-['·']`,children:r(`chat:chatHistoryPage.changeSummary`,{count:l.changedFiles,added:l.added||0,removed:l.removed||0})})}function A(e){s.setQueryData(u,t=>t&&{...t,sessions:e(t.sessions||[])})}function j({navigate:e,onBack:n,onNewTask:r,notify:s,requestConfirm:u,requestText:f}){let{t:S,language:T}=i(),E=ee(),D=ge(`focusSearch`),[j,Ne]=(0,w.useState)(``),M=o(l(`sessions`)),N=(0,w.useMemo)(()=>p(M.data?.sessions||[]),[M.data]),[P,Pe]=(0,w.useState)(`active`),F=`${P}\0${j}`,[I,L]=(0,w.useState)({filterKey:F,count:50}),R=(0,w.useRef)(!1),z=(0,w.useRef)(null),[B,V]=(0,w.useState)(()=>t.getItem(a.activeSession)||``),[Fe,H]=(0,w.useState)(!1),[U,W]=(0,w.useState)(``),G=M.isPending||Fe,K=M.error&&!M.data?M.error instanceof Error?M.error.message:String(M.error):``;(0,w.useEffect)(()=>{L(e=>e.filterKey===F&&e.count===50?e:{filterKey:F,count:50})},[F]);let q=(0,w.useCallback)(async()=>{H(!0),W(``);try{await c(`sessions`,!0)}catch(e){W(e instanceof Error?e.message:String(e))}finally{H(!1)}},[]);(0,w.useEffect)(()=>(document.title=`${S(`chat:chatHistoryPage.chatHistory`)} · ${h}`,()=>{document.title=h}),[S]),(0,w.useEffect)(()=>{let e=e=>V(e.detail?.id||t.getItem(a.activeSession)||``);return window.addEventListener(y,e),()=>window.removeEventListener(y,e)},[]);let J=I.filterKey===F?I.count:50,Y=(0,w.useMemo)(()=>Me(N,j,J,P),[P,j,N,J]),X=N.filter(e=>e.archived).length,Z={active:N.length-X,archived:X},Ie={pinned:S(`chat:chatHistoryPage.groupPinned`),today:S(`chat:chatHistoryPage.groupToday`),week:S(`chat:chatHistoryPage.groupWeek`),earlier:S(`chat:chatHistoryPage.groupEarlier`)};(0,w.useEffect)(()=>{R.current&&(R.current=!1,z.current?.focus())},[Y.items.length,Y.total]);let Le=t=>{he(t),e(`chat`)},Re=async e=>{let t=await f({title:S(`chat:chatHistoryPage.renameChat`),inputLabel:S(`chat:chatHistoryPage.chatTitle`),value:e.name,confirmLabel:S(`chat:chatHistoryPage.save`)});if(t!==null&&t!==e.name)try{let n=await d(`/api/sessions/${encodeURIComponent(e.id)}`,{method:`PATCH`,body:JSON.stringify({name:t})});A(t=>t.map(t=>t.id===e.id?{...t,name:n.name}:t)),b({id:e.id,name:n.name}),s(S(`chat:chatHistoryPage.chatTitleUpdated`))}catch(e){W(e instanceof Error?e.message:String(e))}},Q=async(e,t,n)=>{try{let r=await _e(e.id,t);A(e=>ne(e,r)),s(n)}catch(e){W(e instanceof ve?S(`chat:chatHistoryPage.sessionUpdateFailed`):e instanceof Error?e.message:String(e))}},ze=async e=>{if(await u({title:S(`chat:chatHistoryPage.deleteChat`),message:S(`chat:chatHistoryPage.deleteChatNameThisAlsoRemovesLocalChatHistory`,{name:e.name}),confirmLabel:S(`chat:chatHistoryPage.delete`)}))try{await d(`/api/sessions/${encodeURIComponent(e.id)}`,{method:`DELETE`});let n=N.filter(t=>t.id!==e.id);if(A(t=>t.filter(t=>t.id!==e.id)),B===e.id){let e=n[0]?.id||``;V(e),e?t.setItem(a.activeSession,e):t.removeItem(a.activeSession),me(e)}b({deletedIds:[e.id]}),s(S(`chat:chatHistoryPage.chatDeleted`))}catch(e){W(e instanceof Error?e.message:String(e))}},Be=e=>e.streaming?(0,O.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 text-content-secondary`,children:[(0,O.jsx)(x,{status:`run`,className:`size-3.5`}),S(`chat:chatHistoryPage.statusRunning`)]}):e.needsAttention?(0,O.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 font-medium text-warning-strong`,children:[(0,O.jsx)(x,{status:`attention`,className:`size-3.5`}),e.attentionReason===`failure`?S(`chat:chatHistoryPage.statusFailed`):e.attentionReason===`approval`?S(`chat:chatHistoryPage.statusApproval`):S(`chat:chatHistoryPage.needsAttention`)]}):null,$=S(`chat:chatHistoryPage.chatHistory`),Ve=j?S(`chat:chatHistoryPage.noMatchingConversations`):P===`archived`?S(`chat:chatHistoryPage.noArchivedChats`):N.length?S(`chat:chatHistoryPage.noActiveChats`):S(`chat:chatHistoryPage.noConversationsHaveLeftAnEchoYet`),He=j?S(`chat:chatHistoryPage.tryADifferentSearch`):P===`archived`?S(`chat:chatHistoryPage.archivedChatsAppearHere`):N.length?S(`chat:chatHistoryPage.restoreArchivedChats`):S(`chat:chatHistoryPage.onceAConversationBeginsItWillBeQuietlyGatheredHere`);return(0,O.jsx)(Te,{title:$,description:S(`chat:chatHistoryPage.lede`),back:n&&{label:S(`navigation:sidebar.features`),ariaLabel:S(`navigation:shell.backToFeaturesLabel`),onBack:n},toolbar:(0,O.jsx)(Ee,{search:(0,O.jsx)(xe,{id:ce,value:j,onValueChange:Ne,placeholder:S(`navigation:pageHeader.searchPage`,{page:$}),shortcut:D,clearLabel:S(`navigation:more.clearSearch`)}),actions:r&&!E&&(0,O.jsxs)(v,{type:`button`,className:`h-9`,onClick:r,children:[(0,O.jsx)(oe,{}),S(`navigation:shell.newTask`)]}),filters:(0,O.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-4 gap-y-2`,children:[(0,O.jsx)(`div`,{role:`group`,"aria-label":S(`chat:chatHistoryPage.historySections`),className:`inline-grid h-8 grid-cols-2 rounded-md border border-stroke bg-chrome p-[3px] max-[650px]:h-auto max-[650px]:flex-1 max-[650px]:rounded-[10px] pointer-coarse:h-auto`,children:[`active`,`archived`].map(e=>(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":P===e,"aria-label":e===`active`?S(`chat:chatHistoryPage.activeChatsCount`,{count:Z.active}):S(`chat:chatHistoryPage.archivedChats`,{count:Z.archived}),className:_(`inline-flex min-w-0 items-center justify-center gap-1.5 rounded-sm border border-transparent px-3 text-sm text-content-secondary transition-colors duration-(--d-fast) hover:text-content max-[650px]:h-11 max-[650px]:text-base pointer-coarse:h-11`,P===e&&`border-key-border bg-key font-medium text-content shadow-key`),onClick:()=>Pe(e),children:[S(e===`active`?`chat:chatHistoryPage.activeChats`:`chat:chatHistoryPage.archived`),(0,O.jsx)(`span`,{className:_(`text-xs font-normal tabular-nums`,P===e?`text-content-secondary`:`text-content-muted`),children:Z[e]})]},e))}),(0,O.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1 text-xs text-content-muted tabular-nums`,children:[(0,O.jsxs)(`span`,{className:_(`truncate`,!j&&`max-[650px]:hidden`),children:[S(`chat:chatHistoryPage.countChatHistoryItems`,{count:N.length}),` · `,j?S(`chat:chatHistoryPage.countCurrentlyFiltered`,{count:Y.total}):S(`chat:chatHistoryPage.sortedByMostRecentlyUpdated`)]}),(0,O.jsx)(v,{variant:`ghost`,size:`icon-sm`,className:`text-content-muted max-[650px]:size-11 pointer-coarse:size-11`,"aria-label":S(`chat:chatHistoryPage.refresh`),title:S(`chat:chatHistoryPage.refresh`),onClick:()=>void q(),disabled:G,children:G?(0,O.jsx)(pe,{className:`text-current`}):(0,O.jsx)(ae,{size:14})})]})]})}),children:G&&!N.length?(0,O.jsx)(C,{kind:`loading`,title:S(`chat:chatHistoryPage.loadingChatHistory`)}):K&&!N.length?(0,O.jsx)(C,{kind:`error`,title:S(`chat:chatHistoryPage.loadFailed`),description:K,action:(0,O.jsx)(v,{variant:`secondary`,className:`max-[650px]:h-11`,loading:G,disabled:G,onClick:()=>void q(),children:S(`common:pageTemplate.retry`)})}):(0,O.jsxs)(O.Fragment,{children:[(U||K)&&(0,O.jsx)(De,{children:U||K}),Y.total?(0,O.jsxs)(`div`,{className:`chat-history-list`,children:[Y.groups.map(e=>(0,O.jsx)(we,{title:Ie[e.key],count:e.count,children:(0,O.jsx)(Ce,{children:e.items.map(e=>{let t=e.name||S(`chat:chatHistoryPage.untitledChat`),n=e.model&&!/(^|\/)unknown$/i.test(String(e.model))?String(e.model).split(`/`).at(-1):``,r=e.id===B;return(0,O.jsx)(Se,{"data-history-session":e.id,"data-current":r||void 0,className:_(`chat-history-row relative`,r&&`after:absolute after:top-3.5 after:bottom-3.5 after:-left-3 after:w-[3px] after:rounded-r-[3px] after:bg-star max-[650px]:after:-left-2.5`),onOpen:()=>Le(e.id),openLabel:S(`chat:chatHistoryPage.openChatNamed`,{name:t}),name:(0,O.jsxs)(`span`,{className:`chat-history-copy inline-flex max-w-full min-w-0 items-center gap-2`,children:[e.unread&&(0,O.jsx)(`span`,{role:`img`,"aria-label":S(`chat:chatHistoryPage.unread`),className:`size-1.5 shrink-0 rounded-full bg-ink`}),e.pinned&&(0,O.jsx)(m,{className:`size-3.5 shrink-0 text-content-muted`,"aria-hidden":`true`}),(0,O.jsx)(`strong`,{"data-history-name":!0,className:`min-w-0 truncate font-medium`,title:t,children:t})]}),description:(0,O.jsx)(`span`,{className:_(`line-clamp-1`,e.firstMessage?`text-content-secondary`:void 0),children:e.firstMessage||S(`chat:chatHistoryPage.noMessageSummary`)}),meta:(0,O.jsxs)(O.Fragment,{children:[Be(e),e.archived&&j.trim()&&(0,O.jsx)(Oe,{children:S(`chat:chatHistoryPage.archived`)}),(0,O.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1 font-mono`,children:[(0,O.jsx)(Ae,{className:`size-3.5 shrink-0`,"aria-hidden":`true`}),(0,O.jsx)(`span`,{className:`truncate`,children:be(e.projectless?``:e.cwd,T)})]}),(0,O.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,O.jsx)(`span`,{className:`shrink-0 tabular-nums`,children:S(`chat:chatHistoryPage.countMessages`,{count:e.messageCount||0})}),n&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{"aria-hidden":`true`,className:`max-[650px]:hidden`,children:`·`}),(0,O.jsx)(`span`,{className:`min-w-0 truncate font-mono max-[650px]:hidden`,children:n})]}),(0,O.jsx)(k,{sessionId:e.id,lastCompletedAt:e.lastCompletedAt,streaming:e.streaming})]}),status:(0,O.jsx)(`time`,{dateTime:e.modified,children:ye(e.modified,T)}),actions:(0,O.jsxs)(fe,{children:[(0,O.jsx)(ue,{asChild:!0,children:(0,O.jsx)(v,{type:`button`,variant:`ghost`,size:`icon`,className:`size-8 shrink-0 text-content-muted max-[650px]:size-11 pointer-coarse:size-11`,"aria-label":S(`chat:chatHistoryPage.moreActionsForChat`,{name:t}),children:(0,O.jsx)(re,{size:16})})}),(0,O.jsxs)(de,{align:`end`,className:`min-w-48`,children:[(0,O.jsxs)(g,{className:`min-h-11`,onSelect:()=>void Re(e),children:[(0,O.jsx)(ie,{}),S(`chat:chatHistoryPage.renameChat`)]}),(0,O.jsxs)(g,{className:`min-h-11`,onSelect:()=>void Q(e,{pinned:!e.pinned},e.pinned?S(`chat:chatHistoryPage.unpinned`):S(`chat:chatHistoryPage.pinned`)),children:[e.pinned?(0,O.jsx)(je,{}):(0,O.jsx)(m,{}),e.pinned?S(`chat:chatHistoryPage.unpin`):S(`chat:chatHistoryPage.pin`)]}),(0,O.jsxs)(g,{className:`min-h-11`,onSelect:()=>void Q(e,{archived:!e.archived},e.archived?S(`chat:chatHistoryPage.restored`):S(`chat:chatHistoryPage.movedToArchive`)),children:[e.archived?(0,O.jsx)(ke,{}):(0,O.jsx)(te,{}),e.archived?S(`chat:chatHistoryPage.restore`):S(`chat:chatHistoryPage.archive`)]}),e.unread&&(0,O.jsx)(g,{className:`min-h-11`,onSelect:()=>void Q(e,{read:!0},S(`chat:chatHistoryPage.markedRead`)),children:S(`chat:chatHistoryPage.markRead`)}),(0,O.jsx)(le,{}),(0,O.jsxs)(g,{variant:`destructive`,className:`min-h-11`,onSelect:()=>void ze(e),children:[(0,O.jsx)(se,{}),S(`chat:chatHistoryPage.deleteChat`)]})]})]})},e.id)})})},e.key)),Y.total>50&&(0,O.jsx)(`div`,{className:`flex justify-center pt-4`,children:Y.total>Y.items.length?(0,O.jsx)(v,{type:`button`,variant:`secondary`,className:`tabular-nums max-[650px]:min-h-11 pointer-coarse:min-h-11`,onClick:()=>{let e=J+50;R.current=e>=Y.total,L({filterKey:F,count:e})},children:S(`chat:chatHistoryPage.loadMoreChats`,{shown:Y.items.length,total:Y.total})}):(0,O.jsx)(`p`,{ref:z,tabIndex:-1,role:`status`,className:`py-2 text-xs text-content-muted tabular-nums`,children:S(`chat:chatHistoryPage.allChatsShown`,{count:Y.total})})})]}):(0,O.jsx)(C,{kind:`empty`,title:Ve,description:He})]})})}export{j as ChatHistoryPage};