pisper 0.6.2 → 0.6.3
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.
- package/package.json +7 -7
- package/web/.vite/manifest.json +256 -256
- package/web/assets/{AppOverlays-D-yAp1vf.js → AppOverlays-CR5iJcP5.js} +1 -1
- package/web/assets/{AppShortcuts-CtNLVerh.js → AppShortcuts-BachmLQ3.js} +1 -1
- package/web/assets/{AssetsPage-DOzB9Wnk.js → AssetsPage-BltehMID.js} +1 -1
- package/web/assets/{ChannelsPage-DAPrpSTC.js → ChannelsPage-Tuw_qicj.js} +1 -1
- package/web/assets/{ChatAppearancePage-Q8jLnp7A.js → ChatAppearancePage-DME3PgDr.js} +2 -2
- package/web/assets/{ChatDockView-1fxZrR7W.js → ChatDockView-DoGtrBpY.js} +1 -1
- package/web/assets/{ChatHistoryPage-Bpyxsay_.js → ChatHistoryPage-DTXS6i3n.js} +1 -1
- package/web/assets/{ChatPage-CVOjCtOP.js → ChatPage-ibc_7olm.js} +3 -3
- package/web/assets/{ConfigPage-sVAdZytK.js → ConfigPage-CI6one5Y.js} +1 -1
- package/web/assets/{DecisionsPage-zq88dfkB.js → DecisionsPage-DOhLbIaD.js} +1 -1
- package/web/assets/{DesktopWindowControls-DYmSShHE.js → DesktopWindowControls-KmgemDO8.js} +1 -1
- package/web/assets/{FloatingWidgets-CFY30wFr.js → FloatingWidgets-Bs7ec6lW.js} +1 -1
- package/web/assets/{GitDiffViewer-BZV0A9mh.js → GitDiffViewer-xm2LnN9r.js} +1 -1
- package/web/assets/{MarkdownMessage-_VrT_sON.js → MarkdownMessage-H1336cMr.js} +1 -1
- package/web/assets/{McpPage-ROftSC8m.js → McpPage-Ck-7aLuZ.js} +1 -1
- package/web/assets/{MemoryPage-DkBjt-3Y.js → MemoryPage-BEdNJ3ot.js} +1 -1
- package/web/assets/{MobileContextScreen-BEss6aR9.js → MobileContextScreen-Dasny2J9.js} +2 -2
- package/web/assets/{MobileThreePane-DjyMuG9k.js → MobileThreePane-DEKMHPfN.js} +1 -1
- package/web/assets/{PageHeader-DyoCht8Y.js → PageHeader-C_bfu8Ir.js} +1 -1
- package/web/assets/{PluginsPage-DjaIps8G.js → PluginsPage-BPx5ERHL.js} +1 -1
- package/web/assets/{QuickPromptIdeas-B8P77vjW.js → QuickPromptIdeas-Bs-udcSZ.js} +1 -1
- package/web/assets/{SchedulesPage-CsJS8r9L.js → SchedulesPage-W4Mg7frl.js} +1 -1
- package/web/assets/{SessionContextPanel-BYlJfIxm.js → SessionContextPanel-lu9F9AJg.js} +1 -1
- package/web/assets/{SessionFilesPane-DWuwTplj.js → SessionFilesPane-BIRQ_hHi.js} +2 -2
- package/web/assets/{SidebarMoreTools-C2kAUJm0.js → SidebarMoreTools-BDqt5VTG.js} +1 -1
- package/web/assets/{SidebarRecentSessions-CoaY-U88.js → SidebarRecentSessions-1G_huYu9.js} +1 -1
- package/web/assets/{SidebarSettingsButton-BvmP3q5N.js → SidebarSettingsButton-B4_vEBS5.js} +1 -1
- package/web/assets/{SidebarUpdateStatus-DHxZy6-o.js → SidebarUpdateStatus-DD8f4Fxv.js} +1 -1
- package/web/assets/{SkillsPage-CX55drgE.js → SkillsPage-CpRRosmo.js} +1 -1
- package/web/assets/{TerminalPanel-gBBjaBlu.js → TerminalPanel-DVKC4htc.js} +1 -1
- package/web/assets/{ThemeToggleButton-D6NR_guG.js → ThemeToggleButton-CXXbLtcY.js} +1 -1
- package/web/assets/{WebDesktopPet-BKP_jSW2.js → WebDesktopPet-DWFspeZE.js} +1 -1
- package/web/assets/{WorkbenchSidebarToggle-Kxa_tpUy.js → WorkbenchSidebarToggle-AgjfcT29.js} +1 -1
- package/web/assets/{WorkflowsPage-CNVCHm3u.js → WorkflowsPage-bhQlHSzS.js} +1 -1
- package/web/assets/{api-BbC90EzT.js → api-Dzobr-o_.js} +1 -1
- package/web/assets/catalog-D4eaIju4.js +1 -0
- package/web/assets/{chat-api-BWIsQYmQ.js → chat-api-DfnvubiW.js} +1 -1
- package/web/assets/{client-store-CAjI7P8I.js → client-store-DPMvgPNS.js} +1 -1
- package/web/assets/{component-api-CQ_xu0Wa.js → component-api-Nwo2yGZI.js} +1 -1
- package/web/assets/{config-search-BnPZPrUR.js → config-search-CwVhh2uc.js} +1 -1
- package/web/assets/{events-DJwBfKGM.js → events-Bwv6HmwM.js} +1 -1
- package/web/assets/{floating-widgets-store-DGeXH0NK.js → floating-widgets-store-DIy4GSy4.js} +2 -2
- package/web/assets/{http-BrDjjNkv.js → http-DphgzWtw.js} +1 -1
- package/web/assets/{i18n-Bo7twSO7.js → i18n-7QvbQzOQ.js} +1 -1
- package/web/assets/{index-IemAtsU4.js → index-iBrSU61i.js} +2 -2
- package/web/assets/{local-path-reveal-BSjf-Pum.js → local-path-reveal-DWhkyox-.js} +1 -1
- package/web/assets/{mount-app-AtqeFC4t.js → mount-app-n_05p6iW.js} +3 -3
- package/web/assets/{pick-system-directory-Wa63igLM.js → pick-system-directory-R1F5WyaB.js} +1 -1
- package/web/assets/{public-CsBeGSro.js → public-BcTP7F3I.js} +1 -1
- package/web/assets/{public-components-BYWnKxmu.js → public-components-Ck5BYo6M.js} +1 -1
- package/web/assets/{runtime-capabilities-store-BxCUS5xR.js → runtime-capabilities-store-DaWPY5y-.js} +1 -1
- package/web/assets/{session-change-summary-api-x1sTdOgD.js → session-change-summary-api-DFgTzTci.js} +1 -1
- package/web/assets/{session-list-DPpH_zbz.js → session-list-CMaoK_ZX.js} +1 -1
- package/web/assets/{session-streaming-state-OU65zaiO.js → session-streaming-state-llCTupbI.js} +1 -1
- package/web/assets/{shortcuts-B3q7nKdq.js → shortcuts-BO-h6OmP.js} +1 -1
- package/web/assets/{speech-session-BB9aLyRQ.js → speech-session-DKjw0mV_.js} +1 -1
- package/web/assets/{startup-queries-C-Xq7N50.js → startup-queries-CAQZvUIR.js} +1 -1
- package/web/assets/{ui-store-3r51KJe8.js → ui-store-2wpnH8Kf.js} +1 -1
- package/web/assets/{use-i18n-DyzoXal-.js → use-i18n-BSZKFkMb.js} +1 -1
- package/web/assets/{useCustomUiComponents-B3Z-pphj.js → useCustomUiComponents-BH86kuaq.js} +1 -1
- package/web/assets/{web-preview-panel-DNEqdotS.js → web-preview-panel-DVQxVfig.js} +4 -4
- package/web/index.html +1 -1
- package/web/assets/catalog-BPgyo6Yf.js +0 -1
|
@@ -1,4 +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/SessionContextPanel-
|
|
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-IemAtsU4.js";import{i as r,r as i}from"./vendor-react-DwNgTV1j.js";import{t as a}from"./use-i18n-DyzoXal-.js";import{a as o,i as s,o as c}from"./vendor-state-GkUciC5H.js";import{t as l}from"./storage-BpAqa-YY.js";import{t as u}from"./utils-C8uzG5AZ.js";import{a as d,c as f,l as p,n as m,o as h,s as g,t as _}from"./web-preview-panel-DNEqdotS.js";import{C as v,S as y,_ as b,a as x,b as S,c as C,f as w,g as T,h as E,i as D,l as O,m as k,p as A,t as j,u as M,v as N,x as P,y as F}from"./session-streaming-state-OU65zaiO.js";import{t as I}from"./refresh-cw-TbWxTY4K.js";import{r as ee}from"./use-mobile-YXncArOq.js";import{i as L,n as R,o as z,r as B}from"./http-BrDjjNkv.js";import{n as V,t as te}from"./api-BbC90EzT.js";import{t as H}from"./client-store-CAjI7P8I.js";import{r as ne}from"./useQuery-DdcpUQhO.js";import{t as U}from"./chat-api-BWIsQYmQ.js";import{i as W}from"./format-BRFKAYMT.js";import{r as re}from"./app-primitives-BBXY6U2S.js";import{C as G,E as ie,S as ae,T as oe,_ as se,a as ce,b as le,i as ue,l as de,o as fe,s as pe,u as me,v as he,w as ge,x as _e,y as ve}from"./events-DJwBfKGM.js";import{i as ye,l as be,n as xe,o as Se,r as Ce,s as we,t as Te}from"./session-list-DPpH_zbz.js";import{n as Ee}from"./pick-system-directory-Wa63igLM.js";import{t as De}from"./usePagePrimaryAction-CWPC0C_f.js";import{i as Oe,t as ke}from"./runtime-capabilities-store-BxCUS5xR.js";import{n as Ae,t as K}from"./side-chat-context-Dr2QLUJA.js";import{t as je}from"./brand-DIEc3fK8.js";import{a as Me,n as Ne,t as q}from"./web-preview-events-o845ErdA.js";var J=e(r(),1);function Pe({notify:e}){let{t:r}=a(),i=ne(),[o,s]=(0,J.useState)([]),[c,u]=(0,J.useState)(()=>n.getItem(l.activeSession)||``),[d,f]=(0,J.useState)({}),[p,m]=(0,J.useState)(!0),[h,g]=(0,J.useState)(!0),[_,y]=(0,J.useState)(``),[b,x]=(0,J.useState)(0),S=(0,J.useRef)(!0),[C,w]=(0,J.useState)(``),[T,E]=(0,J.useState)(()=>r(`chat:chatPage.waitingForConfiguration`)),[O,j]=(0,J.useState)([]),M=(0,J.useRef)(o),N=(0,J.useRef)(d),P=(0,J.useRef)(new Map),I=(0,J.useRef)(new Map),ee=(0,J.useRef)(new Map),L=(0,J.useRef)(new Set),[R]=(0,J.useState)(Ce),z=(0,J.useCallback)(e=>{let t=M.current,n=typeof e==`function`?e(t):e;return M.current=n,s(n),n},[]);(0,J.useEffect)(()=>ve(window,e=>{R.record(e),z(t=>xe(t,e))}),[R,z]),(0,J.useEffect)(()=>he(window,e=>{z(t=>Te(t,e))}),[z]);let B=(0,J.useCallback)(e=>{let t=L.current.size?Object.fromEntries(Object.entries(e).filter(([e])=>!L.current.has(e))):e,n=N.current;N.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=P.current.get(e);if(r)for(let e of[...r])e()}},[i]);(0,J.useEffect)(()=>se(window,({deletedIds:e})=>{R.remove(e);let t=new Set(e),n=z(e=>e.filter(e=>!t.has(e.id)));u(e=>t.has(e)?n[0]?.id||``:e);let r=N.current;e.some(e=>e in r)&&B(Object.fromEntries(Object.entries(r).filter(([e])=>!t.has(e))))}),[B,R,z]);let V=(0,J.useCallback)((e,t)=>{let n=P.current.get(e)||new Set;return n.add(t),P.current.set(e,n),()=>{n.delete(t),n.size||P.current.delete(e)}},[]),te=(0,J.useCallback)(e=>N.current[e]||A,[]),H=(0,J.useCallback)((e,t)=>{if(!e||L.current.has(e))return;let n=N.current,r=n[e]||A,i=k(r,t);i!==r&&B({...n,[e]:i})},[B]),W=(0,J.useCallback)((e,{panelOpen:t=!1,localStreamOwned:n=!1}={})=>{if(!e||t||n||ee.current.has(e))return!1;let r=N.current,i=r[e];if(!i||F(i))return!1;let a={...r};return delete a[e],B(a),!0},[B]),re=(0,J.useCallback)(e=>{if(!e)return;L.current.add(e);let t={...N.current};delete t[e],B(t)},[B]),G=(0,J.useCallback)(e=>{if(L.current.has(e))return()=>{};let t=ee.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),W(e))}},[W]),ie=(0,J.useCallback)(async(e,{preserveExistingOnEmpty:t=!1}={})=>{let n=R.getRevision(),r=await U.listSessions(),i=t&&!r.sessions.length&&M.current.length?M.current:R.reconcile(r.sessions,n);return z(i),u(e||(e=>i.some(t=>t.id===e)?e:i[0]?.id||``)),pe(),i},[R,z]),ae=(0,J.useCallback)((t=``,{inheritRecentCwd:n=!1,creationKey:a=`global`}={})=>{let o=I.current.get(a);if(o)return o;let s=(async()=>{try{w(``);let a=await U.createSession(r(`chat:chatPage.newChat`),Se(t,M.current,n));return u(a.id),z(e=>ye(e,[a])),i.setQueryData([`sessions`],e=>e&&{...e,sessions:ye(e.sessions,[a])}),H(a.id,{messages:[],tools:[],approvals:[],queuedInputs:[],permissionMode:a.permissionMode||`ask`,executionMode:a.executionMode||`approval-required`,runMode:a.runMode||`plan`,goal:a.goal||null,plan:v(a,null),contextUsage:a.contextUsage||null,sessionUsage:a.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:``}),e(r(`chat:chatPage.newChatCreated`)),a.id}catch(e){return w(D(e)),``}})();return I.current.set(a,s),s.finally(()=>{I.current.get(a)===s&&I.current.delete(a)}),s},[e,i,r,H,z]),oe=(0,J.useCallback)(()=>{S.current||(S.current=!0,g(!0),x(e=>e+1))},[]);(0,J.useEffect)(()=>{let i=!0;S.current=!0,g(!0),y(``),m(!M.current.length);let a=R.getRevision();return Promise.all([U.listSessions({refresh:b>0}),U.getConfig({refresh:b>0})]).then(async([o,s])=>{if(!i)return;E(s.model?`${s.provider}/${s.model}`:r(`chat:chatPage.noModelConfigured`)),j(s.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 c=o.sessions;if(!c.length&&(I.current.size||Object.keys(N.current).length)){if(await Promise.all(I.current.values()),!i)return;a=R.getRevision(),c=(await U.listSessions()).sessions}if(c.length||(c=[await U.createSession(r(`chat:chatPage.newChat`))]),!i)return;c=R.reconcile(c,a),z(e=>ye(e,c));for(let e of c)H(e.id,{team:e.team||null,agents:e.agents||[],plan:v(e,null),...e.streaming?{streaming:!0,recovering:!0,loaded:!1,error:``}:{}});let d=n.getItem(l.activeSession),f=new Set([...c.map(e=>e.id),...Object.keys(N.current)]);if(u(e=>f.has(e)?e:d&&f.has(d)?d:c[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&&y(D(e))}}).finally(()=>{i&&(S.current=!1,g(!1),m(!1))}),()=>{i=!1,S.current=!1}},[b,e,r,R,H,z]),(0,J.useEffect)(()=>{c?n.setItem(l.activeSession,c):n.removeItem(l.activeSession)},[c]);let ce=o.find(e=>e.id===c),le=(d[c]||A).model||ce?.model||``;return(0,J.useEffect)(()=>{fe(c,le)},[c,le]),(0,J.useEffect)(()=>(document.title=ce?.name?`${ce.name} · ${je}`:je,()=>{document.title=je}),[ce?.name]),{sessions:o,sessionsRef:M,activeId:c,setActiveId:u,sessionStates:d,sessionStatesRef:N,loading:p,initializing:h,initializationError:_,retryInitialization:oe,globalError:C,setGlobalError:w,defaultModel:T,availableModels:O,updateSessions:z,replaceSessionStates:B,updateSessionState:H,releaseSessionState:W,retainSessionState:G,discardSessionState:re,subscribeSessionState:V,getSessionState:te,refreshSessions:ie,createSessionRecord:ae}}var Fe={minimumWidth:100,minimumHeight:100};function Ie({sessions:e,sessionsRef:t,sessionStates:n,activeId:r,setActiveId:i,loading:o,localStreamSessionsRef:s,loadSessionMessages:c,releaseSessionState:u,singleSessionLayout:d,notify:f}){let{t:p}=a(),[h,g]=(0,J.useState)(0),v=(0,J.useRef)(d);v.current=d;let y=d,b=(0,J.useRef)(null),x=(0,J.useRef)(!1),S=(0,J.useRef)([]),C=(0,J.useRef)(void 0),w=(0,J.useRef)(null),T=(0,J.useRef)(null),E=(0,J.useRef)(null),D=(0,J.useRef)(y);D.current=y;let O=(0,J.useRef)(null),k=(0,J.useRef)(!1),[A,j]=(0,J.useState)(null),M=(0,J.useRef)(null),[N,P]=(0,J.useState)(!1),F=(0,J.useRef)(!1),[I,ee]=(0,J.useState)(!1),L=(0,J.useRef)(!1),[R,z]=(0,J.useState)([]);(0,J.useEffect)(()=>{!d||!r||z(e=>e.includes(r)?e:[...e,r])},[r,d]);let B=(0,J.useMemo)(()=>{let t=new Set(e.map(e=>e.id));return[...R,...ie(A?.layout),r].filter((e,n,r)=>e&&t.has(e)&&r.indexOf(e)===n)},[r,R,e,A]);(0,J.useEffect)(()=>{let e=!0;return te(`/api/settings/chat-dock-layout`).then(t=>{if(!e)return;let n=ge(t);F.current=t==null||n!==null,ee(!F.current),M.current=n,j(n),P(!0)}).catch(()=>{e&&(ee(!0),P(!0))}),()=>{e=!1}},[]),(0,J.useEffect)(()=>{d||!I||L.current||(L.current=!0,f(p(`chat:chatPage.layoutReadFailed`),`error`))},[I,f,d,p]);let V=(0,J.useCallback)(()=>{k.current||(k.current=!0,(async()=>{do{for(;O.current;){let e=O.current;O.current=null;try{await te(`/api/settings/chat-dock-layout`,{method:`PUT`,body:e})}catch{}}k.current=!1,O.current&&(k.current=!0)}while(k.current)})())},[]),H=(0,J.useCallback)(e=>{O.current=e,V()},[V]),ne=(0,J.useCallback)((e=b.current)=>{if(!x.current)return!1;window.clearTimeout(C.current),C.current=void 0;let t=w.current;if(e)try{let n=le(e.toJSON(),e.activePanel?.id||``);M.current=n,t=JSON.stringify(n)}catch{}return!t||!F.current?!1:(H(t),w.current=null,!0)},[H]),U=(0,J.useCallback)((e=b.current)=>{if(!e||!x.current)return;let t;try{let n=le(e.toJSON(),e.activePanel?.id||``);M.current=n,t=JSON.stringify(n)}catch{return}F.current&&(w.current=t,window.clearTimeout(C.current),C.current=window.setTimeout(()=>{C.current=void 0,!(!x.current||b.current!==e)&&(H(t),w.current===t&&(w.current=null))},180))},[H]),W=(0,J.useCallback)((e,n=`open`,r)=>{if(v.current)return T.current={sessionId:e,disposition:`open`},e&&z(t=>t.includes(e)?t:[...t,e]),i(e),!0;let a=t.current.find(t=>t.id===e),o=b.current;if(!a||!o||!x.current)return T.current={sessionId:e,disposition:n,targetGroupId:r},!1;let s=D.current?`open`:n,l=G(e),u=o.getPanel(l),d=o.activePanel,f=r?o.groups.find(e=>e.id===r):void 0;if(u)return f&&u.group!==f&&u.api.moveTo({group:f}),s!==`open`&&(d&&u.id!==d.id?u.api.moveTo({group:d.group,position:_e(s)}):u.group.size>1&&u.api.moveTo({group:u.group,position:_e(s)})),u.api.setActive(),i(e),!0;let m=f||o.activeGroup,h=s===`open`?m?{referenceGroup:m}:void 0:d?{referencePanel:d,direction:s}:{direction:s};return o.addPanel({id:l,component:`session`,title:a.name||p(`chat:chatPage.untitledChat`),params:{sessionId:e},renderer:`always`,...Fe,...h?{position:h}:{}}),i(e),c(e,{limit:40}),!0},[c,t,i,p]),re=(0,J.useCallback)(e=>{let t=b.current;if(!t||!x.current)return E.current=e,!1;let n=t.getPanel(_),r=m(e.url,p(`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=D.current?t.activeGroup?{referenceGroup:t.activeGroup}:void 0:i?{referencePanel:i,direction:`right`}:{direction:`right`};return t.addPanel({id:_,component:`webPreview`,title:r,params:{url:e.url},renderer:`always`,minimumWidth:360,...a?{position:a}:{}}),!0},[p]),ue=(0,J.useCallback)((e,t)=>{let n=b.current?.getPanel(e);if(n){if(D.current){f(p(`chat:chatPage.onNarrowScreensChatsStayInASingleTabGroup`),`info`);return}if(n.group.size<=1){f(p(`chat:chatPage.thisGroupHasOnlyOneChatChooseAnotherChatFromTheSessionListToCreateASplit`),`info`);return}n.api.moveTo({group:n.group,position:_e(t)}),n.api.setActive()}},[f,p]),de=(0,J.useCallback)(e=>{b.current?.getPanel(e)?.api.close()},[]),fe=(0,J.useCallback)(e=>u(e,{panelOpen:!!b.current?.getPanel(G(e)),localStreamOwned:s.current.has(e)}),[s,u]),pe=(0,J.useCallback)(({api:e})=>{b.current&&b.current!==e&&(x.current=!1);for(let e of S.current)e.dispose();S.current=[],b.current=e,S.current.push(e.onDidActivePanelChange(({panel:t})=>{let n=oe(t);(n||!t)&&i(n),U(e)}),e.onDidLayoutChange(()=>U(e)),e.onDidMovePanel(()=>ne(e)),e.onDidAddPanel(e=>{let t=oe(e);t&&c(t,{limit:40})}),e.onDidRemovePanel(e=>{let t=oe(e);t&&queueMicrotask(()=>fe(t))})),g(e=>e+1)},[c,ne,fe,U,i]);return(0,J.useEffect)(()=>{if(x.current)for(let e of Object.keys(n))fe(e)},[fe,n]),(0,J.useEffect)(()=>{let e=e=>{let t=e.detail,n=t?.sessionId||t?.id;n&&(localStorage.removeItem(l.sessionOpenRequest),W(n,t?.disposition||`open`),t?.targetEntryId&&c(n,{force:!0,limit:40}))};return window.addEventListener(ce,e),()=>window.removeEventListener(ce,e)},[c,W]),(0,J.useEffect)(()=>se(window,({deletedIds:e})=>{let n=new Set(e);z(e=>e.filter(e=>!n.has(e))),T.current&&n.has(T.current.sessionId)&&(T.current=null);let r=b.current;if(!r||!x.current)return;let a=e.flatMap(e=>{let t=r.getPanel(G(e));return t?[t]:[]});for(let e of a)e.api.close();if(a.length&&!r.panels.some(e=>oe(e))){let e=t.current.find(e=>!n.has(e.id));e?W(e.id):i(``)}}),[W,t,i]),(0,J.useEffect)(()=>{let e=e=>{let t=e.detail;t?.url&&(localStorage.removeItem(l.webPreviewRequest),re(t))};return window.addEventListener(q,e),()=>window.removeEventListener(q,e)},[re]),(0,J.useEffect)(()=>{let e=()=>{document.visibilityState===`hidden`&&ne()},t=()=>ne();return document.addEventListener(`visibilitychange`,e),window.addEventListener(`pagehide`,t),()=>{document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`pagehide`,t)}},[ne]),(0,J.useLayoutEffect)(()=>()=>{let e=b.current;ne(e),x.current=!1,window.clearTimeout(C.current),C.current=void 0;for(let e of S.current)e.dispose();S.current=[],b.current=null},[ne,d]),(0,J.useEffect)(()=>{if(!h||d||!N||o||x.current||!b.current)return;let t=b.current,n=new Set(e.map(e=>e.id)),i=M.current;if(i)try{t.fromJSON({...i.layout,panels:Object.fromEntries(Object.entries(i.layout.panels).map(([e,t])=>[e,t.contentComponent===`session`?{...t,...Fe}:t]))});for(let e of[...t.panels]){if(e.api.component!==`session`)continue;let r=oe(e);n.has(r)||t.removePanel(e)}}catch{F.current=!1,ee(!0),t.clear()}if(!t.panels.length){let n=ae({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:G(r),component:`session`,title:n.name||p(`chat:chatPage.untitledChat`),params:{sessionId:r},renderer:`always`,...Fe,...i?{position:{referenceGroup:i}}:{},inactive:!!i});i||=a.group}}for(let n of t.panels){let t=e.find(e=>e.id===oe(n));t&&n.api.setTitle(t.name||p(`chat:chatPage.untitledChat`))}x.current=!0,localStorage.removeItem(l.chatMode);let a=T.current||me();T.current=null,a?(W(a.sessionId,a.disposition,a.targetGroupId),a.targetEntryId&&c(a.sessionId,{force:!0,limit:40})):(t.getPanel(i?.activePanelId||G(r))||t.panels[0])?.api.setActive();let s=E.current||Ne();E.current=null,s&&re(s),U(t)},[r,N,h,c,o,W,re,U,e,d,A,p]),(0,J.useEffect)(()=>{if(!(!x.current||!b.current))for(let t of e)b.current.getPanel(G(t.id))?.api.setTitle(t.name||p(`chat:chatPage.untitledChat`))},[e,p]),{compactDock:y,mobileSessionIds:B,openSessionInDock:W,splitDockPanel:ue,closeDockPanel:de,onDockReady:pe,getTabContextMenuItems:(0,J.useCallback)(({panel:e})=>{let t={label:p(`chat:focusSession.closeTab`),action:()=>de(e.id)};return y||e.group.size<=1?[t]:[{label:p(`chat:chatPage.splitToLeft`),action:()=>ue(e.id,`left`)},{label:p(`chat:chatPage.splitToRight`),action:()=>ue(e.id,`right`)},{label:p(`chat:chatPage.splitToTop`),action:()=>ue(e.id,`above`)},{label:p(`chat:chatPage.splitToBottom`),action:()=>ue(e.id,`below`)},`separator`,t]},[de,y,ue,p])}}function Le(e){return!!e?.agents?.some(e=>[`queued`,`starting`,`running`].includes(String(e.status)))}function Re(e,{localStreamOwned:t=!1}={}){return!e||t?!1:!!(e.recovering||e.streaming||e.approvals?.length||Le(e))}function ze(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function Be(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 Ve(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),...Be(e.messages,t.messages)]:Be(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 He(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 Ue(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=He(e,t,Ve(e,t));return{...b({...e,...s.page},t),tools:t.streaming?t.tools||[]:M(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:ze(t,e.team),plan:v(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 We({sessionStates:e,sessionStatesRef:t,localStreamSessionsRef:n,streamGenerationRef:r,updateSessionState:i,updateSessions:a}){let o=(0,J.useRef)(new Set),s=(0,J.useRef)({timer:null,activeSessions:new Set}),c=(0,J.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 U.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=>Ue(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:ze(o,n.team),plan:v(o,n.plan??null)}:n))}catch(t){n.current.has(e)||i(e,{recovering:!1,loading:!1,error:D(t)})}finally{o.current.delete(e)}},[n,t,r,i,a]),l=(0,J.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 U.getMessages(e,{limit:r});i(e,e=>e.streaming?{...e,loaded:!0,loading:!1,pageSize:Math.max(e.pageSize||0,r)}:{...e,...Ve(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:D(t)})}}},[t,c,i,a]),u=(0,J.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 U.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:D(t)}),!1}},[t,i]),d=(0,J.useCallback)(()=>{s.current.timer&&window.clearInterval(s.current.timer),s.current.timer=null,s.current.activeSessions.clear()},[]),p=(0,J.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(!Re(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,J.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))Re(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,J.useEffect)(()=>d,[d]),{syncLiveSession:c,loadSessionMessages:l,loadOlderMessages:u,liveSyncInFlightRef:o}}function Ge(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 Ke(e,{intervalMs:t=48}={}){let n=null,r=null,i=Ge(()=>{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 qe(e,{intervalMs:t=80}={}){let n=new Map,r=null,i=Ge(()=>{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 Je(e){return e>=55296&&e<=56319}function Ye(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&&Je(e.charCodeAt(r-1))?r-1:r}var Xe=50;function Ze(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(Xe))),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<Xe||v!=null&&e-v+.001<Xe){g=l(E);return}_=e;let a=m;p.startsWith(m)||(m=p.slice(0,Ye(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(Je(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&&Je(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 Qe=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(`,`)),$e=new Map,Y=[];function et(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 tt(e,t){let n=String(t.id||``),r=String(t.operation||``);if(!n||!Qe.has(r))return;let i=Date.parse(String(t.expiresAt||``));if(Number.isFinite(i)&&i<=Date.now()){await U.resolveMobileOperation(e,n,{ok:!1,error:`移动设备操作请求已过期。`});return}try{let i=await et(`mobile_execute_device_operation`,{request:{id:n,operation:r,parameters:t.parameters&&typeof t.parameters==`object`?t.parameters:void 0}});await U.resolveMobileOperation(e,n,{ok:!0,result:i})}catch(t){await U.resolveMobileOperation(e,n,{ok:!1,error:t instanceof Error?t.message:String(t)})}finally{Y.push(n),Y.length>128&&Y.splice(0,Y.length-128)}}function nt(e){let t=String(e.id||``);!t||Y.includes(t)||(Y.push(t),Y.length>128&&Y.splice(0,Y.length-128))}function rt(e,t){let n=String(t.id||``);if(!n||Y.includes(n)||$e.has(n))return;let r=tt(e,t).catch(()=>{}).finally(()=>$e.delete(n));$e.set(n,r)}function it(e){let t=String(e.path||``).trim().replaceAll(`\\`,`/`).toLowerCase();return t?`path:${t}`:`id:${e.id}`}function at(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function ot(e,{agentId:t,responseText:n,data:r,finishedAt:i,error:a,preserveDisplayedText:o}){let s=!!a,c=r.lifecycle||e.lifecycle||{},l=b(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:v(r,e.plan),team:at(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:M(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 st({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;g({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=>({...b(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:v(f,e.plan),team:at(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||y(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:at(f,e.team),plan:v(f,e.plan??null)}));else if(i===`queue_update`)f.queuedInputs?.length&&(l.queuedDuringRun=!0),r(e,e=>b(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:at(f,e.team),agents:f.agents||[],currentActivity:e.currentActivity?.type===`tool`?e.currentActivity:t||e.currentActivity,activityFeed:t?O(e.activityFeed,t):e.activityFeed,lastActivityAt:f.agent?.lastActivityAt||p}}),Object.hasOwn(f,`team`)&&u(e=>({...e,team:at(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:O(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:O(e.activityFeed,t),lastActivityAt:f.finishedAt||p}});else if(i===`text_patch`)l.responseRenderingStreaming=!0,l.responseText=V(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=V(l.thinkingText,f).slice(-6e3);let e=[l.thinkingPrefix,l.thinkingText].filter(Boolean).join(`
|
|
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/SessionContextPanel-lu9F9AJg.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-BSZKFkMb.js","assets/i18n-7QvbQzOQ.js","assets/vendor-router-CZg2bCPV.js","assets/index-iBrSU61i.js","assets/index-CdASiNlI.css","assets/vendor-state-GkUciC5H.js","assets/dropdown-menu-DmL4pJTo.js","assets/dist-Cfh4kzCK.js","assets/dist-B_a0oV4U.js","assets/dist-swnK7PHk.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/popover-BBuzaBfd.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/earth-Ddy13fHh.js","assets/external-link-CEQqPcqc.js","assets/session-streaming-state-llCTupbI.js","assets/collapsible-C__hRcbA.js","assets/tabs-DQYVDdOp.js","assets/tooltip-Bxq7c2mZ.js","assets/dist-BlIIpW6W.js","assets/check-2vYc6QaP.js","assets/chevron-down-CxtxIjiP.js","assets/chevron-left-BAtyp3_6.js","assets/chevron-right-C3t2Rckj.js","assets/circle-dot-nVrXgDaG.js","assets/clock-3-CBHGbD_G.js","assets/code-xml-BrUXrBax.js","assets/download-BCfIiuaL.js","assets/shield-alert-CvFOTe9h.js","assets/file-diff-GxOMJkLj.js","assets/file-Bllajneu.js","assets/folder-open-FIShC5Qk.js","assets/info-DATxy0fb.js","assets/list-checks-B5Jl4aiO.js","assets/loader-circle-BOwQzHB-.js","assets/web-preview-CQbpHjt1.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/undo-2-CJE_nRTk.js","assets/x-07u4-129.js","assets/api-Dzobr-o_.js","assets/http-DphgzWtw.js","assets/abort-signal-f4JsiYKX.js","assets/button-CQA36izu.js","assets/chat-api-DfnvubiW.js","assets/startup-queries-CAQZvUIR.js","assets/query-Bj-DUNYq.js","assets/mutation-CEbxdVYy.js","assets/local-path-reveal-DWhkyox-.js","assets/dialog-D-ER2p-D.js","assets/dist-BdkTa5R3.js","assets/input-CvjGYteF.js","assets/format-BRFKAYMT.js","assets/card-BdUpL1KB.js","assets/events-Bwv6HmwM.js","assets/vendor-motion-DSW3wzXK.js","assets/MarkdownMessage-H1336cMr.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/copy-DHmIFc52.js","assets/route-context-DvWDul4T.js","assets/alert-QoPGoIY6.js","assets/GitDiffViewer-xm2LnN9r.js","assets/message-square-SKjZyY3v.js","assets/plus-fQbSqB1n.js","assets/SessionFilesPane-BIRQ_hHi.js","assets/session-change-summary-api-DFgTzTci.js","assets/shortcuts-BO-h6OmP.js","assets/sheet--Om3LZxh.js","assets/web-preview-BPNd1LUd.js","assets/side-chat-context-Dr2QLUJA.js","assets/ChatDockView-DoGtrBpY.js","assets/arrow-left-B8oVrQ2S.js","assets/arrow-right-DqLOhpA2.js","assets/web-preview-panel-DVQxVfig.js","assets/AppSelect-D149YYg1.js","assets/use-mobile-YXncArOq.js","assets/progress-C_G6VqQ_.js","assets/pin-Dc2zE4cS.js","assets/bot-B3TaBp_T.js","assets/circle-check-iEdCm3Pw.js","assets/circle-x-Ba4QL7Ec.js","assets/ThemeToggleButton-CXXbLtcY.js","assets/sun-DBWBo3We.js","assets/ui-store-2wpnH8Kf.js","assets/file-text-N9JICX6E.js","assets/WorkbenchSidebarToggle-AgjfcT29.js","assets/sidebar-CfWEKOIK.js","assets/separator-BDICnhEL.js","assets/panel-left-C_lYsiIA.js","assets/paperclip-BCXrwYpb.js","assets/pencil-U08v_vV9.js","assets/play-DNDjDNGn.js","assets/search-D0mqDaf_.js","assets/settings-2-CXJjXJS9.js","assets/settings-QX0oWnVK.js","assets/sliders-horizontal-Dryf1XyC.js","assets/square-terminal-BVG6cUT1.js","assets/workflow-Bg94dy8I.js","assets/wrench-6pg6_bqI.js","assets/client-store-DPMvgPNS.js","assets/useQuery-DdcpUQhO.js","assets/app-primitives-BBXY6U2S.js","assets/switch-Ci_hmu39.js","assets/runtime-capabilities-store-DaWPY5y-.js","assets/tool-labels-DJzY62Yr.js","assets/speech-session-DKjw0mV_.js","assets/ellipsis-CfGKfbq6.js","assets/vendor-dockview-Bf3Gg83W.js","assets/vendor-dockview-D5adAaCg.css"])))=>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-iBrSU61i.js";import{i as r,r as i}from"./vendor-react-DwNgTV1j.js";import{t as a}from"./use-i18n-BSZKFkMb.js";import{a as o,i as s,o as c}from"./vendor-state-GkUciC5H.js";import{t as l}from"./storage-BpAqa-YY.js";import{t as u}from"./utils-C8uzG5AZ.js";import{a as d,c as f,l as p,n as m,o as h,s as g,t as _}from"./web-preview-panel-DVQxVfig.js";import{C as v,S as y,_ as b,a as x,b as S,c as C,f as w,g as T,h as E,i as D,l as O,m as k,p as A,t as j,u as M,v as N,x as P,y as F}from"./session-streaming-state-llCTupbI.js";import{t as I}from"./refresh-cw-TbWxTY4K.js";import{r as ee}from"./use-mobile-YXncArOq.js";import{i as L,n as R,o as z,r as B}from"./http-DphgzWtw.js";import{n as V,t as te}from"./api-Dzobr-o_.js";import{t as H}from"./client-store-DPMvgPNS.js";import{r as ne}from"./useQuery-DdcpUQhO.js";import{t as U}from"./chat-api-DfnvubiW.js";import{i as W}from"./format-BRFKAYMT.js";import{r as re}from"./app-primitives-BBXY6U2S.js";import{C as G,E as ie,S as ae,T as oe,_ as se,a as ce,b as le,i as ue,l as de,o as fe,s as pe,u as me,v as he,w as ge,x as _e,y as ve}from"./events-Bwv6HmwM.js";import{i as ye,l as be,n as xe,o as Se,r as Ce,s as we,t as Te}from"./session-list-CMaoK_ZX.js";import{n as Ee}from"./pick-system-directory-R1F5WyaB.js";import{t as De}from"./usePagePrimaryAction-CWPC0C_f.js";import{i as Oe,t as ke}from"./runtime-capabilities-store-DaWPY5y-.js";import{n as Ae,t as K}from"./side-chat-context-Dr2QLUJA.js";import{t as je}from"./brand-DIEc3fK8.js";import{a as Me,n as Ne,t as q}from"./web-preview-events-o845ErdA.js";var J=e(r(),1);function Pe({notify:e}){let{t:r}=a(),i=ne(),[o,s]=(0,J.useState)([]),[c,u]=(0,J.useState)(()=>n.getItem(l.activeSession)||``),[d,f]=(0,J.useState)({}),[p,m]=(0,J.useState)(!0),[h,g]=(0,J.useState)(!0),[_,y]=(0,J.useState)(``),[b,x]=(0,J.useState)(0),S=(0,J.useRef)(!0),[C,w]=(0,J.useState)(``),[T,E]=(0,J.useState)(()=>r(`chat:chatPage.waitingForConfiguration`)),[O,j]=(0,J.useState)([]),M=(0,J.useRef)(o),N=(0,J.useRef)(d),P=(0,J.useRef)(new Map),I=(0,J.useRef)(new Map),ee=(0,J.useRef)(new Map),L=(0,J.useRef)(new Set),[R]=(0,J.useState)(Ce),z=(0,J.useCallback)(e=>{let t=M.current,n=typeof e==`function`?e(t):e;return M.current=n,s(n),n},[]);(0,J.useEffect)(()=>ve(window,e=>{R.record(e),z(t=>xe(t,e))}),[R,z]),(0,J.useEffect)(()=>he(window,e=>{z(t=>Te(t,e))}),[z]);let B=(0,J.useCallback)(e=>{let t=L.current.size?Object.fromEntries(Object.entries(e).filter(([e])=>!L.current.has(e))):e,n=N.current;N.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=P.current.get(e);if(r)for(let e of[...r])e()}},[i]);(0,J.useEffect)(()=>se(window,({deletedIds:e})=>{R.remove(e);let t=new Set(e),n=z(e=>e.filter(e=>!t.has(e.id)));u(e=>t.has(e)?n[0]?.id||``:e);let r=N.current;e.some(e=>e in r)&&B(Object.fromEntries(Object.entries(r).filter(([e])=>!t.has(e))))}),[B,R,z]);let V=(0,J.useCallback)((e,t)=>{let n=P.current.get(e)||new Set;return n.add(t),P.current.set(e,n),()=>{n.delete(t),n.size||P.current.delete(e)}},[]),te=(0,J.useCallback)(e=>N.current[e]||A,[]),H=(0,J.useCallback)((e,t)=>{if(!e||L.current.has(e))return;let n=N.current,r=n[e]||A,i=k(r,t);i!==r&&B({...n,[e]:i})},[B]),W=(0,J.useCallback)((e,{panelOpen:t=!1,localStreamOwned:n=!1}={})=>{if(!e||t||n||ee.current.has(e))return!1;let r=N.current,i=r[e];if(!i||F(i))return!1;let a={...r};return delete a[e],B(a),!0},[B]),re=(0,J.useCallback)(e=>{if(!e)return;L.current.add(e);let t={...N.current};delete t[e],B(t)},[B]),G=(0,J.useCallback)(e=>{if(L.current.has(e))return()=>{};let t=ee.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),W(e))}},[W]),ie=(0,J.useCallback)(async(e,{preserveExistingOnEmpty:t=!1}={})=>{let n=R.getRevision(),r=await U.listSessions(),i=t&&!r.sessions.length&&M.current.length?M.current:R.reconcile(r.sessions,n);return z(i),u(e||(e=>i.some(t=>t.id===e)?e:i[0]?.id||``)),pe(),i},[R,z]),ae=(0,J.useCallback)((t=``,{inheritRecentCwd:n=!1,creationKey:a=`global`}={})=>{let o=I.current.get(a);if(o)return o;let s=(async()=>{try{w(``);let a=await U.createSession(r(`chat:chatPage.newChat`),Se(t,M.current,n));return u(a.id),z(e=>ye(e,[a])),i.setQueryData([`sessions`],e=>e&&{...e,sessions:ye(e.sessions,[a])}),H(a.id,{messages:[],tools:[],approvals:[],queuedInputs:[],permissionMode:a.permissionMode||`ask`,executionMode:a.executionMode||`approval-required`,runMode:a.runMode||`plan`,goal:a.goal||null,plan:v(a,null),contextUsage:a.contextUsage||null,sessionUsage:a.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:``}),e(r(`chat:chatPage.newChatCreated`)),a.id}catch(e){return w(D(e)),``}})();return I.current.set(a,s),s.finally(()=>{I.current.get(a)===s&&I.current.delete(a)}),s},[e,i,r,H,z]),oe=(0,J.useCallback)(()=>{S.current||(S.current=!0,g(!0),x(e=>e+1))},[]);(0,J.useEffect)(()=>{let i=!0;S.current=!0,g(!0),y(``),m(!M.current.length);let a=R.getRevision();return Promise.all([U.listSessions({refresh:b>0}),U.getConfig({refresh:b>0})]).then(async([o,s])=>{if(!i)return;E(s.model?`${s.provider}/${s.model}`:r(`chat:chatPage.noModelConfigured`)),j(s.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 c=o.sessions;if(!c.length&&(I.current.size||Object.keys(N.current).length)){if(await Promise.all(I.current.values()),!i)return;a=R.getRevision(),c=(await U.listSessions()).sessions}if(c.length||(c=[await U.createSession(r(`chat:chatPage.newChat`))]),!i)return;c=R.reconcile(c,a),z(e=>ye(e,c));for(let e of c)H(e.id,{team:e.team||null,agents:e.agents||[],plan:v(e,null),...e.streaming?{streaming:!0,recovering:!0,loaded:!1,error:``}:{}});let d=n.getItem(l.activeSession),f=new Set([...c.map(e=>e.id),...Object.keys(N.current)]);if(u(e=>f.has(e)?e:d&&f.has(d)?d:c[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&&y(D(e))}}).finally(()=>{i&&(S.current=!1,g(!1),m(!1))}),()=>{i=!1,S.current=!1}},[b,e,r,R,H,z]),(0,J.useEffect)(()=>{c?n.setItem(l.activeSession,c):n.removeItem(l.activeSession)},[c]);let ce=o.find(e=>e.id===c),le=(d[c]||A).model||ce?.model||``;return(0,J.useEffect)(()=>{fe(c,le)},[c,le]),(0,J.useEffect)(()=>(document.title=ce?.name?`${ce.name} · ${je}`:je,()=>{document.title=je}),[ce?.name]),{sessions:o,sessionsRef:M,activeId:c,setActiveId:u,sessionStates:d,sessionStatesRef:N,loading:p,initializing:h,initializationError:_,retryInitialization:oe,globalError:C,setGlobalError:w,defaultModel:T,availableModels:O,updateSessions:z,replaceSessionStates:B,updateSessionState:H,releaseSessionState:W,retainSessionState:G,discardSessionState:re,subscribeSessionState:V,getSessionState:te,refreshSessions:ie,createSessionRecord:ae}}var Fe={minimumWidth:100,minimumHeight:100};function Ie({sessions:e,sessionsRef:t,sessionStates:n,activeId:r,setActiveId:i,loading:o,localStreamSessionsRef:s,loadSessionMessages:c,releaseSessionState:u,singleSessionLayout:d,notify:f}){let{t:p}=a(),[h,g]=(0,J.useState)(0),v=(0,J.useRef)(d);v.current=d;let y=d,b=(0,J.useRef)(null),x=(0,J.useRef)(!1),S=(0,J.useRef)([]),C=(0,J.useRef)(void 0),w=(0,J.useRef)(null),T=(0,J.useRef)(null),E=(0,J.useRef)(null),D=(0,J.useRef)(y);D.current=y;let O=(0,J.useRef)(null),k=(0,J.useRef)(!1),[A,j]=(0,J.useState)(null),M=(0,J.useRef)(null),[N,P]=(0,J.useState)(!1),F=(0,J.useRef)(!1),[I,ee]=(0,J.useState)(!1),L=(0,J.useRef)(!1),[R,z]=(0,J.useState)([]);(0,J.useEffect)(()=>{!d||!r||z(e=>e.includes(r)?e:[...e,r])},[r,d]);let B=(0,J.useMemo)(()=>{let t=new Set(e.map(e=>e.id));return[...R,...ie(A?.layout),r].filter((e,n,r)=>e&&t.has(e)&&r.indexOf(e)===n)},[r,R,e,A]);(0,J.useEffect)(()=>{let e=!0;return te(`/api/settings/chat-dock-layout`).then(t=>{if(!e)return;let n=ge(t);F.current=t==null||n!==null,ee(!F.current),M.current=n,j(n),P(!0)}).catch(()=>{e&&(ee(!0),P(!0))}),()=>{e=!1}},[]),(0,J.useEffect)(()=>{d||!I||L.current||(L.current=!0,f(p(`chat:chatPage.layoutReadFailed`),`error`))},[I,f,d,p]);let V=(0,J.useCallback)(()=>{k.current||(k.current=!0,(async()=>{do{for(;O.current;){let e=O.current;O.current=null;try{await te(`/api/settings/chat-dock-layout`,{method:`PUT`,body:e})}catch{}}k.current=!1,O.current&&(k.current=!0)}while(k.current)})())},[]),H=(0,J.useCallback)(e=>{O.current=e,V()},[V]),ne=(0,J.useCallback)((e=b.current)=>{if(!x.current)return!1;window.clearTimeout(C.current),C.current=void 0;let t=w.current;if(e)try{let n=le(e.toJSON(),e.activePanel?.id||``);M.current=n,t=JSON.stringify(n)}catch{}return!t||!F.current?!1:(H(t),w.current=null,!0)},[H]),U=(0,J.useCallback)((e=b.current)=>{if(!e||!x.current)return;let t;try{let n=le(e.toJSON(),e.activePanel?.id||``);M.current=n,t=JSON.stringify(n)}catch{return}F.current&&(w.current=t,window.clearTimeout(C.current),C.current=window.setTimeout(()=>{C.current=void 0,!(!x.current||b.current!==e)&&(H(t),w.current===t&&(w.current=null))},180))},[H]),W=(0,J.useCallback)((e,n=`open`,r)=>{if(v.current)return T.current={sessionId:e,disposition:`open`},e&&z(t=>t.includes(e)?t:[...t,e]),i(e),!0;let a=t.current.find(t=>t.id===e),o=b.current;if(!a||!o||!x.current)return T.current={sessionId:e,disposition:n,targetGroupId:r},!1;let s=D.current?`open`:n,l=G(e),u=o.getPanel(l),d=o.activePanel,f=r?o.groups.find(e=>e.id===r):void 0;if(u)return f&&u.group!==f&&u.api.moveTo({group:f}),s!==`open`&&(d&&u.id!==d.id?u.api.moveTo({group:d.group,position:_e(s)}):u.group.size>1&&u.api.moveTo({group:u.group,position:_e(s)})),u.api.setActive(),i(e),!0;let m=f||o.activeGroup,h=s===`open`?m?{referenceGroup:m}:void 0:d?{referencePanel:d,direction:s}:{direction:s};return o.addPanel({id:l,component:`session`,title:a.name||p(`chat:chatPage.untitledChat`),params:{sessionId:e},renderer:`always`,...Fe,...h?{position:h}:{}}),i(e),c(e,{limit:40}),!0},[c,t,i,p]),re=(0,J.useCallback)(e=>{let t=b.current;if(!t||!x.current)return E.current=e,!1;let n=t.getPanel(_),r=m(e.url,p(`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=D.current?t.activeGroup?{referenceGroup:t.activeGroup}:void 0:i?{referencePanel:i,direction:`right`}:{direction:`right`};return t.addPanel({id:_,component:`webPreview`,title:r,params:{url:e.url},renderer:`always`,minimumWidth:360,...a?{position:a}:{}}),!0},[p]),ue=(0,J.useCallback)((e,t)=>{let n=b.current?.getPanel(e);if(n){if(D.current){f(p(`chat:chatPage.onNarrowScreensChatsStayInASingleTabGroup`),`info`);return}if(n.group.size<=1){f(p(`chat:chatPage.thisGroupHasOnlyOneChatChooseAnotherChatFromTheSessionListToCreateASplit`),`info`);return}n.api.moveTo({group:n.group,position:_e(t)}),n.api.setActive()}},[f,p]),de=(0,J.useCallback)(e=>{b.current?.getPanel(e)?.api.close()},[]),fe=(0,J.useCallback)(e=>u(e,{panelOpen:!!b.current?.getPanel(G(e)),localStreamOwned:s.current.has(e)}),[s,u]),pe=(0,J.useCallback)(({api:e})=>{b.current&&b.current!==e&&(x.current=!1);for(let e of S.current)e.dispose();S.current=[],b.current=e,S.current.push(e.onDidActivePanelChange(({panel:t})=>{let n=oe(t);(n||!t)&&i(n),U(e)}),e.onDidLayoutChange(()=>U(e)),e.onDidMovePanel(()=>ne(e)),e.onDidAddPanel(e=>{let t=oe(e);t&&c(t,{limit:40})}),e.onDidRemovePanel(e=>{let t=oe(e);t&&queueMicrotask(()=>fe(t))})),g(e=>e+1)},[c,ne,fe,U,i]);return(0,J.useEffect)(()=>{if(x.current)for(let e of Object.keys(n))fe(e)},[fe,n]),(0,J.useEffect)(()=>{let e=e=>{let t=e.detail,n=t?.sessionId||t?.id;n&&(localStorage.removeItem(l.sessionOpenRequest),W(n,t?.disposition||`open`),t?.targetEntryId&&c(n,{force:!0,limit:40}))};return window.addEventListener(ce,e),()=>window.removeEventListener(ce,e)},[c,W]),(0,J.useEffect)(()=>se(window,({deletedIds:e})=>{let n=new Set(e);z(e=>e.filter(e=>!n.has(e))),T.current&&n.has(T.current.sessionId)&&(T.current=null);let r=b.current;if(!r||!x.current)return;let a=e.flatMap(e=>{let t=r.getPanel(G(e));return t?[t]:[]});for(let e of a)e.api.close();if(a.length&&!r.panels.some(e=>oe(e))){let e=t.current.find(e=>!n.has(e.id));e?W(e.id):i(``)}}),[W,t,i]),(0,J.useEffect)(()=>{let e=e=>{let t=e.detail;t?.url&&(localStorage.removeItem(l.webPreviewRequest),re(t))};return window.addEventListener(q,e),()=>window.removeEventListener(q,e)},[re]),(0,J.useEffect)(()=>{let e=()=>{document.visibilityState===`hidden`&&ne()},t=()=>ne();return document.addEventListener(`visibilitychange`,e),window.addEventListener(`pagehide`,t),()=>{document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`pagehide`,t)}},[ne]),(0,J.useLayoutEffect)(()=>()=>{let e=b.current;ne(e),x.current=!1,window.clearTimeout(C.current),C.current=void 0;for(let e of S.current)e.dispose();S.current=[],b.current=null},[ne,d]),(0,J.useEffect)(()=>{if(!h||d||!N||o||x.current||!b.current)return;let t=b.current,n=new Set(e.map(e=>e.id)),i=M.current;if(i)try{t.fromJSON({...i.layout,panels:Object.fromEntries(Object.entries(i.layout.panels).map(([e,t])=>[e,t.contentComponent===`session`?{...t,...Fe}:t]))});for(let e of[...t.panels]){if(e.api.component!==`session`)continue;let r=oe(e);n.has(r)||t.removePanel(e)}}catch{F.current=!1,ee(!0),t.clear()}if(!t.panels.length){let n=ae({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:G(r),component:`session`,title:n.name||p(`chat:chatPage.untitledChat`),params:{sessionId:r},renderer:`always`,...Fe,...i?{position:{referenceGroup:i}}:{},inactive:!!i});i||=a.group}}for(let n of t.panels){let t=e.find(e=>e.id===oe(n));t&&n.api.setTitle(t.name||p(`chat:chatPage.untitledChat`))}x.current=!0,localStorage.removeItem(l.chatMode);let a=T.current||me();T.current=null,a?(W(a.sessionId,a.disposition,a.targetGroupId),a.targetEntryId&&c(a.sessionId,{force:!0,limit:40})):(t.getPanel(i?.activePanelId||G(r))||t.panels[0])?.api.setActive();let s=E.current||Ne();E.current=null,s&&re(s),U(t)},[r,N,h,c,o,W,re,U,e,d,A,p]),(0,J.useEffect)(()=>{if(!(!x.current||!b.current))for(let t of e)b.current.getPanel(G(t.id))?.api.setTitle(t.name||p(`chat:chatPage.untitledChat`))},[e,p]),{compactDock:y,mobileSessionIds:B,openSessionInDock:W,splitDockPanel:ue,closeDockPanel:de,onDockReady:pe,getTabContextMenuItems:(0,J.useCallback)(({panel:e})=>{let t={label:p(`chat:focusSession.closeTab`),action:()=>de(e.id)};return y||e.group.size<=1?[t]:[{label:p(`chat:chatPage.splitToLeft`),action:()=>ue(e.id,`left`)},{label:p(`chat:chatPage.splitToRight`),action:()=>ue(e.id,`right`)},{label:p(`chat:chatPage.splitToTop`),action:()=>ue(e.id,`above`)},{label:p(`chat:chatPage.splitToBottom`),action:()=>ue(e.id,`below`)},`separator`,t]},[de,y,ue,p])}}function Le(e){return!!e?.agents?.some(e=>[`queued`,`starting`,`running`].includes(String(e.status)))}function Re(e,{localStreamOwned:t=!1}={}){return!e||t?!1:!!(e.recovering||e.streaming||e.approvals?.length||Le(e))}function ze(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function Be(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 Ve(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),...Be(e.messages,t.messages)]:Be(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 He(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 Ue(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=He(e,t,Ve(e,t));return{...b({...e,...s.page},t),tools:t.streaming?t.tools||[]:M(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:ze(t,e.team),plan:v(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 We({sessionStates:e,sessionStatesRef:t,localStreamSessionsRef:n,streamGenerationRef:r,updateSessionState:i,updateSessions:a}){let o=(0,J.useRef)(new Set),s=(0,J.useRef)({timer:null,activeSessions:new Set}),c=(0,J.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 U.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=>Ue(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:ze(o,n.team),plan:v(o,n.plan??null)}:n))}catch(t){n.current.has(e)||i(e,{recovering:!1,loading:!1,error:D(t)})}finally{o.current.delete(e)}},[n,t,r,i,a]),l=(0,J.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 U.getMessages(e,{limit:r});i(e,e=>e.streaming?{...e,loaded:!0,loading:!1,pageSize:Math.max(e.pageSize||0,r)}:{...e,...Ve(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:D(t)})}}},[t,c,i,a]),u=(0,J.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 U.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:D(t)}),!1}},[t,i]),d=(0,J.useCallback)(()=>{s.current.timer&&window.clearInterval(s.current.timer),s.current.timer=null,s.current.activeSessions.clear()},[]),p=(0,J.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(!Re(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,J.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))Re(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,J.useEffect)(()=>d,[d]),{syncLiveSession:c,loadSessionMessages:l,loadOlderMessages:u,liveSyncInFlightRef:o}}function Ge(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 Ke(e,{intervalMs:t=48}={}){let n=null,r=null,i=Ge(()=>{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 qe(e,{intervalMs:t=80}={}){let n=new Map,r=null,i=Ge(()=>{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 Je(e){return e>=55296&&e<=56319}function Ye(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&&Je(e.charCodeAt(r-1))?r-1:r}var Xe=50;function Ze(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(Xe))),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<Xe||v!=null&&e-v+.001<Xe){g=l(E);return}_=e;let a=m;p.startsWith(m)||(m=p.slice(0,Ye(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(Je(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&&Je(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 Qe=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(`,`)),$e=new Map,Y=[];function et(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 tt(e,t){let n=String(t.id||``),r=String(t.operation||``);if(!n||!Qe.has(r))return;let i=Date.parse(String(t.expiresAt||``));if(Number.isFinite(i)&&i<=Date.now()){await U.resolveMobileOperation(e,n,{ok:!1,error:`移动设备操作请求已过期。`});return}try{let i=await et(`mobile_execute_device_operation`,{request:{id:n,operation:r,parameters:t.parameters&&typeof t.parameters==`object`?t.parameters:void 0}});await U.resolveMobileOperation(e,n,{ok:!0,result:i})}catch(t){await U.resolveMobileOperation(e,n,{ok:!1,error:t instanceof Error?t.message:String(t)})}finally{Y.push(n),Y.length>128&&Y.splice(0,Y.length-128)}}function nt(e){let t=String(e.id||``);!t||Y.includes(t)||(Y.push(t),Y.length>128&&Y.splice(0,Y.length-128))}function rt(e,t){let n=String(t.id||``);if(!n||Y.includes(n)||$e.has(n))return;let r=tt(e,t).catch(()=>{}).finally(()=>$e.delete(n));$e.set(n,r)}function it(e){let t=String(e.path||``).trim().replaceAll(`\\`,`/`).toLowerCase();return t?`path:${t}`:`id:${e.id}`}function at(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function ot(e,{agentId:t,responseText:n,data:r,finishedAt:i,error:a,preserveDisplayedText:o}){let s=!!a,c=r.lifecycle||e.lifecycle||{},l=b(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:v(r,e.plan),team:at(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:M(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 st({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;g({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=>({...b(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:v(f,e.plan),team:at(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||y(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:at(f,e.team),plan:v(f,e.plan??null)}));else if(i===`queue_update`)f.queuedInputs?.length&&(l.queuedDuringRun=!0),r(e,e=>b(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:at(f,e.team),agents:f.agents||[],currentActivity:e.currentActivity?.type===`tool`?e.currentActivity:t||e.currentActivity,activityFeed:t?O(e.activityFeed,t):e.activityFeed,lastActivityAt:f.agent?.lastActivityAt||p}}),Object.hasOwn(f,`team`)&&u(e=>({...e,team:at(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:O(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:O(e.activityFeed,t),lastActivityAt:f.finishedAt||p}});else if(i===`text_patch`)l.responseRenderingStreaming=!0,l.responseText=V(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=V(l.thinkingText,f).slice(-6e3);let e=[l.thinkingPrefix,l.thinkingText].filter(Boolean).join(`
|
|
3
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: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:O(e.tools,t),currentActivity:t,activityFeed:O(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=(P(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=O(s,a)),o&&(s=O(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`)rt(e,f);else if(i===`mobile_operation_cancel`)nt(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===`generated_asset`)r(e,e=>({...e,lastActivityAt:p,messages:e.messages.map(e=>e.id===t?{...e,attachments:[...(e.attachments||[]).filter(e=>it(e)!==it(f)),f]}:e)}));else if(i===`goal_update`)r(e,e=>({...e,goal:f.goal??null,team:at(f,e.team)})),u(e=>({...e,goal:f.goal??null,team:at(f,e.team)}));else if(S(i))s.flush(),r(e,e=>{let t=v(f,e.plan),n=f.currentActivity||{type:`plan`,plan:t,changes:C(e.plan,t),updatedAt:t?.updatedAt||p};return{...e,lastActivityAt:p,plan:t,currentActivity:n,activityFeed:O(e.activityFeed,n)}}),u(e=>({...e,plan:v(f,e.plan??null)}));else if(i===`session_title`)u(e=>({...e,name:f.name}));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:O(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=>ot(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:at(f,e.team),plan:v(f,e.plan??null)})),!1;throw Error(f.message)}},state:l}}var ct=`pisper:usage-updated`;function lt({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:h}=a(),g=(0,J.useRef)(new Map),_=(0,J.useRef)(new Set),v=(0,J.useRef)(new Map),y=(0,J.useCallback)(async(t,a,_=[],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;let T=a;if(T||=await d(),!T||o.current[T]?.streaming)return;let E=o.current[T];if(E?.pendingRuntimeSelection||E?.switchingModel||E?.switchingThinking)return;let k=(i.current.get(T)||0)+1;i.current.set(T,k);let A=!1,j=()=>!A&&i.current.get(T)===k,N=()=>{},P=new Promise(e=>{N=e});g.current.set(T,{promise:P,resolve:N}),S.activate!==!1&&(s(T),c(``));let F={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}))},I=`agent-${Date.now()}`,ee=new Date().toISOString(),L={responseText:``,responseRenderingStreaming:!0,thinkingText:``,thinkingPrefix:``,queuedDuringRun:!1},R=Ke((e,t)=>{j()&&l(T,n=>j()?{...n,thinkingText:e,lastActivityAt:t||n.lastActivityAt,currentActivity:{type:`model`,stage:`thinking`,updatedAt:t||n.lastActivityAt}}:n)},{intervalMs:80}),z=Ze((e,t)=>{j()&&l(T,n=>{if(!j())return n;let r=n.messages.map(t=>t.id===I?{...t,text:e,streaming:L.responseRenderingStreaming||e!==L.responseText}:t);if(L.terminal||!L.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:O(n.activityFeed,i),messages:r}})},{isCurrent:j}),B=qe((e,t)=>{j()&&l(T,n=>{if(!j())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=O(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}})}),V=st({sessionId:T,agentId:I,sessionStatesRef:o,updateSessionState:l,updateSessions:u,typewriter:z,thinkingScheduler:R,toolScheduler:B,t:h}),te=(e,t)=>j()?e===`resync_required`?(V.dispatch(e,t),A=!0,i.current.delete(T),r.current.delete(T),m(T),!1):V.dispatch(e,t):!1;L=V.state,l(T,e=>{let t=v||y||e.goal?.status===`active`;return{...e,messages:[...C==null?e.messages:e.messages.slice(0,C),F,{id:I,role:`agent`,text:``,streaming:!0}],tools:[],approvals:[],error:``,streaming:!0,loaded:!0,runStartedAt:ee,lastActivityAt:ee,runFinishedAt:null,runStopped:!1,runNotice:``,currentActivity:{type:`model`,stage:`thinking`,updatedAt:ee},activityFeed:[],lifecycle:{phase:`starting`,event:`prompt_submitted`,turn:0,updatedAt:ee},thinkingText:``,hadQueuedInput:!1,withdrawnInputIds:[],queuedInputRunId:I,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 H=!1;try{if(C==null?await U.openStream({sessionId:T,message:w,attachments:_,goalMode:v,teamMode:y,goalTokenBudget:b,invocation:x},te):await U.retryLastTurn(T,te),!j())return;L.responseRenderingStreaming=!1,L.terminal=!0,z.setTarget(L.responseText),R.flush(),B.flush();let t=new Date().toISOString();if(o.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:M(e.tools,{finishedAt:n}),messages:e.messages.map(e=>e.id===I?{...e,streaming:e.text!==L.responseText}:e)}}),!await z.drain()||!j()||(l(T,e=>({...e,messages:e.messages.map(e=>e.id===I?{...e,text:L.responseText,streaming:!1}:e)})),!j()))return;(v||y||L.queuedDuringRun||o.current[T]?.hadQueuedInput||o.current[T]?.goal||o.current[T]?.queuedInputs?.length)&&l(T,{queuedInputs:[],hadQueuedInput:!1});let r;try{r=(await p()).find(e=>e.id===T)}catch{m(T)}if(!j())return;S.activate!==!1&&e?.(`chat.completed`,{chat:{title:r?.name||h(`chat:chatPage.appChat`,{app:`Pisper`}),summary:L.responseText.trim().slice(0,260)||h(`chat:chatPage.theAgentHasFinishedResponding`),model:o.current[T]?.model||n}})}catch(e){if(!j())return;if((L.runId||L.startedAt)&&!L.terminal){V.dispatch(`resync_required`,{}),A=!0,i.current.delete(T),r.current.delete(T),m(T);return}H=!0,z.cancel(),R.flush(),B.cancel();let t=new Date().toISOString(),n=D(e);if(l(T,e=>({...e,streaming:!1,error:n,runFinishedAt:t,lastActivityAt:t,runNotice:``,currentActivity:null,activityFeed:[],approvals:[],tools:M(e.tools,{finishedAt:t,error:n}),messages:e.messages.map(e=>e.id===I?{...e,streaming:!1,error:n,text:e.text||L.responseText}:e)})),L.queuedDuringRun||o.current[T]?.hadQueuedInput||o.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=j();A=!0,e&&(r.current.delete(T),i.current.delete(T),l(T,{streaming:!1,hadQueuedInput:!1}),g.current.get(T)?.promise===P&&g.current.delete(T)),z.cancel(),R.cancel(),B.cancel(),N(),window.dispatchEvent(new Event(ct)),H&&e&&m(T)}},[e,d,n,f,r,p,i,o,s,c,m,h,l,u]),S=(0,J.useCallback)(async(e,n,r=[],i=`steer`)=>{let a=String(e||``).trim()||(r.length?h(`chat:chatPage.pleaseAnalyzeTheseAttachments`):``);if(!n||!a)return!1;let s=o.current[n]?.queuedInputRunId;try{let e=await U.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=b(n,e),i=!r.withdrawnInputIds?.includes(e.inputId)&&n.queuedInputRunId===s;return{...r,messages:i?E(r.messages,o):r.messages,hadQueuedInput:!0,lastActivityAt:t}}),!0}catch(e){if(x(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}),y(a,n,r),!0}return t(D(e),`error`),!1}},[f,t,y,o,m,h,l]),C=(0,J.useCallback)(e=>{if(!e)return Promise.resolve();let n=o.current[e],r=v.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 U.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:M(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,o,m,h,l,u]),w=(0,J.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 U.withdrawQueuedInput(e,n);return l(e,e=>b(e,{...r,removedInputId:r.removed?n:void 0})),r.removed?r.withdrawnInput||null:(t(h(`chat:focusSession.queuedInputAlreadyConsumed`),`info`),null)}catch(e){return t(D(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,J.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 y(a.text||``,e,a.attachments||[],!1,!1,null,null,{retryFromIndex:i,...t})},[y,o]),queuePrompt:S,withdrawQueuedInput:w,abort:C}}function ut(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 dt({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 ut(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 ft=dt({isStreaming:async(e,t)=>{let n=await U.getLiveSession(e,{signal:t});return!!(n.configurationBusy??n.streaming)},apply:(e,t)=>t.model?U.updateModel(e,t.model.provider,t.model.modelId):U.setThinkingLevel(e,t.thinkingLevel)});function pt({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=(0,J.useRef)(new Map),m=(0,J.useCallback)(e=>{o(e,e=>({...e,runtimeSelectionRevision:(e.runtimeSelectionRevision||0)+1}))},[o]),h=(0,J.useCallback)((e,t)=>{s(n=>n.map(n=>n.id===e?t(n):n))},[s]),g=(0,J.useCallback)(async t=>{if(t)try{let n=await U.pauseGoal(t);o(t,{goal:n.goal||null}),h(t,e=>({...e,goal:n.goal||null})),e(d(`chat:chatPage.goalPaused`),`info`)}catch(e){o(t,{error:D(e)})}},[e,d,o,h]),_=(0,J.useCallback)(async(t,n)=>{if(t)try{let r=await U.setGoalBudget(t,n);o(t,{goal:r.goal||null}),h(t,e=>({...e,goal:r.goal||null})),e(d(`chat:chatPage.goalTokenBudgetUpdated`),`info`)}catch(e){o(t,{error:D(e)})}},[e,d,o,h]),v=(0,J.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 U.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:D(e)})}}},[e,i,u,d,o]),y=(0,J.useCallback)(async e=>{let t=await U.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]),b=(0,J.useCallback)((e,t={},n=``)=>{let r=String(t.model||n),a=String(i.current[e]?.model||``);if(r&&a&&r!==a)return;let s=Array.isArray(t.availableThinkingLevels)?t.availableThinkingLevels.map(e=>String(e)):Array.isArray(t.availableLevels)?t.availableLevels.map(e=>String(e)):[],c=String(t.thinkingLevel||``);o(e,{thinkingLevel:c||void 0,thinkingModel:r||a,availableThinkingLevels:s,thinkingStatus:String(t.thinkingStatus||t.status||``),thinkingMessage:String(t.thinkingMessage||t.message||``),switchingThinking:!1}),c&&h(e,e=>({...e,thinkingLevel:c}))},[i,o,h]),x=(0,J.useCallback)((e,t=``)=>{if(!e)return Promise.resolve();let n=i.current[e]?.runtimeSelectionRevision||0,r=i.current[e];if(r?.switchingModel||r?.switchingThinking)return Promise.resolve();let a=t||r?.model||``,s=p.current.get(e);if(s&&s.model===a&&s.revision===n)return s.promise;o(e,{thinkingModel:a,thinkingStatus:`loading`,thinkingMessage:``});let c=()=>{let t=i.current[e];return(t?.runtimeSelectionRevision||0)===n&&(!a||!t?.model||t.model===a)},l=(async()=>{try{let t=await U.getThinkingLevel(e);c()&&b(e,t,a)}catch{c()&&o(e,{thinkingModel:a,availableThinkingLevels:[],thinkingStatus:`error`,thinkingMessage:d(`chat:focusSession.thinkingLevelsLoadFailed`)})}finally{let t=p.current.get(e);t&&t.model===a&&t.revision===n&&p.current.delete(e)}})();return p.current.set(e,{model:a,revision:n,promise:l}),l},[b,i,d,o]),S=(0,J.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){ft.select(t,s.key===c.model?void 0:{model:s});return}m(t);let l=c?.model||``,u=!!c?.messages?.length&&!c?.compaction?.active;o(t,{switchingModel:!0,model:s.key,thinkingModel:``,availableThinkingLevels:[],thinkingStatus:``,thinkingMessage:``,error:``}),h(t,e=>({...e,model:s.key}));try{let r=await U.updateModel(t,s.provider,s.modelId);m(t),o(t,{model:r.model||s.key,contextUsage:r.contextUsage??null,switchingModel:!1}),h(t,e=>({...e,model:r.model||s.key})),Array.isArray(r.availableThinkingLevels)||Array.isArray(r.availableLevels)?b(t,r,s.key):await x(t,s.key),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 v(t)}catch(e){m(t),o(t,{switchingModel:!1,model:l||void 0,error:D(e)}),l&&h(t,e=>({...e,model:l}))}},[b,x,r,v,m,e,n,i,d,o,h]),C=(0,J.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;ft.select(t,r===a.thinkingLevel?void 0:{thinkingLevel:r});return}m(t);let s=String(a.thinkingLevel||``);o(t,{switchingThinking:!0,thinkingLevel:r,error:``}),h(t,e=>({...e,thinkingLevel:r}));try{let n=await U.setThinkingLevel(t,r);m(t),b(t,n),e(d(`chat:chatPage.switchedToThinkingLevel`,{level:String(n.thinkingLevel||r)}))}catch(e){m(t),o(t,{switchingThinking:!1,thinkingLevel:s||void 0,error:D(e)}),s&&h(t,e=>({...e,thinkingLevel:s}))}},[b,m,e,i,d,o,h]);(0,J.useEffect)(()=>ft.subscribe((t,n)=>{if(!n){o(t,{pendingRuntimeSelection:void 0});return}let{selection:r,status:i}=n;if(i===`pending`||i===`applying`){m(t),o(t,{pendingRuntimeSelection:{model:r.model?.key,thinkingLevel:r.thinkingLevel},switchingModel:i===`applying`&&!!r.model,switchingThinking:i===`applying`&&!!r.thinkingLevel,error:``});return}if(m(t),o(t,{pendingRuntimeSelection:void 0,switchingModel:!1,switchingThinking:!1,...n.error?{error:D(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}),h(t,t=>({...t,model:e}))}b(t,a),e(r.model?d(`chat:chatPage.switchedToModel`,{model:r.model.label}):d(`chat:chatPage.switchedToThinkingLevel`,{level:String(a.thinkingLevel||r.thinkingLevel)}))}),[b,m,e,d,o,h]);let w=(0,J.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 U.updateExecutionMode(t,r);return o(t,{executionMode:i.executionMode,permissionMode:i.permissionMode,switchingPermission:!1}),h(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:D(e)}),!1}},[e,n,d,o,h]),T=(0,J.useCallback)(async(e,t)=>{if(!e)return!1;try{let n=await U.updateRunMode(e,t),r=String(n.runMode||t);return o(e,{runMode:r}),h(e,e=>({...e,runMode:r})),!0}catch(t){return o(e,{error:D(t)}),!1}},[o,h]),E=(0,J.useCallback)(async(t,n,r)=>{o(t,{error:``});try{let e=await U.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 z&&n.status===404){e(d(`chat:chatPage.approvalStatusUpdated`),`info`);return}throw o(t,{error:D(n)}),n}},[e,u,d,o]),O=(0,J.useCallback)(async(t,n)=>{if(!(!t?.id||i.current[t.id]?.streaming)){o(t.id,{switchingCwd:!0,error:``});try{let r=await U.updateCwd(t.id,n);o(t.id,{cwd:r.cwd,switchingCwd:!1}),h(t.id,e=>({...e,cwd:r.cwd})),e(d(`chat:chatPage.workingDirectoryChangedToWorkspace`,{workspace:W(r.cwd,f)}))}catch(e){throw o(t.id,{switchingCwd:!1,error:D(e)}),e}}},[f,e,i,d,o,h]);return{switchSessionCwd:O,selectSessionWorkspace:(0,J.useCallback)(async t=>{if(t?.id){if(i.current[t.id]?.streaming){e(d(`chat:chatPage.stopTheActiveRunBeforeChangingTheWorkspace`),`info`);return}try{let e=await Ee(t.cwd);e&&await O(t,e)}catch(e){o(t.id,{switchingCwd:!1,error:D(e)})}}},[e,i,O,d,o]),renameSession:(0,J.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 U.renameSession(n.id,r);h(n.id,e=>({...e,name:t.name})),pe({id:n.id,name:t.name}),e(d(`chat:chatPage.chatTitleUpdated`))}catch(e){l(D(e))}},[e,t,i,l,d,h]),pauseGoal:g,setGoalBudget:_,compactSession:v,setCompactionThreshold:y,loadSessionThinkingLevel:x,switchSessionModel:S,switchSessionThinkingLevel:C,switchSessionExecutionMode:w,switchSessionRunMode:T,resolveToolApproval:E}}function mt(e,t){return!!(t.sessionId&&e?.sessionId===t.sessionId&&e.streaming&&!e.completed&&!t.streaming&&t.completed&&e.runStartedAt&&Number.isFinite(Date.parse(e.runStartedAt))&&e.runStartedAt===t.runStartedAt)}function ht(e,t,n=[]){if(!mt(e,t))return!1;let r=Date.parse(t.runStartedAt||``);return Number.isFinite(r)?n.some(e=>{let t=Date.parse(e.changedAt);return e.reverted||!Number.isFinite(t)||t<r?!1:e.added>0||e.removed>0||e.status===`created`||e.status===`deleted`||!e.snapshot&&e.pending}):!1}function gt(e){return typeof e!=`number`||!Number.isFinite(e)?360:Math.min(720,Math.max(280,Math.round(e)))}function _t({availableWidth:e,mobileLayout:t,hasSession:n,preference:r}){if(!n||r===`closed`)return`closed`;let i=t||e<800;return r===`auto`&&i?`closed`:i?`sheet`:`aside`}var vt=s(()=>({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{}}})),yt=c()(o((e,t)=>({width:360,open:!1,setWidth:n=>{let r=gt(n);t().width!==r&&e({width:r})},setOpen:n=>{t().open!==n&&e({open:n})}}),{name:`pisper-session-context-layout`,version:2,storage:vt,migrate:e=>{let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{};return{width:gt(`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:gt(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 bt({sessionId:e,streaming:t,completed:n,runStartedAt:r,enabled:i,open:a,onReveal:o}){let s=(0,J.useRef)(null),c=(0,J.useRef)(o);(0,J.useLayoutEffect)(()=>{c.current=o},[o]),(0,J.useEffect)(()=>{let o=s.current,l={sessionId:e,streaming:t,completed:n,runStartedAt:r};if(s.current=l,!i||a||!mt(o,l))return;let u=new AbortController,d=!0;return U.getSessionFileChanges(e,{signal:u.signal}).then(({files:e})=>{d&&ht(o,l,e)&&c.current()}).catch(()=>{}),()=>{d=!1,u.abort()}},[n,i,a,r,e,t])}var X=i();function xt(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function St(e,t){let n=getComputedStyle(e.ownerDocument.documentElement);return t*parseFloat(n.fontSize)}function Ct(e){return e/100*window.innerHeight}function wt(e){return e/100*window.innerWidth}function Tt(e){switch(typeof e){case`number`:return[e,`px`];case`string`:{let t=parseFloat(e);return e.endsWith(`%`)?[t,`%`]:e.endsWith(`px`)?[t,`px`]:e.endsWith(`rem`)?[t,`rem`]:e.endsWith(`em`)?[t,`em`]:e.endsWith(`vh`)?[t,`vh`]:e.endsWith(`vw`)?[t,`vw`]:[t,`%`]}}}function Et({groupSize:e,panelElement:t,styleProp:n}){let r,[i,a]=Tt(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=St(t,i);break;case`em`:r=xt(t,i);break;case`vh`:r=Ct(i);break;case`vw`:r=wt(i)}return r}function Z(e){return parseFloat(e.toFixed(3))}function Dt({group:e}){let{orientation:t,panels:n}=e;return n.reduce((e,n)=>(e+=t===`horizontal`?n.element.offsetWidth:n.element.offsetHeight,e),0)}function Ot(e){let{panels:t}=e,n=Dt({group:e});return n===0?t.map(e=>({groupResizeBehavior:e.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:e.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:e.panelConstraints.disabled,minSize:0,maxSize:100,panelId:e.id})):t.map(e=>{let{element:t,panelConstraints:r}=e,i=0;r.collapsedSize!==void 0&&(i=Z(Et({groupSize:n,panelElement:t,styleProp:r.collapsedSize})/n*100));let a;r.defaultSize!==void 0&&(a=Z(Et({groupSize:n,panelElement:t,styleProp:r.defaultSize})/n*100));let o=0;r.minSize!==void 0&&(o=Z(Et({groupSize:n,panelElement:t,styleProp:r.minSize})/n*100));let s=100;return r.maxSize!==void 0&&(s=Z(Et({groupSize:n,panelElement:t,styleProp:r.maxSize})/n*100)),{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:i,collapsible:r.collapsible===!0,defaultSize:a,disabled:r.disabled,minSize:o,maxSize:s,panelId:e.id}})}function Q(e,t=`Assertion error`){if(!e)throw Error(t)}function kt(e,t){return Array.from(t).sort(e===`horizontal`?At:jt)}function At(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function jt(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function Mt(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function Nt(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function Pt({orientation:e,rects:t,targetRect:n}){let r={x:n.x+n.width/2,y:n.y+n.height/2},i,a=Number.MAX_VALUE;for(let n of t){let{x:t,y:o}=Nt(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return Q(i,`No rect found`),i}var Ft;function It(){return Ft===void 0&&(Ft=typeof matchMedia==`function`&&!!matchMedia(`(pointer:coarse)`).matches),Ft}function Lt(e){let{element:t,orientation:n,panels:r,separators:i}=e,a=kt(n,Array.from(t.children).filter(Mt).map(e=>({element:e}))).map(({element:e})=>e),o=[],s=!1,c=!1,l=-1,u=-1,d=0,f,p=[];{let e=-1;for(let t of a)t.hasAttribute(`data-panel`)&&(e++,t.hasAttribute(`data-disabled`)||(d++,l===-1&&(l=e),u=e))}if(d>1){let t=-1;for(let d of a)if(d.hasAttribute(`data-panel`)){t++;let i=r.find(e=>e.element===d);if(i){if(f){let r=f.element.getBoundingClientRect(),a=d.getBoundingClientRect(),m;if(c){let e=n===`horizontal`?new DOMRect(r.right,r.top,0,r.height):new DOMRect(r.left,r.bottom,r.width,0),t=n===`horizontal`?new DOMRect(a.left,a.top,0,a.height):new DOMRect(a.left,a.top,a.width,0);switch(p.length){case 0:m=[e,t];break;case 1:{let i=p[0];m=[i,Pt({orientation:n,rects:[r,a],targetRect:i.element.getBoundingClientRect()})===r?t:e];break}default:m=p}}else m=p.length?p:[n===`horizontal`?new DOMRect(r.right,a.top,a.left-r.right,a.height):new DOMRect(a.left,r.bottom,a.width,a.top-r.bottom)];for(let n of m){let r=`width`in n?n:n.element.getBoundingClientRect(),a=It()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(r.width<a){let e=a-r.width;r=new DOMRect(r.x-e/2,r.y,r.width+e,r.height)}if(r.height<a){let e=a-r.height;r=new DOMRect(r.x,r.y-e/2,r.width,r.height+e)}!s&&!(t<=l||t>u)&&o.push({group:e,groupSize:Dt({group:e}),panels:[f,i],separator:`width`in n?void 0:n,rect:r}),s=!1}}c=!1,f=i,p=[]}}else if(d.hasAttribute(`data-separator`)){d.ariaDisabled!==null&&(s=!0);let e=i.find(e=>e.element===d);e?p.push(e):(f=void 0,p=[])}else c=!0}return o}var Rt=class{#e={};addListener(e,t){let n=this.#e[e];return n===void 0?this.#e[e]=[t]:n.includes(t)||n.push(t),()=>{this.removeListener(e,t)}}emit(e,t){let n=this.#e[e];if(n!==void 0){if(n.length===1)n[0].call(null,t);else{let e=!1,r=null,i=Array.from(n);for(let n=0;n<i.length;n++){let a=i[n];try{a.call(null,t)}catch(t){r===null&&(e=!0,r=t)}}if(e)throw r}}}removeAllListeners(){this.#e={}}removeListener(e,t){let n=this.#e[e];if(n!==void 0){let e=n.indexOf(t);e>=0&&n.splice(e,1)}}},zt={cursorFlags:0,state:`inactive`},Bt=new Rt;function Vt(){return zt}function Ht(e){return Bt.addListener(`change`,e)}function Ut(e){let t=zt,n={...zt};n.cursorFlags=e,zt=n,Bt.emit(`change`,{prev:t,next:n})}function Wt(e){let t=zt;zt=e,Bt.emit(`change`,{prev:t,next:e})}var Gt=e=>e,Kt=()=>{},qt=1,Jt=2,Yt=4,Xt=8,Zt=3,Qt=12,$t;function en(){return $t===void 0&&($t=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&($t=!0)),$t}function tn({cursorFlags:e,groups:t,state:n}){let r=0,i=0;switch(n){case`active`:case`hover`:t.forEach(e=>{if(!e.mutableState.disableCursor)switch(e.orientation){case`horizontal`:r++;break;case`vertical`:i++;break}})}if(r!==0||i!==0){if(n===`active`&&e&&en()){let t=(e&qt)!==0,n=(e&Jt)!==0,r=(e&Yt)!==0,i=(e&Xt)!==0;if(t)return r?`se-resize`:i?`ne-resize`:`e-resize`;if(n)return r?`sw-resize`:i?`nw-resize`:`w-resize`;if(r)return`s-resize`;if(i)return`n-resize`}return en()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var nn=new WeakMap;function rn(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=nn.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&(Object.isExtensible(e.adoptedStyleSheets)?e.adoptedStyleSheets.push(n):e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]));let r=Vt();switch(r.state){case`active`:case`hover`:{let e=tn({cursorFlags:r.cursorFlags,groups:r.hitRegions.map(e=>e.group),state:r.state}),i=`*, *:hover {cursor: ${e} !important; }`;if(t===i)return;t=i,e?n.cssRules.length===0?n.insertRule(i):n.replaceSync(i):n.cssRules.length===1&&n.deleteRule(0);break}case`inactive`:t=void 0,n.cssRules.length===1&&n.deleteRule(0)}nn.set(e,{prevStyle:t,styleSheet:n})}var an=new Map,on=new Rt;function sn(e){an=new Map(an),an.delete(e)}function cn(e,t){for(let[t]of an)if(t.id===e)return t}function ln(e,t){for(let[t,n]of an)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function un(){return an}function dn(e,t){return on.addListener(`groupChange`,n=>{n.group.id===e&&t(n)})}function fn(e,t,n){let r=an.get(e);an=new Map(an),an.set(e,t),on.emit(`groupChange`,{group:e,isUserInteraction:n?.isUserInteraction===!0,prev:r,next:t})}function pn(e){let t=Vt(),n=!1;return t.state===`active`&&(Wt({cursorFlags:0,state:`inactive`}),t.hitRegions.length>0&&(rn(e),n=!0,t.hitRegions.forEach(e=>{let t=ln(e.group.id,!0);fn(e.group,t,{isUserInteraction:!0})}))),n}function mn(e){e.defaultPrevented||pn(e.currentTarget)}function hn(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=Nt(n,a.rect);switch(e){case`horizontal`:t.x<=i.x&&(r=a,i=t);break;case`vertical`:t.y<=i.y&&(r=a,i=t)}}return r?{distance:i,hitRegion:r}:void 0}function gn(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function _n(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:Cn(e),b:Cn(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();Q(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:Sn(xn(n.a)),b:Sn(xn(n.b))};if(i.a===i.b){let e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)},i=e.length;for(;i--;){let n=e[i];if(n===t.a)return 1;if(n===t.b)return-1}}return Math.sign(i.a-i.b)}var vn=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function yn(e){let t=getComputedStyle(wn(e)??e).display;return t===`flex`||t===`inline-flex`}function bn(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||yn(e))||+t.opacity<1||`transform`in t&&t.transform!==`none`||`webkitTransform`in t&&t.webkitTransform!==`none`||`mixBlendMode`in t&&t.mixBlendMode!==`normal`||`filter`in t&&t.filter!==`none`||`webkitFilter`in t&&t.webkitFilter!==`none`||`isolation`in t&&t.isolation===`isolate`||vn.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function xn(e){let t=e.length;for(;t--;){let n=e[t];if(Q(n,`Missing node`),bn(n))return n}return null}function Sn(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Cn(e){let t=[];for(;e;)t.push(e),e=wn(e);return t}function wn(e){let{parentNode:t}=e;return gn(t)?t.host:t}function Tn(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function En({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!Mt(n)||n.contains(e)||e.contains(n))return!0;if(_n(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(Tn(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function Dn(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=Lt(r),a=hn(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&En({groupElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function On(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function $(e,t,n=0){return Math.abs(Z(e)-Z(t))<=n}function kn(e,t){return $(e,t)?0:e>t?1:-1}function An({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:r}){let{collapsedSize:i=0,collapsible:a,disabled:o,maxSize:s=100,minSize:c=0}=t;if(o&&!e)return n;if(kn(r,c)<0){if(a){let e=(i+c)/2;r=kn(r,e)<0?i:c}else r=c}return r=Math.min(s,r),r=Z(r),r}function jn({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if($(e,0))return t;let o=a===`imperative-api`,s=Object.values(t),c=Object.values(i),l=[...s],[u,d]=r;Q(u!=null,`Invalid first pivot index`),Q(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];Q(r,`Panel constraints not found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(Q(n!=null,`Previous layout not found for panel index ${t}`),$(n,i)){let t=o-n;kn(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];Q(r,`No panel constraints found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(Q(n!=null,`Previous layout not found for panel index ${t}`),$(n,o)){let t=n-i;kn(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];Q(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsible:a,collapsedSize:o,minSize:c}=r;if(a&&kn(i,c)<0){if(e>0){let t=c-o,n=t/2;kn(i+e,c)<0&&(e=kn(e,n)<=0?0:t)}else{let t=c-o,n=100-t/2;kn(i-e,c)<0&&(e=kn(100+e,n)>0?0:-t)}}break}}{let t=e<0?1:-1,r=e<0?d:u,i=0;for(;;){let e=s[r];Q(e!=null,`Previous layout not found for panel index ${r}`);let a=An({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:e,size:100})-e;if(i+=a,r+=t,r<0||r>=n.length)break}let a=Math.min(Math.abs(e),Math.abs(i));e=e<0?0-a:a}{let t=e<0?u:d;for(;t>=0&&t<n.length;){let r=Math.abs(e)-Math.abs(f),i=s[t];Q(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=An({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:i,size:a});if(!$(i,c)&&(f+=i-c,l[t]=c,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(On(c,l))return i;{let t=e<0?d:u,r=s[t];Q(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=An({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!$(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];Q(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=An({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:i,size:a});if($(i,s)||(t-=s-i,l[r]=s),$(t,0))break;e>0?r--:r++}}}if(!$(Object.values(l).reduce((e,t)=>t+e,0),100,.1))return i;let p=Object.keys(i);return l.reduce((e,t,n)=>(e[p[n]]=t,e),{})}function Mn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||kn(e[n],t[n])!==0)return!1;return!0}function Nn({layout:e,panelConstraints:t}){let n=Object.values(e),r=[...n],i=r.reduce((e,t)=>e+t,0);if(r.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${r.map(e=>`${e}%`).join(`, `)}`);if(!$(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];Q(t!=null,`No layout data found for index ${e}`);let n=100/i*t;r[e]=n}let a=0;for(let e=0;e<t.length;e++){let i=n[e];Q(i!=null,`No layout data found for index ${e}`);let o=r[e];Q(o!=null,`No layout data found for index ${e}`);let s=An({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!$(a,0))for(let e=0;e<t.length;e++){let n=r[e];Q(n!=null,`No layout data found for index ${e}`);let i=n+a,o=An({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,$(a,0)))break}let o=Object.keys(e);return r.reduce((e,t,n)=>(e[o[n]]=t,e),{})}function Pn({groupId:e,panelId:t}){let n=()=>{let t=un();for(let[n,{defaultLayoutDeferred:r,derivedPanelConstraints:i,layout:a,groupSize:o,separatorToPanels:s}]of t)if(n.id===e)return{defaultLayoutDeferred:r,derivedPanelConstraints:i,group:n,groupSize:o,layout:a,separatorToPanels:s};throw Error(`Group ${e} not found`)},r=()=>{let e=n().derivedPanelConstraints.find(e=>e.panelId===t);if(e!==void 0)return e;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{let e=n().group.panels.find(e=>e.id===t);if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},a=()=>{let e=n().layout[t];if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},o=({nextSize:e,panels:n,prevLayout:r,derivedPanelConstraints:i})=>{let o=a(),s=n.findIndex(e=>e.id===t),c=s===0,l=s===n.length-1;if(l&&e<o&&(c||n.slice(0,s).every((e,t)=>{let n=i[t];return n?.collapsible&&$(n.collapsedSize,r[n.panelId])}))){let e=n.slice(0,s).reduce((e,t)=>e+r[t.id],0);return{...r,[t]:Z(100-e)}}return jn({delta:l?o-e:e-o,initialLayout:r,panelConstraints:i,pivotIndices:l?[s-1,s]:[s,s+1],prevLayout:r,trigger:`imperative-api`})},s=e=>{if(e===a())return;let{defaultLayoutDeferred:t,derivedPanelConstraints:r,group:i,groupSize:s,layout:c,separatorToPanels:l}=n(),u=Nn({layout:o({nextSize:e,panels:i.panels,prevLayout:c,derivedPanelConstraints:r}),panelConstraints:r});Mn(c,u)||fn(i,{defaultLayoutDeferred:t,derivedPanelConstraints:r,groupSize:s,layout:u,separatorToPanels:l})};return{collapse:()=>{let{collapsible:e,collapsedSize:t}=r(),{mutableValues:n}=i(),o=a();e&&o!==t&&(n.expandToSize=o,s(t))},expand:()=>{let{collapsible:e,collapsedSize:t,minSize:n}=r(),{mutableValues:o}=i(),c=a();if(e&&c===t){let e=o.expandToSize??n;e===0&&(e=1),s(e)}},getSize:()=>{let{group:e}=n(),t=a(),{element:r}=i();return{asPercentage:t,inPixels:e.orientation===`horizontal`?r.offsetWidth:r.offsetHeight}},isCollapsed:()=>{let{collapsible:e,collapsedSize:t}=r(),n=a();return e&&$(t,n)},resize:e=>{let{group:t}=n(),{element:r}=i(),a=Dt({group:t}),o=Z(Et({groupSize:a,panelElement:r,styleProp:e})/a*100);s(o)}}}function Fn(e){e.defaultPrevented||Dn(e,un()).forEach(t=>{if(t.separator&&!t.separator.disableDoubleClick){let n=t.panels.find(e=>e.panelConstraints.defaultSize!==void 0);if(n){let r=n.panelConstraints.defaultSize,i=Pn({groupId:t.group.id,panelId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function In(e){let t=un();for(let[n]of t)if(n.separators.some(t=>t.element===e))return n;throw Error(`Could not find parent Group for separator element`)}function Ln({groupId:e}){let t=()=>{let t=un();for(let[n,r]of t)if(n.id===e)return{group:n,...r};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){let{defaultLayoutDeferred:e,layout:n}=t();return e?{}:n},setLayout(e){let{defaultLayoutDeferred:n,derivedPanelConstraints:r,group:i,groupSize:a,layout:o,separatorToPanels:s}=t(),c=Nn({layout:e,panelConstraints:r});return n?o:(Mn(o,c)||fn(i,{defaultLayoutDeferred:n,derivedPanelConstraints:r,groupSize:a,layout:c,separatorToPanels:s}),c)}}}function Rn(e,t){let n=In(e),r=ln(n.id,!0),i=n.separators.find(t=>t.element===e);Q(i,`Matching separator not found`);let a=r.separatorToPanels.get(i);Q(a,`Matching panels not found`);let o=a.map(e=>n.panels.indexOf(e)),s=Ln({groupId:n.id}).getLayout(),c=Nn({layout:jn({delta:t,initialLayout:s,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),panelConstraints:r.derivedPanelConstraints});Mn(s,c)||fn(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:c,separatorToPanels:r.separatorToPanels},{isUserInteraction:!0})}function zn(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=In(t);if(!n.disabled)switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&Rn(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&Rn(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&Rn(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&Rn(t,-5);break;case`End`:e.preventDefault(),Rn(t,100);break;case`Enter`:{e.preventDefault();let n=In(t),{derivedPanelConstraints:r,layout:i,separatorToPanels:a}=ln(n.id,!0),o=n.separators.find(e=>e.element===t);Q(o,`Matching separator not found`);let s=a.get(o);Q(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.panelId===c.id);if(Q(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];Rn(t,(l.collapsedSize===e?n.mutableState.expandedPanelSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let n=In(t).separators.map(e=>e.element),r=Array.from(n).findIndex(t=>t===e.currentTarget);Q(r!==null,`Index not found`),n[e.shiftKey?r>0?r-1:n.length-1:r+1<n.length?r+1:0].focus({preventScroll:!0});break}case`Home`:e.preventDefault(),Rn(t,-100);break}}function Bn(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=un(),n=Dn(e,t),r=new Map,i=!1;n.forEach(e=>{e.separator&&(i||(i=!0,e.separator.element.focus({focusVisible:!1,preventScroll:!0})));let n=t.get(e.group);n&&r.set(e.group,n.layout)}),Wt({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:`active`}),n.length&&e.preventDefault()}function Vn({document:e,event:t,hitRegions:n,initialLayoutMap:r,mountedGroups:i,pointerDownAtPoint:a,prevCursorFlags:o}){let s=0;n.forEach(e=>{let{group:n,groupSize:o}=e,{orientation:c,panels:l}=n,{disableCursor:u}=n.mutableState,d=0;d=a?c===`horizontal`?(t.clientX-a.x)/o*100:(t.clientY-a.y)/o*100:c===`horizontal`?t.clientX<0?-100:100:t.clientY<0?-100:100;let f=r.get(n),p=i.get(n);if(!f||!p)return;let{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:_,separatorToPanels:v}=p;if(h&&_&&v){let t=jn({delta:d,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>l.indexOf(e)),prevLayout:_,trigger:`mouse-or-touch`});if(Mn(t,_)){if(d!==0&&!u)switch(c){case`horizontal`:s|=d<0?qt:Jt;break;case`vertical`:s|=d<0?Yt:Xt;break}}else fn(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:v})}});let c=0;t.movementX===0?c|=o&Zt:c|=s&Zt,t.movementY===0?c|=o&Qt:c|=s&Qt,Ut(c),rn(e)}function Hn(e){let t=un(),n=Vt();n.state===`active`&&Vn({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}function Un(e){if(e.defaultPrevented)return;let t=Vt(),n=un();switch(t.state){case`active`:if(e.buttons===0){Wt({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{let t=ln(e.group.id,!0);fn(e.group,t,{isUserInteraction:!0})});return}for(let n of t.hitRegions)if(n.separator){let{element:t}=n.separator;t.hasPointerCapture?.(e.pointerId)||t.setPointerCapture?.(e.pointerId)}Vn({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=Dn(e,n);r.length===0?t.state!==`inactive`&&Wt({cursorFlags:0,state:`inactive`}):Wt({cursorFlags:0,hitRegions:r,state:`hover`}),rn(e.currentTarget);break}}}function Wn(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(Vt().state){case`hover`:Wt({cursorFlags:0,state:`inactive`})}}function Gn(e){e.defaultPrevented||e.pointerType===`mouse`&&e.button>0||pn(e.currentTarget)&&e.preventDefault()}function Kn(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=Z(i.defaultSize);n+=e,r[i.panelId]=e}else r[i.panelId]=void 0;let i=e.length-t;if(i!==0){let t=Z((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.panelId]=t)}return r}function qn(e,t,n){if(!n[0])return;let r=e.panels.find(e=>e.element===t);if(!r||!r.onResize)return;let i=Dt({group:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:Z(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function Jn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function Yn({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,a=0,o=!1,s=new Map,c=[];for(let l of e.panels){let e=r[l.id]??0;switch(l.panelConstraints.groupResizeBehavior){case`preserve-pixel-size`:{o=!0;let r=Z(e/100*n/t*100);s.set(l.id,r),i+=r;break}default:c.push(l.id),a+=e}}if(!o||c.length===0)return r;let l=100-i,u={...r};if(s.forEach((e,t)=>{u[t]=e}),a>0)for(let e of c)u[e]=Z((r[e]??0)/a*l);else{let e=Z(l/c.length);for(let t of c)u[t]=e}return u}function Xn(e,t){let n=e.map(e=>e.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;return!0}var Zn=new Map;function Qn(e){let t=!0;Q(e.element.ownerDocument.defaultView,`Cannot register an unmounted Group`);let n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,a=new n(n=>{for(let r of n){let{borderBoxSize:n,target:i}=r;if(i===e.element){if(t){let t=Dt({group:e});if(t===0)return;let n=ln(e.id);if(!n)return;let r=Ot(e),i=n.defaultLayoutDeferred?Kn(r):n.layout,a=Nn({layout:Yn({group:e,nextGroupSize:t,prevGroupSize:n.groupSize,prevLayout:i}),panelConstraints:r});if(!n.defaultLayoutDeferred&&Mn(n.layout,a)&&Jn(n.derivedPanelConstraints,r)&&n.groupSize===t)return;fn(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:r,groupSize:t,layout:a,separatorToPanels:n.separatorToPanels})}}else qn(e,i,n)}});a.observe(e.element),e.panels.forEach(e=>{Q(!r.has(e.id),`Panel ids must be unique; id "${e.id}" was used more than once`),r.add(e.id),e.onResize&&a.observe(e.element)});let o=Dt({group:e}),s=Ot(e),c=e.panels.map(({id:e})=>e).join(`,`),l=e.mutableState.defaultLayout;l&&(Xn(e.panels,l)||(l=void 0));let u=Nn({layout:e.mutableState.layouts[c]??l??Kn(s),panelConstraints:s}),d=e.element.ownerDocument;Zn.set(d,(Zn.get(d)??0)+1);let f=new Map;return Lt(e).forEach(e=>{e.separator&&f.set(e.separator,e.panels)}),fn(e,{defaultLayoutDeferred:o===0,derivedPanelConstraints:s,groupSize:o,layout:u,separatorToPanels:f}),e.separators.forEach(e=>{Q(!i.has(e.id),`Separator ids must be unique; id "${e.id}" was used more than once`),i.add(e.id),e.element.addEventListener(`keydown`,zn)}),Zn.get(d)===1&&(d.addEventListener(`contextmenu`,mn,!0),d.addEventListener(`dblclick`,Fn,!0),d.addEventListener(`pointerdown`,Bn,!0),d.addEventListener(`pointerleave`,Hn),d.addEventListener(`pointermove`,Un),d.addEventListener(`pointerout`,Wn),d.addEventListener(`pointerup`,Gn,!0)),function(){t=!1,Zn.set(d,Math.max(0,(Zn.get(d)??0)-1)),sn(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,zn)}),Zn.get(d)||(d.removeEventListener(`contextmenu`,mn,!0),d.removeEventListener(`dblclick`,Fn,!0),d.removeEventListener(`pointerdown`,Bn,!0),d.removeEventListener(`pointerleave`,Hn),d.removeEventListener(`pointermove`,Un),d.removeEventListener(`pointerout`,Wn),d.removeEventListener(`pointerup`,Gn,!0)),a.disconnect()}}function $n(){let[e,t]=(0,J.useState)({});return[e,(0,J.useCallback)(()=>t({}),[])]}function er(e){let t=(0,J.useId)();return`${e??t}`}var tr=typeof window<`u`?J.useLayoutEffect:J.useEffect;function nr(e){let t=(0,J.useRef)(e);return tr(()=>{t.current=e},[e]),(0,J.useCallback)((...e)=>t.current?.(...e),[t])}function rr(...e){return nr(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function ir(e){let t=(0,J.useRef)({...e});return tr(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var ar=(0,J.createContext)(null);function or(e,t){let n=(0,J.useRef)({getLayout:()=>({}),setLayout:Gt});(0,J.useImperativeHandle)(t,()=>n.current,[]),tr(()=>{Object.assign(n.current,Ln({groupId:e}))})}function sr({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:a,groupRef:o,id:s,onLayoutChange:c,onLayoutChanged:l,orientation:u=`horizontal`,resizeTargetMinimumSize:d={coarse:20,fine:10},style:f,...p}){let m=(0,J.useRef)({onLayoutChange:{},onLayoutChanged:{}}),h=nr(e=>{Mn(m.current.onLayoutChange,e)||(m.current.onLayoutChange=e,c?.(e))}),g=nr((e,t)=>{Mn(m.current.onLayoutChanged,e)||(m.current.onLayoutChanged=e,l?.(e,{isUserInteraction:t}))}),_=er(s),v=(0,J.useRef)(null),[y,b]=$n(),x=(0,J.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:d,separators:[]}),S=rr(v,a);or(_,o);let C=nr((e,t)=>{let r=Vt(),i=cn(e),a=ln(e);if(a){let e=!1;return r.state===`active`&&(e=r.hitRegions.some(e=>e.group===i)),{flexGrow:a.layout[t]??1,pointerEvents:e?`none`:void 0}}if(n?.[t])return{flexGrow:n?.[t]}}),w=ir({defaultLayout:n,disableCursor:r}),T=(0,J.useMemo)(()=>({get disableCursor(){return!!w.disableCursor},getPanelStyles:C,id:_,orientation:u,registerPanel:e=>{let t=x.current;return t.panels=kt(u,[...t.panels,e]),b(),()=>{t.panels=t.panels.filter(t=>t!==e),b()}},registerSeparator:e=>{let t=x.current;return t.separators=kt(u,[...t.separators,e]),b(),()=>{t.separators=t.separators.filter(t=>t!==e),b()}},updatePanelProps:(e,{disabled:t})=>{let n=x.current.panels.find(t=>t.id===e);n&&(n.panelConstraints.disabled=t);let r=cn(_),i=ln(_);r&&i&&fn(r,{...i,derivedPanelConstraints:Ot(r)})},updateSeparatorProps:(e,{disabled:t,disableDoubleClick:n})=>{let r=x.current.separators.find(t=>t.id===e);r&&(r.disabled=t,r.disableDoubleClick=n)}}),[C,_,b,u,w]),E=(0,J.useRef)(null);return tr(()=>{let e=v.current;if(e===null)return;let t=x.current,n;if(w.defaultLayout!==void 0&&Object.keys(w.defaultLayout).length===t.panels.length){n={};for(let e of t.panels){let t=w.defaultLayout[e.id];t!==void 0&&(n[e.id]=t)}}let r={disabled:!!i,element:e,id:_,mutableState:{defaultLayout:n,disableCursor:!!w.disableCursor,expandedPanelSizes:x.current.lastExpandedPanelSizes,layouts:x.current.layouts},orientation:u,panels:t.panels,resizeTargetMinimumSize:t.resizeTargetMinimumSize,separators:t.separators};E.current=r;let a=Qn(r),{defaultLayoutDeferred:o,derivedPanelConstraints:s,layout:c}=ln(r.id,!0);!o&&s.length>0&&(h(c),g(c,!1));let l=dn(_,e=>{let{defaultLayoutDeferred:t,derivedPanelConstraints:n,layout:i}=e.next;if(t||n.length===0)return;let a=r.panels.map(({id:e})=>e).join(`,`);r.mutableState.layouts[a]=i,n.forEach(t=>{if(t.collapsible){let{layout:n}=e.prev??{};if(n){let e=$(t.collapsedSize,i[t.panelId]),a=$(t.collapsedSize,n[t.panelId]);e&&!a&&(r.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let o=Vt().state!==`active`;h(i),o&&g(i,e.isUserInteraction)});return()=>{E.current=null,a(),l()}},[i,_,g,h,u,y,w]),(0,J.useEffect)(()=>{let e=E.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,X.jsx)(ar.Provider,{value:T,children:(0,X.jsx)(`div`,{...p,className:t,"data-group":!0,"data-testid":_,id:_,ref:S,style:{height:`100%`,width:`100%`,overflow:`hidden`,...f,display:`flex`,flexDirection:u===`horizontal`?`row`:`column`,flexWrap:`nowrap`,touchAction:u===`horizontal`?`pan-y`:`pan-x`},children:e})})}sr.displayName=`Group`;function cr(){let e=(0,J.useContext)(ar);return Q(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function lr(e,t){let{id:n}=cr(),r=(0,J.useRef)({collapse:Kt,expand:Kt,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:Kt});(0,J.useImperativeHandle)(t,()=>r.current,[]),tr(()=>{Object.assign(r.current,Pn({groupId:n,panelId:e}))})}function ur({children:e,className:t,collapsedSize:n=`0%`,collapsible:r=!1,defaultSize:i,disabled:a,elementRef:o,groupResizeBehavior:s=`preserve-relative-size`,id:c,maxSize:l=`100%`,minSize:u=`0%`,onResize:d,panelRef:f,style:p,...m}){let h=!!c,g=er(c),_=ir({disabled:a}),v=(0,J.useRef)(null),y=rr(v,o),{getPanelStyles:b,id:x,orientation:S,registerPanel:C,updatePanelProps:w}=cr(),T=d!==null,E=nr((e,t,n)=>{d?.(e,c,n)});tr(()=>{let e=v.current;if(e!==null){let t={element:e,id:g,idIsStable:h,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:T?E:void 0,panelConstraints:{groupResizeBehavior:s,collapsedSize:n,collapsible:r,defaultSize:i,disabled:_.disabled,maxSize:l,minSize:u}};return C(t)}},[s,n,r,i,T,g,h,l,u,E,C,_]),(0,J.useEffect)(()=>{w(g,{disabled:a})},[a,g,w]),lr(g,f);let D=()=>{let e=b(x,g);if(e)return JSON.stringify(e)},O=(0,J.useSyncExternalStore)(e=>dn(x,e),D,D),k;return k=O?JSON.parse(O):i===void 0?{flexGrow:1}:{flexGrow:void 0,flexShrink:void 0,flexBasis:i},(0,X.jsx)(`div`,{...m,"data-disabled":a||void 0,"data-panel":!0,"data-testid":g,id:g,ref:y,style:{...dr,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...k},children:(0,X.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...p,touchAction:S===`horizontal`?`pan-y`:`pan-x`},children:e})})}ur.displayName=`Panel`;var dr={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function fr(){return(0,J.useRef)(null)}function pr({layout:e,panelConstraints:t,panelId:n,panelIndex:r}){let i,a,o=e[n],s=t.find(e=>e.panelId===n);if(s){let c=s.maxSize,l=s.collapsible?s.collapsedSize:s.minSize,u=[r,r+1];a=Nn({layout:jn({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=Nn({layout:jn({delta:c-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function mr({children:e,className:t,disabled:n,disableDoubleClick:r,elementRef:i,id:a,style:o,...s}){let c=er(a),l=ir({disabled:n,disableDoubleClick:r}),[u,d]=(0,J.useState)({}),[f,p]=(0,J.useState)(`inactive`),[m,h]=(0,J.useState)(!1),g=(0,J.useRef)(null),_=rr(g,i),{disableCursor:v,id:y,orientation:b,registerSeparator:x,updateSeparatorProps:S}=cr(),C=b===`horizontal`?`vertical`:`horizontal`;tr(()=>{let e=g.current;if(e!==null){let t={disabled:l.disabled,disableDoubleClick:l.disableDoubleClick,element:e,id:c},n=x(t),r=Ht(e=>{p(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===t)?e.next.state:`inactive`)}),i=dn(y,e=>{let{derivedPanelConstraints:n,layout:r,separatorToPanels:i}=e.next,a=i.get(t);if(a){let e=a[0],t=a.indexOf(e);d(pr({layout:r,panelConstraints:n,panelId:e.id,panelIndex:t}))}});return()=>{r(),i(),n()}}},[y,c,x,l]),(0,J.useEffect)(()=>{S(c,{disabled:n,disableDoubleClick:r})},[n,r,c,S]);let w;n&&!v&&(w=`not-allowed`);let T;if(n)T=`disabled`;else switch(f){case`active`:T=`active`;break;default:T=m?`focus`:f}return(0,X.jsx)(`div`,{...s,"aria-controls":u.valueControls,"aria-disabled":n||void 0,"aria-orientation":C,"aria-valuemax":u.valueMax,"aria-valuemin":u.valueMin,"aria-valuenow":u.valueNow,children:e,className:t,"data-separator":T,"data-testid":c,id:c,onBlur:()=>h(!1),onFocus:()=>h(!0),ref:_,role:`separator`,style:{flexBasis:`auto`,cursor:w,...o,flexGrow:0,flexShrink:0,touchAction:`none`},tabIndex:n?void 0:0})}mr.displayName=`Separator`;function hr({className:e,...t}){return(0,X.jsx)(sr,{"data-slot":`resizable-panel-group`,className:u(`flex h-full w-full aria-[orientation=vertical]:flex-col`,e),...t})}function gr({...e}){return(0,X.jsx)(ur,{"data-slot":`resizable-panel`,...e})}function _r({withHandle:e,className:t,...n}){return(0,X.jsx)(mr,{"data-slot":`resizable-handle`,className:u(`relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90`,t),...n,children:e&&(0,X.jsx)(`div`,{className:`z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border`})})}function vr({availableWidth:e,presentation:t,children:n,context:r,side:i=`right`}){let{t:o}=a(),s=yt(e=>e.width),c=yt(e=>e.setWidth),l=fr(),u=(0,J.useRef)(null),d=(0,J.useRef)(null),f=t===`aside`;(0,J.useLayoutEffect)(()=>{f&&e>0&&l.current?.resize(s)},[f,e,l,s,i]);let p=(0,X.jsx)(gr,{id:`chat-conversation`,minSize:f?400:0,children:n},`conversation`),m=(0,X.jsx)(_r,{elementRef:d,"aria-label":o(`chat:sessionContext.resize`),title:o(`chat:sessionContext.resizeHint`),withHandle:!0,disableDoubleClick:!0,onDoubleClick:()=>{c(360),l.current?.resize(360)},className:`w-2 bg-transparent after:w-2 focus-visible:ring-inset [&>div]:h-10 [&>div]:bg-[var(--stroke-soft)] hover:[&>div]:bg-[var(--brand-blue)] focus-visible:[&>div]:bg-[var(--brand-blue)]`},`separator`),h=(0,X.jsx)(gr,{id:`chat-context`,panelRef:l,defaultSize:s,minSize:280,maxSize:720,groupResizeBehavior:`preserve-pixel-size`,children:r},`context`);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(hr,{id:`chat-context-layout`,elementRef:u,orientation:`horizontal`,className:`min-h-0 min-w-0 flex-1`,disabled:!f,onLayoutChanged:(e,{isUserInteraction:t})=>{if(!f||!t)return;let n=u.current,r=d.current,i=e[`chat-context`];if(!n||!r||!Number.isFinite(i))return;let a=n.clientWidth-r.getBoundingClientRect().width;a>0&&c(a*i/100)},children:f?i===`left`?[h,m,p]:[p,m,h]:[p]}),t===`sheet`&&r]})}function yr(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function br(e){if(!yr(e)||typeof e.created!=`boolean`)throw L();if(e.session===null){if(e.expiresAt!==null||e.created)throw L();return{session:null,expiresAt:null,created:!1}}let t=e.session;if(!yr(t)||typeof t.id!=`string`||!t.id||typeof e.expiresAt!=`string`||!Number.isFinite(Date.parse(e.expiresAt)))throw L();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 L();typeof r==`string`&&(n[e]=r)}if(t.streaming!==void 0&&typeof t.streaming!=`boolean`)throw L();return typeof t.streaming==`boolean`&&(n.streaming=t.streaming),{session:n,expiresAt:e.expiresAt,created:e.created}}async function xr(e,t){return br(await R(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{signal:t}))}async function Sr(e,t){let n=br(await R(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{method:`POST`,signal:t}));if(!n.session)throw L();return n}function Cr({runtime:e,children:t}){let[n,r]=(0,J.useState)({}),i=(0,J.useRef)(n),a=(0,J.useRef)(!0),o=(0,J.useRef)(e),s=(0,J.useRef)(new Map),c=(0,J.useRef)(new Map);(0,J.useLayoutEffect)(()=>{o.current=e},[e]),(0,J.useLayoutEffect)(()=>(a.current=!0,()=>{a.current=!1}),[]);let l=(0,J.useCallback)((e,t)=>{let n={...i.current,[e]:{...i.current[e]??K,...t}};i.current=n,r(n)},[]),u=(0,J.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?Sr:xr)(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),p(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:D(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,J.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,J.useCallback)((e,t)=>l(e,{draft:t}),[l]),f=(0,J.useMemo)(()=>({entries:n,runtime:e,load:u,setDraft:d}),[n,e,u,d]);return(0,X.jsx)(Ae.Provider,{value:f,children:t})}var wr=(0,J.lazy)(()=>t(()=>import(`./SessionContextPanel-BYlJfIxm.js`).then(e=>({default:e.SessionContextPanel})),__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]))),Tr=`chat-session-context-panel`,Er=(0,J.lazy)(()=>t(()=>import(`./ChatDockView-1fxZrR7W.js`).then(e=>({default:e.ChatDockView})),__vite__mapDeps([88,3,7,4,5,6,8,9,1,10,11,12,13,14,15,16,17,18,19,20,89,22,90,91,26,92,29,30,31,93,21,94,27,28,95,96,32,33,97,98,99,100,58,101,37,38,102,40,41,25,34,35,36,39,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,103,104,105,106,85,107,108,109,81,110,111,112,113,114,115,116,117,118,119,120,84,121,122,123,23,124,24,125,126,86])));function Dr(e){let t=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return t?t(e):Promise.reject(Error(`native bridge unavailable`))}function Or({notify:e,navigate:t,browserNotify:n,reportActiveSessionRun:r,registerPrimaryAction:i,pendingAsset:o,onAssetConsumed:s,requestText:c,requestConfirm:l}){let{t:u}=a(),f=H(e=>e.client===`mobile-app`),p=H(e=>e.loaded),m=ee(),g=f||m,_=ke(e=>e.capabilities),v=(0,J.useRef)(null),[y,b]=(0,J.useState)(0),x=yt(e=>e.open),S=yt(e=>e.setOpen),[C,E]=(0,J.useState)(`files`);(0,J.useLayoutEffect)(()=>{let e=v.current;if(!e)return;let t=()=>b(e.clientWidth);if(t(),typeof ResizeObserver>`u`)return window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t);let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let D=(0,J.useRef)(new Set),O=(0,J.useRef)(new Map),k=(0,J.useRef)(null),A=Pe({notify:e}),M=(0,J.useRef)(new Set);(0,J.useEffect)(()=>{let e=()=>{let e=A.activeId;!e||document.visibilityState!==`visible`||!A.sessions.some(t=>t.id===e&&t.unread)||M.current.has(e)||(M.current.add(e),be(e,{read:!0}).catch(()=>void 0).finally(()=>M.current.delete(e)))};return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[A.activeId,A.sessions]);let P=We({sessionStates:A.sessionStates,sessionStatesRef:A.sessionStatesRef,localStreamSessionsRef:D,streamGenerationRef:O,updateSessionState:A.updateSessionState,updateSessions:A.updateSessions}),F=Ie({sessions:A.sessions,sessionsRef:A.sessionsRef,sessionStates:A.sessionStates,activeId:A.activeId,setActiveId:A.setActiveId,loading:A.loading,localStreamSessionsRef:D,loadSessionMessages:P.loadSessionMessages,releaseSessionState:A.releaseSessionState,singleSessionLayout:g,notify:e}),L=A.sessions.find(e=>e.id===A.activeId),R=A.sessionStates[A.activeId],z=j(R,L);(0,J.useLayoutEffect)(()=>(r({sessionId:A.activeId,streaming:z}),()=>r(null)),[z,A.activeId,r]);let V=R?.lifecycle?.phase===`completed`&&!R.error&&!R.runStopped,te=N(R,L),ne=T(te,{streaming:z})?te:null,{active:W,mode:G,pane:ie,tab:ae,openContext:se,setPane:ce}=Me(),le=W?`closed`:_t({availableWidth:y,mobileLayout:g,hasSession:!!L,preference:x?`open`:`closed`}),fe=g||y<800;bt({sessionId:A.activeId,streaming:z,completed:V,runStartedAt:typeof R?.runStartedAt==`string`?R.runStartedAt:null,enabled:!0,open:le!==`closed`,onReveal:()=>{E(`files`),S(!0)}});let pe=A.setActiveId,me=(0,J.useCallback)((e,t)=>{if(e){if(W){G===`pad`||t?se(`changes`):ce(`chat`);return}t?(pe(e),S(!0)):S(!1)}},[se,pe,S,ce,W,G]),he=A.createSessionRecord,ge=P.loadSessionMessages,_e=A.refreshSessions,ve=A.sessionStatesRef,ye=P.syncLiveSession,xe=A.setGlobalError,Se=F.openSessionInDock,Ce=A.sessionsRef,[Te,Ee]=(0,J.useState)({sessionId:``,token:0}),Ae=(0,J.useCallback)(async(e,t=``)=>{let n=e?.id,r=oe(e?.activePanel)||e?.panels.map(oe).find(Boolean),i=t||Ce.current.find(e=>e.id===r)?.cwd||``,a=null;f&&(a=await Dr(`mobile_state`).catch(()=>null));let o=we(f,a),s=await he(o?i:``,{inheritRecentCwd:!1,creationKey:n?`group:${n}`:`global`});return s?(Se(s,`open`,n),s):``},[he,f,Se,Ce]);De(i,Ae);let K=lt({browserNotify:n,notify:e,defaultModel:A.defaultModel,localStreamSessionsRef:D,streamGenerationRef:O,sessionStatesRef:A.sessionStatesRef,setActiveId:A.setActiveId,setGlobalError:A.setGlobalError,updateSessionState:A.updateSessionState,updateSessions:A.updateSessions,createSession:Ae,loadSessionMessages:P.loadSessionMessages,refreshSessions:A.refreshSessions,syncLiveSession:P.syncLiveSession}),{sendPrompt:je,retryLastTurn:Ne}=K;(0,J.useEffect)(()=>{let e=()=>{let e=de();e&&(async()=>{let t=await Ae(void 0,e.cwd);t&&e.prompt&&je(e.prompt,t)})()};return window.addEventListener(ue,e),e(),()=>window.removeEventListener(ue,e)},[Ae,je]);let q=pt({notify:e,requestText:c,requestConfirm:l,availableModels:A.availableModels,sessionStatesRef:A.sessionStatesRef,updateSessionState:A.updateSessionState,updateSessions:A.updateSessions,replaceSessionStates:A.replaceSessionStates,setGlobalError:A.setGlobalError,syncLiveSession:P.syncLiveSession}),Fe=(0,J.useCallback)(()=>{if(document.visibilityState!==`visible`||k.current)return;let e=(async()=>{f&&await B().catch(()=>void 0);let e=[];try{e=await _e(void 0,{preserveExistingOnEmpty:!0})}catch{}let t=new Set([...Object.keys(ve.current),...A.activeId?[A.activeId]:[],...e.filter(e=>e.streaming).map(e=>e.id)]);await Promise.allSettled(Array.from(t).map(e=>ye(e,{force:!0})))})().finally(()=>{k.current=null});k.current=e},[A.activeId,f,_e,ve,ye]);(0,J.useEffect)(()=>{let e=()=>Fe();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)}},[Fe]);let Le=(0,J.useCallback)(async e=>{await ge(e,{force:!0}),await _e(e)},[ge,_e]),Re=(0,J.useCallback)(async(t,n)=>{if(!(!t?.id||!n))try{if(xe(``),(await U.navigateSessionTree(t.id,n,!1)).cancelled)return;await Le(t.id),Ee(e=>({sessionId:t.id,token:e.token+1})),e(u(`chat:chatPage.branchedFromNode`))}catch(e){xe(e instanceof Error?e.message:String(e))}},[e,Le,xe,u]),ze=(0,J.useCallback)(async(t,n)=>{if(!t?.id||!n)return;let r=await c({title:u(`chat:chatPage.createChildChat`),inputLabel:u(`chat:chatPage.chatTitle`),value:`${u(`chat:chatPage.separateChatSuffix`)} · ${t.name||u(`chat:chatPage.newChat`)}`,confirmLabel:u(`chat:chatPage.create`)});if(r!==null)try{xe(``);let i=await U.deriveSession(t.id,n,r);await _e(),Se(i.id),Ee(e=>({sessionId:i.id,token:e.token+1})),e(u(`chat:chatPage.childChatCreated`))}catch(e){xe(e instanceof Error?e.message:String(e))}},[e,Se,_e,c,xe,u]),Be=(0,J.useCallback)(()=>t(`config`),[t]),Ve=W?G===`phone`&&ie===`context`&&ae===`changes`?`files`:null:le===`closed`?null:C,He=(0,J.useMemo)(()=>({sessions:A.sessions,subscribeSessionState:A.subscribeSessionState,getSessionState:A.getSessionState,defaultModel:A.defaultModel,availableModels:A.availableModels,globalError:A.globalError,activeId:A.activeId,compactDock:F.compactDock,contextTab:Ve,contextCompact:fe,contextPanelId:Tr,toggleSessionContext:me,sessionTreePulseSessionId:Te.sessionId,sessionTreePulseToken:Te.token,pendingAsset:o,onAssetConsumed:s,notify:e,openModelSettings:Be,loadSessionMessages:P.loadSessionMessages,loadOlderMessages:P.loadOlderMessages,sendPrompt:K.sendPrompt,retryLastTurn:K.retryLastTurn,queuePrompt:K.queuePrompt,withdrawQueuedInput:K.withdrawQueuedInput,abort:K.abort,pauseGoal:q.pauseGoal,setGoalBudget:q.setGoalBudget,compactSession:q.compactSession,setCompactionThreshold:q.setCompactionThreshold,switchSessionModel:q.switchSessionModel,loadSessionThinkingLevel:q.loadSessionThinkingLevel,switchSessionThinkingLevel:q.switchSessionThinkingLevel,switchSessionExecutionMode:q.switchSessionExecutionMode,switchSessionRunMode:q.switchSessionRunMode,resolveToolApproval:q.resolveToolApproval,selectSessionWorkspace:q.selectSessionWorkspace,renameSession:q.renameSession,branchFromEntry:Re,createChildSession:ze,reloadSessionBranch:Le,splitDockPanel:F.splitDockPanel,closeDockPanel:F.closeDockPanel}),[A.sessions,A.subscribeSessionState,A.getSessionState,A.defaultModel,A.availableModels,A.globalError,A.activeId,F.compactDock,Ve,fe,me,F.splitDockPanel,F.closeDockPanel,Te.sessionId,Te.token,o,s,e,Be,P.loadSessionMessages,P.loadOlderMessages,K.sendPrompt,K.retryLastTurn,K.queuePrompt,K.withdrawQueuedInput,K.abort,q.pauseGoal,q.setGoalBudget,q.compactSession,q.setCompactionThreshold,q.switchSessionModel,q.loadSessionThinkingLevel,q.switchSessionThinkingLevel,q.switchSessionExecutionMode,q.switchSessionRunMode,q.resolveToolApproval,q.selectSessionWorkspace,q.renameSession,Re,ze,Le]),Ue=A.discardSessionState,Ge=(0,J.useMemo)(()=>({subscribeSessionState:A.subscribeSessionState,getSessionState:A.getSessionState,retainSessionState:A.retainSessionState,discard:e=>{O.current.set(e,(O.current.get(e)??0)+1),D.current.delete(e),Ue(e)},loadSessionMessages:P.loadSessionMessages,loadOlderMessages:P.loadOlderMessages,syncLiveSession:P.syncLiveSession,send:(e,t)=>je(t,e,[],!1,!1,null,null,{activate:!1}),retry:e=>Ne(e,{activate:!1}),abort:K.abort,approve:q.resolveToolApproval}),[A.subscribeSessionState,A.getSessionState,A.retainSessionState,Ue,P.loadSessionMessages,P.loadOlderMessages,P.syncLiveSession,je,Ne,K.abort,q.resolveToolApproval]),Ke=L&&le!==`closed`&&(0,X.jsx)(J.Suspense,{fallback:le===`aside`?(0,X.jsx)(`aside`,{className:`h-full min-h-0 w-full rounded-[var(--r-md)] border border-[var(--stroke-soft)] bg-[var(--panel)] p-4 text-sm text-[var(--text-muted)]`,role:`status`,children:u(`chat:focusSession.gitLoading`)}):null,children:(0,X.jsx)(wr,{panelId:Tr,compact:le===`sheet`,sessionId:L.id,tab:C,plan:Oe(_,`plans`)?ne:null,streaming:z,plansAvailable:Oe(_,`plans`),requestConfirm:l,onTabChange:E,onClose:()=>S(!1)},L.id)});return(0,X.jsx)(Cr,{runtime:Ge,children:(0,X.jsx)(`div`,{ref:v,className:`chat-layout dock-layout relative flex w-full min-w-0 min-h-0 flex-1`,children:(0,X.jsx)(vr,{availableWidth:y,presentation:le,context:Ke,side:`right`,children:(0,X.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-1 flex-col`,children:[A.initializationError&&(0,X.jsx)(w,{title:u(`chat:chatPage.initializationFailed`),error:A.initializationError,pending:A.initializing,onRetry:A.retryInitialization,className:`m-3 w-auto shrink-0`}),A.loading?(0,X.jsxs)(re,{children:[(0,X.jsx)(I,{className:`animate-spin`,size:24}),(0,X.jsx)(`h2`,{children:u(`chat:chatPage.wakingTheAgent`)}),(0,X.jsx)(`p`,{children:u(`chat:chatPage.modelsSessionsAndContextAreSettlingIntoPlace`)})]}):A.initializationError&&!A.sessions.length?null:(0,X.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,X.jsx)(h.Provider,{value:He,children:p&&(g?(0,X.jsx)(d,{onCreateSession:Ae}):(0,X.jsx)(J.Suspense,{fallback:(0,X.jsx)(I,{className:`m-4 animate-spin`,"aria-hidden":`true`}),children:(0,X.jsx)(Er,{compactDock:F.compactDock,onDockReady:F.onDockReady,getTabContextMenuItems:F.getTabContextMenuItems,createSession:Ae})}))})})]})})})})}export{Or as ChatPage};
|
|
4
|
+
`);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:O(e.tools,t),currentActivity:t,activityFeed:O(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=(P(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=O(s,a)),o&&(s=O(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`)rt(e,f);else if(i===`mobile_operation_cancel`)nt(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===`generated_asset`)r(e,e=>({...e,lastActivityAt:p,messages:e.messages.map(e=>e.id===t?{...e,attachments:[...(e.attachments||[]).filter(e=>it(e)!==it(f)),f]}:e)}));else if(i===`goal_update`)r(e,e=>({...e,goal:f.goal??null,team:at(f,e.team)})),u(e=>({...e,goal:f.goal??null,team:at(f,e.team)}));else if(S(i))s.flush(),r(e,e=>{let t=v(f,e.plan),n=f.currentActivity||{type:`plan`,plan:t,changes:C(e.plan,t),updatedAt:t?.updatedAt||p};return{...e,lastActivityAt:p,plan:t,currentActivity:n,activityFeed:O(e.activityFeed,n)}}),u(e=>({...e,plan:v(f,e.plan??null)}));else if(i===`session_title`)u(e=>({...e,name:f.name}));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:O(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=>ot(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:at(f,e.team),plan:v(f,e.plan??null)})),!1;throw Error(f.message)}},state:l}}var ct=`pisper:usage-updated`;function lt({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:h}=a(),g=(0,J.useRef)(new Map),_=(0,J.useRef)(new Set),v=(0,J.useRef)(new Map),y=(0,J.useCallback)(async(t,a,_=[],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;let T=a;if(T||=await d(),!T||o.current[T]?.streaming)return;let E=o.current[T];if(E?.pendingRuntimeSelection||E?.switchingModel||E?.switchingThinking)return;let k=(i.current.get(T)||0)+1;i.current.set(T,k);let A=!1,j=()=>!A&&i.current.get(T)===k,N=()=>{},P=new Promise(e=>{N=e});g.current.set(T,{promise:P,resolve:N}),S.activate!==!1&&(s(T),c(``));let F={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}))},I=`agent-${Date.now()}`,ee=new Date().toISOString(),L={responseText:``,responseRenderingStreaming:!0,thinkingText:``,thinkingPrefix:``,queuedDuringRun:!1},R=Ke((e,t)=>{j()&&l(T,n=>j()?{...n,thinkingText:e,lastActivityAt:t||n.lastActivityAt,currentActivity:{type:`model`,stage:`thinking`,updatedAt:t||n.lastActivityAt}}:n)},{intervalMs:80}),z=Ze((e,t)=>{j()&&l(T,n=>{if(!j())return n;let r=n.messages.map(t=>t.id===I?{...t,text:e,streaming:L.responseRenderingStreaming||e!==L.responseText}:t);if(L.terminal||!L.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:O(n.activityFeed,i),messages:r}})},{isCurrent:j}),B=qe((e,t)=>{j()&&l(T,n=>{if(!j())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=O(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}})}),V=st({sessionId:T,agentId:I,sessionStatesRef:o,updateSessionState:l,updateSessions:u,typewriter:z,thinkingScheduler:R,toolScheduler:B,t:h}),te=(e,t)=>j()?e===`resync_required`?(V.dispatch(e,t),A=!0,i.current.delete(T),r.current.delete(T),m(T),!1):V.dispatch(e,t):!1;L=V.state,l(T,e=>{let t=v||y||e.goal?.status===`active`;return{...e,messages:[...C==null?e.messages:e.messages.slice(0,C),F,{id:I,role:`agent`,text:``,streaming:!0}],tools:[],approvals:[],error:``,streaming:!0,loaded:!0,runStartedAt:ee,lastActivityAt:ee,runFinishedAt:null,runStopped:!1,runNotice:``,currentActivity:{type:`model`,stage:`thinking`,updatedAt:ee},activityFeed:[],lifecycle:{phase:`starting`,event:`prompt_submitted`,turn:0,updatedAt:ee},thinkingText:``,hadQueuedInput:!1,withdrawnInputIds:[],queuedInputRunId:I,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 H=!1;try{if(C==null?await U.openStream({sessionId:T,message:w,attachments:_,goalMode:v,teamMode:y,goalTokenBudget:b,invocation:x},te):await U.retryLastTurn(T,te),!j())return;L.responseRenderingStreaming=!1,L.terminal=!0,z.setTarget(L.responseText),R.flush(),B.flush();let t=new Date().toISOString();if(o.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:M(e.tools,{finishedAt:n}),messages:e.messages.map(e=>e.id===I?{...e,streaming:e.text!==L.responseText}:e)}}),!await z.drain()||!j()||(l(T,e=>({...e,messages:e.messages.map(e=>e.id===I?{...e,text:L.responseText,streaming:!1}:e)})),!j()))return;(v||y||L.queuedDuringRun||o.current[T]?.hadQueuedInput||o.current[T]?.goal||o.current[T]?.queuedInputs?.length)&&l(T,{queuedInputs:[],hadQueuedInput:!1});let r;try{r=(await p()).find(e=>e.id===T)}catch{m(T)}if(!j())return;S.activate!==!1&&e?.(`chat.completed`,{chat:{title:r?.name||h(`chat:chatPage.appChat`,{app:`Pisper`}),summary:L.responseText.trim().slice(0,260)||h(`chat:chatPage.theAgentHasFinishedResponding`),model:o.current[T]?.model||n}})}catch(e){if(!j())return;if((L.runId||L.startedAt)&&!L.terminal){V.dispatch(`resync_required`,{}),A=!0,i.current.delete(T),r.current.delete(T),m(T);return}H=!0,z.cancel(),R.flush(),B.cancel();let t=new Date().toISOString(),n=D(e);if(l(T,e=>({...e,streaming:!1,error:n,runFinishedAt:t,lastActivityAt:t,runNotice:``,currentActivity:null,activityFeed:[],approvals:[],tools:M(e.tools,{finishedAt:t,error:n}),messages:e.messages.map(e=>e.id===I?{...e,streaming:!1,error:n,text:e.text||L.responseText}:e)})),L.queuedDuringRun||o.current[T]?.hadQueuedInput||o.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=j();A=!0,e&&(r.current.delete(T),i.current.delete(T),l(T,{streaming:!1,hadQueuedInput:!1}),g.current.get(T)?.promise===P&&g.current.delete(T)),z.cancel(),R.cancel(),B.cancel(),N(),window.dispatchEvent(new Event(ct)),H&&e&&m(T)}},[e,d,n,f,r,p,i,o,s,c,m,h,l,u]),S=(0,J.useCallback)(async(e,n,r=[],i=`steer`)=>{let a=String(e||``).trim()||(r.length?h(`chat:chatPage.pleaseAnalyzeTheseAttachments`):``);if(!n||!a)return!1;let s=o.current[n]?.queuedInputRunId;try{let e=await U.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=b(n,e),i=!r.withdrawnInputIds?.includes(e.inputId)&&n.queuedInputRunId===s;return{...r,messages:i?E(r.messages,o):r.messages,hadQueuedInput:!0,lastActivityAt:t}}),!0}catch(e){if(x(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}),y(a,n,r),!0}return t(D(e),`error`),!1}},[f,t,y,o,m,h,l]),C=(0,J.useCallback)(e=>{if(!e)return Promise.resolve();let n=o.current[e],r=v.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 U.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:M(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,o,m,h,l,u]),w=(0,J.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 U.withdrawQueuedInput(e,n);return l(e,e=>b(e,{...r,removedInputId:r.removed?n:void 0})),r.removed?r.withdrawnInput||null:(t(h(`chat:focusSession.queuedInputAlreadyConsumed`),`info`),null)}catch(e){return t(D(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,J.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 y(a.text||``,e,a.attachments||[],!1,!1,null,null,{retryFromIndex:i,...t})},[y,o]),queuePrompt:S,withdrawQueuedInput:w,abort:C}}function ut(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 dt({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 ut(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 ft=dt({isStreaming:async(e,t)=>{let n=await U.getLiveSession(e,{signal:t});return!!(n.configurationBusy??n.streaming)},apply:(e,t)=>t.model?U.updateModel(e,t.model.provider,t.model.modelId):U.setThinkingLevel(e,t.thinkingLevel)});function pt({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=(0,J.useRef)(new Map),m=(0,J.useCallback)(e=>{o(e,e=>({...e,runtimeSelectionRevision:(e.runtimeSelectionRevision||0)+1}))},[o]),h=(0,J.useCallback)((e,t)=>{s(n=>n.map(n=>n.id===e?t(n):n))},[s]),g=(0,J.useCallback)(async t=>{if(t)try{let n=await U.pauseGoal(t);o(t,{goal:n.goal||null}),h(t,e=>({...e,goal:n.goal||null})),e(d(`chat:chatPage.goalPaused`),`info`)}catch(e){o(t,{error:D(e)})}},[e,d,o,h]),_=(0,J.useCallback)(async(t,n)=>{if(t)try{let r=await U.setGoalBudget(t,n);o(t,{goal:r.goal||null}),h(t,e=>({...e,goal:r.goal||null})),e(d(`chat:chatPage.goalTokenBudgetUpdated`),`info`)}catch(e){o(t,{error:D(e)})}},[e,d,o,h]),v=(0,J.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 U.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:D(e)})}}},[e,i,u,d,o]),y=(0,J.useCallback)(async e=>{let t=await U.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]),b=(0,J.useCallback)((e,t={},n=``)=>{let r=String(t.model||n),a=String(i.current[e]?.model||``);if(r&&a&&r!==a)return;let s=Array.isArray(t.availableThinkingLevels)?t.availableThinkingLevels.map(e=>String(e)):Array.isArray(t.availableLevels)?t.availableLevels.map(e=>String(e)):[],c=String(t.thinkingLevel||``);o(e,{thinkingLevel:c||void 0,thinkingModel:r||a,availableThinkingLevels:s,thinkingStatus:String(t.thinkingStatus||t.status||``),thinkingMessage:String(t.thinkingMessage||t.message||``),switchingThinking:!1}),c&&h(e,e=>({...e,thinkingLevel:c}))},[i,o,h]),x=(0,J.useCallback)((e,t=``)=>{if(!e)return Promise.resolve();let n=i.current[e]?.runtimeSelectionRevision||0,r=i.current[e];if(r?.switchingModel||r?.switchingThinking)return Promise.resolve();let a=t||r?.model||``,s=p.current.get(e);if(s&&s.model===a&&s.revision===n)return s.promise;o(e,{thinkingModel:a,thinkingStatus:`loading`,thinkingMessage:``});let c=()=>{let t=i.current[e];return(t?.runtimeSelectionRevision||0)===n&&(!a||!t?.model||t.model===a)},l=(async()=>{try{let t=await U.getThinkingLevel(e);c()&&b(e,t,a)}catch{c()&&o(e,{thinkingModel:a,availableThinkingLevels:[],thinkingStatus:`error`,thinkingMessage:d(`chat:focusSession.thinkingLevelsLoadFailed`)})}finally{let t=p.current.get(e);t&&t.model===a&&t.revision===n&&p.current.delete(e)}})();return p.current.set(e,{model:a,revision:n,promise:l}),l},[b,i,d,o]),S=(0,J.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){ft.select(t,s.key===c.model?void 0:{model:s});return}m(t);let l=c?.model||``,u=!!c?.messages?.length&&!c?.compaction?.active;o(t,{switchingModel:!0,model:s.key,thinkingModel:``,availableThinkingLevels:[],thinkingStatus:``,thinkingMessage:``,error:``}),h(t,e=>({...e,model:s.key}));try{let r=await U.updateModel(t,s.provider,s.modelId);m(t),o(t,{model:r.model||s.key,contextUsage:r.contextUsage??null,switchingModel:!1}),h(t,e=>({...e,model:r.model||s.key})),Array.isArray(r.availableThinkingLevels)||Array.isArray(r.availableLevels)?b(t,r,s.key):await x(t,s.key),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 v(t)}catch(e){m(t),o(t,{switchingModel:!1,model:l||void 0,error:D(e)}),l&&h(t,e=>({...e,model:l}))}},[b,x,r,v,m,e,n,i,d,o,h]),C=(0,J.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;ft.select(t,r===a.thinkingLevel?void 0:{thinkingLevel:r});return}m(t);let s=String(a.thinkingLevel||``);o(t,{switchingThinking:!0,thinkingLevel:r,error:``}),h(t,e=>({...e,thinkingLevel:r}));try{let n=await U.setThinkingLevel(t,r);m(t),b(t,n),e(d(`chat:chatPage.switchedToThinkingLevel`,{level:String(n.thinkingLevel||r)}))}catch(e){m(t),o(t,{switchingThinking:!1,thinkingLevel:s||void 0,error:D(e)}),s&&h(t,e=>({...e,thinkingLevel:s}))}},[b,m,e,i,d,o,h]);(0,J.useEffect)(()=>ft.subscribe((t,n)=>{if(!n){o(t,{pendingRuntimeSelection:void 0});return}let{selection:r,status:i}=n;if(i===`pending`||i===`applying`){m(t),o(t,{pendingRuntimeSelection:{model:r.model?.key,thinkingLevel:r.thinkingLevel},switchingModel:i===`applying`&&!!r.model,switchingThinking:i===`applying`&&!!r.thinkingLevel,error:``});return}if(m(t),o(t,{pendingRuntimeSelection:void 0,switchingModel:!1,switchingThinking:!1,...n.error?{error:D(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}),h(t,t=>({...t,model:e}))}b(t,a),e(r.model?d(`chat:chatPage.switchedToModel`,{model:r.model.label}):d(`chat:chatPage.switchedToThinkingLevel`,{level:String(a.thinkingLevel||r.thinkingLevel)}))}),[b,m,e,d,o,h]);let w=(0,J.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 U.updateExecutionMode(t,r);return o(t,{executionMode:i.executionMode,permissionMode:i.permissionMode,switchingPermission:!1}),h(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:D(e)}),!1}},[e,n,d,o,h]),T=(0,J.useCallback)(async(e,t)=>{if(!e)return!1;try{let n=await U.updateRunMode(e,t),r=String(n.runMode||t);return o(e,{runMode:r}),h(e,e=>({...e,runMode:r})),!0}catch(t){return o(e,{error:D(t)}),!1}},[o,h]),E=(0,J.useCallback)(async(t,n,r)=>{o(t,{error:``});try{let e=await U.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 z&&n.status===404){e(d(`chat:chatPage.approvalStatusUpdated`),`info`);return}throw o(t,{error:D(n)}),n}},[e,u,d,o]),O=(0,J.useCallback)(async(t,n)=>{if(!(!t?.id||i.current[t.id]?.streaming)){o(t.id,{switchingCwd:!0,error:``});try{let r=await U.updateCwd(t.id,n);o(t.id,{cwd:r.cwd,switchingCwd:!1}),h(t.id,e=>({...e,cwd:r.cwd})),e(d(`chat:chatPage.workingDirectoryChangedToWorkspace`,{workspace:W(r.cwd,f)}))}catch(e){throw o(t.id,{switchingCwd:!1,error:D(e)}),e}}},[f,e,i,d,o,h]);return{switchSessionCwd:O,selectSessionWorkspace:(0,J.useCallback)(async t=>{if(t?.id){if(i.current[t.id]?.streaming){e(d(`chat:chatPage.stopTheActiveRunBeforeChangingTheWorkspace`),`info`);return}try{let e=await Ee(t.cwd);e&&await O(t,e)}catch(e){o(t.id,{switchingCwd:!1,error:D(e)})}}},[e,i,O,d,o]),renameSession:(0,J.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 U.renameSession(n.id,r);h(n.id,e=>({...e,name:t.name})),pe({id:n.id,name:t.name}),e(d(`chat:chatPage.chatTitleUpdated`))}catch(e){l(D(e))}},[e,t,i,l,d,h]),pauseGoal:g,setGoalBudget:_,compactSession:v,setCompactionThreshold:y,loadSessionThinkingLevel:x,switchSessionModel:S,switchSessionThinkingLevel:C,switchSessionExecutionMode:w,switchSessionRunMode:T,resolveToolApproval:E}}function mt(e,t){return!!(t.sessionId&&e?.sessionId===t.sessionId&&e.streaming&&!e.completed&&!t.streaming&&t.completed&&e.runStartedAt&&Number.isFinite(Date.parse(e.runStartedAt))&&e.runStartedAt===t.runStartedAt)}function ht(e,t,n=[]){if(!mt(e,t))return!1;let r=Date.parse(t.runStartedAt||``);return Number.isFinite(r)?n.some(e=>{let t=Date.parse(e.changedAt);return e.reverted||!Number.isFinite(t)||t<r?!1:e.added>0||e.removed>0||e.status===`created`||e.status===`deleted`||!e.snapshot&&e.pending}):!1}function gt(e){return typeof e!=`number`||!Number.isFinite(e)?360:Math.min(720,Math.max(280,Math.round(e)))}function _t({availableWidth:e,mobileLayout:t,hasSession:n,preference:r}){if(!n||r===`closed`)return`closed`;let i=t||e<800;return r===`auto`&&i?`closed`:i?`sheet`:`aside`}var vt=s(()=>({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{}}})),yt=c()(o((e,t)=>({width:360,open:!1,setWidth:n=>{let r=gt(n);t().width!==r&&e({width:r})},setOpen:n=>{t().open!==n&&e({open:n})}}),{name:`pisper-session-context-layout`,version:2,storage:vt,migrate:e=>{let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{};return{width:gt(`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:gt(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 bt({sessionId:e,streaming:t,completed:n,runStartedAt:r,enabled:i,open:a,onReveal:o}){let s=(0,J.useRef)(null),c=(0,J.useRef)(o);(0,J.useLayoutEffect)(()=>{c.current=o},[o]),(0,J.useEffect)(()=>{let o=s.current,l={sessionId:e,streaming:t,completed:n,runStartedAt:r};if(s.current=l,!i||a||!mt(o,l))return;let u=new AbortController,d=!0;return U.getSessionFileChanges(e,{signal:u.signal}).then(({files:e})=>{d&&ht(o,l,e)&&c.current()}).catch(()=>{}),()=>{d=!1,u.abort()}},[n,i,a,r,e,t])}var X=i();function xt(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function St(e,t){let n=getComputedStyle(e.ownerDocument.documentElement);return t*parseFloat(n.fontSize)}function Ct(e){return e/100*window.innerHeight}function wt(e){return e/100*window.innerWidth}function Tt(e){switch(typeof e){case`number`:return[e,`px`];case`string`:{let t=parseFloat(e);return e.endsWith(`%`)?[t,`%`]:e.endsWith(`px`)?[t,`px`]:e.endsWith(`rem`)?[t,`rem`]:e.endsWith(`em`)?[t,`em`]:e.endsWith(`vh`)?[t,`vh`]:e.endsWith(`vw`)?[t,`vw`]:[t,`%`]}}}function Et({groupSize:e,panelElement:t,styleProp:n}){let r,[i,a]=Tt(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=St(t,i);break;case`em`:r=xt(t,i);break;case`vh`:r=Ct(i);break;case`vw`:r=wt(i)}return r}function Z(e){return parseFloat(e.toFixed(3))}function Dt({group:e}){let{orientation:t,panels:n}=e;return n.reduce((e,n)=>(e+=t===`horizontal`?n.element.offsetWidth:n.element.offsetHeight,e),0)}function Ot(e){let{panels:t}=e,n=Dt({group:e});return n===0?t.map(e=>({groupResizeBehavior:e.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:e.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:e.panelConstraints.disabled,minSize:0,maxSize:100,panelId:e.id})):t.map(e=>{let{element:t,panelConstraints:r}=e,i=0;r.collapsedSize!==void 0&&(i=Z(Et({groupSize:n,panelElement:t,styleProp:r.collapsedSize})/n*100));let a;r.defaultSize!==void 0&&(a=Z(Et({groupSize:n,panelElement:t,styleProp:r.defaultSize})/n*100));let o=0;r.minSize!==void 0&&(o=Z(Et({groupSize:n,panelElement:t,styleProp:r.minSize})/n*100));let s=100;return r.maxSize!==void 0&&(s=Z(Et({groupSize:n,panelElement:t,styleProp:r.maxSize})/n*100)),{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:i,collapsible:r.collapsible===!0,defaultSize:a,disabled:r.disabled,minSize:o,maxSize:s,panelId:e.id}})}function Q(e,t=`Assertion error`){if(!e)throw Error(t)}function kt(e,t){return Array.from(t).sort(e===`horizontal`?At:jt)}function At(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function jt(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function Mt(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function Nt(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function Pt({orientation:e,rects:t,targetRect:n}){let r={x:n.x+n.width/2,y:n.y+n.height/2},i,a=Number.MAX_VALUE;for(let n of t){let{x:t,y:o}=Nt(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return Q(i,`No rect found`),i}var Ft;function It(){return Ft===void 0&&(Ft=typeof matchMedia==`function`&&!!matchMedia(`(pointer:coarse)`).matches),Ft}function Lt(e){let{element:t,orientation:n,panels:r,separators:i}=e,a=kt(n,Array.from(t.children).filter(Mt).map(e=>({element:e}))).map(({element:e})=>e),o=[],s=!1,c=!1,l=-1,u=-1,d=0,f,p=[];{let e=-1;for(let t of a)t.hasAttribute(`data-panel`)&&(e++,t.hasAttribute(`data-disabled`)||(d++,l===-1&&(l=e),u=e))}if(d>1){let t=-1;for(let d of a)if(d.hasAttribute(`data-panel`)){t++;let i=r.find(e=>e.element===d);if(i){if(f){let r=f.element.getBoundingClientRect(),a=d.getBoundingClientRect(),m;if(c){let e=n===`horizontal`?new DOMRect(r.right,r.top,0,r.height):new DOMRect(r.left,r.bottom,r.width,0),t=n===`horizontal`?new DOMRect(a.left,a.top,0,a.height):new DOMRect(a.left,a.top,a.width,0);switch(p.length){case 0:m=[e,t];break;case 1:{let i=p[0];m=[i,Pt({orientation:n,rects:[r,a],targetRect:i.element.getBoundingClientRect()})===r?t:e];break}default:m=p}}else m=p.length?p:[n===`horizontal`?new DOMRect(r.right,a.top,a.left-r.right,a.height):new DOMRect(a.left,r.bottom,a.width,a.top-r.bottom)];for(let n of m){let r=`width`in n?n:n.element.getBoundingClientRect(),a=It()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(r.width<a){let e=a-r.width;r=new DOMRect(r.x-e/2,r.y,r.width+e,r.height)}if(r.height<a){let e=a-r.height;r=new DOMRect(r.x,r.y-e/2,r.width,r.height+e)}!s&&!(t<=l||t>u)&&o.push({group:e,groupSize:Dt({group:e}),panels:[f,i],separator:`width`in n?void 0:n,rect:r}),s=!1}}c=!1,f=i,p=[]}}else if(d.hasAttribute(`data-separator`)){d.ariaDisabled!==null&&(s=!0);let e=i.find(e=>e.element===d);e?p.push(e):(f=void 0,p=[])}else c=!0}return o}var Rt=class{#e={};addListener(e,t){let n=this.#e[e];return n===void 0?this.#e[e]=[t]:n.includes(t)||n.push(t),()=>{this.removeListener(e,t)}}emit(e,t){let n=this.#e[e];if(n!==void 0){if(n.length===1)n[0].call(null,t);else{let e=!1,r=null,i=Array.from(n);for(let n=0;n<i.length;n++){let a=i[n];try{a.call(null,t)}catch(t){r===null&&(e=!0,r=t)}}if(e)throw r}}}removeAllListeners(){this.#e={}}removeListener(e,t){let n=this.#e[e];if(n!==void 0){let e=n.indexOf(t);e>=0&&n.splice(e,1)}}},zt={cursorFlags:0,state:`inactive`},Bt=new Rt;function Vt(){return zt}function Ht(e){return Bt.addListener(`change`,e)}function Ut(e){let t=zt,n={...zt};n.cursorFlags=e,zt=n,Bt.emit(`change`,{prev:t,next:n})}function Wt(e){let t=zt;zt=e,Bt.emit(`change`,{prev:t,next:e})}var Gt=e=>e,Kt=()=>{},qt=1,Jt=2,Yt=4,Xt=8,Zt=3,Qt=12,$t;function en(){return $t===void 0&&($t=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&($t=!0)),$t}function tn({cursorFlags:e,groups:t,state:n}){let r=0,i=0;switch(n){case`active`:case`hover`:t.forEach(e=>{if(!e.mutableState.disableCursor)switch(e.orientation){case`horizontal`:r++;break;case`vertical`:i++;break}})}if(r!==0||i!==0){if(n===`active`&&e&&en()){let t=(e&qt)!==0,n=(e&Jt)!==0,r=(e&Yt)!==0,i=(e&Xt)!==0;if(t)return r?`se-resize`:i?`ne-resize`:`e-resize`;if(n)return r?`sw-resize`:i?`nw-resize`:`w-resize`;if(r)return`s-resize`;if(i)return`n-resize`}return en()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var nn=new WeakMap;function rn(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=nn.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&(Object.isExtensible(e.adoptedStyleSheets)?e.adoptedStyleSheets.push(n):e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]));let r=Vt();switch(r.state){case`active`:case`hover`:{let e=tn({cursorFlags:r.cursorFlags,groups:r.hitRegions.map(e=>e.group),state:r.state}),i=`*, *:hover {cursor: ${e} !important; }`;if(t===i)return;t=i,e?n.cssRules.length===0?n.insertRule(i):n.replaceSync(i):n.cssRules.length===1&&n.deleteRule(0);break}case`inactive`:t=void 0,n.cssRules.length===1&&n.deleteRule(0)}nn.set(e,{prevStyle:t,styleSheet:n})}var an=new Map,on=new Rt;function sn(e){an=new Map(an),an.delete(e)}function cn(e,t){for(let[t]of an)if(t.id===e)return t}function ln(e,t){for(let[t,n]of an)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function un(){return an}function dn(e,t){return on.addListener(`groupChange`,n=>{n.group.id===e&&t(n)})}function fn(e,t,n){let r=an.get(e);an=new Map(an),an.set(e,t),on.emit(`groupChange`,{group:e,isUserInteraction:n?.isUserInteraction===!0,prev:r,next:t})}function pn(e){let t=Vt(),n=!1;return t.state===`active`&&(Wt({cursorFlags:0,state:`inactive`}),t.hitRegions.length>0&&(rn(e),n=!0,t.hitRegions.forEach(e=>{let t=ln(e.group.id,!0);fn(e.group,t,{isUserInteraction:!0})}))),n}function mn(e){e.defaultPrevented||pn(e.currentTarget)}function hn(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=Nt(n,a.rect);switch(e){case`horizontal`:t.x<=i.x&&(r=a,i=t);break;case`vertical`:t.y<=i.y&&(r=a,i=t)}}return r?{distance:i,hitRegion:r}:void 0}function gn(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function _n(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:Cn(e),b:Cn(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();Q(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:Sn(xn(n.a)),b:Sn(xn(n.b))};if(i.a===i.b){let e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)},i=e.length;for(;i--;){let n=e[i];if(n===t.a)return 1;if(n===t.b)return-1}}return Math.sign(i.a-i.b)}var vn=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function yn(e){let t=getComputedStyle(wn(e)??e).display;return t===`flex`||t===`inline-flex`}function bn(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||yn(e))||+t.opacity<1||`transform`in t&&t.transform!==`none`||`webkitTransform`in t&&t.webkitTransform!==`none`||`mixBlendMode`in t&&t.mixBlendMode!==`normal`||`filter`in t&&t.filter!==`none`||`webkitFilter`in t&&t.webkitFilter!==`none`||`isolation`in t&&t.isolation===`isolate`||vn.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function xn(e){let t=e.length;for(;t--;){let n=e[t];if(Q(n,`Missing node`),bn(n))return n}return null}function Sn(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Cn(e){let t=[];for(;e;)t.push(e),e=wn(e);return t}function wn(e){let{parentNode:t}=e;return gn(t)?t.host:t}function Tn(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function En({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!Mt(n)||n.contains(e)||e.contains(n))return!0;if(_n(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(Tn(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function Dn(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=Lt(r),a=hn(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&En({groupElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function On(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function $(e,t,n=0){return Math.abs(Z(e)-Z(t))<=n}function kn(e,t){return $(e,t)?0:e>t?1:-1}function An({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:r}){let{collapsedSize:i=0,collapsible:a,disabled:o,maxSize:s=100,minSize:c=0}=t;if(o&&!e)return n;if(kn(r,c)<0){if(a){let e=(i+c)/2;r=kn(r,e)<0?i:c}else r=c}return r=Math.min(s,r),r=Z(r),r}function jn({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if($(e,0))return t;let o=a===`imperative-api`,s=Object.values(t),c=Object.values(i),l=[...s],[u,d]=r;Q(u!=null,`Invalid first pivot index`),Q(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];Q(r,`Panel constraints not found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(Q(n!=null,`Previous layout not found for panel index ${t}`),$(n,i)){let t=o-n;kn(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];Q(r,`No panel constraints found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(Q(n!=null,`Previous layout not found for panel index ${t}`),$(n,o)){let t=n-i;kn(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];Q(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsible:a,collapsedSize:o,minSize:c}=r;if(a&&kn(i,c)<0){if(e>0){let t=c-o,n=t/2;kn(i+e,c)<0&&(e=kn(e,n)<=0?0:t)}else{let t=c-o,n=100-t/2;kn(i-e,c)<0&&(e=kn(100+e,n)>0?0:-t)}}break}}{let t=e<0?1:-1,r=e<0?d:u,i=0;for(;;){let e=s[r];Q(e!=null,`Previous layout not found for panel index ${r}`);let a=An({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:e,size:100})-e;if(i+=a,r+=t,r<0||r>=n.length)break}let a=Math.min(Math.abs(e),Math.abs(i));e=e<0?0-a:a}{let t=e<0?u:d;for(;t>=0&&t<n.length;){let r=Math.abs(e)-Math.abs(f),i=s[t];Q(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=An({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:i,size:a});if(!$(i,c)&&(f+=i-c,l[t]=c,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(On(c,l))return i;{let t=e<0?d:u,r=s[t];Q(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=An({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!$(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];Q(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=An({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:i,size:a});if($(i,s)||(t-=s-i,l[r]=s),$(t,0))break;e>0?r--:r++}}}if(!$(Object.values(l).reduce((e,t)=>t+e,0),100,.1))return i;let p=Object.keys(i);return l.reduce((e,t,n)=>(e[p[n]]=t,e),{})}function Mn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||kn(e[n],t[n])!==0)return!1;return!0}function Nn({layout:e,panelConstraints:t}){let n=Object.values(e),r=[...n],i=r.reduce((e,t)=>e+t,0);if(r.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${r.map(e=>`${e}%`).join(`, `)}`);if(!$(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];Q(t!=null,`No layout data found for index ${e}`);let n=100/i*t;r[e]=n}let a=0;for(let e=0;e<t.length;e++){let i=n[e];Q(i!=null,`No layout data found for index ${e}`);let o=r[e];Q(o!=null,`No layout data found for index ${e}`);let s=An({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!$(a,0))for(let e=0;e<t.length;e++){let n=r[e];Q(n!=null,`No layout data found for index ${e}`);let i=n+a,o=An({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,$(a,0)))break}let o=Object.keys(e);return r.reduce((e,t,n)=>(e[o[n]]=t,e),{})}function Pn({groupId:e,panelId:t}){let n=()=>{let t=un();for(let[n,{defaultLayoutDeferred:r,derivedPanelConstraints:i,layout:a,groupSize:o,separatorToPanels:s}]of t)if(n.id===e)return{defaultLayoutDeferred:r,derivedPanelConstraints:i,group:n,groupSize:o,layout:a,separatorToPanels:s};throw Error(`Group ${e} not found`)},r=()=>{let e=n().derivedPanelConstraints.find(e=>e.panelId===t);if(e!==void 0)return e;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{let e=n().group.panels.find(e=>e.id===t);if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},a=()=>{let e=n().layout[t];if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},o=({nextSize:e,panels:n,prevLayout:r,derivedPanelConstraints:i})=>{let o=a(),s=n.findIndex(e=>e.id===t),c=s===0,l=s===n.length-1;if(l&&e<o&&(c||n.slice(0,s).every((e,t)=>{let n=i[t];return n?.collapsible&&$(n.collapsedSize,r[n.panelId])}))){let e=n.slice(0,s).reduce((e,t)=>e+r[t.id],0);return{...r,[t]:Z(100-e)}}return jn({delta:l?o-e:e-o,initialLayout:r,panelConstraints:i,pivotIndices:l?[s-1,s]:[s,s+1],prevLayout:r,trigger:`imperative-api`})},s=e=>{if(e===a())return;let{defaultLayoutDeferred:t,derivedPanelConstraints:r,group:i,groupSize:s,layout:c,separatorToPanels:l}=n(),u=Nn({layout:o({nextSize:e,panels:i.panels,prevLayout:c,derivedPanelConstraints:r}),panelConstraints:r});Mn(c,u)||fn(i,{defaultLayoutDeferred:t,derivedPanelConstraints:r,groupSize:s,layout:u,separatorToPanels:l})};return{collapse:()=>{let{collapsible:e,collapsedSize:t}=r(),{mutableValues:n}=i(),o=a();e&&o!==t&&(n.expandToSize=o,s(t))},expand:()=>{let{collapsible:e,collapsedSize:t,minSize:n}=r(),{mutableValues:o}=i(),c=a();if(e&&c===t){let e=o.expandToSize??n;e===0&&(e=1),s(e)}},getSize:()=>{let{group:e}=n(),t=a(),{element:r}=i();return{asPercentage:t,inPixels:e.orientation===`horizontal`?r.offsetWidth:r.offsetHeight}},isCollapsed:()=>{let{collapsible:e,collapsedSize:t}=r(),n=a();return e&&$(t,n)},resize:e=>{let{group:t}=n(),{element:r}=i(),a=Dt({group:t}),o=Z(Et({groupSize:a,panelElement:r,styleProp:e})/a*100);s(o)}}}function Fn(e){e.defaultPrevented||Dn(e,un()).forEach(t=>{if(t.separator&&!t.separator.disableDoubleClick){let n=t.panels.find(e=>e.panelConstraints.defaultSize!==void 0);if(n){let r=n.panelConstraints.defaultSize,i=Pn({groupId:t.group.id,panelId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function In(e){let t=un();for(let[n]of t)if(n.separators.some(t=>t.element===e))return n;throw Error(`Could not find parent Group for separator element`)}function Ln({groupId:e}){let t=()=>{let t=un();for(let[n,r]of t)if(n.id===e)return{group:n,...r};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){let{defaultLayoutDeferred:e,layout:n}=t();return e?{}:n},setLayout(e){let{defaultLayoutDeferred:n,derivedPanelConstraints:r,group:i,groupSize:a,layout:o,separatorToPanels:s}=t(),c=Nn({layout:e,panelConstraints:r});return n?o:(Mn(o,c)||fn(i,{defaultLayoutDeferred:n,derivedPanelConstraints:r,groupSize:a,layout:c,separatorToPanels:s}),c)}}}function Rn(e,t){let n=In(e),r=ln(n.id,!0),i=n.separators.find(t=>t.element===e);Q(i,`Matching separator not found`);let a=r.separatorToPanels.get(i);Q(a,`Matching panels not found`);let o=a.map(e=>n.panels.indexOf(e)),s=Ln({groupId:n.id}).getLayout(),c=Nn({layout:jn({delta:t,initialLayout:s,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),panelConstraints:r.derivedPanelConstraints});Mn(s,c)||fn(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:c,separatorToPanels:r.separatorToPanels},{isUserInteraction:!0})}function zn(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=In(t);if(!n.disabled)switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&Rn(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&Rn(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&Rn(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&Rn(t,-5);break;case`End`:e.preventDefault(),Rn(t,100);break;case`Enter`:{e.preventDefault();let n=In(t),{derivedPanelConstraints:r,layout:i,separatorToPanels:a}=ln(n.id,!0),o=n.separators.find(e=>e.element===t);Q(o,`Matching separator not found`);let s=a.get(o);Q(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.panelId===c.id);if(Q(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];Rn(t,(l.collapsedSize===e?n.mutableState.expandedPanelSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let n=In(t).separators.map(e=>e.element),r=Array.from(n).findIndex(t=>t===e.currentTarget);Q(r!==null,`Index not found`),n[e.shiftKey?r>0?r-1:n.length-1:r+1<n.length?r+1:0].focus({preventScroll:!0});break}case`Home`:e.preventDefault(),Rn(t,-100);break}}function Bn(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=un(),n=Dn(e,t),r=new Map,i=!1;n.forEach(e=>{e.separator&&(i||(i=!0,e.separator.element.focus({focusVisible:!1,preventScroll:!0})));let n=t.get(e.group);n&&r.set(e.group,n.layout)}),Wt({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:`active`}),n.length&&e.preventDefault()}function Vn({document:e,event:t,hitRegions:n,initialLayoutMap:r,mountedGroups:i,pointerDownAtPoint:a,prevCursorFlags:o}){let s=0;n.forEach(e=>{let{group:n,groupSize:o}=e,{orientation:c,panels:l}=n,{disableCursor:u}=n.mutableState,d=0;d=a?c===`horizontal`?(t.clientX-a.x)/o*100:(t.clientY-a.y)/o*100:c===`horizontal`?t.clientX<0?-100:100:t.clientY<0?-100:100;let f=r.get(n),p=i.get(n);if(!f||!p)return;let{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:_,separatorToPanels:v}=p;if(h&&_&&v){let t=jn({delta:d,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>l.indexOf(e)),prevLayout:_,trigger:`mouse-or-touch`});if(Mn(t,_)){if(d!==0&&!u)switch(c){case`horizontal`:s|=d<0?qt:Jt;break;case`vertical`:s|=d<0?Yt:Xt;break}}else fn(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:v})}});let c=0;t.movementX===0?c|=o&Zt:c|=s&Zt,t.movementY===0?c|=o&Qt:c|=s&Qt,Ut(c),rn(e)}function Hn(e){let t=un(),n=Vt();n.state===`active`&&Vn({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}function Un(e){if(e.defaultPrevented)return;let t=Vt(),n=un();switch(t.state){case`active`:if(e.buttons===0){Wt({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{let t=ln(e.group.id,!0);fn(e.group,t,{isUserInteraction:!0})});return}for(let n of t.hitRegions)if(n.separator){let{element:t}=n.separator;t.hasPointerCapture?.(e.pointerId)||t.setPointerCapture?.(e.pointerId)}Vn({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=Dn(e,n);r.length===0?t.state!==`inactive`&&Wt({cursorFlags:0,state:`inactive`}):Wt({cursorFlags:0,hitRegions:r,state:`hover`}),rn(e.currentTarget);break}}}function Wn(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(Vt().state){case`hover`:Wt({cursorFlags:0,state:`inactive`})}}function Gn(e){e.defaultPrevented||e.pointerType===`mouse`&&e.button>0||pn(e.currentTarget)&&e.preventDefault()}function Kn(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=Z(i.defaultSize);n+=e,r[i.panelId]=e}else r[i.panelId]=void 0;let i=e.length-t;if(i!==0){let t=Z((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.panelId]=t)}return r}function qn(e,t,n){if(!n[0])return;let r=e.panels.find(e=>e.element===t);if(!r||!r.onResize)return;let i=Dt({group:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:Z(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function Jn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function Yn({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,a=0,o=!1,s=new Map,c=[];for(let l of e.panels){let e=r[l.id]??0;switch(l.panelConstraints.groupResizeBehavior){case`preserve-pixel-size`:{o=!0;let r=Z(e/100*n/t*100);s.set(l.id,r),i+=r;break}default:c.push(l.id),a+=e}}if(!o||c.length===0)return r;let l=100-i,u={...r};if(s.forEach((e,t)=>{u[t]=e}),a>0)for(let e of c)u[e]=Z((r[e]??0)/a*l);else{let e=Z(l/c.length);for(let t of c)u[t]=e}return u}function Xn(e,t){let n=e.map(e=>e.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;return!0}var Zn=new Map;function Qn(e){let t=!0;Q(e.element.ownerDocument.defaultView,`Cannot register an unmounted Group`);let n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,a=new n(n=>{for(let r of n){let{borderBoxSize:n,target:i}=r;if(i===e.element){if(t){let t=Dt({group:e});if(t===0)return;let n=ln(e.id);if(!n)return;let r=Ot(e),i=n.defaultLayoutDeferred?Kn(r):n.layout,a=Nn({layout:Yn({group:e,nextGroupSize:t,prevGroupSize:n.groupSize,prevLayout:i}),panelConstraints:r});if(!n.defaultLayoutDeferred&&Mn(n.layout,a)&&Jn(n.derivedPanelConstraints,r)&&n.groupSize===t)return;fn(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:r,groupSize:t,layout:a,separatorToPanels:n.separatorToPanels})}}else qn(e,i,n)}});a.observe(e.element),e.panels.forEach(e=>{Q(!r.has(e.id),`Panel ids must be unique; id "${e.id}" was used more than once`),r.add(e.id),e.onResize&&a.observe(e.element)});let o=Dt({group:e}),s=Ot(e),c=e.panels.map(({id:e})=>e).join(`,`),l=e.mutableState.defaultLayout;l&&(Xn(e.panels,l)||(l=void 0));let u=Nn({layout:e.mutableState.layouts[c]??l??Kn(s),panelConstraints:s}),d=e.element.ownerDocument;Zn.set(d,(Zn.get(d)??0)+1);let f=new Map;return Lt(e).forEach(e=>{e.separator&&f.set(e.separator,e.panels)}),fn(e,{defaultLayoutDeferred:o===0,derivedPanelConstraints:s,groupSize:o,layout:u,separatorToPanels:f}),e.separators.forEach(e=>{Q(!i.has(e.id),`Separator ids must be unique; id "${e.id}" was used more than once`),i.add(e.id),e.element.addEventListener(`keydown`,zn)}),Zn.get(d)===1&&(d.addEventListener(`contextmenu`,mn,!0),d.addEventListener(`dblclick`,Fn,!0),d.addEventListener(`pointerdown`,Bn,!0),d.addEventListener(`pointerleave`,Hn),d.addEventListener(`pointermove`,Un),d.addEventListener(`pointerout`,Wn),d.addEventListener(`pointerup`,Gn,!0)),function(){t=!1,Zn.set(d,Math.max(0,(Zn.get(d)??0)-1)),sn(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,zn)}),Zn.get(d)||(d.removeEventListener(`contextmenu`,mn,!0),d.removeEventListener(`dblclick`,Fn,!0),d.removeEventListener(`pointerdown`,Bn,!0),d.removeEventListener(`pointerleave`,Hn),d.removeEventListener(`pointermove`,Un),d.removeEventListener(`pointerout`,Wn),d.removeEventListener(`pointerup`,Gn,!0)),a.disconnect()}}function $n(){let[e,t]=(0,J.useState)({});return[e,(0,J.useCallback)(()=>t({}),[])]}function er(e){let t=(0,J.useId)();return`${e??t}`}var tr=typeof window<`u`?J.useLayoutEffect:J.useEffect;function nr(e){let t=(0,J.useRef)(e);return tr(()=>{t.current=e},[e]),(0,J.useCallback)((...e)=>t.current?.(...e),[t])}function rr(...e){return nr(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function ir(e){let t=(0,J.useRef)({...e});return tr(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var ar=(0,J.createContext)(null);function or(e,t){let n=(0,J.useRef)({getLayout:()=>({}),setLayout:Gt});(0,J.useImperativeHandle)(t,()=>n.current,[]),tr(()=>{Object.assign(n.current,Ln({groupId:e}))})}function sr({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:a,groupRef:o,id:s,onLayoutChange:c,onLayoutChanged:l,orientation:u=`horizontal`,resizeTargetMinimumSize:d={coarse:20,fine:10},style:f,...p}){let m=(0,J.useRef)({onLayoutChange:{},onLayoutChanged:{}}),h=nr(e=>{Mn(m.current.onLayoutChange,e)||(m.current.onLayoutChange=e,c?.(e))}),g=nr((e,t)=>{Mn(m.current.onLayoutChanged,e)||(m.current.onLayoutChanged=e,l?.(e,{isUserInteraction:t}))}),_=er(s),v=(0,J.useRef)(null),[y,b]=$n(),x=(0,J.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:d,separators:[]}),S=rr(v,a);or(_,o);let C=nr((e,t)=>{let r=Vt(),i=cn(e),a=ln(e);if(a){let e=!1;return r.state===`active`&&(e=r.hitRegions.some(e=>e.group===i)),{flexGrow:a.layout[t]??1,pointerEvents:e?`none`:void 0}}if(n?.[t])return{flexGrow:n?.[t]}}),w=ir({defaultLayout:n,disableCursor:r}),T=(0,J.useMemo)(()=>({get disableCursor(){return!!w.disableCursor},getPanelStyles:C,id:_,orientation:u,registerPanel:e=>{let t=x.current;return t.panels=kt(u,[...t.panels,e]),b(),()=>{t.panels=t.panels.filter(t=>t!==e),b()}},registerSeparator:e=>{let t=x.current;return t.separators=kt(u,[...t.separators,e]),b(),()=>{t.separators=t.separators.filter(t=>t!==e),b()}},updatePanelProps:(e,{disabled:t})=>{let n=x.current.panels.find(t=>t.id===e);n&&(n.panelConstraints.disabled=t);let r=cn(_),i=ln(_);r&&i&&fn(r,{...i,derivedPanelConstraints:Ot(r)})},updateSeparatorProps:(e,{disabled:t,disableDoubleClick:n})=>{let r=x.current.separators.find(t=>t.id===e);r&&(r.disabled=t,r.disableDoubleClick=n)}}),[C,_,b,u,w]),E=(0,J.useRef)(null);return tr(()=>{let e=v.current;if(e===null)return;let t=x.current,n;if(w.defaultLayout!==void 0&&Object.keys(w.defaultLayout).length===t.panels.length){n={};for(let e of t.panels){let t=w.defaultLayout[e.id];t!==void 0&&(n[e.id]=t)}}let r={disabled:!!i,element:e,id:_,mutableState:{defaultLayout:n,disableCursor:!!w.disableCursor,expandedPanelSizes:x.current.lastExpandedPanelSizes,layouts:x.current.layouts},orientation:u,panels:t.panels,resizeTargetMinimumSize:t.resizeTargetMinimumSize,separators:t.separators};E.current=r;let a=Qn(r),{defaultLayoutDeferred:o,derivedPanelConstraints:s,layout:c}=ln(r.id,!0);!o&&s.length>0&&(h(c),g(c,!1));let l=dn(_,e=>{let{defaultLayoutDeferred:t,derivedPanelConstraints:n,layout:i}=e.next;if(t||n.length===0)return;let a=r.panels.map(({id:e})=>e).join(`,`);r.mutableState.layouts[a]=i,n.forEach(t=>{if(t.collapsible){let{layout:n}=e.prev??{};if(n){let e=$(t.collapsedSize,i[t.panelId]),a=$(t.collapsedSize,n[t.panelId]);e&&!a&&(r.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let o=Vt().state!==`active`;h(i),o&&g(i,e.isUserInteraction)});return()=>{E.current=null,a(),l()}},[i,_,g,h,u,y,w]),(0,J.useEffect)(()=>{let e=E.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,X.jsx)(ar.Provider,{value:T,children:(0,X.jsx)(`div`,{...p,className:t,"data-group":!0,"data-testid":_,id:_,ref:S,style:{height:`100%`,width:`100%`,overflow:`hidden`,...f,display:`flex`,flexDirection:u===`horizontal`?`row`:`column`,flexWrap:`nowrap`,touchAction:u===`horizontal`?`pan-y`:`pan-x`},children:e})})}sr.displayName=`Group`;function cr(){let e=(0,J.useContext)(ar);return Q(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function lr(e,t){let{id:n}=cr(),r=(0,J.useRef)({collapse:Kt,expand:Kt,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:Kt});(0,J.useImperativeHandle)(t,()=>r.current,[]),tr(()=>{Object.assign(r.current,Pn({groupId:n,panelId:e}))})}function ur({children:e,className:t,collapsedSize:n=`0%`,collapsible:r=!1,defaultSize:i,disabled:a,elementRef:o,groupResizeBehavior:s=`preserve-relative-size`,id:c,maxSize:l=`100%`,minSize:u=`0%`,onResize:d,panelRef:f,style:p,...m}){let h=!!c,g=er(c),_=ir({disabled:a}),v=(0,J.useRef)(null),y=rr(v,o),{getPanelStyles:b,id:x,orientation:S,registerPanel:C,updatePanelProps:w}=cr(),T=d!==null,E=nr((e,t,n)=>{d?.(e,c,n)});tr(()=>{let e=v.current;if(e!==null){let t={element:e,id:g,idIsStable:h,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:T?E:void 0,panelConstraints:{groupResizeBehavior:s,collapsedSize:n,collapsible:r,defaultSize:i,disabled:_.disabled,maxSize:l,minSize:u}};return C(t)}},[s,n,r,i,T,g,h,l,u,E,C,_]),(0,J.useEffect)(()=>{w(g,{disabled:a})},[a,g,w]),lr(g,f);let D=()=>{let e=b(x,g);if(e)return JSON.stringify(e)},O=(0,J.useSyncExternalStore)(e=>dn(x,e),D,D),k;return k=O?JSON.parse(O):i===void 0?{flexGrow:1}:{flexGrow:void 0,flexShrink:void 0,flexBasis:i},(0,X.jsx)(`div`,{...m,"data-disabled":a||void 0,"data-panel":!0,"data-testid":g,id:g,ref:y,style:{...dr,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...k},children:(0,X.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...p,touchAction:S===`horizontal`?`pan-y`:`pan-x`},children:e})})}ur.displayName=`Panel`;var dr={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function fr(){return(0,J.useRef)(null)}function pr({layout:e,panelConstraints:t,panelId:n,panelIndex:r}){let i,a,o=e[n],s=t.find(e=>e.panelId===n);if(s){let c=s.maxSize,l=s.collapsible?s.collapsedSize:s.minSize,u=[r,r+1];a=Nn({layout:jn({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=Nn({layout:jn({delta:c-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function mr({children:e,className:t,disabled:n,disableDoubleClick:r,elementRef:i,id:a,style:o,...s}){let c=er(a),l=ir({disabled:n,disableDoubleClick:r}),[u,d]=(0,J.useState)({}),[f,p]=(0,J.useState)(`inactive`),[m,h]=(0,J.useState)(!1),g=(0,J.useRef)(null),_=rr(g,i),{disableCursor:v,id:y,orientation:b,registerSeparator:x,updateSeparatorProps:S}=cr(),C=b===`horizontal`?`vertical`:`horizontal`;tr(()=>{let e=g.current;if(e!==null){let t={disabled:l.disabled,disableDoubleClick:l.disableDoubleClick,element:e,id:c},n=x(t),r=Ht(e=>{p(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===t)?e.next.state:`inactive`)}),i=dn(y,e=>{let{derivedPanelConstraints:n,layout:r,separatorToPanels:i}=e.next,a=i.get(t);if(a){let e=a[0],t=a.indexOf(e);d(pr({layout:r,panelConstraints:n,panelId:e.id,panelIndex:t}))}});return()=>{r(),i(),n()}}},[y,c,x,l]),(0,J.useEffect)(()=>{S(c,{disabled:n,disableDoubleClick:r})},[n,r,c,S]);let w;n&&!v&&(w=`not-allowed`);let T;if(n)T=`disabled`;else switch(f){case`active`:T=`active`;break;default:T=m?`focus`:f}return(0,X.jsx)(`div`,{...s,"aria-controls":u.valueControls,"aria-disabled":n||void 0,"aria-orientation":C,"aria-valuemax":u.valueMax,"aria-valuemin":u.valueMin,"aria-valuenow":u.valueNow,children:e,className:t,"data-separator":T,"data-testid":c,id:c,onBlur:()=>h(!1),onFocus:()=>h(!0),ref:_,role:`separator`,style:{flexBasis:`auto`,cursor:w,...o,flexGrow:0,flexShrink:0,touchAction:`none`},tabIndex:n?void 0:0})}mr.displayName=`Separator`;function hr({className:e,...t}){return(0,X.jsx)(sr,{"data-slot":`resizable-panel-group`,className:u(`flex h-full w-full aria-[orientation=vertical]:flex-col`,e),...t})}function gr({...e}){return(0,X.jsx)(ur,{"data-slot":`resizable-panel`,...e})}function _r({withHandle:e,className:t,...n}){return(0,X.jsx)(mr,{"data-slot":`resizable-handle`,className:u(`relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90`,t),...n,children:e&&(0,X.jsx)(`div`,{className:`z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border`})})}function vr({availableWidth:e,presentation:t,children:n,context:r,side:i=`right`}){let{t:o}=a(),s=yt(e=>e.width),c=yt(e=>e.setWidth),l=fr(),u=(0,J.useRef)(null),d=(0,J.useRef)(null),f=t===`aside`;(0,J.useLayoutEffect)(()=>{f&&e>0&&l.current?.resize(s)},[f,e,l,s,i]);let p=(0,X.jsx)(gr,{id:`chat-conversation`,minSize:f?400:0,children:n},`conversation`),m=(0,X.jsx)(_r,{elementRef:d,"aria-label":o(`chat:sessionContext.resize`),title:o(`chat:sessionContext.resizeHint`),withHandle:!0,disableDoubleClick:!0,onDoubleClick:()=>{c(360),l.current?.resize(360)},className:`w-2 bg-transparent after:w-2 focus-visible:ring-inset [&>div]:h-10 [&>div]:bg-[var(--stroke-soft)] hover:[&>div]:bg-[var(--brand-blue)] focus-visible:[&>div]:bg-[var(--brand-blue)]`},`separator`),h=(0,X.jsx)(gr,{id:`chat-context`,panelRef:l,defaultSize:s,minSize:280,maxSize:720,groupResizeBehavior:`preserve-pixel-size`,children:r},`context`);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(hr,{id:`chat-context-layout`,elementRef:u,orientation:`horizontal`,className:`min-h-0 min-w-0 flex-1`,disabled:!f,onLayoutChanged:(e,{isUserInteraction:t})=>{if(!f||!t)return;let n=u.current,r=d.current,i=e[`chat-context`];if(!n||!r||!Number.isFinite(i))return;let a=n.clientWidth-r.getBoundingClientRect().width;a>0&&c(a*i/100)},children:f?i===`left`?[h,m,p]:[p,m,h]:[p]}),t===`sheet`&&r]})}function yr(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function br(e){if(!yr(e)||typeof e.created!=`boolean`)throw L();if(e.session===null){if(e.expiresAt!==null||e.created)throw L();return{session:null,expiresAt:null,created:!1}}let t=e.session;if(!yr(t)||typeof t.id!=`string`||!t.id||typeof e.expiresAt!=`string`||!Number.isFinite(Date.parse(e.expiresAt)))throw L();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 L();typeof r==`string`&&(n[e]=r)}if(t.streaming!==void 0&&typeof t.streaming!=`boolean`)throw L();return typeof t.streaming==`boolean`&&(n.streaming=t.streaming),{session:n,expiresAt:e.expiresAt,created:e.created}}async function xr(e,t){return br(await R(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{signal:t}))}async function Sr(e,t){let n=br(await R(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{method:`POST`,signal:t}));if(!n.session)throw L();return n}function Cr({runtime:e,children:t}){let[n,r]=(0,J.useState)({}),i=(0,J.useRef)(n),a=(0,J.useRef)(!0),o=(0,J.useRef)(e),s=(0,J.useRef)(new Map),c=(0,J.useRef)(new Map);(0,J.useLayoutEffect)(()=>{o.current=e},[e]),(0,J.useLayoutEffect)(()=>(a.current=!0,()=>{a.current=!1}),[]);let l=(0,J.useCallback)((e,t)=>{let n={...i.current,[e]:{...i.current[e]??K,...t}};i.current=n,r(n)},[]),u=(0,J.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?Sr:xr)(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),p(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:D(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,J.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,J.useCallback)((e,t)=>l(e,{draft:t}),[l]),f=(0,J.useMemo)(()=>({entries:n,runtime:e,load:u,setDraft:d}),[n,e,u,d]);return(0,X.jsx)(Ae.Provider,{value:f,children:t})}var wr=(0,J.lazy)(()=>t(()=>import(`./SessionContextPanel-lu9F9AJg.js`).then(e=>({default:e.SessionContextPanel})),__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]))),Tr=`chat-session-context-panel`,Er=(0,J.lazy)(()=>t(()=>import(`./ChatDockView-DoGtrBpY.js`).then(e=>({default:e.ChatDockView})),__vite__mapDeps([88,3,7,4,5,6,8,9,1,10,11,12,13,14,15,16,17,18,19,20,89,22,90,91,26,92,29,30,31,93,21,94,27,28,95,96,32,33,97,98,99,100,58,101,37,38,102,40,41,25,34,35,36,39,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,103,104,105,106,85,107,108,109,81,110,111,112,113,114,115,116,117,118,119,120,84,121,122,123,23,124,24,125,126,86])));function Dr(e){let t=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return t?t(e):Promise.reject(Error(`native bridge unavailable`))}function Or({notify:e,navigate:t,browserNotify:n,reportActiveSessionRun:r,registerPrimaryAction:i,pendingAsset:o,onAssetConsumed:s,requestText:c,requestConfirm:l}){let{t:u}=a(),f=H(e=>e.client===`mobile-app`),p=H(e=>e.loaded),m=ee(),g=f||m,_=ke(e=>e.capabilities),v=(0,J.useRef)(null),[y,b]=(0,J.useState)(0),x=yt(e=>e.open),S=yt(e=>e.setOpen),[C,E]=(0,J.useState)(`files`);(0,J.useLayoutEffect)(()=>{let e=v.current;if(!e)return;let t=()=>b(e.clientWidth);if(t(),typeof ResizeObserver>`u`)return window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t);let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let D=(0,J.useRef)(new Set),O=(0,J.useRef)(new Map),k=(0,J.useRef)(null),A=Pe({notify:e}),M=(0,J.useRef)(new Set);(0,J.useEffect)(()=>{let e=()=>{let e=A.activeId;!e||document.visibilityState!==`visible`||!A.sessions.some(t=>t.id===e&&t.unread)||M.current.has(e)||(M.current.add(e),be(e,{read:!0}).catch(()=>void 0).finally(()=>M.current.delete(e)))};return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[A.activeId,A.sessions]);let P=We({sessionStates:A.sessionStates,sessionStatesRef:A.sessionStatesRef,localStreamSessionsRef:D,streamGenerationRef:O,updateSessionState:A.updateSessionState,updateSessions:A.updateSessions}),F=Ie({sessions:A.sessions,sessionsRef:A.sessionsRef,sessionStates:A.sessionStates,activeId:A.activeId,setActiveId:A.setActiveId,loading:A.loading,localStreamSessionsRef:D,loadSessionMessages:P.loadSessionMessages,releaseSessionState:A.releaseSessionState,singleSessionLayout:g,notify:e}),L=A.sessions.find(e=>e.id===A.activeId),R=A.sessionStates[A.activeId],z=j(R,L);(0,J.useLayoutEffect)(()=>(r({sessionId:A.activeId,streaming:z}),()=>r(null)),[z,A.activeId,r]);let V=R?.lifecycle?.phase===`completed`&&!R.error&&!R.runStopped,te=N(R,L),ne=T(te,{streaming:z})?te:null,{active:W,mode:G,pane:ie,tab:ae,openContext:se,setPane:ce}=Me(),le=W?`closed`:_t({availableWidth:y,mobileLayout:g,hasSession:!!L,preference:x?`open`:`closed`}),fe=g||y<800;bt({sessionId:A.activeId,streaming:z,completed:V,runStartedAt:typeof R?.runStartedAt==`string`?R.runStartedAt:null,enabled:!0,open:le!==`closed`,onReveal:()=>{E(`files`),S(!0)}});let pe=A.setActiveId,me=(0,J.useCallback)((e,t)=>{if(e){if(W){G===`pad`||t?se(`changes`):ce(`chat`);return}t?(pe(e),S(!0)):S(!1)}},[se,pe,S,ce,W,G]),he=A.createSessionRecord,ge=P.loadSessionMessages,_e=A.refreshSessions,ve=A.sessionStatesRef,ye=P.syncLiveSession,xe=A.setGlobalError,Se=F.openSessionInDock,Ce=A.sessionsRef,[Te,Ee]=(0,J.useState)({sessionId:``,token:0}),Ae=(0,J.useCallback)(async(e,t=``)=>{let n=e?.id,r=oe(e?.activePanel)||e?.panels.map(oe).find(Boolean),i=t||Ce.current.find(e=>e.id===r)?.cwd||``,a=null;f&&(a=await Dr(`mobile_state`).catch(()=>null));let o=we(f,a),s=await he(o?i:``,{inheritRecentCwd:!1,creationKey:n?`group:${n}`:`global`});return s?(Se(s,`open`,n),s):``},[he,f,Se,Ce]);De(i,Ae);let K=lt({browserNotify:n,notify:e,defaultModel:A.defaultModel,localStreamSessionsRef:D,streamGenerationRef:O,sessionStatesRef:A.sessionStatesRef,setActiveId:A.setActiveId,setGlobalError:A.setGlobalError,updateSessionState:A.updateSessionState,updateSessions:A.updateSessions,createSession:Ae,loadSessionMessages:P.loadSessionMessages,refreshSessions:A.refreshSessions,syncLiveSession:P.syncLiveSession}),{sendPrompt:je,retryLastTurn:Ne}=K;(0,J.useEffect)(()=>{let e=()=>{let e=de();e&&(async()=>{let t=await Ae(void 0,e.cwd);t&&e.prompt&&je(e.prompt,t)})()};return window.addEventListener(ue,e),e(),()=>window.removeEventListener(ue,e)},[Ae,je]);let q=pt({notify:e,requestText:c,requestConfirm:l,availableModels:A.availableModels,sessionStatesRef:A.sessionStatesRef,updateSessionState:A.updateSessionState,updateSessions:A.updateSessions,replaceSessionStates:A.replaceSessionStates,setGlobalError:A.setGlobalError,syncLiveSession:P.syncLiveSession}),Fe=(0,J.useCallback)(()=>{if(document.visibilityState!==`visible`||k.current)return;let e=(async()=>{f&&await B().catch(()=>void 0);let e=[];try{e=await _e(void 0,{preserveExistingOnEmpty:!0})}catch{}let t=new Set([...Object.keys(ve.current),...A.activeId?[A.activeId]:[],...e.filter(e=>e.streaming).map(e=>e.id)]);await Promise.allSettled(Array.from(t).map(e=>ye(e,{force:!0})))})().finally(()=>{k.current=null});k.current=e},[A.activeId,f,_e,ve,ye]);(0,J.useEffect)(()=>{let e=()=>Fe();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)}},[Fe]);let Le=(0,J.useCallback)(async e=>{await ge(e,{force:!0}),await _e(e)},[ge,_e]),Re=(0,J.useCallback)(async(t,n)=>{if(!(!t?.id||!n))try{if(xe(``),(await U.navigateSessionTree(t.id,n,!1)).cancelled)return;await Le(t.id),Ee(e=>({sessionId:t.id,token:e.token+1})),e(u(`chat:chatPage.branchedFromNode`))}catch(e){xe(e instanceof Error?e.message:String(e))}},[e,Le,xe,u]),ze=(0,J.useCallback)(async(t,n)=>{if(!t?.id||!n)return;let r=await c({title:u(`chat:chatPage.createChildChat`),inputLabel:u(`chat:chatPage.chatTitle`),value:`${u(`chat:chatPage.separateChatSuffix`)} · ${t.name||u(`chat:chatPage.newChat`)}`,confirmLabel:u(`chat:chatPage.create`)});if(r!==null)try{xe(``);let i=await U.deriveSession(t.id,n,r);await _e(),Se(i.id),Ee(e=>({sessionId:i.id,token:e.token+1})),e(u(`chat:chatPage.childChatCreated`))}catch(e){xe(e instanceof Error?e.message:String(e))}},[e,Se,_e,c,xe,u]),Be=(0,J.useCallback)(()=>t(`config`),[t]),Ve=W?G===`phone`&&ie===`context`&&ae===`changes`?`files`:null:le===`closed`?null:C,He=(0,J.useMemo)(()=>({sessions:A.sessions,subscribeSessionState:A.subscribeSessionState,getSessionState:A.getSessionState,defaultModel:A.defaultModel,availableModels:A.availableModels,globalError:A.globalError,activeId:A.activeId,compactDock:F.compactDock,contextTab:Ve,contextCompact:fe,contextPanelId:Tr,toggleSessionContext:me,sessionTreePulseSessionId:Te.sessionId,sessionTreePulseToken:Te.token,pendingAsset:o,onAssetConsumed:s,notify:e,openModelSettings:Be,loadSessionMessages:P.loadSessionMessages,loadOlderMessages:P.loadOlderMessages,sendPrompt:K.sendPrompt,retryLastTurn:K.retryLastTurn,queuePrompt:K.queuePrompt,withdrawQueuedInput:K.withdrawQueuedInput,abort:K.abort,pauseGoal:q.pauseGoal,setGoalBudget:q.setGoalBudget,compactSession:q.compactSession,setCompactionThreshold:q.setCompactionThreshold,switchSessionModel:q.switchSessionModel,loadSessionThinkingLevel:q.loadSessionThinkingLevel,switchSessionThinkingLevel:q.switchSessionThinkingLevel,switchSessionExecutionMode:q.switchSessionExecutionMode,switchSessionRunMode:q.switchSessionRunMode,resolveToolApproval:q.resolveToolApproval,selectSessionWorkspace:q.selectSessionWorkspace,renameSession:q.renameSession,branchFromEntry:Re,createChildSession:ze,reloadSessionBranch:Le,splitDockPanel:F.splitDockPanel,closeDockPanel:F.closeDockPanel}),[A.sessions,A.subscribeSessionState,A.getSessionState,A.defaultModel,A.availableModels,A.globalError,A.activeId,F.compactDock,Ve,fe,me,F.splitDockPanel,F.closeDockPanel,Te.sessionId,Te.token,o,s,e,Be,P.loadSessionMessages,P.loadOlderMessages,K.sendPrompt,K.retryLastTurn,K.queuePrompt,K.withdrawQueuedInput,K.abort,q.pauseGoal,q.setGoalBudget,q.compactSession,q.setCompactionThreshold,q.switchSessionModel,q.loadSessionThinkingLevel,q.switchSessionThinkingLevel,q.switchSessionExecutionMode,q.switchSessionRunMode,q.resolveToolApproval,q.selectSessionWorkspace,q.renameSession,Re,ze,Le]),Ue=A.discardSessionState,Ge=(0,J.useMemo)(()=>({subscribeSessionState:A.subscribeSessionState,getSessionState:A.getSessionState,retainSessionState:A.retainSessionState,discard:e=>{O.current.set(e,(O.current.get(e)??0)+1),D.current.delete(e),Ue(e)},loadSessionMessages:P.loadSessionMessages,loadOlderMessages:P.loadOlderMessages,syncLiveSession:P.syncLiveSession,send:(e,t)=>je(t,e,[],!1,!1,null,null,{activate:!1}),retry:e=>Ne(e,{activate:!1}),abort:K.abort,approve:q.resolveToolApproval}),[A.subscribeSessionState,A.getSessionState,A.retainSessionState,Ue,P.loadSessionMessages,P.loadOlderMessages,P.syncLiveSession,je,Ne,K.abort,q.resolveToolApproval]),Ke=L&&le!==`closed`&&(0,X.jsx)(J.Suspense,{fallback:le===`aside`?(0,X.jsx)(`aside`,{className:`h-full min-h-0 w-full rounded-[var(--r-md)] border border-[var(--stroke-soft)] bg-[var(--panel)] p-4 text-sm text-[var(--text-muted)]`,role:`status`,children:u(`chat:focusSession.gitLoading`)}):null,children:(0,X.jsx)(wr,{panelId:Tr,compact:le===`sheet`,sessionId:L.id,tab:C,plan:Oe(_,`plans`)?ne:null,streaming:z,plansAvailable:Oe(_,`plans`),requestConfirm:l,onTabChange:E,onClose:()=>S(!1)},L.id)});return(0,X.jsx)(Cr,{runtime:Ge,children:(0,X.jsx)(`div`,{ref:v,className:`chat-layout dock-layout relative flex w-full min-w-0 min-h-0 flex-1`,children:(0,X.jsx)(vr,{availableWidth:y,presentation:le,context:Ke,side:`right`,children:(0,X.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-1 flex-col`,children:[A.initializationError&&(0,X.jsx)(w,{title:u(`chat:chatPage.initializationFailed`),error:A.initializationError,pending:A.initializing,onRetry:A.retryInitialization,className:`m-3 w-auto shrink-0`}),A.loading?(0,X.jsxs)(re,{children:[(0,X.jsx)(I,{className:`animate-spin`,size:24}),(0,X.jsx)(`h2`,{children:u(`chat:chatPage.wakingTheAgent`)}),(0,X.jsx)(`p`,{children:u(`chat:chatPage.modelsSessionsAndContextAreSettlingIntoPlace`)})]}):A.initializationError&&!A.sessions.length?null:(0,X.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,X.jsx)(h.Provider,{value:He,children:p&&(g?(0,X.jsx)(d,{onCreateSession:Ae}):(0,X.jsx)(J.Suspense,{fallback:(0,X.jsx)(I,{className:`m-4 animate-spin`,"aria-hidden":`true`}),children:(0,X.jsx)(Er,{compactDock:F.compactDock,onDockReady:F.onDockReady,getTabContextMenuItems:F.getTabContextMenuItems,createSession:Ae})}))})})]})})})})}export{Or as ChatPage};
|