pisper 0.6.12 → 0.6.13

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 (111) hide show
  1. package/package.json +6 -6
  2. package/web/.vite/manifest.json +541 -541
  3. package/web/assets/{AppDialog-B2sA9Pb-.js → AppDialog-ChuOV69R.js} +1 -1
  4. package/web/assets/{AppOverlays-BSQhRkJA.js → AppOverlays-BNxogCpM.js} +1 -1
  5. package/web/assets/{AssetsPage-BYt5ux5w.js → AssetsPage-C_zULo41.js} +1 -1
  6. package/web/assets/{BoardPage-CMlI4ZXS.js → BoardPage-Wu9X-Zur.js} +3 -3
  7. package/web/assets/{ChannelsPage-D_wMSCSQ.js → ChannelsPage-DvQYEsZx.js} +1 -1
  8. package/web/assets/{ChatAppearancePage-I3n1MqQQ.js → ChatAppearancePage-Dc1hcGO1.js} +1 -1
  9. package/web/assets/{ChatHistoryPage-DfYaF_Up.js → ChatHistoryPage-DOldhuBG.js} +1 -1
  10. package/web/assets/{ChatPage-Da-Olqli.js → ChatPage-Bt1N3-Dd.js} +4 -4
  11. package/web/assets/ConfigPage-Dx_9BXUH.js +5 -0
  12. package/web/assets/{DesktopWindowControls-CNMZrILS.js → DesktopWindowControls-DhzSLGsL.js} +1 -1
  13. package/web/assets/{DispatchOverlay-D-gu_80O.js → DispatchOverlay-LNd_knJl.js} +1 -1
  14. package/web/assets/{FeaturePage-Bh5TePxl.js → FeaturePage-BV7-6mzm.js} +1 -1
  15. package/web/assets/{FileAttachmentPreview-BKf_g87y.js → FileAttachmentPreview-cYRvzbsf.js} +1 -1
  16. package/web/assets/{FloatingWidgets-C1qQaPBd.js → FloatingWidgets-CZvEZBfc.js} +1 -1
  17. package/web/assets/{FocusRuntimeControls-6ayCBCsE.js → FocusRuntimeControls-B0yEDKMN.js} +1 -1
  18. package/web/assets/{GitDiffViewer-BMyafOfq.js → GitDiffViewer-4ea3jm5E.js} +1 -1
  19. package/web/assets/{LaunchConsole-DM4YN3y3.js → LaunchConsole-Bu-NLmrh.js} +2 -2
  20. package/web/assets/{ManageProjectsDialog-B694Yqbw.js → ManageProjectsDialog-Qi8yMzuy.js} +1 -1
  21. package/web/assets/{MarkdownMessage-mIynIAzE.js → MarkdownMessage-BSTx0KMg.js} +1 -1
  22. package/web/assets/{McpPage-BfGjtNdb.js → McpPage-DpT7NbHF.js} +1 -1
  23. package/web/assets/{MemoryPage-2htmr0tu.js → MemoryPage-2BMB0tcU.js} +1 -1
  24. package/web/assets/{MobileNavigation-qjEdcfhX.js → MobileNavigation-BChENth3.js} +1 -1
  25. package/web/assets/{MorePage-B5nQDAQP.js → MorePage-D_E85kDw.js} +1 -1
  26. package/web/assets/{NewFolderDialog-D68r0xND.js → NewFolderDialog-B56_BjoW.js} +1 -1
  27. package/web/assets/{PageHeader-BsadnkzI.js → PageHeader-BXQdmR1x.js} +1 -1
  28. package/web/assets/{PhoneDrawer-CGi1h7IU.js → PhoneDrawer-CapiWnwy.js} +1 -1
  29. package/web/assets/{PhoneMenuButton-DkkEDkfk.js → PhoneMenuButton-D1TPwX-1.js} +1 -1
  30. package/web/assets/{PhoneTopBar-BwIvKnLT.js → PhoneTopBar-1qxMJEZn.js} +1 -1
  31. package/web/assets/{PluginsPage-BV0HrLjj.js → PluginsPage-CPyf2iFu.js} +1 -1
  32. package/web/assets/{QuickPromptIdeas-Do7Bs-V_.js → QuickPromptIdeas-Cy_t1L7E.js} +1 -1
  33. package/web/assets/{SafeModePrompt-zkBI0cAo.js → SafeModePrompt-BUIzMwem.js} +1 -1
  34. package/web/assets/{SchedulesPage-Dids4PHA.js → SchedulesPage-DKTAxE95.js} +1 -1
  35. package/web/assets/{SessionBrowserPane-DXca3lhC.js → SessionBrowserPane-nAItO1A5.js} +2 -2
  36. package/web/assets/{SessionContextPanel-XMQkDDgD.js → SessionContextPanel-9Bg4j5Vv.js} +2 -2
  37. package/web/assets/{SessionHome-BoPMlfbE.js → SessionHome-BV3eA6FP.js} +1 -1
  38. package/web/assets/{SessionInspector-DoXEstqb.js → SessionInspector-nGAiGnrh.js} +1 -1
  39. package/web/assets/{SessionShell-DC0uS7ab.js → SessionShell-DJAnktW8.js} +1 -1
  40. package/web/assets/{SettingsSidebar-D1F4VOzp.js → SettingsSidebar-fuUmdnZp.js} +1 -1
  41. package/web/assets/{ShortcutHelpDialog-b1wuKRGr.js → ShortcutHelpDialog-Gqrlr6Mi.js} +1 -1
  42. package/web/assets/{ShortcutKeys-YBlbJmQo.js → ShortcutKeys-hvm91EiI.js} +1 -1
  43. package/web/assets/{SidebarUpdateStatus-Dn95j8CE.js → SidebarUpdateStatus-AEvqSFVz.js} +1 -1
  44. package/web/assets/{SkillsPage-_g13X5ID.js → SkillsPage-B4qPIWNT.js} +1 -1
  45. package/web/assets/{TaskProcessesPane-ChitlEI4.js → TaskProcessesPane-Dpxwl38Z.js} +1 -1
  46. package/web/assets/{TaskTerminalView-od0JCnVb.js → TaskTerminalView-DZkPrfzt.js} +1 -1
  47. package/web/assets/{TerminalPanel-CW47PtOX.js → TerminalPanel-BLWGdiOM.js} +1 -1
  48. package/web/assets/{WebDesktopPet-BgQkrvFd.js → WebDesktopPet-w5vrcLDr.js} +1 -1
  49. package/web/assets/{WorkflowsPage-BFyP0_j_.js → WorkflowsPage-BIEGwArz.js} +1 -1
  50. package/web/assets/{WorkspacePicker-tsgOFkg0.js → WorkspacePicker-BiJHY52J.js} +1 -1
  51. package/web/assets/{api-DOHQjQrv.js → api-PMkeVoki.js} +1 -1
  52. package/web/assets/{app-update-C1oLil1b.js → app-update-BAixtUfS.js} +1 -1
  53. package/web/assets/{approval-confirm-Bpma8HMP.js → approval-confirm-Dpfx2sMg.js} +1 -1
  54. package/web/assets/{board-launch-CM1zjdqN.js → board-launch-C_nXqI77.js} +1 -1
  55. package/web/assets/{board-projects-Cm1I_eWA.js → board-projects-CBCU-Sgb.js} +1 -1
  56. package/web/assets/{chat-api-tHFjf7aB.js → chat-api-Kcrk_K91.js} +1 -1
  57. package/web/assets/{client-store-CpJ1iryH.js → client-store-CrFIB91q.js} +1 -1
  58. package/web/assets/config-search-DXrAFHzB.js +1 -0
  59. package/web/assets/{dialog-CfgIErMS.js → dialog-DdbSm1ZL.js} +1 -1
  60. package/web/assets/{events-DV8PYjtk.js → events-CsDpIEpa.js} +1 -1
  61. package/web/assets/{folder-paths-Bky-CpjC.js → folder-paths-tMQQIavs.js} +1 -1
  62. package/web/assets/{hosts-DJ2bPahU.js → hosts-LdyGIyL3.js} +1 -1
  63. package/web/assets/i18n-BMMXA_dY.js +1 -0
  64. package/web/assets/{index-CKGGgVei.js → index-Ciq5zG6s.js} +2 -2
  65. package/web/assets/mount-app-BNdeN2kJ.js +9 -0
  66. package/web/assets/{permission-rules-api-DS_p7Lik.js → permission-rules-api-DJZQfffF.js} +1 -1
  67. package/web/assets/{pick-system-directory-Bhvwq-o2.js → pick-system-directory-Dzxt6gno.js} +1 -1
  68. package/web/assets/{placements-DBcA75II.js → placements-CvOgP1_I.js} +2 -2
  69. package/web/assets/{popover-4UKNni3P.js → popover-Cl-XiAIN.js} +1 -1
  70. package/web/assets/{public-QbkhsZjX.js → public-CJ34MvMA.js} +2 -2
  71. package/web/assets/public-CRj3oDys.js +1 -0
  72. package/web/assets/{public-components-Bvl5b8HI.js → public-components-BRkqqQBZ.js} +1 -1
  73. package/web/assets/public-diff-B_YCisY7.js +1 -0
  74. package/web/assets/public-launch-DJ9UFO06.js +1 -0
  75. package/web/assets/{runtime-capabilities-store-CLDMF6_P.js → runtime-capabilities-store-BrQ24OXo.js} +1 -1
  76. package/web/assets/{safe-mode-instance-DPnZDrTR.js → safe-mode-instance-C8KjWD3O.js} +1 -1
  77. package/web/assets/safe-mode-sentinel-mAPFazv4.js +1 -0
  78. package/web/assets/{session-change-summary-api-IM8k3njh.js → session-change-summary-api-p0LGuByB.js} +1 -1
  79. package/web/assets/{session-home-BSH7HEmZ.js → session-home-Bhs5A925.js} +1 -1
  80. package/web/assets/{session-organization-api-dGpPgiLe.js → session-organization-api-8UQMpctG.js} +1 -1
  81. package/web/assets/{session-scope-_kqXQnb0.js → session-scope-8PMKriev.js} +1 -1
  82. package/web/assets/{session-tree-actions-WcOcYBo-.js → session-tree-actions-Ee9kzU3S.js} +1 -1
  83. package/web/assets/{session-tree-summary-CpuI5gMj.js → session-tree-summary-DEQsXexZ.js} +1 -1
  84. package/web/assets/{shortcuts-BheSJu4D.js → shortcuts-CD4vslwQ.js} +1 -1
  85. package/web/assets/{side-chat-context-fHd5qktG.js → side-chat-context-DaUmbt1Y.js} +3 -3
  86. package/web/assets/{sidebar-DQjsKcJn.js → sidebar-D-yI-nEo.js} +2 -2
  87. package/web/assets/{sidebar-store-0l_ZiIAA.js → sidebar-store-UyvCdgAm.js} +1 -1
  88. package/web/assets/{speech-session-CrscgV-X.js → speech-session-BohM2ygu.js} +1 -1
  89. package/web/assets/{startup-queries-B_DpfvaA.js → startup-queries-BhNivg8E.js} +1 -1
  90. package/web/assets/{use-i18n-BWyVtWF9.js → use-i18n-DUgHBsG5.js} +1 -1
  91. package/web/assets/{use-studio-actions-CdzG_H8p.js → use-studio-actions-7VwKPaCN.js} +1 -1
  92. package/web/assets/{useBoardItems-RCXS90vW.js → useBoardItems-BeR9GqTq.js} +1 -1
  93. package/web/assets/{useFleetSystemInfo-rj18NGAd.js → useFleetSystemInfo-BHhLHGdq.js} +1 -1
  94. package/web/assets/{useNewProjectPicker-q3Albbmn.js → useNewProjectPicker-Dvn0ZJTJ.js} +1 -1
  95. package/web/assets/{useNow-DlbPA2gp.js → useNow-CRkZskBs.js} +1 -1
  96. package/web/assets/{usePhoneShell-cDHpi_4q.js → usePhoneShell-DloLJ6Tq.js} +1 -1
  97. package/web/assets/{useSessionListQuery-B-MnlVs6.js → useSessionListQuery-hEpWGZ_H.js} +1 -1
  98. package/web/assets/{useSessionRowActions-C6dpdoDz.js → useSessionRowActions-DzNqYyGB.js} +1 -1
  99. package/web/assets/{useSidebarModel-BIzp9khQ.js → useSidebarModel-C8_Gpayk.js} +1 -1
  100. package/web/assets/{web-preview-DZqYC0Ca.js → web-preview-LghC_QcR.js} +1 -1
  101. package/web/assets/{web-preview-events-DQAcSBmI.js → web-preview-events-B-rXgMLy.js} +1 -1
  102. package/web/assets/{workspace-order-store-Cw1fZTM7.js → workspace-order-store-BGGH-aRI.js} +1 -1
  103. package/web/index.html +1 -1
  104. package/web/assets/ConfigPage-BEor5fZj.js +0 -5
  105. package/web/assets/config-search-CyM8kWGv.js +0 -1
  106. package/web/assets/i18n-CHHZADSh.js +0 -1
  107. package/web/assets/mount-app-B1dKgqo5.js +0 -9
  108. package/web/assets/public-DMzrVWzM.js +0 -1
  109. package/web/assets/public-diff-zWlldwG3.js +0 -1
  110. package/web/assets/public-launch-WirHCXQ8.js +0 -1
  111. package/web/assets/safe-mode-sentinel-DNy3YZMh.js +0 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SessionContextPanel-XMQkDDgD.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-router-CSN_DGvx.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-BWyVtWF9.js","assets/i18n-CHHZADSh.js","assets/index-CKGGgVei.js","assets/index-CfTBR7Rs.css","assets/storage-BY6wEHPw.js","assets/vendor-state-GkUciC5H.js","assets/runtime-capabilities-4_ZwLBqF.js","assets/runtime-capabilities-store-CLDMF6_P.js","assets/api-DOHQjQrv.js","assets/abort-signal-f4JsiYKX.js","assets/permission-rules-api-DS_p7Lik.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/arrow-left-B8oVrQ2S.js","assets/check-2vYc6QaP.js","assets/chevron-right-C3t2Rckj.js","assets/SessionBrowserPane-DXca3lhC.js","assets/useQuery-DdcpUQhO.js","assets/query-Bj-DUNYq.js","assets/arrow-up-DST6-qVQ.js","assets/chevron-down-CxtxIjiP.js","assets/earth-Ddy13fHh.js","assets/external-link-CEQqPcqc.js","assets/GitDiffViewer-BMyafOfq.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-DV8PYjtk.js","assets/esm-DCV8yILT.js","assets/file-Bllajneu.js","assets/side-chat-context-fHd5qktG.js","assets/routes-Da0OHSy6.js","assets/session-board-status-D2lpFPiI.js","assets/usePhoneShell-cDHpi_4q.js","assets/use-mobile-DauOEda6.js","assets/client-store-CpJ1iryH.js","assets/arrow-down-CDGua-ue.js","assets/chevron-left-BAtyp3_6.js","assets/chevron-up-D_ZcXjqr.js","assets/copy-DHmIFc52.js","assets/download-BCfIiuaL.js","assets/ellipsis-CfGKfbq6.js","assets/eye-uWAPXNzJ.js","assets/folder-open-FIShC5Qk.js","assets/info-DATxy0fb.js","assets/loader-circle-BOwQzHB-.js","assets/monitor-ORxecA9m.js","assets/refresh-cw-TbWxTY4K.js","assets/rotate-ccw-clock-CO6Bw-sF.js","assets/rotate-ccw-C0v8V77_.js","assets/shield-alert-oZqX6MNu.js","assets/shield-check-Gvek4RJ7.js","assets/tag-CqkeJlBf.js","assets/trash-2-CNrPOoPR.js","assets/collapsible-DMaUQRX4.js","assets/dist-BsRXXcSL.js","assets/dropdown-menu-CFIFNaKO.js","assets/dist-DzGQ7sLi.js","assets/es2015-DTZdOI9P.js","assets/dist-BRjj4UeB.js","assets/dist-OB2r6Xsr.js","assets/dist-BaBySQmo.js","assets/popover-4UKNni3P.js","assets/dialog-CfgIErMS.js","assets/dist-BHkR6BLP.js","assets/tooltip-D4MFbqcG.js","assets/dist-BiRPwy4W.js","assets/shortcuts-BheSJu4D.js","assets/chat-api-tHFjf7aB.js","assets/startup-queries-B_DpfvaA.js","assets/mutation-CEbxdVYy.js","assets/format-DMJQzoZ7.js","assets/PageState-Cz6vFMXv.js","assets/input-CPw-zkYh.js","assets/run-activity-CwfO0cui.js","assets/alert-firawb0H.js","assets/vendor-motion-DSW3wzXK.js","assets/MarkdownMessage-mIynIAzE.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/route-context-DvWDul4T.js","assets/StatusGlyph-1KgitlUg.js","assets/motion-DTR4ZVle.js","assets/HoldToConfirmButton-BxdJ7icc.js","assets/card-C3A0b5KR.js","assets/BrandLogo-k3CvJjd4.js","assets/session-tree-summary-CpuI5gMj.js","assets/FileAttachmentPreview-BKf_g87y.js","assets/tabs-DsgBuvJv.js","assets/git-branch-N7LGjtzt.js","assets/image-BY_c3FYU.js","assets/link-2-mgasYn21.js","assets/list-checks-B5Jl4aiO.js","assets/message-square-SKjZyY3v.js","assets/square-bHHVTT3G.js","assets/session-change-summary-api-IM8k3njh.js","assets/AppSelect-BGVBQRP1.js","assets/select-DD_WO-gs.js","assets/dist-V8chnW6-.js","assets/web-preview-DZqYC0Ca.js","assets/terminal-context-aIsIJPn8.js","assets/plus-fQbSqB1n.js","assets/square-terminal-BVG6cUT1.js","assets/sheet-BTaIEX4w.js","assets/SessionInspector-DoXEstqb.js","assets/segmented-control-BlM_GKV6.js","assets/touch-target-BsyCgjR5.js","assets/speech-text-BTwYi9Sb.js","assets/speech-stream-text-DF6aAUVb.js","assets/speech-session-CrscgV-X.js","assets/QuickPromptIdeas-Do7Bs-V_.js","assets/code-xml-BrUXrBax.js","assets/file-text-N9JICX6E.js","assets/wand-sparkles-CvEBNUFz.js","assets/mobile-remote-fallback-NJCTBu85.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{t as n}from"./index-CKGGgVei.js";import{i as r,n as i,r as a}from"./vendor-react-DwNgTV1j.js";import{t as o}from"./use-i18n-BWyVtWF9.js";import{a as s,i as c,o as l}from"./vendor-state-GkUciC5H.js";import{t as u}from"./storage-BY6wEHPw.js";import{u as d}from"./query-Bj-DUNYq.js";import{r as f,t as p}from"./useQuery-DdcpUQhO.js";import{t as m}from"./startup-queries-B_DpfvaA.js";import{n as h,r as g,t as _}from"./abort-signal-f4JsiYKX.js";import{a as v,l as y,n as b,s as x,t as S,u as C}from"./api-DOHQjQrv.js";import{i as w}from"./runtime-capabilities-4_ZwLBqF.js";import{t as T}from"./runtime-capabilities-store-CLDMF6_P.js";import{n as E}from"./use-mobile-DauOEda6.js";import{n as D,t as O}from"./client-store-CpJ1iryH.js";import{t as k}from"./createLucideIcon-Cd-3GVxJ.js";import{a as A,i as j,r as M}from"./permission-rules-api-DS_p7Lik.js";import{c as N,i as P,n as F,o as I,r as L,s as R,t as z}from"./session-list-BeyOEzyU.js";import{t as B}from"./arrow-up-DST6-qVQ.js";import{t as V}from"./bot-B3TaBp_T.js";import{t as H}from"./braces-DQcXLGFF.js";import{t as ee}from"./check-2vYc6QaP.js";import{t as U}from"./chevron-down-CxtxIjiP.js";import{t as te}from"./chevron-left-BAtyp3_6.js";import{t as ne}from"./chevron-right-C3t2Rckj.js";import{t as re}from"./circle-check-iEdCm3Pw.js";import{n as W,t as ie}from"./image-plus-D7bzZog0.js";import{t as ae}from"./corner-down-right--hxi-Ihy.js";import{t as oe}from"./download-BCfIiuaL.js";import{o as se}from"./GitDiffViewer-BMyafOfq.js";import{t as ce}from"./file-text-N9JICX6E.js";import{t as G}from"./file-Bllajneu.js";import{C as le,D as ue,E as de,M as fe,N as pe,O as me,P as he,S as ge,T as _e,a as K,b as ve,d as ye,f as be,g as xe,h as Se,i as Ce,j as we,k as Te,l as Ee,m as De,n as Oe,o as ke,p as Ae,t as je,u as Me,v as Ne,w as Pe,x as Fe,y as Ie}from"./side-chat-context-fHd5qktG.js";import{t as Le}from"./folder-open-FIShC5Qk.js";import{t as Re}from"./git-branch-N7LGjtzt.js";import{t as ze}from"./link-2-mgasYn21.js";import{t as Be}from"./loader-circle-BOwQzHB-.js";import{t as Ve}from"./message-square-SKjZyY3v.js";import{t as q}from"./panel-right-BSUtqUd8.js";import{t as He}from"./paperclip-BCXrwYpb.js";import{t as Ue}from"./pencil-U08v_vV9.js";import{t as We}from"./play-DNDjDNGn.js";import{t as Ge}from"./plus-fQbSqB1n.js";import{t as Ke}from"./refresh-cw-TbWxTY4K.js";import{t as qe}from"./search-D0mqDaf_.js";import{t as Je}from"./settings-QX0oWnVK.js";import{t as Ye}from"./shield-alert-oZqX6MNu.js";import{t as Xe}from"./shield-B1ruzHd0.js";import{t as Ze}from"./square-pen-hYbjKh6A.js";import{a as Qe,c as $e,d as et,f as tt,g as nt,h as rt,i as it,m as at,n as ot,o as st,p as ct,r as lt,s as ut,t as dt}from"./FocusRuntimeControls-6ayCBCsE.js";import{t as ft}from"./square-bHHVTT3G.js";import{t as pt}from"./tag-CqkeJlBf.js";import{t as mt}from"./trash-2-CNrPOoPR.js";import{t as ht}from"./triangle-alert-CE1q54ci.js";import{t as gt}from"./workflow-Bg94dy8I.js";import{t as _t}from"./wrench-6pg6_bqI.js";import{t as vt}from"./x-07u4-129.js";import{t as yt}from"./brand-DIEc3fK8.js";import{t as bt}from"./checkbox-BrEHgFV0.js";import{c as xt,i as St,l as Ct,n as wt,p as Tt,r as Et,t as Dt}from"./dropdown-menu-CFIFNaKO.js";import{t as Ot}from"./progress-5odAz3B9.js";import{t as kt}from"./switch-D_G8wFhs.js";import{i as At,r as jt,t as Mt}from"./tabs-DsgBuvJv.js";import{i as J,n as Nt,t as Pt}from"./tooltip-D4MFbqcG.js";import{t as Ft}from"./utils-C8uzG5AZ.js";import{n as It,t as Y}from"./button-CCcCN8tE.js";import{n as Lt,t as Rt}from"./kbd-CAufZTkl.js";import{S as zt,b as Bt,c as Vt,f as Ht,i as Ut,o as Wt,p as Gt,r as Kt,s as qt,u as Jt,v as Yt,x as Xt,y as Zt}from"./events-DV8PYjtk.js";import{a as Qt,c as $t,i as en,n as tn,r as nn,s as rn,t as an}from"./shortcuts-BheSJu4D.js";import{n as on,o as sn,r as cn,t as ln}from"./sheet-BTaIEX4w.js";import{t as X}from"./chat-api-tHFjf7aB.js";import{n as un}from"./session-organization-api-dGpPgiLe.js";import{a as dn,n as fn,t as pn}from"./session-questions-Cf-1g85h.js";import{n as mn,o as hn,r as gn,t as _n}from"./format-DMJQzoZ7.js";import{n as vn,r as yn}from"./PageState-Cz6vFMXv.js";import{a as bn,i as xn,l as Sn,s as Cn,t as wn}from"./dialog-CfgIErMS.js";import{t as Tn}from"./input-CPw-zkYh.js";import{i as En,n as Dn,t as On}from"./input-group-h8z63MzW.js";import{t as kn}from"./model-display-kDwvtxrW.js";import{a as An,c as jn,d as Mn,m as Nn,o as Pn,p as Fn,s as In,u as Ln}from"./run-activity-CwfO0cui.js";import{t as Rn}from"./session-change-summary-api-IM8k3njh.js";import{t as zn}from"./shortcut-aria-jHRmld9z.js";import{t as Bn}from"./touch-target-BsyCgjR5.js";import{t as Vn}from"./pick-system-directory-Bhvwq-o2.js";import{t as Hn}from"./back-navigation-CK7X_5Bc.js";import{WorkspacePicker as Un}from"./WorkspacePicker-tsgOFkg0.js";import{t as Wn}from"./MarkdownMessage-mIynIAzE.js";import{t as Gn}from"./esm-DCV8yILT.js";import{t as Kn}from"./StatusGlyph-1KgitlUg.js";import{t as qn}from"./motion-DTR4ZVle.js";import{t as Jn}from"./app-primitives-Drz_SjnR.js";import{t as Yn}from"./usePagePrimaryAction-CWPC0C_f.js";import"./web-preview-DZqYC0Ca.js";import{n as Xn,r as Zn}from"./terminal-context-aIsIJPn8.js";import{a as Qn,i as $n}from"./tool-labels-BUEvdohv.js";import{i as er,n as tr,o as Z,s as nr,t as rr}from"./session-tree-summary-CpuI5gMj.js";import{fileRewindConfirmOptions as ir,fileRewindNotice as ar,notifyTreeNavigation as or}from"./session-tree-actions-WcOcYBo-.js";import{a as sr,c as cr,i as lr,l as ur,n as dr,o as fr,s as pr,t as mr,u as hr}from"./speech-session-CrscgV-X.js";import{n as gr,t as _r}from"./web-preview-events-DQAcSBmI.js";var vr=k(`audio-lines`,[[`path`,{d:`M2 10v3`,key:`1fnikh`}],[`path`,{d:`M6 6v11`,key:`11sgs0`}],[`path`,{d:`M10 3v18`,key:`yhl04a`}],[`path`,{d:`M14 8v7`,key:`3a1oy3`}],[`path`,{d:`M18 5v13`,key:`123xd1`}],[`path`,{d:`M22 10v3`,key:`154ddg`}]]),yr=k(`badge-check`,[[`path`,{d:`M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z`,key:`3c2336`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),br=k(`book-open`,[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]),xr=k(`bookmark`,[[`path`,{d:`M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z`,key:`oz39mx`}]]),Sr=k(`file-check-corner`,[[`path`,{d:`M10.5 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v6`,key:`g5mvt7`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m14 20 2 2 4-4`,key:`15kota`}]]),Cr=k(`file-down`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 18v-6`,key:`17g6i2`}],[`path`,{d:`m9 15 3 3 3-3`,key:`1npd3o`}]]),wr=k(`message-circle-question-mark`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Tr=k(`mic-off`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M15 9.34V5a3 3 0 0 0-5.68-1.33`,key:`1gzdoj`}],[`path`,{d:`M16.95 16.95A7 7 0 0 1 5 12v-2`,key:`cqa7eg`}],[`path`,{d:`M18.89 13.23A7 7 0 0 0 19 12v-2`,key:`16hl24`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v3a3 3 0 0 0 5.12 2.12`,key:`r2i35w`}]]),Er=k(`mic`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]),Dr=k(`shrink`,[[`path`,{d:`m15 15 6 6m-6-6v4.8m0-4.8h4.8`,key:`17vawe`}],[`path`,{d:`M9 19.8V15m0 0H4.2M9 15l-6 6`,key:`chjx8e`}],[`path`,{d:`M15 4.2V9m0 0h4.8M15 9l6-6`,key:`lav6yq`}],[`path`,{d:`M9 4.2V9m0 0H4.2M9 9 3 3`,key:`1pxi2q`}]]),Or=k(`target`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),kr=k(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),Q=e(r(),1),Ar=c(()=>({getItem:e=>{try{return n.getItem(e)}catch{return null}},setItem:(e,t)=>{try{n.setItem(e,t)}catch{}},removeItem:e=>{try{n.removeItem(e)}catch{}}})),jr=l()(s((e,t)=>({width:360,open:!1,setWidth:n=>{let r=Ie(n);t().width!==r&&e({width:r})},setOpen:n=>{t().open!==n&&e({open:n})}}),{name:`pisper-session-context-layout`,version:2,storage:Ar,migrate:e=>{let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{};return{width:Ie(`width`in t?t.width:void 0),open:`open`in t&&t.open===!0}},partialize:({width:e,open:t})=>({width:e,open:t}),merge:(e,t)=>({...t,width:Ie(e&&typeof e==`object`&&!Array.isArray(e)&&`width`in e?e.width:void 0),open:!!(e&&typeof e==`object`&&!Array.isArray(e)&&`open`in e&&e.open===!0)})}));function Mr(e,t,n){let r=(0,Q.useRef)(n);r.current=n,(0,Q.useLayoutEffect)(()=>e?Hn.register(t,()=>r.current()):void 0,[e,t])}var $=a();function Nr({preferredWidth:e,onWidthChange:t,availableWidth:n,presentation:r,children:i,context:a,side:s=`right`,layoutId:c=`chat`,conversationHeaderInset:l=0}){let{t:u}=o(),d=(0,Q.useRef)(()=>{});(0,Q.useEffect)(()=>()=>d.current(),[]);let f=r===`aside`,p=r===`content`,m=ve(e,n),h=ve(720,n),g=e=>t(Math.max(280,Math.min(h,e))),_=n=>{if(n.button!==0)return;d.current(),n.preventDefault(),n.currentTarget.focus(),n.currentTarget.setPointerCapture(n.pointerId);let r=n.clientX,i=e=>g(m+(e.clientX-r)*(s===`left`?1:-1)),a=()=>{window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,a),window.removeEventListener(`pointercancel`,o),window.removeEventListener(`keydown`,c)},o=()=>{t(e),a()},c=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),o())};d.current=a,window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,a,{once:!0}),window.addEventListener(`pointercancel`,o,{once:!0}),window.addEventListener(`keydown`,c)},v=(0,$.jsx)(`div`,{id:`${c}-conversation`,"data-workspace-conversation":!0,inert:p,className:p?`hidden`:`min-h-0 min-w-0 flex-1 overflow-hidden`,style:f&&l?{paddingTop:l}:void 0,children:i},`conversation`),y=f?(0,$.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":u(`chat:sessionContext.resize`),title:u(`chat:sessionContext.resizeHint`),"aria-controls":`${c}-conversation ${c}-content`,"aria-valuemin":280,"aria-valuemax":h,"aria-valuenow":m,onPointerDown:_,onDoubleClick:()=>t(360),onKeyDown:e=>{if(![`ArrowLeft`,`ArrowRight`,`Home`,`End`,`Enter`].includes(e.key))return;if(e.preventDefault(),e.key===`Enter`){t(360);return}let n=e.shiftKey?64:16;g(e.key===`Home`?280:e.key===`End`?h:m+(e.key===`ArrowRight`?n:-n)*(s===`left`?1:-1))},className:`relative w-2 shrink-0 cursor-col-resize touch-none select-none outline-none after:absolute after:top-1/2 after:left-1/2 after:h-9 after:w-[3px] after:-translate-1/2 after:rounded-full after:bg-stroke-strong after:transition-colors after:duration-[var(--d-fast)] hover:after:bg-focus active:after:bg-focus focus-visible:after:bg-focus focus-visible:after:ring-3 focus-visible:after:ring-focus-ring`},`separator`):null,b=(0,$.jsx)(`div`,{id:`${c}-content`,className:f?`h-full min-h-0 shrink-0 overflow-hidden`:p?`h-full min-h-0 min-w-0 flex-1 overflow-hidden`:`hidden`,style:f?{width:m}:void 0,children:(f||p)&&a},`resource`);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{id:`${c}-context-layout`,"data-workspace-layout":!0,className:`flex h-full min-h-0 min-w-0 flex-1 overflow-hidden`,children:s===`left`?[b,y,v]:[v,y,b]}),r===`sheet`&&a]})}function Pr({sessionId:e,streaming:t,completed:n,runStartedAt:r,enabled:i,open:a,onReveal:o}){let s=(0,Q.useRef)(null),c=(0,Q.useRef)(o);(0,Q.useLayoutEffect)(()=>{c.current=o},[o]),(0,Q.useEffect)(()=>{let o=s.current,l={sessionId:e,streaming:t,completed:n,runStartedAt:r};if(s.current=l,!i||a||!Ne(o,l))return;let u=new AbortController,d=!0;return X.getSessionFileChanges(e,{signal:u.signal}).then(({files:e})=>{d&&Fe(o,l,e)&&c.current()}).catch(()=>{}),()=>{d=!1,u.abort()}},[n,i,a,r,e,t])}var Fr=`pisper:task-content-requested`,Ir=[`changes`,`terminal`,`processes`,`sources`,`browser`];function Lr(e){return!e||typeof e!=`object`||!(`kind`in e)?null:Ir.find(t=>t===e.kind)||null}function Rr({sessionId:e,cwd:t,taskName:n,sources:r,mobile:i,streaming:a}){let{t:s}=o(),c=Zn(e),l=Xn(),[u,d]=(0,Q.useState)(!1),f=(0,Q.useRef)(null),m=(0,Q.useRef)(!1),h=T(e=>e.capabilities),g=w(h,`vcs`),_=p({enabled:g,queryKey:[`task-project-changes`,e,t,a],queryFn:({signal:t})=>X.getVcsChanges(e,{signal:t})}),v=(0,Q.useMemo)(()=>Ae(_.data?.diff||``,_.data?.files.map(e=>e.path)||[],_.data?.diffTruncated),[_.data]),y=()=>Se.getState().update(e,`new`,{type:`workspace`,summaryOpen:!1}),b=()=>document.getElementById(`task-${e}-summary-toggle`)?.focus();(0,Q.useEffect)(()=>{i||f.current?.focus()},[i]);let x=(t,n=``)=>{let r=Se.getState();if(r.update(e,t,{type:`open`,kind:t})===`limit`){d(!0);return}m.current=!0;let i=Se.getState().sessions[e]?.activeId;n&&i&&r.update(e,t,{type:`view`,id:i,patch:t===`sources`?{selectedSourceId:n,query:``,filter:``}:{expandedProcesses:[n],filter:``}})};Mr(!i,300,()=>{y(),b()});let S=`w-full justify-start gap-2 px-2 font-normal text-content`,C=`ml-auto shrink-0 text-xs text-content-muted tabular-nums`,E=(0,$.jsxs)($.Fragment,{children:[u&&(0,$.jsx)(`p`,{role:`alert`,className:`px-2 pb-1 text-xs text-danger`,children:s(`chat:sessionContext.pageLimit`)}),(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start gap-2 border-b border-stroke-soft px-2 pt-1 pb-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`truncate font-mono text-xs text-content-muted`,title:t,children:t.split(/[\\/]/).filter(Boolean).at(-1)||t}),(0,$.jsx)(`p`,{className:`mt-0.5 truncate text-sm font-medium text-content`,children:n})]}),(0,$.jsx)(Y,{variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,"aria-label":s(`chat:workbench.closeSummary`),onClick:()=>{y(),b()},children:(0,$.jsx)(vt,{size:16})})]}),(0,$.jsxs)(`section`,{className:`border-b border-stroke-soft py-1`,children:[(0,$.jsxs)(Y,{variant:`ghost`,className:`${S} h-auto min-h-8 whitespace-normal text-left`,disabled:!g,onClick:()=>x(`changes`),children:[(0,$.jsx)(se,{size:16,className:`text-content-muted`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1`,children:s(`chat:workbench.projectChanges`)}),(0,$.jsx)(`span`,{className:C,children:g?_.isPending?`…`:_.isError||_.data?.error?s(`chat:workbench.unavailable`):_.data?.isRepo?_.data.files.length:`—`:s(`chat:workbench.unavailable`)})]}),(_.isError||_.data?.error)&&(0,$.jsx)(`p`,{role:`alert`,className:`px-2 py-1 text-xs text-danger`,children:s(`chat:workbench.changesFailed`)}),_.data?.isRepo&&!_.isError&&!_.data.error&&(0,$.jsxs)(`p`,{className:`px-2 pb-1 pl-8 font-mono text-xs tabular-nums text-content-muted`,children:[v.partial?`${s(`chat:workbench.partialCounts`)} `:``,(0,$.jsxs)(`span`,{className:`text-success`,children:[`+`,v.added]}),` `,(0,$.jsxs)(`span`,{className:`text-danger`,children:[`−`,v.removed]})]}),(0,$.jsxs)(Y,{variant:`ghost`,className:S,onClick:()=>x(`files`),children:[(0,$.jsx)(he,{size:16,className:`text-content-muted`}),s(`chat:workbench.taskSnapshots`)]})]}),(0,$.jsxs)(`section`,{className:`border-b border-stroke-soft py-1`,children:[(0,$.jsxs)(Y,{variant:`ghost`,className:S,onClick:()=>x(`processes`),children:[(0,$.jsx)(`span`,{children:s(`terminal:workspace.processes`)}),(0,$.jsx)(`span`,{className:C,children:c.length})]}),!l&&(0,$.jsx)(`p`,{className:`px-2 pb-1 text-xs text-content-muted`,children:s(`terminal:workspace.nativeOnly`)}),c.slice(0,3).map(e=>(0,$.jsxs)(Y,{variant:`ghost`,className:`${S} min-w-0`,onClick:()=>x(`processes`,e.id),children:[e.status===`running`?(0,$.jsx)(It,{className:`size-3.5`}):(0,$.jsx)(A,{size:15,className:`text-content-muted`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-left font-mono text-xs`,children:e.profileId}),(0,$.jsx)(`span`,{className:C,children:e.status===`running`?s(`terminal:workspace.running`):e.status===`exited`?s(`terminal:workspace.exited`):s(`chat:workbench.otherState`)})]},e.id))]}),(0,$.jsxs)(`section`,{className:`pt-1`,children:[(0,$.jsxs)(Y,{variant:`ghost`,className:S,onClick:()=>x(`sources`),children:[(0,$.jsx)(`span`,{children:s(`chat:workbench.sources`)}),(0,$.jsx)(`span`,{className:C,children:r.length})]}),r.slice(0,3).map(e=>(0,$.jsxs)(Y,{variant:`ghost`,className:`${S} min-w-0`,onClick:()=>x(`sources`,e.id),children:[(0,$.jsx)(ze,{size:15,className:`text-content-muted`}),(0,$.jsx)(`span`,{className:`truncate font-mono text-xs`,children:e.name||s(`chat:chatMessage.fileAttachment`)})]},e.id)),(0,$.jsx)(Y,{variant:`ghost`,className:`${S} text-content-muted`,onClick:()=>x(`sources`),children:s(`chat:workbench.viewAll`)})]})]});return i?(0,$.jsx)(ln,{open:!0,onOpenChange:e=>{e||y()},children:(0,$.jsxs)(on,{side:`bottom`,showCloseButton:!1,"aria-describedby":void 0,className:`max-h-[80dvh] overflow-y-auto rounded-t-2xl p-3 pb-[max(16px,var(--pisper-safe-area-bottom))] [&_button]:min-h-11`,style:{left:`calc(44px + var(--pisper-safe-area-left, 0px))`,right:`var(--pisper-safe-area-right, 0px)`},onCloseAutoFocus:e=>{e.preventDefault(),m.current||b()},children:[(0,$.jsx)(sn,{className:`sr-only`,children:s(`chat:workbench.summary`)}),E]})}):(0,$.jsx)(`div`,{ref:f,tabIndex:-1,id:`task-${e}-summary`,role:`region`,"aria-label":s(`chat:workbench.summary`),onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),y(),b())},className:`absolute top-[52px] right-2 z-20 max-h-[calc(100%-64px)] w-80 max-w-[calc(100%-16px)] overflow-y-auto rounded-md bg-popover p-1 text-sm text-popover-foreground shadow-float`,children:E})}function zr(e){if(typeof e!=`string`||Array.from(e).some(e=>e.charCodeAt(0)<32))return``;let t=e.replace(/\\/g,`/`);return!t.startsWith(`/`)&&!/^[a-z]:\//i.test(t)?``:t.replace(/\/\.\//g,`/`).replace(/\/$/,``)||`/`}function Br(e){let t=[],n=new Set;for(let r of e)if(Array.isArray(r.attachments))for(let[e,i]of r.attachments.entries()){if(!i||typeof i!=`object`||Array.isArray(i))continue;let a=typeof i.id==`string`&&!i.id.startsWith(`path:`)&&i.id.length<=512&&!Array.from(i.id).some(e=>e.charCodeAt(0)<32)?i.id:``,o=zr(i.path),s=a?`asset`:o?`path`:`unresolved`,c=a?`asset:${a}`:o?`path:${o}`:`unresolved:${r.id}:${e}`;if(n.has(c))continue;n.add(c);let l=typeof i.name==`string`?i.name:o.split(`/`).pop()||a,u=typeof i.mimeType==`string`?i.mimeType:``,d={...a?{id:a,downloadUrl:`/api/assets/${encodeURIComponent(a)}/download`}:{},...o?{id:a||`path:${o}`,path:o}:{},name:l,mimeType:u,...typeof i.size==`number`&&Number.isFinite(i.size)&&i.size>=0?{size:i.size}:{},...typeof i.text==`string`?{text:i.text.slice(0,4e5)}:{}};t.push({id:c,name:l,method:s,messageId:r.id,attachment:d,available:s!==`unresolved`||typeof i.text==`string`,kind:u.startsWith(`image/`)?`image`:u.startsWith(`text/`)?`text`:`file`})}return t}function Vr({width:e,mobile:t,contentOpen:n}){return n?t||e<660?`content`:`split`:`conversation`}var Hr=(0,Q.lazy)(()=>t(()=>import(`./SessionContextPanel-XMQkDDgD.js`).then(e=>({default:e.SessionContextPanel})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110])));function Ur({sessionId:e,messages:t,taskName:n,cwd:r,panelId:i,active:a,mobile:s,plan:c,streaming:l,completed:u,runStartedAt:d,plansAvailable:f,requestConfirm:p,children:m}){let{t:h}=o(),[g,_]=(0,Q.useState)(null),[v,y]=(0,Q.useState)(null),b=(0,Q.useMemo)(()=>({headerHost:g,sourceActionHost:v,setSourceActionHost:y}),[g,v]),x=(0,Q.useMemo)(()=>Br(t),[t]),S=(0,Q.useRef)(jr.getState().width).current,C=(0,Q.useRef)(null),[w,T]=(0,Q.useState)(0),E=(0,Q.useMemo)(()=>xe(),[]),D=Se(t=>t.sessions[e])||E,O=Se(e=>e.update);(0,Q.useLayoutEffect)(()=>{D.contentWidth??O(e,`new`,{type:`workspace`,contentWidth:S})},[D.contentWidth,e,S,O]),(0,Q.useLayoutEffect)(()=>{let e=C.current;if(!e)return;let t=()=>T(e.clientWidth);t();let n=null,r=new ResizeObserver(()=>{n!==null&&cancelAnimationFrame(n),n=requestAnimationFrame(()=>{n=null,t()})});return r.observe(e),()=>{r.disconnect(),n!==null&&cancelAnimationFrame(n)}},[]);let k=Vr({width:w,mobile:s,contentOpen:D.contentOpen&&D.pages.length>0});Pr({sessionId:e,streaming:l,completed:u,runStartedAt:d,enabled:!0,open:D.contentOpen,onReveal:()=>O(e,`files`,{type:`open`,kind:`files`})}),(0,Q.useEffect)(()=>{if(!a)return;let t=t=>{let n=Lr(t.detail);n&&O(e,n,{type:`open`,kind:n})};return window.addEventListener(Fr,t),()=>window.removeEventListener(Fr,t)},[a,e,O]);let A=()=>{window.dispatchEvent(new Event(qt)),O(e,`files`,{type:`workspace`,contentOpen:!1}),requestAnimationFrame(()=>(document.getElementById(`task-${e}-new-content-tab`)||document.getElementById(`task-${e}-more`))?.focus())};Mr(a&&k===`content`,100,A);let j=D.contentOpen&&D.pages.length>0&&(0,$.jsx)(Q.Suspense,{fallback:(0,$.jsx)(`div`,{role:`status`,className:`p-4 text-sm text-content-muted`,children:h(`chat:focusSession.gitLoading`)}),children:(0,$.jsx)(Hr,{panelId:`${i}-context`,compact:!1,embedded:!0,active:a,sessionId:e,cwd:r,sources:x,tab:D.pages.find(e=>e.id===D.activeId)?.kind||`files`,plan:c,streaming:l,plansAvailable:f,requestConfirm:p,onTabChange:()=>{},onClose:A,onBack:A})});return(0,$.jsx)(De.Provider,{value:b,children:(0,$.jsxs)(`div`,{ref:C,id:`task-${e}-workspace`,tabIndex:-1,"data-task-workspace":e,"data-active":a,className:`relative flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-panel`,children:[(0,$.jsx)(`div`,{ref:_,className:k===`split`?`@container absolute left-0 top-0 z-10`:`@container shrink-0`,style:k===`split`?{width:`calc(100% - ${ve(D.contentWidth??S,w)+8}px)`}:void 0,"data-task-header":!0}),(0,$.jsx)(Nr,{preferredWidth:D.contentWidth??S,onWidthChange:t=>{O(e,`new`,{type:`workspace`,contentWidth:t}),jr.getState().setWidth(t)},layoutId:i,availableWidth:w,conversationHeaderInset:48,presentation:k===`split`?`aside`:k===`content`?`content`:`closed`,context:j,children:m}),a&&D.summaryOpen&&(0,$.jsx)(Rr,{sessionId:e,cwd:r,taskName:n,sources:x,mobile:s,streaming:l})]})})}function Wr(e,t){return e.open===t?e:{open:t,leaving:!t}}function Gr(e){return e.leaving?{open:e.open,leaving:!1}:e}function Kr(e){return e.open||e.leaving}function qr(e,t=400){let[n,r]=(0,Q.useState)(()=>({open:e,leaving:!1})),i=n;n.open!==e&&(i=Wr(n,e),r(i));let a=i.leaving,o=(0,Q.useCallback)(()=>r(Gr),[]);return(0,Q.useLayoutEffect)(()=>{if(!a)return;if(qn()){o();return}let e=window.setTimeout(o,t);return()=>window.clearTimeout(e)},[t,o,a]),{mounted:Kr(i),leaving:a,finish:o}}function Jr(e){return[`running`,`waiting_approval`].includes(String(e.status||``))}function Yr(e,t){return t(e===`running`?`chat:workflowRun.running`:e===`waiting_approval`?`chat:workflowRun.waitingApproval`:e===`completed`?`chat:workflowRun.completed`:e===`failed`?`chat:workflowRun.failed`:e===`cancelled`?`chat:workflowRun.stopped`:`chat:workflowRun.interrupted`)}function Xr({sessionId:e,empty:t=null}){let{t:n}=o(),[r,i]=(0,Q.useState)([]),[a,s]=(0,Q.useState)(``),c=(0,Q.useCallback)(async()=>{try{let t=await X.getSessionWorkflowRuns(e);i(t.runs||[])}catch{}},[e]);if((0,Q.useEffect)(()=>{c();let e=window.setInterval(c,1500);return()=>window.clearInterval(e)},[c]),!r.length)return t;let l=`session-workflow-context grid min-w-0 gap-1 border-b border-stroke-soft pb-1.5 [&_strong]:text-xs [&_strong]:font-medium [&_strong]:text-content-muted [&_p]:max-h-[84px] [&_p]:overflow-auto [&_p]:text-xs [&_p]:leading-relaxed [&_p]:whitespace-pre-wrap [&_p]:text-content-secondary [&_p]:[overflow-wrap:anywhere] [&_pre]:max-h-[84px] [&_pre]:overflow-auto [&_pre]:rounded-xs [&_pre]:bg-code [&_pre]:px-1.5 [&_pre]:py-1 [&_pre]:font-mono [&_pre]:text-xs [&_pre]:leading-relaxed [&_pre]:whitespace-pre-wrap [&_pre]:text-content-secondary [&_pre]:[overflow-wrap:anywhere]`;return(0,$.jsx)(`div`,{className:`flex max-h-[210px] flex-col overflow-auto rounded-md border border-stroke bg-panel`,children:[...r].sort((e,t)=>Date.parse(t.startedAt)-Date.parse(e.startedAt)).slice(0,5).map(e=>{let t=a===e.id,r=Math.round((Number(e.completedNodes)||0)/Math.max(1,Number(e.totalNodes)||1)*100);return(0,$.jsxs)(`div`,{className:`session-workflow-run border-b border-stroke-soft last:border-b-0 ${e.status}`,children:[(0,$.jsxs)(`button`,{className:`session-workflow-summary grid w-full cursor-pointer grid-cols-[20px_minmax(120px,1fr)_minmax(80px,160px)_14px] items-center gap-2.5 border-0 px-3 py-2 text-left text-content transition-colors duration-(--d-fast) hover:bg-surface-subtle focus-visible:-outline-offset-2 max-[650px]:min-h-11 max-[650px]:grid-cols-[20px_minmax(0,1fr)_14px] max-[650px]:[&_[data-slot='progress']]:col-[2/4] [&_[data-slot='progress']]:h-1 [&_>_span:nth-child(2)]:flex [&_>_span:nth-child(2)]:min-w-0 [&_>_span:nth-child(2)]:flex-col [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_small]:tabular-nums [&_strong]:truncate [&_strong]:text-sm [&_strong]:font-medium ${t?`bg-surface-subtle`:`bg-transparent`}`,"aria-expanded":t,onClick:()=>s(t?``:e.id),children:[(0,$.jsx)(`span`,{className:`grid size-5 place-items-center rounded-xs ${e.status===`completed`?`bg-success-soft text-success`:e.status===`failed`?`bg-danger-soft text-danger`:e.status===`waiting_approval`?`bg-warning-soft text-warning-strong`:`bg-surface-muted text-content-muted`}`,children:e.status===`running`?(0,$.jsx)(It,{className:`size-3.5`}):e.status===`completed`?(0,$.jsx)(ee,{size:12}):e.status===`failed`?(0,$.jsx)(vt,{size:12}):(0,$.jsx)(gt,{size:12})}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{children:e.workflowName}),(0,$.jsxs)(`small`,{children:[Yr(e.status,n),` · v`,e.workflowRevision||1]})]}),(0,$.jsx)(Ot,{value:e.status===`completed`?100:r}),(0,$.jsx)(ne,{size:14,className:`text-content-muted transition-transform duration-(--d-fast) ${t?`rotate-90`:``}`})]}),t&&(0,$.jsxs)(`div`,{className:`session-workflow-detail flex flex-col gap-1.5 border-t border-stroke-soft bg-surface-subtle py-2 pr-3 pl-[42px] max-[650px]:pl-3 [&_>_p]:text-xs [&_>_p]:text-content-muted`,children:[e.sourceMessage&&(0,$.jsxs)(`div`,{className:l,children:[(0,$.jsx)(`strong`,{children:n(`chat:workflowRun.request`)}),(0,$.jsx)(`p`,{children:e.sourceMessage})]}),e.inputs&&Object.keys(e.inputs).length>0&&(0,$.jsxs)(`div`,{className:l,children:[(0,$.jsx)(`strong`,{children:n(`chat:workflowRun.inputs`)}),(0,$.jsx)(`pre`,{children:JSON.stringify(e.inputs,null,2)})]}),(e.nodes||[]).map(t=>(0,$.jsxs)(`div`,{className:`session-workflow-node grid min-h-6 grid-cols-[15px_minmax(0,1fr)_auto] items-center gap-1.5 text-content-muted [&.completed]:text-success [&.failed]:text-danger [&_>_div]:flex [&_>_div]:gap-1 [&_>_span]:flex [&_>_span]:min-w-0 [&_>_span]:flex-col [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_strong]:text-xs [&_strong]:font-medium [&_strong]:text-content ${t.status}`,children:[t.status===`completed`?(0,$.jsx)(ee,{size:13}):t.status===`failed`?(0,$.jsx)(W,{size:13}):t.status===`running`?(0,$.jsx)(It,{className:`size-3.5`}):(0,$.jsx)(ft,{size:11}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{children:t.label}),(t.error||t.summary)&&(0,$.jsx)(`small`,{children:t.error||t.summary})]}),t.status===`waiting_approval`&&(0,$.jsxs)(`div`,{children:[(0,$.jsx)(Y,{size:`xs`,onClick:async()=>{await X.resolveWorkflowApproval(e.id,t.id,!0),await c()},children:n(`chat:workflowRun.approve`)}),(0,$.jsx)(Y,{size:`xs`,variant:`destructive`,onClick:async()=>{await X.resolveWorkflowApproval(e.id,t.id,!1),await c()},children:n(`chat:workflowRun.reject`)})]})]},t.id)),(e.error||e.summary)&&(0,$.jsx)(`p`,{children:e.error||e.summary}),Jr(e)&&(0,$.jsxs)(Y,{size:`xs`,variant:`destructive`,className:`self-start`,onClick:async()=>{await X.stopWorkflowRun(e.id),await c()},children:[(0,$.jsx)(ft,{"data-icon":`inline-start`}),n(`chat:workflowRun.stop`)]})]})]},e.id)})})}function Zr(e,t){let[n,r]=(0,Q.useState)(()=>Date.now());(0,Q.useEffect)(()=>{if(!t)return;r(Date.now());let e=setInterval(()=>r(Date.now()),1e3);return()=>clearInterval(e)},[t]);let i=e?Date.parse(e):NaN;return t&&Number.isFinite(i)?Math.max(0,n-i):null}function Qr(e,t){Se.getState().update(e,`side-chat`,{type:`open`,kind:`side-chat`}),t?.show(`side-chat`)}function $r(e,t){let{t:n,language:r}=o(),i=(0,Q.useContext)(ye),[a,s]=(0,Q.useState)(!1),[c,l]=(0,Q.useState)(!1),[u,d]=(0,Q.useState)(!1),f=T(e=>e.capabilities.features.sessionExport===!0),p=e.name||n(`navigation:pageHeader.newChat`),{notify:m}=t,h=async()=>{if(!c){l(!0);try{await un(e.id,{archived:!0}),m(n(`board:action.archived`,{title:p})),i?.onArchived?.(e.id)}catch{m(n(`board:action.failed`),`error`)}finally{l(!1)}}},g=async()=>{if(!u){d(!0);try{let t=await X.exportSessionMarkdown(e.id,r),i=URL.createObjectURL(t),a=document.createElement(`a`);a.href=i,a.download=`${p.replace(/[\\/:*?"<>|\p{Cc}]/gu,`-`).slice(0,80)||`session`}.md`,a.click(),window.setTimeout(()=>URL.revokeObjectURL(i),1e3),m(n(`chat:sessionMenu.exported`,{title:p}))}catch{m(n(`chat:sessionMenu.exportFailed`),`error`)}finally{d(!1)}}},_=typeof t.contextPercent==`number`&&Number.isFinite(t.contextPercent)?Math.round(Math.min(100,Math.max(0,t.contextPercent))):null,v=[{key:`rename`,icon:Ue,label:n(`chat:focusSession.renameChat`),onSelect:t.onRename},...t.onSideChat?[{key:`side-chat`,icon:Ve,label:n(`board:inspector.sideChat`),onSelect:t.onSideChat,marker:`session-side-chat`}]:[],...f?[{key:`export`,icon:Cr,label:n(`chat:sessionMenu.exportMarkdown`),onSelect:()=>void g(),disabled:u,marker:`session-export`}]:[],{key:`archive`,icon:N,label:n(`board:card.archive`),onSelect:()=>void h(),disabled:c},{key:`workspace`,icon:Le,label:n(`board:session.moveWorkspace`),onSelect:t.onWorkspace,disabled:t.workspaceDisabled,separator:!0},{key:`compact`,icon:Dr,label:n(`chat:focusSession.compactContextNow`),onSelect:()=>t.onCompact?.(),disabled:t.compactDisabled||!t.onCompact,trailing:_===null?void 0:`${_}%`,trailingTitle:_===null?void 0:n(`board:session.contextUsage`,{percent:_})},...t.goalAvailable?[{key:`goal`,icon:Or,label:n(`board:session.goalMode`),onSelect:t.onToggleGoal,disabled:t.goalDisabled,checked:t.goalEngaged}]:[],...t.workflowsAvailable?[{key:`workflows`,icon:gt,label:n(`board:session.workflowRuns`),onSelect:()=>s(!0)}]:[],{key:`voice`,icon:vr,label:n(`chat:voiceMode.open`),onSelect:t.onVoiceMode}];return{entries:v,items:(0,$.jsxs)($.Fragment,{children:[v.map(e=>{let t=e.icon,n=e.marker?{[`data-${e.marker}`]:!0}:{},r=e.checked===void 0?(0,$.jsxs)(St,{disabled:e.disabled,onSelect:e.onSelect,...n,children:[(0,$.jsx)(t,{}),e.label,e.trailing&&(0,$.jsx)(Ct,{className:`font-mono tabular-nums`,title:e.trailingTitle,"data-session-context-usage":!0,children:e.trailing})]}):(0,$.jsxs)(wt,{checked:e.checked,disabled:e.disabled,onCheckedChange:e.onSelect,...n,children:[(0,$.jsx)(t,{}),e.label]});return(0,$.jsxs)(Q.Fragment,{children:[e.separator&&(0,$.jsx)(xt,{}),r]},e.key)}),t.extraItems&&(0,$.jsx)(xt,{}),t.extraItems]}),dialog:(0,$.jsx)(wn,{open:a,onOpenChange:s,children:(0,$.jsxs)(xn,{className:`max-w-lg`,children:[(0,$.jsxs)(Cn,{children:[(0,$.jsx)(Sn,{children:n(`board:session.workflowRuns`)}),(0,$.jsx)(bn,{children:p})]}),a&&(0,$.jsx)(Xr,{sessionId:e.id,empty:(0,$.jsx)(`p`,{className:`py-6 text-center text-sm text-content-muted`,children:n(`board:session.workflowRunsEmpty`)})})]})})}}var ei=(0,Q.lazy)(()=>t(()=>import(`./SessionInspector-DoXEstqb.js`).then(e=>({default:e.SessionInspector})),__vite__mapDeps([111,1,3,4,5,2,6,7,8,9,20,21,10,11,12,13,15,14,17,19,22,23,18,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,112,113]))),ti=[];function ni(e){switch(e){case`changes`:return{tab:`changes`,changesView:`workspace`};case`files`:return{tab:`changes`,changesView:`session`};case`terminal`:case`processes`:return{tab:`terminal`,terminalView:e};case`sources`:return{tab:`files`};case`browser`:return{tab:`preview`};case`plan`:return{tab:`plan`};case`side-chat`:return{tab:`side-chat`};default:return null}}function ri(e){if(!(e instanceof HTMLElement)||e===document.body||e.closest(`[data-inspector-sheet]`))return null;let t=e.closest(`[role="menu"]`);if(!t)return e;let n=t.getAttribute(`aria-labelledby`);return n?document.getElementById(n):null}var ii=`a[href], button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), iframe, [tabindex]:not([tabindex="-1"])`;function ai(e){if(e.key!==`Tab`||e.altKey||e.ctrlKey||e.metaKey)return;let t=[...e.currentTarget.querySelectorAll(ii)].filter(e=>e.getClientRects().length>0);if(!t.length)return;let n=t[0],r=t[t.length-1],i=document.activeElement;(e.shiftKey?i===n:i===r)&&(e.preventDefault(),(e.shiftKey?r:n).focus())}function oi(e){let t=e?.items??[];return t.length?{done:t.filter(e=>e.status===`completed`).length,total:t.length}:null}function si({sessionId:e,messages:t,cwd:n,active:r,plan:i,goal:a=null,team:s=null,activity:c=ti,planTab:l,streaming:u,completed:d,runStartedAt:f,requestConfirm:p,children:m}){let{t:h}=o(),g=(0,Q.useContext)(ye),_=!!(g?.phone??null),v=_||!!(g?.compact||g?.overlayOnly),[y,b]=(0,Q.useState)(null),[x,S]=(0,Q.useState)(null),C=(0,Q.useMemo)(()=>({headerHost:y,sourceActionHost:x,setSourceActionHost:S}),[y,x]),w=(0,Q.useMemo)(()=>Br(t),[t]),T=j(e=>e.open),E=j(e=>e.pinned),D=j(e=>e.setOpen),O=j(e=>e.width),k=j(e=>e.setWidth),[A,N]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{v||N(!1)},[v]);let P=v?A:T,F=qr(_&&P),I=_&&F.leaving,L=(0,Q.useRef)(null),R=`session-${e}-inspector`,z=(0,Q.useRef)(null),[B,V]=(0,Q.useState)(0);(0,Q.useLayoutEffect)(()=>{let e=z.current;if(!e)return;let t=()=>V(e.clientWidth);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let H=M(O,B||O+800),[ee,U]=(0,Q.useState)(0);(0,Q.useLayoutEffect)(()=>{if(!y)return;let e=()=>U(y.offsetHeight);e();let t=new ResizeObserver(e);return t.observe(y),()=>t.disconnect()},[y]);let te=(0,Q.useRef)(null),[ne,re]=(0,Q.useState)(!1),[W,ie]=(0,Q.useState)(!1),ae=(0,Q.useCallback)((e,t=!1)=>{if(window.dispatchEvent(new Event(qt)),_&&e){let e=ri(document.activeElement);e&&(L.current=e)}re(e),ie(e&&t),v?N(e):D(e)},[v,D,_]),oe=(0,Q.useCallback)((e,t)=>{j.getState().setTab(e),ae(!0,t)},[ae]),se=(0,Q.useCallback)(e=>oe(e,!0),[oe]),ce=(0,Q.useCallback)(()=>{let e=document.activeElement,t=!!(e&&te.current?.contains(e))||v&&!_&&(!e||e===document.body);ae(!1),t&&requestAnimationFrame(()=>document.querySelector(`[aria-controls="${CSS.escape(R)}"][data-inspector-toggle]`)?.focus())},[v,R,ae,_]),G=(0,Q.useCallback)(()=>P?ce():ae(!0,!0),[ce,P,ae]),le=(0,Q.useCallback)(t=>{t.preventDefault();let n=L.current;L.current=null,((n?.isConnected?n:null)??document.querySelector(`[data-session-changes][aria-controls="${CSS.escape(R)}"]`)??document.getElementById(`task-${e}-more`))?.focus({preventScroll:!0})},[R,e]),ue=_?`sheet`:v?`overlay`:`aside`,de=(0,Q.useMemo)(()=>({open:P,mode:ue,panelId:R,toggle:G,show:se}),[P,ue,R,se,G]),fe=(0,Q.useCallback)(e=>{let t=ni(e);if(!t)return;let n=j.getState();t.terminalView&&n.setTerminalView(t.terminalView),t.changesView&&n.setChangesView(t.changesView),oe(t.tab,!1)},[oe]);(0,Q.useEffect)(()=>Se.subscribe((t,n)=>{let r=t.sessions[e],i=n.sessions[e];if(!r||r===i||!r.contentOpen)return;let a=r.pages.find(e=>e.id===r.activeId);if(!a)return;let o=i?.pages.find(e=>e.id===i.activeId);(r.activeId!==i?.activeId||!i?.contentOpen||a.kind===`browser`&&a.url!==o?.url)&&fe(a.kind)}),[fe,e]),(0,Q.useEffect)(()=>{if(!r)return;let t=t=>{let n=Lr(t.detail);n&&Se.getState().update(e,n,{type:`open`,kind:n})};return window.addEventListener(Fr,t),()=>window.removeEventListener(Fr,t)},[r,e]),(0,Q.useEffect)(()=>{if(!r)return;let t=t=>{let n=t.detail;n===`side-chat`?Qr(e,de):n===`tree`&&z.current?.querySelector(`[data-session-branches]`)?.click()};return window.addEventListener(Kt,t),()=>window.removeEventListener(Kt,t)},[r,de,e]),Pr({sessionId:e,streaming:u,completed:d,runStartedAt:f,enabled:!v,open:P,onReveal:()=>fe(`files`)});let pe=$t(e=>e.bindings.toggleInspector);(0,Q.useEffect)(()=>{if(!r)return;let e=e=>{!nn(e,pe)||Qt(e)||en(e)&&e.key.length===1||(e.preventDefault(),G())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r,pe,G]),Mr(r&&v&&A,100,ce),Mr(r&&!v&&T&&!E,100,ce);let me=(0,Q.useRef)(()=>{});(0,Q.useEffect)(()=>()=>me.current(),[]);let he=e=>{if(e.button!==0)return;me.current(),e.preventDefault(),e.currentTarget.focus(),e.currentTarget.setPointerCapture(e.pointerId);let t=e.clientX,n=H,r=e=>k(M(n-(e.clientX-t),B)),i=()=>{window.removeEventListener(`pointermove`,r),window.removeEventListener(`pointerup`,i),window.removeEventListener(`pointercancel`,i)};me.current=i,window.addEventListener(`pointermove`,r),window.addEventListener(`pointerup`,i,{once:!0}),window.addEventListener(`pointercancel`,i,{once:!0})},ge=u?oi(i):null,_e=ne&&P&&!v,K=v&&!_&&P&&B-420>=480?420:0,ve=(P||I)&&(0,$.jsx)(Q.Suspense,{fallback:(0,$.jsx)(`p`,{role:`status`,className:`p-4 text-sm text-content-muted`,children:h(`chat:focusSession.gitLoading`)}),children:(0,$.jsx)(ei,{panelId:R,sessionId:e,cwd:n,streaming:u,plan:i,goal:a,team:s,activity:c,planTab:l,sources:w,mode:ue,requestConfirm:p,onClose:ce,onOpenComponents:g?.onOpenComponents,componentTabs:g?.componentTabs,autoFocus:ue===`overlay`&&W})});return(0,$.jsx)(De.Provider,{value:C,children:(0,$.jsx)(Me.Provider,{value:de,children:(0,$.jsxs)(`div`,{ref:z,id:`task-${e}-workspace`,tabIndex:-1,"data-task-workspace":e,"data-session-workspace":ue,"data-active":r,className:Ft(`relative flex h-full min-h-0 min-w-0 overflow-hidden bg-panel`,_&&`pb-[var(--pisper-safe-area-bottom)] [[data-mobile-keyboard='open']_&]:pb-0`),children:[(0,$.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,"data-session-conversation":!0,children:[(0,$.jsx)(`div`,{ref:b,className:`@container shrink-0`,"data-task-header":!0}),ge&&(0,$.jsxs)(`div`,{className:`relative z-10 h-0.5 shrink-0 bg-surface-muted`,"data-plan-progress":!0,children:[(0,$.jsx)(`span`,{role:`progressbar`,"aria-label":h(`board:session.planLabel`,ge),"aria-valuemin":0,"aria-valuemax":ge.total,"aria-valuenow":ge.done,className:`absolute inset-0 origin-left bg-st-run transition-transform duration-(--d-base)`,style:{transform:`scaleX(${ge.done/ge.total})`}}),l&&(0,$.jsx)(`button`,{type:`button`,className:`absolute top-1.5 right-3 inline-flex h-6 items-center rounded-sm bg-panel px-2 font-mono text-xs text-content-secondary tabular-nums shadow-edge hover:bg-surface-hover hover:text-content focus-visible:outline-2 focus-visible:outline-focus pointer-coarse:h-11`,"aria-label":h(`board:session.planOpen`,{plan:h(`board:session.plan`,ge)}),"aria-controls":R,"data-plan-progress-open":!0,onClick:()=>se(`plan`),children:h(`board:session.plan`,ge)})]}),(0,$.jsx)(`div`,{className:Ft(`min-h-0 min-w-0 flex-1 overflow-hidden`,_e&&`animate-in duration-[220ms] ease-(--ease)`),"data-overlay-inset":K||void 0,style:K?{paddingRight:K}:_e?{"--tw-enter-translate-x":`${H/2}px`}:void 0,children:m})]}),!v&&P&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":h(`chat:sessionContext.resize`),title:h(`chat:sessionContext.resizeHint`),"aria-controls":R,"aria-valuemin":360,"aria-valuemax":M(1/0,B),"aria-valuenow":H,onPointerDown:he,onDoubleClick:()=>k(456),onKeyDown:e=>{if(![`ArrowLeft`,`ArrowRight`,`Enter`].includes(e.key))return;if(e.preventDefault(),e.key===`Enter`){k(456);return}let t=e.shiftKey?64:16;k(M(H+(e.key===`ArrowLeft`?t:-t),B))},className:`relative -mr-1 w-2 shrink-0 cursor-col-resize touch-none select-none outline-none after:absolute after:inset-y-0 after:left-1/2 after:w-px after:bg-stroke-soft after:transition-colors after:duration-(--d-fast) hover:after:w-[3px] hover:after:-translate-x-px hover:after:bg-focus focus-visible:after:w-[3px] focus-visible:after:bg-focus`}),(0,$.jsxs)(`aside`,{ref:te,className:Ft(`flex h-full min-h-0 shrink-0 flex-col overflow-hidden border-l border-stroke-soft`,ne&&`animate-in slide-in-from-right duration-[220ms] ease-(--ease)`),style:{width:H},"data-inspector-aside":!0,"data-inspector-pinned":E||void 0,children:[(0,$.jsx)(`div`,{"aria-hidden":`true`,"data-window-drag-region":!0,"data-inspector-titlebar-gap":!0,className:`hidden h-[52px] shrink-0 [[data-custom-titlebar]_&]:block`}),(0,$.jsx)(`div`,{className:`min-h-0 flex-1`,children:ve})]})]}),v&&(P||I)&&(0,$.jsx)($.Fragment,{children:_?(0,$.jsx)(ln,{open:P,onOpenChange:e=>!e&&ce(),children:(0,$.jsxs)(on,{side:`bottom`,showCloseButton:!1,"data-inspector-sheet":!0,"data-sheet-leaving":I||void 0,onAnimationEnd:e=>{e.target===e.currentTarget&&!P&&F.finish()},onCloseAutoFocus:le,className:`gap-0 data-[side=bottom]:h-[min(86dvh,calc(100dvh-var(--pisper-safe-area-top)-48px))] overflow-hidden rounded-t-(--r-sheet) bg-panel p-0 pb-[var(--pisper-safe-area-bottom)]`,children:[(0,$.jsx)(sn,{className:`sr-only`,children:h(`board:inspector.label`)}),(0,$.jsx)(cn,{className:`sr-only`,children:h(`board:phone.inspectorDescription`)}),(0,$.jsx)(Qe,{onDismiss:ce}),(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col [&_[data-slot=segmented-control]]:h-11 [&_[data-slot=segmented-control-item]]:h-10 [&_[data-slot=segmented-control-item]]:px-3`,children:ve})]})}):(0,$.jsx)(`aside`,{ref:te,"data-inspector-overlay":!0,onKeyDown:ai,className:Ft(`absolute right-0 bottom-0 z-30 max-w-[calc(100%-24px)] overflow-hidden border-l border-stroke bg-panel shadow-float`,`animate-in slide-in-from-right duration-[220ms] ease-(--ease)`),style:{width:420,top:ee},children:ve})})]})})})}var ci=e(i(),1),li=(0,Q.createContext)(null);function ui({session:e,cwd:t,streaming:n,treeAvailable:r,branches:i,onOpenTree:a,...s}){let{t:c,language:l}=o(),u=(0,Q.useContext)(Me),d=$r(e,{...s,onSideChat:()=>Qr(e.id,u)}),f=e.name||c(`navigation:pageHeader.newChat`),m=hn(e.projectless?``:t,l),h=p({queryKey:[`session-change-summary`,e.id,n],queryFn:()=>Rn(e.id),staleTime:1e4}),g=h.data?.status===`known`?h.data:null,_=g?.changedFiles??0,v=$t(e=>e.bindings.toggleInspector),y=$t(e=>e.bindings.sessionTree),b=an(v),x=an(y),S=_>0?c(`board:session.changes`,{count:_,added:g?.added??0,removed:g?.removed??0}):null,C=S?`${c(`board:inspector.label`)} · ${S}`:c(`board:inspector.label`),w=b?c(`board:session.withShortcut`,{label:C,shortcut:b}):C,T=i>0?c(`board:session.treeBranches`,{count:i}):c(`board:session.tree`),E=x?c(`board:session.withShortcut`,{label:T,shortcut:x}):T;return(0,$.jsxs)(`header`,{"data-session-header":!0,"data-focus-region":`header`,"data-window-drag-region":!0,className:`flex h-[52px] min-w-0 shrink-0 items-center gap-2 pr-3 pl-4 [[data-custom-titlebar]_&]:pr-[144px]`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-1.5`,"data-window-drag-region":!0,children:[(0,$.jsxs)(Dt,{children:[(0,$.jsx)(Tt,{asChild:!0,children:(0,$.jsxs)(`button`,{type:`button`,id:`task-${e.id}-more`,"data-session-menu":!0,className:Ft(`group inline-flex h-8 min-w-0 shrink items-center gap-1 rounded-sm px-2 text-[15px] leading-6 font-medium text-content hover:bg-surface-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus data-[state=open]:bg-surface-hover pointer-coarse:h-11`,Bn),"aria-label":c(`board:session.titleMenu`,{title:f}),children:[(0,$.jsx)(`span`,{className:`truncate`,"data-session-title":!0,children:f}),(0,$.jsx)(U,{className:`size-3.5 flex-none text-content-muted`,"aria-hidden":`true`})]})}),(0,$.jsx)(Et,{align:`start`,className:`min-w-60`,children:d.items})]}),(0,$.jsx)(`span`,{className:`min-w-0 max-w-[160px] flex-none truncate font-mono text-xs text-content-muted @max-[560px]:hidden`,title:t,"data-session-project":!0,children:m}),r&&(0,$.jsxs)(Y,{type:`button`,variant:`ghost`,className:Ft(`h-7 min-w-7 flex-none gap-1 px-1.5 font-mono text-xs font-normal text-content-muted tabular-nums hover:text-content pointer-coarse:h-11 pointer-coarse:min-w-11`),"aria-haspopup":`dialog`,"aria-label":E,title:E,"aria-keyshortcuts":zn(y),"data-session-branches":i,onClick:e=>a(`branches`,e.currentTarget),children:[(0,$.jsx)(pe,{className:`size-3.5`,"aria-hidden":`true`}),i>0&&(0,$.jsx)(`span`,{"aria-hidden":`true`,children:i})]})]}),u&&(0,$.jsx)(Y,{type:`button`,variant:`ghost`,className:Ft(`h-8 flex-none gap-1.5 px-2 text-[13px] font-normal text-content-secondary hover:text-content pointer-coarse:h-11`,S?``:`w-8 px-0 pointer-coarse:w-11`,u.open&&`bg-surface-hover text-content ring-1 ring-stroke ring-inset`),"data-inspector-toggle":!0,"data-session-changes":_,"aria-controls":u.panelId,"aria-expanded":u.open,"aria-label":w,title:w,"aria-keyshortcuts":zn(v),onClick:u.toggle,children:S&&g?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(se,{className:`size-3.5`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{"aria-hidden":`true`,children:c(`board:session.changedFiles`,{count:_})}),(0,$.jsxs)(`span`,{className:`font-mono text-xs text-success tabular-nums`,"aria-hidden":`true`,children:[`+`,g.added??0]}),(0,$.jsxs)(`span`,{className:`font-mono text-xs text-danger tabular-nums`,"aria-hidden":`true`,children:[`−`,g.removed??0]})]}):(0,$.jsx)(q,{"aria-hidden":`true`})}),d.dialog]})}var di=`relative grid size-11 flex-none place-items-center rounded-[var(--r-md)] text-content-secondary focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus active:bg-surface-hover`;function fi({leading:e,session:t,cwd:n,streaming:r,runStartedAt:i,approvals:a,failed:s,stopped:c,treeAvailable:l,branches:u,onOpenTree:d,...f}){let{t:m,language:h}=o(),g=(0,Q.useContext)(Me),_=(0,Q.useContext)(ye),v=Zr(i,r),y=$r(t,f),[b,x]=(0,Q.useState)(!1),S=(0,Q.useId)(),C=t.name||m(`navigation:pageHeader.newChat`),w=hn(t.projectless?``:n,h),T=p({queryKey:[`session-change-summary`,t.id,r],queryFn:()=>Rn(t.id),staleTime:1e4}),E=T.data?.status===`known`?T.data.changedFiles??0:0,D=a>0?{kind:`approval`,label:m(`board:status.approval`)}:r?{kind:`running`,label:v===null?m(`board:status.running`):m(`board:phone.running`,{elapsed:_n(v)})}:s?{kind:`failed`,label:m(`board:status.failed`)}:c?{kind:`stopped`,label:m(`board:status.stopped`)}:null,O=()=>g?.show(`changes`),k=[...l?[{key:`tree`,icon:pe,label:u>0?m(`board:session.treeBranches`,{count:u}):m(`board:session.tree`),onSelect:()=>d(`branches`),marker:`session-tree`}]:[],{key:`side-chat`,icon:Ve,label:m(`board:inspector.sideChat`),onSelect:()=>Qr(t.id,g),marker:`session-side-chat`},...g?[{key:`inspector`,icon:se,label:m(`board:phone.openInspector`),onSelect:O,marker:`inspector-toggle`}]:[],...y.entries.map((e,t)=>t===0?{...e,separator:!0}:e)];return(0,$.jsxs)(`header`,{"data-session-header":`phone`,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,$.jsx)(`div`,{className:`flex min-w-0 items-center`,children:e}),(0,$.jsxs)(`button`,{type:`button`,"data-session-menu-trigger":!0,"aria-haspopup":`dialog`,"aria-expanded":b,"aria-controls":b?S:void 0,"aria-label":m(`board:session.titleMenu`,{title:C}),className:`flex h-11 max-w-[min(58vw,260px)] min-w-0 flex-col items-center justify-center rounded-[var(--r-md)] px-2 outline-none focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus active:bg-surface-hover`,onClick:()=>x(!0),children:[(0,$.jsxs)(`span`,{className:`flex max-w-full min-w-0 items-center gap-0.5 text-base leading-5 font-semibold text-content`,children:[(0,$.jsx)(`span`,{className:`truncate`,"data-session-title":!0,children:C}),(0,$.jsx)(U,{className:`size-4 flex-none text-content-muted`,"aria-hidden":`true`})]}),(0,$.jsxs)(`span`,{className:`flex max-w-full min-w-0 items-center gap-1 text-xs leading-4 text-content-muted`,children:[(0,$.jsx)(`span`,{className:`min-w-0 truncate font-mono`,title:n,"data-session-project":!0,children:w}),D&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,$.jsxs)(`span`,{className:Ft(`flex flex-none items-center gap-1`,(D.kind===`approval`||D.kind===`failed`)&&`font-medium text-warning-strong`),"data-session-status":D.kind,children:[(0,$.jsx)(Kn,{status:D.kind===`running`?`run`:D.kind===`stopped`?`stopped`:`attention`,className:`size-3`}),(0,$.jsx)(`span`,{className:`tabular-nums`,children:D.label})]})]})]})]}),(0,$.jsx)(`div`,{className:`flex min-w-0 items-center justify-end`,children:E>0&&g?(0,$.jsxs)(`button`,{type:`button`,"data-session-changes":E,"aria-haspopup":`dialog`,"aria-controls":g.panelId,"aria-label":m(`board:phone.changesLabel`,{count:E}),className:di,onClick:O,children:[(0,$.jsx)(se,{className:`size-5`,strokeWidth:1.75,"aria-hidden":`true`}),(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`absolute top-1.5 right-1 grid h-4 min-w-4 place-items-center rounded-full bg-content px-1 text-[10px] leading-none font-semibold text-panel tabular-nums`,children:E>99?`99+`:E})]}):_?.phone?(0,$.jsx)(`button`,{type:`button`,"data-phone-new-task":!0,"aria-label":m(`navigation:shell.newTask`),className:di,onClick:_.phone.onNewTask,children:(0,$.jsx)(Ze,{className:`size-5`,strokeWidth:1.75,"aria-hidden":`true`})}):null}),(0,$.jsx)(ln,{open:b,onOpenChange:x,children:(0,$.jsxs)(on,{id:S,side:`bottom`,showCloseButton:!1,"data-session-menu-sheet":!0,className:`max-h-[85dvh] gap-0 rounded-t-(--r-sheet) px-2 pt-1 pb-[calc(8px+var(--pisper-safe-area-bottom))]`,children:[(0,$.jsx)(Qe,{onDismiss:()=>x(!1)}),(0,$.jsx)(sn,{className:`truncate px-3 pt-1 pb-0.5 text-base font-semibold`,children:C}),(0,$.jsx)(cn,{className:`truncate px-3 pb-2 font-mono text-xs text-content-muted`,children:w}),(0,$.jsx)(`div`,{className:`min-h-0 overflow-y-auto`,role:`list`,children:k.map(e=>{let t=e.icon,n=e.marker?{[`data-${e.marker}`]:!0}:{};return(0,$.jsxs)(`div`,{role:`listitem`,children:[e.separator&&(0,$.jsx)(`div`,{"aria-hidden":`true`,className:`mx-3 my-1 h-px bg-stroke-soft`}),(0,$.jsxs)(`button`,{type:`button`,disabled:e.disabled,"aria-pressed":e.checked,className:`flex h-12 w-full min-w-0 items-center gap-3 rounded-[var(--r-md)] px-3 text-left text-base text-content focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus active:bg-surface-hover disabled:text-content-faint`,onClick:()=>{x(!1),e.onSelect()},...n,children:[(0,$.jsx)(t,{className:`size-[18px] flex-none text-content-secondary`,strokeWidth:1.75,"aria-hidden":`true`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label}),e.trailing&&(0,$.jsx)(`span`,{className:`flex-none font-mono text-sm text-content-muted tabular-nums`,title:e.trailingTitle,"data-session-context-usage":!0,children:e.trailing}),e.checked&&(0,$.jsx)(ee,{className:`size-4 flex-none text-content`,"aria-hidden":`true`})]})]},e.key)})})]})}),y.dialog]})}function pi({cwd:e,selection:t}){let{t:n}=o(),r=D(),i=(0,Q.useRef)(null);return{input:(0,$.jsx)(`input`,{ref:i,type:`file`,className:`hidden`,accept:tt,multiple:!0,"aria-label":n(`chat:focusSession.addAttachment`),onChange:e=>{let n=[...e.currentTarget.files||[]];e.currentTarget.value=``,n.length&&t.addFiles(n)}}),choose:async()=>{if(r){i.current?.click();return}if(window.pisperDesktop?.pickFiles){try{let n=await window.pisperDesktop.pickFiles(e);t.addAttachments(at(n||[]))}catch(e){t.setError(e)}return}i.current?.click()}}}function mi({cwd:e,selection:t}){let{t:n}=o(),{input:r,choose:i}=pi({cwd:e,selection:t});return(0,$.jsxs)($.Fragment,{children:[r,(0,$.jsxs)(`button`,{type:`button`,className:`relative grid size-[30px] min-w-[30px] flex-none cursor-pointer place-items-center rounded-sm border-0 bg-transparent text-content-muted transition-colors hover:bg-surface-hover hover:text-content disabled:cursor-not-allowed disabled:opacity-50 max-[650px]:size-11 max-[650px]:min-w-11 pointer-coarse:size-11 pointer-coarse:min-w-11`,title:n(`chat:focusSession.addAttachment`),"aria-label":n(`chat:focusSession.addAttachment`),onClick:()=>void i(),children:[(0,$.jsx)(He,{size:16}),t.attachments.length>0&&(0,$.jsx)(`span`,{className:`absolute -top-1 -right-1 grid h-4 min-w-4 place-items-center rounded-full border-2 border-panel bg-star px-0.5 text-[10px] leading-none font-medium text-on-accent tabular-nums`,children:t.attachments.length})]})]})}function hi({attachments:e,preparing:t=[],onRemove:n,compact:r=!1}){let{t:i}=o();return!e.length&&!t.length?null:(0,$.jsxs)(`div`,{className:`attachment-tray [&.compact]:max-h-[58px] flex max-h-[116px] flex-wrap gap-[6px] overflow-auto ${r?`compact`:``}`,children:[t.map(e=>(0,$.jsxs)(`div`,{className:`flex min-h-[42px] max-w-64 items-center gap-2 rounded-sm border border-stroke bg-surface-subtle pr-1 pl-2.5`,"aria-busy":`true`,children:[(0,$.jsx)(It,{className:`size-3.5`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-content`,children:e.name}),(0,$.jsx)(`span`,{className:`sr-only`,children:i(`chat:focusSession.preparingAttachments`)}),(0,$.jsx)(`button`,{type:`button`,className:`grid size-8 shrink-0 cursor-pointer place-items-center rounded-sm text-content-muted hover:bg-danger-soft hover:text-danger max-[650px]:size-11`,"aria-label":i(`chat:focusSession.removeName`,{name:e.name}),onClick:()=>n(e.id),children:(0,$.jsx)(vt,{size:14})})]},e.id)),e.map(e=>(0,$.jsxs)(`div`,{className:`attachment-chip grid min-h-[42px] min-w-[150px] max-w-[250px] grid-cols-[30px_minmax(0,1fr)_auto] items-center gap-2 rounded-sm border border-stroke bg-surface-subtle p-1.5 pr-1 [&_>_button]:grid [&_>_button]:size-7 [&_>_button]:cursor-pointer [&_>_button]:place-items-center [&_>_button]:rounded-xs [&_>_button]:text-content-muted [&_>_button:hover]:bg-danger-soft [&_>_button:hover]:text-danger max-[650px]:[&_>_button]:size-11 [&_>_img]:size-[30px] [&_>_img]:rounded-xs [&_>_img]:object-cover [&_>_span:nth-child(2)]:flex [&_>_span:nth-child(2)]:min-w-0 [&_>_span:nth-child(2)]:flex-col [&_small]:text-xs [&_small]:text-content-muted [&_small]:tabular-nums [&_strong]:truncate [&_strong]:font-mono [&_strong]:text-xs [&_strong]:font-medium [&_strong]:text-content`,children:[e.kind===`image`?(0,$.jsx)(`img`,{src:`data:${e.mimeType};base64,${e.data}`,alt:``}):(0,$.jsx)(`span`,{className:`grid size-[30px] place-items-center rounded-xs border border-key-border bg-key text-content-muted`,children:(0,$.jsx)(G,{size:13})}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{children:e.name}),(0,$.jsxs)(`small`,{children:[e.kind===`path`?i(`chat:focusSession.localPath`):e.kind===`image`?i(`chat:focusSession.image`):e.kind===`document`?i(`chat:focusSession.document`):i(`chat:focusSession.text`),e.kind===`path`?``:` · ${mn(e.size)}`,e.truncated?` · ${i(`chat:focusSession.truncated`)}`:``]})]}),(0,$.jsx)(`button`,{type:`button`,"aria-label":i(`chat:focusSession.removeName`,{name:e.name}),onClick:()=>n(String(e.id||``)),children:(0,$.jsx)(vt,{size:12})})]},e.id))]})}function gi({open:e,sessionId:t,onClose:n,onSelect:r,onCommandSelect:i}){let{t:a}=o(),s=T(e=>e.capabilities),c=w(s,`workflows`),[l,u]=(0,Q.useState)([]),[d,f]=(0,Q.useState)(`all`),[p,m]=(0,Q.useState)(``),[h,g]=(0,Q.useState)(null),[_,v]=(0,Q.useState)({}),[y,b]=(0,Q.useState)(!1),[x,C]=(0,Q.useState)(``);(0,Q.useEffect)(()=>{if(!e)return;let n=!0;return f(`all`),m(``),g(null),v({}),b(!0),C(``),Promise.all([X.getSessionCommands(t),c?S(`/api/workflows`):Promise.resolve({workflows:[]}),S(`/api/plugins?sessionId=${encodeURIComponent(t)}`)]).then(([e,t,r])=>{if(!n)return;let i=new Set(r.callableToolNames||[]);u([...(e.commands||[]).map(e=>({kind:e.source,id:e.name,name:e.name,description:e.description||``,inputs:[],argumentHint:e.argumentHint,invocation:e.invocation})),...(t.workflows||[]).filter(e=>e.status===`published`).map(e=>({kind:`workflow`,id:e.id,name:e.name,description:e.description||``,inputs:e.inputs||[]})),...(r.plugins||[]).flatMap(e=>(e.capabilities||[]).filter(e=>i.has(e.name)).map(t=>({kind:`tool`,id:t.name,name:t.id?Qn(t,a):String(t.label||t.name),description:t.id?$n(t,a):t.description,inputs:[],sourceName:e.name})))])}).catch(e=>{n&&(u([]),C(e instanceof Error?e.message:String(e)))}).finally(()=>n&&b(!1)),()=>{n=!1}},[e,t,a,c]);let E=(0,Q.useMemo)(()=>({all:l.length,prompt:l.filter(e=>e.kind===`prompt`).length,skill:l.filter(e=>e.kind===`skill`).length,tool:l.filter(e=>e.kind===`tool`).length,workflow:l.filter(e=>e.kind===`workflow`).length}),[l]),D=(0,Q.useMemo)(()=>{let e=p.trim().toLowerCase();return l.filter(t=>(d===`all`||t.kind===d)&&(!e||`${t.name} ${t.id} ${t.description} ${t.kind===`tool`?t.sourceName:``}`.toLowerCase().includes(e)))},[d,p,l]),O=e=>{let t=e;f(t),h&&t!==`all`&&h.kind!==t&&g(null)},k=e=>{g(e),v(Object.fromEntries(e.inputs.map(e=>[e.name,e.defaultValue??``])))};return(0,$.jsx)(wn,{open:e,onOpenChange:e=>!e&&n(),children:(0,$.jsxs)(xn,{className:`chat-resource-dialog w-[min(820px,calc(100vw_-_32px))] h-[min(600px,calc(100dvh_-_32px))] max-w-[820px] sm:max-w-[820px] grid-rows-[auto_minmax(0,1fr)] overflow-hidden max-[650px]:w-[calc(100vw_-_16px)] max-[650px]:h-[calc(100dvh_-_16px)] z-[220] gap-0 p-0 ring-0`,overlayClassName:`z-[220]`,showCloseButton:!1,children:[(0,$.jsxs)(`div`,{className:`chat-resource-head flex items-start justify-between gap-4 border-b border-stroke-soft px-[18px] pt-4 pb-3.5 max-[650px]:p-3.5 [&_[data-slot='dialog-description']]:mt-0.5 [&_[data-slot='dialog-description']]:text-xs [&_[data-slot='dialog-description']]:text-content-muted [&_[data-slot='dialog-title']]:text-base [&_[data-slot='dialog-title']]:font-semibold`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(Sn,{children:a(`chat:resourcePicker.title`)}),(0,$.jsx)(bn,{children:a(`chat:resourcePicker.description`)})]}),(0,$.jsx)(Y,{size:`icon-sm`,variant:`ghost`,"aria-label":a(`chat:resourcePicker.close`),onClick:n,children:(0,$.jsx)(vt,{})})]}),(0,$.jsxs)(`div`,{className:`chat-resource-body grid min-h-0 grid-cols-[minmax(0,1.1fr)_minmax(260px,.9fr)] overflow-hidden max-[650px]:grid-cols-[1fr] max-[650px]:grid-rows-[minmax(0,1fr)_minmax(190px,auto)] max-[650px]:overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`chat-resource-browser flex min-h-0 min-w-0 flex-col border-r border-stroke-soft p-3 max-[650px]:min-h-0 max-[650px]:border-r-0 max-[650px]:border-b`,children:[(0,$.jsx)(Mt,{value:d,onValueChange:O,className:`chat-resource-tabs w-full [&_[data-slot='tabs-list']]:grid [&_[data-slot='tabs-list']]:h-9 [&_[data-slot='tabs-list']]:w-full [&_[data-slot='tabs-list']]:rounded-sm [&_[data-slot='tabs-list']]:border [&_[data-slot='tabs-list']]:border-stroke [&_[data-slot='tabs-list']]:bg-surface-muted [&_[data-slot='tabs-list']]:p-0.5 [&_[data-slot='tabs-trigger']]:min-w-0 [&_[data-slot='tabs-trigger']]:gap-1 [&_[data-slot='tabs-trigger']]:rounded-xs [&_[data-slot='tabs-trigger']]:px-1.5 [&_[data-slot='tabs-trigger']]:text-xs [&_[data-slot='tabs-trigger']]:text-content-secondary [&_[data-slot='tabs-trigger'][data-state='active']]:bg-key [&_[data-slot='tabs-trigger'][data-state='active']]:text-content [&_[data-slot='tabs-trigger'][data-state='active']]:shadow-key [&_[data-slot='tabs-trigger']_small]:text-xs [&_[data-slot='tabs-trigger']_small]:font-normal [&_[data-slot='tabs-trigger']_small]:text-content-muted [&_[data-slot='tabs-trigger']_small]:tabular-nums ${c?`[&_[data-slot='tabs-list']]:grid-cols-[repeat(5,minmax(0,1fr))]`:`[&_[data-slot='tabs-list']]:grid-cols-[repeat(4,minmax(0,1fr))]`}`,children:(0,$.jsxs)(jt,{"aria-label":a(`chat:resourcePicker.categories`),children:[(0,$.jsxs)(At,{value:`all`,children:[a(`chat:resourcePicker.all`),(0,$.jsx)(`small`,{children:E.all})]}),(0,$.jsxs)(At,{value:`prompt`,children:[a(`chat:resourcePicker.prompt`),(0,$.jsx)(`small`,{children:E.prompt})]}),(0,$.jsxs)(At,{value:`skill`,children:[a(`chat:resourcePicker.skill`),(0,$.jsx)(`small`,{children:E.skill})]}),(0,$.jsxs)(At,{value:`tool`,children:[a(`chat:resourcePicker.tool`),(0,$.jsx)(`small`,{children:E.tool})]}),c&&(0,$.jsxs)(At,{value:`workflow`,children:[a(`chat:resourcePicker.workflow`),(0,$.jsx)(`small`,{children:E.workflow})]})]})}),(0,$.jsxs)(On,{className:`chat-resource-search mt-2`,children:[(0,$.jsx)(Dn,{children:(0,$.jsx)(qe,{"aria-hidden":`true`})}),(0,$.jsx)(En,{autoFocus:!0,value:p,"aria-label":a(`chat:resourcePicker.search`),onChange:e=>m(e.target.value),placeholder:a(`chat:resourcePicker.search`)})]}),(0,$.jsxs)(`div`,{className:`chat-resource-list mt-2 flex min-h-0 [flex:1_1_0] flex-col gap-px overflow-y-auto [overscroll-behavior:contain] [scrollbar-gutter:stable] [touch-action:pan-y] [&_>_button]:relative [&_>_button]:grid [&_>_button]:w-full [&_>_button]:cursor-pointer [&_>_button]:grid-cols-[28px_minmax(0,1fr)_auto] [&_>_button]:items-center [&_>_button]:gap-2 [&_>_button]:rounded-sm [&_>_button]:px-2 [&_>_button]:py-1.5 [&_>_button]:text-left [&_>_button]:text-content [&_>_button:hover]:bg-surface-hover [&_>_button.active]:bg-surface-hover [&_>_button.active]:before:absolute [&_>_button.active]:before:inset-y-1.5 [&_>_button.active]:before:left-0 [&_>_button.active]:before:w-[3px] [&_>_button.active]:before:rounded-full [&_>_button.active]:before:bg-star max-[650px]:[&_>_button]:min-h-11 [&_button_>_span:nth-child(2)]:flex [&_button_>_span:nth-child(2)]:min-w-0 [&_button_>_span:nth-child(2)]:flex-col [&_strong]:truncate [&_strong]:text-[13px] [&_strong]:font-medium [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_em]:text-xs [&_em]:whitespace-nowrap [&_em]:text-content-muted [&_em]:not-italic [&_>_p]:m-auto [&_>_p]:text-xs [&_>_p]:text-content-muted`,children:[D.map(e=>{let t=e.kind===`prompt`?ce:e.kind===`skill`?H:e.kind===`tool`?_t:gt;return(0,$.jsxs)(`button`,{type:`button`,className:h?.kind===e.kind&&h.id===e.id?`active`:``,onClick:()=>k(e),children:[(0,$.jsx)(`span`,{className:`list-icon grid size-7 place-items-center rounded-sm bg-surface-muted text-content-secondary`,children:(0,$.jsx)(t,{size:15})}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{children:e.name}),(0,$.jsx)(`small`,{children:e.description})]}),(0,$.jsx)(`em`,{children:e.kind===`prompt`?a(`chat:resourcePicker.prompt`):e.kind===`skill`?`Skill`:e.kind===`tool`?a(`chat:resourcePicker.tool`):a(`chat:resourcePicker.workflow`)})]},`${e.kind}:${e.id}`)}),!D.length&&(0,$.jsx)(`p`,{children:y?a(`chat:resourcePicker.loading`):x||a(`chat:resourcePicker.empty`)})]})]}),(0,$.jsx)(`div`,{className:`chat-resource-config flex min-h-0 min-w-0 flex-col gap-4 overflow-y-auto overscroll-contain p-[18px] max-[650px]:max-h-[230px] max-[650px]:min-h-0 [&_>_div:first-child]:flex [&_>_div:first-child]:flex-col [&_>_div:first-child]:gap-1 [&_>_p]:m-auto [&_>_p]:text-xs [&_>_p]:text-content-muted [&_p]:text-xs [&_p]:text-content-muted [&_strong]:text-[15px] [&_strong]:font-medium`,children:h?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`strong`,{children:h.name}),(0,$.jsx)(`p`,{children:h.description||a(`chat:resourcePicker.noDescription`)})]}),h.kind===`workflow`&&h.inputs.length>0&&(0,$.jsx)(`div`,{className:`chat-resource-inputs flex flex-col gap-3 [&_label]:grid [&_label]:gap-1.5 [&_label]:text-xs [&_label]:font-medium [&_label]:text-content-secondary`,children:h.inputs.map(e=>(0,$.jsxs)(`label`,{children:[(0,$.jsxs)(`span`,{children:[e.label,e.required?` *`:``]}),e.type===`boolean`?(0,$.jsx)(bt,{checked:!!_[e.name],onCheckedChange:t=>v(n=>({...n,[e.name]:t===!0}))}):(0,$.jsx)(Tn,{type:e.type===`number`?`number`:`text`,required:e.required,value:String(_[e.name]??``),onChange:t=>v(n=>({...n,[e.name]:t.target.value}))})]},e.id))}),h.kind===`prompt`&&h.argumentHint&&(0,$.jsx)(`code`,{className:`w-fit max-w-full rounded-xs bg-inline-code px-1.5 py-1 font-mono text-xs [overflow-wrap:anywhere] text-content-secondary`,children:h.argumentHint}),(0,$.jsx)(Y,{className:`chat-resource-confirm min-h-8 min-w-[112px] self-start bg-star text-[var(--on-accent)] hover:bg-star-hover max-[650px]:min-h-11`,onClick:()=>{if(h){if(h.kind===`prompt`){i(h.invocation||`/${h.name}`),n();return}r({kind:h.kind,resourceId:h.id,resourceName:h.name,arguments:h.kind===`workflow`?_:void 0,behavior:h.kind===`workflow`?`background`:`foreground`}),n()}},children:h.kind===`prompt`?a(`chat:resourcePicker.insertPrompt`):a(`chat:resourcePicker.useResource`)})]}):(0,$.jsx)(`p`,{children:a(`chat:resourcePicker.chooseResource`)})})]})]})})}var _i=1e3;function vi({option:e,selected:t,disabled:n,onSelect:r}){let i=e.icon;return(0,$.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,disabled:n,className:Ft(`grid min-h-11 w-full cursor-pointer grid-cols-[auto_minmax(0,1fr)_16px] items-center gap-2.5 rounded-sm px-2 py-1.5 text-left text-content hover:bg-surface-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus disabled:cursor-default disabled:opacity-50 disabled:hover:bg-transparent`,t&&`bg-surface-hover`),"data-mode-option":e.value,onClick:()=>r(e.value),children:[(0,$.jsx)(`span`,{className:`grid size-7 place-items-center rounded-sm bg-surface-muted text-content-secondary`,children:(0,$.jsx)(i,{size:14,"aria-hidden":`true`})}),(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,$.jsx)(`strong`,{className:`text-[13px] font-medium`,children:e.label}),(0,$.jsx)(`small`,{className:`text-xs leading-normal text-content-muted`,children:e.description})]}),t?(0,$.jsx)(ee,{size:15,strokeWidth:2.25,"aria-hidden":`true`}):(0,$.jsx)(`span`,{})]})}function yi({label:e,hint:t,children:n}){return(0,$.jsxs)(`div`,{role:`radiogroup`,"aria-label":e,className:`flex flex-col gap-0.5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between px-2 pt-1.5 pb-1 text-xs font-medium text-content-muted`,children:[(0,$.jsx)(`span`,{children:e}),t]}),n]})}function bi({approvalMode:e,onApprovalModeChange:t,approvalDisabled:n=!1,runMode:r,onRunModeChange:i,runModeDisabled:a=!1,goalsAvailable:s,teamAvailable:c,goal:l,tokenBudget:u,onTokenBudgetChange:d,onSaveTokenBudget:f,sheet:p=!1}){let{t:m}=o(),[h,g]=(0,Q.useState)(!1),[_,v]=(0,Q.useState)(!1),y=[{value:`approval-required`,label:m(`chat:focusSession.approvalRequired`),description:m(`chat:focusSession.approvalRequiredShowsADiffBeforeWriting`),icon:Sr},{value:`workspace-write`,label:m(`chat:focusSession.workspaceWrite`),description:m(`chat:focusSession.workspaceWriteRunsCommandsWithAutomaticApproval`),icon:yr},{value:`full-access`,label:m(`chat:focusSession.fullAccess`),description:m(`chat:focusSession.fullAccessRunsShellWithoutPerCommandApproval`),icon:Ye}],b=[{value:`plan`,label:m(`chat:focusSession.planMode`),description:m(`chat:focusSession.planModeDescription`),icon:fe},...s?[{value:`goal`,label:m(`chat:focusSession.goalMode`),description:m(`chat:focusSession.goalModeDescription`),icon:Or}]:[],...s&&c?[{value:`team`,label:m(`chat:focusSession.teamMode`),description:m(`chat:focusSession.teamModeDescription`),icon:kr}]:[]],x=y.find(t=>t.value===e)||y[0],S=l?.status===`active`?l?.mode===`team`&&c?`team`:`goal`:r,C=b.find(e=>e.value===S)||b[0],w=C.value!==`plan`,T=x.value===`full-access`?Ye:Xe,E=C.value===`team`?m(`board:composer.teamShort`):C.value===`goal`?m(`board:composer.goalShort`):``,D=E?`${E} · ${x.label}`:x.label,O=!!l?.id,k=S===`team`?l?.teamTokenBudget:l?.tokenBudget,A=k==null?null:Number(k)>0?Number(k):null,j=u!==A,M=O?A==null?m(`chat:focusSession.usedUnlimitedGoalTokens`,{used:gn(l?.tokensUsed)}):m(`chat:focusSession.usedBudgetTokensUsed`,{used:l?.tokensUsed||0,budget:A||0}):``,N=`${m(`board:composer.modeChip`)} · ${D}`,P=m(S===`team`?`chat:focusSession.teamTokenBudget`:`chat:focusSession.goalTokenBudget`),F=async()=>{if(!(h||!j||!O||!f)){g(!0);try{await f(u)}finally{g(!1)}}};return(0,$.jsxs)(it,{sheet:p,title:N,open:_,onOpenChange:v,align:`start`,side:`top`,className:`composer-mode-popover w-[300px] max-w-[calc(100vw_-_24px)] gap-1 p-1`,trigger:(0,$.jsxs)(`button`,{type:`button`,className:`composer-mode-chip inline-flex h-7 max-w-[220px] min-w-0 shrink cursor-pointer items-center gap-1.5 rounded-sm border border-transparent px-2 text-[13px] text-content-secondary transition-colors hover:bg-surface-hover hover:text-content aria-expanded:bg-surface-hover aria-expanded:text-content max-[650px]:h-11 max-[650px]:max-w-[160px] max-[650px]:border-stroke max-[650px]:px-2.5 pointer-coarse:h-11`,"aria-label":N,title:N,"data-composer-mode":`${C.value}:${x.value}`,children:[(0,$.jsx)(T,{size:14,className:`shrink-0`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:D}),(0,$.jsx)(U,{size:14,className:`shrink-0 opacity-70`,"aria-hidden":`true`})]}),children:[(0,$.jsx)(yi,{label:m(`chat:focusSession.approvalMode`),children:y.map(e=>(0,$.jsx)(vi,{option:e,selected:e.value===x.value,disabled:n,onSelect:e=>{v(!1),t(e)}},e.value))}),b.length>1&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{role:`separator`,className:`mx-1 h-px bg-stroke-soft`}),(0,$.jsx)(yi,{label:m(`chat:focusSession.executionMode`),hint:(0,$.jsxs)(`span`,{className:`flex items-center gap-1 font-normal`,children:[m(`board:composer.cycleRunMode`),(0,$.jsx)(Rt,{children:`⇧Tab`})]}),children:b.map(e=>(0,$.jsx)(vi,{option:e,selected:e.value===S,disabled:a,onSelect:e=>{e===`plan`&&v(!1),i(e)}},e.value))}),(w||O)&&(0,$.jsxs)(`div`,{className:`grid gap-1 px-2 pt-1 pb-1.5 text-xs`,children:[M&&(0,$.jsx)(`p`,{className:`text-content-muted tabular-nums`,children:M}),(0,$.jsxs)(`div`,{className:`grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-1.5`,children:[(0,$.jsx)(`label`,{htmlFor:`goal-token-budget-input`,className:`font-medium text-content-secondary`,children:P}),(0,$.jsx)(Tn,{id:`goal-token-budget-input`,type:`number`,min:_i,step:1e3,value:u??``,placeholder:m(`chat:focusSession.goalTokenBudgetUnlimited`),"aria-label":P,disabled:h,className:`text-[13px] tabular-nums`,onChange:e=>{let t=e.target.value.trim();if(!t){d(null);return}let n=Number(t);Number.isFinite(n)&&d(Math.max(_i,Math.round(n)))}}),O&&j?(0,$.jsxs)(Y,{type:`button`,variant:`outline`,size:`sm`,disabled:h,onClick:()=>void F(),children:[h?(0,$.jsx)(Ke,{className:`animate-spin`,size:12}):(0,$.jsx)(ee,{size:12}),m(`chat:focusSession.goalBudgetSave`)]}):(0,$.jsx)(`span`,{})]}),(0,$.jsx)(`small`,{className:`text-content-muted`,children:m(S===`team`?`chat:focusSession.teamTokenBudgetHint`:O?`chat:focusSession.goalTokenBudgetUpdateHint`:`chat:focusSession.goalTokenBudgetHint`)})]})]})]})}function xi(e,t){let n=[`plan`];return t.goalsAvailable&&n.push(`goal`),t.goalsAvailable&&t.teamAvailable&&n.push(`team`),n.length<2?null:n[(n.indexOf(e)+1)%n.length]??`plan`}function Si({state:e,cwd:t,onDismiss:n}){let{t:r}=o(),i=e.status===`streaming`;return(0,$.jsxs)(`section`,{"aria-label":r(`chat:sideQuestion.label`),"aria-busy":i,onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n())},className:`flex max-h-[min(45vh,420px)] min-w-0 flex-col rounded-lg border border-stroke bg-panel shadow-float`,children:[(0,$.jsxs)(`header`,{className:`flex min-w-0 items-start gap-2 border-b border-stroke-soft px-3 py-2`,children:[(0,$.jsx)(wr,{size:15,"aria-hidden":`true`,className:`mt-0.5 shrink-0 text-content-muted`}),(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,$.jsx)(`span`,{className:`text-xs text-content-muted`,children:r(`chat:sideQuestion.label`)}),(0,$.jsx)(`p`,{className:`m-0 line-clamp-2 text-[13px] text-content`,title:e.question,children:e.question})]}),(0,$.jsx)(Y,{variant:`ghost`,size:`icon-xs`,className:`shrink-0 pointer-coarse:size-11`,"aria-label":r(`chat:sideQuestion.close`),title:r(`chat:sideQuestion.close`),onClick:n,children:(0,$.jsx)(vt,{})})]}),(0,$.jsxs)(`div`,{className:`min-h-0 overflow-y-auto overscroll-contain px-3 py-2 text-[13px]`,children:[e.answer?(0,$.jsx)(Wn,{cwd:t,streaming:i,children:e.answer}):i?(0,$.jsxs)(`p`,{role:`status`,className:`m-0 flex items-center gap-2 text-content-muted`,children:[(0,$.jsx)(It,{className:`size-4`}),r(`chat:sideQuestion.answering`)]}):e.status===`done`?(0,$.jsx)(`p`,{className:`m-0 text-content-muted`,children:e.toolCallIgnored?r(`chat:sideQuestion.toolIgnored`):r(`chat:sideQuestion.empty`)}):null,e.status===`error`&&(0,$.jsx)(`p`,{role:`alert`,className:`m-0 mt-1 text-[var(--danger)]`,children:r(`chat:sideQuestion.failed`,{error:e.error})})]}),(0,$.jsx)(`footer`,{className:`border-t border-stroke-soft px-3 py-1.5 text-xs text-content-muted`,children:r(`chat:sideQuestion.note`)})]})}function Ci(e){let[t,n]=(0,Q.useState)(null),r=(0,Q.useRef)(null),i=(0,Q.useCallback)(()=>{r.current?.abort(),r.current=null},[]),a=(0,Q.useCallback)(()=>{i(),n(null)},[i]);return(0,Q.useEffect)(()=>a,[e,a]),{state:t,ask:(0,Q.useCallback)(t=>{i();let a=new AbortController;r.current=a;let o=()=>r.current===a;n({question:t,answer:``,status:`streaming`,error:``,toolCallIgnored:!1}),X.askSideQuestion(e,t,{signal:a.signal,onDelta:e=>{o()&&n(t=>t&&{...t,answer:t.answer+e})}}).then(e=>{o()&&(r.current=null,n(t=>t&&{...t,answer:e.text||t.answer,status:`done`,toolCallIgnored:e.toolCallIgnored}))}).catch(e=>{o()&&(r.current=null,n(t=>t&&{...t,status:`error`,error:e instanceof Error?e.message:String(e)}))})},[i,e]),dismiss:a}}var wi=new Set([`user`,`assistant`,`summary`,`compaction`,`position`]);function Ti(e,t,n){return t===`labeled`?!!e.label:t===`branches`?n||wi.has(e.kind):!1}var Ei=new Set([`tool`,`tool-call`]);function Di(e){let t=[],n=new Map;for(let r of e){let e=r.parentId?n.get(r.parentId):void 0,i={...r,children:[]};n.set(r.id,i),e?e.children.push(i):t.push(i)}return t}function Oi(e){let t=[],n=[...e].reverse();for(;n.length>0;){let e=n.pop();if(e){t.push(e);for(let t=e.children.length-1;t>=0;--t)n.push(e.children[t])}}return t}function ki(e,t){let n=[],r=new Map;for(let i of Oi(e)){let e=i.parentId&&r.get(i.parentId)||null;if(!t(i)){r.set(i.id,e);continue}let a={...i,children:[]};r.set(i.id,a),e?e.children.push(a):n.push(a)}return n}function Ai(e){let t=[e],n=e;for(;n.children.length===1;)n=n.children[0],t.push(n);let r={id:e.id,nodes:t,children:[],active:t.some(e=>e.active)},i=[{segment:r,children:n.children}];for(;i.length>0;){let e=i.pop();if(e)for(let t of e.children){let n=[t],r=t;for(;r.children.length===1;)r=r.children[0],n.push(r);let a={id:t.id,nodes:n,children:[],active:n.some(e=>e.active)};e.segment.children.push(a),i.push({segment:a,children:r.children})}}return r}function ji(e){return e.kind===`user`?Te:e.kind===`assistant`?V:e.kind===`tool`||e.kind===`tool-call`?_t:e.kind===`settings`?Je:e.kind===`label`?pt:e.kind===`summary`||e.kind===`compaction`?ce:e.kind===`position`?Re:e.label?xr:Ve}function Mi({nodes:e,viewportRef:t,selectedId:n,typeLabel:r,stateLabel:i,onSelect:a}){let o=Gn({count:e.length,getScrollElement:()=>t.current,estimateSize:()=>64,getItemKey:t=>e[t]?.id??`mobile-tree-node-${t}`,overscan:12,useAnimationFrameWithResizeObserver:!0});return(0,Q.useEffect)(()=>{if(!n)return;let t=e.findIndex(e=>e.id===n);t>=0&&o.scrollToIndex(t,{align:`center`})},[e,n,o]),(0,$.jsx)(`div`,{className:`relative w-full`,style:{height:`${o.getTotalSize()}px`},children:o.getVirtualItems().map(t=>{let o=e[t.index],s=ji(o);return(0,$.jsx)(`div`,{className:`absolute top-0 left-0 w-full px-3 py-1`,style:{transform:`translateY(${t.start}px)`},children:(0,$.jsxs)(`button`,{type:`button`,className:`session-tree-node relative grid items-center gap-2 rounded-sm border border-stroke bg-panel text-left text-content transition-colors duration-(--d-fast) hover:bg-surface-subtle [&.selected]:border-key-border [&.selected]:bg-key [&.selected]:shadow-key [&.selected]:before:absolute [&.selected]:before:inset-y-2 [&.selected]:before:-left-px [&.selected]:before:w-[3px] [&.selected]:before:rounded-r-[3px] [&.selected]:before:bg-star min-h-14 w-full grid-cols-[34px_minmax(0,1fr)_auto] py-2 pr-2.5 pl-1 ${o.id===n?` selected`:``}${o.active?` active`:``}${o.leaf?` leaf`:``}`,"data-kind":o.kind,"data-pisper-tree-entry":o.id,onClick:()=>a(o.id),children:[(0,$.jsx)(`span`,{className:`session-tree-marker relative z-[2] grid size-6 place-items-center justify-self-center rounded-sm bg-surface-muted text-content-secondary [.session-tree-node[data-kind='tool']_&]:bg-warning-soft [.session-tree-node[data-kind='tool']_&]:text-warning-strong [.session-tree-node.leaf_&]:bg-star [.session-tree-node.leaf_&]:text-on-accent [.session-tree-mark.active_&]:bg-star-soft [.session-tree-mark.active_&]:text-star-strong`,children:(0,$.jsx)(s,{size:14})}),(0,$.jsxs)(`span`,{className:`session-tree-node-copy flex min-w-0 flex-col gap-0.5 [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_strong]:truncate [&_strong]:text-sm [&_strong]:font-medium`,children:[(0,$.jsx)(`strong`,{children:o.label||o.text||r(o)}),(0,$.jsx)(`small`,{children:o.label&&o.text?o.text:r(o)})]}),(0,$.jsxs)(`span`,{className:`session-tree-node-state inline-flex min-w-0 shrink-0 items-center gap-1 text-xs text-content-muted [.session-tree-node.leaf_&]:text-accent-fg`,children:[o.label&&(0,$.jsx)(xr,{size:12}),i(o)]})]})},t.key)})})}function Ni({segment:e,viewportRef:t,selectedId:n,typeLabel:r,stateLabel:i,onSelect:a}){let{nodes:o,children:s}=e,c=o.length>120,l=Gn({count:o.length,getScrollElement:()=>t.current,estimateSize:()=>56,getItemKey:e=>o[e]?.id??`tree-node-${e}`,overscan:12,scrollMargin:26,enabled:c,useAnimationFrameWithResizeObserver:!0}),u=e=>{let t=ji(e);return(0,$.jsxs)(`button`,{type:`button`,className:`session-tree-node relative grid items-center gap-2 rounded-sm border border-stroke bg-panel text-left text-content transition-colors duration-(--d-fast) hover:bg-surface-subtle [&.selected]:border-key-border [&.selected]:bg-key [&.selected]:shadow-key [&.selected]:before:absolute [&.selected]:before:inset-y-2 [&.selected]:before:-left-px [&.selected]:before:w-[3px] [&.selected]:before:rounded-r-[3px] [&.selected]:before:bg-star z-[1] min-h-12 w-[220px] cursor-pointer grid-cols-[30px_minmax(0,1fr)_auto] py-1.5 pr-2 pl-0.5 ${e.id===n?` selected`:``}${e.active?` active`:``}${e.leaf?` leaf`:``}`,"data-kind":e.kind,"data-pisper-tree-entry":e.id,onClick:()=>a(e.id),children:[(0,$.jsx)(`span`,{className:`session-tree-marker relative z-[2] grid size-6 place-items-center justify-self-center rounded-sm bg-surface-muted text-content-secondary [.session-tree-node[data-kind='tool']_&]:bg-warning-soft [.session-tree-node[data-kind='tool']_&]:text-warning-strong [.session-tree-node.leaf_&]:bg-star [.session-tree-node.leaf_&]:text-on-accent [.session-tree-mark.active_&]:bg-star-soft [.session-tree-mark.active_&]:text-star-strong`,children:(0,$.jsx)(t,{size:14})}),(0,$.jsxs)(`span`,{className:`session-tree-node-copy flex min-w-0 flex-col gap-0.5 [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_strong]:truncate [&_strong]:text-sm [&_strong]:font-medium`,children:[(0,$.jsx)(`strong`,{children:e.label||e.text||r(e)}),(0,$.jsx)(`small`,{children:e.label&&e.text?e.text:r(e)})]}),(0,$.jsxs)(`span`,{className:`session-tree-node-state inline-flex min-w-0 shrink-0 items-center gap-1 text-xs text-content-muted [.session-tree-node.leaf_&]:text-accent-fg`,children:[e.label&&(0,$.jsx)(xr,{size:12}),i(e)]})]},e.id)};return(0,Q.useEffect)(()=>{if(!c||!n)return;let e=o.findIndex(e=>e.id===n);e<0||l.scrollToIndex(e,{align:`center`})},[n,o,c,l]),(0,$.jsxs)(`div`,{className:`session-tree-segment relative flex min-w-[220px] flex-col items-center ${e.active?` active`:``}`,children:[(0,$.jsx)(`div`,{className:`session-tree-track relative z-[1] grid w-[220px] gap-2 before:absolute before:top-[22px] before:bottom-[22px] before:left-1/2 before:z-0 before:w-px before:bg-stroke-strong [.session-tree-segment.active_>_&::before]:bg-control`,children:c?(0,$.jsx)(`div`,{className:`relative w-[220px]`,style:{height:`${l.getTotalSize()}px`},children:l.getVirtualItems().map(e=>(0,$.jsx)(`div`,{className:`absolute top-0 left-0 w-[220px]`,style:{top:`${e.start-26}px`},children:u(o[e.index])},e.key))}):o.map(u)}),s.length>0&&(0,$.jsx)(`div`,{className:`session-tree-children relative flex items-start justify-center pt-7 before:absolute before:top-0 before:left-1/2 before:h-3.5 before:w-px before:bg-stroke-strong [.session-tree-segment.active_>_&::before]:bg-control`,children:s.map(e=>(0,$.jsx)(`div`,{className:`session-tree-child relative flex px-3 pt-3.5 before:absolute before:top-0 before:right-1/2 before:h-3.5 before:w-1/2 before:border-t before:border-stroke-strong after:absolute after:top-0 after:left-1/2 after:h-3.5 after:w-1/2 after:border-t after:border-l after:border-stroke-strong [&:first-child::before]:border-t-transparent [&:last-child::after]:border-t-transparent [&.active]:before:border-control [&.active]:after:border-control [&.active:first-child::before]:border-t-transparent [&.active:last-child::after]:border-t-transparent${e.active?` active`:``}`,children:(0,$.jsx)(Ni,{segment:e,viewportRef:t,selectedId:n,typeLabel:r,stateLabel:i,onSelect:a})},e.id))})]})}function Pi({view:e,onViewChange:t,showAllEntries:n,onShowAllEntriesChange:r,query:i,onQueryChange:a,loading:s,error:c,mobileLayout:l,viewportRef:u,segments:d,visibleNodes:f,selectedId:p,typeLabel:m,stateLabel:h,onSelect:g,visibleMarks:_,marksLoading:v,openingMark:y,onOpenMark:b,confirmingMark:x,onConfirmMark:S,onCancelMark:C}){let{t:w,language:T}=o(),E=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{x&&E.current?.focus()},[x]);let D=e=>{let t=Date.parse(e);return Number.isFinite(t)?new Intl.DateTimeFormat(T,{dateStyle:`medium`,timeStyle:`short`}).format(t):w(`navigation:appOverlays.unknownTime`)};return(0,$.jsxs)(`div`,{className:`chat-resource-browser flex min-h-0 min-w-0 flex-col bg-transparent session-tree-browser`,children:[(0,$.jsx)(Mt,{className:`chat-resource-tabs session-tree-tabs px-3 pt-3`,value:e,onValueChange:e=>t(e),children:(0,$.jsxs)(jt,{children:[(0,$.jsx)(At,{value:`branches`,children:w(`chat:sessionTree.branches`)}),(0,$.jsx)(At,{value:`labeled`,children:w(`chat:sessionTree.labeled`)}),(0,$.jsx)(At,{value:`marks`,children:w(`chat:sessionTree.allMarks`)})]})}),(0,$.jsxs)(On,{className:`chat-resource-search mx-3 mt-2 w-auto flex-none`,children:[(0,$.jsx)(Dn,{children:(0,$.jsx)(qe,{"aria-hidden":`true`})}),(0,$.jsx)(En,{value:i,disabled:!!y,"aria-label":w(`chat:sessionTree.searchPlaceholder`),onChange:e=>a(e.target.value),placeholder:w(`chat:sessionTree.searchPlaceholder`)})]}),e===`branches`&&(0,$.jsxs)(`label`,{className:`mx-3 mt-2 flex min-h-6 flex-none cursor-pointer items-center gap-2 text-xs text-content-secondary max-[650px]:min-h-11`,children:[(0,$.jsx)(bt,{checked:n,onCheckedChange:e=>r(e===!0),"data-session-tree-all-entries":!0}),w(`chat:sessionTree.showAllEntries`)]}),e===`marks`?(0,$.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 basis-0 flex-col gap-2 overflow-auto overscroll-contain px-3.5 py-3`,"data-testid":`session-tree-marks-list`,children:[c&&(0,$.jsx)(`p`,{role:`alert`,className:`mx-0.5 text-xs text-danger`,children:c}),v?(0,$.jsx)(`p`,{className:`grid min-h-[180px] place-items-center text-xs text-content-muted`,children:w(`chat:sessionTree.loadingMarks`)}):_.length?_.map(e=>(0,$.jsxs)(Q.Fragment,{children:[(0,$.jsxs)(`button`,{type:`button`,className:`session-tree-mark grid cursor-pointer grid-cols-[30px_minmax(0,1fr)_auto] items-center gap-2 rounded-sm border border-stroke bg-panel py-2 pr-2.5 pl-1 text-left text-content transition-colors duration-(--d-fast) hover:bg-surface-subtle [&.active]:border-star-border [&_>_em]:rounded-xs [&_>_em]:bg-star-soft [&_>_em]:px-1.5 [&_>_em]:py-0.5 [&_>_em]:text-xs [&_>_em]:text-star-strong [&_>_em]:not-italic ${e.active?` active`:``}`,"aria-expanded":e.active?void 0:x===e,"data-session-tree-mark":e.active?`active`:`other-branch`,disabled:!!y,"aria-busy":y===e,onClick:()=>b(e),children:[(0,$.jsx)(`span`,{className:`session-tree-marker relative z-[2] grid size-6 place-items-center justify-self-center rounded-sm bg-surface-muted text-content-secondary [.session-tree-node[data-kind='tool']_&]:bg-warning-soft [.session-tree-node[data-kind='tool']_&]:text-warning-strong [.session-tree-node.leaf_&]:bg-star [.session-tree-node.leaf_&]:text-on-accent [.session-tree-mark.active_&]:bg-star-soft [.session-tree-mark.active_&]:text-star-strong`,children:y===e?(0,$.jsx)(It,{className:`size-3.5`}):(0,$.jsx)(pt,{size:14})}),(0,$.jsxs)(`span`,{className:`session-tree-node-copy flex min-w-0 flex-col gap-0.5 [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_strong]:truncate [&_strong]:text-sm [&_strong]:font-medium`,children:[(0,$.jsx)(`strong`,{children:e.label}),(0,$.jsx)(`small`,{children:e.sessionName||w(`navigation:appOverlays.untitledChat`)}),(0,$.jsx)(`small`,{children:w(`chat:sessionTree.markTimes`,{sessionTime:D(e.sessionModified),nodeTime:D(e.nodeTimestamp)})})]}),y===e?(0,$.jsx)(`em`,{children:w(`chat:sessionTree.navigating`)}):e.active&&(0,$.jsx)(`em`,{children:w(`chat:sessionTree.markActive`)})]}),x===e&&(0,$.jsxs)(`div`,{role:`group`,"aria-label":w(`chat:sessionTree.otherBranchTitle`),className:`-mt-1 grid gap-2 rounded-sm border border-stroke bg-surface-subtle p-2.5 text-xs text-content-secondary`,"data-session-tree-mark-confirm":!0,children:[(0,$.jsxs)(`p`,{className:`flex items-start gap-1.5 text-content`,children:[(0,$.jsx)(pe,{size:13,className:`mt-0.5 flex-none`,"aria-hidden":`true`}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{className:`font-medium`,children:w(`chat:sessionTree.otherBranchTitle`)}),(0,$.jsx)(`span`,{className:`block text-content-muted`,children:w(`chat:sessionTree.otherBranchMessage`)})]})]}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,$.jsx)(Y,{type:`button`,size:`sm`,variant:`ghost`,className:`max-[650px]:h-11`,onClick:C,children:w(`common:ui.cancel`)}),(0,$.jsx)(Y,{ref:E,type:`button`,size:`sm`,className:`max-[650px]:h-11`,onClick:()=>S(e),children:w(`chat:sessionTree.switchBranch`)})]})]})]},`${e.sessionId}:${e.entryId}`)):(0,$.jsx)(`p`,{className:`grid min-h-[180px] place-items-center text-xs text-content-muted`,children:w(`chat:sessionTree.noMarksYet`)})]}):(0,$.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 basis-0 overflow-auto overscroll-contain [scrollbar-gutter:stable]`,"data-testid":`session-tree-list`,ref:u,children:d.length>0?l?(0,$.jsx)(Mi,{nodes:f,viewportRef:u,selectedId:p,typeLabel:m,stateLabel:h,onSelect:g}):(0,$.jsx)(`div`,{className:`session-tree-canvas flex w-max min-w-full items-start justify-center gap-9 px-7 pt-6.5 pb-12`,children:d.map(e=>(0,$.jsx)(Ni,{segment:e,viewportRef:u,selectedId:p,typeLabel:m,stateLabel:h,onSelect:g},e.id))}):(0,$.jsx)(`p`,{className:`grid min-h-[180px] place-items-center text-xs text-content-muted`,children:s?w(`chat:sessionTree.loading`):c||w(`chat:sessionTree.empty`)})})]})}function Fi({label:e,onClick:t}){return(0,$.jsxs)(Y,{variant:`secondary`,className:`w-full min-w-0`,title:e,onClick:t,children:[(0,$.jsx)(Ve,{size:13}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:e})]})}function Ii({mobileLayout:e,selected:t,loading:n,error:r,streaming:i,dataStreaming:a,parentSession:s,parentEntryId:c,childSessions:l,canLabel:u,canDerive:d,label:f,summarize:p,savingLabel:m,creatingChild:h,navigating:g,typeLabel:_,stateLabel:v,onBackToList:y,onLabelChange:b,onSummarizeChange:x,onSaveLabel:S,onRemoveLabel:C,onCreateChild:w,onNavigate:T,onRefresh:E,onOpenRelated:D}){let{t:O,language:k}=o();return(0,$.jsxs)(`div`,{className:`chat-resource-config session-tree-inspector flex min-h-0 min-w-0 flex-col gap-4 overflow-y-auto overscroll-contain bg-panel p-[18px] [&_>_p]:m-auto [&_>_p]:text-xs [&_>_p]:text-content-muted [&_p]:text-xs [&_p]:text-content-muted [&_strong]:text-[15px] [&_strong]:font-medium ${e?``:`border-l border-stroke-soft`}`,children:[e&&(0,$.jsx)(`div`,{className:`sticky top-0 z-[2] -mx-1.5 -mt-2 flex border-b border-stroke-soft bg-panel px-0.5 pb-2`,children:(0,$.jsxs)(Y,{variant:`ghost`,className:`min-h-11 justify-start px-2`,onClick:y,children:[(0,$.jsx)(te,{size:17}),O(`chat:sessionTree.backToNodes`)]})}),t?(0,$.jsxs)($.Fragment,{children:[(s||l.length>0)&&(0,$.jsxs)(`div`,{className:`session-tree-lineage flex flex-col gap-1.5 border-b border-stroke-soft pb-3 [&_>_strong]:text-xs [&_>_strong]:font-medium [&_>_strong]:text-content-muted [&_button]:justify-start [&_button]:text-left [&_button]:text-xs`,children:[(0,$.jsx)(`strong`,{children:O(`chat:sessionTree.conversationLineage`)}),s&&(0,$.jsx)(Fi,{label:O(`chat:sessionTree.returnToOriginalChat`,{name:s.name||O(`chat:chatPage.newChat`)}),onClick:()=>D(s,c)}),l.map(e=>(0,$.jsx)(Fi,{label:O(`chat:sessionTree.openSeparateChat`,{name:e.name||O(`chat:chatPage.newChat`)}),onClick:()=>D(e)},e.id))]}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`span`,{className:`session-tree-selection-kind mb-1 flex items-center justify-between gap-2 text-xs text-content-muted [&_em]:rounded-xs [&_em]:border [&_em]:border-star-border [&_em]:bg-star-soft [&_em]:px-1.5 [&_em]:py-0.5 [&_em]:font-medium [&_em]:text-star-strong [&_em]:not-italic`,children:[_(t),v(t)&&(0,$.jsx)(`em`,{children:v(t)})]}),(0,$.jsx)(`strong`,{children:t.label||_(t)}),(0,$.jsx)(`p`,{children:t.text||O(`chat:sessionTree.noPreview`)})]}),(0,$.jsxs)(`div`,{className:`chat-resource-inputs flex flex-col gap-3 [&_label]:grid [&_label]:gap-1.5 [&_label]:text-xs [&_label]:font-medium [&_label]:text-content-secondary`,children:[u&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`label`,{children:[(0,$.jsx)(`span`,{children:O(`chat:sessionTree.nodeLabel`)}),(0,$.jsx)(Tn,{value:f,maxLength:80,placeholder:O(`chat:sessionTree.labelPlaceholder`),onChange:e=>b(e.target.value)})]}),(0,$.jsxs)(Y,{variant:`secondary`,disabled:m||i||a,onClick:S,children:[(0,$.jsx)(pt,{size:14}),O(m?`chat:sessionTree.savingLabel`:`chat:sessionTree.saveLabel`)]}),!!t.label&&(0,$.jsxs)(Y,{variant:`secondary`,disabled:m||i||a,onClick:C,children:[(0,$.jsx)(mt,{size:14}),O(`chat:sessionTree.removeLabel`)]})]}),u&&(0,$.jsxs)(Y,{variant:`secondary`,disabled:h||i||a,onClick:w,children:[(0,$.jsx)(we,{size:14}),O(h?`chat:sessionTree.creatingChildChat`:`chat:sessionTree.createChildChat`)]}),d&&(0,$.jsxs)(`label`,{className:`session-tree-summary-option cursor-pointer grid-cols-[minmax(0,1fr)_auto] items-center [&_small]:col-span-full [&_small]:leading-relaxed [&_small]:font-normal [&_small]:text-content-muted`,children:[(0,$.jsx)(`span`,{children:O(`chat:sessionTree.abandonedBranchSummary`)}),(0,$.jsx)(kt,{checked:p,disabled:t.leaf||i||a,onCheckedChange:x,"data-session-tree-summary":!0}),(0,$.jsx)(`small`,{children:O(`chat:sessionTree.abandonedBranchSummaryHint`)})]})]}),d&&(0,$.jsx)(`p`,{children:O(`chat:sessionTree.sideEffectsRemain`)}),t.timestamp&&(0,$.jsx)(`p`,{children:new Intl.DateTimeFormat(k,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(t.timestamp))}),r&&(0,$.jsx)(`p`,{role:`alert`,className:`text-danger!`,children:r}),d&&(0,$.jsxs)(Y,{className:`chat-resource-confirm self-start`,disabled:g||t.leaf||i||a,onClick:T,children:[(0,$.jsx)(Re,{size:15}),g?O(`chat:sessionTree.navigating`):t.leaf?O(`chat:sessionTree.currentPosition`):O(`chat:sessionTree.continueFromNode`)]})]}):(0,$.jsx)(`p`,{children:n?O(`chat:sessionTree.loading`):r||O(`chat:sessionTree.chooseNode`)}),r&&!t&&(0,$.jsx)(Y,{variant:`secondary`,onClick:E,children:O(`chat:sessionTree.retry`)})]})}function Li({open:e,sessionId:t,streaming:n,onClose:r,onNavigated:i,onCreateChildSession:a,initialView:s=`branches`,returnFocusRef:c,notify:l}){let{t:u,language:d}=o(),f=D(),p=E(),m=f||p,[h,g]=(0,Q.useState)(null),[_,v]=(0,Q.useState)([]),[y,b]=(0,Q.useState)(`branches`),[x,S]=(0,Q.useState)(!1),[C,w]=(0,Q.useState)(`list`),[T,O]=(0,Q.useState)(``),[k,A]=(0,Q.useState)(``),[j,M]=(0,Q.useState)(``),[N,P]=(0,Q.useState)([]),[F,I]=(0,Q.useState)(!1),[L,R]=(0,Q.useState)(!1),[z,B]=(0,Q.useState)(null),[V,H]=(0,Q.useState)(null),[ee,U]=(0,Q.useState)(!1),[te,ne]=(0,Q.useState)(!1),[re,W]=(0,Q.useState)(!1),[ie,ae]=(0,Q.useState)(!1),[oe,se]=(0,Q.useState)(!1),[ce,G]=(0,Q.useState)(``),le=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{if(!e||!t)return;let n=!1;return b(s),w(`list`),O(``),ne(!0),G(``),Promise.all([X.getSessionTree(t),X.listSessions()]).then(([e,t])=>{n||(g(e),v(t.sessions||[]),A(e.leafId||e.nodes[0]?.id||``))}).catch(e=>{n||G(Z(e))}).finally(()=>{n||ne(!1)}),()=>{n=!0}},[e,t]),(0,Q.useEffect)(()=>{e||(g(null),v([]),A(``),w(`list`),M(``),B(null),H(null),U(!1),G(``))},[e]),(0,Q.useEffect)(()=>{if(!e||y!==`marks`||F)return;let t=!0;return R(!0),G(``),X.listSessionTreeLabels(500).then(e=>{t&&(P(e.labels||[]),I(!0))}).catch(e=>t&&G(Z(e))).finally(()=>t&&R(!1)),()=>{t=!1}},[e,y,F]);let ue=(0,Q.useMemo)(()=>{let e=T.trim().toLocaleLowerCase(d);return e?N.filter(t=>`${t.label} ${t.sessionName}`.toLocaleLowerCase(d).includes(e)):N},[N,d,T]),de=async(e,t=!1)=>{if(!z){if(!e.active&&!t){H(e);return}H(null),B(e),G(``);try{let t=null;if(!e.active){if(t=await X.navigateSessionTreeTarget(e.sessionId,e.entryId),t.cancelled){B(null);return}tr(e.sessionId)}Yt(e.sessionId,`open`,e.entryId),r(),t&&l&&or(e.sessionId,t,u(`chat:sessionTree.switchedBranch`),{notify:l,t:u})}catch(e){G(Z(e)),B(null)}}},fe=(0,Q.useMemo)(()=>Di(h?.nodes||[]),[h]),me=(0,Q.useCallback)(e=>({user:u(`chat:sessionTree.userMessage`),assistant:u(`chat:sessionTree.agentMessage`),tool:u(`chat:sessionTree.toolResult`),"tool-call":u(`chat:sessionTree.toolCall`),summary:u(`chat:sessionTree.branchSummary`),compaction:u(`chat:sessionTree.compactionSummary`),settings:u(`chat:sessionTree.settingsChange`),label:u(`chat:sessionTree.labelChange`),position:u(`chat:sessionTree.branchPosition`),extension:u(`chat:sessionTree.extensionEntry`),metadata:u(`chat:sessionTree.metadataEntry`),message:u(`chat:sessionTree.message`)})[e.kind]||e.type,[u]),he=(0,Q.useMemo)(()=>{let e=T.trim().toLocaleLowerCase(d);return ki(fe,t=>Ti(t,y,x)?!e||`${t.label} ${t.text} ${me(t)}`.toLocaleLowerCase(d).includes(e):!1)},[fe,d,T,x,me,y]),ge=(0,Q.useMemo)(()=>he.map(Ai),[he]),_e=(0,Q.useMemo)(()=>Oi(he),[he]),K=(0,Q.useMemo)(()=>Oi(fe),[fe]).find(e=>e.id===k)||null,ve=h?.lineage?.parentSessionId?_.find(e=>e.id===h.lineage?.parentSessionId):null,ye=(h?.lineage?.childSessionIds||[]).map(e=>_.find(t=>t.id===e)).filter(e=>!!e),be=K?.kind===`assistant`&&K.status===`completed`,xe=be,Se=K?!Ei.has(K.kind):!1;(0,Q.useEffect)(()=>{M(K?.label||``),U(!1)},[K?.id,K?.label]),(0,Q.useEffect)(()=>{if(k&&_e.some(e=>e.id===k))return;let e=[..._e].reverse().find(e=>e.active);A(e?.id||_e[0]?.id||``)},[k,_e]),(0,Q.useEffect)(()=>{if(!e||!k)return;let t=requestAnimationFrame(()=>{document.querySelector(`[data-testid="session-tree-list"] .session-tree-node.selected`)?.scrollIntoView({block:`center`})});return()=>cancelAnimationFrame(t)},[e,T,k,y,_e.length]);let Ce=async()=>{ne(!0),G(``);try{let e=await X.getSessionTree(t);g(e),A(e.leafId||e.nodes[0]?.id||``)}catch(e){G(Z(e))}finally{ne(!1)}},we=async()=>{if(!(!K||re)){W(!0),G(``);try{let e=await X.setSessionTreeLabel(t,K.id,j);g(e),rr(t,e)}catch(e){G(Z(e))}finally{W(!1)}}},Te=async()=>{if(!(!K||re)){W(!0),G(``);try{let e=await X.setSessionTreeLabel(t,K.id,``);g(e),rr(t,e)}catch(e){G(Z(e))}finally{W(!1)}}},Ee=async()=>{if(!(!K||!xe||oe)){se(!0),G(``);try{await a(K.id),r()}catch(e){G(Z(e))}finally{se(!1)}}},De=(e,t=``)=>{e.id&&(Yt(e.id,`open`,t),r())},Oe=async()=>{if(!(!K||ie||K.leaf||n||h?.streaming)){ae(!0),G(``);try{let e=await X.navigateSessionTree(t,K.id,ee);g(e),e.cancelled||(rr(t,e),await i(e.editorText),r(),l&&or(t,e,u(`chat:chatPage.branchedFromNode`),{notify:l,t:u}))}catch(e){G(Z(e))}finally{ae(!1)}}},ke=e=>e.leaf?u(`chat:sessionTree.current`):e.branchPoint?u(`chat:sessionTree.fork`):e.active?u(`chat:sessionTree.active`):``;return(0,$.jsx)(wn,{open:e,onOpenChange:e=>!e&&r(),children:(0,$.jsxs)(xn,{onCloseAutoFocus:e=>{let n=c?.current,r=n?.isConnected?n:document.getElementById(`task-${t}-more`);r?.closest(`[data-task-workspace]`)?.getAttribute(`data-active`)===`true`&&(e.preventDefault(),r.focus())},className:`chat-resource-dialog session-tree-dialog grid-rows-[auto_minmax(0,1fr)] gap-0 overflow-hidden border border-stroke bg-solid p-0 ${m?`!h-[calc(100dvh_-_16px)] !w-[calc(100vw_-_16px)] !max-w-none`:`!h-[min(760px,calc(100dvh_-_32px))] !w-[min(1120px,calc(100vw_-_32px))] !max-w-[1120px]`}`,showCloseButton:!1,children:[(0,$.jsxs)(`div`,{className:`chat-resource-head flex items-start justify-between gap-4 border-b border-stroke-soft px-[18px] pt-4 pb-3.5 max-[650px]:p-3.5 [&_[data-slot='dialog-description']]:mt-0.5 [&_[data-slot='dialog-description']]:text-xs [&_[data-slot='dialog-description']]:text-content-muted [&_[data-slot='dialog-title']]:text-base [&_[data-slot='dialog-title']]:font-semibold`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`session-tree-title flex items-center gap-2`,children:[(0,$.jsx)(pe,{className:`size-4 text-content-muted`,strokeWidth:1.75,"aria-hidden":`true`}),(0,$.jsx)(Sn,{children:u(`chat:sessionTree.title`)})]}),(0,$.jsx)(bn,{children:u(`chat:sessionTree.description`,{nodes:h?.nodeCount||0,branches:h?.branchCount||0})})]}),(0,$.jsx)(Y,{type:`button`,variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,"aria-label":u(`common:ui.closeDialog`),title:u(`common:ui.closeDialog`),onClick:r,children:(0,$.jsx)(vt,{size:16})})]}),(0,$.jsxs)(`div`,{className:`chat-resource-body session-tree-layout grid min-h-0 overflow-hidden bg-background ${m?`grid-cols-1 grid-rows-[minmax(0,1fr)]`:`!grid-cols-[minmax(0,1fr)_292px]`}`,children:[(!m||C===`list`)&&(0,$.jsx)(Pi,{view:y,onViewChange:e=>{b(e),H(null),w(`list`)},showAllEntries:x,onShowAllEntriesChange:S,query:T,onQueryChange:O,loading:te,error:ce,mobileLayout:m,viewportRef:le,segments:ge,visibleNodes:_e,selectedId:k,typeLabel:me,stateLabel:ke,onSelect:e=>{A(e),m&&w(`detail`)},visibleMarks:ue,marksLoading:L,openingMark:z,onOpenMark:e=>void de(e),confirmingMark:V,onConfirmMark:e=>void de(e,!0),onCancelMark:()=>H(null)}),y!==`marks`&&(!m||C===`detail`)&&(0,$.jsx)(Ii,{mobileLayout:m,selected:K,loading:te,error:ce,streaming:n,dataStreaming:!!h?.streaming,parentSession:ve??null,parentEntryId:h?.lineage?.sourceEntryId||``,childSessions:ye,canLabel:be,canDerive:Se,label:j,summarize:ee,savingLabel:re,creatingChild:oe,navigating:ie,typeLabel:me,stateLabel:ke,onBackToList:()=>w(`list`),onLabelChange:M,onSummarizeChange:U,onSaveLabel:()=>void we(),onRemoveLabel:()=>void Te(),onCreateChild:()=>void Ee(),onNavigate:()=>void Oe(),onRefresh:()=>void Ce(),onOpenRelated:(e,t)=>De(e,t??``)})]})]})})}function Ri({visible:e,open:t,sessionId:n,streaming:r,revision:i,pulseToken:a,onOpenChange:s,onNavigated:c,onCreateChildSession:l,notify:u,children:d}){let{t:f}=o(),p=er(n,{enabled:e,streaming:r,revision:i})?.branchCount??0,[m,h]=(0,Q.useState)(`branches`),[g,_]=(0,Q.useState)(!1),v=(0,Q.useRef)(0),y=(0,Q.useRef)(null);(0,Q.useEffect)(()=>()=>cancelAnimationFrame(v.current),[]),(0,Q.useEffect)(()=>{if(!a)return;_(!0);let e=window.setTimeout(()=>_(!1),1800);return()=>window.clearTimeout(e)},[a]);let b=p>0&&(0,$.jsx)(`i`,{"aria-hidden":`true`,className:`ml-auto size-1.5 rounded-full bg-star`}),x=e?(0,$.jsxs)(St,{"aria-label":f(`chat:sessionTree.menu`),"aria-haspopup":`dialog`,"data-pisper-recall-pulse":g||void 0,onSelect:()=>{y.current=null,h(`branches`),cancelAnimationFrame(v.current),v.current=requestAnimationFrame(()=>s(!0))},children:[(0,$.jsx)(pe,{className:g?`motion-reduce:animate-none [animation:session-tree-new-node-pulse_1.8s_var(--ease-out)]`:void 0}),f(`chat:sessionTree.menu`),b]}):null;return(0,$.jsxs)($.Fragment,{children:[d(x,{branches:p,open:(e=`branches`,t=null)=>{y.current=t,h(e),cancelAnimationFrame(v.current),v.current=requestAnimationFrame(()=>s(!0))}}),e&&(0,$.jsx)(Li,{open:t,initialView:m,returnFocusRef:y,sessionId:n,streaming:r,onClose:()=>s(!1),onNavigated:c,onCreateChildSession:l,notify:u})]})}function zi({question:e,more:t,collapsed:n,onAnswer:r}){let{t:i}=o(),[a,s]=(0,Q.useState)(()=>e.questions.map(()=>({selected:[]}))),[c,l]=(0,Q.useState)(()=>e.questions.map(()=>!1)),[u,d]=(0,Q.useState)(!1),[f,p]=(0,Q.useState)(``),m=e.questions.length===1&&!e.questions[0].multiSelect,h=fn(e,a);if(n)return(0,$.jsxs)(`p`,{"data-question-more":!0,className:`flex min-h-8 min-w-0 items-center gap-2 rounded-(--r-md) border border-st-attn-border px-3 text-xs text-st-attn`,children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`size-2 flex-none rounded-full bg-st-attn-fill`}),i(`board:question.waiting`,{count:t+1})]});let g=async t=>{if(!u){d(!0),p(``);try{await r(e.id,t)}catch{p(i(`board:question.failed`)),d(!1)}}},_=e=>e.map((e,t)=>{let n=c[t]?e.other?.trim():``;return n?{selected:e.selected,other:n}:{selected:e.selected}}),v=(t,n)=>{let r=e.questions[t],i=a.map((e,i)=>{if(i!==t)return e;if(!r.multiSelect)return{...e,selected:[n]};let a=e.selected.includes(n)?e.selected.filter(e=>e!==n):[...e.selected,n];return{...e,selected:a}});s(i),m&&g({answers:_(i)})};return(0,$.jsxs)(`div`,{"data-question-card":e.id,role:`group`,"aria-label":i(`board:question.label`),"aria-busy":u||void 0,onKeyDown:t=>{if(t.altKey||t.metaKey||t.ctrlKey)return;let n=t.target;if(n.closest(`textarea, input`))return;let r=a.findIndex(e=>!e.selected.length&&!e.other?.trim()),i=r<0?e.questions.length-1:r,o=Number(t.key);if(Number.isInteger(o)&&o>=1&&o<=6){let n=e.questions[i]?.options[o-1];if(!n)return;t.preventDefault(),v(i,n.label)}else t.key===`Enter`&&!n.closest(`button`)&&h&&(t.preventDefault(),g({answers:_(a)}))},className:`flex max-h-[min(60vh,560px)] min-w-0 flex-col gap-3 overflow-y-auto rounded-(--r-lg) border border-st-attn-border bg-st-attn-soft px-3.5 py-3 text-foreground`,children:[(0,$.jsxs)(`p`,{className:`flex items-center gap-2 text-xs font-medium text-warning-strong`,children:[(0,$.jsx)(wr,{className:`size-4 flex-none`,"aria-hidden":`true`}),i(`board:question.title`),t>0&&(0,$.jsx)(`span`,{className:`font-normal text-content-muted`,children:i(`board:question.moreAfter`,{count:t})})]}),e.questions.map((t,n)=>{let r=a[n],o=t.header?`${t.header}:${t.question}`:t.question;return(0,$.jsxs)(`fieldset`,{"data-question-item":n,className:`flex min-w-0 flex-col gap-1.5`,children:[(0,$.jsxs)(`legend`,{className:`mb-1.5 flex min-w-0 flex-col gap-0.5`,children:[t.header&&(0,$.jsx)(`span`,{className:`text-xs font-medium text-content-muted`,children:t.header}),(0,$.jsx)(`span`,{className:`text-sm leading-5 text-content`,children:t.question})]}),(0,$.jsxs)(`div`,{role:t.multiSelect?`group`:`radiogroup`,"aria-label":o,className:`flex flex-wrap gap-1.5`,children:[t.options.map((e,i)=>{let a=r.selected.includes(e.label);return(0,$.jsxs)(`button`,{type:`button`,role:t.multiSelect?`checkbox`:`radio`,"aria-checked":a,disabled:u,"data-question-option":e.label,title:e.description||void 0,className:Ft(`flex min-h-9 max-w-full min-w-0 items-center gap-1.5 rounded-(--r-md) border px-2.5 py-1 text-left text-[13px] transition-colors duration-(--d-fast) focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus disabled:opacity-60 pointer-coarse:min-h-11`,a?`border-content bg-content text-panel`:`border-stroke-strong bg-panel text-content hover:bg-surface-hover`),onClick:()=>v(n,e.label),children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`font-mono text-[11px] opacity-60 pointer-coarse:hidden`,children:i+1}),(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(`span`,{className:`break-words`,children:e.label}),e.description&&(0,$.jsx)(`span`,{className:Ft(`text-xs break-words`,a?`opacity-80`:`text-content-muted`),children:e.description})]}),a&&t.multiSelect&&(0,$.jsx)(ee,{className:`size-3.5 flex-none`,"aria-hidden":`true`})]},e.label)}),(0,$.jsx)(`button`,{type:`button`,"aria-expanded":c[n],disabled:u,"data-question-other":n,className:Ft(`flex min-h-9 items-center rounded-(--r-md) border border-dashed border-stroke-strong px-2.5 text-[13px] text-content-secondary hover:bg-surface-hover focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus pointer-coarse:min-h-11`,c[n]&&`border-solid bg-panel`),onClick:()=>l(e=>e.map((e,t)=>t===n?!e:e)),children:i(`board:question.other`)})]}),c[n]&&(0,$.jsx)(`textarea`,{"aria-label":i(`board:question.otherLabel`,{question:t.question}),maxLength:pn.other,rows:2,disabled:u,value:r.other??``,placeholder:i(`board:question.otherPlaceholder`),className:`min-h-16 w-full resize-y rounded-(--r-md) border border-control bg-panel px-2.5 py-1.5 text-sm text-content outline-none focus:border-focus focus:ring-3 focus:ring-focus-ring max-[650px]:text-[16px]`,onChange:e=>{let t=e.target.value;s(e=>e.map((e,r)=>r===n?{...e,other:t}:e))},onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&h&&(e.preventDefault(),g({answers:_(a)}))}})]},`${e.id}-${n}`)}),f&&(0,$.jsx)(`p`,{role:`alert`,className:`text-xs text-[var(--danger)]`,children:f}),(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[(0,$.jsx)(Y,{type:`button`,variant:`ghost`,size:`sm`,disabled:u,"data-question-skip":!0,className:`pointer-coarse:min-h-11`,onClick:()=>void g({skip:!0}),children:i(`board:question.skip`)}),(!m||c[0])&&(0,$.jsx)(Y,{type:`button`,size:`sm`,disabled:u||!h,loading:u,"data-question-submit":!0,className:`pointer-coarse:min-h-11`,onClick:()=>void g({answers:_(a)}),children:i(`board:question.submit`)})]})]})}async function Bi({templatePrompt:e,configureHint:t,notify:n,onOpenModelSettings:r,onInsertPrompt:i}){try{let a=await S(`/api/visual/models`);a.image||a.video?i(e):(n?.(t),r?.())}catch{i(e)}}function Vi(e){return(e.target instanceof Element?e.target:null)?.closest(`[data-shortcut-recorder], [role="dialog"], [role="alertdialog"], [role="menu"], [role="listbox"], .xterm, .terminal-xterm, .terminal-panel, [data-terminal]`)?!0:Array.from(document.querySelectorAll(`[role="dialog"], [role="alertdialog"], dialog[open]`)).some(e=>e.getClientRects().length>0)}function Hi(e){let t=(0,Q.useRef)(e);t.current=e;let{enabled:n,binding:r}=e;(0,Q.useEffect)(()=>{if(!n||!r)return;let e=null,i=null,a=()=>{e=null,i&&(i=null,t.current.onCancel())},o=n=>{if(i&&n.key===`Escape`&&!n.isComposing){a(),n.preventDefault();return}!t.current.enabled||n.defaultPrevented||n.isComposing||n.keyCode===229||n.repeat||e||document.visibilityState===`hidden`||Vi(n)||!nn(n,r)||(e=n.code,t.current.onStart()&&(i={code:n.code,ctrl:n.ctrlKey,meta:n.metaKey,alt:n.altKey,shift:n.shiftKey},n.preventDefault()))},s=n=>{n.code===e&&(e=null),i&&(n.code===i.code||i.ctrl&&(!n.ctrlKey||n.code.startsWith(`Control`))||i.meta&&(!n.metaKey||n.code.startsWith(`Meta`))||i.alt&&(!n.altKey||n.code.startsWith(`Alt`))||i.shift&&(!n.shiftKey||n.code.startsWith(`Shift`)))&&(i=null,t.current.onRelease())},c=()=>{document.visibilityState===`hidden`&&a()};return window.addEventListener(`keydown`,o),window.addEventListener(`keyup`,s,!0),window.addEventListener(`blur`,a),document.addEventListener(`visibilitychange`,c),()=>{window.removeEventListener(`keydown`,o),window.removeEventListener(`keyup`,s,!0),window.removeEventListener(`blur`,a),document.removeEventListener(`visibilitychange`,c),a()}},[n,r])}function Ui(e){if(!e.length)return 0;let t=0;for(let n=0;n<e.length;n+=1)t+=e[n]*e[n];let n=Math.sqrt(t/e.length);return n<.0056?0:Math.min(1,Math.sqrt(n)*2.6)}function Wi(e=.35){let t=0;return{push(n){return t=t*(1-e)+n*e,t},reset(){t=0}}}function Gi(e,t=140){let n=e.trim();return n.length>t?`${n.slice(0,t-1)}…`:n}var Ki=16e3,qi=20,Ji=Ki*qi/1e3;function Yi(e,{onsetMs:t=80,minVoicedMs:n=160,silenceMs:r=900}={}){for(let e of[t,n,r])if(!Number.isFinite(e)||e<=0)throw Error(`Invalid VAD endpoint duration`);let i=e(),a=new Int16Array(Ji),o=0,s=0,c=0,l=0,u=!1,d=!1,f=!1,p=()=>u&&c*qi>=n;return{get hasSpeech(){return p()},acceptPcm(e){if(f||d)return!1;for(let n=0;n<e.length;n+=1){let f=Number.isFinite(e[n])?Math.max(-1,Math.min(1,e[n])):0;if(a[o++]=f*(f<0?32768:32767),o!==Ji)continue;o=0;let m=i.processFrame(a);if(m<0)throw Error(`VAD frame processing failed`);if(m===1)s+=1,c+=1,l=0,s*qi>=t&&(u=!0);else if(s=0,l+=1,u||(c=0),l*qi>=r){if(p())return d=!0,!0;u=!1,c=0}}return!1},reset(){f||(i.destroy(),i=e(),o=s=c=l=0,u=d=!1,a.fill(0))},dispose(){f||(f=!0,o=0,i.destroy())}}}async function Xi(e={}){let{default:n,VADMode:r}=await t(async()=>{let{default:e,VADMode:t}=await import(`./embedded-D2rqyswH.js`);return{default:e,VADMode:t}},[]),i=await n();return Yi(()=>new i(e.mode??r.AGGRESSIVE,Ki),e)}var Zi=()=>new DOMException(`Speech setup cancelled.`,`AbortError`);function Qi(e){let[t,n]=(0,Q.useState)(null),[r,i]=(0,Q.useState)(!1),[a,o]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)(``),l=(0,Q.useRef)(null),u=(0,Q.useRef)(!1),d=(0,Q.useRef)(0),f=(0,Q.useRef)(0),p=(0,Q.useRef)(0),m=(0,Q.useRef)(e);m.current=e;let h=(0,Q.useCallback)(e=>{d.current++,f.current++;let t=l.current;l.current=null,t&&(t.signal.removeEventListener(`abort`,t.abort),e?t.reject(e):t.resolve()),u.current&&(i(!1),o(!1))},[]),_=(0,Q.useCallback)(e=>{u.current&&(n(e),c(``),l.current&&hr(e,m.current).every(e=>e.status===`installed`)&&h())},[h]),v=(0,Q.useCallback)(async e=>{let t=d.current,n=++f.current,r=()=>u.current&&t===d.current&&n===f.current&&!e?.aborted;try{let t=await cr(e);r()&&_(t)}catch(e){if(r())throw e}},[_]);(0,Q.useEffect)(()=>(u.current=!0,v().catch(()=>{}),()=>{u.current=!1,h(Zi())}),[h,v]),(0,Q.useEffect)(()=>{if(!r)return;let e=new AbortController,t,n=async()=>{try{await v(e.signal)}catch(t){e.signal.aborted||c(t instanceof Error?t.message:String(t))}finally{e.signal.aborted||(t=setTimeout(()=>void n(),750))}};return n(),()=>{e.abort(),clearTimeout(t)}},[r,v]);let y=(0,Q.useCallback)(async e=>{if(g(e),!u.current)throw Zi();h(Zi());let t=++f.current;return new Promise((n,r)=>{let a=()=>{l.current===o&&h(e.reason||Zi())},o={signal:e,abort:a,resolve:n,reject:r};if(l.current=o,e.addEventListener(`abort`,a,{once:!0}),e.aborted){a();return}cr(e).then(n=>{!u.current||l.current!==o||e.aborted||(t===f.current&&_(n),l.current===o&&i(!0))},e=>{l.current===o&&h(e)})})},[_,h]),b=(0,Q.useCallback)(async e=>{let t=d.current,n=++p.current,r=()=>u.current&&t===d.current&&n===p.current;o(!0),c(``);try{await e(),r()&&await v()}catch(e){r()&&c(e instanceof Error?e.message:String(e))}finally{r()&&o(!1)}},[v]);return{catalog:t,open:r,loading:a,error:s,selectedVoice:t?.defaults.voice||``,ensureReady:y,models:t?hr(t,e):[],show:()=>{h(Zi()),i(!0),c(``)},close:()=>h(Zi()),download:e=>b(()=>pr(e)),cancelDownload:e=>b(()=>fr(e)),downloadAll:()=>b(async()=>{if(t)for(let e of hr(t,m.current))[`installed`,`downloading`,`verifying`].includes(e.status)||await pr(e.id)})}}var $i=8388608;function ea(e,t){return g(t),new Promise((n,r)=>{let i=()=>r(_(t));t.addEventListener(`abort`,i,{once:!0}),e.then(n,r).finally(()=>t.removeEventListener(`abort`,i))})}var ta=10,na=500;async function ra(e,t,n,r){for(let i=0;;i+=1){let a=await fetch(`/api/speech/synthesize`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e,voiceId:t,requestId:n}),signal:r});if(a.status!==409||i>=ta)return a;let o=await a.json().catch(()=>({}));if(!o.error||!/busy/i.test(o.error))return a;await ea(new Promise(e=>setTimeout(e,na)),r)}}async function ia(e){if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error||`Speech synthesis failed (${e.status}).`)}if(!e.headers.get(`content-type`)?.startsWith(`audio/wav`)||!e.body)throw Error(`Invalid speech audio response.`);let t=e.body.getReader(),n=[],r=0;try{for(;;){let{done:e,value:i}=await t.read();if(e)break;if(r+=i.byteLength,r>$i)throw Error(`Speech audio exceeds the supported limit.`);n.push(i)}}finally{await t.cancel().catch(()=>{}),t.releaseLock()}if(r<44)throw Error(`Speech audio is empty.`);let i=new Uint8Array(r),a=0;for(let e of n)i.set(e,a),a+=e.length;return i.buffer}async function aa(e,t,n,r){g(n);let i=h(n);try{await oa(e,t,i,r)}finally{i.abort(new DOMException(`Speech playback ended.`,`AbortError`)),i.dispose()}}async function oa(e,n,r,i){let{signal:a}=r,{speechSegments:o}=await ea(t(()=>import(`./speech-text-BTwYi9Sb.js`),__vite__mapDeps([114,86,1,2,3,83,84,85,29])),a);g(a);let s=(typeof e==`string`?(async function*(){yield*o(e)})():(await ea(t(()=>import(`./speech-stream-text-DF6aAUVb.js`),__vite__mapDeps([115,86,1,2,3,83,84,85,29,13,114])),a)).streamingSpeechSegments(e,a))[Symbol.asyncIterator](),c=!!window.__PISPER_MOBILE_APP__,l=new Set,u,d,f,p=e=>{(c?ur(`mobile_cancel_speech`,{requestId:e}):S(`/api/speech/cancel`,{method:`POST`,body:{requestId:e},timeout:3e3})).catch(()=>{})},m=()=>{for(let e of l)p(e);try{d?.stop()}catch{}f?.(a.reason||new DOMException(`Speech playback cancelled.`,`AbortError`))};a.addEventListener(`abort`,m,{once:!0});let _=e=>{g(a);let t=crypto.randomUUID();l.add(t);let r=(async()=>{if(c){let r=await ur(`mobile_synthesize_speech`,{text:e,voiceId:n,requestId:t});if(a.aborted&&(p(t),g(a)),!r||typeof r.audioId!=`string`||!r.audioId.trim()||r.audioId.length>128||!Number.isInteger(r.sampleRate)||r.sampleRate<8e3||r.sampleRate>48e3||!Number.isFinite(r.durationMs)||r.durationMs<=0||r.durationMs>45e3)throw Error(`Invalid native speech audio.`);return{requestId:t,native:r}}let r=h(a,6e4);try{let i=await ra(e,n,t,r.signal);return{requestId:t,wav:await ia(i)}}finally{r.dispose()}})();return r.catch(()=>{}),r};try{if(!c){u=new AudioContext({sampleRate:24e3});let e;try{await ea(Promise.race([u.resume(),new Promise((t,n)=>{e=setTimeout(()=>n(Error(`Audio playback is unavailable.`)),5e3)})]),a)}finally{clearTimeout(e)}}let e=async()=>{let e=await ea(s.next(),a);return e.done?void 0:_(e.value)},t=e(),n=!1;for(;;){let r=await ea(t,a);if(g(a),!r)break;if(t=e(),t.catch(()=>{}),n=!0,i?.(),r.native){if((await ea(ur(`mobile_play_speech`,{audioId:r.native.audioId,requestId:r.requestId}),a))?.completed!==!0)throw Error(`Speech playback was interrupted.`)}else{let e=await ea(u.decodeAudioData(r.wav),a);if(g(a),e.numberOfChannels!==1||!Number.isFinite(e.duration)||e.duration<=0||e.duration>45)throw Error(`Invalid speech audio duration.`);let t=u.createBufferSource();d=t,t.buffer=e,t.connect(u.destination);try{await new Promise((e,n)=>{f=n,t.onended=()=>e(),t.start()})}finally{f=void 0,t.onended=null,t.disconnect(),d=void 0}}l.delete(r.requestId),g(a)}if(!n)throw Error(`The reply has no speakable text.`)}finally{a.removeEventListener(`abort`,m),r.abort(new DOMException(`Speech playback ended.`,`AbortError`)),s.return?.(void 0).catch(()=>{});for(let e of l)p(e);try{d?.stop()}catch{}await u?.close().catch(()=>{})}}var sa={schemaVersion:1,scope:`Offline license texts and provenance notices for the catalogued speech resources and local derivatives. This document is not legal advice, commercial-use clearance, a complete training-data rights audit, or approval for redistribution or formal release. Packaging this small notice file does not package the large models or resolve pending obligations. Native sherpa binaries and their compiled or embedded dependencies require a separate license/linkage and source-delivery audit; switching TTS models does not prove the binaries contain no GPL components or satisfy their obligations.`,licenseIdsMeaning:`References identify retained license documents applicable to the described components or their stated source projects. Multiple references are not alternative dual-license choices and are not a complete SPDX expression. A repository declaration does not relicense unrelated bundled data.`,statusDefinitions:{confirmed:`The specific content or source match described in summary was verified; this is not a whole-chain rights guarantee.`,declared:`An upstream license declaration supports the classification, without a complete reproducible provenance proof.`,pending:`The listed provenance, rights, or distribution obligations remain unresolved even where a license declaration exists.`},pathScopes:{model:`Paths are relative to the original downloaded model root. A terminal /** matches every descendant; all other paths are exact.`,shared:`Paths are relative to the application's shared resource root.`},licenses:[{id:`apache-2.0`,name:`Apache License 2.0 (X-ASR source text)`,text:` Apache License
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SessionContextPanel-9Bg4j5Vv.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-router-CSN_DGvx.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-DUgHBsG5.js","assets/i18n-BMMXA_dY.js","assets/index-Ciq5zG6s.js","assets/index-CfTBR7Rs.css","assets/storage-BY6wEHPw.js","assets/vendor-state-GkUciC5H.js","assets/runtime-capabilities-4_ZwLBqF.js","assets/runtime-capabilities-store-BrQ24OXo.js","assets/api-PMkeVoki.js","assets/abort-signal-f4JsiYKX.js","assets/permission-rules-api-DJZQfffF.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/arrow-left-B8oVrQ2S.js","assets/check-2vYc6QaP.js","assets/chevron-right-C3t2Rckj.js","assets/SessionBrowserPane-nAItO1A5.js","assets/useQuery-DdcpUQhO.js","assets/query-Bj-DUNYq.js","assets/arrow-up-DST6-qVQ.js","assets/chevron-down-CxtxIjiP.js","assets/earth-Ddy13fHh.js","assets/external-link-CEQqPcqc.js","assets/GitDiffViewer-4ea3jm5E.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/file-Bllajneu.js","assets/side-chat-context-DaUmbt1Y.js","assets/routes-Da0OHSy6.js","assets/session-board-status-D2lpFPiI.js","assets/usePhoneShell-DloLJ6Tq.js","assets/use-mobile-DauOEda6.js","assets/client-store-CrFIB91q.js","assets/arrow-down-CDGua-ue.js","assets/chevron-left-BAtyp3_6.js","assets/chevron-up-D_ZcXjqr.js","assets/copy-DHmIFc52.js","assets/download-BCfIiuaL.js","assets/ellipsis-CfGKfbq6.js","assets/eye-uWAPXNzJ.js","assets/folder-open-FIShC5Qk.js","assets/info-DATxy0fb.js","assets/loader-circle-BOwQzHB-.js","assets/monitor-ORxecA9m.js","assets/refresh-cw-TbWxTY4K.js","assets/rotate-ccw-clock-CO6Bw-sF.js","assets/rotate-ccw-C0v8V77_.js","assets/shield-alert-oZqX6MNu.js","assets/shield-check-Gvek4RJ7.js","assets/tag-CqkeJlBf.js","assets/trash-2-CNrPOoPR.js","assets/collapsible-DMaUQRX4.js","assets/dist-BsRXXcSL.js","assets/dropdown-menu-CFIFNaKO.js","assets/dist-DzGQ7sLi.js","assets/es2015-DTZdOI9P.js","assets/dist-BRjj4UeB.js","assets/dist-OB2r6Xsr.js","assets/dist-BaBySQmo.js","assets/popover-Cl-XiAIN.js","assets/dialog-DdbSm1ZL.js","assets/dist-BHkR6BLP.js","assets/tooltip-D4MFbqcG.js","assets/dist-BiRPwy4W.js","assets/shortcuts-CD4vslwQ.js","assets/chat-api-Kcrk_K91.js","assets/startup-queries-BhNivg8E.js","assets/mutation-CEbxdVYy.js","assets/format-DMJQzoZ7.js","assets/PageState-Cz6vFMXv.js","assets/input-CPw-zkYh.js","assets/run-activity-CwfO0cui.js","assets/alert-firawb0H.js","assets/vendor-motion-DSW3wzXK.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/route-context-DvWDul4T.js","assets/StatusGlyph-1KgitlUg.js","assets/motion-DTR4ZVle.js","assets/HoldToConfirmButton-BxdJ7icc.js","assets/card-C3A0b5KR.js","assets/BrandLogo-k3CvJjd4.js","assets/session-tree-summary-DEQsXexZ.js","assets/FileAttachmentPreview-cYRvzbsf.js","assets/tabs-DsgBuvJv.js","assets/git-branch-N7LGjtzt.js","assets/image-BY_c3FYU.js","assets/link-2-mgasYn21.js","assets/list-checks-B5Jl4aiO.js","assets/message-square-SKjZyY3v.js","assets/square-bHHVTT3G.js","assets/session-change-summary-api-p0LGuByB.js","assets/AppSelect-BGVBQRP1.js","assets/select-DD_WO-gs.js","assets/dist-V8chnW6-.js","assets/web-preview-LghC_QcR.js","assets/terminal-context-aIsIJPn8.js","assets/plus-fQbSqB1n.js","assets/square-terminal-BVG6cUT1.js","assets/sheet-BTaIEX4w.js","assets/SessionInspector-nGAiGnrh.js","assets/segmented-control-BlM_GKV6.js","assets/touch-target-BsyCgjR5.js","assets/speech-text-BTwYi9Sb.js","assets/speech-stream-text-DF6aAUVb.js","assets/speech-session-BohM2ygu.js","assets/QuickPromptIdeas-Cy_t1L7E.js","assets/code-xml-BrUXrBax.js","assets/file-text-N9JICX6E.js","assets/wand-sparkles-CvEBNUFz.js","assets/mobile-remote-fallback-NJCTBu85.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{t as n}from"./index-Ciq5zG6s.js";import{i as r,n as i,r as a}from"./vendor-react-DwNgTV1j.js";import{t as o}from"./use-i18n-DUgHBsG5.js";import{a as s,i as c,o as l}from"./vendor-state-GkUciC5H.js";import{t as u}from"./storage-BY6wEHPw.js";import{u as d}from"./query-Bj-DUNYq.js";import{r as f,t as p}from"./useQuery-DdcpUQhO.js";import{t as m}from"./startup-queries-BhNivg8E.js";import{n as h,r as g,t as _}from"./abort-signal-f4JsiYKX.js";import{a as v,l as y,n as b,s as x,t as S,u as C}from"./api-PMkeVoki.js";import{i as w}from"./runtime-capabilities-4_ZwLBqF.js";import{t as T}from"./runtime-capabilities-store-BrQ24OXo.js";import{n as E}from"./use-mobile-DauOEda6.js";import{n as D,t as O}from"./client-store-CrFIB91q.js";import{t as k}from"./createLucideIcon-Cd-3GVxJ.js";import{a as A,i as j,r as M}from"./permission-rules-api-DJZQfffF.js";import{c as N,i as P,n as F,o as I,r as L,s as R,t as z}from"./session-list-BeyOEzyU.js";import{t as B}from"./arrow-up-DST6-qVQ.js";import{t as V}from"./bot-B3TaBp_T.js";import{t as H}from"./braces-DQcXLGFF.js";import{t as ee}from"./check-2vYc6QaP.js";import{t as U}from"./chevron-down-CxtxIjiP.js";import{t as te}from"./chevron-left-BAtyp3_6.js";import{t as ne}from"./chevron-right-C3t2Rckj.js";import{t as re}from"./circle-check-iEdCm3Pw.js";import{n as W,t as ie}from"./image-plus-D7bzZog0.js";import{t as ae}from"./corner-down-right--hxi-Ihy.js";import{t as oe}from"./download-BCfIiuaL.js";import{o as se}from"./GitDiffViewer-4ea3jm5E.js";import{t as ce}from"./file-text-N9JICX6E.js";import{t as G}from"./file-Bllajneu.js";import{C as le,D as ue,E as de,M as fe,N as pe,O as me,P as he,S as ge,T as _e,a as K,b as ve,d as ye,f as be,g as xe,h as Se,i as Ce,j as we,k as Te,l as Ee,m as De,n as Oe,o as ke,p as Ae,t as je,u as Me,v as Ne,w as Pe,x as Fe,y as Ie}from"./side-chat-context-DaUmbt1Y.js";import{t as Le}from"./folder-open-FIShC5Qk.js";import{t as Re}from"./git-branch-N7LGjtzt.js";import{t as ze}from"./link-2-mgasYn21.js";import{t as Be}from"./loader-circle-BOwQzHB-.js";import{t as Ve}from"./message-square-SKjZyY3v.js";import{t as q}from"./panel-right-BSUtqUd8.js";import{t as He}from"./paperclip-BCXrwYpb.js";import{t as Ue}from"./pencil-U08v_vV9.js";import{t as We}from"./play-DNDjDNGn.js";import{t as Ge}from"./plus-fQbSqB1n.js";import{t as Ke}from"./refresh-cw-TbWxTY4K.js";import{t as qe}from"./search-D0mqDaf_.js";import{t as Je}from"./settings-QX0oWnVK.js";import{t as Ye}from"./shield-alert-oZqX6MNu.js";import{t as Xe}from"./shield-B1ruzHd0.js";import{t as Ze}from"./square-pen-hYbjKh6A.js";import{a as Qe,c as $e,d as et,f as tt,g as nt,h as rt,i as it,m as at,n as ot,o as st,p as ct,r as lt,s as ut,t as dt}from"./FocusRuntimeControls-B0yEDKMN.js";import{t as ft}from"./square-bHHVTT3G.js";import{t as pt}from"./tag-CqkeJlBf.js";import{t as mt}from"./trash-2-CNrPOoPR.js";import{t as ht}from"./triangle-alert-CE1q54ci.js";import{t as gt}from"./workflow-Bg94dy8I.js";import{t as _t}from"./wrench-6pg6_bqI.js";import{t as vt}from"./x-07u4-129.js";import{t as yt}from"./brand-DIEc3fK8.js";import{t as bt}from"./checkbox-BrEHgFV0.js";import{c as xt,i as St,l as Ct,n as wt,p as Tt,r as Et,t as Dt}from"./dropdown-menu-CFIFNaKO.js";import{t as Ot}from"./progress-5odAz3B9.js";import{t as kt}from"./switch-D_G8wFhs.js";import{i as At,r as jt,t as Mt}from"./tabs-DsgBuvJv.js";import{i as J,n as Nt,t as Pt}from"./tooltip-D4MFbqcG.js";import{t as Ft}from"./utils-C8uzG5AZ.js";import{n as It,t as Y}from"./button-CCcCN8tE.js";import{n as Lt,t as Rt}from"./kbd-CAufZTkl.js";import{S as zt,b as Bt,c as Vt,f as Ht,i as Ut,o as Wt,p as Gt,r as Kt,s as qt,u as Jt,v as Yt,x as Xt,y as Zt}from"./events-CsDpIEpa.js";import{a as Qt,c as $t,i as en,n as tn,r as nn,s as rn,t as an}from"./shortcuts-CD4vslwQ.js";import{n as on,o as sn,r as cn,t as ln}from"./sheet-BTaIEX4w.js";import{t as X}from"./chat-api-Kcrk_K91.js";import{n as un}from"./session-organization-api-8UQMpctG.js";import{a as dn,n as fn,t as pn}from"./session-questions-Cf-1g85h.js";import{n as mn,o as hn,r as gn,t as _n}from"./format-DMJQzoZ7.js";import{n as vn,r as yn}from"./PageState-Cz6vFMXv.js";import{a as bn,i as xn,l as Sn,s as Cn,t as wn}from"./dialog-DdbSm1ZL.js";import{t as Tn}from"./input-CPw-zkYh.js";import{i as En,n as Dn,t as On}from"./input-group-h8z63MzW.js";import{t as kn}from"./model-display-kDwvtxrW.js";import{a as An,c as jn,d as Mn,m as Nn,o as Pn,p as Fn,s as In,u as Ln}from"./run-activity-CwfO0cui.js";import{t as Rn}from"./session-change-summary-api-p0LGuByB.js";import{t as zn}from"./shortcut-aria-jHRmld9z.js";import{t as Bn}from"./touch-target-BsyCgjR5.js";import{t as Vn}from"./pick-system-directory-Dzxt6gno.js";import{t as Hn}from"./back-navigation-CK7X_5Bc.js";import{WorkspacePicker as Un}from"./WorkspacePicker-BiJHY52J.js";import{t as Wn}from"./MarkdownMessage-BSTx0KMg.js";import{t as Gn}from"./esm-DCV8yILT.js";import{t as Kn}from"./StatusGlyph-1KgitlUg.js";import{t as qn}from"./motion-DTR4ZVle.js";import{t as Jn}from"./app-primitives-Drz_SjnR.js";import{t as Yn}from"./usePagePrimaryAction-CWPC0C_f.js";import"./web-preview-LghC_QcR.js";import{n as Xn,r as Zn}from"./terminal-context-aIsIJPn8.js";import{a as Qn,i as $n}from"./tool-labels-BUEvdohv.js";import{i as er,n as tr,o as Z,s as nr,t as rr}from"./session-tree-summary-DEQsXexZ.js";import{fileRewindConfirmOptions as ir,fileRewindNotice as ar,notifyTreeNavigation as or}from"./session-tree-actions-Ee9kzU3S.js";import{a as sr,c as cr,i as lr,l as ur,n as dr,o as fr,s as pr,t as mr,u as hr}from"./speech-session-BohM2ygu.js";import{n as gr,t as _r}from"./web-preview-events-B-rXgMLy.js";var vr=k(`audio-lines`,[[`path`,{d:`M2 10v3`,key:`1fnikh`}],[`path`,{d:`M6 6v11`,key:`11sgs0`}],[`path`,{d:`M10 3v18`,key:`yhl04a`}],[`path`,{d:`M14 8v7`,key:`3a1oy3`}],[`path`,{d:`M18 5v13`,key:`123xd1`}],[`path`,{d:`M22 10v3`,key:`154ddg`}]]),yr=k(`badge-check`,[[`path`,{d:`M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z`,key:`3c2336`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),br=k(`book-open`,[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]),xr=k(`bookmark`,[[`path`,{d:`M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z`,key:`oz39mx`}]]),Sr=k(`file-check-corner`,[[`path`,{d:`M10.5 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v6`,key:`g5mvt7`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m14 20 2 2 4-4`,key:`15kota`}]]),Cr=k(`file-down`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 18v-6`,key:`17g6i2`}],[`path`,{d:`m9 15 3 3 3-3`,key:`1npd3o`}]]),wr=k(`message-circle-question-mark`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Tr=k(`mic-off`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M15 9.34V5a3 3 0 0 0-5.68-1.33`,key:`1gzdoj`}],[`path`,{d:`M16.95 16.95A7 7 0 0 1 5 12v-2`,key:`cqa7eg`}],[`path`,{d:`M18.89 13.23A7 7 0 0 0 19 12v-2`,key:`16hl24`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v3a3 3 0 0 0 5.12 2.12`,key:`r2i35w`}]]),Er=k(`mic`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]),Dr=k(`shrink`,[[`path`,{d:`m15 15 6 6m-6-6v4.8m0-4.8h4.8`,key:`17vawe`}],[`path`,{d:`M9 19.8V15m0 0H4.2M9 15l-6 6`,key:`chjx8e`}],[`path`,{d:`M15 4.2V9m0 0h4.8M15 9l6-6`,key:`lav6yq`}],[`path`,{d:`M9 4.2V9m0 0H4.2M9 9 3 3`,key:`1pxi2q`}]]),Or=k(`target`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),kr=k(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),Q=e(r(),1),Ar=c(()=>({getItem:e=>{try{return n.getItem(e)}catch{return null}},setItem:(e,t)=>{try{n.setItem(e,t)}catch{}},removeItem:e=>{try{n.removeItem(e)}catch{}}})),jr=l()(s((e,t)=>({width:360,open:!1,setWidth:n=>{let r=Ie(n);t().width!==r&&e({width:r})},setOpen:n=>{t().open!==n&&e({open:n})}}),{name:`pisper-session-context-layout`,version:2,storage:Ar,migrate:e=>{let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{};return{width:Ie(`width`in t?t.width:void 0),open:`open`in t&&t.open===!0}},partialize:({width:e,open:t})=>({width:e,open:t}),merge:(e,t)=>({...t,width:Ie(e&&typeof e==`object`&&!Array.isArray(e)&&`width`in e?e.width:void 0),open:!!(e&&typeof e==`object`&&!Array.isArray(e)&&`open`in e&&e.open===!0)})}));function Mr(e,t,n){let r=(0,Q.useRef)(n);r.current=n,(0,Q.useLayoutEffect)(()=>e?Hn.register(t,()=>r.current()):void 0,[e,t])}var $=a();function Nr({preferredWidth:e,onWidthChange:t,availableWidth:n,presentation:r,children:i,context:a,side:s=`right`,layoutId:c=`chat`,conversationHeaderInset:l=0}){let{t:u}=o(),d=(0,Q.useRef)(()=>{});(0,Q.useEffect)(()=>()=>d.current(),[]);let f=r===`aside`,p=r===`content`,m=ve(e,n),h=ve(720,n),g=e=>t(Math.max(280,Math.min(h,e))),_=n=>{if(n.button!==0)return;d.current(),n.preventDefault(),n.currentTarget.focus(),n.currentTarget.setPointerCapture(n.pointerId);let r=n.clientX,i=e=>g(m+(e.clientX-r)*(s===`left`?1:-1)),a=()=>{window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,a),window.removeEventListener(`pointercancel`,o),window.removeEventListener(`keydown`,c)},o=()=>{t(e),a()},c=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),o())};d.current=a,window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,a,{once:!0}),window.addEventListener(`pointercancel`,o,{once:!0}),window.addEventListener(`keydown`,c)},v=(0,$.jsx)(`div`,{id:`${c}-conversation`,"data-workspace-conversation":!0,inert:p,className:p?`hidden`:`min-h-0 min-w-0 flex-1 overflow-hidden`,style:f&&l?{paddingTop:l}:void 0,children:i},`conversation`),y=f?(0,$.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":u(`chat:sessionContext.resize`),title:u(`chat:sessionContext.resizeHint`),"aria-controls":`${c}-conversation ${c}-content`,"aria-valuemin":280,"aria-valuemax":h,"aria-valuenow":m,onPointerDown:_,onDoubleClick:()=>t(360),onKeyDown:e=>{if(![`ArrowLeft`,`ArrowRight`,`Home`,`End`,`Enter`].includes(e.key))return;if(e.preventDefault(),e.key===`Enter`){t(360);return}let n=e.shiftKey?64:16;g(e.key===`Home`?280:e.key===`End`?h:m+(e.key===`ArrowRight`?n:-n)*(s===`left`?1:-1))},className:`relative w-2 shrink-0 cursor-col-resize touch-none select-none outline-none after:absolute after:top-1/2 after:left-1/2 after:h-9 after:w-[3px] after:-translate-1/2 after:rounded-full after:bg-stroke-strong after:transition-colors after:duration-[var(--d-fast)] hover:after:bg-focus active:after:bg-focus focus-visible:after:bg-focus focus-visible:after:ring-3 focus-visible:after:ring-focus-ring`},`separator`):null,b=(0,$.jsx)(`div`,{id:`${c}-content`,className:f?`h-full min-h-0 shrink-0 overflow-hidden`:p?`h-full min-h-0 min-w-0 flex-1 overflow-hidden`:`hidden`,style:f?{width:m}:void 0,children:(f||p)&&a},`resource`);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{id:`${c}-context-layout`,"data-workspace-layout":!0,className:`flex h-full min-h-0 min-w-0 flex-1 overflow-hidden`,children:s===`left`?[b,y,v]:[v,y,b]}),r===`sheet`&&a]})}function Pr({sessionId:e,streaming:t,completed:n,runStartedAt:r,enabled:i,open:a,onReveal:o}){let s=(0,Q.useRef)(null),c=(0,Q.useRef)(o);(0,Q.useLayoutEffect)(()=>{c.current=o},[o]),(0,Q.useEffect)(()=>{let o=s.current,l={sessionId:e,streaming:t,completed:n,runStartedAt:r};if(s.current=l,!i||a||!Ne(o,l))return;let u=new AbortController,d=!0;return X.getSessionFileChanges(e,{signal:u.signal}).then(({files:e})=>{d&&Fe(o,l,e)&&c.current()}).catch(()=>{}),()=>{d=!1,u.abort()}},[n,i,a,r,e,t])}var Fr=`pisper:task-content-requested`,Ir=[`changes`,`terminal`,`processes`,`sources`,`browser`];function Lr(e){return!e||typeof e!=`object`||!(`kind`in e)?null:Ir.find(t=>t===e.kind)||null}function Rr({sessionId:e,cwd:t,taskName:n,sources:r,mobile:i,streaming:a}){let{t:s}=o(),c=Zn(e),l=Xn(),[u,d]=(0,Q.useState)(!1),f=(0,Q.useRef)(null),m=(0,Q.useRef)(!1),h=T(e=>e.capabilities),g=w(h,`vcs`),_=p({enabled:g,queryKey:[`task-project-changes`,e,t,a],queryFn:({signal:t})=>X.getVcsChanges(e,{signal:t})}),v=(0,Q.useMemo)(()=>Ae(_.data?.diff||``,_.data?.files.map(e=>e.path)||[],_.data?.diffTruncated),[_.data]),y=()=>Se.getState().update(e,`new`,{type:`workspace`,summaryOpen:!1}),b=()=>document.getElementById(`task-${e}-summary-toggle`)?.focus();(0,Q.useEffect)(()=>{i||f.current?.focus()},[i]);let x=(t,n=``)=>{let r=Se.getState();if(r.update(e,t,{type:`open`,kind:t})===`limit`){d(!0);return}m.current=!0;let i=Se.getState().sessions[e]?.activeId;n&&i&&r.update(e,t,{type:`view`,id:i,patch:t===`sources`?{selectedSourceId:n,query:``,filter:``}:{expandedProcesses:[n],filter:``}})};Mr(!i,300,()=>{y(),b()});let S=`w-full justify-start gap-2 px-2 font-normal text-content`,C=`ml-auto shrink-0 text-xs text-content-muted tabular-nums`,E=(0,$.jsxs)($.Fragment,{children:[u&&(0,$.jsx)(`p`,{role:`alert`,className:`px-2 pb-1 text-xs text-danger`,children:s(`chat:sessionContext.pageLimit`)}),(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start gap-2 border-b border-stroke-soft px-2 pt-1 pb-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`truncate font-mono text-xs text-content-muted`,title:t,children:t.split(/[\\/]/).filter(Boolean).at(-1)||t}),(0,$.jsx)(`p`,{className:`mt-0.5 truncate text-sm font-medium text-content`,children:n})]}),(0,$.jsx)(Y,{variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,"aria-label":s(`chat:workbench.closeSummary`),onClick:()=>{y(),b()},children:(0,$.jsx)(vt,{size:16})})]}),(0,$.jsxs)(`section`,{className:`border-b border-stroke-soft py-1`,children:[(0,$.jsxs)(Y,{variant:`ghost`,className:`${S} h-auto min-h-8 whitespace-normal text-left`,disabled:!g,onClick:()=>x(`changes`),children:[(0,$.jsx)(se,{size:16,className:`text-content-muted`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1`,children:s(`chat:workbench.projectChanges`)}),(0,$.jsx)(`span`,{className:C,children:g?_.isPending?`…`:_.isError||_.data?.error?s(`chat:workbench.unavailable`):_.data?.isRepo?_.data.files.length:`—`:s(`chat:workbench.unavailable`)})]}),(_.isError||_.data?.error)&&(0,$.jsx)(`p`,{role:`alert`,className:`px-2 py-1 text-xs text-danger`,children:s(`chat:workbench.changesFailed`)}),_.data?.isRepo&&!_.isError&&!_.data.error&&(0,$.jsxs)(`p`,{className:`px-2 pb-1 pl-8 font-mono text-xs tabular-nums text-content-muted`,children:[v.partial?`${s(`chat:workbench.partialCounts`)} `:``,(0,$.jsxs)(`span`,{className:`text-success`,children:[`+`,v.added]}),` `,(0,$.jsxs)(`span`,{className:`text-danger`,children:[`−`,v.removed]})]}),(0,$.jsxs)(Y,{variant:`ghost`,className:S,onClick:()=>x(`files`),children:[(0,$.jsx)(he,{size:16,className:`text-content-muted`}),s(`chat:workbench.taskSnapshots`)]})]}),(0,$.jsxs)(`section`,{className:`border-b border-stroke-soft py-1`,children:[(0,$.jsxs)(Y,{variant:`ghost`,className:S,onClick:()=>x(`processes`),children:[(0,$.jsx)(`span`,{children:s(`terminal:workspace.processes`)}),(0,$.jsx)(`span`,{className:C,children:c.length})]}),!l&&(0,$.jsx)(`p`,{className:`px-2 pb-1 text-xs text-content-muted`,children:s(`terminal:workspace.nativeOnly`)}),c.slice(0,3).map(e=>(0,$.jsxs)(Y,{variant:`ghost`,className:`${S} min-w-0`,onClick:()=>x(`processes`,e.id),children:[e.status===`running`?(0,$.jsx)(It,{className:`size-3.5`}):(0,$.jsx)(A,{size:15,className:`text-content-muted`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-left font-mono text-xs`,children:e.profileId}),(0,$.jsx)(`span`,{className:C,children:e.status===`running`?s(`terminal:workspace.running`):e.status===`exited`?s(`terminal:workspace.exited`):s(`chat:workbench.otherState`)})]},e.id))]}),(0,$.jsxs)(`section`,{className:`pt-1`,children:[(0,$.jsxs)(Y,{variant:`ghost`,className:S,onClick:()=>x(`sources`),children:[(0,$.jsx)(`span`,{children:s(`chat:workbench.sources`)}),(0,$.jsx)(`span`,{className:C,children:r.length})]}),r.slice(0,3).map(e=>(0,$.jsxs)(Y,{variant:`ghost`,className:`${S} min-w-0`,onClick:()=>x(`sources`,e.id),children:[(0,$.jsx)(ze,{size:15,className:`text-content-muted`}),(0,$.jsx)(`span`,{className:`truncate font-mono text-xs`,children:e.name||s(`chat:chatMessage.fileAttachment`)})]},e.id)),(0,$.jsx)(Y,{variant:`ghost`,className:`${S} text-content-muted`,onClick:()=>x(`sources`),children:s(`chat:workbench.viewAll`)})]})]});return i?(0,$.jsx)(ln,{open:!0,onOpenChange:e=>{e||y()},children:(0,$.jsxs)(on,{side:`bottom`,showCloseButton:!1,"aria-describedby":void 0,className:`max-h-[80dvh] overflow-y-auto rounded-t-2xl p-3 pb-[max(16px,var(--pisper-safe-area-bottom))] [&_button]:min-h-11`,style:{left:`calc(44px + var(--pisper-safe-area-left, 0px))`,right:`var(--pisper-safe-area-right, 0px)`},onCloseAutoFocus:e=>{e.preventDefault(),m.current||b()},children:[(0,$.jsx)(sn,{className:`sr-only`,children:s(`chat:workbench.summary`)}),E]})}):(0,$.jsx)(`div`,{ref:f,tabIndex:-1,id:`task-${e}-summary`,role:`region`,"aria-label":s(`chat:workbench.summary`),onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),y(),b())},className:`absolute top-[52px] right-2 z-20 max-h-[calc(100%-64px)] w-80 max-w-[calc(100%-16px)] overflow-y-auto rounded-md bg-popover p-1 text-sm text-popover-foreground shadow-float`,children:E})}function zr(e){if(typeof e!=`string`||Array.from(e).some(e=>e.charCodeAt(0)<32))return``;let t=e.replace(/\\/g,`/`);return!t.startsWith(`/`)&&!/^[a-z]:\//i.test(t)?``:t.replace(/\/\.\//g,`/`).replace(/\/$/,``)||`/`}function Br(e){let t=[],n=new Set;for(let r of e)if(Array.isArray(r.attachments))for(let[e,i]of r.attachments.entries()){if(!i||typeof i!=`object`||Array.isArray(i))continue;let a=typeof i.id==`string`&&!i.id.startsWith(`path:`)&&i.id.length<=512&&!Array.from(i.id).some(e=>e.charCodeAt(0)<32)?i.id:``,o=zr(i.path),s=a?`asset`:o?`path`:`unresolved`,c=a?`asset:${a}`:o?`path:${o}`:`unresolved:${r.id}:${e}`;if(n.has(c))continue;n.add(c);let l=typeof i.name==`string`?i.name:o.split(`/`).pop()||a,u=typeof i.mimeType==`string`?i.mimeType:``,d={...a?{id:a,downloadUrl:`/api/assets/${encodeURIComponent(a)}/download`}:{},...o?{id:a||`path:${o}`,path:o}:{},name:l,mimeType:u,...typeof i.size==`number`&&Number.isFinite(i.size)&&i.size>=0?{size:i.size}:{},...typeof i.text==`string`?{text:i.text.slice(0,4e5)}:{}};t.push({id:c,name:l,method:s,messageId:r.id,attachment:d,available:s!==`unresolved`||typeof i.text==`string`,kind:u.startsWith(`image/`)?`image`:u.startsWith(`text/`)?`text`:`file`})}return t}function Vr({width:e,mobile:t,contentOpen:n}){return n?t||e<660?`content`:`split`:`conversation`}var Hr=(0,Q.lazy)(()=>t(()=>import(`./SessionContextPanel-9Bg4j5Vv.js`).then(e=>({default:e.SessionContextPanel})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110])));function Ur({sessionId:e,messages:t,taskName:n,cwd:r,panelId:i,active:a,mobile:s,plan:c,streaming:l,completed:u,runStartedAt:d,plansAvailable:f,requestConfirm:p,children:m}){let{t:h}=o(),[g,_]=(0,Q.useState)(null),[v,y]=(0,Q.useState)(null),b=(0,Q.useMemo)(()=>({headerHost:g,sourceActionHost:v,setSourceActionHost:y}),[g,v]),x=(0,Q.useMemo)(()=>Br(t),[t]),S=(0,Q.useRef)(jr.getState().width).current,C=(0,Q.useRef)(null),[w,T]=(0,Q.useState)(0),E=(0,Q.useMemo)(()=>xe(),[]),D=Se(t=>t.sessions[e])||E,O=Se(e=>e.update);(0,Q.useLayoutEffect)(()=>{D.contentWidth??O(e,`new`,{type:`workspace`,contentWidth:S})},[D.contentWidth,e,S,O]),(0,Q.useLayoutEffect)(()=>{let e=C.current;if(!e)return;let t=()=>T(e.clientWidth);t();let n=null,r=new ResizeObserver(()=>{n!==null&&cancelAnimationFrame(n),n=requestAnimationFrame(()=>{n=null,t()})});return r.observe(e),()=>{r.disconnect(),n!==null&&cancelAnimationFrame(n)}},[]);let k=Vr({width:w,mobile:s,contentOpen:D.contentOpen&&D.pages.length>0});Pr({sessionId:e,streaming:l,completed:u,runStartedAt:d,enabled:!0,open:D.contentOpen,onReveal:()=>O(e,`files`,{type:`open`,kind:`files`})}),(0,Q.useEffect)(()=>{if(!a)return;let t=t=>{let n=Lr(t.detail);n&&O(e,n,{type:`open`,kind:n})};return window.addEventListener(Fr,t),()=>window.removeEventListener(Fr,t)},[a,e,O]);let A=()=>{window.dispatchEvent(new Event(qt)),O(e,`files`,{type:`workspace`,contentOpen:!1}),requestAnimationFrame(()=>(document.getElementById(`task-${e}-new-content-tab`)||document.getElementById(`task-${e}-more`))?.focus())};Mr(a&&k===`content`,100,A);let j=D.contentOpen&&D.pages.length>0&&(0,$.jsx)(Q.Suspense,{fallback:(0,$.jsx)(`div`,{role:`status`,className:`p-4 text-sm text-content-muted`,children:h(`chat:focusSession.gitLoading`)}),children:(0,$.jsx)(Hr,{panelId:`${i}-context`,compact:!1,embedded:!0,active:a,sessionId:e,cwd:r,sources:x,tab:D.pages.find(e=>e.id===D.activeId)?.kind||`files`,plan:c,streaming:l,plansAvailable:f,requestConfirm:p,onTabChange:()=>{},onClose:A,onBack:A})});return(0,$.jsx)(De.Provider,{value:b,children:(0,$.jsxs)(`div`,{ref:C,id:`task-${e}-workspace`,tabIndex:-1,"data-task-workspace":e,"data-active":a,className:`relative flex h-full min-h-0 min-w-0 flex-col overflow-hidden bg-panel`,children:[(0,$.jsx)(`div`,{ref:_,className:k===`split`?`@container absolute left-0 top-0 z-10`:`@container shrink-0`,style:k===`split`?{width:`calc(100% - ${ve(D.contentWidth??S,w)+8}px)`}:void 0,"data-task-header":!0}),(0,$.jsx)(Nr,{preferredWidth:D.contentWidth??S,onWidthChange:t=>{O(e,`new`,{type:`workspace`,contentWidth:t}),jr.getState().setWidth(t)},layoutId:i,availableWidth:w,conversationHeaderInset:48,presentation:k===`split`?`aside`:k===`content`?`content`:`closed`,context:j,children:m}),a&&D.summaryOpen&&(0,$.jsx)(Rr,{sessionId:e,cwd:r,taskName:n,sources:x,mobile:s,streaming:l})]})})}function Wr(e,t){return e.open===t?e:{open:t,leaving:!t}}function Gr(e){return e.leaving?{open:e.open,leaving:!1}:e}function Kr(e){return e.open||e.leaving}function qr(e,t=400){let[n,r]=(0,Q.useState)(()=>({open:e,leaving:!1})),i=n;n.open!==e&&(i=Wr(n,e),r(i));let a=i.leaving,o=(0,Q.useCallback)(()=>r(Gr),[]);return(0,Q.useLayoutEffect)(()=>{if(!a)return;if(qn()){o();return}let e=window.setTimeout(o,t);return()=>window.clearTimeout(e)},[t,o,a]),{mounted:Kr(i),leaving:a,finish:o}}function Jr(e){return[`running`,`waiting_approval`].includes(String(e.status||``))}function Yr(e,t){return t(e===`running`?`chat:workflowRun.running`:e===`waiting_approval`?`chat:workflowRun.waitingApproval`:e===`completed`?`chat:workflowRun.completed`:e===`failed`?`chat:workflowRun.failed`:e===`cancelled`?`chat:workflowRun.stopped`:`chat:workflowRun.interrupted`)}function Xr({sessionId:e,empty:t=null}){let{t:n}=o(),[r,i]=(0,Q.useState)([]),[a,s]=(0,Q.useState)(``),c=(0,Q.useCallback)(async()=>{try{let t=await X.getSessionWorkflowRuns(e);i(t.runs||[])}catch{}},[e]);if((0,Q.useEffect)(()=>{c();let e=window.setInterval(c,1500);return()=>window.clearInterval(e)},[c]),!r.length)return t;let l=`session-workflow-context grid min-w-0 gap-1 border-b border-stroke-soft pb-1.5 [&_strong]:text-xs [&_strong]:font-medium [&_strong]:text-content-muted [&_p]:max-h-[84px] [&_p]:overflow-auto [&_p]:text-xs [&_p]:leading-relaxed [&_p]:whitespace-pre-wrap [&_p]:text-content-secondary [&_p]:[overflow-wrap:anywhere] [&_pre]:max-h-[84px] [&_pre]:overflow-auto [&_pre]:rounded-xs [&_pre]:bg-code [&_pre]:px-1.5 [&_pre]:py-1 [&_pre]:font-mono [&_pre]:text-xs [&_pre]:leading-relaxed [&_pre]:whitespace-pre-wrap [&_pre]:text-content-secondary [&_pre]:[overflow-wrap:anywhere]`;return(0,$.jsx)(`div`,{className:`flex max-h-[210px] flex-col overflow-auto rounded-md border border-stroke bg-panel`,children:[...r].sort((e,t)=>Date.parse(t.startedAt)-Date.parse(e.startedAt)).slice(0,5).map(e=>{let t=a===e.id,r=Math.round((Number(e.completedNodes)||0)/Math.max(1,Number(e.totalNodes)||1)*100);return(0,$.jsxs)(`div`,{className:`session-workflow-run border-b border-stroke-soft last:border-b-0 ${e.status}`,children:[(0,$.jsxs)(`button`,{className:`session-workflow-summary grid w-full cursor-pointer grid-cols-[20px_minmax(120px,1fr)_minmax(80px,160px)_14px] items-center gap-2.5 border-0 px-3 py-2 text-left text-content transition-colors duration-(--d-fast) hover:bg-surface-subtle focus-visible:-outline-offset-2 max-[650px]:min-h-11 max-[650px]:grid-cols-[20px_minmax(0,1fr)_14px] max-[650px]:[&_[data-slot='progress']]:col-[2/4] [&_[data-slot='progress']]:h-1 [&_>_span:nth-child(2)]:flex [&_>_span:nth-child(2)]:min-w-0 [&_>_span:nth-child(2)]:flex-col [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_small]:tabular-nums [&_strong]:truncate [&_strong]:text-sm [&_strong]:font-medium ${t?`bg-surface-subtle`:`bg-transparent`}`,"aria-expanded":t,onClick:()=>s(t?``:e.id),children:[(0,$.jsx)(`span`,{className:`grid size-5 place-items-center rounded-xs ${e.status===`completed`?`bg-success-soft text-success`:e.status===`failed`?`bg-danger-soft text-danger`:e.status===`waiting_approval`?`bg-warning-soft text-warning-strong`:`bg-surface-muted text-content-muted`}`,children:e.status===`running`?(0,$.jsx)(It,{className:`size-3.5`}):e.status===`completed`?(0,$.jsx)(ee,{size:12}):e.status===`failed`?(0,$.jsx)(vt,{size:12}):(0,$.jsx)(gt,{size:12})}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{children:e.workflowName}),(0,$.jsxs)(`small`,{children:[Yr(e.status,n),` · v`,e.workflowRevision||1]})]}),(0,$.jsx)(Ot,{value:e.status===`completed`?100:r}),(0,$.jsx)(ne,{size:14,className:`text-content-muted transition-transform duration-(--d-fast) ${t?`rotate-90`:``}`})]}),t&&(0,$.jsxs)(`div`,{className:`session-workflow-detail flex flex-col gap-1.5 border-t border-stroke-soft bg-surface-subtle py-2 pr-3 pl-[42px] max-[650px]:pl-3 [&_>_p]:text-xs [&_>_p]:text-content-muted`,children:[e.sourceMessage&&(0,$.jsxs)(`div`,{className:l,children:[(0,$.jsx)(`strong`,{children:n(`chat:workflowRun.request`)}),(0,$.jsx)(`p`,{children:e.sourceMessage})]}),e.inputs&&Object.keys(e.inputs).length>0&&(0,$.jsxs)(`div`,{className:l,children:[(0,$.jsx)(`strong`,{children:n(`chat:workflowRun.inputs`)}),(0,$.jsx)(`pre`,{children:JSON.stringify(e.inputs,null,2)})]}),(e.nodes||[]).map(t=>(0,$.jsxs)(`div`,{className:`session-workflow-node grid min-h-6 grid-cols-[15px_minmax(0,1fr)_auto] items-center gap-1.5 text-content-muted [&.completed]:text-success [&.failed]:text-danger [&_>_div]:flex [&_>_div]:gap-1 [&_>_span]:flex [&_>_span]:min-w-0 [&_>_span]:flex-col [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_strong]:text-xs [&_strong]:font-medium [&_strong]:text-content ${t.status}`,children:[t.status===`completed`?(0,$.jsx)(ee,{size:13}):t.status===`failed`?(0,$.jsx)(W,{size:13}):t.status===`running`?(0,$.jsx)(It,{className:`size-3.5`}):(0,$.jsx)(ft,{size:11}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{children:t.label}),(t.error||t.summary)&&(0,$.jsx)(`small`,{children:t.error||t.summary})]}),t.status===`waiting_approval`&&(0,$.jsxs)(`div`,{children:[(0,$.jsx)(Y,{size:`xs`,onClick:async()=>{await X.resolveWorkflowApproval(e.id,t.id,!0),await c()},children:n(`chat:workflowRun.approve`)}),(0,$.jsx)(Y,{size:`xs`,variant:`destructive`,onClick:async()=>{await X.resolveWorkflowApproval(e.id,t.id,!1),await c()},children:n(`chat:workflowRun.reject`)})]})]},t.id)),(e.error||e.summary)&&(0,$.jsx)(`p`,{children:e.error||e.summary}),Jr(e)&&(0,$.jsxs)(Y,{size:`xs`,variant:`destructive`,className:`self-start`,onClick:async()=>{await X.stopWorkflowRun(e.id),await c()},children:[(0,$.jsx)(ft,{"data-icon":`inline-start`}),n(`chat:workflowRun.stop`)]})]})]},e.id)})})}function Zr(e,t){let[n,r]=(0,Q.useState)(()=>Date.now());(0,Q.useEffect)(()=>{if(!t)return;r(Date.now());let e=setInterval(()=>r(Date.now()),1e3);return()=>clearInterval(e)},[t]);let i=e?Date.parse(e):NaN;return t&&Number.isFinite(i)?Math.max(0,n-i):null}function Qr(e,t){Se.getState().update(e,`side-chat`,{type:`open`,kind:`side-chat`}),t?.show(`side-chat`)}function $r(e,t){let{t:n,language:r}=o(),i=(0,Q.useContext)(ye),[a,s]=(0,Q.useState)(!1),[c,l]=(0,Q.useState)(!1),[u,d]=(0,Q.useState)(!1),f=T(e=>e.capabilities.features.sessionExport===!0),p=e.name||n(`navigation:pageHeader.newChat`),{notify:m}=t,h=async()=>{if(!c){l(!0);try{await un(e.id,{archived:!0}),m(n(`board:action.archived`,{title:p})),i?.onArchived?.(e.id)}catch{m(n(`board:action.failed`),`error`)}finally{l(!1)}}},g=async()=>{if(!u){d(!0);try{let t=await X.exportSessionMarkdown(e.id,r),i=URL.createObjectURL(t),a=document.createElement(`a`);a.href=i,a.download=`${p.replace(/[\\/:*?"<>|\p{Cc}]/gu,`-`).slice(0,80)||`session`}.md`,a.click(),window.setTimeout(()=>URL.revokeObjectURL(i),1e3),m(n(`chat:sessionMenu.exported`,{title:p}))}catch{m(n(`chat:sessionMenu.exportFailed`),`error`)}finally{d(!1)}}},_=typeof t.contextPercent==`number`&&Number.isFinite(t.contextPercent)?Math.round(Math.min(100,Math.max(0,t.contextPercent))):null,v=[{key:`rename`,icon:Ue,label:n(`chat:focusSession.renameChat`),onSelect:t.onRename},...t.onSideChat?[{key:`side-chat`,icon:Ve,label:n(`board:inspector.sideChat`),onSelect:t.onSideChat,marker:`session-side-chat`}]:[],...f?[{key:`export`,icon:Cr,label:n(`chat:sessionMenu.exportMarkdown`),onSelect:()=>void g(),disabled:u,marker:`session-export`}]:[],{key:`archive`,icon:N,label:n(`board:card.archive`),onSelect:()=>void h(),disabled:c},{key:`workspace`,icon:Le,label:n(`board:session.moveWorkspace`),onSelect:t.onWorkspace,disabled:t.workspaceDisabled,separator:!0},{key:`compact`,icon:Dr,label:n(`chat:focusSession.compactContextNow`),onSelect:()=>t.onCompact?.(),disabled:t.compactDisabled||!t.onCompact,trailing:_===null?void 0:`${_}%`,trailingTitle:_===null?void 0:n(`board:session.contextUsage`,{percent:_})},...t.goalAvailable?[{key:`goal`,icon:Or,label:n(`board:session.goalMode`),onSelect:t.onToggleGoal,disabled:t.goalDisabled,checked:t.goalEngaged}]:[],...t.workflowsAvailable?[{key:`workflows`,icon:gt,label:n(`board:session.workflowRuns`),onSelect:()=>s(!0)}]:[],{key:`voice`,icon:vr,label:n(`chat:voiceMode.open`),onSelect:t.onVoiceMode}];return{entries:v,items:(0,$.jsxs)($.Fragment,{children:[v.map(e=>{let t=e.icon,n=e.marker?{[`data-${e.marker}`]:!0}:{},r=e.checked===void 0?(0,$.jsxs)(St,{disabled:e.disabled,onSelect:e.onSelect,...n,children:[(0,$.jsx)(t,{}),e.label,e.trailing&&(0,$.jsx)(Ct,{className:`font-mono tabular-nums`,title:e.trailingTitle,"data-session-context-usage":!0,children:e.trailing})]}):(0,$.jsxs)(wt,{checked:e.checked,disabled:e.disabled,onCheckedChange:e.onSelect,...n,children:[(0,$.jsx)(t,{}),e.label]});return(0,$.jsxs)(Q.Fragment,{children:[e.separator&&(0,$.jsx)(xt,{}),r]},e.key)}),t.extraItems&&(0,$.jsx)(xt,{}),t.extraItems]}),dialog:(0,$.jsx)(wn,{open:a,onOpenChange:s,children:(0,$.jsxs)(xn,{className:`max-w-lg`,children:[(0,$.jsxs)(Cn,{children:[(0,$.jsx)(Sn,{children:n(`board:session.workflowRuns`)}),(0,$.jsx)(bn,{children:p})]}),a&&(0,$.jsx)(Xr,{sessionId:e.id,empty:(0,$.jsx)(`p`,{className:`py-6 text-center text-sm text-content-muted`,children:n(`board:session.workflowRunsEmpty`)})})]})})}}var ei=(0,Q.lazy)(()=>t(()=>import(`./SessionInspector-nGAiGnrh.js`).then(e=>({default:e.SessionInspector})),__vite__mapDeps([111,1,3,4,5,2,6,7,8,9,20,21,10,11,12,13,15,14,17,19,22,23,18,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,112,113]))),ti=[];function ni(e){switch(e){case`changes`:return{tab:`changes`,changesView:`workspace`};case`files`:return{tab:`changes`,changesView:`session`};case`terminal`:case`processes`:return{tab:`terminal`,terminalView:e};case`sources`:return{tab:`files`};case`browser`:return{tab:`preview`};case`plan`:return{tab:`plan`};case`side-chat`:return{tab:`side-chat`};default:return null}}function ri(e){if(!(e instanceof HTMLElement)||e===document.body||e.closest(`[data-inspector-sheet]`))return null;let t=e.closest(`[role="menu"]`);if(!t)return e;let n=t.getAttribute(`aria-labelledby`);return n?document.getElementById(n):null}var ii=`a[href], button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), iframe, [tabindex]:not([tabindex="-1"])`;function ai(e){if(e.key!==`Tab`||e.altKey||e.ctrlKey||e.metaKey)return;let t=[...e.currentTarget.querySelectorAll(ii)].filter(e=>e.getClientRects().length>0);if(!t.length)return;let n=t[0],r=t[t.length-1],i=document.activeElement;(e.shiftKey?i===n:i===r)&&(e.preventDefault(),(e.shiftKey?r:n).focus())}function oi(e){let t=e?.items??[];return t.length?{done:t.filter(e=>e.status===`completed`).length,total:t.length}:null}function si({sessionId:e,messages:t,cwd:n,active:r,plan:i,goal:a=null,team:s=null,activity:c=ti,planTab:l,streaming:u,completed:d,runStartedAt:f,requestConfirm:p,children:m}){let{t:h}=o(),g=(0,Q.useContext)(ye),_=!!(g?.phone??null),v=_||!!(g?.compact||g?.overlayOnly),[y,b]=(0,Q.useState)(null),[x,S]=(0,Q.useState)(null),C=(0,Q.useMemo)(()=>({headerHost:y,sourceActionHost:x,setSourceActionHost:S}),[y,x]),w=(0,Q.useMemo)(()=>Br(t),[t]),T=j(e=>e.open),E=j(e=>e.pinned),D=j(e=>e.setOpen),O=j(e=>e.width),k=j(e=>e.setWidth),[A,N]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{v||N(!1)},[v]);let P=v?A:T,F=qr(_&&P),I=_&&F.leaving,L=(0,Q.useRef)(null),R=`session-${e}-inspector`,z=(0,Q.useRef)(null),[B,V]=(0,Q.useState)(0);(0,Q.useLayoutEffect)(()=>{let e=z.current;if(!e)return;let t=()=>V(e.clientWidth);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let H=M(O,B||O+800),[ee,U]=(0,Q.useState)(0);(0,Q.useLayoutEffect)(()=>{if(!y)return;let e=()=>U(y.offsetHeight);e();let t=new ResizeObserver(e);return t.observe(y),()=>t.disconnect()},[y]);let te=(0,Q.useRef)(null),[ne,re]=(0,Q.useState)(!1),[W,ie]=(0,Q.useState)(!1),ae=(0,Q.useCallback)((e,t=!1)=>{if(window.dispatchEvent(new Event(qt)),_&&e){let e=ri(document.activeElement);e&&(L.current=e)}re(e),ie(e&&t),v?N(e):D(e)},[v,D,_]),oe=(0,Q.useCallback)((e,t)=>{j.getState().setTab(e),ae(!0,t)},[ae]),se=(0,Q.useCallback)(e=>oe(e,!0),[oe]),ce=(0,Q.useCallback)(()=>{let e=document.activeElement,t=!!(e&&te.current?.contains(e))||v&&!_&&(!e||e===document.body);ae(!1),t&&requestAnimationFrame(()=>document.querySelector(`[aria-controls="${CSS.escape(R)}"][data-inspector-toggle]`)?.focus())},[v,R,ae,_]),G=(0,Q.useCallback)(()=>P?ce():ae(!0,!0),[ce,P,ae]),le=(0,Q.useCallback)(t=>{t.preventDefault();let n=L.current;L.current=null,((n?.isConnected?n:null)??document.querySelector(`[data-session-changes][aria-controls="${CSS.escape(R)}"]`)??document.getElementById(`task-${e}-more`))?.focus({preventScroll:!0})},[R,e]),ue=_?`sheet`:v?`overlay`:`aside`,de=(0,Q.useMemo)(()=>({open:P,mode:ue,panelId:R,toggle:G,show:se}),[P,ue,R,se,G]),fe=(0,Q.useCallback)(e=>{let t=ni(e);if(!t)return;let n=j.getState();t.terminalView&&n.setTerminalView(t.terminalView),t.changesView&&n.setChangesView(t.changesView),oe(t.tab,!1)},[oe]);(0,Q.useEffect)(()=>Se.subscribe((t,n)=>{let r=t.sessions[e],i=n.sessions[e];if(!r||r===i||!r.contentOpen)return;let a=r.pages.find(e=>e.id===r.activeId);if(!a)return;let o=i?.pages.find(e=>e.id===i.activeId);(r.activeId!==i?.activeId||!i?.contentOpen||a.kind===`browser`&&a.url!==o?.url)&&fe(a.kind)}),[fe,e]),(0,Q.useEffect)(()=>{if(!r)return;let t=t=>{let n=Lr(t.detail);n&&Se.getState().update(e,n,{type:`open`,kind:n})};return window.addEventListener(Fr,t),()=>window.removeEventListener(Fr,t)},[r,e]),(0,Q.useEffect)(()=>{if(!r)return;let t=t=>{let n=t.detail;n===`side-chat`?Qr(e,de):n===`tree`&&z.current?.querySelector(`[data-session-branches]`)?.click()};return window.addEventListener(Kt,t),()=>window.removeEventListener(Kt,t)},[r,de,e]),Pr({sessionId:e,streaming:u,completed:d,runStartedAt:f,enabled:!v,open:P,onReveal:()=>fe(`files`)});let pe=$t(e=>e.bindings.toggleInspector);(0,Q.useEffect)(()=>{if(!r)return;let e=e=>{!nn(e,pe)||Qt(e)||en(e)&&e.key.length===1||(e.preventDefault(),G())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r,pe,G]),Mr(r&&v&&A,100,ce),Mr(r&&!v&&T&&!E,100,ce);let me=(0,Q.useRef)(()=>{});(0,Q.useEffect)(()=>()=>me.current(),[]);let he=e=>{if(e.button!==0)return;me.current(),e.preventDefault(),e.currentTarget.focus(),e.currentTarget.setPointerCapture(e.pointerId);let t=e.clientX,n=H,r=e=>k(M(n-(e.clientX-t),B)),i=()=>{window.removeEventListener(`pointermove`,r),window.removeEventListener(`pointerup`,i),window.removeEventListener(`pointercancel`,i)};me.current=i,window.addEventListener(`pointermove`,r),window.addEventListener(`pointerup`,i,{once:!0}),window.addEventListener(`pointercancel`,i,{once:!0})},ge=u?oi(i):null,_e=ne&&P&&!v,K=v&&!_&&P&&B-420>=480?420:0,ve=(P||I)&&(0,$.jsx)(Q.Suspense,{fallback:(0,$.jsx)(`p`,{role:`status`,className:`p-4 text-sm text-content-muted`,children:h(`chat:focusSession.gitLoading`)}),children:(0,$.jsx)(ei,{panelId:R,sessionId:e,cwd:n,streaming:u,plan:i,goal:a,team:s,activity:c,planTab:l,sources:w,mode:ue,requestConfirm:p,onClose:ce,onOpenComponents:g?.onOpenComponents,componentTabs:g?.componentTabs,autoFocus:ue===`overlay`&&W})});return(0,$.jsx)(De.Provider,{value:C,children:(0,$.jsx)(Me.Provider,{value:de,children:(0,$.jsxs)(`div`,{ref:z,id:`task-${e}-workspace`,tabIndex:-1,"data-task-workspace":e,"data-session-workspace":ue,"data-active":r,className:Ft(`relative flex h-full min-h-0 min-w-0 overflow-hidden bg-panel`,_&&`pb-[var(--pisper-safe-area-bottom)] [[data-mobile-keyboard='open']_&]:pb-0`),children:[(0,$.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,"data-session-conversation":!0,children:[(0,$.jsx)(`div`,{ref:b,className:`@container shrink-0`,"data-task-header":!0}),ge&&(0,$.jsxs)(`div`,{className:`relative z-10 h-0.5 shrink-0 bg-surface-muted`,"data-plan-progress":!0,children:[(0,$.jsx)(`span`,{role:`progressbar`,"aria-label":h(`board:session.planLabel`,ge),"aria-valuemin":0,"aria-valuemax":ge.total,"aria-valuenow":ge.done,className:`absolute inset-0 origin-left bg-st-run transition-transform duration-(--d-base)`,style:{transform:`scaleX(${ge.done/ge.total})`}}),l&&(0,$.jsx)(`button`,{type:`button`,className:`absolute top-1.5 right-3 inline-flex h-6 items-center rounded-sm bg-panel px-2 font-mono text-xs text-content-secondary tabular-nums shadow-edge hover:bg-surface-hover hover:text-content focus-visible:outline-2 focus-visible:outline-focus pointer-coarse:h-11`,"aria-label":h(`board:session.planOpen`,{plan:h(`board:session.plan`,ge)}),"aria-controls":R,"data-plan-progress-open":!0,onClick:()=>se(`plan`),children:h(`board:session.plan`,ge)})]}),(0,$.jsx)(`div`,{className:Ft(`min-h-0 min-w-0 flex-1 overflow-hidden`,_e&&`animate-in duration-[220ms] ease-(--ease)`),"data-overlay-inset":K||void 0,style:K?{paddingRight:K}:_e?{"--tw-enter-translate-x":`${H/2}px`}:void 0,children:m})]}),!v&&P&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":h(`chat:sessionContext.resize`),title:h(`chat:sessionContext.resizeHint`),"aria-controls":R,"aria-valuemin":360,"aria-valuemax":M(1/0,B),"aria-valuenow":H,onPointerDown:he,onDoubleClick:()=>k(456),onKeyDown:e=>{if(![`ArrowLeft`,`ArrowRight`,`Enter`].includes(e.key))return;if(e.preventDefault(),e.key===`Enter`){k(456);return}let t=e.shiftKey?64:16;k(M(H+(e.key===`ArrowLeft`?t:-t),B))},className:`relative -mr-1 w-2 shrink-0 cursor-col-resize touch-none select-none outline-none after:absolute after:inset-y-0 after:left-1/2 after:w-px after:bg-stroke-soft after:transition-colors after:duration-(--d-fast) hover:after:w-[3px] hover:after:-translate-x-px hover:after:bg-focus focus-visible:after:w-[3px] focus-visible:after:bg-focus`}),(0,$.jsxs)(`aside`,{ref:te,className:Ft(`flex h-full min-h-0 shrink-0 flex-col overflow-hidden border-l border-stroke-soft`,ne&&`animate-in slide-in-from-right duration-[220ms] ease-(--ease)`),style:{width:H},"data-inspector-aside":!0,"data-inspector-pinned":E||void 0,children:[(0,$.jsx)(`div`,{"aria-hidden":`true`,"data-window-drag-region":!0,"data-inspector-titlebar-gap":!0,className:`hidden h-[52px] shrink-0 [[data-custom-titlebar]_&]:block`}),(0,$.jsx)(`div`,{className:`min-h-0 flex-1`,children:ve})]})]}),v&&(P||I)&&(0,$.jsx)($.Fragment,{children:_?(0,$.jsx)(ln,{open:P,onOpenChange:e=>!e&&ce(),children:(0,$.jsxs)(on,{side:`bottom`,showCloseButton:!1,"data-inspector-sheet":!0,"data-sheet-leaving":I||void 0,onAnimationEnd:e=>{e.target===e.currentTarget&&!P&&F.finish()},onCloseAutoFocus:le,className:`gap-0 data-[side=bottom]:h-[min(86dvh,calc(100dvh-var(--pisper-safe-area-top)-48px))] overflow-hidden rounded-t-(--r-sheet) bg-panel p-0 pb-[var(--pisper-safe-area-bottom)]`,children:[(0,$.jsx)(sn,{className:`sr-only`,children:h(`board:inspector.label`)}),(0,$.jsx)(cn,{className:`sr-only`,children:h(`board:phone.inspectorDescription`)}),(0,$.jsx)(Qe,{onDismiss:ce}),(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col [&_[data-slot=segmented-control]]:h-11 [&_[data-slot=segmented-control-item]]:h-10 [&_[data-slot=segmented-control-item]]:px-3`,children:ve})]})}):(0,$.jsx)(`aside`,{ref:te,"data-inspector-overlay":!0,onKeyDown:ai,className:Ft(`absolute right-0 bottom-0 z-30 max-w-[calc(100%-24px)] overflow-hidden border-l border-stroke bg-panel shadow-float`,`animate-in slide-in-from-right duration-[220ms] ease-(--ease)`),style:{width:420,top:ee},children:ve})})]})})})}var ci=e(i(),1),li=(0,Q.createContext)(null);function ui({session:e,cwd:t,streaming:n,treeAvailable:r,branches:i,onOpenTree:a,...s}){let{t:c,language:l}=o(),u=(0,Q.useContext)(Me),d=$r(e,{...s,onSideChat:()=>Qr(e.id,u)}),f=e.name||c(`navigation:pageHeader.newChat`),m=hn(e.projectless?``:t,l),h=p({queryKey:[`session-change-summary`,e.id,n],queryFn:()=>Rn(e.id),staleTime:1e4}),g=h.data?.status===`known`?h.data:null,_=g?.changedFiles??0,v=$t(e=>e.bindings.toggleInspector),y=$t(e=>e.bindings.sessionTree),b=an(v),x=an(y),S=_>0?c(`board:session.changes`,{count:_,added:g?.added??0,removed:g?.removed??0}):null,C=S?`${c(`board:inspector.label`)} · ${S}`:c(`board:inspector.label`),w=b?c(`board:session.withShortcut`,{label:C,shortcut:b}):C,T=i>0?c(`board:session.treeBranches`,{count:i}):c(`board:session.tree`),E=x?c(`board:session.withShortcut`,{label:T,shortcut:x}):T;return(0,$.jsxs)(`header`,{"data-session-header":!0,"data-focus-region":`header`,"data-window-drag-region":!0,className:`flex h-[52px] min-w-0 shrink-0 items-center gap-2 pr-3 pl-4 [[data-custom-titlebar]_&]:pr-[144px]`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-1.5`,"data-window-drag-region":!0,children:[(0,$.jsxs)(Dt,{children:[(0,$.jsx)(Tt,{asChild:!0,children:(0,$.jsxs)(`button`,{type:`button`,id:`task-${e.id}-more`,"data-session-menu":!0,className:Ft(`group inline-flex h-8 min-w-0 shrink items-center gap-1 rounded-sm px-2 text-[15px] leading-6 font-medium text-content hover:bg-surface-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus data-[state=open]:bg-surface-hover pointer-coarse:h-11`,Bn),"aria-label":c(`board:session.titleMenu`,{title:f}),children:[(0,$.jsx)(`span`,{className:`truncate`,"data-session-title":!0,children:f}),(0,$.jsx)(U,{className:`size-3.5 flex-none text-content-muted`,"aria-hidden":`true`})]})}),(0,$.jsx)(Et,{align:`start`,className:`min-w-60`,children:d.items})]}),(0,$.jsx)(`span`,{className:`min-w-0 max-w-[160px] flex-none truncate font-mono text-xs text-content-muted @max-[560px]:hidden`,title:t,"data-session-project":!0,children:m}),r&&(0,$.jsxs)(Y,{type:`button`,variant:`ghost`,className:Ft(`h-7 min-w-7 flex-none gap-1 px-1.5 font-mono text-xs font-normal text-content-muted tabular-nums hover:text-content pointer-coarse:h-11 pointer-coarse:min-w-11`),"aria-haspopup":`dialog`,"aria-label":E,title:E,"aria-keyshortcuts":zn(y),"data-session-branches":i,onClick:e=>a(`branches`,e.currentTarget),children:[(0,$.jsx)(pe,{className:`size-3.5`,"aria-hidden":`true`}),i>0&&(0,$.jsx)(`span`,{"aria-hidden":`true`,children:i})]})]}),u&&(0,$.jsx)(Y,{type:`button`,variant:`ghost`,className:Ft(`h-8 flex-none gap-1.5 px-2 text-[13px] font-normal text-content-secondary hover:text-content pointer-coarse:h-11`,S?``:`w-8 px-0 pointer-coarse:w-11`,u.open&&`bg-surface-hover text-content ring-1 ring-stroke ring-inset`),"data-inspector-toggle":!0,"data-session-changes":_,"aria-controls":u.panelId,"aria-expanded":u.open,"aria-label":w,title:w,"aria-keyshortcuts":zn(v),onClick:u.toggle,children:S&&g?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(se,{className:`size-3.5`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{"aria-hidden":`true`,children:c(`board:session.changedFiles`,{count:_})}),(0,$.jsxs)(`span`,{className:`font-mono text-xs text-success tabular-nums`,"aria-hidden":`true`,children:[`+`,g.added??0]}),(0,$.jsxs)(`span`,{className:`font-mono text-xs text-danger tabular-nums`,"aria-hidden":`true`,children:[`−`,g.removed??0]})]}):(0,$.jsx)(q,{"aria-hidden":`true`})}),d.dialog]})}var di=`relative grid size-11 flex-none place-items-center rounded-[var(--r-md)] text-content-secondary focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus active:bg-surface-hover`;function fi({leading:e,session:t,cwd:n,streaming:r,runStartedAt:i,approvals:a,failed:s,stopped:c,treeAvailable:l,branches:u,onOpenTree:d,...f}){let{t:m,language:h}=o(),g=(0,Q.useContext)(Me),_=(0,Q.useContext)(ye),v=Zr(i,r),y=$r(t,f),[b,x]=(0,Q.useState)(!1),S=(0,Q.useId)(),C=t.name||m(`navigation:pageHeader.newChat`),w=hn(t.projectless?``:n,h),T=p({queryKey:[`session-change-summary`,t.id,r],queryFn:()=>Rn(t.id),staleTime:1e4}),E=T.data?.status===`known`?T.data.changedFiles??0:0,D=a>0?{kind:`approval`,label:m(`board:status.approval`)}:r?{kind:`running`,label:v===null?m(`board:status.running`):m(`board:phone.running`,{elapsed:_n(v)})}:s?{kind:`failed`,label:m(`board:status.failed`)}:c?{kind:`stopped`,label:m(`board:status.stopped`)}:null,O=()=>g?.show(`changes`),k=[...l?[{key:`tree`,icon:pe,label:u>0?m(`board:session.treeBranches`,{count:u}):m(`board:session.tree`),onSelect:()=>d(`branches`),marker:`session-tree`}]:[],{key:`side-chat`,icon:Ve,label:m(`board:inspector.sideChat`),onSelect:()=>Qr(t.id,g),marker:`session-side-chat`},...g?[{key:`inspector`,icon:se,label:m(`board:phone.openInspector`),onSelect:O,marker:`inspector-toggle`}]:[],...y.entries.map((e,t)=>t===0?{...e,separator:!0}:e)];return(0,$.jsxs)(`header`,{"data-session-header":`phone`,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,$.jsx)(`div`,{className:`flex min-w-0 items-center`,children:e}),(0,$.jsxs)(`button`,{type:`button`,"data-session-menu-trigger":!0,"aria-haspopup":`dialog`,"aria-expanded":b,"aria-controls":b?S:void 0,"aria-label":m(`board:session.titleMenu`,{title:C}),className:`flex h-11 max-w-[min(58vw,260px)] min-w-0 flex-col items-center justify-center rounded-[var(--r-md)] px-2 outline-none focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus active:bg-surface-hover`,onClick:()=>x(!0),children:[(0,$.jsxs)(`span`,{className:`flex max-w-full min-w-0 items-center gap-0.5 text-base leading-5 font-semibold text-content`,children:[(0,$.jsx)(`span`,{className:`truncate`,"data-session-title":!0,children:C}),(0,$.jsx)(U,{className:`size-4 flex-none text-content-muted`,"aria-hidden":`true`})]}),(0,$.jsxs)(`span`,{className:`flex max-w-full min-w-0 items-center gap-1 text-xs leading-4 text-content-muted`,children:[(0,$.jsx)(`span`,{className:`min-w-0 truncate font-mono`,title:n,"data-session-project":!0,children:w}),D&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,$.jsxs)(`span`,{className:Ft(`flex flex-none items-center gap-1`,(D.kind===`approval`||D.kind===`failed`)&&`font-medium text-warning-strong`),"data-session-status":D.kind,children:[(0,$.jsx)(Kn,{status:D.kind===`running`?`run`:D.kind===`stopped`?`stopped`:`attention`,className:`size-3`}),(0,$.jsx)(`span`,{className:`tabular-nums`,children:D.label})]})]})]})]}),(0,$.jsx)(`div`,{className:`flex min-w-0 items-center justify-end`,children:E>0&&g?(0,$.jsxs)(`button`,{type:`button`,"data-session-changes":E,"aria-haspopup":`dialog`,"aria-controls":g.panelId,"aria-label":m(`board:phone.changesLabel`,{count:E}),className:di,onClick:O,children:[(0,$.jsx)(se,{className:`size-5`,strokeWidth:1.75,"aria-hidden":`true`}),(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`absolute top-1.5 right-1 grid h-4 min-w-4 place-items-center rounded-full bg-content px-1 text-[10px] leading-none font-semibold text-panel tabular-nums`,children:E>99?`99+`:E})]}):_?.phone?(0,$.jsx)(`button`,{type:`button`,"data-phone-new-task":!0,"aria-label":m(`navigation:shell.newTask`),className:di,onClick:_.phone.onNewTask,children:(0,$.jsx)(Ze,{className:`size-5`,strokeWidth:1.75,"aria-hidden":`true`})}):null}),(0,$.jsx)(ln,{open:b,onOpenChange:x,children:(0,$.jsxs)(on,{id:S,side:`bottom`,showCloseButton:!1,"data-session-menu-sheet":!0,className:`max-h-[85dvh] gap-0 rounded-t-(--r-sheet) px-2 pt-1 pb-[calc(8px+var(--pisper-safe-area-bottom))]`,children:[(0,$.jsx)(Qe,{onDismiss:()=>x(!1)}),(0,$.jsx)(sn,{className:`truncate px-3 pt-1 pb-0.5 text-base font-semibold`,children:C}),(0,$.jsx)(cn,{className:`truncate px-3 pb-2 font-mono text-xs text-content-muted`,children:w}),(0,$.jsx)(`div`,{className:`min-h-0 overflow-y-auto`,role:`list`,children:k.map(e=>{let t=e.icon,n=e.marker?{[`data-${e.marker}`]:!0}:{};return(0,$.jsxs)(`div`,{role:`listitem`,children:[e.separator&&(0,$.jsx)(`div`,{"aria-hidden":`true`,className:`mx-3 my-1 h-px bg-stroke-soft`}),(0,$.jsxs)(`button`,{type:`button`,disabled:e.disabled,"aria-pressed":e.checked,className:`flex h-12 w-full min-w-0 items-center gap-3 rounded-[var(--r-md)] px-3 text-left text-base text-content focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus active:bg-surface-hover disabled:text-content-faint`,onClick:()=>{x(!1),e.onSelect()},...n,children:[(0,$.jsx)(t,{className:`size-[18px] flex-none text-content-secondary`,strokeWidth:1.75,"aria-hidden":`true`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label}),e.trailing&&(0,$.jsx)(`span`,{className:`flex-none font-mono text-sm text-content-muted tabular-nums`,title:e.trailingTitle,"data-session-context-usage":!0,children:e.trailing}),e.checked&&(0,$.jsx)(ee,{className:`size-4 flex-none text-content`,"aria-hidden":`true`})]})]},e.key)})})]})}),y.dialog]})}function pi({cwd:e,selection:t}){let{t:n}=o(),r=D(),i=(0,Q.useRef)(null);return{input:(0,$.jsx)(`input`,{ref:i,type:`file`,className:`hidden`,accept:tt,multiple:!0,"aria-label":n(`chat:focusSession.addAttachment`),onChange:e=>{let n=[...e.currentTarget.files||[]];e.currentTarget.value=``,n.length&&t.addFiles(n)}}),choose:async()=>{if(r){i.current?.click();return}if(window.pisperDesktop?.pickFiles){try{let n=await window.pisperDesktop.pickFiles(e);t.addAttachments(at(n||[]))}catch(e){t.setError(e)}return}i.current?.click()}}}function mi({cwd:e,selection:t}){let{t:n}=o(),{input:r,choose:i}=pi({cwd:e,selection:t});return(0,$.jsxs)($.Fragment,{children:[r,(0,$.jsxs)(`button`,{type:`button`,className:`relative grid size-[30px] min-w-[30px] flex-none cursor-pointer place-items-center rounded-sm border-0 bg-transparent text-content-muted transition-colors hover:bg-surface-hover hover:text-content disabled:cursor-not-allowed disabled:opacity-50 max-[650px]:size-11 max-[650px]:min-w-11 pointer-coarse:size-11 pointer-coarse:min-w-11`,title:n(`chat:focusSession.addAttachment`),"aria-label":n(`chat:focusSession.addAttachment`),onClick:()=>void i(),children:[(0,$.jsx)(He,{size:16}),t.attachments.length>0&&(0,$.jsx)(`span`,{className:`absolute -top-1 -right-1 grid h-4 min-w-4 place-items-center rounded-full border-2 border-panel bg-star px-0.5 text-[10px] leading-none font-medium text-on-accent tabular-nums`,children:t.attachments.length})]})]})}function hi({attachments:e,preparing:t=[],onRemove:n,compact:r=!1}){let{t:i}=o();return!e.length&&!t.length?null:(0,$.jsxs)(`div`,{className:`attachment-tray [&.compact]:max-h-[58px] flex max-h-[116px] flex-wrap gap-[6px] overflow-auto ${r?`compact`:``}`,children:[t.map(e=>(0,$.jsxs)(`div`,{className:`flex min-h-[42px] max-w-64 items-center gap-2 rounded-sm border border-stroke bg-surface-subtle pr-1 pl-2.5`,"aria-busy":`true`,children:[(0,$.jsx)(It,{className:`size-3.5`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-content`,children:e.name}),(0,$.jsx)(`span`,{className:`sr-only`,children:i(`chat:focusSession.preparingAttachments`)}),(0,$.jsx)(`button`,{type:`button`,className:`grid size-8 shrink-0 cursor-pointer place-items-center rounded-sm text-content-muted hover:bg-danger-soft hover:text-danger max-[650px]:size-11`,"aria-label":i(`chat:focusSession.removeName`,{name:e.name}),onClick:()=>n(e.id),children:(0,$.jsx)(vt,{size:14})})]},e.id)),e.map(e=>(0,$.jsxs)(`div`,{className:`attachment-chip grid min-h-[42px] min-w-[150px] max-w-[250px] grid-cols-[30px_minmax(0,1fr)_auto] items-center gap-2 rounded-sm border border-stroke bg-surface-subtle p-1.5 pr-1 [&_>_button]:grid [&_>_button]:size-7 [&_>_button]:cursor-pointer [&_>_button]:place-items-center [&_>_button]:rounded-xs [&_>_button]:text-content-muted [&_>_button:hover]:bg-danger-soft [&_>_button:hover]:text-danger max-[650px]:[&_>_button]:size-11 [&_>_img]:size-[30px] [&_>_img]:rounded-xs [&_>_img]:object-cover [&_>_span:nth-child(2)]:flex [&_>_span:nth-child(2)]:min-w-0 [&_>_span:nth-child(2)]:flex-col [&_small]:text-xs [&_small]:text-content-muted [&_small]:tabular-nums [&_strong]:truncate [&_strong]:font-mono [&_strong]:text-xs [&_strong]:font-medium [&_strong]:text-content`,children:[e.kind===`image`?(0,$.jsx)(`img`,{src:`data:${e.mimeType};base64,${e.data}`,alt:``}):(0,$.jsx)(`span`,{className:`grid size-[30px] place-items-center rounded-xs border border-key-border bg-key text-content-muted`,children:(0,$.jsx)(G,{size:13})}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{children:e.name}),(0,$.jsxs)(`small`,{children:[e.kind===`path`?i(`chat:focusSession.localPath`):e.kind===`image`?i(`chat:focusSession.image`):e.kind===`document`?i(`chat:focusSession.document`):i(`chat:focusSession.text`),e.kind===`path`?``:` · ${mn(e.size)}`,e.truncated?` · ${i(`chat:focusSession.truncated`)}`:``]})]}),(0,$.jsx)(`button`,{type:`button`,"aria-label":i(`chat:focusSession.removeName`,{name:e.name}),onClick:()=>n(String(e.id||``)),children:(0,$.jsx)(vt,{size:12})})]},e.id))]})}function gi({open:e,sessionId:t,onClose:n,onSelect:r,onCommandSelect:i}){let{t:a}=o(),s=T(e=>e.capabilities),c=w(s,`workflows`),[l,u]=(0,Q.useState)([]),[d,f]=(0,Q.useState)(`all`),[p,m]=(0,Q.useState)(``),[h,g]=(0,Q.useState)(null),[_,v]=(0,Q.useState)({}),[y,b]=(0,Q.useState)(!1),[x,C]=(0,Q.useState)(``);(0,Q.useEffect)(()=>{if(!e)return;let n=!0;return f(`all`),m(``),g(null),v({}),b(!0),C(``),Promise.all([X.getSessionCommands(t),c?S(`/api/workflows`):Promise.resolve({workflows:[]}),S(`/api/plugins?sessionId=${encodeURIComponent(t)}`)]).then(([e,t,r])=>{if(!n)return;let i=new Set(r.callableToolNames||[]);u([...(e.commands||[]).map(e=>({kind:e.source,id:e.name,name:e.name,description:e.description||``,inputs:[],argumentHint:e.argumentHint,invocation:e.invocation})),...(t.workflows||[]).filter(e=>e.status===`published`).map(e=>({kind:`workflow`,id:e.id,name:e.name,description:e.description||``,inputs:e.inputs||[]})),...(r.plugins||[]).flatMap(e=>(e.capabilities||[]).filter(e=>i.has(e.name)).map(t=>({kind:`tool`,id:t.name,name:t.id?Qn(t,a):String(t.label||t.name),description:t.id?$n(t,a):t.description,inputs:[],sourceName:e.name})))])}).catch(e=>{n&&(u([]),C(e instanceof Error?e.message:String(e)))}).finally(()=>n&&b(!1)),()=>{n=!1}},[e,t,a,c]);let E=(0,Q.useMemo)(()=>({all:l.length,prompt:l.filter(e=>e.kind===`prompt`).length,skill:l.filter(e=>e.kind===`skill`).length,tool:l.filter(e=>e.kind===`tool`).length,workflow:l.filter(e=>e.kind===`workflow`).length}),[l]),D=(0,Q.useMemo)(()=>{let e=p.trim().toLowerCase();return l.filter(t=>(d===`all`||t.kind===d)&&(!e||`${t.name} ${t.id} ${t.description} ${t.kind===`tool`?t.sourceName:``}`.toLowerCase().includes(e)))},[d,p,l]),O=e=>{let t=e;f(t),h&&t!==`all`&&h.kind!==t&&g(null)},k=e=>{g(e),v(Object.fromEntries(e.inputs.map(e=>[e.name,e.defaultValue??``])))};return(0,$.jsx)(wn,{open:e,onOpenChange:e=>!e&&n(),children:(0,$.jsxs)(xn,{className:`chat-resource-dialog w-[min(820px,calc(100vw_-_32px))] h-[min(600px,calc(100dvh_-_32px))] max-w-[820px] sm:max-w-[820px] grid-rows-[auto_minmax(0,1fr)] overflow-hidden max-[650px]:w-[calc(100vw_-_16px)] max-[650px]:h-[calc(100dvh_-_16px)] z-[220] gap-0 p-0 ring-0`,overlayClassName:`z-[220]`,showCloseButton:!1,children:[(0,$.jsxs)(`div`,{className:`chat-resource-head flex items-start justify-between gap-4 border-b border-stroke-soft px-[18px] pt-4 pb-3.5 max-[650px]:p-3.5 [&_[data-slot='dialog-description']]:mt-0.5 [&_[data-slot='dialog-description']]:text-xs [&_[data-slot='dialog-description']]:text-content-muted [&_[data-slot='dialog-title']]:text-base [&_[data-slot='dialog-title']]:font-semibold`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(Sn,{children:a(`chat:resourcePicker.title`)}),(0,$.jsx)(bn,{children:a(`chat:resourcePicker.description`)})]}),(0,$.jsx)(Y,{size:`icon-sm`,variant:`ghost`,"aria-label":a(`chat:resourcePicker.close`),onClick:n,children:(0,$.jsx)(vt,{})})]}),(0,$.jsxs)(`div`,{className:`chat-resource-body grid min-h-0 grid-cols-[minmax(0,1.1fr)_minmax(260px,.9fr)] overflow-hidden max-[650px]:grid-cols-[1fr] max-[650px]:grid-rows-[minmax(0,1fr)_minmax(190px,auto)] max-[650px]:overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`chat-resource-browser flex min-h-0 min-w-0 flex-col border-r border-stroke-soft p-3 max-[650px]:min-h-0 max-[650px]:border-r-0 max-[650px]:border-b`,children:[(0,$.jsx)(Mt,{value:d,onValueChange:O,className:`chat-resource-tabs w-full [&_[data-slot='tabs-list']]:grid [&_[data-slot='tabs-list']]:h-9 [&_[data-slot='tabs-list']]:w-full [&_[data-slot='tabs-list']]:rounded-sm [&_[data-slot='tabs-list']]:border [&_[data-slot='tabs-list']]:border-stroke [&_[data-slot='tabs-list']]:bg-surface-muted [&_[data-slot='tabs-list']]:p-0.5 [&_[data-slot='tabs-trigger']]:min-w-0 [&_[data-slot='tabs-trigger']]:gap-1 [&_[data-slot='tabs-trigger']]:rounded-xs [&_[data-slot='tabs-trigger']]:px-1.5 [&_[data-slot='tabs-trigger']]:text-xs [&_[data-slot='tabs-trigger']]:text-content-secondary [&_[data-slot='tabs-trigger'][data-state='active']]:bg-key [&_[data-slot='tabs-trigger'][data-state='active']]:text-content [&_[data-slot='tabs-trigger'][data-state='active']]:shadow-key [&_[data-slot='tabs-trigger']_small]:text-xs [&_[data-slot='tabs-trigger']_small]:font-normal [&_[data-slot='tabs-trigger']_small]:text-content-muted [&_[data-slot='tabs-trigger']_small]:tabular-nums ${c?`[&_[data-slot='tabs-list']]:grid-cols-[repeat(5,minmax(0,1fr))]`:`[&_[data-slot='tabs-list']]:grid-cols-[repeat(4,minmax(0,1fr))]`}`,children:(0,$.jsxs)(jt,{"aria-label":a(`chat:resourcePicker.categories`),children:[(0,$.jsxs)(At,{value:`all`,children:[a(`chat:resourcePicker.all`),(0,$.jsx)(`small`,{children:E.all})]}),(0,$.jsxs)(At,{value:`prompt`,children:[a(`chat:resourcePicker.prompt`),(0,$.jsx)(`small`,{children:E.prompt})]}),(0,$.jsxs)(At,{value:`skill`,children:[a(`chat:resourcePicker.skill`),(0,$.jsx)(`small`,{children:E.skill})]}),(0,$.jsxs)(At,{value:`tool`,children:[a(`chat:resourcePicker.tool`),(0,$.jsx)(`small`,{children:E.tool})]}),c&&(0,$.jsxs)(At,{value:`workflow`,children:[a(`chat:resourcePicker.workflow`),(0,$.jsx)(`small`,{children:E.workflow})]})]})}),(0,$.jsxs)(On,{className:`chat-resource-search mt-2`,children:[(0,$.jsx)(Dn,{children:(0,$.jsx)(qe,{"aria-hidden":`true`})}),(0,$.jsx)(En,{autoFocus:!0,value:p,"aria-label":a(`chat:resourcePicker.search`),onChange:e=>m(e.target.value),placeholder:a(`chat:resourcePicker.search`)})]}),(0,$.jsxs)(`div`,{className:`chat-resource-list mt-2 flex min-h-0 [flex:1_1_0] flex-col gap-px overflow-y-auto [overscroll-behavior:contain] [scrollbar-gutter:stable] [touch-action:pan-y] [&_>_button]:relative [&_>_button]:grid [&_>_button]:w-full [&_>_button]:cursor-pointer [&_>_button]:grid-cols-[28px_minmax(0,1fr)_auto] [&_>_button]:items-center [&_>_button]:gap-2 [&_>_button]:rounded-sm [&_>_button]:px-2 [&_>_button]:py-1.5 [&_>_button]:text-left [&_>_button]:text-content [&_>_button:hover]:bg-surface-hover [&_>_button.active]:bg-surface-hover [&_>_button.active]:before:absolute [&_>_button.active]:before:inset-y-1.5 [&_>_button.active]:before:left-0 [&_>_button.active]:before:w-[3px] [&_>_button.active]:before:rounded-full [&_>_button.active]:before:bg-star max-[650px]:[&_>_button]:min-h-11 [&_button_>_span:nth-child(2)]:flex [&_button_>_span:nth-child(2)]:min-w-0 [&_button_>_span:nth-child(2)]:flex-col [&_strong]:truncate [&_strong]:text-[13px] [&_strong]:font-medium [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_em]:text-xs [&_em]:whitespace-nowrap [&_em]:text-content-muted [&_em]:not-italic [&_>_p]:m-auto [&_>_p]:text-xs [&_>_p]:text-content-muted`,children:[D.map(e=>{let t=e.kind===`prompt`?ce:e.kind===`skill`?H:e.kind===`tool`?_t:gt;return(0,$.jsxs)(`button`,{type:`button`,className:h?.kind===e.kind&&h.id===e.id?`active`:``,onClick:()=>k(e),children:[(0,$.jsx)(`span`,{className:`list-icon grid size-7 place-items-center rounded-sm bg-surface-muted text-content-secondary`,children:(0,$.jsx)(t,{size:15})}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{children:e.name}),(0,$.jsx)(`small`,{children:e.description})]}),(0,$.jsx)(`em`,{children:e.kind===`prompt`?a(`chat:resourcePicker.prompt`):e.kind===`skill`?`Skill`:e.kind===`tool`?a(`chat:resourcePicker.tool`):a(`chat:resourcePicker.workflow`)})]},`${e.kind}:${e.id}`)}),!D.length&&(0,$.jsx)(`p`,{children:y?a(`chat:resourcePicker.loading`):x||a(`chat:resourcePicker.empty`)})]})]}),(0,$.jsx)(`div`,{className:`chat-resource-config flex min-h-0 min-w-0 flex-col gap-4 overflow-y-auto overscroll-contain p-[18px] max-[650px]:max-h-[230px] max-[650px]:min-h-0 [&_>_div:first-child]:flex [&_>_div:first-child]:flex-col [&_>_div:first-child]:gap-1 [&_>_p]:m-auto [&_>_p]:text-xs [&_>_p]:text-content-muted [&_p]:text-xs [&_p]:text-content-muted [&_strong]:text-[15px] [&_strong]:font-medium`,children:h?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`strong`,{children:h.name}),(0,$.jsx)(`p`,{children:h.description||a(`chat:resourcePicker.noDescription`)})]}),h.kind===`workflow`&&h.inputs.length>0&&(0,$.jsx)(`div`,{className:`chat-resource-inputs flex flex-col gap-3 [&_label]:grid [&_label]:gap-1.5 [&_label]:text-xs [&_label]:font-medium [&_label]:text-content-secondary`,children:h.inputs.map(e=>(0,$.jsxs)(`label`,{children:[(0,$.jsxs)(`span`,{children:[e.label,e.required?` *`:``]}),e.type===`boolean`?(0,$.jsx)(bt,{checked:!!_[e.name],onCheckedChange:t=>v(n=>({...n,[e.name]:t===!0}))}):(0,$.jsx)(Tn,{type:e.type===`number`?`number`:`text`,required:e.required,value:String(_[e.name]??``),onChange:t=>v(n=>({...n,[e.name]:t.target.value}))})]},e.id))}),h.kind===`prompt`&&h.argumentHint&&(0,$.jsx)(`code`,{className:`w-fit max-w-full rounded-xs bg-inline-code px-1.5 py-1 font-mono text-xs [overflow-wrap:anywhere] text-content-secondary`,children:h.argumentHint}),(0,$.jsx)(Y,{className:`chat-resource-confirm min-h-8 min-w-[112px] self-start bg-star text-[var(--on-accent)] hover:bg-star-hover max-[650px]:min-h-11`,onClick:()=>{if(h){if(h.kind===`prompt`){i(h.invocation||`/${h.name}`),n();return}r({kind:h.kind,resourceId:h.id,resourceName:h.name,arguments:h.kind===`workflow`?_:void 0,behavior:h.kind===`workflow`?`background`:`foreground`}),n()}},children:h.kind===`prompt`?a(`chat:resourcePicker.insertPrompt`):a(`chat:resourcePicker.useResource`)})]}):(0,$.jsx)(`p`,{children:a(`chat:resourcePicker.chooseResource`)})})]})]})})}var _i=1e3;function vi({option:e,selected:t,disabled:n,onSelect:r}){let i=e.icon;return(0,$.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,disabled:n,className:Ft(`grid min-h-11 w-full cursor-pointer grid-cols-[auto_minmax(0,1fr)_16px] items-center gap-2.5 rounded-sm px-2 py-1.5 text-left text-content hover:bg-surface-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus disabled:cursor-default disabled:opacity-50 disabled:hover:bg-transparent`,t&&`bg-surface-hover`),"data-mode-option":e.value,onClick:()=>r(e.value),children:[(0,$.jsx)(`span`,{className:`grid size-7 place-items-center rounded-sm bg-surface-muted text-content-secondary`,children:(0,$.jsx)(i,{size:14,"aria-hidden":`true`})}),(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[(0,$.jsx)(`strong`,{className:`text-[13px] font-medium`,children:e.label}),(0,$.jsx)(`small`,{className:`text-xs leading-normal text-content-muted`,children:e.description})]}),t?(0,$.jsx)(ee,{size:15,strokeWidth:2.25,"aria-hidden":`true`}):(0,$.jsx)(`span`,{})]})}function yi({label:e,hint:t,children:n}){return(0,$.jsxs)(`div`,{role:`radiogroup`,"aria-label":e,className:`flex flex-col gap-0.5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between px-2 pt-1.5 pb-1 text-xs font-medium text-content-muted`,children:[(0,$.jsx)(`span`,{children:e}),t]}),n]})}function bi({approvalMode:e,onApprovalModeChange:t,approvalDisabled:n=!1,runMode:r,onRunModeChange:i,runModeDisabled:a=!1,goalsAvailable:s,teamAvailable:c,goal:l,tokenBudget:u,onTokenBudgetChange:d,onSaveTokenBudget:f,sheet:p=!1}){let{t:m}=o(),[h,g]=(0,Q.useState)(!1),[_,v]=(0,Q.useState)(!1),y=[{value:`approval-required`,label:m(`chat:focusSession.approvalRequired`),description:m(`chat:focusSession.approvalRequiredShowsADiffBeforeWriting`),icon:Sr},{value:`workspace-write`,label:m(`chat:focusSession.workspaceWrite`),description:m(`chat:focusSession.workspaceWriteRunsCommandsWithAutomaticApproval`),icon:yr},{value:`full-access`,label:m(`chat:focusSession.fullAccess`),description:m(`chat:focusSession.fullAccessRunsShellWithoutPerCommandApproval`),icon:Ye}],b=[{value:`plan`,label:m(`chat:focusSession.planMode`),description:m(`chat:focusSession.planModeDescription`),icon:fe},...s?[{value:`goal`,label:m(`chat:focusSession.goalMode`),description:m(`chat:focusSession.goalModeDescription`),icon:Or}]:[],...s&&c?[{value:`team`,label:m(`chat:focusSession.teamMode`),description:m(`chat:focusSession.teamModeDescription`),icon:kr}]:[]],x=y.find(t=>t.value===e)||y[0],S=l?.status===`active`?l?.mode===`team`&&c?`team`:`goal`:r,C=b.find(e=>e.value===S)||b[0],w=C.value!==`plan`,T=x.value===`full-access`?Ye:Xe,E=C.value===`team`?m(`board:composer.teamShort`):C.value===`goal`?m(`board:composer.goalShort`):``,D=E?`${E} · ${x.label}`:x.label,O=!!l?.id,k=S===`team`?l?.teamTokenBudget:l?.tokenBudget,A=k==null?null:Number(k)>0?Number(k):null,j=u!==A,M=O?A==null?m(`chat:focusSession.usedUnlimitedGoalTokens`,{used:gn(l?.tokensUsed)}):m(`chat:focusSession.usedBudgetTokensUsed`,{used:l?.tokensUsed||0,budget:A||0}):``,N=`${m(`board:composer.modeChip`)} · ${D}`,P=m(S===`team`?`chat:focusSession.teamTokenBudget`:`chat:focusSession.goalTokenBudget`),F=async()=>{if(!(h||!j||!O||!f)){g(!0);try{await f(u)}finally{g(!1)}}};return(0,$.jsxs)(it,{sheet:p,title:N,open:_,onOpenChange:v,align:`start`,side:`top`,className:`composer-mode-popover w-[300px] max-w-[calc(100vw_-_24px)] gap-1 p-1`,trigger:(0,$.jsxs)(`button`,{type:`button`,className:`composer-mode-chip inline-flex h-7 max-w-[220px] min-w-0 shrink cursor-pointer items-center gap-1.5 rounded-sm border border-transparent px-2 text-[13px] text-content-secondary transition-colors hover:bg-surface-hover hover:text-content aria-expanded:bg-surface-hover aria-expanded:text-content max-[650px]:h-11 max-[650px]:max-w-[160px] max-[650px]:border-stroke max-[650px]:px-2.5 pointer-coarse:h-11`,"aria-label":N,title:N,"data-composer-mode":`${C.value}:${x.value}`,children:[(0,$.jsx)(T,{size:14,className:`shrink-0`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:D}),(0,$.jsx)(U,{size:14,className:`shrink-0 opacity-70`,"aria-hidden":`true`})]}),children:[(0,$.jsx)(yi,{label:m(`chat:focusSession.approvalMode`),children:y.map(e=>(0,$.jsx)(vi,{option:e,selected:e.value===x.value,disabled:n,onSelect:e=>{v(!1),t(e)}},e.value))}),b.length>1&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{role:`separator`,className:`mx-1 h-px bg-stroke-soft`}),(0,$.jsx)(yi,{label:m(`chat:focusSession.executionMode`),hint:(0,$.jsxs)(`span`,{className:`flex items-center gap-1 font-normal`,children:[m(`board:composer.cycleRunMode`),(0,$.jsx)(Rt,{children:`⇧Tab`})]}),children:b.map(e=>(0,$.jsx)(vi,{option:e,selected:e.value===S,disabled:a,onSelect:e=>{e===`plan`&&v(!1),i(e)}},e.value))}),(w||O)&&(0,$.jsxs)(`div`,{className:`grid gap-1 px-2 pt-1 pb-1.5 text-xs`,children:[M&&(0,$.jsx)(`p`,{className:`text-content-muted tabular-nums`,children:M}),(0,$.jsxs)(`div`,{className:`grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-1.5`,children:[(0,$.jsx)(`label`,{htmlFor:`goal-token-budget-input`,className:`font-medium text-content-secondary`,children:P}),(0,$.jsx)(Tn,{id:`goal-token-budget-input`,type:`number`,min:_i,step:1e3,value:u??``,placeholder:m(`chat:focusSession.goalTokenBudgetUnlimited`),"aria-label":P,disabled:h,className:`text-[13px] tabular-nums`,onChange:e=>{let t=e.target.value.trim();if(!t){d(null);return}let n=Number(t);Number.isFinite(n)&&d(Math.max(_i,Math.round(n)))}}),O&&j?(0,$.jsxs)(Y,{type:`button`,variant:`outline`,size:`sm`,disabled:h,onClick:()=>void F(),children:[h?(0,$.jsx)(Ke,{className:`animate-spin`,size:12}):(0,$.jsx)(ee,{size:12}),m(`chat:focusSession.goalBudgetSave`)]}):(0,$.jsx)(`span`,{})]}),(0,$.jsx)(`small`,{className:`text-content-muted`,children:m(S===`team`?`chat:focusSession.teamTokenBudgetHint`:O?`chat:focusSession.goalTokenBudgetUpdateHint`:`chat:focusSession.goalTokenBudgetHint`)})]})]})]})}function xi(e,t){let n=[`plan`];return t.goalsAvailable&&n.push(`goal`),t.goalsAvailable&&t.teamAvailable&&n.push(`team`),n.length<2?null:n[(n.indexOf(e)+1)%n.length]??`plan`}function Si({state:e,cwd:t,onDismiss:n}){let{t:r}=o(),i=e.status===`streaming`;return(0,$.jsxs)(`section`,{"aria-label":r(`chat:sideQuestion.label`),"aria-busy":i,onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n())},className:`flex max-h-[min(45vh,420px)] min-w-0 flex-col rounded-lg border border-stroke bg-panel shadow-float`,children:[(0,$.jsxs)(`header`,{className:`flex min-w-0 items-start gap-2 border-b border-stroke-soft px-3 py-2`,children:[(0,$.jsx)(wr,{size:15,"aria-hidden":`true`,className:`mt-0.5 shrink-0 text-content-muted`}),(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,$.jsx)(`span`,{className:`text-xs text-content-muted`,children:r(`chat:sideQuestion.label`)}),(0,$.jsx)(`p`,{className:`m-0 line-clamp-2 text-[13px] text-content`,title:e.question,children:e.question})]}),(0,$.jsx)(Y,{variant:`ghost`,size:`icon-xs`,className:`shrink-0 pointer-coarse:size-11`,"aria-label":r(`chat:sideQuestion.close`),title:r(`chat:sideQuestion.close`),onClick:n,children:(0,$.jsx)(vt,{})})]}),(0,$.jsxs)(`div`,{className:`min-h-0 overflow-y-auto overscroll-contain px-3 py-2 text-[13px]`,children:[e.answer?(0,$.jsx)(Wn,{cwd:t,streaming:i,children:e.answer}):i?(0,$.jsxs)(`p`,{role:`status`,className:`m-0 flex items-center gap-2 text-content-muted`,children:[(0,$.jsx)(It,{className:`size-4`}),r(`chat:sideQuestion.answering`)]}):e.status===`done`?(0,$.jsx)(`p`,{className:`m-0 text-content-muted`,children:e.toolCallIgnored?r(`chat:sideQuestion.toolIgnored`):r(`chat:sideQuestion.empty`)}):null,e.status===`error`&&(0,$.jsx)(`p`,{role:`alert`,className:`m-0 mt-1 text-[var(--danger)]`,children:r(`chat:sideQuestion.failed`,{error:e.error})})]}),(0,$.jsx)(`footer`,{className:`border-t border-stroke-soft px-3 py-1.5 text-xs text-content-muted`,children:r(`chat:sideQuestion.note`)})]})}function Ci(e){let[t,n]=(0,Q.useState)(null),r=(0,Q.useRef)(null),i=(0,Q.useCallback)(()=>{r.current?.abort(),r.current=null},[]),a=(0,Q.useCallback)(()=>{i(),n(null)},[i]);return(0,Q.useEffect)(()=>a,[e,a]),{state:t,ask:(0,Q.useCallback)(t=>{i();let a=new AbortController;r.current=a;let o=()=>r.current===a;n({question:t,answer:``,status:`streaming`,error:``,toolCallIgnored:!1}),X.askSideQuestion(e,t,{signal:a.signal,onDelta:e=>{o()&&n(t=>t&&{...t,answer:t.answer+e})}}).then(e=>{o()&&(r.current=null,n(t=>t&&{...t,answer:e.text||t.answer,status:`done`,toolCallIgnored:e.toolCallIgnored}))}).catch(e=>{o()&&(r.current=null,n(t=>t&&{...t,status:`error`,error:e instanceof Error?e.message:String(e)}))})},[i,e]),dismiss:a}}var wi=new Set([`user`,`assistant`,`summary`,`compaction`,`position`]);function Ti(e,t,n){return t===`labeled`?!!e.label:t===`branches`?n||wi.has(e.kind):!1}var Ei=new Set([`tool`,`tool-call`]);function Di(e){let t=[],n=new Map;for(let r of e){let e=r.parentId?n.get(r.parentId):void 0,i={...r,children:[]};n.set(r.id,i),e?e.children.push(i):t.push(i)}return t}function Oi(e){let t=[],n=[...e].reverse();for(;n.length>0;){let e=n.pop();if(e){t.push(e);for(let t=e.children.length-1;t>=0;--t)n.push(e.children[t])}}return t}function ki(e,t){let n=[],r=new Map;for(let i of Oi(e)){let e=i.parentId&&r.get(i.parentId)||null;if(!t(i)){r.set(i.id,e);continue}let a={...i,children:[]};r.set(i.id,a),e?e.children.push(a):n.push(a)}return n}function Ai(e){let t=[e],n=e;for(;n.children.length===1;)n=n.children[0],t.push(n);let r={id:e.id,nodes:t,children:[],active:t.some(e=>e.active)},i=[{segment:r,children:n.children}];for(;i.length>0;){let e=i.pop();if(e)for(let t of e.children){let n=[t],r=t;for(;r.children.length===1;)r=r.children[0],n.push(r);let a={id:t.id,nodes:n,children:[],active:n.some(e=>e.active)};e.segment.children.push(a),i.push({segment:a,children:r.children})}}return r}function ji(e){return e.kind===`user`?Te:e.kind===`assistant`?V:e.kind===`tool`||e.kind===`tool-call`?_t:e.kind===`settings`?Je:e.kind===`label`?pt:e.kind===`summary`||e.kind===`compaction`?ce:e.kind===`position`?Re:e.label?xr:Ve}function Mi({nodes:e,viewportRef:t,selectedId:n,typeLabel:r,stateLabel:i,onSelect:a}){let o=Gn({count:e.length,getScrollElement:()=>t.current,estimateSize:()=>64,getItemKey:t=>e[t]?.id??`mobile-tree-node-${t}`,overscan:12,useAnimationFrameWithResizeObserver:!0});return(0,Q.useEffect)(()=>{if(!n)return;let t=e.findIndex(e=>e.id===n);t>=0&&o.scrollToIndex(t,{align:`center`})},[e,n,o]),(0,$.jsx)(`div`,{className:`relative w-full`,style:{height:`${o.getTotalSize()}px`},children:o.getVirtualItems().map(t=>{let o=e[t.index],s=ji(o);return(0,$.jsx)(`div`,{className:`absolute top-0 left-0 w-full px-3 py-1`,style:{transform:`translateY(${t.start}px)`},children:(0,$.jsxs)(`button`,{type:`button`,className:`session-tree-node relative grid items-center gap-2 rounded-sm border border-stroke bg-panel text-left text-content transition-colors duration-(--d-fast) hover:bg-surface-subtle [&.selected]:border-key-border [&.selected]:bg-key [&.selected]:shadow-key [&.selected]:before:absolute [&.selected]:before:inset-y-2 [&.selected]:before:-left-px [&.selected]:before:w-[3px] [&.selected]:before:rounded-r-[3px] [&.selected]:before:bg-star min-h-14 w-full grid-cols-[34px_minmax(0,1fr)_auto] py-2 pr-2.5 pl-1 ${o.id===n?` selected`:``}${o.active?` active`:``}${o.leaf?` leaf`:``}`,"data-kind":o.kind,"data-pisper-tree-entry":o.id,onClick:()=>a(o.id),children:[(0,$.jsx)(`span`,{className:`session-tree-marker relative z-[2] grid size-6 place-items-center justify-self-center rounded-sm bg-surface-muted text-content-secondary [.session-tree-node[data-kind='tool']_&]:bg-warning-soft [.session-tree-node[data-kind='tool']_&]:text-warning-strong [.session-tree-node.leaf_&]:bg-star [.session-tree-node.leaf_&]:text-on-accent [.session-tree-mark.active_&]:bg-star-soft [.session-tree-mark.active_&]:text-star-strong`,children:(0,$.jsx)(s,{size:14})}),(0,$.jsxs)(`span`,{className:`session-tree-node-copy flex min-w-0 flex-col gap-0.5 [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_strong]:truncate [&_strong]:text-sm [&_strong]:font-medium`,children:[(0,$.jsx)(`strong`,{children:o.label||o.text||r(o)}),(0,$.jsx)(`small`,{children:o.label&&o.text?o.text:r(o)})]}),(0,$.jsxs)(`span`,{className:`session-tree-node-state inline-flex min-w-0 shrink-0 items-center gap-1 text-xs text-content-muted [.session-tree-node.leaf_&]:text-accent-fg`,children:[o.label&&(0,$.jsx)(xr,{size:12}),i(o)]})]})},t.key)})})}function Ni({segment:e,viewportRef:t,selectedId:n,typeLabel:r,stateLabel:i,onSelect:a}){let{nodes:o,children:s}=e,c=o.length>120,l=Gn({count:o.length,getScrollElement:()=>t.current,estimateSize:()=>56,getItemKey:e=>o[e]?.id??`tree-node-${e}`,overscan:12,scrollMargin:26,enabled:c,useAnimationFrameWithResizeObserver:!0}),u=e=>{let t=ji(e);return(0,$.jsxs)(`button`,{type:`button`,className:`session-tree-node relative grid items-center gap-2 rounded-sm border border-stroke bg-panel text-left text-content transition-colors duration-(--d-fast) hover:bg-surface-subtle [&.selected]:border-key-border [&.selected]:bg-key [&.selected]:shadow-key [&.selected]:before:absolute [&.selected]:before:inset-y-2 [&.selected]:before:-left-px [&.selected]:before:w-[3px] [&.selected]:before:rounded-r-[3px] [&.selected]:before:bg-star z-[1] min-h-12 w-[220px] cursor-pointer grid-cols-[30px_minmax(0,1fr)_auto] py-1.5 pr-2 pl-0.5 ${e.id===n?` selected`:``}${e.active?` active`:``}${e.leaf?` leaf`:``}`,"data-kind":e.kind,"data-pisper-tree-entry":e.id,onClick:()=>a(e.id),children:[(0,$.jsx)(`span`,{className:`session-tree-marker relative z-[2] grid size-6 place-items-center justify-self-center rounded-sm bg-surface-muted text-content-secondary [.session-tree-node[data-kind='tool']_&]:bg-warning-soft [.session-tree-node[data-kind='tool']_&]:text-warning-strong [.session-tree-node.leaf_&]:bg-star [.session-tree-node.leaf_&]:text-on-accent [.session-tree-mark.active_&]:bg-star-soft [.session-tree-mark.active_&]:text-star-strong`,children:(0,$.jsx)(t,{size:14})}),(0,$.jsxs)(`span`,{className:`session-tree-node-copy flex min-w-0 flex-col gap-0.5 [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_strong]:truncate [&_strong]:text-sm [&_strong]:font-medium`,children:[(0,$.jsx)(`strong`,{children:e.label||e.text||r(e)}),(0,$.jsx)(`small`,{children:e.label&&e.text?e.text:r(e)})]}),(0,$.jsxs)(`span`,{className:`session-tree-node-state inline-flex min-w-0 shrink-0 items-center gap-1 text-xs text-content-muted [.session-tree-node.leaf_&]:text-accent-fg`,children:[e.label&&(0,$.jsx)(xr,{size:12}),i(e)]})]},e.id)};return(0,Q.useEffect)(()=>{if(!c||!n)return;let e=o.findIndex(e=>e.id===n);e<0||l.scrollToIndex(e,{align:`center`})},[n,o,c,l]),(0,$.jsxs)(`div`,{className:`session-tree-segment relative flex min-w-[220px] flex-col items-center ${e.active?` active`:``}`,children:[(0,$.jsx)(`div`,{className:`session-tree-track relative z-[1] grid w-[220px] gap-2 before:absolute before:top-[22px] before:bottom-[22px] before:left-1/2 before:z-0 before:w-px before:bg-stroke-strong [.session-tree-segment.active_>_&::before]:bg-control`,children:c?(0,$.jsx)(`div`,{className:`relative w-[220px]`,style:{height:`${l.getTotalSize()}px`},children:l.getVirtualItems().map(e=>(0,$.jsx)(`div`,{className:`absolute top-0 left-0 w-[220px]`,style:{top:`${e.start-26}px`},children:u(o[e.index])},e.key))}):o.map(u)}),s.length>0&&(0,$.jsx)(`div`,{className:`session-tree-children relative flex items-start justify-center pt-7 before:absolute before:top-0 before:left-1/2 before:h-3.5 before:w-px before:bg-stroke-strong [.session-tree-segment.active_>_&::before]:bg-control`,children:s.map(e=>(0,$.jsx)(`div`,{className:`session-tree-child relative flex px-3 pt-3.5 before:absolute before:top-0 before:right-1/2 before:h-3.5 before:w-1/2 before:border-t before:border-stroke-strong after:absolute after:top-0 after:left-1/2 after:h-3.5 after:w-1/2 after:border-t after:border-l after:border-stroke-strong [&:first-child::before]:border-t-transparent [&:last-child::after]:border-t-transparent [&.active]:before:border-control [&.active]:after:border-control [&.active:first-child::before]:border-t-transparent [&.active:last-child::after]:border-t-transparent${e.active?` active`:``}`,children:(0,$.jsx)(Ni,{segment:e,viewportRef:t,selectedId:n,typeLabel:r,stateLabel:i,onSelect:a})},e.id))})]})}function Pi({view:e,onViewChange:t,showAllEntries:n,onShowAllEntriesChange:r,query:i,onQueryChange:a,loading:s,error:c,mobileLayout:l,viewportRef:u,segments:d,visibleNodes:f,selectedId:p,typeLabel:m,stateLabel:h,onSelect:g,visibleMarks:_,marksLoading:v,openingMark:y,onOpenMark:b,confirmingMark:x,onConfirmMark:S,onCancelMark:C}){let{t:w,language:T}=o(),E=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{x&&E.current?.focus()},[x]);let D=e=>{let t=Date.parse(e);return Number.isFinite(t)?new Intl.DateTimeFormat(T,{dateStyle:`medium`,timeStyle:`short`}).format(t):w(`navigation:appOverlays.unknownTime`)};return(0,$.jsxs)(`div`,{className:`chat-resource-browser flex min-h-0 min-w-0 flex-col bg-transparent session-tree-browser`,children:[(0,$.jsx)(Mt,{className:`chat-resource-tabs session-tree-tabs px-3 pt-3`,value:e,onValueChange:e=>t(e),children:(0,$.jsxs)(jt,{children:[(0,$.jsx)(At,{value:`branches`,children:w(`chat:sessionTree.branches`)}),(0,$.jsx)(At,{value:`labeled`,children:w(`chat:sessionTree.labeled`)}),(0,$.jsx)(At,{value:`marks`,children:w(`chat:sessionTree.allMarks`)})]})}),(0,$.jsxs)(On,{className:`chat-resource-search mx-3 mt-2 w-auto flex-none`,children:[(0,$.jsx)(Dn,{children:(0,$.jsx)(qe,{"aria-hidden":`true`})}),(0,$.jsx)(En,{value:i,disabled:!!y,"aria-label":w(`chat:sessionTree.searchPlaceholder`),onChange:e=>a(e.target.value),placeholder:w(`chat:sessionTree.searchPlaceholder`)})]}),e===`branches`&&(0,$.jsxs)(`label`,{className:`mx-3 mt-2 flex min-h-6 flex-none cursor-pointer items-center gap-2 text-xs text-content-secondary max-[650px]:min-h-11`,children:[(0,$.jsx)(bt,{checked:n,onCheckedChange:e=>r(e===!0),"data-session-tree-all-entries":!0}),w(`chat:sessionTree.showAllEntries`)]}),e===`marks`?(0,$.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 basis-0 flex-col gap-2 overflow-auto overscroll-contain px-3.5 py-3`,"data-testid":`session-tree-marks-list`,children:[c&&(0,$.jsx)(`p`,{role:`alert`,className:`mx-0.5 text-xs text-danger`,children:c}),v?(0,$.jsx)(`p`,{className:`grid min-h-[180px] place-items-center text-xs text-content-muted`,children:w(`chat:sessionTree.loadingMarks`)}):_.length?_.map(e=>(0,$.jsxs)(Q.Fragment,{children:[(0,$.jsxs)(`button`,{type:`button`,className:`session-tree-mark grid cursor-pointer grid-cols-[30px_minmax(0,1fr)_auto] items-center gap-2 rounded-sm border border-stroke bg-panel py-2 pr-2.5 pl-1 text-left text-content transition-colors duration-(--d-fast) hover:bg-surface-subtle [&.active]:border-star-border [&_>_em]:rounded-xs [&_>_em]:bg-star-soft [&_>_em]:px-1.5 [&_>_em]:py-0.5 [&_>_em]:text-xs [&_>_em]:text-star-strong [&_>_em]:not-italic ${e.active?` active`:``}`,"aria-expanded":e.active?void 0:x===e,"data-session-tree-mark":e.active?`active`:`other-branch`,disabled:!!y,"aria-busy":y===e,onClick:()=>b(e),children:[(0,$.jsx)(`span`,{className:`session-tree-marker relative z-[2] grid size-6 place-items-center justify-self-center rounded-sm bg-surface-muted text-content-secondary [.session-tree-node[data-kind='tool']_&]:bg-warning-soft [.session-tree-node[data-kind='tool']_&]:text-warning-strong [.session-tree-node.leaf_&]:bg-star [.session-tree-node.leaf_&]:text-on-accent [.session-tree-mark.active_&]:bg-star-soft [.session-tree-mark.active_&]:text-star-strong`,children:y===e?(0,$.jsx)(It,{className:`size-3.5`}):(0,$.jsx)(pt,{size:14})}),(0,$.jsxs)(`span`,{className:`session-tree-node-copy flex min-w-0 flex-col gap-0.5 [&_small]:truncate [&_small]:text-xs [&_small]:text-content-muted [&_strong]:truncate [&_strong]:text-sm [&_strong]:font-medium`,children:[(0,$.jsx)(`strong`,{children:e.label}),(0,$.jsx)(`small`,{children:e.sessionName||w(`navigation:appOverlays.untitledChat`)}),(0,$.jsx)(`small`,{children:w(`chat:sessionTree.markTimes`,{sessionTime:D(e.sessionModified),nodeTime:D(e.nodeTimestamp)})})]}),y===e?(0,$.jsx)(`em`,{children:w(`chat:sessionTree.navigating`)}):e.active&&(0,$.jsx)(`em`,{children:w(`chat:sessionTree.markActive`)})]}),x===e&&(0,$.jsxs)(`div`,{role:`group`,"aria-label":w(`chat:sessionTree.otherBranchTitle`),className:`-mt-1 grid gap-2 rounded-sm border border-stroke bg-surface-subtle p-2.5 text-xs text-content-secondary`,"data-session-tree-mark-confirm":!0,children:[(0,$.jsxs)(`p`,{className:`flex items-start gap-1.5 text-content`,children:[(0,$.jsx)(pe,{size:13,className:`mt-0.5 flex-none`,"aria-hidden":`true`}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`strong`,{className:`font-medium`,children:w(`chat:sessionTree.otherBranchTitle`)}),(0,$.jsx)(`span`,{className:`block text-content-muted`,children:w(`chat:sessionTree.otherBranchMessage`)})]})]}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,$.jsx)(Y,{type:`button`,size:`sm`,variant:`ghost`,className:`max-[650px]:h-11`,onClick:C,children:w(`common:ui.cancel`)}),(0,$.jsx)(Y,{ref:E,type:`button`,size:`sm`,className:`max-[650px]:h-11`,onClick:()=>S(e),children:w(`chat:sessionTree.switchBranch`)})]})]})]},`${e.sessionId}:${e.entryId}`)):(0,$.jsx)(`p`,{className:`grid min-h-[180px] place-items-center text-xs text-content-muted`,children:w(`chat:sessionTree.noMarksYet`)})]}):(0,$.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 basis-0 overflow-auto overscroll-contain [scrollbar-gutter:stable]`,"data-testid":`session-tree-list`,ref:u,children:d.length>0?l?(0,$.jsx)(Mi,{nodes:f,viewportRef:u,selectedId:p,typeLabel:m,stateLabel:h,onSelect:g}):(0,$.jsx)(`div`,{className:`session-tree-canvas flex w-max min-w-full items-start justify-center gap-9 px-7 pt-6.5 pb-12`,children:d.map(e=>(0,$.jsx)(Ni,{segment:e,viewportRef:u,selectedId:p,typeLabel:m,stateLabel:h,onSelect:g},e.id))}):(0,$.jsx)(`p`,{className:`grid min-h-[180px] place-items-center text-xs text-content-muted`,children:s?w(`chat:sessionTree.loading`):c||w(`chat:sessionTree.empty`)})})]})}function Fi({label:e,onClick:t}){return(0,$.jsxs)(Y,{variant:`secondary`,className:`w-full min-w-0`,title:e,onClick:t,children:[(0,$.jsx)(Ve,{size:13}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:e})]})}function Ii({mobileLayout:e,selected:t,loading:n,error:r,streaming:i,dataStreaming:a,parentSession:s,parentEntryId:c,childSessions:l,canLabel:u,canDerive:d,label:f,summarize:p,savingLabel:m,creatingChild:h,navigating:g,typeLabel:_,stateLabel:v,onBackToList:y,onLabelChange:b,onSummarizeChange:x,onSaveLabel:S,onRemoveLabel:C,onCreateChild:w,onNavigate:T,onRefresh:E,onOpenRelated:D}){let{t:O,language:k}=o();return(0,$.jsxs)(`div`,{className:`chat-resource-config session-tree-inspector flex min-h-0 min-w-0 flex-col gap-4 overflow-y-auto overscroll-contain bg-panel p-[18px] [&_>_p]:m-auto [&_>_p]:text-xs [&_>_p]:text-content-muted [&_p]:text-xs [&_p]:text-content-muted [&_strong]:text-[15px] [&_strong]:font-medium ${e?``:`border-l border-stroke-soft`}`,children:[e&&(0,$.jsx)(`div`,{className:`sticky top-0 z-[2] -mx-1.5 -mt-2 flex border-b border-stroke-soft bg-panel px-0.5 pb-2`,children:(0,$.jsxs)(Y,{variant:`ghost`,className:`min-h-11 justify-start px-2`,onClick:y,children:[(0,$.jsx)(te,{size:17}),O(`chat:sessionTree.backToNodes`)]})}),t?(0,$.jsxs)($.Fragment,{children:[(s||l.length>0)&&(0,$.jsxs)(`div`,{className:`session-tree-lineage flex flex-col gap-1.5 border-b border-stroke-soft pb-3 [&_>_strong]:text-xs [&_>_strong]:font-medium [&_>_strong]:text-content-muted [&_button]:justify-start [&_button]:text-left [&_button]:text-xs`,children:[(0,$.jsx)(`strong`,{children:O(`chat:sessionTree.conversationLineage`)}),s&&(0,$.jsx)(Fi,{label:O(`chat:sessionTree.returnToOriginalChat`,{name:s.name||O(`chat:chatPage.newChat`)}),onClick:()=>D(s,c)}),l.map(e=>(0,$.jsx)(Fi,{label:O(`chat:sessionTree.openSeparateChat`,{name:e.name||O(`chat:chatPage.newChat`)}),onClick:()=>D(e)},e.id))]}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`span`,{className:`session-tree-selection-kind mb-1 flex items-center justify-between gap-2 text-xs text-content-muted [&_em]:rounded-xs [&_em]:border [&_em]:border-star-border [&_em]:bg-star-soft [&_em]:px-1.5 [&_em]:py-0.5 [&_em]:font-medium [&_em]:text-star-strong [&_em]:not-italic`,children:[_(t),v(t)&&(0,$.jsx)(`em`,{children:v(t)})]}),(0,$.jsx)(`strong`,{children:t.label||_(t)}),(0,$.jsx)(`p`,{children:t.text||O(`chat:sessionTree.noPreview`)})]}),(0,$.jsxs)(`div`,{className:`chat-resource-inputs flex flex-col gap-3 [&_label]:grid [&_label]:gap-1.5 [&_label]:text-xs [&_label]:font-medium [&_label]:text-content-secondary`,children:[u&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`label`,{children:[(0,$.jsx)(`span`,{children:O(`chat:sessionTree.nodeLabel`)}),(0,$.jsx)(Tn,{value:f,maxLength:80,placeholder:O(`chat:sessionTree.labelPlaceholder`),onChange:e=>b(e.target.value)})]}),(0,$.jsxs)(Y,{variant:`secondary`,disabled:m||i||a,onClick:S,children:[(0,$.jsx)(pt,{size:14}),O(m?`chat:sessionTree.savingLabel`:`chat:sessionTree.saveLabel`)]}),!!t.label&&(0,$.jsxs)(Y,{variant:`secondary`,disabled:m||i||a,onClick:C,children:[(0,$.jsx)(mt,{size:14}),O(`chat:sessionTree.removeLabel`)]})]}),u&&(0,$.jsxs)(Y,{variant:`secondary`,disabled:h||i||a,onClick:w,children:[(0,$.jsx)(we,{size:14}),O(h?`chat:sessionTree.creatingChildChat`:`chat:sessionTree.createChildChat`)]}),d&&(0,$.jsxs)(`label`,{className:`session-tree-summary-option cursor-pointer grid-cols-[minmax(0,1fr)_auto] items-center [&_small]:col-span-full [&_small]:leading-relaxed [&_small]:font-normal [&_small]:text-content-muted`,children:[(0,$.jsx)(`span`,{children:O(`chat:sessionTree.abandonedBranchSummary`)}),(0,$.jsx)(kt,{checked:p,disabled:t.leaf||i||a,onCheckedChange:x,"data-session-tree-summary":!0}),(0,$.jsx)(`small`,{children:O(`chat:sessionTree.abandonedBranchSummaryHint`)})]})]}),d&&(0,$.jsx)(`p`,{children:O(`chat:sessionTree.sideEffectsRemain`)}),t.timestamp&&(0,$.jsx)(`p`,{children:new Intl.DateTimeFormat(k,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(t.timestamp))}),r&&(0,$.jsx)(`p`,{role:`alert`,className:`text-danger!`,children:r}),d&&(0,$.jsxs)(Y,{className:`chat-resource-confirm self-start`,disabled:g||t.leaf||i||a,onClick:T,children:[(0,$.jsx)(Re,{size:15}),g?O(`chat:sessionTree.navigating`):t.leaf?O(`chat:sessionTree.currentPosition`):O(`chat:sessionTree.continueFromNode`)]})]}):(0,$.jsx)(`p`,{children:n?O(`chat:sessionTree.loading`):r||O(`chat:sessionTree.chooseNode`)}),r&&!t&&(0,$.jsx)(Y,{variant:`secondary`,onClick:E,children:O(`chat:sessionTree.retry`)})]})}function Li({open:e,sessionId:t,streaming:n,onClose:r,onNavigated:i,onCreateChildSession:a,initialView:s=`branches`,returnFocusRef:c,notify:l}){let{t:u,language:d}=o(),f=D(),p=E(),m=f||p,[h,g]=(0,Q.useState)(null),[_,v]=(0,Q.useState)([]),[y,b]=(0,Q.useState)(`branches`),[x,S]=(0,Q.useState)(!1),[C,w]=(0,Q.useState)(`list`),[T,O]=(0,Q.useState)(``),[k,A]=(0,Q.useState)(``),[j,M]=(0,Q.useState)(``),[N,P]=(0,Q.useState)([]),[F,I]=(0,Q.useState)(!1),[L,R]=(0,Q.useState)(!1),[z,B]=(0,Q.useState)(null),[V,H]=(0,Q.useState)(null),[ee,U]=(0,Q.useState)(!1),[te,ne]=(0,Q.useState)(!1),[re,W]=(0,Q.useState)(!1),[ie,ae]=(0,Q.useState)(!1),[oe,se]=(0,Q.useState)(!1),[ce,G]=(0,Q.useState)(``),le=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{if(!e||!t)return;let n=!1;return b(s),w(`list`),O(``),ne(!0),G(``),Promise.all([X.getSessionTree(t),X.listSessions()]).then(([e,t])=>{n||(g(e),v(t.sessions||[]),A(e.leafId||e.nodes[0]?.id||``))}).catch(e=>{n||G(Z(e))}).finally(()=>{n||ne(!1)}),()=>{n=!0}},[e,t]),(0,Q.useEffect)(()=>{e||(g(null),v([]),A(``),w(`list`),M(``),B(null),H(null),U(!1),G(``))},[e]),(0,Q.useEffect)(()=>{if(!e||y!==`marks`||F)return;let t=!0;return R(!0),G(``),X.listSessionTreeLabels(500).then(e=>{t&&(P(e.labels||[]),I(!0))}).catch(e=>t&&G(Z(e))).finally(()=>t&&R(!1)),()=>{t=!1}},[e,y,F]);let ue=(0,Q.useMemo)(()=>{let e=T.trim().toLocaleLowerCase(d);return e?N.filter(t=>`${t.label} ${t.sessionName}`.toLocaleLowerCase(d).includes(e)):N},[N,d,T]),de=async(e,t=!1)=>{if(!z){if(!e.active&&!t){H(e);return}H(null),B(e),G(``);try{let t=null;if(!e.active){if(t=await X.navigateSessionTreeTarget(e.sessionId,e.entryId),t.cancelled){B(null);return}tr(e.sessionId)}Yt(e.sessionId,`open`,e.entryId),r(),t&&l&&or(e.sessionId,t,u(`chat:sessionTree.switchedBranch`),{notify:l,t:u})}catch(e){G(Z(e)),B(null)}}},fe=(0,Q.useMemo)(()=>Di(h?.nodes||[]),[h]),me=(0,Q.useCallback)(e=>({user:u(`chat:sessionTree.userMessage`),assistant:u(`chat:sessionTree.agentMessage`),tool:u(`chat:sessionTree.toolResult`),"tool-call":u(`chat:sessionTree.toolCall`),summary:u(`chat:sessionTree.branchSummary`),compaction:u(`chat:sessionTree.compactionSummary`),settings:u(`chat:sessionTree.settingsChange`),label:u(`chat:sessionTree.labelChange`),position:u(`chat:sessionTree.branchPosition`),extension:u(`chat:sessionTree.extensionEntry`),metadata:u(`chat:sessionTree.metadataEntry`),message:u(`chat:sessionTree.message`)})[e.kind]||e.type,[u]),he=(0,Q.useMemo)(()=>{let e=T.trim().toLocaleLowerCase(d);return ki(fe,t=>Ti(t,y,x)?!e||`${t.label} ${t.text} ${me(t)}`.toLocaleLowerCase(d).includes(e):!1)},[fe,d,T,x,me,y]),ge=(0,Q.useMemo)(()=>he.map(Ai),[he]),_e=(0,Q.useMemo)(()=>Oi(he),[he]),K=(0,Q.useMemo)(()=>Oi(fe),[fe]).find(e=>e.id===k)||null,ve=h?.lineage?.parentSessionId?_.find(e=>e.id===h.lineage?.parentSessionId):null,ye=(h?.lineage?.childSessionIds||[]).map(e=>_.find(t=>t.id===e)).filter(e=>!!e),be=K?.kind===`assistant`&&K.status===`completed`,xe=be,Se=K?!Ei.has(K.kind):!1;(0,Q.useEffect)(()=>{M(K?.label||``),U(!1)},[K?.id,K?.label]),(0,Q.useEffect)(()=>{if(k&&_e.some(e=>e.id===k))return;let e=[..._e].reverse().find(e=>e.active);A(e?.id||_e[0]?.id||``)},[k,_e]),(0,Q.useEffect)(()=>{if(!e||!k)return;let t=requestAnimationFrame(()=>{document.querySelector(`[data-testid="session-tree-list"] .session-tree-node.selected`)?.scrollIntoView({block:`center`})});return()=>cancelAnimationFrame(t)},[e,T,k,y,_e.length]);let Ce=async()=>{ne(!0),G(``);try{let e=await X.getSessionTree(t);g(e),A(e.leafId||e.nodes[0]?.id||``)}catch(e){G(Z(e))}finally{ne(!1)}},we=async()=>{if(!(!K||re)){W(!0),G(``);try{let e=await X.setSessionTreeLabel(t,K.id,j);g(e),rr(t,e)}catch(e){G(Z(e))}finally{W(!1)}}},Te=async()=>{if(!(!K||re)){W(!0),G(``);try{let e=await X.setSessionTreeLabel(t,K.id,``);g(e),rr(t,e)}catch(e){G(Z(e))}finally{W(!1)}}},Ee=async()=>{if(!(!K||!xe||oe)){se(!0),G(``);try{await a(K.id),r()}catch(e){G(Z(e))}finally{se(!1)}}},De=(e,t=``)=>{e.id&&(Yt(e.id,`open`,t),r())},Oe=async()=>{if(!(!K||ie||K.leaf||n||h?.streaming)){ae(!0),G(``);try{let e=await X.navigateSessionTree(t,K.id,ee);g(e),e.cancelled||(rr(t,e),await i(e.editorText),r(),l&&or(t,e,u(`chat:chatPage.branchedFromNode`),{notify:l,t:u}))}catch(e){G(Z(e))}finally{ae(!1)}}},ke=e=>e.leaf?u(`chat:sessionTree.current`):e.branchPoint?u(`chat:sessionTree.fork`):e.active?u(`chat:sessionTree.active`):``;return(0,$.jsx)(wn,{open:e,onOpenChange:e=>!e&&r(),children:(0,$.jsxs)(xn,{onCloseAutoFocus:e=>{let n=c?.current,r=n?.isConnected?n:document.getElementById(`task-${t}-more`);r?.closest(`[data-task-workspace]`)?.getAttribute(`data-active`)===`true`&&(e.preventDefault(),r.focus())},className:`chat-resource-dialog session-tree-dialog grid-rows-[auto_minmax(0,1fr)] gap-0 overflow-hidden border border-stroke bg-solid p-0 ${m?`!h-[calc(100dvh_-_16px)] !w-[calc(100vw_-_16px)] !max-w-none`:`!h-[min(760px,calc(100dvh_-_32px))] !w-[min(1120px,calc(100vw_-_32px))] !max-w-[1120px]`}`,showCloseButton:!1,children:[(0,$.jsxs)(`div`,{className:`chat-resource-head flex items-start justify-between gap-4 border-b border-stroke-soft px-[18px] pt-4 pb-3.5 max-[650px]:p-3.5 [&_[data-slot='dialog-description']]:mt-0.5 [&_[data-slot='dialog-description']]:text-xs [&_[data-slot='dialog-description']]:text-content-muted [&_[data-slot='dialog-title']]:text-base [&_[data-slot='dialog-title']]:font-semibold`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`session-tree-title flex items-center gap-2`,children:[(0,$.jsx)(pe,{className:`size-4 text-content-muted`,strokeWidth:1.75,"aria-hidden":`true`}),(0,$.jsx)(Sn,{children:u(`chat:sessionTree.title`)})]}),(0,$.jsx)(bn,{children:u(`chat:sessionTree.description`,{nodes:h?.nodeCount||0,branches:h?.branchCount||0})})]}),(0,$.jsx)(Y,{type:`button`,variant:`ghost`,size:`icon`,className:`max-[650px]:size-11`,"aria-label":u(`common:ui.closeDialog`),title:u(`common:ui.closeDialog`),onClick:r,children:(0,$.jsx)(vt,{size:16})})]}),(0,$.jsxs)(`div`,{className:`chat-resource-body session-tree-layout grid min-h-0 overflow-hidden bg-background ${m?`grid-cols-1 grid-rows-[minmax(0,1fr)]`:`!grid-cols-[minmax(0,1fr)_292px]`}`,children:[(!m||C===`list`)&&(0,$.jsx)(Pi,{view:y,onViewChange:e=>{b(e),H(null),w(`list`)},showAllEntries:x,onShowAllEntriesChange:S,query:T,onQueryChange:O,loading:te,error:ce,mobileLayout:m,viewportRef:le,segments:ge,visibleNodes:_e,selectedId:k,typeLabel:me,stateLabel:ke,onSelect:e=>{A(e),m&&w(`detail`)},visibleMarks:ue,marksLoading:L,openingMark:z,onOpenMark:e=>void de(e),confirmingMark:V,onConfirmMark:e=>void de(e,!0),onCancelMark:()=>H(null)}),y!==`marks`&&(!m||C===`detail`)&&(0,$.jsx)(Ii,{mobileLayout:m,selected:K,loading:te,error:ce,streaming:n,dataStreaming:!!h?.streaming,parentSession:ve??null,parentEntryId:h?.lineage?.sourceEntryId||``,childSessions:ye,canLabel:be,canDerive:Se,label:j,summarize:ee,savingLabel:re,creatingChild:oe,navigating:ie,typeLabel:me,stateLabel:ke,onBackToList:()=>w(`list`),onLabelChange:M,onSummarizeChange:U,onSaveLabel:()=>void we(),onRemoveLabel:()=>void Te(),onCreateChild:()=>void Ee(),onNavigate:()=>void Oe(),onRefresh:()=>void Ce(),onOpenRelated:(e,t)=>De(e,t??``)})]})]})})}function Ri({visible:e,open:t,sessionId:n,streaming:r,revision:i,pulseToken:a,onOpenChange:s,onNavigated:c,onCreateChildSession:l,notify:u,children:d}){let{t:f}=o(),p=er(n,{enabled:e,streaming:r,revision:i})?.branchCount??0,[m,h]=(0,Q.useState)(`branches`),[g,_]=(0,Q.useState)(!1),v=(0,Q.useRef)(0),y=(0,Q.useRef)(null);(0,Q.useEffect)(()=>()=>cancelAnimationFrame(v.current),[]),(0,Q.useEffect)(()=>{if(!a)return;_(!0);let e=window.setTimeout(()=>_(!1),1800);return()=>window.clearTimeout(e)},[a]);let b=p>0&&(0,$.jsx)(`i`,{"aria-hidden":`true`,className:`ml-auto size-1.5 rounded-full bg-star`}),x=e?(0,$.jsxs)(St,{"aria-label":f(`chat:sessionTree.menu`),"aria-haspopup":`dialog`,"data-pisper-recall-pulse":g||void 0,onSelect:()=>{y.current=null,h(`branches`),cancelAnimationFrame(v.current),v.current=requestAnimationFrame(()=>s(!0))},children:[(0,$.jsx)(pe,{className:g?`motion-reduce:animate-none [animation:session-tree-new-node-pulse_1.8s_var(--ease-out)]`:void 0}),f(`chat:sessionTree.menu`),b]}):null;return(0,$.jsxs)($.Fragment,{children:[d(x,{branches:p,open:(e=`branches`,t=null)=>{y.current=t,h(e),cancelAnimationFrame(v.current),v.current=requestAnimationFrame(()=>s(!0))}}),e&&(0,$.jsx)(Li,{open:t,initialView:m,returnFocusRef:y,sessionId:n,streaming:r,onClose:()=>s(!1),onNavigated:c,onCreateChildSession:l,notify:u})]})}function zi({question:e,more:t,collapsed:n,onAnswer:r}){let{t:i}=o(),[a,s]=(0,Q.useState)(()=>e.questions.map(()=>({selected:[]}))),[c,l]=(0,Q.useState)(()=>e.questions.map(()=>!1)),[u,d]=(0,Q.useState)(!1),[f,p]=(0,Q.useState)(``),m=e.questions.length===1&&!e.questions[0].multiSelect,h=fn(e,a);if(n)return(0,$.jsxs)(`p`,{"data-question-more":!0,className:`flex min-h-8 min-w-0 items-center gap-2 rounded-(--r-md) border border-st-attn-border px-3 text-xs text-st-attn`,children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`size-2 flex-none rounded-full bg-st-attn-fill`}),i(`board:question.waiting`,{count:t+1})]});let g=async t=>{if(!u){d(!0),p(``);try{await r(e.id,t)}catch{p(i(`board:question.failed`)),d(!1)}}},_=e=>e.map((e,t)=>{let n=c[t]?e.other?.trim():``;return n?{selected:e.selected,other:n}:{selected:e.selected}}),v=(t,n)=>{let r=e.questions[t],i=a.map((e,i)=>{if(i!==t)return e;if(!r.multiSelect)return{...e,selected:[n]};let a=e.selected.includes(n)?e.selected.filter(e=>e!==n):[...e.selected,n];return{...e,selected:a}});s(i),m&&g({answers:_(i)})};return(0,$.jsxs)(`div`,{"data-question-card":e.id,role:`group`,"aria-label":i(`board:question.label`),"aria-busy":u||void 0,onKeyDown:t=>{if(t.altKey||t.metaKey||t.ctrlKey)return;let n=t.target;if(n.closest(`textarea, input`))return;let r=a.findIndex(e=>!e.selected.length&&!e.other?.trim()),i=r<0?e.questions.length-1:r,o=Number(t.key);if(Number.isInteger(o)&&o>=1&&o<=6){let n=e.questions[i]?.options[o-1];if(!n)return;t.preventDefault(),v(i,n.label)}else t.key===`Enter`&&!n.closest(`button`)&&h&&(t.preventDefault(),g({answers:_(a)}))},className:`flex max-h-[min(60vh,560px)] min-w-0 flex-col gap-3 overflow-y-auto rounded-(--r-lg) border border-st-attn-border bg-st-attn-soft px-3.5 py-3 text-foreground`,children:[(0,$.jsxs)(`p`,{className:`flex items-center gap-2 text-xs font-medium text-warning-strong`,children:[(0,$.jsx)(wr,{className:`size-4 flex-none`,"aria-hidden":`true`}),i(`board:question.title`),t>0&&(0,$.jsx)(`span`,{className:`font-normal text-content-muted`,children:i(`board:question.moreAfter`,{count:t})})]}),e.questions.map((t,n)=>{let r=a[n],o=t.header?`${t.header}:${t.question}`:t.question;return(0,$.jsxs)(`fieldset`,{"data-question-item":n,className:`flex min-w-0 flex-col gap-1.5`,children:[(0,$.jsxs)(`legend`,{className:`mb-1.5 flex min-w-0 flex-col gap-0.5`,children:[t.header&&(0,$.jsx)(`span`,{className:`text-xs font-medium text-content-muted`,children:t.header}),(0,$.jsx)(`span`,{className:`text-sm leading-5 text-content`,children:t.question})]}),(0,$.jsxs)(`div`,{role:t.multiSelect?`group`:`radiogroup`,"aria-label":o,className:`flex flex-wrap gap-1.5`,children:[t.options.map((e,i)=>{let a=r.selected.includes(e.label);return(0,$.jsxs)(`button`,{type:`button`,role:t.multiSelect?`checkbox`:`radio`,"aria-checked":a,disabled:u,"data-question-option":e.label,title:e.description||void 0,className:Ft(`flex min-h-9 max-w-full min-w-0 items-center gap-1.5 rounded-(--r-md) border px-2.5 py-1 text-left text-[13px] transition-colors duration-(--d-fast) focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus disabled:opacity-60 pointer-coarse:min-h-11`,a?`border-content bg-content text-panel`:`border-stroke-strong bg-panel text-content hover:bg-surface-hover`),onClick:()=>v(n,e.label),children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`font-mono text-[11px] opacity-60 pointer-coarse:hidden`,children:i+1}),(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(`span`,{className:`break-words`,children:e.label}),e.description&&(0,$.jsx)(`span`,{className:Ft(`text-xs break-words`,a?`opacity-80`:`text-content-muted`),children:e.description})]}),a&&t.multiSelect&&(0,$.jsx)(ee,{className:`size-3.5 flex-none`,"aria-hidden":`true`})]},e.label)}),(0,$.jsx)(`button`,{type:`button`,"aria-expanded":c[n],disabled:u,"data-question-other":n,className:Ft(`flex min-h-9 items-center rounded-(--r-md) border border-dashed border-stroke-strong px-2.5 text-[13px] text-content-secondary hover:bg-surface-hover focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus pointer-coarse:min-h-11`,c[n]&&`border-solid bg-panel`),onClick:()=>l(e=>e.map((e,t)=>t===n?!e:e)),children:i(`board:question.other`)})]}),c[n]&&(0,$.jsx)(`textarea`,{"aria-label":i(`board:question.otherLabel`,{question:t.question}),maxLength:pn.other,rows:2,disabled:u,value:r.other??``,placeholder:i(`board:question.otherPlaceholder`),className:`min-h-16 w-full resize-y rounded-(--r-md) border border-control bg-panel px-2.5 py-1.5 text-sm text-content outline-none focus:border-focus focus:ring-3 focus:ring-focus-ring max-[650px]:text-[16px]`,onChange:e=>{let t=e.target.value;s(e=>e.map((e,r)=>r===n?{...e,other:t}:e))},onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&h&&(e.preventDefault(),g({answers:_(a)}))}})]},`${e.id}-${n}`)}),f&&(0,$.jsx)(`p`,{role:`alert`,className:`text-xs text-[var(--danger)]`,children:f}),(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[(0,$.jsx)(Y,{type:`button`,variant:`ghost`,size:`sm`,disabled:u,"data-question-skip":!0,className:`pointer-coarse:min-h-11`,onClick:()=>void g({skip:!0}),children:i(`board:question.skip`)}),(!m||c[0])&&(0,$.jsx)(Y,{type:`button`,size:`sm`,disabled:u||!h,loading:u,"data-question-submit":!0,className:`pointer-coarse:min-h-11`,onClick:()=>void g({answers:_(a)}),children:i(`board:question.submit`)})]})]})}async function Bi({templatePrompt:e,configureHint:t,notify:n,onOpenModelSettings:r,onInsertPrompt:i}){try{let a=await S(`/api/visual/models`);a.image||a.video?i(e):(n?.(t),r?.())}catch{i(e)}}function Vi(e){return(e.target instanceof Element?e.target:null)?.closest(`[data-shortcut-recorder], [role="dialog"], [role="alertdialog"], [role="menu"], [role="listbox"], .xterm, .terminal-xterm, .terminal-panel, [data-terminal]`)?!0:Array.from(document.querySelectorAll(`[role="dialog"], [role="alertdialog"], dialog[open]`)).some(e=>e.getClientRects().length>0)}function Hi(e){let t=(0,Q.useRef)(e);t.current=e;let{enabled:n,binding:r}=e;(0,Q.useEffect)(()=>{if(!n||!r)return;let e=null,i=null,a=()=>{e=null,i&&(i=null,t.current.onCancel())},o=n=>{if(i&&n.key===`Escape`&&!n.isComposing){a(),n.preventDefault();return}!t.current.enabled||n.defaultPrevented||n.isComposing||n.keyCode===229||n.repeat||e||document.visibilityState===`hidden`||Vi(n)||!nn(n,r)||(e=n.code,t.current.onStart()&&(i={code:n.code,ctrl:n.ctrlKey,meta:n.metaKey,alt:n.altKey,shift:n.shiftKey},n.preventDefault()))},s=n=>{n.code===e&&(e=null),i&&(n.code===i.code||i.ctrl&&(!n.ctrlKey||n.code.startsWith(`Control`))||i.meta&&(!n.metaKey||n.code.startsWith(`Meta`))||i.alt&&(!n.altKey||n.code.startsWith(`Alt`))||i.shift&&(!n.shiftKey||n.code.startsWith(`Shift`)))&&(i=null,t.current.onRelease())},c=()=>{document.visibilityState===`hidden`&&a()};return window.addEventListener(`keydown`,o),window.addEventListener(`keyup`,s,!0),window.addEventListener(`blur`,a),document.addEventListener(`visibilitychange`,c),()=>{window.removeEventListener(`keydown`,o),window.removeEventListener(`keyup`,s,!0),window.removeEventListener(`blur`,a),document.removeEventListener(`visibilitychange`,c),a()}},[n,r])}function Ui(e){if(!e.length)return 0;let t=0;for(let n=0;n<e.length;n+=1)t+=e[n]*e[n];let n=Math.sqrt(t/e.length);return n<.0056?0:Math.min(1,Math.sqrt(n)*2.6)}function Wi(e=.35){let t=0;return{push(n){return t=t*(1-e)+n*e,t},reset(){t=0}}}function Gi(e,t=140){let n=e.trim();return n.length>t?`${n.slice(0,t-1)}…`:n}var Ki=16e3,qi=20,Ji=Ki*qi/1e3;function Yi(e,{onsetMs:t=80,minVoicedMs:n=160,silenceMs:r=900}={}){for(let e of[t,n,r])if(!Number.isFinite(e)||e<=0)throw Error(`Invalid VAD endpoint duration`);let i=e(),a=new Int16Array(Ji),o=0,s=0,c=0,l=0,u=!1,d=!1,f=!1,p=()=>u&&c*qi>=n;return{get hasSpeech(){return p()},acceptPcm(e){if(f||d)return!1;for(let n=0;n<e.length;n+=1){let f=Number.isFinite(e[n])?Math.max(-1,Math.min(1,e[n])):0;if(a[o++]=f*(f<0?32768:32767),o!==Ji)continue;o=0;let m=i.processFrame(a);if(m<0)throw Error(`VAD frame processing failed`);if(m===1)s+=1,c+=1,l=0,s*qi>=t&&(u=!0);else if(s=0,l+=1,u||(c=0),l*qi>=r){if(p())return d=!0,!0;u=!1,c=0}}return!1},reset(){f||(i.destroy(),i=e(),o=s=c=l=0,u=d=!1,a.fill(0))},dispose(){f||(f=!0,o=0,i.destroy())}}}async function Xi(e={}){let{default:n,VADMode:r}=await t(async()=>{let{default:e,VADMode:t}=await import(`./embedded-D2rqyswH.js`);return{default:e,VADMode:t}},[]),i=await n();return Yi(()=>new i(e.mode??r.AGGRESSIVE,Ki),e)}var Zi=()=>new DOMException(`Speech setup cancelled.`,`AbortError`);function Qi(e){let[t,n]=(0,Q.useState)(null),[r,i]=(0,Q.useState)(!1),[a,o]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)(``),l=(0,Q.useRef)(null),u=(0,Q.useRef)(!1),d=(0,Q.useRef)(0),f=(0,Q.useRef)(0),p=(0,Q.useRef)(0),m=(0,Q.useRef)(e);m.current=e;let h=(0,Q.useCallback)(e=>{d.current++,f.current++;let t=l.current;l.current=null,t&&(t.signal.removeEventListener(`abort`,t.abort),e?t.reject(e):t.resolve()),u.current&&(i(!1),o(!1))},[]),_=(0,Q.useCallback)(e=>{u.current&&(n(e),c(``),l.current&&hr(e,m.current).every(e=>e.status===`installed`)&&h())},[h]),v=(0,Q.useCallback)(async e=>{let t=d.current,n=++f.current,r=()=>u.current&&t===d.current&&n===f.current&&!e?.aborted;try{let t=await cr(e);r()&&_(t)}catch(e){if(r())throw e}},[_]);(0,Q.useEffect)(()=>(u.current=!0,v().catch(()=>{}),()=>{u.current=!1,h(Zi())}),[h,v]),(0,Q.useEffect)(()=>{if(!r)return;let e=new AbortController,t,n=async()=>{try{await v(e.signal)}catch(t){e.signal.aborted||c(t instanceof Error?t.message:String(t))}finally{e.signal.aborted||(t=setTimeout(()=>void n(),750))}};return n(),()=>{e.abort(),clearTimeout(t)}},[r,v]);let y=(0,Q.useCallback)(async e=>{if(g(e),!u.current)throw Zi();h(Zi());let t=++f.current;return new Promise((n,r)=>{let a=()=>{l.current===o&&h(e.reason||Zi())},o={signal:e,abort:a,resolve:n,reject:r};if(l.current=o,e.addEventListener(`abort`,a,{once:!0}),e.aborted){a();return}cr(e).then(n=>{!u.current||l.current!==o||e.aborted||(t===f.current&&_(n),l.current===o&&i(!0))},e=>{l.current===o&&h(e)})})},[_,h]),b=(0,Q.useCallback)(async e=>{let t=d.current,n=++p.current,r=()=>u.current&&t===d.current&&n===p.current;o(!0),c(``);try{await e(),r()&&await v()}catch(e){r()&&c(e instanceof Error?e.message:String(e))}finally{r()&&o(!1)}},[v]);return{catalog:t,open:r,loading:a,error:s,selectedVoice:t?.defaults.voice||``,ensureReady:y,models:t?hr(t,e):[],show:()=>{h(Zi()),i(!0),c(``)},close:()=>h(Zi()),download:e=>b(()=>pr(e)),cancelDownload:e=>b(()=>fr(e)),downloadAll:()=>b(async()=>{if(t)for(let e of hr(t,m.current))[`installed`,`downloading`,`verifying`].includes(e.status)||await pr(e.id)})}}var $i=8388608;function ea(e,t){return g(t),new Promise((n,r)=>{let i=()=>r(_(t));t.addEventListener(`abort`,i,{once:!0}),e.then(n,r).finally(()=>t.removeEventListener(`abort`,i))})}var ta=10,na=500;async function ra(e,t,n,r){for(let i=0;;i+=1){let a=await fetch(`/api/speech/synthesize`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e,voiceId:t,requestId:n}),signal:r});if(a.status!==409||i>=ta)return a;let o=await a.json().catch(()=>({}));if(!o.error||!/busy/i.test(o.error))return a;await ea(new Promise(e=>setTimeout(e,na)),r)}}async function ia(e){if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error||`Speech synthesis failed (${e.status}).`)}if(!e.headers.get(`content-type`)?.startsWith(`audio/wav`)||!e.body)throw Error(`Invalid speech audio response.`);let t=e.body.getReader(),n=[],r=0;try{for(;;){let{done:e,value:i}=await t.read();if(e)break;if(r+=i.byteLength,r>$i)throw Error(`Speech audio exceeds the supported limit.`);n.push(i)}}finally{await t.cancel().catch(()=>{}),t.releaseLock()}if(r<44)throw Error(`Speech audio is empty.`);let i=new Uint8Array(r),a=0;for(let e of n)i.set(e,a),a+=e.length;return i.buffer}async function aa(e,t,n,r){g(n);let i=h(n);try{await oa(e,t,i,r)}finally{i.abort(new DOMException(`Speech playback ended.`,`AbortError`)),i.dispose()}}async function oa(e,n,r,i){let{signal:a}=r,{speechSegments:o}=await ea(t(()=>import(`./speech-text-BTwYi9Sb.js`),__vite__mapDeps([114,86,1,2,3,83,84,85,29])),a);g(a);let s=(typeof e==`string`?(async function*(){yield*o(e)})():(await ea(t(()=>import(`./speech-stream-text-DF6aAUVb.js`),__vite__mapDeps([115,86,1,2,3,83,84,85,29,13,114])),a)).streamingSpeechSegments(e,a))[Symbol.asyncIterator](),c=!!window.__PISPER_MOBILE_APP__,l=new Set,u,d,f,p=e=>{(c?ur(`mobile_cancel_speech`,{requestId:e}):S(`/api/speech/cancel`,{method:`POST`,body:{requestId:e},timeout:3e3})).catch(()=>{})},m=()=>{for(let e of l)p(e);try{d?.stop()}catch{}f?.(a.reason||new DOMException(`Speech playback cancelled.`,`AbortError`))};a.addEventListener(`abort`,m,{once:!0});let _=e=>{g(a);let t=crypto.randomUUID();l.add(t);let r=(async()=>{if(c){let r=await ur(`mobile_synthesize_speech`,{text:e,voiceId:n,requestId:t});if(a.aborted&&(p(t),g(a)),!r||typeof r.audioId!=`string`||!r.audioId.trim()||r.audioId.length>128||!Number.isInteger(r.sampleRate)||r.sampleRate<8e3||r.sampleRate>48e3||!Number.isFinite(r.durationMs)||r.durationMs<=0||r.durationMs>45e3)throw Error(`Invalid native speech audio.`);return{requestId:t,native:r}}let r=h(a,6e4);try{let i=await ra(e,n,t,r.signal);return{requestId:t,wav:await ia(i)}}finally{r.dispose()}})();return r.catch(()=>{}),r};try{if(!c){u=new AudioContext({sampleRate:24e3});let e;try{await ea(Promise.race([u.resume(),new Promise((t,n)=>{e=setTimeout(()=>n(Error(`Audio playback is unavailable.`)),5e3)})]),a)}finally{clearTimeout(e)}}let e=async()=>{let e=await ea(s.next(),a);return e.done?void 0:_(e.value)},t=e(),n=!1;for(;;){let r=await ea(t,a);if(g(a),!r)break;if(t=e(),t.catch(()=>{}),n=!0,i?.(),r.native){if((await ea(ur(`mobile_play_speech`,{audioId:r.native.audioId,requestId:r.requestId}),a))?.completed!==!0)throw Error(`Speech playback was interrupted.`)}else{let e=await ea(u.decodeAudioData(r.wav),a);if(g(a),e.numberOfChannels!==1||!Number.isFinite(e.duration)||e.duration<=0||e.duration>45)throw Error(`Invalid speech audio duration.`);let t=u.createBufferSource();d=t,t.buffer=e,t.connect(u.destination);try{await new Promise((e,n)=>{f=n,t.onended=()=>e(),t.start()})}finally{f=void 0,t.onended=null,t.disconnect(),d=void 0}}l.delete(r.requestId),g(a)}if(!n)throw Error(`The reply has no speakable text.`)}finally{a.removeEventListener(`abort`,m),r.abort(new DOMException(`Speech playback ended.`,`AbortError`)),s.return?.(void 0).catch(()=>{});for(let e of l)p(e);try{d?.stop()}catch{}await u?.close().catch(()=>{})}}var sa={schemaVersion:1,scope:`Offline license texts and provenance notices for the catalogued speech resources and local derivatives. This document is not legal advice, commercial-use clearance, a complete training-data rights audit, or approval for redistribution or formal release. Packaging this small notice file does not package the large models or resolve pending obligations. Native sherpa binaries and their compiled or embedded dependencies require a separate license/linkage and source-delivery audit; switching TTS models does not prove the binaries contain no GPL components or satisfy their obligations.`,licenseIdsMeaning:`References identify retained license documents applicable to the described components or their stated source projects. Multiple references are not alternative dual-license choices and are not a complete SPDX expression. A repository declaration does not relicense unrelated bundled data.`,statusDefinitions:{confirmed:`The specific content or source match described in summary was verified; this is not a whole-chain rights guarantee.`,declared:`An upstream license declaration supports the classification, without a complete reproducible provenance proof.`,pending:`The listed provenance, rights, or distribution obligations remain unresolved even where a license declaration exists.`},pathScopes:{model:`Paths are relative to the original downloaded model root. A terminal /** matches every descendant; all other paths are exact.`,shared:`Paths are relative to the application's shared resource root.`},licenses:[{id:`apache-2.0`,name:`Apache License 2.0 (X-ASR source text)`,text:` Apache License
3
3
  Version 2.0, January 2004
4
4
  http://www.apache.org/licenses/
5
5
 
@@ -508,7 +508,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
508
508
  ## Dictionary. Further addictions and improvements are planned
509
509
  ## for forthcoming releases.
510
510
  ##
511
- `,sourceUrl:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/melo/text/cmudict.rep`,sha256:`08ee91f3c05c55160bdc599247ba53e5de8cc2597766fdb22b54a81cb24dd954`}],models:[{id:`x-asr-480ms-int8`,revision:`2026-06-05`,attribution:`X-ASR by Gilgamesh-J / GilgameshWind; trained using icefall and deployed with sherpa-onnx. The locked HF model card expressly covers model artifacts and declares Apache-2.0. The separately discovered GitHub license commit is not the locked HF revision. No root LICENSE or NOTICE was listed in the inspected HF tree; this is not proof that every historical distribution lacks NOTICE. Retain applicable upstream notices when found.`,archive:{url:`https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-x-asr-480ms-streaming-zipformer-transducer-zh-en-punct-int8-2026-06-05.tar.bz2`,sha256:`fa5f63d618e5a01526e275a358bb7772e403f84808a4769fba52cffd8160bf74`},groups:[{id:`xasr-weights`,pathScope:`model`,paths:[`encoder.int8.onnx`,`decoder.onnx`,`joiner.int8.onnx`],licenseIds:[`apache-2.0`],status:`pending`,summary:`Apache-2.0 is explicitly declared for X-ASR model artifacts. The sherpa export script describes icefall streaming ONNX export and INT8 quantization; installed file hashes match the catalog, but the 2026-06-05 archive-to-checkpoint/build identity is not established.`,pendingReasons:[`Exact checkpoint and source commits used to build the 2026-06-05 INT8 archive remain unverified; the export script downloads moving main URLs. Training-data rights are not fully audited.`],evidence:[{url:`https://hf-mirror.com/GilgameshWind/X-ASR-zh-en/resolve/689ff18c584d29910da37b6fe904db0c1489c9d1/README.md`,sha256:`7acc6f439d3e39e46de4298ccf8a8f6a483fdc5f9f5d08e61422b63760ec37b1`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/v1.13.7/scripts/zipformer-transducer/x-asr/export-streaming.sh`,sha256:`63b018fe72a29e9a41c6d4e358085b5ad1614e021c0d9f3c05a2d11f1dff0d81`}]},{id:`xasr-tokens`,pathScope:`model`,paths:[`tokens.txt`],licenseIds:[`apache-2.0`],status:`pending`,summary:`X-ASR token resource, not the SentencePiece or sherpa software. The punctuation export block downloads X-ASR-zh-en/zipformer/data/lang_5000_with_punctuation/tokens.txt. Catalog content SHA256: b818a60878b9aae978cbb8ad594acbd403d76d1af2e31ef4197c84e2dbdba27c.`,pendingReasons:[`The historical source revision for the token file in the 2026-06-05 archive is not pinned by the export script.`],evidence:[{url:`https://hf-mirror.com/GilgameshWind/X-ASR-zh-en/resolve/689ff18c584d29910da37b6fe904db0c1489c9d1/README.md`,sha256:`7acc6f439d3e39e46de4298ccf8a8f6a483fdc5f9f5d08e61422b63760ec37b1`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/v1.13.7/scripts/zipformer-transducer/x-asr/export-streaming.sh`,sha256:`63b018fe72a29e9a41c6d4e358085b5ad1614e021c0d9f3c05a2d11f1dff0d81`}]},{id:`xasr-bpe`,pathScope:`model`,paths:[`bpe.model`],licenseIds:[`apache-2.0`],status:`pending`,summary:`X-ASR BPE resource. The export script renames X-ASR-zh-en/zipformer/data/lang_5000_with_punctuation/bpe_punc.model to bpe.model. Its license classification comes from X-ASR, not from the software that reads the SentencePiece format.`,pendingReasons:[`The historical BPE source commit and exact archive build provenance remain unverified.`],evidence:[{url:`https://hf-mirror.com/GilgameshWind/X-ASR-zh-en/resolve/689ff18c584d29910da37b6fe904db0c1489c9d1/README.md`,sha256:`7acc6f439d3e39e46de4298ccf8a8f6a483fdc5f9f5d08e61422b63760ec37b1`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/v1.13.7/scripts/zipformer-transducer/x-asr/export-streaming.sh`,sha256:`63b018fe72a29e9a41c6d4e358085b5ad1614e021c0d9f3c05a2d11f1dff0d81`}]},{id:`xasr-bpe-vocab`,pathScope:`shared`,paths:[`speech-resources/xasr-bpe.vocab`],licenseIds:[`apache-2.0`],status:`pending`,summary:`Modified by Pisper: extracted the ordered SentencePiece pieces and scores as UTF-8 piece<TAB>score<LF> lines. This local text derivative retains the source resource license classification; it is not newly licensed as Pisper-owned model data. Original and derived hashes and generator are bound by xasr-bpe-extraction below.`,pendingReasons:[`The source BPE historical provenance remains pending as described in xasr-bpe. A text extraction does not resolve upstream rights.`],evidence:[{url:`https://hf-mirror.com/GilgameshWind/X-ASR-zh-en/resolve/689ff18c584d29910da37b6fe904db0c1489c9d1/README.md`,sha256:`7acc6f439d3e39e46de4298ccf8a8f6a483fdc5f9f5d08e61422b63760ec37b1`}]}],modifications:[{id:`xasr-bpe-extraction`,groupIds:[`xasr-bpe-vocab`],modifiedBy:`Pisper`,summary:`Local BPE text extraction, not retraining. The generator identity records the inspected repository implementation, not a claim about a historical upstream build date.`,source:{path:`bpe.model`,bytes:119265,sha256:`f87a38025a5fdd1e4e9591f6a44bb81295097ce0b80df6f4ab9f44e52c64ca5f`},derived:{path:`speech-resources/xasr-bpe.vocab`,bytes:61562,sha256:`01381aa0c3065832cb8d7462d529e3079a99be56c955ce93b4cb9b78e8aa34e5`},generator:{path:`scripts/speech-bpe.mjs`,sha256:`a1c85731aa3e0be89f04acc79830db784a9d43edb8af9f4fb723bb45bd725786`,method:`sentencePieceModelToVocab decodes ordered protobuf ModelProto.pieces and emits each piece, a tab, its finite score, and a newline without changing the BPE model.`}}]},{id:`vits-melo-tts-zh_en`,revision:`a0d5c6a264c0ef92d70d8661d8cc502d79627cd6`,archive:{url:`https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-melo-tts-zh_en.tar.bz2`,bytes:167006755,sha256:`e58351ed7149f290a54534538badd4077cdbe6fddc964b24d0bee870415d1514`},attribution:`MeloTTS by MyShell.ai; sherpa-onnx ONNX conversion. The retained software license is Copyright (c) 2024 MyShell.ai, MIT. The neural-weight repository separately declares MIT; dictionary and FST resources have separate declarations and pending provenance. Pisper selects the original single female voice via public sid 0 and uses the same original FP32 ONNX, tokens, mixed-language lexicon, dictionary and normalization files on Desktop, Android and iOS. No retraining, quantization, graph/metadata patch or voice-subset derivative is made. The unused new_heteronym.fst and 133-byte model.int8.onnx Git LFS pointer in the transport archive are drained but not installed; retained model files are unchanged. These choices do not imply upstream/speaker endorsement, redistribution approval or completed native-platform acceptance.`,groups:[{id:`melo-weights`,pathScope:`model`,paths:[`model.onnx`],licenseIds:[`mit-melo`],status:`pending`,summary:`The myshell-ai/MeloTTS-Chinese model card at af5d207a364ea4208c6f589c89f57f88414bdd16 declares license: mit for the model repository; this is separate evidence from the MeloTTS software MIT license. The sherpa conversion package carries the exact MyShell.ai MIT text, and original ONNX metadata declares MIT license, melo-vits version 2, Chinese + English, n_speakers=1 and speaker_id=1. The conversion README explicitly describes a single female Chinese+English speaker. sherpa maps public sid 0 to the internal metadata speaker_id; Pisper does not change the graph, metadata or speaker embedding.`,pendingReasons:[`Exact historical checkpoint, training/conversion commits and reproducible archive build identity have not been established; the inspected conversion workflow uses moving upstream references. Training-data permissions, individual speaker consent and applicable personality/publicity rights are not fully audited. The discovered model card revision is evidence of a declaration, not proof of the historical conversion input.`],evidence:[{url:`https://hf-mirror.com/myshell-ai/MeloTTS-Chinese/resolve/af5d207a364ea4208c6f589c89f57f88414bdd16/README.md`,sha256:`40b5b860bacbb3947cbef838719e660d2fe4961eba5b484290b4bedc0253e208`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://hf-mirror.com/csukuangfj/vits-melo-tts-zh_en/resolve/a0d5c6a264c0ef92d70d8661d8cc502d79627cd6/README.md`,sha256:`ae6e44dead53dfdbd5b4a77106226f3118eb910222b46cb5533a3860773fc6c7`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/export-onnx.py`,sha256:`c0be7727d59ad6ceaf39e909b4560b57e704091c69ac3fab6f2f2abfd931c916`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/run.sh`,sha256:`e2afb98d9028eded2983f780468337fc019a8306db926f89e3bdeed18af867bb`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/sherpa-onnx/csrc/offline-tts-vits-model.cc`,sha256:`060907349036d63b60d035843defe7078b83c8099e0d4de323446c7db0d653d0`}]},{id:`melo-tokens`,pathScope:`model`,paths:[`tokens.txt`],licenseIds:[`mit-melo`,`apache-2.0-sherpa`],status:`declared`,summary:`The sherpa Melo export writes enumerated model.hps symbols to tokens.txt. The original 655-byte token file is retained unchanged. Melo software is MIT; sherpa conversion code is Apache-2.0. These code declarations do not independently establish all underlying training-data rights.`,pendingReasons:[],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/export-onnx.py`,sha256:`c0be7727d59ad6ceaf39e909b4560b57e704091c69ac3fab6f2f2abfd931c916`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/LICENSE`,sha256:`cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30`}]},{id:`melo-cppjieba-dictionary`,pathScope:`model`,paths:[`dict/hmm_model.utf8`,`dict/idf.utf8`,`dict/jieba.dict.utf8`,`dict/pos_dict/char_state_tab.utf8`,`dict/pos_dict/prob_emit.utf8`,`dict/pos_dict/prob_start.utf8`,`dict/pos_dict/prob_trans.utf8`,`dict/README.md`,`dict/stop_words.utf8`],licenseIds:[`mit-cppjieba`],status:`confirmed`,summary:`Nine ordinary dictionary/README files are byte-identical to the separately HTTPS-downloaded CppJieba sherpa-onnx-2024-04-19 dict archive. The exact release source MIT license retains Copyright (c) 2013. This confirms the documented source-content match, not a whole-chain data-rights guarantee. The small Melo user.dict.utf8 is separately classified and is NOT the 829194-byte pypinyin-derived user dictionary from that source archive.`,pendingReasons:[],evidence:[{url:`https://ghfast.top/https://github.com/csukuangfj/cppjieba/releases/download/sherpa-onnx-2024-04-19/dict.tar.bz2`,sha256:`35c3877c9b9221a5b2d69bbf57d5dbf1ccbe5b7684c60eb42f93db6b2d494f26`},{url:`https://raw.githubusercontent.com/csukuangfj/cppjieba/f03dd931a00330c279c8590275850fd1f6749a18/LICENSE`,sha256:`ba898a14f729ba5e9965da34e3eecd5edd3795f2cc5d7c923b815ba79bb851b0`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/.github/workflows/export-melo-tts-to-onnx.yaml`,sha256:`fc90fc412fd6f3c8a7d593743372a077dd63b2c8ce0780ed9c3a7e05cc8b659e`}]},{id:`melo-user-dictionary`,pathScope:`model`,paths:[`dict/user.dict.utf8`],licenseIds:[`mit-cppjieba`,`mit-melo`],status:`pending`,summary:`Melo ships an unchanged 49-byte user dictionary containing four entries. It matches the locked Melo HF file but differs from the separately downloaded CppJieba release user dictionary. The package MIT text and CppJieba project MIT declaration are retained as source declarations, not proof that either automatically licenses every edit. This file is not attributed to the unrelated historical pypinyin-derived dictionary.`,pendingReasons:[`The exact historical source commit, modifier and license coverage for this 49-byte replacement have not been identified. Retain applicable modifier notices when established.`],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/.github/workflows/export-melo-tts-to-onnx.yaml`,sha256:`fc90fc412fd6f3c8a7d593743372a077dd63b2c8ce0780ed9c3a7e05cc8b659e`},{url:`https://raw.githubusercontent.com/csukuangfj/cppjieba/f03dd931a00330c279c8590275850fd1f6749a18/LICENSE`,sha256:`ba898a14f729ba5e9965da34e3eecd5edd3795f2cc5d7c923b815ba79bb851b0`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://huggingface.co/csukuangfj/vits-melo-tts-zh_en/resolve/a0d5c6a264c0ef92d70d8661d8cc502d79627cd6/dict/user.dict.utf8`,sha256:`495bbf49270408a1234690e1e6a97328f30a482a7a72aa769e8a12e8714b0c62`}]},{id:`melo-english-lexicon`,pathScope:`model`,paths:[`lexicon.txt`],licenseIds:[`cmudict-0.6-1998`,`mit-melo`,`apache-2.0-sherpa`],status:`pending`,summary:`The English portion is generated by the sherpa Melo export from melo.text.english.eng_dict and refine_syllables, lowercasing words and adding language tone offsets plus kaldi/SF entries. The inspected Melo source reads cmudict.rep or a cached pickle. cmudict.rep contains its own Copyright 1998 Carnegie Mellon University unrestricted research/commercial permission and attribution notice, retained verbatim in cmudict-0.6-1998. This is NOT a substitution of a modern CMUdict BSD license. The retained notice hash covers the complete original comment header; the evidence hash covers the complete 3969309-byte source file. No package script or pickle was executed.`,pendingReasons:[`The precise historical dictionary/cache inputs and all intervening modifications used for this lexicon have not been pinned or reproduced. Trace cached-data equivalence and retain applicable original and modifier notices.`],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/export-onnx.py`,sha256:`c0be7727d59ad6ceaf39e909b4560b57e704091c69ac3fab6f2f2abfd931c916`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/melo/text/english.py`,sha256:`28527f574511bfc13fe1f2f6bbb5bfe4072c06e1c7e9b69598138aef81b9905b`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/melo/text/cmudict.rep`,sha256:`d127b5ce8b8e695732701e8efde04b9b0fa11991218b1fb9d21bd0c9264636aa`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/LICENSE`,sha256:`cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30`}]},{id:`melo-chinese-lexicon`,pathScope:`model`,paths:[`lexicon.txt`],licenseIds:[`mit-pypinyin`,`mit-melo`,`apache-2.0-sherpa`],status:`pending`,summary:`The Chinese portion is generated by the sherpa Melo export from pypinyin character/phrase dictionaries, lazy_pinyin and the Melo pinyin-to-symbol map. Melo code is MIT, sherpa conversion code Apache-2.0, and pypinyin declares MIT. Those software declarations do not relicense external dictionary inputs. The same 6837671-byte mixed-language lexicon is used unchanged on every platform.`,pendingReasons:[`Pin historical pypinyin versions, character/phrase JSON data and Melo phoneme mapping, reproduce the output and trace the actual underlying source-data terms. No particular Zdic, CC-CEDICT or Unihan license is asserted without proof of the actual input chain.`],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/export-onnx.py`,sha256:`c0be7727d59ad6ceaf39e909b4560b57e704091c69ac3fab6f2f2abfd931c916`},{url:`https://raw.githubusercontent.com/mozillazg/python-pinyin/8595294b1a97845e30f11ecfdb3caa4e61ac3988/pypinyin/pinyin_dict.py`,sha256:`245c1f70509432b289cde1f938157cd5ff1372d1d083b577d5fab72b4dfcda08`},{url:`https://raw.githubusercontent.com/mozillazg/python-pinyin/8595294b1a97845e30f11ecfdb3caa4e61ac3988/pypinyin/phrases_dict.py`,sha256:`3f6f39bbca68d8d1676ea463cd4620b934b03160cc5042fb9d9007b8f3a80b9e`},{url:`https://raw.githubusercontent.com/mozillazg/python-pinyin/8595294b1a97845e30f11ecfdb3caa4e61ac3988/LICENSE.txt`,sha256:`1e6c90014b4912815c296ee64bb6f6280af47e6d4c5d80e86232dfc5defe764c`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`}]},{id:`melo-normalization-fsts`,pathScope:`model`,paths:[`date.fst`,`number.fst`,`phone.fst`],licenseIds:[`apache-2.0-sherpa`],status:`pending`,summary:`All three FSTs are byte-identical to the separately downloaded data/date.fst, data/number.fst and data/phone.fst at csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06 revision 57345c004e13ed640e408c4c29ab56187b18f065, the source repository named by the Melo packaging workflow. That source model card declares Apache-2.0; the full Apache text is retained from sherpa. Neither the OpenFst software license nor the Melo neural-weight MIT declaration independently grants rights to these FST data.`,pendingReasons:[`Exact editable generation rules, compiler/source revisions, underlying data provenance and applicable author/modifier notices remain unverified. No standalone FST LICENSE/NOTICE or complete reproducible source chain was found in the inspected source tree.`],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/.github/workflows/export-melo-tts-to-onnx.yaml`,sha256:`fc90fc412fd6f3c8a7d593743372a077dd63b2c8ce0780ed9c3a7e05cc8b659e`},{url:`https://hf-mirror.com/csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06/resolve/57345c004e13ed640e408c4c29ab56187b18f065/README.md`,sha256:`98b45ea81164d1e1a1dd82255207053b15cd6c69d922a1c5cf3387ce604d4b74`},{url:`https://hf-mirror.com/csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06/resolve/57345c004e13ed640e408c4c29ab56187b18f065/data/date.fst`,sha256:`eb8aa079ae3cb81d8f4404992f39d61a0cb990947512b5b8d1e54d1f6980e718`},{url:`https://hf-mirror.com/csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06/resolve/57345c004e13ed640e408c4c29ab56187b18f065/data/number.fst`,sha256:`743f402181fcfebf76cc2f0546b71fa26476e626fbe4e460fb7b4c3a7a8bd5bd`},{url:`https://hf-mirror.com/csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06/resolve/57345c004e13ed640e408c4c29ab56187b18f065/data/phone.fst`,sha256:`1ac2b6fa56b1442320c4de7db08353bab8963a2b57f365eebcdd3a2d3562f8d7`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/LICENSE`,sha256:`cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30`}]},{id:`melo-package-notices`,pathScope:`model`,paths:[`LICENSE`,`README.md`],licenseIds:[`mit-melo`],status:`confirmed`,summary:`LICENSE is byte-identical to the original MyShell.ai MIT text (Copyright (c) 2024 MyShell.ai), including its exact final newline behavior. README explicitly identifies the single female Chinese+English speaker. The package-level MIT file is not a blanket grant for every bundled dictionary or FST. No upstream NOTICE was listed in the inspected conversion and weight repository trees; this is not proof that none ever existed.`,pendingReasons:[],evidence:[{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://hf-mirror.com/csukuangfj/vits-melo-tts-zh_en/resolve/a0d5c6a264c0ef92d70d8661d8cc502d79627cd6/README.md`,sha256:`ae6e44dead53dfdbd5b4a77106226f3118eb910222b46cb5533a3860773fc6c7`}]}],modifications:[]}]},ca=sa,la=e=>sa.models.some(t=>t.id===e);function ua({modelId:e,modelName:t,returnFocus:n,onClose:r}){let{t:i}=o(),a=ca.models.find(t=>t.id===e);if(!a)return null;let s=new Set(a.groups.flatMap(e=>e.licenseIds)),c=ca.licenses.filter(e=>s.has(e.id));return(0,$.jsx)(wn,{open:!0,onOpenChange:e=>{e||r()},children:(0,$.jsxs)(xn,{className:`z-[130] max-h-[85dvh] min-w-0 grid-cols-1 overflow-y-auto rounded-lg sm:max-w-2xl`,overlayClassName:`z-[129]`,onEscapeKeyDown:e=>e.stopPropagation(),onCloseAutoFocus:e=>{e.preventDefault(),n.current?.isConnected&&n.current.focus()},children:[(0,$.jsxs)(Cn,{children:[(0,$.jsx)(Sn,{children:i(`chat:speechModels.notices`)}),(0,$.jsxs)(bn,{className:`break-words`,children:[t,` (`,a.revision,`)`]})]}),(0,$.jsx)(`p`,{className:`break-words text-sm text-muted-foreground`,children:ca.scope}),(0,$.jsx)(`p`,{className:`break-words text-sm text-muted-foreground`,children:ca.licenseIdsMeaning}),(0,$.jsx)(`div`,{className:`min-w-0 divide-y divide-stroke-soft`,children:a.groups.map(e=>(0,$.jsxs)(`details`,{className:`min-w-0 py-3`,children:[(0,$.jsxs)(`summary`,{className:`cursor-pointer break-words text-sm font-medium`,children:[e.id,e.status===`pending`&&(0,$.jsx)(`span`,{className:`ml-2 text-xs font-normal text-warning-strong`,children:i(`chat:speechModels.provenancePending`)})]}),(0,$.jsxs)(`div`,{className:`mt-3 min-w-0 space-y-3 text-sm`,children:[(0,$.jsx)(`p`,{className:`break-words`,children:e.summary}),e.pendingReasons.map(e=>(0,$.jsx)(`p`,{className:`break-words text-muted-foreground`,children:e},e)),(0,$.jsx)(`pre`,{className:`whitespace-pre-wrap break-all text-xs`,children:JSON.stringify({pathScope:e.pathScope,paths:e.paths,licenseIds:e.licenseIds,evidence:e.evidence},null,2)})]})]},e.id))}),(0,$.jsxs)(`details`,{className:`min-w-0 border-t pt-3`,children:[(0,$.jsx)(`summary`,{className:`cursor-pointer text-sm font-medium`,children:i(`chat:speechModels.modifications`)}),(0,$.jsx)(`pre`,{className:`mt-3 whitespace-pre-wrap break-all text-xs`,children:JSON.stringify(a.modifications,null,2)})]}),c.map(e=>(0,$.jsxs)(`details`,{className:`min-w-0 border-t pt-3`,children:[(0,$.jsxs)(`summary`,{className:`cursor-pointer break-words text-sm font-medium`,children:[e.name,` (`,e.id,`)`]}),(0,$.jsx)(`pre`,{className:`mt-3 whitespace-pre-wrap break-words text-xs`,children:e.text})]},e.id)),(0,$.jsx)(`div`,{className:`flex justify-end border-t pt-3`,children:(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{size:`icon-sm`,variant:`outline`,onClick:()=>{let e=new Blob([JSON.stringify({...ca,models:[a],licenses:c},null,2)],{type:`application/json;charset=utf-8`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${a.id}-notices.json`,n.click(),window.setTimeout(()=>URL.revokeObjectURL(t),0)},"aria-label":i(`chat:speechModels.downloadNotices`),children:(0,$.jsx)(oe,{})})}),(0,$.jsx)(Nt,{children:i(`chat:speechModels.downloadNotices`)})]})})]})})}var da=e=>`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(e/1048576)} MiB`;function fa({manager:e,onClose:t}){let{t:n}=o(),[r,i]=(0,Q.useState)(!1),[a,s]=(0,Q.useState)(``),[c,l]=(0,Q.useState)(null),u=(0,Q.useRef)(null),d=(0,Q.useRef)(null),f=()=>{u.current?.abort(),u.current=null,i(!1)};(0,Q.useEffect)(()=>(e.open||(u.current?.abort(),u.current=null,i(!1),l(null)),()=>{u.current?.abort(),u.current=null}),[e.open]);let p={"not-installed":n(`chat:speechModels.notInstalled`),downloading:n(`chat:speechModels.downloading`),verifying:n(`chat:speechModels.verifying`),installed:n(`chat:speechModels.installed`),cancelled:n(`chat:speechModels.cancelled`),error:n(`chat:speechModels.failed`)},m=e.models.flatMap(e=>e.voices||[]),h=m.find(t=>t.id===e.selectedVoice),g=e.models.some(e=>e.kind===`tts`&&e.status===`installed`),_=e.models.filter(e=>e.status!==`installed`),v=_.some(e=>[`downloading`,`verifying`].includes(e.status)),y=()=>{l(null),f(),e.close(),t()},b=async()=>{if(u.current){f();return}if(!h||!g||_.length)return;let e=new AbortController;u.current=e,i(!0),s(``);try{await aa(h.language===`en`?n(`chat:speechModels.previewEnglish`):n(`chat:speechModels.previewChinese`),h.id,e.signal)}catch(t){e.signal.aborted||s(t instanceof Error?t.message:String(t))}finally{u.current===e&&(u.current=null,i(!1))}};return(0,$.jsxs)(wn,{open:e.open,onOpenChange:e=>{e||y()},children:[(0,$.jsxs)(xn,{className:`z-[110] max-h-[85dvh] overflow-y-auto sm:max-w-md`,overlayClassName:`z-[109]`,onEscapeKeyDown:e=>e.stopPropagation(),children:[(0,$.jsxs)(Cn,{children:[(0,$.jsx)(Sn,{children:n(`chat:speechModels.title`)}),(0,$.jsx)(bn,{className:`sr-only`,children:n(`chat:speechModels.title`)})]}),!e.catalog&&!e.error&&(0,$.jsx)(Be,{className:`mx-auto my-4 size-5 animate-spin`,"aria-label":n(`chat:speechModels.loading`)}),(0,$.jsx)(`div`,{className:`min-w-0 divide-y divide-stroke-soft`,children:e.models.map(t=>{let r=[`downloading`,`verifying`].includes(t.status),i=t.totalBytes?Math.min(100,Math.floor(t.downloadedBytes/t.totalBytes*100)):0,a=t.license?.url.startsWith(`https://`)?t.license.url:void 0;return(0,$.jsxs)(`section`,{className:`min-w-0 space-y-2 py-3 first:pt-0`,"aria-label":t.name,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t.kind===`asr`?n(`chat:speechModels.recognition`):n(`chat:speechModels.synthesis`)}),(0,$.jsx)(`div`,{className:`break-words font-medium`,children:t.name})]}),t.status===`installed`?(0,$.jsx)(re,{className:`size-5 shrink-0 text-success`,"aria-label":p.installed}):(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{size:`icon-sm`,variant:`outline`,disabled:e.loading,onClick:()=>{r?e.cancelDownload(t.id):e.download(t.id)},"aria-label":n(r?`chat:speechModels.cancelDownload`:`chat:speechModels.download`),children:r?(0,$.jsx)(ft,{}):(0,$.jsx)(oe,{})})}),(0,$.jsx)(Nt,{children:n(r?`chat:speechModels.cancelDownload`:`chat:speechModels.download`)})]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1 text-xs text-muted-foreground`,children:[(0,$.jsx)(`span`,{children:p[t.status]}),(0,$.jsx)(`span`,{className:`tabular-nums`,children:r?`${da(t.downloadedBytes)} / ${da(t.totalBytes)}`:da(t.totalBytes)})]}),r&&(0,$.jsx)(Ot,{value:i,"aria-label":t.name,"aria-valuenow":i,"aria-valuemin":0,"aria-valuemax":100}),t.error&&(0,$.jsx)(`p`,{role:`alert`,className:`break-words text-xs text-destructive`,children:t.error}),t.license&&(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-2`,children:[(0,$.jsx)(`a`,{href:a,target:`_blank`,rel:`noreferrer`,className:`block break-words text-xs text-muted-foreground underline underline-offset-2`,children:t.license.name}),la(t.id)&&(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{size:`icon-sm`,variant:`ghost`,"aria-label":n(`chat:speechModels.notices`),onClick:e=>{d.current=e.currentTarget,f(),l(t)},children:(0,$.jsx)(br,{})})}),(0,$.jsx)(Nt,{children:n(`chat:speechModels.notices`)})]})]})]},t.id)})}),m.length>0&&(0,$.jsx)(`div`,{className:`space-y-2 border-t pt-3`,children:(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`min-w-0 flex-1 text-sm`,children:n(`chat:speechModels.voice`)}),(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{size:`icon`,variant:`outline`,disabled:!g||_.length>0,onClick:()=>void b(),"aria-label":n(r?`chat:speechModels.stopPreview`:`chat:speechModels.preview`),children:r?(0,$.jsx)(ft,{}):(0,$.jsx)(We,{})})}),(0,$.jsx)(Nt,{children:n(r?`chat:speechModels.stopPreview`:`chat:speechModels.preview`)})]})]})}),(e.error||a)&&(0,$.jsx)(`p`,{role:`alert`,className:`break-words text-sm text-destructive`,children:e.error||a}),(0,$.jsx)(`div`,{className:`flex justify-end border-t pt-3`,children:_.length?(0,$.jsxs)(Y,{disabled:e.loading||v,onClick:()=>void e.downloadAll(),children:[(0,$.jsx)(oe,{}),n(`chat:speechModels.downloadAll`)]}):(0,$.jsx)(Y,{disabled:!e.catalog,onClick:y,children:n(`chat:speechModels.done`)})})]}),e.open&&c&&(0,$.jsx)(ua,{modelId:c.id,modelName:c.name,returnFocus:d,onClose:()=>l(null)})]})}var pa=16e3,ma=pa*60;function ha(e,t){let n=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return n?n(e,t):Promise.reject(Error(`移动端原生桥不可用。`))}async function ga(){if(!(typeof window>`u`||!window.__PISPER_MOBILE_APP__)&&(await ha(`mobile_request_microphone_permission`)).state!==`granted`)throw Error(`microphone_permission_denied`)}async function _a(e){let t=await e.text().catch(()=>``);try{return JSON.parse(t).error||`语音转写失败 (${e.status})`}catch{return t||`语音转写失败 (${e.status})`}}function va(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Float32Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var ya=class{chatSessionId;chunks=[];pending=[];listeners=new Set;controller=null;sessionId=``;nativeRequestId=``;legacy=!1;flushTimer=0;sendChain=Promise.resolve();finished=!1;retainedSamples=0;terms=[];initializing=null;constructor(e=``){this.chatSessionId=e}start(){return this.initializing=this.initialize().catch(async e=>{throw await this.cancel(),e}),this.initializing}async initialize(){this.chunks=[],this.pending=[],this.finished=!1,this.retainedSamples=0;let e=new AbortController;this.controller=e,await x(),g(e.signal);let{loadSpeechHotwords:n,prepareSpeechSession:r}=await t(async()=>{let{loadSpeechHotwords:e,prepareSpeechSession:t}=await import(`./speech-session-CrscgV-X.js`).then(e=>e.r);return{loadSpeechHotwords:e,prepareSpeechSession:t}},__vite__mapDeps([116,1,2,3,13,12,5,6,7,8])),{terms:i,hotwords:a}=await n(this.chatSessionId,e.signal);this.terms=i;let o=await r({kinds:[`asr`],hotwords:a},e.signal);if(g(o.signal),o.signal.addEventListener(`abort`,()=>{this.controller===e&&!e.signal.aborted&&this.cancel()},{once:!0}),window.__PISPER_MOBILE_APP__)return;let s=h(e.signal,3e4);try{let t=await fetch(`/api/speech/stream/start`,{method:`POST`,headers:{"X-Pisper-Chat-Session":this.chatSessionId},signal:s.signal});if(!t.ok){if(t.status===404){this.legacy=!0;return}throw Error(await _a(t))}let n=await t.json();if(!n.id)throw Error(`语音识别会话创建失败。`);e.signal.aborted&&(await fetch(`/api/speech/stream/cancel`,{method:`POST`,headers:{"X-Pisper-Speech-Session":n.id}}).catch(()=>{}),g(e.signal)),this.sessionId=n.id,this.pending.push(...this.chunks.splice(0)),this.retainedSamples=0,this.flushTimer=window.setInterval(()=>void this.flushPending(),1e3)}finally{s.dispose()}}acceptPcm(e){if(!e.length||this.finished)return!1;if(window.__PISPER_MOBILE_APP__||!this.sessionId){let t=ma-this.retainedSamples;if(t<=0)return!0;let n=e.slice(0,t);return this.chunks.push(n),this.retainedSamples+=n.length,this.retainedSamples>=ma}let t=e.slice();return this.sessionId&&!this.legacy?this.pending.push(t):this.chunks.push(t),!1}onPartial(e){return this.listeners.add(e),()=>this.listeners.delete(e)}emitPartial(e){if(e)for(let t of this.listeners)t(e)}flushPending(){return this.sendChain=this.sendChain.then(async()=>{if(!this.sessionId||this.legacy||this.finished||!this.pending.length)return;let e=va(this.pending.splice(0));try{let t=await fetch(`/api/speech/stream/chunk`,{method:`POST`,headers:{"Content-Type":`application/octet-stream`,"X-Pisper-Sample-Rate":String(pa),"X-Pisper-Speech-Session":this.sessionId},body:e.buffer,signal:this.controller?.signal});if(!t.ok)return;let n=await t.json();typeof n.text==`string`&&this.emitPartial(n.text.trim())}catch{}}),this.sendChain}async finishStreaming(){window.clearInterval(this.flushTimer),this.flushTimer=0,await this.flushPending(),this.finished=!0;let e=await fetch(`/api/speech/stream/finish`,{method:`POST`,headers:{"X-Pisper-Speech-Session":this.sessionId},signal:this.controller?.signal});if(!e.ok)throw Error(await _a(e));let t=await e.json(),n=typeof t.text==`string`?t.text.trim():``;if(!n)throw Error(`未识别到语音内容。`);return this.emitPartial(n),n}async finishOneShot(e){if(window.__PISPER_MOBILE_APP__){let t=new Uint8Array(e.buffer),n=``,r=32768;for(let e=0;e<t.length;e+=r)n+=String.fromCharCode(...t.subarray(e,e+r));let i=this.controller;if(!i)throw new DOMException(`Speech recognition cancelled.`,`AbortError`);g(i.signal);let a=crypto.randomUUID();this.nativeRequestId=a;let o=await ha(`mobile_transcribe_pcm`,{pcmBase64:btoa(n),hotwords:sr(this.terms),requestId:a});if(g(i.signal),this.controller!==i)throw new DOMException(`Speech recognition cancelled.`,`AbortError`);let s=lr(typeof o.text==`string`?o.text.trim():``,this.terms);if(!s)throw Error(`未识别到语音内容。`);return this.emitPartial(s),s}let t=await fetch(`/api/speech/transcribe`,{method:`POST`,headers:{"Content-Type":`application/octet-stream`,"X-Pisper-Sample-Rate":String(pa),"X-Pisper-Chat-Session":this.chatSessionId},body:e.buffer,signal:this.controller?.signal});if(!t.ok)throw Error(await _a(t));let n=await t.json(),r=typeof n.text==`string`?n.text.trim():``;if(!r)throw Error(`未识别到语音内容。`);return this.emitPartial(r),r}async finish(){if(await this.initializing,!this.controller)throw Error(`语音识别尚未启动。`);if(this.sessionId&&!this.legacy)return this.finishStreaming();this.finished=!0;let e=va(this.chunks);if(!e.length)throw Error(`没有采集到语音。`);return this.finishOneShot(e)}async cancel(){if(this.finished=!0,window.clearInterval(this.flushTimer),this.flushTimer=0,this.controller?.abort(),this.controller=null,this.chunks=[],this.pending=[],this.retainedSamples=0,this.nativeRequestId){let e=this.nativeRequestId;this.nativeRequestId=``,await ha(`mobile_cancel_speech`,{requestId:e}).catch(()=>{})}if(this.sessionId&&!this.legacy){let e=this.sessionId;this.sessionId=``,await fetch(`/api/speech/stream/cancel`,{method:`POST`,headers:{"X-Pisper-Speech-Session":e}}).catch(()=>{})}}async dispose(){await this.cancel(),this.listeners.clear()}};function ba({chatSessionId:e=``}={}){return new ya(e)}var xa=`
511
+ `,sourceUrl:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/melo/text/cmudict.rep`,sha256:`08ee91f3c05c55160bdc599247ba53e5de8cc2597766fdb22b54a81cb24dd954`}],models:[{id:`x-asr-480ms-int8`,revision:`2026-06-05`,attribution:`X-ASR by Gilgamesh-J / GilgameshWind; trained using icefall and deployed with sherpa-onnx. The locked HF model card expressly covers model artifacts and declares Apache-2.0. The separately discovered GitHub license commit is not the locked HF revision. No root LICENSE or NOTICE was listed in the inspected HF tree; this is not proof that every historical distribution lacks NOTICE. Retain applicable upstream notices when found.`,archive:{url:`https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-x-asr-480ms-streaming-zipformer-transducer-zh-en-punct-int8-2026-06-05.tar.bz2`,sha256:`fa5f63d618e5a01526e275a358bb7772e403f84808a4769fba52cffd8160bf74`},groups:[{id:`xasr-weights`,pathScope:`model`,paths:[`encoder.int8.onnx`,`decoder.onnx`,`joiner.int8.onnx`],licenseIds:[`apache-2.0`],status:`pending`,summary:`Apache-2.0 is explicitly declared for X-ASR model artifacts. The sherpa export script describes icefall streaming ONNX export and INT8 quantization; installed file hashes match the catalog, but the 2026-06-05 archive-to-checkpoint/build identity is not established.`,pendingReasons:[`Exact checkpoint and source commits used to build the 2026-06-05 INT8 archive remain unverified; the export script downloads moving main URLs. Training-data rights are not fully audited.`],evidence:[{url:`https://hf-mirror.com/GilgameshWind/X-ASR-zh-en/resolve/689ff18c584d29910da37b6fe904db0c1489c9d1/README.md`,sha256:`7acc6f439d3e39e46de4298ccf8a8f6a483fdc5f9f5d08e61422b63760ec37b1`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/v1.13.7/scripts/zipformer-transducer/x-asr/export-streaming.sh`,sha256:`63b018fe72a29e9a41c6d4e358085b5ad1614e021c0d9f3c05a2d11f1dff0d81`}]},{id:`xasr-tokens`,pathScope:`model`,paths:[`tokens.txt`],licenseIds:[`apache-2.0`],status:`pending`,summary:`X-ASR token resource, not the SentencePiece or sherpa software. The punctuation export block downloads X-ASR-zh-en/zipformer/data/lang_5000_with_punctuation/tokens.txt. Catalog content SHA256: b818a60878b9aae978cbb8ad594acbd403d76d1af2e31ef4197c84e2dbdba27c.`,pendingReasons:[`The historical source revision for the token file in the 2026-06-05 archive is not pinned by the export script.`],evidence:[{url:`https://hf-mirror.com/GilgameshWind/X-ASR-zh-en/resolve/689ff18c584d29910da37b6fe904db0c1489c9d1/README.md`,sha256:`7acc6f439d3e39e46de4298ccf8a8f6a483fdc5f9f5d08e61422b63760ec37b1`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/v1.13.7/scripts/zipformer-transducer/x-asr/export-streaming.sh`,sha256:`63b018fe72a29e9a41c6d4e358085b5ad1614e021c0d9f3c05a2d11f1dff0d81`}]},{id:`xasr-bpe`,pathScope:`model`,paths:[`bpe.model`],licenseIds:[`apache-2.0`],status:`pending`,summary:`X-ASR BPE resource. The export script renames X-ASR-zh-en/zipformer/data/lang_5000_with_punctuation/bpe_punc.model to bpe.model. Its license classification comes from X-ASR, not from the software that reads the SentencePiece format.`,pendingReasons:[`The historical BPE source commit and exact archive build provenance remain unverified.`],evidence:[{url:`https://hf-mirror.com/GilgameshWind/X-ASR-zh-en/resolve/689ff18c584d29910da37b6fe904db0c1489c9d1/README.md`,sha256:`7acc6f439d3e39e46de4298ccf8a8f6a483fdc5f9f5d08e61422b63760ec37b1`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/v1.13.7/scripts/zipformer-transducer/x-asr/export-streaming.sh`,sha256:`63b018fe72a29e9a41c6d4e358085b5ad1614e021c0d9f3c05a2d11f1dff0d81`}]},{id:`xasr-bpe-vocab`,pathScope:`shared`,paths:[`speech-resources/xasr-bpe.vocab`],licenseIds:[`apache-2.0`],status:`pending`,summary:`Modified by Pisper: extracted the ordered SentencePiece pieces and scores as UTF-8 piece<TAB>score<LF> lines. This local text derivative retains the source resource license classification; it is not newly licensed as Pisper-owned model data. Original and derived hashes and generator are bound by xasr-bpe-extraction below.`,pendingReasons:[`The source BPE historical provenance remains pending as described in xasr-bpe. A text extraction does not resolve upstream rights.`],evidence:[{url:`https://hf-mirror.com/GilgameshWind/X-ASR-zh-en/resolve/689ff18c584d29910da37b6fe904db0c1489c9d1/README.md`,sha256:`7acc6f439d3e39e46de4298ccf8a8f6a483fdc5f9f5d08e61422b63760ec37b1`}]}],modifications:[{id:`xasr-bpe-extraction`,groupIds:[`xasr-bpe-vocab`],modifiedBy:`Pisper`,summary:`Local BPE text extraction, not retraining. The generator identity records the inspected repository implementation, not a claim about a historical upstream build date.`,source:{path:`bpe.model`,bytes:119265,sha256:`f87a38025a5fdd1e4e9591f6a44bb81295097ce0b80df6f4ab9f44e52c64ca5f`},derived:{path:`speech-resources/xasr-bpe.vocab`,bytes:61562,sha256:`01381aa0c3065832cb8d7462d529e3079a99be56c955ce93b4cb9b78e8aa34e5`},generator:{path:`scripts/speech-bpe.mjs`,sha256:`a1c85731aa3e0be89f04acc79830db784a9d43edb8af9f4fb723bb45bd725786`,method:`sentencePieceModelToVocab decodes ordered protobuf ModelProto.pieces and emits each piece, a tab, its finite score, and a newline without changing the BPE model.`}}]},{id:`vits-melo-tts-zh_en`,revision:`a0d5c6a264c0ef92d70d8661d8cc502d79627cd6`,archive:{url:`https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-melo-tts-zh_en.tar.bz2`,bytes:167006755,sha256:`e58351ed7149f290a54534538badd4077cdbe6fddc964b24d0bee870415d1514`},attribution:`MeloTTS by MyShell.ai; sherpa-onnx ONNX conversion. The retained software license is Copyright (c) 2024 MyShell.ai, MIT. The neural-weight repository separately declares MIT; dictionary and FST resources have separate declarations and pending provenance. Pisper selects the original single female voice via public sid 0 and uses the same original FP32 ONNX, tokens, mixed-language lexicon, dictionary and normalization files on Desktop, Android and iOS. No retraining, quantization, graph/metadata patch or voice-subset derivative is made. The unused new_heteronym.fst and 133-byte model.int8.onnx Git LFS pointer in the transport archive are drained but not installed; retained model files are unchanged. These choices do not imply upstream/speaker endorsement, redistribution approval or completed native-platform acceptance.`,groups:[{id:`melo-weights`,pathScope:`model`,paths:[`model.onnx`],licenseIds:[`mit-melo`],status:`pending`,summary:`The myshell-ai/MeloTTS-Chinese model card at af5d207a364ea4208c6f589c89f57f88414bdd16 declares license: mit for the model repository; this is separate evidence from the MeloTTS software MIT license. The sherpa conversion package carries the exact MyShell.ai MIT text, and original ONNX metadata declares MIT license, melo-vits version 2, Chinese + English, n_speakers=1 and speaker_id=1. The conversion README explicitly describes a single female Chinese+English speaker. sherpa maps public sid 0 to the internal metadata speaker_id; Pisper does not change the graph, metadata or speaker embedding.`,pendingReasons:[`Exact historical checkpoint, training/conversion commits and reproducible archive build identity have not been established; the inspected conversion workflow uses moving upstream references. Training-data permissions, individual speaker consent and applicable personality/publicity rights are not fully audited. The discovered model card revision is evidence of a declaration, not proof of the historical conversion input.`],evidence:[{url:`https://hf-mirror.com/myshell-ai/MeloTTS-Chinese/resolve/af5d207a364ea4208c6f589c89f57f88414bdd16/README.md`,sha256:`40b5b860bacbb3947cbef838719e660d2fe4961eba5b484290b4bedc0253e208`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://hf-mirror.com/csukuangfj/vits-melo-tts-zh_en/resolve/a0d5c6a264c0ef92d70d8661d8cc502d79627cd6/README.md`,sha256:`ae6e44dead53dfdbd5b4a77106226f3118eb910222b46cb5533a3860773fc6c7`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/export-onnx.py`,sha256:`c0be7727d59ad6ceaf39e909b4560b57e704091c69ac3fab6f2f2abfd931c916`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/run.sh`,sha256:`e2afb98d9028eded2983f780468337fc019a8306db926f89e3bdeed18af867bb`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/sherpa-onnx/csrc/offline-tts-vits-model.cc`,sha256:`060907349036d63b60d035843defe7078b83c8099e0d4de323446c7db0d653d0`}]},{id:`melo-tokens`,pathScope:`model`,paths:[`tokens.txt`],licenseIds:[`mit-melo`,`apache-2.0-sherpa`],status:`declared`,summary:`The sherpa Melo export writes enumerated model.hps symbols to tokens.txt. The original 655-byte token file is retained unchanged. Melo software is MIT; sherpa conversion code is Apache-2.0. These code declarations do not independently establish all underlying training-data rights.`,pendingReasons:[],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/export-onnx.py`,sha256:`c0be7727d59ad6ceaf39e909b4560b57e704091c69ac3fab6f2f2abfd931c916`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/LICENSE`,sha256:`cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30`}]},{id:`melo-cppjieba-dictionary`,pathScope:`model`,paths:[`dict/hmm_model.utf8`,`dict/idf.utf8`,`dict/jieba.dict.utf8`,`dict/pos_dict/char_state_tab.utf8`,`dict/pos_dict/prob_emit.utf8`,`dict/pos_dict/prob_start.utf8`,`dict/pos_dict/prob_trans.utf8`,`dict/README.md`,`dict/stop_words.utf8`],licenseIds:[`mit-cppjieba`],status:`confirmed`,summary:`Nine ordinary dictionary/README files are byte-identical to the separately HTTPS-downloaded CppJieba sherpa-onnx-2024-04-19 dict archive. The exact release source MIT license retains Copyright (c) 2013. This confirms the documented source-content match, not a whole-chain data-rights guarantee. The small Melo user.dict.utf8 is separately classified and is NOT the 829194-byte pypinyin-derived user dictionary from that source archive.`,pendingReasons:[],evidence:[{url:`https://ghfast.top/https://github.com/csukuangfj/cppjieba/releases/download/sherpa-onnx-2024-04-19/dict.tar.bz2`,sha256:`35c3877c9b9221a5b2d69bbf57d5dbf1ccbe5b7684c60eb42f93db6b2d494f26`},{url:`https://raw.githubusercontent.com/csukuangfj/cppjieba/f03dd931a00330c279c8590275850fd1f6749a18/LICENSE`,sha256:`ba898a14f729ba5e9965da34e3eecd5edd3795f2cc5d7c923b815ba79bb851b0`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/.github/workflows/export-melo-tts-to-onnx.yaml`,sha256:`fc90fc412fd6f3c8a7d593743372a077dd63b2c8ce0780ed9c3a7e05cc8b659e`}]},{id:`melo-user-dictionary`,pathScope:`model`,paths:[`dict/user.dict.utf8`],licenseIds:[`mit-cppjieba`,`mit-melo`],status:`pending`,summary:`Melo ships an unchanged 49-byte user dictionary containing four entries. It matches the locked Melo HF file but differs from the separately downloaded CppJieba release user dictionary. The package MIT text and CppJieba project MIT declaration are retained as source declarations, not proof that either automatically licenses every edit. This file is not attributed to the unrelated historical pypinyin-derived dictionary.`,pendingReasons:[`The exact historical source commit, modifier and license coverage for this 49-byte replacement have not been identified. Retain applicable modifier notices when established.`],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/.github/workflows/export-melo-tts-to-onnx.yaml`,sha256:`fc90fc412fd6f3c8a7d593743372a077dd63b2c8ce0780ed9c3a7e05cc8b659e`},{url:`https://raw.githubusercontent.com/csukuangfj/cppjieba/f03dd931a00330c279c8590275850fd1f6749a18/LICENSE`,sha256:`ba898a14f729ba5e9965da34e3eecd5edd3795f2cc5d7c923b815ba79bb851b0`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://huggingface.co/csukuangfj/vits-melo-tts-zh_en/resolve/a0d5c6a264c0ef92d70d8661d8cc502d79627cd6/dict/user.dict.utf8`,sha256:`495bbf49270408a1234690e1e6a97328f30a482a7a72aa769e8a12e8714b0c62`}]},{id:`melo-english-lexicon`,pathScope:`model`,paths:[`lexicon.txt`],licenseIds:[`cmudict-0.6-1998`,`mit-melo`,`apache-2.0-sherpa`],status:`pending`,summary:`The English portion is generated by the sherpa Melo export from melo.text.english.eng_dict and refine_syllables, lowercasing words and adding language tone offsets plus kaldi/SF entries. The inspected Melo source reads cmudict.rep or a cached pickle. cmudict.rep contains its own Copyright 1998 Carnegie Mellon University unrestricted research/commercial permission and attribution notice, retained verbatim in cmudict-0.6-1998. This is NOT a substitution of a modern CMUdict BSD license. The retained notice hash covers the complete original comment header; the evidence hash covers the complete 3969309-byte source file. No package script or pickle was executed.`,pendingReasons:[`The precise historical dictionary/cache inputs and all intervening modifications used for this lexicon have not been pinned or reproduced. Trace cached-data equivalence and retain applicable original and modifier notices.`],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/export-onnx.py`,sha256:`c0be7727d59ad6ceaf39e909b4560b57e704091c69ac3fab6f2f2abfd931c916`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/melo/text/english.py`,sha256:`28527f574511bfc13fe1f2f6bbb5bfe4072c06e1c7e9b69598138aef81b9905b`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/melo/text/cmudict.rep`,sha256:`d127b5ce8b8e695732701e8efde04b9b0fa11991218b1fb9d21bd0c9264636aa`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/LICENSE`,sha256:`cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30`}]},{id:`melo-chinese-lexicon`,pathScope:`model`,paths:[`lexicon.txt`],licenseIds:[`mit-pypinyin`,`mit-melo`,`apache-2.0-sherpa`],status:`pending`,summary:`The Chinese portion is generated by the sherpa Melo export from pypinyin character/phrase dictionaries, lazy_pinyin and the Melo pinyin-to-symbol map. Melo code is MIT, sherpa conversion code Apache-2.0, and pypinyin declares MIT. Those software declarations do not relicense external dictionary inputs. The same 6837671-byte mixed-language lexicon is used unchanged on every platform.`,pendingReasons:[`Pin historical pypinyin versions, character/phrase JSON data and Melo phoneme mapping, reproduce the output and trace the actual underlying source-data terms. No particular Zdic, CC-CEDICT or Unihan license is asserted without proof of the actual input chain.`],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/scripts/melo-tts/export-onnx.py`,sha256:`c0be7727d59ad6ceaf39e909b4560b57e704091c69ac3fab6f2f2abfd931c916`},{url:`https://raw.githubusercontent.com/mozillazg/python-pinyin/8595294b1a97845e30f11ecfdb3caa4e61ac3988/pypinyin/pinyin_dict.py`,sha256:`245c1f70509432b289cde1f938157cd5ff1372d1d083b577d5fab72b4dfcda08`},{url:`https://raw.githubusercontent.com/mozillazg/python-pinyin/8595294b1a97845e30f11ecfdb3caa4e61ac3988/pypinyin/phrases_dict.py`,sha256:`3f6f39bbca68d8d1676ea463cd4620b934b03160cc5042fb9d9007b8f3a80b9e`},{url:`https://raw.githubusercontent.com/mozillazg/python-pinyin/8595294b1a97845e30f11ecfdb3caa4e61ac3988/LICENSE.txt`,sha256:`1e6c90014b4912815c296ee64bb6f6280af47e6d4c5d80e86232dfc5defe764c`},{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`}]},{id:`melo-normalization-fsts`,pathScope:`model`,paths:[`date.fst`,`number.fst`,`phone.fst`],licenseIds:[`apache-2.0-sherpa`],status:`pending`,summary:`All three FSTs are byte-identical to the separately downloaded data/date.fst, data/number.fst and data/phone.fst at csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06 revision 57345c004e13ed640e408c4c29ab56187b18f065, the source repository named by the Melo packaging workflow. That source model card declares Apache-2.0; the full Apache text is retained from sherpa. Neither the OpenFst software license nor the Melo neural-weight MIT declaration independently grants rights to these FST data.`,pendingReasons:[`Exact editable generation rules, compiler/source revisions, underlying data provenance and applicable author/modifier notices remain unverified. No standalone FST LICENSE/NOTICE or complete reproducible source chain was found in the inspected source tree.`],evidence:[{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/.github/workflows/export-melo-tts-to-onnx.yaml`,sha256:`fc90fc412fd6f3c8a7d593743372a077dd63b2c8ce0780ed9c3a7e05cc8b659e`},{url:`https://hf-mirror.com/csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06/resolve/57345c004e13ed640e408c4c29ab56187b18f065/README.md`,sha256:`98b45ea81164d1e1a1dd82255207053b15cd6c69d922a1c5cf3387ce604d4b74`},{url:`https://hf-mirror.com/csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06/resolve/57345c004e13ed640e408c4c29ab56187b18f065/data/date.fst`,sha256:`eb8aa079ae3cb81d8f4404992f39d61a0cb990947512b5b8d1e54d1f6980e718`},{url:`https://hf-mirror.com/csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06/resolve/57345c004e13ed640e408c4c29ab56187b18f065/data/number.fst`,sha256:`743f402181fcfebf76cc2f0546b71fa26476e626fbe4e460fb7b4c3a7a8bd5bd`},{url:`https://hf-mirror.com/csukuangfj/icefall-tts-aishell3-vits-low-2024-04-06/resolve/57345c004e13ed640e408c4c29ab56187b18f065/data/phone.fst`,sha256:`1ac2b6fa56b1442320c4de7db08353bab8963a2b57f365eebcdd3a2d3562f8d7`},{url:`https://raw.githubusercontent.com/k2-fsa/sherpa-onnx/917bed95c8e5c7c18aa4d69fea42e9ef8ef0a60e/LICENSE`,sha256:`cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30`}]},{id:`melo-package-notices`,pathScope:`model`,paths:[`LICENSE`,`README.md`],licenseIds:[`mit-melo`],status:`confirmed`,summary:`LICENSE is byte-identical to the original MyShell.ai MIT text (Copyright (c) 2024 MyShell.ai), including its exact final newline behavior. README explicitly identifies the single female Chinese+English speaker. The package-level MIT file is not a blanket grant for every bundled dictionary or FST. No upstream NOTICE was listed in the inspected conversion and weight repository trees; this is not proof that none ever existed.`,pendingReasons:[],evidence:[{url:`https://raw.githubusercontent.com/myshell-ai/MeloTTS/209145371cff8fc3bd60d7be902ea69cbdb7965a/LICENSE`,sha256:`88a50e5a02bbc2a5c2f084dc19da751aa97b1690f5fda76cd8005c8634d1ca70`},{url:`https://hf-mirror.com/csukuangfj/vits-melo-tts-zh_en/resolve/a0d5c6a264c0ef92d70d8661d8cc502d79627cd6/README.md`,sha256:`ae6e44dead53dfdbd5b4a77106226f3118eb910222b46cb5533a3860773fc6c7`}]}],modifications:[]}]},ca=sa,la=e=>sa.models.some(t=>t.id===e);function ua({modelId:e,modelName:t,returnFocus:n,onClose:r}){let{t:i}=o(),a=ca.models.find(t=>t.id===e);if(!a)return null;let s=new Set(a.groups.flatMap(e=>e.licenseIds)),c=ca.licenses.filter(e=>s.has(e.id));return(0,$.jsx)(wn,{open:!0,onOpenChange:e=>{e||r()},children:(0,$.jsxs)(xn,{className:`z-[130] max-h-[85dvh] min-w-0 grid-cols-1 overflow-y-auto rounded-lg sm:max-w-2xl`,overlayClassName:`z-[129]`,onEscapeKeyDown:e=>e.stopPropagation(),onCloseAutoFocus:e=>{e.preventDefault(),n.current?.isConnected&&n.current.focus()},children:[(0,$.jsxs)(Cn,{children:[(0,$.jsx)(Sn,{children:i(`chat:speechModels.notices`)}),(0,$.jsxs)(bn,{className:`break-words`,children:[t,` (`,a.revision,`)`]})]}),(0,$.jsx)(`p`,{className:`break-words text-sm text-muted-foreground`,children:ca.scope}),(0,$.jsx)(`p`,{className:`break-words text-sm text-muted-foreground`,children:ca.licenseIdsMeaning}),(0,$.jsx)(`div`,{className:`min-w-0 divide-y divide-stroke-soft`,children:a.groups.map(e=>(0,$.jsxs)(`details`,{className:`min-w-0 py-3`,children:[(0,$.jsxs)(`summary`,{className:`cursor-pointer break-words text-sm font-medium`,children:[e.id,e.status===`pending`&&(0,$.jsx)(`span`,{className:`ml-2 text-xs font-normal text-warning-strong`,children:i(`chat:speechModels.provenancePending`)})]}),(0,$.jsxs)(`div`,{className:`mt-3 min-w-0 space-y-3 text-sm`,children:[(0,$.jsx)(`p`,{className:`break-words`,children:e.summary}),e.pendingReasons.map(e=>(0,$.jsx)(`p`,{className:`break-words text-muted-foreground`,children:e},e)),(0,$.jsx)(`pre`,{className:`whitespace-pre-wrap break-all text-xs`,children:JSON.stringify({pathScope:e.pathScope,paths:e.paths,licenseIds:e.licenseIds,evidence:e.evidence},null,2)})]})]},e.id))}),(0,$.jsxs)(`details`,{className:`min-w-0 border-t pt-3`,children:[(0,$.jsx)(`summary`,{className:`cursor-pointer text-sm font-medium`,children:i(`chat:speechModels.modifications`)}),(0,$.jsx)(`pre`,{className:`mt-3 whitespace-pre-wrap break-all text-xs`,children:JSON.stringify(a.modifications,null,2)})]}),c.map(e=>(0,$.jsxs)(`details`,{className:`min-w-0 border-t pt-3`,children:[(0,$.jsxs)(`summary`,{className:`cursor-pointer break-words text-sm font-medium`,children:[e.name,` (`,e.id,`)`]}),(0,$.jsx)(`pre`,{className:`mt-3 whitespace-pre-wrap break-words text-xs`,children:e.text})]},e.id)),(0,$.jsx)(`div`,{className:`flex justify-end border-t pt-3`,children:(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{size:`icon-sm`,variant:`outline`,onClick:()=>{let e=new Blob([JSON.stringify({...ca,models:[a],licenses:c},null,2)],{type:`application/json;charset=utf-8`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${a.id}-notices.json`,n.click(),window.setTimeout(()=>URL.revokeObjectURL(t),0)},"aria-label":i(`chat:speechModels.downloadNotices`),children:(0,$.jsx)(oe,{})})}),(0,$.jsx)(Nt,{children:i(`chat:speechModels.downloadNotices`)})]})})]})})}var da=e=>`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(e/1048576)} MiB`;function fa({manager:e,onClose:t}){let{t:n}=o(),[r,i]=(0,Q.useState)(!1),[a,s]=(0,Q.useState)(``),[c,l]=(0,Q.useState)(null),u=(0,Q.useRef)(null),d=(0,Q.useRef)(null),f=()=>{u.current?.abort(),u.current=null,i(!1)};(0,Q.useEffect)(()=>(e.open||(u.current?.abort(),u.current=null,i(!1),l(null)),()=>{u.current?.abort(),u.current=null}),[e.open]);let p={"not-installed":n(`chat:speechModels.notInstalled`),downloading:n(`chat:speechModels.downloading`),verifying:n(`chat:speechModels.verifying`),installed:n(`chat:speechModels.installed`),cancelled:n(`chat:speechModels.cancelled`),error:n(`chat:speechModels.failed`)},m=e.models.flatMap(e=>e.voices||[]),h=m.find(t=>t.id===e.selectedVoice),g=e.models.some(e=>e.kind===`tts`&&e.status===`installed`),_=e.models.filter(e=>e.status!==`installed`),v=_.some(e=>[`downloading`,`verifying`].includes(e.status)),y=()=>{l(null),f(),e.close(),t()},b=async()=>{if(u.current){f();return}if(!h||!g||_.length)return;let e=new AbortController;u.current=e,i(!0),s(``);try{await aa(h.language===`en`?n(`chat:speechModels.previewEnglish`):n(`chat:speechModels.previewChinese`),h.id,e.signal)}catch(t){e.signal.aborted||s(t instanceof Error?t.message:String(t))}finally{u.current===e&&(u.current=null,i(!1))}};return(0,$.jsxs)(wn,{open:e.open,onOpenChange:e=>{e||y()},children:[(0,$.jsxs)(xn,{className:`z-[110] max-h-[85dvh] overflow-y-auto sm:max-w-md`,overlayClassName:`z-[109]`,onEscapeKeyDown:e=>e.stopPropagation(),children:[(0,$.jsxs)(Cn,{children:[(0,$.jsx)(Sn,{children:n(`chat:speechModels.title`)}),(0,$.jsx)(bn,{className:`sr-only`,children:n(`chat:speechModels.title`)})]}),!e.catalog&&!e.error&&(0,$.jsx)(Be,{className:`mx-auto my-4 size-5 animate-spin`,"aria-label":n(`chat:speechModels.loading`)}),(0,$.jsx)(`div`,{className:`min-w-0 divide-y divide-stroke-soft`,children:e.models.map(t=>{let r=[`downloading`,`verifying`].includes(t.status),i=t.totalBytes?Math.min(100,Math.floor(t.downloadedBytes/t.totalBytes*100)):0,a=t.license?.url.startsWith(`https://`)?t.license.url:void 0;return(0,$.jsxs)(`section`,{className:`min-w-0 space-y-2 py-3 first:pt-0`,"aria-label":t.name,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t.kind===`asr`?n(`chat:speechModels.recognition`):n(`chat:speechModels.synthesis`)}),(0,$.jsx)(`div`,{className:`break-words font-medium`,children:t.name})]}),t.status===`installed`?(0,$.jsx)(re,{className:`size-5 shrink-0 text-success`,"aria-label":p.installed}):(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{size:`icon-sm`,variant:`outline`,disabled:e.loading,onClick:()=>{r?e.cancelDownload(t.id):e.download(t.id)},"aria-label":n(r?`chat:speechModels.cancelDownload`:`chat:speechModels.download`),children:r?(0,$.jsx)(ft,{}):(0,$.jsx)(oe,{})})}),(0,$.jsx)(Nt,{children:n(r?`chat:speechModels.cancelDownload`:`chat:speechModels.download`)})]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1 text-xs text-muted-foreground`,children:[(0,$.jsx)(`span`,{children:p[t.status]}),(0,$.jsx)(`span`,{className:`tabular-nums`,children:r?`${da(t.downloadedBytes)} / ${da(t.totalBytes)}`:da(t.totalBytes)})]}),r&&(0,$.jsx)(Ot,{value:i,"aria-label":t.name,"aria-valuenow":i,"aria-valuemin":0,"aria-valuemax":100}),t.error&&(0,$.jsx)(`p`,{role:`alert`,className:`break-words text-xs text-destructive`,children:t.error}),t.license&&(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-2`,children:[(0,$.jsx)(`a`,{href:a,target:`_blank`,rel:`noreferrer`,className:`block break-words text-xs text-muted-foreground underline underline-offset-2`,children:t.license.name}),la(t.id)&&(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{size:`icon-sm`,variant:`ghost`,"aria-label":n(`chat:speechModels.notices`),onClick:e=>{d.current=e.currentTarget,f(),l(t)},children:(0,$.jsx)(br,{})})}),(0,$.jsx)(Nt,{children:n(`chat:speechModels.notices`)})]})]})]},t.id)})}),m.length>0&&(0,$.jsx)(`div`,{className:`space-y-2 border-t pt-3`,children:(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`min-w-0 flex-1 text-sm`,children:n(`chat:speechModels.voice`)}),(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{size:`icon`,variant:`outline`,disabled:!g||_.length>0,onClick:()=>void b(),"aria-label":n(r?`chat:speechModels.stopPreview`:`chat:speechModels.preview`),children:r?(0,$.jsx)(ft,{}):(0,$.jsx)(We,{})})}),(0,$.jsx)(Nt,{children:n(r?`chat:speechModels.stopPreview`:`chat:speechModels.preview`)})]})]})}),(e.error||a)&&(0,$.jsx)(`p`,{role:`alert`,className:`break-words text-sm text-destructive`,children:e.error||a}),(0,$.jsx)(`div`,{className:`flex justify-end border-t pt-3`,children:_.length?(0,$.jsxs)(Y,{disabled:e.loading||v,onClick:()=>void e.downloadAll(),children:[(0,$.jsx)(oe,{}),n(`chat:speechModels.downloadAll`)]}):(0,$.jsx)(Y,{disabled:!e.catalog,onClick:y,children:n(`chat:speechModels.done`)})})]}),e.open&&c&&(0,$.jsx)(ua,{modelId:c.id,modelName:c.name,returnFocus:d,onClose:()=>l(null)})]})}var pa=16e3,ma=pa*60;function ha(e,t){let n=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return n?n(e,t):Promise.reject(Error(`移动端原生桥不可用。`))}async function ga(){if(!(typeof window>`u`||!window.__PISPER_MOBILE_APP__)&&(await ha(`mobile_request_microphone_permission`)).state!==`granted`)throw Error(`microphone_permission_denied`)}async function _a(e){let t=await e.text().catch(()=>``);try{return JSON.parse(t).error||`语音转写失败 (${e.status})`}catch{return t||`语音转写失败 (${e.status})`}}function va(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Float32Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var ya=class{chatSessionId;chunks=[];pending=[];listeners=new Set;controller=null;sessionId=``;nativeRequestId=``;legacy=!1;flushTimer=0;sendChain=Promise.resolve();finished=!1;retainedSamples=0;terms=[];initializing=null;constructor(e=``){this.chatSessionId=e}start(){return this.initializing=this.initialize().catch(async e=>{throw await this.cancel(),e}),this.initializing}async initialize(){this.chunks=[],this.pending=[],this.finished=!1,this.retainedSamples=0;let e=new AbortController;this.controller=e,await x(),g(e.signal);let{loadSpeechHotwords:n,prepareSpeechSession:r}=await t(async()=>{let{loadSpeechHotwords:e,prepareSpeechSession:t}=await import(`./speech-session-BohM2ygu.js`).then(e=>e.r);return{loadSpeechHotwords:e,prepareSpeechSession:t}},__vite__mapDeps([116,1,2,3,13,12,5,6,7,8])),{terms:i,hotwords:a}=await n(this.chatSessionId,e.signal);this.terms=i;let o=await r({kinds:[`asr`],hotwords:a},e.signal);if(g(o.signal),o.signal.addEventListener(`abort`,()=>{this.controller===e&&!e.signal.aborted&&this.cancel()},{once:!0}),window.__PISPER_MOBILE_APP__)return;let s=h(e.signal,3e4);try{let t=await fetch(`/api/speech/stream/start`,{method:`POST`,headers:{"X-Pisper-Chat-Session":this.chatSessionId},signal:s.signal});if(!t.ok){if(t.status===404){this.legacy=!0;return}throw Error(await _a(t))}let n=await t.json();if(!n.id)throw Error(`语音识别会话创建失败。`);e.signal.aborted&&(await fetch(`/api/speech/stream/cancel`,{method:`POST`,headers:{"X-Pisper-Speech-Session":n.id}}).catch(()=>{}),g(e.signal)),this.sessionId=n.id,this.pending.push(...this.chunks.splice(0)),this.retainedSamples=0,this.flushTimer=window.setInterval(()=>void this.flushPending(),1e3)}finally{s.dispose()}}acceptPcm(e){if(!e.length||this.finished)return!1;if(window.__PISPER_MOBILE_APP__||!this.sessionId){let t=ma-this.retainedSamples;if(t<=0)return!0;let n=e.slice(0,t);return this.chunks.push(n),this.retainedSamples+=n.length,this.retainedSamples>=ma}let t=e.slice();return this.sessionId&&!this.legacy?this.pending.push(t):this.chunks.push(t),!1}onPartial(e){return this.listeners.add(e),()=>this.listeners.delete(e)}emitPartial(e){if(e)for(let t of this.listeners)t(e)}flushPending(){return this.sendChain=this.sendChain.then(async()=>{if(!this.sessionId||this.legacy||this.finished||!this.pending.length)return;let e=va(this.pending.splice(0));try{let t=await fetch(`/api/speech/stream/chunk`,{method:`POST`,headers:{"Content-Type":`application/octet-stream`,"X-Pisper-Sample-Rate":String(pa),"X-Pisper-Speech-Session":this.sessionId},body:e.buffer,signal:this.controller?.signal});if(!t.ok)return;let n=await t.json();typeof n.text==`string`&&this.emitPartial(n.text.trim())}catch{}}),this.sendChain}async finishStreaming(){window.clearInterval(this.flushTimer),this.flushTimer=0,await this.flushPending(),this.finished=!0;let e=await fetch(`/api/speech/stream/finish`,{method:`POST`,headers:{"X-Pisper-Speech-Session":this.sessionId},signal:this.controller?.signal});if(!e.ok)throw Error(await _a(e));let t=await e.json(),n=typeof t.text==`string`?t.text.trim():``;if(!n)throw Error(`未识别到语音内容。`);return this.emitPartial(n),n}async finishOneShot(e){if(window.__PISPER_MOBILE_APP__){let t=new Uint8Array(e.buffer),n=``,r=32768;for(let e=0;e<t.length;e+=r)n+=String.fromCharCode(...t.subarray(e,e+r));let i=this.controller;if(!i)throw new DOMException(`Speech recognition cancelled.`,`AbortError`);g(i.signal);let a=crypto.randomUUID();this.nativeRequestId=a;let o=await ha(`mobile_transcribe_pcm`,{pcmBase64:btoa(n),hotwords:sr(this.terms),requestId:a});if(g(i.signal),this.controller!==i)throw new DOMException(`Speech recognition cancelled.`,`AbortError`);let s=lr(typeof o.text==`string`?o.text.trim():``,this.terms);if(!s)throw Error(`未识别到语音内容。`);return this.emitPartial(s),s}let t=await fetch(`/api/speech/transcribe`,{method:`POST`,headers:{"Content-Type":`application/octet-stream`,"X-Pisper-Sample-Rate":String(pa),"X-Pisper-Chat-Session":this.chatSessionId},body:e.buffer,signal:this.controller?.signal});if(!t.ok)throw Error(await _a(t));let n=await t.json(),r=typeof n.text==`string`?n.text.trim():``;if(!r)throw Error(`未识别到语音内容。`);return this.emitPartial(r),r}async finish(){if(await this.initializing,!this.controller)throw Error(`语音识别尚未启动。`);if(this.sessionId&&!this.legacy)return this.finishStreaming();this.finished=!0;let e=va(this.chunks);if(!e.length)throw Error(`没有采集到语音。`);return this.finishOneShot(e)}async cancel(){if(this.finished=!0,window.clearInterval(this.flushTimer),this.flushTimer=0,this.controller?.abort(),this.controller=null,this.chunks=[],this.pending=[],this.retainedSamples=0,this.nativeRequestId){let e=this.nativeRequestId;this.nativeRequestId=``,await ha(`mobile_cancel_speech`,{requestId:e}).catch(()=>{})}if(this.sessionId&&!this.legacy){let e=this.sessionId;this.sessionId=``,await fetch(`/api/speech/stream/cancel`,{method:`POST`,headers:{"X-Pisper-Speech-Session":e}}).catch(()=>{})}}async dispose(){await this.cancel(),this.listeners.clear()}};function ba({chatSessionId:e=``}={}){return new ya(e)}var xa=`
512
512
  class PisperVoiceInputProcessor extends AudioWorkletProcessor {
513
513
  constructor(options) {
514
514
  super()
@@ -548,6 +548,6 @@ class PisperVoiceInputProcessor extends AudioWorkletProcessor {
548
548
  }
549
549
  }
550
550
  registerProcessor('pisper-voice-input', PisperVoiceInputProcessor)
551
- `;async function Sa(e){let t=new Blob([xa],{type:`application/javascript`}),n=URL.createObjectURL(t);try{await e.audioWorklet.addModule(n)}finally{URL.revokeObjectURL(n)}}async function Ca(e,t){if(g(t),!navigator.mediaDevices?.getUserMedia)throw Error(`当前环境不支持麦克风采集。`);if(!window.AudioContext&&!window.webkitAudioContext)throw Error(`当前环境不支持音频处理。`);let n=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1}),r=null,i=null,a=null,o=null,s=!1,c=null,l=()=>{if(s)return c??Promise.resolve();s=!0,t?.removeEventListener(`abort`,u);for(let e of n.getTracks())e.removeEventListener?.(`ended`,d),e.removeEventListener?.(`mute`,d),e.stop();return c=r?.close().catch(()=>{})??Promise.resolve(),i&&(i.port.onmessage=null,i.port.close()),a?.disconnect(),i?.disconnect(),o?.disconnect(),c},u=()=>{l()},d=()=>{s||(l(),window.dispatchEvent(new Event(`pisper:speech-interrupted`)))},f=()=>{if(g(t),s)throw new DOMException(`Microphone capture was interrupted.`,`AbortError`)};t?.addEventListener(`abort`,u,{once:!0});for(let e of n.getTracks()){if(s)break;e.addEventListener?.(`ended`,d),e.addEventListener?.(`mute`,d),e.readyState===`ended`&&d()}try{f(),r=new(window.AudioContext||window.webkitAudioContext)({latencyHint:`interactive`}),await Sa(r),f(),a=r.createMediaStreamSource(n),i=new AudioWorkletNode(r,`pisper-voice-input`,{numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],processorOptions:{targetSampleRate:pa}}),o=r.createGain(),o.gain.value=0,i.port.onmessage=n=>{!s&&!t?.aborted&&e(new Float32Array(n.data))},a.connect(i),i.connect(o),o.connect(r.destination),await r.resume(),f()}catch(e){throw await l(),e}return{stop:l}}var wa=32,Ta=50;function Ea(e,t){if(e instanceof DOMException&&e.name===`NotAllowedError`)return`permission`;let n=typeof e==`string`?e:e instanceof Error?e.message:typeof e==`object`&&e&&`message`in e?String(e.message):``;return n.includes(`microphone_permission_denied`)?`permission`:n||t}function Da({onInsert:e,onLiveText:t,sessionId:n,disabled:r=!1,shortcutEnabled:i=!1,variant:a=`button`,controlRef:s}){let{t:c}=o(),l=Qi([`asr`]),u=$t(e=>e.bindings.voiceInput),[d,f]=(0,Q.useState)(`idle`),[p,m]=(0,Q.useState)(``),h=(0,Q.useRef)(`idle`),g=e=>{h.current=e,f(e)},_=(0,Q.useRef)(null),v=(0,Q.useRef)(null),y=(0,Q.useRef)(null),b=(0,Q.useRef)(null),x=(0,Q.useRef)(0),S=(0,Q.useRef)(0),C=(0,Q.useRef)(()=>{}),w=(0,Q.useRef)(!1),T=(0,Q.useRef)(null),E=(0,Q.useRef)(null),D=(0,Q.useRef)(()=>{}),O=(0,Q.useRef)(0),k=(0,Q.useRef)(Wi()),A=(0,Q.useRef)(0),[j,M]=(0,Q.useState)([]),N=(0,Q.useRef)([]),P=(0,Q.useRef)(null),F=(0,Q.useRef)(e),I=(0,Q.useRef)(t);F.current=e,I.current=t;let L=()=>{window.clearTimeout(S.current),S.current=0},R=async()=>{L();let e=y.current;y.current=null,e?.abort(),b.current?.(),b.current=null,P.current?.dispose(),P.current=null;let t=v.current;v.current=null;let n=_.current;_.current=null,await Promise.allSettled([t?.stop(),n?.dispose()])},z=e=>{console.warn(`[voice-input]`,e),m(e),g(`error`),window.clearTimeout(O.current),O.current=window.setTimeout(()=>{h.current===`error`&&(m(``),g(`idle`))},4e3)},B=()=>{L(),w.current=!1,g(`idle`),m(``)},V=()=>{T.current=null,E.current=null,x.current+=1,R(),I.current?.(null),B()};D.current=V,(0,Q.useEffect)(()=>{let e=()=>{(E.current!==x.current||T.current===x.current)&&D.current()},t=()=>{document.visibilityState===`hidden`&&e()},n=()=>D.current();return window.addEventListener(`blur`,e),window.addEventListener(`pisper:speech-interrupted`,n),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`pisper:speech-interrupted`,n),document.removeEventListener(`visibilitychange`,t),window.clearTimeout(O.current),e()}},[n,i,r]),(0,Q.useEffect)(()=>{if(d!==`recording`){M([]),N.current=[];return}let e=()=>{let e=performance.now()/1e3,t=A.current,n=N.current,r=[];for(let i=0;i<wa;i+=1){let a=i/31*2-1,o=Math.cos(a*Math.PI/2)**1.3,s=.1+.06*Math.sin(e*2.2+i*.55)+.04*Math.sin(e*3.7+i*.21),c=.75+.5*Math.abs(Math.sin(e*9+i*1.7)),l=Math.min(1,Math.max(.05,s+t*o*c*1.15)),u=n[i]??l,d=l>u?.55:.28;r.push(u+(l-u)*d)}N.current=r,M(r)};e();let t=window.setInterval(e,Ta);return()=>window.clearInterval(t)},[d]);let H=()=>!r&&(h.current===`idle`||h.current===`error`),ee=async()=>{if(!H())return;let e=++x.current,t=new AbortController;y.current=t,w.current=!1,g(`requesting`),m(``),k.current.reset();let r=ba({chatSessionId:n});_.current=r,b.current=r.onPartial(e=>{_.current===r&&I.current?.(e)});let i=null,a=async t=>{if(i?.dispose(),i=null,e!==x.current)return;if(t instanceof DOMException&&t.name===`AbortError`){let e=++x.current;if(await R(),e!==x.current)return;B();return}let n=++x.current;if(await R(),n!==x.current)return;let r=Ea(t,c(`chat:voiceInput.failed`));z(r===`permission`?c(`chat:voiceInput.permissionDenied`):r)};try{window.__PISPER_MOBILE_APP__&&(E.current=e);try{await ga()}finally{E.current===e&&(E.current=null)}if(e!==x.current)return;if(window.__PISPER_MOBILE_APP__&&document.visibilityState===`hidden`){V();return}if(await l.ensureReady(t.signal),e!==x.current)return;if(r.start().then(()=>{},()=>a(Error(c(`chat:voiceInput.failed`)))),i=await Xi(),e!==x.current){i.dispose();return}P.current=i;let n=i,o=await Ca(t=>{if(e!==x.current)return;A.current=k.current.push(Ui(t));let i=n.acceptPcm(t);(r.acceptPcm(t)||i)&&C.current()},t.signal);if(e!==x.current){await o.stop();return}v.current=o,g(`recording`),window.__PISPER_MOBILE_APP__&&(S.current=window.setTimeout(()=>C.current(),6e4))}catch(e){await a(e)}},U=async()=>{if(h.current!==`recording`||w.current)return;T.current=null,w.current=!0,L();let e=++x.current;g(`transcribing`);let t=y.current;y.current=null,t?.abort();let n=v.current;v.current=null;let r=P.current;P.current=null;let i=_.current;try{if(await n?.stop(),e!==x.current)return;if(r&&!r.hasSpeech){if(r.dispose(),I.current?.(null),await R(),e!==x.current)return;B();return}r?.dispose();let t=await i?.finish();if(e!==x.current)return;if(!t)throw Error(c(`chat:voiceInput.empty`));if(F.current(t),await R(),e!==x.current)return;B()}catch(t){if(e!==x.current||(await R(),e!==x.current))return;I.current?.(null);let n=Ea(t,c(`chat:voiceInput.failed`));z(n===`permission`?c(`chat:voiceInput.permissionDenied`):n),w.current=!1}};C.current=()=>void U(),Hi({enabled:i&&!r,binding:u,onStart:()=>H()?(ee(),T.current=x.current,!0):!1,onRelease:()=>{T.current===x.current&&(v.current?U():V())},onCancel:()=>{T.current===x.current&&V()}});let te=d===`recording`?c(`chat:voiceInput.stop`):d===`requesting`?c(`chat:voiceInput.close`):d===`error`?p:c(`chat:voiceInput.open`),ne=u&&d!==`error`?`${te} (${an(u)})`:te,re=d===`recording`?()=>void U():d===`requesting`?()=>V():()=>void ee(),W=(0,Q.useRef)(re);W.current=re;let ie=!r&&d!==`transcribing`;(0,Q.useEffect)(()=>{if(s)return s.current=ie?()=>W.current():null,()=>{s.current=null}},[s,ie]);let ae=a===`menu`&&d===`idle`;return(0,$.jsxs)(`div`,{className:`relative flex flex-none items-center`,"data-voice-input":d,children:[d===`recording`&&(0,ci.createPortal)((0,$.jsx)(`div`,{"aria-hidden":`true`,className:`voice-capsule-pop pointer-events-none fixed bottom-4 left-1/2 z-[80] flex h-10 -translate-x-1/2 items-center gap-[3px] rounded-full bg-ink px-4 shadow-float`,children:j.map((e,t)=>(0,$.jsx)(`span`,{className:`w-[3px] rounded-full bg-on-ink`,style:{height:`${(3+e*19).toFixed(1)}px`,opacity:.55+e*.45,transition:`height 70ms linear`}},t))}),document.body),d===`error`&&(0,ci.createPortal)((0,$.jsxs)(`button`,{type:`button`,className:`voice-capsule-pop fixed bottom-4 left-1/2 z-[80] flex h-9 max-w-[min(480px,calc(100vw-32px))] -translate-x-1/2 cursor-pointer items-center gap-2 rounded-full border border-danger-border bg-solid px-4 text-xs text-danger shadow-float max-[650px]:h-11`,onClick:()=>{window.clearTimeout(O.current),m(``),g(`idle`)},children:[(0,$.jsx)(Tr,{size:13,className:`flex-none`}),(0,$.jsx)(`span`,{className:`truncate`,children:p})]}),document.body),(0,$.jsxs)(`button`,{type:`button`,hidden:ae,className:`relative grid size-8 min-w-8 cursor-pointer place-items-center rounded-sm border transition-colors disabled:cursor-not-allowed disabled:opacity-45 max-[650px]:size-11 max-[650px]:min-w-11 pointer-coarse:size-11 pointer-coarse:min-w-11 ${d===`recording`?`border-danger bg-danger-soft text-danger`:d===`transcribing`||d===`requesting`?`border-transparent bg-star-soft text-accent-fg`:d===`error`?`border-transparent bg-danger-soft text-danger`:`border-transparent text-content-muted hover:bg-surface-hover hover:text-content`}`,title:ne,"aria-label":c(d===`recording`?`chat:voiceInput.stop`:`chat:voiceInput.open`),"aria-pressed":d===`recording`,disabled:r||d===`transcribing`,onClick:re,children:[d===`recording`&&(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`absolute inset-0 animate-ping rounded-sm bg-danger opacity-25`}),d===`recording`?(0,$.jsx)(Tr,{size:17}):d===`transcribing`||d===`requesting`?(0,$.jsx)(Be,{className:`animate-spin`,size:16}):d===`error`?(0,$.jsx)(Tr,{size:17}):(0,$.jsx)(Er,{size:17})]}),(0,$.jsx)(fa,{manager:l,onClose:()=>{}})]})}var Oa={idle:{amp:.14,freq:1.7,speed:.22,spike:0,rot:.22,dim:.8,behavior:`calm`},requesting:{amp:.08,freq:1.6,speed:.3,spike:0,rot:.4,dim:.5,behavior:`calm`},listening:{amp:.15,freq:2,speed:.55,spike:.55,rot:.4,dim:1,behavior:`reactive`},transcribing:{amp:.08,freq:1.8,speed:1,spike:0,rot:1.5,dim:.95,behavior:`converge`},thinking:{amp:.2,freq:2.3,speed:.8,spike:0,rot:.85,dim:1,behavior:`swirl`},speaking:{amp:.13,freq:1.9,speed:.5,spike:.1,rot:.35,dim:1,behavior:`beat`},error:{amp:.12,freq:2.2,speed:1.2,spike:0,rot:.1,dim:.9,behavior:`jitter`}},ka=64,Aa=96,ja=2.6,Ma=Math.PI*2,Na={dark:{base:[223,233,255],cyan:[89,230,255],magenta:[255,95,210],haloInner:[70,110,170],haloMid:[50,80,140],haloAlpha:.1,composite:`lighter`,alphaBase:.1,alphaFront:.68},light:{base:[34,44,76],cyan:[6,132,180],magenta:[176,48,150],haloInner:[110,140,210],haloMid:[130,160,220],haloAlpha:.16,composite:`source-over`,alphaBase:.18,alphaFront:.85}};function Pa(e,t,n){let r=Math.sin(e*127.1+t*311.7+n*74.7)*43758.5453123;return r-Math.floor(r)}function Fa(e){return e*e*(3-2*e)}function Ia(e,t,n){let r=Math.floor(e),i=Math.floor(t),a=Math.floor(n),o=Fa(e-r),s=Fa(t-i),c=Fa(n-a),l=0;for(let e=0;e<=1;e+=1)for(let t=0;t<=1;t+=1)for(let n=0;n<=1;n+=1)l+=(e?o:1-o)*(t?s:1-s)*(n?c:1-c)*Pa(r+e,i+t,a+n);return l}function La(e){return 1+2.70158*(e-1)**3+1.70158*(e-1)**2}function Ra(e){let t=e*.9%1;return Math.exp(-(((t-.12)*9)**2))+.45*Math.exp(-(((t-.34)*9)**2))}function za({stage:e,level:t,size:n=380,dark:r=!0}){let i=(0,Q.useRef)(null),a=(0,Q.useRef)(e),o=(0,Q.useRef)(t),s=(0,Q.useRef)(r);return a.current=e,o.current=t,s.current=r,(0,Q.useEffect)(()=>{let e=i.current;if(!e)return;let t=e.getContext(`2d`);if(!t)return;let r=Math.min(window.devicePixelRatio||1,2);e.width=n*r,e.height=n*r,t.scale(r,r);let c=new Float32Array(ka),l=new Float32Array(ka);for(let e=0;e<ka;e+=1){let t=-Math.PI/2+(e+.5)/ka*Math.PI;c[e]=Math.sin(t),l[e]=Math.cos(t)}let u=new Float32Array(Aa),d=new Float32Array(Aa);for(let e=0;e<Aa;e+=1){let t=e/Aa*Ma;u[e]=Math.cos(t),d[e]=Math.sin(t)}let f=n/2,p=n*.31,m=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,h=0,g=performance.now(),_=g,v=0,y=0,b={...Oa[a.current]},x=0,S=0,C=0,w=e=>{let r=Math.min((e-g)/1e3,.05);g=e;let i=Oa[a.current],T=Math.min(1,r*5);b={...i,amp:b.amp+(i.amp-b.amp)*T,freq:b.freq+(i.freq-b.freq)*T,speed:b.speed+(i.speed-b.speed)*T,spike:b.spike+(i.spike-b.spike)*T,rot:b.rot+(i.rot-b.rot)*T,dim:b.dim+(i.dim-b.dim)*T};let E=m?.35:1;v+=r*E,y+=b.rot*r*E,x+=(o.current-x)*Math.min(1,r*14);let D=Math.max(0,x-S-.02);S=x,C=Math.min(.6,C*.02**r+D*2.4);let O=x;b.behavior===`beat`?O=Math.max(.08,.4+.28*Math.abs(Math.sin(v*5.2))*Math.sin(v*1.6)+.12*Math.sin(v*9.1)):b.behavior===`converge`?O=.18:b.behavior===`jitter`?O=.3+.2*Math.sin(v*17):b.behavior!==`reactive`&&(O=.1+.05*Math.sin(v*1.3));let k=La(Math.min(1,Math.max(0,(e-_)/900))),A=b.behavior===`beat`?O:Ra(v)*.5+O*.5,j=k*(1+A*.04+C*.1);b.behavior===`converge`&&(j*=.9+.1*Math.sin(v*4.2)),t.clearRect(0,0,n,n);let M=Na[s.current?`dark`:`light`],N=t.createRadialGradient(f,f,0,f,f,p*1.7);N.addColorStop(0,`rgba(${M.haloInner[0]},${M.haloInner[1]},${M.haloInner[2]},${(M.haloAlpha*b.dim).toFixed(3)})`),N.addColorStop(.6,`rgba(${M.haloMid[0]},${M.haloMid[1]},${M.haloMid[2]},${(M.haloAlpha*.5*b.dim).toFixed(3)})`),N.addColorStop(1,`rgba(0,0,0,0)`),t.fillStyle=N,t.fillRect(0,0,n,n);let P=Math.sin(y),F=Math.cos(y),I=.38,L=Math.sin(I),R=Math.cos(I),z=v*b.speed,B=b.freq,V=b.amp*j,H=b.spike*(O+C),ee=p*j,U=Math.floor(v*15),te=b.dim*(.72+.5*A)+C*.3;t.globalCompositeOperation=M.composite;for(let e=0;e<ka;e+=1){let n=c[e],r=l[e];for(let i=0;i<Aa;i+=1){let a=r*u[i],o=n,s=r*d[i],c=Ia(a*B+z,o*B+z*.7,s*B)-.5,l=1+c*2*V;b.behavior===`reactive`?l+=Math.max(c,0)**2*1.7*H:b.behavior===`swirl`?l+=.03*Math.sin(9*a+v*4.6):b.behavior===`jitter`&&(l+=.02*(Pa(e*Aa+i,U,3)-.5));let p=a*l,m=o*l,h=s*l,g=p*F-h*P,_=p*P+h*F,y=m*R-_*L,x=m*L+_*R,S=ja/(ja-x),C=f+g*S*ee,w=f+y*S*ee,T=(x+1)/2,E=Ia(a*1.25+31,o*1.25+z*.12,s*1.25-17),D=M.base;E>.62?D=M.magenta:E<.38&&(D=M.cyan);let O=(M.alphaBase+M.alphaFront*T*T)*te;if(O<.015)continue;let k=(1+1.4*T+H*.4)*(.55+.45*S);t.fillStyle=`rgba(${D[0]},${D[1]},${D[2]},${O.toFixed(3)})`,t.fillRect(C,w,k,k)}}t.globalCompositeOperation=`source-over`,h=requestAnimationFrame(w)};return h=requestAnimationFrame(w),()=>cancelAnimationFrame(h)},[n]),(0,$.jsx)(`canvas`,{ref:i,className:`pointer-events-none block`,style:{width:n,height:n},"aria-hidden":`true`})}var Ba=new Map;function Va(e,t){let n=Ba.get(e)??new Set;return n.add(t),Ba.set(e,n),()=>{n.delete(t),n.size||Ba.delete(e)}}function Ha(e){for(let t of Ba.get(e.sessionId)??[])t(e)}function Ua(e,t){let n=t.messages.length-1;for(;n>=0&&t.messages[n].role!==`user`;)--n;let r=t.messages.slice(n+1).filter(e=>e.role===`agent`||e.role===`assistant`),i=r.find(e=>e.streaming)??r.at(-1);Ha({sessionId:e,messageId:i?.id??``,prompt:t.messages[n]?.text,startedAt:t.startedAt??void 0,source:`snapshot`,users:t.messages.filter(e=>e.role===`user`),text:i?.text??``,status:t.error||i?.error?`failed`:t.streaming?i?`streaming`:`started`:`completed`,error:t.error||i?.error})}function Wa(e){let t=``,n=0,r=!1,i,a,o=()=>{a?.(),a=void 0},s=()=>{i=_(e),o()};return e.addEventListener(`abort`,s,{once:!0}),e.aborted&&s(),{get text(){return t},update(e){if(!(r||i)){if(e.length>32e3)throw Error(`Speech text exceeds the supported limit.`);if(!e.startsWith(t))throw Error(`The streamed speech response was rewritten.`);t=e,o()}},finish(e){r&&e===void 0||(r=!0,e!==void 0&&(i=e),o())},async*[Symbol.asyncIterator](){try{for(;;){if(g(e),i)throw i;if(n<t.length){let e=t.slice(n);n=t.length,yield e}else if(r)return;else await new Promise(e=>{a=e})}}finally{e.removeEventListener(`abort`,s),r=!0,o()}}}}function Ga(e){let{t}=o(),n=(0,Q.useRef)({...e,t});n.current={...e,t};let[r,i]=(0,Q.useState)(`idle`),[a,s]=(0,Q.useState)(0),[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)([]),[f,p]=(0,Q.useState)(``),[m,h]=(0,Q.useState)(!1),[_,v]=(0,Q.useState)(0),y=(0,Q.useRef)(`idle`),b=(0,Q.useRef)(0),x=(0,Q.useRef)(null),S=(0,Q.useRef)(Promise.resolve()),C=(0,Q.useRef)(!1),w=(0,Q.useRef)(null),T=(0,Q.useRef)(!1),E=(0,Q.useRef)(!1),D=(0,Q.useRef)(!1),O=(0,Q.useRef)({start:async()=>{},commit:async()=>{},stop:()=>{}}),k=(0,Q.useCallback)(e=>{y.current=e,i(e)},[]),A=e=>T.current&&n.current.open&&e.sessionId===n.current.sessionId&&x.current===e&&b.current===e.generation&&!e.controller.signal.aborted,j=()=>!!(n.current.streaming||n.current.messages.some(e=>e.streaming));function M(){let e=w.current;w.current=null,e?.controller.abort()}function N(){if(w.current)return w.current.preparing;let e=new AbortController,t=n.current.sessionId,r=(async()=>{C.current||=(await n.current.ensureReady?.(e.signal),g(e.signal),!0);let{hotwords:r}=await mr(t,e.signal);await dr({kinds:[`asr`,`tts`],hotwords:r},e.signal),g(e.signal)})().catch(t=>{throw w.current?.controller===e&&(w.current=null),e.abort(),t});return w.current={controller:e,preparing:r},r}function P(e){window.clearTimeout(e.limitTimer),e.limitTimer=void 0,e.microphone.abort(),e.endpoint?.dispose(),e.endpoint=void 0;let t=e.capture;return e.capture=void 0,t&&(e.captureStopping=t.stop()),e.captureStopping??Promise.resolve()}function F(e){if(e.cleanup)return e.cleanup;e.controller.abort(),e.unsubscribe?.(),e.unsubscribe=void 0,e.responseSubscription?.(),e.responseSubscription=void 0,e.checkOwnership=void 0;let t=P(e),n=e.recognizer;return e.recognizer=void 0,e.cleanup=Promise.allSettled([t,e.capturePending,e.recognizerDisposing,e.playback,n?.dispose()]).then(()=>{}),e.cleanup}function I(){b.current+=1;let e=x.current;if(x.current=null,!e)return;let t=Promise.resolve(),r=n.current.messages.filter(t=>t.role===`user`&&!e.baseline?.has(t.id)),i=n.current.sessionId===e.sessionId&&(r.length>1||r.length===1&&r[0].text?.trim()!==e.prompt);if(e.ownsRun&&!i){e.ownsRun=!1;try{t=Promise.resolve(e.abortRun?.()).catch(()=>{})}catch{}}S.current=Promise.allSettled([S.current,F(e),t]).then(()=>{})}function L(){D.current=!1,I(),k(`idle`),l(``),s(0),d(e=>e.filter(e=>!e.pending))}function R(e,t){if(!A(e))return;let r=t instanceof Error?t.message:typeof t==`string`?t:t&&typeof t==`object`&&`message`in t?t.message:void 0,i=typeof r==`string`&&r.trim()?r:n.current.t(`chat:voiceMode.failed`),a=t instanceof DOMException&&t.name===`NotAllowedError`||i.includes(`microphone_permission_denied`)?n.current.t(`chat:voiceInput.permissionDenied`):i;L(),p(a),k(`error`),n.current.notifyError?.(a)}function z(e){return new Promise(t=>{let n=e.controller.signal,r=()=>{window.clearTimeout(i),n.removeEventListener(`abort`,r),t()},i=window.setTimeout(r,50);n.addEventListener(`abort`,r,{once:!0}),n.aborted&&r()})}async function B(e,t,r){let i=e.controller.signal,a=Wa(i),o,s,c,l=!1,u=!1,f=!1,p=!1,m=!1,h=1/0,_=n=>{let r=n.filter(e=>e.role===`user`&&!t.has(e.id));return r.length>1||r.length===1&&r[0].text?.trim()!==e.prompt};e.checkOwnership=()=>{A(e)&&_(n.current.messages)&&(e.ownsRun=!1,R(e,Error(n.current.t(`chat:voiceMode.failed`))))};let v=e=>{a.update(e),d(t=>t.map(t=>t.id===r?{...t,text:e,pending:!e.trim()}:t))};e.responseSubscription=Va(e.sessionId,r=>{if(!(!A(e)||r.source!==`snapshot`&&t.has(r.messageId)))try{let t=r.source===`snapshot`,i=!!(c&&r.startedAt===c);if(r.users&&_(r.users)||r.prompt!==void 0&&r.prompt.trim()!==e.prompt||s&&r.runId&&s!==r.runId||c&&r.startedAt&&c!==r.startedAt||t&&!i&&!(p&&!r.startedAt&&r.status===`completed`)||!t&&o&&o!==r.messageId)throw e.ownsRun=!1,Error(n.current.t(`chat:voiceMode.failed`));if(p&&t)return;if(s||=r.runId,c||=r.startedAt,r.messageId&&(o=r.messageId),r.status===`recovering`){l=!0;return}if(t&&(l=!0,u=r.status===`streaming`||r.status===`started`),r.status===`started`)return;if(f=!0,r.status===`failed`)throw e.ownsRun=!1,Error(r.error||n.current.t(`chat:voiceMode.failed`));v(r.text),r.status===`completed`&&(p=!0,e.ownsRun=!1,a.finish())}catch(t){a.finish(t),R(e,t)}});let y=Promise.resolve().then(()=>(g(i),n.current.sendPrompt(e.prompt,[],!1,!1,null))).catch(t=>{throw e.ownsRun=!1,a.finish(t),t}).finally(()=>{!f&&!s&&!c&&(e.ownsRun=!1),m=!0,h=Date.now()+15e3}),b=async()=>{for(;A(e);){if(await z(e),!A(e))return;let r=n.current.messages.filter(e=>!t.has(e.id)),i=r.filter(e=>e.role===`user`);if(i.length>1||i.length===1&&i[0].text?.trim()!==e.prompt)throw Error(n.current.t(`chat:voiceMode.failed`));let s=r.filter(e=>e.role===`assistant`||e.role===`agent`),c=s.find(e=>e.error);if(c)throw Error(String(c.error));if(p&&m&&!j())return;let d=s.at(-1);if(!l&&d?.text&&(!f||m&&!j())){if(o&&o!==d.id)throw Error(n.current.t(`chat:voiceMode.failed`));o=d.id,v(d.text)}if(!l&&m&&!j()&&d?.text?.trim()){e.ownsRun=!1,a.finish();return}if(m&&(j()||u)&&(h=Date.now()+15e3),Date.now()>=h)throw Error(n.current.t(`chat:voiceMode.emptyReply`))}};try{e.playback=Promise.resolve().then(()=>n.current.speakText(a,i,()=>{A(e)&&k(`speaking`)})),await Promise.all([y,b(),e.playback])}catch(e){throw a.finish(e),e}finally{e.responseSubscription?.(),e.responseSubscription=void 0,e.checkOwnership=void 0,a.finish()}}async function V(){let e=x.current;if(!e||!A(e)||e.committed||y.current!==`listening`)return;e.committed=!0;let t=e.endpoint?.hasSpeech;k(`transcribing`),s(0);try{if(await P(e),!A(e))return;if(!t){L();return}let r=(await e.recognizer?.finish())?.trim();if(!A(e))return;e.unsubscribe?.(),e.unsubscribe=void 0;let i=e.recognizer;if(e.recognizer=void 0,e.recognizerDisposing=i?.dispose(),await e.recognizerDisposing,!A(e))return;if(l(``),!r)throw Error(n.current.t(`chat:voiceMode.emptyReply`));if(j()){L();return}let a=new Set(n.current.messages.map(e=>e.id));e.baseline=a,e.prompt=r;let o=`voice-agent-${e.generation}`;if(d(t=>[...t.slice(-4),{id:`voice-user-${e.generation}`,role:`user`,text:r},{id:o,role:`agent`,text:``,pending:!0}]),k(`thinking`),e.abortRun=n.current.onAbort,e.ownsRun=!0,await B(e,a,o),!A(e))return;D.current&&!E.current?(k(`idle`),await O.current.start()):L()}catch(t){R(e,t)}}async function H(){if(!T.current||!n.current.open||E.current||document.hidden||![`idle`,`error`,`speaking`].includes(y.current))return;I();let e={generation:++b.current,sessionId:n.current.sessionId,controller:new AbortController,microphone:new AbortController,permissionPending:!1,committed:!1,commitRequested:!1,ownsRun:!1};x.current=e,D.current=!0,p(``),l(``),s(0),k(`requesting`);let t=Wi(),r=0;try{if(await S.current,!A(e)||(await N(),!A(e)))return;if(j()){L();return}e.permissionPending=!0;try{await ga()}finally{e.permissionPending=!1}if(!A(e))return;if(document.hidden||j()){L();return}let n=await Xi();if(!A(e)){n.dispose();return}e.endpoint=n;let i=ba({chatSessionId:e.sessionId});if(e.recognizer=i,e.unsubscribe=i.onPartial(t=>{A(e)&&l(t)}),await i.start(),!A(e)||(e.capturePending=Ca(a=>{if(!(!A(e)||e.committed||e.microphone.signal.aborted))try{let o=t.push(Ui(a)),c=performance.now();c-r>=66&&(r=c,s(o));let l=i.acceptPcm(a),u=n.acceptPcm(a);(l||u)&&(e.commitRequested=!0,y.current===`listening`?O.current.commit():e.microphone.abort())}catch(t){R(e,t)}},e.microphone.signal).then(async t=>(!A(e)||e.microphone.signal.aborted?await t.stop():e.capture=t,t)),await e.capturePending,!A(e)))return;if(k(`listening`),e.commitRequested){await O.current.commit();return}e.limitTimer=window.setTimeout(()=>void O.current.commit(),6e4)}catch(t){A(e)&&e.commitRequested&&e.microphone.signal.aborted?(k(`listening`),await O.current.commit()):R(e,t)}}O.current={start:H,commit:V,stop:L};let ee=(0,Q.useCallback)(()=>O.current.commit(),[]),U=(0,Q.useCallback)(()=>{O.current.stop();let e=b.current;S.current.then(()=>{b.current===e&&T.current&&O.current.start()})},[]),te=(0,Q.useCallback)(()=>{y.current===`listening`?O.current.commit():y.current===`thinking`||y.current===`speaking`?U():(y.current===`idle`||y.current===`error`)&&(E.current=!1,h(!1),O.current.start())},[U]),ne=(0,Q.useCallback)(()=>{let e=!E.current;E.current=e,h(e),e?O.current.stop():O.current.start()},[]),re=(0,Q.useCallback)(()=>{M(),O.current.stop(),p(``),v(0)},[]);return(0,Q.useEffect)(()=>{if(!e.open)return;T.current=!0,C.current=!1,E.current=!1,h(!1),d([]),v(0),k(`idle`),O.current.start();let t=()=>{x.current?.permissionPending&&window.__PISPER_MOBILE_APP__||(M(),O.current.stop())},n=()=>{document.hidden&&t()},r=()=>{M(),O.current.stop()};return window.addEventListener(`blur`,t),window.addEventListener(`pisper:speech-interrupted`,r),document.addEventListener(`visibilitychange`,n),()=>{T.current=!1,M(),O.current.stop(),window.removeEventListener(`blur`,t),window.removeEventListener(`pisper:speech-interrupted`,r),document.removeEventListener(`visibilitychange`,n)}},[e.open,e.sessionId,k]),(0,Q.useEffect)(()=>{x.current?.checkOwnership?.()},[e.messages,e.streaming]),(0,Q.useEffect)(()=>{if(![`listening`,`transcribing`,`thinking`,`speaking`].includes(r))return;let e=window.setInterval(()=>v(e=>e+1),1e3);return()=>window.clearInterval(e)},[r]),{stage:r,level:a,partial:c,turns:u,error:f,muted:m,elapsed:_,toggleMain:te,toggleMute:ne,hangUp:re,commitListening:ee,interrupt:U}}function Ka(e){return{idle:e(`chat:voiceMode.idle`),requesting:e(`chat:voiceMode.requesting`),listening:e(`chat:voiceMode.listening`),transcribing:e(`chat:voiceMode.transcribing`),thinking:e(`chat:voiceMode.thinking`),speaking:e(`chat:voiceMode.speaking`),error:e(`chat:voiceMode.failed`)}}function qa(e){let t=Math.floor(e/60),n=e%60;return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}`}function Ja(){let[e,t]=(0,Q.useState)(()=>document.documentElement.dataset.theme!==`light`);return(0,Q.useEffect)(()=>{let e=document.documentElement,n=()=>t(e.dataset.theme!==`light`);n();let r=new MutationObserver(n);return r.observe(e,{attributes:!0,attributeFilter:[`data-theme`]}),()=>r.disconnect()},[]),e}function Ya(e){let[t,n]=(0,Q.useState)(()=>typeof window>`u`?380:Math.max(48,Math.min(window.innerWidth*.52,window.innerHeight-304,460)));return(0,Q.useEffect)(()=>{if(!e)return;let t=()=>n(Math.max(48,Math.min(window.innerWidth*.52,window.innerHeight-304,460)));return t(),window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e]),Math.floor(t)}function Xa({open:e,sessionId:t,messages:n,streaming:r,sendPrompt:i,onAbort:a,onClose:s}){let{t:c}=o(),l=Ja(),u=Qi([`asr`,`tts`]),d=Ga({open:e,sessionId:t,messages:n,streaming:r,sendPrompt:i,onAbort:a,ensureReady:u.ensureReady,speakText:(e,t,n)=>aa(e,u.selectedVoice,t,n)}),{stage:f,level:p,partial:m,turns:h,error:g,elapsed:_}=d,v=Ya(e),y=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{if(!e)return;let t=document.activeElement;return y.current?.focus({preventScroll:!0}),()=>{t instanceof HTMLElement&&t.isConnected&&t.focus({preventScroll:!0})}},[e]);let b=()=>{try{d.hangUp()}finally{u.close(),s()}},x=f===`listening`||f===`transcribing`||f===`thinking`||f===`speaking`||f===`requesting`;if((0,Q.useEffect)(()=>{if(!e)return;let t=e=>{if(!(u.open||e.defaultPrevented||e.isComposing)){if(e.key===`Escape`){e.preventDefault(),b();return}if(e.key===`Tab`){let t=[...y.current?.querySelectorAll(`button:not(:disabled)`)||[]],n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||document.activeElement===y.current)?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}e.target instanceof Element&&e.target.closest(`input, textarea, select, button, [contenteditable="true"]`)||e.key===` `&&!e.repeat&&(e.preventDefault(),x?d.hangUp():d.toggleMain())}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,s,x,u.open]),!e)return null;let S=Ka(c),C=h[h.length-1],w=f===`listening`&&m?m:C?`${C.role,``}${Gi(C.text,120)}`:``,T=f===`error`?g||c(`chat:voiceMode.failed`):S[f];return(0,ci.createPortal)((0,$.jsxs)(`div`,{className:`fixed inset-0 z-[90] grid grid-cols-[minmax(0,1fr)] grid-rows-[minmax(0,1fr)_100px_108px] overflow-hidden bg-chrome pt-[env(safe-area-inset-top)] pr-[env(safe-area-inset-right)] pb-[env(safe-area-inset-bottom)] pl-[env(safe-area-inset-left)] text-content select-none`,ref:y,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-label":c(`chat:voiceMode.title`),children:[(0,$.jsxs)(`header`,{className:`pointer-events-none absolute left-[calc(env(safe-area-inset-left)_+_28px)] top-[calc(env(safe-area-inset-top)_+_24px)] flex items-center gap-3`,children:[(0,$.jsx)(`span`,{className:`inline-block size-2 rounded-full ${x?`animate-pulse bg-star`:`bg-content-faint`}`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{className:`text-[13px] font-semibold tracking-[0.3em] text-content`,children:`PISPER`})]}),(0,$.jsxs)(`div`,{className:`absolute top-[calc(env(safe-area-inset-top)_+_16px)] right-[calc(env(safe-area-inset-right)_+_16px)] z-10 flex items-center gap-1`,children:[(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{variant:`ghost`,size:`icon-sm`,"aria-label":c(`chat:speechModels.title`),onClick:()=>{d.hangUp(),u.show()},children:(0,$.jsx)(vr,{})})}),(0,$.jsx)(Nt,{children:c(`chat:speechModels.title`)})]}),(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{variant:`ghost`,size:`icon-sm`,className:`size-11 flex-none`,"aria-label":c(`chat:speechModels.close`),onClick:b,children:(0,$.jsx)(vt,{})})}),(0,$.jsx)(Nt,{children:c(`chat:speechModels.close`)})]})]}),(0,$.jsx)(fa,{manager:u,onClose:()=>d.hangUp()}),(0,$.jsx)(`div`,{className:`flex min-h-0 items-center justify-center pt-16 pb-6`,children:(0,$.jsx)(za,{stage:f,level:p,size:v,dark:l})}),(0,$.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-col items-center justify-center gap-2 px-6 text-center`,children:[(0,$.jsx)(`div`,{className:`max-w-full text-xs font-medium tracking-normal ${f===`error`?`max-h-full overflow-y-auto break-words text-danger`:`line-clamp-2 text-content-muted`}`,role:`status`,"aria-live":`polite`,children:T}),(0,$.jsx)(`p`,{className:`m-0 line-clamp-2 min-h-[22px] max-w-[640px] text-[15px] leading-[1.6] text-content`,children:w})]}),(0,$.jsx)(`div`,{className:`relative flex justify-center pt-3 sm:items-center sm:pt-0`,children:(0,$.jsx)(`button`,{type:`button`,className:`h-11 cursor-pointer rounded-full border px-8 text-sm font-medium transition-colors ${x?`border-control bg-key text-content shadow-key hover:bg-surface-hover`:`border-transparent bg-star text-on-accent shadow-primary hover:bg-star-hover`}`,onClick:()=>x?d.hangUp():d.toggleMain(),children:c(x?`chat:voiceMode.endConversation`:`chat:voiceMode.startConversation`)})}),(0,$.jsxs)(`div`,{className:`pointer-events-none absolute bottom-[calc(env(safe-area-inset-bottom)_+_12px)] right-[calc(env(safe-area-inset-right)_+_20px)] flex items-center gap-2.5 sm:bottom-[calc(env(safe-area-inset-bottom)_+_36px)] sm:right-[calc(env(safe-area-inset-right)_+_28px)]`,children:[(0,$.jsx)(`span`,{className:`hidden size-9 place-items-center rounded-full border border-key-border bg-key text-xs text-accent-fg shadow-key sm:grid`,"aria-hidden":`true`,children:x?`●`:`○`}),(0,$.jsx)(`span`,{className:`font-mono text-[13px] tracking-[0.08em] text-content-muted tabular-nums`,children:qa(_)})]}),(0,$.jsx)(`div`,{className:`absolute bottom-[env(safe-area-inset-bottom)] left-[calc(env(safe-area-inset-left)_+_20px)] sm:bottom-[calc(env(safe-area-inset-bottom)_+_36px)] sm:left-[calc(env(safe-area-inset-left)_+_28px)]`,children:(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{variant:`ghost`,size:`icon`,className:`size-11 flex-none`,disabled:!x&&!d.muted,"aria-label":f===`speaking`||f===`thinking`?c(`chat:voiceMode.interrupt`):d.muted?c(`chat:voiceMode.unmute`):c(`chat:voiceMode.mute`),onClick:()=>f===`speaking`||f===`thinking`?d.interrupt():d.toggleMute(),children:f===`speaking`||f===`thinking`?(0,$.jsx)(ft,{}):d.muted?(0,$.jsx)(Tr,{}):(0,$.jsx)(Er,{})})}),(0,$.jsx)(Nt,{children:f===`speaking`||f===`thinking`?c(`chat:voiceMode.interrupt`):d.muted?c(`chat:voiceMode.unmute`):c(`chat:voiceMode.mute`)})]})})]}),document.body)}var Za=`grid size-8 min-w-8 flex-none cursor-pointer place-items-center rounded-sm border-0 bg-transparent text-content-muted transition-colors hover:bg-surface-hover hover:text-content disabled:cursor-not-allowed disabled:opacity-50 max-[650px]:size-11 max-[650px]:min-w-11 pointer-coarse:size-11 pointer-coarse:min-w-11`;function Qa(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=String(t%60).padStart(2,`0`);return n?`${n}:${String(r).padStart(2,`0`)}:${i}`:`${r}:${i}`}function $a({startedAt:e}){let[t,n]=(0,Q.useState)(()=>Date.now());(0,Q.useEffect)(()=>{let e=window.setInterval(()=>n(Date.now()),1e3);return()=>window.clearInterval(e)},[]);let r=In(e,null,t);return r?(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`shrink-0 font-mono text-[12.5px] text-content-muted tabular-nums`,"data-tray-clock":!0,children:Qa(r)}):null}var eo=`flex min-h-[34px] min-w-0 items-center gap-2 pr-1.5 pl-3 text-[13px] max-[650px]:min-h-11 max-[650px]:pr-0 pointer-coarse:min-h-11`,to=`grid size-[26px] flex-none cursor-pointer place-items-center rounded-sm text-content-muted opacity-0 transition-opacity duration-(--d-fast) group-hover/queued:opacity-100 group-focus-within/queued:opacity-100 hover:bg-surface-hover hover:text-content focus-visible:opacity-100 disabled:cursor-default disabled:opacity-40 max-[650px]:size-11 max-[650px]:opacity-100 pointer-coarse:size-11 pointer-coarse:opacity-100 [@media(hover:none)]:opacity-100`;function no({streaming:e,compaction:t,startedAt:n,stopping:r=!1,onStop:i,queuedInputs:a=[],withdrawingInputIds:s=[],onEdit:c,onCancel:l}){let{t:u}=o(),d=!!t?.active,f=!!e||d;if(!f&&!a.length)return null;let p=u(`chat:focusSession.sentToTheRunningAgent`);return(0,$.jsxs)(`div`,{className:`composer-tray mx-3.5 flex min-w-0 flex-col overflow-hidden rounded-t-(--r-lg) border border-b-0 border-stroke bg-well text-content-secondary max-[650px]:mx-2 [&>*+*]:border-t [&>*+*]:border-stroke`,"data-composer-tray":!0,children:[f&&(0,$.jsxs)(`div`,{className:eo,"data-run-bar":d?`compacting`:`running`,children:[(0,$.jsxs)(`span`,{role:`status`,className:`flex min-w-0 flex-1 items-center gap-2`,children:[d?(0,$.jsx)(It,{className:`size-3.5 flex-none text-content-secondary`}):(0,$.jsx)(Kn,{status:`run`,className:`size-4`}),(0,$.jsx)(`span`,{className:`shrink-0 text-content`,children:u(d?`chat:focusSession.compactingContext`:`chat:focusSession.running`)}),e&&(0,$.jsx)($a,{startedAt:n})]}),e&&i&&(0,$.jsxs)(`button`,{type:`button`,className:`inline-flex h-[26px] shrink-0 cursor-pointer items-center gap-1.5 rounded-sm px-2 text-[13px] text-content transition-colors hover:bg-surface-hover disabled:cursor-default disabled:opacity-60 max-[650px]:h-11 max-[650px]:min-w-[72px] max-[650px]:justify-center pointer-coarse:h-11 pointer-coarse:min-w-[72px]`,"aria-label":u(r?`chat:focusSession.stopping`:`chat:focusSession.stop`),title:u(`chat:focusSession.stopRunShortcut`),"aria-busy":r||void 0,disabled:r,onClick:i,"data-run-stop":!0,children:[(0,$.jsx)(ft,{size:10,fill:`currentColor`,"aria-hidden":`true`}),u(r?`chat:focusSession.stopping`:`chat:focusSession.stop`),(0,$.jsx)(Rt,{className:`max-[650px]:hidden pointer-coarse:hidden`,children:`Esc`})]})]}),a.length>0&&(0,$.jsx)(`ul`,{className:`m-0 flex max-h-[136px] min-w-0 list-none flex-col overflow-x-hidden overflow-y-auto overscroll-contain p-0 [&>*+*]:border-t [&>*+*]:border-stroke-soft`,"aria-label":p,"data-pisper-queue-size":a.length,tabIndex:a.length>3?0:void 0,children:a.map((e,t)=>{let n=typeof e.id==`string`?e.id:``,r=s.includes(n),i=!n||r,a=String(e.text||``);return(0,$.jsxs)(`li`,{className:Ft(eo,`group/queued`),"aria-busy":r||void 0,children:[(0,$.jsx)(`span`,{className:`inline-flex h-[18px] flex-none items-center rounded-xs border border-stroke bg-solid px-1.5 text-[11.5px] text-content-muted`,"data-queued-behavior":e.behavior===`steer`?`steer`:`followUp`,children:e.behavior===`steer`?u(`board:composer.queuedSteer`):u(`board:composer.queuedFollowUp`)}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-content [overflow-wrap:anywhere]`,title:a,children:a}),c&&(0,$.jsx)(`button`,{type:`button`,className:to,"aria-label":u(`board:composer.editQueued`),title:u(`board:composer.editQueued`),disabled:i,"data-queued-edit":!0,onClick:()=>void c(n),children:(0,$.jsx)(Ue,{size:14,"aria-hidden":`true`})}),l&&(0,$.jsx)(`button`,{type:`button`,className:to,"aria-label":u(`board:composer.cancelQueued`),title:u(`board:composer.cancelQueued`),disabled:i,"data-queued-cancel":!0,onClick:()=>void l(n),children:(0,$.jsx)(vt,{size:14,"aria-hidden":`true`})})]},n||`${e.behavior}-${t}`)})})]})}function ro({invocation:e,onRemove:t}){let{t:n}=o();return(0,$.jsxs)(`div`,{className:`composer-resource-chip [&.workflow]:border-success-border [&.workflow]:bg-success-soft [&.workflow]:text-success-strong [&_button]:grid [&_button]:size-6 [&_button]:place-items-center [&_button]:rounded-xs [&_button]:text-content-muted [&_button]:hover:bg-surface-hover [&_button]:hover:text-content inline-flex h-7 self-start items-center gap-1.5 rounded-sm border border-star-border bg-star-soft pr-0.5 pl-2 text-xs font-medium text-star-strong max-[650px]:h-11 max-[650px]:[&_button]:size-11 ${e.kind}`,children:[e.kind===`tool`?(0,$.jsx)(_t,{size:13}):(0,$.jsx)(H,{size:13}),(0,$.jsxs)(`span`,{children:[e.kind===`skill`?`Skill`:e.kind===`tool`?n(`chat:resourcePicker.tool`):n(`chat:resourcePicker.workflow`),` `,`· `,e.resourceName]}),(0,$.jsx)(`button`,{type:`button`,"aria-label":n(`chat:resourcePicker.remove`),onClick:t,children:(0,$.jsx)(vt,{size:13})})]})}function io({streaming:e,queueing:t,submitting:n=!1,stopping:r=!1,preparing:i=!1,hasDraft:a=!1,canQueue:s=!1,blockedReason:c,disabled:l,onLongPress:u,longPressHint:d}){let{t:f}=o(),p=rn(`sendMessage`),m=(0,Q.useRef)(null),h=(0,Q.useRef)(!1),g=()=>{m.current&&clearTimeout(m.current),m.current=null};(0,Q.useEffect)(()=>{let e=m;return()=>{e.current&&clearTimeout(e.current)}},[]);let _=!!(e&&!(a&&s)),v=t||n||r||i,y=l||v||_||!!c,b=f(i?`chat:focusSession.preparingAttachments`:r?`chat:focusSession.stopping`:`chat:focusSession.sendMessage`);return(0,$.jsx)(`button`,{type:`submit`,className:`send-button grid size-8 min-w-8 flex-none cursor-pointer place-items-center rounded-full border border-transparent bg-star text-on-accent transition-[background-color,opacity] select-none [-webkit-touch-callout:none] hover:enabled:bg-star-hover active:enabled:translate-y-px disabled:cursor-not-allowed disabled:opacity-30 aria-disabled:opacity-30 max-[650px]:size-11 max-[650px]:min-w-11 pointer-coarse:size-11 pointer-coarse:min-w-11`,title:c||(!v&&p?`${b} (${p})`:b),"aria-label":c?`${b}: ${c}`:b,"aria-busy":v||void 0,"aria-disabled":y||void 0,"aria-description":u?d:void 0,"data-long-press":u?`steer`:void 0,onPointerDown:e=>{h.current=!1,!(!u||y||e.pointerType===`mouse`)&&(g(),m.current=setTimeout(()=>{m.current=null,h.current=!0,u()},500))},onPointerUp:g,onPointerCancel:g,onPointerLeave:g,onContextMenu:e=>{u&&e.preventDefault()},onClick:e=>{if(h.current){h.current=!1,e.preventDefault();return}y&&e.preventDefault()},disabled:!c&&y,children:v?(0,$.jsx)(Ke,{className:`animate-spin`,size:17}):(0,$.jsx)(B,{size:17,strokeWidth:2.1})})}var ao=[`plan`,`goal`,`team`];function oo(e){return ao.includes(e)?e:`plan`}function so({sessionId:e,runMode:t,goalsAvailable:n,teamAvailable:r,workflowsAvailable:i,goal:a,streaming:o,compaction:s,value:c,selection:l,clearDraft:u,captureSubmission:d,promptRef:f,onCompact:p,onGoalPause:m,onSend:h,onQueue:g,onAbort:_,requestTranscriptBottom:v}){let[y,b]=(0,Q.useState)(()=>oo(t)),x=(0,Q.useRef)(t);x.current=t;let[S,C]=(0,Q.useState)(null),[w,T]=(0,Q.useState)(null),E=(0,Q.useRef)(null),[D,O]=(0,Q.useState)(!1),[k,A]=(0,Q.useState)(!1),[j,M]=(0,Q.useState)(!1),[N,P]=(0,Q.useState)(``),F=(0,Q.useRef)(null),I=(0,Q.useRef)(e);I.current=e;let[L,R]=(0,Q.useState)(!1),[z,B]=(0,Q.useState)(null),V=(0,Q.useRef)(z);return V.current=z,(0,Q.useEffect)(()=>{b(oo(x.current)),E.current=null,C(null),T(null),F.current=null,A(!1),M(!1),P(``),O(!1),R(!1),B(null)},[e]),(0,Q.useEffect)(()=>{b(oo(t))},[e,t]),(0,Q.useEffect)(()=>{n||b(`plan`),!r&&y===`team`&&b(`goal`),!i&&z?.kind===`workflow`&&B(null)},[y,n,z?.kind,r,i]),(0,Q.useEffect)(()=>{a?.status===`active`&&b(a.mode===`team`&&r?`team`:`goal`)},[a?.id,a?.mode,a?.status,r]),(0,Q.useEffect)(()=>{if(!a?.id){C(null);return}let e=a.mode===`team`?a.teamTokenBudget:a.tokenBudget,t=e==null?null:Number(e),n=t!==null&&Number.isFinite(t)&&t>0?t:null;a.mode===`team`?T(n):C(n)},[a?.id,a?.mode,a?.teamTokenBudget,a?.tokenBudget]),{composerExecutionMode:y,setComposerExecutionMode:b,goalTokenBudget:S,setGoalTokenBudget:C,teamTokenBudget:w,setTeamTokenBudget:T,queueing:D,submitting:k,stopping:j,submitError:N,stop:async()=>{if(j||!_)return;let t=e;M(!0);try{await _()}catch(e){I.current===t&&P(e instanceof Error?e.message:String(e))}finally{I.current===t&&M(!1)}},compactingManually:L,invocation:z,setInvocation:B,requestGoalPause:()=>{if(E.current)return E.current;let e=Promise.resolve().then(()=>m?.());return E.current=e,e.catch(()=>{}),e},compactContext:async()=>{if(!(!p||o||L||s?.active)){R(!0);try{await p()}finally{R(!1)}}},submit:async(t,n=`steer`)=>{if(t.preventDefault(),F.current||j||l.preparingAttachments?.length||!c.trim()&&!l.attachments.length&&!z||o&&(!c.trim()&&!l.attachments.length||!g))return;let r={},i=e;F.current=r;let s=()=>I.current===i&&F.current===r,p=d?.(),_=!1,x=()=>{_||(_=!0,p?p.accept():u(),s()&&(A(!1),O(!1),b(`plan`),V.current===z&&B(null),v(),f.current&&(f.current.style.height=`auto`),F.current=null))};P(``),o?O(!0):A(!0);try{if(o){await g?.(c,l.attachments,n,x)&&x();return}let e=E.current;if(e?(await e,E.current=null):a?.status===`active`&&(y===`plan`||y!==a.mode)&&await m?.(),!s())return;let t=await h(c,l.attachments,y===`goal`||y===`team`,y===`team`,y===`team`?w:y===`goal`?S:null,z,x);!_&&t!==!1&&x()}catch(e){s()&&(E.current=null,P(e instanceof Error?e.message:String(e)))}finally{s()&&(F.current=null,A(!1),O(!1))}}}}var co=(0,Q.lazy)(()=>t(()=>import(`./QuickPromptIdeas-Do7Bs-V_.js`).then(e=>e.t),__vite__mapDeps([117,1,3,4,5,2,6,7,8,9,15,42,18,118,119,120,99,30,29,31,28]))),lo=[`[role="dialog"]`,`[role="alertdialog"]`,`[role="menu"]`,`[role="listbox"]`,`.anchored-popup-menu`,`.voice-input-popup`,`.git-diff-dialog-backdrop`,`[data-slot='popover-content']`,`[data-slot='dropdown-menu-content']`,`[data-slot='select-content']`,`[data-slot='sheet-content']`].join(`, `);function uo(){return[...document.querySelectorAll(lo)].some(e=>e.dataset.state!==`closed`&&e.getAttribute(`aria-hidden`)!==`true`&&e.getClientRects().length>0)}var fo=(0,Q.memo)(function({session:e,shortcutEnabled:t=!1,messages:n,transcriptLoadState:r=`ready`,messageStart:i,hasNewer:a,hasOlder:s,loadingOlder:c,olderError:l,model:u,thinkingLevel:d,availableThinkingLevels:f,thinkingStatus:p,thinkingMessage:m,executionMode:h,goal:g,team:_,currentActivity:v,activityFeed:y,tools:b,thinkingText:x,queuedInputs:S,withdrawingInputIds:C,compaction:O,contextUsage:k,sessionUsage:A,sessionTreeRevision:j,sessionTreePulse:M,cwd:N,availableModels:P,pendingRuntimeSelection:F,switchingModel:I,switchingThinking:L,switchingCwd:R,switchingPermission:z,streaming:B,runStartedAt:V,lastActivityAt:ee,runFinishedAt:U,runStopped:te,runNotice:ne,approvals:re,questions:W,error:oe,pendingAsset:se,notify:ce,onOpenModelSettings:G,onAssetConsumed:le,onLoadOlder:ue,onLoadLatest:de,onModelChange:fe,onThinkingLevelChange:pe,onExecutionModeChange:me,onRunModeChange:he,onCompact:ge,onCompactionThresholdChange:_e,onGoalPause:ve,onGoalBudgetChange:xe,onApproval:Se,onAnswerQuestion:Ce,onWorkspace:we,onRename:Te,onBranchFromHere:Oe,onCreateChildSession:Ae,onRetryLastTurn:je,onTreeNavigated:Ne,onSend:Pe,onQueue:Fe,onWithdrawQueuedInput:Ie,onAbort:Le}){let Re=(0,Q.useContext)(De),ze=(0,Q.useContext)(li),Be=(0,Q.useContext)(ye),Ve=!!Be?.phone,{t:q}=o(),Ue=$t(e=>e.bindings),We=D(),Ke=E(),qe=We||Ke,Je=T(e=>e.capabilities),Ye=w(Je,`goals`),Xe=w(Je,`multiAgent`),Ze=w(Je,`plans`),Qe=w(Je,`workflows`),tt=w(Je,`visualGeneration`),{value:it,updateValue:at,selection:ut,clearDraft:ft,restoreDraft:pt,captureSubmission:mt}=et(e.id),[ht,gt]=(0,Q.useState)(!1),[_t,vt]=(0,Q.useState)(!1),[yt,bt]=(0,Q.useState)(!1),[xt,wt]=(0,Q.useState)(``),[Ot,kt]=(0,Q.useState)(!1),[At,jt]=(0,Q.useState)(0),Mt=ut.addAttachments,J=(0,Q.useRef)(null),Nt=(0,Q.useRef)(null),Pt=(0,Q.useRef)(`followUp`),It=Ue.steerMessage,Y=()=>{Pt.current=`steer`,J.current?.form?.requestSubmit()},Lt=rn(`sendMessage`),Rt=rn(`voiceInput`),zt=(0,Q.useRef)(null),Bt=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{if(!t)return;let e=e=>{!Qt(e)&&nn(e,Ue.focusComposer)&&(e.preventDefault(),J.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,Ue.focusComposer]);let Vt=(0,Q.useRef)(!1),Ht=r!==`ready`||n.length>0,Ut=!Ht,Wt=B?qe?q(`board:composer.placeholderRunningTouch`):It?q(`board:composer.placeholderRunning`,{queue:Lt,steer:an(It)}):q(`board:composer.placeholderRunningQueueOnly`,{queue:Lt}):q(`board:composer.placeholder`),Gt=()=>jt(e=>e+1),Kt=e=>{at(e),requestAnimationFrame(()=>{let e=J.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,220)}px`)})},{composerExecutionMode:qt,setComposerExecutionMode:Jt,goalTokenBudget:Yt,setGoalTokenBudget:Xt,teamTokenBudget:Zt,setTeamTokenBudget:en,queueing:on,submitting:sn,stopping:cn,submitError:ln,stop:un,compactingManually:fn,invocation:pn,setInvocation:mn,requestGoalPause:hn,compactContext:gn,submit:_n}=so({sessionId:e.id,runMode:e.runMode,goalsAvailable:Ye,teamAvailable:Xe,workflowsAvailable:Qe,goal:g,streaming:B,compaction:O,value:it,selection:ut,clearDraft:ft,captureSubmission:mt,promptRef:J,onCompact:ge,onGoalPause:ve,onSend:Pe,onQueue:Fe,onAbort:Le,requestTranscriptBottom:Gt}),vn=(0,Q.useRef)(un);vn.current=un,(0,Q.useEffect)(()=>{if(!Be||!t||!B)return;let e=new WeakSet,n=t=>{t.key===`Escape`&&uo()&&e.add(t)},r=t=>{if(t.key!==`Escape`||!t.isTrusted||t.defaultPrevented||t.isComposing||t.keyCode===229||e.has(t))return;let n=t.target,r=Nt.current,i=n===document.body||n===document.documentElement||n instanceof Element&&!!n.closest(`[data-session-conversation]`)&&!n.closest(`.terminal-panel, .xterm`);!r||!i||tn(n)&&n!==J.current||(t.preventDefault(),vn.current())};return window.addEventListener(`keydown`,n,!0),window.addEventListener(`keydown`,r),()=>{window.removeEventListener(`keydown`,n,!0),window.removeEventListener(`keydown`,r)}},[Be,t,B]);let yn=e=>{g?.status===`active`&&(e===`plan`||e!==g.mode)&&hn().catch(()=>{}),Jt(e),he(e)},bn=(0,Q.useContext)(Me),xn=Be?.onNewTask||Be?.phone?.onNewTask,Sn=(0,Q.useCallback)(()=>X.getSessionCommands(e.id),[e.id]),Cn=Ci(e.id),wn=[...xn?[{invocation:`/new`,description:q(`chat:commands.builtin.new`),run:xn}]:[],...rt({t:q,models:P,model:F?.model||u,onModel:e=>fe(e),thinkingLevels:F?.model?[]:f||[],thinkingLevel:F?.thinkingLevel||d||``,thinkingLabel:e=>lt(q,e),onThinking:e=>pe(e),executionModes:[`approval-required`,`workspace-write`,`full-access`],executionMode:h,executionLabel:e=>q(e===`full-access`?`chat:focusSession.fullAccess`:e===`workspace-write`?`chat:focusSession.workspaceWrite`:`chat:focusSession.approvalRequired`),onExecutionMode:e=>me(e),runModes:B?[]:[`plan`,...Ye?[`goal`]:[],...Ye&&Xe?[`team`]:[]],runMode:qt,runModeLabel:e=>q(e===`team`?`chat:focusSession.teamMode`:e===`goal`?`chat:focusSession.goalMode`:`chat:focusSession.planMode`),onRunMode:e=>yn(e)}),{invocation:`/btw`,description:q(`chat:commands.builtin.btw`)},...ge?[{invocation:`/compact`,description:q(`chat:commands.builtin.compact`),run:()=>gn()}]:[],...bn?[{invocation:`/changes`,description:q(`chat:commands.builtin.changes`),run:()=>bn.show(`changes`)}]:[]],Tn=F?.model||u||``,En=kn(P.find(e=>e.key===Tn)?.label||Tn.split(`/`).at(-1)||``,P.map(e=>e.label)),Dn=(0,Q.useMemo)(()=>Be?{model:En}:null,[En,Be]),On=Number(k?.percent),An=k?.percent!=null&&Number.isFinite(On)?On:null,jn=n.at(-1)?.role===`agent`?n.at(-1):null,Mn=ln||oe||(B?``:String(jn?.error||``)),Nn=!a&&!ln&&!B&&n.some(e=>e.role===`user`);(0,Q.useEffect)(()=>{gt(!1),vt(!1)},[e.id]),(0,Q.useEffect)(()=>{se&&(Mt([se]),le?.())},[se,le,Mt]);let Pn=async e=>{let t=await Ie?.(e);if(!t||!pt(t))return;let n=J.current;requestAnimationFrame(()=>{!n||J.current!==n||!n.isConnected||(n.focus(),n.style.height=`auto`,n.style.height=`${Math.min(n.scrollHeight,220)}px`)})},Fn=async e=>{await Ie?.(e)},In=e=>{at(e),requestAnimationFrame(()=>{let e=J.current;e&&(e.focus(),e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,220)}px`)})},Ln=pi({cwd:N,selection:ut}),Rn=(0,$.jsx)(Da,{sessionId:e.id,shortcutEnabled:t,variant:`menu`,controlRef:Bt,onLiveText:e=>{if(e===null){zt.current!==null&&(Kt(zt.current),zt.current=null);return}zt.current===null&&(zt.current=(J.current?.value??it).trimEnd());let t=zt.current;Kt(t&&e?`${t}\n${e}`:t||e)},onInsert:e=>{let t=zt.current??(J.current?.value??it).trimEnd();zt.current=null,Kt(t?`${t}\n${e}`:e),requestAnimationFrame(()=>J.current?.focus())}}),zn=q(`board:composer.plusMenu`),Bn=(0,$.jsxs)(Dt,{children:[(0,$.jsx)(Tt,{asChild:!0,children:(0,$.jsxs)(`button`,{type:`button`,className:Ft(Za,`composer-plus-trigger aria-expanded:bg-surface-hover aria-expanded:text-content`),title:zn,"aria-label":zn,"data-composer-plus":!0,children:[(0,$.jsx)(Ge,{size:18,"aria-hidden":`true`}),ut.attachments.length>0&&(0,$.jsx)(`span`,{className:`absolute -top-0.5 -right-0.5 grid h-4 min-w-4 place-items-center rounded-full border-2 border-panel bg-star px-0.5 text-[10px] leading-none font-medium text-on-accent tabular-nums`,children:ut.attachments.length})]})}),(0,$.jsxs)(Et,{align:`start`,side:`top`,className:`min-w-56 p-1 [&_[role=menuitem]]:min-h-9 max-[650px]:[&_[role=menuitem]]:min-h-11 pointer-coarse:[&_[role=menuitem]]:min-h-11`,"data-composer-plus-menu":!0,children:[Ve&&B&&(0,$.jsxs)(St,{"data-composer-steer":!0,disabled:!it.trim()&&!ut.attachments.length&&!pn,onSelect:Y,children:[(0,$.jsx)(ae,{"aria-hidden":`true`}),(0,$.jsxs)(`span`,{className:`grid min-w-0`,children:[(0,$.jsx)(`span`,{children:q(`board:composer.steerNow`)}),(0,$.jsx)(`span`,{className:`truncate text-xs text-content-muted`,children:q(`board:composer.steerHint`)})]})]}),(0,$.jsxs)(St,{"data-composer-plus-item":`attachment`,onSelect:()=>void Ln.choose(),children:[(0,$.jsx)(He,{"aria-hidden":`true`}),q(`chat:focusSession.addAttachment`)]}),(0,$.jsxs)(St,{"data-composer-plus-item":`resource`,onSelect:()=>gt(!0),children:[(0,$.jsx)(H,{"aria-hidden":`true`}),q(`chat:resourcePicker.open`)]}),tt&&(0,$.jsxs)(St,{"data-composer-plus-item":`visual`,onSelect:()=>void Bi({templatePrompt:q(`chat:focusSession.visualPromptTemplate`),configureHint:q(`chat:focusSession.configureVisualModelFirst`),notify:ce,onOpenModelSettings:G,onInsertPrompt:In}),children:[(0,$.jsx)(ie,{"aria-hidden":`true`}),q(`chat:focusSession.generateImage`)]}),(0,$.jsxs)(St,{"data-composer-plus-item":`voice`,onSelect:()=>Bt.current?.(),children:[(0,$.jsx)(Er,{"aria-hidden":`true`}),q(`chat:voiceInput.open`),Rt&&(0,$.jsx)(Ct,{children:Rt})]})]})]}),Vn=(0,$.jsx)(bi,{sheet:Ve,approvalMode:h,onApprovalModeChange:me,approvalDisabled:z,runMode:qt,onRunModeChange:yn,runModeDisabled:!!B,goalsAvailable:Ye,teamAvailable:Xe,goal:g,tokenBudget:qt===`team`?Zt:Yt,onTokenBudgetChange:qt===`team`?en:Xt,onSaveTokenBudget:e=>xe?.(e)}),Hn=(0,$.jsx)(ot,{sheet:Ve,model:F?.model||u,models:P,onModelChange:fe,thinkingLevel:F?.thinkingLevel||d||`medium`,levels:F?.model?[]:f||[],status:p,message:m,onThinkingChange:pe,modelDisabled:I||L,thinkingDisabled:L||I,deferred:B,pendingModel:!!F?.model,usage:(0,$.jsx)(dt,{usage:k,sessionUsage:A,model:u,availableModels:P,onThresholdChange:_e})}),Un=(0,Q.useMemo)(()=>dn(W),[W]),Wn={session:e,cwd:N||``,streaming:!!B,treeAvailable:n.length>0,onRename:Te,onWorkspace:we,workspaceDisabled:!!(B||R),onCompact:ge?()=>void gn():void 0,compactDisabled:!!(B||fn||O?.active||n.length===0),goalAvailable:Ye,goalEngaged:qt===`goal`,goalDisabled:!!B,onToggleGoal:()=>yn(qt===`goal`?`plan`:`goal`),workflowsAvailable:Qe,onVoiceMode:()=>bt(!0),notify:ce??(()=>void 0)},Gn=Be&&(0,$.jsx)(Ri,{visible:n.length>0,open:_t,sessionId:e.id,streaming:!!B,revision:j,pulseToken:M,onOpenChange:vt,onNavigated:async e=>{e!==null&&In(e),await Ne?.(),Gt()},onCreateChildSession:e=>Ae(e),notify:ce,children:(e,t)=>Ve?(0,$.jsx)(fi,{...Wn,runStartedAt:V,approvals:re.length,failed:!!(!B&&(oe||jn?.error)),stopped:!!(!B&&te),contextPercent:An,leading:ze,branches:t.branches,onOpenTree:t.open}):(0,$.jsx)(ui,{...Wn,contextPercent:An,branches:t.branches,onOpenTree:t.open})}),Kn=(0,$.jsx)(ke,{layoutMeasurementKey:`fixed`,sessionId:e.id,messages:n,transcriptLoadState:r,messageStart:i,hasNewer:a,onLoadLatest:de,hasOlder:s,loadingOlder:c,olderError:l,currentActivity:v,team:_,activityFeed:y,tools:b,thinkingText:x,compaction:O,streaming:B,runStartedAt:V,lastActivityAt:ee,runFinishedAt:U,runStopped:te,runNotice:ne,error:oe,scrollRequest:At,cwd:N,lineage:e.lineage,switchingCwd:R,onLoadOlder:ue,onBranchFromHere:Oe,onCreateChildSession:Ae,onRetryLastTurn:je,onPromptSelect:In,onWorkspace:we,collapseEarlierTurns:Ve},`transcript`),qn=e=>ct(e.dataTransfer)?(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`),kt(!0),!0):!1,Yn=(0,$.jsxs)(`form`,{className:Ft(`focus-composer-shell relative z-20 mx-auto flex w-[min(768px,calc(100%_-_48px))] shrink-0 flex-col gap-2 pt-2 pb-3 @max-[700px]:w-[calc(100%_-_24px)] max-[650px]:pb-2.5`,Ht&&`before:pointer-events-none before:absolute before:inset-x-0 before:-top-9 before:h-9 before:bg-linear-to-b before:from-transparent before:to-panel`),onSubmit:e=>{let t=Pt.current;Pt.current=`followUp`;let n=nt(it);if(n!==null){e.preventDefault(),n&&(Cn.ask(n),at(``));return}if(!B&&(F||I||L)){e.preventDefault();return}_n(e,Be?t:`steer`)},children:[Cn.state&&(0,$.jsx)(Si,{state:Cn.state,cwd:N||void 0,onDismiss:()=>{Cn.dismiss(),J.current?.focus()}}),(0,$.jsx)(K,{approvals:re,onResolve:Se,sessionTitle:e.name||e.id,cwd:N||``}),Un[0]&&Ce&&(0,$.jsx)(zi,{question:Un[0],more:Un.length-1,collapsed:re.length>0,onAnswer:Ce},Un[0].id),Qe&&(0,$.jsx)(Xr,{sessionId:e.id}),pn&&(0,$.jsx)(ro,{invocation:pn,onRemove:()=>mn(null)}),ut.attachmentError&&(0,$.jsx)(`span`,{className:`text-[var(--danger)] text-[13px]`,children:ut.attachmentError}),Mn&&(0,$.jsx)(Ee,{error:Mn,onRetry:Nn?je:void 0,className:`w-full`}),(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(no,{streaming:B,compaction:O,startedAt:V,stopping:cn,onStop:()=>void un(),queuedInputs:S,withdrawingInputIds:C,onEdit:Ie?Pn:void 0,onCancel:Ie?Fn:void 0}),(0,$.jsxs)(`div`,{className:Ft(`focus-composer relative flex min-w-0 flex-col rounded-[var(--composer-radius,22px)] [corner-shape:var(--composer-corner-shape,round)] border border-control bg-solid shadow-composer transition-[border-color,box-shadow] duration-(--d-fast) ease-(--ease) has-[textarea:focus]:border-focus has-[textarea:focus]:ring-3 has-[textarea:focus]:ring-focus-ring max-[650px]:rounded-2xl [&>.attachment-tray]:px-3 [&>.attachment-tray]:pt-3 [&_textarea]:w-full [&_textarea]:min-w-0 [&_textarea]:min-h-11 [&_textarea]:max-h-[220px] [&_textarea]:resize-none [&_textarea]:overflow-y-auto [&_textarea]:border-0 [&_textarea]:[outline:0]! [&_textarea]:bg-transparent [&_textarea]:px-4 [&_textarea]:pt-3 [&_textarea]:pb-1 [&_textarea]:text-[length:calc(var(--app-message-font-size)*.9375)] max-[650px]:[&_textarea]:px-3.5 max-[650px]:[&_textarea]:text-[length:var(--app-message-font-size)] [&_textarea]:[font-family:var(--font-content-family)] [&_textarea]:font-[400] [&_textarea]:leading-5 [&_textarea]:text-content [&_textarea]:placeholder:text-content-muted`,Ot&&`border-focus ring-3 ring-focus-ring`),onDragEnter:qn,onDragOver:qn,onDragLeave:e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||kt(!1)},onDrop:e=>{kt(!1),ut.dropFiles(e)},children:[Ot&&(0,$.jsx)(`div`,{role:`status`,className:`pointer-events-none absolute inset-0 z-10 grid place-items-center rounded-[inherit] border border-dashed border-focus bg-panel px-4 text-center text-sm text-content`,children:q(`chat:focusSession.dropAttachment`)}),(0,$.jsx)(hi,{attachments:ut.attachments,preparing:ut.preparingAttachments,onRemove:ut.removeAttachment}),(0,$.jsx)(st,{placement:`top`,resourceKey:e.id,loadCommands:Sn,builtinCommands:wn,value:it,onChange:at,inputRef:J}),(0,$.jsx)(`textarea`,{ref:J,rows:1,"aria-label":q(`chat:focusSession.taskDescription`),value:it,onChange:e=>{at(e.target.value),e.currentTarget.style.height=`auto`,e.currentTarget.style.height=`${Math.min(e.currentTarget.scrollHeight,220)}px`},onPaste:ut.pasteFiles,onCompositionStart:()=>Vt.current=!0,onCompositionEnd:()=>window.setTimeout(()=>Vt.current=!1,0),onKeyDown:e=>{let t=e.nativeEvent.isComposing||Vt.current;if(Be&&B&&!t&&It&&nn(e.nativeEvent,It)){e.preventDefault(),Pt.current=`steer`,e.currentTarget.form?.requestSubmit();return}if(e.key===`Tab`&&e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!t&&!B){let t=xi(qt,{goalsAvailable:Ye,teamAvailable:Xe});if(t){e.preventDefault(),yn(t),wt(q(t===`team`?`chat:focusSession.teamMode`:t===`goal`?`chat:focusSession.goalMode`:`chat:focusSession.planMode`));return}}!t&&nn(e.nativeEvent,Ue.sendMessage)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit()),!Be&&B&&!t&&e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),un())},"data-mobile-composer-input":qe||void 0,enterKeyHint:qe&&Ue.sendMessage===`Enter`?`send`:`enter`,placeholder:Wt}),(0,$.jsx)(`span`,{role:`status`,className:`sr-only`,children:xt}),(0,$.jsxs)(`div`,{className:`focus-composer-footer @container/composer-footer flex min-w-0 items-center gap-1 px-2 pt-1 pb-2 max-[650px]:px-1.5 max-[650px]:pb-1.5`,"data-composer-toolbar":!0,children:[Bn,Ln.input,Vn,(0,$.jsx)(`span`,{className:`min-w-0 flex-1`}),Rn,(0,$.jsx)(`div`,{className:`flex min-w-0 shrink items-center [&_.model-effort-pill]:max-w-full @max-[300px]/composer-footer:[&_.model-effort-pill>span:nth-child(n+2)]:hidden`,children:Hn}),(0,$.jsx)(io,{streaming:B,queueing:on,submitting:sn,stopping:cn,preparing:ut.preparingAttachments.length>0,hasDraft:!!(it.trim()||ut.attachments.length||pn),canQueue:!!Fe,blockedReason:!B&&(F||I||L)?q(`chat:focusSession.waitingForModel`):void 0,disabled:!B&&(!!F||I||L||on||!it.trim()&&!ut.attachments.length&&!pn),onLongPress:Ve&&B?Y:void 0,longPressHint:q(`board:composer.longPressSteer`)})]})]})]}),!Ht&&!B&&(0,$.jsx)(Q.Suspense,{fallback:null,children:(0,$.jsx)(co,{plansAvailable:Ze,onPromptSelect:In})})]},`composer`);return(0,$.jsxs)(Jn,{className:Ft(`focus-session [--chat-content-width:768px] [.session-dock-panel_&]:overflow-hidden [.session-dock-panel_&]:min-h-0 [.session-dock-panel_&]:border-0 [.session-dock-panel_&]:rounded-[0] [.session-dock-panel_&]:bg-[var(--panel)] [.session-dock-panel_&]:p-0 [.session-dock-panel_&]:shadow-[none] [[data-theme='dark']_.session-dock-panel_&]:bg-[var(--main-surface-bg)] min-[651px]:[[data-density='compact']_.app-card:not(&)]:p-[10px] max-[650px]:min-h-[460px] max-[650px]:[.session-dock-panel_&]:min-h-0 relative flex h-full min-h-0 flex-col ${Ht?`has-conversation`:`is-empty`}`,Ut&&`[&_[data-chat-region=messages]]:!flex-none [&_[data-chat-region=messages]]:mt-[max(48px,calc((100dvh-560px)/2))] [&_[data-chat-region=messages]]:h-[96px] [&_[data-chat-region=messages]]:!overflow-visible [&_.transcript]:!overflow-visible [&_.transcript]:!p-0 max-[650px]:[&_[data-chat-region=messages]]:mt-8 max-[650px]:[&_[data-chat-region=messages]]:h-[96px]`),"data-chat-message-style":`bubble`,children:[(0,$.jsxs)(`div`,{ref:Nt,className:Ft(`flex h-full min-h-0 min-w-0 flex-1 flex-col`,Ht?`overflow-hidden`:`overflow-auto`),children:[(0,$.jsx)(`div`,{className:`shrink-0`,"data-chat-region":`header`,children:Re?.headerHost?(0,ci.createPortal)(Gn,Re.headerHost):Re?null:Gn}),(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,"data-chat-region":`messages`,"data-focus-region":`content`,children:Dn?(0,$.jsx)(be.Provider,{value:Dn,children:Kn}):Kn}),(0,$.jsx)(`div`,{className:`shrink-0`,"data-chat-region":`composer`,"data-focus-region":`composer`,children:Yn})]}),Re?.sourceActionHost&&(0,ci.createPortal)((0,$.jsx)(mi,{cwd:N,selection:ut}),Re.sourceActionHost),(0,$.jsx)(gi,{open:ht,sessionId:e.id,onClose:()=>gt(!1),onSelect:mn,onCommandSelect:e=>In($e(e,it))}),(0,$.jsx)(Xa,{open:yt,sessionId:e.id,sessionName:e.name||e.id,messages:n,streaming:B,sendPrompt:async(...e)=>{await Pe(...e)},onAbort:Le,onClose:()=>bt(!1)})]})}),po=(0,Q.createContext)(null),mo=40,ho=[];function go({sessionId:e,onCreateSession:t}){let n=(0,Q.useContext)(po),r=e??(n?.activeId||``);return r?(0,$.jsx)(_o,{sessionId:r,panelId:`single-${r}`,shortcutEnabled:!0},r):(0,$.jsx)(vo,{onNewSession:t})}function _o({sessionId:e,panelId:t,shortcutEnabled:n,onFocusCapture:r}){let i=(0,Q.useContext)(po),a=(0,Q.useContext)(ye),o=T(e=>e.capabilities),s=i?.subscribeSessionState,c=i?.getSessionState,l=(0,Q.useMemo)(()=>t=>s?.(e,t)??(()=>{}),[s,e]),u=(0,Q.useMemo)(()=>()=>c?.(e),[c,e]),d=(0,Q.useSyncExternalStore)(l,u),f=i?.sessions.find(t=>t.id===e),p=d||ge,m=Ce(p,f),h=ue(d,f),g=d&&Object.hasOwn(d,`team`)?d.team:f?.team??null,_=_e(h,{streaming:m})?h:null,v=i?.sessionTreePulseSessionId===e?i.sessionTreePulseToken:0,y=i?.loadSessionMessages,b=i?.loadSessionThinkingLevel,x=(0,Q.useRef)(``);(0,Q.useEffect)(()=>{e&&y?.(e,{limit:mo})},[y,e]),(0,Q.useEffect)(()=>{!e||!f||!b||p.thinkingStatus||(p.availableThinkingLevels||[]).length||x.current!==e&&(x.current=e,b(e))},[b,f,e,p.availableThinkingLevels,p.thinkingStatus,m]);let S=(0,Q.useMemo)(()=>({onLoadLatest:()=>i?.loadSessionMessages(e,{force:!0}),onLoadOlder:()=>i?.loadOlderMessages(e)??!1,onModelChange:t=>i?.switchSessionModel(e,t),onThinkingLevelChange:t=>i?.switchSessionThinkingLevel(e,t),onExecutionModeChange:t=>i?.switchSessionExecutionMode(e,t)??!1,onRunModeChange:t=>i?.switchSessionRunMode(e,t)??!1,onGoalPause:()=>i?.pauseGoal(e),onGoalBudgetChange:t=>i?.setGoalBudget(e,t),onCompact:()=>i?.compactSession(e),onApproval:(t,n)=>i?.resolveToolApproval(e,t,n),onAnswerQuestion:async(t,n)=>{await i?.answerQuestion(e,t,n)},onWorkspace:()=>{f&&i?.selectSessionWorkspace(f)},onRename:()=>{f&&i?.renameSession(f)},onBranchFromHere:(e,t)=>{if(f)return i?.branchFromEntry(f,e,t)},onCreateChildSession:e=>{if(f)return i?.createChildSession(f,e)},onRetryLastTurn:()=>i?.retryLastTurn(e),onTreeNavigated:()=>i?.reloadSessionBranch(e),onSend:(t,n,r,a,o,s,c)=>i?.sendPrompt(t,e,n,r,a,o,s,{onAccepted:c}),onQueue:(t,n,r,a)=>i?.queuePrompt(t,e,n,r,a)??!1,onWithdrawQueuedInput:t=>i?.withdrawQueuedInput(e,t)??Promise.resolve(null),onAbort:()=>i?.abort(e)}),[i,e,f]);if(!i||!f)return(0,$.jsxs)(`div`,{className:`session-dock-missing flex h-full min-h-[180px] items-center justify-center gap-2 text-sm text-content-secondary`,children:[(0,$.jsx)(ht,{size:16}),i?`Session unavailable`:`Loading session`]});let C=i.pendingAsset?.asset&&(!i.pendingAsset.targetSessionId||i.pendingAsset.targetSessionId===e)?i.pendingAsset.asset:null,E=p.historyWindow?.messages||p.messages||ho,D=p.loaded?`ready`:p.loading||!p.error?`loading`:`error`,O=!!(p.recovering&&!E.length&&!p.error),k=p.lifecycle?.phase===`completed`&&!p.error&&!p.runStopped,A=typeof p.runStartedAt==`string`?p.runStartedAt:null,j=p.goal??f.goal??null,M=(0,$.jsx)(fo,{session:f,shortcutEnabled:n,messages:E,transcriptLoadState:O?`loading`:D,hasNewer:!!p.historyWindow,messageStart:p.historyWindow?.messageStart??p.messageStart,hasOlder:p.historyWindow?.hasOlder??p.hasOlder,loadingOlder:p.loadingOlder,olderError:p.olderError,model:p.model||f.model||i.defaultModel,thinkingLevel:p.thinkingLevel||f.thinkingLevel||`medium`,availableThinkingLevels:p.availableThinkingLevels||ho,thinkingStatus:p.thinkingStatus||``,thinkingMessage:p.thinkingMessage||``,executionMode:p.executionMode||f.executionMode||`approval-required`,runMode:p.runMode||f.runMode||`plan`,goal:j,team:g,plan:_,currentActivity:p.currentActivity,activityFeed:p.activityFeed||ho,tools:p.tools||ho,thinkingText:p.thinkingText||``,queuedInputs:p.queuedInputs||ho,withdrawingInputIds:p.withdrawingInputIds||ho,compaction:p.compaction,contextUsage:p.contextUsage,sessionUsage:p.sessionUsage,sessionTreeRevision:p.sessionTreeRevision,sessionTreePulse:v,cwd:p.cwd||f.cwd,availableModels:i.availableModels,pendingRuntimeSelection:p.pendingRuntimeSelection,switchingModel:p.switchingModel,switchingThinking:p.switchingThinking,switchingCwd:p.switchingCwd,switchingPermission:p.switchingPermission,streaming:m,runStartedAt:p.runStartedAt,lastActivityAt:p.lastActivityAt,runFinishedAt:p.runFinishedAt,runStopped:p.runStopped,runNotice:p.runNotice,approvals:p.approvals||ho,questions:p.questions||ho,error:p.error||(i.activeId===e?i.globalError:``),pendingAsset:C,onAssetConsumed:i.onAssetConsumed,notify:i.notify,onOpenModelSettings:i.openModelSettings,onCompactionThresholdChange:i.setCompactionThreshold,...S});return(0,$.jsx)(`div`,{className:Ft(`session-dock-panel w-full h-full min-w-0 min-h-0 overflow-hidden [container-type:inline-size] bg-panel`,a&&`animate-[fade-in_var(--d-fast)_var(--ease-enter)]`),onFocusCapture:r,"data-session-panel":e,children:a?(0,$.jsx)(si,{sessionId:e,messages:E,cwd:p.cwd||f.cwd||``,active:n,plan:_,goal:j,team:g,activity:p.activityFeed?.length?p.activityFeed:p.tools||ho,planTab:!!(_?.items?.length||j||g),streaming:m,completed:k,runStartedAt:A,requestConfirm:i.requestConfirm,children:M},e):(0,$.jsx)(Ur,{messages:E,taskName:f.name||e,cwd:p.cwd||f.cwd||``,sessionId:e,panelId:t||`mobile-${e}`,active:n,mobile:i.mobileLayout,plan:_,streaming:m,completed:k,runStartedAt:A,plansAvailable:w(o,`plans`),requestConfirm:i.requestConfirm,children:M},e)})}function vo({onNewSession:e,newSessionShortcut:t}){let{t:n}=o();return(0,$.jsxs)(`div`,{className:`flex h-full min-h-[180px] flex-col items-center justify-center gap-1.5 px-6 text-center`,children:[(0,$.jsx)(yn,{className:`mb-1.5`}),(0,$.jsx)(`strong`,{className:`text-sm font-medium text-content`,children:n(`chat:chatDock.openAChatToBegin`)}),(0,$.jsx)(`span`,{className:`max-w-[320px] text-xs leading-relaxed text-content-muted`,children:n(`chat:chatDock.openAChatFromTheSessionListOrSplitItInAnyDirection`)}),e?(0,$.jsxs)(Y,{variant:`secondary`,className:`mt-3`,onClick:()=>void e(),children:[(0,$.jsx)(Ge,{"aria-hidden":`true`}),n(`chat:chatDock.newChat`),t?(0,$.jsx)(Lt,{"aria-hidden":`true`,className:`ml-1.5 pointer-coarse:hidden`,children:t.split(/\+(?=.)/).map(e=>(0,$.jsx)(Rt,{children:e},e))}):null]}):null]})}var yo=1e4;function bo(e,t){return{defaultModel:e.model?`${e.provider}/${e.model}`:t(`chat:chatPage.noModelConfigured`),availableModels:e.providers.flatMap(e=>e.configured&&e.enabled?e.models.filter(e=>e.kind===`chat`).map(t=>({key:`${e.id}/${t.id}`,provider:e.id,modelId:t.id,label:t.name||t.id,providerName:e.name||e.id})):[])}}function xo(e){let t=e.getQueryData(m)?.sessions,n=e.getQueryData([`config`]);return Array.isArray(t)&&t.length&&n?{sessions:t,config:n}:null}function So({notify:e}){let{t:r}=o(),i=f(),[a]=(0,Q.useState)(()=>xo(i)),[s,c]=(0,Q.useState)(()=>a?.sessions??[]),[l,p]=(0,Q.useState)(()=>n.getItem(u.activeSession)||``),[h,g]=(0,Q.useState)({}),[_,v]=(0,Q.useState)(!a),[y,b]=(0,Q.useState)(``),[x,S]=(0,Q.useState)(()=>a?bo(a.config,r).defaultModel:r(`chat:chatPage.waitingForConfiguration`)),[C,w]=(0,Q.useState)(()=>a?bo(a.config,r).availableModels:[]),T=(0,Q.useRef)(s),E=(0,Q.useRef)(h),D=(0,Q.useRef)(new Map),O=(0,Q.useRef)(null),k=(0,Q.useRef)(new Map),A=(0,Q.useRef)(new Set),j=(0,Q.useRef)(0),M=(0,Q.useRef)(0),[N]=(0,Q.useState)(L),R=(0,Q.useCallback)(e=>{let t=T.current,n=typeof e==`function`?e(t):e;if(n===t)return n;let r=i.setQueryData(m,e=>e?{...e,sessions:n}:void 0)?.sessions??n;return r!==T.current&&(T.current=r,c(r)),r},[i]),B=(0,Q.useCallback)(()=>{if(j.current)return;let e=i.getQueryData(m)?.sessions;if(!(!Array.isArray(e)||e===T.current)){if(e.length)M.current=0;else if(T.current.length&&Date.now()<M.current)return;T.current=e,c(e)}},[i]);(0,Q.useEffect)(()=>{B();let e=d(m);return i.getQueryCache().subscribe(t=>{t.type===`updated`&&t.query.queryHash===e&&B()})},[i,B]),(0,Q.useEffect)(()=>zt(window,e=>{N.record(e),R(t=>F(t,e))}),[N,R]),(0,Q.useEffect)(()=>Xt(window,e=>{R(t=>z(t,e))}),[R]);let V=(0,Q.useCallback)(e=>{let t=A.current.size?Object.fromEntries(Object.entries(e).filter(([e])=>!A.current.has(e))):e,n=E.current;E.current=t,g(t);let r=Object.keys(t).filter(e=>t[e].streaming!==n[e]?.streaming);if(r.length){let e=new Set(r);i.setQueryData(m,n=>n&&{...n,sessions:n.sessions.map(n=>e.has(n.id)?{...n,streaming:t[n.id].streaming}:n)})}let a=new Set([...Object.keys(n),...Object.keys(t)]);for(let e of a){if(n[e]===t[e])continue;let r=D.current.get(e);if(r)for(let e of[...r])e()}},[i]);(0,Q.useEffect)(()=>Bt(window,({deletedIds:e})=>{N.remove(e);let t=new Set(e),n=R(e=>e.filter(e=>!t.has(e.id)));p(e=>t.has(e)?n[0]?.id||``:e);let r=E.current;e.some(e=>e in r)&&V(Object.fromEntries(Object.entries(r).filter(([e])=>!t.has(e))))}),[V,N,R]);let H=(0,Q.useCallback)((e,t)=>{let n=D.current.get(e)||new Set;return n.add(t),D.current.set(e,n),()=>{n.delete(t),n.size||D.current.delete(e)}},[]),ee=(0,Q.useCallback)(e=>E.current[e]||ge,[]),U=(0,Q.useCallback)((e,t)=>{if(!e||A.current.has(e))return;let n=E.current,r=n[e]||ge,i=le(r,t);i!==r&&V({...n,[e]:i})},[V]),te=(0,Q.useCallback)((e,{panelOpen:t=!1,localStreamOwned:n=!1}={})=>{if(!e||t||n||k.current.has(e))return!1;let r=E.current,i=r[e];if(!i||me(i))return!1;let a={...r};return delete a[e],V(a),!0},[V]),ne=(0,Q.useCallback)(e=>{if(!e)return;A.current.add(e);let t={...E.current};delete t[e],V(t)},[V]),re=(0,Q.useCallback)(e=>{if(A.current.has(e))return()=>{};let t=k.current;t.set(e,(t.get(e)??0)+1);let n=!1;return()=>{if(n)return;n=!0;let r=t.get(e)??0;r>1?t.set(e,r-1):(t.delete(e),te(e))}},[te]),W=(0,Q.useCallback)(async(e,{preserveExistingOnEmpty:t=!1}={})=>{let n=N.getRevision();t&&(j.current+=1);let r;try{let e=await X.listSessions(),i=!!(t&&!e.sessions.length&&T.current.length);i&&(M.current=Date.now()+yo),r=i?T.current:N.reconcile(e.sessions,n)}finally{t&&(--j.current,B())}return R(r),p(e||(e=>r.some(t=>t.id===e)?e:r[0]?.id||``)),Jt(),r},[B,N,R]),ie=(0,Q.useCallback)((t=``,{inheritRecentCwd:n=!0}={})=>{if(O.current)return O.current;let i=(async()=>{try{b(``);let i=await X.createSession(r(`chat:chatPage.newChat`),I(t,T.current,n));p(i.id),R(e=>P(e,[i])),U(i.id,{messages:[],tools:[],approvals:[],queuedInputs:[],permissionMode:i.permissionMode||`ask`,executionMode:i.executionMode||`approval-required`,runMode:i.runMode||`plan`,goal:i.goal||null,plan:Nn(i,null),contextUsage:i.contextUsage||null,sessionUsage:i.sessionUsage||null,compaction:null,streaming:!1,error:``,loaded:!0,pageSize:40,messageStart:0,hasOlder:!1,olderCursor:null,runStartedAt:null,lastActivityAt:null,runFinishedAt:null,runStopped:!1,runNotice:``});try{await W(i.id)}catch(e){b(r(`chat:chatPage.theChatWasCreatedButTheListCouldNotBeRefreshedError`,{error:Z(e)}))}return e(r(`chat:chatPage.newChatCreated`)),i.id}catch(e){return b(Z(e)),``}})();return O.current=i,i.finally(()=>{O.current===i&&(O.current=null)}),i},[e,W,r,U,R]);(0,Q.useEffect)(()=>{let i=!0,o=N.getRevision();return(a?Promise.resolve([{sessions:a.sessions},a.config]):Promise.all([X.listSessions({refresh:!1}),X.getConfig()])).then(async([a,s])=>{if(!i)return;let c=bo(s,r);S(c.defaultModel),w(c.availableModels);let l=a.sessions;if(!l.length&&(O.current||Object.keys(E.current).length)){if(await O.current,!i)return;o=N.getRevision(),l=(await X.listSessions()).sessions}if(l.length||(l=[await X.createSession(r(`chat:chatPage.newChat`))]),!i)return;l=N.reconcile(l,o),R(e=>P(e,l));for(let e of l)U(e.id,{team:e.team||null,agents:e.agents||[],plan:Nn(e,null),...e.streaming?{streaming:!0,recovering:!0,loaded:!1,error:``}:{}});let d=n.getItem(u.activeSession),f=new Set([...l.map(e=>e.id),...Object.keys(E.current)]);if(p(e=>f.has(e)?e:d&&f.has(d)?d:l[0]?.id||``),typeof window<`u`&&window.__PISPER_MOBILE_APP__)try{let{consumeRemoteFallbackNotice:n}=await t(async()=>{let{consumeRemoteFallbackNotice:e}=await import(`./mobile-remote-fallback-NJCTBu85.js`);return{consumeRemoteFallbackNotice:e}},__vite__mapDeps([121,8]));n()&&e(r(`chat:chatPage.remoteUnavailableSwitchedToLocal`))}catch{}}).catch(async e=>{if(i){if(typeof window<`u`&&window.__PISPER_MOBILE_APP__)try{let{fallbackRemoteToLocalAfterFailure:n}=await t(async()=>{let{fallbackRemoteToLocalAfterFailure:e}=await import(`./mobile-remote-fallback-NJCTBu85.js`);return{fallbackRemoteToLocalAfterFailure:e}},__vite__mapDeps([121,8]));if(await n(e))return}catch{}i&&b(Z(e))}}).finally(()=>i&&v(!1)),()=>{i=!1}},[e,a,r,N,U,R]),(0,Q.useEffect)(()=>{l?n.setItem(u.activeSession,l):n.removeItem(u.activeSession)},[l]);let ae=s.find(e=>e.id===l),oe=(h[l]||ge).model||ae?.model||``;return(0,Q.useEffect)(()=>{Vt(l,oe)},[l,oe]),(0,Q.useEffect)(()=>(document.title=ae?.name?`${ae.name} · ${yt}`:yt,()=>{document.title=yt}),[ae?.name]),{sessions:s,sessionsRef:T,activeId:l,setActiveId:p,sessionStates:h,sessionStatesRef:E,loading:_,globalError:y,setGlobalError:b,defaultModel:x,availableModels:C,updateSessions:R,replaceSessionStates:V,updateSessionState:U,releaseSessionState:te,retainSessionState:re,discardSessionState:ne,subscribeSessionState:H,getSessionState:ee,refreshSessions:W,createSessionRecord:ie}}function Co({setActiveId:e,loadSessionMessages:t,openRoutedSession:n}){let r=(0,Q.useRef)(n);r.current=n;let i=(0,Q.useCallback)(t=>(t&&r.current?r.current(t):e(t),!0),[e]);return(0,Q.useEffect)(()=>{let e=e=>{let n=e.detail,r=n?.sessionId||n?.id;r&&(localStorage.removeItem(u.sessionOpenRequest),i(r),n?.targetEntryId&&t(r,{force:!0,limit:40}))};return window.addEventListener(Wt,e),()=>window.removeEventListener(Wt,e)},[t,i]),(0,Q.useEffect)(()=>Bt(window,({deletedIds:e})=>{for(let t of e)Se.getState().forget(t),ut(t)}),[]),{openSession:i}}function wo(e){return!!e?.agents?.some(e=>[`queued`,`starting`,`running`].includes(String(e.status)))}function To(e,{localStreamOwned:t=!1}={}){return!e||t?!1:!!(e.recovering||e.streaming||e.approvals?.length||wo(e))}function Eo(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function Do(e,t){let n=new Map(e.map(e=>[e.id,e]));return t.map(e=>{let t=n.get(e.id);return t&&JSON.stringify(t)===JSON.stringify(e)?t:e})}function Oo(e,t){let n=Number(t.pageInfo?.start)||0,r=Number.isInteger(e.messageStart)?e.messageStart:null,i=r!=null&&r<=n,a=i?Math.max(0,n-r):0,o=i?r:n,s=i?[...e.messages.slice(0,a),...Do(e.messages,t.messages)]:Do(e.messages,t.messages),c=Math.max(0,s.length-200);return c&&(s=s.slice(c),o+=c),{messages:s,messageStart:o,hasNewer:!1,hasOlder:o>0,olderCursor:o>0?String(o):null}}function ko(e,t){let n=new Set(e.messages.map(e=>e.id)),r=[...t.messages.filter(e=>!n.has(e.id)),...e.messages],i=r.slice(0,200);return{messages:i,messageStart:t.pageInfo.start,hasOlder:t.pageInfo.hasMore,olderCursor:t.pageInfo.nextCursor,hasNewer:!!(e.hasNewer||r.length>i.length)}}function Ao(e,t){let n=ko(e.historyWindow?{...e,...e.historyWindow}:e,t);return e.historyWindow||n.hasNewer?{...e,historyWindow:n}:{...e,...n}}function jo(e){return{...e,historyWindow:null}}function Mo(e,t,n){if(t.streaming||!e.error&&!t.error)return{page:n,error:t.error||``};let r=e.messages.at(-2),i=e.messages.at(-1);if(r?.role!==`user`||!/^user-\d+$/.test(r.id)||i?.role!==`agent`||!/^agent-\d+$/.test(i.id))return{page:n,error:t.error||``};let a=Date.parse(e.runStartedAt||``),o=n.messages.findIndex(e=>{if(e.id===r.id)return!0;if(e.role!==`user`||!Number.isFinite(a))return!1;let t=new Date(e.timestamp).getTime();return Number.isFinite(t)&&t>=a});if(o>=0&&n.messages.slice(o+1).some(e=>e.role===`agent`))return{page:n,error:t.error||``};let s=[...n.messages,...o<0?[r]:[],{...i,streaming:!1,error:t.error||e.error||i.error}],c=Math.max(0,s.length-200),l=n.messageStart+c;return{page:{...n,messages:c?s.slice(c):s,messageStart:l,hasOlder:l>0,olderCursor:l>0?String(l):null},error:t.error||e.error||``}}function No(e,t,n=new Date().toISOString(),r=e.runtimeSelectionRevision||0){let i=r!==(e.runtimeSelectionRevision||0),a=!!(e.switchingModel||e.switchingThinking||i),o=t.finishedAt||e.runFinishedAt||n,s=Mo(e,t,Oo(e,t));return{...de({...e,...s.page},t),tools:t.streaming?t.tools||[]:jn(t.tools||[],{finishedAt:o,error:t.error||``}),streaming:t.streaming,recovering:t.streaming,runStartedAt:t.startedAt||e.runStartedAt||null,lastActivityAt:t.lastActivityAt||e.lastActivityAt||t.startedAt||null,runFinishedAt:t.streaming?null:o,runNotice:t.streaming&&e.runNotice||``,loaded:!0,loading:!1,error:a?e.error:s.error,model:a?e.model:t.model||e.model,cwd:t.cwd||e.cwd,permissionMode:t.permissionMode||e.permissionMode,executionMode:t.executionMode||e.executionMode,runMode:t.runMode||e.runMode,goal:t.goal??e.goal??null,team:Eo(t,e.team),plan:Nn(t,e.plan??null),contextUsage:a?e.contextUsage:t.contextUsage??e.contextUsage??null,sessionUsage:t.sessionUsage??e.sessionUsage??null,compaction:t.compaction??e.compaction??null,approvals:t.approvals||[],questions:Array.isArray(t.questions)?t.questions:e.questions||[],agents:t.agents||[],currentActivity:t.streaming?t.currentActivity||e.currentActivity||null:t.currentActivity?.type===`agent`?t.currentActivity:null,lifecycle:t.lifecycle??e.lifecycle??null,sessionTreeRevision:Number(t.sessionTreeRevision??e.sessionTreeRevision??0),activityFeed:t.streaming?t.activityFeed||e.activityFeed||[]:(t.activityFeed||[]).filter(e=>e.type===`agent`),thinkingText:t.streaming?t.thinkingText??e.thinkingText??``:``,...t.streaming?{}:{hadQueuedInput:!1}}}function Po({sessionStates:e,sessionStatesRef:t,localStreamSessionsRef:n,streamGenerationRef:r,updateSessionState:i,updateSessions:a,pollOnly:o}){let s=(0,Q.useRef)(new Set),c=(0,Q.useRef)({timer:null,activeSessions:new Set}),l=(0,Q.useRef)({timer:null,ids:new Set}),u=(0,Q.useCallback)(async(e,{force:o=!1}={})=>{if(!e||!o&&n.current.has(e)||s.current.has(e))return;s.current.add(e);let c=t.current[e]?.runtimeSelectionRevision||0;try{let s=await X.getLiveSession(e);if(!o&&n.current.has(e))return;if(o&&n.current.has(e)){let t=r.current.get(e)||0;r.current.set(e,t+1),n.current.delete(e)}Ua(e,s),i(e,e=>No(e,s,void 0,c)),a(n=>n.map(n=>n.id===e?{...n,streaming:s.streaming,model:t.current[e]?.model||s.model||n.model,cwd:s.cwd||n.cwd,permissionMode:s.permissionMode||n.permissionMode,executionMode:s.executionMode||n.executionMode,runMode:s.runMode||n.runMode,goal:s.goal??n.goal??null,team:Eo(s,n.team),plan:Nn(s,n.plan??null)}:n))}catch(t){n.current.has(e)||i(e,{recovering:!1,loading:!1,error:Z(t)})}finally{s.current.delete(e)}},[n,t,r,i,a]),d=(0,Q.useCallback)(async(e,{force:r=!1,limit:o=40}={})=>{if(!e)return;let s=t.current[e];if(r&&s?.historyWindow){if(i(e,jo),n.current.has(e))return;if(s.streaming||s.recovering){await u(e,{force:r});return}}if(s?.recovering){await u(e,{force:r});return}if(!(!r&&(s?.loading||s?.streaming||s?.loaded&&(s.pageSize||0)>=o))){i(e,{loading:!0});try{let r=await X.getMessages(e,{limit:o}),s=!1;i(e,t=>t.streaming&&!t.loaded&&!t.messages?.length&&!n.current.has(e)?(s=!0,{...t,loading:!1,pageSize:Math.max(t.pageSize||0,o)}):t.streaming?{...t,loaded:!0,loading:!1,pageSize:Math.max(t.pageSize||0,o)}:{...t,...Oo(t,r),model:t.model||r.model||void 0,contextUsage:r.contextUsage??t.contextUsage??null,sessionUsage:r.sessionUsage??t.sessionUsage??null,loaded:!0,loading:!1,pageSize:Math.max(t.pageSize||0,o),error:``,olderError:``}),s&&u(e);let c=t.current[e]?.model||(typeof r.model==`string`?r.model:``);c&&a(t=>t.map(t=>t.id===e&&t.model!==c?{...t,model:c}:t))}catch(t){i(e,{loading:!1,error:Z(t)})}}},[n,t,u,i,a]),f=(0,Q.useCallback)(async e=>{let n=t.current[e],r=n?.historyWindow?{...n,...n.historyWindow}:n;if(!e||!r?.hasOlder||!r.olderCursor||n.loadingOlder)return!1;let a=n.historyWindow??null;i(e,{loadingOlder:!0,olderError:``});try{let t=await X.getMessages(e,{limit:40,before:r.olderCursor});return i(e,e=>{let n=e.historyWindow||e;return(e.historyWindow??null)!==a||n.olderCursor!==r.olderCursor?{...e,loadingOlder:!1}:{...Ao(e,t),loadingOlder:!1,olderError:``}}),t.messages.length>0}catch(t){return i(e,{loadingOlder:!1,olderError:Z(t)}),!1}},[t,i]),p=(0,Q.useCallback)(()=>{c.current.timer&&window.clearInterval(c.current.timer),c.current.timer=null,c.current.activeSessions.clear()},[]),m=(0,Q.useCallback)(()=>{c.current.timer||!c.current.activeSessions.size||(c.current.timer=window.setInterval(()=>{if(typeof document<`u`&&document.hidden)return;let e=Array.from(c.current.activeSessions).map(async e=>{let r=t.current[e];if(!To(r,{localStreamOwned:n.current.has(e)})){c.current.activeSessions.delete(e);return}await u(e)});Promise.allSettled(e).then(()=>{c.current.activeSessions.size||p()})},2e3))},[n,t,p,u]);return(0,Q.useEffect)(()=>{let t=new Set(Object.keys(e));for(let e of c.current.activeSessions)t.has(e)||c.current.activeSessions.delete(e);let r=[];for(let[t,i]of Object.entries(e)){let e=(o===void 0||t===o)&&To(i,{localStreamOwned:n.current.has(t)});e&&!c.current.activeSessions.has(t)&&r.push(t),e?c.current.activeSessions.add(t):c.current.activeSessions.delete(t)}if(c.current.activeSessions.size?m():p(),!r.length)return;let i=l.current;for(let e of r)i.ids.add(e);i.timer===null&&(i.timer=window.setTimeout(()=>{i.timer=null;let e=Array.from(i.ids);if(i.ids.clear(),!(typeof document<`u`&&document.hidden))for(let t of e)c.current.activeSessions.has(t)&&u(t)},0))},[m,n,o,e,p,u]),(0,Q.useEffect)(()=>{let e=l.current;return()=>{p(),e.timer!==null&&window.clearTimeout(e.timer),e.timer=null,e.ids.clear()}},[p]),{syncLiveSession:u,loadSessionMessages:d,loadOlderMessages:f,liveSyncInFlightRef:s}}function Fo(e,t){let n=null,r=!1,i=typeof document<`u`,a=()=>!i||document.visibilityState===`visible`,o=()=>{r&&=(document.removeEventListener(`visibilitychange`,c),!1)},s=()=>{n=setTimeout(()=>{n=null,e()},t)},c=()=>{!a()||n!=null||(o(),s())},l=()=>{!i||r||(document.addEventListener(`visibilitychange`,c),r=!0)};return{schedule(){n!=null||r||(a()?s():l())},flushNow(){n!=null&&(clearTimeout(n),n=null),o(),e()},cancel(){n!=null&&clearTimeout(n),n=null,o()},get active(){return n!=null||r}}}function Io(e,{intervalMs:t=48}={}){let n=null,r=null,i=Fo(()=>{if(n==null)return;let t=n,i=r;n=null,r=null,e(t,i)},t);return{push(e,t=new Date().toISOString()){n=e,r=t,i.schedule()},flush(){i.flushNow()},cancel(){i.cancel(),n=null,r=null}}}function Lo(e,{intervalMs:t=80}={}){let n=new Map,r=null,i=Fo(()=>{if(!n.size)return;let t=n,i=r;n=new Map,r=null,e(t,i)},t);return{push(e,t,a=new Date().toISOString()){e&&(n.set(e,{...n.get(e)||{},...t}),r=a,i.schedule())},flush(){i.flushNow()},cancel(){i.cancel(),n=new Map,r=null}}}function Ro(e){return e>=55296&&e<=56319}function zo(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e.charCodeAt(r)===t.charCodeAt(r);)r+=1;return r>0&&Ro(e.charCodeAt(r-1))?r-1:r}var Bo=50;function Vo(e,{minCharsPerSecond:t=36,maxCharsPerSecond:n=1200,catchUpRemaining:r=160,requestFrame:i,cancelFrame:a,isCurrent:o=()=>!0,now:s=()=>typeof performance<`u`&&performance.now?performance.now():Date.now()}={}){let c=!i&&typeof globalThis.requestAnimationFrame==`function`&&typeof globalThis.cancelAnimationFrame==`function`,l=i||(c?globalThis.requestAnimationFrame.bind(globalThis):e=>setTimeout(()=>e(s()),Math.ceil(Bo))),u=a||(c?globalThis.cancelAnimationFrame.bind(globalThis):clearTimeout),d=typeof document<`u`?document:null,f=()=>!d||d.visibilityState===`visible`,p=``,m=``,h=null,g=null,_=0,v=null,y=0,b=!1,x=new Set,S=e=>{let t=[...x];x.clear();for(let n of t)n(e)},C=()=>{m.length,e(m,h)},w=()=>{b=!0,g!=null&&u(g),d?.removeEventListener(`visibilitychange`,O),g=null,y=0,S(!1)},T=()=>{if(!b){if(!o()){w();return}g!=null&&u(g),g=null,y=0,m=p,v=s(),C(),m===p&&S(!0)}},E=e=>{if(g=null,b)return;if(!o()){w();return}if(!f()){x.size&&T();return}if(p===m){S(!0);return}let i=e-_;if(i+.001<Bo||v!=null&&e-v+.001<Bo){g=l(E);return}_=e;let a=m;p.startsWith(m)||(m=p.slice(0,zo(m,p)),y=0);let s=p.length-m.length;if(s>=480)m=p,y=0;else{let e=Math.max(0,Math.min(n,t+s*(s>=r?10:4))),a=y+e*Math.min(.08,Math.max(0,i/1e3)),o=Math.floor(a+1e-9);y=Math.max(0,a-o);let c=m.length;for(let e=0;e<o&&c<p.length;e+=1){let e=p.codePointAt(c)??0;if(Ro(e)&&c+1===p.length&&!x.size)break;c+=e>65535?2:1}m=p.slice(0,c)}m!==a&&(v=e,C()),m===p&&S(!0);let c=!x.size&&m.length+1===p.length&&Ro(p.charCodeAt(m.length));!b&&g==null&&m!==p&&!c&&f()?g=l(E):g??(y=0)},D=()=>{b||g!=null||!f()||p===m||(_=s(),g=l(E))},O=()=>{f()?D():x.size?T():(g!=null&&u(g),g=null,y=0)};return d?.addEventListener(`visibilitychange`,O),{setTarget(e,t=new Date().toISOString()){b||(p=String(e||``),h=t,D())},drain(){return b||!o()?(w(),Promise.resolve(!1)):m===p?Promise.resolve(!0):new Promise(e=>{x.add(e),f()?D():T()})},flush:T,cancel:w,getShown:()=>m,getTarget:()=>p}}var Ho=new Set(`contacts.search,camera.capture,location.current,device.info,device.capabilities,device.battery,device.storage,device.memory,device.network,device.display,device.locale,device.status,device.clipboard.get,device.clipboard.set,device.vibrate,device.flashlight,device.notify,photos.list,photos.create_album,photos.add_to_album,photos.delete,apps.open_url,apps.open_map,apps.open_system_settings,apps.open_dialer,apps.compose_sms,apps.open_app,apps.share_text`.split(`,`)),Uo=new Map,Wo=[];function Go(e,t){let n=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return n?n(e,t):Promise.reject(Error(`native bridge unavailable`))}async function Ko(e,t){let n=String(t.id||``),r=String(t.operation||``);if(!n||!Ho.has(r))return;let i=Date.parse(String(t.expiresAt||``));if(Number.isFinite(i)&&i<=Date.now()){await X.resolveMobileOperation(e,n,{ok:!1,error:`移动设备操作请求已过期。`});return}try{let i=await Go(`mobile_execute_device_operation`,{request:{id:n,operation:r,parameters:t.parameters&&typeof t.parameters==`object`?t.parameters:void 0}});await X.resolveMobileOperation(e,n,{ok:!0,result:i})}catch(t){await X.resolveMobileOperation(e,n,{ok:!1,error:t instanceof Error?t.message:String(t)})}finally{Wo.push(n),Wo.length>128&&Wo.splice(0,Wo.length-128)}}function qo(e){let t=String(e.id||``);!t||Wo.includes(t)||(Wo.push(t),Wo.length>128&&Wo.splice(0,Wo.length-128))}function Jo(e,t){let n=String(t.id||``);if(!n||Wo.includes(n)||Uo.has(n))return;let r=Ko(e,t).catch(()=>{}).finally(()=>Uo.delete(n));Uo.set(n,r)}function Yo(e){let t=String(e.path||``).trim().replaceAll(`\\`,`/`).toLowerCase();return t?`path:${t}`:`id:${e.id}`}function Xo(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function Zo(e,{agentId:t,responseText:n,data:r,finishedAt:i,error:a,preserveDisplayedText:o}){let s=!!a,c=r.lifecycle||e.lifecycle||{},l=de(e,r);return{...l,streaming:!1,runFinishedAt:i,lastActivityAt:i,...s?{}:{runNotice:``},currentActivity:r.currentActivity?.type===`agent`?r.currentActivity:null,lifecycle:{...c,phase:s?`failed`:`completed`,event:s?`runtime_error`:`runtime_done`,updatedAt:i},sessionTreeRevision:Number(r.sessionTreeRevision??e.sessionTreeRevision??0),activityFeed:(r.activityFeed||[]).filter(e=>e.type===`agent`),goal:s?e.goal:r.goal??e.goal??null,plan:s?e.plan:Nn(r,e.plan),team:Xo(r,e.team),agents:r.agents||e.agents||[],contextUsage:r.contextUsage??e.contextUsage??null,sessionUsage:r.sessionUsage??e.sessionUsage??null,compaction:r.compaction??e.compaction??null,approvals:s?[]:r.approvals||[],tools:jn(r.tools||e.tools,{finishedAt:i,...a?{error:a}:{}}),messages:l.messages.map(e=>e.id===t?{...e,text:o?e.text:typeof r.text==`string`?r.text:n||e.text,streaming:o?e.text!==n:!1,...s?{}:r.turnBoundaryEntryId?{turnBoundaryEntryId:String(r.turnBoundaryEntryId)}:{},...s?{}:r.assets?.length?{attachments:r.assets}:{}}:e)}}function Qo({sessionId:e,agentId:t,sessionStatesRef:n,updateSessionState:r,updateSessions:i,typewriter:a,thinkingScheduler:o,toolScheduler:s,t:c}){let l={responseText:``,responseRenderingStreaming:!0,thinkingText:``,thinkingPrefix:``,queuedDuringRun:!1},u=t=>{i(n=>n.map(n=>n.id===e?t(n):n))},d=(r,i)=>{let a=n.current[e]?.messages??[],o=a.findIndex(e=>e.id===t),s=a.slice(0,Math.max(0,o)).filter(e=>e.role===`user`).at(-1)?.text;Ha({sessionId:e,messageId:t,prompt:s,text:l.responseText,runId:l.runId,startedAt:l.startedAt,status:r,error:i})};return{dispatch:(i,f)=>{let p=new Date().toISOString();if(i===`run`)l.runId=typeof f.runId==`string`?f.runId:void 0,d(`started`);else if(i===`resync_required`)d(`recovering`);else if(i===`meta`)l.startedAt=typeof f.startedAt==`string`?f.startedAt:void 0,d(`started`),r(e,e=>({...de(e,f),model:f.model||e.model,thinkingLevel:f.thinkingLevel||e.thinkingLevel,cwd:f.cwd,permissionMode:f.permissionMode,executionMode:f.executionMode,runMode:f.runMode||e.runMode,goal:f.goal??null,plan:Nn(f,e.plan),team:Xo(f,e.team),agents:f.agents||e.agents||[],currentActivity:f.currentActivity||e.currentActivity||null,activityFeed:f.activityFeed||e.activityFeed||[],lifecycle:f.lifecycle??e.lifecycle??null,sessionTreeRevision:Number(f.sessionTreeRevision??e.sessionTreeRevision??0),thinkingText:f.thinkingText??e.thinkingText??``,contextUsage:f.contextUsage??e.contextUsage??null,sessionUsage:f.sessionUsage??e.sessionUsage??null,runStartedAt:f.startedAt||e.runStartedAt,lastActivityAt:f.lastActivityAt||p})),(f.model||f.thinkingLevel||f.cwd||f.permissionMode||f.executionMode||f.goal!==void 0||f.team!==void 0||Fn(f)!==void 0)&&u(e=>({...e,model:f.model||e.model,thinkingLevel:f.thinkingLevel||e.thinkingLevel,cwd:f.cwd||e.cwd,permissionMode:f.permissionMode||e.permissionMode,executionMode:f.executionMode||e.executionMode,runMode:f.runMode||e.runMode,goal:f.goal??e.goal??null,team:Xo(f,e.team),plan:Nn(f,e.plan??null)}));else if(i===`queue_update`)f.queuedInputs?.length&&(l.queuedDuringRun=!0),r(e,e=>de(e,{...f,queuedInputs:f.queuedInputs||[]}));else if(i===`agent_update`)r(e,e=>{let t=f.currentActivity||(f.agent?{type:`agent`,agent:f.agent,updatedAt:f.agent.lastActivityAt||p}:null);return{...e,team:Xo(f,e.team),agents:f.agents||[],currentActivity:e.currentActivity?.type===`tool`?e.currentActivity:t||e.currentActivity,activityFeed:t?Pn(e.activityFeed,t):e.activityFeed,lastActivityAt:f.agent?.lastActivityAt||p}}),Object.hasOwn(f,`team`)&&u(e=>({...e,team:Xo(f,e.team)}));else if(i===`agent_lifecycle`)r(e,e=>{let t=f.lifecycle||e.lifecycle,n=t?.event===`auto_retry_end`,r=t?.event===`turn_start`&&(e.lifecycle?.phase===`retrying`||e.currentActivity?.type===`retry`);return{...e,lifecycle:t,currentActivity:f.currentActivity||e.currentActivity,lastActivityAt:t?.updatedAt||p,runNotice:n&&t?.retry?.success?``:n&&t?.retry?.message?t.retry.message:r?``:e.runNotice}});else if(i===`session_tree_changed`)r(e,{sessionTreeRevision:Number(f.revision||0),lastActivityAt:p});else if(i===`thinking_level_changed`)r(e,{thinkingLevel:f.level,lastActivityAt:p}),u(e=>({...e,thinkingLevel:f.level}));else if(i===`context_usage`)r(e,{contextUsage:f});else if(i===`session_usage`)r(e,{sessionUsage:f});else if(i===`compaction_start`)s.flush(),r(e,e=>{let t={type:`compaction`,compaction:f,updatedAt:f.startedAt||p};return{...e,compaction:f,currentActivity:t,activityFeed:Pn(e.activityFeed,t),lastActivityAt:f.startedAt||p}});else if(i===`compaction_end`)r(e,e=>{let t={type:`model`,stage:`processing_result`,updatedAt:f.finishedAt||p};return{...e,compaction:f,currentActivity:t,activityFeed:Pn(e.activityFeed,t),lastActivityAt:f.finishedAt||p}});else if(i===`text_patch`)l.responseRenderingStreaming=!0,l.responseText=b(l.responseText,f),d(`streaming`),a.setTarget(l.responseText,p);else if(i===`text_delta`)l.responseText.length,l.responseRenderingStreaming=!0,l.responseText+=f.delta||``,d(`streaming`),a.setTarget(l.responseText,p);else if(i===`text_end`)l.responseText.length,typeof f.text==`string`&&(l.responseText=f.text),l.responseRenderingStreaming=!1,d(`streaming`),a.setTarget(l.responseText,f.updatedAt||p),r(e,e=>({...e,messages:e.messages.map(e=>e.id===t?{...e,streaming:e.text!==l.responseText}:e)}));else if(i===`thinking_reset`)l.thinkingText=``,l.thinkingPrefix=String(f.thinkingText||``).slice(-6e3),o.cancel(),r(e,{thinkingText:l.thinkingPrefix,currentActivity:{type:`model`,stage:`thinking`,updatedAt:f.updatedAt||p},lastActivityAt:f.updatedAt||p});else if(i===`thinking_patch`){l.thinkingText=b(l.thinkingText,f).slice(-6e3);let e=[l.thinkingPrefix,l.thinkingText].filter(Boolean).join(`
551
+ `;async function Sa(e){let t=new Blob([xa],{type:`application/javascript`}),n=URL.createObjectURL(t);try{await e.audioWorklet.addModule(n)}finally{URL.revokeObjectURL(n)}}async function Ca(e,t){if(g(t),!navigator.mediaDevices?.getUserMedia)throw Error(`当前环境不支持麦克风采集。`);if(!window.AudioContext&&!window.webkitAudioContext)throw Error(`当前环境不支持音频处理。`);let n=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1}),r=null,i=null,a=null,o=null,s=!1,c=null,l=()=>{if(s)return c??Promise.resolve();s=!0,t?.removeEventListener(`abort`,u);for(let e of n.getTracks())e.removeEventListener?.(`ended`,d),e.removeEventListener?.(`mute`,d),e.stop();return c=r?.close().catch(()=>{})??Promise.resolve(),i&&(i.port.onmessage=null,i.port.close()),a?.disconnect(),i?.disconnect(),o?.disconnect(),c},u=()=>{l()},d=()=>{s||(l(),window.dispatchEvent(new Event(`pisper:speech-interrupted`)))},f=()=>{if(g(t),s)throw new DOMException(`Microphone capture was interrupted.`,`AbortError`)};t?.addEventListener(`abort`,u,{once:!0});for(let e of n.getTracks()){if(s)break;e.addEventListener?.(`ended`,d),e.addEventListener?.(`mute`,d),e.readyState===`ended`&&d()}try{f(),r=new(window.AudioContext||window.webkitAudioContext)({latencyHint:`interactive`}),await Sa(r),f(),a=r.createMediaStreamSource(n),i=new AudioWorkletNode(r,`pisper-voice-input`,{numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],processorOptions:{targetSampleRate:pa}}),o=r.createGain(),o.gain.value=0,i.port.onmessage=n=>{!s&&!t?.aborted&&e(new Float32Array(n.data))},a.connect(i),i.connect(o),o.connect(r.destination),await r.resume(),f()}catch(e){throw await l(),e}return{stop:l}}var wa=32,Ta=50;function Ea(e,t){if(e instanceof DOMException&&e.name===`NotAllowedError`)return`permission`;let n=typeof e==`string`?e:e instanceof Error?e.message:typeof e==`object`&&e&&`message`in e?String(e.message):``;return n.includes(`microphone_permission_denied`)?`permission`:n||t}function Da({onInsert:e,onLiveText:t,sessionId:n,disabled:r=!1,shortcutEnabled:i=!1,variant:a=`button`,controlRef:s}){let{t:c}=o(),l=Qi([`asr`]),u=$t(e=>e.bindings.voiceInput),[d,f]=(0,Q.useState)(`idle`),[p,m]=(0,Q.useState)(``),h=(0,Q.useRef)(`idle`),g=e=>{h.current=e,f(e)},_=(0,Q.useRef)(null),v=(0,Q.useRef)(null),y=(0,Q.useRef)(null),b=(0,Q.useRef)(null),x=(0,Q.useRef)(0),S=(0,Q.useRef)(0),C=(0,Q.useRef)(()=>{}),w=(0,Q.useRef)(!1),T=(0,Q.useRef)(null),E=(0,Q.useRef)(null),D=(0,Q.useRef)(()=>{}),O=(0,Q.useRef)(0),k=(0,Q.useRef)(Wi()),A=(0,Q.useRef)(0),[j,M]=(0,Q.useState)([]),N=(0,Q.useRef)([]),P=(0,Q.useRef)(null),F=(0,Q.useRef)(e),I=(0,Q.useRef)(t);F.current=e,I.current=t;let L=()=>{window.clearTimeout(S.current),S.current=0},R=async()=>{L();let e=y.current;y.current=null,e?.abort(),b.current?.(),b.current=null,P.current?.dispose(),P.current=null;let t=v.current;v.current=null;let n=_.current;_.current=null,await Promise.allSettled([t?.stop(),n?.dispose()])},z=e=>{console.warn(`[voice-input]`,e),m(e),g(`error`),window.clearTimeout(O.current),O.current=window.setTimeout(()=>{h.current===`error`&&(m(``),g(`idle`))},4e3)},B=()=>{L(),w.current=!1,g(`idle`),m(``)},V=()=>{T.current=null,E.current=null,x.current+=1,R(),I.current?.(null),B()};D.current=V,(0,Q.useEffect)(()=>{let e=()=>{(E.current!==x.current||T.current===x.current)&&D.current()},t=()=>{document.visibilityState===`hidden`&&e()},n=()=>D.current();return window.addEventListener(`blur`,e),window.addEventListener(`pisper:speech-interrupted`,n),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`pisper:speech-interrupted`,n),document.removeEventListener(`visibilitychange`,t),window.clearTimeout(O.current),e()}},[n,i,r]),(0,Q.useEffect)(()=>{if(d!==`recording`){M([]),N.current=[];return}let e=()=>{let e=performance.now()/1e3,t=A.current,n=N.current,r=[];for(let i=0;i<wa;i+=1){let a=i/31*2-1,o=Math.cos(a*Math.PI/2)**1.3,s=.1+.06*Math.sin(e*2.2+i*.55)+.04*Math.sin(e*3.7+i*.21),c=.75+.5*Math.abs(Math.sin(e*9+i*1.7)),l=Math.min(1,Math.max(.05,s+t*o*c*1.15)),u=n[i]??l,d=l>u?.55:.28;r.push(u+(l-u)*d)}N.current=r,M(r)};e();let t=window.setInterval(e,Ta);return()=>window.clearInterval(t)},[d]);let H=()=>!r&&(h.current===`idle`||h.current===`error`),ee=async()=>{if(!H())return;let e=++x.current,t=new AbortController;y.current=t,w.current=!1,g(`requesting`),m(``),k.current.reset();let r=ba({chatSessionId:n});_.current=r,b.current=r.onPartial(e=>{_.current===r&&I.current?.(e)});let i=null,a=async t=>{if(i?.dispose(),i=null,e!==x.current)return;if(t instanceof DOMException&&t.name===`AbortError`){let e=++x.current;if(await R(),e!==x.current)return;B();return}let n=++x.current;if(await R(),n!==x.current)return;let r=Ea(t,c(`chat:voiceInput.failed`));z(r===`permission`?c(`chat:voiceInput.permissionDenied`):r)};try{window.__PISPER_MOBILE_APP__&&(E.current=e);try{await ga()}finally{E.current===e&&(E.current=null)}if(e!==x.current)return;if(window.__PISPER_MOBILE_APP__&&document.visibilityState===`hidden`){V();return}if(await l.ensureReady(t.signal),e!==x.current)return;if(r.start().then(()=>{},()=>a(Error(c(`chat:voiceInput.failed`)))),i=await Xi(),e!==x.current){i.dispose();return}P.current=i;let n=i,o=await Ca(t=>{if(e!==x.current)return;A.current=k.current.push(Ui(t));let i=n.acceptPcm(t);(r.acceptPcm(t)||i)&&C.current()},t.signal);if(e!==x.current){await o.stop();return}v.current=o,g(`recording`),window.__PISPER_MOBILE_APP__&&(S.current=window.setTimeout(()=>C.current(),6e4))}catch(e){await a(e)}},U=async()=>{if(h.current!==`recording`||w.current)return;T.current=null,w.current=!0,L();let e=++x.current;g(`transcribing`);let t=y.current;y.current=null,t?.abort();let n=v.current;v.current=null;let r=P.current;P.current=null;let i=_.current;try{if(await n?.stop(),e!==x.current)return;if(r&&!r.hasSpeech){if(r.dispose(),I.current?.(null),await R(),e!==x.current)return;B();return}r?.dispose();let t=await i?.finish();if(e!==x.current)return;if(!t)throw Error(c(`chat:voiceInput.empty`));if(F.current(t),await R(),e!==x.current)return;B()}catch(t){if(e!==x.current||(await R(),e!==x.current))return;I.current?.(null);let n=Ea(t,c(`chat:voiceInput.failed`));z(n===`permission`?c(`chat:voiceInput.permissionDenied`):n),w.current=!1}};C.current=()=>void U(),Hi({enabled:i&&!r,binding:u,onStart:()=>H()?(ee(),T.current=x.current,!0):!1,onRelease:()=>{T.current===x.current&&(v.current?U():V())},onCancel:()=>{T.current===x.current&&V()}});let te=d===`recording`?c(`chat:voiceInput.stop`):d===`requesting`?c(`chat:voiceInput.close`):d===`error`?p:c(`chat:voiceInput.open`),ne=u&&d!==`error`?`${te} (${an(u)})`:te,re=d===`recording`?()=>void U():d===`requesting`?()=>V():()=>void ee(),W=(0,Q.useRef)(re);W.current=re;let ie=!r&&d!==`transcribing`;(0,Q.useEffect)(()=>{if(s)return s.current=ie?()=>W.current():null,()=>{s.current=null}},[s,ie]);let ae=a===`menu`&&d===`idle`;return(0,$.jsxs)(`div`,{className:`relative flex flex-none items-center`,"data-voice-input":d,children:[d===`recording`&&(0,ci.createPortal)((0,$.jsx)(`div`,{"aria-hidden":`true`,className:`voice-capsule-pop pointer-events-none fixed bottom-4 left-1/2 z-[80] flex h-10 -translate-x-1/2 items-center gap-[3px] rounded-full bg-ink px-4 shadow-float`,children:j.map((e,t)=>(0,$.jsx)(`span`,{className:`w-[3px] rounded-full bg-on-ink`,style:{height:`${(3+e*19).toFixed(1)}px`,opacity:.55+e*.45,transition:`height 70ms linear`}},t))}),document.body),d===`error`&&(0,ci.createPortal)((0,$.jsxs)(`button`,{type:`button`,className:`voice-capsule-pop fixed bottom-4 left-1/2 z-[80] flex h-9 max-w-[min(480px,calc(100vw-32px))] -translate-x-1/2 cursor-pointer items-center gap-2 rounded-full border border-danger-border bg-solid px-4 text-xs text-danger shadow-float max-[650px]:h-11`,onClick:()=>{window.clearTimeout(O.current),m(``),g(`idle`)},children:[(0,$.jsx)(Tr,{size:13,className:`flex-none`}),(0,$.jsx)(`span`,{className:`truncate`,children:p})]}),document.body),(0,$.jsxs)(`button`,{type:`button`,hidden:ae,className:`relative grid size-8 min-w-8 cursor-pointer place-items-center rounded-sm border transition-colors disabled:cursor-not-allowed disabled:opacity-45 max-[650px]:size-11 max-[650px]:min-w-11 pointer-coarse:size-11 pointer-coarse:min-w-11 ${d===`recording`?`border-danger bg-danger-soft text-danger`:d===`transcribing`||d===`requesting`?`border-transparent bg-star-soft text-accent-fg`:d===`error`?`border-transparent bg-danger-soft text-danger`:`border-transparent text-content-muted hover:bg-surface-hover hover:text-content`}`,title:ne,"aria-label":c(d===`recording`?`chat:voiceInput.stop`:`chat:voiceInput.open`),"aria-pressed":d===`recording`,disabled:r||d===`transcribing`,onClick:re,children:[d===`recording`&&(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`absolute inset-0 animate-ping rounded-sm bg-danger opacity-25`}),d===`recording`?(0,$.jsx)(Tr,{size:17}):d===`transcribing`||d===`requesting`?(0,$.jsx)(Be,{className:`animate-spin`,size:16}):d===`error`?(0,$.jsx)(Tr,{size:17}):(0,$.jsx)(Er,{size:17})]}),(0,$.jsx)(fa,{manager:l,onClose:()=>{}})]})}var Oa={idle:{amp:.14,freq:1.7,speed:.22,spike:0,rot:.22,dim:.8,behavior:`calm`},requesting:{amp:.08,freq:1.6,speed:.3,spike:0,rot:.4,dim:.5,behavior:`calm`},listening:{amp:.15,freq:2,speed:.55,spike:.55,rot:.4,dim:1,behavior:`reactive`},transcribing:{amp:.08,freq:1.8,speed:1,spike:0,rot:1.5,dim:.95,behavior:`converge`},thinking:{amp:.2,freq:2.3,speed:.8,spike:0,rot:.85,dim:1,behavior:`swirl`},speaking:{amp:.13,freq:1.9,speed:.5,spike:.1,rot:.35,dim:1,behavior:`beat`},error:{amp:.12,freq:2.2,speed:1.2,spike:0,rot:.1,dim:.9,behavior:`jitter`}},ka=64,Aa=96,ja=2.6,Ma=Math.PI*2,Na={dark:{base:[223,233,255],cyan:[89,230,255],magenta:[255,95,210],haloInner:[70,110,170],haloMid:[50,80,140],haloAlpha:.1,composite:`lighter`,alphaBase:.1,alphaFront:.68},light:{base:[34,44,76],cyan:[6,132,180],magenta:[176,48,150],haloInner:[110,140,210],haloMid:[130,160,220],haloAlpha:.16,composite:`source-over`,alphaBase:.18,alphaFront:.85}};function Pa(e,t,n){let r=Math.sin(e*127.1+t*311.7+n*74.7)*43758.5453123;return r-Math.floor(r)}function Fa(e){return e*e*(3-2*e)}function Ia(e,t,n){let r=Math.floor(e),i=Math.floor(t),a=Math.floor(n),o=Fa(e-r),s=Fa(t-i),c=Fa(n-a),l=0;for(let e=0;e<=1;e+=1)for(let t=0;t<=1;t+=1)for(let n=0;n<=1;n+=1)l+=(e?o:1-o)*(t?s:1-s)*(n?c:1-c)*Pa(r+e,i+t,a+n);return l}function La(e){return 1+2.70158*(e-1)**3+1.70158*(e-1)**2}function Ra(e){let t=e*.9%1;return Math.exp(-(((t-.12)*9)**2))+.45*Math.exp(-(((t-.34)*9)**2))}function za({stage:e,level:t,size:n=380,dark:r=!0}){let i=(0,Q.useRef)(null),a=(0,Q.useRef)(e),o=(0,Q.useRef)(t),s=(0,Q.useRef)(r);return a.current=e,o.current=t,s.current=r,(0,Q.useEffect)(()=>{let e=i.current;if(!e)return;let t=e.getContext(`2d`);if(!t)return;let r=Math.min(window.devicePixelRatio||1,2);e.width=n*r,e.height=n*r,t.scale(r,r);let c=new Float32Array(ka),l=new Float32Array(ka);for(let e=0;e<ka;e+=1){let t=-Math.PI/2+(e+.5)/ka*Math.PI;c[e]=Math.sin(t),l[e]=Math.cos(t)}let u=new Float32Array(Aa),d=new Float32Array(Aa);for(let e=0;e<Aa;e+=1){let t=e/Aa*Ma;u[e]=Math.cos(t),d[e]=Math.sin(t)}let f=n/2,p=n*.31,m=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,h=0,g=performance.now(),_=g,v=0,y=0,b={...Oa[a.current]},x=0,S=0,C=0,w=e=>{let r=Math.min((e-g)/1e3,.05);g=e;let i=Oa[a.current],T=Math.min(1,r*5);b={...i,amp:b.amp+(i.amp-b.amp)*T,freq:b.freq+(i.freq-b.freq)*T,speed:b.speed+(i.speed-b.speed)*T,spike:b.spike+(i.spike-b.spike)*T,rot:b.rot+(i.rot-b.rot)*T,dim:b.dim+(i.dim-b.dim)*T};let E=m?.35:1;v+=r*E,y+=b.rot*r*E,x+=(o.current-x)*Math.min(1,r*14);let D=Math.max(0,x-S-.02);S=x,C=Math.min(.6,C*.02**r+D*2.4);let O=x;b.behavior===`beat`?O=Math.max(.08,.4+.28*Math.abs(Math.sin(v*5.2))*Math.sin(v*1.6)+.12*Math.sin(v*9.1)):b.behavior===`converge`?O=.18:b.behavior===`jitter`?O=.3+.2*Math.sin(v*17):b.behavior!==`reactive`&&(O=.1+.05*Math.sin(v*1.3));let k=La(Math.min(1,Math.max(0,(e-_)/900))),A=b.behavior===`beat`?O:Ra(v)*.5+O*.5,j=k*(1+A*.04+C*.1);b.behavior===`converge`&&(j*=.9+.1*Math.sin(v*4.2)),t.clearRect(0,0,n,n);let M=Na[s.current?`dark`:`light`],N=t.createRadialGradient(f,f,0,f,f,p*1.7);N.addColorStop(0,`rgba(${M.haloInner[0]},${M.haloInner[1]},${M.haloInner[2]},${(M.haloAlpha*b.dim).toFixed(3)})`),N.addColorStop(.6,`rgba(${M.haloMid[0]},${M.haloMid[1]},${M.haloMid[2]},${(M.haloAlpha*.5*b.dim).toFixed(3)})`),N.addColorStop(1,`rgba(0,0,0,0)`),t.fillStyle=N,t.fillRect(0,0,n,n);let P=Math.sin(y),F=Math.cos(y),I=.38,L=Math.sin(I),R=Math.cos(I),z=v*b.speed,B=b.freq,V=b.amp*j,H=b.spike*(O+C),ee=p*j,U=Math.floor(v*15),te=b.dim*(.72+.5*A)+C*.3;t.globalCompositeOperation=M.composite;for(let e=0;e<ka;e+=1){let n=c[e],r=l[e];for(let i=0;i<Aa;i+=1){let a=r*u[i],o=n,s=r*d[i],c=Ia(a*B+z,o*B+z*.7,s*B)-.5,l=1+c*2*V;b.behavior===`reactive`?l+=Math.max(c,0)**2*1.7*H:b.behavior===`swirl`?l+=.03*Math.sin(9*a+v*4.6):b.behavior===`jitter`&&(l+=.02*(Pa(e*Aa+i,U,3)-.5));let p=a*l,m=o*l,h=s*l,g=p*F-h*P,_=p*P+h*F,y=m*R-_*L,x=m*L+_*R,S=ja/(ja-x),C=f+g*S*ee,w=f+y*S*ee,T=(x+1)/2,E=Ia(a*1.25+31,o*1.25+z*.12,s*1.25-17),D=M.base;E>.62?D=M.magenta:E<.38&&(D=M.cyan);let O=(M.alphaBase+M.alphaFront*T*T)*te;if(O<.015)continue;let k=(1+1.4*T+H*.4)*(.55+.45*S);t.fillStyle=`rgba(${D[0]},${D[1]},${D[2]},${O.toFixed(3)})`,t.fillRect(C,w,k,k)}}t.globalCompositeOperation=`source-over`,h=requestAnimationFrame(w)};return h=requestAnimationFrame(w),()=>cancelAnimationFrame(h)},[n]),(0,$.jsx)(`canvas`,{ref:i,className:`pointer-events-none block`,style:{width:n,height:n},"aria-hidden":`true`})}var Ba=new Map;function Va(e,t){let n=Ba.get(e)??new Set;return n.add(t),Ba.set(e,n),()=>{n.delete(t),n.size||Ba.delete(e)}}function Ha(e){for(let t of Ba.get(e.sessionId)??[])t(e)}function Ua(e,t){let n=t.messages.length-1;for(;n>=0&&t.messages[n].role!==`user`;)--n;let r=t.messages.slice(n+1).filter(e=>e.role===`agent`||e.role===`assistant`),i=r.find(e=>e.streaming)??r.at(-1);Ha({sessionId:e,messageId:i?.id??``,prompt:t.messages[n]?.text,startedAt:t.startedAt??void 0,source:`snapshot`,users:t.messages.filter(e=>e.role===`user`),text:i?.text??``,status:t.error||i?.error?`failed`:t.streaming?i?`streaming`:`started`:`completed`,error:t.error||i?.error})}function Wa(e){let t=``,n=0,r=!1,i,a,o=()=>{a?.(),a=void 0},s=()=>{i=_(e),o()};return e.addEventListener(`abort`,s,{once:!0}),e.aborted&&s(),{get text(){return t},update(e){if(!(r||i)){if(e.length>32e3)throw Error(`Speech text exceeds the supported limit.`);if(!e.startsWith(t))throw Error(`The streamed speech response was rewritten.`);t=e,o()}},finish(e){r&&e===void 0||(r=!0,e!==void 0&&(i=e),o())},async*[Symbol.asyncIterator](){try{for(;;){if(g(e),i)throw i;if(n<t.length){let e=t.slice(n);n=t.length,yield e}else if(r)return;else await new Promise(e=>{a=e})}}finally{e.removeEventListener(`abort`,s),r=!0,o()}}}}function Ga(e){let{t}=o(),n=(0,Q.useRef)({...e,t});n.current={...e,t};let[r,i]=(0,Q.useState)(`idle`),[a,s]=(0,Q.useState)(0),[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)([]),[f,p]=(0,Q.useState)(``),[m,h]=(0,Q.useState)(!1),[_,v]=(0,Q.useState)(0),y=(0,Q.useRef)(`idle`),b=(0,Q.useRef)(0),x=(0,Q.useRef)(null),S=(0,Q.useRef)(Promise.resolve()),C=(0,Q.useRef)(!1),w=(0,Q.useRef)(null),T=(0,Q.useRef)(!1),E=(0,Q.useRef)(!1),D=(0,Q.useRef)(!1),O=(0,Q.useRef)({start:async()=>{},commit:async()=>{},stop:()=>{}}),k=(0,Q.useCallback)(e=>{y.current=e,i(e)},[]),A=e=>T.current&&n.current.open&&e.sessionId===n.current.sessionId&&x.current===e&&b.current===e.generation&&!e.controller.signal.aborted,j=()=>!!(n.current.streaming||n.current.messages.some(e=>e.streaming));function M(){let e=w.current;w.current=null,e?.controller.abort()}function N(){if(w.current)return w.current.preparing;let e=new AbortController,t=n.current.sessionId,r=(async()=>{C.current||=(await n.current.ensureReady?.(e.signal),g(e.signal),!0);let{hotwords:r}=await mr(t,e.signal);await dr({kinds:[`asr`,`tts`],hotwords:r},e.signal),g(e.signal)})().catch(t=>{throw w.current?.controller===e&&(w.current=null),e.abort(),t});return w.current={controller:e,preparing:r},r}function P(e){window.clearTimeout(e.limitTimer),e.limitTimer=void 0,e.microphone.abort(),e.endpoint?.dispose(),e.endpoint=void 0;let t=e.capture;return e.capture=void 0,t&&(e.captureStopping=t.stop()),e.captureStopping??Promise.resolve()}function F(e){if(e.cleanup)return e.cleanup;e.controller.abort(),e.unsubscribe?.(),e.unsubscribe=void 0,e.responseSubscription?.(),e.responseSubscription=void 0,e.checkOwnership=void 0;let t=P(e),n=e.recognizer;return e.recognizer=void 0,e.cleanup=Promise.allSettled([t,e.capturePending,e.recognizerDisposing,e.playback,n?.dispose()]).then(()=>{}),e.cleanup}function I(){b.current+=1;let e=x.current;if(x.current=null,!e)return;let t=Promise.resolve(),r=n.current.messages.filter(t=>t.role===`user`&&!e.baseline?.has(t.id)),i=n.current.sessionId===e.sessionId&&(r.length>1||r.length===1&&r[0].text?.trim()!==e.prompt);if(e.ownsRun&&!i){e.ownsRun=!1;try{t=Promise.resolve(e.abortRun?.()).catch(()=>{})}catch{}}S.current=Promise.allSettled([S.current,F(e),t]).then(()=>{})}function L(){D.current=!1,I(),k(`idle`),l(``),s(0),d(e=>e.filter(e=>!e.pending))}function R(e,t){if(!A(e))return;let r=t instanceof Error?t.message:typeof t==`string`?t:t&&typeof t==`object`&&`message`in t?t.message:void 0,i=typeof r==`string`&&r.trim()?r:n.current.t(`chat:voiceMode.failed`),a=t instanceof DOMException&&t.name===`NotAllowedError`||i.includes(`microphone_permission_denied`)?n.current.t(`chat:voiceInput.permissionDenied`):i;L(),p(a),k(`error`),n.current.notifyError?.(a)}function z(e){return new Promise(t=>{let n=e.controller.signal,r=()=>{window.clearTimeout(i),n.removeEventListener(`abort`,r),t()},i=window.setTimeout(r,50);n.addEventListener(`abort`,r,{once:!0}),n.aborted&&r()})}async function B(e,t,r){let i=e.controller.signal,a=Wa(i),o,s,c,l=!1,u=!1,f=!1,p=!1,m=!1,h=1/0,_=n=>{let r=n.filter(e=>e.role===`user`&&!t.has(e.id));return r.length>1||r.length===1&&r[0].text?.trim()!==e.prompt};e.checkOwnership=()=>{A(e)&&_(n.current.messages)&&(e.ownsRun=!1,R(e,Error(n.current.t(`chat:voiceMode.failed`))))};let v=e=>{a.update(e),d(t=>t.map(t=>t.id===r?{...t,text:e,pending:!e.trim()}:t))};e.responseSubscription=Va(e.sessionId,r=>{if(!(!A(e)||r.source!==`snapshot`&&t.has(r.messageId)))try{let t=r.source===`snapshot`,i=!!(c&&r.startedAt===c);if(r.users&&_(r.users)||r.prompt!==void 0&&r.prompt.trim()!==e.prompt||s&&r.runId&&s!==r.runId||c&&r.startedAt&&c!==r.startedAt||t&&!i&&!(p&&!r.startedAt&&r.status===`completed`)||!t&&o&&o!==r.messageId)throw e.ownsRun=!1,Error(n.current.t(`chat:voiceMode.failed`));if(p&&t)return;if(s||=r.runId,c||=r.startedAt,r.messageId&&(o=r.messageId),r.status===`recovering`){l=!0;return}if(t&&(l=!0,u=r.status===`streaming`||r.status===`started`),r.status===`started`)return;if(f=!0,r.status===`failed`)throw e.ownsRun=!1,Error(r.error||n.current.t(`chat:voiceMode.failed`));v(r.text),r.status===`completed`&&(p=!0,e.ownsRun=!1,a.finish())}catch(t){a.finish(t),R(e,t)}});let y=Promise.resolve().then(()=>(g(i),n.current.sendPrompt(e.prompt,[],!1,!1,null))).catch(t=>{throw e.ownsRun=!1,a.finish(t),t}).finally(()=>{!f&&!s&&!c&&(e.ownsRun=!1),m=!0,h=Date.now()+15e3}),b=async()=>{for(;A(e);){if(await z(e),!A(e))return;let r=n.current.messages.filter(e=>!t.has(e.id)),i=r.filter(e=>e.role===`user`);if(i.length>1||i.length===1&&i[0].text?.trim()!==e.prompt)throw Error(n.current.t(`chat:voiceMode.failed`));let s=r.filter(e=>e.role===`assistant`||e.role===`agent`),c=s.find(e=>e.error);if(c)throw Error(String(c.error));if(p&&m&&!j())return;let d=s.at(-1);if(!l&&d?.text&&(!f||m&&!j())){if(o&&o!==d.id)throw Error(n.current.t(`chat:voiceMode.failed`));o=d.id,v(d.text)}if(!l&&m&&!j()&&d?.text?.trim()){e.ownsRun=!1,a.finish();return}if(m&&(j()||u)&&(h=Date.now()+15e3),Date.now()>=h)throw Error(n.current.t(`chat:voiceMode.emptyReply`))}};try{e.playback=Promise.resolve().then(()=>n.current.speakText(a,i,()=>{A(e)&&k(`speaking`)})),await Promise.all([y,b(),e.playback])}catch(e){throw a.finish(e),e}finally{e.responseSubscription?.(),e.responseSubscription=void 0,e.checkOwnership=void 0,a.finish()}}async function V(){let e=x.current;if(!e||!A(e)||e.committed||y.current!==`listening`)return;e.committed=!0;let t=e.endpoint?.hasSpeech;k(`transcribing`),s(0);try{if(await P(e),!A(e))return;if(!t){L();return}let r=(await e.recognizer?.finish())?.trim();if(!A(e))return;e.unsubscribe?.(),e.unsubscribe=void 0;let i=e.recognizer;if(e.recognizer=void 0,e.recognizerDisposing=i?.dispose(),await e.recognizerDisposing,!A(e))return;if(l(``),!r)throw Error(n.current.t(`chat:voiceMode.emptyReply`));if(j()){L();return}let a=new Set(n.current.messages.map(e=>e.id));e.baseline=a,e.prompt=r;let o=`voice-agent-${e.generation}`;if(d(t=>[...t.slice(-4),{id:`voice-user-${e.generation}`,role:`user`,text:r},{id:o,role:`agent`,text:``,pending:!0}]),k(`thinking`),e.abortRun=n.current.onAbort,e.ownsRun=!0,await B(e,a,o),!A(e))return;D.current&&!E.current?(k(`idle`),await O.current.start()):L()}catch(t){R(e,t)}}async function H(){if(!T.current||!n.current.open||E.current||document.hidden||![`idle`,`error`,`speaking`].includes(y.current))return;I();let e={generation:++b.current,sessionId:n.current.sessionId,controller:new AbortController,microphone:new AbortController,permissionPending:!1,committed:!1,commitRequested:!1,ownsRun:!1};x.current=e,D.current=!0,p(``),l(``),s(0),k(`requesting`);let t=Wi(),r=0;try{if(await S.current,!A(e)||(await N(),!A(e)))return;if(j()){L();return}e.permissionPending=!0;try{await ga()}finally{e.permissionPending=!1}if(!A(e))return;if(document.hidden||j()){L();return}let n=await Xi();if(!A(e)){n.dispose();return}e.endpoint=n;let i=ba({chatSessionId:e.sessionId});if(e.recognizer=i,e.unsubscribe=i.onPartial(t=>{A(e)&&l(t)}),await i.start(),!A(e)||(e.capturePending=Ca(a=>{if(!(!A(e)||e.committed||e.microphone.signal.aborted))try{let o=t.push(Ui(a)),c=performance.now();c-r>=66&&(r=c,s(o));let l=i.acceptPcm(a),u=n.acceptPcm(a);(l||u)&&(e.commitRequested=!0,y.current===`listening`?O.current.commit():e.microphone.abort())}catch(t){R(e,t)}},e.microphone.signal).then(async t=>(!A(e)||e.microphone.signal.aborted?await t.stop():e.capture=t,t)),await e.capturePending,!A(e)))return;if(k(`listening`),e.commitRequested){await O.current.commit();return}e.limitTimer=window.setTimeout(()=>void O.current.commit(),6e4)}catch(t){A(e)&&e.commitRequested&&e.microphone.signal.aborted?(k(`listening`),await O.current.commit()):R(e,t)}}O.current={start:H,commit:V,stop:L};let ee=(0,Q.useCallback)(()=>O.current.commit(),[]),U=(0,Q.useCallback)(()=>{O.current.stop();let e=b.current;S.current.then(()=>{b.current===e&&T.current&&O.current.start()})},[]),te=(0,Q.useCallback)(()=>{y.current===`listening`?O.current.commit():y.current===`thinking`||y.current===`speaking`?U():(y.current===`idle`||y.current===`error`)&&(E.current=!1,h(!1),O.current.start())},[U]),ne=(0,Q.useCallback)(()=>{let e=!E.current;E.current=e,h(e),e?O.current.stop():O.current.start()},[]),re=(0,Q.useCallback)(()=>{M(),O.current.stop(),p(``),v(0)},[]);return(0,Q.useEffect)(()=>{if(!e.open)return;T.current=!0,C.current=!1,E.current=!1,h(!1),d([]),v(0),k(`idle`),O.current.start();let t=()=>{x.current?.permissionPending&&window.__PISPER_MOBILE_APP__||(M(),O.current.stop())},n=()=>{document.hidden&&t()},r=()=>{M(),O.current.stop()};return window.addEventListener(`blur`,t),window.addEventListener(`pisper:speech-interrupted`,r),document.addEventListener(`visibilitychange`,n),()=>{T.current=!1,M(),O.current.stop(),window.removeEventListener(`blur`,t),window.removeEventListener(`pisper:speech-interrupted`,r),document.removeEventListener(`visibilitychange`,n)}},[e.open,e.sessionId,k]),(0,Q.useEffect)(()=>{x.current?.checkOwnership?.()},[e.messages,e.streaming]),(0,Q.useEffect)(()=>{if(![`listening`,`transcribing`,`thinking`,`speaking`].includes(r))return;let e=window.setInterval(()=>v(e=>e+1),1e3);return()=>window.clearInterval(e)},[r]),{stage:r,level:a,partial:c,turns:u,error:f,muted:m,elapsed:_,toggleMain:te,toggleMute:ne,hangUp:re,commitListening:ee,interrupt:U}}function Ka(e){return{idle:e(`chat:voiceMode.idle`),requesting:e(`chat:voiceMode.requesting`),listening:e(`chat:voiceMode.listening`),transcribing:e(`chat:voiceMode.transcribing`),thinking:e(`chat:voiceMode.thinking`),speaking:e(`chat:voiceMode.speaking`),error:e(`chat:voiceMode.failed`)}}function qa(e){let t=Math.floor(e/60),n=e%60;return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}`}function Ja(){let[e,t]=(0,Q.useState)(()=>document.documentElement.dataset.theme!==`light`);return(0,Q.useEffect)(()=>{let e=document.documentElement,n=()=>t(e.dataset.theme!==`light`);n();let r=new MutationObserver(n);return r.observe(e,{attributes:!0,attributeFilter:[`data-theme`]}),()=>r.disconnect()},[]),e}function Ya(e){let[t,n]=(0,Q.useState)(()=>typeof window>`u`?380:Math.max(48,Math.min(window.innerWidth*.52,window.innerHeight-304,460)));return(0,Q.useEffect)(()=>{if(!e)return;let t=()=>n(Math.max(48,Math.min(window.innerWidth*.52,window.innerHeight-304,460)));return t(),window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e]),Math.floor(t)}function Xa({open:e,sessionId:t,messages:n,streaming:r,sendPrompt:i,onAbort:a,onClose:s}){let{t:c}=o(),l=Ja(),u=Qi([`asr`,`tts`]),d=Ga({open:e,sessionId:t,messages:n,streaming:r,sendPrompt:i,onAbort:a,ensureReady:u.ensureReady,speakText:(e,t,n)=>aa(e,u.selectedVoice,t,n)}),{stage:f,level:p,partial:m,turns:h,error:g,elapsed:_}=d,v=Ya(e),y=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{if(!e)return;let t=document.activeElement;return y.current?.focus({preventScroll:!0}),()=>{t instanceof HTMLElement&&t.isConnected&&t.focus({preventScroll:!0})}},[e]);let b=()=>{try{d.hangUp()}finally{u.close(),s()}},x=f===`listening`||f===`transcribing`||f===`thinking`||f===`speaking`||f===`requesting`;if((0,Q.useEffect)(()=>{if(!e)return;let t=e=>{if(!(u.open||e.defaultPrevented||e.isComposing)){if(e.key===`Escape`){e.preventDefault(),b();return}if(e.key===`Tab`){let t=[...y.current?.querySelectorAll(`button:not(:disabled)`)||[]],n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||document.activeElement===y.current)?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}e.target instanceof Element&&e.target.closest(`input, textarea, select, button, [contenteditable="true"]`)||e.key===` `&&!e.repeat&&(e.preventDefault(),x?d.hangUp():d.toggleMain())}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,s,x,u.open]),!e)return null;let S=Ka(c),C=h[h.length-1],w=f===`listening`&&m?m:C?`${C.role,``}${Gi(C.text,120)}`:``,T=f===`error`?g||c(`chat:voiceMode.failed`):S[f];return(0,ci.createPortal)((0,$.jsxs)(`div`,{className:`fixed inset-0 z-[90] grid grid-cols-[minmax(0,1fr)] grid-rows-[minmax(0,1fr)_100px_108px] overflow-hidden bg-chrome pt-[env(safe-area-inset-top)] pr-[env(safe-area-inset-right)] pb-[env(safe-area-inset-bottom)] pl-[env(safe-area-inset-left)] text-content select-none`,ref:y,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-label":c(`chat:voiceMode.title`),children:[(0,$.jsxs)(`header`,{className:`pointer-events-none absolute left-[calc(env(safe-area-inset-left)_+_28px)] top-[calc(env(safe-area-inset-top)_+_24px)] flex items-center gap-3`,children:[(0,$.jsx)(`span`,{className:`inline-block size-2 rounded-full ${x?`animate-pulse bg-star`:`bg-content-faint`}`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{className:`text-[13px] font-semibold tracking-[0.3em] text-content`,children:`PISPER`})]}),(0,$.jsxs)(`div`,{className:`absolute top-[calc(env(safe-area-inset-top)_+_16px)] right-[calc(env(safe-area-inset-right)_+_16px)] z-10 flex items-center gap-1`,children:[(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{variant:`ghost`,size:`icon-sm`,"aria-label":c(`chat:speechModels.title`),onClick:()=>{d.hangUp(),u.show()},children:(0,$.jsx)(vr,{})})}),(0,$.jsx)(Nt,{children:c(`chat:speechModels.title`)})]}),(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{variant:`ghost`,size:`icon-sm`,className:`size-11 flex-none`,"aria-label":c(`chat:speechModels.close`),onClick:b,children:(0,$.jsx)(vt,{})})}),(0,$.jsx)(Nt,{children:c(`chat:speechModels.close`)})]})]}),(0,$.jsx)(fa,{manager:u,onClose:()=>d.hangUp()}),(0,$.jsx)(`div`,{className:`flex min-h-0 items-center justify-center pt-16 pb-6`,children:(0,$.jsx)(za,{stage:f,level:p,size:v,dark:l})}),(0,$.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-col items-center justify-center gap-2 px-6 text-center`,children:[(0,$.jsx)(`div`,{className:`max-w-full text-xs font-medium tracking-normal ${f===`error`?`max-h-full overflow-y-auto break-words text-danger`:`line-clamp-2 text-content-muted`}`,role:`status`,"aria-live":`polite`,children:T}),(0,$.jsx)(`p`,{className:`m-0 line-clamp-2 min-h-[22px] max-w-[640px] text-[15px] leading-[1.6] text-content`,children:w})]}),(0,$.jsx)(`div`,{className:`relative flex justify-center pt-3 sm:items-center sm:pt-0`,children:(0,$.jsx)(`button`,{type:`button`,className:`h-11 cursor-pointer rounded-full border px-8 text-sm font-medium transition-colors ${x?`border-control bg-key text-content shadow-key hover:bg-surface-hover`:`border-transparent bg-star text-on-accent shadow-primary hover:bg-star-hover`}`,onClick:()=>x?d.hangUp():d.toggleMain(),children:c(x?`chat:voiceMode.endConversation`:`chat:voiceMode.startConversation`)})}),(0,$.jsxs)(`div`,{className:`pointer-events-none absolute bottom-[calc(env(safe-area-inset-bottom)_+_12px)] right-[calc(env(safe-area-inset-right)_+_20px)] flex items-center gap-2.5 sm:bottom-[calc(env(safe-area-inset-bottom)_+_36px)] sm:right-[calc(env(safe-area-inset-right)_+_28px)]`,children:[(0,$.jsx)(`span`,{className:`hidden size-9 place-items-center rounded-full border border-key-border bg-key text-xs text-accent-fg shadow-key sm:grid`,"aria-hidden":`true`,children:x?`●`:`○`}),(0,$.jsx)(`span`,{className:`font-mono text-[13px] tracking-[0.08em] text-content-muted tabular-nums`,children:qa(_)})]}),(0,$.jsx)(`div`,{className:`absolute bottom-[env(safe-area-inset-bottom)] left-[calc(env(safe-area-inset-left)_+_20px)] sm:bottom-[calc(env(safe-area-inset-bottom)_+_36px)] sm:left-[calc(env(safe-area-inset-left)_+_28px)]`,children:(0,$.jsxs)(Pt,{children:[(0,$.jsx)(J,{asChild:!0,children:(0,$.jsx)(Y,{variant:`ghost`,size:`icon`,className:`size-11 flex-none`,disabled:!x&&!d.muted,"aria-label":f===`speaking`||f===`thinking`?c(`chat:voiceMode.interrupt`):d.muted?c(`chat:voiceMode.unmute`):c(`chat:voiceMode.mute`),onClick:()=>f===`speaking`||f===`thinking`?d.interrupt():d.toggleMute(),children:f===`speaking`||f===`thinking`?(0,$.jsx)(ft,{}):d.muted?(0,$.jsx)(Tr,{}):(0,$.jsx)(Er,{})})}),(0,$.jsx)(Nt,{children:f===`speaking`||f===`thinking`?c(`chat:voiceMode.interrupt`):d.muted?c(`chat:voiceMode.unmute`):c(`chat:voiceMode.mute`)})]})})]}),document.body)}var Za=`grid size-8 min-w-8 flex-none cursor-pointer place-items-center rounded-sm border-0 bg-transparent text-content-muted transition-colors hover:bg-surface-hover hover:text-content disabled:cursor-not-allowed disabled:opacity-50 max-[650px]:size-11 max-[650px]:min-w-11 pointer-coarse:size-11 pointer-coarse:min-w-11`;function Qa(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=String(t%60).padStart(2,`0`);return n?`${n}:${String(r).padStart(2,`0`)}:${i}`:`${r}:${i}`}function $a({startedAt:e}){let[t,n]=(0,Q.useState)(()=>Date.now());(0,Q.useEffect)(()=>{let e=window.setInterval(()=>n(Date.now()),1e3);return()=>window.clearInterval(e)},[]);let r=In(e,null,t);return r?(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`shrink-0 font-mono text-[12.5px] text-content-muted tabular-nums`,"data-tray-clock":!0,children:Qa(r)}):null}var eo=`flex min-h-[34px] min-w-0 items-center gap-2 pr-1.5 pl-3 text-[13px] max-[650px]:min-h-11 max-[650px]:pr-0 pointer-coarse:min-h-11`,to=`grid size-[26px] flex-none cursor-pointer place-items-center rounded-sm text-content-muted opacity-0 transition-opacity duration-(--d-fast) group-hover/queued:opacity-100 group-focus-within/queued:opacity-100 hover:bg-surface-hover hover:text-content focus-visible:opacity-100 disabled:cursor-default disabled:opacity-40 max-[650px]:size-11 max-[650px]:opacity-100 pointer-coarse:size-11 pointer-coarse:opacity-100 [@media(hover:none)]:opacity-100`;function no({streaming:e,compaction:t,startedAt:n,stopping:r=!1,onStop:i,queuedInputs:a=[],withdrawingInputIds:s=[],onEdit:c,onCancel:l}){let{t:u}=o(),d=!!t?.active,f=!!e||d;if(!f&&!a.length)return null;let p=u(`chat:focusSession.sentToTheRunningAgent`);return(0,$.jsxs)(`div`,{className:`composer-tray mx-3.5 flex min-w-0 flex-col overflow-hidden rounded-t-(--r-lg) border border-b-0 border-stroke bg-well text-content-secondary max-[650px]:mx-2 [&>*+*]:border-t [&>*+*]:border-stroke`,"data-composer-tray":!0,children:[f&&(0,$.jsxs)(`div`,{className:eo,"data-run-bar":d?`compacting`:`running`,children:[(0,$.jsxs)(`span`,{role:`status`,className:`flex min-w-0 flex-1 items-center gap-2`,children:[d?(0,$.jsx)(It,{className:`size-3.5 flex-none text-content-secondary`}):(0,$.jsx)(Kn,{status:`run`,className:`size-4`}),(0,$.jsx)(`span`,{className:`shrink-0 text-content`,children:u(d?`chat:focusSession.compactingContext`:`chat:focusSession.running`)}),e&&(0,$.jsx)($a,{startedAt:n})]}),e&&i&&(0,$.jsxs)(`button`,{type:`button`,className:`inline-flex h-[26px] shrink-0 cursor-pointer items-center gap-1.5 rounded-sm px-2 text-[13px] text-content transition-colors hover:bg-surface-hover disabled:cursor-default disabled:opacity-60 max-[650px]:h-11 max-[650px]:min-w-[72px] max-[650px]:justify-center pointer-coarse:h-11 pointer-coarse:min-w-[72px]`,"aria-label":u(r?`chat:focusSession.stopping`:`chat:focusSession.stop`),title:u(`chat:focusSession.stopRunShortcut`),"aria-busy":r||void 0,disabled:r,onClick:i,"data-run-stop":!0,children:[(0,$.jsx)(ft,{size:10,fill:`currentColor`,"aria-hidden":`true`}),u(r?`chat:focusSession.stopping`:`chat:focusSession.stop`),(0,$.jsx)(Rt,{className:`max-[650px]:hidden pointer-coarse:hidden`,children:`Esc`})]})]}),a.length>0&&(0,$.jsx)(`ul`,{className:`m-0 flex max-h-[136px] min-w-0 list-none flex-col overflow-x-hidden overflow-y-auto overscroll-contain p-0 [&>*+*]:border-t [&>*+*]:border-stroke-soft`,"aria-label":p,"data-pisper-queue-size":a.length,tabIndex:a.length>3?0:void 0,children:a.map((e,t)=>{let n=typeof e.id==`string`?e.id:``,r=s.includes(n),i=!n||r,a=String(e.text||``);return(0,$.jsxs)(`li`,{className:Ft(eo,`group/queued`),"aria-busy":r||void 0,children:[(0,$.jsx)(`span`,{className:`inline-flex h-[18px] flex-none items-center rounded-xs border border-stroke bg-solid px-1.5 text-[11.5px] text-content-muted`,"data-queued-behavior":e.behavior===`steer`?`steer`:`followUp`,children:e.behavior===`steer`?u(`board:composer.queuedSteer`):u(`board:composer.queuedFollowUp`)}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-content [overflow-wrap:anywhere]`,title:a,children:a}),c&&(0,$.jsx)(`button`,{type:`button`,className:to,"aria-label":u(`board:composer.editQueued`),title:u(`board:composer.editQueued`),disabled:i,"data-queued-edit":!0,onClick:()=>void c(n),children:(0,$.jsx)(Ue,{size:14,"aria-hidden":`true`})}),l&&(0,$.jsx)(`button`,{type:`button`,className:to,"aria-label":u(`board:composer.cancelQueued`),title:u(`board:composer.cancelQueued`),disabled:i,"data-queued-cancel":!0,onClick:()=>void l(n),children:(0,$.jsx)(vt,{size:14,"aria-hidden":`true`})})]},n||`${e.behavior}-${t}`)})})]})}function ro({invocation:e,onRemove:t}){let{t:n}=o();return(0,$.jsxs)(`div`,{className:`composer-resource-chip [&.workflow]:border-success-border [&.workflow]:bg-success-soft [&.workflow]:text-success-strong [&_button]:grid [&_button]:size-6 [&_button]:place-items-center [&_button]:rounded-xs [&_button]:text-content-muted [&_button]:hover:bg-surface-hover [&_button]:hover:text-content inline-flex h-7 self-start items-center gap-1.5 rounded-sm border border-star-border bg-star-soft pr-0.5 pl-2 text-xs font-medium text-star-strong max-[650px]:h-11 max-[650px]:[&_button]:size-11 ${e.kind}`,children:[e.kind===`tool`?(0,$.jsx)(_t,{size:13}):(0,$.jsx)(H,{size:13}),(0,$.jsxs)(`span`,{children:[e.kind===`skill`?`Skill`:e.kind===`tool`?n(`chat:resourcePicker.tool`):n(`chat:resourcePicker.workflow`),` `,`· `,e.resourceName]}),(0,$.jsx)(`button`,{type:`button`,"aria-label":n(`chat:resourcePicker.remove`),onClick:t,children:(0,$.jsx)(vt,{size:13})})]})}function io({streaming:e,queueing:t,submitting:n=!1,stopping:r=!1,preparing:i=!1,hasDraft:a=!1,canQueue:s=!1,blockedReason:c,disabled:l,onLongPress:u,longPressHint:d}){let{t:f}=o(),p=rn(`sendMessage`),m=(0,Q.useRef)(null),h=(0,Q.useRef)(!1),g=()=>{m.current&&clearTimeout(m.current),m.current=null};(0,Q.useEffect)(()=>{let e=m;return()=>{e.current&&clearTimeout(e.current)}},[]);let _=!!(e&&!(a&&s)),v=t||n||r||i,y=l||v||_||!!c,b=f(i?`chat:focusSession.preparingAttachments`:r?`chat:focusSession.stopping`:`chat:focusSession.sendMessage`);return(0,$.jsx)(`button`,{type:`submit`,className:`send-button grid size-8 min-w-8 flex-none cursor-pointer place-items-center rounded-full border border-transparent bg-star text-on-accent transition-[background-color,opacity] select-none [-webkit-touch-callout:none] hover:enabled:bg-star-hover active:enabled:translate-y-px disabled:cursor-not-allowed disabled:opacity-30 aria-disabled:opacity-30 max-[650px]:size-11 max-[650px]:min-w-11 pointer-coarse:size-11 pointer-coarse:min-w-11`,title:c||(!v&&p?`${b} (${p})`:b),"aria-label":c?`${b}: ${c}`:b,"aria-busy":v||void 0,"aria-disabled":y||void 0,"aria-description":u?d:void 0,"data-long-press":u?`steer`:void 0,onPointerDown:e=>{h.current=!1,!(!u||y||e.pointerType===`mouse`)&&(g(),m.current=setTimeout(()=>{m.current=null,h.current=!0,u()},500))},onPointerUp:g,onPointerCancel:g,onPointerLeave:g,onContextMenu:e=>{u&&e.preventDefault()},onClick:e=>{if(h.current){h.current=!1,e.preventDefault();return}y&&e.preventDefault()},disabled:!c&&y,children:v?(0,$.jsx)(Ke,{className:`animate-spin`,size:17}):(0,$.jsx)(B,{size:17,strokeWidth:2.1})})}var ao=[`plan`,`goal`,`team`];function oo(e){return ao.includes(e)?e:`plan`}function so({sessionId:e,runMode:t,goalsAvailable:n,teamAvailable:r,workflowsAvailable:i,goal:a,streaming:o,compaction:s,value:c,selection:l,clearDraft:u,captureSubmission:d,promptRef:f,onCompact:p,onGoalPause:m,onSend:h,onQueue:g,onAbort:_,requestTranscriptBottom:v}){let[y,b]=(0,Q.useState)(()=>oo(t)),x=(0,Q.useRef)(t);x.current=t;let[S,C]=(0,Q.useState)(null),[w,T]=(0,Q.useState)(null),E=(0,Q.useRef)(null),[D,O]=(0,Q.useState)(!1),[k,A]=(0,Q.useState)(!1),[j,M]=(0,Q.useState)(!1),[N,P]=(0,Q.useState)(``),F=(0,Q.useRef)(null),I=(0,Q.useRef)(e);I.current=e;let[L,R]=(0,Q.useState)(!1),[z,B]=(0,Q.useState)(null),V=(0,Q.useRef)(z);return V.current=z,(0,Q.useEffect)(()=>{b(oo(x.current)),E.current=null,C(null),T(null),F.current=null,A(!1),M(!1),P(``),O(!1),R(!1),B(null)},[e]),(0,Q.useEffect)(()=>{b(oo(t))},[e,t]),(0,Q.useEffect)(()=>{n||b(`plan`),!r&&y===`team`&&b(`goal`),!i&&z?.kind===`workflow`&&B(null)},[y,n,z?.kind,r,i]),(0,Q.useEffect)(()=>{a?.status===`active`&&b(a.mode===`team`&&r?`team`:`goal`)},[a?.id,a?.mode,a?.status,r]),(0,Q.useEffect)(()=>{if(!a?.id){C(null);return}let e=a.mode===`team`?a.teamTokenBudget:a.tokenBudget,t=e==null?null:Number(e),n=t!==null&&Number.isFinite(t)&&t>0?t:null;a.mode===`team`?T(n):C(n)},[a?.id,a?.mode,a?.teamTokenBudget,a?.tokenBudget]),{composerExecutionMode:y,setComposerExecutionMode:b,goalTokenBudget:S,setGoalTokenBudget:C,teamTokenBudget:w,setTeamTokenBudget:T,queueing:D,submitting:k,stopping:j,submitError:N,stop:async()=>{if(j||!_)return;let t=e;M(!0);try{await _()}catch(e){I.current===t&&P(e instanceof Error?e.message:String(e))}finally{I.current===t&&M(!1)}},compactingManually:L,invocation:z,setInvocation:B,requestGoalPause:()=>{if(E.current)return E.current;let e=Promise.resolve().then(()=>m?.());return E.current=e,e.catch(()=>{}),e},compactContext:async()=>{if(!(!p||o||L||s?.active)){R(!0);try{await p()}finally{R(!1)}}},submit:async(t,n=`steer`)=>{if(t.preventDefault(),F.current||j||l.preparingAttachments?.length||!c.trim()&&!l.attachments.length&&!z||o&&(!c.trim()&&!l.attachments.length||!g))return;let r={},i=e;F.current=r;let s=()=>I.current===i&&F.current===r,p=d?.(),_=!1,x=()=>{_||(_=!0,p?p.accept():u(),s()&&(A(!1),O(!1),b(`plan`),V.current===z&&B(null),v(),f.current&&(f.current.style.height=`auto`),F.current=null))};P(``),o?O(!0):A(!0);try{if(o){await g?.(c,l.attachments,n,x)&&x();return}let e=E.current;if(e?(await e,E.current=null):a?.status===`active`&&(y===`plan`||y!==a.mode)&&await m?.(),!s())return;let t=await h(c,l.attachments,y===`goal`||y===`team`,y===`team`,y===`team`?w:y===`goal`?S:null,z,x);!_&&t!==!1&&x()}catch(e){s()&&(E.current=null,P(e instanceof Error?e.message:String(e)))}finally{s()&&(F.current=null,A(!1),O(!1))}}}}var co=(0,Q.lazy)(()=>t(()=>import(`./QuickPromptIdeas-Cy_t1L7E.js`).then(e=>e.t),__vite__mapDeps([117,1,3,4,5,2,6,7,8,9,15,42,18,118,119,120,99,30,29,31,28]))),lo=[`[role="dialog"]`,`[role="alertdialog"]`,`[role="menu"]`,`[role="listbox"]`,`.anchored-popup-menu`,`.voice-input-popup`,`.git-diff-dialog-backdrop`,`[data-slot='popover-content']`,`[data-slot='dropdown-menu-content']`,`[data-slot='select-content']`,`[data-slot='sheet-content']`].join(`, `);function uo(){return[...document.querySelectorAll(lo)].some(e=>e.dataset.state!==`closed`&&e.getAttribute(`aria-hidden`)!==`true`&&e.getClientRects().length>0)}var fo=(0,Q.memo)(function({session:e,shortcutEnabled:t=!1,messages:n,transcriptLoadState:r=`ready`,messageStart:i,hasNewer:a,hasOlder:s,loadingOlder:c,olderError:l,model:u,thinkingLevel:d,availableThinkingLevels:f,thinkingStatus:p,thinkingMessage:m,executionMode:h,goal:g,team:_,currentActivity:v,activityFeed:y,tools:b,thinkingText:x,queuedInputs:S,withdrawingInputIds:C,compaction:O,contextUsage:k,sessionUsage:A,sessionTreeRevision:j,sessionTreePulse:M,cwd:N,availableModels:P,pendingRuntimeSelection:F,switchingModel:I,switchingThinking:L,switchingCwd:R,switchingPermission:z,streaming:B,runStartedAt:V,lastActivityAt:ee,runFinishedAt:U,runStopped:te,runNotice:ne,approvals:re,questions:W,error:oe,pendingAsset:se,notify:ce,onOpenModelSettings:G,onAssetConsumed:le,onLoadOlder:ue,onLoadLatest:de,onModelChange:fe,onThinkingLevelChange:pe,onExecutionModeChange:me,onRunModeChange:he,onCompact:ge,onCompactionThresholdChange:_e,onGoalPause:ve,onGoalBudgetChange:xe,onApproval:Se,onAnswerQuestion:Ce,onWorkspace:we,onRename:Te,onBranchFromHere:Oe,onCreateChildSession:Ae,onRetryLastTurn:je,onTreeNavigated:Ne,onSend:Pe,onQueue:Fe,onWithdrawQueuedInput:Ie,onAbort:Le}){let Re=(0,Q.useContext)(De),ze=(0,Q.useContext)(li),Be=(0,Q.useContext)(ye),Ve=!!Be?.phone,{t:q}=o(),Ue=$t(e=>e.bindings),We=D(),Ke=E(),qe=We||Ke,Je=T(e=>e.capabilities),Ye=w(Je,`goals`),Xe=w(Je,`multiAgent`),Ze=w(Je,`plans`),Qe=w(Je,`workflows`),tt=w(Je,`visualGeneration`),{value:it,updateValue:at,selection:ut,clearDraft:ft,restoreDraft:pt,captureSubmission:mt}=et(e.id),[ht,gt]=(0,Q.useState)(!1),[_t,vt]=(0,Q.useState)(!1),[yt,bt]=(0,Q.useState)(!1),[xt,wt]=(0,Q.useState)(``),[Ot,kt]=(0,Q.useState)(!1),[At,jt]=(0,Q.useState)(0),Mt=ut.addAttachments,J=(0,Q.useRef)(null),Nt=(0,Q.useRef)(null),Pt=(0,Q.useRef)(`followUp`),It=Ue.steerMessage,Y=()=>{Pt.current=`steer`,J.current?.form?.requestSubmit()},Lt=rn(`sendMessage`),Rt=rn(`voiceInput`),zt=(0,Q.useRef)(null),Bt=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{if(!t)return;let e=e=>{!Qt(e)&&nn(e,Ue.focusComposer)&&(e.preventDefault(),J.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,Ue.focusComposer]);let Vt=(0,Q.useRef)(!1),Ht=r!==`ready`||n.length>0,Ut=!Ht,Wt=B?qe?q(`board:composer.placeholderRunningTouch`):It?q(`board:composer.placeholderRunning`,{queue:Lt,steer:an(It)}):q(`board:composer.placeholderRunningQueueOnly`,{queue:Lt}):q(`board:composer.placeholder`),Gt=()=>jt(e=>e+1),Kt=e=>{at(e),requestAnimationFrame(()=>{let e=J.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,220)}px`)})},{composerExecutionMode:qt,setComposerExecutionMode:Jt,goalTokenBudget:Yt,setGoalTokenBudget:Xt,teamTokenBudget:Zt,setTeamTokenBudget:en,queueing:on,submitting:sn,stopping:cn,submitError:ln,stop:un,compactingManually:fn,invocation:pn,setInvocation:mn,requestGoalPause:hn,compactContext:gn,submit:_n}=so({sessionId:e.id,runMode:e.runMode,goalsAvailable:Ye,teamAvailable:Xe,workflowsAvailable:Qe,goal:g,streaming:B,compaction:O,value:it,selection:ut,clearDraft:ft,captureSubmission:mt,promptRef:J,onCompact:ge,onGoalPause:ve,onSend:Pe,onQueue:Fe,onAbort:Le,requestTranscriptBottom:Gt}),vn=(0,Q.useRef)(un);vn.current=un,(0,Q.useEffect)(()=>{if(!Be||!t||!B)return;let e=new WeakSet,n=t=>{t.key===`Escape`&&uo()&&e.add(t)},r=t=>{if(t.key!==`Escape`||!t.isTrusted||t.defaultPrevented||t.isComposing||t.keyCode===229||e.has(t))return;let n=t.target,r=Nt.current,i=n===document.body||n===document.documentElement||n instanceof Element&&!!n.closest(`[data-session-conversation]`)&&!n.closest(`.terminal-panel, .xterm`);!r||!i||tn(n)&&n!==J.current||(t.preventDefault(),vn.current())};return window.addEventListener(`keydown`,n,!0),window.addEventListener(`keydown`,r),()=>{window.removeEventListener(`keydown`,n,!0),window.removeEventListener(`keydown`,r)}},[Be,t,B]);let yn=e=>{g?.status===`active`&&(e===`plan`||e!==g.mode)&&hn().catch(()=>{}),Jt(e),he(e)},bn=(0,Q.useContext)(Me),xn=Be?.onNewTask||Be?.phone?.onNewTask,Sn=(0,Q.useCallback)(()=>X.getSessionCommands(e.id),[e.id]),Cn=Ci(e.id),wn=[...xn?[{invocation:`/new`,description:q(`chat:commands.builtin.new`),run:xn}]:[],...rt({t:q,models:P,model:F?.model||u,onModel:e=>fe(e),thinkingLevels:F?.model?[]:f||[],thinkingLevel:F?.thinkingLevel||d||``,thinkingLabel:e=>lt(q,e),onThinking:e=>pe(e),executionModes:[`approval-required`,`workspace-write`,`full-access`],executionMode:h,executionLabel:e=>q(e===`full-access`?`chat:focusSession.fullAccess`:e===`workspace-write`?`chat:focusSession.workspaceWrite`:`chat:focusSession.approvalRequired`),onExecutionMode:e=>me(e),runModes:B?[]:[`plan`,...Ye?[`goal`]:[],...Ye&&Xe?[`team`]:[]],runMode:qt,runModeLabel:e=>q(e===`team`?`chat:focusSession.teamMode`:e===`goal`?`chat:focusSession.goalMode`:`chat:focusSession.planMode`),onRunMode:e=>yn(e)}),{invocation:`/btw`,description:q(`chat:commands.builtin.btw`)},...ge?[{invocation:`/compact`,description:q(`chat:commands.builtin.compact`),run:()=>gn()}]:[],...bn?[{invocation:`/changes`,description:q(`chat:commands.builtin.changes`),run:()=>bn.show(`changes`)}]:[]],Tn=F?.model||u||``,En=kn(P.find(e=>e.key===Tn)?.label||Tn.split(`/`).at(-1)||``,P.map(e=>e.label)),Dn=(0,Q.useMemo)(()=>Be?{model:En}:null,[En,Be]),On=Number(k?.percent),An=k?.percent!=null&&Number.isFinite(On)?On:null,jn=n.at(-1)?.role===`agent`?n.at(-1):null,Mn=ln||oe||(B?``:String(jn?.error||``)),Nn=!a&&!ln&&!B&&n.some(e=>e.role===`user`);(0,Q.useEffect)(()=>{gt(!1),vt(!1)},[e.id]),(0,Q.useEffect)(()=>{se&&(Mt([se]),le?.())},[se,le,Mt]);let Pn=async e=>{let t=await Ie?.(e);if(!t||!pt(t))return;let n=J.current;requestAnimationFrame(()=>{!n||J.current!==n||!n.isConnected||(n.focus(),n.style.height=`auto`,n.style.height=`${Math.min(n.scrollHeight,220)}px`)})},Fn=async e=>{await Ie?.(e)},In=e=>{at(e),requestAnimationFrame(()=>{let e=J.current;e&&(e.focus(),e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,220)}px`)})},Ln=pi({cwd:N,selection:ut}),Rn=(0,$.jsx)(Da,{sessionId:e.id,shortcutEnabled:t,variant:`menu`,controlRef:Bt,onLiveText:e=>{if(e===null){zt.current!==null&&(Kt(zt.current),zt.current=null);return}zt.current===null&&(zt.current=(J.current?.value??it).trimEnd());let t=zt.current;Kt(t&&e?`${t}\n${e}`:t||e)},onInsert:e=>{let t=zt.current??(J.current?.value??it).trimEnd();zt.current=null,Kt(t?`${t}\n${e}`:e),requestAnimationFrame(()=>J.current?.focus())}}),zn=q(`board:composer.plusMenu`),Bn=(0,$.jsxs)(Dt,{children:[(0,$.jsx)(Tt,{asChild:!0,children:(0,$.jsxs)(`button`,{type:`button`,className:Ft(Za,`composer-plus-trigger aria-expanded:bg-surface-hover aria-expanded:text-content`),title:zn,"aria-label":zn,"data-composer-plus":!0,children:[(0,$.jsx)(Ge,{size:18,"aria-hidden":`true`}),ut.attachments.length>0&&(0,$.jsx)(`span`,{className:`absolute -top-0.5 -right-0.5 grid h-4 min-w-4 place-items-center rounded-full border-2 border-panel bg-star px-0.5 text-[10px] leading-none font-medium text-on-accent tabular-nums`,children:ut.attachments.length})]})}),(0,$.jsxs)(Et,{align:`start`,side:`top`,className:`min-w-56 p-1 [&_[role=menuitem]]:min-h-9 max-[650px]:[&_[role=menuitem]]:min-h-11 pointer-coarse:[&_[role=menuitem]]:min-h-11`,"data-composer-plus-menu":!0,children:[Ve&&B&&(0,$.jsxs)(St,{"data-composer-steer":!0,disabled:!it.trim()&&!ut.attachments.length&&!pn,onSelect:Y,children:[(0,$.jsx)(ae,{"aria-hidden":`true`}),(0,$.jsxs)(`span`,{className:`grid min-w-0`,children:[(0,$.jsx)(`span`,{children:q(`board:composer.steerNow`)}),(0,$.jsx)(`span`,{className:`truncate text-xs text-content-muted`,children:q(`board:composer.steerHint`)})]})]}),(0,$.jsxs)(St,{"data-composer-plus-item":`attachment`,onSelect:()=>void Ln.choose(),children:[(0,$.jsx)(He,{"aria-hidden":`true`}),q(`chat:focusSession.addAttachment`)]}),(0,$.jsxs)(St,{"data-composer-plus-item":`resource`,onSelect:()=>gt(!0),children:[(0,$.jsx)(H,{"aria-hidden":`true`}),q(`chat:resourcePicker.open`)]}),tt&&(0,$.jsxs)(St,{"data-composer-plus-item":`visual`,onSelect:()=>void Bi({templatePrompt:q(`chat:focusSession.visualPromptTemplate`),configureHint:q(`chat:focusSession.configureVisualModelFirst`),notify:ce,onOpenModelSettings:G,onInsertPrompt:In}),children:[(0,$.jsx)(ie,{"aria-hidden":`true`}),q(`chat:focusSession.generateImage`)]}),(0,$.jsxs)(St,{"data-composer-plus-item":`voice`,onSelect:()=>Bt.current?.(),children:[(0,$.jsx)(Er,{"aria-hidden":`true`}),q(`chat:voiceInput.open`),Rt&&(0,$.jsx)(Ct,{children:Rt})]})]})]}),Vn=(0,$.jsx)(bi,{sheet:Ve,approvalMode:h,onApprovalModeChange:me,approvalDisabled:z,runMode:qt,onRunModeChange:yn,runModeDisabled:!!B,goalsAvailable:Ye,teamAvailable:Xe,goal:g,tokenBudget:qt===`team`?Zt:Yt,onTokenBudgetChange:qt===`team`?en:Xt,onSaveTokenBudget:e=>xe?.(e)}),Hn=(0,$.jsx)(ot,{sheet:Ve,model:F?.model||u,models:P,onModelChange:fe,thinkingLevel:F?.thinkingLevel||d||`medium`,levels:F?.model?[]:f||[],status:p,message:m,onThinkingChange:pe,modelDisabled:I||L,thinkingDisabled:L||I,deferred:B,pendingModel:!!F?.model,usage:(0,$.jsx)(dt,{usage:k,sessionUsage:A,model:u,availableModels:P,onThresholdChange:_e})}),Un=(0,Q.useMemo)(()=>dn(W),[W]),Wn={session:e,cwd:N||``,streaming:!!B,treeAvailable:n.length>0,onRename:Te,onWorkspace:we,workspaceDisabled:!!(B||R),onCompact:ge?()=>void gn():void 0,compactDisabled:!!(B||fn||O?.active||n.length===0),goalAvailable:Ye,goalEngaged:qt===`goal`,goalDisabled:!!B,onToggleGoal:()=>yn(qt===`goal`?`plan`:`goal`),workflowsAvailable:Qe,onVoiceMode:()=>bt(!0),notify:ce??(()=>void 0)},Gn=Be&&(0,$.jsx)(Ri,{visible:n.length>0,open:_t,sessionId:e.id,streaming:!!B,revision:j,pulseToken:M,onOpenChange:vt,onNavigated:async e=>{e!==null&&In(e),await Ne?.(),Gt()},onCreateChildSession:e=>Ae(e),notify:ce,children:(e,t)=>Ve?(0,$.jsx)(fi,{...Wn,runStartedAt:V,approvals:re.length,failed:!!(!B&&(oe||jn?.error)),stopped:!!(!B&&te),contextPercent:An,leading:ze,branches:t.branches,onOpenTree:t.open}):(0,$.jsx)(ui,{...Wn,contextPercent:An,branches:t.branches,onOpenTree:t.open})}),Kn=(0,$.jsx)(ke,{layoutMeasurementKey:`fixed`,sessionId:e.id,messages:n,transcriptLoadState:r,messageStart:i,hasNewer:a,onLoadLatest:de,hasOlder:s,loadingOlder:c,olderError:l,currentActivity:v,team:_,activityFeed:y,tools:b,thinkingText:x,compaction:O,streaming:B,runStartedAt:V,lastActivityAt:ee,runFinishedAt:U,runStopped:te,runNotice:ne,error:oe,scrollRequest:At,cwd:N,lineage:e.lineage,switchingCwd:R,onLoadOlder:ue,onBranchFromHere:Oe,onCreateChildSession:Ae,onRetryLastTurn:je,onPromptSelect:In,onWorkspace:we,collapseEarlierTurns:Ve},`transcript`),qn=e=>ct(e.dataTransfer)?(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`),kt(!0),!0):!1,Yn=(0,$.jsxs)(`form`,{className:Ft(`focus-composer-shell relative z-20 mx-auto flex w-[min(768px,calc(100%_-_48px))] shrink-0 flex-col gap-2 pt-2 pb-3 @max-[700px]:w-[calc(100%_-_24px)] max-[650px]:pb-2.5`,Ht&&`before:pointer-events-none before:absolute before:inset-x-0 before:-top-9 before:h-9 before:bg-linear-to-b before:from-transparent before:to-panel`),onSubmit:e=>{let t=Pt.current;Pt.current=`followUp`;let n=nt(it);if(n!==null){e.preventDefault(),n&&(Cn.ask(n),at(``));return}if(!B&&(F||I||L)){e.preventDefault();return}_n(e,Be?t:`steer`)},children:[Cn.state&&(0,$.jsx)(Si,{state:Cn.state,cwd:N||void 0,onDismiss:()=>{Cn.dismiss(),J.current?.focus()}}),(0,$.jsx)(K,{approvals:re,onResolve:Se,sessionTitle:e.name||e.id,cwd:N||``}),Un[0]&&Ce&&(0,$.jsx)(zi,{question:Un[0],more:Un.length-1,collapsed:re.length>0,onAnswer:Ce},Un[0].id),Qe&&(0,$.jsx)(Xr,{sessionId:e.id}),pn&&(0,$.jsx)(ro,{invocation:pn,onRemove:()=>mn(null)}),ut.attachmentError&&(0,$.jsx)(`span`,{className:`text-[var(--danger)] text-[13px]`,children:ut.attachmentError}),Mn&&(0,$.jsx)(Ee,{error:Mn,onRetry:Nn?je:void 0,className:`w-full`}),(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(no,{streaming:B,compaction:O,startedAt:V,stopping:cn,onStop:()=>void un(),queuedInputs:S,withdrawingInputIds:C,onEdit:Ie?Pn:void 0,onCancel:Ie?Fn:void 0}),(0,$.jsxs)(`div`,{className:Ft(`focus-composer relative flex min-w-0 flex-col rounded-[var(--composer-radius,22px)] [corner-shape:var(--composer-corner-shape,round)] border border-control bg-solid shadow-composer transition-[border-color,box-shadow] duration-(--d-fast) ease-(--ease) has-[textarea:focus]:border-focus has-[textarea:focus]:ring-3 has-[textarea:focus]:ring-focus-ring max-[650px]:rounded-2xl [&>.attachment-tray]:px-3 [&>.attachment-tray]:pt-3 [&_textarea]:w-full [&_textarea]:min-w-0 [&_textarea]:min-h-11 [&_textarea]:max-h-[220px] [&_textarea]:resize-none [&_textarea]:overflow-y-auto [&_textarea]:border-0 [&_textarea]:[outline:0]! [&_textarea]:bg-transparent [&_textarea]:px-4 [&_textarea]:pt-3 [&_textarea]:pb-1 [&_textarea]:text-[length:calc(var(--app-message-font-size)*.9375)] max-[650px]:[&_textarea]:px-3.5 max-[650px]:[&_textarea]:text-[length:var(--app-message-font-size)] [&_textarea]:[font-family:var(--font-content-family)] [&_textarea]:font-[400] [&_textarea]:leading-5 [&_textarea]:text-content [&_textarea]:placeholder:text-content-muted`,Ot&&`border-focus ring-3 ring-focus-ring`),onDragEnter:qn,onDragOver:qn,onDragLeave:e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||kt(!1)},onDrop:e=>{kt(!1),ut.dropFiles(e)},children:[Ot&&(0,$.jsx)(`div`,{role:`status`,className:`pointer-events-none absolute inset-0 z-10 grid place-items-center rounded-[inherit] border border-dashed border-focus bg-panel px-4 text-center text-sm text-content`,children:q(`chat:focusSession.dropAttachment`)}),(0,$.jsx)(hi,{attachments:ut.attachments,preparing:ut.preparingAttachments,onRemove:ut.removeAttachment}),(0,$.jsx)(st,{placement:`top`,resourceKey:e.id,loadCommands:Sn,builtinCommands:wn,value:it,onChange:at,inputRef:J}),(0,$.jsx)(`textarea`,{ref:J,rows:1,"aria-label":q(`chat:focusSession.taskDescription`),value:it,onChange:e=>{at(e.target.value),e.currentTarget.style.height=`auto`,e.currentTarget.style.height=`${Math.min(e.currentTarget.scrollHeight,220)}px`},onPaste:ut.pasteFiles,onCompositionStart:()=>Vt.current=!0,onCompositionEnd:()=>window.setTimeout(()=>Vt.current=!1,0),onKeyDown:e=>{let t=e.nativeEvent.isComposing||Vt.current;if(Be&&B&&!t&&It&&nn(e.nativeEvent,It)){e.preventDefault(),Pt.current=`steer`,e.currentTarget.form?.requestSubmit();return}if(e.key===`Tab`&&e.shiftKey&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!t&&!B){let t=xi(qt,{goalsAvailable:Ye,teamAvailable:Xe});if(t){e.preventDefault(),yn(t),wt(q(t===`team`?`chat:focusSession.teamMode`:t===`goal`?`chat:focusSession.goalMode`:`chat:focusSession.planMode`));return}}!t&&nn(e.nativeEvent,Ue.sendMessage)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit()),!Be&&B&&!t&&e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),un())},"data-mobile-composer-input":qe||void 0,enterKeyHint:qe&&Ue.sendMessage===`Enter`?`send`:`enter`,placeholder:Wt}),(0,$.jsx)(`span`,{role:`status`,className:`sr-only`,children:xt}),(0,$.jsxs)(`div`,{className:`focus-composer-footer @container/composer-footer flex min-w-0 items-center gap-1 px-2 pt-1 pb-2 max-[650px]:px-1.5 max-[650px]:pb-1.5`,"data-composer-toolbar":!0,children:[Bn,Ln.input,Vn,(0,$.jsx)(`span`,{className:`min-w-0 flex-1`}),Rn,(0,$.jsx)(`div`,{className:`flex min-w-0 shrink items-center [&_.model-effort-pill]:max-w-full @max-[300px]/composer-footer:[&_.model-effort-pill>span:nth-child(n+2)]:hidden`,children:Hn}),(0,$.jsx)(io,{streaming:B,queueing:on,submitting:sn,stopping:cn,preparing:ut.preparingAttachments.length>0,hasDraft:!!(it.trim()||ut.attachments.length||pn),canQueue:!!Fe,blockedReason:!B&&(F||I||L)?q(`chat:focusSession.waitingForModel`):void 0,disabled:!B&&(!!F||I||L||on||!it.trim()&&!ut.attachments.length&&!pn),onLongPress:Ve&&B?Y:void 0,longPressHint:q(`board:composer.longPressSteer`)})]})]})]}),!Ht&&!B&&(0,$.jsx)(Q.Suspense,{fallback:null,children:(0,$.jsx)(co,{plansAvailable:Ze,onPromptSelect:In})})]},`composer`);return(0,$.jsxs)(Jn,{className:Ft(`focus-session [--chat-content-width:768px] [.session-dock-panel_&]:overflow-hidden [.session-dock-panel_&]:min-h-0 [.session-dock-panel_&]:border-0 [.session-dock-panel_&]:rounded-[0] [.session-dock-panel_&]:bg-[var(--panel)] [.session-dock-panel_&]:p-0 [.session-dock-panel_&]:shadow-[none] [[data-theme='dark']_.session-dock-panel_&]:bg-[var(--main-surface-bg)] min-[651px]:[[data-density='compact']_.app-card:not(&)]:p-[10px] max-[650px]:min-h-[460px] max-[650px]:[.session-dock-panel_&]:min-h-0 relative flex h-full min-h-0 flex-col ${Ht?`has-conversation`:`is-empty`}`,Ut&&`[&_[data-chat-region=messages]]:!flex-none [&_[data-chat-region=messages]]:mt-[max(48px,calc((100dvh-560px)/2))] [&_[data-chat-region=messages]]:h-[96px] [&_[data-chat-region=messages]]:!overflow-visible [&_.transcript]:!overflow-visible [&_.transcript]:!p-0 max-[650px]:[&_[data-chat-region=messages]]:mt-8 max-[650px]:[&_[data-chat-region=messages]]:h-[96px]`),"data-chat-message-style":`bubble`,children:[(0,$.jsxs)(`div`,{ref:Nt,className:Ft(`flex h-full min-h-0 min-w-0 flex-1 flex-col`,Ht?`overflow-hidden`:`overflow-auto`),children:[(0,$.jsx)(`div`,{className:`shrink-0`,"data-chat-region":`header`,children:Re?.headerHost?(0,ci.createPortal)(Gn,Re.headerHost):Re?null:Gn}),(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,"data-chat-region":`messages`,"data-focus-region":`content`,children:Dn?(0,$.jsx)(be.Provider,{value:Dn,children:Kn}):Kn}),(0,$.jsx)(`div`,{className:`shrink-0`,"data-chat-region":`composer`,"data-focus-region":`composer`,children:Yn})]}),Re?.sourceActionHost&&(0,ci.createPortal)((0,$.jsx)(mi,{cwd:N,selection:ut}),Re.sourceActionHost),(0,$.jsx)(gi,{open:ht,sessionId:e.id,onClose:()=>gt(!1),onSelect:mn,onCommandSelect:e=>In($e(e,it))}),(0,$.jsx)(Xa,{open:yt,sessionId:e.id,sessionName:e.name||e.id,messages:n,streaming:B,sendPrompt:async(...e)=>{await Pe(...e)},onAbort:Le,onClose:()=>bt(!1)})]})}),po=(0,Q.createContext)(null),mo=40,ho=[];function go({sessionId:e,onCreateSession:t}){let n=(0,Q.useContext)(po),r=e??(n?.activeId||``);return r?(0,$.jsx)(_o,{sessionId:r,panelId:`single-${r}`,shortcutEnabled:!0},r):(0,$.jsx)(vo,{onNewSession:t})}function _o({sessionId:e,panelId:t,shortcutEnabled:n,onFocusCapture:r}){let i=(0,Q.useContext)(po),a=(0,Q.useContext)(ye),o=T(e=>e.capabilities),s=i?.subscribeSessionState,c=i?.getSessionState,l=(0,Q.useMemo)(()=>t=>s?.(e,t)??(()=>{}),[s,e]),u=(0,Q.useMemo)(()=>()=>c?.(e),[c,e]),d=(0,Q.useSyncExternalStore)(l,u),f=i?.sessions.find(t=>t.id===e),p=d||ge,m=Ce(p,f),h=ue(d,f),g=d&&Object.hasOwn(d,`team`)?d.team:f?.team??null,_=_e(h,{streaming:m})?h:null,v=i?.sessionTreePulseSessionId===e?i.sessionTreePulseToken:0,y=i?.loadSessionMessages,b=i?.loadSessionThinkingLevel,x=(0,Q.useRef)(``);(0,Q.useEffect)(()=>{e&&y?.(e,{limit:mo})},[y,e]),(0,Q.useEffect)(()=>{!e||!f||!b||p.thinkingStatus||(p.availableThinkingLevels||[]).length||x.current!==e&&(x.current=e,b(e))},[b,f,e,p.availableThinkingLevels,p.thinkingStatus,m]);let S=(0,Q.useMemo)(()=>({onLoadLatest:()=>i?.loadSessionMessages(e,{force:!0}),onLoadOlder:()=>i?.loadOlderMessages(e)??!1,onModelChange:t=>i?.switchSessionModel(e,t),onThinkingLevelChange:t=>i?.switchSessionThinkingLevel(e,t),onExecutionModeChange:t=>i?.switchSessionExecutionMode(e,t)??!1,onRunModeChange:t=>i?.switchSessionRunMode(e,t)??!1,onGoalPause:()=>i?.pauseGoal(e),onGoalBudgetChange:t=>i?.setGoalBudget(e,t),onCompact:()=>i?.compactSession(e),onApproval:(t,n)=>i?.resolveToolApproval(e,t,n),onAnswerQuestion:async(t,n)=>{await i?.answerQuestion(e,t,n)},onWorkspace:()=>{f&&i?.selectSessionWorkspace(f)},onRename:()=>{f&&i?.renameSession(f)},onBranchFromHere:(e,t)=>{if(f)return i?.branchFromEntry(f,e,t)},onCreateChildSession:e=>{if(f)return i?.createChildSession(f,e)},onRetryLastTurn:()=>i?.retryLastTurn(e),onTreeNavigated:()=>i?.reloadSessionBranch(e),onSend:(t,n,r,a,o,s,c)=>i?.sendPrompt(t,e,n,r,a,o,s,{onAccepted:c}),onQueue:(t,n,r,a)=>i?.queuePrompt(t,e,n,r,a)??!1,onWithdrawQueuedInput:t=>i?.withdrawQueuedInput(e,t)??Promise.resolve(null),onAbort:()=>i?.abort(e)}),[i,e,f]);if(!i||!f)return(0,$.jsxs)(`div`,{className:`session-dock-missing flex h-full min-h-[180px] items-center justify-center gap-2 text-sm text-content-secondary`,children:[(0,$.jsx)(ht,{size:16}),i?`Session unavailable`:`Loading session`]});let C=i.pendingAsset?.asset&&(!i.pendingAsset.targetSessionId||i.pendingAsset.targetSessionId===e)?i.pendingAsset.asset:null,E=p.historyWindow?.messages||p.messages||ho,D=p.loaded?`ready`:p.loading||!p.error?`loading`:`error`,O=!!(p.recovering&&!E.length&&!p.error),k=p.lifecycle?.phase===`completed`&&!p.error&&!p.runStopped,A=typeof p.runStartedAt==`string`?p.runStartedAt:null,j=p.goal??f.goal??null,M=(0,$.jsx)(fo,{session:f,shortcutEnabled:n,messages:E,transcriptLoadState:O?`loading`:D,hasNewer:!!p.historyWindow,messageStart:p.historyWindow?.messageStart??p.messageStart,hasOlder:p.historyWindow?.hasOlder??p.hasOlder,loadingOlder:p.loadingOlder,olderError:p.olderError,model:p.model||f.model||i.defaultModel,thinkingLevel:p.thinkingLevel||f.thinkingLevel||`medium`,availableThinkingLevels:p.availableThinkingLevels||ho,thinkingStatus:p.thinkingStatus||``,thinkingMessage:p.thinkingMessage||``,executionMode:p.executionMode||f.executionMode||`approval-required`,runMode:p.runMode||f.runMode||`plan`,goal:j,team:g,plan:_,currentActivity:p.currentActivity,activityFeed:p.activityFeed||ho,tools:p.tools||ho,thinkingText:p.thinkingText||``,queuedInputs:p.queuedInputs||ho,withdrawingInputIds:p.withdrawingInputIds||ho,compaction:p.compaction,contextUsage:p.contextUsage,sessionUsage:p.sessionUsage,sessionTreeRevision:p.sessionTreeRevision,sessionTreePulse:v,cwd:p.cwd||f.cwd,availableModels:i.availableModels,pendingRuntimeSelection:p.pendingRuntimeSelection,switchingModel:p.switchingModel,switchingThinking:p.switchingThinking,switchingCwd:p.switchingCwd,switchingPermission:p.switchingPermission,streaming:m,runStartedAt:p.runStartedAt,lastActivityAt:p.lastActivityAt,runFinishedAt:p.runFinishedAt,runStopped:p.runStopped,runNotice:p.runNotice,approvals:p.approvals||ho,questions:p.questions||ho,error:p.error||(i.activeId===e?i.globalError:``),pendingAsset:C,onAssetConsumed:i.onAssetConsumed,notify:i.notify,onOpenModelSettings:i.openModelSettings,onCompactionThresholdChange:i.setCompactionThreshold,...S});return(0,$.jsx)(`div`,{className:Ft(`session-dock-panel w-full h-full min-w-0 min-h-0 overflow-hidden [container-type:inline-size] bg-panel`,a&&`animate-[fade-in_var(--d-fast)_var(--ease-enter)]`),onFocusCapture:r,"data-session-panel":e,children:a?(0,$.jsx)(si,{sessionId:e,messages:E,cwd:p.cwd||f.cwd||``,active:n,plan:_,goal:j,team:g,activity:p.activityFeed?.length?p.activityFeed:p.tools||ho,planTab:!!(_?.items?.length||j||g),streaming:m,completed:k,runStartedAt:A,requestConfirm:i.requestConfirm,children:M},e):(0,$.jsx)(Ur,{messages:E,taskName:f.name||e,cwd:p.cwd||f.cwd||``,sessionId:e,panelId:t||`mobile-${e}`,active:n,mobile:i.mobileLayout,plan:_,streaming:m,completed:k,runStartedAt:A,plansAvailable:w(o,`plans`),requestConfirm:i.requestConfirm,children:M},e)})}function vo({onNewSession:e,newSessionShortcut:t}){let{t:n}=o();return(0,$.jsxs)(`div`,{className:`flex h-full min-h-[180px] flex-col items-center justify-center gap-1.5 px-6 text-center`,children:[(0,$.jsx)(yn,{className:`mb-1.5`}),(0,$.jsx)(`strong`,{className:`text-sm font-medium text-content`,children:n(`chat:chatDock.openAChatToBegin`)}),(0,$.jsx)(`span`,{className:`max-w-[320px] text-xs leading-relaxed text-content-muted`,children:n(`chat:chatDock.openAChatFromTheSessionListOrSplitItInAnyDirection`)}),e?(0,$.jsxs)(Y,{variant:`secondary`,className:`mt-3`,onClick:()=>void e(),children:[(0,$.jsx)(Ge,{"aria-hidden":`true`}),n(`chat:chatDock.newChat`),t?(0,$.jsx)(Lt,{"aria-hidden":`true`,className:`ml-1.5 pointer-coarse:hidden`,children:t.split(/\+(?=.)/).map(e=>(0,$.jsx)(Rt,{children:e},e))}):null]}):null]})}var yo=1e4;function bo(e,t){return{defaultModel:e.model?`${e.provider}/${e.model}`:t(`chat:chatPage.noModelConfigured`),availableModels:e.providers.flatMap(e=>e.configured&&e.enabled?e.models.filter(e=>e.kind===`chat`).map(t=>({key:`${e.id}/${t.id}`,provider:e.id,modelId:t.id,label:t.name||t.id,providerName:e.name||e.id})):[])}}function xo(e){let t=e.getQueryData(m)?.sessions,n=e.getQueryData([`config`]);return Array.isArray(t)&&t.length&&n?{sessions:t,config:n}:null}function So({notify:e}){let{t:r}=o(),i=f(),[a]=(0,Q.useState)(()=>xo(i)),[s,c]=(0,Q.useState)(()=>a?.sessions??[]),[l,p]=(0,Q.useState)(()=>n.getItem(u.activeSession)||``),[h,g]=(0,Q.useState)({}),[_,v]=(0,Q.useState)(!a),[y,b]=(0,Q.useState)(``),[x,S]=(0,Q.useState)(()=>a?bo(a.config,r).defaultModel:r(`chat:chatPage.waitingForConfiguration`)),[C,w]=(0,Q.useState)(()=>a?bo(a.config,r).availableModels:[]),T=(0,Q.useRef)(s),E=(0,Q.useRef)(h),D=(0,Q.useRef)(new Map),O=(0,Q.useRef)(null),k=(0,Q.useRef)(new Map),A=(0,Q.useRef)(new Set),j=(0,Q.useRef)(0),M=(0,Q.useRef)(0),[N]=(0,Q.useState)(L),R=(0,Q.useCallback)(e=>{let t=T.current,n=typeof e==`function`?e(t):e;if(n===t)return n;let r=i.setQueryData(m,e=>e?{...e,sessions:n}:void 0)?.sessions??n;return r!==T.current&&(T.current=r,c(r)),r},[i]),B=(0,Q.useCallback)(()=>{if(j.current)return;let e=i.getQueryData(m)?.sessions;if(!(!Array.isArray(e)||e===T.current)){if(e.length)M.current=0;else if(T.current.length&&Date.now()<M.current)return;T.current=e,c(e)}},[i]);(0,Q.useEffect)(()=>{B();let e=d(m);return i.getQueryCache().subscribe(t=>{t.type===`updated`&&t.query.queryHash===e&&B()})},[i,B]),(0,Q.useEffect)(()=>zt(window,e=>{N.record(e),R(t=>F(t,e))}),[N,R]),(0,Q.useEffect)(()=>Xt(window,e=>{R(t=>z(t,e))}),[R]);let V=(0,Q.useCallback)(e=>{let t=A.current.size?Object.fromEntries(Object.entries(e).filter(([e])=>!A.current.has(e))):e,n=E.current;E.current=t,g(t);let r=Object.keys(t).filter(e=>t[e].streaming!==n[e]?.streaming);if(r.length){let e=new Set(r);i.setQueryData(m,n=>n&&{...n,sessions:n.sessions.map(n=>e.has(n.id)?{...n,streaming:t[n.id].streaming}:n)})}let a=new Set([...Object.keys(n),...Object.keys(t)]);for(let e of a){if(n[e]===t[e])continue;let r=D.current.get(e);if(r)for(let e of[...r])e()}},[i]);(0,Q.useEffect)(()=>Bt(window,({deletedIds:e})=>{N.remove(e);let t=new Set(e),n=R(e=>e.filter(e=>!t.has(e.id)));p(e=>t.has(e)?n[0]?.id||``:e);let r=E.current;e.some(e=>e in r)&&V(Object.fromEntries(Object.entries(r).filter(([e])=>!t.has(e))))}),[V,N,R]);let H=(0,Q.useCallback)((e,t)=>{let n=D.current.get(e)||new Set;return n.add(t),D.current.set(e,n),()=>{n.delete(t),n.size||D.current.delete(e)}},[]),ee=(0,Q.useCallback)(e=>E.current[e]||ge,[]),U=(0,Q.useCallback)((e,t)=>{if(!e||A.current.has(e))return;let n=E.current,r=n[e]||ge,i=le(r,t);i!==r&&V({...n,[e]:i})},[V]),te=(0,Q.useCallback)((e,{panelOpen:t=!1,localStreamOwned:n=!1}={})=>{if(!e||t||n||k.current.has(e))return!1;let r=E.current,i=r[e];if(!i||me(i))return!1;let a={...r};return delete a[e],V(a),!0},[V]),ne=(0,Q.useCallback)(e=>{if(!e)return;A.current.add(e);let t={...E.current};delete t[e],V(t)},[V]),re=(0,Q.useCallback)(e=>{if(A.current.has(e))return()=>{};let t=k.current;t.set(e,(t.get(e)??0)+1);let n=!1;return()=>{if(n)return;n=!0;let r=t.get(e)??0;r>1?t.set(e,r-1):(t.delete(e),te(e))}},[te]),W=(0,Q.useCallback)(async(e,{preserveExistingOnEmpty:t=!1}={})=>{let n=N.getRevision();t&&(j.current+=1);let r;try{let e=await X.listSessions(),i=!!(t&&!e.sessions.length&&T.current.length);i&&(M.current=Date.now()+yo),r=i?T.current:N.reconcile(e.sessions,n)}finally{t&&(--j.current,B())}return R(r),p(e||(e=>r.some(t=>t.id===e)?e:r[0]?.id||``)),Jt(),r},[B,N,R]),ie=(0,Q.useCallback)((t=``,{inheritRecentCwd:n=!0}={})=>{if(O.current)return O.current;let i=(async()=>{try{b(``);let i=await X.createSession(r(`chat:chatPage.newChat`),I(t,T.current,n));p(i.id),R(e=>P(e,[i])),U(i.id,{messages:[],tools:[],approvals:[],queuedInputs:[],permissionMode:i.permissionMode||`ask`,executionMode:i.executionMode||`approval-required`,runMode:i.runMode||`plan`,goal:i.goal||null,plan:Nn(i,null),contextUsage:i.contextUsage||null,sessionUsage:i.sessionUsage||null,compaction:null,streaming:!1,error:``,loaded:!0,pageSize:40,messageStart:0,hasOlder:!1,olderCursor:null,runStartedAt:null,lastActivityAt:null,runFinishedAt:null,runStopped:!1,runNotice:``});try{await W(i.id)}catch(e){b(r(`chat:chatPage.theChatWasCreatedButTheListCouldNotBeRefreshedError`,{error:Z(e)}))}return e(r(`chat:chatPage.newChatCreated`)),i.id}catch(e){return b(Z(e)),``}})();return O.current=i,i.finally(()=>{O.current===i&&(O.current=null)}),i},[e,W,r,U,R]);(0,Q.useEffect)(()=>{let i=!0,o=N.getRevision();return(a?Promise.resolve([{sessions:a.sessions},a.config]):Promise.all([X.listSessions({refresh:!1}),X.getConfig()])).then(async([a,s])=>{if(!i)return;let c=bo(s,r);S(c.defaultModel),w(c.availableModels);let l=a.sessions;if(!l.length&&(O.current||Object.keys(E.current).length)){if(await O.current,!i)return;o=N.getRevision(),l=(await X.listSessions()).sessions}if(l.length||(l=[await X.createSession(r(`chat:chatPage.newChat`))]),!i)return;l=N.reconcile(l,o),R(e=>P(e,l));for(let e of l)U(e.id,{team:e.team||null,agents:e.agents||[],plan:Nn(e,null),...e.streaming?{streaming:!0,recovering:!0,loaded:!1,error:``}:{}});let d=n.getItem(u.activeSession),f=new Set([...l.map(e=>e.id),...Object.keys(E.current)]);if(p(e=>f.has(e)?e:d&&f.has(d)?d:l[0]?.id||``),typeof window<`u`&&window.__PISPER_MOBILE_APP__)try{let{consumeRemoteFallbackNotice:n}=await t(async()=>{let{consumeRemoteFallbackNotice:e}=await import(`./mobile-remote-fallback-NJCTBu85.js`);return{consumeRemoteFallbackNotice:e}},__vite__mapDeps([121,8]));n()&&e(r(`chat:chatPage.remoteUnavailableSwitchedToLocal`))}catch{}}).catch(async e=>{if(i){if(typeof window<`u`&&window.__PISPER_MOBILE_APP__)try{let{fallbackRemoteToLocalAfterFailure:n}=await t(async()=>{let{fallbackRemoteToLocalAfterFailure:e}=await import(`./mobile-remote-fallback-NJCTBu85.js`);return{fallbackRemoteToLocalAfterFailure:e}},__vite__mapDeps([121,8]));if(await n(e))return}catch{}i&&b(Z(e))}}).finally(()=>i&&v(!1)),()=>{i=!1}},[e,a,r,N,U,R]),(0,Q.useEffect)(()=>{l?n.setItem(u.activeSession,l):n.removeItem(u.activeSession)},[l]);let ae=s.find(e=>e.id===l),oe=(h[l]||ge).model||ae?.model||``;return(0,Q.useEffect)(()=>{Vt(l,oe)},[l,oe]),(0,Q.useEffect)(()=>(document.title=ae?.name?`${ae.name} · ${yt}`:yt,()=>{document.title=yt}),[ae?.name]),{sessions:s,sessionsRef:T,activeId:l,setActiveId:p,sessionStates:h,sessionStatesRef:E,loading:_,globalError:y,setGlobalError:b,defaultModel:x,availableModels:C,updateSessions:R,replaceSessionStates:V,updateSessionState:U,releaseSessionState:te,retainSessionState:re,discardSessionState:ne,subscribeSessionState:H,getSessionState:ee,refreshSessions:W,createSessionRecord:ie}}function Co({setActiveId:e,loadSessionMessages:t,openRoutedSession:n}){let r=(0,Q.useRef)(n);r.current=n;let i=(0,Q.useCallback)(t=>(t&&r.current?r.current(t):e(t),!0),[e]);return(0,Q.useEffect)(()=>{let e=e=>{let n=e.detail,r=n?.sessionId||n?.id;r&&(localStorage.removeItem(u.sessionOpenRequest),i(r),n?.targetEntryId&&t(r,{force:!0,limit:40}))};return window.addEventListener(Wt,e),()=>window.removeEventListener(Wt,e)},[t,i]),(0,Q.useEffect)(()=>Bt(window,({deletedIds:e})=>{for(let t of e)Se.getState().forget(t),ut(t)}),[]),{openSession:i}}function wo(e){return!!e?.agents?.some(e=>[`queued`,`starting`,`running`].includes(String(e.status)))}function To(e,{localStreamOwned:t=!1}={}){return!e||t?!1:!!(e.recovering||e.streaming||e.approvals?.length||wo(e))}function Eo(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function Do(e,t){let n=new Map(e.map(e=>[e.id,e]));return t.map(e=>{let t=n.get(e.id);return t&&JSON.stringify(t)===JSON.stringify(e)?t:e})}function Oo(e,t){let n=Number(t.pageInfo?.start)||0,r=Number.isInteger(e.messageStart)?e.messageStart:null,i=r!=null&&r<=n,a=i?Math.max(0,n-r):0,o=i?r:n,s=i?[...e.messages.slice(0,a),...Do(e.messages,t.messages)]:Do(e.messages,t.messages),c=Math.max(0,s.length-200);return c&&(s=s.slice(c),o+=c),{messages:s,messageStart:o,hasNewer:!1,hasOlder:o>0,olderCursor:o>0?String(o):null}}function ko(e,t){let n=new Set(e.messages.map(e=>e.id)),r=[...t.messages.filter(e=>!n.has(e.id)),...e.messages],i=r.slice(0,200);return{messages:i,messageStart:t.pageInfo.start,hasOlder:t.pageInfo.hasMore,olderCursor:t.pageInfo.nextCursor,hasNewer:!!(e.hasNewer||r.length>i.length)}}function Ao(e,t){let n=ko(e.historyWindow?{...e,...e.historyWindow}:e,t);return e.historyWindow||n.hasNewer?{...e,historyWindow:n}:{...e,...n}}function jo(e){return{...e,historyWindow:null}}function Mo(e,t,n){if(t.streaming||!e.error&&!t.error)return{page:n,error:t.error||``};let r=e.messages.at(-2),i=e.messages.at(-1);if(r?.role!==`user`||!/^user-\d+$/.test(r.id)||i?.role!==`agent`||!/^agent-\d+$/.test(i.id))return{page:n,error:t.error||``};let a=Date.parse(e.runStartedAt||``),o=n.messages.findIndex(e=>{if(e.id===r.id)return!0;if(e.role!==`user`||!Number.isFinite(a))return!1;let t=new Date(e.timestamp).getTime();return Number.isFinite(t)&&t>=a});if(o>=0&&n.messages.slice(o+1).some(e=>e.role===`agent`))return{page:n,error:t.error||``};let s=[...n.messages,...o<0?[r]:[],{...i,streaming:!1,error:t.error||e.error||i.error}],c=Math.max(0,s.length-200),l=n.messageStart+c;return{page:{...n,messages:c?s.slice(c):s,messageStart:l,hasOlder:l>0,olderCursor:l>0?String(l):null},error:t.error||e.error||``}}function No(e,t,n=new Date().toISOString(),r=e.runtimeSelectionRevision||0){let i=r!==(e.runtimeSelectionRevision||0),a=!!(e.switchingModel||e.switchingThinking||i),o=t.finishedAt||e.runFinishedAt||n,s=Mo(e,t,Oo(e,t));return{...de({...e,...s.page},t),tools:t.streaming?t.tools||[]:jn(t.tools||[],{finishedAt:o,error:t.error||``}),streaming:t.streaming,recovering:t.streaming,runStartedAt:t.startedAt||e.runStartedAt||null,lastActivityAt:t.lastActivityAt||e.lastActivityAt||t.startedAt||null,runFinishedAt:t.streaming?null:o,runNotice:t.streaming&&e.runNotice||``,loaded:!0,loading:!1,error:a?e.error:s.error,model:a?e.model:t.model||e.model,cwd:t.cwd||e.cwd,permissionMode:t.permissionMode||e.permissionMode,executionMode:t.executionMode||e.executionMode,runMode:t.runMode||e.runMode,goal:t.goal??e.goal??null,team:Eo(t,e.team),plan:Nn(t,e.plan??null),contextUsage:a?e.contextUsage:t.contextUsage??e.contextUsage??null,sessionUsage:t.sessionUsage??e.sessionUsage??null,compaction:t.compaction??e.compaction??null,approvals:t.approvals||[],questions:Array.isArray(t.questions)?t.questions:e.questions||[],agents:t.agents||[],currentActivity:t.streaming?t.currentActivity||e.currentActivity||null:t.currentActivity?.type===`agent`?t.currentActivity:null,lifecycle:t.lifecycle??e.lifecycle??null,sessionTreeRevision:Number(t.sessionTreeRevision??e.sessionTreeRevision??0),activityFeed:t.streaming?t.activityFeed||e.activityFeed||[]:(t.activityFeed||[]).filter(e=>e.type===`agent`),thinkingText:t.streaming?t.thinkingText??e.thinkingText??``:``,...t.streaming?{}:{hadQueuedInput:!1}}}function Po({sessionStates:e,sessionStatesRef:t,localStreamSessionsRef:n,streamGenerationRef:r,updateSessionState:i,updateSessions:a,pollOnly:o}){let s=(0,Q.useRef)(new Set),c=(0,Q.useRef)({timer:null,activeSessions:new Set}),l=(0,Q.useRef)({timer:null,ids:new Set}),u=(0,Q.useCallback)(async(e,{force:o=!1}={})=>{if(!e||!o&&n.current.has(e)||s.current.has(e))return;s.current.add(e);let c=t.current[e]?.runtimeSelectionRevision||0;try{let s=await X.getLiveSession(e);if(!o&&n.current.has(e))return;if(o&&n.current.has(e)){let t=r.current.get(e)||0;r.current.set(e,t+1),n.current.delete(e)}Ua(e,s),i(e,e=>No(e,s,void 0,c)),a(n=>n.map(n=>n.id===e?{...n,streaming:s.streaming,model:t.current[e]?.model||s.model||n.model,cwd:s.cwd||n.cwd,permissionMode:s.permissionMode||n.permissionMode,executionMode:s.executionMode||n.executionMode,runMode:s.runMode||n.runMode,goal:s.goal??n.goal??null,team:Eo(s,n.team),plan:Nn(s,n.plan??null)}:n))}catch(t){n.current.has(e)||i(e,{recovering:!1,loading:!1,error:Z(t)})}finally{s.current.delete(e)}},[n,t,r,i,a]),d=(0,Q.useCallback)(async(e,{force:r=!1,limit:o=40}={})=>{if(!e)return;let s=t.current[e];if(r&&s?.historyWindow){if(i(e,jo),n.current.has(e))return;if(s.streaming||s.recovering){await u(e,{force:r});return}}if(s?.recovering){await u(e,{force:r});return}if(!(!r&&(s?.loading||s?.streaming||s?.loaded&&(s.pageSize||0)>=o))){i(e,{loading:!0});try{let r=await X.getMessages(e,{limit:o}),s=r.streaming===!0&&!n.current.has(e),c=!1;i(e,t=>t.streaming&&!t.loaded&&!t.messages?.length&&!n.current.has(e)?(c=!0,{...t,loading:!1,pageSize:Math.max(t.pageSize||0,o)}):t.streaming?{...t,loaded:!0,loading:!1,pageSize:Math.max(t.pageSize||0,o)}:(s&&(c=!0),{...t,...Oo(t,r),...s?{streaming:!0,recovering:!0}:{},model:t.model||r.model||void 0,contextUsage:r.contextUsage??t.contextUsage??null,sessionUsage:r.sessionUsage??t.sessionUsage??null,loaded:!0,loading:!1,pageSize:Math.max(t.pageSize||0,o),error:``,olderError:``})),c&&u(e);let l=t.current[e]?.model||(typeof r.model==`string`?r.model:``);l&&a(t=>t.map(t=>t.id===e&&t.model!==l?{...t,model:l}:t))}catch(t){i(e,{loading:!1,error:Z(t)})}}},[n,t,u,i,a]),f=(0,Q.useCallback)(async e=>{let n=t.current[e],r=n?.historyWindow?{...n,...n.historyWindow}:n;if(!e||!r?.hasOlder||!r.olderCursor||n.loadingOlder)return!1;let a=n.historyWindow??null;i(e,{loadingOlder:!0,olderError:``});try{let t=await X.getMessages(e,{limit:40,before:r.olderCursor});return i(e,e=>{let n=e.historyWindow||e;return(e.historyWindow??null)!==a||n.olderCursor!==r.olderCursor?{...e,loadingOlder:!1}:{...Ao(e,t),loadingOlder:!1,olderError:``}}),t.messages.length>0}catch(t){return i(e,{loadingOlder:!1,olderError:Z(t)}),!1}},[t,i]),p=(0,Q.useCallback)(()=>{c.current.timer&&window.clearInterval(c.current.timer),c.current.timer=null,c.current.activeSessions.clear()},[]),m=(0,Q.useCallback)(()=>{c.current.timer||!c.current.activeSessions.size||(c.current.timer=window.setInterval(()=>{if(typeof document<`u`&&document.hidden)return;let e=Array.from(c.current.activeSessions).map(async e=>{let r=t.current[e];if(!To(r,{localStreamOwned:n.current.has(e)})){c.current.activeSessions.delete(e);return}await u(e)});Promise.allSettled(e).then(()=>{c.current.activeSessions.size||p()})},2e3))},[n,t,p,u]);return(0,Q.useEffect)(()=>{let t=new Set(Object.keys(e));for(let e of c.current.activeSessions)t.has(e)||c.current.activeSessions.delete(e);let r=[];for(let[t,i]of Object.entries(e)){let e=(o===void 0||t===o)&&To(i,{localStreamOwned:n.current.has(t)});e&&!c.current.activeSessions.has(t)&&r.push(t),e?c.current.activeSessions.add(t):c.current.activeSessions.delete(t)}if(c.current.activeSessions.size?m():p(),!r.length)return;let i=l.current;for(let e of r)i.ids.add(e);i.timer===null&&(i.timer=window.setTimeout(()=>{i.timer=null;let e=Array.from(i.ids);if(i.ids.clear(),!(typeof document<`u`&&document.hidden))for(let t of e)c.current.activeSessions.has(t)&&u(t)},0))},[m,n,o,e,p,u]),(0,Q.useEffect)(()=>{let e=l.current;return()=>{p(),e.timer!==null&&window.clearTimeout(e.timer),e.timer=null,e.ids.clear()}},[p]),{syncLiveSession:u,loadSessionMessages:d,loadOlderMessages:f,liveSyncInFlightRef:s}}function Fo(e,t){let n=null,r=!1,i=typeof document<`u`,a=()=>!i||document.visibilityState===`visible`,o=()=>{r&&=(document.removeEventListener(`visibilitychange`,c),!1)},s=()=>{n=setTimeout(()=>{n=null,e()},t)},c=()=>{!a()||n!=null||(o(),s())},l=()=>{!i||r||(document.addEventListener(`visibilitychange`,c),r=!0)};return{schedule(){n!=null||r||(a()?s():l())},flushNow(){n!=null&&(clearTimeout(n),n=null),o(),e()},cancel(){n!=null&&clearTimeout(n),n=null,o()},get active(){return n!=null||r}}}function Io(e,{intervalMs:t=48}={}){let n=null,r=null,i=Fo(()=>{if(n==null)return;let t=n,i=r;n=null,r=null,e(t,i)},t);return{push(e,t=new Date().toISOString()){n=e,r=t,i.schedule()},flush(){i.flushNow()},cancel(){i.cancel(),n=null,r=null}}}function Lo(e,{intervalMs:t=80}={}){let n=new Map,r=null,i=Fo(()=>{if(!n.size)return;let t=n,i=r;n=new Map,r=null,e(t,i)},t);return{push(e,t,a=new Date().toISOString()){e&&(n.set(e,{...n.get(e)||{},...t}),r=a,i.schedule())},flush(){i.flushNow()},cancel(){i.cancel(),n=new Map,r=null}}}function Ro(e){return e>=55296&&e<=56319}function zo(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e.charCodeAt(r)===t.charCodeAt(r);)r+=1;return r>0&&Ro(e.charCodeAt(r-1))?r-1:r}var Bo=50;function Vo(e,{minCharsPerSecond:t=36,maxCharsPerSecond:n=1200,catchUpRemaining:r=160,requestFrame:i,cancelFrame:a,isCurrent:o=()=>!0,now:s=()=>typeof performance<`u`&&performance.now?performance.now():Date.now()}={}){let c=!i&&typeof globalThis.requestAnimationFrame==`function`&&typeof globalThis.cancelAnimationFrame==`function`,l=i||(c?globalThis.requestAnimationFrame.bind(globalThis):e=>setTimeout(()=>e(s()),Math.ceil(Bo))),u=a||(c?globalThis.cancelAnimationFrame.bind(globalThis):clearTimeout),d=typeof document<`u`?document:null,f=()=>!d||d.visibilityState===`visible`,p=``,m=``,h=null,g=null,_=0,v=null,y=0,b=!1,x=new Set,S=e=>{let t=[...x];x.clear();for(let n of t)n(e)},C=()=>{m.length,e(m,h)},w=()=>{b=!0,g!=null&&u(g),d?.removeEventListener(`visibilitychange`,O),g=null,y=0,S(!1)},T=()=>{if(!b){if(!o()){w();return}g!=null&&u(g),g=null,y=0,m=p,v=s(),C(),m===p&&S(!0)}},E=e=>{if(g=null,b)return;if(!o()){w();return}if(!f()){x.size&&T();return}if(p===m){S(!0);return}let i=e-_;if(i+.001<Bo||v!=null&&e-v+.001<Bo){g=l(E);return}_=e;let a=m;p.startsWith(m)||(m=p.slice(0,zo(m,p)),y=0);let s=p.length-m.length;if(s>=480)m=p,y=0;else{let e=Math.max(0,Math.min(n,t+s*(s>=r?10:4))),a=y+e*Math.min(.08,Math.max(0,i/1e3)),o=Math.floor(a+1e-9);y=Math.max(0,a-o);let c=m.length;for(let e=0;e<o&&c<p.length;e+=1){let e=p.codePointAt(c)??0;if(Ro(e)&&c+1===p.length&&!x.size)break;c+=e>65535?2:1}m=p.slice(0,c)}m!==a&&(v=e,C()),m===p&&S(!0);let c=!x.size&&m.length+1===p.length&&Ro(p.charCodeAt(m.length));!b&&g==null&&m!==p&&!c&&f()?g=l(E):g??(y=0)},D=()=>{b||g!=null||!f()||p===m||(_=s(),g=l(E))},O=()=>{f()?D():x.size?T():(g!=null&&u(g),g=null,y=0)};return d?.addEventListener(`visibilitychange`,O),{setTarget(e,t=new Date().toISOString()){b||(p=String(e||``),h=t,D())},drain(){return b||!o()?(w(),Promise.resolve(!1)):m===p?Promise.resolve(!0):new Promise(e=>{x.add(e),f()?D():T()})},flush:T,cancel:w,getShown:()=>m,getTarget:()=>p}}var Ho=new Set(`contacts.search,camera.capture,location.current,device.info,device.capabilities,device.battery,device.storage,device.memory,device.network,device.display,device.locale,device.status,device.clipboard.get,device.clipboard.set,device.vibrate,device.flashlight,device.notify,photos.list,photos.create_album,photos.add_to_album,photos.delete,apps.open_url,apps.open_map,apps.open_system_settings,apps.open_dialer,apps.compose_sms,apps.open_app,apps.share_text`.split(`,`)),Uo=new Map,Wo=[];function Go(e,t){let n=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return n?n(e,t):Promise.reject(Error(`native bridge unavailable`))}async function Ko(e,t){let n=String(t.id||``),r=String(t.operation||``);if(!n||!Ho.has(r))return;let i=Date.parse(String(t.expiresAt||``));if(Number.isFinite(i)&&i<=Date.now()){await X.resolveMobileOperation(e,n,{ok:!1,error:`移动设备操作请求已过期。`});return}try{let i=await Go(`mobile_execute_device_operation`,{request:{id:n,operation:r,parameters:t.parameters&&typeof t.parameters==`object`?t.parameters:void 0}});await X.resolveMobileOperation(e,n,{ok:!0,result:i})}catch(t){await X.resolveMobileOperation(e,n,{ok:!1,error:t instanceof Error?t.message:String(t)})}finally{Wo.push(n),Wo.length>128&&Wo.splice(0,Wo.length-128)}}function qo(e){let t=String(e.id||``);!t||Wo.includes(t)||(Wo.push(t),Wo.length>128&&Wo.splice(0,Wo.length-128))}function Jo(e,t){let n=String(t.id||``);if(!n||Wo.includes(n)||Uo.has(n))return;let r=Ko(e,t).catch(()=>{}).finally(()=>Uo.delete(n));Uo.set(n,r)}function Yo(e){let t=String(e.path||``).trim().replaceAll(`\\`,`/`).toLowerCase();return t?`path:${t}`:`id:${e.id}`}function Xo(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function Zo(e,{agentId:t,responseText:n,data:r,finishedAt:i,error:a,preserveDisplayedText:o}){let s=!!a,c=r.lifecycle||e.lifecycle||{},l=de(e,r);return{...l,streaming:!1,runFinishedAt:i,lastActivityAt:i,...s?{}:{runNotice:``},currentActivity:r.currentActivity?.type===`agent`?r.currentActivity:null,lifecycle:{...c,phase:s?`failed`:`completed`,event:s?`runtime_error`:`runtime_done`,updatedAt:i},sessionTreeRevision:Number(r.sessionTreeRevision??e.sessionTreeRevision??0),activityFeed:(r.activityFeed||[]).filter(e=>e.type===`agent`),goal:s?e.goal:r.goal??e.goal??null,plan:s?e.plan:Nn(r,e.plan),team:Xo(r,e.team),agents:r.agents||e.agents||[],contextUsage:r.contextUsage??e.contextUsage??null,sessionUsage:r.sessionUsage??e.sessionUsage??null,compaction:r.compaction??e.compaction??null,approvals:s?[]:r.approvals||[],tools:jn(r.tools||e.tools,{finishedAt:i,...a?{error:a}:{}}),messages:l.messages.map(e=>e.id===t?{...e,text:o?e.text:typeof r.text==`string`?r.text:n||e.text,streaming:o?e.text!==n:!1,...s?{}:r.turnBoundaryEntryId?{turnBoundaryEntryId:String(r.turnBoundaryEntryId)}:{},...s?{}:r.assets?.length?{attachments:r.assets}:{}}:e)}}function Qo({sessionId:e,agentId:t,sessionStatesRef:n,updateSessionState:r,updateSessions:i,typewriter:a,thinkingScheduler:o,toolScheduler:s,t:c}){let l={responseText:``,responseRenderingStreaming:!0,thinkingText:``,thinkingPrefix:``,queuedDuringRun:!1},u=t=>{i(n=>n.map(n=>n.id===e?t(n):n))},d=(r,i)=>{let a=n.current[e]?.messages??[],o=a.findIndex(e=>e.id===t),s=a.slice(0,Math.max(0,o)).filter(e=>e.role===`user`).at(-1)?.text;Ha({sessionId:e,messageId:t,prompt:s,text:l.responseText,runId:l.runId,startedAt:l.startedAt,status:r,error:i})};return{dispatch:(i,f)=>{let p=new Date().toISOString();if(i===`run`)l.runId=typeof f.runId==`string`?f.runId:void 0,d(`started`);else if(i===`resync_required`)d(`recovering`);else if(i===`meta`)l.startedAt=typeof f.startedAt==`string`?f.startedAt:void 0,d(`started`),r(e,e=>({...de(e,f),model:f.model||e.model,thinkingLevel:f.thinkingLevel||e.thinkingLevel,cwd:f.cwd,permissionMode:f.permissionMode,executionMode:f.executionMode,runMode:f.runMode||e.runMode,goal:f.goal??null,plan:Nn(f,e.plan),team:Xo(f,e.team),agents:f.agents||e.agents||[],currentActivity:f.currentActivity||e.currentActivity||null,activityFeed:f.activityFeed||e.activityFeed||[],lifecycle:f.lifecycle??e.lifecycle??null,sessionTreeRevision:Number(f.sessionTreeRevision??e.sessionTreeRevision??0),thinkingText:f.thinkingText??e.thinkingText??``,contextUsage:f.contextUsage??e.contextUsage??null,sessionUsage:f.sessionUsage??e.sessionUsage??null,runStartedAt:f.startedAt||e.runStartedAt,lastActivityAt:f.lastActivityAt||p})),(f.model||f.thinkingLevel||f.cwd||f.permissionMode||f.executionMode||f.goal!==void 0||f.team!==void 0||Fn(f)!==void 0)&&u(e=>({...e,model:f.model||e.model,thinkingLevel:f.thinkingLevel||e.thinkingLevel,cwd:f.cwd||e.cwd,permissionMode:f.permissionMode||e.permissionMode,executionMode:f.executionMode||e.executionMode,runMode:f.runMode||e.runMode,goal:f.goal??e.goal??null,team:Xo(f,e.team),plan:Nn(f,e.plan??null)}));else if(i===`queue_update`)f.queuedInputs?.length&&(l.queuedDuringRun=!0),r(e,e=>de(e,{...f,queuedInputs:f.queuedInputs||[]}));else if(i===`agent_update`)r(e,e=>{let t=f.currentActivity||(f.agent?{type:`agent`,agent:f.agent,updatedAt:f.agent.lastActivityAt||p}:null);return{...e,team:Xo(f,e.team),agents:f.agents||[],currentActivity:e.currentActivity?.type===`tool`?e.currentActivity:t||e.currentActivity,activityFeed:t?Pn(e.activityFeed,t):e.activityFeed,lastActivityAt:f.agent?.lastActivityAt||p}}),Object.hasOwn(f,`team`)&&u(e=>({...e,team:Xo(f,e.team)}));else if(i===`agent_lifecycle`)r(e,e=>{let t=f.lifecycle||e.lifecycle,n=t?.event===`auto_retry_end`,r=t?.event===`turn_start`&&(e.lifecycle?.phase===`retrying`||e.currentActivity?.type===`retry`);return{...e,lifecycle:t,currentActivity:f.currentActivity||e.currentActivity,lastActivityAt:t?.updatedAt||p,runNotice:n&&t?.retry?.success?``:n&&t?.retry?.message?t.retry.message:r?``:e.runNotice}});else if(i===`session_tree_changed`)r(e,{sessionTreeRevision:Number(f.revision||0),lastActivityAt:p});else if(i===`thinking_level_changed`)r(e,{thinkingLevel:f.level,lastActivityAt:p}),u(e=>({...e,thinkingLevel:f.level}));else if(i===`context_usage`)r(e,{contextUsage:f});else if(i===`session_usage`)r(e,{sessionUsage:f});else if(i===`compaction_start`)s.flush(),r(e,e=>{let t={type:`compaction`,compaction:f,updatedAt:f.startedAt||p};return{...e,compaction:f,currentActivity:t,activityFeed:Pn(e.activityFeed,t),lastActivityAt:f.startedAt||p}});else if(i===`compaction_end`)r(e,e=>{let t={type:`model`,stage:`processing_result`,updatedAt:f.finishedAt||p};return{...e,compaction:f,currentActivity:t,activityFeed:Pn(e.activityFeed,t),lastActivityAt:f.finishedAt||p}});else if(i===`text_patch`)l.responseRenderingStreaming=!0,l.responseText=b(l.responseText,f),d(`streaming`),a.setTarget(l.responseText,p);else if(i===`text_delta`)l.responseText.length,l.responseRenderingStreaming=!0,l.responseText+=f.delta||``,d(`streaming`),a.setTarget(l.responseText,p);else if(i===`text_end`)l.responseText.length,typeof f.text==`string`&&(l.responseText=f.text),l.responseRenderingStreaming=!1,d(`streaming`),a.setTarget(l.responseText,f.updatedAt||p),r(e,e=>({...e,messages:e.messages.map(e=>e.id===t?{...e,streaming:e.text!==l.responseText}:e)}));else if(i===`thinking_reset`)l.thinkingText=``,l.thinkingPrefix=String(f.thinkingText||``).slice(-6e3),o.cancel(),r(e,{thinkingText:l.thinkingPrefix,currentActivity:{type:`model`,stage:`thinking`,updatedAt:f.updatedAt||p},lastActivityAt:f.updatedAt||p});else if(i===`thinking_patch`){l.thinkingText=b(l.thinkingText,f).slice(-6e3);let e=[l.thinkingPrefix,l.thinkingText].filter(Boolean).join(`
552
552
 
553
553
  `);o.push(e.slice(-6e3),p)}else if(i===`tool_start`)o.flush(),s.flush(),r(e,e=>{let t={type:`tool`,id:f.id,name:f.name,args:f.args,status:`running`,startedAt:f.startedAt||p,updatedAt:p,...f.output===void 0?{}:{output:f.output}};return{...e,lastActivityAt:p,runNotice:``,tools:Pn(e.tools,t),currentActivity:t,activityFeed:Pn(e.activityFeed,t)}});else if(i===`tool_update`)s.push(f.id,{message:f.message||``,updatedAt:f.updatedAt||p,...f.output===void 0?{}:{output:f.output},...f.agent?{agent:f.agent}:{},...f.previewImage?{previewImage:f.previewImage}:{},...f.target?{target:f.target}:{}},f.updatedAt||p);else if(i===`tool_end`)s.flush(),r(e,e=>{let t=e.tools.find(e=>e.id===f.id),n=f.finishedAt||p,r=String(t?.name||``),i=(Mn(r)||[`spawn_agent`,`list_agents`,`send_message`,`followup_task`,`wait_agent`,`interrupt_agent`].includes(r))&&[`plan`,`agent`].includes(e.currentActivity?.type),a={...t||{},type:`tool`,status:f.error?`error`:`done`,message:f.message||t?.message||``,updatedAt:n,finishedAt:n,...f.output===void 0?{}:{output:f.output},...f.previewImage?{previewImage:f.previewImage}:{},...f.target?{target:f.target}:{}},o=f.agent?{type:`agent`,agent:f.agent,updatedAt:f.agent.lastActivityAt||n}:null,s=e.activityFeed||[];return(f.error||!i&&!o)&&(s=Pn(s,a)),o&&(s=Pn(s,o)),{...e,lastActivityAt:n,tools:e.tools.map(e=>e.id===f.id?{...e,status:f.error?`error`:`done`,message:f.message||``,updatedAt:n,finishedAt:n,...f.output===void 0?{}:{output:f.output},...f.previewImage?{previewImage:f.previewImage}:{},...f.target?{target:f.target}:{}}:e),currentActivity:f.error?a:o||(i?e.currentActivity:a),activityFeed:s}});else if(i===`mobile_operation_request`)Jo(e,f);else if(i===`mobile_operation_cancel`)qo(f);else if(i===`permission_request`)s.flush(),r(e,e=>({...e,lastActivityAt:p,approvals:[...(e.approvals||[]).filter(e=>e.id!==f.id),f]}));else if(i===`permission_resolved`)r(e,e=>({...e,lastActivityAt:p,approvals:(e.approvals||[]).filter(e=>e.id!==f.id)}));else if(i===`question_request`){s.flush();let t=typeof f.id==`string`?f.id:f.questionId;r(e,e=>({...e,lastActivityAt:p,questions:[...(e.questions||[]).filter(e=>(e.id??e.questionId)!==t),f]}))}else if(i===`question_resolved`){let t=typeof f.questionId==`string`?f.questionId:f.id;r(e,e=>({...e,lastActivityAt:p,questions:(e.questions||[]).filter(e=>(e.id??e.questionId)!==t)}))}else if(i===`generated_asset`)r(e,e=>({...e,lastActivityAt:p,messages:e.messages.map(e=>e.id===t?{...e,attachments:[...(e.attachments||[]).filter(e=>Yo(e)!==Yo(f)),f]}:e)}));else if(i===`goal_update`)r(e,e=>({...e,goal:f.goal??null,team:Xo(f,e.team)})),u(e=>({...e,goal:f.goal??null,team:Xo(f,e.team)}));else if(Ln(i))s.flush(),r(e,e=>{let t=Nn(f,e.plan),n=f.currentActivity||{type:`plan`,plan:t,changes:An(e.plan,t),updatedAt:t?.updatedAt||p};return{...e,lastActivityAt:p,plan:t,currentActivity:n,activityFeed:Pn(e.activityFeed,n)}}),u(e=>({...e,plan:Nn(f,e.plan??null)}));else if(i===`session_title`)u(e=>({...e,name:f.name}));else if(i===`model_fallback`){let t=typeof f.model==`string`?f.model:``;if(!t)return;let n=c(`chat:requestNotice.modelFallback`,{model:typeof f.modelId==`string`&&f.modelId?f.modelId:t});r(e,e=>{let r={type:`retry`,message:f.message,summary:n,updatedAt:p};return{...e,model:t,...typeof f.thinkingLevel==`string`?{thinkingLevel:f.thinkingLevel}:{},runNotice:n,currentActivity:r,activityFeed:Pn(e.activityFeed,r),lastActivityAt:p}}),u(e=>({...e,model:t,...typeof f.thinkingLevel==`string`?{thinkingLevel:f.thinkingLevel}:{}}))}else if(i===`retry`){let t=c(`chat:requestNotice.retryingAttempt`,{attempt:f.attempt,maxAttempts:f.maxAttempts});r(e,e=>{let n={type:`retry`,message:f.message,summary:t,updatedAt:p};return{...e,runNotice:t,currentActivity:n,activityFeed:Pn(e.activityFeed,n),lastActivityAt:p}})}else if(i===`done`||i===`error`){l.queuedDuringRun||=!!(n.current[e]?.hadQueuedInput||n.current[e]?.queuedInputs?.length);let c=f.finishedAt||p;if(typeof f.text==`string`&&(l.responseText=f.text),l.responseRenderingStreaming=!1,l.terminal=!0,d(i===`done`?`completed`:`failed`,i===`error`?f.message||`Speech response failed.`:void 0),a.setTarget(l.responseText,c),i===`error`&&a.flush(),o.flush(),s.cancel(),r(e,e=>Zo(e,{agentId:t,responseText:l.responseText,data:f,finishedAt:c,preserveDisplayedText:i===`done`,...i===`error`?{error:f.message}:{}})),i===`done`)return u(e=>({...e,streaming:!1,goal:f.goal??e.goal??null,team:Xo(f,e.team),plan:Nn(f,e.plan??null)})),!1;throw Error(f.message)}},state:l}}var $o=`pisper:usage-updated`;function es({browserNotify:e,notify:t,defaultModel:n,localStreamSessionsRef:r,streamGenerationRef:i,sessionStatesRef:a,setActiveId:s,setGlobalError:c,updateSessionState:l,updateSessions:u,createSession:d,loadSessionMessages:f,refreshSessions:p,syncLiveSession:m}){let{t:h}=o(),g=(0,Q.useRef)(new Map),_=(0,Q.useRef)(new Set),v=(0,Q.useRef)(new Map),y=(0,Q.useCallback)(async(t,o,_=[],v=!1,y=!1,b=null,x=null,S={})=>{let C=S.retryFromIndex,w=C==null?t.trim()||(_.length?h(`chat:chatPage.pleaseAnalyzeTheseAttachments`):``)||(x?x.resourceName:``):t;if(!w&&!x)return!1;let T=o;if(T||=await d(),!T||a.current[T]?.streaming)return!1;a.current[T]?.historyWindow&&await f(T,{force:!0});let E=a.current[T];if(E?.streaming)return!1;if(C!=null){let e=-1;for(let t=(E?.messages.length||0)-1;t>=0;--t)if(E.messages[t]?.role===`user`){e=t;break}let t=E?.messages[e];if(!t||S.retryUserMessageId&&t.id!==S.retryUserMessageId)return!1;C=e,w=t.text||``,_=t.attachments||[]}let D=a.current[T];if(D?.pendingRuntimeSelection||D?.switchingModel||D?.switchingThinking)return!1;let O=(i.current.get(T)||0)+1;i.current.set(T,O);let k=!1,A=()=>!k&&i.current.get(T)===O,j=()=>{},M=new Promise(e=>{j=e});g.current.set(T,{promise:M,resolve:j}),S.activate!==!1&&(s(T),c(``));let N={id:`user-${Date.now()}`,role:`user`,text:w,invocation:x,attachments:_.map(({id:e,kind:t,name:n,mimeType:r,size:i,data:a})=>({id:e,kind:t,name:n,mimeType:r,size:i,data:t===`image`?a:void 0}))},P=`agent-${Date.now()}`,F=new Date().toISOString(),I={responseText:``,responseRenderingStreaming:!0,thinkingText:``,thinkingPrefix:``,queuedDuringRun:!1},L=Io((e,t)=>{A()&&l(T,n=>A()?{...n,thinkingText:e,lastActivityAt:t||n.lastActivityAt,currentActivity:{type:`model`,stage:`thinking`,updatedAt:t||n.lastActivityAt}}:n)},{intervalMs:80}),R=Vo((e,t)=>{A()&&l(T,n=>{if(!A())return n;let r=n.messages.map(t=>t.id===P?{...t,text:e,streaming:I.responseRenderingStreaming||e!==I.responseText}:t);if(I.terminal||!I.responseRenderingStreaming||n.currentActivity&&n.currentActivity.type!==`model`)return{...n,messages:r};let i={type:`model`,stage:`responding`,updatedAt:t||n.lastActivityAt};return{...n,lastActivityAt:t||n.lastActivityAt,runNotice:``,currentActivity:i,activityFeed:Pn(n.activityFeed,i),messages:r}})},{isCurrent:A}),z=Lo((e,t)=>{A()&&l(T,n=>{if(!A())return n;let r=n.activityFeed||[];for(let[n,i]of e){let e=r.find(e=>e.type===`tool`&&e.id===n);e&&(r=Pn(r,{...e,...i,updatedAt:t||e.updatedAt}))}let i=n.currentActivity?.type===`tool`&&e.has(n.currentActivity.id)?{...n.currentActivity,...e.get(n.currentActivity.id),updatedAt:t||n.currentActivity.updatedAt}:n.currentActivity;return{...n,lastActivityAt:t||n.lastActivityAt,tools:n.tools.map(t=>{let n=e.get(String(t.id||``));return n?{...t,...n}:t}),currentActivity:i,activityFeed:r}})}),B=Qo({sessionId:T,agentId:P,sessionStatesRef:a,updateSessionState:l,updateSessions:u,typewriter:R,thinkingScheduler:L,toolScheduler:z,t:h}),V=!1,H=(e,t)=>A()?(!V&&(e===`run`||e===`meta`)&&(V=!0,S.onAccepted?.()),e===`resync_required`?(B.dispatch(e,t),k=!0,i.current.delete(T),r.current.delete(T),m(T),!1):B.dispatch(e,t)):!1;I=B.state,l(T,e=>{let t=v||y||e.goal?.status===`active`;return{...e,messages:[...C==null?e.messages:e.messages.slice(0,C),N,{id:P,role:`agent`,text:``,streaming:!0}],tools:[],approvals:[],error:``,streaming:!0,loaded:!0,runStartedAt:F,lastActivityAt:F,runFinishedAt:null,runStopped:!1,runNotice:``,currentActivity:{type:`model`,stage:`thinking`,updatedAt:F},activityFeed:[],lifecycle:{phase:`starting`,event:`prompt_submitted`,turn:0,updatedAt:F},thinkingText:``,hadQueuedInput:!1,withdrawnInputIds:[],queuedInputRunId:P,compaction:null,plan:t?e.plan:null}}),!v&&!y&&u(e=>e.map(e=>e.id!==T||e.goal?.status===`active`?e:{...e,plan:null})),r.current.add(T);let ee=!1;try{if(C==null?await X.openStream({sessionId:T,message:w,attachments:_,goalMode:v,teamMode:y,goalTokenBudget:b,invocation:x},H):await X.retryLastTurn(T,H),!A())return V;I.responseRenderingStreaming=!1,I.terminal=!0,R.setTarget(I.responseText),L.flush(),z.flush();let t=new Date().toISOString();if(a.current[T]?.streaming&&l(T,e=>{let n=e.runFinishedAt||t;return{...e,streaming:!1,runFinishedAt:n,lastActivityAt:n,runNotice:``,currentActivity:null,activityFeed:[],approvals:[],tools:jn(e.tools,{finishedAt:n}),messages:e.messages.map(e=>e.id===P?{...e,streaming:e.text!==I.responseText}:e)}}),!await R.drain()||!A()||(l(T,e=>({...e,messages:e.messages.map(e=>e.id===P?{...e,text:I.responseText,streaming:!1}:e)})),!A()))return V;(v||y||I.queuedDuringRun||a.current[T]?.hadQueuedInput||a.current[T]?.goal||a.current[T]?.queuedInputs?.length)&&l(T,{queuedInputs:[],hadQueuedInput:!1});let r;try{r=(await p()).find(e=>e.id===T)}catch{m(T)}if(!A())return V;S.activate!==!1&&e?.(`chat.completed`,{chat:{title:r?.name||h(`chat:chatPage.appChat`,{app:`Pisper`}),summary:I.responseText.trim().slice(0,260)||h(`chat:chatPage.theAgentHasFinishedResponding`),model:a.current[T]?.model||n}})}catch(e){if(!A())return V;if((I.runId||I.startedAt)&&!I.terminal)return B.dispatch(`resync_required`,{}),k=!0,i.current.delete(T),r.current.delete(T),m(T),V;ee=!0,R.cancel(),L.flush(),z.cancel();let t=new Date().toISOString(),n=Z(e);if(l(T,e=>({...e,streaming:!1,error:n,runFinishedAt:t,lastActivityAt:t,runNotice:``,currentActivity:null,activityFeed:[],approvals:[],tools:jn(e.tools,{finishedAt:t,error:n}),messages:e.messages.map(e=>e.id===P?{...e,streaming:!1,error:n,text:e.text||I.responseText}:e)})),I.queuedDuringRun||a.current[T]?.hadQueuedInput||a.current[T]?.queuedInputs?.length){try{await f(T,{force:!0})}catch{}l(T,{queuedInputs:[],hadQueuedInput:!1})}u(e=>e.map(e=>e.id===T?{...e,streaming:!1}:e))}finally{let e=A();if(k=!0,e&&(r.current.delete(T),i.current.delete(T),l(T,{streaming:!1,hadQueuedInput:!1}),g.current.get(T)?.promise===M&&g.current.delete(T)),R.cancel(),L.cancel(),z.cancel(),j(),window.dispatchEvent(new Event($o)),ee&&e)m(T);else if(e){let e=a.current[T];(e?.recovering||e&&!e.loaded)&&m(T)}}return V},[e,d,n,f,r,p,i,a,s,c,m,h,l,u]),b=(0,Q.useCallback)(async(e,n,r=[],i=`steer`,o)=>{let s=String(e||``).trim()||(r.length?h(`chat:chatPage.pleaseAnalyzeTheseAttachments`):``);if(!n||!s)return!1;a.current[n]?.historyWindow&&await f(n,{force:!0});let c=a.current[n]?.queuedInputRunId;try{let e=await X.queueInput(n,s,r,i),t=new Date().toISOString(),a={id:`interactive-user-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:`user`,text:s,queuedAt:t,queuedInputId:e.inputId||void 0,streamingBehavior:e.behavior||i,attachments:r.map(({id:e,kind:t,name:n,mimeType:r,size:i,data:a})=>({id:e,kind:t,name:n,mimeType:r,size:i,data:t===`image`?a:void 0}))};return l(n,n=>{let r=de(n,e),i=!r.withdrawnInputIds?.includes(e.inputId)&&n.queuedInputRunId===c;return{...r,messages:i?Pe(r.messages,a):r.messages,hadQueuedInput:!0,lastActivityAt:t}}),!0}catch(e){if(nr(e)){let e=g.current.get(n);return e?await e.promise:await m(n),l(n,{streaming:!1,recovering:!1,queuedInputs:[],hadQueuedInput:!1}),await f(n,{force:!0}),await y(s,n,r,!1,!1,null,null,{onAccepted:o})??!1}return t(Z(e),`error`),!1}},[f,t,y,a,m,h,l]),x=(0,Q.useCallback)(e=>{if(!e)return Promise.resolve();let n=a.current[e],r=v.current.get(e);if(r?.matchesRun(n))return r.promise;let i=n?.runStartedAt,o=n?.queuedInputRunId,s=!!n?.runStopped,c=e=>!!(e&&(o?e.queuedInputRunId===o:!e.queuedInputRunId&&e.runStartedAt===i));l(e,{runStopped:!0});let d=(async()=>{let n;try{n=await X.abort(e)}catch(t){let n=a.current[e];throw c(n)&&n?.runStopped&&l(e,{runStopped:s}),t}if(!c(a.current[e])||(await m(e,{force:!0}),!c(a.current[e])))return;let r=new Date().toISOString();l(e,e=>({...e,streaming:!1,queuedInputs:[],hadQueuedInput:!1,goal:n.goal??null,team:Object.hasOwn(n,`team`)?n.team??null:e.team,compaction:e.compaction?.active?{...e.compaction,active:!1,status:`aborted`,aborted:!0,finishedAt:r}:e.compaction,runFinishedAt:r,lastActivityAt:r,runStopped:!0,runNotice:``,approvals:[],tools:jn(e.tools,{finishedAt:r,error:h(`chat:chatPage.stopped`)}),messages:e.messages.map(e=>e.streaming?{...e,streaming:!1}:e)})),u(t=>t.map(t=>t.id===e?{...t,streaming:!1,goal:n.goal??t.goal??null,team:Object.hasOwn(n,`team`)?n.team??null:t.team}:t)),t(h(`chat:chatPage.currentRunStopped`),`info`)})().finally(()=>{v.current.get(e)?.promise===d&&v.current.delete(e)});return v.current.set(e,{matchesRun:c,promise:d}),d},[t,a,m,h,l,u]),S=(0,Q.useCallback)(async(e,n)=>{let r=`${e}/${n}`;if(!e||!n||_.current.has(r))return null;_.current.add(r),l(e,e=>({...e,withdrawingInputIds:[...e.withdrawingInputIds||[],n]}));try{let r=await X.withdrawQueuedInput(e,n);return l(e,e=>de(e,{...r,removedInputId:r.removed?n:void 0})),r.removed?r.withdrawnInput||null:(t(h(`chat:focusSession.queuedInputAlreadyConsumed`),`info`),null)}catch(e){return t(Z(e),`error`),null}finally{_.current.delete(r),l(e,e=>({...e,withdrawingInputIds:(e.withdrawingInputIds||[]).filter(e=>e!==n)}))}},[t,h,l]);return{sendPrompt:y,retryLastTurn:(0,Q.useCallback)(async(e,t={})=>{let n=a.current[e];if(!n||n.streaming)return;if(n.historyWindow){try{await f(e,{force:!0})}catch{return}if(n=a.current[e],!n||n.streaming||n.historyWindow||n.loading||n.error)return}let r=n.messages||[],i=-1;for(let e=r.length-1;e>=0;--e)if(r[e]?.role===`user`){i=e;break}if(i<0)return;let o=r[i];await y(o.text||``,e,o.attachments||[],!1,!1,null,null,{retryFromIndex:i,retryUserMessageId:o.id,...t})},[f,y,a]),queuePrompt:b,withdrawQueuedInput:S,abort:x}}function ts(e,t){return new Promise(n=>{let r=()=>{clearTimeout(i),t.removeEventListener(`abort`,r),n()},i=setTimeout(r,e);t.addEventListener(`abort`,r,{once:!0}),t.aborted&&r()})}function ns({isStreaming:e,apply:t,intervalMs:n=750}){let r=new Map,i=new Map,a=new Set,o=e=>{let t=r.get(e);for(let n of a)n(e,t);a.size&&r.get(e)===t&&(t?.status===`success`||t?.status===`error`)&&r.delete(e)},s=e=>{i.get(e)?.controller.abort(),i.delete(e),r.delete(e),o(e)};return{select:(a,c)=>{if(r.get(a)?.status===`applying`)return!1;if(!c)return s(a),!0;if(r.set(a,{selection:c,status:`pending`}),o(a),i.has(a))return!0;let l=new AbortController,{signal:u}=l,d={controller:l,promise:Promise.resolve()};return i.set(a,d),d.promise=(async()=>{try{for(;!u.aborted;){let s=await e(a,u);if(u.aborted)return;if(s){await ts(n,u);continue}let c=r.get(a);if(!c)return;r.set(a,{...c,status:`applying`}),o(a);let l=await t(a,c.selection);u.aborted||(i.get(a)===d&&i.delete(a),r.set(a,{...c,status:`success`,result:l}),o(a));return}}catch(e){let t=r.get(a);!u.aborted&&t&&(i.get(a)===d&&i.delete(a),r.set(a,{...t,status:`error`,error:e}),o(a))}finally{i.get(a)===d&&i.delete(a)}})(),!0},subscribe(e){a.add(e);for(let[t,n]of r)e(t,n),r.get(t)===n&&(n.status===`success`||n.status===`error`)&&r.delete(t);return()=>{a.delete(e)}},async dispose(){let e=[...i.values()];a.clear();for(let e of i.keys())s(e);r.clear(),await Promise.all(e.map(e=>e.promise))}}}var rs=ns({isStreaming:async(e,t)=>{let n=await X.getLiveSession(e,{signal:t});return!!(n.configurationBusy??n.streaming)},apply:(e,t)=>t.model?X.updateModel(e,t.model.provider,t.model.modelId):X.setThinkingLevel(e,t.thinkingLevel)});function is({notify:e,requestText:t,requestConfirm:n,availableModels:r,sessionStatesRef:i,updateSessionState:a,updateSessions:s,replaceSessionStates:c,setGlobalError:l,syncLiveSession:u}){let{t:d,language:f}=o(),[p,m]=(0,Q.useState)(null),h=(0,Q.useCallback)(e=>{a(e,e=>({...e,runtimeSelectionRevision:(e.runtimeSelectionRevision||0)+1}))},[a]),g=(0,Q.useCallback)((e,t)=>{s(n=>n.map(n=>n.id===e?t(n):n))},[s]),_=(0,Q.useCallback)(async t=>{if(t)try{let n=await X.pauseGoal(t);a(t,{goal:n.goal||null}),g(t,e=>({...e,goal:n.goal||null})),e(d(`chat:chatPage.goalPaused`),`info`)}catch(e){a(t,{error:Z(e)})}},[e,d,a,g]),v=(0,Q.useCallback)(async(t,n)=>{if(t)try{let r=await X.setGoalBudget(t,n);a(t,{goal:r.goal||null}),g(t,e=>({...e,goal:r.goal||null})),e(d(`chat:chatPage.goalTokenBudgetUpdated`),`info`)}catch(e){a(t,{error:Z(e)})}},[e,d,a,g]),y=(0,Q.useCallback)(async t=>{let n=i.current[t];if(!(!t||n?.streaming||n?.compaction?.active)){a(t,{compaction:{...n?.compaction||{},active:!0,status:`running`,reason:`manual`},error:``});try{let n=await X.compactSession(t);a(t,{compaction:n.compaction||null,contextUsage:n.contextUsage||null}),e(d(`chat:chatPage.contextCompacted`))}catch(e){await u(t).catch(()=>{}),a(t,{error:Z(e)})}}},[e,i,u,d,a]),b=(0,Q.useCallback)(async e=>{let t=await X.updateCompactionPreference(e);c(Object.fromEntries(Object.entries(i.current).map(([e,n])=>{let r=Number(n.contextUsage?.contextWindow)||0;return r?[e,{...n,contextUsage:{...n.contextUsage,compactAtPercent:t.thresholdPercent,compactAtTokens:Math.floor(r*t.thresholdPercent/100)}}]:[e,n]})))},[c,i]),x=(0,Q.useCallback)((e,t={})=>{let n=String(t.model||``),r=String(i.current[e]?.model||``);if(n&&r&&n!==r)return;let o=Array.isArray(t.availableThinkingLevels)?t.availableThinkingLevels.map(e=>String(e)):Array.isArray(t.availableLevels)?t.availableLevels.map(e=>String(e)):[],s=String(t.thinkingLevel||``);a(e,{thinkingLevel:s||void 0,availableThinkingLevels:o,thinkingStatus:String(t.thinkingStatus||t.status||``),thinkingMessage:String(t.thinkingMessage||t.message||``),switchingThinking:!1}),s&&g(e,e=>({...e,thinkingLevel:s}))},[i,a,g]),S=(0,Q.useCallback)(async e=>{if(!e)return;let t=i.current[e]?.runtimeSelectionRevision,n=i.current[e];if(!(n?.switchingModel||n?.switchingThinking))try{let n=await X.getThinkingLevel(e);if(i.current[e]?.runtimeSelectionRevision!==t)return;x(e,n)}catch{if(i.current[e]?.runtimeSelectionRevision!==t)return;a(e,{thinkingStatus:`error`,thinkingMessage:d(`chat:focusSession.thinkingLevelsLoadFailed`)})}},[x,i,d,a]),w=(0,Q.useCallback)(async(t,o)=>{let s=r.find(e=>e.key===o);if(!t||!s)return;let c=i.current[t];if(c?.switchingModel||c?.switchingThinking)return;if(c?.streaming||c?.pendingRuntimeSelection){rs.select(t,s.key===c.model?void 0:{model:s});return}h(t);let l=c?.model||``,u=!!c?.messages?.length&&!c?.compaction?.active;a(t,{switchingModel:!0,model:s.key,error:``}),g(t,e=>({...e,model:s.key}));try{let r=await X.updateModel(t,s.provider,s.modelId);h(t),a(t,{model:r.model||s.key,contextUsage:r.contextUsage??null,switchingModel:!1}),g(t,e=>({...e,model:r.model||s.key})),x(t,r),e(d(`chat:chatPage.switchedToModel`,{model:s.label})),u&&await n({title:d(`chat:chatPage.compactAfterModelSwitch`),message:d(`chat:chatPage.compactAfterModelSwitchDescription`),confirmLabel:d(`chat:chatPage.compactNow`),tone:`primary`})&&await y(t)}catch(e){h(t),a(t,{switchingModel:!1,model:l||void 0,error:Z(e)}),l&&g(t,e=>({...e,model:l}))}},[x,r,y,h,e,n,i,d,a,g]),T=(0,Q.useCallback)(async(t,n)=>{let r=String(n||``).trim();if(!t||!r)return;let o=i.current[t]||{};if(o.switchingModel||o.switchingThinking)return;if(o.streaming||o.pendingRuntimeSelection){if(o.pendingRuntimeSelection?.model)return;rs.select(t,r===o.thinkingLevel?void 0:{thinkingLevel:r});return}h(t);let s=String(o.thinkingLevel||``);a(t,{switchingThinking:!0,thinkingLevel:r,error:``}),g(t,e=>({...e,thinkingLevel:r}));try{let n=await X.setThinkingLevel(t,r);h(t),x(t,n),e(d(`chat:chatPage.switchedToThinkingLevel`,{level:String(n.thinkingLevel||r)}))}catch(e){h(t),a(t,{switchingThinking:!1,thinkingLevel:s||void 0,error:Z(e)}),s&&g(t,e=>({...e,thinkingLevel:s}))}},[x,h,e,i,d,a,g]);(0,Q.useEffect)(()=>rs.subscribe((t,n)=>{if(!n){a(t,{pendingRuntimeSelection:void 0});return}let{selection:r,status:i}=n;if(i===`pending`||i===`applying`){h(t),a(t,{pendingRuntimeSelection:{model:r.model?.key,thinkingLevel:r.thinkingLevel},switchingModel:i===`applying`&&!!r.model,switchingThinking:i===`applying`&&!!r.thinkingLevel,error:``});return}if(h(t),a(t,{pendingRuntimeSelection:void 0,switchingModel:!1,switchingThinking:!1,...n.error?{error:Z(n.error)}:{}}),i===`error`)return;let o=n.result||{};if(r.model){let e=String(o.model||r.model.key);a(t,{model:e,contextUsage:o.contextUsage??null}),g(t,t=>({...t,model:e}))}x(t,o),e(r.model?d(`chat:chatPage.switchedToModel`,{model:r.model.label}):d(`chat:chatPage.switchedToThinkingLevel`,{level:String(o.thinkingLevel||r.thinkingLevel)}))}),[x,h,e,d,a,g]);let E=(0,Q.useCallback)(async(t,r)=>{if(!t)return!1;a(t,{switchingPermission:!0,error:``});try{if(r===`full-access`&&!await n({title:d(`chat:chatPage.enableFullAccess`),message:d(`chat:chatPage.fullAccessAllowsTheAgentToUseFilesAndNetworkServicesOutsideTheWorkspaceAndShellCommandsWillNoLon`),confirmLabel:d(`chat:chatPage.enableFullAccess`)}))return a(t,{switchingPermission:!1}),!1;let i=await X.updateExecutionMode(t,r);return a(t,{executionMode:i.executionMode,permissionMode:i.permissionMode,switchingPermission:!1}),g(t,e=>({...e,executionMode:i.executionMode,permissionMode:i.permissionMode})),e(d(`chat:chatPage.executionModeChangedToMode`,{mode:i.executionMode===`approval-required`?d(`chat:chatPage.approvalRequired`):i.executionMode===`workspace-write`?d(`chat:focusSession.workspaceWrite`):d(`chat:chatPage.fullAccess`)})),!0}catch(e){return a(t,{switchingPermission:!1,error:Z(e)}),!1}},[e,n,d,a,g]),D=(0,Q.useCallback)(async(e,t)=>{if(!e)return!1;try{let n=await X.updateRunMode(e,t),r=String(n.runMode||t);return a(e,{runMode:r}),g(e,e=>({...e,runMode:r})),!0}catch(t){return a(e,{error:Z(t)}),!1}},[a,g]),O=(0,Q.useCallback)(async(t,n,r)=>{a(t,{error:``});try{let e=await X.resolveApproval(t,n,r);a(t,e=>({...e,approvals:(e.approvals||[]).filter(e=>e.id!==n)})),e.alreadyResolved&&u(t,{force:!0})}catch(n){if(await u(t,{force:!0}),n instanceof C&&n.status===404){e(d(`chat:chatPage.approvalStatusUpdated`),`info`);return}throw a(t,{error:Z(n)}),n}},[e,u,d,a]),k=(0,Q.useCallback)(async(e,t,n)=>{try{await X.answerQuestion(e,t,n),a(e,e=>({...e,questions:(e.questions||[]).filter(e=>(e.id??e.questionId)!==t)}))}catch(t){throw await u(e,{force:!0}),t}},[u,a]),A=(0,Q.useCallback)(async(t,n)=>{if(!(!t?.id||i.current[t.id]?.streaming)){a(t.id,{switchingCwd:!0,error:``});try{let r=await X.updateCwd(t.id,n);a(t.id,{cwd:r.cwd,switchingCwd:!1}),g(t.id,e=>({...e,cwd:r.cwd})),m(null),e(d(`chat:chatPage.workingDirectoryChangedToWorkspace`,{workspace:hn(r.cwd,f)}))}catch(e){throw a(t.id,{switchingCwd:!1,error:Z(e)}),e}}},[f,e,i,d,a,g]);return{workspaceSession:p,setWorkspaceSession:m,switchSessionCwd:A,selectSessionWorkspace:(0,Q.useCallback)(async t=>{if(t?.id){if(i.current[t.id]?.streaming){e(d(`chat:chatPage.stopTheActiveRunBeforeChangingTheWorkspace`),`info`);return}try{let e=await Vn(t.cwd,d(`common:workspacePicker.setWorkingDirectory`));e.status===`picked`?await A(t,e.path):e.status===`unavailable`&&m(t)}catch(e){a(t.id,{switchingCwd:!1,error:Z(e)})}}},[e,i,A,d,a]),renameSession:(0,Q.useCallback)(async n=>{if(!n?.id)return;if(i.current[n.id]?.streaming){e(d(`chat:chatPage.stopTheActiveRunBeforeRenamingTheChat`),`info`);return}let r=await t({title:d(`chat:chatPage.renameChat`),inputLabel:d(`chat:chatPage.chatTitle`),value:n.name,confirmLabel:d(`chat:chatPage.save`)});if(r!==null&&r!==n.name)try{let t=await X.renameSession(n.id,r);g(n.id,e=>({...e,name:t.name})),Jt({id:n.id,name:t.name}),e(d(`chat:chatPage.chatTitleUpdated`))}catch(e){l(Z(e))}},[e,t,i,l,d,g]),pauseGoal:_,setGoalBudget:v,compactSession:y,setCompactionThreshold:b,loadSessionThinkingLevel:S,switchSessionModel:w,switchSessionThinkingLevel:T,switchSessionExecutionMode:E,switchSessionRunMode:D,resolveToolApproval:O,answerQuestion:k}}function as(e,t){if(!e||!t)return!1;let n=Se.getState(),r=n.sessions[e]?.pages.find(e=>e.kind===`browser`);if(r)return n.update(e,`browser`,{type:`select`,id:r.id}),n.update(e,`browser`,{type:`browser`,id:r.id,url:t,draft:t}),!0;if(n.update(e,`browser`,{type:`open`,kind:`browser`})===`limit`)return!1;let i=Se.getState().sessions[e],a=i?.pages.find(e=>e.id===i.activeId);return a?.kind===`browser`&&(n.update(e,`browser`,{type:`browser`,id:a.id,url:t,draft:t}),!0)}function os(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ss(e){if(!os(e)||typeof e.created!=`boolean`)throw y();if(e.session===null){if(e.expiresAt!==null||e.created)throw y();return{session:null,expiresAt:null,created:!1}}let t=e.session;if(!os(t)||typeof t.id!=`string`||!t.id||typeof e.expiresAt!=`string`||!Number.isFinite(Date.parse(e.expiresAt)))throw y();let n={id:t.id};for(let e of[`name`,`cwd`,`model`,`thinkingLevel`,`executionMode`,`permissionMode`,`runMode`]){let r=t[e];if(r!=null&&typeof r!=`string`)throw y();typeof r==`string`&&(n[e]=r)}if(t.streaming!==void 0&&typeof t.streaming!=`boolean`)throw y();return typeof t.streaming==`boolean`&&(n.streaming=t.streaming),{session:n,expiresAt:e.expiresAt,created:e.created}}async function cs(e,t){return ss(await v(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{signal:t}))}async function ls(e,t){let n=ss(await v(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{method:`POST`,signal:t}));if(!n.session)throw y();return n}function us({runtime:e,children:t}){let[n,r]=(0,Q.useState)({}),i=(0,Q.useRef)(n),a=(0,Q.useRef)(!0),o=(0,Q.useRef)(e),s=(0,Q.useRef)(new Map),c=(0,Q.useRef)(new Map);(0,Q.useLayoutEffect)(()=>{o.current=e},[e]),(0,Q.useLayoutEffect)(()=>(a.current=!0,()=>{a.current=!1}),[]);let l=(0,Q.useCallback)((e,t)=>{let n={...i.current,[e]:{...i.current[e]??je,...t}};i.current=n,r(n)},[]),u=(0,Q.useCallback)(async(e,t=!1)=>{if(!a.current)return null;let n=c.current.get(e);if(n){let r=await n.promise;return!t||n.create?r:u(e,!0)}let r=new AbortController;l(e,{loading:!0,error:``});let d=(async()=>{try{let n=await(t?ls:cs)(e,r.signal);if(r.signal.aborted)return null;let a=i.current[e]?.session?.id;if(a&&a!==n.session?.id&&(o.current.discard(a),s.current.get(a)?.(),s.current.delete(a),ut(a)),l(e,{...n,expired:!n.session&&!!(a||i.current[e]?.expired)}),n.session){if(s.current.has(n.session.id)||s.current.set(n.session.id,o.current.retainSessionState(n.session.id)),await o.current.syncLiveSession(n.session.id),r.signal.aborted)return null;await o.current.loadSessionMessages(n.session.id)}return r.signal.aborted?null:n}catch(t){return r.signal.aborted||l(e,{error:Z(t)}),null}finally{r.signal.aborted||l(e,{loading:!1}),c.current.get(e)?.controller===r&&c.current.delete(e)}})();return c.current.set(e,{create:t,controller:r,promise:d}),d},[l]);(0,Q.useEffect)(()=>{a.current=!0;let e=c.current,t=s.current,n=()=>{for(let[e,t]of Object.entries(i.current))t.expiresAt&&Date.parse(t.expiresAt)<=Date.now()&&!c.current.has(e)&&u(e)},r=window.setInterval(n,6e4),o=()=>{document.visibilityState===`visible`&&n()};return document.addEventListener(`visibilitychange`,o),()=>{a.current=!1,window.clearInterval(r),document.removeEventListener(`visibilitychange`,o);for(let t of e.values())t.controller.abort();e.clear();for(let e of t.values())e();t.clear()}},[u]);let d=(0,Q.useCallback)((e,t)=>l(e,{draft:t}),[l]),f=(0,Q.useMemo)(()=>({entries:n,runtime:e,load:u,setDraft:d}),[n,e,u,d]);return(0,$.jsx)(Oe.Provider,{value:f,children:t})}var ds=`new`,fs=40;function ps(e){let t=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return t?t(e):Promise.reject(Error(`native bridge unavailable`))}function ms({notify:e,navigate:t,browserNotify:n,registerPrimaryAction:r,pendingAsset:i,onAssetConsumed:a,requestText:s,requestConfirm:c,routeSessionId:l,onRouteSessionChange:u,routeLeading:d,pageChrome:f}){let{t:p}=o(),m=l!==void 0,h=m&&l!==ds?l:``,g=O(e=>e.client===`mobile-app`),_=O(e=>e.loaded),v=E(),y=g||v,b=(0,Q.useRef)(null),S=(0,Q.useRef)(new Set),C=(0,Q.useRef)(new Map),w=(0,Q.useRef)(null),D=So({notify:e}),k=(0,Q.useRef)(new Set),A=(0,Q.useRef)(new Set);(0,Q.useEffect)(()=>{for(let e of A.current)D.sessions.some(t=>t.id===e&&t.unread)||A.current.delete(e);let e=e=>{let t=D.activeId;!t||document.visibilityState!==`visible`||!D.sessions.some(e=>e.id===t&&e.unread)||k.current.has(t)||!e&&A.current.has(t)||(k.current.add(t),A.current.add(t),un(t,{read:!0}).catch(()=>void 0).finally(()=>k.current.delete(t)))};return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[D.activeId,D.sessions]);let j=T(e=>e.capabilities.features[`board.events`]===!0),M=Po({sessionStates:D.sessionStates,sessionStatesRef:D.sessionStatesRef,localStreamSessionsRef:S,streamGenerationRef:C,updateSessionState:D.updateSessionState,updateSessions:D.updateSessions,pollOnly:j?D.activeId||null:void 0}),N=Co({setActiveId:D.setActiveId,loadSessionMessages:M.loadSessionMessages,openRoutedSession:m?u:void 0}),P=D.createSessionRecord,F=M.loadSessionMessages,I=D.refreshSessions,L=D.sessionStatesRef,z=M.syncLiveSession,B=D.setGlobalError,V=N.openSession,[H,ee]=(0,Q.useState)({sessionId:``,token:0}),U=(0,Q.useCallback)(async(e=``)=>{let t=null;g&&(t=await ps(`mobile_state`).catch(()=>null));let n=R(g,t),r=await P(e,{inheritRecentCwd:n});return r?(V(r),r):``},[P,g,V]);Yn(r,U);let te=D.setActiveId,ne=!!(h&&D.sessions.some(e=>e.id===h));(0,Q.useEffect)(()=>{!h||D.activeId===h||!ne&&!D.loading||te(h)},[D.activeId,D.loading,ne,h,te]);let re=(0,Q.useRef)(``);(0,Q.useEffect)(()=>{if(!h||re.current===h)return;re.current=h;let e=Gt();e?.sessionId===h&&e.targetEntryId&&F(h,{force:!0,limit:fs})},[F,h]),(0,Q.useEffect)(()=>{if(!h||!ne)return;let e=gr();e&&as(h,e.url);let t=e=>{let t=e.detail?.url;t&&as(h,t)};return window.addEventListener(_r,t),()=>window.removeEventListener(_r,t)},[ne,h]);let W=es({browserNotify:n,notify:e,defaultModel:D.defaultModel,localStreamSessionsRef:S,streamGenerationRef:C,sessionStatesRef:D.sessionStatesRef,setActiveId:D.setActiveId,setGlobalError:D.setGlobalError,updateSessionState:D.updateSessionState,updateSessions:D.updateSessions,createSession:U,loadSessionMessages:M.loadSessionMessages,refreshSessions:D.refreshSessions,syncLiveSession:M.syncLiveSession}),{sendPrompt:ie,retryLastTurn:ae}=W,oe=(0,Q.useRef)(!1),se=m&&l===ds,ce=m&&D.loading;(0,Q.useEffect)(()=>{se||(oe.current=!1)},[se]),(0,Q.useEffect)(()=>{if(ce)return;let e=()=>{let e=Ht();return e?(se&&(oe.current=!0),(async()=>{let t=await U(e.cwd);t&&e.prompt&&ie(e.prompt,t)})(),!0):!1},t=()=>void e();return window.addEventListener(Ut,t),!e()&&se&&!oe.current&&(oe.current=!0,U()),()=>window.removeEventListener(Ut,t)},[se,U,ce,ie]);let G=is({notify:e,requestText:s,requestConfirm:c,availableModels:D.availableModels,sessionStatesRef:D.sessionStatesRef,updateSessionState:D.updateSessionState,updateSessions:D.updateSessions,replaceSessionStates:D.replaceSessionStates,setGlobalError:D.setGlobalError,syncLiveSession:M.syncLiveSession}),le=(0,Q.useCallback)(()=>{if(document.visibilityState!==`visible`||w.current)return;let e=(async()=>{g&&await x().catch(()=>void 0);let e=[];try{e=await I(void 0,{preserveExistingOnEmpty:!0})}catch{}let t=new Set([...Object.keys(L.current),...D.activeId?[D.activeId]:[],...e.filter(e=>e.streaming).map(e=>e.id)]);await Promise.allSettled(Array.from(t).map(e=>z(e,{force:!0})))})().finally(()=>{w.current=null});w.current=e},[D.activeId,g,I,L,z]);(0,Q.useEffect)(()=>{let e=()=>le();return document.addEventListener(`visibilitychange`,e),window.addEventListener(`pageshow`,e),window.addEventListener(`online`,e),()=>{document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`pageshow`,e),window.removeEventListener(`online`,e)}},[le]);let ue=(0,Q.useCallback)(async e=>{await F(e,{force:!0}),await I(e)},[F,I]),de=(0,Q.useCallback)(async(t,n,r)=>{if(!(!t?.id||!n))try{B(``);let i=null;if(r?.rewindFiles){let e=await X.previewFileRewind(t.id,n);if(!await c(ir(e,p)))return;i=await X.rewindFiles(t.id,n)}let a=await X.navigateSessionTree(t.id,n,!1);if(a.cancelled)return;rr(t.id,a),await ue(t.id),ee(e=>({sessionId:t.id,token:e.token+1})),i?e(ar(i,p)):or(t.id,a,p(`chat:chatPage.branchedFromNode`),{notify:e,t:p})}catch(e){B(e instanceof Error?e.message:String(e))}},[e,ue,c,B,p]);(0,Q.useEffect)(()=>Zt(e=>{L.current[e]&&ue(e).catch(()=>void 0)}),[ue,L]);let fe=(0,Q.useCallback)(async(t,n)=>{if(!t?.id||!n)return;let r=await s({title:p(`chat:chatPage.createChildChat`),inputLabel:p(`chat:chatPage.chatTitle`),value:`${p(`chat:chatPage.separateChatSuffix`)} · ${t.name||p(`chat:chatPage.newChat`)}`,confirmLabel:p(`chat:chatPage.create`)});if(r!==null)try{B(``);let i=await X.deriveSession(t.id,n,r);await I(),V(i.id),ee(e=>({sessionId:i.id,token:e.token+1})),e(p(`chat:chatPage.childChatCreated`))}catch(e){B(e instanceof Error?e.message:String(e))}},[e,V,I,s,B,p]),pe=(0,Q.useCallback)(()=>t(`config`),[t]),me=(0,Q.useMemo)(()=>({sessions:D.sessions,subscribeSessionState:D.subscribeSessionState,getSessionState:D.getSessionState,defaultModel:D.defaultModel,availableModels:D.availableModels,globalError:D.globalError,activeId:D.activeId,mobileLayout:y,requestConfirm:c,sessionTreePulseSessionId:H.sessionId,sessionTreePulseToken:H.token,pendingAsset:i,onAssetConsumed:a,notify:e,openModelSettings:pe,loadSessionMessages:M.loadSessionMessages,loadOlderMessages:M.loadOlderMessages,sendPrompt:W.sendPrompt,retryLastTurn:W.retryLastTurn,queuePrompt:W.queuePrompt,withdrawQueuedInput:W.withdrawQueuedInput,abort:W.abort,pauseGoal:G.pauseGoal,setGoalBudget:G.setGoalBudget,compactSession:G.compactSession,setCompactionThreshold:G.setCompactionThreshold,switchSessionModel:G.switchSessionModel,loadSessionThinkingLevel:G.loadSessionThinkingLevel,switchSessionThinkingLevel:G.switchSessionThinkingLevel,switchSessionExecutionMode:G.switchSessionExecutionMode,switchSessionRunMode:G.switchSessionRunMode,resolveToolApproval:G.resolveToolApproval,answerQuestion:G.answerQuestion,selectSessionWorkspace:G.selectSessionWorkspace,renameSession:G.renameSession,branchFromEntry:de,createChildSession:fe,reloadSessionBranch:ue}),[D.sessions,D.subscribeSessionState,D.getSessionState,D.defaultModel,D.availableModels,D.globalError,D.activeId,y,c,H.sessionId,H.token,i,a,e,pe,M.loadSessionMessages,M.loadOlderMessages,W.sendPrompt,W.retryLastTurn,W.queuePrompt,W.withdrawQueuedInput,W.abort,G.pauseGoal,G.setGoalBudget,G.compactSession,G.setCompactionThreshold,G.switchSessionModel,G.loadSessionThinkingLevel,G.switchSessionThinkingLevel,G.switchSessionExecutionMode,G.switchSessionRunMode,G.resolveToolApproval,G.selectSessionWorkspace,G.renameSession,de,fe,ue]),he=D.discardSessionState,ge=(0,Q.useMemo)(()=>({subscribeSessionState:D.subscribeSessionState,getSessionState:D.getSessionState,retainSessionState:D.retainSessionState,discard:e=>{C.current.set(e,(C.current.get(e)??0)+1),S.current.delete(e),he(e)},loadSessionMessages:M.loadSessionMessages,loadOlderMessages:M.loadOlderMessages,syncLiveSession:M.syncLiveSession,send:async(e,t)=>{await ie(t,e,[],!1,!1,null,null,{activate:!1})},retry:e=>ae(e,{activate:!1}),abort:W.abort,approve:G.resolveToolApproval}),[D.subscribeSessionState,D.getSessionState,D.retainSessionState,he,M.loadSessionMessages,M.loadOlderMessages,M.syncLiveSession,ie,ae,W.abort,G.resolveToolApproval]);return(0,$.jsxs)(us,{runtime:ge,children:[(0,$.jsx)(`div`,{ref:b,className:`chat-layout dock-layout relative flex w-full min-w-0 min-h-0 flex-1`,children:D.loading?(0,$.jsx)(vn,{kind:`loading`,title:p(`chat:chatPage.wakingTheAgent`),description:p(`chat:chatPage.modelsSessionsAndContextAreSettlingIntoPlace`)}):(0,$.jsx)(`div`,{className:`chat-dock-workspace relative h-full w-full min-w-0 min-h-0 flex-1 [isolation:isolate] overflow-hidden border-0 rounded-none bg-panel`,children:(0,$.jsx)(po.Provider,{value:me,children:(0,$.jsx)(ye.Provider,{value:m?f??null:null,children:(0,$.jsx)(li.Provider,{value:m?d??null:null,children:_&&(m?h&&!ne?(0,$.jsx)(vn,{kind:`empty`,title:p(`navigation:shell.sessionNotFound`),description:p(`navigation:shell.sessionNotFoundHint`),action:f?.onHome?(0,$.jsx)(Y,{variant:`secondary`,onClick:f.onHome,children:p(`board:home.goHome`)}):(0,$.jsx)(Y,{variant:`secondary`,onClick:()=>t(`board`),children:p(`navigation:shell.backToBoardLabel`)})}):h?(0,$.jsx)(go,{sessionId:h,onCreateSession:U}):D.globalError?(0,$.jsx)(vn,{kind:`error`,title:p(`navigation:shell.createSessionFailed`),description:D.globalError,action:(0,$.jsx)(Y,{variant:`secondary`,onClick:()=>void U(),children:p(`navigation:more.retry`)})}):(0,$.jsx)(vn,{kind:`loading`,title:p(`chat:chatPage.wakingTheAgent`)}):(0,$.jsx)(go,{onCreateSession:U}))})})})})}),G.workspaceSession&&(0,$.jsx)(Un,{open:!0,initialPath:G.workspaceSession.cwd,description:p(`common:workspacePicker.selectWorkspaceForChat`,{name:G.workspaceSession.name}),onOpenChange:e=>!e&&G.setWorkspaceSession(null),onSelect:e=>G.switchSessionCwd(G.workspaceSession,e)})]})}export{ms as ChatPage};