pisper 0.6.6 → 0.6.7

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 (115) hide show
  1. package/package.json +7 -7
  2. package/web/.vite/manifest.json +481 -336
  3. package/web/assets/AppDialog-DuxuKq-0.js +1 -0
  4. package/web/assets/{AppOverlays-C_WrmeqC.js → AppOverlays-YPxRUvLN.js} +1 -1
  5. package/web/assets/{AppSelect-DNIjPL7I.js → AppSelect-DEmkrcvY.js} +1 -1
  6. package/web/assets/{AppShortcuts-V38tUYTp.js → AppShortcuts-CA7hbebL.js} +1 -1
  7. package/web/assets/{AssetsPage-BmSnyLZ5.js → AssetsPage-CkNI_8qz.js} +1 -1
  8. package/web/assets/{ChannelsPage-Da3JaYaC.js → ChannelsPage-BYfRQyV0.js} +1 -1
  9. package/web/assets/ChatAppearancePage-N_2bunil.js +2 -0
  10. package/web/assets/{ChatDockView-5Aptiph6.js → ChatDockView-B4nZfbx5.js} +1 -1
  11. package/web/assets/ChatHistoryPage-Di3epmcR.js +1 -0
  12. package/web/assets/ChatPage-IN5m7Fqh.js +4 -0
  13. package/web/assets/ConfigPage-BKTEOlQE.js +1 -0
  14. package/web/assets/{DecisionsPage-BwJ7RTAE.js → DecisionsPage-DNAUZCij.js} +1 -1
  15. package/web/assets/{DesktopWindowControls-CLVd8sg6.js → DesktopWindowControls-BAnWUUAZ.js} +1 -1
  16. package/web/assets/{FileAttachmentPreview-C6QaQFwb.js → FileAttachmentPreview-x4AORCVt.js} +1 -1
  17. package/web/assets/{FloatingWidgets-QMhElaDR.js → FloatingWidgets-CdbBMke7.js} +1 -1
  18. package/web/assets/GitDiffViewer-oJDF7l74.js +2 -0
  19. package/web/assets/{ListDetailLayout-S-IBs4f_.js → ListDetailLayout-Ctr6r0OI.js} +1 -1
  20. package/web/assets/{MarkdownMessage-bfyuGoi1.js → MarkdownMessage-D9zxSf6j.js} +1 -1
  21. package/web/assets/McpPage-DaOkWcq6.js +1 -0
  22. package/web/assets/{MemoryPage-CC37SohP.js → MemoryPage-B5sqhaYW.js} +1 -1
  23. package/web/assets/MobileContextScreen-DiM-lGec.js +2 -0
  24. package/web/assets/MobileNavigation-DZx6cE9f.js +1 -0
  25. package/web/assets/MobileShellContext-Cvv0RcjA.js +1 -0
  26. package/web/assets/MobileViewportStabilizer-BAI_nmS_.js +1 -0
  27. package/web/assets/{PageHeader-75eh-Z_A.js → PageHeader-FBipSHuW.js} +1 -1
  28. package/web/assets/{PluginsPage-za6FNr_k.js → PluginsPage-BFLnVcnm.js} +1 -1
  29. package/web/assets/{QuickPromptIdeas-CEjBwWlM.js → QuickPromptIdeas-CVcEEpAl.js} +1 -1
  30. package/web/assets/{SchedulesPage-BR1oIqzi.js → SchedulesPage-CVnoI4wZ.js} +1 -1
  31. package/web/assets/SessionContextPanel-CEmCvPx4.js +2 -0
  32. package/web/assets/SessionFilesPane-CAdkivkE.js +2 -0
  33. package/web/assets/{SidebarUpdateStatus-Chfb-00K.js → SidebarUpdateStatus-Co3QAKmb.js} +1 -1
  34. package/web/assets/{SkillsPage-DfFjecBO.js → SkillsPage-d8t6_KDS.js} +1 -1
  35. package/web/assets/{TaskProcessesPane-DJszMYjM.js → TaskProcessesPane-PRgpCplN.js} +1 -1
  36. package/web/assets/{TaskTerminalView-DyTURB64.js → TaskTerminalView-Dt8gIY5E.js} +1 -1
  37. package/web/assets/{TerminalPanel-BFqST5ja.js → TerminalPanel-BRib2LP-.js} +1 -1
  38. package/web/assets/{ThemeToggleButton-DmYU4_Nh.js → ThemeToggleButton-C1lL__80.js} +1 -1
  39. package/web/assets/{WebDesktopPet-COIAEeuY.js → WebDesktopPet-BWpgoZI3.js} +1 -1
  40. package/web/assets/WorkbenchNavigation-DmNiD2FD.js +1 -0
  41. package/web/assets/{WorkflowsPage-Heg3iqQg.js → WorkflowsPage-aRy0lYQ1.js} +1 -1
  42. package/web/assets/{WorkspacePicker-DFCZ_IJu.js → WorkspacePicker-NkoVoqez.js} +1 -1
  43. package/web/assets/{api-D8wGrWiI.js → api-CiEo53J1.js} +1 -1
  44. package/web/assets/app-update-CLhMRrNS.js +32 -0
  45. package/web/assets/calendar-clock-VIxTaqqy.js +1 -0
  46. package/web/assets/catalog-DLWnYiJc.js +1 -0
  47. package/web/assets/chat-api-CbgoP-8X.js +1 -0
  48. package/web/assets/{client-store-lT3geTlX.js → client-store-DCqgdbAp.js} +1 -1
  49. package/web/assets/{component-api-kxyOYPJN.js → component-api-BboiUuyG.js} +1 -1
  50. package/web/assets/{config-search-BThCMhnj.js → config-search-Cwglajsz.js} +1 -1
  51. package/web/assets/events-f8vVvSfH.js +1 -0
  52. package/web/assets/{floating-widgets-store-BhuWgVRT.js → floating-widgets-store-BAfPpV4Z.js} +2 -2
  53. package/web/assets/git-diff-f-zMaQOk.js +3 -0
  54. package/web/assets/{http-rQRvhTOP.js → http-Dx387MGl.js} +1 -1
  55. package/web/assets/i18n-CblgkPOp.js +1 -0
  56. package/web/assets/{index-BVIvzUyZ.js → index-BAYzSwUr.js} +2 -2
  57. package/web/assets/index-Bcpvpefn.css +2 -0
  58. package/web/assets/monitor-ORxecA9m.js +1 -0
  59. package/web/assets/mount-app-DGgK0IVe.js +9 -0
  60. package/web/assets/mutation-CEbxdVYy.js +1 -0
  61. package/web/assets/panels-top-left-K8n2CefH.js +1 -0
  62. package/web/assets/project-diff-summary-BzAMC_7C.js +1 -0
  63. package/web/assets/public-Cv_Xe2Sp.js +1 -0
  64. package/web/assets/{public-components-CS0BXa3D.js → public-components-Dfm4D7vP.js} +1 -1
  65. package/web/assets/public-navigation-zJPpUiuy.js +2 -0
  66. package/web/assets/query-Bj-DUNYq.js +1 -0
  67. package/web/assets/radio-tower-jGQwrFWB.js +1 -0
  68. package/web/assets/{runtime-capabilities-store-D5g-oC-Z.js → runtime-capabilities-store-C1lkVKpw.js} +1 -1
  69. package/web/assets/scale-pAyho3H9.js +1 -0
  70. package/web/assets/{session-change-summary-api-4_dTNU4L.js → session-change-summary-api-CqJa3Wdh.js} +1 -1
  71. package/web/assets/{session-organization-api-1F_dNhFa.js → session-organization-api-B0E2RXLS.js} +1 -1
  72. package/web/assets/session-streaming-state-DUehpyTs.js +3 -0
  73. package/web/assets/settings-navigation-BhTYSdv9.js +1 -0
  74. package/web/assets/{shortcuts-CAyIKRpZ.js → shortcuts-ChJr3RP4.js} +1 -1
  75. package/web/assets/{sidebar-CjfGBEog.js → sidebar-CERcJRog.js} +1 -1
  76. package/web/assets/{speech-session-BoAvAzPN.js → speech-session-BPNbd_CM.js} +1 -1
  77. package/web/assets/startup-queries-uKXB2KOP.js +1 -0
  78. package/web/assets/{ui-store-D-oOtKbW.js → ui-store-BM6pl-Rq.js} +1 -1
  79. package/web/assets/use-back-layer-B4dm_FZt.js +1 -0
  80. package/web/assets/{use-i18n-Dpn7lxcE.js → use-i18n-BrWBoyFl.js} +1 -1
  81. package/web/assets/use-mobile-PCHaokZZ.js +1 -0
  82. package/web/assets/{useCustomUiComponents-DzY3OjE_.js → useCustomUiComponents-IxX7wKrp.js} +1 -1
  83. package/web/assets/useQuery-DdcpUQhO.js +1 -0
  84. package/web/assets/web-preview-D1qOo-1X.js +1 -0
  85. package/web/assets/{web-preview-events-BS5O8D7_.js → web-preview-events-BMXsxTa3.js} +1 -1
  86. package/web/assets/web-preview-panel-B7JAZr2D.js +552 -0
  87. package/web/index.html +2 -2
  88. package/web/assets/ChatAppearancePage-Cjy9iir_.js +0 -2
  89. package/web/assets/ChatHistoryPage-BhXVvudL.js +0 -1
  90. package/web/assets/ChatPage-CzcvU3Tv.js +0 -4
  91. package/web/assets/ConfigPage-F1Y_oed5.js +0 -1
  92. package/web/assets/GitDiffViewer-Dv9WOiX1.js +0 -4
  93. package/web/assets/McpPage-CaUm1pYY.js +0 -1
  94. package/web/assets/MobileViewportStabilizer-OtwVmIPm.js +0 -1
  95. package/web/assets/SessionContextPanel-nvijY4R5.js +0 -2
  96. package/web/assets/WorkbenchNavigation-BBZRfeaC.js +0 -1
  97. package/web/assets/app-update-BHhqGwQp.js +0 -32
  98. package/web/assets/back-navigation-DS0YlxM8.js +0 -1
  99. package/web/assets/catalog-DpGpcvIi.js +0 -1
  100. package/web/assets/chat-api-CYidanXn.js +0 -1
  101. package/web/assets/events-By17Y3YI.js +0 -1
  102. package/web/assets/i18n-CAJMli-q.js +0 -1
  103. package/web/assets/index-Z8qQPd8t.css +0 -2
  104. package/web/assets/mount-app-Sl2T_gzZ.js +0 -9
  105. package/web/assets/mutation-Difliohy.js +0 -1
  106. package/web/assets/public-DAsd8NDM.js +0 -1
  107. package/web/assets/public-navigation-BzM_ocRb.js +0 -2
  108. package/web/assets/radio-tower-BW78Ns4R.js +0 -1
  109. package/web/assets/session-streaming-state-CX6zkOkc.js +0 -3
  110. package/web/assets/startup-queries-DItwFTRv.js +0 -1
  111. package/web/assets/use-back-layer-Cxm0-40v.js +0 -1
  112. package/web/assets/use-mobile-YXncArOq.js +0 -1
  113. package/web/assets/useQuery-Bg3cTjsY.js +0 -1
  114. package/web/assets/web-preview-C3u-dblt.js +0 -1
  115. package/web/assets/web-preview-panel-CHiIjAoR.js +0 -552
