pisper 0.6.13 → 0.6.14

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 (108) hide show
  1. package/package.json +5 -5
  2. package/web/.vite/manifest.json +541 -541
  3. package/web/assets/{AppDialog-ChuOV69R.js → AppDialog-DrhCZm1r.js} +1 -1
  4. package/web/assets/{AppOverlays-BNxogCpM.js → AppOverlays-CxgReqGn.js} +1 -1
  5. package/web/assets/{AssetsPage-C_zULo41.js → AssetsPage-CKK-byQY.js} +1 -1
  6. package/web/assets/{BoardPage-Wu9X-Zur.js → BoardPage-vwv5vTDm.js} +3 -3
  7. package/web/assets/{ChannelsPage-DvQYEsZx.js → ChannelsPage-L-wcVDSN.js} +1 -1
  8. package/web/assets/{ChatAppearancePage-Dc1hcGO1.js → ChatAppearancePage-BhqRLf-2.js} +1 -1
  9. package/web/assets/{ChatHistoryPage-DOldhuBG.js → ChatHistoryPage-DBsNyGYj.js} +1 -1
  10. package/web/assets/{ChatPage-Bt1N3-Dd.js → ChatPage-DS0euFxR.js} +4 -4
  11. package/web/assets/{ConfigPage-Dx_9BXUH.js → ConfigPage-pOzONr8e.js} +2 -2
  12. package/web/assets/{DesktopWindowControls-DhzSLGsL.js → DesktopWindowControls-DCtIkpTs.js} +1 -1
  13. package/web/assets/{DispatchOverlay-LNd_knJl.js → DispatchOverlay-n-qbkOP-.js} +1 -1
  14. package/web/assets/{FeaturePage-BV7-6mzm.js → FeaturePage-Bkt1wWVg.js} +1 -1
  15. package/web/assets/{FileAttachmentPreview-cYRvzbsf.js → FileAttachmentPreview-Cnmi_2U-.js} +1 -1
  16. package/web/assets/{FloatingWidgets-CZvEZBfc.js → FloatingWidgets-BIJSFz34.js} +1 -1
  17. package/web/assets/{FocusRuntimeControls-B0yEDKMN.js → FocusRuntimeControls-C7NIdpV4.js} +1 -1
  18. package/web/assets/{GitDiffViewer-4ea3jm5E.js → GitDiffViewer-rjt5_KOt.js} +1 -1
  19. package/web/assets/{LaunchConsole-Bu-NLmrh.js → LaunchConsole-DtxzpXJo.js} +2 -2
  20. package/web/assets/{ManageProjectsDialog-Qi8yMzuy.js → ManageProjectsDialog-RiFg3h1p.js} +1 -1
  21. package/web/assets/{MarkdownMessage-BSTx0KMg.js → MarkdownMessage-yl-PSRAz.js} +1 -1
  22. package/web/assets/{McpPage-DpT7NbHF.js → McpPage-D6GyZCpt.js} +1 -1
  23. package/web/assets/{MemoryPage-2BMB0tcU.js → MemoryPage-Dsx_6JpI.js} +1 -1
  24. package/web/assets/{MobileNavigation-BChENth3.js → MobileNavigation-DcBH2I9Y.js} +1 -1
  25. package/web/assets/{MorePage-D_E85kDw.js → MorePage-BBfiQbiP.js} +1 -1
  26. package/web/assets/{NewFolderDialog-B56_BjoW.js → NewFolderDialog-BinpbTs8.js} +1 -1
  27. package/web/assets/{PageHeader-BXQdmR1x.js → PageHeader-D_J-19ni.js} +1 -1
  28. package/web/assets/{PhoneDrawer-CapiWnwy.js → PhoneDrawer-CwxDkWZQ.js} +1 -1
  29. package/web/assets/{PhoneMenuButton-D1TPwX-1.js → PhoneMenuButton-B0AwvqEo.js} +1 -1
  30. package/web/assets/{PhoneTopBar-1qxMJEZn.js → PhoneTopBar-Dw0mIaWC.js} +1 -1
  31. package/web/assets/{PluginsPage-CPyf2iFu.js → PluginsPage-BzxPAX26.js} +1 -1
  32. package/web/assets/{QuickPromptIdeas-Cy_t1L7E.js → QuickPromptIdeas-Cd3SwBqS.js} +1 -1
  33. package/web/assets/{SafeModePrompt-BUIzMwem.js → SafeModePrompt-CLyt-z14.js} +1 -1
  34. package/web/assets/{SchedulesPage-DKTAxE95.js → SchedulesPage-Cbgl5v_8.js} +1 -1
  35. package/web/assets/{SessionBrowserPane-nAItO1A5.js → SessionBrowserPane-CB7jn-MS.js} +2 -2
  36. package/web/assets/{SessionContextPanel-9Bg4j5Vv.js → SessionContextPanel-CNmAp0ed.js} +2 -2
  37. package/web/assets/{SessionHome-BV3eA6FP.js → SessionHome-Ck_daJT0.js} +1 -1
  38. package/web/assets/{SessionInspector-nGAiGnrh.js → SessionInspector-cSzwsc4b.js} +1 -1
  39. package/web/assets/{SessionShell-DJAnktW8.js → SessionShell-BOZ7h0yz.js} +1 -1
  40. package/web/assets/{SettingsSidebar-fuUmdnZp.js → SettingsSidebar-IqsOv5h1.js} +1 -1
  41. package/web/assets/{ShortcutHelpDialog-Gqrlr6Mi.js → ShortcutHelpDialog-DKDAF94g.js} +1 -1
  42. package/web/assets/{ShortcutKeys-hvm91EiI.js → ShortcutKeys-DQFnMnX1.js} +1 -1
  43. package/web/assets/{SidebarUpdateStatus-AEvqSFVz.js → SidebarUpdateStatus-Cbwy5ii9.js} +1 -1
  44. package/web/assets/{SkillsPage-B4qPIWNT.js → SkillsPage-DTOzYSaS.js} +1 -1
  45. package/web/assets/{TaskProcessesPane-Dpxwl38Z.js → TaskProcessesPane-DRFmGkE3.js} +1 -1
  46. package/web/assets/{TaskTerminalView-DZkPrfzt.js → TaskTerminalView-DWNACXyI.js} +1 -1
  47. package/web/assets/{TerminalPanel-BLWGdiOM.js → TerminalPanel-QEt-SRiM.js} +1 -1
  48. package/web/assets/{WebDesktopPet-w5vrcLDr.js → WebDesktopPet-4CDch3gC.js} +1 -1
  49. package/web/assets/{WorkflowsPage-BIEGwArz.js → WorkflowsPage-AMKQBlPo.js} +1 -1
  50. package/web/assets/{WorkspacePicker-BiJHY52J.js → WorkspacePicker-B9vYtfab.js} +1 -1
  51. package/web/assets/{api-PMkeVoki.js → api-BO7LAPSQ.js} +1 -1
  52. package/web/assets/{app-update-BAixtUfS.js → app-update-DKWPHTUY.js} +1 -1
  53. package/web/assets/{approval-confirm-Dpfx2sMg.js → approval-confirm-ByiI22Wo.js} +1 -1
  54. package/web/assets/{board-launch-C_nXqI77.js → board-launch-BmmPYZe8.js} +1 -1
  55. package/web/assets/{board-projects-CBCU-Sgb.js → board-projects-BU9fZB1q.js} +1 -1
  56. package/web/assets/{chat-api-Kcrk_K91.js → chat-api-DkdyVQY9.js} +1 -1
  57. package/web/assets/{client-store-CrFIB91q.js → client-store-6GNC8uyK.js} +1 -1
  58. package/web/assets/{config-search-DXrAFHzB.js → config-search-HBKDuym0.js} +1 -1
  59. package/web/assets/{dialog-DdbSm1ZL.js → dialog-CUhFgsVd.js} +1 -1
  60. package/web/assets/{events-CsDpIEpa.js → events-DrAPv0se.js} +1 -1
  61. package/web/assets/{folder-paths-tMQQIavs.js → folder-paths-DQTpuGh9.js} +1 -1
  62. package/web/assets/{hosts-LdyGIyL3.js → hosts-1yQREdMi.js} +1 -1
  63. package/web/assets/i18n-CHmr7GzM.js +1 -0
  64. package/web/assets/{index-Ciq5zG6s.js → index-CsE52ydO.js} +2 -2
  65. package/web/assets/{mount-app-BNdeN2kJ.js → mount-app-DfSFF0xv.js} +3 -3
  66. package/web/assets/{permission-rules-api-DJZQfffF.js → permission-rules-api-BoJ_1W-m.js} +1 -1
  67. package/web/assets/{pick-system-directory-Dzxt6gno.js → pick-system-directory-B_RJmP26.js} +1 -1
  68. package/web/assets/{placements-CvOgP1_I.js → placements-CqwqXPTp.js} +2 -2
  69. package/web/assets/{popover-Cl-XiAIN.js → popover--UmYQ9yB.js} +1 -1
  70. package/web/assets/{public-components-BRkqqQBZ.js → public-components-DYGekkA7.js} +1 -1
  71. package/web/assets/public-diff-DK-VNIar.js +1 -0
  72. package/web/assets/{public-CJ34MvMA.js → public-fqyTjQ0F.js} +2 -2
  73. package/web/assets/public-jQjEc6OO.js +1 -0
  74. package/web/assets/public-launch-CT_m9KWo.js +1 -0
  75. package/web/assets/{runtime-capabilities-store-BrQ24OXo.js → runtime-capabilities-store-C2Qv7uDP.js} +1 -1
  76. package/web/assets/{safe-mode-instance-C8KjWD3O.js → safe-mode-instance-BiAPYJ2-.js} +1 -1
  77. package/web/assets/safe-mode-sentinel-Ccu3Vmta.js +1 -0
  78. package/web/assets/{session-change-summary-api-p0LGuByB.js → session-change-summary-api-DgRT32uh.js} +1 -1
  79. package/web/assets/{session-home-Bhs5A925.js → session-home-BktP6sGF.js} +1 -1
  80. package/web/assets/{session-organization-api-8UQMpctG.js → session-organization-api-DFu3Chto.js} +1 -1
  81. package/web/assets/{session-scope-8PMKriev.js → session-scope-DQPNgQMm.js} +1 -1
  82. package/web/assets/{session-tree-actions-Ee9kzU3S.js → session-tree-actions-DfO8QHBO.js} +1 -1
  83. package/web/assets/{session-tree-summary-DEQsXexZ.js → session-tree-summary-BwYRdui2.js} +1 -1
  84. package/web/assets/{shortcuts-CD4vslwQ.js → shortcuts-Cvp9WD9O.js} +1 -1
  85. package/web/assets/{side-chat-context-DaUmbt1Y.js → side-chat-context-BfOm4dFp.js} +4 -4
  86. package/web/assets/{sidebar-D-yI-nEo.js → sidebar-BLeRyb55.js} +2 -2
  87. package/web/assets/{sidebar-store-UyvCdgAm.js → sidebar-store-1-aNPlDu.js} +1 -1
  88. package/web/assets/{speech-session-BohM2ygu.js → speech-session-DK_09Wky.js} +1 -1
  89. package/web/assets/{startup-queries-BhNivg8E.js → startup-queries-6Oztqpto.js} +1 -1
  90. package/web/assets/{use-i18n-DUgHBsG5.js → use-i18n-B5p-Kzvz.js} +1 -1
  91. package/web/assets/{use-studio-actions-7VwKPaCN.js → use-studio-actions-D6c_pSJK.js} +1 -1
  92. package/web/assets/{useBoardItems-BeR9GqTq.js → useBoardItems-CzEbgTLJ.js} +1 -1
  93. package/web/assets/{useFleetSystemInfo-BHhLHGdq.js → useFleetSystemInfo-Bd8zJIFa.js} +1 -1
  94. package/web/assets/{useNewProjectPicker-Dvn0ZJTJ.js → useNewProjectPicker-DQY1X_ua.js} +1 -1
  95. package/web/assets/{useNow-CRkZskBs.js → useNow-Bxn4_OW9.js} +1 -1
  96. package/web/assets/{usePhoneShell-DloLJ6Tq.js → usePhoneShell-Bvb7m-m4.js} +1 -1
  97. package/web/assets/{useSessionListQuery-hEpWGZ_H.js → useSessionListQuery-D44XZfGr.js} +1 -1
  98. package/web/assets/{useSessionRowActions-DzNqYyGB.js → useSessionRowActions-Cr6SUAeE.js} +1 -1
  99. package/web/assets/{useSidebarModel-C8_Gpayk.js → useSidebarModel-CWED0rsw.js} +1 -1
  100. package/web/assets/{web-preview-LghC_QcR.js → web-preview-CqwSe9Zn.js} +1 -1
  101. package/web/assets/{web-preview-events-B-rXgMLy.js → web-preview-events-DQchQHt3.js} +1 -1
  102. package/web/assets/{workspace-order-store-BGGH-aRI.js → workspace-order-store-RYWvGOeR.js} +1 -1
  103. package/web/index.html +1 -1
  104. package/web/assets/i18n-BMMXA_dY.js +0 -1
  105. package/web/assets/public-CRj3oDys.js +0 -1
  106. package/web/assets/public-diff-B_YCisY7.js +0 -1
  107. package/web/assets/public-launch-DJ9UFO06.js +0 -1
  108. package/web/assets/safe-mode-sentinel-mAPFazv4.js +0 -1
