@openchambery/web 1.18.2-beta.31 → 1.18.2-beta.32
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/dist/assets/AssistantView-BhLt99kH.js +1 -0
- package/dist/assets/{ChatContainer-Ddon7i5x.js → ChatContainer-BlmxfoFd.js} +40 -40
- package/dist/assets/{DiagramView-BgqIMaEm.js → DiagramView-cv-vQB2f.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-BxiDhVH9.js → MarkdownRendererImpl-ClKjHmC-.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-BsQmEqPO.js → MobileDetailNavigation-CeBAGm8g.js} +1 -1
- package/dist/assets/{MobileShareBridge-CUwGZNSo.js → MobileShareBridge-CPF_cu0F.js} +1 -1
- package/dist/assets/MobileSurface-RC5BWA3I.js +2 -0
- package/dist/assets/{MultiRunWindow-CTWluFXJ.js → MultiRunWindow-S_3yVTw5.js} +1 -1
- package/dist/assets/{OnboardingScreen-CC4fqs0M.js → OnboardingScreen-gMGdBXkS.js} +1 -1
- package/dist/assets/{SettingsView-DpnDXF2_.js → SettingsView-CAKZZQz7.js} +6 -6
- package/dist/assets/{SettingsWindow-Dvi882vA.js → SettingsWindow-CG98Gozw.js} +1 -1
- package/dist/assets/{TerminalView-xrLSN4j7.js → TerminalView-BdiPDeDu.js} +1 -1
- package/dist/assets/{ToolOutputDialog-C9bzo8sK.js → ToolOutputDialog-D-6Ezjqs.js} +1 -1
- package/dist/assets/{appThemeRegistry-BN9k7vVa.js → appThemeRegistry-DawdCrT-.js} +2 -2
- package/dist/assets/{clipboard-B5V61jlQ.js → clipboard-DD27ttLy.js} +1 -1
- package/dist/assets/{context-menu-BbwapTNT.js → context-menu-DB0-VukO.js} +1 -1
- package/dist/assets/{dialog-CnekXdCq.js → dialog-M9TJGHb8.js} +1 -1
- package/dist/assets/{es-ZHyqPb3M.js → es-Dw9Q-ozz.js} +3 -3
- package/dist/assets/{fr-nXAAl4qu.js → fr-ColDJ2rK.js} +3 -3
- package/dist/assets/{gitApi-k7AZQbpz.js → gitApi-DkIj7msF.js} +3 -3
- package/dist/assets/{insertionBoundaries-7W_1e-d-.js → insertionBoundaries-Ci7W_si4.js} +1 -1
- package/dist/assets/{ja-CLcxQZ5K.js → ja-DK2Z5Adv.js} +3 -3
- package/dist/assets/{ko-KgjBt0nP.js → ko-BFhsYNY4.js} +3 -3
- package/dist/assets/{main-BxsNKnDp.js → main-Byam6OLJ.js} +15 -15
- package/dist/assets/{main-Ci6PEc-J.js → main-JxXeBGUv.js} +2 -2
- package/dist/assets/{miniChat-B5GJJFgo.js → miniChat-MBdDWNL8.js} +2 -2
- package/dist/assets/{mobile-D1NLpIYA.js → mobile-7J0N2edW.js} +2 -2
- package/dist/assets/multirun-BDLm-9p_.js +4 -0
- package/dist/assets/pl-9HDNVuJh.js +15 -0
- package/dist/assets/projectMeta-6Y8eqOct.js +3 -0
- package/dist/assets/{pt-BR-B6nleSMM.js → pt-BR-BjC1-fOS.js} +3 -3
- package/dist/assets/radio-VgkIFFc0.js +1 -0
- package/dist/assets/renderElectronMiniChatApp-DtiL6bi8.js +2 -0
- package/dist/assets/renderMobileApp-xWa6AxDE.js +23 -0
- package/dist/assets/{runtimeConfig-pPnLM80M.js → runtimeConfig-BgAUYwpw.js} +1 -1
- package/dist/assets/runtimeEndpointReset-CjX8fEqz.js +145 -0
- package/dist/assets/{sortable-tabs-strip-C82FJb25.js → sortable-tabs-strip-Z5_rGG_O.js} +1 -1
- package/dist/assets/{src-Da2IGcZi.css → src-BZ9v9Hhc.css} +1 -1
- package/dist/assets/{store-BDxgw-Hx.js → store-CNhcDSiX.js} +3 -3
- package/dist/assets/{uk-KTDMzdyl.js → uk-Dz5dc1bK.js} +3 -3
- package/dist/assets/{useAppFontEffects-BTAoI3qb.js → useAppFontEffects-D79ls-ks.js} +4 -4
- package/dist/assets/{useDesktopWindowControlsLayout-Dn5rwAx1.js → useDesktopWindowControlsLayout-obujEeM2.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-CfWfXRNf.js → useEffectiveDirectory-DFAdHJ0-.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-nmb4CWpS.js → useMobileNavigationStore-BADiWXJ3.js} +21 -21
- package/dist/assets/{useSessionAutoCleanup-DdhPDfkF.js → useSessionAutoCleanup-CulttT9K.js} +1 -1
- package/dist/assets/{useWorkerHighlightedLines-hY7VrbXR.js → useWorkerHighlightedLines-Cg5oIMcb.js} +1 -1
- package/dist/assets/{zh-CN-BilLDIh_.js → zh-CN-CK_vXKLC.js} +3 -3
- package/dist/assets/{zh-TW-DBDsyRLQ.js → zh-TW-D1PJ5wPO.js} +3 -3
- package/dist/index.html +3 -3
- package/dist/mini-chat.html +3 -3
- package/dist/mobile.html +3 -3
- package/package.json +1 -1
- package/server/lib/message-queue/DOCUMENTATION.md +1 -1
- package/dist/assets/AssistantView-BIn8F2Hj.js +0 -1
- package/dist/assets/MobileSurface-DJAZpIrG.js +0 -2
- package/dist/assets/multirun-DGbjKRAa.js +0 -4
- package/dist/assets/pl-ZJkD7N-8.js +0 -15
- package/dist/assets/projectMeta-Bqs1hCSs.js +0 -3
- package/dist/assets/radio-Bvd_NJMe.js +0 -1
- package/dist/assets/renderElectronMiniChatApp-DM3gwCyN.js +0 -2
- package/dist/assets/renderMobileApp-Cxrys3-9.js +0 -23
- package/dist/assets/runtimeEndpointReset-AnjZIaRp.js +0 -145
package/dist/assets/{useMobileNavigationStore-nmb4CWpS.js → useMobileNavigationStore-BADiWXJ3.js}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-
|
|
2
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,D as r,E as i,F as a,Q as o,T as s,W as c,Z as l,b as u,j as d,k as f,t as p,w as m,y as h,z as g}from"./useUIStore-5agS8bsW.js";import{$ as _,$t as v,A as y,An as b,At as x,Ct as S,Dt as C,Et as w,F as T,H as E,I as D,L as O,M as k,Mt as A,N as j,Nt as ee,P as te,Pt as M,Q as ne,R as re,St as ie,Tt as ae,X as oe,Xt as se,Yt as ce,_t as le,bt as ue,d as N,dt as de,et as fe,gt as pe,ht as P,i as me,jt as he,kn as F,nt as ge,o as I,ot as _e,q as ve,r as ye,rt as be,tt as xe,u as L,vt as Se,w as Ce,wt as we,xn as Te,xt as Ee,yt as R,zt as De}from"./persistence-ZSrLIR97.js";import{a as Oe,i as ke,o as Ae,r as je}from"./vendor-zustand-B4dlGEM2.js";import{nt as Me,rt as Ne}from"./vendor-base-ui-CnHfUmDN.js";import{Ct as Pe,Ft as Fe,
|
|
3
|
-
`)),f())},m=()=>{let e=o,n=s;if(o=``,s=0,e.length===0){p();return}if(e.startsWith(`:`)){t.onActivity?.();return}let r=e.indexOf(`:`),i=r===-1?e:e.slice(0,r),a=r===-1?``:e.slice(r+1);if(a.startsWith(` `)&&(a=a.slice(1)),i===`data`){let t=n-(r===-1?n:r+1+ +(e.charAt(r+1)===` `)),i=u+t+ +(l.length>0);if(i>
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/store-CNhcDSiX.js","assets/rolldown-runtime-C0FnF6B9.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-sonner-DVzioF3d.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{A as n,D as r,E as i,F as a,Q as o,T as s,W as c,Z as l,b as u,j as d,k as f,t as p,w as m,y as h,z as g}from"./useUIStore-5agS8bsW.js";import{$ as _,$t as v,A as y,An as b,At as x,Ct as S,Dt as C,Et as w,F as T,H as E,I as D,L as O,M as k,Mt as A,N as j,Nt as ee,P as te,Pt as M,Q as ne,R as re,St as ie,Tt as ae,X as oe,Xt as se,Yt as ce,_t as le,bt as ue,d as N,dt as de,et as fe,gt as pe,ht as P,i as me,jt as he,kn as F,nt as ge,o as I,ot as _e,q as ve,r as ye,rt as be,tt as xe,u as L,vt as Se,w as Ce,wt as we,xn as Te,xt as Ee,yt as R,zt as De}from"./persistence-ZSrLIR97.js";import{a as Oe,i as ke,o as Ae,r as je}from"./vendor-zustand-B4dlGEM2.js";import{nt as Me,rt as Ne}from"./vendor-base-ui-CnHfUmDN.js";import{Ct as Pe,Ft as Fe,Ht as Ie,Jt as Le,Kt as Re,Lt as ze,Nt as z,Ot as Be,Pt as B,R as Ve,St as He,Vt as Ue,Yt as We,n as Ge,r as Ke,t as qe}from"./platform-BiSk9jV3.js";import{i as Je,n as Ye,r as Xe,t as Ze}from"./vendor-pathe-vBmvQE8f.js";import{a as Qe,n as $e,o as et}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as tt}from"./vendor-react-DLPElpoQ.js";import{r as nt}from"./vendor-tanstack-query-core-BWz0ose6.js";import{a as rt,l as it,n as at,o as ot,s as st,t as ct}from"./vendor-tanstack-react-query-D7pys_c9.js";import{r as lt}from"./vendor-sonner-DVzioF3d.js";import{n as ut}from"./vendor-reactuses-core-DDoDDyM9.js";import{t as dt}from"./clipboard-DD27ttLy.js";import{i as ft,t as pt}from"./store-CNhcDSiX.js";import{i as mt}from"./useAssistantUIStore-Bq3cPj2x.js";import{t as ht}from"./vendor-fuse.js-DB5wDJbI.js";var gt=1048576,_t=new TextEncoder,vt=e=>e instanceof Error&&e.name===`AbortError`,yt=e=>vt(e)?e:new DOMException(`The operation was aborted.`,`AbortError`),bt=async e=>{try{await e?.cancel()}catch{}},xt=async e=>{try{await e.cancel()}catch{}},St=async(e,t={})=>{let n=t.fetch??F,r;try{r=await n(e,{method:`GET`,headers:{Accept:`text/event-stream`},signal:t.signal})}catch(e){throw t.signal?.aborted||vt(e)?yt(e):Error(`SSE request failed`)}if(!r.ok)throw await bt(r.body),Error(`SSE response failed`);if(!/^text\/event-stream(?:\s*;|\s*$)/i.test(r.headers.get(`content-type`)??``))throw await bt(r.body),Error(`SSE response has invalid content type`);if(!r.body)throw Error(`SSE response has no body`);let i=r.body.getReader();try{t.onOpen?.()}catch(e){throw await xt(i),i.releaseLock(),t.signal?.aborted||vt(e)?yt(e):Error(`SSE response read failed`)}let a=new TextDecoder,o=``,s=0,c=!1,l=[],u=0,d=!1,f=()=>{l=[],u=0},p=()=>{l.length!==0&&(t.onActivity?.(),t.onMessage?.(l.join(`
|
|
3
|
+
`)),f())},m=()=>{let e=o,n=s;if(o=``,s=0,e.length===0){p();return}if(e.startsWith(`:`)){t.onActivity?.();return}let r=e.indexOf(`:`),i=r===-1?e:e.slice(0,r),a=r===-1?``:e.slice(r+1);if(a.startsWith(` `)&&(a=a.slice(1)),i===`data`){let t=n-(r===-1?n:r+1+ +(e.charAt(r+1)===` `)),i=u+t+ +(l.length>0);if(i>gt)throw Error(`SSE response exceeds buffer limit`);u=i,l.push(a)}},h=e=>{if(e.length===0)return;o+=e,s+=_t.encode(e).byteLength;let t=o===`data`?4:o.startsWith(`data:`)?5+ +(o.charAt(5)===` `):0;if(u+s-t>gt)throw Error(`SSE response exceeds buffer limit`)},g=e=>{let t=0;c&&(c=!1,e.charAt(0)===`
|
|
4
4
|
`&&(t=1));for(let n=t;n<e.length;n+=1){let r=e.charAt(n);(r===`\r`||r===`
|
|
5
5
|
`)&&(h(e.slice(t,n)),m(),r===`\r`&&n+1<e.length&&e.charAt(n+1)===`
|
|
6
|
-
`?n+=1:r===`\r`&&n+1===e.length&&(c=!0),t=n+1)}h(e.slice(t))};try{for(;;){let{done:e,value:t}=await i.read();if(e)break;g(a.decode(t,{stream:!0}))}g(a.decode()),d=!0}catch(e){throw t.signal?.aborted||_t(e)?vt(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await bt(i),i.releaseLock()}},St=null,Ct=null,wt=null,Tt=0,Et=null,Dt=new Set,Ot=new Map,kt=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,At=()=>{Ot.clear()},jt=e=>Ot.get(e),Mt=(e,t)=>{let n=Ot.get(e);(n===void 0||t>n)&&Ot.set(e,t)},Nt=3e4,Pt=45e3,Ft=()=>{wt&&=(clearTimeout(wt),null)},It=()=>{if(Ct||Dt.size===0)return;let e=Math.min(1e3*2**Math.min(Tt,5),Nt);Ct=setTimeout(()=>{Ct=null,Tt+=1,Ht()},e)},Lt=()=>{Ft();let e=St;St=null,e?.controller.abort()},Rt=e=>{if(Ft(),Dt.size===0||St!==e)return;let t=setTimeout(()=>{St===e&&wt===t&&(wt=null,Lt(),It())},Pt)},zt=e=>{if(!e||e.trim().length===0)return null;try{let t=JSON.parse(e),n=typeof t?.type==`string`?t.type:``,r=t?.properties;return n?{type:n,properties:r}:null}catch{return null}},Bt=e=>{if(e.type===`openchamber:event-stream-ready`)return e.properties===void 0||e.properties===null||typeof e.properties==`object`&&!Array.isArray(e.properties)?{type:`event-stream-ready`}:null;if(e.type===`openchamber:heartbeat`)return null;let t=e.properties&&typeof e.properties==`object`&&!Array.isArray(e.properties)?e.properties:null;if(e.type===`openchamber:worktree-topology-changed`){let e=typeof t?.projectDirectory==`string`?t.projectDirectory.trim():``,n=typeof t?.directory==`string`?t.directory.trim():``,r=t?.operation,i=t?.occurredAt;return!e||!n||r!==`added`&&r!==`removed`||typeof i!=`number`||!Number.isFinite(i)?null:{type:`worktree-topology-changed`,projectDirectory:e,directory:n,operation:r,occurredAt:i}}if(e.type===`openchamber:worktree-bootstrap-status`){let e=typeof t?.directory==`string`?t.directory.trim():``,n=t?.status,r=t?.updatedAt,i=typeof t?.error==`string`&&t.error.trim().length>0?t.error.trim():null;return!e||n!==`pending`&&n!==`ready`&&n!==`failed`||typeof r!=`number`||!Number.isFinite(r)?null:{type:`worktree-bootstrap-status`,directory:e,status:n,error:i,updatedAt:r}}if(e.type===`openchamber:session-index-changed`){let e=t?.revision,n=t?.occurredAt;if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n))return null;let r=t?.sync&&typeof t.sync==`object`&&!Array.isArray(t.sync)?t.sync:null;return{type:`session-index-changed`,revision:e,occurredAt:n,...r?{sync:{active:r.active===!0,enriching:r.enriching===!0}}:{}}}if(e.type===`openchamber:message-queue-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`message-queue-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:assistants-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`assistants-changed`,revision:e,occurredAt:n}}if(e.type!==`openchamber:scheduled-task-ran`)return null;let n=typeof t?.projectId==`string`?t.projectId:``,r=typeof t?.taskId==`string`?t.taskId:``,i=typeof t?.ranAt==`number`?t.ranAt:Date.now(),a=t?.status;return!n||!r?null:{type:`scheduled-task-ran`,projectId:n,taskId:r,ranAt:i,status:a===`running`||a===`error`?a:`success`,...typeof t?.sessionId==`string`&&t.sessionId.length>0?{sessionId:t.sessionId}:{}}},Vt=e=>{let t=Bt(e);if(t){t.type===`event-stream-ready`&&(Tt=0),kt(t.type)&&`revision`in t&&Mt(t.type,t.revision);for(let e of Dt)try{e(t)}catch{}}},Ht=()=>{if(typeof window>`u`||Dt.size===0||St)return;let e={controller:new AbortController};St=e,xt(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{St===e&&Rt(e)},onActivity:()=>{St===e&&Rt(e)},onMessage:t=>{if(St!==e)return;let n=zt(t);n&&Vt(n)}}).then(()=>{St===e&&(St=null,Ft(),It())},()=>{St===e&&(St=null,Ft(),e.controller.signal.aborted||It())})},Ut=()=>{Et||typeof window>`u`||(Et=d(()=>{At(),Ct&&=(clearTimeout(Ct),null),Lt(),Tt=0,Ht()}))},Wt=()=>{Et?.(),Et=null},Gt=e=>(Dt.add(e),Ut(),Ht(),()=>{Dt.delete(e),Dt.size===0&&(At(),Ct&&=(clearTimeout(Ct),null),Tt=0,Lt(),Wt())}),Kt=!1,qt=Promise.resolve(),Jt=null,Yt=()=>{Kt||(Kt=!0,qt=new Promise(e=>{Jt=e}))},Xt=async()=>qt,Zt=()=>{if(!Kt)return;Kt=!1;let e=Jt;Jt=null,e?.()},Qt=`openchamber_input_draft_metadata_v1`,$t=`openchamber_input_draft_metadata_migration_v1`,en=`openchamber_chat_input_draft_`,tn=`openchamber_chat_confirmed_mentions_`,nn=()=>({ok:!1,error:{code:`unavailable`}}),rn=()=>({ok:!1,error:{code:`cancelled`}}),an=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),on=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),sn=(e,t)=>Object.keys(e).every(e=>t.includes(e)),cn=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,ln=e=>typeof e==`string`&&e.length>0,un=e=>({read:async t=>{if(!e)return nn();try{return{ok:!0,value:e.getItem(t)}}catch(e){return an(e)}},write:async(t,n)=>{if(!e)return nn();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return an(e)}},remove:async t=>{if(!e)return nn();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return an(e)}},keys:async()=>{if(!e)return nn();try{let t=[];for(let n=0;n<e.length;n+=1){let r=e.key(n);r!==null&&t.push(r)}return{ok:!0,value:t}}catch(e){return an(e)}}}),dn=()=>{try{return un(typeof window>`u`?null:window.localStorage)}catch{return un(null)}},fn=(e,t,n,r)=>{let i=[];try{let e=n===null?[]:JSON.parse(n);Array.isArray(e)&&(i=e.filter(e=>typeof e==`string`))}catch{}return{suffix:e,text:t??``,mentions:i,keys:r}},pn=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(en)&&n.add(e.slice(29)),e.startsWith(tn)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${en}${i}`,a=`${tn}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(fn(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},mn=e=>{if(!(!on(e)||!sn(e,[`suffix`,`text`,`mentions`,`keys`])||typeof e.suffix!=`string`||typeof e.text!=`string`||!Array.isArray(e.mentions)||!e.mentions.every(e=>typeof e==`string`)||!Array.isArray(e.keys)||!e.keys.every(e=>typeof e==`string`)))return{suffix:e.suffix,text:e.text,mentions:[...e.mentions],keys:[...e.keys]}},hn=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&ln(t[0])&&(t[1]===`session`||t[1]===`draft`)&&ln(t[2])&&e===JSON.stringify(t)}catch{return!1}},gn=e=>{if(!on(e)||!sn(e,[`complete`,`claimedTransportIdentity`,`captured`,`markerCommitted`,`cleanupComplete`])||typeof e.complete!=`boolean`||typeof e.claimedTransportIdentity!=`string`||e.captured!==void 0&&typeof e.captured!=`boolean`||e.markerCommitted!==void 0&&typeof e.markerCommitted!=`boolean`||e.cleanupComplete!==void 0&&typeof e.cleanupComplete!=`boolean`)return;let t=e.cleanupComplete??e.complete,n=e.captured??e.complete,r=e.markerCommitted??e.complete;if(!((n||r||t)&&!ln(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},_n=e=>{if(!on(e)||!sn(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!on(e.drafts)||!on(e.tombstones)||!on(e.legacy)||!sn(e.legacy,[`new`,`entries`])||!on(e.legacy.entries))return;let t=gn(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=w(r);if(!e||t!==R(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!hn(t)||!cn(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=mn(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:mn(e.legacy.new);if(!(e.legacy.new!==void 0&&(!a||a.suffix!==`new`)))return{version:1,drafts:n,tombstones:r,migration:t,legacy:{...a?{new:a}:{},entries:i}}},vn=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),yn=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},bn=async e=>{let t=await e.read(Qt);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=_n(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},xn=async(e,t)=>{let n=_n(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=yn(n);return r.ok?e.write(Qt,r.value):r},Sn=e=>on(e)&&sn(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&ln(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,Cn=e=>yn({version:1,claimedTransportIdentity:e}),wn=(e,t,n)=>{let r={},i;for(let e of t)e.suffix===`new`?i=e:r[e.suffix]=e;return{...e,migration:{complete:!1,claimedTransportIdentity:n,captured:!0,markerCommitted:!1,cleanupComplete:!1},legacy:{...i?{new:i}:{},entries:r}}},Tn=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],En=new WeakMap,Dn=e=>{let t=En.get(e);if(t)return t;let n=Promise.resolve(),r,i=!0,a=e=>{let t=n.then(e,e);return n=t.then(()=>void 0,()=>void 0),t},o={persist:t=>{let n=_n(t);return n?i?a(async()=>i?xn(e,n):nn()):Promise.resolve(nn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await bn(e);if(!r.ok)return r;let a=r.value??vn(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await pn(e);if(!n.ok)return n;if(!o)return{ok:!0,value:wn(a,n.value,``)};if(a=wn(a,n.value,t),!i)return{ok:!0,value:a};let r=await xn(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await pn(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read($t);if(!s.ok)return s;if(s.value!==null)try{let t=Sn(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=Cn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write($t,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=Cn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write($t,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of Tn(a)){if(!i)return{ok:!0,value:a};let n=await e.remove(t);if(!n.ok)return n}if(a={...a,migration:{complete:!0,claimedTransportIdentity:a.migration.claimedTransportIdentity,captured:!0,markerCommitted:!0,cleanupComplete:!0}},!i)return{ok:!0,value:a};let c=await xn(e,a);return c.ok?{ok:!0,value:a}:c}).finally(()=>{r=void 0});return r=o,o},flush:()=>n,setEnabled:async e=>{i=e,i||await n}};return En.set(e,o),o},On=e=>{let t=Dn(e),n=!0,r=!1,i=[],a=[],o=()=>{if(r||i.length>0)return;let e=a;a=[],e.forEach(e=>e())},s=()=>{if(r)return;let e=i.shift();if(!e){o();return}r=!0,t.persist(e.snapshot).then(e.resolve).finally(()=>{r=!1,s()})};return{persist:e=>{let t=_n(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(nn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(rn())),o()},flush:()=>r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve(),setEnabled:async e=>{if(n=e,!n){let e=i;i=[],e.forEach(({resolve:e})=>e(rn()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},kn=`openchamber-input-drafts`,An=1,jn=`blobs`,Mn=`blobRefs`,Nn=class extends Error{code;constructor(e){super(e),this.code=e}},Pn=e=>({ok:!1,error:{code:e instanceof Nn?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),Fn=e=>{if(!(e instanceof Blob)&&!ie(e))throw new Nn(`invalid-value`)},In=e=>{if(!e)throw new Nn(`invalid-value`)},Ln=(e,t)=>({id:Se(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),Rn=async e=>{if(typeof e==`string`)return`url:${e}`;let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()),n=[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`blob:${e.type}:${e.size}:${n}`},zn=async(e,t)=>(e.fingerprint??await Rn(e.value))===t,Bn=async(e,t=!1)=>{let n=await e.getAllBlobRefs(),r=await e.getAllBlobs(),i=new Map;for(let t of n)await e.getBlob(t.blobID)?i.set(t.blobID,(i.get(t.blobID)??0)+1):await e.deleteBlobRef(t.id);for(let n of r){let r=i.get(n.id)??0;r||!t?await e.putBlob({...n,refCount:r}):await e.deleteBlob(n.id)}},Vn=e=>{try{let t=JSON.parse(e);return!Array.isArray(t)||t.length!==4||typeof t[0]!=`string`||typeof t[2]!=`string`||t[1]!==`session`&&t[1]!==`draft`&&t[1]!==`surface`&&t[1]!==`queue`&&t[1]!==`send`?void 0:{transportIdentity:t[0],ownerKind:t[1],ownerID:t[2]}}catch{return}},Hn=(e,t)=>{let n=Vn(e.id),r=e.ownerKind??n?.ownerKind,i=e.transportIdentity??n?.transportIdentity;return r!==void 0&&t.ownerKinds.includes(r)&&(t.transportIdentities===void 0||i!==void 0&&t.transportIdentities.includes(i))},Un=(e=Wn())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await Bn(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return Pn(e)}};return{put:async(t,n)=>{try{In(t),Fn(n);let r=await Rn(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await zn(i,r))throw new Nn(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return Pn(e)}},putAndRetain:async(t,n,r)=>{try{In(n),Fn(r);let i=await Rn(r);return await e.transaction(async e=>{let a=Se(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new Nn(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await zn(s,i))throw new Nn(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Ln(t,n)),await Bn(e)}),{ok:!0,value:void 0}}catch(e){return Pn(e)}},read:async t=>{try{let n=await e.transaction(e=>e.getBlob(t));return n?{ok:!0,value:n.value}:{ok:!1,error:{code:`missing-blob`}}}catch(e){return Pn(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Se(t))))?.blobID}}catch(e){return Pn(e)}},retain:async(t,n)=>{try{return In(n),await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));if(r&&r.blobID!==n)throw new Nn(`blob-id-conflict`);if(!await e.getBlob(n))throw new Nn(`missing-blob`);r||await e.putBlobRef(Ln(t,n)),await Bn(e)}),{ok:!0,value:void 0}}catch(e){return Pn(e)}},release:e=>t(e),releaseIfMatches:(e,n)=>t(e,n),reconcileReferences:async(t,n={ownerKinds:[`session`,`draft`]})=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=[],i=[],a=[],o=new Map((await e.getAllBlobRefs()).map(e=>[e.id,e]));for(let[i,a]of o)Hn(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=Vn(r);if(!t||!n.ownerKinds.includes(t.ownerKind)||n.transportIdentities!==void 0&&!n.transportIdentities.includes(t.transportIdentity)){a.push(r);continue}let c=o.get(r);if(!await e.getBlob(s)){a.push(r);continue}(!c||c.blobID!==s)&&(await e.putBlobRef({id:r,blobID:s,...t}),i.push(r))}return await Bn(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return Pn(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Se({transportIdentity:t.transportIdentity,owner:t.owner,attachmentOccurrenceRefID:e}),i);try{return{ok:!0,value:await e.transaction(async e=>{let n=0,i=new Set;for(let a of await e.getAllBlobRefs())a.transportIdentity===t.transportIdentity&&a.ownerKind===t.owner.kind&&a.ownerID===t.owner.ownerID&&r.get(a.id)!==a.blobID&&(await e.deleteBlobRef(a.id),i.add(a.blobID),n++);await Bn(e);let a=await e.getAllBlobRefs();for(let t of i)a.some(e=>e.blobID===t)||await e.deleteBlob(t);return n})}}catch(e){return Pn(e)}},discardUnreferenced:async t=>{try{return{ok:!0,value:await e.transaction(async e=>!await e.getBlob(t)||(await e.getAllBlobRefs()).some(e=>e.blobID===t)?!1:(await e.deleteBlob(t),!0))}}catch(e){return Pn(e)}}}},Wn=()=>({transaction:async e=>{let t=await Gn(),n=t.transaction([jn,Mn],`readwrite`),r=n.objectStore(jn),i=n.objectStore(Mn),a=e=>new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error??n.error??Error(`IndexedDB request failed`))}),o=new Promise((e,t)=>{n.oncomplete=()=>e(),n.onabort=()=>t(n.error??new DOMException(`aborted`,`AbortError`)),n.onerror=()=>{console.error(`Input draft IndexedDB transaction error`,n.error)}}),s;try{let t=await e({getBlob:e=>a(r.get(e)),getAllBlobs:()=>a(r.getAll()),putBlob:async e=>{await a(r.put(e))},deleteBlob:async e=>{await a(r.delete(e))},getBlobRef:e=>a(i.get(e)),getAllBlobRefs:()=>a(i.getAll()),putBlobRef:async e=>{await a(i.put(e))},deleteBlobRef:async e=>{await a(i.delete(e))}});return await o,t}catch(e){s=e;try{n.abort()}catch{}try{await o}catch(e){s===void 0&&(s=e)}throw s}finally{t.close()}}}),Gn=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new Nn(`database-unavailable`));return}let n=indexedDB.open(kn,An),r=!1,i=()=>{r||(r=!0,t(new Nn(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(jn)||e.createObjectStore(jn,{keyPath:`id`}),e.objectStoreNames.contains(Mn)||e.createObjectStore(Mn,{keyPath:`id`})},n.onsuccess=()=>{let t=n.result;if(t.onversionchange=()=>t.close(),r){t.close();return}r=!0,e(t)},n.onerror=i,n.onblocked=i}),Kn=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),qn=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Jn=e=>{let t=qn(e),n=Yn(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},Yn=e=>{let t=_n(e);if(!t)throw Error(`invalid draft snapshot`);return t},Xn=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Zn=e=>typeof e==`string`?e:R(e),Qn=[`session`,`draft`,`surface`],$n=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),er=e=>JSON.parse(JSON.stringify(e)),tr=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:$n(e.reference)}:{}},nr=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(tr),cleanupErrors:e.cleanupErrors.map(tr)}),rr=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,ir=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&Qn.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},ar=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)].flatMap(t=>t.locator.kind===`blob`?[{reference:{transportIdentity:e.key.transportIdentity,owner:{kind:e.key.owner.kind,ownerID:e.key.owner.ownerID},attachmentOccurrenceRefID:t.attachmentRefID},attachment:er(t)}]:[]),or=e=>{let t=new Map;for(let n of Object.values(e))for(let e of ar(n))t.set(Se(e.reference),e);return t},sr=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:$n(t)}:{}}),cr=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),lr=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,ur=(e,t,n={})=>{let r=Kn(),i=n.enabled??!0,a=0,o=!1,s=Promise.resolve(),c=new Map,l=e=>{let t=s.then(e,e);return s=t.then(()=>void 0,()=>void 0),t.then(e=>e&&typeof e==`object`&&`status`in e&&`keys`in e&&`errors`in e&&`cleanupErrors`in e?nr(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...or(t)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``]));for(let[t,r]of c){if(i.get(t)===r.expectedBlobID){c.delete(t);continue}let a=await e.releaseIfMatches($n(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(sr(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=$n(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Se(o),{reference:$n(o),expectedBlobID:n,generation:a,reason:i}),r.push(sr(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=$n(t.reference),a=er(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:sr(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:sr({code:`reference-conflict`},i)};if(o.value===r){let t=await e.read(r);if(t.ok)return{acquired:!1};if(t.error.code!==`missing-blob`)return{acquired:!1,error:sr(t.error,i)};let o=await n?.($n(i),er(a));if(o===void 0)return{acquired:!1,error:sr({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:sr(s.error,i)}}let s=await e.read(r);if(s.ok){let t=await e.retain(i,r);return t.ok?{acquired:!0}:{acquired:!1,error:sr(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:sr(s.error,i)};let c=await n?.($n(i),er(a));if(c===void 0)return{acquired:!1,error:sr({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:sr(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return cr(`disabled`);if(o)return{...cr(`failed`),errors:[sr({code:`invalid-record`})]};let n;try{if(!t)n=Kn();else{let e=Yn(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...cr(`failed`),errors:[sr({code:`invalid-record`})]}}let a=or(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,lr(t)])),{ownerKinds:Qn});return s.ok?(r=n,o=!0,{...cr(`committed`),errors:s.value.missing.map(e=>sr({code:`missing-blob`},a.get(e)?.reference))}):{...cr(`failed`),errors:[sr(s.error)]}}),commit:e=>{let n=[...Xn(e.drafts).map(([e])=>e),...(e.delete??[]).map(Zn)];return i?l(async()=>{if(!o)return cr(`unseeded`,n);if(!i)return cr(`disabled`,n);let s=a,c=[],l=Jn(r),p=Xn(e.drafts),m=Xn(e.tombstones),h=(e.delete??[]).map(Zn);if(p.some(([e,t])=>!ir(e)||!rr(t.revision))||m.some(([e,t])=>!ir(e)||!rr(t))||h.some(e=>!ir(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...cr(`failed`,n),errors:[sr({code:`invalid-record`})]};try{for(let[e,t]of p){let n=w(t);if(!n||e!==R(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=Yn(qn(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...cr(`failed`,n),errors:[sr({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return cr(`stale`,n);let g=or(r.drafts),_=or(l.drafts);c=await u(l.drafts);let v=[];for(let[t,r]of _){let i=g.get(t);if((i?.attachment.locator.kind===`blob`?i.attachment.locator.blobID:void 0)===(r.attachment.locator.kind===`blob`?r.attachment.locator.blobID:void 0))continue;let a=await f(r,e.resolveBlobValue);if(a.error){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`acquire-failed`);return{...cr(`failed`,n),errors:[a.error],cleanupErrors:c}}a.acquired&&v.push(r.reference)}if(!await e.isCurrent()){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`stale`);return{...cr(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`disabled`);return{...cr(`disabled`,n),cleanupErrors:c}}let y=await t.persist(qn(l));if(!y.ok){for(let e of v.reverse())await d(e,lr(_.get(Se(e))),c,`metadata-failed`);return{...cr(`failed`,n),errors:[{phase:`metadata`,error:y.error}],cleanupErrors:c}}r=l;for(let[e,t]of g)_.has(e)||await d(t.reference,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,c,`metadata-committed`);return{...cr(`committed`,n),cleanupErrors:c}}):Promise.resolve(nr(cr(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return cr(`unseeded`);if(!i)return cr(`disabled`);let t=await u(),n=new Map([...or(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:Qn}),s=a.ok?a.value.missing.map(e=>sr({code:`missing-blob`},or(r.drafts).get(e)?.reference)):[sr(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...cr(`committed`),cleanupErrors:await u()})),flush:()=>s,setEnabled:async e=>{if(!e){i=!1,a+=1,t.cancelPending?.(),await t.setEnabled?.(!1),await s,await t.flush?.();return}await t.setEnabled?.(!0),i=!0,a+=1}}},dr=`openchamber-composer-reference-draft`,fr=`openchamber-pasted-text-draft`,pr=e=>Array.from(e).length,mr=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),hr=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,gr=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,P.referenceCount);a+=1){let o=t[a];if(!(!mr(o)||!hr(o.id,P.idLength)||!hr(o.token,P.displayLength)||typeof o.text!=`string`||o.text.length>P.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==pr(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<P.referenceCount;t=e.indexOf(o.token,t+o.token.length)){let e=t+o.token.length;if(r.some(n=>n.start<e&&n.end>t)||i+o.text.length>P.totalPastePayloadLength)continue;let a=n.filter(e=>e.id.startsWith(`${o.id}:`)).length;n.push({id:`${o.id}:${a}`,kind:`paste`,start:t,end:e,display:o.token,text:o.text,characterCount:o.characterCount,index:o.index}),r.push({start:t,end:e}),i+=o.text.length}}return n.sort((e,t)=>e.start-t.start)},_r=e=>{try{let t=JSON.parse(e);if(!mr(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===dr)return(t.version===2?we(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===fr){let e=t.version===1&&Array.isArray(t.references)?gr(t.text,t.references):[];return we(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},vr=`file://`,yr=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:/.test(t)&&(t=`/${t}`),t.split(`/`).map((e,t)=>t===1&&/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`)},br=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(vr)?t:`${vr}${yr(t)}`},xr=(e,t)=>`${e}\u0000${t}`,Sr=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Failed to read file`)),r.onabort=()=>n(Error(`File read aborted`)),r.readAsDataURL(e)}),Cr=e=>{if(!e.startsWith(`data:`))return 0;let t=e.indexOf(`,`);if(t<0)return 0;let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1);if(!n.endsWith(`;base64`))return 0;let i=0;return r.endsWith(`==`)?i=2:r.endsWith(`=`)&&(i=1),Math.max(0,Math.floor(r.length*3/4)-i)},wr=(e,t)=>e===t?!0:!e||!t?!1:e.filePath===t.filePath&&e.fileName===t.fileName&&e.relativePath===t.relativePath&&e.fileSize===t.fileSize&&e.selection?.startLine===t.selection?.startLine&&e.selection?.endLine===t.selection?.endLine&&e.selection?.text===t.selection?.text,Tr=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),Er=(e,t)=>t.flatMap(t=>{let n=`@${t}`,r=[],i=e.indexOf(n);for(;i>=0;)r.push({kind:`file`,value:t,path:t,label:t,range:{start:i,end:i+n.length}}),i=e.indexOf(n,i+n.length);return r}),Dr=((e={})=>{let t=e.sink??dn(),n=e.repository??Dn(t),i=e.coordinator??On(t),a=e.blobStore??Un(),o=e.durability??ur(a,i,{enabled:e.persistenceEnabled??!0}),c=new Map,l=new Map,u=new Map,d=new Map,f=new Map,p=new Set,m=new Set,h,g,_=0,v=0,y=!1,b=!1,x,S=new Set,C=new Map,T=new Set;return Oe()((t,i)=>{let E=e=>c.set(e,(c.get(e)??0)+1),D=(...e)=>{for(let t of e)u.set(t,(u.get(t)??0)+1),d.delete(t)},O=e=>w(e),k=()=>e.runtimeCapture?.()??{transportIdentity:r(),generation:s()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},j=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],ee=e=>new Set(j(e).map(e=>e.attachmentRefID)),te=(e,t,n)=>{let r=ee(n);return{draftAttachmentViews:{...e.draftAttachmentViews,[t]:Object.fromEntries(Object.entries(e.draftAttachmentViews[t]??{}).filter(([e])=>r.has(e)))},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[t]:(e.draftMissingAttachmentRefIDs[t]??[]).filter(e=>r.has(e))}}},M=()=>e.createID?.()??fe(),ne=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await Sr(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},re=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},ae=(e,n)=>{let r=i(),a=_,s=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!r.persistenceEnabled)return l.forEach(e=>S.add(e)),Promise.resolve({status:`disabled`,keys:l,errors:[],cleanupErrors:[]});let u=new Map(l.map(e=>[e,c.get(e)??0])),d=new Map(l.map(e=>[e,r.drafts[e]?.revision??r.tombstones[e]??0])),f=l.filter(e=>r.drafts[e]),v=Object.fromEntries(f.map(e=>[e,r.draftPersistence[e]?.status===`error`?r.draftPersistence[e]:{status:`saving`,revision:d.get(e)}])),y=Object.fromEntries(f.map(e=>[e,r.draftAttachmentPersistence[e]?.status===`error`?r.draftAttachmentPersistence[e]:{status:`saving`,revision:d.get(e)}]));t(e=>({draftPersistence:{...e.draftPersistence,...v},draftAttachmentPersistence:{...e.draftAttachmentPersistence,...y}})),b||l.forEach(e=>S.add(e));let x=(async()=>{let e=i(),n=await o.commit({drafts:Object.fromEntries(l.flatMap(t=>e.drafts[t]?[[t,e.drafts[t]]]:[])),tombstones:Object.fromEntries(l.flatMap(t=>e.tombstones[t]?[[t,e.tombstones[t]]]:[])),delete:l.filter(t=>!e.drafts[t]),migration:e.migration,legacy:{...e.legacyNewDraft?{new:e.legacyNewDraft}:{},entries:e.legacyDraftEntries},resolveBlobValue:t=>{for(let[n,r]of Object.entries(e.drafts))if(r.key.transportIdentity===t.transportIdentity&&r.key.owner.kind===t.owner.kind&&r.key.owner.ownerID===t.owner.ownerID)return e.draftAttachmentViews[n]?.[t.attachmentOccurrenceRefID]?.file},isCurrent:()=>_===a&&i().persistenceEnabled&&A(s)&&l.every(e=>(c.get(e)??0)===u.get(e)&&(i().drafts[e]?.revision??i().tombstones[e]??0)===d.get(e))}),r=_===a&&i().persistenceEnabled&&A(s);return(!r||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>S.add(e)),r&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:re(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:re(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},oe=e=>{let n=i(),r=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(r).length&&t(e=>({draftPersistence:{...e.draftPersistence,...r}}))},se=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?ae(e,t).then(()=>void 0):Promise.resolve()},ce=e=>{if(!i().persistenceEnabled){S.add(e);return}m.add(e),oe([e]),!h&&(g=k(),h=setTimeout(()=>{se()},40))},le=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),ae(t)},N=(e,n,r,a=`immediate`)=>{let o=R(e),s=i().drafts[o];if(!s||r!==void 0&&s.revision!==r)return;let c=O(n(s));if(!(!c||R(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?ce(o):le([o]),c},de=e=>e?pe(e):void 0,P=(e=[])=>JSON.parse(JSON.stringify(e)),me=(e,t,n,r=!1,i=!1)=>({status:e,...de(n)?{record:de(n)}:{},errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:r,durable:i}),he=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:i,durable:a,source:de(n),destination:de(r)}),F=e=>e.status,ge=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,I=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},_e=async(e,t)=>{let n={},r=i().draftAttachmentViews[R(e.key)]??{};for(let i of j(e)){let e;if(i.locator.kind===`url`){let n=t?.get(i.attachmentRefID);e=n===void 0?i.locator.url:n}else e=t?.get(i.attachmentRefID)??r[i.attachmentRefID]?.file??(typeof r[i.attachmentRefID]?.dataUrl==`string`&&ie(r[i.attachmentRefID].dataUrl)?r[i.attachmentRefID].dataUrl:void 0);if(i.locator.kind===`url`&&e!==void 0&&(e!==i.locator.url||!ie(e))||i.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&ie(e)))return;e!==void 0&&(n[i.attachmentRefID]=await ne(i,e))}return n},ve=e=>e?R(e):`legacy-unowned`,ye=e=>C.get(e)??0,be=e=>{C.set(e,ye(e)+1)},xe=(e,n,r=!1)=>{r&&be(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...ve(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(e.expectedRevision===`absent`?s:s?.revision!==e.expectedRevision)return me(`conflict`,void 0,s);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return me(`failed`,void 0);let f=await _e(d,e.values);if(!f)return me(`failed`,void 0);let p=c.get(n)??0,m=s?.revision??l,h=await o.commit({drafts:{[n]:d},isCurrent:()=>A(r)&&(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return me(F(h),h,s);let g=(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,_=A(r);if(!g)return _||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,h,d,!1,!0);let v=pe(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:I(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:I(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:I(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:re(h)}:{status:`saved`,revision:v.revision}}:I(e.draftAttachmentPersistence,n)})),me(_?`committed`:`stale`,h,v,_,!0)):me(`failed`,h)},deleteDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(!s||s.revision!==e.expectedRevision)return me(`conflict`,void 0);let u=e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=c.get(n)??0,f=s.revision,p=Math.max(l,u),m=await o.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(r)&&(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l});if(m.status!==`committed`)return me(F(m),m);let h=(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l,g=A(r);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)}}),me(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=R(e.source),r=R(e.destination),a=e.runtime,s=i(),l=s.drafts[n],u=s.drafts[r];if(n===r||e.destination.owner.kind!==`session`||e.source.transportIdentity!==a.transportIdentity||e.destination.transportIdentity!==a.transportIdentity||!A(a))return he(`stale`,void 0,l,u);if(!ge(e.expectedSourceRevision))return he(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return he(`conflict`,void 0,l,u);let d=c.get(n)??0,f=c.get(r)??0,p=s.tombstones[n]??0,m=s.tombstones[r]??0;if(!Number.isSafeInteger(p)||p<0||!Number.isSafeInteger(m)||m<0)return he(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!ge(h))return he(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...Tr(e.destination),revision:h});if(!g)return he(`failed`,void 0,l,u);let _=await o.commit({drafts:{[r]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(a)&&(c.get(n)??0)===d&&(c.get(r)??0)===f&&i().drafts[n]?.revision===l.revision&&!i().drafts[r]&&(i().tombstones[n]??0)===p&&(i().tombstones[r]??0)===m,resolveBlobValue:e=>s.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return he(F(_),_,l,u);let v=(c.get(n)??0)===d&&i().drafts[n]?.revision===l.revision&&(i().tombstones[n]??0)===p,y=(c.get(r)??0)===f&&!i().drafts[r]&&(i().tombstones[r]??0)===m,b=A(a),x=pe(g);if(!x)return he(`failed`,_,l,u);if(b&&!v&&!y)return he(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(r),D(r)),t(t=>{let i=t.drafts,a=t.tombstones;(v||y)&&(i={...i}),(v||y)&&(a={...a}),v&&(delete i[n],a[n]=Math.max(a[n]??0,h)),y&&(i[r]=x,delete a[r]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=I(o,n),s=I(s,n),c=I(c,n),l=I(l,n),u=I(u,n)),y&&(o=I(o,r),s={...I(s,r),[r]:{status:`saved`,revision:x.revision}},c=I(c,r),l=I(l,r),u={...I(u,r),[r]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:re(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[r]:t.draftAttachmentViews[n]??{}},l={...l,[r]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=I(o,n,r),s=I(s,n,r),c=I(c,n,r),l=I(l,n,r),u=I(u,n,r)),{drafts:i,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return he(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await se();p.size;)await Promise.all([...p]);await o.flush()},ensureDraft:e=>{let n=R(e),r=i().drafts[n];if(r)return r;let a=O({...Tr(e),revision:(i().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),le([n]),a},getDraft:e=>i().drafts[R(e)],setDraftText:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return i().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>N(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>N(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=i().getDraft(e);if(!n)return null;let r=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return N(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?r:null},setDraftAttachments:(e,t)=>N(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,r={})=>{let a=i().getDraft(e);if(r.partID&&!a?.syntheticParts.some(e=>e.partID===r.partID))return;let o=R(e),s=c.get(o)??0,l=i().tombstones[o]??0,u=k(),d=n instanceof File?n:new File([n],r.filename??`attachment`,{type:n.type}),f;try{f=await Sr(d)}catch{let e=i().drafts[o];if(A(u)&&(i().tombstones[o]??0)===l&&(e?R(e.key)===o:(c.get(o)??0)===s)&&(!r.partID||e?.syntheticParts.some(e=>e.partID===r.partID))){let n=e?.revision??i().tombstones[o]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[o]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(i().tombstones[o]??0)!==l)return;let p=i().drafts[o];if(!p&&(c.get(o)??0)!==s)return;let m=p??i().ensureDraft(e);if(R(m.key)!==o||r.partID&&!m.syntheticParts.some(e=>e.partID===r.partID))return;let h=r.attachmentID??M(),g=r.partID?Ee(r.partID,h):ue(h),_=M(),v={attachmentID:h,attachmentRefID:g,filename:r.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:r.source??`local`,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}},y=r.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===r.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(o);let x={id:h,file:d,dataUrl:f,mimeType:v.mimeType,filename:v.filename,size:v.size,source:v.source,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[o]:b},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...e.draftAttachmentViews[o],[g]:x}}})),await ae([o]),v},addDraftDurableAttachment:(e,n)=>{let r=i().getDraft(e)??i().ensureDraft(e);if(n.partID&&!r.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??M(),o=n.partID?Ee(n.partID,a):ue(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...r,revision:r.revision+1,syntheticParts:r.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...r,revision:r.revision+1,attachments:[...r.attachments,s]},l=O(c);if(!l)return;let u=R(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),ae([u]),s},getDraftAttachmentViews:e=>{let t=R(e),n=i().drafts[t],r=i().draftAttachmentViews[t]??{};return n?j(n).flatMap(e=>r[e.attachmentRefID]?[r[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=R(e);if(!i().persistenceEnabled||!i().drafts[n]&&!i().tombstones[n])return;let r=await o.retryCleanup();r.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:re(r)}}})),await ae([n])},hydrateDraftAttachments:async e=>{let n=R(e),r=d.get(n);if(r)return r;let o=i().drafts[n];if(!o)return;let s=(u.get(n)??0)+1;u.set(n,s);let c=k(),l=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(u.get(n)!==s)return;let e=i(),r=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(r??{}).length?`ready`:`idle`}}))},r={},d=[];for(let f of j(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await a.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)d.push(f.attachmentRefID);else{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{r[f.attachmentRefID]=await ne(f,p.value)}catch{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=i(),p=f.drafts[n],m=u.get(n);if(m===s&&_===l&&A(c)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:r},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:d},draftHydration:{...e.draftHydration,[n]:d.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();d.set(n,f);try{await f}finally{d.get(n)===f&&d.delete(n)}},removeDraftAttachment:async(e,n)=>{let r=R(e),a=i().drafts[r],o=a&&j(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=Ie(o)?Ue(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(r),t(e=>{let t={...e.draftAttachmentViews[r]};return delete t[n],{drafts:{...e.drafts,[r]:c},draftAttachmentViews:{...e.draftAttachmentViews,[r]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[r]:(e.draftMissingAttachmentRefIDs[r]??[]).filter(e=>e!==n)}}}),(await ae([r])).status===`committed`):!1},replaceDraftAttachment:async(e,n,r,a)=>{let o=R(e),s=i().drafts[o],c=s&&j(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=i().tombstones[o]??0,d=r instanceof File?r:new File([r],a?.filename??`attachment`,{type:r.type}),f;try{f=await Sr(d)}catch{let e=i().drafts[o],r=e&&j(e).find(e=>e.attachmentRefID===n);A(l)&&(i().tombstones[o]??0)===u&&e&&r?.attachmentID===c.attachmentID&&r.attachmentRefID===c.attachmentRefID&&R(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=i().drafts[o],m=p&&j(p).find(e=>e.attachmentRefID===n);if(!A(l)||(i().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||R(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=M(),_={attachmentID:g,attachmentRefID:h?Ee(h.partID,g):ue(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:M()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await ae([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=[],c=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),c.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:r})},restoreDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=new Set(t.map(e=>e.id)),c=[],l=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),l.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=i().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&ie(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:r})},deleteDraft:(e,n)=>{let r=R(e),a=i().drafts[r];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return ge(o)?(E(r),D(r),t(e=>{let t={...e.drafts};delete t[r];let n={...e.draftHydration},i={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[r],delete i[r],delete a[r],delete s[r],delete c[r],{drafts:t,tombstones:{...e.tombstones,[r]:Math.max(e.tombstones[r]??0,o)},draftHydration:n,draftPersistence:i,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),ae([r]),!0):!1},moveDraft:(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),ae([a,o]),c},moveDraftWithAttachments:async(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await ae([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await o.setEnabled(!1),await o.flush();return}t({persistenceEnabled:!0}),await o.setEnabled(!0);let n=k();b||await i().hydrateDraftMetadata(n.transportIdentity);let r=new Set([...Object.keys(i().drafts),...Object.keys(i().tombstones),...S]);S.clear(),await ae(r),await o.flush()},hydrateDraftMetadata:e=>{let r=f.get(e);if(r)return r;let a=(async()=>{let r=(l.get(e)??0)+1;l.set(e,r);let a=k();if(a.transportIdentity!==e)return!1;let s=_,u=new Map(c),d=v,f=Object.entries(i().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=i().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){x??=o.seed(h).finally(()=>{x=void 0});let n;try{n=await x}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=i(),C={...g.drafts},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(c.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(C[e]?.revision??0)<=t&&delete C[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(c.get(t)??0)!==(u.get(t)??0))continue;let r=C[t],i=O(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(C[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=R(r),a=_r(n.text),o=O({...Tr(r),text:a.text,composerReferences:a.references,mentions:Er(a.text,n.mentions)});o&&!C[i]&&!w[i]&&(c.get(i)??0)===(u.get(i)??0)&&(C[i]=o),delete E[t],T.add(i)}t(e=>({drafts:C,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...S];for(let e of D)T.add(e);S.clear();try{await ae(T),await o.flush()}catch{return!1}return l.get(e)===r&&_===s&&A(a)})();return f.set(e,a),a.finally(()=>{f.get(e)===a&&f.delete(e)}).catch(()=>void 0),a},claimLegacyNewDraft:async e=>{let n=i().legacyNewDraft;if(!n)return i().getDraft(e);let r=R(e),a=i().drafts[r];if(v+=1,y=!0,a||i().tombstones[r])return t({legacyNewDraft:void 0}),ae([r]),a;let o=_r(n.text),s=O({...Tr(e),text:o.text,composerReferences:o.references,mentions:Er(o.text,n.mentions)});if(s)return E(r),t(e=>({drafts:{...e.drafts,[r]:s},legacyNewDraft:void 0})),ae([r]),s},pendingInputText:null,pendingInputMode:`replace`,pendingSyntheticParts:null,pendingPresetSubmit:null,attachedFiles:[],attachmentBuckets:{"legacy-unowned":[]},activeAttachmentDraft:null,activeEditorFile:null,setPendingInputText:(e,n=`replace`)=>t({pendingInputText:e,pendingInputMode:n}),consumePendingInputText:()=>{let{pendingInputText:e,pendingInputMode:n}=i();return e===null?null:(t({pendingInputText:null,pendingInputMode:`replace`}),{text:e,mode:n})},requestPresetSubmit:e=>t({pendingPresetSubmit:e}),consumePendingPresetSubmit:()=>{let{pendingPresetSubmit:e}=i();return e===null?null:(t({pendingPresetSubmit:null}),e)},setPendingSyntheticParts:e=>t({pendingSyntheticParts:e}),consumePendingSyntheticParts:()=>{let{pendingSyntheticParts:e}=i();return e!==null&&t({pendingSyntheticParts:null}),e},setActiveAttachmentDraft:e=>{let n=ve(e);t(t=>({activeAttachmentDraft:e,attachedFiles:t.attachmentBuckets[n]??[],attachmentBuckets:t.attachmentBuckets[n]?t.attachmentBuckets:{...t.attachmentBuckets,[n]:[]}}))},addAttachedFile:async e=>{let t=i().activeAttachmentDraft;if(t){let n=ve(t),r=ye(n),a=await i().addDraftLocalAttachment(t,e);r!==ye(n)&&a&&i().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,r=ve(null),a=ye(r),o;try{o=await Sr(e)}catch{return}if(a!==ye(r))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};xe(r,e=>[...e,s])},removeAttachedFile:e=>{let t=i().activeAttachmentDraft;if(t){let n=i().getDraft(t),r=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;r&&i().removeDraftAttachment(t,r.attachmentRefID);return}xe(ve(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{xe(ve(i().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=i().activeAttachmentDraft;if(e){be(ve(e)),i().getDraft(e)||i().ensureDraft(e),i().setDraftAttachments(e,[]);return}xe(ve(null),()=>[],!0)},addDraftVSCodeFileAttachment:(e,t,n,r)=>{if(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)??!1))return;let a=br(t);i().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:r||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let r=R(e),a=ye(r),o=`${r}\u0000${xr(t,n.name)}`;if(!(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)??!1)||T.has(o))){T.add(o);try{let o=await i().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ye(r)&&o&&i().removeDraftAttachment(e,o.attachmentRefID)}finally{T.delete(o)}}},addVSCodeFileAttachment:(e,t,n)=>{let r=i().activeAttachmentDraft;if(r){i().addDraftVSCodeFileAttachment(r,e,t,n);return}let a=`${Date.now()}-${Math.random().toString(36).slice(2)}`,o=ve(null);if((i().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=br(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};xe(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=i().activeAttachmentDraft;if(n){await i().addDraftVSCodeSelectionAttachment(n,e,t);return}let r=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=ve(null),o=ye(a),s=`${a}\u0000${xr(e,t.name)}`;if((i().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||T.has(s))return;T.add(s);let c;try{c=await Sr(t)}catch{return}finally{T.delete(s)}if(o!==ye(a))return;let l={id:r,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};xe(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let r=new File([n],t,{type:`text/plain`});await i().addVSCodeSelectionAttachment(e,r)},setActiveEditorFile:e=>{wr(i().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let r=i().activeAttachmentDraft;if(r){if(e.startsWith(`data:`)){let a=R(r);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=i().activeAttachmentDraft;if(!c||R(c)!==a)return;await i().addDraftLocalAttachment(r,s)}catch{}})();return}if(!ie(e))return;i().addDraftDurableAttachment(r,{filename:n,mimeType:t,size:Cr(e),source:`local`,serverPath:e,url:e});return}let a={id:`restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,file:new File([],n,{type:t}),dataUrl:e,mimeType:t,filename:n,size:Cr(e),source:`local`,serverPath:e};xe(ve(null),e=>[...e,a])}}})})(),Or=new Set;function kr(e){return Or.add(e),()=>{Or.delete(e)}}function Ar(e,t){let n=Array.isArray(e)?e:[e],r=Array.from(new Set(n));if(r.length===0)return;r.includes(`all`)&&r.splice(0,r.length,`all`);let i={scopes:r,source:t?.source,timestamp:Date.now()};for(let e of Or)try{let t=e(i);t instanceof Promise&&t.catch(e=>{console.error(`[ConfigSync] Async listener failed:`,e)})}catch(e){console.error(`[ConfigSync] Listener threw:`,e)}}function jr(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var Mr=`Updating OpenCode configuration...`,Nr=0,Pr=Mr,Fr=new Set;function Ir(){let e={isUpdating:Nr>0,message:Pr};Fr.forEach(t=>t(e))}function Lr(e){Nr+=1,Nr===1?(Pr=e||Mr,Ir()):e&&(Pr=e,Ir())}function Rr(){Nr!==0&&(--Nr,Nr===0&&(Pr=Mr,Ir()))}function zr(e){Pr===e&&Nr>0||(Pr=e,Nr>0&&Ir())}function Br(e){return Fr.add(e),e({isUpdating:Nr>0,message:Pr}),()=>{Fr.delete(e)}}function Vr(){return{isUpdating:Nr>0,message:Pr}}var Hr=u(),Ur=`projects`,Wr=`activeProjectId`,Gr=`projects:manualOrder`,Kr=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},qr=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Jr=e=>{if(typeof e!=`string`)return;let t=e.trim();if(!t)return;let n=t.indexOf(`/`);if(!(n<=0||n>=t.length-1))return t},Yr=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&qr.test(t)?t.toLowerCase():null},Xr=e=>{let t=e.trim();if(!t)return``;let n=Kr(t,A(`homeDirectory`,{storage:Hr})||Pe.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},Zr=e=>{let t=Xr(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},Qr=e=>{if(!e||typeof e!=`object`)return;let t=e,n=typeof t.mime==`string`?t.mime.trim():``,r=typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?Math.max(0,Math.round(t.updatedAt)):0,i=t.source===`custom`||t.source===`auto`?t.source:null;if(!(!n||!r||!i))return{mime:n,updatedAt:r,source:i}},$r=e=>{let t=typeof e.type==`string`?e.type.trim().toLowerCase():``;if(t===`image/png`||t===`image/jpeg`||t===`image/svg+xml`)return t;let n=e.name.toLowerCase();return n.endsWith(`.png`)?`image/png`:n.endsWith(`.jpg`)||n.endsWith(`.jpeg`)?`image/jpeg`:n.endsWith(`.svg`)?`image/svg+xml`:null},ei=async e=>await new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>{n(Error(`Failed to read icon file`))},r.onload=()=>{let e=typeof r.result==`string`?r.result:``;if(!e){n(Error(`Failed to read icon file`));return}t(e)},r.readAsDataURL(e)}),ti=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set,r=new Set;for(let i of e){if(!i||typeof i!=`object`)continue;let e=i,a=typeof e.path==`string`?e.path.trim():``;if(!a)continue;let o=Xr(a);if(!o)continue;let s=xe(o);if(!s||n.has(s)||r.has(o))continue;n.add(s),r.add(o);let c={id:s,path:o};if(typeof e.label==`string`&&e.label.trim().length>0&&(c.label=e.label.trim()),typeof e.icon==`string`&&e.icon.trim().length>0&&(c.icon=e.icon.trim()),e.iconImage===null)c.iconImage=null;else{let t=Qr(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Jr(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Yr(e.iconBackground);t&&(c.iconBackground=t)}typeof e.addedAt==`number`&&Number.isFinite(e.addedAt)&&e.addedAt>=0&&(c.addedAt=e.addedAt),typeof e.lastOpenedAt==`number`&&Number.isFinite(e.lastOpenedAt)&&e.lastOpenedAt>=0&&(c.lastOpenedAt=e.lastOpenedAt),typeof e.sidebarCollapsed==`boolean`&&(c.sidebarCollapsed=e.sidebarCollapsed),t.push(c)}return t},ni=()=>{try{let e=A(Ur,{storage:Hr});return e?ti(JSON.parse(e)):[]}catch{return[]}},ri=()=>{if(!he())return null;let e=m().trim().replace(/\/+$/,``);return e?Hr.getItem(`${Ur}:${encodeURIComponent(e)}:manualOrder`):null},ii=()=>{try{let e=A(Gr,{storage:Hr})||ri();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},ai=()=>{try{let e=A(Wr,{storage:Hr});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},oi=(e,t)=>{try{M(Ur,JSON.stringify(e),{storage:Hr})}catch{}try{t?M(Wr,t,{storage:Hr}):ee(Wr,{storage:Hr})}catch{}},si=(e,t,n)=>{oi(e,t),n&&ci(n),ye({projects:e,activeProjectId:t??void 0})},ci=e=>{try{M(Gr,JSON.stringify(e),{storage:Hr})}catch{}},li=ni(),ui=(e,t,n)=>{let r=e.findIndex(e=>e.id===t),i=e.findIndex(e=>e.id===n);if(r<0||i<0||r===i)return e;let a=[...e],[o]=a.splice(r,1);return a.splice(i,0,o),a},di=e=>{let t=[],n=new Set;for(let r of e){let e=Xr(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},fi=(e,t,n,r)=>{let i=Xr(e.path);if(!i)return null;let a=xe(i),o=r===i;return{...t,id:a,path:i,label:Zr(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},pi=()=>{if(typeof window>`u`||!Te()?.runtime?.isVSCode)return null;let e=window.__VSCODE_CONFIG__,t=Array.isArray(e?.workspaceFolders)?e.workspaceFolders.map(e=>{let t=e,n=typeof t.path==`string`?t.path.trim():``;return n?{name:typeof t.name==`string`?t.name.trim():``,path:n}:null}).filter(e=>e!==null):[];if(t.length>0)return di(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:di([{path:n}])},mi=(e,t,n)=>{let r=di(e),i=n?Xr(n):null,a=r.length===0&&i?[{path:i}]:i&&!r.some(e=>e.path===i)?[...r,{path:i}]:r;if(a.length===0)return null;let o=Date.now(),s=a.map(e=>fi(e,t.find(t=>t.path===e.path)??null,o,i)).filter(e=>e!==null);if(s.length===0)return null;let c=i?s.find(e=>e.path===i)??null:s[0]??null,l=c?.id??s[0]?.id??null;return ze(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},hi=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,gi=(e,t)=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return r?e.id===r.id&&e.path===r.path&&e.label===r.label&&e.icon===r.icon&&e.color===r.color&&e.iconBackground===r.iconBackground&&e.defaultModel===r.defaultModel&&e.addedAt===r.addedAt&&e.lastOpenedAt===r.lastOpenedAt&&e.sidebarCollapsed===r.sidebarCollapsed&&hi(e.iconImage,r.iconImage):!1}),_i=(()=>{let e=pi();if(!e)return null;let t=mi(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),vi=typeof window>`u`?!1:!!Te()?.runtime?.isVSCode,yi=_i?.projects??(vi?[]:li),bi=_i?.activeProjectId??(vi?null:ai()),xi=yi.some(e=>e.id===bi)?bi:yi[0]?.id??null;_i&&oi(yi,xi);var Si=Oe()(je((e,t)=>({projects:yi,activeProjectId:xi,manualProjectOrder:ii(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=Xr(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(vi)return null;let{validateProjectPath:i}=t(),a=i(n);if(!a.ok||!a.normalizedPath)return null;let o=a.normalizedPath,s=t().projects.find(e=>e.path===o);if(s)return t().setActiveProject(s.id),s;let c=Date.now(),l=r?.label?.trim()||Zr(o),u={id:xe(o),path:o,label:l,addedAt:c,lastOpenedAt:c};return e({projects:[...t().projects,u]}),ze(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(vi)return;let r=t(),i=r.projects.find(e=>e.id===n),a=r.projects.filter(e=>e.id!==n),o=r.activeProjectId;r.activeProjectId===n&&(o=a[0]?.id??null);let s=t().manualProjectOrder.filter(e=>e!==n);if(e({projects:a,activeProjectId:o,manualProjectOrder:s}),si(a,o,s),i){let e=i.path.replace(/\\/g,`/`).replace(/\/+$/,``)||`/`;$.setState(t=>{let n=new Map(t.availableWorktreesByProject);return n.delete(e),{availableWorktreesByProject:n}})}if(o){let e=a.find(e=>e.id===o);e&&(z.setDirectory(e.path),Pe.getState().setDirectory(e.path,{showOverlay:!1}))}else Pe.getState().goHome()},setActiveProject:n=>{if(vi)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),si(r,n,t().manualProjectOrder),z.setDirectory(a.path),Pe.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(vi)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),si(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(vi)return;let i=r.trim();if(!i)return;let{projects:a,activeProjectId:o}=t(),s=a.map(e=>e.id===n?{...e,label:i}:e);e({projects:s}),si(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(vi)return;let{projects:i,activeProjectId:a}=t(),o=i.map(e=>{if(e.id!==n)return e;let t={...e};if(r.label!==void 0){let e=r.label.trim();e&&(t.label=e)}if(r.icon!==void 0&&(t.icon=r.icon),r.color!==void 0&&(t.color=r.color),r.iconBackground!==void 0&&(t.iconBackground=Yr(r.iconBackground)),r.defaultModel!==void 0){let e=Jr(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),si(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(vi)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=$r(n);if(!r)return{ok:!1,error:`Only PNG, JPEG, and SVG are supported`};if(!Number.isFinite(n.size)||n.size<=0)return{ok:!1,error:`Icon file is empty`};if(n.size>5242880)return{ok:!1,error:`Icon exceeds size limit (5 MB)`};try{let i=(await ei(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await F(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({dataUrl:i})});if(!a.ok)return{ok:!1,error:(await a.json().catch(()=>null))?.error||`Failed to upload project icon`};let o=await a.json().catch(()=>null);return o?.settings&&t().synchronizeFromSettings(o.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to upload project icon`}}},removeProjectIcon:async e=>{if(vi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await F(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!n.ok)return{ok:!1,error:(await n.json().catch(()=>null))?.error||`Failed to remove project icon`};let r=await n.json().catch(()=>null);return r?.settings&&t().synchronizeFromSettings(r.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to remove project icon`}}},discoverProjectIcon:async(e,n)=>{if(vi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await F(`/api/projects/${encodeURIComponent(e)}/icon/discover`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({force:n?.force===!0})}),i=await r.json().catch(()=>null);return r.ok?(i?.settings&&t().synchronizeFromSettings(i.settings),{ok:!0,skipped:i?.skipped===!0,reason:typeof i?.reason==`string`?i.reason:void 0}):{ok:!1,error:i?.error||`Failed to discover project icon`}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to discover project icon`}}},reorderProjects:(n,r)=>{if(vi)return;let{projects:i,activeProjectId:a}=t();if(n<0||n>=i.length||r<0||r>=i.length||n===r)return;let o=[...i],[s]=o.splice(n,1);o.splice(r,0,s);let c=o.map(e=>e.id);e({projects:o,manualProjectOrder:c}),si(o,a,c)},reorderProjectsById:(n,r)=>{if(vi)return;let{projects:i,activeProjectId:a}=t(),o=ui(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),si(o,a,s)},moveProjectToTop:n=>{if(vi)return;let{projects:r,activeProjectId:i,manualProjectOrder:a}=t(),o=r.findIndex(e=>e.id===n);if(o<0)return;let s=o>0,c=a.length>0&&a[0]!==n;if(!s&&!c)return;let l=r;if(s){l=[...r];let[e]=l.splice(o,1);l.unshift(e)}let u=c?[n,...a.filter(e=>e!==n)]:a;e({projects:l,manualProjectOrder:u}),si(l,i,u)},resetForRuntimeSwitch:()=>{if(vi)return;let t=ni(),n=ai(),r=t.some(e=>e.id===n)?n:t[0]?.id??null,i=new Set(t.map(e=>e.id));e({projects:t,activeProjectId:r,manualProjectOrder:ii().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(vi)return;let r=ti(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t();if(r.length===0&&a.projects.length>0){i!==a.activeProjectId&&(!i||a.projects.some(e=>e.id===i))&&(e({activeProjectId:i}),oi(a.projects,i),ci(t().manualProjectOrder));return}let o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i;if(!o&&!s)return;let c=new Set(r.map(e=>e.id)),l=o?r.map(e=>e.id):t().manualProjectOrder.filter(e=>c.has(e));if(e({projects:r,activeProjectId:i,manualProjectOrder:l}),oi(r,i),ci(l),i){let e=r.find(e=>e.id===i);e&&(z.setDirectory(e.path),Pe.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!vi)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=mi(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),oi([],null)),null;let c=!gi(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),oi(s.projects,s.activeProjectId)),s.activeProject&&(z.setDirectory(s.activeProject.path),Pe.getState().setDirectory(s.activeProject.path,{showOverlay:!1})),s.activeProject},getActiveProject:()=>{let{projects:e,activeProjectId:n}=t();return n?e.find(e=>e.id===n)??null:null}}),{name:`projects-store`}));typeof window<`u`&&window.addEventListener(`openchamber:settings-synced`,e=>{let t=e.detail;t&&typeof t==`object`&&Si.getState().synchronizeFromSettings(t)});var V=et(),Ci=e=>e?.trim()||null,wi=()=>{let e=Si.getState().getActiveProject?.();return Ci(e?.path)??Ci(z.getDirectory())},Ti=(e,t=r())=>N.commands.list(e,t),Ei=(e=wi(),t=r())=>{let n=Ci(e);return{queryKey:Ti(n,t),queryFn:async({signal:e})=>{let t=await F(`/api/config/commands/metadata`,{method:`POST`,headers:{"Content-Type":`application/json`,"Cache-Control":`no-cache`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({catalog:!0}),query:n?{directory:n}:void 0,signal:e});if(!t.ok)throw Error(`Failed to fetch command metadata`);let r=await t.json();return Array.isArray(r.commands)?r.commands:[]},retry:2}},Di=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=Si(Ai),i=Ei(Ci(n.directory)??Ci(r)??Ci(z.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],ot(a)},Oi=(e=wi(),t=r())=>L.getQueryData(Ti(Ci(e),t))??[],ki=async(e,t,n)=>{let i=Ci(t);if(r()!==n)return e.getQueryData(Ti(i,n))??[];let a=Ei(i,n);return e.fetchQuery({...a,staleTime:0})};function Ai(e){return e.getActiveProject?.()?.path??null}var ji=200,Mi=500,Ni=512,Pi=1024,Fi=64,Ii=100,Li=100,Ri=new Set([`__proto__`,`prototype`,`constructor`]),zi=new Set([`text`,`audio`,`image`,`video`,`pdf`]),Bi=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||n>=127&&n<=159)return!0}return!1},Vi=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Hi=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Ni&&e.trim()===e&&!Bi(e)&&!Ri.has(e)?e:void 0},Ui=e=>typeof e==`string`&&e.length>0&&e.length<=Pi&&e.trim()===e&&!Bi(e)?e:void 0,Wi=e=>typeof e==`string`&&e.length>0&&e.length<=Fi&&e.trim()===e&&!Bi(e)?e:void 0,Gi=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,Ki=e=>{let t=Vi(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!zi.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},qi=e=>{let t=Vi(e);if(!t)return;let n={};for(let e of[`temperature`,`reasoning`,`attachment`,`toolcall`])t[e]!==void 0&&typeof t[e]==`boolean`&&(n[e]=t[e]);let r=Ki(t.input),i=Ki(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Ji=e=>{let t=Vi(e),n=Hi(t?.id),r=Ui(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=qi(t.capabilities);o&&(i.capabilities=o);let s=Vi(t.cost);if(s){let e={},t=Gi(s.input);t!==void 0&&(e.input=t);let n=Gi(s.output);n!==void 0&&(e.output=n);let r=Vi(s.cache);if(r){let t={},n=Gi(r.read);n!==void 0&&(t.read=n);let i=Gi(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Vi(t.limit);if(c){let e={},t=Gi(c.context);t!==void 0&&(e.context=t);let n=Gi(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=Wi(t.release_date);l&&(i.release_date=l);let u=Vi(t.variants);if(u){let e={};for(let[t,[n,r]]of Object.entries(u).entries()){if(t>=Li){a=!0;break}!Hi(n)||!Vi(r)||(e[n]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Yi=e=>{let t=Vi(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Vi(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>ji;for(let[e,a]of t.providers.entries()){if(e>=ji)continue;let t=Vi(a),o=Hi(t?.id),s=Ui(t?.name),c=Vi(t?.models);if(!t||!o||!s||!c||r.has(o)){i=!0;continue}r.add(o);let l={},u=new Set;for(let[e,[t,n]]of Object.entries(c).entries()){if(e>=Mi||!Hi(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=Ji(n);if(i||=r.partial,!r.value||u.has(r.value.id)){i=!0;continue}u.add(r.value.id),l[t]=r.value}n.push({id:o,name:s,models:l})}let a=Vi(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Hi(t),a=Hi(n);if(e>=Ii||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},Xi=e=>(t=>e(t.state.data)?1/0:0),Zi=e=>{let t=e;return!!(t&&t.providers.length>0)},Qi=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},$i=(e,t=r())=>{let n=Qi(e);return{queryKey:N.configCatalog.providers(n,t),queryFn:async({signal:e})=>{let r=await F(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=Yi(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);let t=await z.getSdkClient().config.providers(n?{directory:n}:void 0,{signal:e});if(t.error!==void 0||t.data===void 0||t.data===null)throw Error(`Legacy provider catalog request failed`);i=Yi({schemaVersion:1,providers:t.data.providers,default:t.data.default,partial:!1})}let a=L.getQueryData(N.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:Xi(Zi),gcTime:1/0,retry:2,retryDelay:100}},ea=(e,t=r())=>{let n=Qi(e);return{queryKey:N.agents.raw(n,t),queryFn:({signal:e})=>z.listAgents(n,e),staleTime:Xi(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},ta=(e,t,n=r())=>{if(t.providerCatalogPartial===!0)return;let i=$i(e,n);if(L.getQueryData(i.queryKey)===void 0)try{let e=Yi({schemaVersion:1,providers:Array.isArray(t.providers)?t.providers.map(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=e;return{...t,models:Array.isArray(t.models)?Object.fromEntries(t.models.map((e,t)=>[String(t),e])):t.models}}):t.providers,default:t.defaultProviders,partial:!1});if(e.partial||e.providers.length===0)return;L.setQueryData(i.queryKey,e)}catch{}},na=(e,t=r())=>L.fetchQuery($i(e,t)),ra=(e,t=r())=>L.fetchQuery(ea(e,t)),ia=async(e,t=r())=>{let n=$i(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},aa=async(e,t=r())=>{let n=ea(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},oa=(e,t=r())=>L.invalidateQueries({queryKey:$i(e,t).queryKey,exact:!0}),sa=e=>e?.trim()||null,ca=(e,t=r())=>N.agents.list(e,t),la=(e,t=r())=>N.providers.list(e,t);function ua(e){if(!e)return;let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/agents/`);if(n===-1)return;let r=t.substring(n+8).split(`/`);return r.length>1?r[0]:void 0}var da=(e=wi(),t=r())=>{let n=sa(e);return{queryKey:ca(n,t),queryFn:async({signal:e})=>{let r=await L.fetchQuery(ea(n,t)),i=await F(`/api/config/agents/metadata`,{method:`POST`,headers:{"Cache-Control":`no-cache`,"Content-Type":`application/json`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({names:r.map(e=>e.name)}),signal:e});if(!i.ok)throw Error(`Failed to fetch agent metadata`);let a=await i.json();return r.map(e=>{let t=a.agents?.[e.name]??{},n=t.scope??(t.sources?.md?.exists?t.sources.md.scope:void 0)??(t.sources?.json?.exists?t.sources.json.scope:void 0)??t.sources?.md?.scope??t.sources?.json?.scope,r=ua(t.sources?.md?.path);return n===`project`||n===`user`?{...e,scope:n,group:r}:{...e,group:r}})},retry:2,staleTime:(e=>{let t=e.state.data;return t&&t.length>0?1/0:0}),gcTime:1/0}},fa=(e,t=r())=>{let n=sa(e);return{queryKey:la(n,t),queryFn:async()=>{let e=await z.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},pa=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Si(va),a;t[2]===i?a=t[3]:(a=da(sa(i)??sa(z.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],ot(o)},ma=(e,t)=>{let n=(0,V.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=da(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],ot(o)},ha=(e,t)=>{let n=(0,V.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=fa(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],ot(o)},ga=(e=wi(),t=r())=>L.getQueryData(ca(sa(e),t))??[],_a=async(e,t,n)=>{let i=sa(t);if(r()!==n)return e.getQueryData(ca(i,n))??[];let a=da(i,n);return await e.invalidateQueries({queryKey:a.queryKey,exact:!0}),e.fetchQuery(a)};function va(e){return e.getActiveProject?.()?.path??null}var ya=[{id:`anthropic`,label:`Anthropic`,description:`Anthropic's public skills repository`,source:`anthropics/skills`,defaultSubpath:`skills`,sourceType:`github`},{id:`clawdhub`,label:`ClawdHub`,description:`Community skill registry with vector search`,source:`clawdhub:registry`,sourceType:`clawdhub`}],ba=e=>e?.trim()||null,xa=()=>{let e=Si.getState().getActiveProject?.();return ba(e?.path)??ba(z.getDirectory())},Sa=(e,t=r())=>N.skillsCatalog.sources(e,t),Ca=(e,t,n=r())=>N.skillsCatalog.source(e,t,n),wa=new Map,Ta=(e=xa(),t=r(),n=!1)=>{let i=ba(e);return{queryKey:Sa(i,t),queryFn:({signal:e})=>Fa(i,n,e),staleTime:5e3,retry:2}},Ea=(e,t,n=r(),i=!1)=>{let a=ba(e);return nt({queryKey:Ca(a,t,n),queryFn:({signal:e,pageParam:n})=>Ia(a,t,n,i,e),initialPageParam:null,getNextPageParam:(e,t)=>La(e,t),staleTime:5e3,retry:2})},Da=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Si(Ba),a;t[2]===i?a=t[3]:(a=Ta(ba(i)??ba(z.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],ot(o)},Oa=(e,t)=>{let n=(0,V.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=Si(Va),o;n[2]!==a||n[3]!==e?(o=Ea(ba(a)??ba(z.getDirectory()),e),n[2]=a,n[3]=e,n[4]=o):o=n[4];let s=i.enabled&&!!e,c;return n[5]!==o||n[6]!==s?(c={...o,enabled:s},n[5]=o,n[6]=s,n[7]=c):c=n[7],st(c)},ka=e=>{let t=new Map;for(let n of e)for(let e of n.items)t.set(`${e.sourceId}:${e.skillDir}`,e);return Array.from(t.values())},Aa=(e=L,t=xa(),n=r())=>e.getQueryData(Sa(ba(t),n))??ya,ja=(e=L,t,n,i=r())=>e.getQueryData(Ca(ba(t),n,i)),Ma=async(e,t,n)=>{let i=ba(t);return r()===n?e.fetchQuery({...Ta(i,n,!0),staleTime:0}):Aa(e,i,n)},Na=async(e,t,n,i)=>{let a=ba(t);if(r()!==i)return ja(e,a,n,i);let o=Ca(a,n,i),s=JSON.stringify(o),c=(wa.get(s)??0)+1;wa.set(s,c),await e.cancelQueries({queryKey:o,exact:!0});let l=await Ia(a,n,null,!0,new AbortController().signal);if(r()!==i||wa.get(s)!==c)return ja(e,a,n,i);let u={pages:[l],pageParams:[null]};return e.setQueryData(o,u),u},Pa=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:Sa(ba(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,ba(t)],exact:!1})]);async function Fa(e,t,n){let r=await za(Ra(`/api/config/skills/catalog`,{directory:e,refresh:t}),n),i=await r.json().catch(()=>null);if(!r.ok||!i?.ok)throw Error(i?.error?.message??`Failed to load catalog (${r.status})`);return i.sources?.length?i.sources:ya}async function Ia(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await za(Ra(`/api/config/skills/catalog/source`,a),i),s=await o.json().catch(()=>null);if(o.ok&&(s?.ok||Array.isArray(s?.items)))return{items:s.items??[],nextCursor:s.nextCursor??null};let c=await za(Ra(`/api/config/skills/catalog`,a),i),l=await c.json().catch(()=>null),u=l?.itemsBySource?.[t];if(c.ok&&l?.ok&&Array.isArray(u))return{items:u,nextCursor:null};throw Error(s?.error?.message??l?.error?.message??`Failed to load catalog source (${o.status})`)}function La(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function Ra(e,t){let n=new URLSearchParams;t.directory&&n.set(`directory`,t.directory),t.sourceId&&n.set(`sourceId`,t.sourceId),t.cursor&&n.set(`cursor`,t.cursor),t.refresh&&n.set(`refresh`,`true`);let r=n.toString();return r?`${e}?${r}`:e}async function za(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await F(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function Ba(e){return e.getActiveProject?.()?.path??null}function Va(e){return e.getActiveProject?.()?.path??null}var Ha=e=>e?.trim()||null,Ua=()=>{let e=Si.getState().getActiveProject?.();return Ha(e?.path)??Ha(z.getDirectory())},Wa=e=>{let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/skills/`);if(n===-1)return;let r=t.slice(n+8).split(`/`);return r.length>=3?r[0]:void 0},Ga=(e,t=r())=>N.skills.list(e,t),Ka=(e=Ua(),t=r())=>{let n=Ha(e);return{queryKey:Ga(n,t),queryFn:async({signal:e})=>{let t=await F(`/api/config/skills`,{query:{summary:`true`,...n?{directory:n}:{}},signal:e});if(!t.ok)throw Error(`Failed to list skills: ${t.status}`);return((await t.json()).skills??[]).map(e=>({name:e.name,path:e.path,scope:e.scope??`user`,source:e.source??`opencode`,description:e.description??``,group:Wa(e.path)}))},retry:2}},qa=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=Si(Xa),i=Ka(Ha(n.directory)??Ha(r)??Ha(z.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],ot(a)},Ja=(e=L,t=Ua(),n=r())=>e.getQueryData(Ga(Ha(t),n))??[],Ya=async(e,t,n=r())=>{let i=Ha(t);return r()===n?e.fetchQuery({...Ka(i,n),staleTime:0}):Ja(e,i,n)};function Xa(e){return e.getActiveProject?.()?.path??null}var Za=()=>{let e=z.getDirectory();if(typeof e==`string`&&e.trim().length>0)return e;try{let e=window.__zustand_directory_store__;if(e)return e.getState().currentDirectory}catch{}return null},Qa=wi,$a=e=>{let t=e;return t.native===!0||t.builtIn===!0},eo=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},to=e=>e.filter(e=>!eo(e)),no=`useAgentsStore`,ro=e=>new Promise(t=>setTimeout(t,e)),io=2e4,ao=300,oo=4,so=800,co=200,lo=2e3,uo=e=>e!=null,fo=Oe()(je(ke(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=Qa(),t=r();try{return await _a(L,e,t),!0}catch{return!1}},createAgent:async t=>mo(`POST`,t.name,t,e),updateAgent:async(t,n)=>mo(`PATCH`,t,n,e),deleteAgent:async(t,n)=>mo(`DELETE`,t,{scope:n},e),getAgentByName:e=>ga().find(t=>t.name===e),getVisibleAgents:()=>to(ga())}),{name:`agents-store`,storage:h(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=fo);async function po(e,t){await _a(L,e,t),r()===t&&Ar(`agents`,{source:no})}async function mo(e,t,n,i){Lr(`${{POST:`Creating`,PATCH:`Updating`,DELETE:`Deleting`}[e]} agent configuration…`);let a=Qa(),o=r();try{let s={};if(e===`POST`&&(s.mode=n?.mode||`subagent`,n?.description&&(s.description=n.description),n?.model&&(s.model=n.model),n?.variant&&(s.variant=n.variant),uo(n?.temperature)&&(s.temperature=n.temperature),uo(n?.top_p)&&(s.top_p=n.top_p),n?.prompt&&(s.prompt=n.prompt),n?.permission&&(s.permission=n.permission),n?.disable!==void 0&&(s.disable=n.disable),n?.scope&&(s.scope=n.scope)),e===`PATCH`){for(let e of[`mode`,`description`,`model`,`prompt`,`permission`,`disable`])n?.[e]!==void 0&&(s[e]=n[e]);for(let e of[`variant`,`temperature`,`top_p`])e in(n??{})&&(s[e]=n?.[e]??null)}let c=a?`?directory=${encodeURIComponent(a)}`:``,l=await F(`/api/config/agents/${encodeURIComponent(t)}${c}`,{method:e,headers:{"Content-Type":`application/json`,...a?{"x-opencode-directory":a}:{}},body:JSON.stringify(e===`DELETE`?{scope:n?.scope}:s)}),u=await l.json().catch(()=>null);if(!l.ok)throw Error(u?.error||`Failed to ${e.toLowerCase()} agent`);return r()===o?(e===`DELETE`&&fo.getState().selectedAgentName===t&&i({selectedAgentName:null}),u?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(u?.requiresReload??!0?await vo({message:u?.message,delayMs:u?.reloadDelayMs,scopes:[`agents`],mode:`projects`,transportIdentity:o,queryDirectory:a}):await po(a,o),{ok:!0})):{ok:!0,...u?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}finally{Rr()}}async function ho(e){let t=typeof e==`number`&&e>0?Math.min(e,ao):0;t>0&&await ro(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<io;){r+=1,zr(`Waiting for OpenCode… (attempt ${r})`);try{if(await z.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await ro(r<=oo&&e<1200?ao:Math.min(so+Math.max(0,r-oo)*co,lo))}throw i||Error(`OpenCode did not become ready in time`)}var go=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function _o(e={}){let{message:t,delayMs:n}=e,i=e.transportIdentity??r(),a=e.queryDirectory??Qa(),o=go(e.scopes),s=e.mode??(o.includes(`all`)?`projects`:`active`);try{zr(t||`Refreshing configuration…`)}catch{}try{if(r()!==i||(await ho(n),r()!==i))return;let e=G.getState(),t=o.includes(`all`)||o.includes(`providers`),c=o.includes(`all`)||o.includes(`agents`),l=o.includes(`all`)||o.includes(`agents`),u=o.includes(`all`)||o.includes(`commands`),d=o.includes(`all`)||o.includes(`skills`),f=Za(),p=s===`projects`?Si.getState().projects:[],m=Array.from(new Set([...f?[f]:[],...p.map(e=>e.path).filter(Boolean)]));o.includes(`all`)&&s===`projects`&&G.setState({directoryScoped:{}}),t&&G.getState().invalidateProviderCache(s===`active`?f:void 0);let h=[];for(let n of m)t&&h.push(e.loadProviders({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0)),c&&h.push(e.loadAgents({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0));let g=[];l&&g.push(_a(L,a,i).then(()=>void 0)),u&&g.push(ki(L,a,i).then(()=>void 0)),d&&(g.push(Ya(L,a,i).then(()=>void 0)),g.push(Pa(L,a,i).then(()=>void 0))),zr(`Refreshing configuration…`),await Promise.all([...h,...g])}catch(e){throw zr(`OpenCode refresh failed. Please retry.`),await ro(1500),e}finally{Rr()}}async function vo(e){await _o(e)}async function yo(e){Lr(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??r(),n=e?.queryDirectory??Qa();try{let i=await F(`/api/config/reload`,{method:`POST`,headers:{"Content-Type":`application/json`}}),a=await i.json().catch(()=>null);if(!i.ok){let e=a?.error||`Failed to reload configuration`;throw Error(e)}if(r()!==t){Rr();return}let o={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};a?.requiresReload?await vo({...o,message:a.message,delayMs:a.reloadDelayMs}):await vo(o)}catch(e){throw console.error(`[reloadOpenCodeConfiguration] Failed:`,e),zr(`Failed to reload configuration. Please try again.`),await ro(2e3),Rr(),e}}var bo=null;bo||=kr(e=>{if(e.source!==no&&jr(e,`agents`)){let{loadAgents:e}=fo.getState();e()}});var xo=e=>typeof e==`string`?e.trim():``,So=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,Co={ai:`AI`,api:`API`,ernie:`ERNIE`,glm:`GLM`,gpt:`GPT`,it:`IT`,lfm:`LFM`,lm:`LM`,oss:`OSS`,pdf:`PDF`,rp:`RP`,slerp:`SLERP`,tars:`TARS`,ui:`UI`,vl:`VL`,vlm:`VLM`,aion:`Aion`,anthropic:`Anthropic`,chatgpt:`ChatGPT`,claude:`Claude`,codex:`Codex`,codestral:`Codestral`,command:`Command`,deepseek:`DeepSeek`,gemini:`Gemini`,gemma:`Gemma`,grok:`Grok`,hunyuan:`Hunyuan`,kimi:`Kimi`,llama:`Llama`,minimax:`MiniMax`,mistral:`Mistral`,mixtral:`Mixtral`,nemotron:`Nemotron`,openai:`OpenAI`,qwen:`Qwen`,rekaai:`RekaAI`},wo=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,To=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},Eo=e=>{let t=e.lastIndexOf(`:`);return t<=0||t>=e.length-1?{base:e,suffix:``}:{base:e.slice(0,t),suffix:e.slice(t+1)}},Do=e=>{let t=e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).split(/[-_\s]+/).map(e=>e.trim()).filter(Boolean),n=[];for(let e=0;e<t.length;e+=1){let r=t[e],i=t[e+1],a=t[e+2];if(/^(19|20)\d{2}$/.test(r)&&/^\d{2}$/.test(i??``)&&/^\d{2}$/.test(a??``)){n.push(`${r}-${i}-${a}`),e+=2;continue}if(/^\d$/.test(r)&&/^\d$/.test(i??``)){n.push(`${r}.${i}`),e+=1;continue}n.push(r)}return n},Oo=e=>{let t=e.toLowerCase(),n=Co[t];if(n)return n;let r=t.match(/^qwen(\d(?:\.\d+)?)$/);return r?`Qwen${r[1]}`:/^o\d/.test(t)?t:/^v\d/.test(t)?`V${e.slice(1).toUpperCase()}`:/^\d+[on]$/.test(t)?t:/^[a-z]\d+[a-z]?$/.test(t)?t.toUpperCase():/^\d+(?:x\d+)?[a-z]+$/.test(t)?t.replace(/[a-z]+$/i,e=>e.toUpperCase()):/^\d+(?:\.\d+)?[a-z]$/.test(t)?t.replace(/[a-z]$/i,e=>e.toUpperCase()):/^[a-z]+\d+(?:\.\d+)?[a-z]*$/.test(t)?wo(t).replace(/([a-z])(\d)/i,`$1$2`):wo(e)},ko=e=>{let t=[...e];return t[0]===`GPT`&&t[1]&&/^(?:\d|\d+[a-z]|OSS$)/i.test(t[1])&&t.splice(0,2,`GPT-${t[1]}`),t[0]===`GLM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`GLM-${t[1]}`),t[0]===`LFM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`LFM${t[1]}`),t[0]===`Qwen`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`Qwen${t[1]}`),t},Ao=e=>{let t=xo(e).toLowerCase();return t?t===`free`||t===`thinking`?t:jo(t):``},jo=e=>{let t=xo(e);if(!t)return``;let{base:n,suffix:r}=Eo(To(t)),i=ko(Do(n).map(Oo));if(i.length>=2){let e=i[i.length-1],t=i[i.length-2];e===`Reasoning`&&t===`Non`&&i.splice(i.length-2,2,`(Non-Reasoning)`)}let a=i[i.length-1];/^(19|20)\d{2}-\d{2}-\d{2}$/.test(a??``)&&(i[i.length-1]=`(${a})`);let o=i.join(` `).replace(/\s+\(/g,` (`).trim(),s=Ao(r);return s?`${o} (${s})`:o},Mo=e=>!/\s/.test(e)&&/[-_]/.test(e),No=(e,t,n={})=>{let r=xo(e?.name),i=xo(e?.id)||xo(t);return r&&!Mo(r)?So(r,n.maxLength):i?So(jo(i),n.maxLength):r?So(jo(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},Po=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>xo(e.id)===t):n[t]},Fo=(e,t,n={})=>{let r=xo(t);return No(Po(e,r),r,n)},Io=(e,t,n,r)=>{let i=n.find(e=>e.name===t),a=i?.model?.providerID,o=i?.model?.modelID,s=!!(a&&o&&r.some(e=>e.id===a&&e.models?.some(e=>e.id===o)));return{providerID:s?a:e.providerID,modelID:s?o:e.modelID,agent:t}},Lo=e=>e===`primary`||e===`all`||e==null,Ro=e=>e.filter(e=>Lo(e.mode)),zo=(e,t,n=1)=>{let r=Ro(e);if(r.length<=1)return null;let i=r.findIndex(e=>e.name===t);return r[((i>=0?i:0)+n+r.length)%r.length]?.name??null},Bo=e=>e.charAt(0).toUpperCase()+e.slice(1),Vo=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Bo(n?n.name:t)}let n=e.filter(e=>Lo(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Bo(r.name):`Select agent`},Ho=(e,t,n=``)=>Fo(e,t,{fallbackLabel:n}),Uo=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Bo(t)},Wo=e=>typeof e==`object`&&!!e,Go=e=>typeof e==`string`&&e.length>0,Ko=e=>{let t=new Map;if(!Array.isArray(e))return t;for(let n of e){if(!Array.isArray(n)||n.length<2)continue;let[e,r]=n;if(!Go(e)||!Array.isArray(r))continue;let i=new Map;for(let e of r){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Go(t)||!Array.isArray(n))continue;let r=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Go(t)||!Go(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},qo=Oe()(ke((e,t)=>({sessionModelSelections:new Map,sessionAgentSelections:new Map,sessionAgentModelSelections:new Map,sessionAgentModelVariantSelections:new Map,lastUsedProvider:null,saveSessionModelSelection:(t,n,r)=>e(e=>{let i=new Map(e.sessionModelSelections);return i.delete(t),i.set(t,{providerId:n,modelId:r}),{sessionModelSelections:i,lastUsedProvider:{providerID:n,modelID:r}}}),getSessionModelSelection:e=>t().sessionModelSelections.get(e)??null,saveSessionAgentSelection:(t,n)=>e(e=>{if(e.sessionAgentSelections.get(t)===n)return e;let r=new Map(e.sessionAgentSelections);return r.delete(t),r.set(t,n),{sessionAgentSelections:r}}),getSessionAgentSelection:e=>t().sessionAgentSelections.get(e)??null,saveAgentModelForSession:(t,n,r,i)=>e(e=>{let a=e.sessionAgentModelSelections.get(t)?.get(n);if(a?.providerId===r&&a?.modelId===i)return e;let o=new Map(e.sessionAgentModelSelections),s=new Map(o.get(t)??new Map);return o.delete(t),s.set(n,{providerId:r,modelId:i}),o.set(t,s),{sessionAgentModelSelections:o}}),getAgentModelForSession:(e,n)=>t().sessionAgentModelSelections.get(e)?.get(n)??null,saveAgentModelVariantForSession:(t,n,r,i,a)=>e(e=>{let o=`${r}/${i}`,s=new Map(e.sessionAgentModelVariantSelections),c=s.get(t),l=new Map(c??new Map),u=l.get(n),d=new Map(u??new Map);return a?d.get(o)===a?e:(s.delete(t),d.set(o,a),l.set(n,d),s.set(t,l),{sessionAgentModelVariantSelections:s}):d.has(o)?(d.delete(o),d.size===0?l.delete(n):l.set(n,d),s.delete(t),l.size>0&&s.set(t,l),{sessionAgentModelVariantSelections:s}):e}),getAgentModelVariantForSession:(e,n,r,i)=>{let a=`${r}/${i}`;return t().sessionAgentModelVariantSelections.get(e)?.get(n)?.get(a)}}),{name:`selection-store`,version:2,storage:h(),partialize:e=>({sessionModelSelections:Array.from(e.sessionModelSelections.entries()).slice(-150),sessionAgentSelections:Array.from(e.sessionAgentSelections.entries()).slice(-150),sessionAgentModelSelections:Array.from(e.sessionAgentModelSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries())]),sessionAgentModelVariantSelections:Array.from(e.sessionAgentModelVariantSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries()).map(([e,t])=>[e,Array.from(t.entries())])]),lastUsedProvider:e.lastUsedProvider}),merge:(e,t)=>{let n=Wo(e)?e:void 0,r=new Map;if(Array.isArray(n?.sessionAgentModelSelections))for(let e of n.sessionAgentModelSelections){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Go(t)||!Array.isArray(n))continue;let i=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Go(t)||typeof n!=`object`||!n||!Go(n.providerId)||!Go(n.modelId)||i.set(t,{providerId:n.providerId,modelId:n.modelId})}i.size>0&&r.set(t,i)}return{...t,lastUsedProvider:n?.lastUsedProvider??t.lastUsedProvider,sessionModelSelections:new Map(Array.isArray(n?.sessionModelSelections)?n.sessionModelSelections:[]),sessionAgentSelections:new Map(Array.isArray(n?.sessionAgentSelections)?n.sessionAgentSelections:[]),sessionAgentModelSelections:r,sessionAgentModelVariantSelections:Ko(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),Jo=_,Yo=(e,t)=>{let n=Jo(t);if(!n)return null;let r=null;for(let t of e){let e=Jo(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(Jo(r.path)?.length??0))&&(r=t))}return r},Xo=(e,t,n)=>{let r=Jo(n);if(!r)return null;let i=null,a=null,o=-1;for(let[e,n]of t.entries())for(let t of n){let n=Jo(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=Jo(e)))}if(!i)return null;let s=[Jo(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>Jo(e.path)===t)??null;if(n)return n;let r=Yo(e,t);if(r)return r}return null},Zo=(e,t,n)=>Xo(e,t,n)??Yo(e,n),Qo=e=>{if(!e)return null;let t=e.indexOf(`/`);return t<=0||t>=e.length-1?null:{providerId:e.slice(0,t),modelId:e.slice(t+1)}},$o=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],es=e=>typeof e==`string`&&$o.includes(e),ts=e=>{switch(e){case`concise`:return`Keep replies short. Answer first, no preamble or recap of the question. Write like you're texting a colleague who already has the context — plain sentences, not headings or bullets. Reach for a list only when the content is genuinely a list; never use one to look organised.`;case`detailed`:return`Take the space you need to actually explain things. Walk through what's going on, why it matters, and where the real tradeoffs are. Prefer flowing prose over bullet points and headings — structure the answer with paragraphs and let the reasoning carry it. Lists are fine when something really is enumerable, but don't fragment a normal explanation into bullets.`;case`mentor`:return`Talk like a patient senior engineer pairing with someone less experienced. Explain the underlying idea before the answer, think out loud about how you'd approach it, and drop in a small concrete example when it actually helps. Keep it conversational — no lecture format, no checklists, no numbered steps unless the task literally is a sequence.`;case`pushback`:return`Don't agree automatically. If something I say sounds off — a wrong assumption, a flawed approach, a request that won't actually do what I think it will — push back first. Explain what you disagree with and why, and only proceed once I've responded. Disagreement is welcome; sycophancy is not. Don't soften it with 'you might want to consider' — just say it.`;case`noFiller`:return`Cut the filler. No 'Great question', no 'Certainly', no 'I'll help you with that', no restating what I just asked. No closing summary of what you did when the diff or output already shows it. No trailing 'let me know if you need anything else'. Open with the actual content and stop when you're done.`;case`matchEnergy`:return`Mirror the size and register of my message. A one-line question gets a one-line answer. A casual aside gets a casual reply, not a structured breakdown. If I write three words, don't respond with three paragraphs. Match the tone too — informal stays informal, technical stays technical. Don't inflate small asks into full essays.`;case`warmPeer`:return`Talk like a colleague, not an assistant. First person is fine and encouraged — 'I'd do this', 'I don't love that approach', 'that was sloppy of me'. Have actual opinions and share them. Push back when you disagree. Admit when you screwed up without grovelling. Skip the corporate helpfulness and performative politeness — just be a person.`}},ns=new Map,rs=new Map,is=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:es(t)?ts(t):null:null,as=(e,t=r())=>{ns.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},os=(e=r())=>{let t=ns.get(e);if(t)return is(t)},ss=async()=>{let e=r(),t=os(e);if(t!==void 0)return t;let n=rs.get(e);if(n)return n;let i=(async()=>{let t=await me(e);return as({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),os(e)??null})();rs.set(e,i);try{return await i}finally{rs.get(e)===i&&rs.delete(e)}},cs;(function(e){function t(e,t,n){let r=0,i=e.length-1;for(;r<=i;){let a=Math.floor((r+i)/2),o=n(e[a]);if(o===t)return{found:!0,index:a};o<t?r=a+1:i=a-1}return{found:!1,index:r}}e.search=t})(cs||={});function ls(e,t){return e.findIndex(e=>e.id===t)}function us(e,t){if(!t)return e.slice();let n=ls(e,t);return n<0?e.slice():e.slice(0,n)}function ds(e,t,n){let r=ls(e,n);return r<0?!1:ls(e,t)>=r}function fs(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=ls(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function ps(e,t){let n=ls(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var ms=`openchamber:sync:debug`,hs;function gs(){if(hs!==void 0)return hs;try{hs=typeof localStorage<`u`&&localStorage.getItem(ms)===`1`}catch{hs=!1}return hs}function _s(e,...t){gs()&&(`${e}`,[...t])}var vs={pipeline:{coalesced:(e,t)=>_s(`pipeline`,`coalesced`,e,t),flush:e=>_s(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>_s(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>_s(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>_s(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>_s(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>_s(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>_s(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>_s(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>_s(`recovery`,`materializing session`,e)}},ys=new Set([`patch`,`step-start`,`step-finish`]),bs=[`text`,`output`],xs=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function Ss(e,t){if(!e||t.length===0)return(e??``)+t;if(e.endsWith(t))return e;let n=Math.min(e.length,t.length);for(let r=n;r>0;r--)if(e.endsWith(t.slice(0,r)))return e+t.slice(r);return e+t}function Cs(e,t){let n=[];for(let r of bs){let i=e[r],a=t[r];typeof i==`string`&&typeof a==`string`&&i.length!==0&&a.length!==0&&(a===i||a.startsWith(i)||i.startsWith(a))&&n.push(r)}return n}function ws(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function Ts(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Es(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=Ts(e),r=Ts(t);if(n&&xs.has(n)&&(!r||!xs.has(r)))return!0;let i=ws(e),a=ws(t);return typeof i==`number`&&typeof a!=`number`}function Ds(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return e===t;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}var Os=[`agent`,`mode`,`providerID`,`modelID`,`variant`,`model`],ks=[`input`,`output`,`reasoning`];function As(e){if(!e||typeof e!=`object`)return!1;let t=e;return ks.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function js(e){if(!e||typeof e!=`object`)return!1;let t=e;return ks.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function Ms(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ns(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of Os){let t=Ms(i[e]),n=Ms(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}return(e.time||t.time)&&(n.time={...e.time,...t.time}),As(r.tokens)&&js(i.tokens)&&(a.tokens=r.tokens),n}function Ps(e,t){if(e.role!==t.role||e.finish!==t.finish||e.time?.completed!==t.time?.completed)return!1;for(let n of[`summary`,`error`,`cost`,`tokens`,`structured`,`model`,`tools`,`format`,`variant`,`agent`,`mode`,`providerID`,`modelID`,`system`])if(!Ds(e[n],t[n]))return!1;return!0}function Fs(e,t,n){if(!t)return!1;let r=e.message[t];return r?ls(r,n)>=0:!1}function Is(e,t){switch(t.type){case`message.updated`:{let n=t.properties.info,r=e.message[n.sessionID],i=!!r&&r.every(t=>t.role!==`assistant`||e.part[t.id]!==void 0);if(n.role===`assistant`&&i&&e.part[n.id]===void 0&&(e.part[n.id]=[]),!r)return e.message[n.sessionID]=[n],!0;let a=ls(r,n.id);if(a>=0){let t=r[a],i=Ns(t,n);if(Ps(t,i))return vs.reducer.messageUpdatedUnchanged(n.sessionID,n.id,n.role,n.finish,n.time?.completed),!1;let o=[...r];o[a]=i,e.message[n.sessionID]=o}else e.message[n.sessionID]=[...r,n];return!0}case`message.removed`:{let n=t.properties,r=e.message[n.sessionID];if(r){let t=ls(r,n.messageID);if(t>=0){let i=[...r];i.splice(t,1),e.message[n.sessionID]=i}}return delete e.part[n.messageID],!0}case`message.part.updated`:{let n=t.properties,r=n.part;if(ys.has(r.type))return vs.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Fs(e,a,i),s=e.part[i];if(!s)return vs.reducer.partUpdatedNoExistingParts(i,r.id,r.type),e.part[i]=[r],!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}};let c=[...s],l=cs.search(c,r.id,e=>e.id);if(l.found){let e=c[l.index];if(Es(e,r))return!1;let t=Cs(e,r);c[l.index]=t.length>0?{...r,__dedupeNextDeltaFields:t}:r}else{let e=r.type===`text`||r.type===`file`?c.findIndex(e=>e.type===r.type&&e.__openchamberOptimistic===!0):-1;e>=0&&c.splice(e,1);let t=cs.search(c,r.id,e=>e.id);c.splice(t.index,0,r)}return e.part[i]=c,!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}}}case`message.part.removed`:{let n=t.properties,r=e.part[n.messageID];if(!r)return!1;let i=cs.search(r,n.partID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),t.length===0?delete e.part[n.messageID]:e.part[n.messageID]=t,!0}return!1}case`message.part.delta`:{let n=t.properties,r=e.part[n.messageID];if(!r)return vs.reducer.partDeltaNoParts(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`orphan-delta`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let i=cs.search(r,n.partID,e=>e.id);if(!i.found)return vs.reducer.partDeltaNotFound(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`missing-delta-part`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let a=r[i.index],o=a[n.field],s=a.__dedupeNextDeltaFields??[],c=s.includes(n.field),l=[...r];return l[i.index]={...a,[n.field]:c?Ss(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return!1}}function Ls(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Rs(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function zs(e){return e.slim===!0}function Bs(e,t){if(!e||e.length===0||!t.some(e=>zs(e)))return t;let n=new Map;for(let t of e){let e=Rs(t);e&&!zs(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!zs(e))return e;let t=Rs(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function Vs(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function Hs(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function Us(e){return Hs(e)!==`assistant`||!Ls(e)}function Ws(e,t,n){if(!e||e.length===0)return t;let r=Bs(e,t);if(Us(n))return Vs(r,e);let i=new Set;for(let e of r){let t=Rs(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=Rs(t);if(e&&i.has(e)){s=e;continue}if(!e)continue;if(c+=1,!s){o.push(t);continue}let n=a.get(s);if(n){n.push(t);continue}a.set(s,[t])}if(c===0)return Vs(r,e);let l=[...o];for(let e of r){l.push(e);let t=Rs(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return Vs(l,e)}var Gs=e=>Object.freeze(e),Ks=Object.freeze({initial:Gs({id:`initial`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:Gs({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:Gs({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":Gs({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:Gs({id:`materialize`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),qs=Gs({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Js=Gs({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Ys=Ks.initial;function Xs(e){let t=Ks[e.purpose]??Ys;return!e.stale||t.onStale===`drop`?t:qs}function Zs(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var Qs=e=>structuredClone(e),$s=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function ec(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function tc(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function nc(e){return JSON.stringify([e.transport,e.generation])}function rc(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function ic(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function ac(e){return Us(e)}function oc(e){return zs(e)?`slim`:`full`}function sc(e){return e.some(e=>zs(e))?`slim`:`full`}var cc=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(cc);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=cc(r))}return n},lc=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function uc(e,t){let n=JSON.stringify(cc({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:lc(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var dc=e=>({scope:$s(e.scope),messageID:e.messageID,info:Qs(e.info),parts:Qs(e.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),fc=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},pc=(e,t)=>{let n=t.slice().sort((e,t)=>rc(e.sortKey,t.sortKey)).map(dc);return{scope:$s(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},mc=e=>Qs(e),hc=e=>$s(e),gc=(e=Date.now)=>fc(e),_c=e=>dc(e),vc=(e,t)=>pc(e,t.slice());function yc(e){return ac(e.info)?e.existing?.completeness===`full`&&e.incomingCompleteness===`slim`?{status:`skipped`,reason:`slim-downgrade`}:e.incomingHash!==void 0&&e.existing?.contentHash===e.incomingHash?{status:`skipped`,reason:`unchanged`}:{status:`written`}:{status:`skipped`,reason:`not-settled`}}var bc=(e,t)=>e<t?-1:+(e>t),xc=[`text`,`output`],Sc={pending:1,started:2,running:3,completed:4,error:4};function Cc(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type)).sort((e,t)=>bc(e.id,t.id))}function wc(e,t){if(!e||e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||JSON.stringify(r)!==JSON.stringify(i))return!1}return!0}function Tc(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function Ec(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Dc(e){return Tc(e)===void 0&&xc.some(t=>{let n=Ec(e,t);return typeof n==`string`&&n.length>0})}function Oc(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function kc(e){let t=Oc(e)?.status;return typeof t==`string`?t:void 0}function Ac(e){return e?Sc[e]??0:0}function jc(e,t){if(Dc(e))return!0;if(Tc(e)===void 0){if(e.type===`tool`){let n=kc(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function Mc(e){let t=e.state?.time;if(!t||typeof t!=`object`)return;let n=typeof t.start==`number`?t.start:void 0,r=typeof t.end==`number`?t.end:void 0;if(n!==void 0||r!==void 0)return{start:n,end:r}}function Nc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function Pc(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=Oc(e);if(!r)return n;let i=Oc(n)??{},a=Oc(t)??{},o={...i},s=!1,c=kc(e),l=kc(t);Ac(c)>Ac(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;Nc(u)&&!Nc(d)&&(o={...o,input:u},s=!0);let f=r.output,p=a.output;typeof f==`string`&&f.length>0?(typeof p!=`string`||p.length<f.length)&&(typeof p!=`string`||p.length===0||f.startsWith(p))&&(o={...o,output:f},s=!0):f!==void 0&&p===void 0&&(o={...o,output:f},s=!0);let m=r.metadata;return Nc(m)&&!Nc(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function Fc(e,t){if(!e||Tc(t)!==void 0)return t;let n=t;for(let r of xc){let i=Ec(e,r);if(!i)continue;let a=Ec(t,r);if(typeof a==`string`&&a.length>=i.length||typeof a==`string`&&a.length>0&&!i.startsWith(a))continue;n===t&&(n={...t});let o=n;o[r]=i}let r=Mc(e);if(r){let e=Mc(t),i=e?.start??r.start,a=e?.end??r.end;if(i!==e?.start||a!==e?.end){n===t&&(n={...t});let e=n;e.state={...n.state??{},time:{start:i,end:a}}}}return n=Pc(e,t,n),n}function Ic(e,t){if(!e||e.length===0||!t.some(e=>zs(e)))return t;let n=new Map;for(let t of e)t.id&&!zs(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!zs(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function Lc(e){return e.__openchamberOptimistic===!0}function Rc(e){return!!(e&&e.length>0&&e.some(Lc))}function zc(e){return e.length===0||e.some(e=>zs(e))}function Bc(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&Rc(e)&&zc(t))return e;let o=Ic(e,t);if(!e||e.length===0||!r)return o;let s=new Map(e.map(e=>[e.id,e])),c=o,l=!1;for(let e=0;e<o.length;e+=1){let t=o[e],n=Fc(s.get(t.id),t);n!==t&&(l||(c=[...o]),c[e]=n,l=!0)}let u=new Set(o.map(e=>e.id)),d=o.some(e=>zs(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(jc(e,i)||d&&!zs(e)));return f.length===0?c:[...c,...f].sort((e,t)=>bc(e.id,t.id))}var Vc=e=>e,Hc=e=>{let t=Vc(e).finish;return typeof t==`string`&&t.length>0},Uc=e=>typeof Vc(e).time?.completed==`number`,Wc=e=>!!Vc(e).error;function Gc(e,t){let n=Vc(t),r=n.finish,i=n.time?.completed,a=n.error,o=!Hc(e)&&typeof r==`string`&&r.length>0,s=!Uc(e)&&typeof i==`number`,c=!Wc(e)&&!!a;if(!o&&!s&&!c)return e;let l={...e};return o&&(l.finish=r),s&&(l.time={...Vc(e).time,completed:i}),c&&(l.error=a),l}function Kc(e,t,n,r){if(t.length===0)return e;let i=new Map(t.map(e=>[e.id,e])),a=!1,o=[];for(let t of e){let e=n(t,i.get(t.id));e!==t&&(a=!0),o.push(e)}let s=new Set(e.map(e=>e.id)),c=t.filter(e=>!s.has(e.id));if(c.length===0)return a?o:e;if(!t.some(e=>s.has(e.id)))return r===`prepend`?[...c,...o]:r===`by-created`?qc(o,c):[...o,...c];let l=-1;for(let e of t){let t=o.findIndex(t=>t.id===e.id);if(t>=0){l=t;continue}l+=1,o.splice(l,0,e)}return o}function qc(e,t){let n=e.slice();for(let e of t){let t=ic(e),r=n.length;for(let e=0;e<n.length;e+=1)if(rc(t,ic(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Jc(e,t,n){return Kc(e,t,(e,t)=>t?Gc(e,t):e,n)}function Yc(e,t,n){return Kc(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:Ns(e,t),n)}function Xc(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??Ys,o=r.placeUnanchoredNewMessages??`append`,s=n.filter(e=>!!e?.info?.id),c=s.map(e=>e.info),l=e.message[t],u=l??[],d=a.messages===`upsert`?Yc(u,c,o):Jc(u,c,o),f=d!==u||l===void 0&&s.length===0,p=!1,m={...e.part},h=a.parts===`skip-existing`;for(let e of s){let t=e.info.id;if(h&&m[t])continue;let n=e.info.role===`assistant`,r=m[t],o=Bc(r,Cc(e.parts??[],i),i,Zs(a,e.info.role),Ls(e.info),a.protectOptimistic);(r?wc(r,o):o.length===0&&!n)||o.length===0&&!n||(m[t]=o,p=!0)}return{message:f?{...e.message,[t]:d}:e.message,part:p?m:e.part,messages:d,messagesChanged:f,partsChanged:p}}function Zc(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function Qc(e){let t=e.messages;if(!t)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let n=t.length>0?t[t.length-1]?.id:void 0,r=[];for(let i of t)i.role===`assistant`&&(e.parts[i.id]||i.id===n&&Zc(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var $c=(e,t)=>e<t?-1:+(e>t);function el(e){return e.filter(e=>!!e?.id).sort((e,t)=>$c(e.id,t.id))}function tl(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,el(e.part)])),i=[];for(let e of t){if(n.findIndex(t=>t.id===e.message.id)<0){n.push(e.message),r.set(e.message.id,el(e.parts));continue}let t=r.get(e.message.id);if(t&&t.length>0){i.push(e.message.id);continue}r.set(e.message.id,el(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>$c(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var nl={kind:`unknown`,loadedTurns:0},rl=3e4,il=12e5,al={project:``,projectMeta:void 0,icon:void 0,provider:{all:[],connected:[],default:{}},config:{},path:{state:``,config:``,worktree:``,directory:``,home:``},status:`loading`,agent:[],command:[],session:[],sessionTotal:0,session_status:{},session_status_observed_at:{},session_status_snapshot_at:void 0,session_diff:{},todo:{},permission:{},question:{},mcp:{},lsp:[],vcs:void 0,limit:20},ol={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function sl(e,t){return e===void 0||t===void 0?!1:t>e}var cl=class extends Error{};function ll(e,t,n){if(n===`reconcile-page`)return e??nl;let r=0;typeof t.turnCount==`number`&&Number.isFinite(t.turnCount)?r=Math.max(0,Math.floor(t.turnCount)):typeof t.requestedTurnLimit==`number`&&Number.isFinite(t.requestedTurnLimit)?r=Math.max(0,Math.floor(t.requestedTurnLimit)):t.records.length>0&&(r=1);let i=e?.loadedTurns??0,a=n===`prepend`?i+r:r;if(t.complete)return{kind:`exhausted`,loadedTurns:a};let o=typeof t.cursor==`string`&&t.cursor.length>0?t.cursor:void 0;if(!o)throw new cl(`session message page: complete=false requires non-empty cursor`);if(t.records.length===0)throw new cl(`session message page: complete=false with zero records makes no progress`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new cl(`session message page: prepend returned the same cursor without progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function ul(e,t){return!e||!t?e===t:e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function dl(e,t,n,r){let i=sl(r.capturedRevision,r.liveRevision),a=Xs({purpose:r.purpose,stale:i}),o=e.session_history_boundary?.[t];if(!n.ok)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.error};if(i&&a.onStale===`drop`){let n=e.message[t]??[];if(n.length>0)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:n,boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[]}}let s=r.optimistic??[],c=tl({session:n.records.map(e=>e.info),part:n.records.map(e=>({id:e.info.id,part:e.parts??[]})),cursor:n.cursor,complete:n.complete},s),l=Xc(e,t,c.session.map(e=>({info:e,parts:c.part.find(t=>t.id===e.id)?.part??[]})),{skipPartTypes:r.skipPartTypes,merge:a,placeUnanchoredNewMessages:r.purpose===`prepend`?`prepend`:r.purpose===`reconcile-page`?`by-created`:`append`}),u;try{u=ll(o,{ok:!0,records:n.records,cursor:c.cursor,complete:c.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit},r.purpose)}catch(n){if(!(n instanceof cl))throw n;return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.message}}let d=!ul(o,u),f=l.messagesChanged,p=l.partsChanged,m=f||p||d,h=[];c.confirmed.length>0&&h.push({type:`clear-optimistic`,messageIDs:c.confirmed});let g=d||!o?u:o;return{applied:!0,merge:a,changed:m,messagesChanged:f,partsChanged:p,boundaryChanged:d,message:l.message,part:l.part,messages:l.messages,boundary:g,meta:{limit:g.loadedTurns,cursor:g.kind===`has-more`?g.cursor:void 0,complete:g.kind===`exhausted`},confirmedOptimisticIDs:c.confirmed,commands:h}}var fl=new Set([`tool`,`reasoning`,`file`,`text`]),pl=new Set([`tool`,`reasoning`,`file`]);function ml(e){return e.some(e=>zs(e)&&fl.has(e.type))}function hl(e,t){let n=!1,r=!1;for(let t of e)pl.has(t.type)&&(n=!0,zs(t)&&(r=!0));return n?r?!0:t?Ls(t):!1:!1}var gl=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function _l(e,t){return!e?.id||gl(e)!==`user`?!1:!t||t.length===0||!t.some(e=>e.type===`subtask`||e.type===`compaction`)}function vl(e){let t=0;for(let n of e.messageOrder)_l(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var yl=(e,t)=>{let n=e.messageOrder.lastIndexOf(t);if(n<0)return[];let r=[];for(let i=n+1;i<e.messageOrder.length;i+=1){let n=e.messageOrder[i],a=e.messagesByID[n];if(!a)continue;if(_l(a,e.partsByMessageID[n]))break;if(gl(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},bl=(e,t)=>Ls(e)?!0:Array.isArray(t)&&t.length>0;function xl(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(_l(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?yl(e,t).some(t=>bl(t,e.partsByMessageID[t.id])):!1}function Sl(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var Cl=new Set([`stop`,`length`]);function wl(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||gl(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!Cl.has(r)?!1:typeof n.time?.completed!=`number`}function Tl(e,t){return t.kind===`has-more`?{sessionID:e,boundary:t,hasPreviousPage:!0,isComplete:!1,cursor:t.cursor,loadedTurns:t.loadedTurns}:t.kind===`exhausted`?{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!0,cursor:null,loadedTurns:t.loadedTurns}:{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!1,cursor:null,loadedTurns:t.loadedTurns}}function El(e){let t={},n={},r=[];for(let i of e.messages){if(!i?.id)continue;r.push(i.id),t[i.id]=i;let a=e.parts[i.id];a&&(n[i.id]=a)}return{sessionID:e.sessionID,messageOrder:r,messagesByID:t,partsByMessageID:n,boundary:e.boundary,liveRevision:e.liveRevision??0}}var Dl=[`message.updated`,`message.removed`,`message.part.updated`,`message.part.removed`,`message.part.delta`];function Ol(e){return Dl.includes(e)}function kl(e){return e.trim()}function Al(e){return`${kl(e.directory)}\n${e.sessionID}`}function jl(e,t){return e.session_history_boundary?.[t]??nl}function Ml(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Nl(e,t){return e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function Pl(e,t,n){n.applied&&e.setState(e=>{let r={};if(n.messagesChanged&&(r.message=n.message),n.partsChanged&&(r.part=n.part),n.boundary&&(n.boundaryChanged||!e.session_history_boundary?.[t]))r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary};else if(n.boundary&&n.boundaryChanged===!1){let i=e.session_history_boundary?.[t];(!i||!Nl(i,n.boundary))&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary})}return!r.message&&!r.part&&!r.session_history_boundary&&n.boundary&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary}),!r.message&&!r.part&&!r.session_history_boundary?{}:r})}function Fl(e,t,n){let r=e.getState(),i=n.page,a=dl(r,t,{ok:!0,records:i.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:i.cursor,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:i.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return a.applied?(Pl(e,t,a),{applied:!0,changed:a.changed,boundary:a.boundary,meta:a.meta,confirmedOptimisticIDs:a.confirmedOptimisticIDs}):{applied:!1,changed:!1,error:a.error}}function Il(e,t){if(t.length===0)return{applied:!1,changed:!1};let n=e.getState(),r={message:{...n.message??{}},part:{...n.part??{}}},i=!1,a=!1,o;for(let e of t){if(!Ol(e.type))continue;i=!0;let t=Is(r,e),n=typeof t==`boolean`?t:t.changed,s=typeof t==`boolean`?void 0:t.materialization;s&&!o&&(o=s),n&&(a=!0)}return i?a?(e.setState({message:r.message,part:r.part}),{applied:!0,changed:!0,...o?{materialization:o}:{}}):{applied:!0,changed:!1,...o?{materialization:o}:{}}:{applied:!1,changed:!1}}function Ll(e,t){return Il(e,[t.event])}function Rl(e,t){return Il(e,t.events)}function zl(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=Xc({message:r.message??{},part:r.part??{}},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});return!i.messagesChanged&&!i.partsChanged?{applied:!0,changed:!1}:(e.setState({...i.messagesChanged?{message:i.message}:{},...i.partsChanged?{part:i.part}:{}}),{applied:!0,changed:!0})}function Bl(e,t,n){let r=e.getState(),i=r.message?.[t],a=r.part?.[n]!==void 0;if(!i&&!a)return{applied:!0,changed:!1};let o={...r.message??{}},s=!1;if(i){let e=[...i],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,s=!0)}let c={...r.part??{}},l=!1;return c[n]!==void 0&&(delete c[n],l=!0),!s&&!l?{applied:!0,changed:!1}:(e.setState({...s?{message:o}:{},...l?{part:c}:{}}),{applied:!0,changed:!0})}function Vl(e,t,n,r,i){r.setOptimisticShadow?.({directory:i,sessionID:t,message:n.message,parts:n.parts});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=o[t]?[...o[t]]:[];return c.some(e=>e.id===n.message.id)||c.push(n.message),o[t]=c,s[n.message.id]=Ml(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function Hl(e,t,n,r,i){r.clearOptimisticShadow?.({directory:i,sessionID:t,messageID:n});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=!1,l=o[t];if(l){let e=[...l],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,c=!0)}return s[n]!==void 0&&(delete s[n],c=!0),c&&e.setState({message:o,part:s}),{applied:!0,changed:c}}function Ul(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function Wl(e,t){let n=e.getState(),r=n.message?.[t],i=n.session_history_boundary?.[t],a=!!(r&&r.length>0),o=i!==void 0,s=new Set;if(r)for(let e of r)e?.id&&s.add(e.id);let c=!1,l={...n.part??{}};for(let e of s)l[e]!==void 0&&(delete l[e],c=!0);for(let[e,n]of Object.entries(l))s.has(e)||n?.some(e=>e.sessionID===t)&&(delete l[e],c=!0);if(!a&&!o&&!c)return!1;let u={...n.message??{}};delete u[t];let d={...n.session_history_boundary??{}};return delete d[t],e.setState({message:u,part:l,session_history_boundary:d}),!0}function Gl(e,t,n){let r=Wl(e,t);if(!n.page)return{applied:!0,changed:r};let i=Fl(e,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes});return{...i,changed:r||i.changed,applied:i.applied||r}}function Kl(e){let t=new Map,n=new Map,r=r=>{let i=Al(r);if(n.has(i))return;let a=kl(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=jl(o.getState(),s),u=new Map;for(let e of c??[])u.set(e.id,o.getState().part?.[e.id]);let d=o.subscribe(e=>{let n=e.message?.[s],a=jl(e,s),o=!1,d=new Map;for(let t of n??[]){let n=e.part?.[t.id];d.set(t.id,n),u.get(t.id)!==n&&(o=!0)}u.size!==d.size&&(o=!0);let f=n!==c,p=Nl(a,l);if(c=n,l=a,u=d,!f&&!o&&p)return;let m=t.get(i);if(!(!m||m.size===0))for(let e of m)e(r)});n.set(i,d)},i=e=>{let r=t.get(e);if(r&&r.size>0)return;let i=n.get(e);i&&(i(),n.delete(e)),t.delete(e)},a={getTranscript(t){let n=kl(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return El({sessionID:i,messages:a,parts:r.part??{},boundary:jl(r,i),liveRevision:o})},getPagination(t){let n=kl(t.directory),r=e.getStore(n).getState();return Tl(t.sessionID,jl(r,t.sessionID))},getRequestState(t){let n=kl(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=xl(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:Sl({p0Satisfied:n,earlierHistoryLoaded:vl(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=kl(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=kl(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=kl(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return Fl(i,a,n);case`sse-event`:return Ll(i,n);case`sse-event-batch`:return Rl(i,n);case`optimistic-add`:return Vl(i,a,n,e,r);case`optimistic-confirm`:return Ul(a,n.messageID,e,r);case`optimistic-remove`:return Hl(i,a,n.messageID,e,r);case`reset`:return Gl(i,a,n);case`materialize-snapshots`:return zl(i,a,n);case`remove-message`:return Bl(i,a,n.messageID);default:return{applied:!1,changed:!1}}},subscribe(e,n){let a=Al(e),o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),r(e),()=>{let e=t.get(a);e&&(e.delete(n),i(a))}}};return a}var ql=new Set,Jl=new Set;function Yl(e,t){return`${e}\n${t}`}function Xl(){for(let e of Jl)e()}function Zl(e,t){!e||!t||(ql.add(Yl(e,t)),Xl())}function Ql(e,t){!e||!t||ql.delete(Yl(e,t))&&Xl()}function $l(e,t){if(!e)return!1;if(t)return ql.has(Yl(t,e));let n=`\n${e}`;for(let e of ql)if(e.endsWith(n))return!0;return!1}function eu(e){return Jl.add(e),()=>{Jl.delete(e)}}var tu=[],nu=new Map,ru=new Map,iu=0,au=()=>{let e=tu.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=tu.splice(e,1);return t}return tu.shift()},ou=()=>{for(;iu<4;){let e=au();if(!e)return;nu.delete(e.key),iu+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--iu,ru.delete(e.key),ou()})}};function su(e,t,n){let r=n?.priority??`background`,i=ru.get(e);if(i){let t=nu.get(e);return t&&r===`user`&&t.priority!==`user`&&(t.priority=`user`),i}let a,o,s=new Promise((e,t)=>{a=e,o=t}),c={key:e,priority:r,run:()=>t(),resolve:e=>{a(e)},reject:o};return tu.push(c),nu.set(e,c),ru.set(e,s),ou(),s}var cu=null,lu=0,uu=new Set;function du(){lu+=1;for(let e of uu)e()}function fu(e){return e}function pu(e){return uu.add(e),()=>{uu.delete(e)}}function mu(){return lu}function hu(e){return cu?.repository===e?e:(cu={kind:`query`,repository:e},du(),e)}function gu(){cu&&(cu=null,du())}function H(){return cu?.repository??null}function _u(){let e=H();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function vu(e,t){let n=H();if(n)return n;let r=fu(t);return Kl({getStore:e=>r})}function U(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function yu(e){try{let t=H(),n=r(),i=s();return t?.getCacheBudget?.().listCanonical({transport:n,generation:i})?.filter(t=>t.scope.sessionID===e).map(e=>U(e.scope.directory,e.scope.sessionID,{transport:e.scope.transport,generation:e.scope.generation}))??[]}catch{return[]}}function bu(e,t){let n=H();return n?n.apply(e,t):null}async function xu(e,t){let n=_u();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(U(e,t))}async function Su(e,t){let n=_u();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(U(e,t))}async function Cu(e,t){let n=_u(),r=U(e,t);if(typeof n.destructiveReset==`function`){await n.destructiveReset(r);return}if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support retryInitial`);await n.ensureInitial(r)}async function wu(e,t){let n=_u();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);Zl(e,t);try{await n.refreshFromAuthority(U(e,t))}finally{Ql(e,t)}}async function Tu(e,t,n,r){let i=_u();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=U(e,t);await su(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Eu(e,t,n){let r=H();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(U(e,t),n)}function Du(e,t){H()?.purgeSession?.(U(e,t))}var Ou=null;function ku(e){Ou&&Ou!==e&&Ou.cancelAll(`reregister`),Ou=e}function Au(e){Ou?.captureCheckpoints(e)}function ju(e){Ou?.onCompensation(e)}async function Mu(e){return Ou?Ou.ensureOnObserve(e):null}function Nu(e){Ou?.cancelAll(e)}var W=e(Ne(),1),Pu=[],Fu=[],Iu={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:nl,liveRevision:0};Tl(``,nl);var Lu={sessionID:``,phase:`idle`,p0Satisfied:!1};function Ru(e,t){return vu(e,t)}var zu=new Set;function Bu(e,t){return`${e}\n${t}`}function Vu(e,t){if(!t)return;let n=Bu(e,t);zu.has(n)||(zu.add(n),Mu(U(e,t)).catch(()=>{}).finally(()=>{zu.delete(n)}))}function Hu(e,t){if(e&&t){zu.delete(Bu(e,t));return}zu.clear()}function Uu(e,t,n,r,i=Object.is,a){let o=(0,W.useRef)(r);o.current=r;let s=(0,W.useRef)(i);s.current=i;let c=(0,W.useRef)(void 0),l=a?.enabled!==!1,u=(0,W.useCallback)(()=>{if(!e||!l){let e=o.current(Iu);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=Ru(t,n).getTranscript(U(t,e)),i=o.current(r);return(c.current===void 0||!s.current(c.current,i))&&(c.current=i),c.current},[t,l,e,n]),d=(0,W.useCallback)(r=>{if(!e||!l)return()=>void 0;Vu(t,e);let i=Ru(t,n).subscribe(U(t,e),()=>{r()}),a=pu(()=>{i(),c.current=void 0,Hu(t,e),Vu(t,e),i=Ru(t,n).subscribe(U(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return W.useSyncExternalStore(d,u,u)}function Wu(e,t){if(e.messageOrder.length===0)return Pu;if(t&&t.length>0){let n=!0,r=0;for(let i of e.messageOrder){let a=e.messagesByID[i];if(a){if(r>=t.length||t[r]!==a){n=!1;break}r+=1}}if(n&&r===t.length)return t}let n=[];for(let t of e.messageOrder){let r=e.messagesByID[t];r&&n.push(r)}return n}function Gu(e,t){return e.messageOrder.length===0?t?.resolved===!0?Qc({messages:Pu,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:Qc({messages:Wu(e),parts:e.partsByMessageID})}function Ku(e,t,n,r){let i=(0,V.c)(4),a;return i[0]!==t||i[1]!==e||i[2]!==n?(a=r=>{if(!e)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let i=Ru(t,n).hasSession?.(U(t,e));return Gu(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],Uu(e,t,n,a,qu,r)}function qu(e,t){return e.hasMessages===t.hasMessages&&e.renderable===t.renderable&&e.missingPartMessageIDs.length===t.missingPartMessageIDs.length&&e.missingPartMessageIDs.every((e,n)=>e===t.missingPartMessageIDs[n])}function Ju(e,t,n,r){return Uu(e,t,n,Xu,Yu,r)}function Yu(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Xu(e){return Wu(e)}function Zu(e,t,n){return Uu(e,t,n,$u,Qu)}function Qu(e,t){return e===t?!0:!e||!t?!1:e.id===t.id&&e.role===t.role&&e.timestamp===t.timestamp}function $u(e){if(e.messageOrder.length===0)return null;let t=e.messageOrder[e.messageOrder.length-1],n=t?e.messagesByID[t]:void 0;if(!n?.id)return null;let r=n.time;return{id:n.id,role:typeof n.role==`string`?n.role:``,timestamp:r?.completed??r?.created??0}}function ed(e,t){if(e===t)return!0;if(e.sessionID!==t.sessionID||e.liveRevision!==t.liveRevision||e.boundary.kind!==t.boundary.kind||e.boundary.loadedTurns!==t.boundary.loadedTurns||e.boundary.kind===`has-more`&&t.boundary.kind===`has-more`&&e.boundary.cursor!==t.boundary.cursor||e.messageOrder.length!==t.messageOrder.length)return!1;for(let n=0;n<e.messageOrder.length;n+=1){let r=e.messageOrder[n];if(r!==t.messageOrder[n]||e.messagesByID[r]!==t.messagesByID[r]||e.partsByMessageID[r]!==t.partsByMessageID[r])return!1}return!0}function td(e,t,n,r){return Uu(e,t,n,nd,ed,r)}function nd(e){return e}function rd(e,t,n,r){if(e.length===0)return()=>void 0;let i=[],a=()=>{for(let e of i)e();i=[]},o=()=>{let r=new Set;for(let a of e){let e=`${a.directory}\n${a.sessionID}`;if(r.has(e))continue;r.add(e);let o=H();if(o){i.push(o.subscribe(U(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=vu(a.directory,s);i.push(c.subscribe(U(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=pu(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function id(e,t){return e.length===0?``:e.map(e=>{let n=gd(e.directory,e.sessionID,t?.(e.directory)),r=n[n.length-1];return`${e.sessionID}:${r?.id??``}:${r?.role??``}:${r?.time?.completed??``}`}).join(`\0`)}function ad(e,t,n){return Uu(e,t,n,od)}function od(e){return e.messageOrder.length}function sd(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=Ru(t,n),a=r.hasSession?.(U(t,e))??r.getTranscript(U(t,e)).messageOrder.length>0;return i.current=a,i.current},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>e?Ru(t,n).subscribe(U(t,e),()=>{r()}):cd,r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return W.useSyncExternalStore(c,o,o)}function cd(){}function ld(e,t,n,r){let i=(0,V.c)(10),a=(0,W.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=Fu,Fu;let i=Ru(t,n),o=r||e,s=i.getParts(U(t,o),e),c=s.length===0?Fu:s;if(a.current===void 0||a.current!==c){if(a.current&&a.current.length===c.length&&a.current.every((e,t)=>e===c[t]))return a.current;a.current=c}return a.current},i[0]=t,i[1]=e,i[2]=r,i[3]=n,i[4]=o):o=i[4];let s=o,c;i[5]!==t||i[6]!==e||i[7]!==r||i[8]!==n?(c=i=>{if(!e)return dd;let a=Ru(t,n);return r?a.subscribe(U(t,r),()=>{i()}):ud},i[5]=t,i[6]=e,i[7]=r,i[8]=n,i[9]=c):c=i[9];let l=c;return W.useSyncExternalStore(l,s,s)}function ud(){}function dd(){}function fd(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(Lu),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==Lu&&(i.current=Lu),i.current;let r=Ru(t,n).getHydrationState?.(U(t,e))??{sessionID:e,phase:`idle`,p0Satisfied:!1},a=i.current;return a.sessionID===r.sessionID&&a.phase===r.phase&&a.p0Satisfied===r.p0Satisfied?a:(i.current=r,r)},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>{if(!e)return pd;Vu(t,e);let a=Ru(t,n).subscribe(U(t,e),()=>{r()}),o=pu(()=>{a(),i.current=Lu,Hu(t,e),Vu(t,e),a=Ru(t,n).subscribe(U(t,e),()=>{r()}),r()});return()=>{o(),a()}},r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return W.useSyncExternalStore(c,o,o)}function pd(){}function md(e,t,n){let r=(0,V.c)(2),i;return r[0]===e?i=r[1]:(i=t=>Tl(e,t.boundary),r[0]=e,r[1]=i),Uu(e,t,n,i,hd)}function hd(e,t){return e.sessionID===t.sessionID&&e.hasPreviousPage===t.hasPreviousPage&&e.isComplete===t.isComplete&&e.cursor===t.cursor&&e.loadedTurns===t.loadedTurns&&e.boundary.kind===t.boundary.kind&&e.boundary.loadedTurns===t.boundary.loadedTurns&&(e.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||e.boundary.cursor===t.boundary.cursor)}function gd(e,t,n){if(!t)return[];let r=H();if(r){let n=r.getTranscript(U(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=vu(e,n).getTranscript(U(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var _d=null,vd=``,yd=null,bd=new Set,xd=null,Sd=new Map,Cd=new Map;function wd(e,t,n,r){_d=t,xd!==t&&(xd=null,Sd=new Map,Cd=new Map),vd=n,r&&(yd=r)}function Td(e,t){yd?.(e,t)}function Ed(){if(!_d)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return _d}function Dd(e){let t=_d;if(!t)return;let n=e||vd;if(n)return t.getState(n)}function Od(e){let t=Dd(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function kd(e){return bd.add(e),()=>{bd.delete(e)}}function Ad(e,t){if(e)for(let n of bd)n(e,t)}function jd(e){return Dd(e)?.session??[]}function Md(){return Array.from(Nd().values())}function Nd(){let e=_d;if(!e)return Cd;let t=xd!==e||Sd.size!==e.children.size;for(let[n,r]of e.children)if(Sd.get(n)!==r.getState().session){t=!0;break}if(!t)return Cd;let n=new Map,r=new Map;for(let[t,i]of e.children){let e=i.getState().session;n.set(t,e);for(let t of e)t?.id&&r.set(t.id,t)}return xd=e,Sd=n,Cd=r,Cd}function Pd(e,t,n){if(n){let r=[];for(let[i,a]of n)if(a.session.some(t=>t.id===e)&&a.hasTranscript===!0){if(i===t)return i;r.push(i)}return r.length===1?r[0]:void 0}let r=[];try{let n=H();if(_d){for(let[i,a]of _d.children)if(a.getState().session.some(t=>t.id===e)&&(n??vu(i,a)).hasSession?.(U(i,e))){if(i===t)return i;r.push(i)}}if(r.length===0&&n){let i=n.getCacheBudget?.().listCanonical();if(i){for(let n of i)if(n.scope.sessionID===e){if(n.scope.directory===t)return n.scope.directory;r.push(n.scope.directory)}}}}catch{}let i=[...new Set(r)];return i.length===1?i[0]:void 0}function Fd(e,t){if(!e)return[];try{let n=H(),r=t??vd;if(n){let t=n.getTranscript(U(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(_d){let t=_d.getChild(r);if(t){let n=vu(r,t).getTranscript(U(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function Id(e,t){if(!e)return[];try{let n=H(),r=t??vd;if(n)return[...n.getParts(U(r,e),e)];if(_d){let t=_d.getChild(r);if(t)return[...vu(r,t).getParts(U(r,e),e)]}}catch{}return[]}function Ld(e,t){return Dd(t)?.session_status[e]}var Rd=`opencode`,zd=`big-pickle`,Bd=`__add_provider__`,Vd=`zen`,Hd=`big-pickle`,Ud=async(e,t)=>{B(`config.defaults:start`);let n=typeof performance<`u`?performance.now():Date.now(),r=(e,t)=>{let r=typeof performance<`u`?performance.now():Date.now();return B(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await me(e);return as({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){B(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=I(e);return i&&as({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},Wd=e=>Qo(e),Gd=e=>e===Bd?``:e??``,Kd=(e,t)=>e===Bd?Bd:t,qd=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Jd=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!ef(e))return e;let t=Array.isArray(e.models)?Object.fromEntries(e.models.map((e,t)=>[String(t),e])):e.models;return{...e,models:t}});try{return Yi({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},Yd=e=>{try{return Yi({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Xd=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},Zd=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{let o=(t,n,r)=>{if(!r)return;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0};if(t&&n&&Xd(e,t,n))return{providerId:t,modelId:n,variant:o(t,n,r)};if(i){let t=Wd(i);if(t&&Xd(e,t.providerId,t.modelId))return{providerId:t.providerId,modelId:t.modelId,variant:o(t.providerId,t.modelId,a)}}if(Xd(e,Rd,zd))return{providerId:Rd,modelId:zd};let s=e[0],c=s?.models[0];return s&&c?{providerId:s.id,modelId:c.id}:null},Qd=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{if(e.length===0)return{agentName:void 0};let u=(e,n,r)=>{if(!r)return;let i=t.find(t=>t.id===e)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0},d=n=>{if(!n)return null;let r=e.find(e=>e.name===n.agentName);return!r||!Lo(r.mode)||r.hidden===!0||!Xd(t,n.providerId,n.modelId)?null:{agentName:r.name,providerId:n.providerId,modelId:n.modelId,variant:u(n.providerId,n.modelId,n.variant)}},f=d(c);if(f)return f;let p=d(l);if(p)return p;let m=e.filter(e=>Lo(e.mode)),h;if(r&&(h=e.find(e=>e.name===r)),!h&&o){let t=e.find(e=>e.name===o);t&&Lo(t.mode)&&t.hidden!==!0&&(h=t)}if(h||=m.find(e=>e.name===`build`)||m[0]||e[0],!h)return{agentName:void 0};let g,_,v,y=n||i;if(y){let e=Wd(y);e&&Xd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId,v=u(g,_,n?void 0:a))}if(!g&&h.model?.providerID&&h.model?.modelID&&Xd(t,h.model.providerID,h.model.modelID)&&(g=h.model.providerID,_=h.model.modelID,v=u(g,_,h.variant)),!g&&s){let e=Wd(s);e&&Xd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId)}if(!g)if(Xd(t,Rd,zd))g=Rd,_=zd;else{let e=t[0],n=e?.models[0];e&&n&&(g=e.id,_=n.id)}return{agentName:h.name,providerId:g,modelId:_,variant:v}},$d=({providers:e,settingsZenModel:t})=>{let n=qd(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:Vd,modelId:n}:null;if(n&&Xd(e,Vd,n))return{providerId:Vd,modelId:n};if(Xd(e,Vd,Hd))return{providerId:Vd,modelId:Hd};let r=e.find(e=>e.id===Vd);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=qd(r.models[e]?.id);if(t)return{providerId:Vd,modelId:t}}return null},ef=e=>typeof e==`object`&&!!e,tf=e=>{if(!e)return[];let t=[];return e.text&&t.push(`text`),e.audio&&t.push(`audio`),e.image&&t.push(`image`),e.video&&t.push(`video`),e.pdf&&t.push(`pdf`),t},nf=(e,t)=>({id:t.id,providerId:e,name:t.name,tool_call:t.capabilities?.toolcall,reasoning:t.capabilities?.reasoning,temperature:t.capabilities?.temperature,attachment:t.capabilities?.attachment,modalities:t.capabilities?{input:tf(t.capabilities.input),output:tf(t.capabilities.output)}:void 0,cost:t.cost?{input:t.cost.input,output:t.cost.output,cache_read:t.cost.cache?.read,cache_write:t.cost.cache?.write}:void 0,limit:t.limit,release_date:t.release_date}),rf=e=>new Promise(t=>setTimeout(t,e)),af=800,of=async(e=af)=>Promise.race([z.checkHealth().catch(()=>!1),rf(Math.max(1,e)).then(()=>!1)]),sf=`__global__`,cf=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:sf},lf=e=>e===sf?null:e,uf=()=>typeof window>`u`?sf:yf(z.getDirectory()??Pe.getState().currentDirectory),df=`oc.worktreeProjectMap`,ff=null,pf=()=>{if(ff===null)try{let e=typeof localStorage<`u`?localStorage.getItem(df):null;ff=e?JSON.parse(e):{}}catch{ff={}}return ff},mf=(e,t)=>{if(!e||!t||e===t)return;let n=pf();if(n[e]!==t){n[e]=t;try{localStorage.setItem(df,JSON.stringify(n))}catch{}}},hf=e=>{let t=_(e);return t===null?null:t||`/`},gf=()=>{try{return Si.getState().projects.map(e=>hf(e.path)).filter(e=>!!e)}catch{return[]}},_f=()=>{try{let{projects:e,activeProjectId:t}=Si.getState();return hf((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},vf=e=>{let t=hf(e),n=gf();if(!t)return null;if(n.includes(t))return t;let r=hf(pf()[t]);if(r)return r;try{let e=hf(Zo(Si.getState().projects,$.getState().availableWorktreesByProject,t)?.path??null);if(e&&e!==t)return mf(t,e),e}catch{return null}return null},yf=e=>cf(vf(e)),bf=e=>yf(e),xf=1e3,Sf=125e4,Cf=100,wf=256,Tf=new Set([`__proto__`,`prototype`,`constructor`]),Ef=/[\u0000-\u001F\u007F]/u,Df=new TextEncoder,Of=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e},a=e.providers&&e.providers.length>0?e.providers:r.providers;return i.providers=a,i.agents=[],i.defaultProviders=e.defaultProviders&&Object.keys(e.defaultProviders).length>0?e.defaultProviders:r.defaultProviders,i.currentProviderId=r.currentProviderId,i.currentModelId=r.currentModelId,i.currentVariant=r.currentVariant,i.currentAgentName=r.currentAgentName,i.selectedProviderId=r.selectedProviderId,i.agentModelSelections=r.agentModelSelections,i.lastSelectedAgentName=r.lastSelectedAgentName,i.lastUserSelection=r.lastUserSelection,i.opencodeDefaultAgent=r.opencodeDefaultAgent,i.opencodeDefaultModel=r.opencodeDefaultModel,i.selectionSource=r.selectionSource??`auto`,a.length>0&&r.providerCatalogPartial!==!0&&ta(lf(n),{providers:a,defaultProviders:i.defaultProviders??{},providerCatalogPartial:!1}),i},kf=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>wf||t&&n!==e||Ef.test(n)||Tf.has(n)))return n},Af=e=>{if(!ef(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=Cf||!ef(r))continue;let e=kf(n,!0),i=kf(r.providerId),a=kf(r.modelId),o=kf(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},jf=e=>{if(!ef(e))return;let t=kf(e.agentName,!0),n=kf(e.providerId),r=kf(e.modelId),i=kf(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},Mf=(e,t)=>{if(!e)return;let n=t[e];if(n)return{agentName:e,providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},Nf=(e,t,n)=>jf(e)??Mf(t,n),Pf=(e=[],t=[])=>({providers:e,agents:t,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,defaultProviders:{},providerCatalogPartial:!1,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`}),Ff=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=r.lastUserSelection??Mf(r.lastSelectedAgentName,r.agentModelSelections);!e&&!r.lastSelectedAgentName||(t[n]={...Pf(),agentModelSelections:{},lastSelectedAgentName:e?.agentName??r.lastSelectedAgentName,lastUserSelection:e,selectionSource:r.selectionSource===`manual`?`manual`:`auto`})}return t},If=e=>{if(!ef(e))return{};let t=qd(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`,`settingsDefaultModel`,`settingsDefaultVariant`,`settingsDefaultAgent`,`settingsZenModel`]){let r=qd(e[t]);r!==void 0&&(n[t]=r)}for(let t of[`settingsAutoCreateWorktree`,`settingsGitmojiEnabled`,`settingsDefaultFileViewerPreview`])typeof e[t]==`boolean`&&(n[t]=e[t]);(e.settingsMessageStreamTransport===`auto`||e.settingsMessageStreamTransport===`ws`||e.settingsMessageStreamTransport===`sse`)&&(n.settingsMessageStreamTransport=e.settingsMessageStreamTransport);for(let t of[`speechRate`,`speechPitch`,`speechVolume`])typeof e[t]==`number`&&Number.isFinite(e[t])&&(n[t]=e[t]);let i={};if(ef(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!ef(n))continue;let e=n.providerCatalogPartial===!0,r=e?[]:Jd(n.providers),a=e?{}:Yd(n.defaultProviders),o=Af(n.agentModelSelections),s=kf(n.lastSelectedAgentName,!0),c=Nf(n.lastUserSelection,s,o);i[t]={...Pf(),providers:r,agents:[],currentProviderId:qd(n.currentProviderId)??``,currentModelId:qd(n.currentModelId)??``,currentVariant:qd(n.currentVariant),currentAgentName:qd(n.currentAgentName),selectedProviderId:Gd(qd(n.selectedProviderId)),agentModelSelections:o,lastSelectedAgentName:c?.agentName??s,lastUserSelection:c,defaultProviders:a,providerCatalogPartial:e,opencodeDefaultAgent:qd(n.opencodeDefaultAgent),opencodeDefaultModel:qd(n.opencodeDefaultModel),selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let a=Af(e.agentModelSelections),o=kf(e.lastSelectedAgentName,!0),s=Nf(e.globalLastUserSelection,o,a)??(()=>{let t=qd(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),c=r();if(t!==c){let t=Ff(i),r=qd(e.activeDirectoryKey),a=r?t[r]?.lastUserSelection:void 0;return{...n,catalogTransportIdentity:c,directoryScoped:t,providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:a?.agentName??s?.agentName,lastUserSelection:a,globalLastUserSelection:s,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}}return{...n,catalogTransportIdentity:t,directoryScoped:i,providers:[],agents:[],defaultProviders:{},currentProviderId:qd(e.currentProviderId)??``,currentModelId:qd(e.currentModelId)??``,currentVariant:qd(e.currentVariant),currentAgentName:qd(e.currentAgentName),selectedProviderId:Gd(qd(e.selectedProviderId)),agentModelSelections:a,lastSelectedAgentName:s?.agentName??o,lastUserSelection:(()=>{let t=qd(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),globalLastUserSelection:s}},Lf=(e,t,n,r)=>{if(!r)return!0;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return!!i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)},Rf=({agents:e,providers:t,currentAgentName:n,currentProviderId:r,currentModelId:i,currentVariant:a,selectionSource:o,resolvedAgentName:s,resolvedProviderId:c,resolvedModelId:l,resolvedVariant:u})=>{let d=n&&e.some(e=>e.name===n)?n:void 0,f=!!r&&!!i&&Xd(t,r,i)&&Lf(t,r,i,a),p=o===`manual`&&(!!d||f);return{agentName:p?d??s:s,providerId:p&&f?r:c,modelId:p&&f?i:l,variant:p&&f?a:u,selectionSource:p?`manual`:`auto`}},zf=null,Bf=null,Vf=null,Hf={},Uf={},G=Oe()(je(ke((e,t)=>({activeDirectoryKey:uf(),catalogTransportIdentity:r(),directoryScoped:{},providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{},providers:[],agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,defaultProviders:{},selectionSource:`auto`,isConnected:!1,hasEverConnected:!1,connectionPhase:`connecting`,lastDisconnectReason:null,isInitialized:!1,settingsDefaultModel:void 0,settingsDefaultVariant:void 0,settingsDefaultAgent:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,settingsAutoCreateWorktree:!1,settingsGitmojiEnabled:!1,settingsDefaultFileViewerPreview:!1,settingsZenModel:void 0,settingsMessageStreamTransport:`auto`,voiceProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`voiceProvider`);if(e===`openai`||e===`browser`||e===`local`||e===`say`||e===`openai-compatible`)return e}return`browser`})(),speechRate:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechRate`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechPitch:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechPitch`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechVolume:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechVolume`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=0&&t<=1)return t}}return 1})(),sayVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sayVoice`);if(e)return e}return`Samantha`})(),localTtsVoiceId:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`localTtsVoiceId`);if(e!==null){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>=0)return t}}return 0})(),browserVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`browserVoice`);if(e)return e}return``})(),openaiVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiVoice`);if(e)return e}return`nova`})(),openaiApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiApiKey`);if(e)return e}return``})(),openaiCompatibleUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleUrl`);if(e)return e}return``})(),openaiCompatibleApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleApiKey`);if(e)return e}return``})(),openaiCompatibleVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleVoice`);if(e)return e}return`af_sky`})(),openaiCompatibleTtsModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleTtsModel`);if(e&&e!==`speaches-ai/Kokoro-82M-v1.0-ONNX`)return e}return`kokoro`})(),dictationEnabled:!(typeof window<`u`&&localStorage.getItem(`dictationEnabled`)===`false`),sttProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttProvider`);if(e===`local`||e===`openai-compatible`)return e;if(e===`server`)return`openai-compatible`}return`local`})(),sttServerUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttServerUrl`);if(e)return e}return`http://localhost:8001/v1`})(),sttApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttApiKey`);if(e)return e}return``})(),sttModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttModel`);if(e)return e}return`deepdml/faster-whisper-large-v3-turbo-ct2`})(),sttLocalModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLocalModel`);if(e)return e}return`parakeet-tdt-0.6b-v2-int8`})(),sttLanguage:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLanguage`);if(e!==null)return e}return``})(),showMessageTTSButtons:typeof window<`u`&&localStorage.getItem(`showMessageTTSButtons`)===`true`,ttsInputMode:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`ttsInputMode`);if(e===`raw`)return`raw`;if(e===`summarized`)return`summarized`}return`sanitized`})(),summarizeMessageTTS:typeof window<`u`&&localStorage.getItem(`summarizeMessageTTS`)===`true`,summarizeVoiceConversation:typeof window<`u`&&localStorage.getItem(`summarizeVoiceConversation`)===`true`,summarizeCharacterThreshold:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeCharacterThreshold`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 200})(),summarizeMaxLength:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeMaxLength`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 500})(),activateDirectory:async(n,r)=>{let i=vf(n);if(!i){B(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let a=cf(i),o=!1,s=!1,c=!1;e(e=>{let t=e.directoryScoped[a],n=e.providers.length>0?e.providers:t?.providers??[],r=Object.keys(e.defaultProviders).length>0?e.defaultProviders:t?.defaultProviders??{},i=e.agents.length>0?e.agents:t?.agents??[];o=n.length>0,s=i.length>0,c=!!t?.agents.length;let l=e.isConnected&&!o,u=e.isConnected&&!s;return t?{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:t.agents.length>0?t.agents:i,currentProviderId:t.currentProviderId,currentModelId:t.currentModelId,currentVariant:t.currentVariant,currentAgentName:t.currentAgentName,selectedProviderId:t.selectedProviderId,agentModelSelections:t.agentModelSelections,lastSelectedAgentName:t.lastSelectedAgentName,lastUserSelection:t.lastUserSelection,opencodeDefaultAgent:t.opencodeDefaultAgent,opencodeDefaultModel:t.opencodeDefaultModel,selectionSource:t.selectionSource??`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}:{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}}),s&&o&&!c&&t().applyDefaultModelAgentSelection(),t().isConnected&&((!o||r?.refreshProviders)&&await t().loadProviders({directory:lf(a),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),s||await t().loadAgents({directory:lf(a),source:`activateDirectory`}))},invalidateProviderCache:e=>{oa(null,r())},loadProviders:async n=>{let i=n?.directory??lf(t().activeDirectoryKey),a=vf(i);if(!a){B(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`});return}let o=a??z.getDirectory()??null,c=cf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&vf(i)===a,p=(Hf[c]??0)+1;Hf[c]=p,B(`loadProviders:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().providers.length>0||m?.providers.length||e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();B(`loadProviders:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().providers.length>0?t().providers:a?.providers??[],d=Object.keys(t().defaultProviders).length>0?t().defaultProviders:a?.defaultProviders??{};try{let t=await Fe(`loadProviders:api`,()=>n?.forceRefresh?ia(lf(c),u):na(lf(c),u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),a=Jd(t.providers),d=Yd(t.default);if(!f()||t.partial&&s.length>0||a.length===0||(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let n=e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},r=e.activeDirectoryKey===c?e.currentProviderId:n.currentProviderId,i=e.activeDirectoryKey===c?e.currentModelId:n.currentModelId,o=e.activeDirectoryKey===c?e.currentVariant:n.currentVariant,s=Zd({providers:a,currentProviderId:r,currentModelId:i,currentVariant:o,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),l=e.activeDirectoryKey===c?e.selectedProviderId:n.selectedProviderId,p=l===Bd||a.some(e=>e.id===l)?l:s?.providerId??a[0]?.id??``,m={...n,providers:a,defaultProviders:d,providerCatalogPartial:t.partial,currentProviderId:s?.providerId??``,currentModelId:s?.modelId??``,currentVariant:s?.variant,selectedProviderId:p},h={providers:a,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:m}};return e.activeDirectoryKey===c&&(h.currentProviderId=m.currentProviderId,h.currentModelId=m.currentModelId,h.currentVariant=m.currentVariant,h.selectedProviderId=p),h}),!f()))return;let p=typeof performance<`u`?performance.now():Date.now();B(`loadProviders:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(p-r),providers:a.length,models:a.reduce((e,t)=>e+t.models.length,0)});return}catch(e){if(!f())return;console.error(`Failed to load providers:`,e),B(`loadProviders:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:e instanceof Error?e.message:String(e)})}f()&&e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:s,defaultProviders:d},n={providers:s,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:t}};if(e.activeDirectoryKey===c&&!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel){let r=Wd(e.settingsDefaultModel);if(r){let i=s.find(e=>e.id===r.providerId);if(i?.models.some(e=>e.id===r.modelId)){let a=i.models.find(e=>e.id===r.modelId),o=e.settingsDefaultVariant&&a?.variants?.[e.settingsDefaultVariant]?e.settingsDefaultVariant:void 0;n.currentProviderId=r.providerId,n.currentModelId=r.modelId,n.currentVariant=o,n.selectedProviderId=r.providerId,t.currentProviderId=r.providerId,t.currentModelId=r.modelId,t.currentVariant=o,t.selectedProviderId=r.providerId}}}return n})})().finally(()=>{Hf[c]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!1}}))})},refreshMissingCatalogs:e=>{if(Bf)return Bf;let n=e?.source??`refreshMissingCatalogs`,r=(async()=>{t().providers.length===0&&await t().loadProviders({source:n,forceRefresh:!0}),t().agents.length===0&&await t().loadAgents({source:n,forceRefresh:!0})})().finally(()=>{Bf=null});return Bf=r,r},refreshCatalogsOnPickerOpen:e=>{if(Vf)return Vf;let n=e?.source??`refreshCatalogsOnPickerOpen`,r=Promise.all([t().loadProviders({source:n,forceRefresh:!0}),t().loadAgents({source:n,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Vf=null});return Vf=r,r},setProvider:n=>{let{providers:r}=t(),i=r.find(e=>e.id===n);if(!i)return;let a=i.models[0]?.id||``;e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`};return{currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}})},setModel:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentModelId:t,selectionSource:`manual`};return{currentModelId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},setCurrentVariant:t=>{e(e=>{if(e.currentVariant===t)return e;let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentVariant:t,selectionSource:`manual`};return{currentVariant:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},getCurrentModelVariants:()=>{let e=t().getCurrentModel()?.variants;return e?Object.keys(e):[]},cycleCurrentVariant:()=>{let e=t().getCurrentModelVariants();if(e.length===0)return;let n=t().currentVariant;if(!n){t().setCurrentVariant(e[0]);return}let r=e.indexOf(n);if(r===-1||r===e.length-1){t().setCurrentVariant(void 0);return}t().setCurrentVariant(e[r+1])},setSelectedProvider:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},selectedProviderId:t,selectionSource:`manual`};return{selectedProviderId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},saveAgentModelSelection:(t,n,r,i)=>{!t||!n||!r||e(e=>{let a=e.activeDirectoryKey,o={agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}},s=e.lastUserSelection,c=s?.agentName===o.agentName&&s?.providerId===o.providerId&&s?.modelId===o.modelId&&s?.variant===o.variant,l=e.globalLastUserSelection?.agentName===o.agentName&&e.globalLastUserSelection?.providerId===o.providerId&&e.globalLastUserSelection?.modelId===o.modelId&&e.globalLastUserSelection?.variant===o.variant;if(c&&l)return e;let u={...e.directoryScoped[a]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,lastSelectedAgentName:e.lastSelectedAgentName,lastUserSelection:e.lastUserSelection,defaultProviders:e.defaultProviders},agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,selectionSource:`manual`};return{agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,globalLastUserSelection:o,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[a]:u}}})},getAgentModelSelection:e=>{let{lastUserSelection:n}=t();return!n||n.agentName!==e?null:{providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},loadAgents:async n=>{let i=n?.directory??lf(t().activeDirectoryKey),a=vf(i);if(!a)return B(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`}),!1;let o=a??z.getDirectory()??null,c=cf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&vf(i)===a,p=(Uf[c]??0)+1;Uf[c]=p,B(`loadAgents:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().agents.length>0||m?.agents.length||e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();B(`loadAgents:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().agents.length>0?t().agents:a?.agents??[];try{let a=lf(c);(Od(i??void 0)??Od(a??void 0))&&B(`loadAgents:syncConfigHit`,{directoryKey:c,source:l});let[d,p]=await Promise.all([Fe(`loadAgents:api`,()=>n?.forceRefresh?aa(a,u):ra(a,u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),Ud(u,{defaultModel:t().settingsDefaultModel,defaultVariant:t().settingsDefaultVariant,defaultAgent:t().settingsDefaultAgent,autoCreateWorktree:t().settingsAutoCreateWorktree,gitmojiEnabled:t().settingsGitmojiEnabled,defaultFileViewerPreview:t().settingsDefaultFileViewerPreview,zenModel:t().settingsZenModel,messageStreamTransport:t().settingsMessageStreamTransport,sttProvider:t().sttProvider,sttServerUrl:t().sttServerUrl,sttModel:t().sttModel,sttLocalModel:t().sttLocalModel,sttLanguage:t().sttLanguage})]),m=Array.isArray(d)?d:[];if(!f())return!1;let h=Od(i??void 0)??Od(a??void 0),g=h!==void 0,_=g?qd(h.default_agent):void 0,v=g?qd(h.model):void 0,y=t().activeDirectoryKey===c?t().providers:t().directoryScoped[c]?.providers??[],b=qd(t().settingsZenModel),x=qd(p.zenModel),S=$d({providers:y,settingsZenModel:b}),C=$d({providers:y,settingsZenModel:x}),w=(S||C)?.modelId||x||b;e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:s,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=g?_:t.opencodeDefaultAgent??(e.activeDirectoryKey===c?e.opencodeDefaultAgent:void 0),r=g?v:t.opencodeDefaultModel??(e.activeDirectoryKey===c?e.opencodeDefaultModel:void 0),i={...t,providers:y,agents:m,opencodeDefaultAgent:n,opencodeDefaultModel:r},a={settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,settingsDefaultAgent:p.defaultAgent,settingsAutoCreateWorktree:p.autoCreateWorktree??!1,settingsGitmojiEnabled:p.gitmojiEnabled??!1,settingsDefaultFileViewerPreview:p.defaultFileViewerPreview??!1,settingsZenModel:w,settingsMessageStreamTransport:p.messageStreamTransport??e.settingsMessageStreamTransport??`auto`,sttProvider:p.sttProvider??e.sttProvider,sttServerUrl:p.sttServerUrl??e.sttServerUrl,sttModel:p.sttModel??e.sttModel,sttLocalModel:p.sttLocalModel??e.sttLocalModel,sttLanguage:p.sttLanguage??e.sttLanguage,directoryScoped:{...e.directoryScoped,[c]:i}};return e.activeDirectoryKey===c&&(a.agents=m,a.opencodeDefaultAgent=n,a.opencodeDefaultModel=r),a});let T=t(),E=T.directoryScoped[c],D=E?.opencodeDefaultAgent??(T.activeDirectoryKey===c?T.opencodeDefaultAgent:void 0),O=E?.opencodeDefaultModel??(T.activeDirectoryKey===c?T.opencodeDefaultModel:void 0),k=!!w&&w!==x;if(f()&&k&&w&&ye({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{}),m.length===0){if(s.length>0&&!n?.forceRefresh){if(!f())return!1;let e=typeof performance<`u`?performance.now():Date.now();return B(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(e-r),agents:s.length,retainedPrevious:!0}),!0}if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:y,agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:y,agents:[],currentAgentName:void 0},n={directoryScoped:{...e.directoryScoped,[c]:t}};return e.activeDirectoryKey===c&&(n.currentAgentName=void 0),n}),!f())return!1;let t=typeof performance<`u`?performance.now():Date.now();return B(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(t-r),agents:m.length}),!0}let A=(e,t)=>{let n=y.find(t=>t.id===e);return n?n.models.some(e=>e.id===t):!1},j={};if(p.defaultAgent&&!m.some(e=>e.name===p.defaultAgent)&&(j.defaultAgent=``),p.defaultModel){let e=Wd(p.defaultModel);if(!e||!A(e.providerId,e.modelId))j.defaultModel=``;else if(p.defaultVariant){let t=y.find(t=>t.id===e.providerId)?.models.find(t=>t.id===e.modelId)?.variants;t&&Object.prototype.hasOwnProperty.call(t,p.defaultVariant)||(j.defaultVariant=``)}}let ee=t(),te=ee.directoryScoped[c]?.lastUserSelection??(ee.activeDirectoryKey===c?ee.lastUserSelection:void 0),M=Qd({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:te,globalLastUserSelection:ee.globalLastUserSelection}),ne=M.agentName??m[0].name,re=M.providerId,ie=M.modelId,ae=M.variant;if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:m,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=e.activeDirectoryKey===c,r=n?e.currentAgentName:t.currentAgentName,i=n?e.currentProviderId:t.currentProviderId,a=n?e.currentModelId:t.currentModelId,o=n?e.currentVariant:t.currentVariant,s=n?e.selectionSource:t.selectionSource??`auto`,l=Rf({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:o,selectionSource:s,resolvedAgentName:ne,resolvedProviderId:re,resolvedModelId:ie,resolvedVariant:ae}),d={...t,providers:y,agents:m,currentAgentName:l.agentName,currentProviderId:l.providerId??t.currentProviderId,currentModelId:l.modelId??t.currentModelId,currentVariant:l.variant,opencodeDefaultAgent:D,opencodeDefaultModel:O,selectionSource:l.selectionSource},p={directoryScoped:{...e.directoryScoped,[c]:d}};return n&&(p.currentAgentName=l.agentName,p.opencodeDefaultAgent=D,p.opencodeDefaultModel=O,l.providerId&&l.modelId&&(p.currentProviderId=l.providerId,p.currentModelId=l.modelId,p.currentVariant=l.variant),p.selectionSource=l.selectionSource),p}),f()&&Object.keys(j).length>0&&(e({settingsDefaultModel:j.defaultModel===void 0?t().settingsDefaultModel:void 0,settingsDefaultVariant:j.defaultVariant===void 0?t().settingsDefaultVariant:void 0,settingsDefaultAgent:j.defaultAgent===void 0?t().settingsDefaultAgent:void 0}),ye(j).catch(()=>{})),!f())return!1;let oe=typeof performance<`u`?performance.now():Date.now();return B(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(oe-r),agents:m.length}),!0}catch(t){return!f()||(console.error(`Failed to load agents:`,t),B(`loadAgents:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:t instanceof Error?t.message:String(t)}),!f())||e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.activeDirectoryKey===c?e.providers:e.directoryScoped[c]?.providers??[],n={...e.directoryScoped[c]??{providers:t,agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:t,agents:s},r={directoryScoped:{...e.directoryScoped,[c]:n}};return e.activeDirectoryKey===c&&(r.agents=s),r}),!1}})().finally(()=>{Uf[c]===p&&e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!1}}))})},setAgent:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,currentProviderId:s,currentModelId:c}=t();if(e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:n,selectionSource:`manual`};return{currentAgentName:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}}),n){let{currentSessionId:e}=$.getState(),t=qo.getState();e&&t.saveSessionAgentSelection(e,n),e&&$.getState().isOpenChamberCreatedSession(e)&&(t.getAgentModelForSession(e,n)||$.getState().initializeNewOpenChamberSession(e,r))}if(n){let{currentSessionId:l}=$.getState(),u=(t,n,r)=>{e(e=>{let i=e.activeDirectoryKey,a={...e.directoryScoped[i]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Kd(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:Kd(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=r.find(e=>e.name===n),f=(e,t,r=[])=>{let a=i.find(t=>t.id===e)?.models.find(e=>e.id===t)?.variants;if(!a)return;let s=l?qo.getState().getAgentModelVariantForSession(l,n,e,t):void 0;for(let e of[s,...r,o])if(e&&Object.prototype.hasOwnProperty.call(a,e))return e};if(l){let e=qo.getState().getAgentModelForSession(l,n);if(e&&Xd(i,e.providerId,e.modelId)){let n=f(e.providerId,e.modelId,[d?.variant]);(s!==e.providerId||c!==e.modelId||t().currentVariant!==n)&&u(e.providerId,e.modelId,n);return}}if(a){let e=Wd(a);if(e&&i.find(t=>t.id===e.providerId)?.models.some(t=>t.id===e.modelId)){u(e.providerId,e.modelId,f(e.providerId,e.modelId,[d?.variant]));return}}let p=d?.model;if(p?.providerID&&p?.modelID){let{providerID:e,modelID:t}=p;if(i.find(t=>t.id===e)?.models.find(e=>e.id===t)){u(e,t,f(e,t,[d?.variant]));return}}}},applyDefaultModelAgentSelection:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,settingsDefaultAgent:s,opencodeDefaultAgent:c,opencodeDefaultModel:l,lastUserSelection:u,globalLastUserSelection:d}=t();if(r.length===0||i.length===0)return;let{agentName:f,providerId:p,modelId:m,variant:h}=Qd({agents:r,providers:i,projectDefaultModel:n?.projectDefaultModel,settingsDefaultAgent:s,settingsDefaultModel:a,settingsDefaultVariant:o,opencodeDefaultAgent:c,opencodeDefaultModel:l,projectLastUserSelection:u,globalLastUserSelection:d});f&&e(e=>{let t=e.activeDirectoryKey,n={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:f,...p&&m?{currentProviderId:p,currentModelId:m,currentVariant:h,selectedProviderId:Kd(e.selectedProviderId,p)}:{},selectionSource:`auto`},r={currentAgentName:f,selectionSource:`auto`,directoryScoped:{...e.directoryScoped,[t]:n}};return p&&m&&(r.currentProviderId=p,r.currentModelId=m,r.currentVariant=h,r.selectedProviderId=Kd(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??lf(t().activeDirectoryKey),o=yf(a),s=lf(o),c=i??Od(a??void 0)??Od(s??void 0);if(!c)return;let l=qd(c.default_agent),u=qd(c.model);e(e=>{let t=e.directoryScoped[o],n=e.activeDirectoryKey===o,i=n?e.providers:t?.providers??[],s=n?e.agents:t?.agents??[],c=t??Pf(i,s),d=c.opencodeDefaultAgent!==l||c.opencodeDefaultModel!==u||n&&(e.opencodeDefaultAgent!==l||e.opencodeDefaultModel!==u),f={...c,providers:i,agents:s,opencodeDefaultAgent:l,opencodeDefaultModel:u},p={directoryScoped:{...e.directoryScoped,[o]:f}};n&&(p.opencodeDefaultAgent=l,p.opencodeDefaultModel=u);let m=n?e.selectionSource:t?.selectionSource??`auto`;if(i.length===0||s.length===0)return d?p:e;let h=n?e.lastUserSelection:t?.lastUserSelection,g=Qd({agents:s,providers:i,settingsDefaultAgent:e.settingsDefaultAgent,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,opencodeDefaultAgent:l,opencodeDefaultModel:u,projectLastUserSelection:h,globalLastUserSelection:e.globalLastUserSelection});if(!g.agentName)return d?p:e;let _=n?e.currentAgentName:c.currentAgentName,v=n?e.currentProviderId:c.currentProviderId,y=n?e.currentModelId:c.currentModelId,b=n?e.currentVariant:c.currentVariant,x=n?e.selectedProviderId:c.selectedProviderId,S=Rf({agents:s,providers:i,currentAgentName:_,currentProviderId:v,currentModelId:y,currentVariant:b,selectionSource:m,resolvedAgentName:g.agentName,resolvedProviderId:g.providerId,resolvedModelId:g.modelId,resolvedVariant:g.variant}),C={...f,providers:i,agents:s,currentAgentName:S.agentName,...S.providerId&&S.modelId?{currentProviderId:S.providerId,currentModelId:S.modelId,currentVariant:S.variant,selectedProviderId:Kd(x,S.providerId)}:{},selectionSource:S.selectionSource},w=c.currentAgentName!==C.currentAgentName||c.currentProviderId!==C.currentProviderId||c.currentModelId!==C.currentModelId||c.currentVariant!==C.currentVariant||c.selectedProviderId!==C.selectedProviderId||(c.selectionSource??`auto`)!==C.selectionSource||n&&(e.currentAgentName!==S.agentName||e.selectionSource!==S.selectionSource||S.providerId!==void 0&&S.modelId!==void 0&&(e.currentProviderId!==S.providerId||e.currentModelId!==S.modelId||e.currentVariant!==S.variant||e.selectedProviderId!==Kd(x,S.providerId)));return!d&&!w?e:(p.directoryScoped={...e.directoryScoped,[o]:C},n&&(p.currentAgentName=S.agentName,p.selectionSource=S.selectionSource,S.providerId&&S.modelId&&(p.currentProviderId=S.providerId,p.currentModelId=S.modelId,p.currentVariant=S.variant,p.selectedProviderId=Kd(x,S.providerId))),B(`loadAgents:opencodeConfigDefaultsApplied`,{directoryKey:o,eventDirectory:a,source:r}),p)})},setSettingsDefaultModel:t=>{e({settingsDefaultModel:t})},setSettingsDefaultVariant:t=>{e({settingsDefaultVariant:t})},setSettingsDefaultAgent:t=>{e({settingsDefaultAgent:t})},setSettingsAutoCreateWorktree:t=>{e({settingsAutoCreateWorktree:t})},setSettingsGitmojiEnabled:t=>{e({settingsGitmojiEnabled:t})},setSettingsDefaultFileViewerPreview:t=>{e({settingsDefaultFileViewerPreview:t})},setSettingsZenModel:t=>{e({settingsZenModel:t})},setSettingsMessageStreamTransport:t=>{e({settingsMessageStreamTransport:t})},getResolvedGitGenerationModel:()=>{let e=t();return $d({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t}),typeof window<`u`&&localStorage.setItem(`voiceProvider`,t)},setSpeechRate:t=>{let n=Math.max(.5,Math.min(2,t));e({speechRate:n}),typeof window<`u`&&localStorage.setItem(`speechRate`,String(n))},setSpeechPitch:t=>{let n=Math.max(.5,Math.min(2,t));e({speechPitch:n}),typeof window<`u`&&localStorage.setItem(`speechPitch`,String(n))},setSpeechVolume:t=>{let n=Math.max(0,Math.min(1,t));e({speechVolume:n}),typeof window<`u`&&localStorage.setItem(`speechVolume`,String(n))},setSayVoice:t=>{e({sayVoice:t}),typeof window<`u`&&localStorage.setItem(`sayVoice`,t)},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t}),typeof window<`u`&&localStorage.setItem(`localTtsVoiceId`,String(t))},setBrowserVoice:t=>{e({browserVoice:t}),typeof window<`u`&&localStorage.setItem(`browserVoice`,t)},setOpenaiVoice:t=>{e({openaiVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiVoice`,t)},setOpenaiApiKey:t=>{e({openaiApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiApiKey`,t)},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleUrl`,t)},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleApiKey`,t)},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleVoice`,t)},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleTtsModel`,t)},setDictationEnabled:t=>{e({dictationEnabled:t}),typeof window<`u`&&localStorage.setItem(`dictationEnabled`,String(t)),ye({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),ye({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),ye({sttServerUrl:t}).catch(()=>{})},setSttApiKey:t=>{e({sttApiKey:t}),typeof window<`u`&&localStorage.setItem(`sttApiKey`,t)},setSttModel:t=>{e({sttModel:t}),typeof window<`u`&&localStorage.setItem(`sttModel`,t),ye({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),ye({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),ye({sttLanguage:t}).catch(()=>{})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t}),typeof window<`u`&&localStorage.setItem(`showMessageTTSButtons`,String(t))},setTtsInputMode:t=>{e({ttsInputMode:t}),typeof window<`u`&&localStorage.setItem(`ttsInputMode`,t)},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t}),typeof window<`u`&&localStorage.setItem(`summarizeMessageTTS`,String(t))},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t}),typeof window<`u`&&localStorage.setItem(`summarizeVoiceConversation`,String(t))},setSummarizeCharacterThreshold:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeCharacterThreshold:n}),typeof window<`u`&&localStorage.setItem(`summarizeCharacterThreshold`,String(n))},setSummarizeMaxLength:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeMaxLength:n}),typeof window<`u`&&localStorage.setItem(`summarizeMaxLength`,String(n))},probeConnection:async n=>{if(await of(n?.timeoutMs))return e({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}),!0;let r=t();return r.isConnected?!0:(e({isConnected:!1,connectionPhase:r.hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_probe_unhealthy`}),!1)},checkConnection:async()=>{B(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{B(`checkConnection:attempt`,{attempt:n+1});let r=await Fe(`checkConnection:health`,()=>z.checkHealth(),{attempt:n+1});if(!r&&n<4){let r=t().hasEverConnected;e({isConnected:!1,connectionPhase:r?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),n+=1,await rf(400*n);continue}let i=t().hasEverConnected;return e(r?{isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}:{isConnected:!1,connectionPhase:i?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),B(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await rf(400*n)}return r&&console.warn(`[ConfigStore] Failed to reach OpenCode after retrying:`,r),e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_failed`}),B(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(zf)return B(`initializeApp:deduped`),zf;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();B(`initializeApp:start`);try{if(ze(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}B(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=z.getDirectory()??Pe.getState().currentDirectory??lf(t().activeDirectoryKey),i=vf(Zo(Si.getState().projects,$.getState().availableWorktreesByProject,r??null)?.path??r??null),a=i??_f();if(!a){B(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(B(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),z.setDirectory(a),Pe.getState().setDirectory(a,{showOverlay:!1}));let o=cf(a);t().activeDirectoryKey!==o&&e({activeDirectoryKey:o}),await Promise.all([t().loadProviders({directory:a,source:`initializeApp`,forceRefresh:!0}),t().loadAgents({directory:a,source:`initializeApp`,forceRefresh:!0})]),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let s=typeof performance<`u`?performance.now():Date.now();B(`initializeApp:end`,{durationMs:Math.round(s-n),providers:t().providers.length,agents:t().agents.length})}catch(n){console.error(`Failed to initialize app:`,n),e({isInitialized:!1,isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`init_error`}),B(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{zf=null});return zf=n,n},prewarmProjectConfigs:async e=>{if(!t().isConnected)return;let n=yf(e??lf(t().activeDirectoryKey)),r=Si.getState().projects.map(e=>e.path).filter(e=>typeof e==`string`&&e.trim().length>0),i=new Set([n]),a=[];for(let e of r){let n=yf(e);if(i.has(n))continue;i.add(n);let r=t().directoryScoped[n];if((r?.providers.length||t().providers.length>0)&&(r?.agents.length||t().agents.length>0))continue;let o=lf(n);o&&a.push(o)}for(let e of a){if(await rf(xf),!t().isConnected)return;let n=yf(e),r=t().directoryScoped[n],i=[];!r?.providers.length&&t().providers.length===0&&i.push(t().loadProviders({directory:e,source:`projectConfigPrewarm`})),!r?.agents.length&&t().agents.length===0&&i.push(t().loadAgents({directory:e,source:`projectConfigPrewarm`})),i.length>0&&await Promise.allSettled(i)}},getCurrentProvider:()=>{let{providers:e,currentProviderId:n}=t();return e.find(e=>e.id===n)},getCurrentModel:()=>{let e=t().getCurrentProvider(),{currentModelId:n}=t();if(e)return e.models.find(e=>e.id===n)},getCurrentAgent:()=>{let{agents:e,currentAgentName:n}=t();if(n)return e.find(e=>e.name===n)},getModelMetadata:(e,n)=>{if(!e||!n)return;let r=t().providers.find(t=>t.id===e);if(!r)return;let i=r.models.find(e=>e.id===n);if(i)return nf(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return to(e)}}),{name:`config-store`,version:4,storage:h(),migrate:e=>If(e),merge:(e,t)=>Of({...t,...If(e)}),partialize:e=>{let t=e.directoryScoped[e.activeDirectoryKey],n=e.providers.length>0?{providers:Jd(e.providers),defaultProviders:Yd(e.defaultProviders),providerCatalogPartial:!1}:t&&t.providerCatalogPartial!==!0?{providers:Jd(t.providers),defaultProviders:Yd(t.defaultProviders),providerCatalogPartial:!1}:{providers:[],defaultProviders:{},providerCatalogPartial:!0},i=(t,r)=>{let i=jf(r?.lastUserSelection)??Mf(kf(r?.lastSelectedAgentName,!0),Af(r?.agentModelSelections))??(t===e.activeDirectoryKey?jf(e.lastUserSelection):void 0);return{...t===e.activeDirectoryKey?n:{providers:[],defaultProviders:{},providerCatalogPartial:r?.providerCatalogPartial===!0},agents:[],currentProviderId:r?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:r?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:r?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:r?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:Gd(r?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:i?.agentName??kf(r?.lastSelectedAgentName,!0),lastUserSelection:i,opencodeDefaultAgent:r?.opencodeDefaultAgent,opencodeDefaultModel:r?.opencodeDefaultModel,selectionSource:r?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},a=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,t])=>[e,i(e,t)]));e.activeDirectoryKey&&!a[e.activeDirectoryKey]&&(a[e.activeDirectoryKey]=i(e.activeDirectoryKey,void 0));let o=JSON.stringify(n);if(Df.encode(o).byteLength>Sf){let t=a[e.activeDirectoryKey];t&&(t.providers=[],t.defaultProviders={},t.providerCatalogPartial=!0)}let s=jf(e.globalLastUserSelection)??jf(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:r(),directoryScoped:a,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:Gd(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:s?.agentName??kf(e.lastSelectedAgentName,!0),lastUserSelection:jf(e.lastUserSelection)??s,globalLastUserSelection:s,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,settingsDefaultAgent:e.settingsDefaultAgent,settingsAutoCreateWorktree:e.settingsAutoCreateWorktree,settingsGitmojiEnabled:e.settingsGitmojiEnabled,settingsDefaultFileViewerPreview:e.settingsDefaultFileViewerPreview,settingsZenModel:e.settingsZenModel,settingsMessageStreamTransport:e.settingsMessageStreamTransport,speechRate:e.speechRate,speechPitch:e.speechPitch,speechVolume:e.speechVolume}}})));typeof window<`u`&&(window.__zustand_config_store__=G);var Wf=async e=>{await G.getState().loadProviders({source:e,forceRefresh:!0})},Gf=null;Gf||=kr(async e=>{let t=[];if(z.clearConfigCache(),jr(e,`agents`)){let{loadAgents:e}=G.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}jr(e,`providers`)&&t.push(Wf(`configChange:providers`)),t.length>0&&await Promise.all(t)});var Kf=null,qf=null;qf||=kd((e,t)=>{G.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!Kf&&(Kf=Pe.subscribe((e,t)=>{let n=cf(e.currentDirectory),r=cf(t.currentDirectory);n!==r&&(B(`directoryStore:changed`,{previous:r,next:n}),G.getState().activateDirectory(e.currentDirectory))}));var Jf=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Yf=e=>{let t=e.metadata;return Jf(t?.openchamber?.titleRefresh?.activityUpdatedAt)??Jf(e.time?.updated)??Jf(e.time?.created)??0},Xf=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`opencode api unavailable`,`503`,`502`];function Zf(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(Xf.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function Qf(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=Zf}=t,s;for(let t=0;t<n;t++)try{return await e()}catch(e){if(s=e,t===n-1||!o(e))throw e;let c=Math.min(r*i**+t,a);await new Promise(e=>setTimeout(e,c))}throw s}var $f=[`file`,`status`,`additions`,`deletions`],ep=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t={},n=e;return typeof n.messageID==`string`&&(t.messageID=n.messageID),typeof n.partID==`string`&&(t.partID=n.partID),Object.keys(t).length>0?t:void 0},tp=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),np=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function rp(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!np(t))return e;let n={};for(let e of $f)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function ip(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=rp(e);return n!==e&&(t=!0),n});return t?n:e}function ap(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e,n=t.summary;if(!n||typeof n!=`object`||Array.isArray(n)||!Object.prototype.hasOwnProperty.call(n,`diffs`))return e;let r=n.diffs;if(!Array.isArray(r)){let e={...n,diffCount:0,hasDiffs:!1};return delete e.diffs,{...t,summary:e}}let i=ip(r),a=i.length,o=a>0,s=n.diffCount===a&&n.hasDiffs===o;return i===r&&s?e:{...t,summary:{...n,diffs:i,diffCount:a,hasDiffs:o}}}function op(e){let t=e.revert,n=e,r=!1;if(t&&(typeof t.snapshot==`string`||typeof t.diff==`string`)){let e={...t};delete e.snapshot,delete e.diff,n={...n,revert:e},r=!0}let i=ap(r?n:e);return i===(r?n:e)?n:i}function sp(e){let t=e;if(!(tp(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=op(e),r={...n};delete r.permission;let i=ep(n.revert);i?r.revert=i:delete r.revert;let a=n.summary;if(a&&typeof a==`object`&&!Array.isArray(a)){let e={...a};delete e.diffs,delete e.diffCount,delete e.hasDiffs,r.summary=e}return r}function cp(e){return ap(e)}var lp=new Set([`smartfetch-secondary`]),up=e=>typeof e==`string`&&e.length>0,dp=e=>{let t=e.metadata;if(!t||typeof t!=`object`)return!1;let n=t.openchamber;if(!n||typeof n!=`object`)return!1;let r=n;return!!(up(r.assistant?.assistantID)||up(r.scheduledTask?.taskID)||up(r.smallModel?.purpose))},fp=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},pp=e=>!(lp.has(e.title)||fp(e)||dp(e)),mp=e=>{if(!e)return null;let t=Number(e);return Number.isFinite(t)?t:null},hp=(e,t)=>{if(!e||typeof e!=`object`)return null;let n=e.headers;if(!n||typeof n!=`object`)return null;let r=n;if(typeof r.get==`function`)return r.get(t);let i=n,a=i[t]??i[t.toLowerCase()];return typeof a==`string`?a:null},gp=e=>{if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message;try{return JSON.stringify(e)}catch{return String(e)}},_p=(e,t)=>{if(e.error){let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${gp(e.error)}`);throw n!==void 0&&(r.status=n),r}if(!Array.isArray(e.data)){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data};async function vp(e,t){let n=[],r=new Set,i=t.cursor;for(;;){let a=t.maxItems===void 0?t.pageSize:Math.max(0,t.maxItems-n.length);if(a===0)break;let o=Math.min(t.pageSize,a),{response:s,payload:c}=await Qf(async()=>{let n=t.timeoutMs===void 0?void 0:AbortSignal.timeout(t.timeoutMs),r=t.signal&&n?AbortSignal.any([t.signal,n]):t.signal??n,a=await e.experimental.session.list({...t.directory?{directory:t.directory}:{},archived:t.archived,...t.roots===void 0?{}:{roots:t.roots},...t.start===void 0?{}:{start:t.start},limit:o,...i===void 0?{}:{cursor:i}},r?{signal:r}:void 0);return{response:a.response,payload:_p(a,`experimental.session.list`).map(e=>sp(e))}},{attempts:t.retryAttempts??3,delay:500});if(c.length===0)break;let l=c.filter(pp),u=0;for(let e of l)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),u+=1);if(u>0&&t.onPage?.(l),t.maxItems!==void 0&&n.length>=t.maxItems||c.length<o)break;let d=mp(hp(s,`x-next-cursor`)),f=c[c.length-1]?.time?.updated,p=d??(typeof f==`number`&&Number.isFinite(f)?f:void 0);if(p===void 0||i!==void 0&&p>=i)break;i=p}return n}var yp=`/api/magic-prompts`,bp=new Map([{id:`git.commit.generate.visible`,title:`Commit Generation Visible Prompt`,group:`Git`,description:`Visible user message for commit message generation.`,template:`You are generating a Conventional Commits subject line from the diffs of the selected files.`},{id:`git.commit.generate.instructions`,title:`Commit Generation Instructions`,group:`Git`,description:`Hidden instructions for commit message generation.`,placeholders:[{key:`selected_files`,description:`Bullet list of currently selected file paths.`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown, explanations, or code fences.
|
|
6
|
+
`?n+=1:r===`\r`&&n+1===e.length&&(c=!0),t=n+1)}h(e.slice(t))};try{for(;;){let{done:e,value:t}=await i.read();if(e)break;g(a.decode(t,{stream:!0}))}g(a.decode()),d=!0}catch(e){throw t.signal?.aborted||vt(e)?yt(e):e instanceof Error&&e.message===`SSE response exceeds buffer limit`?e:Error(`SSE response read failed`)}finally{d||await xt(i),i.releaseLock()}},Ct=null,wt=null,Tt=null,Et=0,Dt=null,Ot=new Set,kt=new Map,At=e=>e===`session-index-changed`||e===`message-queue-changed`||e===`assistants-changed`,jt=()=>{kt.clear()},Mt=e=>kt.get(e),Nt=(e,t)=>{let n=kt.get(e);(n===void 0||t>n)&&kt.set(e,t)},Pt=3e4,Ft=45e3,It=()=>{Tt&&=(clearTimeout(Tt),null)},Lt=()=>{if(wt||Ot.size===0)return;let e=Math.min(1e3*2**Math.min(Et,5),Pt);wt=setTimeout(()=>{wt=null,Et+=1,Ut()},e)},Rt=()=>{It();let e=Ct;Ct=null,e?.controller.abort()},zt=e=>{if(It(),Ot.size===0||Ct!==e)return;let t=setTimeout(()=>{Ct===e&&Tt===t&&(Tt=null,Rt(),Lt())},Ft)},Bt=e=>{if(!e||e.trim().length===0)return null;try{let t=JSON.parse(e),n=typeof t?.type==`string`?t.type:``,r=t?.properties;return n?{type:n,properties:r}:null}catch{return null}},Vt=e=>{if(e.type===`openchamber:event-stream-ready`)return e.properties===void 0||e.properties===null||typeof e.properties==`object`&&!Array.isArray(e.properties)?{type:`event-stream-ready`}:null;if(e.type===`openchamber:heartbeat`)return null;let t=e.properties&&typeof e.properties==`object`&&!Array.isArray(e.properties)?e.properties:null;if(e.type===`openchamber:worktree-topology-changed`){let e=typeof t?.projectDirectory==`string`?t.projectDirectory.trim():``,n=typeof t?.directory==`string`?t.directory.trim():``,r=t?.operation,i=t?.occurredAt;return!e||!n||r!==`added`&&r!==`removed`||typeof i!=`number`||!Number.isFinite(i)?null:{type:`worktree-topology-changed`,projectDirectory:e,directory:n,operation:r,occurredAt:i}}if(e.type===`openchamber:worktree-bootstrap-status`){let e=typeof t?.directory==`string`?t.directory.trim():``,n=t?.status,r=t?.updatedAt,i=typeof t?.error==`string`&&t.error.trim().length>0?t.error.trim():null;return!e||n!==`pending`&&n!==`ready`&&n!==`failed`||typeof r!=`number`||!Number.isFinite(r)?null:{type:`worktree-bootstrap-status`,directory:e,status:n,error:i,updatedAt:r}}if(e.type===`openchamber:session-index-changed`){let e=t?.revision,n=t?.occurredAt;if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n))return null;let r=t?.sync&&typeof t.sync==`object`&&!Array.isArray(t.sync)?t.sync:null;return{type:`session-index-changed`,revision:e,occurredAt:n,...r?{sync:{active:r.active===!0,enriching:r.enriching===!0}}:{}}}if(e.type===`openchamber:message-queue-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`message-queue-changed`,revision:e,occurredAt:n}}if(e.type===`openchamber:assistants-changed`){let e=t?.revision,n=t?.occurredAt;return typeof e!=`number`||!Number.isSafeInteger(e)||e<0||typeof n!=`number`||!Number.isFinite(n)?null:{type:`assistants-changed`,revision:e,occurredAt:n}}if(e.type!==`openchamber:scheduled-task-ran`)return null;let n=typeof t?.projectId==`string`?t.projectId:``,r=typeof t?.taskId==`string`?t.taskId:``,i=typeof t?.ranAt==`number`?t.ranAt:Date.now(),a=t?.status;return!n||!r?null:{type:`scheduled-task-ran`,projectId:n,taskId:r,ranAt:i,status:a===`running`||a===`error`?a:`success`,...typeof t?.sessionId==`string`&&t.sessionId.length>0?{sessionId:t.sessionId}:{}}},Ht=e=>{let t=Vt(e);if(t){t.type===`event-stream-ready`&&(Et=0),At(t.type)&&`revision`in t&&Nt(t.type,t.revision);for(let e of Ot)try{e(t)}catch{}}},Ut=()=>{if(typeof window>`u`||Ot.size===0||Ct)return;let e={controller:new AbortController};Ct=e,St(`/api/openchamber/events`,{signal:e.controller.signal,onOpen:()=>{Ct===e&&zt(e)},onActivity:()=>{Ct===e&&zt(e)},onMessage:t=>{if(Ct!==e)return;let n=Bt(t);n&&Ht(n)}}).then(()=>{Ct===e&&(Ct=null,It(),Lt())},()=>{Ct===e&&(Ct=null,It(),e.controller.signal.aborted||Lt())})},Wt=()=>{Dt||typeof window>`u`||(Dt=d(()=>{jt(),wt&&=(clearTimeout(wt),null),Rt(),Et=0,Ut()}))},Gt=()=>{Dt?.(),Dt=null},Kt=e=>(Ot.add(e),Wt(),Ut(),()=>{Ot.delete(e),Ot.size===0&&(jt(),wt&&=(clearTimeout(wt),null),Et=0,Rt(),Gt())}),qt=!1,Jt=Promise.resolve(),Yt=null,Xt=()=>{qt||(qt=!0,Jt=new Promise(e=>{Yt=e}))},Zt=async()=>Jt,Qt=()=>{if(!qt)return;qt=!1;let e=Yt;Yt=null,e?.()},$t=`openchamber_input_draft_metadata_v1`,en=`openchamber_input_draft_metadata_migration_v1`,tn=`openchamber_chat_input_draft_`,nn=`openchamber_chat_confirmed_mentions_`,rn=()=>({ok:!1,error:{code:`unavailable`}}),an=()=>({ok:!1,error:{code:`cancelled`}}),on=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),sn=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),cn=(e,t)=>Object.keys(e).every(e=>t.includes(e)),ln=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,un=e=>typeof e==`string`&&e.length>0,dn=e=>({read:async t=>{if(!e)return rn();try{return{ok:!0,value:e.getItem(t)}}catch(e){return on(e)}},write:async(t,n)=>{if(!e)return rn();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return on(e)}},remove:async t=>{if(!e)return rn();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return on(e)}},keys:async()=>{if(!e)return rn();try{let t=[];for(let n=0;n<e.length;n+=1){let r=e.key(n);r!==null&&t.push(r)}return{ok:!0,value:t}}catch(e){return on(e)}}}),fn=()=>{try{return dn(typeof window>`u`?null:window.localStorage)}catch{return dn(null)}},pn=(e,t,n,r)=>{let i=[];try{let e=n===null?[]:JSON.parse(n);Array.isArray(e)&&(i=e.filter(e=>typeof e==`string`))}catch{}return{suffix:e,text:t??``,mentions:i,keys:r}},mn=async e=>{let t=await e.keys();if(!t.ok)return t;let n=new Set;for(let e of t.value)e.startsWith(tn)&&n.add(e.slice(29)),e.startsWith(nn)&&n.add(e.slice(36));let r=[];for(let i of n){let n=`${tn}${i}`,a=`${nn}${i}`,[o,s]=await Promise.all([e.read(n),e.read(a)]);if(!o.ok)return o;if(!s.ok)return s;r.push(pn(i,o.value,s.value,[n,a].filter(e=>t.value.includes(e))))}return{ok:!0,value:r}},hn=e=>{if(!(!sn(e)||!cn(e,[`suffix`,`text`,`mentions`,`keys`])||typeof e.suffix!=`string`||typeof e.text!=`string`||!Array.isArray(e.mentions)||!e.mentions.every(e=>typeof e==`string`)||!Array.isArray(e.keys)||!e.keys.every(e=>typeof e==`string`)))return{suffix:e.suffix,text:e.text,mentions:[...e.mentions],keys:[...e.keys]}},gn=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&un(t[0])&&(t[1]===`session`||t[1]===`draft`)&&un(t[2])&&e===JSON.stringify(t)}catch{return!1}},_n=e=>{if(!sn(e)||!cn(e,[`complete`,`claimedTransportIdentity`,`captured`,`markerCommitted`,`cleanupComplete`])||typeof e.complete!=`boolean`||typeof e.claimedTransportIdentity!=`string`||e.captured!==void 0&&typeof e.captured!=`boolean`||e.markerCommitted!==void 0&&typeof e.markerCommitted!=`boolean`||e.cleanupComplete!==void 0&&typeof e.cleanupComplete!=`boolean`)return;let t=e.cleanupComplete??e.complete,n=e.captured??e.complete,r=e.markerCommitted??e.complete;if(!((n||r||t)&&!un(e.claimedTransportIdentity))&&!(r&&!n)&&!(t&&(!n||!r)))return{complete:t,claimedTransportIdentity:e.claimedTransportIdentity,captured:n,markerCommitted:r,cleanupComplete:t}},vn=e=>{if(!sn(e)||!cn(e,[`version`,`drafts`,`tombstones`,`migration`,`legacy`])||e.version!==1||!sn(e.drafts)||!sn(e.tombstones)||!sn(e.legacy)||!cn(e.legacy,[`new`,`entries`])||!sn(e.legacy.entries))return;let t=_n(e.migration);if(!t)return;let n={};for(let[t,r]of Object.entries(e.drafts)){let e=w(r);if(!e||t!==R(e.key))return;n[t]=e}let r={};for(let[t,n]of Object.entries(e.tombstones)){if(!gn(t)||!ln(n))return;r[t]=n}let i={};for(let[t,n]of Object.entries(e.legacy.entries)){let e=hn(n);if(!e||t!==e.suffix||t===`new`)return;i[t]=e}let a=e.legacy.new===void 0?void 0:hn(e.legacy.new);if(!(e.legacy.new!==void 0&&(!a||a.suffix!==`new`)))return{version:1,drafts:n,tombstones:r,migration:t,legacy:{...a?{new:a}:{},entries:i}}},yn=(e=``)=>({version:1,drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:e,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),bn=e=>{try{return{ok:!0,value:JSON.stringify(e)}}catch{return{ok:!1,error:{code:`serialization`}}}},xn=async e=>{let t=await e.read($t);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:null};try{let e=vn(JSON.parse(t.value));return e?{ok:!0,value:e}:{ok:!1,error:{code:`corrupt`}}}catch{return{ok:!1,error:{code:`corrupt`}}}},Sn=async(e,t)=>{let n=vn(t);if(!n)return{ok:!1,error:{code:`corrupt`}};let r=bn(n);return r.ok?e.write($t,r.value):r},Cn=e=>sn(e)&&cn(e,[`version`,`claimedTransportIdentity`])&&e.version===1&&un(e.claimedTransportIdentity)?{version:1,claimedTransportIdentity:e.claimedTransportIdentity}:void 0,wn=e=>bn({version:1,claimedTransportIdentity:e}),Tn=(e,t,n)=>{let r={},i;for(let e of t)e.suffix===`new`?i=e:r[e.suffix]=e;return{...e,migration:{complete:!1,claimedTransportIdentity:n,captured:!0,markerCommitted:!1,cleanupComplete:!1},legacy:{...i?{new:i}:{},entries:r}}},En=e=>[...new Set([e.legacy.new,...Object.values(e.legacy.entries)].flatMap(e=>e?.keys??[]))],Dn=new WeakMap,On=e=>{let t=Dn.get(e);if(t)return t;let n=Promise.resolve(),r,i=!0,a=e=>{let t=n.then(e,e);return n=t.then(()=>void 0,()=>void 0),t},o={persist:t=>{let n=vn(t);return n?i?a(async()=>i?Sn(e,n):rn()):Promise.resolve(rn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},migrate:(t,n={})=>{if(r)return r;let o=a(async()=>{let r=await xn(e);if(!r.ok)return r;let a=r.value??yn(),o=i&&(n.persistenceEnabled??!0);if(!a.migration.captured){let n=await mn(e);if(!n.ok)return n;if(!o)return{ok:!0,value:Tn(a,n.value,``)};if(a=Tn(a,n.value,t),!i)return{ok:!0,value:a};let r=await Sn(e,a);if(!r.ok)return r}if(!i||!(n.persistenceEnabled??!0)){let t=await mn(e);return t.ok?{ok:!0,value:a}:t}let s=await e.read(en);if(!s.ok)return s;if(s.value!==null)try{let t=Cn(JSON.parse(s.value));if(!t)return{ok:!1,error:{code:`corrupt`}};if(t.claimedTransportIdentity!==a.migration.claimedTransportIdentity){let t=wn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(en,t.value);if(!n.ok)return n}}catch{return{ok:!1,error:{code:`corrupt`}}}else{let t=wn(a.migration.claimedTransportIdentity);if(!t.ok)return t;if(!i)return{ok:!0,value:a};let n=await e.write(en,t.value);if(!n.ok)return n}if(a.migration.cleanupComplete)return{ok:!0,value:a};for(let t of En(a)){if(!i)return{ok:!0,value:a};let n=await e.remove(t);if(!n.ok)return n}if(a={...a,migration:{complete:!0,claimedTransportIdentity:a.migration.claimedTransportIdentity,captured:!0,markerCommitted:!0,cleanupComplete:!0}},!i)return{ok:!0,value:a};let c=await Sn(e,a);return c.ok?{ok:!0,value:a}:c}).finally(()=>{r=void 0});return r=o,o},flush:()=>n,setEnabled:async e=>{i=e,i||await n}};return Dn.set(e,o),o},kn=e=>{let t=On(e),n=!0,r=!1,i=[],a=[],o=()=>{if(r||i.length>0)return;let e=a;a=[],e.forEach(e=>e())},s=()=>{if(r)return;let e=i.shift();if(!e){o();return}r=!0,t.persist(e.snapshot).then(e.resolve).finally(()=>{r=!1,s()})};return{persist:e=>{let t=vn(e);return t?n?new Promise(e=>{i.push({snapshot:t,resolve:e}),s()}):Promise.resolve(rn()):Promise.resolve({ok:!1,error:{code:`corrupt`}})},cancelPending:()=>{let e=i;i=[],e.forEach(({resolve:e})=>e(an())),o()},flush:()=>r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve(),setEnabled:async e=>{if(n=e,!n){let e=i;i=[],e.forEach(({resolve:e})=>e(an()))}await(r||i.length>0?new Promise(e=>a.push(e)):Promise.resolve()),await t.setEnabled(e),await t.flush()}}},An=`openchamber-input-drafts`,jn=1,Mn=`blobs`,Nn=`blobRefs`,Pn=class extends Error{code;constructor(e){super(e),this.code=e}},Fn=e=>({ok:!1,error:{code:e instanceof Pn?e.code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota-exceeded`:e instanceof DOMException&&e.name===`AbortError`?`transaction-aborted`:`transaction-failed`}}),In=e=>{if(!(e instanceof Blob)&&!ie(e))throw new Pn(`invalid-value`)},Ln=e=>{if(!e)throw new Pn(`invalid-value`)},Rn=(e,t)=>({id:Se(e),blobID:t,transportIdentity:e.transportIdentity,ownerKind:e.owner.kind,ownerID:e.owner.ownerID}),zn=async e=>{if(typeof e==`string`)return`url:${e}`;let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()),n=[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`blob:${e.type}:${e.size}:${n}`},Bn=async(e,t)=>(e.fingerprint??await zn(e.value))===t,Vn=async(e,t=!1)=>{let n=await e.getAllBlobRefs(),r=await e.getAllBlobs(),i=new Map;for(let t of n)await e.getBlob(t.blobID)?i.set(t.blobID,(i.get(t.blobID)??0)+1):await e.deleteBlobRef(t.id);for(let n of r){let r=i.get(n.id)??0;r||!t?await e.putBlob({...n,refCount:r}):await e.deleteBlob(n.id)}},Hn=e=>{try{let t=JSON.parse(e);return!Array.isArray(t)||t.length!==4||typeof t[0]!=`string`||typeof t[2]!=`string`||t[1]!==`session`&&t[1]!==`draft`&&t[1]!==`surface`&&t[1]!==`queue`&&t[1]!==`send`?void 0:{transportIdentity:t[0],ownerKind:t[1],ownerID:t[2]}}catch{return}},Un=(e,t)=>{let n=Hn(e.id),r=e.ownerKind??n?.ownerKind,i=e.transportIdentity??n?.transportIdentity;return r!==void 0&&t.ownerKinds.includes(r)&&(t.transportIdentities===void 0||i!==void 0&&t.transportIdentities.includes(i))},Wn=(e=Gn())=>{let t=async(t,n)=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));return!r||n!==void 0&&r.blobID!==n?!1:(await e.deleteBlobRef(r.id),await Vn(e),(await e.getAllBlobRefs()).some(e=>e.blobID===r.blobID)||await e.deleteBlob(r.blobID),!0)})}}catch(e){return Fn(e)}};return{put:async(t,n)=>{try{Ln(t),In(n);let r=await zn(n);return await e.transaction(async e=>{let i=await e.getBlob(t);if(i&&!await Bn(i,r))throw new Pn(`blob-id-conflict`);i||await e.putBlob({id:t,value:n,refCount:0,fingerprint:r})}),{ok:!0,value:void 0}}catch(e){return Fn(e)}},putAndRetain:async(t,n,r)=>{try{Ln(n),In(r);let i=await zn(r);return await e.transaction(async e=>{let a=Se(t),o=await e.getBlobRef(a);if(o&&o.blobID!==n)throw new Pn(`blob-id-conflict`);let s=await e.getBlob(n);if(s&&!await Bn(s,i))throw new Pn(`blob-id-conflict`);s||await e.putBlob({id:n,value:r,refCount:0,fingerprint:i}),o||await e.putBlobRef(Rn(t,n)),await Vn(e)}),{ok:!0,value:void 0}}catch(e){return Fn(e)}},read:async t=>{try{let n=await e.transaction(e=>e.getBlob(t));return n?{ok:!0,value:n.value}:{ok:!1,error:{code:`missing-blob`}}}catch(e){return Fn(e)}},readReference:async t=>{try{return{ok:!0,value:(await e.transaction(e=>e.getBlobRef(Se(t))))?.blobID}}catch(e){return Fn(e)}},retain:async(t,n)=>{try{return Ln(n),await e.transaction(async e=>{let r=await e.getBlobRef(Se(t));if(r&&r.blobID!==n)throw new Pn(`blob-id-conflict`);if(!await e.getBlob(n))throw new Pn(`missing-blob`);r||await e.putBlobRef(Rn(t,n)),await Vn(e)}),{ok:!0,value:void 0}}catch(e){return Fn(e)}},release:e=>t(e),releaseIfMatches:(e,n)=>t(e,n),reconcileReferences:async(t,n={ownerKinds:[`session`,`draft`]})=>{try{return{ok:!0,value:await e.transaction(async e=>{let r=[],i=[],a=[],o=new Map((await e.getAllBlobRefs()).map(e=>[e.id,e]));for(let[i,a]of o)Un(a,n)&&t.get(i)!==a.blobID&&(await e.deleteBlobRef(i),r.push(i));for(let[r,s]of t){let t=Hn(r);if(!t||!n.ownerKinds.includes(t.ownerKind)||n.transportIdentities!==void 0&&!n.transportIdentities.includes(t.transportIdentity)){a.push(r);continue}let c=o.get(r);if(!await e.getBlob(s)){a.push(r);continue}(!c||c.blobID!==s)&&(await e.putBlobRef({id:r,blobID:s,...t}),i.push(r))}return await Vn(e,!0),{released:r,repaired:i,missing:a}})}}catch(e){return Fn(e)}},reconcileOwnerReferences:async(t,n)=>{let r=new Map;for(let[e,i]of n)r.set(Se({transportIdentity:t.transportIdentity,owner:t.owner,attachmentOccurrenceRefID:e}),i);try{return{ok:!0,value:await e.transaction(async e=>{let n=0,i=new Set;for(let a of await e.getAllBlobRefs())a.transportIdentity===t.transportIdentity&&a.ownerKind===t.owner.kind&&a.ownerID===t.owner.ownerID&&r.get(a.id)!==a.blobID&&(await e.deleteBlobRef(a.id),i.add(a.blobID),n++);await Vn(e);let a=await e.getAllBlobRefs();for(let t of i)a.some(e=>e.blobID===t)||await e.deleteBlob(t);return n})}}catch(e){return Fn(e)}},discardUnreferenced:async t=>{try{return{ok:!0,value:await e.transaction(async e=>!await e.getBlob(t)||(await e.getAllBlobRefs()).some(e=>e.blobID===t)?!1:(await e.deleteBlob(t),!0))}}catch(e){return Fn(e)}}}},Gn=()=>({transaction:async e=>{let t=await Kn(),n=t.transaction([Mn,Nn],`readwrite`),r=n.objectStore(Mn),i=n.objectStore(Nn),a=e=>new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error??n.error??Error(`IndexedDB request failed`))}),o=new Promise((e,t)=>{n.oncomplete=()=>e(),n.onabort=()=>t(n.error??new DOMException(`aborted`,`AbortError`)),n.onerror=()=>{console.error(`Input draft IndexedDB transaction error`,n.error)}}),s;try{let t=await e({getBlob:e=>a(r.get(e)),getAllBlobs:()=>a(r.getAll()),putBlob:async e=>{await a(r.put(e))},deleteBlob:async e=>{await a(r.delete(e))},getBlobRef:e=>a(i.get(e)),getAllBlobRefs:()=>a(i.getAll()),putBlobRef:async e=>{await a(i.put(e))},deleteBlobRef:async e=>{await a(i.delete(e))}});return await o,t}catch(e){s=e;try{n.abort()}catch{}try{await o}catch(e){s===void 0&&(s=e)}throw s}finally{t.close()}}}),Kn=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(new Pn(`database-unavailable`));return}let n=indexedDB.open(An,jn),r=!1,i=()=>{r||(r=!0,t(new Pn(`database-unavailable`)))};n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(Mn)||e.createObjectStore(Mn,{keyPath:`id`}),e.objectStoreNames.contains(Nn)||e.createObjectStore(Nn,{keyPath:`id`})},n.onsuccess=()=>{let t=n.result;if(t.onversionchange=()=>t.close(),r){t.close();return}r=!0,e(t)},n.onerror=i,n.onblocked=i}),qn=()=>({drafts:{},tombstones:{},migration:{complete:!1,claimedTransportIdentity:``,captured:!1,markerCommitted:!1,cleanupComplete:!1},legacy:{entries:{}}}),Jn=e=>({version:1,drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}),Yn=e=>{let t=Jn(e),n=Xn(JSON.parse(JSON.stringify(t)));return{drafts:n.drafts,tombstones:n.tombstones,migration:n.migration,legacy:n.legacy}},Xn=e=>{let t=vn(e);if(!t)throw Error(`invalid draft snapshot`);return t},Zn=e=>e instanceof Map?[...e.entries()]:Object.entries(e??{}),Qn=e=>typeof e==`string`?e:R(e),$n=[`session`,`draft`,`surface`],er=e=>({transportIdentity:e.transportIdentity,owner:{kind:e.owner.kind,ownerID:e.owner.ownerID},attachmentOccurrenceRefID:e.attachmentOccurrenceRefID}),tr=e=>JSON.parse(JSON.stringify(e)),nr=e=>e.phase===`metadata`?{phase:`metadata`,error:{code:e.error.code}}:{phase:`blob`,error:{...e.error},...e.reference?{reference:er(e.reference)}:{}},rr=e=>({status:e.status,keys:[...e.keys],errors:e.errors.map(nr),cleanupErrors:e.cleanupErrors.map(nr)}),ir=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,ar=e=>{try{let t=JSON.parse(e);return Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&$n.includes(t[1])&&typeof t[2]==`string`&&t[0].length>0&&t[2].length>0}catch{return!1}},or=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)].flatMap(t=>t.locator.kind===`blob`?[{reference:{transportIdentity:e.key.transportIdentity,owner:{kind:e.key.owner.kind,ownerID:e.key.owner.ownerID},attachmentOccurrenceRefID:t.attachmentRefID},attachment:tr(t)}]:[]),sr=e=>{let t=new Map;for(let n of Object.values(e))for(let e of or(n))t.set(Se(e.reference),e);return t},cr=(e,t)=>({phase:`blob`,error:{...e},...t?{reference:er(t)}:{}}),lr=(e,t=[])=>({status:e,keys:t,errors:[],cleanupErrors:[]}),ur=e=>e?.attachment.locator.kind===`blob`?e.attachment.locator.blobID:``,dr=(e,t,n={})=>{let r=qn(),i=n.enabled??!0,a=0,o=!1,s=Promise.resolve(),c=new Map,l=e=>{let t=s.then(e,e);return s=t.then(()=>void 0,()=>void 0),t.then(e=>e&&typeof e==`object`&&`status`in e&&`keys`in e&&`errors`in e&&`cleanupErrors`in e?rr(e):e)},u=async(t=r.drafts)=>{let n=[],i=new Map([...sr(t)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``]));for(let[t,r]of c){if(i.get(t)===r.expectedBlobID){c.delete(t);continue}let a=await e.releaseIfMatches(er(r.reference),r.expectedBlobID);a.ok?c.delete(t):n.push(cr(a.error,r.reference))}return n},d=async(t,n,r,i)=>{let o=er(t),s=await e.releaseIfMatches(o,n);s.ok||(c.set(Se(o),{reference:er(o),expectedBlobID:n,generation:a,reason:i}),r.push(cr(s.error,o)))},f=async(t,n)=>{let r=t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,i=er(t.reference),a=tr(t.attachment),o=await e.readReference(i);if(!o.ok)return{acquired:!1,error:cr(o.error,i)};if(o.value&&o.value!==r)return{acquired:!1,error:cr({code:`reference-conflict`},i)};if(o.value===r){let t=await e.read(r);if(t.ok)return{acquired:!1};if(t.error.code!==`missing-blob`)return{acquired:!1,error:cr(t.error,i)};let o=await n?.(er(i),tr(a));if(o===void 0)return{acquired:!1,error:cr({code:`runtime-value-missing`},i)};let s=await e.putAndRetain(i,r,o);return s.ok?{acquired:!0}:{acquired:!1,error:cr(s.error,i)}}let s=await e.read(r);if(s.ok){let t=await e.retain(i,r);return t.ok?{acquired:!0}:{acquired:!1,error:cr(t.error,i)}}if(s.error.code!==`missing-blob`)return{acquired:!1,error:cr(s.error,i)};let c=await n?.(er(i),tr(a));if(c===void 0)return{acquired:!1,error:cr({code:`runtime-value-missing`},i)};let l=await e.putAndRetain(i,r,c);return l.ok?{acquired:!0}:{acquired:!1,error:cr(l.error,i)}};return{seed:t=>l(async()=>{if(!i)return lr(`disabled`);if(o)return{...lr(`failed`),errors:[cr({code:`invalid-record`})]};let n;try{if(!t)n=qn();else{let e=Xn(JSON.parse(JSON.stringify(t)));n={drafts:e.drafts,tombstones:e.tombstones,migration:e.migration,legacy:e.legacy}}}catch{return{...lr(`failed`),errors:[cr({code:`invalid-record`})]}}let a=sr(n.drafts),s=await e.reconcileReferences(new Map([...a].map(([e,t])=>[e,ur(t)])),{ownerKinds:$n});return s.ok?(r=n,o=!0,{...lr(`committed`),errors:s.value.missing.map(e=>cr({code:`missing-blob`},a.get(e)?.reference))}):{...lr(`failed`),errors:[cr(s.error)]}}),commit:e=>{let n=[...Zn(e.drafts).map(([e])=>e),...(e.delete??[]).map(Qn)];return i?l(async()=>{if(!o)return lr(`unseeded`,n);if(!i)return lr(`disabled`,n);let s=a,c=[],l=Yn(r),p=Zn(e.drafts),m=Zn(e.tombstones),h=(e.delete??[]).map(Qn);if(p.some(([e,t])=>!ar(e)||!ir(t.revision))||m.some(([e,t])=>!ar(e)||!ir(t))||h.some(e=>!ar(e))||new Set(p.map(([e])=>e)).size!==p.length||m.some(([e])=>p.some(([t])=>t===e)))return{...lr(`failed`,n),errors:[cr({code:`invalid-record`})]};try{for(let[e,t]of p){let n=w(t);if(!n||e!==R(n.key))throw Error(`invalid draft record`);l.drafts[e]=n,delete l.tombstones[e]}for(let e of h)delete l.drafts[e];for(let[e,t]of m)l.tombstones[e]=t;e.migration&&(l.migration=e.migration),e.legacy&&(l.legacy=e.legacy);let t=Xn(Jn(l));l.drafts=t.drafts,l.tombstones=t.tombstones,l.migration=t.migration,l.legacy=t.legacy}catch{return{...lr(`failed`,n),errors:[cr({code:`invalid-record`})],cleanupErrors:c}}if(!await e.isCurrent())return lr(`stale`,n);let g=sr(r.drafts),_=sr(l.drafts);c=await u(l.drafts);let v=[];for(let[t,r]of _){let i=g.get(t);if((i?.attachment.locator.kind===`blob`?i.attachment.locator.blobID:void 0)===(r.attachment.locator.kind===`blob`?r.attachment.locator.blobID:void 0))continue;let a=await f(r,e.resolveBlobValue);if(a.error){for(let e of v.reverse())await d(e,ur(_.get(Se(e))),c,`acquire-failed`);return{...lr(`failed`,n),errors:[a.error],cleanupErrors:c}}a.acquired&&v.push(r.reference)}if(!await e.isCurrent()){for(let e of v.reverse())await d(e,ur(_.get(Se(e))),c,`stale`);return{...lr(`stale`,n),cleanupErrors:c}}if(!i||s!==a){for(let e of v.reverse())await d(e,ur(_.get(Se(e))),c,`disabled`);return{...lr(`disabled`,n),cleanupErrors:c}}let y=await t.persist(Jn(l));if(!y.ok){for(let e of v.reverse())await d(e,ur(_.get(Se(e))),c,`metadata-failed`);return{...lr(`failed`,n),errors:[{phase:`metadata`,error:y.error}],cleanupErrors:c}}r=l;for(let[e,t]of g)_.has(e)||await d(t.reference,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``,c,`metadata-committed`);return{...lr(`committed`,n),cleanupErrors:c}}):Promise.resolve(rr(lr(`disabled`,n)))},reconcile:()=>l(async()=>{if(!o)return lr(`unseeded`);if(!i)return lr(`disabled`);let t=await u(),n=new Map([...sr(r.drafts)].map(([e,t])=>[e,t.attachment.locator.kind===`blob`?t.attachment.locator.blobID:``])),a=await e.reconcileReferences(n,{ownerKinds:$n}),s=a.ok?a.value.missing.map(e=>cr({code:`missing-blob`},sr(r.drafts).get(e)?.reference)):[cr(a.error)];return{status:a.ok?`committed`:`failed`,keys:[],errors:s,cleanupErrors:t}}),retryCleanup:()=>l(async()=>({...lr(`committed`),cleanupErrors:await u()})),flush:()=>s,setEnabled:async e=>{if(!e){i=!1,a+=1,t.cancelPending?.(),await t.setEnabled?.(!1),await s,await t.flush?.();return}await t.setEnabled?.(!0),i=!0,a+=1}}},fr=`openchamber-composer-reference-draft`,pr=`openchamber-pasted-text-draft`,mr=e=>Array.from(e).length,hr=e=>typeof e==`object`&&!!e&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),gr=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,_r=(e,t)=>{let n=[],r=[],i=0;for(let a=0;a<Math.min(t.length,P.referenceCount);a+=1){let o=t[a];if(!(!hr(o)||!gr(o.id,P.idLength)||!gr(o.token,P.displayLength)||typeof o.text!=`string`||o.text.length>P.pastePayloadLength||typeof o.characterCount!=`number`||!Number.isSafeInteger(o.characterCount)||o.characterCount!==mr(o.text)||typeof o.index!=`number`||!Number.isSafeInteger(o.index)||o.index<1))for(let t=e.indexOf(o.token);t>=0&&n.length<P.referenceCount;t=e.indexOf(o.token,t+o.token.length)){let e=t+o.token.length;if(r.some(n=>n.start<e&&n.end>t)||i+o.text.length>P.totalPastePayloadLength)continue;let a=n.filter(e=>e.id.startsWith(`${o.id}:`)).length;n.push({id:`${o.id}:${a}`,kind:`paste`,start:t,end:e,display:o.token,text:o.text,characterCount:o.characterCount,index:o.index}),r.push({start:t,end:e}),i+=o.text.length}}return n.sort((e,t)=>e.start-t.start)},vr=e=>{try{let t=JSON.parse(e);if(!hr(t)||typeof t.text!=`string`)return{text:e,references:[]};if(t.type===fr)return(t.version===2?we(t.text,t.references):void 0)??{text:t.text,references:[]};if(t.type===pr){let e=t.version===1&&Array.isArray(t.references)?_r(t.text,t.references):[];return we(t.text,e)??{text:t.text,references:[]}}}catch{}return{text:e,references:[]}},yr=`file://`,br=e=>{let t=e.replace(/\\/g,`/`);return/^[A-Za-z]:/.test(t)&&(t=`/${t}`),t.split(`/`).map((e,t)=>t===1&&/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`)},xr=e=>{let t=e.replace(/\\/g,`/`).trim();return t.toLowerCase().startsWith(yr)?t:`${yr}${br(t)}`},Sr=(e,t)=>`${e}\u0000${t}`,Cr=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Failed to read file`)),r.onabort=()=>n(Error(`File read aborted`)),r.readAsDataURL(e)}),wr=e=>{if(!e.startsWith(`data:`))return 0;let t=e.indexOf(`,`);if(t<0)return 0;let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1);if(!n.endsWith(`;base64`))return 0;let i=0;return r.endsWith(`==`)?i=2:r.endsWith(`=`)&&(i=1),Math.max(0,Math.floor(r.length*3/4)-i)},Tr=(e,t)=>e===t?!0:!e||!t?!1:e.filePath===t.filePath&&e.fileName===t.fileName&&e.relativePath===t.relativePath&&e.fileSize===t.fileSize&&e.selection?.startLine===t.selection?.startLine&&e.selection?.endLine===t.selection?.endLine&&e.selection?.text===t.selection?.text,Er=e=>({version:1,key:e,revision:1,text:``,attachments:[],syntheticParts:[],mentions:[]}),Dr=(e,t)=>t.flatMap(t=>{let n=`@${t}`,r=[],i=e.indexOf(n);for(;i>=0;)r.push({kind:`file`,value:t,path:t,label:t,range:{start:i,end:i+n.length}}),i=e.indexOf(n,i+n.length);return r}),Or=((e={})=>{let t=e.sink??fn(),n=e.repository??On(t),i=e.coordinator??kn(t),a=e.blobStore??Wn(),o=e.durability??dr(a,i,{enabled:e.persistenceEnabled??!0}),c=new Map,l=new Map,u=new Map,d=new Map,f=new Map,p=new Set,m=new Set,h,g,_=0,v=0,y=!1,b=!1,x,S=new Set,C=new Map,T=new Set;return Oe()((t,i)=>{let E=e=>c.set(e,(c.get(e)??0)+1),D=(...e)=>{for(let t of e)u.set(t,(u.get(t)??0)+1),d.delete(t)},O=e=>w(e),k=()=>e.runtimeCapture?.()??{transportIdentity:r(),generation:s()},A=e=>{let t=k();return t.transportIdentity===e.transportIdentity&&t.generation===e.generation},j=e=>[...e.attachments,...e.syntheticParts.flatMap(e=>e.attachments)],ee=e=>new Set(j(e).map(e=>e.attachmentRefID)),te=(e,t,n)=>{let r=ee(n);return{draftAttachmentViews:{...e.draftAttachmentViews,[t]:Object.fromEntries(Object.entries(e.draftAttachmentViews[t]??{}).filter(([e])=>r.has(e)))},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[t]:(e.draftMissingAttachmentRefIDs[t]??[]).filter(e=>r.has(e))}}},M=()=>e.createID?.()??fe(),ne=async(e,t)=>{let n=t instanceof File?t:new File([t],e.filename,{type:e.mimeType});return{id:e.attachmentID,file:n,dataUrl:typeof t==`string`?t:await Cr(n),mimeType:e.mimeType,filename:e.filename,size:e.size,source:e.source,...e.serverPath?{serverPath:e.serverPath}:{},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource?{vscodeSource:e.vscodeSource}:{}}},re=e=>{let t=e.errors[0]??e.cleanupErrors[0];return t?.phase===`metadata`||t?.phase===`blob`&&[`blob-id-conflict`,`database-unavailable`,`invalid-value`,`missing-blob`,`quota-exceeded`,`transaction-aborted`,`transaction-failed`].includes(t.error.code)?t.error.code:`unavailable`},ae=(e,n)=>{let r=i(),a=_,s=n??k(),l=[...new Set(e)];if(l.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),!r.persistenceEnabled)return l.forEach(e=>S.add(e)),Promise.resolve({status:`disabled`,keys:l,errors:[],cleanupErrors:[]});let u=new Map(l.map(e=>[e,c.get(e)??0])),d=new Map(l.map(e=>[e,r.drafts[e]?.revision??r.tombstones[e]??0])),f=l.filter(e=>r.drafts[e]),v=Object.fromEntries(f.map(e=>[e,r.draftPersistence[e]?.status===`error`?r.draftPersistence[e]:{status:`saving`,revision:d.get(e)}])),y=Object.fromEntries(f.map(e=>[e,r.draftAttachmentPersistence[e]?.status===`error`?r.draftAttachmentPersistence[e]:{status:`saving`,revision:d.get(e)}]));t(e=>({draftPersistence:{...e.draftPersistence,...v},draftAttachmentPersistence:{...e.draftAttachmentPersistence,...y}})),b||l.forEach(e=>S.add(e));let x=(async()=>{let e=i(),n=await o.commit({drafts:Object.fromEntries(l.flatMap(t=>e.drafts[t]?[[t,e.drafts[t]]]:[])),tombstones:Object.fromEntries(l.flatMap(t=>e.tombstones[t]?[[t,e.tombstones[t]]]:[])),delete:l.filter(t=>!e.drafts[t]),migration:e.migration,legacy:{...e.legacyNewDraft?{new:e.legacyNewDraft}:{},entries:e.legacyDraftEntries},resolveBlobValue:t=>{for(let[n,r]of Object.entries(e.drafts))if(r.key.transportIdentity===t.transportIdentity&&r.key.owner.kind===t.owner.kind&&r.key.owner.ownerID===t.owner.ownerID)return e.draftAttachmentViews[n]?.[t.attachmentOccurrenceRefID]?.file},isCurrent:()=>_===a&&i().persistenceEnabled&&A(s)&&l.every(e=>(c.get(e)??0)===u.get(e)&&(i().drafts[e]?.revision??i().tombstones[e]??0)===d.get(e))}),r=_===a&&i().persistenceEnabled&&A(s);return(!r||n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)&&l.forEach(e=>S.add(e)),r&&t(e=>{let t={...e.draftPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let r=d.get(e);if(n.status===`committed`)t[e]={status:`saved`,revision:r};else if(n.status===`unseeded`||n.status===`stale`||n.status===`disabled`)continue;else t[e]={status:`error`,revision:r,errorCode:re(n)}}let r={...e.draftAttachmentPersistence};for(let e of f){if((c.get(e)??0)!==u.get(e))continue;let t=d.get(e);r[e]=n.status===`committed`&&n.cleanupErrors.length===0?{status:`saved`,revision:t}:n.status===`failed`||n.cleanupErrors.length>0?{status:`error`,revision:t,errorCode:re(n)}:r[e]??{status:`idle`,revision:t}}return{draftPersistence:t,draftAttachmentPersistence:r}}),n})();return p.add(x),x.then(()=>p.delete(x),()=>p.delete(x)),x},oe=e=>{let n=i(),r=Object.fromEntries(e.flatMap(e=>{let t=n.drafts[e];return t?[[e,{status:`saving`,revision:t.revision}]]:[]}));Object.keys(r).length&&t(e=>({draftPersistence:{...e.draftPersistence,...r}}))},se=()=>{h&&clearTimeout(h),h=void 0;let e=[...m];m.clear();let t=g;return g=void 0,e.length?ae(e,t).then(()=>void 0):Promise.resolve()},ce=e=>{if(!i().persistenceEnabled){S.add(e);return}m.add(e),oe([e]),!h&&(g=k(),h=setTimeout(()=>{se()},40))},le=e=>{let t=[...e];return t.forEach(e=>m.delete(e)),h&&m.size===0&&(clearTimeout(h),h=void 0,g=void 0),ae(t)},N=(e,n,r,a=`immediate`)=>{let o=R(e),s=i().drafts[o];if(!s||r!==void 0&&s.revision!==r)return;let c=O(n(s));if(!(!c||R(c.key)!==o))return E(o),t(e=>({drafts:{...e.drafts,[o]:c},...te(e,o,c)})),a===`deferred`?ce(o):le([o]),c},de=e=>e?pe(e):void 0,P=(e=[])=>JSON.parse(JSON.stringify(e)),me=(e,t,n,r=!1,i=!1)=>({status:e,...de(n)?{record:de(n)}:{},errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:r,durable:i}),he=(e,t,n,r,i=!1,a=!1)=>({status:e,errors:P(t?.errors),cleanupErrors:P(t?.cleanupErrors),current:i,durable:a,source:de(n),destination:de(r)}),F=e=>e.status,ge=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>0,I=(e,...t)=>{let n={...e};for(let e of t)delete n[e];return n},_e=async(e,t)=>{let n={},r=i().draftAttachmentViews[R(e.key)]??{};for(let i of j(e)){let e;if(i.locator.kind===`url`){let n=t?.get(i.attachmentRefID);e=n===void 0?i.locator.url:n}else e=t?.get(i.attachmentRefID)??r[i.attachmentRefID]?.file??(typeof r[i.attachmentRefID]?.dataUrl==`string`&&ie(r[i.attachmentRefID].dataUrl)?r[i.attachmentRefID].dataUrl:void 0);if(i.locator.kind===`url`&&e!==void 0&&(e!==i.locator.url||!ie(e))||i.locator.kind===`blob`&&e!==void 0&&!(e instanceof Blob)&&!(typeof e==`string`&&ie(e)))return;e!==void 0&&(n[i.attachmentRefID]=await ne(i,e))}return n},ve=e=>e?R(e):`legacy-unowned`,ye=e=>C.get(e)??0,be=e=>{C.set(e,ye(e)+1)},xe=(e,n,r=!1)=>{r&&be(e),t(t=>{let r=n(t.attachmentBuckets[e]??[]);return{attachmentBuckets:{...t.attachmentBuckets,[e]:r},...ve(t.activeAttachmentDraft)===e?{attachedFiles:r}:{}}})};return{drafts:{},tombstones:{},draftHydration:{},draftPersistence:{},draftAttachmentViews:{},draftMissingAttachmentRefIDs:{},draftAttachmentPersistence:{},persistenceEnabled:e.persistenceEnabled??!0,legacyDraftEntries:{},migration:{complete:!1,claimedTransportIdentity:``},captureDraftRuntime:()=>k(),commitDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(e.expectedRevision!==`absent`&&!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(e.expectedRevision===`absent`?s:s?.revision!==e.expectedRevision)return me(`conflict`,void 0,s);let u=e.expectedRevision===`absent`?l+1:e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=O({version:1,key:e.key,revision:u,...e.snapshot});if(!d)return me(`failed`,void 0);let f=await _e(d,e.values);if(!f)return me(`failed`,void 0);let p=c.get(n)??0,m=s?.revision??l,h=await o.commit({drafts:{[n]:d},isCurrent:()=>A(r)&&(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,resolveBlobValue:t=>e.values?.get(t.attachmentOccurrenceRefID)});if(h.status!==`committed`)return me(F(h),h,s);let g=(c.get(n)??0)===p&&(i().drafts[n]?.revision??i().tombstones[n]??0)===m,_=A(r);if(!g)return _||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,h,d,!1,!0);let v=pe(d);return v?(E(n),D(n),t(e=>({drafts:{...e.drafts,[n]:v},tombstones:(()=>{let t={...e.tombstones};return delete t[n],t})(),draftAttachmentViews:_?{...e.draftAttachmentViews,[n]:f}:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:_?{...e.draftMissingAttachmentRefIDs,[n]:[]}:I(e.draftMissingAttachmentRefIDs,n),draftHydration:_?e.draftHydration:I(e.draftHydration,n),draftPersistence:_?{...e.draftPersistence,[n]:{status:`saved`,revision:v.revision}}:I(e.draftPersistence,n),draftAttachmentPersistence:_?{...e.draftAttachmentPersistence,[n]:h.cleanupErrors.length?{status:`error`,revision:v.revision,errorCode:re(h)}:{status:`saved`,revision:v.revision}}:I(e.draftAttachmentPersistence,n)})),me(_?`committed`:`stale`,h,v,_,!0)):me(`failed`,h)},deleteDraftSnapshot:async e=>{let n=R(e.key),r=e.runtime;if(r.transportIdentity!==e.key.transportIdentity||!A(r))return me(`stale`,void 0);let a=i(),s=a.drafts[n],l=a.tombstones[n]??0;if(!ge(e.expectedRevision)||!Number.isSafeInteger(l)||l<0)return me(`failed`,void 0);if(!s||s.revision!==e.expectedRevision)return me(`conflict`,void 0);let u=e.expectedRevision+1;if(!ge(u))return me(`failed`,void 0);let d=c.get(n)??0,f=s.revision,p=Math.max(l,u),m=await o.commit({tombstones:{[n]:p},delete:[n],isCurrent:()=>A(r)&&(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l});if(m.status!==`committed`)return me(F(m),m);let h=(c.get(n)??0)===d&&i().drafts[n]?.revision===f&&(i().tombstones[n]??0)===l,g=A(r);return h?(E(n),D(n),t(e=>{let t={...e.drafts};return delete t[n],{drafts:t,tombstones:{...e.tombstones,[n]:Math.max(e.tombstones[n]??0,p)},draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)}}),me(g?`committed`:`stale`,m,void 0,g,!0)):(g||t(e=>({draftAttachmentViews:I(e.draftAttachmentViews,n),draftMissingAttachmentRefIDs:I(e.draftMissingAttachmentRefIDs,n),draftHydration:I(e.draftHydration,n),draftPersistence:I(e.draftPersistence,n),draftAttachmentPersistence:I(e.draftAttachmentPersistence,n)})),me(`stale`,m,void 0,!1,!0))},finalizeDraftOwnership:async e=>{let n=R(e.source),r=R(e.destination),a=e.runtime,s=i(),l=s.drafts[n],u=s.drafts[r];if(n===r||e.destination.owner.kind!==`session`||e.source.transportIdentity!==a.transportIdentity||e.destination.transportIdentity!==a.transportIdentity||!A(a))return he(`stale`,void 0,l,u);if(!ge(e.expectedSourceRevision))return he(`failed`,void 0,l,u);if(!l||l.revision!==e.expectedSourceRevision||u)return he(`conflict`,void 0,l,u);let d=c.get(n)??0,f=c.get(r)??0,p=s.tombstones[n]??0,m=s.tombstones[r]??0;if(!Number.isSafeInteger(p)||p<0||!Number.isSafeInteger(m)||m<0)return he(`failed`,void 0,l,u);let h=Math.max(l.revision+1,m+1);if(!ge(h))return he(`failed`,void 0,l,u);let g=O(e.disposition===`preserve`?{...l,key:e.destination,revision:h}:{...Er(e.destination),revision:h});if(!g)return he(`failed`,void 0,l,u);let _=await o.commit({drafts:{[r]:g},tombstones:{[n]:Math.max(p,h)},delete:[n],isCurrent:()=>A(a)&&(c.get(n)??0)===d&&(c.get(r)??0)===f&&i().drafts[n]?.revision===l.revision&&!i().drafts[r]&&(i().tombstones[n]??0)===p&&(i().tombstones[r]??0)===m,resolveBlobValue:e=>s.draftAttachmentViews[n]?.[e.attachmentOccurrenceRefID]?.file});if(_.status!==`committed`)return he(F(_),_,l,u);let v=(c.get(n)??0)===d&&i().drafts[n]?.revision===l.revision&&(i().tombstones[n]??0)===p,y=(c.get(r)??0)===f&&!i().drafts[r]&&(i().tombstones[r]??0)===m,b=A(a),x=pe(g);if(!x)return he(`failed`,_,l,u);if(b&&!v&&!y)return he(`stale`,_,l,g,!1,!0);v&&(E(n),D(n)),y&&(E(r),D(r)),t(t=>{let i=t.drafts,a=t.tombstones;(v||y)&&(i={...i}),(v||y)&&(a={...a}),v&&(delete i[n],a[n]=Math.max(a[n]??0,h)),y&&(i[r]=x,delete a[r]);let o=t.draftHydration,s=t.draftPersistence,c=t.draftAttachmentViews,l=t.draftMissingAttachmentRefIDs,u=t.draftAttachmentPersistence;return b?(v&&(o=I(o,n),s=I(s,n),c=I(c,n),l=I(l,n),u=I(u,n)),y&&(o=I(o,r),s={...I(s,r),[r]:{status:`saved`,revision:x.revision}},c=I(c,r),l=I(l,r),u={...I(u,r),[r]:_.cleanupErrors.length?{status:`error`,revision:x.revision,errorCode:re(_)}:{status:`saved`,revision:x.revision}},b&&v&&e.disposition===`preserve`&&(c={...c,[r]:t.draftAttachmentViews[n]??{}},l={...l,[r]:t.draftMissingAttachmentRefIDs[n]??[]}))):(o=I(o,n,r),s=I(s,n,r),c=I(c,n,r),l=I(l,n,r),u=I(u,n,r)),{drafts:i,tombstones:a,draftHydration:o,draftPersistence:s,draftAttachmentViews:c,draftMissingAttachmentRefIDs:l,draftAttachmentPersistence:u}});let S=v&&y&&b;return he(S?`committed`:`stale`,_,l,g,S,!0)},flushDraftPersistence:async()=>{for(await se();p.size;)await Promise.all([...p]);await o.flush()},ensureDraft:e=>{let n=R(e),r=i().drafts[n];if(r)return r;let a=O({...Er(e),revision:(i().tombstones[n]??0)+1});if(!a)throw Error(`Invalid empty draft`);return E(n),t(e=>({drafts:{...e.drafts,[n]:a}})),le([n]),a},getDraft:e=>i().drafts[R(e)],setDraftText:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t,mentions:e.mentions.filter(e=>e.range.end<=t.length&&t.slice(e.range.start,e.range.end)===`@${e.value}`),composerReferences:[]}),n.revision,`deferred`)??n},setDraftComposerDocument:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return i().setDraftComposerState(e,{document:t,mentions:n.mentions})},setDraftComposerState:(e,t)=>{let n=i().getDraft(e)??i().ensureDraft(e);return N(e,e=>({...e,revision:e.revision+1,text:t.document.text,composerReferences:t.document.references,mentions:t.mentions}),n.revision,`deferred`)},replaceDraft:(e,t,n)=>N(e,e=>({version:1,key:e.key,revision:e.revision+1,text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}}),t),setDraftMentions:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:t})),addDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:[...e.mentions,t]})),removeDraftMention:(e,t)=>N(e,e=>({...e,revision:e.revision+1,mentions:e.mentions.filter(e=>e.value!==t)})),setDraftSyntheticParts:(e,t)=>N(e,e=>({...e,revision:e.revision+1,syntheticParts:t})),consumeDraftSyntheticParts:(e,t)=>{let n=i().getDraft(e);if(!n)return null;let r=n.syntheticParts.filter(e=>!t?.(e)),a=n.syntheticParts.filter(e=>t?.(e));return N(e,e=>({...e,revision:e.revision+1,syntheticParts:a}),n.revision)?r:null},setDraftAttachments:(e,t)=>N(e,e=>({...e,revision:e.revision+1,attachments:t})),addDraftLocalAttachment:async(e,n,r={})=>{let a=i().getDraft(e);if(r.partID&&!a?.syntheticParts.some(e=>e.partID===r.partID))return;let o=R(e),s=c.get(o)??0,l=i().tombstones[o]??0,u=k(),d=n instanceof File?n:new File([n],r.filename??`attachment`,{type:n.type}),f;try{f=await Cr(d)}catch{let e=i().drafts[o];if(A(u)&&(i().tombstones[o]??0)===l&&(e?R(e.key)===o:(c.get(o)??0)===s)&&(!r.partID||e?.syntheticParts.some(e=>e.partID===r.partID))){let n=e?.revision??i().tombstones[o]??0;t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[o]:{status:`error`,revision:n,errorCode:`transaction-failed`}}}))}return}if(!A(u)||(i().tombstones[o]??0)!==l)return;let p=i().drafts[o];if(!p&&(c.get(o)??0)!==s)return;let m=p??i().ensureDraft(e);if(R(m.key)!==o||r.partID&&!m.syntheticParts.some(e=>e.partID===r.partID))return;let h=r.attachmentID??M(),g=r.partID?Ee(r.partID,h):ue(h),_=M(),v={attachmentID:h,attachmentRefID:g,filename:r.filename??(n instanceof File?n.name:`attachment`),mimeType:n.type,size:n.size,locator:{kind:`blob`,blobID:_},source:r.source??`local`,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}},y=r.partID?{...m,revision:m.revision+1,syntheticParts:m.syntheticParts.map(e=>e.partID===r.partID?{...e,attachments:[...e.attachments,v]}:e)}:{...m,revision:m.revision+1,attachments:[...m.attachments,v]},b=O(y);if(!b)return;E(o);let x={id:h,file:d,dataUrl:f,mimeType:v.mimeType,filename:v.filename,size:v.size,source:v.source,...r.vscodePath?{vscodePath:r.vscodePath}:{},...r.vscodeSource?{vscodeSource:r.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[o]:b},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...e.draftAttachmentViews[o],[g]:x}}})),await ae([o]),v},addDraftDurableAttachment:(e,n)=>{let r=i().getDraft(e)??i().ensureDraft(e);if(n.partID&&!r.syntheticParts.some(e=>e.partID===n.partID))return;let a=n.attachmentID??M(),o=n.partID?Ee(n.partID,a):ue(a),s={attachmentID:a,attachmentRefID:o,filename:n.filename,mimeType:n.mimeType,size:n.size,source:n.source,locator:{kind:`url`,url:n.url},...n.serverPath?{serverPath:n.serverPath}:{},...n.vscodePath?{vscodePath:n.vscodePath}:{},...n.vscodeSource?{vscodeSource:n.vscodeSource}:{}},c=n.partID?{...r,revision:r.revision+1,syntheticParts:r.syntheticParts.map(e=>e.partID===n.partID?{...e,attachments:[...e.attachments,s]}:e)}:{...r,revision:r.revision+1,attachments:[...r.attachments,s]},l=O(c);if(!l)return;let u=R(e);E(u);let d={id:a,file:new File([],s.filename,{type:s.mimeType}),dataUrl:n.url,mimeType:s.mimeType,filename:s.filename,size:s.size,source:s.source,...s.serverPath?{serverPath:s.serverPath}:{},...s.vscodePath?{vscodePath:s.vscodePath}:{},...s.vscodeSource?{vscodeSource:s.vscodeSource}:{}};return t(e=>({drafts:{...e.drafts,[u]:l},draftAttachmentViews:{...e.draftAttachmentViews,[u]:{...e.draftAttachmentViews[u],[o]:d}}})),ae([u]),s},getDraftAttachmentViews:e=>{let t=R(e),n=i().drafts[t],r=i().draftAttachmentViews[t]??{};return n?j(n).flatMap(e=>r[e.attachmentRefID]?[r[e.attachmentRefID]]:[]):[]},retryDraftAttachmentPersistence:async e=>{let n=R(e);if(!i().persistenceEnabled||!i().drafts[n]&&!i().tombstones[n])return;let r=await o.retryCleanup();r.cleanupErrors.length&&t(e=>({draftAttachmentPersistence:{...e.draftAttachmentPersistence,[n]:{status:`error`,revision:e.drafts[n]?.revision??e.tombstones[n],errorCode:re(r)}}})),await ae([n])},hydrateDraftAttachments:async e=>{let n=R(e),r=d.get(n);if(r)return r;let o=i().drafts[n];if(!o)return;let s=(u.get(n)??0)+1;u.set(n,s);let c=k(),l=_,f=(async()=>{t(e=>({draftHydration:{...e.draftHydration,[n]:`loading`}}));let e=()=>{if(u.get(n)!==s)return;let e=i(),r=e.draftAttachmentViews[n],a=e.draftMissingAttachmentRefIDs[n]??[];t(e=>({draftHydration:{...e.draftHydration,[n]:a.length?`degraded`:Object.keys(r??{}).length?`ready`:`idle`}}))},r={},d=[];for(let f of j(o)){let p=f.locator.kind===`url`?{ok:!0,value:f.locator.url}:await a.read(f.locator.blobID);if(!p.ok){if(p.error.code===`missing-blob`)d.push(f.attachmentRefID);else{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}continue}try{r[f.attachmentRefID]=await ne(f,p.value)}catch{u.get(n)===s&&_===l&&A(c)&&i().drafts[n]===o?t(e=>({draftHydration:{...e.draftHydration,[n]:`error`}})):e();return}}let f=i(),p=f.drafts[n],m=u.get(n);if(m===s&&_===l&&A(c)&&p===o)t(e=>({draftAttachmentViews:{...e.draftAttachmentViews,[n]:r},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[n]:d},draftHydration:{...e.draftHydration,[n]:d.length?`degraded`:`ready`}}));else if(m===s){let e=f.draftAttachmentViews[n],r=f.draftMissingAttachmentRefIDs[n]??[];t(t=>({draftHydration:{...t.draftHydration,[n]:r.length?`degraded`:Object.keys(e??{}).length?`ready`:`idle`}}))}})();d.set(n,f);try{await f}finally{d.get(n)===f&&d.delete(n)}},removeDraftAttachment:async(e,n)=>{let r=R(e),a=i().drafts[r],o=a&&j(a).find(e=>e.attachmentRefID===n);if(!a||!o)return!1;let s=Le(o)?We(a.text,[o.filename],a.mentions,a.composerReferences):void 0,c=O({...a,revision:a.revision+1,...s?.changed?{text:s.text,mentions:s.mentions,...s.composerReferences===void 0?{}:{composerReferences:s.composerReferences}}:{},attachments:a.attachments.filter(e=>e.attachmentRefID!==n),syntheticParts:a.syntheticParts.map(e=>({...e,attachments:e.attachments.filter(e=>e.attachmentRefID!==n)}))});return c?(E(r),t(e=>{let t={...e.draftAttachmentViews[r]};return delete t[n],{drafts:{...e.drafts,[r]:c},draftAttachmentViews:{...e.draftAttachmentViews,[r]:t},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[r]:(e.draftMissingAttachmentRefIDs[r]??[]).filter(e=>e!==n)}}}),(await ae([r])).status===`committed`):!1},replaceDraftAttachment:async(e,n,r,a)=>{let o=R(e),s=i().drafts[o],c=s&&j(s).find(e=>e.attachmentRefID===n);if(!s||!c)return;let l=k(),u=i().tombstones[o]??0,d=r instanceof File?r:new File([r],a?.filename??`attachment`,{type:r.type}),f;try{f=await Cr(d)}catch{let e=i().drafts[o],r=e&&j(e).find(e=>e.attachmentRefID===n);A(l)&&(i().tombstones[o]??0)===u&&e&&r?.attachmentID===c.attachmentID&&r.attachmentRefID===c.attachmentRefID&&R(e.key)===o&&t(t=>({draftAttachmentPersistence:{...t.draftAttachmentPersistence,[o]:{status:`error`,revision:e.revision,errorCode:`transaction-failed`}}}));return}let p=i().drafts[o],m=p&&j(p).find(e=>e.attachmentRefID===n);if(!A(l)||(i().tombstones[o]??0)!==u||!p||m?.attachmentID!==c.attachmentID||m.attachmentRefID!==c.attachmentRefID||R(p.key)!==o)return;let h=p.syntheticParts.find(e=>e.attachments.some(e=>e.attachmentRefID===n)),g=M(),_={attachmentID:g,attachmentRefID:h?Ee(h.partID,g):ue(g),filename:a?.filename??d.name,mimeType:d.type,size:d.size,locator:{kind:`blob`,blobID:M()},source:a?.source??`local`,...a?.vscodePath?{vscodePath:a.vscodePath}:{},...a?.vscodeSource?{vscodeSource:a.vscodeSource}:{}},v=O({...p,revision:p.revision+1,attachments:h?p.attachments:p.attachments.map(e=>e.attachmentRefID===n?_:e),syntheticParts:p.syntheticParts.map(e=>e.partID===h?.partID?{...e,attachments:e.attachments.map(e=>e.attachmentRefID===n?_:e)}:e)});if(!v)return;E(o);let y={id:g,file:d,dataUrl:f,mimeType:_.mimeType,filename:_.filename,size:_.size,source:_.source,..._.vscodePath?{vscodePath:_.vscodePath}:{},..._.vscodeSource?{vscodeSource:_.vscodeSource}:{}};return t(e=>{let t={...e.draftAttachmentViews[o]};return delete t[n],{drafts:{...e.drafts,[o]:v},draftAttachmentViews:{...e.draftAttachmentViews,[o]:{...t,[_.attachmentRefID]:y}},draftMissingAttachmentRefIDs:{...e.draftMissingAttachmentRefIDs,[o]:(e.draftMissingAttachmentRefIDs[o]??[]).filter(e=>e!==n)}}}),(await ae([o])).status===`committed`?_:void 0},replaceDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=[],c=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),c.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),c.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();s.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),c.set(n,r)}}let l=a?.syntheticParts??[];for(let e of l)for(let t of e.attachments)t.locator.kind===`url`&&!c.has(t.attachmentRefID)&&c.set(t.attachmentRefID,t.locator.url);let u={text:a?.text??``,attachments:s,syntheticParts:l,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:u,values:c,runtime:r})},restoreDraftRootAttachments:async(e,t)=>{let n=R(e),r=k();if(r.transportIdentity!==e.transportIdentity||!A(r))return me(`stale`,void 0);let a=i().drafts[n],o=a?a.revision:`absent`,s=new Set(t.map(e=>e.id)),c=[],l=new Map;for(let e of t){let t=e.id,n=ue(t);if(e.source===`server`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`url`,url:e.dataUrl},...e.serverPath?{serverPath:e.serverPath}:{}}),l.set(n,e.dataUrl);else if(e.source===`vscode`&&e.vscodeSource===`file`&&e.dataUrl&&ie(e.dataUrl))c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`vscode`,locator:{kind:`url`,url:e.dataUrl},...e.vscodePath?{vscodePath:e.vscodePath}:{},vscodeSource:`file`}),l.set(n,e.dataUrl);else{let r=e.file instanceof File?e.file:new File([e.file],e.filename,{type:e.mimeType}),i=M();c.push({attachmentID:t,attachmentRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source===`vscode`?`vscode`:`local`,locator:{kind:`blob`,blobID:i},...e.vscodePath?{vscodePath:e.vscodePath}:{},...e.vscodeSource===`selection`?{vscodeSource:`selection`}:{}}),l.set(n,r)}}let u=i().draftAttachmentViews[n]??{};for(let e of a?.attachments??[])if(!s.has(e.attachmentID))if(c.push(JSON.parse(JSON.stringify(e))),e.locator.kind===`url`)l.set(e.attachmentRefID,e.locator.url);else{let t=u[e.attachmentRefID];t?.file instanceof Blob?l.set(e.attachmentRefID,t.file):typeof t?.dataUrl==`string`&&ie(t.dataUrl)&&l.set(e.attachmentRefID,t.dataUrl)}let d=a?.syntheticParts??[];for(let e of d)for(let t of e.attachments)t.locator.kind===`url`&&!l.has(t.attachmentRefID)&&l.set(t.attachmentRefID,t.locator.url);let f={text:a?.text??``,attachments:c,syntheticParts:d,mentions:a?.mentions??[],...a?.composerReferences===void 0?{}:{composerReferences:a.composerReferences}};return i().commitDraftSnapshot({key:e,expectedRevision:o,snapshot:f,values:l,runtime:r})},deleteDraft:(e,n)=>{let r=R(e),a=i().drafts[r];if(!a||n!==void 0&&a.revision!==n)return!1;let o=a.revision+1;return ge(o)?(E(r),D(r),t(e=>{let t={...e.drafts};delete t[r];let n={...e.draftHydration},i={...e.draftPersistence},a={...e.draftAttachmentViews},s={...e.draftMissingAttachmentRefIDs},c={...e.draftAttachmentPersistence};return delete n[r],delete i[r],delete a[r],delete s[r],delete c[r],{drafts:t,tombstones:{...e.tombstones,[r]:Math.max(e.tombstones[r]??0,o)},draftHydration:n,draftPersistence:i,draftAttachmentViews:a,draftMissingAttachmentRefIDs:s,draftAttachmentPersistence:c}}),ae([r]),!0):!1},moveDraft:(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1||[...s.attachments,...s.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.locator.kind===`blob`))return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),ae([a,o]),c},moveDraftWithAttachments:async(e,n,r)=>{let a=R(e),o=R(n),s=i().drafts[a];if(!s||a===o||r!==void 0&&s.revision!==r||i().drafts[o]||(i().tombstones[o]??0)>=s.revision+1)return;let c=O({...s,key:n,revision:s.revision+1});if(c)return E(a),E(o),D(a,o),t(e=>{let t={...e.drafts};delete t[a];let n={...e.tombstones,[a]:Math.max(e.tombstones[a]??0,c.revision)};(n[o]??0)<c.revision&&delete n[o];let r=e=>{let t={...e},n=t[a];return delete t[a],delete t[o],n===void 0?t:{...t,[o]:n}};return{drafts:{...t,[o]:c},tombstones:n,draftHydration:r(e.draftHydration),draftPersistence:r(e.draftPersistence),draftAttachmentViews:r(e.draftAttachmentViews),draftMissingAttachmentRefIDs:r(e.draftMissingAttachmentRefIDs),draftAttachmentPersistence:r(e.draftAttachmentPersistence)}}),(await ae([a,o])).status===`committed`?c:void 0},setDraftPersistenceEnabled:async e=>{if(_+=1,!e){h&&clearTimeout(h),h=void 0,m.clear(),g=void 0,t({persistenceEnabled:!1,draftPersistence:{}}),await o.setEnabled(!1),await o.flush();return}t({persistenceEnabled:!0}),await o.setEnabled(!0);let n=k();b||await i().hydrateDraftMetadata(n.transportIdentity);let r=new Set([...Object.keys(i().drafts),...Object.keys(i().tombstones),...S]);S.clear(),await ae(r),await o.flush()},hydrateDraftMetadata:e=>{let r=f.get(e);if(r)return r;let a=(async()=>{let r=(l.get(e)??0)+1;l.set(e,r);let a=k();if(a.transportIdentity!==e)return!1;let s=_,u=new Map(c),d=v,f=Object.entries(i().drafts).filter(([,t])=>t.key.transportIdentity===e).map(([e])=>e);t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`loading`]))}}));let p=i().persistenceEnabled,m;try{m=await n.migrate(e,{persistenceEnabled:p})}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(!m.ok)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(t=>[t,e.drafts[t]?`degraded`:`error`]))}})),!1;let h=m.value;if(!b){x??=o.seed(h).finally(()=>{x=void 0});let n;try{n=await x}catch{return!1}if(l.get(e)!==r||_!==s||!A(a))return!1;if(n.status!==`committed`&&n.status!==`disabled`)return t(e=>({draftHydration:{...e.draftHydration,...Object.fromEntries(f.map(e=>[e,`degraded`]))}})),!1;n.status===`committed`&&(b=!0)}let g=i(),C={...g.drafts},w={...g.tombstones},T=new Set;for(let[e,t]of Object.entries(h.tombstones))(c.get(e)??0)===(u.get(e)??0)&&(t>=(w[e]??0)&&(w[e]=t,(C[e]?.revision??0)<=t&&delete C[e]),T.add(e));for(let[t,n]of Object.entries(h.drafts)){if(n.key.transportIdentity!==e||(c.get(t)??0)!==(u.get(t)??0))continue;let r=C[t],i=O(n);i&&(!r||r.revision<i.revision)&&(w[t]??0)<i.revision&&(C[t]=i),T.add(t)}let E=v===d?{...h.legacy.entries}:{...g.legacyDraftEntries};if(h.migration.claimedTransportIdentity===e&&v===d)for(let[t,n]of Object.entries(E)){let r={transportIdentity:e,owner:{kind:`session`,ownerID:t}},i=R(r),a=vr(n.text),o=O({...Er(r),text:a.text,composerReferences:a.references,mentions:Dr(a.text,n.mentions)});o&&!C[i]&&!w[i]&&(c.get(i)??0)===(u.get(i)??0)&&(C[i]=o),delete E[t],T.add(i)}t(e=>({drafts:C,tombstones:w,legacyNewDraft:v===d&&!y?h.legacy.new:e.legacyNewDraft,legacyDraftEntries:E,migration:v===d?h.migration:e.migration,draftHydration:{...e.draftHydration,...Object.fromEntries([...T].map(e=>[e,`ready`]))}}));let D=[...S];for(let e of D)T.add(e);S.clear();try{await ae(T),await o.flush()}catch{return!1}return l.get(e)===r&&_===s&&A(a)})();return f.set(e,a),a.finally(()=>{f.get(e)===a&&f.delete(e)}).catch(()=>void 0),a},claimLegacyNewDraft:async e=>{let n=i().legacyNewDraft;if(!n)return i().getDraft(e);let r=R(e),a=i().drafts[r];if(v+=1,y=!0,a||i().tombstones[r])return t({legacyNewDraft:void 0}),ae([r]),a;let o=vr(n.text),s=O({...Er(e),text:o.text,composerReferences:o.references,mentions:Dr(o.text,n.mentions)});if(s)return E(r),t(e=>({drafts:{...e.drafts,[r]:s},legacyNewDraft:void 0})),ae([r]),s},pendingInputText:null,pendingInputMode:`replace`,pendingSyntheticParts:null,pendingPresetSubmit:null,attachedFiles:[],attachmentBuckets:{"legacy-unowned":[]},activeAttachmentDraft:null,activeEditorFile:null,setPendingInputText:(e,n=`replace`)=>t({pendingInputText:e,pendingInputMode:n}),consumePendingInputText:()=>{let{pendingInputText:e,pendingInputMode:n}=i();return e===null?null:(t({pendingInputText:null,pendingInputMode:`replace`}),{text:e,mode:n})},requestPresetSubmit:e=>t({pendingPresetSubmit:e}),consumePendingPresetSubmit:()=>{let{pendingPresetSubmit:e}=i();return e===null?null:(t({pendingPresetSubmit:null}),e)},setPendingSyntheticParts:e=>t({pendingSyntheticParts:e}),consumePendingSyntheticParts:()=>{let{pendingSyntheticParts:e}=i();return e!==null&&t({pendingSyntheticParts:null}),e},setActiveAttachmentDraft:e=>{let n=ve(e);t(t=>({activeAttachmentDraft:e,attachedFiles:t.attachmentBuckets[n]??[],attachmentBuckets:t.attachmentBuckets[n]?t.attachmentBuckets:{...t.attachmentBuckets,[n]:[]}}))},addAttachedFile:async e=>{let t=i().activeAttachmentDraft;if(t){let n=ve(t),r=ye(n),a=await i().addDraftLocalAttachment(t,e);r!==ye(n)&&a&&i().removeDraftAttachment(t,a.attachmentRefID);return}let n=`${Date.now()}-${Math.random().toString(36).slice(2)}`,r=ve(null),a=ye(r),o;try{o=await Cr(e)}catch{return}if(a!==ye(r))return;let s={id:n,file:e,dataUrl:o,mimeType:e.type,filename:e.name,size:e.size,source:`local`};xe(r,e=>[...e,s])},removeAttachedFile:e=>{let t=i().activeAttachmentDraft;if(t){let n=i().getDraft(t),r=n?[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)].find(t=>t.attachmentID===e):void 0;r&&i().removeDraftAttachment(t,r.attachmentRefID);return}xe(ve(null),t=>t.filter(t=>t.id!==e))},setAttachedFiles:e=>{xe(ve(i().activeAttachmentDraft),()=>e,!0)},clearAttachedFiles:()=>{let e=i().activeAttachmentDraft;if(e){be(ve(e)),i().getDraft(e)||i().ensureDraft(e),i().setDraftAttachments(e,[]);return}xe(ve(null),()=>[],!0)},addDraftVSCodeFileAttachment:(e,t,n,r)=>{if(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`file`&&(e.vscodePath||``)===t)??!1))return;let a=xr(t);i().addDraftDurableAttachment(e,{filename:n,mimeType:`text/plain`,size:r||0,source:`vscode`,vscodePath:t,vscodeSource:`file`,url:a})},addDraftVSCodeSelectionAttachment:async(e,t,n)=>{let r=R(e),a=ye(r),o=`${r}\u0000${Sr(t,n.name)}`;if(!(i().getDraftAttachmentViews(e).some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)||(i().getDraft(e)?.attachments.some(e=>e.source===`vscode`&&e.vscodeSource===`selection`&&e.filename===n.name&&e.vscodePath===t)??!1)||T.has(o))){T.add(o);try{let o=await i().addDraftLocalAttachment(e,n,{source:`vscode`,vscodePath:t,vscodeSource:`selection`});a!==ye(r)&&o&&i().removeDraftAttachment(e,o.attachmentRefID)}finally{T.delete(o)}}},addVSCodeFileAttachment:(e,t,n)=>{let r=i().activeAttachmentDraft;if(r){i().addDraftVSCodeFileAttachment(r,e,t,n);return}let a=`${Date.now()}-${Math.random().toString(36).slice(2)}`,o=ve(null);if((i().attachmentBuckets[o]??[]).some(t=>t.source===`vscode`&&t.vscodeSource===`file`&&(t.vscodePath||``)===e))return;let s=xr(e),c={id:a,file:new File([],t,{type:`text/plain`}),dataUrl:s,mimeType:`text/plain`,filename:t,size:n||0,source:`vscode`,vscodePath:e,vscodeSource:`file`};xe(o,e=>[...e,c])},addVSCodeSelectionAttachment:async(e,t)=>{let n=i().activeAttachmentDraft;if(n){await i().addDraftVSCodeSelectionAttachment(n,e,t);return}let r=`${Date.now()}-${Math.random().toString(36).slice(2)}`,a=ve(null),o=ye(a),s=`${a}\u0000${Sr(e,t.name)}`;if((i().attachmentBuckets[a]??[]).some(n=>n.source===`vscode`&&n.vscodeSource===`selection`&&n.filename===t.name&&n.vscodePath===e)||T.has(s))return;T.add(s);let c;try{c=await Cr(t)}catch{return}finally{T.delete(s)}if(o!==ye(a))return;let l={id:r,file:t,dataUrl:c,mimeType:t.type,filename:t.name,size:t.size,source:`vscode`,vscodePath:e,vscodeSource:`selection`};xe(a,e=>[...e,l])},addCodeSelectionAttachment:async(e,t,n)=>{let r=new File([n],t,{type:`text/plain`});await i().addVSCodeSelectionAttachment(e,r)},setActiveEditorFile:e=>{Tr(i().activeEditorFile,e)||t({activeEditorFile:e})},addRestoredAttachment:({url:e,mimeType:t,filename:n})=>{let r=i().activeAttachmentDraft;if(r){if(e.startsWith(`data:`)){let a=R(r);(async()=>{try{let o=await(await fetch(e)).blob(),s=new File([o],n,{type:t||o.type||`application/octet-stream`}),c=i().activeAttachmentDraft;if(!c||R(c)!==a)return;await i().addDraftLocalAttachment(r,s)}catch{}})();return}if(!ie(e))return;i().addDraftDurableAttachment(r,{filename:n,mimeType:t,size:wr(e),source:`local`,serverPath:e,url:e});return}let a={id:`restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,file:new File([],n,{type:t}),dataUrl:e,mimeType:t,filename:n,size:wr(e),source:`local`,serverPath:e};xe(ve(null),e=>[...e,a])}}})})(),kr=new Set;function Ar(e){return kr.add(e),()=>{kr.delete(e)}}function jr(e,t){let n=Array.isArray(e)?e:[e],r=Array.from(new Set(n));if(r.length===0)return;r.includes(`all`)&&r.splice(0,r.length,`all`);let i={scopes:r,source:t?.source,timestamp:Date.now()};for(let e of kr)try{let t=e(i);t instanceof Promise&&t.catch(e=>{console.error(`[ConfigSync] Async listener failed:`,e)})}catch(e){console.error(`[ConfigSync] Listener threw:`,e)}}function Mr(e,t){return e.scopes.includes(`all`)||e.scopes.includes(t)}var Nr=`Updating OpenCode configuration...`,Pr=0,Fr=Nr,Ir=new Set;function Lr(){let e={isUpdating:Pr>0,message:Fr};Ir.forEach(t=>t(e))}function Rr(e){Pr+=1,Pr===1?(Fr=e||Nr,Lr()):e&&(Fr=e,Lr())}function zr(){Pr!==0&&(--Pr,Pr===0&&(Fr=Nr,Lr()))}function Br(e){Fr===e&&Pr>0||(Fr=e,Pr>0&&Lr())}function Vr(e){return Ir.add(e),e({isUpdating:Pr>0,message:Fr}),()=>{Ir.delete(e)}}function Hr(){return{isUpdating:Pr>0,message:Fr}}var Ur=u(),Wr=`projects`,Gr=`activeProjectId`,Kr=`projects:manualOrder`,qr=(e,t)=>{let n=e.trim();return!n.startsWith(`~`)||!t?n:n===`~`?t:n.startsWith(`~/`)||n.startsWith(`~\\`)?`${t}${n.slice(1)}`:n},Jr=/^#(?:[\da-fA-F]{3}|[\da-fA-F]{6})$/,Yr=e=>{if(typeof e!=`string`)return;let t=e.trim();if(!t)return;let n=t.indexOf(`/`);if(!(n<=0||n>=t.length-1))return t},Xr=e=>{if(typeof e!=`string`)return null;let t=e.trim();return t&&Jr.test(t)?t.toLowerCase():null},Zr=e=>{let t=e.trim();if(!t)return``;let n=qr(t,A(`homeDirectory`,{storage:Ur})||Pe.getState().homeDirectory||``).replace(/\\/g,`/`);return n===`/`?`/`:n.length>1?n.replace(/\/+$/,``):n},Qr=e=>{let t=Zr(e);if(!t||t===`/`)return`Root`;let n=t.split(`/`).filter(Boolean);return n[n.length-1]||t},$r=e=>{if(!e||typeof e!=`object`)return;let t=e,n=typeof t.mime==`string`?t.mime.trim():``,r=typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?Math.max(0,Math.round(t.updatedAt)):0,i=t.source===`custom`||t.source===`auto`?t.source:null;if(!(!n||!r||!i))return{mime:n,updatedAt:r,source:i}},ei=e=>{let t=typeof e.type==`string`?e.type.trim().toLowerCase():``;if(t===`image/png`||t===`image/jpeg`||t===`image/svg+xml`)return t;let n=e.name.toLowerCase();return n.endsWith(`.png`)?`image/png`:n.endsWith(`.jpg`)||n.endsWith(`.jpeg`)?`image/jpeg`:n.endsWith(`.svg`)?`image/svg+xml`:null},ti=async e=>await new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>{n(Error(`Failed to read icon file`))},r.onload=()=>{let e=typeof r.result==`string`?r.result:``;if(!e){n(Error(`Failed to read icon file`));return}t(e)},r.readAsDataURL(e)}),ni=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set,r=new Set;for(let i of e){if(!i||typeof i!=`object`)continue;let e=i,a=typeof e.path==`string`?e.path.trim():``;if(!a)continue;let o=Zr(a);if(!o)continue;let s=xe(o);if(!s||n.has(s)||r.has(o))continue;n.add(s),r.add(o);let c={id:s,path:o};if(typeof e.label==`string`&&e.label.trim().length>0&&(c.label=e.label.trim()),typeof e.icon==`string`&&e.icon.trim().length>0&&(c.icon=e.icon.trim()),e.iconImage===null)c.iconImage=null;else{let t=$r(e.iconImage);t&&(c.iconImage=t)}typeof e.color==`string`&&e.color.trim().length>0&&(c.color=e.color.trim());let l=Yr(e.defaultModel);if(l&&(c.defaultModel=l),e.iconBackground===null)c.iconBackground=null;else{let t=Xr(e.iconBackground);t&&(c.iconBackground=t)}typeof e.addedAt==`number`&&Number.isFinite(e.addedAt)&&e.addedAt>=0&&(c.addedAt=e.addedAt),typeof e.lastOpenedAt==`number`&&Number.isFinite(e.lastOpenedAt)&&e.lastOpenedAt>=0&&(c.lastOpenedAt=e.lastOpenedAt),typeof e.sidebarCollapsed==`boolean`&&(c.sidebarCollapsed=e.sidebarCollapsed),t.push(c)}return t},ri=()=>{try{let e=A(Wr,{storage:Ur});return e?ni(JSON.parse(e)):[]}catch{return[]}},ii=()=>{if(!he())return null;let e=m().trim().replace(/\/+$/,``);return e?Ur.getItem(`${Wr}:${encodeURIComponent(e)}:manualOrder`):null},ai=()=>{try{let e=A(Kr,{storage:Ur})||ii();if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}},oi=()=>{try{let e=A(Gr,{storage:Ur});if(typeof e==`string`&&e.trim().length>0)return e.trim()}catch{return null}return null},si=(e,t)=>{try{M(Wr,JSON.stringify(e),{storage:Ur})}catch{}try{t?M(Gr,t,{storage:Ur}):ee(Gr,{storage:Ur})}catch{}},ci=(e,t,n)=>{si(e,t),n&&li(n),ye({projects:e,activeProjectId:t??void 0})},li=e=>{try{M(Kr,JSON.stringify(e),{storage:Ur})}catch{}},ui=ri(),di=(e,t,n)=>{let r=e.findIndex(e=>e.id===t),i=e.findIndex(e=>e.id===n);if(r<0||i<0||r===i)return e;let a=[...e],[o]=a.splice(r,1);return a.splice(i,0,o),a},fi=e=>{let t=[],n=new Set;for(let r of e){let e=Zr(r.path);!e||n.has(e)||(n.add(e),t.push({name:r.name?.trim(),path:e}))}return t},pi=(e,t,n,r)=>{let i=Zr(e.path);if(!i)return null;let a=xe(i),o=r===i;return{...t,id:a,path:i,label:Qr(i),addedAt:t?.addedAt??n,lastOpenedAt:o?n:t?.lastOpenedAt??n}},mi=()=>{if(typeof window>`u`||!Te()?.runtime?.isVSCode)return null;let e=window.__VSCODE_CONFIG__,t=Array.isArray(e?.workspaceFolders)?e.workspaceFolders.map(e=>{let t=e,n=typeof t.path==`string`?t.path.trim():``;return n?{name:typeof t.name==`string`?t.name.trim():``,path:n}:null}).filter(e=>e!==null):[];if(t.length>0)return fi(t);let n=e?.workspaceFolder;return typeof n!=`string`||n.trim().length===0?null:fi([{path:n}])},hi=(e,t,n)=>{let r=fi(e),i=n?Zr(n):null,a=r.length===0&&i?[{path:i}]:i&&!r.some(e=>e.path===i)?[...r,{path:i}]:r;if(a.length===0)return null;let o=Date.now(),s=a.map(e=>pi(e,t.find(t=>t.path===e.path)??null,o,i)).filter(e=>e!==null);if(s.length===0)return null;let c=i?s.find(e=>e.path===i)??null:s[0]??null,l=c?.id??s[0]?.id??null;return Be(),{projects:s,activeProjectId:l,activeProject:c??s[0]??null}},gi=(e,t)=>e===t?!0:!e||!t?e===t:e.mime===t.mime&&e.updatedAt===t.updatedAt&&e.source===t.source,_i=(e,t)=>e.length===t.length&&e.every((e,n)=>{let r=t[n];return r?e.id===r.id&&e.path===r.path&&e.label===r.label&&e.icon===r.icon&&e.color===r.color&&e.iconBackground===r.iconBackground&&e.defaultModel===r.defaultModel&&e.addedAt===r.addedAt&&e.lastOpenedAt===r.lastOpenedAt&&e.sidebarCollapsed===r.sidebarCollapsed&&gi(e.iconImage,r.iconImage):!1}),vi=(()=>{let e=mi();if(!e)return null;let t=hi(e,[]);return t?{projects:t.projects,activeProjectId:t.activeProjectId}:null})(),yi=typeof window>`u`?!1:!!Te()?.runtime?.isVSCode,bi=vi?.projects??(yi?[]:ui),xi=vi?.activeProjectId??(yi?null:oi()),Si=bi.some(e=>e.id===xi)?xi:bi[0]?.id??null;vi&&si(bi,Si);var Ci=Oe()(je((e,t)=>({projects:bi,activeProjectId:Si,manualProjectOrder:ai(),validateProjectPath:e=>{if(typeof e!=`string`||e.trim().length===0)return{ok:!1,reason:`Provide a directory path.`};let t=Zr(e);return t?{ok:!0,normalizedPath:t}:{ok:!1,reason:`Directory path cannot be empty.`}},addProject:(n,r)=>{if(yi)return null;let{validateProjectPath:i}=t(),a=i(n);if(!a.ok||!a.normalizedPath)return null;let o=a.normalizedPath,s=t().projects.find(e=>e.path===o);if(s)return t().setActiveProject(s.id),s;let c=Date.now(),l=r?.label?.trim()||Qr(o),u={id:xe(o),path:o,label:l,addedAt:c,lastOpenedAt:c};return e({projects:[...t().projects,u]}),Be(),t().setActiveProject(u.id),t().discoverProjectIcon(u.id),u},removeProject:n=>{if(yi)return;let r=t(),i=r.projects.find(e=>e.id===n),a=r.projects.filter(e=>e.id!==n),o=r.activeProjectId;r.activeProjectId===n&&(o=a[0]?.id??null);let s=t().manualProjectOrder.filter(e=>e!==n);if(e({projects:a,activeProjectId:o,manualProjectOrder:s}),ci(a,o,s),i){let e=i.path.replace(/\\/g,`/`).replace(/\/+$/,``)||`/`;$.setState(t=>{let n=new Map(t.availableWorktreesByProject);return n.delete(e),{availableWorktreesByProject:n}})}if(o){let e=a.find(e=>e.id===o);e&&(z.setDirectory(e.path),Pe.getState().setDirectory(e.path,{showOverlay:!1}))}else Pe.getState().goHome()},setActiveProject:n=>{if(yi)return;let{projects:r,activeProjectId:i}=t();if(i===n)return;let a=r.find(e=>e.id===n);a&&(e({activeProjectId:n}),ci(r,n,t().manualProjectOrder),z.setDirectory(a.path),Pe.getState().setDirectory(a.path,{showOverlay:!1}))},setActiveProjectIdOnly:n=>{if(yi)return;let{projects:r,activeProjectId:i}=t();i!==n&&r.find(e=>e.id===n)&&(e({activeProjectId:n}),ci(r,n,t().manualProjectOrder))},renameProject:(n,r)=>{if(yi)return;let i=r.trim();if(!i)return;let{projects:a,activeProjectId:o}=t(),s=a.map(e=>e.id===n?{...e,label:i}:e);e({projects:s}),ci(s,o,t().manualProjectOrder)},updateProjectMeta:(n,r)=>{if(yi)return;let{projects:i,activeProjectId:a}=t(),o=i.map(e=>{if(e.id!==n)return e;let t={...e};if(r.label!==void 0){let e=r.label.trim();e&&(t.label=e)}if(r.icon!==void 0&&(t.icon=r.icon),r.color!==void 0&&(t.color=r.color),r.iconBackground!==void 0&&(t.iconBackground=Xr(r.iconBackground)),r.defaultModel!==void 0){let e=Yr(r.defaultModel);e?t.defaultModel=e:delete t.defaultModel}return t});e({projects:o}),ci(o,a,t().manualProjectOrder)},uploadProjectIcon:async(e,n)=>{if(yi)return{ok:!1,error:`Custom icons are not supported in this runtime`};let r=ei(n);if(!r)return{ok:!1,error:`Only PNG, JPEG, and SVG are supported`};if(!Number.isFinite(n.size)||n.size<=0)return{ok:!1,error:`Icon file is empty`};if(n.size>5242880)return{ok:!1,error:`Icon exceeds size limit (5 MB)`};try{let i=(await ti(n)).replace(/^data:[^;]+;/i,`data:${r};`),a=await F(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({dataUrl:i})});if(!a.ok)return{ok:!1,error:(await a.json().catch(()=>null))?.error||`Failed to upload project icon`};let o=await a.json().catch(()=>null);return o?.settings&&t().synchronizeFromSettings(o.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to upload project icon`}}},removeProjectIcon:async e=>{if(yi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let n=await F(`/api/projects/${encodeURIComponent(e)}/icon`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!n.ok)return{ok:!1,error:(await n.json().catch(()=>null))?.error||`Failed to remove project icon`};let r=await n.json().catch(()=>null);return r?.settings&&t().synchronizeFromSettings(r.settings),{ok:!0}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to remove project icon`}}},discoverProjectIcon:async(e,n)=>{if(yi)return{ok:!1,error:`Custom icons are not supported in this runtime`};try{let r=await F(`/api/projects/${encodeURIComponent(e)}/icon/discover`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({force:n?.force===!0})}),i=await r.json().catch(()=>null);return r.ok?(i?.settings&&t().synchronizeFromSettings(i.settings),{ok:!0,skipped:i?.skipped===!0,reason:typeof i?.reason==`string`?i.reason:void 0}):{ok:!1,error:i?.error||`Failed to discover project icon`}}catch(e){return{ok:!1,error:(e instanceof Error?e.message:String(e))||`Failed to discover project icon`}}},reorderProjects:(n,r)=>{if(yi)return;let{projects:i,activeProjectId:a}=t();if(n<0||n>=i.length||r<0||r>=i.length||n===r)return;let o=[...i],[s]=o.splice(n,1);o.splice(r,0,s);let c=o.map(e=>e.id);e({projects:o,manualProjectOrder:c}),ci(o,a,c)},reorderProjectsById:(n,r)=>{if(yi)return;let{projects:i,activeProjectId:a}=t(),o=di(i,n,r);if(o===i)return;let s=o.map(e=>e.id);e({projects:o,manualProjectOrder:s}),ci(o,a,s)},moveProjectToTop:n=>{if(yi)return;let{projects:r,activeProjectId:i,manualProjectOrder:a}=t(),o=r.findIndex(e=>e.id===n);if(o<0)return;let s=o>0,c=a.length>0&&a[0]!==n;if(!s&&!c)return;let l=r;if(s){l=[...r];let[e]=l.splice(o,1);l.unshift(e)}let u=c?[n,...a.filter(e=>e!==n)]:a;e({projects:l,manualProjectOrder:u}),ci(l,i,u)},resetForRuntimeSwitch:()=>{if(yi)return;let t=ri(),n=oi(),r=t.some(e=>e.id===n)?n:t[0]?.id??null,i=new Set(t.map(e=>e.id));e({projects:t,activeProjectId:r,manualProjectOrder:ai().filter(e=>i.has(e))})},synchronizeFromSettings:n=>{if(yi)return;let r=ni(n.projects??[]),i=typeof n.activeProjectId==`string`&&n.activeProjectId.trim()?n.activeProjectId.trim():null,a=t();if(r.length===0&&a.projects.length>0){i!==a.activeProjectId&&(!i||a.projects.some(e=>e.id===i))&&(e({activeProjectId:i}),si(a.projects,i),li(t().manualProjectOrder));return}let o=JSON.stringify(a.projects)!==JSON.stringify(r),s=a.activeProjectId!==i;if(!o&&!s)return;let c=new Set(r.map(e=>e.id)),l=o?r.map(e=>e.id):t().manualProjectOrder.filter(e=>c.has(e));if(e({projects:r,activeProjectId:i,manualProjectOrder:l}),si(r,i),li(l),i){let e=r.find(e=>e.id===i);e&&(z.setDirectory(e.path),Pe.getState().setDirectory(e.path,{showOverlay:!1}))}},syncVSCodeWorkspaceFolders:(n,r)=>{if(!yi)return null;let i=t(),a=i.activeProjectId?i.projects.find(e=>e.id===i.activeProjectId)??null:null,o=r??a?.path??null,s=hi(n,i.projects,o);if(!s)return n.length===0&&!r&&i.projects.length>0&&(e({projects:[],activeProjectId:null}),si([],null)),null;let c=!_i(i.projects,s.projects),l=i.activeProjectId!==s.activeProjectId;return(c||l)&&(e({projects:s.projects,activeProjectId:s.activeProjectId}),si(s.projects,s.activeProjectId)),s.activeProject&&(z.setDirectory(s.activeProject.path),Pe.getState().setDirectory(s.activeProject.path,{showOverlay:!1})),s.activeProject},getActiveProject:()=>{let{projects:e,activeProjectId:n}=t();return n?e.find(e=>e.id===n)??null:null}}),{name:`projects-store`}));typeof window<`u`&&window.addEventListener(`openchamber:settings-synced`,e=>{let t=e.detail;t&&typeof t==`object`&&Ci.getState().synchronizeFromSettings(t)});var V=tt(),wi=e=>e?.trim()||null,Ti=()=>{let e=Ci.getState().getActiveProject?.();return wi(e?.path)??wi(z.getDirectory())},Ei=(e,t=r())=>N.commands.list(e,t),Di=(e=Ti(),t=r())=>{let n=wi(e);return{queryKey:Ei(n,t),queryFn:async({signal:e})=>{let t=await F(`/api/config/commands/metadata`,{method:`POST`,headers:{"Content-Type":`application/json`,"Cache-Control":`no-cache`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({catalog:!0}),query:n?{directory:n}:void 0,signal:e});if(!t.ok)throw Error(`Failed to fetch command metadata`);let r=await t.json();return Array.isArray(r.commands)?r.commands:[]},retry:2}},Oi=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=Ci(ji),i=Di(wi(n.directory)??wi(r)??wi(z.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],st(a)},ki=(e=Ti(),t=r())=>L.getQueryData(Ei(wi(e),t))??[],Ai=async(e,t,n)=>{let i=wi(t);if(r()!==n)return e.getQueryData(Ei(i,n))??[];let a=Di(i,n);return e.fetchQuery({...a,staleTime:0})};function ji(e){return e.getActiveProject?.()?.path??null}var Mi=200,Ni=500,Pi=512,Fi=1024,Ii=64,Li=100,Ri=100,zi=new Set([`__proto__`,`prototype`,`constructor`]),Bi=new Set([`text`,`audio`,`image`,`video`,`pdf`]),Vi=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||n>=127&&n<=159)return!0}return!1},Hi=e=>typeof e==`object`&&e&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype?e:void 0,Ui=e=>{if(typeof e==`string`)return e.length>0&&e.length<=Pi&&e.trim()===e&&!Vi(e)&&!zi.has(e)?e:void 0},Wi=e=>typeof e==`string`&&e.length>0&&e.length<=Fi&&e.trim()===e&&!Vi(e)?e:void 0,Gi=e=>typeof e==`string`&&e.length>0&&e.length<=Ii&&e.trim()===e&&!Vi(e)?e:void 0,Ki=e=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=1e9?e:void 0,qi=e=>{let t=Hi(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))!Bi.has(e)||typeof r!=`boolean`||(n[e]=r);return Object.keys(n).length?n:void 0},Ji=e=>{let t=Hi(e);if(!t)return;let n={};for(let e of[`temperature`,`reasoning`,`attachment`,`toolcall`])t[e]!==void 0&&typeof t[e]==`boolean`&&(n[e]=t[e]);let r=qi(t.input),i=qi(t.output);return r&&(n.input=r),i&&(n.output=i),Object.keys(n).length?n:void 0},Yi=e=>{let t=Hi(e),n=Ui(t?.id),r=Wi(t?.name);if(!t||!n||!r)return{partial:!0};let i={id:n,name:r},a=!1,o=Ji(t.capabilities);o&&(i.capabilities=o);let s=Hi(t.cost);if(s){let e={},t=Ki(s.input);t!==void 0&&(e.input=t);let n=Ki(s.output);n!==void 0&&(e.output=n);let r=Hi(s.cache);if(r){let t={},n=Ki(r.read);n!==void 0&&(t.read=n);let i=Ki(r.write);i!==void 0&&(t.write=i),Object.keys(t).length&&(e.cache=t)}Object.keys(e).length&&(i.cost=e)}let c=Hi(t.limit);if(c){let e={},t=Ki(c.context);t!==void 0&&(e.context=t);let n=Ki(c.output);n!==void 0&&(e.output=n),Object.keys(e).length&&(i.limit=e)}let l=Gi(t.release_date);l&&(i.release_date=l);let u=Hi(t.variants);if(u){let e={};for(let[t,[n,r]]of Object.entries(u).entries()){if(t>=Ri){a=!0;break}!Ui(n)||!Hi(r)||(e[n]={})}Object.keys(e).length&&(i.variants=e)}return{value:i,partial:a}},Xi=e=>{let t=Hi(e);if(!t||t.schemaVersion!==1||!Array.isArray(t.providers)||!Hi(t.default)||typeof t.partial!=`boolean`)throw Error(`Invalid provider catalog response`);let n=[],r=new Set,i=t.providers.length>Mi;for(let[e,a]of t.providers.entries()){if(e>=Mi)continue;let t=Hi(a),o=Ui(t?.id),s=Wi(t?.name),c=Hi(t?.models);if(!t||!o||!s||!c||r.has(o)){i=!0;continue}r.add(o);let l={},u=new Set;for(let[e,[t,n]]of Object.entries(c).entries()){if(e>=Ni||!Ui(t)||Object.prototype.hasOwnProperty.call(l,t)){i=!0;continue}let r=Yi(n);if(i||=r.partial,!r.value||u.has(r.value.id)){i=!0;continue}u.add(r.value.id),l[t]=r.value}n.push({id:o,name:s,models:l})}let a=Hi(t.default),o={};for(let[e,[t,n]]of Object.entries(a).entries()){let r=Ui(t),a=Ui(n);if(e>=Li||!r||!a){i=!0;continue}o[r]=a}return{schemaVersion:1,providers:n,default:o,partial:t.partial||i}},Zi=e=>(t=>e(t.state.data)?1/0:0),Qi=e=>{let t=e;return!!(t&&t.providers.length>0)},$i=e=>{if(typeof e!=`string`)return null;let t=e.trim().replace(/\\/g,`/`);return t?t.length>1?t.replace(/\/+$/,``):t:null},ea=(e,t=r())=>{let n=$i(e);return{queryKey:N.configCatalog.providers(n,t),queryFn:async({signal:e})=>{let r=await F(`/api/config/catalog/providers`,{method:`GET`,headers:{Accept:`application/json`,...n?{"x-opencode-directory":n}:{}},signal:e}),i;if(r.ok)i=Xi(await r.json());else{if(r.status!==404&&r.status!==501)throw Error(`Provider catalog request failed (${r.status})`);let t=await z.getSdkClient().config.providers(n?{directory:n}:void 0,{signal:e});if(t.error!==void 0||t.data===void 0||t.data===null)throw Error(`Legacy provider catalog request failed`);i=Xi({schemaVersion:1,providers:t.data.providers,default:t.data.default,partial:!1})}let a=L.getQueryData(N.configCatalog.providers(n,t));if(i.partial&&a&&!a.partial)throw Error(`Partial provider catalog refresh retained the complete snapshot`);return i},staleTime:Zi(Qi),gcTime:1/0,retry:2,retryDelay:100}},ta=(e,t=r())=>{let n=$i(e);return{queryKey:N.agents.raw(n,t),queryFn:({signal:e})=>z.listAgents(n,e),staleTime:Zi(e=>Array.isArray(e)&&e.length>0),gcTime:1/0,retry:2,retryDelay:100}},na=(e,t,n=r())=>{if(t.providerCatalogPartial===!0)return;let i=ea(e,n);if(L.getQueryData(i.queryKey)===void 0)try{let e=Xi({schemaVersion:1,providers:Array.isArray(t.providers)?t.providers.map(e=>{if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=e;return{...t,models:Array.isArray(t.models)?Object.fromEntries(t.models.map((e,t)=>[String(t),e])):t.models}}):t.providers,default:t.defaultProviders,partial:!1});if(e.partial||e.providers.length===0)return;L.setQueryData(i.queryKey,e)}catch{}},ra=(e,t=r())=>L.fetchQuery(ea(e,t)),ia=(e,t=r())=>L.fetchQuery(ta(e,t)),aa=async(e,t=r())=>{let n=ea(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},oa=async(e,t=r())=>{let n=ta(e,t);return await L.invalidateQueries({queryKey:n.queryKey,exact:!0}),L.fetchQuery(n)},sa=(e,t=r())=>L.invalidateQueries({queryKey:ea(e,t).queryKey,exact:!0}),ca=e=>e?.trim()||null,la=(e,t=r())=>N.agents.list(e,t),ua=(e,t=r())=>N.providers.list(e,t);function da(e){if(!e)return;let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/agents/`);if(n===-1)return;let r=t.substring(n+8).split(`/`);return r.length>1?r[0]:void 0}var fa=(e=Ti(),t=r())=>{let n=ca(e);return{queryKey:la(n,t),queryFn:async({signal:e})=>{let r=await L.fetchQuery(ta(n,t)),i=await F(`/api/config/agents/metadata`,{method:`POST`,headers:{"Cache-Control":`no-cache`,"Content-Type":`application/json`,...n?{"x-opencode-directory":n}:{}},body:JSON.stringify({names:r.map(e=>e.name)}),signal:e});if(!i.ok)throw Error(`Failed to fetch agent metadata`);let a=await i.json();return r.map(e=>{let t=a.agents?.[e.name]??{},n=t.scope??(t.sources?.md?.exists?t.sources.md.scope:void 0)??(t.sources?.json?.exists?t.sources.json.scope:void 0)??t.sources?.md?.scope??t.sources?.json?.scope,r=da(t.sources?.md?.path);return n===`project`||n===`user`?{...e,scope:n,group:r}:{...e,group:r}})},retry:2,staleTime:(e=>{let t=e.state.data;return t&&t.length>0?1/0:0}),gcTime:1/0}},pa=(e,t=r())=>{let n=ca(e);return{queryKey:ua(n,t),queryFn:async()=>{let e=await z.getProvidersForConfig(n);return(Array.isArray(e.providers)?e.providers:[]).map(e=>({...e,models:Object.values(e.models??{})}))},retry:2}},ma=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Ci(ya),a;t[2]===i?a=t[3]:(a=fa(ca(i)??ca(z.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],st(o)},ha=(e,t)=>{let n=(0,V.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=fa(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],st(o)},ga=(e,t)=>{let n=(0,V.c)(7),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a;n[2]===e?a=n[3]:(a=pa(e),n[2]=e,n[3]=a);let o;return n[4]!==i.enabled||n[5]!==a?(o={...a,enabled:i.enabled},n[4]=i.enabled,n[5]=a,n[6]=o):o=n[6],st(o)},_a=(e=Ti(),t=r())=>L.getQueryData(la(ca(e),t))??[],va=async(e,t,n)=>{let i=ca(t);if(r()!==n)return e.getQueryData(la(i,n))??[];let a=fa(i,n);return await e.invalidateQueries({queryKey:a.queryKey,exact:!0}),e.fetchQuery(a)};function ya(e){return e.getActiveProject?.()?.path??null}var ba=[{id:`anthropic`,label:`Anthropic`,description:`Anthropic's public skills repository`,source:`anthropics/skills`,defaultSubpath:`skills`,sourceType:`github`},{id:`clawdhub`,label:`ClawdHub`,description:`Community skill registry with vector search`,source:`clawdhub:registry`,sourceType:`clawdhub`}],xa=e=>e?.trim()||null,Sa=()=>{let e=Ci.getState().getActiveProject?.();return xa(e?.path)??xa(z.getDirectory())},Ca=(e,t=r())=>N.skillsCatalog.sources(e,t),wa=(e,t,n=r())=>N.skillsCatalog.source(e,t,n),Ta=new Map,Ea=(e=Sa(),t=r(),n=!1)=>{let i=xa(e);return{queryKey:Ca(i,t),queryFn:({signal:e})=>Ia(i,n,e),staleTime:5e3,retry:2}},Da=(e,t,n=r(),i=!1)=>{let a=xa(e);return rt({queryKey:wa(a,t,n),queryFn:({signal:e,pageParam:n})=>La(a,t,n,i,e),initialPageParam:null,getNextPageParam:(e,t)=>Ra(e,t),staleTime:5e3,retry:2})},Oa=e=>{let t=(0,V.c)(7),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let r=n,i=Ci(Va),a;t[2]===i?a=t[3]:(a=Ea(xa(i)??xa(z.getDirectory())),t[2]=i,t[3]=a);let o;return t[4]!==r.enabled||t[5]!==a?(o={...a,enabled:r.enabled},t[4]=r.enabled,t[5]=a,t[6]=o):o=t[6],st(o)},ka=(e,t)=>{let n=(0,V.c)(8),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,a=Ci(Ha),o;n[2]!==a||n[3]!==e?(o=Da(xa(a)??xa(z.getDirectory()),e),n[2]=a,n[3]=e,n[4]=o):o=n[4];let s=i.enabled&&!!e,c;return n[5]!==o||n[6]!==s?(c={...o,enabled:s},n[5]=o,n[6]=s,n[7]=c):c=n[7],ct(c)},Aa=e=>{let t=new Map;for(let n of e)for(let e of n.items)t.set(`${e.sourceId}:${e.skillDir}`,e);return Array.from(t.values())},ja=(e=L,t=Sa(),n=r())=>e.getQueryData(Ca(xa(t),n))??ba,Ma=(e=L,t,n,i=r())=>e.getQueryData(wa(xa(t),n,i)),Na=async(e,t,n)=>{let i=xa(t);return r()===n?e.fetchQuery({...Ea(i,n,!0),staleTime:0}):ja(e,i,n)},Pa=async(e,t,n,i)=>{let a=xa(t);if(r()!==i)return Ma(e,a,n,i);let o=wa(a,n,i),s=JSON.stringify(o),c=(Ta.get(s)??0)+1;Ta.set(s,c),await e.cancelQueries({queryKey:o,exact:!0});let l=await La(a,n,null,!0,new AbortController().signal);if(r()!==i||Ta.get(s)!==c)return Ma(e,a,n,i);let u={pages:[l],pageParams:[null]};return e.setQueryData(o,u),u},Fa=(e,t,n)=>Promise.all([e.invalidateQueries({queryKey:Ca(xa(t),n)}),e.invalidateQueries({queryKey:[n,`skillsCatalog`,`source`,xa(t)],exact:!1})]);async function Ia(e,t,n){let r=await Ba(za(`/api/config/skills/catalog`,{directory:e,refresh:t}),n),i=await r.json().catch(()=>null);if(!r.ok||!i?.ok)throw Error(i?.error?.message??`Failed to load catalog (${r.status})`);return i.sources?.length?i.sources:ba}async function La(e,t,n,r,i){let a={directory:e,sourceId:t,cursor:n,refresh:r},o=await Ba(za(`/api/config/skills/catalog/source`,a),i),s=await o.json().catch(()=>null);if(o.ok&&(s?.ok||Array.isArray(s?.items)))return{items:s.items??[],nextCursor:s.nextCursor??null};let c=await Ba(za(`/api/config/skills/catalog`,a),i),l=await c.json().catch(()=>null),u=l?.itemsBySource?.[t];if(c.ok&&l?.ok&&Array.isArray(u))return{items:u,nextCursor:null};throw Error(s?.error?.message??l?.error?.message??`Failed to load catalog source (${o.status})`)}function Ra(e,t){let n=e.nextCursor;if(!(!n||e.items.length===0)&&!t.slice(0,-1).some(e=>e.nextCursor===n))return n}function za(e,t){let n=new URLSearchParams;t.directory&&n.set(`directory`,t.directory),t.sourceId&&n.set(`sourceId`,t.sourceId),t.cursor&&n.set(`cursor`,t.cursor),t.refresh&&n.set(`refresh`,`true`);let r=n.toString();return r?`${e}?${r}`:e}async function Ba(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{return await F(e,{method:`GET`,headers:{Accept:`application/json`},signal:AbortSignal.any([t,n.signal])})}finally{clearTimeout(r)}}function Va(e){return e.getActiveProject?.()?.path??null}function Ha(e){return e.getActiveProject?.()?.path??null}var Ua=e=>e?.trim()||null,Wa=()=>{let e=Ci.getState().getActiveProject?.();return Ua(e?.path)??Ua(z.getDirectory())},Ga=e=>{let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/skills/`);if(n===-1)return;let r=t.slice(n+8).split(`/`);return r.length>=3?r[0]:void 0},Ka=(e,t=r())=>N.skills.list(e,t),qa=(e=Wa(),t=r())=>{let n=Ua(e);return{queryKey:Ka(n,t),queryFn:async({signal:e})=>{let t=await F(`/api/config/skills`,{query:{summary:`true`,...n?{directory:n}:{}},signal:e});if(!t.ok)throw Error(`Failed to list skills: ${t.status}`);return((await t.json()).skills??[]).map(e=>({name:e.name,path:e.path,scope:e.scope??`user`,source:e.source??`opencode`,description:e.description??``,group:Ga(e.path)}))},retry:2}},Ja=e=>{let t=(0,V.c)(3),n=e===void 0?{}:e,r=Ci(Za),i=qa(Ua(n.directory)??Ua(r)??Ua(z.getDirectory())),a;return t[0]!==n.enabled||t[1]!==i?(a={...i,enabled:n.enabled},t[0]=n.enabled,t[1]=i,t[2]=a):a=t[2],st(a)},Ya=(e=L,t=Wa(),n=r())=>e.getQueryData(Ka(Ua(t),n))??[],Xa=async(e,t,n=r())=>{let i=Ua(t);return r()===n?e.fetchQuery({...qa(i,n),staleTime:0}):Ya(e,i,n)};function Za(e){return e.getActiveProject?.()?.path??null}var Qa=()=>{let e=z.getDirectory();if(typeof e==`string`&&e.trim().length>0)return e;try{let e=window.__zustand_directory_store__;if(e)return e.getState().currentDirectory}catch{}return null},$a=Ti,eo=e=>{let t=e;return t.native===!0||t.builtIn===!0},to=e=>{let t=e;return t.hidden===!0||t.options?.hidden===!0},no=e=>e.filter(e=>!to(e)),ro=`useAgentsStore`,io=e=>new Promise(t=>setTimeout(t,e)),ao=2e4,oo=300,so=4,co=800,lo=200,uo=2e3,fo=e=>e!=null,po=Oe()(je(ke(e=>({selectedAgentName:null,agentDraft:null,setSelectedAgent:t=>e({selectedAgentName:t}),setAgentDraft:t=>e({agentDraft:t}),loadAgents:async()=>{let e=$a(),t=r();try{return await va(L,e,t),!0}catch{return!1}},createAgent:async t=>ho(`POST`,t.name,t,e),updateAgent:async(t,n)=>ho(`PATCH`,t,n,e),deleteAgent:async(t,n)=>ho(`DELETE`,t,{scope:n},e),getAgentByName:e=>_a().find(t=>t.name===e),getVisibleAgents:()=>no(_a())}),{name:`agents-store`,storage:h(),partialize:e=>({selectedAgentName:e.selectedAgentName})}),{name:`agents-store`}));typeof window<`u`&&(window.__zustand_agents_store__=po);async function mo(e,t){await va(L,e,t),r()===t&&jr(`agents`,{source:ro})}async function ho(e,t,n,i){Rr(`${{POST:`Creating`,PATCH:`Updating`,DELETE:`Deleting`}[e]} agent configuration…`);let a=$a(),o=r();try{let s={};if(e===`POST`&&(s.mode=n?.mode||`subagent`,n?.description&&(s.description=n.description),n?.model&&(s.model=n.model),n?.variant&&(s.variant=n.variant),fo(n?.temperature)&&(s.temperature=n.temperature),fo(n?.top_p)&&(s.top_p=n.top_p),n?.prompt&&(s.prompt=n.prompt),n?.permission&&(s.permission=n.permission),n?.disable!==void 0&&(s.disable=n.disable),n?.scope&&(s.scope=n.scope)),e===`PATCH`){for(let e of[`mode`,`description`,`model`,`prompt`,`permission`,`disable`])n?.[e]!==void 0&&(s[e]=n[e]);for(let e of[`variant`,`temperature`,`top_p`])e in(n??{})&&(s[e]=n?.[e]??null)}let c=a?`?directory=${encodeURIComponent(a)}`:``,l=await F(`/api/config/agents/${encodeURIComponent(t)}${c}`,{method:e,headers:{"Content-Type":`application/json`,...a?{"x-opencode-directory":a}:{}},body:JSON.stringify(e===`DELETE`?{scope:n?.scope}:s)}),u=await l.json().catch(()=>null);if(!l.ok)throw Error(u?.error||`Failed to ${e.toLowerCase()} agent`);return r()===o?(e===`DELETE`&&po.getState().selectedAgentName===t&&i({selectedAgentName:null}),u?.requiresManualRestart?{ok:!0,requiresManualRestart:!0}:(u?.requiresReload??!0?await yo({message:u?.message,delayMs:u?.reloadDelayMs,scopes:[`agents`],mode:`projects`,transportIdentity:o,queryDirectory:a}):await mo(a,o),{ok:!0})):{ok:!0,...u?.requiresManualRestart?{requiresManualRestart:!0}:{}}}catch(t){return console.error(`[AgentsStore] ${e} agent failed:`,t),{ok:!1}}finally{zr()}}async function go(e){let t=typeof e==`number`&&e>0?Math.min(e,oo):0;t>0&&await io(t);let n=Date.now(),r=0,i=null;for(;Date.now()-n<ao;){r+=1,Br(`Waiting for OpenCode… (attempt ${r})`);try{if(await z.checkHealth())return;i=Error(`OpenCode health check reported not ready`)}catch(e){i=e}let e=Date.now()-n;await io(r<=so&&e<1200?oo:Math.min(co+Math.max(0,r-so)*lo,uo))}throw i||Error(`OpenCode did not become ready in time`)}var _o=e=>{if(!e||e.length===0)return[`all`];let t=Array.from(new Set(e));return t.includes(`all`)?[`all`]:t};async function vo(e={}){let{message:t,delayMs:n}=e,i=e.transportIdentity??r(),a=e.queryDirectory??$a(),o=_o(e.scopes),s=e.mode??(o.includes(`all`)?`projects`:`active`);try{Br(t||`Refreshing configuration…`)}catch{}try{if(r()!==i||(await go(n),r()!==i))return;let e=G.getState(),t=o.includes(`all`)||o.includes(`providers`),c=o.includes(`all`)||o.includes(`agents`),l=o.includes(`all`)||o.includes(`agents`),u=o.includes(`all`)||o.includes(`commands`),d=o.includes(`all`)||o.includes(`skills`),f=Qa(),p=s===`projects`?Ci.getState().projects:[],m=Array.from(new Set([...f?[f]:[],...p.map(e=>e.path).filter(Boolean)]));o.includes(`all`)&&s===`projects`&&G.setState({directoryScoped:{}}),t&&G.getState().invalidateProviderCache(s===`active`?f:void 0);let h=[];for(let n of m)t&&h.push(e.loadProviders({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0)),c&&h.push(e.loadAgents({directory:n,source:`agentsStore:refreshConfig`}).then(()=>void 0));let g=[];l&&g.push(va(L,a,i).then(()=>void 0)),u&&g.push(Ai(L,a,i).then(()=>void 0)),d&&(g.push(Xa(L,a,i).then(()=>void 0)),g.push(Fa(L,a,i).then(()=>void 0))),Br(`Refreshing configuration…`),await Promise.all([...h,...g])}catch(e){throw Br(`OpenCode refresh failed. Please retry.`),await io(1500),e}finally{zr()}}async function yo(e){await vo(e)}async function bo(e){Rr(e?.message||`Reloading OpenCode configuration…`);let t=e?.transportIdentity??r(),n=e?.queryDirectory??$a();try{let i=await F(`/api/config/reload`,{method:`POST`,headers:{"Content-Type":`application/json`}}),a=await i.json().catch(()=>null);if(!i.ok){let e=a?.error||`Failed to reload configuration`;throw Error(e)}if(r()!==t){zr();return}let o={...e,transportIdentity:t,queryDirectory:n,scopes:e?.scopes??[`all`],mode:e?.mode??`projects`};a?.requiresReload?await yo({...o,message:a.message,delayMs:a.reloadDelayMs}):await yo(o)}catch(e){throw console.error(`[reloadOpenCodeConfiguration] Failed:`,e),Br(`Failed to reload configuration. Please try again.`),await io(2e3),zr(),e}}var xo=null;xo||=Ar(e=>{if(e.source!==ro&&Mr(e,`agents`)){let{loadAgents:e}=po.getState();e()}});var So=e=>typeof e==`string`?e.trim():``,Co=(e,t)=>!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`,wo={ai:`AI`,api:`API`,ernie:`ERNIE`,glm:`GLM`,gpt:`GPT`,it:`IT`,lfm:`LFM`,lm:`LM`,oss:`OSS`,pdf:`PDF`,rp:`RP`,slerp:`SLERP`,tars:`TARS`,ui:`UI`,vl:`VL`,vlm:`VLM`,aion:`Aion`,anthropic:`Anthropic`,chatgpt:`ChatGPT`,claude:`Claude`,codex:`Codex`,codestral:`Codestral`,command:`Command`,deepseek:`DeepSeek`,gemini:`Gemini`,gemma:`Gemma`,grok:`Grok`,hunyuan:`Hunyuan`,kimi:`Kimi`,llama:`Llama`,minimax:`MiniMax`,mistral:`Mistral`,mixtral:`Mixtral`,nemotron:`Nemotron`,openai:`OpenAI`,qwen:`Qwen`,rekaai:`RekaAI`},To=e=>e?e[0].toUpperCase()+e.slice(1).toLowerCase():``,Eo=e=>{let t=e.startsWith(`~`)?e.slice(1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t},Do=e=>{let t=e.lastIndexOf(`:`);return t<=0||t>=e.length-1?{base:e,suffix:``}:{base:e.slice(0,t),suffix:e.slice(t+1)}},Oo=e=>{let t=e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).split(/[-_\s]+/).map(e=>e.trim()).filter(Boolean),n=[];for(let e=0;e<t.length;e+=1){let r=t[e],i=t[e+1],a=t[e+2];if(/^(19|20)\d{2}$/.test(r)&&/^\d{2}$/.test(i??``)&&/^\d{2}$/.test(a??``)){n.push(`${r}-${i}-${a}`),e+=2;continue}if(/^\d$/.test(r)&&/^\d$/.test(i??``)){n.push(`${r}.${i}`),e+=1;continue}n.push(r)}return n},ko=e=>{let t=e.toLowerCase(),n=wo[t];if(n)return n;let r=t.match(/^qwen(\d(?:\.\d+)?)$/);return r?`Qwen${r[1]}`:/^o\d/.test(t)?t:/^v\d/.test(t)?`V${e.slice(1).toUpperCase()}`:/^\d+[on]$/.test(t)?t:/^[a-z]\d+[a-z]?$/.test(t)?t.toUpperCase():/^\d+(?:x\d+)?[a-z]+$/.test(t)?t.replace(/[a-z]+$/i,e=>e.toUpperCase()):/^\d+(?:\.\d+)?[a-z]$/.test(t)?t.replace(/[a-z]$/i,e=>e.toUpperCase()):/^[a-z]+\d+(?:\.\d+)?[a-z]*$/.test(t)?To(t).replace(/([a-z])(\d)/i,`$1$2`):To(e)},Ao=e=>{let t=[...e];return t[0]===`GPT`&&t[1]&&/^(?:\d|\d+[a-z]|OSS$)/i.test(t[1])&&t.splice(0,2,`GPT-${t[1]}`),t[0]===`GLM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`GLM-${t[1]}`),t[0]===`LFM`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`LFM${t[1]}`),t[0]===`Qwen`&&t[1]&&/^\d/.test(t[1])&&t.splice(0,2,`Qwen${t[1]}`),t},jo=e=>{let t=So(e).toLowerCase();return t?t===`free`||t===`thinking`?t:Mo(t):``},Mo=e=>{let t=So(e);if(!t)return``;let{base:n,suffix:r}=Do(Eo(t)),i=Ao(Oo(n).map(ko));if(i.length>=2){let e=i[i.length-1],t=i[i.length-2];e===`Reasoning`&&t===`Non`&&i.splice(i.length-2,2,`(Non-Reasoning)`)}let a=i[i.length-1];/^(19|20)\d{2}-\d{2}-\d{2}$/.test(a??``)&&(i[i.length-1]=`(${a})`);let o=i.join(` `).replace(/\s+\(/g,` (`).trim(),s=jo(r);return s?`${o} (${s})`:o},No=e=>!/\s/.test(e)&&/[-_]/.test(e),Po=(e,t,n={})=>{let r=So(e?.name),i=So(e?.id)||So(t);return r&&!No(r)?Co(r,n.maxLength):i?Co(Mo(i),n.maxLength):r?Co(Mo(r.toLowerCase()),n.maxLength):n.fallbackLabel??``},Fo=(e,t)=>{let n=e?.models;if(!(!n||!t))return Array.isArray(n)?n.find(e=>So(e.id)===t):n[t]},Io=(e,t,n={})=>{let r=So(t);return Po(Fo(e,r),r,n)},Lo=(e,t,n,r)=>{let i=n.find(e=>e.name===t),a=i?.model?.providerID,o=i?.model?.modelID,s=!!(a&&o&&r.some(e=>e.id===a&&e.models?.some(e=>e.id===o)));return{providerID:s?a:e.providerID,modelID:s?o:e.modelID,agent:t}},Ro=e=>e===`primary`||e===`all`||e==null,zo=e=>e.filter(e=>Ro(e.mode)),Bo=(e,t,n=1)=>{let r=zo(e);if(r.length<=1)return null;let i=r.findIndex(e=>e.name===t);return r[((i>=0?i:0)+n+r.length)%r.length]?.name??null},Vo=e=>e.charAt(0).toUpperCase()+e.slice(1),Ho=(e,t)=>{if(t){let n=e.find(e=>e.name===t);return Vo(n?n.name:t)}let n=e.filter(e=>Ro(e.mode)),r=n.find(e=>e.name===`build`)||n[0]||e[0];return r?Vo(r.name):`Select agent`},Uo=(e,t,n=``)=>Io(e,t,{fallbackLabel:n}),Wo=e=>{if(!e||e.trim().length===0)return`Default`;let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:Vo(t)},Go=e=>typeof e==`object`&&!!e,Ko=e=>typeof e==`string`&&e.length>0,qo=e=>{let t=new Map;if(!Array.isArray(e))return t;for(let n of e){if(!Array.isArray(n)||n.length<2)continue;let[e,r]=n;if(!Ko(e)||!Array.isArray(r))continue;let i=new Map;for(let e of r){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Ko(t)||!Array.isArray(n))continue;let r=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Ko(t)||!Ko(n)||r.set(t,n)}r.size>0&&i.set(t,r)}i.size>0&&t.set(e,i)}return t},Jo=Oe()(ke((e,t)=>({sessionModelSelections:new Map,sessionAgentSelections:new Map,sessionAgentModelSelections:new Map,sessionAgentModelVariantSelections:new Map,lastUsedProvider:null,saveSessionModelSelection:(t,n,r)=>e(e=>{let i=new Map(e.sessionModelSelections);return i.delete(t),i.set(t,{providerId:n,modelId:r}),{sessionModelSelections:i,lastUsedProvider:{providerID:n,modelID:r}}}),getSessionModelSelection:e=>t().sessionModelSelections.get(e)??null,saveSessionAgentSelection:(t,n)=>e(e=>{if(e.sessionAgentSelections.get(t)===n)return e;let r=new Map(e.sessionAgentSelections);return r.delete(t),r.set(t,n),{sessionAgentSelections:r}}),getSessionAgentSelection:e=>t().sessionAgentSelections.get(e)??null,saveAgentModelForSession:(t,n,r,i)=>e(e=>{let a=e.sessionAgentModelSelections.get(t)?.get(n);if(a?.providerId===r&&a?.modelId===i)return e;let o=new Map(e.sessionAgentModelSelections),s=new Map(o.get(t)??new Map);return o.delete(t),s.set(n,{providerId:r,modelId:i}),o.set(t,s),{sessionAgentModelSelections:o}}),getAgentModelForSession:(e,n)=>t().sessionAgentModelSelections.get(e)?.get(n)??null,saveAgentModelVariantForSession:(t,n,r,i,a)=>e(e=>{let o=`${r}/${i}`,s=new Map(e.sessionAgentModelVariantSelections),c=s.get(t),l=new Map(c??new Map),u=l.get(n),d=new Map(u??new Map);return a?d.get(o)===a?e:(s.delete(t),d.set(o,a),l.set(n,d),s.set(t,l),{sessionAgentModelVariantSelections:s}):d.has(o)?(d.delete(o),d.size===0?l.delete(n):l.set(n,d),s.delete(t),l.size>0&&s.set(t,l),{sessionAgentModelVariantSelections:s}):e}),getAgentModelVariantForSession:(e,n,r,i)=>{let a=`${r}/${i}`;return t().sessionAgentModelVariantSelections.get(e)?.get(n)?.get(a)}}),{name:`selection-store`,version:2,storage:h(),partialize:e=>({sessionModelSelections:Array.from(e.sessionModelSelections.entries()).slice(-150),sessionAgentSelections:Array.from(e.sessionAgentSelections.entries()).slice(-150),sessionAgentModelSelections:Array.from(e.sessionAgentModelSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries())]),sessionAgentModelVariantSelections:Array.from(e.sessionAgentModelVariantSelections.entries()).slice(-150).map(([e,t])=>[e,Array.from(t.entries()).map(([e,t])=>[e,Array.from(t.entries())])]),lastUsedProvider:e.lastUsedProvider}),merge:(e,t)=>{let n=Go(e)?e:void 0,r=new Map;if(Array.isArray(n?.sessionAgentModelSelections))for(let e of n.sessionAgentModelSelections){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;if(!Ko(t)||!Array.isArray(n))continue;let i=new Map;for(let e of n){if(!Array.isArray(e)||e.length<2)continue;let[t,n]=e;!Ko(t)||typeof n!=`object`||!n||!Ko(n.providerId)||!Ko(n.modelId)||i.set(t,{providerId:n.providerId,modelId:n.modelId})}i.size>0&&r.set(t,i)}return{...t,lastUsedProvider:n?.lastUsedProvider??t.lastUsedProvider,sessionModelSelections:new Map(Array.isArray(n?.sessionModelSelections)?n.sessionModelSelections:[]),sessionAgentSelections:new Map(Array.isArray(n?.sessionAgentSelections)?n.sessionAgentSelections:[]),sessionAgentModelSelections:r,sessionAgentModelVariantSelections:qo(n?.sessionAgentModelVariantSelections)}},migrate:e=>e})),Yo=_,Xo=(e,t)=>{let n=Yo(t);if(!n)return null;let r=null;for(let t of e){let e=Yo(t.path);e&&(n!==e&&!n.startsWith(`${e}/`)||(!r||e.length>(Yo(r.path)?.length??0))&&(r=t))}return r},Zo=(e,t,n)=>{let r=Yo(n);if(!r)return null;let i=null,a=null,o=-1;for(let[e,n]of t.entries())for(let t of n){let n=Yo(t.path);n&&(r!==n&&!r.startsWith(`${n}/`)||n.length>o&&(o=n.length,i=t,a=Yo(e)))}if(!i)return null;let s=[Yo(i.projectDirectory),a].filter(e=>!!e);for(let t of s){let n=e.find(e=>Yo(e.path)===t)??null;if(n)return n;let r=Xo(e,t);if(r)return r}return null},Qo=(e,t,n)=>Zo(e,t,n)??Xo(e,n),$o=e=>{if(!e)return null;let t=e.indexOf(`/`);return t<=0||t>=e.length-1?null:{providerId:e.slice(0,t),modelId:e.slice(t+1)}},es=[`concise`,`detailed`,`mentor`,`pushback`,`noFiller`,`matchEnergy`,`warmPeer`],ts=e=>typeof e==`string`&&es.includes(e),ns=e=>{switch(e){case`concise`:return`Keep replies short. Answer first, no preamble or recap of the question. Write like you're texting a colleague who already has the context — plain sentences, not headings or bullets. Reach for a list only when the content is genuinely a list; never use one to look organised.`;case`detailed`:return`Take the space you need to actually explain things. Walk through what's going on, why it matters, and where the real tradeoffs are. Prefer flowing prose over bullet points and headings — structure the answer with paragraphs and let the reasoning carry it. Lists are fine when something really is enumerable, but don't fragment a normal explanation into bullets.`;case`mentor`:return`Talk like a patient senior engineer pairing with someone less experienced. Explain the underlying idea before the answer, think out loud about how you'd approach it, and drop in a small concrete example when it actually helps. Keep it conversational — no lecture format, no checklists, no numbered steps unless the task literally is a sequence.`;case`pushback`:return`Don't agree automatically. If something I say sounds off — a wrong assumption, a flawed approach, a request that won't actually do what I think it will — push back first. Explain what you disagree with and why, and only proceed once I've responded. Disagreement is welcome; sycophancy is not. Don't soften it with 'you might want to consider' — just say it.`;case`noFiller`:return`Cut the filler. No 'Great question', no 'Certainly', no 'I'll help you with that', no restating what I just asked. No closing summary of what you did when the diff or output already shows it. No trailing 'let me know if you need anything else'. Open with the actual content and stop when you're done.`;case`matchEnergy`:return`Mirror the size and register of my message. A one-line question gets a one-line answer. A casual aside gets a casual reply, not a structured breakdown. If I write three words, don't respond with three paragraphs. Match the tone too — informal stays informal, technical stays technical. Don't inflate small asks into full essays.`;case`warmPeer`:return`Talk like a colleague, not an assistant. First person is fine and encouraged — 'I'd do this', 'I don't love that approach', 'that was sloppy of me'. Have actual opinions and share them. Push back when you disagree. Admit when you screwed up without grovelling. Skip the corporate helpfulness and performative politeness — just be a person.`}},rs=new Map,is=new Map,as=({enabled:e,preset:t,customInstructions:n})=>e?t===`custom`?(typeof n==`string`?n.trim():``)||null:ts(t)?ns(t):null:null,os=(e,t=r())=>{rs.set(t,{enabled:e.enabled===!0,preset:e.preset,customInstructions:e.customInstructions})},ss=(e=r())=>{let t=rs.get(e);if(t)return as(t)},cs=async()=>{let e=r(),t=ss(e);if(t!==void 0)return t;let n=is.get(e);if(n)return n;let i=(async()=>{let t=await me(e);return os({enabled:t.responseStyleEnabled,preset:t.responseStylePreset,customInstructions:t.responseStyleCustomInstructions},e),ss(e)??null})();is.set(e,i);try{return await i}finally{is.get(e)===i&&is.delete(e)}},ls;(function(e){function t(e,t,n){let r=0,i=e.length-1;for(;r<=i;){let a=Math.floor((r+i)/2),o=n(e[a]);if(o===t)return{found:!0,index:a};o<t?r=a+1:i=a-1}return{found:!1,index:r}}e.search=t})(ls||={});function us(e,t){return e.findIndex(e=>e.id===t)}function ds(e,t){if(!t)return e.slice();let n=us(e,t);return n<0?e.slice():e.slice(0,n)}function fs(e,t,n){let r=us(e,n);return r<0?!1:us(e,t)>=r}function ps(e,t){if(!t){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}return}let n=us(e,t);if(!(n<0))for(let t=n-1;t>=0;--t){let n=e[t];if(n?.role===`user`)return n}}function ms(e,t){let n=us(e,t);if(!(n<0))for(let t=n+1;t<e.length;t+=1){let n=e[t];if(n?.role===`user`)return n}}var hs=`openchamber:sync:debug`,gs;function _s(){if(gs!==void 0)return gs;try{gs=typeof localStorage<`u`&&localStorage.getItem(hs)===`1`}catch{gs=!1}return gs}function vs(e,...t){_s()&&(`${e}`,[...t])}var ys={pipeline:{coalesced:(e,t)=>vs(`pipeline`,`coalesced`,e,t),flush:e=>vs(`pipeline`,`flush`,`${e} events`)},reducer:{messageUpdatedUnchanged:(e,t,n,r,i)=>vs(`reducer`,`message.updated UNCHANGED (skipped)`,{sessionID:e,messageID:t,role:n,finish:r,completed:i}),partUpdatedNoExistingParts:(e,t,n)=>vs(`reducer`,`message.part.updated NO EXISTING PARTS`,{messageID:e,partID:t,partType:n}),partDeltaNoParts:(e,t)=>vs(`reducer`,`message.part.delta DROPPED (no parts array)`,{messageID:e,partID:t}),partDeltaNotFound:(e,t)=>vs(`reducer`,`message.part.delta DROPPED (partID not found)`,{messageID:e,partID:t}),partSkipped:(e,t,n)=>vs(`reducer`,`message.part.updated SKIPPED (type filtered)`,{messageID:e,partID:t,partType:n})},dispatch:{eventNoChange:(e,t,n)=>vs(`dispatch`,`event → no change`,{eventType:e,sessionID:t,messageID:n}),eventApplied:(e,t,n)=>vs(`dispatch`,`event → applied`,{eventType:e,sessionID:t,messageID:n})},recovery:{materializing:e=>vs(`recovery`,`materializing session`,e)}},bs=new Set([`patch`,`step-start`,`step-finish`]),xs=[`text`,`output`],Ss=new Set([`completed`,`error`,`aborted`,`failed`,`timeout`,`cancelled`]);function Cs(e,t){if(!e||t.length===0)return(e??``)+t;if(e.endsWith(t))return e;let n=Math.min(e.length,t.length);for(let r=n;r>0;r--)if(e.endsWith(t.slice(0,r)))return e+t.slice(r);return e+t}function ws(e,t){let n=[];for(let r of xs){let i=e[r],a=t[r];typeof i==`string`&&typeof a==`string`&&i.length!==0&&a.length!==0&&(a===i||a.startsWith(i)||i.startsWith(a))&&n.push(r)}return n}function Ts(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function Es(e){if(e.type!==`tool`)return;let t=e.state?.status;return typeof t==`string`?t:void 0}function Ds(e,t){if(e.type!==`tool`||t.type!==`tool`)return!1;let n=Es(e),r=Es(t);if(n&&Ss.has(n)&&(!r||!Ss.has(r)))return!0;let i=Ts(e),a=Ts(t);return typeof i==`number`&&typeof a!=`number`}function Os(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return e===t;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}var ks=[`agent`,`mode`,`providerID`,`modelID`,`variant`,`model`],As=[`input`,`output`,`reasoning`];function js(e){if(!e||typeof e!=`object`)return!1;let t=e;return As.some(e=>typeof t[e]==`number`&&Number.isFinite(t[e])&&t[e]>0)}function Ms(e){if(!e||typeof e!=`object`)return!1;let t=e;return As.every(e=>typeof t[e]!=`number`||!Number.isFinite(t[e])||t[e]<=0)}function Ns(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function Ps(e,t){let n={...e,...t},r=e,i=t,a=n;for(let e of ks){let t=Ns(i[e]),n=Ns(r[e]);t?a[e]=t:n?a[e]=n:delete a[e]}return(e.time||t.time)&&(n.time={...e.time,...t.time}),js(r.tokens)&&Ms(i.tokens)&&(a.tokens=r.tokens),n}function Fs(e,t){if(e.role!==t.role||e.finish!==t.finish||e.time?.completed!==t.time?.completed)return!1;for(let n of[`summary`,`error`,`cost`,`tokens`,`structured`,`model`,`tools`,`format`,`variant`,`agent`,`mode`,`providerID`,`modelID`,`system`])if(!Os(e[n],t[n]))return!1;return!0}function Is(e,t,n){if(!t)return!1;let r=e.message[t];return r?us(r,n)>=0:!1}function Ls(e,t){switch(t.type){case`message.updated`:{let n=t.properties.info,r=e.message[n.sessionID],i=!!r&&r.every(t=>t.role!==`assistant`||e.part[t.id]!==void 0);if(n.role===`assistant`&&i&&e.part[n.id]===void 0&&(e.part[n.id]=[]),!r)return e.message[n.sessionID]=[n],!0;let a=us(r,n.id);if(a>=0){let t=r[a],i=Ps(t,n);if(Fs(t,i))return ys.reducer.messageUpdatedUnchanged(n.sessionID,n.id,n.role,n.finish,n.time?.completed),!1;let o=[...r];o[a]=i,e.message[n.sessionID]=o}else e.message[n.sessionID]=[...r,n];return!0}case`message.removed`:{let n=t.properties,r=e.message[n.sessionID];if(r){let t=us(r,n.messageID);if(t>=0){let i=[...r];i.splice(t,1),e.message[n.sessionID]=i}}return delete e.part[n.messageID],!0}case`message.part.updated`:{let n=t.properties,r=n.part;if(bs.has(r.type))return ys.reducer.partSkipped(r.messageID,r.id,r.type),!1;let i=r.messageID,a=n.sessionID??r.sessionID;if(!i)return!1;let o=!Is(e,a,i),s=e.part[i];if(!s)return ys.reducer.partUpdatedNoExistingParts(i,r.id,r.type),e.part[i]=[r],!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}};let c=[...s],l=ls.search(c,r.id,e=>e.id);if(l.found){let e=c[l.index];if(Ds(e,r))return!1;let t=ws(e,r);c[l.index]=t.length>0?{...r,__dedupeNextDeltaFields:t}:r}else{let e=r.type===`text`||r.type===`file`?c.findIndex(e=>e.type===r.type&&e.__openchamberOptimistic===!0):-1;e>=0&&c.splice(e,1);let t=ls.search(c,r.id,e=>e.id);c.splice(t.index,0,r)}return e.part[i]=c,!o||{changed:!0,materialization:{type:`incomplete-session-snapshot`,reason:`missing-owning-message`,sessionID:a,messageID:i,partID:r.id}}}case`message.part.removed`:{let n=t.properties,r=e.part[n.messageID];if(!r)return!1;let i=ls.search(r,n.partID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),t.length===0?delete e.part[n.messageID]:e.part[n.messageID]=t,!0}return!1}case`message.part.delta`:{let n=t.properties,r=e.part[n.messageID];if(!r)return ys.reducer.partDeltaNoParts(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`orphan-delta`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let i=ls.search(r,n.partID,e=>e.id);if(!i.found)return ys.reducer.partDeltaNotFound(n.messageID,n.partID),{changed:!1,materialization:{type:`incomplete-session-snapshot`,reason:`missing-delta-part`,sessionID:n.sessionID,messageID:n.messageID,partID:n.partID}};let a=r[i.index],o=a[n.field],s=a.__dedupeNextDeltaFields??[],c=s.includes(n.field),l=[...r];return l[i.index]={...a,[n.field]:c?Cs(o,n.delta):(o??``)+n.delta,__dedupeNextDeltaFields:s.filter(e=>e!==n.field)},e.part[n.messageID]=l,!0}default:return!1}}function Rs(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function zs(e){let t=e.id;return typeof t==`string`&&t.length>0?t:void 0}function Bs(e){return e.slim===!0}function Vs(e,t){if(!e||e.length===0||!t.some(e=>Bs(e)))return t;let n=new Map;for(let t of e){let e=zs(t);e&&!Bs(t)&&n.set(e,t)}if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Bs(e))return e;let t=zs(e);if(!t)return e;let i=n.get(t);return i?(r=!0,i):e});return r?i:t}function Hs(e,t){return e===t||e.length===t.length&&e.every((e,n)=>e===t[n])?t:e}function Us(e){let t=e.clientRole??e.role;return typeof t==`string`?t:``}function Ws(e){return Us(e)!==`assistant`||!Rs(e)}function Gs(e,t,n){if(!e||e.length===0)return t;let r=Vs(e,t);if(Ws(n))return Hs(r,e);let i=new Set;for(let e of r){let t=zs(e);t&&i.add(t)}let a=new Map,o=[],s,c=0;for(let t of e){let e=zs(t);if(e&&i.has(e)){s=e;continue}if(!e)continue;if(c+=1,!s){o.push(t);continue}let n=a.get(s);if(n){n.push(t);continue}a.set(s,[t])}if(c===0)return Hs(r,e);let l=[...o];for(let e of r){l.push(e);let t=zs(e);if(!t)continue;let n=a.get(t);n&&l.push(...n)}return Hs(l,e)}var Ks=e=>Object.freeze(e),qs=Object.freeze({initial:Ks({id:`initial`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),prepend:Ks({id:`history`,onStale:`drop`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),recovery:Ks({id:`recovery`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`}),"reconcile-page":Ks({id:`reconcile-page`,onStale:`backfill`,messages:`upsert`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`keep-unless-full`}),materialize:Ks({id:`materialize`,onStale:`drop`,messages:`insert-only`,parts:`replace`,preserveStreaming:`assistant`,protectOptimistic:`none`})}),Js=Ks({id:`recovery-backfill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Ys=Ks({id:`send-gap-fill`,onStale:`backfill`,messages:`insert-only`,parts:`skip-existing`,preserveStreaming:`assistant`,protectOptimistic:`none`}),Xs=qs.initial;function Zs(e){let t=qs[e.purpose]??Xs;return!e.stale||t.onStale===`drop`?t:Js}function Qs(e,t){return e.preserveStreaming===`none`?!1:e.preserveStreaming===`all`||t===`assistant`}var $s=e=>structuredClone(e),ec=e=>({transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID});function tc(e){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID])}function nc(e,t){return JSON.stringify([e.transport,e.generation,e.directory,e.sessionID,t])}function rc(e){return JSON.stringify([e.transport,e.generation])}function ic(e,t){return e.created===t.created?e.messageID<t.messageID?-1:+(e.messageID>t.messageID):e.created-t.created}function ac(e){let t=e.time?.created;return{created:typeof t==`number`&&Number.isFinite(t)?t:0,messageID:e.id}}function oc(e){return Ws(e)}function sc(e){return Bs(e)?`slim`:`full`}function cc(e){return e.some(e=>Bs(e))?`slim`:`full`}var lc=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(lc);let t=e,n={};for(let e of Object.keys(t).sort()){let r=t[e];r!==void 0&&(n[e]=lc(r))}return n},uc=e=>{let t=new Uint8Array(e),n=``;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n};async function dc(e,t){let n=JSON.stringify(lc({info:e,parts:t})),r=new TextEncoder().encode(n);return{hash:uc(await crypto.subtle.digest(`SHA-256`,r)),byteSize:r.byteLength}}var fc=e=>({scope:ec(e.scope),messageID:e.messageID,info:$s(e.info),parts:$s(e.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),pc=e=>{let t=0;return()=>{let n=e();return t=n>t?n:t+1,t}},mc=(e,t)=>{let n=t.slice().sort((e,t)=>ic(e.sortKey,t.sortKey)).map(fc);return{scope:ec(e),records:n,byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},hc=e=>$s(e),gc=e=>ec(e),_c=(e=Date.now)=>pc(e),vc=e=>fc(e),yc=(e,t)=>mc(e,t.slice());function bc(e){return oc(e.info)?e.existing?.completeness===`full`&&e.incomingCompleteness===`slim`?{status:`skipped`,reason:`slim-downgrade`}:e.incomingHash!==void 0&&e.existing?.contentHash===e.incomingHash?{status:`skipped`,reason:`unchanged`}:{status:`written`}:{status:`skipped`,reason:`not-settled`}}var xc=(e,t)=>e<t?-1:+(e>t),Sc=[`text`,`output`],Cc={pending:1,started:2,running:3,completed:4,error:4};function wc(e,t){return e.filter(e=>!!e?.id&&!t.has(e.type)).sort((e,t)=>xc(e.id,t.id))}function Tc(e,t){if(!e||e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||JSON.stringify(r)!==JSON.stringify(i))return!1}return!0}function Ec(e){let t=e.state?.time?.end;if(typeof t==`number`)return t;let n=e.time?.end;return typeof n==`number`?n:void 0}function Dc(e,t){let n=e[t];return typeof n==`string`?n:void 0}function Oc(e){return Ec(e)===void 0&&Sc.some(t=>{let n=Dc(e,t);return typeof n==`string`&&n.length>0})}function kc(e){let t=e.state;if(!(!t||typeof t!=`object`))return t}function Ac(e){let t=kc(e)?.status;return typeof t==`string`?t:void 0}function jc(e){return e?Cc[e]??0:0}function Mc(e,t){if(Oc(e))return!0;if(Ec(e)===void 0){if(e.type===`tool`){let n=Ac(e);return n===`completed`||n===`error`?t:!0}return!0}return t}function Nc(e){let t=e.state?.time;if(!t||typeof t!=`object`)return;let n=typeof t.start==`number`?t.start:void 0,r=typeof t.end==`number`?t.end:void 0;if(n!==void 0||r!==void 0)return{start:n,end:r}}function Pc(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length>0}function Fc(e,t,n){if(e.type!==`tool`||t.type!==`tool`)return n;let r=kc(e);if(!r)return n;let i=kc(n)??{},a=kc(t)??{},o={...i},s=!1,c=Ac(e),l=Ac(t);jc(c)>jc(l)&&c&&(o={...o,status:c},s=!0);let u=r.input,d=a.input;Pc(u)&&!Pc(d)&&(o={...o,input:u},s=!0);let f=r.output,p=a.output;typeof f==`string`&&f.length>0?(typeof p!=`string`||p.length<f.length)&&(typeof p!=`string`||p.length===0||f.startsWith(p))&&(o={...o,output:f},s=!0):f!==void 0&&p===void 0&&(o={...o,output:f},s=!0);let m=r.metadata;return Pc(m)&&!Pc(a.metadata)&&(o={...o,metadata:m},s=!0),s?n===t?{...t,state:o}:{...n,state:o}:n}function Ic(e,t){if(!e||Ec(t)!==void 0)return t;let n=t;for(let r of Sc){let i=Dc(e,r);if(!i)continue;let a=Dc(t,r);if(typeof a==`string`&&a.length>=i.length||typeof a==`string`&&a.length>0&&!i.startsWith(a))continue;n===t&&(n={...t});let o=n;o[r]=i}let r=Nc(e);if(r){let e=Nc(t),i=e?.start??r.start,a=e?.end??r.end;if(i!==e?.start||a!==e?.end){n===t&&(n={...t});let e=n;e.state={...n.state??{},time:{start:i,end:a}}}}return n=Fc(e,t,n),n}function Lc(e,t){if(!e||e.length===0||!t.some(e=>Bs(e)))return t;let n=new Map;for(let t of e)t.id&&!Bs(t)&&n.set(t.id,t);if(n.size===0)return t;let r=!1,i=t.map(e=>{if(!Bs(e)||!e.id)return e;let t=n.get(e.id);return t?(r=!0,t):e});return r?i:t}function Rc(e){return e.__openchamberOptimistic===!0}function zc(e){return!!(e&&e.length>0&&e.some(Rc))}function Bc(e){return e.length===0||e.some(e=>Bs(e))}function Vc(e,t,n,r,i,a){if(a===`keep-unless-full`&&e&&zc(e)&&Bc(t))return e;let o=Lc(e,t);if(!e||e.length===0||!r)return o;let s=new Map(e.map(e=>[e.id,e])),c=o,l=!1;for(let e=0;e<o.length;e+=1){let t=o[e],n=Ic(s.get(t.id),t);n!==t&&(l||(c=[...o]),c[e]=n,l=!0)}let u=new Set(o.map(e=>e.id)),d=o.some(e=>Bs(e)),f=e.filter(e=>!!e?.id&&!u.has(e.id)&&!n.has(e.type)&&(Mc(e,i)||d&&!Bs(e)));return f.length===0?c:[...c,...f].sort((e,t)=>xc(e.id,t.id))}var Hc=e=>e,Uc=e=>{let t=Hc(e).finish;return typeof t==`string`&&t.length>0},Wc=e=>typeof Hc(e).time?.completed==`number`,Gc=e=>!!Hc(e).error;function Kc(e,t){let n=Hc(t),r=n.finish,i=n.time?.completed,a=n.error,o=!Uc(e)&&typeof r==`string`&&r.length>0,s=!Wc(e)&&typeof i==`number`,c=!Gc(e)&&!!a;if(!o&&!s&&!c)return e;let l={...e};return o&&(l.finish=r),s&&(l.time={...Hc(e).time,completed:i}),c&&(l.error=a),l}function qc(e,t,n,r){if(t.length===0)return e;let i=new Map(t.map(e=>[e.id,e])),a=!1,o=[];for(let t of e){let e=n(t,i.get(t.id));e!==t&&(a=!0),o.push(e)}let s=new Set(e.map(e=>e.id)),c=t.filter(e=>!s.has(e.id));if(c.length===0)return a?o:e;if(!t.some(e=>s.has(e.id)))return r===`prepend`?[...c,...o]:r===`by-created`?Jc(o,c):[...o,...c];let l=-1;for(let e of t){let t=o.findIndex(t=>t.id===e.id);if(t>=0){l=t;continue}l+=1,o.splice(l,0,e)}return o}function Jc(e,t){let n=e.slice();for(let e of t){let t=ac(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ic(t,ac(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function Yc(e,t,n){return qc(e,t,(e,t)=>t?Kc(e,t):e,n)}function Xc(e,t,n){return qc(e,t,(e,t)=>!t||JSON.stringify(e)===JSON.stringify(t)?e:Ps(e,t),n)}function Zc(e,t,n,r={}){let i=r.skipPartTypes??new Set,a=r.merge??Xs,o=r.placeUnanchoredNewMessages??`append`,s=n.filter(e=>!!e?.info?.id),c=s.map(e=>e.info),l=e.message[t],u=l??[],d=a.messages===`upsert`?Xc(u,c,o):Yc(u,c,o),f=d!==u||l===void 0&&s.length===0,p=!1,m={...e.part},h=a.parts===`skip-existing`;for(let e of s){let t=e.info.id;if(h&&m[t])continue;let n=e.info.role===`assistant`,r=m[t],o=Vc(r,wc(e.parts??[],i),i,Qs(a,e.info.role),Rs(e.info),a.protectOptimistic);(r?Tc(r,o):o.length===0&&!n)||o.length===0&&!n||(m[t]=o,p=!0)}return{message:f?{...e.message,[t]:d}:e.message,part:p?m:e.part,messages:d,messagesChanged:f,partsChanged:p}}function Qc(e){if(typeof e.time?.completed==`number`)return!1;let t=e.finish;return!(typeof t==`string`&&t.length>0)}function $c(e){let t=e.messages;if(!t)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let n=t.length>0?t[t.length-1]?.id:void 0,r=[];for(let i of t)i.role===`assistant`&&(e.parts[i.id]||i.id===n&&Qc(i)||r.push(i.id));return{hasMessages:!0,renderable:r.length===0,missingPartMessageIDs:r}}var el=(e,t)=>e<t?-1:+(e>t);function tl(e){return e.filter(e=>!!e?.id).sort((e,t)=>el(e.id,t.id))}function nl(e,t){if(t.length===0)return{...e,confirmed:[]};let n=[...e.session],r=new Map(e.part.map(e=>[e.id,tl(e.part)])),i=[];for(let e of t){if(n.findIndex(t=>t.id===e.message.id)<0){n.push(e.message),r.set(e.message.id,tl(e.parts));continue}let t=r.get(e.message.id);if(t&&t.length>0){i.push(e.message.id);continue}r.set(e.message.id,tl(e.parts))}return{cursor:e.cursor,complete:e.complete,session:n,part:[...r.entries()].sort((e,t)=>el(e[0],t[0])).map(([e,t])=>({id:e,part:t})),confirmed:i}}var rl={kind:`unknown`,loadedTurns:0},il=3e4,al=12e5,ol={project:``,projectMeta:void 0,icon:void 0,provider:{all:[],connected:[],default:{}},config:{},path:{state:``,config:``,worktree:``,directory:``,home:``},status:`loading`,agent:[],command:[],session:[],sessionTotal:0,session_status:{},session_status_observed_at:{},session_status_snapshot_at:void 0,session_diff:{},todo:{},permission:{},question:{},mcp:{},lsp:[],vcs:void 0,limit:20},sl={ready:!1,path:{state:``,config:``,worktree:``,directory:``,home:``},projects:[],providers:{all:[],connected:[],default:{}},providerAuth:{},config:{},reload:void 0,sessionTodo:{}};function cl(e,t){return e===void 0||t===void 0?!1:t>e}var ll=class extends Error{};function ul(e,t,n){if(n===`reconcile-page`)return e??rl;let r=0;typeof t.turnCount==`number`&&Number.isFinite(t.turnCount)?r=Math.max(0,Math.floor(t.turnCount)):typeof t.requestedTurnLimit==`number`&&Number.isFinite(t.requestedTurnLimit)?r=Math.max(0,Math.floor(t.requestedTurnLimit)):t.records.length>0&&(r=1);let i=e?.loadedTurns??0,a=n===`prepend`?i+r:r;if(t.complete)return{kind:`exhausted`,loadedTurns:a};let o=typeof t.cursor==`string`&&t.cursor.length>0?t.cursor:void 0;if(!o)throw new ll(`session message page: complete=false requires non-empty cursor`);if(t.records.length===0)throw new ll(`session message page: complete=false with zero records makes no progress`);if(n===`prepend`&&e?.kind===`has-more`&&e.cursor===o)throw new ll(`session message page: prepend returned the same cursor without progress`);return{kind:`has-more`,cursor:o,loadedTurns:a}}function dl(e,t){return!e||!t?e===t:e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function fl(e,t,n,r){let i=cl(r.capturedRevision,r.liveRevision),a=Zs({purpose:r.purpose,stale:i}),o=e.session_history_boundary?.[t];if(!n.ok)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.error};if(i&&a.onStale===`drop`){let n=e.message[t]??[];if(n.length>0)return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:n,boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[]}}let s=r.optimistic??[],c=nl({session:n.records.map(e=>e.info),part:n.records.map(e=>({id:e.info.id,part:e.parts??[]})),cursor:n.cursor,complete:n.complete},s),l=Zc(e,t,c.session.map(e=>({info:e,parts:c.part.find(t=>t.id===e.id)?.part??[]})),{skipPartTypes:r.skipPartTypes,merge:a,placeUnanchoredNewMessages:r.purpose===`prepend`?`prepend`:r.purpose===`reconcile-page`?`by-created`:`append`}),u;try{u=ul(o,{ok:!0,records:n.records,cursor:c.cursor,complete:c.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit},r.purpose)}catch(n){if(!(n instanceof ll))throw n;return{applied:!1,merge:a,changed:!1,messagesChanged:!1,partsChanged:!1,boundaryChanged:!1,message:e.message,part:e.part,messages:e.message[t]??[],boundary:void 0,meta:void 0,confirmedOptimisticIDs:[],commands:[],error:n.message}}let d=!dl(o,u),f=l.messagesChanged,p=l.partsChanged,m=f||p||d,h=[];c.confirmed.length>0&&h.push({type:`clear-optimistic`,messageIDs:c.confirmed});let g=d||!o?u:o;return{applied:!0,merge:a,changed:m,messagesChanged:f,partsChanged:p,boundaryChanged:d,message:l.message,part:l.part,messages:l.messages,boundary:g,meta:{limit:g.loadedTurns,cursor:g.kind===`has-more`?g.cursor:void 0,complete:g.kind===`exhausted`},confirmedOptimisticIDs:c.confirmed,commands:h}}var pl=new Set([`tool`,`reasoning`,`file`,`text`]),ml=new Set([`tool`,`reasoning`,`file`]);function hl(e){return e.some(e=>Bs(e)&&pl.has(e.type))}function gl(e,t){let n=!1,r=!1;for(let t of e)ml.has(t.type)&&(n=!0,Bs(t)&&(r=!0));return n?r?!0:t?Rs(t):!1:!1}var _l=e=>{if(!e)return``;let t=e.clientRole??e.role;return typeof t==`string`?t:``};function vl(e,t){return!e?.id||_l(e)!==`user`?!1:!t||t.length===0||!t.some(e=>e.type===`subtask`||e.type===`compaction`)}function yl(e){let t=0;for(let n of e.messageOrder)vl(e.messagesByID[n],e.partsByMessageID[n])&&(t+=1);return t}var bl=(e,t)=>{let n=e.messageOrder.lastIndexOf(t);if(n<0)return[];let r=[];for(let i=n+1;i<e.messageOrder.length;i+=1){let n=e.messageOrder[i],a=e.messagesByID[n];if(!a)continue;if(vl(a,e.partsByMessageID[n]))break;if(_l(a)!==`assistant`)continue;let o=a.parentID;typeof o==`string`&&o.length>0&&o!==t||r.push(a)}return r},xl=(e,t)=>Rs(e)?!0:Array.isArray(t)&&t.length>0;function Sl(e){let t;for(let n=e.messageOrder.length-1;n>=0;--n){let r=e.messageOrder[n];if(vl(e.messagesByID[r],e.partsByMessageID[r])){t=r;break}}return t?bl(e,t).some(t=>xl(t,e.partsByMessageID[t.id])):!1}function Cl(e){return e.materializeActive?`p2`:e.prependActive||e.earlierHistoryLoaded?`p1`:e.p0Satisfied?`p0`:`idle`}var wl=new Set([`stop`,`length`]);function Tl(e){let t=e.messageOrder[e.messageOrder.length-1];if(!t)return!1;let n=e.messagesByID[t];if(!n||_l(n)!==`assistant`||n.error)return!1;let r=n.finish;return typeof r!=`string`||!wl.has(r)?!1:typeof n.time?.completed!=`number`}function El(e,t){return t.kind===`has-more`?{sessionID:e,boundary:t,hasPreviousPage:!0,isComplete:!1,cursor:t.cursor,loadedTurns:t.loadedTurns}:t.kind===`exhausted`?{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!0,cursor:null,loadedTurns:t.loadedTurns}:{sessionID:e,boundary:t,hasPreviousPage:!1,isComplete:!1,cursor:null,loadedTurns:t.loadedTurns}}function Dl(e){let t={},n={},r=[];for(let i of e.messages){if(!i?.id)continue;r.push(i.id),t[i.id]=i;let a=e.parts[i.id];a&&(n[i.id]=a)}return{sessionID:e.sessionID,messageOrder:r,messagesByID:t,partsByMessageID:n,boundary:e.boundary,liveRevision:e.liveRevision??0}}var Ol=[`message.updated`,`message.removed`,`message.part.updated`,`message.part.removed`,`message.part.delta`];function kl(e){return Ol.includes(e)}function Al(e){return e.trim()}function jl(e){return`${Al(e.directory)}\n${e.sessionID}`}function Ml(e,t){return e.session_history_boundary?.[t]??rl}function Nl(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function Pl(e,t){return e.kind!==t.kind||e.loadedTurns!==t.loadedTurns?!1:e.kind===`has-more`&&t.kind===`has-more`?e.cursor===t.cursor:!0}function Fl(e,t,n){n.applied&&e.setState(e=>{let r={};if(n.messagesChanged&&(r.message=n.message),n.partsChanged&&(r.part=n.part),n.boundary&&(n.boundaryChanged||!e.session_history_boundary?.[t]))r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary};else if(n.boundary&&n.boundaryChanged===!1){let i=e.session_history_boundary?.[t];(!i||!Pl(i,n.boundary))&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary})}return!r.message&&!r.part&&!r.session_history_boundary&&n.boundary&&(r.session_history_boundary={...e.session_history_boundary??{},[t]:n.boundary}),!r.message&&!r.part&&!r.session_history_boundary?{}:r})}function Il(e,t,n){let r=e.getState(),i=n.page,a=fl(r,t,{ok:!0,records:i.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:i.cursor,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:i.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return a.applied?(Fl(e,t,a),{applied:!0,changed:a.changed,boundary:a.boundary,meta:a.meta,confirmedOptimisticIDs:a.confirmedOptimisticIDs}):{applied:!1,changed:!1,error:a.error}}function Ll(e,t){if(t.length===0)return{applied:!1,changed:!1};let n=e.getState(),r={message:{...n.message??{}},part:{...n.part??{}}},i=!1,a=!1,o;for(let e of t){if(!kl(e.type))continue;i=!0;let t=Ls(r,e),n=typeof t==`boolean`?t:t.changed,s=typeof t==`boolean`?void 0:t.materialization;s&&!o&&(o=s),n&&(a=!0)}return i?a?(e.setState({message:r.message,part:r.part}),{applied:!0,changed:!0,...o?{materialization:o}:{}}):{applied:!0,changed:!1,...o?{materialization:o}:{}}:{applied:!1,changed:!1}}function Rl(e,t){return Ll(e,[t.event])}function zl(e,t){return Ll(e,t.events)}function Bl(e,t,n){if(n.records.length===0)return{applied:!1,changed:!1};let r=e.getState(),i=Zc({message:r.message??{},part:r.part??{}},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});return!i.messagesChanged&&!i.partsChanged?{applied:!0,changed:!1}:(e.setState({...i.messagesChanged?{message:i.message}:{},...i.partsChanged?{part:i.part}:{}}),{applied:!0,changed:!0})}function Vl(e,t,n){let r=e.getState(),i=r.message?.[t],a=r.part?.[n]!==void 0;if(!i&&!a)return{applied:!0,changed:!1};let o={...r.message??{}},s=!1;if(i){let e=[...i],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,s=!0)}let c={...r.part??{}},l=!1;return c[n]!==void 0&&(delete c[n],l=!0),!s&&!l?{applied:!0,changed:!1}:(e.setState({...s?{message:o}:{},...l?{part:c}:{}}),{applied:!0,changed:!0})}function Hl(e,t,n,r,i){r.setOptimisticShadow?.({directory:i,sessionID:t,message:n.message,parts:n.parts});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=o[t]?[...o[t]]:[];return c.some(e=>e.id===n.message.id)||c.push(n.message),o[t]=c,s[n.message.id]=Nl(n.parts),e.setState({message:o,part:s}),{applied:!0,changed:!0}}function Ul(e,t,n,r,i){r.clearOptimisticShadow?.({directory:i,sessionID:t,messageID:n});let a=e.getState(),o={...a.message??{}},s={...a.part??{}},c=!1,l=o[t];if(l){let e=[...l],r=e.findIndex(e=>e.id===n);r>=0&&(e.splice(r,1),o[t]=e,c=!0)}return s[n]!==void 0&&(delete s[n],c=!0),c&&e.setState({message:o,part:s}),{applied:!0,changed:c}}function Wl(e,t,n,r){return n.clearOptimisticShadow?.({directory:r,sessionID:e,messageID:t}),{applied:!0,changed:!1}}function Gl(e,t){let n=e.getState(),r=n.message?.[t],i=n.session_history_boundary?.[t],a=!!(r&&r.length>0),o=i!==void 0,s=new Set;if(r)for(let e of r)e?.id&&s.add(e.id);let c=!1,l={...n.part??{}};for(let e of s)l[e]!==void 0&&(delete l[e],c=!0);for(let[e,n]of Object.entries(l))s.has(e)||n?.some(e=>e.sessionID===t)&&(delete l[e],c=!0);if(!a&&!o&&!c)return!1;let u={...n.message??{}};delete u[t];let d={...n.session_history_boundary??{}};return delete d[t],e.setState({message:u,part:l,session_history_boundary:d}),!0}function Kl(e,t,n){let r=Gl(e,t);if(!n.page)return{applied:!0,changed:r};let i=Il(e,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes});return{...i,changed:r||i.changed,applied:i.applied||r}}function ql(e){let t=new Map,n=new Map,r=r=>{let i=jl(r);if(n.has(i))return;let a=Al(r.directory),o=e.getStore(a),s=r.sessionID,c=o.getState().message?.[s],l=Ml(o.getState(),s),u=new Map;for(let e of c??[])u.set(e.id,o.getState().part?.[e.id]);let d=o.subscribe(e=>{let n=e.message?.[s],a=Ml(e,s),o=!1,d=new Map;for(let t of n??[]){let n=e.part?.[t.id];d.set(t.id,n),u.get(t.id)!==n&&(o=!0)}u.size!==d.size&&(o=!0);let f=n!==c,p=Pl(a,l);if(c=n,l=a,u=d,!f&&!o&&p)return;let m=t.get(i);if(!(!m||m.size===0))for(let e of m)e(r)});n.set(i,d)},i=e=>{let r=t.get(e);if(r&&r.size>0)return;let i=n.get(e);i&&(i(),n.delete(e)),t.delete(e)},a={getTranscript(t){let n=Al(t.directory),r=e.getStore(n).getState(),i=t.sessionID,a=r.message?.[i]??[],o=e.getLiveRevision?.(n,i)??0;return Dl({sessionID:i,messages:a,parts:r.part??{},boundary:Ml(r,i),liveRevision:o})},getPagination(t){let n=Al(t.directory),r=e.getStore(n).getState();return El(t.sessionID,Ml(r,t.sessionID))},getRequestState(t){let n=Al(t.directory);return e.getRequestState?.(n,t.sessionID)??{sessionID:t.sessionID,status:`idle`}},getHydrationState(e){let t=a.getTranscript(e),n=Sl(t);return{sessionID:e.sessionID,p0Satisfied:n,phase:Cl({p0Satisfied:n,earlierHistoryLoaded:yl(t)>1})}},getMessage(e,t){return a.getTranscript(e).messagesByID[t]},getParts(t,n){let r=Al(t.directory);return e.getStore(r).getState().part?.[n]??[]},hasSession(t){let n=Al(t.directory),r=e.getStore(n).getState().message;return r?Object.prototype.hasOwnProperty.call(r,t.sessionID):!1},apply(t,n){let r=Al(t.directory),i=e.getStore(r),a=t.sessionID;switch(n.type){case`http-page`:return Il(i,a,n);case`sse-event`:return Rl(i,n);case`sse-event-batch`:return zl(i,n);case`optimistic-add`:return Hl(i,a,n,e,r);case`optimistic-confirm`:return Wl(a,n.messageID,e,r);case`optimistic-remove`:return Ul(i,a,n.messageID,e,r);case`reset`:return Kl(i,a,n);case`materialize-snapshots`:return Bl(i,a,n);case`remove-message`:return Vl(i,a,n.messageID);default:return{applied:!1,changed:!1}}},subscribe(e,n){let a=jl(e),o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),r(e),()=>{let e=t.get(a);e&&(e.delete(n),i(a))}}};return a}var Jl=new Set,Yl=new Set;function Xl(e,t){return`${e}\n${t}`}function Zl(){for(let e of Yl)e()}function Ql(e,t){!e||!t||(Jl.add(Xl(e,t)),Zl())}function $l(e,t){!e||!t||Jl.delete(Xl(e,t))&&Zl()}function eu(e,t){if(!e)return!1;if(t)return Jl.has(Xl(t,e));let n=`\n${e}`;for(let e of Jl)if(e.endsWith(n))return!0;return!1}function tu(e){return Yl.add(e),()=>{Yl.delete(e)}}var nu=[],ru=new Map,iu=new Map,au=0,ou=()=>{let e=nu.findIndex(e=>e.priority===`user`);if(e>=0){let[t]=nu.splice(e,1);return t}return nu.shift()},su=()=>{for(;au<4;){let e=ou();if(!e)return;ru.delete(e.key),au+=1,Promise.resolve().then(()=>e.run()).then(t=>{e.resolve(t)},t=>{e.reject(t)}).finally(()=>{--au,iu.delete(e.key),su()})}};function cu(e,t,n){let r=n?.priority??`background`,i=iu.get(e);if(i){let t=ru.get(e);return t&&r===`user`&&t.priority!==`user`&&(t.priority=`user`),i}let a,o,s=new Promise((e,t)=>{a=e,o=t}),c={key:e,priority:r,run:()=>t(),resolve:e=>{a(e)},reject:o};return nu.push(c),ru.set(e,c),iu.set(e,s),su(),s}var lu=null,uu=0,du=new Set;function fu(){uu+=1;for(let e of du)e()}function pu(e){return e}function mu(e){return du.add(e),()=>{du.delete(e)}}function hu(){return uu}function gu(e){return lu?.repository===e?e:(lu={kind:`query`,repository:e},fu(),e)}function _u(){lu&&(lu=null,fu())}function H(){return lu?.repository??null}function vu(){let e=H();if(!e)throw Error(`TranscriptRepository is not bound — SyncProvider must mount first`);return e}function yu(e,t){let n=H();if(n)return n;let r=pu(t);return ql({getStore:e=>r})}function U(e,t,n){return{directory:e.trim(),sessionID:t,...n?.transport===void 0?{}:{transport:n.transport},...n?.generation===void 0?{}:{generation:n.generation}}}function bu(e){try{let t=H(),n=r(),i=s();return t?.getCacheBudget?.().listCanonical({transport:n,generation:i})?.filter(t=>t.scope.sessionID===e).map(e=>U(e.scope.directory,e.scope.sessionID,{transport:e.scope.transport,generation:e.scope.generation}))??[]}catch{return[]}}function xu(e,t){let n=H();return n?n.apply(e,t):null}async function Su(e,t){let n=vu();if(typeof n.fetchPreviousPage!=`function`)throw Error(`TranscriptRepository does not support fetchPreviousPage`);await n.fetchPreviousPage(U(e,t))}async function Cu(e,t){let n=vu();if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support ensureInitial`);await n.ensureInitial(U(e,t))}async function wu(e,t){let n=vu(),r=U(e,t);if(typeof n.destructiveReset==`function`){await n.destructiveReset(r);return}if(typeof n.ensureInitial!=`function`)throw Error(`TranscriptRepository does not support retryInitial`);await n.ensureInitial(r)}async function Tu(e,t){let n=vu();if(typeof n.refreshFromAuthority!=`function`)throw Error(`TranscriptRepository does not support refreshFromAuthority`);Ql(e,t);try{await n.refreshFromAuthority(U(e,t))}finally{$l(e,t)}}async function Eu(e,t,n,r){let i=vu();if(typeof i.materializeMessage!=`function`)throw Error(`TranscriptRepository does not support materializeMessage`);let a=U(e,t);await cu(`${e}\n${t}\n${n}`,()=>i.materializeMessage(a,n),{priority:r?.priority??`background`})}function Du(e,t,n){let r=H();return!r||typeof r.getMessageMaterializationState!=`function`?{sessionID:t,messageID:n,status:`idle`}:r.getMessageMaterializationState(U(e,t),n)}function Ou(e,t){H()?.purgeSession?.(U(e,t))}var ku=null;function Au(e){ku&&ku!==e&&ku.cancelAll(`reregister`),ku=e}function ju(e){ku?.captureCheckpoints(e)}function Mu(e){ku?.onCompensation(e)}async function Nu(e){return ku?ku.ensureOnObserve(e):null}function Pu(e){ku?.cancelAll(e)}var W=e(Ne(),1),Fu=[],Iu=[],Lu={sessionID:``,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0};El(``,rl);var Ru={sessionID:``,phase:`idle`,p0Satisfied:!1};function zu(e,t){return yu(e,t)}var Bu=new Set;function Vu(e,t){return`${e}\n${t}`}function Hu(e,t){if(!t)return;let n=Vu(e,t);Bu.has(n)||(Bu.add(n),Nu(U(e,t)).catch(()=>{}).finally(()=>{Bu.delete(n)}))}function Uu(e,t){if(e&&t){Bu.delete(Vu(e,t));return}Bu.clear()}function Wu(e,t,n,r,i=Object.is,a){let o=(0,W.useRef)(r);o.current=r;let s=(0,W.useRef)(i);s.current=i;let c=(0,W.useRef)(void 0),l=a?.enabled!==!1,u=(0,W.useCallback)(()=>{if(!e||!l){let e=o.current(Lu);return(c.current===void 0||!s.current(c.current,e))&&(c.current=e),c.current}let r=zu(t,n).getTranscript(U(t,e)),i=o.current(r);return(c.current===void 0||!s.current(c.current,i))&&(c.current=i),c.current},[t,l,e,n]),d=(0,W.useCallback)(r=>{if(!e||!l)return()=>void 0;Hu(t,e);let i=zu(t,n).subscribe(U(t,e),()=>{r()}),a=mu(()=>{i(),c.current=void 0,Uu(t,e),Hu(t,e),i=zu(t,n).subscribe(U(t,e),()=>{r()}),r()});return()=>{a(),i()}},[t,l,e,n]);return W.useSyncExternalStore(d,u,u)}function Gu(e,t){if(e.messageOrder.length===0)return Fu;if(t&&t.length>0){let n=!0,r=0;for(let i of e.messageOrder){let a=e.messagesByID[i];if(a){if(r>=t.length||t[r]!==a){n=!1;break}r+=1}}if(n&&r===t.length)return t}let n=[];for(let t of e.messageOrder){let r=e.messagesByID[t];r&&n.push(r)}return n}function Ku(e,t){return e.messageOrder.length===0?t?.resolved===!0?$c({messages:Fu,parts:e.partsByMessageID}):{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]}:$c({messages:Gu(e),parts:e.partsByMessageID})}function qu(e,t,n,r){let i=(0,V.c)(4),a;return i[0]!==t||i[1]!==e||i[2]!==n?(a=r=>{if(!e)return{hasMessages:!1,renderable:!1,missingPartMessageIDs:[]};let i=zu(t,n).hasSession?.(U(t,e));return Ku(r,{resolved:i===!0||void 0})},i[0]=t,i[1]=e,i[2]=n,i[3]=a):a=i[3],Wu(e,t,n,a,Ju,r)}function Ju(e,t){return e.hasMessages===t.hasMessages&&e.renderable===t.renderable&&e.missingPartMessageIDs.length===t.missingPartMessageIDs.length&&e.missingPartMessageIDs.every((e,n)=>e===t.missingPartMessageIDs[n])}function Yu(e,t,n,r){return Wu(e,t,n,Zu,Xu,r)}function Xu(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Zu(e){return Gu(e)}function Qu(e,t,n){return Wu(e,t,n,ed,$u)}function $u(e,t){return e===t?!0:!e||!t?!1:e.id===t.id&&e.role===t.role&&e.timestamp===t.timestamp}function ed(e){if(e.messageOrder.length===0)return null;let t=e.messageOrder[e.messageOrder.length-1],n=t?e.messagesByID[t]:void 0;if(!n?.id)return null;let r=n.time;return{id:n.id,role:typeof n.role==`string`?n.role:``,timestamp:r?.completed??r?.created??0}}function td(e,t){if(e===t)return!0;if(e.sessionID!==t.sessionID||e.liveRevision!==t.liveRevision||e.boundary.kind!==t.boundary.kind||e.boundary.loadedTurns!==t.boundary.loadedTurns||e.boundary.kind===`has-more`&&t.boundary.kind===`has-more`&&e.boundary.cursor!==t.boundary.cursor||e.messageOrder.length!==t.messageOrder.length)return!1;for(let n=0;n<e.messageOrder.length;n+=1){let r=e.messageOrder[n];if(r!==t.messageOrder[n]||e.messagesByID[r]!==t.messagesByID[r]||e.partsByMessageID[r]!==t.partsByMessageID[r])return!1}return!0}function nd(e,t,n,r){return Wu(e,t,n,rd,td,r)}function rd(e){return e}function id(e,t,n,r){if(e.length===0)return()=>void 0;let i=[],a=()=>{for(let e of i)e();i=[]},o=()=>{let r=new Set;for(let a of e){let e=`${a.directory}\n${a.sessionID}`;if(r.has(e))continue;r.add(e);let o=H();if(o){i.push(o.subscribe(U(a.directory,a.sessionID),t));continue}let s=n?.(a.directory);if(!s)continue;let c=yu(a.directory,s);i.push(c.subscribe(U(a.directory,a.sessionID),t))}},s=()=>{a(),o(),t()};o();let c=mu(s),l=r?.subscribeRebuild?.(s);return()=>{l?.(),c(),a()}}function ad(e,t){return e.length===0?``:e.map(e=>{let n=_d(e.directory,e.sessionID,t?.(e.directory)),r=n[n.length-1];return`${e.sessionID}:${r?.id??``}:${r?.role??``}:${r?.time?.completed??``}`}).join(`\0`)}function od(e,t,n){return Wu(e,t,n,sd)}function sd(e){return e.messageOrder.length}function cd(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(!1),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current=!1,!1;let r=zu(t,n),a=r.hasSession?.(U(t,e))??r.getTranscript(U(t,e)).messageOrder.length>0;return i.current=a,i.current},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>e?zu(t,n).subscribe(U(t,e),()=>{r()}):ld,r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return W.useSyncExternalStore(c,o,o)}function ld(){}function ud(e,t,n,r){let i=(0,V.c)(10),a=(0,W.useRef)(void 0),o;i[0]!==t||i[1]!==e||i[2]!==r||i[3]!==n?(o=()=>{if(!e)return a.current=Iu,Iu;let i=zu(t,n),o=r||e,s=i.getParts(U(t,o),e),c=s.length===0?Iu:s;if(a.current===void 0||a.current!==c){if(a.current&&a.current.length===c.length&&a.current.every((e,t)=>e===c[t]))return a.current;a.current=c}return a.current},i[0]=t,i[1]=e,i[2]=r,i[3]=n,i[4]=o):o=i[4];let s=o,c;i[5]!==t||i[6]!==e||i[7]!==r||i[8]!==n?(c=i=>{if(!e)return fd;let a=zu(t,n);return r?a.subscribe(U(t,r),()=>{i()}):dd},i[5]=t,i[6]=e,i[7]=r,i[8]=n,i[9]=c):c=i[9];let l=c;return W.useSyncExternalStore(l,s,s)}function dd(){}function fd(){}function pd(e,t,n){let r=(0,V.c)(8),i=(0,W.useRef)(Ru),a;r[0]!==t||r[1]!==e||r[2]!==n?(a=()=>{if(!e)return i.current!==Ru&&(i.current=Ru),i.current;let r=zu(t,n).getHydrationState?.(U(t,e))??{sessionID:e,phase:`idle`,p0Satisfied:!1},a=i.current;return a.sessionID===r.sessionID&&a.phase===r.phase&&a.p0Satisfied===r.p0Satisfied?a:(i.current=r,r)},r[0]=t,r[1]=e,r[2]=n,r[3]=a):a=r[3];let o=a,s;r[4]!==t||r[5]!==e||r[6]!==n?(s=r=>{if(!e)return md;Hu(t,e);let a=zu(t,n).subscribe(U(t,e),()=>{r()}),o=mu(()=>{a(),i.current=Ru,Uu(t,e),Hu(t,e),a=zu(t,n).subscribe(U(t,e),()=>{r()}),r()});return()=>{o(),a()}},r[4]=t,r[5]=e,r[6]=n,r[7]=s):s=r[7];let c=s;return W.useSyncExternalStore(c,o,o)}function md(){}function hd(e,t,n){let r=(0,V.c)(2),i;return r[0]===e?i=r[1]:(i=t=>El(e,t.boundary),r[0]=e,r[1]=i),Wu(e,t,n,i,gd)}function gd(e,t){return e.sessionID===t.sessionID&&e.hasPreviousPage===t.hasPreviousPage&&e.isComplete===t.isComplete&&e.cursor===t.cursor&&e.loadedTurns===t.loadedTurns&&e.boundary.kind===t.boundary.kind&&e.boundary.loadedTurns===t.boundary.loadedTurns&&(e.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||e.boundary.cursor===t.boundary.cursor)}function _d(e,t,n){if(!t)return[];let r=H();if(r){let n=r.getTranscript(U(e,t));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}if(!n)return[];let i=yu(e,n).getTranscript(U(e,t));return i.messageOrder.map(e=>i.messagesByID[e]).filter(e=>!!e)}var vd=null,yd=``,bd=null,xd=new Set,Sd=null,Cd=new Map,wd=new Map;function Td(e,t,n,r){vd=t,Sd!==t&&(Sd=null,Cd=new Map,wd=new Map),yd=n,r&&(bd=r)}function Ed(e,t){bd?.(e,t)}function Dd(){if(!vd)throw Error(`ChildStoreManager not initialized — is SyncProvider mounted?`);return vd}function Od(e){let t=vd;if(!t)return;let n=e||yd;if(n)return t.getState(n)}function kd(e){let t=Od(e)?.config;return t&&Object.keys(t).length>0?t:void 0}function Ad(e){return xd.add(e),()=>{xd.delete(e)}}function jd(e,t){if(e)for(let n of xd)n(e,t)}function Md(e){return Od(e)?.session??[]}function Nd(){return Array.from(Pd().values())}function Pd(){let e=vd;if(!e)return wd;let t=Sd!==e||Cd.size!==e.children.size;for(let[n,r]of e.children)if(Cd.get(n)!==r.getState().session){t=!0;break}if(!t)return wd;let n=new Map,r=new Map;for(let[t,i]of e.children){let e=i.getState().session;n.set(t,e);for(let t of e)t?.id&&r.set(t.id,t)}return Sd=e,Cd=n,wd=r,wd}function Fd(e,t,n){if(n){let r=[];for(let[i,a]of n)if(a.session.some(t=>t.id===e)&&a.hasTranscript===!0){if(i===t)return i;r.push(i)}return r.length===1?r[0]:void 0}let r=[];try{let n=H();if(vd){for(let[i,a]of vd.children)if(a.getState().session.some(t=>t.id===e)&&(n??yu(i,a)).hasSession?.(U(i,e))){if(i===t)return i;r.push(i)}}if(r.length===0&&n){let i=n.getCacheBudget?.().listCanonical();if(i){for(let n of i)if(n.scope.sessionID===e){if(n.scope.directory===t)return n.scope.directory;r.push(n.scope.directory)}}}}catch{}let i=[...new Set(r)];return i.length===1?i[0]:void 0}function Id(e,t){if(!e)return[];try{let n=H(),r=t??yd;if(n){let t=n.getTranscript(U(r,e));return t.messageOrder.map(e=>t.messagesByID[e]).filter(e=>!!e)}if(vd){let t=vd.getChild(r);if(t){let n=yu(r,t).getTranscript(U(r,e));return n.messageOrder.map(e=>n.messagesByID[e]).filter(e=>!!e)}}}catch{}return[]}function Ld(e,t){if(!e)return[];try{let n=H(),r=t??yd;if(n)return[...n.getParts(U(r,e),e)];if(vd){let t=vd.getChild(r);if(t)return[...yu(r,t).getParts(U(r,e),e)]}}catch{}return[]}function Rd(e,t){return Od(t)?.session_status[e]}var zd=`opencode`,Bd=`big-pickle`,Vd=`__add_provider__`,Hd=`zen`,Ud=`big-pickle`,Wd=async(e,t)=>{B(`config.defaults:start`);let n=typeof performance<`u`?performance.now():Date.now(),r=(e,t)=>{let r=typeof performance<`u`?performance.now():Date.now();return B(`config.defaults:end`,{source:e,durationMs:Math.round(r-n),hasDefaultModel:!!t.defaultModel,hasDefaultAgent:!!t.defaultAgent}),t};try{let t=await me(e);return os({enabled:t?.responseStyleEnabled,preset:t?.responseStylePreset,customInstructions:t?.responseStyleCustomInstructions},e),r(`settings-bootstrap-query`,t)}catch(n){B(`config.defaults:error`,{error:n instanceof Error?n.message:String(n)});let i=I(e);return i&&os({enabled:i.responseStyleEnabled,preset:i.responseStylePreset,customInstructions:i.responseStyleCustomInstructions},e),r(i?`retained-settings-bootstrap`:`retained-store-settings`,i??t)}},Gd=e=>$o(e),Kd=e=>e===Vd?``:e??``,qd=(e,t)=>e===Vd?Vd:t,Jd=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},Yd=e=>{if(!Array.isArray(e))return[];let t=e.map(e=>{if(!tf(e))return e;let t=Array.isArray(e.models)?Object.fromEntries(e.models.map((e,t)=>[String(t),e])):e.models;return{...e,models:t}});try{return Xi({schemaVersion:1,providers:t,default:{},partial:!1}).providers.map(e=>({id:e.id,name:e.name,models:Object.values(e.models)}))}catch{return[]}},Xd=e=>{try{return Xi({schemaVersion:1,providers:[],default:e,partial:!1}).default}catch{return{}}},Zd=(e,t,n)=>{let r=e.find(e=>e.id===t);return r?r.models.some(e=>e.id===n):!1},Qd=({providers:e,currentProviderId:t,currentModelId:n,currentVariant:r,settingsDefaultModel:i,settingsDefaultVariant:a})=>{let o=(t,n,r)=>{if(!r)return;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0};if(t&&n&&Zd(e,t,n))return{providerId:t,modelId:n,variant:o(t,n,r)};if(i){let t=Gd(i);if(t&&Zd(e,t.providerId,t.modelId))return{providerId:t.providerId,modelId:t.modelId,variant:o(t.providerId,t.modelId,a)}}if(Zd(e,zd,Bd))return{providerId:zd,modelId:Bd};let s=e[0],c=s?.models[0];return s&&c?{providerId:s.id,modelId:c.id}:null},$d=({agents:e,providers:t,projectDefaultModel:n,settingsDefaultAgent:r,settingsDefaultModel:i,settingsDefaultVariant:a,opencodeDefaultAgent:o,opencodeDefaultModel:s,projectLastUserSelection:c,globalLastUserSelection:l})=>{if(e.length===0)return{agentName:void 0};let u=(e,n,r)=>{if(!r)return;let i=t.find(t=>t.id===e)?.models.find(e=>e.id===n);return i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)?r:void 0},d=n=>{if(!n)return null;let r=e.find(e=>e.name===n.agentName);return!r||!Ro(r.mode)||r.hidden===!0||!Zd(t,n.providerId,n.modelId)?null:{agentName:r.name,providerId:n.providerId,modelId:n.modelId,variant:u(n.providerId,n.modelId,n.variant)}},f=d(c);if(f)return f;let p=d(l);if(p)return p;let m=e.filter(e=>Ro(e.mode)),h;if(r&&(h=e.find(e=>e.name===r)),!h&&o){let t=e.find(e=>e.name===o);t&&Ro(t.mode)&&t.hidden!==!0&&(h=t)}if(h||=m.find(e=>e.name===`build`)||m[0]||e[0],!h)return{agentName:void 0};let g,_,v,y=n||i;if(y){let e=Gd(y);e&&Zd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId,v=u(g,_,n?void 0:a))}if(!g&&h.model?.providerID&&h.model?.modelID&&Zd(t,h.model.providerID,h.model.modelID)&&(g=h.model.providerID,_=h.model.modelID,v=u(g,_,h.variant)),!g&&s){let e=Gd(s);e&&Zd(t,e.providerId,e.modelId)&&(g=e.providerId,_=e.modelId)}if(!g)if(Zd(t,zd,Bd))g=zd,_=Bd;else{let e=t[0],n=e?.models[0];e&&n&&(g=e.id,_=n.id)}return{agentName:h.name,providerId:g,modelId:_,variant:v}},ef=({providers:e,settingsZenModel:t})=>{let n=Jd(t);if(!Array.isArray(e)||e.length===0)return n?{providerId:Hd,modelId:n}:null;if(n&&Zd(e,Hd,n))return{providerId:Hd,modelId:n};if(Zd(e,Hd,Ud))return{providerId:Hd,modelId:Ud};let r=e.find(e=>e.id===Hd);if(r?.models.length){let e=Math.floor(Math.random()*r.models.length),t=Jd(r.models[e]?.id);if(t)return{providerId:Hd,modelId:t}}return null},tf=e=>typeof e==`object`&&!!e,nf=e=>{if(!e)return[];let t=[];return e.text&&t.push(`text`),e.audio&&t.push(`audio`),e.image&&t.push(`image`),e.video&&t.push(`video`),e.pdf&&t.push(`pdf`),t},rf=(e,t)=>({id:t.id,providerId:e,name:t.name,tool_call:t.capabilities?.toolcall,reasoning:t.capabilities?.reasoning,temperature:t.capabilities?.temperature,attachment:t.capabilities?.attachment,modalities:t.capabilities?{input:nf(t.capabilities.input),output:nf(t.capabilities.output)}:void 0,cost:t.cost?{input:t.cost.input,output:t.cost.output,cache_read:t.cost.cache?.read,cache_write:t.cost.cache?.write}:void 0,limit:t.limit,release_date:t.release_date}),af=e=>new Promise(t=>setTimeout(t,e)),of=800,sf=async(e=of)=>Promise.race([z.checkHealth().catch(()=>!1),af(Math.max(1,e)).then(()=>!1)]),cf=`__global__`,lf=e=>{let t=typeof e==`string`?e.trim():``;return t.length>0?t:cf},uf=e=>e===cf?null:e,df=()=>typeof window>`u`?cf:bf(z.getDirectory()??Pe.getState().currentDirectory),ff=`oc.worktreeProjectMap`,pf=null,mf=()=>{if(pf===null)try{let e=typeof localStorage<`u`?localStorage.getItem(ff):null;pf=e?JSON.parse(e):{}}catch{pf={}}return pf},hf=(e,t)=>{if(!e||!t||e===t)return;let n=mf();if(n[e]!==t){n[e]=t;try{localStorage.setItem(ff,JSON.stringify(n))}catch{}}},gf=e=>{let t=_(e);return t===null?null:t||`/`},_f=()=>{try{return Ci.getState().projects.map(e=>gf(e.path)).filter(e=>!!e)}catch{return[]}},vf=()=>{try{let{projects:e,activeProjectId:t}=Ci.getState();return gf((t?e.find(e=>e.id===t):null)?.path??e[0]?.path??null)}catch{return null}},yf=e=>{let t=gf(e),n=_f();if(!t)return null;if(n.includes(t))return t;let r=gf(mf()[t]);if(r)return r;try{let e=gf(Qo(Ci.getState().projects,$.getState().availableWorktreesByProject,t)?.path??null);if(e&&e!==t)return hf(t,e),e}catch{return null}return null},bf=e=>lf(yf(e)),xf=e=>bf(e),Sf=1e3,Cf=125e4,wf=100,Tf=256,Ef=new Set([`__proto__`,`prototype`,`constructor`]),Df=/[\u0000-\u001F\u007F]/u,Of=new TextEncoder,kf=e=>{let t=e.directoryScoped,n=e.activeDirectoryKey;if(!t||!n)return e;let r=t[n];if(!r)return e;let i={...e},a=e.providers&&e.providers.length>0?e.providers:r.providers;return i.providers=a,i.agents=[],i.defaultProviders=e.defaultProviders&&Object.keys(e.defaultProviders).length>0?e.defaultProviders:r.defaultProviders,i.currentProviderId=r.currentProviderId,i.currentModelId=r.currentModelId,i.currentVariant=r.currentVariant,i.currentAgentName=r.currentAgentName,i.selectedProviderId=r.selectedProviderId,i.agentModelSelections=r.agentModelSelections,i.lastSelectedAgentName=r.lastSelectedAgentName,i.lastUserSelection=r.lastUserSelection,i.opencodeDefaultAgent=r.opencodeDefaultAgent,i.opencodeDefaultModel=r.opencodeDefaultModel,i.selectionSource=r.selectionSource??`auto`,a.length>0&&r.providerCatalogPartial!==!0&&na(uf(n),{providers:a,defaultProviders:i.defaultProviders??{},providerCatalogPartial:!1}),i},Af=(e,t=!1)=>{if(typeof e!=`string`)return;let n=e.trim();if(!(n.length===0||n.length>Tf||t&&n!==e||Df.test(n)||Ef.has(n)))return n},jf=e=>{if(!tf(e))return{};let t=[];for(let[n,r]of Object.entries(e)){if(t.length>=wf||!tf(r))continue;let e=Af(n,!0),i=Af(r.providerId),a=Af(r.modelId),o=Af(r.variant);!e||!i||!a||r.variant!==void 0&&!o||t.push([e,{providerId:i,modelId:a,...o?{variant:o}:{}}])}return Object.fromEntries(t)},Mf=e=>{if(!tf(e))return;let t=Af(e.agentName,!0),n=Af(e.providerId),r=Af(e.modelId),i=Af(e.variant);if(!(!t||!n||!r||e.variant!==void 0&&!i))return{agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}}},Nf=(e,t)=>{if(!e)return;let n=t[e];if(n)return{agentName:e,providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},Pf=(e,t,n)=>Mf(e)??Nf(t,n),Ff=(e=[],t=[])=>({providers:e,agents:t,currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,defaultProviders:{},providerCatalogPartial:!1,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`}),If=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=r.lastUserSelection??Nf(r.lastSelectedAgentName,r.agentModelSelections);!e&&!r.lastSelectedAgentName||(t[n]={...Ff(),agentModelSelections:{},lastSelectedAgentName:e?.agentName??r.lastSelectedAgentName,lastUserSelection:e,selectionSource:r.selectionSource===`manual`?`manual`:`auto`})}return t},Lf=e=>{if(!tf(e))return{};let t=Jd(e.catalogTransportIdentity),n={};for(let t of[`activeDirectoryKey`,`settingsDefaultModel`,`settingsDefaultVariant`,`settingsDefaultAgent`,`settingsZenModel`]){let r=Jd(e[t]);r!==void 0&&(n[t]=r)}for(let t of[`settingsAutoCreateWorktree`,`settingsGitmojiEnabled`,`settingsDefaultFileViewerPreview`])typeof e[t]==`boolean`&&(n[t]=e[t]);(e.settingsMessageStreamTransport===`auto`||e.settingsMessageStreamTransport===`ws`||e.settingsMessageStreamTransport===`sse`)&&(n.settingsMessageStreamTransport=e.settingsMessageStreamTransport);for(let t of[`speechRate`,`speechPitch`,`speechVolume`])typeof e[t]==`number`&&Number.isFinite(e[t])&&(n[t]=e[t]);let i={};if(tf(e.directoryScoped))for(let[t,n]of Object.entries(e.directoryScoped)){if(!tf(n))continue;let e=n.providerCatalogPartial===!0,r=e?[]:Yd(n.providers),a=e?{}:Xd(n.defaultProviders),o=jf(n.agentModelSelections),s=Af(n.lastSelectedAgentName,!0),c=Pf(n.lastUserSelection,s,o);i[t]={...Ff(),providers:r,agents:[],currentProviderId:Jd(n.currentProviderId)??``,currentModelId:Jd(n.currentModelId)??``,currentVariant:Jd(n.currentVariant),currentAgentName:Jd(n.currentAgentName),selectedProviderId:Kd(Jd(n.selectedProviderId)),agentModelSelections:o,lastSelectedAgentName:c?.agentName??s,lastUserSelection:c,defaultProviders:a,providerCatalogPartial:e,opencodeDefaultAgent:Jd(n.opencodeDefaultAgent),opencodeDefaultModel:Jd(n.opencodeDefaultModel),selectionSource:n.selectionSource===`manual`?`manual`:`auto`}}let a=jf(e.agentModelSelections),o=Af(e.lastSelectedAgentName,!0),s=Pf(e.globalLastUserSelection,o,a)??(()=>{let t=Jd(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),c=r();if(t!==c){let t=If(i),r=Jd(e.activeDirectoryKey),a=r?t[r]?.lastUserSelection:void 0;return{...n,catalogTransportIdentity:c,directoryScoped:t,providers:[],agents:[],defaultProviders:{},currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:a?.agentName??s?.agentName,lastUserSelection:a,globalLastUserSelection:s,providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{}}}return{...n,catalogTransportIdentity:t,directoryScoped:i,providers:[],agents:[],defaultProviders:{},currentProviderId:Jd(e.currentProviderId)??``,currentModelId:Jd(e.currentModelId)??``,currentVariant:Jd(e.currentVariant),currentAgentName:Jd(e.currentAgentName),selectedProviderId:Kd(Jd(e.selectedProviderId)),agentModelSelections:a,lastSelectedAgentName:s?.agentName??o,lastUserSelection:(()=>{let t=Jd(e.activeDirectoryKey);return t?i[t]?.lastUserSelection:void 0})(),globalLastUserSelection:s}},Rf=(e,t,n,r)=>{if(!r)return!0;let i=e.find(e=>e.id===t)?.models.find(e=>e.id===n);return!!i?.variants&&Object.prototype.hasOwnProperty.call(i.variants,r)},zf=({agents:e,providers:t,currentAgentName:n,currentProviderId:r,currentModelId:i,currentVariant:a,selectionSource:o,resolvedAgentName:s,resolvedProviderId:c,resolvedModelId:l,resolvedVariant:u})=>{let d=n&&e.some(e=>e.name===n)?n:void 0,f=!!r&&!!i&&Zd(t,r,i)&&Rf(t,r,i,a),p=o===`manual`&&(!!d||f);return{agentName:p?d??s:s,providerId:p&&f?r:c,modelId:p&&f?i:l,variant:p&&f?a:u,selectionSource:p?`manual`:`auto`}},Bf=null,Vf=null,Hf=null,Uf={},Wf={},G=Oe()(je(ke((e,t)=>({activeDirectoryKey:df(),catalogTransportIdentity:r(),directoryScoped:{},providerConfigLoadingByDirectory:{},agentConfigLoadingByDirectory:{},providers:[],agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,globalLastUserSelection:void 0,defaultProviders:{},selectionSource:`auto`,isConnected:!1,hasEverConnected:!1,connectionPhase:`connecting`,lastDisconnectReason:null,isInitialized:!1,settingsDefaultModel:void 0,settingsDefaultVariant:void 0,settingsDefaultAgent:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,settingsAutoCreateWorktree:!1,settingsGitmojiEnabled:!1,settingsDefaultFileViewerPreview:!1,settingsZenModel:void 0,settingsMessageStreamTransport:`auto`,voiceProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`voiceProvider`);if(e===`openai`||e===`browser`||e===`local`||e===`say`||e===`openai-compatible`)return e}return`browser`})(),speechRate:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechRate`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechPitch:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechPitch`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=.5&&t<=2)return t}}return 1})(),speechVolume:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`speechVolume`);if(e){let t=parseFloat(e);if(!isNaN(t)&&t>=0&&t<=1)return t}}return 1})(),sayVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sayVoice`);if(e)return e}return`Samantha`})(),localTtsVoiceId:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`localTtsVoiceId`);if(e!==null){let t=Number.parseInt(e,10);if(Number.isInteger(t)&&t>=0)return t}}return 0})(),browserVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`browserVoice`);if(e)return e}return``})(),openaiVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiVoice`);if(e)return e}return`nova`})(),openaiApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiApiKey`);if(e)return e}return``})(),openaiCompatibleUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleUrl`);if(e)return e}return``})(),openaiCompatibleApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleApiKey`);if(e)return e}return``})(),openaiCompatibleVoice:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleVoice`);if(e)return e}return`af_sky`})(),openaiCompatibleTtsModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`openaiCompatibleTtsModel`);if(e&&e!==`speaches-ai/Kokoro-82M-v1.0-ONNX`)return e}return`kokoro`})(),dictationEnabled:!(typeof window<`u`&&localStorage.getItem(`dictationEnabled`)===`false`),sttProvider:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttProvider`);if(e===`local`||e===`openai-compatible`)return e;if(e===`server`)return`openai-compatible`}return`local`})(),sttServerUrl:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttServerUrl`);if(e)return e}return`http://localhost:8001/v1`})(),sttApiKey:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttApiKey`);if(e)return e}return``})(),sttModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttModel`);if(e)return e}return`deepdml/faster-whisper-large-v3-turbo-ct2`})(),sttLocalModel:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLocalModel`);if(e)return e}return`parakeet-tdt-0.6b-v2-int8`})(),sttLanguage:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`sttLanguage`);if(e!==null)return e}return``})(),showMessageTTSButtons:typeof window<`u`&&localStorage.getItem(`showMessageTTSButtons`)===`true`,ttsInputMode:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`ttsInputMode`);if(e===`raw`)return`raw`;if(e===`summarized`)return`summarized`}return`sanitized`})(),summarizeMessageTTS:typeof window<`u`&&localStorage.getItem(`summarizeMessageTTS`)===`true`,summarizeVoiceConversation:typeof window<`u`&&localStorage.getItem(`summarizeVoiceConversation`)===`true`,summarizeCharacterThreshold:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeCharacterThreshold`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 200})(),summarizeMaxLength:(()=>{if(typeof window<`u`){let e=localStorage.getItem(`summarizeMaxLength`);if(e){let t=parseInt(e,10);if(!isNaN(t)&&t>=50&&t<=2e3)return t}}return 500})(),activateDirectory:async(n,r)=>{let i=yf(n);if(!i){B(`activateDirectory:skippedUnknownDirectory`,{directory:n});return}let a=lf(i),o=!1,s=!1,c=!1;e(e=>{let t=e.directoryScoped[a],n=e.providers.length>0?e.providers:t?.providers??[],r=Object.keys(e.defaultProviders).length>0?e.defaultProviders:t?.defaultProviders??{},i=e.agents.length>0?e.agents:t?.agents??[];o=n.length>0,s=i.length>0,c=!!t?.agents.length;let l=e.isConnected&&!o,u=e.isConnected&&!s;return t?{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:t.agents.length>0?t.agents:i,currentProviderId:t.currentProviderId,currentModelId:t.currentModelId,currentVariant:t.currentVariant,currentAgentName:t.currentAgentName,selectedProviderId:t.selectedProviderId,agentModelSelections:t.agentModelSelections,lastSelectedAgentName:t.lastSelectedAgentName,lastUserSelection:t.lastUserSelection,opencodeDefaultAgent:t.opencodeDefaultAgent,opencodeDefaultModel:t.opencodeDefaultModel,selectionSource:t.selectionSource??`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}:{activeDirectoryKey:a,providers:n,defaultProviders:r,agents:i,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},lastSelectedAgentName:void 0,lastUserSelection:void 0,opencodeDefaultAgent:void 0,opencodeDefaultModel:void 0,selectionSource:`auto`,providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[a]:l},agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[a]:u}}}),s&&o&&!c&&t().applyDefaultModelAgentSelection(),t().isConnected&&((!o||r?.refreshProviders)&&await t().loadProviders({directory:uf(a),source:r?.source??`activateDirectory`,forceRefresh:r?.refreshProviders}),s||await t().loadAgents({directory:uf(a),source:`activateDirectory`}))},invalidateProviderCache:e=>{sa(null,r())},loadProviders:async n=>{let i=n?.directory??uf(t().activeDirectoryKey),a=yf(i);if(!a){B(`loadProviders:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`});return}let o=a??z.getDirectory()??null,c=lf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&yf(i)===a,p=(Uf[c]??0)+1;Uf[c]=p,B(`loadProviders:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().providers.length>0||m?.providers.length||e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();B(`loadProviders:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().providers.length>0?t().providers:a?.providers??[],d=Object.keys(t().defaultProviders).length>0?t().defaultProviders:a?.defaultProviders??{};try{let t=await Fe(`loadProviders:api`,()=>n?.forceRefresh?aa(uf(c),u):ra(uf(c),u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),a=Yd(t.providers),d=Xd(t.default);if(!f()||t.partial&&s.length>0||a.length===0||(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let n=e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},r=e.activeDirectoryKey===c?e.currentProviderId:n.currentProviderId,i=e.activeDirectoryKey===c?e.currentModelId:n.currentModelId,o=e.activeDirectoryKey===c?e.currentVariant:n.currentVariant,s=Qd({providers:a,currentProviderId:r,currentModelId:i,currentVariant:o,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant}),l=e.activeDirectoryKey===c?e.selectedProviderId:n.selectedProviderId,p=l===Vd||a.some(e=>e.id===l)?l:s?.providerId??a[0]?.id??``,m={...n,providers:a,defaultProviders:d,providerCatalogPartial:t.partial,currentProviderId:s?.providerId??``,currentModelId:s?.modelId??``,currentVariant:s?.variant,selectedProviderId:p},h={providers:a,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:m}};return e.activeDirectoryKey===c&&(h.currentProviderId=m.currentProviderId,h.currentModelId=m.currentModelId,h.currentVariant=m.currentVariant,h.selectedProviderId=p),h}),!f()))return;let p=typeof performance<`u`?performance.now():Date.now();B(`loadProviders:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(p-r),providers:a.length,models:a.reduce((e,t)=>e+t.models.length,0)});return}catch(e){if(!f())return;console.error(`Failed to load providers:`,e),B(`loadProviders:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:e instanceof Error?e.message:String(e)})}f()&&e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:[],agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:s,defaultProviders:d},n={providers:s,defaultProviders:d,directoryScoped:{...e.directoryScoped,[c]:t}};if(e.activeDirectoryKey===c&&!e.currentProviderId&&!e.currentModelId&&e.settingsDefaultModel){let r=Gd(e.settingsDefaultModel);if(r){let i=s.find(e=>e.id===r.providerId);if(i?.models.some(e=>e.id===r.modelId)){let a=i.models.find(e=>e.id===r.modelId),o=e.settingsDefaultVariant&&a?.variants?.[e.settingsDefaultVariant]?e.settingsDefaultVariant:void 0;n.currentProviderId=r.providerId,n.currentModelId=r.modelId,n.currentVariant=o,n.selectedProviderId=r.providerId,t.currentProviderId=r.providerId,t.currentModelId=r.modelId,t.currentVariant=o,t.selectedProviderId=r.providerId}}}return n})})().finally(()=>{Uf[c]===p&&e(e=>({providerConfigLoadingByDirectory:{...e.providerConfigLoadingByDirectory,[c]:!1}}))})},refreshMissingCatalogs:e=>{if(Vf)return Vf;let n=e?.source??`refreshMissingCatalogs`,r=(async()=>{t().providers.length===0&&await t().loadProviders({source:n,forceRefresh:!0}),t().agents.length===0&&await t().loadAgents({source:n,forceRefresh:!0})})().finally(()=>{Vf=null});return Vf=r,r},refreshCatalogsOnPickerOpen:e=>{if(Hf)return Hf;let n=e?.source??`refreshCatalogsOnPickerOpen`,r=Promise.all([t().loadProviders({source:n,forceRefresh:!0}),t().loadAgents({source:n,forceRefresh:!0})]).then(()=>void 0).finally(()=>{Hf=null});return Hf=r,r},setProvider:n=>{let{providers:r}=t(),i=r.find(e=>e.id===n);if(!i)return;let a=i.models[0]?.id||``;e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`};return{currentProviderId:n,currentModelId:a,selectedProviderId:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}})},setModel:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentModelId:t,selectionSource:`manual`};return{currentModelId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},setCurrentVariant:t=>{e(e=>{if(e.currentVariant===t)return e;let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentVariant:t,selectionSource:`manual`};return{currentVariant:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},getCurrentModelVariants:()=>{let e=t().getCurrentModel()?.variants;return e?Object.keys(e):[]},cycleCurrentVariant:()=>{let e=t().getCurrentModelVariants();if(e.length===0)return;let n=t().currentVariant;if(!n){t().setCurrentVariant(e[0]);return}let r=e.indexOf(n);if(r===-1||r===e.length-1){t().setCurrentVariant(void 0);return}t().setCurrentVariant(e[r+1])},setSelectedProvider:t=>{e(e=>{let n=e.activeDirectoryKey,r={...e.directoryScoped[n]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},selectedProviderId:t,selectionSource:`manual`};return{selectedProviderId:t,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[n]:r}}})},saveAgentModelSelection:(t,n,r,i)=>{!t||!n||!r||e(e=>{let a=e.activeDirectoryKey,o={agentName:t,providerId:n,modelId:r,...i?{variant:i}:{}},s=e.lastUserSelection,c=s?.agentName===o.agentName&&s?.providerId===o.providerId&&s?.modelId===o.modelId&&s?.variant===o.variant,l=e.globalLastUserSelection?.agentName===o.agentName&&e.globalLastUserSelection?.providerId===o.providerId&&e.globalLastUserSelection?.modelId===o.modelId&&e.globalLastUserSelection?.variant===o.variant;if(c&&l)return e;let u={...e.directoryScoped[a]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,lastSelectedAgentName:e.lastSelectedAgentName,lastUserSelection:e.lastUserSelection,defaultProviders:e.defaultProviders},agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,selectionSource:`manual`};return{agentModelSelections:{},lastSelectedAgentName:t,lastUserSelection:o,globalLastUserSelection:o,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[a]:u}}})},getAgentModelSelection:e=>{let{lastUserSelection:n}=t();return!n||n.agentName!==e?null:{providerId:n.providerId,modelId:n.modelId,...n.variant?{variant:n.variant}:{}}},loadAgents:async n=>{let i=n?.directory??uf(t().activeDirectoryKey),a=yf(i);if(!a)return B(`loadAgents:skippedUnknownDirectory`,{requestedDirectory:i,source:n?.source??`unknown`}),!1;let o=a??z.getDirectory()??null,c=lf(a),l=n?.source??`unknown`,u=r(),d=s(),f=()=>s()===d&&r()===u&&t().catalogTransportIdentity===u&&yf(i)===a,p=(Wf[c]??0)+1;Wf[c]=p,B(`loadAgents:called`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let m=t().directoryScoped[c];return t().agents.length>0||m?.agents.length||e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!0}})),(async()=>{let r=typeof performance<`u`?performance.now():Date.now();B(`loadAgents:start`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o});let a=t().directoryScoped[c],s=t().agents.length>0?t().agents:a?.agents??[];try{let a=uf(c);(kd(i??void 0)??kd(a??void 0))&&B(`loadAgents:syncConfigHit`,{directoryKey:c,source:l});let[d,p]=await Promise.all([Fe(`loadAgents:api`,()=>n?.forceRefresh?oa(a,u):ia(a,u),{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o}),Wd(u,{defaultModel:t().settingsDefaultModel,defaultVariant:t().settingsDefaultVariant,defaultAgent:t().settingsDefaultAgent,autoCreateWorktree:t().settingsAutoCreateWorktree,gitmojiEnabled:t().settingsGitmojiEnabled,defaultFileViewerPreview:t().settingsDefaultFileViewerPreview,zenModel:t().settingsZenModel,messageStreamTransport:t().settingsMessageStreamTransport,sttProvider:t().sttProvider,sttServerUrl:t().sttServerUrl,sttModel:t().sttModel,sttLocalModel:t().sttLocalModel,sttLanguage:t().sttLanguage})]),m=Array.isArray(d)?d:[];if(!f())return!1;let h=kd(i??void 0)??kd(a??void 0),g=h!==void 0,_=g?Jd(h.default_agent):void 0,v=g?Jd(h.model):void 0,y=t().activeDirectoryKey===c?t().providers:t().directoryScoped[c]?.providers??[],b=Jd(t().settingsZenModel),x=Jd(p.zenModel),S=ef({providers:y,settingsZenModel:b}),C=ef({providers:y,settingsZenModel:x}),w=(S||C)?.modelId||x||b;e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:s,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=g?_:t.opencodeDefaultAgent??(e.activeDirectoryKey===c?e.opencodeDefaultAgent:void 0),r=g?v:t.opencodeDefaultModel??(e.activeDirectoryKey===c?e.opencodeDefaultModel:void 0),i={...t,providers:y,agents:m,opencodeDefaultAgent:n,opencodeDefaultModel:r},a={settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,settingsDefaultAgent:p.defaultAgent,settingsAutoCreateWorktree:p.autoCreateWorktree??!1,settingsGitmojiEnabled:p.gitmojiEnabled??!1,settingsDefaultFileViewerPreview:p.defaultFileViewerPreview??!1,settingsZenModel:w,settingsMessageStreamTransport:p.messageStreamTransport??e.settingsMessageStreamTransport??`auto`,sttProvider:p.sttProvider??e.sttProvider,sttServerUrl:p.sttServerUrl??e.sttServerUrl,sttModel:p.sttModel??e.sttModel,sttLocalModel:p.sttLocalModel??e.sttLocalModel,sttLanguage:p.sttLanguage??e.sttLanguage,directoryScoped:{...e.directoryScoped,[c]:i}};return e.activeDirectoryKey===c&&(a.agents=m,a.opencodeDefaultAgent=n,a.opencodeDefaultModel=r),a});let T=t(),E=T.directoryScoped[c],D=E?.opencodeDefaultAgent??(T.activeDirectoryKey===c?T.opencodeDefaultAgent:void 0),O=E?.opencodeDefaultModel??(T.activeDirectoryKey===c?T.opencodeDefaultModel:void 0),k=!!w&&w!==x;if(f()&&k&&w&&ye({zenModel:w,gitProviderId:``,gitModelId:``}).catch(()=>{}),m.length===0){if(s.length>0&&!n?.forceRefresh){if(!f())return!1;let e=typeof performance<`u`?performance.now():Date.now();return B(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(e-r),agents:s.length,retainedPrevious:!0}),!0}if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t={...e.directoryScoped[c]??{providers:y,agents:[],currentProviderId:``,currentModelId:``,currentVariant:void 0,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:y,agents:[],currentAgentName:void 0},n={directoryScoped:{...e.directoryScoped,[c]:t}};return e.activeDirectoryKey===c&&(n.currentAgentName=void 0),n}),!f())return!1;let t=typeof performance<`u`?performance.now():Date.now();return B(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(t-r),agents:m.length}),!0}let A=(e,t)=>{let n=y.find(t=>t.id===e);return n?n.models.some(e=>e.id===t):!1},j={};if(p.defaultAgent&&!m.some(e=>e.name===p.defaultAgent)&&(j.defaultAgent=``),p.defaultModel){let e=Gd(p.defaultModel);if(!e||!A(e.providerId,e.modelId))j.defaultModel=``;else if(p.defaultVariant){let t=y.find(t=>t.id===e.providerId)?.models.find(t=>t.id===e.modelId)?.variants;t&&Object.prototype.hasOwnProperty.call(t,p.defaultVariant)||(j.defaultVariant=``)}}let ee=t(),te=ee.directoryScoped[c]?.lastUserSelection??(ee.activeDirectoryKey===c?ee.lastUserSelection:void 0),M=$d({agents:m,providers:y,settingsDefaultAgent:p.defaultAgent,settingsDefaultModel:p.defaultModel,settingsDefaultVariant:p.defaultVariant,opencodeDefaultAgent:D,opencodeDefaultModel:O,projectLastUserSelection:te,globalLastUserSelection:ee.globalLastUserSelection}),ne=M.agentName??m[0].name,re=M.providerId,ie=M.modelId,ae=M.variant;if(e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.directoryScoped[c]??{providers:y,agents:m,currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},n=e.activeDirectoryKey===c,r=n?e.currentAgentName:t.currentAgentName,i=n?e.currentProviderId:t.currentProviderId,a=n?e.currentModelId:t.currentModelId,o=n?e.currentVariant:t.currentVariant,s=n?e.selectionSource:t.selectionSource??`auto`,l=zf({agents:m,providers:y,currentAgentName:r,currentProviderId:i,currentModelId:a,currentVariant:o,selectionSource:s,resolvedAgentName:ne,resolvedProviderId:re,resolvedModelId:ie,resolvedVariant:ae}),d={...t,providers:y,agents:m,currentAgentName:l.agentName,currentProviderId:l.providerId??t.currentProviderId,currentModelId:l.modelId??t.currentModelId,currentVariant:l.variant,opencodeDefaultAgent:D,opencodeDefaultModel:O,selectionSource:l.selectionSource},p={directoryScoped:{...e.directoryScoped,[c]:d}};return n&&(p.currentAgentName=l.agentName,p.opencodeDefaultAgent=D,p.opencodeDefaultModel=O,l.providerId&&l.modelId&&(p.currentProviderId=l.providerId,p.currentModelId=l.modelId,p.currentVariant=l.variant),p.selectionSource=l.selectionSource),p}),f()&&Object.keys(j).length>0&&(e({settingsDefaultModel:j.defaultModel===void 0?t().settingsDefaultModel:void 0,settingsDefaultVariant:j.defaultVariant===void 0?t().settingsDefaultVariant:void 0,settingsDefaultAgent:j.defaultAgent===void 0?t().settingsDefaultAgent:void 0}),ye(j).catch(()=>{})),!f())return!1;let oe=typeof performance<`u`?performance.now():Date.now();return B(`loadAgents:end`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,durationMs:Math.round(oe-r),agents:m.length}),!0}catch(t){return!f()||(console.error(`Failed to load agents:`,t),B(`loadAgents:error`,{directoryKey:c,source:l,requestedDirectory:i,effectiveDirectory:o,error:t instanceof Error?t.message:String(t)}),!f())||e(e=>{if(!f()||e.catalogTransportIdentity!==u)return e;let t=e.activeDirectoryKey===c?e.providers:e.directoryScoped[c]?.providers??[],n={...e.directoryScoped[c]??{providers:t,agents:[],currentProviderId:``,currentModelId:``,currentAgentName:void 0,selectedProviderId:``,agentModelSelections:{},defaultProviders:{}},providers:t,agents:s},r={directoryScoped:{...e.directoryScoped,[c]:n}};return e.activeDirectoryKey===c&&(r.agents=s),r}),!1}})().finally(()=>{Wf[c]===p&&e(e=>({agentConfigLoadingByDirectory:{...e.agentConfigLoadingByDirectory,[c]:!1}}))})},setAgent:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,currentProviderId:s,currentModelId:c}=t();if(e(e=>{let t=e.activeDirectoryKey,r={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:n,selectionSource:`manual`};return{currentAgentName:n,selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[t]:r}}}),n){let{currentSessionId:e}=$.getState(),t=Jo.getState();e&&t.saveSessionAgentSelection(e,n),e&&$.getState().isOpenChamberCreatedSession(e)&&(t.getAgentModelForSession(e,n)||$.getState().initializeNewOpenChamberSession(e,r))}if(n){let{currentSessionId:l}=$.getState(),u=(t,n,r)=>{e(e=>{let i=e.activeDirectoryKey,a={...e.directoryScoped[i]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:qd(e.selectedProviderId,t),selectionSource:`manual`};return{currentProviderId:t,currentModelId:n,currentVariant:r,selectedProviderId:qd(e.selectedProviderId,t),selectionSource:`manual`,directoryScoped:{...e.directoryScoped,[i]:a}}})},d=r.find(e=>e.name===n),f=(e,t,r=[])=>{let a=i.find(t=>t.id===e)?.models.find(e=>e.id===t)?.variants;if(!a)return;let s=l?Jo.getState().getAgentModelVariantForSession(l,n,e,t):void 0;for(let e of[s,...r,o])if(e&&Object.prototype.hasOwnProperty.call(a,e))return e};if(l){let e=Jo.getState().getAgentModelForSession(l,n);if(e&&Zd(i,e.providerId,e.modelId)){let n=f(e.providerId,e.modelId,[d?.variant]);(s!==e.providerId||c!==e.modelId||t().currentVariant!==n)&&u(e.providerId,e.modelId,n);return}}if(a){let e=Gd(a);if(e&&i.find(t=>t.id===e.providerId)?.models.some(t=>t.id===e.modelId)){u(e.providerId,e.modelId,f(e.providerId,e.modelId,[d?.variant]));return}}let p=d?.model;if(p?.providerID&&p?.modelID){let{providerID:e,modelID:t}=p;if(i.find(t=>t.id===e)?.models.find(e=>e.id===t)){u(e,t,f(e,t,[d?.variant]));return}}}},applyDefaultModelAgentSelection:n=>{let{agents:r,providers:i,settingsDefaultModel:a,settingsDefaultVariant:o,settingsDefaultAgent:s,opencodeDefaultAgent:c,opencodeDefaultModel:l,lastUserSelection:u,globalLastUserSelection:d}=t();if(r.length===0||i.length===0)return;let{agentName:f,providerId:p,modelId:m,variant:h}=$d({agents:r,providers:i,projectDefaultModel:n?.projectDefaultModel,settingsDefaultAgent:s,settingsDefaultModel:a,settingsDefaultVariant:o,opencodeDefaultAgent:c,opencodeDefaultModel:l,projectLastUserSelection:u,globalLastUserSelection:d});f&&e(e=>{let t=e.activeDirectoryKey,n={...e.directoryScoped[t]??{providers:e.providers,agents:e.agents,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:e.selectedProviderId,agentModelSelections:e.agentModelSelections,defaultProviders:e.defaultProviders},currentAgentName:f,...p&&m?{currentProviderId:p,currentModelId:m,currentVariant:h,selectedProviderId:qd(e.selectedProviderId,p)}:{},selectionSource:`auto`},r={currentAgentName:f,selectionSource:`auto`,directoryScoped:{...e.directoryScoped,[t]:n}};return p&&m&&(r.currentProviderId=p,r.currentModelId=m,r.currentVariant=h,r.selectedProviderId=qd(e.selectedProviderId,p)),r})},applyOpenCodeConfigDefaults:(n,r=`syncConfig`,i)=>{let a=n??uf(t().activeDirectoryKey),o=bf(a),s=uf(o),c=i??kd(a??void 0)??kd(s??void 0);if(!c)return;let l=Jd(c.default_agent),u=Jd(c.model);e(e=>{let t=e.directoryScoped[o],n=e.activeDirectoryKey===o,i=n?e.providers:t?.providers??[],s=n?e.agents:t?.agents??[],c=t??Ff(i,s),d=c.opencodeDefaultAgent!==l||c.opencodeDefaultModel!==u||n&&(e.opencodeDefaultAgent!==l||e.opencodeDefaultModel!==u),f={...c,providers:i,agents:s,opencodeDefaultAgent:l,opencodeDefaultModel:u},p={directoryScoped:{...e.directoryScoped,[o]:f}};n&&(p.opencodeDefaultAgent=l,p.opencodeDefaultModel=u);let m=n?e.selectionSource:t?.selectionSource??`auto`;if(i.length===0||s.length===0)return d?p:e;let h=n?e.lastUserSelection:t?.lastUserSelection,g=$d({agents:s,providers:i,settingsDefaultAgent:e.settingsDefaultAgent,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,opencodeDefaultAgent:l,opencodeDefaultModel:u,projectLastUserSelection:h,globalLastUserSelection:e.globalLastUserSelection});if(!g.agentName)return d?p:e;let _=n?e.currentAgentName:c.currentAgentName,v=n?e.currentProviderId:c.currentProviderId,y=n?e.currentModelId:c.currentModelId,b=n?e.currentVariant:c.currentVariant,x=n?e.selectedProviderId:c.selectedProviderId,S=zf({agents:s,providers:i,currentAgentName:_,currentProviderId:v,currentModelId:y,currentVariant:b,selectionSource:m,resolvedAgentName:g.agentName,resolvedProviderId:g.providerId,resolvedModelId:g.modelId,resolvedVariant:g.variant}),C={...f,providers:i,agents:s,currentAgentName:S.agentName,...S.providerId&&S.modelId?{currentProviderId:S.providerId,currentModelId:S.modelId,currentVariant:S.variant,selectedProviderId:qd(x,S.providerId)}:{},selectionSource:S.selectionSource},w=c.currentAgentName!==C.currentAgentName||c.currentProviderId!==C.currentProviderId||c.currentModelId!==C.currentModelId||c.currentVariant!==C.currentVariant||c.selectedProviderId!==C.selectedProviderId||(c.selectionSource??`auto`)!==C.selectionSource||n&&(e.currentAgentName!==S.agentName||e.selectionSource!==S.selectionSource||S.providerId!==void 0&&S.modelId!==void 0&&(e.currentProviderId!==S.providerId||e.currentModelId!==S.modelId||e.currentVariant!==S.variant||e.selectedProviderId!==qd(x,S.providerId)));return!d&&!w?e:(p.directoryScoped={...e.directoryScoped,[o]:C},n&&(p.currentAgentName=S.agentName,p.selectionSource=S.selectionSource,S.providerId&&S.modelId&&(p.currentProviderId=S.providerId,p.currentModelId=S.modelId,p.currentVariant=S.variant,p.selectedProviderId=qd(x,S.providerId))),B(`loadAgents:opencodeConfigDefaultsApplied`,{directoryKey:o,eventDirectory:a,source:r}),p)})},setSettingsDefaultModel:t=>{e({settingsDefaultModel:t})},setSettingsDefaultVariant:t=>{e({settingsDefaultVariant:t})},setSettingsDefaultAgent:t=>{e({settingsDefaultAgent:t})},setSettingsAutoCreateWorktree:t=>{e({settingsAutoCreateWorktree:t})},setSettingsGitmojiEnabled:t=>{e({settingsGitmojiEnabled:t})},setSettingsDefaultFileViewerPreview:t=>{e({settingsDefaultFileViewerPreview:t})},setSettingsZenModel:t=>{e({settingsZenModel:t})},setSettingsMessageStreamTransport:t=>{e({settingsMessageStreamTransport:t})},getResolvedGitGenerationModel:()=>{let e=t();return ef({providers:e.providers,settingsZenModel:e.settingsZenModel})},setVoiceProvider:t=>{e({voiceProvider:t}),typeof window<`u`&&localStorage.setItem(`voiceProvider`,t)},setSpeechRate:t=>{let n=Math.max(.5,Math.min(2,t));e({speechRate:n}),typeof window<`u`&&localStorage.setItem(`speechRate`,String(n))},setSpeechPitch:t=>{let n=Math.max(.5,Math.min(2,t));e({speechPitch:n}),typeof window<`u`&&localStorage.setItem(`speechPitch`,String(n))},setSpeechVolume:t=>{let n=Math.max(0,Math.min(1,t));e({speechVolume:n}),typeof window<`u`&&localStorage.setItem(`speechVolume`,String(n))},setSayVoice:t=>{e({sayVoice:t}),typeof window<`u`&&localStorage.setItem(`sayVoice`,t)},setLocalTtsVoiceId:t=>{e({localTtsVoiceId:t}),typeof window<`u`&&localStorage.setItem(`localTtsVoiceId`,String(t))},setBrowserVoice:t=>{e({browserVoice:t}),typeof window<`u`&&localStorage.setItem(`browserVoice`,t)},setOpenaiVoice:t=>{e({openaiVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiVoice`,t)},setOpenaiApiKey:t=>{e({openaiApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiApiKey`,t)},setOpenaiCompatibleUrl:t=>{e({openaiCompatibleUrl:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleUrl`,t)},setOpenaiCompatibleApiKey:t=>{e({openaiCompatibleApiKey:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleApiKey`,t)},setOpenaiCompatibleVoice:t=>{e({openaiCompatibleVoice:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleVoice`,t)},setOpenaiCompatibleTtsModel:t=>{e({openaiCompatibleTtsModel:t}),typeof window<`u`&&localStorage.setItem(`openaiCompatibleTtsModel`,t)},setDictationEnabled:t=>{e({dictationEnabled:t}),typeof window<`u`&&localStorage.setItem(`dictationEnabled`,String(t)),ye({dictationEnabled:t}).catch(()=>{})},setSttProvider:t=>{e({sttProvider:t}),typeof window<`u`&&localStorage.setItem(`sttProvider`,t),ye({sttProvider:t}).catch(()=>{})},setSttServerUrl:t=>{e({sttServerUrl:t}),typeof window<`u`&&localStorage.setItem(`sttServerUrl`,t),ye({sttServerUrl:t}).catch(()=>{})},setSttApiKey:t=>{e({sttApiKey:t}),typeof window<`u`&&localStorage.setItem(`sttApiKey`,t)},setSttModel:t=>{e({sttModel:t}),typeof window<`u`&&localStorage.setItem(`sttModel`,t),ye({sttModel:t}).catch(()=>{})},setSttLocalModel:t=>{e({sttLocalModel:t}),typeof window<`u`&&localStorage.setItem(`sttLocalModel`,t),ye({sttLocalModel:t}).catch(()=>{})},setSttLanguage:t=>{e({sttLanguage:t}),typeof window<`u`&&localStorage.setItem(`sttLanguage`,t),ye({sttLanguage:t}).catch(()=>{})},setShowMessageTTSButtons:t=>{e({showMessageTTSButtons:t}),typeof window<`u`&&localStorage.setItem(`showMessageTTSButtons`,String(t))},setTtsInputMode:t=>{e({ttsInputMode:t}),typeof window<`u`&&localStorage.setItem(`ttsInputMode`,t)},setSummarizeMessageTTS:t=>{e({summarizeMessageTTS:t}),typeof window<`u`&&localStorage.setItem(`summarizeMessageTTS`,String(t))},setSummarizeVoiceConversation:t=>{e({summarizeVoiceConversation:t}),typeof window<`u`&&localStorage.setItem(`summarizeVoiceConversation`,String(t))},setSummarizeCharacterThreshold:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeCharacterThreshold:n}),typeof window<`u`&&localStorage.setItem(`summarizeCharacterThreshold`,String(n))},setSummarizeMaxLength:t=>{let n=Math.max(50,Math.min(2e3,t));e({summarizeMaxLength:n}),typeof window<`u`&&localStorage.setItem(`summarizeMaxLength`,String(n))},probeConnection:async n=>{if(await sf(n?.timeoutMs))return e({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}),!0;let r=t();return r.isConnected?!0:(e({isConnected:!1,connectionPhase:r.hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_probe_unhealthy`}),!1)},checkConnection:async()=>{B(`checkConnection:start`);let n=0,r=null;for(;n<5;)try{B(`checkConnection:attempt`,{attempt:n+1});let r=await Fe(`checkConnection:health`,()=>z.checkHealth(),{attempt:n+1});if(!r&&n<4){let r=t().hasEverConnected;e({isConnected:!1,connectionPhase:r?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),n+=1,await af(400*n);continue}let i=t().hasEverConnected;return e(r?{isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`}:{isConnected:!1,connectionPhase:i?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_unhealthy`}),B(`checkConnection:end`,{healthy:r,attempts:n+1}),r}catch(e){r=e,n+=1,await af(400*n)}return r&&console.warn(`[ConfigStore] Failed to reach OpenCode after retrying:`,r),e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`health_check_failed`}),B(`checkConnection:end`,{healthy:!1,attempts:5}),!1},initializeApp:async()=>{if(Bf)return B(`initializeApp:deduped`),Bf;let n=(async()=>{let n=typeof performance<`u`?performance.now():Date.now();B(`initializeApp:start`);try{if(Be(),!await t().checkConnection()){e({isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`});return}B(`initApp:skipped`,{reason:`checkConnection already verified health`});let r=z.getDirectory()??Pe.getState().currentDirectory??uf(t().activeDirectoryKey),i=yf(Qo(Ci.getState().projects,$.getState().availableWorktreesByProject,r??null)?.path??r??null),a=i??vf();if(!a){B(`initializeApp:noProjectConfigDirectory`),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});return}!i&&r!==a&&(B(`initializeApp:normalizedUnknownDirectoryToProject`,{initialDirectory:r,configDirectory:a}),z.setDirectory(a),Pe.getState().setDirectory(a,{showOverlay:!1}));let o=lf(a);t().activeDirectoryKey!==o&&e({activeDirectoryKey:o}),await Promise.all([t().loadProviders({directory:a,source:`initializeApp`,forceRefresh:!0}),t().loadAgents({directory:a,source:`initializeApp`,forceRefresh:!0})]),e({isInitialized:!0,isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let s=typeof performance<`u`?performance.now():Date.now();B(`initializeApp:end`,{durationMs:Math.round(s-n),providers:t().providers.length,agents:t().agents.length})}catch(n){console.error(`Failed to initialize app:`,n),e({isInitialized:!1,isConnected:!1,connectionPhase:t().hasEverConnected?`reconnecting`:`connecting`,lastDisconnectReason:`init_error`}),B(`initializeApp:error`,{error:n instanceof Error?n.message:String(n)})}})().finally(()=>{Bf=null});return Bf=n,n},prewarmProjectConfigs:async e=>{if(!t().isConnected)return;let n=bf(e??uf(t().activeDirectoryKey)),r=Ci.getState().projects.map(e=>e.path).filter(e=>typeof e==`string`&&e.trim().length>0),i=new Set([n]),a=[];for(let e of r){let n=bf(e);if(i.has(n))continue;i.add(n);let r=t().directoryScoped[n];if((r?.providers.length||t().providers.length>0)&&(r?.agents.length||t().agents.length>0))continue;let o=uf(n);o&&a.push(o)}for(let e of a){if(await af(Sf),!t().isConnected)return;let n=bf(e),r=t().directoryScoped[n],i=[];!r?.providers.length&&t().providers.length===0&&i.push(t().loadProviders({directory:e,source:`projectConfigPrewarm`})),!r?.agents.length&&t().agents.length===0&&i.push(t().loadAgents({directory:e,source:`projectConfigPrewarm`})),i.length>0&&await Promise.allSettled(i)}},getCurrentProvider:()=>{let{providers:e,currentProviderId:n}=t();return e.find(e=>e.id===n)},getCurrentModel:()=>{let e=t().getCurrentProvider(),{currentModelId:n}=t();if(e)return e.models.find(e=>e.id===n)},getCurrentAgent:()=>{let{agents:e,currentAgentName:n}=t();if(n)return e.find(e=>e.name===n)},getModelMetadata:(e,n)=>{if(!e||!n)return;let r=t().providers.find(t=>t.id===e);if(!r)return;let i=r.models.find(e=>e.id===n);if(i)return rf(e,i)},getVisibleAgents:()=>{let{agents:e}=t();return no(e)}}),{name:`config-store`,version:4,storage:h(),migrate:e=>Lf(e),merge:(e,t)=>kf({...t,...Lf(e)}),partialize:e=>{let t=e.directoryScoped[e.activeDirectoryKey],n=e.providers.length>0?{providers:Yd(e.providers),defaultProviders:Xd(e.defaultProviders),providerCatalogPartial:!1}:t&&t.providerCatalogPartial!==!0?{providers:Yd(t.providers),defaultProviders:Xd(t.defaultProviders),providerCatalogPartial:!1}:{providers:[],defaultProviders:{},providerCatalogPartial:!0},i=(t,r)=>{let i=Mf(r?.lastUserSelection)??Nf(Af(r?.lastSelectedAgentName,!0),jf(r?.agentModelSelections))??(t===e.activeDirectoryKey?Mf(e.lastUserSelection):void 0);return{...t===e.activeDirectoryKey?n:{providers:[],defaultProviders:{},providerCatalogPartial:r?.providerCatalogPartial===!0},agents:[],currentProviderId:r?.currentProviderId??(t===e.activeDirectoryKey?e.currentProviderId:``),currentModelId:r?.currentModelId??(t===e.activeDirectoryKey?e.currentModelId:``),currentVariant:r?.currentVariant??(t===e.activeDirectoryKey?e.currentVariant:void 0),currentAgentName:r?.currentAgentName??(t===e.activeDirectoryKey?e.currentAgentName:void 0),selectedProviderId:Kd(r?.selectedProviderId??(t===e.activeDirectoryKey?e.selectedProviderId:``)),agentModelSelections:{},lastSelectedAgentName:i?.agentName??Af(r?.lastSelectedAgentName,!0),lastUserSelection:i,opencodeDefaultAgent:r?.opencodeDefaultAgent,opencodeDefaultModel:r?.opencodeDefaultModel,selectionSource:r?.selectionSource??(t===e.activeDirectoryKey?e.selectionSource:void 0)}},a=Object.fromEntries(Object.entries(e.directoryScoped).map(([e,t])=>[e,i(e,t)]));e.activeDirectoryKey&&!a[e.activeDirectoryKey]&&(a[e.activeDirectoryKey]=i(e.activeDirectoryKey,void 0));let o=JSON.stringify(n);if(Of.encode(o).byteLength>Cf){let t=a[e.activeDirectoryKey];t&&(t.providers=[],t.defaultProviders={},t.providerCatalogPartial=!0)}let s=Mf(e.globalLastUserSelection)??Mf(e.lastUserSelection);return{activeDirectoryKey:e.activeDirectoryKey,catalogTransportIdentity:r(),directoryScoped:a,currentProviderId:e.currentProviderId,currentModelId:e.currentModelId,currentVariant:e.currentVariant,currentAgentName:e.currentAgentName,selectedProviderId:Kd(e.selectedProviderId),agentModelSelections:{},lastSelectedAgentName:s?.agentName??Af(e.lastSelectedAgentName,!0),lastUserSelection:Mf(e.lastUserSelection)??s,globalLastUserSelection:s,settingsDefaultModel:e.settingsDefaultModel,settingsDefaultVariant:e.settingsDefaultVariant,settingsDefaultAgent:e.settingsDefaultAgent,settingsAutoCreateWorktree:e.settingsAutoCreateWorktree,settingsGitmojiEnabled:e.settingsGitmojiEnabled,settingsDefaultFileViewerPreview:e.settingsDefaultFileViewerPreview,settingsZenModel:e.settingsZenModel,settingsMessageStreamTransport:e.settingsMessageStreamTransport,speechRate:e.speechRate,speechPitch:e.speechPitch,speechVolume:e.speechVolume}}})));typeof window<`u`&&(window.__zustand_config_store__=G);var Gf=async e=>{await G.getState().loadProviders({source:e,forceRefresh:!0})},Kf=null;Kf||=Ar(async e=>{let t=[];if(z.clearConfigCache(),Mr(e,`agents`)){let{loadAgents:e}=G.getState();t.push(e({source:`configChange:agents`,forceRefresh:!0}).then(()=>{}))}Mr(e,`providers`)&&t.push(Gf(`configChange:providers`)),t.length>0&&await Promise.all(t)});var qf=null,Jf=null;Jf||=Ad((e,t)=>{G.getState().applyOpenCodeConfigDefaults(e,`syncConfig`,t)}),typeof window<`u`&&!qf&&(qf=Pe.subscribe((e,t)=>{let n=lf(e.currentDirectory),r=lf(t.currentDirectory);n!==r&&(B(`directoryStore:changed`,{previous:r,next:n}),G.getState().activateDirectory(e.currentDirectory))}));var Yf=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Xf=e=>{let t=e.metadata;return Yf(t?.openchamber?.titleRefresh?.activityUpdatedAt)??Yf(e.time?.updated)??Yf(e.time?.created)??0},Zf=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`opencode api unavailable`,`503`,`502`];function Qf(e){if(!e)return!1;let t=String(e instanceof Error?e.message:e).toLowerCase();if(Zf.some(e=>t.includes(e)))return!0;let n=e?.status;return typeof n==`number`&&n>=500&&n<600}async function $f(e,t={}){let{attempts:n=3,delay:r=500,factor:i=2,maxDelay:a=1e4,retryIf:o=Qf}=t,s;for(let t=0;t<n;t++)try{return await e()}catch(e){if(s=e,t===n-1||!o(e))throw e;let c=Math.min(r*i**+t,a);await new Promise(e=>setTimeout(e,c))}throw s}var ep=[`file`,`status`,`additions`,`deletions`],tp=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t={},n=e;return typeof n.messageID==`string`&&(t.messageID=n.messageID),typeof n.partID==`string`&&(t.partID=n.partID),Object.keys(t).length>0?t:void 0},np=e=>e===void 0?!1:!e||typeof e!=`object`||Array.isArray(e)?!0:Object.keys(e).some(e=>e!==`messageID`&&e!==`partID`),rp=e=>typeof e.before==`string`||typeof e.after==`string`||typeof e.from==`string`||typeof e.to==`string`||typeof e.patch==`string`;function ip(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;if(!rp(t))return e;let n={};for(let e of ep)e in t&&t[e]!==void 0&&(n[e]=t[e]);return n}function ap(e){if(!Array.isArray(e))return e;let t=!1,n=e.map(e=>{let n=ip(e);return n!==e&&(t=!0),n});return t?n:e}function op(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e,n=t.summary;if(!n||typeof n!=`object`||Array.isArray(n)||!Object.prototype.hasOwnProperty.call(n,`diffs`))return e;let r=n.diffs;if(!Array.isArray(r)){let e={...n,diffCount:0,hasDiffs:!1};return delete e.diffs,{...t,summary:e}}let i=ap(r),a=i.length,o=a>0,s=n.diffCount===a&&n.hasDiffs===o;return i===r&&s?e:{...t,summary:{...n,diffs:i,diffCount:a,hasDiffs:o}}}function sp(e){let t=e.revert,n=e,r=!1;if(t&&(typeof t.snapshot==`string`||typeof t.diff==`string`)){let e={...t};delete e.snapshot,delete e.diff,n={...n,revert:e},r=!0}let i=op(r?n:e);return i===(r?n:e)?n:i}function cp(e){let t=e;if(!(np(t.revert)||Array.isArray(t.summary?.diffs)||typeof t.summary?.diffCount==`number`||typeof t.summary?.hasDiffs==`boolean`||`permission`in t))return e;let n=sp(e),r={...n};delete r.permission;let i=tp(n.revert);i?r.revert=i:delete r.revert;let a=n.summary;if(a&&typeof a==`object`&&!Array.isArray(a)){let e={...a};delete e.diffs,delete e.diffCount,delete e.hasDiffs,r.summary=e}return r}function lp(e){return op(e)}var up=new Set([`smartfetch-secondary`]),dp=e=>typeof e==`string`&&e.length>0,fp=e=>{let t=e.metadata;if(!t||typeof t!=`object`)return!1;let n=t.openchamber;if(!n||typeof n!=`object`)return!1;let r=n;return!!(dp(r.assistant?.assistantID)||dp(r.scheduledTask?.taskID)||dp(r.smallModel?.purpose))},pp=e=>{let t=e.parentID;return typeof t==`string`&&t.trim()?t:null},mp=e=>!(up.has(e.title)||pp(e)||fp(e)),hp=e=>{if(!e)return null;let t=Number(e);return Number.isFinite(t)?t:null},gp=(e,t)=>{if(!e||typeof e!=`object`)return null;let n=e.headers;if(!n||typeof n!=`object`)return null;let r=n;if(typeof r.get==`function`)return r.get(t);let i=n,a=i[t]??i[t.toLowerCase()];return typeof a==`string`?a:null},_p=e=>{if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message;try{return JSON.stringify(e)}catch{return String(e)}},vp=(e,t)=>{if(e.error){let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${_p(e.error)}`);throw n!==void 0&&(r.status=n),r}if(!Array.isArray(e.data)){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data};async function yp(e,t){let n=[],r=new Set,i=t.cursor;for(;;){let a=t.maxItems===void 0?t.pageSize:Math.max(0,t.maxItems-n.length);if(a===0)break;let o=Math.min(t.pageSize,a),{response:s,payload:c}=await $f(async()=>{let n=t.timeoutMs===void 0?void 0:AbortSignal.timeout(t.timeoutMs),r=t.signal&&n?AbortSignal.any([t.signal,n]):t.signal??n,a=await e.experimental.session.list({...t.directory?{directory:t.directory}:{},archived:t.archived,...t.roots===void 0?{}:{roots:t.roots},...t.start===void 0?{}:{start:t.start},limit:o,...i===void 0?{}:{cursor:i}},r?{signal:r}:void 0);return{response:a.response,payload:vp(a,`experimental.session.list`).map(e=>cp(e))}},{attempts:t.retryAttempts??3,delay:500});if(c.length===0)break;let l=c.filter(mp),u=0;for(let e of l)!e?.id||r.has(e.id)||(r.add(e.id),n.push(e),u+=1);if(u>0&&t.onPage?.(l),t.maxItems!==void 0&&n.length>=t.maxItems||c.length<o)break;let d=hp(gp(s,`x-next-cursor`)),f=c[c.length-1]?.time?.updated,p=d??(typeof f==`number`&&Number.isFinite(f)?f:void 0);if(p===void 0||i!==void 0&&p>=i)break;i=p}return n}var bp=`/api/magic-prompts`,xp=new Map([{id:`git.commit.generate.visible`,title:`Commit Generation Visible Prompt`,group:`Git`,description:`Visible user message for commit message generation.`,template:`You are generating a Conventional Commits subject line from the diffs of the selected files.`},{id:`git.commit.generate.instructions`,title:`Commit Generation Instructions`,group:`Git`,description:`Hidden instructions for commit message generation.`,placeholders:[{key:`selected_files`,description:`Bullet list of currently selected file paths.`}],template:`Return exactly one JSON object and nothing else. Do not include prose, markdown, explanations, or code fences.
|
|
7
7
|
|
|
8
8
|
The JSON object must have exactly this shape:
|
|
9
9
|
{"subject": string, "highlights": string[]}
|
|
@@ -453,24 +453,24 @@ Goal: produce the strongest possible final answer by combining complementary inf
|
|
|
453
453
|
|
|
454
454
|
Use the results below as source material. Do not mention that the inputs were hidden parts. If sources disagree, prefer the most specific, well-supported, and internally consistent answer.
|
|
455
455
|
|
|
456
|
-
--- FUSION INPUTS START ---`}].map(e=>[e.id,e])),
|
|
457
|
-
`),a=(i===-1?r:r.slice(0,i)).trim(),o=(i===-1?``:r.slice(i+1)).trim();!(t.visible in n)&&a.length>0&&(n[t.visible]=a),!(t.instructions in n)&&o.length>0&&(n[t.instructions]=o)}return n},
|
|
456
|
+
--- FUSION INPUTS START ---`}].map(e=>[e.id,e])),Sp={"git.commit.generate":{visible:`git.commit.generate.visible`,instructions:`git.commit.generate.instructions`},"git.pr.generate":{visible:`git.pr.generate.visible`,instructions:`git.pr.generate.instructions`}},Cp=null,wp=null,Tp=(e,t)=>e.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?t[n]??``:``),Ep=e=>{let t=e?.overrides;if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);for(let[e,t]of Object.entries(Sp)){let r=n[e];if(typeof r!=`string`)continue;let i=r.indexOf(`
|
|
457
|
+
`),a=(i===-1?r:r.slice(0,i)).trim(),o=(i===-1?``:r.slice(i+1)).trim();!(t.visible in n)&&a.length>0&&(n[t.visible]=a),!(t.instructions in n)&&o.length>0&&(n[t.instructions]=o)}return n},Dp=async()=>Cp||(wp||=F(bp,{method:`GET`,headers:{Accept:`application/json`}}).then(async e=>{if(!e.ok)throw Error(`Failed to load magic prompts`);let t=Ep(await e.json().catch(()=>({})));return Cp=t,t}).finally(()=>{wp=null}),wp),Op=e=>{let t=xp.get(e);if(!t)throw Error(`Unknown magic prompt id: ${e}`);return t},kp=e=>Op(e).template,Ap=async e=>{let t=(await Dp().catch(()=>({})))[e];return typeof t==`string`?t:kp(e)},jp=async(e,t={})=>Tp(await Ap(e),t),Mp=async(e,t)=>{let n=await F(`${bp}/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({text:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e?.error||`Failed to save magic prompt`)}let r=await n.json();return Cp=Ep(r),{version:typeof r?.version==`number`?r.version:1,overrides:Cp}},Np=async e=>{let t=await F(`${bp}/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e?.error||`Failed to reset magic prompt`)}let n=await t.json();return Cp=Ep(n),{version:typeof n?.version==`number`?n.version:1,overrides:Cp}},Pp=async()=>{let e=await F(bp,{method:`DELETE`,headers:{Accept:`application/json`}});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t?.error||`Failed to reset all magic prompts`)}let t=await e.json();return Cp=Ep(t),{version:typeof t?.version==`number`?t.version:1,overrides:Cp}},Fp=e=>e.filter(e=>e?.type===`text`).map(e=>(e.text||e.content||``).trim()).filter(e=>e.length>0).join(`
|
|
458
458
|
`).replace(/\n\s*\n+/g,`
|
|
459
|
-
`),
|
|
460
|
-
`),l=[];for(let e of o){let t=um(e);t&&l.push(t)}for(let e of[...l].reverse())lm(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=E(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=lm(c,e.token,p);t&&(p.add(`${t.start}:${t.end}`),f.push({kind:`agent`,value:e.name,path:e.name,label:e.name,range:t}))}let m=[],h=new Map;for(let e of s){if(e.slim===!0)continue;let t=typeof e.url==`string`?e.url:``;if(!t)continue;let i=typeof e.mime==`string`?e.mime:`application/octet-stream`,a=typeof e.filename==`string`?e.filename:`attachment`,o=t.startsWith(`file:`)?im(t):null;if(o){let e=sm(o,r),t=null;for(let n of e){let e=lm(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=tm(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ue(s);if(t.startsWith(`data:`)){let e=await cm(t);h.set(l,e),m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:e.type||i,size:e.size,source:`local`,locator:{kind:`blob`,blobID:s}});continue}if($p(t)){if(!ie(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=ae(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=we(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},fm=async(e,t={})=>{let n=t.createID??fe,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=we(r,i),o=ae(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=ue(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await cm(i);c.set(r,n),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||n.type||`application/octet-stream`,size:n.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}if($p(i)){if(!ie(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},pm=e=>e?JSON.parse(JSON.stringify(e)):null,mm=e=>e?{...e}:{},hm=(e,t=Dr.getState())=>{let n=t.getDraft?.(e)??null,r=mm(t.draftAttachmentViews?.[R(e)]);return{record:pm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},gm=async e=>{let t=e.input??Dr.getState(),n=hm(e.key,{getDraft:t.getDraft?.bind(t),draftAttachmentViews:t.draftAttachmentViews}),r;try{r=await t.commitDraftSnapshot({key:e.key,expectedRevision:e.expectedRevision,runtime:e.runtime??t.captureDraftRuntime(),snapshot:e.payload.snapshot,values:e.payload.values})}catch{return{status:`failed`,current:!1,durable:!1,previous:n}}return{status:r.status,current:r.current,durable:r.durable,result:r,previous:n}},_m=async e=>{let t=e.store.getDraft(e.key);if(!t||t.revision!==e.restoredRevision)return{status:`conflict`,current:!0};if(!e.previous.record)try{let t=await e.store.deleteDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}let n=e.previous.record,r=new Map;for(let t of[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)]){let n=e.previous.views[t.attachmentRefID];t.locator.kind===`url`?r.set(t.attachmentRefID,t.locator.url):n?.file?r.set(t.attachmentRefID,n.file):n?.dataUrl&&r.set(t.attachmentRefID,n.dataUrl)}try{let t=await e.store.commitDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime,snapshot:{text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}},values:r});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}},vm=async e=>{let t=e.input??Dr.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?_m({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},ym=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},bm=e=>e?.status===`committed`&&e.current===!0,xm=new Map,Sm=async(e,t)=>{let n=R(e),r=xm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);xm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),xm.get(n)===o&&xm.delete(n)}},Cm=(e,t)=>({key:e,addLocal:async n=>{await Sm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Sm(e,async()=>{let r=t(),i=ym(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await Sm(e,async()=>{let n=t(),r=n.getDraft(e);return!r||r.attachments.length===0||n.setDraftAttachments(e,[])?.attachments.length===0})}catch{return!1}},restoreRootAttachments:async n=>{try{return await Sm(e,async()=>{let r=async()=>t().restoreDraftRootAttachments(e,n),i=await r();return i.status===`conflict`&&(i=await r()),i.status===`failed`||i.status===`stale`?!1:bm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Sm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Sm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Sm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),wm=4e4,Tm=0,Em=null;function Dm(e=Date.now()){Tm=e}function Om(e){return Em=e,()=>{Em===e&&(Em=null)}}function km(e){Em?.(e)}function Am(e=Date.now(),t=wm){return Tm<=0?!1:e-Tm>=t}var jm=3e4,Mm=200,Nm=new Map;function Pm(e,t,n){return`${n?.transport??r()}\n${n?.generation??s()}\n${e.trim()}\n${t}`}function Fm(e,t,n){if(!e||!t)return!1;let r=Nm.get(Pm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<jm}function Im(e,t,n){if(!e||!t)return;let r=Pm(e,t,n);for(Nm.has(r)&&Nm.delete(r);Nm.size>=Mm;){let e=Nm.keys().next().value;if(typeof e!=`string`)break;Nm.delete(e)}Nm.set(r,n?.now??Date.now())}var Lm=768,Rm=()=>{if(typeof window>`u`)return!1;let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`).matches||window.matchMedia(`(hover: none)`).matches:!1,t=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return e||t>0},zm=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(se())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Lm&&Rm()?`mobile`:`desktop`},Bm=()=>zm()===`mobile`,Vm=3,Hm=2,Um=4,Wm=4,Gm=100,Km=30;function qm(){return l()?`relay`:`local`}function Jm(e=qm()){return e===`relay`?Hm:Vm}function Ym(e=qm()){return e===`relay`?Wm:Um}function Xm(e){return Jm($m(e))}function Zm(){return Gm}function Qm(){return Km}function $m(e){return e===`relay`||e===`local`?e:qm()}var eh=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function th(){return{pages:[],pageParams:[]}}function nh(e){let t={};for(let[n,r]of Object.entries(e.messagesByID))t[n]=r;let n={};for(let[t,r]of Object.entries(e.partsByMessageID))n[t]=Object.isFrozen(r)?r:Object.freeze([...r]);return Object.freeze({kind:e.kind,messageOrder:Object.isFrozen(e.messageOrder)?e.messageOrder:Object.freeze([...e.messageOrder]),messagesByID:Object.freeze(t),partsByMessageID:Object.freeze(n),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:Object.freeze({...e.sync})})}function rh(e){return{pages:Object.freeze(e.pages.map(nh)),pageParams:Object.freeze([...e.pageParams])}}function ih(e,t,n=eh){let r=[],i={},a={};for(let t of e.records){let e=t.info?.id;!e||i[e]||(r.push(e),i[e]=t.info,t.parts&&(a[e]=Object.freeze([...t.parts])))}let o=typeof e.turnCount==`number`&&Number.isFinite(e.turnCount)?Math.max(0,Math.floor(e.turnCount)):typeof e.requestedTurnLimit==`number`&&Number.isFinite(e.requestedTurnLimit)?Math.max(0,Math.floor(e.requestedTurnLimit)):+(e.records.length>0);return nh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function ah(e){if(!e||e.pages.length===0)return nl;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function oh(e,t){let n={},r={},i=[],a=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder){if(a.has(e))continue;let n=t.messagesByID[e];if(!n)continue;a.add(e),i.push(n);let o=t.partsByMessageID[e];o&&(r[e]=[...o])}n[t]=i;let o=ah(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function sh(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function ch(e,t,n,r,i,a,o){let s=[],c={},l={};for(let e of t){if(!e?.id)continue;s.push(e.id),c[e.id]=e;let t=n[e.id];t&&(l[e.id]=Object.freeze([...t]))}return nh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:sh(t)}})}function lh(e,t,n,r,i,a){let o=n.messages,s=n.part,c=typeof i.turnCount==`number`&&Number.isFinite(i.turnCount)?Math.max(0,Math.floor(i.turnCount)):typeof i.requestedTurnLimit==`number`&&Number.isFinite(i.requestedTurnLimit)?Math.max(0,Math.floor(i.requestedTurnLimit)):+(i.records.length>0),l=i.complete?null:i.cursor??null,u=i.complete;if(!e||e.pages.length===0||r===`initial`)return rh({pages:[ch(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(t=>{if(i.records.some(e=>e.info.id===t.id))return!0;if(!r.has(t.id)){let n=e.pages[0]?.messageOrder[0];return!n||t.id<n}return!1}),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=ch(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(dh(i,o,s,a)),_.push(e.pageParams[r]??null)}return rh({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?dh(t,r===`reconcile-page`?uh(i,p):[...i,...p],s,a):dh(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=nh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return rh({pages:m,pageParams:[...e.pageParams]})}function uh(e,t){let n=e.slice();for(let e of t){let t=ic(e),r=n.length;for(let e=0;e<n.length;e+=1)if(rc(t,ic(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function dh(e,t,n,r){let i=[],a={},o={},s=t.length!==e.messageOrder.length,c=!1,l=!1;for(let r=0;r<t.length;r+=1){let u=t[r];if(!u?.id)continue;i.push(u.id),e.messageOrder[r]!==u.id&&(s=!0);let d=e.messagesByID[u.id];d===u?a[u.id]=u:d&&fh(d,u)?a[u.id]=d:(a[u.id]=u,c=!0);let f=n[u.id],p=e.partsByMessageID[u.id];f===void 0?p!==void 0&&(l=!0):p&&(p===f||mh(p,f))?o[u.id]=p:Object.isFrozen(f)&&f===p?o[u.id]=f:p&&f===p?o[u.id]=p:(o[u.id]=Object.freeze([...f]),l=!0)}return!s&&!c&&!l&&e.sync.liveRevision===r||!s&&!c&&!l?e:nh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:sh(t)}})}function fh(e,t){return e===t||e.id===t.id&&e===t}function ph(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function mh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!ph(e[n],t[n]))return!1;return!0}function hh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function gh(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function _h(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=lh(e??th(),t,{message:n.message,part:s,messages:o,boundary:r},`recovery`,{records:o.map(e=>({info:e,parts:s[e.id]??[]})),complete:r.kind===`exhausted`,cursor:r.kind===`has-more`?r.cursor:void 0,turnCount:0},i);if(e&&e.pages.length>0){let t=new Map,n=new Map;e.pages.forEach((e,r)=>{for(let i of e.messageOrder){t.has(i)||t.set(i,r);let a=e.messagesByID[i];a&&n.set(i,a)}});let r=o.map(e=>{let t=n.get(e.id);return t&&t.id===e.id&&t===e||t&&e.id===t.id&&e===t?t:e}).map(e=>{let t=n.get(e.id);return!t||a.has(e.id)?e:t}),c={};for(let t of r){let n=s[t.id];if(!n)continue;let r;for(let n of e.pages)if(n.partsByMessageID[t.id]){r=n.partsByMessageID[t.id];break}r&&!a.has(t.id)||r&&mh(r,n)?c[t.id]=r:c[t.id]=n}let l=e.pages.map(()=>[]),u=[];for(let e of r){let n=t.get(e.id);n===void 0?u.push(e):l[n].push(e)}return rh({pages:e.pages.map((t,n)=>dh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function vh(e,t){let n=oh(e,t),r=ah(e),i={message:{...n.message,[t]:[...n.message[t]??[]]},part:{...n.part}};for(let[e,t]of Object.entries(i.part))t&&(i.part[e]=[...t]);return{draft:i,previousBoundary:r}}function yh(e,t,n,r){if(!Ol(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=vh(e,t),o=Is(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=gh(n),c=new Set;return s&&c.add(s),{data:_h(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function bh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.partsByMessageID))!t.has(e)&&r&&t.set(e,r);return t}function xh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.messagesByID))!t.has(e)&&r&&t.set(e,r);return t}function Sh(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function Ch(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=vh(e,t),o=!1,s=0,c,l=new Set,u=bh(e),d=xh(e),f=Sh(i.message[t]);for(let e of n){if(!Ol(e.type))continue;o=!0;let n=Is(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let p=gh(e),m=Sh(i.message[t]),h=m.length!==f.length||m.some((e,t)=>e!==f[t]),g=h;if(p){let e=i.part[p],n=u.get(p);e&&n&&mh(n,e)?i.part[p]=[...n]:e?(g=!0,u.set(p,e)):n&&(g=!0,u.delete(p));let r=i.message[t]?.find(e=>e.id===p),a=d.get(p);if(!(r&&a&&a===r))if(r&&a&&fh(a,r)){let e=i.message[t];if(e){let t=e.findIndex(e=>e.id===p);t>=0&&(e[t]=a)}}else r?(g=!0,d.set(p,r)):a&&(g=!0,d.delete(p))}else g=!0;if(h){f=m;for(let e of i.message[t]??[])e?.id&&!d.has(e.id)&&d.set(e.id,e)}g&&(s+=1,p&&l.add(p))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:_h(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function wh(e,t,n,r,i){let a=e&&e.pages.length>0?e:rh({pages:[ch(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=oh(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:hh(r)};return{data:rh({pages:a.pages.map((e,t)=>t===a.pages.length-1?dh(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?dh(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function Th(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:rh({pages:e.pages.map(e=>{if(!e.messagesByID[t]&&!e.partsByMessageID[t])return e;r=!0;let i=e.messageOrder.filter(e=>e!==t).map(t=>e.messagesByID[t]).filter(Boolean),a={};for(let[n,r]of Object.entries(e.partsByMessageID))n!==t&&(a[n]=[...r]);return dh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Eh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=oh(e,t),i=Xc({message:r.message,part:r.part},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});if(!i.messagesChanged&&!i.partsChanged)return{data:e,result:{applied:!0,changed:!1,boundary:ah(e)}};let a=e?.pages[e.pages.length-1]?.sync.liveRevision??0,o=i.part;if(!e||e.pages.length===0){let e=i.messages[0]?.id,t=i.messages.filter(e=>e.role===`user`).length,n=rh({pages:[ch(`tail`,i.messages,o,typeof e==`string`&&e.length>0?e:null,!1,t,a)],pageParams:[null]});return{data:n,result:{applied:!0,changed:!0,boundary:ah(n)}}}let s=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)s.has(n)||s.set(n,t)});let c=e.pages.map(()=>[]),l=[];for(let e of i.messages){let t=s.get(e.id);t===void 0?l.push(e):c[t].push(e)}let u=rh({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?dh(t,uh(r,l),o,a):dh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:ah(u)}}}function Dh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=dl(oh(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:lh(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return yh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Ch(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return wh(e,t,n.message,n.parts,r)}case`optimistic-confirm`:return{data:e,result:{applied:!0,changed:!1}};case`optimistic-remove`:{let t=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Th(e,n.messageID,t)}case`durable-seed`:return Eh(e,t,n);case`reset`:return n.page?Dh(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function Oh(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function kh(e,t,n,r=`materialize`){return Dh(e,n,{type:`http-page`,purpose:r,page:Oh(t),liveRevision:t.sync.liveRevision}).data}function Ah(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return rh(t);if(t.pages.length===e.pages.length){let r=Ph(e,t);if(r===e)return e;if(Nh(e,t)||Mh(e,t))return r;let i=t.pages[t.pages.length-1];return kh(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Dh(e,n,{type:`http-page`,purpose:`prepend`,page:Oh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return kh(e,r,n)??rh(t)}return rh(t)}function jh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Mh(e,t){let n=jh(e),r=jh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Fh(e,``),a=Fh(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Nh(e,t){let n=jh(e);if(n.size===0)return!1;let r=jh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Fh(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||rc(ic(t),ic(n))>0)return!1}return!0}function Ph(e,t){let n=!1,r=t.pages.map((t,r)=>{let i=e.pages[r];return i&&(i===t||i.kind===t.kind&&i.cursor===t.cursor&&i.complete===t.complete&&i.turnCount===t.turnCount&&i.messageOrder.length===t.messageOrder.length&&i.messageOrder.every((e,n)=>e===t.messageOrder[n])&&i.messageOrder.every(e=>i.messagesByID[e]===t.messagesByID[e])&&i.messageOrder.every(e=>i.partsByMessageID[e]===t.partsByMessageID[e])&&i.sync.liveRevision===t.sync.liveRevision)?i:(n=!0,nh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:rh({pages:r,pageParams:[...t.pageParams]})}function Fh(e,t){let n=[],r={},i={},a=0;for(let t of e?.pages??[]){a=Math.max(a,t.sync.liveRevision);for(let e of t.messageOrder){if(r[e]){r[e]=t.messagesByID[e]??r[e],t.partsByMessageID[e]&&(i[e]=t.partsByMessageID[e]);continue}n.push(e);let a=t.messagesByID[e];a&&(r[e]=a);let o=t.partsByMessageID[e];o&&(i[e]=o)}}let o=[],s=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder)s.has(e)||(s.add(e),o.push(e));return{messageOrder:o,messagesByID:r,partsByMessageID:i,boundary:ah(e),liveRevision:a}}var Ih=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Lh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},Rh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},zh=e=>e.trim(),Bh=e=>e?.trim()||`tail`,Vh=new Set([502,503,504]),Hh=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`timed out`,`timeout`,`opencode api unavailable`];function Uh(e){if(!e||e instanceof Ih||e instanceof Lh)return!1;if(e instanceof Rh)return e.status>=400&&e.status<500?!1:Vh.has(e.status)||e.status>=500&&e.status<600;let t=e?.status;if(typeof t==`number`){if(t>=400&&t<500)return!1;if(Vh.has(t)||t>=500&&t<600)return!0}let n=String(e instanceof Error?e.message:e).toLowerCase(),r=n.match(/\((\d{3})\)/);if(r){let e=Number(r[1]);if(e>=400&&e<500)return!1;if(Vh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Hh.some(e=>n.includes(e))}function Wh(e,t){return e>=2?!1:Uh(t)}var Gh=(e,t=r(),n=s())=>[t,n,`sessionMessages`,`page`,zh(e.directory),e.sessionID,e.limit,Bh(e.before)],Kh=(e,t=r(),n=s())=>[t,n,`session-transcript`,zh(e.directory),e.sessionID];function qh(e){if(!e||typeof e!=`object`)throw new Lh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Lh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Lh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Lh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Lh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Lh(`session message page: cursor must be string when set`);return e}var Jh=e=>{let t=e.records.map(e=>Object.freeze({info:Object.freeze({...e.info}),parts:e.parts===void 0?void 0:Object.freeze([...e.parts])}));return Object.freeze({records:Object.freeze(t),cursor:e.cursor,complete:e.complete,...typeof e.turnCount==`number`?{turnCount:e.turnCount}:{},...typeof e.requestedTurnLimit==`number`?{requestedTurnLimit:e.requestedTurnLimit}:{}})},Yh=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw new Ih},Xh=(e,t,n=r(),i={},a=(i.getGeneration??s)())=>{let o=zh(e.directory),c=e.sessionID,l=e.limit,u=e.before?.trim()||void 0;return{queryKey:Gh({directory:o,sessionID:c,limit:l,before:u},n,a),queryFn:async({signal:e})=>{Yh(n,a,i);let r=await t({directory:o,sessionID:c,limit:l,before:u,signal:e});return Yh(n,a,i),Jh(qh(r))},staleTime:1/0,gcTime:3e5,retry:Wh,retryDelay:e=>Math.min(500*2**e,4e3)}},Zh=(e,t,n=L,i=r(),a={},o=(a.getGeneration??s)())=>n.fetchQuery(Xh(e,t,i,a,o));function Qh(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function $h(e){return Jh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function eg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function tg(e){let t=zh(e.directory),n=e.sessionID,i=e.transport??r(),a=e.probe??{},o=e.generation??(a.getGeneration??s)(),c=e.initialLimit??Jm(),l=e.historyLimit??Ym(),u=e.client??L,d=Kh({directory:t,sessionID:n},i,o),f=async t=>$h(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:d,queryFn:async e=>{Yh(i,o,a);let r=e.pageParam?.trim()||void 0,s=r?l:c,d=r?`prepend`:`initial`,p=await Zh({directory:t,sessionID:n,limit:s,before:r},f,u,i,a,o);Yh(i,o,a);let m=Qh(p);return ih(m,d===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:eg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Wh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>Ah(e,t,n)}}function ng(e){let t=e.client??L,n=tg({...e,client:t}),r=new tt(t,{...n,structuralSharing:(t,n)=>Ah(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=(await r.fetchNextPage()).data;if(e&&e.pages.length>0)return rh(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return rh(t)},fetchPreviousPage:async()=>{let e=r.getCurrentResult().data;try{let t=await r.fetchPreviousPage({cancelRefetch:!1}),n=r.getCurrentResult(),i=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw i&&i.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:rh(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return rh(i)}catch(t){let n=r.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:rh(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function rg(e,t,n,r){let i=e.getQueryData(t),a=Dh(i,n,r);return a.result.applied?a.data===void 0?(`removeQueries`in e&&typeof e.removeQueries==`function`?e.removeQueries({queryKey:t,exact:!0}):e.setQueryData(t,void 0),a):(!a.result.changed&&a.data===i||e.setQueryData(t,a.data),a):a}function ig(e,t=L,n=r(),i=s()){return t.getQueryData(Kh(e,n,i))}function ag(){return v()||Bm()}function og(){return v()?4:Bm()?12:40}var sg=1048576,cg=4*sg,lg=12*sg,ug=40*sg;function dg(){return v()?cg:Bm()?lg:ug}var fg=e=>e.trim();function pg(e){return{transport:e.transport,generation:e.generation,directory:fg(e.directory),sessionID:e.sessionID}}function mg(e){let t=pg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function hg(e){return`${e.transport}\n${e.generation}\n${fg(e.directory)}`}var gg={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function _g(e,t,n){return[t,n,gg.taskRoot,gg.reconcileTaskKind,fg(e.directory),e.sessionID,e.checkpoint]}function vg(e,t,n){return[t,n,gg.checkpoint,fg(e.directory),e.sessionID]}function yg(e){let t=pg(e);return[{queryKey:Kh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,gg.transportPageRoot,gg.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,gg.taskRoot,gg.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,gg.taskRoot,gg.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function bg(){let e=new Map;return{retain(t){let n=pg(t),r=mg(n),i=e.get(r);i?i.count+=1:e.set(r,{scope:n,count:1});let a=!1;return()=>{if(a)return;a=!0;let t=e.get(r);t&&(--t.count,t.count<=0&&e.delete(r))}},isRetained(t){return(e.get(mg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(mg(t))?.count??0},clear(){e.clear()}}}function xg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Sg=3e4;function Cg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function wg(e){return!Array.isArray(e)||e.length<5||e[2]!==gg.canonical||typeof e[0]!=`string`||typeof e[1]!=`number`||typeof e[3]!=`string`||typeof e[4]!=`string`?null:{transport:e[0],generation:e[1],directory:e[3],sessionID:e[4]}}function Tg(e){let t=e.client,n=e.activeRegistry??bg(),r=e.counters??xg(),i=e.getLimit??og,a=e.now??Date.now,o=e.minResidencyMs??Sg,s=new Map,c=e=>{let t=mg(pg(e));s.set(t,a())},l=e=>{let t=mg(pg(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=pg(e);if(n.isRetained(r))return!0;let i=Kh({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},d=e=>{let r=e?.directory===void 0?void 0:fg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=wg(a.queryKey);if(!t||e?.transport!==void 0&&t.transport!==e.transport||e?.generation!==void 0&&t.generation!==e.generation||r!==void 0&&t.directory!==r)continue;let o=a.getObserversCount(),s=n.isRetained(t);i.push({scope:t,queryKey:a.queryKey,dataUpdatedAt:a.state.dataUpdatedAt,observerCount:o,retained:s,active:s||o>0,pageCount:Cg(a.state.data)})}return i},f=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},p=e=>{r.purgeSession+=1,s.delete(mg(pg(e)));for(let t of yg(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,gg.canonical],[e,t,gg.transportPageRoot,gg.transportPageKind],[e,t,gg.taskRoot],[e,t,gg.checkpoint]];for(let e of n)f({queryKey:e})},h=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>mg(pg(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=hg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let u=[];for(let e of c.values()){for(let t of e){let e=mg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(mg(e.scope))||l(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,d=0;for(;c>t&&d<i.length&&!(c-1<o);){let e=i[d];d+=1,p(e.scope),u.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:u}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:u,listCanonical:d,purgeSession:p,purgeGeneration:m,enforce:h,destructiveReset:async(e,t)=>{r.destructiveReset+=1,p(e);try{let n=await t();return h({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw p(e),t}},noteScopeObserved:c}}var Eg=3e4,Dg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function Og(e,t=Eg){let n;try{return await Promise.race([e,new Promise((e,r)=>{n=setTimeout(()=>{r(Error(`session turn page: timed out after ${t}ms`))},t)})])}finally{n!==void 0&&clearTimeout(n)}}var kg=e=>e?e.toLowerCase().includes(`application/json`):!1,Ag=e=>e?e.toLowerCase().includes(`text/html`):!1;function jg(e,t){if(!e||typeof e!=`object`)throw Error(`session turn page: expected JSON object`);let n=e;if(n.partial===!0)throw Error(`session turn page: partial responses are not accepted`);if(!Array.isArray(n.records))throw Error(`session turn page: records must be an array`);if(!(`complete`in n)||typeof n.complete!=`boolean`)throw Error(`session turn page: complete must be a boolean`);if(typeof n.turnCount!=`number`||!Number.isFinite(n.turnCount))throw Error(`session turn page: turnCount must be a number`);if(!Number.isInteger(n.turnCount)||n.turnCount<0||n.turnCount>t)throw Error(`session turn page: turnCount must be an integer in 0..${t}`);if(n.cursor!=null&&typeof n.cursor!=`string`)throw Error(`session turn page: cursor must be string or null`);if(typeof n.cursor==`string`&&n.cursor.length===0)throw Error(`session turn page: cursor must not be empty string`);if(n.complete===!0&&n.cursor!=null)throw Error(`session turn page: complete=true requires cursor=null`);if(n.complete===!1&&(n.cursor==null||typeof n.cursor!=`string`))throw Error(`session turn page: complete=false requires non-empty cursor`);let r=[];for(let e=0;e<n.records.length;e++){let t=n.records[e];if(!t||typeof t!=`object`)throw Error(`session turn page: records[${e}] must be an object`);let i=t,a=i.info;if(!a||typeof a!=`object`)throw Error(`session turn page: records[${e}].info must be an object`);let o=a.id;if(typeof o!=`string`||o.length===0)throw Error(`session turn page: records[${e}].info.id must be a non-empty string`);if(`parts`in i&&i.parts!==void 0&&!Array.isArray(i.parts))throw Error(`session turn page: records[${e}].parts must be an array when present`);r.push({info:a,...i.parts===void 0?{}:{parts:i.parts}})}return{records:r,cursor:n.cursor==null?null:n.cursor,complete:n.complete,turnCount:n.turnCount}}async function Mg(e){let t=e.turns??Ym(),n=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages`,r={directory:e.directory,turns:String(t)};e.before&&(r.before=e.before),typeof e.scanLimit==`number`&&Number.isFinite(e.scanLimit)&&(r.scanLimit=String(Math.floor(e.scanLimit)));let i=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Eg;return Og((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Dg(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(Ag(o))throw Error(`session turn page: unexpected HTML response`);kg(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return jg(s,t)})(),i)}async function Ng(e){let t=e.purpose===`prepend`&&e.before?Ym():Jm();return Mg({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Pg=3e4,Fg=2,Ig=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Lg=e=>e?e.toLowerCase().includes(`text/html`):!1,Rg=e=>new Promise(t=>{setTimeout(t,e)});function zg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Lh(`session transcript reconcile: ${t} must be string or null`);return e}function Bg(e){if(!e||typeof e!=`object`)throw new Lh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Lh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Lh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Lh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Lh(`session transcript reconcile: resetRequired must be a boolean`);if(typeof t.scannedRecords!=`number`||!Number.isFinite(t.scannedRecords)||!Number.isInteger(t.scannedRecords)||t.scannedRecords<0)throw new Lh(`session transcript reconcile: scannedRecords must be a non-negative integer`);if(typeof t.responseBytes!=`number`||!Number.isFinite(t.responseBytes)||!Number.isInteger(t.responseBytes)||t.responseBytes<0)throw new Lh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=zg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=zg(t.latestHeadMessageID,`latestHeadMessageID`),i=zg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Lh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Lh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Lh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Lh(`session transcript reconcile: resetRequired=true requires continuation=null`)}let a=[];for(let e=0;e<t.records.length;e+=1){let n=t.records[e];if(!n||typeof n!=`object`)throw new Lh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Lh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Lh(`session transcript reconcile: records[${e}].info.id must be a non-empty string`);if(`parts`in r&&r.parts!==void 0&&!Array.isArray(r.parts))throw new Lh(`session transcript reconcile: records[${e}].parts must be an array when present`);a.push({info:i,...r.parts===void 0?{}:{parts:r.parts}})}return{records:Object.freeze(a),anchorFound:t.anchorFound,capturedHeadMessageID:n,latestHeadMessageID:r,continuation:i,complete:t.complete,resetRequired:t.resetRequired,scannedRecords:t.scannedRecords,responseBytes:t.responseBytes}}function Vg(e){let t=typeof e.anchor==`string`&&e.anchor.length>0?e.anchor:void 0,n=typeof e.continuation==`string`&&e.continuation.length>0?e.continuation:void 0;if(!!t==!!n)throw new Lh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Hg(e,t,n){let r=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages/reconcile`,i={directory:e.directory};return t.anchor&&(i.anchor=t.anchor),t.continuation&&(i.continuation=t.continuation),Og((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Ig(e.signal,n)})}catch(e){throw e instanceof Ih||e instanceof Lh||e instanceof Rh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new Rh(t.status,`session transcript reconcile failed (${t.status})`);if(Lg(t.headers.get(`content-type`)))throw new Lh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Lh(`session transcript reconcile: malformed JSON`)}return Bg(a)})(),n)}async function Ug(e){let t=Vg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Pg,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Fg,i=e.sleep??Rg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Hg(e,t,n)}catch(t){if(t instanceof Ih||t instanceof Lh||t instanceof Rh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Uh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var Wg=`GitHub issue context (JSON)`,Gg=`GitHub pull request context (JSON)`,Kg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,qg=(e,t)=>{let n=e.trimStart();if(!n.startsWith(t))return null;let r=n.indexOf(`{`);if(r<0)return null;try{return JSON.parse(n.slice(r))}catch{return null}},Jg=e=>{let t=qg(e,Wg);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!Kg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=qg(e,Gg);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!Kg(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},Yg=(e,t)=>{let n=e.trim();return!!(t&&n.startsWith(`User has requested to enter plan mode`)||t&&n.startsWith(`The plan at `)||n.startsWith(`The following tool was executed by the user`))},Xg=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),Zg=e=>e.trim()===`/compact`,Qg=(e,t)=>{let n=t?.planModeEnabled===!0;return e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(Xg(t)||Zg(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let r=t.trimStart();return Yg(t,n)||r.startsWith(Wg)||r.startsWith(Gg)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=Jg(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},$g=e=>e?.length?Qg(e).length>0:!1,e_=`oc_asst_session_divider:`,t_=[],n_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),r_=(e,t=0)=>({info:{id:`${e_}${e}`,role:`system`,time:{created:t}},parts:[]}),i_=e=>e.slice().reverse().flatMap(e=>e.entries),a_=(e,t,n=t_)=>{if(!e.length)return t_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(r_(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?t_:u_(n,r)?n:r},o_=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},s_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=o_(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return $g(e.parts)?e:$g(t.parts)?e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}:e.parts.length>0||t.parts.length===0?e:e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}},c_=(e,t,n,r=t_)=>{if(!t)return n.length>0?Array.from(n):t_;let i=new Map,a=0;for(let n of e)n.sessionID===t&&i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++});for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:s_(e,t?.message),order:t?.order??a++})}if(i.size===0)return t_;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return u_(r,o)?r:o},l_=(e,t)=>{if(!n_(e)||!n_(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},u_=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||l_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},d_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),f_=e=>e.startsWith(e_);function p_(e,t){if(!e?.id||f_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(d_(t,`subtask`)||d_(t,`compaction`)||t.every(e=>Xp(e))):!1}function m_(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(p_(r,i))return n}return null}function h_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function g_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:m_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:h_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function __(e,t){return{...e,...t}}function v_(e,t){let n=vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function y_(e,t){let n=vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function b_(e,t){let n=vg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function x_(e){return e.slim===!0}var S_=/bearer|token|authorization|password|secret|cookie/i,C_=new Set([`message.part.delta`]);function w_(e){return typeof e==`string`&&e.includes(`-`)}var T_=`openchamber.client-diagnostics.enabled`;function E_(e){return e===`true`||e!==`false`&&null}function D_(e){return e.preference===!0||e.preference!==!1&&w_(e.version)}function O_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function k_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function A_(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`&&Number.isFinite(t)&&t>=100&&t<=599)return t}let t=(e instanceof Error?e.message:typeof e==`string`?e:``).match(/\((\d{3})\)/);if(!t)return;let n=Number(t[1]);return n>=100&&n<=599?n:void 0}function j_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return S_.test(t)?`redacted-error`:t}function M_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)x_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function N_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function P_(e){let t=0;for(let n of e.messageOrder)J_(e.messagesByID[n])===!0&&(t+=1);return t}function F_(e){let t=e.transcript?M_(e.transcript.partsByMessageID):void 0;return{at:(e.now??Date.now)(),feat:`transcript`,kind:e.kind,sessionID:e.sessionID,...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.source?{source:e.source}:{},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.request?{requestStatus:e.request.status}:{},...e.hydration?{hydrationPhase:e.hydration.phase,p0Satisfied:e.hydration.p0Satisfied}:{},...e.transcript?{messageCount:e.transcript.messageOrder.length,lastMessageIDs:N_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:P_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...j_(e.error??e.request?.error)?{error:j_(e.error??e.request?.error)}:{},...A_(e.error)===void 0?{}:{httpStatus:A_(e.error)}}}function I_(e={}){let t=e.limit??500,n=[];return{append(e){n.push(e),n.length>t&&n.splice(0,n.length-t)},async read(){return n.slice()},async clear(){n.length=0}}}function L_(e){return{isEnabled:e.isEnabled,record(t){e.isEnabled()&&Promise.resolve(e.sink.append(t)).catch(()=>void 0)},async exportReport(){let t=await e.sink.read(),n=[...new Set(t.map(e=>e.feat))];return JSON.stringify({schema:`openchamber.client-diagnostics.v1`,exportedAt:Date.now(),eventCount:t.length,feats:n,events:t},null,2)},clear:()=>e.sink.clear()}}function R_(e){return typeof e==`string`&&C_.has(e)}function z_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return R_(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>R_(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function B_(e){if(e.type===`http-page`)return e.purpose}function V_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function H_(e){switch(e.type){case`http-page`:return`network`;case`sse-event`:case`sse-event-batch`:return`sse`;case`materialize-snapshots`:return`durable-cache`;default:return}}function U_(e){return e.__openchamberOptimistic===!0}function W_(e){let t=[];for(let n of e){if(n.type!==`text`)continue;let e=typeof n.text==`string`?n.text.trim():``;e&&t.push(e)}let n=t.join(`
|
|
461
|
-
`).trim();if(n)return S_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function G_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function K_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var q_=e=>typeof e==`string`&&e.trim().length>0;function J_(e){if(!e||G_(e)!==`assistant`)return;let t=e,n=!q_(t.mode)&&!q_(t.agent),r=!q_(t.modelID)||!q_(t.providerID);return n||r}function Y_(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function X_(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)x_(e)?r+=1:i+=1,U_(e)&&(a=!0);let o=e.messagesByID[t],s=G_(o),c=J_(o),l=s===`user`?W_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:K_(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function Z_(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:Y_(e),after:Y_(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function Q_(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:Z_(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}function $_(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function ev(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function tv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function nv(e){let t=tv(e.partID),n=tv(e.messageID),r=tv(e.directory),i=tv(e.childSessionID),a=tv(e.toolStatus),o=tv(e.surfaceKind);return{directoryPresent:e.directoryPresent,childSessionPresent:e.childSessionPresent,finalized:e.finalized,backgroundRunning:e.backgroundRunning,effectiveActive:e.effectiveActive,suppressLoading:e.suppressLoading,delegating:e.delegating,childStatus:e.childStatus,parentStatus:e.parentStatus,idleConfirmed:e.idleConfirmed,navigateCapability:e.navigateCapability,...t?{partID:t}:{},...n?{messageID:n}:{},...r?{directory:r}:{},...i?{childSessionID:i}:{},...a?{toolStatus:a}:{},...o?{surfaceKind:o}:{},...e.taskStartedAt===void 0?{}:{taskStartedAt:e.taskStartedAt},...e.statusObservedAt===void 0?{}:{statusObservedAt:e.statusObservedAt},...e.statusSnapshotAt===void 0?{}:{statusSnapshotAt:e.statusSnapshotAt}}}function rv(e){return[e.sessionID,tv(e.partID)??``,e.childSessionPresent?`1`:`0`,tv(e.childSessionID)??``,tv(e.toolStatus)??``,e.finalized?`1`:`0`,e.backgroundRunning?`1`:`0`,e.effectiveActive?`1`:`0`,e.suppressLoading?`1`:`0`,e.delegating?`1`:`0`,e.childStatus,e.parentStatus,e.idleConfirmed?`1`:`0`,e.navigateCapability?`1`:`0`,e.directoryPresent?`1`:`0`,tv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function iv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...nv(e)}}function av(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:ev(e),...nv(e)}}var ov=`openchamber-transcript-diagnostics`,sv=`events`,cv=1,lv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),uv=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,cv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(sv)||e.createObjectStore(sv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),dv=(e=ov)=>({async append(t,n){let r=await uv(e);try{let e=r.transaction(sv,`readwrite`).objectStore(sv);await lv(e.add(t));let i=await lv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await lv(e.delete(t))}finally{r.close()}},async read(){let t=await uv(e);try{return await lv(t.transaction(sv,`readonly`).objectStore(sv).getAll())}finally{t.close()}},async clear(){let t=await uv(e);try{await lv(t.transaction(sv,`readwrite`).objectStore(sv).clear())}finally{t.close()}}});function fv(e={}){let t=e.driver??dv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var pv=Ze(`OpenChamberMedia`);function mv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function hv(){return We()&&Qe!==void 0&&Qe.isPluginAvailable(`OpenChamberMedia`)}function gv(){return`1.18.2-beta.31`}function _v(){if(typeof localStorage>`u`)return null;try{return E_(localStorage.getItem(T_))}catch{return null}}function vv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(T_,e?`true`:`false`)}catch{}}function yv(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var bv;function xv(e=gv()){return D_({version:e,preference:_v()})}function Sv(e={}){return L_({sink:yv()===`indexeddb`?(e.createIndexedDBSink??fv)():(e.createMemorySink??I_)(),isEnabled:e.isEnabled??xv})}function Cv(){return bv??=Sv(),bv}function wv(e){Cv().record(e)}function Tv(e){try{return xv()?X_(e()):void 0}catch{return}}function Ev(e){try{wv(Q_(e))}catch{}}function Dv(e){try{wv(iv(e))}catch{}}function Ov(e){try{wv(av(e))}catch{}}function kv(e){let t=z_(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&wv(F_({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e.transcript,request:e.request,hydration:e.hydration,command:e.command.type,purpose:B_(e.command),sseType:V_(e.command),source:H_(e.command),error:e.error}))}async function Av(){let e=await Cv().exportReport(),t=Te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function jv(e,t=O_()){if(hv())return(await pv.saveFile({dataBase64:mv(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function Mv(){let e=await Av(),t=O_();return{content:e,fileName:t,outcome:await jv(e,t),eventCount:k_(e)}}function Nv(e){let t=e.directory.trim(),n=new Set,r=[],i=e=>{!e||n.has(e)||(n.add(e),r.push({directory:t,sessionID:e}))};for(let n of e.viewedSessions??[])n.directory.trim()===t&&i(n.sessionID);e.viewed?.directory.trim()===t&&i(e.viewed.sessionID);for(let t of e.busyOrRetrySessionIDs??[])i(t);for(let n of e.activeScopes)n.directory.trim()===t&&i(n.sessionID);return r}var Pv=2,Fv=6e4;function Iv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Lv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Ih}function Rv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function zv(e,t){return pg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function Bv(e,t){return`${e.trim()}\n${t}`}function Vv(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??Tg({client:t,activeRegistry:bg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Pv)),o=e.fetchReconcile??Ug,c=e.now??Date.now,l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_=new Set,v=(e,t)=>{h.add(Bv(e,t))},y=(e,t)=>{h.delete(Bv(e,t))},b=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},x=e=>{u+=1;for(let e of[...f.keys()])b(e);p.clear(),m.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),r=new Map;for(let t of i.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&r.set(Bv(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of i.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&r.set(Bv(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(r.values())},C=(t,n)=>{let r=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of i.listCanonical({transport:t.transport,generation:t.generation}))r.add(e.scope.directory);for(let e of i.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&r.add(e.directory);for(let e of n)e.directory&&r.add(e.directory.trim());return r},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=Bv(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=r=>{if(l)return;let a={transport:r.transport??Iv(e).transport,generation:r.generation??Iv(e).generation},o=c(),s=w(),u=C(a,s),d=i.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(Bv(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of i.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(Bv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(Bv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(Bv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=Rv(e,a),s=n.getTranscript(i),c=g_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});y_(t,c)}let p=new Set;for(let t of u){let n=Nv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(Bv(e.directory,e.sessionID))}for(let e of d){let t=Bv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=Tv(()=>n.getTranscript(e)),a=n.getTranscript(e).liveRevision,o=n.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:t.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:r,liveRevision:a});try{let t=Tv(()=>n.getTranscript(e));i&&t&&Ev({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(Lv({transport:i.transport,generation:i.generation},e),a!==u)throw new Ih;y_(t,__(v_(t,i)??g_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Tv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Lv({transport:i.transport,generation:i.generation},e),a!==u)throw new Ih;b_(t,i),y(i.directory,i.sessionID);try{let e=Tv(()=>n.getTranscript(r));o&&e&&Ev({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw y_(t,__(v_(t,i)??g_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},O=async(r,i,a)=>{if(Lv({transport:i.transport,generation:i.generation},e),a!==u)throw new Ih;y_(t,__(v_(t,i)??g_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Tv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Lv({transport:i.transport,generation:i.generation},e),a!==u)throw new Ih;b_(t,i),y(i.directory,i.sessionID);try{let e=Tv(()=>n.getTranscript(r));o&&e&&Ev({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw y_(t,__(v_(t,i)??g_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,s)=>{let l=Rv(r,i),d=zv(r,i),f=_g({directory:d.directory,sessionID:d.sessionID,checkpoint:String(v_(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Lv(i,e),a!==u||s.aborted)throw new Ih;let p=v_(t,d);if(p||(p=g_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),y_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=__(p,{state:`reconciling`}),y_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Lv(i,e),a!==u||s.aborted)throw new Ih;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Lv(i,e),a!==u||s.aborted)throw new Ih;let h=n.getTranscript(l).liveRevision;if(!g&&!m){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:s});if(Lv(i,e),a!==u||s.aborted)throw new Ih;if(y.resetRequired){await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(l,y,h),p=__(v_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),y_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=__(v_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),y_(t,p);continue}p=__(v_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),y_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:c()});return}await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()})}catch(n){if(n instanceof Ih||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:c()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:c(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=Bv(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Iv(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{try{await k(o,c,l,h.signal)}catch{}finally{f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=Bv(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),r=C(t,n);for(let a of r){let r=Nv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of r)j(e);for(let e of i.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=Bv(e.scope.directory,e.scope.sessionID);r.some(e=>Bv(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??r)(),generation:t.runtimeGeneration},i=(e.probe?.getGeneration??s)(),a=(e.probe?.getTransport??r)();if(i!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(l)return;let r=t.directory.trim(),i=Iv(e,t),a=Rv({directory:r,sessionID:t.sessionID},i),s=mg(zv({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Fv||_.has(s)||d.has(Bv(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(s),(async()=>{try{if(Lv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Lv(i,e),l||(g.set(s,{checkedAt:c()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(s)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=Bv(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Iv(e,r),s=Rv({directory:i,sessionID:r.sessionID},o),c=zv({directory:i,sessionID:r.sessionID},o),u=v_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{Lv(o,e);let r=await n.ensureInitial(s);return b_(t,c),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=Iv(e,n);return v_(t,zv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(Bv(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function Hv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Uv(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts??[]})),cursor:typeof e.cursor==`string`?e.cursor:void 0,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function Wv(e){if(e.type===`message.part.delta`)return{action:`skip`};let t=e.properties;if(e.type===`message.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`remove`,messageID:e}:{action:`skip`}}if(e.type===`message.updated`){let e=t?.info;return typeof e?.id==`string`&&e.id.length>0?{action:`persist`,messageID:e.id}:{action:`skip`}}if(e.type===`message.part.updated`){let e=t?.part;return typeof e?.messageID==`string`&&e.messageID.length>0?{action:`persist`,messageID:e.messageID}:{action:`skip`}}if(e.type===`message.part.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`persist`,messageID:e}:{action:`skip`}}return{action:`skip`}}function Gv(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(ec(e))??Promise.resolve(),r.get(nc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=ec(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=nc(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??dg)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var Kv=new Map;function qv(e,t){let n=Kv.get(e);if(n)return n;let r=t().finally(()=>{Kv.get(e)===r&&Kv.delete(e)});return Kv.set(e,r),r}var Jv=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function Yv(e){return qv(Jv(e),e.request)}function Xv(e,t){return`${e}\n${t}`}var Zv=new Map;function Qv(e){return Zv.get(e)}async function $v(e){return Yv({runtimeKey:Xv(e.transport,e.generation),directory:e.directory,sessionID:e.sessionID,messageID:e.messageID,request:async()=>{let t=await e.request();if(t.error)throw Error(`session.message failed`);let n=t.data,r=n?.info,i=n?.parts??t.parts??[];if(!r?.id)throw Error(`session.message failed: empty response`);return Zv.set(r.id,i),{info:cp(r),parts:i}}})}function ey(e,t){let n=e.info;return n.role===t||n.clientRole===t}function ty(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!ey(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function ny(e){if(e.complete){let t=e.records.some(e=>ey(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=ty(e.records);if(t.length===0){let t=e.records.some(e=>ey(e,`user`));return{records:e.records,boundaryFound:t,partial:!t}}let n=await Promise.all(t.map(async t=>{try{return await e.requestMessage(t)}catch{return null}})),r=new Map;for(let t of e.records)r.set(t.info.id,t);for(let e of n)e?.info?.id&&r.set(e.info.id,e);let i=[...r.values()].sort((e,t)=>e.info.id.localeCompare(t.info.id)),a=i.some(e=>ey(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function ry(e){return e.trim()}function iy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:ry(e.directory),sessionID:e.sessionID,transport:n,generation:i}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function ay(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:nl,liveRevision:0}}function oy(e,t){if(!e||e.pages.length===0)return ay(t);let n=Fh(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function sy(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function cy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function ly(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=sy(e.info);t!==void 0&&(n===void 0||t<n)&&(n=t)}if(n===void 0)return[];let r=new Set(t.records.map(e=>e.info.id)),i=[];for(let t of e.messageOrder){if(r.has(t))continue;let a=sy(e.messagesByID[t]);a===void 0||a<=n||cy(e.partsByMessageID[t])||i.push(t)}return i}function uy(e={}){let t=e.client??L,n=e.cacheBudget??Tg({client:t,activeRegistry:e.activeRegistry??bg()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?Gv(e.durableStore,{getProtectScopes:()=>i.listRetained().map(Hv),getByteBudget:e.getDurableByteBudget}):void 0,f=new Map,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=oy(w(e),t.sessionID);!xl(r)&&!v.has(n)||(y.add(n),wv(F_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=u.get(e);return t||(t={messages:new Map,parts:new Map},u.set(e,t)),t},w=n=>{let r=iy(n,e);return ig({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=iy(t,e);return Kh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=iy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let i=e.probe??{getTransport:r,getGeneration:s},o=iy(n,{...e,transport:void 0,generation:void 0,probe:i}),c=K(o),l=a.get(c);if(l)return l;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let u=ng({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:i,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(c,u),u},k=t=>{let n=K(iy(t,e));u.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(iy(n,e));if(c.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});c.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=c.get(e);n&&(n(),c.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of m.keys())t.startsWith(e)&&m.delete(t);for(let t of h.keys())t.startsWith(e)&&h.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of m)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of h.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=iy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(Hv(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=Hv(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=oy(w(e),t.sessionID);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ce(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=oy(w(e),t.sessionID);for(let e of r){let n=Wv(e);if(n.action===`remove`){d.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=oy(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,i)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:r,getGeneration:s},c={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Jm()};return Uv(i?.fresh?await t.fetchQuery({...Xh(c,a,n.transport,o,n.generation),staleTime:0}):await Zh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)su(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now();f.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return f.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Im(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!hl(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),m.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Ih||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),wv(F_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:oy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{p.delete(r)}})();return p.set(r,a),a},fe=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;f.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return f.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||$l(t.sessionID,t.directory)?(f.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Im(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return f.delete(r),n instanceof Ih||!se(t)||wv(F_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:oy(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{p.delete(r)}})();return p.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(iy(t,e)))?!0:ah(n).kind===`unknown`},P={getTranscript(t){let n=iy(t,e),r=K(n),i=oy(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=iy(t,e),r=K(n),i=P.getTranscript(t);return te(r,Tl(n.sessionID,i.boundary))},getRequestState(t){let n=iy(t,e),r=f.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=iy(t,e),r=K(n),i=P.getTranscript(t);xl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Sl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:vl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(iy(t,e)),i=C(r),a=P.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(iy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??dy,o=i.parts.get(n);return o===a||o&&a&&o.length===a.length&&o.every((e,t)=>e===a[t])?o??a:(i.parts.set(n,a),a)},getMessageMaterializationState(t,n){let r=iy(t,e),i=m.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||ml(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=iy(t,e),i=M(r,n),a=Tv(()=>P.getTranscript(t)),o=e=>{try{let t=Tv(e);if(!a||!t)return;Ev({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=h.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return m.set(i,{status:`idle`}),P.getTranscript(t);if(!ml(P.getParts(t,n))&&!g.get(K(r))?.has(n))return m.set(i,{status:`ready`}),P.getTranscript(t);m.set(i,{status:`loading`}),k(t);try{let a=await $v({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),ml(P.getParts(t,n))?m.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):m.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(m.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return m.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return m.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return h.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{h.get(i)===c&&h.delete(i)}),c},apply(r,i){let a=iy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=rg(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=rg(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`sse-event-batch`:{let e=rg(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=rg(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),rg(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=rg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=rg(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return fy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=rg(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return le(r,a,i,s),s.applied&&(kv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:oy(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,r){let a=K(iy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);l.set(a,i.retain(e)),n.noteScopeObserved(e)}return s.add(r),A(t),()=>{let e=o.get(a);if(e){if(e.delete(r),e.size===0){let e=l.get(a);e&&(e(),l.delete(a))}j(a)}}},async ensureInitial(t){let r=iy(t,e),a=K(r);if(d&&await d.wait(Hv(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Hv(r));if(se(r)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)hl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){wv(F_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,r);return wv(F_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!i.isRetained(E(t))){let e=Date.now(),n=await fe(t,r);return wv(F_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;f.delete(a);try{await s.ensureInitial()}catch(e){throw wv(F_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:oy(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Im(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return wv(F_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:u,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),u},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),ah(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=iy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return wv(F_({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw wv(F_({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=iy(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=iy(t,e),i=Tv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??Jm(),signal:new AbortController().signal}),s=P.getTranscript(t).liveRevision;if(P.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=ly(P.getTranscript(t),o);for(let i of n)P.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=P.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Tv(()=>c);i&&e&&Ev({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Tv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(Hv(iy(t,e))),n.destructiveReset(i,async()=>{let n=iy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),u.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Tv(()=>s);r&&e&&Ev({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(iy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),u.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),u.delete(n);let e=l.get(n);e&&(e(),l.delete(n));let t=c.get(n);t&&(t(),c.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),d&&d.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of c.values())e();c.clear();for(let e of l.values())e();l.clear(),o.clear(),u.clear(),f.clear(),p.clear(),m.clear(),h.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var dy=Object.freeze([]);function fy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=rg(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var py=`/api/openchamber/transcript-cache`,my=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),hy=e=>typeof e==`object`&&!!e&&!Array.isArray(e),gy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},_y=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},vy=e=>{if(!hy(e))throw Error(`Invalid transcript cache scope`);return{transport:gy(e.transport,`scope`),generation:_y(e.generation,`scope`),directory:gy(e.directory,`scope`),sessionID:gy(e.sessionID,`scope`)}},yy=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},by=e=>{if(!hy(e)||!hy(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!hy(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:vy(e.scope),messageID:gy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>yy(e,`part completeness`)),completeness:yy(e.completeness,`completeness`),contentHash:gy(e.contentHash,`content hash`),byteSize:_y(e.byteSize,`byte size`),lastAccessedAt:_y(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:_y(e.sortKey.created,`sort key`),messageID:gy(e.sortKey.messageID,`sort key`)}}},xy=(e,t)=>{if(!hy(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(by);return{scope:e.scope===void 0?hc(t):vy(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},Sy=e=>{if(!hy(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:by(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!my.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:by(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Cy=e=>{if(!hy(e))throw Error(`Invalid transcript cache evict`);return{evicted:_y(e.evicted,`evict`),freedBytes:_y(e.freedBytes,`evict`),remainingBytes:_y(e.remainingBytes,`evict`)}},wy=e=>({scope:hc(e),records:[],byteSize:0}),Ty=(e,t)=>hy(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ey=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},Dy=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await Ey(r)};let i=await Ey(r).catch(()=>void 0);throw Error(Ty(i,`Transcript cache request failed (${r.status})`))},Oy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),ky=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Ay(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Dy(t,`${py}/session`,{method:`GET`,query:Oy(e)});return n.kind===`disabled`||n.kind===`not-found`?wy(e):xy(n.payload,e)},async readMessage(e,n){let r=await Dy(t,`${py}/message`,{method:`GET`,query:{...Oy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!hy(r.payload))throw Error(`Invalid transcript cache record`);return by(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Dy(t,`${py}/message`,ky(`PUT`,{scope:e,info:n,parts:r}));if(i.kind===`disabled`)return{status:`skipped`,reason:`unchanged`};if(i.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return Sy(i.payload)},async removeMessage(e,n){let r=await Dy(t,`${py}/message`,ky(`DELETE`,{scope:e,messageID:n}));if(r.kind!==`disabled`&&r.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearSession(e){let n=await Dy(t,`${py}/session`,ky(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Dy(t,`${py}/generation`,ky(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Dy(t,`${py}/evict`,ky(`POST`,{maxBytes:e,...n?.protect?{protect:n.protect}:{}}));if(r.kind===`disabled`)return{evicted:0,freedBytes:0,remainingBytes:0};if(r.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return Cy(r.payload)},async clearAll(){let e=await Dy(t,`${py}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var jy=`openchamber-transcript-durable`,My=1,Ny=`transcriptIndex`,Py=`transcriptContent`,Fy=class extends Error{code;constructor(e){super(e),this.code=e}},Iy=e=>({id:tc(e.scope,e.messageID),scope:hc(e.scope),scopeKey:ec(e.scope),generationKey:nc(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),Ly=(e,t)=>({scope:hc(e.scope),messageID:e.messageID,info:mc(t.info),parts:mc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Ry=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Ly(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},zy=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},By=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Vy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Fy(`database-unavailable`));return}let r=indexedDB.open(e,My),i=!1,a=()=>{i||(i=!0,n(new Fy(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(Ny)){let t=e.createObjectStore(Ny,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Py)||e.createObjectStore(Py,{keyPath:`id`})},r.onsuccess=()=>{let e=r.result;if(e.onversionchange=()=>e.close(),i){e.close();return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Hy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Fy(`database-unavailable`)),r.onblocked=()=>void 0}),Uy=(e=jy)=>({transaction:async t=>{let n=await Vy(e),r=n.transaction([Ny,Py],`readwrite`),i=r.objectStore(Ny),a=r.objectStore(Py),o=e=>By(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>Hy(e)});function Wy(e,t={}){let n=gc(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Iy(t)),_c(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(ec(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Ly(t,r);a.lastAccessedAt=n(),await e.putIndex(Iy(a)),i.push(a)}return vc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Ry(e,tc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=yc({info:i,incomingCompleteness:sc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=mc(a.slice()),c=sc(s),l=await uc(i,s),u=tc(t,i.id);return e.transaction(async e=>{let a=await Ry(e,u),o=yc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:_c(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:hc(t),messageID:i.id,info:mc(i),parts:s,partCompleteness:s.map(oc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:ic(i)};return await e.putIndex(Iy(d)),await e.putContent({id:u,info:mc(i),parts:s}),{status:`written`,record:_c(d)}})},async removeMessage(t,n){await e.transaction(e=>zy(e,tc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(ec(t));for(let t of n)await zy(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(nc(t));for(let t of n)await zy(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(ec)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?rc(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await zy(e,t.id),o-=t.byteSize,l+=t.byteSize,c+=1}return{evicted:c,freedBytes:l,remainingBytes:o}})},async clearAll(){await e.transaction(async e=>{await e.clearAll()})},async destroy(){await e.destroy()}}}function Gy(e={}){return Wy(e.driver??Uy(e.databaseName),e)}function Ky(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??We;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var qy=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function Jy(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Ay)(),t),i=()=>(n??=(e.createIndexedDBStore??Gy)(),n),a=()=>Ky(e)===`http`?r():i();return{readSession:e=>a().readSession(e),readMessage:(e,t)=>a().readMessage(e,t),upsertSettled:(e,t,n)=>a().upsertSettled(e,t,n),removeMessage:(e,t)=>a().removeMessage(e,t),clearSession:e=>a().clearSession(e),clearGeneration:e=>qy([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function Yy(e={}){await Jy(e).clearAll()}var Xy=(e,t)=>e<t?-1:+(e>t);function Zy(e){return e.filter(e=>!!e?.id).sort((e,t)=>Xy(e.id,t.id))}async function Qy(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Ng({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:cp(e.info),parts:Zy(e.parts??[])}));if(!e.before&&!i.complete&&ty(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await ny({records:a,complete:i.complete,requestMessage:async n=>{let i=await $v({transport:r(),generation:s(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:i.info,parts:Zy(i.parts??[])}}})).records.map(e=>({info:e.info,parts:Zy(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function $y(e){let t=e.client??L,n=bg(),i=Tg({client:t,activeRegistry:n}),a=uy({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>Qy({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Jm(),historyLimit:Ym(),durableStore:e.durableStore??Jy()}),o=Vv({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:i,probe:{getTransport:r,getGeneration:s}});return hu(a),ku(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),ku(null),a.destroy(),gu()}}}function eb(e){return _u().apply(U(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var tb=new Map;function nb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function rb(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=nb(e,t,c,l),d=()=>a()===c&&o()===l,f=tb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);tb.set(u,h);try{if(await f.catch(()=>void 0),!d())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:c,generation:l,isCurrent:d})}finally{p(),tb.get(u)===h&&tb.delete(u)}}var ib=new Set,ab=new Set,ob=new Set,sb=new Set,cb={onDeleteRequest(e){return ib.add(e),()=>{ib.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||ib.forEach(t=>t(e))},onCreateRequest(e){return ab.add(e),()=>{ab.delete(e)}},requestCreate(e){let t=e??{};ab.forEach(e=>e(t))},onDirectoryRequest(e){return ob.add(e),()=>{ob.delete(e)}},requestDirectoryDialog(){ob.forEach(e=>e())},onGitRefreshHint(e){return sb.add(e),()=>{sb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&sb.forEach(t=>t(e))}},lb=e=>e.trim(),ub=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},db=(e,t={})=>{let n=lb(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return at({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{ub(i,l,c);let t=o(),r=await a(n,e);if(ub(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},fb=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(db(e,r))},pb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},mb=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>z.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return at({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{pb(t,o,a);let r=i(),s=await n(e);return pb(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},hb=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(mb(n))},gb;function _b(e){gb=e}function vb(e){if(e){if(e.type===`idle`||e.type===`busy`)return{type:e.type};if(e.type===`retry`&&typeof e.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`)return{type:`retry`,attempt:e.attempt,message:e.message,next:e.next}}}function yb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function bb(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function xb(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function Sb(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=vb(a[e]);if(t){s[e]=n&&bb(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Cb(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=vb(t[o]);if(n&&n.type!==`idle`){yb(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function wb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Tb(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await fb(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await hb({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=Sb(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=wb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Cb(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??gb;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Eb({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Tb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Db=50,Ob=e=>{let t=Object.keys(e);if(t.length<=Db)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Db).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},kb=Oe()(je(ke((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:Ob(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:h(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Ab=new Set([`todowrite`,`todoread`]),jb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),Mb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Nb=(e,t)=>{kb.getState().setSessionTodos(e,t)},Pb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Fb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Ib=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.content!=`string`||typeof t.status!=`string`)return null;let n={content:t.content,status:t.status,priority:typeof t.priority==`string`?t.priority:`medium`};return typeof t.id==`string`&&t.id.length>0&&(n.id=t.id),n},Lb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Ib(n);e&&t.push(e)}return t},Rb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Lb(t);if(t&&typeof t==`object`)return Lb(t.todos)}catch{}return[]},zb=e=>{if(!Ab.has(Pb(e)))return[];let t=Fb(e);if(t&&jb.has(t))return[];let n=e.state,r=Lb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Lb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Lb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Rb(i):[]};function Bb(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.partsByMessageID[n];if(!(!r||r.length===0))for(let e=r.length-1;e>=0;--e){let t=zb(r[e]);if(t.length>0)return t}}return[]}function Vb(e){if(!e.sessionID||e.isStale?.()||Mb(e.store.getState().todo,e.sessionID))return!1;let t=Bb(e.transcript);return t.length===0||e.isStale?.()||Mb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Hb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Vb({sessionID:e.sessionID,store:e.store,transcript:t,persist:Nb,isStale:e.isStale}):!1}var Ub=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>HS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>VS,SESSION_DELETE_UNDO_MS:()=>fS,abortBusySessionForMessageEdit:()=>nC,abortCurrentOperation:()=>qS,archiveSession:()=>SS,beginOptimisticSend:()=>MS,cancelScheduledSessionDeletes:()=>xS,classifySendFailure:()=>Ix,combinedSendConfirmationOptions:()=>US,commitMessageEdit:()=>iC,createSession:()=>oS,deleteSession:()=>yS,dirStoreForDirectory:()=>xx,dismissOpenQuestionsForSession:()=>ZS,ensureSentUserMessagePresence:()=>KS,fetchMessagesForSession:()=>uC,fetchRecentSendConfirmationRecords:()=>zS,forkSession:()=>cC,getSendFailureKind:()=>Px,getSessionLastAssistantModel:()=>Dx,isQuestionRequestNotFoundError:()=>rS,materializeConfirmedSendRecords:()=>BS,mirrorSessionIntoLiveStores:()=>kx,optimisticInsertUserMessage:()=>LS,optimisticSend:()=>IS,patchSessionMetadata:()=>sS,refetchSessionMessages:()=>oC,rejectQuestion:()=>XS,releaseUnconfirmedQueueSend:()=>vx,requestSessionSmartTitle:()=>TS,resolveForkMessageId:()=>nx,respondToPermission:()=>JS,respondToQuestion:()=>YS,revertToMessage:()=>QS,rollbackOptimisticSend:()=>PS,scheduleSessionDeletes:()=>bS,setActionRefs:()=>gx,setOptimisticRefs:()=>_x,settleOptimisticSend:()=>FS,shareSession:()=>ES,shouldSuppressForkCopyEvent:()=>ix,stageMessageEdit:()=>eC,trackForkCopySessionCreated:()=>Qb,unarchiveSession:()=>CS,unrevertSession:()=>sC,unshareSession:()=>DS,updateSessionTitle:()=>wS,waitForConnectionOrThrow:()=>Bx,waitForSessionIdleForMessageEdit:()=>rC}),Wb=2,Gb=150,Kb=new Set([`patch`,`step-start`,`step-finish`]),qb=3,Jb=150,Yb=null,Xb=new Map,Zb=3e4;function Qb(e,t){let n=t?.id;!Yb||Yb.runtimeKey!==i()||Yb.directory!==e||!n||t?.title!==Yb.expectedTargetTitle||n===Yb.sourceSessionID||Yb.targetSessionID||(Yb.targetSessionID=n)}function $b(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function ex(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function tx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function nx(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function rx(e,t){let n=Ip(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function ix(e,t,n){if(Yb&&Yb.runtimeKey===i()&&Yb.directory===e&&t&&t===Yb.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=Xb.get(r);return a?a.expiresAt<=Date.now()?(Xb.delete(r),!1):n<=a.messageID:!1}var ax=null,ox=null,sx=()=>``,cx=new Map,lx=null,ux=null,dx=null,fx=e=>new Promise(t=>setTimeout(t,e));function px(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function mx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${px(e.error)}`);throw n!==void 0&&(r.status=n),r}function hx(e,t){let n=mx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function gx(e,t,n){if(ax=e,ox=t,sx=n,cx.size>0){let e=[...cx.values()];cx.clear(),queueMicrotask(()=>{for(let t of e)uC(t.sessionID,t.directory)})}}function _x(e,t,n){lx=e,ux=t,dx=n??null}function vx(e){let t=e.directory??null;ux?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function yx(){if(!ax)throw Error(`SDK not initialized — is SyncProvider mounted?`);return ax}function bx(){if(!ox)throw Error(`Child stores not initialized`);let e=sx();if(!e)throw Error(`No current directory`);return ox.ensureChild(e)}function xx(e,t){if(!ox)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return ox.ensureChild(e,t)}function Sx(e,t){let n=t??Kx(e);return n?{store:xx(n),directory:n}:{store:bx(),directory:Ax()}}function Cx(e,t){let{store:n,directory:r}=Sx(e,t??void 0),i=r??Ax()??``;return{repository:H()??vu(i,n),directory:i,store:n}}function wx(e,t){let{repository:n,directory:r,store:i}=Cx(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Tx(e,t){return Wu(wx(e,t).data)}function Ex(e,t){return wx(e,t).data.messageOrder.length}function Dx(e){try{let t=Tx(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function Ox(e,t){let n=ox;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=mE(e,n[r]),t.setState({session:i}),!0}return!1}function kx(e,t){t&&Ox(e,t)||Ox(e)}function Ax(){return sx()||void 0}function jx(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function Mx(e){if(!e||typeof e!=`object`)return null;let t=e.status;if(typeof t==`number`)return t;let n=e.response;return typeof n?.status==`number`?n.status:null}var Nx=class extends Error{kind;cause;messageID;constructor(e,t,n){super(t instanceof Error?t.message:String(t)),this.name=`SendDispatchError`,this.kind=e,this.cause=t,this.messageID=n}};function Px(e){return e instanceof Nx?e.kind:null}function Fx(e){let t=Mx(e);if(t===503||t===504||t===408||e instanceof TypeError||e instanceof DOMException&&(e.name===`AbortError`||e.name===`TimeoutError`))return!0;let n=e instanceof Error?e.message.toLowerCase():typeof e==`string`?e.toLowerCase():``;return n.includes(`timeout`)||n.includes(`timed out`)||n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`network error`)||n.includes(`gateway timeout`)||n.includes(`econnreset`)||n.includes(`socket hang up`)}function Ix(e,t){return t?Fx(e)||Mx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Lx=2e3,Rx=5e3,zx=3e4;async function Bx(){let e=Am();e&&km(`send_stream_stale`);let t=Date.now()+(e?Rx:Lx);for(;Date.now()<t;){if(G.getState().isConnected&&!Am()||o()&&!Am())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!Am())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw jx()}function Vx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{km(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},zx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Hx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Ux(e){e&&Y.getState().upsertSession(e)}function Wx(e,t){let n=op(t),r=[...e.getState().session],i=cs.search(r,n.id,e=>e.id);if(i.found){let t=mE(n,r[i.index]);return r[i.index]=t,e.setState({session:r}),t}return r.splice(i.index,0,n),e.setState({session:r}),n}async function Gx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Hx(e);if(i)return Wx(t,i);try{return Wx(t,await z.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function Kx(e){return qx(e)||$.getState().getDirectoryForSession(e)||Ax()}function qx(e){let t=ox;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function Jx(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):yx()}function Yx(e){Dr.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Dr.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var Xx=()=>new Map(Array.from(Nd(),([e,t])=>[e,t.title||e]));function Zx(e){return!(e.type!==`file`||Xp(e))}function Qx(e){return Zx(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function $x(e){return e.some(Qx)}async function eS(e){let t=[...e.parts];if(!$x(t))return t;let n=s(),r=e.directory??``;try{await Tu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||s()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Cx(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],$x(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function tS(e){if($x(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await dm(e.parts,{sessionTitles:Xx(),directory:e.directory}),n=Dr.getState(),r=n.getDraft(e.key);return{payload:t,commit:await gm({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function nS(e,t,n){let r=ox;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function rS(e){if(e&&typeof e==`object`&&e.status===404)return!0;let t=``;return e instanceof Error?t=e.message:typeof e==`string`&&(t=e),/Question(?:\.)?NotFoundError|Question request not found/i.test(t)}function iS(e,t){let n=ox;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function aS(e,t,n){let r=nS(e,t,n);return r?z.getScopedSdkClient(r):Jx(t)}async function oS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??Ax()),a=i.directory??null;return a&&Td(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function sS(e,t,n){let r=t??Kx(e),i=n(Ip(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Td(a.id,o),a}async function cS(e,t){let n;try{n=await z.getSession(e,t??Kx(e))}catch{return}if(!Bp(n))return;let r=zp(n);if(r)try{await sS(r,t??Kx(r),t=>Up(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function lS(e,t){if(!ox)return[];let n=[],r=new Set,i=[];if(t){let e=ox.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of ox.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function uS(e){if(ox)for(let t of e){let e=ox.children.get(t.directory);e&&e.setState({session:t.sessions})}}function dS(e){$.getState().setWorktreeMetadata(e,null)}var fS=1e4,pS=new Map,mS=0;function hS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function gS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),uS(e.listSnapshots),Ux(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function _S(e,t){let n=t??Kx(e);Y.getState().markSessionsPendingDeletion([e]);let r=lS(e,n),i=Hx(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function vS(e,t){try{if(await cS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return lS(e,t),Y.getState().removeSessions([e]),dS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(lS(e,t),Y.getState().removeSessions([e]),dS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function yS(e,t){let n=_S(e);return await vS(e,n.directory)?!0:(gS(n),!1)}function bS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>_S(e)),i=`session-delete-${Date.now()}-${mS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=pS.get(i);if(!e)return;pS.delete(i);let t=[],n=[];for(let r of e.entries)await vS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),gS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return pS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function xS(e){if(!e)return!1;let t=pS.get(e);if(!t)return!1;clearTimeout(t.timer),pS.delete(e);for(let e of[...t.entries].reverse())gS(e);return!0}async function SS(e){let t=Kx(e),n=lS(e,t),r=Hx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await cS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),uS(n),Ux(r),!1}}async function CS(e){let t=Kx(e),n=Hx(e),r=n?hS(n):null;if(r&&(Y.getState().upsertSession(r),t&&ox)){let e=ox.children.get(t);e&&Wx(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=hS(n);if(Y.getState().upsertSession(r),t&&ox){let e=ox.children.get(t);e?Wx(e,r):kx(r,t)}else kx(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&lS(e,t)),!1}}async function wS(e,t){let n=Kx(e),r=Hx(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Yf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),kx(c,n)}async function TS(e){let t=Kx(e),n=Hx(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),kx(s,t)}async function ES(e){let t=Kx(e),n=op(hx(await yx().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Ox(n,t),n}async function DS(e){let t=Kx(e),n=op(hx(await yx().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Ox(n,t),n}function OS(e){let t=ox,n=e??sx();if(!t||!n)return{store:e?xx(e):bx(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function kS(){return{identity:r(),generation:s()}}function AS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function jS(e,t){if(!AS(e,t))throw Error(`Send target changed before transport dispatch`)}function MS(e){if(!lx||!ux)throw new Nx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Ax()??null,n=OS(t),r=kS();jS(n,r),e.beforeOptimisticInsert?.(),jS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),LS({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.(),{messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r}}catch(e){throw e instanceof Nx?e:new Nx(Px(e)??Ix(e,!1),e)}}function NS(e){if(!AS(e.capture,e.transport)||!ux)return;ux({sessionID:e.sessionId,directory:e.directory,messageID:e.messageID});let t=e.capture.store.getState(),n=Date.now();e.capture.store.setState({session_status:{...t.session_status,[e.sessionId]:{type:`idle`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:n}})}function PS(e){NS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function FS(e){if(!lx||!ux)throw new Nx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));let{ticket:t}=e,{capture:n,transport:r,messageID:i,sessionId:a,directory:o}=t,s=!1;try{if(await Bx(),jS(n,r),s=!0,await Vx(e.send(i)),!AS(n,r))throw new Nx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Px(c)??Ix(c,s),u=c instanceof Nx?c:new Nx(l,c,i);if(!AS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await zS(a,i,o):null;if(d&&AS(n,r)){BS(n.store,a,i,d,{directory:o??void 0}),dx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||NS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function IS(e){await FS({ticket:e.ticket??MS({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:e.directory,files:e.files,parts:e.parts,messageID:e.messageID,onOptimisticInsert:e.onOptimisticInsert,onMessageID:e.onMessageID,beforeOptimisticInsert:e.beforeOptimisticInsert}),preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:e.onSendConfirmed,send:e.send})}function LS(e){if(!lx)return!1;let t=e.directory??Ax(),n=t?xx(t):bx(),i=t??Ax()??``;if(WS(n,e.sessionId,e.messageID,i)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),c={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},l=Tv(()=>wx(e.sessionId,t).data);lx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=Tv(()=>wx(e.sessionId,t).data);try{l&&u&&Ev({trigger:`user-send`,sessionID:e.sessionId,directory:i,transport:r(),generation:s(),before:l,after:u})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:o}}),!0}function RS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function zS(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??Wb,c=r?.retryDelayMs??Gb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!RS(r?.isCurrent)||a>0&&(await fx(c),i?.signal.aborted||!RS(r?.isCurrent)))return null;try{let a=await yx().session.messages({sessionID:e,directory:n??void 0,limit:Qm(),...i?{signal:i.signal}:{}});if(!RS(r?.isCurrent))return null;let o=(mx(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function BS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??Kx(t)??sx(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:cp(e.info),parts:e.parts??[]})),skipPartTypes:Kb,merge:i?.gapFillOnly===!0?Js:Xs({purpose:`recovery`})};bu(o,s)||vu(a,e).apply(o,s)}var VS=2e3,HS={attempts:12,retryDelayMs:500},US={presenceGraceMs:VS,recovery:{...HS}};function WS(e,t,n,r){let i=r??Kx(t)??sx()??``,a=H()??vu(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function GS(e,t,n,r){let i=r?.directory??Kx(t)??sx()??``;if(WS(e,t,n,i))return Promise.resolve(!0);if(!RS(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??vu(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!RS(r?.isCurrent)){l(!1);return}WS(e,t,n,i)&&l(!0)}),WS(e,t,n,i)&&l(!0)})}async function KS(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await GS(t,n,r,{timeoutMs:e.graceMs??US.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!RS(a))return`cancelled`;let o=await zS(n,r,i,{...US.recovery,isCurrent:a});return o?RS(a)?(BS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:RS(a)?`missing`:`cancelled`}async function qS(e){let{store:t,directory:n}=Sx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(hx(await yx().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),$e(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>HB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function JS(e,t,n){await Bx();let r=nS(`permission`,e,t)||Kx(e)||Ax();if(hx(await aS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function YS(e,t,n){await Bx();let r=nS(`question`,e,t)||Kx(e)||Ax();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(hx(await aS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw rS(n)&&iS(e,t),n}}async function XS(e,t){await Bx();let n=nS(`question`,e,t)||Kx(e)||Ax();try{if(hx(await aS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw rS(n)&&iS(e,t),n}}async function ZS(e){if(!e)return!1;let t=ox;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Gp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)iS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await XS(e,t)}catch(e){if(rS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function QS(e,t,n){let i=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return rb(e,i??(()=>{try{return Sx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=Sx(e,i);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await yx().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Tx(e,c).find(e=>e.id===t),d=Tx(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=Cx(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:r()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await eS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await dm(m,{sessionTitles:Xx(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Dr.getState(),r=await gm({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await vm({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await vm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&cb.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await vm({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await vm({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function $S(e,t,n,i){let a=i??Kx(t)??sx(),o=U(a,t),c=Tv(()=>wx(t,a).data),l=[...yu(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)bu(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||vu(a,e).apply(o,{type:`remove-message`,messageID:n});let d=Tv(()=>wx(t,a).data);try{c&&d&&Ev({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function eC(e,t,n,i){let a=n?.info,o=n?.parts,s=i?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=Sx(e,s).directory}else{c=Sx(e,s).directory;let{data:n}=wx(e,c),r=Wu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=i?.draftKey??C({transportIdentity:r()},e),{commit:u}=await tS({key:l,parts:await eS({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await vm({key:l,restoredRevision:d,previous:f})).status})}}function tC(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function nC(e,t){let n=t?.directory,{store:r,directory:i}=Sx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await yx().session.abort({sessionID:e,directory:i})}catch{}}async function rC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=Sx(e,n),o=Date.now()+r;for(;Date.now()<o;){let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let s=a.getState().session_status[e];if(!(!s||s.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function iC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=Sx(e,i),l=Tv(()=>wx(e,i).data);try{await nC(e,{directory:i}),await rC(e,{directory:i});let n=new Set((await aC(e,i)).map(e=>e.id)),r=tC(t,Tx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await z.deleteSessionMessage(e,t.id,c),$S(o,e,t.id,c)}finally{try{let t=Tv(()=>wx(e,i).data);l&&t&&Ev({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function aC(e,t){let{directory:n}=Sx(e,t);return(mx(await yx().session.messages({sessionID:e,directory:n,limit:Zm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>cp(e.info))}async function oC(e,t){let{store:n,directory:i}=Sx(e,t),a=Tv(()=>wx(e,t).data),o=(mx(await yx().session.messages({sessionID:e,directory:i,limit:Zm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Tv(()=>wx(e,t).data);a&&n&&Ev({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:cp(e.info),parts:e.parts??[]})),l=U(i??sx(),e);bu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Kb})||vu(i??sx(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:Kb});try{let n=Tv(()=>wx(e,t).data);a&&n&&Ev({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return c.map(e=>e.info)}async function sC(e,t){return rb(e,t??(()=>{try{return Sx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=Sx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Ex(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await yx().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await yx().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=hx(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<qb;r+=1){if(r>0&&(await fx(Jb),!n())||(await oC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Ex(e,i)>o)return}if(Ex(e,i)<=o){let n=i??sx(),a=H()??vu(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await oC(e,t)}})}async function cC(e,t,n,r){let a=i(),{store:o,directory:s}=Sx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Gx(e,o,s);Td(e,s);let l=o.getState(),u=l.session_status[e],d=Tx(e,s);u?.type,d.length;let f=nx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await oC(e),l=o.getState(),u=l.session_status[e],d=Tx(e,s),f=nx(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Ex(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=wx(e,s),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(s,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Xp(e)).map(e=>e.text||e.content||``).join(`
|
|
462
|
-
`).trim();let v=g.filter(e=>e.type===`file`&&!
|
|
463
|
-
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===
|
|
464
|
-
`);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===
|
|
465
|
-
`).trim()},LC=(e,t)=>!t||DC(e)===t,RC=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),zC=(e,t)=>{let n=RC(e,t);return CC.has(n)?null:(CC.add(n),n)},BC=e=>{CC.delete(e)},VC=()=>[{synthetic:!0,text:`This review is part of an automatic review loop. If there are no remaining issues, end your response with this exact final line:\n${bC}\nIf you found issues that require changes, do not include that final status line.`}],HC=async e=>{for(;;){let t=Wp.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!jC(t.runtimeKey)){MC(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!AC(n,t.directory)){await new Promise(e=>setTimeout(e,vC));continue}let r=kC(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,vC));continue}if(t.phase===`waiting_for_reviewer`){let e=zC(t,r.id);if(!e){await new Promise(e=>setTimeout(e,vC));continue}if(!jC(t.runtimeKey)){BC(e),MC(t);return}try{let e=Date.now(),n=FC(r.text),i=n?IC(r.text):r.text,a=await ew(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Wp.getState().completeRun(t.originalSessionID);return}Wp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{BC(e)}}else{if(t.iteration>=t.maxIterations){Wp.getState().stopRun(t.originalSessionID);return}let e=zC(t,r.id);if(!e){await new Promise(e=>setTimeout(e,vC));continue}if(!jC(t.runtimeKey)){BC(e),MC(t);return}try{let e=Date.now(),n=await tw(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Wp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{BC(e)}}}},UC=e=>{Wp.getState().upsertRun(e),WC(e.originalSessionID)},WC=e=>{let t=Wp.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!jC(t.runtimeKey)||SC.has(e)||(SC.add(e),HC(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Wp.getState().updateRun(t.originalSessionID,t=>({...t,status:PC(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{SC.delete(e)}))},GC=async(e,t,n)=>{let r=Date.now()+gC;for(;Date.now()<r;){let r=Fd(e,t).filter(e=>EC(e)===`assistant`).filter(e=>TC(e)>=n-1e3).filter(wC).sort((e,t)=>TC(t)-TC(e));for(let e of r){let n=Pp(Id(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,_C))}throw Error(`Timed out waiting for handoff response`)},KC=e=>{let t=qo.getState(),n=G.getState(),r=$.getState().getLastUserChoice(e),i=r?.agent||t.getSessionAgentSelection(e)||n.currentAgentName||void 0,a=t.getSessionModelSelection(e),o=i?t.getAgentModelForSession(e,i):null,s=r?.providerID&&r.modelID?{providerId:r.providerID,modelId:r.modelID}:null,c=s||o||a||(n.currentProviderId&&n.currentModelId?{providerId:n.currentProviderId,modelId:n.currentModelId}:null);if(!c?.providerId||!c?.modelId)return null;if(s)return{providerID:s.providerId,modelID:s.modelId,agent:i,variant:r?.variant};let l=i?t.getAgentModelVariantForSession(e,i,c.providerId,c.modelId):void 0,u=n.currentProviderId===c.providerId&&n.currentModelId===c.modelId?n.currentVariant:void 0;return{providerID:c.providerId,modelID:c.modelId,agent:i,variant:l||u||void 0}},qC=async(e,t,n,r,i,a)=>{NC(a);let o=r??KC(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=qo.getState();s.saveSessionModelSelection(e,o.providerID,o.modelID),o.agent&&(s.saveSessionAgentSelection(e,o.agent),s.saveAgentModelForSession(e,o.agent,o.providerID,o.modelID),s.saveAgentModelVariantForSession(e,o.agent,o.providerID,o.modelID,o.variant)),pC(e);let c=null;if(await IS({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>NC(a),onOptimisticInsert:()=>JC(e),send:r=>(NC(a),z.sendMessage({id:e,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,variant:o.variant,text:n,additionalParts:i,messageId:r}).then(()=>void 0))}),!c)throw Error(`Failed to prepare review flow message`);return c},JC=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},YC=(e,t)=>{p.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},XC=async(e,t)=>{try{return await z.getSession(e,t)}catch{return null}},ZC=e=>`Review: ${e.title?.trim()||e.id}`,QC=async(e,t,n)=>{NC(n);let r=await z.getSession(e,t);NC(n);let i=Rp(r);if(i){let r=await XC(i,t);if(NC(n),r&&Bp(r))return r;await sS(e,t,e=>{let t={...e},n=t.openchamber;if(n&&typeof n==`object`&&!Array.isArray(n)){let e={...n};delete e.reviewSessionID,t.openchamber=e}return t})}NC(n);let a=await z.createSession({title:ZC(r),metadata:Hp({},e)},t);NC(n),Td(a.id,t);try{NC(n),await sS(e,t,e=>Vp(e,a.id))}catch(e){throw NC(n),await z.deleteSession(a.id,t).catch(e=>{console.warn(`[review-flow] failed to delete unlinked review session after link failure`,e)}),e}return Y.getState().upsertSession(a),a},$C=async e=>{await Bx();let t=e.autoReview?i():void 0,n;if(e.generateHandoff??!0){let n=await Ap(`session.reviewHandoff.visible`),r=await Ap(`session.reviewHandoff.instructions`),a=Date.now();await qC(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let o=async()=>{let n=await GC(e.originalSessionID,e.directory,a);NC(t);let r=await Ap(`session.reviewSession.visible`,{handoff:n}),o=await QC(e.originalSessionID,e.directory,t),s=t??i(),c=Date.now(),l=await qC(o.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?VC():void 0,e.autoReview?s:void 0);e.autoReview&&UC({originalSessionID:e.originalSessionID,reviewSessionID:o.id,directory:e.directory,runtimeKey:s,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:yC,expectedAssistantParentID:l,waitAfterCreatedAt:c}),e.autoReview||YC(e.directory,o)};if(e.returnAfterHandoffRequest){o().catch(e=>{console.error(`[review-flow] failed to finish background review flow`,e)});return}await o();return}n=await Ap(`session.reviewSessionWithoutHandoff.visible`);let r=await QC(e.originalSessionID,e.directory,t),a=t??i(),o=Date.now(),s=await qC(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?VC():void 0,e.autoReview?a:void 0);e.autoReview&&UC({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:a,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:yC,expectedAssistantParentID:s,waitAfterCreatedAt:o}),e.autoReview||YC(e.directory,r)},ew=async(e,t,n,r)=>{NC(r);let i=zp(await z.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await Ap(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return NC(r),qC(i,t,a,void 0,void 0,r)},tw=async(e,t,n,r=!1,i)=>{NC(i);let a=Rp(await z.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await z.getSession(a,t)}catch(n){throw NC(i),await sS(e,t,e=>Up(e,a)),n}let s=await Ap(`session.implementationResponseToReviewer.visible`,{implementation_response:n});NC(i);let c=await qC(a,t,s,void 0,r?VC():void 0,i);return r||YC(t,o),c},nw=e=>Bp(e)?`review-to-original`:Rp(e)?`original-to-review`:null,rw=[0,250,500,1e3,2e3,2e3,2e3,2e3],iw=5e3,aw=(e=>{let t=new Map,n=new Set,r=new Map,i=new Map,a=0,o=e=>`${a}:${i.get(e)??0}`;return{waitUntilReady:i=>{if(n.has(i))return Promise.resolve();let a=t.get(i);if(a)return a;let s=e.now??Date.now,c=e.failureCooldownMs??iw,l=r.get(i);if(l!==void 0&&s()-l<c)return Promise.reject(Error(`OpenCode readiness is cooling down for runtime ${i}`));let u=e.retryDelaysMs??rw,d=o(i),f=(async()=>{for(let t of u){if(o(i)!==d||(t>0&&await e.wait(t),o(i)!==d))return;if(await e.probe(i)){o(i)===d&&(n.add(i),r.delete(i));return}}throw r.set(i,s()),Error(`OpenCode did not become ready for runtime ${i}`)})();return t.set(i,f),f.finally(()=>{t.get(i)===f&&t.delete(i)}).catch(()=>{}),f},reset:e=>{if(e){i.set(e,(i.get(e)??0)+1),t.delete(e),n.delete(e),r.delete(e);return}a+=1,t.clear(),n.clear(),r.clear()}}})({probe:()=>z.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),ow=()=>aw.waitUntilReady(i()),sw=e=>{aw.reset(e)},cw=100,lw=1500,uw=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},dw=e=>e.available!==!0||!Array.isArray(e.directories)?null:{revision:typeof e.revision==`number`?e.revision:0,sync:e.sync??{active:!1,completed:0,total:0,pendingDirectories:[],completedDirectories:[],failedDirectories:[],enriching:!1},directories:e.directories},fw,pw=async(e,t)=>{if(typeof window>`u`)return null;let n=e.trim();if(!n)return null;try{let e=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}`,{signal:t?.signal});if(e.status===404||e.status===501)return null;await uw(e);let r=await e.json();if(r.available!==!0||!r.session)return null;let i=typeof r.session.directory==`string`?r.session.directory.trim():``,a=typeof r.session.id==`string`?r.session.id:n;return i?{id:a,directory:i,title:typeof r.session.title==`string`?r.session.title:void 0,parentID:r.session.parentID??null}:null}catch{return null}},mw=async e=>{if(typeof window>`u`)return null;if(fw)return fw;let t=(async()=>{let t=await F(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await uw(t),dw(await t.json()))})().finally(()=>{fw===t&&(fw=void 0)});return fw=t,t},hw=async e=>{if(typeof window>`u`)return null;let t=await F(`/api/openchamber/session-index/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});return t.status===501?null:(await uw(t),t.json())},gw=(e,t,n)=>new Promise(r=>{if(t.aborted){r(`aborted`);return}let i=n?.safetyTimeoutMs===null?null:typeof n?.safetyTimeoutMs==`number`&&n.safetyTimeoutMs>0?n.safetyTimeoutMs:lw,a,o,s=e=>{a!==void 0&&clearTimeout(a),u!==void 0&&clearTimeout(u),d(),t.removeEventListener(`abort`,l),r(e)},c=e=>{o=e,a!==void 0&&clearTimeout(a),a=setTimeout(()=>{a=void 0,s(o??e)},cw)},l=()=>s(`aborted`),u=i===null?void 0:setTimeout(()=>s(`timeout`),i),d=Gt(t=>{if(t.type===`event-stream-ready`){c(`ready`);return}if(t.type===`session-index-changed`&&t.revision>e){c(`tip`);return}});t.addEventListener(`abort`,l,{once:!0})}),_w=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index pin requires a session id`);let r=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`POST`,signal:t?.signal});if(r.status===501)throw Error(`session index pin is unsupported`);await uw(r)},vw=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index unpin requires a session id`);let r=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`DELETE`,signal:t?.signal});if(r.status===501)throw Error(`session index unpin is unsupported`);await uw(r)},yw=async e=>{if(typeof window>`u`)return;let t=await F(`/api/openchamber/session-index/directory`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});t.status!==501&&await uw(t)},bw=async e=>{if(typeof window>`u`||e.length===0)return;let t=await F(`/api/openchamber/session-index/snapshot`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});t.status!==501&&await uw(t)},xw=1,Sw=`oc.sessionIndexStartupCache`,Cw=1e6,ww=e=>!!e&&typeof e==`object`&&!Array.isArray(e),Tw=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),Ew=e=>!(!ww(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!Tw(e.pendingDirectories)||!Tw(e.completedDirectories)||!Tw(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),Dw=e=>ww(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&ww(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),Ow=e=>!ww(e)||typeof e.directory!=`string`||!e.directory.trim()||e.cursor!==null&&(typeof e.cursor!=`number`||!Number.isFinite(e.cursor))||typeof e.hasMore!=`boolean`||typeof e.lastSyncedAt!=`number`||!Number.isFinite(e.lastSyncedAt)||typeof e.lastFullSyncedAt!=`number`||!Number.isFinite(e.lastFullSyncedAt)||typeof e.lastAccessedAt!=`number`||!Number.isFinite(e.lastAccessedAt)?!1:Array.isArray(e.sessions)&&e.sessions.every(Dw),kw=e=>!ww(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!Ew(e.sync)||!Array.isArray(e.directories)?!1:e.directories.every(Ow),Aw=e=>ww(e)&&e.version===xw&&ww(e.entries),jw=e=>{if(!e)return null;try{let t=JSON.parse(e);return Aw(t)?{version:xw,entries:t.entries}:null}catch{return null}},Mw=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>Cw)return;e.setItem(Sw,n)}catch{}},Nw=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(Sw)}catch{return null}let r=jw(n);if(!r)return null;let i=r.entries[e];return kw(i)?i:null},Pw=(e,t,n)=>{if(!e||!kw(t))return;let r=null;try{r=n.getItem(Sw)}catch{return}let i={...jw(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);Mw(n,{version:xw,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},Fw=(e,t)=>{let n=e?.identity===t.identity?e:null,r=t.content.trim().length>0,i=n?.appeared??!1,a=(n?.wasActive??!1)||t.isActive,o=t.content!==(n?.content??``);return{shouldEmit:t.mode===`appearance`?a&&r&&!i:a&&r&&o,nextState:{identity:t.identity,content:t.content,appeared:i||r,wasActive:a}}},Iw=(e,t)=>!e||t,Lw=(e=1e3)=>{let t=new Set,n=Math.max(1,Math.floor(e));return e=>{if(e.kind===`text`)return!0;let r=`${e.sessionID}\u0000${e.messageID}\u0000${e.partID}\u0000${e.kind}`;if(t.has(r))return!1;for(t.add(r);t.size>n;){let e=t.values().next().value;if(typeof e!=`string`)break;t.delete(e)}return!0}},Rw=new Set,zw=()=>Rw.size>0,Bw=e=>{for(let t of Rw)t(e)},Vw=e=>(Rw.add(e),()=>Rw.delete(e)),Hw=typeof window<`u`?W.useLayoutEffect:W.useEffect,Uw=Ze(`OpenChamberHaptics`),Ww=null,Gw=()=>(Ww??=Qe.isPluginAvailable(`OpenChamberHaptics`),Ww);function Kw(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function qw(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function Jw(){if(!qw())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function Yw(e){let{eventSessionId:t,currentSessionId:n,isForeground:r,isVisible:i}=e;return!n||t!==n?{shouldTrigger:!1,reason:`different-session`}:r?i?{shouldTrigger:!0,reason:`trigger`}:{shouldTrigger:!1,reason:`hidden`}:{shouldTrigger:!1,reason:`background`}}var Xw=20,Zw=750;function Qw(e,t){return t-e>=Xw}function $w(e,t){return t-e>=Zw}function eT(e){return!e.thresholdReached&&e.available&&e.distance>=e.enterDistance?{thresholdReached:!0,event:`enter`}:e.thresholdReached&&(!e.available||e.distance<=e.cancelDistance)?{thresholdReached:!1,event:`cancel`}:{thresholdReached:e.thresholdReached,event:null}}var tT=-1/0;function nT(e=`light`,t){if(!Jw()||!Gw()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!Qw(tT,n)?!1:(tT=n,Uw[Kw(e)]().catch(()=>void 0),!0)}var rT=`button, [role="button"], [role="menuitem"]`;function iT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],W.useEffect(aT,t)}function aT(){if(!Jw())return;let e=oT;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function oT(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(rT);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||nT(`light`))}function sT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],Hw(cT,t)}function cT(){if(!Jw())return;let e=Lw(),t=Ke()===`android`,n=-1/0;return Vw(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(Yw({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!$w(n,e))return;nT()&&(n=e);return}nT()}})}var lT=async e=>{let t=await ut(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},uT=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(uT).join(` `).trim():(0,W.isValidElement)(e)?uT(e.props?.children):``,dT=e=>typeof e==`function`?e():e,fT=(e,t)=>{let n=uT(dT(t?.description));return n.length>0?n:uT(e)},pT=Object.assign((...e)=>(nT(),ct(...e)),{...ct,success:(...e)=>{let[t,n]=e;return nT(),ct.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return nT(),ct.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return nT(),ct.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>lT(fT(t,n))}})},warning:(...e)=>{let[t,n]=e;return nT(),ct.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>lT(fT(t,n))}})},loading:(...e)=>(nT(),ct.loading(...e)),custom:(...e)=>(nT(),ct.custom(...e)),promise:(...e)=>(nT(),ct.promise(...e))}),mT=new Set,hT,gT=mT,_T=null,vT=(e,t)=>ft(dt.getState().dictionary,e,t),yT=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},bT=e=>{if(!e)return mT;let t=new Set;for(let n of e.directories)for(let e of n.sessions)yT(e)&&t.add(e.id);return t.size===0?mT:t},xT=(e,t)=>{if(e===t)return!0;if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0},ST=(e=L,t=r())=>{let n=NT(e,t);if(n===hT&&t===_T)return gT;let i=bT(n);return hT=n,_T=t,gT=xT(gT,i)?gT:i,gT},CT=(e,t,n)=>{let r=!1,i=e.directories.map(e=>{let i=!1,a=e.sessions.map(e=>{if(e.id!==t)return e;let a=e.time?.pinned??null;return(a==null||a===``?null:a)===n?e:(i=!0,r=!0,{...e,time:{...e.time,pinned:n}})});return i?{...e,sessions:a}:e});return r?{...e,directories:i}:e},wT=(e,t,n,r)=>{let i=NT(e,t);if(!i)return null;let a=CT(i,n,r?new Date().toISOString():null);return a!==i&&FT(a,{client:e,transport:t,persist:!1}),i},TT=e=>L.getQueryCache().subscribe(t=>{if(t.type!==`updated`&&t.type!==`removed`)return;let n=t.query.queryKey;!Array.isArray(n)||n[1]!==`sessionIndex`||n[2]!==`snapshot`||e()}),ET=()=>ST(),DT=()=>(0,W.useSyncExternalStore)(TT,ET,kT),OT=()=>{let e=(0,V.c)(6),t=rt(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`sessionIndex`,`pin`],e[0]=n):n=e[0];let i;e[1]===t?i=e[2]:(i={mutationKey:n,mutationFn:AT,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:wT(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&FT(r.previous,{client:t,transport:r.transport,persist:!1}),pT.error(e instanceof Error?e.message:vT(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=i);let a=it(i),o;return e[3]!==t||e[4]!==a?(o=e=>{let n=e.trim();if(!n)return;let i=r(),o=NT(t,i);if(!o)return;let s=bT(o).has(n);a.mutate({sessionId:n,nextPinned:!s,transport:i})},e[3]=t,e[4]=a,e[5]=o):o=e[5],lt(o)};function kT(){return mT}async function AT(e){let{sessionId:t,nextPinned:n}=e;n?await _w(t):await vw(t)}var jT=(e=r())=>N.sessionIndex.snapshot(e),MT=(e=r(),t=i(),n=u(),a=mw)=>{let o=t,s=n,c=a;return{queryKey:jT(e),queryFn:async({signal:e})=>{let t=await c({signal:e});return t&&Pw(o,t,s),t},staleTime:0,gcTime:1/0,initialData:()=>Nw(o,s)??void 0,initialDataUpdatedAt:0}},NT=(e=L,t=r())=>e.getQueryData(jT(t))??null,PT=(e=L,t=r(),n=i(),a=u())=>{let o=MT(t,n,a);return e.getQueryCache().build(e,o),e.getQueryData(o.queryKey)??null},FT=(e,t)=>{if(!kw(e))return;let n=t?.client??L,a=t?.transport??r(),o=t?.runtimeKey??i(),s=t?.storage??u();n.setQueryData(jT(a),e),t?.persist!==!1&&Pw(o,e,s)},IT=(e=L,t=r(),n=i(),a=u(),o=mw)=>{let s={...MT(t,n,a,o),staleTime:0};return e.getQueryCache().build(e,s),e.fetchQuery(s)},LT=500,RT=20,zT=6e3,BT=7,VT=3,HT=1,UT=2,WT=750,GT=500,KT=1e4,qT=2,JT=(e,t)=>new Promise(n=>{if(t.aborted){n();return}let r=setTimeout(()=>{t.removeEventListener(`abort`,i),n()},e),i=()=>{clearTimeout(r),n()};t.addEventListener(`abort`,i,{once:!0})}),YT=null,q=0,XT=new Map,ZT=new Map,QT=new Map,$T=[],eE=new Set,tE=0,nE=VT,rE=0,iE=null,aE,oE=new Map,sE=()=>({loadGeneration:q,runtimeGeneration:s(),transportIdentity:r()}),J=e=>e.loadGeneration===q&&e.runtimeGeneration===s()&&e.transportIdentity===r(),cE=e=>{let t=e?.status;if(t===429||t===502||t===503)return!0;let n=String(e instanceof Error?e.message:e).toLowerCase();return n.includes(`signal timed out`)||n.includes(`timeout`)},lE=e=>{rE=0,cE(e)&&(nE=nE>VT?VT:HT)},uE=()=>{rE+=1,!(rE<UT||nE>=BT)&&(nE+=1,rE=0)},dE=()=>{for(;tE<nE&&$T.length>0;){let e=$T.shift();if(!e)return;tE+=1,e()}},fE=e=>new Promise((t,n)=>{$T.push(()=>{e().then(t,n).finally(()=>{--tE,dE()})}),dE()}),pE=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},mE=(e,t)=>{if(!t)return e;let n=e,r=t,i=_(n.directory??null),a=_(n.project?.worktree??null),o=_(r.directory??null),s=_(r.project?.worktree??null),c=!1,l={...n};!i&&o&&(l.directory=r.directory,c=!0),!a&&s?(l.project={...r.project??{},...n.project??{},worktree:r.project?.worktree},c=!0):!n.project&&r.project&&(l.project=r.project,c=!0);let u=n.hasChildren,d=r.hasChildren;typeof u!=`boolean`&&typeof d==`boolean`&&(l.hasChildren=d,c=!0);let f=Yf(t);if(f>Yf(e)){let e=n.metadata&&typeof n.metadata==`object`?n.metadata:{},t=e.openchamber&&typeof e.openchamber==`object`?e.openchamber:{},r=t.titleRefresh&&typeof t.titleRefresh==`object`?t.titleRefresh:{};l.metadata={...e,openchamber:{...t,titleRefresh:{...r,activityUpdatedAt:f}}},c=!0}return c?l:e},hE=(e,t)=>{let n=mE(e,t);return n.share===t.share?n:{...n,share:t.share}},gE=e=>{let t=new Map;for(let n of e){let e=pE(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},_E=e=>[e.id,e.title??``,e.time?.created??0,e.time?.updated??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(e.metadata??null),String(e.hasChildren??!1),pE(e)??``].join(`:`),vE=e=>{let t=e;return[e.id,e.title??``,t.parentID??``,e.time?.created??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(t.metadata??null),String(t.hasChildren??!1),pE(e)??``].join(`:`)},yE=(e,t)=>e.time?.updated!==t.time?.updated&&vE(e)===vE(t),bE=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(_E(e[n])!==_E(t[n]))return!1;return!0},xE=(e,t)=>{if(t.size===0)return e;let n=e.findIndex(e=>t.has(e.id));return n===-1?e:e.filter((e,r)=>r!==n&&!t.has(e.id))},SE=e=>[...e].sort((e,t)=>{let n=Yf(t)-Yf(e);return n===0?t.id.localeCompare(e.id):n}),CE=e=>{let t=new Set;for(let n of e){let e=_(n);e&&t.add(e)}return t},wE=e=>{let t=CE(e);for(let e of t)oE.set(e,(oE.get(e)??0)+1);return t},TE=e=>{let t=new Set;for(let n of e){let e=oE.get(n)??0;if(e<=1){oE.delete(n),t.add(n);continue}oE.set(n,e-1)}return t},EE=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)XT.has(i)||(n.has(i)&&(n===e.loadingDirectories&&(n=new Set(e.loadingDirectories)),n.delete(i)),r.has(i)&&(r===e.refreshingDirectories&&(r=new Set(e.refreshingDirectories)),r.delete(i)));return n===e.loadingDirectories&&r===e.refreshingDirectories?e:{loadingDirectories:n,refreshingDirectories:r}},DE=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},OE=(e,t)=>{let n=DE(e);return{cursor:n,hasMore:e.length===RT&&n!==null&&(t==null||n<t),loadingMore:!1}},kE=(e,t,n)=>{if(n.size===0)return e;let r=new Map(e.map(e=>[e.id,e])),i=new Map;for(let e of t)e?.id&&i.set(e.id,mE(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=pE(e);return!t||!n.has(t)});return SE([...i.values(),...a])},AE=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,jE=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=SE(e),r=n[n.length-1];return r?Yf(r):null},ME=(e,t)=>Yf(e)<=t,NE=(e,t,n,r,i)=>{if(n.size===0)return e;let a=new Map(e.map(e=>[e.id,e])),o=new Map;for(let e of t.values())for(let t of e)t?.id&&o.set(t.id,mE(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=pE(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&ME(e,a)});return SE([...o.values(),...s])},PE=(e,t,n)=>{let r=new Set(t.directories.map(e=>e.directory)),i=new Map;for(let n of t.directories)i.set(n.directory,xE(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=pE(t);!e||!r.has(e)||o.set(e,(o.get(e)??0)+1)}let s=new Map,c=new Set;if(n)for(let n of t.directories){let t={cursor:n.cursor,hasMore:n.hasMore},r=e.activePaginationByDirectory.get(n.directory),a=(o.get(n.directory)??0)>RT;n.hasMore&&a&&r&&AE(r,t)&&c.add(n.directory),s.set(n.directory,jE(i.get(n.directory)??[],n.cursor))}let l=n?NE(e.activeSessions,i,r,s,c):SE(LE(e.activeSessions,a)),u=new Map(e.activePaginationByDirectory),d=new Map(e.sessionIndexSyncByDirectory);for(let r of t.directories){let t={cursor:r.cursor,hasMore:r.hasMore,loadingMore:!1},i=e.activePaginationByDirectory.get(r.directory);u.set(r.directory,n&&c.has(r.directory)&&i?{cursor:i.cursor,hasMore:i.hasMore,loadingMore:!1}:t),d.set(r.directory,{lastSyncedAt:r.lastSyncedAt,lastFullSyncedAt:r.lastFullSyncedAt})}let f=new Set(e.loadedDirectories);for(let e of r)f.add(e);let p=new Set(e.loadingDirectories),m=new Set(e.refreshingDirectories),h=new Set(t.sync.pendingDirectories);for(let e of h)l.some(t=>pE(t)===e)?(m.add(e),p.delete(e)):p.add(e);for(let e of[...t.sync.completedDirectories,...t.sync.failedDirectories])p.delete(e),m.delete(e);if(n)for(let e of oE.keys())h.has(e)||XT.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:gE(l),reviewTransferBySessionId:zE(l),cachedDirectories:r,sessionIndexSyncByDirectory:d,activePaginationByDirectory:u,loadedDirectories:f,loadingDirectories:p,refreshingDirectories:m,hasLoaded:!0,status:e.status===`idle`||e.status===`loading`?`ready`:e.status}},FE=(e,t)=>{let n=xE(t.activeSessions,e.pendingDeletionIds),r=xE(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?SE(LE(e.activeSessions,n)):kE(e.activeSessions,n,t.directories);i=LE(i,r),bE(e.activeSessions,i)&&(i=e.activeSessions);let a=t.archivedSessions===void 0?void 0:xE(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:kE(e.archivedSessions,a,t.directories);bE(e.archivedSessions,o)&&(o=e.archivedSessions);let s=i===e.activeSessions?e.sessionsByDirectory:gE(i),c=e.loadedDirectories,l=!1;for(let n of t.directories)c.has(n)||(l||=(c=new Set(e.loadedDirectories),!0),c.add(n));let u=e.loadingDirectories,d=!1;for(let n of t.directories)u.has(n)&&(d||=(u=new Set(e.loadingDirectories),!0),u.delete(n));let f=t.markReady?`ready`:e.status,p=t.markReady?!0:e.hasLoaded;return i===e.activeSessions&&o===e.archivedSessions&&s===e.sessionsByDirectory&&c===e.loadedDirectories&&u===e.loadingDirectories&&e.status===f&&e.hasLoaded===p?e:{activeSessions:i,archivedSessions:o,sessionsByDirectory:s,reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:zE(i),loadedDirectories:c,loadingDirectories:u,hasLoaded:p,status:f}},IE=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=mE(t,r);if(yE(r,i)||_E(r)===_E(i))return e;let a=[...e];return a[n]=i,a},LE=(e,t)=>{if(!t||t.length===0)return e;if(e.length===0)return t;let n=new Map(e.map(e=>[e.id,e]));t.forEach(e=>{n.set(e.id,mE(e,n.get(e.id)))});let r=[],i=new Set;return e.forEach(e=>{let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),t.forEach(e=>{if(i.has(e.id))return;let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),r},RE=(e,t,n,r)=>{let i=xE(t,e.pendingDeletionIds),a=xE(n,e.pendingDeletionIds),o=bE(e.activeSessions,i)?e.activeSessions:i,s=bE(e.archivedSessions,a)?e.archivedSessions:a,c=o===e.activeSessions?e.sessionsByDirectory:gE(o),l=o===e.activeSessions?e.reviewTransferBySessionId:zE(o);return o===e.activeSessions&&s===e.archivedSessions&&c===e.sessionsByDirectory&&l===e.reviewTransferBySessionId&&e.hasLoaded&&e.status===r?e:{activeSessions:o,archivedSessions:s,sessionsByDirectory:c,reviewTransferBySessionId:l,hasLoaded:!0,status:r}},zE=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=nw(r);if(!e)continue;let i=e===`review-to-original`?zp(r):Rp(r);!i||!n.has(i)||t.set(r.id,e)}return t},Y=Oe((e,t)=>({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0},applySnapshot:(t,n,r=`ready`)=>{e(e=>RE(e,t,n,r))},resetForRuntimeSwitch:()=>{q+=1,sw(),YT=null,XT.clear(),ZT.clear(),QT.clear(),eE.forEach(e=>e.abort()),eE.clear(),nE=VT,rE=0,iE?.abort(),iE=null,aE=void 0,oE.clear(),e({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}})},hydrateSessionIndex:async()=>{if(aE)return aE;if(t().hasHydratedSessionIndex)return;let n=sE(),a=r(),o=i(),s=PT(void 0,a,o);s&&J(n)&&e(e=>({...PE(e,s,!1),hasCachedSessionIndex:!0}));let c=(async()=>{try{let t;try{t=await IT(void 0,a,o)}catch(e){if(!J(n))return;if(s){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!J(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...PE(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return aE=c.finally(()=>{aE===c&&(aE=void 0)}),aE},startSessionIndexStartup:async(n,r)=>{let i=sE();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!J(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=CE([...n,...t().cachedDirectories]);if(a.size===0){e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let n=t();return{activeSessions:n.activeSessions,archivedSessions:n.archivedSessions}}let o=t().hasCachedSessionIndex,s=r?.priorityDirectories?CE(r.priorityDirectories):null,c=!!(o&&s&&s.size>0&&[...s].some(e=>a.has(e))),l=c?new Set([...a].filter(e=>s.has(e))):a,u=c?new Set([...a].filter(e=>!s.has(e))):new Set,d={activeSessions:t().activeSessions,archivedSessions:t().archivedSessions},f=null,p=sE();try{if(f=await hw([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&FT(f)}catch(e){if(!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}let m=()=>{if(u.size===0)return;let e=[...u],n=()=>{J(i)&&t().syncSessionsForDirectories(e,d.activeSessions)};typeof globalThis.setTimeout==`function`?globalThis.setTimeout(n,0):Promise.resolve().then(n)};if(!f){let e=GE(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}iE?.abort();let h=new AbortController;iE=h;let g=wE(l),_=()=>{if(!J(i))return;let t=TE(g);t.size!==0&&e(e=>EE(e,t))},v=!o,y=f;v||e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let b=()=>void 0,x=new Promise(e=>{b=e}),S=!1,C=()=>{S||(S=!0,b())};if((async()=>{let t=y,n=GT;for(;!h.signal.aborted&&J(i);){e(e=>({...PE(e,t,!0),startupSyncProgress:v?{active:t.sync.active,phase:t.sync.active?`syncing`:`idle`,completed:t.sync.completed,total:t.sync.total}:e.startupSyncProgress})),t.sync.active||C();let r=sE(),a=await gw(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null});if(!J(i)||!J(r)||a===`aborted`)break;let o;for(;!h.signal.aborted&&J(i);){let e=sE();try{o=await IT()}catch{if(h.signal.aborted||!J(i)){o=void 0;break}if(await JT(n,h.signal),h.signal.aborted||!J(i)){o=void 0;break}n=Math.min(n*qT,KT);continue}if(!J(e)){o=void 0;break}if(!o)break;n=GT;break}if(o===void 0||!o)break;t=o}})().catch(e=>{h.signal.aborted||console.warn(`[GlobalSessions] Session index tip sync failed:`,e)}).finally(()=>{_(),C(),iE===h&&(iE=null),v&&J(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!J(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(YT)return YT;e(e=>e.status===`loading`?e:{status:`loading`});let r=q,i=Promise.resolve().then(async()=>{let a=t();try{if(await ow(),r!==q)return{activeSessions:[],archivedSessions:[]};let t=z.getSdkClient(),[i,o]=await Promise.allSettled([vp(t,{archived:!1,pageSize:LT}),vp(t,{archived:!0,pageSize:LT})]),s=LE(a.activeSessions,n),c=i.status===`fulfilled`?i.value:s,l=o.status===`fulfilled`?o.value:a.archivedSessions;return i.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load active sessions, preserving existing snapshot with fallback merge:`,i.reason),o.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load archived sessions, preserving current snapshot:`,o.reason),r===q?(e(e=>{let t=i.status===`fulfilled`&&o.status===`fulfilled`?`ready`:`error`,n=RE(e,c,l,t);if(i.status!==`fulfilled`||o.status!==`fulfilled`)return n===e?e:n;let r=new Set([...i.value.map(e=>e.id),...o.value.map(e=>e.id)]);return{...n,hasLoadedFullCatalog:!0,fullCatalogSessionIds:r,fullCatalogGeneration:e.fullCatalogGeneration+1}}),{activeSessions:c,archivedSessions:l}):{activeSessions:[],archivedSessions:[]}}catch(t){if(r!==q)return{activeSessions:[],archivedSessions:[]};let i=LE(a.activeSessions,n),o=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,t),e(e=>RE(e,i,o,`error`)),{activeSessions:i,archivedSessions:o}}finally{YT===i&&(YT=null)}});return YT=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=CE(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=LE(e.activeSessions,xE(r??[],e.pendingDeletionIds)),n=new Set(e.loadingDirectories),i=new Set(e.refreshingDirectories);for(let t of a)i.add(t),e.loadedDirectories.has(t)||e.sessionsByDirectory.has(t)||r?.some(e=>pE(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:gE(t),reviewTransferBySessionId:zE(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=XT.get(n);if(r)return r;let a=fE(async()=>{let r=new AbortController;eE.add(r);try{if(o!==q||(await ow(),o!==q))return!1;let a=await vp(z.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:RT,maxItems:RT,timeoutMs:zT,retryAttempts:2,signal:r.signal});if(o!==q)return!1;if(e(e=>{let t=FE(e,{activeSessions:a,directories:new Set([n]),markReady:!0,mergeOnly:i?.incrementalStart!==void 0}),r=new Set(e.refreshingDirectories),o=new Map(e.activePaginationByDirectory);return r.delete(n),i?.incrementalStart===void 0&&o.set(n,OE(a)),t===e?{refreshingDirectories:r,activePaginationByDirectory:o}:{...t,refreshingDirectories:r,activePaginationByDirectory:o}}),i?.persist!==!1){let e=t().sessionsByDirectory.get(n)??[],r=t().activePaginationByDirectory.get(n)??OE(a);try{await yw({directory:n,sessions:e,cursor:r.cursor,hasMore:r.hasMore,fullSync:i?.incrementalStart===void 0})}catch(e){console.warn(`[GlobalSessions] Failed to persist session index for ${n}:`,e)}}return uE(),!0}catch(t){return lE(t),o===q&&(console.warn(`[GlobalSessions] Failed to refresh active sessions for ${n}:`,t),e(e=>{let t=new Set(e.loadingDirectories),r=new Set(e.refreshingDirectories);return t.delete(n),r.delete(n),{loadingDirectories:t,refreshingDirectories:r}})),!1}finally{eE.delete(r)}});return XT.set(n,a),a.finally(()=>{XT.get(n)===a&&XT.delete(n)}),a}),c=await Promise.all(s);return o===q?([...a].forEach((e,t)=>{i?.onDirectoryResult?.(e,c[t]??!1)}),e(e=>({status:e.status===`loading`?c.some(Boolean)?`ready`:`error`:e.status,hasLoaded:!0})),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}},syncSessionsForDirectories:async(n,r)=>{let i=sE(),a=CE(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=sE();try{if(o=await hw([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&FT(o)}catch(e){if(!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}if(!o)return t().refreshSessionsForDirectories(a,r);let c=new AbortController;eE.add(c);let l=wE(a),u=()=>{if(!J(i))return;let t=TE(l);t.size!==0&&e(e=>EE(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i)&&(e(e=>PE(e,t,!0)),t.sync.active);){let e=sE(),n=await gw(t.revision,c.signal);if(!J(i)||!J(e)||n===`aborted`)break;let r=sE(),a;try{a=await IT()}catch{break}if(!J(i)||!J(r)||!a)break;t=a}}catch(e){!c.signal.aborted&&J(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{u(),eE.delete(c)}return J(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=_(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=QT.get(r);if(i)return await i,{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions};let a=t().activePaginationByDirectory.get(r);if(!a?.hasMore||a.cursor===null){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=fE(async()=>{let t=new AbortController;eE.add(t);try{if(await ow(),o!==q)return!1;let n=await vp(z.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:RT,maxItems:RT,timeoutMs:zT,retryAttempts:2,signal:t.signal});return o===q&&(e(e=>{let t=e.activeSessions.filter(e=>pE(e)===r),i=new Map(t.map(e=>[e.id,e]));xE(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,mE(e,i.get(e.id)))});let o=SE([...i.values()]),s=kE(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,OE(n,a.cursor)),{activeSessions:bE(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:gE(s),reviewTransferBySessionId:zE(s),activePaginationByDirectory:c}}),uE(),!0)}catch(t){return lE(t),o===q&&(console.warn(`[GlobalSessions] Failed to load more sessions for ${r}:`,t),e(e=>{let t=e.activePaginationByDirectory.get(r);if(!t)return e;let n=new Map(e.activePaginationByDirectory);return n.set(r,{...t,loadingMore:!1}),{activePaginationByDirectory:n}})),!1}finally{eE.delete(t)}});QT.set(r,s);try{await s}finally{QT.get(r)===s&&QT.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=CE(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=q;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=ZT.get(t);if(n)return n;let r=fE(async()=>{let n=new AbortController;eE.add(n);try{if(i!==q||(await ow(),i!==q))return!1;let r=await vp(z.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:RT,maxItems:RT,timeoutMs:zT,retryAttempts:2,signal:n.signal});return i===q&&(e(e=>{let n=kE(e.archivedSessions,xE(r,e.pendingDeletionIds),new Set([t])),i=new Set(e.archivedLoadedDirectories),a=new Set(e.archivedLoadingDirectories);return i.add(t),a.delete(t),{archivedSessions:bE(e.archivedSessions,n)?e.archivedSessions:n,archivedLoadedDirectories:i,archivedLoadingDirectories:a}}),!0)}catch(n){return i===q&&(console.warn(`[GlobalSessions] Failed to refresh archived sessions for ${t}:`,n),e(e=>{let n=new Set(e.archivedLoadingDirectories);return n.delete(t),{archivedLoadingDirectories:n}})),!1}finally{eE.delete(n)}});return ZT.set(t,r),r.finally(()=>{ZT.get(t)===r&&ZT.delete(t)}),r});return await Promise.all(a),i===q?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!pp(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=mE(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=!!t.time?.archived,i=r?e.activeSessions.filter(e=>e.id!==n.id):IE(e.activeSessions,t),a=r?IE(e.archivedSessions,t):e.archivedSessions.filter(e=>e.id!==n.id);return i===e.activeSessions&&a===e.archivedSessions?e:{activeSessions:i,archivedSessions:a,sessionsByDirectory:i===e.activeSessions?e.sessionsByDirectory:gE(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:zE(i)}})},markSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)!r||e.pendingDeletionIds.has(r)||(n??=new Set(e.pendingDeletionIds),n.add(r));return n?{pendingDeletionIds:n}:e})},clearSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)e.pendingDeletionIds.has(r)&&(n??=new Set(e.pendingDeletionIds),n.delete(r));return n?{pendingDeletionIds:n}:e})},removeSessions:t=>{let n=t instanceof Set?t:new Set(t);n.size!==0&&e(e=>{let t=e.activeSessions.filter(e=>!n.has(e.id)),r=e.archivedSessions.filter(e=>!n.has(e.id));return t.length===e.activeSessions.length&&r.length===e.archivedSessions.length?e:{activeSessions:t,archivedSessions:r,sessionsByDirectory:gE(t),reviewTransferBySessionId:zE(t)}})},archiveSessions:(t,n=Date.now())=>{let r=t instanceof Set?t:new Set(t);r.size!==0&&e(e=>{let t=[],i=e.activeSessions.filter(e=>!r.has(e.id)||(t.push({...e,time:{...e.time,archived:n}}),!1));if(t.length===0)return e;let a=e.archivedSessions.filter(e=>!r.has(e.id));return{activeSessions:i,archivedSessions:[...t,...a],sessionsByDirectory:gE(i),reviewTransferBySessionId:zE(i)}})}})),BE=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},VE=async()=>{await Y.getState().hydrateSessionIndex()},HE=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),UE=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),WE=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),GE=async(e,t,n)=>{let r=CE(e),i=q;if(r.size===0){Y.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=Y.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}Y.setState({startupSyncProgress:{active:!0,phase:`syncing`,completed:0,total:r.size}});let a=new Set,o=new Set(r);try{do await Promise.all([...o].map(async e=>{let r=!1;await Y.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===q&&r&&!a.has(e)&&(a.add(e),Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===q&&await new Promise(e=>setTimeout(e,WT));while(o.size>0&&n?.retryFailed===!0&&i===q);if(i===q){Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=Y.getState(),t=[...a].flatMap(t=>{let r=e.sessionsByDirectory.get(t)??[],i=e.activePaginationByDirectory.get(t);return[{directory:t,sessions:r,cursor:i?.cursor??null,hasMore:i?.hasMore??!1,fullSync:!n?.incrementalStartByDirectory?.has(t)}]});try{await bw(t);let e=Date.now();Y.setState(n=>{let r=new Map(n.sessionIndexSyncByDirectory);for(let n of t){let t=r.get(n.directory);r.set(n.directory,{lastSyncedAt:e,lastFullSyncedAt:n.fullSync?e:t?.lastFullSyncedAt??0})}return{sessionIndexSyncByDirectory:r}})}catch(e){console.warn(`[GlobalSessions] Failed to persist cold-start session index batch:`,e)}}}finally{i===q&&Y.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=Y.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},KE=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),qE=async e=>Y.getState().loadMoreSessionsForDirectory(e),JE=(e,t)=>{if(!t)return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>t[n]===e[n])},YE=`oc.sessions.folders`,XE=`oc.sessions.folderCollapse`,ZE=`oc.sessions.order`,QE=`oc.sessions.orderActivity`,$E=`/api/session-folders`,eD=250,tD=`__archived__:`,nD=x(u()),rD=null,iD=!1,aD=!1,oD=0,sD,cD,lD=null,uD=null,dD=()=>typeof window>`u`?!1:v()?!0:window.__VSCODE_CONFIG__!==void 0,fD=(e,t)=>{if(typeof window>`u`||dD())return;rD&&clearTimeout(rD);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);rD=setTimeout(()=>{rD=null,F($E,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},eD)},pD=()=>{try{let e=nD.getItem(YE);if(!e)return{};let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t)){if(!Array.isArray(r))continue;let t=[];for(let e of r){if(!e||typeof e!=`object`)continue;let n=e,r=typeof n.id==`string`?n.id.trim():``,i=typeof n.name==`string`?n.name.trim():``,a=typeof n.createdAt==`number`?n.createdAt:0;if(!r||!i)continue;let o=Array.isArray(n.sessionIds)?n.sessionIds.filter(e=>typeof e==`string`&&e.trim().length>0):[],s=typeof n.parentId==`string`?n.parentId:null;t.push({id:r,name:i,sessionIds:o,createdAt:a,parentId:s})}t.length>0&&(n[e]=t)}return n}catch{return{}}},mD=()=>{try{let e=nD.getItem(XE);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}},hD=()=>{try{let e=nD.getItem(ZE);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!Array.isArray(t))return[];let n=t.filter(e=>typeof e==`string`&&e.length>0);return n.length>0?[[e,n]]:[]}))}catch{return{}}},gD=()=>{try{let e=nD.getItem(QE);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!t||typeof t!=`object`||Array.isArray(t))return[];let n=Object.fromEntries(Object.entries(t).flatMap(([e,t])=>typeof t==`number`&&Number.isFinite(t)?[[e,t]]:[]));return Object.keys(n).length>0?[[e,n]]:[]}))}catch{return{}}},_D=(e,t)=>{try{nD.setItem(ZE,JSON.stringify(e)),nD.setItem(QE,JSON.stringify(t))}catch{}},vD=e=>{lD=e,clearTimeout(sD),sD=setTimeout(()=>{try{nD.setItem(YE,JSON.stringify(e)),lD=null}catch{}},300)},yD=e=>{uD=e,clearTimeout(cD),cD=setTimeout(()=>{try{nD.setItem(XE,JSON.stringify(Array.from(e))),uD=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(lD!==null){clearTimeout(sD);try{nD.setItem(YE,JSON.stringify(lD))}catch{}lD=null}if(uD!==null){clearTimeout(cD);try{nD.setItem(XE,JSON.stringify(Array.from(uD)))}catch{}uD=null}});var bD=(e,t)=>{vD(e),yD(t),fD(e,t)},xD=()=>fe(),SD=(e,t,n)=>{let r=new Set(t.map(e=>e.id)),i=null;for(let t of e)!r.has(t.id)&&n.has(t.id)&&(i||=new Set(n),i.delete(t.id));return i},CD=(e,t)=>e.startsWith(tD)?t.filter(e=>e.sessionIds.length>0):t,wD=Oe()(je((e,t)=>({foldersMap:pD(),collapsedFolderIds:mD(),sessionOrderByScope:hD(),sessionOrderActivityByScope:gD(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:xD(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),bD(l,t().collapsedFolderIds),o},renameFolder:(n,r,i)=>{let a=i.trim();if(!a||!n)return;let o=t().foldersMap,s=o[n];if(!s)return;let c=s.map(e=>e.id===r?{...e,name:a}:e),l={...o,[n]:c};e({foldersMap:l}),bD(l,t().collapsedFolderIds)},deleteFolder:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set([r]),s=!0;for(;s;){s=!1;for(let e of a)e.parentId&&o.has(e.parentId)&&!o.has(e.id)&&(o.add(e.id),s=!0)}let c=a.filter(e=>!o.has(e.id)),l={...i,[n]:c};e({foldersMap:l}),bD(l,t().collapsedFolderIds);let u=t().collapsedFolderIds;if(Array.from(o).some(e=>u.has(e))){let t=new Set(u);o.forEach(e=>t.delete(e)),e({collapsedFolderIds:t}),bD(l,t)}},addSessionToFolder:(n,r,i)=>{if(!n||!r||!i)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=o.find(e=>e.id===r);if(!s)return;let c=o.reduce((e,t)=>e+ +!!t.sessionIds.includes(i),0);if(s.sessionIds.includes(i)&&c===1)return;let l=o.map(e=>{let t=e.sessionIds.filter(e=>e!==i);return e.id===r?{...e,sessionIds:[...t,i]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),u={...a,[n]:l},d=SD(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),bD(u,d??t().collapsedFolderIds)},addSessionsToFolder:(n,r,i)=>{if(!n||!r||i.length===0)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=new Set(i.filter(e=>typeof e==`string`&&e.length>0));if(s.size===0)return;let c=o.find(e=>e.id===r);if(!c)return;let l=!1;for(let e of o){for(let t of s)if(e.sessionIds.includes(t)&&(e.id!==r||!c.sessionIds.includes(t))){l=!0;break}if(l)break}if(!l){for(let e of s)if(!c.sessionIds.includes(e)){l=!0;break}}if(!l)return;let u=o.map(e=>{let t=e.sessionIds.filter(e=>!s.has(e));return e.id===r?{...e,sessionIds:[...t,...s]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),d={...a,[n]:u},f=SD(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),bD(d,f??t().collapsedFolderIds)},removeSessionsFromFolders:(n,r)=>{if(!n||r.length===0)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set(r.filter(e=>typeof e==`string`&&e.length>0));if(o.size===0)return;let s=!1,c=a.map(e=>{let t=e.sessionIds.filter(e=>!o.has(e));return t.length===e.sessionIds.length?e:(s=!0,{...e,sessionIds:t})});if(!s)return;let l={...i,[n]:c},u=SD(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),bD(l,u??t().collapsedFolderIds)},removeSessionFromFolder:(n,r)=>{if(!n||!r)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=!1,s=a.map(e=>{let t=e.sessionIds.filter(e=>e!==r);return t.length===e.sessionIds.length?e:(o=!0,{...e,sessionIds:t})});if(!o)return;let c={...i,[n]:s},l=SD(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),bD(c,l??t().collapsedFolderIds)},toggleFolderCollapse:n=>{let r=t().collapsedFolderIds,i=new Set(r);i.has(n)?i.delete(n):i.add(n),e({collapsedFolderIds:i}),bD(t().foldersMap,i)},cleanupSessions:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n],o=t().sessionOrderByScope[n]??[],s=t().sessionOrderActivityByScope[n]??{};if((!a||a.length===0)&&o.length===0&&Object.keys(s).length===0)return;let c=!1,l=(a??[]).map(e=>{let t=e.sessionIds.filter(e=>r.has(e));return t.length===e.sessionIds.length?e:(c=!0,{...e,sessionIds:t})}),u=CD(n,l);u.length!==l.length&&(c=!0);let d=o.filter(e=>r.has(e)),f=d.length!==o.length,p=Object.keys(s).some(e=>!r.has(e));if(!c&&!f&&!p)return;let m={...i,[n]:u},h=SD(a??[],u,t().collapsedFolderIds),g=f?{...t().sessionOrderByScope,[n]:d}:t().sessionOrderByScope,_=f||p?Object.fromEntries(Object.entries(t().sessionOrderActivityByScope).filter(([e])=>e!==n)):t().sessionOrderActivityByScope;e(h?{foldersMap:m,collapsedFolderIds:h,sessionOrderByScope:g,sessionOrderActivityByScope:_}:{foldersMap:m,sessionOrderByScope:g,sessionOrderActivityByScope:_}),bD(m,h??t().collapsedFolderIds),_D(g,_)},getSessionFolderId:(e,n)=>{if(!e||!n)return null;let r=t().foldersMap[e];if(!r)return null;for(let e of r)if(e.sessionIds.includes(n))return e.id;return null},reorderSessions:(n,r,i,a,o)=>{if(!n||i===a)return;let s=Array.from(new Set(r)),c=s.indexOf(i),l=s.indexOf(a);if(c===-1||l===-1)return;let u=t().sessionOrderByScope[n]??[],d=t().sessionOrderActivityByScope[n],f=JE(o,d),p=f?[...u.filter(e=>s.includes(e)),...s.filter(e=>!u.includes(e))]:s,m=p.indexOf(i),h=p.indexOf(a);if(m===-1||h===-1||m===h)return;let g=[...p];g.splice(m,1),g.splice(h,0,i);let _=new Set(s),v=f?u.filter(e=>!_.has(e)):[],y={...t().sessionOrderByScope,[n]:[...g,...v]},b={...t().sessionOrderActivityByScope,[n]:{...o}};e({sessionOrderByScope:y,sessionOrderActivityByScope:b}),_D(y,b)}}),{name:`session-folders-store`})),TD=async()=>{if(iD||aD||typeof window>`u`)return;if(dD()){iD=!0;return}aD=!0;let e=oD;try{let t=await F($E).catch(()=>null);if(e!==oD||!t||!t.ok)return;let n=await t.json().catch(()=>null);if(!n)return;let r=n.foldersMap&&typeof n.foldersMap==`object`?n.foldersMap:{},i=Array.isArray(n.collapsedFolderIds)?new Set(n.collapsedFolderIds.filter(e=>typeof e==`string`)):new Set;if(e!==oD||!(Object.keys(r).length>0||i.size>0))return;wD.setState({foldersMap:r,collapsedFolderIds:i}),vD(r),yD(i)}catch{}finally{e===oD&&(aD=!1,iD=!0)}},ED=()=>{typeof window>`u`||TD()},DD=()=>{oD+=1,iD=!1,aD=!1,lD=null,uD=null,sD&&=(clearTimeout(sD),void 0),cD&&=(clearTimeout(cD),void 0),wD.setState({foldersMap:pD(),collapsedFolderIds:mD(),sessionOrderByScope:hD(),sessionOrderActivityByScope:gD()}),TD()};typeof window<`u`&&d(e=>{n(e)&&DD()}),ED();var OD=new Map,kD=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},AD=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,jD=()=>{let e=AD();return OD.set(e,kD()),e},MD=(e,t)=>{let n=OD.get(e);n&&(OD.delete(e),n.resolve(t))},ND=(e,t)=>{let n=OD.get(e);n&&(OD.delete(e),n.reject(t))},PD=e=>{let t=OD.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},FD=3e5,ID=5e3,LD=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,RD=new Map,zD=new Map,BD=new Map,VD=new Map,HD=new Set,UD=null,WD=!1,GD=e=>LD(e),KD=e=>VD.get(e)??0,qD=e=>{let t=KD(e)+1;return VD.set(e,t),t},JD=async e=>{let t=Te()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):Be(e)},YD=(e,t)=>{for(let n of HD)try{n(e,t)}catch{}},XD=e=>(HD.add(e),()=>{HD.delete(e)}),ZD=(e,t)=>{let n=GD(e);if(!n)return!1;let r=RD.get(n),i=r?.status===`pending`&&t.status!==`pending`;return r&&typeof r.updatedAt==`number`&&Number.isFinite(r.updatedAt)&&typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)&&t.updatedAt<r.updatedAt&&!i?!1:(RD.set(n,t),t.status!==`pending`&&zD.delete(n),YD(n,t),!0)},QD=(e,t)=>{let n=GD(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?ZD(n,{status:r,error:typeof t.error==`string`&&t.error.trim().length>0?t.error.trim():null,updatedAt:typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?t.updatedAt:Date.now()}):!1},$D=()=>{UD||=Gt(e=>{e.type===`worktree-bootstrap-status`&&QD(e.directory,e)}),!(typeof window>`u`||WD)&&(WD=!0,window.addEventListener(`openchamber:worktree-bootstrap-status`,(e=>{let t=e.detail;if(!t||typeof t!=`object`||Array.isArray(t))return;let n=t,r=typeof n.directory==`string`?n.directory:``;r&&QD(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},eO=e=>{let t=GD(e);t&&($D(),ZD(t,{status:`pending`,error:null,updatedAt:Date.now()}))},tO=e=>{let t=GD(e);if(!t)return;qD(t);let n=BD.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,BD.delete(t));let r=zD.get(t);r&&(r.dispose(),zD.delete(t)),RD.delete(t)},nO=e=>{let t=GD(e);return t?RD.get(t)??null:null},rO=(e,t)=>{let n=dt.getState().dictionary;return ft(n,e,t)},iO=e=>({status:`failed`,error:e,updatedAt:Date.now()}),aO=(e,t,n)=>{let r=iO(t);return ZD(e,r),n?.(r),r},oO=async(e,t=()=>!0)=>{try{let n=await JD(e);return t()?ZD(e,n)?n:nO(e):null}catch{return null}},sO=(e,t,n=ID)=>{let r=GD(e),i=KD(r);$D();let a=!1,o=null,s=null,c=!1,l=null,u=null,d=()=>{},f=()=>{o&&clearTimeout(o),o=null,s&&clearInterval(s),s=null},p=()=>{a||s||(s=setInterval(()=>{a||c||(c=!0,oO(e,()=>!a&&KD(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):ID))},m=e=>{a||(a=!0,f(),l?.(),l=null,e&&u?.(e))},h=new Promise((n,i)=>{u=i;let s=e=>{a||(a=!0,f(),l?.(),l=null,e())};d=e=>{if(e){if(e.status===`ready`){s(()=>n(e));return}e.status===`failed`&&s(()=>i(Error(e.error||`Worktree bootstrap failed`)))}},l=XD((e,t)=>{GD(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=aO(e,rO(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(RD.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},cO=async(e,t,n,r,i,a)=>{let o=GD(e),s=sO(e,n,r);t.disposeSettlement=s.dispose;let c=await oO(e,()=>!t.cancelled&&BD.get(o)===t&&KD(o)===t.epoch);if(t.cancelled||BD.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),pT.error(rO(`worktree.bootstrap.toast.failed`),{description:c.error||rO(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||BD.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||BD.get(o)!==t)return;let r=nO(e);if(r?.status===`failed`){i?.(r),pT.error(rO(`worktree.bootstrap.toast.failed`),{description:r.error||rO(`worktree.bootstrap.toast.failedDescription`)});return}let a=aO(e,n instanceof Error?n.message:String(n),i);pT.error(rO(`worktree.bootstrap.toast.failed`),{description:a.error||rO(`worktree.bootstrap.toast.failedDescription`)})}},lO=(e,t)=>{let n=GD(e);if(!n||RD.get(n)?.status!==`pending`||BD.has(n))return;let r={cancelled:!1,epoch:KD(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=cO(e,r,t?.timeoutMs??FD,t?.pollIntervalMs??ID,t?.onFailed,t?.onReady).finally(()=>{BD.get(n)===r&&BD.delete(n)}),BD.set(n,r)},uO=async(e,t=FD)=>{let n=GD(e);if(!n)return;let r=RD.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=zD.get(n);if(i)return i.promise;let a=()=>{},o=KD(n),s=(async()=>{let r=sO(e,t,ID);a=r.dispose;let i=await oO(e,()=>KD(n)===o);if(KD(n)!==o){r.dispose();return}if(i?.status===`ready`){r.dispose();return}if(i?.status===`failed`)throw r.dispose(),Error(i.error||`Worktree bootstrap failed`);r.startCompensation(),await r.promise})().finally(()=>{zD.get(n)?.promise===s&&zD.delete(n)});return zD.set(n,{promise:s,dispose:()=>a()}),s},dO=`openchamber.json`,fO=`.openchamber`,pO=[`.config`,`openchamber`,`projects`];function mO(){let e=Te();return e?.files?e.files:null}var hO=3e3,gO=80,_O=4e3,vO=2e3,yO=300,bO=160,xO=new Set([`macos`,`linux`,`windows`]),SO=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},CO=(e,t)=>{let n=SO(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},wO=e=>CO(CO(e,fO),dO),TO=()=>{let e=`/api`;return e.startsWith(`/`),e},EO=async(e,t)=>{try{let n=await F(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,data:null}}catch{return{ok:!1,data:null}}},DO=async e=>{let t=mO();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await EO(`${TO()}/fs/mkdir`,{path:e})).ok},OO=async e=>{let t=mO();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await F(`${TO()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},kO=async(e,t)=>{let n=mO();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await EO(`${TO()}/fs/write`,{path:e,content:t})).ok},AO=async()=>{try{let e=await F(`${TO()}/fs/home`,{cache:`no-store`});if(!e.ok)throw Error(`Failed to resolve home directory from API`);let t=await e.json().catch(()=>null),n=typeof t?.home==`string`?t.home.trim():``;if(n)return SO(n)}catch{}if(!v()){let e=await De().catch(()=>null);if(e&&e.trim().length>0)return SO(e)}return null},jO=async()=>{let e=await AO();return e?pO.reduce((e,t)=>CO(e,t),e):null},MO=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?SO(t):``;return n&&xe(n)||null},NO=async e=>{let t=await jO();if(!t)return null;let n=MO(e);return n?CO(t,`${n}.json`):null},PO=(e,t)=>e.length<=t?e:e.slice(0,t),FO=e=>typeof e==`string`?PO(e,hO):``,IO=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n,r=typeof e.id==`string`?e.id.trim():``,i=PO((typeof e.text==`string`?e.text:``).trim(),120);if(!r||!i)continue;let a=!!e.completed,o=typeof e.createdAt==`number`&&Number.isFinite(e.createdAt)&&e.createdAt>=0?e.createdAt:Date.now();t.push({id:r,text:i,completed:a,createdAt:o})}return t},LO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=typeof e.path==`string`?e.path.trim():``,o=typeof e.createdAt==`number`&&Number.isFinite(e.createdAt)&&e.createdAt>=0?e.createdAt:Date.now();!i||!a||n.has(i)||(n.add(i),t.push({id:i,path:a,createdAt:o}))}return t.sort((e,t)=>t.createdAt-e.createdAt)},RO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!=`string`)continue;let e=r.trim().toLowerCase();!xO.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},zO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=PO(typeof e.name==`string`?e.name.trim():``,gO),o=PO(typeof e.command==`string`?e.command.trim():``,_O);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=RO(e.platforms),l=e.autoOpenUrl===!0,u=PO(typeof e.openUrl==`string`?e.openUrl.trim():``,vO),d=PO(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,yO);t.push({id:i,name:a,command:o,icon:s||null,...l?{autoOpenUrl:!0}:{},...u?{openUrl:u}:{},...d?{desktopOpenSshForward:d}:{},...c.length>0?{platforms:c}:{}})}return t},BO=e=>{let t=zO(e?.actions),n=typeof e?.primaryActionId==`string`?e.primaryActionId.trim():``;return{actions:t,primaryActionId:n&&t.some(e=>e.id===n)?n:null}},VO=e=>({notes:FO(e?.notes),todos:IO(e?.todos)}),HO=e=>({...VO(e),plans:LO(e?.plans)}),UO=e=>e.trim().toLowerCase().replace(/[`*_#>[\](){}.!?,:;"']/g,``).replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`plan`,WO=e=>PO(e.trim(),bO),GO=()=>fe(),KO=async e=>{let t=await jO(),n=MO(e);return!t||!n?null:CO(t,n)},qO=async e=>{let t=await KO(e);return t?CO(t,`plans`):null},JO=(e,t)=>{let n=WO(e)||`Plan`,r=t.trim();return r?`# ${n}\n\n${r}`:`# ${n}\n`},YO=e=>{let t=(typeof e==`string`?e:``).replace(/\r\n?/g,`
|
|
466
|
-
`),n=t.match(/^\s*#\s+(.+?)\s*(?:\n+|$)/);if(n){let e=
|
|
467
|
-
`).map(e=>e.trim()).find(Boolean)||`Plan`).replace(/^#+\s*/,``))||`Plan`,body:t.trim()}};async function XO(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await NO(e),r=async e=>{let t=await OO(e);return t===null?null:t},i=e=>{if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;try{let e=JSON.parse(t);return!e||typeof e!=`object`?null:e}catch{return null}};if(n){let e=i(await r(n));if(e)return e}let a=i(await r(wO(t)));if(!a)return null;try{await ZO(e,a)&&await vk(t)}catch{}return a}async function ZO(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await jO(),i=await NO(e);if(!r||!i)return!1;try{if(!await DO(r))return!1;let e=await OO(i),a={};if(typeof e==`string`&&e.trim())try{let t=JSON.parse(e);t&&typeof t==`object`&&!Array.isArray(t)&&(a=t)}catch{a={}}let o={};return a.version!==void 0&&(o.version=a.version),a.scheduledTasks!==void 0&&(o.scheduledTasks=a.scheduledTasks),await kO(i,JSON.stringify({...a,...t,...o,projectPath:SO(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function QO(e,t){return ZO(e,{...await XO(e)||{},...t})}async function $O(e){return(await XO(e))?.[`setup-worktree`]??[]}async function ek(e,t){return QO(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function tk(e){return(await XO(e))?.[`setup-worktree-wait`]===!0}async function nk(e,t){return QO(e,{"setup-worktree-wait":t})}async function rk(e){let t=await XO(e);return Ce(t?.draftStarters)}async function ik(e,t){return QO(e,{draftStarters:Ce(t)})}async function ak(e){let t=await XO(e);return VO({notes:t?.projectNotes,todos:t?.projectTodos})}async function ok(e,t){let n=VO({notes:t.notes,todos:t.todos});return QO(e,{projectNotes:n.notes,projectTodos:n.todos})}async function sk(e){let t=await XO(e);return HO({notes:t?.projectNotes,todos:t?.projectTodos,plans:t?.projectPlanFiles})}async function ck(e){return LO((await XO(e))?.projectPlanFiles)}async function lk(e,t){return QO(e,{projectPlanFiles:LO(t)})}async function uk(e){let t=typeof e==`string`?e.trim():``;if(!t)return null;let n=await OO(t);if(n===null)return null;let r=YO(n);return{title:r.title,body:r.body,raw:n,path:t}}var dk=async e=>{let t=mO();if(t?.delete)try{if((await t.delete(e))?.success!==!1)return!0}catch{}return!!(await EO(`${TO()}/fs/delete`,{path:e})).ok};async function fk(e,t){let n=typeof t==`string`?t.trim():``;if(!n)return!1;let r=await ck(e),i=r.find(e=>e.id===n);return!i||!await lk(e,r.filter(e=>e.id!==n))?!1:(await dk(i.path).catch(()=>!1),!0)}async function pk(e,t,n){let r=typeof t==`string`?t:``;if(!r.trim())return null;let i=YO(r);return mk(e,{title:i.title||WO(n??``)||`Plan`,body:i.body})}async function mk(e,t){let n=await qO(e);if(!n)return null;let r=WO(t.title)||`Plan`,i=Date.now(),a=GO(),o=CO(n,`${i}-${UO(r)}.md`),s=await KO(e);if(!s)return null;let c=await DO(s),l=c?await DO(n):!1;if(!c||!l||!await kO(o,JO(r,t.body)))return null;let u=await ck(e),d={id:a,path:o,createdAt:i};return await lk(e,[d,...u])?d:null}async function hk(e){let t=await XO(e);return BO({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function gk(e,t){let n=BO({actions:t.actions,primaryActionId:t.primaryActionId});return QO(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function _k(e,t){return e.replace(/\$ROOT_PROJECT_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_PROJECT_PATH\}/g,t.rootWorktreePath).replace(/\$ROOT_WORKTREE_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_WORKTREE_PATH\}/g,t.rootWorktreePath)}async function vk(e){let t=wO(e),n=mO();if(n?.delete)try{await n.delete(t);return}catch{}try{await EO(`${TO()}/fs/delete`,{path:t})}catch{}}var yk=e=>typeof e==`number`&&Number.isFinite(e)?e:0,bk=e=>yk(e.input)+yk(e.output)+yk(e.reasoning)+yk(e.cache?.read)+yk(e.cache?.write),xk=e=>e?.type===`compaction`,Sk=e=>!!e&&e.some(xk),Ck=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n];if(r.role!==`assistant`){if(r.id&&Sk(t(r.id)))return{compacted:!0};continue}let i=r.tokens;if(!i)continue;let a=bk(i);if(a>0)return{messageId:r.id??``,totalTokens:a,tokens:i}}return null},wk=500,Tk=2592e6;function Ek(e){let t=Date.now()-Tk,n=e.filter(e=>e.time>=t);return n.length<=wk?n:n.slice(n.length-wk)}function Dk(e){let t={session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}};for(let n of e)n.viewed||(n.session&&(t.session.unseenCount[n.session]=(t.session.unseenCount[n.session]??0)+1,n.type===`error`&&(t.session.unseenHasError[n.session]=!0)),n.directory&&(t.project.unseenCount[n.directory]=(t.project.unseenCount[n.directory]??0)+1,n.type===`error`&&(t.project.unseenHasError[n.directory]=!0)));return t}var Ok=Oe((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=Ek([...r,n]);e({list:i,index:Dk(i)})},markSessionViewed:n=>{let r=t();if((r.index.session.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.session===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:Dk(i)})},markProjectViewed:n=>{let r=t();if((r.index.project.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.directory===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:Dk(i)})},sessionUnseenCount:e=>t().index.session.unseenCount[e]??0,sessionHasError:e=>t().index.session.unseenHasError[e]??!1,projectUnseenCount:e=>t().index.project.unseenCount[e]??0,projectHasError:e=>t().index.project.unseenHasError[e]??!1}));function kk(e){Ok.getState().append(e)}function Ak(e){Ok.getState().markSessionViewed(e)}function jk(e){let t=(0,V.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),Ok(n)}var Mk=/^(.*)\.(\d+)$/,Nk=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`],Pk=new Set([`session.next.step.ended`,`session.next.step.failed`]);function Fk(e){return Mk.exec(e)?.[1]??e}function Ik(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function Lk(e){let t=e.sessionID;if(typeof t==`string`&&t.length>0)return t;let n=e.sessionId;if(typeof n==`string`&&n.length>0)return n}function Rk(e){let t=Ik(e.durable);if(!t)return!1;let n=t.kind??t.type??t.source;if(typeof n==`string`&&n.toLowerCase()===`sync`||t.sync===!0)return!0;let r=t.aggregateID;return!!(typeof r==`string`&&r.startsWith(`sync:`))}function zk(e){let t=Ik(e.location);if(t){let e=t.path??t.directory;if(typeof e==`string`&&e.length>0)return e}let n=e.directory;if(typeof n==`string`&&n.length>0)return n}function Bk(e){let t=Ik(e);if(!t)return e;if(t.payload&&typeof t.payload==`object`){let e=t.payload;if(typeof e.type==`string`)return{...e,...typeof t.directory==`string`&&!zk(e)?{directory:t.directory}:{}}}return e}function Vk(e,t){if(e===`session.status`){let e=Lk(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function Hk(e,t){let n=Lk(t);return n?e===`session.next.prompt.admitted`?{admissionHint:{sessionID:n,messageID:typeof t.messageID==`string`?t.messageID:void 0},domainActivityHint:{sessionID:n,kind:`activity`}}:Pk.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:Nk.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function Uk(e){let t=Ik(Bk(e));if(!t)return{action:`drop`,reason:`invalid`};let n=t.type;if(typeof n!=`string`||n.length===0)return{action:`drop`,reason:`invalid`};if(Rk(t))return{action:`drop`,reason:`sync-duplicate`};let r=Fk(n),i=Ik(t.data),a=Ik(t.properties),o=i??a;if(!o)return r.startsWith(`openchamber:`)?{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:a??{},locationDirectory:zk(t)}}:{action:`drop`,reason:`invalid`};let s=Vk(r,o),c=zk(t)??zk(o)??(()=>{let e=Ik(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),l=Hk(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:c,...l}}}function Wk(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var Gk=33,Kk=200,qk=1e4,Jk=8,Yk=250,Xk=3e4,Zk=6e4,Qk=2,$k=2e3,eA=8e3,tA=250,nA=5e3,rA=6e4,iA=8,aA=e=>{let t=e;if(t.type!==`openchamber:session-status`)return null;let n=typeof t.properties?.sessionID==`string`&&t.properties.sessionID.length>0?t.properties.sessionID:typeof t.properties?.sessionId==`string`&&t.properties.sessionId.length>0?t.properties.sessionId:``,r=typeof t.properties?.status==`string`?t.properties.status:``;if(!n||!r)return null;let i=null;if(r===`idle`||r===`busy`)i={type:r};else if(r===`retry`){let e=t.properties?.metadata;typeof e?.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`&&(i={type:`retry`,attempt:e.attempt,message:e.message,next:e.next})}return i?{id:typeof t.id==`string`&&t.id.length>0?t.id:`openchamber-status-${n}-${Date.now()}`,type:`session.status`,properties:{sessionID:n,status:i}}:null},oA=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=aA(e);if(t){let e=t.properties;return{status:`event`,event:t,normalized:{id:typeof t.id==`string`?t.id:void 0,type:`session.status`,properties:e}}}let n=Uk(e);return n.action===`drop`?n.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:Wk(n.event),normalized:n.event}};function sA(e,t,n,r){if(typeof t==`object`&&t&&typeof t.data==`object`&&t.data!==null&&r&&r.length>0)return r;let i=typeof e==`object`&&e&&typeof e.directory==`string`?e.directory:null;if(i&&i.length>0)return i;if(r&&r.length>0)return r;let a=typeof n.properties==`object`&&n.properties!==null?n.properties:null,o=typeof a?.directory==`string`?a.directory:null;if(o&&o.length>0)return o;let s=typeof a?.info==`object`&&a.info!==null?a.info:null,c=typeof s?.directory==`string`?s.directory:null;return c&&c.length>0?c:`global`}function cA(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.type==`string`?e:t.payload&&typeof t.payload==`object`&&typeof t.payload.type==`string`?t.payload:null}function lA(e){let t=`/api`;try{let e=z;typeof e.getBaseUrl==`function`&&(t=e.getBaseUrl())}catch{t=`/api`}let n=t.endsWith(`/`)?t:`${t}/`;return a().websocket(`${n}global/event/ws`,e&&e.length>0?{lastEventId:e}:void 0)}function uA(e){let t=lA(e);return Ve(t)}function dA(e){let{sdk:t,onEvent:n,onFlushStart:r,onFlushEnd:i,onNormalizedEvent:a,onReconnect:o,onCompensation:u,onRecoveryContextCaptured:d,onDisconnect:f,onTransportActivity:p,onTransportSwitch:m,routeDirectory:h,transport:_=`auto`,heartbeatTimeoutMs:v=Xk,reconnectDelayMs:y=Yk,wsReadyTimeoutMs:b}=e,x=b??(l()?eA:$k),S=new AbortController,C=!1,w,T=0,E,D=0,O=null,k=new Map,A=e=>{let t=k.get(e);return t||(t={queue:[],buffer:[],coalesced:new Map,timer:void 0,last:0},k.set(e,t),t)},j=e=>{if(e.type===`session.status`)return`session.status:${e.properties.sessionID}`;if(e.type===`session.updated`){let t=e.properties;return t.info?.id?`session.updated:${t.info.id}`:void 0}if(e.type===`lsp.updated`)return`lsp.updated`;if(e.type===`message.part.delta`){let t=e.properties;return`message.part.delta:${t.messageID}:${t.partID}:${t.field}`}},ee=e=>{let t=k.get(e);if(!t||(t.timer&&=(clearTimeout(t.timer),void 0),t.queue.length===0))return;let a=t.queue;t.queue=t.buffer,t.buffer=a,t.queue.length=0,t.coalesced.clear(),t.last=Date.now(),vs.pipeline.flush(a.length),r?.();try{for(let t of a)n(e,t)}finally{i?.()}t.buffer.length=0},te=()=>{for(let e of k.keys())ee(e)},M=e=>{let t=A(e);if(t.timer)return;let n=Date.now()-t.last;t.timer=setTimeout(()=>ee(e),Math.max(0,(Date.now()<he?Kk:Gk)-n))},ne=e=>new Promise(t=>setTimeout(t,e)),re=e=>e instanceof DOMException&&e.name===`AbortError`||typeof e==`object`&&!!e&&e.name===`AbortError`,ie=()=>typeof navigator==`object`&&navigator!==null&&navigator.onLine===!1,ae=()=>typeof document<`u`&&document.visibilityState!==`visible`,oe=e=>{if(!e||typeof e!=`object`)return;let t=e.status;if(typeof t==`number`)return t;let n=e.response?.status;if(typeof n==`number`)return n},se=e=>!(e<400||e>=500||e===408||e===429),ce=e=>new Promise(t=>{if(e<=0||S.signal.aborted){t();return}let n=()=>{a!==void 0&&(clearTimeout(a),a=void 0),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`online`,r),globalThis.window.removeEventListener(`openchamber:system-resume`,r)),typeof document<`u`&&document.removeEventListener(`visibilitychange`,i),S.signal.removeEventListener(`abort`,r)},r=()=>{n(),t()},i=()=>{typeof document<`u`&&document.visibilityState===`visible`&&r()},a=setTimeout(r,e);globalThis.window!==void 0&&(globalThis.window.addEventListener(`online`,r,{once:!0}),globalThis.window.addEventListener(`openchamber:system-resume`,r,{once:!0})),typeof document<`u`&&document.addEventListener(`visibilitychange`,i),S.signal.addEventListener(`abort`,r,{once:!0})}),le=e=>{if(e<=0)return 0;if(ie())return rA;let t=ae()?rA:nA,n=Math.min(e-1,iA);return Math.min(t,tA*2**n)},ue=!1,N,de=Date.now(),fe,pe=_===`ws`?`ws`:`sse`,P=null,me=0,he=0,F=e=>{O||(O={lastEventId:w&&w.length>0?w:null,disconnectedAt:Date.now(),runtimeGeneration:s(),reason:e},d?.({lastEventId:O.lastEventId,disconnectedAt:O.disconnectedAt,runtimeGeneration:O.runtimeGeneration,reason:O.reason}))},ge=e=>{C||(C=!0,F(e),f?.(e))},I=()=>{let e=O;O=null;let t=e!==null;u?.({lastEventId:e?.lastEventId??(w&&w.length>0?w:null),disconnectedAt:e?.disconnectedAt??null,runtimeGeneration:e?.runtimeGeneration??s(),reason:e?.reason??`ready`,transport:pe,isReconnect:t})},_e=()=>{C=!1,me=0,te(),o?.(),I()},ve=(e,t,n)=>{if(n&&typeof n.type==`string`&&n.type.startsWith(`session.next.`)){a?.(e,n);return}n&&a?.(e,n);let r=t,i=h?.(e,r)||e,o=A(i);if(r.type===`message.part.updated`){let e=r.properties.part,t=typeof e?.messageID==`string`?e.messageID:void 0,n=typeof e?.id==`string`?e.id:void 0;if(t&&n){let e=`message.part.delta:${t}:${n}:`;for(let t of o.coalesced.keys())t.startsWith(e)&&o.coalesced.delete(t)}}let s=j(r);if(s){let e=o.coalesced.get(s);if(e!==void 0){if(r.type===`message.part.delta`){let t=o.queue[e],n=r.properties;o.queue[e]={...r,properties:{...r.properties,delta:t.properties.delta+n.delta}}}else o.queue[e]=r;vs.pipeline.coalesced(r.type,s);return}o.coalesced.set(s,o.queue.length)}o.queue.push(r),M(i)},ye=(e,t)=>{let n=cA(t);if(!n)return`unusable`;let r=oA(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=sA(e,n,r.event,r.normalized.locationDirectory);return ve(i,r.event,r.normalized),`ingested`},be=()=>{de=Date.now(),fe&&clearTimeout(fe),fe=setTimeout(()=>{P=`${pe}_heartbeat_timeout`,N?.abort()},v)},xe=()=>{be(),p?.()},L=()=>{fe&&=(clearTimeout(fe),void 0)},Se=async(e,t)=>{if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n,r=new Promise((e,r)=>{n=()=>r(new DOMException(`Aborted`,`AbortError`)),t.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener(`abort`,n)}},Ce=async e=>{be();let n=await Se(t.global.event({signal:e,...w&&w.length>0?{headers:{"Last-Event-ID":w}}:{},onSseEvent:e=>{xe(),typeof e.id==`string`&&e.id.length>0&&(w=e.id)},onSseError:e=>{re(e)||ue||(ue=!0,console.error(`[event-pipeline] SSE stream error`,e))}}),e);_e();let r=Date.now();xe();for await(let e of n.stream)xe(),ue=!1,ye(e,e.payload??e),!(Date.now()-r<Jk)&&(r=Date.now(),await ne(0));if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},we=async e=>{try{await c()}catch(e){let t=e instanceof Error?e:Error(`Message stream WebSocket auth token unavailable`);throw _===`auto`&&(T=Date.now()+Zk,t.code=`WS_FALLBACK`),t.reason=`ws_auth_token_unavailable`,t}if(e.aborted)throw new DOMException(`Aborted`,`AbortError`);await new Promise((t,n)=>{let r=!1,i=!1,a=0,o=uA(w),s=(e,t=!1)=>{(t||!i)&&_===`auto`&&(T=Date.now()+Zk,e.code=`WS_FALLBACK`)},c=setTimeout(()=>{c=void 0;let e=Error(`Message stream WebSocket ready timeout`);s(e),d(e);try{o.close()}catch{}},x),l=()=>{c&&=(clearTimeout(c),void 0),o.onopen=null,o.onmessage=null,o.onerror=null,o.onclose=null},u=()=>{r||(r=!0,e.removeEventListener(`abort`,f),l(),t())},d=t=>{r||(r=!0,e.removeEventListener(`abort`,f),l(),n(t))},f=()=>{try{o.close()}catch{}u()};e.addEventListener(`abort`,f,{once:!0}),o.onopen=()=>{};let p=e=>{_===`auto`&&(T=Date.now()+Zk);let t=Error(`Message stream WebSocket invalid frame`);t.reason=e,d(t);try{o.close()}catch{}};o.onmessage=e=>{let t=null;try{t=JSON.parse(String(e.data))}catch{p(`ws_invalid_frame:json`);return}if(!t||typeof t.type!=`string`){p(`ws_invalid_frame:type`);return}if(t.type===`ready`){xe(),i=!0,a=Date.now(),c&&=(clearTimeout(c),void 0),ue=!1,_e();return}if(t.type===`error`){xe();let e=Error(t.message||`Message stream WebSocket error`);e.reason=`ws_error_frame:${t.message||`unknown`}`,s(e),d(e);try{o.close()}catch{}return}if(t.type===`backpressure`){xe(),he=Date.now()+qk;return}if(t.type!==`event`){p(`ws_invalid_frame:type`);return}let n=typeof t.eventId==`string`&&t.eventId.length>0?t.eventId:void 0;if(ye({directory:t.directory,payload:t.payload},t.payload)===`unusable`){n&&(D=E===n?D+1:1,E=n,D>=Qk&&(w=n,E=void 0,D=0)),p(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,xe(),ue=!1,n&&(w=n)},o.onerror=()=>{},o.onclose=t=>{if(e.aborted){u();return}let n=Error(`Global message stream WebSocket closed`);n.reason=i?`ws_closed:code=${t?.code??`?`}`:`ws_closed_before_ready`,i||g();let r=a>0?Date.now()-a:0;s(n,i&&r>0&&r<2e3),d(n)}})},Te=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){N=new AbortController,de=Date.now(),P=null;let e=y,t=Te();pe=t;let n=()=>{P=`pipeline_stopped`,N?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await we(N.signal):await Ce(N.signal)}catch(n){let r=typeof n==`object`&&n?n.code:void 0;if(t===`ws`&&r===`WS_FALLBACK`)e=0,m?.();else if(!re(n)){me+=1,ue||(ue=!0,console.error(`[event-pipeline] stream failed`,n));let r=typeof n==`object`&&n?n.reason:void 0,i=typeof n==`object`&&n?n.message:void 0,a=typeof r==`string`&&r.length>0?r:typeof i==`string`&&i.length>0?`${t}_error:${i.slice(0,80)}`:`${t}_error:unknown`;ge(a);let o=oe(n);e=o!==void 0&&se(o)?rA:le(me)}}finally{S.signal.removeEventListener(`abort`,n),N=void 0,L()}if(S.signal.aborted)return;P&&P!==`pipeline_stopped`&&(ge(P),me+=1,e=y>0?le(me):0,P=null),e>0&&await ce(e)}})().finally(te);let Ee=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){F(`visibility_hidden`);return}document.visibilityState===`visible`&&(Date.now()-de<v||N?.abort())}},R=e=>{e.persisted&&(F(`pageshow_persisted`),N?.abort())},De=()=>{F(`system_resume`),N&&(P=`${pe}_system_resume`,N.abort())},Oe=()=>{C&&(F(`online`),N?.abort())},ke=()=>{N?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,Ee),window.addEventListener(`pageshow`,R)),globalThis.window!==void 0&&(globalThis.window.addEventListener(`openchamber:system-resume`,De),globalThis.window.addEventListener(`online`,Oe),globalThis.window.addEventListener(`offline`,ke)),{cleanup:()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,Ee),window.removeEventListener(`pageshow`,R)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,De),globalThis.window.removeEventListener(`online`,Oe),globalThis.window.removeEventListener(`offline`,ke)),S.abort(),L(),te()},reconnect:(e=`manual`)=>{P=`${pe}_${e}`,N?.abort()}}}function fA(e){let t=new Set;for(let[n,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&t.add(n);for(let[n,r]of Object.entries(e.permission??{}))(r?.length??0)>0&&t.add(n);for(let[n,r]of Object.entries(e.question??{}))(r?.length??0)>0&&t.add(n);return t}function pA(e,t){let n=new Set(Array.from(t).filter(Boolean));if(n.size!==0)for(let t of n)delete e.todo[t],delete e.session_diff[t],delete e.session_status[t],e.session_status_observed_at&&delete e.session_status_observed_at[t],delete e.permission[t],delete e.question[t]}function mA(e){let t=[],n=new Set([e.keep,...Array.from(e.preserve??[])]);e.seen.has(e.keep)&&e.seen.delete(e.keep),e.seen.add(e.keep);for(let r of e.seen){if(e.seen.size-t.length<=e.limit)break;n.has(r)||t.push(r)}for(let n of t)e.seen.delete(n);return t}var hA=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},gA=(e,t)=>e?hA(t)<hA(e):!1;function _A(e,t){return e===t?!0:!e||e.type!==t.type?!1:e.type!==`retry`||t.type===`retry`&&e.attempt===t.attempt&&e.message===t.message&&e.next===t.next}function vA(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function yA(e,t){let n=[...e.projects],r=cs.search(n,t.id,e=>e.id);return r.found?n[r.index]={...n[r.index],...t}:n.splice(r.index,0,t),{...e,projects:n}}function bA(e,t,n){t&&(n?.(t,void 0),pA(e,[t]))}var xA=e=>e.title===`smartfetch-secondary`;function SA(e,t,n,r){return n.found?(e.session.splice(n.index,1),xA(t)&&bA(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function CA(e,t,n){switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=op(t.properties.info),i=e.session,a=cs.search(i,r.id,e=>e.id);return pp(r)?a.found&&gA(i[a.index],r)?!1:(a.found?i[a.index]=r:(i.splice(a.index,0,r),wA(e),r.parentID||(e.sessionTotal+=1)),!0):SA(e,r,a,n?.onSetSessionTodo)}case`session.updated`:{let r=op(t.properties.info),i=e.session,a=cs.search(i,r.id,e=>e.id);return a.found&&gA(i[a.index],r)?!1:!pp(r)||r.time.archived?SA(e,r,a,n?.onSetSessionTodo):(a.found?i[a.index]=r:(i.splice(a.index,0,r),wA(e)),!0)}case`session.deleted`:{let r=t.properties.info,i=e.session,a=cs.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),bA(e,r.id,n?.onSetSessionTodo),r.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0}case`session.diff`:{let n=t.properties;return e.session_diff[n.sessionID]=ip(n.diff),!0}case`todo.updated`:{let r=t.properties;return e.todo[r.sessionID]=r.todos,n?.onSetSessionTodo?.(r.sessionID,r.todos),!0}case`session.status`:{let r=t.properties;return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),_A(e.session_status[r.sessionID],r.status)?!!n?.now:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties,i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),_A(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`session.error`:{let r=t.properties,i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),_A(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`message.updated`:case`message.removed`:case`message.part.updated`:case`message.part.removed`:case`message.part.delta`:return!1;case`vcs.branch.updated`:{let n=t.properties;return e.vcs?.branch!==n.branch&&(e.vcs={branch:n.branch},!0)}case`permission.asked`:{let n=t.properties,r=[...e.permission[n.sessionID]??[]],i=cs.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.permission[n.sessionID]=r,!0}case`permission.replied`:{let n=t.properties,r=e.permission[n.sessionID];if(!r)return!1;let i=cs.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.permission[n.sessionID]=t,!0}return!1}case`question.asked`:{let n=t.properties,r=[...e.question[n.sessionID]??[]],i=cs.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.question[n.sessionID]=r,!0}case`question.replied`:case`question.rejected`:{let n=t.properties,r=e.question[n.sessionID];if(!r)return!1;let i=cs.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.question[n.sessionID]=t,!0}return!1}case`lsp.updated`:return n?.onLoadLsp?.(),!1;default:return!1}}function wA(e){if(e.session.length<=e.limit)return;let t=new Set(Object.entries(e.permission??{}).filter(([,e])=>e&&e.length>0).map(([e])=>e));for(;e.session.length>e.limit;){let n=e.session[0];if(t.has(n.id))break;e.session.shift()}}var TA=Oe()(e=>({...ol,actions:{set:t=>e(t),reset:()=>e(ol)}}));function EA(e){if(!e)return!1;for(let t of Object.values(e.question??{}))if(t&&t.length>0)return!0;for(let t of Object.values(e.permission??{}))if(t&&t.length>0)return!0;return!1}function DA(e){let t=Math.max(0,e.stores.length-e.max),n=e.graceMs??0,r=e.stores.filter(t=>!e.pins.has(t)).filter(t=>!e.hasPendingBlockingRequests?.(t)).slice().sort((t,n)=>(e.state.get(t)?.lastAccessAt??0)-(e.state.get(n)?.lastAccessAt??0)),i=[];for(let a of r){let r=e.state.get(a)?.lastAccessAt??0,o=e.now-r,s=o>=e.ttl;!s&&t<=0||!s&&o<n||(i.push(a),t>0&&--t)}return i}function OA(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function kA(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return Math.abs(t).toString(36)}function AA(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${kA(i().trim()||`default`)}.${t}.${kA(e)}`}function jA(e,t){return`${AA(e)}.${t}`}function MA(e,t){try{let n=localStorage.getItem(jA(e,t));return n?JSON.parse(n):void 0}catch{return}}function NA(e,t,n){try{let r=jA(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function PA(e){return{vcs:MA(e,`vcs`),projectMeta:MA(e,`projectMeta`),icon:MA(e,`icon`)}}function FA(e){try{localStorage.removeItem(`${AA(e)}.sessions`)}catch{}}function IA(e,t){NA(e,`vcs`,t)}function LA(e,t){NA(e,`projectMeta`,t)}function RA(e,t){NA(e,`icon`,t)}function zA(e){let t=PA(e);FA(e);let n=Oe()(e=>({...al,vcs:t.vcs??al.vcs,projectMeta:t.projectMeta??al.projectMeta,icon:t.icon??al.icon,patch:t=>e(t),replace:t=>e(t)}));return n.subscribe((t,n)=>{t.vcs!==n.vcs&&IA(e,t.vcs),t.projectMeta!==n.projectMeta&&LA(e,t.projectMeta),t.icon!==n.icon&&RA(e,t.icon)}),n}var BA=class{children=new Map;lifecycle=new Map;pins=new Map;disposers=new Map;registrySubscribers=new Set;generations=new Map;evictionScheduled=!1;onBootstrap;onDispose;isBooting;isLoadingSessions;notifyRegistrySubscribers(){for(let e of this.registrySubscribers)e()}configure(e){this.onBootstrap=e.onBootstrap,this.onDispose=e.onDispose,this.isBooting=e.isBooting,this.isLoadingSessions=e.isLoadingSessions}mark(e){let t=ne(e);t&&(this.lifecycle.set(t,{lastAccessAt:Date.now()}),this.scheduleEviction())}scheduleEviction(){this.evictionScheduled||(this.evictionScheduled=!0,queueMicrotask(()=>{this.evictionScheduled=!1,this.runEviction()}))}pin(e){let t=ne(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=ne(e);if(!t)return;let n=(this.pins.get(t)??0)-1;if(n>0){this.pins.set(t,n);return}this.pins.delete(t),this.scheduleEviction()}pinned(e){return(this.pins.get(ne(e))??0)>0}ensureChild(e,t){let n=ne(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=zA(n),this.children.set(n,r),this.generations.set(n,(this.generations.get(n)??0)+1),this.notifyRegistrySubscribers()),this.mark(n),(t?.bootstrap??!0)&&r.getState().status===`loading`&&this.onBootstrap?.(n),r}getChild(e){return this.children.get(ne(e))}captureChild(e,t){let n=ne(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=ne(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=ne(e);if(!OA({directory:t,hasStore:this.children.has(t),pinned:this.pinned(t),booting:this.isBooting?.(t)??!1,loadingSessions:this.isLoadingSessions?.(t)??!1,hasPendingBlockingRequests:this.hasPendingBlockingRequestsForDirectory(t)}))return!1;this.lifecycle.delete(t),this.children.delete(t),this.notifyRegistrySubscribers();let n=this.disposers.get(t);return n&&(n(),this.disposers.delete(t)),this.onDispose?.(t),!0}runEviction(e){let t=[...this.children.keys()];if(t.length===0)return;let n=DA({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:il,graceMs:rl,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return EA(this.getChild(e)?.getState())}update(e,t){let n=this.getChild(e);if(!n)return;let r=t(n.getState());n.setState(r)}getState(e){return this.getChild(e)?.getState()}disposeAll(){for(let e of[...this.children.keys()])this.children.delete(e);this.notifyRegistrySubscribers(),this.lifecycle.clear(),this.pins.clear(),this.disposers.clear()}subscribeRegistry(e){return this.registrySubscribers.add(e),()=>{this.registrySubscribers.delete(e)}}subscribeAll(e){let t=new Map,n=()=>{let n=new Set(this.children.keys());for(let[e,r]of t.entries())n.has(e)||(r(),t.delete(e));for(let[n,r]of this.children.entries())t.has(n)||t.set(n,r.subscribe(e))};n();let r=this.subscribeRegistry(()=>{n(),e()});return()=>{r();for(let e of t.values())e();t.clear()}}subscribeAllSelected(e,t){let n=new Map,r=()=>{let r=new Set(this.children.keys());for(let[e,t]of n.entries())r.has(e)||(t(),n.delete(e));for(let[r,i]of this.children.entries())n.has(r)||n.set(r,i.subscribe((n,r)=>{Object.is(e(n),e(r))||t()}))};r();let i=this.subscribeRegistry(()=>{r(),t()});return()=>{i();for(let e of n.values())e();n.clear()}}},VA=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},HA=e=>{let t=e.directory??``,n=e.parentID??``;return[e.id,e.title??``,e.time?.created??0,e.time?.archived??0,t,n,e.share?.url??``].join(`|`)},UA=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},WA=e=>{let t=e?.message;return typeof t==`string`?t:null},GA=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},KA=(e,t)=>e?.type===t?.type&&WA(e)===WA(t)&&GA(e,`attempt`)===GA(t,`attempt`)&&GA(e,`next`)===GA(t,`next`),qA=(e,t)=>{let n=e.session_status?.[t];if(!n)return null;let r=e.session.find(e=>e.id===t);return{status:n,sessionUpdatedAt:r?VA(r):-1}},JA=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?UA(t.status)>=UA(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,YA=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(HA(e[n])!==HA(t[n]))return!1;return!0},XA=(e,t)=>{if(e===t)return!0;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){if(!(r in t))return!1;let n=e[r],i=t[r];if(!KA(n,i))return!1}return!0};function ZA(e,t){let n=new Map;for(let r of e)for(let e of r.session){if(!e?.id||t?.has(e.id)||e.parentID||!pp(e))continue;let r=n.get(e.id);(!r||VA(e)>=VA(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>VA(t)-VA(e))}function QA(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=qA(n,e);r&&JA(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function $A(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||VA(e)>=VA(n))&&(n=e)}return n}function ej(e,t){if(!t)return;let n;for(let r of e){let e=qA(r,t);e&&JA(n,e)&&(n=e)}return n?.status}var tj=(e,t)=>e<t?-1:+(e>t);function nj(e,t){if(e.error){let n=e.error,r=e.response?.status,i=typeof n==`object`&&n&&`message`in n?String(n.message):String(n),a=Error(`${t} failed${r?` (${r})`:``}: ${i}`);throw r!==void 0&&(a.status=r),a}if(e.data===void 0){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data}var rj=e=>!e||e.length===0?``:e.map(e=>e.id).sort(tj).join(`|`);function ij(e){return e.reduce((e,t)=>{if(!t?.id||!t.sessionID)return e;let n=e[t.sessionID];return n?n.push(t):e[t.sessionID]=[t],e},{})}function aj(e,t,n){let r=n,i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=t[a];i!==e[a]&&(r===n&&(r={...n}),i?r[a]=i:delete r[a])}return r}function oj(e,t){return t.find(t=>t.worktree===e||t.sandboxes?.includes(e))?.id}async function sj(e,t){let n=await Promise.allSettled([Qf(()=>e.path.get().then(e=>t({path:nj(e,`path.get`)}))),Qf(()=>e.global.config.get().then(e=>t({config:nj(e,`global.config.get`)}))),Qf(()=>e.project.list().then(e=>{t({projects:nj(e,`project.list`).filter(e=>!!e?.id).filter(e=>!!e.worktree&&!e.worktree.includes(`opencode-test`)).sort((e,t)=>tj(e.id,t.id))})}))]),r=n.filter(e=>e.status===`rejected`).map(e=>e.reason);if(r.length&&console.error(`[bootstrap] global bootstrap failed`,r[0]),r.length===n.length){let e=r[0]instanceof Error?r[0].message:String(r[0]);try{let t=await F(`/health`,{signal:AbortSignal.timeout(4e3)});if(t.ok){let n=await t.json();n.lastOpenCodeError?e=n.lastOpenCodeError:n.openCodeRunning||(e=`OpenCode process is not running`)}}catch{}t({ready:!0,error:{type:`init`,message:e}})}else t({ready:!0,error:void 0})}async function cj(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e,o=r(),s=o.status!==`complete`,c=oj(t,a.projects);if(c&&i({project:c}),Object.keys(o.config??{}).length===0&&Object.keys(a.config??{}).length>0){let e=a.config;i({config:e}),Ad(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():Qf(()=>n.project.current().then(e=>i({project:nj(e,`project.current`).id}))),Qf(()=>n.config.get().then(e=>{let n=nj(e,`config.get`);i({config:n}),Ad(t,n)})),Qf(()=>n.path.get().then(e=>{let n=nj(e,`path.get`);i({path:n});let r=oj(n?.directory??t,a.projects);r&&i({project:r})})),Qf(async()=>{let e=Date.now(),a=r().session_status,o=nj(await n.session.status(t?{directory:t}:void 0),`session.status`),s=r().session_status,c={...r().session_status_observed_at};for(let t of Object.keys(o))s[t]===a[t]&&(c[t]=e);i({session_status:aj(a,s,o),session_status_observed_at:c,session_status_snapshot_at:e})})]),u=l.filter(e=>e.status===`rejected`).map(e=>e.reason),[,,d]=l,f=d.status===`rejected`&&!r().project;if(u.length===l.length||f){console.error(`[bootstrap] directory bootstrap failed for ${t}`,u[0]);return}s&&i({status:`complete`}),Promise.allSettled([Qf(()=>n.mcp.status().then(e=>i({mcp:nj(e,`mcp.status`)}))),Qf(()=>n.lsp.status().then(e=>i({lsp:nj(e,`lsp.status`)}))),Qf(()=>n.vcs.get().then(e=>{let t=r();if(e.error)throw Error(`vcs.get failed: ${String(e.error)}`);i({vcs:e.data??t.vcs})})),Qf(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,rj(t)])),o=await n.question.list(t?{directory:t}:void 0);if(o.error){let e=o.response?.status,t=Error(`question.list failed${e?` (${e})`:``}: ${String(o.error)}`);throw e!==void 0&&(t.status=e),t}let s=ij((o.data??[]).filter(e=>!!e?.id&&!!e.sessionID)),c=r(),l={...c.question};for(let[e,t]of Object.entries(s))l[e]=t.filter(e=>!!e?.id).sort((e,t)=>tj(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;rj(c.question[e])===t&&delete l[e]}i({question:l})}),Qf(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,rj(t)])),o=await n.permission.list(t?{directory:t}:void 0);if(o.error){let e=o.response?.status,t=Error(`permission.list failed${e?` (${e})`:``}: ${String(o.error)}`);throw e!==void 0&&(t.status=e),t}let s=ij((o.data??[]).filter(e=>!!e?.id&&!!e?.sessionID)),c=r(),l={...c.permission};for(let[e,t]of Object.entries(s))l[e]=t.filter(e=>!!e?.id).sort((e,t)=>tj(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;rj(c.permission[e])===t&&delete l[e]}i({permission:l})})]).then(e=>{let n=e.filter(e=>e.status===`rejected`).map(e=>e.reason);n.length&&console.error(`[bootstrap] deferred phase failed for ${t}`,n[0])})}var lj=Oe()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function uj(){lj.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var dj=1e3;function fj(e,t){let n=Date.now(),r=lj.getState(),i=r.streamingMessageIds,a=r.messageStreamStates,o=new Map,s=new Map(a),c=!1,l=new Set;for(let[t,n]of Object.entries(e.session_status??{}))n.type===`busy`&&l.add(t);let u=(e,t)=>{o.set(e,null);let r=s.get(t);r&&r.phase===`streaming`&&s.set(t,{...r,phase:`completed`,completedAt:n}),c=!0},d=t?.directory??``,f=H();t?.store;for(let e of l){let t=[];if(f&&d&&(t=Wu(f.getTranscript(U(d,e)))),t.length===0)continue;let r=null;for(let e=t.length-1;e>=0&&t[e].role!==`user`;e--)if(t[e].role===`assistant`){r=t[e];break}if(!r){let t=i.get(e);t&&u(e,t);continue}i.get(e)!==r.id&&(c=!0),o.set(e,r.id);let a=s.get(r.id);!a||a.phase!==`streaming`?(s.set(r.id,{phase:`streaming`,startedAt:a?.startedAt??n,lastUpdateAt:n}),c=!0):n-a.lastUpdateAt>=dj&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&lj.setState({streamingMessageIds:o,messageStreamStates:s})}function pj(e){let t=e.listCanonicalScopes(e.sessionID).filter(t=>t.sessionID===e.sessionID&&t.transport===e.transport&&t.generation===e.generation);return t.length>0?[...t]:[{directory:e.resolvedDirectory,sessionID:e.sessionID,transport:e.transport,generation:e.generation}]}function mj(e){return!e.idleSessionID||!e.directory||e.directory===`global`?{action:`none`}:e.parentID?{action:`materialize-parent`,sessionID:e.parentID}:e.idleSessionID===e.activeSessionID&&e.directory===e.activeDirectory?{action:`materialize-now`,sessionID:e.idleSessionID}:{action:`defer-until-viewed`,sessionID:e.idleSessionID}}var hj=new Set,gj=(e,t)=>`${e}\n${t}`;function _j(e,t){!e||e===`global`||!t||hj.add(gj(e,t))}function vj(e,t){let n=gj(e,t);return hj.has(n)?(hj.delete(n),!0):!1}var yj=(e,t)=>{if(e.type!==`session.created`&&e.type!==`session.updated`&&e.type!==`session.deleted`)return null;let n=e.properties;if(!n||typeof n!=`object`)return null;let r=n.info;if(!r||typeof r!=`object`)return null;let i=r;if(typeof i.id!=`string`||!i.time)return null;let a=op(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},bj=e=>{let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},xj=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},Sj=(e,t)=>{if(e.type===`session.created`||e.type===`session.updated`){let n=yj(e,t);if(n){let e=bj(n.id);(!e||xj(e)!==xj(n))&&!gA(e,n)&&Y.getState().upsertSession(n)}return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??yj(e)?.id;t&&Y.getState().removeSessions([t])}};function Cj(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function wj(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function Tj(e,t){let n=new Set;for(let[t,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&n.add(t);let r=new Set;for(let t of e.session){let e=t.parentID;e&&r.add(e)}for(let e of r)n.add(e);let i=t?.viewedSession;if(i?.sessionId&&i.directory===t?.directory){let t=i.sessionId;(e.session.some(e=>e.id===t)||Object.hasOwn(e.session_status??{},t))&&n.add(t)}return Array.from(n)}var Ej=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},Dj=(e,t,n)=>{let r=n??Ej(t),i=[],a=new Set,o=e;for(;o&&!a.has(o);)a.add(o),i.push(o),o=r.get(o)?.parentID;return i},Oj=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e;if(Object.keys(t).length===0)return!1;let a=Dj(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!1},kj=t({usePermissionStore:()=>Nj}),Aj=async e=>{if(!e.ok)throw Error(`Permission auto-accept request failed (${e.status})`);let t=await e.json();if(!t.sessions||typeof t.sessions!=`object`)throw Error(`Invalid permission auto-accept response`);let n={};for(let[e,r]of Object.entries(t.sessions))e&&typeof r==`boolean`&&(n[e]=r);return{sessions:n}},jj=async(e,t)=>Aj(await F(e,t)),Mj=(e,t,n)=>Oj({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),Nj=Oe()(ke((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await jj(`/api/permission-auto-accept`),r=Object.entries(t().autoAccept).filter(([e,t])=>!e.includes(`/`)&&typeof t==`boolean`);if(Object.keys(n.sessions).length===0&&r.length>0)for(let[e,t]of r)!e||typeof t!=`boolean`||(n=await jj(`/api/permission-auto-accept/sessions/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:t})}));e({autoAccept:n.sessions,loaded:!0})},reset:()=>{e({autoAccept:{},loaded:!1,saving:!1})},applySnapshot:t=>{let n={};for(let[e,r]of Object.entries(t.sessions??{}))e&&typeof r==`boolean`&&(n[e]=r);e({autoAccept:n,loaded:!0})},isSessionAutoAccepting:e=>{if(!e)return!1;let n=t().autoAccept;return Object.keys(n).length!==0&&Mj(n,Nd(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(v()){let r=await F(`/api/notifications/auto-accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:t,enabled:n})});if(!r.ok)throw Error(`Permission auto-accept request failed (${r.status})`);e(e=>({autoAccept:{...e.autoAccept,[t]:n},loaded:!0}));return}e({saving:!0});try{let r=$.getState().getDirectoryForSession(t)??z.getDirectory()??void 0;e({autoAccept:(await jj(`/api/permission-auto-accept/sessions/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:n,directory:r})})).sessions,loaded:!0})}finally{e({saving:!1})}}}}),{name:`permission-store`,storage:h(),partialize:e=>({autoAccept:e.autoAccept})})),Pj=Oe(()=>({statusById:new Map})),Fj=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,Ij=e=>Jo(e)??e,Lj=(e,t,n)=>{Pj.setState(r=>{let i=r.statusById.get(e);if(n===`idle`){if(!i)return r;let t=new Map(r.statusById);return t.delete(e),{statusById:t}}if(i&&i.status===n&&i.directory===t)return r;let a=new Map(r.statusById);return a.set(e,{status:n,directory:t}),{statusById:a}})},Rj=(e,t)=>{switch(t.type){case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=Fj(n.status?.type);Lj(n.sessionID,Ij(e),r);return}case`session.idle`:case`session.error`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&Lj(n.sessionID,Ij(e),`idle`);return}default:return}},zj=(e,t,n)=>{let r=Ij(e),i=new Set(n??[]);Pj.setState(e=>{let n=!1,a=new Map(e.statusById);for(let[o,s]of e.statusById)(s.directory===r||i.has(o))&&!(o in t)&&(a.delete(o),n=!0);for(let[e,i]of Object.entries(t)){let t=Fj(i?.type),o=a.get(e);if(t===`idle`){o&&o.directory===r&&(a.delete(e),n=!0);continue}(!o||o.status!==t||o.directory!==r)&&(a.set(e,{status:t,directory:r}),n=!0)}return n?{statusById:a}:e})},Bj=e=>typeof e==`string`&&e.trim().length>0;function Vj(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function Hj(e,t){return ft(dt.getState().dictionary,e,t)}function Uj(e,t=`missing-directory`){let n=Bj(e)?Vj(e):null;if(t===`missing-session-id`||!n){pT.error(Hj(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){pT.error(Hj(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}pT.error(Hj(`sessions.toast.openFailed`,{sessionId:n}))}function Wj(e,t,n={}){let r=n.notify!==!1;if(!Bj(e))return r&&Uj(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!Bj(t))return r&&Uj(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Ge()?(FU.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!p.getState().setActiveMainTab(`chat`)?(r&&Uj(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var Gj=null,Kj=e=>{Gj=e},qj=(e,t)=>typeof Gj==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(Gj(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):Wj(e,t,{switchToChat:!0}),Jj=(e,t)=>!e||!t?null:`${e}:${t}`,Yj=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=Jj(e.sessionID,e.id);if(n||!o||r.has(o))return!1;r.add(o);let s=typeof e.permission==`string`&&e.permission.trim().length>0?e.permission:`Agent needs your approval`;return i(`Permission needed`,{id:`permission-${o}`,description:s,action:{label:`Open session`,onClick:()=>a(e.sessionID,t)}}),!0},Xj=15e3,Zj=new Map,Qj=(e,t)=>`${e}\n${t}`;function $j(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of Zj)n.expiresAt<=t&&Zj.delete(e);Zj.set(Qj(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+Xj})}function eM(e,t){let n=Zj.get(Qj(e,t));return n?n.expiresAt<=Date.now()?(Zj.delete(Qj(e,t)),null):n:null}var tM=[],nM=[],rM=[],iM={sessionID:``,revertMessageID:void 0,records:nM,history:rM},aM=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},oM=e=>{for(let t of e){let e=aM(t);if(e.length>0)return e}return``},sM=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]?.message!==t[n]?.message||e[n]?.parts!==t[n]?.parts)return!1;return!0},cM=(e,t=iM)=>{let n=e.sessionID;if(!n)return iM;let r=e.messages,i=e.revertMessageID,a=[];for(let t=r.length-1;t>=0;--t){let n=r[t];n.role===`user`&&(i&&ds(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??tM}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:nM,history:rM};if(t.sessionID===n&&t.revertMessageID===i&&sM(t.records,a))return t;let o=[];for(let e of a){let t=oM(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function lM(e,t){let n=e.getChild(t.directory)?.getState();if(!n)return`unknown`;let r=n.session_status?.[t.sessionID];return r?r.type:n.session_status_snapshot_at===void 0?`unknown`:`idle`}function uM(e,t){return t.map(t=>{let n=e.getChild(t.directory)?.getState();return`${t.directory}\n${t.sessionID}\n${n?.session_status?.[t.sessionID]?.type??``}\n${n?.session_status_snapshot_at??``}`}).join(`\0`)}function dM(e,t,n){let r=new Map,i=new Map;for(let e of t){let t=i.get(e.directory)??[];t.push(e),i.set(e.directory,t)}let a=()=>{let t=!1;for(let[n,a]of r)i.has(n)&&e.getChild(n)||(a(),r.delete(n),t=!0);for(let[a,o]of i){if(r.has(a))continue;let i=e.getChild(a);i&&(r.set(a,i.subscribe((e,t)=>{for(let r of o)if(e.session_status?.[r.sessionID]!==t.session_status?.[r.sessionID]||e.session_status_snapshot_at!==t.session_status_snapshot_at){n();return}})),t=!0)}return t};a();let o=e.subscribeRegistry(()=>{a()&&n()});return()=>{o();for(let e of r.values())e();r.clear()}}function fM(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function pM(e,t,n,r){if(!t||t.id!==e||!t.parentID)return null;let i=t.parentID,a=n?.id===i?n??null:null;return{id:i,directory:a?.directory??t.directory??r??null,session:a}}var mM=Me(),hM=`__openchamber_sync_context__`,gM=globalThis,_M=gM[hM]??(0,W.createContext)(null);gM[hM]=_M;function vM(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function yM(e,t){if(!e.error)return e.data;let n=e.response?.status;throw Error(`${t} failed${n?` (${n})`:``}: ${vM(e.error)}`)}function bM(){let e=(0,W.useContext)(_M);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function xM(e){return Array.from(e.children.values(),e=>e.getState())}function SM(e,t,n){let r=(0,V.c)(7),i=t===void 0?Object.is:t,{childStores:a}=bM(),o=(0,W.useRef)(void 0),s=(0,W.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(xM(a));return s.current&&i(o.current,t)?o.current:(o.current=t,s.current=!0,t)},r[0]=a,r[1]=i,r[2]=e,r[3]=c):c=r[3];let l=c,u;return r[4]!==a||r[5]!==n?(u=e=>n?n(a,e):a.subscribeAll(e),r[4]=a,r[5]=n,r[6]=u):u=r[6],W.useSyncExternalStore(u,l,l)}function CM(e){let t=(0,V.c)(4),n;t[0]===e?n=t[1]:(n=t=>ej(t,e),t[0]=e,t[1]=n);let r;return t[2]===e?r=t[3]:(r=(t,n)=>t.subscribeAllSelected(t=>t.session_status?.[e],n),t[2]=e,t[3]=r),SM(n,Object.is,r)}function wM(e){let t=(0,V.c)(5),n=CM(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=Pj(r),a;return t[2]!==i||t[3]!==n?(a=TM(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function TM(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var EM=[],DM={};function OM(e){let t=(0,V.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?QA(e):DM,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(kM,t):AM,t[2]=n,t[3]=i),SM(r,XA,i)}function kM(e){return e.session_status}function AM(){}function jM(e){let t=(0,V.c)(5),n=e?.enabled??!0,r=Y(PM),i;t[0]!==n||t[1]!==r?(i=e=>n?ZA(e,r):EM,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===n?a=t[4]:(a=(e,t)=>n?e.subscribeAllSelected(MM,t):NM,t[3]=n,t[4]=a),SM(i,YA,a)}function MM(e){return e.session}function NM(){}function PM(e){return e.pendingDeletionIds}var FM=!1,IM=0,LM=0,RM=1500,zM=new Set([`patch`,`step-start`,`step-finish`]),BM=5e3,VM=4e4,HM=15e3,UM=6e4,WM=6e4,GM=e=>!e||e.length===0?``:e.map(e=>e.id).sort(KM).join(`|`),KM=(e,t)=>e<t?-1:+(e>t),qM=e=>JSON.stringify(e);function JM(e,t){return qM(e)===qM(t)}var YM=5e3,XM=new Map,ZM=(e,t)=>`${e}:${t}`;function QM(e,t){try{let n=H();return n?wl(n.getTranscript(U(e,t))):!1}catch{return!1}}async function $M(e,t){try{if(!H())return;await wu(e,t)}catch{}}function eN(e,t,n,r){if(!e||e===`global`||!t)return;let i=ZM(e,t),a=XM.get(i);if(a&&Date.now()-a.enqueuedAt<YM){Promise.resolve().then(()=>{QM(e,t)&&$M(e,t)});return}XM.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){XM.delete(i);return}try{await nN(e,t,a,r)}catch{}finally{XM.delete(i)}})}function tN(e,t,n){let r=t.admissionHint?.sessionID??t.domainActivityHint?.sessionID??(typeof t.properties.sessionID==`string`?t.properties.sessionID:void 0);if(!(!r||!e||e===`global`)){if(t.domainActivityHint?.kind===`activity`){let t=n.getChild(e);t&&xb(t,r)}t.domainActivityHint?.kind===`terminal`&&r===iN&&e===rN&&eN(e,r,n,{reason:`session-idle`})}}async function nN(e,t,n,r){let i=n.getState().session_status?.[t];vs.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return H()?.getTranscript(U(e,t)).liveRevision}catch{return}},o=a(),s=await Qy({directory:e,sessionID:t,limit:Jm(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=eb({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:zM});return QM(e,t)&&await $M(e,t),c.applied?(Hb({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||i&&i.type!==`idle`&&!r?.isStale?.()&&await Tb(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var rN=``,iN=``,aN=null,oN=``,sN=``,cN=new Map,lN=15e3,uN=(e,t)=>`${e}\n${t}`;function dN(e=Date.now()){for(let[t,n]of cN.entries())n<=e&&cN.delete(t)}var fN=new Set,pN=new Set,mN=(e,t)=>!e||!t?null:`${e}:${t}`,hN=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},gN=(e,t)=>{if(e.type!==`openchamber:notification`)return!1;let n=e.properties;if(!n||typeof n!=`object`)return!0;let r=n;if((r.desktopNotificationDelivered===!0||r.desktopStdoutActive===!0)&&i()===`local`)return!0;let a=Te()?.notifications;return a?.notifyAgentCompletion&&a.notifyAgentCompletion({title:hN(r.title),body:hN(r.body),tag:hN(r.tag),kind:hN(r.kind),sessionId:hN(r.sessionId),directory:hN(r.directory)??(t&&t!==`global`?t:void 0),requireHidden:r.requireHidden===!0}).catch(e=>{console.warn(`[notifications] failed to dispatch UI notification`,e)}),!0};function _N(e,t){!e||!t||!aN||vj(e,t)&&eN(e,t,aN,{reason:`session-idle`})}function vN(e){aN=e,e&&_N(rN,iN)}function yN(e,t){rN=e,iN=t,_N(e,t)}function bN(e,t,n){if(!e||!t)return;let r=uN(e,t);if(!n){cN.delete(r);return}cN.set(r,Date.now()+lN)}function xN(e,t){if(!e||!t){oN=``,sN=``;return}oN=e,sN=t}function SN(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=uN(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(oN,sN),n(rN,iN),e}function CN(){return typeof document<`u`&&document.hasFocus()}function wN(e,t){return t?rN&&iN&&e===rN&&t===iN&&CN()?!0:(dN(),cN.has(uN(e,t))):!1}function TN(){return FM||Date.now()-IM<RM}function EN(e){return!rN||!iN||e!==rN?null:{directory:rN,sessionId:iN}}function DN(e,t){return Tj(t,{directory:e,viewedSession:EN(e)})}function ON(e,t,n,r=VM,i=HM){return!(e<=0||n-e<r||n-t<i)}function kN({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=VM,domainStaleThresholdMs:s=UM,recoveryCooldownMs:c=WM}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var AN=v(),jN=(e,t)=>{!AN||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},MN=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),NN=e=>{if(!e||e===`global`)return e;let t=e.replace(/\\/g,`/`).replace(/^([a-z]):/,(e,t)=>t.toUpperCase()+`:`);return t.length>1?t.replace(/\/+$/,``):t},PN=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.sessionID;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`session.status`||e.type===`session.idle`||e.type===`session.error`||e.type===`todo.updated`||e.type===`permission.asked`||e.type===`permission.replied`||e.type===`question.asked`||e.type===`question.replied`||e.type===`question.rejected`||e.type===`session.deleted`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`message.part.updated`){let e=n.sessionID;if(typeof e==`string`&&e.length>0)return e;let t=n.part;if(!t||typeof t!=`object`)return null;let r=t.sessionID;return typeof r==`string`&&r.length>0?r:null}if(e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`session.created`||e.type===`session.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}return null},FN=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.messageID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`message.part.updated`){let e=n.part;if(!e||typeof e!=`object`)return null;let t=e.messageID;return typeof t==`string`&&t.length>0?t:null}return null},IN=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},LN=(e,t,n,r)=>{if(!t)return;IN(e,t,n);let i=e.sessionMessageIdsById.get(t),a=new Set;for(let n of r)n?.id&&(a.add(n.id),e.messageSessionById.set(n.id,t));if(i)for(let t of i)a.has(t)||e.messageSessionById.delete(t);e.sessionMessageIdsById.set(t,a)},RN=(e,t,n,r)=>{if(!t||!n)return;IN(e,t,r),e.messageSessionById.set(n,t);let i=e.sessionMessageIdsById.get(t);i?i.add(n):e.sessionMessageIdsById.set(t,new Set([n]))},zN=(e,t,n)=>{if(!t)return;let r=n??e.messageSessionById.get(t);if(e.messageSessionById.delete(t),!r)return;let i=e.sessionMessageIdsById.get(r);i&&(i.delete(t),i.size===0&&e.sessionMessageIdsById.delete(r))},BN=(e,t)=>{if(!t)return;e.sessionDirectoryById.delete(t);let n=e.sessionMessageIdsById.get(t);if(n)for(let t of n)e.messageSessionById.delete(t);e.sessionMessageIdsById.delete(t)},VN=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),IN(e,i.id,t));try{let n=H(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),IN(e,a.scope.sessionID,t);let i=n?.getTranscript?.(U(t,a.scope.sessionID));if(i){let n=Wu(i);LN(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||BN(e,n))},HN=(e,t,n)=>{for(let[r,i]of t.children){let t=i.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e))return IN(n,e,r),r}try{let t=H()?.getCacheBudget?.().listCanonical()?.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory)??[],r=[...new Set(t)];if(r.length===1){let t=r[0];return IN(n,e,t),t}}catch{}return null},UN=(e,t,n)=>{let r=e.getChild(t);if(!r)return!1;let i=r.getState();if(i.session.some(e=>e.id===n)||Object.prototype.hasOwnProperty.call(i.session_status??{},n))return!0;try{return(H()??vu(t,r)).hasSession?.(U(t,n))??!1}catch{return!1}},WN=(e,t,n)=>{try{let e=H();if(e&&e.getParts(U(t,n),n).length>0)return!0}catch{}return!1},GN=e=>!rN||!iN?null:e.getChild(rN)?rN:null,KN=(e,t,n,r)=>{let i=NN(t),a=PN(n);if(a){if(i&&i!==`global`&&UN(r,i,a))return IN(e,a,i),i;let t=e.sessionDirectoryById.get(a);if(t&&r.getChild(t))return t;let n=HN(a,r,e);if(n)return n}let o=FN(n);if(o){if(i&&i!==`global`&&WN(r,i,o))return i;let t=e.messageSessionById.get(o);if(t){let n=e.sessionDirectoryById.get(t);if(n&&r.getChild(n))return n}if(WN(r,i,o))return i;for(let[e]of r.children)if(WN(r,e,o))return e;let n=GN(r);if(n)return n}if((a||o)&&(!i||i===`global`)&&r.children.size===1){let e=r.children.keys().next().value;if(typeof e==`string`&&e.length>0)return e}return i},qN=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===rN&&iN)return iN};function JN(e,t){let n=PN(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=FN(e);return r?t.get(r):void 0}function YN(e,t){return e===t}var XN=e=>e.type===`session.created`||e.type===`session.updated`||e.type===`session.deleted`||e.type===`message.updated`||e.type===`message.removed`||e.type===`message.part.updated`||e.type===`message.part.removed`||e.type===`message.part.delta`,ZN=(e,t,n)=>{if(!t||t===`global`)return;let r=PN(n);switch(r&&IN(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&IN(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&BN(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&RN(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&zN(e,t.messageID,t.sessionID);return}case`message.part.updated`:{let r=n.properties,i=r.part,a=i?.sessionID??r.sessionID,o=i?.messageID;o&&a&&RN(e,a,o,t);return}default:return}};async function QN(e,t,n){let r=t.getState(),i=new Set([...r.session.map(e=>e.id),...Object.keys(r.session_status??{}),...Object.keys(r.question??{}),...Object.keys(r.permission??{})]),a=n??Array.from(i);if(a.length!==0){try{let n=new Map(a.map(e=>[e,GM(r.question[e])])),o=await z.listPendingQuestions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));for(let[t,n]of Object.entries(s)){let i=new Set((r.question[t]??[]).map(e=>e.id));if(!wN(e,t))for(let r of n){if(i.has(r.id))continue;let n=mN(t,r.id);if(!n||fN.has(n))continue;fN.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;pT.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>qj(t,e)}})}}t.setState(e=>{let t={...e.question};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;GM(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,GM(r.permission[e])])),o=await z.listPendingPermissions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));let c=Nj.getState(),l=v()?Object.keys(s).filter(e=>c.isSessionAutoAccepting(e)):[];if(l.length>0){let e=new Map,t=new Map;await Promise.all(l.flatMap(n=>(s[n]??[]).map(async r=>{try{let i=await z.fetchPermission(r.sessionID,r.id);if(i.state===`ok`){await JS(r.sessionID,r.id,`once`);let t=e.get(n)??new Set;t.add(r.id),e.set(n,t)}else if(i.state===`resolved`){let e=t.get(n)??new Set;e.add(r.id),t.set(n,e)}}catch{}})));for(let n of l){let r=e.get(n),i=t.get(n);if(!r&&!i)continue;let a=e=>r?.has(e)||i?.has(e)||!1,o=(s[n]??[]).filter(e=>!a(e.id));o.length>0?s[n]=o:delete s[n]}}for(let[t,n]of Object.entries(s)){let i=new Set((r.permission[t]??[]).map(e=>e.id)),a=wN(e,t);if(!a)for(let t of n)i.has(t.id)||Yj({permission:t,directory:e,isViewed:a,pendingIds:pN,show:(e,t)=>pT.info(e,t),openSession:qj})}t.setState(e=>{let t={...e.permission};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;GM(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function $N(e,t,n){n?.statusOnly}function eP(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function tP(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function nP(e,t,n,r,i,a){let o=DN(e,t.getState());await Tb(e,t,o);let s=wj(DN(e,t.getState()),{directory:e,viewedSession:EN(e)});if(s.length>0){let a=z.getScopedSdkClient(e);await Promise.all(s.map(async o=>{let s=i(o);vs.recovery.materializing({reason:r,directory:e,sessionID:o});let c=(await Qf(async()=>{let e=await a.session.get({sessionID:o});return yM(e,`session.get`),e}).catch(()=>null))?.data;if(c&&YN(s,i(o))){let r=op(c);t.setState(e=>{let t=e.session.findIndex(e=>e.id===r.id),n=e.session,i=!1,a=e.sessionTotal;return t>=0?JM(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>KM(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),IN(n,r.id,e)}let l=i(o),u=t.getState(),d=u.session_status?.[o],f=u.session_status_observed_at?.[o],p=()=>!YN(l,i(o)),m=l;try{let r=await Qy({directory:e,sessionID:o,limit:Jm(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(p()||!eb({directory:e,sessionID:o,purpose:`recovery`,page:r,capturedLiveRevision:m,liveRevision:i(o),skipPartTypes:zM}).applied)return;let a=_u().getTranscript(U(e,o));LN(n,o,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),Hb({directory:e,sessionID:o,store:t,transcript:a,isStale:p}),await Eb({directory:e,sessionID:o,store:t,statusBeforePull:d,statusObservedAtBeforePull:f,hasMessages:a.messageOrder.length>0,isStale:p})}catch{}}))}let c=tP(a);c.resyncBlockingRequests&&await QN(e,t,o),c.ingestRoutingIndex&&VN(n,e,t.getState())}function rP(e){try{let t=H(),n=r(),i=s();return t?.getCacheBudget?.().listCanonical({transport:n,generation:i})?.filter(t=>t.scope.sessionID===e).map(e=>U(e.scope.directory,e.scope.sessionID,{transport:e.scope.transport,generation:e.scope.generation}))??[]}catch{return[]}}function iP(e){let t=PN(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var aP=null,oP=0;function sP(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function cP(){oP===0&&(aP={byScope:new Map,routing:[],debug:[]}),oP+=1}function lP(){if(oP===0||(--oP,oP>0))return;let e=aP;if(aP=null,e)try{for(let t of e.byScope.values()){let n=bu(t.scope,{type:`sse-event-batch`,events:t.events})??{applied:!1,changed:!1};if(n.changed)for(let n of e.debug)n.transcriptSessionID===t.transcriptSessionID&&(n.changed=!0);let r=n.materialization;if(r){let e=t.eventMessageIDs.find(e=>typeof e==`string`),n=qN(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&eN(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?vs.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):vs.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)ZN(t.routingIndex,t.resolvedDirectory,t.payload)}finally{aP=null,oP=0}}function uP(e,t,n,i,a,o){let c=pj({sessionID:t,resolvedDirectory:n,transport:r(),generation:s(),listCanonicalScopes:rP});if(aP){for(let n of c){let r=sP(n),s=aP.byScope.get(r);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:a,routingIndex:o},aP.byScope.set(r,s)),s.events.push(e),s.eventMessageIDs.push(i)}aP.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:i,changed:!1}),aP.routing.push({routingIndex:o,resolvedDirectory:n,payload:e});return}let l=!1;for(let n of c){let r=bu(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};r.changed&&(l=!0);let s=r.materialization;if(s){let e=qN(s.sessionID??t,s.messageID??i,n.directory,o);e&&eN(n.directory,e,a,{reason:s.reason,messageID:s.messageID,partID:s.partID})}}l?vs.dispatch.eventApplied(e.type,t,i):vs.dispatch.eventNoChange(e.type,t,i),ZN(o,n,e)}function dP(e,t,n,r){if(t.type===`openchamber:worktree-bootstrap-status`){let e=t.properties;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e,n=typeof t.directory==`string`?t.directory:``;n&&QD(n,{status:t.status,error:typeof t.error==`string`?t.error:null,updatedAt:typeof t.updatedAt==`number`?t.updatedAt:Date.now()})}return}if(t.type===`openchamber:permission-auto-accept.updated`){let e=t.properties;if(e&&typeof e==`object`){let t=e;t.sessions&&typeof t.sessions==`object`&&Nj.getState().applySnapshot({sessions:t.sessions})}return}let i=KN(r,e,t,n);if(gN(t,i))return;if(Sj(t,i),Rj(i,t),i===`global`||!i){if(Ol(t.type)){let e=iP(t);if(e){uP(t,e,i||`global`,FN(t)??void 0,n,r);return}}let e=TN(),a=vA(t);if(!a)return;if(a.type===`refresh`)e||TA.setState({reload:`pending`});else if(a.type===`project`){let e=TA.getState();TA.setState({projects:yA(e,a.project).projects})}if((t.type===`server.connected`||t.type===`global.disposed`)&&!e)for(let e of n.children.keys()){let t=n.getChild(e);t&&t.getState().status!==`loading`&&(t.setState({status:`loading`,session_status_snapshot_at:void 0}),n.ensureChild(e))}return}let a=n.getChild(i),o=i;if(!a){let e=PN(t);if(e){let t=HN(e,n,r);t&&(a=n.getChild(t),o=t)}}if(!a){if(Ol(t.type)){let e=iP(t);if(e){uP(t,e,o,FN(t)??void 0,n,r);return}}let e=vA(t);if(e?.type===`refresh`)TA.setState({reload:`pending`});else if(e?.type===`project`){let t=TA.getState();TA.setState({projects:yA(t,e.project).projects})}return}if(n.mark(o),t.type===`permission.asked`){let e=t.properties;if(Nj.getState().isSessionAutoAccepting(e.sessionID)){ZN(r,o,t),v()&&JS(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=a.getState().session.find(t=>t.id===e.sessionID)??Y.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=wN(o,e.sessionID);Yj({permission:e,directory:o,isViewed:t,pendingIds:pN,show:(e,t)=>pT.info(e,t),openSession:qj})}}if(t.type===`permission.replied`){let e=t.properties,n=Jj(e.sessionID,e.requestID);n&&(pN.delete(n),pT.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=t.properties,n=e.sessionID,r=a.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=mN(n,e.id);if(!wN(o,n)&&t&&!fN.has(t)){fN.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;pT.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>qj(n,o)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=mN(e.sessionID,e.requestID);n&&(fN.delete(n),pT.dismiss(`question-${n}`))}if(t.type===`session.idle`){let e=t.properties.sessionID,n=a.getState().session.find(t=>t.id===e)??Y.getState().activeSessions.find(t=>t.id===e);e&&n&&!n.parentID&&kk({directory:o,session:e,time:Date.now(),viewed:wN(o,e),type:`turn-complete`})}if(t.type===`session.idle`){let e=PN(t);if(e&&o&&o!==`global`){let t=a.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=mj({idleSessionID:e,directory:o,parentID:r,activeSessionID:iN,activeDirectory:rN});i.action===`materialize-parent`?eN(o,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?eN(o,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&_j(o,i.sessionID)}}let s=a.getState(),c=PN(t)??void 0,l=FN(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;Qb(o,e)}if((t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&ix(o,c,l))return;if(Ol(t.type)){let e=iP(t);if(!e){ZN(r,o,t);return}uP(t,e,o,l,n,r);return}let u={...s};switch(t.type){case`session.created`:case`session.updated`:case`session.deleted`:u.session=[...s.session],u.session_status_observed_at={...s.session_status_observed_at},u.permission={...s.permission},u.todo={...s.todo};break;case`session.diff`:u.session_diff={...s.session_diff};break;case`session.status`:case`session.idle`:case`session.error`:u.session_status={...s.session_status??{}},u.session_status_observed_at={...s.session_status_observed_at};break;case`todo.updated`:u.todo={...s.todo};break;case`vcs.branch.updated`:break;case`permission.asked`:case`permission.replied`:u.permission={...s.permission};break;case`question.asked`:case`question.replied`:case`question.rejected`:u.question={...s.question};break;case`lsp.updated`:u.lsp=[...s.lsp]}let d=CA(u,t,{onSetSessionTodo:(e,t)=>{kb.getState().setSessionTodos(e,t)},now:Date.now}),f=typeof d==`boolean`?d:d.changed,p=typeof d==`boolean`?void 0:d.materialization;if(f){a.setState(u);let e=PN(t)??void 0,n=FN(t)??void 0;vs.dispatch.eventApplied(t.type,e,n)}else{let e=PN(t)??void 0,n=FN(t)??void 0;vs.dispatch.eventNoChange(t.type,e,n)}if(p){let e=qN(p.sessionID??PN(t)??void 0,p.messageID??FN(t)??void 0,o,r);e&&eN(o,e,n,{reason:p.reason,messageID:p.messageID,partID:p.partID})}ZN(r,o,t)}var fP=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},pP=null,mP=async()=>{let e=i();return(!pP||pP.runtimeKey!==e)&&(pP={runtimeKey:e,promise:F(`/api/config/opencode-resolution`,{signal:AbortSignal.timeout(4e3)}).then(async e=>{if(e.ok){let t=await e.json();return t.source===`bundled`||t.detectedSourceNow===`bundled`}let t=await F(`/health`,{signal:AbortSignal.timeout(4e3)});return t.ok?(await t.json()).opencodeBinarySource===`bundled`:!1}).catch(()=>!1)}),pP.promise},hP=e=>{typeof window>`u`||mP().then(t=>{t||fP(e)})};function gP(e,t,n){return e!==t||n!==!1}function _P(e){let t=G(e=>e.settingsMessageStreamTransport),n=(0,W.useRef)(null);n.current||=new BA;let a=n.current,o=(0,W.useRef)(null);o.current||=MN();let c=o.current,l=(0,W.useRef)(0),u=(0,W.useRef)(new Map),f=(0,W.useRef)(new Map),p=(0,W.useRef)(new Map),m=(0,W.useRef)(new Set),h=(0,W.useRef)(null),g=(0,W.useRef)(!1),_=(0,W.useRef)(!1),y=(0,W.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});y.current={directory:e.directory,enabled:e.bootstrapDirectory};let b=e=>{let t=y.current;return gP(e,t.directory,t.enabled)},x=(0,W.useMemo)(()=>({childStores:a,sdk:e.sdk,directory:e.directory}),[a,e.sdk,e.directory]);(0,W.useEffect)(()=>(vN(a),()=>{vN(null)}),[a]);let S=(0,W.useCallback)((e,t,n)=>{if($N(e,a.children.get(e),n),!b(e))return;let r=a.children.get(e);if(!r)return;let i=m.current;i.has(e)||(n?.statusOnly||p.current.set(e,Date.now()),i.add(e),nP(e,r,c,t,t=>f.current.get(uN(e,t))??0,n).catch(()=>{}).finally(()=>{i.delete(e)}))},[a,c]);(0,W.useEffect)(()=>{v()||Nj.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,W.useEffect)(()=>{let t=new Set;a.configure({onBootstrap:n=>{if(!b(n)||t.has(n))return;t.add(n);let r=a.getChild(n);r&&(async()=>{if(await Xt(),!b(n))return;let t=TA.getState();await cj({directory:n,sdk:e.sdk,getState:()=>r.getState(),set:e=>{r.setState(e),e.session&&VN(c,n,r.getState())},global:{config:t.config,projects:t.projects}})})().finally(()=>{t.delete(n)})},onDispose:e=>{t.delete(e)},isBooting:e=>t.has(e),isLoadingSessions:()=>!1})},[a,e.sdk,c]),(0,W.useEffect)(()=>{let t=++LM;FM=!0;let n=TA.getState().actions;return Xt().then(()=>{if(LM===t)return sj(e.sdk,e=>{LM===t&&n.set(e)})}).then(()=>{LM===t&&(IM=Date.now())}).finally(()=>{LM===t&&(FM=!1)}),()=>{LM===t&&(FM=!1)}},[e.sdk]),(0,W.useEffect)(()=>{let n=dA({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>KN(c,e,t,a),onFlushStart:()=>{cP()},onFlushEnd:()=>{lP()},onNormalizedEvent:(e,t)=>{tN(e,t,a);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===rN&&n===iN&&(t.domainActivityHint||t.admissionHint)&&u.current.set(uN(e,n),Date.now())},onEvent:(e,t)=>{let n=JN(t,c.messageSessionById)??null;if(n&&XN(t)){let t=uN(e,n);f.current.set(t,(f.current.get(t)??0)+1)}if(n&&e===rN&&n===iN&&(t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&u.current.set(uN(e,n),Date.now()),n&&e===rN&&n===iN&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=uN(e,n);u.current.has(t)||u.current.set(t,Date.now())}r?.type===`idle`&&u.current.delete(uN(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&u.current.delete(uN(e,n)),jN(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&hP({version:e})}dP(e,t,a,c)},onTransportActivity:()=>{let e=Date.now();l.current=e,Dm(e)},onReconnect:()=>{G.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!g.current;g.current=!0;let t=eP({isFirstConnect:e,disconnectedBeforeFirstConnect:_.current});for(let e of a.children.keys())S(e,`stream-reconnect`,{statusOnly:t})},onDisconnect:e=>{g.current||(_.current=!0);let{hasEverConnected:t}=G.getState();G.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{Au({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{ju(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=G.getState();G.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of a.children.keys())S(e,`transport-switch`)}});h.current=n.reconnect;let r=Om(n.reconnect);return()=>{r(),h.current===n.reconnect&&(h.current=null),n.cleanup()}},[e.sdk,a,c,t,S]),(0,W.useEffect)(()=>{let e=!1,t=!1,n=()=>{t||e||(t=!0,Promise.resolve().then(()=>{if(e)return;let t=Date.now();for(let[e,n]of a.children.entries()){let r=n.getState();if(Cj(r).length===0){p.current.delete(e);continue}let i=p.current.get(e)??0;ON(l.current,i,t)&&(h.current?.(`active_stream_stale`),S(e,`stale-status-resync`));let a=EN(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=uN(e,a.sessionId),c=u.current.get(s);if((o?.type===`busy`||o?.type===`retry`)&&!c){u.current.set(s,t);continue}if(o?.type===`idle`||!o){u.current.delete(s);continue}kN({isViewed:!0,status:o,lastTransportActivityAt:l.current,lastDomainActivityAt:c??0,lastFullResyncAt:i,now:t})&&S(e,`domain-stale-resync`)}}).finally(()=>{t=!1}))},r=setInterval(n,BM);return n(),()=>{e=!0,clearInterval(r)}},[a,S]),(0,W.useEffect)(()=>{let t;if(e.directory){let n=a.ensureChild(e.directory,{bootstrap:gP(e.directory,e.directory,e.bootstrapDirectory)}),r=eM(i(),e.directory);r&&(n.setState(e=>({session_status:{...e.session_status,[r.sessionId]:e.session_status[r.sessionId]??r.status}})),t=setTimeout(()=>{n.setState(e=>e.session_status[r.sessionId]===r.status?{session_status:{...e.session_status,[r.sessionId]:{type:`idle`}}}:e)},Xj)),VN(c,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,a,c]);let C=(0,W.useRef)(null),w=(0,W.useRef)({transport:r(),generation:s()});return(0,W.useEffect)(()=>{if(C.current)return;let e=$y({childStores:a,getViewedSession:()=>SN()[0]??null,getViewedSessions:()=>SN()});return C.current=e,w.current={transport:r(),generation:s()},()=>{let e=w.current;Nu(`provider-dispose`);let t=C.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),C.current?.destroy(),C.current=null}},[a]),(0,W.useEffect)(()=>(wd(e.sdk,a,e.directory,(e,t)=>{IN(c,e,t)}),gx(e.sdk,a,()=>z.getDirectory()||e.directory),_b((e,t,n)=>{let r=new Set(n),i=Jo(e)??e,a={...t};for(let[e,t]of Pj.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});zj(e,a,n)}),()=>{_b(void 0)}),[e.sdk,e.directory,a,c]),(0,W.useEffect)(()=>d(e=>{if(!e.transportIdentityChanged){w.current={transport:r(),generation:s()};return}let t=w.current;Nu(`runtime-switch`);let n=C.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),w.current={transport:r(),generation:s()}}),[]),(0,W.useEffect)(()=>{if(!e.directory)return;let t=a.getChild(e.directory);if(!t)return;let n=e.directory,r=()=>{fj(t.getState(),{directory:n,store:t})};r();let i=t.subscribe(()=>{r()}),o=[],s=()=>{for(let e of o)e();o=[];let e=H()??vu(n,t),i=t.getState().session_status??{};for(let[t,a]of Object.entries(i))!a||a.type===`idle`||o.push(e.subscribe(U(n,t),r));r()};s();let c=pu(s);return()=>{c(),i();for(let e of o)e()}},[e.directory,a]),(0,mM.jsx)(_M.Provider,{value:x,children:e.children})}function vP(e,t){let n=(0,V.c)(4),r=bM(),i=e??r.directory,a;return n[0]!==i||n[1]!==t||n[2]!==r.childStores?(a=r.childStores.ensureChild(i,t),n[0]=i,n[1]=t,n[2]=r.childStores,n[3]=a):a=n[3],a}function yP(e,t){let n=vP(t);return Ae(n,e)}function bP(e){let{childStores:t}=bM(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,W.useRef)(e);r.current=e;let i=(0,W.useCallback)(e=>n?dM(t,r.current,e):()=>void 0,[t,n]),a=(0,W.useCallback)(()=>n?uM(t,r.current):``,[t,n]);return W.useSyncExternalStore(i,a,a)}function xP(){let e=(0,V.c)(2),{childStores:t}=bM(),n;return e[0]===t?n=e[1]:(n=e=>lM(t,e),e[0]=t,e[1]=n),n}function SP(e,t){let n=bM(),r=t??n.directory;return Ju(e,r,vP(r))}function CP(e,t){let n=bM(),r=t??n.directory;return sd(e,r,vP(r))}function wP(e,t){let n=(0,V.c)(8),r=bM(),i=t??r.directory,a=vP(i),o=(0,W.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e){o.current=void 0;return}let t=(H()??vu(i,a)).getRequestState?.(U(i,e)),n=t?{status:t.status===`idle`?`ready`:t.status,error:t.error,requestedLimit:t.requestedLimit??0,at:Date.now(),loadGeneration:0}:void 0,r=o.current;return r&&n&&r.status===n.status&&r.error===n.error&&r.requestedLimit===n.requestedLimit?r:(o.current=n,n)},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return TP;let n=(H()??vu(i,a)).subscribe(U(i,e),()=>{t()}),r=pu(()=>{n(),o.current=void 0,n=(H()??vu(i,a)).subscribe(U(i,e),()=>{t()}),t()});return()=>{r(),n()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return W.useSyncExternalStore(u,c,c)}function TP(){}function EP(e,t,n){let r=bM(),i=t??r.directory;return ld(e,i,vP(i),n)}function DP(e,t){let n=(0,V.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=vP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status?.[e]},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):OP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return W.useSyncExternalStore(c,o,o)}function OP(){}function kP(e,t){let n=(0,V.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=vP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status_observed_at?.[e]},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):AP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return W.useSyncExternalStore(c,o,o)}function AP(){}function jP(e,t){let n=(0,V.c)(7),r=t===void 0||t,i;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={bootstrap:!1},n[0]=i):i=n[0];let a=vP(e,i),o;n[1]!==r||n[2]!==a?(o=()=>r?a.getState().session_status_snapshot_at:void 0,n[1]=r,n[2]=a,n[3]=o):o=n[3];let s=o,c;n[4]!==r||n[5]!==a?(c=e=>r?a.subscribe(e):MP,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return W.useSyncExternalStore(l,s,s)}function MP(){}function NP(e,t,n){let r=(0,V.c)(6),i=vP(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??DF:DF,r[0]=e,r[1]=i,r[2]=a):a=r[2];let o=a,s;r[3]!==e||r[4]!==i?(s=t=>e?i.subscribe(t):PP,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return W.useSyncExternalStore(c,o,o)}function PP(){}function FP(e,t,n){let r=(0,V.c)(2),i=vP(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??OF:OF,r[0]=e,r[1]=a),Ae(i,a)}function IP(e){return yP(LP,e)}function LP(e){return e.session}var RP=e=>e.permission,zP=e=>e.question;function BP(e,t,n,r){let i=(0,V.c)(6),a;i[0]===r?a=i[1]:(a={sessionID:null,sessions:null,requestsBySession:null,result:r},i[0]=r,i[1]=a);let o=(0,W.useRef)(a),s;return i[2]!==r||i[3]!==n||i[4]!==e?(s=t=>{let i=n(t),a=o.current;if(a.sessionID===e&&a.sessions===t.session&&a.requestsBySession===i)return a.result;let s=qp(t.session,i,e,r),c=Kp(a.result,s)?a.result:s;return o.current={sessionID:e,sessions:t.session,requestsBySession:i,result:c},c},i[2]=r,i[3]=n,i[4]=e,i[5]=s):s=i[5],yP(s,t)}function VP(e,t){return BP(e,t,RP,DF)}function HP(e,t){return BP(e,t,zP,OF)}function UP(e,t){let n=(0,V.c)(9),r=WP(e,t),i=WP(e),a;n[0]===e?a=n[1]:(a=t=>t.activeSessions.find(t=>t.id===e)??t.archivedSessions.find(t=>t.id===e)??null,n[0]=e,n[1]=a);let o=Y(a),s=r??i??o,c=s?.parentID??null,l=WP(c,t),u=WP(c),d;n[2]===c?d=n[3]:(d=e=>e.activeSessions.find(e=>e.id===c)??e.archivedSessions.find(e=>e.id===c)??null,n[2]=c,n[3]=d);let f=Y(d),p=l??u??f,m;return n[4]!==s||n[5]!==t||n[6]!==p||n[7]!==e?(m=pM(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function WP(e,t){let n=(0,V.c)(7),{childStores:r}=bM(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>t?r.getChild(t)?.getState().session.find(t=>t.id===e):$A(xM(r),e),n[0]=r,n[1]=t,n[2]=e,n[3]=i):i=n[3];let a=i,o;n[4]!==r||n[5]!==t?(o=e=>t?r.ensureChild(t).subscribe(e):r.subscribeAllSelected(GP,e),n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return W.useSyncExternalStore(s,a,a)}function GP(e){return e.session}function KP(e){let t=fM(e,WP(e),Y((0,W.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,W.useRef)(null),[,r]=W.useState(0);if((0,W.useEffect)(()=>{if(!e){n.current=null;return}if(t){n.current={sessionID:e,session:t,expiresAt:null};return}let i=n.current;if(!i||i.sessionID!==e){n.current=null;return}let a=i.expiresAt??Date.now()+2e3;i.expiresAt=a;let o=a-Date.now(),s=window.setTimeout(()=>{n.current?.sessionID===e&&(n.current=null),r(e=>e+1)},o);return()=>window.clearTimeout(s)},[t,e]),t)return t;let i=n.current;return i&&i.sessionID===e&&(i.expiresAt===null||i.expiresAt>Date.now())?i.session:null}function qP(e,t){return WP(e,t)?.directory??void 0}function JP(){return bM().directory}function YP(){return bM().childStores}var XP=[],ZP=40,QP=4,$P=30,eF=4,tF=30,nF=new WeakMap,rF=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,iF=e=>{let t=nF.get(e);return t||(t=new Map,nF.set(e,t)),t},aF=(e,t,n,r)=>{let i=nF.get(e);if(!i)return;let a=rF(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},oF=(e,t)=>{if(!t.sessionID)return;let n=iF(e),r=rF(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=v()?$P:Bm()?tF:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=v()?QP:Bm()?eF:ZP;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function sF(e,t){let n=nF.get(e);if(n)for(let e of t){if(!e)continue;let t=`${e}\u0000`;for(let e of[...n.keys()])e.startsWith(t)&&n.delete(e)}}var cF=`The following tool was executed by the user`,lF=(e,t,n)=>{if(!n||n.length!==1)return!1;let r=n[0];if(r?.type!==`tool`||typeof r.tool!=`string`||r.tool.toLowerCase()!==`bash`)return!1;let i=t.parentID;if(typeof i!=`string`||i.length===0)return!1;let a=e[i];return a?a.some(e=>{if(e?.type!==`text`||e.synthetic!==!0)return!1;let t=e.text;return typeof t==`string`&&t.trim().startsWith(cF)}):!1};function uF(e,t){if(e.length!==t.length)return!0;for(let n=0;n<t.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||r.type!==i.type||i.type===`tool`&&r!==i)return!0}return!1}var dF=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??EF;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!lF(t.parts,n.info,r)&&!uF(n.parts,r))continue}if(Ws(n.parts,r,n.info)!==n.parts)return!1}return!0},fF=(e,t,n,r)=>{let i=aF(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&dF(i,t))return i};function pF(e,t){let n=e.messages,r=e.revertMessageID;if(t&&t.sourceMessages===n&&t.revertMessageID===r)return{sourceMessages:n,visibleMessages:t.visibleMessages,revertMessageID:r};let i=n;return{sourceMessages:n,visibleMessages:r?us(i,r):n.length===0?TF:i.slice(),revertMessageID:r}}function mF(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=pF(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??EF,s=n&&a&&(!r||i.id===r)&&!lF(e.parts,i,o)&&!uF(a.parts,o)?a.parts:Ws(a?.parts,o,i),l=a&&a.info===i&&a.parts===s?a:{info:i,parts:s};return c.set(i.id,l),l});return t&&t?.visibleMessages===o&&t.suspendPartUpdates===n&&t.suspendedPartUpdatesMessageID===r&&t.list.length===l.length&&t.list.every((e,t)=>e===l[t])&&t?t:{sessionID:i,sourceMessages:a,visibleMessages:o,revertMessageID:s,suspendPartUpdates:n,suspendedPartUpdatesMessageID:r,list:l,byId:c}}function hF(e,t){let n=bM(),r=t??n.directory;return ad(e,r,vP(r))}function gF(e,t){let n=bM(),r=t??n.directory;return md(e,r,vP(r))}function _F(e,t){let n=bM(),r=t??n.directory;return fd(e,r,vP(r))}function vF(e,t){let n=(0,V.c)(8),r=bM(),i=t??r.directory,a=vP(i),o=(0,W.useRef)(iM),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e)return o.current=iM,iM.history;let t=(H()??vu(i,a)).getTranscript(U(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=cM({sessionID:e,messages:Wu(t),parts:t.partsByMessageID,revertMessageID:n},o.current);return o.current=r,r.history},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return yF;let n=(H()??vu(i,a)).subscribe(U(i,e),()=>{t()}),r=pu(()=>{n(),n=(H()??vu(i,a)).subscribe(U(i,e),()=>{t()}),t()}),o=a.subscribe(()=>{t()});return()=>{r(),n(),o()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return W.useSyncExternalStore(u,c,c)}function yF(){}function bF(e,t,n){let r=(0,V.c)(16),i=bM(),a=t??i.directory,o=vP(a),s=!!n?.suspendPartUpdates,c=n?.suspendPartUpdatesForMessageId??void 0,l,u;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[],u=new Map,r[0]=l,r[1]=u):(l=r[0],u=r[1]);let d;r[2]!==e||r[3]!==s||r[4]!==c?(d={sessionID:e,sourceMessages:TF,visibleMessages:TF,revertMessageID:void 0,suspendPartUpdates:s,suspendedPartUpdatesMessageID:c,list:l,byId:u},r[2]=e,r[3]=s,r[4]=c,r[5]=d):d=r[5];let f=(0,W.useRef)(d),p;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(p=()=>{if(!e)return XP;let t=(H()??vu(a,o)).getTranscript(U(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=Wu(t,f.current.sessionID===e?f.current.sourceMessages:aF(o,e,r,i)?.sourceMessages),c=o.getState().session.find(t=>t.id===e)?.revert?.messageID,l={sessionID:e,messages:s,parts:t.partsByMessageID,revertMessageID:c},u=fF(o,l,r,i);if(u)return f.current=u,u.list;let d=mF(l,f.current.sessionID===e?f.current:aF(o,e,r,i),r,i);return f.current=d,oF(o,d),d.list},r[6]=n?.suspendPartUpdates,r[7]=n?.suspendPartUpdatesForMessageId,r[8]=e,r[9]=o,r[10]=a,r[11]=p):p=r[11],n?.suspendPartUpdates,n?.suspendPartUpdatesForMessageId;let m=p,h;r[12]!==e||r[13]!==o||r[14]!==a?(h=t=>{if(!e)return xF;Vu(a,e);let n=(H()??vu(a,o)).subscribe(U(a,e),()=>{t()}),r=pu(()=>{n(),n=(H()??vu(a,o)).subscribe(U(a,e),()=>{t()}),Hu(a,e),Vu(a,e),t()}),i=o.subscribe(()=>{t()});return()=>{r(),n(),i()}},r[12]=e,r[13]=o,r[14]=a,r[15]=h):h=r[15];let g=h;return W.useSyncExternalStore(g,m,m)}function xF(){}var SF=new Set;function CF(e,t){let n=JP(),r=t??n,i=vP(r),a=W.useRef(0);W.useEffect(()=>{if(!e)return;let t=H()??vu(r,i),n=U(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(Gu(o,{resolved:s===!0||void 0}).renderable){Hb({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(SF.has(c))return;let l=++a.current,u=()=>l!==a.current;SF.add(c),(async()=>{try{if(H())try{if(await Su(r,e),u())return;Hb({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await nN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await nN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{SF.delete(c)}})()},[e,i,r])}function wF(e,t){let n=bM(),r=t??n.directory;return Ku(e,r,vP(r))}var TF=[],EF=[],DF=[],OF=[],kF=[],AF=()=>({requestID:fe(),queueItemID:fe(),operationID:fe(),messageID:ge(`msg`)}),jF=e=>({kind:`pending-admission`,requestID:e.requestID,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,createdAt:e.createdAt,phase:`admitting`,attachmentCount:e.attachmentCount,...e.composerDocument?{composerDocument:e.composerDocument}:{},...e.composerMentions?{composerMentions:e.composerMentions}:{}}),MF,NF=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return kF;if(MF&&MF.pending===n.pending&&MF.draftID===t)return MF.items;let r=n.pending.map(jF);return MF={pending:n.pending,draftID:t,items:r},r},PF=e=>t=>t.flights[e]??null,FF=e=>t=>!!e&&t.establishing?.draftID===e,IF=e=>t=>NF(t,e),LF=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),RF=Oe()((e,t)=>({flights:{},establishing:null,beginFlight:(n,r=`send`)=>{let i=n.trim();return!i||t().flights[i]?!1:(e(e=>({flights:{...e.flights,[i]:r}})),!0)},endFlight:n=>{let r=n.trim();!r||!t().flights[r]||e(e=>{if(!e.flights[r])return e;let t={...e.flights};return delete t[r],{flights:t}})},isInFlight:e=>!!t().flights[e.trim()],beginEstablishing:({draftID:n,primaryMessageID:r})=>{let i=n.trim(),a=r.trim();if(!i||!a)return!1;let o=t().establishing;return o?o.draftID===i&&o.primaryMessageID===a:(e({establishing:{draftID:i,primaryMessageID:a,pending:[]}}),!0)},isEstablishing:e=>e?t().establishing?.draftID===e:!1,getEstablishing:()=>t().establishing,enqueueEstablishingFollowUp:n=>{let r=t().establishing;if(!r||r.draftID!==n.draftID||!n.sendConfig.providerID||!n.sendConfig.modelID)return null;let i=n.content;if(!i.trim()&&(n.attachments?.length??0)===0)return null;let a=n.identity??AF(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||ge(`msg`),content:i,createdAt:n.createdAt??Date.now(),phase:`admitting`,attachmentCount:o.length,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},draftID:n.draftID,sendConfig:{providerID:n.sendConfig.providerID,modelID:n.sendConfig.modelID,...n.sendConfig.agent?{agent:n.sendConfig.agent}:{},...n.sendConfig.variant?{variant:n.sendConfig.variant}:{}},attachments:o};return e({establishing:{...r,pending:[...r.pending,s]}}),s},removeEstablishingFollowUp:n=>{let r=t().establishing;if(!r)return null;let i=r.pending.findIndex(e=>e.requestID===n);if(i<0)return null;let a=r.pending[i];return e({establishing:{...r,pending:[...r.pending.slice(0,i),...r.pending.slice(i+1)]}}),a??null},takeEstablishingPending:n=>{let r=t().establishing;if(!r||r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},clearEstablishing:n=>{let r=t().establishing;if(!r||n!=null&&n!==``&&r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},shouldBlockNewSessionDraftOpen:()=>t().establishing!==null})),zF=Oe((e,t)=>({armed:!1,objectiveOverride:null,setArmed:(t,n=null)=>e({armed:t,objectiveOverride:t?n:null}),consume:()=>{let{armed:n,objectiveOverride:r}=t();return n&&e({armed:!1,objectiveOverride:null}),{armed:n,objectiveOverride:r}}})),X=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},BF=`/api/openchamber/message-queue`,VF=new Set([`validation_error`,`revision_conflict`,`row_version_conflict`,`idempotency_conflict`,`generation_conflict`,`authority_conflict`,`not_found`,`scope_locked`,`scope_limit`,`reserved`,`internal_error`,`unavailable`]),HF=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),UF=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),WF=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,GF=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),KF=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(WF(t)&&typeof t.code==`string`&&VF.has(t.code))return t.code}catch{}return`unavailable`},qF=async(e,t)=>{let n;try{n=await F(e,t)}catch{throw new X(0,`unavailable`)}if(!n.ok)throw new X(n.status,await KF(n));try{return await n.json()}catch{throw new X(n.status,`unavailable`)}},JF=()=>{throw new X(200,`unavailable`)},YF=e=>WF(e)&&Object.getPrototypeOf(e)===Object.prototype,XF=e=>{if(!(!YF(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!YF(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},ZF=e=>Array.isArray(e)&&e.every(YF)?e.map(e=>({...e})):void 0,QF=e=>{if(!(!WF(e)||typeof e.providerID!=`string`||typeof e.modelID!=`string`)&&!(e.agent!==void 0&&typeof e.agent!=`string`||e.variant!==void 0&&typeof e.variant!=`string`))return{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}},$F=e=>WF(e)?e.kind===`primary`&&Object.keys(e).length===1?{kind:`primary`}:e.kind===`assistant`&&Object.keys(e).every(e=>e===`kind`||e===`assistantID`)&&typeof e.assistantID==`string`&&e.assistantID?{kind:`assistant`,assistantID:e.assistantID}:null:null,eI=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!YF(r))return null;if(r.type===`text`&&Object.keys(r).every(e=>e===`type`||e===`text`||e===`synthetic`)&&typeof r.text==`string`&&(r.synthetic===void 0||typeof r.synthetic==`boolean`)){t.push({type:`text`,text:r.text,...r.synthetic===void 0?{}:{synthetic:r.synthetic}});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.attachmentID==`string`&&r.attachmentID){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,attachmentID:r.attachmentID});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.url==`string`){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,url:r.url});continue}return null}return t},tI=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!YF(r)||Object.keys(r).some(e=>![`partID`,`text`,`synthetic`,`attachmentIDs`,`deliveryPartIndexes`].includes(e))||typeof r.partID!=`string`||!r.partID||t.has(r.partID)||typeof r.text!=`string`||r.synthetic!==void 0&&typeof r.synthetic!=`boolean`||!Array.isArray(r.attachmentIDs)||r.attachmentIDs.some(e=>typeof e!=`string`||!e)||new Set(r.attachmentIDs).size!==r.attachmentIDs.length||!Array.isArray(r.deliveryPartIndexes)||r.deliveryPartIndexes.length!==r.attachmentIDs.length+1||r.deliveryPartIndexes.some(e=>!Number.isSafeInteger(e)||e<0)||new Set(r.deliveryPartIndexes).size!==r.deliveryPartIndexes.length)return null;t.add(r.partID),n.push({partID:r.partID,text:r.text,...r.synthetic===!0?{synthetic:!0}:{},attachmentIDs:[...r.attachmentIDs],deliveryPartIndexes:[...r.deliveryPartIndexes]})}return n},nI=e=>{if(!YF(e)||Object.keys(e).some(e=>![`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`locator`].includes(e))||typeof e.attachmentID!=`string`||!e.attachmentID||typeof e.filename!=`string`||!e.filename||typeof e.mimeType!=`string`||!e.mimeType||!Z(e.size)||![`local`,`vscode`,`server`].includes(String(e.source))||!YF(e.locator))return null;let t=e.occurrenceRefID;if(!(Array.isArray(t)&&(t.length===2&&t[0]===`root`&&t[1]===e.attachmentID||t.length===3&&t[0]===`part`&&typeof t[1]==`string`&&t[1]&&t[2]===e.attachmentID)))return null;let n=e.locator;return n.kind===`upload`&&Object.keys(n).every(e=>[`kind`,`uploadID`,`storageKey`].includes(e))&&typeof n.uploadID==`string`&&n.uploadID&&(n.storageKey===void 0||typeof n.storageKey==`string`)&&n.storageKey!==``?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`upload`,uploadID:n.uploadID}}:n.kind===`server-path`&&Object.keys(n).every(e=>[`kind`,`path`].includes(e))&&typeof n.path==`string`&&n.path?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`server-path`,path:n.path}}:null},rI=e=>Array.isArray(e)&&e.map(nI).every(e=>e!==null)?e.map(nI):null,iI=e=>{if(!WF(e)||typeof e.queueItemID!=`string`||typeof e.operationID!=`string`||typeof e.messageID!=`string`||typeof e.content!=`string`||typeof e.status!=`string`||!Z(e.attemptCount)||!Z(e.position)||!Z(e.rowVersion)||!Z(e.createdAt)||e.manualDispatchRequested!==void 0&&typeof e.manualDispatchRequested!=`boolean`)return null;let t=e.composerDocument===void 0?void 0:XF(e.composerDocument),n=e.composerMentions===void 0?void 0:ZF(e.composerMentions),r=e.sendConfig===void 0?void 0:QF(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:$F(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:eI(e.deliveryParts),o=e.syntheticParts===void 0?void 0:tI(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:ZF(e.attachmentIssues);if(e.composerDocument!==void 0&&!t||e.composerMentions!==void 0&&!n||e.sendConfig!==void 0&&!r||!i||e.deliveryParts!==void 0&&!a||i.kind===`assistant`&&!a||e.syntheticParts!==void 0&&!o||e.attachmentIssues!==void 0&&!s)return null;let c=e.attachments===void 0?void 0:rI(e.attachments);if(e.attachments!==void 0&&!c)return null;if(o&&a){let e=new Set,t=new Set;for(let n of o){let[r,...i]=n.deliveryPartIndexes;if(r===void 0||e.has(r)||a[r]?.type!==`text`||a[r].text!==n.text)return null;e.add(r);for(let t of i){if(e.has(t)||a[t]?.type!==`file`||!(`attachmentID`in a[t])||a[t].attachmentID!==n.attachmentIDs[i.indexOf(t)])return null;e.add(t)}for(let e of n.attachmentIDs){let r=c?.find(t=>t.attachmentID===e);if(!r||t.has(e)||r.occurrenceRefID[0]!==`part`||r.occurrenceRefID[1]!==n.partID||r.occurrenceRefID[2]!==e)return null;t.add(e)}}if(c?.some(e=>e.occurrenceRefID[0]===`part`&&!t.has(e.attachmentID)))return null}return{queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,status:e.status,attemptCount:e.attemptCount,position:e.position,rowVersion:e.rowVersion,createdAt:e.createdAt,deliveryTarget:i,...e.manualDispatchRequested===!0?{manualDispatchRequested:!0}:{},...t?{composerDocument:t}:{},...n?{composerMentions:n}:{},...r?{sendConfig:r}:{},...a?{deliveryParts:a}:{},...o?{syntheticParts:o}:{},...c?{attachments:c}:{},...s?{attachmentIssues:s}:{}}},aI=e=>{if(!WF(e)||typeof e.scopeID!=`string`||!Z(e.revision)||typeof e.directory!=`string`||typeof e.sessionID!=`string`||typeof e.worktreeState!=`string`||!Z(e.itemCount)||!Array.isArray(e.items)||e.items.length>8||e.nextOffset!==void 0&&(!Z(e.nextOffset)||e.nextOffset<=0))return null;let t=e.items.map(iI);return t.every(e=>e!==null)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount,items:t,...e.nextOffset===void 0?{}:{nextOffset:e.nextOffset}}:null},oI=e=>WF(e)&&Object.keys(e).every(e=>UF.has(e))&&typeof e.scopeID==`string`&&Z(e.revision)&&typeof e.directory==`string`&&typeof e.sessionID==`string`&&typeof e.worktreeState==`string`&&Z(e.itemCount)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}:null,sI=e=>WF(e)&&typeof e.projectDirectory==`string`&&GF(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,cI=e=>{if(!WF(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return JF();let t=e.scopes.map(oI),n=e.worktreeOrders.map(sI);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?JF():{revision:e.revision,scopes:t,worktreeOrders:n}},lI=e=>!WF(e)||!Z(e.revision)||Object.keys(e).some(e=>!HF.has(e))||e.scopeID!==void 0&&typeof e.scopeID!=`string`||e.queueItemID!==void 0&&typeof e.queueItemID!=`string`||e.rowVersion!==void 0&&!Z(e.rowVersion)||e.removedQueueItemID!==void 0&&typeof e.removedQueueItemID!=`string`||e.projectDirectory!==void 0&&typeof e.projectDirectory!=`string`||e.token!==void 0&&typeof e.token!=`string`||e.state!==void 0&&typeof e.state!=`string`||e.scopeCount!==void 0&&!Z(e.scopeCount)||e.statusCounts!==void 0&&(!WF(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?JF():{revision:e.revision,...typeof e.scopeID==`string`?{scopeID:e.scopeID}:{},...typeof e.queueItemID==`string`?{queueItemID:e.queueItemID}:{},...Z(e.rowVersion)?{rowVersion:e.rowVersion}:{},...typeof e.removedQueueItemID==`string`?{removedQueueItemID:e.removedQueueItemID}:{},...typeof e.projectDirectory==`string`?{projectDirectory:e.projectDirectory}:{},...typeof e.token==`string`?{token:e.token}:{},...typeof e.state==`string`?{state:e.state}:{},...Z(e.scopeCount)?{scopeCount:e.scopeCount}:{},...WF(e.statusCounts)?{statusCounts:e.statusCounts}:{}},uI=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),dI=(e,t)=>{let{signal:n,...r}=t;return uI(e,r,n)},fI=async e=>cI(await qF(BF,{signal:e})),pI=new Map,mI=(e,t)=>`${a().api(BF)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,hI=async(e,t={})=>{if(t.signal?.aborted)throw new X(0,`unavailable`);let n=mI(e,t),r=pI.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new X(0,`unavailable`);return e}let i=(async()=>aI(await qF(`${BF}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??JF())().finally(()=>{pI.get(n)===i&&pI.delete(n)});return pI.set(n,i),i},gI=15e3,_I=(e,t={})=>new Promise(n=>{let r=t.signal;if(r?.aborted){n(`aborted`);return}let i=typeof t.safetyTimeoutMs==`number`&&t.safetyTimeoutMs>0?t.safetyTimeoutMs:gI,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=Gt(t=>{if(t.type===`event-stream-ready`){o(`ready`);return}t.type===`message-queue-changed`&&t.revision>e&&o(`tip`)}),l=setTimeout(()=>o(`timeout`),i),u=jt(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),vI=async e=>{let t=await qF(`${BF}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!WF(t)||Object.keys(t).some(e=>!n.has(e))||typeof t.capability!=`boolean`||t.authority!==void 0&&t.authority!==`shadow`&&t.authority!==`active`&&t.authority!==`paused`||t.generation!==void 0&&!Z(t.generation)||t.activationEpoch!==void 0&&!Z(t.activationEpoch)||t.activatedAt!==void 0&&!Z(t.activatedAt)||t.protocol!==void 0&&t.protocol!==4||t.manifestHash!==void 0&&typeof t.manifestHash!=`string`||t.worker!==void 0&&(!WF(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?JF():{capability:t.capability,...typeof t.authority==`string`?{authority:t.authority}:{},...Z(t.generation)?{generation:t.generation}:{},...Z(t.activationEpoch)?{activationEpoch:t.activationEpoch}:{},...Z(t.activatedAt)?{activatedAt:t.activatedAt}:{},...typeof t.manifestHash==`string`?{manifestHash:t.manifestHash}:{},...t.protocol===4?{protocol:4}:{},...WF(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},yI=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),bI=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!WF(e)||Object.keys(e).some(e=>!t.includes(e))||!Z(e.revision)||typeof e.importID!=`string`||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(e.state))||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`||e.manifestHash!==void 0&&typeof e.manifestHash!=`string`)return JF();let n=e.commit===void 0?void 0:CI(e.commit);return e.commit!==void 0&&!n?JF():{revision:e.revision,importID:e.importID,state:e.state,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{},...typeof e.manifestHash==`string`?{manifestHash:e.manifestHash}:{},...n?{commit:n}:{}}},xI=e=>!WF(e)||!yI(e,e.duplicate===void 0?[`revision`,`importID`,`staged`]:[`revision`,`importID`,`staged`,`duplicate`])||!Z(e.revision)||typeof e.importID!=`string`||e.staged!==!0||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`?JF():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},SI=e=>!WF(e)||!yI(e,[`revision`,`importID`,`manifestHash`,`state`,`itemCount`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||e.state!==`sealed`||!Z(e.itemCount)?JF():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},CI=e=>!WF(e)||!yI(e,[`revision`,`importID`,`manifestHash`,`generation`,`activationEpoch`,`added`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||!Z(e.generation)||!Z(e.activationEpoch)||!Z(e.added)?JF():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},wI=e=>CI(e),TI=e=>CI(e),EI=(e,t)=>!WF(e)||!yI(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?JF():{authority:t,generation:e.generation,revision:e.revision},DI=async e=>bI(await qF(`${BF}/imports`,dI(`POST`,e))),OI=async(e,t)=>{let n=await qF(`${BF}/imports/${encodeURIComponent(e)}`,{signal:t});if(!WF(n)||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(n.state))||!Z(n.itemCount)||!Array.isArray(n.staged)||n.manifestHash!==void 0&&typeof n.manifestHash!=`string`)return JF();let r=n.staged.map(e=>WF(e)&&Z(e.scopeOrdinal)&&Z(e.itemOrdinal)&&typeof e.payloadHash==`string`?{scopeOrdinal:e.scopeOrdinal,itemOrdinal:e.itemOrdinal,payloadHash:e.payloadHash}:null),i=n.commit===void 0?void 0:CI(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?JF():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},kI=async(e,t)=>xI(await qF(`${BF}/imports/${encodeURIComponent(e)}/items`,dI(`POST`,t))),AI=async(e,t)=>SI(await qF(`${BF}/imports/${encodeURIComponent(e)}/seal`,dI(`POST`,t))),jI=async(e,t)=>wI(await qF(`${BF}/imports/${encodeURIComponent(e)}/activate`,dI(`POST`,t))),MI=async(e,t)=>TI(await qF(`${BF}/imports/${encodeURIComponent(e)}/late-commit`,dI(`POST`,t))),NI=async e=>EI(await qF(`${BF}/authority/pause`,dI(`POST`,e)),`paused`),PI=async e=>EI(await qF(`${BF}/authority/resume`,dI(`POST`,e)),`active`),FI=async(e={})=>{let t=await qF(`${BF}/attachments/uploads`,dI(`POST`,e));return!WF(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?JF():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},II=async(e,t,n,r)=>{let i;try{i=await F(`${BF}/attachments/uploads/${encodeURIComponent(e.uploadID)}`,{method:`PUT`,headers:{"Content-Length":String(t.size),"X-Message-Queue-Content-Length":String(t.size),"X-Message-Queue-Upload-Token":e.uploadToken,"X-Message-Queue-Sha256":n},body:t,signal:r})}catch{throw new X(0,`unavailable`)}if(!i.ok)throw new X(i.status,await KF(i))},LI=e=>!WF(e)||!Z(e.revision)||typeof e.scopeID!=`string`||typeof e.queueItemID!=`string`||!Z(e.rowVersion)||typeof e.token!=`string`||!Z(e.expiresAt)||!Z(e.generation)?JF():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},RI=e=>!WF(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?JF():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},zI=async(e,t)=>LI(await qF(`${BF}/items/${encodeURIComponent(e)}/reserve`,dI(`POST`,t))),BI=async(e,t)=>{await qF(`${BF}/items/${encodeURIComponent(e)}/release`,dI(`POST`,t))},VI=async(e,t)=>RI(await qF(`${BF}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,dI(`POST`,t))),HI=async(e,t)=>lI(await qF(`${BF}/items/${encodeURIComponent(e)}/reserved-remove`,dI(`DELETE`,t))),UI=async(e,t,n)=>{let r;try{r=await F(`${BF}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new X(0,`unavailable`)}if(!r.ok)throw new X(r.status,await KF(r));let i=t.mimeType.trim().toLowerCase(),a=r.headers.get(`Content-Length`),o=r.headers.get(`Content-Type`)?.split(`;`,1)[0]?.trim().toLowerCase();if(a!==null&&a!==String(t.size)||o!==i)throw new X(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new X(r.status,`unavailable`)}if(s.size!==t.size)throw new X(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},WI=async e=>lI(await qF(`${BF}/items`,dI(`POST`,e))),GI=async(e,t)=>lI(await qF(`${BF}/items/${encodeURIComponent(e)}`,dI(`PATCH`,t))),KI=async(e,t)=>lI(await qF(`${BF}/items/${encodeURIComponent(e)}/send`,dI(`POST`,t))),qI=async(e,t)=>lI(await qF(`${BF}/items/${encodeURIComponent(e)}`,dI(`DELETE`,t))),JI=async(e,t)=>lI(await qF(`${BF}/scopes/${encodeURIComponent(e)}/order`,dI(`PUT`,t))),YI=async(e,t)=>sI(await qF(`${BF}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??JF(),XI=async e=>lI(await qF(`${BF}/worktrees/order`,dI(`PUT`,e))),ZI=(e=r())=>N.messageQueue.snapshot(e),QI=(e=r())=>N.messageQueue.status(e),$I=(e,t,n=r())=>N.messageQueue.scope(e,t,n),eL=(e=r())=>({queryKey:QI(e),queryFn:({signal:e})=>vI(e),retry:!1,staleTime:3e4}),tL=(e=r())=>({queryKey:ZI(e),queryFn:({signal:e})=>fI(e),staleTime:5e3}),nL=(e=L,t=r())=>e.fetchQuery(eL(t)),rL=(e=L,t=r())=>e.fetchQuery(tL(t)),iL=async(e=L,t=r())=>e.fetchQuery({...eL(t),staleTime:0}),aL=async(e=L,t=r())=>e.fetchQuery({...tL(t),staleTime:0}),oL=(e,t,n=r())=>{e.setQueryData($I(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},sL=(e,t,n=r())=>{e.setQueryData(QI(n),t)},cL=(e,t,n=r())=>{e.setQueryData(ZI(n),t)},lL=(e,t,n,i=r())=>{let a=e.getQueryData($I(t,n,i));if(!a?.pages.length)return;let o=a.pages[0];if(!o)return;let s=a.pages.flatMap(e=>e.items);return s.length===o.itemCount&&a.pages.every(e=>e.revision===o.revision)?{...o,items:s,nextOffset:void 0}:void 0},uL=(e,t=r())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),dL=(e,t,n=r())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),fL=(e,t,n=r())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),pL=`openchamber_message_queue_ledger_v4`,mL=`message-queue-store`,hL={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},gL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,_L=(e,t)=>Object.keys(e).every(e=>t.includes(e)),vL=(e,t=hL.string)=>typeof e==`string`&&e.length>0&&e.length<=t,yL=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,bL=e=>JSON.parse(JSON.stringify(e)),xL=(e,t,n,r)=>{let i=gL(t)?t:{};return{...e?{scopeKey:e}:{},...vL(i.queueItemID)?{queueItemID:i.queueItemID}:{},...vL(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},SL=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,CL=e=>{if(typeof e!=`string`)return;let t=e.startsWith(`bound:`)?(()=>{try{return JSON.parse(e.slice(6))}catch{return}})():e.startsWith(`unbound-legacy:`)?(()=>{try{return JSON.parse(e.slice(15))}catch{return}})():void 0,n=TL(e.startsWith(`bound:`)&&Array.isArray(t)&&t.length===3?{state:`bound`,transportIdentity:t[0],directory:t[1],sessionID:t[2]}:e.startsWith(`unbound-legacy:`)&&Array.isArray(t)&&t.length===1?{state:`unbound-legacy`,sessionID:t[0]}:void 0);return n&&SL(n)===e?n:void 0},wL=()=>({version:4,queues:{},migration:{v3State:`pending`}}),TL=e=>!gL(e)||!vL(e.state)?void 0:e.state===`bound`&&_L(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&vL(e.transportIdentity)&&vL(e.directory)&&vL(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&_L(e,[`state`,`sessionID`])&&vL(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,EL=(e,t)=>{try{let n=JSON.parse(e);return Array.isArray(n)&&(n.length===2&&n[0]===`root`&&n[1]===t||n.length===3&&typeof n[1]==`string`&&n[0]===`part`&&n[2]===t)}catch{return!1}},DL=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],OL=e=>{if(!vL(e.attachmentID)||!vL(e.occurrenceRefID)||!EL(e.occurrenceRefID,e.attachmentID)||!vL(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>hL.string||!yL(e.size))return;let t={attachmentID:e.attachmentID,occurrenceRefID:e.occurrenceRefID,filename:e.filename,mimeType:e.mimeType,size:e.size};if(e.source===`local`&&e.serverPath===void 0&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`local`};if(e.source===`server`&&vL(e.serverPath)&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`server`,serverPath:e.serverPath};if(e.source===`vscode`&&e.serverPath===void 0&&vL(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},kL=e=>{if(!gL(e)||!_L(e,[...DL,`version`,`locator`])||e.version!==1)return;let t=OL(e);if(!t||!gL(e.locator))return;let n=e.locator.kind===`blob`&&_L(e.locator,[`kind`,`blobID`])&&vL(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&_L(e.locator,[`kind`,`url`])&&ie(e.locator.url)?{kind:`url`,url:e.locator.url}:void 0;return n?{version:1,...t,locator:n}:void 0},AL=e=>{if(!gL(e)||!_L(e,[...DL,`reason`]))return;let t=OL(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},jL=(e,t)=>{if(!gL(e)||!_L(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=we(e.text,e.references),r=n&&ve(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},ML=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=ae(t.text,e);return!n||n.some(e=>t.references.some(t=>e.range.start<t.end&&t.start<e.range.end))?void 0:n},NL=(e,t)=>{if(!gL(e)||!_L(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!vL(e.queueItemID)||!vL(e.operationID)||!vL(e.messageID)||typeof e.content!=`string`||e.content.length>hL.content||!yL(e.createdAt)||!yL(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>hL.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>hL.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=TL(e.owner),r=e.attachments.map(kL),i=e.attachmentIssues.map(AL),a=e.composerDocument===void 0?void 0:jL(e.composerDocument,e.content),o=ML(e.composerMentions,a);if(!n||e.composerDocument!==void 0&&!a||e.composerMentions!==void 0&&!o||!r.every(Boolean)||!i.every(Boolean))return;let s=new Set(r.map(e=>e.occurrenceRefID)),c=new Set(a?oe(a).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]);if(s.size!==r.length||new Set(i.map(e=>e.occurrenceRefID)).size!==i.length||i.some(e=>s.has(e.occurrenceRefID))||[...c].some(e=>!s.has(e))||e.sendConfig!==void 0&&(!gL(e.sendConfig)||!_L(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!vL(e.sendConfig.providerID)||!vL(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!vL(e))))return;let l=[e.nextAttemptAt,e.reconciliationStartedAt,e.reconciliationDeadlineAt,e.reconciliationChecks,e.reconciliationNextCheckAt],u=e.reconciliationStartedAt!==void 0&&e.reconciliationDeadlineAt!==void 0&&e.reconciliationChecks!==void 0&&e.reconciliationDeadlineAt>=e.reconciliationStartedAt,d=e.reconciliationStartedAt===void 0&&e.reconciliationDeadlineAt===void 0&&e.reconciliationChecks===void 0&&e.reconciliationNextCheckAt===void 0,f=e.nextAttemptAt===void 0,p=e.failureKind===void 0,m=e.status===`queued`||e.status===`sending`?f&&d&&p&&i.length===0:e.status===`retrying`?e.nextAttemptAt!==void 0&&e.failureKind===`pre-dispatch`&&d&&i.length===0:e.status===`reconciling`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0:e.status===`unresolved`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0||f&&d&&p&&i.length>0:f&&d&&e.failureKind===`definitive`&&i.length===0;if(l.some(e=>e!==void 0&&!yL(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!yL(g))return;let _=h?e.createdAt:e.reconciliationStartedAt,v=h?0:e.reconciliationChecks;return{version:1,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,owner:n,content:e.content,...a?{composerDocument:a}:{},...o?.length?{composerMentions:o}:{},attachments:r,attachmentIssues:i,createdAt:e.createdAt,...e.sendConfig?{sendConfig:bL(e.sendConfig)}:{},status:h?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{nextAttemptAt:e.nextAttemptAt},..._===void 0?{}:{reconciliationStartedAt:_,reconciliationDeadlineAt:g,reconciliationChecks:v,...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt}},...h?{failureKind:`ambiguous-dispatch`}:e.failureKind?{failureKind:e.failureKind}:{}}},PL=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:wL(),issues:[xL(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!gL(e)||!_L(e,[`version`,`queues`,`migration`])||e.version!==4||!gL(e.queues)||!gL(e.migration)||!_L(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>hL.scopes)return n(`snapshot`);let r=0,i={},a=[],o=new Set,s=new Map,c=new Map,l=new Map,u=(e,t,n,r)=>{a.push(xL(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!CL(a)){u(a,d,`$.queues.${JSON.stringify(a)}`,`scope`);continue}if(!Array.isArray(d)){u(a,d,`$.queues.${JSON.stringify(a)}`,`queue`);continue}let e=[];for(let i=0;i<d.length;i++){if(++r>hL.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=NL(f,t.normalizeSending===!0);if(!m||SL(m.owner)!==a){u(a,f,p,`item`);continue}let h=[[s,m.queueItemID,`duplicate-queue-item-id`],[c,m.operationID,`duplicate-operation-id`],[l,m.messageID,`duplicate-message-id`]].find(([e,t])=>e.has(t));if(h){let[e,,t]=h;u(a,f,p,t),o.add(e.get(h[1]));continue}s.set(m.queueItemID,a),c.set(m.operationID,a),l.set(m.messageID,a),e.push(m)}e.length&&(i[a]=e)}return{status:`ok`,snapshot:bL({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},FL=e=>{let t=PL(e);if(t.status===`corrupt`||t.issues.length)return{ok:!1,error:{code:`corrupt`}};try{return{ok:!0,value:JSON.stringify(t.snapshot)}}catch{return{ok:!1,error:{code:`serialization`}}}},IL=()=>({ok:!1,error:{code:`unavailable`}}),LL=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),RL=e=>({read:async t=>{if(!e)return IL();try{return{ok:!0,value:e.getItem(t)}}catch(e){return LL(e)}},write:async(t,n)=>{if(!e)return IL();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return LL(e)}},remove:async t=>{if(!e)return IL();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return LL(e)}}}),zL=()=>{try{return RL(typeof window>`u`?null:window.localStorage)}catch{return RL(null)}},BL=async e=>{let t=await e.read(pL);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=PL(JSON.parse(t.value),{normalizeSending:!0});return{ok:!0,value:{raw:t.value,snapshot:e.status===`ok`?e.snapshot:null,status:e.status===`corrupt`?`corrupt`:e.issues.length?`partial`:`ok`,issues:e.issues,degradedScopeKeys:e.degradedScopeKeys}}}catch{return{ok:!0,value:{raw:t.value,snapshot:null,status:`corrupt`,issues:[xL(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},VL=async e=>{let t=await BL(e);return t.ok?t.value.status===`empty`?{ok:!0,value:null}:t.value.status===`ok`?{ok:!0,value:t.value.snapshot}:{ok:!1,error:{code:`corrupt`}}:t},HL=async(e,t)=>{let n=FL(t);return n.ok?e.write(pL,n.value):n},UL=e=>{let t=!0,n=[],r=!1,i=new Set,a=()=>{if(!r&&n.length===0){for(let e of i)e();i.clear()}},o=()=>{if(r)return;let t=n.shift();if(!t){a();return}r=!0,HL(e,t.snapshot).then(t.resolve).finally(()=>{r=!1,o()})},s=()=>{let e=n;n=[],e.forEach(e=>e.resolve({ok:!1,error:{code:`cancelled`}})),a()};return{readDetailed:()=>BL(e),read:()=>VL(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=PL(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=bL(r.snapshot);return new Promise(e=>{n.push({snapshot:i,resolve:e}),o()})},flush:()=>!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)),setEnabled:async e=>{t=e,t||s(),await(!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)))},cancelPending:s}},WL=hL.string,GL=hL.dataURL,KL=hL.bytes,qL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,JL=(e,t,n=!1)=>typeof e==`string`&&e.length<=WL&&(n||e.length>0)?e:t,YL=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,XL=(e,t)=>SL(e)===SL(t),ZL=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),QL=async(e,t)=>{let n=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(t));return`${e}-${[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`},$L=e=>typeof e==`string`&&e.length>0&&e.length<=WL,eR=e=>CL(e)??($L(e)?{state:`unbound-legacy`,sessionID:e}:void 0),tR=e=>{if(qL(e)){if(e.state===`bound`&&$L(e.transportIdentity)&&$L(e.directory)&&$L(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&$L(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},nR=e=>{if(e.length>GL)return;let t=/^data:([^,]*),(.*)$/s.exec(e);if(!t)return;let n=t[1].split(`;`),r=n.at(-1)?.toLowerCase()===`base64`,i=(r?n.slice(0,-1):n).join(`;`)||`application/octet-stream`,a=t[2];try{let e;if(r){if(!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a))return;let t=atob(a);if(t.length>KL)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>KL)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},rR=e=>qL(e)&&$L(e.providerID)&&$L(e.modelID)&&(e.agent===void 0||$L(e.agent))&&(e.variant===void 0||$L(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,iR=async(e,t)=>{let n=await BL(e);if(!n.ok)return{status:`failed`,error:n.error,issues:[],cleanupErrors:[]};if(n.value.status===`ok`){let e=n.value.snapshot;return e.migration.v3State===`degraded`?{status:`degraded`,snapshot:e,issues:[ZL(``,``,`$.migration.v3State`,`existing-degraded`)],cleanupErrors:[]}:{status:`committed`,snapshot:e,issues:[],cleanupErrors:[]}}if(n.value.status===`partial`||n.value.status===`corrupt`)return{status:`recovery-required`,issues:n.value.issues.map(e=>ZL(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(mL);if(!r.ok)return{status:`failed`,error:r.error,issues:[],cleanupErrors:[]};let i=[],a=[],o=[],s=async()=>{for(let e of o.reverse()){let n=await t.releaseIfMatches(e.reference,e.blobID);n.ok||a.push({...e.issue,reason:`rollback-${n.error.code}`})}};if(r.value===null){let t={...wL(),migration:{v3State:`complete`}},n=await HL(e,t);return n.ok?{status:`committed`,snapshot:t,issues:i,cleanupErrors:a}:{status:`failed`,error:n.error,issues:i,cleanupErrors:a}}let c;try{c=JSON.parse(r.value)}catch{return{status:`failed`,error:{code:`corrupt`},issues:[ZL(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=qL(c)&&qL(c.state)?c.state.queuedMessages:qL(c)?c.queuedMessages:void 0;if(!qL(l))return{status:`failed`,error:{code:`corrupt`},issues:[ZL(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...wL(),migration:{v3State:`complete`}},d=new Set,f=new Set,p=new Set,m=0,h=Object.entries(l);for(let e=0;e<h.length;e++){let[n,r]=h[e];if(e>=hL.scopes){i.push(ZL(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=eR(n),l=c?SL(c):n;if(!c||!Array.isArray(r)){i.push(ZL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=hL.totalItems){i.push(ZL(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=qL(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(ZL(l,``,h,`legacy-item`));continue}let _=tR(g.owner);if(g.owner!==void 0&&(!_||!XL(c,_))){i.push(ZL(l,$L(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=$L(g.queueItemID)?g.queueItemID:$L(g.id)?g.id:await QL(`queue`,v),b=$L(g.operationID)?g.operationID:await QL(`operation`,`${v}:operation`),x=$L(g.messageID)?g.messageID:await QL(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(ZL(l,y,h,`duplicate-id`));continue}d.add(y),f.add(b),p.add(x);let S=[],C=[],w=new Set,T=Array.isArray(g.attachments)?g.attachments:[];g.attachments!==void 0&&!Array.isArray(g.attachments)&&i.push(ZL(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<T.length&&e<hL.attachmentsPerItem;e++){let n=qL(T[e])?T[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(ZL(l,y,r,`legacy-attachment`));continue}let u=$L(n.id)?n.id:await QL(`attachment`,`${v}:attachment:${e}`),d=ue(u),f=JL(n.filename,u),p=JL(n.mimeType,``,!0),m=YL(n.size);if(w.has(d)){i.push(ZL(l,y,r,`duplicate-attachment-occurrence`));continue}w.add(d);let g=n.source===`local`?n.serverPath===void 0&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`server`?$L(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&$L(n.vscodePath)&&(n.vscodeSource===`file`||n.vscodeSource===`selection`)&&n.serverPath===void 0,_=g?n.source:`local`,b=_===`server`?n.serverPath:void 0,x=_===`vscode`?n.vscodePath:void 0,E=_===`vscode`?n.vscodeSource:void 0,D={attachmentID:u,occurrenceRefID:d,filename:f,mimeType:p,size:m,source:_,...b?{serverPath:b}:{},...x?{vscodePath:x}:{},...E?{vscodeSource:E}:{}},O=e=>{C.push({...D,reason:e}),i.push(ZL(l,y,r,e))};if(c.state===`unbound-legacy`){O(`legacy-unbound-data`);continue}if(!g){i.push(ZL(l,y,r,n.source===`server`?`server-metadata`:n.source===`vscode`?`vscode-metadata`:`attachment-source`)),O(`legacy-bytes-missing`);continue}let k=typeof n.dataUrl==`string`?n.dataUrl:``;if(ie(k)){S.push({version:1,...D,locator:{kind:`url`,url:k}});continue}if(k.startsWith(`blob:`)){O(`legacy-blob-url`);continue}if(!k.startsWith(`data:`)){O(`legacy-bytes-missing`);continue}let A=nR(k);if(!A){O(`legacy-bytes-missing`);continue}let j=await QL(`legacy-blob`,`${y}:${u}`),ee={transportIdentity:c.transportIdentity,owner:{kind:`queue`,ownerID:y},attachmentOccurrenceRefID:d},te=await t.readReference(ee);if(!te.ok||te.value!==void 0&&te.value!==j||!(await t.putAndRetain(ee,j,A)).ok)return await s(),{status:`failed`,error:{code:`unavailable`},issues:i,cleanupErrors:a};te.value===void 0&&o.push({reference:ee,blobID:j,issue:ZL(l,y,r,`blob-retain`)}),S.push({version:1,...D,mimeType:A.type,size:A.size,locator:{kind:`blob`,blobID:j}})}T.length>hL.attachmentsPerItem&&i.push(ZL(l,y,`${h}.attachments`,`legacy-attachment-limit`));let E=YL(g.createdAt),D=typeof g.status==`string`?g.status:`queued`,O=qL(g.failure)?g.failure.kind:g.failureKind,k=O===`pre-dispatch`||O===`ambiguous-dispatch`||O===`definitive`?O:void 0,A=D===`retrying`||k===`pre-dispatch`,j=D===`sending`||D===`reconciling`||k===`ambiguous-dispatch`,ee=D===`unresolved`&&C.length===0,te=C.length>0,M=YL(g.reconciliationStartedAt,E),ne=YL(g.reconciliationDeadlineAt,-1),re=M>2**53-1-3e4?M:M+3e4,oe=Math.max(M,ne>=0?ne:re),se=YL(g.reconciliationChecks),ce=YL(g.reconciliationNextCheckAt,M);j&&ne<0&&M>2**53-1-3e4&&i.push(ZL(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let le=te||ee||c.state===`unbound-legacy`&&j?`unresolved`:A?`retrying`:j?`reconciling`:D===`failed`||k===`definitive`?`failed`:`queued`,N=le===`reconciling`||le===`unresolved`&&!te,de=qL(g.composerDocument)&&typeof g.composerDocument.text==`string`?we(g.composerDocument.text,g.composerDocument.references):void 0,fe=de&&ve(de,`queue-canonical`);g.composerDocument!==void 0&&(!fe||!fe.ok||fe.text!==g.content)&&i.push(ZL(l,y,`${h}.composerDocument`,`degraded-composer-document`));let pe=fe&&fe.ok&&fe.text===g.content?de:void 0,P=pe?ae(pe.text,g.composerMentions):void 0,me=P&&!P.some(e=>pe.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!me&&i.push(ZL(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let he={version:1,queueItemID:y,operationID:b,messageID:x,owner:c,content:g.content,...pe?{composerDocument:pe}:{},...me&&P.length?{composerMentions:P}:{},attachments:S,attachmentIssues:C,createdAt:E,...rR(g.sendConfig)?{sendConfig:rR(g.sendConfig)}:{},status:le,attemptCount:YL(g.attemptCount),...le===`retrying`?{nextAttemptAt:YL(g.nextAttemptAt,E),failureKind:`pre-dispatch`}:N?{reconciliationStartedAt:M,reconciliationDeadlineAt:oe,reconciliationChecks:se,reconciliationNextCheckAt:ce,failureKind:`ambiguous-dispatch`}:le===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(he)}}i.length&&(u.migration.v3State=`degraded`);let g=await HL(e,u);return g.ok?{status:u.migration.v3State===`complete`?`committed`:`degraded`,snapshot:u,issues:i,cleanupErrors:a}:(await s(),{status:`failed`,error:g.error,issues:i,cleanupErrors:a})},aR=(e,t)=>JSON.stringify(e)===JSON.stringify(t),oR=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),sR=e=>e.status===`sending`||e.status===`reconciling`,cR=(e,t,n={})=>{let r={hydration:`idle`,snapshot:wL(),issues:[],enabled:n.enabled??!0},i,a=Promise.resolve(),o=new Set,s=e=>{r=e,o.forEach(e=>e())},c=e=>{let t={};for(let[n,i]of Object.entries(e.queues))t[n]=aR(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=aR(r.snapshot.queues,t)&&aR(r.snapshot.migration,e.migration)?r.snapshot:{...e,queues:t};s({...r,snapshot:n})},l=e=>{let t=a.then(e,e);return a=t.then(()=>void 0,()=>void 0),t},u=e=>{let t=r.snapshot.queues[e.scopeKey]?.find(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID);return t&&SL(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?oR(`unseeded`):r.hydration===`recovery-required`?oR(`recovery-required`,[...r.issues]):r.hydration===`failed`?oR(`failed`,[...r.issues]):void 0,f=async t=>{let n=r.snapshot,i=await t();return i.status===`committed`&&c(e.getSnapshot()),i.status===`committed`&&i.current===!1?{...i,status:`stale`}:(i.status!==`committed`&&r.snapshot!==n&&s({...r,snapshot:n}),i)},p=()=>t(),m=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,h=new Map,g=e=>`${e.scopeKey}\u0000${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,_=e=>h.has(g(e)),v=()=>oR(`failed`,[{phase:`identity`,code:`reserved`}]),y=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,b=async()=>{for(let[t,n]of h){let[,r,i,a]=t.split(`\0`);try{(await e.releaseSend({queueItemID:r,operationID:i,messageID:a},n.token,n.runtime)).status!==`stale`&&h.delete(t)}catch{h.delete(t)}}};return{subscribe:e=>(o.add(e),()=>o.delete(e)),getState:()=>r,captureRuntime:p,hydrate:t=>i??=l(async()=>{await b(),s({...r,hydration:`hydrating`});let n=await e.hydrate(t),i=n.errors.map(e=>({phase:e.phase,code:e.code,scopeKey:e.scopeKey,path:e.path})),a=n.status===`committed`||n.status===`disabled`?`ready`:n.status===`recovery-required`?`recovery-required`:`failed`;return c(e.getSnapshot()),s({...r,hydration:a,issues:i,enabled:r.enabled}),n}).finally(()=>{i=void 0}),flush:()=>l(()=>e.flush()),setEnabled:t=>l(async()=>{t||await b(),await e.setEnabled(t),s({...r,enabled:t})}),admit:(t,n,r=p())=>l(async()=>d()||(m(t,r)?f(()=>e.admit(t,r,n)):oR(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return oR(`stale`);if(sR(i))return oR(`failed`,[{phase:`identity`,code:`locked`}]);if(_(t))return v();let a=await e.acquireSendPayload(t,n);return a.status!==`committed`||!a.token?a.status===`committed`?oR(`failed`,[{phase:`identity`,code:`missing-send-token`}]):a:(h.set(g(t),{token:a.token,runtime:n}),{...a,item:JSON.parse(JSON.stringify(i)),values:a.values?.map(({attachment:e,value:t})=>({attachment:JSON.parse(JSON.stringify(e)),value:t}))})}),releaseEditReservation:(t,n,r=p())=>l(async()=>{let i=g(t),a=h.get(i);if(!a||a.token!==n||!y(a.runtime,r))return oR(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),oR(`failed`,[{phase:`runtime`,code:`reservation-release-threw`}])}}),removeEditReservation:(t,n,i=p())=>l(async()=>{let a=g(t),o=h.get(a),l=d(),f=u(t);if(l)return{...l,durableRemoval:!1};if(!o||o.token!==n||!y(o.runtime,i)||!f||!m(f,i))return{...oR(`stale`),durableRemoval:!1};if(sR(f))return{...oR(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let p=r.snapshot,_=await e.remove(t,i),v=_.status===`committed`;return v&&(h.delete(a),c(e.getSnapshot())),v&&_.current===!1?{..._,status:`stale`,durableRemoval:v}:(!v&&r.snapshot!==p&&s({...r,snapshot:p}),{..._,durableRemoval:v})}),remove:(t,n=p())=>l(async()=>{let i=d(),a=u(t);if(i)return{...i,durableRemoval:!1};if(!a||!m(a,n))return{...oR(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(sR(a))return{...oR(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let o=r.snapshot,l=await e.remove(t,n),f=l.status===`committed`;return f&&c(e.getSnapshot()),f&&l.current===!1?{...l,status:`stale`,durableRemoval:f}:(!f&&r.snapshot!==o&&s({...r,snapshot:o}),{...l,durableRemoval:f})}),reorder:(t,n,i=p())=>l(async()=>{let a=d(),o=r.snapshot.queues[t];return a||(o?o.some(e=>_({scopeKey:t,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}))?v():o.some(e=>sR(e)||!m(e,i))?oR(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):oR(`failed`,[{phase:`identity`,code:`locked`}]))}),bind:(t,n,r=p())=>l(async()=>{let i=d(),a=u(t);return i||(!a||n.transportIdentity!==r.transportIdentity||!m(a,r)?oR(`stale`):_(t)?v():sR(a)?oR(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.bind(t,n,r)))}),bindMany:(t,n,r=p())=>l(async()=>{let i=d(),a=t.map(u);return i||(t.some(_)?v():!a.length||a.some(e=>!e||sR(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?oR(`stale`):f(()=>e.bindMany(t,n,r)))}),transition:(t,n,r,i=p())=>l(async()=>{let a=d(),o=u(t);return a||(!o||!m(o,i)?oR(`stale`):_(t)?oR(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):oR(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?oR(`stale`):_(t)?oR(`failed`,[{phase:`identity`,code:`reserved`}]):f(()=>e.remove(t,n)))}),acquireSendPayload:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?oR(`stale`):_(t)?oR(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},lR=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),uR=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,dR=(e,t,n)=>e.owner.state===`bound`?{transportIdentity:e.owner.transportIdentity,owner:{kind:t,ownerID:t===`queue`?e.queueItemID:e.operationID},attachmentOccurrenceRefID:n}:void 0,fR=e=>JSON.stringify(e),pR=e=>({owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,attachments:e.attachments,attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,sendConfig:e.sendConfig}),mR=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,hR=e=>typeof e==`number`&&Number.isSafeInteger(e),gR=(e,t)=>{if(fR(pR(e))!==fR(pR(t))||!hR(t.attemptCount)||t.attemptCount<e.attemptCount)return!1;let n=`${e.status}:${t.status}`;return!(![`queued:sending`,`retrying:sending`,`sending:retrying`,`sending:reconciling`,`sending:failed`,`reconciling:reconciling`,`reconciling:unresolved`].includes(n)||t.status===`sending`&&t.attemptCount!==e.attemptCount+1||t.status!==`sending`&&t.attemptCount!==e.attemptCount||[t.reconciliationStartedAt,t.reconciliationDeadlineAt,t.reconciliationChecks,t.reconciliationNextCheckAt].some(e=>e!==void 0&&!hR(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},_R=e=>{if(!e.composerDocument)return!0;let t=new Set(e.composerDocument?oe(e.composerDocument).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]),n=new Set(e.attachments.map(e=>e.occurrenceRefID));return[...t].every(e=>n.has(e))},vR=(e,t,n={})=>{let r=wL(),i=!1,a=n.enabled??!0,o=0,s=!1,c=!1,l=Promise.resolve(),u=new Map,d=new Map,f=new Map,p=0n,m=e=>{let t=l.then(e,e);return l=t.then(()=>void 0,()=>void 0),t},h=()=>Object.values(r.queues).flat(),g=e=>h().find(t=>uR(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:SL(n.owner),queueItemID:n.queueItemID,operationID:n.operationID}:{},...r?{attachmentID:r.attachmentID,occurrenceRefID:r.occurrenceRefID}:{},...i?{path:i}:{}}),v=(e,t)=>e.attachments.flatMap(n=>n.locator.kind===`blob`?(()=>{let r=dR(e,t,n.occurrenceRefID);return r?[{reference:r,blobID:n.locator.blobID,attachment:n,item:e}]:[]})():[]),y=(e,t)=>({transportIdentity:e.transportIdentity,generation:e.generation,enableGeneration:o,identity:{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID}}),b=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,x=async(e,t)=>{if(!a||t.enableGeneration!==o||e.transportIdentity!==t.transportIdentity||e.generation!==t.generation||!await e.isCurrent())return!1;let n=await e.current?.();return n===void 0||n.transportIdentity===t.transportIdentity&&n.generation===t.generation},S=()=>Q(a?`stale`:`disabled`,[],[],!1),C=()=>Q(`recovery-required`,[_(`metadata`,`recovery-required`)]),w=async(t,n)=>{let r=await e.releaseIfMatches(t.reference,t.blobID);r.ok||(u.set(Se(t.reference),t),n.push(_(`blob`,r.error.code,t.item,t.attachment)))},T=async e=>{let t=[];for(let n of[...e].reverse())await w(n,t);return t},E=()=>{let e=new Map;for(let t of h())for(let n of v(t,`queue`))e.set(Se(n.reference),n.blobID);return e},D=(e,t,n=E())=>n.get(e)===t.blobID||d.get(e)?.blobID===t.blobID,O=async(e,n,i)=>{if(!await x(n,i))return{committed:!1,current:!1};let a=await t.persist(e);return a.ok?(r=e,{committed:!0,current:await x(n,i)}):{committed:!1,current:!0,error:_(`metadata`,a.error.code)}},k=async(t=!1)=>{if(!i)return Q(`unseeded`);if(!a)return Q(`disabled`);if(c||s)return C();let n=E(),r=t?new Map:new Map([...d].map(([e,t])=>[e,t.blobID])),o=new Map;for(let e of h())for(let t of v(e,`queue`))o.set(Se(t.reference),t);let l=new Map(d),u=[];if(!s){let t=await e.reconcileReferences(n,{ownerKinds:[`queue`]});if(!t.ok)u.push(_(`blob`,t.error.code));else for(let e of t.value.missing){let t=o.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}}let f=await e.reconcileReferences(r,{ownerKinds:[`send`]});if(!f.ok)u.push(_(`blob`,f.error.code));else for(let e of f.value.missing){let t=l.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}return Q(u.length?`failed`:`committed`,u)};return{hydrate:e=>m(async()=>{let n=e===void 0?t.readDetailed?await t.readDetailed():t.read?await t.read().then(e=>e.ok?{ok:!0,value:e.value===null?{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}:{raw:null,snapshot:e.value,status:`ok`,issues:[],degradedScopeKeys:[]}}:e):void 0:void 0;if(n&&!n.ok)return Q(`failed`,[_(`metadata`,n.error.code)]);let o=n?.value??e,l=o&&`status`in o?o:void 0,u=l?.snapshot??(o&&!(`status`in o)?o:null);if(l?.snapshot===null&&l.raw!==null)try{u=JSON.parse(l.raw)}catch{u=null}let p=u?PL(u,{normalizeSending:!0}):{status:`ok`,snapshot:wL(),issues:[],degradedScopeKeys:[]},m=l?.issues??p.issues;i=!0;let h=l?.status===`corrupt`||p.status===`corrupt`,g=l?.status===`partial`||m.length>0;return d.clear(),f.clear(),h?(c=!0,s=!0,Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e})))):(r=p.snapshot,c=g,s=g,g?Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))):a?k(!0):Q(`disabled`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))))}),getSnapshot:()=>lR(r),admit:(t,n,o)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();if(!b(t,n))return S();let s=SL(t.owner),l=lR(r);l.queues[s]=[...l.queues[s]??[],t];let d=PL(l);if(!_R(t))return Q(`failed`,[_(`identity`,`composer-attachment-mismatch`,t)]);if(d.status===`corrupt`||d.issues.length)return Q(`failed`,d.issues.map(e=>({phase:`identity`,code:e.reason,...e})));let f=y(n,t);if(!await x(n,f))return S();let p=[];for(let r of v(t,`queue`)){if(!await x(n,f))return{...S(),cleanupErrors:await T(p)};let i=await e.readReference(r.reference);if(!i.ok)return Q(`failed`,[_(`blob`,i.error.code,t,r.attachment)],await T(p));if(i.value&&i.value!==r.blobID)return Q(`failed`,[_(`blob`,`blob-id-conflict`,t,r.attachment)],await T(p));if(i.value===r.blobID){let n=await e.read(r.blobID);if(n.ok)continue;if(n.error.code!==`missing-blob`)return Q(`failed`,[_(`blob`,n.error.code,t,r.attachment)],await T(p));let i=await o?.(r.attachment);if(i===void 0)return Q(`failed`,[_(`blob`,`missing-blob`,t,r.attachment)],await T(p));let a=await e.putAndRetain(r.reference,r.blobID,i);if(!a.ok)return Q(`failed`,[_(`blob`,a.error.code,t,r.attachment)],await T(p));continue}let a=await e.read(r.blobID),s=a.ok?await e.retain(r.reference,r.blobID):a.error.code===`missing-blob`?await(async()=>{let t=await o?.(r.attachment);return t===void 0?{ok:!1,error:{code:`missing-blob`}}:e.putAndRetain(r.reference,r.blobID,t)})():a;if(!s.ok)return Q(`failed`,[_(`blob`,s.error.code,t,r.attachment)],await T(p));p.push(r)}let m=await O(d.snapshot,n,f);if(!m.committed)return m.error?Q(`failed`,[m.error],await T(p)):{...S(),cleanupErrors:await T(p)};for(let e of v(t,`queue`))u.delete(Se(e.reference));return Q(`committed`,[],[],m.current)}),transition:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o||!b(o,n))return S();let s=y(n,o);if(!await x(n,s))return S();let l=t(lR(o)),u=lR(r),d=SL(o.owner);u.queues[d]=u.queues[d].map(t=>uR(t,e)?l:t);let f=PL(u);if(!uR(l,e)||!gR(o,l)||f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-transition`,o)]);let p=await O(f.snapshot,n,s);return p.committed?Q(`committed`,[],[],p.current):p.error?Q(`failed`,[p.error]):S()}),reorder:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=r.queues[e];if(!o||o.length!==t.length||new Set(t).size!==o.length||o.some(e=>!t.includes(e.queueItemID)))return Q(`failed`,[_(`identity`,`invalid-reorder`)]);if(o.some(e=>!b(e,n)))return S();let s=y(n,o[0]);if(!await x(n,s))return S();let l=new Map(o.map(e=>[e.queueItemID,e])),u=lR(r);u.queues[e]=t.map(e=>l.get(e));let d=await O(u,n,s);return d.committed?Q(`committed`,[],[],d.current):d.error?Q(`failed`,[d.error]):S()}),bind:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o)return Q(`failed`,[_(`identity`,`invalid-bind`)]);if(!b(o,n)||t.transportIdentity!==n.transportIdentity)return S();if(o.owner.state!==`unbound-legacy`||o.attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let s=SL(o.owner),l=r.queues[s];if(!l||l.length!==1||!uR(l[0],e)||l[0].owner.state!==`unbound-legacy`||l[0].attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let u=y(n,o);if(!await x(n,u))return S();let d={...lR(o),owner:t},f=PL({version:4,queues:{[SL(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=lR(r),m=s,h=SL(t);p.queues[m]=p.queues[m].filter(t=>!uR(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=PL(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),bindMany:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=e.map(g);if(!o.length||o.some(e=>!e||!b(e,n)||e.owner.state!==`unbound-legacy`)||t.transportIdentity!==n.transportIdentity)return S();let s=o[0].owner,l=r.queues[SL(s)];if(!l||l.length!==e.length||o.some(e=>fR(e.owner)!==fR(s)||e.attachments.length)||l.some((t,n)=>!uR(t,e[n])))return Q(`failed`,[_(`identity`,`invalid-bind`)]);let u=y(n,o[0]);if(!await x(n,u))return S();let d=o,f=d.map(e=>({...lR(e),owner:t})),p=lR(r),m=SL(s),h=SL(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>uR(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=PL(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),acquireSendPayload:(t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let r=g(t);if(!r||!b(r,n))return S();if(f.has(mR(t)))return Q(`failed`,[_(`identity`,`active-send`,r)]);let o=y(n,r);if(!await x(n,o))return S();let s=[],l=[];for(let t of r.attachments){if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};if(t.locator.kind===`url`){l.push({attachment:t,value:t.locator.url});continue}let i=v(r,`send`).find(e=>e.attachment.occurrenceRefID===t.occurrenceRefID),a=await e.readReference(i.reference);if(!a.ok||a.value&&a.value!==i.blobID)return Q(`failed`,[_(`blob`,a.ok?`blob-id-conflict`:a.error.code,r,t)],await T(s));if(a.value!==i.blobID){let n=await e.retain(i.reference,i.blobID);if(!n.ok)return Q(`failed`,[_(`blob`,n.error.code,r,t)],await T(s));s.push(i)}let c=await e.read(i.blobID);if(!c.ok)return Q(`failed`,[_(`blob`,c.error.code,r,t)],await T(s));l.push({attachment:t,value:c.value})}if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};let u=v(r,`send`),m=`${++p}`;for(let e of u)d.set(Se(e.reference),e);return f.set(mR(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(mR(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(mR(e));let r=[];for(let e of n.held)d.delete(Se(e.reference)),await w(e,r);return Q(r.length?`failed`:`committed`,[],r,!0)}),remove:(e,t)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let n=g(e);if(!n||!b(n,t))return S();let o=y(t,n);if(!await x(t,o))return S();let s=lR(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!uR(t,e));r.length?s.queues[t]=r:delete s.queues[t]}let l=await O(s,t,o);if(!l.committed)return l.error?Q(`failed`,[l.error]):S();let u=f.get(mR(e));f.delete(mR(e));let p=[];for(let e of v(n,`queue`))await w(e,p);for(let e of u?.held??v(n,`send`))d.delete(Se(e.reference)),await w(e,p);return Q(`committed`,[],p,l.current)}),reconcile:()=>m(()=>k(!1)),retryCleanup:()=>m(async()=>{if(!a)return Q(`disabled`);if(c||s)return C();let t=[],n=E();for(let[r,i]of u){if(D(r,i,n)){u.delete(r);continue}let a=await e.releaseIfMatches(i.reference,i.blobID);a.ok?u.delete(r):t.push(_(`blob`,a.error.code,i.item,i.attachment))}return Q(t.length?`failed`:`committed`,[],t)}),flush:()=>l.then(()=>t.flush()),setEnabled:async e=>{a=e,o++,t.cancelPending(),await t.setEnabled(e),await l}}},yR=()=>{let e=zL(),t=UL(e),n=Un();return{controller:cR(vR(n,t),()=>{let e=r(),t=s();return{transportIdentity:e,generation:t,isCurrent:()=>r()===e&&s()===t}}),migrate:async()=>iR(e,n)}},bR=(e=yR)=>{let t,n,r=()=>(t??=e()).controller;return{subscribe:e=>r().subscribe(e),getState:()=>r().getState(),captureRuntime:()=>r().captureRuntime(),hydrate:r=>n??=(async()=>{let n=t??=e();if(r!==void 0)return n.controller.hydrate(r);let i=await n.migrate();return i.status===`committed`?n.controller.hydrate(i.snapshot):i.status===`degraded`?n.controller.hydrate({raw:null,snapshot:i.snapshot,status:`partial`,issues:i.issues??[{path:`$.migration`,reason:`degraded`}],degradedScopeKeys:[]}):n.controller.hydrate({raw:null,snapshot:null,status:`corrupt`,issues:i.issues??[{path:`$`,reason:i.status}],degradedScopeKeys:[]})})().finally(()=>{n=void 0}),flush:()=>r().flush(),setEnabled:e=>r().setEnabled(e),admit:(e,t,n)=>r().admit(e,t,n),materializeForEdit:(e,t)=>r().materializeForEdit(e,t),releaseEditReservation:(e,t,n)=>r().releaseEditReservation(e,t,n),removeEditReservation:(e,t,n)=>r().removeEditReservation(e,t,n),remove:(e,t)=>r().remove(e,t),reorder:(e,t,n)=>r().reorder(e,t,n),bind:(e,t,n)=>r().bind(e,t,n),bindMany:(e,t,n)=>r().bindMany(e,t,n),transition:(e,t,n,i)=>r().transition(e,t,n,i),confirm:(e,t)=>r().confirm(e,t),acquireSendPayload:(e,t)=>r().acquireSendPayload(e,t),releaseSend:(e,t,n)=>r().releaseSend(e,t,n)}},xR,SR=()=>xR??=bR(),CR=26214400,wR=52428800,TR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),ER=async(e,t)=>{let n=0;for(let t of e){let e=t.source===`local`?t.value.size:t.size;if(!Number.isSafeInteger(e)||e<0||e>CR)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>wR)throw RangeError(`message-queue-attachments-too-large`);let r=[];for(let n of e){if(n.source===`server`){r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||`application/octet-stream`,size:n.size,source:`server`,locator:{kind:`server-path`,path:n.path}});continue}let e=await FI({signal:t});await II(e,n.value,await TR(n.value),t),r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||n.value.type||`application/octet-stream`,size:n.value.size,source:`local`,locator:{kind:`upload`,uploadID:e.uploadID}})}return{attachments:r,totalBytes:n}},DR,OR=()=>{let e=`openchamber:message-queue-import-client-id`;try{let t=globalThis.localStorage,n=t.getItem(e);if(n)return n;let r=fe();return t.setItem(e,r),r}catch{return DR??=fe()}},kR={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:WI,create:DI,details:OI,stage:kI,seal:AI,upload:ER,resolveURL:async(e,t)=>{let n=new URL(e);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Error(`durable-url-scheme`);let r=await fetch(e,{signal:t});if(!r.ok)throw Error(`durable-url-unavailable`);return r.blob()},existing:()=>[],refresh:async()=>{},publish:()=>{}},AR=e=>({scopeKey:SL(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),jR=async e=>`shadow-import:${[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`,MR=e=>({status:e.status===`sending`?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{dueAt:e.nextAttemptAt},...e.reconciliationStartedAt===void 0?{}:{reconciliationStartedAt:e.reconciliationStartedAt},...e.reconciliationDeadlineAt===void 0?{}:{reconciliationDeadlineAt:e.reconciliationDeadlineAt},...e.reconciliationChecks===void 0?{}:{reconciliationChecks:e.reconciliationChecks},...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt},...e.failureKind===void 0?{}:{failureKind:e.failureKind}}),NR=e=>Array.isArray(e)?`[${e.map(NR).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${NR(e[t])}`).join(`,`)}}`:JSON.stringify(e),PR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(NR(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),FR=e=>{let t={...kR,...e},n=e.create!==void 0||e.stage!==void 0||e.seal!==void 0||e.admit===void 0,r=e=>(t.publish(e),e);return{run:async e=>{let i=t.capture(),a=new AbortController,o=e??a.signal,s=await t.queue.hydrate();if(!t.current(i))return r({status:`pending`,imported:0,total:0,issues:[`runtime-stale`],canActivate:!1});let c=t.queue.getState();if(s.status===`recovery-required`||c.hydration===`recovery-required`||c.snapshot.migration.v3State===`degraded`)return r({status:`degraded`,imported:0,total:0,issues:[`recovery-required`],canActivate:!1});if(c.hydration!==`ready`)return r({status:`error`,imported:0,total:0,issues:[`hydrate-failed`],canActivate:!1});let l=Object.entries(c.snapshot.queues).sort(([e],[t])=>e.localeCompare(t)).flatMap(([,e])=>e).filter(e=>e.owner.state===`bound`&&e.owner.transportIdentity===i.transportIdentity),u=t.queue.captureRuntime(),d=Object.values(c.snapshot.queues).flat().some(e=>e.owner.state!==`bound`),f=0,p=`prepare`;try{let e=[],a=new Map;for(let s of l){if(!t.current(i)||o.aborted)return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});let c=t.existing().filter(e=>e.queueItemID===s.queueItemID||e.operationID===s.operationID||e.messageID===s.messageID);if(c.length){if(!c.some(e=>e.queueItemID===s.queueItemID&&e.operationID===s.operationID&&e.messageID===s.messageID))return r({status:`degraded`,imported:f,total:l.length,issues:[`cross-id-conflict`],canActivate:!1});f++;continue}if(s.attachments.some(e=>e.source===`vscode`))return r({status:`degraded`,imported:f,total:l.length,issues:[`vscode-attachment`],canActivate:!1});let d=s.owner;if(d.state!==`bound`)return r({status:`pending`,imported:f,total:l.length,issues:[`unbound-legacy`],canActivate:!1});p=`acquire`;let m=await t.queue.acquireSendPayload(AR(s),u);if(m.status!==`committed`||!m.token)return r({status:`degraded`,imported:f,total:l.length,issues:[`payload-unavailable`],canActivate:!1});try{let i=new Map(m.values?.map(e=>[e.attachment.occurrenceRefID,e.value])),c=[];for(let e of s.attachments){let n=JSON.parse(e.occurrenceRefID);if(e.source===`server`&&e.serverPath){c.push({attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`server-path`,path:e.serverPath}});continue}let a=i.get(e.occurrenceRefID),s=typeof a==`string`?await t.resolveURL(a,o):a??(e.locator.kind===`url`?await t.resolveURL(e.locator.url,o):void 0);if(!s||typeof s!=`object`||typeof s.arrayBuffer!=`function`||s.size!==e.size||s.type&&s.type!==e.mimeType)return r({status:`degraded`,imported:f,total:l.length,issues:[`attachment-bytes-unavailable`],canActivate:!1});p=`upload`;let u=await t.upload([{attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,source:`local`,value:s}],o);c.push(u.attachments[0])}let u=`${d.directory}\u0000${d.sessionID}`,h=a.get(u)??a.size;a.set(u,h);let g=e.filter(e=>e.scopeOrdinal===h).length,_={scope:{directory:d.directory,sessionID:d.sessionID},item:{queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID,content:s.content,...s.composerDocument?{composerDocument:s.composerDocument}:{},...s.composerMentions?{composerMentions:s.composerMentions}:{},...s.sendConfig?{sendConfig:s.sendConfig}:{},attachments:c,attachmentIssues:s.attachmentIssues,createdAt:s.createdAt,migrationImport:!0,migrationState:MR(s)}};n||(p=`admit`,await t.admit({requestID:await jR(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await PR(_)}),f++}finally{await t.queue.releaseSend(AR(s),m.token,u)}}if(!n){p=`refresh`,await t.refresh();let e=l.every(e=>t.existing().some(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID));return r({status:d?`pending`:e?`complete`:`error`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:e?[]:[`catalog-incomplete`],canActivate:e&&!d})}let s=await PR(e.map(({item:e,scopeOrdinal:t,itemOrdinal:n})=>({scopeOrdinal:t,itemOrdinal:n,owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,sendConfig:e.sendConfig,attachments:e.attachments.map(({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})=>({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})),attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,status:e.status,attemptCount:e.attemptCount})));p=`create`;let c=t.kind??`activation`,m=OR(),h=t.authorityGeneration?.()??i.generation,g=await t.create({requestID:`shadow-create:${c}:${h}:${m}:${s}`,kind:c,clientID:m,snapshotHash:s,itemCount:e.length,protocol:4,expectedGeneration:h,signal:o});if(g.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:g.manifestHash,activationEpoch:g.commit?.activationEpoch});let _=await t.details(g.importID,o);if(_.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:_.manifestHash,activationEpoch:_.commit?.activationEpoch});let v=new Set(_.staged.map(e=>`${e.scopeOrdinal}:${e.itemOrdinal}`));if(p=`stage`,_.state===`staging`){for(let n of e)if(!v.has(`${n.scopeOrdinal}:${n.itemOrdinal}`)){if(!t.current(i))return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});await t.stage(g.importID,{requestID:`shadow-stage:${g.importID}:${n.scopeOrdinal}:${n.itemOrdinal}:${n.payloadHash}`,scopeOrdinal:n.scopeOrdinal,itemOrdinal:n.itemOrdinal,payload:n.payload,payloadHash:n.payloadHash,signal:o})}}p=`seal`;let y=_.state===`sealed`?{manifestHash:_.manifestHash}:await t.seal(g.importID,{requestID:`shadow-seal:${g.importID}:${s}`,signal:o});return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:y.manifestHash})}catch{return r({status:`error`,imported:f,total:l.length,issues:[`shadow-${p}-failed`],canActivate:!1})}}}},IR=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,LR=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),RR={snapshot:e=>LR(aL(L),e),status:e=>LR(nL(L),e),scope:hI,waitInvalidation:_I,admit:WI,edit:GI,remove:qI,reserve:zI,renew:VI,release:BI,removeReserved:HI,reorder:JI,manualSend:KI,upload:ER,client:L,capture:()=>({transportIdentity:r(),generation:s()}),current:e=>e.transportIdentity===r()&&e.generation===s(),legacyManualSend:async()=>{},shadowQueue:SR,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},zR=e=>e instanceof X&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),BR=e=>e instanceof X&&e.code===`unavailable`,VR=8,HR=(e,t)=>{if(!t)return[...e];let n=t.items.map(e=>e.queueItemID),r=new Set(n),i=e.filter(e=>r.has(e)),a=new Set(i);return[...i,...n.filter(e=>!a.has(e))]},UR=e=>`${e.transportIdentity}\u0000${ne(e.directory)}\u0000${e.sessionID}`,WR=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),GR=(e,t,n)=>{let r=new AbortController,i,a=()=>r.abort();t?.aborted?a():t?.addEventListener(`abort`,a,{once:!0}),r.signal.aborted||(i=setTimeout(a,n));let o=new Promise((e,t)=>{r.signal.aborted?t(new X(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new X(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},KR=(e={})=>{let t={...RR,...e},n={...t,snapshot:e.snapshot??(e=>LR(aL(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>LR(nL(t.client,t.capture().transportIdentity),e))},r={transportIdentity:n.capture().transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}},i,a=0,o,s=new Set,c=new Map,l=new Map,u=new Map,d=[],f=e=>c.get(e)?.forEach(e=>e()),p=(e,t)=>{let n=u.get(e)??d,r=t(n);r!==n&&(r.length?u.set(e,r):u.delete(e),f(e))},m=e=>{r={...r,...e},s.forEach(e=>e()),`scopes`in e||c.forEach(e=>e.forEach(e=>e()))},h=e=>{let t=n.capture();return r.transportIdentity===e.transportIdentity&&t.transportIdentity===e.transportIdentity&&t.generation===e.generation&&n.current(e)},g=e=>{let t=[...u.keys()];i?.abort(),i=void 0,o=void 0,l.clear(),u.clear(),m({transportIdentity:e.transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),t.forEach(f)},_=()=>{let e=n.capture();return r.transportIdentity!==e.transportIdentity&&g(e),e},v=(e,t,n)=>{let r=new Set([...e.keys(),...t.keys()]);for(let i of r){let r=e.get(i),a=t.get(i);if(r?.revision===a?.revision&&r?.directory===a?.directory&&r?.sessionID===a?.sessionID)continue;let o=a?UR({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?UR({transportIdentity:n,directory:r.directory,sessionID:r.sessionID}):``;c.get(o)?.forEach(e=>e())}},y=(e,t)=>{if(!h(t))return;let n=r.scopes,i=new Map(e.map(e=>[e.scopeID,e]));for(let[e,t]of l)i.get(t.scope.scopeID)?.revision!==t.revision&&l.delete(e);m({scopes:i}),v(n,i,t.transportIdentity)},b=async(e,t,r,i)=>{let a=0,o,s,c=[];do{let t=i??await n.scope(e.scopeID,{offset:a,limit:8,expectedRevision:o,signal:r});if(i=void 0,s||=t,t.revision!==e.revision||t.scopeID!==e.scopeID||o!==void 0&&t.revision!==o)throw new X(409,`revision_conflict`);c.push(...t.items),o=t.revision,a=t.nextOffset??-1}while(a>=0);if(!s||c.length!==s.itemCount)throw new X(200,`unavailable`);return{...s,items:c}},x=e=>({scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}),S=e=>Math.max(n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`])?.revision??0,...[...r.scopes.values()].map(e=>e.revision)),C=(e,t)=>{if(!h(t))return;let i=r.scopes.get(e.scopeID);if(i&&i.revision>e.revision)return;oL(n.client,e,t.transportIdentity);let a=UR({transportIdentity:t.transportIdentity,directory:e.directory,sessionID:e.sessionID});return(!i||i.revision!==e.revision||i.directory!==e.directory||i.sessionID!==e.sessionID)&&y([...r.scopes.values()].filter(t=>t.scopeID!==e.scopeID).concat(x(e)),t),p(a,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n}),e},w=(e,t,i)=>{if(!h(i)||e.revision<S(i))return!1;let a=new Map(e.scopes.map(e=>[e.scopeID,e]));if([...r.scopes.values()].some(e=>{let t=a.get(e.scopeID);return t!==void 0&&t.revision<e.revision}))return!1;let o=r.scopes;for(let e of t)oL(n.client,e,i.transportIdentity);if(cL(n.client,e,i.transportIdentity),e.scopes.length===0)uL(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||dL(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=UR({transportIdentity:i.transportIdentity,directory:e.directory,sessionID:e.sessionID});p(t,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n})}return!0},T=async()=>{let e=_(),t=i?.signal??new AbortController().signal;m({isFetching:!0,hydration:`hydrating`,error:void 0});try{let i=await n.status(t);if(!h(e)||(sL(n.client,i,e.transportIdentity),m({capability:i.capability?`available`:`unsupported`,authority:i.authority}),!i.capability))return;let a=await n.snapshot(t);if(!h(e))return;let o=r.scopes,s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));w(a,s,e)&&m({hydration:`ready`})}catch(n){if(!h(e)||t.aborted)return;m({capability:n instanceof X&&n.status===501?`unsupported`:`error`,hydration:`error`,error:n})}finally{h(e)&&m({isFetching:!1})}},E=async(e,t)=>{for(;!t.aborted&&i;){if(!h(e))return`stale`;let i=n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`]),a=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;let o=new Map(r.scopes);if(!(i?.revision!==a.revision||a.scopes.some(e=>o.get(e.scopeID)?.revision!==e.revision)||[...o.keys()].some(e=>!a.scopes.some(t=>t.scopeID===e))))return`applied`;let s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;w(a,s,e)&&m({hydration:`ready`,error:void 0});let c=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;if(c.revision===a.revision)return`applied`}return`aborted`},D=async()=>{await T();let e=0,t=i;if(!t)return;let r=t.signal;for(;!r.aborted&&i===t;){let a=n.capture();try{let t=await E(a,r);if(t===`aborted`||t===`stale`)return;let i=S(a),o=await n.waitInvalidation(i,{signal:r});if(!h(a)||r.aborted||o===`aborted`)return;e=0}catch(n){if(r.aborted||i!==t||!h(a))return;if(n instanceof X&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await WR(Math.min(3e4,500*2**e++),r)}}},O=async(e,t,a)=>{let o=await n.snapshot(i?.signal);if(!h(t))return;let s=o.scopes.find(t=>t.scopeID===e);if(!s)throw a;let c=await b(s,t,i?.signal??new AbortController().signal);return C(c,t)??lL(n.client,e,r.scopes.get(e)?.revision??s.revision,t.transportIdentity)},k=async(e,t,i,a)=>{let o=r.scopes.get(e),s=o&&o.revision>=t?lL(n.client,e,o.revision,i.transportIdentity):void 0;if(s)return s;let c=await n.scope(e,{offset:0,limit:8,signal:a});if(!h(i)||c.scopeID!==e||c.revision<t)return;let l=r.scopes.get(e);if(l&&l.revision>c.revision)return;let u=await b({scopeID:e,revision:c.revision,directory:c.directory,sessionID:c.sessionID,worktreeState:c.worktreeState,itemCount:c.itemCount},i,a,c);return C(u,i)},A=async(e,t,i)=>{let a=_(),o=t;for(let t=0;t<VR;t++){let s=r.scopes.get(e),c=s?lL(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!BR(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(zR(n)&&t+1<VR){let t=await O(e,a,n);if(!t)return{status:`stale`};o=t.revision;continue}throw await O(e,a,n).catch(()=>void 0),n}if(!h(a))return{status:`stale`};let u=e=>l===void 0?e:{...e,committedRevision:l};for(let t=0;t<2;t++)try{let t=await O(e,a,new X(409,`revision_conflict`));if(!t)return u({status:`stale`});await fL(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?lL(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(zR(r)&&!t)continue;return h(a)?(m({error:r}),fL(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new X(409,`revision_conflict`)},j,ee=()=>{i?.abort(),i=void 0,o=void 0},te=()=>{j!==void 0&&(clearTimeout(j),j=void 0),!i&&(i=new AbortController,D())},M=()=>{j!==void 0&&clearTimeout(j),j=setTimeout(()=>{j=void 0,a||ee()},0)};return{subscribe:e=>(s.add(e),()=>s.delete(e)),subscribeScope:(e,t)=>{let n=UR(e),r=c.get(n)??new Set;return r.add(t),c.set(n,r),()=>{r.delete(t),r.size||c.delete(n)}},getState:()=>(_(),r),captureRuntime:()=>_(),getScope:e=>{let t=_();if(e.transportIdentity!==t.transportIdentity||r.transportIdentity!==e.transportIdentity)return;let i=[...r.scopes.values()].find(t=>ne(t.directory)===ne(e.directory)&&t.sessionID===e.sessionID);if(!i)return;let a=`${e.transportIdentity}\u0000${i.scopeID}`,o=l.get(a);if(o?.revision===i.revision)return o.scope;let s=lL(n.client,i.scopeID,i.revision,e.transportIdentity);return s&&l.set(a,{revision:i.revision,scope:s}),s},getPendingAdmissions:e=>{let t=_();return e.transportIdentity===t.transportIdentity&&r.transportIdentity===e.transportIdentity?u.get(UR(e))??d:d},start:()=>{a++,_(),te()},stop:()=>{a=Math.max(0,a-1),a||M()},restart:()=>{j!==void 0&&(clearTimeout(j),j=void 0),ee(),g(n.capture()),a&&te()},refresh:T,runShadowImport:()=>{if(o)return o;let e=(async()=>{let e=_();if(r.capability!==`available`||r.authority!==`shadow`){let e={status:`pending`,imported:0,total:0,issues:[`shadow-unavailable`],canActivate:!1};return m({importState:e}),e}return FR({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>lL(n.client,t.scopeID,t.revision,e.transportIdentity)?.items??[]),refresh:T,publish:t=>{h(e)&&m({importState:t})}}).run(i?.signal)})().finally(()=>{o===e&&(o=void 0)});return o=e,e},pause:async e=>{await NI({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await PI({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=UR({transportIdentity:_().transportIdentity,...t}),i={kind:`pending-admission`,requestID:e,queueItemID:n.queueItemID,operationID:n.operationID,messageID:n.messageID,content:n.content,createdAt:n.createdAt,phase:`uploading`,attachmentCount:n.attachmentCount??0,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},...n.sendConfig?{sendConfig:n.sendConfig}:{}};p(r,t=>[...t.filter(t=>t.requestID!==e&&t.queueItemID!==n.queueItemID),i])},unstageAdmission:({requestID:e,scope:t})=>{let n=UR({transportIdentity:_().transportIdentity,...t});p(n,t=>t.filter(t=>t.requestID!==e))},admit:async({requestID:e,scope:t,item:r,attachments:a=[]})=>{let o=_(),s=UR({transportIdentity:o.transportIdentity,...t}),c=(u.get(s)??d).find(t=>t.requestID===e||t.queueItemID===r.queueItemID),l=c&&(c.requestID===e||c.queueItemID===r.queueItemID)?{...c,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}}:{kind:`pending-admission`,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}},f=t=>p(s,n=>n.map(n=>n.requestID===e||n.queueItemID===r.queueItemID?t:n)),m=()=>p(s,t=>t.filter(t=>t.requestID!==e&&t.queueItemID!==r.queueItemID));c?f(l):p(s,e=>[...e,l]);let g;try{g=await GR(e=>n.upload(a,e),i?.signal,n.admissionUploadTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}if(!h(o))return m(),{status:`stale`};let v={requestID:e,scope:t,item:{...r,attachments:g.attachments}};f({...l,phase:`admitting`});let y;try{y=await GR(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof X)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await GR(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}}return f({...l,phase:`acknowledged`,acknowledgedRevision:y.revision}),y.scopeID?GR(e=>k(y.scopeID,y.revision,o,e),i?.signal,n.admissionReconcileTimeoutMs).then(m,m):m(),{status:`committed`}},edit:({requestID:e,scopeID:t,revision:r,item:a,patch:o})=>A(t,r,(t,r)=>{let s=r?.items.find(e=>e.queueItemID===a.queueItemID)??a;return n.edit(s.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:s.rowVersion,item:o,signal:i?.signal})}),remove:({requestID:e,scopeID:t,revision:r,item:a})=>A(t,r,async(r,o)=>{let s=o?.items.find(e=>e.queueItemID===a.queueItemID)??a;try{return await n.remove(s.queueItemID,{requestID:e,expectedRevision:r,expectedRowVersion:s.rowVersion,signal:i?.signal})}catch(e){if(!(e instanceof X)||e.code!==`not_found`)throw e;let n=await O(t,_(),e);if(!n||n.items.some(e=>e.queueItemID===a.queueItemID))throw e;return{revision:n.revision,removedQueueItemID:a.queueItemID}}}),reserveEdit:async({requestID:e,scopeID:t,revision:a,item:o,owner:s,ttlMs:c,runtime:l})=>{if(!h(l))return;let u=a;for(let a=0;a<VR;a++){let d=r.scopes.get(t),f=(d?lL(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{let t=await n.reserve(f.queueItemID,{requestID:e,expectedRevision:u,rowVersion:f.rowVersion,owner:s,ttlMs:c,signal:i?.signal});if(!h(l)){await n.release(f.queueItemID,{token:t.token,signal:i?.signal}).catch(()=>{});return}return t}catch(e){if(!zR(e)||a+1>=VR)throw e;let n=await O(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return;u=n.revision}}},renewEdit:async({item:e,token:t,generation:r,ttlMs:a,runtime:o,signal:s})=>{if(!h(o))return;let c=await n.renew(e.queueItemID,{token:t,generation:r,ttlMs:a,signal:s??i?.signal});if(!(!h(o)||c.queueItemID!==e.queueItemID||c.token!==t||c.generation!==r))return c},releaseEdit:async({item:e,token:t,runtime:r})=>{h(r)&&(await n.release(e.queueItemID,{token:t,signal:i?.signal.aborted?void 0:i?.signal}),h(r)&&await T())},removeReserved:async({requestID:e,scopeID:t,revision:a,item:o,token:s,generation:c,runtime:l})=>{if(!h(l))return!1;let u=a;for(let a=0;a<VR;a++){let d=r.scopes.get(t),f=(d?lL(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{return await n.removeReserved(f.queueItemID,{requestID:e,expectedRevision:u,expectedRowVersion:f.rowVersion,token:s,generation:c,signal:i?.signal}),h(l)?(await O(t,l,new X(404,`not_found`)).catch(()=>void 0),await T(),!0):!1}catch(e){if(!zR(e)||a+1>=VR)throw e;let n=await O(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return!1;u=n.revision}}return!1},reorder:({requestID:e,scopeID:t,revision:r,queueItemIDs:a})=>A(t,r,(r,o)=>n.reorder(t,{requestID:e,expectedRevision:r,queueItemIDs:HR(a,o),signal:i?.signal})),manualSend:async({requestID:e,scopeID:t,revision:a,item:o})=>{if(r.authority===`active`||r.authority===`paused`)return A(t,a,(t,r)=>{let a=r?.items.find(e=>e.queueItemID===o.queueItemID)??o;return n.manualSend(a.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:a.rowVersion,signal:i?.signal})});if(r.authority===`shadow`||r.capability===`unsupported`){let e=_();return h(e)?(await n.legacyManualSend(o),h(e)?{status:`committed`}:{status:`stale`}):{status:`stale`}}throw new X(0,`unavailable`)}}},qR,JR=()=>qR??=KR(),YR=new WeakMap,XR=e=>{let t=e,n=YR.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),YR.delete(t))};let r={refs:1,unsubscribe:d(t=>{f(t)&&e.restart()})};return YR.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),YR.delete(t))}},ZR=(e,t)=>{let n,r=[],i=[...e.semantics];return{text:e.chunks.map((a,o)=>{if(a.provenance!==`authored`)return a.text;let s=a.text;o===0&&(s=s.replace(/^\n+/,``)),o===e.chunks.length-1&&(s=s.replace(/\n+$/,``));let c=t(s);return n??=c.agent,r.push(...c.attachments??[]),i.push(...c.semantics??[]),c.text}).join(``),agent:n,attachments:QR(r),semantics:i}},QR=e=>{let t=new Set;return e.filter(e=>{let n=e.serverPath?.replace(/\\/g,`/`).replace(/\/+/g,`/`),r=n?`path:${n}`:`id:${e.id}`;return!t.has(r)&&(t.add(r),!0)})},$R=`The user referenced these OpenCode sessions (id, title, owning directory). Entries may carry messages inlined from the client cache; an empty messages array only means the transcript was not loaded client-side — it never means the session is empty. To read any referenced session yourself, query the OpenCode SQLite store read-only (replace SESSION_ID): sqlite3 "file:$HOME/.local/share/opencode/opencode.db?mode=ro" ".timeout 5000" "SELECT json_extract(m.data,'$.role') AS role, json_extract(p.data,'$.text') AS text FROM part p JOIN message m ON m.id = p.message_id WHERE p.session_id = 'SESSION_ID' AND json_extract(p.data,'$.type') = 'text' AND json_extract(p.data,'$.synthetic') IS NULL ORDER BY p.time_created". If that file does not exist, resolve the OpenChamber-hosted store first (ls -d "$HOME/Library/Application Support/OpenChamber"*/openchamber-data/xdg-data/opencode/opencode.db) and use its path in the same file: URI. The database is live — always open it read-only as shown.
|
|
468
|
-
`,
|
|
469
|
-
`);return t?[{role:e.role,text:t}]:[]});return[{id:r.id,title:r.title||r.id,directory:n,messages:i}]}),a=[],o=
|
|
470
|
-
`)?null:s},Sz=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)/g,Cz=e=>qe(e.trim()),wz=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=Cz(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},Tz=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),Ez=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?Cz(t).replace(/\/+$/,``):``,c=e=>Cz(e).replace(/^\.\//,``),l=new Set(n.map(e=>c(e))),u=new Set(r.map(e=>c(e))),d=/@([^\s]+)/g,f;for(;(f=d.exec(e))!==null;){let t=f.index>0?e[f.index-1]:null;if(t&&!/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(t))continue;let n=f[1].trim().replace(/^[`"'<(]+/,``).replace(/[),.;:!?`"'>]+$/g,``);if(!n||i.has(n.toLowerCase()))continue;let r=c(n),d=Je(n)||Je(r)?r:r.replace(/^\/+/,``);if(!(l.has(r)||l.has(d)||n.includes(`/`)||n.includes(`\\`)||n.includes(`.`)))continue;let p=Je(n)||Je(r)?r:s?Ye(s,d):null;if(!d||!p||o.has(p))continue;o.add(p);let m=Xe(p)||d,h=u.has(r)||u.has(d)||/[/\\]$/.test(n)?Re:`text/plain`;a.push({id:fe(),file:new File([],m,{type:h}),filename:m,mimeType:h,size:0,dataUrl:wz(p),source:`server`,serverPath:p})}return a},Dz=(e,t)=>{let n=[],r=new Set;Sz.lastIndex=0;let i;for(;(i=Sz.exec(e))!==null;){let e=i[2]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},Oz=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${_e}${i}`))&&n.push(r);return n},kz=({plan:e,agents:t,installedSkillNames:n,directory:r,root:i,confirmedFilePaths:a=[],confirmedDirectoryPaths:o=[],citationAttachments:s=[]})=>{let c=new Set(t.map(e=>e.name.toLowerCase())),l=new Map(jd(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of Nd().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return ZR(e,e=>{let r=uz(e,t),d=[...new Set([...vz(e),...Oz(e,u)])],f=[...Dz(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=Ez({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:yz(Le(He(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},Az=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:QR(e.attachments)}:{},synthetic:!0})),jz=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...QR(t).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id})),...n.map(e=>({type:`text`,text:e.text,synthetic:!0})),...(r??[]).flatMap(e=>[{type:`text`,text:e.text,synthetic:!0},...QR(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],Mz=(e,t)=>{let n=t.map(e=>({...e,attachments:QR(e.attachments??[])})),r=e.length-n.reduce((e,t)=>e+1+t.attachments.length,0);if(r<0)throw Error(`assistant-queue-synthetic-parts-mismatch`);return n.map(e=>{let t=[r++];for(let n of e.attachments)t.push(r++);return{partID:e.partID,text:e.text,...e.synthetic===!0?{synthetic:!0}:{},attachmentIDs:e.attachments.map(e=>e.id),deliveryPartIndexes:t}})},Nz=e=>e?.trim()||void 0,Pz=(e,t)=>e!==`assistant`||t===`server`,Fz=(e,t,n)=>{let r=(e.current.get(t)??Promise.resolve()).catch(()=>void 0).then(n),i=r.then(()=>void 0,()=>void 0);return e.current.set(t,i),r.finally(()=>{e.current.get(t)===i&&e.current.delete(t)})},Iz=({currentConfig:e,sessionID:t,selection:n})=>{let r=Nz(e.currentAgentName),i=t?Nz(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=Nz(a?.providerId)??Nz(o?.providerId)??Nz(e.currentProviderId),c=Nz(a?.modelId)??Nz(o?.modelId)??Nz(e.currentModelId);if(!s||!c)return;let l=t&&i?Nz(n.getAgentModelVariantForSession(t,i,s,c))??Nz(e.currentVariant):Nz(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},Lz=e=>!!(Nz(e?.providerID)&&Nz(e?.modelID)),Rz=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,zz=(e,t)=>Rz(e,t),Bz=e=>JSON.stringify([e.text,e.references]),Vz=e=>JSON.stringify(e),Hz=(e,t)=>e.id===t.id&&e.file===t.file&&e.dataUrl===t.dataUrl&&e.mimeType===t.mimeType&&e.filename===t.filename&&e.size===t.size&&e.source===t.source&&e.serverPath===t.serverPath&&e.vscodePath===t.vscodePath&&e.vscodeSource===t.vscodeSource,Uz=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:R(e),runtime:{...t},documentFingerprint:Bz(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,Vz(e)]))}),Wz=async({capture:e,admit:t,captureRuntime:n,getCurrentDraftKey:r,getDocument:i,consumeBody:a,getAttachments:o,removeAttachment:s,getInlineDrafts:c,removeInlineDraft:l})=>{let u=await t(),d=r();if(u.status!==`committed`||!zz(e.runtime,n())||!d||R(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=Bz(i())===e.documentFingerprint;f&&a();let p=[],m=[],h=new Map(o().map(e=>[e.id,e]));for(let[t,n]of e.attachments){let e=h.get(t);if(!e||!Hz(n,e))continue;let r=!1;try{r=await s(t)}catch{r=!1}r?p.push(t):m.push(t)}let g=[],_=new Map(c().map(e=>[e.id,e]));for(let[t,n]of e.inlineDrafts){let e=_.get(t);!e||Vz(e)!==n||(l(t),g.push(t))}return m.length>0?{status:`partial`,bodyConsumed:f,attachmentIDsConsumed:p,attachmentIDsFailed:m,inlineDraftIDsConsumed:g}:{status:`committed`,bodyConsumed:f,attachmentIDsConsumed:p,inlineDraftIDsConsumed:g}},Gz=(e,t)=>e.map(e=>{let n=e.mimeType||e.file.type||`application/octet-stream`;if(e.source===`server`){if(!e.serverPath)throw Error(`message-queue-server-attachment-unavailable`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`server`,path:e.serverPath,size:e.size}}if(e.source===`vscode`)throw Error(`message-queue-vscode-attachment-unsupported`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`local`,value:e.file.slice(0,e.file.size,n)}}),Kz=(e=fe,t=()=>ge(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),qz=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},Jz=`blocked`,Yz=new Set,Xz=()=>Jz,Zz=e=>{if(Jz!==e){Jz=e;for(let e of Yz)e()}},Qz=e=>(Yz.add(e),()=>Yz.delete(e)),$z=()=>Jz===`legacy-enabled`,eB=2e3,tB=6e4,nB=5e3,rB=3,iB=e=>Math.min(eB*2**Math.max(e-1,0),tB),aB=new Map,oB=new Map,sB=new Set,cB=new Set,lB=0,uB=()=>{lB+=1;for(let e of cB)e()},dB=(e,t)=>JSON.stringify([D(e),t.queueItemID,t.operationID]),fB=e=>`scope:${D(e)}`,pB=()=>new Set([...aB.keys(),...oB.keys()]),mB=e=>(cB.add(e),()=>cB.delete(e)),hB=e=>{let t=(0,V.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?oB.has(fB(e)):!1,t[0]=e,t[1]=n),W.useSyncExternalStore(mB,n,IB)},gB=()=>structuredClone(re.getState().queuedMessages),_B=async()=>{for(Zz(`blocked`);aB.size||oB.size||sB.size;)await Promise.allSettled([...new Set([...aB.values(),...oB.values(),...sB])]);return y(),gB()},vB=e=>e===`idle`,yB=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},bB=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?vB(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:vB(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=rB||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},xB=(e,t)=>{let n=new Set;for(let[r,i]of Object.entries(e))i?.status===`running`&&i.runtimeKey===t&&n.add(r);return n},SB=(e,t)=>{let n;for(let r of Fd(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},CB=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},wB=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=pB(),blockedSessions:s,blockedScopeKeys:c=new Set,now:l})=>{let u={dispatchScopes:[],queryOperations:[],resolveOperations:[],recoverOperations:[],inspectedScopeCount:0},d=new Set;for(let[f,p]of Object.entries(e)){let e=p[0],m=e?.owner;if(!e||m?.state!==`bound`||m.transportIdentity!==t)continue;u.inspectedScopeCount+=1;let h=`${f}:${e.queueItemID}`,g=dB(m,e),_=fB(m);d.add(h);let v=n(m),y=bB(e,v,i.get(f),l,o.has(g),r(m));i.set(f,v),y.nextWakeAt&&(!u.nextWakeAt||y.nextWakeAt<u.nextWakeAt)&&(u.nextWakeAt=y.nextWakeAt),y.dispatch&&!s.has(m.sessionID)&&!c.has(D(m))&&!o.has(g)&&!o.has(_)&&u.dispatchScopes.push(m),y.query&&!a.has(h)&&u.queryOperations.push({scope:m,item:e,key:h}),y.resolve&&u.resolveOperations.push({scope:m,item:e,key:h}),y.recover&&!a.has(h)&&u.recoverOperations.push({scope:m,item:e,key:h})}for(let e of a)d.has(e)||a.delete(e);for(let t of i.keys())e[t]||i.delete(t);return u},TB=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&ve(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=kz({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:Tz(t.content),agents:G.getState().getVisibleAgents(),installedSkillNames:new Set(Ja(L,r).map(e=>e.name)),directory:r,root:r,confirmedFilePaths:t.composerMentions?.filter(e=>e.kind===`file`||e.kind===`directory`).map(e=>e.path||e.value),confirmedDirectoryPaths:t.composerMentions?.filter(e=>e.kind===`directory`).map(e=>e.path||e.value),citationAttachments:t.attachments}),a=iz(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:QR([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},EB=(e,t,n,r)=>$.getState().sendMessage(t.primaryText,n.providerID,n.modelID,n.agent,t.primaryAttachments,t.agentMentionName,t.additionalParts,n.variant,`normal`,{sessionId:e,directoryHint:r.directory,delivery:r.delivery,messageID:t.messageID,ticket:r.ticket,preserveOptimisticOnAmbiguous:!0,onSendConfirmed:r.onSendConfirmed}),DB=(e,t)=>t?{...t}:Iz({currentConfig:G.getState(),sessionID:e,selection:qo.getState()})??{providerID:``,modelID:``},OB=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:r(),directory:t,sessionID:e}:null},kB=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),AB=e=>e.status===`sending`||e.status===`reconciling`,jB=(e,t,n,r)=>{if(!r||r.sessionID!==t)return null;let i=e.getQueueForScope(r),a=n?i.find(e=>e.queueItemID===n||e.id===n):i[0];return!a||a.owner?.state!==`bound`||D(a.owner)!==D(r)?null:{scope:r,item:a}};function MB(e,t={}){if(!$z())return Promise.resolve();let n=re.getState(),i=t.scope??OB(e),a=t.manual===!0||t.delivery===`steer`;if(!i||i.transportIdentity!==r())return Promise.resolve();let o=jB(n,e,t.queueItemID,i??void 0);if((a||!t.scope)&&!oB.has(fB(i))){let r=n.getQueueForScope({state:`unbound-legacy`,sessionID:e}),a=n.getQueueForScope(i),s=t.queueItemID?r.find(e=>e.queueItemID===t.queueItemID||e.id===t.queueItemID):r[0];(o||s)&&!r.some(AB)&&!a.some(AB)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},i),o=jB(n,e,t.queueItemID,i))}if(!o||o.scope.transportIdentity!==r())return Promise.resolve();let c=o.scope;if(c.deliveryTarget?.kind===`assistant`)return Promise.resolve();let l=o.item,u={queueItemID:l.queueItemID,operationID:l.operationID,messageID:l.messageID},d=dB(c,u),f=aB.get(d);if(f)return f;if(oB.has(fB(c))||!kB(l.status,a)||l.status===`retrying`&&!a&&(l.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return aB.set(d,m),oB.set(fB(c),m),uB(),(async()=>{try{let i=SB(e,c.directory),o=QB(e),d=o?.queueItemID===l.queueItemID?o.messageID:be(`msg`,i),f=n.beginQueueItemDispatch(c,u,d,a);if(!f)return;l=f;let p={queueItemID:f.queueItemID,operationID:f.operationID,messageID:f.messageID};if(!y()){n.markQueueItemPreDispatchRetry(c,p,Date.now()+iB(f.attemptCount+1));return}let m=s(),h=TB([f]);if(!h)return;let g=DB(e,f.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(c,p,Date.now()+iB(f.attemptCount+1));return}if(!$z()){n.markQueueItemPreDispatchRetry(c,p,Date.now()+iB(f.attemptCount+1));return}let _=()=>{let e=re.getState().getQueueForScope(c)[0];return r()===c.transportIdentity&&s()===m&&e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&D(e.owner)===D(c)},v=()=>{let e=re.getState().getQueueForScope(c)[0];return e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&D(e.owner)===D(c)},b=t=>{_()&&t===p.messageID&&(re.getState().confirmQueueItem(c,p),fV(e))};try{await EB(e,h,g,{directory:c.directory,delivery:t.delivery,ticket:o?.queueItemID===f.queueItemID?o.ticket:void 0,onSendConfirmed:b}),b(p.messageID)}catch(e){if(!v())return;let t=Px(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(c,p,Date.now()+iB(f.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(c,p):n.markQueueItemReconciling(c,p)}}finally{let e=!1;aB.get(d)===m&&(aB.delete(d),e=!0),oB.get(fB(c))===m&&(oB.delete(fB(c)),e=!0),e&&uB(),p?.()}})(),m}async function NB(e,t=s()){if(!$z())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+nB),i=new AbortController,a=setTimeout(()=>i.abort(),Math.max(0,n-Date.now())),o=null;try{o=await zS(e.scope.sessionID,e.item.messageID,e.scope.directory,{signal:i.signal,timeoutMs:Math.max(0,n-Date.now())})}catch{o=null}finally{clearTimeout(a)}let c=re.getState().getQueueForScope(e.scope)[0];c?.queueItemID===e.item.queueItemID&&c.operationID===e.item.operationID&&c.messageID===e.item.messageID&&D(c.owner)===D(e.scope)&&r()===e.scope.transportIdentity&&s()===t&&(o?.some(t=>t.info.id===e.item.messageID)?(MH(e.scope.sessionID,e.item.messageID),re.getState().confirmQueueItem(e.scope,{queueItemID:c.queueItemID,operationID:c.operationID,messageID:c.messageID})):re.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var PB=(e,t)=>{vx({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),re.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function FB(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=W.useSyncExternalStore(Qz,Xz,Xz),a=re(e=>e.queuedMessages),o=Wp(e=>e.runsByOriginalSessionID),c=$(e=>e.queueAbortBlocks),l=W.useSyncExternalStore(d,r,r),u=W.useSyncExternalStore(d,i,i),f=W.useSyncExternalStore(mB,()=>lB,()=>lB),p=W.useMemo(()=>Object.values(a).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===l?[t]:[]}),[l,a]),m=bP(p),h=xP(),g=YP(),_=W.useMemo(()=>p.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[p]),v=W.useRef(p);v.current=p;let y=W.useSyncExternalStore(W.useMemo(()=>e=>_?rd(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)}):()=>void 0,[g,_]),W.useMemo(()=>()=>_?id(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e=>g.getChild(e)):``,[g,_]),()=>``),b=W.useCallback(e=>h(e),[h]),x=W.useCallback(e=>yB(gd(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=W.useState(0),w=W.useRef(new Map),T=W.useRef(new Set);W.useEffect(()=>{if(!t||n!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let r=new Set,i=new Set;for(let[t,n]of c)n.expiresAt>e&&i.add(t);for(let e of xB(o,u))r.add(e);let d=wB({queuedMessages:a,activeTransportIdentity:l,getStatus:b,getTurnState:x,previous:w.current,inFlight:T.current,blockedSessions:r,blockedScopeKeys:i,now:e});for(let e of d.recoverOperations)re.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of d.dispatchScopes)re.getState().getQueueForScope(e)[0]&&MB(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of d.resolveOperations)PB(e.scope,e.item);for(let e of d.queryOperations){T.current.add(e.key);let t=NB(e,s()).finally(()=>{T.current.delete(e.key),sB.delete(t),C(e=>e+1)});sB.add(t)}let f=CB(c,e),p=d.nextWakeAt?f?Math.min(d.nextWakeAt,f):d.nextWakeAt:f,m;return p&&(m=setTimeout(()=>{$.getState().pruneQueueAbortBlocks(),C(e=>e+1)},Math.max(0,p-Date.now()))),()=>{m&&clearTimeout(m)}},[u,l,g,f,t,n,a,c,o,m,y,b,x,S])}function IB(){return!1}var LB={server:JR(),queue:SR(),status:e=>nL(L).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:jI,lateCommit:MI,capture:()=>({transportIdentity:r(),generation:s()}),current:e=>e.transportIdentity===r()&&e.generation===s(),quiesce:async()=>{await _B()},flush:async()=>{y()},prepare:T,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},RB=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),zB=(e={})=>{let t={...LB,...e},n=RB(),r=0,i,a,o,s=500,c,l=!1,u=new Set,p=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;Zz(r?`legacy-enabled`:`blocked`),O(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&te(t.capture().transportIdentity),u.forEach(e=>e())},m=()=>{clearTimeout(o),o=setTimeout(()=>{y()},s),s=Math.min(3e4,s*2)},h=e=>{p({ownership:`blocked`,migration:`idle`,frozen:!0,admission:`frozen`,error:e}),m()},g=(e,n,r,i,a)=>{t.current(e)&&(n.authority===`active`||n.authority===`paused`||r===`late`?p({ownership:n.authority===`paused`?`server-paused`:`server-active`,migration:`late-importing`,frozen:!1,admission:`server`,status:n,importState:i,error:a}):p({ownership:`probing`,migration:i.status===`error`||i.status===`degraded`?`error`:`staging`,frozen:!0,admission:`frozen`,status:n,importState:i,error:a}),m())},_=async e=>{await t.quiesce();let n=t.prepare(e.transportIdentity,t.resolveDirectory);return n.ok?(await t.flush(),t.current(e)):(h(Error(`unresolved-legacy-queue-directories:${n.unresolvedSessionIDs.join(`,`)}`)),!1)},v=async()=>{let e=t.capture();i?.abort(),i=new AbortController;try{if(await t.server.refresh(),!t.current(e)||i.signal.aborted)return n;let r=await t.status(i.signal);return!t.current(e)||i.signal.aborted?n:r.capability?r.protocol!==void 0&&r.protocol!==4?(h(Error(`protocol-unsupported`)),n):(p({ownership:`probing`,migration:`freezing`,frozen:!0,admission:`frozen`,status:r,error:void 0}),await _(e)?r.authority===`active`||r.authority===`paused`?(p({ownership:r.authority===`active`?`server-active`:`server-paused`,migration:`late-importing`,frozen:!1,admission:`server`,status:r,error:void 0}),await b(e,r,`late`),n):(p({migration:`staging`}),await b(e,r,`activation`),n):n):(h(Error(`capability-unavailable`)),n)}catch(r){return!t.current(e)||i?.signal.aborted?n:r instanceof X&&r.status===501?(p({ownership:`legacy-unsupported`,migration:`idle`,frozen:!1,admission:`legacy`,error:void 0}),n):(h(r),n)}},y=()=>c?(l=!0,c):(c=v().finally(()=>{c=void 0,l&&(l=!1,y())}),c),b=async(e,n,r)=>{let a=await FR({queue:t.queue,capture:()=>e,current:t.current,kind:r,authorityGeneration:()=>n.generation??0,publish:e=>p({importState:e})}).run(i?.signal);if(t.current(e)){if(p({importState:a}),!a.canActivate||!a.importID||!a.manifestHash){g(e,n,r,a);return}p({migration:r===`activation`?`activating`:`late-importing`});try{let o=r===`activation`?await t.activate(a.importID,{requestID:`shadow-activate:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal}):await t.lateCommit(a.importID,{requestID:`shadow-late:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal});if(!t.current(e))return;s=500,p({ownership:r===`activation`?`server-active`:n.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,importState:{...a,activationEpoch:o.activationEpoch}})}catch(i){if(!t.current(e))return;let o=await iL(L).catch(()=>void 0);if(o?.manifestHash===a.manifestHash&&o.activationEpoch!==void 0&&(o.authority===`active`||o.authority===`paused`)){s=500,p({ownership:o.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,status:o,importState:{...a,activationEpoch:o.activationEpoch}});return}if(o?.authority===`active`||o?.authority===`paused`){g(e,o,`late`,a,i);return}g(e,n,r,a,i)}}},x,S=()=>{i?.abort(),i=void 0,clearTimeout(o),o=void 0,a?.(),a=void 0};return{subscribe:e=>(u.add(e),()=>u.delete(e)),getSnapshot:()=>n,start:()=>{r++,x!==void 0&&(clearTimeout(x),x=void 0),!(r>1)&&(a=d(e=>{f(e)&&(i?.abort(),p(RB()),setTimeout(()=>{y()},0))}),y())},stop:()=>{r=Math.max(0,r-1),!r&&(x!==void 0&&clearTimeout(x),x=setTimeout(()=>{x=void 0,r||S()},0))},refresh:y}},BB,VB=()=>BB??=zB(),HB=t({confirmQueueAbortOptimistic:()=>fV,getQueueAbortOptimisticPresentation:()=>QB,getQueueAbortOptimisticRevision:()=>ZB,inspectQueueAbortOptimisticTranscript:()=>cV,isQueueItemHiddenByAbortOptimistic:()=>$B,planQueueAbortOptimisticReconcile:()=>lV,promoteQueueHeadOnAbort:()=>vV,reconcileQueueAbortOptimistic:()=>_V,rollbackQueueAbortOptimistic:()=>dV,subscribeQueueAbortOptimistic:()=>XB,useQueueAbortOptimisticReconcile:()=>yV}),UB=new Set([`queued`,`retrying`]),WB=new Set([`sending`,`reconciling`]),GB=new Set([`failed`,`unresolved`]),KB=new Map,qB=new Set,JB=0,YB=()=>{JB+=1;for(let e of qB)e()},XB=e=>(qB.add(e),()=>{qB.delete(e)}),ZB=()=>JB,QB=e=>KB.get(e),$B=(e,t)=>KB.get(e)?.queueItemID===t,eV=(e,t)=>{let n;for(let r of Fd(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},tV=e=>{let t=e?.[0];if(!(!t||!UB.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},nV=(e,t)=>{let n=re.getState(),i={state:`bound`,transportIdentity:r(),directory:t,sessionID:e};return tV(n.getQueueForScope(i))??tV(n.getQueueForScope(j(e)))},rV=(e,t)=>{let n=VB().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:tV(JR().getScope({transportIdentity:r(),directory:t,sessionID:e})?.items)},iV=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},aV=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,oV=(e,t,n)=>{try{let r=H();return r?r.getTranscript(U(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},sV=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=oV(t,n,r);return i.length!==0&&i.some(e=>!aV(e))},cV=(e,t)=>{let n=!1,r=!1;for(let i of t){let t=typeof i.id==`string`?i.id:``,a=i.optimistic!==!0;t===e&&a&&(n=!0),i.role===`user`&&t&&t>e&&a&&(r=!0)}return{hasPinnedMessage:n,hasLaterUserMessage:r}},lV=(e,t,n)=>{let r=e?.messageID;return e&&(UB.has(e.status)||WB.has(e.status))?r&&n&&r!==n?`rebind`:t.hasPinnedMessage?`confirm`:`keep`:e&&GB.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},uV=e=>{let t=KB.get(e);if(t)return KB.delete(e),YB(),t},dV=e=>{let t=uV(e);t&&PS(t.ticket)},fV=e=>{let t=uV(e);t&&$.getState().clearMessageSending?.(e,t.messageID)},pV=e=>{if(e.source===`server`){let t=JR().getScope({transportIdentity:r(),directory:e.directory,sessionID:e.sessionID})?.items.find(t=>t.queueItemID===e.queueItemID);return t?{queueItemID:t.queueItemID,status:t.status,messageID:t.messageID}:null}let t={state:`bound`,transportIdentity:r(),directory:e.directory,sessionID:e.sessionID},n=k(re.getState(),t).find(t=>t.queueItemID===e.queueItemID)??k(re.getState(),j(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status,messageID:n.messageID}:null},mV=e=>{let t=Fd(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!sV(t,e.sessionID,e.directory)}));return cV(e.messageID,t)},hV=(e,t)=>{let n=KB.get(e);if(!(!n||!t||n.messageID===t)){PS(n.ticket);try{let r=MS({sessionId:n.sessionID,content:n.content,providerID:n.providerID,modelID:n.modelID,agent:n.agent,directory:n.directory,messageID:t});KB.set(e,{...n,messageID:r.messageID,ticket:r}),YB()}catch{KB.delete(e),YB()}}},gV=(e,t,n)=>{if(t===`confirm`)fV(e.sessionID);else if(t===`rollback`)dV(e.sessionID);else if(t===`rebind`&&n?.messageID){hV(e.sessionID,n.messageID);let t=KB.get(e.sessionID);if(!t)return;let r=lV(pV(t),mV(t),t.messageID);if(r===`rebind`)return;gV(t,r,pV(t))}},_V=e=>{let t=e?[KB.get(e)].filter(e=>!!e):[...KB.values()];for(let e of t){let t=pV(e);gV(e,lV(t,mV(e),e.messageID),t)}},vV=e=>{if(!e||KB.has(e))return KB.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=rV(e,t),r=n?void 0:nV(e,t),i=n??r;if(!i)return null;let a=iV(i);if(!a)return null;let o=typeof i.content==`string`?i.content:``,s=(typeof i.messageID==`string`&&i.messageID.startsWith(`msg_`)?i.messageID:void 0)??be(`msg`,eV(e,t));try{let r=MS({sessionId:e,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,directory:t,messageID:s}),c={sessionID:e,directory:t,queueItemID:i.queueItemID,operationID:`operationID`in i?i.operationID:void 0,messageID:r.messageID,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,ticket:r,source:n?`server`:`legacy`};return KB.set(e,c),YB(),c}catch{return null}};function yV(){let e=(0,V.c)(6),t=W.useSyncExternalStore(XB,ZB,ZB),n=re(DV),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],W.useEffect(EV,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],W.useEffect(CV,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),W.useEffect(bV,a)}function bV(){return rd([...KB.values()].map(SV),xV)}function xV(){_V()}function SV(e){return{directory:e.directory,sessionID:e.sessionID}}function CV(){let e=JR().subscribe(TV),t=d(wV);return()=>{e(),t()}}function wV(){for(let e of[...KB.keys()])dV(e)}function TV(){_V()}function EV(){_V()}function DV(e){return e.queuedMessages}var OV=280,kV=[`You distill a text selection from a coding-agent conversation into a project note.`,`Return ONLY the note text — no preamble, no surrounding quotes, no headers.`,`Write 1-3 tight sentences that capture the essence worth remembering later: facts, decisions, constraints, root causes, gotchas, next steps.`,`Preserve exact identifiers verbatim — file paths, function names, commands, flags, versions — in backticks.`,`Drop filler, hedging, greetings, and step-by-step narration.`,`Write the note in the same language as the selection. Ignore any other language preferences or personalization — only the selection text decides the language.`].join(`
|
|
471
|
-
`);async function
|
|
472
|
-
`);async function
|
|
459
|
+
`),Ip=e=>!!(e&&typeof e==`object`&&!Array.isArray(e)),Lp=e=>{let t=e?.metadata;return Ip(t)?t:{}},Rp=e=>{let t=e.openchamber;return Ip(t)?t:{}},zp=e=>{let t=Rp(Lp(e)).reviewSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Bp=e=>{let t=Rp(Lp(e)).originalSessionID;return typeof t==`string`&&t.trim().length>0?t:null},Vp=e=>Rp(Lp(e)).kind===`review`&&!!Bp(e),Hp=(e,t)=>{let n=Rp(e);return{...e,openchamber:{...n,reviewSessionID:t}}},Up=(e,t)=>{let n=Rp(e);return{...e,openchamber:{...n,kind:`review`,originalSessionID:t}}},Wp=(e,t)=>{let n=Rp(e);if(n.reviewSessionID!==t)return e;let r={...n};delete r.reviewSessionID;let i={...e};return Object.keys(r).length>0?i.openchamber=r:delete i.openchamber,i},Gp=Oe()(ke((e,t)=>({runsByOriginalSessionID:{},upsertRun:t=>e(e=>({runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t.originalSessionID]:t}})),updateRun:(t,n)=>e(e=>{let r=e.runsByOriginalSessionID[t];return r?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:n(r)}}:e}),stopRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`stopped`}}}:e}),completeRun:t=>e(e=>{let n=e.runsByOriginalSessionID[t];return n?{runsByOriginalSessionID:{...e.runsByOriginalSessionID,[t]:{...n,status:`completed`}}}:e}),stopRunningRunsForRuntime:t=>e(e=>{let n=!1,r={...e.runsByOriginalSessionID};for(let[e,i]of Object.entries(r))i.runtimeKey===t&&i.status===`running`&&(r[e]={...i,status:`stopped`},n=!0);return n?{runsByOriginalSessionID:r}:e}),isRunningForSession:e=>t().runsByOriginalSessionID[e]?.status===`running`}),{name:`auto-review-store`,storage:h(),partialize:e=>({runsByOriginalSessionID:e.runsByOriginalSessionID})})),Kp=(e,t)=>{let n=new Map;for(let t of e){if(!t.parentID)continue;let e=n.get(t.parentID)??[];e.push(t.id),n.set(t.parentID,e)}let r=new Set([t]),i=[t];for(let e of i){let t=n.get(e);if(t)for(let e of t)r.has(e)||(r.add(e),i.push(e))}return r},qp=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},Jp=(e,t,n,r)=>{if(!n)return r;let i=Kp(e,n);if(i.size===0)return r;let a=new Set,o=[];for(let e of i){let n=t[e];if(n)for(let e of n)a.has(e.id)||(a.add(e.id),o.push(e))}return o.length===0?r:o},Yp=`GitHub issue context (JSON)`,Xp=`GitHub pull request context (JSON)`,Zp=e=>!e||typeof e!=`object`?!1:!!e.synthetic,Qp=e=>!Array.isArray(e)||e.length===0?!1:e.every(e=>Zp(e)),$p=e=>{if(!Array.isArray(e)||e.length===0)return[];let t=e.some(e=>!Zp(e)),n=e=>{if(!Zp(e)||e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let n=t.trimStart();return n.startsWith(Yp)||n.startsWith(Xp)};return t&&e.some(e=>Zp(e))?e.filter(e=>!Zp(e)||n(e)):e},em=e=>{try{let t=new URL(e).protocol;return t===`http:`||t===`https:`||t===`file:`}catch{return!1}},tm=e=>typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:``,nm=e=>{let t=e.trim().toLowerCase();return t===`application/x-directory`||t===`inode/directory`},rm=e=>e.replace(/\\/g,`/`),im=e=>e.length<=1?e:e.replace(/\/+$/,``)||`/`,am=e=>{if(!e.startsWith(`file:`))return null;try{let t=new URL(e);if(t.protocol!==`file:`)return null;let n=decodeURIComponent(t.pathname);return/^\/[A-Za-z]:/.test(n)&&(n=n.slice(1)),t.hostname&&t.hostname!==`localhost`&&!/^[A-Za-z]:/.test(n)&&(n=`//${t.hostname}${n.startsWith(`/`)?n:`/${n}`}`),rm(n)}catch{return null}},om=(e,t)=>{let n=im(rm(e)),r=im(rm(t));if(!r||!n)return null;let i=/^[A-Za-z]:/.test(n)?n[0].toLowerCase()+n.slice(1):n,a=/^[A-Za-z]:/.test(r)?r[0].toLowerCase()+r.slice(1):r;return i===a?``:i.startsWith(`${a}/`)?i.slice(a.length+1):null},sm=e=>e.filter((e,t,n)=>e.length>0&&n.indexOf(e)===t),cm=(e,t)=>{let n=rm(e),r=im(n),i=r===`/`?`/`:`${r}/`,a=[n,r,i,n.replace(/^\/+/,``),r.replace(/^\/+/,``),i.replace(/^\/+/,``)];if(t){let r=om(n,t);if(r!==null){let t=im(r),i=t?`${t}/`:``;a.push(r,t,i),(n.endsWith(`/`)||e.endsWith(`/`))&&a.push(t?`${t}/`:``)}}return sm(a)},lm=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`composer-restoration-data-url`);return t.blob()},um=(e,t,n)=>{let r=0;for(;r<e.length;){let i=e.indexOf(t,r);if(i<0)return null;let a=i+t.length,o=`${i}:${a}`,s=i>0?e[i-1]:``,c=e[a]??``,l=!s||/[\s([{"'`,.;:!?]/.test(s),u=!c||/[\s)\]}"'`,.;:!?]/.test(c);if(!n.has(o)&&l&&u)return{start:i,end:a};r=i+1}return null},dm=e=>{let t=e.source&&typeof e.source==`object`?e.source:null,n=typeof t?.value==`string`?t.value.trim():``;if(n){let e=n.startsWith(`@`)?n:`@${n}`,t=e.slice(1);if(t)return{token:e,name:t}}let r=typeof e.name==`string`?e.name.trim():``;if(!r)return null;let i=r.startsWith(`@`)?r.slice(1):r;return i?{token:`@${i}`,name:i}:null},fm=async(e,t={})=>{let n=t.createID??fe,r=t.directory??t.root??null,i=e.filter(e=>!Zp(e)),a=i.filter(e=>e.type===`text`),o=i.filter(e=>e.type===`agent`),s=i.filter(e=>e.type===`file`),c=a.map(tm).join(`
|
|
460
|
+
`),l=[];for(let e of o){let t=dm(e);t&&l.push(t)}for(let e of[...l].reverse())um(c,e.token,new Set)||(c=c?`${e.token} ${c}`:e.token);let u=E(c,t.sessionTitles??new Map);c=u.text;let d=u.references,f=[],p=new Set;for(let e of l){let t=um(c,e.token,p);t&&(p.add(`${t.start}:${t.end}`),f.push({kind:`agent`,value:e.name,path:e.name,label:e.name,range:t}))}let m=[],h=new Map;for(let e of s){if(e.slim===!0)continue;let t=typeof e.url==`string`?e.url:``;if(!t)continue;let i=typeof e.mime==`string`?e.mime:`application/octet-stream`,a=typeof e.filename==`string`?e.filename:`attachment`,o=t.startsWith(`file:`)?am(t):null;if(o){let e=cm(o,r),t=null;for(let n of e){let e=um(c,`@${n}`,p);if(e){t={path:n,range:e};break}}if(t){p.add(`${t.range.start}:${t.range.end}`);let e=nm(i)?`directory`:`file`;f.push({kind:e,value:t.path,path:t.path,label:t.path,range:t.range});continue}}let s=n(),l=ue(s);if(t.startsWith(`data:`)){let e=await lm(t);h.set(l,e),m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:e.type||i,size:e.size,source:`local`,locator:{kind:`blob`,blobID:s}});continue}if(em(t)){if(!ie(t))throw Error(`composer-restoration-url-too-long`);m.push({attachmentID:s,attachmentRefID:l,filename:a,mimeType:i,size:0,source:t.startsWith(`file:`)?`server`:`local`,locator:{kind:`url`,url:t},...t.startsWith(`file:`)&&o?{serverPath:o}:{}}),h.set(l,t);continue}throw Error(`composer-restoration-invalid-attachment-url`)}f.sort((e,t)=>e.range.start-t.range.start);let g=ae(c,f);if(!g)throw Error(`composer-restoration-invalid-mentions`);let _=we(c,d);if(!_)throw Error(`composer-restoration-invalid-composer`);return{snapshot:{text:c,composerReferences:_.references,attachments:m,syntheticParts:[],mentions:g},values:h}},pm=async(e,t={})=>{let n=t.createID??fe,r=e.composerDocument?.text??e.content,i=e.composerDocument&&`references`in e.composerDocument?e.composerDocument.references??[]:[],a=we(r,i),o=ae(r,e.composerMentions??[]);if(!a||!o)throw Error(`composer-restoration-invalid-sidecars`);if(e.draftAttachments)return{snapshot:{text:r,composerReferences:a.references,attachments:[...e.draftAttachments],syntheticParts:e.syntheticParts??[],mentions:o},values:e.draftValues??new Map};let s=[],c=new Map;for(let t of e.attachments??[]){let e=t.id||n(),r=ue(e),i=t.dataUrl;if(i.startsWith(`data:`)){let n=t.file?.size?t.file:await lm(i);c.set(r,n),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||n.type||`application/octet-stream`,size:n.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}if(em(i)){if(!ie(i)){if(!(t.file instanceof Blob))throw Error(`composer-restoration-url-too-long`);c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType,size:t.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`url`,url:i},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}}),c.set(r,i);continue}if(t.file&&t.file.size>=0){c.set(r,t.file),s.push({attachmentID:e,attachmentRefID:r,filename:t.filename,mimeType:t.mimeType||t.file.type||`application/octet-stream`,size:t.file.size,source:t.source===`vscode`?`vscode`:t.source===`server`?`server`:`local`,locator:{kind:`blob`,blobID:e},...t.serverPath?{serverPath:t.serverPath}:{},...t.vscodePath?{vscodePath:t.vscodePath}:{},...t.vscodeSource===`selection`||t.vscodeSource===`file`?{vscodeSource:t.vscodeSource}:{}});continue}throw Error(`composer-restoration-invalid-attachment`)}return{snapshot:{text:r,composerReferences:a.references,attachments:s,syntheticParts:e.syntheticParts??[],mentions:o},values:c}},mm=e=>e?JSON.parse(JSON.stringify(e)):null,hm=e=>e?{...e}:{},gm=(e,t=Or.getState())=>{let n=t.getDraft?.(e)??null,r=hm(t.draftAttachmentViews?.[R(e)]);return{record:mm(n??void 0),views:r,expectedRevision:n?.revision??`absent`}},_m=async e=>{let t=e.input??Or.getState(),n=gm(e.key,{getDraft:t.getDraft?.bind(t),draftAttachmentViews:t.draftAttachmentViews}),r;try{r=await t.commitDraftSnapshot({key:e.key,expectedRevision:e.expectedRevision,runtime:e.runtime??t.captureDraftRuntime(),snapshot:e.payload.snapshot,values:e.payload.values})}catch{return{status:`failed`,current:!1,durable:!1,previous:n}}return{status:r.status,current:r.current,durable:r.durable,result:r,previous:n}},vm=async e=>{let t=e.store.getDraft(e.key);if(!t||t.revision!==e.restoredRevision)return{status:`conflict`,current:!0};if(!e.previous.record)try{let t=await e.store.deleteDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}let n=e.previous.record,r=new Map;for(let t of[...n.attachments,...n.syntheticParts.flatMap(e=>e.attachments)]){let n=e.previous.views[t.attachmentRefID];t.locator.kind===`url`?r.set(t.attachmentRefID,t.locator.url):n?.file?r.set(t.attachmentRefID,n.file):n?.dataUrl&&r.set(t.attachmentRefID,n.dataUrl)}try{let t=await e.store.commitDraftSnapshot({key:e.key,expectedRevision:e.restoredRevision,runtime:e.runtime,snapshot:{text:n.text,attachments:n.attachments,syntheticParts:n.syntheticParts,mentions:n.mentions,...n.composerReferences===void 0?{}:{composerReferences:n.composerReferences}},values:r});return t.status===`conflict`?{status:`conflict`,current:!0}:t.status===`committed`&&t.current?{status:`rolled-back`,current:!0}:{status:`failed`,current:t.current}}catch{return{status:`failed`,current:!1}}},ym=async e=>{let t=e.input??Or.getState(),n=t.getDraft(e.key);if(!n||n.revision!==e.restoredRevision)return{status:`conflict`,current:!0};let r=e.key.transportIdentity,i=e.runtime?.transportIdentity===r?e.runtime:void 0,a;try{let e=t.captureDraftRuntime();e.transportIdentity===r&&(a=e)}catch{}let o=i??a;return o?vm({key:e.key,restoredRevision:e.restoredRevision,previous:e.previous,runtime:o,store:t}):{status:`failed`,current:!1}},bm=(e,t,n)=>{let r=n.getDraft(e);if(r)return[...r.attachments,...r.syntheticParts.flatMap(e=>e.attachments)].find(e=>e.attachmentID===t)?.attachmentRefID},xm=e=>e?.status===`committed`&&e.current===!0,Sm=new Map,Cm=async(e,t)=>{let n=R(e),r=Sm.get(n)??Promise.resolve(),i,a=new Promise(e=>{i=e}),o=r.catch(()=>void 0).then(()=>a);Sm.set(n,o),await r.catch(()=>void 0);try{return await t()}finally{i(),Sm.get(n)===o&&Sm.delete(n)}},wm=(e,t)=>({key:e,addLocal:async n=>{await Cm(e,async()=>{await t().addDraftLocalAttachment(e,n)})},removeByAttachmentID:async n=>{try{return await Cm(e,async()=>{let r=t(),i=bm(e,n,r);if(!i)return!(r.getDraft(e)&&[...r.getDraft(e)?.attachments??[],...r.getDraft(e)?.syntheticParts.flatMap(e=>e.attachments)??[]].some(e=>e.attachmentID===n));try{await r.removeDraftAttachment(e,i)}catch{}let a=r.getDraft(e);return!a||![...a.attachments,...a.syntheticParts.flatMap(e=>e.attachments)].some(e=>e.attachmentID===n)})}catch{return!1}},clearRootAttachments:async()=>{try{return await Cm(e,async()=>{let n=t(),r=n.getDraft(e);return!r||r.attachments.length===0||n.setDraftAttachments(e,[])?.attachments.length===0})}catch{return!1}},restoreRootAttachments:async n=>{try{return await Cm(e,async()=>{let r=async()=>t().restoreDraftRootAttachments(e,n),i=await r();return i.status===`conflict`&&(i=await r()),i.status===`failed`||i.status===`stale`?!1:xm(i)})}catch{return!1}},replaceRootAttachments:async n=>{try{return await Cm(e,async()=>t().replaceDraftRootAttachments(e,n))}catch{return}},addVSCodeFile:async(n,r,i)=>{await Cm(e,()=>{t().addDraftVSCodeFileAttachment(e,n,r,i)})},addVSCodeSelection:async(n,r)=>{await Cm(e,async()=>{await t().addDraftVSCodeSelectionAttachment(e,n,r)})}}),Tm=4e4,Em=0,Dm=null;function Om(e=Date.now()){Em=e}function km(e){return Dm=e,()=>{Dm===e&&(Dm=null)}}function Am(e){Dm?.(e)}function jm(e=Date.now(),t=Tm){return Em<=0?!1:e-Em>=t}var Mm=3e4,Nm=200,Pm=new Map;function Fm(e,t,n){return`${n?.transport??r()}\n${n?.generation??s()}\n${e.trim()}\n${t}`}function Im(e,t,n){if(!e||!t)return!1;let r=Pm.get(Fm(e,t,n));return r!==void 0&&(n?.now??Date.now())-r<Mm}function Lm(e,t,n){if(!e||!t)return;let r=Fm(e,t,n);for(Pm.has(r)&&Pm.delete(r);Pm.size>=Nm;){let e=Pm.keys().next().value;if(typeof e!=`string`)break;Pm.delete(e)}Pm.set(r,n?.now??Date.now())}var Rm=768,zm=()=>{if(typeof window>`u`)return!1;let e=typeof window.matchMedia==`function`?window.matchMedia(`(pointer: coarse)`).matches||window.matchMedia(`(hover: none)`).matches:!1,t=typeof navigator<`u`?navigator.maxTouchPoints??0:0;return e||t>0},Bm=()=>{if(typeof window>`u`)return`desktop`;let e=window.__OPENCHAMBER_SURFACE__;if(e===`mobile`||e===`desktop`)return e;let t=new URLSearchParams(window.location.search).get(`surface`);if(t===`mobile`||t===`desktop`)return t;if(se())return`desktop`;let n=window.innerWidth||window.screen?.width||0;return n>0&&n<=Rm&&zm()?`mobile`:`desktop`},Vm=()=>Bm()===`mobile`,Hm=3,Um=2,Wm=4,Gm=4,Km=100,qm=30;function Jm(){return l()?`relay`:`local`}function Ym(e=Jm()){return e===`relay`?Um:Hm}function Xm(e=Jm()){return e===`relay`?Gm:Wm}function Zm(e){return Ym(eh(e))}function Qm(){return Km}function $m(){return qm}function eh(e){return e===`relay`||e===`local`?e:Jm()}var th=Object.freeze({liveRevision:0,confirmedHeadMessageID:null});function nh(){return{pages:[],pageParams:[]}}function rh(e){let t={};for(let[n,r]of Object.entries(e.messagesByID))t[n]=r;let n={};for(let[t,r]of Object.entries(e.partsByMessageID))n[t]=Object.isFrozen(r)?r:Object.freeze([...r]);return Object.freeze({kind:e.kind,messageOrder:Object.isFrozen(e.messageOrder)?e.messageOrder:Object.freeze([...e.messageOrder]),messagesByID:Object.freeze(t),partsByMessageID:Object.freeze(n),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:Object.freeze({...e.sync})})}function ih(e){return{pages:Object.freeze(e.pages.map(rh)),pageParams:Object.freeze([...e.pageParams])}}function ah(e,t,n=th){let r=[],i={},a={};for(let t of e.records){let e=t.info?.id;!e||i[e]||(r.push(e),i[e]=t.info,t.parts&&(a[e]=Object.freeze([...t.parts])))}let o=typeof e.turnCount==`number`&&Number.isFinite(e.turnCount)?Math.max(0,Math.floor(e.turnCount)):typeof e.requestedTurnLimit==`number`&&Number.isFinite(e.requestedTurnLimit)?Math.max(0,Math.floor(e.requestedTurnLimit)):+(e.records.length>0);return rh({kind:t,messageOrder:r,messagesByID:i,partsByMessageID:a,cursor:e.complete?null:e.cursor??null,complete:e.complete,turnCount:o,sync:n})}function oh(e){if(!e||e.pages.length===0)return rl;let t=e.pages[0],n=e.pages.reduce((e,t)=>e+t.turnCount,0);return t.complete?{kind:`exhausted`,loadedTurns:n}:typeof t.cursor==`string`&&t.cursor.length>0?{kind:`has-more`,cursor:t.cursor,loadedTurns:n}:{kind:`unknown`,loadedTurns:n}}function sh(e,t){let n={},r={},i=[],a=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder){if(a.has(e))continue;let n=t.messagesByID[e];if(!n)continue;a.add(e),i.push(n);let o=t.partsByMessageID[e];o&&(r[e]=[...o])}n[t]=i;let o=oh(e);return{message:n,part:r,session_history_boundary:o.kind===`unknown`&&o.loadedTurns===0?{}:{[t]:o}}}function ch(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(n?.id)return n.id}return null}function lh(e,t,n,r,i,a,o){let s=[],c={},l={};for(let e of t){if(!e?.id)continue;s.push(e.id),c[e.id]=e;let t=n[e.id];t&&(l[e.id]=Object.freeze([...t]))}return rh({kind:e,messageOrder:s,messagesByID:c,partsByMessageID:l,cursor:r,complete:i,turnCount:a,sync:{liveRevision:o,confirmedHeadMessageID:ch(t)}})}function uh(e,t,n,r,i,a){let o=n.messages,s=n.part,c=typeof i.turnCount==`number`&&Number.isFinite(i.turnCount)?Math.max(0,Math.floor(i.turnCount)):typeof i.requestedTurnLimit==`number`&&Number.isFinite(i.requestedTurnLimit)?Math.max(0,Math.floor(i.requestedTurnLimit)):+(i.records.length>0),l=i.complete?null:i.cursor??null,u=i.complete;if(!e||e.pages.length===0||r===`initial`)return ih({pages:[lh(`tail`,o,s,l,u,c,a)],pageParams:[null]});if(r===`prepend`){let r=new Set;for(let t of e.pages)for(let e of t.messageOrder)r.add(e);let d=o.filter(e=>i.records.some(t=>t.info.id===e.id)||!r.has(e.id)).filter(t=>{if(i.records.some(e=>e.info.id===t.id))return!0;if(!r.has(t.id)){let n=e.pages[0]?.messageOrder[0];return!n||t.id<n}return!1}),f=[],p=new Set;for(let e of i.records){let t=o.find(t=>t.id===e.info.id);!t||p.has(t.id)||(p.add(t.id),f.push(t))}for(let e of d)p.has(e.id)||(p.add(e.id),f.push(e));let m=lh(`history`,f,s,l,u,c,a),h=new Set(p),g=[m],_=[l];for(let r=0;r<e.pages.length;r+=1){let i=e.pages[r],o=[];for(let e of i.messageOrder){if(h.has(e))continue;let r=n.message[t]?.find(t=>t.id===e)??i.messagesByID[e];r&&o.push(r)}g.push(fh(i,o,s,a)),_.push(e.pageParams[r]??null)}return ih({pages:g,pageParams:_})}let d=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)d.has(n)||d.set(n,t)});let f=e.pages.map(()=>[]),p=[];for(let e of o){let t=d.get(e.id);t===void 0?p.push(e):f[t].push(e)}let m=e.pages.map((t,n)=>{let i=f[n]??[];return n===e.pages.length-1&&p.length>0?fh(t,r===`reconcile-page`?dh(i,p):[...i,...p],s,a):fh(t,i,s,a)});if(m.length>0&&n.boundary){let e=m[0],t=n.boundary.kind===`has-more`?n.boundary.cursor:null,r=n.boundary.kind===`exhausted`;(e.cursor!==t||e.complete!==r)&&(m[0]=rh({...e,cursor:t,complete:r,sync:{...e.sync,liveRevision:a}}))}return ih({pages:m,pageParams:[...e.pageParams]})}function dh(e,t){let n=e.slice();for(let e of t){let t=ac(e),r=n.length;for(let e=0;e<n.length;e+=1)if(ic(t,ac(n[e]))<0){r=e;break}n.splice(r,0,e)}return n}function fh(e,t,n,r){let i=[],a={},o={},s=t.length!==e.messageOrder.length,c=!1,l=!1;for(let r=0;r<t.length;r+=1){let u=t[r];if(!u?.id)continue;i.push(u.id),e.messageOrder[r]!==u.id&&(s=!0);let d=e.messagesByID[u.id];d===u?a[u.id]=u:d&&ph(d,u)?a[u.id]=d:(a[u.id]=u,c=!0);let f=n[u.id],p=e.partsByMessageID[u.id];f===void 0?p!==void 0&&(l=!0):p&&(p===f||hh(p,f))?o[u.id]=p:Object.isFrozen(f)&&f===p?o[u.id]=f:p&&f===p?o[u.id]=p:(o[u.id]=Object.freeze([...f]),l=!0)}return!s&&!c&&!l&&e.sync.liveRevision===r||!s&&!c&&!l?e:rh({kind:e.kind,messageOrder:i,messagesByID:a,partsByMessageID:o,cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,sync:{liveRevision:r,confirmedHeadMessageID:ch(t)}})}function ph(e,t){return e===t||e.id===t.id&&e===t}function mh(e,t){return e===t||!(!e||!t||e.id!==t.id||e.type!==t.type||e.text!==t.text||e.state!==t.state||e.output!==t.output||e.metadata!==t.metadata||e.time!==t.time||e.url!==t.url||e.slim!==t.slim)}function hh(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!mh(e[n],t[n]))return!1;return!0}function gh(e){return e.filter(e=>!!e?.id).slice().sort((e,t)=>e.id<t.id?-1:+(e.id>t.id))}function _h(e){let t=e.properties;if(t){if(typeof t.messageID==`string`)return t.messageID;if(typeof t.info?.id==`string`)return t.info.id;if(typeof t.part?.messageID==`string`)return t.part.messageID}}function vh(e,t,n,r,i,a){let o=n.message[t]??[],s=n.part,c=uh(e??nh(),t,{message:n.message,part:s,messages:o,boundary:r},`recovery`,{records:o.map(e=>({info:e,parts:s[e.id]??[]})),complete:r.kind===`exhausted`,cursor:r.kind===`has-more`?r.cursor:void 0,turnCount:0},i);if(e&&e.pages.length>0){let t=new Map,n=new Map;e.pages.forEach((e,r)=>{for(let i of e.messageOrder){t.has(i)||t.set(i,r);let a=e.messagesByID[i];a&&n.set(i,a)}});let r=o.map(e=>{let t=n.get(e.id);return t&&t.id===e.id&&t===e||t&&e.id===t.id&&e===t?t:e}).map(e=>{let t=n.get(e.id);return!t||a.has(e.id)?e:t}),c={};for(let t of r){let n=s[t.id];if(!n)continue;let r;for(let n of e.pages)if(n.partsByMessageID[t.id]){r=n.partsByMessageID[t.id];break}r&&!a.has(t.id)||r&&hh(r,n)?c[t.id]=r:c[t.id]=n}let l=e.pages.map(()=>[]),u=[];for(let e of r){let n=t.get(e.id);n===void 0?u.push(e):l[n].push(e)}return ih({pages:e.pages.map((t,n)=>fh(t,n===e.pages.length-1?[...l[n]??[],...u]:l[n]??[],c,i)),pageParams:[...e.pageParams]})}return c}function yh(e,t){let n=sh(e,t),r=oh(e),i={message:{...n.message,[t]:[...n.message[t]??[]]},part:{...n.part}};for(let[e,t]of Object.entries(i.part))t&&(i.part[e]=[...t]);return{draft:i,previousBoundary:r}}function bh(e,t,n,r){if(!kl(n.type))return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=yh(e,t),o=Ls(i,n);if(!(typeof o==`boolean`?o:o.changed))return{data:e,result:{applied:!0,changed:!1}};let s=_h(n),c=new Set;return s&&c.add(s),{data:vh(e,t,i,a,r,c),result:{applied:!0,changed:!0}}}function xh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.partsByMessageID))!t.has(e)&&r&&t.set(e,r);return t}function Sh(e){let t=new Map;if(!e)return t;for(let n of e.pages)for(let[e,r]of Object.entries(n.messagesByID))!t.has(e)&&r&&t.set(e,r);return t}function Ch(e){return e?e.map(e=>e.id).filter(e=>typeof e==`string`):[]}function wh(e,t,n,r){if(n.length===0)return{data:e,result:{applied:!1,changed:!1}};let{draft:i,previousBoundary:a}=yh(e,t),o=!1,s=0,c,l=new Set,u=xh(e),d=Sh(e),f=Ch(i.message[t]);for(let e of n){if(!kl(e.type))continue;o=!0;let n=Ls(i,e),r=typeof n==`boolean`?n:n.changed,a=typeof n==`boolean`?void 0:n.materialization;if(a&&!c&&(c=a),!r)continue;let p=_h(e),m=Ch(i.message[t]),h=m.length!==f.length||m.some((e,t)=>e!==f[t]),g=h;if(p){let e=i.part[p],n=u.get(p);e&&n&&hh(n,e)?i.part[p]=[...n]:e?(g=!0,u.set(p,e)):n&&(g=!0,u.delete(p));let r=i.message[t]?.find(e=>e.id===p),a=d.get(p);if(!(r&&a&&a===r))if(r&&a&&ph(a,r)){let e=i.message[t];if(e){let t=e.findIndex(e=>e.id===p);t>=0&&(e[t]=a)}}else r?(g=!0,d.set(p,r)):a&&(g=!0,d.delete(p))}else g=!0;if(h){f=m;for(let e of i.message[t]??[])e?.id&&!d.has(e.id)&&d.set(e.id,e)}g&&(s+=1,p&&l.add(p))}return o?s===0?{data:e,result:{applied:!0,changed:!1,...c?{materialization:c}:{}}}:{data:vh(e,t,i,a,r+s,l),result:{applied:!0,changed:!0,...c?{materialization:c}:{}}}:{data:e,result:{applied:!1,changed:!1}}}function Th(e,t,n,r,i){let a=e&&e.pages.length>0?e:ih({pages:[lh(`tail`,[],{},null,!1,0,i)],pageParams:[null]}),o=sh(a,t),s=o.message[t]?[...o.message[t]]:[];s.findIndex(e=>e.id===n.id)<0&&s.push(n);let c={...o.part,[n.id]:gh(r)};return{data:ih({pages:a.pages.map((e,t)=>t===a.pages.length-1?fh(e,s.filter(e=>{for(let t=0;t<a.pages.length-1;t+=1)if(a.pages[t]?.messagesByID[e.id])return!1;return!0}),c,i):e.messagesByID[n.id]?fh(e,e.messageOrder.filter(e=>e!==n.id).map(t=>e.messagesByID[t]).filter(Boolean),c,i):e),pageParams:[...a.pageParams]}),result:{applied:!0,changed:!0}}}function Eh(e,t,n){if(!e||e.pages.length===0)return{data:e,result:{applied:!0,changed:!1}};let r=!1;return{data:ih({pages:e.pages.map(e=>{if(!e.messagesByID[t]&&!e.partsByMessageID[t])return e;r=!0;let i=e.messageOrder.filter(e=>e!==t).map(t=>e.messagesByID[t]).filter(Boolean),a={};for(let[n,r]of Object.entries(e.partsByMessageID))n!==t&&(a[n]=[...r]);return fh(e,i,a,n)}),pageParams:[...e.pageParams]}),result:{applied:!0,changed:r}}}function Dh(e,t,n){if(n.records.length===0)return{data:e,result:{applied:!1,changed:!1}};let r=sh(e,t),i=Zc({message:r.message,part:r.part},t,n.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),{skipPartTypes:n.skipPartTypes,merge:n.merge});if(!i.messagesChanged&&!i.partsChanged)return{data:e,result:{applied:!0,changed:!1,boundary:oh(e)}};let a=e?.pages[e.pages.length-1]?.sync.liveRevision??0,o=i.part;if(!e||e.pages.length===0){let e=i.messages[0]?.id,t=i.messages.filter(e=>e.role===`user`).length,n=ih({pages:[lh(`tail`,i.messages,o,typeof e==`string`&&e.length>0?e:null,!1,t,a)],pageParams:[null]});return{data:n,result:{applied:!0,changed:!0,boundary:oh(n)}}}let s=new Map;e.pages.forEach((e,t)=>{for(let n of e.messageOrder)s.has(n)||s.set(n,t)});let c=e.pages.map(()=>[]),l=[];for(let e of i.messages){let t=s.get(e.id);t===void 0?l.push(e):c[t].push(e)}let u=ih({pages:e.pages.map((t,n)=>{let r=c[n]??[];return n===e.pages.length-1&&l.length>0?fh(t,dh(r,l),o,a):fh(t,r,o,a)}),pageParams:[...e.pageParams]});return{data:u,result:{applied:!0,changed:!0,boundary:oh(u)}}}function Oh(e,t,n){switch(n.type){case`http-page`:{let r=n.liveRevision??0,i=fl(sh(e,t),t,{ok:!0,records:n.page.records.map(e=>({info:e.info,parts:e.parts?[...e.parts]:[]})),cursor:n.page.cursor,complete:n.page.complete,turnCount:n.page.turnCount,requestedTurnLimit:n.page.requestedTurnLimit},{purpose:n.purpose,skipPartTypes:n.skipPartTypes,optimistic:n.optimistic?n.optimistic.map(e=>({message:e.message,parts:[...e.parts]})):void 0,capturedRevision:n.capturedLiveRevision,liveRevision:n.liveRevision});return i.applied?{data:uh(e,t,{message:i.message,part:i.part,messages:i.messages,boundary:i.boundary},n.purpose,n.page,r),result:{applied:!0,changed:i.changed,boundary:i.boundary,meta:i.meta,confirmedOptimisticIDs:i.confirmedOptimisticIDs}}:{data:e,result:{applied:!1,changed:!1,error:i.error}}}case`sse-event`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return bh(e,t,n.event,r+1)}case`sse-event-batch`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return wh(e,t,n.events,r)}case`optimistic-add`:{let r=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Th(e,t,n.message,n.parts,r)}case`optimistic-confirm`:return{data:e,result:{applied:!0,changed:!1}};case`optimistic-remove`:{let t=e?.pages[e.pages.length-1]?.sync.liveRevision??0;return Eh(e,n.messageID,t)}case`durable-seed`:return Dh(e,t,n);case`reset`:return n.page?Oh(void 0,t,{type:`http-page`,purpose:`initial`,page:n.page,capturedLiveRevision:n.capturedLiveRevision,liveRevision:n.liveRevision,skipPartTypes:n.skipPartTypes}):{data:void 0,result:{applied:!0,changed:!!(e&&e.pages.length>0)}};default:return{data:e,result:{applied:!1,changed:!1}}}}function kh(e){return{records:e.messageOrder.map(t=>({info:e.messagesByID[t],parts:e.partsByMessageID[t]?[...e.partsByMessageID[t]]:[]})),cursor:e.cursor??void 0,complete:e.complete,turnCount:e.turnCount}}function Ah(e,t,n,r=`materialize`){return Oh(e,n,{type:`http-page`,purpose:r,page:kh(t),liveRevision:t.sync.liveRevision}).data}function jh(e,t,n){if(!t)return e;if(!e||e.pages.length===0)return ih(t);if(t.pages.length===e.pages.length){let r=Fh(e,t);if(r===e)return e;if(Ph(e,t)||Nh(e,t))return r;let i=t.pages[t.pages.length-1];return Ah(e,i,n)??r}if(t.pages.length===e.pages.length+1){let r=t.pages[0];return Oh(e,n,{type:`http-page`,purpose:`prepend`,page:kh(r),liveRevision:r.sync.liveRevision}).data}if(t.pages.length===1&&e.pages.length>1){let r=t.pages[0];return Ah(e,r,n)??ih(t)}return ih(t)}function Mh(e){let t=new Set;for(let n of e.pages)for(let e of n.messageOrder)t.add(e);return t}function Nh(e,t){let n=Mh(e),r=Mh(t);if(r.size===0||r.size>=n.size)return!1;for(let e of r)if(!n.has(e))return!1;let i=Ih(e,``),a=Ih(t,``);for(let e of r)if(i.messagesByID[e]!==a.messagesByID[e]||i.partsByMessageID[e]!==a.partsByMessageID[e])return!1;return!0}function Ph(e,t){let n=Mh(e);if(n.size===0)return!1;let r=Mh(t);for(let e of n)if(!r.has(e))return!1;if(r.size<=n.size)return!1;let i=Ih(t,``);for(let e=1;e<i.messageOrder.length;e+=1){let t=i.messagesByID[i.messageOrder[e-1]],n=i.messagesByID[i.messageOrder[e]];if(!t||!n||ic(ac(t),ac(n))>0)return!1}return!0}function Fh(e,t){let n=!1,r=t.pages.map((t,r)=>{let i=e.pages[r];return i&&(i===t||i.kind===t.kind&&i.cursor===t.cursor&&i.complete===t.complete&&i.turnCount===t.turnCount&&i.messageOrder.length===t.messageOrder.length&&i.messageOrder.every((e,n)=>e===t.messageOrder[n])&&i.messageOrder.every(e=>i.messagesByID[e]===t.messagesByID[e])&&i.messageOrder.every(e=>i.partsByMessageID[e]===t.partsByMessageID[e])&&i.sync.liveRevision===t.sync.liveRevision)?i:(n=!0,rh(t))});return!n&&e.pageParams.length===t.pageParams.length?e:ih({pages:r,pageParams:[...t.pageParams]})}function Ih(e,t){let n=[],r={},i={},a=0;for(let t of e?.pages??[]){a=Math.max(a,t.sync.liveRevision);for(let e of t.messageOrder){if(r[e]){r[e]=t.messagesByID[e]??r[e],t.partsByMessageID[e]&&(i[e]=t.partsByMessageID[e]);continue}n.push(e);let a=t.messagesByID[e];a&&(r[e]=a);let o=t.partsByMessageID[e];o&&(i[e]=o)}}let o=[],s=new Set;for(let t of e?.pages??[])for(let e of t.messageOrder)s.has(e)||(s.add(e),o.push(e));return{messageOrder:o,messagesByID:r,partsByMessageID:i,boundary:oh(e),liveRevision:a}}var Lh=class extends Error{code=`runtime_stale`;constructor(e=`runtime_stale`){super(e),this.name=`SessionMessageRuntimeStaleError`}},Rh=class extends Error{code=`page_contract`;constructor(e){super(e),this.name=`SessionMessagePageContractError`}},zh=class extends Error{code=`http_error`;status;constructor(e,t){super(t??`session message page failed (${e})`),this.name=`SessionMessageHttpError`,this.status=e}},Bh=e=>e.trim(),Vh=e=>e?.trim()||`tail`,Hh=new Set([502,503,504]),Uh=[`load failed`,`network connection was lost`,`network request failed`,`failed to fetch`,`econnreset`,`econnrefused`,`etimedout`,`socket hang up`,`signal timed out`,`timed out`,`timeout`,`opencode api unavailable`];function Wh(e){if(!e||e instanceof Lh||e instanceof Rh)return!1;if(e instanceof zh)return e.status>=400&&e.status<500?!1:Hh.has(e.status)||e.status>=500&&e.status<600;let t=e?.status;if(typeof t==`number`){if(t>=400&&t<500)return!1;if(Hh.has(t)||t>=500&&t<600)return!0}let n=String(e instanceof Error?e.message:e).toLowerCase(),r=n.match(/\((\d{3})\)/);if(r){let e=Number(r[1]);if(e>=400&&e<500)return!1;if(Hh.has(e)||e>=500&&e<600)return!0}return n.includes(`page contract`)||n.includes(`malformed json`)||n.includes(`contract`)?!1:Uh.some(e=>n.includes(e))}function Gh(e,t){return e>=2?!1:Wh(t)}var Kh=(e,t=r(),n=s())=>[t,n,`sessionMessages`,`page`,Bh(e.directory),e.sessionID,e.limit,Vh(e.before)],qh=(e,t=r(),n=s())=>[t,n,`session-transcript`,Bh(e.directory),e.sessionID];function Jh(e){if(!e||typeof e!=`object`)throw new Rh(`session message page: expected object`);let t=e;if(!Array.isArray(t.records))throw new Rh(`session message page: records must be an array`);if(typeof t.complete!=`boolean`)throw new Rh(`session message page: complete must be boolean`);for(let e of t.records){if(!e||typeof e!=`object`)throw new Rh(`session message page: invalid record`);let t=e.info;if(!t||typeof t!=`object`||typeof t.id!=`string`)throw new Rh(`session message page: record.info.id required`)}if(t.cursor!==void 0&&t.cursor!==null&&typeof t.cursor!=`string`)throw new Rh(`session message page: cursor must be string when set`);return e}var Yh=e=>{let t=e.records.map(e=>Object.freeze({info:Object.freeze({...e.info}),parts:e.parts===void 0?void 0:Object.freeze([...e.parts])}));return Object.freeze({records:Object.freeze(t),cursor:e.cursor,complete:e.complete,...typeof e.turnCount==`number`?{turnCount:e.turnCount}:{},...typeof e.requestedTurnLimit==`number`?{requestedTurnLimit:e.requestedTurnLimit}:{}})},Xh=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw new Lh},Zh=(e,t,n=r(),i={},a=(i.getGeneration??s)())=>{let o=Bh(e.directory),c=e.sessionID,l=e.limit,u=e.before?.trim()||void 0;return{queryKey:Kh({directory:o,sessionID:c,limit:l,before:u},n,a),queryFn:async({signal:e})=>{Xh(n,a,i);let r=await t({directory:o,sessionID:c,limit:l,before:u,signal:e});return Xh(n,a,i),Yh(Jh(r))},staleTime:1/0,gcTime:3e5,retry:Gh,retryDelay:e=>Math.min(500*2**e,4e3)}},Qh=(e,t,n=L,i=r(),a={},o=(a.getGeneration??s)())=>n.fetchQuery(Zh(e,t,i,a,o));function $h(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function eg(e){return Yh({records:e.records.map(e=>({info:e.info,parts:e.parts})),cursor:e.cursor,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit})}function tg(e){if(!e.complete&&typeof e.cursor==`string`&&e.cursor.length>0)return e.cursor}function ng(e){let t=Bh(e.directory),n=e.sessionID,i=e.transport??r(),a=e.probe??{},o=e.generation??(a.getGeneration??s)(),c=e.initialLimit??Ym(),l=e.historyLimit??Xm(),u=e.client??L,d=qh({directory:t,sessionID:n},i,o),f=async t=>eg(await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal}));return{queryKey:d,queryFn:async e=>{Xh(i,o,a);let r=e.pageParam?.trim()||void 0,s=r?l:c,d=r?`prepend`:`initial`,p=await Qh({directory:t,sessionID:n,limit:s,before:r},f,u,i,a,o);Xh(i,o,a);let m=$h(p);return ah(m,d===`prepend`?`history`:`tail`,{liveRevision:0,confirmedHeadMessageID:m.records[m.records.length-1]?.info.id??null})},initialPageParam:null,getPreviousPageParam:tg,getNextPageParam:()=>void 0,staleTime:1/0,gcTime:3e5,retry:Gh,retryDelay:e=>Math.min(500*2**e,4e3),maxPages:void 0,structuralSharing:(e,t)=>jh(e,t,n)}}function rg(e){let t=e.client??L,n=ng({...e,client:t}),r=new nt(t,{...n,structuralSharing:(t,n)=>jh(t,n,e.sessionID)});return{queryKey:n.queryKey,observer:r,ensureInitial:async()=>{let e=(await r.fetchNextPage()).data;if(e&&e.pages.length>0)return ih(e);await r.refetch();let t=r.getCurrentResult().data;if(!t)throw r.getCurrentResult().error??Error(`transcript initial fetch failed`);return ih(t)},fetchPreviousPage:async()=>{let e=r.getCurrentResult().data;try{let t=await r.fetchPreviousPage({cancelRefetch:!1}),n=r.getCurrentResult(),i=t.data??n.data??e;if(t.isError||n.isFetchPreviousPageError){let e=t.error??n.error??Error(`transcript previous page fetch failed`);throw i&&i.pages.length>0?Object.assign(e instanceof Error?e:Error(String(e)),{retainedPages:ih(i)}):e}if(!i)throw Error(`transcript previous page fetch failed`);return ih(i)}catch(t){let n=r.getCurrentResult().data??e;throw n&&n.pages.length>0?Object.assign(t instanceof Error?t:Error(String(t)),{retainedPages:ih(n)}):t}},getData:()=>r.getCurrentResult().data,subscribe:e=>r.subscribe(t=>{e(t.data)}),destroy:()=>{r.destroy()}}}function ig(e,t,n,r){let i=e.getQueryData(t),a=Oh(i,n,r);return a.result.applied?a.data===void 0?(`removeQueries`in e&&typeof e.removeQueries==`function`?e.removeQueries({queryKey:t,exact:!0}):e.setQueryData(t,void 0),a):(!a.result.changed&&a.data===i||e.setQueryData(t,a.data),a):a}function ag(e,t=L,n=r(),i=s()){return t.getQueryData(qh(e,n,i))}function og(){return v()||Vm()}function sg(){return v()?4:Vm()?12:40}var cg=1048576,lg=4*cg,ug=12*cg,dg=40*cg;function fg(){return v()?lg:Vm()?ug:dg}var pg=e=>e.trim();function mg(e){return{transport:e.transport,generation:e.generation,directory:pg(e.directory),sessionID:e.sessionID}}function hg(e){let t=mg(e);return`${t.transport}\n${t.generation}\n${t.directory}\n${t.sessionID}`}function gg(e){return`${e.transport}\n${e.generation}\n${pg(e.directory)}`}var _g={canonical:`session-transcript`,transportPageRoot:`sessionMessages`,transportPageKind:`page`,taskRoot:`session-transcript-task`,tailTaskKind:`tail`,reconcileTaskKind:`reconcile`,checkpoint:`session-transcript-checkpoint`};function vg(e,t,n){return[t,n,_g.taskRoot,_g.reconcileTaskKind,pg(e.directory),e.sessionID,e.checkpoint]}function yg(e,t,n){return[t,n,_g.checkpoint,pg(e.directory),e.sessionID]}function bg(e){let t=mg(e);return[{queryKey:qh({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0},{queryKey:[t.transport,t.generation,_g.transportPageRoot,_g.transportPageKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,_g.taskRoot,_g.tailTaskKind,t.directory,t.sessionID]},{queryKey:[t.transport,t.generation,_g.taskRoot,_g.reconcileTaskKind,t.directory,t.sessionID]},{queryKey:yg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),exact:!0}]}function xg(){let e=new Map;return{retain(t){let n=mg(t),r=hg(n),i=e.get(r);i?i.count+=1:e.set(r,{scope:n,count:1});let a=!1;return()=>{if(a)return;a=!0;let t=e.get(r);t&&(--t.count,t.count<=0&&e.delete(r))}},isRetained(t){return(e.get(hg(t))?.count??0)>0},listRetained(){return Array.from(e.values()).map(e=>e.scope)},retainCount(t){return e.get(hg(t))?.count??0},clear(){e.clear()}}}function Sg(){return{cancel:0,remove:0,enforce:0,purgeSession:0,purgeGeneration:0,destructiveReset:0,evictedSessions:0}}var Cg=3e4;function wg(e){return e&&typeof e==`object`&&`pages`in e&&Array.isArray(e.pages)?e.pages.length:0}function Tg(e){return!Array.isArray(e)||e.length<5||e[2]!==_g.canonical||typeof e[0]!=`string`||typeof e[1]!=`number`||typeof e[3]!=`string`||typeof e[4]!=`string`?null:{transport:e[0],generation:e[1],directory:e[3],sessionID:e[4]}}function Eg(e){let t=e.client,n=e.activeRegistry??xg(),r=e.counters??Sg(),i=e.getLimit??sg,a=e.now??Date.now,o=e.minResidencyMs??Cg,s=new Map,c=e=>{let t=hg(mg(e));s.set(t,a())},l=e=>{let t=hg(mg(e)),n=s.get(t);return n!==void 0&&a()-n<o},u=e=>{let r=mg(e);if(n.isRetained(r))return!0;let i=qh({directory:r.directory,sessionID:r.sessionID},r.transport,r.generation);return(t.getQueryCache().find({queryKey:i,exact:!0})?.getObserversCount()??0)>0},d=e=>{let r=e?.directory===void 0?void 0:pg(e.directory),i=[];for(let a of t.getQueryCache().getAll()){let t=Tg(a.queryKey);if(!t||e?.transport!==void 0&&t.transport!==e.transport||e?.generation!==void 0&&t.generation!==e.generation||r!==void 0&&t.directory!==r)continue;let o=a.getObserversCount(),s=n.isRetained(t);i.push({scope:t,queryKey:a.queryKey,dataUpdatedAt:a.state.dataUpdatedAt,observerCount:o,retained:s,active:s||o>0,pageCount:wg(a.state.data)})}return i},f=e=>{t.cancelQueries(e),r.cancel+=1,t.removeQueries(e),r.remove+=1},p=e=>{r.purgeSession+=1,s.delete(hg(mg(e)));for(let t of bg(e))f(t)},m=(e,t)=>{r.purgeGeneration+=1;let n=[[e,t,_g.canonical],[e,t,_g.transportPageRoot,_g.transportPageKind],[e,t,_g.taskRoot],[e,t,_g.checkpoint]];for(let e of n)f({queryKey:e})},h=e=>{r.enforce+=1;let t=e?.limit??i(),n=new Set(Array.from(e?.preserve??[]).map(e=>hg(mg(e)))),o=d({transport:e?.transport,generation:e?.generation,directory:e?.directory}),c=new Map;for(let e of o){let t=gg(e.scope),n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let u=[];for(let e of c.values()){for(let t of e){let e=hg(t.scope);s.has(e)||s.set(e,t.dataUpdatedAt||a())}let i=e.filter(e=>!(e.active||n.has(hg(e.scope))||l(e.scope)));i.sort((e,t)=>e.dataUpdatedAt===t.dataUpdatedAt?e.scope.sessionID<t.scope.sessionID?-1:+(e.scope.sessionID>t.scope.sessionID):e.dataUpdatedAt-t.dataUpdatedAt);let o=e.length-i.length,c=e.length,d=0;for(;c>t&&d<i.length&&!(c-1<o);){let e=i[d];d+=1,p(e.scope),u.push(e.scope),r.evictedSessions+=1,--c}}return{evicted:u}};return{client:t,activeRegistry:n,counters:r,getLimit:i,isActive:u,listCanonical:d,purgeSession:p,purgeGeneration:m,enforce:h,destructiveReset:async(e,t)=>{r.destructiveReset+=1,p(e);try{let n=await t();return h({transport:e.transport,generation:e.generation,directory:e.directory,preserve:[e]}),n}catch(t){throw p(e),t}},noteScopeObserved:c}}var Dg=3e4,Og=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t);async function kg(e,t=Dg){let n;try{return await Promise.race([e,new Promise((e,r)=>{n=setTimeout(()=>{r(Error(`session turn page: timed out after ${t}ms`))},t)})])}finally{n!==void 0&&clearTimeout(n)}}var Ag=e=>e?e.toLowerCase().includes(`application/json`):!1,jg=e=>e?e.toLowerCase().includes(`text/html`):!1;function Mg(e,t){if(!e||typeof e!=`object`)throw Error(`session turn page: expected JSON object`);let n=e;if(n.partial===!0)throw Error(`session turn page: partial responses are not accepted`);if(!Array.isArray(n.records))throw Error(`session turn page: records must be an array`);if(!(`complete`in n)||typeof n.complete!=`boolean`)throw Error(`session turn page: complete must be a boolean`);if(typeof n.turnCount!=`number`||!Number.isFinite(n.turnCount))throw Error(`session turn page: turnCount must be a number`);if(!Number.isInteger(n.turnCount)||n.turnCount<0||n.turnCount>t)throw Error(`session turn page: turnCount must be an integer in 0..${t}`);if(n.cursor!=null&&typeof n.cursor!=`string`)throw Error(`session turn page: cursor must be string or null`);if(typeof n.cursor==`string`&&n.cursor.length===0)throw Error(`session turn page: cursor must not be empty string`);if(n.complete===!0&&n.cursor!=null)throw Error(`session turn page: complete=true requires cursor=null`);if(n.complete===!1&&(n.cursor==null||typeof n.cursor!=`string`))throw Error(`session turn page: complete=false requires non-empty cursor`);let r=[];for(let e=0;e<n.records.length;e++){let t=n.records[e];if(!t||typeof t!=`object`)throw Error(`session turn page: records[${e}] must be an object`);let i=t,a=i.info;if(!a||typeof a!=`object`)throw Error(`session turn page: records[${e}].info must be an object`);let o=a.id;if(typeof o!=`string`||o.length===0)throw Error(`session turn page: records[${e}].info.id must be a non-empty string`);if(`parts`in i&&i.parts!==void 0&&!Array.isArray(i.parts))throw Error(`session turn page: records[${e}].parts must be an array when present`);r.push({info:a,...i.parts===void 0?{}:{parts:i.parts}})}return{records:r,cursor:n.cursor==null?null:n.cursor,complete:n.complete,turnCount:n.turnCount}}async function Ng(e){let t=e.turns??Xm(),n=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages`,r={directory:e.directory,turns:String(t)};e.before&&(r.before=e.before),typeof e.scanLimit==`number`&&Number.isFinite(e.scanLimit)&&(r.scanLimit=String(Math.floor(e.scanLimit)));let i=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Dg;return kg((async()=>{let a=await F(n,{method:`GET`,query:r,signal:Og(e.signal,i)});if(!a.ok)throw Error(`session turn page failed (${a.status})`);let o=a.headers.get(`content-type`);if(jg(o))throw Error(`session turn page: unexpected HTML response`);Ag(o);let s;try{s=await a.json()}catch{throw Error(`session turn page: malformed JSON`)}return Mg(s,t)})(),i)}async function Pg(e){let t=e.purpose===`prepend`&&e.before?Xm():Ym();return Ng({sessionID:e.sessionID,directory:e.directory,turns:t,...e.before?{before:e.before}:{},signal:e.signal})}var Fg=3e4,Ig=2,Lg=(e,t)=>e?typeof AbortSignal.any==`function`?AbortSignal.any([e,AbortSignal.timeout(t)]):e:AbortSignal.timeout(t),Rg=e=>e?e.toLowerCase().includes(`text/html`):!1,zg=e=>new Promise(t=>{setTimeout(t,e)});function Bg(e,t){if(e==null)return null;if(typeof e!=`string`||e.length===0)throw new Rh(`session transcript reconcile: ${t} must be string or null`);return e}function Vg(e){if(!e||typeof e!=`object`)throw new Rh(`session transcript reconcile: expected JSON object`);let t=e;if(!Array.isArray(t.records))throw new Rh(`session transcript reconcile: records must be an array`);if(typeof t.anchorFound!=`boolean`)throw new Rh(`session transcript reconcile: anchorFound must be a boolean`);if(typeof t.complete!=`boolean`)throw new Rh(`session transcript reconcile: complete must be a boolean`);if(typeof t.resetRequired!=`boolean`)throw new Rh(`session transcript reconcile: resetRequired must be a boolean`);if(typeof t.scannedRecords!=`number`||!Number.isFinite(t.scannedRecords)||!Number.isInteger(t.scannedRecords)||t.scannedRecords<0)throw new Rh(`session transcript reconcile: scannedRecords must be a non-negative integer`);if(typeof t.responseBytes!=`number`||!Number.isFinite(t.responseBytes)||!Number.isInteger(t.responseBytes)||t.responseBytes<0)throw new Rh(`session transcript reconcile: responseBytes must be a non-negative integer`);let n=Bg(t.capturedHeadMessageID,`capturedHeadMessageID`),r=Bg(t.latestHeadMessageID,`latestHeadMessageID`),i=Bg(t.continuation,`continuation`);if(t.complete===!0&&i!=null)throw new Rh(`session transcript reconcile: complete=true requires continuation=null`);if(t.complete===!1&&t.resetRequired!==!0&&i==null)throw new Rh(`session transcript reconcile: complete=false requires non-empty continuation`);if(t.resetRequired===!0){if(t.complete!==!0)throw new Rh(`session transcript reconcile: resetRequired=true requires complete=true`);if(i!=null)throw new Rh(`session transcript reconcile: resetRequired=true requires continuation=null`)}let a=[];for(let e=0;e<t.records.length;e+=1){let n=t.records[e];if(!n||typeof n!=`object`)throw new Rh(`session transcript reconcile: records[${e}] must be an object`);let r=n,i=r.info;if(!i||typeof i!=`object`)throw new Rh(`session transcript reconcile: records[${e}].info must be an object`);let o=i.id;if(typeof o!=`string`||o.length===0)throw new Rh(`session transcript reconcile: records[${e}].info.id must be a non-empty string`);if(`parts`in r&&r.parts!==void 0&&!Array.isArray(r.parts))throw new Rh(`session transcript reconcile: records[${e}].parts must be an array when present`);a.push({info:i,...r.parts===void 0?{}:{parts:r.parts}})}return{records:Object.freeze(a),anchorFound:t.anchorFound,capturedHeadMessageID:n,latestHeadMessageID:r,continuation:i,complete:t.complete,resetRequired:t.resetRequired,scannedRecords:t.scannedRecords,responseBytes:t.responseBytes}}function Hg(e){let t=typeof e.anchor==`string`&&e.anchor.length>0?e.anchor:void 0,n=typeof e.continuation==`string`&&e.continuation.length>0?e.continuation:void 0;if(!!t==!!n)throw new Rh(`session transcript reconcile: provide exactly one of anchor or continuation`);return{anchor:t,continuation:n}}async function Ug(e,t,n){let r=`/api/openchamber/sessions/${encodeURIComponent(e.sessionID)}/messages/reconcile`,i={directory:e.directory};return t.anchor&&(i.anchor=t.anchor),t.continuation&&(i.continuation=t.continuation),kg((async()=>{let t;try{t=await F(r,{method:`GET`,query:i,signal:Lg(e.signal,n)})}catch(e){throw e instanceof Lh||e instanceof Rh||e instanceof zh||e instanceof Error?e:Error(String(e))}if(!t.ok)throw new zh(t.status,`session transcript reconcile failed (${t.status})`);if(Rg(t.headers.get(`content-type`)))throw new Rh(`session transcript reconcile: unexpected HTML response`);let a;try{a=await t.json()}catch{throw new Rh(`session transcript reconcile: malformed JSON`)}return Vg(a)})(),n)}async function Wg(e){let t=Hg(e),n=typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:Fg,r=typeof e.maxRetries==`number`&&Number.isFinite(e.maxRetries)?Math.max(0,Math.floor(e.maxRetries)):Ig,i=e.sleep??zg,a=0;for(;;){if(e.signal?.aborted)throw new DOMException(`The operation was aborted.`,`AbortError`);try{return await Ug(e,t,n)}catch(t){if(t instanceof Lh||t instanceof Rh||t instanceof zh&&t.status>=400&&t.status<500||(t instanceof Error?t.name:``)===`AbortError`&&e.signal?.aborted||a>=r||!Wh(t))throw t;a+=1,await i(Math.min(500*2**(a-1),4e3))}}}var Gg=e=>!!(e&&typeof e==`object`&&typeof e.type==`string`),Kg=e=>e.filter(Gg),qg=e=>{let t=e,n=t.text;return typeof n==`string`?n:t.content||t.value||``},Jg=e=>{if(e.type!==`text`)return!1;let t=qg(e);return!t||t.trim().length===0},Yg=(e,t={})=>{let{includeReasoning:n=!0}=t,r=Kg(e),i=r.some(e=>!e.synthetic);return r.filter(e=>{let t=!!e.synthetic;return t&&e.type===`text`&&qg(e).includes(`<system-reminder>`)||t&&i||!n&&e.type===`reasoning`?!1:e.type!==`patch`})},Xg=`GitHub issue context (JSON)`,Zg=`GitHub pull request context (JSON)`,Qg=e=>typeof e==`number`&&Number.isFinite(e)&&e>0,$g=(e,t)=>{let n=e.trimStart();if(!n.startsWith(t))return null;let r=n.indexOf(`{`);if(r<0)return null;try{return JSON.parse(n.slice(r))}catch{return null}},e_=e=>{let t=$g(e,Xg);if(t){let e=t.issue,n=e?.number,r=e?.title,i=e?.url;return!Qg(n)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.issue-link`,filename:`Issue #${n}: ${r}`,url:i}}let n=$g(e,Zg);if(n){let e=n.pr,t=e?.number,r=e?.title,i=e?.url;return!Qg(t)||typeof r!=`string`||typeof i!=`string`?null:{type:`file`,mime:`application/vnd.github.pull-request-link`,filename:`PR #${t}: ${r}`,url:i}}return null},t_=(e,t)=>{let n=e.trim();return!!(t&&n.startsWith(`User has requested to enter plan mode`)||t&&n.startsWith(`The plan at `)||n.startsWith(`The following tool was executed by the user`))},n_=e=>e.trimStart().startsWith(`Continue working toward the active session goal.`),r_=e=>e.trim()===`/compact`,i_=(e,t)=>{let n=t?.planModeEnabled===!0;return e.filter(e=>{if(e.type===`compaction`)return!1;if(e.type===`text`){let t=e.text;if(typeof t==`string`&&(n_(t)||r_(t)))return!1}if(e.synthetic!==!0)return!0;if(e.type!==`text`)return!1;let t=e.text;if(typeof t!=`string`)return!1;let r=t.trimStart();return t_(t,n)||r.startsWith(Xg)||r.startsWith(Zg)}).map(e=>{let t=e;if(t.type===`text`){let e=typeof t.text==`string`?t.text.trim():``;if(t.synthetic===!0){let t=e_(e);if(t)return t}if(e.startsWith(`The following tool was executed by the user`))return{type:`text`,text:`/shell`}}return e})},a_=e=>e.some(e=>{if(e.type===`text`)return!Jg(e);if(e.type===`file`){let t=e,n=typeof t.mime==`string`?t.mime:``,r=typeof t.url==`string`?t.url:``;return(!!n||!!r)&&!!r&&!Ie(e)}return!0}),o_=e=>e?.length?a_(i_(e)):!1,s_=`oc_asst_session_divider:`,c_=[],l_=e=>typeof e?.info?.id==`string`&&e.info.id.startsWith(`oc_asst_session_divider:`),u_=(e,t=0)=>({info:{id:`${s_}${e}`,role:`system`,time:{created:t}},parts:[]}),d_=e=>e.slice().reverse().flatMap(e=>e.entries),f_=(e,t,n=c_)=>{if(!e.length)return c_;let r=[],i=!1,a=null;for(let n of e)n.sessionID!==t&&(i&&a!==n.sessionID&&r.push(u_(n.sessionID,Number(n.info.time?.created??0))),r.push({info:n.info,parts:n.parts,sourceSessionID:n.sessionID,sourceDirectory:n.directory}),i=!0,a=n.sessionID);return r.length===0?c_:__(n,r)?n:r},p_=(e,t)=>{if(t.length===0)return e;if(e.length===0)return t;let n=new Map;for(let e of t)e?.id&&n.set(e.id,e);for(let t of e)t?.id&&n.set(t.id,t);let r=new Set,i=[];for(let e of t){if(!e?.id||r.has(e.id))continue;let t=n.get(e.id);t&&(i.push(t),r.add(e.id))}for(let t of e)!t?.id||r.has(t.id)||(i.push(t),r.add(t.id));return i.length===e.length&&i.every((t,n)=>t===e[n])?e:i},m_=(e,t)=>{if(!t)return e;if(e.info.role===`assistant`&&t.parts.length>0){let n=p_(e.parts,t.parts);return n===e.parts&&e.info===t.info?e:n===t.parts&&e.info===t.info&&e.parts===t.parts?t:{...e,parts:n,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}}return o_(e.parts)?e:o_(t.parts)?e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}:e.parts.length>0||t.parts.length===0?e:e.info===t.info&&e.parts===t.parts?t:{...e,parts:t.parts,...t.sourceParts&&!e.sourceParts?{sourceParts:t.sourceParts}:{}}},h_=(e,t,n,r=c_)=>{if(!t)return n.length>0?Array.from(n):c_;let i=new Map,a=0;for(let n of e)n.sessionID===t&&i.set(n.info.id,{message:{info:n.info,parts:n.parts},order:a++});for(let e of n){let t=i.get(e.info.id);i.set(e.info.id,{message:m_(e,t?.message),order:t?.order??a++})}if(i.size===0)return c_;let o=[...i.values()].sort((e,t)=>Number(e.message.info.time?.created??0)-Number(t.message.info.time?.created??0)||e.order-t.order).map(({message:e})=>e);return __(r,o)?r:o},g_=(e,t)=>{if(!l_(e)||!l_(t))return!1;let n=Number(e.info.time?.created??0),r=Number(t.info.time?.created??0);return e.info.id===t.info.id&&n===r},__=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||!(r===i||g_(r,i))&&(r?.info!==i?.info||r?.parts!==i?.parts||r.sourceSessionID!==i.sourceSessionID||r.sourceDirectory!==i.sourceDirectory))return!1}return!0},v_=(e,t)=>Array.isArray(e)&&e.some(e=>e&&typeof e==`object`&&e.type===t),y_=e=>e.startsWith(s_);function b_(e,t){if(!e?.id||y_(e.id))return!1;let n=e;return(typeof n.clientRole==`string`?n.clientRole:n.role)===`user`?!Array.isArray(t)||t.length===0||!(v_(t,`subtask`)||v_(t,`compaction`)||t.every(e=>Zp(e))):!1}function x_(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.messagesByID[n],i=e.partsByMessageID[n];if(b_(r,i))return n}return null}function S_(e){return e.messageOrder.length===0?null:e.messageOrder[e.messageOrder.length-1]??null}function C_(e){return{transport:e.transport,generation:e.generation,directory:e.directory.trim(),sessionID:e.sessionID,anchorMessageID:x_(e.transcript),lastEventID:e.lastEventID,capturedAt:e.capturedAt??Date.now(),state:`pending`,capturedHeadMessageID:null,latestHeadMessageID:S_(e.transcript),continuation:null,liveRevision:e.transcript.liveRevision}}function w_(e,t){return{...e,...t}}function T_(e,t){let n=yg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation),r=e.getQueryData(n);if(!r||typeof r!=`object`)return;let i=r;if(i.sessionID===t.sessionID&&i.transport===t.transport&&i.generation===t.generation)return i}function E_(e,t){let n=yg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);return e.setQueryData(n,t),n}function D_(e,t){let n=yg({directory:t.directory,sessionID:t.sessionID},t.transport,t.generation);e.removeQueries({queryKey:n,exact:!0})}function O_(e){return e.slim===!0}var k_=/bearer|token|authorization|password|secret|cookie/i,A_=new Set([`message.part.delta`]);function j_(e){return typeof e==`string`&&e.includes(`-`)}var M_=`openchamber.client-diagnostics.enabled`;function N_(e){return e===`true`||e!==`false`&&null}function P_(e){return e.preference===!0||e.preference!==!1&&j_(e.version)}function F_(e=Date.now()){return`openchamber-diagnostics-${new Date(e).toISOString().replace(/[:.]/g,`-`)}.json`}function I_(e){try{let t=JSON.parse(e);return typeof t.eventCount==`number`&&Number.isFinite(t.eventCount)?t.eventCount:0}catch{return 0}}function L_(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`&&Number.isFinite(t)&&t>=100&&t<=599)return t}let t=(e instanceof Error?e.message:typeof e==`string`?e:``).match(/\((\d{3})\)/);if(!t)return;let n=Number(t[1]);return n>=100&&n<=599?n:void 0}function R_(e){if(e==null)return;let t=(e instanceof Error?e.message:String(e)).trim().slice(0,240);if(t)return k_.test(t)?`redacted-error`:t}function z_(e){let t=0,n=0;for(let r of Object.values(e))if(r)for(let e of r)O_(e)?t+=1:n+=1;return{slimPartCount:t,fullPartCount:n}}function B_(e,t=4){return e.length<=t?e.slice():e.slice(e.length-t)}function V_(e){let t=0;for(let n of e.messageOrder)tv(e.messagesByID[n])===!0&&(t+=1);return t}function H_(e){let t=e.transcript?z_(e.transcript.partsByMessageID):void 0;return{at:(e.now??Date.now)(),feat:`transcript`,kind:e.kind,sessionID:e.sessionID,...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.source?{source:e.source}:{},...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.request?{requestStatus:e.request.status}:{},...e.hydration?{hydrationPhase:e.hydration.phase,p0Satisfied:e.hydration.p0Satisfied}:{},...e.transcript?{messageCount:e.transcript.messageOrder.length,lastMessageIDs:B_(e.transcript.messageOrder),boundaryKind:e.transcript.boundary.kind,slimPartCount:t?.slimPartCount,fullPartCount:t?.fullPartCount,identityMissingCount:V_(e.transcript)}:{},...e.command?{command:e.command}:{},...e.purpose?{purpose:e.purpose}:{},...e.sseType?{sseType:e.sseType}:{},...R_(e.error??e.request?.error)?{error:R_(e.error??e.request?.error)}:{},...L_(e.error)===void 0?{}:{httpStatus:L_(e.error)}}}function U_(e={}){let t=e.limit??500,n=[];return{append(e){n.push(e),n.length>t&&n.splice(0,n.length-t)},async read(){return n.slice()},async clear(){n.length=0}}}function W_(e){return{isEnabled:e.isEnabled,record(t){e.isEnabled()&&Promise.resolve(e.sink.append(t)).catch(()=>void 0)},async exportReport(){let t=await e.sink.read(),n=[...new Set(t.map(e=>e.feat))];return JSON.stringify({schema:`openchamber.client-diagnostics.v1`,exportedAt:Date.now(),eventCount:t.length,feats:n,events:t},null,2)},clear:()=>e.sink.clear()}}function G_(e){return typeof e==`string`&&A_.has(e)}function K_(e){switch(e.type){case`http-page`:return`http-page`;case`sse-event`:return G_(e.event.type)?null:`sse-event`;case`sse-event-batch`:return e.events.every(e=>G_(e.type))?null:`sse-event`;case`reset`:return`reset`;case`materialize-snapshots`:return`durable-seed`;case`remove-message`:return`purge`;default:return null}}function q_(e){if(e.type===`http-page`)return e.purpose}function J_(e){if(e.type===`sse-event`)return e.event.type;if(e.type===`sse-event-batch`)return`sse-event-batch`}function Y_(e){switch(e.type){case`http-page`:return`network`;case`sse-event`:case`sse-event-batch`:return`sse`;case`materialize-snapshots`:return`durable-cache`;default:return}}function X_(e){return e.__openchamberOptimistic===!0}function Z_(e){let t=[];for(let n of e){if(n.type!==`text`)continue;let e=typeof n.text==`string`?n.text.trim():``;e&&t.push(e)}let n=t.join(`
|
|
461
|
+
`).trim();if(n)return k_.test(n)?`redacted-text`:n.length<=400?n:`${n.slice(0,400)}…`}function Q_(e){if(!e)return;let t=e.clientRole??e.role;if(t===`user`||t===`assistant`||t===`system`)return t}function $_(e){let t=e?.time?.completed;return typeof t==`number`&&t>0}var ev=e=>typeof e==`string`&&e.trim().length>0;function tv(e){if(!e||Q_(e)!==`assistant`)return;let t=e,n=!ev(t.mode)&&!ev(t.agent),r=!ev(t.modelID)||!ev(t.providerID);return n||r}function nv(e){return{partCount:e.partCount,slimCount:e.slimCount,fullCount:e.fullCount,optimistic:e.optimistic}}function rv(e){let t=e.messageOrder.map(t=>{let n=e.partsByMessageID[t]??[],r=0,i=0,a=!1;for(let e of n)O_(e)?r+=1:i+=1,X_(e)&&(a=!0);let o=e.messagesByID[t],s=Q_(o),c=tv(o),l=s===`user`?Z_(n):void 0;return{id:t,partCount:n.length,slimCount:r,fullCount:i,optimistic:a,completed:$_(o),...s?{role:s}:{},...l?{text:l}:{},...c===void 0?{}:{identityMissing:c}}});return{messageIDs:e.messageOrder.slice(),messages:t,boundaryKind:e.boundary.kind,liveRevision:e.liveRevision}}function iv(e,t){let n=new Map(e.messages.map(e=>[e.id,e])),r=new Map(t.messages.map(e=>[e.id,e])),i=new Set(e.messageIDs),a=new Set(t.messageIDs),o=t.messageIDs.filter(e=>!i.has(e)),s=e.messageIDs.filter(e=>!a.has(e)),c=[],l=[],u=[],d=[];for(let t of e.messageIDs){let e=n.get(t);if(!e)continue;let i=r.get(t);if(!i){e.optimistic&&u.push(t);continue}(e.partCount!==i.partCount||e.slimCount!==i.slimCount||e.fullCount!==i.fullCount||e.optimistic!==i.optimistic)&&c.push({id:t,before:nv(e),after:nv(i)}),e.fullCount>0&&i.fullCount===0&&i.slimCount>0&&l.push(t),e.optimistic&&!i.optimistic&&!i.completed&&u.push(t),e.identityMissing!==!0&&i.identityMissing===!0&&d.push(t)}return{addedMessageIDs:o,removedMessageIDs:s,partsChanged:c,downgraded:l,optimisticLost:u,identityLost:d}}function av(e){return{at:(e.now??Date.now)(),feat:`transcript`,kind:`transcript-diff`,sessionID:e.sessionID,trigger:e.trigger,before:e.before,after:e.after,diff:iv(e.before,e.after),...e.directory?{directory:e.directory}:{},...e.transport?{transport:e.transport}:{},...e.generation===void 0?{}:{generation:e.generation},...e.purpose?{purpose:e.purpose}:{}}}function ov(e){if(!e||typeof e.type!=`string`)return`missing`;let t=e.type.trim();return t.length>0?t:`missing`}function sv(e){return e.opened?`opened`:e.navigateCapability?e.directoryPresent?e.childSessionPresent?`navigate-rejected`:`queued`:`missing-directory`:`capability-off`}function cv(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function lv(e){let t=cv(e.partID),n=cv(e.messageID),r=cv(e.directory),i=cv(e.childSessionID),a=cv(e.toolStatus),o=cv(e.surfaceKind);return{directoryPresent:e.directoryPresent,childSessionPresent:e.childSessionPresent,finalized:e.finalized,backgroundRunning:e.backgroundRunning,effectiveActive:e.effectiveActive,suppressLoading:e.suppressLoading,delegating:e.delegating,childStatus:e.childStatus,parentStatus:e.parentStatus,idleConfirmed:e.idleConfirmed,navigateCapability:e.navigateCapability,...t?{partID:t}:{},...n?{messageID:n}:{},...r?{directory:r}:{},...i?{childSessionID:i}:{},...a?{toolStatus:a}:{},...o?{surfaceKind:o}:{},...e.taskStartedAt===void 0?{}:{taskStartedAt:e.taskStartedAt},...e.statusObservedAt===void 0?{}:{statusObservedAt:e.statusObservedAt},...e.statusSnapshotAt===void 0?{}:{statusSnapshotAt:e.statusSnapshotAt}}}function uv(e){return[e.sessionID,cv(e.partID)??``,e.childSessionPresent?`1`:`0`,cv(e.childSessionID)??``,cv(e.toolStatus)??``,e.finalized?`1`:`0`,e.backgroundRunning?`1`:`0`,e.effectiveActive?`1`:`0`,e.suppressLoading?`1`:`0`,e.delegating?`1`:`0`,e.childStatus,e.parentStatus,e.idleConfirmed?`1`:`0`,e.navigateCapability?`1`:`0`,e.directoryPresent?`1`:`0`,cv(e.surfaceKind)??``,String(e.taskStartedAt??``),String(e.statusObservedAt??``),String(e.statusSnapshotAt??``)].join(`\0`)}function dv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-row`,sessionID:e.sessionID,...lv(e)}}function fv(e){return{at:(e.now??Date.now)(),feat:`task`,kind:`task-click`,sessionID:e.sessionID,clickSource:e.clickSource,clickOutcome:sv(e),...lv(e)}}var pv=`openchamber-transcript-diagnostics`,mv=`events`,hv=1,gv=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))}),_v=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(Error(`IndexedDB unavailable`));return}let r=indexedDB.open(e,hv);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(mv)||e.createObjectStore(mv,{autoIncrement:!0})},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`IndexedDB open failed`))}),vv=(e=pv)=>({async append(t,n){let r=await _v(e);try{let e=r.transaction(mv,`readwrite`).objectStore(mv);await gv(e.add(t));let i=await gv(e.getAllKeys()),a=i.length-n;if(a>0)for(let t of i.slice(0,a))await gv(e.delete(t))}finally{r.close()}},async read(){let t=await _v(e);try{return await gv(t.transaction(mv,`readonly`).objectStore(mv).getAll())}finally{t.close()}},async clear(){let t=await _v(e);try{await gv(t.transaction(mv,`readwrite`).objectStore(mv).clear())}finally{t.close()}}});function yv(e={}){let t=e.driver??vv(e.databaseName),n=e.limit??500;return{append:e=>t.append(e,n),read:()=>t.read(),clear:()=>t.clear()}}var bv=Qe(`OpenChamberMedia`);function xv(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n)}function Sv(){return Ge()&&$e!==void 0&&$e.isPluginAvailable(`OpenChamberMedia`)}function Cv(){return`1.18.2-beta.32`}function wv(){if(typeof localStorage>`u`)return null;try{return N_(localStorage.getItem(M_))}catch{return null}}function Tv(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(M_,e?`true`:`false`)}catch{}}function Ev(e={}){return(e.hasIndexedDB??(()=>globalThis.indexedDB!==void 0))()?`indexeddb`:`memory`}var Dv;function Ov(e=Cv()){return P_({version:e,preference:wv()})}function kv(e={}){return W_({sink:Ev()===`indexeddb`?(e.createIndexedDBSink??yv)():(e.createMemorySink??U_)(),isEnabled:e.isEnabled??Ov})}function Av(){return Dv??=kv(),Dv}function jv(e){Av().record(e)}function Mv(e){try{return Ov()?rv(e()):void 0}catch{return}}function Nv(e){try{jv(av(e))}catch{}}function Pv(e){try{jv(dv(e))}catch{}}function Fv(e){try{jv(fv(e))}catch{}}function Iv(e){let t=K_(e.command);t&&(e.changed!==!1||e.command.type!==`sse-event`&&e.command.type!==`sse-event-batch`)&&jv(H_({kind:t,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,transcript:e.transcript,request:e.request,hydration:e.hydration,command:e.command.type,purpose:q_(e.command),sseType:J_(e.command),source:Y_(e.command),error:e.error}))}async function Lv(){let e=await Av().exportReport(),t=Te()?.diagnostics?.downloadLogs;if(!t)return e;try{let e=await t();if(typeof e?.content==`string`&&e.content.trim())return e.content}catch{}return e}async function Rv(e,t=F_()){if(Sv())return(await bv.saveFile({dataBase64:xv(e),mimeType:`application/json`,filename:t}))?.cancelled?`cancelled`:`saved`;if(typeof document>`u`)return`failed`;let n=new Blob([e],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);return i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),`downloaded`}async function zv(){let e=await Lv(),t=F_();return{content:e,fileName:t,outcome:await Rv(e,t),eventCount:I_(e)}}function Bv(e){let t=e.directory.trim(),n=new Set,r=[],i=e=>{!e||n.has(e)||(n.add(e),r.push({directory:t,sessionID:e}))};for(let n of e.viewedSessions??[])n.directory.trim()===t&&i(n.sessionID);e.viewed?.directory.trim()===t&&i(e.viewed.sessionID);for(let t of e.busyOrRetrySessionIDs??[])i(t);for(let n of e.activeScopes)n.directory.trim()===t&&i(n.sessionID);return r}var Vv=2,Hv=6e4;function Uv(e,t){return{transport:t?.transport??e.transport??(e.probe?.getTransport??r)(),generation:t?.generation??e.generation??(e.probe?.getGeneration??s)()}}function Wv(e,t){let n=(t.probe?.getTransport??r)(),i=(t.probe?.getGeneration??s)();if(n!==e.transport||i!==e.generation)throw new Lh}function Gv(e,t){return{directory:e.directory.trim(),sessionID:e.sessionID,transport:t.transport,generation:t.generation}}function Kv(e,t){return mg({transport:t.transport,generation:t.generation,directory:e.directory.trim(),sessionID:e.sessionID})}function qv(e,t){return`${e.trim()}\n${t}`}function Jv(e){let t=e.client,n=e.repository,i=e.cacheBudget??n.getCacheBudget?.()??Eg({client:t,activeRegistry:xg()}),a=Math.max(1,Math.floor(e.directoryConcurrency??Vv)),o=e.fetchReconcile??Wg,c=e.now??Date.now,l=!1,u=0,d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_=new Set,v=(e,t)=>{h.add(qv(e,t))},y=(e,t)=>{h.delete(qv(e,t))},b=e=>{let t=f.get(e);t&&(t.abort(),f.delete(e)),d.delete(e)},x=e=>{u+=1;for(let e of[...f.keys()])b(e);p.clear(),m.clear()},S=(e,t)=>{let n=t===void 0?void 0:t.trim(),r=new Map;for(let t of i.listCanonical({transport:e.transport,generation:e.generation,directory:n}))t.active&&(n===void 0||t.scope.directory===n)&&r.set(qv(t.scope.directory,t.scope.sessionID),{directory:t.scope.directory,sessionID:t.scope.sessionID});for(let t of i.activeRegistry.listRetained())t.transport===e.transport&&t.generation===e.generation&&(n===void 0||t.directory===n)&&r.set(qv(t.directory,t.sessionID),{directory:t.directory,sessionID:t.sessionID});return Array.from(r.values())},C=(t,n)=>{let r=new Set(e.listDirectories().map(e=>e.trim()).filter(Boolean));for(let e of i.listCanonical({transport:t.transport,generation:t.generation}))r.add(e.scope.directory);for(let e of i.activeRegistry.listRetained())e.transport===t.transport&&e.generation===t.generation&&r.add(e.directory);for(let e of n)e.directory&&r.add(e.directory.trim());return r},w=()=>{if(e.getViewedSessions){let t=new Set,n=[];for(let r of e.getViewedSessions()){let e=r.directory.trim(),i=r.sessionID;if(!e||!i)continue;let a=qv(e,i);t.has(a)||(t.add(a),n.push({directory:e,sessionID:i}))}return n}let t=e.getViewedSession();return t?.sessionID?[{directory:t.directory.trim(),sessionID:t.sessionID}]:[]},T=r=>{if(l)return;let a={transport:r.transport??Uv(e).transport,generation:r.generation??Uv(e).generation},o=c(),s=w(),u=C(a,s),d=i.listCanonical({transport:a.transport,generation:a.generation}),f=new Map;for(let e of d)f.set(qv(e.scope.directory,e.scope.sessionID),{directory:e.scope.directory,sessionID:e.scope.sessionID});for(let e of i.activeRegistry.listRetained())e.transport===a.transport&&e.generation===a.generation&&f.set(qv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let e of s)f.set(qv(e.directory,e.sessionID),{directory:e.directory,sessionID:e.sessionID});for(let t of u)for(let n of e.getBusyOrRetrySessionIDs(t))f.set(qv(t,n),{directory:t,sessionID:n});for(let e of f.values()){let i=Gv(e,a),s=n.getTranscript(i),c=C_({transport:a.transport,generation:a.generation,directory:e.directory,sessionID:e.sessionID,transcript:s,lastEventID:r.lastEventID,capturedAt:o});E_(t,c)}let p=new Set;for(let t of u){let n=Bv({directory:t,activeScopes:S(a,t),viewedSessions:s,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(t)});for(let e of n)p.add(qv(e.directory,e.sessionID))}for(let e of d){let t=qv(e.scope.directory,e.scope.sessionID);!p.has(t)&&!e.active&&v(e.scope.directory,e.scope.sessionID)}},E=(e,t,r)=>{let i=Mv(()=>n.getTranscript(e)),a=n.getTranscript(e).liveRevision,o=n.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:t.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:r,liveRevision:a});try{let t=Mv(()=>n.getTranscript(e));i&&t&&Nv({trigger:`reconnect-compensation-reconcile`,sessionID:e.sessionID,directory:e.directory,transport:e.transport,generation:e.generation,before:i,after:t})}catch{}return o},D=async(r,i,a)=>{if(Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;E_(t,w_(T_(t,i)??C_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`,continuation:null}));let o=Mv(()=>n.getTranscript(r));try{if(await n.destructiveReset(r),Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;D_(t,i),y(i.directory,i.sessionID);try{let e=Mv(()=>n.getTranscript(r));o&&e&&Nv({trigger:`reconnect-compensation-reset`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw E_(t,w_(T_(t,i)??C_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reset-required`})),e}},O=async(r,i,a)=>{if(Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;E_(t,w_(T_(t,i)??C_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`reconciling`,continuation:null}));let o=Mv(()=>n.getTranscript(r));try{if(await n.ensureInitial(r),Wv({transport:i.transport,generation:i.generation},e),a!==u)throw new Lh;D_(t,i),y(i.directory,i.sessionID);try{let e=Mv(()=>n.getTranscript(r));o&&e&&Nv({trigger:`reconnect-compensation-ensure-tail`,sessionID:r.sessionID,directory:r.directory,transport:i.transport,generation:i.generation,before:o,after:e})}catch{}}catch(e){throw E_(t,w_(T_(t,i)??C_({transport:i.transport,generation:i.generation,directory:i.directory,sessionID:i.sessionID,transcript:n.getTranscript(r),lastEventID:null}),{state:`pending`})),e}},k=async(r,i,a,s)=>{let l=Gv(r,i),d=Kv(r,i),f=vg({directory:d.directory,sessionID:d.sessionID,checkpoint:String(T_(t,d)?.capturedAt??c())},d.transport,d.generation);t.setQueryData(f,{status:`running`,startedAt:c()});try{if(Wv(i,e),a!==u||s.aborted)throw new Lh;let p=T_(t,d);if(p||(p=C_({transport:i.transport,generation:i.generation,directory:r.directory,sessionID:r.sessionID,transcript:n.getTranscript(l),lastEventID:null,capturedAt:c()}),E_(t,p)),!p.anchorMessageID){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}p=w_(p,{state:`reconciling`}),E_(t,p);let m=p.anchorMessageID,h=0;for(;h<32;){if(h+=1,Wv(i,e),a!==u||s.aborted)throw new Lh;let g=null,_=null,v=null,b=0;for(;;){if(b+=1,Wv(i,e),a!==u||s.aborted)throw new Lh;let h=n.getTranscript(l).liveRevision;if(!g&&!m){await O(l,d,a),t.setQueryData(f,{status:`ensure`,finishedAt:c()});return}let y=await o({sessionID:r.sessionID,directory:r.directory.trim(),...g?{continuation:g}:{anchor:m},signal:s});if(Wv(i,e),a!==u||s.aborted)throw new Lh;if(y.resetRequired){await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()});return}if(b===1&&(_=y.capturedHeadMessageID),v=y.latestHeadMessageID??v,y.records.length>0&&E(l,y,h),p=w_(T_(t,d)??p,{state:`reconciling`,capturedHeadMessageID:_,latestHeadMessageID:v,continuation:y.continuation}),E_(t,p),y.complete||!y.continuation)break;g=y.continuation}let x=_,S=v;if(x&&S&&S!==x){m=x,p=w_(T_(t,d)??p,{state:`reconciling`,anchorMessageID:x,continuation:null,capturedHeadMessageID:null}),E_(t,p);continue}p=w_(T_(t,d)??p,{state:`complete`,continuation:null,capturedHeadMessageID:x,latestHeadMessageID:S}),E_(t,p),y(r.directory,r.sessionID),t.setQueryData(f,{status:`complete`,finishedAt:c()});return}await D(l,d,a),t.setQueryData(f,{status:`reset`,finishedAt:c()})}catch(n){if(n instanceof Lh||n instanceof Error&&n.name===`AbortError`){t.setQueryData(f,{status:`cancelled`,finishedAt:c()});return}throw e.onError?.(n,{directory:r.directory,sessionID:r.sessionID,phase:`reconcile`}),t.setQueryData(f,{status:`error`,finishedAt:c(),code:n instanceof Error?n.name:`error`}),n}},A=t=>{let n=t.trim(),r=m.get(n)??0;if(r>=a)return;let i=p.get(n);if(!i||i.length===0)return;let o=i.shift();m.set(n,r+1);let s=qv(o.directory,o.sessionID);if(d.has(s)){m.set(n,(m.get(n)??1)-1),A(n);return}let c=Uv(e),l=u,h=new AbortController;f.set(s,h);let g=(async()=>{try{await k(o,c,l,h.signal)}catch{}finally{f.delete(s),d.delete(s),m.set(n,Math.max(0,(m.get(n)??1)-1)),A(n)}})();d.set(s,g)},j=e=>{let t=e.directory.trim(),n=qv(t,e.sessionID);if(d.has(n))return;let r=p.get(t);r||(r=[],p.set(t,r)),!r.some(t=>t.sessionID===e.sessionID)&&(r.push({directory:t,sessionID:e.sessionID}),A(t))},ee=t=>{let n=w(),r=C(t,n);for(let a of r){let r=Bv({directory:a,activeScopes:S(t,a),viewedSessions:n,busyOrRetrySessionIDs:e.getBusyOrRetrySessionIDs(a)});for(let e of r)j(e);for(let e of i.listCanonical({transport:t.transport,generation:t.generation,directory:a})){let t=qv(e.scope.directory,e.scope.sessionID);r.some(e=>qv(e.directory,e.sessionID)===t)||v(e.scope.directory,e.scope.sessionID)}}},te=t=>{if(l||!t.isReconnect)return;let n={transport:(e.probe?.getTransport??r)(),generation:t.runtimeGeneration},i=(e.probe?.getGeneration??s)(),a=(e.probe?.getTransport??r)();if(i!==n.generation||a!==n.transport){x(`generation_mismatch`);return}ee(n)},M=t=>{if(l)return;let r=t.directory.trim(),i=Uv(e,t),a=Gv({directory:r,sessionID:t.sessionID},i),s=hg(Kv({directory:r,sessionID:t.sessionID},i)),u=g.get(s);if(u&&c()-u.checkedAt<Hv||_.has(s)||d.has(qv(r,t.sessionID))||!n.hasSession?.(a))return;let f=n.getTranscript(a),p=f.messageOrder[f.messageOrder.length-1];p&&(_.add(s),(async()=>{try{if(Wv(i,e),l)return;let u=await o({sessionID:t.sessionID,directory:r,anchor:p});if(Wv(i,e),l||(g.set(s,{checkedAt:c()}),u.resetRequired)||u.complete&&u.records.length===0||u.records.length===0)return;let d=n.getTranscript(a).liveRevision;E(a,u,d)}catch{}finally{_.delete(s)}})())};return{captureCheckpoints:T,onCompensation:te,ensureOnObserve:async r=>{if(l)return null;let i=r.directory.trim(),a=qv(i,r.sessionID);if(!h.has(a))return M(r),null;y(i,r.sessionID);let o=Uv(e,r),s=Gv({directory:i,sessionID:r.sessionID},o),c=Kv({directory:i,sessionID:r.sessionID},o),u=T_(t,c);if(u&&u.state!==`complete`&&u.anchorMessageID){j({directory:i,sessionID:r.sessionID});let e=d.get(a);return e&&await e,n.getTranscript(s)}try{Wv(o,e);let r=await n.ensureInitial(s);return D_(t,c),r}catch(t){throw e.onError?.(t,{directory:i,sessionID:r.sessionID,phase:`ensure-on-observe`}),t}},cancelAll:x,getCheckpoint:n=>{let r=Uv(e,n);return T_(t,Kv({directory:n.directory,sessionID:n.sessionID},r))},isSessionInFlight:(e,t)=>d.has(qv(e,t)),destroy:()=>{l=!0,x(`destroy`)}}}function Yv(e){return{transport:e.transport,generation:e.generation,directory:e.directory,sessionID:e.sessionID}}function Xv(e){return{records:e.records.map(e=>({info:e.info,parts:e.parts??[]})),cursor:typeof e.cursor==`string`?e.cursor:void 0,complete:e.complete,turnCount:e.turnCount,requestedTurnLimit:e.requestedTurnLimit}}function Zv(e){if(e.type===`message.part.delta`)return{action:`skip`};let t=e.properties;if(e.type===`message.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`remove`,messageID:e}:{action:`skip`}}if(e.type===`message.updated`){let e=t?.info;return typeof e?.id==`string`&&e.id.length>0?{action:`persist`,messageID:e.id}:{action:`skip`}}if(e.type===`message.part.updated`){let e=t?.part;return typeof e?.messageID==`string`&&e.messageID.length>0?{action:`persist`,messageID:e.messageID}:{action:`skip`}}if(e.type===`message.part.removed`){let e=t?.messageID;return typeof e==`string`&&e.length>0?{action:`persist`,messageID:e}:{action:`skip`}}return{action:`skip`}}function Qv(e,t={}){let n=new Map,r=new Map,i=e=>Promise.all([n.get(tc(e))??Promise.resolve(),r.get(rc(e))??Promise.resolve()]).then(()=>void 0),a=(e,t)=>{let r=tc(e),a=i(e).then(t,t);return n.set(r,a.then(()=>void 0,()=>void 0)),a},o=(e,t)=>{let n=rc(e),i=(r.get(n)??Promise.resolve()).then(t,t);return r.set(n,i.then(()=>void 0,()=>void 0)),i};return{wait:i,persistSettled:(n,r,i)=>a(n,async()=>{if((await e.upsertSettled(n,r,i)).status!==`written`)return;let a=(t.getByteBudget??fg)();await e.evictToBytes(a,{protect:t.getProtectScopes?.()??[]})}),removeMessage:(t,n)=>a(t,()=>e.removeMessage(t,n)),clearSession:t=>a(t,()=>e.clearSession(t)),clearGeneration:t=>o(t,()=>e.clearGeneration(t))}}var $v=new Map;function ey(e,t){let n=$v.get(e);if(n)return n;let r=t().finally(()=>{$v.get(e)===r&&$v.delete(e)});return $v.set(e,r),r}var ty=e=>`message\n${e.runtimeKey}\n${e.directory}\n${e.sessionID}\n${e.messageID}`;function ny(e){return ey(ty(e),e.request)}function ry(e,t){return`${e}\n${t}`}var iy=new Map;function ay(e){return iy.get(e)}async function oy(e){return ny({runtimeKey:ry(e.transport,e.generation),directory:e.directory,sessionID:e.sessionID,messageID:e.messageID,request:async()=>{let t=await e.request();if(t.error)throw Error(`session.message failed`);let n=t.data,r=n?.info,i=n?.parts??t.parts??[];if(!r?.id)throw Error(`session.message failed: empty response`);return iy.set(r.id,i),{info:lp(r),parts:i}}})}function sy(e,t){let n=e.info;return n.role===t||n.clientRole===t}function cy(e){let t=new Set(e.map(e=>e.info.id)),n=[],r=new Set;for(let i of e){if(!sy(i,`assistant`))continue;let e=i.info.parentID;if(!(!e||t.has(e)||r.has(e))&&(r.add(e),n.push(e),n.length===8))break}return n}async function ly(e){if(e.complete){let t=e.records.some(e=>sy(e,`user`));return{records:e.records,boundaryFound:t,partial:!1}}let t=cy(e.records);if(t.length===0){let t=e.records.some(e=>sy(e,`user`));return{records:e.records,boundaryFound:t,partial:!t}}let n=await Promise.all(t.map(async t=>{try{return await e.requestMessage(t)}catch{return null}})),r=new Map;for(let t of e.records)r.set(t.info.id,t);for(let e of n)e?.info?.id&&r.set(e.info.id,e);let i=[...r.values()].sort((e,t)=>e.info.id.localeCompare(t.info.id)),a=i.some(e=>sy(e,`user`));return{records:i,boundaryFound:a,partial:!a}}function uy(e){return e.trim()}function dy(e,t){let n=e.transport??t.transport??(t.probe?.getTransport??r)(),i=e.generation??t.generation??(t.probe?.getGeneration??s)();return{directory:uy(e.directory),sessionID:e.sessionID,transport:n,generation:i}}function K(e){return`${e.transport}\n${e.generation}\n${e.directory}\n${e.sessionID}`}function fy(e){return{sessionID:e,messageOrder:[],messagesByID:{},partsByMessageID:{},boundary:rl,liveRevision:0}}function py(e,t){if(!e||e.pages.length===0)return fy(t);let n=Ih(e,t);return{sessionID:t,messageOrder:n.messageOrder,messagesByID:n.messagesByID,partsByMessageID:n.partsByMessageID,boundary:n.boundary,liveRevision:n.liveRevision}}function my(e){let t=e?.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:void 0}function hy(e){return!!e?.some(e=>e.__openchamberOptimistic===!0)}function gy(e,t){if(t.records.length===0)return[];let n;for(let e of t.records){let t=my(e.info);t!==void 0&&(n===void 0||t<n)&&(n=t)}if(n===void 0)return[];let r=new Set(t.records.map(e=>e.info.id)),i=[];for(let t of e.messageOrder){if(r.has(t))continue;let a=my(e.messagesByID[t]);a===void 0||a<=n||hy(e.partsByMessageID[t])||i.push(t)}return i}function _y(e={}){let t=e.client??L,n=e.cacheBudget??Eg({client:t,activeRegistry:e.activeRegistry??xg()}),i=n.activeRegistry,a=new Map,o=new Map,c=new Map,l=new Map,u=new Map,d=e.durableStore?Qv(e.durableStore,{getProtectScopes:()=>i.listRetained().map(Yv),getByteBudget:e.getDurableByteBudget}):void 0,f=new Map,p=new Map,m=new Map,h=new Map,g=new Map,_=new Set,v=new Map,y=new Set,b=new Set,x=(e,t)=>{let n=K(t);if(y.has(n))return;let r=py(w(e),t.sessionID);!Sl(r)&&!v.has(n)||(y.add(n),jv(H_({kind:`hydration`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,transcript:r,hydration:{sessionID:t.sessionID,p0Satisfied:!0,phase:`p0`}})))},S=0,C=e=>{let t=u.get(e);return t||(t={messages:new Map,parts:new Map},u.set(e,t)),t},w=n=>{let r=dy(n,e);return ag({directory:r.directory,sessionID:r.sessionID},t,r.transport,r.generation)},T=t=>{let n=dy(t,e);return qh({directory:n.directory,sessionID:n.sessionID},n.transport,n.generation)},E=t=>{let n=dy(t,e);return{transport:n.transport,generation:n.generation,directory:n.directory,sessionID:n.sessionID}},D=e=>{let t=E(e);n.enforce({transport:t.transport,generation:t.generation,directory:t.directory,preserve:[t]})},O=n=>{let i=e.probe??{getTransport:r,getGeneration:s},o=dy(n,{...e,transport:void 0,generation:void 0,probe:i}),c=K(o),l=a.get(c);if(l)return l;if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let u=rg({directory:o.directory,sessionID:o.sessionID,fetcher:e.fetcher,transport:o.transport,generation:o.generation,probe:i,client:t,initialLimit:e.initialLimit,historyLimit:e.historyLimit});return a.set(c,u),u},k=t=>{let n=K(dy(t,e));u.delete(n);let r=o.get(n);if(!(!r||r.size===0))for(let e of r)e(t)},A=n=>{let r=K(dy(n,e));if(c.has(r))return;let i=T(n),a=t.getQueryCache().subscribe(e=>{if(e.type!==`updated`&&e.type!==`removed`)return;let t=e.query.queryKey;t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&k(n)});c.set(r,a)},j=e=>{let t=o.get(e);if(t&&t.size>0)return;let n=c.get(e);n&&(n(),c.delete(e)),o.delete(e)},ee=(e,t)=>{let n=C(e),r=n.transcript;if(r&&r.sessionID===t.sessionID&&r.liveRevision===t.liveRevision&&r.boundary===t.boundary&&r.messageOrder===t.messageOrder&&r.messagesByID===t.messagesByID&&r.partsByMessageID===t.partsByMessageID)return r;if(r&&r.messageOrder.length===t.messageOrder.length&&r.messageOrder.every((e,n)=>e===t.messageOrder[n])&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns&&(r.boundary.kind!==`has-more`||t.boundary.kind!==`has-more`||r.boundary.cursor===t.boundary.cursor)&&r.liveRevision===t.liveRevision){let e=!0,i=!0,a={...r.messagesByID},o={...r.partsByMessageID};for(let n of t.messageOrder)r.messagesByID[n]!==t.messagesByID[n]&&(e=!1,a[n]=t.messagesByID[n]),r.partsByMessageID[n]!==t.partsByMessageID[n]&&(i=!1,t.partsByMessageID[n]?o[n]=t.partsByMessageID[n]:delete o[n]);if(e&&i)return n.transcript=r,r;let s={sessionID:t.sessionID,messageOrder:r.messageOrder,messagesByID:e?r.messagesByID:a,partsByMessageID:i?r.partsByMessageID:o,boundary:r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r.boundary:t.boundary,liveRevision:t.liveRevision};return n.transcript=s,s}return n.transcript=t,t},te=(e,t)=>{let n=C(e),r=n.pagination;return r&&r.sessionID===t.sessionID&&r.hasPreviousPage===t.hasPreviousPage&&r.isComplete===t.isComplete&&r.cursor===t.cursor&&r.loadedTurns===t.loadedTurns&&r.boundary.kind===t.boundary.kind&&r.boundary.loadedTurns===t.boundary.loadedTurns?r:(n.pagination=t,t)},M=(e,t)=>`${K(e)}\n${t}`,ne=(e,t)=>{let n=K(e),r=g.get(n);r&&(r.delete(t),r.size===0&&g.delete(n))},re=e=>{for(let t of g.keys())(t===e||t.startsWith(e))&&g.delete(t)},ie=e=>{for(let t of m.keys())t.startsWith(e)&&m.delete(t);for(let t of h.keys())t.startsWith(e)&&h.delete(t)},ae=e=>{for(let t of v.keys())(t===e||t.startsWith(e))&&v.delete(t);for(let t of[...y])(t===e||t.startsWith(e))&&y.delete(t);for(let t of b)(t===e||t.startsWith(e))&&b.delete(t)},oe=e=>{let t=`${K(e)}\n`;for(let[e,n]of m)if(e.startsWith(t)&&n.status===`loading`)return!0;for(let e of h.keys())if(e.startsWith(t))return!0;return!1},se=t=>{let n=dy({directory:t.directory,sessionID:t.sessionID},e);return n.transport===t.transport&&n.generation===t.generation},ce=(e,t,n)=>{d&&d.persistSettled(Yv(e),t,n??[])},le=(e,t,n,r)=>{if(!d||S>0||!r.applied||!r.changed)return;let i=Yv(t);if(n.type===`remove-message`){d.removeMessage(i,n.messageID);return}if(n.type===`reset`){if(d.clearSession(i),n.page){let r=py(w(e),t.sessionID);for(let e of n.page.records){let n=r.messagesByID[e.info.id]??e.info;ce(t,n,r.partsByMessageID[e.info.id]??e.parts)}}return}if(n.type!==`optimistic-add`&&n.type!==`optimistic-confirm`&&n.type!==`optimistic-remove`){if(n.type===`sse-event`||n.type===`sse-event-batch`){let r=n.type===`sse-event`?[n.event]:n.events,a=py(w(e),t.sessionID);for(let e of r){let n=Zv(e);if(n.action===`remove`){d.removeMessage(i,n.messageID);continue}if(n.action===`skip`)continue;let r=a.messagesByID[n.messageID];r&&ce(t,r,a.partsByMessageID[n.messageID])}return}if(n.type===`http-page`||n.type===`materialize-snapshots`){let r=py(w(e),t.sessionID),i=n.type===`http-page`?n.page.records:n.records;for(let e of i){let n=r.messagesByID[e.info.id];n&&ce(t,n,r.partsByMessageID[e.info.id])}}}},ue=async(n,i)=>{if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for HTTP loads`);let a=async t=>{let n=await e.fetcher({directory:t.directory,sessionID:t.sessionID,limit:t.limit,before:t.before,signal:t.signal});return{records:n.records.map(e=>({info:e.info,parts:e.parts})),cursor:n.cursor,complete:n.complete,turnCount:n.turnCount,requestedTurnLimit:n.requestedTurnLimit}},o=e.probe??{getTransport:r,getGeneration:s},c={directory:n.directory,sessionID:n.sessionID,limit:e.initialLimit??Ym()};return Xv(i?.fresh?await t.fetchQuery({...Zh(c,a,n.transport,o,n.generation),staleTime:0}):await Qh(c,a,t,n.transport,o,n.generation))},N=(e,t)=>{for(let n of t)cu(`${e.directory}\n${e.sessionID}\n${n}`,()=>P.materializeMessage(e,n),{priority:`background`}).catch(()=>void 0)},de=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now();f.set(r,{status:`loading`});try{let i=await ue(t);if(!se(t))return f.delete(r),P.getTranscript(e);P.apply(e,{type:`http-page`,purpose:`initial`,page:i}),Lm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation});let a=g.get(r);if(a&&a.size>0){let n=[],r=0;for(let o of i.records){let i=o.info.id;if(!(!i||!a.has(i))){if(!gl(P.getParts(e,i),P.getMessage(e,i)??o.info)){ne(t,i),m.set(M(t,i),{status:`ready`}),r+=1;continue}n.push(i)}}r>0&&k(e),N(e,n)}return f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e)}catch(n){if(n instanceof Lh||!se(t))return f.delete(r),P.getTranscript(e);throw f.set(r,{status:`error`,error:n instanceof Error?n.message:String(n)}),jv(H_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`initial`,durationMs:Date.now()-i,transcript:py(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),n}finally{p.delete(r)}})();return p.set(r,a),a},fe=(e,t)=>{let r=K(t),i=p.get(r);if(i)return i;let a=(async()=>{let i=Date.now(),a=P.getTranscript(e).liveRevision;f.set(r,{status:`loading`});try{let i=await ue(t,{fresh:!0});if(!se(t))return f.delete(r),P.getTranscript(e);let o=P.getTranscript(e).liveRevision;return o<a||eu(t.sessionID,t.directory)?(f.delete(r),P.getTranscript(e)):(P.apply(e,{type:`http-page`,purpose:`reconcile-page`,page:{records:i.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:o}),Lm(t.directory,t.sessionID,{transport:t.transport,generation:t.generation}),f.delete(r),n.noteScopeObserved(E(e)),D(e),P.getTranscript(e))}catch(n){return f.delete(r),n instanceof Lh||!se(t)||jv(H_({kind:`request-error`,sessionID:t.sessionID,directory:t.directory,transport:t.transport,generation:t.generation,source:`network`,purpose:`reconcile-page`,durationMs:Date.now()-i,transcript:py(w(e),t.sessionID),request:P.getRequestState?.(e),hydration:P.getHydrationState?.(e),error:n})),P.getTranscript(e)}finally{p.delete(r)}})();return p.set(r,a),a},pe=t=>{let n=w(t);return!n||n.pages.length===0||_.has(K(dy(t,e)))?!0:oh(n).kind===`unknown`},P={getTranscript(t){let n=dy(t,e),r=K(n),i=py(w(t),n.sessionID);return ee(r,i)},getPagination(t){let n=dy(t,e),r=K(n),i=P.getTranscript(t);return te(r,El(n.sessionID,i.boundary))},getRequestState(t){let n=dy(t,e),r=f.get(K(n));if(r?.status===`loading`)return{sessionID:n.sessionID,status:`loading`};if(r?.status===`error`)return{sessionID:n.sessionID,status:`error`,error:r.error};let i=a.get(K(n));if(!i){let e=w(t);return e&&e.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}}let o=i.observer.getCurrentResult();return o.isLoading||o.isFetching?{sessionID:n.sessionID,status:`loading`}:o.isError&&o.error?{sessionID:n.sessionID,status:`error`,error:o.error instanceof Error?o.error.message:String(o.error)}:o.data&&o.data.pages.length>0?{sessionID:n.sessionID,status:`ready`}:{sessionID:n.sessionID,status:`idle`}},getHydrationState(t){let n=dy(t,e),r=K(n),i=P.getTranscript(t);Sl(i)&&v.set(r,!0);let a=v.has(r);return{sessionID:n.sessionID,p0Satisfied:a,phase:Cl({p0Satisfied:a,prependActive:b.has(r),materializeActive:oe(n),earlierHistoryLoaded:yl(i)>1})}},hasSession(e){return w(e)!==void 0},getMessage(t,n){let r=K(dy(t,e)),i=C(r),a=P.getTranscript(t).messagesByID[n];return i.messages.has(n)&&i.messages.get(n)===a?i.messages.get(n):(i.messages.set(n,a),a)},getParts(t,n){let r=K(dy(t,e)),i=C(r),a=P.getTranscript(t).partsByMessageID[n]??vy,o=i.parts.get(n);return o===a||o&&a&&o.length===a.length&&o.every((e,t)=>e===a[t])?o??a:(i.parts.set(n,a),a)},getMessageMaterializationState(t,n){let r=dy(t,e),i=m.get(M(r,n));return i?{sessionID:r.sessionID,messageID:n,status:i.status,...i.error===void 0?{}:{error:i.error}}:!P.getMessage(t,n)||g.get(K(r))?.has(n)||hl(P.getParts(t,n))?{sessionID:r.sessionID,messageID:n,status:`idle`}:{sessionID:r.sessionID,messageID:n,status:`ready`}},async materializeMessage(t,n){let r=dy(t,e),i=M(r,n),a=Mv(()=>P.getTranscript(t)),o=e=>{try{let t=Mv(e);if(!a||!t)return;Nv({trigger:`materialize`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`exact`,before:a,after:t})}catch{}},s=h.get(i);if(s)return s.then(e=>o(()=>e)).catch(()=>void 0),s;let c=(async()=>{try{if(!P.getMessage(t,n))return m.set(i,{status:`idle`}),P.getTranscript(t);if(!hl(P.getParts(t,n))&&!g.get(K(r))?.has(n))return m.set(i,{status:`ready`}),P.getTranscript(t);m.set(i,{status:`loading`}),k(t);try{let a=await oy({transport:r.transport,generation:r.generation,directory:r.directory,sessionID:r.sessionID,messageID:n,request:async()=>{if(e.fetchMessage){let t=await e.fetchMessage({directory:r.directory,sessionID:r.sessionID,messageID:n});return{data:{info:t.info,parts:[...t.parts??[]]}}}return z.getScopedSdkClient(r.directory).session.message({sessionID:r.sessionID,messageID:n,directory:r.directory})}});return se(r)?(P.apply(t,{type:`materialize-snapshots`,records:[{info:a.info,parts:a.parts??[]}]}),hl(P.getParts(t,n))?m.set(i,{status:`error`,error:`session.message failed: slim parts remain`}):m.set(i,{status:`ready`}),k(t),P.getTranscript(t)):(m.delete(i),P.getTranscript(t))}catch(e){if(!se(r))return m.delete(i),P.getTranscript(t);let n=e instanceof Error?e.message:`session.message failed`;return m.set(i,{status:`error`,error:n}),k(t),P.getTranscript(t)}}finally{ne(r,n)}})();return h.set(i,c),c.then(e=>o(()=>e)).catch(()=>void 0),c.finally(()=>{h.get(i)===c&&h.delete(i)}),c},apply(r,i){let a=dy(r,e),o=T(r),s=(()=>{switch(i.type){case`http-page`:{let e=ig(t,o,a.sessionID,{type:`http-page`,purpose:i.purpose,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes,optimistic:i.optimistic});return e.result.applied&&_.delete(K(a)),e.result.changed&&(k(r),D(r)),e.result}case`sse-event`:{let e=ig(t,o,a.sessionID,{type:`sse-event`,event:i.event});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`sse-event-batch`:{let e=ig(t,o,a.sessionID,{type:`sse-event-batch`,events:i.events});return e.result.applied&&_.delete(K(a)),e.result.changed&&k(r),e.result}case`optimistic-add`:{e.setOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,message:i.message,parts:i.parts});let n=ig(t,o,a.sessionID,{type:`optimistic-add`,message:i.message,parts:i.parts});return n.result.changed&&k(r),n.result}case`optimistic-confirm`:return e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID}),ig(t,o,a.sessionID,{type:`optimistic-confirm`,messageID:i.messageID}).result;case`optimistic-remove`:{e.clearOptimisticShadow?.({directory:a.directory,sessionID:a.sessionID,messageID:i.messageID});let n=ig(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return n.result.changed&&k(r),n.result}case`reset`:{if(b.delete(K(a)),g.delete(K(a)),_.delete(K(a)),n.purgeSession(E(r)),!i.page)return k(r),{applied:!0,changed:!0};let e=ig(t,o,a.sessionID,{type:`reset`,page:i.page,capturedLiveRevision:i.capturedLiveRevision,liveRevision:i.liveRevision,skipPartTypes:i.skipPartTypes});return(e.result.changed||e.result.applied)&&(k(r),D(r)),e.result}case`materialize-snapshots`:return yy(t,o,a.sessionID,i,()=>k(r));case`remove-message`:{let e=ig(t,o,a.sessionID,{type:`optimistic-remove`,messageID:i.messageID});return e.result.changed&&k(r),e.result}default:return{applied:!1,changed:!1}}})();return le(r,a,i,s),s.applied&&(Iv({directory:a.directory,sessionID:a.sessionID,transport:a.transport,generation:a.generation,command:i,transcript:py(w(r),a.sessionID),request:P.getRequestState?.(r),hydration:P.getHydrationState?.(r),error:s.error,changed:s.changed}),x(r,a)),s},subscribe(t,r){let a=K(dy(t,e)),s=o.get(a);if(!s){s=new Set,o.set(a,s);let e=E(t);l.set(a,i.retain(e)),n.noteScopeObserved(e)}return s.add(r),A(t),()=>{let e=o.get(a);if(e){if(e.delete(r),e.size===0){let e=l.get(a);e&&(e(),l.delete(a))}j(a)}}},async ensureInitial(t){let r=dy(t,e),a=K(r);if(d&&await d.wait(Yv(r)),w(t)===void 0&&e.durableStore)try{let n=await e.durableStore.readSession(Yv(r));if(se(r)&&w(t)===void 0&&n.records.length>0){S+=1;try{P.apply(t,{type:`materialize-snapshots`,records:n.records.map(e=>({info:e.info,parts:[...e.parts]}))});let e=new Set;for(let t of n.records)gl(t.parts,t.info)&&e.add(t.info.id);e.size>0&&g.set(a,e),_.add(a)}finally{--S}}}catch(e){jv(H_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`durable-cache`,purpose:`durable-seed`,error:e}))}if(pe(t)&&w(t)!==void 0){let e=Date.now(),n=await de(t,r);return jv(H_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let o=w(t);if(o&&o.pages.length>0&&!pe(t)&&e.fetcher&&!i.isRetained(E(t))){let e=Date.now(),n=await fe(t,r);return jv(H_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:`network`,durationMs:Date.now()-e,transcript:n,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),n}let s=O(t),c=Date.now(),l=w(t)!==void 0;f.delete(a);try{await s.ensureInitial()}catch(e){throw jv(H_({kind:`request-error`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,purpose:`initial`,durationMs:Date.now()-c,transcript:py(w(t),r.sessionID),request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t),error:e})),e}f.delete(a),l||Lm(r.directory,r.sessionID,{transport:r.transport,generation:r.generation}),n.noteScopeObserved(E(t)),D(t);let u=P.getTranscript(t);return jv(H_({kind:`ensure-initial`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,source:l?`query-cache`:`network`,durationMs:Date.now()-c,transcript:u,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),x(t,r),u},async fetchPreviousPage(t){if(pe(t)&&await P.ensureInitial(t),oh(w(t)).kind!==`has-more`)return P.getTranscript(t);let n=dy(t,e),r=K(n);b.add(r),k(t);let i=Date.now();try{await O(t).fetchPreviousPage(),D(t);let e=P.getTranscript(t);return jv(H_({kind:`http-page`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,command:`http-page`,transcript:e,request:P.getRequestState?.(t),hydration:P.getHydrationState?.(t)})),e}catch(e){throw jv(H_({kind:`request-error`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,source:`network`,durationMs:Date.now()-i,purpose:`prepend`,error:e})),e}finally{b.delete(r),k(t)}},getController(t){let n=dy(t,e);return a.get(K(n))},getCacheBudget(){return n},async refreshFromAuthority(t){if(!e.fetcher)throw Error(`Query transcript repository requires a fetcher for refreshFromAuthority`);let r=dy(t,e),i=Mv(()=>P.getTranscript(t)),a=P.getTranscript(t).liveRevision,o=await e.fetcher({directory:r.directory,sessionID:r.sessionID,limit:e.initialLimit??Ym(),signal:new AbortController().signal}),s=P.getTranscript(t).liveRevision;if(P.apply(t,{type:`http-page`,purpose:`reconcile-page`,page:{records:o.records.map(e=>({info:e.info,parts:e.parts})),complete:!1,cursor:void 0,turnCount:0},capturedLiveRevision:a,liveRevision:s}),s<=a){let n=gy(P.getTranscript(t),o);for(let i of n)P.apply(t,{type:`remove-message`,messageID:i}),e.clearOptimisticShadow?.({directory:r.directory,sessionID:r.sessionID,messageID:i})}let c=P.getTranscript(t);n.noteScopeObserved(E(t));try{let e=Mv(()=>c);i&&e&&Nv({trigger:`user-refresh`,sessionID:r.sessionID,directory:r.directory,transport:r.transport,generation:r.generation,purpose:`refresh-from-authority`,before:i,after:e})}catch{}return c},async destructiveReset(t){let r=Mv(()=>P.getTranscript(t)),i=E(t);return d&&await d.clearSession(Yv(dy(t,e))),n.destructiveReset(i,async()=>{let n=dy(t,e),i=K(n),o=a.get(i);if(o&&(o.destroy(),a.delete(i)),u.delete(i),ae(i),!e.fetcher)throw Error(`Query transcript repository requires a fetcher for destructiveReset ensure`);let s=await P.ensureInitial(t);try{let e=Mv(()=>s);r&&e&&Nv({trigger:`destructive-reset`,sessionID:n.sessionID,directory:n.directory,transport:n.transport,generation:n.generation,before:r,after:e})}catch{}return s})},purgeSession(t){let r=K(dy(t,e)),i=a.get(r);i&&(i.destroy(),a.delete(r)),u.delete(r),ie(`${r}\n`),g.delete(r),ae(r),n.purgeSession(E(t)),k(t)},purgeGeneration(e,t){for(let[n,r]of a)if(n.startsWith(`${e}\n${t}\n`)){r.destroy(),a.delete(n),u.delete(n);let e=l.get(n);e&&(e(),l.delete(n));let t=c.get(n);t&&(t(),c.delete(n)),o.delete(n)}ie(`${e}\n${t}\n`),re(`${e}\n${t}\n`),ae(`${e}\n${t}\n`),n.purgeGeneration(e,t),d&&d.clearGeneration({transport:e,generation:t})},destroy(){for(let e of a.values())e.destroy();a.clear();for(let e of c.values())e();c.clear();for(let e of l.values())e();l.clear(),o.clear(),u.clear(),f.clear(),p.clear(),m.clear(),h.clear(),g.clear(),v.clear(),y.clear(),b.clear()}};return P}var vy=Object.freeze([]);function yy(e,t,n,r,i){if(r.records.length===0)return{applied:!1,changed:!1};let a=ig(e,t,n,{type:`durable-seed`,records:r.records,skipPartTypes:r.skipPartTypes,merge:r.merge});return a.result.changed&&i(),a.result}var by=`/api/openchamber/transcript-cache`,xy=new Set([`unchanged`,`not-settled`,`slim-downgrade`]),Sy=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Cy=(e,t)=>{if(typeof e!=`string`||e.length===0)throw Error(`Invalid transcript cache ${t}`);return e},wy=(e,t)=>{if(typeof e==`number`&&Number.isInteger(e))return e;throw Error(`Invalid transcript cache ${t}`)},Ty=e=>{if(!Sy(e))throw Error(`Invalid transcript cache scope`);return{transport:Cy(e.transport,`scope`),generation:wy(e.generation,`scope`),directory:Cy(e.directory,`scope`),sessionID:Cy(e.sessionID,`scope`)}},Ey=(e,t)=>{if(e===`slim`||e===`full`)return e;throw Error(`Invalid transcript cache ${t}`)},Dy=e=>{if(!Sy(e)||!Sy(e.info)||!Array.isArray(e.parts)||!Array.isArray(e.partCompleteness)||!Sy(e.sortKey))throw Error(`Invalid transcript cache record`);return{scope:Ty(e.scope),messageID:Cy(e.messageID,`message ID`),info:e.info,parts:e.parts,partCompleteness:e.partCompleteness.map(e=>Ey(e,`part completeness`)),completeness:Ey(e.completeness,`completeness`),contentHash:Cy(e.contentHash,`content hash`),byteSize:wy(e.byteSize,`byte size`),lastAccessedAt:wy(e.lastAccessedAt,`lastAccessedAt`),sortKey:{created:wy(e.sortKey.created,`sort key`),messageID:Cy(e.sortKey.messageID,`sort key`)}}},Oy=(e,t)=>{if(!Sy(e)||!Array.isArray(e.records))throw Error(`Invalid transcript cache session`);let n=e.records.map(Dy);return{scope:e.scope===void 0?gc(t):Ty(e.scope),records:n,byteSize:typeof e.byteSize==`number`&&Number.isFinite(e.byteSize)?e.byteSize:n.reduce((e,t)=>e+t.byteSize,0)}},ky=e=>{if(!Sy(e))throw Error(`Invalid transcript cache upsert`);if(e.status===`written`)return{status:`written`,record:Dy(e.record)};if(e.status===`skipped`){if(typeof e.reason!=`string`||!xy.has(e.reason))throw Error(`Invalid transcript cache upsert`);return{status:`skipped`,reason:e.reason,...e.record===void 0?{}:{record:Dy(e.record)}}}throw Error(`Invalid transcript cache upsert`)},Ay=e=>{if(!Sy(e))throw Error(`Invalid transcript cache evict`);return{evicted:wy(e.evicted,`evict`),freedBytes:wy(e.freedBytes,`evict`),remainingBytes:wy(e.remainingBytes,`evict`)}},jy=e=>({scope:gc(e),records:[],byteSize:0}),My=(e,t)=>Sy(e)&&typeof e.error==`string`&&e.error.length>0?e.error:t,Ny=async e=>{if(e.status===204)return;let t=await e.text();if(t)try{return JSON.parse(t)}catch{throw Error(`Invalid transcript cache payload`)}},Py=async(e,t,n)=>{let r=await e(t,n);if(r.status===501)return{kind:`disabled`};if(r.status===404)return{kind:`not-found`};if(r.ok)return{kind:`ok`,payload:await Ny(r)};let i=await Ny(r).catch(()=>void 0);throw Error(My(i,`Transcript cache request failed (${r.status})`))},Fy=e=>({transport:e.transport,generation:String(e.generation),directory:e.directory,sessionID:e.sessionID}),Iy=(e,t)=>({method:e,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)});function Ly(e={}){let t=e.fetch??F;return{async readSession(e){let n=await Py(t,`${by}/session`,{method:`GET`,query:Fy(e)});return n.kind===`disabled`||n.kind===`not-found`?jy(e):Oy(n.payload,e)},async readMessage(e,n){let r=await Py(t,`${by}/message`,{method:`GET`,query:{...Fy(e),messageID:n}});if(r.kind!==`disabled`&&r.kind!==`not-found`){if(!Sy(r.payload))throw Error(`Invalid transcript cache record`);return Dy(r.payload.record??r.payload)}},async upsertSettled(e,n,r){let i=await Py(t,`${by}/message`,Iy(`PUT`,{scope:e,info:n,parts:r}));if(i.kind===`disabled`)return{status:`skipped`,reason:`unchanged`};if(i.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return ky(i.payload)},async removeMessage(e,n){let r=await Py(t,`${by}/message`,Iy(`DELETE`,{scope:e,messageID:n}));if(r.kind!==`disabled`&&r.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearSession(e){let n=await Py(t,`${by}/session`,Iy(`DELETE`,{scope:e}));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async clearGeneration(e){let n=await Py(t,`${by}/generation`,Iy(`DELETE`,e));if(n.kind!==`disabled`&&n.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async evictToBytes(e,n){let r=await Py(t,`${by}/evict`,Iy(`POST`,{maxBytes:e,...n?.protect?{protect:n.protect}:{}}));if(r.kind===`disabled`)return{evicted:0,freedBytes:0,remainingBytes:0};if(r.kind===`not-found`)throw Error(`Transcript cache request failed (404)`);return Ay(r.payload)},async clearAll(){let e=await Py(t,`${by}/all`,{method:`DELETE`,headers:{Accept:`application/json`}});if(e.kind!==`disabled`&&e.kind!==`ok`)throw Error(`Transcript cache request failed (404)`)},async destroy(){}}}var Ry=`openchamber-transcript-durable`,zy=1,By=`transcriptIndex`,Vy=`transcriptContent`,Hy=class extends Error{code;constructor(e){super(e),this.code=e}},Uy=e=>({id:nc(e.scope,e.messageID),scope:gc(e.scope),scopeKey:tc(e.scope),generationKey:rc(e.scope),messageID:e.messageID,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID},contentHash:e.contentHash,completeness:e.completeness,partCompleteness:e.partCompleteness.slice(),byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt}),Wy=(e,t)=>({scope:gc(e.scope),messageID:e.messageID,info:hc(t.info),parts:hc(t.parts),partCompleteness:e.partCompleteness.slice(),completeness:e.completeness,contentHash:e.contentHash,byteSize:e.byteSize,lastAccessedAt:e.lastAccessedAt,sortKey:{created:e.sortKey.created,messageID:e.sortKey.messageID}}),Gy=async(e,t)=>{let n=await e.getIndex(t),r=await e.getContent(t);if(n&&r)return Wy(n,r);n&&await e.deleteIndex(t),r&&await e.deleteContent(t)},Ky=async(e,t)=>{await e.deleteIndex(t),await e.deleteContent(t)},qy=(e,t)=>new Promise((n,r)=>{e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??t.error??Error(`IndexedDB request failed`))}),Jy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){n(new Hy(`database-unavailable`));return}let r=indexedDB.open(e,zy),i=!1,a=()=>{i||(i=!0,n(new Hy(`database-unavailable`)))};r.onupgradeneeded=()=>{let e=r.result;if(!e.objectStoreNames.contains(By)){let t=e.createObjectStore(By,{keyPath:`id`});t.createIndex(`scopeKey`,`scopeKey`,{unique:!1}),t.createIndex(`generationKey`,`generationKey`,{unique:!1}),t.createIndex(`lastAccessedAt`,`lastAccessedAt`,{unique:!1})}e.objectStoreNames.contains(Vy)||e.createObjectStore(Vy,{keyPath:`id`})},r.onsuccess=()=>{let e=r.result;if(e.onversionchange=()=>e.close(),i){e.close();return}i=!0,t(e)},r.onerror=a,r.onblocked=a}),Yy=e=>new Promise((t,n)=>{if(!globalThis.indexedDB){t();return}let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??new Hy(`database-unavailable`)),r.onblocked=()=>void 0}),Xy=(e=Ry)=>({transaction:async t=>{let n=await Jy(e),r=n.transaction([By,Vy],`readwrite`),i=r.objectStore(By),a=r.objectStore(Vy),o=e=>qy(e,r),s=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=()=>t(r.error??new DOMException(`aborted`,`AbortError`)),r.onerror=()=>{console.error(`Transcript durable IndexedDB transaction error`,r.error)}}),c;try{let e=await t({getIndex:e=>o(i.get(e)),getAllIndexes:()=>o(i.getAll()),getIndexesByScope:e=>o(i.index(`scopeKey`).getAll(e)),getIndexesByGeneration:e=>o(i.index(`generationKey`).getAll(e)),putIndex:async e=>{await o(i.put(e))},deleteIndex:async e=>{await o(i.delete(e))},getContent:e=>o(a.get(e)),putContent:async e=>{await o(a.put(e))},deleteContent:async e=>{await o(a.delete(e))},clearAll:async()=>{await o(i.clear()),await o(a.clear())}});return await s,e}catch(e){c=e;try{r.abort()}catch{}try{await s}catch(e){c===void 0&&(c=e)}throw c}finally{n.close()}},destroy:()=>Yy(e)});function Zy(e,t={}){let n=_c(t.now??Date.now),r=async(e,t)=>(t.lastAccessedAt=n(),await e.putIndex(Uy(t)),vc(t));return{async readSession(t){return e.transaction(async e=>{let r=await e.getIndexesByScope(tc(t)),i=[];for(let t of r){let r=await e.getContent(t.id);if(!r){await e.deleteIndex(t.id);continue}let a=Wy(t,r);a.lastAccessedAt=n(),await e.putIndex(Uy(a)),i.push(a)}return yc(t,i)})},async readMessage(t,n){return e.transaction(async e=>{let i=await Gy(e,nc(t,n));if(i)return r(e,i)})},async upsertSettled(t,i,a){let o=bc({info:i,incomingCompleteness:cc(a)});if(o.status===`skipped`&&o.reason===`not-settled`)return{status:`skipped`,reason:`not-settled`};let s=hc(a.slice()),c=cc(s),l=await dc(i,s),u=nc(t,i.id);return e.transaction(async e=>{let a=await Gy(e,u),o=bc({info:i,existing:a,incomingCompleteness:c,incomingHash:l.hash});if(o.status===`skipped`)return o.reason===`slim-downgrade`&&a?{status:`skipped`,reason:`slim-downgrade`,record:vc(a)}:o.reason===`unchanged`&&a?{status:`skipped`,reason:`unchanged`,record:await r(e,a)}:{status:`skipped`,reason:o.reason};let d={scope:gc(t),messageID:i.id,info:hc(i),parts:s,partCompleteness:s.map(sc),completeness:c,contentHash:l.hash,byteSize:l.byteSize,lastAccessedAt:n(),sortKey:ac(i)};return await e.putIndex(Uy(d)),await e.putContent({id:u,info:hc(i),parts:s}),{status:`written`,record:vc(d)}})},async removeMessage(t,n){await e.transaction(e=>Ky(e,nc(t,n)))},async clearSession(t){await e.transaction(async e=>{let n=await e.getIndexesByScope(tc(t));for(let t of n)await Ky(e,t.id)})},async clearGeneration(t){await e.transaction(async e=>{let n=await e.getIndexesByGeneration(rc(t));for(let t of n)await Ky(e,t.id)})},async evictToBytes(t,n){return e.transaction(async e=>{let r=Number.isFinite(t)?Math.max(0,t):0,i=new Set((n?.protect??[]).map(tc)),a=await e.getAllIndexes(),o=0;for(let e of a)o+=e.byteSize;if(o<=r)return{evicted:0,freedBytes:0,remainingBytes:o};let s=a.filter(e=>!i.has(e.scopeKey)).sort((e,t)=>e.lastAccessedAt===t.lastAccessedAt?ic(e.sortKey,t.sortKey):e.lastAccessedAt-t.lastAccessedAt),c=0,l=0;for(let t of s){if(o<=r)break;await Ky(e,t.id),o-=t.byteSize,l+=t.byteSize,c+=1}return{evicted:c,freedBytes:l,remainingBytes:o}})},async clearAll(){await e.transaction(async e=>{await e.clearAll()})},async destroy(){await e.destroy()}}}function Qy(e={}){return Zy(e.driver??Xy(e.databaseName),e)}function $y(e={}){let t=e.isDesktopShell??se,n=e.isDesktopLocalOriginActive??ce,r=e.isVSCodeRuntime??v,i=e.isCapacitorApp??Ge;return r()||i()?`indexeddb`:t()&&n()?`http`:`indexeddb`}var eb=async e=>{let t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason};function tb(e={}){let t,n,r=()=>(t??=(e.createHttpStore??Ly)(),t),i=()=>(n??=(e.createIndexedDBStore??Qy)(),n),a=()=>$y(e)===`http`?r():i();return{readSession:e=>a().readSession(e),readMessage:(e,t)=>a().readMessage(e,t),upsertSettled:(e,t,n)=>a().upsertSettled(e,t,n),removeMessage:(e,t)=>a().removeMessage(e,t),clearSession:e=>a().clearSession(e),clearGeneration:e=>eb([r().clearGeneration(e),i().clearGeneration(e)]),evictToBytes:(e,t)=>a().evictToBytes(e,t),clearAll:()=>a().clearAll(),destroy:async()=>{}}}async function nb(e={}){await tb(e).clearAll()}var rb=(e,t)=>e<t?-1:+(e>t);function ib(e){return e.filter(e=>!!e?.id).sort((e,t)=>rb(e.id,t.id))}async function ab(e){let t=e.before?`prepend`:e.purpose??`initial`,n=t===`prepend`||t===`recovery`||t===`materialize`?t:`initial`,i=await Pg({sessionID:e.sessionID,directory:e.directory,purpose:n,...e.before?{before:e.before}:{},signal:e.signal}),a=i.records.map(e=>({info:lp(e.info),parts:ib(e.parts??[])}));if(!e.before&&!i.complete&&cy(a).length>0){let t=z.getScopedSdkClient(e.directory);a=(await ly({records:a,complete:i.complete,requestMessage:async n=>{let i=await oy({transport:r(),generation:s(),directory:e.directory,sessionID:e.sessionID,messageID:n,request:()=>t.session.message({sessionID:e.sessionID,messageID:n,directory:e.directory})});return{info:i.info,parts:ib(i.parts??[])}}})).records.map(e=>({info:e.info,parts:ib(e.parts??[])}))}return{records:a,cursor:i.cursor??void 0,complete:i.complete,turnCount:i.turnCount,requestedTurnLimit:e.limit}}function ob(e){let t=e.client??L,n=xg(),i=Eg({client:t,activeRegistry:n}),a=_y({client:t,cacheBudget:i,activeRegistry:n,probe:{getTransport:r,getGeneration:s},fetcher:e=>ab({directory:e.directory,sessionID:e.sessionID,limit:e.limit,before:e.before,signal:e.signal}),initialLimit:Ym(),historyLimit:Xm(),durableStore:e.durableStore??tb()}),o=Jv({client:t,repository:a,listDirectories:()=>Array.from(e.childStores.children.keys()),getBusyOrRetrySessionIDs:t=>{let n=e.childStores.getChild(t);if(!n)return[];let r=n.getState().session_status??{},i=[];for(let[e,t]of Object.entries(r))t&&(t.type===`busy`||t.type===`retry`)&&i.push(e);return i},getViewedSession:()=>e.getViewedSession?.()??null,getViewedSessions:e.getViewedSessions?()=>e.getViewedSessions():void 0,cacheBudget:i,probe:{getTransport:r,getGeneration:s}});return gu(a),Au(o),{repository:a,destroy:()=>{o.cancelAll(`dispose`),Au(null),a.destroy(),_u()}}}function sb(e){return vu().apply(U(e.directory,e.sessionID),{type:`http-page`,purpose:e.purpose,page:e.page,capturedLiveRevision:e.capturedLiveRevision,liveRevision:e.liveRevision,skipPartTypes:e.skipPartTypes,optimistic:e.optimistic})}var cb=new Map;function lb(e,t,n,r){return`${n}\0${r}\0${t??``}\0${e}`}async function ub(e,t,n,i={}){let a=i.getTransportIdentity??r,o=i.getGeneration??s,c=a(),l=o(),u=lb(e,t,c,l),d=()=>a()===c&&o()===l,f=cb.get(u)??Promise.resolve(),p,m=new Promise(e=>{p=e}),h=f.catch(()=>void 0).then(()=>m);cb.set(u,h);try{if(await f.catch(()=>void 0),!d())throw Error(`Session history mutation aborted because the runtime changed`);return await n({transportIdentity:c,generation:l,isCurrent:d})}finally{p(),cb.get(u)===h&&cb.delete(u)}}var db=new Set,fb=new Set,pb=new Set,mb=new Set,hb={onDeleteRequest(e){return db.add(e),()=>{db.delete(e)}},requestDelete(e){!e.sessions.length&&e.mode!==`worktree`||db.forEach(t=>t(e))},onCreateRequest(e){return fb.add(e),()=>{fb.delete(e)}},requestCreate(e){let t=e??{};fb.forEach(e=>e(t))},onDirectoryRequest(e){return pb.add(e),()=>{pb.delete(e)}},requestDirectoryDialog(){pb.forEach(e=>e())},onGitRefreshHint(e){return mb.add(e),()=>{mb.delete(e)}},requestGitRefresh(e){e.directory.trim()&&mb.forEach(t=>t(e))}},gb=e=>e.trim(),_b=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session status runtime changed`)},vb=(e,t={})=>{let n=gb(e),i=t.transport??r(),a=t.loadSnapshot??((e,t)=>z.getSessionStatusForDirectory(e,t)),o=t.now??Date.now,c=t.runtimeProbe??{},l=(c.getGeneration??s)();return ot({queryKey:N.sessionStatus.snapshot(n,i),queryFn:async({signal:e})=>{_b(i,l,c);let t=o(),r=await a(n,e);if(_b(i,l,c),r===null)throw Error(`session status snapshot unavailable`);return{snapshot:r,requestedAt:t}},staleTime:0,gcTime:3e5,retry:!1})},yb=(e,t={})=>{let{client:n=L,...r}=t;return n.fetchQuery(vb(e,r))},bb=(e,t,n)=>{let i=(n.getTransport??r)(),a=(n.getGeneration??s)();if(i!==e||a!==t)throw Error(`session active runtime changed`)},xb=(e={})=>{let t=e.transport??r(),n=e.loadActive??(e=>z.getSessionActive(e)),i=e.now??Date.now,a=e.runtimeProbe??{},o=(a.getGeneration??s)();return ot({queryKey:N.sessionActive.snapshot(t,o),queryFn:async({signal:e})=>{bb(t,o,a);let r=i(),s=await n(e);return bb(t,o,a),{result:s,requestedAt:r}},staleTime:0,gcTime:3e5,retry:!1})},Sb=(e={})=>{let{client:t=L,...n}=e;return t.fetchQuery(xb(n))},Cb;function wb(e){Cb=e}function Tb(e){if(e){if(e.type===`idle`||e.type===`busy`)return{type:e.type};if(e.type===`retry`&&typeof e.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`)return{type:`retry`,attempt:e.attempt,message:e.message,next:e.next}}}function Eb(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Db(e,t){return e.type===`retry`&&typeof e.next==`number`&&e.next>t}function Ob(e,t,n=Date.now()){return e.getState().session_status?.[t]?.type===`retry`&&(e.setState(e=>({session_status:{...e.session_status,[t]:{type:`busy`}},session_status_observed_at:{...e.session_status_observed_at,[t]:n}})),!0)}function kb(e,t,n,r=Date.now()){if(!e||e.state===`unsupported`||e.state===`unknown`)return t?{snapshot:t,source:`legacy`}:{snapshot:null,source:`none`};let i=e.membership,a=t??{},o=new Set([...n,...Object.keys(a)]);if(o.size===0)return{snapshot:null,source:`none`};let s={};for(let e of o){let t=Object.prototype.hasOwnProperty.call(i,e),n=Tb(a[e]);if(t){s[e]=n&&Db(n,r)?n:{type:`busy`};continue}s[e]=(n?.type===`retry`||n?.type===`busy`||n?.type,{type:`idle`})}return{snapshot:s,source:`fused`}}function Ab(e,t,n,r){if(n.length===0)return!1;let i=!1;return e.setState(e=>{let a=e.session_status??{},o,s,c=()=>o??={...a},l=()=>s??={...e.session_status_observed_at},u=t=>{r!==void 0&&e.session_status_observed_at[t]!==r&&(l()[t]=r,i=!0)};for(let o of n){if(r!==void 0&&(e.session_status_observed_at[o]??-1/0)>=r)continue;let n=Tb(t[o]);if(n&&n.type!==`idle`){Eb(a[o],n)||(c()[o]=n,i=!0),u(o);continue}let s=a[o];(!s||s.type!==`idle`)&&(c()[o]={type:`idle`},i=!0),u(o)}return!o&&!s?e:{...o?{session_status:o}:{},...s?{session_status_observed_at:s}:{}}}),i}function jb(e,t){return Array.from(new Set([...e,...Object.keys(t)]))}async function Mb(e,t,n,r={}){if(r.isStale?.())return null;let i=r.transport,a=r.runtimeProbe,o=r.queryClient,s=r.now,c=null,l=null,u,d=(async()=>{try{return await yb(e,{client:o,loadSnapshot:r.loadSnapshot,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),f=r.skipActive?Promise.resolve(null):(async()=>{try{return await Sb({client:o,loadActive:r.loadActive,now:s,runtimeProbe:a,transport:i})}catch{return null}})(),[p,m]=await Promise.all([d,f]);if(c=p,m&&(l=m.result,u=m.requestedAt),r.isStale?.())return null;let h=c?.snapshot??null,g=l?.state===`supported`;if(h===null&&!g)return null;let{snapshot:_,source:v}=kb(l,h,n);if(!_||v===`none`)return null;let y=[c?.requestedAt,u].filter(e=>typeof e==`number`&&Number.isFinite(e));if(y.length===0)return null;let b=Math.min(...y),x=jb(n,_);if(x.length===0)return null;t.setState({session_status_snapshot_at:b}),Ab(t,_,x,b);let S=r.onAuthoritativeGlobalStatusConverge??Cb;if(S){let n=t.getState().session_status??{},r={};for(let e of x){let t=n[e];t&&t.type!==`idle`&&(r[e]={type:t.type})}S(e,r,x)}return _}async function Nb({directory:e,sessionID:t,store:n,statusBeforePull:r,statusObservedAtBeforePull:i,hasMessages:a,isTailPage:o=!0,isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m}){if(!o||!a||!r||r.type===`idle`||s?.())return null;let h=n.getState();return h.session_status?.[t]!==r||h.session_status_observed_at?.[t]!==i?null:Mb(e,n,[t],{isStale:s,loadSnapshot:c,loadActive:l,now:u,queryClient:d,runtimeProbe:f,transport:p,skipActive:m})}var Pb=50,Fb=e=>{let t=Object.keys(e);if(t.length<=Pb)return e;let n=t.map(t=>[t,e[t].touchedAt]).sort((e,t)=>e[1]-t[1]).slice(0,t.length-Pb).map(([e])=>e),r={...e};for(let e of n)delete r[e];return r},Ib=Oe()(je(ke((e,t)=>({sessions:{},setSessionTodos:(t,n)=>{t&&e(e=>{let r={...e.sessions};return!n||n.length===0?t in r?(delete r[t],{sessions:r}):e:(r[t]={todos:n,touchedAt:Date.now()},{sessions:Fb(r)})})},getSessionTodos:e=>{if(e)return t().sessions[e]?.todos}}),{name:`openchamber-session-todos`,version:1,storage:h(),partialize:e=>({sessions:e.sessions})}),{name:`TodosPersistStore`})),Lb=new Set([`todowrite`,`todoread`]),Rb=new Set([`error`,`aborted`,`failed`,`cancelled`,`canceled`,`timeout`]),zb=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Bb=(e,t)=>{Ib.getState().setSessionTodos(e,t)},Vb=e=>{if(e.type!==`tool`)return``;let t=e.tool;return typeof t==`string`?t.trim().toLowerCase():``},Hb=e=>{let t=e.state;return typeof t?.status==`string`?t.status.trim().toLowerCase():void 0},Ub=e=>{if(!e||typeof e!=`object`)return null;let t=e;if(typeof t.content!=`string`||typeof t.status!=`string`)return null;let n={content:t.content,status:t.status,priority:typeof t.priority==`string`?t.priority:`medium`};return typeof t.id==`string`&&t.id.length>0&&(n.id=t.id),n},Wb=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Ub(n);e&&t.push(e)}return t},Gb=e=>{try{let t=JSON.parse(e);if(Array.isArray(t))return Wb(t);if(t&&typeof t==`object`)return Wb(t.todos)}catch{}return[]},Kb=e=>{if(!Lb.has(Vb(e)))return[];let t=Hb(e);if(t&&Rb.has(t))return[];let n=e.state,r=Wb(n?.input?.todos);if(r.length>0)return r;let i=n?.output;if(Array.isArray(i)){let e=Wb(i);if(e.length>0)return e}if(i&&typeof i==`object`){let e=Wb(i.todos);if(e.length>0)return e}return typeof i==`string`&&i.trim().length>0?Gb(i):[]};function qb(e){for(let t=e.messageOrder.length-1;t>=0;--t){let n=e.messageOrder[t],r=e.partsByMessageID[n];if(!(!r||r.length===0))for(let e=r.length-1;e>=0;--e){let t=Kb(r[e]);if(t.length>0)return t}}return[]}function Jb(e){if(!e.sessionID||e.isStale?.()||zb(e.store.getState().todo,e.sessionID))return!1;let t=qb(e.transcript);return t.length===0||e.isStale?.()||zb(e.store.getState().todo,e.sessionID)?!1:(e.store.setState(n=>({todo:{...n.todo,[e.sessionID]:t}})),e.persist?.(e.sessionID,t),!0)}function Yb(e){if(!e.sessionID||!e.directory||e.isStale?.())return!1;let t=e.transcript??H()?.getTranscript(U(e.directory,e.sessionID));return t?Jb({sessionID:e.sessionID,store:e.store,transcript:t,persist:Bb,isStale:e.isStale}):!1}var Xb=t({COMBINED_SEND_CONFIRMATION_RECOVERY:()=>YS,COMBINED_SEND_PRESENCE_GRACE_MS:()=>JS,SESSION_DELETE_UNDO_MS:()=>yS,abortBusySessionForMessageEdit:()=>lC,abortCurrentOperation:()=>eC,archiveSession:()=>kS,beginOptimisticSend:()=>zS,cancelScheduledSessionDeletes:()=>OS,classifySendFailure:()=>Ux,combinedSendConfirmationOptions:()=>XS,commitMessageEdit:()=>dC,createSession:()=>pS,deleteSession:()=>ES,dirStoreForDirectory:()=>Ox,dismissOpenQuestionsForSession:()=>iC,ensureSentUserMessagePresence:()=>$S,fetchMessagesForSession:()=>_C,fetchRecentSendConfirmationRecords:()=>KS,forkSession:()=>hC,getSendFailureKind:()=>Vx,getSessionLastAssistantModel:()=>Px,isQuestionRequestNotFoundError:()=>uS,materializeConfirmedSendRecords:()=>qS,mirrorSessionIntoLiveStores:()=>Ix,optimisticInsertUserMessage:()=>WS,optimisticSend:()=>US,patchSessionMetadata:()=>mS,refetchSessionMessages:()=>pC,rejectQuestion:()=>rC,releaseUnconfirmedQueueSend:()=>Tx,requestSessionSmartTitle:()=>MS,resolveForkMessageId:()=>lx,respondToPermission:()=>tC,respondToQuestion:()=>nC,revertToMessage:()=>aC,rollbackOptimisticSend:()=>VS,scheduleSessionDeletes:()=>DS,setActionRefs:()=>Cx,setOptimisticRefs:()=>wx,settleOptimisticSend:()=>HS,shareSession:()=>NS,shouldSuppressForkCopyEvent:()=>dx,stageMessageEdit:()=>sC,trackForkCopySessionCreated:()=>ax,unarchiveSession:()=>AS,unrevertSession:()=>mC,unshareSession:()=>PS,updateSessionTitle:()=>jS,waitForConnectionOrThrow:()=>qx,waitForSessionIdleForMessageEdit:()=>uC}),Zb=2,Qb=150,$b=new Set([`patch`,`step-start`,`step-finish`]),ex=3,tx=150,nx=null,rx=new Map,ix=3e4;function ax(e,t){let n=t?.id;!nx||nx.runtimeKey!==i()||nx.directory!==e||!n||t?.title!==nx.expectedTargetTitle||n===nx.sourceSessionID||nx.targetSessionID||(nx.targetSessionID=n)}function ox(e){let t=e.match(/^(.+) \(fork #(\d+)\)$/);return t?`${t[1]} (fork #${Number.parseInt(t[2],10)+1})`:`${e} (fork #1)`}async function sx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,stage:t}}:n),await new Promise(e=>setTimeout(e,0))}function cx(e,t){$.setState(n=>n.forkTransition?.operationId===e?{forkTransition:{...n.forkTransition,targetSessionId:t}}:n)}function lx(e,t,n){if(e){let n=t.findIndex(t=>t.id===e);return n===-1||t[n]?.role!==`assistant`?e:t[n+1]?.id}if(!n||n.type===`idle`)return e;for(let e=t.length-1;e>=0;--e)if(t[e]?.role===`user`)return t[e].id}async function ux(e,t){let n=Lp(e),r=n.openchamber&&typeof n.openchamber==`object`?n.openchamber:{},i=r.titleRefresh&&typeof r.titleRefresh==`object`?r.titleRefresh:{};return z.updateSession(e.id,{metadata:{...n,openchamber:{...r,titleRefresh:{...i,activityUpdatedAt:Date.now()}}}},t)}function dx(e,t,n){if(nx&&nx.runtimeKey===i()&&nx.directory===e&&t&&t===nx.targetSessionID)return!0;if(!t||!n)return!1;let r=`${i()}:${e}:${t}`,a=rx.get(r);return a?a.expiresAt<=Date.now()?(rx.delete(r),!1):n<=a.messageID:!1}var fx=null,px=null,mx=()=>``,hx=new Map,gx=null,_x=null,vx=null,yx=e=>new Promise(t=>setTimeout(t,e));function bx(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e.message;if(typeof t==`string`&&t.length>0)return t;let n=e.data;if(n&&typeof n==`object`){let e=n.message;if(typeof e==`string`&&e.length>0)return e}}try{return JSON.stringify(e)}catch{return String(e)}}function xx(e,t){if(!e.error)return e.data;let n=e.response?.status,r=Error(`${t} failed${n?` (${n})`:``}: ${bx(e.error)}`);throw n!==void 0&&(r.status=n),r}function Sx(e,t){let n=xx(e,t);if(n==null)throw Error(`${t} failed: empty response`);return n}function Cx(e,t,n){if(fx=e,px=t,mx=n,hx.size>0){let e=[...hx.values()];hx.clear(),queueMicrotask(()=>{for(let t of e)_C(t.sessionID,t.directory)})}}function wx(e,t,n){gx=e,_x=t,vx=n??null}function Tx(e){let t=e.directory??null;_x?.({sessionID:e.sessionID,directory:t,messageID:e.messageID})}function Ex(){if(!fx)throw Error(`SDK not initialized — is SyncProvider mounted?`);return fx}function Dx(){if(!px)throw Error(`Child stores not initialized`);let e=mx();if(!e)throw Error(`No current directory`);return px.ensureChild(e)}function Ox(e,t){if(!px)throw Error(`Child stores not initialized`);if(!e)throw Error(`No directory`);return px.ensureChild(e,t)}function kx(e,t){let n=t??$x(e);return n?{store:Ox(n),directory:n}:{store:Dx(),directory:Lx()}}function Ax(e,t){let{store:n,directory:r}=kx(e,t??void 0),i=r??Lx()??``;return{repository:H()??yu(i,n),directory:i,store:n}}function jx(e,t){let{repository:n,directory:r,store:i}=Ax(e,t);return{repository:n,directory:r,store:i,data:n.getTranscript(U(r,e))}}function Mx(e,t){return Gu(jx(e,t).data)}function Nx(e,t){return jx(e,t).data.messageOrder.length}function Px(e){try{let t=Mx(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n?.role===`assistant`&&typeof n.providerID==`string`&&n.providerID&&typeof n.modelID==`string`&&n.modelID)return{providerID:n.providerID,modelID:n.modelID}}return null}catch{return null}}function Fx(e,t){let n=px;if(!n)return!1;let r=t?[[t,n.getChild(t)]]:n.children;for(let[,t]of r){if(!t)continue;let n=t.getState().session,r=n.findIndex(t=>t.id===e.id);if(r===-1)continue;let i=[...n];return i[r]=xE(e,n[r]),t.setState({session:i}),!0}return!1}function Ix(e,t){t&&Fx(e,t)||Fx(e)}function Lx(){return mx()||void 0}function Rx(){let{hasEverConnected:e,lastDisconnectReason:t}=G.getState(),n=t?` (${t})`:e?``:` (never connected)`;return Error(`Connection lost${n}. Please wait for reconnection.`)}function zx(e){if(!e||typeof e!=`object`)return null;let t=e.status;if(typeof t==`number`)return t;let n=e.response;return typeof n?.status==`number`?n.status:null}var Bx=class extends Error{kind;cause;messageID;constructor(e,t,n){super(t instanceof Error?t.message:String(t)),this.name=`SendDispatchError`,this.kind=e,this.cause=t,this.messageID=n}};function Vx(e){return e instanceof Bx?e.kind:null}function Hx(e){let t=zx(e);if(t===503||t===504||t===408||e instanceof TypeError||e instanceof DOMException&&(e.name===`AbortError`||e.name===`TimeoutError`))return!0;let n=e instanceof Error?e.message.toLowerCase():typeof e==`string`?e.toLowerCase():``;return n.includes(`timeout`)||n.includes(`timed out`)||n.includes(`failed to fetch`)||n.includes(`networkerror`)||n.includes(`network error`)||n.includes(`gateway timeout`)||n.includes(`econnreset`)||n.includes(`socket hang up`)}function Ux(e,t){return t?Hx(e)||zx(e)===null?`ambiguous-dispatched`:`definitive-rejection`:`pre-dispatch`}var Wx=2e3,Gx=5e3,Kx=3e4;async function qx(){let e=jm();e&&Am(`send_stream_stale`);let t=Date.now()+(e?Gx:Wx);for(;Date.now()<t;){if(G.getState().isConnected&&!jm()||o()&&!jm())return;let e=t-Date.now();if(e<=0)break;if(await G.getState().probeConnection({timeoutMs:Math.min(500,e)})&&!jm())return;let n=Math.min(100,t-Date.now());n>0&&await new Promise(e=>setTimeout(e,n))}throw Rx()}function Jx(e){return new Promise((t,n)=>{let r=setTimeout(()=>{Am(`send_timeout`),n(new DOMException(`Send timed out`,`TimeoutError`))},Kx);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})})}function Yx(e){let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null}function Xx(e){e&&Y.getState().upsertSession(e)}function Zx(e,t){let n=sp(t),r=[...e.getState().session],i=ls.search(r,n.id,e=>e.id);if(i.found){let t=xE(n,r[i.index]);return r[i.index]=t,e.setState({session:r}),t}return r.splice(i.index,0,n),e.setState({session:r}),n}async function Qx(e,t,n){let r=t.getState().session.find(t=>t.id===e);if(r)return r;let i=Yx(e);if(i)return Zx(t,i);try{return Zx(t,await z.getSession(e,n))}catch(t){throw console.error(`[session-fork] failed to hydrate source session`,{sessionId:e,directory:n,error:t}),Error(`Fork source session is unavailable`)}}function $x(e){return eS(e)||$.getState().getDirectoryForSession(e)||Lx()}function eS(e){let t=px;if(!t||!e)return null;for(let[n,r]of t.children){let t=r.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e)||Object.prototype.hasOwnProperty.call(t.permission??{},e)||Object.prototype.hasOwnProperty.call(t.question??{},e))return n}try{let t=H()?.getCacheBudget?.().listCanonical();if(t){let n=t.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory),r=[...new Set(n)];if(r.length===1)return r[0]??null}}catch{}return null}function tS(e){let t=e?$.getState().getDirectoryForSession(e):null;return t?z.getScopedSdkClient(t):Ex()}function nS(e){Or.getState().clearAttachedFiles();for(let t of e){let e=typeof t.url==`string`?t.url:``,n=typeof t.mime==`string`?t.mime:`application/octet-stream`,r=typeof t.filename==`string`?t.filename:`attachment`;e&&Or.getState().addRestoredAttachment({url:e,mimeType:n,filename:r})}}var rS=()=>new Map(Array.from(Pd(),([e,t])=>[e,t.title||e]));function iS(e){return!(e.type!==`file`||Zp(e))}function aS(e){return iS(e)?e.slim===!0||typeof e.url!=`string`||e.url.length===0:!1}function oS(e){return e.some(aS)}async function sS(e){let t=[...e.parts];if(!oS(t))return t;let n=s(),r=e.directory??``;try{await Eu(r,e.sessionID,e.messageID,{priority:`user`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`composer-restoration-materialize-failed: ${t}`)}if(e.isCurrent&&!e.isCurrent()||s()!==n)throw Error(`Session history mutation aborted because the runtime changed`);let{repository:i,directory:a}=Ax(e.sessionID,r);if(t=[...i.getParts(U(a,e.sessionID),e.messageID)],oS(t))throw Error(`composer-restoration-incomplete-attachment`);return t}async function cS(e){if(oS(e.parts))throw Error(`composer-restoration-incomplete-attachment`);let t=await fm(e.parts,{sessionTitles:rS(),directory:e.directory}),n=Or.getState(),r=n.getDraft(e.key);return{payload:t,commit:await _m({key:e.key,expectedRevision:r?.revision??`absent`,payload:t,runtime:n.captureDraftRuntime()})}}function lS(e,t,n){let r=px;if(!r||!n)return null;for(let[t,i]of r.children){let r=i.getState(),a=e===`permission`?r.permission:r.question;for(let e of Object.values(a))if(e?.some(e=>e.id===n))return t}let i=$.getState().getDirectoryForSession(t);if(i)return i;for(let[e,n]of r.children){let r=n.getState();if(r.session.some(e=>e.id===t)||Object.prototype.hasOwnProperty.call(r.session_status??{},t)||Object.prototype.hasOwnProperty.call(r.permission??{},t)||Object.prototype.hasOwnProperty.call(r.question??{},t))return e}return null}function uS(e){if(e&&typeof e==`object`&&e.status===404)return!0;let t=``;return e instanceof Error?t=e.message:typeof e==`string`&&(t=e),/Question(?:\.)?NotFoundError|Question request not found/i.test(t)}function dS(e,t){let n=px;if(!n||!t)return!1;let r=!1;for(let[,i]of n.children){let n=i.getState().question??{},a=null,o=new Set([e,...Object.keys(n)].filter(Boolean));for(let e of o){let i=n[e];if(!i?.length)continue;let o=i.filter(e=>e.id!==t);o.length!==i.length&&(a??={...n},o.length>0?a[e]=o:delete a[e],r=!0)}a&&i.setState({question:a})}return r}function fS(e,t,n){let r=lS(e,t,n);return r?z.getScopedSdkClient(r):tS(t)}async function pS(e,t,n,r){try{let i=await z.createSession({title:e,parentID:n??void 0,metadata:r},t??Lx()),a=i.directory??null;return a&&Ed(i.id,a),$.getState().setCurrentSession(i.id,a),$.getState().markSessionAsOpenChamberCreated(i.id),Y.getState().upsertSession(i),i}catch(e){return console.error(`[session-actions] createSession failed`,e),null}}async function mS(e,t,n){let r=t??$x(e),i=n(Lp(await z.getSession(e,r))),a=await z.updateSession(e,{metadata:i},r);Y.getState().upsertSession(a);let o=a.directory??r;return o&&Ed(a.id,o),a}async function hS(e,t){let n;try{n=await z.getSession(e,t??$x(e))}catch{return}if(!Vp(n))return;let r=Bp(n);if(r)try{await mS(r,t??$x(r),t=>Wp(t,e))}catch(e){let t=e instanceof Error?e.message:String(e);if(/not found/i.test(t))return;console.warn(`[session-actions] review metadata cleanup failed before delete`,e)}}function gS(e,t){if(!px)return[];let n=[],r=new Set,i=[];if(t){let e=px.children.get(t);e&&(i.push([t,e]),r.add(t))}for(let e of px.children.entries())r.has(e[0])||i.push(e);for(let[t,r]of i){let i=r.getState();i.session.some(t=>t.id===e)&&(n.push({directory:t,sessions:i.session}),r.setState({session:i.session.filter(t=>t.id!==e)}))}return n}function _S(e){if(px)for(let t of e){let e=px.children.get(t.directory);e&&e.setState({session:t.sessions})}}function vS(e){$.getState().setWorktreeMetadata(e,null)}var yS=1e4,bS=new Map,xS=0;function SS(e){if(e.time?.archived===void 0)return e;let t={...e.time};return delete t.archived,{...e,time:t}}function CS(e){Y.getState().clearSessionsPendingDeletion([e.sessionId]),_S(e.listSnapshots),Xx(e.globalSnapshot),e.wasCurrent&&$.getState().setCurrentSession(e.sessionId,e.directory??null)}function wS(e,t){let n=t??$x(e);Y.getState().markSessionsPendingDeletion([e]);let r=gS(e,n),i=Yx(e);Y.getState().removeSessions([e]);let a=$.getState(),o=a.currentSessionId===e;return o&&a.setCurrentSession(null),{sessionId:e,directory:n,listSnapshots:r,globalSnapshot:i,wasCurrent:o}}async function TS(e,t){try{if(await hS(e,t),await z.deleteSession(e,t)!==!0)throw Error(`session.delete failed: server did not confirm deletion`);return gS(e,t),Y.getState().removeSessions([e]),vS(e),Y.getState().clearSessionsPendingDeletion([e]),!0}catch(n){return console.error(`[session-actions] commitRemovedSessionDelete failed`,n),n?.status===404&&(gS(e,t),Y.getState().removeSessions([e]),vS(e),Y.getState().clearSessionsPendingDeletion([e]),!0)}}async function ES(e,t){let n=wS(e);return await TS(e,n.directory)?!0:(CS(n),!1)}function DS(e,t){let n=Array.from(new Set(e.filter(Boolean)));if(n.length===0)return{batchId:``,scheduledIds:[]};let r=n.map(e=>wS(e)),i=`session-delete-${Date.now()}-${xS+=1}`,a=t?.delayMs??1e4,o=setTimeout(()=>{(async()=>{let e=bS.get(i);if(!e)return;bS.delete(i);let t=[],n=[];for(let r of e.entries)await TS(r.sessionId,r.directory)?t.push(r.sessionId):(n.push(r.sessionId),CS(r));e.onSettled?.({deletedIds:t,failedIds:n})})()},a);return bS.set(i,{entries:r,timer:o,onSettled:t?.onSettled}),{batchId:i,scheduledIds:n}}function OS(e){if(!e)return!1;let t=bS.get(e);if(!t)return!1;clearTimeout(t.timer),bS.delete(e);for(let e of[...t.entries].reverse())CS(e);return!0}async function kS(e){let t=$x(e),n=gS(e,t),r=Yx(e),i=Date.now();Y.getState().archiveSessions([e],i);let a=$.getState();a.currentSessionId===e&&a.setCurrentSession(null);try{await hS(e,t);let n=await z.updateSession(e,{time:{archived:i}},t);if(!n)throw Error(`session.update failed: server did not return the archived session`);return Y.getState().upsertSession(n),!0}catch(e){return console.error(`[session-actions] archiveSession failed`,e),_S(n),Xx(r),!1}}async function AS(e){let t=$x(e),n=Yx(e),r=n?SS(n):null;if(r&&(Y.getState().upsertSession(r),t&&px)){let e=px.children.get(t);e&&Zx(e,r)}try{let n=await z.updateSession(e,{time:{archived:0}},t);if(!n)throw Error(`session.update failed: server did not return the unarchived session`);let r=SS(n);if(Y.getState().upsertSession(r),t&&px){let e=px.children.get(t);e?Zx(e,r):Ix(r,t)}else Ix(r,t);return!0}catch(r){return console.error(`[session-actions] unarchiveSession failed`,r),n&&(Y.getState().upsertSession(n),n.time?.archived&&gS(e,t)),!1}}async function jS(e,t){let n=$x(e),r=Yx(e),i=r?.metadata??{},a=i.openchamber&&typeof i.openchamber==`object`?i.openchamber:{},o=a.titleRefresh&&typeof a.titleRefresh==`object`?a.titleRefresh:{},s=r?Xf(r):0,c=await z.updateSession(e,{title:t,metadata:{...i,openchamber:{...a,titleRefresh:{...o,activityUpdatedAt:s}}}},n);Y.getState().upsertSession(c),Ix(c,n)}async function MS(e){let t=$x(e),n=Yx(e),r=n?.metadata??{},i=r.openchamber&&typeof r.openchamber==`object`?r.openchamber:{},a=i.titleRefresh&&typeof i.titleRefresh==`object`?i.titleRefresh:{},o=typeof n?.title==`string`&&n.title.trim()?n.title.trim():typeof a.lastAutoTitle==`string`?a.lastAutoTitle:void 0,s=await z.updateSession(e,{metadata:{...r,openchamber:{...i,titleRefresh:{...a,...o?{lastAutoTitle:o}:{},requestedAt:Date.now()}}}},t);Y.getState().upsertSession(s),Ix(s,t)}async function NS(e){let t=$x(e),n=sp(Sx(await Ex().session.share({sessionID:e,directory:t}),`session.share`));return Y.getState().upsertSession(n),Fx(n,t),n}async function PS(e){let t=$x(e),n=sp(Sx(await Ex().session.unshare({sessionID:e,directory:t}),`session.unshare`));return Y.getState().upsertSession(n),Fx(n,t),n}function FS(e){let t=px,n=e??mx();if(!t||!n)return{store:e?Ox(e):Dx(),isCurrent:()=>!0};let r=t,i=r.captureChild?.(n);if(i&&r.isCurrentChildCapture)return{store:i.store,isCurrent:()=>r.isCurrentChildCapture?.(i)===!0};let a=t.ensureChild(n);return{store:a,isCurrent:()=>t.getChild(n)===a}}function IS(){return{identity:r(),generation:s()}}function LS(e,t){return e.isCurrent()&&r()===t.identity&&s()===t.generation}function RS(e,t){if(!LS(e,t))throw Error(`Send target changed before transport dispatch`)}function zS(e){if(!gx||!_x)throw new Bx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));try{let t=e.directory??Lx()??null,n=FS(t),r=IS();RS(n,r),e.beforeOptimisticInsert?.(),RS(n,r);let i=e.messageID??ge(`msg`);return e.onMessageID?.(i),$.getState().markMessageSending?.(e.sessionId,i),WS({sessionId:e.sessionId,messageID:i,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.parts}),e.onOptimisticInsert?.(),{messageID:i,sessionId:e.sessionId,directory:t,capture:n,transport:r}}catch(e){throw e instanceof Bx?e:new Bx(Vx(e)??Ux(e,!1),e)}}function BS(e){if(!LS(e.capture,e.transport)||!_x)return;_x({sessionID:e.sessionId,directory:e.directory,messageID:e.messageID});let t=e.capture.store.getState(),n=Date.now();e.capture.store.setState({session_status:{...t.session_status,[e.sessionId]:{type:`idle`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:n}})}function VS(e){BS(e),$.getState().clearMessageSending?.(e.sessionId,e.messageID)}async function HS(e){if(!gx||!_x)throw new Bx(`pre-dispatch`,Error(`Optimistic refs not set — is useSync() mounted?`));let{ticket:t}=e,{capture:n,transport:r,messageID:i,sessionId:a,directory:o}=t,s=!1;try{if(await qx(),RS(n,r),s=!0,await Jx(e.send(i)),!LS(n,r))throw new Bx(`ambiguous-dispatched`,Error(`Send target changed after transport dispatch`),i);e.onSendConfirmed?.(i)}catch(c){let l=Vx(c)??Ux(c,s),u=c instanceof Bx?c:new Bx(l,c,i);if(!LS(n,r))throw u;let d=l===`ambiguous-dispatched`&&!e.preserveOptimisticOnAmbiguous?await KS(a,i,o):null;if(d&&LS(n,r)){qS(n.store,a,i,d,{directory:o??void 0}),vx?.({sessionID:a,directory:o,messageID:i});return}throw e.preserveOptimisticOnAmbiguous&&l===`ambiguous-dispatched`||BS(t),u}finally{$.getState().clearMessageSending?.(a,i)}}async function US(e){await HS({ticket:e.ticket??zS({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:e.directory,files:e.files,parts:e.parts,messageID:e.messageID,onOptimisticInsert:e.onOptimisticInsert,onMessageID:e.onMessageID,beforeOptimisticInsert:e.beforeOptimisticInsert}),preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:e.onSendConfirmed,send:e.send})}function WS(e){if(!gx)return!1;let t=e.directory??Lx(),n=t?Ox(t):Dx(),i=t??Lx()??``;if(ZS(n,e.sessionId,e.messageID,i)){let t=n.getState(),r=Date.now();return n.setState({session_status:{...t.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.sessionId]:r}}),!1}let a=e.parts?e.parts.map(t=>({...t,id:typeof t.id==`string`&&t.id?t.id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0})):[{id:ge(`prt`),type:`text`,text:e.content,messageID:e.messageID,sessionID:e.sessionId,__openchamberOptimistic:!0}];if(!e.parts&&e.files)for(let t of e.files)a.push({id:ge(`prt`),messageID:e.messageID,sessionID:e.sessionId,type:`file`,mime:t.mime,url:t.url,filename:t.filename,__openchamberOptimistic:!0});let o=Date.now(),c={id:e.messageID,role:`user`,sessionID:e.sessionId,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:o,completed:0}},l=Mv(()=>jx(e.sessionId,t).data);gx({sessionID:e.sessionId,directory:t,message:c,parts:a});let u=Mv(()=>jx(e.sessionId,t).data);try{l&&u&&Nv({trigger:`user-send`,sessionID:e.sessionId,directory:i,transport:r(),generation:s(),before:l,after:u})}catch{}let d=n.getState();return n.setState({session_status:{...d.session_status,[e.sessionId]:{type:`busy`}},session_status_observed_at:{...d.session_status_observed_at,[e.sessionId]:o}}),!0}function GS(e){if(!e)return!0;try{return e()===!0}catch{return!1}}async function KS(e,t,n,r){let i=r?.signal||r?.timeoutMs!==void 0?new AbortController:null,a=()=>i?.abort();r?.signal?.addEventListener(`abort`,a,{once:!0}),r?.signal?.aborted&&i?.abort();let o=r?.timeoutMs===void 0?void 0:setTimeout(()=>i?.abort(),Math.max(0,r.timeoutMs)),s=r?.attempts??Zb,c=r?.retryDelayMs??Qb;try{for(let a=0;a<s;a+=1){if(i?.signal.aborted||!GS(r?.isCurrent)||a>0&&(await yx(c),i?.signal.aborted||!GS(r?.isCurrent)))return null;try{let a=await Ex().session.messages({sessionID:e,directory:n??void 0,limit:$m(),...i?{signal:i.signal}:{}});if(!GS(r?.isCurrent))return null;let o=(xx(a,`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.some(e=>e.info.id===t))return o}catch{}}return null}finally{o&&clearTimeout(o),r?.signal?.removeEventListener(`abort`,a)}}function qS(e,t,n,r,i){if(!r.length)return;let a=i?.directory??$x(t)??mx(),o=U(a,t),s={type:`materialize-snapshots`,records:r.map(e=>({info:lp(e.info),parts:e.parts??[]})),skipPartTypes:$b,merge:i?.gapFillOnly===!0?Ys:Zs({purpose:`recovery`})};xu(o,s)||yu(a,e).apply(o,s)}var JS=2e3,YS={attempts:12,retryDelayMs:500},XS={presenceGraceMs:JS,recovery:{...YS}};function ZS(e,t,n,r){let i=r??$x(t)??mx()??``,a=H()??yu(i,e),o=U(i,t);return a.getMessage(o,n)?a.getParts(o,n).length>0:!1}function QS(e,t,n,r){let i=r?.directory??$x(t)??mx()??``;if(ZS(e,t,n,i))return Promise.resolve(!0);if(!GS(r?.isCurrent))return Promise.resolve(!1);let a=r?.timeoutMs??2e3;return new Promise(o=>{let s=!1,c={},l=e=>{s||(s=!0,clearTimeout(u),c.unsubscribe?.(),o(e))},u=setTimeout(()=>l(!1),a),d=H()??yu(i,e),f=U(i,t);c.unsubscribe=d.subscribe(f,()=>{if(!GS(r?.isCurrent)){l(!1);return}ZS(e,t,n,i)&&l(!0)}),ZS(e,t,n,i)&&l(!0)})}async function $S(e){let{store:t,sessionId:n,messageID:r,directory:i,isCurrent:a}=e;if(await QS(t,n,r,{timeoutMs:e.graceMs??XS.presenceGraceMs,isCurrent:a,directory:i}))return`present`;if(!GS(a))return`cancelled`;let o=await KS(n,r,i,{...XS.recovery,isCurrent:a});return o?GS(a)?(qS(t,n,r,o,{gapFillOnly:!0,directory:i??void 0}),`recovered`):`cancelled`:GS(a)?`missing`:`cancelled`}async function eC(e){let{store:t,directory:n}=kx(e),i=n?{state:`bound`,transportIdentity:r(),directory:n,sessionID:e}:null,a=i?$.getState().beginQueueAbortBlock(i):null;try{if(Sx(await Ex().session.abort({sessionID:e,directory:n}),`session.abort`)!==!0)throw Error(`Session abort failed`);let r=t.getState();t.setState({session_status:{...r.session_status,[e]:{type:`idle`}},session_status_observed_at:{...r.session_status_observed_at,[e]:Date.now()}})}catch(t){i&&a&&$.getState().clearQueueAbortBlock(i,a),et(async()=>{let{rollbackQueueAbortOptimistic:e}=await Promise.resolve().then(()=>YB);return{rollbackQueueAbortOptimistic:e}},void 0).then(({rollbackQueueAbortOptimistic:t})=>{t(e)}).catch(()=>{}),console.error(`[session-actions] abort failed`,t)}}async function tC(e,t,n){await qx();let r=lS(`permission`,e,t)||$x(e)||Lx();if(Sx(await fS(`permission`,e,t).permission.reply({requestID:t,reply:n,...r?{directory:r}:{}}),`permission.reply`)!==!0)throw Error(`Permission reply failed`)}async function nC(e,t,n){await qx();let r=lS(`question`,e,t)||$x(e)||Lx();try{let i=n.length===0?[]:Array.isArray(n[0])?n:[n];if(Sx(await fS(`question`,e,t).question.reply({requestID:t,answers:i,...r?{directory:r}:{}}),`question.reply`)!==!0)throw Error(`Question reply failed`)}catch(n){throw uS(n)&&dS(e,t),n}}async function rC(e,t){await qx();let n=lS(`question`,e,t)||$x(e)||Lx();try{if(Sx(await fS(`question`,e,t).question.reject({requestID:t,...n?{directory:n}:{}}),`question.reject`)!==!0)throw Error(`Question rejection failed`)}catch(n){throw uS(n)&&dS(e,t),n}}async function iC(e){if(!e)return!1;let t=px;if(!t)return!1;let n=[];for(let[,r]of t.children){let t=r.getState(),i=Kp(t.session,e);if(i.size===0)continue;let a=t.question??{};for(let e of i){let t=a[e];if(t)for(let r of t)n.push({sessionId:e,requestId:r.id})}}if(n.length===0)return!1;for(let{sessionId:e,requestId:t}of n)dS(e,t);return await Promise.all(n.map(async({sessionId:e,requestId:t})=>{try{await rC(e,t)}catch(e){if(uS(e))return;console.error(`[session-actions] Failed to dismiss open question on send:`,e)}})),!0}async function aC(e,t,n){let i=typeof n==`string`?n:n?.directory,a=typeof n==`string`?void 0:n?.draftKey,o=typeof n==`string`||n?.restorePrimaryInput!==!1,s=a!==null&&(a!==void 0||o);return ub(e,i??(()=>{try{return kx(e,i).directory}catch{return i}})(),async({isCurrent:n})=>{let{store:o,directory:c}=kx(e,i);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=o.getState().session_status[e];if(l&&l.type!==`idle`){try{await Ex().session.abort({sessionID:e,directory:c})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let u=Mx(e,c).find(e=>e.id===t),d=Mx(e,c).find(e=>e.id===t)??u;if(!d||d.role!==`user`)throw Error(`The selected user message is unavailable`);let{repository:f,directory:p}=Ax(e,c),m=[...f.getParts(U(p,e),t)],h=a===void 0?s?C({transportIdentity:r()},e):null:a,g={snapshot:{text:``,attachments:[],syntheticParts:[],mentions:[]},values:new Map},_,v;if(h){try{m=await sS({directory:p,sessionID:e,messageID:t,parts:m,isCurrent:n}),g=await fm(m,{sessionTitles:rS(),directory:c})}catch(e){throw e instanceof Error&&(e.message.startsWith(`composer-restoration-materialize-failed`)||e.message===`composer-restoration-incomplete-attachment`||e.message.includes(`runtime changed`))?e:Error(`composer-restoration-invalid-payload`)}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let y=o.getState(),b=y.session.find(t=>t.id===e)?.revert,x=[...y.session],S=x.findIndex(t=>t.id===e),w={};if(S>=0&&(x[S]={...x[S],revert:{messageID:t}},w.session=x),!n())throw Error(`Session history mutation aborted because the runtime changed`);if(o.setState(w),h){let t=Or.getState(),r=await _m({key:h,expectedRevision:t.getDraft(h)?.revision??`absent`,payload:g,runtime:t.captureDraftRuntime()});if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),r.status===`committed`&&r.current&&r.previous&&r.result?.record?.revision!==void 0&&await ym({key:h,restoredRevision:r.result.record.revision,previous:r.previous}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}if(v=r.previous,r.status!==`committed`||!r.current){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),Error(`composer-restoration-commit-${r.status}`)}_=r.result?.record?.revision}try{let r=await z.revertSession(e,t,void 0,c);if(!n()){let t=[...o.getState().session],n=t.findIndex(t=>t.id===e);throw n>=0&&(t[n]={...t[n],revert:b}),o.setState({session:t}),h&&v&&_!==void 0&&await ym({key:h,restoredRevision:_,previous:v}).catch(()=>void 0),Error(`Session history mutation aborted because the runtime changed`)}let i=[...o.getState().session],a=i.findIndex(t=>t.id===e);return a>=0&&(i[a]=r,o.setState({session:i})),c&&hb.requestGitRefresh({directory:c}),g}catch(t){let r=[...o.getState().session],i=r.findIndex(t=>t.id===e);throw i>=0&&(r[i]={...r[i],revert:b}),n()?(o.setState({session:r}),h&&v&&_!==void 0&&await ym({key:h,restoredRevision:_,previous:v})):t instanceof Error&&t.message.includes(`runtime changed`)||(o.setState({session:r}),h&&v&&_!==void 0&&await ym({key:h,restoredRevision:_,previous:v}).catch(()=>void 0)),t}})}function oC(e,t,n,i){let a=i??$x(t)??mx(),o=U(a,t),c=Mv(()=>jx(t,a).data),l=[...bu(t)];l.some(e=>e.directory===a&&e.sessionID===t)||l.push(o);let u=!1;for(let e of l)xu(e,{type:`remove-message`,messageID:n})!=null&&(u=!0);u||yu(a,e).apply(o,{type:`remove-message`,messageID:n});let d=Mv(()=>jx(t,a).data);try{c&&d&&Nv({trigger:`user-delete`,sessionID:t,directory:a,transport:r(),generation:s(),before:c,after:d})}catch{}}async function sC(e,t,n,i){let a=n?.info,o=n?.parts,s=i?.directory,c;if(n){let r=n.info;if(r.id!==t||r.sessionID!==e||r.role!==`user`)throw Error(`The selected user message is unavailable`);c=kx(e,s).directory}else{c=kx(e,s).directory;let{data:n}=jx(e,c),r=Gu(n),i=r.findIndex(e=>e.id===t),l=i>=0?r[i]:void 0;if(!l||l.role!==`user`)throw Error(`The selected user message is unavailable`);a=l,o=Object.prototype.hasOwnProperty.call(n.partsByMessageID,t)?[...n.partsByMessageID[t]??[]]:void 0}if(!a||n&&o===void 0)throw Error(`The selected user message is unavailable`);let l=i?.draftKey??C({transportIdentity:r()},e),{commit:u}=await cS({key:l,parts:await sS({directory:c,sessionID:e,messageID:t,parts:o??[]}),directory:c});if(u.status!==`committed`||!u.current)throw Error(`composer-restoration-commit-${u.status}`);let d=u.result?.record?.revision,f=u.previous;return d===void 0||!f?{rollback:async()=>({status:`skipped`})}:{rollback:async()=>({status:(await ym({key:l,restoredRevision:d,previous:f})).status})}}function cC(e,t,n,r){let i=t.findIndex(t=>t.id===e),a=i>=0?t[i]:void 0;if(!a||a.role!==`user`||!n.has(e))throw Error(`The selected user message is unavailable`);let o=r?.preserveMessageId,s=o?t.findIndex(e=>e.id===o):-1,c=s>i?s:t.length;return t.slice(i,c).filter(e=>!(!n.has(e.id)||o&&e.id===o))}async function lC(e,t){let n=t?.directory,{store:r,directory:i}=kx(e,n),a=r.getState().session_status[e];if(!(!a||a.type===`idle`))try{await Ex().session.abort({sessionID:e,directory:i})}catch{}}async function uC(e,t){let n=t?.directory,r=t?.timeoutMs??15e3,i=t?.intervalMs??100,{store:a}=kx(e,n),o=Date.now()+r;for(;Date.now()<o;){let t=a.getState().session_status[e];if(!t||t.type===`idle`)return;await new Promise(e=>setTimeout(e,i))}let s=a.getState().session_status[e];if(!(!s||s.type===`idle`))throw Error(`Session is still busy after waiting to edit: ${e}`)}async function dC(e,t,n){let i=n?.directory,a=n?.preserveMessageId??$.getState().pendingSendMessageIDs.get(e),{store:o,directory:c}=kx(e,i),l=Mv(()=>jx(e,i).data);try{await lC(e,{directory:i}),await uC(e,{directory:i});let n=new Set((await fC(e,i)).map(e=>e.id)),r=cC(t,Mx(e,i),n,{preserveMessageId:a});for(let t of[...r].reverse())await z.deleteSessionMessage(e,t.id,c),oC(o,e,t.id,c)}finally{try{let t=Mv(()=>jx(e,i).data);l&&t&&Nv({trigger:`user-edit`,sessionID:e,directory:c,transport:r(),generation:s(),before:l,after:t})}catch{}}}async function fC(e,t){let{directory:n}=kx(e,t);return(xx(await Ex().session.messages({sessionID:e,directory:n,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id).map(e=>lp(e.info))}async function pC(e,t){let{store:n,directory:i}=kx(e,t),a=Mv(()=>jx(e,t).data),o=(xx(await Ex().session.messages({sessionID:e,directory:i,limit:Qm()}),`session.messages`)??[]).filter(e=>!!e?.info?.id);if(o.length===0){try{let n=Mv(()=>jx(e,t).data);a&&n&&Nv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return[]}let c=o.map(e=>({info:lp(e.info),parts:e.parts??[]})),l=U(i??mx(),e);xu(l,{type:`materialize-snapshots`,records:c,skipPartTypes:$b})||yu(i??mx(),n).apply(l,{type:`materialize-snapshots`,records:c,skipPartTypes:$b});try{let n=Mv(()=>jx(e,t).data);a&&n&&Nv({trigger:`materialize`,sessionID:e,directory:i,transport:r(),generation:s(),purpose:`refetch`,before:a,after:n})}catch{}return c.map(e=>e.info)}async function mC(e,t){return ub(e,t??(()=>{try{return kx(e,t).directory}catch{return t}})(),async({isCurrent:n})=>{let{store:r,directory:i}=kx(e,t);if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let a=r.getState(),o=Nx(e,i),s=a.session_status[e];if(s&&s.type!==`idle`){try{await Ex().session.abort({sessionID:e,directory:i})}catch{}if(!n())throw Error(`Session history mutation aborted because the runtime changed`)}let c=await Ex().session.unrevert({sessionID:e,directory:i});if(!n())throw Error(`Session history mutation aborted because the runtime changed`);let l=Sx(c,`session.unrevert`),u=[...r.getState().session],d=u.findIndex(t=>t.id===e);d>=0&&(u[d]=l,r.setState({session:u}));for(let r=0;r<ex;r+=1){if(r>0&&(await yx(tx),!n())||(await pC(e,t),!n()))throw Error(`Session history mutation aborted because the runtime changed`);if(Nx(e,i)>o)return}if(Nx(e,i)<=o){let n=i??mx(),a=H()??yu(n,r),o=U(n,e);typeof a.destructiveReset==`function`?await a.destructiveReset(o):await pC(e,t)}})}async function hC(e,t,n,r){let a=i(),{store:o,directory:s}=kx(e,r);if(!s)throw Error(`Fork session directory is unavailable`);let c=await Qx(e,o,s);Ed(e,s);let l=o.getState(),u=l.session_status[e],d=Mx(e,s);u?.type,d.length;let f=lx(n,d,u);if(!n&&l.session_status[e]?.type!==`idle`&&!f&&(await pC(e),l=o.getState(),u=l.session_status[e],d=Mx(e,s),f=lx(void 0,d,u)),!n&&l.session_status[e]?.type!==`idle`&&!f)throw console.error(`[session-fork] active session has no user message fork point`,{operationId:t,sessionId:e,statusType:l.session_status[e]?.type??`unknown`,messageCount:Nx(e,s)}),Error(`Fork source user message is unavailable`);l.session_status[e]?.type;let{repository:p,data:m}=jx(e,s),h=(n?m.messagesByID[n]??d.find(e=>e.id===n):void 0)?.role===`user`,g=h&&n?[...p.getParts(U(s,e),n)]:[],_=``;_=g.filter(e=>e.type===`text`&&!Zp(e)).map(e=>e.text||e.content||``).join(`
|
|
462
|
+
`).trim();let v=g.filter(e=>e.type===`file`&&!Zp(e));nx={operationId:t,runtimeKey:a,directory:s,sourceSessionID:e,expectedTargetTitle:ox(c.title)},await sx(t,`copying`);let y;try{if(y=await z.forkSession(e,f,s),y.id,i()!==a)return console.warn(`[session-fork] runtime changed while fork was in progress`,{operationId:t,sessionId:e,forkedSessionId:y.id}),nx?.operationId===t&&(nx=null),!1;await sx(t,`opening`);try{y=await ux(y,s)}catch(e){console.warn(`[session-actions] failed to promote forked session`,e)}}catch(e){throw nx?.operationId===t&&(nx=null),e}try{let r=[...o.getState().session],a=ls.search(r,y.id,e=>e.id);a.found||(r.splice(a.index,0,y),o.setState({session:r}));let c=U(s,y.id),l=H();l&&typeof l.destructiveReset==`function`?await l.destructiveReset(c):xu(c,{type:`reset`}),cx(t,y.id);let u=$.getState().currentSessionId,d=u===e||u===y.id;d&&$.getState().setCurrentSession(y.id,s),await sx(t,`loading`),y.id;let f=H()??yu(s,o),p=U(s,y.id),m=f.getRequestState?.(p);(!(f.hasSession?.(p)??!1)||m?.status===`error`)&&await _C(y.id,s);let g=Mx(y.id,s).at(-1)?.id;g&&rx.set(`${i()}:${s}:${y.id}`,{messageID:g,expiresAt:Date.now()+ix}),d&&h&&_&&Or.setState({pendingInputText:_,pendingInputMode:`replace`}),d&&h&&n&&nS(v)}finally{nx?.operationId===t&&(nx=null)}return y.id,!0}var gC=new Map;async function _C(e,t){let n=t??Lx();if(!n)return;let r=i(),a=Zm(),o=`${r}:${n}:${e}:${a}`;if(!fx||!px){hx.set(o,{sessionID:e,directory:n});return}let s=gC.get(o);if(s)return s;let c=vC(e,n,r,a).finally(()=>{gC.get(o)===c&&gC.delete(o)});return gC.set(o,c),c}async function vC(e,t,n,r){Ex();let i=Ox(t),a=i.getState(),o=a.session_status?.[e],s=a.session_status_observed_at?.[e],c=H()??yu(t,i),l=U(t,e),u=c.getTranscript(l),d=c.getPagination(l),f=c.getRequestState?.(l),p=e=>e.role===`user`||e.clientRole===`user`,m=u.messageOrder.map(e=>u.messagesByID[e]).filter(e=>!!e),h=m.some(p),g=d.boundary,_=g.kind===`has-more`||g.kind===`exhausted`,v=(c.hasSession?.(l)??m.length>0)&&(h||g.kind===`exhausted`)&&_&&f?.status!==`error`,y=()=>$.getState().currentSessionId!==e;if(v){if(Im(t,e)){Yb({directory:t,sessionID:e,store:i,transcript:u});return}if(H()){try{await Cu(t,e)}catch{return}if(y())return;Yb({directory:t,sessionID:e,store:i,isStale:y}),await Nb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:c.getTranscript(l).messageOrder.length>0});return}Yb({directory:t,sessionID:e,store:i,transcript:u});return}let b=0;try{let n=await ab({directory:t,sessionID:e,limit:r,signal:AbortSignal.timeout(3e4),purpose:`initial`});if(y())return;c.apply(l,{type:`http-page`,purpose:`initial`,page:n,skipPartTypes:$b}),b=n.records.length,Lm(t,e)}catch{return}y()||(Yb({directory:t,sessionID:e,store:i,isStale:y}),await Nb({directory:t,sessionID:e,store:i,statusBeforePull:o,statusObservedAtBeforePull:s,hasMessages:b>0}))}var yC=new Map,bC=e=>{yC.set(e,(yC.get(e)??0)+1)},xC=e=>(yC.get(e)??0)>0,SC=e=>{let t=yC.get(e)??0;return t<=0?!1:(t===1?yC.delete(e):yC.set(e,t-1),!0)},CC=18e4,wC=400,TC=300,EC=15,DC=`FINAL_REVIEW_STATUS: no_remaining_findings`,OC=DC.toLowerCase(),kC=new Set,AC=new Set,jC=e=>{let t=e.finish;if(typeof t==`string`&&t.length>0)return!0;let n=e.time?.completed;return typeof n==`number`&&n>0},MC=e=>{let t=e.time?.created;return typeof t==`number`&&Number.isFinite(t)?t:0},NC=e=>{let t=e.role;return typeof t==`string`?t:``},PC=e=>{let t=e.parentID;return typeof t==`string`&&t.trim().length>0?t:null},FC=(e,t)=>Ld(e.id,t).some(e=>{let t=e.type;if(t===`compaction`)return!0;if(t!==`text`)return!1;let n=e.text;return typeof n==`string`&&n.trim()===`/compact`}),IC=(e,t,n,r=0,i)=>{let a=Id(e,t),o=new Set;for(let e of a)FC(e,t)&&o.add(e.id);for(let e=a.length-1;e>=0;--e){let s=a[e];if(s.id===n)return null;if(NC(s)!==`assistant`||!jC(s)||MC(s)<r-1e3)continue;let c=PC(s);if(!WC(s,i)||c&&o.has(c))continue;let l=Fp(Ld(s.id,t)).trim();if(l)return{id:s.id,text:l}}return null},LC=(e,t)=>Rd(e,t)?.type===`idle`,RC=e=>e===i(),zC=e=>{Gp.getState().updateRun(e.originalSessionID,e=>({...e,status:`stopped`,error:`Auto-review stopped because the runtime changed.`}))},BC=e=>{if(e&&!RC(e))throw Error(`Auto-review stopped because the runtime changed.`)},VC=e=>(e instanceof Error?e.message:String(e)).includes(`runtime changed`),HC=e=>e.trim().split(`
|
|
463
|
+
`).map(e=>e.trim()).filter(Boolean).at(-1)?.toLowerCase()===OC,UC=e=>{let t=e.trimEnd().split(`
|
|
464
|
+
`);for(;t.length>0&&t[t.length-1].trim()===``;)t.pop();return t.at(-1)?.trim().toLowerCase()===OC&&t.pop(),t.join(`
|
|
465
|
+
`).trim()},WC=(e,t)=>!t||PC(e)===t,GC=(e,t)=>[e.runtimeKey,e.originalSessionID,e.phase,e.expectedAssistantParentID??``,t].join(`:`),KC=(e,t)=>{let n=GC(e,t);return AC.has(n)?null:(AC.add(n),n)},qC=e=>{AC.delete(e)},JC=()=>[{synthetic:!0,text:`This review is part of an automatic review loop. If there are no remaining issues, end your response with this exact final line:\n${DC}\nIf you found issues that require changes, do not include that final status line.`}],YC=async e=>{for(;;){let t=Gp.getState().runsByOriginalSessionID[e];if(!t||t.status!==`running`)return;if(!RC(t.runtimeKey)){zC(t);return}let n=t.phase===`waiting_for_reviewer`?t.reviewSessionID:t.originalSessionID;if(!LC(n,t.directory)){await new Promise(e=>setTimeout(e,TC));continue}let r=IC(n,t.directory,t.lastForwardedMessageID,t.waitAfterCreatedAt,t.expectedAssistantParentID);if(!r){await new Promise(e=>setTimeout(e,TC));continue}if(t.phase===`waiting_for_reviewer`){let e=KC(t,r.id);if(!e){await new Promise(e=>setTimeout(e,TC));continue}if(!RC(t.runtimeKey)){qC(e),zC(t);return}try{let e=Date.now(),n=HC(r.text),i=n?UC(r.text):r.text,a=await sw(t.reviewSessionID,t.directory,i,t.runtimeKey);if(n){Gp.getState().completeRun(t.originalSessionID);return}Gp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_implementer`,lastForwardedMessageID:r.id,expectedAssistantParentID:a,waitAfterCreatedAt:e}))}finally{qC(e)}}else{if(t.iteration>=t.maxIterations){Gp.getState().stopRun(t.originalSessionID);return}let e=KC(t,r.id);if(!e){await new Promise(e=>setTimeout(e,TC));continue}if(!RC(t.runtimeKey)){qC(e),zC(t);return}try{let e=Date.now(),n=await cw(t.originalSessionID,t.directory,r.text,!0,t.runtimeKey);Gp.getState().updateRun(t.originalSessionID,t=>({...t,phase:`waiting_for_reviewer`,iteration:t.iteration+1,lastForwardedMessageID:r.id,expectedAssistantParentID:n,waitAfterCreatedAt:e}))}finally{qC(e)}}}},XC=e=>{Gp.getState().upsertRun(e),ZC(e.originalSessionID)},ZC=e=>{let t=Gp.getState().runsByOriginalSessionID[e];!t||t.status!==`running`||!RC(t.runtimeKey)||kC.has(e)||(kC.add(e),YC(t.originalSessionID).catch(e=>{console.error(`[review-flow] auto-review loop failed`,e),Gp.getState().updateRun(t.originalSessionID,t=>({...t,status:VC(e)?`stopped`:`error`,error:e instanceof Error?e.message:String(e)}))}).finally(()=>{kC.delete(e)}))},QC=async(e,t,n)=>{let r=Date.now()+CC;for(;Date.now()<r;){let r=Id(e,t).filter(e=>NC(e)===`assistant`).filter(e=>MC(e)>=n-1e3).filter(jC).sort((e,t)=>MC(t)-MC(e));for(let e of r){let n=Fp(Ld(e.id,t)).trim();if(n)return n}await new Promise(e=>setTimeout(e,wC))}throw Error(`Timed out waiting for handoff response`)},$C=e=>{let t=Jo.getState(),n=G.getState(),r=$.getState().getLastUserChoice(e),i=r?.agent||t.getSessionAgentSelection(e)||n.currentAgentName||void 0,a=t.getSessionModelSelection(e),o=i?t.getAgentModelForSession(e,i):null,s=r?.providerID&&r.modelID?{providerId:r.providerID,modelId:r.modelID}:null,c=s||o||a||(n.currentProviderId&&n.currentModelId?{providerId:n.currentProviderId,modelId:n.currentModelId}:null);if(!c?.providerId||!c?.modelId)return null;if(s)return{providerID:s.providerId,modelID:s.modelId,agent:i,variant:r?.variant};let l=i?t.getAgentModelVariantForSession(e,i,c.providerId,c.modelId):void 0,u=n.currentProviderId===c.providerId&&n.currentModelId===c.modelId?n.currentVariant:void 0;return{providerID:c.providerId,modelID:c.modelId,agent:i,variant:l||u||void 0}},ew=async(e,t,n,r,i,a)=>{BC(a);let o=r??$C(e);if(!o)throw Error(`Select a model before sending review flow messages`);let s=Jo.getState();s.saveSessionModelSelection(e,o.providerID,o.modelID),o.agent&&(s.saveSessionAgentSelection(e,o.agent),s.saveAgentModelForSession(e,o.agent,o.providerID,o.modelID),s.saveAgentModelVariantForSession(e,o.agent,o.providerID,o.modelID,o.variant)),bC(e);let c=null;if(await US({sessionId:e,content:n,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,onMessageID:e=>{c=e},beforeOptimisticInsert:()=>BC(a),onOptimisticInsert:()=>tw(e),send:r=>(BC(a),z.sendMessage({id:e,directory:t,providerID:o.providerID,modelID:o.modelID,agent:o.agent,variant:o.variant,text:n,additionalParts:i,messageId:r}).then(()=>void 0))}),!c)throw Error(`Failed to prepare review flow message`);return c},tw=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:chat-force-scroll-bottom`,{detail:{sessionId:e}}))},nw=(e,t)=>{p.getState().openContextPanelTab(e,{mode:`chat`,dedupeKey:`session:${t.id}`,label:t.title??null,sessionTitleFallback:t.title??null})},rw=async(e,t)=>{try{return await z.getSession(e,t)}catch{return null}},iw=e=>`Review: ${e.title?.trim()||e.id}`,aw=async(e,t,n)=>{BC(n);let r=await z.getSession(e,t);BC(n);let i=zp(r);if(i){let r=await rw(i,t);if(BC(n),r&&Vp(r))return r;await mS(e,t,e=>{let t={...e},n=t.openchamber;if(n&&typeof n==`object`&&!Array.isArray(n)){let e={...n};delete e.reviewSessionID,t.openchamber=e}return t})}BC(n);let a=await z.createSession({title:iw(r),metadata:Up({},e)},t);BC(n),Ed(a.id,t);try{BC(n),await mS(e,t,e=>Hp(e,a.id))}catch(e){throw BC(n),await z.deleteSession(a.id,t).catch(e=>{console.warn(`[review-flow] failed to delete unlinked review session after link failure`,e)}),e}return Y.getState().upsertSession(a),a},ow=async e=>{await qx();let t=e.autoReview?i():void 0,n;if(e.generateHandoff??!0){let n=await jp(`session.reviewHandoff.visible`),r=await jp(`session.reviewHandoff.instructions`),a=Date.now();await ew(e.originalSessionID,e.directory,n,null,[{text:r,synthetic:!0}],t);let o=async()=>{let n=await QC(e.originalSessionID,e.directory,a);BC(t);let r=await jp(`session.reviewSession.visible`,{handoff:n}),o=await aw(e.originalSessionID,e.directory,t),s=t??i(),c=Date.now(),l=await ew(o.id,e.directory,r,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?JC():void 0,e.autoReview?s:void 0);e.autoReview&&XC({originalSessionID:e.originalSessionID,reviewSessionID:o.id,directory:e.directory,runtimeKey:s,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:EC,expectedAssistantParentID:l,waitAfterCreatedAt:c}),e.autoReview||nw(e.directory,o)};if(e.returnAfterHandoffRequest){o().catch(e=>{console.error(`[review-flow] failed to finish background review flow`,e)});return}await o();return}n=await jp(`session.reviewSessionWithoutHandoff.visible`);let r=await aw(e.originalSessionID,e.directory,t),a=t??i(),o=Date.now(),s=await ew(r.id,e.directory,n,{providerID:e.providerID,modelID:e.modelID,agent:e.agent,variant:e.variant},e.autoReview?JC():void 0,e.autoReview?a:void 0);e.autoReview&&XC({originalSessionID:e.originalSessionID,reviewSessionID:r.id,directory:e.directory,runtimeKey:a,status:`running`,phase:`waiting_for_reviewer`,iteration:0,maxIterations:EC,expectedAssistantParentID:s,waitAfterCreatedAt:o}),e.autoReview||nw(e.directory,r)},sw=async(e,t,n,r)=>{BC(r);let i=Bp(await z.getSession(e,t));if(!i)throw Error(`Original session is missing`);let a=await jp(`session.reviewFeedbackToImplementer.visible`,{review_feedback:n});return BC(r),ew(i,t,a,void 0,void 0,r)},cw=async(e,t,n,r=!1,i)=>{BC(i);let a=zp(await z.getSession(e,t));if(!a)throw Error(`Review session is missing`);let o;try{o=await z.getSession(a,t)}catch(n){throw BC(i),await mS(e,t,e=>Wp(e,a)),n}let s=await jp(`session.implementationResponseToReviewer.visible`,{implementation_response:n});BC(i);let c=await ew(a,t,s,void 0,r?JC():void 0,i);return r||nw(t,o),c},lw=e=>Vp(e)?`review-to-original`:zp(e)?`original-to-review`:null,uw=[0,250,500,1e3,2e3,2e3,2e3,2e3],dw=5e3,fw=(e=>{let t=new Map,n=new Set,r=new Map,i=new Map,a=0,o=e=>`${a}:${i.get(e)??0}`;return{waitUntilReady:i=>{if(n.has(i))return Promise.resolve();let a=t.get(i);if(a)return a;let s=e.now??Date.now,c=e.failureCooldownMs??dw,l=r.get(i);if(l!==void 0&&s()-l<c)return Promise.reject(Error(`OpenCode readiness is cooling down for runtime ${i}`));let u=e.retryDelaysMs??uw,d=o(i),f=(async()=>{for(let t of u){if(o(i)!==d||(t>0&&await e.wait(t),o(i)!==d))return;if(await e.probe(i)){o(i)===d&&(n.add(i),r.delete(i));return}}throw r.set(i,s()),Error(`OpenCode did not become ready for runtime ${i}`)})();return t.set(i,f),f.finally(()=>{t.get(i)===f&&t.delete(i)}).catch(()=>{}),f},reset:e=>{if(e){i.set(e,(i.get(e)??0)+1),t.delete(e),n.delete(e),r.delete(e);return}a+=1,t.clear(),n.clear(),r.clear()}}})({probe:()=>z.checkHealth(),wait:e=>new Promise(t=>setTimeout(t,e))}),pw=()=>fw.waitUntilReady(i()),mw=e=>{fw.reset(e)},hw=100,gw=1500,_w=async e=>{if(!e.ok)throw Error(`session index request failed (${e.status})`)},vw=e=>e.available!==!0||!Array.isArray(e.directories)?null:{revision:typeof e.revision==`number`?e.revision:0,sync:e.sync??{active:!1,completed:0,total:0,pendingDirectories:[],completedDirectories:[],failedDirectories:[],enriching:!1},directories:e.directories},yw,bw=async(e,t)=>{if(typeof window>`u`)return null;let n=e.trim();if(!n)return null;try{let e=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}`,{signal:t?.signal});if(e.status===404||e.status===501)return null;await _w(e);let r=await e.json();if(r.available!==!0||!r.session)return null;let i=typeof r.session.directory==`string`?r.session.directory.trim():``,a=typeof r.session.id==`string`?r.session.id:n;return i?{id:a,directory:i,title:typeof r.session.title==`string`?r.session.title:void 0,parentID:r.session.parentID??null}:null}catch{return null}},xw=async e=>{if(typeof window>`u`)return null;if(yw)return yw;let t=(async()=>{let t=await F(`/api/openchamber/session-index`,{signal:e?.signal});return t.status===501?null:(await _w(t),vw(await t.json()))})().finally(()=>{yw===t&&(yw=void 0)});return yw=t,t},Sw=async e=>{if(typeof window>`u`)return null;let t=await F(`/api/openchamber/session-index/sync`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});return t.status===501?null:(await _w(t),t.json())},Cw=(e,t,n)=>new Promise(r=>{if(t.aborted){r(`aborted`);return}let i=n?.safetyTimeoutMs===null?null:typeof n?.safetyTimeoutMs==`number`&&n.safetyTimeoutMs>0?n.safetyTimeoutMs:gw,a,o,s=e=>{a!==void 0&&clearTimeout(a),u!==void 0&&clearTimeout(u),d(),t.removeEventListener(`abort`,l),r(e)},c=e=>{o=e,a!==void 0&&clearTimeout(a),a=setTimeout(()=>{a=void 0,s(o??e)},hw)},l=()=>s(`aborted`),u=i===null?void 0:setTimeout(()=>s(`timeout`),i),d=Kt(t=>{if(t.type===`event-stream-ready`){c(`ready`);return}if(t.type===`session-index-changed`&&t.revision>e){c(`tip`);return}});t.addEventListener(`abort`,l,{once:!0})}),ww=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index pin requires a session id`);let r=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`POST`,signal:t?.signal});if(r.status===501)throw Error(`session index pin is unsupported`);await _w(r)},Tw=async(e,t)=>{let n=e.trim();if(!n)throw Error(`session index unpin requires a session id`);let r=await F(`/api/openchamber/session-index/session/${encodeURIComponent(n)}/pin`,{method:`DELETE`,signal:t?.signal});if(r.status===501)throw Error(`session index unpin is unsupported`);await _w(r)},Ew=async e=>{if(typeof window>`u`)return;let t=await F(`/api/openchamber/session-index/directory`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});t.status!==501&&await _w(t)},Dw=async e=>{if(typeof window>`u`||e.length===0)return;let t=await F(`/api/openchamber/session-index/snapshot`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({directories:e})});t.status!==501&&await _w(t)},Ow=1,kw=`oc.sessionIndexStartupCache`,Aw=1e6,jw=e=>!!e&&typeof e==`object`&&!Array.isArray(e),Mw=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),Nw=e=>!(!jw(e)||typeof e.active!=`boolean`||typeof e.completed!=`number`||!Number.isFinite(e.completed)||typeof e.total!=`number`||!Number.isFinite(e.total)||!Mw(e.pendingDirectories)||!Mw(e.completedDirectories)||!Mw(e.failedDirectories)||e.enriching!==void 0&&typeof e.enriching!=`boolean`),Pw=e=>jw(e)&&typeof e.id==`string`&&e.id.length>0&&typeof e.title==`string`&&typeof e.directory==`string`&&e.directory.length>0&&jw(e.time)&&typeof e.time.created==`number`&&Number.isFinite(e.time.created)&&typeof e.time.updated==`number`&&Number.isFinite(e.time.updated),Fw=e=>!jw(e)||typeof e.directory!=`string`||!e.directory.trim()||e.cursor!==null&&(typeof e.cursor!=`number`||!Number.isFinite(e.cursor))||typeof e.hasMore!=`boolean`||typeof e.lastSyncedAt!=`number`||!Number.isFinite(e.lastSyncedAt)||typeof e.lastFullSyncedAt!=`number`||!Number.isFinite(e.lastFullSyncedAt)||typeof e.lastAccessedAt!=`number`||!Number.isFinite(e.lastAccessedAt)?!1:Array.isArray(e.sessions)&&e.sessions.every(Pw),Iw=e=>!jw(e)||typeof e.revision!=`number`||!Number.isFinite(e.revision)||!Nw(e.sync)||!Array.isArray(e.directories)?!1:e.directories.every(Fw),Lw=e=>jw(e)&&e.version===Ow&&jw(e.entries),Rw=e=>{if(!e)return null;try{let t=JSON.parse(e);return Lw(t)?{version:Ow,entries:t.entries}:null}catch{return null}},zw=(e,t)=>{try{let n=JSON.stringify(t);if(n.length>Aw)return;e.setItem(kw,n)}catch{}},Bw=(e,t)=>{if(!e)return null;let n;try{n=t.getItem(kw)}catch{return null}let r=Rw(n);if(!r)return null;let i=r.entries[e];return Iw(i)?i:null},Vw=(e,t,n)=>{if(!e||!Iw(t))return;let r=null;try{r=n.getItem(kw)}catch{return}let i={...Rw(r)?.entries??{},[e]:t},a=Object.keys(i).slice(-8);zw(n,{version:Ow,entries:Object.fromEntries(a.map(e=>[e,i[e]]))})},Hw=(e,t)=>{let n=e?.identity===t.identity?e:null,r=t.content.trim().length>0,i=n?.appeared??!1,a=(n?.wasActive??!1)||t.isActive,o=t.content!==(n?.content??``);return{shouldEmit:t.mode===`appearance`?a&&r&&!i:a&&r&&o,nextState:{identity:t.identity,content:t.content,appeared:i||r,wasActive:a}}},Uw=(e,t)=>!e||t,Ww=(e=1e3)=>{let t=new Set,n=Math.max(1,Math.floor(e));return e=>{if(e.kind===`text`)return!0;let r=`${e.sessionID}\u0000${e.messageID}\u0000${e.partID}\u0000${e.kind}`;if(t.has(r))return!1;for(t.add(r);t.size>n;){let e=t.values().next().value;if(typeof e!=`string`)break;t.delete(e)}return!0}},Gw=new Set,Kw=()=>Gw.size>0,qw=e=>{for(let t of Gw)t(e)},Jw=e=>(Gw.add(e),()=>Gw.delete(e)),Yw=typeof window<`u`?W.useLayoutEffect:W.useEffect,Xw=Qe(`OpenChamberHaptics`),Zw=null,Qw=()=>(Zw??=$e.isPluginAvailable(`OpenChamberHaptics`),Zw);function $w(e){switch(e){case`medium`:return`impactMedium`;case`heavy`:return`impactHeavy`;default:return`impactLight`}}function eT(){return typeof window>`u`?!1:window.Capacitor?.isNativePlatform?.()===!0}function tT(){if(!eT())return!1;let e=window.Capacitor?.getPlatform?.();return e===`ios`||e===`android`}function nT(e){let{eventSessionId:t,currentSessionId:n,isForeground:r,isVisible:i}=e;return!n||t!==n?{shouldTrigger:!1,reason:`different-session`}:r?i?{shouldTrigger:!0,reason:`trigger`}:{shouldTrigger:!1,reason:`hidden`}:{shouldTrigger:!1,reason:`background`}}var rT=20,iT=750;function aT(e,t){return t-e>=rT}function oT(e,t){return t-e>=iT}function sT(e){return!e.thresholdReached&&e.available&&e.distance>=e.enterDistance?{thresholdReached:!0,event:`enter`}:e.thresholdReached&&(!e.available||e.distance<=e.cancelDistance)?{thresholdReached:!1,event:`cancel`}:{thresholdReached:e.thresholdReached,event:null}}var cT=-1/0;function lT(e=`light`,t){if(!tT()||!Qw()||document.visibilityState!==`visible`||!document.documentElement.classList.contains(`oc-native-app-active`))return!1;let n=Date.now();return!t?.bypassCadence&&!aT(cT,n)?!1:(cT=n,Xw[$w(e)]().catch(()=>void 0),!0)}var uT=`button, [role="button"], [role="menuitem"]`;function dT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],W.useEffect(fT,t)}function fT(){if(!tT())return;let e=pT;return document.addEventListener(`click`,e,!0),()=>document.removeEventListener(`click`,e,!0)}function pT(e){if(!e.isTrusted||!(e.target instanceof Element))return;let t=e.target.closest(uT);t&&(t.matches(`:disabled, [aria-disabled="true"], [data-mobile-press-feedback="none"]`)||lT(`light`))}function mT(){let e=(0,V.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],Yw(hT,t)}function hT(){if(!tT())return;let e=Ww(),t=qe()===`android`,n=-1/0;return Jw(r=>{if(!e(r))return;let i=$.getState().currentSessionId,a=document.documentElement.classList.contains(`oc-native-app-active`);if(nT({eventSessionId:r.sessionID,currentSessionId:i,isForeground:a,isVisible:document.visibilityState===`visible`}).shouldTrigger){if(t&&r.kind===`text`){let e=Date.now();if(!oT(n,e))return;lT()&&(n=e);return}lT()}})}var gT=async e=>{let t=await dt(e);t.ok||console.error(`Failed to copy to clipboard:`,t.error)},_T=e=>e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(_T).join(` `).trim():(0,W.isValidElement)(e)?_T(e.props?.children):``,vT=e=>typeof e==`function`?e():e,yT=(e,t)=>{let n=_T(vT(t?.description));return n.length>0?n:_T(e)},bT=Object.assign((...e)=>(lT(),lt(...e)),{...lt,success:(...e)=>{let[t,n]=e;return lT(),lt.success(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},info:(...e)=>{let[t,n]=e;return lT(),lt.info(t,{...n,action:n?.action||{label:`OK`,onClick:()=>{}}})},error:(...e)=>{let[t,n]=e;return lT(),lt.error(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>gT(yT(t,n))}})},warning:(...e)=>{let[t,n]=e;return lT(),lt.warning(t,{...n,action:n?.action||{label:`Copy`,onClick:()=>gT(yT(t,n))}})},loading:(...e)=>(lT(),lt.loading(...e)),custom:(...e)=>(lT(),lt.custom(...e)),promise:(...e)=>(lT(),lt.promise(...e))}),xT=new Set,ST,CT=xT,wT=null,TT=(e,t)=>pt(ft.getState().dictionary,e,t),ET=e=>{let t=e?.time?.pinned;return t!=null&&t!==``},DT=e=>{if(!e)return xT;let t=new Set;for(let n of e.directories)for(let e of n.sessions)ET(e)&&t.add(e.id);return t.size===0?xT:t},OT=(e,t)=>{if(e===t)return!0;if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0},kT=(e=L,t=r())=>{let n=BT(e,t);if(n===ST&&t===wT)return CT;let i=DT(n);return ST=n,wT=t,CT=OT(CT,i)?CT:i,CT},AT=(e,t,n)=>{let r=!1,i=e.directories.map(e=>{let i=!1,a=e.sessions.map(e=>{if(e.id!==t)return e;let a=e.time?.pinned??null;return(a==null||a===``?null:a)===n?e:(i=!0,r=!0,{...e,time:{...e.time,pinned:n}})});return i?{...e,sessions:a}:e});return r?{...e,directories:i}:e},jT=(e,t,n,r)=>{let i=BT(e,t);if(!i)return null;let a=AT(i,n,r?new Date().toISOString():null);return a!==i&&HT(a,{client:e,transport:t,persist:!1}),i},MT=e=>L.getQueryCache().subscribe(t=>{if(t.type!==`updated`&&t.type!==`removed`)return;let n=t.query.queryKey;!Array.isArray(n)||n[1]!==`sessionIndex`||n[2]!==`snapshot`||e()}),NT=()=>kT(),PT=()=>(0,W.useSyncExternalStore)(MT,NT,IT),FT=()=>{let e=(0,V.c)(6),t=it(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`sessionIndex`,`pin`],e[0]=n):n=e[0];let i;e[1]===t?i=e[2]:(i={mutationKey:n,mutationFn:LT,onMutate:e=>{let{sessionId:n,nextPinned:r,transport:i}=e;return{previous:jT(t,i,n,r),transport:i}},onError:(e,n,r)=>{r?.previous&&HT(r.previous,{client:t,transport:r.transport,persist:!1}),bT.error(e instanceof Error?e.message:TT(n.nextPinned?`sessions.sidebar.session.pin.error`:`sessions.sidebar.session.unpin.error`))}},e[1]=t,e[2]=i);let a=at(i),o;return e[3]!==t||e[4]!==a?(o=e=>{let n=e.trim();if(!n)return;let i=r(),o=BT(t,i);if(!o)return;let s=DT(o).has(n);a.mutate({sessionId:n,nextPinned:!s,transport:i})},e[3]=t,e[4]=a,e[5]=o):o=e[5],ut(o)};function IT(){return xT}async function LT(e){let{sessionId:t,nextPinned:n}=e;n?await ww(t):await Tw(t)}var RT=(e=r())=>N.sessionIndex.snapshot(e),zT=(e=r(),t=i(),n=u(),a=xw)=>{let o=t,s=n,c=a;return{queryKey:RT(e),queryFn:async({signal:e})=>{let t=await c({signal:e});return t&&Vw(o,t,s),t},staleTime:0,gcTime:1/0,initialData:()=>Bw(o,s)??void 0,initialDataUpdatedAt:0}},BT=(e=L,t=r())=>e.getQueryData(RT(t))??null,VT=(e=L,t=r(),n=i(),a=u())=>{let o=zT(t,n,a);return e.getQueryCache().build(e,o),e.getQueryData(o.queryKey)??null},HT=(e,t)=>{if(!Iw(e))return;let n=t?.client??L,a=t?.transport??r(),o=t?.runtimeKey??i(),s=t?.storage??u();n.setQueryData(RT(a),e),t?.persist!==!1&&Vw(o,e,s)},UT=(e=L,t=r(),n=i(),a=u(),o=xw)=>{let s={...zT(t,n,a,o),staleTime:0};return e.getQueryCache().build(e,s),e.fetchQuery(s)},WT=500,GT=20,KT=6e3,qT=7,JT=3,YT=1,XT=2,ZT=750,QT=500,$T=1e4,eE=2,tE=(e,t)=>new Promise(n=>{if(t.aborted){n();return}let r=setTimeout(()=>{t.removeEventListener(`abort`,i),n()},e),i=()=>{clearTimeout(r),n()};t.addEventListener(`abort`,i,{once:!0})}),nE=null,q=0,rE=new Map,iE=new Map,aE=new Map,oE=[],sE=new Set,cE=0,lE=JT,uE=0,dE=null,fE,pE=new Map,mE=()=>({loadGeneration:q,runtimeGeneration:s(),transportIdentity:r()}),J=e=>e.loadGeneration===q&&e.runtimeGeneration===s()&&e.transportIdentity===r(),hE=e=>{let t=e?.status;if(t===429||t===502||t===503)return!0;let n=String(e instanceof Error?e.message:e).toLowerCase();return n.includes(`signal timed out`)||n.includes(`timeout`)},gE=e=>{uE=0,hE(e)&&(lE=lE>JT?JT:YT)},_E=()=>{uE+=1,!(uE<XT||lE>=qT)&&(lE+=1,uE=0)},vE=()=>{for(;cE<lE&&oE.length>0;){let e=oE.shift();if(!e)return;cE+=1,e()}},yE=e=>new Promise((t,n)=>{oE.push(()=>{e().then(t,n).finally(()=>{--cE,vE()})}),vE()}),bE=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},xE=(e,t)=>{if(!t)return e;let n=e,r=t,i=_(n.directory??null),a=_(n.project?.worktree??null),o=_(r.directory??null),s=_(r.project?.worktree??null),c=!1,l={...n};!i&&o&&(l.directory=r.directory,c=!0),!a&&s?(l.project={...r.project??{},...n.project??{},worktree:r.project?.worktree},c=!0):!n.project&&r.project&&(l.project=r.project,c=!0);let u=n.hasChildren,d=r.hasChildren;typeof u!=`boolean`&&typeof d==`boolean`&&(l.hasChildren=d,c=!0);let f=Xf(t);if(f>Xf(e)){let e=n.metadata&&typeof n.metadata==`object`?n.metadata:{},t=e.openchamber&&typeof e.openchamber==`object`?e.openchamber:{},r=t.titleRefresh&&typeof t.titleRefresh==`object`?t.titleRefresh:{};l.metadata={...e,openchamber:{...t,titleRefresh:{...r,activityUpdatedAt:f}}},c=!0}return c?l:e},SE=(e,t)=>{let n=xE(e,t);return n.share===t.share?n:{...n,share:t.share}},CE=e=>{let t=new Map;for(let n of e){let e=bE(n);if(!e)continue;let r=t.get(e);if(r){r.push(n);continue}t.set(e,[n])}return t},wE=e=>[e.id,e.title??``,e.time?.created??0,e.time?.updated??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(e.metadata??null),String(e.hasChildren??!1),bE(e)??``].join(`:`),TE=e=>{let t=e;return[e.id,e.title??``,t.parentID??``,e.time?.created??0,e.time?.archived??0,e.share?.url??``,JSON.stringify(t.metadata??null),String(t.hasChildren??!1),bE(e)??``].join(`:`)},EE=(e,t)=>e.time?.updated!==t.time?.updated&&TE(e)===TE(t),DE=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(wE(e[n])!==wE(t[n]))return!1;return!0},OE=(e,t)=>{if(t.size===0)return e;let n=e.findIndex(e=>t.has(e.id));return n===-1?e:e.filter((e,r)=>r!==n&&!t.has(e.id))},kE=e=>[...e].sort((e,t)=>{let n=Xf(t)-Xf(e);return n===0?t.id.localeCompare(e.id):n}),AE=e=>{let t=new Set;for(let n of e){let e=_(n);e&&t.add(e)}return t},jE=e=>{let t=AE(e);for(let e of t)pE.set(e,(pE.get(e)??0)+1);return t},ME=e=>{let t=new Set;for(let n of e){let e=pE.get(n)??0;if(e<=1){pE.delete(n),t.add(n);continue}pE.set(n,e-1)}return t},NE=(e,t)=>{let n=e.loadingDirectories,r=e.refreshingDirectories;for(let i of t)rE.has(i)||(n.has(i)&&(n===e.loadingDirectories&&(n=new Set(e.loadingDirectories)),n.delete(i)),r.has(i)&&(r===e.refreshingDirectories&&(r=new Set(e.refreshingDirectories)),r.delete(i)));return n===e.loadingDirectories&&r===e.refreshingDirectories?e:{loadingDirectories:n,refreshingDirectories:r}},PE=e=>{let t=e[e.length-1]?.time?.updated;return typeof t==`number`&&Number.isFinite(t)?t:null},FE=(e,t)=>{let n=PE(e);return{cursor:n,hasMore:e.length===GT&&n!==null&&(t==null||n<t),loadingMore:!1}},IE=(e,t,n)=>{if(n.size===0)return e;let r=new Map(e.map(e=>[e.id,e])),i=new Map;for(let e of t)e?.id&&i.set(e.id,xE(e,r.get(e.id)));let a=e.filter(e=>{if(i.has(e.id))return!1;let t=bE(e);return!t||!n.has(t)});return kE([...i.values(),...a])},LE=(e,t)=>e.cursor===null?!e.hasMore&&(t.hasMore||t.cursor!==null):t.cursor===null||e.cursor<t.cursor,RE=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;if(e.length===0)return null;let n=kE(e),r=n[n.length-1];return r?Xf(r):null},zE=(e,t)=>Xf(e)<=t,BE=(e,t,n,r,i)=>{if(n.size===0)return e;let a=new Map(e.map(e=>[e.id,e])),o=new Map;for(let e of t.values())for(let t of e)t?.id&&o.set(t.id,xE(t,a.get(t.id)));let s=e.filter(e=>{if(o.has(e.id))return!1;let t=bE(e);if(!t||!n.has(t))return!0;if(!i.has(t))return!1;let a=r.get(t);return a!=null&&zE(e,a)});return kE([...o.values(),...s])},VE=(e,t,n)=>{let r=new Set(t.directories.map(e=>e.directory)),i=new Map;for(let n of t.directories)i.set(n.directory,OE(n.sessions,e.pendingDeletionIds));let a=[...i.values()].flat(),o=new Map;if(n)for(let t of e.activeSessions){let e=bE(t);!e||!r.has(e)||o.set(e,(o.get(e)??0)+1)}let s=new Map,c=new Set;if(n)for(let n of t.directories){let t={cursor:n.cursor,hasMore:n.hasMore},r=e.activePaginationByDirectory.get(n.directory),a=(o.get(n.directory)??0)>GT;n.hasMore&&a&&r&&LE(r,t)&&c.add(n.directory),s.set(n.directory,RE(i.get(n.directory)??[],n.cursor))}let l=n?BE(e.activeSessions,i,r,s,c):kE(WE(e.activeSessions,a)),u=new Map(e.activePaginationByDirectory),d=new Map(e.sessionIndexSyncByDirectory);for(let r of t.directories){let t={cursor:r.cursor,hasMore:r.hasMore,loadingMore:!1},i=e.activePaginationByDirectory.get(r.directory);u.set(r.directory,n&&c.has(r.directory)&&i?{cursor:i.cursor,hasMore:i.hasMore,loadingMore:!1}:t),d.set(r.directory,{lastSyncedAt:r.lastSyncedAt,lastFullSyncedAt:r.lastFullSyncedAt})}let f=new Set(e.loadedDirectories);for(let e of r)f.add(e);let p=new Set(e.loadingDirectories),m=new Set(e.refreshingDirectories),h=new Set(t.sync.pendingDirectories);for(let e of h)l.some(t=>bE(t)===e)?(m.add(e),p.delete(e)):p.add(e);for(let e of[...t.sync.completedDirectories,...t.sync.failedDirectories])p.delete(e),m.delete(e);if(n)for(let e of pE.keys())h.has(e)||rE.has(e)||(p.delete(e),m.delete(e));return{activeSessions:l,sessionsByDirectory:CE(l),reviewTransferBySessionId:KE(l),cachedDirectories:r,sessionIndexSyncByDirectory:d,activePaginationByDirectory:u,loadedDirectories:f,loadingDirectories:p,refreshingDirectories:m,hasLoaded:!0,status:e.status===`idle`||e.status===`loading`?`ready`:e.status}},HE=(e,t)=>{let n=OE(t.activeSessions,e.pendingDeletionIds),r=OE(t.fallbackActive??[],e.pendingDeletionIds),i=t.mergeOnly?kE(WE(e.activeSessions,n)):IE(e.activeSessions,n,t.directories);i=WE(i,r),DE(e.activeSessions,i)&&(i=e.activeSessions);let a=t.archivedSessions===void 0?void 0:OE(t.archivedSessions,e.pendingDeletionIds),o=a===void 0?e.archivedSessions:IE(e.archivedSessions,a,t.directories);DE(e.archivedSessions,o)&&(o=e.archivedSessions);let s=i===e.activeSessions?e.sessionsByDirectory:CE(i),c=e.loadedDirectories,l=!1;for(let n of t.directories)c.has(n)||(l||=(c=new Set(e.loadedDirectories),!0),c.add(n));let u=e.loadingDirectories,d=!1;for(let n of t.directories)u.has(n)&&(d||=(u=new Set(e.loadingDirectories),!0),u.delete(n));let f=t.markReady?`ready`:e.status,p=t.markReady?!0:e.hasLoaded;return i===e.activeSessions&&o===e.archivedSessions&&s===e.sessionsByDirectory&&c===e.loadedDirectories&&u===e.loadingDirectories&&e.status===f&&e.hasLoaded===p?e:{activeSessions:i,archivedSessions:o,sessionsByDirectory:s,reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:KE(i),loadedDirectories:c,loadingDirectories:u,hasLoaded:p,status:f}},UE=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e[n],i=xE(t,r);if(EE(r,i)||wE(r)===wE(i))return e;let a=[...e];return a[n]=i,a},WE=(e,t)=>{if(!t||t.length===0)return e;if(e.length===0)return t;let n=new Map(e.map(e=>[e.id,e]));t.forEach(e=>{n.set(e.id,xE(e,n.get(e.id)))});let r=[],i=new Set;return e.forEach(e=>{let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),t.forEach(e=>{if(i.has(e.id))return;let t=n.get(e.id);t&&(r.push(t),i.add(e.id))}),r},GE=(e,t,n,r)=>{let i=OE(t,e.pendingDeletionIds),a=OE(n,e.pendingDeletionIds),o=DE(e.activeSessions,i)?e.activeSessions:i,s=DE(e.archivedSessions,a)?e.archivedSessions:a,c=o===e.activeSessions?e.sessionsByDirectory:CE(o),l=o===e.activeSessions?e.reviewTransferBySessionId:KE(o);return o===e.activeSessions&&s===e.archivedSessions&&c===e.sessionsByDirectory&&l===e.reviewTransferBySessionId&&e.hasLoaded&&e.status===r?e:{activeSessions:o,archivedSessions:s,sessionsByDirectory:c,reviewTransferBySessionId:l,hasLoaded:!0,status:r}},KE=e=>{let t=new Map,n=new Set(e.map(e=>e.id));for(let r of e){let e=lw(r);if(!e)continue;let i=e===`review-to-original`?Bp(r):zp(r);!i||!n.has(i)||t.set(r.id,e)}return t},Y=Oe((e,t)=>({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0},applySnapshot:(t,n,r=`ready`)=>{e(e=>GE(e,t,n,r))},resetForRuntimeSwitch:()=>{q+=1,mw(),nE=null,rE.clear(),iE.clear(),aE.clear(),sE.forEach(e=>e.abort()),sE.clear(),lE=JT,uE=0,dE?.abort(),dE=null,fE=void 0,pE.clear(),e({activeSessions:[],archivedSessions:[],sessionsByDirectory:new Map,reviewTransferBySessionId:new Map,loadedDirectories:new Set,loadingDirectories:new Set,refreshingDirectories:new Set,archivedLoadedDirectories:new Set,archivedLoadingDirectories:new Set,activePaginationByDirectory:new Map,cachedDirectories:new Set,hasHydratedSessionIndex:!1,hasCachedSessionIndex:!1,sessionIndexSyncByDirectory:new Map,hasLoadedFullCatalog:!1,fullCatalogSessionIds:new Set,fullCatalogGeneration:0,pendingDeletionIds:new Set,hasLoaded:!1,status:`idle`,startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}})},hydrateSessionIndex:async()=>{if(fE)return fE;if(t().hasHydratedSessionIndex)return;let n=mE(),a=r(),o=i(),s=VT(void 0,a,o);s&&J(n)&&e(e=>({...VE(e,s,!1),hasCachedSessionIndex:!0}));let c=(async()=>{try{let t;try{t=await UT(void 0,a,o)}catch(e){if(!J(n))return;if(s){console.warn(`[GlobalSessions] Failed to refresh runtime session index; keeping stale seed:`,e);return}throw e}if(!J(n))return;if(!t){e(e=>e.hasHydratedSessionIndex?e:{hasHydratedSessionIndex:!0});return}e(e=>({...VE(e,t,!1),hasCachedSessionIndex:t.directories.length>0,hasHydratedSessionIndex:!0}))}catch(e){console.warn(`[GlobalSessions] Failed to hydrate runtime session index:`,e)}})();return fE=c.finally(()=>{fE===c&&(fE=void 0)}),fE},startSessionIndexStartup:async(n,r)=>{let i=mE();if(e({startupSyncProgress:{active:!0,phase:`restoring`,completed:0,total:0}}),await t().hydrateSessionIndex(),!J(i))return{activeSessions:[],archivedSessions:[]};t().hasHydratedSessionIndex||e({hasHydratedSessionIndex:!0});let a=AE([...n,...t().cachedDirectories]);if(a.size===0){e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let n=t();return{activeSessions:n.activeSessions,archivedSessions:n.archivedSessions}}let o=t().hasCachedSessionIndex,s=r?.priorityDirectories?AE(r.priorityDirectories):null,c=!!(o&&s&&s.size>0&&[...s].some(e=>a.has(e))),l=c?new Set([...a].filter(e=>s.has(e))):a,u=c?new Set([...a].filter(e=>!s.has(e))):new Set,d={activeSessions:t().activeSessions,archivedSessions:t().archivedSessions},f=null,p=mE();try{if(f=await Sw([...l]),!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};f&&HT(f)}catch(e){if(!J(i)||!J(p))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}let m=()=>{if(u.size===0)return;let e=[...u],n=()=>{J(i)&&t().syncSessionsForDirectories(e,d.activeSessions)};typeof globalThis.setTimeout==`function`?globalThis.setTimeout(n,0):Promise.resolve().then(n)};if(!f){let e=QE(l,d.activeSessions,{retryFailed:!o});if(o)e.then(()=>{m()});else{if(await e,!J(i))return{activeSessions:[],archivedSessions:[]};m()}return d}dE?.abort();let h=new AbortController;dE=h;let g=jE(l),_=()=>{if(!J(i))return;let t=ME(g);t.size!==0&&e(e=>NE(e,t))},v=!o,y=f;v||e({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let b=()=>void 0,x=new Promise(e=>{b=e}),S=!1,C=()=>{S||(S=!0,b())};if((async()=>{let t=y,n=QT;for(;!h.signal.aborted&&J(i);){e(e=>({...VE(e,t,!0),startupSyncProgress:v?{active:t.sync.active,phase:t.sync.active?`syncing`:`idle`,completed:t.sync.completed,total:t.sync.total}:e.startupSyncProgress})),t.sync.active||C();let r=mE(),a=await Cw(t.revision,h.signal,{safetyTimeoutMs:t.sync.active?void 0:null});if(!J(i)||!J(r)||a===`aborted`)break;let o;for(;!h.signal.aborted&&J(i);){let e=mE();try{o=await UT()}catch{if(h.signal.aborted||!J(i)){o=void 0;break}if(await tE(n,h.signal),h.signal.aborted||!J(i)){o=void 0;break}n=Math.min(n*eE,$T);continue}if(!J(e)){o=void 0;break}if(!o)break;n=QT;break}if(o===void 0||!o)break;t=o}})().catch(e=>{h.signal.aborted||console.warn(`[GlobalSessions] Session index tip sync failed:`,e)}).finally(()=>{_(),C(),dE===h&&(dE=null),v&&J(i)&&e(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:e.startupSyncProgress.completed,total:e.startupSyncProgress.total}}))}),v){if(await x,!J(i))return{activeSessions:[],archivedSessions:[]};m()}else m();return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},loadSessions:async n=>{if(nE)return nE;e(e=>e.status===`loading`?e:{status:`loading`});let r=q,i=Promise.resolve().then(async()=>{let a=t();try{if(await pw(),r!==q)return{activeSessions:[],archivedSessions:[]};let t=z.getSdkClient(),[i,o]=await Promise.allSettled([yp(t,{archived:!1,pageSize:WT}),yp(t,{archived:!0,pageSize:WT})]),s=WE(a.activeSessions,n),c=i.status===`fulfilled`?i.value:s,l=o.status===`fulfilled`?o.value:a.archivedSessions;return i.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load active sessions, preserving existing snapshot with fallback merge:`,i.reason),o.status===`rejected`&&console.warn(`[GlobalSessions] Failed to load archived sessions, preserving current snapshot:`,o.reason),r===q?(e(e=>{let t=i.status===`fulfilled`&&o.status===`fulfilled`?`ready`:`error`,n=GE(e,c,l,t);if(i.status!==`fulfilled`||o.status!==`fulfilled`)return n===e?e:n;let r=new Set([...i.value.map(e=>e.id),...o.value.map(e=>e.id)]);return{...n,hasLoadedFullCatalog:!0,fullCatalogSessionIds:r,fullCatalogGeneration:e.fullCatalogGeneration+1}}),{activeSessions:c,archivedSessions:l}):{activeSessions:[],archivedSessions:[]}}catch(t){if(r!==q)return{activeSessions:[],archivedSessions:[]};let i=WE(a.activeSessions,n),o=a.archivedSessions;return console.warn(`[GlobalSessions] Failed to load sessions, using fallback snapshot:`,t),e(e=>GE(e,i,o,`error`)),{activeSessions:i,archivedSessions:o}}finally{nE===i&&(nE=null)}});return nE=i,i},refreshSessionsForDirectories:async(n,r,i)=>{let a=AE(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=WE(e.activeSessions,OE(r??[],e.pendingDeletionIds)),n=new Set(e.loadingDirectories),i=new Set(e.refreshingDirectories);for(let t of a)i.add(t),e.loadedDirectories.has(t)||e.sessionsByDirectory.has(t)||r?.some(e=>bE(e)===t)||n.add(t);return{...t===e.activeSessions?{}:{activeSessions:t,sessionsByDirectory:CE(t),reviewTransferBySessionId:KE(t)},loadingDirectories:n,refreshingDirectories:i,status:e.status===`idle`?`loading`:e.status}});let s=[...a].map(n=>{let r=rE.get(n);if(r)return r;let a=yE(async()=>{let r=new AbortController;sE.add(r);try{if(o!==q||(await pw(),o!==q))return!1;let a=await yp(z.getSdkClient(),{directory:n,archived:!1,roots:!0,...i?.incrementalStart===void 0?{}:{start:i.incrementalStart},pageSize:GT,maxItems:GT,timeoutMs:KT,retryAttempts:2,signal:r.signal});if(o!==q)return!1;if(e(e=>{let t=HE(e,{activeSessions:a,directories:new Set([n]),markReady:!0,mergeOnly:i?.incrementalStart!==void 0}),r=new Set(e.refreshingDirectories),o=new Map(e.activePaginationByDirectory);return r.delete(n),i?.incrementalStart===void 0&&o.set(n,FE(a)),t===e?{refreshingDirectories:r,activePaginationByDirectory:o}:{...t,refreshingDirectories:r,activePaginationByDirectory:o}}),i?.persist!==!1){let e=t().sessionsByDirectory.get(n)??[],r=t().activePaginationByDirectory.get(n)??FE(a);try{await Ew({directory:n,sessions:e,cursor:r.cursor,hasMore:r.hasMore,fullSync:i?.incrementalStart===void 0})}catch(e){console.warn(`[GlobalSessions] Failed to persist session index for ${n}:`,e)}}return _E(),!0}catch(t){return gE(t),o===q&&(console.warn(`[GlobalSessions] Failed to refresh active sessions for ${n}:`,t),e(e=>{let t=new Set(e.loadingDirectories),r=new Set(e.refreshingDirectories);return t.delete(n),r.delete(n),{loadingDirectories:t,refreshingDirectories:r}})),!1}finally{sE.delete(r)}});return rE.set(n,a),a.finally(()=>{rE.get(n)===a&&rE.delete(n)}),a}),c=await Promise.all(s);return o===q?([...a].forEach((e,t)=>{i?.onDirectoryResult?.(e,c[t]??!1)}),e(e=>({status:e.status===`loading`?c.some(Boolean)?`ready`:`error`:e.status,hasLoaded:!0})),{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}):{activeSessions:[],archivedSessions:[]}},syncSessionsForDirectories:async(n,r)=>{let i=mE(),a=AE(n);if(a.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=null,s=mE();try{if(o=await Sw([...a]),!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};o&&HT(o)}catch(e){if(!J(i)||!J(s))return{activeSessions:[],archivedSessions:[]};console.warn(`[GlobalSessions] Failed to start server-side session index sync:`,e)}if(!o)return t().refreshSessionsForDirectories(a,r);let c=new AbortController;sE.add(c);let l=jE(a),u=()=>{if(!J(i))return;let t=ME(l);t.size!==0&&e(e=>NE(e,t))};try{let t=o;for(;!c.signal.aborted&&J(i)&&(e(e=>VE(e,t,!0)),t.sync.active);){let e=mE(),n=await Cw(t.revision,c.signal);if(!J(i)||!J(e)||n===`aborted`)break;let r=mE(),a;try{a=await UT()}catch{break}if(!J(i)||!J(r)||!a)break;t=a}}catch(e){!c.signal.aborted&&J(i)&&console.warn(`[GlobalSessions] Session index sync failed:`,e)}finally{u(),sE.delete(c)}return J(i)?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},loadMoreSessionsForDirectory:async n=>{let r=_(n);if(!r){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=aE.get(r);if(i)return await i,{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions};let a=t().activePaginationByDirectory.get(r);if(!a?.hasMore||a.cursor===null){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let o=q;e(e=>{let t=new Map(e.activePaginationByDirectory);return t.set(r,{...a,loadingMore:!0}),{activePaginationByDirectory:t}});let s=yE(async()=>{let t=new AbortController;sE.add(t);try{if(await pw(),o!==q)return!1;let n=await yp(z.getSdkClient(),{directory:r,archived:!1,roots:!0,cursor:a.cursor??void 0,pageSize:GT,maxItems:GT,timeoutMs:KT,retryAttempts:2,signal:t.signal});return o===q&&(e(e=>{let t=e.activeSessions.filter(e=>bE(e)===r),i=new Map(t.map(e=>[e.id,e]));OE(n,e.pendingDeletionIds).forEach(e=>{i.set(e.id,xE(e,i.get(e.id)))});let o=kE([...i.values()]),s=IE(e.activeSessions,o,new Set([r])),c=new Map(e.activePaginationByDirectory);return c.set(r,FE(n,a.cursor)),{activeSessions:DE(e.activeSessions,s)?e.activeSessions:s,sessionsByDirectory:CE(s),reviewTransferBySessionId:KE(s),activePaginationByDirectory:c}}),_E(),!0)}catch(t){return gE(t),o===q&&(console.warn(`[GlobalSessions] Failed to load more sessions for ${r}:`,t),e(e=>{let t=e.activePaginationByDirectory.get(r);if(!t)return e;let n=new Map(e.activePaginationByDirectory);return n.set(r,{...t,loadingMore:!1}),{activePaginationByDirectory:n}})),!1}finally{sE.delete(t)}});aE.set(r,s);try{await s}finally{aE.get(r)===s&&aE.delete(r)}return{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}},refreshArchivedSessionsForDirectories:async n=>{let r=AE(n);if(r.size===0){let e=t();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}let i=q;e(e=>{let t=new Set(e.archivedLoadingDirectories);return r.forEach(e=>t.add(e)),{archivedLoadingDirectories:t}});let a=[...r].map(t=>{let n=iE.get(t);if(n)return n;let r=yE(async()=>{let n=new AbortController;sE.add(n);try{if(i!==q||(await pw(),i!==q))return!1;let r=await yp(z.getSdkClient(),{directory:t,archived:!0,roots:!0,pageSize:GT,maxItems:GT,timeoutMs:KT,retryAttempts:2,signal:n.signal});return i===q&&(e(e=>{let n=IE(e.archivedSessions,OE(r,e.pendingDeletionIds),new Set([t])),i=new Set(e.archivedLoadedDirectories),a=new Set(e.archivedLoadingDirectories);return i.add(t),a.delete(t),{archivedSessions:DE(e.archivedSessions,n)?e.archivedSessions:n,archivedLoadedDirectories:i,archivedLoadingDirectories:a}}),!0)}catch(n){return i===q&&(console.warn(`[GlobalSessions] Failed to refresh archived sessions for ${t}:`,n),e(e=>{let n=new Set(e.archivedLoadingDirectories);return n.delete(t),{archivedLoadingDirectories:n}})),!1}finally{sE.delete(n)}});return iE.set(t,r),r.finally(()=>{iE.get(t)===r&&iE.delete(t)}),r});return await Promise.all(a),i===q?{activeSessions:t().activeSessions,archivedSessions:t().archivedSessions}:{activeSessions:[],archivedSessions:[]}},upsertSession:n=>{if(!mp(n)){t().removeSessions([n.id]);return}e(e=>{if(e.pendingDeletionIds.has(n.id))return e;let t=xE(n,e.activeSessions.find(e=>e.id===n.id)??e.archivedSessions.find(e=>e.id===n.id)??null),r=!!t.time?.archived,i=r?e.activeSessions.filter(e=>e.id!==n.id):UE(e.activeSessions,t),a=r?UE(e.archivedSessions,t):e.archivedSessions.filter(e=>e.id!==n.id);return i===e.activeSessions&&a===e.archivedSessions?e:{activeSessions:i,archivedSessions:a,sessionsByDirectory:i===e.activeSessions?e.sessionsByDirectory:CE(i),reviewTransferBySessionId:i===e.activeSessions?e.reviewTransferBySessionId:KE(i)}})},markSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)!r||e.pendingDeletionIds.has(r)||(n??=new Set(e.pendingDeletionIds),n.add(r));return n?{pendingDeletionIds:n}:e})},clearSessionsPendingDeletion:t=>{e(e=>{let n=null;for(let r of t)e.pendingDeletionIds.has(r)&&(n??=new Set(e.pendingDeletionIds),n.delete(r));return n?{pendingDeletionIds:n}:e})},removeSessions:t=>{let n=t instanceof Set?t:new Set(t);n.size!==0&&e(e=>{let t=e.activeSessions.filter(e=>!n.has(e.id)),r=e.archivedSessions.filter(e=>!n.has(e.id));return t.length===e.activeSessions.length&&r.length===e.archivedSessions.length?e:{activeSessions:t,archivedSessions:r,sessionsByDirectory:CE(t),reviewTransferBySessionId:KE(t)}})},archiveSessions:(t,n=Date.now())=>{let r=t instanceof Set?t:new Set(t);r.size!==0&&e(e=>{let t=[],i=e.activeSessions.filter(e=>!r.has(e.id)||(t.push({...e,time:{...e.time,archived:n}}),!1));if(t.length===0)return e;let a=e.archivedSessions.filter(e=>!r.has(e.id));return{activeSessions:i,archivedSessions:[...t,...a],sessionsByDirectory:CE(i),reviewTransferBySessionId:KE(i)}})}})),qE=async e=>{let t=Y.getState();return t.hasLoadedFullCatalog&&t.status!==`error`?{activeSessions:t.activeSessions,archivedSessions:t.archivedSessions}:t.loadSessions(e)},JE=async()=>{await Y.getState().hydrateSessionIndex()},YE=async(e,t)=>Y.getState().startSessionIndexStartup(e,t),XE=async(e,t)=>Y.getState().refreshSessionsForDirectories(e,t),ZE=async(e,t)=>Y.getState().syncSessionsForDirectories(e,t),QE=async(e,t,n)=>{let r=AE(e),i=q;if(r.size===0){Y.setState({startupSyncProgress:{active:!1,phase:`idle`,completed:0,total:0}});let e=Y.getState();return{activeSessions:e.activeSessions,archivedSessions:e.archivedSessions}}Y.setState({startupSyncProgress:{active:!0,phase:`syncing`,completed:0,total:r.size}});let a=new Set,o=new Set(r);try{do await Promise.all([...o].map(async e=>{let r=!1;await Y.getState().refreshSessionsForDirectories([e],t,{persist:!1,incrementalStart:n?.incrementalStartByDirectory?.get(e),onDirectoryResult:(e,t)=>{r=t}}),i===q&&r&&!a.has(e)&&(a.add(e),Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,completed:a.size}})))})),o=new Set([...r].filter(e=>!a.has(e))),o.size>0&&n?.retryFailed===!0&&i===q&&await new Promise(e=>setTimeout(e,ZT));while(o.size>0&&n?.retryFailed===!0&&i===q);if(i===q){Y.setState(e=>({startupSyncProgress:{...e.startupSyncProgress,phase:`committing`}}));let e=Y.getState(),t=[...a].flatMap(t=>{let r=e.sessionsByDirectory.get(t)??[],i=e.activePaginationByDirectory.get(t);return[{directory:t,sessions:r,cursor:i?.cursor??null,hasMore:i?.hasMore??!1,fullSync:!n?.incrementalStartByDirectory?.has(t)}]});try{await Dw(t);let e=Date.now();Y.setState(n=>{let r=new Map(n.sessionIndexSyncByDirectory);for(let n of t){let t=r.get(n.directory);r.set(n.directory,{lastSyncedAt:e,lastFullSyncedAt:n.fullSync?e:t?.lastFullSyncedAt??0})}return{sessionIndexSyncByDirectory:r}})}catch(e){console.warn(`[GlobalSessions] Failed to persist cold-start session index batch:`,e)}}}finally{i===q&&Y.setState(e=>({startupSyncProgress:{active:!1,phase:`idle`,completed:a.size,total:e.startupSyncProgress.total}}))}let s=Y.getState();return{activeSessions:s.activeSessions,archivedSessions:s.archivedSessions}},$E=async e=>Y.getState().refreshArchivedSessionsForDirectories(e),eD=async e=>Y.getState().loadMoreSessionsForDirectory(e),tD=(e,t)=>{if(!t)return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>t[n]===e[n])},nD=`oc.sessions.folders`,rD=`oc.sessions.folderCollapse`,iD=`oc.sessions.order`,aD=`oc.sessions.orderActivity`,oD=`/api/session-folders`,sD=250,cD=`__archived__:`,lD=x(u()),uD=null,dD=!1,fD=!1,pD=0,mD,hD,gD=null,_D=null,vD=()=>typeof window>`u`?!1:v()?!0:window.__VSCODE_CONFIG__!==void 0,yD=(e,t)=>{if(typeof window>`u`||vD())return;uD&&clearTimeout(uD);let n=JSON.parse(JSON.stringify(e)),r=Array.from(t);uD=setTimeout(()=>{uD=null,F(oD,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({version:1,foldersMap:n,collapsedFolderIds:r,updatedAt:Date.now()})}).catch(()=>{})},sD)},bD=()=>{try{let e=lD.getItem(nD);if(!e)return{};let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t)){if(!Array.isArray(r))continue;let t=[];for(let e of r){if(!e||typeof e!=`object`)continue;let n=e,r=typeof n.id==`string`?n.id.trim():``,i=typeof n.name==`string`?n.name.trim():``,a=typeof n.createdAt==`number`?n.createdAt:0;if(!r||!i)continue;let o=Array.isArray(n.sessionIds)?n.sessionIds.filter(e=>typeof e==`string`&&e.trim().length>0):[],s=typeof n.parentId==`string`?n.parentId:null;t.push({id:r,name:i,sessionIds:o,createdAt:a,parentId:s})}t.length>0&&(n[e]=t)}return n}catch{return{}}},xD=()=>{try{let e=lD.getItem(rD);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}},SD=()=>{try{let e=lD.getItem(iD);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!Array.isArray(t))return[];let n=t.filter(e=>typeof e==`string`&&e.length>0);return n.length>0?[[e,n]]:[]}))}catch{return{}}},CD=()=>{try{let e=lD.getItem(aD);if(!e)return{};let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?{}:Object.fromEntries(Object.entries(t).flatMap(([e,t])=>{if(!t||typeof t!=`object`||Array.isArray(t))return[];let n=Object.fromEntries(Object.entries(t).flatMap(([e,t])=>typeof t==`number`&&Number.isFinite(t)?[[e,t]]:[]));return Object.keys(n).length>0?[[e,n]]:[]}))}catch{return{}}},wD=(e,t)=>{try{lD.setItem(iD,JSON.stringify(e)),lD.setItem(aD,JSON.stringify(t))}catch{}},TD=e=>{gD=e,clearTimeout(mD),mD=setTimeout(()=>{try{lD.setItem(nD,JSON.stringify(e)),gD=null}catch{}},300)},ED=e=>{_D=e,clearTimeout(hD),hD=setTimeout(()=>{try{lD.setItem(rD,JSON.stringify(Array.from(e))),_D=null}catch{}},300)};typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{if(gD!==null){clearTimeout(mD);try{lD.setItem(nD,JSON.stringify(gD))}catch{}gD=null}if(_D!==null){clearTimeout(hD);try{lD.setItem(rD,JSON.stringify(Array.from(_D)))}catch{}_D=null}});var DD=(e,t)=>{TD(e),ED(t),yD(e,t)},OD=()=>fe(),kD=(e,t,n)=>{let r=new Set(t.map(e=>e.id)),i=null;for(let t of e)!r.has(t.id)&&n.has(t.id)&&(i||=new Set(n),i.delete(t.id));return i},AD=(e,t)=>e.startsWith(cD)?t.filter(e=>e.sessionIds.length>0):t,jD=Oe()(je((e,t)=>({foldersMap:bD(),collapsedFolderIds:xD(),sessionOrderByScope:SD(),sessionOrderActivityByScope:CD(),getFoldersForScope:e=>e?t().foldersMap[e]??[]:[],createFolder:(n,r,i)=>{let a=r.trim()||`New folder`,o={id:OD(),name:a,sessionIds:[],createdAt:Date.now(),parentId:i??null},s=t().foldersMap,c=s[n]??[],l={...s,[n]:[...c,o]};return e({foldersMap:l}),DD(l,t().collapsedFolderIds),o},renameFolder:(n,r,i)=>{let a=i.trim();if(!a||!n)return;let o=t().foldersMap,s=o[n];if(!s)return;let c=s.map(e=>e.id===r?{...e,name:a}:e),l={...o,[n]:c};e({foldersMap:l}),DD(l,t().collapsedFolderIds)},deleteFolder:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set([r]),s=!0;for(;s;){s=!1;for(let e of a)e.parentId&&o.has(e.parentId)&&!o.has(e.id)&&(o.add(e.id),s=!0)}let c=a.filter(e=>!o.has(e.id)),l={...i,[n]:c};e({foldersMap:l}),DD(l,t().collapsedFolderIds);let u=t().collapsedFolderIds;if(Array.from(o).some(e=>u.has(e))){let t=new Set(u);o.forEach(e=>t.delete(e)),e({collapsedFolderIds:t}),DD(l,t)}},addSessionToFolder:(n,r,i)=>{if(!n||!r||!i)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=o.find(e=>e.id===r);if(!s)return;let c=o.reduce((e,t)=>e+ +!!t.sessionIds.includes(i),0);if(s.sessionIds.includes(i)&&c===1)return;let l=o.map(e=>{let t=e.sessionIds.filter(e=>e!==i);return e.id===r?{...e,sessionIds:[...t,i]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),u={...a,[n]:l},d=kD(o,l,t().collapsedFolderIds);e(d?{foldersMap:u,collapsedFolderIds:d}:{foldersMap:u}),DD(u,d??t().collapsedFolderIds)},addSessionsToFolder:(n,r,i)=>{if(!n||!r||i.length===0)return;let a=t().foldersMap,o=a[n];if(!o)return;let s=new Set(i.filter(e=>typeof e==`string`&&e.length>0));if(s.size===0)return;let c=o.find(e=>e.id===r);if(!c)return;let l=!1;for(let e of o){for(let t of s)if(e.sessionIds.includes(t)&&(e.id!==r||!c.sessionIds.includes(t))){l=!0;break}if(l)break}if(!l){for(let e of s)if(!c.sessionIds.includes(e)){l=!0;break}}if(!l)return;let u=o.map(e=>{let t=e.sessionIds.filter(e=>!s.has(e));return e.id===r?{...e,sessionIds:[...t,...s]}:t.length===e.sessionIds.length?e:{...e,sessionIds:t}}),d={...a,[n]:u},f=kD(o,u,t().collapsedFolderIds);e(f?{foldersMap:d,collapsedFolderIds:f}:{foldersMap:d}),DD(d,f??t().collapsedFolderIds)},removeSessionsFromFolders:(n,r)=>{if(!n||r.length===0)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=new Set(r.filter(e=>typeof e==`string`&&e.length>0));if(o.size===0)return;let s=!1,c=a.map(e=>{let t=e.sessionIds.filter(e=>!o.has(e));return t.length===e.sessionIds.length?e:(s=!0,{...e,sessionIds:t})});if(!s)return;let l={...i,[n]:c},u=kD(a,c,t().collapsedFolderIds);e(u?{foldersMap:l,collapsedFolderIds:u}:{foldersMap:l}),DD(l,u??t().collapsedFolderIds)},removeSessionFromFolder:(n,r)=>{if(!n||!r)return;let i=t().foldersMap,a=i[n];if(!a)return;let o=!1,s=a.map(e=>{let t=e.sessionIds.filter(e=>e!==r);return t.length===e.sessionIds.length?e:(o=!0,{...e,sessionIds:t})});if(!o)return;let c={...i,[n]:s},l=kD(a,s,t().collapsedFolderIds);e(l?{foldersMap:c,collapsedFolderIds:l}:{foldersMap:c}),DD(c,l??t().collapsedFolderIds)},toggleFolderCollapse:n=>{let r=t().collapsedFolderIds,i=new Set(r);i.has(n)?i.delete(n):i.add(n),e({collapsedFolderIds:i}),DD(t().foldersMap,i)},cleanupSessions:(n,r)=>{if(!n)return;let i=t().foldersMap,a=i[n],o=t().sessionOrderByScope[n]??[],s=t().sessionOrderActivityByScope[n]??{};if((!a||a.length===0)&&o.length===0&&Object.keys(s).length===0)return;let c=!1,l=(a??[]).map(e=>{let t=e.sessionIds.filter(e=>r.has(e));return t.length===e.sessionIds.length?e:(c=!0,{...e,sessionIds:t})}),u=AD(n,l);u.length!==l.length&&(c=!0);let d=o.filter(e=>r.has(e)),f=d.length!==o.length,p=Object.keys(s).some(e=>!r.has(e));if(!c&&!f&&!p)return;let m={...i,[n]:u},h=kD(a??[],u,t().collapsedFolderIds),g=f?{...t().sessionOrderByScope,[n]:d}:t().sessionOrderByScope,_=f||p?Object.fromEntries(Object.entries(t().sessionOrderActivityByScope).filter(([e])=>e!==n)):t().sessionOrderActivityByScope;e(h?{foldersMap:m,collapsedFolderIds:h,sessionOrderByScope:g,sessionOrderActivityByScope:_}:{foldersMap:m,sessionOrderByScope:g,sessionOrderActivityByScope:_}),DD(m,h??t().collapsedFolderIds),wD(g,_)},getSessionFolderId:(e,n)=>{if(!e||!n)return null;let r=t().foldersMap[e];if(!r)return null;for(let e of r)if(e.sessionIds.includes(n))return e.id;return null},reorderSessions:(n,r,i,a,o)=>{if(!n||i===a)return;let s=Array.from(new Set(r)),c=s.indexOf(i),l=s.indexOf(a);if(c===-1||l===-1)return;let u=t().sessionOrderByScope[n]??[],d=t().sessionOrderActivityByScope[n],f=tD(o,d),p=f?[...u.filter(e=>s.includes(e)),...s.filter(e=>!u.includes(e))]:s,m=p.indexOf(i),h=p.indexOf(a);if(m===-1||h===-1||m===h)return;let g=[...p];g.splice(m,1),g.splice(h,0,i);let _=new Set(s),v=f?u.filter(e=>!_.has(e)):[],y={...t().sessionOrderByScope,[n]:[...g,...v]},b={...t().sessionOrderActivityByScope,[n]:{...o}};e({sessionOrderByScope:y,sessionOrderActivityByScope:b}),wD(y,b)}}),{name:`session-folders-store`})),MD=async()=>{if(dD||fD||typeof window>`u`)return;if(vD()){dD=!0;return}fD=!0;let e=pD;try{let t=await F(oD).catch(()=>null);if(e!==pD||!t||!t.ok)return;let n=await t.json().catch(()=>null);if(!n)return;let r=n.foldersMap&&typeof n.foldersMap==`object`?n.foldersMap:{},i=Array.isArray(n.collapsedFolderIds)?new Set(n.collapsedFolderIds.filter(e=>typeof e==`string`)):new Set;if(e!==pD||!(Object.keys(r).length>0||i.size>0))return;jD.setState({foldersMap:r,collapsedFolderIds:i}),TD(r),ED(i)}catch{}finally{e===pD&&(fD=!1,dD=!0)}},ND=()=>{typeof window>`u`||MD()},PD=()=>{pD+=1,dD=!1,fD=!1,gD=null,_D=null,mD&&=(clearTimeout(mD),void 0),hD&&=(clearTimeout(hD),void 0),jD.setState({foldersMap:bD(),collapsedFolderIds:xD(),sessionOrderByScope:SD(),sessionOrderActivityByScope:CD()}),MD()};typeof window<`u`&&d(e=>{n(e)&&PD()}),ND();var FD=new Map,ID=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},LD=()=>`worktree_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,RD=()=>{let e=LD();return FD.set(e,ID()),e},zD=(e,t)=>{let n=FD.get(e);n&&(FD.delete(e),n.resolve(t))},BD=(e,t)=>{let n=FD.get(e);n&&(FD.delete(e),n.reject(t))},VD=e=>{let t=FD.get(e);return t?t.promise:Promise.reject(Error(`Pending worktree request not found`))},HD=3e5,UD=5e3,WD=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``)||e,GD=new Map,KD=new Map,qD=new Map,JD=new Map,YD=new Set,XD=null,ZD=!1,QD=e=>WD(e),$D=e=>JD.get(e)??0,eO=e=>{let t=$D(e)+1;return JD.set(e,t),t},tO=async e=>{let t=Te()?.git;return t?.worktree?.bootstrapStatus?t.worktree.bootstrapStatus(e):t?.getGitWorktreeBootstrapStatus?t.getGitWorktreeBootstrapStatus(e):Ve(e)},nO=(e,t)=>{for(let n of YD)try{n(e,t)}catch{}},rO=e=>(YD.add(e),()=>{YD.delete(e)}),iO=(e,t)=>{let n=QD(e);if(!n)return!1;let r=GD.get(n),i=r?.status===`pending`&&t.status!==`pending`;return r&&typeof r.updatedAt==`number`&&Number.isFinite(r.updatedAt)&&typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)&&t.updatedAt<r.updatedAt&&!i?!1:(GD.set(n,t),t.status!==`pending`&&KD.delete(n),nO(n,t),!0)},aO=(e,t)=>{let n=QD(e);if(!n)return!1;let r=t.status===`pending`||t.status===`ready`||t.status===`failed`?t.status:null;return r?iO(n,{status:r,error:typeof t.error==`string`&&t.error.trim().length>0?t.error.trim():null,updatedAt:typeof t.updatedAt==`number`&&Number.isFinite(t.updatedAt)?t.updatedAt:Date.now()}):!1},oO=()=>{XD||=Kt(e=>{e.type===`worktree-bootstrap-status`&&aO(e.directory,e)}),!(typeof window>`u`||ZD)&&(ZD=!0,window.addEventListener(`openchamber:worktree-bootstrap-status`,(e=>{let t=e.detail;if(!t||typeof t!=`object`||Array.isArray(t))return;let n=t,r=typeof n.directory==`string`?n.directory:``;r&&aO(r,{status:n.status,error:typeof n.error==`string`?n.error:null,updatedAt:typeof n.updatedAt==`number`?n.updatedAt:Date.now()})})))},sO=e=>{let t=QD(e);t&&(oO(),iO(t,{status:`pending`,error:null,updatedAt:Date.now()}))},cO=e=>{let t=QD(e);if(!t)return;eO(t);let n=qD.get(t);n&&(n.cancelled=!0,n.disposeSettlement?.(),n.disposeSettlement=null,qD.delete(t));let r=KD.get(t);r&&(r.dispose(),KD.delete(t)),GD.delete(t)},lO=e=>{let t=QD(e);return t?GD.get(t)??null:null},uO=(e,t)=>{let n=ft.getState().dictionary;return pt(n,e,t)},dO=e=>({status:`failed`,error:e,updatedAt:Date.now()}),fO=(e,t,n)=>{let r=dO(t);return iO(e,r),n?.(r),r},pO=async(e,t=()=>!0)=>{try{let n=await tO(e);return t()?iO(e,n)?n:lO(e):null}catch{return null}},mO=(e,t,n=UD)=>{let r=QD(e),i=$D(r);oO();let a=!1,o=null,s=null,c=!1,l=null,u=null,d=()=>{},f=()=>{o&&clearTimeout(o),o=null,s&&clearInterval(s),s=null},p=()=>{a||s||(s=setInterval(()=>{a||c||(c=!0,pO(e,()=>!a&&$D(r)===i).finally(()=>{c=!1}))},Number.isFinite(n)?Math.max(1,n):UD))},m=e=>{a||(a=!0,f(),l?.(),l=null,e&&u?.(e))},h=new Promise((n,i)=>{u=i;let s=e=>{a||(a=!0,f(),l?.(),l=null,e())};d=e=>{if(e){if(e.status===`ready`){s(()=>n(e));return}e.status===`failed`&&s(()=>i(Error(e.error||`Worktree bootstrap failed`)))}},l=rO((e,t)=>{QD(e)===r&&d(t)}),o=setTimeout(()=>{s(()=>{let t=fO(e,uO(`worktree.bootstrap.toast.timeoutDescription`));i(Error(t.error||`Timed out waiting for worktree bootstrap`))})},Math.max(0,t)),d(GD.get(r))});return h.catch(()=>void 0),{promise:h,startCompensation:p,dispose:()=>m(Error(`Worktree bootstrap wait cancelled`))}},hO=async(e,t,n,r,i,a)=>{let o=QD(e),s=mO(e,n,r);t.disposeSettlement=s.dispose;let c=await pO(e,()=>!t.cancelled&&qD.get(o)===t&&$D(o)===t.epoch);if(t.cancelled||qD.get(o)!==t){s.dispose();return}if(c?.status===`ready`){s.dispose(),a?.(c);return}if(c?.status===`failed`){s.dispose(),i?.(c),bT.error(uO(`worktree.bootstrap.toast.failed`),{description:c.error||uO(`worktree.bootstrap.toast.failedDescription`)});return}s.startCompensation();try{let e=await s.promise;if(t.cancelled||qD.get(o)!==t)return;a?.(e)}catch(n){if(t.cancelled||qD.get(o)!==t)return;let r=lO(e);if(r?.status===`failed`){i?.(r),bT.error(uO(`worktree.bootstrap.toast.failed`),{description:r.error||uO(`worktree.bootstrap.toast.failedDescription`)});return}let a=fO(e,n instanceof Error?n.message:String(n),i);bT.error(uO(`worktree.bootstrap.toast.failed`),{description:a.error||uO(`worktree.bootstrap.toast.failedDescription`)})}},gO=(e,t)=>{let n=QD(e);if(!n||GD.get(n)?.status!==`pending`||qD.has(n))return;let r={cancelled:!1,epoch:$D(n),promise:Promise.resolve(),disposeSettlement:null};r.promise=hO(e,r,t?.timeoutMs??HD,t?.pollIntervalMs??UD,t?.onFailed,t?.onReady).finally(()=>{qD.get(n)===r&&qD.delete(n)}),qD.set(n,r)},_O=async(e,t=HD)=>{let n=QD(e);if(!n)return;let r=GD.get(n);if(!r||r.status===`ready`)return;if(r.status===`failed`)throw Error(r.error||`Worktree bootstrap failed`);let i=KD.get(n);if(i)return i.promise;let a=()=>{},o=$D(n),s=(async()=>{let r=mO(e,t,UD);a=r.dispose;let i=await pO(e,()=>$D(n)===o);if($D(n)!==o){r.dispose();return}if(i?.status===`ready`){r.dispose();return}if(i?.status===`failed`)throw r.dispose(),Error(i.error||`Worktree bootstrap failed`);r.startCompensation(),await r.promise})().finally(()=>{KD.get(n)?.promise===s&&KD.delete(n)});return KD.set(n,{promise:s,dispose:()=>a()}),s},vO=`openchamber.json`,yO=`.openchamber`,bO=[`.config`,`openchamber`,`projects`];function xO(){let e=Te();return e?.files?e.files:null}var SO=3e3,CO=80,wO=4e3,TO=2e3,EO=300,DO=160,OO=new Set([`macos`,`linux`,`windows`]),kO=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)},AO=(e,t)=>{let n=kO(e),r=t.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/\/+$/,``);return!n||n===`/`?`/${r}`:`${n}/${r}`},jO=e=>AO(AO(e,yO),vO),MO=()=>{let e=`/api`;return e.startsWith(`/`),e},NO=async(e,t)=>{try{let n=await F(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,data:null}}catch{return{ok:!1,data:null}}},PO=async e=>{let t=xO();if(t?.createDirectory)try{if((await t.createDirectory(e))?.success)return!0}catch{}return!!(await NO(`${MO()}/fs/mkdir`,{path:e})).ok},FO=async e=>{let t=xO();if(t?.readFile)try{let n=await t.readFile(e);return typeof n?.content==`string`?n.content:``}catch{return null}try{let t=await F(`${MO()}/fs/read?path=${encodeURIComponent(e)}`,{cache:`no-store`});return t.ok?await t.text():null}catch{return null}},IO=async(e,t)=>{let n=xO();if(n?.writeFile)try{if((await n.writeFile(e,t))?.success)return!0}catch{}return!!(await NO(`${MO()}/fs/write`,{path:e,content:t})).ok},LO=async()=>{try{let e=await F(`${MO()}/fs/home`,{cache:`no-store`});if(!e.ok)throw Error(`Failed to resolve home directory from API`);let t=await e.json().catch(()=>null),n=typeof t?.home==`string`?t.home.trim():``;if(n)return kO(n)}catch{}if(!v()){let e=await De().catch(()=>null);if(e&&e.trim().length>0)return kO(e)}return null},RO=async()=>{let e=await LO();return e?bO.reduce((e,t)=>AO(e,t),e):null},zO=e=>{let t=typeof e?.path==`string`?e.path.trim():``,n=t?kO(t):``;return n&&xe(n)||null},BO=async e=>{let t=await RO();if(!t)return null;let n=zO(e);return n?AO(t,`${n}.json`):null},VO=(e,t)=>e.length<=t?e:e.slice(0,t),HO=e=>typeof e==`string`?VO(e,SO):``,UO=e=>{if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`)continue;let e=n,r=typeof e.id==`string`?e.id.trim():``,i=VO((typeof e.text==`string`?e.text:``).trim(),120);if(!r||!i)continue;let a=!!e.completed,o=typeof e.createdAt==`number`&&Number.isFinite(e.createdAt)&&e.createdAt>=0?e.createdAt:Date.now();t.push({id:r,text:i,completed:a,createdAt:o})}return t},WO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=typeof e.path==`string`?e.path.trim():``,o=typeof e.createdAt==`number`&&Number.isFinite(e.createdAt)&&e.createdAt>=0?e.createdAt:Date.now();!i||!a||n.has(i)||(n.add(i),t.push({id:i,path:a,createdAt:o}))}return t.sort((e,t)=>t.createdAt-e.createdAt)},GO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(typeof r!=`string`)continue;let e=r.trim().toLowerCase();!OO.has(e)||n.has(e)||(n.add(e),t.push(e))}return t},KO=e=>{if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.id==`string`?e.id.trim():``,a=VO(typeof e.name==`string`?e.name.trim():``,CO),o=VO(typeof e.command==`string`?e.command.trim():``,wO);if(!i||!a||!o||n.has(i))continue;n.add(i);let s=typeof e.icon==`string`?e.icon.trim():``,c=GO(e.platforms),l=e.autoOpenUrl===!0,u=VO(typeof e.openUrl==`string`?e.openUrl.trim():``,TO),d=VO(typeof e.desktopOpenSshForward==`string`?e.desktopOpenSshForward.trim():``,EO);t.push({id:i,name:a,command:o,icon:s||null,...l?{autoOpenUrl:!0}:{},...u?{openUrl:u}:{},...d?{desktopOpenSshForward:d}:{},...c.length>0?{platforms:c}:{}})}return t},qO=e=>{let t=KO(e?.actions),n=typeof e?.primaryActionId==`string`?e.primaryActionId.trim():``;return{actions:t,primaryActionId:n&&t.some(e=>e.id===n)?n:null}},JO=e=>({notes:HO(e?.notes),todos:UO(e?.todos)}),YO=e=>({...JO(e),plans:WO(e?.plans)}),XO=e=>e.trim().toLowerCase().replace(/[`*_#>[\](){}.!?,:;"']/g,``).replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`plan`,ZO=e=>VO(e.trim(),DO),QO=()=>fe(),$O=async e=>{let t=await RO(),n=zO(e);return!t||!n?null:AO(t,n)},ek=async e=>{let t=await $O(e);return t?AO(t,`plans`):null},tk=(e,t)=>{let n=ZO(e)||`Plan`,r=t.trim();return r?`# ${n}\n\n${r}`:`# ${n}\n`},nk=e=>{let t=(typeof e==`string`?e:``).replace(/\r\n?/g,`
|
|
466
|
+
`),n=t.match(/^\s*#\s+(.+?)\s*(?:\n+|$)/);if(n){let e=ZO(n[1]),r=t.slice(n[0].length).replace(/^\n+/,``);return{title:e||`Plan`,body:r}}return{title:ZO((t.split(`
|
|
467
|
+
`).map(e=>e.trim()).find(Boolean)||`Plan`).replace(/^#+\s*/,``))||`Plan`,body:t.trim()}};async function rk(e){let t=typeof e?.path==`string`?e.path.trim():``;if(!t)return null;let n=await BO(e),r=async e=>{let t=await FO(e);return t===null?null:t},i=e=>{if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;try{let e=JSON.parse(t);return!e||typeof e!=`object`?null:e}catch{return null}};if(n){let e=i(await r(n));if(e)return e}let a=i(await r(jO(t)));if(!a)return null;try{await ik(e,a)&&await Tk(t)}catch{}return a}async function ik(e,t){let n=typeof e?.path==`string`?e.path.trim():``;if(!n)return!1;let r=await RO(),i=await BO(e);if(!r||!i)return!1;try{if(!await PO(r))return!1;let e=await FO(i),a={};if(typeof e==`string`&&e.trim())try{let t=JSON.parse(e);t&&typeof t==`object`&&!Array.isArray(t)&&(a=t)}catch{a={}}let o={};return a.version!==void 0&&(o.version=a.version),a.scheduledTasks!==void 0&&(o.scheduledTasks=a.scheduledTasks),await IO(i,JSON.stringify({...a,...t,...o,projectPath:kO(n)},null,2))}catch(e){return console.error(`Failed to write openchamber config:`,e),!1}}async function ak(e,t){return ik(e,{...await rk(e)||{},...t})}async function ok(e){return(await rk(e))?.[`setup-worktree`]??[]}async function sk(e,t){return ak(e,{"setup-worktree":t.filter(e=>e.trim().length>0)})}async function ck(e){return(await rk(e))?.[`setup-worktree-wait`]===!0}async function lk(e,t){return ak(e,{"setup-worktree-wait":t})}async function uk(e){let t=await rk(e);return Ce(t?.draftStarters)}async function dk(e,t){return ak(e,{draftStarters:Ce(t)})}async function fk(e){let t=await rk(e);return JO({notes:t?.projectNotes,todos:t?.projectTodos})}async function pk(e,t){let n=JO({notes:t.notes,todos:t.todos});return ak(e,{projectNotes:n.notes,projectTodos:n.todos})}async function mk(e){let t=await rk(e);return YO({notes:t?.projectNotes,todos:t?.projectTodos,plans:t?.projectPlanFiles})}async function hk(e){return WO((await rk(e))?.projectPlanFiles)}async function gk(e,t){return ak(e,{projectPlanFiles:WO(t)})}async function _k(e){let t=typeof e==`string`?e.trim():``;if(!t)return null;let n=await FO(t);if(n===null)return null;let r=nk(n);return{title:r.title,body:r.body,raw:n,path:t}}var vk=async e=>{let t=xO();if(t?.delete)try{if((await t.delete(e))?.success!==!1)return!0}catch{}return!!(await NO(`${MO()}/fs/delete`,{path:e})).ok};async function yk(e,t){let n=typeof t==`string`?t.trim():``;if(!n)return!1;let r=await hk(e),i=r.find(e=>e.id===n);return!i||!await gk(e,r.filter(e=>e.id!==n))?!1:(await vk(i.path).catch(()=>!1),!0)}async function bk(e,t,n){let r=typeof t==`string`?t:``;if(!r.trim())return null;let i=nk(r);return xk(e,{title:i.title||ZO(n??``)||`Plan`,body:i.body})}async function xk(e,t){let n=await ek(e);if(!n)return null;let r=ZO(t.title)||`Plan`,i=Date.now(),a=QO(),o=AO(n,`${i}-${XO(r)}.md`),s=await $O(e);if(!s)return null;let c=await PO(s),l=c?await PO(n):!1;if(!c||!l||!await IO(o,tk(r,t.body)))return null;let u=await hk(e),d={id:a,path:o,createdAt:i};return await gk(e,[d,...u])?d:null}async function Sk(e){let t=await rk(e);return qO({actions:t?.projectActions,primaryActionId:t?.projectActionsPrimaryId})}async function Ck(e,t){let n=qO({actions:t.actions,primaryActionId:t.primaryActionId});return ak(e,{projectActions:n.actions,projectActionsPrimaryId:n.primaryActionId??void 0})}function wk(e,t){return e.replace(/\$ROOT_PROJECT_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_PROJECT_PATH\}/g,t.rootWorktreePath).replace(/\$ROOT_WORKTREE_PATH/g,t.rootWorktreePath).replace(/\$\{ROOT_WORKTREE_PATH\}/g,t.rootWorktreePath)}async function Tk(e){let t=jO(e),n=xO();if(n?.delete)try{await n.delete(t);return}catch{}try{await NO(`${MO()}/fs/delete`,{path:t})}catch{}}var Ek=e=>typeof e==`number`&&Number.isFinite(e)?e:0,Dk=e=>Ek(e.input)+Ek(e.output)+Ek(e.reasoning)+Ek(e.cache?.read)+Ek(e.cache?.write),Ok=e=>e?.type===`compaction`,kk=e=>!!e&&e.some(Ok),Ak=(e,t)=>{for(let n=e.length-1;n>=0;--n){let r=e[n];if(r.role!==`assistant`){if(r.id&&kk(t(r.id)))return{compacted:!0};continue}let i=r.tokens;if(!i)continue;let a=Dk(i);if(a>0)return{messageId:r.id??``,totalTokens:a,tokens:i}}return null},jk=500,Mk=2592e6;function Nk(e){let t=Date.now()-Mk,n=e.filter(e=>e.time>=t);return n.length<=jk?n:n.slice(n.length-jk)}function Pk(e){let t={session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}};for(let n of e)n.viewed||(n.session&&(t.session.unseenCount[n.session]=(t.session.unseenCount[n.session]??0)+1,n.type===`error`&&(t.session.unseenHasError[n.session]=!0)),n.directory&&(t.project.unseenCount[n.directory]=(t.project.unseenCount[n.directory]??0)+1,n.type===`error`&&(t.project.unseenHasError[n.directory]=!0)));return t}var Fk=Oe((e,t)=>({list:[],index:{session:{unseenCount:{},unseenHasError:{}},project:{unseenCount:{},unseenHasError:{}}},append:n=>{let r=t().list,i=Nk([...r,n]);e({list:i,index:Pk(i)})},markSessionViewed:n=>{let r=t();if((r.index.session.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.session===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:Pk(i)})},markProjectViewed:n=>{let r=t();if((r.index.project.unseenCount[n]??0)===0)return;let i=r.list.map(e=>e.directory===n&&!e.viewed?{...e,viewed:!0}:e);e({list:i,index:Pk(i)})},sessionUnseenCount:e=>t().index.session.unseenCount[e]??0,sessionHasError:e=>t().index.session.unseenHasError[e]??!1,projectUnseenCount:e=>t().index.project.unseenCount[e]??0,projectHasError:e=>t().index.project.unseenHasError[e]??!1}));function Ik(e){Fk.getState().append(e)}function Lk(e){Fk.getState().markSessionViewed(e)}function Rk(e){let t=(0,V.c)(2),n;return t[0]===e?n=t[1]:(n=t=>t.index.session.unseenCount[e]??0,t[0]=e,t[1]=n),Fk(n)}var zk=/^(.*)\.(\d+)$/,Bk=[`session.next.step.`,`session.next.text.`,`session.next.reasoning.`,`session.next.tool.`,`session.next.shell.`,`session.next.compaction.`],Vk=new Set([`session.next.step.ended`,`session.next.step.failed`]);function Hk(e){return zk.exec(e)?.[1]??e}function Uk(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function Wk(e){let t=e.sessionID;if(typeof t==`string`&&t.length>0)return t;let n=e.sessionId;if(typeof n==`string`&&n.length>0)return n}function Gk(e){let t=Uk(e.durable);if(!t)return!1;let n=t.kind??t.type??t.source;if(typeof n==`string`&&n.toLowerCase()===`sync`||t.sync===!0)return!0;let r=t.aggregateID;return!!(typeof r==`string`&&r.startsWith(`sync:`))}function Kk(e){let t=Uk(e.location);if(t){let e=t.path??t.directory;if(typeof e==`string`&&e.length>0)return e}let n=e.directory;if(typeof n==`string`&&n.length>0)return n}function qk(e){let t=Uk(e);if(!t)return e;if(t.payload&&typeof t.payload==`object`){let e=t.payload;if(typeof e.type==`string`)return{...e,...typeof t.directory==`string`&&!Kk(e)?{directory:t.directory}:{}}}return e}function Jk(e,t){if(e===`session.status`){let e=Wk(t),n=t.status;if(e&&n&&typeof n==`object`)return{sessionID:e,status:n}}return t}function Yk(e,t){let n=Wk(t);return n?e===`session.next.prompt.admitted`?{admissionHint:{sessionID:n,messageID:typeof t.messageID==`string`?t.messageID:void 0},domainActivityHint:{sessionID:n,kind:`activity`}}:Vk.has(e)?{domainActivityHint:{sessionID:n,kind:`terminal`}}:Bk.some(t=>e.startsWith(t))||e.startsWith(`session.next.`)?{domainActivityHint:{sessionID:n,kind:`activity`}}:{}:{}}function Xk(e){let t=Uk(qk(e));if(!t)return{action:`drop`,reason:`invalid`};let n=t.type;if(typeof n!=`string`||n.length===0)return{action:`drop`,reason:`invalid`};if(Gk(t))return{action:`drop`,reason:`sync-duplicate`};let r=Hk(n),i=Uk(t.data),a=Uk(t.properties),o=i??a;if(!o)return r.startsWith(`openchamber:`)?{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:a??{},locationDirectory:Kk(t)}}:{action:`drop`,reason:`invalid`};let s=Jk(r,o),c=Kk(t)??Kk(o)??(()=>{let e=Uk(s.info);return typeof e?.directory==`string`?e.directory:void 0})(),l=Yk(r,s);return{action:`emit`,event:{id:typeof t.id==`string`?t.id:void 0,type:r,properties:s,locationDirectory:c,...l}}}function Zk(e){return{...e.id?{id:e.id}:{},type:e.type,properties:e.properties}}var Qk=33,$k=200,eA=1e4,tA=8,nA=250,rA=3e4,iA=6e4,aA=2,oA=2e3,sA=8e3,cA=250,lA=5e3,uA=6e4,dA=8,fA=e=>{let t=e;if(t.type!==`openchamber:session-status`)return null;let n=typeof t.properties?.sessionID==`string`&&t.properties.sessionID.length>0?t.properties.sessionID:typeof t.properties?.sessionId==`string`&&t.properties.sessionId.length>0?t.properties.sessionId:``,r=typeof t.properties?.status==`string`?t.properties.status:``;if(!n||!r)return null;let i=null;if(r===`idle`||r===`busy`)i={type:r};else if(r===`retry`){let e=t.properties?.metadata;typeof e?.attempt==`number`&&typeof e.message==`string`&&typeof e.next==`number`&&(i={type:`retry`,attempt:e.attempt,message:e.message,next:e.next})}return i?{id:typeof t.id==`string`&&t.id.length>0?t.id:`openchamber-status-${n}-${Date.now()}`,type:`session.status`,properties:{sessionID:n,status:i}}:null},pA=e=>{if(!e||typeof e!=`object`)return{status:`unusable`};let t=fA(e);if(t){let e=t.properties;return{status:`event`,event:t,normalized:{id:typeof t.id==`string`?t.id:void 0,type:`session.status`,properties:e}}}let n=Xk(e);return n.action===`drop`?n.reason===`sync-duplicate`?{status:`declined`}:{status:`unusable`}:{status:`event`,event:Zk(n.event),normalized:n.event}};function mA(e,t,n,r){if(typeof t==`object`&&t&&typeof t.data==`object`&&t.data!==null&&r&&r.length>0)return r;let i=typeof e==`object`&&e&&typeof e.directory==`string`?e.directory:null;if(i&&i.length>0)return i;if(r&&r.length>0)return r;let a=typeof n.properties==`object`&&n.properties!==null?n.properties:null,o=typeof a?.directory==`string`?a.directory:null;if(o&&o.length>0)return o;let s=typeof a?.info==`object`&&a.info!==null?a.info:null,c=typeof s?.directory==`string`?s.directory:null;return c&&c.length>0?c:`global`}function hA(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.type==`string`?e:t.payload&&typeof t.payload==`object`&&typeof t.payload.type==`string`?t.payload:null}function gA(e){let t=`/api`;try{let e=z;typeof e.getBaseUrl==`function`&&(t=e.getBaseUrl())}catch{t=`/api`}let n=t.endsWith(`/`)?t:`${t}/`;return a().websocket(`${n}global/event/ws`,e&&e.length>0?{lastEventId:e}:void 0)}function _A(e){let t=gA(e);return He(t)}function vA(e){let{sdk:t,onEvent:n,onFlushStart:r,onFlushEnd:i,onNormalizedEvent:a,onReconnect:o,onCompensation:u,onRecoveryContextCaptured:d,onDisconnect:f,onTransportActivity:p,onTransportSwitch:m,routeDirectory:h,transport:_=`auto`,heartbeatTimeoutMs:v=rA,reconnectDelayMs:y=nA,wsReadyTimeoutMs:b}=e,x=b??(l()?sA:oA),S=new AbortController,C=!1,w,T=0,E,D=0,O=null,k=new Map,A=e=>{let t=k.get(e);return t||(t={queue:[],buffer:[],coalesced:new Map,timer:void 0,last:0},k.set(e,t),t)},j=e=>{if(e.type===`session.status`)return`session.status:${e.properties.sessionID}`;if(e.type===`session.updated`){let t=e.properties;return t.info?.id?`session.updated:${t.info.id}`:void 0}if(e.type===`lsp.updated`)return`lsp.updated`;if(e.type===`message.part.delta`){let t=e.properties;return`message.part.delta:${t.messageID}:${t.partID}:${t.field}`}},ee=e=>{let t=k.get(e);if(!t||(t.timer&&=(clearTimeout(t.timer),void 0),t.queue.length===0))return;let a=t.queue;t.queue=t.buffer,t.buffer=a,t.queue.length=0,t.coalesced.clear(),t.last=Date.now(),ys.pipeline.flush(a.length),r?.();try{for(let t of a)n(e,t)}finally{i?.()}t.buffer.length=0},te=()=>{for(let e of k.keys())ee(e)},M=e=>{let t=A(e);if(t.timer)return;let n=Date.now()-t.last;t.timer=setTimeout(()=>ee(e),Math.max(0,(Date.now()<he?$k:Qk)-n))},ne=e=>new Promise(t=>setTimeout(t,e)),re=e=>e instanceof DOMException&&e.name===`AbortError`||typeof e==`object`&&!!e&&e.name===`AbortError`,ie=()=>typeof navigator==`object`&&navigator!==null&&navigator.onLine===!1,ae=()=>typeof document<`u`&&document.visibilityState!==`visible`,oe=e=>{if(!e||typeof e!=`object`)return;let t=e.status;if(typeof t==`number`)return t;let n=e.response?.status;if(typeof n==`number`)return n},se=e=>!(e<400||e>=500||e===408||e===429),ce=e=>new Promise(t=>{if(e<=0||S.signal.aborted){t();return}let n=()=>{a!==void 0&&(clearTimeout(a),a=void 0),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`online`,r),globalThis.window.removeEventListener(`openchamber:system-resume`,r)),typeof document<`u`&&document.removeEventListener(`visibilitychange`,i),S.signal.removeEventListener(`abort`,r)},r=()=>{n(),t()},i=()=>{typeof document<`u`&&document.visibilityState===`visible`&&r()},a=setTimeout(r,e);globalThis.window!==void 0&&(globalThis.window.addEventListener(`online`,r,{once:!0}),globalThis.window.addEventListener(`openchamber:system-resume`,r,{once:!0})),typeof document<`u`&&document.addEventListener(`visibilitychange`,i),S.signal.addEventListener(`abort`,r,{once:!0})}),le=e=>{if(e<=0)return 0;if(ie())return uA;let t=ae()?uA:lA,n=Math.min(e-1,dA);return Math.min(t,cA*2**n)},ue=!1,N,de=Date.now(),fe,pe=_===`ws`?`ws`:`sse`,P=null,me=0,he=0,F=e=>{O||(O={lastEventId:w&&w.length>0?w:null,disconnectedAt:Date.now(),runtimeGeneration:s(),reason:e},d?.({lastEventId:O.lastEventId,disconnectedAt:O.disconnectedAt,runtimeGeneration:O.runtimeGeneration,reason:O.reason}))},ge=e=>{C||(C=!0,F(e),f?.(e))},I=()=>{let e=O;O=null;let t=e!==null;u?.({lastEventId:e?.lastEventId??(w&&w.length>0?w:null),disconnectedAt:e?.disconnectedAt??null,runtimeGeneration:e?.runtimeGeneration??s(),reason:e?.reason??`ready`,transport:pe,isReconnect:t})},_e=()=>{C=!1,me=0,te(),o?.(),I()},ve=(e,t,n)=>{if(n&&typeof n.type==`string`&&n.type.startsWith(`session.next.`)){a?.(e,n);return}n&&a?.(e,n);let r=t,i=h?.(e,r)||e,o=A(i);if(r.type===`message.part.updated`){let e=r.properties.part,t=typeof e?.messageID==`string`?e.messageID:void 0,n=typeof e?.id==`string`?e.id:void 0;if(t&&n){let e=`message.part.delta:${t}:${n}:`;for(let t of o.coalesced.keys())t.startsWith(e)&&o.coalesced.delete(t)}}let s=j(r);if(s){let e=o.coalesced.get(s);if(e!==void 0){if(r.type===`message.part.delta`){let t=o.queue[e],n=r.properties;o.queue[e]={...r,properties:{...r.properties,delta:t.properties.delta+n.delta}}}else o.queue[e]=r;ys.pipeline.coalesced(r.type,s);return}o.coalesced.set(s,o.queue.length)}o.queue.push(r),M(i)},ye=(e,t)=>{let n=hA(t);if(!n)return`unusable`;let r=pA(n);if(r.status!==`event`)return r.status===`declined`?`declined`:`unusable`;let i=mA(e,n,r.event,r.normalized.locationDirectory);return ve(i,r.event,r.normalized),`ingested`},be=()=>{de=Date.now(),fe&&clearTimeout(fe),fe=setTimeout(()=>{P=`${pe}_heartbeat_timeout`,N?.abort()},v)},xe=()=>{be(),p?.()},L=()=>{fe&&=(clearTimeout(fe),void 0)},Se=async(e,t)=>{if(t.aborted)throw new DOMException(`Aborted`,`AbortError`);let n,r=new Promise((e,r)=>{n=()=>r(new DOMException(`Aborted`,`AbortError`)),t.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener(`abort`,n)}},Ce=async e=>{be();let n=await Se(t.global.event({signal:e,...w&&w.length>0?{headers:{"Last-Event-ID":w}}:{},onSseEvent:e=>{xe(),typeof e.id==`string`&&e.id.length>0&&(w=e.id)},onSseError:e=>{re(e)||ue||(ue=!0,console.error(`[event-pipeline] SSE stream error`,e))}}),e);_e();let r=Date.now();xe();for await(let e of n.stream)xe(),ue=!1,ye(e,e.payload??e),!(Date.now()-r<tA)&&(r=Date.now(),await ne(0));if(!e.aborted){let e=Error(`Global event SSE stream closed`);throw e.reason=`sse_stream_closed`,e}},we=async e=>{try{await c()}catch(e){let t=e instanceof Error?e:Error(`Message stream WebSocket auth token unavailable`);throw _===`auto`&&(T=Date.now()+iA,t.code=`WS_FALLBACK`),t.reason=`ws_auth_token_unavailable`,t}if(e.aborted)throw new DOMException(`Aborted`,`AbortError`);await new Promise((t,n)=>{let r=!1,i=!1,a=0,o=_A(w),s=(e,t=!1)=>{(t||!i)&&_===`auto`&&(T=Date.now()+iA,e.code=`WS_FALLBACK`)},c=setTimeout(()=>{c=void 0;let e=Error(`Message stream WebSocket ready timeout`);s(e),d(e);try{o.close()}catch{}},x),l=()=>{c&&=(clearTimeout(c),void 0),o.onopen=null,o.onmessage=null,o.onerror=null,o.onclose=null},u=()=>{r||(r=!0,e.removeEventListener(`abort`,f),l(),t())},d=t=>{r||(r=!0,e.removeEventListener(`abort`,f),l(),n(t))},f=()=>{try{o.close()}catch{}u()};e.addEventListener(`abort`,f,{once:!0}),o.onopen=()=>{};let p=e=>{_===`auto`&&(T=Date.now()+iA);let t=Error(`Message stream WebSocket invalid frame`);t.reason=e,d(t);try{o.close()}catch{}};o.onmessage=e=>{let t=null;try{t=JSON.parse(String(e.data))}catch{p(`ws_invalid_frame:json`);return}if(!t||typeof t.type!=`string`){p(`ws_invalid_frame:type`);return}if(t.type===`ready`){xe(),i=!0,a=Date.now(),c&&=(clearTimeout(c),void 0),ue=!1,_e();return}if(t.type===`error`){xe();let e=Error(t.message||`Message stream WebSocket error`);e.reason=`ws_error_frame:${t.message||`unknown`}`,s(e),d(e);try{o.close()}catch{}return}if(t.type===`backpressure`){xe(),he=Date.now()+eA;return}if(t.type!==`event`){p(`ws_invalid_frame:type`);return}let n=typeof t.eventId==`string`&&t.eventId.length>0?t.eventId:void 0;if(ye({directory:t.directory,payload:t.payload},t.payload)===`unusable`){n&&(D=E===n?D+1:1,E=n,D>=aA&&(w=n,E=void 0,D=0)),p(`ws_invalid_frame:event_payload`);return}E=void 0,D=0,xe(),ue=!1,n&&(w=n)},o.onerror=()=>{},o.onclose=t=>{if(e.aborted){u();return}let n=Error(`Global message stream WebSocket closed`);n.reason=i?`ws_closed:code=${t?.code??`?`}`:`ws_closed_before_ready`,i||g();let r=a>0?Date.now()-a:0;s(n,i&&r>0&&r<2e3),d(n)}})},Te=()=>typeof WebSocket==`function`?_===`ws`?`ws`:_===`sse`||T>Date.now()?`sse`:`ws`:`sse`;(async()=>{for(;!S.signal.aborted;){N=new AbortController,de=Date.now(),P=null;let e=y,t=Te();pe=t;let n=()=>{P=`pipeline_stopped`,N?.abort()};S.signal.addEventListener(`abort`,n);try{t===`ws`?await we(N.signal):await Ce(N.signal)}catch(n){let r=typeof n==`object`&&n?n.code:void 0;if(t===`ws`&&r===`WS_FALLBACK`)e=0,m?.();else if(!re(n)){me+=1,ue||(ue=!0,console.error(`[event-pipeline] stream failed`,n));let r=typeof n==`object`&&n?n.reason:void 0,i=typeof n==`object`&&n?n.message:void 0,a=typeof r==`string`&&r.length>0?r:typeof i==`string`&&i.length>0?`${t}_error:${i.slice(0,80)}`:`${t}_error:unknown`;ge(a);let o=oe(n);e=o!==void 0&&se(o)?uA:le(me)}}finally{S.signal.removeEventListener(`abort`,n),N=void 0,L()}if(S.signal.aborted)return;P&&P!==`pipeline_stopped`&&(ge(P),me+=1,e=y>0?le(me):0,P=null),e>0&&await ce(e)}})().finally(te);let Ee=()=>{if(!(typeof document>`u`)){if(document.visibilityState===`hidden`){F(`visibility_hidden`);return}document.visibilityState===`visible`&&(Date.now()-de<v||N?.abort())}},R=e=>{e.persisted&&(F(`pageshow_persisted`),N?.abort())},De=()=>{F(`system_resume`),N&&(P=`${pe}_system_resume`,N.abort())},Oe=()=>{C&&(F(`online`),N?.abort())},ke=()=>{N?.abort()};return typeof document<`u`&&(document.addEventListener(`visibilitychange`,Ee),window.addEventListener(`pageshow`,R)),globalThis.window!==void 0&&(globalThis.window.addEventListener(`openchamber:system-resume`,De),globalThis.window.addEventListener(`online`,Oe),globalThis.window.addEventListener(`offline`,ke)),{cleanup:()=>{typeof document<`u`&&(document.removeEventListener(`visibilitychange`,Ee),window.removeEventListener(`pageshow`,R)),globalThis.window!==void 0&&(globalThis.window.removeEventListener(`openchamber:system-resume`,De),globalThis.window.removeEventListener(`online`,Oe),globalThis.window.removeEventListener(`offline`,ke)),S.abort(),L(),te()},reconnect:(e=`manual`)=>{P=`${pe}_${e}`,N?.abort()}}}function yA(e){let t=new Set;for(let[n,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&t.add(n);for(let[n,r]of Object.entries(e.permission??{}))(r?.length??0)>0&&t.add(n);for(let[n,r]of Object.entries(e.question??{}))(r?.length??0)>0&&t.add(n);return t}function bA(e,t){let n=new Set(Array.from(t).filter(Boolean));if(n.size!==0)for(let t of n)delete e.todo[t],delete e.session_diff[t],delete e.session_status[t],e.session_status_observed_at&&delete e.session_status_observed_at[t],delete e.permission[t],delete e.question[t]}function xA(e){let t=[],n=new Set([e.keep,...Array.from(e.preserve??[])]);e.seen.has(e.keep)&&e.seen.delete(e.keep),e.seen.add(e.keep);for(let r of e.seen){if(e.seen.size-t.length<=e.limit)break;n.has(r)||t.push(r)}for(let n of t)e.seen.delete(n);return t}var SA=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},CA=(e,t)=>e?SA(t)<SA(e):!1;function wA(e,t){return e===t?!0:!e||e.type!==t.type?!1:e.type!==`retry`||t.type===`retry`&&e.attempt===t.attempt&&e.message===t.message&&e.next===t.next}function TA(e){return e.type===`global.disposed`||e.type===`server.connected`?{type:`refresh`}:e.type===`project.updated`?{type:`project`,project:e.properties}:null}function EA(e,t){let n=[...e.projects],r=ls.search(n,t.id,e=>e.id);return r.found?n[r.index]={...n[r.index],...t}:n.splice(r.index,0,t),{...e,projects:n}}function DA(e,t,n){t&&(n?.(t,void 0),bA(e,[t]))}var OA=e=>e.title===`smartfetch-secondary`;function kA(e,t,n,r){return n.found?(e.session.splice(n.index,1),OA(t)&&DA(e,t.id,r),t.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0):!1}function AA(e,t,n){switch(t.type){case`server.instance.disposed`:return n?.onRefresh?.(``),!1;case`session.created`:{let r=sp(t.properties.info),i=e.session,a=ls.search(i,r.id,e=>e.id);return mp(r)?a.found&&CA(i[a.index],r)?!1:(a.found?i[a.index]=r:(i.splice(a.index,0,r),jA(e),r.parentID||(e.sessionTotal+=1)),!0):kA(e,r,a,n?.onSetSessionTodo)}case`session.updated`:{let r=sp(t.properties.info),i=e.session,a=ls.search(i,r.id,e=>e.id);return a.found&&CA(i[a.index],r)?!1:!mp(r)||r.time.archived?kA(e,r,a,n?.onSetSessionTodo):(a.found?i[a.index]=r:(i.splice(a.index,0,r),jA(e)),!0)}case`session.deleted`:{let r=t.properties.info,i=e.session,a=ls.search(i,r.id,e=>e.id);return a.found&&i.splice(a.index,1),DA(e,r.id,n?.onSetSessionTodo),r.parentID||(e.sessionTotal=Math.max(0,e.sessionTotal-1)),!0}case`session.diff`:{let n=t.properties;return e.session_diff[n.sessionID]=ap(n.diff),!0}case`todo.updated`:{let r=t.properties;return e.todo[r.sessionID]=r.todos,n?.onSetSessionTodo?.(r.sessionID,r.todos),!0}case`session.status`:{let r=t.properties;return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),wA(e.session_status[r.sessionID],r.status)?!!n?.now:(e.session_status[r.sessionID]=r.status,!0)}case`session.idle`:{let r=t.properties,i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),wA(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`session.error`:{let r=t.properties,i={type:`idle`};return n?.now&&(e.session_status_observed_at[r.sessionID]=n.now()),wA(e.session_status[r.sessionID],i)?!!n?.now:(e.session_status[r.sessionID]=i,!0)}case`message.updated`:case`message.removed`:case`message.part.updated`:case`message.part.removed`:case`message.part.delta`:return!1;case`vcs.branch.updated`:{let n=t.properties;return e.vcs?.branch!==n.branch&&(e.vcs={branch:n.branch},!0)}case`permission.asked`:{let n=t.properties,r=[...e.permission[n.sessionID]??[]],i=ls.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.permission[n.sessionID]=r,!0}case`permission.replied`:{let n=t.properties,r=e.permission[n.sessionID];if(!r)return!1;let i=ls.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.permission[n.sessionID]=t,!0}return!1}case`question.asked`:{let n=t.properties,r=[...e.question[n.sessionID]??[]],i=ls.search(r,n.id,e=>e.id);return i.found?r[i.index]=n:r.splice(i.index,0,n),e.question[n.sessionID]=r,!0}case`question.replied`:case`question.rejected`:{let n=t.properties,r=e.question[n.sessionID];if(!r)return!1;let i=ls.search(r,n.requestID,e=>e.id);if(i.found){let t=[...r];return t.splice(i.index,1),e.question[n.sessionID]=t,!0}return!1}case`lsp.updated`:return n?.onLoadLsp?.(),!1;default:return!1}}function jA(e){if(e.session.length<=e.limit)return;let t=new Set(Object.entries(e.permission??{}).filter(([,e])=>e&&e.length>0).map(([e])=>e));for(;e.session.length>e.limit;){let n=e.session[0];if(t.has(n.id))break;e.session.shift()}}var MA=Oe()(e=>({...sl,actions:{set:t=>e(t),reset:()=>e(sl)}}));function NA(e){if(!e)return!1;for(let t of Object.values(e.question??{}))if(t&&t.length>0)return!0;for(let t of Object.values(e.permission??{}))if(t&&t.length>0)return!0;return!1}function PA(e){let t=Math.max(0,e.stores.length-e.max),n=e.graceMs??0,r=e.stores.filter(t=>!e.pins.has(t)).filter(t=>!e.hasPendingBlockingRequests?.(t)).slice().sort((t,n)=>(e.state.get(t)?.lastAccessAt??0)-(e.state.get(n)?.lastAccessAt??0)),i=[];for(let a of r){let r=e.state.get(a)?.lastAccessAt??0,o=e.now-r,s=o>=e.ttl;!s&&t<=0||!s&&o<n||(i.push(a),t>0&&--t)}return i}function FA(e){return!(!e.directory||!e.hasStore||e.pinned||e.booting||e.loadingSessions||e.hasPendingBlockingRequests)}function IA(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return Math.abs(t).toString(36)}function LA(e){let t=e.slice(0,12).replace(/[^a-zA-Z0-9]/g,`_`);return`oc.dir.${IA(i().trim()||`default`)}.${t}.${IA(e)}`}function RA(e,t){return`${LA(e)}.${t}`}function zA(e,t){try{let n=localStorage.getItem(RA(e,t));return n?JSON.parse(n):void 0}catch{return}}function BA(e,t,n){try{let r=RA(e,t);n===void 0?localStorage.removeItem(r):localStorage.setItem(r,JSON.stringify(n))}catch{}}function VA(e){return{vcs:zA(e,`vcs`),projectMeta:zA(e,`projectMeta`),icon:zA(e,`icon`)}}function HA(e){try{localStorage.removeItem(`${LA(e)}.sessions`)}catch{}}function UA(e,t){BA(e,`vcs`,t)}function WA(e,t){BA(e,`projectMeta`,t)}function GA(e,t){BA(e,`icon`,t)}function KA(e){let t=VA(e);HA(e);let n=Oe()(e=>({...ol,vcs:t.vcs??ol.vcs,projectMeta:t.projectMeta??ol.projectMeta,icon:t.icon??ol.icon,patch:t=>e(t),replace:t=>e(t)}));return n.subscribe((t,n)=>{t.vcs!==n.vcs&&UA(e,t.vcs),t.projectMeta!==n.projectMeta&&WA(e,t.projectMeta),t.icon!==n.icon&&GA(e,t.icon)}),n}var qA=class{children=new Map;lifecycle=new Map;pins=new Map;disposers=new Map;registrySubscribers=new Set;generations=new Map;evictionScheduled=!1;onBootstrap;onDispose;isBooting;isLoadingSessions;notifyRegistrySubscribers(){for(let e of this.registrySubscribers)e()}configure(e){this.onBootstrap=e.onBootstrap,this.onDispose=e.onDispose,this.isBooting=e.isBooting,this.isLoadingSessions=e.isLoadingSessions}mark(e){let t=ne(e);t&&(this.lifecycle.set(t,{lastAccessAt:Date.now()}),this.scheduleEviction())}scheduleEviction(){this.evictionScheduled||(this.evictionScheduled=!0,queueMicrotask(()=>{this.evictionScheduled=!1,this.runEviction()}))}pin(e){let t=ne(e);t&&(this.pins.set(t,(this.pins.get(t)??0)+1),this.mark(t))}unpin(e){let t=ne(e);if(!t)return;let n=(this.pins.get(t)??0)-1;if(n>0){this.pins.set(t,n);return}this.pins.delete(t),this.scheduleEviction()}pinned(e){return(this.pins.get(ne(e))??0)>0}ensureChild(e,t){let n=ne(e);if(!n)throw Error(`No directory provided to ensureChild`);let r=this.children.get(n);return r||(r=KA(n),this.children.set(n,r),this.generations.set(n,(this.generations.get(n)??0)+1),this.notifyRegistrySubscribers()),this.mark(n),(t?.bootstrap??!0)&&r.getState().status===`loading`&&this.onBootstrap?.(n),r}getChild(e){return this.children.get(ne(e))}captureChild(e,t){let n=ne(e),r=this.ensureChild(n,t);return{directory:n,generation:this.generations.get(n)??0,store:r}}isCurrentChildCapture(e){let t=ne(e.directory);return this.children.get(t)===e.store&&this.generations.get(t)===e.generation}disposeDirectory(e){let t=ne(e);if(!FA({directory:t,hasStore:this.children.has(t),pinned:this.pinned(t),booting:this.isBooting?.(t)??!1,loadingSessions:this.isLoadingSessions?.(t)??!1,hasPendingBlockingRequests:this.hasPendingBlockingRequestsForDirectory(t)}))return!1;this.lifecycle.delete(t),this.children.delete(t),this.notifyRegistrySubscribers();let n=this.disposers.get(t);return n&&(n(),this.disposers.delete(t)),this.onDispose?.(t),!0}runEviction(e){let t=[...this.children.keys()];if(t.length===0)return;let n=PA({stores:t,state:this.lifecycle,pins:new Set(t.filter(e=>this.pinned(e))),max:30,ttl:al,graceMs:il,now:Date.now(),hasPendingBlockingRequests:e=>this.hasPendingBlockingRequestsForDirectory(e)}).filter(t=>t!==e);for(let e of n)this.disposeDirectory(e)}hasPendingBlockingRequestsForDirectory(e){return NA(this.getChild(e)?.getState())}update(e,t){let n=this.getChild(e);if(!n)return;let r=t(n.getState());n.setState(r)}getState(e){return this.getChild(e)?.getState()}disposeAll(){for(let e of[...this.children.keys()])this.children.delete(e);this.notifyRegistrySubscribers(),this.lifecycle.clear(),this.pins.clear(),this.disposers.clear()}subscribeRegistry(e){return this.registrySubscribers.add(e),()=>{this.registrySubscribers.delete(e)}}subscribeAll(e){let t=new Map,n=()=>{let n=new Set(this.children.keys());for(let[e,r]of t.entries())n.has(e)||(r(),t.delete(e));for(let[n,r]of this.children.entries())t.has(n)||t.set(n,r.subscribe(e))};n();let r=this.subscribeRegistry(()=>{n(),e()});return()=>{r();for(let e of t.values())e();t.clear()}}subscribeAllSelected(e,t){let n=new Map,r=()=>{let r=new Set(this.children.keys());for(let[e,t]of n.entries())r.has(e)||(t(),n.delete(e));for(let[r,i]of this.children.entries())n.has(r)||n.set(r,i.subscribe((n,r)=>{Object.is(e(n),e(r))||t()}))};r();let i=this.subscribeRegistry(()=>{r(),t()});return()=>{i();for(let e of n.values())e();n.clear()}}},JA=e=>{let t=e.time?.updated;if(typeof t==`number`&&Number.isFinite(t))return t;let n=e.time?.created;return typeof n==`number`&&Number.isFinite(n)?n:0},YA=e=>{let t=e.directory??``,n=e.parentID??``;return[e.id,e.title??``,e.time?.created??0,e.time?.archived??0,t,n,e.share?.url??``].join(`|`)},XA=e=>{switch(e?.type){case`retry`:return 4;case`busy`:return 3;case`idle`:return 1;default:return 0}},ZA=e=>{let t=e?.message;return typeof t==`string`?t:null},QA=(e,t)=>{let n=e?.[t];return typeof n==`number`?n:null},$A=(e,t)=>e?.type===t?.type&&ZA(e)===ZA(t)&&QA(e,`attempt`)===QA(t,`attempt`)&&QA(e,`next`)===QA(t,`next`),ej=(e,t)=>{let n=e.session_status?.[t];if(!n)return null;let r=e.session.find(e=>e.id===t);return{status:n,sessionUpdatedAt:r?JA(r):-1}},tj=(e,t)=>e?t.sessionUpdatedAt===e.sessionUpdatedAt?XA(t.status)>=XA(e.status):t.sessionUpdatedAt>e.sessionUpdatedAt:!0,nj=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(YA(e[n])!==YA(t[n]))return!1;return!0},rj=(e,t)=>{if(e===t)return!0;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){if(!(r in t))return!1;let n=e[r],i=t[r];if(!$A(n,i))return!1}return!0};function ij(e,t){let n=new Map;for(let r of e)for(let e of r.session){if(!e?.id||t?.has(e.id)||e.parentID||!mp(e))continue;let r=n.get(e.id);(!r||JA(e)>=JA(r))&&n.set(e.id,e)}return Array.from(n.values()).sort((e,t)=>JA(t)-JA(e))}function aj(e){let t=new Map;for(let n of e)for(let e of Object.keys(n.session_status??{})){let r=ej(n,e);r&&tj(t.get(e),r)&&t.set(e,r)}let n={};for(let[e,r]of t)n[e]=r.status;return n}function oj(e,t){if(!t)return;let n;for(let r of e){let e=r.session.find(e=>e.id===t);e&&(!n||JA(e)>=JA(n))&&(n=e)}return n}function sj(e,t){if(!t)return;let n;for(let r of e){let e=ej(r,t);e&&tj(n,e)&&(n=e)}return n?.status}var cj=(e,t)=>e<t?-1:+(e>t);function lj(e,t){if(e.error){let n=e.error,r=e.response?.status,i=typeof n==`object`&&n&&`message`in n?String(n.message):String(n),a=Error(`${t} failed${r?` (${r})`:``}: ${i}`);throw r!==void 0&&(a.status=r),a}if(e.data===void 0){let e=Error(`${t} returned no data`);throw e.status=503,e}return e.data}var uj=e=>!e||e.length===0?``:e.map(e=>e.id).sort(cj).join(`|`);function dj(e){return e.reduce((e,t)=>{if(!t?.id||!t.sessionID)return e;let n=e[t.sessionID];return n?n.push(t):e[t.sessionID]=[t],e},{})}function fj(e,t,n){let r=n,i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=t[a];i!==e[a]&&(r===n&&(r={...n}),i?r[a]=i:delete r[a])}return r}function pj(e,t){return t.find(t=>t.worktree===e||t.sandboxes?.includes(e))?.id}async function mj(e,t){let n=await Promise.allSettled([$f(()=>e.path.get().then(e=>t({path:lj(e,`path.get`)}))),$f(()=>e.global.config.get().then(e=>t({config:lj(e,`global.config.get`)}))),$f(()=>e.project.list().then(e=>{t({projects:lj(e,`project.list`).filter(e=>!!e?.id).filter(e=>!!e.worktree&&!e.worktree.includes(`opencode-test`)).sort((e,t)=>cj(e.id,t.id))})}))]),r=n.filter(e=>e.status===`rejected`).map(e=>e.reason);if(r.length&&console.error(`[bootstrap] global bootstrap failed`,r[0]),r.length===n.length){let e=r[0]instanceof Error?r[0].message:String(r[0]);try{let t=await F(`/health`,{signal:AbortSignal.timeout(4e3)});if(t.ok){let n=await t.json();n.lastOpenCodeError?e=n.lastOpenCodeError:n.openCodeRunning||(e=`OpenCode process is not running`)}}catch{}t({ready:!0,error:{type:`init`,message:e}})}else t({ready:!0,error:void 0})}async function hj(e){let{directory:t,sdk:n,getState:r,set:i,global:a}=e,o=r(),s=o.status!==`complete`,c=pj(t,a.projects);if(c&&i({project:c}),Object.keys(o.config??{}).length===0&&Object.keys(a.config??{}).length>0){let e=a.config;i({config:e}),jd(t,e)}s&&i({status:`partial`});let l=await Promise.allSettled([c?Promise.resolve():$f(()=>n.project.current().then(e=>i({project:lj(e,`project.current`).id}))),$f(()=>n.config.get().then(e=>{let n=lj(e,`config.get`);i({config:n}),jd(t,n)})),$f(()=>n.path.get().then(e=>{let n=lj(e,`path.get`);i({path:n});let r=pj(n?.directory??t,a.projects);r&&i({project:r})})),$f(async()=>{let e=Date.now(),a=r().session_status,o=lj(await n.session.status(t?{directory:t}:void 0),`session.status`),s=r().session_status,c={...r().session_status_observed_at};for(let t of Object.keys(o))s[t]===a[t]&&(c[t]=e);i({session_status:fj(a,s,o),session_status_observed_at:c,session_status_snapshot_at:e})})]),u=l.filter(e=>e.status===`rejected`).map(e=>e.reason),[,,d]=l,f=d.status===`rejected`&&!r().project;if(u.length===l.length||f){console.error(`[bootstrap] directory bootstrap failed for ${t}`,u[0]);return}s&&i({status:`complete`}),Promise.allSettled([$f(()=>n.mcp.status().then(e=>i({mcp:lj(e,`mcp.status`)}))),$f(()=>n.lsp.status().then(e=>i({lsp:lj(e,`lsp.status`)}))),$f(()=>n.vcs.get().then(e=>{let t=r();if(e.error)throw Error(`vcs.get failed: ${String(e.error)}`);i({vcs:e.data??t.vcs})})),$f(async()=>{let e=r(),a=new Map(Object.entries(e.question??{}).map(([e,t])=>[e,uj(t)])),o=await n.question.list(t?{directory:t}:void 0);if(o.error){let e=o.response?.status,t=Error(`question.list failed${e?` (${e})`:``}: ${String(o.error)}`);throw e!==void 0&&(t.status=e),t}let s=dj((o.data??[]).filter(e=>!!e?.id&&!!e.sessionID)),c=r(),l={...c.question};for(let[e,t]of Object.entries(s))l[e]=t.filter(e=>!!e?.id).sort((e,t)=>cj(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;uj(c.question[e])===t&&delete l[e]}i({question:l})}),$f(async()=>{let e=r(),a=new Map(Object.entries(e.permission??{}).map(([e,t])=>[e,uj(t)])),o=await n.permission.list(t?{directory:t}:void 0);if(o.error){let e=o.response?.status,t=Error(`permission.list failed${e?` (${e})`:``}: ${String(o.error)}`);throw e!==void 0&&(t.status=e),t}let s=dj((o.data??[]).filter(e=>!!e?.id&&!!e?.sessionID)),c=r(),l={...c.permission};for(let[e,t]of Object.entries(s))l[e]=t.filter(e=>!!e?.id).sort((e,t)=>cj(e.id,t.id));for(let e of a.keys()){if(s[e])continue;let t=a.get(e)??``;uj(c.permission[e])===t&&delete l[e]}i({permission:l})})]).then(e=>{let n=e.filter(e=>e.status===`rejected`).map(e=>e.reason);n.length&&console.error(`[bootstrap] deferred phase failed for ${t}`,n[0])})}var gj=Oe()(()=>({streamingMessageIds:new Map,messageStreamStates:new Map}));function _j(){gj.setState({streamingMessageIds:new Map,messageStreamStates:new Map})}var vj=1e3;function yj(e,t){let n=Date.now(),r=gj.getState(),i=r.streamingMessageIds,a=r.messageStreamStates,o=new Map,s=new Map(a),c=!1,l=new Set;for(let[t,n]of Object.entries(e.session_status??{}))n.type===`busy`&&l.add(t);let u=(e,t)=>{o.set(e,null);let r=s.get(t);r&&r.phase===`streaming`&&s.set(t,{...r,phase:`completed`,completedAt:n}),c=!0},d=t?.directory??``,f=H();t?.store;for(let e of l){let t=[];if(f&&d&&(t=Gu(f.getTranscript(U(d,e)))),t.length===0)continue;let r=null;for(let e=t.length-1;e>=0&&t[e].role!==`user`;e--)if(t[e].role===`assistant`){r=t[e];break}if(!r){let t=i.get(e);t&&u(e,t);continue}i.get(e)!==r.id&&(c=!0),o.set(e,r.id);let a=s.get(r.id);!a||a.phase!==`streaming`?(s.set(r.id,{phase:`streaming`,startedAt:a?.startedAt??n,lastUpdateAt:n}),c=!0):n-a.lastUpdateAt>=vj&&(s.set(r.id,{...a,lastUpdateAt:n}),c=!0)}for(let[e,t]of i)t&&(l.has(e)||u(e,t));c&&gj.setState({streamingMessageIds:o,messageStreamStates:s})}function bj(e){let t=e.listCanonicalScopes(e.sessionID).filter(t=>t.sessionID===e.sessionID&&t.transport===e.transport&&t.generation===e.generation);return t.length>0?[...t]:[{directory:e.resolvedDirectory,sessionID:e.sessionID,transport:e.transport,generation:e.generation}]}function xj(e){return!e.idleSessionID||!e.directory||e.directory===`global`?{action:`none`}:e.parentID?{action:`materialize-parent`,sessionID:e.parentID}:e.idleSessionID===e.activeSessionID&&e.directory===e.activeDirectory?{action:`materialize-now`,sessionID:e.idleSessionID}:{action:`defer-until-viewed`,sessionID:e.idleSessionID}}var Sj=new Set,Cj=(e,t)=>`${e}\n${t}`;function wj(e,t){!e||e===`global`||!t||Sj.add(Cj(e,t))}function Tj(e,t){let n=Cj(e,t);return Sj.has(n)?(Sj.delete(n),!0):!1}var Ej=(e,t)=>{if(e.type!==`session.created`&&e.type!==`session.updated`&&e.type!==`session.deleted`)return null;let n=e.properties;if(!n||typeof n!=`object`)return null;let r=n.info;if(!r||typeof r!=`object`)return null;let i=r;if(typeof i.id!=`string`||!i.time)return null;let a=sp(i),o=typeof t==`string`&&t!==`global`?t.trim():``,s=a.directory;return!o||typeof s==`string`&&s.trim()?a:{...a,directory:o}},Dj=e=>{let t=Y.getState();return[...t.activeSessions,...t.archivedSessions].find(t=>t.id===e)??null},Oj=e=>{let t=e;return JSON.stringify([e.title??``,e.time?.archived??0,e.share?.url??``,t.directory??``,t.parentID??``,t.hasChildren??!1])},kj=(e,t)=>{if(e.type===`session.created`||e.type===`session.updated`){let n=Ej(e,t);if(n){let e=Dj(n.id);(!e||Oj(e)!==Oj(n))&&!CA(e,n)&&Y.getState().upsertSession(n)}return}if(e.type===`session.deleted`){let t=e.properties?.sessionID??Ej(e)?.id;t&&Y.getState().removeSessions([t])}};function Aj(e){return Object.entries(e.session_status??{}).filter(([,e])=>e&&e.type!==`idle`).map(([e])=>e)}function jj(e,t){let n=t?.viewedSession;return!n?.sessionId||n.directory!==t?.directory?[]:[n.sessionId]}function Mj(e,t){let n=new Set;for(let[t,r]of Object.entries(e.session_status??{}))r&&r.type!==`idle`&&n.add(t);let r=new Set;for(let t of e.session){let e=t.parentID;e&&r.add(e)}for(let e of r)n.add(e);let i=t?.viewedSession;if(i?.sessionId&&i.directory===t?.directory){let t=i.sessionId;(e.session.some(e=>e.id===t)||Object.hasOwn(e.session_status??{},t))&&n.add(t)}return Array.from(n)}var Nj=e=>{let t=new Map;for(let n of e)t.set(n.id,n);return t},Pj=(e,t,n)=>{let r=n??Nj(t),i=[],a=new Set,o=e;for(;o&&!a.has(o);)a.add(o),i.push(o),o=r.get(o)?.parentID;return i},Fj=e=>{let{autoAccept:t,sessions:n,sessionById:r,sessionID:i}=e;if(Object.keys(t).length===0)return!1;let a=Pj(i,n,r);for(let e of a)if(Object.prototype.hasOwnProperty.call(t,e))return t[e]===!0;return!1},Ij=t({usePermissionStore:()=>Bj}),Lj=async e=>{if(!e.ok)throw Error(`Permission auto-accept request failed (${e.status})`);let t=await e.json();if(!t.sessions||typeof t.sessions!=`object`)throw Error(`Invalid permission auto-accept response`);let n={};for(let[e,r]of Object.entries(t.sessions))e&&typeof r==`boolean`&&(n[e]=r);return{sessions:n}},Rj=async(e,t)=>Lj(await F(e,t)),zj=(e,t,n)=>Fj({autoAccept:e,sessions:[],sessionById:t,sessionID:n}),Bj=Oe()(ke((e,t)=>({autoAccept:{},loaded:!1,saving:!1,hydrate:async()=>{let n=await Rj(`/api/permission-auto-accept`),r=Object.entries(t().autoAccept).filter(([e,t])=>!e.includes(`/`)&&typeof t==`boolean`);if(Object.keys(n.sessions).length===0&&r.length>0)for(let[e,t]of r)!e||typeof t!=`boolean`||(n=await Rj(`/api/permission-auto-accept/sessions/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:t})}));e({autoAccept:n.sessions,loaded:!0})},reset:()=>{e({autoAccept:{},loaded:!1,saving:!1})},applySnapshot:t=>{let n={};for(let[e,r]of Object.entries(t.sessions??{}))e&&typeof r==`boolean`&&(n[e]=r);e({autoAccept:n,loaded:!0})},isSessionAutoAccepting:e=>{if(!e)return!1;let n=t().autoAccept;return Object.keys(n).length!==0&&zj(n,Pd(),e)},setSessionAutoAccept:async(t,n)=>{if(t){if(v()){let r=await F(`/api/notifications/auto-accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:t,enabled:n})});if(!r.ok)throw Error(`Permission auto-accept request failed (${r.status})`);e(e=>({autoAccept:{...e.autoAccept,[t]:n},loaded:!0}));return}e({saving:!0});try{let r=$.getState().getDirectoryForSession(t)??z.getDirectory()??void 0;e({autoAccept:(await Rj(`/api/permission-auto-accept/sessions/${encodeURIComponent(t)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:n,directory:r})})).sessions,loaded:!0})}finally{e({saving:!1})}}}}),{name:`permission-store`,storage:h(),partialize:e=>({autoAccept:e.autoAccept})})),Vj=Oe(()=>({statusById:new Map})),Hj=e=>e===`busy`?`busy`:e===`retry`?`retry`:`idle`,Uj=e=>Yo(e)??e,Wj=(e,t,n)=>{Vj.setState(r=>{let i=r.statusById.get(e);if(n===`idle`){if(!i)return r;let t=new Map(r.statusById);return t.delete(e),{statusById:t}}if(i&&i.status===n&&i.directory===t)return r;let a=new Map(r.statusById);return a.set(e,{status:n,directory:t}),{statusById:a}})},Gj=(e,t)=>{switch(t.type){case`session.status`:{let n=t.properties;if(typeof n?.sessionID!=`string`||!n.sessionID)return;let r=Hj(n.status?.type);Wj(n.sessionID,Uj(e),r);return}case`session.idle`:case`session.error`:{let n=t.properties;typeof n?.sessionID==`string`&&n.sessionID&&Wj(n.sessionID,Uj(e),`idle`);return}default:return}},Kj=(e,t,n)=>{let r=Uj(e),i=new Set(n??[]);Vj.setState(e=>{let n=!1,a=new Map(e.statusById);for(let[o,s]of e.statusById)(s.directory===r||i.has(o))&&!(o in t)&&(a.delete(o),n=!0);for(let[e,i]of Object.entries(t)){let t=Hj(i?.type),o=a.get(e);if(t===`idle`){o&&o.directory===r&&(a.delete(e),n=!0);continue}(!o||o.status!==t||o.directory!==r)&&(a.set(e,{status:t,directory:r}),n=!0)}return n?{statusById:a}:e})},qj=e=>typeof e==`string`&&e.trim().length>0;function Jj(e){let t=e.trim();return t.length<=18?t:`${t.slice(0,10)}…${t.slice(-4)}`}function Yj(e,t){return pt(ft.getState().dictionary,e,t)}function Xj(e,t=`missing-directory`){let n=qj(e)?Jj(e):null;if(t===`missing-session-id`||!n){bT.error(Yj(`sessions.toast.openFailedMissingSessionId`));return}if(t===`missing-directory`){bT.error(Yj(`sessions.toast.openFailedMissingDirectory`,{sessionId:n}));return}bT.error(Yj(`sessions.toast.openFailed`,{sessionId:n}))}function Zj(e,t,n={}){let r=n.notify!==!1;if(!qj(e))return r&&Xj(null,`missing-session-id`),{ok:!1,reason:`missing-session-id`,sessionId:null};if(!qj(t))return r&&Xj(e,`missing-directory`),{ok:!1,reason:`missing-directory`,sessionId:e.trim()};let i=e.trim(),a=t.trim();return n.phoneShell&&!Ke()?(HU.getState().openSession({sessionId:i,directory:a}),{ok:!0,sessionId:i,directory:a}):n.switchToChat!==!1&&!p.getState().setActiveMainTab(`chat`)?(r&&Xj(i,`tab-switch-blocked`),{ok:!1,reason:`tab-switch-blocked`,sessionId:i}):($.getState().setCurrentSession(i,a),{ok:!0,sessionId:i,directory:a})}var Qj=null,$j=e=>{Qj=e},eM=(e,t)=>typeof Qj==`function`&&typeof e==`string`&&e.trim()&&typeof t==`string`&&t.trim()?(Qj(e.trim(),t.trim()),{ok:!0,sessionId:e.trim(),directory:t.trim()}):Zj(e,t,{switchToChat:!0}),tM=(e,t)=>!e||!t?null:`${e}:${t}`,nM=({permission:e,directory:t,isViewed:n,pendingIds:r,show:i,openSession:a})=>{let o=tM(e.sessionID,e.id);if(n||!o||r.has(o))return!1;r.add(o);let s=typeof e.permission==`string`&&e.permission.trim().length>0?e.permission:`Agent needs your approval`;return i(`Permission needed`,{id:`permission-${o}`,description:s,action:{label:`Open session`,onClick:()=>a(e.sessionID,t)}}),!0},rM=15e3,iM=new Map,aM=(e,t)=>`${e}\n${t}`;function oM(e){if(!e.runtimeKey||!e.directory||!e.sessionId||!e.status||e.status.type===`idle`)return;let t=Date.now();for(let[e,n]of iM)n.expiresAt<=t&&iM.delete(e);iM.set(aM(e.runtimeKey,e.directory),{runtimeKey:e.runtimeKey,directory:e.directory,sessionId:e.sessionId,status:e.status,expiresAt:Date.now()+rM})}function sM(e,t){let n=iM.get(aM(e,t));return n?n.expiresAt<=Date.now()?(iM.delete(aM(e,t)),null):n:null}var cM=[],lM=[],uM=[],dM={sessionID:``,revertMessageID:void 0,records:lM,history:uM},fM=e=>{if(e?.type!==`text`)return``;let t=e.text;return typeof t==`string`?t:``},pM=e=>{for(let t of e){let e=fM(t);if(e.length>0)return e}return``},mM=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]?.message!==t[n]?.message||e[n]?.parts!==t[n]?.parts)return!1;return!0},hM=(e,t=dM)=>{let n=e.sessionID;if(!n)return dM;let r=e.messages,i=e.revertMessageID,a=[];for(let t=r.length-1;t>=0;--t){let n=r[t];n.role===`user`&&(i&&fs(r,n.id,i)||a.push({message:n,parts:e.parts[n.id]??cM}))}if(a.length===0)return t.sessionID===n&&t.revertMessageID===i&&t.records.length===0?t:{sessionID:n,revertMessageID:i,records:lM,history:uM};if(t.sessionID===n&&t.revertMessageID===i&&mM(t.records,a))return t;let o=[];for(let e of a){let t=pM(e.parts);t.length>0&&o.push(t)}return{sessionID:n,revertMessageID:i,records:a,history:o}};function gM(e,t){let n=e.getChild(t.directory)?.getState();if(!n)return`unknown`;let r=n.session_status?.[t.sessionID];return r?r.type:n.session_status_snapshot_at===void 0?`unknown`:`idle`}function _M(e,t){return t.map(t=>{let n=e.getChild(t.directory)?.getState();return`${t.directory}\n${t.sessionID}\n${n?.session_status?.[t.sessionID]?.type??``}\n${n?.session_status_snapshot_at??``}`}).join(`\0`)}function vM(e,t,n){let r=new Map,i=new Map;for(let e of t){let t=i.get(e.directory)??[];t.push(e),i.set(e.directory,t)}let a=()=>{let t=!1;for(let[n,a]of r)i.has(n)&&e.getChild(n)||(a(),r.delete(n),t=!0);for(let[a,o]of i){if(r.has(a))continue;let i=e.getChild(a);i&&(r.set(a,i.subscribe((e,t)=>{for(let r of o)if(e.session_status?.[r.sessionID]!==t.session_status?.[r.sessionID]||e.session_status_snapshot_at!==t.session_status_snapshot_at){n();return}})),t=!0)}return t};a();let o=e.subscribeRegistry(()=>{a()&&n()});return()=>{o();for(let e of r.values())e();r.clear()}}function yM(e,t,n){if(!e)return null;let r=t?.id===e?t:null,i=n?.id===e?n:null;return r??i}function bM(e,t,n,r){if(!t||t.id!==e||!t.parentID)return null;let i=t.parentID,a=n?.id===i?n??null:null;return{id:i,directory:a?.directory??t.directory??r??null,session:a}}var xM=Me(),SM=`__openchamber_sync_context__`,CM=globalThis,wM=CM[SM]??(0,W.createContext)(null);CM[SM]=wM;function TM(e){if(e instanceof Error)return e.message;if(typeof e==`string`)return e;if(e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`)return e.message;try{return JSON.stringify(e)}catch{return String(e)}}function EM(e,t){if(!e.error)return e.data;let n=e.response?.status;throw Error(`${t} failed${n?` (${n})`:``}: ${TM(e.error)}`)}function DM(){let e=(0,W.useContext)(wM);if(!e)throw Error(`useSyncSystem must be used within <SyncProvider>`);return e}function OM(e){return Array.from(e.children.values(),e=>e.getState())}function kM(e,t,n){let r=(0,V.c)(7),i=t===void 0?Object.is:t,{childStores:a}=DM(),o=(0,W.useRef)(void 0),s=(0,W.useRef)(!1),c;r[0]!==a||r[1]!==i||r[2]!==e?(c=()=>{let t=e(OM(a));return s.current&&i(o.current,t)?o.current:(o.current=t,s.current=!0,t)},r[0]=a,r[1]=i,r[2]=e,r[3]=c):c=r[3];let l=c,u;return r[4]!==a||r[5]!==n?(u=e=>n?n(a,e):a.subscribeAll(e),r[4]=a,r[5]=n,r[6]=u):u=r[6],W.useSyncExternalStore(u,l,l)}function AM(e){let t=(0,V.c)(4),n;t[0]===e?n=t[1]:(n=t=>sj(t,e),t[0]=e,t[1]=n);let r;return t[2]===e?r=t[3]:(r=(t,n)=>t.subscribeAllSelected(t=>t.session_status?.[e],n),t[2]=e,t[3]=r),kM(n,Object.is,r)}function jM(e){let t=(0,V.c)(5),n=AM(e),r;t[0]===e?r=t[1]:(r=t=>t.statusById.get(e)?.status,t[0]=e,t[1]=r);let i=Vj(r),a;return t[2]!==i||t[3]!==n?(a=MM(n,i),t[2]=i,t[3]=n,t[4]=a):a=t[4],a}function MM(e,t){if(e)return e;if(t===`busy`)return{type:`busy`};if(t===`retry`)return{type:`retry`,attempt:0,message:``,next:0}}var NM=[],PM={};function FM(e){let t=(0,V.c)(4),n=e?.enabled??!0,r;t[0]===n?r=t[1]:(r=e=>n?aj(e):PM,t[0]=n,t[1]=r);let i;return t[2]===n?i=t[3]:(i=(e,t)=>n?e.subscribeAllSelected(IM,t):LM,t[2]=n,t[3]=i),kM(r,rj,i)}function IM(e){return e.session_status}function LM(){}function RM(e){let t=(0,V.c)(5),n=e?.enabled??!0,r=Y(VM),i;t[0]!==n||t[1]!==r?(i=e=>n?ij(e,r):NM,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===n?a=t[4]:(a=(e,t)=>n?e.subscribeAllSelected(zM,t):BM,t[3]=n,t[4]=a),kM(i,nj,a)}function zM(e){return e.session}function BM(){}function VM(e){return e.pendingDeletionIds}var HM=!1,UM=0,WM=0,GM=1500,KM=new Set([`patch`,`step-start`,`step-finish`]),qM=5e3,JM=4e4,YM=15e3,XM=6e4,ZM=6e4,QM=e=>!e||e.length===0?``:e.map(e=>e.id).sort($M).join(`|`),$M=(e,t)=>e<t?-1:+(e>t),eN=e=>JSON.stringify(e);function tN(e,t){return eN(e)===eN(t)}var nN=5e3,rN=new Map,iN=(e,t)=>`${e}:${t}`;function aN(e,t){try{let n=H();return n?Tl(n.getTranscript(U(e,t))):!1}catch{return!1}}async function oN(e,t){try{if(!H())return;await Tu(e,t)}catch{}}function sN(e,t,n,r){if(!e||e===`global`||!t)return;let i=iN(e,t),a=rN.get(i);if(a&&Date.now()-a.enqueuedAt<nN){Promise.resolve().then(()=>{aN(e,t)&&oN(e,t)});return}rN.set(i,{sessionID:t,directory:e,enqueuedAt:Date.now(),request:r}),Promise.resolve().then(async()=>{let a=n.getChild(e);if(!a){rN.delete(i);return}try{await lN(e,t,a,r)}catch{}finally{rN.delete(i)}})}function cN(e,t,n){let r=t.admissionHint?.sessionID??t.domainActivityHint?.sessionID??(typeof t.properties.sessionID==`string`?t.properties.sessionID:void 0);if(!(!r||!e||e===`global`)){if(t.domainActivityHint?.kind===`activity`){let t=n.getChild(e);t&&Ob(t,r)}t.domainActivityHint?.kind===`terminal`&&r===dN&&e===uN&&sN(e,r,n,{reason:`session-idle`})}}async function lN(e,t,n,r){let i=n.getState().session_status?.[t];ys.recovery.materializing({reason:r?.reason??`ensure-session-messages`,directory:e,sessionID:t,messageID:r?.messageID,partID:r?.partID});try{let a=()=>{try{return H()?.getTranscript(U(e,t)).liveRevision}catch{return}},o=a(),s=await ab({directory:e,sessionID:t,limit:Ym(),signal:AbortSignal.timeout(3e4),purpose:`materialize`});if(r?.isStale?.())return`skipped`;let c=sb({directory:e,sessionID:t,purpose:`materialize`,page:s,capturedLiveRevision:o,liveRevision:a(),skipPartTypes:KM});return aN(e,t)&&await oN(e,t),c.applied?(Yb({directory:e,sessionID:t,store:n,isStale:r?.isStale}),s.records.length===0||i&&i.type!==`idle`&&!r?.isStale?.()&&await Mb(e,n,[t]),`ready`):`skipped`}catch{return`error`}}var uN=``,dN=``,fN=null,pN=``,mN=``,hN=new Map,gN=15e3,_N=(e,t)=>`${e}\n${t}`;function vN(e=Date.now()){for(let[t,n]of hN.entries())n<=e&&hN.delete(t)}var yN=new Set,bN=new Set,xN=(e,t)=>!e||!t?null:`${e}:${t}`,SN=e=>{if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0},CN=(e,t)=>{if(e.type!==`openchamber:notification`)return!1;let n=e.properties;if(!n||typeof n!=`object`)return!0;let r=n;if((r.desktopNotificationDelivered===!0||r.desktopStdoutActive===!0)&&i()===`local`)return!0;let a=Te()?.notifications;return a?.notifyAgentCompletion&&a.notifyAgentCompletion({title:SN(r.title),body:SN(r.body),tag:SN(r.tag),kind:SN(r.kind),sessionId:SN(r.sessionId),directory:SN(r.directory)??(t&&t!==`global`?t:void 0),requireHidden:r.requireHidden===!0}).catch(e=>{console.warn(`[notifications] failed to dispatch UI notification`,e)}),!0};function wN(e,t){!e||!t||!fN||Tj(e,t)&&sN(e,t,fN,{reason:`session-idle`})}function TN(e){fN=e,e&&wN(uN,dN)}function EN(e,t){uN=e,dN=t,wN(e,t)}function DN(e,t,n){if(!e||!t)return;let r=_N(e,t);if(!n){hN.delete(r);return}hN.set(r,Date.now()+gN)}function ON(e,t){if(!e||!t){pN=``,mN=``;return}pN=e,mN=t}function kN(){let e=[],t=new Set,n=(n,r)=>{if(!n||!r)return;let i=_N(n,r);t.has(i)||(t.add(i),e.push({directory:n,sessionID:r}))};return n(pN,mN),n(uN,dN),e}function AN(){return typeof document<`u`&&document.hasFocus()}function jN(e,t){return t?uN&&dN&&e===uN&&t===dN&&AN()?!0:(vN(),hN.has(_N(e,t))):!1}function MN(){return HM||Date.now()-UM<GM}function NN(e){return!uN||!dN||e!==uN?null:{directory:uN,sessionId:dN}}function PN(e,t){return Mj(t,{directory:e,viewedSession:NN(e)})}function FN(e,t,n,r=JM,i=YM){return!(e<=0||n-e<r||n-t<i)}function IN({isViewed:e,status:t,lastTransportActivityAt:n,lastDomainActivityAt:r,lastFullResyncAt:i,now:a,transportStaleThresholdMs:o=JM,domainStaleThresholdMs:s=XM,recoveryCooldownMs:c=ZM}){return!(!e||t?.type!==`busy`&&t?.type!==`retry`||n<=0||a-n>=o||r<=0||a-r<s||a-i<c)}var LN=v(),RN=(e,t)=>{!LN||typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:vscode-notification-event`,{detail:{directory:e,payload:t}}))},zN=()=>({sessionDirectoryById:new Map,messageSessionById:new Map,sessionMessageIdsById:new Map}),BN=e=>{if(!e||e===`global`)return e;let t=e.replace(/\\/g,`/`).replace(/^([a-z]):/,(e,t)=>t.toUpperCase()+`:`);return t.length>1?t.replace(/\/+$/,``):t},VN=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.sessionID;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`session.status`||e.type===`session.idle`||e.type===`session.error`||e.type===`todo.updated`||e.type===`permission.asked`||e.type===`permission.replied`||e.type===`question.asked`||e.type===`question.replied`||e.type===`question.rejected`||e.type===`session.deleted`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`message.part.updated`){let e=n.sessionID;if(typeof e==`string`&&e.length>0)return e;let t=n.part;if(!t||typeof t!=`object`)return null;let r=t.sessionID;return typeof r==`string`&&r.length>0?r:null}if(e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.sessionID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`session.created`||e.type===`session.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}return null},HN=e=>{let t=e.properties;if(!t||typeof t!=`object`)return null;let n=t;if(e.type===`message.updated`){let e=n.info;if(!e||typeof e!=`object`)return null;let t=e.id;return typeof t==`string`&&t.length>0?t:null}if(e.type===`message.removed`||e.type===`message.part.delta`||e.type===`message.part.removed`){let e=n.messageID;return typeof e==`string`&&e.length>0?e:null}if(e.type===`message.part.updated`){let e=n.part;if(!e||typeof e!=`object`)return null;let t=e.messageID;return typeof t==`string`&&t.length>0?t:null}return null},UN=(e,t,n)=>{!t||!n||n===`global`||e.sessionDirectoryById.set(t,n)},WN=(e,t,n,r)=>{if(!t)return;UN(e,t,n);let i=e.sessionMessageIdsById.get(t),a=new Set;for(let n of r)n?.id&&(a.add(n.id),e.messageSessionById.set(n.id,t));if(i)for(let t of i)a.has(t)||e.messageSessionById.delete(t);e.sessionMessageIdsById.set(t,a)},GN=(e,t,n,r)=>{if(!t||!n)return;UN(e,t,r),e.messageSessionById.set(n,t);let i=e.sessionMessageIdsById.get(t);i?i.add(n):e.sessionMessageIdsById.set(t,new Set([n]))},KN=(e,t,n)=>{if(!t)return;let r=n??e.messageSessionById.get(t);if(e.messageSessionById.delete(t),!r)return;let i=e.sessionMessageIdsById.get(r);i&&(i.delete(t),i.size===0&&e.sessionMessageIdsById.delete(r))},qN=(e,t)=>{if(!t)return;e.sessionDirectoryById.delete(t);let n=e.sessionMessageIdsById.get(t);if(n)for(let t of n)e.messageSessionById.delete(t);e.sessionMessageIdsById.delete(t)},JN=(e,t,n)=>{let r=new Set;for(let i of n.session)i?.id&&(r.add(i.id),UN(e,i.id,t));try{let n=H(),i=n?.getCacheBudget?.().listCanonical({directory:t});if(i)for(let a of i){if(a.scope.directory!==t)continue;r.add(a.scope.sessionID),UN(e,a.scope.sessionID,t);let i=n?.getTranscript?.(U(t,a.scope.sessionID));if(i){let n=Gu(i);WN(e,a.scope.sessionID,t,n)}}}catch{}for(let[n,i]of e.sessionDirectoryById)i===t&&(r.has(n)||qN(e,n))},YN=(e,t,n)=>{for(let[r,i]of t.children){let t=i.getState();if(t.session.some(t=>t.id===e)||Object.prototype.hasOwnProperty.call(t.session_status??{},e))return UN(n,e,r),r}try{let t=H()?.getCacheBudget?.().listCanonical()?.filter(t=>t.scope.sessionID===e).map(e=>e.scope.directory)??[],r=[...new Set(t)];if(r.length===1){let t=r[0];return UN(n,e,t),t}}catch{}return null},XN=(e,t,n)=>{let r=e.getChild(t);if(!r)return!1;let i=r.getState();if(i.session.some(e=>e.id===n)||Object.prototype.hasOwnProperty.call(i.session_status??{},n))return!0;try{return(H()??yu(t,r)).hasSession?.(U(t,n))??!1}catch{return!1}},ZN=(e,t,n)=>{try{let e=H();if(e&&e.getParts(U(t,n),n).length>0)return!0}catch{}return!1},QN=e=>!uN||!dN?null:e.getChild(uN)?uN:null,$N=(e,t,n,r)=>{let i=BN(t),a=VN(n);if(a){if(i&&i!==`global`&&XN(r,i,a))return UN(e,a,i),i;let t=e.sessionDirectoryById.get(a);if(t&&r.getChild(t))return t;let n=YN(a,r,e);if(n)return n}let o=HN(n);if(o){if(i&&i!==`global`&&ZN(r,i,o))return i;let t=e.messageSessionById.get(o);if(t){let n=e.sessionDirectoryById.get(t);if(n&&r.getChild(n))return n}if(ZN(r,i,o))return i;for(let[e]of r.children)if(ZN(r,e,o))return e;let n=QN(r);if(n)return n}if((a||o)&&(!i||i===`global`)&&r.children.size===1){let e=r.children.keys().next().value;if(typeof e==`string`&&e.length>0)return e}return i},eP=(e,t,n,r)=>{if(e)return e;if(t){let e=r.messageSessionById.get(t);if(e)return e}if(n&&n===uN&&dN)return dN};function tP(e,t){let n=VN(e)??(e.type===`session.deleted`?e.properties.info?.id:void 0);if(n)return n;let r=HN(e);return r?t.get(r):void 0}function nP(e,t){return e===t}var rP=e=>e.type===`session.created`||e.type===`session.updated`||e.type===`session.deleted`||e.type===`message.updated`||e.type===`message.removed`||e.type===`message.part.updated`||e.type===`message.part.removed`||e.type===`message.part.delta`,iP=(e,t,n)=>{if(!t||t===`global`)return;let r=VN(n);switch(r&&UN(e,r,t),n.type){case`session.created`:case`session.updated`:{let r=n.properties.info;r?.id&&UN(e,r.id,t);return}case`session.deleted`:{let t=n.properties.sessionID;t&&qN(e,t);return}case`message.updated`:{let r=n.properties.info;r?.id&&r.sessionID&&GN(e,r.sessionID,r.id,t);return}case`message.removed`:{let t=n.properties;t.messageID&&KN(e,t.messageID,t.sessionID);return}case`message.part.updated`:{let r=n.properties,i=r.part,a=i?.sessionID??r.sessionID,o=i?.messageID;o&&a&&GN(e,a,o,t);return}default:return}};async function aP(e,t,n){let r=t.getState(),i=new Set([...r.session.map(e=>e.id),...Object.keys(r.session_status??{}),...Object.keys(r.question??{}),...Object.keys(r.permission??{})]),a=n??Array.from(i);if(a.length!==0){try{let n=new Map(a.map(e=>[e,QM(r.question[e])])),o=await z.listPendingQuestions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));for(let[t,n]of Object.entries(s)){let i=new Set((r.question[t]??[]).map(e=>e.id));if(!jN(e,t))for(let r of n){if(i.has(r.id))continue;let n=xN(t,r.id);if(!n||yN.has(n))continue;yN.add(n);let a=r.questions?.[0],o=a?.header?.trim()||`Input needed`,s=a?.question?.trim()||`Agent is waiting for your response`;bT.info(o,{id:`question-${n}`,description:s,action:{label:`Open session`,onClick:()=>eM(t,e)}})}}t.setState(e=>{let t={...e.question};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;QM(e.question[r])===i&&delete t[r]}return{question:t}})}catch{}try{let n=new Map(a.map(e=>[e,QM(r.permission[e])])),o=await z.listPendingPermissions({directories:[e]}),s={};for(let e of o){if(!e?.id||!e.sessionID||!i.has(e.sessionID))continue;let t=s[e.sessionID];t?t.push(e):s[e.sessionID]=[e]}for(let e of Object.keys(s))s[e].sort((e,t)=>e.id<t.id?-1:+(e.id>t.id));let c=Bj.getState(),l=v()?Object.keys(s).filter(e=>c.isSessionAutoAccepting(e)):[];if(l.length>0){let e=new Map,t=new Map;await Promise.all(l.flatMap(n=>(s[n]??[]).map(async r=>{try{let i=await z.fetchPermission(r.sessionID,r.id);if(i.state===`ok`){await tC(r.sessionID,r.id,`once`);let t=e.get(n)??new Set;t.add(r.id),e.set(n,t)}else if(i.state===`resolved`){let e=t.get(n)??new Set;e.add(r.id),t.set(n,e)}}catch{}})));for(let n of l){let r=e.get(n),i=t.get(n);if(!r&&!i)continue;let a=e=>r?.has(e)||i?.has(e)||!1,o=(s[n]??[]).filter(e=>!a(e.id));o.length>0?s[n]=o:delete s[n]}}for(let[t,n]of Object.entries(s)){let i=new Set((r.permission[t]??[]).map(e=>e.id)),a=jN(e,t);if(!a)for(let t of n)i.has(t.id)||nM({permission:t,directory:e,isViewed:a,pendingIds:bN,show:(e,t)=>bT.info(e,t),openSession:eM})}t.setState(e=>{let t={...e.permission};for(let[e,n]of Object.entries(s))t[e]=n;for(let r of a){if(s[r])continue;let i=n.get(r)??``;QM(e.permission[r])===i&&delete t[r]}return{permission:t}})}catch{}}}function oP(e,t,n){n?.statusOnly}function sP(e){return e.isFirstConnect&&!e.disconnectedBeforeFirstConnect}function cP(e){return{resyncBlockingRequests:!0,ingestRoutingIndex:!e?.statusOnly}}async function lP(e,t,n,r,i,a){let o=PN(e,t.getState());await Mb(e,t,o);let s=jj(PN(e,t.getState()),{directory:e,viewedSession:NN(e)});if(s.length>0){let a=z.getScopedSdkClient(e);await Promise.all(s.map(async o=>{let s=i(o);ys.recovery.materializing({reason:r,directory:e,sessionID:o});let c=(await $f(async()=>{let e=await a.session.get({sessionID:o});return EM(e,`session.get`),e}).catch(()=>null))?.data;if(c&&nP(s,i(o))){let r=sp(c);t.setState(e=>{let t=e.session.findIndex(e=>e.id===r.id),n=e.session,i=!1,a=e.sessionTotal;return t>=0?tN(n[t],r)||(n=[...e.session],n[t]=r,i=!0):(n=[...e.session],n.push(r),n.sort((e,t)=>$M(e.id,t.id)),r.parentID||(a+=1),i=!0),i?{session:n,sessionTotal:a}:e}),UN(n,r.id,e)}let l=i(o),u=t.getState(),d=u.session_status?.[o],f=u.session_status_observed_at?.[o],p=()=>!nP(l,i(o)),m=l;try{let r=await ab({directory:e,sessionID:o,limit:Ym(),signal:AbortSignal.timeout(3e4),purpose:`recovery`});if(p()||!sb({directory:e,sessionID:o,purpose:`recovery`,page:r,capturedLiveRevision:m,liveRevision:i(o),skipPartTypes:KM}).applied)return;let a=vu().getTranscript(U(e,o));WN(n,o,e,a.messageOrder.map(e=>a.messagesByID[e]).filter(e=>!!e)),Yb({directory:e,sessionID:o,store:t,transcript:a,isStale:p}),await Nb({directory:e,sessionID:o,store:t,statusBeforePull:d,statusObservedAtBeforePull:f,hasMessages:a.messageOrder.length>0,isStale:p})}catch{}}))}let c=cP(a);c.resyncBlockingRequests&&await aP(e,t,o),c.ingestRoutingIndex&&JN(n,e,t.getState())}function uP(e){try{let t=H(),n=r(),i=s();return t?.getCacheBudget?.().listCanonical({transport:n,generation:i})?.filter(t=>t.scope.sessionID===e).map(e=>U(e.scope.directory,e.scope.sessionID,{transport:e.scope.transport,generation:e.scope.generation}))??[]}catch{return[]}}function dP(e){let t=VN(e)??void 0;if(t)return t;if(e.type===`message.updated`)return e.properties.info?.sessionID??void 0}var fP=null,pP=0;function mP(e){return`${e.directory}\0${e.sessionID}\0${e.transport??``}\0${e.generation??``}`}function hP(){pP===0&&(fP={byScope:new Map,routing:[],debug:[]}),pP+=1}function gP(){if(pP===0||(--pP,pP>0))return;let e=fP;if(fP=null,e)try{for(let t of e.byScope.values()){let n=xu(t.scope,{type:`sse-event-batch`,events:t.events})??{applied:!1,changed:!1};if(n.changed)for(let n of e.debug)n.transcriptSessionID===t.transcriptSessionID&&(n.changed=!0);let r=n.materialization;if(r){let e=t.eventMessageIDs.find(e=>typeof e==`string`),n=eP(r.sessionID??t.transcriptSessionID,r.messageID??e,t.scope.directory,t.routingIndex);n&&sN(t.scope.directory,n,t.childStores,{reason:r.reason,messageID:r.messageID,partID:r.partID})}}for(let t of e.debug)t.changed?ys.dispatch.eventApplied(t.payloadType,t.transcriptSessionID,t.eventMessageID):ys.dispatch.eventNoChange(t.payloadType,t.transcriptSessionID,t.eventMessageID);for(let t of e.routing)iP(t.routingIndex,t.resolvedDirectory,t.payload)}finally{fP=null,pP=0}}function _P(e,t,n,i,a,o){let c=bj({sessionID:t,resolvedDirectory:n,transport:r(),generation:s(),listCanonicalScopes:uP});if(fP){for(let n of c){let r=mP(n),s=fP.byScope.get(r);s||(s={scope:n,events:[],transcriptSessionID:t,eventMessageIDs:[],childStores:a,routingIndex:o},fP.byScope.set(r,s)),s.events.push(e),s.eventMessageIDs.push(i)}fP.debug.push({payloadType:e.type,transcriptSessionID:t,eventMessageID:i,changed:!1}),fP.routing.push({routingIndex:o,resolvedDirectory:n,payload:e});return}let l=!1;for(let n of c){let r=xu(n,{type:`sse-event`,event:e})??{applied:!1,changed:!1};r.changed&&(l=!0);let s=r.materialization;if(s){let e=eP(s.sessionID??t,s.messageID??i,n.directory,o);e&&sN(n.directory,e,a,{reason:s.reason,messageID:s.messageID,partID:s.partID})}}l?ys.dispatch.eventApplied(e.type,t,i):ys.dispatch.eventNoChange(e.type,t,i),iP(o,n,e)}function vP(e,t,n,r){if(t.type===`openchamber:worktree-bootstrap-status`){let e=t.properties;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e,n=typeof t.directory==`string`?t.directory:``;n&&aO(n,{status:t.status,error:typeof t.error==`string`?t.error:null,updatedAt:typeof t.updatedAt==`number`?t.updatedAt:Date.now()})}return}if(t.type===`openchamber:permission-auto-accept.updated`){let e=t.properties;if(e&&typeof e==`object`){let t=e;t.sessions&&typeof t.sessions==`object`&&Bj.getState().applySnapshot({sessions:t.sessions})}return}let i=$N(r,e,t,n);if(CN(t,i))return;if(kj(t,i),Gj(i,t),i===`global`||!i){if(kl(t.type)){let e=dP(t);if(e){_P(t,e,i||`global`,HN(t)??void 0,n,r);return}}let e=MN(),a=TA(t);if(!a)return;if(a.type===`refresh`)e||MA.setState({reload:`pending`});else if(a.type===`project`){let e=MA.getState();MA.setState({projects:EA(e,a.project).projects})}if((t.type===`server.connected`||t.type===`global.disposed`)&&!e)for(let e of n.children.keys()){let t=n.getChild(e);t&&t.getState().status!==`loading`&&(t.setState({status:`loading`,session_status_snapshot_at:void 0}),n.ensureChild(e))}return}let a=n.getChild(i),o=i;if(!a){let e=VN(t);if(e){let t=YN(e,n,r);t&&(a=n.getChild(t),o=t)}}if(!a){if(kl(t.type)){let e=dP(t);if(e){_P(t,e,o,HN(t)??void 0,n,r);return}}let e=TA(t);if(e?.type===`refresh`)MA.setState({reload:`pending`});else if(e?.type===`project`){let t=MA.getState();MA.setState({projects:EA(t,e.project).projects})}return}if(n.mark(o),t.type===`permission.asked`){let e=t.properties;if(Bj.getState().isSessionAutoAccepting(e.sessionID)){iP(r,o,t),v()&&tC(e.sessionID,e.id,`once`).catch(()=>void 0);return}let n=a.getState().session.find(t=>t.id===e.sessionID)??Y.getState().activeSessions.find(t=>t.id===e.sessionID);if(n&&!n.parentID){let t=jN(o,e.sessionID);nM({permission:e,directory:o,isViewed:t,pendingIds:bN,show:(e,t)=>bT.info(e,t),openSession:eM})}}if(t.type===`permission.replied`){let e=t.properties,n=tM(e.sessionID,e.requestID);n&&(bN.delete(n),bT.dismiss(`permission-${n}`))}if(t.type===`question.asked`){let e=t.properties,n=e.sessionID,r=a.getState().session.find(e=>e.id===n)??Y.getState().activeSessions.find(e=>e.id===n);if(r&&!r.parentID){let t=xN(n,e.id);if(!jN(o,n)&&t&&!yN.has(t)){yN.add(t);let r=e.questions?.[0],i=r?.header?.trim()||`Input needed`,a=r?.question?.trim()||`Agent is waiting for your response`;bT.info(i,{id:`question-${t}`,description:a,action:{label:`Open session`,onClick:()=>eM(n,o)}})}}}if(t.type===`question.replied`||t.type===`question.rejected`){let e=t.properties,n=xN(e.sessionID,e.requestID);n&&(yN.delete(n),bT.dismiss(`question-${n}`))}if(t.type===`session.idle`){let e=t.properties.sessionID,n=a.getState().session.find(t=>t.id===e)??Y.getState().activeSessions.find(t=>t.id===e);e&&n&&!n.parentID&&Ik({directory:o,session:e,time:Date.now(),viewed:jN(o,e),type:`turn-complete`})}if(t.type===`session.idle`){let e=VN(t);if(e&&o&&o!==`global`){let t=a.getState().session.find(t=>t.id===e),r=t?t.parentID:null,i=xj({idleSessionID:e,directory:o,parentID:r,activeSessionID:dN,activeDirectory:uN});i.action===`materialize-parent`?sN(o,i.sessionID,n,{reason:`child-session-idle`}):i.action===`materialize-now`?sN(o,i.sessionID,n,{reason:`session-idle`}):i.action===`defer-until-viewed`&&wj(o,i.sessionID)}}let s=a.getState(),c=VN(t)??void 0,l=HN(t)??void 0;if(t.type===`session.created`){let e=t.properties.info;ax(o,e)}if((t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&dx(o,c,l))return;if(kl(t.type)){let e=dP(t);if(!e){iP(r,o,t);return}_P(t,e,o,l,n,r);return}let u={...s};switch(t.type){case`session.created`:case`session.updated`:case`session.deleted`:u.session=[...s.session],u.session_status_observed_at={...s.session_status_observed_at},u.permission={...s.permission},u.todo={...s.todo};break;case`session.diff`:u.session_diff={...s.session_diff};break;case`session.status`:case`session.idle`:case`session.error`:u.session_status={...s.session_status??{}},u.session_status_observed_at={...s.session_status_observed_at};break;case`todo.updated`:u.todo={...s.todo};break;case`vcs.branch.updated`:break;case`permission.asked`:case`permission.replied`:u.permission={...s.permission};break;case`question.asked`:case`question.replied`:case`question.rejected`:u.question={...s.question};break;case`lsp.updated`:u.lsp=[...s.lsp]}let d=AA(u,t,{onSetSessionTodo:(e,t)=>{Ib.getState().setSessionTodos(e,t)},now:Date.now}),f=typeof d==`boolean`?d:d.changed,p=typeof d==`boolean`?void 0:d.materialization;if(f){a.setState(u);let e=VN(t)??void 0,n=HN(t)??void 0;ys.dispatch.eventApplied(t.type,e,n)}else{let e=VN(t)??void 0,n=HN(t)??void 0;ys.dispatch.eventNoChange(t.type,e,n)}if(p){let e=eP(p.sessionID??VN(t)??void 0,p.messageID??HN(t)??void 0,o,r);e&&sN(o,e,n,{reason:p.reason,messageID:p.messageID,partID:p.partID})}iP(r,o,t)}var yP=e=>{typeof window>`u`||window.dispatchEvent(new CustomEvent(`openchamber:opencode-update-available`,{detail:e}))},bP=null,xP=async()=>{let e=i();return(!bP||bP.runtimeKey!==e)&&(bP={runtimeKey:e,promise:F(`/api/config/opencode-resolution`,{signal:AbortSignal.timeout(4e3)}).then(async e=>{if(e.ok){let t=await e.json();return t.source===`bundled`||t.detectedSourceNow===`bundled`}let t=await F(`/health`,{signal:AbortSignal.timeout(4e3)});return t.ok?(await t.json()).opencodeBinarySource===`bundled`:!1}).catch(()=>!1)}),bP.promise},SP=e=>{typeof window>`u`||xP().then(t=>{t||yP(e)})};function CP(e,t,n){return e!==t||n!==!1}function wP(e){let t=G(e=>e.settingsMessageStreamTransport),n=(0,W.useRef)(null);n.current||=new qA;let a=n.current,o=(0,W.useRef)(null);o.current||=zN();let c=o.current,l=(0,W.useRef)(0),u=(0,W.useRef)(new Map),f=(0,W.useRef)(new Map),p=(0,W.useRef)(new Map),m=(0,W.useRef)(new Set),h=(0,W.useRef)(null),g=(0,W.useRef)(!1),_=(0,W.useRef)(!1),y=(0,W.useRef)({directory:e.directory,enabled:e.bootstrapDirectory});y.current={directory:e.directory,enabled:e.bootstrapDirectory};let b=e=>{let t=y.current;return CP(e,t.directory,t.enabled)},x=(0,W.useMemo)(()=>({childStores:a,sdk:e.sdk,directory:e.directory}),[a,e.sdk,e.directory]);(0,W.useEffect)(()=>(TN(a),()=>{TN(null)}),[a]);let S=(0,W.useCallback)((e,t,n)=>{if(oP(e,a.children.get(e),n),!b(e))return;let r=a.children.get(e);if(!r)return;let i=m.current;i.has(e)||(n?.statusOnly||p.current.set(e,Date.now()),i.add(e),lP(e,r,c,t,t=>f.current.get(_N(e,t))??0,n).catch(()=>{}).finally(()=>{i.delete(e)}))},[a,c]);(0,W.useEffect)(()=>{v()||Bj.getState().hydrate().catch(()=>void 0)},[e.sdk]),(0,W.useEffect)(()=>{let t=new Set;a.configure({onBootstrap:n=>{if(!b(n)||t.has(n))return;t.add(n);let r=a.getChild(n);r&&(async()=>{if(await Zt(),!b(n))return;let t=MA.getState();await hj({directory:n,sdk:e.sdk,getState:()=>r.getState(),set:e=>{r.setState(e),e.session&&JN(c,n,r.getState())},global:{config:t.config,projects:t.projects}})})().finally(()=>{t.delete(n)})},onDispose:e=>{t.delete(e)},isBooting:e=>t.has(e),isLoadingSessions:()=>!1})},[a,e.sdk,c]),(0,W.useEffect)(()=>{let t=++WM;HM=!0;let n=MA.getState().actions;return Zt().then(()=>{if(WM===t)return mj(e.sdk,e=>{WM===t&&n.set(e)})}).then(()=>{WM===t&&(UM=Date.now())}).finally(()=>{WM===t&&(HM=!1)}),()=>{WM===t&&(HM=!1)}},[e.sdk]),(0,W.useEffect)(()=>{let n=vA({sdk:e.sdk,transport:t,routeDirectory:(e,t)=>$N(c,e,t,a),onFlushStart:()=>{hP()},onFlushEnd:()=>{gP()},onNormalizedEvent:(e,t)=>{cN(e,t,a);let n=t.domainActivityHint?.sessionID??t.admissionHint?.sessionID;n&&e===uN&&n===dN&&(t.domainActivityHint||t.admissionHint)&&u.current.set(_N(e,n),Date.now())},onEvent:(e,t)=>{let n=tP(t,c.messageSessionById)??null;if(n&&rP(t)){let t=_N(e,n);f.current.set(t,(f.current.get(t)??0)+1)}if(n&&e===uN&&n===dN&&(t.type===`message.updated`||t.type===`message.removed`||t.type===`message.part.updated`||t.type===`message.part.removed`||t.type===`message.part.delta`)&&u.current.set(_N(e,n),Date.now()),n&&e===uN&&n===dN&&t.type===`session.status`){let r=t.properties.status;if(r?.type===`busy`||r?.type===`retry`){let t=_N(e,n);u.current.has(t)||u.current.set(t,Date.now())}r?.type===`idle`&&u.current.delete(_N(e,n))}if(n&&(t.type===`session.idle`||t.type===`session.deleted`)&&u.current.delete(_N(e,n)),RN(e,t),t.type===`installation.update-available`){let e=typeof t.properties?.version==`string`?t.properties.version:``;e&&SP({version:e})}vP(e,t,a,c)},onTransportActivity:()=>{let e=Date.now();l.current=e,Om(e)},onReconnect:()=>{G.setState({isConnected:!0,hasEverConnected:!0,connectionPhase:`connected`});let e=!g.current;g.current=!0;let t=sP({isFirstConnect:e,disconnectedBeforeFirstConnect:_.current});for(let e of a.children.keys())S(e,`stream-reconnect`,{statusOnly:t})},onDisconnect:e=>{g.current||(_.current=!0);let{hasEverConnected:t}=G.getState();G.setState({isConnected:!1,connectionPhase:t?`reconnecting`:`connecting`,lastDisconnectReason:e})},onRecoveryContextCaptured:e=>{ju({lastEventID:e.lastEventId,reason:e.reason,generation:e.runtimeGeneration})},onCompensation:e=>{Mu(e)},onTransportSwitch:()=>{let{hasEverConnected:e}=G.getState();G.setState({isConnected:!1,connectionPhase:e?`reconnecting`:`connecting`});for(let e of a.children.keys())S(e,`transport-switch`)}});h.current=n.reconnect;let r=km(n.reconnect);return()=>{r(),h.current===n.reconnect&&(h.current=null),n.cleanup()}},[e.sdk,a,c,t,S]),(0,W.useEffect)(()=>{let e=!1,t=!1,n=()=>{t||e||(t=!0,Promise.resolve().then(()=>{if(e)return;let t=Date.now();for(let[e,n]of a.children.entries()){let r=n.getState();if(Aj(r).length===0){p.current.delete(e);continue}let i=p.current.get(e)??0;FN(l.current,i,t)&&(h.current?.(`active_stream_stale`),S(e,`stale-status-resync`));let a=NN(e);if(!a)continue;let o=r.session_status?.[a.sessionId],s=_N(e,a.sessionId),c=u.current.get(s);if((o?.type===`busy`||o?.type===`retry`)&&!c){u.current.set(s,t);continue}if(o?.type===`idle`||!o){u.current.delete(s);continue}IN({isViewed:!0,status:o,lastTransportActivityAt:l.current,lastDomainActivityAt:c??0,lastFullResyncAt:i,now:t})&&S(e,`domain-stale-resync`)}}).finally(()=>{t=!1}))},r=setInterval(n,qM);return n(),()=>{e=!0,clearInterval(r)}},[a,S]),(0,W.useEffect)(()=>{let t;if(e.directory){let n=a.ensureChild(e.directory,{bootstrap:CP(e.directory,e.directory,e.bootstrapDirectory)}),r=sM(i(),e.directory);r&&(n.setState(e=>({session_status:{...e.session_status,[r.sessionId]:e.session_status[r.sessionId]??r.status}})),t=setTimeout(()=>{n.setState(e=>e.session_status[r.sessionId]===r.status?{session_status:{...e.session_status,[r.sessionId]:{type:`idle`}}}:e)},rM)),JN(c,e.directory,n.getState())}return()=>{t&&clearTimeout(t)}},[e.directory,e.bootstrapDirectory,a,c]);let C=(0,W.useRef)(null),w=(0,W.useRef)({transport:r(),generation:s()});return(0,W.useEffect)(()=>{if(C.current)return;let e=ob({childStores:a,getViewedSession:()=>kN()[0]??null,getViewedSessions:()=>kN()});return C.current=e,w.current={transport:r(),generation:s()},()=>{let e=w.current;Pu(`provider-dispose`);let t=C.current?.repository;t&&t.purgeGeneration(e.transport,e.generation),C.current?.destroy(),C.current=null}},[a]),(0,W.useEffect)(()=>(Td(e.sdk,a,e.directory,(e,t)=>{UN(c,e,t)}),Cx(e.sdk,a,()=>z.getDirectory()||e.directory),wb((e,t,n)=>{let r=new Set(n),i=Yo(e)??e,a={...t};for(let[e,t]of Vj.getState().statusById)r.has(e)||t.directory===i&&(a[e]={type:t.status});Kj(e,a,n)}),()=>{wb(void 0)}),[e.sdk,e.directory,a,c]),(0,W.useEffect)(()=>d(e=>{if(!e.transportIdentityChanged){w.current={transport:r(),generation:s()};return}let t=w.current;Pu(`runtime-switch`);let n=C.current?.repository;n&&n.purgeGeneration(t.transport,t.generation),w.current={transport:r(),generation:s()}}),[]),(0,W.useEffect)(()=>{if(!e.directory)return;let t=a.getChild(e.directory);if(!t)return;let n=e.directory,r=()=>{yj(t.getState(),{directory:n,store:t})};r();let i=t.subscribe(()=>{r()}),o=[],s=()=>{for(let e of o)e();o=[];let e=H()??yu(n,t),i=t.getState().session_status??{};for(let[t,a]of Object.entries(i))!a||a.type===`idle`||o.push(e.subscribe(U(n,t),r));r()};s();let c=mu(s);return()=>{c(),i();for(let e of o)e()}},[e.directory,a]),(0,xM.jsx)(wM.Provider,{value:x,children:e.children})}function TP(e,t){let n=(0,V.c)(4),r=DM(),i=e??r.directory,a;return n[0]!==i||n[1]!==t||n[2]!==r.childStores?(a=r.childStores.ensureChild(i,t),n[0]=i,n[1]=t,n[2]=r.childStores,n[3]=a):a=n[3],a}function EP(e,t){let n=TP(t);return Ae(n,e)}function DP(e){let{childStores:t}=DM(),n=e.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),r=(0,W.useRef)(e);r.current=e;let i=(0,W.useCallback)(e=>n?vM(t,r.current,e):()=>void 0,[t,n]),a=(0,W.useCallback)(()=>n?_M(t,r.current):``,[t,n]);return W.useSyncExternalStore(i,a,a)}function OP(){let e=(0,V.c)(2),{childStores:t}=DM(),n;return e[0]===t?n=e[1]:(n=e=>gM(t,e),e[0]=t,e[1]=n),n}function kP(e,t){let n=DM(),r=t??n.directory;return Yu(e,r,TP(r))}function AP(e,t){let n=DM(),r=t??n.directory;return cd(e,r,TP(r))}function jP(e,t){let n=(0,V.c)(8),r=DM(),i=t??r.directory,a=TP(i),o=(0,W.useRef)(void 0),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e){o.current=void 0;return}let t=(H()??yu(i,a)).getRequestState?.(U(i,e)),n=t?{status:t.status===`idle`?`ready`:t.status,error:t.error,requestedLimit:t.requestedLimit??0,at:Date.now(),loadGeneration:0}:void 0,r=o.current;return r&&n&&r.status===n.status&&r.error===n.error&&r.requestedLimit===n.requestedLimit?r:(o.current=n,n)},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return MP;let n=(H()??yu(i,a)).subscribe(U(i,e),()=>{t()}),r=mu(()=>{n(),o.current=void 0,n=(H()??yu(i,a)).subscribe(U(i,e),()=>{t()}),t()});return()=>{r(),n()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return W.useSyncExternalStore(u,c,c)}function MP(){}function NP(e,t,n){let r=DM(),i=t??r.directory;return ud(e,i,TP(i),n)}function PP(e,t){let n=(0,V.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=TP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status?.[e]},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):FP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return W.useSyncExternalStore(c,o,o)}function FP(){}function IP(e,t){let n=(0,V.c)(7),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={bootstrap:!1},n[0]=r):r=n[0];let i=TP(t,r),a;n[1]!==e||n[2]!==i?(a=()=>{if(e)return i.getState().session_status_observed_at?.[e]},n[1]=e,n[2]=i,n[3]=a):a=n[3];let o=a,s;n[4]!==e||n[5]!==i?(s=t=>e?i.subscribe(t):LP,n[4]=e,n[5]=i,n[6]=s):s=n[6];let c=s;return W.useSyncExternalStore(c,o,o)}function LP(){}function RP(e,t){let n=(0,V.c)(7),r=t===void 0||t,i;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={bootstrap:!1},n[0]=i):i=n[0];let a=TP(e,i),o;n[1]!==r||n[2]!==a?(o=()=>r?a.getState().session_status_snapshot_at:void 0,n[1]=r,n[2]=a,n[3]=o):o=n[3];let s=o,c;n[4]!==r||n[5]!==a?(c=e=>r?a.subscribe(e):zP,n[4]=r,n[5]=a,n[6]=c):c=n[6];let l=c;return W.useSyncExternalStore(l,s,s)}function zP(){}function BP(e,t,n){let r=(0,V.c)(6),i=TP(t,n),a;r[0]!==e||r[1]!==i?(a=()=>e?i.getState().permission[e]??PF:PF,r[0]=e,r[1]=i,r[2]=a):a=r[2];let o=a,s;r[3]!==e||r[4]!==i?(s=t=>e?i.subscribe(t):VP,r[3]=e,r[4]=i,r[5]=s):s=r[5];let c=s;return W.useSyncExternalStore(c,o,o)}function VP(){}function HP(e,t,n){let r=(0,V.c)(2),i=TP(t,n),a;return r[0]===e?a=r[1]:(a=t=>e?t.question[e]??FF:FF,r[0]=e,r[1]=a),Ae(i,a)}function UP(e){return EP(WP,e)}function WP(e){return e.session}var GP=e=>e.permission,KP=e=>e.question;function qP(e,t,n,r){let i=(0,V.c)(6),a;i[0]===r?a=i[1]:(a={sessionID:null,sessions:null,requestsBySession:null,result:r},i[0]=r,i[1]=a);let o=(0,W.useRef)(a),s;return i[2]!==r||i[3]!==n||i[4]!==e?(s=t=>{let i=n(t),a=o.current;if(a.sessionID===e&&a.sessions===t.session&&a.requestsBySession===i)return a.result;let s=Jp(t.session,i,e,r),c=qp(a.result,s)?a.result:s;return o.current={sessionID:e,sessions:t.session,requestsBySession:i,result:c},c},i[2]=r,i[3]=n,i[4]=e,i[5]=s):s=i[5],EP(s,t)}function JP(e,t){return qP(e,t,GP,PF)}function YP(e,t){return qP(e,t,KP,FF)}function XP(e,t){let n=(0,V.c)(9),r=ZP(e,t),i=ZP(e),a;n[0]===e?a=n[1]:(a=t=>t.activeSessions.find(t=>t.id===e)??t.archivedSessions.find(t=>t.id===e)??null,n[0]=e,n[1]=a);let o=Y(a),s=r??i??o,c=s?.parentID??null,l=ZP(c,t),u=ZP(c),d;n[2]===c?d=n[3]:(d=e=>e.activeSessions.find(e=>e.id===c)??e.archivedSessions.find(e=>e.id===c)??null,n[2]=c,n[3]=d);let f=Y(d),p=l??u??f,m;return n[4]!==s||n[5]!==t||n[6]!==p||n[7]!==e?(m=bM(e,s,p,t),n[4]=s,n[5]=t,n[6]=p,n[7]=e,n[8]=m):m=n[8],m}function ZP(e,t){let n=(0,V.c)(7),{childStores:r}=DM(),i;n[0]!==r||n[1]!==t||n[2]!==e?(i=()=>t?r.getChild(t)?.getState().session.find(t=>t.id===e):oj(OM(r),e),n[0]=r,n[1]=t,n[2]=e,n[3]=i):i=n[3];let a=i,o;n[4]!==r||n[5]!==t?(o=e=>t?r.ensureChild(t).subscribe(e):r.subscribeAllSelected(QP,e),n[4]=r,n[5]=t,n[6]=o):o=n[6];let s=o;return W.useSyncExternalStore(s,a,a)}function QP(e){return e.session}function $P(e){let t=yM(e,ZP(e),Y((0,W.useCallback)(t=>e?t.activeSessions.find(t=>t.id===e)??null:null,[e]))),n=(0,W.useRef)(null),[,r]=W.useState(0);if((0,W.useEffect)(()=>{if(!e){n.current=null;return}if(t){n.current={sessionID:e,session:t,expiresAt:null};return}let i=n.current;if(!i||i.sessionID!==e){n.current=null;return}let a=i.expiresAt??Date.now()+2e3;i.expiresAt=a;let o=a-Date.now(),s=window.setTimeout(()=>{n.current?.sessionID===e&&(n.current=null),r(e=>e+1)},o);return()=>window.clearTimeout(s)},[t,e]),t)return t;let i=n.current;return i&&i.sessionID===e&&(i.expiresAt===null||i.expiresAt>Date.now())?i.session:null}function eF(e,t){return ZP(e,t)?.directory??void 0}function tF(){return DM().directory}function nF(){return DM().childStores}var rF=[],iF=40,aF=4,oF=30,sF=4,cF=30,lF=new WeakMap,uF=(e,t,n)=>`${e}\u0000${+!!t}\u0000${n??``}`,dF=e=>{let t=lF.get(e);return t||(t=new Map,lF.set(e,t)),t},fF=(e,t,n,r)=>{let i=lF.get(e);if(!i)return;let a=uF(t,n,r),o=i.get(a);if(o)return i.delete(a),i.set(a,o),o},pF=(e,t)=>{if(!t.sessionID)return;let n=dF(e),r=uF(t.sessionID,t.suspendPartUpdates,t.suspendedPartUpdatesMessageID),i=v()?oF:Vm()?cF:null;if(i!==null&&t.list.length>i){n.delete(r);return}n.delete(r),n.set(r,t);let a=v()?aF:Vm()?sF:iF;for(;n.size>a;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}};function mF(e,t){let n=lF.get(e);if(n)for(let e of t){if(!e)continue;let t=`${e}\u0000`;for(let e of[...n.keys()])e.startsWith(t)&&n.delete(e)}}var hF=`The following tool was executed by the user`,gF=(e,t,n)=>{if(!n||n.length!==1)return!1;let r=n[0];if(r?.type!==`tool`||typeof r.tool!=`string`||r.tool.toLowerCase()!==`bash`)return!1;let i=t.parentID;if(typeof i!=`string`||i.length===0)return!1;let a=e[i];return a?a.some(e=>{if(e?.type!==`text`||e.synthetic!==!0)return!1;let t=e.text;return typeof t==`string`&&t.trim().startsWith(hF)}):!1};function _F(e,t){if(e.length!==t.length)return!0;for(let n=0;n<t.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||r.type!==i.type||i.type===`tool`&&r!==i)return!0}return!1}var vF=(e,t)=>{for(let n of e.list){let r=t.parts[n.info.id]??NF;if(e.suspendPartUpdates){let i=e.suspendedPartUpdatesMessageID;if((!i||n.info.id===i)&&!gF(t.parts,n.info,r)&&!_F(n.parts,r))continue}if(Gs(n.parts,r,n.info)!==n.parts)return!1}return!0},yF=(e,t,n,r)=>{let i=fF(e,t.sessionID,n,r);if(i&&i.sourceMessages===t.messages&&i.revertMessageID===t.revertMessageID&&i.suspendPartUpdates===n&&i.suspendedPartUpdatesMessageID===r&&vF(i,t))return i};function bF(e,t){let n=e.messages,r=e.revertMessageID;if(t&&t.sourceMessages===n&&t.revertMessageID===r)return{sourceMessages:n,visibleMessages:t.visibleMessages,revertMessageID:r};let i=n;return{sourceMessages:n,visibleMessages:r?ds(i,r):n.length===0?MF:i.slice(),revertMessageID:r}}function xF(e,t,n=!1,r){let i=e.sessionID,{sourceMessages:a,visibleMessages:o,revertMessageID:s}=bF(e,t),c=new Map,l=o.map(i=>{let a=t?.byId.get(i.id),o=e.parts[i.id]??NF,s=n&&a&&(!r||i.id===r)&&!gF(e.parts,i,o)&&!_F(a.parts,o)?a.parts:Gs(a?.parts,o,i),l=a&&a.info===i&&a.parts===s?a:{info:i,parts:s};return c.set(i.id,l),l});return t&&t?.visibleMessages===o&&t.suspendPartUpdates===n&&t.suspendedPartUpdatesMessageID===r&&t.list.length===l.length&&t.list.every((e,t)=>e===l[t])&&t?t:{sessionID:i,sourceMessages:a,visibleMessages:o,revertMessageID:s,suspendPartUpdates:n,suspendedPartUpdatesMessageID:r,list:l,byId:c}}function SF(e,t){let n=DM(),r=t??n.directory;return od(e,r,TP(r))}function CF(e,t){let n=DM(),r=t??n.directory;return hd(e,r,TP(r))}function wF(e,t){let n=DM(),r=t??n.directory;return pd(e,r,TP(r))}function TF(e,t){let n=(0,V.c)(8),r=DM(),i=t??r.directory,a=TP(i),o=(0,W.useRef)(dM),s;n[0]!==e||n[1]!==a||n[2]!==i?(s=()=>{if(!e)return o.current=dM,dM.history;let t=(H()??yu(i,a)).getTranscript(U(i,e)),n=a.getState().session.find(t=>t.id===e)?.revert?.messageID,r=hM({sessionID:e,messages:Gu(t),parts:t.partsByMessageID,revertMessageID:n},o.current);return o.current=r,r.history},n[0]=e,n[1]=a,n[2]=i,n[3]=s):s=n[3];let c=s,l;n[4]!==e||n[5]!==a||n[6]!==i?(l=t=>{if(!e)return EF;let n=(H()??yu(i,a)).subscribe(U(i,e),()=>{t()}),r=mu(()=>{n(),n=(H()??yu(i,a)).subscribe(U(i,e),()=>{t()}),t()}),o=a.subscribe(()=>{t()});return()=>{r(),n(),o()}},n[4]=e,n[5]=a,n[6]=i,n[7]=l):l=n[7];let u=l;return W.useSyncExternalStore(u,c,c)}function EF(){}function DF(e,t,n){let r=(0,V.c)(16),i=DM(),a=t??i.directory,o=TP(a),s=!!n?.suspendPartUpdates,c=n?.suspendPartUpdatesForMessageId??void 0,l,u;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[],u=new Map,r[0]=l,r[1]=u):(l=r[0],u=r[1]);let d;r[2]!==e||r[3]!==s||r[4]!==c?(d={sessionID:e,sourceMessages:MF,visibleMessages:MF,revertMessageID:void 0,suspendPartUpdates:s,suspendedPartUpdatesMessageID:c,list:l,byId:u},r[2]=e,r[3]=s,r[4]=c,r[5]=d):d=r[5];let f=(0,W.useRef)(d),p;r[6]!==n?.suspendPartUpdates||r[7]!==n?.suspendPartUpdatesForMessageId||r[8]!==e||r[9]!==o||r[10]!==a?(p=()=>{if(!e)return rF;let t=(H()??yu(a,o)).getTranscript(U(a,e)),r=!!n?.suspendPartUpdates,i=n?.suspendPartUpdatesForMessageId??void 0,s=Gu(t,f.current.sessionID===e?f.current.sourceMessages:fF(o,e,r,i)?.sourceMessages),c=o.getState().session.find(t=>t.id===e)?.revert?.messageID,l={sessionID:e,messages:s,parts:t.partsByMessageID,revertMessageID:c},u=yF(o,l,r,i);if(u)return f.current=u,u.list;let d=xF(l,f.current.sessionID===e?f.current:fF(o,e,r,i),r,i);return f.current=d,pF(o,d),d.list},r[6]=n?.suspendPartUpdates,r[7]=n?.suspendPartUpdatesForMessageId,r[8]=e,r[9]=o,r[10]=a,r[11]=p):p=r[11],n?.suspendPartUpdates,n?.suspendPartUpdatesForMessageId;let m=p,h;r[12]!==e||r[13]!==o||r[14]!==a?(h=t=>{if(!e)return OF;Hu(a,e);let n=(H()??yu(a,o)).subscribe(U(a,e),()=>{t()}),r=mu(()=>{n(),n=(H()??yu(a,o)).subscribe(U(a,e),()=>{t()}),Uu(a,e),Hu(a,e),t()}),i=o.subscribe(()=>{t()});return()=>{r(),n(),i()}},r[12]=e,r[13]=o,r[14]=a,r[15]=h):h=r[15];let g=h;return W.useSyncExternalStore(g,m,m)}function OF(){}var kF=new Set;function AF(e,t){let n=tF(),r=t??n,i=TP(r),a=W.useRef(0);W.useEffect(()=>{if(!e)return;let t=H()??yu(r,i),n=U(r,e),o=t.getTranscript(n),s=t.hasSession?.(n);if(Ku(o,{resolved:s===!0||void 0}).renderable){Yb({directory:r,sessionID:e,store:i});return}if(!i.getState().session.some(t=>t.id===e))return;let c=`${r}:${e}`;if(kF.has(c))return;let l=++a.current,u=()=>l!==a.current;kF.add(c),(async()=>{try{if(H())try{if(await Cu(r,e),u())return;Yb({directory:r,sessionID:e,store:i,isStale:u})}catch{if(u())return;await lN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}else await lN(r,e,i,{reason:`ensure-session-messages`,isStale:u})}catch{}finally{kF.delete(c)}})()},[e,i,r])}function jF(e,t){let n=DM(),r=t??n.directory;return qu(e,r,TP(r))}var MF=[],NF=[],PF=[],FF=[],IF=[],LF=()=>({requestID:fe(),queueItemID:fe(),operationID:fe(),messageID:ge(`msg`)}),RF=e=>({kind:`pending-admission`,requestID:e.requestID,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,createdAt:e.createdAt,phase:`admitting`,attachmentCount:e.attachmentCount,...e.composerDocument?{composerDocument:e.composerDocument}:{},...e.composerMentions?{composerMentions:e.composerMentions}:{}}),zF,BF=(e,t)=>{let n=e.establishing;if(!n||t&&n.draftID!==t||n.pending.length===0)return IF;if(zF&&zF.pending===n.pending&&zF.draftID===t)return zF.items;let r=n.pending.map(RF);return zF={pending:n.pending,draftID:t,items:r},r},VF=e=>t=>t.flights[e]??null,HF=e=>t=>!!e&&t.establishing?.draftID===e,UF=e=>t=>BF(t,e),WF=(e,t)=>({flightKind:e,inFlight:e!==null,establishing:t}),GF=Oe()((e,t)=>({flights:{},establishing:null,beginFlight:(n,r=`send`)=>{let i=n.trim();return!i||t().flights[i]?!1:(e(e=>({flights:{...e.flights,[i]:r}})),!0)},endFlight:n=>{let r=n.trim();!r||!t().flights[r]||e(e=>{if(!e.flights[r])return e;let t={...e.flights};return delete t[r],{flights:t}})},isInFlight:e=>!!t().flights[e.trim()],beginEstablishing:({draftID:n,primaryMessageID:r})=>{let i=n.trim(),a=r.trim();if(!i||!a)return!1;let o=t().establishing;return o?o.draftID===i&&o.primaryMessageID===a:(e({establishing:{draftID:i,primaryMessageID:a,pending:[]}}),!0)},isEstablishing:e=>e?t().establishing?.draftID===e:!1,getEstablishing:()=>t().establishing,enqueueEstablishingFollowUp:n=>{let r=t().establishing;if(!r||r.draftID!==n.draftID||!n.sendConfig.providerID||!n.sendConfig.modelID)return null;let i=n.content;if(!i.trim()&&(n.attachments?.length??0)===0)return null;let a=n.identity??LF(),o=[...n.attachments??[]],s={kind:`pending-admission`,requestID:a.requestID,queueItemID:a.queueItemID,operationID:a.operationID,messageID:a.messageID||ge(`msg`),content:i,createdAt:n.createdAt??Date.now(),phase:`admitting`,attachmentCount:o.length,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},draftID:n.draftID,sendConfig:{providerID:n.sendConfig.providerID,modelID:n.sendConfig.modelID,...n.sendConfig.agent?{agent:n.sendConfig.agent}:{},...n.sendConfig.variant?{variant:n.sendConfig.variant}:{}},attachments:o};return e({establishing:{...r,pending:[...r.pending,s]}}),s},removeEstablishingFollowUp:n=>{let r=t().establishing;if(!r)return null;let i=r.pending.findIndex(e=>e.requestID===n);if(i<0)return null;let a=r.pending[i];return e({establishing:{...r,pending:[...r.pending.slice(0,i),...r.pending.slice(i+1)]}}),a??null},takeEstablishingPending:n=>{let r=t().establishing;if(!r||r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},clearEstablishing:n=>{let r=t().establishing;if(!r||n!=null&&n!==``&&r.draftID!==n)return[];let i=r.pending;return e({establishing:null}),i},shouldBlockNewSessionDraftOpen:()=>t().establishing!==null})),KF=Oe((e,t)=>({armed:!1,objectiveOverride:null,setArmed:(t,n=null)=>e({armed:t,objectiveOverride:t?n:null}),consume:()=>{let{armed:n,objectiveOverride:r}=t();return n&&e({armed:!1,objectiveOverride:null}),{armed:n,objectiveOverride:r}}})),X=class extends Error{status;code;constructor(e,t){super(`Message queue server request failed: ${t}`),this.name=`MessageQueueServerError`,this.status=e,this.code=t}},qF=`/api/openchamber/message-queue`,JF=new Set([`validation_error`,`revision_conflict`,`row_version_conflict`,`idempotency_conflict`,`generation_conflict`,`authority_conflict`,`not_found`,`scope_locked`,`scope_limit`,`reserved`,`internal_error`,`unavailable`]),YF=new Set([`revision`,`scopeID`,`queueItemID`,`rowVersion`,`removedQueueItemID`,`projectDirectory`,`token`,`state`,`scopeCount`,`statusCounts`]),XF=new Set([`scopeID`,`revision`,`directory`,`sessionID`,`worktreeState`,`itemCount`]),ZF=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Z=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,QF=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),$F=async e=>{if(e.status===501)return`unavailable`;try{let t=await e.json();if(ZF(t)&&typeof t.code==`string`&&JF.has(t.code))return t.code}catch{}return`unavailable`},eI=async(e,t)=>{let n;try{n=await F(e,t)}catch{throw new X(0,`unavailable`)}if(!n.ok)throw new X(n.status,await $F(n));try{return await n.json()}catch{throw new X(n.status,`unavailable`)}},tI=()=>{throw new X(200,`unavailable`)},nI=e=>ZF(e)&&Object.getPrototypeOf(e)===Object.prototype,rI=e=>{if(!(!nI(e)||typeof e.text!=`string`||!Array.isArray(e.references)||e.references.some(e=>!nI(e))))return{text:e.text,references:e.references.map(e=>({...e}))}},iI=e=>Array.isArray(e)&&e.every(nI)?e.map(e=>({...e})):void 0,aI=e=>{if(!(!ZF(e)||typeof e.providerID!=`string`||typeof e.modelID!=`string`)&&!(e.agent!==void 0&&typeof e.agent!=`string`||e.variant!==void 0&&typeof e.variant!=`string`))return{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}},oI=e=>ZF(e)?e.kind===`primary`&&Object.keys(e).length===1?{kind:`primary`}:e.kind===`assistant`&&Object.keys(e).every(e=>e===`kind`||e===`assistantID`)&&typeof e.assistantID==`string`&&e.assistantID?{kind:`assistant`,assistantID:e.assistantID}:null:null,sI=e=>{if(!Array.isArray(e)||e.length===0||e.length>129)return null;let t=[],n=0;for(let r of e){if(!nI(r))return null;if(r.type===`text`&&Object.keys(r).every(e=>e===`type`||e===`text`||e===`synthetic`)&&typeof r.text==`string`&&(r.synthetic===void 0||typeof r.synthetic==`boolean`)){t.push({type:`text`,text:r.text,...r.synthetic===void 0?{}:{synthetic:r.synthetic}});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.attachmentID==`string`&&r.attachmentID){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,attachmentID:r.attachmentID});continue}if(r.type===`file`&&Object.keys(r).length===3&&typeof r.mime==`string`&&typeof r.url==`string`){if(n+=1,n>64)return null;t.push({type:`file`,mime:r.mime,url:r.url});continue}return null}return t},cI=e=>{if(!Array.isArray(e)||e.length>64)return null;let t=new Set,n=[];for(let r of e){if(!nI(r)||Object.keys(r).some(e=>![`partID`,`text`,`synthetic`,`attachmentIDs`,`deliveryPartIndexes`].includes(e))||typeof r.partID!=`string`||!r.partID||t.has(r.partID)||typeof r.text!=`string`||r.synthetic!==void 0&&typeof r.synthetic!=`boolean`||!Array.isArray(r.attachmentIDs)||r.attachmentIDs.some(e=>typeof e!=`string`||!e)||new Set(r.attachmentIDs).size!==r.attachmentIDs.length||!Array.isArray(r.deliveryPartIndexes)||r.deliveryPartIndexes.length!==r.attachmentIDs.length+1||r.deliveryPartIndexes.some(e=>!Number.isSafeInteger(e)||e<0)||new Set(r.deliveryPartIndexes).size!==r.deliveryPartIndexes.length)return null;t.add(r.partID),n.push({partID:r.partID,text:r.text,...r.synthetic===!0?{synthetic:!0}:{},attachmentIDs:[...r.attachmentIDs],deliveryPartIndexes:[...r.deliveryPartIndexes]})}return n},lI=e=>{if(!nI(e)||Object.keys(e).some(e=>![`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`locator`].includes(e))||typeof e.attachmentID!=`string`||!e.attachmentID||typeof e.filename!=`string`||!e.filename||typeof e.mimeType!=`string`||!e.mimeType||!Z(e.size)||![`local`,`vscode`,`server`].includes(String(e.source))||!nI(e.locator))return null;let t=e.occurrenceRefID;if(!(Array.isArray(t)&&(t.length===2&&t[0]===`root`&&t[1]===e.attachmentID||t.length===3&&t[0]===`part`&&typeof t[1]==`string`&&t[1]&&t[2]===e.attachmentID)))return null;let n=e.locator;return n.kind===`upload`&&Object.keys(n).every(e=>[`kind`,`uploadID`,`storageKey`].includes(e))&&typeof n.uploadID==`string`&&n.uploadID&&(n.storageKey===void 0||typeof n.storageKey==`string`)&&n.storageKey!==``?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`upload`,uploadID:n.uploadID}}:n.kind===`server-path`&&Object.keys(n).every(e=>[`kind`,`path`].includes(e))&&typeof n.path==`string`&&n.path?{attachmentID:e.attachmentID,occurrenceRefID:t,filename:e.filename,mimeType:e.mimeType,size:e.size,source:e.source,locator:{kind:`server-path`,path:n.path}}:null},uI=e=>Array.isArray(e)&&e.map(lI).every(e=>e!==null)?e.map(lI):null,dI=e=>{if(!ZF(e)||typeof e.queueItemID!=`string`||typeof e.operationID!=`string`||typeof e.messageID!=`string`||typeof e.content!=`string`||typeof e.status!=`string`||!Z(e.attemptCount)||!Z(e.position)||!Z(e.rowVersion)||!Z(e.createdAt)||e.manualDispatchRequested!==void 0&&typeof e.manualDispatchRequested!=`boolean`)return null;let t=e.composerDocument===void 0?void 0:rI(e.composerDocument),n=e.composerMentions===void 0?void 0:iI(e.composerMentions),r=e.sendConfig===void 0?void 0:aI(e.sendConfig),i=e.deliveryTarget===void 0?{kind:`primary`}:oI(e.deliveryTarget),a=e.deliveryParts===void 0?void 0:sI(e.deliveryParts),o=e.syntheticParts===void 0?void 0:cI(e.syntheticParts),s=e.attachmentIssues===void 0?void 0:iI(e.attachmentIssues);if(e.composerDocument!==void 0&&!t||e.composerMentions!==void 0&&!n||e.sendConfig!==void 0&&!r||!i||e.deliveryParts!==void 0&&!a||i.kind===`assistant`&&!a||e.syntheticParts!==void 0&&!o||e.attachmentIssues!==void 0&&!s)return null;let c=e.attachments===void 0?void 0:uI(e.attachments);if(e.attachments!==void 0&&!c)return null;if(o&&a){let e=new Set,t=new Set;for(let n of o){let[r,...i]=n.deliveryPartIndexes;if(r===void 0||e.has(r)||a[r]?.type!==`text`||a[r].text!==n.text)return null;e.add(r);for(let t of i){if(e.has(t)||a[t]?.type!==`file`||!(`attachmentID`in a[t])||a[t].attachmentID!==n.attachmentIDs[i.indexOf(t)])return null;e.add(t)}for(let e of n.attachmentIDs){let r=c?.find(t=>t.attachmentID===e);if(!r||t.has(e)||r.occurrenceRefID[0]!==`part`||r.occurrenceRefID[1]!==n.partID||r.occurrenceRefID[2]!==e)return null;t.add(e)}}if(c?.some(e=>e.occurrenceRefID[0]===`part`&&!t.has(e.attachmentID)))return null}return{queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,status:e.status,attemptCount:e.attemptCount,position:e.position,rowVersion:e.rowVersion,createdAt:e.createdAt,deliveryTarget:i,...e.manualDispatchRequested===!0?{manualDispatchRequested:!0}:{},...t?{composerDocument:t}:{},...n?{composerMentions:n}:{},...r?{sendConfig:r}:{},...a?{deliveryParts:a}:{},...o?{syntheticParts:o}:{},...c?{attachments:c}:{},...s?{attachmentIssues:s}:{}}},fI=e=>{if(!ZF(e)||typeof e.scopeID!=`string`||!Z(e.revision)||typeof e.directory!=`string`||typeof e.sessionID!=`string`||typeof e.worktreeState!=`string`||!Z(e.itemCount)||!Array.isArray(e.items)||e.items.length>8||e.nextOffset!==void 0&&(!Z(e.nextOffset)||e.nextOffset<=0))return null;let t=e.items.map(dI);return t.every(e=>e!==null)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount,items:t,...e.nextOffset===void 0?{}:{nextOffset:e.nextOffset}}:null},pI=e=>ZF(e)&&Object.keys(e).every(e=>XF.has(e))&&typeof e.scopeID==`string`&&Z(e.revision)&&typeof e.directory==`string`&&typeof e.sessionID==`string`&&typeof e.worktreeState==`string`&&Z(e.itemCount)?{scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}:null,mI=e=>ZF(e)&&typeof e.projectDirectory==`string`&&QF(e.orderedPaths)&&Z(e.revision)?{projectDirectory:e.projectDirectory,orderedPaths:e.orderedPaths,revision:e.revision}:null,hI=e=>{if(!ZF(e)||!Z(e.revision)||!Array.isArray(e.scopes)||!Array.isArray(e.worktreeOrders))return tI();let t=e.scopes.map(pI),n=e.worktreeOrders.map(mI);return!t.every(e=>e!==null)||!n.every(e=>e!==null)?tI():{revision:e.revision,scopes:t,worktreeOrders:n}},gI=e=>!ZF(e)||!Z(e.revision)||Object.keys(e).some(e=>!YF.has(e))||e.scopeID!==void 0&&typeof e.scopeID!=`string`||e.queueItemID!==void 0&&typeof e.queueItemID!=`string`||e.rowVersion!==void 0&&!Z(e.rowVersion)||e.removedQueueItemID!==void 0&&typeof e.removedQueueItemID!=`string`||e.projectDirectory!==void 0&&typeof e.projectDirectory!=`string`||e.token!==void 0&&typeof e.token!=`string`||e.state!==void 0&&typeof e.state!=`string`||e.scopeCount!==void 0&&!Z(e.scopeCount)||e.statusCounts!==void 0&&(!ZF(e.statusCounts)||Object.values(e.statusCounts).some(e=>!Z(e)))?tI():{revision:e.revision,...typeof e.scopeID==`string`?{scopeID:e.scopeID}:{},...typeof e.queueItemID==`string`?{queueItemID:e.queueItemID}:{},...Z(e.rowVersion)?{rowVersion:e.rowVersion}:{},...typeof e.removedQueueItemID==`string`?{removedQueueItemID:e.removedQueueItemID}:{},...typeof e.projectDirectory==`string`?{projectDirectory:e.projectDirectory}:{},...typeof e.token==`string`?{token:e.token}:{},...typeof e.state==`string`?{state:e.state}:{},...Z(e.scopeCount)?{scopeCount:e.scopeCount}:{},...ZF(e.statusCounts)?{statusCounts:e.statusCounts}:{}},_I=(e,t,n)=>({method:e,headers:{"Content-Type":`application/json`},body:JSON.stringify(t),signal:n}),vI=(e,t)=>{let{signal:n,...r}=t;return _I(e,r,n)},yI=async e=>hI(await eI(qF,{signal:e})),bI=new Map,xI=(e,t)=>`${a().api(qF)}\u0000${e}\u0000${t.offset??``}\u0000${t.limit??``}\u0000${t.expectedRevision??``}`,SI=async(e,t={})=>{if(t.signal?.aborted)throw new X(0,`unavailable`);let n=xI(e,t),r=bI.get(n);if(r){let e=await r;if(t.signal?.aborted)throw new X(0,`unavailable`);return e}let i=(async()=>fI(await eI(`${qF}/scopes/${encodeURIComponent(e)}`,{query:{offset:t.offset,limit:t.limit,expectedRevision:t.expectedRevision},signal:t.signal}))??tI())().finally(()=>{bI.get(n)===i&&bI.delete(n)});return bI.set(n,i),i},CI=15e3,wI=(e,t={})=>new Promise(n=>{let r=t.signal;if(r?.aborted){n(`aborted`);return}let i=typeof t.safetyTimeoutMs==`number`&&t.safetyTimeoutMs>0?t.safetyTimeoutMs:CI,a=!1,o=e=>{a||(a=!0,clearTimeout(l),c(),r?.removeEventListener(`abort`,s),n(e))},s=()=>o(`aborted`),c=Kt(t=>{if(t.type===`event-stream-ready`){o(`ready`);return}t.type===`message-queue-changed`&&t.revision>e&&o(`tip`)}),l=setTimeout(()=>o(`timeout`),i),u=Mt(`message-queue-changed`);if(u!==void 0&&u>e){o(`tip`);return}r?.addEventListener(`abort`,s,{once:!0})}),TI=async e=>{let t=await eI(`${qF}/status`,{signal:e}),n=new Set([`capability`,`authority`,`generation`,`activationEpoch`,`activatedAt`,`manifestHash`,`protocol`,`worker`]);return!ZF(t)||Object.keys(t).some(e=>!n.has(e))||typeof t.capability!=`boolean`||t.authority!==void 0&&t.authority!==`shadow`&&t.authority!==`active`&&t.authority!==`paused`||t.generation!==void 0&&!Z(t.generation)||t.activationEpoch!==void 0&&!Z(t.activationEpoch)||t.activatedAt!==void 0&&!Z(t.activatedAt)||t.protocol!==void 0&&t.protocol!==4||t.manifestHash!==void 0&&typeof t.manifestHash!=`string`||t.worker!==void 0&&(!ZF(t.worker)||Object.keys(t.worker).some(e=>e!==`paused`&&e!==`active`)||typeof t.worker.paused!=`boolean`||!Z(t.worker.active))?tI():{capability:t.capability,...typeof t.authority==`string`?{authority:t.authority}:{},...Z(t.generation)?{generation:t.generation}:{},...Z(t.activationEpoch)?{activationEpoch:t.activationEpoch}:{},...Z(t.activatedAt)?{activatedAt:t.activatedAt}:{},...typeof t.manifestHash==`string`?{manifestHash:t.manifestHash}:{},...t.protocol===4?{protocol:4}:{},...ZF(t.worker)?{worker:{paused:t.worker.paused,active:t.worker.active}}:{}}},EI=(e,t)=>Object.keys(e).length===t.length&&Object.keys(e).every(e=>t.includes(e)),DI=e=>{let t=[`revision`,`importID`,`state`,`duplicate`,`manifestHash`,`commit`];if(!ZF(e)||Object.keys(e).some(e=>!t.includes(e))||!Z(e.revision)||typeof e.importID!=`string`||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(e.state))||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`||e.manifestHash!==void 0&&typeof e.manifestHash!=`string`)return tI();let n=e.commit===void 0?void 0:AI(e.commit);return e.commit!==void 0&&!n?tI():{revision:e.revision,importID:e.importID,state:e.state,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{},...typeof e.manifestHash==`string`?{manifestHash:e.manifestHash}:{},...n?{commit:n}:{}}},OI=e=>!ZF(e)||!EI(e,e.duplicate===void 0?[`revision`,`importID`,`staged`]:[`revision`,`importID`,`staged`,`duplicate`])||!Z(e.revision)||typeof e.importID!=`string`||e.staged!==!0||e.duplicate!==void 0&&typeof e.duplicate!=`boolean`?tI():{revision:e.revision,importID:e.importID,staged:!0,...typeof e.duplicate==`boolean`?{duplicate:e.duplicate}:{}},kI=e=>!ZF(e)||!EI(e,[`revision`,`importID`,`manifestHash`,`state`,`itemCount`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||e.state!==`sealed`||!Z(e.itemCount)?tI():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,state:`sealed`,itemCount:e.itemCount},AI=e=>!ZF(e)||!EI(e,[`revision`,`importID`,`manifestHash`,`generation`,`activationEpoch`,`added`])||!Z(e.revision)||typeof e.importID!=`string`||typeof e.manifestHash!=`string`||!/^[a-f0-9]{64}$/.test(e.manifestHash)||!Z(e.generation)||!Z(e.activationEpoch)||!Z(e.added)?tI():{revision:e.revision,importID:e.importID,manifestHash:e.manifestHash,generation:e.generation,activationEpoch:e.activationEpoch,added:e.added},jI=e=>AI(e),MI=e=>AI(e),NI=(e,t)=>!ZF(e)||!EI(e,[`authority`,`generation`,`revision`])||e.authority!==t||!Z(e.generation)||!Z(e.revision)?tI():{authority:t,generation:e.generation,revision:e.revision},PI=async e=>DI(await eI(`${qF}/imports`,vI(`POST`,e))),FI=async(e,t)=>{let n=await eI(`${qF}/imports/${encodeURIComponent(e)}`,{signal:t});if(!ZF(n)||![`staging`,`sealed`,`committed`,`abandoned`,`expired`].includes(String(n.state))||!Z(n.itemCount)||!Array.isArray(n.staged)||n.manifestHash!==void 0&&typeof n.manifestHash!=`string`)return tI();let r=n.staged.map(e=>ZF(e)&&Z(e.scopeOrdinal)&&Z(e.itemOrdinal)&&typeof e.payloadHash==`string`?{scopeOrdinal:e.scopeOrdinal,itemOrdinal:e.itemOrdinal,payloadHash:e.payloadHash}:null),i=n.commit===void 0?void 0:AI(n.commit);return!r.every(e=>e!==null)||n.commit!==void 0&&!i?tI():{state:n.state,...typeof n.manifestHash==`string`?{manifestHash:n.manifestHash}:{},itemCount:n.itemCount,staged:r,...i?{commit:i}:{}}},II=async(e,t)=>OI(await eI(`${qF}/imports/${encodeURIComponent(e)}/items`,vI(`POST`,t))),LI=async(e,t)=>kI(await eI(`${qF}/imports/${encodeURIComponent(e)}/seal`,vI(`POST`,t))),RI=async(e,t)=>jI(await eI(`${qF}/imports/${encodeURIComponent(e)}/activate`,vI(`POST`,t))),zI=async(e,t)=>MI(await eI(`${qF}/imports/${encodeURIComponent(e)}/late-commit`,vI(`POST`,t))),BI=async e=>NI(await eI(`${qF}/authority/pause`,vI(`POST`,e)),`paused`),VI=async e=>NI(await eI(`${qF}/authority/resume`,vI(`POST`,e)),`active`),HI=async(e={})=>{let t=await eI(`${qF}/attachments/uploads`,vI(`POST`,e));return!ZF(t)||typeof t.uploadID!=`string`||typeof t.uploadToken!=`string`||!Z(t.expiresAt)?tI():{uploadID:t.uploadID,uploadToken:t.uploadToken,expiresAt:t.expiresAt}},UI=async(e,t,n,r)=>{let i;try{i=await F(`${qF}/attachments/uploads/${encodeURIComponent(e.uploadID)}`,{method:`PUT`,headers:{"Content-Length":String(t.size),"X-Message-Queue-Content-Length":String(t.size),"X-Message-Queue-Upload-Token":e.uploadToken,"X-Message-Queue-Sha256":n},body:t,signal:r})}catch{throw new X(0,`unavailable`)}if(!i.ok)throw new X(i.status,await $F(i))},WI=e=>!ZF(e)||!Z(e.revision)||typeof e.scopeID!=`string`||typeof e.queueItemID!=`string`||!Z(e.rowVersion)||typeof e.token!=`string`||!Z(e.expiresAt)||!Z(e.generation)?tI():{revision:e.revision,scopeID:e.scopeID,queueItemID:e.queueItemID,rowVersion:e.rowVersion,token:e.token,expiresAt:e.expiresAt,generation:e.generation},GI=e=>!ZF(e)||typeof e.queueItemID!=`string`||typeof e.token!=`string`||!Z(e.generation)||!Z(e.expiresAt)?tI():{queueItemID:e.queueItemID,token:e.token,generation:e.generation,expiresAt:e.expiresAt},KI=async(e,t)=>WI(await eI(`${qF}/items/${encodeURIComponent(e)}/reserve`,vI(`POST`,t))),qI=async(e,t)=>{await eI(`${qF}/items/${encodeURIComponent(e)}/release`,vI(`POST`,t))},JI=async(e,t)=>GI(await eI(`${qF}/items/${encodeURIComponent(e)}/edit-reservations/${encodeURIComponent(t.token)}/renew`,vI(`POST`,t))),YI=async(e,t)=>gI(await eI(`${qF}/items/${encodeURIComponent(e)}/reserved-remove`,vI(`DELETE`,t))),XI=async(e,t,n)=>{let r;try{r=await F(`${qF}/items/${encodeURIComponent(e)}/attachments/${encodeURIComponent(t.attachmentID)}/content`,{signal:n})}catch{throw new X(0,`unavailable`)}if(!r.ok)throw new X(r.status,await $F(r));let i=t.mimeType.trim().toLowerCase(),a=r.headers.get(`Content-Length`),o=r.headers.get(`Content-Type`)?.split(`;`,1)[0]?.trim().toLowerCase();if(a!==null&&a!==String(t.size)||o!==i)throw new X(r.status,`unavailable`);let s;try{s=await r.blob()}catch{throw new X(r.status,`unavailable`)}if(s.size!==t.size)throw new X(r.status,`unavailable`);let c=new Blob([s],{type:i});return c.type===i?c:Object.defineProperty(c,"type",{value:i})},ZI=async e=>gI(await eI(`${qF}/items`,vI(`POST`,e))),QI=async(e,t)=>gI(await eI(`${qF}/items/${encodeURIComponent(e)}`,vI(`PATCH`,t))),$I=async(e,t)=>gI(await eI(`${qF}/items/${encodeURIComponent(e)}/send`,vI(`POST`,t))),eL=async(e,t)=>gI(await eI(`${qF}/items/${encodeURIComponent(e)}`,vI(`DELETE`,t))),tL=async(e,t)=>gI(await eI(`${qF}/scopes/${encodeURIComponent(e)}/order`,vI(`PUT`,t))),nL=async(e,t)=>mI(await eI(`${qF}/worktrees/order`,{query:{projectDirectory:e},signal:t}))??tI(),rL=async e=>gI(await eI(`${qF}/worktrees/order`,vI(`PUT`,e))),iL=(e=r())=>N.messageQueue.snapshot(e),aL=(e=r())=>N.messageQueue.status(e),oL=(e,t,n=r())=>N.messageQueue.scope(e,t,n),sL=(e=r())=>({queryKey:aL(e),queryFn:({signal:e})=>TI(e),retry:!1,staleTime:3e4}),cL=(e=r())=>({queryKey:iL(e),queryFn:({signal:e})=>yI(e),staleTime:5e3}),lL=(e=L,t=r())=>e.fetchQuery(sL(t)),uL=(e=L,t=r())=>e.fetchQuery(cL(t)),dL=async(e=L,t=r())=>e.fetchQuery({...sL(t),staleTime:0}),fL=async(e=L,t=r())=>e.fetchQuery({...cL(t),staleTime:0}),pL=(e,t,n=r())=>{e.setQueryData(oL(t.scopeID,t.revision,n),{pages:[t],pageParams:[0]})},mL=(e,t,n=r())=>{e.setQueryData(aL(n),t)},hL=(e,t,n=r())=>{e.setQueryData(iL(n),t)},gL=(e,t,n,i=r())=>{let a=e.getQueryData(oL(t,n,i));if(!a?.pages.length)return;let o=a.pages[0];if(!o)return;let s=a.pages.flatMap(e=>e.items);return s.length===o.itemCount&&a.pages.every(e=>e.revision===o.revision)?{...o,items:s,nextOffset:void 0}:void 0},_L=(e,t=r())=>e.removeQueries({queryKey:[t,`messageQueue`,`scope`],exact:!1}),vL=(e,t,n=r())=>e.removeQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),yL=(e,t,n=r())=>e.invalidateQueries({queryKey:[n,`messageQueue`,`scope`,t],exact:!1}),bL=`openchamber_message_queue_ledger_v4`,xL=`message-queue-store`,SL={scopes:128,totalItems:2048,attachmentsPerItem:64,issuesPerItem:64,string:8192,content:2e5,dataURL:26214400,bytes:26214400},CL=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,wL=(e,t)=>Object.keys(e).every(e=>t.includes(e)),TL=(e,t=SL.string)=>typeof e==`string`&&e.length>0&&e.length<=t,EL=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0,DL=e=>JSON.parse(JSON.stringify(e)),OL=(e,t,n,r)=>{let i=CL(t)?t:{};return{...e?{scopeKey:e}:{},...TL(i.queueItemID)?{queueItemID:i.queueItemID}:{},...TL(i.operationID)?{operationID:i.operationID}:{},path:n,reason:r}},kL=e=>e.state===`bound`?`bound:${JSON.stringify([e.transportIdentity,e.directory,e.sessionID])}`:`unbound-legacy:${JSON.stringify([e.sessionID])}`,AL=e=>{if(typeof e!=`string`)return;let t=e.startsWith(`bound:`)?(()=>{try{return JSON.parse(e.slice(6))}catch{return}})():e.startsWith(`unbound-legacy:`)?(()=>{try{return JSON.parse(e.slice(15))}catch{return}})():void 0,n=ML(e.startsWith(`bound:`)&&Array.isArray(t)&&t.length===3?{state:`bound`,transportIdentity:t[0],directory:t[1],sessionID:t[2]}:e.startsWith(`unbound-legacy:`)&&Array.isArray(t)&&t.length===1?{state:`unbound-legacy`,sessionID:t[0]}:void 0);return n&&kL(n)===e?n:void 0},jL=()=>({version:4,queues:{},migration:{v3State:`pending`}}),ML=e=>!CL(e)||!TL(e.state)?void 0:e.state===`bound`&&wL(e,[`state`,`transportIdentity`,`directory`,`sessionID`])&&TL(e.transportIdentity)&&TL(e.directory)&&TL(e.sessionID)?{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID}:e.state===`unbound-legacy`&&wL(e,[`state`,`sessionID`])&&TL(e.sessionID)?{state:`unbound-legacy`,sessionID:e.sessionID}:void 0,NL=(e,t)=>{try{let n=JSON.parse(e);return Array.isArray(n)&&(n.length===2&&n[0]===`root`&&n[1]===t||n.length===3&&typeof n[1]==`string`&&n[0]===`part`&&n[2]===t)}catch{return!1}},PL=[`attachmentID`,`occurrenceRefID`,`filename`,`mimeType`,`size`,`source`,`serverPath`,`vscodePath`,`vscodeSource`],FL=e=>{if(!TL(e.attachmentID)||!TL(e.occurrenceRefID)||!NL(e.occurrenceRefID,e.attachmentID)||!TL(e.filename)||typeof e.mimeType!=`string`||e.mimeType.length>SL.string||!EL(e.size))return;let t={attachmentID:e.attachmentID,occurrenceRefID:e.occurrenceRefID,filename:e.filename,mimeType:e.mimeType,size:e.size};if(e.source===`local`&&e.serverPath===void 0&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`local`};if(e.source===`server`&&TL(e.serverPath)&&e.vscodePath===void 0&&e.vscodeSource===void 0)return{...t,source:`server`,serverPath:e.serverPath};if(e.source===`vscode`&&e.serverPath===void 0&&TL(e.vscodePath)&&(e.vscodeSource===`file`||e.vscodeSource===`selection`))return{...t,source:`vscode`,vscodePath:e.vscodePath,vscodeSource:e.vscodeSource}},IL=e=>{if(!CL(e)||!wL(e,[...PL,`version`,`locator`])||e.version!==1)return;let t=FL(e);if(!t||!CL(e.locator))return;let n=e.locator.kind===`blob`&&wL(e.locator,[`kind`,`blobID`])&&TL(e.locator.blobID)?{kind:`blob`,blobID:e.locator.blobID}:e.locator.kind===`url`&&wL(e.locator,[`kind`,`url`])&&ie(e.locator.url)?{kind:`url`,url:e.locator.url}:void 0;return n?{version:1,...t,locator:n}:void 0},LL=e=>{if(!CL(e)||!wL(e,[...PL,`reason`]))return;let t=FL(e);return t&&[`legacy-blob-url`,`legacy-bytes-missing`,`legacy-unbound-data`,`missing-blob`].includes(e.reason)?{...t,reason:e.reason}:void 0},RL=(e,t)=>{if(!CL(e)||!wL(e,[`text`,`references`])||typeof e.text!=`string`)return;let n=we(e.text,e.references),r=n&&ve(n,`queue-canonical`);return r&&r.ok&&r.text===t?n:void 0},zL=(e,t)=>{if(e===void 0)return[];if(!t)return;let n=ae(t.text,e);return!n||n.some(e=>t.references.some(t=>e.range.start<t.end&&t.start<e.range.end))?void 0:n},BL=(e,t)=>{if(!CL(e)||!wL(e,[`version`,`queueItemID`,`operationID`,`messageID`,`owner`,`content`,`composerDocument`,`composerMentions`,`attachments`,`attachmentIssues`,`createdAt`,`sendConfig`,`status`,`attemptCount`,`nextAttemptAt`,`reconciliationStartedAt`,`reconciliationDeadlineAt`,`reconciliationChecks`,`reconciliationNextCheckAt`,`failureKind`])||e.version!==1||!TL(e.queueItemID)||!TL(e.operationID)||!TL(e.messageID)||typeof e.content!=`string`||e.content.length>SL.content||!EL(e.createdAt)||!EL(e.attemptCount)||!Array.isArray(e.attachments)||e.attachments.length>SL.attachmentsPerItem||!Array.isArray(e.attachmentIssues)||e.attachmentIssues.length>SL.issuesPerItem||![`queued`,`sending`,`retrying`,`reconciling`,`unresolved`,`failed`].includes(e.status))return;let n=ML(e.owner),r=e.attachments.map(IL),i=e.attachmentIssues.map(LL),a=e.composerDocument===void 0?void 0:RL(e.composerDocument,e.content),o=zL(e.composerMentions,a);if(!n||e.composerDocument!==void 0&&!a||e.composerMentions!==void 0&&!o||!r.every(Boolean)||!i.every(Boolean))return;let s=new Set(r.map(e=>e.occurrenceRefID)),c=new Set(a?oe(a).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]);if(s.size!==r.length||new Set(i.map(e=>e.occurrenceRefID)).size!==i.length||i.some(e=>s.has(e.occurrenceRefID))||[...c].some(e=>!s.has(e))||e.sendConfig!==void 0&&(!CL(e.sendConfig)||!wL(e.sendConfig,[`providerID`,`modelID`,`agent`,`variant`])||!TL(e.sendConfig.providerID)||!TL(e.sendConfig.modelID)||[e.sendConfig.agent,e.sendConfig.variant].some(e=>e!==void 0&&!TL(e))))return;let l=[e.nextAttemptAt,e.reconciliationStartedAt,e.reconciliationDeadlineAt,e.reconciliationChecks,e.reconciliationNextCheckAt],u=e.reconciliationStartedAt!==void 0&&e.reconciliationDeadlineAt!==void 0&&e.reconciliationChecks!==void 0&&e.reconciliationDeadlineAt>=e.reconciliationStartedAt,d=e.reconciliationStartedAt===void 0&&e.reconciliationDeadlineAt===void 0&&e.reconciliationChecks===void 0&&e.reconciliationNextCheckAt===void 0,f=e.nextAttemptAt===void 0,p=e.failureKind===void 0,m=e.status===`queued`||e.status===`sending`?f&&d&&p&&i.length===0:e.status===`retrying`?e.nextAttemptAt!==void 0&&e.failureKind===`pre-dispatch`&&d&&i.length===0:e.status===`reconciling`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0:e.status===`unresolved`?f&&u&&e.failureKind===`ambiguous-dispatch`&&i.length===0||f&&d&&p&&i.length>0:f&&d&&e.failureKind===`definitive`&&i.length===0;if(l.some(e=>e!==void 0&&!EL(e))||!m)return;let h=e.status===`sending`&&t,g=h?e.createdAt+3e4:e.reconciliationDeadlineAt;if(h&&!EL(g))return;let _=h?e.createdAt:e.reconciliationStartedAt,v=h?0:e.reconciliationChecks;return{version:1,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,owner:n,content:e.content,...a?{composerDocument:a}:{},...o?.length?{composerMentions:o}:{},attachments:r,attachmentIssues:i,createdAt:e.createdAt,...e.sendConfig?{sendConfig:DL(e.sendConfig)}:{},status:h?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{nextAttemptAt:e.nextAttemptAt},..._===void 0?{}:{reconciliationStartedAt:_,reconciliationDeadlineAt:g,reconciliationChecks:v,...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt}},...h?{failureKind:`ambiguous-dispatch`}:e.failureKind?{failureKind:e.failureKind}:{}}},VL=(e,t={})=>{let n=e=>({status:`corrupt`,snapshot:jL(),issues:[OL(void 0,void 0,`$`,e)],degradedScopeKeys:[]});if(!CL(e)||!wL(e,[`version`,`queues`,`migration`])||e.version!==4||!CL(e.queues)||!CL(e.migration)||!wL(e.migration,[`v3State`])||![`pending`,`complete`,`degraded`].includes(e.migration.v3State)||Object.keys(e.queues).length>SL.scopes)return n(`snapshot`);let r=0,i={},a=[],o=new Set,s=new Map,c=new Map,l=new Map,u=(e,t,n,r)=>{a.push(OL(e,t,n,r)),o.add(e)};for(let[a,d]of Object.entries(e.queues)){if(!AL(a)){u(a,d,`$.queues.${JSON.stringify(a)}`,`scope`);continue}if(!Array.isArray(d)){u(a,d,`$.queues.${JSON.stringify(a)}`,`queue`);continue}let e=[];for(let i=0;i<d.length;i++){if(++r>SL.totalItems)return n(`item-limit`);let f=d[i],p=`$.queues.${JSON.stringify(a)}[${i}]`,m=BL(f,t.normalizeSending===!0);if(!m||kL(m.owner)!==a){u(a,f,p,`item`);continue}let h=[[s,m.queueItemID,`duplicate-queue-item-id`],[c,m.operationID,`duplicate-operation-id`],[l,m.messageID,`duplicate-message-id`]].find(([e,t])=>e.has(t));if(h){let[e,,t]=h;u(a,f,p,t),o.add(e.get(h[1]));continue}s.set(m.queueItemID,a),c.set(m.operationID,a),l.set(m.messageID,a),e.push(m)}e.length&&(i[a]=e)}return{status:`ok`,snapshot:DL({version:4,queues:i,migration:{v3State:e.migration.v3State}}),issues:a,degradedScopeKeys:[...o]}},HL=e=>{let t=VL(e);if(t.status===`corrupt`||t.issues.length)return{ok:!1,error:{code:`corrupt`}};try{return{ok:!0,value:JSON.stringify(t.snapshot)}}catch{return{ok:!1,error:{code:`serialization`}}}},UL=()=>({ok:!1,error:{code:`unavailable`}}),WL=e=>({ok:!1,error:{code:e instanceof DOMException&&e.name===`QuotaExceededError`?`quota`:`unavailable`}}),GL=e=>({read:async t=>{if(!e)return UL();try{return{ok:!0,value:e.getItem(t)}}catch(e){return WL(e)}},write:async(t,n)=>{if(!e)return UL();try{return e.setItem(t,n),{ok:!0,value:void 0}}catch(e){return WL(e)}},remove:async t=>{if(!e)return UL();try{return e.removeItem(t),{ok:!0,value:void 0}}catch(e){return WL(e)}}}),KL=()=>{try{return GL(typeof window>`u`?null:window.localStorage)}catch{return GL(null)}},qL=async e=>{let t=await e.read(bL);if(!t.ok)return t;if(t.value===null)return{ok:!0,value:{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}};try{let e=VL(JSON.parse(t.value),{normalizeSending:!0});return{ok:!0,value:{raw:t.value,snapshot:e.status===`ok`?e.snapshot:null,status:e.status===`corrupt`?`corrupt`:e.issues.length?`partial`:`ok`,issues:e.issues,degradedScopeKeys:e.degradedScopeKeys}}}catch{return{ok:!0,value:{raw:t.value,snapshot:null,status:`corrupt`,issues:[OL(void 0,void 0,`$`,`json`)],degradedScopeKeys:[]}}}},JL=async e=>{let t=await qL(e);return t.ok?t.value.status===`empty`?{ok:!0,value:null}:t.value.status===`ok`?{ok:!0,value:t.value.snapshot}:{ok:!1,error:{code:`corrupt`}}:t},YL=async(e,t)=>{let n=HL(t);return n.ok?e.write(bL,n.value):n},XL=e=>{let t=!0,n=[],r=!1,i=new Set,a=()=>{if(!r&&n.length===0){for(let e of i)e();i.clear()}},o=()=>{if(r)return;let t=n.shift();if(!t){a();return}r=!0,YL(e,t.snapshot).then(t.resolve).finally(()=>{r=!1,o()})},s=()=>{let e=n;n=[],e.forEach(e=>e.resolve({ok:!1,error:{code:`cancelled`}})),a()};return{readDetailed:()=>qL(e),read:()=>JL(e),persist:e=>{if(!t)return Promise.resolve({ok:!1,error:{code:`cancelled`}});let r=VL(e);if(r.status===`corrupt`||r.issues.length)return Promise.resolve({ok:!1,error:{code:`corrupt`}});let i=DL(r.snapshot);return new Promise(e=>{n.push({snapshot:i,resolve:e}),o()})},flush:()=>!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)),setEnabled:async e=>{t=e,t||s(),await(!r&&n.length===0?Promise.resolve():new Promise(e=>i.add(e)))},cancelPending:s}},ZL=SL.string,QL=SL.dataURL,$L=SL.bytes,eR=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype,tR=(e,t,n=!1)=>typeof e==`string`&&e.length<=ZL&&(n||e.length>0)?e:t,nR=(e,t=0)=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:t,rR=(e,t)=>kL(e)===kL(t),iR=(e,t,n,r)=>({scopeKey:e,queueItemID:t,path:n,reason:r}),aR=async(e,t)=>{let n=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(t));return`${e}-${[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`},oR=e=>typeof e==`string`&&e.length>0&&e.length<=ZL,sR=e=>AL(e)??(oR(e)?{state:`unbound-legacy`,sessionID:e}:void 0),cR=e=>{if(eR(e)){if(e.state===`bound`&&oR(e.transportIdentity)&&oR(e.directory)&&oR(e.sessionID))return{state:`bound`,transportIdentity:e.transportIdentity,directory:e.directory,sessionID:e.sessionID};if(e.state===`unbound-legacy`&&oR(e.sessionID))return{state:`unbound-legacy`,sessionID:e.sessionID}}},lR=e=>{if(e.length>QL)return;let t=/^data:([^,]*),(.*)$/s.exec(e);if(!t)return;let n=t[1].split(`;`),r=n.at(-1)?.toLowerCase()===`base64`,i=(r?n.slice(0,-1):n).join(`;`)||`application/octet-stream`,a=t[2];try{let e;if(r){if(!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a))return;let t=atob(a);if(t.length>$L)return;e=Uint8Array.from(t,e=>e.charCodeAt(0))}else if(e=new TextEncoder().encode(decodeURIComponent(a)),e.byteLength>$L)return;let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),new Blob([t],{type:i})}catch{return}},uR=e=>eR(e)&&oR(e.providerID)&&oR(e.modelID)&&(e.agent===void 0||oR(e.agent))&&(e.variant===void 0||oR(e.variant))?{providerID:e.providerID,modelID:e.modelID,...e.agent===void 0?{}:{agent:e.agent},...e.variant===void 0?{}:{variant:e.variant}}:void 0,dR=async(e,t)=>{let n=await qL(e);if(!n.ok)return{status:`failed`,error:n.error,issues:[],cleanupErrors:[]};if(n.value.status===`ok`){let e=n.value.snapshot;return e.migration.v3State===`degraded`?{status:`degraded`,snapshot:e,issues:[iR(``,``,`$.migration.v3State`,`existing-degraded`)],cleanupErrors:[]}:{status:`committed`,snapshot:e,issues:[],cleanupErrors:[]}}if(n.value.status===`partial`||n.value.status===`corrupt`)return{status:`recovery-required`,issues:n.value.issues.map(e=>iR(e.scopeKey??``,e.queueItemID??``,e.path,e.reason)),cleanupErrors:[]};let r=await e.read(xL);if(!r.ok)return{status:`failed`,error:r.error,issues:[],cleanupErrors:[]};let i=[],a=[],o=[],s=async()=>{for(let e of o.reverse()){let n=await t.releaseIfMatches(e.reference,e.blobID);n.ok||a.push({...e.issue,reason:`rollback-${n.error.code}`})}};if(r.value===null){let t={...jL(),migration:{v3State:`complete`}},n=await YL(e,t);return n.ok?{status:`committed`,snapshot:t,issues:i,cleanupErrors:a}:{status:`failed`,error:n.error,issues:i,cleanupErrors:a}}let c;try{c=JSON.parse(r.value)}catch{return{status:`failed`,error:{code:`corrupt`},issues:[iR(``,``,`$`,`legacy-json`)],cleanupErrors:a}}let l=eR(c)&&eR(c.state)?c.state.queuedMessages:eR(c)?c.queuedMessages:void 0;if(!eR(l))return{status:`failed`,error:{code:`corrupt`},issues:[iR(``,``,`$.state.queuedMessages`,`legacy-state`)],cleanupErrors:a};let u={...jL(),migration:{v3State:`complete`}},d=new Set,f=new Set,p=new Set,m=0,h=Object.entries(l);for(let e=0;e<h.length;e++){let[n,r]=h[e];if(e>=SL.scopes){i.push(iR(n,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-scope-limit`));break}let c=sR(n),l=c?kL(c):n;if(!c||!Array.isArray(r)){i.push(iR(l,``,`$.state.queuedMessages.${JSON.stringify(n)}`,`legacy-queue`));continue}for(let e=0;e<r.length;e++){if(m>=SL.totalItems){i.push(iR(l,``,`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,`legacy-item-limit`));break}m++;let h=`$.state.queuedMessages.${JSON.stringify(n)}[${e}]`,g=eR(r[e])?r[e]:void 0;if(!g||typeof g.content!=`string`||g.content.length>131072){i.push(iR(l,``,h,`legacy-item`));continue}let _=cR(g.owner);if(g.owner!==void 0&&(!_||!rR(c,_))){i.push(iR(l,oR(g.queueItemID)?g.queueItemID:``,h,`owner-conflict`));continue}let v=JSON.stringify([n,e,g.content]),y=oR(g.queueItemID)?g.queueItemID:oR(g.id)?g.id:await aR(`queue`,v),b=oR(g.operationID)?g.operationID:await aR(`operation`,`${v}:operation`),x=oR(g.messageID)?g.messageID:await aR(`message`,`${v}:message`);if(d.has(y)||f.has(b)||p.has(x)){i.push(iR(l,y,h,`duplicate-id`));continue}d.add(y),f.add(b),p.add(x);let S=[],C=[],w=new Set,T=Array.isArray(g.attachments)?g.attachments:[];g.attachments!==void 0&&!Array.isArray(g.attachments)&&i.push(iR(l,y,`${h}.attachments`,`legacy-attachments`));for(let e=0;e<T.length&&e<SL.attachmentsPerItem;e++){let n=eR(T[e])?T[e]:void 0,r=`${h}.attachments[${e}]`;if(!n){i.push(iR(l,y,r,`legacy-attachment`));continue}let u=oR(n.id)?n.id:await aR(`attachment`,`${v}:attachment:${e}`),d=ue(u),f=tR(n.filename,u),p=tR(n.mimeType,``,!0),m=nR(n.size);if(w.has(d)){i.push(iR(l,y,r,`duplicate-attachment-occurrence`));continue}w.add(d);let g=n.source===`local`?n.serverPath===void 0&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`server`?oR(n.serverPath)&&n.vscodePath===void 0&&n.vscodeSource===void 0:n.source===`vscode`&&oR(n.vscodePath)&&(n.vscodeSource===`file`||n.vscodeSource===`selection`)&&n.serverPath===void 0,_=g?n.source:`local`,b=_===`server`?n.serverPath:void 0,x=_===`vscode`?n.vscodePath:void 0,E=_===`vscode`?n.vscodeSource:void 0,D={attachmentID:u,occurrenceRefID:d,filename:f,mimeType:p,size:m,source:_,...b?{serverPath:b}:{},...x?{vscodePath:x}:{},...E?{vscodeSource:E}:{}},O=e=>{C.push({...D,reason:e}),i.push(iR(l,y,r,e))};if(c.state===`unbound-legacy`){O(`legacy-unbound-data`);continue}if(!g){i.push(iR(l,y,r,n.source===`server`?`server-metadata`:n.source===`vscode`?`vscode-metadata`:`attachment-source`)),O(`legacy-bytes-missing`);continue}let k=typeof n.dataUrl==`string`?n.dataUrl:``;if(ie(k)){S.push({version:1,...D,locator:{kind:`url`,url:k}});continue}if(k.startsWith(`blob:`)){O(`legacy-blob-url`);continue}if(!k.startsWith(`data:`)){O(`legacy-bytes-missing`);continue}let A=lR(k);if(!A){O(`legacy-bytes-missing`);continue}let j=await aR(`legacy-blob`,`${y}:${u}`),ee={transportIdentity:c.transportIdentity,owner:{kind:`queue`,ownerID:y},attachmentOccurrenceRefID:d},te=await t.readReference(ee);if(!te.ok||te.value!==void 0&&te.value!==j||!(await t.putAndRetain(ee,j,A)).ok)return await s(),{status:`failed`,error:{code:`unavailable`},issues:i,cleanupErrors:a};te.value===void 0&&o.push({reference:ee,blobID:j,issue:iR(l,y,r,`blob-retain`)}),S.push({version:1,...D,mimeType:A.type,size:A.size,locator:{kind:`blob`,blobID:j}})}T.length>SL.attachmentsPerItem&&i.push(iR(l,y,`${h}.attachments`,`legacy-attachment-limit`));let E=nR(g.createdAt),D=typeof g.status==`string`?g.status:`queued`,O=eR(g.failure)?g.failure.kind:g.failureKind,k=O===`pre-dispatch`||O===`ambiguous-dispatch`||O===`definitive`?O:void 0,A=D===`retrying`||k===`pre-dispatch`,j=D===`sending`||D===`reconciling`||k===`ambiguous-dispatch`,ee=D===`unresolved`&&C.length===0,te=C.length>0,M=nR(g.reconciliationStartedAt,E),ne=nR(g.reconciliationDeadlineAt,-1),re=M>2**53-1-3e4?M:M+3e4,oe=Math.max(M,ne>=0?ne:re),se=nR(g.reconciliationChecks),ce=nR(g.reconciliationNextCheckAt,M);j&&ne<0&&M>2**53-1-3e4&&i.push(iR(l,y,`${h}.reconciliationDeadlineAt`,`reconciliation-deadline-overflow`));let le=te||ee||c.state===`unbound-legacy`&&j?`unresolved`:A?`retrying`:j?`reconciling`:D===`failed`||k===`definitive`?`failed`:`queued`,N=le===`reconciling`||le===`unresolved`&&!te,de=eR(g.composerDocument)&&typeof g.composerDocument.text==`string`?we(g.composerDocument.text,g.composerDocument.references):void 0,fe=de&&ve(de,`queue-canonical`);g.composerDocument!==void 0&&(!fe||!fe.ok||fe.text!==g.content)&&i.push(iR(l,y,`${h}.composerDocument`,`degraded-composer-document`));let pe=fe&&fe.ok&&fe.text===g.content?de:void 0,P=pe?ae(pe.text,g.composerMentions):void 0,me=P&&!P.some(e=>pe.references.some(t=>e.range.start<t.end&&t.start<e.range.end));g.composerMentions!==void 0&&!me&&i.push(iR(l,y,`${h}.composerMentions`,`degraded-composer-mentions`));let he={version:1,queueItemID:y,operationID:b,messageID:x,owner:c,content:g.content,...pe?{composerDocument:pe}:{},...me&&P.length?{composerMentions:P}:{},attachments:S,attachmentIssues:C,createdAt:E,...uR(g.sendConfig)?{sendConfig:uR(g.sendConfig)}:{},status:le,attemptCount:nR(g.attemptCount),...le===`retrying`?{nextAttemptAt:nR(g.nextAttemptAt,E),failureKind:`pre-dispatch`}:N?{reconciliationStartedAt:M,reconciliationDeadlineAt:oe,reconciliationChecks:se,reconciliationNextCheckAt:ce,failureKind:`ambiguous-dispatch`}:le===`failed`?{failureKind:`definitive`}:{}};(u.queues[l]??=[]).push(he)}}i.length&&(u.migration.v3State=`degraded`);let g=await YL(e,u);return g.ok?{status:u.migration.v3State===`complete`?`committed`:`degraded`,snapshot:u,issues:i,cleanupErrors:a}:(await s(),{status:`failed`,error:g.error,issues:i,cleanupErrors:a})},fR=(e,t)=>JSON.stringify(e)===JSON.stringify(t),pR=(e,t=[])=>({status:e,errors:t,cleanupErrors:[]}),mR=e=>e.status===`sending`||e.status===`reconciling`,hR=(e,t,n={})=>{let r={hydration:`idle`,snapshot:jL(),issues:[],enabled:n.enabled??!0},i,a=Promise.resolve(),o=new Set,s=e=>{r=e,o.forEach(e=>e())},c=e=>{let t={};for(let[n,i]of Object.entries(e.queues))t[n]=fR(r.snapshot.queues[n],i)?r.snapshot.queues[n]:i;let n=fR(r.snapshot.queues,t)&&fR(r.snapshot.migration,e.migration)?r.snapshot:{...e,queues:t};s({...r,snapshot:n})},l=e=>{let t=a.then(e,e);return a=t.then(()=>void 0,()=>void 0),t},u=e=>{let t=r.snapshot.queues[e.scopeKey]?.find(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID);return t&&kL(t.owner)===e.scopeKey?t:void 0},d=()=>r.hydration===`idle`||r.hydration===`hydrating`?pR(`unseeded`):r.hydration===`recovery-required`?pR(`recovery-required`,[...r.issues]):r.hydration===`failed`?pR(`failed`,[...r.issues]):void 0,f=async t=>{let n=r.snapshot,i=await t();return i.status===`committed`&&c(e.getSnapshot()),i.status===`committed`&&i.current===!1?{...i,status:`stale`}:(i.status!==`committed`&&r.snapshot!==n&&s({...r,snapshot:n}),i)},p=()=>t(),m=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,h=new Map,g=e=>`${e.scopeKey}\u0000${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,_=e=>h.has(g(e)),v=()=>pR(`failed`,[{phase:`identity`,code:`reserved`}]),y=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,b=async()=>{for(let[t,n]of h){let[,r,i,a]=t.split(`\0`);try{(await e.releaseSend({queueItemID:r,operationID:i,messageID:a},n.token,n.runtime)).status!==`stale`&&h.delete(t)}catch{h.delete(t)}}};return{subscribe:e=>(o.add(e),()=>o.delete(e)),getState:()=>r,captureRuntime:p,hydrate:t=>i??=l(async()=>{await b(),s({...r,hydration:`hydrating`});let n=await e.hydrate(t),i=n.errors.map(e=>({phase:e.phase,code:e.code,scopeKey:e.scopeKey,path:e.path})),a=n.status===`committed`||n.status===`disabled`?`ready`:n.status===`recovery-required`?`recovery-required`:`failed`;return c(e.getSnapshot()),s({...r,hydration:a,issues:i,enabled:r.enabled}),n}).finally(()=>{i=void 0}),flush:()=>l(()=>e.flush()),setEnabled:t=>l(async()=>{t||await b(),await e.setEnabled(t),s({...r,enabled:t})}),admit:(t,n,r=p())=>l(async()=>d()||(m(t,r)?f(()=>e.admit(t,r,n)):pR(`stale`))),materializeForEdit:(t,n=p())=>l(async()=>{let r=d(),i=u(t);if(r)return r;if(!i||!m(i,n))return pR(`stale`);if(mR(i))return pR(`failed`,[{phase:`identity`,code:`locked`}]);if(_(t))return v();let a=await e.acquireSendPayload(t,n);return a.status!==`committed`||!a.token?a.status===`committed`?pR(`failed`,[{phase:`identity`,code:`missing-send-token`}]):a:(h.set(g(t),{token:a.token,runtime:n}),{...a,item:JSON.parse(JSON.stringify(i)),values:a.values?.map(({attachment:e,value:t})=>({attachment:JSON.parse(JSON.stringify(e)),value:t}))})}),releaseEditReservation:(t,n,r=p())=>l(async()=>{let i=g(t),a=h.get(i);if(!a||a.token!==n||!y(a.runtime,r))return pR(`stale`);try{let a=await e.releaseSend(t,n,r);return a.status!==`stale`&&h.delete(i),a}catch{return h.delete(i),pR(`failed`,[{phase:`runtime`,code:`reservation-release-threw`}])}}),removeEditReservation:(t,n,i=p())=>l(async()=>{let a=g(t),o=h.get(a),l=d(),f=u(t);if(l)return{...l,durableRemoval:!1};if(!o||o.token!==n||!y(o.runtime,i)||!f||!m(f,i))return{...pR(`stale`),durableRemoval:!1};if(mR(f))return{...pR(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let p=r.snapshot,_=await e.remove(t,i),v=_.status===`committed`;return v&&(h.delete(a),c(e.getSnapshot())),v&&_.current===!1?{..._,status:`stale`,durableRemoval:v}:(!v&&r.snapshot!==p&&s({...r,snapshot:p}),{..._,durableRemoval:v})}),remove:(t,n=p())=>l(async()=>{let i=d(),a=u(t);if(i)return{...i,durableRemoval:!1};if(!a||!m(a,n))return{...pR(`stale`),durableRemoval:!1};if(_(t))return{...v(),durableRemoval:!1};if(mR(a))return{...pR(`failed`,[{phase:`identity`,code:`locked`}]),durableRemoval:!1};let o=r.snapshot,l=await e.remove(t,n),f=l.status===`committed`;return f&&c(e.getSnapshot()),f&&l.current===!1?{...l,status:`stale`,durableRemoval:f}:(!f&&r.snapshot!==o&&s({...r,snapshot:o}),{...l,durableRemoval:f})}),reorder:(t,n,i=p())=>l(async()=>{let a=d(),o=r.snapshot.queues[t];return a||(o?o.some(e=>_({scopeKey:t,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}))?v():o.some(e=>mR(e)||!m(e,i))?pR(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.reorder(t,n,i)):pR(`failed`,[{phase:`identity`,code:`locked`}]))}),bind:(t,n,r=p())=>l(async()=>{let i=d(),a=u(t);return i||(!a||n.transportIdentity!==r.transportIdentity||!m(a,r)?pR(`stale`):_(t)?v():mR(a)?pR(`failed`,[{phase:`identity`,code:`locked`}]):f(()=>e.bind(t,n,r)))}),bindMany:(t,n,r=p())=>l(async()=>{let i=d(),a=t.map(u);return i||(t.some(_)?v():!a.length||a.some(e=>!e||mR(e)||!m(e,r))||n.transportIdentity!==r.transportIdentity?pR(`stale`):f(()=>e.bindMany(t,n,r)))}),transition:(t,n,r,i=p())=>l(async()=>{let a=d(),o=u(t);return a||(!o||!m(o,i)?pR(`stale`):_(t)?pR(`failed`,[{phase:`identity`,code:`reserved`}]):(Array.isArray(n)?n:[n]).includes(o.status)?f(()=>e.transition(t,r,i)):pR(`stale`))}),confirm:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?pR(`stale`):_(t)?pR(`failed`,[{phase:`identity`,code:`reserved`}]):f(()=>e.remove(t,n)))}),acquireSendPayload:(t,n=p())=>l(async()=>{let r=d(),i=u(t);return r||(!i||!m(i,n)?pR(`stale`):_(t)?pR(`failed`,[{phase:`identity`,code:`reserved`}]):e.acquireSendPayload(t,n))}),releaseSend:(t,n,r=p())=>l(async()=>e.releaseSend(t,n,r))}},gR=e=>JSON.parse(JSON.stringify(e)),Q=(e,t=[],n=[],r)=>({status:e,...r===void 0?{}:{current:r},errors:t,cleanupErrors:n}),_R=(e,t)=>e.queueItemID===t.queueItemID&&e.operationID===t.operationID&&e.messageID===t.messageID,vR=(e,t,n)=>e.owner.state===`bound`?{transportIdentity:e.owner.transportIdentity,owner:{kind:t,ownerID:t===`queue`?e.queueItemID:e.operationID},attachmentOccurrenceRefID:n}:void 0,yR=e=>JSON.stringify(e),bR=e=>({owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,attachments:e.attachments,attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,sendConfig:e.sendConfig}),xR=e=>`${e.queueItemID}\u0000${e.operationID}\u0000${e.messageID}`,SR=e=>typeof e==`number`&&Number.isSafeInteger(e),CR=(e,t)=>{if(yR(bR(e))!==yR(bR(t))||!SR(t.attemptCount)||t.attemptCount<e.attemptCount)return!1;let n=`${e.status}:${t.status}`;return!(![`queued:sending`,`retrying:sending`,`sending:retrying`,`sending:reconciling`,`sending:failed`,`reconciling:reconciling`,`reconciling:unresolved`].includes(n)||t.status===`sending`&&t.attemptCount!==e.attemptCount+1||t.status!==`sending`&&t.attemptCount!==e.attemptCount||[t.reconciliationStartedAt,t.reconciliationDeadlineAt,t.reconciliationChecks,t.reconciliationNextCheckAt].some(e=>e!==void 0&&!SR(e))||e.status===`reconciling`&&t.status===`reconciling`&&(t.reconciliationStartedAt!==e.reconciliationStartedAt||t.reconciliationDeadlineAt!==e.reconciliationDeadlineAt||(t.reconciliationChecks??0)<(e.reconciliationChecks??0)))},wR=e=>{if(!e.composerDocument)return!0;let t=new Set(e.composerDocument?oe(e.composerDocument).flatMap(e=>e.type===`attachment`?[e.attachmentRefID]:[]):[]),n=new Set(e.attachments.map(e=>e.occurrenceRefID));return[...t].every(e=>n.has(e))},TR=(e,t,n={})=>{let r=jL(),i=!1,a=n.enabled??!0,o=0,s=!1,c=!1,l=Promise.resolve(),u=new Map,d=new Map,f=new Map,p=0n,m=e=>{let t=l.then(e,e);return l=t.then(()=>void 0,()=>void 0),t},h=()=>Object.values(r.queues).flat(),g=e=>h().find(t=>_R(t,e)),_=(e,t,n,r,i)=>({phase:e,code:t,...n?{scopeKey:kL(n.owner),queueItemID:n.queueItemID,operationID:n.operationID}:{},...r?{attachmentID:r.attachmentID,occurrenceRefID:r.occurrenceRefID}:{},...i?{path:i}:{}}),v=(e,t)=>e.attachments.flatMap(n=>n.locator.kind===`blob`?(()=>{let r=vR(e,t,n.occurrenceRefID);return r?[{reference:r,blobID:n.locator.blobID,attachment:n,item:e}]:[]})():[]),y=(e,t)=>({transportIdentity:e.transportIdentity,generation:e.generation,enableGeneration:o,identity:{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID}}),b=(e,t)=>e.owner.state!==`bound`||e.owner.transportIdentity===t.transportIdentity,x=async(e,t)=>{if(!a||t.enableGeneration!==o||e.transportIdentity!==t.transportIdentity||e.generation!==t.generation||!await e.isCurrent())return!1;let n=await e.current?.();return n===void 0||n.transportIdentity===t.transportIdentity&&n.generation===t.generation},S=()=>Q(a?`stale`:`disabled`,[],[],!1),C=()=>Q(`recovery-required`,[_(`metadata`,`recovery-required`)]),w=async(t,n)=>{let r=await e.releaseIfMatches(t.reference,t.blobID);r.ok||(u.set(Se(t.reference),t),n.push(_(`blob`,r.error.code,t.item,t.attachment)))},T=async e=>{let t=[];for(let n of[...e].reverse())await w(n,t);return t},E=()=>{let e=new Map;for(let t of h())for(let n of v(t,`queue`))e.set(Se(n.reference),n.blobID);return e},D=(e,t,n=E())=>n.get(e)===t.blobID||d.get(e)?.blobID===t.blobID,O=async(e,n,i)=>{if(!await x(n,i))return{committed:!1,current:!1};let a=await t.persist(e);return a.ok?(r=e,{committed:!0,current:await x(n,i)}):{committed:!1,current:!0,error:_(`metadata`,a.error.code)}},k=async(t=!1)=>{if(!i)return Q(`unseeded`);if(!a)return Q(`disabled`);if(c||s)return C();let n=E(),r=t?new Map:new Map([...d].map(([e,t])=>[e,t.blobID])),o=new Map;for(let e of h())for(let t of v(e,`queue`))o.set(Se(t.reference),t);let l=new Map(d),u=[];if(!s){let t=await e.reconcileReferences(n,{ownerKinds:[`queue`]});if(!t.ok)u.push(_(`blob`,t.error.code));else for(let e of t.value.missing){let t=o.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}}let f=await e.reconcileReferences(r,{ownerKinds:[`send`]});if(!f.ok)u.push(_(`blob`,f.error.code));else for(let e of f.value.missing){let t=l.get(e);u.push(_(`blob`,`missing-blob`,t?.item,t?.attachment,e))}return Q(u.length?`failed`:`committed`,u)};return{hydrate:e=>m(async()=>{let n=e===void 0?t.readDetailed?await t.readDetailed():t.read?await t.read().then(e=>e.ok?{ok:!0,value:e.value===null?{raw:null,snapshot:null,status:`empty`,issues:[],degradedScopeKeys:[]}:{raw:null,snapshot:e.value,status:`ok`,issues:[],degradedScopeKeys:[]}}:e):void 0:void 0;if(n&&!n.ok)return Q(`failed`,[_(`metadata`,n.error.code)]);let o=n?.value??e,l=o&&`status`in o?o:void 0,u=l?.snapshot??(o&&!(`status`in o)?o:null);if(l?.snapshot===null&&l.raw!==null)try{u=JSON.parse(l.raw)}catch{u=null}let p=u?VL(u,{normalizeSending:!0}):{status:`ok`,snapshot:jL(),issues:[],degradedScopeKeys:[]},m=l?.issues??p.issues;i=!0;let h=l?.status===`corrupt`||p.status===`corrupt`,g=l?.status===`partial`||m.length>0;return d.clear(),f.clear(),h?(c=!0,s=!0,Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e})))):(r=p.snapshot,c=g,s=g,g?Q(`recovery-required`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))):a?k(!0):Q(`disabled`,m.map(e=>({phase:`metadata`,code:e.reason,...e}))))}),getSnapshot:()=>gR(r),admit:(t,n,o)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();if(!b(t,n))return S();let s=kL(t.owner),l=gR(r);l.queues[s]=[...l.queues[s]??[],t];let d=VL(l);if(!wR(t))return Q(`failed`,[_(`identity`,`composer-attachment-mismatch`,t)]);if(d.status===`corrupt`||d.issues.length)return Q(`failed`,d.issues.map(e=>({phase:`identity`,code:e.reason,...e})));let f=y(n,t);if(!await x(n,f))return S();let p=[];for(let r of v(t,`queue`)){if(!await x(n,f))return{...S(),cleanupErrors:await T(p)};let i=await e.readReference(r.reference);if(!i.ok)return Q(`failed`,[_(`blob`,i.error.code,t,r.attachment)],await T(p));if(i.value&&i.value!==r.blobID)return Q(`failed`,[_(`blob`,`blob-id-conflict`,t,r.attachment)],await T(p));if(i.value===r.blobID){let n=await e.read(r.blobID);if(n.ok)continue;if(n.error.code!==`missing-blob`)return Q(`failed`,[_(`blob`,n.error.code,t,r.attachment)],await T(p));let i=await o?.(r.attachment);if(i===void 0)return Q(`failed`,[_(`blob`,`missing-blob`,t,r.attachment)],await T(p));let a=await e.putAndRetain(r.reference,r.blobID,i);if(!a.ok)return Q(`failed`,[_(`blob`,a.error.code,t,r.attachment)],await T(p));continue}let a=await e.read(r.blobID),s=a.ok?await e.retain(r.reference,r.blobID):a.error.code===`missing-blob`?await(async()=>{let t=await o?.(r.attachment);return t===void 0?{ok:!1,error:{code:`missing-blob`}}:e.putAndRetain(r.reference,r.blobID,t)})():a;if(!s.ok)return Q(`failed`,[_(`blob`,s.error.code,t,r.attachment)],await T(p));p.push(r)}let m=await O(d.snapshot,n,f);if(!m.committed)return m.error?Q(`failed`,[m.error],await T(p)):{...S(),cleanupErrors:await T(p)};for(let e of v(t,`queue`))u.delete(Se(e.reference));return Q(`committed`,[],[],m.current)}),transition:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o||!b(o,n))return S();let s=y(n,o);if(!await x(n,s))return S();let l=t(gR(o)),u=gR(r),d=kL(o.owner);u.queues[d]=u.queues[d].map(t=>_R(t,e)?l:t);let f=VL(u);if(!_R(l,e)||!CR(o,l)||f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-transition`,o)]);let p=await O(f.snapshot,n,s);return p.committed?Q(`committed`,[],[],p.current):p.error?Q(`failed`,[p.error]):S()}),reorder:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=r.queues[e];if(!o||o.length!==t.length||new Set(t).size!==o.length||o.some(e=>!t.includes(e.queueItemID)))return Q(`failed`,[_(`identity`,`invalid-reorder`)]);if(o.some(e=>!b(e,n)))return S();let s=y(n,o[0]);if(!await x(n,s))return S();let l=new Map(o.map(e=>[e.queueItemID,e])),u=gR(r);u.queues[e]=t.map(e=>l.get(e));let d=await O(u,n,s);return d.committed?Q(`committed`,[],[],d.current):d.error?Q(`failed`,[d.error]):S()}),bind:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=g(e);if(!o)return Q(`failed`,[_(`identity`,`invalid-bind`)]);if(!b(o,n)||t.transportIdentity!==n.transportIdentity)return S();if(o.owner.state!==`unbound-legacy`||o.attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let s=kL(o.owner),l=r.queues[s];if(!l||l.length!==1||!_R(l[0],e)||l[0].owner.state!==`unbound-legacy`||l[0].attachments.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let u=y(n,o);if(!await x(n,u))return S();let d={...gR(o),owner:t},f=VL({version:4,queues:{[kL(t)]:[d]},migration:r.migration});if(f.status===`corrupt`||f.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let p=gR(r),m=s,h=kL(t);p.queues[m]=p.queues[m].filter(t=>!_R(t,e)),p.queues[m].length||delete p.queues[m],p.queues[h]=[d,...p.queues[h]??[]];let v=VL(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`,o)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),bindMany:(e,t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let o=e.map(g);if(!o.length||o.some(e=>!e||!b(e,n)||e.owner.state!==`unbound-legacy`)||t.transportIdentity!==n.transportIdentity)return S();let s=o[0].owner,l=r.queues[kL(s)];if(!l||l.length!==e.length||o.some(e=>yR(e.owner)!==yR(s)||e.attachments.length)||l.some((t,n)=>!_R(t,e[n])))return Q(`failed`,[_(`identity`,`invalid-bind`)]);let u=y(n,o[0]);if(!await x(n,u))return S();let d=o,f=d.map(e=>({...gR(e),owner:t})),p=gR(r),m=kL(s),h=kL(t);p.queues[m]=p.queues[m].filter(e=>!d.some(t=>_R(e,t))),p.queues[m].length||delete p.queues[m],p.queues[h]=[...f,...p.queues[h]??[]];let v=VL(p);if(v.status===`corrupt`||v.issues.length)return Q(`failed`,[_(`identity`,`invalid-bind`)]);let w=await O(v.snapshot,n,u);return w.committed?Q(`committed`,[],[],w.current):w.error?Q(`failed`,[w.error]):S()}),acquireSendPayload:(t,n)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let r=g(t);if(!r||!b(r,n))return S();if(f.has(xR(t)))return Q(`failed`,[_(`identity`,`active-send`,r)]);let o=y(n,r);if(!await x(n,o))return S();let s=[],l=[];for(let t of r.attachments){if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};if(t.locator.kind===`url`){l.push({attachment:t,value:t.locator.url});continue}let i=v(r,`send`).find(e=>e.attachment.occurrenceRefID===t.occurrenceRefID),a=await e.readReference(i.reference);if(!a.ok||a.value&&a.value!==i.blobID)return Q(`failed`,[_(`blob`,a.ok?`blob-id-conflict`:a.error.code,r,t)],await T(s));if(a.value!==i.blobID){let n=await e.retain(i.reference,i.blobID);if(!n.ok)return Q(`failed`,[_(`blob`,n.error.code,r,t)],await T(s));s.push(i)}let c=await e.read(i.blobID);if(!c.ok)return Q(`failed`,[_(`blob`,c.error.code,r,t)],await T(s));l.push({attachment:t,value:c.value})}if(!await x(n,o))return{...S(),cleanupErrors:await T(s)};let u=v(r,`send`),m=`${++p}`;for(let e of u)d.set(Se(e.reference),e);return f.set(xR(t),{token:m,identity:t,held:u}),{...Q(`committed`,[],[],!0),token:m,values:l}}),releaseSend:(e,t)=>m(async()=>{let n=f.get(xR(e));if(typeof t!=`string`||!n||n.token!==t)return Q(`stale`);f.delete(xR(e));let r=[];for(let e of n.held)d.delete(Se(e.reference)),await w(e,r);return Q(r.length?`failed`:`committed`,[],r,!0)}),remove:(e,t)=>m(async()=>{if(!a)return Q(`disabled`);if(!i)return Q(`unseeded`);if(c)return C();let n=g(e);if(!n||!b(n,t))return S();let o=y(t,n);if(!await x(t,o))return S();let s=gR(r);for(let[t,n]of Object.entries(s.queues)){let r=n.filter(t=>!_R(t,e));r.length?s.queues[t]=r:delete s.queues[t]}let l=await O(s,t,o);if(!l.committed)return l.error?Q(`failed`,[l.error]):S();let u=f.get(xR(e));f.delete(xR(e));let p=[];for(let e of v(n,`queue`))await w(e,p);for(let e of u?.held??v(n,`send`))d.delete(Se(e.reference)),await w(e,p);return Q(`committed`,[],p,l.current)}),reconcile:()=>m(()=>k(!1)),retryCleanup:()=>m(async()=>{if(!a)return Q(`disabled`);if(c||s)return C();let t=[],n=E();for(let[r,i]of u){if(D(r,i,n)){u.delete(r);continue}let a=await e.releaseIfMatches(i.reference,i.blobID);a.ok?u.delete(r):t.push(_(`blob`,a.error.code,i.item,i.attachment))}return Q(t.length?`failed`:`committed`,[],t)}),flush:()=>l.then(()=>t.flush()),setEnabled:async e=>{a=e,o++,t.cancelPending(),await t.setEnabled(e),await l}}},ER=()=>{let e=KL(),t=XL(e),n=Wn();return{controller:hR(TR(n,t),()=>{let e=r(),t=s();return{transportIdentity:e,generation:t,isCurrent:()=>r()===e&&s()===t}}),migrate:async()=>dR(e,n)}},DR=(e=ER)=>{let t,n,r=()=>(t??=e()).controller;return{subscribe:e=>r().subscribe(e),getState:()=>r().getState(),captureRuntime:()=>r().captureRuntime(),hydrate:r=>n??=(async()=>{let n=t??=e();if(r!==void 0)return n.controller.hydrate(r);let i=await n.migrate();return i.status===`committed`?n.controller.hydrate(i.snapshot):i.status===`degraded`?n.controller.hydrate({raw:null,snapshot:i.snapshot,status:`partial`,issues:i.issues??[{path:`$.migration`,reason:`degraded`}],degradedScopeKeys:[]}):n.controller.hydrate({raw:null,snapshot:null,status:`corrupt`,issues:i.issues??[{path:`$`,reason:i.status}],degradedScopeKeys:[]})})().finally(()=>{n=void 0}),flush:()=>r().flush(),setEnabled:e=>r().setEnabled(e),admit:(e,t,n)=>r().admit(e,t,n),materializeForEdit:(e,t)=>r().materializeForEdit(e,t),releaseEditReservation:(e,t,n)=>r().releaseEditReservation(e,t,n),removeEditReservation:(e,t,n)=>r().removeEditReservation(e,t,n),remove:(e,t)=>r().remove(e,t),reorder:(e,t,n)=>r().reorder(e,t,n),bind:(e,t,n)=>r().bind(e,t,n),bindMany:(e,t,n)=>r().bindMany(e,t,n),transition:(e,t,n,i)=>r().transition(e,t,n,i),confirm:(e,t)=>r().confirm(e,t),acquireSendPayload:(e,t)=>r().acquireSendPayload(e,t),releaseSend:(e,t,n)=>r().releaseSend(e,t,n)}},OR,kR=()=>OR??=DR(),AR=26214400,jR=52428800,MR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer()))].map(e=>e.toString(16).padStart(2,`0`)).join(``),NR=async(e,t)=>{let n=0;for(let t of e){let e=t.source===`local`?t.value.size:t.size;if(!Number.isSafeInteger(e)||e<0||e>AR)throw RangeError(`message-queue-attachment-too-large`);n+=e}if(n>jR)throw RangeError(`message-queue-attachments-too-large`);let r=[];for(let n of e){if(n.source===`server`){r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||`application/octet-stream`,size:n.size,source:`server`,locator:{kind:`server-path`,path:n.path}});continue}let e=await HI({signal:t});await UI(e,n.value,await MR(n.value),t),r.push({attachmentID:n.attachmentID,occurrenceRefID:n.occurrenceRefID??[`root`,n.attachmentID],filename:n.filename,mimeType:n.mimeType||n.value.type||`application/octet-stream`,size:n.value.size,source:`local`,locator:{kind:`upload`,uploadID:e.uploadID}})}return{attachments:r,totalBytes:n}},PR,FR=()=>{let e=`openchamber:message-queue-import-client-id`;try{let t=globalThis.localStorage,n=t.getItem(e);if(n)return n;let r=fe();return t.setItem(e,r),r}catch{return PR??=fe()}},IR={queue:void 0,capture:()=>({transportIdentity:``,generation:0}),current:()=>!0,admit:ZI,create:PI,details:FI,stage:II,seal:LI,upload:NR,resolveURL:async(e,t)=>{let n=new URL(e);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Error(`durable-url-scheme`);let r=await fetch(e,{signal:t});if(!r.ok)throw Error(`durable-url-unavailable`);return r.blob()},existing:()=>[],refresh:async()=>{},publish:()=>{}},LR=e=>({scopeKey:kL(e.owner),queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID}),RR=async e=>`shadow-import:${[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`,zR=e=>({status:e.status===`sending`?`reconciling`:e.status,attemptCount:e.attemptCount,...e.nextAttemptAt===void 0?{}:{dueAt:e.nextAttemptAt},...e.reconciliationStartedAt===void 0?{}:{reconciliationStartedAt:e.reconciliationStartedAt},...e.reconciliationDeadlineAt===void 0?{}:{reconciliationDeadlineAt:e.reconciliationDeadlineAt},...e.reconciliationChecks===void 0?{}:{reconciliationChecks:e.reconciliationChecks},...e.reconciliationNextCheckAt===void 0?{}:{reconciliationNextCheckAt:e.reconciliationNextCheckAt},...e.failureKind===void 0?{}:{failureKind:e.failureKind}}),BR=e=>Array.isArray(e)?`[${e.map(BR).join(`,`)}]`:e&&typeof e==`object`?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${BR(e[t])}`).join(`,`)}}`:JSON.stringify(e),VR=async e=>[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(BR(e))))].map(e=>e.toString(16).padStart(2,`0`)).join(``),HR=e=>{let t={...IR,...e},n=e.create!==void 0||e.stage!==void 0||e.seal!==void 0||e.admit===void 0,r=e=>(t.publish(e),e);return{run:async e=>{let i=t.capture(),a=new AbortController,o=e??a.signal,s=await t.queue.hydrate();if(!t.current(i))return r({status:`pending`,imported:0,total:0,issues:[`runtime-stale`],canActivate:!1});let c=t.queue.getState();if(s.status===`recovery-required`||c.hydration===`recovery-required`||c.snapshot.migration.v3State===`degraded`)return r({status:`degraded`,imported:0,total:0,issues:[`recovery-required`],canActivate:!1});if(c.hydration!==`ready`)return r({status:`error`,imported:0,total:0,issues:[`hydrate-failed`],canActivate:!1});let l=Object.entries(c.snapshot.queues).sort(([e],[t])=>e.localeCompare(t)).flatMap(([,e])=>e).filter(e=>e.owner.state===`bound`&&e.owner.transportIdentity===i.transportIdentity),u=t.queue.captureRuntime(),d=Object.values(c.snapshot.queues).flat().some(e=>e.owner.state!==`bound`),f=0,p=`prepare`;try{let e=[],a=new Map;for(let s of l){if(!t.current(i)||o.aborted)return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});let c=t.existing().filter(e=>e.queueItemID===s.queueItemID||e.operationID===s.operationID||e.messageID===s.messageID);if(c.length){if(!c.some(e=>e.queueItemID===s.queueItemID&&e.operationID===s.operationID&&e.messageID===s.messageID))return r({status:`degraded`,imported:f,total:l.length,issues:[`cross-id-conflict`],canActivate:!1});f++;continue}if(s.attachments.some(e=>e.source===`vscode`))return r({status:`degraded`,imported:f,total:l.length,issues:[`vscode-attachment`],canActivate:!1});let d=s.owner;if(d.state!==`bound`)return r({status:`pending`,imported:f,total:l.length,issues:[`unbound-legacy`],canActivate:!1});p=`acquire`;let m=await t.queue.acquireSendPayload(LR(s),u);if(m.status!==`committed`||!m.token)return r({status:`degraded`,imported:f,total:l.length,issues:[`payload-unavailable`],canActivate:!1});try{let i=new Map(m.values?.map(e=>[e.attachment.occurrenceRefID,e.value])),c=[];for(let e of s.attachments){let n=JSON.parse(e.occurrenceRefID);if(e.source===`server`&&e.serverPath){c.push({attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,size:e.size,source:`server`,locator:{kind:`server-path`,path:e.serverPath}});continue}let a=i.get(e.occurrenceRefID),s=typeof a==`string`?await t.resolveURL(a,o):a??(e.locator.kind===`url`?await t.resolveURL(e.locator.url,o):void 0);if(!s||typeof s!=`object`||typeof s.arrayBuffer!=`function`||s.size!==e.size||s.type&&s.type!==e.mimeType)return r({status:`degraded`,imported:f,total:l.length,issues:[`attachment-bytes-unavailable`],canActivate:!1});p=`upload`;let u=await t.upload([{attachmentID:e.attachmentID,occurrenceRefID:n,filename:e.filename,mimeType:e.mimeType,source:`local`,value:s}],o);c.push(u.attachments[0])}let u=`${d.directory}\u0000${d.sessionID}`,h=a.get(u)??a.size;a.set(u,h);let g=e.filter(e=>e.scopeOrdinal===h).length,_={scope:{directory:d.directory,sessionID:d.sessionID},item:{queueItemID:s.queueItemID,operationID:s.operationID,messageID:s.messageID,content:s.content,...s.composerDocument?{composerDocument:s.composerDocument}:{},...s.composerMentions?{composerMentions:s.composerMentions}:{},...s.sendConfig?{sendConfig:s.sendConfig}:{},attachments:c,attachmentIssues:s.attachmentIssues,createdAt:s.createdAt,migrationImport:!0,migrationState:zR(s)}};n||(p=`admit`,await t.admit({requestID:await RR(s.operationID),..._,signal:o})),e.push({item:s,scopeOrdinal:h,itemOrdinal:g,payload:_,payloadHash:await VR(_)}),f++}finally{await t.queue.releaseSend(LR(s),m.token,u)}}if(!n){p=`refresh`,await t.refresh();let e=l.every(e=>t.existing().some(t=>t.queueItemID===e.queueItemID&&t.operationID===e.operationID&&t.messageID===e.messageID));return r({status:d?`pending`:e?`complete`:`error`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:e?[]:[`catalog-incomplete`],canActivate:e&&!d})}let s=await VR(e.map(({item:e,scopeOrdinal:t,itemOrdinal:n})=>({scopeOrdinal:t,itemOrdinal:n,owner:e.owner,queueItemID:e.queueItemID,operationID:e.operationID,messageID:e.messageID,content:e.content,composerDocument:e.composerDocument,composerMentions:e.composerMentions,sendConfig:e.sendConfig,attachments:e.attachments.map(({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})=>({attachmentID:e,occurrenceRefID:t,filename:n,mimeType:r,size:i,source:a,serverPath:o})),attachmentIssues:e.attachmentIssues,createdAt:e.createdAt,status:e.status,attemptCount:e.attemptCount})));p=`create`;let c=t.kind??`activation`,m=FR(),h=t.authorityGeneration?.()??i.generation,g=await t.create({requestID:`shadow-create:${c}:${h}:${m}:${s}`,kind:c,clientID:m,snapshotHash:s,itemCount:e.length,protocol:4,expectedGeneration:h,signal:o});if(g.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:g.manifestHash,activationEpoch:g.commit?.activationEpoch});let _=await t.details(g.importID,o);if(_.state===`committed`)return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:_.manifestHash,activationEpoch:_.commit?.activationEpoch});let v=new Set(_.staged.map(e=>`${e.scopeOrdinal}:${e.itemOrdinal}`));if(p=`stage`,_.state===`staging`){for(let n of e)if(!v.has(`${n.scopeOrdinal}:${n.itemOrdinal}`)){if(!t.current(i))return r({status:`pending`,imported:f,total:l.length,issues:[`runtime-stale`],canActivate:!1});await t.stage(g.importID,{requestID:`shadow-stage:${g.importID}:${n.scopeOrdinal}:${n.itemOrdinal}:${n.payloadHash}`,scopeOrdinal:n.scopeOrdinal,itemOrdinal:n.itemOrdinal,payload:n.payload,payloadHash:n.payloadHash,signal:o})}}p=`seal`;let y=_.state===`sealed`?{manifestHash:_.manifestHash}:await t.seal(g.importID,{requestID:`shadow-seal:${g.importID}:${s}`,signal:o});return r({status:d?`pending`:`complete`,imported:f,total:l.length,issues:d?[`unbound-legacy`]:[],canActivate:!d,importID:g.importID,manifestHash:y.manifestHash})}catch{return r({status:`error`,imported:f,total:l.length,issues:[`shadow-${p}-failed`],canActivate:!1})}}}},UR=e=>typeof e==`object`&&!!e&&e.kind===`pending-admission`,WR=(e,t)=>e.then(e=>{if(t?.aborted)throw new DOMException(`Aborted`,`AbortError`);return e}),GR={snapshot:e=>WR(fL(L),e),status:e=>WR(lL(L),e),scope:SI,waitInvalidation:wI,admit:ZI,edit:QI,remove:eL,reserve:KI,renew:JI,release:qI,removeReserved:YI,reorder:tL,manualSend:$I,upload:NR,client:L,capture:()=>({transportIdentity:r(),generation:s()}),current:e=>e.transportIdentity===r()&&e.generation===s(),legacyManualSend:async()=>{},shadowQueue:kR,admissionUploadTimeoutMs:12e4,admissionRequestTimeoutMs:2e4,admissionReconcileTimeoutMs:2e4},KR=e=>e instanceof X&&(e.code===`revision_conflict`||e.code===`row_version_conflict`),qR=e=>e instanceof X&&e.code===`unavailable`,JR=8,YR=(e,t)=>{if(!t)return[...e];let n=t.items.map(e=>e.queueItemID),r=new Set(n),i=e.filter(e=>r.has(e)),a=new Set(i);return[...i,...n.filter(e=>!a.has(e))]},XR=e=>`${e.transportIdentity}\u0000${ne(e.directory)}\u0000${e.sessionID}`,ZR=(e,t)=>new Promise(n=>{let r=setTimeout(n,e);t.addEventListener(`abort`,()=>{clearTimeout(r),n()},{once:!0})}),QR=(e,t,n)=>{let r=new AbortController,i,a=()=>r.abort();t?.aborted?a():t?.addEventListener(`abort`,a,{once:!0}),r.signal.aborted||(i=setTimeout(a,n));let o=new Promise((e,t)=>{r.signal.aborted?t(new X(0,`unavailable`)):r.signal.addEventListener(`abort`,()=>t(new X(0,`unavailable`)),{once:!0})});return Promise.race([Promise.resolve().then(()=>e(r.signal)),o]).finally(()=>{i!==void 0&&clearTimeout(i),t?.removeEventListener(`abort`,a)})},$R=(e={})=>{let t={...GR,...e},n={...t,snapshot:e.snapshot??(e=>WR(fL(t.client,t.capture().transportIdentity),e)),status:e.status??(e=>WR(lL(t.client,t.capture().transportIdentity),e))},r={transportIdentity:n.capture().transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}},i,a=0,o,s=new Set,c=new Map,l=new Map,u=new Map,d=[],f=e=>c.get(e)?.forEach(e=>e()),p=(e,t)=>{let n=u.get(e)??d,r=t(n);r!==n&&(r.length?u.set(e,r):u.delete(e),f(e))},m=e=>{r={...r,...e},s.forEach(e=>e()),`scopes`in e||c.forEach(e=>e.forEach(e=>e()))},h=e=>{let t=n.capture();return r.transportIdentity===e.transportIdentity&&t.transportIdentity===e.transportIdentity&&t.generation===e.generation&&n.current(e)},g=e=>{let t=[...u.keys()];i?.abort(),i=void 0,o=void 0,l.clear(),u.clear(),m({transportIdentity:e.transportIdentity,scopes:new Map,hydration:`idle`,capability:`idle`,authority:void 0,isFetching:!1,error:void 0,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),t.forEach(f)},_=()=>{let e=n.capture();return r.transportIdentity!==e.transportIdentity&&g(e),e},v=(e,t,n)=>{let r=new Set([...e.keys(),...t.keys()]);for(let i of r){let r=e.get(i),a=t.get(i);if(r?.revision===a?.revision&&r?.directory===a?.directory&&r?.sessionID===a?.sessionID)continue;let o=a?XR({transportIdentity:n,directory:a.directory,sessionID:a.sessionID}):r?XR({transportIdentity:n,directory:r.directory,sessionID:r.sessionID}):``;c.get(o)?.forEach(e=>e())}},y=(e,t)=>{if(!h(t))return;let n=r.scopes,i=new Map(e.map(e=>[e.scopeID,e]));for(let[e,t]of l)i.get(t.scope.scopeID)?.revision!==t.revision&&l.delete(e);m({scopes:i}),v(n,i,t.transportIdentity)},b=async(e,t,r,i)=>{let a=0,o,s,c=[];do{let t=i??await n.scope(e.scopeID,{offset:a,limit:8,expectedRevision:o,signal:r});if(i=void 0,s||=t,t.revision!==e.revision||t.scopeID!==e.scopeID||o!==void 0&&t.revision!==o)throw new X(409,`revision_conflict`);c.push(...t.items),o=t.revision,a=t.nextOffset??-1}while(a>=0);if(!s||c.length!==s.itemCount)throw new X(200,`unavailable`);return{...s,items:c}},x=e=>({scopeID:e.scopeID,revision:e.revision,directory:e.directory,sessionID:e.sessionID,worktreeState:e.worktreeState,itemCount:e.itemCount}),S=e=>Math.max(n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`])?.revision??0,...[...r.scopes.values()].map(e=>e.revision)),C=(e,t)=>{if(!h(t))return;let i=r.scopes.get(e.scopeID);if(i&&i.revision>e.revision)return;pL(n.client,e,t.transportIdentity);let a=XR({transportIdentity:t.transportIdentity,directory:e.directory,sessionID:e.sessionID});return(!i||i.revision!==e.revision||i.directory!==e.directory||i.sessionID!==e.sessionID)&&y([...r.scopes.values()].filter(t=>t.scopeID!==e.scopeID).concat(x(e)),t),p(a,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n}),e},w=(e,t,i)=>{if(!h(i)||e.revision<S(i))return!1;let a=new Map(e.scopes.map(e=>[e.scopeID,e]));if([...r.scopes.values()].some(e=>{let t=a.get(e.scopeID);return t!==void 0&&t.revision<e.revision}))return!1;let o=r.scopes;for(let e of t)pL(n.client,e,i.transportIdentity);if(hL(n.client,e,i.transportIdentity),e.scopes.length===0)_L(n.client,i.transportIdentity);else for(let e of o.keys())a.has(e)||vL(n.client,e,i.transportIdentity);y(e.scopes,i);for(let e of t){let t=XR({transportIdentity:i.transportIdentity,directory:e.directory,sessionID:e.sessionID});p(t,t=>{let n=t.filter(t=>t.phase!==`acknowledged`||e.revision<(t.acknowledgedRevision??2**53-1));return n.length===t.length?t:n})}return!0},T=async()=>{let e=_(),t=i?.signal??new AbortController().signal;m({isFetching:!0,hydration:`hydrating`,error:void 0});try{let i=await n.status(t);if(!h(e)||(mL(n.client,i,e.transportIdentity),m({capability:i.capability?`available`:`unsupported`,authority:i.authority}),!i.capability))return;let a=await n.snapshot(t);if(!h(e))return;let o=r.scopes,s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));w(a,s,e)&&m({hydration:`ready`})}catch(n){if(!h(e)||t.aborted)return;m({capability:n instanceof X&&n.status===501?`unsupported`:`error`,hydration:`error`,error:n})}finally{h(e)&&m({isFetching:!1})}},E=async(e,t)=>{for(;!t.aborted&&i;){if(!h(e))return`stale`;let i=n.client.getQueryData([e.transportIdentity,`messageQueue`,`snapshot`]),a=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;let o=new Map(r.scopes);if(!(i?.revision!==a.revision||a.scopes.some(e=>o.get(e.scopeID)?.revision!==e.revision)||[...o.keys()].some(e=>!a.scopes.some(t=>t.scopeID===e))))return`applied`;let s=await Promise.all(a.scopes.filter(e=>o.get(e.scopeID)?.revision!==e.revision).map(n=>b(n,e,t)));if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;w(a,s,e)&&m({hydration:`ready`,error:void 0});let c=await n.snapshot(t);if(!h(e)||t.aborted)return t.aborted?`aborted`:`stale`;if(c.revision===a.revision)return`applied`}return`aborted`},D=async()=>{await T();let e=0,t=i;if(!t)return;let r=t.signal;for(;!r.aborted&&i===t;){let a=n.capture();try{let t=await E(a,r);if(t===`aborted`||t===`stale`)return;let i=S(a),o=await n.waitInvalidation(i,{signal:r});if(!h(a)||r.aborted||o===`aborted`)return;e=0}catch(n){if(r.aborted||i!==t||!h(a))return;if(n instanceof X&&n.code===`revision_conflict`){e=0;continue}m({error:n,isFetching:!1}),await ZR(Math.min(3e4,500*2**e++),r)}}},O=async(e,t,a)=>{let o=await n.snapshot(i?.signal);if(!h(t))return;let s=o.scopes.find(t=>t.scopeID===e);if(!s)throw a;let c=await b(s,t,i?.signal??new AbortController().signal);return C(c,t)??gL(n.client,e,r.scopes.get(e)?.revision??s.revision,t.transportIdentity)},k=async(e,t,i,a)=>{let o=r.scopes.get(e),s=o&&o.revision>=t?gL(n.client,e,o.revision,i.transportIdentity):void 0;if(s)return s;let c=await n.scope(e,{offset:0,limit:8,signal:a});if(!h(i)||c.scopeID!==e||c.revision<t)return;let l=r.scopes.get(e);if(l&&l.revision>c.revision)return;let u=await b({scopeID:e,revision:c.revision,directory:c.directory,sessionID:c.sessionID,worktreeState:c.worktreeState,itemCount:c.itemCount},i,a,c);return C(u,i)},A=async(e,t,i)=>{let a=_(),o=t;for(let t=0;t<JR;t++){let s=r.scopes.get(e),c=s?gL(n.client,e,s.revision,a.transportIdentity):void 0,l;try{try{l=(await i(o,c)).revision}catch(e){if(!qR(e)||!h(a))throw e;l=(await i(o,c)).revision}}catch(n){if(KR(n)&&t+1<JR){let t=await O(e,a,n);if(!t)return{status:`stale`};o=t.revision;continue}throw await O(e,a,n).catch(()=>void 0),n}if(!h(a))return{status:`stale`};let u=e=>l===void 0?e:{...e,committedRevision:l};for(let t=0;t<2;t++)try{let t=await O(e,a,new X(409,`revision_conflict`));if(!t)return u({status:`stale`});await yL(n.client,e,a.transportIdentity);let i=r.scopes.get(e);return u({status:`committed`,scope:i?gL(n.client,e,i.revision,a.transportIdentity):t})}catch(r){if(KR(r)&&!t)continue;return h(a)?(m({error:r}),yL(n.client,e,a.transportIdentity).catch(()=>{}),u({status:`committed`})):u({status:`stale`})}}throw new X(409,`revision_conflict`)},j,ee=()=>{i?.abort(),i=void 0,o=void 0},te=()=>{j!==void 0&&(clearTimeout(j),j=void 0),!i&&(i=new AbortController,D())},M=()=>{j!==void 0&&clearTimeout(j),j=setTimeout(()=>{j=void 0,a||ee()},0)};return{subscribe:e=>(s.add(e),()=>s.delete(e)),subscribeScope:(e,t)=>{let n=XR(e),r=c.get(n)??new Set;return r.add(t),c.set(n,r),()=>{r.delete(t),r.size||c.delete(n)}},getState:()=>(_(),r),captureRuntime:()=>_(),getScope:e=>{let t=_();if(e.transportIdentity!==t.transportIdentity||r.transportIdentity!==e.transportIdentity)return;let i=[...r.scopes.values()].find(t=>ne(t.directory)===ne(e.directory)&&t.sessionID===e.sessionID);if(!i)return;let a=`${e.transportIdentity}\u0000${i.scopeID}`,o=l.get(a);if(o?.revision===i.revision)return o.scope;let s=gL(n.client,i.scopeID,i.revision,e.transportIdentity);return s&&l.set(a,{revision:i.revision,scope:s}),s},getPendingAdmissions:e=>{let t=_();return e.transportIdentity===t.transportIdentity&&r.transportIdentity===e.transportIdentity?u.get(XR(e))??d:d},start:()=>{a++,_(),te()},stop:()=>{a=Math.max(0,a-1),a||M()},restart:()=>{j!==void 0&&(clearTimeout(j),j=void 0),ee(),g(n.capture()),a&&te()},refresh:T,runShadowImport:()=>{if(o)return o;let e=(async()=>{let e=_();if(r.capability!==`available`||r.authority!==`shadow`){let e={status:`pending`,imported:0,total:0,issues:[`shadow-unavailable`],canActivate:!1};return m({importState:e}),e}return HR({queue:n.shadowQueue(),capture:()=>e,current:h,existing:()=>[...r.scopes.values()].flatMap(t=>gL(n.client,t.scopeID,t.revision,e.transportIdentity)?.items??[]),refresh:T,publish:t=>{h(e)&&m({importState:t})}}).run(i?.signal)})().finally(()=>{o===e&&(o=void 0)});return o=e,e},pause:async e=>{await BI({expectedGeneration:e,signal:i?.signal}),await T()},resume:async e=>{await VI({expectedGeneration:e,signal:i?.signal}),await T()},stageAdmission:({requestID:e,scope:t,item:n})=>{let r=XR({transportIdentity:_().transportIdentity,...t}),i={kind:`pending-admission`,requestID:e,queueItemID:n.queueItemID,operationID:n.operationID,messageID:n.messageID,content:n.content,createdAt:n.createdAt,phase:`uploading`,attachmentCount:n.attachmentCount??0,...n.composerDocument?{composerDocument:n.composerDocument}:{},...n.composerMentions?{composerMentions:n.composerMentions}:{},...n.sendConfig?{sendConfig:n.sendConfig}:{}};p(r,t=>[...t.filter(t=>t.requestID!==e&&t.queueItemID!==n.queueItemID),i])},unstageAdmission:({requestID:e,scope:t})=>{let n=XR({transportIdentity:_().transportIdentity,...t});p(n,t=>t.filter(t=>t.requestID!==e))},admit:async({requestID:e,scope:t,item:r,attachments:a=[]})=>{let o=_(),s=XR({transportIdentity:o.transportIdentity,...t}),c=(u.get(s)??d).find(t=>t.requestID===e||t.queueItemID===r.queueItemID),l=c&&(c.requestID===e||c.queueItemID===r.queueItemID)?{...c,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}}:{kind:`pending-admission`,requestID:e,queueItemID:r.queueItemID,operationID:r.operationID,messageID:r.messageID,content:r.content,createdAt:r.createdAt,phase:`uploading`,attachmentCount:a.length,...r.composerDocument?{composerDocument:r.composerDocument}:{},...r.composerMentions?{composerMentions:r.composerMentions}:{},...r.sendConfig?{sendConfig:r.sendConfig}:{}},f=t=>p(s,n=>n.map(n=>n.requestID===e||n.queueItemID===r.queueItemID?t:n)),m=()=>p(s,t=>t.filter(t=>t.requestID!==e&&t.queueItemID!==r.queueItemID));c?f(l):p(s,e=>[...e,l]);let g;try{g=await QR(e=>n.upload(a,e),i?.signal,n.admissionUploadTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}if(!h(o))return m(),{status:`stale`};let v={requestID:e,scope:t,item:{...r,attachments:g.attachments}};f({...l,phase:`admitting`});let y;try{y=await QR(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(!h(o))return m(),{status:`stale`};if(!(e instanceof X)||e.code!==`unavailable`)throw m(),e;f({...l,phase:`ambiguous`});try{y=await QR(e=>n.admit({...v,signal:e}),i?.signal,n.admissionRequestTimeoutMs)}catch(e){if(m(),!h(o))return{status:`stale`};throw e}}return f({...l,phase:`acknowledged`,acknowledgedRevision:y.revision}),y.scopeID?QR(e=>k(y.scopeID,y.revision,o,e),i?.signal,n.admissionReconcileTimeoutMs).then(m,m):m(),{status:`committed`}},edit:({requestID:e,scopeID:t,revision:r,item:a,patch:o})=>A(t,r,(t,r)=>{let s=r?.items.find(e=>e.queueItemID===a.queueItemID)??a;return n.edit(s.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:s.rowVersion,item:o,signal:i?.signal})}),remove:({requestID:e,scopeID:t,revision:r,item:a})=>A(t,r,async(r,o)=>{let s=o?.items.find(e=>e.queueItemID===a.queueItemID)??a;try{return await n.remove(s.queueItemID,{requestID:e,expectedRevision:r,expectedRowVersion:s.rowVersion,signal:i?.signal})}catch(e){if(!(e instanceof X)||e.code!==`not_found`)throw e;let n=await O(t,_(),e);if(!n||n.items.some(e=>e.queueItemID===a.queueItemID))throw e;return{revision:n.revision,removedQueueItemID:a.queueItemID}}}),reserveEdit:async({requestID:e,scopeID:t,revision:a,item:o,owner:s,ttlMs:c,runtime:l})=>{if(!h(l))return;let u=a;for(let a=0;a<JR;a++){let d=r.scopes.get(t),f=(d?gL(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{let t=await n.reserve(f.queueItemID,{requestID:e,expectedRevision:u,rowVersion:f.rowVersion,owner:s,ttlMs:c,signal:i?.signal});if(!h(l)){await n.release(f.queueItemID,{token:t.token,signal:i?.signal}).catch(()=>{});return}return t}catch(e){if(!KR(e)||a+1>=JR)throw e;let n=await O(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return;u=n.revision}}},renewEdit:async({item:e,token:t,generation:r,ttlMs:a,runtime:o,signal:s})=>{if(!h(o))return;let c=await n.renew(e.queueItemID,{token:t,generation:r,ttlMs:a,signal:s??i?.signal});if(!(!h(o)||c.queueItemID!==e.queueItemID||c.token!==t||c.generation!==r))return c},releaseEdit:async({item:e,token:t,runtime:r})=>{h(r)&&(await n.release(e.queueItemID,{token:t,signal:i?.signal.aborted?void 0:i?.signal}),h(r)&&await T())},removeReserved:async({requestID:e,scopeID:t,revision:a,item:o,token:s,generation:c,runtime:l})=>{if(!h(l))return!1;let u=a;for(let a=0;a<JR;a++){let d=r.scopes.get(t),f=(d?gL(n.client,t,d.revision,l.transportIdentity):void 0)?.items.find(e=>e.queueItemID===o.queueItemID)??o;try{return await n.removeReserved(f.queueItemID,{requestID:e,expectedRevision:u,expectedRowVersion:f.rowVersion,token:s,generation:c,signal:i?.signal}),h(l)?(await O(t,l,new X(404,`not_found`)).catch(()=>void 0),await T(),!0):!1}catch(e){if(!KR(e)||a+1>=JR)throw e;let n=await O(t,l,e);if(!n||!n.items.some(e=>e.queueItemID===o.queueItemID))return!1;u=n.revision}}return!1},reorder:({requestID:e,scopeID:t,revision:r,queueItemIDs:a})=>A(t,r,(r,o)=>n.reorder(t,{requestID:e,expectedRevision:r,queueItemIDs:YR(a,o),signal:i?.signal})),manualSend:async({requestID:e,scopeID:t,revision:a,item:o})=>{if(r.authority===`active`||r.authority===`paused`)return A(t,a,(t,r)=>{let a=r?.items.find(e=>e.queueItemID===o.queueItemID)??o;return n.manualSend(a.queueItemID,{requestID:e,expectedRevision:t,expectedRowVersion:a.rowVersion,signal:i?.signal})});if(r.authority===`shadow`||r.capability===`unsupported`){let e=_();return h(e)?(await n.legacyManualSend(o),h(e)?{status:`committed`}:{status:`stale`}):{status:`stale`}}throw new X(0,`unavailable`)}}},ez,tz=()=>ez??=$R(),nz=new WeakMap,rz=e=>{let t=e,n=nz.get(t);if(n)return n.refs++,()=>{n.refs--,n.refs||(n.unsubscribe(),nz.delete(t))};let r={refs:1,unsubscribe:d(t=>{f(t)&&e.restart()})};return nz.set(t,r),()=>{r.refs--,r.refs||(r.unsubscribe(),nz.delete(t))}},iz=(e,t)=>{let n,r=[],i=[...e.semantics];return{text:e.chunks.map((a,o)=>{if(a.provenance!==`authored`)return a.text;let s=a.text;o===0&&(s=s.replace(/^\n+/,``)),o===e.chunks.length-1&&(s=s.replace(/\n+$/,``));let c=t(s);return n??=c.agent,r.push(...c.attachments??[]),i.push(...c.semantics??[]),c.text}).join(``),agent:n,attachments:az(r),semantics:i}},az=e=>{let t=new Set;return e.filter(e=>{let n=e.serverPath?.replace(/\\/g,`/`).replace(/\/+/g,`/`),r=n?`path:${n}`:`id:${e.id}`;return!t.has(r)&&(t.add(r),!0)})},oz=`The user referenced these OpenCode sessions (id, title, owning directory). Entries may carry messages inlined from the client cache; an empty messages array only means the transcript was not loaded client-side — it never means the session is empty. To read any referenced session yourself, query the OpenCode SQLite store read-only (replace SESSION_ID): sqlite3 "file:$HOME/.local/share/opencode/opencode.db?mode=ro" ".timeout 5000" "SELECT json_extract(m.data,'$.role') AS role, json_extract(p.data,'$.text') AS text FROM part p JOIN message m ON m.id = p.message_id WHERE p.session_id = 'SESSION_ID' AND json_extract(p.data,'$.type') = 'text' AND json_extract(p.data,'$.synthetic') IS NULL ORDER BY p.time_created". If that file does not exist, resolve the OpenChamber-hosted store first (ls -d "$HOME/Library/Application Support/OpenChamber"*/openchamber-data/xdg-data/opencode/opencode.db) and use its path in the same file: URI. The database is live — always open it read-only as shown.
|
|
468
|
+
`,sz=e=>{if(!e.startsWith(oz))return[];try{let t=JSON.parse(e.slice(oz.length));return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;if(typeof t.id!=`string`||typeof t.title!=`string`)return[];let n=typeof t.directory==`string`?t.directory:void 0,r=Array.isArray(t.messages)?t.messages.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.role==`string`&&typeof t.text==`string`?[{role:t.role,text:t.text}]:[]}):[];return[{id:t.id,title:t.title,...n===void 0?{}:{directory:n},messages:r}]}):[]}catch{return[]}},cz=e=>e.length===0?null:e.map(e=>`[skill:${e}]`).join(` `),lz=(e,t=36e3)=>{if(e.length===0)return null;let n=oz,r=t-n.length;if(r<2)return n.slice(0,t);let i=e.length+1,a=Math.max(2,Math.floor((r-i)/e.length));return`${n}[${e.map(e=>{let t={id:e.id,title:e.title,messages:[],...e.directory===void 0?{}:{directory:e.directory}};if(JSON.stringify(t).length>a){let e=0,n=t.title.length,r=``;for(;e<=n;){let i=Math.floor((e+n)/2),o=`${t.title.slice(0,i)}...`;JSON.stringify({...t,title:o}).length<=a?(r=o,e=i+1):n=i-1}t.title=r}for(let n of e.messages){let e=[...t.messages,n];if(JSON.stringify({...t,messages:e}).length<=a){t.messages=e;continue}let r=0,i=n.text.length,o=``;for(;r<=i;){let e=Math.floor((r+i)/2),s=`${n.text.slice(0,e)}\n[Message truncated]`,c={...t,messages:[...t.messages,{...n,text:s}]};JSON.stringify(c).length<=a?(o=s,r=e+1):i=e-1}o&&t.messages.push({...n,text:o});break}return JSON.stringify(t)}).join(`,`)}]`},uz=e=>{let t=[],n=[],r=[],i={session:new Set,skill:new Set,attachment:new Set};for(let a of e)switch(a.type){case`session`:i.session.has(a.sessionId)||(i.session.add(a.sessionId),t.push(a.sessionId));break;case`skill`:i.skill.has(a.skillName)||(i.skill.add(a.skillName),n.push(a.skillName));break;case`attachment`:i.attachment.has(a.attachmentRefID)||(i.attachment.add(a.attachmentRefID),r.push(a.attachmentRefID))}return{sessionIds:t,skillNames:n,attachmentRefIDs:r}},dz=(e,t)=>{let{sessionIds:n,skillNames:r}=uz(e),i=n.flatMap(e=>{let n=Fd(e,t);if(!n)return[];let r=Md(n).find(t=>t.id===e);if(!r)return[];let i=Id(e,n).flatMap(e=>{let t=Ld(e.id,n).filter(e=>e.type===`text`&&!Zp(e)).map(e=>`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(`
|
|
469
|
+
`);return t?[{role:e.role,text:t}]:[]});return[{id:r.id,title:r.title||r.id,directory:n,messages:i}]}),a=[],o=cz(r);o&&a.push({text:o,synthetic:!0});let s=lz(i);return s&&a.push({text:s,synthetic:!0}),a},fz=50,pz=15e4,mz=e=>{let t=0;for(let n of Object.values(e.partsByMessageID))for(let e of n){let n=e;n.type===`text`&&!Zp(n)&&typeof n.text==`string`&&(t+=n.text.length)}return t},hz=async(e,t,n)=>{let{sessionIds:r}=uz(e);if(r.length===0)return;let i=H();if(!i)return;let a=n?.maxPages??fz,o=n?.maxChars??pz;await Promise.all(r.map(async e=>{let n=Fd(e,t);if(!n)return;let r=U(n,e),s=i.getTranscript(r);s.messageOrder.length===0&&(await Cu(n,e),s=i.getTranscript(r));let c=0;for(;!i.getPagination(r).isComplete&&c<a&&mz(s)<o;)await Su(n,e),s=i.getTranscript(r),c+=1}))},gz=e=>!e||/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(e),_z=(e,t)=>{if(typeof e!=`string`||e.length===0)return{sanitizedText:e,mention:null};let n=t.filter(e=>e.mode&&e.mode!==`primary`);if(n.length===0||!e.includes(`@`))return{sanitizedText:e,mention:null};let r=null;for(let t of n){let n=t.name.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),i=RegExp(`@${n}\\b`,`gi`),a;for(;(a=i.exec(e))!==null;){let n=a.index,i=n+a[0].length;if(!gz(n>0?e[n-1]:null))continue;let o={name:t.name,source:{value:a[0],start:n,end:i}};r||=o}}return r?{sanitizedText:e,mention:r}:{sanitizedText:e,mention:null}},vz=new Set([`/`,`-`,`_`,`.`,` `,`:`,`\\`]);function yz(e){return e==null?[]:typeof e==`string`?e?[e]:[]:e.filter(e=>typeof e==`string`&&e.length>0)}function bz(e,t){if(!t)return 0;if(!e)return null;let n=e.toLowerCase(),r=t.toLowerCase(),i=n.indexOf(r);if(i<0)return null;let a=(n.length-r.length)/1e4;if(n===r)return-2;if(i===0)return-1+a;let o=n[i-1]??``;return(vz.has(o)?0:.5)+i/1e3+a}function xz(e,t,n,r){if(!t)return e.map(e=>({item:e,score:0}));let i=r?.limit??e.length,a=r?.threshold??.3,o=r?.noFuzzy??!1,s=t.toLowerCase(),c=[],l=[],u=new Set;for(let t of e){let e=yz(n(t));if(e.length===0)continue;let r=null,i=e[0].toLowerCase();for(let t of e){let e=t.toLowerCase(),n=bz(e,s);n!==null&&(r===null||n<r)&&(r=n,i=e)}if(r!==null){c.push({item:t,score:r,sortKey:i}),u.add(t);continue}if(!o)for(let n of e)l.push({item:t,text:n,sortKey:e[0].toLowerCase()})}if(l.length>0){let e=new ht(l.map(e=>e.text),{threshold:a,ignoreLocation:!0,distance:100,includeScore:!0,minMatchCharLength:2}),n=new Map;for(let r of e.search(t)){let e=l[r.refIndex];if(!e||u.has(e.item))continue;let t=1+(r.score??1),i=n.get(e.item);(!i||t<i.score)&&n.set(e.item,{score:t,sortKey:e.sortKey})}for(let[e,t]of n)c.push({item:e,score:t.score,sortKey:t.sortKey})}return c.sort((e,t)=>e.score===t.score?e.sortKey.length===t.sortKey.length?e.sortKey.localeCompare(t.sortKey,void 0,{sensitivity:`accent`}):e.sortKey.length-t.sortKey.length:e.score-t.score),c.slice(0,i).map(({item:e,score:t})=>({item:e,score:t}))}var Sz=({files:e,directories:t,query:n,excludePaths:r,limit:i=20})=>{let a=new Map;for(let e of t)!e.path||r?.has(e.path)||a.set(e.path,{...e,isDirectory:!0});for(let t of e)!t.path||r?.has(t.path)||a.has(t.path)||a.set(t.path,{...t,isDirectory:t.isDirectory===!0});let o=n.trim().toLowerCase(),s=Array.from(a.values());if(!o)return s.slice(0,i);let c=s.map(e=>{let t=(e.relativePath||e.name||``).toLowerCase(),n=(e.name||``).toLowerCase(),r=bz(t,o),i=bz(n,o),a;return a=r===null&&i===null?10+t.length/1e4:Math.min(r??1/0,i??1/0),{item:e,score:a,sortKey:t}});return c.sort((e,t)=>e.score===t.score?e.sortKey.length===t.sortKey.length?e.sortKey.localeCompare(t.sortKey,void 0,{sensitivity:`accent`}):e.sortKey.length-t.sortKey.length:e.score-t.score),c.slice(0,i).map(({item:e})=>e)},Cz=/(^|[\s([{])(@session:([A-Za-z0-9_-]+))(?=$|[\s)\]},.!?;:])/g,wz=e=>{let t=[];Cz.lastIndex=0;let n;for(;(n=Cz.exec(e))!==null;){let e=n.index+n[1].length;t.push({start:e,end:e+n[2].length,id:n[3]})}return t},Tz=e=>{let t=[],n=new Set;for(let{id:r}of wz(e))n.has(r)||(n.add(r),t.push(r));return t},Ez=(e,t)=>{let n=e;for(let r of wz(e).reverse()){let e=t.get(r.id)??r.id;n=`${n.slice(0,r.start)}@${e}${n.slice(r.end)}`}return n},Dz=({sessions:e,currentSessionId:t,searchQuery:n})=>{let r=n.trim().toLowerCase();return e.filter(e=>e.id!==t).filter(e=>!r||`${e.title??``} ${e.id}`.toLowerCase().includes(r)).sort((e,t)=>(t.time.updated??t.time.created)-(e.time.updated??e.time.created)).slice(0,r?10:3)},Oz=({value:e,cursorPosition:t,inputSource:n=`manual`,insertedText:r})=>{if(n===`paste`&&r?.includes(`@`))return null;let i=e.substring(0,t),a=i.lastIndexOf(`@`);if(a===-1)return null;let o=a>0?i[a-1]:null,s=i.substring(a+1);return!(!o||/\s/.test(o))||s.includes(` `)||s.includes(`
|
|
470
|
+
`)?null:s},kz=/(^|\s)\/\u2003?([a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?)/g,Az=e=>Je(e.trim()),jz=e=>{let t=e.trim();if(t.toLowerCase().startsWith(`file://`))return t;let n=Az(t).split(`/`).map(e=>/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`);return/^[A-Za-z]:/.test(n)?`file:///${n}`:`file://${n}`},Mz=e=>({chunks:[{provenance:`authored`,text:e,start:0,end:e.length}],semantics:[]}),Nz=({text:e,root:t,confirmedFilePaths:n,confirmedDirectoryPaths:r=[],agentNames:i})=>{let a=[],o=new Set,s=t?Az(t).replace(/\/+$/,``):``,c=e=>Az(e).replace(/^\.\//,``),l=new Set(n.map(e=>c(e))),u=new Set(r.map(e=>c(e))),d=/@([^\s]+)/g,f;for(;(f=d.exec(e))!==null;){let t=f.index>0?e[f.index-1]:null;if(t&&!/(\s|\(|\)|\[|\]|\{|\}|"|'|`|,|\.|;|:)/.test(t))continue;let n=f[1].trim().replace(/^[`"'<(]+/,``).replace(/[),.;:!?`"'>]+$/g,``);if(!n||i.has(n.toLowerCase()))continue;let r=c(n),d=Ye(n)||Ye(r)?r:r.replace(/^\/+/,``);if(!(l.has(r)||l.has(d)||n.includes(`/`)||n.includes(`\\`)||n.includes(`.`)))continue;let p=Ye(n)||Ye(r)?r:s?Xe(s,d):null;if(!d||!p||o.has(p))continue;o.add(p);let m=Ze(p)||d,h=u.has(r)||u.has(d)||/[/\\]$/.test(n)?ze:`text/plain`;a.push({id:fe(),file:new File([],m,{type:h}),filename:m,mimeType:h,size:0,dataUrl:jz(p),source:`server`,serverPath:p})}return a},Pz=(e,t)=>{let n=[],r=new Set;kz.lastIndex=0;let i;for(;(i=kz.exec(e))!==null;){let e=i[2]||``;t.has(e)&&!r.has(e)&&(r.add(e),n.push({type:`skill`,skillName:e}))}return n},Fz=(e,t)=>{if(!e.includes(`@`)||t.length===0)return[];let n=[];for(let{id:r,title:i}of t)(e.includes(`@${i}`)||e.includes(`@${_e}${i}`))&&n.push(r);return n},Iz=({plan:e,agents:t,installedSkillNames:n,directory:r,root:i,confirmedFilePaths:a=[],confirmedDirectoryPaths:o=[],citationAttachments:s=[]})=>{let c=new Set(t.map(e=>e.name.toLowerCase())),l=new Map(Md(r).map(e=>[e.id,e.title||e.id])),u=[];for(let e of Pd().values()){let t=typeof e.title==`string`?e.title.trim():``;t&&u.push({id:e.id,title:t})}return iz(e,e=>{let r=_z(e,t),d=[...new Set([...Tz(e),...Fz(e,u)])],f=[...Pz(e,n),...d.map(e=>({type:`session`,sessionId:e}))],p=Nz({text:r.sanitizedText,root:i,confirmedFilePaths:a,confirmedDirectoryPaths:o,agentNames:c});return{text:Ez(Re(Ue(r.sanitizedText,s)),l),agent:r.mention?.name,attachments:p,semantics:f}})},Lz=e=>e.map(e=>({text:e.text,...e.attachments?.length?{attachments:az(e.attachments)}:{},synthetic:!0})),Rz=({text:e,attachments:t,semanticParts:n,syntheticParts:r=[]})=>[{type:`text`,text:e},...az(t).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id})),...n.map(e=>({type:`text`,text:e.text,synthetic:!0})),...(r??[]).flatMap(e=>[{type:`text`,text:e.text,synthetic:!0},...az(e.attachments??[]).map(e=>({type:`file`,mime:e.mimeType,attachmentID:e.id}))])],zz=(e,t)=>{let n=t.map(e=>({...e,attachments:az(e.attachments??[])})),r=e.length-n.reduce((e,t)=>e+1+t.attachments.length,0);if(r<0)throw Error(`assistant-queue-synthetic-parts-mismatch`);return n.map(e=>{let t=[r++];for(let n of e.attachments)t.push(r++);return{partID:e.partID,text:e.text,...e.synthetic===!0?{synthetic:!0}:{},attachmentIDs:e.attachments.map(e=>e.id),deliveryPartIndexes:t}})},Bz=e=>e?.trim()||void 0,Vz=(e,t)=>e!==`assistant`||t===`server`,Hz=(e,t,n)=>{let r=(e.current.get(t)??Promise.resolve()).catch(()=>void 0).then(n),i=r.then(()=>void 0,()=>void 0);return e.current.set(t,i),r.finally(()=>{e.current.get(t)===i&&e.current.delete(t)})},Uz=({currentConfig:e,sessionID:t,selection:n})=>{let r=Bz(e.currentAgentName),i=t?Bz(n.getSessionAgentSelection(t))??r:r,a=t&&i?n.getAgentModelForSession(t,i):null,o=t?n.getSessionModelSelection(t):null,s=Bz(a?.providerId)??Bz(o?.providerId)??Bz(e.currentProviderId),c=Bz(a?.modelId)??Bz(o?.modelId)??Bz(e.currentModelId);if(!s||!c)return;let l=t&&i?Bz(n.getAgentModelVariantForSession(t,i,s,c))??Bz(e.currentVariant):Bz(e.currentVariant);return{providerID:s,modelID:c,...i?{agent:i}:{},...l?{variant:l}:{}}},Wz=e=>!!(Bz(e?.providerID)&&Bz(e?.modelID)),Gz=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,Kz=(e,t)=>Gz(e,t),qz=e=>JSON.stringify([e.text,e.references]),Jz=e=>JSON.stringify(e),Yz=(e,t)=>e.id===t.id&&e.file===t.file&&e.dataUrl===t.dataUrl&&e.mimeType===t.mimeType&&e.filename===t.filename&&e.size===t.size&&e.source===t.source&&e.serverPath===t.serverPath&&e.vscodePath===t.vscodePath&&e.vscodeSource===t.vscodeSource,Xz=({draftKey:e,runtime:t,document:n,attachments:r,inlineDrafts:i})=>({draftKey:{transportIdentity:e.transportIdentity,owner:{...e.owner}},draftKeyID:R(e),runtime:{...t},documentFingerprint:qz(n),attachments:new Map(r.map(e=>[e.id,e])),inlineDrafts:new Map(i.map(e=>[e.id,Jz(e)]))}),Zz=async({capture:e,admit:t,captureRuntime:n,getCurrentDraftKey:r,getDocument:i,consumeBody:a,getAttachments:o,removeAttachment:s,getInlineDrafts:c,removeInlineDraft:l})=>{let u=await t(),d=r();if(u.status!==`committed`||!Kz(e.runtime,n())||!d||R(d)!==e.draftKeyID)return{status:`stale`,bodyConsumed:!1,attachmentIDsConsumed:[],inlineDraftIDsConsumed:[]};let f=qz(i())===e.documentFingerprint;f&&a();let p=[],m=[],h=new Map(o().map(e=>[e.id,e]));for(let[t,n]of e.attachments){let e=h.get(t);if(!e||!Yz(n,e))continue;let r=!1;try{r=await s(t)}catch{r=!1}r?p.push(t):m.push(t)}let g=[],_=new Map(c().map(e=>[e.id,e]));for(let[t,n]of e.inlineDrafts){let e=_.get(t);!e||Jz(e)!==n||(l(t),g.push(t))}return m.length>0?{status:`partial`,bodyConsumed:f,attachmentIDsConsumed:p,attachmentIDsFailed:m,inlineDraftIDsConsumed:g}:{status:`committed`,bodyConsumed:f,attachmentIDsConsumed:p,inlineDraftIDsConsumed:g}},Qz=(e,t)=>e.map(e=>{let n=e.mimeType||e.file.type||`application/octet-stream`;if(e.source===`server`){if(!e.serverPath)throw Error(`message-queue-server-attachment-unavailable`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`server`,path:e.serverPath,size:e.size}}if(e.source===`vscode`)throw Error(`message-queue-vscode-attachment-unsupported`);return{attachmentID:e.id,occurrenceRefID:t?[`part`,t,e.id]:[`root`,e.id],filename:e.filename||e.file.name,mimeType:n,source:`local`,value:e.file.slice(0,e.file.size,n)}}),$z=(e=fe,t=()=>ge(`msg`),n=Date.now())=>({requestID:e(),queueItemID:`queued-${e()}`,operationID:`operation-${e()}`,messageID:t(),createdAt:n}),eB=({stage:e,clearComposer:t,postClear:n})=>{let r=e();return t(),n?.(),r},tB=`blocked`,nB=new Set,rB=()=>tB,iB=e=>{if(tB!==e){tB=e;for(let e of nB)e()}},aB=e=>(nB.add(e),()=>nB.delete(e)),oB=()=>tB===`legacy-enabled`,sB=2e3,cB=6e4,lB=5e3,uB=3,dB=e=>Math.min(sB*2**Math.max(e-1,0),cB),fB=new Map,pB=new Map,mB=new Set,hB=new Set,gB=0,_B=()=>{gB+=1;for(let e of hB)e()},vB=(e,t)=>JSON.stringify([D(e),t.queueItemID,t.operationID]),yB=e=>`scope:${D(e)}`,bB=()=>new Set([...fB.keys(),...pB.keys()]),xB=e=>(hB.add(e),()=>hB.delete(e)),SB=e=>{let t=(0,V.c)(2),n;return t[0]===e?n=t[1]:(n=()=>e?pB.has(yB(e)):!1,t[0]=e,t[1]=n),W.useSyncExternalStore(xB,n,UB)},CB=()=>structuredClone(re.getState().queuedMessages),wB=async()=>{for(iB(`blocked`);fB.size||pB.size||mB.size;)await Promise.allSettled([...new Set([...fB.values(),...pB.values(),...mB])]);return y(),CB()},TB=e=>e===`idle`,EB=e=>{if(e===void 0)return`unknown`;let t=e[e.length-1];return!t||t.role===`assistant`?`settled`:`unsettled`},DB=(e,t,n,r,i=!1,a=`settled`)=>e?e.status===`sending`?i?{}:{recover:!0}:e.status===`queued`?TB(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`retrying`?e.nextAttemptAt&&e.nextAttemptAt>r?{nextWakeAt:e.nextAttemptAt}:TB(t)&&a!==`unsettled`?{dispatch:!0}:{}:e.status===`reconciling`?(e.reconciliationChecks??0)>=uB||(e.reconciliationDeadlineAt??1/0)<=r?{resolve:!0}:(e.reconciliationNextCheckAt??0)>r?{nextWakeAt:e.reconciliationNextCheckAt}:i?{}:{query:!0}:{}:{},OB=(e,t)=>{let n=new Set;for(let[r,i]of Object.entries(e))i?.status===`running`&&i.runtimeKey===t&&n.add(r);return n},kB=(e,t)=>{let n;for(let r of Id(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},AB=(e,t)=>{let n;for(let r of e.values())r.expiresAt>t&&(!n||r.expiresAt<n)&&(n=r.expiresAt);return n},jB=({queuedMessages:e,activeTransportIdentity:t,getStatus:n,getTurnState:r=()=>`settled`,previous:i,inFlight:a,dispatchInFlight:o=bB(),blockedSessions:s,blockedScopeKeys:c=new Set,now:l})=>{let u={dispatchScopes:[],queryOperations:[],resolveOperations:[],recoverOperations:[],inspectedScopeCount:0},d=new Set;for(let[f,p]of Object.entries(e)){let e=p[0],m=e?.owner;if(!e||m?.state!==`bound`||m.transportIdentity!==t)continue;u.inspectedScopeCount+=1;let h=`${f}:${e.queueItemID}`,g=vB(m,e),_=yB(m);d.add(h);let v=n(m),y=DB(e,v,i.get(f),l,o.has(g),r(m));i.set(f,v),y.nextWakeAt&&(!u.nextWakeAt||y.nextWakeAt<u.nextWakeAt)&&(u.nextWakeAt=y.nextWakeAt),y.dispatch&&!s.has(m.sessionID)&&!c.has(D(m))&&!o.has(g)&&!o.has(_)&&u.dispatchScopes.push(m),y.query&&!a.has(h)&&u.queryOperations.push({scope:m,item:e,key:h}),y.resolve&&u.resolveOperations.push({scope:m,item:e,key:h}),y.recover&&!a.has(h)&&u.recoverOperations.push({scope:m,item:e,key:h})}for(let e of a)d.has(e)||a.delete(e);for(let t of i.keys())e[t]||i.delete(t);return u},MB=e=>{let t=e[0];if(!t)return null;let n=t.composerDocument&&ve(t.composerDocument,`direct-send-display`),r=t.owner?.state===`bound`?t.owner.directory:``,i=Iz({plan:n?.ok?{chunks:n.chunks??[],semantics:n.semantics??[]}:Mz(t.content),agents:G.getState().getVisibleAgents(),installedSkillNames:new Set(Ya(L,r).map(e=>e.name)),directory:r,root:r,confirmedFilePaths:t.composerMentions?.filter(e=>e.kind===`file`||e.kind===`directory`).map(e=>e.path||e.value),confirmedDirectoryPaths:t.composerMentions?.filter(e=>e.kind===`directory`).map(e=>e.path||e.value),citationAttachments:t.attachments}),a=dz(i.semantics,r);return{queuedMessageId:t.id,messageID:t.messageID,operationID:t.operationID,primaryText:i.text,primaryAttachments:az([...t.attachments??[],...i.attachments]),agentMentionName:i.agent,additionalParts:a,sendConfig:t.sendConfig}},NB=(e,t,n,r)=>$.getState().sendMessage(t.primaryText,n.providerID,n.modelID,n.agent,t.primaryAttachments,t.agentMentionName,t.additionalParts,n.variant,`normal`,{sessionId:e,directoryHint:r.directory,delivery:r.delivery,messageID:t.messageID,ticket:r.ticket,preserveOptimisticOnAmbiguous:!0,onSendConfirmed:r.onSendConfirmed}),PB=(e,t)=>t?{...t}:Uz({currentConfig:G.getState(),sessionID:e,selection:Jo.getState()})??{providerID:``,modelID:``},FB=e=>{let t=$.getState().getDirectoryForSession(e);return t?{state:`bound`,transportIdentity:r(),directory:t,sessionID:e}:null},IB=(e,t)=>!!(e===`queued`||e===`retrying`||t&&(e===`failed`||e===`unresolved`)),LB=e=>e.status===`sending`||e.status===`reconciling`,RB=(e,t,n,r)=>{if(!r||r.sessionID!==t)return null;let i=e.getQueueForScope(r),a=n?i.find(e=>e.queueItemID===n||e.id===n):i[0];return!a||a.owner?.state!==`bound`||D(a.owner)!==D(r)?null:{scope:r,item:a}};function zB(e,t={}){if(!oB())return Promise.resolve();let n=re.getState(),i=t.scope??FB(e),a=t.manual===!0||t.delivery===`steer`;if(!i||i.transportIdentity!==r())return Promise.resolve();let o=RB(n,e,t.queueItemID,i??void 0);if((a||!t.scope)&&!pB.has(yB(i))){let r=n.getQueueForScope({state:`unbound-legacy`,sessionID:e}),a=n.getQueueForScope(i),s=t.queueItemID?r.find(e=>e.queueItemID===t.queueItemID||e.id===t.queueItemID):r[0];(o||s)&&!r.some(LB)&&!a.some(LB)&&(n.bindLegacyQueue({state:`unbound-legacy`,sessionID:e},i),o=RB(n,e,t.queueItemID,i))}if(!o||o.scope.transportIdentity!==r())return Promise.resolve();let c=o.scope;if(c.deliveryTarget?.kind===`assistant`)return Promise.resolve();let l=o.item,u={queueItemID:l.queueItemID,operationID:l.operationID,messageID:l.messageID},d=vB(c,u),f=fB.get(d);if(f)return f;if(pB.has(yB(c))||!IB(l.status,a)||l.status===`retrying`&&!a&&(l.nextAttemptAt??0)>Date.now())return Promise.resolve();let p,m=new Promise(e=>{p=e});return fB.set(d,m),pB.set(yB(c),m),_B(),(async()=>{try{let i=kB(e,c.directory),o=aV(e),d=o?.queueItemID===l.queueItemID?o.messageID:be(`msg`,i),f=n.beginQueueItemDispatch(c,u,d,a);if(!f)return;l=f;let p={queueItemID:f.queueItemID,operationID:f.operationID,messageID:f.messageID};if(!y()){n.markQueueItemPreDispatchRetry(c,p,Date.now()+dB(f.attemptCount+1));return}let m=s(),h=MB([f]);if(!h)return;let g=PB(e,f.sendConfig);if(!g.providerID||!g.modelID){n.markQueueItemPreDispatchRetry(c,p,Date.now()+dB(f.attemptCount+1));return}if(!oB()){n.markQueueItemPreDispatchRetry(c,p,Date.now()+dB(f.attemptCount+1));return}let _=()=>{let e=re.getState().getQueueForScope(c)[0];return r()===c.transportIdentity&&s()===m&&e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&D(e.owner)===D(c)},v=()=>{let e=re.getState().getQueueForScope(c)[0];return e?.queueItemID===p.queueItemID&&e.operationID===p.operationID&&e.messageID===p.messageID&&D(e.owner)===D(c)},b=t=>{_()&&t===p.messageID&&(re.getState().confirmQueueItem(c,p),yV(e))};try{await NB(e,h,g,{directory:c.directory,delivery:t.delivery,ticket:o?.queueItemID===f.queueItemID?o.ticket:void 0,onSendConfirmed:b}),b(p.messageID)}catch(e){if(!v())return;let t=Vx(e);t===`pre-dispatch`?n.markQueueItemPreDispatchRetry(c,p,Date.now()+dB(f.attemptCount+1)):t===`definitive-rejection`?n.markQueueItemDefinitiveFailure(c,p):n.markQueueItemReconciling(c,p)}}finally{let e=!1;fB.get(d)===m&&(fB.delete(d),e=!0),pB.get(yB(c))===m&&(pB.delete(yB(c)),e=!0),e&&_B(),p?.()}})(),m}async function BB(e,t=s()){if(!oB())return;let n=Math.min(e.item.reconciliationDeadlineAt??1/0,Date.now()+lB),i=new AbortController,a=setTimeout(()=>i.abort(),Math.max(0,n-Date.now())),o=null;try{o=await KS(e.scope.sessionID,e.item.messageID,e.scope.directory,{signal:i.signal,timeoutMs:Math.max(0,n-Date.now())})}catch{o=null}finally{clearTimeout(a)}let c=re.getState().getQueueForScope(e.scope)[0];c?.queueItemID===e.item.queueItemID&&c.operationID===e.item.operationID&&c.messageID===e.item.messageID&&D(c.owner)===D(e.scope)&&r()===e.scope.transportIdentity&&s()===t&&(o?.some(t=>t.info.id===e.item.messageID)?(zH(e.scope.sessionID,e.item.messageID),re.getState().confirmQueueItem(e.scope,{queueItemID:c.queueItemID,operationID:c.operationID,messageID:c.messageID})):re.getState().recordQueueItemReconciliationCheck(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID}))}var VB=(e,t)=>{Tx({sessionID:e.sessionID,messageID:t.messageID,directory:e.directory}),re.getState().resolveQueueItemReconciliation(e,{queueItemID:t.queueItemID,operationID:t.operationID,messageID:t.messageID})};function HB(e){let t=typeof e==`boolean`?e:e?.enabled??!0,n=W.useSyncExternalStore(aB,rB,rB),a=re(e=>e.queuedMessages),o=Gp(e=>e.runsByOriginalSessionID),c=$(e=>e.queueAbortBlocks),l=W.useSyncExternalStore(d,r,r),u=W.useSyncExternalStore(d,i,i),f=W.useSyncExternalStore(xB,()=>gB,()=>gB),p=W.useMemo(()=>Object.values(a).flatMap(e=>{let t=e[0]?.owner;return t?.state===`bound`&&t.transportIdentity===l?[t]:[]}),[l,a]),m=DP(p),h=OP(),g=nF(),_=W.useMemo(()=>p.map(e=>`${e.directory}\n${e.sessionID}`).join(`\0`),[p]),v=W.useRef(p);v.current=p;let y=W.useSyncExternalStore(W.useMemo(()=>e=>_?id(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e,e=>g.getChild(e),{subscribeRebuild:e=>g.subscribeRegistry(e)}):()=>void 0,[g,_]),W.useMemo(()=>()=>_?ad(v.current.map(e=>({directory:e.directory,sessionID:e.sessionID})),e=>g.getChild(e)):``,[g,_]),()=>``),b=W.useCallback(e=>h(e),[h]),x=W.useCallback(e=>EB(_d(e.directory,e.sessionID,g.getChild(e.directory))),[g]),[S,C]=W.useState(0),w=W.useRef(new Map),T=W.useRef(new Set);W.useEffect(()=>{if(!t||n!==`legacy-enabled`)return;let e=Date.now();$.getState().pruneQueueAbortBlocks(e);let r=new Set,i=new Set;for(let[t,n]of c)n.expiresAt>e&&i.add(t);for(let e of OB(o,u))r.add(e);let d=jB({queuedMessages:a,activeTransportIdentity:l,getStatus:b,getTurnState:x,previous:w.current,inFlight:T.current,blockedSessions:r,blockedScopeKeys:i,now:e});for(let e of d.recoverOperations)re.getState().markQueueItemReconciling(e.scope,{queueItemID:e.item.queueItemID,operationID:e.item.operationID,messageID:e.item.messageID});for(let e of d.dispatchScopes)re.getState().getQueueForScope(e)[0]&&zB(e.sessionID,{scope:e}).finally(()=>{C(e=>e+1)});for(let e of d.resolveOperations)VB(e.scope,e.item);for(let e of d.queryOperations){T.current.add(e.key);let t=BB(e,s()).finally(()=>{T.current.delete(e.key),mB.delete(t),C(e=>e+1)});mB.add(t)}let f=AB(c,e),p=d.nextWakeAt?f?Math.min(d.nextWakeAt,f):d.nextWakeAt:f,m;return p&&(m=setTimeout(()=>{$.getState().pruneQueueAbortBlocks(),C(e=>e+1)},Math.max(0,p-Date.now()))),()=>{m&&clearTimeout(m)}},[u,l,g,f,t,n,a,c,o,m,y,b,x,S])}function UB(){return!1}var WB={server:tz(),queue:kR(),status:e=>lL(L).then(t=>{if(e?.aborted)throw new DOMException(`Aborted`,`AbortError`);return t}),activate:RI,lateCommit:zI,capture:()=>({transportIdentity:r(),generation:s()}),current:e=>e.transportIdentity===r()&&e.generation===s(),quiesce:async()=>{await wB()},flush:async()=>{y()},prepare:T,resolveDirectory:e=>$.getState().getDirectoryForSession(e)},GB=()=>({ownership:`probing`,migration:`idle`,frozen:!0,admission:`frozen`,importState:{status:`idle`,imported:0,total:0,issues:[],canActivate:!1}}),KB=(e={})=>{let t={...WB,...e},n=GB(),r=0,i,a,o,s=500,c,l=!1,u=new Set,p=e=>{n={...n,...e};let r=n.ownership===`legacy-unsupported`;iB(r?`legacy-enabled`:`blocked`),O(r?`open`:n.migration===`freezing`||n.ownership===`probing`||n.ownership===`blocked`?`quiescing`:`recovery-read-only`),(n.ownership===`server-active`||n.ownership===`server-paused`)&&te(t.capture().transportIdentity),u.forEach(e=>e())},m=()=>{clearTimeout(o),o=setTimeout(()=>{y()},s),s=Math.min(3e4,s*2)},h=e=>{p({ownership:`blocked`,migration:`idle`,frozen:!0,admission:`frozen`,error:e}),m()},g=(e,n,r,i,a)=>{t.current(e)&&(n.authority===`active`||n.authority===`paused`||r===`late`?p({ownership:n.authority===`paused`?`server-paused`:`server-active`,migration:`late-importing`,frozen:!1,admission:`server`,status:n,importState:i,error:a}):p({ownership:`probing`,migration:i.status===`error`||i.status===`degraded`?`error`:`staging`,frozen:!0,admission:`frozen`,status:n,importState:i,error:a}),m())},_=async e=>{await t.quiesce();let n=t.prepare(e.transportIdentity,t.resolveDirectory);return n.ok?(await t.flush(),t.current(e)):(h(Error(`unresolved-legacy-queue-directories:${n.unresolvedSessionIDs.join(`,`)}`)),!1)},v=async()=>{let e=t.capture();i?.abort(),i=new AbortController;try{if(await t.server.refresh(),!t.current(e)||i.signal.aborted)return n;let r=await t.status(i.signal);return!t.current(e)||i.signal.aborted?n:r.capability?r.protocol!==void 0&&r.protocol!==4?(h(Error(`protocol-unsupported`)),n):(p({ownership:`probing`,migration:`freezing`,frozen:!0,admission:`frozen`,status:r,error:void 0}),await _(e)?r.authority===`active`||r.authority===`paused`?(p({ownership:r.authority===`active`?`server-active`:`server-paused`,migration:`late-importing`,frozen:!1,admission:`server`,status:r,error:void 0}),await b(e,r,`late`),n):(p({migration:`staging`}),await b(e,r,`activation`),n):n):(h(Error(`capability-unavailable`)),n)}catch(r){return!t.current(e)||i?.signal.aborted?n:r instanceof X&&r.status===501?(p({ownership:`legacy-unsupported`,migration:`idle`,frozen:!1,admission:`legacy`,error:void 0}),n):(h(r),n)}},y=()=>c?(l=!0,c):(c=v().finally(()=>{c=void 0,l&&(l=!1,y())}),c),b=async(e,n,r)=>{let a=await HR({queue:t.queue,capture:()=>e,current:t.current,kind:r,authorityGeneration:()=>n.generation??0,publish:e=>p({importState:e})}).run(i?.signal);if(t.current(e)){if(p({importState:a}),!a.canActivate||!a.importID||!a.manifestHash){g(e,n,r,a);return}p({migration:r===`activation`?`activating`:`late-importing`});try{let o=r===`activation`?await t.activate(a.importID,{requestID:`shadow-activate:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal}):await t.lateCommit(a.importID,{requestID:`shadow-late:${a.manifestHash}`,expectedGeneration:n.generation??0,manifestHash:a.manifestHash,protocol:4,signal:i?.signal});if(!t.current(e))return;s=500,p({ownership:r===`activation`?`server-active`:n.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,importState:{...a,activationEpoch:o.activationEpoch}})}catch(i){if(!t.current(e))return;let o=await dL(L).catch(()=>void 0);if(o?.manifestHash===a.manifestHash&&o.activationEpoch!==void 0&&(o.authority===`active`||o.authority===`paused`)){s=500,p({ownership:o.authority===`paused`?`server-paused`:`server-active`,migration:`complete`,frozen:!1,admission:`server`,status:o,importState:{...a,activationEpoch:o.activationEpoch}});return}if(o?.authority===`active`||o?.authority===`paused`){g(e,o,`late`,a,i);return}g(e,n,r,a,i)}}},x,S=()=>{i?.abort(),i=void 0,clearTimeout(o),o=void 0,a?.(),a=void 0};return{subscribe:e=>(u.add(e),()=>u.delete(e)),getSnapshot:()=>n,start:()=>{r++,x!==void 0&&(clearTimeout(x),x=void 0),!(r>1)&&(a=d(e=>{f(e)&&(i?.abort(),p(GB()),setTimeout(()=>{y()},0))}),y())},stop:()=>{r=Math.max(0,r-1),!r&&(x!==void 0&&clearTimeout(x),x=setTimeout(()=>{x=void 0,r||S()},0))},refresh:y}},qB,JB=()=>qB??=KB(),YB=t({confirmQueueAbortOptimistic:()=>yV,getQueueAbortOptimisticPresentation:()=>aV,getQueueAbortOptimisticRevision:()=>iV,inspectQueueAbortOptimisticTranscript:()=>hV,isQueueItemHiddenByAbortOptimistic:()=>oV,planQueueAbortOptimisticReconcile:()=>gV,promoteQueueHeadOnAbort:()=>TV,reconcileQueueAbortOptimistic:()=>wV,rollbackQueueAbortOptimistic:()=>vV,subscribeQueueAbortOptimistic:()=>rV,useQueueAbortOptimisticReconcile:()=>EV}),XB=new Set([`queued`,`retrying`]),ZB=new Set([`sending`,`reconciling`]),QB=new Set([`failed`,`unresolved`]),$B=new Map,eV=new Set,tV=0,nV=()=>{tV+=1;for(let e of eV)e()},rV=e=>(eV.add(e),()=>{eV.delete(e)}),iV=()=>tV,aV=e=>$B.get(e),oV=(e,t)=>$B.get(e)?.queueItemID===t,sV=(e,t)=>{let n;for(let r of Id(e,t)){let e=typeof r?.id==`string`?r.id:``;/^msg_[0-9a-f]{12}[0-9A-Za-z]{14}$/.test(e)&&(!n||e>n)&&(n=e)}return n},cV=e=>{let t=e?.[0];if(!(!t||!XB.has(t.status))&&t.deliveryTarget?.kind!==`assistant`)return t},lV=(e,t)=>{let n=re.getState(),i={state:`bound`,transportIdentity:r(),directory:t,sessionID:e};return cV(n.getQueueForScope(i))??cV(n.getQueueForScope(j(e)))},uV=(e,t)=>{let n=JB().getSnapshot().ownership;return n!==`server-active`&&n!==`server-paused`?void 0:cV(tz().getScope({transportIdentity:r(),directory:t,sessionID:e})?.items)},dV=e=>{let t=e.sendConfig?.providerID,n=e.sendConfig?.modelID;return!t||!n?null:{providerID:t,modelID:n,agent:e.sendConfig?.agent}},fV=e=>!!e&&typeof e==`object`&&e.__openchamberOptimistic===!0,pV=(e,t,n)=>{try{let r=H();return r?r.getTranscript(U(t,e)).partsByMessageID[n]??[]:[]}catch{return[]}},mV=(e,t,n)=>{let r=typeof e.id==`string`?e.id:``;if(!r||e.role!==`user`)return!1;let i=pV(t,n,r);return i.length!==0&&i.some(e=>!fV(e))},hV=(e,t)=>{let n=!1,r=!1;for(let i of t){let t=typeof i.id==`string`?i.id:``,a=i.optimistic!==!0;t===e&&a&&(n=!0),i.role===`user`&&t&&t>e&&a&&(r=!0)}return{hasPinnedMessage:n,hasLaterUserMessage:r}},gV=(e,t,n)=>{let r=e?.messageID;return e&&(XB.has(e.status)||ZB.has(e.status))?r&&n&&r!==n?`rebind`:t.hasPinnedMessage?`confirm`:`keep`:e&&QB.has(e.status)?`rollback`:t.hasPinnedMessage?`confirm`:t.hasLaterUserMessage?`rollback`:`keep`},_V=e=>{let t=$B.get(e);if(t)return $B.delete(e),nV(),t},vV=e=>{let t=_V(e);t&&VS(t.ticket)},yV=e=>{let t=_V(e);t&&$.getState().clearMessageSending?.(e,t.messageID)},bV=e=>{if(e.source===`server`){let t=tz().getScope({transportIdentity:r(),directory:e.directory,sessionID:e.sessionID})?.items.find(t=>t.queueItemID===e.queueItemID);return t?{queueItemID:t.queueItemID,status:t.status,messageID:t.messageID}:null}let t={state:`bound`,transportIdentity:r(),directory:e.directory,sessionID:e.sessionID},n=k(re.getState(),t).find(t=>t.queueItemID===e.queueItemID)??k(re.getState(),j(e.sessionID)).find(t=>t.queueItemID===e.queueItemID);return n?{queueItemID:n.queueItemID,status:n.status,messageID:n.messageID}:null},xV=e=>{let t=Id(e.sessionID,e.directory).map(t=>({id:typeof t?.id==`string`?t.id:void 0,role:t?.role,optimistic:!mV(t,e.sessionID,e.directory)}));return hV(e.messageID,t)},SV=(e,t)=>{let n=$B.get(e);if(!(!n||!t||n.messageID===t)){VS(n.ticket);try{let r=zS({sessionId:n.sessionID,content:n.content,providerID:n.providerID,modelID:n.modelID,agent:n.agent,directory:n.directory,messageID:t});$B.set(e,{...n,messageID:r.messageID,ticket:r}),nV()}catch{$B.delete(e),nV()}}},CV=(e,t,n)=>{if(t===`confirm`)yV(e.sessionID);else if(t===`rollback`)vV(e.sessionID);else if(t===`rebind`&&n?.messageID){SV(e.sessionID,n.messageID);let t=$B.get(e.sessionID);if(!t)return;let r=gV(bV(t),xV(t),t.messageID);if(r===`rebind`)return;CV(t,r,bV(t))}},wV=e=>{let t=e?[$B.get(e)].filter(e=>!!e):[...$B.values()];for(let e of t){let t=bV(e);CV(e,gV(t,xV(e),e.messageID),t)}},TV=e=>{if(!e||$B.has(e))return $B.get(e)??null;let t=$.getState().getDirectoryForSession(e);if(!t)return null;let n=uV(e,t),r=n?void 0:lV(e,t),i=n??r;if(!i)return null;let a=dV(i);if(!a)return null;let o=typeof i.content==`string`?i.content:``,s=(typeof i.messageID==`string`&&i.messageID.startsWith(`msg_`)?i.messageID:void 0)??be(`msg`,sV(e,t));try{let r=zS({sessionId:e,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,directory:t,messageID:s}),c={sessionID:e,directory:t,queueItemID:i.queueItemID,operationID:`operationID`in i?i.operationID:void 0,messageID:r.messageID,content:o,providerID:a.providerID,modelID:a.modelID,agent:a.agent,ticket:r,source:n?`server`:`legacy`};return $B.set(e,c),nV(),c}catch{return null}};function EV(){let e=(0,V.c)(6),t=W.useSyncExternalStore(rV,iV,iV),n=re(PV),r;e[0]!==t||e[1]!==n?(r=[t,n],e[0]=t,e[1]=n,e[2]=r):r=e[2],W.useEffect(NV,r);let i;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[3]=i):i=e[3],W.useEffect(AV,i);let a;e[4]===t?a=e[5]:(a=[t],e[4]=t,e[5]=a),W.useEffect(DV,a)}function DV(){return id([...$B.values()].map(kV),OV)}function OV(){wV()}function kV(e){return{directory:e.directory,sessionID:e.sessionID}}function AV(){let e=tz().subscribe(MV),t=d(jV);return()=>{e(),t()}}function jV(){for(let e of[...$B.keys()])vV(e)}function MV(){wV()}function NV(){wV()}function PV(e){return e.queuedMessages}var FV=280,IV=[`You distill a text selection from a coding-agent conversation into a project note.`,`Return ONLY the note text — no preamble, no surrounding quotes, no headers.`,`Write 1-3 tight sentences that capture the essence worth remembering later: facts, decisions, constraints, root causes, gotchas, next steps.`,`Preserve exact identifiers verbatim — file paths, function names, commands, flags, versions — in backticks.`,`Drop filler, hedging, greetings, and step-by-step narration.`,`Write the note in the same language as the selection. Ignore any other language preferences or personalization — only the selection text decides the language.`].join(`
|
|
471
|
+
`);async function LV(e,t){let n=e.trim();if(n.length<FV)return n;try{let e=t?Px(t):null,{currentProviderId:r,currentModelId:i}=G.getState(),a=e?.providerID||r||``,o=e?.modelID||i||``,s=await F(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:n,system:IV,restrictToPreferredProvider:!0,...a?{preferredProviderID:a}:{},...o?{preferredModelID:o}:{}})});if(!s.ok)return n;let c=await s.json().catch(()=>null);return(typeof c?.text==`string`?c.text.trim():``)||n}catch{return n}}var RV=[`You distill a large task description (a prompt, plan, or assignment) into the COMPLETION CRITERIA a progress auditor will judge against.`,`Return ONLY the criteria text — no preamble, no headers, no markdown fences.`,`Capture: the end goals, what must exist and work when the task is fully done, and how each major part is verified. Omit implementation steps and how-to details.`,`Preserve verbatim any file paths, commands, and identifiers that define the task — especially ones from the opening lines.`,`Stay under 4000 characters.`,`Write in the same language as the task text. Ignore any other language preferences or personalization — only the task text decides the language.`].join(`
|
|
472
|
+
`);async function zV(e){try{let{currentProviderId:t,currentModelId:n}=G.getState(),r=await F(`/api/small-model/generate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e,system:RV,restrictToPreferredProvider:!0,...t?{preferredProviderID:t}:{},...n?{preferredModelID:n}:{}})});if(!r.ok)return null;let i=await r.json().catch(()=>null);return(typeof i?.text==`string`?i.text.trim():``)||null}catch{return null}}var BV=[`active`,`paused`,`blocked`,`budgetLimited`,`complete`],VV=5e3,HV=e=>!!e&&typeof e==`object`&&!Array.isArray(e),UV=e=>typeof e==`string`&&BV.includes(e);function WV(e){let t=e?.metadata;if(!HV(t))return null;let n=t.openchamber;if(!HV(n))return null;let r=n.goal;if(!HV(r))return null;let i=typeof r.id==`string`?r.id:``,a=typeof r.objective==`string`?r.objective.trim():``,o=r.objectiveFile===!0;if(!i||!a&&!o||!UV(r.status))return null;let s=typeof r.tokenBudget==`number`&&Number.isFinite(r.tokenBudget)&&r.tokenBudget>0?Math.floor(r.tokenBudget):null,c=e=>typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0;return{id:i,objective:a.slice(0,VV),objectiveFile:o,status:r.status,tokenBudget:s,tokensUsed:c(r.tokensUsed),turnsUsed:c(r.turnsUsed),blockedStreak:c(r.blockedStreak),note:typeof r.note==`string`?r.note:``,statusReason:typeof r.statusReason==`string`?r.statusReason:``,lastAccountedMessageID:typeof r.lastAccountedMessageID==`string`?r.lastAccountedMessageID:``,createdAt:typeof r.createdAt==`number`?r.createdAt:0,updatedAt:typeof r.updatedAt==`number`?r.updatedAt:0}}function GV(e){if(!Number.isFinite(e)||e<=0)return`0`;if(e>=1e9){let t=e/1e9;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}B`}if(e>=1e6){let t=e/1e6;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}M`}if(e>=1e3){let t=e/1e3;return`${t>=10?Math.round(t):t.toFixed(1).replace(/\.0$/,``)}K`}return String(Math.floor(e))}function KV(e){if(!Number.isFinite(e)||e<0)return`0s`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60){let e=t%60;return e>0?`${n}m${e}s`:`${n}m`}let r=Math.floor(n/60),i=n%60;return i>0?`${r}h${i}m`:`${r}h`}var qV=e=>!!e&&typeof e==`object`&&!Array.isArray(e),JV=()=>`${Date.now().toString(36)}${Math.random().toString(36).slice(2,8)}`,YV=(e,t,n)=>mS(e,t,e=>{let t=qV(e.openchamber)?e.openchamber:{},r=n(qV(t.goal)?t.goal:null),i={...t};return r?i.goal=r:delete i.goal,{...e,openchamber:i}}),XV=async(e,t)=>{try{return(await F(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({content:t})})).ok}catch{return!1}},ZV=e=>{F(`/api/goals/objective/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(()=>void 0)};async function QV(e){try{let t=await F(`/api/goals/objective/${encodeURIComponent(e)}`);if(!t.ok)return null;let n=await t.json().catch(()=>null);return typeof n?.content==`string`?n.content:null}catch{return null}}var $V=`
|
|
473
473
|
|
|
474
474
|
[… objective trimmed for the auditor — the full text was delivered in the chat message …]
|
|
475
475
|
|
|
476
|
-
`,qV=async e=>{if(e.length<=5e3)return e;let t=await MV(e);if(t)return t.slice(0,PV);let n=Math.max(0,Math.floor((PV-93)/2)),r=dt.getState().dictionary;return pT.error(ft(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${KV}${e.slice(-n)}`};async function JV(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await qV(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await UV(e,a),c=Date.now();await HV(e,t,e=>r&&e&&e.id===r.id&&r.status!==`complete`?{...e,objective:s?``:a,objectiveFile:s,tokenBudget:o,status:`active`,statusReason:`resumed`,blockedStreak:0,updatedAt:c}:{id:VV(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function YV(e,t){await HV(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function XV(e,t,n){n===`paused`&&(vV(e),qS(e)),await HV(e,t,e=>e?{...e,status:n,statusReason:n===`active`?`resumed`:n===`complete`?`marked by user`:``,blockedStreak:0,...n===`active`?{turnsUsed:0}:{},updatedAt:Date.now()}:null)}async function ZV(e,t){let n=!1;await HV(e,t,e=>(n=e?.status===`active`,null)),WV(e),n&&(vV(e),qS(e))}var QV=`<system-reminder>`,$V=`</system-reminder>`,eH=e=>{let t=e.trim();return t?t.startsWith(QV)&&t.endsWith($V)?t:`${QV}\n${t}\n${$V}`:``},tH=(e,t=i())=>`${t}\n${e}`,nH=(e,t)=>{let n=rH.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(tH(e))??n.sessionMemoryState.get(e)},rH=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??tH(t),s=a.get(o)??(i?void 0:a.get(t))??{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0};return a.set(o,{...s,viewportAnchor:n,...r?{scrollPosition:r}:{},lastAccessedAt:Date.now()}),{sessionMemoryState:a}})})),iH=Oe((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),aH=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function oH(e,t){if(e){if(!e.degraded&&e.cwd)return aH(e.cwd);if(e.worktreeRoot)return aH(e.worktreeRoot);if(e.cwd)return aH(e.cwd)}return t?aH(t):null}function sH(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function cH(e,t){let n=[];if(t&&t.isClean===!1){let e=t.files?.length;n.push(e==null?{reason:`dirty`}:{reason:`dirty`,dirtyFiles:e})}return e?(e.worktreeStatus===`missing`&&n.push({reason:`missing`}),e.worktreeStatus===`invalid`&&n.push({reason:`invalid`}),e.attentionReason&&n.push({reason:`attention`,attentionReason:e.attentionReason}),n):n}function lH(e){let t=[];e.projectRoot&&t.push({value:e.projectRoot,label:e.rootBranch||e.projectRoot.split(`/`).pop()||e.projectRoot,kind:`root`});let n=e.pendingBootstrapDirectory?aH(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=aH(r.path);if(i===e.projectRoot)continue;let a=i===n;t.push({value:i,label:r.branch?.trim()||r.label||i.split(`/`).pop()||i,kind:`worktree`,pending:a||void 0})}return t}var uH=`openchamber.session-switch.start`,dH=`openchamber.session-switch.highlight-painted`,fH=`openchamber.session-switch.content-committed`,pH=`data-openchamber-session-switch-highlight-ms`,mH=`data-openchamber-session-switch-content-ms`,hH=`openchamber.session-switch.highlight-latency`,gH=`openchamber.session-switch.content-latency`,_H=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,vH=()=>_H()&&performance.getEntriesByName(uH,`mark`).length>0,yH=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},bH=(e=!1)=>{_H()&&(!e&&performance.getEntriesByName(uH,`mark`).length>0&&performance.getEntriesByName(fH,`mark`).length===0||(performance.clearMarks(uH),performance.clearMarks(dH),performance.clearMarks(fH),performance.clearMeasures(hH),performance.clearMeasures(gH),typeof document<`u`&&(document.documentElement.removeAttribute(pH),document.documentElement.removeAttribute(mH)),performance.mark(uH)))},xH=()=>{if(!vH())return;performance.mark(dH),performance.measure(hH,uH,dH);let e=performance.getEntriesByName(hH,`measure`).at(-1);e&&yH(pH,e.duration)},SH=()=>{if(!vH())return;performance.mark(fH),performance.measure(gH,uH,fH);let e=performance.getEntriesByName(gH,`measure`).at(-1);e&&yH(mH,e.duration)},CH={revision:0,sessionId:null},wH=new Set,TH=e=>{CH={revision:CH.revision+1,sessionId:e};for(let e of wH)e(CH);return CH},EH=()=>CH,DH=e=>(wH.add(e),()=>wH.delete(e));function OH(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:ge(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:ge(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:ge(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function kH(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function AH(e,t){if(!e)return;let n=kH(t,e);$.setState(t=>{let r=[...(t.retainedPendingUserMessages.get(e)??[]).filter(e=>e.info.id!==n.info.id),n],i=new Map(t.retainedPendingUserMessages);return i.set(e,r),{retainedPendingUserMessages:i}})}async function jH(e){let t=e.directory??void 0,n=NH(e.sessionId,e.onSendConfirmed),i=e.content;if(e.inputMode===`shell`){let r=e.messageID??ge(`msg`);return z.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let a=de(e.content);if(a){let o=a.commandName.toLowerCase(),s=a.argumentsText,c=t??Pe.getState().currentDirectory??null,l=r(),u=Ei(c,l),d=Ka(c,l),f=L.getQueryState(u.queryKey),p=L.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(Oi(c,l)):L.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(Ja(L,c,l)):L.fetchQuery({...d,staleTime:1/0})]);if(r()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)i=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return IS({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>z.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:s,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return IS({sessionId:e.sessionId,content:i,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>z.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:i,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function MH(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function NH(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{MH(e,r)}}}}var PH=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},FH=u(),IH=`oc.chatInput.lastDraftTarget`,LH=()=>{try{let e=FH.getItem(IH);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:_(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},RH=e=>{try{FH.setItem(IH,JSON.stringify(e))}catch{}},zH=Zo,BH=e=>{if(e)return iH.getState().getAttachment(e)},VH=(e,t,n)=>{if(!e)return null;let r=oH(BH(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return _(i);if(n?.includeRuntimeMemory!==!1){let t=qH.get(JH());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Md().find(t=>t.id===e);return a?PH(a):null},HH=e=>{let t=Md().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},UH=async(e,t)=>{await G.getState().activateDirectory(_(e),t)},WH={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},GH=new Map,KH=0,qH=new Map,JH=e=>(e??i()).trim()||`default`,YH=e=>({...e}),XH=(e,t)=>{let n=qH.get(e);qH.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?YH(n.draft):{...WH},...t})},ZH=(e,t)=>{let n=Si.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Zo(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},QH=async(e,t)=>{if(!e)return;let n=ZH(e,t);n&&await tk(n)&&await uO(e)},$H=(e,t)=>{let n=Si.getState(),r=Zo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},eU=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,tU=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,nU=(e,t)=>tU(e,t)&&eU(Dr.getState().captureDraftRuntime(),t.runtime);async function rU(e){let t=!1;if($.setState(n=>{let r=n.newSessionDraft;if(!r?.open||!r.draftID||r.draftSubmitting||r.draftEstablishing)return{};t=!0;let i=e?OH({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return XH(JH(),{draft:a}),{newSessionDraft:a}}),!t)return!1;await new Promise(e=>setTimeout(e,0));let n=$.getState().newSessionDraft;return n.open===!0&&n.draftEstablishing===!0}function iU(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return XH(JH(),{draft:n}),{newSessionDraft:n}})}async function aU(e){let t=null,n=null,r=null;if($.setState(i=>{let a=i.newSessionDraft;if(!a?.open||a.draftSubmitting||!a.draftID)return{};let o=(a.submissionToken??0)+1,s={...a,draftSubmitting:!0,draftEstablishing:!1,submissionToken:o,...e?{pendingUserMessage:e}:{}};return r=JH(),t=s.draftID,n=o,XH(r,{draft:s}),{newSessionDraft:s}}),!t||n===null||!r)return null;await new Promise(e=>setTimeout(e,0));let i=$.getState().newSessionDraft;if(!i.open||i.draftSubmitting!==!0||i.draftID!==t||i.submissionToken!==n)return null;let a=Dr.getState().captureDraftRuntime(),o=S(a,t),s=Dr.getState().getDraft(o);return{token:n,draftID:t,draft:YH(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function oU(e){$.setState(t=>{let n=t.newSessionDraft;if(nU(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=qH.get(e.runtimeMemoryKey);return r&&tU(r.draft,e)&&XH(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=qH.get(e.runtimeMemoryKey);t&&tU(t.draft,e)&&XH(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function sU(e){let t=qH.get(e.runtimeMemoryKey);t&&tU(t.draft,e)&&XH(e.runtimeMemoryKey,{draft:{...WH}})}async function cU(e,t,n){if(!e.source)return null;let r;try{r=await Dr.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function lU(e,t){let n=t??e.directory??null;n&&Td(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function uU(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=_(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!nU(l,r);lU(e,c);let f=G.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&wD.getState().addSessionToFolder(t,a,e.id)}return d||(RH({projectId:o??null,directory:c}),UH(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),qo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(qo.getState().saveSessionAgentSelection(e.id,p),qo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),qo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),$H(c,$.getState().availableWorktreesByProject),u&&$e(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>kj);return{usePermissionStore:e}},void 0).then(({usePermissionStore:t})=>t.getState().setSessionAutoAccept(e.id,!0)).catch(e=>{console.warn(`Failed to apply draft permission auto-accept to new session:`,e)})),d&&r&&sU(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function dU(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await PD(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await QH(t,n);let r=t??z.getDirectory();return{directory:_(r),projectId:n}}async function fU(e,t){let n=await aU(t);if(!n)return null;let{draft:r}=n,i=typeof e.agent==`string`&&e.agent.trim().length>0?e.agent.trim():void 0;try{let{directory:a}=await dU(r),o=a??z.getDirectory(),s=await oS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&LS({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,directory:a??s.directory??null,parts:t.parts}),{materialized:await uU(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return oU(n),null}}async function pU(e){let t=await fU(e);return t?(await cU(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var mU=2,hU=300;async function gU(e){let{useI18nStore:t,formatMessage:n}=await $e(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BDxgw-Hx.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:r}=t.getState();return Error(n(r,e))}async function _U(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=G.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=OH({messageID:m,sessionID:`draft:pending`,providerID:n,modelID:r,agent:p,text:t,attachments:s,additionalParts:u.syntheticParts?.length?[...c||[],...u.syntheticParts]:c,agentMentionName:a}),g=await aU(h);if(!g)throw await gU(`chat.chatInput.toast.messageSendFailed`);let{draft:_}=g;try{let e=s?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))??[],i=(_.syntheticParts?.length?[...c||[],..._.syntheticParts]:c)?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))})),u=a?[{name:a}]:void 0,{directory:d}=await dU(_),f=await z.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Te()?.conversations;if(!v?.createWithPrompt)throw await gU(`chat.chatInput.toast.messageSendFailed`);let y=d??z.getDirectory()??``,b=xx(y,{bootstrap:!1}),x=()=>eU(Dr.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=mU;e++){e>0&&await new Promise(e=>setTimeout(e,hU));try{if(S=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!S||S.ok||S.phase!==`unavailable`||(S=void 0,e===mU))break}catch{if(e===mU)break}}if(!S)throw oU(g),Dr.getState().setPendingInputText(t,`replace`),await gU(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;lU(e,t);let a=i===y?b:xx(i,{bootstrap:!1});AH(e.id,h);let s=await uU(e,{providerID:n,modelID:r,agent:p,variant:o},{directory:t,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);{let t=a.getState();Object.prototype.hasOwnProperty.call(t.session_status??{},e.id)||a.setState({session_status:{...t.session_status,[e.id]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.id]:Date.now()}})}await cU(g,e.id,`consume`),MH(e.id,m),s.selected&&pC(e.id),KS({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:x}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!S.ok){let e=S.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw oU(g),Dr.getState().setPendingInputText(t,`replace`),await gU(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await uU(i,{providerID:n,modelID:r,agent:p,variant:o},{directory:a,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);if(e.ambiguous){let e=await zS(i.id,m,a,{isCurrent:x});if(e&&x()){await cU(g,i.id,`consume`),MH(i.id,m),s.selected&&pC(i.id),BS(xx(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await cU(g,i.id,`preserve`),Dr.getState().setPendingInputText(t,`replace`),await gU(`chat.chatInput.toast.sendStatusUnknown`)}throw await cU(g,i.id,`preserve`),Dr.getState().setPendingInputText(t,`replace`),await gU(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw oU(g),e}}var vU=`oc.worktreeMap`,yU=()=>{try{let e=u().getItem(vU);if(!e)return new Map;let t=JSON.parse(e);return Array.isArray(t)?new Map(t.filter(e=>Array.isArray(e)&&typeof e[0]==`string`&&Array.isArray(e[1]))):new Map}catch{return new Map}},bU=e=>{try{u().setItem(vU,e)}catch{}},xU=e=>{let t=[];for(let n of e.values())t.push(...n);return t},SU=yU(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...WH},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:xU(SU),availableWorktreesByProject:SU,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,i)=>{TH(n),b(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(bH(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Dr.getState().setActiveAttachmentDraft(n?C({transportIdentity:r()},n):null);let s=JH();GH.set(s,n);let c=Pe.getState(),l=VH(n,e=>t().worktreeMetadata.get(e)),u=z.getDirectory()??c.currentDirectory??null,d=(i?_(i):null)??l??u,f=Si.getState(),m=d?Zo(f.projects,t().availableWorktreesByProject,d):null;e({currentSessionId:n,currentSessionDirectory:n?d??null:null}),XH(s,{sessionId:n,directory:d??null}),a!==n&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?d??null:null}),n&&uC(n,d);try{d&&c.currentDirectory!==d&&c.setDirectory(d,{showOverlay:!1}),m&&f.activeProjectId!==m.id&&f.setActiveProjectIdOnly(m.id),z.setDirectory(d??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!nH(e)?.isStreaming){let t=Fd(e);t.length>0&&rH.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(Ak(n),yN(d??``,n))},prepareForRuntimeSwitch:n=>{let r=JH(n),i=Pe.getState().currentDirectory||null,a=t().currentSessionId,o=i?Dd(i):null;$j({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),GH.set(r,t().currentSessionId),XH(r,{sessionId:a,directory:i,draft:YH(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=JH(t),i=qH.get(n),a=i?.sessionId??GH.get(n)??null;b(a);let o=i?.draft?YH(i.draft):{...WH},s=i?.directory??null;s&&Pe.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...WH}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Dr.getState().setActiveAttachmentDraft(a?C({transportIdentity:r()},a):o.open&&o.draftID?S({transportIdentity:r()},o.draftID):null),a?yN(s??z.getDirectory()??``,a):yN(``,``)},openNewSessionDraft:n=>{if(RF.getState().shouldBlockNewSessionDraftOpen())return;let i=t().newSessionDraft;if(i.draftSubmitting||i.draftEstablishing)return;t().clearStagedMessageEdit();let a=Si.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Pe.getState().currentDirectory??null),u=LH(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=zH(o,s,d),m=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;m&&(a=Si.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=zH(h,s,u?.directory??null),w=zH(h,s,c),T=zH(h,s,l),E=v||(d===null?w||(l?T:C??x??y):m??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;RH({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:r()},O),A=Dr.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:i.open&&i.draftID===O?i.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),p.getState().setActiveMainTab(`chat`),ee&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),XH(JH(),{sessionId:null,directory:D,draft:j}),Dr.getState().setActiveAttachmentDraft(k),A||Dr.getState().clearAttachedFiles(),n?.initialPrompt&&Dr.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=r();UH(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(G.getState().activeDirectoryKey);!e.open||e.draftID!==re||r()!==ie||!ne||n!==ne||G.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(D)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),XH(JH(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=_(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),UH(r,{source:`setNewSessionDraftTarget`}),r&&r!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=2e3)=>{let r=fe(),i=D(t);return e(e=>{let t=new Map(e.queueAbortBlocks);return t.set(i,{token:r,expiresAt:Date.now()+n}),{queueAbortBlocks:t}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Fd(r);if(i.length===0)return null;let a=Ck(i,e=>Id(e));if(!a||`compacted`in a)return null;let o=a.tokens,s=a.totalTokens,c=e>0?e:2e5,l=e>0?Math.round(s/e*100):0,u=n>0?Math.round(yk(o.output)/n*100):void 0;return{totalTokens:s,percentage:l,contextLimit:e||0,outputLimit:n||void 0,normalizedOutput:u,thresholdLimit:c,lastMessageId:a.messageId}},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?iH.getState().setAttachment(t,{worktreeRoot:n.worktreeRoot??n.path??null,cwd:n.path??null,branch:n.branch??null,headState:n.headState??(n.branch?`branch`:`detached`),worktreeStatus:n.worktreeStatus??`ready`,worktreeSource:n.worktreeSource??null,legacy:!1,degraded:!1}):iH.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=_(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),UH(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,m=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===m?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?zF.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=p.getState(),t=eH(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=p.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;JV(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&v?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&Te()?.conversations?.createWithPrompt){await _U({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:S});return}let e=d?.messageID??v.pendingUserMessage?.info.id??ge(`msg`),a=OH({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),f=await fU({providerID:r,modelID:i,agent:y,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;pC(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await jH({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:g,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await cU(m,p.sessionId,`consume`)}catch(e){throw await cU(m,p.sessionId,`preserve`),e}$H(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?qo.getState().getSessionAgentSelection(C):null,T=G.getState().currentAgentName,E=y||w||T||void 0;if(C&&qo.getState().saveSessionModelSelection(C,r,i),C&&E&&(qo.getState().saveSessionAgentSelection(C,E),qo.getState().saveAgentModelForSession(C,E,r,i),qo.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=rH.getState(),t=nH(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(tH(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),rH.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&pC(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await iC(h.sessionId,h.messageId,{directory:D??void 0}),t().stagedMessageEdit===h&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(h.sessionId,h.messageId),e}try{await jH({sessionId:C||``,directory:D,content:n,providerID:r,modelID:i,agent:E,agentMentionName:s,variant:l,inputMode:u,files:O,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{h&&t().endMessageEditCommit(h.sessionId,h.messageId)}$H(D,t().availableWorktreesByProject),C&&S(C,D)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await oS(n,r??z.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),XH(JH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&wD.getState().addSessionToFolder(e,s,o.id)}return o}catch(n){return console.error(`[session-ui-store] createSession failed`,n),c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),XH(JH(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>yS(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await yS(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>SS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await SS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await wS(e,t)},requestSessionSmartTitle:async e=>{await TS(e)},shareSession:async e=>ES(e),unshareSession:async e=>DS(e),revertToMessage:async(e,t,n)=>{await QS(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await eC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Fd(e),r=jd().find(t=>t.id===e)?.revert?.messageID,i=fs(n,r);if(!i)return;let a=Id(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;await t().revertToMessage(e,i.id);let{toast:s}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:c,formatMessage:l}=await $e(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BDxgw-Hx.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await $e(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>Ub);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:i}=await $e(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BDxgw-Hx.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=jd().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ps(Fd(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:a}=await $e(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BDxgw-Hx.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:o}=r.getState();n.success(a(o,`chat.revert.toast.redo`));return}await sC(e);let{toast:a}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:o,formatMessage:s}=await $e(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-BDxgw-Hx.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:c}=o.getState();a.success(s(c,`chat.revert.toast.restored`))},forkFromMessage:async(n,r,i)=>{let a=t().forkTransition;if(a?.operationId,a?.stage,a){console.warn(`[session-fork] forkFromMessage skipped because a transition is active`,{sessionId:n,messageId:r,activeOperationId:a.operationId,activeSourceSessionId:a.sourceSessionId,activeStage:a.stage});return}let o=HH(n),s=++KH;try{let a=i?.directory??t().getDirectoryForSession(n)??z.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await cC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=HH(n),a=++KH;try{let r=t().getDirectoryForSession(n)??z.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await cC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await $e(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=_(e);return t?Md().filter(e=>PH(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=VH(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?pE(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:VH(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Fd(e,t().getDirectoryForSession(e)??void 0);for(let e=n.length-1;e>=0;--e){let t=n[e];if(t.role!==`user`)continue;let r=typeof t.model?.providerID==`string`&&t.model.providerID.trim().length>0?t.model.providerID:void 0,i=typeof t.model?.modelID==`string`&&t.model.modelID.trim().length>0?t.model.modelID:void 0,a=typeof t.agent==`string`&&t.agent.trim().length>0?t.agent:typeof t.mode==`string`&&t.mode.trim().length>0?t.mode:void 0,o=t.model?.variant??t.variant,s=typeof o==`string`&&o.trim().length>0?o:void 0;return{id:typeof t.id==`string`?t.id:void 0,agent:a,providerID:r,modelID:i,variant:s}}return null},getCurrentAgent:e=>qo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Fd(e);jd().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=_(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),XH(JH(),{sessionId:n,directory:i}))},markSessionPlanAvailable:t=>{e(e=>{if(e.sessionPlanAvailable.get(t)===!0)return e;let n=new Map(e.sessionPlanAvailable);return n.set(t,!0),{sessionPlanAvailable:n}})},isSessionPlanAvailable:e=>t().sessionPlanAvailable.get(e)??!1}));Kj((e,t)=>{$.getState().setCurrentSession(e,t)});var CU=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==CU&&(CU=t,bU(t))}});function wU(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function TU(e){return e.length>1?e.slice(0,-1):[]}function EU(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function DU(e,t){let n=e.at(-1);if(!n||n.sessionId===t.sessionId)return e;let r=e.at(-2);return r?.sessionId===t.sessionId?r.directory===t.directory?e:[...e.slice(0,-2),t,n]:e.length===1?[t,n]:e}var OU={activeTab:`projects`,secondary:null},kU=0,AU=null,jU=e=>{let t=++kU;return AU={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},MU=e=>{let t=AU;return t&&t.generation===kU&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(AU=null,`internal`):(AU=null,`external`)},NU=()=>{kU+=1,AU=null},PU=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?NU():jU(e),t.setCurrentSession(e.sessionId,e.directory??null)},FU=Oe(e=>({...OU,setActiveTab:t=>{NU(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[LU(t,`root`)]}}),PU(t)},pushSession:t=>{e(e=>{let n=LU(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?wU(e.secondary.routes,n):[n]}}}),PU(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=TU(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=FU.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&PU(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=DU(e.secondary.routes,LU(t,`parent`));return n===e.secondary.routes?e:{secondary:{kind:`chat`,routes:n}}}),replaceChatSession:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=e.secondary.routes.at(-1);return n?.sessionId===t.sessionId&&n.directory===(t.directory??null)?e:{secondary:{kind:`chat`,routes:EU(e.secondary.routes,LU(t,`root`))}}}),materializeDraftSession:t=>e(e=>e.secondary?.kind===`draft`?{secondary:{kind:`chat`,routes:[{key:`chat-primary`,sessionId:t.sessionId,directory:t.directory??null}]}}:e),openDraft:t=>{NU(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{NU(),pt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{NU(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{NU(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{NU(),e({...OU})}})),IU=1,LU=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${IU++}`,sessionId:e.sessionId,directory:e.directory??null}),RU=e=>!We()||Ge()?!1:(FU.getState().pushSession(e),!0);export{Rz as $,qa as $a,Ed as $i,XD as $n,wS as $r,bF as $t,zV as A,as as Aa,Fm as Ai,hO as An,ew as Ar,mF as At,MB as B,Lo as Ba,Op as Bi,uk as Bn,oS as Br,vP as Bt,tH as C,Ws as Ca,$g as Ci,fA as Cn,jr as Co,Bw as Cr,zF as Ct,YV as D,ss as Da,ag as Di,jk as Dn,Zt as Do,pw as Dr,FF as Dt,GV as E,$o as Ea,og as Ei,Ok as En,Yt as Eo,Iw as Er,IF as Et,$B as F,qo as Fa,Zp as Fi,ak as Fn,qS as Fr,bN as Ft,Wz as G,$a as Ga,jp as Gi,nk as Gn,JS as Gr,UP as Gt,Qz as H,No as Ha,Ap as Hi,ik as Hn,rS as Hr,CF as Ht,vV as I,Uo as Ia,Xp as Ii,$O as In,SS as Ir,jM as It,qz as J,yo as Ja,Yf as Ji,tO as Jn,PS as Jr,WP as Jt,Pz as K,eo as Ka,op as Ki,_k as Kn,YS as Kr,VP as Kt,XB as L,Vo as La,Wp as Li,tk as Ln,MS as Lr,OM as Lt,LV as M,Jo as Ma,gm as Mi,hk as Mn,hC as Mr,QN as Mt,AV as N,Yo as Na,fm as Ni,sk as Nn,mC as Nr,yN as Nt,XV as O,ts as Oa,Zm as Oi,yk as On,Xt as Oo,WC as Or,RF as Ot,ZB as P,Zo as Pa,Qp as Pi,rk as Pn,fS as Pr,xN as Pt,Lz as Q,Ua as Qa,Md as Qi,lO as Qn,CS as Qr,wP as Qt,yV as R,zo as Ra,Pp as Ri,pk as Rn,xS as Rr,YP as Rt,rH as S,eu as Sa,a_ as Si,pA as Sn,Ar as So,sT as Sr,_I as St,ZV as T,cs as Ta,Eg as Ti,Ak as Tn,Dr as To,zw as Tr,PF as Tt,hB as U,Fo as Ua,Np as Ui,ok as Un,XS as Ur,wM as Ut,Xz as V,Io as Va,Dp as Vi,gk as Vn,ZS as Vr,yP as Vt,FB as W,to as Wa,Mp as Wi,ek as Wn,TS as Wr,CM as Wt,Kz as X,Ja as Xa,G as Xi,eO as Xn,_x as Xr,wF as Xt,Uz as Y,fo as Ya,bf as Yi,nO as Yn,bS as Yr,qP as Yt,Fz as Z,Ya as Za,Nd as Zi,ZD as Zn,eC as Zr,hF as Zt,oH as _,vu as _a,rv as _i,Nj as _n,Rr as _o,OT as _r,aL as _t,iU as a,Wu as aa,Yy as ai,DP as an,xa as ao,wD as ar,xz as at,iH as b,U as ba,n_ as bi,lj as bn,Br as bo,nT as br,YI as bt,jH as c,bu as ca,xv as ci,_F as cn,ga as co,qE as cr,mz as ct,EH as d,Eu as da,wv as di,JP as dn,ha as do,UE as dr,cz as dt,Fd as ea,Bx as ei,SP as en,ya as eo,uO as er,jz as et,DH as f,H as fa,Ev as fi,vF as fn,Oi as fo,pE as fr,ez as ft,lH as g,wu as ga,F_ as gi,Pj as gn,Si as go,DT as gr,rL as gt,xH as h,Du as ha,$_ as hi,zj as hn,Di as ho,Y as hr,IR as ht,rU as i,Pd as ia,cb as ii,FP as in,Ma as io,JE as ir,Tz as it,RV as j,Qo as ja,Cm as ji,fk as jn,$C as jr,sF as jt,PV as k,es as ka,Bm as ki,Ck as kn,Gt as ko,tw as kr,_P as kt,$ as l,Su as la,Ov as li,gF as ln,pa as lo,hE as lr,iz as lt,SH as m,Tu as ma,Tv as mi,Wj as mn,wi as mo,WE as mr,XR as mt,RU as n,jd as na,kb as ni,EP as nn,Pa as no,ND as nr,Az as nt,OH as o,td as oa,Qv as oi,kP as on,Oa as oo,BE as or,bz as ot,bH as p,mu as pa,vv as pi,Uj as pn,ki as po,HE as pr,JR as pt,Gz as q,vo as qa,Qf as qi,QD as qn,QS as qr,HP as qt,FU as r,Td as ra,Eb as ri,NP as rn,Na as ro,MD as rr,kz as rt,pU as s,Zu as sa,Mv as si,jP as sn,Da as so,VE as sr,hz as st,MU as t,Id as ta,Hb as ti,CP as tn,ka as to,jD as tr,Mz as tt,TH as u,xu as ua,Dv as ui,IP as un,ma as uo,KE as ur,QR as ut,cH as v,Cu as va,r_ as vi,Oj as vn,Vr as vo,pT as vr,X as vt,eH as w,ds as wa,Qg as wi,mA as wn,kr as wo,Fw as wr,LF as wt,nH as x,$l as xa,c_ as xi,TA as xn,zr as xo,iT as xr,XI as xt,sH as y,pu as ya,i_ as yi,uj as yn,Lr as yo,eT as yr,UI as yt,VB as z,Ho as za,Ep as zi,YO as zn,iC as zr,KP as zt};
|
|
476
|
+
`,eH=async e=>{if(e.length<=5e3)return e;let t=await zV(e);if(t)return t.slice(0,VV);let n=Math.max(0,Math.floor((VV-93)/2)),r=ft.getState().dictionary;return bT.error(pt(r,`chat.goal.toast.distillFallback`)),`${e.slice(0,n)}${$V}${e.slice(-n)}`};async function tH(e,t,n,r){let i=n.objective.trim();if(!i)throw Error(`Goal objective must not be empty`);let a=await eH(i),o=typeof n.tokenBudget==`number`&&Number.isFinite(n.tokenBudget)&&n.tokenBudget>0?Math.floor(n.tokenBudget):null,s=await XV(e,a),c=Date.now();await YV(e,t,e=>r&&e&&e.id===r.id&&r.status!==`complete`?{...e,objective:s?``:a,objectiveFile:s,tokenBudget:o,status:`active`,statusReason:`resumed`,blockedStreak:0,updatedAt:c}:{id:JV(),objective:s?``:a,objectiveFile:s,status:`active`,tokenBudget:o,tokensUsed:0,turnsUsed:0,blockedStreak:0,note:``,statusReason:``,lastAccountedMessageID:``,createdAt:c,updatedAt:c})}async function nH(e,t){await YV(e,t,e=>!e||e.status!==`active`?e:{...e,status:`paused`,statusReason:`paused for question`,updatedAt:Date.now()})}async function rH(e,t,n){n===`paused`&&(TV(e),eC(e)),await YV(e,t,e=>e?{...e,status:n,statusReason:n===`active`?`resumed`:n===`complete`?`marked by user`:``,blockedStreak:0,...n===`active`?{turnsUsed:0}:{},updatedAt:Date.now()}:null)}async function iH(e,t){let n=!1;await YV(e,t,e=>(n=e?.status===`active`,null)),ZV(e),n&&(TV(e),eC(e))}var aH=`<system-reminder>`,oH=`</system-reminder>`,sH=e=>{let t=e.trim();return t?t.startsWith(aH)&&t.endsWith(oH)?t:`${aH}\n${t}\n${oH}`:``},cH=(e,t=i())=>`${t}\n${e}`,lH=(e,t)=>{let n=uH.getState();return t?n.sessionMemoryState.get(t):n.sessionMemoryState.get(cH(e))??n.sessionMemoryState.get(e)},uH=Oe()(e=>({sessionMemoryState:new Map,isSyncing:!1,updateViewportAnchor:(t,n,r,i)=>e(e=>{let a=new Map(e.sessionMemoryState),o=i??cH(t),s=a.get(o)??(i?void 0:a.get(t))??{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0};return a.set(o,{...s,viewportAnchor:n,...r?{scrollPosition:r}:{},lastAccessedAt:Date.now()}),{sessionMemoryState:a}})})),dH=Oe((e,t)=>({attachments:new Map,setAttachment:(t,n)=>e(e=>{let r=new Map(e.attachments);return r.set(t,n),{attachments:r}}),getAttachment:e=>t().attachments.get(e),clearAttachment:t=>e(e=>{let n=new Map(e.attachments);return n.delete(t),{attachments:n}})})),fH=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`);return t===`/`?`/`:t.replace(/\/+$/,``)||t};function pH(e,t){if(e){if(!e.degraded&&e.cwd)return fH(e.cwd);if(e.worktreeRoot)return fH(e.worktreeRoot);if(e.cwd)return fH(e.cwd)}return t?fH(t):null}function mH(e){return e.worktreeStatus===`missing`||e.worktreeStatus===`invalid`?[`open-without-worktree-features`]:[]}function hH(e,t){let n=[];if(t&&t.isClean===!1){let e=t.files?.length;n.push(e==null?{reason:`dirty`}:{reason:`dirty`,dirtyFiles:e})}return e?(e.worktreeStatus===`missing`&&n.push({reason:`missing`}),e.worktreeStatus===`invalid`&&n.push({reason:`invalid`}),e.attentionReason&&n.push({reason:`attention`,attentionReason:e.attentionReason}),n):n}function gH(e){let t=[];e.projectRoot&&t.push({value:e.projectRoot,label:e.rootBranch||e.projectRoot.split(`/`).pop()||e.projectRoot,kind:`root`});let n=e.pendingBootstrapDirectory?fH(e.pendingBootstrapDirectory):null;for(let r of e.worktrees){let i=fH(r.path);if(i===e.projectRoot)continue;let a=i===n;t.push({value:i,label:r.branch?.trim()||r.label||i.split(`/`).pop()||i,kind:`worktree`,pending:a||void 0})}return t}var _H=`openchamber.session-switch.start`,vH=`openchamber.session-switch.highlight-painted`,yH=`openchamber.session-switch.content-committed`,bH=`data-openchamber-session-switch-highlight-ms`,xH=`data-openchamber-session-switch-content-ms`,SH=`openchamber.session-switch.highlight-latency`,CH=`openchamber.session-switch.content-latency`,wH=()=>typeof performance<`u`&&typeof performance.mark==`function`&&typeof performance.measure==`function`,TH=()=>wH()&&performance.getEntriesByName(_H,`mark`).length>0,EH=(e,t)=>{typeof document>`u`||document.documentElement.setAttribute(e,t.toFixed(2))},DH=(e=!1)=>{wH()&&(!e&&performance.getEntriesByName(_H,`mark`).length>0&&performance.getEntriesByName(yH,`mark`).length===0||(performance.clearMarks(_H),performance.clearMarks(vH),performance.clearMarks(yH),performance.clearMeasures(SH),performance.clearMeasures(CH),typeof document<`u`&&(document.documentElement.removeAttribute(bH),document.documentElement.removeAttribute(xH)),performance.mark(_H)))},OH=()=>{if(!TH())return;performance.mark(vH),performance.measure(SH,_H,vH);let e=performance.getEntriesByName(SH,`measure`).at(-1);e&&EH(bH,e.duration)},kH=()=>{if(!TH())return;performance.mark(yH),performance.measure(CH,_H,yH);let e=performance.getEntriesByName(CH,`measure`).at(-1);e&&EH(xH,e.duration)},AH={revision:0,sessionId:null},jH=new Set,MH=e=>{AH={revision:AH.revision+1,sessionId:e};for(let e of jH)e(AH);return AH},NH=()=>AH,PH=e=>(jH.add(e),()=>jH.delete(e));function FH(e){let t=e.parts?e.parts.map(e=>({...e})):[];if(e.parts)return{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t};e.text!==void 0&&t.push({id:ge(`prt`),type:`text`,text:e.text});for(let n of e.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:n.mimeType,url:n.dataUrl,filename:n.filename});for(let n of e.additionalParts??[]){t.push({id:ge(`prt`),type:`text`,text:n.text,synthetic:n.synthetic});for(let e of n.attachments??[])t.push({id:ge(`prt`),type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename})}return e.agentMentionName&&t.push({id:ge(`prt`),type:`agent`,name:e.agentMentionName}),{info:{id:e.messageID,role:`user`,sessionID:e.sessionID,parentID:``,modelID:e.modelID,providerID:e.providerID,system:``,agent:e.agent??``,model:`${e.providerID}/${e.modelID}`,metadata:{},time:{created:Date.now(),completed:0}},parts:t}}function IH(e,t){return{info:{...e.info,sessionID:t},parts:e.parts.map(n=>({...n,sessionID:t,messageID:e.info.id}))}}function LH(e,t){if(!e)return;let n=IH(t,e);$.setState(t=>{let r=[...(t.retainedPendingUserMessages.get(e)??[]).filter(e=>e.info.id!==n.info.id),n],i=new Map(t.retainedPendingUserMessages);return i.set(e,r),{retainedPendingUserMessages:i}})}async function RH(e){let t=e.directory??void 0,n=BH(e.sessionId,e.onSendConfirmed),i=e.content;if(e.inputMode===`shell`){let r=e.messageID??ge(`msg`);return z.shellSession({sessionId:e.sessionId,directory:t,agent:e.agent??``,model:{providerID:e.providerID,modelID:e.modelID},command:e.content}).then(()=>{n(r)})}let a=de(e.content);if(a){let o=a.commandName.toLowerCase(),s=a.argumentsText,c=t??Pe.getState().currentDirectory??null,l=r(),u=Di(c,l),d=qa(c,l),f=L.getQueryState(u.queryKey),p=L.getQueryState(d.queryKey),m=f?.data!==void 0,h=p?.data!==void 0,[g,_]=await Promise.all([m?Promise.resolve(ki(c,l)):L.fetchQuery({...u,staleTime:1/0}),h?Promise.resolve(Ya(L,c,l)):L.fetchQuery({...d,staleTime:1/0})]);if(r()!==l)throw Error(`Runtime changed while resolving slash command`);let v=_.some(e=>e.name.toLowerCase()===o)?void 0:g.find(e=>e.name.toLowerCase()===o);if(v?.isBuiltIn===!1)i=`[command:${v.reference??v.name}]${s?` ${s}`:``}`;else if(v)return US({sessionId:e.sessionId,content:e.content,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>z.sendCommand({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,command:v.name,arguments:s,agent:e.agent,variant:e.variant,files:e.files,messageId:n,directory:t}).then(()=>{})})}return US({sessionId:e.sessionId,content:i,providerID:e.providerID,modelID:e.modelID,agent:e.agent,directory:t,files:e.files,parts:e.optimisticParts,messageID:e.messageID,ticket:e.ticket,preserveOptimisticOnAmbiguous:e.preserveOptimisticOnAmbiguous,onSendConfirmed:n,send:n=>z.sendMessage({id:e.sessionId,providerID:e.providerID,modelID:e.modelID,text:i,agent:e.agent,agentMentions:e.agentMentionName?[{name:e.agentMentionName}]:void 0,variant:e.variant,files:e.files,additionalParts:e.additionalParts,delivery:e.delivery,messageId:n,directory:t}).then(()=>{})})}function zH(e,t){F(`/api/sessions/${e}/message-sent`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messageID:t})}).catch(()=>{})}function BH(e,t){let n=!1;return r=>{if(!n){n=!0;try{t?.(r)}finally{zH(e,r)}}}}var VH=e=>{let t=e;return _(t.directory??null)??_(t.project?.worktree??null)},HH=u(),UH=`oc.chatInput.lastDraftTarget`,WH=()=>{try{let e=HH.getItem(UH);if(!e)return null;let t=JSON.parse(e);return{projectId:typeof t?.projectId==`string`?t.projectId:null,directory:_(typeof t?.directory==`string`?t.directory:null)}}catch{return null}},GH=e=>{try{HH.setItem(UH,JSON.stringify(e))}catch{}},KH=Qo,qH=e=>{if(e)return dH.getState().getAttachment(e)},JH=(e,t,n)=>{if(!e)return null;let r=pH(qH(e));if(r)return r;let i=t(e)?.path;if(typeof i==`string`&&i.trim().length>0)return _(i);if(n?.includeRuntimeMemory!==!1){let t=eU.get(tU());if(t?.sessionId===e&&t.directory)return _(t.directory)}let a=Nd().find(t=>t.id===e);return a?VH(a):null},YH=e=>{let t=Nd().find(t=>t.id===e);if(t)return t;let n=Y.getState();return[...n.activeSessions,...n.archivedSessions].find(t=>t.id===e)??null},XH=async(e,t)=>{await G.getState().activateDirectory(_(e),t)},ZH={open:!1,draftID:null,directoryOverride:null,parentID:null,draftSubmitting:!1,draftEstablishing:!1},QH=new Map,$H=0,eU=new Map,tU=e=>(e??i()).trim()||`default`,nU=e=>({...e}),rU=(e,t)=>{let n=eU.get(e);eU.set(e,{sessionId:n?.sessionId??null,directory:n?.directory??null,draft:n?.draft?nU(n.draft):{...ZH},...t})},iU=(e,t)=>{let n=Ci.getState();if(t){let e=n.projects.find(e=>e.id===t);if(e?.path)return{id:e.id,path:e.path}}let r=Qo(n.projects,$.getState().availableWorktreesByProject,e);return r?.path?{id:r.id,path:r.path}:null},aU=async(e,t)=>{if(!e)return;let n=iU(e,t);n&&await ck(n)&&await _O(e)},oU=(e,t)=>{let n=Ci.getState(),r=Qo(n.projects,t,e);r&&n.moveProjectToTop(r.id)},sU=(e,t)=>e.transportIdentity===t.transportIdentity&&e.generation===t.generation,cU=(e,t)=>e.open&&e.draftSubmitting===!0&&e.draftID===t.draftID&&e.submissionToken===t.token,lU=(e,t)=>cU(e,t)&&sU(Or.getState().captureDraftRuntime(),t.runtime);async function uU(e){let t=!1;if($.setState(n=>{let r=n.newSessionDraft;if(!r?.open||!r.draftID||r.draftSubmitting||r.draftEstablishing)return{};t=!0;let i=e?FH({...e,sessionID:`draft:pending`}):r.pendingUserMessage,a={...r,draftEstablishing:!0,...i?{pendingUserMessage:i}:{}};return rU(tU(),{draft:a}),{newSessionDraft:a}}),!t)return!1;await new Promise(e=>setTimeout(e,0));let n=$.getState().newSessionDraft;return n.open===!0&&n.draftEstablishing===!0}function dU(){$.setState(e=>{let t=e.newSessionDraft;if(!t?.draftEstablishing)return{};let n={...t,draftEstablishing:!1};return rU(tU(),{draft:n}),{newSessionDraft:n}})}async function fU(e){let t=null,n=null,r=null;if($.setState(i=>{let a=i.newSessionDraft;if(!a?.open||a.draftSubmitting||!a.draftID)return{};let o=(a.submissionToken??0)+1,s={...a,draftSubmitting:!0,draftEstablishing:!1,submissionToken:o,...e?{pendingUserMessage:e}:{}};return r=tU(),t=s.draftID,n=o,rU(r,{draft:s}),{newSessionDraft:s}}),!t||n===null||!r)return null;await new Promise(e=>setTimeout(e,0));let i=$.getState().newSessionDraft;if(!i.open||i.draftSubmitting!==!0||i.draftID!==t||i.submissionToken!==n)return null;let a=Or.getState().captureDraftRuntime(),o=S(a,t),s=Or.getState().getDraft(o);return{token:n,draftID:t,draft:nU(i),runtime:a,runtimeMemoryKey:r,source:s?{key:o,revision:s.revision}:null}}function pU(e){$.setState(t=>{let n=t.newSessionDraft;if(lU(n,e)){let t={...n,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0},r=eU.get(e.runtimeMemoryKey);return r&&cU(r.draft,e)&&rU(e.runtimeMemoryKey,{draft:t}),{newSessionDraft:t}}return{}});let t=eU.get(e.runtimeMemoryKey);t&&cU(t.draft,e)&&rU(e.runtimeMemoryKey,{draft:{...t.draft,draftSubmitting:!1,draftEstablishing:!1,pendingUserMessage:void 0}})}function mU(e){let t=eU.get(e.runtimeMemoryKey);t&&cU(t.draft,e)&&rU(e.runtimeMemoryKey,{draft:{...ZH}})}async function hU(e,t,n){if(!e.source)return null;let r;try{r=await Or.getState().finalizeDraftOwnership({source:e.source.key,destination:C(e.runtime,t),expectedSourceRevision:e.source.revision,disposition:n,runtime:e.runtime})}catch{return console.warn(`[session-ui-store] draft ownership finalization rejected`,{disposition:n,sessionID:t,draftID:e.draftID}),null}return r.status!==`committed`&&console.warn(`[session-ui-store] draft ownership finalization did not commit`,{status:r.status,disposition:n,sessionID:t,draftID:e.draftID}),r}function gU(e,t){let n=t??e.directory??null;n&&Ed(e.id,n),Y.getState().upsertSession(e),$.getState().markSessionAsOpenChamberCreated(e.id)}async function _U(e,t,n,r){let i=$.getState(),{targetFolderId:a,draftProjectId:o,draftSyntheticParts:s}=n,c=_(n.directory??e.directory??null),l=i.newSessionDraft,u=l.permissionAutoAcceptEnabled===!0,d=r!==void 0&&!lU(l,r);gU(e,c);let f=G.getState(),p=n.agent??f.currentAgentName;if(a){let t=n.directory||$.getState().lastLoadedDirectory||e.directory;t&&jD.getState().addSessionToFolder(t,a,e.id)}return d||(GH({projectId:o??null,directory:c}),XH(c).catch(e=>{console.warn(`Failed to activate directory after creating session:`,e)}),Jo.getState().saveSessionModelSelection(e.id,t.providerID,t.modelID),p&&(Jo.getState().saveSessionAgentSelection(e.id,p),Jo.getState().saveAgentModelForSession(e.id,p,t.providerID,t.modelID),Jo.getState().saveAgentModelVariantForSession(e.id,p,t.providerID,t.modelID,t.variant)),i.initializeNewOpenChamberSession(e.id,f.agents??[]),i.setCurrentSession(e.id,c),oU(c,$.getState().availableWorktreesByProject),u&&et(async()=>{let{usePermissionStore:e}=await Promise.resolve().then(()=>Ij);return{usePermissionStore:e}},void 0).then(({usePermissionStore:t})=>t.getState().setSessionAutoAccept(e.id,!0)).catch(e=>{console.warn(`Failed to apply draft permission auto-accept to new session:`,e)})),d&&r&&mU(r),{sessionId:e.id,directory:c,agent:p,syntheticParts:s,selected:!d}}async function vU(e){let t=e.bootstrapPendingDirectory??e.directoryOverride??null,n=e.selectedProjectId??null;e.pendingWorktreeRequestId&&(t=await VD(e.pendingWorktreeRequestId),$.getState().resolvePendingDraftWorktreeTarget(e.pendingWorktreeRequestId,t)),await aU(t,n);let r=t??z.getDirectory();return{directory:_(r),projectId:n}}async function yU(e,t){let n=await fU(t);if(!n)return null;let{draft:r}=n,i=typeof e.agent==`string`&&e.agent.trim().length>0?e.agent.trim():void 0;try{let{directory:a}=await vU(r),o=a??z.getDirectory(),s=await pS(r.title,o,r.parentID??null,void 0);if(!s?.id)throw Error(`Failed to create session`);return t&&WS({sessionId:s.id,messageID:t.info.id,content:``,providerID:e.providerID,modelID:e.modelID,agent:i,directory:a??s.directory??null,parts:t.parts}),{materialized:await _U(s,e,{directory:a??s.directory??null,agent:i,draftProjectId:r.selectedProjectId,targetFolderId:r.targetFolderId,draftSyntheticParts:r.syntheticParts},n),claim:n}}catch{return pU(n),null}}async function bU(e){let t=await yU(e);return t?(await hU(t.claim,t.materialized.sessionId,`preserve`),t.materialized):null}var xU=2,SU=300;async function CU(e){let{useI18nStore:t,formatMessage:n}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CNhcDSiX.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:r}=t.getState();return Error(n(r,e))}async function wU(e){let{content:t,providerID:n,modelID:r,agent:i,agentMentionName:a,variant:o,attachments:s,additionalParts:c,onSessionReady:l}=e,u=$.getState().newSessionDraft,d=typeof i==`string`&&i.trim().length>0?i.trim():void 0,f=G.getState(),p=d??f.currentAgentName,m=e.messageID??u.pendingUserMessage?.info.id??ge(`msg`),h=FH({messageID:m,sessionID:`draft:pending`,providerID:n,modelID:r,agent:p,text:t,attachments:s,additionalParts:u.syntheticParts?.length?[...c||[],...u.syntheticParts]:c,agentMentionName:a}),g=await fU(h);if(!g)throw await CU(`chat.chatInput.toast.messageSendFailed`);let{draft:_}=g;try{let e=s?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))??[],i=(_.syntheticParts?.length?[...c||[],..._.syntheticParts]:c)?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))})),u=a?[{name:a}]:void 0,{directory:d}=await vU(_),f=await z.buildMessageParts({text:t,files:e.length>0?e:void 0,additionalParts:i,agentMentions:u}),v=Te()?.conversations;if(!v?.createWithPrompt)throw await CU(`chat.chatInput.toast.messageSendFailed`);let y=d??z.getDirectory()??``,b=Ox(y,{bootstrap:!1}),x=()=>sU(Or.getState().captureDraftRuntime(),g.runtime),S;for(let e=0;e<=xU;e++){e>0&&await new Promise(e=>setTimeout(e,SU));try{if(S=await v.createWithPrompt({input:{type:`prompt`},directory:y,..._.title?{title:_.title}:{},..._.parentID?{parentID:_.parentID}:{},messageID:m,model:{providerID:n,modelID:r},...p?{agent:p}:{},...o?{variant:o}:{},parts:f}),!S||S.ok||S.phase!==`unavailable`||(S=void 0,e===xU))break}catch{if(e===xU)break}}if(!S)throw pU(g),Or.getState().setPendingInputText(t,`replace`),await CU(`chat.chatInput.toast.messageSendFailed`);if(S.ok){let e=S.session,t=d??e.directory??null,i=t??y;gU(e,t);let a=i===y?b:Ox(i,{bootstrap:!1});LH(e.id,h);let s=await _U(e,{providerID:n,modelID:r,agent:p,variant:o},{directory:t,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);{let t=a.getState();Object.prototype.hasOwnProperty.call(t.session_status??{},e.id)||a.setState({session_status:{...t.session_status,[e.id]:{type:`busy`}},session_status_observed_at:{...t.session_status_observed_at,[e.id]:Date.now()}})}await hU(g,e.id,`consume`),zH(e.id,m),s.selected&&bC(e.id),$S({store:a,sessionId:e.id,messageID:m,directory:i,isCurrent:x}).then(t=>{t===`missing`&&console.warn(`[combined] sent user message never materialized`,{sessionId:e.id,messageID:m,directory:i})}).catch(t=>{console.warn(`[combined] sent user message presence check failed`,{sessionId:e.id,messageID:m,directory:i,error:t instanceof Error?t.message:String(t)})}),l?.(e.id,t);return}if(!S.ok){let e=S.phase;if(e===`create`||e===`validate`||e===`conflict`||e===`unavailable`||e===`internal`)throw pU(g),Or.getState().setPendingInputText(t,`replace`),await CU(`chat.chatInput.toast.messageSendFailed`);if(e===`prompt`){let e=S,i=e.session,a=d??i.directory??null,s=await _U(i,{providerID:n,modelID:r,agent:p,variant:o},{directory:a,agent:p,draftProjectId:_.selectedProjectId,targetFolderId:_.targetFolderId,draftSyntheticParts:_.syntheticParts},g);if(e.ambiguous){let e=await KS(i.id,m,a,{isCurrent:x});if(e&&x()){await hU(g,i.id,`consume`),zH(i.id,m),s.selected&&bC(i.id),qS(Ox(a??y,{bootstrap:!1}),i.id,m,e,{gapFillOnly:!0,directory:a??y}),l?.(i.id,a);return}throw await hU(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await CU(`chat.chatInput.toast.sendStatusUnknown`)}throw await hU(g,i.id,`preserve`),Or.getState().setPendingInputText(t,`replace`),await CU(`chat.chatInput.toast.messageSendFailed`)}}}catch(e){throw pU(g),e}}var TU=`oc.worktreeMap`,EU=()=>{try{let e=u().getItem(TU);if(!e)return new Map;let t=JSON.parse(e);return Array.isArray(t)?new Map(t.filter(e=>Array.isArray(e)&&typeof e[0]==`string`&&Array.isArray(e[1]))):new Map}catch{return new Map}},DU=e=>{try{u().setItem(TU,e)}catch{}},OU=e=>{let t=[];for(let n of e.values())t.push(...n);return t},kU=EU(),$=Oe()((e,t)=>({currentSessionId:null,currentSessionDirectory:null,newSessionDraft:{...ZH},retainedPendingUserMessages:new Map,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,worktreeMetadata:new Map,availableWorktrees:OU(kU),availableWorktreesByProject:kU,webUICreatedSessions:new Set,sessionAbortFlags:new Map,queueAbortBlocks:new Map,abortControllers:new Map,isLoading:!1,lastLoadedDirectory:null,sessionPlanAvailable:new Map,pendingChangesBarDismissed:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map,clearRetainedPendingUserMessages:(t,n)=>{!t||n.length===0||e(e=>{let r=e.retainedPendingUserMessages.get(t);if(!r?.length)return e;let i=new Set(n),a=r.filter(e=>!i.has(e.info.id));if(a.length===r.length)return e;let o=new Map(e.retainedPendingUserMessages);return a.length===0?o.delete(t):o.set(t,a),{retainedPendingUserMessages:o}})},clearStagedMessageEdit:t=>{e(e=>!e.stagedMessageEdit||t&&e.stagedMessageEdit.sessionId!==t?e:{stagedMessageEdit:null})},beginMessageEditCommit:(t,n)=>{e({messageEditCommitting:{sessionId:t,messageId:n}})},endMessageEditCommit:(t,n)=>{e(e=>{let r=e.messageEditCommitting;return!r||r.sessionId!==t||r.messageId!==n?e:{messageEditCommitting:null}})},markMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)===n)return e;let r=new Map(e.pendingSendMessageIDs);return r.set(t,n),{pendingSendMessageIDs:r}})},clearMessageSending:(t,n)=>{e(e=>{if(e.pendingSendMessageIDs.get(t)!==n)return e;let r=new Map(e.pendingSendMessageIDs);return r.delete(t),{pendingSendMessageIDs:r}})},setCurrentSession:(n,i)=>{MH(n),b(n);let a=t().currentSessionId,o=t().currentSessionDirectory;a!==n&&(DH(),e({stagedMessageEdit:null,messageEditCommitting:null})),n&&t().closeNewSessionDraft(),Or.getState().setActiveAttachmentDraft(n?C({transportIdentity:r()},n):null);let s=tU();QH.set(s,n);let c=Pe.getState(),l=JH(n,e=>t().worktreeMetadata.get(e)),u=z.getDirectory()??c.currentDirectory??null,d=(i?_(i):null)??l??u,f=Ci.getState(),m=d?Qo(f.projects,t().availableWorktreesByProject,d):null;e({currentSessionId:n,currentSessionDirectory:n?d??null:null}),rU(s,{sessionId:n,directory:d??null}),a!==n&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:a,previousDirectory:o,nextSessionId:n,nextDirectory:n?d??null:null}),n&&_C(n,d);try{d&&c.currentDirectory!==d&&c.setDirectory(d,{showOverlay:!1}),m&&f.activeProjectId!==m.id&&f.setActiveProjectIdOnly(m.id),z.setDirectory(d??void 0)}catch(e){console.warn(`Failed to set OpenCode directory for session switch:`,e)}if(a&&a!==n){let e=a;setTimeout(()=>{if(!lH(e)?.isStreaming){let t=Id(e);t.length>0&&uH.getState().updateViewportAnchor(e,t.length-1)}},0)}n&&(Lk(n),EN(d??``,n))},prepareForRuntimeSwitch:n=>{let r=tU(n),i=Pe.getState().currentDirectory||null,a=t().currentSessionId,o=i?Od(i):null;oM({runtimeKey:r,directory:i,sessionId:a,status:a?o?.session_status?.[a]:null}),QH.set(r,t().currentSessionId),rU(r,{sessionId:a,directory:i,draft:nU(t().newSessionDraft)}),e({queueAbortBlocks:new Map})},restoreForRuntimeSwitch:t=>{let n=tU(t),i=eU.get(n),a=i?.sessionId??QH.get(n)??null;b(a);let o=i?.draft?nU(i.draft):{...ZH},s=i?.directory??null;s&&Pe.getState().setDirectory(s,{showOverlay:!1}),e({currentSessionId:a,currentSessionDirectory:a?s:null,newSessionDraft:a?{...ZH}:o,forkTransition:null,abortPromptSessionId:null,abortPromptExpiresAt:null,error:null,sessionAbortFlags:new Map,queueAbortBlocks:new Map,pendingChangesBarDismissed:new Map,retainedPendingUserMessages:new Map,stagedMessageEdit:null,messageEditCommitting:null,pendingSendMessageIDs:new Map}),Or.getState().setActiveAttachmentDraft(a?C({transportIdentity:r()},a):o.open&&o.draftID?S({transportIdentity:r()},o.draftID):null),a?EN(s??z.getDirectory()??``,a):EN(``,``)},openNewSessionDraft:n=>{if(GF.getState().shouldBlockNewSessionDraftOpen())return;let i=t().newSessionDraft;if(i.draftSubmitting||i.draftEstablishing)return;t().clearStagedMessageEdit();let a=Ci.getState(),o=a.projects,s=t().availableWorktreesByProject,c=_(t().currentSessionDirectory??null),l=_(Pe.getState().currentDirectory??null),u=WH(),d=n?.directoryOverride===void 0?null:_(n.directoryOverride),f=KH(o,s,d),m=n?.ensureProjectForDirectory&&d&&!f?a.addProject(d):null;m&&(a=Ci.getState());let h=a.projects,g=a.getActiveProject(),v=n?.selectedProjectId?h.find(e=>e.id===n.selectedProjectId)??null:null,y=g||(a.activeProjectId?h.find(e=>e.id===a.activeProjectId)??null:h[0]??null),x=u?.projectId?h.find(e=>e.id===u.projectId)??null:null,C=KH(h,s,u?.directory??null),w=KH(h,s,c),T=KH(h,s,l),E=v||(d===null?w||(l?T:C??x??y):m??f),D=d===null?v?_(v.path??null):c||l||(u?.directory?u.directory:_(E?.path??null)):d;GH({projectId:E?.id??null,directory:D}),E&&a.activeProjectId!==E.id&&a.setActiveProjectIdOnly(E.id);let O=le({projectId:E?.id??null,directory:D}),k=S({transportIdentity:r()},O),A=Or.getState().getDraft(k),j={open:!0,draftID:O,selectedProjectId:E?.id??null,directoryOverride:D,permissionAutoAcceptEnabled:n?.permissionAutoAcceptEnabled===!0,pendingWorktreeRequestId:n?.pendingWorktreeRequestId??null,bootstrapPendingDirectory:_(n?.bootstrapPendingDirectory??null),preserveDirectoryOverride:n?.preserveDirectoryOverride===!0,parentID:n?.parentID??null,title:n?.title,initialPrompt:n?.initialPrompt,syntheticParts:n?.syntheticParts,targetFolderId:n?.targetFolderId,submissionToken:i.open&&i.draftID===O?i.submissionToken:0,draftSubmitting:!1,draftEstablishing:!1},ee=t().currentSessionId,te=t().currentSessionDirectory;e({newSessionDraft:{...j},currentSessionId:null,currentSessionDirectory:null,error:null}),b(null),p.getState().setActiveMainTab(`chat`),ee&&p.getState().syncWorkspacePanelsForSessionSwitch({previousSessionId:ee,previousDirectory:te,nextSessionId:null,nextDirectory:null}),rU(tU(),{sessionId:null,directory:D,draft:j}),Or.getState().setActiveAttachmentDraft(k),A||Or.getState().clearAttachedFiles(),n?.initialPrompt&&Or.getState().setPendingInputText(n.initialPrompt);let M=_(E?.path??null)??D,ne=E?_(M):null,re=j.draftID,ie=r();XH(M,{source:`newSessionDraft`}).then(()=>{let e=t().newSessionDraft,n=_(G.getState().activeDirectoryKey);!e.open||e.draftID!==re||r()!==ie||!ne||n!==ne||G.getState().applyDefaultModelAgentSelection({projectDefaultModel:E?.defaultModel})}),D&&D!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(D)},closeNewSessionDraft:()=>{let t={open:!1,draftID:null,selectedProjectId:null,directoryOverride:null,pendingWorktreeRequestId:null,bootstrapPendingDirectory:null,preserveDirectoryOverride:!1,parentID:null,title:void 0,initialPrompt:void 0,syntheticParts:void 0,targetFolderId:void 0,draftSubmitting:!1,draftEstablishing:!1};e({newSessionDraft:t}),rU(tU(),{draft:t})},setNewSessionDraftTarget:(t,n)=>{let r=null;e(e=>{r=_(t.directoryOverride??e.newSessionDraft.directoryOverride);let i=n?.force===!0;return{newSessionDraft:{...e.newSessionDraft,selectedProjectId:t.projectId??t.selectedProjectId??e.newSessionDraft.selectedProjectId,directoryOverride:t.directoryOverride??e.newSessionDraft.directoryOverride,...i?{bootstrapPendingDirectory:null,preserveDirectoryOverride:!1}:{}}}}),XH(r,{source:`setNewSessionDraftTarget`}),r&&r!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(r)},setDraftPreserveDirectoryOverride:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,preserveDirectoryOverride:t}}:e),setDraftPermissionAutoAcceptEnabled:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,permissionAutoAcceptEnabled:t}}:e),acknowledgeSessionAbort:t=>e(e=>{let n=new Map(e.sessionAbortFlags),r=n.get(t);return r&&n.set(t,{...r,acknowledged:!0}),{sessionAbortFlags:n}}),beginQueueAbortBlock:(t,n=2e3)=>{let r=fe(),i=D(t);return e(e=>{let t=new Map(e.queueAbortBlocks);return t.set(i,{token:r,expiresAt:Date.now()+n}),{queueAbortBlocks:t}}),r},clearQueueAbortBlock:(t,n)=>e(e=>{let r=D(t);if(e.queueAbortBlocks.get(r)?.token!==n)return e;let i=new Map(e.queueAbortBlocks);return i.delete(r),{queueAbortBlocks:i}}),pruneQueueAbortBlocks:(t=Date.now())=>e(e=>{let n;for(let[r,i]of e.queueAbortBlocks)i.expiresAt>t||(n||=new Map(e.queueAbortBlocks),n.delete(r));return n?{queueAbortBlocks:n}:e}),clearAbortPrompt:()=>e({abortPromptSessionId:null,abortPromptExpiresAt:null}),armAbortPrompt:(n=5e3)=>{let{currentSessionId:r}=t();if(!r)return null;let i=Date.now()+n;return e({abortPromptSessionId:r,abortPromptExpiresAt:i}),i},clearError:()=>e({error:null}),markSessionAsOpenChamberCreated:t=>e(e=>{let n=new Set(e.webUICreatedSessions);return n.add(t),{webUICreatedSessions:n}}),isOpenChamberCreatedSession:e=>t().webUICreatedSessions.has(e),getContextUsage:(e,n)=>{if(t().newSessionDraft?.open)return null;let r=t().currentSessionId;if(!r)return null;let i=Id(r);if(i.length===0)return null;let a=Ak(i,e=>Ld(e));if(!a||`compacted`in a)return null;let o=a.tokens,s=a.totalTokens,c=e>0?e:2e5,l=e>0?Math.round(s/e*100):0,u=n>0?Math.round(Ek(o.output)/n*100):void 0;return{totalTokens:s,percentage:l,contextLimit:e||0,outputLimit:n||void 0,normalizedOutput:u,thresholdLimit:c,lastMessageId:a.messageId}},initializeNewOpenChamberSession:()=>{},setWorktreeMetadata:(t,n)=>{n?dH.getState().setAttachment(t,{worktreeRoot:n.worktreeRoot??n.path??null,cwd:n.path??null,branch:n.branch??null,headState:n.headState??(n.branch?`branch`:`detached`),worktreeStatus:n.worktreeStatus??`ready`,worktreeSource:n.worktreeSource??null,legacy:!1,degraded:!1}):dH.getState().clearAttachment(t),e(e=>{let r=new Map(e.worktreeMetadata);return n?r.set(t,n):r.delete(t),{worktreeMetadata:r}})},overrideNewSessionDraftTarget:t=>{let n=null;e(e=>{let r={...e.newSessionDraft,...t};return n=_(typeof r.directoryOverride==`string`?r.directoryOverride:null),{newSessionDraft:r}}),XH(n,{source:`overrideNewSessionDraftTarget`}),n&&n!==Pe.getState().currentDirectory&&Pe.getState().setDirectory(n)},resolvePendingDraftWorktreeTarget:(t,n,r)=>e(e=>!e.newSessionDraft?.open||e.newSessionDraft.pendingWorktreeRequestId!==t?e:{newSessionDraft:{...e.newSessionDraft,selectedProjectId:r?.projectId??e.newSessionDraft.selectedProjectId??null,directoryOverride:_(n),pendingWorktreeRequestId:null,bootstrapPendingDirectory:_(r?.bootstrapPendingDirectory??e.newSessionDraft.bootstrapPendingDirectory??null),preserveDirectoryOverride:r?.preserveDirectoryOverride??!0}}),setDraftBootstrapPendingDirectory:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,bootstrapPendingDirectory:_(t)}}:e),setPendingDraftWorktreeRequest:t=>e(e=>e.newSessionDraft?.open?{newSessionDraft:{...e.newSessionDraft,pendingWorktreeRequestId:t}}:e),getWorktreeMetadata:e=>t().worktreeMetadata.get(e),dismissPendingChangesBar:(n,r)=>{let i=new Map(t().pendingChangesBarDismissed);r===null?i.delete(n):i.set(n,r),e({pendingChangesBarDismissed:i})},sendMessage:async(n,r,i,a,o,s,c,l,u,d)=>{let f=t().stagedMessageEdit,m=d?.sessionId??t().currentSessionId,h=d?.commitStagedMessageEdit&&f&&f.sessionId===m?f:null,g=d?.sessionId??t().currentSessionId;if(g){let n=new Map(t().pendingChangesBarDismissed);n.delete(g),e({pendingChangesBarDismissed:n})}let v=t().newSessionDraft,y=typeof a==`string`&&a.trim().length>0?a.trim():void 0,b=u!==`shell`&&n.trim().length>0?KF.getState().consume():{armed:!1,objectiveOverride:null},x=b.armed;if(x){let e=p.getState(),t=sH(`Goal mode is active for this session. The user message above defines the goal objective. Work toward it across turns; whenever you stop before the objective is verifiably complete, the system will automatically prompt you to continue. Progress is evaluated independently after each turn, so end every turn with a clear, factual statement of what is done, what was verified, and what remains.`+(e.sessionGoalDefaultBudgetEnabled?` A token budget of ${e.sessionGoalDefaultBudget} tokens applies to this goal.`:``));c=[...c??[],{text:t,synthetic:!0}]}let S=(e,t)=>{if(!x)return;let r=p.getState(),i=r.sessionGoalDefaultBudgetEnabled?r.sessionGoalDefaultBudget:null,a=b.objectiveOverride?.trim()||n;tH(e,t??void 0,{objective:a,tokenBudget:i},null).catch(e=>{console.warn(`[session-ui-store] failed to set goal from armed send`,e)})};if(!d?.sessionId&&v?.open){if(u!==`shell`&&!n.trimStart().startsWith(`/`)&&!d?.delivery&&Te()?.conversations?.createWithPrompt){await wU({content:n,providerID:r,modelID:i,agent:y,agentMentionName:s,variant:l,attachments:o,additionalParts:c,messageID:d?.messageID,onSessionReady:S});return}let e=d?.messageID??v.pendingUserMessage?.info.id??ge(`msg`),a=FH({messageID:e,sessionID:`draft:pending`,providerID:r,modelID:i,agent:y,text:n,attachments:o,additionalParts:v.syntheticParts?.length?[...c||[],...v.syntheticParts]:c,agentMentionName:s}),f=await yU({providerID:r,modelID:i,agent:y,variant:l},a);if(!f)throw Error(`Failed to create session`);let{materialized:p,claim:m}=f,h=p.syntheticParts?.length?[...c||[],...p.syntheticParts]:c;bC(p.sessionId);let g=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));try{await RH({sessionId:p.sessionId,directory:p.directory,content:n,providerID:r,modelID:i,agent:p.agent,agentMentionName:s,variant:l,inputMode:u,files:g,delivery:d?.delivery,messageID:e,optimisticParts:a.parts,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:h?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))}),await hU(m,p.sessionId,`consume`)}catch(e){throw await hU(m,p.sessionId,`preserve`),e}oU(p.directory,t().availableWorktreesByProject),S(p.sessionId,p.directory);return}let C=d?.sessionId??t().currentSessionId,w=C?Jo.getState().getSessionAgentSelection(C):null,T=G.getState().currentAgentName,E=y||w||T||void 0;if(C&&Jo.getState().saveSessionModelSelection(C,r,i),C&&E&&(Jo.getState().saveSessionAgentSelection(C,E),Jo.getState().saveAgentModelForSession(C,E,r,i),Jo.getState().saveAgentModelVariantForSession(C,E,r,i,l)),C){let e=uH.getState(),t=lH(C);if(!t||!t.lastUserMessageAt){let n=new Map(e.sessionMemoryState);n.set(cH(C),{viewportAnchor:0,isStreaming:!1,lastAccessedAt:Date.now(),backgroundMessageCount:0,...t,lastUserMessageAt:Date.now()}),uH.setState({sessionMemoryState:n})}}let D=C?_(d?.directoryHint)??_(t().getDirectoryForSession(C)):null;C&&bC(C);let O=o?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}));if(h)try{await dC(h.sessionId,h.messageId,{directory:D??void 0}),t().stagedMessageEdit===h&&e({stagedMessageEdit:null})}catch(e){throw t().endMessageEditCommit(h.sessionId,h.messageId),e}try{await RH({sessionId:C||``,directory:D,content:n,providerID:r,modelID:i,agent:E,agentMentionName:s,variant:l,inputMode:u,files:O,delivery:d?.delivery,messageID:d?.messageID,ticket:d?.ticket,preserveOptimisticOnAmbiguous:d?.preserveOptimisticOnAmbiguous,onSendConfirmed:d?.onSendConfirmed,additionalParts:c?.map(e=>({text:e.text,synthetic:e.synthetic,files:e.attachments?.map(e=>({type:`file`,mime:e.mimeType,url:e.dataUrl,filename:e.filename}))}))})}finally{h&&t().endMessageEditCommit(h.sessionId,h.messageId)}oU(D,t().availableWorktreesByProject),C&&S(C,D)},createSession:async(n,r,i,a)=>{let o=t().newSessionDraft,s=o.targetFolderId,c=o.open?{...o}:null;t().closeNewSessionDraft();try{let o=await pS(n,r??z.getDirectory(),i??null,a);if(!o)return c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),rU(tU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null;if(s){let e=r||t().lastLoadedDirectory||o.directory;e&&jD.getState().addSessionToFolder(e,s,o.id)}return o}catch(n){return console.error(`[session-ui-store] createSession failed`,n),c&&!t().newSessionDraft.open&&!t().currentSessionId&&(e({newSessionDraft:{...c,draftSubmitting:!1,draftEstablishing:!1}}),rU(tU(),{draft:{...c,draftSubmitting:!1,draftEstablishing:!1}})),null}},deleteSession:e=>ES(e),deleteSessions:async e=>{let t=[],n=[];for(let r of e)await ES(r)?t.push(r):n.push(r);return{deletedIds:t,failedIds:n}},archiveSession:e=>kS(e),archiveSessions:async e=>{let t=[],n=[];for(let r of e)await kS(r)?t.push(r):n.push(r);return{archivedIds:t,failedIds:n}},updateSessionTitle:async(e,t)=>{await jS(e,t)},requestSessionSmartTitle:async e=>{await MS(e)},shareSession:async e=>NS(e),unshareSession:async e=>PS(e),revertToMessage:async(e,t,n)=>{await aC(e,t,n?.directory)},editMessagePreservingChanges:async(t,n,r)=>{await sC(t,n,r),e({stagedMessageEdit:{sessionId:t,messageId:n}})},handleSlashUndo:async e=>{let n=Id(e),r=Md().find(t=>t.id===e)?.revert?.messageID,i=ps(n,r);if(!i)return;let a=Ld(i.id).find(e=>e.type===`text`),o=a?.text?String(a.text).slice(0,50)+(a.text.length>50?`...`:``):`[No text]`;await t().revertToMessage(e,i.id);let{toast:s}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:c,formatMessage:l}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CNhcDSiX.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:u}=c.getState();s.success(l(u,`chat.revert.toast.undo`,{preview:o}))},handleSlashRedo:async(e,n)=>{if(n?.fullUnrevert){let{unrevertSession:t}=await et(async()=>{let{unrevertSession:e}=await Promise.resolve().then(()=>Xb);return{unrevertSession:e}},void 0);await t(e);let{toast:n}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:i}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CNhcDSiX.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:a}=r.getState();n.success(i(a,`chat.revert.toast.restored`));return}let r=Md().find(t=>t.id===e)?.revert?.messageID;if(!r)return;let i=ms(Id(e),r);if(i){await t().revertToMessage(e,i.id,{skipRedoPush:!0});let{toast:n}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:r,formatMessage:a}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CNhcDSiX.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:o}=r.getState();n.success(a(o,`chat.revert.toast.redo`));return}await mC(e);let{toast:a}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3])),{useI18nStore:o,formatMessage:s}=await et(async()=>{let{useI18nStore:e,formatMessage:t}=await import(`./store-CNhcDSiX.js`).then(e=>e.r);return{useI18nStore:e,formatMessage:t}},__vite__mapDeps([0,1,2,3,4])),{dictionary:c}=o.getState();a.success(s(c,`chat.revert.toast.restored`))},forkFromMessage:async(n,r,i)=>{let a=t().forkTransition;if(a?.operationId,a?.stage,a){console.warn(`[session-fork] forkFromMessage skipped because a transition is active`,{sessionId:n,messageId:r,activeOperationId:a.operationId,activeSourceSessionId:a.sourceSessionId,activeStage:a.stage});return}let o=YH(n),s=++$H;try{let a=i?.directory??t().getDirectoryForSession(n)??z.getDirectory()??``;if(!a){console.warn(`[session-fork] forkFromMessage missing directory`,{sessionId:n,messageId:r});let{toast:e}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:s,sourceSessionId:n,targetSessionId:null,directory:a,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await hC(n,s,r,a)){console.warn(`[session-fork] forkFromMessage ended before completion`,{operationId:s,sessionId:n,messageId:r});return}let{toast:c}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));c.success(`Forked from ${o?.title??`session`}`)}catch(e){console.error(`[session-fork] forkFromMessage failed`,{operationId:s,sessionId:n,messageId:r,error:e});let{toast:t}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===s?{forkTransition:null}:e)}},forkCurrentSession:async n=>{let r=t().forkTransition;if(r?.operationId,r?.stage,r){console.warn(`[session-fork] forkCurrentSession skipped because a transition is active`,{sessionId:n,activeOperationId:r.operationId,activeSourceSessionId:r.sourceSessionId,activeStage:r.stage});return}let i=YH(n),a=++$H;try{let r=t().getDirectoryForSession(n)??z.getDirectory()??``;if(!r){console.warn(`[session-fork] forkCurrentSession missing directory`,{sessionId:n});let{toast:e}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));e.error(`Failed to fork session`);return}if(e({forkTransition:{operationId:a,sourceSessionId:n,targetSessionId:null,directory:r,stage:`preparing`}}),await new Promise(e=>setTimeout(e,0)),!await hC(n,a)){console.warn(`[session-fork] forkCurrentSession ended before completion`,{operationId:a,sessionId:n});return}let{toast:o}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));o.success(`Forked from ${i?.title??`session`}`)}catch(e){console.error(`[session-fork] forkCurrentSession failed`,{operationId:a,sessionId:n,error:e});let{toast:t}=await et(async()=>{let{toast:e}=await import(`./vendor-sonner-DVzioF3d.js`).then(e=>e.n);return{toast:e}},__vite__mapDeps([5,1,3]));t.error(`Failed to fork session`)}finally{e(e=>e.forkTransition?.operationId===a?{forkTransition:null}:e)}},getSessionsByDirectory:e=>{let t=_(e);return t?Nd().filter(e=>VH(e)===t):[]},getAuthoritativeDirectoryForSession:e=>{let n=JH(e,e=>t().worktreeMetadata.get(e),{includeRuntimeMemory:!1});if(n)return n;let r=Y.getState(),i=[...r.activeSessions,...r.archivedSessions].find(t=>t.id===e);return i?bE(i):null},getDirectoryForSession:e=>e===t().currentSessionId&&t().currentSessionDirectory?t().currentSessionDirectory:JH(e,e=>t().worktreeMetadata.get(e))||t().getAuthoritativeDirectoryForSession(e),getLastUserChoice:e=>{let n=Id(e,t().getDirectoryForSession(e)??void 0);for(let e=n.length-1;e>=0;--e){let t=n[e];if(t.role!==`user`)continue;let r=typeof t.model?.providerID==`string`&&t.model.providerID.trim().length>0?t.model.providerID:void 0,i=typeof t.model?.modelID==`string`&&t.model.modelID.trim().length>0?t.model.modelID:void 0,a=typeof t.agent==`string`&&t.agent.trim().length>0?t.agent:typeof t.mode==`string`&&t.mode.trim().length>0?t.mode:void 0,o=t.model?.variant??t.variant,s=typeof o==`string`&&o.trim().length>0?o:void 0;return{id:typeof t.id==`string`?t.id:void 0,agent:a,providerID:r,modelID:i,variant:s}}return null},getCurrentAgent:e=>Jo.getState().sessionAgentSelections.get(e)??void 0,debugSessionMessages:async e=>{let t=Id(e);Md().find(t=>t.id===e),`${e}`,t.length,t.map(e=>({id:e.id,role:e.role,tokens:e.role===`assistant`?e.tokens:void 0}))},pollForTokenUpdates:()=>{},setSessionDirectory:(n,r)=>{let i=_(r);n===t().currentSessionId&&(e({currentSessionDirectory:i}),rU(tU(),{sessionId:n,directory:i}))},markSessionPlanAvailable:t=>{e(e=>{if(e.sessionPlanAvailable.get(t)===!0)return e;let n=new Map(e.sessionPlanAvailable);return n.set(t,!0),{sessionPlanAvailable:n}})},isSessionPlanAvailable:e=>t().sessionPlanAvailable.get(e)??!1}));$j((e,t)=>{$.getState().setCurrentSession(e,t)});var AU=``;$.subscribe((e,t)=>{if(e.availableWorktreesByProject!==t.availableWorktreesByProject){let t=JSON.stringify([...e.availableWorktreesByProject.entries()]);t!==AU&&(AU=t,DU(t))}});function jU(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);return n>=0?e.slice(0,n+1):[...e,t]}function MU(e){return e.length>1?e.slice(0,-1):[]}function NU(e,t){let n=e.at(-1);return[{...t,key:n?.key??t.key}]}function PU(e,t){let n=e.at(-1);if(!n||n.sessionId===t.sessionId)return e;let r=e.at(-2);return r?.sessionId===t.sessionId?r.directory===t.directory?e:[...e.slice(0,-2),t,n]:e.length===1?[t,n]:e}var FU={activeTab:`projects`,secondary:null},IU=0,LU=null,RU=e=>{let t=++IU;return LU={generation:t,sessionId:e.sessionId,directory:_(e.directory)??null},t},zU=e=>{let t=LU;return t&&t.generation===IU&&t.sessionId===e.sessionId&&t.directory===(_(e.directory)??null)?(LU=null,`internal`):(LU=null,`external`)},BU=()=>{IU+=1,LU=null},VU=e=>{let t=$.getState(),n=t.currentSessionId?t.getDirectoryForSession(t.currentSessionId):null;t.currentSessionId===e.sessionId&&_(n)===_(e.directory)?BU():RU(e),t.setCurrentSession(e.sessionId,e.directory??null)},HU=Oe(e=>({...FU,setActiveTab:t=>{BU(),e({activeTab:t,secondary:null})},openSession:t=>{e({secondary:{kind:`chat`,routes:[WU(t,`root`)]}}),VU(t)},pushSession:t=>{e(e=>{let n=WU(t,`push`);return{secondary:{kind:`chat`,routes:e.secondary?.kind===`chat`?jU(e.secondary.routes,n):[n]}}}),VU(t)},popChatSession:()=>{e(e=>{if(e.secondary?.kind!==`chat`)return e;let t=MU(e.secondary.routes);return t.length>0?{secondary:{kind:`chat`,routes:t}}:{secondary:null}});let t=HU.getState().secondary,n=t?.kind===`chat`?t.routes.at(-1)??null:null;n&&VU(n)},reconcileChatPredecessor:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=PU(e.secondary.routes,WU(t,`parent`));return n===e.secondary.routes?e:{secondary:{kind:`chat`,routes:n}}}),replaceChatSession:t=>e(e=>{if(e.secondary?.kind!==`chat`)return e;let n=e.secondary.routes.at(-1);return n?.sessionId===t.sessionId&&n.directory===(t.directory??null)?e:{secondary:{kind:`chat`,routes:NU(e.secondary.routes,WU(t,`root`))}}}),materializeDraftSession:t=>e(e=>e.secondary?.kind===`draft`?{secondary:{kind:`chat`,routes:[{key:`chat-primary`,sessionId:t.sessionId,directory:t.directory??null}]}}:e),openDraft:t=>{BU(),$.getState().openNewSessionDraft(t),e({secondary:{kind:`draft`}})},openAssistant:t=>{BU(),mt.getState().selectAssistant(t),e({secondary:{kind:`assistant`}})},openInstances:()=>{BU(),e({secondary:{kind:`instances`}})},closeSecondary:()=>{BU(),e(e=>e.secondary?{...e,secondary:null}:e)},reset:()=>{BU(),e({...FU})}})),UU=1,WU=(e,t)=>({key:t===`root`?`chat-primary`:`chat-${t}-${UU++}`,sessionId:e.sessionId,directory:e.directory??null}),GU=e=>!Ge()||Ke()?!1:(HU.getState().pushSession(e),!0);export{Gz as $,bo as $a,Xf as $i,rO as $n,jS as $r,DF as $t,KV as A,ls as Aa,Dg as Ai,SO as An,Or as Ao,sw as Ar,xF as At,zB as B,Jo as Ba,Qp as Bi,_k as Bn,pS as Br,TP as Bt,cH as C,wu as Ca,o_ as Ci,yA as Cn,Hr as Co,qw as Cr,KF as Ct,nH as D,tu as Da,Yg as Di,Rk as Dn,jr as Do,bw as Dr,HF as Dt,QV as E,eu as Ea,qg as Ei,Fk as En,Br as Eo,Uw as Er,UF as Et,oV as F,os as Fa,Im as Fi,fk as Fn,eC as Fr,DN as Ft,Zz as G,Ro as Ga,kp as Gi,lk as Gn,tC as Gr,XP as Gt,aB as H,Ho as Ha,Gp as Hi,dk as Hn,uS as Hr,AF as Ht,TV as I,$o as Ia,wm as Ii,ok as In,kS as Ir,RM as It,eB as J,Io as Ja,Pp as Ji,cO as Jn,VS as Jr,ZP as Jt,Vz as K,Lo as Ka,Op as Ki,wk as Kn,nC as Kr,JP as Kt,rV as L,Yo as La,_m as Li,ck as Ln,zS as Lr,FM as Lt,WV as M,cs as Ma,og as Mi,Sk as Mn,Qt as Mo,SC as Mr,aP as Mt,LV as N,ns as Na,Qm as Ni,mk as Nn,Zt as No,xC as Nr,EN as Nt,rH as O,Gs as Oa,Jg as Oi,Ek as On,Mr as Oo,ZC as Or,GF as Ot,iV as P,ts as Pa,Vm as Pi,uk as Pn,Kt as Po,yS as Pr,ON as Pt,Wz as Q,yo as Qa,$f as Qi,gO as Qn,AS as Qr,jP as Qt,EV as R,Xo as Ra,pm as Ri,bk as Rn,OS as Rr,nF as Rt,uH as S,yu as Sa,f_ as Si,bA as Sn,zr as So,mT as Sr,wI as St,iH as T,U as Ta,i_ as Ti,Lk as Tn,Vr as To,Kw as Tr,VF as Tt,SB as U,Bo as Ua,Fp as Ui,pk as Un,rC as Ur,jM as Ut,rB as V,Wo as Va,Zp as Vi,Ck as Vn,iC as Vr,EP as Vt,HB as W,Uo as Wa,Dp as Wi,sk as Wn,MS as Wr,AM as Wt,$z as X,eo as Xa,Mp as Xi,sO as Xn,wx as Xr,jF as Xt,Xz as Y,no as Ya,Np as Yi,lO as Yn,DS as Yr,eF as Yt,Hz as Z,to as Za,sp as Zi,iO as Zn,sC as Zr,SF as Zt,pH as _,H as _a,uv as _i,Bj as _n,ki as _o,FT as _r,fL as _t,dU as a,Id as aa,nb as ai,PP as an,ba as ao,jD as ar,Oz as at,dH as b,Ou as ba,l_ as bi,gj as bn,Oi as bo,lT as br,nL as bt,RH as c,Ed as ca,Ov as ci,wF as cn,Pa as co,eD as cr,xz as ct,NH as d,nd as da,jv as di,tF as dn,ka as do,XE as dr,hz as dt,xf as ea,qx as ei,kP as en,po as eo,_O as er,Rz as et,PH as f,Qu as fa,Nv as fi,TF as fn,Oa as fo,bE as fr,sz as ft,gH as g,Du as ga,H_ as gi,Vj as gn,ga as go,PT as gr,uL as gt,OH as h,Su as ha,ov as hi,Kj as hn,ha as ho,Y as hr,UR as ht,uU as i,Dd as ia,hb as ii,HP as in,Ja as io,tD as ir,Mz as it,GV as j,es as ja,sg as ji,yk as jn,Xt as jo,ow as jr,mF as jt,VV as k,fs as ka,Kg as ki,Ak as kn,Ar as ko,cw as kr,wP as kt,$ as l,Fd as la,Fv as li,CF as ln,Na as lo,SE as lr,dz as lt,kH as m,Cu as ma,Mv as mi,Zj as mn,ma as mo,ZE as mr,rz as mt,GU as n,Pd as na,Ib as ni,NP as nn,Xa as no,BD as nr,Lz as nt,FH as o,Ld as oa,ay as oi,IP as on,Aa as oo,qE as or,Dz as ot,DH as p,xu as pa,Tv as pi,Xj as pn,_a as po,YE as pr,tz as pt,Qz as q,Po as qa,jp as qi,aO as qn,aC as qr,YP as qt,HU as r,Nd as ra,Nb as ri,BP as rn,Wa as ro,zD as rr,Iz as rt,bU as s,Md as sa,zv as si,RP as sn,Fa as so,JE as sr,Sz as st,zU as t,G as ta,Yb as ti,AP as tn,Ya as to,RD as tr,zz as tt,MH as u,Gu as ua,Pv as ui,UP as un,Sa as uo,$E as ur,az as ut,hH as v,hu as va,u_ as vi,Fj as vn,Ai as vo,bT as vr,X as vt,sH as w,mu as wa,a_ as wi,xA as wn,Rr as wo,Hw as wr,WF as wt,lH as x,Tu as xa,h_ as xi,MA as xn,Ci as xo,dT as xr,rL as xt,mH as y,Eu as ya,d_ as yi,_j as yn,Ti as yo,sT as yr,XI as yt,JB as z,Qo as za,$p as zi,nk as zn,dC as zr,$P as zt};
|