@@ -0,0 +1,4 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mobile-remote-fallback-JlHu_hz6.js","assets/storage-BpAqa-YY.js","assets/ChatDockView-B4nZfbx5.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-router-CZg2bCPV.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-BrWBoyFl.js","assets/i18n-CblgkPOp.js","assets/index-BAYzSwUr.js","assets/index-Bcpvpefn.css","assets/vendor-state-GkUciC5H.js","assets/arrow-left-B8oVrQ2S.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/arrow-right-DqLOhpA2.js","assets/web-preview-panel-B7JAZr2D.js","assets/collapsible-C__hRcbA.js","assets/dist-Cfh4kzCK.js","assets/dist-B_a0oV4U.js","assets/dropdown-menu-LKlOCZsZ.js","assets/dist-DF5Gcb5O.js","assets/dist-DAs5KRGl.js","assets/es2015-0QT3KgdC.js","assets/dist-alOyD2Bh.js","assets/dist-TksYpDID.js","assets/utils-C8uzG5AZ.js","assets/vendor-ui-DvrYggeS.js","assets/chevron-right-C3t2Rckj.js","assets/AppSelect-DEmkrcvY.js","assets/dist-BlIIpW6W.js","assets/check-2vYc6QaP.js","assets/chevron-down-CxtxIjiP.js","assets/use-mobile-PCHaokZZ.js","assets/popover-BBuzaBfd.js","assets/progress-C_G6VqQ_.js","assets/tabs-DQYVDdOp.js","assets/tooltip-Bxq7c2mZ.js","assets/activity-BCxvXCG3.js","assets/pin-Dc2zE4cS.js","assets/bot-B3TaBp_T.js","assets/chevron-left-BAtyp3_6.js","assets/circle-check-iEdCm3Pw.js","assets/circle-x-Ba4QL7Ec.js","assets/ThemeToggleButton-C1lL__80.js","assets/sun-DBWBo3We.js","assets/button-BcPDt1Ge.js","assets/ui-store-BM6pl-Rq.js","assets/download-BCfIiuaL.js","assets/ellipsis-CfGKfbq6.js","assets/shield-alert-CvFOTe9h.js","assets/file-diff-GxOMJkLj.js","assets/file-text-N9JICX6E.js","assets/file-Bllajneu.js","assets/session-streaming-state-DUehpyTs.js","assets/circle-dot-nVrXgDaG.js","assets/clock-3-CBHGbD_G.js","assets/code-xml-BrUXrBax.js","assets/copy-DHmIFc52.js","assets/folder-open-FIShC5Qk.js","assets/info-DATxy0fb.js","assets/list-checks-B5Jl4aiO.js","assets/loader-circle-BOwQzHB-.js","assets/monitor-ORxecA9m.js","assets/refresh-cw-TbWxTY4K.js","assets/rotate-ccw-C0v8V77_.js","assets/shield-check-Gvek4RJ7.js","assets/square-bHHVTT3G.js","assets/tag-CqkeJlBf.js","assets/trash-2-CNrPOoPR.js","assets/triangle-alert-CE1q54ci.js","assets/project-diff-summary-BzAMC_7C.js","assets/git-diff-f-zMaQOk.js","assets/events-f8vVvSfH.js","assets/x-07u4-129.js","assets/chat-api-CbgoP-8X.js","assets/http-Dx387MGl.js","assets/abort-signal-f4JsiYKX.js","assets/api-CiEo53J1.js","assets/startup-queries-uKXB2KOP.js","assets/query-Bj-DUNYq.js","assets/mutation-CEbxdVYy.js","assets/alert-QoPGoIY6.js","assets/input-CvjGYteF.js","assets/format-BRFKAYMT.js","assets/card-BdUpL1KB.js","assets/vendor-motion-DSW3wzXK.js","assets/MarkdownMessage-D9zxSf6j.js","assets/vendor-markdown-plugins-DisoihU3.js","assets/vendor-shiki-runtime-UFMr0O-Q.js","assets/vendor-markdown-plugins-DEcVZfaU.css","assets/vendor-markdown-Ck4Y_w0n.js","assets/route-context-DvWDul4T.js","assets/web-preview-D1qOo-1X.js","assets/terminal-context-aIsIJPn8.js","assets/GitDiffViewer-oJDF7l74.js","assets/FileAttachmentPreview-x4AORCVt.js","assets/dialog-CGGxREwU.js","assets/dist-BdkTa5R3.js","assets/link-2-mgasYn21.js","assets/message-square-SKjZyY3v.js","assets/panel-right-BSUtqUd8.js","assets/paperclip-BCXrwYpb.js","assets/pencil-U08v_vV9.js","assets/play-DNDjDNGn.js","assets/plus-fQbSqB1n.js","assets/search-D0mqDaf_.js","assets/public-workspace-D_-I7fA7.js","assets/sliders-horizontal-Dryf1XyC.js","assets/square-terminal-BVG6cUT1.js","assets/workflow-Bg94dy8I.js","assets/wrench-6pg6_bqI.js","assets/client-store-DCqgdbAp.js","assets/useQuery-DdcpUQhO.js","assets/runtime-capabilities-store-C1lkVKpw.js","assets/MobileShellContext-Cvv0RcjA.js","assets/app-primitives-DhqJLud3.js","assets/switch-Ci_hmu39.js","assets/shortcuts-ChJr3RP4.js","assets/use-back-layer-B4dm_FZt.js","assets/sheet-CAEHyJHI.js","assets/tool-labels-DJzY62Yr.js","assets/speech-session-BPNbd_CM.js","assets/earth-Ddy13fHh.js","assets/external-link-CEQqPcqc.js","assets/vendor-dockview-Bf3Gg83W.js","assets/vendor-dockview-D5adAaCg.css","assets/web-preview-C-4r6kgm.js"])))=>i.map(i=>d[i]);
2
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{p as t}from"./vendor-router-CZg2bCPV.js";import{t as n}from"./index-BAYzSwUr.js";import{i as r,r as i}from"./vendor-react-DwNgTV1j.js";import{t as a}from"./use-i18n-BrWBoyFl.js";import{t as o}from"./storage-BpAqa-YY.js";import{a as s,c,l,n as u,o as d,s as f,t as p}from"./web-preview-panel-B7JAZr2D.js";import{A as m,C as h,D as g,O as _,S as v,T as y,a as b,c as x,i as S,j as C,k as w,l as T,m as E,u as D,x as O}from"./session-streaming-state-DUehpyTs.js";import{t as k}from"./refresh-cw-TbWxTY4K.js";import{r as A}from"./use-mobile-PCHaokZZ.js";import{i as j,n as M,o as N,r as P}from"./http-Dx387MGl.js";import{n as F,t as I}from"./api-CiEo53J1.js";import{t as L}from"./client-store-DCqgdbAp.js";import{r as R}from"./useQuery-DdcpUQhO.js";import{C as z,D as B,E as V,O as H,S as U,T as W,b as G,c as ee,d as te,f as ne,i as re,l as K,o as ie,w as ae,x as q,y as oe}from"./events-f8vVvSfH.js";import{t as J}from"./chat-api-CbgoP-8X.js";import{WorkspacePicker as se}from"./WorkspacePicker-NkoVoqez.js";import{i as Y}from"./format-BRFKAYMT.js";import{r as ce}from"./app-primitives-DhqJLud3.js";import{t as le}from"./usePagePrimaryAction-CWPC0C_f.js";import{t as ue}from"./brand-DIEc3fK8.js";import{a as de,c as fe,i as pe,l as me,n as he,o as ge,r as _e}from"./session-organization-api-B0E2RXLS.js";import{n as ve,t as ye}from"./web-preview-events-BMXsxTa3.js";import{n as be,t as xe}from"./pick-system-directory-BnIFt85A.js";import{n as Se,t as Ce}from"./side-chat-context-Dr2QLUJA.js";var X=e(r(),1);function we({notify:e}){let{t:r}=a(),i=R(),[s,c]=(0,X.useState)([]),[l,u]=(0,X.useState)(()=>n.getItem(o.activeSession)||``),[d,f]=(0,X.useState)({}),[p,m]=(0,X.useState)(!0),[h,_]=(0,X.useState)(``),[y,b]=(0,X.useState)(()=>r(`chat:chatPage.waitingForConfiguration`)),[x,w]=(0,X.useState)([]),T=(0,X.useRef)(s),E=(0,X.useRef)(d),D=(0,X.useRef)(new Map),k=(0,X.useRef)(null),A=(0,X.useRef)(new Map),j=(0,X.useRef)(new Set),[M]=(0,X.useState)(de),N=(0,X.useCallback)(e=>{let t=T.current,n=typeof e==`function`?e(t):e;return T.current=n,c(n),n},[]);(0,X.useEffect)(()=>q(window,e=>{M.record(e),N(t=>pe(t,e))}),[M,N]),(0,X.useEffect)(()=>G(window,e=>{N(t=>_e(t,e))}),[N]);let P=(0,X.useCallback)(e=>{let t=j.current.size?Object.fromEntries(Object.entries(e).filter(([e])=>!j.current.has(e))):e,n=E.current;E.current=t,f(t);let r=Object.keys(t).filter(e=>t[e].streaming!==n[e]?.streaming);if(r.length){let e=new Set(r);i.setQueryData([`sessions`],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,X.useEffect)(()=>oe(window,({deletedIds:e})=>{M.remove(e);let t=new Set(e),n=N(e=>e.filter(e=>!t.has(e.id)));u(e=>t.has(e)?n[0]?.id||``:e);let r=E.current;e.some(e=>e in r)&&P(Object.fromEntries(Object.entries(r).filter(([e])=>!t.has(e))))}),[P,M,N]);let F=(0,X.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)}},[]),I=(0,X.useCallback)(e=>E.current[e]||O,[]),L=(0,X.useCallback)((e,t)=>{if(!e||j.current.has(e))return;let n=E.current,r=n[e]||O,i=v(r,t);i!==r&&P({...n,[e]:i})},[P]),z=(0,X.useCallback)((e,{panelOpen:t=!1,localStreamOwned:n=!1}={})=>{if(!e||t||n||A.current.has(e))return!1;let r=E.current,i=r[e];if(!i||g(i))return!1;let a={...r};return delete a[e],P(a),!0},[P]),B=(0,X.useCallback)(e=>{if(!e)return;j.current.add(e);let t={...E.current};delete t[e],P(t)},[P]),V=(0,X.useCallback)(e=>{if(j.current.has(e))return()=>{};let t=A.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),z(e))}},[z]),H=(0,X.useCallback)(async(e,{preserveExistingOnEmpty:t=!1}={})=>{let n=M.getRevision(),r=await J.listSessions(),i=t&&!r.sessions.length&&T.current.length?T.current:M.reconcile(r.sessions,n);return N(i),u(e||(e=>i.some(t=>t.id===e)?e:i[0]?.id||``)),K(),i},[M,N]),U=(0,X.useCallback)((t=``,{inheritRecentCwd:n=!0}={})=>{if(k.current)return k.current;let i=(async()=>{try{_(``);let i=await J.createSession(r(`chat:chatPage.newChat`),fe(t,T.current,n));u(i.id),N(e=>ge(e,[i])),L(i.id,{messages:[],tools:[],approvals:[],queuedInputs:[],permissionMode:i.permissionMode||`ask`,executionMode:i.executionMode||`approval-required`,runMode:i.runMode||`plan`,goal:i.goal||null,plan:C(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 H(i.id)}catch(e){_(r(`chat:chatPage.theChatWasCreatedButTheListCouldNotBeRefreshedError`,{error:S(e)}))}return e(r(`chat:chatPage.newChatCreated`)),i.id}catch(e){return _(S(e)),``}})();return k.current=i,i.finally(()=>{k.current===i&&(k.current=null)}),i},[e,H,r,L,N]);(0,X.useEffect)(()=>{let i=!0,a=M.getRevision();return Promise.all([J.listSessions({refresh:!1}),J.getConfig()]).then(async([s,c])=>{if(!i)return;b(c.model?`${c.provider}/${c.model}`:r(`chat:chatPage.noModelConfigured`)),w(c.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})):[]));let l=s.sessions;if(!l.length&&(k.current||Object.keys(E.current).length)){if(await k.current,!i)return;a=M.getRevision(),l=(await J.listSessions()).sessions}if(l.length||(l=[await J.createSession(r(`chat:chatPage.newChat`))]),!i)return;l=M.reconcile(l,a),N(e=>ge(e,l));for(let e of l)L(e.id,{team:e.team||null,agents:e.agents||[],plan:C(e,null),...e.streaming?{streaming:!0,recovering:!0,loaded:!1,error:``}:{}});let d=n.getItem(o.activeSession),f=new Set([...l.map(e=>e.id),...Object.keys(E.current)]);if(u(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-JlHu_hz6.js`);return{consumeRemoteFallbackNotice:e}},__vite__mapDeps([0,1]));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-JlHu_hz6.js`);return{fallbackRemoteToLocalAfterFailure:e}},__vite__mapDeps([0,1]));if(await n(e))return}catch{}i&&_(S(e))}}).finally(()=>i&&m(!1)),()=>{i=!1}},[e,r,M,L,N]),(0,X.useEffect)(()=>{l?n.setItem(o.activeSession,l):n.removeItem(o.activeSession)},[l]);let W=s.find(e=>e.id===l),te=(d[l]||O).model||W?.model||``;return(0,X.useEffect)(()=>{ee(l,te)},[l,te]),(0,X.useEffect)(()=>(document.title=W?.name?`${W.name} · ${ue}`:ue,()=>{document.title=ue}),[W?.name]),{sessions:s,sessionsRef:T,activeId:l,setActiveId:u,sessionStates:d,sessionStatesRef:E,loading:p,globalError:h,setGlobalError:_,defaultModel:y,availableModels:x,updateSessions:N,replaceSessionStates:P,updateSessionState:L,releaseSessionState:z,retainSessionState:V,discardSessionState:B,subscribeSessionState:F,getSessionState:I,refreshSessions:H,createSessionRecord:U}}function Te({sessions:e,sessionsRef:t,sessionStates:n,activeId:r,setActiveId:i,loading:s,localStreamSessionsRef:c,loadSessionMessages:d,releaseSessionState:f,singleSessionLayout:m,notify:h}){let{t:g}=a(),_=(0,X.useRef)({notify:h,t:g});_.current={notify:h,t:g};let[v,y]=(0,X.useState)(0),b=(0,X.useRef)(m);b.current=m;let[x,S]=(0,X.useState)(()=>window.matchMedia(`(max-width: 900px)`).matches),C=(0,X.useRef)(null),w=(0,X.useRef)(!1),T=(0,X.useRef)(!0),D=(0,X.useRef)(null),O=(0,X.useRef)([]),k=(0,X.useRef)(void 0),A=(0,X.useRef)(null),j=(0,X.useRef)(null),M=(0,X.useRef)(null),N=(0,X.useRef)(x),P=(0,X.useRef)(null),F=(0,X.useRef)(!1),[L,R]=(0,X.useState)(null),[G,ee]=(0,X.useState)(!1);(0,X.useEffect)(()=>{let e=!0;return I(`/api/settings/chat-dock-layout`).then(t=>{if(!e)return;let n=U(t);T.current=n.writable,D.current=n.layout,R(n.layout),n.writable||_.current.notify(_.current.t(`chat:workbench.layoutPreserved`),`info`),ee(!0)}).catch(()=>{e&&(T.current=!1,_.current.notify(_.current.t(`chat:workbench.layoutPreserved`),`info`),ee(!0))}),()=>{e=!1}},[]),(0,X.useEffect)(()=>{let e=window.matchMedia(`(max-width: 900px)`),t=()=>{N.current=e.matches,S(e.matches)};return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let te=(0,X.useCallback)(()=>{F.current||(F.current=!0,(async()=>{do{for(;P.current;){let e=P.current;P.current=null;try{await I(`/api/settings/chat-dock-layout`,{method:`PUT`,body:e})}catch{}}F.current=!1,P.current&&(F.current=!0)}while(F.current)})())},[]),re=(0,X.useCallback)(e=>{T.current&&(P.current=e,te())},[te]),K=(0,X.useCallback)((e=C.current)=>{if(!w.current)return!1;window.clearTimeout(k.current),k.current=void 0;let t=A.current;if(e)try{let n=z(e.toJSON(),e.activePanel?.id||``);D.current=n,t=JSON.stringify(n)}catch{}return t?(re(t),A.current=null,!0):!1},[re]),q=(0,X.useCallback)((e=C.current)=>{if(!e||!w.current)return;let t;try{let n=z(e.toJSON(),e.activePanel?.id||``);D.current=n,t=JSON.stringify(n)}catch{return}A.current=t,window.clearTimeout(k.current),k.current=window.setTimeout(()=>{k.current=void 0,!(!w.current||C.current!==e)&&(re(t),A.current===t&&(A.current=null))},180)},[re]),J=(0,X.useCallback)((e,n=`open`)=>{if(b.current)return j.current={sessionId:e,disposition:`open`},i(e),!0;let r=t.current.find(t=>t.id===e),a=C.current;if(!r||!a||!w.current)return j.current={sessionId:e,disposition:n},!1;let o=V(e),s=a.getPanel(o),c=a.activePanel,l=B({sessionId:e,visibleIds:a.panels.filter(e=>e.api.isVisible).map(H),focusedId:H(c),disposition:n,width:N.current?0:c?.api.width||a.width,height:N.current?0:c?.api.height||a.height});if(s)return s.api.setActive(),i(e),!0;if(l.kind===`unavailable`)return h(g(`chat:workbench.splitUnavailable`),`info`),!1;let u=n,f=u===`open`?a.activeGroup?{referenceGroup:a.activeGroup}:void 0:c?{referencePanel:c,direction:u}:{direction:u};return a.addPanel({id:o,component:`session`,title:r.name||g(`chat:chatPage.untitledChat`),params:{sessionId:e},renderer:`always`,minimumWidth:300,minimumHeight:240,...f?{position:f}:{}}),l.kind===`replace`&&c&&c.api.close(),i(e),d(e,{limit:40}),!0},[d,t,i,h,g]),se=(0,X.useCallback)(e=>{let t=C.current;if(!t||!w.current)return M.current=e,!1;let n=t.getPanel(p),r=u(e.url,g(`common:webPreview.title`));if(n)return n.api.updateParameters({url:e.url}),n.api.setTitle(r),n.api.setActive(),!0;let i=t.activePanel,a=N.current?t.activeGroup?{referenceGroup:t.activeGroup}:void 0:i?{referencePanel:i,direction:`right`}:{direction:`right`};return t.addPanel({id:p,component:`webPreview`,title:r,params:{url:e.url},renderer:`always`,minimumWidth:360,...a?{position:a}:{}}),!0},[g]),Y=(0,X.useCallback)((e,t)=>{let n=C.current?.getPanel(e);if(n){if(N.current){h(g(`chat:chatPage.onNarrowScreensChatsStayInASingleTabGroup`),`info`);return}if(n.group.size<=1){h(g(`chat:chatPage.thisGroupHasOnlyOneChatChooseAnotherChatFromTheSessionListToCreateASplit`),`info`);return}n.api.moveTo({group:n.group,position:ae(t)}),n.api.setActive()}},[h,g]),ce=(0,X.useCallback)(e=>{C.current?.getPanel(e)?.api.close()},[]),le=(0,X.useCallback)((e,t)=>{if(!t)return;let n=C.current?.getPanel(V(e));n&&n.group!==t&&n.api.moveTo({group:t})},[]),ue=(0,X.useCallback)(e=>f(e,{panelOpen:!!C.current?.getPanel(V(e)),localStreamOwned:c.current.has(e)}),[c,f]),de=(0,X.useCallback)(({api:e})=>{C.current&&C.current!==e&&(w.current=!1);for(let e of O.current)e.dispose();O.current=[],C.current=e,O.current.push(e.onDidActivePanelChange(({panel:t})=>{let n=H(t);n&&i(n),q(e)}),e.onDidLayoutChange(()=>q(e)),e.onDidAddPanel(e=>{e.group.header.hidden=e.group.panels.every(e=>e.api.component===`session`);let t=H(e);t&&d(t,{limit:40})}),e.onDidRemovePanel(e=>{let t=H(e);t&&queueMicrotask(()=>ue(t))})),y(e=>e+1)},[d,ue,q,i]);(0,X.useEffect)(()=>{if(w.current)for(let e of Object.keys(n))ue(e)},[ue,n]),(0,X.useEffect)(()=>{let e=e=>{let t=e.detail,n=t?.sessionId||t?.id;n&&(localStorage.removeItem(o.sessionOpenRequest),J(n,t?.disposition||`open`),t?.targetEntryId&&d(n,{force:!0,limit:40}))};return window.addEventListener(ie,e),()=>window.removeEventListener(ie,e)},[d,J]),(0,X.useEffect)(()=>oe(window,({deletedIds:e})=>{let n=new Set(e);for(let t of e)E.getState().forget(t),l(t);j.current&&n.has(j.current.sessionId)&&(j.current=null);let r=C.current;if(!r||!w.current)return;let a=e.flatMap(e=>{let t=r.getPanel(V(e));return t?[t]:[]});for(let e of a)e.api.close();if(a.length&&!r.panels.some(e=>H(e))){let e=t.current.find(e=>!n.has(e.id));e?J(e.id):i(``)}}),[J,t,i]),(0,X.useEffect)(()=>{let e=e=>{let t=e.detail;t?.url&&(localStorage.removeItem(o.webPreviewRequest),se(t))};return window.addEventListener(ye,e),()=>window.removeEventListener(ye,e)},[se]),(0,X.useEffect)(()=>{let e=()=>{document.visibilityState===`hidden`&&K()},t=()=>K();return document.addEventListener(`visibilitychange`,e),window.addEventListener(`pagehide`,t),()=>{document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`pagehide`,t)}},[K]),(0,X.useEffect)(()=>()=>{let e=C.current;K(e),w.current=!1,window.clearTimeout(k.current),k.current=void 0;for(let e of O.current)e.dispose();O.current=[],C.current=null},[K]),(0,X.useEffect)(()=>{if(!v||!G||s||w.current||!C.current)return;let t=C.current,n=!1;return queueMicrotask(()=>{if(n||C.current!==t||w.current)return;let i=new Set(e.map(e=>e.id)),a=D.current||L;if(a)try{t.fromJSON(a.layout);for(let e of[...t.panels]){if(e.api.component!==`session`)continue;let n=H(e);i.has(n)||t.removePanel(e)}}catch{T.current=!1,h(g(`chat:workbench.layoutPreserved`),`info`),t.clear()}if(!t.panels.length){let n=W({activeSessionId:r,validSessionIds:e.map(e=>e.id)}),i;for(let r of n){let n=e.find(e=>e.id===r);if(!n)continue;let a=t.addPanel({id:V(r),component:`session`,title:n.name||g(`chat:chatPage.untitledChat`),params:{sessionId:r},renderer:`always`,minimumWidth:300,...i?{position:{referenceGroup:i}}:{},inactive:!!i});i||=a.group}}for(let e of t.groups){for(let n of[...e.panels])n!==e.activePanel&&n.api.component===`session`&&t.removePanel(n);e.header.hidden=e.panels.every(e=>e.api.component===`session`)}for(let n of t.panels){let t=e.find(e=>e.id===H(n));t&&n.api.setTitle(t.name||g(`chat:chatPage.untitledChat`))}w.current=!0,localStorage.removeItem(o.chatMode);let s=j.current||ne();j.current=null,s?(J(s.sessionId,s.disposition),s.targetEntryId&&d(s.sessionId,{force:!0,limit:40})):(t.getPanel(a?.activePanelId||V(r))||t.panels[0])?.api.setActive();let c=M.current||ve();M.current=null,c&&se(c),q(t)}),()=>{n=!0}},[r,G,v,d,s,J,se,q,e,L,h,g]),(0,X.useEffect)(()=>{if(!(!w.current||!C.current))for(let t of e)C.current.getPanel(V(t.id))?.api.setTitle(t.name||g(`chat:chatPage.untitledChat`))},[e,g]);let fe=(0,X.useCallback)(({panel:e})=>{let t={label:g(`chat:focusSession.closeTab`),action:()=>ce(e.id)};return x||e.group.size<=1?[t]:[{label:g(`chat:chatPage.splitToLeft`),action:()=>Y(e.id,`left`)},{label:g(`chat:chatPage.splitToRight`),action:()=>Y(e.id,`right`)},{label:g(`chat:chatPage.splitToTop`),action:()=>Y(e.id,`above`)},{label:g(`chat:chatPage.splitToBottom`),action:()=>Y(e.id,`below`)},`separator`,t]},[ce,x,Y,g]);return{compactDock:x,openSessionInDock:J,splitDockPanel:Y,closeDockPanel:ce,moveSessionToGroup:le,onDockReady:de,onDockDispose:(0,X.useCallback)(e=>{if(C.current===e){K(e),w.current=!1;for(let e of O.current)e.dispose();O.current=[],C.current=null}},[K]),getTabContextMenuItems:fe}}function Ee(e){return!!e?.agents?.some(e=>[`queued`,`starting`,`running`].includes(String(e.status)))}function De(e,{localStreamOwned:t=!1}={}){return!e||t?!1:!!(e.recovering||e.streaming||e.approvals?.length||Ee(e))}function Oe(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function ke(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 Ae(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),...ke(e.messages,t.messages)]:ke(e.messages,t.messages),c=Math.max(0,s.length-200);return c&&(s=s.slice(c),o+=c),{messages:s,messageStart:o,hasOlder:o>0,olderCursor:o>0?String(o):null}}function je(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 Me(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=je(e,t,Ae(e,t));return{...y({...e,...s.page},t),tools:t.streaming?t.tools||[]:D(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:Oe(t,e.team),plan:C(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||[],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 Ne({sessionStates:e,sessionStatesRef:t,localStreamSessionsRef:n,streamGenerationRef:r,updateSessionState:i,updateSessions:a}){let o=(0,X.useRef)(new Set),s=(0,X.useRef)({timer:null,activeSessions:new Set}),c=(0,X.useCallback)(async(e,{force:s=!1}={})=>{if(!e||!s&&n.current.has(e)||o.current.has(e))return;o.current.add(e);let c=t.current[e]?.runtimeSelectionRevision||0;try{let o=await J.getLiveSession(e);if(!s&&n.current.has(e))return;if(s&&n.current.has(e)){let t=r.current.get(e)||0;r.current.set(e,t+1),n.current.delete(e)}f(e,o),i(e,e=>Me(e,o,void 0,c)),a(n=>n.map(n=>n.id===e?{...n,streaming:o.streaming,model:t.current[e]?.model||o.model||n.model,cwd:o.cwd||n.cwd,permissionMode:o.permissionMode||n.permissionMode,executionMode:o.executionMode||n.executionMode,runMode:o.runMode||n.runMode,goal:o.goal??n.goal??null,team:Oe(o,n.team),plan:C(o,n.plan??null)}:n))}catch(t){n.current.has(e)||i(e,{recovering:!1,loading:!1,error:S(t)})}finally{o.current.delete(e)}},[n,t,r,i,a]),l=(0,X.useCallback)(async(e,{force:n=!1,limit:r=40}={})=>{if(!e)return;let o=t.current[e];if(o?.recovering){await c(e);return}if(!(!n&&(o?.loading||o?.streaming||o?.loaded&&(o.pageSize||0)>=r))){i(e,{loading:!0});try{let n=await J.getMessages(e,{limit:r});i(e,e=>e.streaming?{...e,loaded:!0,loading:!1,pageSize:Math.max(e.pageSize||0,r)}:{...e,...Ae(e,n),model:e.model||n.model||void 0,contextUsage:n.contextUsage??e.contextUsage??null,sessionUsage:n.sessionUsage??e.sessionUsage??null,loaded:!0,loading:!1,pageSize:Math.max(e.pageSize||0,r),error:``,olderError:``});let o=t.current[e]?.model||(typeof n.model==`string`?n.model:``);o&&a(t=>t.map(t=>t.id===e&&t.model!==o?{...t,model:o}:t))}catch(t){i(e,{loading:!1,error:S(t)})}}},[t,c,i,a]),u=(0,X.useCallback)(async e=>{let n=t.current[e];if(!e||!n?.hasOlder||!n.olderCursor||n.loadingOlder)return!1;i(e,{loadingOlder:!0,olderError:``});try{let t=await J.getMessages(e,{limit:40,before:n.olderCursor});return i(e,e=>{let n=new Set(e.messages.map(e=>e.id)),r=[...t.messages.filter(e=>!n.has(e.id)),...e.messages],i=Math.max(0,r.length-200);return{...e,messages:i?r.slice(i):r,messageStart:t.pageInfo.start+i,hasOlder:t.pageInfo.hasMore,olderCursor:t.pageInfo.nextCursor,loadingOlder:!1,olderError:``}}),t.messages.length>0}catch(t){return i(e,{loadingOlder:!1,olderError:S(t)}),!1}},[t,i]),d=(0,X.useCallback)(()=>{s.current.timer&&window.clearInterval(s.current.timer),s.current.timer=null,s.current.activeSessions.clear()},[]),p=(0,X.useCallback)(()=>{s.current.timer||!s.current.activeSessions.size||(s.current.timer=window.setInterval(()=>{if(typeof document<`u`&&document.hidden)return;let e=Array.from(s.current.activeSessions).map(async e=>{let r=t.current[e];if(!De(r,{localStreamOwned:n.current.has(e)})){s.current.activeSessions.delete(e);return}await c(e)});Promise.allSettled(e).then(()=>{s.current.activeSessions.size||d()})},2e3))},[n,t,d,c]);return(0,X.useEffect)(()=>{let t=new Set(Object.keys(e));for(let e of s.current.activeSessions)t.has(e)||s.current.activeSessions.delete(e);for(let[t,r]of Object.entries(e))De(r,{localStreamOwned:n.current.has(t)})?s.current.activeSessions.add(t):s.current.activeSessions.delete(t);s.current.activeSessions.size?p():d()},[p,n,e,d]),(0,X.useEffect)(()=>d,[d]),{syncLiveSession:c,loadSessionMessages:l,loadOlderMessages:u,liveSyncInFlightRef:o}}function Pe(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 Fe(e,{intervalMs:t=48}={}){let n=null,r=null,i=Pe(()=>{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 Ie(e,{intervalMs:t=80}={}){let n=new Map,r=null,i=Pe(()=>{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 Le(e){return e>=55296&&e<=56319}function Re(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&&Le(e.charCodeAt(r-1))?r-1:r}var ze=50;function Be(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(ze))),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<ze||v!=null&&e-v+.001<ze){g=l(E);return}_=e;let a=m;p.startsWith(m)||(m=p.slice(0,Re(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(Le(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&&Le(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 Ve=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(`,`)),He=new Map,Z=[];function Ue(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 We(e,t){let n=String(t.id||``),r=String(t.operation||``);if(!n||!Ve.has(r))return;let i=Date.parse(String(t.expiresAt||``));if(Number.isFinite(i)&&i<=Date.now()){await J.resolveMobileOperation(e,n,{ok:!1,error:`移动设备操作请求已过期。`});return}try{let i=await Ue(`mobile_execute_device_operation`,{request:{id:n,operation:r,parameters:t.parameters&&typeof t.parameters==`object`?t.parameters:void 0}});await J.resolveMobileOperation(e,n,{ok:!0,result:i})}catch(t){await J.resolveMobileOperation(e,n,{ok:!1,error:t instanceof Error?t.message:String(t)})}finally{Z.push(n),Z.length>128&&Z.splice(0,Z.length-128)}}function Ge(e){let t=String(e.id||``);!t||Z.includes(t)||(Z.push(t),Z.length>128&&Z.splice(0,Z.length-128))}function Ke(e,t){let n=String(t.id||``);if(!n||Z.includes(n)||He.has(n))return;let r=We(e,t).catch(()=>{}).finally(()=>He.delete(n));He.set(n,r)}function qe(e){let t=String(e.path||``).trim().replaceAll(`\\`,`/`).toLowerCase();return t?`path:${t}`:`id:${e.id}`}function Q(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function Je(e,{agentId:t,responseText:n,data:r,finishedAt:i,error:a,preserveDisplayedText:o}){let s=!!a,c=r.lifecycle||e.lifecycle||{},l=y(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:C(r,e.plan),team:Q(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:D(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 Ye({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))},f=(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;d({sessionId:e,messageId:t,prompt:s,text:l.responseText,runId:l.runId,startedAt:l.startedAt,status:r,error:i})};return{dispatch:(i,d)=>{let p=new Date().toISOString();if(i===`run`)l.runId=typeof d.runId==`string`?d.runId:void 0,f(`started`);else if(i===`resync_required`)f(`recovering`);else if(i===`meta`)l.startedAt=typeof d.startedAt==`string`?d.startedAt:void 0,f(`started`),r(e,e=>({...y(e,d),model:d.model||e.model,thinkingLevel:d.thinkingLevel||e.thinkingLevel,cwd:d.cwd,permissionMode:d.permissionMode,executionMode:d.executionMode,runMode:d.runMode||e.runMode,goal:d.goal??null,plan:C(d,e.plan),team:Q(d,e.team),agents:d.agents||e.agents||[],currentActivity:d.currentActivity||e.currentActivity||null,activityFeed:d.activityFeed||e.activityFeed||[],lifecycle:d.lifecycle??e.lifecycle??null,sessionTreeRevision:Number(d.sessionTreeRevision??e.sessionTreeRevision??0),thinkingText:d.thinkingText??e.thinkingText??``,contextUsage:d.contextUsage??e.contextUsage??null,sessionUsage:d.sessionUsage??e.sessionUsage??null,runStartedAt:d.startedAt||e.runStartedAt,lastActivityAt:d.lastActivityAt||p})),(d.model||d.thinkingLevel||d.cwd||d.permissionMode||d.executionMode||d.goal!==void 0||d.team!==void 0||m(d)!==void 0)&&u(e=>({...e,model:d.model||e.model,thinkingLevel:d.thinkingLevel||e.thinkingLevel,cwd:d.cwd||e.cwd,permissionMode:d.permissionMode||e.permissionMode,executionMode:d.executionMode||e.executionMode,runMode:d.runMode||e.runMode,goal:d.goal??e.goal??null,team:Q(d,e.team),plan:C(d,e.plan??null)}));else if(i===`queue_update`)d.queuedInputs?.length&&(l.queuedDuringRun=!0),r(e,e=>y(e,{...d,queuedInputs:d.queuedInputs||[]}));else if(i===`agent_update`)r(e,e=>{let t=d.currentActivity||(d.agent?{type:`agent`,agent:d.agent,updatedAt:d.agent.lastActivityAt||p}:null);return{...e,team:Q(d,e.team),agents:d.agents||[],currentActivity:e.currentActivity?.type===`tool`?e.currentActivity:t||e.currentActivity,activityFeed:t?T(e.activityFeed,t):e.activityFeed,lastActivityAt:d.agent?.lastActivityAt||p}}),Object.hasOwn(d,`team`)&&u(e=>({...e,team:Q(d,e.team)}));else if(i===`agent_lifecycle`)r(e,e=>{let t=d.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:d.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(d.revision||0),lastActivityAt:p});else if(i===`thinking_level_changed`)r(e,{thinkingLevel:d.level,lastActivityAt:p}),u(e=>({...e,thinkingLevel:d.level}));else if(i===`context_usage`)r(e,{contextUsage:d});else if(i===`session_usage`)r(e,{sessionUsage:d});else if(i===`compaction_start`)s.flush(),r(e,e=>{let t={type:`compaction`,compaction:d,updatedAt:d.startedAt||p};return{...e,compaction:d,currentActivity:t,activityFeed:T(e.activityFeed,t),lastActivityAt:d.startedAt||p}});else if(i===`compaction_end`)r(e,e=>{let t={type:`model`,stage:`processing_result`,updatedAt:d.finishedAt||p};return{...e,compaction:d,currentActivity:t,activityFeed:T(e.activityFeed,t),lastActivityAt:d.finishedAt||p}});else if(i===`text_patch`)l.responseRenderingStreaming=!0,l.responseText=F(l.responseText,d),f(`streaming`),a.setTarget(l.responseText,p);else if(i===`text_delta`)l.responseText.length,l.responseRenderingStreaming=!0,l.responseText+=d.delta||``,f(`streaming`),a.setTarget(l.responseText,p);else if(i===`text_end`)l.responseText.length,typeof d.text==`string`&&(l.responseText=d.text),l.responseRenderingStreaming=!1,f(`streaming`),a.setTarget(l.responseText,d.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(d.thinkingText||``).slice(-6e3),o.cancel(),r(e,{thinkingText:l.thinkingPrefix,currentActivity:{type:`model`,stage:`thinking`,updatedAt:d.updatedAt||p},lastActivityAt:d.updatedAt||p});else if(i===`thinking_patch`){l.thinkingText=F(l.thinkingText,d).slice(-6e3);let e=[l.thinkingPrefix,l.thinkingText].filter(Boolean).join(`
3
+
4
+ `);o.push(e.slice(-6e3),p)}else if(i===`tool_start`)o.flush(),s.flush(),r(e,e=>{let t={type:`tool`,id:d.id,name:d.name,args:d.args,status:`running`,startedAt:d.startedAt||p,updatedAt:p,...d.output===void 0?{}:{output:d.output}};return{...e,lastActivityAt:p,runNotice:``,tools:T(e.tools,t),currentActivity:t,activityFeed:T(e.activityFeed,t)}});else if(i===`tool_update`)s.push(d.id,{message:d.message||``,updatedAt:d.updatedAt||p,...d.output===void 0?{}:{output:d.output},...d.agent?{agent:d.agent}:{},...d.previewImage?{previewImage:d.previewImage}:{},...d.target?{target:d.target}:{}},d.updatedAt||p);else if(i===`tool_end`)s.flush(),r(e,e=>{let t=e.tools.find(e=>e.id===d.id),n=d.finishedAt||p,r=String(t?.name||``),i=(w(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:d.error?`error`:`done`,message:d.message||t?.message||``,updatedAt:n,finishedAt:n,...d.output===void 0?{}:{output:d.output},...d.previewImage?{previewImage:d.previewImage}:{},...d.target?{target:d.target}:{}},o=d.agent?{type:`agent`,agent:d.agent,updatedAt:d.agent.lastActivityAt||n}:null,s=e.activityFeed||[];return(d.error||!i&&!o)&&(s=T(s,a)),o&&(s=T(s,o)),{...e,lastActivityAt:n,tools:e.tools.map(e=>e.id===d.id?{...e,status:d.error?`error`:`done`,message:d.message||``,updatedAt:n,finishedAt:n,...d.output===void 0?{}:{output:d.output},...d.previewImage?{previewImage:d.previewImage}:{},...d.target?{target:d.target}:{}}:e),currentActivity:d.error?a:o||(i?e.currentActivity:a),activityFeed:s}});else if(i===`mobile_operation_request`)Ke(e,d);else if(i===`mobile_operation_cancel`)Ge(d);else if(i===`permission_request`)s.flush(),r(e,e=>({...e,lastActivityAt:p,approvals:[...(e.approvals||[]).filter(e=>e.id!==d.id),d]}));else if(i===`permission_resolved`)r(e,e=>({...e,lastActivityAt:p,approvals:(e.approvals||[]).filter(e=>e.id!==d.id)}));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=>qe(e)!==qe(d)),d]}:e)}));else if(i===`goal_update`)r(e,e=>({...e,goal:d.goal??null,team:Q(d,e.team)})),u(e=>({...e,goal:d.goal??null,team:Q(d,e.team)}));else if(_(i))s.flush(),r(e,e=>{let t=C(d,e.plan),n=d.currentActivity||{type:`plan`,plan:t,changes:x(e.plan,t),updatedAt:t?.updatedAt||p};return{...e,lastActivityAt:p,plan:t,currentActivity:n,activityFeed:T(e.activityFeed,n)}}),u(e=>({...e,plan:C(d,e.plan??null)}));else if(i===`session_title`)u(e=>({...e,name:d.name}));else if(i===`retry`){let t=c(`chat:requestNotice.retryingAttempt`,{attempt:d.attempt,maxAttempts:d.maxAttempts});r(e,e=>{let n={type:`retry`,message:d.message,summary:t,updatedAt:p};return{...e,runNotice:t,currentActivity:n,activityFeed:T(e.activityFeed,n),lastActivityAt:p}})}else if(i===`done`||i===`error`){l.queuedDuringRun||=!!(n.current[e]?.hadQueuedInput||n.current[e]?.queuedInputs?.length);let c=d.finishedAt||p;if(typeof d.text==`string`&&(l.responseText=d.text),l.responseRenderingStreaming=!1,l.terminal=!0,f(i===`done`?`completed`:`failed`,i===`error`?d.message||`Speech response failed.`:void 0),a.setTarget(l.responseText,c),i===`error`&&a.flush(),o.flush(),s.cancel(),r(e,e=>Je(e,{agentId:t,responseText:l.responseText,data:d,finishedAt:c,preserveDisplayedText:i===`done`,...i===`error`?{error:d.message}:{}})),i===`done`)return u(e=>({...e,streaming:!1,goal:d.goal??e.goal??null,team:Q(d,e.team),plan:C(d,e.plan??null)})),!1;throw Error(d.message)}},state:l}}var Xe=`pisper:usage-updated`;function Ze({browserNotify:e,notify:t,defaultModel:n,localStreamSessionsRef:r,streamGenerationRef:i,sessionStatesRef:o,setActiveId:s,setGlobalError:c,updateSessionState:l,updateSessions:u,createSession:d,loadSessionMessages:f,refreshSessions:p,syncLiveSession:m}){let{t:g}=a(),_=(0,X.useRef)(new Map),v=(0,X.useRef)(new Set),x=(0,X.useRef)(new Map),C=(0,X.useCallback)(async(t,a,h=[],v=!1,y=!1,b=null,x=null,C={})=>{let w=C.retryFromIndex,E=w==null?t.trim()||(h.length?g(`chat:chatPage.pleaseAnalyzeTheseAttachments`):``)||(x?x.resourceName:``):t;if(!E&&!x)return;let O=a;if(O||=await d(),!O||o.current[O]?.streaming)return;let k=o.current[O];if(k?.pendingRuntimeSelection||k?.switchingModel||k?.switchingThinking)return;let A=(i.current.get(O)||0)+1;i.current.set(O,A);let j=!1,M=()=>!j&&i.current.get(O)===A,N=()=>{},P=new Promise(e=>{N=e});_.current.set(O,{promise:P,resolve:N}),C.activate!==!1&&(s(O),c(``));let F={id:`user-${Date.now()}`,role:`user`,text:E,invocation:x,attachments:h.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}))},I=`agent-${Date.now()}`,L=new Date().toISOString(),R={responseText:``,responseRenderingStreaming:!0,thinkingText:``,thinkingPrefix:``,queuedDuringRun:!1},z=Fe((e,t)=>{M()&&l(O,n=>M()?{...n,thinkingText:e,lastActivityAt:t||n.lastActivityAt,currentActivity:{type:`model`,stage:`thinking`,updatedAt:t||n.lastActivityAt}}:n)},{intervalMs:80}),B=Be((e,t)=>{M()&&l(O,n=>{if(!M())return n;let r=n.messages.map(t=>t.id===I?{...t,text:e,streaming:R.responseRenderingStreaming||e!==R.responseText}:t);if(R.terminal||!R.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:T(n.activityFeed,i),messages:r}})},{isCurrent:M}),V=Ie((e,t)=>{M()&&l(O,n=>{if(!M())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=T(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}})}),H=Ye({sessionId:O,agentId:I,sessionStatesRef:o,updateSessionState:l,updateSessions:u,typewriter:B,thinkingScheduler:z,toolScheduler:V,t:g}),U=(e,t)=>M()?e===`resync_required`?(H.dispatch(e,t),j=!0,i.current.delete(O),r.current.delete(O),m(O),!1):H.dispatch(e,t):!1;R=H.state,l(O,e=>{let t=v||y||e.goal?.status===`active`;return{...e,messages:[...w==null?e.messages:e.messages.slice(0,w),F,{id:I,role:`agent`,text:``,streaming:!0}],tools:[],approvals:[],error:``,streaming:!0,loaded:!0,runStartedAt:L,lastActivityAt:L,runFinishedAt:null,runStopped:!1,runNotice:``,currentActivity:{type:`model`,stage:`thinking`,updatedAt:L},activityFeed:[],lifecycle:{phase:`starting`,event:`prompt_submitted`,turn:0,updatedAt:L},thinkingText:``,hadQueuedInput:!1,withdrawnInputIds:[],queuedInputRunId:I,compaction:null,plan:t?e.plan:null}}),!v&&!y&&u(e=>e.map(e=>e.id!==O||e.goal?.status===`active`?e:{...e,plan:null})),r.current.add(O);let W=!1;try{if(w==null?await J.openStream({sessionId:O,message:E,attachments:h,goalMode:v,teamMode:y,goalTokenBudget:b,invocation:x},U):await J.retryLastTurn(O,U),!M())return;R.responseRenderingStreaming=!1,R.terminal=!0,B.setTarget(R.responseText),z.flush(),V.flush();let t=new Date().toISOString();if(o.current[O]?.streaming&&l(O,e=>{let n=e.runFinishedAt||t;return{...e,streaming:!1,runFinishedAt:n,lastActivityAt:n,runNotice:``,currentActivity:null,activityFeed:[],approvals:[],tools:D(e.tools,{finishedAt:n}),messages:e.messages.map(e=>e.id===I?{...e,streaming:e.text!==R.responseText}:e)}}),!await B.drain()||!M()||(l(O,e=>({...e,messages:e.messages.map(e=>e.id===I?{...e,text:R.responseText,streaming:!1}:e)})),!M()))return;(v||y||R.queuedDuringRun||o.current[O]?.hadQueuedInput||o.current[O]?.goal||o.current[O]?.queuedInputs?.length)&&l(O,{queuedInputs:[],hadQueuedInput:!1});let r;try{r=(await p()).find(e=>e.id===O)}catch{m(O)}if(!M())return;C.activate!==!1&&e?.(`chat.completed`,{chat:{title:r?.name||g(`chat:chatPage.appChat`,{app:`Pisper`}),summary:R.responseText.trim().slice(0,260)||g(`chat:chatPage.theAgentHasFinishedResponding`),model:o.current[O]?.model||n}})}catch(e){if(!M())return;if((R.runId||R.startedAt)&&!R.terminal){H.dispatch(`resync_required`,{}),j=!0,i.current.delete(O),r.current.delete(O),m(O);return}W=!0,B.cancel(),z.flush(),V.cancel();let t=new Date().toISOString(),n=S(e);if(l(O,e=>({...e,streaming:!1,error:n,runFinishedAt:t,lastActivityAt:t,runNotice:``,currentActivity:null,activityFeed:[],approvals:[],tools:D(e.tools,{finishedAt:t,error:n}),messages:e.messages.map(e=>e.id===I?{...e,streaming:!1,error:n,text:e.text||R.responseText}:e)})),R.queuedDuringRun||o.current[O]?.hadQueuedInput||o.current[O]?.queuedInputs?.length){try{await f(O,{force:!0})}catch{}l(O,{queuedInputs:[],hadQueuedInput:!1})}u(e=>e.map(e=>e.id===O?{...e,streaming:!1}:e))}finally{let e=M();j=!0,e&&(r.current.delete(O),i.current.delete(O),l(O,{streaming:!1,hadQueuedInput:!1}),_.current.get(O)?.promise===P&&_.current.delete(O)),B.cancel(),z.cancel(),V.cancel(),N(),window.dispatchEvent(new Event(Xe)),W&&e&&m(O)}},[e,d,n,f,r,p,i,o,s,c,m,g,l,u]),w=(0,X.useCallback)(async(e,n,r=[],i=`steer`)=>{let a=String(e||``).trim()||(r.length?g(`chat:chatPage.pleaseAnalyzeTheseAttachments`):``);if(!n||!a)return!1;let s=o.current[n]?.queuedInputRunId;try{let e=await J.queueInput(n,a,r,i),t=new Date().toISOString(),o={id:`interactive-user-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:`user`,text:a,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=y(n,e),i=!r.withdrawnInputIds?.includes(e.inputId)&&n.queuedInputRunId===s;return{...r,messages:i?h(r.messages,o):r.messages,hadQueuedInput:!0,lastActivityAt:t}}),!0}catch(e){if(b(e)){let e=_.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}),C(a,n,r),!0}return t(S(e),`error`),!1}},[f,t,C,o,m,g,l]),E=(0,X.useCallback)(e=>{if(!e)return Promise.resolve();let n=o.current[e],r=x.current.get(e);if(r?.matchesRun(n))return r.promise;let i=n?.runStartedAt,a=n?.queuedInputRunId,s=!!n?.runStopped,c=e=>!!(e&&(a?e.queuedInputRunId===a:!e.queuedInputRunId&&e.runStartedAt===i));l(e,{runStopped:!0});let d=(async()=>{let n;try{n=await J.abort(e)}catch(t){let n=o.current[e];throw c(n)&&n?.runStopped&&l(e,{runStopped:s}),t}if(!c(o.current[e])||(await m(e,{force:!0}),!c(o.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:D(e.tools,{finishedAt:r,error:g(`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(g(`chat:chatPage.currentRunStopped`),`info`)})().finally(()=>{x.current.get(e)?.promise===d&&x.current.delete(e)});return x.current.set(e,{matchesRun:c,promise:d}),d},[t,o,m,g,l,u]),O=(0,X.useCallback)(async(e,n)=>{let r=`${e}/${n}`;if(!e||!n||v.current.has(r))return null;v.current.add(r),l(e,e=>({...e,withdrawingInputIds:[...e.withdrawingInputIds||[],n]}));try{let r=await J.withdrawQueuedInput(e,n);return l(e,e=>y(e,{...r,removedInputId:r.removed?n:void 0})),r.removed?r.withdrawnInput||null:(t(g(`chat:focusSession.queuedInputAlreadyConsumed`),`info`),null)}catch(e){return t(S(e),`error`),null}finally{v.current.delete(r),l(e,e=>({...e,withdrawingInputIds:(e.withdrawingInputIds||[]).filter(e=>e!==n)}))}},[t,g,l]);return{sendPrompt:C,retryLastTurn:(0,X.useCallback)(async(e,t={})=>{let n=o.current[e];if(!n||n.streaming)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 a=r[i];await C(a.text||``,e,a.attachments||[],!1,!1,null,null,{retryFromIndex:i,...t})},[C,o]),queuePrompt:w,withdrawQueuedInput:O,abort:E}}function Qe(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 $e({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 Qe(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 et=$e({isStreaming:async(e,t)=>{let n=await J.getLiveSession(e,{signal:t});return!!(n.configurationBusy??n.streaming)},apply:(e,t)=>t.model?J.updateModel(e,t.model.provider,t.model.modelId):J.setThinkingLevel(e,t.thinkingLevel)});function tt({notify:e,requestText:t,requestConfirm:n,availableModels:r,sessionStatesRef:i,updateSessionState:o,updateSessions:s,replaceSessionStates:c,setGlobalError:l,syncLiveSession:u}){let{t:d,language:f}=a(),[p,m]=(0,X.useState)(null),h=(0,X.useCallback)(e=>{o(e,e=>({...e,runtimeSelectionRevision:(e.runtimeSelectionRevision||0)+1}))},[o]),g=(0,X.useCallback)((e,t)=>{s(n=>n.map(n=>n.id===e?t(n):n))},[s]),_=(0,X.useCallback)(async t=>{if(t)try{let n=await J.pauseGoal(t);o(t,{goal:n.goal||null}),g(t,e=>({...e,goal:n.goal||null})),e(d(`chat:chatPage.goalPaused`),`info`)}catch(e){o(t,{error:S(e)})}},[e,d,o,g]),v=(0,X.useCallback)(async(t,n)=>{if(t)try{let r=await J.setGoalBudget(t,n);o(t,{goal:r.goal||null}),g(t,e=>({...e,goal:r.goal||null})),e(d(`chat:chatPage.goalTokenBudgetUpdated`),`info`)}catch(e){o(t,{error:S(e)})}},[e,d,o,g]),y=(0,X.useCallback)(async t=>{let n=i.current[t];if(!(!t||n?.streaming||n?.compaction?.active)){o(t,{compaction:{...n?.compaction||{},active:!0,status:`running`,reason:`manual`},error:``});try{let n=await J.compactSession(t);o(t,{compaction:n.compaction||null,contextUsage:n.contextUsage||null}),e(d(`chat:chatPage.contextCompacted`))}catch(e){await u(t).catch(()=>{}),o(t,{error:S(e)})}}},[e,i,u,d,o]),b=(0,X.useCallback)(async e=>{let t=await J.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,X.useCallback)((e,t={})=>{let n=String(t.model||``),r=String(i.current[e]?.model||``);if(n&&r&&n!==r)return;let a=Array.isArray(t.availableThinkingLevels)?t.availableThinkingLevels.map(e=>String(e)):Array.isArray(t.availableLevels)?t.availableLevels.map(e=>String(e)):[],s=String(t.thinkingLevel||``);o(e,{thinkingLevel:s||void 0,availableThinkingLevels:a,thinkingStatus:String(t.thinkingStatus||t.status||``),thinkingMessage:String(t.thinkingMessage||t.message||``),switchingThinking:!1}),s&&g(e,e=>({...e,thinkingLevel:s}))},[i,o,g]),C=(0,X.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 J.getThinkingLevel(e);if(i.current[e]?.runtimeSelectionRevision!==t)return;x(e,n)}catch{if(i.current[e]?.runtimeSelectionRevision!==t)return;o(e,{thinkingStatus:`error`,thinkingMessage:d(`chat:focusSession.thinkingLevelsLoadFailed`)})}},[x,i,d,o]),w=(0,X.useCallback)(async(t,a)=>{let s=r.find(e=>e.key===a);if(!t||!s)return;let c=i.current[t];if(c?.switchingModel||c?.switchingThinking)return;if(c?.streaming||c?.pendingRuntimeSelection){et.select(t,s.key===c.model?void 0:{model:s});return}h(t);let l=c?.model||``,u=!!c?.messages?.length&&!c?.compaction?.active;o(t,{switchingModel:!0,model:s.key,error:``}),g(t,e=>({...e,model:s.key}));try{let r=await J.updateModel(t,s.provider,s.modelId);h(t),o(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),o(t,{switchingModel:!1,model:l||void 0,error:S(e)}),l&&g(t,e=>({...e,model:l}))}},[x,r,y,h,e,n,i,d,o,g]),T=(0,X.useCallback)(async(t,n)=>{let r=String(n||``).trim();if(!t||!r)return;let a=i.current[t]||{};if(a.switchingModel||a.switchingThinking)return;if(a.streaming||a.pendingRuntimeSelection){if(a.pendingRuntimeSelection?.model)return;et.select(t,r===a.thinkingLevel?void 0:{thinkingLevel:r});return}h(t);let s=String(a.thinkingLevel||``);o(t,{switchingThinking:!0,thinkingLevel:r,error:``}),g(t,e=>({...e,thinkingLevel:r}));try{let n=await J.setThinkingLevel(t,r);h(t),x(t,n),e(d(`chat:chatPage.switchedToThinkingLevel`,{level:String(n.thinkingLevel||r)}))}catch(e){h(t),o(t,{switchingThinking:!1,thinkingLevel:s||void 0,error:S(e)}),s&&g(t,e=>({...e,thinkingLevel:s}))}},[x,h,e,i,d,o,g]);(0,X.useEffect)(()=>et.subscribe((t,n)=>{if(!n){o(t,{pendingRuntimeSelection:void 0});return}let{selection:r,status:i}=n;if(i===`pending`||i===`applying`){h(t),o(t,{pendingRuntimeSelection:{model:r.model?.key,thinkingLevel:r.thinkingLevel},switchingModel:i===`applying`&&!!r.model,switchingThinking:i===`applying`&&!!r.thinkingLevel,error:``});return}if(h(t),o(t,{pendingRuntimeSelection:void 0,switchingModel:!1,switchingThinking:!1,...n.error?{error:S(n.error)}:{}}),i===`error`)return;let a=n.result||{};if(r.model){let e=String(a.model||r.model.key);o(t,{model:e,contextUsage:a.contextUsage??null}),g(t,t=>({...t,model:e}))}x(t,a),e(r.model?d(`chat:chatPage.switchedToModel`,{model:r.model.label}):d(`chat:chatPage.switchedToThinkingLevel`,{level:String(a.thinkingLevel||r.thinkingLevel)}))}),[x,h,e,d,o,g]);let E=(0,X.useCallback)(async(t,r)=>{if(!t)return!1;o(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 o(t,{switchingPermission:!1}),!1;let i=await J.updateExecutionMode(t,r);return o(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 o(t,{switchingPermission:!1,error:S(e)}),!1}},[e,n,d,o,g]),D=(0,X.useCallback)(async(e,t)=>{if(!e)return!1;try{let n=await J.updateRunMode(e,t),r=String(n.runMode||t);return o(e,{runMode:r}),g(e,e=>({...e,runMode:r})),!0}catch(t){return o(e,{error:S(t)}),!1}},[o,g]),O=(0,X.useCallback)(async(t,n,r)=>{o(t,{error:``});try{let e=await J.resolveApproval(t,n,r);o(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 N&&n.status===404){e(d(`chat:chatPage.approvalStatusUpdated`),`info`);return}throw o(t,{error:S(n)}),n}},[e,u,d,o]),k=(0,X.useCallback)(async(t,n)=>{if(!(!t?.id||i.current[t.id]?.streaming)){o(t.id,{switchingCwd:!0,error:``});try{let r=await J.updateCwd(t.id,n);o(t.id,{cwd:r.cwd,switchingCwd:!1}),g(t.id,e=>({...e,cwd:r.cwd})),m(null),e(d(`chat:chatPage.workingDirectoryChangedToWorkspace`,{workspace:Y(r.cwd,f)}))}catch(e){throw o(t.id,{switchingCwd:!1,error:S(e)}),e}}},[f,e,i,d,o,g]);return{workspaceSession:p,setWorkspaceSession:m,switchSessionCwd:k,selectSessionWorkspace:(0,X.useCallback)(async t=>{if(t?.id){if(i.current[t.id]?.streaming){e(d(`chat:chatPage.stopTheActiveRunBeforeChangingTheWorkspace`),`info`);return}if(!xe()){m(t);return}try{let e=await be(t.cwd);e&&await k(t,e)}catch(e){o(t.id,{switchingCwd:!1,error:S(e)})}}},[e,i,k,d,o]),renameSession:(0,X.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 J.renameSession(n.id,r);g(n.id,e=>({...e,name:t.name})),K({id:n.id,name:t.name}),e(d(`chat:chatPage.chatTitleUpdated`))}catch(e){l(S(e))}},[e,t,i,l,d,g]),pauseGoal:_,setGoalBudget:v,compactSession:y,setCompactionThreshold:b,loadSessionThinkingLevel:C,switchSessionModel:w,switchSessionThinkingLevel:T,switchSessionExecutionMode:E,switchSessionRunMode:D,resolveToolApproval:O}}function nt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function rt(e){if(!nt(e)||typeof e.created!=`boolean`)throw j();if(e.session===null){if(e.expiresAt!==null||e.created)throw j();return{session:null,expiresAt:null,created:!1}}let t=e.session;if(!nt(t)||typeof t.id!=`string`||!t.id||typeof e.expiresAt!=`string`||!Number.isFinite(Date.parse(e.expiresAt)))throw j();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 j();typeof r==`string`&&(n[e]=r)}if(t.streaming!==void 0&&typeof t.streaming!=`boolean`)throw j();return typeof t.streaming==`boolean`&&(n.streaming=t.streaming),{session:n,expiresAt:e.expiresAt,created:e.created}}async function it(e,t){return rt(await M(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{signal:t}))}async function at(e,t){let n=rt(await M(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{method:`POST`,signal:t}));if(!n.session)throw j();return n}var $=i();function ot({runtime:e,children:t}){let[n,r]=(0,X.useState)({}),i=(0,X.useRef)(n),a=(0,X.useRef)(!0),o=(0,X.useRef)(e),s=(0,X.useRef)(new Map),c=(0,X.useRef)(new Map);(0,X.useLayoutEffect)(()=>{o.current=e},[e]),(0,X.useLayoutEffect)(()=>(a.current=!0,()=>{a.current=!1}),[]);let u=(0,X.useCallback)((e,t)=>{let n={...i.current,[e]:{...i.current[e]??Ce,...t}};i.current=n,r(n)},[]),d=(0,X.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:d(e,!0)}let r=new AbortController;u(e,{loading:!0,error:``});let f=(async()=>{try{let n=await(t?at:it)(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),l(a)),u(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||u(e,{error:S(t)}),null}finally{r.signal.aborted||u(e,{loading:!1}),c.current.get(e)?.controller===r&&c.current.delete(e)}})();return c.current.set(e,{create:t,controller:r,promise:f}),f},[u]);(0,X.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)&&d(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()}},[d]);let f=(0,X.useCallback)((e,t)=>u(e,{draft:t}),[u]),p=(0,X.useMemo)(()=>({entries:n,runtime:e,load:d,setDraft:f}),[n,e,d,f]);return(0,$.jsx)(Se.Provider,{value:p,children:t})}var st=(0,X.lazy)(()=>t(()=>import(`./ChatDockView-B4nZfbx5.js`).then(e=>({default:e.ChatDockView})),__vite__mapDeps([2,3,4,5,6,7,8,9,1,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,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125])));function ct(e){let t=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return t?t(e):Promise.reject(Error(`native bridge unavailable`))}function lt({notify:e,navigate:t,browserNotify:n,registerPrimaryAction:r,reportActiveSessionRun:i,pendingAsset:o,onAssetConsumed:l,requestText:u,requestConfirm:d}){let{t:f}=a(),p=L(e=>e.client===`mobile-app`),m=L(e=>e.loaded),h=A(),g=p||h,_=(0,X.useRef)(null),v=(0,X.useRef)(new Set),y=(0,X.useRef)(new Map),b=(0,X.useRef)(null),x=we({notify:e}),S=(0,X.useRef)(new Set);(0,X.useEffect)(()=>{let e=()=>{let e=x.activeId;!e||document.visibilityState!==`visible`||!x.sessions.some(t=>t.id===e&&t.unread)||S.current.has(e)||(S.current.add(e),he(e,{read:!0}).catch(()=>void 0).finally(()=>S.current.delete(e)))};return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[x.activeId,x.sessions]);let C=Ne({sessionStates:x.sessionStates,sessionStatesRef:x.sessionStatesRef,localStreamSessionsRef:v,streamGenerationRef:y,updateSessionState:x.updateSessionState,updateSessions:x.updateSessions}),w=Te({sessions:x.sessions,sessionsRef:x.sessionsRef,sessionStates:x.sessionStates,activeId:x.activeId,setActiveId:x.setActiveId,loading:x.loading,localStreamSessionsRef:v,loadSessionMessages:C.loadSessionMessages,releaseSessionState:x.releaseSessionState,singleSessionLayout:g,notify:e}),T=x.createSessionRecord,E=C.loadSessionMessages,D=x.refreshSessions,O=x.sessionStatesRef,j=C.syncLiveSession,M=x.setGlobalError,N=w.openSessionInDock,F=w.moveSessionToGroup,[I,R]=(0,X.useState)({sessionId:``,token:0}),z=(0,X.useCallback)(async(e,t=``)=>{let n=null;p&&(n=await ct(`mobile_state`).catch(()=>null));let r=me(p,n),i=await T(t,{inheritRecentCwd:r});return i?(N(i)&&F(i,e),i):``},[T,p,F,N]);le(r,z);let B=Ze({browserNotify:n,notify:e,defaultModel:x.defaultModel,localStreamSessionsRef:v,streamGenerationRef:y,sessionStatesRef:x.sessionStatesRef,setActiveId:x.setActiveId,setGlobalError:x.setGlobalError,updateSessionState:x.updateSessionState,updateSessions:x.updateSessions,createSession:z,loadSessionMessages:C.loadSessionMessages,refreshSessions:x.refreshSessions,syncLiveSession:C.syncLiveSession}),{sendPrompt:V,retryLastTurn:H}=B;(0,X.useEffect)(()=>{let e=()=>{let e=te();e&&(async()=>{let t=await z(void 0,e.cwd);t&&e.prompt&&V(e.prompt,t)})()};return window.addEventListener(re,e),e(),()=>window.removeEventListener(re,e)},[z,V]);let U=tt({notify:e,requestText:u,requestConfirm:d,availableModels:x.availableModels,sessionStatesRef:x.sessionStatesRef,updateSessionState:x.updateSessionState,updateSessions:x.updateSessions,replaceSessionStates:x.replaceSessionStates,setGlobalError:x.setGlobalError,syncLiveSession:C.syncLiveSession}),W=(0,X.useCallback)(()=>{if(document.visibilityState!==`visible`||b.current)return;let e=(async()=>{p&&await P().catch(()=>void 0);let e=[];try{e=await D(void 0,{preserveExistingOnEmpty:!0})}catch{}let t=new Set([...Object.keys(O.current),...x.activeId?[x.activeId]:[],...e.filter(e=>e.streaming).map(e=>e.id)]);await Promise.allSettled(Array.from(t).map(e=>j(e,{force:!0})))})().finally(()=>{b.current=null});b.current=e},[x.activeId,p,D,O,j]);(0,X.useEffect)(()=>{let e=()=>W();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)}},[W]);let G=(0,X.useCallback)(async e=>{await E(e,{force:!0}),await D(e)},[E,D]),ee=(0,X.useCallback)(async(t,n)=>{if(!(!t?.id||!n))try{if(M(``),(await J.navigateSessionTree(t.id,n,!1)).cancelled)return;await G(t.id),R(e=>({sessionId:t.id,token:e.token+1})),e(f(`chat:chatPage.branchedFromNode`))}catch(e){M(e instanceof Error?e.message:String(e))}},[e,G,M,f]),ne=(0,X.useCallback)(async(t,n)=>{if(!t?.id||!n)return;let r=await u({title:f(`chat:chatPage.createChildChat`),inputLabel:f(`chat:chatPage.chatTitle`),value:`${f(`chat:chatPage.separateChatSuffix`)} · ${t.name||f(`chat:chatPage.newChat`)}`,confirmLabel:f(`chat:chatPage.create`)});if(r!==null)try{M(``);let i=await J.deriveSession(t.id,n,r);await D(),N(i.id),R(e=>({sessionId:i.id,token:e.token+1})),e(f(`chat:chatPage.childChatCreated`))}catch(e){M(e instanceof Error?e.message:String(e))}},[e,N,D,u,M,f]),K=(0,X.useCallback)(()=>t(`config`),[t]),ie=(0,X.useMemo)(()=>({sessions:x.sessions,subscribeSessionState:x.subscribeSessionState,getSessionState:x.getSessionState,defaultModel:x.defaultModel,availableModels:x.availableModels,globalError:x.globalError,activeId:x.activeId,compactDock:w.compactDock,mobileLayout:g,requestConfirm:d,sessionTreePulseSessionId:I.sessionId,sessionTreePulseToken:I.token,pendingAsset:o,onAssetConsumed:l,notify:e,openModelSettings:K,reportActiveSessionRun:i,createSession:z,loadSessionMessages:C.loadSessionMessages,loadOlderMessages:C.loadOlderMessages,sendPrompt:B.sendPrompt,retryLastTurn:B.retryLastTurn,queuePrompt:B.queuePrompt,withdrawQueuedInput:B.withdrawQueuedInput,abort:B.abort,pauseGoal:U.pauseGoal,setGoalBudget:U.setGoalBudget,compactSession:U.compactSession,setCompactionThreshold:U.setCompactionThreshold,switchSessionModel:U.switchSessionModel,loadSessionThinkingLevel:U.loadSessionThinkingLevel,switchSessionThinkingLevel:U.switchSessionThinkingLevel,switchSessionExecutionMode:U.switchSessionExecutionMode,switchSessionRunMode:U.switchSessionRunMode,resolveToolApproval:U.resolveToolApproval,selectSessionWorkspace:U.selectSessionWorkspace,renameSession:U.renameSession,branchFromEntry:ee,createChildSession:ne,reloadSessionBranch:G,splitDockPanel:w.splitDockPanel,closeDockPanel:w.closeDockPanel}),[x.sessions,x.subscribeSessionState,x.getSessionState,x.defaultModel,x.availableModels,x.globalError,x.activeId,w.compactDock,w.splitDockPanel,w.closeDockPanel,g,d,I.sessionId,I.token,o,l,e,K,i,z,C.loadSessionMessages,C.loadOlderMessages,B.sendPrompt,B.retryLastTurn,B.queuePrompt,B.withdrawQueuedInput,B.abort,U.pauseGoal,U.setGoalBudget,U.compactSession,U.setCompactionThreshold,U.switchSessionModel,U.loadSessionThinkingLevel,U.switchSessionThinkingLevel,U.switchSessionExecutionMode,U.switchSessionRunMode,U.resolveToolApproval,U.selectSessionWorkspace,U.renameSession,ee,ne,G]),ae=x.discardSessionState,q=(0,X.useMemo)(()=>({subscribeSessionState:x.subscribeSessionState,getSessionState:x.getSessionState,retainSessionState:x.retainSessionState,discard:e=>{y.current.set(e,(y.current.get(e)??0)+1),v.current.delete(e),ae(e)},loadSessionMessages:C.loadSessionMessages,loadOlderMessages:C.loadOlderMessages,syncLiveSession:C.syncLiveSession,send:(e,t)=>V(t,e,[],!1,!1,null,null,{activate:!1}),retry:e=>H(e,{activate:!1}),abort:B.abort,approve:U.resolveToolApproval}),[x.subscribeSessionState,x.getSessionState,x.retainSessionState,ae,C.loadSessionMessages,C.loadOlderMessages,C.syncLiveSession,V,H,B.abort,U.resolveToolApproval]);return(0,$.jsxs)(ot,{runtime:q,children:[(0,$.jsx)(`div`,{ref:_,className:`chat-layout dock-layout relative flex w-full min-w-0 min-h-0 flex-1`,children:x.loading?(0,$.jsxs)(ce,{children:[(0,$.jsx)(k,{className:`animate-spin`,size:24}),(0,$.jsx)(`h2`,{children:f(`chat:chatPage.wakingTheAgent`)}),(0,$.jsx)(`p`,{children:f(`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-background`,children:(0,$.jsx)(c.Provider,{value:ie,children:m&&(g?(0,$.jsx)(s,{onCreateSession:z}):(0,$.jsx)(X.Suspense,{fallback:(0,$.jsx)(`div`,{role:`status`,className:`p-4`,children:f(`chat:chatPage.wakingTheAgent`)}),children:(0,$.jsx)(st,{compactDock:w.compactDock,onDockReady:w.onDockReady,onDockDispose:w.onDockDispose,getTabContextMenuItems:w.getTabContextMenuItems,createSession:z})}))})})}),U.workspaceSession&&(0,$.jsx)(se,{open:!0,initialPath:U.workspaceSession.cwd,description:f(`common:workspacePicker.selectWorkspaceForChat`,{name:U.workspaceSession.name}),onOpenChange:e=>!e&&U.setWorkspaceSession(null),onSelect:e=>U.switchSessionCwd(U.workspaceSession,e)})]})}export{lt as ChatPage};