@@ -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-DUgHBsG5.js";import{t as i}from"./api-PMkeVoki.js";import{i as a}from"./runtime-capabilities-4_ZwLBqF.js";import{t as o}from"./runtime-capabilities-store-BrQ24OXo.js";import{t as s}from"./createLucideIcon-Cd-3GVxJ.js";import{t as c}from"./circle-check-iEdCm3Pw.js";import{t as l}from"./earth-Ddy13fHh.js";import{t as u}from"./external-link-CEQqPcqc.js";import{t as d}from"./eye-uWAPXNzJ.js";import{t as f}from"./file-code-corner-BnE1ljT0.js";import{t as p}from"./folder-open-FIShC5Qk.js";import{t as m}from"./image-BY_c3FYU.js";import{t as h}from"./package-BOmkLaKS.js";import{t as g}from"./plug-BsIeHRwC.js";import{t as _}from"./save-CHBB52P8.js";import{t as v}from"./search-D0mqDaf_.js";import{t as y}from"./server-BgNvmqwJ.js";import{t as b}from"./shield-alert-oZqX6MNu.js";import{t as ee}from"./trash-2-CNrPOoPR.js";import{t as x}from"./triangle-alert-CE1q54ci.js";import{t as S}from"./more-pages-D_PnxLN0.js";import{a as C}from"./dist-41X0pdUs.js";import{o as w,s as T}from"./dist-BsRXXcSL.js";import{a as E,c as D,i as O,l as k,n as A,o as te,r as ne,s as re,t as ie}from"./dist-BHkR6BLP.js";import{t as j}from"./utils-C8uzG5AZ.js";import{n as ae,t as M}from"./button-CCcCN8tE.js";import{s as oe}from"./shortcuts-CD4vslwQ.js";import{n as se,t as ce}from"./PageState-Cz6vFMXv.js";import{a as le,i as N,l as P,o as F,s as I,t as L}from"./dialog-DdbSm1ZL.js";import{t as R}from"./input-CPw-zkYh.js";import{t as z}from"./pick-system-directory-Dzxt6gno.js";import{a as ue,i as B,n as V,o as H,r as de,s as fe,t as U}from"./FeaturePage-BV7-6mzm.js";import{c as pe,i as me,s as he}from"./app-primitives-Drz_SjnR.js";import{t as W}from"./AppSelect-BGVBQRP1.js";import{a as G,i as ge,n as _e,o as ve,r as K,s as ye,t as be}from"./tool-labels-BUEvdohv.js";var q=s(`package-plus`,[[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`M16 17h6`,key:`1ook5g`}],[`path`,{d:`M19 14v6`,key:`1ckrd5`}],[`path`,{d:`M21 10.535V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.675-.955`,key:`28k6lz`}],[`path`,{d:`M3.29 7 12 12l8.71-5`,key:`19ckod`}],[`path`,{d:`m7.5 4.27 8.997 5.148`,key:`9yrvtv`}]]),J=e(t(),1),Y=n(),X=Object.defineProperty,Z=(e,t)=>X(e,`name`,{value:t,configurable:!0}),[xe,Se]=T(`AlertDialog`,[k]),Q=k(),Ce=Z(e=>{let{__scopeAlertDialog:t,...n}=e,r=Q(t);return(0,Y.jsx)(ie,{...r,...n,modal:!0})},`AlertDialog`);J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(D,{...i,...r,ref:t})},`AlertDialogTrigger`));var we=Z(e=>{let{__scopeAlertDialog:t,...n}=e,r=Q(t);return(0,Y.jsx)(te,{...r,...n})},`AlertDialogPortal`),Te=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(E,{...i,...r,ref:t})},`AlertDialogOverlay`)),[Ee,$]=xe(`AlertDialogContent`),De=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,children:r,...i}=e,a=Q(n),o=J.useRef(null),s=C(t,o),c=J.useRef(null);return(0,Y.jsx)(Ee,{scope:n,cancelRef:c,children:(0,Y.jsx)(ne,{role:`alertdialog`,...a,...i,ref:s,onOpenAutoFocus:w(i.onOpenAutoFocus,e=>{e.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:r})})},`AlertDialogContent`)),Oe=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(re,{...i,...r,ref:t})},`AlertDialogTitle`)),ke=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(O,{...i,...r,ref:t})},`AlertDialogDescription`)),Ae=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(A,{...i,...r,ref:t})},`AlertDialogAction`)),je=`AlertDialogCancel`,Me=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,{cancelRef:i}=$(je,n),a=Q(n),o=C(t,i);return(0,Y.jsx)(A,{...a,...r,ref:o})},`AlertDialogCancel`)),Ne=Ce,Pe=we,Fe=Te,Ie=De,Le=Ae,Re=Me,ze=Oe,Be=ke;function Ve({...e}){return(0,Y.jsx)(Ne,{"data-slot":`alert-dialog`,...e})}function He({...e}){return(0,Y.jsx)(Pe,{"data-slot":`alert-dialog-portal`,...e})}function Ue({className:e,...t}){return(0,Y.jsx)(Fe,{"data-slot":`alert-dialog-overlay`,className:j(`fixed inset-0 z-50 bg-[var(--overlay-scrim)] duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function We({className:e,size:t=`default`,...n}){return(0,Y.jsxs)(He,{children:[(0,Y.jsx)(Ue,{}),(0,Y.jsx)(Ie,{"data-slot":`alert-dialog-content`,"data-size":t,className:j(`group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid max-h-[calc(100vh-2rem)] supports-[height:100dvh]:max-h-[calc(100dvh-2rem)] w-full -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto overscroll-contain rounded-xl bg-popover p-4 text-popover-foreground shadow-float duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...n})]})}function Ge({className:e,...t}){return(0,Y.jsx)(`div`,{"data-slot":`alert-dialog-header`,className:j(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,e),...t})}function Ke({className:e,...t}){return(0,Y.jsx)(`div`,{"data-slot":`alert-dialog-footer`,className:j(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t border-stroke bg-surface-subtle px-4 py-3 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,e),...t})}function qe({className:e,...t}){return(0,Y.jsx)(ze,{"data-slot":`alert-dialog-title`,className:j(`font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,e),...t})}function Je({className:e,...t}){return(0,Y.jsx)(Be,{"data-slot":`alert-dialog-description`,className:j(`text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}function Ye({className:e,variant:t=`default`,size:n=`default`,...r}){return(0,Y.jsx)(M,{variant:t,size:n,asChild:!0,children:(0,Y.jsx)(Le,{"data-slot":`alert-dialog-action`,className:j(e),...r})})}function Xe({className:e,variant:t=`outline`,size:n=`default`,...r}){return(0,Y.jsx)(M,{variant:t,size:n,asChild:!0,children:(0,Y.jsx)(Re,{"data-slot":`alert-dialog-cancel`,className:j(e),...r})})}function Ze(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function Qe({open:e,onOpenChange:t,onInstalled:n}){let{t:a}=r(),[o,s]=(0,J.useState)(``),[l,u]=(0,J.useState)(null),[d,f]=(0,J.useState)(!1),[m,h]=(0,J.useState)(``);return(0,J.useEffect)(()=>{e||(s(``),u(null),f(!1),h(``))},[e]),(0,Y.jsx)(L,{open:e,onOpenChange:e=>!d&&t(e),children:(0,Y.jsxs)(N,{className:`z-[220] sm:max-w-xl`,overlayClassName:`z-[220]`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsxs)(P,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(q,{className:`size-4 text-content-secondary`}),a(`plugins:pluginsPage.installLocalPlugin`)]}),(0,Y.jsx)(le,{children:a(`plugins:pluginsPage.installLocalPluginDescription`)})]}),(0,Y.jsxs)(`div`,{className:`grid gap-3`,children:[(0,Y.jsxs)(`label`,{className:`grid gap-1.5 text-xs font-medium text-content-secondary`,children:[a(`plugins:pluginsPage.pluginDirectory`),(0,Y.jsxs)(`span`,{className:`flex min-w-0 gap-2`,children:[(0,Y.jsx)(R,{className:`min-w-0 flex-1 font-mono text-xs max-[650px]:h-11`,value:o,disabled:d,placeholder:a(`plugins:pluginsPage.pluginDirectoryPlaceholder`),onChange:e=>{s(e.target.value),u(null)}}),(0,Y.jsx)(M,{type:`button`,variant:`secondary`,size:`icon`,className:`size-[34px] shrink-0 max-[650px]:size-11`,title:a(`plugins:pluginsPage.chooseDirectory`),"aria-label":a(`plugins:pluginsPage.chooseDirectory`),onClick:async()=>{h(``);try{let e=await z(o,a(`plugins:pluginsPage.chooseDirectory`));e.status===`picked`?(s(e.path),u(null)):e.status===`unavailable`&&h(a(`common:workspacePicker.systemPickerUnavailable`))}catch(e){h(e instanceof Error?e.message:String(e))}},children:(0,Y.jsx)(p,{})})]})]}),l&&(0,Y.jsxs)(`div`,{className:`grid gap-3 overflow-hidden rounded-md border border-stroke bg-surface-subtle p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,Y.jsx)(`span`,{className:`grid size-8 shrink-0 place-items-center rounded-sm bg-success-soft text-success`,children:(0,Y.jsx)(c,{className:`size-4`})}),(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`strong`,{className:`block truncate text-sm font-medium text-content`,children:l.plugin.name}),(0,Y.jsxs)(`small`,{className:`block truncate font-mono text-xs text-content-muted tabular-nums`,children:[l.plugin.id,` · v`,l.plugin.version,` · `,l.fileCount,` `,a(`plugins:pluginsPage.files`),` · `,Ze(l.byteCount)]})]})]}),(0,Y.jsx)(`div`,{className:`grid gap-1.5`,children:l.plugin.capabilities.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3 border-t border-stroke-soft pt-2 text-xs`,children:[(0,Y.jsxs)(`span`,{className:`min-w-0`,children:[(0,Y.jsx)(`strong`,{className:`block font-medium text-content`,children:e.label}),(0,Y.jsx)(`small`,{className:`text-xs text-content-muted`,children:e.description})]}),(0,Y.jsx)(`code`,{className:`shrink-0 font-mono text-xs text-content-secondary`,children:e.name})]},e.name))}),(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 rounded-sm bg-warning-soft p-2.5 text-xs leading-5 text-warning-strong`,children:[(0,Y.jsx)(x,{className:`mt-0.5 shrink-0`,size:15}),(0,Y.jsx)(`span`,{children:a(`plugins:pluginsPage.localPluginSecurityWarning`)})]})]}),m&&(0,Y.jsxs)(me,{className:`m-0`,children:[(0,Y.jsx)(x,{size:14}),(0,Y.jsx)(`span`,{children:m})]})]}),(0,Y.jsxs)(F,{children:[(0,Y.jsx)(M,{type:`button`,variant:`secondary`,size:`dialogAction`,disabled:d,onClick:()=>t(!1),children:a(`common:ui.cancel`)}),(0,Y.jsxs)(M,{type:`button`,size:`dialogAction`,disabled:d||!l&&!o.trim(),onClick:l?async()=>{if(!(!l||d)){f(!0),h(``);try{await i(`/api/plugins/install`,{method:`POST`,body:JSON.stringify({inspectionId:l.inspectionId})}),await n(),t(!1)}catch(e){h(e instanceof Error?e.message:String(e))}finally{f(!1)}}}:async()=>{if(!(!o.trim()||d)){f(!0),h(``);try{u(await i(`/api/plugins/inspect`,{method:`POST`,body:JSON.stringify({path:o.trim()})}))}catch(e){u(null),h(e instanceof Error?e.message:String(e))}finally{f(!1)}}},children:[d?(0,Y.jsx)(ae,{className:`text-current`}):l?(0,Y.jsx)(q,{}):(0,Y.jsx)(c,{}),a(d?`plugins:pluginsPage.processing`:l?`plugins:pluginsPage.installPlugin`:`plugins:pluginsPage.inspectPlugin`)]})]})]})})}var $e=[`tool`,`prompt`,`skill`];function et(e){let t=Array.isArray(e.resourceTypes)?e.resourceTypes.filter(e=>$e.includes(e)):[];return t.length?t:[`tool`]}function tt(e,t){return{tool:t(`plugins:pluginsPage.extensionType.tool`),prompt:t(`plugins:pluginsPage.extensionType.prompt`),skill:t(`plugins:pluginsPage.extensionType.skill`)}[e]}var nt=[`all`,`builtin`,`local`],rt={read:d,ls:p,grep:v,find:v,edit:f,write:f,bash:y,web_search:l,browser_automation:l,generate_visual:m};function it(e,t){return t(e===`builtin`?`plugins:pluginsPage.builtIn`:e===`local`?`plugins:pluginsPage.local`:`plugins:pluginsPage.all`)}function at(e){return e.flatMap(e=>e.managedExternally?[]:e.capabilities.filter(e=>e.enabled).map(e=>e.name))}function ot(e){return e.filter(e=>!e.managedExternally||e.source===`pi`).flatMap(e=>e.capabilities.map(t=>({...t,pluginId:e.id,pluginName:e.name,pluginDescription:e.description,pluginVersion:e.version,pluginSource:e.source,pluginBuiltIn:e.builtIn,pluginPermissions:e.permissions||[],pluginSystemAccess:!!e.systemAccess})))}function st(e){return e.find(e=>e.source===`pi`&&e.name===`Computer Use`)?.enabled!==!1}function ct(e){return Object.fromEntries(e.filter(e=>e.source===`pi`&&e.name!==`Computer Use`&&!!e.packageSource).map(e=>[e.packageSource,e.enabled!==!1]))}function lt(e,t){return[...e].sort().join(`\0`)===[...t].sort().join(`\0`)}function ut(e,t){return G({id:e.name,name:e.label},t)}function dt(e,t){return e.pluginSource===`pi`?e.pluginName:K(e.pluginName,t)}function ft({value:e,testing:t,onChange:n,onTest:i}){let{t:a}=r();return(0,Y.jsxs)(`div`,{className:`plugin-tool-config grid gap-2.5 border-t border-stroke pt-3 [&_label]:grid [&_label]:gap-1.5 [&_label]:text-xs [&_label]:font-medium [&_label]:text-content-secondary`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-3`,children:[(0,Y.jsxs)(`label`,{children:[a(`plugins:pluginsPage.defaultLanguage`),(0,Y.jsxs)(W,{value:e.language,onChange:t=>n({...e,language:t.target.value}),children:[(0,Y.jsx)(`option`,{value:`auto`,children:a(`plugins:pluginsPage.auto`)}),(0,Y.jsx)(`option`,{value:`zh-CN`,children:a(`plugins:pluginsPage.simplifiedChinese`)}),(0,Y.jsx)(`option`,{value:`en-US`,children:a(`plugins:pluginsPage.english`)})]})]}),(0,Y.jsxs)(`label`,{children:[a(`plugins:pluginsPage.safeSearch`),(0,Y.jsxs)(W,{value:e.safeSearch,onChange:t=>n({...e,safeSearch:Number(t.target.value)}),children:[(0,Y.jsx)(`option`,{value:0,children:a(`plugins:pluginsPage.off`)}),(0,Y.jsx)(`option`,{value:1,children:a(`plugins:pluginsPage.moderate`)}),(0,Y.jsx)(`option`,{value:2,children:a(`plugins:pluginsPage.strict`)})]})]}),(0,Y.jsxs)(`label`,{children:[a(`plugins:pluginsPage.resultCount`),(0,Y.jsx)(R,{type:`number`,min:`1`,max:`12`,className:`tabular-nums`,value:e.maxResults,onChange:t=>n({...e,maxResults:Number(t.target.value)})})]})]}),(0,Y.jsxs)(M,{type:`button`,variant:`secondary`,className:`justify-self-end max-[650px]:h-11`,loading:t,disabled:t,onClick:i,children:[(0,Y.jsx)(l,{}),a(t?`plugins:pluginsPage.testing`:`plugins:pluginsPage.testConnection`)]})]})}function pt({query:e,notify:t,requestText:n,requestConfirm:a}){let{t:o}=r(),[s,c]=(0,J.useState)(``),[l,d]=(0,J.useState)(null),[f,p]=(0,J.useState)([]),[m,g]=(0,J.useState)(!1),[_,y]=(0,J.useState)(``),[b,x]=(0,J.useState)(``),S=(0,J.useCallback)(async(e=``)=>{g(!0),x(``);try{let[t,n]=await Promise.all([i(`/api/extensions/market?name=${encodeURIComponent(e)}`),i(`/api/extensions`)]);d(t),p(n.packages||[])}catch(e){x(e instanceof Error?e.message:String(e))}finally{g(!1)}},[]);(0,J.useEffect)(()=>{S(``)},[S]);let C=(l?.packages||[]).filter(t=>`${t.name} ${t.description}`.toLowerCase().includes(e.trim().toLowerCase())),w=async e=>{if(await a?.({title:o(`plugins:pluginsPage.installExtension`),message:o(`plugins:pluginsPage.extensionSecurityWarning`,{name:e}),confirmLabel:o(`plugins:pluginsPage.installExtension`),tone:`danger`})!==!1){y(e);try{let n=/^(?:[.~\\/]|[A-Za-z]:[\\/])/.test(e)||/^(?:npm:|https?:\/\/|git\+)/i.test(e)?e:`npm:${e}`,r=await i(`/api/extensions/install`,{method:`POST`,body:JSON.stringify({source:n})});p(r.packages||[]),t(o(`plugins:pluginsPage.extensionInstalled`),`success`)}catch(e){t(e instanceof Error?e.message:String(e),`error`)}finally{y(``)}}},T=async()=>{let e=await n?.({title:o(`plugins:pluginsPage.installExtension`),message:o(`plugins:pluginsPage.extensionSourceHelp`),inputLabel:o(`plugins:pluginsPage.extensionSource`),placeholder:`npm:@scope/package or https://github.com/…`,maxLength:2e3});e?.trim()&&await w(e.trim())},E=async e=>{if(await a?.({title:o(`plugins:pluginsPage.uninstallExtension`),message:o(`plugins:pluginsPage.uninstallExtensionDescription`,{name:e.name}),confirmLabel:o(`plugins:pluginsPage.uninstallExtension`),tone:`danger`})!==!1){y(e.source);try{await i(`/api/extensions`,{method:`DELETE`,body:JSON.stringify({source:e.source,scope:e.scope})}),await S(s),t(o(`plugins:pluginsPage.extensionUninstalled`),`success`)}catch(e){t(e instanceof Error?e.message:String(e),`error`)}finally{y(``)}}},D=$e.map(e=>({type:e,items:f.filter(t=>et(t).includes(e))})).filter(e=>e.items.length>0);return(0,Y.jsxs)(Y.Fragment,{children:[D.map(e=>(0,Y.jsx)(H,{className:`plugin-installed-extensions`,title:`${o(`plugins:pluginsPage.installedExtensions`)} · ${tt(e.type,o)}`,count:e.items.length,children:(0,Y.jsx)(V,{children:e.items.map(t=>(0,Y.jsx)(B,{icon:(0,Y.jsx)(h,{}),name:(0,Y.jsx)(`span`,{className:`font-mono`,children:t.name}),nameMeta:`v${t.version}`,description:(0,Y.jsx)(`span`,{className:`font-mono text-xs`,children:t.source}),actions:(0,Y.jsxs)(M,{type:`button`,variant:`ghost`,size:`sm`,className:`text-content-muted hover:bg-danger-soft hover:text-danger`,loading:_===t.source,disabled:!!_,onClick:()=>void E(t),children:[(0,Y.jsx)(ee,{}),o(`plugins:pluginsPage.uninstallExtension`)]})},`${e.type}:${t.scope}:${t.source}`))})},e.type)),(0,Y.jsxs)(H,{className:`plugin-market`,title:o(`plugins:pluginsPage.extensionMarket`),actions:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(M,{asChild:!0,variant:`ghost`,size:`sm`,children:(0,Y.jsxs)(`a`,{href:`https://pi.dev/packages`,target:`_blank`,rel:`noreferrer`,children:[(0,Y.jsx)(u,{}),o(`plugins:pluginsPage.openPackageCatalog`)]})}),(0,Y.jsxs)(M,{type:`button`,variant:`secondary`,size:`sm`,onClick:T,disabled:!!_,children:[(0,Y.jsx)(q,{}),o(`plugins:pluginsPage.installExtension`)]})]}),children:[(0,Y.jsxs)(`form`,{className:`mb-3 flex min-w-0 gap-2`,onSubmit:e=>{e.preventDefault(),S(s)},children:[(0,Y.jsx)(R,{className:`min-w-0 flex-1 max-[650px]:h-11`,value:s,onChange:e=>c(e.target.value),placeholder:o(`plugins:pluginsPage.searchPackageCatalog`),"aria-label":o(`plugins:pluginsPage.searchPackageCatalog`)}),(0,Y.jsxs)(M,{type:`submit`,variant:`secondary`,className:`h-[34px] max-[650px]:h-11`,loading:m,disabled:m,children:[(0,Y.jsx)(v,{}),o(`plugins:pluginsPage.search`)]})]}),b&&(0,Y.jsx)(U,{className:`mt-0 mb-3`,children:b}),C.length>0&&(0,Y.jsx)(V,{children:C.slice(0,12).map(e=>{let t=f.some(t=>t.name===e.name||t.source===`npm:${e.name}`);return(0,Y.jsx)(B,{icon:(0,Y.jsx)(h,{}),name:(0,Y.jsx)(`span`,{className:`font-mono`,children:e.name}),description:e.description,status:e.published,actions:(0,Y.jsx)(M,{type:`button`,variant:`secondary`,size:`sm`,loading:_===e.name,disabled:t||!!_,onClick:()=>void w(e.name),children:o(t?`plugins:pluginsPage.installed`:`plugins:pluginsPage.installExtension`)})},e.name)})})]})]})}function mt({notify:e,onBack:t,requestText:n,requestConfirm:s}){let{t:c}=r(),l=oe(`focusSearch`),u=o(e=>e.capabilities),d=a(u,`plugins`),f=d?nt:nt.slice(0,2),[p,m]=(0,J.useState)(``),[h,v]=(0,J.useState)(null),[y,C]=(0,J.useState)([]),[w,T]=(0,J.useState)(``),[E,D]=(0,J.useState)(`all`),[O,k]=(0,J.useState)({provider:`bing`,language:`auto`,safeSearch:1,maxResults:8}),[A,te]=(0,J.useState)(!1),[ne,re]=(0,J.useState)(!1),[ie,le]=(0,J.useState)(!1),[N,P]=(0,J.useState)(null),[F,I]=(0,J.useState)(!1),[L,R]=(0,J.useState)(``),[z,U]=(0,J.useState)(!1),W=(0,J.useCallback)(e=>{v(e),C(e.plugins),k(e.webSearch)},[]),G=(0,J.useCallback)(async()=>{R(``);try{W(await i(`/api/plugins`))}catch(e){R(e instanceof Error?e.message:String(e))}},[W]);(0,J.useEffect)(()=>{G()},[G]);let K=(0,J.useMemo)(()=>ot(y),[y]),X=(0,J.useMemo)(()=>at(y),[y]),Z=h?!lt(X,h.enabledTools)||st(y)!==h.computerUseEnabled||JSON.stringify(ct(y))!==JSON.stringify(h.piExtensions)||JSON.stringify(O)!==JSON.stringify(h.webSearch):!1,xe=(0,J.useCallback)(async()=>{if(!A){if(!h||!Z){h&&e(c(`plugins:pluginsPage.noPluginPolicyChanges`));return}te(!0),R(``);try{let t=await i(`/api/plugins`,{method:`PUT`,body:JSON.stringify({enabledTools:X,webSearch:O,computerUseEnabled:st(y),piExtensions:ct(y)})});W(t),e(c(`plugins:pluginsPage.pluginPolicySavedAgentRuntimeUpdated`))}catch(e){R(e instanceof Error?e.message:String(e))}finally{te(!1)}}},[W,h,Z,y,X,e,A,c,O]),Se=async()=>{re(!0),R(``);try{let t=await i(`/api/plugins/web-search/test`,{method:`POST`,body:JSON.stringify(O)});e(c(`plugins:pluginsPage.bingSearchIsAvailableAndReturnedCountResults`,{count:t.count}))}catch(t){let n=t instanceof Error?t.message:String(t);R(n),e(n,`error`)}finally{re(!1)}},Q=(e,t,n)=>{C(r=>r.map(r=>{if(r.id!==e)return r;let i=r.source===`pi`&&r.managedExternally;return{...r,enabled:n||r.capabilities.some(e=>e.enabled),capabilities:r.capabilities.map(e=>i||e.name===t?{...e,enabled:n}:e)}}))},Ce=()=>!Z||(R(c(`plugins:pluginsPage.saveBeforePluginChanges`)),!1),we=async()=>{if(!(!N||F)){I(!0),R(``);try{W(await i(`/api/plugins/${encodeURIComponent(N.pluginId)}`,{method:`DELETE`})),e(c(`plugins:pluginsPage.pluginUninstalled`,{name:N.pluginName})),T(``),P(null)}catch(e){R(e instanceof Error?e.message:String(e))}finally{I(!1)}}},Te=c(`navigation:navigation.plugins`),Ee=p.trim().toLowerCase(),$=K.filter(e=>E!==`all`&&e.pluginSource!==E?!1:[ut(e,c),e.name,e.description,dt(e,c),e.pluginId].join(` `).toLowerCase().includes(Ee));return(0,Y.jsxs)(de,{title:Te,description:c(`plugins:pluginsPage.lede`),back:t&&{label:c(`navigation:sidebar.features`),ariaLabel:c(`navigation:shell.backToFeaturesLabel`),onBack:t},toolbar:(0,Y.jsx)(fe,{search:(0,Y.jsx)(ue,{id:S,value:p,onValueChange:m,placeholder:c(`navigation:pageHeader.searchPage`,{page:Te}),shortcut:l,clearLabel:c(`navigation:more.clearSearch`)}),actions:(0,Y.jsxs)(Y.Fragment,{children:[d&&(0,Y.jsxs)(M,{type:`button`,variant:`secondary`,className:`h-9`,disabled:!h,onClick:()=>Ce()&&le(!0),children:[(0,Y.jsx)(q,{}),c(`plugins:pluginsPage.installPlugin`)]}),(0,Y.jsxs)(M,{type:`button`,className:`h-9`,"data-plugins-save":!0,loading:A,disabled:!h||A,onClick:()=>void xe(),children:[(0,Y.jsx)(_,{}),c(`plugins:pluginsPage.savePolicy`)]})]}),filters:(0,Y.jsx)(pe,{options:f.map(e=>it(e,c)),value:it(E,c),onChange:e=>D(f.find(t=>it(t,c)===e)||`all`)})}),children:[h?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(H,{className:`plugin-catalog`,title:c(`plugins:pluginsPage.toolCatalog`),count:$.length,meta:(0,Y.jsxs)(`span`,{className:`plugin-catalog-summary`,children:[K.filter(e=>e.enabled).length,`/`,K.length,` `,c(`plugins:pluginsPage.enabled2`)]}),actions:Z&&(0,Y.jsxs)(`span`,{"data-plugins-unsaved":!0,className:`flex items-center gap-1.5 text-xs font-medium text-content-secondary`,children:[(0,Y.jsx)(`span`,{"aria-hidden":`true`,className:`size-1.5 rounded-full bg-content-secondary`}),c(`plugins:pluginsPage.unsaved`)]}),children:$.length?(0,Y.jsx)(V,{className:`plugin-tool-grid`,children:$.map(e=>{let t=rt[e.name]||g,n=ut(e,c);return(0,Y.jsx)(B,{className:`plugin-tool-card`,"data-plugin-tool":e.name,icon:(0,Y.jsx)(t,{}),name:(0,Y.jsx)(`span`,{title:n,children:n}),nameMeta:e.name,description:`${dt(e,c)} · ${ve(e.risk,c)}`,status:e.pluginBuiltIn?void 0:c(`plugins:pluginsPage.local`),actions:(0,Y.jsx)(he,{value:e.enabled,onChange:t=>Q(e.pluginId,e.name,t),ariaLabel:n}),expanded:w===e.name,onExpandedChange:t=>T(t?e.name:``),toggleLabel:c(`plugins:pluginsPage.toggleToolDetails`,{name:n}),detail:(0,Y.jsxs)(`div`,{className:`plugin-tool-details grid gap-3`,children:[(0,Y.jsx)(`p`,{className:`text-sm leading-relaxed text-content-soft`,children:ge({id:e.name,description:e.description},c)}),(0,Y.jsxs)(`dl`,{className:`grid grid-cols-[88px_minmax(0,1fr)] gap-x-3 gap-y-1.5 text-xs [&_dd]:min-w-0 [&_dd]:[overflow-wrap:anywhere] [&_dd]:text-content-soft [&_dt]:text-content-muted [&>div]:contents`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`dt`,{children:c(`plugins:pluginsPage.source`)}),(0,Y.jsxs)(`dd`,{className:`tabular-nums`,children:[dt(e,c),!e.pluginBuiltIn&&` · v${e.pluginVersion}`]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`dt`,{children:c(`plugins:pluginsPage.riskLevel`)}),(0,Y.jsx)(`dd`,{className:j((be(e.risk)||_e(e.risk))&&`font-medium text-content!`),children:ve(e.risk,c)})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`dt`,{children:c(`plugins:pluginsPage.pathScope`)}),(0,Y.jsx)(`dd`,{children:ye({id:e.name,scope:e.scope},c)})]}),!e.pluginBuiltIn&&(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`dt`,{children:c(`plugins:pluginsPage.executionMode`)}),(0,Y.jsx)(`dd`,{children:c(`plugins:pluginsPage.confirmUnlessFullAccess`)})]})]}),!e.pluginBuiltIn&&(0,Y.jsxs)(`div`,{className:`plugin-tool-warning flex items-start gap-2 rounded-sm bg-surface-subtle p-2.5 text-xs leading-normal text-content-secondary`,children:[(0,Y.jsx)(b,{className:`mt-px size-3.5 shrink-0`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:c(`plugins:pluginsPage.localPluginSecurityWarning`)})]}),e.name===`web_search`&&(0,Y.jsx)(ft,{value:O,testing:ne,onChange:k,onTest:Se}),!e.pluginBuiltIn&&(0,Y.jsxs)(M,{type:`button`,variant:`ghost`,className:`justify-self-end text-danger hover:bg-danger-soft hover:text-danger max-[650px]:h-11`,onClick:()=>Ce()&&P(e),children:[(0,Y.jsx)(ee,{}),c(`plugins:pluginsPage.uninstallPlugin`)]})]})},e.name)})}):(0,Y.jsx)(ce,{compact:!0,title:c(`plugins:pluginsPage.noMatchingTools`)})}),(0,Y.jsx)(pt,{query:p,notify:e,requestText:n,requestConfirm:s})]}):L?(0,Y.jsx)(se,{kind:`error`,title:c(`plugins:pluginsPage.loadFailed`),description:L,action:(0,Y.jsx)(M,{variant:`secondary`,className:`max-[650px]:h-11`,loading:z,disabled:z,onClick:()=>{U(!0),G().finally(()=>U(!1))},children:c(`common:pageTemplate.retry`)})}):(0,Y.jsx)(se,{kind:`loading`,title:c(`plugins:pluginsPage.loadingToolPlugins`)}),d&&(0,Y.jsx)(Qe,{open:ie,onOpenChange:le,onInstalled:G}),(0,Y.jsx)(Ve,{open:!!N,onOpenChange:e=>!e&&!F&&P(null),children:(0,Y.jsxs)(We,{className:`z-[220]`,children:[(0,Y.jsxs)(Ge,{children:[(0,Y.jsx)(qe,{children:c(`plugins:pluginsPage.uninstallPlugin`)}),(0,Y.jsx)(Je,{children:c(`plugins:pluginsPage.uninstallPluginDescription`,{name:N?.pluginName||``})})]}),(0,Y.jsxs)(Ke,{children:[(0,Y.jsx)(Xe,{disabled:F,children:c(`common:ui.cancel`)}),(0,Y.jsxs)(Ye,{variant:`destructive`,disabled:F,onClick:we,children:[F&&(0,Y.jsx)(ae,{className:`text-current`}),c(`plugins:pluginsPage.uninstallPlugin`)]})]})]})}),L&&h&&(0,Y.jsxs)(me,{className:`fixed right-6 bottom-6 z-[21] max-w-[360px] border border-danger-border shadow-float`,children:[(0,Y.jsx)(x,{size:13}),L]})]})}export{mt as PluginsPage};
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"./api-BO7LAPSQ.js";import{i as a}from"./runtime-capabilities-4_ZwLBqF.js";import{t as o}from"./runtime-capabilities-store-C2Qv7uDP.js";import{t as s}from"./createLucideIcon-Cd-3GVxJ.js";import{t as c}from"./circle-check-iEdCm3Pw.js";import{t as l}from"./earth-Ddy13fHh.js";import{t as u}from"./external-link-CEQqPcqc.js";import{t as d}from"./eye-uWAPXNzJ.js";import{t as f}from"./file-code-corner-BnE1ljT0.js";import{t as p}from"./folder-open-FIShC5Qk.js";import{t as m}from"./image-BY_c3FYU.js";import{t as h}from"./package-BOmkLaKS.js";import{t as g}from"./plug-BsIeHRwC.js";import{t as _}from"./save-CHBB52P8.js";import{t as v}from"./search-D0mqDaf_.js";import{t as y}from"./server-BgNvmqwJ.js";import{t as b}from"./shield-alert-oZqX6MNu.js";import{t as ee}from"./trash-2-CNrPOoPR.js";import{t as x}from"./triangle-alert-CE1q54ci.js";import{t as S}from"./more-pages-D_PnxLN0.js";import{a as C}from"./dist-41X0pdUs.js";import{o as w,s as T}from"./dist-BsRXXcSL.js";import{a as E,c as D,i as O,l as k,n as A,o as te,r as ne,s as re,t as ie}from"./dist-BHkR6BLP.js";import{t as j}from"./utils-C8uzG5AZ.js";import{n as ae,t as M}from"./button-CCcCN8tE.js";import{s as oe}from"./shortcuts-Cvp9WD9O.js";import{n as se,t as ce}from"./PageState-Cz6vFMXv.js";import{a as le,i as N,l as P,o as F,s as I,t as L}from"./dialog-CUhFgsVd.js";import{t as R}from"./input-CPw-zkYh.js";import{t as z}from"./pick-system-directory-B_RJmP26.js";import{a as ue,i as B,n as V,o as H,r as de,s as fe,t as U}from"./FeaturePage-Bkt1wWVg.js";import{c as pe,i as me,s as he}from"./app-primitives-Drz_SjnR.js";import{t as W}from"./AppSelect-BGVBQRP1.js";import{a as G,i as ge,n as _e,o as ve,r as K,s as ye,t as be}from"./tool-labels-BUEvdohv.js";var q=s(`package-plus`,[[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`M16 17h6`,key:`1ook5g`}],[`path`,{d:`M19 14v6`,key:`1ckrd5`}],[`path`,{d:`M21 10.535V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.675-.955`,key:`28k6lz`}],[`path`,{d:`M3.29 7 12 12l8.71-5`,key:`19ckod`}],[`path`,{d:`m7.5 4.27 8.997 5.148`,key:`9yrvtv`}]]),J=e(t(),1),Y=n(),X=Object.defineProperty,Z=(e,t)=>X(e,`name`,{value:t,configurable:!0}),[xe,Se]=T(`AlertDialog`,[k]),Q=k(),Ce=Z(e=>{let{__scopeAlertDialog:t,...n}=e,r=Q(t);return(0,Y.jsx)(ie,{...r,...n,modal:!0})},`AlertDialog`);J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(D,{...i,...r,ref:t})},`AlertDialogTrigger`));var we=Z(e=>{let{__scopeAlertDialog:t,...n}=e,r=Q(t);return(0,Y.jsx)(te,{...r,...n})},`AlertDialogPortal`),Te=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(E,{...i,...r,ref:t})},`AlertDialogOverlay`)),[Ee,$]=xe(`AlertDialogContent`),De=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,children:r,...i}=e,a=Q(n),o=J.useRef(null),s=C(t,o),c=J.useRef(null);return(0,Y.jsx)(Ee,{scope:n,cancelRef:c,children:(0,Y.jsx)(ne,{role:`alertdialog`,...a,...i,ref:s,onOpenAutoFocus:w(i.onOpenAutoFocus,e=>{e.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:r})})},`AlertDialogContent`)),Oe=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(re,{...i,...r,ref:t})},`AlertDialogTitle`)),ke=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(O,{...i,...r,ref:t})},`AlertDialogDescription`)),Ae=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=Q(n);return(0,Y.jsx)(A,{...i,...r,ref:t})},`AlertDialogAction`)),je=`AlertDialogCancel`,Me=J.forwardRef(Z(function(e,t){let{__scopeAlertDialog:n,...r}=e,{cancelRef:i}=$(je,n),a=Q(n),o=C(t,i);return(0,Y.jsx)(A,{...a,...r,ref:o})},`AlertDialogCancel`)),Ne=Ce,Pe=we,Fe=Te,Ie=De,Le=Ae,Re=Me,ze=Oe,Be=ke;function Ve({...e}){return(0,Y.jsx)(Ne,{"data-slot":`alert-dialog`,...e})}function He({...e}){return(0,Y.jsx)(Pe,{"data-slot":`alert-dialog-portal`,...e})}function Ue({className:e,...t}){return(0,Y.jsx)(Fe,{"data-slot":`alert-dialog-overlay`,className:j(`fixed inset-0 z-50 bg-[var(--overlay-scrim)] duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function We({className:e,size:t=`default`,...n}){return(0,Y.jsxs)(He,{children:[(0,Y.jsx)(Ue,{}),(0,Y.jsx)(Ie,{"data-slot":`alert-dialog-content`,"data-size":t,className:j(`group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid max-h-[calc(100vh-2rem)] supports-[height:100dvh]:max-h-[calc(100dvh-2rem)] w-full -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto overscroll-contain rounded-xl bg-popover p-4 text-popover-foreground shadow-float duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...n})]})}function Ge({className:e,...t}){return(0,Y.jsx)(`div`,{"data-slot":`alert-dialog-header`,className:j(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,e),...t})}function Ke({className:e,...t}){return(0,Y.jsx)(`div`,{"data-slot":`alert-dialog-footer`,className:j(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t border-stroke bg-surface-subtle px-4 py-3 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,e),...t})}function qe({className:e,...t}){return(0,Y.jsx)(ze,{"data-slot":`alert-dialog-title`,className:j(`font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,e),...t})}function Je({className:e,...t}){return(0,Y.jsx)(Be,{"data-slot":`alert-dialog-description`,className:j(`text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}function Ye({className:e,variant:t=`default`,size:n=`default`,...r}){return(0,Y.jsx)(M,{variant:t,size:n,asChild:!0,children:(0,Y.jsx)(Le,{"data-slot":`alert-dialog-action`,className:j(e),...r})})}function Xe({className:e,variant:t=`outline`,size:n=`default`,...r}){return(0,Y.jsx)(M,{variant:t,size:n,asChild:!0,children:(0,Y.jsx)(Re,{"data-slot":`alert-dialog-cancel`,className:j(e),...r})})}function Ze(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function Qe({open:e,onOpenChange:t,onInstalled:n}){let{t:a}=r(),[o,s]=(0,J.useState)(``),[l,u]=(0,J.useState)(null),[d,f]=(0,J.useState)(!1),[m,h]=(0,J.useState)(``);return(0,J.useEffect)(()=>{e||(s(``),u(null),f(!1),h(``))},[e]),(0,Y.jsx)(L,{open:e,onOpenChange:e=>!d&&t(e),children:(0,Y.jsxs)(N,{className:`z-[220] sm:max-w-xl`,overlayClassName:`z-[220]`,children:[(0,Y.jsxs)(I,{children:[(0,Y.jsxs)(P,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(q,{className:`size-4 text-content-secondary`}),a(`plugins:pluginsPage.installLocalPlugin`)]}),(0,Y.jsx)(le,{children:a(`plugins:pluginsPage.installLocalPluginDescription`)})]}),(0,Y.jsxs)(`div`,{className:`grid gap-3`,children:[(0,Y.jsxs)(`label`,{className:`grid gap-1.5 text-xs font-medium text-content-secondary`,children:[a(`plugins:pluginsPage.pluginDirectory`),(0,Y.jsxs)(`span`,{className:`flex min-w-0 gap-2`,children:[(0,Y.jsx)(R,{className:`min-w-0 flex-1 font-mono text-xs max-[650px]:h-11`,value:o,disabled:d,placeholder:a(`plugins:pluginsPage.pluginDirectoryPlaceholder`),onChange:e=>{s(e.target.value),u(null)}}),(0,Y.jsx)(M,{type:`button`,variant:`secondary`,size:`icon`,className:`size-[34px] shrink-0 max-[650px]:size-11`,title:a(`plugins:pluginsPage.chooseDirectory`),"aria-label":a(`plugins:pluginsPage.chooseDirectory`),onClick:async()=>{h(``);try{let e=await z(o,a(`plugins:pluginsPage.chooseDirectory`));e.status===`picked`?(s(e.path),u(null)):e.status===`unavailable`&&h(a(`common:workspacePicker.systemPickerUnavailable`))}catch(e){h(e instanceof Error?e.message:String(e))}},children:(0,Y.jsx)(p,{})})]})]}),l&&(0,Y.jsxs)(`div`,{className:`grid gap-3 overflow-hidden rounded-md border border-stroke bg-surface-subtle p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,Y.jsx)(`span`,{className:`grid size-8 shrink-0 place-items-center rounded-sm bg-success-soft text-success`,children:(0,Y.jsx)(c,{className:`size-4`})}),(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`strong`,{className:`block truncate text-sm font-medium text-content`,children:l.plugin.name}),(0,Y.jsxs)(`small`,{className:`block truncate font-mono text-xs text-content-muted tabular-nums`,children:[l.plugin.id,` · v`,l.plugin.version,` · `,l.fileCount,` `,a(`plugins:pluginsPage.files`),` · `,Ze(l.byteCount)]})]})]}),(0,Y.jsx)(`div`,{className:`grid gap-1.5`,children:l.plugin.capabilities.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3 border-t border-stroke-soft pt-2 text-xs`,children:[(0,Y.jsxs)(`span`,{className:`min-w-0`,children:[(0,Y.jsx)(`strong`,{className:`block font-medium text-content`,children:e.label}),(0,Y.jsx)(`small`,{className:`text-xs text-content-muted`,children:e.description})]}),(0,Y.jsx)(`code`,{className:`shrink-0 font-mono text-xs text-content-secondary`,children:e.name})]},e.name))}),(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 rounded-sm bg-warning-soft p-2.5 text-xs leading-5 text-warning-strong`,children:[(0,Y.jsx)(x,{className:`mt-0.5 shrink-0`,size:15}),(0,Y.jsx)(`span`,{children:a(`plugins:pluginsPage.localPluginSecurityWarning`)})]})]}),m&&(0,Y.jsxs)(me,{className:`m-0`,children:[(0,Y.jsx)(x,{size:14}),(0,Y.jsx)(`span`,{children:m})]})]}),(0,Y.jsxs)(F,{children:[(0,Y.jsx)(M,{type:`button`,variant:`secondary`,size:`dialogAction`,disabled:d,onClick:()=>t(!1),children:a(`common:ui.cancel`)}),(0,Y.jsxs)(M,{type:`button`,size:`dialogAction`,disabled:d||!l&&!o.trim(),onClick:l?async()=>{if(!(!l||d)){f(!0),h(``);try{await i(`/api/plugins/install`,{method:`POST`,body:JSON.stringify({inspectionId:l.inspectionId})}),await n(),t(!1)}catch(e){h(e instanceof Error?e.message:String(e))}finally{f(!1)}}}:async()=>{if(!(!o.trim()||d)){f(!0),h(``);try{u(await i(`/api/plugins/inspect`,{method:`POST`,body:JSON.stringify({path:o.trim()})}))}catch(e){u(null),h(e instanceof Error?e.message:String(e))}finally{f(!1)}}},children:[d?(0,Y.jsx)(ae,{className:`text-current`}):l?(0,Y.jsx)(q,{}):(0,Y.jsx)(c,{}),a(d?`plugins:pluginsPage.processing`:l?`plugins:pluginsPage.installPlugin`:`plugins:pluginsPage.inspectPlugin`)]})]})]})})}var $e=[`tool`,`prompt`,`skill`];function et(e){let t=Array.isArray(e.resourceTypes)?e.resourceTypes.filter(e=>$e.includes(e)):[];return t.length?t:[`tool`]}function tt(e,t){return{tool:t(`plugins:pluginsPage.extensionType.tool`),prompt:t(`plugins:pluginsPage.extensionType.prompt`),skill:t(`plugins:pluginsPage.extensionType.skill`)}[e]}var nt=[`all`,`builtin`,`local`],rt={read:d,ls:p,grep:v,find:v,edit:f,write:f,bash:y,web_search:l,browser_automation:l,generate_visual:m};function it(e,t){return t(e===`builtin`?`plugins:pluginsPage.builtIn`:e===`local`?`plugins:pluginsPage.local`:`plugins:pluginsPage.all`)}function at(e){return e.flatMap(e=>e.managedExternally?[]:e.capabilities.filter(e=>e.enabled).map(e=>e.name))}function ot(e){return e.filter(e=>!e.managedExternally||e.source===`pi`).flatMap(e=>e.capabilities.map(t=>({...t,pluginId:e.id,pluginName:e.name,pluginDescription:e.description,pluginVersion:e.version,pluginSource:e.source,pluginBuiltIn:e.builtIn,pluginPermissions:e.permissions||[],pluginSystemAccess:!!e.systemAccess})))}function st(e){return e.find(e=>e.source===`pi`&&e.name===`Computer Use`)?.enabled!==!1}function ct(e){return Object.fromEntries(e.filter(e=>e.source===`pi`&&e.name!==`Computer Use`&&!!e.packageSource).map(e=>[e.packageSource,e.enabled!==!1]))}function lt(e,t){return[...e].sort().join(`\0`)===[...t].sort().join(`\0`)}function ut(e,t){return G({id:e.name,name:e.label},t)}function dt(e,t){return e.pluginSource===`pi`?e.pluginName:K(e.pluginName,t)}function ft({value:e,testing:t,onChange:n,onTest:i}){let{t:a}=r();return(0,Y.jsxs)(`div`,{className:`plugin-tool-config grid gap-2.5 border-t border-stroke pt-3 [&_label]:grid [&_label]:gap-1.5 [&_label]:text-xs [&_label]:font-medium [&_label]:text-content-secondary`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-3`,children:[(0,Y.jsxs)(`label`,{children:[a(`plugins:pluginsPage.defaultLanguage`),(0,Y.jsxs)(W,{value:e.language,onChange:t=>n({...e,language:t.target.value}),children:[(0,Y.jsx)(`option`,{value:`auto`,children:a(`plugins:pluginsPage.auto`)}),(0,Y.jsx)(`option`,{value:`zh-CN`,children:a(`plugins:pluginsPage.simplifiedChinese`)}),(0,Y.jsx)(`option`,{value:`en-US`,children:a(`plugins:pluginsPage.english`)})]})]}),(0,Y.jsxs)(`label`,{children:[a(`plugins:pluginsPage.safeSearch`),(0,Y.jsxs)(W,{value:e.safeSearch,onChange:t=>n({...e,safeSearch:Number(t.target.value)}),children:[(0,Y.jsx)(`option`,{value:0,children:a(`plugins:pluginsPage.off`)}),(0,Y.jsx)(`option`,{value:1,children:a(`plugins:pluginsPage.moderate`)}),(0,Y.jsx)(`option`,{value:2,children:a(`plugins:pluginsPage.strict`)})]})]}),(0,Y.jsxs)(`label`,{children:[a(`plugins:pluginsPage.resultCount`),(0,Y.jsx)(R,{type:`number`,min:`1`,max:`12`,className:`tabular-nums`,value:e.maxResults,onChange:t=>n({...e,maxResults:Number(t.target.value)})})]})]}),(0,Y.jsxs)(M,{type:`button`,variant:`secondary`,className:`justify-self-end max-[650px]:h-11`,loading:t,disabled:t,onClick:i,children:[(0,Y.jsx)(l,{}),a(t?`plugins:pluginsPage.testing`:`plugins:pluginsPage.testConnection`)]})]})}function pt({query:e,notify:t,requestText:n,requestConfirm:a}){let{t:o}=r(),[s,c]=(0,J.useState)(``),[l,d]=(0,J.useState)(null),[f,p]=(0,J.useState)([]),[m,g]=(0,J.useState)(!1),[_,y]=(0,J.useState)(``),[b,x]=(0,J.useState)(``),S=(0,J.useCallback)(async(e=``)=>{g(!0),x(``);try{let[t,n]=await Promise.all([i(`/api/extensions/market?name=${encodeURIComponent(e)}`),i(`/api/extensions`)]);d(t),p(n.packages||[])}catch(e){x(e instanceof Error?e.message:String(e))}finally{g(!1)}},[]);(0,J.useEffect)(()=>{S(``)},[S]);let C=(l?.packages||[]).filter(t=>`${t.name} ${t.description}`.toLowerCase().includes(e.trim().toLowerCase())),w=async e=>{if(await a?.({title:o(`plugins:pluginsPage.installExtension`),message:o(`plugins:pluginsPage.extensionSecurityWarning`,{name:e}),confirmLabel:o(`plugins:pluginsPage.installExtension`),tone:`danger`})!==!1){y(e);try{let n=/^(?:[.~\\/]|[A-Za-z]:[\\/])/.test(e)||/^(?:npm:|https?:\/\/|git\+)/i.test(e)?e:`npm:${e}`,r=await i(`/api/extensions/install`,{method:`POST`,body:JSON.stringify({source:n})});p(r.packages||[]),t(o(`plugins:pluginsPage.extensionInstalled`),`success`)}catch(e){t(e instanceof Error?e.message:String(e),`error`)}finally{y(``)}}},T=async()=>{let e=await n?.({title:o(`plugins:pluginsPage.installExtension`),message:o(`plugins:pluginsPage.extensionSourceHelp`),inputLabel:o(`plugins:pluginsPage.extensionSource`),placeholder:`npm:@scope/package or https://github.com/…`,maxLength:2e3});e?.trim()&&await w(e.trim())},E=async e=>{if(await a?.({title:o(`plugins:pluginsPage.uninstallExtension`),message:o(`plugins:pluginsPage.uninstallExtensionDescription`,{name:e.name}),confirmLabel:o(`plugins:pluginsPage.uninstallExtension`),tone:`danger`})!==!1){y(e.source);try{await i(`/api/extensions`,{method:`DELETE`,body:JSON.stringify({source:e.source,scope:e.scope})}),await S(s),t(o(`plugins:pluginsPage.extensionUninstalled`),`success`)}catch(e){t(e instanceof Error?e.message:String(e),`error`)}finally{y(``)}}},D=$e.map(e=>({type:e,items:f.filter(t=>et(t).includes(e))})).filter(e=>e.items.length>0);return(0,Y.jsxs)(Y.Fragment,{children:[D.map(e=>(0,Y.jsx)(H,{className:`plugin-installed-extensions`,title:`${o(`plugins:pluginsPage.installedExtensions`)} · ${tt(e.type,o)}`,count:e.items.length,children:(0,Y.jsx)(V,{children:e.items.map(t=>(0,Y.jsx)(B,{icon:(0,Y.jsx)(h,{}),name:(0,Y.jsx)(`span`,{className:`font-mono`,children:t.name}),nameMeta:`v${t.version}`,description:(0,Y.jsx)(`span`,{className:`font-mono text-xs`,children:t.source}),actions:(0,Y.jsxs)(M,{type:`button`,variant:`ghost`,size:`sm`,className:`text-content-muted hover:bg-danger-soft hover:text-danger`,loading:_===t.source,disabled:!!_,onClick:()=>void E(t),children:[(0,Y.jsx)(ee,{}),o(`plugins:pluginsPage.uninstallExtension`)]})},`${e.type}:${t.scope}:${t.source}`))})},e.type)),(0,Y.jsxs)(H,{className:`plugin-market`,title:o(`plugins:pluginsPage.extensionMarket`),actions:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(M,{asChild:!0,variant:`ghost`,size:`sm`,children:(0,Y.jsxs)(`a`,{href:`https://pi.dev/packages`,target:`_blank`,rel:`noreferrer`,children:[(0,Y.jsx)(u,{}),o(`plugins:pluginsPage.openPackageCatalog`)]})}),(0,Y.jsxs)(M,{type:`button`,variant:`secondary`,size:`sm`,onClick:T,disabled:!!_,children:[(0,Y.jsx)(q,{}),o(`plugins:pluginsPage.installExtension`)]})]}),children:[(0,Y.jsxs)(`form`,{className:`mb-3 flex min-w-0 gap-2`,onSubmit:e=>{e.preventDefault(),S(s)},children:[(0,Y.jsx)(R,{className:`min-w-0 flex-1 max-[650px]:h-11`,value:s,onChange:e=>c(e.target.value),placeholder:o(`plugins:pluginsPage.searchPackageCatalog`),"aria-label":o(`plugins:pluginsPage.searchPackageCatalog`)}),(0,Y.jsxs)(M,{type:`submit`,variant:`secondary`,className:`h-[34px] max-[650px]:h-11`,loading:m,disabled:m,children:[(0,Y.jsx)(v,{}),o(`plugins:pluginsPage.search`)]})]}),b&&(0,Y.jsx)(U,{className:`mt-0 mb-3`,children:b}),C.length>0&&(0,Y.jsx)(V,{children:C.slice(0,12).map(e=>{let t=f.some(t=>t.name===e.name||t.source===`npm:${e.name}`);return(0,Y.jsx)(B,{icon:(0,Y.jsx)(h,{}),name:(0,Y.jsx)(`span`,{className:`font-mono`,children:e.name}),description:e.description,status:e.published,actions:(0,Y.jsx)(M,{type:`button`,variant:`secondary`,size:`sm`,loading:_===e.name,disabled:t||!!_,onClick:()=>void w(e.name),children:o(t?`plugins:pluginsPage.installed`:`plugins:pluginsPage.installExtension`)})},e.name)})})]})]})}function mt({notify:e,onBack:t,requestText:n,requestConfirm:s}){let{t:c}=r(),l=oe(`focusSearch`),u=o(e=>e.capabilities),d=a(u,`plugins`),f=d?nt:nt.slice(0,2),[p,m]=(0,J.useState)(``),[h,v]=(0,J.useState)(null),[y,C]=(0,J.useState)([]),[w,T]=(0,J.useState)(``),[E,D]=(0,J.useState)(`all`),[O,k]=(0,J.useState)({provider:`bing`,language:`auto`,safeSearch:1,maxResults:8}),[A,te]=(0,J.useState)(!1),[ne,re]=(0,J.useState)(!1),[ie,le]=(0,J.useState)(!1),[N,P]=(0,J.useState)(null),[F,I]=(0,J.useState)(!1),[L,R]=(0,J.useState)(``),[z,U]=(0,J.useState)(!1),W=(0,J.useCallback)(e=>{v(e),C(e.plugins),k(e.webSearch)},[]),G=(0,J.useCallback)(async()=>{R(``);try{W(await i(`/api/plugins`))}catch(e){R(e instanceof Error?e.message:String(e))}},[W]);(0,J.useEffect)(()=>{G()},[G]);let K=(0,J.useMemo)(()=>ot(y),[y]),X=(0,J.useMemo)(()=>at(y),[y]),Z=h?!lt(X,h.enabledTools)||st(y)!==h.computerUseEnabled||JSON.stringify(ct(y))!==JSON.stringify(h.piExtensions)||JSON.stringify(O)!==JSON.stringify(h.webSearch):!1,xe=(0,J.useCallback)(async()=>{if(!A){if(!h||!Z){h&&e(c(`plugins:pluginsPage.noPluginPolicyChanges`));return}te(!0),R(``);try{let t=await i(`/api/plugins`,{method:`PUT`,body:JSON.stringify({enabledTools:X,webSearch:O,computerUseEnabled:st(y),piExtensions:ct(y)})});W(t),e(c(`plugins:pluginsPage.pluginPolicySavedAgentRuntimeUpdated`))}catch(e){R(e instanceof Error?e.message:String(e))}finally{te(!1)}}},[W,h,Z,y,X,e,A,c,O]),Se=async()=>{re(!0),R(``);try{let t=await i(`/api/plugins/web-search/test`,{method:`POST`,body:JSON.stringify(O)});e(c(`plugins:pluginsPage.bingSearchIsAvailableAndReturnedCountResults`,{count:t.count}))}catch(t){let n=t instanceof Error?t.message:String(t);R(n),e(n,`error`)}finally{re(!1)}},Q=(e,t,n)=>{C(r=>r.map(r=>{if(r.id!==e)return r;let i=r.source===`pi`&&r.managedExternally;return{...r,enabled:n||r.capabilities.some(e=>e.enabled),capabilities:r.capabilities.map(e=>i||e.name===t?{...e,enabled:n}:e)}}))},Ce=()=>!Z||(R(c(`plugins:pluginsPage.saveBeforePluginChanges`)),!1),we=async()=>{if(!(!N||F)){I(!0),R(``);try{W(await i(`/api/plugins/${encodeURIComponent(N.pluginId)}`,{method:`DELETE`})),e(c(`plugins:pluginsPage.pluginUninstalled`,{name:N.pluginName})),T(``),P(null)}catch(e){R(e instanceof Error?e.message:String(e))}finally{I(!1)}}},Te=c(`navigation:navigation.plugins`),Ee=p.trim().toLowerCase(),$=K.filter(e=>E!==`all`&&e.pluginSource!==E?!1:[ut(e,c),e.name,e.description,dt(e,c),e.pluginId].join(` `).toLowerCase().includes(Ee));return(0,Y.jsxs)(de,{title:Te,description:c(`plugins:pluginsPage.lede`),back:t&&{label:c(`navigation:sidebar.features`),ariaLabel:c(`navigation:shell.backToFeaturesLabel`),onBack:t},toolbar:(0,Y.jsx)(fe,{search:(0,Y.jsx)(ue,{id:S,value:p,onValueChange:m,placeholder:c(`navigation:pageHeader.searchPage`,{page:Te}),shortcut:l,clearLabel:c(`navigation:more.clearSearch`)}),actions:(0,Y.jsxs)(Y.Fragment,{children:[d&&(0,Y.jsxs)(M,{type:`button`,variant:`secondary`,className:`h-9`,disabled:!h,onClick:()=>Ce()&&le(!0),children:[(0,Y.jsx)(q,{}),c(`plugins:pluginsPage.installPlugin`)]}),(0,Y.jsxs)(M,{type:`button`,className:`h-9`,"data-plugins-save":!0,loading:A,disabled:!h||A,onClick:()=>void xe(),children:[(0,Y.jsx)(_,{}),c(`plugins:pluginsPage.savePolicy`)]})]}),filters:(0,Y.jsx)(pe,{options:f.map(e=>it(e,c)),value:it(E,c),onChange:e=>D(f.find(t=>it(t,c)===e)||`all`)})}),children:[h?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(H,{className:`plugin-catalog`,title:c(`plugins:pluginsPage.toolCatalog`),count:$.length,meta:(0,Y.jsxs)(`span`,{className:`plugin-catalog-summary`,children:[K.filter(e=>e.enabled).length,`/`,K.length,` `,c(`plugins:pluginsPage.enabled2`)]}),actions:Z&&(0,Y.jsxs)(`span`,{"data-plugins-unsaved":!0,className:`flex items-center gap-1.5 text-xs font-medium text-content-secondary`,children:[(0,Y.jsx)(`span`,{"aria-hidden":`true`,className:`size-1.5 rounded-full bg-content-secondary`}),c(`plugins:pluginsPage.unsaved`)]}),children:$.length?(0,Y.jsx)(V,{className:`plugin-tool-grid`,children:$.map(e=>{let t=rt[e.name]||g,n=ut(e,c);return(0,Y.jsx)(B,{className:`plugin-tool-card`,"data-plugin-tool":e.name,icon:(0,Y.jsx)(t,{}),name:(0,Y.jsx)(`span`,{title:n,children:n}),nameMeta:e.name,description:`${dt(e,c)} · ${ve(e.risk,c)}`,status:e.pluginBuiltIn?void 0:c(`plugins:pluginsPage.local`),actions:(0,Y.jsx)(he,{value:e.enabled,onChange:t=>Q(e.pluginId,e.name,t),ariaLabel:n}),expanded:w===e.name,onExpandedChange:t=>T(t?e.name:``),toggleLabel:c(`plugins:pluginsPage.toggleToolDetails`,{name:n}),detail:(0,Y.jsxs)(`div`,{className:`plugin-tool-details grid gap-3`,children:[(0,Y.jsx)(`p`,{className:`text-sm leading-relaxed text-content-soft`,children:ge({id:e.name,description:e.description},c)}),(0,Y.jsxs)(`dl`,{className:`grid grid-cols-[88px_minmax(0,1fr)] gap-x-3 gap-y-1.5 text-xs [&_dd]:min-w-0 [&_dd]:[overflow-wrap:anywhere] [&_dd]:text-content-soft [&_dt]:text-content-muted [&>div]:contents`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`dt`,{children:c(`plugins:pluginsPage.source`)}),(0,Y.jsxs)(`dd`,{className:`tabular-nums`,children:[dt(e,c),!e.pluginBuiltIn&&` · v${e.pluginVersion}`]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`dt`,{children:c(`plugins:pluginsPage.riskLevel`)}),(0,Y.jsx)(`dd`,{className:j((be(e.risk)||_e(e.risk))&&`font-medium text-content!`),children:ve(e.risk,c)})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`dt`,{children:c(`plugins:pluginsPage.pathScope`)}),(0,Y.jsx)(`dd`,{children:ye({id:e.name,scope:e.scope},c)})]}),!e.pluginBuiltIn&&(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`dt`,{children:c(`plugins:pluginsPage.executionMode`)}),(0,Y.jsx)(`dd`,{children:c(`plugins:pluginsPage.confirmUnlessFullAccess`)})]})]}),!e.pluginBuiltIn&&(0,Y.jsxs)(`div`,{className:`plugin-tool-warning flex items-start gap-2 rounded-sm bg-surface-subtle p-2.5 text-xs leading-normal text-content-secondary`,children:[(0,Y.jsx)(b,{className:`mt-px size-3.5 shrink-0`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:c(`plugins:pluginsPage.localPluginSecurityWarning`)})]}),e.name===`web_search`&&(0,Y.jsx)(ft,{value:O,testing:ne,onChange:k,onTest:Se}),!e.pluginBuiltIn&&(0,Y.jsxs)(M,{type:`button`,variant:`ghost`,className:`justify-self-end text-danger hover:bg-danger-soft hover:text-danger max-[650px]:h-11`,onClick:()=>Ce()&&P(e),children:[(0,Y.jsx)(ee,{}),c(`plugins:pluginsPage.uninstallPlugin`)]})]})},e.name)})}):(0,Y.jsx)(ce,{compact:!0,title:c(`plugins:pluginsPage.noMatchingTools`)})}),(0,Y.jsx)(pt,{query:p,notify:e,requestText:n,requestConfirm:s})]}):L?(0,Y.jsx)(se,{kind:`error`,title:c(`plugins:pluginsPage.loadFailed`),description:L,action:(0,Y.jsx)(M,{variant:`secondary`,className:`max-[650px]:h-11`,loading:z,disabled:z,onClick:()=>{U(!0),G().finally(()=>U(!1))},children:c(`common:pageTemplate.retry`)})}):(0,Y.jsx)(se,{kind:`loading`,title:c(`plugins:pluginsPage.loadingToolPlugins`)}),d&&(0,Y.jsx)(Qe,{open:ie,onOpenChange:le,onInstalled:G}),(0,Y.jsx)(Ve,{open:!!N,onOpenChange:e=>!e&&!F&&P(null),children:(0,Y.jsxs)(We,{className:`z-[220]`,children:[(0,Y.jsxs)(Ge,{children:[(0,Y.jsx)(qe,{children:c(`plugins:pluginsPage.uninstallPlugin`)}),(0,Y.jsx)(Je,{children:c(`plugins:pluginsPage.uninstallPluginDescription`,{name:N?.pluginName||``})})]}),(0,Y.jsxs)(Ke,{children:[(0,Y.jsx)(Xe,{disabled:F,children:c(`common:ui.cancel`)}),(0,Y.jsxs)(Ye,{variant:`destructive`,disabled:F,onClick:we,children:[F&&(0,Y.jsx)(ae,{className:`text-current`}),c(`plugins:pluginsPage.uninstallPlugin`)]})]})]})}),L&&h&&(0,Y.jsxs)(me,{className:`fixed right-6 bottom-6 z-[21] max-w-[360px] border border-danger-border shadow-float`,children:[(0,Y.jsx)(x,{size:13}),L]})]})}export{mt as PluginsPage};
@@ -1 +1 @@
1
- import{a as e,r as t}from"./rolldown-runtime-B0Z9INg1.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{t as i}from"./use-i18n-DUgHBsG5.js";import{t as a}from"./createLucideIcon-Cd-3GVxJ.js";import{t as o}from"./chevron-left-BAtyp3_6.js";import{t as s}from"./chevron-right-C3t2Rckj.js";import{t as c}from"./code-xml-BrUXrBax.js";import{t as l}from"./file-text-N9JICX6E.js";import{n as u,t as d}from"./wand-sparkles-CvEBNUFz.js";import{t as f}from"./list-checks-B5Jl4aiO.js";import{t as p}from"./button-CCcCN8tE.js";var m=a(`bug`,[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]),h=a(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),g=a(`search-check`,[[`path`,{d:`m8 11 2 2 4-4`,key:`1sed1v`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]),_=t({default:()=>x}),v=e(n(),1),y=r();function b(e,t){return[{icon:c,label:e(`chat:focusSession.explainCode`),prompt:e(`chat:focusSession.explainHowThisCodeWorks`)},{icon:u,label:e(`chat:focusSession.writeTests`),prompt:e(`chat:focusSession.writeUnitTestsForTheFollowingCode`)},{icon:d,label:e(`chat:focusSession.refactor`),prompt:e(`chat:focusSession.refactorThisCodeAndExplainTheImprovements`)},{icon:m,label:e(`chat:focusSession.findABug`),prompt:e(`chat:focusSession.helpMeLocateAndFixThisBug`)},{icon:l,label:e(`chat:focusSession.summarize`),prompt:e(`chat:focusSession.summarizeContentAndExtractKeyPoints`)},...t?[{icon:f,label:e(`chat:focusSession.makeAPlan`),prompt:e(`chat:focusSession.makeAClearActionablePlanForThisGoal`)}]:[],{icon:h,label:e(`chat:focusSession.organizeInformation`),prompt:e(`chat:focusSession.organizeThisInformationIntoAClearStructure`)},{icon:g,label:e(`chat:focusSession.findIssues`),prompt:e(`chat:focusSession.reviewThisContentAndSuggestImprovements`)}]}function x({plansAvailable:e,onPromptSelect:t}){let{t:n}=i(),[r,a]=(0,v.useState)(0),c=b(n,e),l=Math.ceil(c.length/3)-1,u=Math.min(r,l);return(0,y.jsxs)(`section`,{"aria-label":n(`chat:focusSession.promptIdeas`),className:`pt-6 text-left text-sm`,children:[(0,y.jsxs)(`div`,{className:`mb-2 flex min-h-7 items-center justify-between gap-2`,children:[(0,y.jsx)(`h2`,{className:`text-[12px] font-medium tracking-[.02em] text-content-muted`,children:n(`chat:focusSession.promptIdeas`)}),(0,y.jsxs)(`div`,{className:`flex gap-1 @max-[600px]:hidden`,children:[(0,y.jsx)(p,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":n(`chat:workbench.previousIdeas`),disabled:u===0,onClick:()=>a(u-1),children:(0,y.jsx)(o,{})}),(0,y.jsx)(p,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":n(`chat:workbench.nextIdeas`),disabled:u===l,onClick:()=>a(u+1),children:(0,y.jsx)(s,{})})]})]}),(0,y.jsx)(`div`,{className:`welcome-chips grid grid-cols-3 gap-2 @max-[600px]:flex @max-[600px]:snap-x @max-[600px]:overflow-x-auto @max-[600px]:pb-2`,children:c.map((e,r)=>(0,y.jsxs)(`button`,{type:`button`,"aria-label":e.label,"data-off-page":Math.floor(r/3)!==u||void 0,"data-target-cursor":!0,onClick:()=>t(e.prompt),className:`group/idea flex min-h-[112px] min-w-0 cursor-pointer flex-col gap-2 rounded-md border border-stroke bg-panel p-3 text-left font-normal transition-colors duration-(--d-fast) ease-precise hover:border-stroke-strong hover:bg-surface-subtle focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus @max-[600px]:w-[min(240px,80cqw)] @max-[600px]:shrink-0 @max-[600px]:snap-start @min-[600px]:data-off-page:hidden`,children:[(0,y.jsxs)(`span`,{className:`flex w-full items-center justify-between gap-2`,children:[(0,y.jsx)(`span`,{className:`grid size-7 place-items-center rounded-sm border border-key-border bg-key text-content-secondary shadow-key`,children:(0,y.jsx)(e.icon,{size:15,"aria-hidden":`true`})}),(0,y.jsx)(`span`,{className:`rounded-xs border border-stroke px-1.5 text-[12px] leading-[18px] text-content-muted opacity-0 transition-opacity duration-(--d-fast) group-hover/idea:opacity-100 group-focus-visible/idea:opacity-100 pointer-coarse:opacity-100`,children:n(`chat:workbench.tryPrompt`)})]}),(0,y.jsx)(`span`,{className:`mt-1 text-[13px] font-medium text-foreground`,children:e.label}),(0,y.jsx)(`span`,{className:`text-[12px] leading-[1.5] text-content-muted`,children:e.prompt.replace(/[::]$/,``)})]},e.label))})]})}export{_ as t};
1
+ import{a as e,r as t}from"./rolldown-runtime-B0Z9INg1.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"./createLucideIcon-Cd-3GVxJ.js";import{t as o}from"./chevron-left-BAtyp3_6.js";import{t as s}from"./chevron-right-C3t2Rckj.js";import{t as c}from"./code-xml-BrUXrBax.js";import{t as l}from"./file-text-N9JICX6E.js";import{n as u,t as d}from"./wand-sparkles-CvEBNUFz.js";import{t as f}from"./list-checks-B5Jl4aiO.js";import{t as p}from"./button-CCcCN8tE.js";var m=a(`bug`,[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]),h=a(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),g=a(`search-check`,[[`path`,{d:`m8 11 2 2 4-4`,key:`1sed1v`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]),_=t({default:()=>x}),v=e(n(),1),y=r();function b(e,t){return[{icon:c,label:e(`chat:focusSession.explainCode`),prompt:e(`chat:focusSession.explainHowThisCodeWorks`)},{icon:u,label:e(`chat:focusSession.writeTests`),prompt:e(`chat:focusSession.writeUnitTestsForTheFollowingCode`)},{icon:d,label:e(`chat:focusSession.refactor`),prompt:e(`chat:focusSession.refactorThisCodeAndExplainTheImprovements`)},{icon:m,label:e(`chat:focusSession.findABug`),prompt:e(`chat:focusSession.helpMeLocateAndFixThisBug`)},{icon:l,label:e(`chat:focusSession.summarize`),prompt:e(`chat:focusSession.summarizeContentAndExtractKeyPoints`)},...t?[{icon:f,label:e(`chat:focusSession.makeAPlan`),prompt:e(`chat:focusSession.makeAClearActionablePlanForThisGoal`)}]:[],{icon:h,label:e(`chat:focusSession.organizeInformation`),prompt:e(`chat:focusSession.organizeThisInformationIntoAClearStructure`)},{icon:g,label:e(`chat:focusSession.findIssues`),prompt:e(`chat:focusSession.reviewThisContentAndSuggestImprovements`)}]}function x({plansAvailable:e,onPromptSelect:t}){let{t:n}=i(),[r,a]=(0,v.useState)(0),c=b(n,e),l=Math.ceil(c.length/3)-1,u=Math.min(r,l);return(0,y.jsxs)(`section`,{"aria-label":n(`chat:focusSession.promptIdeas`),className:`pt-6 text-left text-sm`,children:[(0,y.jsxs)(`div`,{className:`mb-2 flex min-h-7 items-center justify-between gap-2`,children:[(0,y.jsx)(`h2`,{className:`text-[12px] font-medium tracking-[.02em] text-content-muted`,children:n(`chat:focusSession.promptIdeas`)}),(0,y.jsxs)(`div`,{className:`flex gap-1 @max-[600px]:hidden`,children:[(0,y.jsx)(p,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":n(`chat:workbench.previousIdeas`),disabled:u===0,onClick:()=>a(u-1),children:(0,y.jsx)(o,{})}),(0,y.jsx)(p,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":n(`chat:workbench.nextIdeas`),disabled:u===l,onClick:()=>a(u+1),children:(0,y.jsx)(s,{})})]})]}),(0,y.jsx)(`div`,{className:`welcome-chips grid grid-cols-3 gap-2 @max-[600px]:flex @max-[600px]:snap-x @max-[600px]:overflow-x-auto @max-[600px]:pb-2`,children:c.map((e,r)=>(0,y.jsxs)(`button`,{type:`button`,"aria-label":e.label,"data-off-page":Math.floor(r/3)!==u||void 0,"data-target-cursor":!0,onClick:()=>t(e.prompt),className:`group/idea flex min-h-[112px] min-w-0 cursor-pointer flex-col gap-2 rounded-md border border-stroke bg-panel p-3 text-left font-normal transition-colors duration-(--d-fast) ease-precise hover:border-stroke-strong hover:bg-surface-subtle focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus @max-[600px]:w-[min(240px,80cqw)] @max-[600px]:shrink-0 @max-[600px]:snap-start @min-[600px]:data-off-page:hidden`,children:[(0,y.jsxs)(`span`,{className:`flex w-full items-center justify-between gap-2`,children:[(0,y.jsx)(`span`,{className:`grid size-7 place-items-center rounded-sm border border-key-border bg-key text-content-secondary shadow-key`,children:(0,y.jsx)(e.icon,{size:15,"aria-hidden":`true`})}),(0,y.jsx)(`span`,{className:`rounded-xs border border-stroke px-1.5 text-[12px] leading-[18px] text-content-muted opacity-0 transition-opacity duration-(--d-fast) group-hover/idea:opacity-100 group-focus-visible/idea:opacity-100 pointer-coarse:opacity-100`,children:n(`chat:workbench.tryPrompt`)})]}),(0,y.jsx)(`span`,{className:`mt-1 text-[13px] font-medium text-foreground`,children:e.label}),(0,y.jsx)(`span`,{className:`text-[12px] leading-[1.5] text-content-muted`,children:e.prompt.replace(/[::]$/,``)})]},e.label))})]})}export{_ 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{t as r}from"./use-i18n-DUgHBsG5.js";import{t as i}from"./button-CCcCN8tE.js";import{a,i as o,l as s,o as c,s as l,t as u}from"./dialog-DdbSm1ZL.js";import{t as d}from"./safe-mode-instance-C8KjWD3O.js";var f=e(t(),1),p=n();function m({notify:e,disableAll:t}){let{t:n}=r(),m=d(),h=(0,f.useSyncExternalStore)(m.subscribe,m.mode,m.mode),[g,_]=(0,f.useState)(!1);if(h!==`pending`)return null;let v=async()=>{_(!0);try{await t()||e(n(`custom-ui:safeMode.disableFailed`)),m.resolve(`normal`)}catch{e(n(`custom-ui:safeMode.disableFailed`))}finally{_(!1)}};return(0,p.jsx)(u,{open:!0,onOpenChange:e=>{!e&&!g&&m.resolve(`safe`)},children:(0,p.jsxs)(o,{"data-components-safe-mode-prompt":!0,children:[(0,p.jsxs)(l,{children:[(0,p.jsx)(s,{children:n(`custom-ui:safeMode.promptTitle`)}),(0,p.jsx)(a,{children:n(`custom-ui:safeMode.promptHint`)})]}),(0,p.jsxs)(c,{children:[(0,p.jsx)(i,{variant:`outline`,disabled:g,onClick:()=>void v(),children:n(`custom-ui:safeMode.disableAll`)}),(0,p.jsx)(i,{variant:`outline`,disabled:g,onClick:()=>m.resolve(`normal`),children:n(`custom-ui:safeMode.loadNormally`)}),(0,p.jsx)(i,{disabled:g,onClick:()=>m.resolve(`safe`),children:n(`custom-ui:safeMode.keepSafe`)})]})]})})}export{m as SafeModePrompt};
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"./button-CCcCN8tE.js";import{a,i as o,l as s,o as c,s as l,t as u}from"./dialog-CUhFgsVd.js";import{t as d}from"./safe-mode-instance-BiAPYJ2-.js";var f=e(t(),1),p=n();function m({notify:e,disableAll:t}){let{t:n}=r(),m=d(),h=(0,f.useSyncExternalStore)(m.subscribe,m.mode,m.mode),[g,_]=(0,f.useState)(!1);if(h!==`pending`)return null;let v=async()=>{_(!0);try{await t()||e(n(`custom-ui:safeMode.disableFailed`)),m.resolve(`normal`)}catch{e(n(`custom-ui:safeMode.disableFailed`))}finally{_(!1)}};return(0,p.jsx)(u,{open:!0,onOpenChange:e=>{!e&&!g&&m.resolve(`safe`)},children:(0,p.jsxs)(o,{"data-components-safe-mode-prompt":!0,children:[(0,p.jsxs)(l,{children:[(0,p.jsx)(s,{children:n(`custom-ui:safeMode.promptTitle`)}),(0,p.jsx)(a,{children:n(`custom-ui:safeMode.promptHint`)})]}),(0,p.jsxs)(c,{children:[(0,p.jsx)(i,{variant:`outline`,disabled:g,onClick:()=>void v(),children:n(`custom-ui:safeMode.disableAll`)}),(0,p.jsx)(i,{variant:`outline`,disabled:g,onClick:()=>m.resolve(`normal`),children:n(`custom-ui:safeMode.loadNormally`)}),(0,p.jsx)(i,{disabled:g,onClick:()=>m.resolve(`safe`),children:n(`custom-ui:safeMode.keepSafe`)})]})]})})}export{m as SafeModePrompt};
@@ -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-DUgHBsG5.js";import{t as i}from"./api-PMkeVoki.js";import{t as a}from"./bell-BjONAtgH.js";import{t as o}from"./bot-B3TaBp_T.js";import{t as s}from"./calendar-clock-VIxTaqqy.js";import{t as c}from"./circle-check-iEdCm3Pw.js";import{t as l}from"./folder-open-FIShC5Qk.js";import{n as u,t as d}from"./send-QxBfLFo-.js";import{t as f}from"./play-DNDjDNGn.js";import{t as p}from"./plus-fQbSqB1n.js";import{t as m}from"./trash-2-CNrPOoPR.js";import{t as h}from"./triangle-alert-CE1q54ci.js";import{t as g}from"./more-pages-D_PnxLN0.js";import{t as _}from"./switch-D_G8wFhs.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-CD4vslwQ.js";import{a as S}from"./format-DMJQzoZ7.js";import{n as C,t as w}from"./PageState-Cz6vFMXv.js";import{a as T,i as E,l as D,s as O,t as k}from"./dialog-DdbSm1ZL.js";import{t as A}from"./input-CPw-zkYh.js";import{t as j}from"./textarea-DmATpOqT.js";import{t as M}from"./pick-system-directory-Dzxt6gno.js";import{WorkspacePicker as N}from"./WorkspacePicker-BiJHY52J.js";import{a as P,i as F,n as ee,o as I,r as L,s as R,t as z}from"./FeaturePage-BV7-6mzm.js";import{n as B}from"./field-DoLEb0np.js";import{t as te}from"./StatusGlyph-1KgitlUg.js";import{i as V,n as H,s as U,t as W}from"./app-primitives-Drz_SjnR.js";import{t as G}from"./AppSelect-BGVBQRP1.js";var K=e(t(),1),q=n(),ne={browser:{name:`通知`,Icon:a},feishu:{name:`飞书`,Icon:o},weixin:{name:`微信`,Icon:u},qq:{name:`QQ`,Icon:u},telegram:{name:`Telegram`,Icon:d}},J={interval:`每隔一段时间`,daily:`每天`,weekly:`每周`,monthly:`每月`},Y={minutes:`分钟`,hours:`小时`,days:`天`},X=[...new Set([`Asia/Hong_Kong`,`UTC`,...typeof Intl.supportedValuesOf==`function`?Intl.supportedValuesOf(`timeZone`):[]])],re=[`full-access`],Z=`mt-4 border-t border-stroke-soft pt-1`,Q=`form-grid grid gap-x-3 sm:grid-cols-3`,ie=`schedule-interval-input grid grid-cols-[minmax(0,1fr)_minmax(84px,auto)] gap-1.5`,ae=`inline-grid h-8 grid-cols-2 rounded-md border border-stroke bg-chrome p-[3px] max-[650px]:h-auto max-[650px]:w-full pointer-coarse:h-auto`,oe=`inline-flex min-w-0 items-center justify-center rounded-sm border border-transparent px-3 text-sm text-content-secondary transition-colors duration-(--d-fast) hover:text-content aria-pressed:border-key-border aria-pressed:bg-key aria-pressed:font-medium aria-pressed:text-content aria-pressed:shadow-key max-[650px]:h-11 pointer-coarse:h-11`;function se({status:e}){return(0,q.jsx)(`span`,{"aria-hidden":`true`,className:`mt-px grid size-[18px] flex-none place-items-center`,children:(0,q.jsx)(te,{status:e===`running`?`run`:e===`completed`?`done`:`failed`,className:`size-3.5`})})}function ce(e){return e(`schedules:schedulesPage.fullAccessHelp`)}function le(e,t){return t(e===`daily`?`schedules:schedulesPage.daily`:e===`weekly`?`schedules:schedulesPage.weekly`:e===`monthly`?`schedules:schedulesPage.monthly`:`schedules:schedulesPage.atIntervals`)}function $(e,t){return t(e===`hours`?`schedules:schedulesPage.hours`:e===`days`?`schedules:schedulesPage.days`:`schedules:schedulesPage.minutes`)}function ue(e,t){return t(e===`feishu`?`schedules:schedulesPage.feishu`:e===`weixin`?`schedules:schedulesPage.weChat`:e===`qq`?`schedules:schedulesPage.qq`:e===`telegram`?`schedules:schedulesPage.telegram`:`schedules:schedulesPage.browserNotification`)}function de({value:e,onChange:t}){let{t:n}=r();return(0,q.jsxs)(B,{variant:`control`,children:[n(`schedules:schedulesPage.executionMode`),(0,q.jsx)(G,{value:e,onChange:e=>t(e.target.value),children:re.map(e=>(0,q.jsx)(`option`,{value:e,children:n(`schedules:schedulesPage.fullAccess`)},e))}),(0,q.jsx)(`small`,{children:ce(n)})]})}function fe(e){return Object.fromEntries((e?.inputs||[]).map(e=>[e.name,e.defaultValue??``]))}function pe(e,t,n,r,i){if(e===`prompt`)return!!t.trim();let a=i.find(e=>e.id===n);return a?a.inputs.every(e=>{let t=Object.hasOwn(r,e.name)?r[e.name]:e.defaultValue;return!e.required||t!=null&&t!==``}):!1}function me({targetType:e,prompt:t,workflowId:n,workflowInputs:i,workflows:a,onChange:o}){let{t:s}=r(),c=a.find(e=>e.id===n);return(0,q.jsxs)(`div`,{className:`grid`,children:[(0,q.jsxs)(B,{variant:`control`,children:[s(`schedules:schedulesPage.executionTarget`),(0,q.jsxs)(G,{value:e,onChange:e=>{let t=e.target.value,r=a[0];o(t===`workflow`?{targetType:t,workflowId:n||r?.id||``,workflowInputs:n?i:fe(r)}:{targetType:t})},children:[(0,q.jsx)(`option`,{value:`prompt`,children:`Prompt`}),(0,q.jsx)(`option`,{value:`workflow`,children:s(`schedules:schedulesPage.workflow`)})]})]}),e===`prompt`?(0,q.jsxs)(B,{variant:`control`,children:[`Prompt`,(0,q.jsx)(j,{value:t,onChange:e=>o({prompt:e.target.value}),placeholder:s(`schedules:schedulesPage.describeTheWorkTheAgentShouldCompleteEachTime`)})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(B,{variant:`control`,children:[s(`schedules:schedulesPage.workflow`),(0,q.jsxs)(G,{value:n,onChange:e=>{let t=a.find(t=>t.id===e.target.value);o({workflowId:e.target.value,workflowInputs:fe(t)})},children:[(0,q.jsx)(`option`,{value:``,children:s(`schedules:schedulesPage.selectPublishedWorkflow`)}),a.map(e=>(0,q.jsxs)(`option`,{value:e.id,children:[e.name,` · v`,e.revision]},e.id))]}),(0,q.jsx)(`small`,{children:c?.description||(a.length?s(`schedules:schedulesPage.workflowUsesItsOwnRuntimeSettings`):s(`schedules:schedulesPage.noPublishedWorkflows`))})]}),c?.inputs.length?(0,q.jsxs)(`div`,{className:`grid`,children:[(0,q.jsxs)(`div`,{className:`schedule-workflow-inputs-heading mt-3 flex items-baseline justify-between gap-3 max-[650px]:flex-col max-[650px]:items-start max-[650px]:gap-0.5 [&_small]:text-xs [&_small]:text-content-muted [&_strong]:text-xs [&_strong]:font-medium [&_strong]:text-content-secondary`,children:[(0,q.jsx)(`strong`,{children:s(`schedules:schedulesPage.workflowInputs`)}),(0,q.jsx)(`small`,{children:s(`schedules:schedulesPage.workflowInputsHelp`)})]}),(0,q.jsx)(`div`,{className:`schedule-workflow-inputs grid gap-x-3 sm:grid-cols-2 [&_input[type=checkbox]]:size-4 [&_input[type=checkbox]]:justify-self-end [&_input[type=checkbox]]:accent-star`,children:c.inputs.map(e=>(0,q.jsxs)(B,{variant:`control`,className:e.type===`boolean`?`grid grid-cols-[minmax(0,1fr)_auto] items-center`:void 0,children:[e.label,e.required?` *`:``,e.type===`boolean`?(0,q.jsx)(_,{checked:!!i[e.name],onCheckedChange:t=>o({workflowInputs:{...i,[e.name]:t}})}):(0,q.jsx)(A,{type:e.type===`number`?`number`:`text`,required:e.required,value:String(i[e.name]??``),onChange:t=>o({workflowInputs:{...i,[e.name]:t.target.value}})}),e.description&&(0,q.jsx)(`small`,{children:e.description})]},e.id))})]}):null]})]})}function he({value:e,onChange:t}){let{t:n}=r(),[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(!1),c=async()=>{a(``);try{let r=await M(e,n(`common:workspacePicker.selectWorkspaceForSchedule`));r.status===`picked`?t(r.path):r.status===`unavailable`&&s(!0)}catch(e){a(e instanceof Error?e.message:String(e))}};return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(B,{variant:`control`,children:[n(`schedules:schedulesPage.workingDirectory`),(0,q.jsxs)(`span`,{className:`schedule-workspace-input grid grid-cols-[minmax(0,1fr)_auto] gap-1.5 [&_input]:min-w-0 [&_input]:font-mono`,children:[(0,q.jsx)(A,{value:e,onChange:e=>t(e.target.value),placeholder:n(`schedules:schedulesPage.enterTheProjectSAbsolutePath`)}),(0,q.jsxs)(b,{type:`button`,variant:`secondary`,className:`h-auto min-h-8`,onClick:()=>void c(),children:[(0,q.jsx)(l,{}),n(`schedules:schedulesPage.browseDirectories`)]})]}),(0,q.jsx)(`small`,{children:n(`schedules:schedulesPage.theScheduledAgentWillRunInThisDirectory`)})]}),i&&(0,q.jsxs)(V,{children:[(0,q.jsx)(h,{size:13}),i]}),(0,q.jsx)(N,{open:o,initialPath:e,description:n(`common:workspacePicker.selectWorkspaceForSchedule`),onOpenChange:s,onSelect:e=>t(e)})]})}function ge(e){return{id:e.id,name:e.name,targetType:e.targetType||`prompt`,prompt:e.prompt,workflowId:e.workflowId||``,workflowInputs:e.workflowInputs||{},enabled:e.enabled,frequency:e.frequency,intervalValue:e.intervalValue||1,intervalUnit:e.intervalUnit||`hours`,time:e.time,timezone:e.timezone,dayOfWeek:e.dayOfWeek,dayOfMonth:e.dayOfMonth,cwd:e.cwd,executionMode:e.executionMode||`full-access`,model:e.model,notifications:e.notifications||[],notifyOn:e.notifyOn||`always`}}function _e(e,t=`zh-CN`){return!e.enabled||!e.nextRunAt?t===`en-US`?`Paused`:`已暂停`:new Intl.DateTimeFormat(t,{timeZone:e.timezone,dateStyle:`medium`,timeStyle:`short`}).format(new Date(e.nextRunAt))}function ve({notify:e,onBack:t,openNotificationSettings:n,requestConfirm:a}){let{t:o,language:c}=r(),l=x(`focusSearch`),[u,d]=(0,K.useState)({tasks:[],runs:[],notificationTargets:{browser:{enabled:!1},feishu:{enabled:!1},weixin:{enabled:!1},qq:{enabled:!1},telegram:{enabled:!1}},workflows:[],defaultCwd:``}),[f,m]=(0,K.useState)(``),[h,_]=(0,K.useState)({}),[v,y]=(0,K.useState)(!0),[S,T]=(0,K.useState)(!1),[E,D]=(0,K.useState)(``),[O,k]=(0,K.useState)(!1),[A,j]=(0,K.useState)(``),[M,N]=(0,K.useState)(!1),[B,V]=(0,K.useState)(``),H=(0,K.useCallback)(async()=>{try{let e=await i(`/api/schedules`);d(e),T(!0),D(``),m(t=>e.tasks.some(e=>e.id===t)?t:``),_(t=>{let n=Object.entries(t).filter(([t])=>e.tasks.some(e=>e.id===t));return n.length===Object.keys(t).length?t:Object.fromEntries(n)})}catch(e){D(e instanceof Error?e.message:String(e))}finally{y(!1)}},[]);(0,K.useEffect)(()=>{H()},[H]),(0,K.useEffect)(()=>{let e=window.setInterval(H,u.tasks.some(e=>e.lastStatus===`running`)?2e3:1e4);return()=>window.clearInterval(e)},[u.tasks,H]);let U=u.tasks.find(e=>e.id===f),W=u.workflows||[],G=U?h[U.id]??ge(U):null,ne=(0,K.useMemo)(()=>u.runs.filter(e=>e.taskId===f).sort((e,t)=>new Date(t.startedAt).getTime()-new Date(e.startedAt).getTime()).slice(0,20),[u.runs,f]),J=e=>W.find(t=>t.id===e.workflowId)?.name||o(`schedules:schedulesPage.workflowUnavailable`),Y=B.trim().toLocaleLowerCase(),X=Y?u.tasks.filter(e=>`${e.name} ${e.targetType===`workflow`?J(e):e.prompt}`.toLocaleLowerCase().includes(Y)):u.tasks,re=u.tasks.filter(e=>e.enabled).length,Z=e=>{if(!U)return;let t=ge(U);_(n=>({...n,[t.id]:{...n[t.id]??t,...e}}))},Q=e=>{G&&Z({notifications:G.notifications.includes(e)?G.notifications.filter(t=>t!==e):[...G.notifications,e]})},ie=async()=>{if(!(!U||!G)){k(!0),j(``);try{let t=await i(`/api/schedules/${encodeURIComponent(U.id)}`,{method:`PATCH`,body:JSON.stringify(G)});d(t.state),_(e=>Object.fromEntries(Object.entries(e).filter(([e])=>e!==t.task.id))),e(o(`schedules:schedulesPage.scheduledTaskSaved`))}catch(e){j(e instanceof Error?e.message:String(e))}finally{k(!1)}}},ae=async()=>{if(U){k(!0),j(``);try{await i(`/api/schedules/${encodeURIComponent(U.id)}/run`,{method:`POST`,body:`{}`}),await H(),e(o(`schedules:schedulesPage.scheduledTaskStarted`))}catch(e){j(e instanceof Error?e.message:String(e))}finally{k(!1)}}},oe=async()=>{if(U&&await a({title:o(`schedules:schedulesPage.deleteScheduledTask`),message:o(`schedules:schedulesPage.deleteScheduledTaskNameAndItsRunHistory`,{name:U.name}),confirmLabel:o(`schedules:schedulesPage.delete`)}))try{await i(`/api/schedules/${encodeURIComponent(U.id)}`,{method:`DELETE`}),await H(),e(o(`schedules:schedulesPage.scheduledTaskDeleted`))}catch(e){j(e instanceof Error?e.message:String(e))}},se=t=>{d(t.state),m(t.task.id),e(o(`schedules:schedulesPage.scheduledTaskCreated`))},ce=e=>(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-col items-end gap-0.5 max-[650px]:flex-row max-[650px]:items-center max-[650px]:gap-2`,children:[e.lastStatus===`running`?(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-content-secondary`,children:[(0,q.jsx)(te,{status:`run`,className:`size-3.5`}),o(`schedules:schedulesPage.running`)]}):(0,q.jsx)(`span`,{className:`whitespace-nowrap`,children:e.enabled?o(`schedules:schedulesPage.nextRunTime`,{time:_e(e,c)}):o(`schedules:schedulesPage.pause`)}),e.lastStatus===`failed`&&(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-content-secondary`,children:[(0,q.jsx)(te,{status:`failed`,className:`size-3.5`}),o(`schedules:schedulesPage.lastRunFailed`)]})]}),ue=o(`navigation:navigation.schedules`);return(0,q.jsxs)(L,{title:ue,description:o(`schedules:schedulesPage.lede`),back:t&&{label:o(`navigation:sidebar.features`),ariaLabel:o(`navigation:shell.backToFeaturesLabel`),onBack:t},toolbar:(0,q.jsx)(R,{search:(0,q.jsx)(P,{id:g,value:B,onValueChange:V,placeholder:o(`navigation:pageHeader.searchPage`,{page:ue}),shortcut:l,clearLabel:o(`navigation:more.clearSearch`)}),actions:(0,q.jsxs)(b,{type:`button`,className:`h-9`,disabled:!S,onClick:()=>N(!0),children:[(0,q.jsx)(p,{}),o(`schedules:schedulesPage.newTask`)]})}),children:[v?(0,q.jsx)(C,{kind:`loading`,title:o(`schedules:schedulesPage.loadingScheduledTasks`)}):E&&!S?(0,q.jsx)(C,{kind:`error`,title:o(`schedules:schedulesPage.loadFailed`),description:E,action:(0,q.jsx)(b,{variant:`secondary`,className:`max-[650px]:h-11`,onClick:()=>{y(!0),H()},children:o(`common:pageTemplate.retry`)})}):(0,q.jsxs)(q.Fragment,{children:[(A||E)&&(0,q.jsx)(z,{children:A||E}),(0,q.jsx)(I,{title:o(`schedules:schedulesPage.tasks`),count:u.tasks.length,meta:u.tasks.length?o(`schedules:schedulesPage.enabledCount`,{count:re}):void 0,children:X.length?(0,q.jsx)(ee,{children:X.map(e=>{let t=f===e.id;return(0,q.jsx)(F,{"data-schedule-task":e.id,className:`schedule-list-item`,icon:(0,q.jsx)(s,{}),name:e.name,description:e.targetType===`workflow`?(0,q.jsx)(`span`,{className:`font-mono`,children:J(e)}):e.prompt,meta:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{children:le(e.frequency,o)}),(0,q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,q.jsx)(`span`,{className:`tabular-nums`,children:e.frequency===`interval`?`${e.intervalValue} ${$(e.intervalUnit,o)}`:e.time}),(0,q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,q.jsx)(`span`,{className:`truncate`,children:e.timezone})]}),status:ce(e),expanded:t,onExpandedChange:t=>m(t?e.id:``),toggleLabel:o(`schedules:schedulesPage.toggleTaskDetails`,{name:e.name}),detail:t&&G&&U?(0,q.jsx)(ye,{task:U,draft:G,runs:ne,saving:O,workflows:W,notificationTargets:u.notificationTargets,language:c,onUpdate:Z,onToggleNotification:Q,onRun:ae,onRemove:oe,onSave:ie,onEditTemplates:n}):null},e.id)})}):(0,q.jsx)(w,{title:u.tasks.length?o(`schedules:schedulesPage.noMatchingTasks`):o(`schedules:schedulesPage.theTimelineIsStillUnlit`),description:u.tasks.length?void 0:o(`schedules:schedulesPage.createATaskAndLetItSetOutAutomaticallyAtTheAppointedTime`)})}),!u.tasks.length&&(0,q.jsx)(`div`,{className:`mt-7`,"data-schedule-create":!0,children:(0,q.jsx)(be,{notificationTargets:u.notificationTargets,workflows:W,defaultCwd:u.defaultCwd,onCreated:se})})]}),M&&(0,q.jsx)(xe,{notificationTargets:u.notificationTargets,workflows:W,defaultCwd:u.defaultCwd,onClose:()=>N(!1),onCreated:e=>{N(!1),se(e)}})]})}function ye({task:e,draft:t,runs:n,saving:i,workflows:a,notificationTargets:o,language:s,onUpdate:l,onToggleNotification:u,onRun:d,onRemove:p,onSave:h,onEditTemplates:g}){let{t:_}=r(),x=e.lastStatus===`running`;return(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-4`,children:[(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,q.jsxs)(`label`,{className:`mr-auto inline-flex min-h-8 items-center gap-2.5 text-sm text-content max-[650px]:min-h-11`,children:[(0,q.jsx)(U,{value:t.enabled,onChange:e=>l({enabled:e}),ariaLabel:_(`schedules:schedulesPage.enableTaskName`,{name:t.name})}),t.enabled?_(`schedules:schedulesPage.enabled`):_(`schedules:schedulesPage.pause`)]}),(0,q.jsxs)(b,{variant:`secondary`,size:`sm`,className:`max-[650px]:h-11`,disabled:i||x,onClick:d,children:[x?(0,q.jsx)(y,{}):(0,q.jsx)(f,{}),_(x?`schedules:schedulesPage.running`:`schedules:schedulesPage.runNow`)]}),(0,q.jsx)(b,{variant:`ghost`,size:`icon-sm`,className:`hover:bg-danger-soft hover:text-danger max-[650px]:size-11`,title:_(`schedules:schedulesPage.deleteTask`),"aria-label":_(`schedules:schedulesPage.deleteTask`),onClick:p,children:(0,q.jsx)(m,{})})]}),(0,q.jsx)(me,{targetType:t.targetType,prompt:t.prompt,workflowId:t.workflowId,workflowInputs:t.workflowInputs,workflows:a,onChange:l}),t.targetType===`prompt`&&(0,q.jsx)(he,{value:t.cwd,onChange:e=>l({cwd:e})}),(0,q.jsx)(`div`,{className:Z,children:(0,q.jsxs)(`div`,{className:Q,children:[(0,q.jsxs)(B,{variant:`control`,children:[_(`schedules:schedulesPage.frequency`),(0,q.jsx)(G,{value:t.frequency,onChange:e=>l({frequency:e.target.value}),children:Object.keys(J).map(e=>(0,q.jsx)(`option`,{value:e,children:le(e,_)},e))})]}),t.frequency===`interval`?(0,q.jsxs)(B,{variant:`control`,children:[_(`schedules:schedulesPage.runInterval`),(0,q.jsxs)(`span`,{className:ie,children:[(0,q.jsx)(A,{type:`number`,min:`1`,value:t.intervalValue,onChange:e=>l({intervalValue:Number(e.target.value)})}),(0,q.jsx)(G,{value:t.intervalUnit,onChange:e=>l({intervalUnit:e.target.value}),children:Object.keys(Y).map(e=>(0,q.jsx)(`option`,{value:e,children:$(e,_)},e))})]})]}):(0,q.jsxs)(B,{variant:`control`,children:[_(`schedules:schedulesPage.time`),(0,q.jsx)(A,{type:`time`,className:`tabular-nums`,value:t.time,onChange:e=>l({time:e.target.value})})]}),(0,q.jsxs)(B,{variant:`control`,children:[_(`schedules:schedulesPage.timeZone`),(0,q.jsx)(G,{value:t.timezone,onChange:e=>l({timezone:e.target.value}),children:X.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))})]}),t.targetType===`prompt`&&(0,q.jsx)(de,{value:t.executionMode,onChange:e=>l({executionMode:e})})]})}),(0,q.jsxs)(`div`,{className:v(`schedule-notification-section pt-3`,Z),children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsx)(`strong`,{className:`text-sm font-medium`,children:_(`schedules:schedulesPage.notificationChannels`)}),(0,q.jsx)(`button`,{type:`button`,className:`text-button text-xs font-medium text-content-secondary underline underline-offset-2 hover:text-content max-[650px]:min-h-11`,onClick:g,children:_(`schedules:schedulesPage.editTemplates`)})]}),(0,q.jsx)(`p`,{className:`mt-0.5 text-xs text-content-muted`,children:_(`schedules:schedulesPage.notificationChannelsHelp`)}),(0,q.jsx)(`div`,{className:`schedule-notification-targets mt-2.5 grid grid-cols-[repeat(auto-fill,minmax(132px,1fr))] gap-2`,children:Object.entries(ne).map(([e,n])=>{let r=n.Icon,i=t.notifications.includes(e);return(0,q.jsxs)(`button`,{type:`button`,"aria-pressed":i,className:v(`grid min-h-[52px] grid-cols-[16px_minmax(0,1fr)_16px] items-center gap-2 rounded-md border px-2.5 py-2 text-left transition-colors duration-(--d-fast)`,i?`selected border-star-border bg-star-soft text-star-strong`:`border-stroke bg-panel text-content hover:bg-surface-subtle`),onClick:()=>u(e),children:[(0,q.jsx)(r,{className:`size-4`}),(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,q.jsx)(`strong`,{className:`truncate text-sm font-medium`,children:ue(e,_)}),(0,q.jsx)(`small`,{className:`truncate text-xs text-content-muted`,children:o[e].enabled?_(`schedules:schedulesPage.configured`):_(`schedules:schedulesPage.notConfigured`)})]}),(0,q.jsx)(c,{className:v(`size-4`,i?`text-star-strong`:`text-content-faint`)})]},e)})}),(0,q.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[(0,q.jsx)(`span`,{id:`schedule-notify-on-${e.id}`,className:`text-xs text-content-muted`,children:_(`schedules:schedulesPage.notifyWhen`)}),(0,q.jsx)(`div`,{role:`group`,"aria-labelledby":`schedule-notify-on-${e.id}`,className:v(`schedule-notification-chip`,ae),children:[`always`,`failure`].map(e=>(0,q.jsx)(`button`,{type:`button`,"aria-pressed":t.notifyOn===e,className:oe,onClick:()=>l({notifyOn:e}),children:_(e===`failure`?`schedules:schedulesPage.failuresOnly`:`schedules:schedulesPage.completionAndFailure`)},e))})]})]}),(0,q.jsxs)(`div`,{className:`form-footer mt-4 flex items-center justify-between gap-2.5 border-t border-stroke-soft pt-3 max-[650px]:flex-wrap`,children:[(0,q.jsx)(`span`,{className:`text-xs text-content-muted tabular-nums`,children:e.lastRunAt?_(`schedules:schedulesPage.lastRunTime`,{time:S(e.lastRunAt,s)}):_(`schedules:schedulesPage.nextRunTime`,{time:_e(e,s)})}),(0,q.jsxs)(b,{className:`max-[650px]:h-11 max-[650px]:w-full`,disabled:i||!pe(t.targetType,t.prompt,t.workflowId,t.workflowInputs,a),onClick:h,children:[i?(0,q.jsx)(y,{className:`text-current`}):null,_(i?`schedules:schedulesPage.saving`:`schedules:schedulesPage.saveTask`)]})]})]}),(0,q.jsxs)(`section`,{"aria-labelledby":`schedule-runs-${e.id}`,className:`min-w-0`,children:[(0,q.jsxs)(`h3`,{id:`schedule-runs-${e.id}`,className:`mb-1.5 text-[13px] font-medium text-content-muted tabular-nums`,children:[_(`schedules:schedulesPage.recentRuns`),` · `,n.length]}),n.length?(0,q.jsx)(`ul`,{className:`divide-y divide-stroke-soft overflow-hidden rounded-[var(--r-md)] border border-stroke`,children:n.map(e=>(0,q.jsxs)(`li`,{className:`schedule-run-row grid min-h-11 grid-cols-[18px_minmax(0,1fr)_auto] items-start gap-2.5 px-3 py-2.5 ${e.status}`,children:[(0,q.jsx)(se,{status:e.status}),(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,q.jsx)(`strong`,{className:`line-clamp-2 text-sm leading-5 font-medium text-content`,children:e.status===`running`?_(`schedules:schedulesPage.running2`):e.status===`completed`?e.summary||_(`schedules:schedulesPage.taskCompleted`):e.status===`interrupted`?_(`schedules:schedulesPage.taskInterrupted`):e.error||_(`schedules:schedulesPage.taskFailed`)}),(0,q.jsxs)(`small`,{className:`text-xs text-content-muted tabular-nums`,children:[S(e.startedAt,s),` ·`,` `,e.trigger===`manual`?_(`schedules:schedulesPage.manualRun`):_(`schedules:schedulesPage.scheduledTrigger`),e.durationMs?` · ${_(`schedules:schedulesPage.countSec`,{count:Math.round(e.durationMs/1e3)})}`:``]})]}),(0,q.jsx)(`em`,{className:`font-mono text-xs leading-5 text-content-secondary not-italic tabular-nums`,children:new Intl.DateTimeFormat(s,{hour:`2-digit`,minute:`2-digit`}).format(new Date(e.startedAt))})]},e.id))}):(0,q.jsx)(w,{compact:!0,title:_(`schedules:schedulesPage.noRunHistory`)})]})]})}function be({notificationTargets:e,workflows:t,defaultCwd:n,onCreated:a}){let{t:o}=r(),[s,c]=(0,K.useState)(``),[l,u]=(0,K.useState)(`prompt`),[d,f]=(0,K.useState)(``),[m,g]=(0,K.useState)(``),[_,x]=(0,K.useState)({}),[S,C]=(0,K.useState)(n||``),[w,T]=(0,K.useState)(`daily`),[E,D]=(0,K.useState)(`09:00`),[O,k]=(0,K.useState)(`Asia/Hong_Kong`),[j,M]=(0,K.useState)(1),[N,P]=(0,K.useState)(`hours`),[F,ee]=(0,K.useState)(`full-access`),[I,L]=(0,K.useState)(!1),[R,z]=(0,K.useState)(``);return(0,q.jsxs)(W,{className:`p-4 py-4`,children:[(0,q.jsx)(H,{children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h2`,{className:`text-[15px]! font-medium`,children:o(`schedules:schedulesPage.newScheduledTask`)}),(0,q.jsx)(`p`,{children:o(`schedules:schedulesPage.youCanContinueEditingTheRunTimeAndNotificationChannelsAfterCreation`)})]})}),(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.taskName`),(0,q.jsx)(A,{value:s,onChange:e=>c(e.target.value),placeholder:o(`schedules:schedulesPage.forExampleDailyCodeReview`)})]}),(0,q.jsx)(me,{targetType:l,prompt:d,workflowId:m,workflowInputs:_,workflows:t,onChange:e=>{e.targetType&&u(e.targetType),e.prompt!==void 0&&f(e.prompt),e.workflowId!==void 0&&g(e.workflowId),e.workflowInputs!==void 0&&x(e.workflowInputs)}}),l===`prompt`&&(0,q.jsx)(he,{value:S,onChange:C}),(0,q.jsxs)(`div`,{className:v(Z,Q),children:[(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.frequency`),(0,q.jsx)(G,{value:w,onChange:e=>T(e.target.value),children:Object.keys(J).map(e=>(0,q.jsx)(`option`,{value:e,children:le(e,o)},e))})]}),w===`interval`?(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.runInterval`),(0,q.jsxs)(`span`,{className:ie,children:[(0,q.jsx)(A,{type:`number`,min:`1`,value:j,onChange:e=>M(Number(e.target.value))}),(0,q.jsx)(G,{value:N,onChange:e=>P(e.target.value),children:Object.keys(Y).map(e=>(0,q.jsx)(`option`,{value:e,children:$(e,o)},e))})]})]}):(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.time`),(0,q.jsx)(A,{type:`time`,className:`tabular-nums`,value:E,onChange:e=>D(e.target.value)})]}),(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.timeZone`),(0,q.jsx)(G,{value:O,onChange:e=>k(e.target.value),children:X.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))})]}),l===`prompt`&&(0,q.jsx)(de,{value:F,onChange:ee})]}),R&&(0,q.jsxs)(V,{children:[(0,q.jsx)(h,{size:13}),R]}),(0,q.jsxs)(`div`,{className:`form-footer mt-4 flex items-center justify-between gap-2.5 border-t border-stroke-soft pt-3 max-[650px]:flex-wrap`,children:[(0,q.jsx)(`span`,{className:`text-xs text-content-muted`,children:o(`schedules:schedulesPage.enabledAutomaticallyAfterCreation`)}),(0,q.jsxs)(b,{className:`max-[650px]:h-11 max-[650px]:w-full`,disabled:I||!s.trim()||!pe(l,d,m,_,t),onClick:async()=>{L(!0),z(``);try{let t=Object.entries(e).filter(([,e])=>e.enabled).map(([e])=>e);a(await i(`/api/schedules`,{method:`POST`,body:JSON.stringify({name:s,targetType:l,prompt:d,workflowId:m,workflowInputs:_,cwd:S,enabled:!0,frequency:w,time:E,timezone:O,intervalValue:j,intervalUnit:N,executionMode:F,notifications:t,notifyOn:`always`})}))}catch(e){z(e instanceof Error?e.message:String(e))}finally{L(!1)}},children:[I?(0,q.jsx)(y,{className:`text-current`}):(0,q.jsx)(p,{}),o(I?`schedules:schedulesPage.creating`:`schedules:schedulesPage.createTask`)]})]})]})}function xe({notificationTargets:e,workflows:t,defaultCwd:n,onClose:a,onCreated:o}){let{t:s}=r(),[c,l]=(0,K.useState)(``),[u,d]=(0,K.useState)(`prompt`),[f,m]=(0,K.useState)(``),[g,_]=(0,K.useState)(``),[v,x]=(0,K.useState)({}),[S,C]=(0,K.useState)(n||``),[w,j]=(0,K.useState)(`full-access`),[M,N]=(0,K.useState)(!1),[P,F]=(0,K.useState)(``);return(0,q.jsx)(k,{open:!0,onOpenChange:e=>!e&&a(),children:(0,q.jsx)(E,{size:`compact`,children:(0,q.jsxs)(`form`,{className:`grid min-w-0`,onSubmit:async t=>{t.preventDefault(),N(!0),F(``);try{let t=Object.entries(e).filter(([,e])=>e.enabled).map(([e])=>e);o(await i(`/api/schedules`,{method:`POST`,body:JSON.stringify({name:c,targetType:u,prompt:f,workflowId:g,workflowInputs:v,cwd:S,enabled:!0,frequency:`daily`,time:`09:00`,timezone:`Asia/Hong_Kong`,executionMode:w,notifications:t,notifyOn:`always`})}))}catch(e){F(e instanceof Error?e.message:String(e))}finally{N(!1)}},children:[(0,q.jsxs)(O,{children:[(0,q.jsx)(D,{children:s(`schedules:schedulesPage.newScheduledTask`)}),(0,q.jsx)(T,{children:s(`schedules:schedulesPage.youCanContinueSettingTheRunTimeAndNotificationChannelsAfterCreation`)})]}),(0,q.jsxs)(B,{variant:`control`,children:[s(`schedules:schedulesPage.taskName`),(0,q.jsx)(A,{value:c,onChange:e=>l(e.target.value),placeholder:s(`schedules:schedulesPage.forExampleDailyCodeReview`)})]}),(0,q.jsx)(me,{targetType:u,prompt:f,workflowId:g,workflowInputs:v,workflows:t,onChange:e=>{e.targetType&&d(e.targetType),e.prompt!==void 0&&m(e.prompt),e.workflowId!==void 0&&_(e.workflowId),e.workflowInputs!==void 0&&x(e.workflowInputs)}}),u===`prompt`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(he,{value:S,onChange:C}),(0,q.jsx)(de,{value:w,onChange:j})]}),P&&(0,q.jsxs)(V,{children:[(0,q.jsx)(h,{size:13}),P]}),(0,q.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2 max-[650px]:[&>button]:h-11 max-[650px]:[&>button]:flex-1`,children:[(0,q.jsx)(b,{type:`button`,variant:`secondary`,onClick:a,children:s(`schedules:schedulesPage.cancel`)}),(0,q.jsxs)(b,{type:`submit`,disabled:M||!c.trim()||!pe(u,f,g,v,t),children:[M?(0,q.jsx)(y,{className:`text-current`}):(0,q.jsx)(p,{}),s(M?`schedules:schedulesPage.creating`:`schedules:schedulesPage.createTask`)]})]})]})})})}export{ve as SchedulesPage};
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"./api-BO7LAPSQ.js";import{t as a}from"./bell-BjONAtgH.js";import{t as o}from"./bot-B3TaBp_T.js";import{t as s}from"./calendar-clock-VIxTaqqy.js";import{t as c}from"./circle-check-iEdCm3Pw.js";import{t as l}from"./folder-open-FIShC5Qk.js";import{n as u,t as d}from"./send-QxBfLFo-.js";import{t as f}from"./play-DNDjDNGn.js";import{t as p}from"./plus-fQbSqB1n.js";import{t as m}from"./trash-2-CNrPOoPR.js";import{t as h}from"./triangle-alert-CE1q54ci.js";import{t as g}from"./more-pages-D_PnxLN0.js";import{t as _}from"./switch-D_G8wFhs.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-Cvp9WD9O.js";import{a as S}from"./format-DMJQzoZ7.js";import{n as C,t as w}from"./PageState-Cz6vFMXv.js";import{a as T,i as E,l as D,s as O,t as k}from"./dialog-CUhFgsVd.js";import{t as A}from"./input-CPw-zkYh.js";import{t as j}from"./textarea-DmATpOqT.js";import{t as M}from"./pick-system-directory-B_RJmP26.js";import{WorkspacePicker as N}from"./WorkspacePicker-B9vYtfab.js";import{a as P,i as F,n as ee,o as I,r as L,s as R,t as z}from"./FeaturePage-Bkt1wWVg.js";import{n as B}from"./field-DoLEb0np.js";import{t as te}from"./StatusGlyph-1KgitlUg.js";import{i as V,n as H,s as U,t as W}from"./app-primitives-Drz_SjnR.js";import{t as G}from"./AppSelect-BGVBQRP1.js";var K=e(t(),1),q=n(),ne={browser:{name:`通知`,Icon:a},feishu:{name:`飞书`,Icon:o},weixin:{name:`微信`,Icon:u},qq:{name:`QQ`,Icon:u},telegram:{name:`Telegram`,Icon:d}},J={interval:`每隔一段时间`,daily:`每天`,weekly:`每周`,monthly:`每月`},Y={minutes:`分钟`,hours:`小时`,days:`天`},X=[...new Set([`Asia/Hong_Kong`,`UTC`,...typeof Intl.supportedValuesOf==`function`?Intl.supportedValuesOf(`timeZone`):[]])],re=[`full-access`],Z=`mt-4 border-t border-stroke-soft pt-1`,Q=`form-grid grid gap-x-3 sm:grid-cols-3`,ie=`schedule-interval-input grid grid-cols-[minmax(0,1fr)_minmax(84px,auto)] gap-1.5`,ae=`inline-grid h-8 grid-cols-2 rounded-md border border-stroke bg-chrome p-[3px] max-[650px]:h-auto max-[650px]:w-full pointer-coarse:h-auto`,oe=`inline-flex min-w-0 items-center justify-center rounded-sm border border-transparent px-3 text-sm text-content-secondary transition-colors duration-(--d-fast) hover:text-content aria-pressed:border-key-border aria-pressed:bg-key aria-pressed:font-medium aria-pressed:text-content aria-pressed:shadow-key max-[650px]:h-11 pointer-coarse:h-11`;function se({status:e}){return(0,q.jsx)(`span`,{"aria-hidden":`true`,className:`mt-px grid size-[18px] flex-none place-items-center`,children:(0,q.jsx)(te,{status:e===`running`?`run`:e===`completed`?`done`:`failed`,className:`size-3.5`})})}function ce(e){return e(`schedules:schedulesPage.fullAccessHelp`)}function le(e,t){return t(e===`daily`?`schedules:schedulesPage.daily`:e===`weekly`?`schedules:schedulesPage.weekly`:e===`monthly`?`schedules:schedulesPage.monthly`:`schedules:schedulesPage.atIntervals`)}function $(e,t){return t(e===`hours`?`schedules:schedulesPage.hours`:e===`days`?`schedules:schedulesPage.days`:`schedules:schedulesPage.minutes`)}function ue(e,t){return t(e===`feishu`?`schedules:schedulesPage.feishu`:e===`weixin`?`schedules:schedulesPage.weChat`:e===`qq`?`schedules:schedulesPage.qq`:e===`telegram`?`schedules:schedulesPage.telegram`:`schedules:schedulesPage.browserNotification`)}function de({value:e,onChange:t}){let{t:n}=r();return(0,q.jsxs)(B,{variant:`control`,children:[n(`schedules:schedulesPage.executionMode`),(0,q.jsx)(G,{value:e,onChange:e=>t(e.target.value),children:re.map(e=>(0,q.jsx)(`option`,{value:e,children:n(`schedules:schedulesPage.fullAccess`)},e))}),(0,q.jsx)(`small`,{children:ce(n)})]})}function fe(e){return Object.fromEntries((e?.inputs||[]).map(e=>[e.name,e.defaultValue??``]))}function pe(e,t,n,r,i){if(e===`prompt`)return!!t.trim();let a=i.find(e=>e.id===n);return a?a.inputs.every(e=>{let t=Object.hasOwn(r,e.name)?r[e.name]:e.defaultValue;return!e.required||t!=null&&t!==``}):!1}function me({targetType:e,prompt:t,workflowId:n,workflowInputs:i,workflows:a,onChange:o}){let{t:s}=r(),c=a.find(e=>e.id===n);return(0,q.jsxs)(`div`,{className:`grid`,children:[(0,q.jsxs)(B,{variant:`control`,children:[s(`schedules:schedulesPage.executionTarget`),(0,q.jsxs)(G,{value:e,onChange:e=>{let t=e.target.value,r=a[0];o(t===`workflow`?{targetType:t,workflowId:n||r?.id||``,workflowInputs:n?i:fe(r)}:{targetType:t})},children:[(0,q.jsx)(`option`,{value:`prompt`,children:`Prompt`}),(0,q.jsx)(`option`,{value:`workflow`,children:s(`schedules:schedulesPage.workflow`)})]})]}),e===`prompt`?(0,q.jsxs)(B,{variant:`control`,children:[`Prompt`,(0,q.jsx)(j,{value:t,onChange:e=>o({prompt:e.target.value}),placeholder:s(`schedules:schedulesPage.describeTheWorkTheAgentShouldCompleteEachTime`)})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(B,{variant:`control`,children:[s(`schedules:schedulesPage.workflow`),(0,q.jsxs)(G,{value:n,onChange:e=>{let t=a.find(t=>t.id===e.target.value);o({workflowId:e.target.value,workflowInputs:fe(t)})},children:[(0,q.jsx)(`option`,{value:``,children:s(`schedules:schedulesPage.selectPublishedWorkflow`)}),a.map(e=>(0,q.jsxs)(`option`,{value:e.id,children:[e.name,` · v`,e.revision]},e.id))]}),(0,q.jsx)(`small`,{children:c?.description||(a.length?s(`schedules:schedulesPage.workflowUsesItsOwnRuntimeSettings`):s(`schedules:schedulesPage.noPublishedWorkflows`))})]}),c?.inputs.length?(0,q.jsxs)(`div`,{className:`grid`,children:[(0,q.jsxs)(`div`,{className:`schedule-workflow-inputs-heading mt-3 flex items-baseline justify-between gap-3 max-[650px]:flex-col max-[650px]:items-start max-[650px]:gap-0.5 [&_small]:text-xs [&_small]:text-content-muted [&_strong]:text-xs [&_strong]:font-medium [&_strong]:text-content-secondary`,children:[(0,q.jsx)(`strong`,{children:s(`schedules:schedulesPage.workflowInputs`)}),(0,q.jsx)(`small`,{children:s(`schedules:schedulesPage.workflowInputsHelp`)})]}),(0,q.jsx)(`div`,{className:`schedule-workflow-inputs grid gap-x-3 sm:grid-cols-2 [&_input[type=checkbox]]:size-4 [&_input[type=checkbox]]:justify-self-end [&_input[type=checkbox]]:accent-star`,children:c.inputs.map(e=>(0,q.jsxs)(B,{variant:`control`,className:e.type===`boolean`?`grid grid-cols-[minmax(0,1fr)_auto] items-center`:void 0,children:[e.label,e.required?` *`:``,e.type===`boolean`?(0,q.jsx)(_,{checked:!!i[e.name],onCheckedChange:t=>o({workflowInputs:{...i,[e.name]:t}})}):(0,q.jsx)(A,{type:e.type===`number`?`number`:`text`,required:e.required,value:String(i[e.name]??``),onChange:t=>o({workflowInputs:{...i,[e.name]:t.target.value}})}),e.description&&(0,q.jsx)(`small`,{children:e.description})]},e.id))})]}):null]})]})}function he({value:e,onChange:t}){let{t:n}=r(),[i,a]=(0,K.useState)(``),[o,s]=(0,K.useState)(!1),c=async()=>{a(``);try{let r=await M(e,n(`common:workspacePicker.selectWorkspaceForSchedule`));r.status===`picked`?t(r.path):r.status===`unavailable`&&s(!0)}catch(e){a(e instanceof Error?e.message:String(e))}};return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(B,{variant:`control`,children:[n(`schedules:schedulesPage.workingDirectory`),(0,q.jsxs)(`span`,{className:`schedule-workspace-input grid grid-cols-[minmax(0,1fr)_auto] gap-1.5 [&_input]:min-w-0 [&_input]:font-mono`,children:[(0,q.jsx)(A,{value:e,onChange:e=>t(e.target.value),placeholder:n(`schedules:schedulesPage.enterTheProjectSAbsolutePath`)}),(0,q.jsxs)(b,{type:`button`,variant:`secondary`,className:`h-auto min-h-8`,onClick:()=>void c(),children:[(0,q.jsx)(l,{}),n(`schedules:schedulesPage.browseDirectories`)]})]}),(0,q.jsx)(`small`,{children:n(`schedules:schedulesPage.theScheduledAgentWillRunInThisDirectory`)})]}),i&&(0,q.jsxs)(V,{children:[(0,q.jsx)(h,{size:13}),i]}),(0,q.jsx)(N,{open:o,initialPath:e,description:n(`common:workspacePicker.selectWorkspaceForSchedule`),onOpenChange:s,onSelect:e=>t(e)})]})}function ge(e){return{id:e.id,name:e.name,targetType:e.targetType||`prompt`,prompt:e.prompt,workflowId:e.workflowId||``,workflowInputs:e.workflowInputs||{},enabled:e.enabled,frequency:e.frequency,intervalValue:e.intervalValue||1,intervalUnit:e.intervalUnit||`hours`,time:e.time,timezone:e.timezone,dayOfWeek:e.dayOfWeek,dayOfMonth:e.dayOfMonth,cwd:e.cwd,executionMode:e.executionMode||`full-access`,model:e.model,notifications:e.notifications||[],notifyOn:e.notifyOn||`always`}}function _e(e,t=`zh-CN`){return!e.enabled||!e.nextRunAt?t===`en-US`?`Paused`:`已暂停`:new Intl.DateTimeFormat(t,{timeZone:e.timezone,dateStyle:`medium`,timeStyle:`short`}).format(new Date(e.nextRunAt))}function ve({notify:e,onBack:t,openNotificationSettings:n,requestConfirm:a}){let{t:o,language:c}=r(),l=x(`focusSearch`),[u,d]=(0,K.useState)({tasks:[],runs:[],notificationTargets:{browser:{enabled:!1},feishu:{enabled:!1},weixin:{enabled:!1},qq:{enabled:!1},telegram:{enabled:!1}},workflows:[],defaultCwd:``}),[f,m]=(0,K.useState)(``),[h,_]=(0,K.useState)({}),[v,y]=(0,K.useState)(!0),[S,T]=(0,K.useState)(!1),[E,D]=(0,K.useState)(``),[O,k]=(0,K.useState)(!1),[A,j]=(0,K.useState)(``),[M,N]=(0,K.useState)(!1),[B,V]=(0,K.useState)(``),H=(0,K.useCallback)(async()=>{try{let e=await i(`/api/schedules`);d(e),T(!0),D(``),m(t=>e.tasks.some(e=>e.id===t)?t:``),_(t=>{let n=Object.entries(t).filter(([t])=>e.tasks.some(e=>e.id===t));return n.length===Object.keys(t).length?t:Object.fromEntries(n)})}catch(e){D(e instanceof Error?e.message:String(e))}finally{y(!1)}},[]);(0,K.useEffect)(()=>{H()},[H]),(0,K.useEffect)(()=>{let e=window.setInterval(H,u.tasks.some(e=>e.lastStatus===`running`)?2e3:1e4);return()=>window.clearInterval(e)},[u.tasks,H]);let U=u.tasks.find(e=>e.id===f),W=u.workflows||[],G=U?h[U.id]??ge(U):null,ne=(0,K.useMemo)(()=>u.runs.filter(e=>e.taskId===f).sort((e,t)=>new Date(t.startedAt).getTime()-new Date(e.startedAt).getTime()).slice(0,20),[u.runs,f]),J=e=>W.find(t=>t.id===e.workflowId)?.name||o(`schedules:schedulesPage.workflowUnavailable`),Y=B.trim().toLocaleLowerCase(),X=Y?u.tasks.filter(e=>`${e.name} ${e.targetType===`workflow`?J(e):e.prompt}`.toLocaleLowerCase().includes(Y)):u.tasks,re=u.tasks.filter(e=>e.enabled).length,Z=e=>{if(!U)return;let t=ge(U);_(n=>({...n,[t.id]:{...n[t.id]??t,...e}}))},Q=e=>{G&&Z({notifications:G.notifications.includes(e)?G.notifications.filter(t=>t!==e):[...G.notifications,e]})},ie=async()=>{if(!(!U||!G)){k(!0),j(``);try{let t=await i(`/api/schedules/${encodeURIComponent(U.id)}`,{method:`PATCH`,body:JSON.stringify(G)});d(t.state),_(e=>Object.fromEntries(Object.entries(e).filter(([e])=>e!==t.task.id))),e(o(`schedules:schedulesPage.scheduledTaskSaved`))}catch(e){j(e instanceof Error?e.message:String(e))}finally{k(!1)}}},ae=async()=>{if(U){k(!0),j(``);try{await i(`/api/schedules/${encodeURIComponent(U.id)}/run`,{method:`POST`,body:`{}`}),await H(),e(o(`schedules:schedulesPage.scheduledTaskStarted`))}catch(e){j(e instanceof Error?e.message:String(e))}finally{k(!1)}}},oe=async()=>{if(U&&await a({title:o(`schedules:schedulesPage.deleteScheduledTask`),message:o(`schedules:schedulesPage.deleteScheduledTaskNameAndItsRunHistory`,{name:U.name}),confirmLabel:o(`schedules:schedulesPage.delete`)}))try{await i(`/api/schedules/${encodeURIComponent(U.id)}`,{method:`DELETE`}),await H(),e(o(`schedules:schedulesPage.scheduledTaskDeleted`))}catch(e){j(e instanceof Error?e.message:String(e))}},se=t=>{d(t.state),m(t.task.id),e(o(`schedules:schedulesPage.scheduledTaskCreated`))},ce=e=>(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-col items-end gap-0.5 max-[650px]:flex-row max-[650px]:items-center max-[650px]:gap-2`,children:[e.lastStatus===`running`?(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-content-secondary`,children:[(0,q.jsx)(te,{status:`run`,className:`size-3.5`}),o(`schedules:schedulesPage.running`)]}):(0,q.jsx)(`span`,{className:`whitespace-nowrap`,children:e.enabled?o(`schedules:schedulesPage.nextRunTime`,{time:_e(e,c)}):o(`schedules:schedulesPage.pause`)}),e.lastStatus===`failed`&&(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-content-secondary`,children:[(0,q.jsx)(te,{status:`failed`,className:`size-3.5`}),o(`schedules:schedulesPage.lastRunFailed`)]})]}),ue=o(`navigation:navigation.schedules`);return(0,q.jsxs)(L,{title:ue,description:o(`schedules:schedulesPage.lede`),back:t&&{label:o(`navigation:sidebar.features`),ariaLabel:o(`navigation:shell.backToFeaturesLabel`),onBack:t},toolbar:(0,q.jsx)(R,{search:(0,q.jsx)(P,{id:g,value:B,onValueChange:V,placeholder:o(`navigation:pageHeader.searchPage`,{page:ue}),shortcut:l,clearLabel:o(`navigation:more.clearSearch`)}),actions:(0,q.jsxs)(b,{type:`button`,className:`h-9`,disabled:!S,onClick:()=>N(!0),children:[(0,q.jsx)(p,{}),o(`schedules:schedulesPage.newTask`)]})}),children:[v?(0,q.jsx)(C,{kind:`loading`,title:o(`schedules:schedulesPage.loadingScheduledTasks`)}):E&&!S?(0,q.jsx)(C,{kind:`error`,title:o(`schedules:schedulesPage.loadFailed`),description:E,action:(0,q.jsx)(b,{variant:`secondary`,className:`max-[650px]:h-11`,onClick:()=>{y(!0),H()},children:o(`common:pageTemplate.retry`)})}):(0,q.jsxs)(q.Fragment,{children:[(A||E)&&(0,q.jsx)(z,{children:A||E}),(0,q.jsx)(I,{title:o(`schedules:schedulesPage.tasks`),count:u.tasks.length,meta:u.tasks.length?o(`schedules:schedulesPage.enabledCount`,{count:re}):void 0,children:X.length?(0,q.jsx)(ee,{children:X.map(e=>{let t=f===e.id;return(0,q.jsx)(F,{"data-schedule-task":e.id,className:`schedule-list-item`,icon:(0,q.jsx)(s,{}),name:e.name,description:e.targetType===`workflow`?(0,q.jsx)(`span`,{className:`font-mono`,children:J(e)}):e.prompt,meta:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{children:le(e.frequency,o)}),(0,q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,q.jsx)(`span`,{className:`tabular-nums`,children:e.frequency===`interval`?`${e.intervalValue} ${$(e.intervalUnit,o)}`:e.time}),(0,q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,q.jsx)(`span`,{className:`truncate`,children:e.timezone})]}),status:ce(e),expanded:t,onExpandedChange:t=>m(t?e.id:``),toggleLabel:o(`schedules:schedulesPage.toggleTaskDetails`,{name:e.name}),detail:t&&G&&U?(0,q.jsx)(ye,{task:U,draft:G,runs:ne,saving:O,workflows:W,notificationTargets:u.notificationTargets,language:c,onUpdate:Z,onToggleNotification:Q,onRun:ae,onRemove:oe,onSave:ie,onEditTemplates:n}):null},e.id)})}):(0,q.jsx)(w,{title:u.tasks.length?o(`schedules:schedulesPage.noMatchingTasks`):o(`schedules:schedulesPage.theTimelineIsStillUnlit`),description:u.tasks.length?void 0:o(`schedules:schedulesPage.createATaskAndLetItSetOutAutomaticallyAtTheAppointedTime`)})}),!u.tasks.length&&(0,q.jsx)(`div`,{className:`mt-7`,"data-schedule-create":!0,children:(0,q.jsx)(be,{notificationTargets:u.notificationTargets,workflows:W,defaultCwd:u.defaultCwd,onCreated:se})})]}),M&&(0,q.jsx)(xe,{notificationTargets:u.notificationTargets,workflows:W,defaultCwd:u.defaultCwd,onClose:()=>N(!1),onCreated:e=>{N(!1),se(e)}})]})}function ye({task:e,draft:t,runs:n,saving:i,workflows:a,notificationTargets:o,language:s,onUpdate:l,onToggleNotification:u,onRun:d,onRemove:p,onSave:h,onEditTemplates:g}){let{t:_}=r(),x=e.lastStatus===`running`;return(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-4`,children:[(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,q.jsxs)(`label`,{className:`mr-auto inline-flex min-h-8 items-center gap-2.5 text-sm text-content max-[650px]:min-h-11`,children:[(0,q.jsx)(U,{value:t.enabled,onChange:e=>l({enabled:e}),ariaLabel:_(`schedules:schedulesPage.enableTaskName`,{name:t.name})}),t.enabled?_(`schedules:schedulesPage.enabled`):_(`schedules:schedulesPage.pause`)]}),(0,q.jsxs)(b,{variant:`secondary`,size:`sm`,className:`max-[650px]:h-11`,disabled:i||x,onClick:d,children:[x?(0,q.jsx)(y,{}):(0,q.jsx)(f,{}),_(x?`schedules:schedulesPage.running`:`schedules:schedulesPage.runNow`)]}),(0,q.jsx)(b,{variant:`ghost`,size:`icon-sm`,className:`hover:bg-danger-soft hover:text-danger max-[650px]:size-11`,title:_(`schedules:schedulesPage.deleteTask`),"aria-label":_(`schedules:schedulesPage.deleteTask`),onClick:p,children:(0,q.jsx)(m,{})})]}),(0,q.jsx)(me,{targetType:t.targetType,prompt:t.prompt,workflowId:t.workflowId,workflowInputs:t.workflowInputs,workflows:a,onChange:l}),t.targetType===`prompt`&&(0,q.jsx)(he,{value:t.cwd,onChange:e=>l({cwd:e})}),(0,q.jsx)(`div`,{className:Z,children:(0,q.jsxs)(`div`,{className:Q,children:[(0,q.jsxs)(B,{variant:`control`,children:[_(`schedules:schedulesPage.frequency`),(0,q.jsx)(G,{value:t.frequency,onChange:e=>l({frequency:e.target.value}),children:Object.keys(J).map(e=>(0,q.jsx)(`option`,{value:e,children:le(e,_)},e))})]}),t.frequency===`interval`?(0,q.jsxs)(B,{variant:`control`,children:[_(`schedules:schedulesPage.runInterval`),(0,q.jsxs)(`span`,{className:ie,children:[(0,q.jsx)(A,{type:`number`,min:`1`,value:t.intervalValue,onChange:e=>l({intervalValue:Number(e.target.value)})}),(0,q.jsx)(G,{value:t.intervalUnit,onChange:e=>l({intervalUnit:e.target.value}),children:Object.keys(Y).map(e=>(0,q.jsx)(`option`,{value:e,children:$(e,_)},e))})]})]}):(0,q.jsxs)(B,{variant:`control`,children:[_(`schedules:schedulesPage.time`),(0,q.jsx)(A,{type:`time`,className:`tabular-nums`,value:t.time,onChange:e=>l({time:e.target.value})})]}),(0,q.jsxs)(B,{variant:`control`,children:[_(`schedules:schedulesPage.timeZone`),(0,q.jsx)(G,{value:t.timezone,onChange:e=>l({timezone:e.target.value}),children:X.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))})]}),t.targetType===`prompt`&&(0,q.jsx)(de,{value:t.executionMode,onChange:e=>l({executionMode:e})})]})}),(0,q.jsxs)(`div`,{className:v(`schedule-notification-section pt-3`,Z),children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsx)(`strong`,{className:`text-sm font-medium`,children:_(`schedules:schedulesPage.notificationChannels`)}),(0,q.jsx)(`button`,{type:`button`,className:`text-button text-xs font-medium text-content-secondary underline underline-offset-2 hover:text-content max-[650px]:min-h-11`,onClick:g,children:_(`schedules:schedulesPage.editTemplates`)})]}),(0,q.jsx)(`p`,{className:`mt-0.5 text-xs text-content-muted`,children:_(`schedules:schedulesPage.notificationChannelsHelp`)}),(0,q.jsx)(`div`,{className:`schedule-notification-targets mt-2.5 grid grid-cols-[repeat(auto-fill,minmax(132px,1fr))] gap-2`,children:Object.entries(ne).map(([e,n])=>{let r=n.Icon,i=t.notifications.includes(e);return(0,q.jsxs)(`button`,{type:`button`,"aria-pressed":i,className:v(`grid min-h-[52px] grid-cols-[16px_minmax(0,1fr)_16px] items-center gap-2 rounded-md border px-2.5 py-2 text-left transition-colors duration-(--d-fast)`,i?`selected border-star-border bg-star-soft text-star-strong`:`border-stroke bg-panel text-content hover:bg-surface-subtle`),onClick:()=>u(e),children:[(0,q.jsx)(r,{className:`size-4`}),(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,q.jsx)(`strong`,{className:`truncate text-sm font-medium`,children:ue(e,_)}),(0,q.jsx)(`small`,{className:`truncate text-xs text-content-muted`,children:o[e].enabled?_(`schedules:schedulesPage.configured`):_(`schedules:schedulesPage.notConfigured`)})]}),(0,q.jsx)(c,{className:v(`size-4`,i?`text-star-strong`:`text-content-faint`)})]},e)})}),(0,q.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[(0,q.jsx)(`span`,{id:`schedule-notify-on-${e.id}`,className:`text-xs text-content-muted`,children:_(`schedules:schedulesPage.notifyWhen`)}),(0,q.jsx)(`div`,{role:`group`,"aria-labelledby":`schedule-notify-on-${e.id}`,className:v(`schedule-notification-chip`,ae),children:[`always`,`failure`].map(e=>(0,q.jsx)(`button`,{type:`button`,"aria-pressed":t.notifyOn===e,className:oe,onClick:()=>l({notifyOn:e}),children:_(e===`failure`?`schedules:schedulesPage.failuresOnly`:`schedules:schedulesPage.completionAndFailure`)},e))})]})]}),(0,q.jsxs)(`div`,{className:`form-footer mt-4 flex items-center justify-between gap-2.5 border-t border-stroke-soft pt-3 max-[650px]:flex-wrap`,children:[(0,q.jsx)(`span`,{className:`text-xs text-content-muted tabular-nums`,children:e.lastRunAt?_(`schedules:schedulesPage.lastRunTime`,{time:S(e.lastRunAt,s)}):_(`schedules:schedulesPage.nextRunTime`,{time:_e(e,s)})}),(0,q.jsxs)(b,{className:`max-[650px]:h-11 max-[650px]:w-full`,disabled:i||!pe(t.targetType,t.prompt,t.workflowId,t.workflowInputs,a),onClick:h,children:[i?(0,q.jsx)(y,{className:`text-current`}):null,_(i?`schedules:schedulesPage.saving`:`schedules:schedulesPage.saveTask`)]})]})]}),(0,q.jsxs)(`section`,{"aria-labelledby":`schedule-runs-${e.id}`,className:`min-w-0`,children:[(0,q.jsxs)(`h3`,{id:`schedule-runs-${e.id}`,className:`mb-1.5 text-[13px] font-medium text-content-muted tabular-nums`,children:[_(`schedules:schedulesPage.recentRuns`),` · `,n.length]}),n.length?(0,q.jsx)(`ul`,{className:`divide-y divide-stroke-soft overflow-hidden rounded-[var(--r-md)] border border-stroke`,children:n.map(e=>(0,q.jsxs)(`li`,{className:`schedule-run-row grid min-h-11 grid-cols-[18px_minmax(0,1fr)_auto] items-start gap-2.5 px-3 py-2.5 ${e.status}`,children:[(0,q.jsx)(se,{status:e.status}),(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,q.jsx)(`strong`,{className:`line-clamp-2 text-sm leading-5 font-medium text-content`,children:e.status===`running`?_(`schedules:schedulesPage.running2`):e.status===`completed`?e.summary||_(`schedules:schedulesPage.taskCompleted`):e.status===`interrupted`?_(`schedules:schedulesPage.taskInterrupted`):e.error||_(`schedules:schedulesPage.taskFailed`)}),(0,q.jsxs)(`small`,{className:`text-xs text-content-muted tabular-nums`,children:[S(e.startedAt,s),` ·`,` `,e.trigger===`manual`?_(`schedules:schedulesPage.manualRun`):_(`schedules:schedulesPage.scheduledTrigger`),e.durationMs?` · ${_(`schedules:schedulesPage.countSec`,{count:Math.round(e.durationMs/1e3)})}`:``]})]}),(0,q.jsx)(`em`,{className:`font-mono text-xs leading-5 text-content-secondary not-italic tabular-nums`,children:new Intl.DateTimeFormat(s,{hour:`2-digit`,minute:`2-digit`}).format(new Date(e.startedAt))})]},e.id))}):(0,q.jsx)(w,{compact:!0,title:_(`schedules:schedulesPage.noRunHistory`)})]})]})}function be({notificationTargets:e,workflows:t,defaultCwd:n,onCreated:a}){let{t:o}=r(),[s,c]=(0,K.useState)(``),[l,u]=(0,K.useState)(`prompt`),[d,f]=(0,K.useState)(``),[m,g]=(0,K.useState)(``),[_,x]=(0,K.useState)({}),[S,C]=(0,K.useState)(n||``),[w,T]=(0,K.useState)(`daily`),[E,D]=(0,K.useState)(`09:00`),[O,k]=(0,K.useState)(`Asia/Hong_Kong`),[j,M]=(0,K.useState)(1),[N,P]=(0,K.useState)(`hours`),[F,ee]=(0,K.useState)(`full-access`),[I,L]=(0,K.useState)(!1),[R,z]=(0,K.useState)(``);return(0,q.jsxs)(W,{className:`p-4 py-4`,children:[(0,q.jsx)(H,{children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h2`,{className:`text-[15px]! font-medium`,children:o(`schedules:schedulesPage.newScheduledTask`)}),(0,q.jsx)(`p`,{children:o(`schedules:schedulesPage.youCanContinueEditingTheRunTimeAndNotificationChannelsAfterCreation`)})]})}),(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.taskName`),(0,q.jsx)(A,{value:s,onChange:e=>c(e.target.value),placeholder:o(`schedules:schedulesPage.forExampleDailyCodeReview`)})]}),(0,q.jsx)(me,{targetType:l,prompt:d,workflowId:m,workflowInputs:_,workflows:t,onChange:e=>{e.targetType&&u(e.targetType),e.prompt!==void 0&&f(e.prompt),e.workflowId!==void 0&&g(e.workflowId),e.workflowInputs!==void 0&&x(e.workflowInputs)}}),l===`prompt`&&(0,q.jsx)(he,{value:S,onChange:C}),(0,q.jsxs)(`div`,{className:v(Z,Q),children:[(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.frequency`),(0,q.jsx)(G,{value:w,onChange:e=>T(e.target.value),children:Object.keys(J).map(e=>(0,q.jsx)(`option`,{value:e,children:le(e,o)},e))})]}),w===`interval`?(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.runInterval`),(0,q.jsxs)(`span`,{className:ie,children:[(0,q.jsx)(A,{type:`number`,min:`1`,value:j,onChange:e=>M(Number(e.target.value))}),(0,q.jsx)(G,{value:N,onChange:e=>P(e.target.value),children:Object.keys(Y).map(e=>(0,q.jsx)(`option`,{value:e,children:$(e,o)},e))})]})]}):(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.time`),(0,q.jsx)(A,{type:`time`,className:`tabular-nums`,value:E,onChange:e=>D(e.target.value)})]}),(0,q.jsxs)(B,{variant:`control`,children:[o(`schedules:schedulesPage.timeZone`),(0,q.jsx)(G,{value:O,onChange:e=>k(e.target.value),children:X.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))})]}),l===`prompt`&&(0,q.jsx)(de,{value:F,onChange:ee})]}),R&&(0,q.jsxs)(V,{children:[(0,q.jsx)(h,{size:13}),R]}),(0,q.jsxs)(`div`,{className:`form-footer mt-4 flex items-center justify-between gap-2.5 border-t border-stroke-soft pt-3 max-[650px]:flex-wrap`,children:[(0,q.jsx)(`span`,{className:`text-xs text-content-muted`,children:o(`schedules:schedulesPage.enabledAutomaticallyAfterCreation`)}),(0,q.jsxs)(b,{className:`max-[650px]:h-11 max-[650px]:w-full`,disabled:I||!s.trim()||!pe(l,d,m,_,t),onClick:async()=>{L(!0),z(``);try{let t=Object.entries(e).filter(([,e])=>e.enabled).map(([e])=>e);a(await i(`/api/schedules`,{method:`POST`,body:JSON.stringify({name:s,targetType:l,prompt:d,workflowId:m,workflowInputs:_,cwd:S,enabled:!0,frequency:w,time:E,timezone:O,intervalValue:j,intervalUnit:N,executionMode:F,notifications:t,notifyOn:`always`})}))}catch(e){z(e instanceof Error?e.message:String(e))}finally{L(!1)}},children:[I?(0,q.jsx)(y,{className:`text-current`}):(0,q.jsx)(p,{}),o(I?`schedules:schedulesPage.creating`:`schedules:schedulesPage.createTask`)]})]})]})}function xe({notificationTargets:e,workflows:t,defaultCwd:n,onClose:a,onCreated:o}){let{t:s}=r(),[c,l]=(0,K.useState)(``),[u,d]=(0,K.useState)(`prompt`),[f,m]=(0,K.useState)(``),[g,_]=(0,K.useState)(``),[v,x]=(0,K.useState)({}),[S,C]=(0,K.useState)(n||``),[w,j]=(0,K.useState)(`full-access`),[M,N]=(0,K.useState)(!1),[P,F]=(0,K.useState)(``);return(0,q.jsx)(k,{open:!0,onOpenChange:e=>!e&&a(),children:(0,q.jsx)(E,{size:`compact`,children:(0,q.jsxs)(`form`,{className:`grid min-w-0`,onSubmit:async t=>{t.preventDefault(),N(!0),F(``);try{let t=Object.entries(e).filter(([,e])=>e.enabled).map(([e])=>e);o(await i(`/api/schedules`,{method:`POST`,body:JSON.stringify({name:c,targetType:u,prompt:f,workflowId:g,workflowInputs:v,cwd:S,enabled:!0,frequency:`daily`,time:`09:00`,timezone:`Asia/Hong_Kong`,executionMode:w,notifications:t,notifyOn:`always`})}))}catch(e){F(e instanceof Error?e.message:String(e))}finally{N(!1)}},children:[(0,q.jsxs)(O,{children:[(0,q.jsx)(D,{children:s(`schedules:schedulesPage.newScheduledTask`)}),(0,q.jsx)(T,{children:s(`schedules:schedulesPage.youCanContinueSettingTheRunTimeAndNotificationChannelsAfterCreation`)})]}),(0,q.jsxs)(B,{variant:`control`,children:[s(`schedules:schedulesPage.taskName`),(0,q.jsx)(A,{value:c,onChange:e=>l(e.target.value),placeholder:s(`schedules:schedulesPage.forExampleDailyCodeReview`)})]}),(0,q.jsx)(me,{targetType:u,prompt:f,workflowId:g,workflowInputs:v,workflows:t,onChange:e=>{e.targetType&&d(e.targetType),e.prompt!==void 0&&m(e.prompt),e.workflowId!==void 0&&_(e.workflowId),e.workflowInputs!==void 0&&x(e.workflowInputs)}}),u===`prompt`&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(he,{value:S,onChange:C}),(0,q.jsx)(de,{value:w,onChange:j})]}),P&&(0,q.jsxs)(V,{children:[(0,q.jsx)(h,{size:13}),P]}),(0,q.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2 max-[650px]:[&>button]:h-11 max-[650px]:[&>button]:flex-1`,children:[(0,q.jsx)(b,{type:`button`,variant:`secondary`,onClick:a,children:s(`schedules:schedulesPage.cancel`)}),(0,q.jsxs)(b,{type:`submit`,disabled:M||!c.trim()||!pe(u,f,g,v,t),children:[M?(0,q.jsx)(y,{className:`text-current`}):(0,q.jsx)(p,{}),s(M?`schedules:schedulesPage.creating`:`schedules:schedulesPage.createTask`)]})]})]})})})}export{ve as SchedulesPage};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GitDiffViewer-4ea3jm5E.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-DUgHBsG5.js","assets/i18n-BMMXA_dY.js","assets/vendor-router-CSN_DGvx.js","assets/index-Ciq5zG6s.js","assets/index-CfTBR7Rs.css","assets/storage-BY6wEHPw.js","assets/vendor-state-GkUciC5H.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/x-07u4-129.js","assets/utils-C8uzG5AZ.js","assets/vendor-ui-DvrYggeS.js","assets/button-CCcCN8tE.js","assets/dist-41X0pdUs.js","assets/events-CsDpIEpa.js","assets/esm-DCV8yILT.js","assets/TaskTerminalView-DZkPrfzt.js","assets/square-terminal-BVG6cUT1.js","assets/square-bHHVTT3G.js","assets/PageState-Cz6vFMXv.js","assets/AppSelect-BGVBQRP1.js","assets/use-mobile-DauOEda6.js","assets/select-DD_WO-gs.js","assets/check-2vYc6QaP.js","assets/chevron-down-CxtxIjiP.js","assets/chevron-up-D_ZcXjqr.js","assets/dist-V8chnW6-.js","assets/dist-BsRXXcSL.js","assets/dist-BiRPwy4W.js","assets/dist-DzGQ7sLi.js","assets/es2015-DTZdOI9P.js","assets/dist-BRjj4UeB.js","assets/dist-OB2r6Xsr.js","assets/terminal-context-aIsIJPn8.js","assets/TaskTerminalView-BrP-ENHg.css","assets/TaskProcessesPane-Dpxwl38Z.js","assets/chevron-right-C3t2Rckj.js","assets/checkbox-BrEHgFV0.js","assets/FileAttachmentPreview-cYRvzbsf.js","assets/api-PMkeVoki.js","assets/abort-signal-f4JsiYKX.js","assets/download-BCfIiuaL.js","assets/file-Bllajneu.js","assets/refresh-cw-TbWxTY4K.js","assets/tabs-DsgBuvJv.js","assets/dist-BaBySQmo.js","assets/format-DMJQzoZ7.js","assets/dialog-DdbSm1ZL.js","assets/dist-BHkR6BLP.js","assets/MarkdownMessage-BSTx0KMg.js","assets/vendor-markdown-plugins-CT5L3KA9.js","assets/vendor-shiki-runtime-DM7fm4Bl.js","assets/vendor-markdown-plugins-DEcVZfaU.css","assets/vendor-markdown-CT6Z4fh8.js","assets/copy-DHmIFc52.js","assets/route-context-DvWDul4T.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-DUgHBsG5.js";import{t as a}from"./useQuery-DdcpUQhO.js";import{t as o}from"./createLucideIcon-Cd-3GVxJ.js";import{t as s}from"./arrow-up-DST6-qVQ.js";import{t as c}from"./check-2vYc6QaP.js";import{t as l}from"./chevron-down-CxtxIjiP.js";import{t as u}from"./chevron-right-C3t2Rckj.js";import{t as d}from"./earth-Ddy13fHh.js";import{t as f}from"./external-link-CEQqPcqc.js";import{i as p}from"./GitDiffViewer-4ea3jm5E.js";import{t as m}from"./file-Bllajneu.js";import{a as h,i as g,k as _,l as v,m as y,o as b,p as x,r as S}from"./side-chat-context-DaUmbt1Y.js";import{t as C}from"./git-branch-N7LGjtzt.js";import{t as w}from"./image-BY_c3FYU.js";import{t as T}from"./link-2-mgasYn21.js";import{t as E}from"./list-checks-B5Jl4aiO.js";import{t as D}from"./message-square-SKjZyY3v.js";import{t as O}from"./refresh-cw-TbWxTY4K.js";import{t as k}from"./square-bHHVTT3G.js";import"./collapsible-DMaUQRX4.js";import"./tooltip-D4MFbqcG.js";import{t as A}from"./utils-C8uzG5AZ.js";import{n as j,t as M}from"./button-CCcCN8tE.js";import{c as N,r as P}from"./shortcuts-CD4vslwQ.js";import{t as F}from"./chat-api-Kcrk_K91.js";import{n as I,t as L}from"./PageState-Cz6vFMXv.js";import{t as R}from"./input-CPw-zkYh.js";import{n as z}from"./session-change-summary-api-p0LGuByB.js";import{t as B}from"./AppSelect-BGVBQRP1.js";import{t as V}from"./web-preview-LghC_QcR.js";import{o as H}from"./session-tree-summary-DEQsXexZ.js";var U=o(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),W=o(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),G=e(n(),1),K=r(),q={completed:`completed`,in_progress:`running`,blocked:`blocked`,pending:`pending`};function J(e){let t=new Map(e.map(e=>[String(e.id||``),e])),n=e=>e?.status===`completed`;return e.map(e=>{let r=String(e.id||``),i=(Array.isArray(e.dependsOn)?e.dependsOn:[]).map(e=>t.get(String(e))).filter(e=>!!e&&!n(e)),a=e.status!==`completed`&&(e.status===`blocked`||i.length>0);return{...e,id:r,blocked:a,blockedBy:i}})}function Y({status:e,t}){let n=t(e===`completed`?`chat:planBoard.completed`:e===`in_progress`?`chat:planBoard.inProgress`:e===`blocked`?`chat:planBoard.blocked`:`chat:planBoard.pending`);return(0,K.jsxs)(`span`,{className:`plan-board-status grid size-[18px] flex-none place-items-center rounded-xs text-content-muted [&.completed]:bg-success-soft [&.completed]:text-success [&.running]:text-accent-fg [&.blocked]:bg-danger-soft [&.blocked]:text-danger ${q[String(e)]||`pending`}`,title:n,children:[e===`completed`?(0,K.jsx)(c,{size:12,strokeWidth:2.25}):e===`in_progress`?(0,K.jsx)(j,{className:`size-3.5`}):e===`blocked`?(0,K.jsx)(W,{size:11,strokeWidth:2}):(0,K.jsx)(U,{size:11,strokeWidth:2}),(0,K.jsx)(`span`,{className:`sr-only`,children:n})]})}function X({item:e,current:t,t:n}){return(0,K.jsxs)(`li`,{className:`plan-board-row flex min-w-0 flex-col gap-[2px] rounded-sm px-[6px] py-[6px] aria-[current=step]:bg-surface-subtle ${e.blocked?`blocked`:``}`,"aria-current":t?`step`:void 0,"data-pisper-plan-current":t?`true`:void 0,"data-pisper-plan-id":e.id,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-[10px]`,children:[(0,K.jsx)(Y,{status:e.blocked?`blocked`:e.status,t:n}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] ${e.status===`completed`?`text-content-muted`:`text-foreground`}`,title:e.title,children:e.title}),e.assignee?(0,K.jsxs)(`span`,{className:`inline-flex max-w-[40%] flex-none items-center gap-[4px] truncate rounded-xs border border-stroke px-[6px] font-mono text-[12px] leading-[18px] text-content-secondary`,title:n(`chat:planBoard.assignedTo`,{name:e.assignee}),children:[(0,K.jsx)(_,{size:11,className:`flex-none`}),e.assignee]}):e.status!==`completed`&&(0,K.jsx)(`span`,{className:`flex-none text-[12px] text-content-muted`,children:n(`chat:planBoard.unassigned`)})]}),e.blockedBy.length>0&&(0,K.jsxs)(`div`,{className:`inline-flex min-w-0 items-center gap-[5px] pl-[28px] text-[12px] text-content-muted`,children:[(0,K.jsx)(W,{size:11,className:`flex-none`}),(0,K.jsx)(`span`,{className:`truncate`,children:n(`chat:planBoard.waitingFor`,{tasks:e.blockedBy.map(e=>e.title||e.id).join(` · `)})})]})]})}function ee({plan:e,header:t,collapsible:n=!1}){let{t:r}=i(),a=(0,G.useRef)(null),[o,s]=(0,G.useState)(!0),c=e?.items||[],u=J(c),d=u.filter(e=>e.status===`completed`).length,f=u.filter(e=>e.status===`in_progress`&&!e.blocked).length,p=u.filter(e=>e.blocked).length,m=u.find(e=>e.status===`in_progress`&&!e.blocked)?.id??u.find(e=>e.blocked)?.id??u.find(e=>e.status===`pending`)?.id??u.at(-1)?.id;if((0,G.useLayoutEffect)(()=>{if(n&&!o)return;let e=a.current,t=e?.querySelector(`[data-pisper-plan-current="true"]`);if(!e||!t)return;let r=e.getBoundingClientRect(),i=t.getBoundingClientRect();i.top<r.top?e.scrollTop-=r.top-i.top:i.bottom>r.bottom&&(e.scrollTop+=i.bottom-r.bottom)},[n,m,o,u.length]),!c.length)return null;let h=u.find(e=>e.id===m),g=(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(E,{className:`flex-none text-content-muted`,size:15}),(0,K.jsx)(`strong`,{className:`tabular-nums`,children:r(`chat:planBoard.progress`,{completed:d,total:c.length})}),h?(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-content-secondary`,title:h.title,children:h.title}):null,(0,K.jsxs)(`span`,{className:`plan-board-counts inline-flex flex-none items-center gap-[8px] text-content-muted tabular-nums @max-[470px]:hidden`,children:[f>0&&(0,K.jsx)(`span`,{children:r(`chat:planBoard.countInProgress`,{count:f})}),p>0&&(0,K.jsx)(`span`,{className:`blocked text-danger`,children:r(`chat:planBoard.countBlocked`,{count:p})})]}),t,n?(0,K.jsx)(l,{className:`plan-board-chevron flex-none text-content-muted transition-transform duration-(--d-fast) ease-precise [.plan-board-collapsible[open]_&]:rotate-180`,size:15}):null]}),_=(0,K.jsx)(`ul`,{ref:a,className:`plan-board-list [.plan-board-collapsible_>_&]:border-t [.plan-board-collapsible_>_&]:border-stroke-soft [.plan-board-collapsible_>_&]:p-[6px_8px_8px] m-0 flex list-none flex-col gap-[1px] pt-[6px]${u.length>4?` is-scrollable [.session-plan-popover_.plan-board-list&]:[block-size:min(250px,38dvh)] [.plan-board-list&]:[block-size:min(220px,34dvh)] [.plan-board-list&]:overflow-y-auto [.plan-board-list&]:[overscroll-behavior:contain] [.plan-board-list&]:pr-[4px] [.plan-board-list&]:[scrollbar-gutter:stable] [.plan-board-list&:focus-visible]:outline-2 [.plan-board-list&:focus-visible]:outline-focus [.plan-board-list&:focus-visible]:outline-offset-2`:``}`,tabIndex:u.length>4?0:void 0,children:u.map(e=>(0,K.jsx)(X,{item:e,current:e.id===m,t:r},e.id))});return n?(0,K.jsxs)(`details`,{className:`plan-board plan-board-collapsible m-[0_auto] flex w-[min(900px,100%)] flex-col overflow-hidden rounded-md border border-stroke bg-panel !p-0 [.session-plan-popover_&]:w-full [.session-plan-popover_&]:border-0 [.session-plan-popover_&]:bg-transparent`,open:o,onToggle:e=>s(e.currentTarget.open),children:[(0,K.jsx)(`summary`,{className:`plan-board-summary flex min-w-0 items-center gap-[8px] border-b border-stroke-soft pb-[8px] text-[13px] text-content-secondary [&_strong]:flex-none [&_strong]:font-medium [&_strong]:text-foreground [.plan-board-collapsible_>_&]:min-h-[34px] [.plan-board-collapsible_>_&]:cursor-pointer [.plan-board-collapsible_>_&]:list-none [.plan-board-collapsible_>_&]:border-0 [.plan-board-collapsible_>_&]:p-[6px_12px] max-[650px]:[.plan-board-collapsible_>_&]:min-h-11 [.plan-board-collapsible_>_&::-webkit-details-marker]:hidden [.plan-board-collapsible_>_&:hover]:bg-surface-subtle [.plan-board-collapsible_>_&:focus-visible]:outline-2 [.plan-board-collapsible_>_&:focus-visible]:-outline-offset-2 [.plan-board-collapsible_>_&:focus-visible]:outline-focus`,"aria-label":r(`chat:planBoard.toggleAriaLabel`),children:g}),_]}):(0,K.jsxs)(`section`,{className:`plan-board m-[0_auto] flex w-[min(900px,100%)] flex-col rounded-md border border-stroke bg-panel p-[10px_12px] [.session-plan-popover_&]:w-full [.session-plan-popover_&]:border-0 [.session-plan-popover_&]:bg-transparent [.session-plan-popover_&]:p-0`,"aria-label":r(`chat:planBoard.ariaLabel`),children:[(0,K.jsx)(`div`,{className:`plan-board-summary flex min-w-0 items-center gap-[8px] border-b border-stroke-soft pb-[8px] text-[13px] text-content-secondary [&_strong]:flex-none [&_strong]:font-medium [&_strong]:text-foreground [.plan-board-collapsible_>_&]:min-h-[34px] [.plan-board-collapsible_>_&]:cursor-pointer [.plan-board-collapsible_>_&]:list-none [.plan-board-collapsible_>_&]:border-0 [.plan-board-collapsible_>_&]:p-[6px_12px] max-[650px]:[.plan-board-collapsible_>_&]:min-h-11 [.plan-board-collapsible_>_&::-webkit-details-marker]:hidden [.plan-board-collapsible_>_&:hover]:bg-surface-subtle [.plan-board-collapsible_>_&:focus-visible]:outline-2 [.plan-board-collapsible_>_&:focus-visible]:-outline-offset-2 [.plan-board-collapsible_>_&:focus-visible]:outline-focus`,children:g}),_]})}var te=(0,G.memo)(ee),ne=(0,G.lazy)(()=>t(()=>import(`./GitDiffViewer-4ea3jm5E.js`).then(e=>e.n).then(e=>({default:e.InlineGitDiff})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])));function Z({sessionId:e,path:t,scope:n,revision:r=0,position:o,onReading:s,mode:c,fill:l=!1}){let{t:u}=i(),d=a({queryKey:[`task-file-diff`,e,n,t,r],queryFn:({signal:r})=>n===`project`?F.getFileDiff(e,t,{signal:r}):F.getSessionFileChangeDiff(e,t,{signal:r})});return d.isPending?(0,K.jsxs)(`p`,{role:`status`,className:`flex items-center gap-2 px-3 py-2.5 text-xs text-content-muted`,children:[(0,K.jsx)(j,{className:`size-3.5`}),u(`chat:focusSession.gitLoading`)]}):d.isError?(0,K.jsxs)(`div`,{className:`px-3 py-2.5`,children:[(0,K.jsx)(`p`,{role:`alert`,className:`text-xs text-danger`,children:d.error.message}),(0,K.jsx)(M,{variant:`ghost`,size:`sm`,onClick:()=>void d.refetch(),children:u(`chat:chatMessage.filePreviewRetry`)})]}):(0,K.jsx)(G.Suspense,{fallback:null,children:(0,K.jsx)(ne,{position:o,onReading:s,diff:d.data.diff,truncated:d.data.diffTruncated,mode:c,fill:l})})}function re({sessionId:e,cwd:t,streaming:n,view:r,onViewChange:o}){let{t:s}=i(),c=a({queryKey:[`task-project-changes`,e,t,n],queryFn:({signal:t})=>F.getVcsChanges(e,{signal:t})}),l=p(r.reading?.list,e=>o({reading:{...r.reading,list:e}})),d=(0,G.useMemo)(()=>x(c.data?.diff||``,c.data?.files.map(e=>e.path)||[],c.data?.diffTruncated),[c.data]),f=r.expandedFiles.filter(e=>c.data&&!c.data.files.some(t=>t.path===e)),m=c.error?.message||c.data?.error,h=c.data?.files||[];return(0,K.jsxs)(`section`,{"aria-label":s(`chat:workbench.projectChanges`),className:`flex min-h-0 flex-1 flex-col`,children:[(0,K.jsxs)(`header`,{className:`flex min-h-10 min-w-0 shrink-0 items-center gap-2 border-b border-stroke-soft pr-1.5 pl-3`,children:[(0,K.jsx)(`h2`,{className:`min-w-0 flex-1 truncate text-xs font-medium tracking-[.02em] text-content-muted`,children:s(`chat:workbench.projectChanges`)}),c.data?.isRepo&&!m&&(0,K.jsxs)(`span`,{className:`shrink-0 font-mono text-xs tabular-nums`,children:[(0,K.jsxs)(`span`,{className:`text-success`,children:[`+`,d.added]}),` `,(0,K.jsxs)(`span`,{className:`text-danger`,children:[`−`,d.removed]})]}),(0,K.jsx)(M,{variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,"aria-label":s(`chat:focusSession.gitRefresh`),disabled:c.isFetching,onClick:()=>void c.refetch(),children:(0,K.jsx)(O,{size:15,className:c.isFetching?`animate-spin`:void 0})})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b border-stroke-soft px-3 py-2.5`,children:[(0,K.jsx)(`p`,{className:`text-xs leading-relaxed text-content-muted`,children:s(`chat:workbench.projectScope`)}),(0,K.jsxs)(`p`,{className:`flex min-w-0 items-center gap-1.5 text-xs`,title:t,children:[c.data?.branch&&(0,K.jsxs)(`span`,{className:`inline-flex h-5.5 max-w-[45%] shrink-0 items-center gap-1 rounded-xs border border-stroke px-1.5 font-mono text-content-secondary`,children:[(0,K.jsx)(C,{size:12,className:`shrink-0`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`truncate`,children:c.data.branch})]}),(0,K.jsx)(`span`,{className:`min-w-0 truncate font-mono text-content-muted`,children:t})]}),(0,K.jsxs)(`div`,{className:`flex gap-1`,children:[(0,K.jsx)(M,{variant:`ghost`,size:`sm`,disabled:!h.length||!!m,onClick:()=>o({expandedFiles:h.map(e=>e.path)}),children:s(`chat:workbench.expandAll`)}),(0,K.jsx)(M,{variant:`ghost`,size:`sm`,onClick:()=>o({expandedFiles:[]}),children:s(`chat:workbench.collapseAll`)})]})]}),!c.isFetching&&!m&&f.map(e=>(0,K.jsx)(`p`,{role:`status`,className:`break-all px-3 pt-2 text-xs text-content-muted`,children:s(`chat:workbench.fileNoLongerChanged`,{path:e})},e)),c.isPending?(0,K.jsx)(I,{kind:`loading`,title:s(`chat:focusSession.gitLoading`)}):m?(0,K.jsx)(`p`,{role:`alert`,className:`p-3 text-sm text-danger`,children:m}):c.data?.isRepo?h.length?(0,K.jsx)(`div`,{ref:l.ref,className:`min-h-0 flex-1 overflow-y-auto`,children:h.map(t=>{let n=r.expandedFiles.includes(t.path);return(0,K.jsxs)(`article`,{className:`border-b border-stroke-soft`,children:[(0,K.jsxs)(`button`,{"aria-expanded":n,title:t.path,className:`flex min-h-9 w-full min-w-0 items-center gap-2 pr-3 pl-2 text-left text-sm hover:bg-surface-subtle focus-visible:-outline-offset-2 max-[650px]:min-h-11 pointer-coarse:min-h-11 ${n?`bg-surface-subtle`:``}`,onClick:()=>o({expandedFiles:n?r.expandedFiles.filter(e=>e!==t.path):[...r.expandedFiles,t.path]}),children:[(0,K.jsx)(u,{size:14,className:`shrink-0 text-content-muted transition-transform duration-(--d-fast) ${n?`rotate-90`:``}`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs`,children:t.path}),(0,K.jsx)(`span`,{className:`min-w-4 shrink-0 text-center font-mono text-xs font-medium text-content-secondary`,children:t.status}),Object.hasOwn(d.files,t.path)&&(0,K.jsxs)(`span`,{className:`shrink-0 font-mono text-xs tabular-nums`,children:[(0,K.jsxs)(`span`,{className:`text-success`,children:[`+`,d.files[t.path].added]}),` `,(0,K.jsxs)(`span`,{className:`text-danger`,children:[`−`,d.files[t.path].removed]})]})]}),n&&(0,K.jsx)(`p`,{className:`break-all px-3 py-1.5 font-mono text-xs text-content-muted`,children:t.path}),n&&(0,K.jsx)(Z,{sessionId:e,path:t.path,scope:`project`,position:r.reading?.[t.path],onReading:e=>o({reading:{...r.reading,[t.path]:e}}),revision:c.dataUpdatedAt})]},t.path)})}):(0,K.jsx)(L,{compact:!0,title:s(`chat:focusSession.fileChangesEmpty`)}):(0,K.jsx)(L,{compact:!0,title:s(`chat:workbench.notRepository`)})]})}function Q(e){return e instanceof Error?e.message:String(e)}function ie({sessionId:e,streaming:t,requestConfirm:n}){let{t:r}=i(),[a,o]=(0,G.useState)(0),[s,c]=(0,G.useState)(0),[l,u]=(0,G.useState)(null),[d,f]=(0,G.useState)(!0),[p,m]=(0,G.useState)(``),[h,g]=(0,G.useState)(``),[_,v]=(0,G.useState)(``),[y,b]=(0,G.useState)(null),[x,S]=(0,G.useState)(null),[C,w]=(0,G.useState)(null),T=(0,G.useRef)(!1),E=(0,G.useRef)(0),D=(0,G.useRef)(0),O=(0,G.useRef)(!0),k=(0,G.useRef)(!1),A=(0,G.useRef)(t);return(0,G.useLayoutEffect)(()=>{A.current=t},[t]),(0,G.useLayoutEffect)(()=>(T.current=!0,()=>{T.current=!1,E.current+=1,D.current+=1}),[]),(0,G.useEffect)(()=>{let t=++E.current;return D.current+=1,S(null),w(null),O.current=!0,f(!0),m(``),F.getSessionFileChanges(e).then(e=>{T.current&&t===E.current&&(u(e),c(e=>e+1))},e=>{T.current&&t===E.current&&m(Q(e))}).finally(()=>{T.current&&t===E.current&&(O.current=!1,f(!1))}),()=>{E.current+=1}},[a,e,t]),{changes:l,loading:d,error:p,actionError:h,notice:_,running:y,diff:x,setDiff:S,diffLoading:C,snapshotRevision:s,writesDisabled:d||t||!!y||!!p||!l,pendingCount:l?.summary.pending||0,reversibleCount:l?.files.filter(e=>e.canRevert&&!e.reverted).length||0,displayedError:h||p,viewDiff:async t=>{if(k.current||O.current)return;let n=++D.current;w(t),g(``);try{let i=await F.getSessionFileChangeDiff(e,t);if(!T.current||n!==D.current)return;if(!i.diff?.trim()){g(r(`chat:focusSession.fileChangesNoSnapshot`));return}S({diff:i.diff,truncated:!!i.diffTruncated})}catch(e){T.current&&n===D.current&&g(Q(e))}finally{T.current&&n===D.current&&w(null)}},runAction:async t=>{if(!T.current||k.current||O.current||A.current||!l||p||!l.files.filter(e=>t.kind===`approve`?e.pending&&!e.approved&&!e.reverted:e.canRevert&&!e.reverted).some(e=>t.path===void 0||e.path===t.path))return;k.current=!0,b(t),g(``),v(``);let i=++E.current;D.current+=1,S(null),w(null);let a=!1;try{if(t.kind===`revert`&&!await n({title:t.path?r(`chat:focusSession.fileChangesRevertFile`):r(`chat:focusSession.fileChangesRevertAll`),message:t.path?r(`chat:focusSession.fileChangesRevertFileDescription`,{path:t.path}):r(`chat:focusSession.fileChangesRevertAllDescription`),confirmLabel:r(`chat:focusSession.fileChangesConfirmRevert`),tone:`danger`})||!T.current||A.current||O.current||i!==E.current)return;a=!0;let o=t.kind===`approve`?await F.approveSessionFileChanges(e,t.path):await F.revertSessionFileChanges(e,t.path);if(z(e),!T.current||i!==E.current)return;u(o),t.kind===`approve`?v(t.path?r(`chat:focusSession.fileChangesApproved`):r(`chat:focusSession.fileChangesApproveDone`)):o.reverted?t.path===void 0&&o.files.some(e=>e.pending)?v(r(`chat:focusSession.fileChangesRevertPartial`,{count:o.reverted})):v(r(`chat:focusSession.fileChangesRevertDone`)):v(r(`chat:focusSession.fileChangesRevertUnavailable`))}catch(e){T.current&&i===E.current&&g(Q(e))}finally{k.current=!1,T.current&&(b(null),a&&(O.current=!0,f(!0),o(e=>e+1)))}},refresh:()=>{O.current=!0,f(!0),g(``),o(e=>e+1)}}}var ae=(0,G.lazy)(()=>t(()=>import(`./TaskTerminalView-DZkPrfzt.js`).then(e=>({default:e.TaskTerminalView})),__vite__mapDeps([18,1,2,3,4,5,6,7,8,9,19,10,20,14,13,15,12,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),oe=(0,G.lazy)(()=>t(()=>import(`./TaskProcessesPane-Dpxwl38Z.js`).then(e=>({default:e.TaskProcessesPane})),__vite__mapDeps([37,1,2,3,4,5,6,7,8,9,38,10,19,20,39,25,15,29,34,12,13,14,21,22,23,24,26,27,28,30,31,32,33,35]))),se=(0,G.lazy)(()=>t(()=>import(`./FileAttachmentPreview-cYRvzbsf.js`).then(e=>e.n).then(e=>({default:e.FileAttachmentPreview})),__vite__mapDeps([40,1,2,3,4,5,6,7,8,9,41,42,43,10,44,45,11,46,13,29,15,31,47,12,14,48,49,50,32,51,52,53,54,55,25,56,57])));function ce({sources:e,view:t,onViewChange:n}){let{t:r}=i(),a=p(t.reading?.list,e=>n({reading:{...t.reading,list:e}})),o=(0,G.useContext)(y),[s,c]=(0,G.useState)(``),l=(0,G.useRef)(null),d=e.find(e=>e.id===s),f=e.filter(e=>(!t.filter||e.kind===t.filter)&&e.name.toLocaleLowerCase().includes(t.query.toLocaleLowerCase()));return(0,K.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col`,"aria-label":r(`chat:workbench.sources`),children:[(0,K.jsxs)(`header`,{className:`flex min-h-10 min-w-0 shrink-0 items-center gap-2 border-b border-stroke-soft pr-1.5 pl-3`,children:[(0,K.jsxs)(`h2`,{className:`min-w-0 flex-1 truncate text-xs font-medium tracking-[.02em] text-content-muted`,children:[r(`chat:workbench.sources`),(0,K.jsx)(`span`,{className:`ml-1.5 tabular-nums`,children:e.length})]}),(0,K.jsx)(`span`,{className:`shrink-0 text-xs text-content-muted`,children:r(`chat:workbench.addSource`)}),(0,K.jsx)(`div`,{ref:o?.setSourceActionHost,className:`grid min-h-7 min-w-7 place-items-center`})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b border-stroke-soft px-3 py-2.5`,children:[(0,K.jsx)(`p`,{className:`text-xs leading-relaxed text-content-muted`,children:r(`chat:workbench.sourcesScope`)}),(0,K.jsxs)(`div`,{className:`flex min-w-0 gap-2`,children:[(0,K.jsx)(R,{className:`min-w-0 flex-1`,"aria-label":r(`chat:workbench.searchSources`),placeholder:r(`chat:workbench.searchSources`),value:t.query,onChange:e=>n({query:e.target.value})}),(0,K.jsxs)(B,{"aria-label":r(`chat:workbench.sourceType`),className:`w-auto max-w-[45%] shrink-0`,value:t.filter,onChange:e=>n({filter:e.target.value}),children:[(0,K.jsx)(`option`,{value:``,children:r(`chat:workbench.allTypes`)}),(0,K.jsx)(`option`,{value:`image`,children:r(`chat:workbench.images`)}),(0,K.jsx)(`option`,{value:`text`,children:r(`chat:workbench.text`)}),(0,K.jsx)(`option`,{value:`file`,children:r(`chat:workbench.files`)})]})]})]}),(0,K.jsxs)(`div`,{ref:a.ref,className:`min-h-0 flex-1 overflow-y-auto`,children:[!f.length&&(0,K.jsx)(L,{compact:!0,title:e.length?r(`chat:workbench.noMatches`):r(`chat:workbench.noSources`)}),f.map(e=>{let i=t.selectedSourceId===e.id,a=e.kind===`image`?w:e.method===`path`?T:m;return(0,K.jsxs)(`article`,{className:`border-b border-stroke-soft`,children:[(0,K.jsxs)(`button`,{className:`flex min-h-9 w-full min-w-0 items-center gap-2 px-2 text-left hover:bg-surface-subtle focus-visible:-outline-offset-2 max-[650px]:min-h-11 pointer-coarse:min-h-11 ${i?`bg-surface-subtle`:``}`,"aria-expanded":i,onClick:()=>n({selectedSourceId:i?``:e.id}),children:[(0,K.jsx)(u,{size:14,className:`shrink-0 text-content-muted transition-transform duration-(--d-fast) ${i?`rotate-90`:``}`}),(0,K.jsx)(a,{className:`size-3.5 shrink-0 text-content-muted`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs`,children:e.name||r(`chat:chatMessage.fileAttachment`)})]}),i&&(0,K.jsxs)(`div`,{className:`space-y-1.5 border-t border-stroke-soft bg-code py-2.5 pr-3 pl-8 text-xs text-content-muted`,children:[(0,K.jsx)(`p`,{className:`break-all font-mono text-content-secondary`,children:e.attachment.path||e.attachment.id||r(`chat:workbench.unavailable`)}),(0,K.jsx)(`p`,{className:`font-mono`,children:e.attachment.mimeType||`application/octet-stream`}),(0,K.jsx)(`p`,{children:e.method===`asset`?r(`chat:workbench.registeredAsset`):e.method===`path`?r(`chat:workbench.pathReference`):r(`chat:workbench.invalidReference`)}),(0,K.jsx)(M,{variant:`secondary`,size:`sm`,className:`mt-1`,disabled:!e.available,onClick:t=>{l.current=t.currentTarget,c(e.id)},children:r(`chat:chatMessage.fileActionPreview`)})]})]},e.id)})]}),d&&(0,K.jsx)(G.Suspense,{fallback:null,children:(0,K.jsx)(se,{attachment:d.attachment,onClose:()=>c(``),onRestoreFocus:()=>l.current?.focus(),onDownload:()=>{typeof d.attachment.downloadUrl==`string`&&window.open(d.attachment.downloadUrl,`_blank`,`noopener,noreferrer`)}})})]})}function le({parentId:e,active:t}){let{t:n}=i(),{entry:r,runtime:a,load:o,setDraft:c}=S(e),l=r.session?.id??``,u=(0,G.useMemo)(()=>e=>a.subscribeSessionState(l,e),[a,l]),d=(0,G.useMemo)(()=>()=>a.getSessionState(l),[a,l]),f=(0,G.useSyncExternalStore)(u,d),[p,m]=(0,G.useState)(!1),[_,y]=(0,G.useState)(!1),[x,C]=(0,G.useState)(``),w=(0,G.useRef)(!1),T=(0,G.useRef)(!1),E=(0,G.useRef)(r.draft);E.current=r.draft;let O=(0,G.useRef)(null),A=N(e=>e.bindings),F=g(f,r.session);(0,G.useEffect)(()=>{t&&o(e)},[t,o,e]);let I=async t=>{t.preventDefault();let n=E.current.trim();if(!(!n||w.current||F||r.expired)){w.current=!0,m(!0),C(``);try{let t=await o(e,!r.session);if(!t?.session)return;let i=t.session.id;if(a.getSessionState(i).streaming)return;E.current.trim()===n&&c(e,``),m(!1),await a.send(i,n),await o(e)}catch(e){C(H(e))}finally{w.current=!1,m(!1)}}},L=(0,G.useCallback)(async()=>{if(!(!l||a.getSessionState(l).streaming)){C(``);try{await a.retry(l),await o(e)}catch(e){C(H(e))}}},[o,e,a,l]),R=async()=>{if(!(!l||_)){y(!0);try{C(``),await a.abort(l)}catch(e){C(H(e))}finally{y(!1)}}},z=(0,K.jsxs)(`div`,{className:`grid h-full min-h-36 place-content-center justify-items-center gap-2 px-3 text-center text-xs text-content-muted`,children:[(0,K.jsx)(`span`,{className:`mb-1 grid size-8 place-items-center rounded-md bg-key text-content-secondary shadow-key ring-1 ring-key-border`,children:(0,K.jsx)(D,{className:`size-4`,"aria-hidden":`true`})}),(0,K.jsx)(`p`,{className:`max-w-64 leading-relaxed`,children:r.expired?n(`chat:sideChat.expired`):n(`chat:sideChat.empty`)}),r.expired&&(0,K.jsxs)(M,{variant:`secondary`,size:`sm`,className:`mt-1`,disabled:r.loading,onClick:async()=>{(await o(e,!0))?.session&&O.current?.focus()},children:[r.loading&&(0,K.jsx)(j,{className:`size-3.5 text-current`}),n(`chat:sideChat.restart`)]})]}),B=x||r.error||f.error;return(0,K.jsxs)(`section`,{"data-side-chat-parent":e,"aria-label":n(`chat:sideChat.title`),className:`flex h-full min-h-0 min-w-0 flex-1 flex-col [container-type:inline-size]`,children:[(0,K.jsx)(`p`,{className:`shrink-0 border-b border-stroke-soft px-3 py-2 text-xs leading-relaxed text-content-muted`,children:n(`chat:sideChat.retention`)}),l?(0,K.jsx)(b,{sessionId:l,messages:f.messages,transcriptLoadState:f.loaded?`ready`:f.error?`error`:`loading`,emptyState:z,messageStart:f.messageStart,hasOlder:f.hasOlder,loadingOlder:f.loadingOlder,olderError:f.olderError,activityFeed:f.activityFeed,tools:f.tools,thinkingText:f.thinkingText,currentActivity:f.currentActivity,compaction:f.compaction,streaming:F,runStartedAt:f.runStartedAt,lastActivityAt:f.lastActivityAt,runFinishedAt:f.runFinishedAt,runStopped:f.runStopped,runNotice:f.runNotice,error:f.error,cwd:r.session?.cwd,onLoadOlder:()=>a.loadOlderMessages(l),onRetryLastTurn:L}):(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:z}),(0,K.jsxs)(`form`,{className:`flex shrink-0 flex-col gap-2 border-t border-stroke-soft p-3`,onSubmit:I,children:[B&&(0,K.jsx)(v,{error:B,onRetry:r.error||!f.loaded?async()=>{await o(e)}:L}),(0,K.jsx)(h,{approvals:f.approvals,onResolve:async(e,t)=>{try{await a.approve(l,e,t)}catch{}}}),(0,K.jsxs)(`div`,{className:`flex min-w-0 items-end gap-2 rounded-[var(--composer-radius,22px)] border border-control bg-panel py-2 pr-2 pl-3 shadow-composer transition-[border-color,box-shadow] duration-(--d-fast) focus-within:border-focus focus-within:ring-3 focus-within:ring-focus-ring`,children:[(0,K.jsx)(`textarea`,{ref:O,rows:2,value:r.draft,"aria-label":n(`chat:sideChat.message`),placeholder:n(`chat:sideChat.placeholder`),className:`max-h-40 min-h-14 min-w-0 flex-1 resize-y border-0 bg-transparent px-1 py-1 text-sm leading-relaxed text-content caret-focus outline-none placeholder:text-content-muted`,onChange:t=>c(e,t.target.value),onCompositionStart:()=>{T.current=!0},onCompositionEnd:()=>{T.current=!1},onKeyDown:e=>{!T.current&&!e.nativeEvent.isComposing&&e.nativeEvent.keyCode!==229&&P(e.nativeEvent,A.sendMessage)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())}}),(0,K.jsx)(M,{type:F?`button`:`submit`,size:`icon`,className:`size-8 shrink-0 rounded-full max-[650px]:size-11 pointer-coarse:size-11`,"aria-label":n(F?`chat:sideChat.stop`:`chat:sideChat.send`),disabled:F?_:p||r.loading||r.expired||!r.draft.trim(),onClick:F?()=>void R():void 0,children:p||_?(0,K.jsx)(j,{className:`size-4 text-current`}):F?(0,K.jsx)(k,{size:13,fill:`currentColor`}):(0,K.jsx)(s,{size:17})})]})]})]})}var $=(0,G.createContext)(null),ue=()=>{let e=(0,G.useContext)($);if(!e)throw Error(`WebPreview components must be used within a WebPreview`);return e},de=({className:e,children:t,defaultUrl:n=``,onUrlChange:r,...i})=>{let[a,o]=(0,G.useState)(n),[s,c]=(0,G.useState)(!1),l=(0,G.useCallback)(e=>{o(e),r?.(e)},[r]),u=(0,G.useMemo)(()=>({consoleOpen:s,setConsoleOpen:c,setUrl:l,url:a}),[s,l,a]);return(0,K.jsx)($.Provider,{value:u,children:(0,K.jsx)(`div`,{className:A(`flex size-full min-h-0 flex-col rounded-lg border bg-card`,e),...i,children:t})})},fe=({className:e,loading:t,src:n,...r})=>{let{url:i}=ue();return(0,K.jsxs)(`div`,{className:`relative min-h-0 flex-1 overflow-hidden bg-background`,children:[(0,K.jsx)(`iframe`,{className:A(`block size-full border-0 bg-background`,e),loading:`lazy`,sandbox:`allow-scripts allow-same-origin allow-forms allow-popups allow-presentation`,src:(n??i)||void 0,title:`Preview`,...r}),t]})};function pe({page:e,onChange:t}){let{t:n}=i(),{draft:r,url:a}=e,[o,s]=(0,G.useState)(!1);return(0,K.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col gap-2 p-3`,"aria-label":n(`common:webPreview.title`),children:[(0,K.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault();let n=V(r,window.location.href);s(!n),n&&t({url:n})},children:[(0,K.jsx)(R,{"aria-label":n(`common:webPreview.url`),className:`flex-1 font-mono`,value:r,onChange:e=>t({draft:e.target.value}),placeholder:n(`common:webPreview.urlPlaceholder`),maxLength:2048}),(0,K.jsx)(M,{type:`submit`,variant:`secondary`,children:n(`chat:sessionContext.openUrl`)})]}),o&&(0,K.jsx)(`p`,{role:`alert`,className:`text-xs text-danger`,children:n(`chat:sessionContext.invalidUrl`)}),a?(0,K.jsx)(de,{className:`min-h-0 flex-1 overflow-hidden rounded-md border-stroke`,defaultUrl:a,children:(0,K.jsx)(fe,{src:a,title:n(`common:webPreview.title`)})},a):(0,K.jsx)(L,{icon:d,className:`min-h-0 flex-1`,title:n(`chat:sessionContext.browserEmpty`)}),a&&(0,K.jsxs)(M,{type:`button`,variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>window.open(a,`_blank`,`noopener,noreferrer`),children:[(0,K.jsx)(f,{size:14}),n(`common:webPreview.openExternal`)]}),(0,K.jsx)(`p`,{className:`text-xs text-content-muted`,children:n(`common:webPreview.embedNotice`)})]})}export{ae as a,Z as c,oe as i,te as l,le as n,ie as o,ce as r,re as s,pe as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GitDiffViewer-rjt5_KOt.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-B5p-Kzvz.js","assets/i18n-CHmr7GzM.js","assets/vendor-router-CSN_DGvx.js","assets/index-CsE52ydO.js","assets/index-CfTBR7Rs.css","assets/storage-BY6wEHPw.js","assets/vendor-state-GkUciC5H.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/x-07u4-129.js","assets/utils-C8uzG5AZ.js","assets/vendor-ui-DvrYggeS.js","assets/button-CCcCN8tE.js","assets/dist-41X0pdUs.js","assets/events-DrAPv0se.js","assets/esm-DCV8yILT.js","assets/TaskTerminalView-DWNACXyI.js","assets/square-terminal-BVG6cUT1.js","assets/square-bHHVTT3G.js","assets/PageState-Cz6vFMXv.js","assets/AppSelect-BGVBQRP1.js","assets/use-mobile-DauOEda6.js","assets/select-DD_WO-gs.js","assets/check-2vYc6QaP.js","assets/chevron-down-CxtxIjiP.js","assets/chevron-up-D_ZcXjqr.js","assets/dist-V8chnW6-.js","assets/dist-BsRXXcSL.js","assets/dist-BiRPwy4W.js","assets/dist-DzGQ7sLi.js","assets/es2015-DTZdOI9P.js","assets/dist-BRjj4UeB.js","assets/dist-OB2r6Xsr.js","assets/terminal-context-aIsIJPn8.js","assets/TaskTerminalView-BrP-ENHg.css","assets/TaskProcessesPane-DRFmGkE3.js","assets/chevron-right-C3t2Rckj.js","assets/checkbox-BrEHgFV0.js","assets/FileAttachmentPreview-Cnmi_2U-.js","assets/api-BO7LAPSQ.js","assets/abort-signal-f4JsiYKX.js","assets/download-BCfIiuaL.js","assets/file-Bllajneu.js","assets/refresh-cw-TbWxTY4K.js","assets/tabs-DsgBuvJv.js","assets/dist-BaBySQmo.js","assets/format-DMJQzoZ7.js","assets/dialog-CUhFgsVd.js","assets/dist-BHkR6BLP.js","assets/MarkdownMessage-yl-PSRAz.js","assets/vendor-markdown-plugins-CT5L3KA9.js","assets/vendor-shiki-runtime-DM7fm4Bl.js","assets/vendor-markdown-plugins-DEcVZfaU.css","assets/vendor-markdown-CT6Z4fh8.js","assets/copy-DHmIFc52.js","assets/route-context-DvWDul4T.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-B5p-Kzvz.js";import{t as a}from"./useQuery-DdcpUQhO.js";import{t as o}from"./createLucideIcon-Cd-3GVxJ.js";import{t as s}from"./arrow-up-DST6-qVQ.js";import{t as c}from"./check-2vYc6QaP.js";import{t as l}from"./chevron-down-CxtxIjiP.js";import{t as u}from"./chevron-right-C3t2Rckj.js";import{t as d}from"./earth-Ddy13fHh.js";import{t as f}from"./external-link-CEQqPcqc.js";import{i as p}from"./GitDiffViewer-rjt5_KOt.js";import{t as m}from"./file-Bllajneu.js";import{a as h,i as g,k as _,l as v,m as y,o as b,p as x,r as S}from"./side-chat-context-BfOm4dFp.js";import{t as C}from"./git-branch-N7LGjtzt.js";import{t as w}from"./image-BY_c3FYU.js";import{t as T}from"./link-2-mgasYn21.js";import{t as E}from"./list-checks-B5Jl4aiO.js";import{t as D}from"./message-square-SKjZyY3v.js";import{t as O}from"./refresh-cw-TbWxTY4K.js";import{t as k}from"./square-bHHVTT3G.js";import"./collapsible-DMaUQRX4.js";import"./tooltip-D4MFbqcG.js";import{t as A}from"./utils-C8uzG5AZ.js";import{n as j,t as M}from"./button-CCcCN8tE.js";import{c as N,r as P}from"./shortcuts-Cvp9WD9O.js";import{t as F}from"./chat-api-DkdyVQY9.js";import{n as I,t as L}from"./PageState-Cz6vFMXv.js";import{t as R}from"./input-CPw-zkYh.js";import{n as z}from"./session-change-summary-api-DgRT32uh.js";import{t as B}from"./AppSelect-BGVBQRP1.js";import{t as V}from"./web-preview-CqwSe9Zn.js";import{o as H}from"./session-tree-summary-BwYRdui2.js";var U=o(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),W=o(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),G=e(n(),1),K=r(),q={completed:`completed`,in_progress:`running`,blocked:`blocked`,pending:`pending`};function J(e){let t=new Map(e.map(e=>[String(e.id||``),e])),n=e=>e?.status===`completed`;return e.map(e=>{let r=String(e.id||``),i=(Array.isArray(e.dependsOn)?e.dependsOn:[]).map(e=>t.get(String(e))).filter(e=>!!e&&!n(e)),a=e.status!==`completed`&&(e.status===`blocked`||i.length>0);return{...e,id:r,blocked:a,blockedBy:i}})}function Y({status:e,t}){let n=t(e===`completed`?`chat:planBoard.completed`:e===`in_progress`?`chat:planBoard.inProgress`:e===`blocked`?`chat:planBoard.blocked`:`chat:planBoard.pending`);return(0,K.jsxs)(`span`,{className:`plan-board-status grid size-[18px] flex-none place-items-center rounded-xs text-content-muted [&.completed]:bg-success-soft [&.completed]:text-success [&.running]:text-accent-fg [&.blocked]:bg-danger-soft [&.blocked]:text-danger ${q[String(e)]||`pending`}`,title:n,children:[e===`completed`?(0,K.jsx)(c,{size:12,strokeWidth:2.25}):e===`in_progress`?(0,K.jsx)(j,{className:`size-3.5`}):e===`blocked`?(0,K.jsx)(W,{size:11,strokeWidth:2}):(0,K.jsx)(U,{size:11,strokeWidth:2}),(0,K.jsx)(`span`,{className:`sr-only`,children:n})]})}function X({item:e,current:t,t:n}){return(0,K.jsxs)(`li`,{className:`plan-board-row flex min-w-0 flex-col gap-[2px] rounded-sm px-[6px] py-[6px] aria-[current=step]:bg-surface-subtle ${e.blocked?`blocked`:``}`,"aria-current":t?`step`:void 0,"data-pisper-plan-current":t?`true`:void 0,"data-pisper-plan-id":e.id,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-[10px]`,children:[(0,K.jsx)(Y,{status:e.blocked?`blocked`:e.status,t:n}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] ${e.status===`completed`?`text-content-muted`:`text-foreground`}`,title:e.title,children:e.title}),e.assignee?(0,K.jsxs)(`span`,{className:`inline-flex max-w-[40%] flex-none items-center gap-[4px] truncate rounded-xs border border-stroke px-[6px] font-mono text-[12px] leading-[18px] text-content-secondary`,title:n(`chat:planBoard.assignedTo`,{name:e.assignee}),children:[(0,K.jsx)(_,{size:11,className:`flex-none`}),e.assignee]}):e.status!==`completed`&&(0,K.jsx)(`span`,{className:`flex-none text-[12px] text-content-muted`,children:n(`chat:planBoard.unassigned`)})]}),e.blockedBy.length>0&&(0,K.jsxs)(`div`,{className:`inline-flex min-w-0 items-center gap-[5px] pl-[28px] text-[12px] text-content-muted`,children:[(0,K.jsx)(W,{size:11,className:`flex-none`}),(0,K.jsx)(`span`,{className:`truncate`,children:n(`chat:planBoard.waitingFor`,{tasks:e.blockedBy.map(e=>e.title||e.id).join(` · `)})})]})]})}function ee({plan:e,header:t,collapsible:n=!1}){let{t:r}=i(),a=(0,G.useRef)(null),[o,s]=(0,G.useState)(!0),c=e?.items||[],u=J(c),d=u.filter(e=>e.status===`completed`).length,f=u.filter(e=>e.status===`in_progress`&&!e.blocked).length,p=u.filter(e=>e.blocked).length,m=u.find(e=>e.status===`in_progress`&&!e.blocked)?.id??u.find(e=>e.blocked)?.id??u.find(e=>e.status===`pending`)?.id??u.at(-1)?.id;if((0,G.useLayoutEffect)(()=>{if(n&&!o)return;let e=a.current,t=e?.querySelector(`[data-pisper-plan-current="true"]`);if(!e||!t)return;let r=e.getBoundingClientRect(),i=t.getBoundingClientRect();i.top<r.top?e.scrollTop-=r.top-i.top:i.bottom>r.bottom&&(e.scrollTop+=i.bottom-r.bottom)},[n,m,o,u.length]),!c.length)return null;let h=u.find(e=>e.id===m),g=(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(E,{className:`flex-none text-content-muted`,size:15}),(0,K.jsx)(`strong`,{className:`tabular-nums`,children:r(`chat:planBoard.progress`,{completed:d,total:c.length})}),h?(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-content-secondary`,title:h.title,children:h.title}):null,(0,K.jsxs)(`span`,{className:`plan-board-counts inline-flex flex-none items-center gap-[8px] text-content-muted tabular-nums @max-[470px]:hidden`,children:[f>0&&(0,K.jsx)(`span`,{children:r(`chat:planBoard.countInProgress`,{count:f})}),p>0&&(0,K.jsx)(`span`,{className:`blocked text-danger`,children:r(`chat:planBoard.countBlocked`,{count:p})})]}),t,n?(0,K.jsx)(l,{className:`plan-board-chevron flex-none text-content-muted transition-transform duration-(--d-fast) ease-precise [.plan-board-collapsible[open]_&]:rotate-180`,size:15}):null]}),_=(0,K.jsx)(`ul`,{ref:a,className:`plan-board-list [.plan-board-collapsible_>_&]:border-t [.plan-board-collapsible_>_&]:border-stroke-soft [.plan-board-collapsible_>_&]:p-[6px_8px_8px] m-0 flex list-none flex-col gap-[1px] pt-[6px]${u.length>4?` is-scrollable [.session-plan-popover_.plan-board-list&]:[block-size:min(250px,38dvh)] [.plan-board-list&]:[block-size:min(220px,34dvh)] [.plan-board-list&]:overflow-y-auto [.plan-board-list&]:[overscroll-behavior:contain] [.plan-board-list&]:pr-[4px] [.plan-board-list&]:[scrollbar-gutter:stable] [.plan-board-list&:focus-visible]:outline-2 [.plan-board-list&:focus-visible]:outline-focus [.plan-board-list&:focus-visible]:outline-offset-2`:``}`,tabIndex:u.length>4?0:void 0,children:u.map(e=>(0,K.jsx)(X,{item:e,current:e.id===m,t:r},e.id))});return n?(0,K.jsxs)(`details`,{className:`plan-board plan-board-collapsible m-[0_auto] flex w-[min(900px,100%)] flex-col overflow-hidden rounded-md border border-stroke bg-panel !p-0 [.session-plan-popover_&]:w-full [.session-plan-popover_&]:border-0 [.session-plan-popover_&]:bg-transparent`,open:o,onToggle:e=>s(e.currentTarget.open),children:[(0,K.jsx)(`summary`,{className:`plan-board-summary flex min-w-0 items-center gap-[8px] border-b border-stroke-soft pb-[8px] text-[13px] text-content-secondary [&_strong]:flex-none [&_strong]:font-medium [&_strong]:text-foreground [.plan-board-collapsible_>_&]:min-h-[34px] [.plan-board-collapsible_>_&]:cursor-pointer [.plan-board-collapsible_>_&]:list-none [.plan-board-collapsible_>_&]:border-0 [.plan-board-collapsible_>_&]:p-[6px_12px] max-[650px]:[.plan-board-collapsible_>_&]:min-h-11 [.plan-board-collapsible_>_&::-webkit-details-marker]:hidden [.plan-board-collapsible_>_&:hover]:bg-surface-subtle [.plan-board-collapsible_>_&:focus-visible]:outline-2 [.plan-board-collapsible_>_&:focus-visible]:-outline-offset-2 [.plan-board-collapsible_>_&:focus-visible]:outline-focus`,"aria-label":r(`chat:planBoard.toggleAriaLabel`),children:g}),_]}):(0,K.jsxs)(`section`,{className:`plan-board m-[0_auto] flex w-[min(900px,100%)] flex-col rounded-md border border-stroke bg-panel p-[10px_12px] [.session-plan-popover_&]:w-full [.session-plan-popover_&]:border-0 [.session-plan-popover_&]:bg-transparent [.session-plan-popover_&]:p-0`,"aria-label":r(`chat:planBoard.ariaLabel`),children:[(0,K.jsx)(`div`,{className:`plan-board-summary flex min-w-0 items-center gap-[8px] border-b border-stroke-soft pb-[8px] text-[13px] text-content-secondary [&_strong]:flex-none [&_strong]:font-medium [&_strong]:text-foreground [.plan-board-collapsible_>_&]:min-h-[34px] [.plan-board-collapsible_>_&]:cursor-pointer [.plan-board-collapsible_>_&]:list-none [.plan-board-collapsible_>_&]:border-0 [.plan-board-collapsible_>_&]:p-[6px_12px] max-[650px]:[.plan-board-collapsible_>_&]:min-h-11 [.plan-board-collapsible_>_&::-webkit-details-marker]:hidden [.plan-board-collapsible_>_&:hover]:bg-surface-subtle [.plan-board-collapsible_>_&:focus-visible]:outline-2 [.plan-board-collapsible_>_&:focus-visible]:-outline-offset-2 [.plan-board-collapsible_>_&:focus-visible]:outline-focus`,children:g}),_]})}var te=(0,G.memo)(ee),ne=(0,G.lazy)(()=>t(()=>import(`./GitDiffViewer-rjt5_KOt.js`).then(e=>e.n).then(e=>({default:e.InlineGitDiff})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])));function Z({sessionId:e,path:t,scope:n,revision:r=0,position:o,onReading:s,mode:c,fill:l=!1}){let{t:u}=i(),d=a({queryKey:[`task-file-diff`,e,n,t,r],queryFn:({signal:r})=>n===`project`?F.getFileDiff(e,t,{signal:r}):F.getSessionFileChangeDiff(e,t,{signal:r})});return d.isPending?(0,K.jsxs)(`p`,{role:`status`,className:`flex items-center gap-2 px-3 py-2.5 text-xs text-content-muted`,children:[(0,K.jsx)(j,{className:`size-3.5`}),u(`chat:focusSession.gitLoading`)]}):d.isError?(0,K.jsxs)(`div`,{className:`px-3 py-2.5`,children:[(0,K.jsx)(`p`,{role:`alert`,className:`text-xs text-danger`,children:d.error.message}),(0,K.jsx)(M,{variant:`ghost`,size:`sm`,onClick:()=>void d.refetch(),children:u(`chat:chatMessage.filePreviewRetry`)})]}):(0,K.jsx)(G.Suspense,{fallback:null,children:(0,K.jsx)(ne,{position:o,onReading:s,diff:d.data.diff,truncated:d.data.diffTruncated,mode:c,fill:l})})}function re({sessionId:e,cwd:t,streaming:n,view:r,onViewChange:o}){let{t:s}=i(),c=a({queryKey:[`task-project-changes`,e,t,n],queryFn:({signal:t})=>F.getVcsChanges(e,{signal:t})}),l=p(r.reading?.list,e=>o({reading:{...r.reading,list:e}})),d=(0,G.useMemo)(()=>x(c.data?.diff||``,c.data?.files.map(e=>e.path)||[],c.data?.diffTruncated),[c.data]),f=r.expandedFiles.filter(e=>c.data&&!c.data.files.some(t=>t.path===e)),m=c.error?.message||c.data?.error,h=c.data?.files||[];return(0,K.jsxs)(`section`,{"aria-label":s(`chat:workbench.projectChanges`),className:`flex min-h-0 flex-1 flex-col`,children:[(0,K.jsxs)(`header`,{className:`flex min-h-10 min-w-0 shrink-0 items-center gap-2 border-b border-stroke-soft pr-1.5 pl-3`,children:[(0,K.jsx)(`h2`,{className:`min-w-0 flex-1 truncate text-xs font-medium tracking-[.02em] text-content-muted`,children:s(`chat:workbench.projectChanges`)}),c.data?.isRepo&&!m&&(0,K.jsxs)(`span`,{className:`shrink-0 font-mono text-xs tabular-nums`,children:[(0,K.jsxs)(`span`,{className:`text-success`,children:[`+`,d.added]}),` `,(0,K.jsxs)(`span`,{className:`text-danger`,children:[`−`,d.removed]})]}),(0,K.jsx)(M,{variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,"aria-label":s(`chat:focusSession.gitRefresh`),disabled:c.isFetching,onClick:()=>void c.refetch(),children:(0,K.jsx)(O,{size:15,className:c.isFetching?`animate-spin`:void 0})})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b border-stroke-soft px-3 py-2.5`,children:[(0,K.jsx)(`p`,{className:`text-xs leading-relaxed text-content-muted`,children:s(`chat:workbench.projectScope`)}),(0,K.jsxs)(`p`,{className:`flex min-w-0 items-center gap-1.5 text-xs`,title:t,children:[c.data?.branch&&(0,K.jsxs)(`span`,{className:`inline-flex h-5.5 max-w-[45%] shrink-0 items-center gap-1 rounded-xs border border-stroke px-1.5 font-mono text-content-secondary`,children:[(0,K.jsx)(C,{size:12,className:`shrink-0`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`truncate`,children:c.data.branch})]}),(0,K.jsx)(`span`,{className:`min-w-0 truncate font-mono text-content-muted`,children:t})]}),(0,K.jsxs)(`div`,{className:`flex gap-1`,children:[(0,K.jsx)(M,{variant:`ghost`,size:`sm`,disabled:!h.length||!!m,onClick:()=>o({expandedFiles:h.map(e=>e.path)}),children:s(`chat:workbench.expandAll`)}),(0,K.jsx)(M,{variant:`ghost`,size:`sm`,onClick:()=>o({expandedFiles:[]}),children:s(`chat:workbench.collapseAll`)})]})]}),!c.isFetching&&!m&&f.map(e=>(0,K.jsx)(`p`,{role:`status`,className:`break-all px-3 pt-2 text-xs text-content-muted`,children:s(`chat:workbench.fileNoLongerChanged`,{path:e})},e)),c.isPending?(0,K.jsx)(I,{kind:`loading`,title:s(`chat:focusSession.gitLoading`)}):m?(0,K.jsx)(`p`,{role:`alert`,className:`p-3 text-sm text-danger`,children:m}):c.data?.isRepo?h.length?(0,K.jsx)(`div`,{ref:l.ref,className:`min-h-0 flex-1 overflow-y-auto`,children:h.map(t=>{let n=r.expandedFiles.includes(t.path);return(0,K.jsxs)(`article`,{className:`border-b border-stroke-soft`,children:[(0,K.jsxs)(`button`,{"aria-expanded":n,title:t.path,className:`flex min-h-9 w-full min-w-0 items-center gap-2 pr-3 pl-2 text-left text-sm hover:bg-surface-subtle focus-visible:-outline-offset-2 max-[650px]:min-h-11 pointer-coarse:min-h-11 ${n?`bg-surface-subtle`:``}`,onClick:()=>o({expandedFiles:n?r.expandedFiles.filter(e=>e!==t.path):[...r.expandedFiles,t.path]}),children:[(0,K.jsx)(u,{size:14,className:`shrink-0 text-content-muted transition-transform duration-(--d-fast) ${n?`rotate-90`:``}`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs`,children:t.path}),(0,K.jsx)(`span`,{className:`min-w-4 shrink-0 text-center font-mono text-xs font-medium text-content-secondary`,children:t.status}),Object.hasOwn(d.files,t.path)&&(0,K.jsxs)(`span`,{className:`shrink-0 font-mono text-xs tabular-nums`,children:[(0,K.jsxs)(`span`,{className:`text-success`,children:[`+`,d.files[t.path].added]}),` `,(0,K.jsxs)(`span`,{className:`text-danger`,children:[`−`,d.files[t.path].removed]})]})]}),n&&(0,K.jsx)(`p`,{className:`break-all px-3 py-1.5 font-mono text-xs text-content-muted`,children:t.path}),n&&(0,K.jsx)(Z,{sessionId:e,path:t.path,scope:`project`,position:r.reading?.[t.path],onReading:e=>o({reading:{...r.reading,[t.path]:e}}),revision:c.dataUpdatedAt})]},t.path)})}):(0,K.jsx)(L,{compact:!0,title:s(`chat:focusSession.fileChangesEmpty`)}):(0,K.jsx)(L,{compact:!0,title:s(`chat:workbench.notRepository`)})]})}function Q(e){return e instanceof Error?e.message:String(e)}function ie({sessionId:e,streaming:t,requestConfirm:n}){let{t:r}=i(),[a,o]=(0,G.useState)(0),[s,c]=(0,G.useState)(0),[l,u]=(0,G.useState)(null),[d,f]=(0,G.useState)(!0),[p,m]=(0,G.useState)(``),[h,g]=(0,G.useState)(``),[_,v]=(0,G.useState)(``),[y,b]=(0,G.useState)(null),[x,S]=(0,G.useState)(null),[C,w]=(0,G.useState)(null),T=(0,G.useRef)(!1),E=(0,G.useRef)(0),D=(0,G.useRef)(0),O=(0,G.useRef)(!0),k=(0,G.useRef)(!1),A=(0,G.useRef)(t);return(0,G.useLayoutEffect)(()=>{A.current=t},[t]),(0,G.useLayoutEffect)(()=>(T.current=!0,()=>{T.current=!1,E.current+=1,D.current+=1}),[]),(0,G.useEffect)(()=>{let t=++E.current;return D.current+=1,S(null),w(null),O.current=!0,f(!0),m(``),F.getSessionFileChanges(e).then(e=>{T.current&&t===E.current&&(u(e),c(e=>e+1))},e=>{T.current&&t===E.current&&m(Q(e))}).finally(()=>{T.current&&t===E.current&&(O.current=!1,f(!1))}),()=>{E.current+=1}},[a,e,t]),{changes:l,loading:d,error:p,actionError:h,notice:_,running:y,diff:x,setDiff:S,diffLoading:C,snapshotRevision:s,writesDisabled:d||t||!!y||!!p||!l,pendingCount:l?.summary.pending||0,reversibleCount:l?.files.filter(e=>e.canRevert&&!e.reverted).length||0,displayedError:h||p,viewDiff:async t=>{if(k.current||O.current)return;let n=++D.current;w(t),g(``);try{let i=await F.getSessionFileChangeDiff(e,t);if(!T.current||n!==D.current)return;if(!i.diff?.trim()){g(r(`chat:focusSession.fileChangesNoSnapshot`));return}S({diff:i.diff,truncated:!!i.diffTruncated})}catch(e){T.current&&n===D.current&&g(Q(e))}finally{T.current&&n===D.current&&w(null)}},runAction:async t=>{if(!T.current||k.current||O.current||A.current||!l||p||!l.files.filter(e=>t.kind===`approve`?e.pending&&!e.approved&&!e.reverted:e.canRevert&&!e.reverted).some(e=>t.path===void 0||e.path===t.path))return;k.current=!0,b(t),g(``),v(``);let i=++E.current;D.current+=1,S(null),w(null);let a=!1;try{if(t.kind===`revert`&&!await n({title:t.path?r(`chat:focusSession.fileChangesRevertFile`):r(`chat:focusSession.fileChangesRevertAll`),message:t.path?r(`chat:focusSession.fileChangesRevertFileDescription`,{path:t.path}):r(`chat:focusSession.fileChangesRevertAllDescription`),confirmLabel:r(`chat:focusSession.fileChangesConfirmRevert`),tone:`danger`})||!T.current||A.current||O.current||i!==E.current)return;a=!0;let o=t.kind===`approve`?await F.approveSessionFileChanges(e,t.path):await F.revertSessionFileChanges(e,t.path);if(z(e),!T.current||i!==E.current)return;u(o),t.kind===`approve`?v(t.path?r(`chat:focusSession.fileChangesApproved`):r(`chat:focusSession.fileChangesApproveDone`)):o.reverted?t.path===void 0&&o.files.some(e=>e.pending)?v(r(`chat:focusSession.fileChangesRevertPartial`,{count:o.reverted})):v(r(`chat:focusSession.fileChangesRevertDone`)):v(r(`chat:focusSession.fileChangesRevertUnavailable`))}catch(e){T.current&&i===E.current&&g(Q(e))}finally{k.current=!1,T.current&&(b(null),a&&(O.current=!0,f(!0),o(e=>e+1)))}},refresh:()=>{O.current=!0,f(!0),g(``),o(e=>e+1)}}}var ae=(0,G.lazy)(()=>t(()=>import(`./TaskTerminalView-DWNACXyI.js`).then(e=>({default:e.TaskTerminalView})),__vite__mapDeps([18,1,2,3,4,5,6,7,8,9,19,10,20,14,13,15,12,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),oe=(0,G.lazy)(()=>t(()=>import(`./TaskProcessesPane-DRFmGkE3.js`).then(e=>({default:e.TaskProcessesPane})),__vite__mapDeps([37,1,2,3,4,5,6,7,8,9,38,10,19,20,39,25,15,29,34,12,13,14,21,22,23,24,26,27,28,30,31,32,33,35]))),se=(0,G.lazy)(()=>t(()=>import(`./FileAttachmentPreview-Cnmi_2U-.js`).then(e=>e.n).then(e=>({default:e.FileAttachmentPreview})),__vite__mapDeps([40,1,2,3,4,5,6,7,8,9,41,42,43,10,44,45,11,46,13,29,15,31,47,12,14,48,49,50,32,51,52,53,54,55,25,56,57])));function ce({sources:e,view:t,onViewChange:n}){let{t:r}=i(),a=p(t.reading?.list,e=>n({reading:{...t.reading,list:e}})),o=(0,G.useContext)(y),[s,c]=(0,G.useState)(``),l=(0,G.useRef)(null),d=e.find(e=>e.id===s),f=e.filter(e=>(!t.filter||e.kind===t.filter)&&e.name.toLocaleLowerCase().includes(t.query.toLocaleLowerCase()));return(0,K.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col`,"aria-label":r(`chat:workbench.sources`),children:[(0,K.jsxs)(`header`,{className:`flex min-h-10 min-w-0 shrink-0 items-center gap-2 border-b border-stroke-soft pr-1.5 pl-3`,children:[(0,K.jsxs)(`h2`,{className:`min-w-0 flex-1 truncate text-xs font-medium tracking-[.02em] text-content-muted`,children:[r(`chat:workbench.sources`),(0,K.jsx)(`span`,{className:`ml-1.5 tabular-nums`,children:e.length})]}),(0,K.jsx)(`span`,{className:`shrink-0 text-xs text-content-muted`,children:r(`chat:workbench.addSource`)}),(0,K.jsx)(`div`,{ref:o?.setSourceActionHost,className:`grid min-h-7 min-w-7 place-items-center`})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b border-stroke-soft px-3 py-2.5`,children:[(0,K.jsx)(`p`,{className:`text-xs leading-relaxed text-content-muted`,children:r(`chat:workbench.sourcesScope`)}),(0,K.jsxs)(`div`,{className:`flex min-w-0 gap-2`,children:[(0,K.jsx)(R,{className:`min-w-0 flex-1`,"aria-label":r(`chat:workbench.searchSources`),placeholder:r(`chat:workbench.searchSources`),value:t.query,onChange:e=>n({query:e.target.value})}),(0,K.jsxs)(B,{"aria-label":r(`chat:workbench.sourceType`),className:`w-auto max-w-[45%] shrink-0`,value:t.filter,onChange:e=>n({filter:e.target.value}),children:[(0,K.jsx)(`option`,{value:``,children:r(`chat:workbench.allTypes`)}),(0,K.jsx)(`option`,{value:`image`,children:r(`chat:workbench.images`)}),(0,K.jsx)(`option`,{value:`text`,children:r(`chat:workbench.text`)}),(0,K.jsx)(`option`,{value:`file`,children:r(`chat:workbench.files`)})]})]})]}),(0,K.jsxs)(`div`,{ref:a.ref,className:`min-h-0 flex-1 overflow-y-auto`,children:[!f.length&&(0,K.jsx)(L,{compact:!0,title:e.length?r(`chat:workbench.noMatches`):r(`chat:workbench.noSources`)}),f.map(e=>{let i=t.selectedSourceId===e.id,a=e.kind===`image`?w:e.method===`path`?T:m;return(0,K.jsxs)(`article`,{className:`border-b border-stroke-soft`,children:[(0,K.jsxs)(`button`,{className:`flex min-h-9 w-full min-w-0 items-center gap-2 px-2 text-left hover:bg-surface-subtle focus-visible:-outline-offset-2 max-[650px]:min-h-11 pointer-coarse:min-h-11 ${i?`bg-surface-subtle`:``}`,"aria-expanded":i,onClick:()=>n({selectedSourceId:i?``:e.id}),children:[(0,K.jsx)(u,{size:14,className:`shrink-0 text-content-muted transition-transform duration-(--d-fast) ${i?`rotate-90`:``}`}),(0,K.jsx)(a,{className:`size-3.5 shrink-0 text-content-muted`}),(0,K.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs`,children:e.name||r(`chat:chatMessage.fileAttachment`)})]}),i&&(0,K.jsxs)(`div`,{className:`space-y-1.5 border-t border-stroke-soft bg-code py-2.5 pr-3 pl-8 text-xs text-content-muted`,children:[(0,K.jsx)(`p`,{className:`break-all font-mono text-content-secondary`,children:e.attachment.path||e.attachment.id||r(`chat:workbench.unavailable`)}),(0,K.jsx)(`p`,{className:`font-mono`,children:e.attachment.mimeType||`application/octet-stream`}),(0,K.jsx)(`p`,{children:e.method===`asset`?r(`chat:workbench.registeredAsset`):e.method===`path`?r(`chat:workbench.pathReference`):r(`chat:workbench.invalidReference`)}),(0,K.jsx)(M,{variant:`secondary`,size:`sm`,className:`mt-1`,disabled:!e.available,onClick:t=>{l.current=t.currentTarget,c(e.id)},children:r(`chat:chatMessage.fileActionPreview`)})]})]},e.id)})]}),d&&(0,K.jsx)(G.Suspense,{fallback:null,children:(0,K.jsx)(se,{attachment:d.attachment,onClose:()=>c(``),onRestoreFocus:()=>l.current?.focus(),onDownload:()=>{typeof d.attachment.downloadUrl==`string`&&window.open(d.attachment.downloadUrl,`_blank`,`noopener,noreferrer`)}})})]})}function le({parentId:e,active:t}){let{t:n}=i(),{entry:r,runtime:a,load:o,setDraft:c}=S(e),l=r.session?.id??``,u=(0,G.useMemo)(()=>e=>a.subscribeSessionState(l,e),[a,l]),d=(0,G.useMemo)(()=>()=>a.getSessionState(l),[a,l]),f=(0,G.useSyncExternalStore)(u,d),[p,m]=(0,G.useState)(!1),[_,y]=(0,G.useState)(!1),[x,C]=(0,G.useState)(``),w=(0,G.useRef)(!1),T=(0,G.useRef)(!1),E=(0,G.useRef)(r.draft);E.current=r.draft;let O=(0,G.useRef)(null),A=N(e=>e.bindings),F=g(f,r.session);(0,G.useEffect)(()=>{t&&o(e)},[t,o,e]);let I=async t=>{t.preventDefault();let n=E.current.trim();if(!(!n||w.current||F||r.expired)){w.current=!0,m(!0),C(``);try{let t=await o(e,!r.session);if(!t?.session)return;let i=t.session.id;if(a.getSessionState(i).streaming)return;E.current.trim()===n&&c(e,``),m(!1),await a.send(i,n),await o(e)}catch(e){C(H(e))}finally{w.current=!1,m(!1)}}},L=(0,G.useCallback)(async()=>{if(!(!l||a.getSessionState(l).streaming)){C(``);try{await a.retry(l),await o(e)}catch(e){C(H(e))}}},[o,e,a,l]),R=async()=>{if(!(!l||_)){y(!0);try{C(``),await a.abort(l)}catch(e){C(H(e))}finally{y(!1)}}},z=(0,K.jsxs)(`div`,{className:`grid h-full min-h-36 place-content-center justify-items-center gap-2 px-3 text-center text-xs text-content-muted`,children:[(0,K.jsx)(`span`,{className:`mb-1 grid size-8 place-items-center rounded-md bg-key text-content-secondary shadow-key ring-1 ring-key-border`,children:(0,K.jsx)(D,{className:`size-4`,"aria-hidden":`true`})}),(0,K.jsx)(`p`,{className:`max-w-64 leading-relaxed`,children:r.expired?n(`chat:sideChat.expired`):n(`chat:sideChat.empty`)}),r.expired&&(0,K.jsxs)(M,{variant:`secondary`,size:`sm`,className:`mt-1`,disabled:r.loading,onClick:async()=>{(await o(e,!0))?.session&&O.current?.focus()},children:[r.loading&&(0,K.jsx)(j,{className:`size-3.5 text-current`}),n(`chat:sideChat.restart`)]})]}),B=x||r.error||f.error;return(0,K.jsxs)(`section`,{"data-side-chat-parent":e,"aria-label":n(`chat:sideChat.title`),className:`flex h-full min-h-0 min-w-0 flex-1 flex-col [container-type:inline-size]`,children:[(0,K.jsx)(`p`,{className:`shrink-0 border-b border-stroke-soft px-3 py-2 text-xs leading-relaxed text-content-muted`,children:n(`chat:sideChat.retention`)}),l?(0,K.jsx)(b,{sessionId:l,messages:f.messages,transcriptLoadState:f.loaded?`ready`:f.error?`error`:`loading`,emptyState:z,messageStart:f.messageStart,hasOlder:f.hasOlder,loadingOlder:f.loadingOlder,olderError:f.olderError,activityFeed:f.activityFeed,tools:f.tools,thinkingText:f.thinkingText,currentActivity:f.currentActivity,compaction:f.compaction,streaming:F,runStartedAt:f.runStartedAt,lastActivityAt:f.lastActivityAt,runFinishedAt:f.runFinishedAt,runStopped:f.runStopped,runNotice:f.runNotice,error:f.error,cwd:r.session?.cwd,onLoadOlder:()=>a.loadOlderMessages(l),onRetryLastTurn:L}):(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:z}),(0,K.jsxs)(`form`,{className:`flex shrink-0 flex-col gap-2 border-t border-stroke-soft p-3`,onSubmit:I,children:[B&&(0,K.jsx)(v,{error:B,onRetry:r.error||!f.loaded?async()=>{await o(e)}:L}),(0,K.jsx)(h,{approvals:f.approvals,onResolve:async(e,t)=>{try{await a.approve(l,e,t)}catch{}}}),(0,K.jsxs)(`div`,{className:`flex min-w-0 items-end gap-2 rounded-[var(--composer-radius,22px)] border border-control bg-panel py-2 pr-2 pl-3 shadow-composer transition-[border-color,box-shadow] duration-(--d-fast) focus-within:border-focus focus-within:ring-3 focus-within:ring-focus-ring`,children:[(0,K.jsx)(`textarea`,{ref:O,rows:2,value:r.draft,"aria-label":n(`chat:sideChat.message`),placeholder:n(`chat:sideChat.placeholder`),className:`max-h-40 min-h-14 min-w-0 flex-1 resize-y border-0 bg-transparent px-1 py-1 text-sm leading-relaxed text-content caret-focus outline-none placeholder:text-content-muted`,onChange:t=>c(e,t.target.value),onCompositionStart:()=>{T.current=!0},onCompositionEnd:()=>{T.current=!1},onKeyDown:e=>{!T.current&&!e.nativeEvent.isComposing&&e.nativeEvent.keyCode!==229&&P(e.nativeEvent,A.sendMessage)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())}}),(0,K.jsx)(M,{type:F?`button`:`submit`,size:`icon`,className:`size-8 shrink-0 rounded-full max-[650px]:size-11 pointer-coarse:size-11`,"aria-label":n(F?`chat:sideChat.stop`:`chat:sideChat.send`),disabled:F?_:p||r.loading||r.expired||!r.draft.trim(),onClick:F?()=>void R():void 0,children:p||_?(0,K.jsx)(j,{className:`size-4 text-current`}):F?(0,K.jsx)(k,{size:13,fill:`currentColor`}):(0,K.jsx)(s,{size:17})})]})]})]})}var $=(0,G.createContext)(null),ue=()=>{let e=(0,G.useContext)($);if(!e)throw Error(`WebPreview components must be used within a WebPreview`);return e},de=({className:e,children:t,defaultUrl:n=``,onUrlChange:r,...i})=>{let[a,o]=(0,G.useState)(n),[s,c]=(0,G.useState)(!1),l=(0,G.useCallback)(e=>{o(e),r?.(e)},[r]),u=(0,G.useMemo)(()=>({consoleOpen:s,setConsoleOpen:c,setUrl:l,url:a}),[s,l,a]);return(0,K.jsx)($.Provider,{value:u,children:(0,K.jsx)(`div`,{className:A(`flex size-full min-h-0 flex-col rounded-lg border bg-card`,e),...i,children:t})})},fe=({className:e,loading:t,src:n,...r})=>{let{url:i}=ue();return(0,K.jsxs)(`div`,{className:`relative min-h-0 flex-1 overflow-hidden bg-background`,children:[(0,K.jsx)(`iframe`,{className:A(`block size-full border-0 bg-background`,e),loading:`lazy`,sandbox:`allow-scripts allow-same-origin allow-forms allow-popups allow-presentation`,src:(n??i)||void 0,title:`Preview`,...r}),t]})};function pe({page:e,onChange:t}){let{t:n}=i(),{draft:r,url:a}=e,[o,s]=(0,G.useState)(!1);return(0,K.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col gap-2 p-3`,"aria-label":n(`common:webPreview.title`),children:[(0,K.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault();let n=V(r,window.location.href);s(!n),n&&t({url:n})},children:[(0,K.jsx)(R,{"aria-label":n(`common:webPreview.url`),className:`flex-1 font-mono`,value:r,onChange:e=>t({draft:e.target.value}),placeholder:n(`common:webPreview.urlPlaceholder`),maxLength:2048}),(0,K.jsx)(M,{type:`submit`,variant:`secondary`,children:n(`chat:sessionContext.openUrl`)})]}),o&&(0,K.jsx)(`p`,{role:`alert`,className:`text-xs text-danger`,children:n(`chat:sessionContext.invalidUrl`)}),a?(0,K.jsx)(de,{className:`min-h-0 flex-1 overflow-hidden rounded-md border-stroke`,defaultUrl:a,children:(0,K.jsx)(fe,{src:a,title:n(`common:webPreview.title`)})},a):(0,K.jsx)(L,{icon:d,className:`min-h-0 flex-1`,title:n(`chat:sessionContext.browserEmpty`)}),a&&(0,K.jsxs)(M,{type:`button`,variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>window.open(a,`_blank`,`noopener,noreferrer`),children:[(0,K.jsx)(f,{size:14}),n(`common:webPreview.openExternal`)]}),(0,K.jsx)(`p`,{className:`text-xs text-content-muted`,children:n(`common:webPreview.embedNotice`)})]})}export{ae as a,Z as c,oe as i,te as l,le as n,ie as o,ce as r,re as s,pe as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GitDiffViewer-4ea3jm5E.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-DUgHBsG5.js","assets/i18n-BMMXA_dY.js","assets/vendor-router-CSN_DGvx.js","assets/index-Ciq5zG6s.js","assets/index-CfTBR7Rs.css","assets/storage-BY6wEHPw.js","assets/vendor-state-GkUciC5H.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/x-07u4-129.js","assets/utils-C8uzG5AZ.js","assets/vendor-ui-DvrYggeS.js","assets/button-CCcCN8tE.js","assets/dist-41X0pdUs.js","assets/events-CsDpIEpa.js","assets/esm-DCV8yILT.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-DUgHBsG5.js";import{i as a}from"./runtime-capabilities-4_ZwLBqF.js";import{t as o}from"./runtime-capabilities-store-BrQ24OXo.js";import{a as s}from"./permission-rules-api-DJZQfffF.js";import{t as c}from"./arrow-left-B8oVrQ2S.js";import{t as l}from"./check-2vYc6QaP.js";import{t as u}from"./chevron-right-C3t2Rckj.js";import{a as d,c as f,i as p,l as m,n as h,o as g,r as _,s as v,t as y}from"./SessionBrowserPane-nAItO1A5.js";import{t as b}from"./earth-Ddy13fHh.js";import{i as x,o as S}from"./GitDiffViewer-4ea3jm5E.js";import{A as C,M as w,P as T,_ as E,g as D,h as O}from"./side-chat-context-DaUmbt1Y.js";import{t as k}from"./link-2-mgasYn21.js";import{t as A}from"./message-square-SKjZyY3v.js";import{t as j}from"./plus-fQbSqB1n.js";import{t as M}from"./refresh-cw-TbWxTY4K.js";import{t as N}from"./square-terminal-BVG6cUT1.js";import{t as P}from"./x-07u4-129.js";import{n as F,t as I}from"./button-CCcCN8tE.js";import{s as L}from"./events-CsDpIEpa.js";import{a as ee,n as te,o as ne,t as re}from"./sheet-BTaIEX4w.js";import{n as R,t as z}from"./PageState-Cz6vFMXv.js";import{t as B}from"./input-CPw-zkYh.js";import{t as V}from"./web-preview-LghC_QcR.js";import{n as ie}from"./terminal-context-aIsIJPn8.js";var H=e(n(),1),U=r(),W=(0,H.lazy)(()=>t(()=>import(`./GitDiffViewer-4ea3jm5E.js`).then(e=>e.n).then(e=>({default:e.GitDiffDialog})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]))),G=100;function ae({sessionId:e,streaming:t,requestConfirm:n,view:r,onViewChange:a}){let{t:o}=i(),s=x(r?.reading?.list,e=>a?.({reading:{...r?.reading,list:e}})),[c,d]=(0,H.useState)([]),p=r?.expandedFiles||c,m=e=>a?a({expandedFiles:e}):d(e),{changes:h,loading:_,running:v,diff:y,setDiff:b,diffLoading:w,snapshotRevision:T,writesDisabled:E,pendingCount:D,reversibleCount:O,displayedError:k,notice:A,viewDiff:j,runAction:N,refresh:P}=g({sessionId:e,streaming:t,requestConfirm:n}),L=`max-[650px]:size-11 pointer-coarse:size-11`;return(0,U.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col`,"aria-label":o(`chat:focusSession.fileChanges`),"aria-busy":_||!!v,children:[(0,U.jsxs)(`header`,{className:`flex min-h-10 min-w-0 shrink-0 items-center gap-2 border-b border-stroke-soft pr-1.5 pl-3`,children:[(0,U.jsx)(`h2`,{className:`min-w-0 flex-1 truncate text-xs font-medium tracking-[.02em] text-content-muted`,children:o(`chat:focusSession.fileChanges`)}),h&&(0,U.jsxs)(`span`,{className:`shrink-0 font-mono text-xs tabular-nums`,children:[(0,U.jsxs)(`span`,{className:`text-success`,children:[`+`,h.summary.added]}),` `,(0,U.jsxs)(`span`,{className:`text-danger`,children:[`−`,h.summary.removed]})]}),(0,U.jsx)(I,{type:`button`,variant:`ghost`,size:`icon`,className:L,"aria-label":o(`chat:focusSession.gitRefresh`),title:o(`chat:focusSession.gitRefresh`),disabled:_||!!v,onClick:P,children:(0,U.jsx)(M,{className:_?`animate-spin`:``,size:15})})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b border-stroke-soft px-3 py-2.5`,children:[h&&(0,U.jsxs)(`p`,{className:`text-xs text-content-secondary tabular-nums`,children:[o(`chat:focusSession.fileChangesCount`,{count:h.summary.files}),D>0&&` · ${o(`chat:focusSession.fileChangesPending`,{count:D})}`]}),(0,U.jsx)(`p`,{className:`text-xs leading-relaxed text-content-muted`,children:o(`chat:workbench.taskSnapshotScope`)}),(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-1`,children:[(0,U.jsxs)(`div`,{className:`flex gap-1`,children:[(0,U.jsxs)(I,{type:`button`,variant:`secondary`,size:`sm`,disabled:E||D===0,title:t?o(`chat:focusSession.gitWaitForRunToFinish`):void 0,onClick:()=>void N({kind:`approve`}),children:[v?.kind===`approve`&&!v.path?(0,U.jsx)(M,{className:`animate-spin`,size:14}):(0,U.jsx)(l,{size:14}),o(`chat:focusSession.fileChangesApproveAll`)]}),(0,U.jsxs)(I,{type:`button`,variant:`secondary`,size:`sm`,disabled:E||O===0,title:o(t?`chat:focusSession.gitWaitForRunToFinish`:`chat:focusSession.fileChangesRevertAllDescription`),onClick:()=>void N({kind:`revert`}),children:[v?.kind===`revert`&&!v.path?(0,U.jsx)(M,{className:`animate-spin`,size:14}):(0,U.jsx)(C,{size:14}),o(`chat:focusSession.fileChangesRevertAll`)]})]}),(0,U.jsxs)(`div`,{className:`flex gap-1`,children:[(0,U.jsx)(I,{variant:`ghost`,size:`sm`,disabled:_||!h?.files.length,onClick:()=>m(h?.files.slice(0,G).map(e=>e.path)||[]),children:o(`chat:workbench.expandAll`)}),(0,U.jsx)(I,{variant:`ghost`,size:`sm`,onClick:()=>m([]),children:o(`chat:workbench.collapseAll`)})]})]})]}),k&&(0,U.jsx)(`p`,{role:`alert`,className:`px-3 pt-2.5 text-xs text-danger`,children:k}),A&&!k&&(0,U.jsx)(`p`,{role:`status`,className:`px-3 pt-2.5 text-xs text-content-secondary`,children:A}),_&&!h?(0,U.jsx)(R,{kind:`loading`,title:o(`chat:focusSession.gitLoading`)}):h?.files.length?(0,U.jsxs)(`ul`,{ref:s.ref,className:`min-h-0 flex-1 overflow-y-auto`,"aria-label":o(`chat:focusSession.fileChanges`),children:[h.files.slice(0,G).map(t=>{let n=p.includes(t.path);return(0,U.jsxs)(`li`,{className:`min-w-0 border-b border-stroke-soft`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-0.5 pr-1.5 hover:bg-surface-subtle ${n?`bg-surface-subtle`:``}`,children:[(0,U.jsxs)(`button`,{type:`button`,className:`flex min-h-9 min-w-0 flex-1 items-center gap-2 pl-2 text-left text-xs focus-visible:-outline-offset-2 disabled:opacity-60 max-[650px]:min-h-11 pointer-coarse:min-h-11`,title:t.path,disabled:_||!!v,"aria-busy":w===t.path,"aria-expanded":n,onClick:()=>m(n?p.filter(e=>e!==t.path):[...p,t.path]),children:[(0,U.jsx)(u,{size:14,className:`shrink-0 text-content-muted transition-transform duration-(--d-fast) ${n?`rotate-90`:``}`}),w===t.path?(0,U.jsx)(F,{className:`size-3.5`}):(0,U.jsx)(S,{size:14,className:`flex-none text-content-muted`}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono`,children:t.path}),(t.reverted||t.approved)&&(0,U.jsx)(`span`,{className:`shrink-0 text-content-muted`,children:t.reverted?o(`chat:focusSession.fileChangesReverted`):o(`chat:focusSession.fileChangesApproved`)}),(0,U.jsxs)(`span`,{className:`shrink-0 font-mono tabular-nums`,children:[(0,U.jsxs)(`span`,{className:`text-success`,children:[`+`,t.added]}),` `,(0,U.jsxs)(`span`,{className:`text-danger`,children:[`−`,t.removed]})]})]}),(0,U.jsx)(I,{type:`button`,variant:`ghost`,size:`icon`,className:L,title:o(`chat:focusSession.fileChangesApproveFile`),"aria-label":`${o(`chat:focusSession.fileChangesApproveFile`)} ${t.path}`,disabled:E||!t.pending||t.approved||t.reverted,onClick:()=>void N({kind:`approve`,path:t.path}),children:(0,U.jsx)(l,{size:14})}),(0,U.jsx)(I,{type:`button`,variant:`ghost`,size:`icon`,className:L,title:o(`chat:focusSession.fileChangesRevertFile`),"aria-label":`${o(`chat:focusSession.fileChangesRevertFile`)} ${t.path}`,disabled:E||t.reverted||!t.canRevert,onClick:()=>void N({kind:`revert`,path:t.path}),children:(0,U.jsx)(C,{size:14})})]}),n&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(f,{sessionId:e,path:t.path,scope:`task`,position:r?.reading?.[t.path],onReading:e=>a?.({reading:{...r?.reading,[t.path]:e}}),revision:T}),(0,U.jsx)(I,{variant:`ghost`,size:`sm`,className:`m-1.5`,onClick:()=>void j(t.path),children:o(`chat:workbench.fullDiff`)})]})]},t.path)}),h.files.length>G&&(0,U.jsx)(`li`,{className:`px-3 py-2 text-xs text-content-muted tabular-nums`,children:o(`chat:focusSession.gitMoreFiles`,{count:h.files.length-G})})]}):!k&&(0,U.jsx)(z,{compact:!0,title:o(`chat:focusSession.fileChangesEmpty`)}),y&&(0,U.jsx)(H.Suspense,{fallback:null,children:(0,U.jsx)(W,{diff:y.diff,truncated:y.truncated,onClose:()=>b(null)})})]})}function oe({tools:e,onSelect:t,onOpenUrl:n}){let{t:r}=i(),[a,o]=(0,H.useState)(``),[s,c]=(0,H.useState)(!1);return(0,U.jsxs)(`section`,{className:`@container/new-tab flex min-h-0 flex-1 flex-col overflow-y-auto bg-panel p-4`,children:[(0,U.jsx)(`h2`,{className:`mb-3 text-sm font-medium text-content`,children:r(`chat:workbench.newTab`)}),(0,U.jsxs)(`form`,{className:`mb-4 flex gap-2`,onSubmit:e=>{e.preventDefault();let t=V(a,window.location.href);c(!t),t&&n(t)},children:[(0,U.jsx)(B,{className:`font-mono`,"aria-label":r(`common:webPreview.url`),placeholder:r(`common:webPreview.urlPlaceholder`),value:a,maxLength:2048,onChange:e=>o(e.target.value)}),(0,U.jsx)(I,{type:`submit`,variant:`secondary`,children:r(`chat:sessionContext.openUrl`)})]}),s&&(0,U.jsx)(`p`,{role:`alert`,className:`mb-3 text-xs text-danger`,children:r(`chat:sessionContext.invalidUrl`)}),(0,U.jsx)(`div`,{className:`grid grid-cols-1 gap-1.5 @min-[420px]/new-tab:grid-cols-2`,children:e.map(({id:e,label:n,icon:r,disabled:i})=>(0,U.jsxs)(I,{disabled:i,variant:`ghost`,className:`h-10 min-w-0 justify-start gap-2.5 border-stroke bg-panel px-3 font-normal text-content max-[650px]:h-11 pointer-coarse:h-11 [&_svg]:text-content-muted`,onClick:()=>t(e),children:[(0,U.jsx)(r,{className:`size-4 shrink-0`}),(0,U.jsx)(`span`,{className:`truncate`,children:n})]},e))})]})}function K({panelId:e,compact:t,embedded:n=!1,active:r=!0,sessionId:l,cwd:u=``,sources:f=[],tab:g,plan:x,streaming:C,plansAvailable:M,requestConfirm:F,onTabChange:R,onClose:B,onBack:V}){let{t:W}=i(),G=ie(),K=o(e=>e.capabilities),q=[{id:`terminal`,icon:N,label:W(`terminal:workspace.terminal`)},{id:`processes`,icon:s,label:W(`terminal:workspace.processes`)},{id:`changes`,icon:S,label:W(`chat:workbench.projectChanges`)},{id:`sources`,icon:k,label:W(`chat:workbench.sources`)},{id:`files`,icon:T,label:W(`chat:workbench.taskSnapshots`)},...M?[{id:`plan`,icon:w,label:W(`chat:sessionContext.plan`)}]:[],{id:`browser`,icon:b,label:W(`common:webPreview.title`)},{id:`side-chat`,icon:A,label:W(`chat:sideChat.title`)}],se=(0,H.useMemo)(()=>D(g),[g]),J=O(e=>Object.prototype.hasOwnProperty.call(e.sessions,l)?e.sessions[l]:void 0)??se,ce=(0,H.useRef)(null),Y=J.pages.find(e=>e.id===J.activeId)??J.pages[0],X=e=>e.kind===`new`?{id:`new`,icon:j,label:W(`chat:workbench.newTab`)}:q.find(t=>t.id===e.kind)??q[0],le=t=>requestAnimationFrame(()=>document.getElementById(`${e}-${t}-tab`)?.focus()),ue=(0,H.useEffectEvent)(()=>{r&&document.getElementById(`${e}-${J.activeId}-tab`)?.focus()});(0,H.useEffect)(()=>{let e=requestAnimationFrame(()=>ue());return()=>cancelAnimationFrame(e)},[e,J.activeId]);let Z=e=>{if(e.type===`view`&&!O.getState().sessions[l])return;[`add`,`open`,`select`,`close`,`kind`].includes(e.type)&&window.dispatchEvent(new Event(L));let t=E(J,e);O.getState().update(l,g,e);let n=t.pages.find(e=>e.id===t.activeId);n&&R(n.kind),(e.type===`add`||e.type===`select`||e.type===`close`)&&le(t.activeId),e.type===`close`&&J.pages.length===1&&B()},Q=W(`chat:sessionContext.addPage`),de=W(`chat:sessionContext.pageLimit`),fe=(0,U.jsx)(I,{variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,disabled:J.pages.length>=12,"aria-label":Q,title:J.pages.length>=12?de:Q,onClick:()=>Z({type:`add`,kind:`new`}),children:(0,U.jsx)(j,{size:16})}),$=(0,U.jsxs)(`div`,{"data-session-context-panel":!0,className:`flex h-full min-h-0 min-w-0 flex-col bg-panel text-content`,children:[(0,U.jsxs)(`header`,{"data-window-drag-region":!0,className:`auxiliary-page-header flex h-12 shrink-0 items-center gap-1 border-b border-stroke-soft px-2`,children:[V&&(0,U.jsx)(I,{variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,"aria-label":W(`chat:workbench.backToConversation`),title:W(`chat:workbench.backToConversation`),onClick:V,children:(0,U.jsx)(c,{size:16})}),(0,U.jsx)(`div`,{ref:ce,className:`flex min-w-0 flex-1 items-center gap-0.5 overflow-x-auto px-px py-1 [scrollbar-width:none]`,role:`tablist`,"aria-label":W(`chat:sessionContext.title`),onKeyDown:e=>{if(!(e.target instanceof HTMLElement)||e.target.getAttribute(`role`)!==`tab`)return;if(e.key===`Delete`){e.preventDefault(),Z({type:`close`,id:Y.id});return}if(![`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key))return;e.preventDefault();let t=J.pages.findIndex(e=>e.id===Y.id),n=e.key===`Home`?0:e.key===`End`?J.pages.length-1:(t+(e.key===`ArrowRight`?1:-1)+J.pages.length)%J.pages.length;Z({type:`select`,id:J.pages[n].id})},children:J.pages.map(t=>{let{icon:n,label:r}=X(t);return(0,U.jsxs)(`div`,{className:`relative flex max-w-40 min-w-20 shrink-0 items-center rounded-sm transition-colors duration-(--d-fast) ${t.id===Y.id?`bg-key font-medium text-content shadow-key ring-1 ring-key-border after:absolute after:inset-x-2 after:bottom-0 after:h-0.5 after:rounded-full after:bg-star`:`text-content-muted hover:bg-surface-hover hover:text-content`}`,children:[(0,U.jsxs)(`button`,{id:`${e}-${t.id}-tab`,type:`button`,role:`tab`,"aria-selected":t.id===Y.id,"aria-controls":`${e}-${t.id}-content`,tabIndex:t.id===Y.id?0:-1,className:`flex h-7 min-w-0 flex-1 items-center gap-1.5 rounded-sm pl-2 text-sm focus-visible:outline-offset-0 max-[650px]:h-11`,onClick:()=>Z({type:`select`,id:t.id}),children:[(0,U.jsx)(n,{size:14,className:`shrink-0`}),(0,U.jsx)(`span`,{className:`truncate`,children:r})]}),(0,U.jsx)(`button`,{type:`button`,className:`mx-0.5 grid size-5 shrink-0 place-items-center rounded-xs text-content-muted hover:bg-surface-hover hover:text-content focus-visible:outline-offset-0 max-[650px]:size-11`,"aria-label":`${W(`chat:sessionContext.closePage`)} · ${r}`,onClick:()=>Z({type:`close`,id:t.id}),children:(0,U.jsx)(P,{size:12})})]},t.id)})}),fe]}),J.pages.map(t=>{let n=X(t),r=Y.id===t.id;return(0,U.jsx)(`div`,{id:`${e}-${t.id}-content`,role:`tabpanel`,"aria-labelledby":`${e}-${t.id}-tab`,className:r?`flex min-h-0 flex-1 flex-col`:`hidden`,hidden:!r,children:n.id===`new`?r&&(0,U.jsx)(oe,{tools:q.map(e=>({...e,disabled:e.id===`terminal`||e.id===`processes`?!G||!a(K,`terminal`):e.id===`changes`&&!a(K,`vcs`)})),onOpenUrl:e=>{Z({type:`open`,kind:`browser`,replaceId:t.id}),O.getState().update(l,`browser`,{type:`browser`,id:t.id,url:e,draft:e})},onSelect:e=>Z({type:`open`,kind:e,replaceId:t.id})}):n.id===`changes`?r&&(0,U.jsx)(v,{sessionId:l,cwd:u,streaming:C,view:t.view,onViewChange:e=>Z({type:`view`,id:t.id,patch:e})}):n.id===`sources`?r&&(0,U.jsx)(_,{sources:f,view:t.view,onViewChange:e=>Z({type:`view`,id:t.id,patch:e})}):n.id===`terminal`?r&&(0,U.jsx)(d,{sessionId:l,cwd:u,terminalId:t.resourceId||void 0,onCreated:e=>O.getState().update(l,g,{type:`resource`,id:t.id,resourceId:e})}):n.id===`processes`?r&&(0,U.jsx)(p,{view:t.view,onViewChange:e=>Z({type:`view`,id:t.id,patch:e}),sessionId:l,onOpenTerminal:e=>Z({type:`open`,kind:`terminal`,resourceId:e})}):n.id===`side-chat`?(0,U.jsx)(h,{parentId:l,active:r}):n.id===`browser`?(0,U.jsx)(y,{page:t,onChange:e=>Z({type:`browser`,id:t.id,...e})}):r&&(n.id===`files`?(0,U.jsx)(ae,{view:t.view,onViewChange:e=>Z({type:`view`,id:t.id,patch:e}),sessionId:l,streaming:C,requestConfirm:F}):(0,U.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-3`,children:x?.items?.length?(0,U.jsx)(m,{plan:x}):(0,U.jsx)(z,{compact:!0,title:W(`chat:sessionContext.planEmpty`)})}))},t.id)})]});return t?(0,U.jsx)(re,{open:!0,onOpenChange:e=>!e&&B(),children:(0,U.jsxs)(te,{id:e,side:`right`,showCloseButton:!1,className:`gap-0 overflow-hidden p-0`,style:{top:`var(--pisper-safe-area-top)`,right:`var(--pisper-safe-area-right)`,bottom:`var(--pisper-safe-area-bottom)`,height:`auto`,width:`min(calc(100vw - var(--pisper-safe-area-left) - var(--pisper-safe-area-right)), 420px)`,maxWidth:`none`},children:[(0,U.jsx)(ee,{className:`sr-only`,children:(0,U.jsx)(ne,{children:W(`chat:sessionContext.title`)})}),$]})}):(0,U.jsx)(`aside`,{id:e,tabIndex:n?-1:void 0,className:`h-full min-h-0 w-full overflow-hidden border-l border-stroke bg-panel`,"aria-label":W(`chat:sessionContext.title`),children:$})}export{K as SessionContextPanel};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GitDiffViewer-rjt5_KOt.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-B5p-Kzvz.js","assets/i18n-CHmr7GzM.js","assets/vendor-router-CSN_DGvx.js","assets/index-CsE52ydO.js","assets/index-CfTBR7Rs.css","assets/storage-BY6wEHPw.js","assets/vendor-state-GkUciC5H.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/x-07u4-129.js","assets/utils-C8uzG5AZ.js","assets/vendor-ui-DvrYggeS.js","assets/button-CCcCN8tE.js","assets/dist-41X0pdUs.js","assets/events-DrAPv0se.js","assets/esm-DCV8yILT.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-B5p-Kzvz.js";import{i as a}from"./runtime-capabilities-4_ZwLBqF.js";import{t as o}from"./runtime-capabilities-store-C2Qv7uDP.js";import{a as s}from"./permission-rules-api-BoJ_1W-m.js";import{t as c}from"./arrow-left-B8oVrQ2S.js";import{t as l}from"./check-2vYc6QaP.js";import{t as u}from"./chevron-right-C3t2Rckj.js";import{a as d,c as f,i as p,l as m,n as h,o as g,r as _,s as v,t as y}from"./SessionBrowserPane-CB7jn-MS.js";import{t as b}from"./earth-Ddy13fHh.js";import{i as x,o as S}from"./GitDiffViewer-rjt5_KOt.js";import{A as C,M as w,P as T,_ as E,g as D,h as O}from"./side-chat-context-BfOm4dFp.js";import{t as k}from"./link-2-mgasYn21.js";import{t as A}from"./message-square-SKjZyY3v.js";import{t as j}from"./plus-fQbSqB1n.js";import{t as M}from"./refresh-cw-TbWxTY4K.js";import{t as N}from"./square-terminal-BVG6cUT1.js";import{t as P}from"./x-07u4-129.js";import{n as F,t as I}from"./button-CCcCN8tE.js";import{s as L}from"./events-DrAPv0se.js";import{a as ee,n as te,o as ne,t as re}from"./sheet-BTaIEX4w.js";import{n as R,t as z}from"./PageState-Cz6vFMXv.js";import{t as B}from"./input-CPw-zkYh.js";import{t as V}from"./web-preview-CqwSe9Zn.js";import{n as ie}from"./terminal-context-aIsIJPn8.js";var H=e(n(),1),U=r(),W=(0,H.lazy)(()=>t(()=>import(`./GitDiffViewer-rjt5_KOt.js`).then(e=>e.n).then(e=>({default:e.GitDiffDialog})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]))),G=100;function ae({sessionId:e,streaming:t,requestConfirm:n,view:r,onViewChange:a}){let{t:o}=i(),s=x(r?.reading?.list,e=>a?.({reading:{...r?.reading,list:e}})),[c,d]=(0,H.useState)([]),p=r?.expandedFiles||c,m=e=>a?a({expandedFiles:e}):d(e),{changes:h,loading:_,running:v,diff:y,setDiff:b,diffLoading:w,snapshotRevision:T,writesDisabled:E,pendingCount:D,reversibleCount:O,displayedError:k,notice:A,viewDiff:j,runAction:N,refresh:P}=g({sessionId:e,streaming:t,requestConfirm:n}),L=`max-[650px]:size-11 pointer-coarse:size-11`;return(0,U.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col`,"aria-label":o(`chat:focusSession.fileChanges`),"aria-busy":_||!!v,children:[(0,U.jsxs)(`header`,{className:`flex min-h-10 min-w-0 shrink-0 items-center gap-2 border-b border-stroke-soft pr-1.5 pl-3`,children:[(0,U.jsx)(`h2`,{className:`min-w-0 flex-1 truncate text-xs font-medium tracking-[.02em] text-content-muted`,children:o(`chat:focusSession.fileChanges`)}),h&&(0,U.jsxs)(`span`,{className:`shrink-0 font-mono text-xs tabular-nums`,children:[(0,U.jsxs)(`span`,{className:`text-success`,children:[`+`,h.summary.added]}),` `,(0,U.jsxs)(`span`,{className:`text-danger`,children:[`−`,h.summary.removed]})]}),(0,U.jsx)(I,{type:`button`,variant:`ghost`,size:`icon`,className:L,"aria-label":o(`chat:focusSession.gitRefresh`),title:o(`chat:focusSession.gitRefresh`),disabled:_||!!v,onClick:P,children:(0,U.jsx)(M,{className:_?`animate-spin`:``,size:15})})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b border-stroke-soft px-3 py-2.5`,children:[h&&(0,U.jsxs)(`p`,{className:`text-xs text-content-secondary tabular-nums`,children:[o(`chat:focusSession.fileChangesCount`,{count:h.summary.files}),D>0&&` · ${o(`chat:focusSession.fileChangesPending`,{count:D})}`]}),(0,U.jsx)(`p`,{className:`text-xs leading-relaxed text-content-muted`,children:o(`chat:workbench.taskSnapshotScope`)}),(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-1`,children:[(0,U.jsxs)(`div`,{className:`flex gap-1`,children:[(0,U.jsxs)(I,{type:`button`,variant:`secondary`,size:`sm`,disabled:E||D===0,title:t?o(`chat:focusSession.gitWaitForRunToFinish`):void 0,onClick:()=>void N({kind:`approve`}),children:[v?.kind===`approve`&&!v.path?(0,U.jsx)(M,{className:`animate-spin`,size:14}):(0,U.jsx)(l,{size:14}),o(`chat:focusSession.fileChangesApproveAll`)]}),(0,U.jsxs)(I,{type:`button`,variant:`secondary`,size:`sm`,disabled:E||O===0,title:o(t?`chat:focusSession.gitWaitForRunToFinish`:`chat:focusSession.fileChangesRevertAllDescription`),onClick:()=>void N({kind:`revert`}),children:[v?.kind===`revert`&&!v.path?(0,U.jsx)(M,{className:`animate-spin`,size:14}):(0,U.jsx)(C,{size:14}),o(`chat:focusSession.fileChangesRevertAll`)]})]}),(0,U.jsxs)(`div`,{className:`flex gap-1`,children:[(0,U.jsx)(I,{variant:`ghost`,size:`sm`,disabled:_||!h?.files.length,onClick:()=>m(h?.files.slice(0,G).map(e=>e.path)||[]),children:o(`chat:workbench.expandAll`)}),(0,U.jsx)(I,{variant:`ghost`,size:`sm`,onClick:()=>m([]),children:o(`chat:workbench.collapseAll`)})]})]})]}),k&&(0,U.jsx)(`p`,{role:`alert`,className:`px-3 pt-2.5 text-xs text-danger`,children:k}),A&&!k&&(0,U.jsx)(`p`,{role:`status`,className:`px-3 pt-2.5 text-xs text-content-secondary`,children:A}),_&&!h?(0,U.jsx)(R,{kind:`loading`,title:o(`chat:focusSession.gitLoading`)}):h?.files.length?(0,U.jsxs)(`ul`,{ref:s.ref,className:`min-h-0 flex-1 overflow-y-auto`,"aria-label":o(`chat:focusSession.fileChanges`),children:[h.files.slice(0,G).map(t=>{let n=p.includes(t.path);return(0,U.jsxs)(`li`,{className:`min-w-0 border-b border-stroke-soft`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-0.5 pr-1.5 hover:bg-surface-subtle ${n?`bg-surface-subtle`:``}`,children:[(0,U.jsxs)(`button`,{type:`button`,className:`flex min-h-9 min-w-0 flex-1 items-center gap-2 pl-2 text-left text-xs focus-visible:-outline-offset-2 disabled:opacity-60 max-[650px]:min-h-11 pointer-coarse:min-h-11`,title:t.path,disabled:_||!!v,"aria-busy":w===t.path,"aria-expanded":n,onClick:()=>m(n?p.filter(e=>e!==t.path):[...p,t.path]),children:[(0,U.jsx)(u,{size:14,className:`shrink-0 text-content-muted transition-transform duration-(--d-fast) ${n?`rotate-90`:``}`}),w===t.path?(0,U.jsx)(F,{className:`size-3.5`}):(0,U.jsx)(S,{size:14,className:`flex-none text-content-muted`}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono`,children:t.path}),(t.reverted||t.approved)&&(0,U.jsx)(`span`,{className:`shrink-0 text-content-muted`,children:t.reverted?o(`chat:focusSession.fileChangesReverted`):o(`chat:focusSession.fileChangesApproved`)}),(0,U.jsxs)(`span`,{className:`shrink-0 font-mono tabular-nums`,children:[(0,U.jsxs)(`span`,{className:`text-success`,children:[`+`,t.added]}),` `,(0,U.jsxs)(`span`,{className:`text-danger`,children:[`−`,t.removed]})]})]}),(0,U.jsx)(I,{type:`button`,variant:`ghost`,size:`icon`,className:L,title:o(`chat:focusSession.fileChangesApproveFile`),"aria-label":`${o(`chat:focusSession.fileChangesApproveFile`)} ${t.path}`,disabled:E||!t.pending||t.approved||t.reverted,onClick:()=>void N({kind:`approve`,path:t.path}),children:(0,U.jsx)(l,{size:14})}),(0,U.jsx)(I,{type:`button`,variant:`ghost`,size:`icon`,className:L,title:o(`chat:focusSession.fileChangesRevertFile`),"aria-label":`${o(`chat:focusSession.fileChangesRevertFile`)} ${t.path}`,disabled:E||t.reverted||!t.canRevert,onClick:()=>void N({kind:`revert`,path:t.path}),children:(0,U.jsx)(C,{size:14})})]}),n&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(f,{sessionId:e,path:t.path,scope:`task`,position:r?.reading?.[t.path],onReading:e=>a?.({reading:{...r?.reading,[t.path]:e}}),revision:T}),(0,U.jsx)(I,{variant:`ghost`,size:`sm`,className:`m-1.5`,onClick:()=>void j(t.path),children:o(`chat:workbench.fullDiff`)})]})]},t.path)}),h.files.length>G&&(0,U.jsx)(`li`,{className:`px-3 py-2 text-xs text-content-muted tabular-nums`,children:o(`chat:focusSession.gitMoreFiles`,{count:h.files.length-G})})]}):!k&&(0,U.jsx)(z,{compact:!0,title:o(`chat:focusSession.fileChangesEmpty`)}),y&&(0,U.jsx)(H.Suspense,{fallback:null,children:(0,U.jsx)(W,{diff:y.diff,truncated:y.truncated,onClose:()=>b(null)})})]})}function oe({tools:e,onSelect:t,onOpenUrl:n}){let{t:r}=i(),[a,o]=(0,H.useState)(``),[s,c]=(0,H.useState)(!1);return(0,U.jsxs)(`section`,{className:`@container/new-tab flex min-h-0 flex-1 flex-col overflow-y-auto bg-panel p-4`,children:[(0,U.jsx)(`h2`,{className:`mb-3 text-sm font-medium text-content`,children:r(`chat:workbench.newTab`)}),(0,U.jsxs)(`form`,{className:`mb-4 flex gap-2`,onSubmit:e=>{e.preventDefault();let t=V(a,window.location.href);c(!t),t&&n(t)},children:[(0,U.jsx)(B,{className:`font-mono`,"aria-label":r(`common:webPreview.url`),placeholder:r(`common:webPreview.urlPlaceholder`),value:a,maxLength:2048,onChange:e=>o(e.target.value)}),(0,U.jsx)(I,{type:`submit`,variant:`secondary`,children:r(`chat:sessionContext.openUrl`)})]}),s&&(0,U.jsx)(`p`,{role:`alert`,className:`mb-3 text-xs text-danger`,children:r(`chat:sessionContext.invalidUrl`)}),(0,U.jsx)(`div`,{className:`grid grid-cols-1 gap-1.5 @min-[420px]/new-tab:grid-cols-2`,children:e.map(({id:e,label:n,icon:r,disabled:i})=>(0,U.jsxs)(I,{disabled:i,variant:`ghost`,className:`h-10 min-w-0 justify-start gap-2.5 border-stroke bg-panel px-3 font-normal text-content max-[650px]:h-11 pointer-coarse:h-11 [&_svg]:text-content-muted`,onClick:()=>t(e),children:[(0,U.jsx)(r,{className:`size-4 shrink-0`}),(0,U.jsx)(`span`,{className:`truncate`,children:n})]},e))})]})}function K({panelId:e,compact:t,embedded:n=!1,active:r=!0,sessionId:l,cwd:u=``,sources:f=[],tab:g,plan:x,streaming:C,plansAvailable:M,requestConfirm:F,onTabChange:R,onClose:B,onBack:V}){let{t:W}=i(),G=ie(),K=o(e=>e.capabilities),q=[{id:`terminal`,icon:N,label:W(`terminal:workspace.terminal`)},{id:`processes`,icon:s,label:W(`terminal:workspace.processes`)},{id:`changes`,icon:S,label:W(`chat:workbench.projectChanges`)},{id:`sources`,icon:k,label:W(`chat:workbench.sources`)},{id:`files`,icon:T,label:W(`chat:workbench.taskSnapshots`)},...M?[{id:`plan`,icon:w,label:W(`chat:sessionContext.plan`)}]:[],{id:`browser`,icon:b,label:W(`common:webPreview.title`)},{id:`side-chat`,icon:A,label:W(`chat:sideChat.title`)}],se=(0,H.useMemo)(()=>D(g),[g]),J=O(e=>Object.prototype.hasOwnProperty.call(e.sessions,l)?e.sessions[l]:void 0)??se,ce=(0,H.useRef)(null),Y=J.pages.find(e=>e.id===J.activeId)??J.pages[0],X=e=>e.kind===`new`?{id:`new`,icon:j,label:W(`chat:workbench.newTab`)}:q.find(t=>t.id===e.kind)??q[0],le=t=>requestAnimationFrame(()=>document.getElementById(`${e}-${t}-tab`)?.focus()),ue=(0,H.useEffectEvent)(()=>{r&&document.getElementById(`${e}-${J.activeId}-tab`)?.focus()});(0,H.useEffect)(()=>{let e=requestAnimationFrame(()=>ue());return()=>cancelAnimationFrame(e)},[e,J.activeId]);let Z=e=>{if(e.type===`view`&&!O.getState().sessions[l])return;[`add`,`open`,`select`,`close`,`kind`].includes(e.type)&&window.dispatchEvent(new Event(L));let t=E(J,e);O.getState().update(l,g,e);let n=t.pages.find(e=>e.id===t.activeId);n&&R(n.kind),(e.type===`add`||e.type===`select`||e.type===`close`)&&le(t.activeId),e.type===`close`&&J.pages.length===1&&B()},Q=W(`chat:sessionContext.addPage`),de=W(`chat:sessionContext.pageLimit`),fe=(0,U.jsx)(I,{variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,disabled:J.pages.length>=12,"aria-label":Q,title:J.pages.length>=12?de:Q,onClick:()=>Z({type:`add`,kind:`new`}),children:(0,U.jsx)(j,{size:16})}),$=(0,U.jsxs)(`div`,{"data-session-context-panel":!0,className:`flex h-full min-h-0 min-w-0 flex-col bg-panel text-content`,children:[(0,U.jsxs)(`header`,{"data-window-drag-region":!0,className:`auxiliary-page-header flex h-12 shrink-0 items-center gap-1 border-b border-stroke-soft px-2`,children:[V&&(0,U.jsx)(I,{variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,"aria-label":W(`chat:workbench.backToConversation`),title:W(`chat:workbench.backToConversation`),onClick:V,children:(0,U.jsx)(c,{size:16})}),(0,U.jsx)(`div`,{ref:ce,className:`flex min-w-0 flex-1 items-center gap-0.5 overflow-x-auto px-px py-1 [scrollbar-width:none]`,role:`tablist`,"aria-label":W(`chat:sessionContext.title`),onKeyDown:e=>{if(!(e.target instanceof HTMLElement)||e.target.getAttribute(`role`)!==`tab`)return;if(e.key===`Delete`){e.preventDefault(),Z({type:`close`,id:Y.id});return}if(![`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key))return;e.preventDefault();let t=J.pages.findIndex(e=>e.id===Y.id),n=e.key===`Home`?0:e.key===`End`?J.pages.length-1:(t+(e.key===`ArrowRight`?1:-1)+J.pages.length)%J.pages.length;Z({type:`select`,id:J.pages[n].id})},children:J.pages.map(t=>{let{icon:n,label:r}=X(t);return(0,U.jsxs)(`div`,{className:`relative flex max-w-40 min-w-20 shrink-0 items-center rounded-sm transition-colors duration-(--d-fast) ${t.id===Y.id?`bg-key font-medium text-content shadow-key ring-1 ring-key-border after:absolute after:inset-x-2 after:bottom-0 after:h-0.5 after:rounded-full after:bg-star`:`text-content-muted hover:bg-surface-hover hover:text-content`}`,children:[(0,U.jsxs)(`button`,{id:`${e}-${t.id}-tab`,type:`button`,role:`tab`,"aria-selected":t.id===Y.id,"aria-controls":`${e}-${t.id}-content`,tabIndex:t.id===Y.id?0:-1,className:`flex h-7 min-w-0 flex-1 items-center gap-1.5 rounded-sm pl-2 text-sm focus-visible:outline-offset-0 max-[650px]:h-11`,onClick:()=>Z({type:`select`,id:t.id}),children:[(0,U.jsx)(n,{size:14,className:`shrink-0`}),(0,U.jsx)(`span`,{className:`truncate`,children:r})]}),(0,U.jsx)(`button`,{type:`button`,className:`mx-0.5 grid size-5 shrink-0 place-items-center rounded-xs text-content-muted hover:bg-surface-hover hover:text-content focus-visible:outline-offset-0 max-[650px]:size-11`,"aria-label":`${W(`chat:sessionContext.closePage`)} · ${r}`,onClick:()=>Z({type:`close`,id:t.id}),children:(0,U.jsx)(P,{size:12})})]},t.id)})}),fe]}),J.pages.map(t=>{let n=X(t),r=Y.id===t.id;return(0,U.jsx)(`div`,{id:`${e}-${t.id}-content`,role:`tabpanel`,"aria-labelledby":`${e}-${t.id}-tab`,className:r?`flex min-h-0 flex-1 flex-col`:`hidden`,hidden:!r,children:n.id===`new`?r&&(0,U.jsx)(oe,{tools:q.map(e=>({...e,disabled:e.id===`terminal`||e.id===`processes`?!G||!a(K,`terminal`):e.id===`changes`&&!a(K,`vcs`)})),onOpenUrl:e=>{Z({type:`open`,kind:`browser`,replaceId:t.id}),O.getState().update(l,`browser`,{type:`browser`,id:t.id,url:e,draft:e})},onSelect:e=>Z({type:`open`,kind:e,replaceId:t.id})}):n.id===`changes`?r&&(0,U.jsx)(v,{sessionId:l,cwd:u,streaming:C,view:t.view,onViewChange:e=>Z({type:`view`,id:t.id,patch:e})}):n.id===`sources`?r&&(0,U.jsx)(_,{sources:f,view:t.view,onViewChange:e=>Z({type:`view`,id:t.id,patch:e})}):n.id===`terminal`?r&&(0,U.jsx)(d,{sessionId:l,cwd:u,terminalId:t.resourceId||void 0,onCreated:e=>O.getState().update(l,g,{type:`resource`,id:t.id,resourceId:e})}):n.id===`processes`?r&&(0,U.jsx)(p,{view:t.view,onViewChange:e=>Z({type:`view`,id:t.id,patch:e}),sessionId:l,onOpenTerminal:e=>Z({type:`open`,kind:`terminal`,resourceId:e})}):n.id===`side-chat`?(0,U.jsx)(h,{parentId:l,active:r}):n.id===`browser`?(0,U.jsx)(y,{page:t,onChange:e=>Z({type:`browser`,id:t.id,...e})}):r&&(n.id===`files`?(0,U.jsx)(ae,{view:t.view,onViewChange:e=>Z({type:`view`,id:t.id,patch:e}),sessionId:l,streaming:C,requestConfirm:F}):(0,U.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-3`,children:x?.items?.length?(0,U.jsx)(m,{plan:x}):(0,U.jsx)(z,{compact:!0,title:W(`chat:sessionContext.planEmpty`)})}))},t.id)})]});return t?(0,U.jsx)(re,{open:!0,onOpenChange:e=>!e&&B(),children:(0,U.jsxs)(te,{id:e,side:`right`,showCloseButton:!1,className:`gap-0 overflow-hidden p-0`,style:{top:`var(--pisper-safe-area-top)`,right:`var(--pisper-safe-area-right)`,bottom:`var(--pisper-safe-area-bottom)`,height:`auto`,width:`min(calc(100vw - var(--pisper-safe-area-left) - var(--pisper-safe-area-right)), 420px)`,maxWidth:`none`},children:[(0,U.jsx)(ee,{className:`sr-only`,children:(0,U.jsx)(ne,{children:W(`chat:sessionContext.title`)})}),$]})}):(0,U.jsx)(`aside`,{id:e,tabIndex:n?-1:void 0,className:`h-full min-h-0 w-full overflow-hidden border-l border-stroke bg-panel`,"aria-label":W(`chat:sessionContext.title`),children:$})}export{K as SessionContextPanel};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{u as t}from"./vendor-router-CSN_DGvx.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{f as i,t as a}from"./routes-Da0OHSy6.js";import{t as o}from"./use-i18n-DUgHBsG5.js";import{n as s,t as c}from"./usePhoneShell-DloLJ6Tq.js";import{t as l}from"./LaunchConsole-Bu-NLmrh.js";import{t as u}from"./PhoneMenuButton-D1TPwX-1.js";import{t as d}from"./message-square-SKjZyY3v.js";import{t as f}from"./button-CCcCN8tE.js";import{t as p}from"./useSessionListQuery-hEpWGZ_H.js";import{r as m}from"./new-task-C3wuHTor.js";import"./public-CRj3oDys.js";import{n as h}from"./PageState-Cz6vFMXv.js";import{n as g,r as _}from"./session-home-Bhs5A925.js";var v=e(n(),1),y=r(),b=new Set([`shortcut`,`sidebar`]);function x({phone:e,leading:t,onDispatched:n,onDetachedFailure:r,onConfigureModels:i}){let{t:a}=o(),s=(0,v.useRef)(null);m(({source:e})=>!b.has(e)||!s.current?!1:(s.current.focusEnd(),!0));let c=(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-col items-start gap-2`,"data-new-task-intro":!0,children:[(0,y.jsx)(`span`,{"aria-hidden":`true`,className:`grid size-9 place-items-center rounded-md border border-stroke bg-solid text-content-muted shadow-edge`,children:(0,y.jsx)(d,{className:`size-[18px]`,strokeWidth:1.75})}),(0,y.jsx)(`h2`,{className:`text-xl font-semibold tracking-[-.01em] text-content max-[650px]:text-lg`,children:a(`board:home.draftHeading`)}),(0,y.jsx)(`p`,{className:`text-sm leading-6 text-content-muted`,children:a(`board:home.draftHint`)})]}),u=(0,y.jsx)(l,{variant:`composer`,ref:s,touch:e,compactChips:e,autoFocus:!e,onDispatched:e=>n(e),onDetachedFailure:r,onConfigureModels:i});return e?(0,y.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-panel pb-[var(--pisper-safe-area-bottom)] [[data-mobile-keyboard='open']_&]:pb-0`,"data-new-task-draft":`phone`,children:[(0,y.jsxs)(`header`,{"data-session-header":`draft`,"data-focus-region":`header`,className:`grid h-14 min-w-0 shrink-0 grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center bg-panel px-1`,children:[(0,y.jsx)(`div`,{className:`flex min-w-0 items-center`,children:t}),(0,y.jsxs)(`div`,{className:`flex max-w-[min(58vw,260px)] min-w-0 flex-col items-center justify-center`,children:[(0,y.jsx)(`h1`,{className:`max-w-full truncate px-1.5 text-[15px] leading-5 font-semibold text-content`,children:a(`board:home.draftTitle`)}),(0,y.jsx)(`p`,{className:`max-w-full truncate text-xs leading-5 text-content-muted`,children:a(`board:home.draftSubtitle`)})]}),(0,y.jsx)(`span`,{"aria-hidden":`true`})]}),(0,y.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col justify-end overflow-y-auto px-4 pt-4 pb-5`,children:c}),(0,y.jsx)(`div`,{"data-focus-region":`composer`,className:`shrink-0 px-3 pt-1 pb-2.5`,children:u})]}):(0,y.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-panel`,"data-new-task-draft":`desktop`,children:[(0,y.jsxs)(`header`,{"data-session-header":`draft`,"data-focus-region":`header`,"data-window-drag-region":!0,className:`flex h-[52px] min-w-0 shrink-0 items-center gap-2 border-b border-stroke-soft pr-2 pl-4 [[data-custom-titlebar]_&]:pr-[144px]`,children:[(0,y.jsx)(`h1`,{className:`flex-none text-[15px] leading-6 font-semibold text-content`,children:a(`board:home.draftTitle`)}),(0,y.jsx)(`span`,{className:`min-w-0 truncate text-xs text-content-muted`,children:a(`board:home.draftSubtitle`)})]}),(0,y.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col justify-end overflow-y-auto`,children:(0,y.jsx)(`div`,{className:`mx-auto w-[min(768px,calc(100%_-_48px))] pt-8 pb-6`,children:c})}),(0,y.jsx)(`div`,{"data-focus-region":`composer`,className:`mx-auto w-[min(768px,calc(100%_-_48px))] shrink-0 pt-2 pb-3`,children:u})]})}function S({context:e}){let{t:n}=o(),r=t(),l=c(),d=s(),m=!l||d,[b]=(0,v.useState)(_),[S,C]=(0,v.useState)(!1),w=p(),T=S?{kind:`draft`}:g({lastId:b,data:w.data,failed:w.isError&&!w.isFetching}),E=T.kind===`session`?T.id:``,D=e.notify,O=(0,v.useRef)(!1);(0,v.useEffect)(()=>(O.current=!0,()=>{O.current=!1}),[]);let k=(0,v.useCallback)(e=>{if(e){if(O.current){r(i(e),{replace:!0,state:a});return}D(n(`board:launch.dispatched`),`success`,{action:{label:n(`board:phone.openSession`),onAction:()=>r(i(e))}})}},[r,D,n]);(0,v.useEffect)(()=>k(E),[k,E]);let A=(0,v.useCallback)(e=>D(e,`error`),[D]),j=(0,v.useCallback)(()=>r(`/config/models`),[r]),M=(0,y.jsx)(u,{}),N;return N=T.kind===`draft`?(0,y.jsx)(x,{phone:!m,leading:M,onDispatched:k,onDetachedFailure:A,onConfigureModels:j}):(0,y.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-panel`,children:[!m&&(0,y.jsx)(`header`,{className:`flex h-14 shrink-0 items-center bg-panel px-1`,children:M}),(0,y.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center`,children:T.kind===`error`?(0,y.jsx)(h,{kind:`error`,title:n(`board:home.loadFailed`),description:n(`board:home.loadFailedHint`),action:(0,y.jsxs)(`div`,{className:`flex flex-wrap justify-center gap-2`,children:[(0,y.jsx)(f,{variant:`secondary`,className:`pointer-coarse:min-h-11`,onClick:()=>void w.refetch(),children:n(`navigation:more.retry`)}),(0,y.jsx)(f,{variant:`ghost`,className:`pointer-coarse:min-h-11`,onClick:()=>C(!0),children:n(`board:home.startDraft`)})]})}):(0,y.jsx)(h,{kind:`loading`,title:n(`board:home.loading`)})})]}),(0,y.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,"data-session-shell":m?`desktop`:`phone`,"data-session-home":T.kind,children:(0,y.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1`,children:N})})}export{S as SessionHome};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{u as t}from"./vendor-router-CSN_DGvx.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{f as i,t as a}from"./routes-Da0OHSy6.js";import{t as o}from"./use-i18n-B5p-Kzvz.js";import{n as s,t as c}from"./usePhoneShell-Bvb7m-m4.js";import{t as l}from"./LaunchConsole-DtxzpXJo.js";import{t as u}from"./PhoneMenuButton-B0AwvqEo.js";import{t as d}from"./message-square-SKjZyY3v.js";import{t as f}from"./button-CCcCN8tE.js";import{t as p}from"./useSessionListQuery-D44XZfGr.js";import{r as m}from"./new-task-C3wuHTor.js";import"./public-jQjEc6OO.js";import{n as h}from"./PageState-Cz6vFMXv.js";import{n as g,r as _}from"./session-home-BktP6sGF.js";var v=e(n(),1),y=r(),b=new Set([`shortcut`,`sidebar`]);function x({phone:e,leading:t,onDispatched:n,onDetachedFailure:r,onConfigureModels:i}){let{t:a}=o(),s=(0,v.useRef)(null);m(({source:e})=>!b.has(e)||!s.current?!1:(s.current.focusEnd(),!0));let c=(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-col items-start gap-2`,"data-new-task-intro":!0,children:[(0,y.jsx)(`span`,{"aria-hidden":`true`,className:`grid size-9 place-items-center rounded-md border border-stroke bg-solid text-content-muted shadow-edge`,children:(0,y.jsx)(d,{className:`size-[18px]`,strokeWidth:1.75})}),(0,y.jsx)(`h2`,{className:`text-xl font-semibold tracking-[-.01em] text-content max-[650px]:text-lg`,children:a(`board:home.draftHeading`)}),(0,y.jsx)(`p`,{className:`text-sm leading-6 text-content-muted`,children:a(`board:home.draftHint`)})]}),u=(0,y.jsx)(l,{variant:`composer`,ref:s,touch:e,compactChips:e,autoFocus:!e,onDispatched:e=>n(e),onDetachedFailure:r,onConfigureModels:i});return e?(0,y.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-panel pb-[var(--pisper-safe-area-bottom)] [[data-mobile-keyboard='open']_&]:pb-0`,"data-new-task-draft":`phone`,children:[(0,y.jsxs)(`header`,{"data-session-header":`draft`,"data-focus-region":`header`,className:`grid h-14 min-w-0 shrink-0 grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center bg-panel px-1`,children:[(0,y.jsx)(`div`,{className:`flex min-w-0 items-center`,children:t}),(0,y.jsxs)(`div`,{className:`flex max-w-[min(58vw,260px)] min-w-0 flex-col items-center justify-center`,children:[(0,y.jsx)(`h1`,{className:`max-w-full truncate px-1.5 text-[15px] leading-5 font-semibold text-content`,children:a(`board:home.draftTitle`)}),(0,y.jsx)(`p`,{className:`max-w-full truncate text-xs leading-5 text-content-muted`,children:a(`board:home.draftSubtitle`)})]}),(0,y.jsx)(`span`,{"aria-hidden":`true`})]}),(0,y.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col justify-end overflow-y-auto px-4 pt-4 pb-5`,children:c}),(0,y.jsx)(`div`,{"data-focus-region":`composer`,className:`shrink-0 px-3 pt-1 pb-2.5`,children:u})]}):(0,y.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-panel`,"data-new-task-draft":`desktop`,children:[(0,y.jsxs)(`header`,{"data-session-header":`draft`,"data-focus-region":`header`,"data-window-drag-region":!0,className:`flex h-[52px] min-w-0 shrink-0 items-center gap-2 border-b border-stroke-soft pr-2 pl-4 [[data-custom-titlebar]_&]:pr-[144px]`,children:[(0,y.jsx)(`h1`,{className:`flex-none text-[15px] leading-6 font-semibold text-content`,children:a(`board:home.draftTitle`)}),(0,y.jsx)(`span`,{className:`min-w-0 truncate text-xs text-content-muted`,children:a(`board:home.draftSubtitle`)})]}),(0,y.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col justify-end overflow-y-auto`,children:(0,y.jsx)(`div`,{className:`mx-auto w-[min(768px,calc(100%_-_48px))] pt-8 pb-6`,children:c})}),(0,y.jsx)(`div`,{"data-focus-region":`composer`,className:`mx-auto w-[min(768px,calc(100%_-_48px))] shrink-0 pt-2 pb-3`,children:u})]})}function S({context:e}){let{t:n}=o(),r=t(),l=c(),d=s(),m=!l||d,[b]=(0,v.useState)(_),[S,C]=(0,v.useState)(!1),w=p(),T=S?{kind:`draft`}:g({lastId:b,data:w.data,failed:w.isError&&!w.isFetching}),E=T.kind===`session`?T.id:``,D=e.notify,O=(0,v.useRef)(!1);(0,v.useEffect)(()=>(O.current=!0,()=>{O.current=!1}),[]);let k=(0,v.useCallback)(e=>{if(e){if(O.current){r(i(e),{replace:!0,state:a});return}D(n(`board:launch.dispatched`),`success`,{action:{label:n(`board:phone.openSession`),onAction:()=>r(i(e))}})}},[r,D,n]);(0,v.useEffect)(()=>k(E),[k,E]);let A=(0,v.useCallback)(e=>D(e,`error`),[D]),j=(0,v.useCallback)(()=>r(`/config/models`),[r]),M=(0,y.jsx)(u,{}),N;return N=T.kind===`draft`?(0,y.jsx)(x,{phone:!m,leading:M,onDispatched:k,onDetachedFailure:A,onConfigureModels:j}):(0,y.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col bg-panel`,children:[!m&&(0,y.jsx)(`header`,{className:`flex h-14 shrink-0 items-center bg-panel px-1`,children:M}),(0,y.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center`,children:T.kind===`error`?(0,y.jsx)(h,{kind:`error`,title:n(`board:home.loadFailed`),description:n(`board:home.loadFailedHint`),action:(0,y.jsxs)(`div`,{className:`flex flex-wrap justify-center gap-2`,children:[(0,y.jsx)(f,{variant:`secondary`,className:`pointer-coarse:min-h-11`,onClick:()=>void w.refetch(),children:n(`navigation:more.retry`)}),(0,y.jsx)(f,{variant:`ghost`,className:`pointer-coarse:min-h-11`,onClick:()=>C(!0),children:n(`board:home.startDraft`)})]})}):(0,y.jsx)(h,{kind:`loading`,title:n(`board:home.loading`)})})]}),(0,y.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,"data-session-shell":m?`desktop`:`phone`,"data-session-home":T.kind,children:(0,y.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1`,children:N})})}export{S as SessionHome};