pisper 0.6.6 → 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -7
- package/web/.vite/manifest.json +481 -336
- package/web/assets/AppDialog-DuxuKq-0.js +1 -0
- package/web/assets/{AppOverlays-C_WrmeqC.js → AppOverlays-YPxRUvLN.js} +1 -1
- package/web/assets/{AppSelect-DNIjPL7I.js → AppSelect-DEmkrcvY.js} +1 -1
- package/web/assets/{AppShortcuts-V38tUYTp.js → AppShortcuts-CA7hbebL.js} +1 -1
- package/web/assets/{AssetsPage-BmSnyLZ5.js → AssetsPage-CkNI_8qz.js} +1 -1
- package/web/assets/{ChannelsPage-Da3JaYaC.js → ChannelsPage-BYfRQyV0.js} +1 -1
- package/web/assets/ChatAppearancePage-N_2bunil.js +2 -0
- package/web/assets/{ChatDockView-5Aptiph6.js → ChatDockView-B4nZfbx5.js} +1 -1
- package/web/assets/ChatHistoryPage-Di3epmcR.js +1 -0
- package/web/assets/ChatPage-IN5m7Fqh.js +4 -0
- package/web/assets/ConfigPage-BKTEOlQE.js +1 -0
- package/web/assets/{DecisionsPage-BwJ7RTAE.js → DecisionsPage-DNAUZCij.js} +1 -1
- package/web/assets/{DesktopWindowControls-CLVd8sg6.js → DesktopWindowControls-BAnWUUAZ.js} +1 -1
- package/web/assets/{FileAttachmentPreview-C6QaQFwb.js → FileAttachmentPreview-x4AORCVt.js} +1 -1
- package/web/assets/{FloatingWidgets-QMhElaDR.js → FloatingWidgets-CdbBMke7.js} +1 -1
- package/web/assets/GitDiffViewer-oJDF7l74.js +2 -0
- package/web/assets/{ListDetailLayout-S-IBs4f_.js → ListDetailLayout-Ctr6r0OI.js} +1 -1
- package/web/assets/{MarkdownMessage-bfyuGoi1.js → MarkdownMessage-D9zxSf6j.js} +1 -1
- package/web/assets/McpPage-DaOkWcq6.js +1 -0
- package/web/assets/{MemoryPage-CC37SohP.js → MemoryPage-B5sqhaYW.js} +1 -1
- package/web/assets/MobileContextScreen-DiM-lGec.js +2 -0
- package/web/assets/MobileNavigation-DZx6cE9f.js +1 -0
- package/web/assets/MobileShellContext-Cvv0RcjA.js +1 -0
- package/web/assets/MobileViewportStabilizer-BAI_nmS_.js +1 -0
- package/web/assets/{PageHeader-75eh-Z_A.js → PageHeader-FBipSHuW.js} +1 -1
- package/web/assets/{PluginsPage-za6FNr_k.js → PluginsPage-BFLnVcnm.js} +1 -1
- package/web/assets/{QuickPromptIdeas-CEjBwWlM.js → QuickPromptIdeas-CVcEEpAl.js} +1 -1
- package/web/assets/{SchedulesPage-BR1oIqzi.js → SchedulesPage-CVnoI4wZ.js} +1 -1
- package/web/assets/SessionContextPanel-CEmCvPx4.js +2 -0
- package/web/assets/SessionFilesPane-CAdkivkE.js +2 -0
- package/web/assets/{SidebarUpdateStatus-Chfb-00K.js → SidebarUpdateStatus-Co3QAKmb.js} +1 -1
- package/web/assets/{SkillsPage-DfFjecBO.js → SkillsPage-d8t6_KDS.js} +1 -1
- package/web/assets/{TaskProcessesPane-DJszMYjM.js → TaskProcessesPane-PRgpCplN.js} +1 -1
- package/web/assets/{TaskTerminalView-DyTURB64.js → TaskTerminalView-Dt8gIY5E.js} +1 -1
- package/web/assets/{TerminalPanel-BFqST5ja.js → TerminalPanel-BRib2LP-.js} +1 -1
- package/web/assets/{ThemeToggleButton-DmYU4_Nh.js → ThemeToggleButton-C1lL__80.js} +1 -1
- package/web/assets/{WebDesktopPet-COIAEeuY.js → WebDesktopPet-BWpgoZI3.js} +1 -1
- package/web/assets/WorkbenchNavigation-DmNiD2FD.js +1 -0
- package/web/assets/{WorkflowsPage-Heg3iqQg.js → WorkflowsPage-aRy0lYQ1.js} +1 -1
- package/web/assets/{WorkspacePicker-DFCZ_IJu.js → WorkspacePicker-NkoVoqez.js} +1 -1
- package/web/assets/{api-D8wGrWiI.js → api-CiEo53J1.js} +1 -1
- package/web/assets/app-update-CLhMRrNS.js +32 -0
- package/web/assets/calendar-clock-VIxTaqqy.js +1 -0
- package/web/assets/catalog-DLWnYiJc.js +1 -0
- package/web/assets/chat-api-CbgoP-8X.js +1 -0
- package/web/assets/{client-store-lT3geTlX.js → client-store-DCqgdbAp.js} +1 -1
- package/web/assets/{component-api-kxyOYPJN.js → component-api-BboiUuyG.js} +1 -1
- package/web/assets/{config-search-BThCMhnj.js → config-search-Cwglajsz.js} +1 -1
- package/web/assets/events-f8vVvSfH.js +1 -0
- package/web/assets/{floating-widgets-store-BhuWgVRT.js → floating-widgets-store-BAfPpV4Z.js} +2 -2
- package/web/assets/git-diff-f-zMaQOk.js +3 -0
- package/web/assets/{http-rQRvhTOP.js → http-Dx387MGl.js} +1 -1
- package/web/assets/i18n-CblgkPOp.js +1 -0
- package/web/assets/{index-BVIvzUyZ.js → index-BAYzSwUr.js} +2 -2
- package/web/assets/index-Bcpvpefn.css +2 -0
- package/web/assets/monitor-ORxecA9m.js +1 -0
- package/web/assets/mount-app-DGgK0IVe.js +9 -0
- package/web/assets/mutation-CEbxdVYy.js +1 -0
- package/web/assets/panels-top-left-K8n2CefH.js +1 -0
- package/web/assets/project-diff-summary-BzAMC_7C.js +1 -0
- package/web/assets/public-Cv_Xe2Sp.js +1 -0
- package/web/assets/{public-components-CS0BXa3D.js → public-components-Dfm4D7vP.js} +1 -1
- package/web/assets/public-navigation-zJPpUiuy.js +2 -0
- package/web/assets/query-Bj-DUNYq.js +1 -0
- package/web/assets/radio-tower-jGQwrFWB.js +1 -0
- package/web/assets/{runtime-capabilities-store-D5g-oC-Z.js → runtime-capabilities-store-C1lkVKpw.js} +1 -1
- package/web/assets/scale-pAyho3H9.js +1 -0
- package/web/assets/{session-change-summary-api-4_dTNU4L.js → session-change-summary-api-CqJa3Wdh.js} +1 -1
- package/web/assets/{session-organization-api-1F_dNhFa.js → session-organization-api-B0E2RXLS.js} +1 -1
- package/web/assets/session-streaming-state-DUehpyTs.js +3 -0
- package/web/assets/settings-navigation-BhTYSdv9.js +1 -0
- package/web/assets/{shortcuts-CAyIKRpZ.js → shortcuts-ChJr3RP4.js} +1 -1
- package/web/assets/{sidebar-CjfGBEog.js → sidebar-CERcJRog.js} +1 -1
- package/web/assets/{speech-session-BoAvAzPN.js → speech-session-BPNbd_CM.js} +1 -1
- package/web/assets/startup-queries-uKXB2KOP.js +1 -0
- package/web/assets/{ui-store-D-oOtKbW.js → ui-store-BM6pl-Rq.js} +1 -1
- package/web/assets/use-back-layer-B4dm_FZt.js +1 -0
- package/web/assets/{use-i18n-Dpn7lxcE.js → use-i18n-BrWBoyFl.js} +1 -1
- package/web/assets/use-mobile-PCHaokZZ.js +1 -0
- package/web/assets/{useCustomUiComponents-DzY3OjE_.js → useCustomUiComponents-IxX7wKrp.js} +1 -1
- package/web/assets/useQuery-DdcpUQhO.js +1 -0
- package/web/assets/web-preview-D1qOo-1X.js +1 -0
- package/web/assets/{web-preview-events-BS5O8D7_.js → web-preview-events-BMXsxTa3.js} +1 -1
- package/web/assets/web-preview-panel-B7JAZr2D.js +552 -0
- package/web/index.html +2 -2
- package/web/assets/ChatAppearancePage-Cjy9iir_.js +0 -2
- package/web/assets/ChatHistoryPage-BhXVvudL.js +0 -1
- package/web/assets/ChatPage-CzcvU3Tv.js +0 -4
- package/web/assets/ConfigPage-F1Y_oed5.js +0 -1
- package/web/assets/GitDiffViewer-Dv9WOiX1.js +0 -4
- package/web/assets/McpPage-CaUm1pYY.js +0 -1
- package/web/assets/MobileViewportStabilizer-OtwVmIPm.js +0 -1
- package/web/assets/SessionContextPanel-nvijY4R5.js +0 -2
- package/web/assets/WorkbenchNavigation-BBZRfeaC.js +0 -1
- package/web/assets/app-update-BHhqGwQp.js +0 -32
- package/web/assets/back-navigation-DS0YlxM8.js +0 -1
- package/web/assets/catalog-DpGpcvIi.js +0 -1
- package/web/assets/chat-api-CYidanXn.js +0 -1
- package/web/assets/events-By17Y3YI.js +0 -1
- package/web/assets/i18n-CAJMli-q.js +0 -1
- package/web/assets/index-Z8qQPd8t.css +0 -2
- package/web/assets/mount-app-Sl2T_gzZ.js +0 -9
- package/web/assets/mutation-Difliohy.js +0 -1
- package/web/assets/public-DAsd8NDM.js +0 -1
- package/web/assets/public-navigation-BzM_ocRb.js +0 -2
- package/web/assets/radio-tower-BW78Ns4R.js +0 -1
- package/web/assets/session-streaming-state-CX6zkOkc.js +0 -3
- package/web/assets/startup-queries-DItwFTRv.js +0 -1
- package/web/assets/use-back-layer-Cxm0-40v.js +0 -1
- package/web/assets/use-mobile-YXncArOq.js +0 -1
- package/web/assets/useQuery-Bg3cTjsY.js +0 -1
- package/web/assets/web-preview-C3u-dblt.js +0 -1
- package/web/assets/web-preview-panel-CHiIjAoR.js +0 -552
package/web/index.html
CHANGED
|
@@ -52,11 +52,11 @@
|
|
|
52
52
|
document.documentElement.lang = storedLanguage === 'en-US' ? 'en-US' : 'zh-CN'
|
|
53
53
|
} catch {}
|
|
54
54
|
</script>
|
|
55
|
-
<script type="module" crossorigin src="/assets/index-
|
|
55
|
+
<script type="module" crossorigin src="/assets/index-BAYzSwUr.js"></script>
|
|
56
56
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-B0Z9INg1.js">
|
|
57
57
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-DwNgTV1j.js">
|
|
58
58
|
<link rel="modulepreload" crossorigin href="/assets/vendor-router-CZg2bCPV.js">
|
|
59
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
59
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Bcpvpefn.css">
|
|
60
60
|
</head>
|
|
61
61
|
<body>
|
|
62
62
|
<div id="root"></div>
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/public-DAsd8NDM.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-router-CZg2bCPV.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-Dpn7lxcE.js","assets/i18n-CAJMli-q.js","assets/index-BVIvzUyZ.js","assets/index-Z8qQPd8t.css","assets/storage-BpAqa-YY.js","assets/vendor-state-GkUciC5H.js","assets/utils-C8uzG5AZ.js","assets/vendor-ui-DvrYggeS.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/arrow-left-B8oVrQ2S.js","assets/blocks-Olsdp5Lp.js","assets/refresh-cw-TbWxTY4K.js","assets/settings-2-CXJjXJS9.js","assets/shield-check-Gvek4RJ7.js","assets/http-rQRvhTOP.js","assets/abort-signal-f4JsiYKX.js","assets/button-BcPDt1Ge.js","assets/dist-Cfh4kzCK.js","assets/floating-widgets-store-BhuWgVRT.js","assets/api-D8wGrWiI.js","assets/useCustomUiComponents-DzY3OjE_.js","assets/useQuery-Bg3cTjsY.js","assets/queryOptions-Dfvzj6n2.js","assets/dialog-CGGxREwU.js","assets/dist-BdkTa5R3.js","assets/dist-B_a0oV4U.js","assets/es2015-0QT3KgdC.js","assets/x-07u4-129.js","assets/app-primitives-DhqJLud3.js","assets/switch-Ci_hmu39.js","assets/dist-TksYpDID.js","assets/tabs-DQYVDdOp.js","assets/dist-DAs5KRGl.js","assets/card-BdUpL1KB.js","assets/PageFrame-BiJUCJku.js","assets/PageToolbar-DGjx3obb.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{f as t,p as n}from"./vendor-router-CZg2bCPV.js";import{i as r,r as i}from"./vendor-react-DwNgTV1j.js";import{i as a}from"./i18n-CAJMli-q.js";import{t as o}from"./use-i18n-Dpn7lxcE.js";import{i as s,n as c,r as l,t as u}from"./tabs-DQYVDdOp.js";var d=e(r(),1),f=i(),p=(0,d.lazy)(async()=>{let[{CustomUiPage:e}]=await Promise.all([n(()=>import(`./public-DAsd8NDM.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39])),a()]);return{default:e}});function m({appearance:e,notify:n}){let{t:r}=o(),[i,a]=t(),m=i.get(`view`);return(0,f.jsxs)(u,{value:m===`layout`||m===`widgets`?`widgets`:`appearance`,onValueChange:e=>{a(t=>{let n=new URLSearchParams(t);return e===`appearance`?n.delete(`view`):n.set(`view`,e),n},{replace:!0})},className:`min-h-full min-w-0 gap-4`,children:[(0,f.jsxs)(l,{"aria-label":r(`config:interfaceSettings.tabsLabel`),className:`max-w-full`,children:[(0,f.jsx)(s,{value:`appearance`,children:r(`config:interfaceSettings.appearanceTab`)}),(0,f.jsx)(s,{value:`widgets`,children:r(`config:interfaceSettings.customUiTab`)})]}),(0,f.jsx)(c,{value:`appearance`,className:`min-w-0`,children:e}),(0,f.jsx)(c,{value:`widgets`,className:`min-h-0 min-w-0 flex-1`,"data-config-card":`interface-custom-ui`,children:(0,f.jsx)(d.Suspense,{fallback:(0,f.jsx)(`p`,{role:`status`,children:r(`common:webPreview.loading`)}),children:(0,f.jsx)(p,{notify:n,embedded:!0})})})]})}export{m as ChatAppearancePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./index-BVIvzUyZ.js";import{i as n,r}from"./vendor-react-DwNgTV1j.js";import{t as i}from"./use-i18n-Dpn7lxcE.js";import{t as a}from"./storage-BpAqa-YY.js";import{a as o,l as s,n as c,r as l,t as ee}from"./dropdown-menu-LKlOCZsZ.js";import{t as u}from"./utils-C8uzG5AZ.js";import{n as te,t as d}from"./pin-off-DRR1KEvN.js";import{n as f,t as p}from"./pin-Dc2zE4cS.js";import{t as ne}from"./chevron-right-C3t2Rckj.js";import{t as re}from"./circle-alert-DCChabnT.js";import{t as ie}from"./ellipsis-CfGKfbq6.js";import{t as ae}from"./message-square-SKjZyY3v.js";import{t as oe}from"./pencil-U08v_vV9.js";import{t as m}from"./refresh-cw-TbWxTY4K.js";import{t as se}from"./rotate-ccw-clock-CO6Bw-sF.js";import{t as ce}from"./trash-2-CNrPOoPR.js";import{t as h}from"./api-D8wGrWiI.js";import{t as g}from"./button-BcPDt1Ge.js";import{t as _}from"./useQuery-Bg3cTjsY.js";import{t as le}from"./startup-queries-DItwFTRv.js";import{i as v,r as y}from"./format-BRFKAYMT.js";import{i as ue,r as b,t as x}from"./app-primitives-DhqJLud3.js";/* empty css */import{t as de}from"./StarOrbit-BAAjh-hY.js";import{t as S}from"./brand-DIEc3fK8.js";import{_ as fe,c as pe,g as me,l as C,r as w,t as T,v as he}from"./events-By17Y3YI.js";import{n as ge,r as E,s as D,t as _e}from"./session-organization-api-1F_dNhFa.js";import{t as O}from"./session-change-summary-api-4_dTNU4L.js";var k=e(n(),1),A=r();function j({className:e,onPointerMove:t,...n}){let r=(0,k.useCallback)(e=>{let n=e.currentTarget.getBoundingClientRect();e.currentTarget.style.setProperty(`--rb-spotlight-x`,`${e.clientX-n.left}px`),e.currentTarget.style.setProperty(`--rb-spotlight-y`,`${e.clientY-n.top}px`),t?.(e)},[t]);return(0,A.jsx)(`div`,{className:u(`rb-spotlight-card`,e),onPointerMove:r,...n})}function M(e,t,n,r=`active`){let i=t.trim().toLowerCase(),a=i?e.filter(e=>`${e.name||``} ${e.firstMessage||``} ${e.cwd||``} ${e.model||``}`.toLowerCase().includes(i)):e.filter(e=>!!e.archived==(r===`archived`));return{total:a.length,items:D(a).slice(0,Math.max(0,n))}}function N({sessionId:e,lastCompletedAt:t,streaming:n}){let{t:r}=i(),a=(0,k.useRef)(null),[o,s]=(0,k.useState)(!1);(0,k.useEffect)(()=>{let e=a.current;if(!e||o)return;if(!(`IntersectionObserver`in window)){s(!0);return}let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(s(!0),t.disconnect())},{rootMargin:`120px`});return t.observe(e),()=>t.disconnect()},[o]);let{data:c}=_({queryKey:[`session-change-summary`,e,t],queryFn:()=>O(e),enabled:o,staleTime:6e4,retry:0,refetchInterval:n&&o?2e4:!1});return c?.status!==`known`||!c.changedFiles?(0,A.jsx)(`span`,{ref:a}):(0,A.jsx)(`span`,{ref:a,className:`ml-1 inline-flex items-center gap-1 tabular-nums before:mr-1 before:content-['·']`,children:r(`chat:chatHistoryPage.changeSummary`,{count:c.changedFiles,added:c.added||0,removed:c.removed||0})})}function P({query:e,navigate:n,notify:r,requestConfirm:u,requestText:_}){let{t:O,language:P}=i(),[F,I]=(0,k.useState)([]),[L,ve]=(0,k.useState)(`active`),R=`${L}\0${e}`,[z,B]=(0,k.useState)({filterKey:R,count:50}),V=(0,k.useRef)(0),H=(0,k.useRef)(!1),U=(0,k.useRef)(null),[W,G]=(0,k.useState)(()=>t.getItem(a.activeSession)||``),[K,q]=(0,k.useState)(!0),[J,Y]=(0,k.useState)(``);(0,k.useEffect)(()=>{B(e=>e.filterKey===R&&e.count===50?e:{filterKey:R,count:50})},[R]);let X=(0,k.useCallback)(async(e=!1)=>{let t=++V.current;e||(q(!0),Y(``));try{let e=await le(`sessions`,!0);if(t!==V.current)return;I(D(e.sessions||[]))}catch(e){t===V.current&&Y(e instanceof Error?e.message:String(e))}finally{t===V.current&&q(!1)}},[]);(0,k.useEffect)(()=>(document.title=`${O(`chat:chatHistoryPage.chatHistory`)} · ${S}`,()=>{document.title=S}),[O]),(0,k.useEffect)(()=>{X();let e=e=>{let t=fe(e);if(t){let e=new Set(t.deletedIds);I(t=>t.filter(t=>!e.has(t.id)))}let n=he(e);n&&I(e=>E(e,n)),X(!0)},n=e=>G(e.detail?.id||t.getItem(a.activeSession)||``);return window.addEventListener(w,e),window.addEventListener(T,n),()=>{window.removeEventListener(w,e),window.removeEventListener(T,n)}},[X]),(0,k.useEffect)(()=>{let e=()=>{document.visibilityState===`visible`&&X(!0)},t=window.setInterval(e,2e4);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[X]);let Z=z.filterKey===R?z.count:50,Q=(0,k.useMemo)(()=>M(F,e,Z,L),[L,e,F,Z]),ye=F.filter(e=>e.archived).length;(0,k.useEffect)(()=>{H.current&&(H.current=!1,U.current?.focus())},[Q.items.length,Q.total]);let be=e=>{me(e),n(`chat`)},xe=async e=>{let t=await _({title:O(`chat:chatHistoryPage.renameChat`),inputLabel:O(`chat:chatHistoryPage.chatTitle`),value:e.name,confirmLabel:O(`chat:chatHistoryPage.save`)});if(t!==null&&t!==e.name)try{let n=await h(`/api/sessions/${encodeURIComponent(e.id)}`,{method:`PATCH`,body:JSON.stringify({name:t})});I(t=>t.map(t=>t.id===e.id?{...t,name:n.name}:t)),C({id:e.id,name:n.name}),r(O(`chat:chatHistoryPage.chatTitleUpdated`))}catch(e){Y(e instanceof Error?e.message:String(e))}},$=async(e,t,n)=>{try{let i=await ge(e.id,t);I(e=>E(e,i)),r(n)}catch(e){Y(e instanceof _e?O(`chat:chatHistoryPage.sessionUpdateFailed`):e instanceof Error?e.message:String(e))}},Se=async e=>{if(await u({title:O(`chat:chatHistoryPage.deleteChat`),message:O(`chat:chatHistoryPage.deleteChatNameThisAlsoRemovesLocalChatHistory`,{name:e.name}),confirmLabel:O(`chat:chatHistoryPage.delete`)}))try{await h(`/api/sessions/${encodeURIComponent(e.id)}`,{method:`DELETE`});let n=F.filter(t=>t.id!==e.id);if(I(n),W===e.id){let e=n[0]?.id||``;G(e),e?t.setItem(a.activeSession,e):t.removeItem(a.activeSession),pe(e)}C({deletedIds:[e.id]}),r(O(`chat:chatHistoryPage.chatDeleted`))}catch(e){Y(e instanceof Error?e.message:String(e))}};return(0,A.jsxs)(`div`,{className:`flex min-h-[100%] flex-col gap-[12px]`,children:[(0,A.jsxs)(`div`,{className:`chat-history-summary [&_>_div]:flex [&_>_div]:min-w-0 [&_>_div]:items-center [&_>_div]:gap-[10px] [&_>_div]:text-[var(--star-strong)] [&_>_div_>_span]:flex [&_>_div_>_span]:min-w-0 [&_>_div_>_span]:flex-col [&_>_div_>_span]:gap-[2px] [&_strong]:text-[var(--text)] [&_strong]:text-[13px] [&_small]:text-[var(--text-muted)] [&_small]:text-[11px] flex min-h-[52px] items-center justify-between gap-[12px] [border:1px_solid_var(--stroke)] rounded-[var(--r-md)] bg-[var(--panel)] [padding:8px_10px_8px_14px] shadow-[var(--sh-1)]`,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(se,{size:18}),(0,A.jsxs)(`span`,{children:[(0,A.jsx)(`strong`,{children:O(`chat:chatHistoryPage.countChatHistoryItems`,{count:F.length})}),(0,A.jsx)(`small`,{children:e?O(`chat:chatHistoryPage.countCurrentlyFiltered`,{count:Q.total}):O(`chat:chatHistoryPage.sortedByMostRecentlyUpdated`)})]})]}),(0,A.jsxs)(g,{variant:`outline`,size:`lg`,className:`bg-surface-subtle`,onClick:()=>void X(),disabled:K,children:[(0,A.jsx)(m,{className:K?`animate-spin`:``,size:14}),O(`chat:chatHistoryPage.refresh`)]})]}),(0,A.jsx)(`div`,{role:`group`,"aria-label":O(`chat:chatHistoryPage.historySections`),className:`flex gap-2`,children:[`active`,`archived`].map(e=>(0,A.jsx)(g,{"aria-pressed":L===e,variant:L===e?`secondary`:`ghost`,className:`min-h-11`,onClick:()=>ve(e),children:e===`active`?O(`chat:chatHistoryPage.activeChats`):O(`chat:chatHistoryPage.archivedChats`,{count:ye})},e))}),J&&(0,A.jsx)(ue,{children:J}),K&&!F.length?(0,A.jsxs)(b,{children:[(0,A.jsx)(m,{className:`animate-spin`,size:22}),(0,A.jsx)(`h2`,{children:O(`chat:chatHistoryPage.loadingChatHistory`)})]}):Q.total?(0,A.jsxs)(x,{className:`chat-history-list overflow-hidden !p-[5px]`,children:[Q.items.map(t=>(0,A.jsxs)(j,{className:`chat-history-row [.chat-history-row_+_&]:[border-top:1px_solid_var(--stroke-soft)] hover:bg-[var(--surface-subtle)] [&.active]:bg-[var(--surface-subtle)] [&.active]:shadow-[inset_3px_0_var(--brand-blue)] grid grid-cols-[minmax(0,1fr)_auto] items-center rounded-[var(--r-sm)] ${t.id===W?`active`:``}`,children:[(0,A.jsxs)(`button`,{className:`chat-history-open [&_>_svg]:text-[var(--text-muted)] max-[650px]:grid-cols-[32px_minmax(0,1fr)_auto] grid w-full min-w-0 min-h-[72px] grid-cols-[34px_minmax(0,1fr)_auto_auto] items-center gap-[10px] border-0 bg-transparent [padding:9px_10px] text-left`,type:`button`,"aria-label":O(`chat:chatHistoryPage.openChatNamed`,{name:t.name||O(`chat:chatHistoryPage.untitledChat`)}),onClick:()=>be(t.id),children:[(0,A.jsx)(`span`,{className:`grid w-[32px] h-[32px] place-items-center rounded-[var(--r-sm)] bg-[var(--star-soft)] text-[var(--star-strong)]`,children:(0,A.jsx)(ae,{size:15})}),(0,A.jsxs)(`span`,{className:`chat-history-copy [&_strong]:overflow-hidden [&_strong]:text-ellipsis [&_strong]:whitespace-nowrap [&_>_span]:overflow-hidden [&_>_span]:text-ellipsis [&_>_span]:whitespace-nowrap [&_small]:overflow-hidden [&_small]:text-ellipsis [&_small]:whitespace-nowrap [&_strong]:text-[var(--text)] [&_strong]:text-[13px] [&_>_span]:text-[var(--text-soft)] [&_>_span]:text-[12px] [&_small]:text-[var(--text-muted)] [&_small]:text-[11px] max-[650px]:[&_>_span]:max-w-[54vw] flex min-w-0 flex-col gap-[3px]`,children:[(0,A.jsxs)(`strong`,{title:t.name||O(`chat:chatHistoryPage.untitledChat`),children:[t.pinned&&(0,A.jsx)(p,{className:`mr-1 inline size-3`,"aria-hidden":`true`}),t.name||O(`chat:chatHistoryPage.untitledChat`)]}),(0,A.jsx)(`span`,{children:t.firstMessage||O(`chat:chatHistoryPage.noMessageSummary`)}),(0,A.jsxs)(`small`,{children:[t.needsAttention&&(0,A.jsxs)(`span`,{className:`mr-2 inline-flex items-center gap-1 text-[var(--text-secondary)]`,children:[(0,A.jsx)(re,{className:`size-3`,"aria-hidden":`true`}),O(`chat:chatHistoryPage.needsAttention`)]}),t.unread&&(0,A.jsx)(`span`,{className:`mr-2 font-semibold text-[var(--brand-blue)]`,children:O(`chat:chatHistoryPage.unread`)}),t.archived&&e.trim()&&(0,A.jsx)(`span`,{className:`mr-2`,children:O(`chat:chatHistoryPage.archived`)}),v(t.cwd,P),t.model&&!/(^|\/)unknown$/i.test(String(t.model))?` · ${String(t.model).split(`/`).at(-1)}`:``,t.streaming?` · ${O(`chat:chatHistoryPage.agentRunning`)}`:``,(0,A.jsx)(N,{sessionId:t.id,lastCompletedAt:t.lastCompletedAt,streaming:t.streaming})]})]}),(0,A.jsxs)(`span`,{className:`chat-history-meta [&_strong]:text-[var(--text-soft)] [&_strong]:text-[11px] [&_small]:text-[var(--text-muted)] [&_small]:text-[10px] max-[650px]:hidden flex min-w-[92px] flex-col items-end gap-[3px]`,children:[(0,A.jsx)(`strong`,{children:O(`chat:chatHistoryPage.countMessages`,{count:t.messageCount||0})}),(0,A.jsx)(`small`,{children:y(t.modified,P)})]}),(0,A.jsx)(ne,{size:15})]}),(0,A.jsxs)(ee,{children:[(0,A.jsx)(s,{asChild:!0,children:(0,A.jsx)(g,{type:`button`,variant:`ghost`,size:`icon`,className:`mr-2 size-11 shrink-0`,"aria-label":O(`chat:chatHistoryPage.moreActionsForChat`,{name:t.name||O(`chat:chatHistoryPage.untitledChat`)}),children:(0,A.jsx)(ie,{size:18})})}),(0,A.jsxs)(c,{align:`end`,className:`min-w-48`,children:[(0,A.jsxs)(l,{className:`min-h-11`,onSelect:()=>void xe(t),children:[(0,A.jsx)(oe,{}),O(`chat:chatHistoryPage.renameChat`)]}),(0,A.jsxs)(l,{className:`min-h-11`,onSelect:()=>void $(t,{pinned:!t.pinned},t.pinned?O(`chat:chatHistoryPage.unpinned`):O(`chat:chatHistoryPage.pinned`)),children:[t.pinned?(0,A.jsx)(d,{}):(0,A.jsx)(p,{}),t.pinned?O(`chat:chatHistoryPage.unpin`):O(`chat:chatHistoryPage.pin`)]}),(0,A.jsxs)(l,{className:`min-h-11`,onSelect:()=>void $(t,{archived:!t.archived},t.archived?O(`chat:chatHistoryPage.restored`):O(`chat:chatHistoryPage.movedToArchive`)),children:[t.archived?(0,A.jsx)(te,{}):(0,A.jsx)(f,{}),t.archived?O(`chat:chatHistoryPage.restore`):O(`chat:chatHistoryPage.archive`)]}),t.unread&&(0,A.jsx)(l,{className:`min-h-11`,onSelect:()=>void $(t,{read:!0},O(`chat:chatHistoryPage.markedRead`)),children:O(`chat:chatHistoryPage.markRead`)}),(0,A.jsx)(o,{}),(0,A.jsxs)(l,{variant:`destructive`,className:`min-h-11`,onSelect:()=>void Se(t),children:[(0,A.jsx)(ce,{}),O(`chat:chatHistoryPage.deleteChat`)]})]})]})]},t.id)),Q.total>50&&(0,A.jsx)(`div`,{className:`flex justify-center border-t border-border p-3`,children:Q.total>Q.items.length?(0,A.jsx)(g,{type:`button`,variant:`outline`,className:`min-h-11`,onClick:()=>{let e=Z+50;H.current=e>=Q.total,B({filterKey:R,count:e})},children:O(`chat:chatHistoryPage.loadMoreChats`,{shown:Q.items.length,total:Q.total})}):(0,A.jsx)(`p`,{ref:U,tabIndex:-1,role:`status`,className:`py-2 text-sm text-muted-foreground`,children:O(`chat:chatHistoryPage.allChatsShown`,{count:Q.total})})})]}):(0,A.jsxs)(b,{children:[(0,A.jsx)(de,{size:48}),(0,A.jsx)(`h2`,{children:e?O(`chat:chatHistoryPage.noMatchingConversations`):L===`archived`?O(`chat:chatHistoryPage.noArchivedChats`):F.length?O(`chat:chatHistoryPage.noActiveChats`):O(`chat:chatHistoryPage.noConversationsHaveLeftAnEchoYet`)}),(0,A.jsx)(`p`,{children:e?O(`chat:chatHistoryPage.tryADifferentSearch`):L===`archived`?O(`chat:chatHistoryPage.archivedChatsAppearHere`):F.length?O(`chat:chatHistoryPage.restoreArchivedChats`):O(`chat:chatHistoryPage.onceAConversationBeginsItWillBeQuietlyGatheredHere`)})]})]})}export{P as ChatHistoryPage};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mobile-remote-fallback-JlHu_hz6.js","assets/storage-BpAqa-YY.js","assets/ChatDockView-5Aptiph6.js","assets/rolldown-runtime-B0Z9INg1.js","assets/vendor-router-CZg2bCPV.js","assets/vendor-react-DwNgTV1j.js","assets/use-i18n-Dpn7lxcE.js","assets/i18n-CAJMli-q.js","assets/index-BVIvzUyZ.js","assets/index-Z8qQPd8t.css","assets/vendor-state-GkUciC5H.js","assets/arrow-left-B8oVrQ2S.js","assets/createLucideIcon-Cd-3GVxJ.js","assets/arrow-right-DqLOhpA2.js","assets/web-preview-panel-CHiIjAoR.js","assets/collapsible-C__hRcbA.js","assets/dist-Cfh4kzCK.js","assets/dist-B_a0oV4U.js","assets/dropdown-menu-LKlOCZsZ.js","assets/dist-DF5Gcb5O.js","assets/dist-DAs5KRGl.js","assets/es2015-0QT3KgdC.js","assets/dist-alOyD2Bh.js","assets/dist-TksYpDID.js","assets/utils-C8uzG5AZ.js","assets/vendor-ui-DvrYggeS.js","assets/chevron-right-C3t2Rckj.js","assets/AppSelect-DNIjPL7I.js","assets/dist-BlIIpW6W.js","assets/check-2vYc6QaP.js","assets/chevron-down-CxtxIjiP.js","assets/use-mobile-YXncArOq.js","assets/popover-BBuzaBfd.js","assets/progress-C_G6VqQ_.js","assets/tabs-DQYVDdOp.js","assets/tooltip-Bxq7c2mZ.js","assets/activity-BCxvXCG3.js","assets/pin-Dc2zE4cS.js","assets/bot-B3TaBp_T.js","assets/chevron-left-BAtyp3_6.js","assets/circle-check-iEdCm3Pw.js","assets/circle-x-Ba4QL7Ec.js","assets/ThemeToggleButton-DmYU4_Nh.js","assets/sun-DBWBo3We.js","assets/button-BcPDt1Ge.js","assets/ui-store-D-oOtKbW.js","assets/download-BCfIiuaL.js","assets/ellipsis-CfGKfbq6.js","assets/shield-alert-CvFOTe9h.js","assets/file-diff-GxOMJkLj.js","assets/file-text-N9JICX6E.js","assets/file-Bllajneu.js","assets/session-streaming-state-CX6zkOkc.js","assets/circle-dot-nVrXgDaG.js","assets/clock-3-CBHGbD_G.js","assets/code-xml-BrUXrBax.js","assets/copy-DHmIFc52.js","assets/folder-open-FIShC5Qk.js","assets/info-DATxy0fb.js","assets/list-checks-B5Jl4aiO.js","assets/loader-circle-BOwQzHB-.js","assets/web-preview-C3u-dblt.js","assets/events-By17Y3YI.js","assets/terminal-context-aIsIJPn8.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/x-07u4-129.js","assets/alert-QoPGoIY6.js","assets/input-CvjGYteF.js","assets/format-BRFKAYMT.js","assets/chat-api-CYidanXn.js","assets/http-rQRvhTOP.js","assets/abort-signal-f4JsiYKX.js","assets/api-D8wGrWiI.js","assets/startup-queries-DItwFTRv.js","assets/useQuery-Bg3cTjsY.js","assets/mutation-Difliohy.js","assets/card-BdUpL1KB.js","assets/vendor-motion-DSW3wzXK.js","assets/MarkdownMessage-bfyuGoi1.js","assets/vendor-markdown-plugins-DisoihU3.js","assets/vendor-shiki-runtime-UFMr0O-Q.js","assets/vendor-markdown-plugins-DEcVZfaU.css","assets/vendor-markdown-Ck4Y_w0n.js","assets/route-context-DvWDul4T.js","assets/GitDiffViewer-Dv9WOiX1.js","assets/FileAttachmentPreview-C6QaQFwb.js","assets/dialog-CGGxREwU.js","assets/dist-BdkTa5R3.js","assets/link-2-mgasYn21.js","assets/message-square-SKjZyY3v.js","assets/panel-right-BSUtqUd8.js","assets/paperclip-BCXrwYpb.js","assets/pencil-U08v_vV9.js","assets/play-DNDjDNGn.js","assets/plus-fQbSqB1n.js","assets/rotate-ccw-clock-CO6Bw-sF.js","assets/search-D0mqDaf_.js","assets/public-workspace-D_-I7fA7.js","assets/sliders-horizontal-Dryf1XyC.js","assets/square-terminal-BVG6cUT1.js","assets/workflow-Bg94dy8I.js","assets/wrench-6pg6_bqI.js","assets/client-store-lT3geTlX.js","assets/runtime-capabilities-store-D5g-oC-Z.js","assets/app-primitives-DhqJLud3.js","assets/switch-Ci_hmu39.js","assets/shortcuts-CAyIKRpZ.js","assets/use-back-layer-Cxm0-40v.js","assets/back-navigation-DS0YlxM8.js","assets/sheet-CAEHyJHI.js","assets/tool-labels-DJzY62Yr.js","assets/speech-session-BoAvAzPN.js","assets/earth-Ddy13fHh.js","assets/external-link-CEQqPcqc.js","assets/vendor-dockview-Bf3Gg83W.js","assets/vendor-dockview-D5adAaCg.css","assets/web-preview-C-4r6kgm.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{p as t}from"./vendor-router-CZg2bCPV.js";import{t as n}from"./index-BVIvzUyZ.js";import{i as r,r as i}from"./vendor-react-DwNgTV1j.js";import{t as a}from"./use-i18n-Dpn7lxcE.js";import{t as o}from"./storage-BpAqa-YY.js";import{c as s,i as c,l,n as u,o as d,s as f,t as p}from"./web-preview-panel-CHiIjAoR.js";import{A as m,C as h,E as g,M as _,O as v,S as y,a as b,c as x,h as S,i as C,j as w,k as T,l as E,u as D,w as O}from"./session-streaming-state-CX6zkOkc.js";import{t as k}from"./refresh-cw-TbWxTY4K.js";import{r as A}from"./use-mobile-YXncArOq.js";import{i as j,n as M,o as N,r as P}from"./http-rQRvhTOP.js";import{n as F,t as I}from"./api-D8wGrWiI.js";import{t as L}from"./client-store-lT3geTlX.js";import{r as R}from"./useQuery-Bg3cTjsY.js";import{WorkspacePicker as z}from"./WorkspacePicker-DFCZ_IJu.js";import{i as B}from"./format-BRFKAYMT.js";import{t as V}from"./chat-api-CYidanXn.js";import{r as H}from"./app-primitives-DhqJLud3.js";import{t as U}from"./usePagePrimaryAction-CWPC0C_f.js";import{t as W}from"./brand-DIEc3fK8.js";import{A as ee,D as G,E as te,O as ne,S as re,T as ie,b as ae,c as K,d as oe,f as se,i as q,k as J,l as ce,o as le,w as ue,x as Y,y as de}from"./events-By17Y3YI.js";import{a as fe,c as pe,i as me,l as he,n as ge,o as _e,r as ve}from"./session-organization-api-1F_dNhFa.js";import{n as ye,t as be}from"./web-preview-events-BS5O8D7_.js";import{n as xe,t as Se}from"./pick-system-directory-BnIFt85A.js";import{n as Ce,t as we}from"./side-chat-context-Dr2QLUJA.js";var X=e(r(),1);function Te({notify:e}){let{t:r}=a(),i=R(),[s,c]=(0,X.useState)([]),[l,u]=(0,X.useState)(()=>n.getItem(o.activeSession)||``),[d,f]=(0,X.useState)({}),[p,m]=(0,X.useState)(!0),[g,b]=(0,X.useState)(``),[x,S]=(0,X.useState)(()=>r(`chat:chatPage.waitingForConfiguration`)),[w,T]=(0,X.useState)([]),E=(0,X.useRef)(s),D=(0,X.useRef)(d),O=(0,X.useRef)(new Map),k=(0,X.useRef)(null),A=(0,X.useRef)(new Map),j=(0,X.useRef)(new Set),[M]=(0,X.useState)(fe),N=(0,X.useCallback)(e=>{let t=E.current,n=typeof e==`function`?e(t):e;return E.current=n,c(n),n},[]);(0,X.useEffect)(()=>Y(window,e=>{M.record(e),N(t=>me(t,e))}),[M,N]),(0,X.useEffect)(()=>ae(window,e=>{N(t=>ve(t,e))}),[N]);let P=(0,X.useCallback)(e=>{let t=j.current.size?Object.fromEntries(Object.entries(e).filter(([e])=>!j.current.has(e))):e,n=D.current;D.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=O.current.get(e);if(r)for(let e of[...r])e()}},[i]);(0,X.useEffect)(()=>de(window,({deletedIds:e})=>{M.remove(e);let t=new Set(e),n=N(e=>e.filter(e=>!t.has(e.id)));u(e=>t.has(e)?n[0]?.id||``:e);let r=D.current;e.some(e=>e in r)&&P(Object.fromEntries(Object.entries(r).filter(([e])=>!t.has(e))))}),[P,M,N]);let F=(0,X.useCallback)((e,t)=>{let n=O.current.get(e)||new Set;return n.add(t),O.current.set(e,n),()=>{n.delete(t),n.size||O.current.delete(e)}},[]),I=(0,X.useCallback)(e=>D.current[e]||y,[]),L=(0,X.useCallback)((e,t)=>{if(!e||j.current.has(e))return;let n=D.current,r=n[e]||y,i=h(r,t);i!==r&&P({...n,[e]:i})},[P]),z=(0,X.useCallback)((e,{panelOpen:t=!1,localStreamOwned:n=!1}={})=>{if(!e||t||n||A.current.has(e))return!1;let r=D.current,i=r[e];if(!i||v(i))return!1;let a={...r};return delete a[e],P(a),!0},[P]),B=(0,X.useCallback)(e=>{if(!e)return;j.current.add(e);let t={...D.current};delete t[e],P(t)},[P]),H=(0,X.useCallback)(e=>{if(j.current.has(e))return()=>{};let t=A.current;t.set(e,(t.get(e)??0)+1);let n=!1;return()=>{if(n)return;n=!0;let r=t.get(e)??0;r>1?t.set(e,r-1):(t.delete(e),z(e))}},[z]),U=(0,X.useCallback)(async(e,{preserveExistingOnEmpty:t=!1}={})=>{let n=M.getRevision(),r=await V.listSessions(),i=t&&!r.sessions.length&&E.current.length?E.current:M.reconcile(r.sessions,n);return N(i),u(e||(e=>i.some(t=>t.id===e)?e:i[0]?.id||``)),ce(),i},[M,N]),ee=(0,X.useCallback)((t=``,{inheritRecentCwd:n=!0}={})=>{if(k.current)return k.current;let i=(async()=>{try{b(``);let i=await V.createSession(r(`chat:chatPage.newChat`),pe(t,E.current,n));u(i.id),N(e=>_e(e,[i])),L(i.id,{messages:[],tools:[],approvals:[],queuedInputs:[],permissionMode:i.permissionMode||`ask`,executionMode:i.executionMode||`approval-required`,runMode:i.runMode||`plan`,goal:i.goal||null,plan:_(i,null),contextUsage:i.contextUsage||null,sessionUsage:i.sessionUsage||null,compaction:null,streaming:!1,error:``,loaded:!0,pageSize:40,messageStart:0,hasOlder:!1,olderCursor:null,runStartedAt:null,lastActivityAt:null,runFinishedAt:null,runStopped:!1,runNotice:``});try{await U(i.id)}catch(e){b(r(`chat:chatPage.theChatWasCreatedButTheListCouldNotBeRefreshedError`,{error:C(e)}))}return e(r(`chat:chatPage.newChatCreated`)),i.id}catch(e){return b(C(e)),``}})();return k.current=i,i.finally(()=>{k.current===i&&(k.current=null)}),i},[e,U,r,L,N]);(0,X.useEffect)(()=>{let i=!0,a=M.getRevision();return Promise.all([V.listSessions({refresh:!1}),V.getConfig()]).then(async([s,c])=>{if(!i)return;S(c.model?`${c.provider}/${c.model}`:r(`chat:chatPage.noModelConfigured`)),T(c.providers.flatMap(e=>e.configured&&e.enabled?e.models.filter(e=>e.kind===`chat`).map(t=>({key:`${e.id}/${t.id}`,provider:e.id,modelId:t.id,label:t.name||t.id,providerName:e.name||e.id})):[]));let l=s.sessions;if(!l.length&&(k.current||Object.keys(D.current).length)){if(await k.current,!i)return;a=M.getRevision(),l=(await V.listSessions()).sessions}if(l.length||(l=[await V.createSession(r(`chat:chatPage.newChat`))]),!i)return;l=M.reconcile(l,a),N(e=>_e(e,l));for(let e of l)L(e.id,{team:e.team||null,agents:e.agents||[],plan:_(e,null),...e.streaming?{streaming:!0,recovering:!0,loaded:!1,error:``}:{}});let d=n.getItem(o.activeSession),f=new Set([...l.map(e=>e.id),...Object.keys(D.current)]);if(u(e=>f.has(e)?e:d&&f.has(d)?d:l[0]?.id||``),typeof window<`u`&&window.__PISPER_MOBILE_APP__)try{let{consumeRemoteFallbackNotice:n}=await t(async()=>{let{consumeRemoteFallbackNotice:e}=await import(`./mobile-remote-fallback-JlHu_hz6.js`);return{consumeRemoteFallbackNotice:e}},__vite__mapDeps([0,1]));n()&&e(r(`chat:chatPage.remoteUnavailableSwitchedToLocal`))}catch{}}).catch(async e=>{if(i){if(typeof window<`u`&&window.__PISPER_MOBILE_APP__)try{let{fallbackRemoteToLocalAfterFailure:n}=await t(async()=>{let{fallbackRemoteToLocalAfterFailure:e}=await import(`./mobile-remote-fallback-JlHu_hz6.js`);return{fallbackRemoteToLocalAfterFailure:e}},__vite__mapDeps([0,1]));if(await n(e))return}catch{}i&&b(C(e))}}).finally(()=>i&&m(!1)),()=>{i=!1}},[e,r,M,L,N]),(0,X.useEffect)(()=>{l?n.setItem(o.activeSession,l):n.removeItem(o.activeSession)},[l]);let G=s.find(e=>e.id===l),te=(d[l]||y).model||G?.model||``;return(0,X.useEffect)(()=>{K(l,te)},[l,te]),(0,X.useEffect)(()=>(document.title=G?.name?`${G.name} · ${W}`:W,()=>{document.title=W}),[G?.name]),{sessions:s,sessionsRef:E,activeId:l,setActiveId:u,sessionStates:d,sessionStatesRef:D,loading:p,globalError:g,setGlobalError:b,defaultModel:x,availableModels:w,updateSessions:N,replaceSessionStates:P,updateSessionState:L,releaseSessionState:z,retainSessionState:H,discardSessionState:B,subscribeSessionState:F,getSessionState:I,refreshSessions:U,createSessionRecord:ee}}function Ee({sessions:e,sessionsRef:t,sessionStates:n,activeId:r,setActiveId:i,loading:s,localStreamSessionsRef:c,loadSessionMessages:d,releaseSessionState:f,singleSessionLayout:m,notify:h}){let{t:g}=a(),_=(0,X.useRef)({notify:h,t:g});_.current={notify:h,t:g};let[v,y]=(0,X.useState)(0),b=(0,X.useRef)(m);b.current=m;let[x,C]=(0,X.useState)(()=>window.matchMedia(`(max-width: 900px)`).matches),w=(0,X.useRef)(null),T=(0,X.useRef)(!1),E=(0,X.useRef)(!0),D=(0,X.useRef)(null),O=(0,X.useRef)([]),k=(0,X.useRef)(void 0),A=(0,X.useRef)(null),j=(0,X.useRef)(null),M=(0,X.useRef)(null),N=(0,X.useRef)(x),P=(0,X.useRef)(null),F=(0,X.useRef)(!1),[L,R]=(0,X.useState)(null),[z,B]=(0,X.useState)(!1),[V,H]=(0,X.useState)([]);(0,X.useEffect)(()=>{!m||!r||H(e=>e.includes(r)?e:[...e,r])},[r,m]);let U=(0,X.useMemo)(()=>{let t=new Set(e.map(e=>e.id));return[...V,...ee(m&&D.current?.layout||L?.layout),r].filter((e,n,r)=>e&&t.has(e)&&r.indexOf(e)===n)},[r,V,e,L,m]);(0,X.useEffect)(()=>{let e=!0;return I(`/api/settings/chat-dock-layout`).then(t=>{if(!e)return;let n=re(t);E.current=n.writable,D.current=n.layout,R(n.layout),n.writable||_.current.notify(_.current.t(`chat:workbench.layoutPreserved`),`info`),B(!0)}).catch(()=>{e&&(E.current=!1,_.current.notify(_.current.t(`chat:workbench.layoutPreserved`),`info`),B(!0))}),()=>{e=!1}},[]),(0,X.useEffect)(()=>{let e=window.matchMedia(`(max-width: 900px)`),t=()=>{N.current=e.matches,C(e.matches)};return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let W=(0,X.useCallback)(()=>{F.current||(F.current=!0,(async()=>{do{for(;P.current;){let e=P.current;P.current=null;try{await I(`/api/settings/chat-dock-layout`,{method:`PUT`,body:e})}catch{}}F.current=!1,P.current&&(F.current=!0)}while(F.current)})())},[]),ae=(0,X.useCallback)(e=>{E.current&&(P.current=e,W())},[W]),K=(0,X.useCallback)((e=w.current)=>{if(!T.current)return!1;window.clearTimeout(k.current),k.current=void 0;let t=A.current;if(e)try{let n=ue(e.toJSON(),e.activePanel?.id||``);D.current=n,t=JSON.stringify(n)}catch{}return t?(ae(t),A.current=null,!0):!1},[ae]),oe=(0,X.useCallback)((e=w.current)=>{if(!e||!T.current)return;let t;try{let n=ue(e.toJSON(),e.activePanel?.id||``);D.current=n,t=JSON.stringify(n)}catch{return}A.current=t,window.clearTimeout(k.current),k.current=window.setTimeout(()=>{k.current=void 0,!(!T.current||w.current!==e)&&(ae(t),A.current===t&&(A.current=null))},180)},[ae]),q=(0,X.useCallback)((e,n=`open`)=>{if(b.current)return j.current={sessionId:e,disposition:`open`},e&&H(t=>t.includes(e)?t:[...t,e]),i(e),!0;let r=t.current.find(t=>t.id===e),a=w.current;if(!r||!a||!T.current)return j.current={sessionId:e,disposition:n},!1;let o=G(e),s=a.getPanel(o),c=a.activePanel,l=ne({sessionId:e,visibleIds:a.panels.filter(e=>e.api.isVisible).map(J),focusedId:J(c),disposition:n,width:N.current?0:c?.api.width||a.width,height:N.current?0:c?.api.height||a.height});if(s)return s.api.setActive(),i(e),!0;if(l.kind===`unavailable`)return h(g(`chat:workbench.splitUnavailable`),`info`),!1;let u=n,f=u===`open`?a.activeGroup?{referenceGroup:a.activeGroup}:void 0:c?{referencePanel:c,direction:u}:{direction:u};return a.addPanel({id:o,component:`session`,title:r.name||g(`chat:chatPage.untitledChat`),params:{sessionId:e},renderer:`always`,minimumWidth:300,minimumHeight:240,...f?{position:f}:{}}),l.kind===`replace`&&c&&c.api.close(),i(e),d(e,{limit:40}),!0},[d,t,i,h,g]),ce=(0,X.useCallback)(e=>{let t=w.current;if(!t||!T.current)return M.current=e,!1;let n=t.getPanel(p),r=u(e.url,g(`common:webPreview.title`));if(n)return n.api.updateParameters({url:e.url}),n.api.setTitle(r),n.api.setActive(),!0;let i=t.activePanel,a=N.current?t.activeGroup?{referenceGroup:t.activeGroup}:void 0:i?{referencePanel:i,direction:`right`}:{direction:`right`};return t.addPanel({id:p,component:`webPreview`,title:r,params:{url:e.url},renderer:`always`,minimumWidth:360,...a?{position:a}:{}}),!0},[g]),Y=(0,X.useCallback)((e,t)=>{let n=w.current?.getPanel(e);if(n){if(N.current){h(g(`chat:chatPage.onNarrowScreensChatsStayInASingleTabGroup`),`info`);return}if(n.group.size<=1){h(g(`chat:chatPage.thisGroupHasOnlyOneChatChooseAnotherChatFromTheSessionListToCreateASplit`),`info`);return}n.api.moveTo({group:n.group,position:ie(t)}),n.api.setActive()}},[h,g]),fe=(0,X.useCallback)(e=>{w.current?.getPanel(e)?.api.close()},[]),pe=(0,X.useCallback)((e,t)=>{if(!t)return;let n=w.current?.getPanel(G(e));n&&n.group!==t&&n.api.moveTo({group:t})},[]),me=(0,X.useCallback)(e=>f(e,{panelOpen:!!w.current?.getPanel(G(e)),localStreamOwned:c.current.has(e)}),[c,f]),he=(0,X.useCallback)(({api:e})=>{w.current&&w.current!==e&&(T.current=!1);for(let e of O.current)e.dispose();O.current=[],w.current=e,O.current.push(e.onDidActivePanelChange(({panel:t})=>{let n=J(t);n&&i(n),oe(e)}),e.onDidLayoutChange(()=>oe(e)),e.onDidAddPanel(e=>{e.group.header.hidden=e.group.panels.every(e=>e.api.component===`session`);let t=J(e);t&&d(t,{limit:40})}),e.onDidRemovePanel(e=>{let t=J(e);t&&queueMicrotask(()=>me(t))})),y(e=>e+1)},[d,me,oe,i]);(0,X.useEffect)(()=>{if(T.current)for(let e of Object.keys(n))me(e)},[me,n]),(0,X.useEffect)(()=>{let e=e=>{let t=e.detail,n=t?.sessionId||t?.id;n&&(localStorage.removeItem(o.sessionOpenRequest),q(n,t?.disposition||`open`),t?.targetEntryId&&d(n,{force:!0,limit:40}))};return window.addEventListener(le,e),()=>window.removeEventListener(le,e)},[d,q]),(0,X.useEffect)(()=>de(window,({deletedIds:e})=>{let n=new Set(e);for(let t of e)S.getState().forget(t),l(t);H(e=>e.filter(e=>!n.has(e))),j.current&&n.has(j.current.sessionId)&&(j.current=null);let r=w.current;if(!r||!T.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=>J(e))){let e=t.current.find(e=>!n.has(e.id));e?q(e.id):i(``)}}),[q,t,i]),(0,X.useEffect)(()=>{let e=e=>{let t=e.detail;t?.url&&(localStorage.removeItem(o.webPreviewRequest),ce(t))};return window.addEventListener(be,e),()=>window.removeEventListener(be,e)},[ce]),(0,X.useEffect)(()=>{let e=()=>{document.visibilityState===`hidden`&&K()},t=()=>K();return document.addEventListener(`visibilitychange`,e),window.addEventListener(`pagehide`,t),()=>{document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`pagehide`,t)}},[K]),(0,X.useEffect)(()=>()=>{let e=w.current;K(e),T.current=!1,window.clearTimeout(k.current),k.current=void 0;for(let e of O.current)e.dispose();O.current=[],w.current=null},[K]),(0,X.useEffect)(()=>{if(!v||!z||s||T.current||!w.current)return;let t=w.current,n=!1;return queueMicrotask(()=>{if(n||w.current!==t||T.current)return;let i=new Set(e.map(e=>e.id)),a=D.current||L;if(a)try{t.fromJSON(a.layout);for(let e of[...t.panels]){if(e.api.component!==`session`)continue;let n=J(e);i.has(n)||t.removePanel(e)}}catch{E.current=!1,h(g(`chat:workbench.layoutPreserved`),`info`),t.clear()}if(!t.panels.length){let n=te({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||g(`chat:chatPage.untitledChat`),params:{sessionId:r},renderer:`always`,minimumWidth:300,...i?{position:{referenceGroup:i}}:{},inactive:!!i});i||=a.group}}for(let e of t.groups){for(let n of[...e.panels])n!==e.activePanel&&n.api.component===`session`&&t.removePanel(n);e.header.hidden=e.panels.every(e=>e.api.component===`session`)}for(let n of t.panels){let t=e.find(e=>e.id===J(n));t&&n.api.setTitle(t.name||g(`chat:chatPage.untitledChat`))}T.current=!0,localStorage.removeItem(o.chatMode);let s=j.current||se();j.current=null,s?(q(s.sessionId,s.disposition),s.targetEntryId&&d(s.sessionId,{force:!0,limit:40})):(t.getPanel(a?.activePanelId||G(r))||t.panels[0])?.api.setActive();let c=M.current||ye();M.current=null,c&&ce(c),oe(t)}),()=>{n=!0}},[r,z,v,d,s,q,ce,oe,e,L,h,g]),(0,X.useEffect)(()=>{if(!(!T.current||!w.current))for(let t of e)w.current.getPanel(G(t.id))?.api.setTitle(t.name||g(`chat:chatPage.untitledChat`))},[e,g]);let ge=(0,X.useCallback)(({panel:e})=>{let t={label:g(`chat:focusSession.closeTab`),action:()=>fe(e.id)};return x||e.group.size<=1?[t]:[{label:g(`chat:chatPage.splitToLeft`),action:()=>Y(e.id,`left`)},{label:g(`chat:chatPage.splitToRight`),action:()=>Y(e.id,`right`)},{label:g(`chat:chatPage.splitToTop`),action:()=>Y(e.id,`above`)},{label:g(`chat:chatPage.splitToBottom`),action:()=>Y(e.id,`below`)},`separator`,t]},[fe,x,Y,g]);return{compactDock:x,mobileSessionIds:U,openSessionInDock:q,splitDockPanel:Y,closeDockPanel:fe,moveSessionToGroup:pe,onDockReady:he,onDockDispose:(0,X.useCallback)(e=>{if(w.current===e){K(e),T.current=!1;for(let e of O.current)e.dispose();O.current=[],w.current=null}},[K]),getTabContextMenuItems:ge}}function De(e){return!!e?.agents?.some(e=>[`queued`,`starting`,`running`].includes(String(e.status)))}function Oe(e,{localStreamOwned:t=!1}={}){return!e||t?!1:!!(e.recovering||e.streaming||e.approvals?.length||De(e))}function ke(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function Ae(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 je(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),...Ae(e.messages,t.messages)]:Ae(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 Me(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 Ne(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=Me(e,t,je(e,t));return{...g({...e,...s.page},t),tools:t.streaming?t.tools||[]:D(t.tools||[],{finishedAt:o,error:t.error||``}),streaming:t.streaming,recovering:t.streaming,runStartedAt:t.startedAt||e.runStartedAt||null,lastActivityAt:t.lastActivityAt||e.lastActivityAt||t.startedAt||null,runFinishedAt:t.streaming?null:o,runNotice:t.streaming&&e.runNotice||``,loaded:!0,loading:!1,error:a?e.error:s.error,model:a?e.model:t.model||e.model,cwd:t.cwd||e.cwd,permissionMode:t.permissionMode||e.permissionMode,executionMode:t.executionMode||e.executionMode,runMode:t.runMode||e.runMode,goal:t.goal??e.goal??null,team:ke(t,e.team),plan:_(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 Pe({sessionStates:e,sessionStatesRef:t,localStreamSessionsRef:n,streamGenerationRef:r,updateSessionState:i,updateSessions:a}){let o=(0,X.useRef)(new Set),s=(0,X.useRef)({timer:null,activeSessions:new Set}),c=(0,X.useCallback)(async(e,{force:s=!1}={})=>{if(!e||!s&&n.current.has(e)||o.current.has(e))return;o.current.add(e);let c=t.current[e]?.runtimeSelectionRevision||0;try{let o=await V.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=>Ne(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:ke(o,n.team),plan:_(o,n.plan??null)}:n))}catch(t){n.current.has(e)||i(e,{recovering:!1,loading:!1,error:C(t)})}finally{o.current.delete(e)}},[n,t,r,i,a]),l=(0,X.useCallback)(async(e,{force:n=!1,limit:r=40}={})=>{if(!e)return;let o=t.current[e];if(o?.recovering){await c(e);return}if(!(!n&&(o?.loading||o?.streaming||o?.loaded&&(o.pageSize||0)>=r))){i(e,{loading:!0});try{let n=await V.getMessages(e,{limit:r});i(e,e=>e.streaming?{...e,loaded:!0,loading:!1,pageSize:Math.max(e.pageSize||0,r)}:{...e,...je(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:C(t)})}}},[t,c,i,a]),u=(0,X.useCallback)(async e=>{let n=t.current[e];if(!e||!n?.hasOlder||!n.olderCursor||n.loadingOlder)return!1;i(e,{loadingOlder:!0,olderError:``});try{let t=await V.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:C(t)}),!1}},[t,i]),d=(0,X.useCallback)(()=>{s.current.timer&&window.clearInterval(s.current.timer),s.current.timer=null,s.current.activeSessions.clear()},[]),p=(0,X.useCallback)(()=>{s.current.timer||!s.current.activeSessions.size||(s.current.timer=window.setInterval(()=>{if(typeof document<`u`&&document.hidden)return;let e=Array.from(s.current.activeSessions).map(async e=>{let r=t.current[e];if(!Oe(r,{localStreamOwned:n.current.has(e)})){s.current.activeSessions.delete(e);return}await c(e)});Promise.allSettled(e).then(()=>{s.current.activeSessions.size||d()})},2e3))},[n,t,d,c]);return(0,X.useEffect)(()=>{let t=new Set(Object.keys(e));for(let e of s.current.activeSessions)t.has(e)||s.current.activeSessions.delete(e);for(let[t,r]of Object.entries(e))Oe(r,{localStreamOwned:n.current.has(t)})?s.current.activeSessions.add(t):s.current.activeSessions.delete(t);s.current.activeSessions.size?p():d()},[p,n,e,d]),(0,X.useEffect)(()=>d,[d]),{syncLiveSession:c,loadSessionMessages:l,loadOlderMessages:u,liveSyncInFlightRef:o}}function Fe(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 Ie(e,{intervalMs:t=48}={}){let n=null,r=null,i=Fe(()=>{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 Le(e,{intervalMs:t=80}={}){let n=new Map,r=null,i=Fe(()=>{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 Re(e){return e>=55296&&e<=56319}function ze(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&&Re(e.charCodeAt(r-1))?r-1:r}var Be=50;function Ve(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(Be))),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<Be||v!=null&&e-v+.001<Be){g=l(E);return}_=e;let a=m;p.startsWith(m)||(m=p.slice(0,ze(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(Re(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&&Re(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 He=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(`,`)),Ue=new Map,Z=[];function We(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 Ge(e,t){let n=String(t.id||``),r=String(t.operation||``);if(!n||!He.has(r))return;let i=Date.parse(String(t.expiresAt||``));if(Number.isFinite(i)&&i<=Date.now()){await V.resolveMobileOperation(e,n,{ok:!1,error:`移动设备操作请求已过期。`});return}try{let i=await We(`mobile_execute_device_operation`,{request:{id:n,operation:r,parameters:t.parameters&&typeof t.parameters==`object`?t.parameters:void 0}});await V.resolveMobileOperation(e,n,{ok:!0,result:i})}catch(t){await V.resolveMobileOperation(e,n,{ok:!1,error:t instanceof Error?t.message:String(t)})}finally{Z.push(n),Z.length>128&&Z.splice(0,Z.length-128)}}function Ke(e){let t=String(e.id||``);!t||Z.includes(t)||(Z.push(t),Z.length>128&&Z.splice(0,Z.length-128))}function qe(e,t){let n=String(t.id||``);if(!n||Z.includes(n)||Ue.has(n))return;let r=Ge(e,t).catch(()=>{}).finally(()=>Ue.delete(n));Ue.set(n,r)}function Je(e){let t=String(e.path||``).trim().replaceAll(`\\`,`/`).toLowerCase();return t?`path:${t}`:`id:${e.id}`}function Q(e,t){return Object.hasOwn(e,`team`)?e.team??null:t??null}function Ye(e,{agentId:t,responseText:n,data:r,finishedAt:i,error:a,preserveDisplayedText:o}){let s=!!a,c=r.lifecycle||e.lifecycle||{},l=g(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:_(r,e.plan),team:Q(r,e.team),agents:r.agents||e.agents||[],contextUsage:r.contextUsage??e.contextUsage??null,sessionUsage:r.sessionUsage??e.sessionUsage??null,compaction:r.compaction??e.compaction??null,approvals:s?[]:r.approvals||[],tools:D(r.tools||e.tools,{finishedAt:i,...a?{error:a}:{}}),messages:l.messages.map(e=>e.id===t?{...e,text:o?e.text:typeof r.text==`string`?r.text:n||e.text,streaming:o?e.text!==n:!1,...s?{}:r.turnBoundaryEntryId?{turnBoundaryEntryId:String(r.turnBoundaryEntryId)}:{},...s?{}:r.assets?.length?{attachments:r.assets}:{}}:e)}}function Xe({sessionId:e,agentId:t,sessionStatesRef:n,updateSessionState:r,updateSessions:i,typewriter:a,thinkingScheduler:o,toolScheduler:s,t:c}){let l={responseText:``,responseRenderingStreaming:!0,thinkingText:``,thinkingPrefix:``,queuedDuringRun:!1},u=t=>{i(n=>n.map(n=>n.id===e?t(n):n))},f=(r,i)=>{let a=n.current[e]?.messages??[],o=a.findIndex(e=>e.id===t),s=a.slice(0,Math.max(0,o)).filter(e=>e.role===`user`).at(-1)?.text;d({sessionId:e,messageId:t,prompt:s,text:l.responseText,runId:l.runId,startedAt:l.startedAt,status:r,error:i})};return{dispatch:(i,d)=>{let p=new Date().toISOString();if(i===`run`)l.runId=typeof d.runId==`string`?d.runId:void 0,f(`started`);else if(i===`resync_required`)f(`recovering`);else if(i===`meta`)l.startedAt=typeof d.startedAt==`string`?d.startedAt:void 0,f(`started`),r(e,e=>({...g(e,d),model:d.model||e.model,thinkingLevel:d.thinkingLevel||e.thinkingLevel,cwd:d.cwd,permissionMode:d.permissionMode,executionMode:d.executionMode,runMode:d.runMode||e.runMode,goal:d.goal??null,plan:_(d,e.plan),team:Q(d,e.team),agents:d.agents||e.agents||[],currentActivity:d.currentActivity||e.currentActivity||null,activityFeed:d.activityFeed||e.activityFeed||[],lifecycle:d.lifecycle??e.lifecycle??null,sessionTreeRevision:Number(d.sessionTreeRevision??e.sessionTreeRevision??0),thinkingText:d.thinkingText??e.thinkingText??``,contextUsage:d.contextUsage??e.contextUsage??null,sessionUsage:d.sessionUsage??e.sessionUsage??null,runStartedAt:d.startedAt||e.runStartedAt,lastActivityAt:d.lastActivityAt||p})),(d.model||d.thinkingLevel||d.cwd||d.permissionMode||d.executionMode||d.goal!==void 0||d.team!==void 0||w(d)!==void 0)&&u(e=>({...e,model:d.model||e.model,thinkingLevel:d.thinkingLevel||e.thinkingLevel,cwd:d.cwd||e.cwd,permissionMode:d.permissionMode||e.permissionMode,executionMode:d.executionMode||e.executionMode,runMode:d.runMode||e.runMode,goal:d.goal??e.goal??null,team:Q(d,e.team),plan:_(d,e.plan??null)}));else if(i===`queue_update`)d.queuedInputs?.length&&(l.queuedDuringRun=!0),r(e,e=>g(e,{...d,queuedInputs:d.queuedInputs||[]}));else if(i===`agent_update`)r(e,e=>{let t=d.currentActivity||(d.agent?{type:`agent`,agent:d.agent,updatedAt:d.agent.lastActivityAt||p}:null);return{...e,team:Q(d,e.team),agents:d.agents||[],currentActivity:e.currentActivity?.type===`tool`?e.currentActivity:t||e.currentActivity,activityFeed:t?E(e.activityFeed,t):e.activityFeed,lastActivityAt:d.agent?.lastActivityAt||p}}),Object.hasOwn(d,`team`)&&u(e=>({...e,team:Q(d,e.team)}));else if(i===`agent_lifecycle`)r(e,e=>{let t=d.lifecycle||e.lifecycle,n=t?.event===`auto_retry_end`,r=t?.event===`turn_start`&&(e.lifecycle?.phase===`retrying`||e.currentActivity?.type===`retry`);return{...e,lifecycle:t,currentActivity:d.currentActivity||e.currentActivity,lastActivityAt:t?.updatedAt||p,runNotice:n&&t?.retry?.success?``:n&&t?.retry?.message?t.retry.message:r?``:e.runNotice}});else if(i===`session_tree_changed`)r(e,{sessionTreeRevision:Number(d.revision||0),lastActivityAt:p});else if(i===`thinking_level_changed`)r(e,{thinkingLevel:d.level,lastActivityAt:p}),u(e=>({...e,thinkingLevel:d.level}));else if(i===`context_usage`)r(e,{contextUsage:d});else if(i===`session_usage`)r(e,{sessionUsage:d});else if(i===`compaction_start`)s.flush(),r(e,e=>{let t={type:`compaction`,compaction:d,updatedAt:d.startedAt||p};return{...e,compaction:d,currentActivity:t,activityFeed:E(e.activityFeed,t),lastActivityAt:d.startedAt||p}});else if(i===`compaction_end`)r(e,e=>{let t={type:`model`,stage:`processing_result`,updatedAt:d.finishedAt||p};return{...e,compaction:d,currentActivity:t,activityFeed:E(e.activityFeed,t),lastActivityAt:d.finishedAt||p}});else if(i===`text_patch`)l.responseRenderingStreaming=!0,l.responseText=F(l.responseText,d),f(`streaming`),a.setTarget(l.responseText,p);else if(i===`text_delta`)l.responseText.length,l.responseRenderingStreaming=!0,l.responseText+=d.delta||``,f(`streaming`),a.setTarget(l.responseText,p);else if(i===`text_end`)l.responseText.length,typeof d.text==`string`&&(l.responseText=d.text),l.responseRenderingStreaming=!1,f(`streaming`),a.setTarget(l.responseText,d.updatedAt||p),r(e,e=>({...e,messages:e.messages.map(e=>e.id===t?{...e,streaming:e.text!==l.responseText}:e)}));else if(i===`thinking_reset`)l.thinkingText=``,l.thinkingPrefix=String(d.thinkingText||``).slice(-6e3),o.cancel(),r(e,{thinkingText:l.thinkingPrefix,currentActivity:{type:`model`,stage:`thinking`,updatedAt:d.updatedAt||p},lastActivityAt:d.updatedAt||p});else if(i===`thinking_patch`){l.thinkingText=F(l.thinkingText,d).slice(-6e3);let e=[l.thinkingPrefix,l.thinkingText].filter(Boolean).join(`
|
|
3
|
-
|
|
4
|
-
`);o.push(e.slice(-6e3),p)}else if(i===`tool_start`)o.flush(),s.flush(),r(e,e=>{let t={type:`tool`,id:d.id,name:d.name,args:d.args,status:`running`,startedAt:d.startedAt||p,updatedAt:p,...d.output===void 0?{}:{output:d.output}};return{...e,lastActivityAt:p,runNotice:``,tools:E(e.tools,t),currentActivity:t,activityFeed:E(e.activityFeed,t)}});else if(i===`tool_update`)s.push(d.id,{message:d.message||``,updatedAt:d.updatedAt||p,...d.output===void 0?{}:{output:d.output},...d.agent?{agent:d.agent}:{},...d.previewImage?{previewImage:d.previewImage}:{},...d.target?{target:d.target}:{}},d.updatedAt||p);else if(i===`tool_end`)s.flush(),r(e,e=>{let t=e.tools.find(e=>e.id===d.id),n=d.finishedAt||p,r=String(t?.name||``),i=(m(r)||[`spawn_agent`,`list_agents`,`send_message`,`followup_task`,`wait_agent`,`interrupt_agent`].includes(r))&&[`plan`,`agent`].includes(e.currentActivity?.type),a={...t||{},type:`tool`,status:d.error?`error`:`done`,message:d.message||t?.message||``,updatedAt:n,finishedAt:n,...d.output===void 0?{}:{output:d.output},...d.previewImage?{previewImage:d.previewImage}:{},...d.target?{target:d.target}:{}},o=d.agent?{type:`agent`,agent:d.agent,updatedAt:d.agent.lastActivityAt||n}:null,s=e.activityFeed||[];return(d.error||!i&&!o)&&(s=E(s,a)),o&&(s=E(s,o)),{...e,lastActivityAt:n,tools:e.tools.map(e=>e.id===d.id?{...e,status:d.error?`error`:`done`,message:d.message||``,updatedAt:n,finishedAt:n,...d.output===void 0?{}:{output:d.output},...d.previewImage?{previewImage:d.previewImage}:{},...d.target?{target:d.target}:{}}:e),currentActivity:d.error?a:o||(i?e.currentActivity:a),activityFeed:s}});else if(i===`mobile_operation_request`)qe(e,d);else if(i===`mobile_operation_cancel`)Ke(d);else if(i===`permission_request`)s.flush(),r(e,e=>({...e,lastActivityAt:p,approvals:[...(e.approvals||[]).filter(e=>e.id!==d.id),d]}));else if(i===`permission_resolved`)r(e,e=>({...e,lastActivityAt:p,approvals:(e.approvals||[]).filter(e=>e.id!==d.id)}));else if(i===`generated_asset`)r(e,e=>({...e,lastActivityAt:p,messages:e.messages.map(e=>e.id===t?{...e,attachments:[...(e.attachments||[]).filter(e=>Je(e)!==Je(d)),d]}:e)}));else if(i===`goal_update`)r(e,e=>({...e,goal:d.goal??null,team:Q(d,e.team)})),u(e=>({...e,goal:d.goal??null,team:Q(d,e.team)}));else if(T(i))s.flush(),r(e,e=>{let t=_(d,e.plan),n=d.currentActivity||{type:`plan`,plan:t,changes:x(e.plan,t),updatedAt:t?.updatedAt||p};return{...e,lastActivityAt:p,plan:t,currentActivity:n,activityFeed:E(e.activityFeed,n)}}),u(e=>({...e,plan:_(d,e.plan??null)}));else if(i===`session_title`)u(e=>({...e,name:d.name}));else if(i===`retry`){let t=c(`chat:requestNotice.retryingAttempt`,{attempt:d.attempt,maxAttempts:d.maxAttempts});r(e,e=>{let n={type:`retry`,message:d.message,summary:t,updatedAt:p};return{...e,runNotice:t,currentActivity:n,activityFeed:E(e.activityFeed,n),lastActivityAt:p}})}else if(i===`done`||i===`error`){l.queuedDuringRun||=!!(n.current[e]?.hadQueuedInput||n.current[e]?.queuedInputs?.length);let c=d.finishedAt||p;if(typeof d.text==`string`&&(l.responseText=d.text),l.responseRenderingStreaming=!1,l.terminal=!0,f(i===`done`?`completed`:`failed`,i===`error`?d.message||`Speech response failed.`:void 0),a.setTarget(l.responseText,c),i===`error`&&a.flush(),o.flush(),s.cancel(),r(e,e=>Ye(e,{agentId:t,responseText:l.responseText,data:d,finishedAt:c,preserveDisplayedText:i===`done`,...i===`error`?{error:d.message}:{}})),i===`done`)return u(e=>({...e,streaming:!1,goal:d.goal??e.goal??null,team:Q(d,e.team),plan:_(d,e.plan??null)})),!1;throw Error(d.message)}},state:l}}var Ze=`pisper:usage-updated`;function Qe({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(),_=(0,X.useRef)(new Map),v=(0,X.useRef)(new Set),y=(0,X.useRef)(new Map),x=(0,X.useCallback)(async(t,a,g=[],v=!1,y=!1,b=null,x=null,S={})=>{let w=S.retryFromIndex,T=w==null?t.trim()||(g.length?h(`chat:chatPage.pleaseAnalyzeTheseAttachments`):``)||(x?x.resourceName:``):t;if(!T&&!x)return;let O=a;if(O||=await d(),!O||o.current[O]?.streaming)return;let k=o.current[O];if(k?.pendingRuntimeSelection||k?.switchingModel||k?.switchingThinking)return;let A=(i.current.get(O)||0)+1;i.current.set(O,A);let j=!1,M=()=>!j&&i.current.get(O)===A,N=()=>{},P=new Promise(e=>{N=e});_.current.set(O,{promise:P,resolve:N}),S.activate!==!1&&(s(O),c(``));let F={id:`user-${Date.now()}`,role:`user`,text:T,invocation:x,attachments:g.map(({id:e,kind:t,name:n,mimeType:r,size:i,data:a})=>({id:e,kind:t,name:n,mimeType:r,size:i,data:t===`image`?a:void 0}))},I=`agent-${Date.now()}`,L=new Date().toISOString(),R={responseText:``,responseRenderingStreaming:!0,thinkingText:``,thinkingPrefix:``,queuedDuringRun:!1},z=Ie((e,t)=>{M()&&l(O,n=>M()?{...n,thinkingText:e,lastActivityAt:t||n.lastActivityAt,currentActivity:{type:`model`,stage:`thinking`,updatedAt:t||n.lastActivityAt}}:n)},{intervalMs:80}),B=Ve((e,t)=>{M()&&l(O,n=>{if(!M())return n;let r=n.messages.map(t=>t.id===I?{...t,text:e,streaming:R.responseRenderingStreaming||e!==R.responseText}:t);if(R.terminal||!R.responseRenderingStreaming||n.currentActivity&&n.currentActivity.type!==`model`)return{...n,messages:r};let i={type:`model`,stage:`responding`,updatedAt:t||n.lastActivityAt};return{...n,lastActivityAt:t||n.lastActivityAt,runNotice:``,currentActivity:i,activityFeed:E(n.activityFeed,i),messages:r}})},{isCurrent:M}),H=Le((e,t)=>{M()&&l(O,n=>{if(!M())return n;let r=n.activityFeed||[];for(let[n,i]of e){let e=r.find(e=>e.type===`tool`&&e.id===n);e&&(r=E(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}})}),U=Xe({sessionId:O,agentId:I,sessionStatesRef:o,updateSessionState:l,updateSessions:u,typewriter:B,thinkingScheduler:z,toolScheduler:H,t:h}),W=(e,t)=>M()?e===`resync_required`?(U.dispatch(e,t),j=!0,i.current.delete(O),r.current.delete(O),m(O),!1):U.dispatch(e,t):!1;R=U.state,l(O,e=>{let t=v||y||e.goal?.status===`active`;return{...e,messages:[...w==null?e.messages:e.messages.slice(0,w),F,{id:I,role:`agent`,text:``,streaming:!0}],tools:[],approvals:[],error:``,streaming:!0,loaded:!0,runStartedAt:L,lastActivityAt:L,runFinishedAt:null,runStopped:!1,runNotice:``,currentActivity:{type:`model`,stage:`thinking`,updatedAt:L},activityFeed:[],lifecycle:{phase:`starting`,event:`prompt_submitted`,turn:0,updatedAt:L},thinkingText:``,hadQueuedInput:!1,withdrawnInputIds:[],queuedInputRunId:I,compaction:null,plan:t?e.plan:null}}),!v&&!y&&u(e=>e.map(e=>e.id!==O||e.goal?.status===`active`?e:{...e,plan:null})),r.current.add(O);let ee=!1;try{if(w==null?await V.openStream({sessionId:O,message:T,attachments:g,goalMode:v,teamMode:y,goalTokenBudget:b,invocation:x},W):await V.retryLastTurn(O,W),!M())return;R.responseRenderingStreaming=!1,R.terminal=!0,B.setTarget(R.responseText),z.flush(),H.flush();let t=new Date().toISOString();if(o.current[O]?.streaming&&l(O,e=>{let n=e.runFinishedAt||t;return{...e,streaming:!1,runFinishedAt:n,lastActivityAt:n,runNotice:``,currentActivity:null,activityFeed:[],approvals:[],tools:D(e.tools,{finishedAt:n}),messages:e.messages.map(e=>e.id===I?{...e,streaming:e.text!==R.responseText}:e)}}),!await B.drain()||!M()||(l(O,e=>({...e,messages:e.messages.map(e=>e.id===I?{...e,text:R.responseText,streaming:!1}:e)})),!M()))return;(v||y||R.queuedDuringRun||o.current[O]?.hadQueuedInput||o.current[O]?.goal||o.current[O]?.queuedInputs?.length)&&l(O,{queuedInputs:[],hadQueuedInput:!1});let r;try{r=(await p()).find(e=>e.id===O)}catch{m(O)}if(!M())return;S.activate!==!1&&e?.(`chat.completed`,{chat:{title:r?.name||h(`chat:chatPage.appChat`,{app:`Pisper`}),summary:R.responseText.trim().slice(0,260)||h(`chat:chatPage.theAgentHasFinishedResponding`),model:o.current[O]?.model||n}})}catch(e){if(!M())return;if((R.runId||R.startedAt)&&!R.terminal){U.dispatch(`resync_required`,{}),j=!0,i.current.delete(O),r.current.delete(O),m(O);return}ee=!0,B.cancel(),z.flush(),H.cancel();let t=new Date().toISOString(),n=C(e);if(l(O,e=>({...e,streaming:!1,error:n,runFinishedAt:t,lastActivityAt:t,runNotice:``,currentActivity:null,activityFeed:[],approvals:[],tools:D(e.tools,{finishedAt:t,error:n}),messages:e.messages.map(e=>e.id===I?{...e,streaming:!1,error:n,text:e.text||R.responseText}:e)})),R.queuedDuringRun||o.current[O]?.hadQueuedInput||o.current[O]?.queuedInputs?.length){try{await f(O,{force:!0})}catch{}l(O,{queuedInputs:[],hadQueuedInput:!1})}u(e=>e.map(e=>e.id===O?{...e,streaming:!1}:e))}finally{let e=M();j=!0,e&&(r.current.delete(O),i.current.delete(O),l(O,{streaming:!1,hadQueuedInput:!1}),_.current.get(O)?.promise===P&&_.current.delete(O)),B.cancel(),z.cancel(),H.cancel(),N(),window.dispatchEvent(new Event(Ze)),ee&&e&&m(O)}},[e,d,n,f,r,p,i,o,s,c,m,h,l,u]),S=(0,X.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 V.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=g(n,e),i=!r.withdrawnInputIds?.includes(e.inputId)&&n.queuedInputRunId===s;return{...r,messages:i?O(r.messages,o):r.messages,hadQueuedInput:!0,lastActivityAt:t}}),!0}catch(e){if(b(e)){let e=_.current.get(n);return e?await e.promise:await m(n),l(n,{streaming:!1,recovering:!1,queuedInputs:[],hadQueuedInput:!1}),await f(n,{force:!0}),x(a,n,r),!0}return t(C(e),`error`),!1}},[f,t,x,o,m,h,l]),w=(0,X.useCallback)(e=>{if(!e)return Promise.resolve();let n=o.current[e],r=y.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 V.abort(e)}catch(t){let n=o.current[e];throw c(n)&&n?.runStopped&&l(e,{runStopped:s}),t}if(!c(o.current[e])||(await m(e,{force:!0}),!c(o.current[e])))return;let r=new Date().toISOString();l(e,e=>({...e,streaming:!1,queuedInputs:[],hadQueuedInput:!1,goal:n.goal??null,team:Object.hasOwn(n,`team`)?n.team??null:e.team,compaction:e.compaction?.active?{...e.compaction,active:!1,status:`aborted`,aborted:!0,finishedAt:r}:e.compaction,runFinishedAt:r,lastActivityAt:r,runStopped:!0,runNotice:``,approvals:[],tools:D(e.tools,{finishedAt:r,error: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(()=>{y.current.get(e)?.promise===d&&y.current.delete(e)});return y.current.set(e,{matchesRun:c,promise:d}),d},[t,o,m,h,l,u]),T=(0,X.useCallback)(async(e,n)=>{let r=`${e}/${n}`;if(!e||!n||v.current.has(r))return null;v.current.add(r),l(e,e=>({...e,withdrawingInputIds:[...e.withdrawingInputIds||[],n]}));try{let r=await V.withdrawQueuedInput(e,n);return l(e,e=>g(e,{...r,removedInputId:r.removed?n:void 0})),r.removed?r.withdrawnInput||null:(t(h(`chat:focusSession.queuedInputAlreadyConsumed`),`info`),null)}catch(e){return t(C(e),`error`),null}finally{v.current.delete(r),l(e,e=>({...e,withdrawingInputIds:(e.withdrawingInputIds||[]).filter(e=>e!==n)}))}},[t,h,l]);return{sendPrompt:x,retryLastTurn:(0,X.useCallback)(async(e,t={})=>{let n=o.current[e];if(!n||n.streaming)return;let r=n.messages||[],i=-1;for(let e=r.length-1;e>=0;--e)if(r[e]?.role===`user`){i=e;break}if(i<0)return;let a=r[i];await x(a.text||``,e,a.attachments||[],!1,!1,null,null,{retryFromIndex:i,...t})},[x,o]),queuePrompt:S,withdrawQueuedInput:T,abort:w}}function $e(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 et({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 $e(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 tt=et({isStreaming:async(e,t)=>{let n=await V.getLiveSession(e,{signal:t});return!!(n.configurationBusy??n.streaming)},apply:(e,t)=>t.model?V.updateModel(e,t.model.provider,t.model.modelId):V.setThinkingLevel(e,t.thinkingLevel)});function nt({notify:e,requestText:t,requestConfirm:n,availableModels:r,sessionStatesRef:i,updateSessionState:o,updateSessions:s,replaceSessionStates:c,setGlobalError:l,syncLiveSession:u}){let{t:d,language:f}=a(),[p,m]=(0,X.useState)(null),h=(0,X.useCallback)(e=>{o(e,e=>({...e,runtimeSelectionRevision:(e.runtimeSelectionRevision||0)+1}))},[o]),g=(0,X.useCallback)((e,t)=>{s(n=>n.map(n=>n.id===e?t(n):n))},[s]),_=(0,X.useCallback)(async t=>{if(t)try{let n=await V.pauseGoal(t);o(t,{goal:n.goal||null}),g(t,e=>({...e,goal:n.goal||null})),e(d(`chat:chatPage.goalPaused`),`info`)}catch(e){o(t,{error:C(e)})}},[e,d,o,g]),v=(0,X.useCallback)(async(t,n)=>{if(t)try{let r=await V.setGoalBudget(t,n);o(t,{goal:r.goal||null}),g(t,e=>({...e,goal:r.goal||null})),e(d(`chat:chatPage.goalTokenBudgetUpdated`),`info`)}catch(e){o(t,{error:C(e)})}},[e,d,o,g]),y=(0,X.useCallback)(async t=>{let n=i.current[t];if(!(!t||n?.streaming||n?.compaction?.active)){o(t,{compaction:{...n?.compaction||{},active:!0,status:`running`,reason:`manual`},error:``});try{let n=await V.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:C(e)})}}},[e,i,u,d,o]),b=(0,X.useCallback)(async e=>{let t=await V.updateCompactionPreference(e);c(Object.fromEntries(Object.entries(i.current).map(([e,n])=>{let r=Number(n.contextUsage?.contextWindow)||0;return r?[e,{...n,contextUsage:{...n.contextUsage,compactAtPercent:t.thresholdPercent,compactAtTokens:Math.floor(r*t.thresholdPercent/100)}}]:[e,n]})))},[c,i]),x=(0,X.useCallback)((e,t={})=>{let n=String(t.model||``),r=String(i.current[e]?.model||``);if(n&&r&&n!==r)return;let a=Array.isArray(t.availableThinkingLevels)?t.availableThinkingLevels.map(e=>String(e)):Array.isArray(t.availableLevels)?t.availableLevels.map(e=>String(e)):[],s=String(t.thinkingLevel||``);o(e,{thinkingLevel:s||void 0,availableThinkingLevels:a,thinkingStatus:String(t.thinkingStatus||t.status||``),thinkingMessage:String(t.thinkingMessage||t.message||``),switchingThinking:!1}),s&&g(e,e=>({...e,thinkingLevel:s}))},[i,o,g]),S=(0,X.useCallback)(async e=>{if(!e)return;let t=i.current[e]?.runtimeSelectionRevision,n=i.current[e];if(!(n?.switchingModel||n?.switchingThinking))try{let n=await V.getThinkingLevel(e);if(i.current[e]?.runtimeSelectionRevision!==t)return;x(e,n)}catch{if(i.current[e]?.runtimeSelectionRevision!==t)return;o(e,{thinkingStatus:`error`,thinkingMessage:d(`chat:focusSession.thinkingLevelsLoadFailed`)})}},[x,i,d,o]),w=(0,X.useCallback)(async(t,a)=>{let s=r.find(e=>e.key===a);if(!t||!s)return;let c=i.current[t];if(c?.switchingModel||c?.switchingThinking)return;if(c?.streaming||c?.pendingRuntimeSelection){tt.select(t,s.key===c.model?void 0:{model:s});return}h(t);let l=c?.model||``,u=!!c?.messages?.length&&!c?.compaction?.active;o(t,{switchingModel:!0,model:s.key,error:``}),g(t,e=>({...e,model:s.key}));try{let r=await V.updateModel(t,s.provider,s.modelId);h(t),o(t,{model:r.model||s.key,contextUsage:r.contextUsage??null,switchingModel:!1}),g(t,e=>({...e,model:r.model||s.key})),x(t,r),e(d(`chat:chatPage.switchedToModel`,{model:s.label})),u&&await n({title:d(`chat:chatPage.compactAfterModelSwitch`),message:d(`chat:chatPage.compactAfterModelSwitchDescription`),confirmLabel:d(`chat:chatPage.compactNow`),tone:`primary`})&&await y(t)}catch(e){h(t),o(t,{switchingModel:!1,model:l||void 0,error:C(e)}),l&&g(t,e=>({...e,model:l}))}},[x,r,y,h,e,n,i,d,o,g]),T=(0,X.useCallback)(async(t,n)=>{let r=String(n||``).trim();if(!t||!r)return;let a=i.current[t]||{};if(a.switchingModel||a.switchingThinking)return;if(a.streaming||a.pendingRuntimeSelection){if(a.pendingRuntimeSelection?.model)return;tt.select(t,r===a.thinkingLevel?void 0:{thinkingLevel:r});return}h(t);let s=String(a.thinkingLevel||``);o(t,{switchingThinking:!0,thinkingLevel:r,error:``}),g(t,e=>({...e,thinkingLevel:r}));try{let n=await V.setThinkingLevel(t,r);h(t),x(t,n),e(d(`chat:chatPage.switchedToThinkingLevel`,{level:String(n.thinkingLevel||r)}))}catch(e){h(t),o(t,{switchingThinking:!1,thinkingLevel:s||void 0,error:C(e)}),s&&g(t,e=>({...e,thinkingLevel:s}))}},[x,h,e,i,d,o,g]);(0,X.useEffect)(()=>tt.subscribe((t,n)=>{if(!n){o(t,{pendingRuntimeSelection:void 0});return}let{selection:r,status:i}=n;if(i===`pending`||i===`applying`){h(t),o(t,{pendingRuntimeSelection:{model:r.model?.key,thinkingLevel:r.thinkingLevel},switchingModel:i===`applying`&&!!r.model,switchingThinking:i===`applying`&&!!r.thinkingLevel,error:``});return}if(h(t),o(t,{pendingRuntimeSelection:void 0,switchingModel:!1,switchingThinking:!1,...n.error?{error:C(n.error)}:{}}),i===`error`)return;let a=n.result||{};if(r.model){let e=String(a.model||r.model.key);o(t,{model:e,contextUsage:a.contextUsage??null}),g(t,t=>({...t,model:e}))}x(t,a),e(r.model?d(`chat:chatPage.switchedToModel`,{model:r.model.label}):d(`chat:chatPage.switchedToThinkingLevel`,{level:String(a.thinkingLevel||r.thinkingLevel)}))}),[x,h,e,d,o,g]);let E=(0,X.useCallback)(async(t,r)=>{if(!t)return!1;o(t,{switchingPermission:!0,error:``});try{if(r===`full-access`&&!await n({title:d(`chat:chatPage.enableFullAccess`),message:d(`chat:chatPage.fullAccessAllowsTheAgentToUseFilesAndNetworkServicesOutsideTheWorkspaceAndShellCommandsWillNoLon`),confirmLabel:d(`chat:chatPage.enableFullAccess`)}))return o(t,{switchingPermission:!1}),!1;let i=await V.updateExecutionMode(t,r);return o(t,{executionMode:i.executionMode,permissionMode:i.permissionMode,switchingPermission:!1}),g(t,e=>({...e,executionMode:i.executionMode,permissionMode:i.permissionMode})),e(d(`chat:chatPage.executionModeChangedToMode`,{mode:i.executionMode===`approval-required`?d(`chat:chatPage.approvalRequired`):i.executionMode===`workspace-write`?d(`chat:focusSession.workspaceWrite`):d(`chat:chatPage.fullAccess`)})),!0}catch(e){return o(t,{switchingPermission:!1,error:C(e)}),!1}},[e,n,d,o,g]),D=(0,X.useCallback)(async(e,t)=>{if(!e)return!1;try{let n=await V.updateRunMode(e,t),r=String(n.runMode||t);return o(e,{runMode:r}),g(e,e=>({...e,runMode:r})),!0}catch(t){return o(e,{error:C(t)}),!1}},[o,g]),O=(0,X.useCallback)(async(t,n,r)=>{o(t,{error:``});try{let e=await V.resolveApproval(t,n,r);o(t,e=>({...e,approvals:(e.approvals||[]).filter(e=>e.id!==n)})),e.alreadyResolved&&u(t,{force:!0})}catch(n){if(await u(t,{force:!0}),n instanceof N&&n.status===404){e(d(`chat:chatPage.approvalStatusUpdated`),`info`);return}throw o(t,{error:C(n)}),n}},[e,u,d,o]),k=(0,X.useCallback)(async(t,n)=>{if(!(!t?.id||i.current[t.id]?.streaming)){o(t.id,{switchingCwd:!0,error:``});try{let r=await V.updateCwd(t.id,n);o(t.id,{cwd:r.cwd,switchingCwd:!1}),g(t.id,e=>({...e,cwd:r.cwd})),m(null),e(d(`chat:chatPage.workingDirectoryChangedToWorkspace`,{workspace:B(r.cwd,f)}))}catch(e){throw o(t.id,{switchingCwd:!1,error:C(e)}),e}}},[f,e,i,d,o,g]);return{workspaceSession:p,setWorkspaceSession:m,switchSessionCwd:k,selectSessionWorkspace:(0,X.useCallback)(async t=>{if(t?.id){if(i.current[t.id]?.streaming){e(d(`chat:chatPage.stopTheActiveRunBeforeChangingTheWorkspace`),`info`);return}if(!Se()){m(t);return}try{let e=await xe(t.cwd);e&&await k(t,e)}catch(e){o(t.id,{switchingCwd:!1,error:C(e)})}}},[e,i,k,d,o]),renameSession:(0,X.useCallback)(async n=>{if(!n?.id)return;if(i.current[n.id]?.streaming){e(d(`chat:chatPage.stopTheActiveRunBeforeRenamingTheChat`),`info`);return}let r=await t({title:d(`chat:chatPage.renameChat`),inputLabel:d(`chat:chatPage.chatTitle`),value:n.name,confirmLabel:d(`chat:chatPage.save`)});if(r!==null&&r!==n.name)try{let t=await V.renameSession(n.id,r);g(n.id,e=>({...e,name:t.name})),ce({id:n.id,name:t.name}),e(d(`chat:chatPage.chatTitleUpdated`))}catch(e){l(C(e))}},[e,t,i,l,d,g]),pauseGoal:_,setGoalBudget:v,compactSession:y,setCompactionThreshold:b,loadSessionThinkingLevel:S,switchSessionModel:w,switchSessionThinkingLevel:T,switchSessionExecutionMode:E,switchSessionRunMode:D,resolveToolApproval:O}}function rt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function it(e){if(!rt(e)||typeof e.created!=`boolean`)throw j();if(e.session===null){if(e.expiresAt!==null||e.created)throw j();return{session:null,expiresAt:null,created:!1}}let t=e.session;if(!rt(t)||typeof t.id!=`string`||!t.id||typeof e.expiresAt!=`string`||!Number.isFinite(Date.parse(e.expiresAt)))throw j();let n={id:t.id};for(let e of[`name`,`cwd`,`model`,`thinkingLevel`,`executionMode`,`permissionMode`,`runMode`]){let r=t[e];if(r!=null&&typeof r!=`string`)throw j();typeof r==`string`&&(n[e]=r)}if(t.streaming!==void 0&&typeof t.streaming!=`boolean`)throw j();return typeof t.streaming==`boolean`&&(n.streaming=t.streaming),{session:n,expiresAt:e.expiresAt,created:e.created}}async function at(e,t){return it(await M(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{signal:t}))}async function ot(e,t){let n=it(await M(`/api/sessions/${encodeURIComponent(e)}/side-chat`,{method:`POST`,signal:t}));if(!n.session)throw j();return n}var $=i();function st({runtime:e,children:t}){let[n,r]=(0,X.useState)({}),i=(0,X.useRef)(n),a=(0,X.useRef)(!0),o=(0,X.useRef)(e),s=(0,X.useRef)(new Map),c=(0,X.useRef)(new Map);(0,X.useLayoutEffect)(()=>{o.current=e},[e]),(0,X.useLayoutEffect)(()=>(a.current=!0,()=>{a.current=!1}),[]);let u=(0,X.useCallback)((e,t)=>{let n={...i.current,[e]:{...i.current[e]??we,...t}};i.current=n,r(n)},[]),d=(0,X.useCallback)(async(e,t=!1)=>{if(!a.current)return null;let n=c.current.get(e);if(n){let r=await n.promise;return!t||n.create?r:d(e,!0)}let r=new AbortController;u(e,{loading:!0,error:``});let f=(async()=>{try{let n=await(t?ot:at)(e,r.signal);if(r.signal.aborted)return null;let a=i.current[e]?.session?.id;if(a&&a!==n.session?.id&&(o.current.discard(a),s.current.get(a)?.(),s.current.delete(a),l(a)),u(e,{...n,expired:!n.session&&!!(a||i.current[e]?.expired)}),n.session){if(s.current.has(n.session.id)||s.current.set(n.session.id,o.current.retainSessionState(n.session.id)),await o.current.syncLiveSession(n.session.id),r.signal.aborted)return null;await o.current.loadSessionMessages(n.session.id)}return r.signal.aborted?null:n}catch(t){return r.signal.aborted||u(e,{error:C(t)}),null}finally{r.signal.aborted||u(e,{loading:!1}),c.current.get(e)?.controller===r&&c.current.delete(e)}})();return c.current.set(e,{create:t,controller:r,promise:f}),f},[u]);(0,X.useEffect)(()=>{a.current=!0;let e=c.current,t=s.current,n=()=>{for(let[e,t]of Object.entries(i.current))t.expiresAt&&Date.parse(t.expiresAt)<=Date.now()&&!c.current.has(e)&&d(e)},r=window.setInterval(n,6e4),o=()=>{document.visibilityState===`visible`&&n()};return document.addEventListener(`visibilitychange`,o),()=>{a.current=!1,window.clearInterval(r),document.removeEventListener(`visibilitychange`,o);for(let t of e.values())t.controller.abort();e.clear();for(let e of t.values())e();t.clear()}},[d]);let f=(0,X.useCallback)((e,t)=>u(e,{draft:t}),[u]),p=(0,X.useMemo)(()=>({entries:n,runtime:e,load:d,setDraft:f}),[n,e,d,f]);return(0,$.jsx)(Ce.Provider,{value:p,children:t})}var ct=(0,X.lazy)(()=>t(()=>import(`./ChatDockView-5Aptiph6.js`).then(e=>({default:e.ChatDockView})),__vite__mapDeps([2,3,4,5,6,7,8,9,1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])));function lt(e){let t=window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke;return t?t(e):Promise.reject(Error(`native bridge unavailable`))}function ut({notify:e,navigate:t,browserNotify:n,registerPrimaryAction:r,pendingAsset:i,onAssetConsumed:o,requestText:l,requestConfirm:u}){let{t:d}=a(),f=L(e=>e.client===`mobile-app`),p=L(e=>e.loaded),m=A(),h=f||m,g=(0,X.useRef)(null),_=(0,X.useRef)(new Set),v=(0,X.useRef)(new Map),y=(0,X.useRef)(null),b=Te({notify:e}),x=(0,X.useRef)(new Set);(0,X.useEffect)(()=>{let e=()=>{let e=b.activeId;!e||document.visibilityState!==`visible`||!b.sessions.some(t=>t.id===e&&t.unread)||x.current.has(e)||(x.current.add(e),ge(e,{read:!0}).catch(()=>void 0).finally(()=>x.current.delete(e)))};return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[b.activeId,b.sessions]);let S=Pe({sessionStates:b.sessionStates,sessionStatesRef:b.sessionStatesRef,localStreamSessionsRef:_,streamGenerationRef:v,updateSessionState:b.updateSessionState,updateSessions:b.updateSessions}),C=Ee({sessions:b.sessions,sessionsRef:b.sessionsRef,sessionStates:b.sessionStates,activeId:b.activeId,setActiveId:b.setActiveId,loading:b.loading,localStreamSessionsRef:_,loadSessionMessages:S.loadSessionMessages,releaseSessionState:b.releaseSessionState,singleSessionLayout:h,notify:e}),w=b.createSessionRecord,T=S.loadSessionMessages,E=b.refreshSessions,D=b.sessionStatesRef,O=S.syncLiveSession,j=b.setGlobalError,M=C.openSessionInDock,N=C.moveSessionToGroup,[F,I]=(0,X.useState)({sessionId:``,token:0}),R=(0,X.useCallback)(async(e,t=``)=>{let n=null;f&&(n=await lt(`mobile_state`).catch(()=>null));let r=he(f,n),i=await w(t,{inheritRecentCwd:r});return i?(M(i)&&N(i,e),i):``},[w,f,N,M]);U(r,R);let B=Qe({browserNotify:n,notify:e,defaultModel:b.defaultModel,localStreamSessionsRef:_,streamGenerationRef:v,sessionStatesRef:b.sessionStatesRef,setActiveId:b.setActiveId,setGlobalError:b.setGlobalError,updateSessionState:b.updateSessionState,updateSessions:b.updateSessions,createSession:R,loadSessionMessages:S.loadSessionMessages,refreshSessions:b.refreshSessions,syncLiveSession:S.syncLiveSession}),{sendPrompt:W,retryLastTurn:ee}=B;(0,X.useEffect)(()=>{let e=()=>{let e=oe();e&&(async()=>{let t=await R(void 0,e.cwd);t&&e.prompt&&W(e.prompt,t)})()};return window.addEventListener(q,e),e(),()=>window.removeEventListener(q,e)},[R,W]);let G=nt({notify:e,requestText:l,requestConfirm:u,availableModels:b.availableModels,sessionStatesRef:b.sessionStatesRef,updateSessionState:b.updateSessionState,updateSessions:b.updateSessions,replaceSessionStates:b.replaceSessionStates,setGlobalError:b.setGlobalError,syncLiveSession:S.syncLiveSession}),te=(0,X.useCallback)(()=>{if(document.visibilityState!==`visible`||y.current)return;let e=(async()=>{f&&await P().catch(()=>void 0);let e=[];try{e=await E(void 0,{preserveExistingOnEmpty:!0})}catch{}let t=new Set([...Object.keys(D.current),...b.activeId?[b.activeId]:[],...e.filter(e=>e.streaming).map(e=>e.id)]);await Promise.allSettled(Array.from(t).map(e=>O(e,{force:!0})))})().finally(()=>{y.current=null});y.current=e},[b.activeId,f,E,D,O]);(0,X.useEffect)(()=>{let e=()=>te();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)}},[te]);let ne=(0,X.useCallback)(async e=>{await T(e,{force:!0}),await E(e)},[T,E]),re=(0,X.useCallback)(async(t,n)=>{if(!(!t?.id||!n))try{if(j(``),(await V.navigateSessionTree(t.id,n,!1)).cancelled)return;await ne(t.id),I(e=>({sessionId:t.id,token:e.token+1})),e(d(`chat:chatPage.branchedFromNode`))}catch(e){j(e instanceof Error?e.message:String(e))}},[e,ne,j,d]),ie=(0,X.useCallback)(async(t,n)=>{if(!t?.id||!n)return;let r=await l({title:d(`chat:chatPage.createChildChat`),inputLabel:d(`chat:chatPage.chatTitle`),value:`${d(`chat:chatPage.separateChatSuffix`)} · ${t.name||d(`chat:chatPage.newChat`)}`,confirmLabel:d(`chat:chatPage.create`)});if(r!==null)try{j(``);let i=await V.deriveSession(t.id,n,r);await E(),M(i.id),I(e=>({sessionId:i.id,token:e.token+1})),e(d(`chat:chatPage.childChatCreated`))}catch(e){j(e instanceof Error?e.message:String(e))}},[e,M,E,l,j,d]),ae=(0,X.useCallback)(()=>t(`config`),[t]),K=(0,X.useMemo)(()=>({sessions:b.sessions,subscribeSessionState:b.subscribeSessionState,getSessionState:b.getSessionState,defaultModel:b.defaultModel,availableModels:b.availableModels,globalError:b.globalError,activeId:b.activeId,compactDock:C.compactDock,mobileLayout:h,requestConfirm:u,sessionTreePulseSessionId:F.sessionId,sessionTreePulseToken:F.token,pendingAsset:i,onAssetConsumed:o,notify:e,openModelSettings:ae,loadSessionMessages:S.loadSessionMessages,loadOlderMessages:S.loadOlderMessages,sendPrompt:B.sendPrompt,retryLastTurn:B.retryLastTurn,queuePrompt:B.queuePrompt,withdrawQueuedInput:B.withdrawQueuedInput,abort:B.abort,pauseGoal:G.pauseGoal,setGoalBudget:G.setGoalBudget,compactSession:G.compactSession,setCompactionThreshold:G.setCompactionThreshold,switchSessionModel:G.switchSessionModel,loadSessionThinkingLevel:G.loadSessionThinkingLevel,switchSessionThinkingLevel:G.switchSessionThinkingLevel,switchSessionExecutionMode:G.switchSessionExecutionMode,switchSessionRunMode:G.switchSessionRunMode,resolveToolApproval:G.resolveToolApproval,selectSessionWorkspace:G.selectSessionWorkspace,renameSession:G.renameSession,branchFromEntry:re,createChildSession:ie,reloadSessionBranch:ne,splitDockPanel:C.splitDockPanel,closeDockPanel:C.closeDockPanel}),[b.sessions,b.subscribeSessionState,b.getSessionState,b.defaultModel,b.availableModels,b.globalError,b.activeId,C.compactDock,C.splitDockPanel,C.closeDockPanel,h,u,F.sessionId,F.token,i,o,e,ae,S.loadSessionMessages,S.loadOlderMessages,B.sendPrompt,B.retryLastTurn,B.queuePrompt,B.withdrawQueuedInput,B.abort,G.pauseGoal,G.setGoalBudget,G.compactSession,G.setCompactionThreshold,G.switchSessionModel,G.loadSessionThinkingLevel,G.switchSessionThinkingLevel,G.switchSessionExecutionMode,G.switchSessionRunMode,G.resolveToolApproval,G.selectSessionWorkspace,G.renameSession,re,ie,ne]),se=b.discardSessionState,J=(0,X.useMemo)(()=>({subscribeSessionState:b.subscribeSessionState,getSessionState:b.getSessionState,retainSessionState:b.retainSessionState,discard:e=>{v.current.set(e,(v.current.get(e)??0)+1),_.current.delete(e),se(e)},loadSessionMessages:S.loadSessionMessages,loadOlderMessages:S.loadOlderMessages,syncLiveSession:S.syncLiveSession,send:(e,t)=>W(t,e,[],!1,!1,null,null,{activate:!1}),retry:e=>ee(e,{activate:!1}),abort:B.abort,approve:G.resolveToolApproval}),[b.subscribeSessionState,b.getSessionState,b.retainSessionState,se,S.loadSessionMessages,S.loadOlderMessages,S.syncLiveSession,W,ee,B.abort,G.resolveToolApproval]);return(0,$.jsxs)(st,{runtime:J,children:[(0,$.jsx)(`div`,{ref:g,className:`chat-layout dock-layout relative flex w-full min-w-0 min-h-0 flex-1`,children:b.loading?(0,$.jsxs)(H,{children:[(0,$.jsx)(k,{className:`animate-spin`,size:24}),(0,$.jsx)(`h2`,{children:d(`chat:chatPage.wakingTheAgent`)}),(0,$.jsx)(`p`,{children:d(`chat:chatPage.modelsSessionsAndContextAreSettlingIntoPlace`)})]}):(0,$.jsx)(`div`,{className:`chat-dock-workspace relative h-full w-full min-w-0 min-h-0 flex-1 [isolation:isolate] overflow-hidden border-0 rounded-none bg-background`,children:(0,$.jsx)(s.Provider,{value:K,children:p&&(h?(0,$.jsx)(c,{sessionIds:C.mobileSessionIds,onSelectSession:C.openSessionInDock,onCreateSession:R,onOpenHistory:()=>t(`chatHistory`)}):(0,$.jsx)(X.Suspense,{fallback:(0,$.jsx)(`div`,{role:`status`,className:`p-4`,children:d(`chat:chatPage.wakingTheAgent`)}),children:(0,$.jsx)(ct,{compactDock:C.compactDock,onDockReady:C.onDockReady,onDockDispose:C.onDockDispose,getTabContextMenuItems:C.getTabContextMenuItems,createSession:R})}))})})}),G.workspaceSession&&(0,$.jsx)(z,{open:!0,initialPath:G.workspaceSession.cwd,description:d(`common:workspacePicker.selectWorkspaceForChat`,{name:G.workspaceSession.name}),onOpenChange:e=>!e&&G.setWorkspaceSession(null),onSelect:e=>G.switchSessionCwd(G.workspaceSession,e)})]})}export{ut as ChatPage};
|